{"id":0,"registry":{"0":{"submorphs":[{"__isSmartRef__":true,"id":1},{"__isSmartRef__":true,"id":50},{"__isSmartRef__":true,"id":90},{"__isSmartRef__":true,"id":94},{"__isSmartRef__":true,"id":98}],"scripts":[],"shape":{"__isSmartRef__":true,"id":102},"_ClipMode":"visible","derivationIds":[],"id":"C03878EC-31DF-44D2-9A48-602811EBBFDC","droppingEnabled":false,"halosEnabled":true,"draggingEnabled":true,"layout":{"__isSmartRef__":true,"id":103},"name":"ServerWorkspace","closeButton":{"__isSmartRef__":true,"id":57},"collapseButton":{"__isSmartRef__":true,"id":67},"menuButton":{"__isSmartRef__":true,"id":77},"titleBar":{"__isSmartRef__":true,"id":50},"grabbingEnabled":false,"_Rotation":0,"_Scale":1,"reframeHandle":{"__isSmartRef__":true,"id":90},"rightReframeHandle":{"__isSmartRef__":true,"id":98},"bottomReframeHandle":{"__isSmartRef__":true,"id":94},"targetMorph":{"__isSmartRef__":true,"id":1},"eventHandler":{"__isSmartRef__":true,"id":104},"_StyleClassNames":["Morph","Window"],"__serializedExpressions__":["contentOffset","_Position","normalBounds"],"showsHalos":false,"partsBinMetaInfo":{"__isSmartRef__":true,"id":105},"__LivelyClassName__":"lively.morphic.Window","__SourceModuleName__":"Global.lively.morphic.Widgets","withoutLayers":["Global.lively.morphic.GrabbingLayer"],"contentOffset":"lively.pt(4.0,22.0)","_Position":"lively.pt(0.0,0.0)","normalBounds":"lively.rect(410,242.5,605,302)"},"1":{"storedTextString":"dirWatcher = require('./DirectoryWatchServer')\nvar path = require(\"path\");\n\n\nfunction getDirContentsOfRequest(req, thenDo) {\n    var baseDir = process.env.WORKSPACE_LK,\n        // FIXME we assume that the Lively root is the base of the host /\n        reqDir = path.join(baseDir, req.url);\n    dirWatcher.getWatchedFiles(dir, function(err, watchState) {\n        if (err) { thenDo(err, null); return; }\n        var files = Object.keys(watchState)\n            .filter(function(p) { return path.dirname(p) === dir; })\n            .reduce(function(fileMap, fileName) {\n                fileMap[fileName] = watchState[fileName]; }, {});\n        thenDo(null, files);\n    });\n}\n\n// see stat(2)\nfunction isDirectory(stat) { return !!(stat.mode & 0040000); }\nfunction convertFileStatsToDirInfos(fileStats, thenDo) {\n    var infos = Object.keys(fileStats).map(function(fn) {\n        return {\n            name: fn,\n            isDirectory: isDirectory(fileStats[fn]),\n            lastModfied: fileStats[fn].mtime\n        }\n    });\n    thenDo(null, infos);\n}\n\nfunction getDirInfosForRequest(req, thenDo) {\n    getDirContentsOfRequest(req, function(err, namesAndStats) {\n        if (err) { thenDo(err, null); return; }\n        convertFileStatsToDirInfos(namesAndStats, thenDo);\n    })\n}\n// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\n\nfunction findDirectoryListRoute(app, thenDo) {\n    var found = app.routes.get.reduce(function(found, ea) {\n        if (found) return found;\n        if (ea.callbacks.some(function(ea) { return !!ea.isLivelyDirectoryRoute; })) return ea;\n        return null;\n    }, null);\n    thenDo(null, found);\n}\n\nfunction removeExistingDirectoryListRoute(app, thenDo) {\n    findDirectoryListRoute(app, function(err, route) {\n        if (route) {\n            var i = app.routes.get.indexOf(route);\n            app.routes.get.splice(i, 1); // remove\n        }\n        thenDo(null);\n    });\n}\n\nfunction installDirectoryListRoute(app, thenDo) {\n    removeExistingDirectoryListRoute(app, function(err, thenDo) {\n        if (err) { res.end(500).end(String(err)); return; }\n        var handler = function(req, res) {\n            if (req.url.slice(-1)[0] !== '/') return;\n            getDirInfosForRequest(req, function(err, infos) {\n                if (err) { res.end(500).end(String(err)); return; }\n                var string = infos.map(function(info) { return info.name; }).join('<br>');\n                res.end(string);\n            })\n        }\n        handler.isLivelyDirectoryRoute = true;\n        app.get('*', handler);\n    });\n}\n","submorphs":[],"scripts":[],"shape":{"__isSmartRef__":true,"id":2},"derivationIds":[],"id":"5C8440D3-8C92-48EE-B8B0-1668EC4328E4","grabbingEnabled":false,"halosEnabled":true,"_FontSize":12,"doNotSerialize":["whenOpenedInWorldCallbacks"],"_ShowGutter":true,"_TextMode":"javascript","_Theme":"twilight","_LineWrapping":true,"_ShowInvisibles":false,"_ShowPrintMargin":false,"_ShowIndents":true,"_ShowActiveLine":false,"_SoftTabs":true,"_AutocompletionEnabled":true,"_ShowWarnings":true,"_ShowErrors":true,"accessibleInInactiveWindow":true,"layout":{"__isSmartRef__":true,"id":3},"storedString":"// all this code is evaluated in the server context!\n// try to print it:\nprocess.env.WORKSPACE_LK","_Rotation":0,"_Scale":1,"owner":{"__isSmartRef__":true,"id":0},"eventHandler":{"__isSmartRef__":true,"id":4},"hasRobertsKeys":true,"allowInput":true,"_isFocused":false,"prevScroll":[0,0],"__serializedExpressions__":["_Position","serverURL"],"showsHalos":false,"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":5},"__LivelyClassName__":"lively.morphic.CodeEditor","__SourceModuleName__":"Global.lively.ide.CodeEditor","_Position":"lively.pt(4.0,22.0)","serverURL":"URL.create(\"http://lively-web.org/nodejs/NodeJSEvalServer/\")"},"2":{"_BorderWidth":1,"_Fill":null,"_BorderStyle":"solid","_BorderRadius":0,"_Opacity":1,"__serializedExpressions__":["_BorderColor","_Extent","extent"],"__LivelyClassName__":"lively.morphic.CodeEditorShape","__SourceModuleName__":"Global.lively.ide.CodeEditor","_BorderColor":"Color.rgb(95,94,95)","_Extent":"lively.pt(652.0,720.0)","extent":"lively.pt(652.0,720.0)"},"3":{"resizeHeight":true,"resizeWidth":true},"4":{"morph":{"__isSmartRef__":true,"id":1},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"5":{"boundEval":{"__isSmartRef__":true,"id":6},"getCompletions":{"__isSmartRef__":true,"id":13},"doListProtocol":{"__isSmartRef__":true,"id":16},"printInspect":{"__isSmartRef__":true,"id":23},"setServerURL":{"__isSmartRef__":true,"id":30},"setServerURLInteractively":{"__isSmartRef__":true,"id":33},"onKeyDown":{"__isSmartRef__":true,"id":36},"onFromBuildSpecCreated":{"__isSmartRef__":true,"id":43}},"6":{"varMapping":{"__isSmartRef__":true,"id":7},"source":"function boundEval(string) {\n            var nodejsServer = this.serverURL.asWebResource();\n            return nodejsServer.post(string).content;\n        }","funcProperties":{"__isSmartRef__":true,"id":12},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"7":{"this":{"__isSmartRef__":true,"id":1},"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":8}},"8":{"$super":{"__isSmartRef__":true,"id":9}},"9":{"varMapping":{"__isSmartRef__":true,"id":10},"source":"function () {\n                    try {\n                        return obj.constructor.prototype[name].apply(obj, arguments)\n                    } catch (e) {\n                        if ($world)\n                            $world.logError(e, 'Error in $super call')\n                        else\n                            alert('Error in $super call: ' + e + '\\n' + e.stack);\n                        return null;\n                    }\n                }","funcProperties":{"__isSmartRef__":true,"id":11},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"10":{"obj":{"__isSmartRef__":true,"id":1},"name":"boundEval"},"11":{},"12":{},"13":{"varMapping":{"__isSmartRef__":true,"id":14},"source":"function getCompletions(string) {\n            // this.getCompletions('lively.re')\n            var nodejsServer = this.serverURL.withFilename('completions').asWebResource();\n            var result = nodejsServer.post(JSON.stringify({string: string}), 'application/json').content;\n            return JSON.parse(result);\n        }","funcProperties":{"__isSmartRef__":true,"id":15},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"14":{"this":{"__isSmartRef__":true,"id":1}},"15":{},"16":{"varMapping":{"__isSmartRef__":true,"id":17},"source":"function doListProtocol() {\n            var string = this.getSelectionOrLineString(),\n                completions = this.getCompletions(string);\n            new lively.morphic.Text.ProtocolLister(this).openNarrower(completions);\n        }","funcProperties":{"__isSmartRef__":true,"id":22},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"17":{"this":{"__isSmartRef__":true,"id":1},"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":18}},"18":{"$super":{"__isSmartRef__":true,"id":19}},"19":{"varMapping":{"__isSmartRef__":true,"id":20},"source":"function () {\n                    try {\n                        return obj.constructor.prototype[name].apply(obj, arguments)\n                    } catch (e) {\n                        if ($world)\n                            $world.logError(e, 'Error in $super call')\n                        else\n                            alert('Error in $super call: ' + e + '\\n' + e.stack);\n                        return null;\n                    }\n                }","funcProperties":{"__isSmartRef__":true,"id":21},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"20":{"obj":{"__isSmartRef__":true,"id":1},"name":"doListProtocol"},"21":{},"22":{},"23":{"varMapping":{"__isSmartRef__":true,"id":24},"source":"function printInspect() {\n            var s = this.getSelectionMaybeInComment();\n            s = 'require(\"util\").inspect(' + s + ', null, 0)';\n            var result = this.tryBoundEval(s);\n            this.printObject(null, result);\n        }","funcProperties":{"__isSmartRef__":true,"id":29},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"24":{"this":{"__isSmartRef__":true,"id":1},"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":25}},"25":{"$super":{"__isSmartRef__":true,"id":26}},"26":{"varMapping":{"__isSmartRef__":true,"id":27},"source":"function () {\n                    try {\n                        return obj.constructor.prototype[name].apply(obj, arguments)\n                    } catch (e) {\n                        if ($world)\n                            $world.logError(e, 'Error in $super call')\n                        else\n                            alert('Error in $super call: ' + e + '\\n' + e.stack);\n                        return null;\n                    }\n                }","funcProperties":{"__isSmartRef__":true,"id":28},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"27":{"obj":{"__isSmartRef__":true,"id":1},"name":"printInspect"},"28":{},"29":{},"30":{"varMapping":{"__isSmartRef__":true,"id":31},"source":"function setServerURL(url) {\n            this.serverURL = new URL(url);\n            this.owner.setTitle && this.owner.setTitle('ServerWorkspace -- ' + this.serverURL);\n        }","funcProperties":{"__isSmartRef__":true,"id":32},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"31":{"this":{"__isSmartRef__":true,"id":1}},"32":{},"33":{"varMapping":{"__isSmartRef__":true,"id":34},"source":"function setServerURL() {\n            this.world().prompt('Change server URL', function(url) {\n                if(!url) { alert('no url!'); return; }\n                this.setServerURL(url);\n            }.bind(this), this.serverURL);\n        }","funcProperties":{"__isSmartRef__":true,"id":35},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"34":{"this":{"__isSmartRef__":true,"id":1}},"35":{},"36":{"varMapping":{"__isSmartRef__":true,"id":37},"source":"function onKeyDown(evt) {\n            var keys = evt.getKeyString();\n            if (keys === 'Command-U') { this.setServerURLInteractively(); return true; }\n            return false;\n        }","funcProperties":{"__isSmartRef__":true,"id":42},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"37":{"this":{"__isSmartRef__":true,"id":1},"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":38}},"38":{"$super":{"__isSmartRef__":true,"id":39}},"39":{"varMapping":{"__isSmartRef__":true,"id":40},"source":"function () {\n                    try {\n                        return obj.constructor.prototype[name].apply(obj, arguments)\n                    } catch (e) {\n                        if ($world)\n                            $world.logError(e, 'Error in $super call')\n                        else\n                            alert('Error in $super call: ' + e + '\\n' + e.stack);\n                        return null;\n                    }\n                }","funcProperties":{"__isSmartRef__":true,"id":41},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"40":{"obj":{"__isSmartRef__":true,"id":1},"name":"onKeyDown"},"41":{},"42":{},"43":{"varMapping":{"__isSmartRef__":true,"id":44},"source":"function onFromBuildSpecCreated() {\n            $super();\n            this.setServerURL(URL.create(Config.nodeJSURL).asDirectory().withFilename('NodeJSEvalServer/'));\n        }","funcProperties":{"__isSmartRef__":true,"id":49},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"44":{"this":{"__isSmartRef__":true,"id":1},"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":45}},"45":{"$super":{"__isSmartRef__":true,"id":46}},"46":{"varMapping":{"__isSmartRef__":true,"id":47},"source":"function () {\n                    try {\n                        return obj.constructor.prototype[name].apply(obj, arguments)\n                    } catch (e) {\n                        if ($world)\n                            $world.logError(e, 'Error in $super call')\n                        else\n                            alert('Error in $super call: ' + e + '\\n' + e.stack);\n                        return null;\n                    }\n                }","funcProperties":{"__isSmartRef__":true,"id":48},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"47":{"obj":{"__isSmartRef__":true,"id":1},"name":"onFromBuildSpecCreated"},"48":{},"49":{},"50":{"submorphs":[{"__isSmartRef__":true,"id":51},{"__isSmartRef__":true,"id":57},{"__isSmartRef__":true,"id":67},{"__isSmartRef__":true,"id":77}],"scripts":[],"shape":{"__isSmartRef__":true,"id":87},"_ClipMode":"visible","derivationIds":[],"id":"206A828E-B8B6-433D-A65F-0818E7E15CEA","droppingEnabled":false,"halosEnabled":true,"layout":{"__isSmartRef__":true,"id":88},"windowMorph":{"__isSmartRef__":true,"id":0},"buttons":[{"__isSmartRef__":true,"id":57},{"__isSmartRef__":true,"id":67},{"__isSmartRef__":true,"id":77}],"label":{"__isSmartRef__":true,"id":51},"_PreviousBorderWidth":0,"owner":{"__isSmartRef__":true,"id":0},"eventHandler":{"__isSmartRef__":true,"id":89},"__serializedExpressions__":["_Position"],"__LivelyClassName__":"lively.morphic.TitleBar","__SourceModuleName__":"Global.lively.morphic.Widgets","_Position":"lively.pt(0.0,0.0)"},"51":{"submorphs":[],"scripts":[],"shape":{"__isSmartRef__":true,"id":52},"_WhiteSpaceHandling":"pre","textChunks":[{"__isSmartRef__":true,"id":53}],"_ClipMode":"hidden","derivationIds":[],"id":"C4195476-1606-4BB0-9FE0-ADF02DFA2D18","_InputAllowed":false,"_HandStyle":"default","allowInput":false,"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"draggingEnabled":true,"fixedWidth":true,"fixedHeight":true,"_FontFamily":"Helvetica","_FontSize":10,"evalEnabled":false,"isLabel":true,"eventsAreIgnored":true,"layout":{"__isSmartRef__":true,"id":55},"owner":{"__isSmartRef__":true,"id":50},"_StyleClassNames":["Morph","Text","window-title"],"_TextStylingMode":true,"eventHandler":{"__isSmartRef__":true,"id":56},"__serializedExpressions__":["_TextColor","_Position"],"__LivelyClassName__":"lively.morphic.Text","__SourceModuleName__":"Global.lively.morphic.TextCore","_TextColor":"Color.rgb(64,64,64)","_Position":"lively.pt(3.0,3.0)"},"52":{"_BorderWidth":0,"_Fill":null,"__serializedExpressions__":["_Position","_Extent","_Padding","_BorderColor"],"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes","_Position":"lively.pt(0.0,0.0)","_Extent":"lively.pt(568.0,16.0)","_Padding":"lively.rect(0,0,0,0)","_BorderColor":"Color.rgb(0,0,0)"},"53":{"style":{"__isSmartRef__":true,"id":54},"chunkOwner":{"__isSmartRef__":true,"id":51},"_id":"_2225","storedString":"ServerWorkspace -- http://lively-web.org/nodejs/NodeJSEvalServer/","__LivelyClassName__":"lively.morphic.TextChunk","__SourceModuleName__":"Global.lively.morphic.TextCore"},"54":{"__LivelyClassName__":"lively.morphic.TextEmphasis","__SourceModuleName__":"Global.lively.morphic.TextCore"},"55":{"resizeWidth":true},"56":{"morph":{"__isSmartRef__":true,"id":51},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"57":{"submorphs":[{"__isSmartRef__":true,"id":58}],"scripts":[],"shape":{"__isSmartRef__":true,"id":63},"_ClipMode":"visible","derivationIds":[],"id":"E99ADBDB-0428-49B9-8437-5597648B6250","grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"accessibleInInactiveWindow":true,"value":false,"toggle":false,"isActive":true,"label":{"__isSmartRef__":true,"id":58},"_PreviousBorderWidth":0,"owner":{"__isSmartRef__":true,"id":50},"_StyleClassNames":["Morph","Button","WindowControl","close"],"attributeConnections":[{"__isSmartRef__":true,"id":64}],"doNotSerialize":["$$fire"],"doNotCopyProperties":["$$fire"],"eventHandler":{"__isSmartRef__":true,"id":66},"__serializedExpressions__":["_Position"],"__LivelyClassName__":"lively.morphic.WindowControl","__SourceModuleName__":"Global.lively.morphic.Widgets","_Position":"lively.pt(640.0,3.0)"},"58":{"submorphs":[],"scripts":[],"shape":{"__isSmartRef__":true,"id":59},"_WhiteSpaceHandling":"pre","textChunks":[{"__isSmartRef__":true,"id":60}],"_ClipMode":"hidden","derivationIds":[],"id":"0CB4C69C-DD9B-4368-8150-4BAB52FE8D4B","_InputAllowed":false,"_HandStyle":"default","allowInput":false,"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"draggingEnabled":true,"fixedWidth":true,"fixedHeight":true,"_FontFamily":"Helvetica","_FontSize":8,"evalEnabled":false,"owner":{"__isSmartRef__":true,"id":57},"isLabel":true,"eventsAreIgnored":true,"_TextStylingMode":true,"eventsAreDisabled":true,"_PointerEvents":"none","eventHandler":{"__isSmartRef__":true,"id":62},"__serializedExpressions__":["_TextColor","_Position"],"__LivelyClassName__":"lively.morphic.Text","__SourceModuleName__":"Global.lively.morphic.TextCore","_TextColor":"Color.rgb(64,64,64)","_Position":"lively.pt(0.0,-1.0)"},"59":{"_BorderWidth":0,"_Fill":null,"__serializedExpressions__":["_Position","_Extent","_Padding","_BorderColor"],"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes","_Position":"lively.pt(0.0,0.0)","_Extent":"lively.pt(16.0,18.0)","_Padding":"lively.rect(4,2,0,0)","_BorderColor":"Color.rgb(0,0,0)"},"60":{"style":{"__isSmartRef__":true,"id":61},"chunkOwner":{"__isSmartRef__":true,"id":58},"_id":"_2220","storedString":"X","__LivelyClassName__":"lively.morphic.TextChunk","__SourceModuleName__":"Global.lively.morphic.TextCore"},"61":{"__LivelyClassName__":"lively.morphic.TextEmphasis","__SourceModuleName__":"Global.lively.morphic.TextCore"},"62":{"morph":{"__isSmartRef__":true,"id":58},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"63":{"_BorderWidth":1,"_StrokeOpacity":0,"_BorderRadius":5,"_AppearanceStylingMode":true,"_BorderStylingMode":true,"__serializedExpressions__":["_Position","_Extent","_Padding","_BorderColor"],"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes","_Position":"lively.pt(0.0,0.0)","_Extent":"lively.pt(17.0,17.0)","_Padding":"lively.rect(0,0,0,0)","_BorderColor":"Color.rgb(189,190,192)"},"64":{"sourceObj":{"__isSmartRef__":true,"id":57},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":0},"targetMethodName":"initiateShutdown","varMapping":{"__isSmartRef__":true,"id":65},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings.Core"},"65":{"source":{"__isSmartRef__":true,"id":57},"target":{"__isSmartRef__":true,"id":0}},"66":{"morph":{"__isSmartRef__":true,"id":57},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"67":{"submorphs":[{"__isSmartRef__":true,"id":68}],"scripts":[],"shape":{"__isSmartRef__":true,"id":73},"_ClipMode":"visible","derivationIds":[],"id":"04DE1F7E-E6CD-4887-AECE-62093EB4DD18","grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"accessibleInInactiveWindow":true,"value":false,"toggle":false,"isActive":true,"label":{"__isSmartRef__":true,"id":68},"_PreviousBorderWidth":0,"owner":{"__isSmartRef__":true,"id":50},"attributeConnections":[{"__isSmartRef__":true,"id":74}],"doNotSerialize":["$$fire"],"doNotCopyProperties":["$$fire"],"eventHandler":{"__isSmartRef__":true,"id":76},"__serializedExpressions__":["_Position"],"__LivelyClassName__":"lively.morphic.WindowControl","__SourceModuleName__":"Global.lively.morphic.Widgets","_Position":"lively.pt(620.0,3.0)"},"68":{"submorphs":[],"scripts":[],"shape":{"__isSmartRef__":true,"id":69},"_WhiteSpaceHandling":"pre","textChunks":[{"__isSmartRef__":true,"id":70}],"_ClipMode":"hidden","derivationIds":[],"id":"8A1D5B9D-BF9B-4342-AF2D-65A3FEFDB123","_InputAllowed":false,"_HandStyle":"default","allowInput":false,"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"draggingEnabled":true,"fixedWidth":true,"fixedHeight":true,"_FontFamily":"Helvetica","_FontSize":8,"evalEnabled":false,"owner":{"__isSmartRef__":true,"id":67},"isLabel":true,"eventsAreIgnored":true,"_TextStylingMode":true,"eventsAreDisabled":true,"_PointerEvents":"none","eventHandler":{"__isSmartRef__":true,"id":72},"__serializedExpressions__":["_TextColor","_Position"],"__LivelyClassName__":"lively.morphic.Text","__SourceModuleName__":"Global.lively.morphic.TextCore","_TextColor":"Color.rgb(64,64,64)","_Position":"lively.pt(0.0,1.0)"},"69":{"_BorderWidth":0,"_Fill":null,"__serializedExpressions__":["_Position","_Extent","_Padding","_BorderColor"],"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes","_Position":"lively.pt(0.0,0.0)","_Extent":"lively.pt(15.0,18.0)","_Padding":"lively.rect(4,2,0,0)","_BorderColor":"Color.rgb(0,0,0)"},"70":{"style":{"__isSmartRef__":true,"id":71},"chunkOwner":{"__isSmartRef__":true,"id":68},"_id":"_2222","storedString":"–","__LivelyClassName__":"lively.morphic.TextChunk","__SourceModuleName__":"Global.lively.morphic.TextCore"},"71":{"__LivelyClassName__":"lively.morphic.TextEmphasis","__SourceModuleName__":"Global.lively.morphic.TextCore"},"72":{"morph":{"__isSmartRef__":true,"id":68},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"73":{"_BorderWidth":1,"_StrokeOpacity":0,"_BorderRadius":5,"_AppearanceStylingMode":true,"_BorderStylingMode":true,"__serializedExpressions__":["_Position","_Extent","_Padding","_BorderColor"],"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes","_Position":"lively.pt(0.0,0.0)","_Extent":"lively.pt(17.0,17.0)","_Padding":"lively.rect(0,0,0,0)","_BorderColor":"Color.rgb(189,190,192)"},"74":{"sourceObj":{"__isSmartRef__":true,"id":67},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":0},"targetMethodName":"toggleCollapse","varMapping":{"__isSmartRef__":true,"id":75},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings.Core"},"75":{"source":{"__isSmartRef__":true,"id":67},"target":{"__isSmartRef__":true,"id":0}},"76":{"morph":{"__isSmartRef__":true,"id":67},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"77":{"submorphs":[{"__isSmartRef__":true,"id":78}],"scripts":[],"shape":{"__isSmartRef__":true,"id":83},"_ClipMode":"visible","derivationIds":[],"id":"D25C7A8C-4AC3-4E49-8449-93C6C7A95D5F","grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"accessibleInInactiveWindow":true,"value":false,"toggle":false,"isActive":true,"label":{"__isSmartRef__":true,"id":78},"_PreviousBorderWidth":0,"owner":{"__isSmartRef__":true,"id":50},"attributeConnections":[{"__isSmartRef__":true,"id":84}],"doNotSerialize":["$$fire"],"doNotCopyProperties":["$$fire"],"eventHandler":{"__isSmartRef__":true,"id":86},"__serializedExpressions__":["_Position"],"__LivelyClassName__":"lively.morphic.WindowControl","__SourceModuleName__":"Global.lively.morphic.Widgets","_Position":"lively.pt(577.0,3.0)"},"78":{"submorphs":[],"scripts":[],"shape":{"__isSmartRef__":true,"id":79},"_WhiteSpaceHandling":"pre","textChunks":[{"__isSmartRef__":true,"id":80}],"_ClipMode":"hidden","derivationIds":[],"id":"3DB4C237-022E-4205-ADBD-77C6AFB893F9","_InputAllowed":false,"_HandStyle":"default","allowInput":false,"grabbingEnabled":false,"droppingEnabled":false,"halosEnabled":true,"draggingEnabled":true,"fixedWidth":true,"fixedHeight":true,"_FontFamily":"Helvetica","_FontSize":8,"evalEnabled":false,"owner":{"__isSmartRef__":true,"id":77},"isLabel":true,"eventsAreIgnored":true,"_TextStylingMode":true,"eventsAreDisabled":true,"_PointerEvents":"none","eventHandler":{"__isSmartRef__":true,"id":82},"__serializedExpressions__":["_TextColor","_Position"],"__LivelyClassName__":"lively.morphic.Text","__SourceModuleName__":"Global.lively.morphic.TextCore","_TextColor":"Color.rgb(64,64,64)","_Position":"lively.pt(0.0,0.0)"},"79":{"_BorderWidth":0,"_Fill":null,"__serializedExpressions__":["_Position","_Extent","_Padding","_BorderColor"],"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes","_Position":"lively.pt(0.0,0.0)","_Extent":"lively.pt(39.0,18.0)","_Padding":"lively.rect(4,2,0,0)","_BorderColor":"Color.rgb(0,0,0)"},"80":{"style":{"__isSmartRef__":true,"id":81},"chunkOwner":{"__isSmartRef__":true,"id":78},"_id":"_2224","storedString":"Menu","__LivelyClassName__":"lively.morphic.TextChunk","__SourceModuleName__":"Global.lively.morphic.TextCore"},"81":{"__LivelyClassName__":"lively.morphic.TextEmphasis","__SourceModuleName__":"Global.lively.morphic.TextCore"},"82":{"morph":{"__isSmartRef__":true,"id":78},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"83":{"_BorderWidth":1,"_StrokeOpacity":0,"_BorderRadius":5,"_AppearanceStylingMode":true,"_BorderStylingMode":true,"__serializedExpressions__":["_Position","_Extent","_Padding","_BorderColor"],"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes","_Position":"lively.pt(0.0,0.0)","_Extent":"lively.pt(40.0,17.0)","_Padding":"lively.rect(0,0,0,0)","_BorderColor":"Color.rgb(189,190,192)"},"84":{"sourceObj":{"__isSmartRef__":true,"id":77},"sourceAttrName":"fire","targetObj":{"__isSmartRef__":true,"id":0},"targetMethodName":"showTargetMorphMenu","varMapping":{"__isSmartRef__":true,"id":85},"__LivelyClassName__":"AttributeConnection","__SourceModuleName__":"Global.lively.bindings.Core"},"85":{"source":{"__isSmartRef__":true,"id":77},"target":{"__isSmartRef__":true,"id":0}},"86":{"morph":{"__isSmartRef__":true,"id":77},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"87":{"_AppearanceStylingMode":true,"_BorderStylingMode":true,"_BorderWidth":0,"__serializedExpressions__":["_Position","_Extent","_Padding"],"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes","_Position":"lively.pt(0.0,0.0)","_Extent":"lively.pt(660.0,22.0)","_Padding":"lively.rect(0,0,0,0)"},"88":{"resizeWidth":true,"adjustForNewBounds":true},"89":{"morph":{"__isSmartRef__":true,"id":50},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"90":{"submorphs":[],"scripts":[],"shape":{"__isSmartRef__":true,"id":91},"_ClipMode":"visible","derivationIds":[],"id":"6F9F8461-1C4F-4990-A3CD-C625C134115E","droppingEnabled":true,"halosEnabled":true,"type":"corner","_StyleClassNames":["Morph","Box","ReframeHandle","reframe-handle corner"],"layout":{"__isSmartRef__":true,"id":92},"owner":{"__isSmartRef__":true,"id":0},"eventHandler":{"__isSmartRef__":true,"id":93},"__serializedExpressions__":["_Position"],"__LivelyClassName__":"lively.morphic.ReframeHandle","__SourceModuleName__":"Global.lively.morphic.Widgets","_Position":"lively.pt(646.0,733.0)"},"91":{"__serializedExpressions__":["_Position","_Extent","_Padding"],"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes","_Position":"lively.pt(0.0,0.0)","_Extent":"lively.pt(14.0,14.0)","_Padding":"lively.rect(0,0,0,0)"},"92":{"moveVertical":true,"moveHorizontal":true},"93":{"morph":{"__isSmartRef__":true,"id":90},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"94":{"submorphs":[],"scripts":[],"shape":{"__isSmartRef__":true,"id":95},"_ClipMode":"visible","derivationIds":[],"id":"18571B19-C1BB-4099-AAD2-0D8DE7F82249","droppingEnabled":true,"halosEnabled":true,"type":"bottom","_StyleClassNames":["Morph","Box","ReframeHandle","reframe-handle bottom"],"layout":{"__isSmartRef__":true,"id":96},"owner":{"__isSmartRef__":true,"id":0},"eventHandler":{"__isSmartRef__":true,"id":97},"__serializedExpressions__":["_Position"],"__LivelyClassName__":"lively.morphic.ReframeHandle","__SourceModuleName__":"Global.lively.morphic.Widgets","_Position":"lively.pt(0.0,744.0)"},"95":{"__serializedExpressions__":["_Position","_Extent","_Padding"],"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes","_Position":"lively.pt(0.0,0.0)","_Extent":"lively.pt(646.0,3.0)","_Padding":"lively.rect(0,0,0,0)"},"96":{"moveVertical":true},"97":{"morph":{"__isSmartRef__":true,"id":94},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"98":{"submorphs":[],"scripts":[],"shape":{"__isSmartRef__":true,"id":99},"_ClipMode":"visible","derivationIds":[],"id":"BF9591B7-9643-4384-A252-88B4382EB33B","droppingEnabled":true,"halosEnabled":true,"type":"right","_StyleClassNames":["Morph","Box","ReframeHandle","reframe-handle right"],"layout":{"__isSmartRef__":true,"id":100},"owner":{"__isSmartRef__":true,"id":0},"eventHandler":{"__isSmartRef__":true,"id":101},"__serializedExpressions__":["_Position"],"__LivelyClassName__":"lively.morphic.ReframeHandle","__SourceModuleName__":"Global.lively.morphic.Widgets","_Position":"lively.pt(657.0,0.0)"},"99":{"__serializedExpressions__":["_Position","_Extent","_Padding"],"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes","_Position":"lively.pt(0.0,0.0)","_Extent":"lively.pt(3.0,733.0)","_Padding":"lively.rect(0,0,0,0)"},"100":{"moveHorizontal":true},"101":{"morph":{"__isSmartRef__":true,"id":98},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"102":{"_BorderWidth":0,"_Fill":null,"_StrokeOpacity":false,"_BorderRadius":0,"_BorderStyle":"solid","_Opacity":1,"__serializedExpressions__":["_Position","_Extent","_Padding","_BorderColor"],"__LivelyClassName__":"lively.morphic.Shapes.Rectangle","__SourceModuleName__":"Global.lively.morphic.Shapes","_Position":"lively.pt(0.0,0.0)","_Extent":"lively.pt(660.0,747.0)","_Padding":"lively.rect(0,0,0,0)","_BorderColor":"Color.rgb(204,0,0)"},"103":{"adjustForNewBounds":true},"104":{"morph":{"__isSmartRef__":true,"id":0},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"105":{"partName":"ServerWorkspace","requiredModules":[],"partsSpaceName":"PartsBin/Charlie/","comment":"no comment","changes":[{"__isSmartRef__":true,"id":106}],"migrationLevel":8,"__LivelyClassName__":"lively.PartsBin.PartsBinMetaInfo","__SourceModuleName__":"Global.lively.PartsBin"},"106":{"__serializedExpressions__":["date"],"author":"cmagnuso","message":"no comment","id":"D1BE1377-ECA5-4056-88D8-5ECA976DDFB2","date":"new Date(\"Tue Sep 30 2014 14:08:07 GMT-0700 (Pacific Daylight Time)\")"},"isSimplifiedRegistry":true}}