{
  "draw2d": [
    {
      "type": "shape_designer.figure.ExtPolygon",
      "id": "6e834d54-6700-ad9b-ab50-0faefeaea483",
      "x": 7985.146099999998,
      "y": 7980,
      "width": 25,
      "height": 40,
      "alpha": 1,
      "selectable": true,
      "draggable": true,
      "angle": 0,
      "userData": {
        "baseClass": "draw2d.SetFigure",
        "code": "/**\n * Generated Code for the Draw2D touch HTML5 lib.\n * File will be generated if you save the *.shape file.\n *\n * by 'Draw2D Shape Designer'\n *\n * Custom JS code to tweak the standard behaviour of the generated\n * shape. add your custom code and event handler here.\n *\n * Looks disconcerting - extending my own class. But this is a good method to\n * merge basic code and override them with custom methods.\n */\ntestShape = testShape.extend({\n\n    init: function(attr, setter, getter){\n         this._super(attr, setter, getter);\n\n        this.attr({resizeable:false});\n        this.installEditPolicy(new draw2d.policy.figure.AntSelectionFeedbackPolicy());\n    },\n\n    /**\n     *  Called by the simulator for every calculation\n     *  loop\n     *  @param {Object} context context where objects can store or handover global variables to other objects.\n     *  @required\n     **/\n    calculate:function( context)\n    {\n        var i1 = this.getInputPort(0);\n        var i2 = this.getInputPort(1);\n        var o1 = this.getOutputPort(0);\n        \n        o1.setValue(!(i1.getValue() || i2.getValue()));\n    },\n\n\n    /**\n     *  Called if the simulation mode is starting\n     *  @required\n     **/\n    onStart:function(context)\n    {\n    },\n\n    /**\n     *  Called if the simulation mode is stopping\n     *  @required\n     **/\n    onStop:function(context)\n    {\n    },\n\n    /**\n     * Get the simulator a hint which kind of hardware the shapes requires or supports\n     * This helps the simulator to bring up some dialogs and messages if any new hardware is connected/get lost\n     * and your are running a circuit which needs this kind of hardware...\n     **/\n    getRequiredHardware: function(){\n      return {\n        raspi: false,\n        arduino: false\n      }\n    }\n\n});",
        "markdown": "# NOR Gate\n\n## Description\nA **NOR** gate is logically an inverted OR gate. \nIt behaves according to the truth table on the bottom.\n\n\n**Therefore, the output is always 0 except when all the \ninputs are 0.**\n\n## Logic table\n\n| INPUT 1   | INPUT   |  OUTPUT    |\n|:---------:|:-------:|:----------:|\n| Low       | Low     |  `High`       |\n| `High`      | Low     |  Low       |\n| Low       | `High`    |  Low       |\n| `High`      | `High`    |  Low    |\n\n",
        "name": "shape"
      },
      "cssClass": "shape_designer_figure_PolyCircle",
      "ports": [],
      "bgColor": "rgba(252,252,252,1)",
      "color": "rgba(27,27,27,1)",
      "stroke": 1,
      "radius": 0,
      "dasharray": null,
      "vertices": [
        {
          "x": 7985.146099999998,
          "y": 8019.992866146254
        },
        {
          "x": 7985.247611537633,
          "y": 8020
        },
        {
          "x": 7989.571188685783,
          "y": 8019.696155060245
        },
        {
          "x": 7993.7633961301235,
          "y": 8018.793852415718
        },
        {
          "x": 7997.696855768815,
          "y": 8017.320508075689
        },
        {
          "x": 8001.252051421165,
          "y": 8015.320888862379
        },
        {
          "x": 8004.32096026629,
          "y": 8012.855752193731
        },
        {
          "x": 8006.810335061875,
          "y": 8010
        },
        {
          "x": 8008.6445374144405,
          "y": 8006.840402866514
        },
        {
          "x": 8009.767836013655,
          "y": 8003.472963553339
        },
        {
          "x": 8010.146099999998,
          "y": 8000
        },
        {
          "x": 8009.767836013655,
          "y": 7996.527036446661
        },
        {
          "x": 8008.6445374144405,
          "y": 7993.159597133486
        },
        {
          "x": 8006.810335061875,
          "y": 7990
        },
        {
          "x": 8004.32096026629,
          "y": 7987.144247806269
        },
        {
          "x": 8001.252051421165,
          "y": 7984.679111137621
        },
        {
          "x": 7997.696855768815,
          "y": 7982.679491924311
        },
        {
          "x": 7993.7633961301235,
          "y": 7981.206147584282
        },
        {
          "x": 7989.571188685783,
          "y": 7980.303844939755
        },
        {
          "x": 7985.247611537633,
          "y": 7980
        },
        {
          "x": 7985.146099999998,
          "y": 7980.007133853746
        },
        {
          "x": 7985.146099999998,
          "y": 8019.992866146254
        }
      ],
      "blur": 0,
      "filters": [
        {
          "name": "shape_designer.filter.PositionFilter"
        },
        {
          "name": "shape_designer.filter.SizeFilter"
        },
        {
          "name": "shape_designer.filter.FillColorFilter"
        },
        {
          "name": "shape_designer.filter.StrokeFilter"
        }
      ]
    },
    {
      "type": "shape_designer.figure.ExtLine",
      "id": "324bc5bd-9b79-67f1-c45a-fb367513d4b4",
      "alpha": 1,
      "selectable": true,
      "draggable": true,
      "angle": 0,
      "userData": {
        "name": "Line"
      },
      "cssClass": "shape_designer_figure_ExtLine",
      "stroke": 1,
      "color": "rgba(0,0,0,1)",
      "outlineStroke": 0,
      "outlineColor": "rgba(0,0,0,0)",
      "policy": "draw2d.policy.line.VertexSelectionFeedbackPolicy",
      "vertex": [
        {
          "x": 8004.588499999997,
          "y": 8011.555299999987
        },
        {
          "x": 7985.893499999997,
          "y": 8011.555299999987
        }
      ],
      "router": "draw2d.layout.connection.VertexRouter",
      "radius": "",
      "filters": [
        {
          "name": "shape_designer.filter.StrokeFilter"
        }
      ]
    },
    {
      "type": "shape_designer.figure.ExtLine",
      "id": "5c1944ab-18cf-eafe-deaf-14e41e03157d",
      "alpha": 1,
      "selectable": true,
      "draggable": true,
      "angle": 0,
      "userData": {
        "name": "Line"
      },
      "cssClass": "shape_designer_figure_ExtLine",
      "stroke": 1,
      "color": "rgba(0,0,0,1)",
      "outlineStroke": 0,
      "outlineColor": "rgba(0,0,0,0)",
      "policy": "draw2d.policy.line.VertexSelectionFeedbackPolicy",
      "vertex": [
        {
          "x": 8004.853900000003,
          "y": 7988.138900000004
        },
        {
          "x": 7986.158900000003,
          "y": 7988.138900000004
        }
      ],
      "router": "draw2d.layout.connection.VertexRouter",
      "radius": "",
      "filters": [
        {
          "name": "shape_designer.filter.StrokeFilter"
        }
      ]
    },
    {
      "type": "shape_designer.figure.ExtPort",
      "id": "19fd1dcb-f9e4-190d-a717-7444122d9964",
      "x": 8007.146099999998,
      "y": 7995,
      "width": 10,
      "height": 10,
      "alpha": 1,
      "selectable": true,
      "draggable": true,
      "angle": 0,
      "userData": {
        "name": "output",
        "type": "Output",
        "direction": 1,
        "fanout": 20
      },
      "cssClass": "shape_designer_figure_ExtPort",
      "ports": [],
      "bgColor": "rgba(55,177,222,1)",
      "color": "rgba(27,27,27,1)",
      "stroke": 1,
      "dasharray": null,
      "filters": [
        {
          "name": "shape_designer.filter.PositionFilter"
        },
        {
          "name": "shape_designer.filter.FanoutFilter"
        },
        {
          "name": "shape_designer.filter.PortDirectionFilter"
        },
        {
          "name": "shape_designer.filter.PortTypeFilter"
        }
      ]
    },
    {
      "type": "shape_designer.figure.ExtPort",
      "id": "31c229c7-f64e-5b82-2349-767cb9cd57be",
      "x": 7980.042899999998,
      "y": 8007,
      "width": 10,
      "height": 10,
      "alpha": 1,
      "selectable": true,
      "draggable": true,
      "angle": 0,
      "userData": {
        "name": "input1",
        "type": "Input",
        "direction": 3,
        "fanout": 20
      },
      "cssClass": "shape_designer_figure_ExtPort",
      "ports": [],
      "bgColor": "rgba(55,177,222,1)",
      "color": "rgba(27,27,27,1)",
      "stroke": 1,
      "dasharray": null,
      "filters": [
        {
          "name": "shape_designer.filter.PositionFilter"
        },
        {
          "name": "shape_designer.filter.FanoutFilter"
        },
        {
          "name": "shape_designer.filter.PortDirectionFilter"
        },
        {
          "name": "shape_designer.filter.PortTypeFilter"
        }
      ]
    },
    {
      "type": "shape_designer.figure.ExtPort",
      "id": "7297563e-896e-648c-d774-7e1a662d65a4",
      "x": 7980.042899999998,
      "y": 7983.5,
      "width": 10,
      "height": 10,
      "alpha": 1,
      "selectable": true,
      "draggable": true,
      "angle": 0,
      "userData": {
        "name": "input0",
        "type": "Input",
        "direction": 3,
        "fanout": 20
      },
      "cssClass": "shape_designer_figure_ExtPort",
      "ports": [],
      "bgColor": "rgba(55,177,222,1)",
      "color": "rgba(27,27,27,1)",
      "stroke": 1,
      "dasharray": null,
      "filters": [
        {
          "name": "shape_designer.filter.PositionFilter"
        },
        {
          "name": "shape_designer.filter.FanoutFilter"
        },
        {
          "name": "shape_designer.filter.PortDirectionFilter"
        },
        {
          "name": "shape_designer.filter.PortTypeFilter"
        }
      ]
    },
    {
      "type": "shape_designer.figure.PolyCircle",
      "id": "c72b55b6-3ca4-3f64-d6b4-59969d3a25c3",
      "x": 8006.646099999998,
      "y": 7995.5,
      "width": 9,
      "height": 9,
      "alpha": 1,
      "selectable": true,
      "draggable": true,
      "angle": 0,
      "userData": {
        "name": "Circle"
      },
      "cssClass": "shape_designer_figure_PolyCircle",
      "ports": [],
      "bgColor": "rgba(0,0,0,1)",
      "color": "rgba(27,27,27,1)",
      "stroke": 0,
      "radius": 0,
      "dasharray": null,
      "blur": 0,
      "filters": [
        {
          "name": "shape_designer.filter.PositionFilter"
        },
        {
          "name": "shape_designer.filter.SizeFilter"
        },
        {
          "name": "shape_designer.filter.FillColorFilter"
        }
      ]
    }
  ],
  "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAA8CAYAAAAkNenBAAAFkElEQVRoQ+1aTUwbVxCetQG7/Bi1uAJBAwk3yKXFh+QGp8qFCyKVgByCAvk5NJcKlAqFXBwUIJUsV0KVWtrCBaQKkJEM5NAqIqTKgZIqEQ4oNHKMvV7beP2zi9fY2bVdPRdXNAJ7veufgPwkn/bNzPe9mTc7O2MMTsnCTgkPyBN53zyZ90jeIxk6gXxoZehgBavl5ZGampoKDMO+ikajDgDwhMNhRiqVlthsNj0AhAVbT6NgUiJKpbJMqVTeqKur+7ahoSFAkmTY5/NFKIqCnZ2d4rKysk2O41YZhlmVSCSPLBaLN434eKviRaS2tvaaWq2+p9FoSuKao9Eo+P1+eP78OTx79iy6uLgYMplMnEKhWPJ4PD8RBPE7bxRp2CiYyLu2I5EIuFwuWFhYiOj1ep/T6cTdbreOIIjJNOBMqiJtRA5bYhgGlpaWInNzc9Tm5uYbv99/F8fx5aRoRGzICJE4nkAgECM0Pj5Oer3ep4FA4KrZbPaJwHusaEIiKpWqcHd391OZTHZHpVJ9MTw8XHTu3LmUcXi9XtBqtaxerzdSFHXNbrf/lbKSJALHEqmuri7GMOzLaDT6YygUeiuVSkvPnDmDPXjwAJqbm1PGgRLD9PQ0jIyMuADgDo7jEykrSSBwLJGamppPOI7TUxTVGAwGESkoLS2FpqYm6O3tFYQhFArB+vo6ynAEy7L9LpfrV0GKjhBKFFofAsA3B7+YaEFBAZw9exYuXLgg2H44HAaHwwFGoxGXy+WXcBxfE6zskGBCj7Asu0DTNPLIB8gjCoUC1Gp1LETELJTVZmdnI6Ojo9uBQOA6QRB/iNGHZPnckYlQKBSK35GxsTFoaWkRazf2zhkaGmLW1tamNzY2bopVmDRrOZ3Oz+RyOcpaaqFZ6ziQNpst0t7e/pokyetWq3VVDJmMvkeSAUMhNj8/z2q12hWj0fh5sv2JnueUCAKGvNLZ2WnCcfw6juMrQsnknAhN0zA1NbU3MTHx89bW1tcnlgjHcbHqubu722KxWO6hLA8A6L5spUIq5x4hSRIGBwdhcvJ/RfI+ABgA4DYA7PAhlFMiHo8HNBoNjI+PH4U1CACoYr703hN59eoVnD9/PhFOGwBcPgi1hHxy5hFU4s/OzkJfX18igHRBQcH3HMcNJvNKnkiyE+LzfHt7GxobG092aCH0PC77QwDo4HMoOQutOLgE6XfxIP2aTwSR+Auxq6vLarVahw+9EF/yIRDfk3OPnJoShSAIVDS+sVqt105s0XhqynhUwnd0dLx2Op03cBx/nMqdeHdvwjtSXV2tBIBRDMMul5eXy3t6erD+/n4x9v6TPfSpO7OxsXFDrNJE3+yIhCYYDLZSFFVXVFQEKpUKWltb4fZtVJQKX/Hmw8jIyN+o+WC3258I1/av5LFEKisr6wHgT5IkP0ItHLQKCwuhoqIC9vdRlS18oU5+SUkJLpVKM98OOo7IxYsXUcddEAtUKBoMhqhOp9thGOaWzWZbEqToCCE+odXm8/lqZTJZrMvY1tYmKLRQy3RmZgbu37/vCofDd+12+w/pIpEwtNDDqqqqjyUSyRiGYd3l5eWyK1euYAMDAynbR01snU7Hzs3NvaRpui+rTew4WjR6O2pixYcNCqXl5WU0VnB7PJ6nfr//aqZGcxkpUeIE5ufnKaPRaN7b2xs6MYMelIkOj94cDgcavX1HEMQvfLwndo9gjyDg6H3w4sWL2KjAYDC8NZlMrEKheEjT9ITFYvlNLLhU5HkROTSe3ne73ZzX60XjacxsNhcrFIpNlmWfMAzzGMOwRziOe1IBkK69SYkgQwd/GLgV/8MAhmGMRCIpqa+v16+srHDpAiNGDy8iYgxkSzZPJFsnzddO3iN8Typb+/IeydZJ87WT9wjfk8rWvn8A5gopan8l19kAAAAASUVORK5CYII="
}