{"id":0,"registry":{"0":{"submorphs":[],"scripts":[],"shape":{"__isSmartRef__":true,"id":1},"_ClipMode":"visible","derivationIds":["0DB81006-4481-4955-9F2B-634C9F8A3291","DB068FC5-6C7D-41CE-9BA2-BFB75D14170D","1C6A2D58-EEBF-4B56-A570-A813D0E79AF1","67899964-69EF-4FEE-9299-97278745C986","240C04A0-CFFC-4811-86B8-F517C6A341AB","0337F153-7E6D-4C9F-BCCE-3A7A7B77EA56","79F62973-1036-4B9E-9346-71DE49C8F39D","F71C29C2-BB54-48F7-96DB-8376E731D78E","26A6BAFD-4B7E-47C9-8CCB-8B84ED82882A","92DED67E-55D2-4A97-BA28-9A8BDF9751F4","998A9CB6-91E4-4D23-A538-4749BBDC2474"],"id":"AFDEFBE9-FD24-4CFF-9D3A-7253B1835F7F","grabbingEnabled":false,"droppingEnabled":true,"halosEnabled":true,"eventHandler":{"__isSmartRef__":true,"id":2},"showsHalos":false,"_Rotation":0,"_Scale":1,"layout":{"__isSmartRef__":true,"id":3},"name":"DrawingCanvasMorph","partsBinMetaInfo":{"__isSmartRef__":true,"id":4},"pointInHistory":0,"chunkColors":[],"history":[],"__serializedExpressions__":["_Position","distanceToDragEvent","penColor","previousPosition"],"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":17},"__LivelyClassName__":"DrawingCanvasMorph","__SourceModuleName__":"Global.users.robertkrahn.Canvas","_Position":"lively.pt(0.0,0.0)","distanceToDragEvent":"lively.pt(520.0,-15.0)","penColor":"Color.rgb(0,0,0)","previousPosition":"lively.pt(0.0,0.0)"},"1":{"dataURL":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA0sAAAJoCAYAAAC3C3paAAAgAElEQVR4Xu3ZoRHAMAwEwbj/plOADY7/BotoZXKT8/kIECBAgAABAgQIECBA4BI4TAgQIECAAAECBAgQIEDgFhBLXgUBAgQIECBAgAABAgQeAmLJsyBAgAABAgQIECBAgIBY8gYIECBAgAABAgQIECDQBPxZak6mCBAgQIAAAQIECBAYExBLYwe3LgECBAgQIECAAAECTUAsNSdTBAgQIECAAAECBAiMCYilsYNblwABAgQIECBAgACBJiCWmpMpAgQIECBAgAABAgTGBMTS2MGtS4AAAQIECBAgQIBAExBLzckUAQIECBAgQIAAAQJjAmJp7ODWJUCAAAECBAgQIECgCYil5mSKAAECBAgQIECAAIExAbE0dnDrEiBAgAABAgQIECDQBMRSczJFgAABAgQIECBAgMCYgFgaO7h1CRAgQIAAAQIECBBoAmKpOZkiQIAAAQIECBAgQGBMQCyNHdy6BAgQIECAAAECBAg0AbHUnEwRIECAAAECBAgQIDAmIJbGDm5dAgQIECBAgAABAgSagFhqTqYIECBAgAABAgQIEBgTEEtjB7cuAQIECBAgQIAAAQJNQCw1J1MECBAgQIAAAQIECIwJiKWxg1uXAAECBAgQIECAAIEmIJaakykCBAgQIECAAAECBMYExNLYwa1LgAABAgQIECBAgEATEEvNyRQBAgQIECBAgAABAmMCYmns4NYlQIAAAQIECBAgQKAJiKXmZIoAAQIECBAgQIAAgTEBsTR2cOsSIECAAAECBAgQINAExFJzMkWAAAECBAgQIECAwJiAWBo7uHUJECBAgAABAgQIEGgCYqk5mSJAgAABAgQIECBAYExALI0d3LoECBAgQIAAAQIECDQBsdScTBEgQIAAAQIECBAgMCYglsYObl0CBAgQIECAAAECBJqAWGpOpggQIECAAAECBAgQGBMQS2MHty4BAgQIECBAgAABAk1ALDUnUwQIECBAgAABAgQIjAmIpbGDW5cAAQIECBAgQIAAgSYglpqTKQIECBAgQIAAAQIExgTE0tjBrUuAAAECBAgQIECAQBMQS83JFAECBAgQIECAAAECYwJiaezg1iVAgAABAgQIECBAoAmIpeZkigABAgQIECBAgACBMQGxNHZw6xIgQIAAAQIECBAg0ATEUnMyRYAAAQIECBAgQIDAmIBYGju4dQkQIECAAAECBAgQaAJiqTmZIkCAAAECBAgQIEBgTEAsjR3cugQIECBAgAABAgQINAGx1JxMESBAgAABAgQIECAwJiCWxg5uXQIECBAgQIAAAQIEmoBYak6mCBAgQIAAAQIECBAYExBLYwe3LgECBAgQIECAAAECTUAsNSdTBAgQIECAAAECBAiMCYilsYNblwABAgQIECBAgACBJiCWmpMpAgQIECBAgAABAgTGBMTS2MGtS4AAAQIECBAgQIBAExBLzckUAQIECBAgQIAAAQJjAmJp7ODWJUCAAAECBAgQIECgCYil5mSKAAECBAgQIECAAIExAbE0dnDrEiBAgAABAgQIECDQBMRSczJFgAABAgQIECBAgMCYgFgaO7h1CRAgQIAAAQIECBBoAmKpOZkiQIAAAQIECBAgQGBMQCyNHdy6BAgQIECAAAECBAg0AbHUnEwRIECAAAECBAgQIDAmIJbGDm5dAgQIECBAgAABAgSagFhqTqYIECBAgAABAgQIEBgTEEtjB7cuAQIECBAgQIAAAQJNQCw1J1MECBAgQIAAAQIECIwJiKWxg1uXAAECBAgQIECAAIEmIJaakykCBAgQIECAAAECBMYExNLYwa1LgAABAgQIECBAgEATEEvNyRQBAgQIECBAgAABAmMCYmns4NYlQIAAAQIECBAgQKAJiKXmZIoAAQIECBAgQIAAgTEBsTR2cOsSIECAAAECBAgQINAExFJzMkWAAAECBAgQIECAwJiAWBo7uHUJECBAgAABAgQIEGgCYqk5mSJAgAABAgQIECBAYExALI0d3LoECBAgQIAAAQIECDQBsdScTBEgQIAAAQIECBAgMCYglsYObl0CBAgQIECAAAECBJqAWGpOpggQIECAAAECBAgQGBMQS2MHty4BAgQIECBAgAABAk1ALDUnUwQIECBAgAABAgQIjAmIpbGDW5cAAQIECBAgQIAAgSYglpqTKQIECBAgQIAAAQIExgTE0tjBrUuAAAECBAgQIECAQBMQS83JFAECBAgQIECAAAECYwJiaezg1iVAgAABAgQIECBAoAmIpeZkigABAgQIECBAgACBMQGxNHZw6xIgQIAAAQIECBAg0ATEUnMyRYAAAQIECBAgQIDAmIBYGju4dQkQIECAAAECBAgQaAJiqTmZIkCAAAECBAgQIEBgTEAsjR3cugQIECBAgAABAgQINAGx1JxMESBAgAABAgQIECAwJiCWxg5uXQIECBAgQIAAAQIEmoBYak6mCBAgQIAAAQIECBAYExBLYwe3LgECBAgQIECAAAECTUAsNSdTBAgQIECAAAECBAiMCYilsYNblwABAgQIECBAgACBJiCWmpMpAgQIECBAgAABAgTGBMTS2MGtS4AAAQIECBAgQIBAExBLzckUAQIECBAgQIAAAQJjAmJp7ODWJUCAAAECBAgQIECgCYil5mSKAAECBAgQIECAAIExAbE0dnDrEiBAgAABAgQIECDQBMRSczJFgAABAgQIECBAgMCYgFgaO7h1CRAgQIAAAQIECBBoAmKpOZkiQIAAAQIECBAgQGBMQCyNHdy6BAgQIECAAAECBAg0AbHUnEwRIECAAAECBAgQIDAmIJbGDm5dAgQIECBAgAABAgSagFhqTqYIECBAgAABAgQIEBgTEEtjB7cuAQIECBAgQIAAAQJNQCw1J1MECBAgQIAAAQIECIwJiKWxg1uXAAECBAgQIECAAIEmIJaakykCBAgQIECAAAECBMYExNLYwa1LgAABAgQIECBAgEATEEvNyRQBAgQIECBAgAABAmMCYmns4NYlQIAAAQIECBAgQKAJiKXmZIoAAQIECBAgQIAAgTEBsTR2cOsSIECAAAECBAgQINAExFJzMkWAAAECBAgQIECAwJiAWBo7uHUJECBAgAABAgQIEGgCYqk5mSJAgAABAgQIECBAYExALI0d3LoECBAgQIAAAQIECDQBsdScTBEgQIAAAQIECBAgMCYglsYObl0CBAgQIECAAAECBJqAWGpOpggQIECAAAECBAgQGBMQS2MHty4BAgQIECBAgAABAk1ALDUnUwQIECBAgAABAgQIjAmIpbGDW5cAAQIECBAgQIAAgSYglpqTKQIECBAgQIAAAQIExgTE0tjBrUuAAAECBAgQIECAQBMQS83JFAECBAgQIECAAAECYwJiaezg1iVAgAABAgQIECBAoAmIpeZkigABAgQIECBAgACBMQGxNHZw6xIgQIAAAQIECBAg0ATEUnMyRYAAAQIECBAgQIDAmIBYGju4dQkQIECAAAECBAgQaAJiqTmZIkCAAAECBAgQIEBgTEAsjR3cugQIECBAgAABAgQINAGx1JxMESBAgAABAgQIECAwJiCWxg5uXQIECBAgQIAAAQIEmoBYak6mCBAgQIAAAQIECBAYExBLYwe3LgECBAgQIECAAAECTUAsNSdTBAgQIECAAAECBAiMCYilsYNblwABAgQIECBAgACBJiCWmpMpAgQIECBAgAABAgTGBMTS2MGtS4AAAQIECBAgQIBAExBLzckUAQIECBAgQIAAAQJjAmJp7ODWJUCAAAECBAgQIECgCYil5mSKAAECBAgQIECAAIExAbE0dnDrEiBAgAABAgQIECDQBMRSczJFgAABAgQIECBAgMCYgFgaO7h1CRAgQIAAAQIECBBoAmKpOZkiQIAAAQIECBAgQGBMQCyNHdy6BAgQIECAAAECBAg0AbHUnEwRIECAAAECBAgQIDAmIJbGDm5dAgQIECBAgAABAgSagFhqTqYIECBAgAABAgQIEBgTEEtjB7cuAQIECBAgQIAAAQJNQCw1J1MECBAgQIAAAQIECIwJiKWxg1uXAAECBAgQIECAAIEmIJaakykCBAgQIECAAAECBMYExNLYwa1LgAABAgQIECBAgEATEEvNyRQBAgQIECBAgAABAmMCYmns4NYlQIAAAQIECBAgQKAJiKXmZIoAAQIECBAgQIAAgTEBsTR2cOsSIECAAAECBAgQINAExFJzMkWAAAECBAgQIECAwJiAWBo7uHUJECBAgAABAgQIEGgCYqk5mSJAgAABAgQIECBAYExALI0d3LoECBAgQIAAAQIECDQBsdScTBEgQIAAAQIECBAgMCYglsYObl0CBAgQIECAAAECBJqAWGpOpggQIECAAAECBAgQGBMQS2MHty4BAgQIECBAgAABAk1ALDUnUwQIECBAgAABAgQIjAmIpbGDW5cAAQIECBAgQIAAgSYglpqTKQIECBAgQIAAAQIExgTE0tjBrUuAAAECBAgQIECAQBMQS83JFAECBAgQIECAAAECYwJiaezg1iVAgAABAgQIECBAoAmIpeZkigABAgQIECBAgACBMQGxNHZw6xIgQIAAAQIECBAg0ATEUnMyRYAAAQIECBAgQIDAmIBYGju4dQkQIECAAAECBAgQaAJiqTmZIkCAAAECBAgQIEBgTEAsjR3cugQIECBAgAABAgQINAGx1JxMESBAgAABAgQIECAwJiCWxg5uXQIECBAgQIAAAQIEmoBYak6mCBAgQIAAAQIECBAYExBLYwe3LgECBAgQIECAAAECTUAsNSdTBAgQIECAAAECBAiMCYilsYNblwABAgQIECBAgACBJiCWmpMpAgQIECBAgAABAgTGBMTS2MGtS4AAAQIECBAgQIBAExBLzckUAQIECBAgQIAAAQJjAmJp7ODWJUCAAAECBAgQIECgCYil5mSKAAECBAgQIECAAIExAbE0dnDrEiBAgAABAgQIECDQBMRSczJFgAABAgQIECBAgMCYgFgaO7h1CRAgQIAAAQIECBBoAmKpOZkiQIAAAQIECBAgQGBMQCyNHdy6BAgQIECAAAECBAg0AbHUnEwRIECAAAECBAgQIDAmIJbGDm5dAgQIECBAgAABAgSagFhqTqYIECBAgAABAgQIEBgTEEtjB7cuAQIECBAgQIAAAQJNQCw1J1MECBAgQIAAAQIECIwJiKWxg1uXAAECBAgQIECAAIEmIJaakykCBAgQIECAAAECBMYExNLYwa1LgAABAgQIECBAgEATEEvNyRQBAgQIECBAgAABAmMCYmns4NYlQIAAAQIECBAgQKAJiKXmZIoAAQIECBAgQIAAgTEBsTR2cOsSIECAAAECBAgQINAExFJzMkWAAAECBAgQIECAwJiAWBo7uHUJECBAgAABAgQIEGgCYqk5mSJAgAABAgQIECBAYExALI0d3LoECBAgQIAAAQIECDQBsdScTBEgQIAAAQIECBAgMCYglsYObl0CBAgQIECAAAECBJqAWGpOpggQIECAAAECBAgQGBMQS2MHty4BAgQIECBAgAABAk1ALDUnUwQIECBAgAABAgQIjAmIpbGDW5cAAQIECBAgQIAAgSYglpqTKQIECBAgQIAAAQIExgTE0tjBrUuAAAECBAgQIECAQBMQS83JFAECBAgQIECAAAECYwJiaezg1iVAgAABAgQIECBAoAmIpeZkigABAgQIECBAgACBMQGxNHZw6xIgQIAAAQIECBAg0ATEUnMyRYAAAQIECBAgQIDAmIBYGju4dQkQIECAAAECBAgQaAJiqTmZIkCAAAECBAgQIEBgTEAsjR3cugQIECBAgAABAgQINAGx1JxMESBAgAABAgQIECAwJiCWxg5uXQIECBAgQIAAAQIEmoBYak6mCBAgQIAAAQIECBAYExBLYwe3LgECBAgQIECAAAECTUAsNSdTBAgQIECAAAECBAiMCYilsYNblwABAgQIECBAgACBJiCWmpMpAgQIECBAgAABAgTGBMTS2MGtS4AAAQIECBAgQIBAExBLzckUAQIECBAgQIAAAQJjAmJp7ODWJUCAAAECBAgQIECgCYil5mSKAAECBAgQIECAAIExAbE0dnDrEiBAgAABAgQIECDQBMRSczJFgAABAgQIECBAgMCYgFgaO7h1CRAgQIAAAQIECBBoAmKpOZkiQIAAAQIECBAgQGBMQCyNHdy6BAgQIECAAAECBAg0AbHUnEwRIECAAAECBAgQIDAmIJbGDm5dAgQIECBAgAABAgSagFhqTqYIECBAgAABAgQIEBgTEEtjB7cuAQIECBAgQIAAAQJNQCw1J1MECBAgQIAAAQIECIwJiKWxg1uXAAECBAgQIECAAIEmIJaakykCBAgQIECAAAECBMYExNLYwa1LgAABAgQIECBAgEATEEvNyRQBAgQIECBAgAABAmMCYmns4NYlQIAAAQIECBAgQKAJiKXmZIoAAQIECBAgQIAAgTEBsTR2cOsSIECAAAECBAgQINAExFJzMkWAAAECBAgQIECAwJiAWBo7uHUJECBAgAABAgQIEGgCYqk5mSJAgAABAgQIECBAYExALI0d3LoECBAgQIAAAQIECDQBsdScTBEgQIAAAQIECBAgMCYglsYObl0CBAgQIECAAAECBJqAWGpOpggQIECAAAECBAgQGBMQS2MHty4BAgQIECBAgAABAk1ALDUnUwQIECBAgAABAgQIjAmIpbGDW5cAAQIECBAgQIAAgSYglpqTKQIECBAgQIAAAQIExgTE0tjBrUuAAAECBAgQIECAQBMQS83JFAECBAgQIECAAAECYwJiaezg1iVAgAABAgQIECBAoAmIpeZkigABAgQIECBAgACBMQGxNHZw6xIgQIAAAQIECBAg0ATEUnMyRYAAAQIECBAgQIDAmIBYGju4dQkQIECAAAECBAgQaAJiqTmZIkCAAAECBAgQIEBgTEAsjR3cugQIECBAgAABAgQINAGx1JxMESBAgAABAgQIECAwJiCWxg5uXQIECBAgQIAAAQIEmoBYak6mCBAgQIAAAQIECBAYExBLYwe3LgECBAgQIECAAAECTUAsNSdTBAgQIECAAAECBAiMCYilsYNblwABAgQIECBAgACBJiCWmpMpAgQIECBAgAABAgTGBMTS2MGtS4AAAQIECBAgQIBAExBLzckUAQIECBAgQIAAAQJjAmJp7ODWJUCAAAECBAgQIECgCYil5mSKAAECBAgQIECAAIExAbE0dnDrEiBAgAABAgQIECDQBMRSczJFgAABAgQIECBAgMCYgFgaO7h1CRAgQIAAAQIECBBoAmKpOZkiQIAAAQIECBAgQGBMQCyNHdy6BAgQIECAAAECBAg0AbHUnEwRIECAAAECBAgQIDAmIJbGDm5dAgQIECBAgAABAgSagFhqTqYIECBAgAABAgQIEBgTEEtjB7cuAQIECBAgQIAAAQJNQCw1J1MECBAgQIAAAQIECIwJiKWxg1uXAAECBAgQIECAAIEmIJaakykCBAgQIECAAAECBMYExNLYwa1LgAABAgQIECBAgEATEEvNyRQBAgQIECBAgAABAmMCYmns4NYlQIAAAQIECBAgQKAJiKXmZIoAAQIECBAgQIAAgTEBsTR2cOsSIECAAAECBAgQINAExFJzMkWAAAECBAgQIECAwJiAWBo7uHUJECBAgAABAgQIEGgCYqk5mSJAgAABAgQIECBAYExALI0d3LoECBAgQIAAAQIECDQBsdScTBEgQIAAAQIECBAgMCYglsYObl0CBAgQIECAAAECBJqAWGpOpggQIECAAAECBAgQGBMQS2MHty4BAgQIECBAgAABAk1ALDUnUwQIECBAgAABAgQIjAmIpbGDW5cAAQIECBAgQIAAgSYglpqTKQIECBAgQIAAAQIExgTE0tjBrUuAAAECBAgQIECAQBMQS83JFAECBAgQIECAAAECYwJiaezg1iVAgAABAgQIECBAoAmIpeZkigABAgQIECBAgACBMQGxNHZw6xIgQIAAAQIECBAg0ATEUnMyRYAAAQIECBAgQIDAmIBYGju4dQkQIECAAAECBAgQaAJiqTmZIkCAAAECBAgQIEBgTEAsjR3cugQIECBAgAABAgQINAGx1JxMESBAgAABAgQIECAwJiCWxg5uXQIECBAgQIAAAQIEmoBYak6mCBAgQIAAAQIECBAYExBLYwe3LgECBAgQIECAAAECTUAsNSdTBAgQIECAAAECBAiMCYilsYNblwABAgQIECBAgACBJiCWmpMpAgQIECBAgAABAgTGBMTS2MGtS4AAAQIECBAgQIBAExBLzckUAQIECBAgQIAAAQJjAmJp7ODWJUCAAAECBAgQIECgCYil5mSKAAECBAgQIECAAIExAbE0dnDrEiBAgAABAgQIECDQBMRSczJFgAABAgQIECBAgMCYgFgaO7h1CRAgQIAAAQIECBBoAmKpOZkiQIAAAQIECBAgQGBMQCyNHdy6BAgQIECAAAECBAg0AbHUnEwRIECAAAECBAgQIDAmIJbGDm5dAgQIECBAgAABAgSagFhqTqYIECBAgAABAgQIEBgTEEtjB7cuAQIECBAgQIAAAQJNQCw1J1MECBAgQIAAAQIECIwJiKWxg1uXAAECBAgQIECAAIEmIJaakykCBAgQIECAAAECBMYExNLYwa1LgAABAgQIECBAgEATEEvNyRQBAgQIECBAgAABAmMCYmns4NYlQIAAAQIECBAgQKAJiKXmZIoAAQIECBAgQIAAgTEBsTR2cOsSIECAAAECBAgQINAExFJzMkWAAAECBAgQIECAwJiAWBo7uHUJECBAgAABAgQIEGgCYqk5mSJAgAABAgQIECBAYExALI0d3LoECBAgQIAAAQIECDQBsdScTBEgQIAAAQIECBAgMCYglsYObl0CBAgQIECAAAECBJqAWGpOpggQIECAAAECBAgQGBMQS2MHty4BAgQIECBAgAABAk1ALDUnUwQIECBAgAABAgQIjAmIpbGDW5cAAQIECBAgQIAAgSYglpqTKQIECBAgQIAAAQIExgTE0tjBrUuAAAECBAgQIECAQBMQS83JFAECBAgQIECAAAECYwJiaezg1iVAgAABAgQIECBAoAmIpeZkigABAgQIECBAgACBMQGxNHZw6xIgQIAAAQIECBAg0ATEUnMyRYAAAQIECBAgQIDAmIBYGju4dQkQIECAAAECBAgQaAJiqTmZIkCAAAECBAgQIEBgTEAsjR3cugQIECBAgAABAgQINAGx1JxMESBAgAABAgQIECAwJiCWxg5uXQIECBAgQIAAAQIEmoBYak6mCBAgQIAAAQIECBAYExBLYwe3LgECBAgQIECAAAECTUAsNSdTBAgQIECAAAECBAiMCYilsYNblwABAgQIECBAgACBJiCWmpMpAgQIECBAgAABAgTGBMTS2MGtS4AAAQIECBAgQIBAExBLzckUAQIECBAgQIAAAQJjAmJp7ODWJUCAAAECBAgQIECgCYil5mSKAAECBAgQIECAAIExAbE0dnDrEiBAgAABAgQIECDQBMRSczJFgAABAgQIECBAgMCYgFgaO7h1CRAgQIAAAQIECBBoAmKpOZkiQIAAAQIECBAgQGBMQCyNHdy6BAgQIECAAAECBAg0AbHUnEwRIECAAAECBAgQIDAmIJbGDm5dAgQIECBAgAABAgSagFhqTqYIECBAgAABAgQIEBgTEEtjB7cuAQIECBAgQIAAAQJNQCw1J1MECBAgQIAAAQIECIwJiKWxg1uXAAECBAgQIECAAIEmIJaakykCBAgQIECAAAECBMYExNLYwa1LgAABAgQIECBAgEATEEvNyRQBAgQIECBAgAABAmMCYmns4NYlQIAAAQIECBAgQKAJiKXmZIoAAQIECBAgQIAAgTEBsTR2cOsSIECAAAECBAgQINAExFJzMkWAAAECBAgQIECAwJiAWBo7uHUJECBAgAABAgQIEGgCYqk5mSJAgAABAgQIECBAYExALI0d3LoECBAgQIAAAQIECDQBsdScTBEgQIAAAQIECBAgMCYglsYObl0CBAgQIECAAAECBJqAWGpOpggQIECAAAECBAgQGBMQS2MHty4BAgQIECBAgAABAk1ALDUnUwQIECBAgAABAgQIjAmIpbGDW5cAAQIECBAgQIAAgSYglpqTKQIECBAgQIAAAQIExgTE0tjBrUuAAAECBAgQIECAQBMQS83JFAECBAgQIECAAAECYwJiaezg1iVAgAABAgQIECBAoAmIpeZkigABAgQIECBAgACBMQGxNHZw6xIgQIAAAQIECBAg0ATEUnMyRYAAAQIECBAgQIDAmIBYGju4dQkQIECAAAECBAgQaAJiqTmZIkCAAAECBAgQIEBgTEAsjR3cugQIECBAgAABAgQINAGx1JxMESBAgAABAgQIECAwJiCWxg5uXQIECBAgQIAAAQIEmoBYak6mCBAgQIAAAQIECBAYExBLYwe3LgECBAgQIECAAAECTUAsNSdTBAgQIECAAAECBAiMCYilsYNblwABAgQIECBAgACBJiCWmpMpAgQIECBAgAABAgTGBMTS2MGtS4AAAQIECBAgQIBAExBLzckUAQIECBAgQIAAAQJjAmJp7ODWJUCAAAECBAgQIECgCYil5mSKAAECBAgQIECAAIExAbE0dnDrEiBAgAABAgQIECDQBMRSczJFgAABAgQIECBAgMCYgFgaO7h1CRAgQIAAAQIECBBoAmKpOZkiQIAAAQIECBAgQGBMQCyNHdy6BAgQIECAAAECBAg0AbHUnEwRIECAAAECBAgQIDAmIJbGDm5dAgQIECBAgAABAgSagFhqTqYIECBAgAABAgQIEBgTEEtjB7cuAQIECBAgQIAAAQJNQCw1J1MECBAgQBsIGoIAAAtDSURBVIAAAQIECIwJiKWxg1uXAAECBAgQIECAAIEmIJaakykCBAgQIECAAAECBMYExNLYwa1LgAABAgQIECBAgEATEEvNyRQBAgQIECBAgAABAmMCYmns4NYlQIAAAQIECBAgQKAJiKXmZIoAAQIECBAgQIAAgTEBsTR2cOsSIECAAAECBAgQINAExFJzMkWAAAECBAgQIECAwJiAWBo7uHUJECBAgAABAgQIEGgCYqk5mSJAgAABAgQIECBAYExALI0d3LoECBAgQIAAAQIECDQBsdScTBEgQIAAAQIECBAgMCYglsYObl0CBAgQIECAAAECBJqAWGpOpggQIECAAAECBAgQGBMQS2MHty4BAgQIECBAgAABAk1ALDUnUwQIECBAgAABAgQIjAmIpbGDW5cAAQIECBAgQIAAgSYglpqTKQIECBAgQIAAAQIExgTE0tjBrUuAAAECBAgQIECAQBMQS83JFAECBAgQIECAAAECYwJiaezg1iVAgAABAgQIECBAoAmIpeZkigABAgQIECBAgACBMQGxNHZw6xIgQIAAAQIECBAg0ATEUnMyRYAAAQIECBAgQIDAmIBYGju4dQkQIECAAAECBAgQaAJiqTmZIkCAAAECBAgQIEBgTEAsjR3cugQIECBAgAABAgQINAGx1JxMESBAgAABAgQIECAwJiCWxg5uXQIECBAgQIAAAQIEmoBYak6mCBAgQIAAAQIECBAYExBLYwe3LgECBAgQIECAAAECTUAsNSdTBAgQIECAAAECBAiMCYilsYNblwABAgQIECBAgACBJiCWmpMpAgQIECBAgAABAgTGBMTS2MGtS4AAAQIECBAgQIBAExBLzckUAQIECBAgQIAAAQJjAmJp7ODWJUCAAAECBAgQIECgCYil5mSKAAECBAgQIECAAIExAbE0dnDrEiBAgAABAgQIECDQBMRSczJFgAABAgQIECBAgMCYgFgaO7h1CRAgQIAAAQIECBBoAmKpOZkiQIAAAQIECBAgQGBMQCyNHdy6BAgQIECAAAECBAg0AbHUnEwRIECAAAECBAgQIDAmIJbGDm5dAgQIECBAgAABAgSagFhqTqYIECBAgAABAgQIEBgTEEtjB7cuAQIECBAgQIAAAQJNQCw1J1MECBAgQIAAAQIECIwJiKWxg1uXAAECBAgQIECAAIEmIJaakykCBAgQIECAAAECBMYExNLYwa1LgAABAgQIECBAgEATEEvNyRQBAgQIECBAgAABAmMCYmns4NYlQIAAAQIECBAgQKAJiKXmZIoAAQIECBAgQIAAgTEBsTR2cOsSIECAAAECBAgQINAExFJzMkWAAAECBAgQIECAwJiAWBo7uHUJECBAgAABAgQIEGgCYqk5mSJAgAABAgQIECBAYExALI0d3LoECBAgQIAAAQIECDQBsdScTBEgQIAAAQIECBAgMCYglsYObl0CBAgQIECAAAECBJqAWGpOpggQIECAAAECBAgQGBMQS2MHty4BAgQIECBAgAABAk1ALDUnUwQIECBAgAABAgQIjAmIpbGDW5cAAQIECBAgQIAAgSYglpqTKQIECBAgQIAAAQIExgTE0tjBrUuAAAECBAgQIECAQBMQS83JFAECBAgQIECAAAECYwJiaezg1iVAgAABAgQIECBAoAmIpeZkigABAgQIECBAgACBMQGxNHZw6xIgQIAAAQIECBAg0ATEUnMyRYAAAQIECBAgQIDAmIBYGju4dQkQIECAAAECBAgQaAJiqTmZIkCAAAECBAgQIEBgTEAsjR3cugQIECBAgAABAgQINAGx1JxMESBAgAABAgQIECAwJiCWxg5uXQIECBAgQIAAAQIEmoBYak6mCBAgQIAAAQIECBAYExBLYwe3LgECBAgQIECAAAECTUAsNSdTBAgQIECAAAECBAiMCYilsYNblwABAgQIECBAgACBJiCWmpMpAgQIECBAgAABAgTGBMTS2MGtS4AAAQIECBAgQIBAExBLzckUAQIECBAgQIAAAQJjAmJp7ODWJUCAAAECBAgQIECgCYil5mSKAAECBAgQIECAAIExAbE0dnDrEiBAgAABAgQIECDQBMRSczJFgAABAgQIECBAgMCYgFgaO7h1CRAgQIAAAQIECBBoAmKpOZkiQIAAAQIECBAgQGBMQCyNHdy6BAgQIECAAAECBAg0AbHUnEwRIECAAAECBAgQIDAmIJbGDm5dAgQIECBAgAABAgSagFhqTqYIECBAgAABAgQIEBgTEEtjB7cuAQIECBAgQIAAAQJNQCw1J1MECBAgQIAAAQIECIwJiKWxg1uXAAECBAgQIECAAIEmIJaakykCBAgQIECAAAECBMYExNLYwa1LgAABAgQIECBAgEATEEvNyRQBAgQIECBAgAABAmMCYmns4NYlQIAAAQIECBAgQKAJiKXmZIoAAQIECBAgQIAAgTEBsTR2cOsSIECAAAECBAgQINAExFJzMkWAAAECBAgQIECAwJiAWBo7uHUJECBAgAABAgQIEGgCYqk5mSJAgAABAgQIECBAYExALI0d3LoECBAgQIAAAQIECDQBsdScTBEgQIAAAQIECBAgMCYglsYObl0CBAgQIECAAAECBJqAWGpOpggQIECAAAECBAgQGBMQS2MHty4BAgQIECBAgAABAk1ALDUnUwQIECBAgAABAgQIjAmIpbGDW5cAAQIECBAgQIAAgSYglpqTKQIECBAgQIAAAQIExgTE0tjBrUuAAAECBAgQIECAQBMQS83JFAECBAgQIECAAAECYwJiaezg1iVAgAABAgQIECBAoAmIpeZkigABAgQIECBAgACBMQGxNHZw6xIgQIAAAQIECBAg0ATEUnMyRYAAAQIECBAgQIDAmIBYGju4dQkQIECAAAECBAgQaAJiqTmZIkCAAAECBAgQIEBgTEAsjR3cugQIECBAgAABAgQINAGx1JxMESBAgAABAgQIECAwJiCWxg5uXQIECBAgQIAAAQIEmoBYak6mCBAgQIAAAQIECBAYExBLYwe3LgECBAgQIECAAAECTUAsNSdTBAgQIECAAAECBAiMCYilsYNblwABAgQIECBAgACBJiCWmpMpAgQIECBAgAABAgTGBMTS2MGtS4AAAQIECBAgQIBAExBLzckUAQIECBAgQIAAAQJjAmJp7ODWJUCAAAECBAgQIECgCYil5mSKAAECBAgQIECAAIExAbE0dnDrEiBAgAABAgQIECDQBMRSczJFgAABAgQIECBAgMCYgFgaO7h1CRAgQIAAAQIECBBoAmKpOZkiQIAAAQIECBAgQGBMQCyNHdy6BAgQIECAAAECBAg0AbHUnEwRIECAAAECBAgQIDAmIJbGDm5dAgQIECBAgAABAgSagFhqTqYIECBAgAABAgQIEBgTEEtjB7cuAQIECBAgQIAAAQJNQCw1J1MECBAgQIAAAQIECIwJiKWxg1uXAAECBAgQIECAAIEmIJaakykCBAgQIECAAAECBMYExNLYwa1LgAABAgQIECBAgEATEEvNyRQBAgQIECBAgAABAmMCYmns4NYlQIAAAQIECBAgQKAJiKXmZIoAAQIECBAgQIAAgTEBsTR2cOsSIECAAAECBAgQINAExFJzMkWAAAECBAgQIECAwJiAWBo7uHUJECBAgAABAgQIEGgCYqk5mSJAgAABAgQIECBAYExALI0d3LoECBAgQIAAAQIECDQBsdScTBEgQIAAAQIECBAgMCYglsYObl0CBAgQIECAAAECBJqAWGpOpggQIECAAAECBAgQGBMQS2MHty4BAgQIECBAgAABAk1ALDUnUwQIECBAgAABAgQIjAn8tBYCaSTAKdcAAAAASUVORK5CYII=","_BorderWidth":1.482,"_Opacity":1,"__serializedExpressions__":["_Position","_Extent","_Padding","_BorderColor","_Fill"],"__LivelyClassName__":"DrawingCanvasShape","__SourceModuleName__":"Global.users.robertkrahn.Canvas","_Position":"lively.pt(0.0,0.0)","_Extent":"lively.pt(843.0,616.0)","_Padding":"lively.rect(0,0,0,0)","_BorderColor":"Color.rgb(95,94,95)","_Fill":"Color.rgba(255,255,255,0)"},"2":{"morph":{"__isSmartRef__":true,"id":0},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"3":{"resizeWidth":true,"resizeHeight":true},"4":{"partName":"DrawingCanvasMorph","requiredModules":[],"partsSpaceName":"PartsBin/Astrid/","comment":"Empty, transparent canvas with some aids to draw on with pointers and fingers","changes":[{"__isSmartRef__":true,"id":5},{"__isSmartRef__":true,"id":6},{"__isSmartRef__":true,"id":7},{"__isSmartRef__":true,"id":8},{"__isSmartRef__":true,"id":9},{"__isSmartRef__":true,"id":10},{"__isSmartRef__":true,"id":11},{"__isSmartRef__":true,"id":12},{"__isSmartRef__":true,"id":13},{"__isSmartRef__":true,"id":14},{"__isSmartRef__":true,"id":15},{"__isSmartRef__":true,"id":16}],"migrationLevel":8,"__serializedExpressions__":["lastModifiedDate"],"__LivelyClassName__":"lively.PartsBin.PartsBinMetaInfo","__SourceModuleName__":"Global.lively.PartsBin","lastModifiedDate":"new Date(\"Thu Nov 13 2014 16:40:56 GMT-0800 (PST)\")"},"5":{"author":"athomschke","message":"implemented show erase button","id":"45895BEB-8BC9-4C67-A1E6-C87A15D346D4","__serializedExpressions__":["date"],"date":"new Date(\"Thu Nov 13 2014 16:39:19 GMT-0800 (PST)\")"},"6":{"author":"null","message":"implemented show and hide history slider","id":"52AD802D-CE21-42CF-B308-B68816E7AE96","__serializedExpressions__":["date"],"date":"new Date(\"Wed Nov 12 2014 10:47:39 GMT-0800 (PST)\")"},"7":{"author":"athomschke","message":"adding added morph to owner while keeping canvas in foreground","id":"E1299D6A-7A3C-477F-9A9B-F682E650A87D","__serializedExpressions__":["date"],"date":"new Date(\"Tue Nov 04 2014 14:01:49 GMT-0800 (PST)\")"},"8":{"author":"athomschke","message":"initial","id":"BA153065-45C7-4C69-A7B9-426107E82C84","__serializedExpressions__":["date"],"date":"new Date(\"Tue Nov 04 2014 13:43:08 GMT-0800 (PST)\")"},"9":{"author":"athomschke","message":"initial","id":"3271B3BE-5414-4C31-981E-757EBD282205","__serializedExpressions__":["date"],"date":"new Date(\"Tue Nov 04 2014 13:26:11 GMT-0800 (PST)\")"},"10":{"author":"athomschke","message":"adding a morph triggers it to be added to owner","id":"FD8C4C2D-CF6C-4E34-8C1B-3F548B63BDBD","__serializedExpressions__":["date"],"date":"new Date(\"Tue Nov 04 2014 13:58:26 GMT-0800 (PST)\")"},"11":{"author":"null","message":"implemented history functionality. Use HistorySlider to navigate.","id":"E00F597A-CFC4-4CD6-AB18-11525CE0BB35","__serializedExpressions__":["date"],"date":"new Date(\"Mon Nov 10 2014 15:30:21 GMT-0800 (PST)\")"},"12":{"author":"null","message":"added time information to history","id":"F264FC5B-D4C1-41CA-9885-8A25340691DA","__serializedExpressions__":["date"],"date":"new Date(\"Mon Nov 10 2014 15:38:45 GMT-0800 (PST)\")"},"13":{"author":"null","message":"more steady colors for time chunking ","id":"25C17D8D-4585-47C9-ACF3-062C6B8E55D9","__serializedExpressions__":["date"],"date":"new Date(\"Tue Nov 11 2014 13:46:07 GMT-0800 (PST)\")"},"14":{"author":"athomschke","message":"fixed colors","id":"EF761A7E-112B-4AB2-9177-714959C36504","__serializedExpressions__":["date"],"date":"new Date(\"Wed Nov 12 2014 18:08:13 GMT-0800 (PST)\")"},"15":{"author":"athomschke","message":"meh","id":"14783744-AB94-43B8-81DC-90A4F091392C","__serializedExpressions__":["date"],"date":"new Date(\"Thu Nov 13 2014 16:40:53 GMT-0800 (PST)\")"},"16":{"__serializedExpressions__":["date"],"author":"athomschke","message":"weird.","id":"EB6E1700-0431-46C8-B408-B1F6C3F5DB73","date":"new Date(\"Mon Nov 17 2014 10:59:39 GMT-0800 (PST)\")"},"17":{"startDrawing":{"__isSmartRef__":true,"id":18},"finishShape":{"__isSmartRef__":true,"id":21},"drawTo":{"__isSmartRef__":true,"id":24},"onMouseDown":{"__isSmartRef__":true,"id":27},"onMouseMove":{"__isSmartRef__":true,"id":34},"onMouseUp":{"__isSmartRef__":true,"id":41},"getPenColor":{"__isSmartRef__":true,"id":48},"$$addToHistory":{"__isSmartRef__":true,"id":51},"$$removeFromHistory":{"__isSmartRef__":true,"id":54},"goToPointInHistory":{"__isSmartRef__":true,"id":57},"reset":{"__isSmartRef__":true,"id":60},"drawStroke":{"__isSmartRef__":true,"id":63},"repeat":{"__isSmartRef__":true,"id":66},"recordStroke":{"__isSmartRef__":true,"id":69},"displayChunks":{"__isSmartRef__":true,"id":72},"highlightObject":{"__isSmartRef__":true,"id":75},"aggregateChunks":{"__isSmartRef__":true,"id":78},"setDirectionChunks":{"__isSmartRef__":true,"id":81},"setSpaceChunks":{"__isSmartRef__":true,"id":84},"setTimeChunks":{"__isSmartRef__":true,"id":87},"getStrokeHistory":{"__isSmartRef__":true,"id":90},"showHistorySlider":{"__isSmartRef__":true,"id":93},"showEraseButton":{"__isSmartRef__":true,"id":96}},"18":{"varMapping":{"__isSmartRef__":true,"id":19},"source":"function startDrawing(aPos) {\n    if (this.currentPenPosition) {\n        alert('Already drawing');\n    } else {\n        this.goToPointInHistory(this.pointInHistory);\n        delete this.timeChunks;\n        delete this.spaceChunks;\n        delete this.directionChunks;\n        if (this.pointInHistory < this.history.length - 1) {\n            this.history = this.history.concat(\n                    [{type: 'clear', time: Date.now() }],\n                    this.history.slice(0, this.pointInHistory));\n            this.pointInHistory = this.history.length - 1;\n            lively.bindings.signal(this, 'history', this.history);\n        }\n        this.currentPenPosition = aPos;   \n    }\n}","funcProperties":{"__isSmartRef__":true,"id":20},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"19":{"this":{"__isSmartRef__":true,"id":0}},"20":{"user":"null","tags":["interface"],"__serializedExpressions__":["timestamp"],"timestamp":"new Date(\"Tue Nov 11 2014 17:39:00 GMT-0800 (PST)\")"},"21":{"varMapping":{"__isSmartRef__":true,"id":22},"source":"function finishShape(aPos) {\n    if (this.currentPenPosition) {\n        this.drawStroke(this.currentPenPosition, aPos, this.getPenColor());\n        this.recordStroke(this.currentPenPosition, aPos, this.getPenColor());\n        delete this.currentPenPosition;\n    }\n}","funcProperties":{"__isSmartRef__":true,"id":23},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"22":{"this":{"__isSmartRef__":true,"id":0}},"23":{"user":"null","tags":["interface"],"__serializedExpressions__":["timestamp"],"timestamp":"new Date(\"Mon Nov 10 2014 15:02:52 GMT-0800 (PST)\")"},"24":{"varMapping":{"__isSmartRef__":true,"id":25},"source":"function drawTo(aPos) {\n    if (this.currentPenPosition) {\n        this.drawStroke(this.currentPenPosition, aPos, this.getPenColor());\n        this.recordStroke(this.currentPenPosition, aPos, this.getPenColor());\n        this.currentPenPosition = aPos;\n    }\n}","funcProperties":{"__isSmartRef__":true,"id":26},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"25":{"this":{"__isSmartRef__":true,"id":0}},"26":{"user":"null","tags":["interface"],"__serializedExpressions__":["timestamp"],"timestamp":"new Date(\"Mon Nov 10 2014 15:02:52 GMT-0800 (PST)\")"},"27":{"varMapping":{"__isSmartRef__":true,"id":28},"source":"function onMouseDown(evt) {\n    this.startDrawing(evt.getPositionIn(this))\n}","funcProperties":{"__isSmartRef__":true,"id":33},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"28":{"this":{"__isSmartRef__":true,"id":0},"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":29}},"29":{"$super":{"__isSmartRef__":true,"id":30}},"30":{"varMapping":{"__isSmartRef__":true,"id":31},"source":"function () {\n                try {\n                    // FIXME super is supposed to be static\n                    return Object.getPrototypeOf(obj)[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":32},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"31":{"obj":{"__isSmartRef__":true,"id":0},"name":"onMouseDown"},"32":{},"33":{"user":"null","__serializedExpressions__":["timestamp"],"timestamp":"new Date(\"Mon Nov 10 2014 13:26:56 GMT-0800 (PST)\")"},"34":{"varMapping":{"__isSmartRef__":true,"id":35},"source":"function onMouseMove(evt) {\n    this.drawTo(evt.getPositionIn(this));\n}","funcProperties":{"__isSmartRef__":true,"id":40},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"35":{"this":{"__isSmartRef__":true,"id":0},"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":36}},"36":{"$super":{"__isSmartRef__":true,"id":37}},"37":{"varMapping":{"__isSmartRef__":true,"id":38},"source":"function () {\n                try {\n                    // FIXME super is supposed to be static\n                    return Object.getPrototypeOf(obj)[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":39},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"38":{"obj":{"__isSmartRef__":true,"id":0},"name":"onMouseMove"},"39":{},"40":{"user":"null","__serializedExpressions__":["timestamp"],"timestamp":"new Date(\"Mon Nov 10 2014 14:44:21 GMT-0800 (PST)\")"},"41":{"varMapping":{"__isSmartRef__":true,"id":42},"source":"function onMouseUp(evt) {\n    this.finishShape(evt.getPositionIn(this));\n}","funcProperties":{"__isSmartRef__":true,"id":47},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"42":{"this":{"__isSmartRef__":true,"id":0},"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":43}},"43":{"$super":{"__isSmartRef__":true,"id":44}},"44":{"varMapping":{"__isSmartRef__":true,"id":45},"source":"function () {\n                try {\n                    // FIXME super is supposed to be static\n                    return Object.getPrototypeOf(obj)[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":46},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"45":{"obj":{"__isSmartRef__":true,"id":0},"name":"onMouseUp"},"46":{},"47":{"user":"athomschke","__serializedExpressions__":["timestamp"],"timestamp":"new Date(\"Mon Oct 27 2014 16:17:26 GMT-0700 (PDT)\")"},"48":{"varMapping":{"__isSmartRef__":true,"id":49},"source":"function getPenColor() {\n    return this.penColor || Global.Color.black;\n}","funcProperties":{"__isSmartRef__":true,"id":50},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"49":{"this":{"__isSmartRef__":true,"id":0}},"50":{"user":"null","__serializedExpressions__":["timestamp"],"timestamp":"new Date(\"Mon Nov 10 2014 13:26:56 GMT-0800 (PST)\")"},"51":{"varMapping":{"__isSmartRef__":true,"id":52},"source":"function addToHistory(obj) {\n    this.history.push(obj);\n}","funcProperties":{"__isSmartRef__":true,"id":53},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"52":{"this":{"__isSmartRef__":true,"id":0}},"53":{"user":"null","__serializedExpressions__":["timestamp"],"timestamp":"new Date(\"Mon Nov 10 2014 13:26:56 GMT-0800 (PST)\")"},"54":{"varMapping":{"__isSmartRef__":true,"id":55},"source":"function removeFromHistory(obj) {\n    this.history.remove(obj);\n}","funcProperties":{"__isSmartRef__":true,"id":56},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"55":{"this":{"__isSmartRef__":true,"id":0}},"56":{"user":"null","__serializedExpressions__":["timestamp"],"timestamp":"new Date(\"Mon Nov 10 2014 13:26:56 GMT-0800 (PST)\")"},"57":{"varMapping":{"__isSmartRef__":true,"id":58},"source":"function goToPointInHistory(idx) {\n    this.clear();\n    for (var i = 0; i<idx; i++) {\n        this.repeat(this.history[i]);\n    }\n    this.pointInHistory = idx;\n    \n}","funcProperties":{"__isSmartRef__":true,"id":59},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"58":{"this":{"__isSmartRef__":true,"id":0}},"59":{"user":"null","__serializedExpressions__":["timestamp"],"timestamp":"new Date(\"Tue Nov 11 2014 12:05:24 GMT-0800 (PST)\")"},"60":{"varMapping":{"__isSmartRef__":true,"id":61},"source":"function reset() {\n    this.clear();\n    this.history = [];\n    this.chunkColors = [];\n    for (var i = this.history.length; i >= 0; i--){\n        this.history.remove(this.history[i]);\n    }\n    delete this.timeChunks;\n    delete this.spaceChunks;\n    delete this.directionChunks;\n    lively.bindings.signal(this, 'history', 'reset');\n    lively.bindings.disconnectAll(this);\n    this.pointInHistory = 0;\n    this.historySlider && this.historySlider.remove();\n    delete this.historySlider;\n    this.eraseButton && this.eraseButton.remove();\n    delete this.eraseButton;\n}","funcProperties":{"__isSmartRef__":true,"id":62},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"61":{"this":{"__isSmartRef__":true,"id":0}},"62":{"user":"athomschke","__serializedExpressions__":["timestamp"],"timestamp":"new Date(\"Thu Nov 13 2014 16:40:44 GMT-0800 (PST)\")"},"63":{"varMapping":{"__isSmartRef__":true,"id":64},"source":"function drawStroke(from, to, color) {\n    var ctxt2d = this.renderContext().ctxt2d;\n    ctxt2d.strokeStyle = '#'+color.toHexString();\n    ctxt2d.beginPath();\n    ctxt2d.moveTo(from.x, from.y);\n    ctxt2d.lineTo(to.x, to.y);\n    ctxt2d.stroke();\n}","funcProperties":{"__isSmartRef__":true,"id":65},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"64":{"this":{"__isSmartRef__":true,"id":0}},"65":{"user":"athomschke","__serializedExpressions__":["timestamp"],"timestamp":"new Date(\"Wed Nov 12 2014 18:07:59 GMT-0800 (PST)\")"},"66":{"varMapping":{"__isSmartRef__":true,"id":67},"source":"function repeat(historyEntry) {\n    switch (historyEntry.type) {\n        case 'clear': {\n            this.clear();\n            break;\n        }\n        case 'drawStroke': {\n            this.drawStroke(\n                historyEntry.from,\n                historyEntry.to,\n                historyEntry.color)\n        }\n    }\n}","funcProperties":{"__isSmartRef__":true,"id":68},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"67":{"this":{"__isSmartRef__":true,"id":0}},"68":{"user":"null","__serializedExpressions__":["timestamp"],"timestamp":"new Date(\"Mon Nov 10 2014 15:01:58 GMT-0800 (PST)\")"},"69":{"varMapping":{"__isSmartRef__":true,"id":70},"source":"function recordStroke(from, to, color) {\n    this.history.push({ \n        type: 'drawStroke',\n        from: from, \n        to: to, \n        color: color,\n        time: Date.now()\n    })\n    this.pointInHistory = this.history.length - 1;\n    lively.bindings.signal(this, 'history', this.history);\n}","funcProperties":{"__isSmartRef__":true,"id":71},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"70":{"this":{"__isSmartRef__":true,"id":0}},"71":{"user":"null","__serializedExpressions__":["timestamp"],"timestamp":"new Date(\"Mon Nov 10 2014 15:38:12 GMT-0800 (PST)\")"},"72":{"varMapping":{"__isSmartRef__":true,"id":73},"source":"function displayChunks() {\n    var chunks = this.aggregateChunks();\n    this.clear();\n    chunks.each(function(chunk, chunkNumber) {\n        var color = this.chunkColors.length > chunkNumber ? this.chunkColors[chunkNumber] : this.chunkColors.push(Global.Color.random());\n        chunk.each(function(entry) {\n            this.repeat(Object.merge([entry, {color: color}]))\n        }.bind(this))\n    }.bind(this))\n}","funcProperties":{"__isSmartRef__":true,"id":74},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"73":{"this":{"__isSmartRef__":true,"id":0}},"74":{"user":"null","__serializedExpressions__":["timestamp"],"timestamp":"new Date(\"Tue Nov 11 2014 17:42:58 GMT-0800 (PST)\")"},"75":{"varMapping":{"__isSmartRef__":true,"id":76},"source":"function highlightObject(anArray) {\n    debugger\n    var bounds = anArray.reduce(function(a,b) {\n        return {\n            minX: Math.min(b.from.x, b.to.x, a.minX),\n            maxX: Math.max(b.from.x, b.to.x, a.maxX),\n            minY: Math.min(b.from.y, b.to.y, a.minY),\n            maxY: Math.max(b.from.y, b.to.y, a.maxY)\n        }\n    }, {minX: this.getExtent().x, maxX: 0, minY: this.getExtent().y, maxY: 0})\n    var pos = this.getPositionInWorld();\n    show(rect(bounds.minX + pos.x, bounds.minY + pos.y, bounds.maxX - bounds.minX, bounds.maxY - bounds.minY));\n}","funcProperties":{"__isSmartRef__":true,"id":77},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"76":{"this":{"__isSmartRef__":true,"id":0}},"77":{"user":"null","__serializedExpressions__":["timestamp"],"timestamp":"new Date(\"Mon Nov 10 2014 17:03:00 GMT-0800 (PST)\")"},"78":{"varMapping":{"__isSmartRef__":true,"id":79},"source":"function aggregateChunks() {\n    var timeChunk, spaceChunk, directionChunk, aggregatedChunk;\n    timeChunk = spaceChunk = directionChunk = aggregatedChunk = 0;\n    var all = [this.history];\n    var aggregate = [[]];\n    this.getStrokeHistory().each(function(entry) {\n        var newChunk = false;\n        if (!(this.timeChunks || all)[timeChunk].include(entry)) {\n            newChunk = true;\n            timeChunk += 1;\n        }\n        if (!(this.spaceChunks || all)[spaceChunk].include(entry)) {\n            newChunk = true;\n            spaceChunk += 1;\n        }\n        if (!(this.directionChunks || all)[directionChunk].include(entry)) {\n            newChunk = true;\n            directionChunk += 1;\n        }\n        if (newChunk) {\n            aggregatedChunk += 1;\n            aggregate[aggregatedChunk] = [];\n        }\n        aggregate[aggregatedChunk].push(entry);        \n    }.bind(this))\n    return aggregate\n}","funcProperties":{"__isSmartRef__":true,"id":80},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"79":{"this":{"__isSmartRef__":true,"id":0}},"80":{"user":"null","__serializedExpressions__":["timestamp"],"timestamp":"new Date(\"Tue Nov 11 2014 17:39:56 GMT-0800 (PST)\")"},"81":{"varMapping":{"__isSmartRef__":true,"id":82},"source":"function setDirectionChunks(treshold) {\n    // threshold between 0 and exclusive Pi (degrees)\n    this.directionChunks = [];\n    var chunkIndex = -1;\n    var vector = function(entry) {\n        return {\n            x: entry.to.x - entry.from.x,\n            y: entry.to.y - entry.from.y\n        };\n    };\n    var scalar = function(v1, v2) {\n        return (v1.x*v2.x) + (v1.y*v2.y);\n    };\n    var length = function(v) {\n        return Math.pow((Math.pow(v.x, 2) + Math.pow(v.y, 2)), .5)\n    };\n    var rad = function(v1,v2) {\n        return Math.acos(scalar(v1,v2) / (length(v1) * length(v2)));\n    };\n    this.getStrokeHistory().each(function(prev, cur, idx, history) {\n        if (prev && rad(vector(prev), vector(cur)) < treshold) {\n            this.directionChunks[chunkIndex].push(cur);\n        } else {\n            chunkIndex += 1;\n            this.directionChunks[chunkIndex] = [];\n        }\n        return cur\n    }.bind(this))\n    this.displayChunks();\n}","funcProperties":{"__isSmartRef__":true,"id":83},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"82":{"this":{"__isSmartRef__":true,"id":0}},"83":{"user":"null","__serializedExpressions__":["timestamp"],"timestamp":"new Date(\"Tue Nov 11 2014 17:36:28 GMT-0800 (PST)\")"},"84":{"varMapping":{"__isSmartRef__":true,"id":85},"source":"function setSpaceChunks(treshold) {\n    this.spaceChunks = [[]];\n    var chunkIndex = 0;\n    var dist = function(a,b) {\n        return Math.pow((Math.pow(a.x-b.x, 2) + Math.pow(a.y-b.y, 2)),.5)\n    };\n    this.getStrokeHistory().each(function(entry, idx, history) {\n        if (dist(entry.from, entry.to) < treshold) {\n            this.spaceChunks[chunkIndex].push(entry);\n        } else {\n            chunkIndex += 1;\n            this.spaceChunks[chunkIndex] = [entry];\n        }\n    }.bind(this))\n    this.displayChunks();\n}","funcProperties":{"__isSmartRef__":true,"id":86},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"85":{"this":{"__isSmartRef__":true,"id":0}},"86":{"user":"null","__serializedExpressions__":["timestamp"],"timestamp":"new Date(\"Tue Nov 11 2014 17:46:19 GMT-0800 (PST)\")"},"87":{"varMapping":{"__isSmartRef__":true,"id":88},"source":"function setTimeChunks(treshold) {\n    this.timeChunks = [];\n    var chunkIndex = -1;\n    this.getStrokeHistory().reduce(function(prev, cur, idx, history) {\n        if (prev && cur.time - prev.time < treshold) {\n            this.timeChunks[chunkIndex].push(cur);\n        } else {\n            chunkIndex += 1;\n            this.timeChunks[chunkIndex] = [cur];\n        }\n        return cur;\n    }.bind(this), undefined)\n    this.displayChunks();\n}","funcProperties":{"__isSmartRef__":true,"id":89},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"88":{"this":{"__isSmartRef__":true,"id":0}},"89":{"user":"null","__serializedExpressions__":["timestamp"],"timestamp":"new Date(\"Tue Nov 11 2014 17:36:49 GMT-0800 (PST)\")"},"90":{"varMapping":{"__isSmartRef__":true,"id":91},"source":"function getStrokeHistory() {\n    return this.history.select(function(ea) { return ea.type === 'drawStroke' })\n}","funcProperties":{"__isSmartRef__":true,"id":92},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"91":{"this":{"__isSmartRef__":true,"id":0}},"92":{"user":"null","tags":[],"__serializedExpressions__":["timestamp"],"timestamp":"new Date(\"Tue Nov 11 2014 17:36:05 GMT-0800 (PST)\")"},"93":{"varMapping":{"__isSmartRef__":true,"id":94},"source":"function showHistorySlider(bool) {\n    var doShow = typeof bool === 'undefined' ? true : bool;\n    if (doShow) {\n        if (!this.historySlider) {\n            this.historySlider = $world.openPartItem('HistorySlider', 'PartsBin/Astrid');\n        }\n        this.historySlider.showOnCanvas(this);\n    } else {\n        if (this.historySlider) {\n            this.historySlider.reset();\n            this.historySlider.remove();\n        }\n    }\n}","funcProperties":{"__isSmartRef__":true,"id":95},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"94":{"this":{"__isSmartRef__":true,"id":0}},"95":{"user":"null","__serializedExpressions__":["timestamp"],"timestamp":"new Date(\"Wed Nov 12 2014 10:46:51 GMT-0800 (PST)\")"},"96":{"varMapping":{"__isSmartRef__":true,"id":97},"source":"function showEraseButton(bool) {\n    if ((typeof bool === 'undefined') || bool) {\n        this.eraseButton = this.eraseButton || $world.openPartItem('CanvasContentEraser', 'PartsBin/Astrid');\n        this.owner.addMorph(this.eraseButton)\n        this.eraseButton.setPosition(this.bounds().topRight().subPt(pt(this.eraseButton.getExtent().x, 0)).subPt(pt(5, -5)));\n        this.eraseButton.canvasMorph = this;\n    } else {\n        this.eraseButton && this.eraseButton.remove();\n    }\n}","funcProperties":{"__isSmartRef__":true,"id":98},"__LivelyClassName__":"lively.Closure","__SourceModuleName__":"Global.lively.lang.Closure"},"97":{"this":{"__isSmartRef__":true,"id":0}},"98":{"user":"athomschke","__serializedExpressions__":["timestamp"],"timestamp":"new Date(\"Thu Nov 13 2014 16:40:12 GMT-0800 (PST)\")"},"isSimplifiedRegistry":true}}