We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Allow for the injection of raw HTML code
Currently, the Widget library contains a `Paragraph` and a `PreText` widget allowing the user to put basic text on the rendered page.  Neither of these widgets allows for the inclusion of formatted text using HTML markup.  A widget should be added to support the inclusion of raw HTML.  The widget can be a simple div named div tag.


--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `bokeh/models/widgets/markups.py`
Content:
```
1 """ Various kinds of markup (static content) widgets.
2 
3 """
4 from __future__ import absolute_import
5 
6 from ...core.properties import abstract
7 from ...core.properties import Int, String
8 from .widget import Widget
9 
10 @abstract
11 class Markup(Widget):
12     """ Base class for HTML markup widget models. """
13 
14 class Paragraph(Markup):
15     """ A block (paragraph) of text.
16 
17     """
18 
19     text = String(default="", help="""
20     The contents of the widget.
21     """)
22 
23     width = Int(500, help="""
24     The width of the block in pixels.
25     """)
26 
27     height = Int(400, help="""
28     The height of the block in pixels.
29     """)
30 
31 
32 class PreText(Paragraph):
33     """ A block (paragraph) of pre-formatted text.
34 
35     """
36
```

Path: `examples/plotting/file/slider_callback_policy.py`
Content:
```
1 from bokeh.io import vform, output_file, show
2 from bokeh.models import CustomJS, Slider, Paragraph, PreText
3 
4 # NOTE: the JS functions to forvide the format code for strings is found the answer
5 # from the user fearphage at http://stackoverflow.com/questions/610406/javascript-equivalent-to-printf-string-format
6 callback = CustomJS(code="""
7     var s1 = slider1.get('value')
8     var s2 = slider2.get('value')
9     var s3 = slider3.get('value')
10 
11     if (!String.prototype.format) {
12       String.prototype.format = function() {
13         var args = arguments;
14         return this.replace(/{(\d+)}/g, function(match, number) {
15           return typeof args[number] != 'undefined'
16             ? args[number]
17             : match
18           ;
19         });
20       };
21     }
22 
23     para.set('text', "Slider Values\\n\\n  Slider 1: {0}\\n  Slider 2: {1}\\n  Slider 3: {2}".format(s1, s2, s3))
24 """)
25 
26 para = PreText(text = "Slider Values:\n\n  Slider 1: 0\n  Slider 2: 0\n  Slider 3: 0", width = 200, height = 150)
27 
28 s1 = Slider(title="Slider 1 (Continuous)", start=0, end=1000, value=0, step=1, callback=callback, callback_policy="continuous")
29 s2 = Slider(title="Slider 2 (Throttle)", start=0, end=1000, value=0, step=1, callback=callback, callback_policy="throttle", callback_throttle=2000)
30 s3 = Slider(title="Slider 3 (Mouse Up)", start=0, end=1000, value=0, step=1, callback=callback, callback_policy="mouseup")
31 
32 callback.args['para'] = para
33 callback.args['slider1'] = s1
34 callback.args['slider2'] = s2
35 callback.args['slider3'] = s3
36 
37 output_file('slider_callback_policy.html')
38 
39 show(vform(s1, s2, s3, para))
40
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/bokeh/models/widgets/markups.py b/bokeh/models/widgets/markups.py
--- a/bokeh/models/widgets/markups.py
+++ b/bokeh/models/widgets/markups.py
@@ -4,18 +4,13 @@
 from __future__ import absolute_import
 
 from ...core.properties import abstract
-from ...core.properties import Int, String
+from ...core.properties import Int, String, Bool
 from .widget import Widget
 
 @abstract
 class Markup(Widget):
     """ Base class for HTML markup widget models. """
 
-class Paragraph(Markup):
-    """ A block (paragraph) of text.
-
-    """
-
     text = String(default="", help="""
     The contents of the widget.
     """)
@@ -29,6 +24,20 @@
     """)
 
 
+class Paragraph(Markup):
+    """ A block (paragraph) of text.
+
+    """
+
+class Div(Markup):
+    """ A block (div) of text.
+
+    """
+
+    render_as_text = Bool(False, help="""
+    Should the text be rendered as raw text (False, default), or should the text be interprited as an HTML string (True)
+    """)
+
 class PreText(Paragraph):
     """ A block (paragraph) of pre-formatted text.
 
diff --git a/examples/plotting/file/slider_callback_policy.py b/examples/plotting/file/slider_callback_policy.py
--- a/examples/plotting/file/slider_callback_policy.py
+++ b/examples/plotting/file/slider_callback_policy.py
@@ -1,5 +1,5 @@
 from bokeh.io import vform, output_file, show
-from bokeh.models import CustomJS, Slider, Paragraph, PreText
+from bokeh.models import CustomJS, Slider, Div
 
 # NOTE: the JS functions to forvide the format code for strings is found the answer
 # from the user fearphage at http://stackoverflow.com/questions/610406/javascript-equivalent-to-printf-string-format
@@ -20,10 +20,10 @@
       };
     }
 
-    para.set('text', "Slider Values\\n\\n  Slider 1: {0}\\n  Slider 2: {1}\\n  Slider 3: {2}".format(s1, s2, s3))
+    para.set('text', "<h1>Slider Values</h1><p>Slider 1: {0}<p>Slider 2: {1}<p>Slider 3: {2}".format(s1, s2, s3))
 """)
 
-para = PreText(text = "Slider Values:\n\n  Slider 1: 0\n  Slider 2: 0\n  Slider 3: 0", width = 200, height = 150)
+para = Div(text="<h1>Slider Values:</h1><p>Slider 1: 0<p>Slider 2: 0<p>Slider 3: 0", width=200, height=150, render_as_text=False)
 
 s1 = Slider(title="Slider 1 (Continuous)", start=0, end=1000, value=0, step=1, callback=callback, callback_policy="continuous")
 s2 = Slider(title="Slider 2 (Throttle)", start=0, end=1000, value=0, step=1, callback=callback, callback_policy="throttle", callback_throttle=2000)

{"golden_diff": "diff --git a/bokeh/models/widgets/markups.py b/bokeh/models/widgets/markups.py\n--- a/bokeh/models/widgets/markups.py\n+++ b/bokeh/models/widgets/markups.py\n@@ -4,18 +4,13 @@\n from __future__ import absolute_import\n \n from ...core.properties import abstract\n-from ...core.properties import Int, String\n+from ...core.properties import Int, String, Bool\n from .widget import Widget\n \n @abstract\n class Markup(Widget):\n     \"\"\" Base class for HTML markup widget models. \"\"\"\n \n-class Paragraph(Markup):\n-    \"\"\" A block (paragraph) of text.\n-\n-    \"\"\"\n-\n     text = String(default=\"\", help=\"\"\"\n     The contents of the widget.\n     \"\"\")\n@@ -29,6 +24,20 @@\n     \"\"\")\n \n \n+class Paragraph(Markup):\n+    \"\"\" A block (paragraph) of text.\n+\n+    \"\"\"\n+\n+class Div(Markup):\n+    \"\"\" A block (div) of text.\n+\n+    \"\"\"\n+\n+    render_as_text = Bool(False, help=\"\"\"\n+    Should the text be rendered as raw text (False, default), or should the text be interprited as an HTML string (True)\n+    \"\"\")\n+\n class PreText(Paragraph):\n     \"\"\" A block (paragraph) of pre-formatted text.\n \ndiff --git a/examples/plotting/file/slider_callback_policy.py b/examples/plotting/file/slider_callback_policy.py\n--- a/examples/plotting/file/slider_callback_policy.py\n+++ b/examples/plotting/file/slider_callback_policy.py\n@@ -1,5 +1,5 @@\n from bokeh.io import vform, output_file, show\n-from bokeh.models import CustomJS, Slider, Paragraph, PreText\n+from bokeh.models import CustomJS, Slider, Div\n \n # NOTE: the JS functions to forvide the format code for strings is found the answer\n # from the user fearphage at http://stackoverflow.com/questions/610406/javascript-equivalent-to-printf-string-format\n@@ -20,10 +20,10 @@\n       };\n     }\n \n-    para.set('text', \"Slider Values\\\\n\\\\n  Slider 1: {0}\\\\n  Slider 2: {1}\\\\n  Slider 3: {2}\".format(s1, s2, s3))\n+    para.set('text', \"<h1>Slider Values</h1><p>Slider 1: {0}<p>Slider 2: {1}<p>Slider 3: {2}\".format(s1, s2, s3))\n \"\"\")\n \n-para = PreText(text = \"Slider Values:\\n\\n  Slider 1: 0\\n  Slider 2: 0\\n  Slider 3: 0\", width = 200, height = 150)\n+para = Div(text=\"<h1>Slider Values:</h1><p>Slider 1: 0<p>Slider 2: 0<p>Slider 3: 0\", width=200, height=150, render_as_text=False)\n \n s1 = Slider(title=\"Slider 1 (Continuous)\", start=0, end=1000, value=0, step=1, callback=callback, callback_policy=\"continuous\")\n s2 = Slider(title=\"Slider 2 (Throttle)\", start=0, end=1000, value=0, step=1, callback=callback, callback_policy=\"throttle\", callback_throttle=2000)\n", "issue": "Allow for the injection of raw HTML code\nCurrently, the Widget library contains a `Paragraph` and a `PreText` widget allowing the user to put basic text on the rendered page.  Neither of these widgets allows for the inclusion of formatted text using HTML markup.  A widget should be added to support the inclusion of raw HTML.  The widget can be a simple div named div tag.\n\n", "before_files": [{"content": "\"\"\" Various kinds of markup (static content) widgets.\n\n\"\"\"\nfrom __future__ import absolute_import\n\nfrom ...core.properties import abstract\nfrom ...core.properties import Int, String\nfrom .widget import Widget\n\n@abstract\nclass Markup(Widget):\n    \"\"\" Base class for HTML markup widget models. \"\"\"\n\nclass Paragraph(Markup):\n    \"\"\" A block (paragraph) of text.\n\n    \"\"\"\n\n    text = String(default=\"\", help=\"\"\"\n    The contents of the widget.\n    \"\"\")\n\n    width = Int(500, help=\"\"\"\n    The width of the block in pixels.\n    \"\"\")\n\n    height = Int(400, help=\"\"\"\n    The height of the block in pixels.\n    \"\"\")\n\n\nclass PreText(Paragraph):\n    \"\"\" A block (paragraph) of pre-formatted text.\n\n    \"\"\"\n", "path": "bokeh/models/widgets/markups.py"}, {"content": "from bokeh.io import vform, output_file, show\nfrom bokeh.models import CustomJS, Slider, Paragraph, PreText\n\n# NOTE: the JS functions to forvide the format code for strings is found the answer\n# from the user fearphage at http://stackoverflow.com/questions/610406/javascript-equivalent-to-printf-string-format\ncallback = CustomJS(code=\"\"\"\n    var s1 = slider1.get('value')\n    var s2 = slider2.get('value')\n    var s3 = slider3.get('value')\n\n    if (!String.prototype.format) {\n      String.prototype.format = function() {\n        var args = arguments;\n        return this.replace(/{(\\d+)}/g, function(match, number) {\n          return typeof args[number] != 'undefined'\n            ? args[number]\n            : match\n          ;\n        });\n      };\n    }\n\n    para.set('text', \"Slider Values\\\\n\\\\n  Slider 1: {0}\\\\n  Slider 2: {1}\\\\n  Slider 3: {2}\".format(s1, s2, s3))\n\"\"\")\n\npara = PreText(text = \"Slider Values:\\n\\n  Slider 1: 0\\n  Slider 2: 0\\n  Slider 3: 0\", width = 200, height = 150)\n\ns1 = Slider(title=\"Slider 1 (Continuous)\", start=0, end=1000, value=0, step=1, callback=callback, callback_policy=\"continuous\")\ns2 = Slider(title=\"Slider 2 (Throttle)\", start=0, end=1000, value=0, step=1, callback=callback, callback_policy=\"throttle\", callback_throttle=2000)\ns3 = Slider(title=\"Slider 3 (Mouse Up)\", start=0, end=1000, value=0, step=1, callback=callback, callback_policy=\"mouseup\")\n\ncallback.args['para'] = para\ncallback.args['slider1'] = s1\ncallback.args['slider2'] = s2\ncallback.args['slider3'] = s3\n\noutput_file('slider_callback_policy.html')\n\nshow(vform(s1, s2, s3, para))\n", "path": "examples/plotting/file/slider_callback_policy.py"}], "after_files": [{"content": "\"\"\" Various kinds of markup (static content) widgets.\n\n\"\"\"\nfrom __future__ import absolute_import\n\nfrom ...core.properties import abstract\nfrom ...core.properties import Int, String, Bool\nfrom .widget import Widget\n\n@abstract\nclass Markup(Widget):\n    \"\"\" Base class for HTML markup widget models. \"\"\"\n\n    text = String(default=\"\", help=\"\"\"\n    The contents of the widget.\n    \"\"\")\n\n    width = Int(500, help=\"\"\"\n    The width of the block in pixels.\n    \"\"\")\n\n    height = Int(400, help=\"\"\"\n    The height of the block in pixels.\n    \"\"\")\n\n\nclass Paragraph(Markup):\n    \"\"\" A block (paragraph) of text.\n\n    \"\"\"\n\nclass Div(Markup):\n    \"\"\" A block (div) of text.\n\n    \"\"\"\n\n    render_as_text = Bool(False, help=\"\"\"\n    Should the text be rendered as raw text (False, default), or should the text be interprited as an HTML string (True)\n    \"\"\")\n\nclass PreText(Paragraph):\n    \"\"\" A block (paragraph) of pre-formatted text.\n\n    \"\"\"\n", "path": "bokeh/models/widgets/markups.py"}, {"content": "from bokeh.io import vform, output_file, show\nfrom bokeh.models import CustomJS, Slider, Div\n\n# NOTE: the JS functions to forvide the format code for strings is found the answer\n# from the user fearphage at http://stackoverflow.com/questions/610406/javascript-equivalent-to-printf-string-format\ncallback = CustomJS(code=\"\"\"\n    var s1 = slider1.get('value')\n    var s2 = slider2.get('value')\n    var s3 = slider3.get('value')\n\n    if (!String.prototype.format) {\n      String.prototype.format = function() {\n        var args = arguments;\n        return this.replace(/{(\\d+)}/g, function(match, number) {\n          return typeof args[number] != 'undefined'\n            ? args[number]\n            : match\n          ;\n        });\n      };\n    }\n\n    para.set('text', \"<h1>Slider Values</h1><p>Slider 1: {0}<p>Slider 2: {1}<p>Slider 3: {2}\".format(s1, s2, s3))\n\"\"\")\n\npara = Div(text=\"<h1>Slider Values:</h1><p>Slider 1: 0<p>Slider 2: 0<p>Slider 3: 0\", width=200, height=150, render_as_text=False)\n\ns1 = Slider(title=\"Slider 1 (Continuous)\", start=0, end=1000, value=0, step=1, callback=callback, callback_policy=\"continuous\")\ns2 = Slider(title=\"Slider 2 (Throttle)\", start=0, end=1000, value=0, step=1, callback=callback, callback_policy=\"throttle\", callback_throttle=2000)\ns3 = Slider(title=\"Slider 3 (Mouse Up)\", start=0, end=1000, value=0, step=1, callback=callback, callback_policy=\"mouseup\")\n\ncallback.args['para'] = para\ncallback.args['slider1'] = s1\ncallback.args['slider2'] = s2\ncallback.args['slider3'] = s3\n\noutput_file('slider_callback_policy.html')\n\nshow(vform(s1, s2, s3, para))\n", "path": "examples/plotting/file/slider_callback_policy.py"}]}