We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Make better icons for all the rich-text editor components
```
The icon for the Collapsible widget in the rich-text editor keeps confusing me 
since it looks more like a folder containing a file than anything else.

It would be nice if we could replace it with something more apposite, perhaps a 
plus sign with a light border around it?
```

Original issue reported on code.google.com by `jacobdav...@gmail.com` on 6 Nov 2014 at 6:02


--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `extensions/rich_text_components/Video/Video.py`
Content:
```
1 # coding: utf-8
2 #
3 # Copyright 2014 The Oppia Authors. All Rights Reserved.
4 #
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
8 #
9 #      http://www.apache.org/licenses/LICENSE-2.0
10 #
11 # Unless required by applicable law or agreed to in writing, softwar
12 # distributed under the License is distributed on an "AS-IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
16 
17 from extensions.rich_text_components import base
18 
19 
20 NONNEGATIVE_INT_SCHEMA = {
21     'type': 'int',
22     'validators': [{
23         'id': 'is_at_least',
24         'min_value': 0
25     }],
26 }
27 
28 
29 class Video(base.BaseRichTextComponent):
30     """A rich-text component representing a YouTube video."""
31 
32     name = 'Video'
33     category = 'Basic Input'
34     description = 'A YouTube video.'
35     frontend_name = 'video'
36     tooltip = 'Insert video'
37 
38     _customization_arg_specs = [{
39         'name': 'video_id',
40         'description': (
41             'The YouTube id for this video. This is the 11-character string '
42             'after \'v=\' in the video URL.'),
43         'schema': {
44             'type': 'unicode',
45         },
46         'default_value': '',
47     }, {
48         'name': 'start',
49         'description': (
50             'Video start time in seconds: (leave at 0 to start at the '
51             'beginning.)'),
52         'schema': NONNEGATIVE_INT_SCHEMA,
53         'default_value': 0
54     }, {
55         'name': 'end',
56         'description': (
57             'Video end time in seconds: (leave at 0 to play until the end.)'),
58         'schema': NONNEGATIVE_INT_SCHEMA,
59         'default_value': 0
60     }, {
61         'name': 'autoplay',
62         'description': (
63             'Autoplay this video once the question has loaded?'),
64         'schema': {
65             'type': 'bool'
66         },
67         'default_value': False,
68     }]
69
```

Path: `extensions/rich_text_components/Tabs/Tabs.py`
Content:
```
1 # coding: utf-8
2 #
3 # Copyright 2014 The Oppia Authors. All Rights Reserved.
4 #
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
8 #
9 #      http://www.apache.org/licenses/LICENSE-2.0
10 #
11 # Unless required by applicable law or agreed to in writing, softwar
12 # distributed under the License is distributed on an "AS-IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
16 
17 from extensions.rich_text_components import base
18 
19 
20 TAB_CONTENT_SCHEMA = {
21     'type': 'dict',
22     'properties': [{
23         'name': 'title',
24         'description': 'Tab title',
25         'schema': {
26             'type': 'unicode',
27             'validators': [{
28                 'id': 'is_nonempty'
29             }]
30         }
31     }, {
32         'name': 'content',
33         'description': 'Tab content',
34         'schema': {
35             'type': 'html',
36             'ui_config': {
37                 'hide_complex_extensions': True,
38             }
39 
40         }
41     }]
42 }
43 
44 
45 class Tabs(base.BaseRichTextComponent):
46     """A rich-text component representing a series of tabs."""
47 
48     name = 'Tabs'
49     category = 'Basic Input'
50     description = 'A series of tabs.'
51     frontend_name = 'tabs'
52     tooltip = 'Insert tabs (e.g. for hints)'
53     is_complex = True
54 
55     _customization_arg_specs = [{
56         'name': 'tab_contents',
57         'description': 'The tab titles and contents.',
58         'schema': {
59             'type': 'list',
60             'items': TAB_CONTENT_SCHEMA,
61             'ui_config': {
62                 'add_element_text': 'Add new tab'
63             }
64         },
65         'default_value': [{
66             'title': 'Hint introduction',
67             'content': ('This set of tabs shows some hints. Click on the '
68                         'other tabs to display the relevant hints.')
69         }, {
70             'title': 'Hint 1',
71             'content': 'This is a first hint.'
72         }],
73     }]
74
```

Path: `extensions/rich_text_components/Collapsible/Collapsible.py`
Content:
```
1 # coding: utf-8
2 #
3 # Copyright 2014 The Oppia Authors. All Rights Reserved.
4 #
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
8 #
9 #      http://www.apache.org/licenses/LICENSE-2.0
10 #
11 # Unless required by applicable law or agreed to in writing, softwar
12 # distributed under the License is distributed on an "AS-IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
16 
17 from extensions.rich_text_components import base
18 
19 
20 class Collapsible(base.BaseRichTextComponent):
21     """A rich-text component representing a collapsible block."""
22 
23     name = 'Collapsible'
24     category = 'Basic Input'
25     description = 'A collapsible block of HTML.'
26     frontend_name = 'collapsible'
27     tooltip = 'Insert collapsible block'
28     is_complex = True
29 
30     _customization_arg_specs = [{
31         'name': 'heading',
32         'description': 'The heading for the collapsible block',
33         'schema': {
34             'type': 'unicode',
35         },
36         'default_value': 'Sample Header',
37     }, {
38         'name': 'content',
39         'description': 'The content of the collapsible block',
40         'schema': {
41             'type': 'html',
42             'ui_config': {
43                 'hide_complex_extensions': True,
44             }
45         },
46         'default_value': 'You have opened the collapsible block.'
47     }]
48
```
--- 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/extensions/rich_text_components/Collapsible/Collapsible.py b/extensions/rich_text_components/Collapsible/Collapsible.py
--- a/extensions/rich_text_components/Collapsible/Collapsible.py
+++ b/extensions/rich_text_components/Collapsible/Collapsible.py
@@ -45,3 +45,4 @@
         },
         'default_value': 'You have opened the collapsible block.'
     }]
+
diff --git a/extensions/rich_text_components/Tabs/Tabs.py b/extensions/rich_text_components/Tabs/Tabs.py
--- a/extensions/rich_text_components/Tabs/Tabs.py
+++ b/extensions/rich_text_components/Tabs/Tabs.py
@@ -71,3 +71,4 @@
             'content': 'This is a first hint.'
         }],
     }]
+
diff --git a/extensions/rich_text_components/Video/Video.py b/extensions/rich_text_components/Video/Video.py
--- a/extensions/rich_text_components/Video/Video.py
+++ b/extensions/rich_text_components/Video/Video.py
@@ -66,3 +66,4 @@
         },
         'default_value': False,
     }]
+

{"golden_diff": "diff --git a/extensions/rich_text_components/Collapsible/Collapsible.py b/extensions/rich_text_components/Collapsible/Collapsible.py\n--- a/extensions/rich_text_components/Collapsible/Collapsible.py\n+++ b/extensions/rich_text_components/Collapsible/Collapsible.py\n@@ -45,3 +45,4 @@\n         },\n         'default_value': 'You have opened the collapsible block.'\n     }]\n+\ndiff --git a/extensions/rich_text_components/Tabs/Tabs.py b/extensions/rich_text_components/Tabs/Tabs.py\n--- a/extensions/rich_text_components/Tabs/Tabs.py\n+++ b/extensions/rich_text_components/Tabs/Tabs.py\n@@ -71,3 +71,4 @@\n             'content': 'This is a first hint.'\n         }],\n     }]\n+\ndiff --git a/extensions/rich_text_components/Video/Video.py b/extensions/rich_text_components/Video/Video.py\n--- a/extensions/rich_text_components/Video/Video.py\n+++ b/extensions/rich_text_components/Video/Video.py\n@@ -66,3 +66,4 @@\n         },\n         'default_value': False,\n     }]\n+\n", "issue": "Make better icons for all the rich-text editor components\n```\nThe icon for the Collapsible widget in the rich-text editor keeps confusing me \nsince it looks more like a folder containing a file than anything else.\n\nIt would be nice if we could replace it with something more apposite, perhaps a \nplus sign with a light border around it?\n```\n\nOriginal issue reported on code.google.com by `jacobdav...@gmail.com` on 6 Nov 2014 at 6:02\n\n", "before_files": [{"content": "# coding: utf-8\n#\n# Copyright 2014 The Oppia Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, softwar\n# distributed under the License is distributed on an \"AS-IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nfrom extensions.rich_text_components import base\n\n\nNONNEGATIVE_INT_SCHEMA = {\n    'type': 'int',\n    'validators': [{\n        'id': 'is_at_least',\n        'min_value': 0\n    }],\n}\n\n\nclass Video(base.BaseRichTextComponent):\n    \"\"\"A rich-text component representing a YouTube video.\"\"\"\n\n    name = 'Video'\n    category = 'Basic Input'\n    description = 'A YouTube video.'\n    frontend_name = 'video'\n    tooltip = 'Insert video'\n\n    _customization_arg_specs = [{\n        'name': 'video_id',\n        'description': (\n            'The YouTube id for this video. This is the 11-character string '\n            'after \\'v=\\' in the video URL.'),\n        'schema': {\n            'type': 'unicode',\n        },\n        'default_value': '',\n    }, {\n        'name': 'start',\n        'description': (\n            'Video start time in seconds: (leave at 0 to start at the '\n            'beginning.)'),\n        'schema': NONNEGATIVE_INT_SCHEMA,\n        'default_value': 0\n    }, {\n        'name': 'end',\n        'description': (\n            'Video end time in seconds: (leave at 0 to play until the end.)'),\n        'schema': NONNEGATIVE_INT_SCHEMA,\n        'default_value': 0\n    }, {\n        'name': 'autoplay',\n        'description': (\n            'Autoplay this video once the question has loaded?'),\n        'schema': {\n            'type': 'bool'\n        },\n        'default_value': False,\n    }]\n", "path": "extensions/rich_text_components/Video/Video.py"}, {"content": "# coding: utf-8\n#\n# Copyright 2014 The Oppia Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, softwar\n# distributed under the License is distributed on an \"AS-IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nfrom extensions.rich_text_components import base\n\n\nTAB_CONTENT_SCHEMA = {\n    'type': 'dict',\n    'properties': [{\n        'name': 'title',\n        'description': 'Tab title',\n        'schema': {\n            'type': 'unicode',\n            'validators': [{\n                'id': 'is_nonempty'\n            }]\n        }\n    }, {\n        'name': 'content',\n        'description': 'Tab content',\n        'schema': {\n            'type': 'html',\n            'ui_config': {\n                'hide_complex_extensions': True,\n            }\n\n        }\n    }]\n}\n\n\nclass Tabs(base.BaseRichTextComponent):\n    \"\"\"A rich-text component representing a series of tabs.\"\"\"\n\n    name = 'Tabs'\n    category = 'Basic Input'\n    description = 'A series of tabs.'\n    frontend_name = 'tabs'\n    tooltip = 'Insert tabs (e.g. for hints)'\n    is_complex = True\n\n    _customization_arg_specs = [{\n        'name': 'tab_contents',\n        'description': 'The tab titles and contents.',\n        'schema': {\n            'type': 'list',\n            'items': TAB_CONTENT_SCHEMA,\n            'ui_config': {\n                'add_element_text': 'Add new tab'\n            }\n        },\n        'default_value': [{\n            'title': 'Hint introduction',\n            'content': ('This set of tabs shows some hints. Click on the '\n                        'other tabs to display the relevant hints.')\n        }, {\n            'title': 'Hint 1',\n            'content': 'This is a first hint.'\n        }],\n    }]\n", "path": "extensions/rich_text_components/Tabs/Tabs.py"}, {"content": "# coding: utf-8\n#\n# Copyright 2014 The Oppia Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, softwar\n# distributed under the License is distributed on an \"AS-IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nfrom extensions.rich_text_components import base\n\n\nclass Collapsible(base.BaseRichTextComponent):\n    \"\"\"A rich-text component representing a collapsible block.\"\"\"\n\n    name = 'Collapsible'\n    category = 'Basic Input'\n    description = 'A collapsible block of HTML.'\n    frontend_name = 'collapsible'\n    tooltip = 'Insert collapsible block'\n    is_complex = True\n\n    _customization_arg_specs = [{\n        'name': 'heading',\n        'description': 'The heading for the collapsible block',\n        'schema': {\n            'type': 'unicode',\n        },\n        'default_value': 'Sample Header',\n    }, {\n        'name': 'content',\n        'description': 'The content of the collapsible block',\n        'schema': {\n            'type': 'html',\n            'ui_config': {\n                'hide_complex_extensions': True,\n            }\n        },\n        'default_value': 'You have opened the collapsible block.'\n    }]\n", "path": "extensions/rich_text_components/Collapsible/Collapsible.py"}], "after_files": [{"content": "# coding: utf-8\n#\n# Copyright 2014 The Oppia Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, softwar\n# distributed under the License is distributed on an \"AS-IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nfrom extensions.rich_text_components import base\n\n\nNONNEGATIVE_INT_SCHEMA = {\n    'type': 'int',\n    'validators': [{\n        'id': 'is_at_least',\n        'min_value': 0\n    }],\n}\n\n\nclass Video(base.BaseRichTextComponent):\n    \"\"\"A rich-text component representing a YouTube video.\"\"\"\n\n    name = 'Video'\n    category = 'Basic Input'\n    description = 'A YouTube video.'\n    frontend_name = 'video'\n    tooltip = 'Insert video'\n\n    _customization_arg_specs = [{\n        'name': 'video_id',\n        'description': (\n            'The YouTube id for this video. This is the 11-character string '\n            'after \\'v=\\' in the video URL.'),\n        'schema': {\n            'type': 'unicode',\n        },\n        'default_value': '',\n    }, {\n        'name': 'start',\n        'description': (\n            'Video start time in seconds: (leave at 0 to start at the '\n            'beginning.)'),\n        'schema': NONNEGATIVE_INT_SCHEMA,\n        'default_value': 0\n    }, {\n        'name': 'end',\n        'description': (\n            'Video end time in seconds: (leave at 0 to play until the end.)'),\n        'schema': NONNEGATIVE_INT_SCHEMA,\n        'default_value': 0\n    }, {\n        'name': 'autoplay',\n        'description': (\n            'Autoplay this video once the question has loaded?'),\n        'schema': {\n            'type': 'bool'\n        },\n        'default_value': False,\n    }]\n\n", "path": "extensions/rich_text_components/Video/Video.py"}, {"content": "# coding: utf-8\n#\n# Copyright 2014 The Oppia Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, softwar\n# distributed under the License is distributed on an \"AS-IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nfrom extensions.rich_text_components import base\n\n\nTAB_CONTENT_SCHEMA = {\n    'type': 'dict',\n    'properties': [{\n        'name': 'title',\n        'description': 'Tab title',\n        'schema': {\n            'type': 'unicode',\n            'validators': [{\n                'id': 'is_nonempty'\n            }]\n        }\n    }, {\n        'name': 'content',\n        'description': 'Tab content',\n        'schema': {\n            'type': 'html',\n            'ui_config': {\n                'hide_complex_extensions': True,\n            }\n\n        }\n    }]\n}\n\n\nclass Tabs(base.BaseRichTextComponent):\n    \"\"\"A rich-text component representing a series of tabs.\"\"\"\n\n    name = 'Tabs'\n    category = 'Basic Input'\n    description = 'A series of tabs.'\n    frontend_name = 'tabs'\n    tooltip = 'Insert tabs (e.g. for hints)'\n    is_complex = True\n\n    _customization_arg_specs = [{\n        'name': 'tab_contents',\n        'description': 'The tab titles and contents.',\n        'schema': {\n            'type': 'list',\n            'items': TAB_CONTENT_SCHEMA,\n            'ui_config': {\n                'add_element_text': 'Add new tab'\n            }\n        },\n        'default_value': [{\n            'title': 'Hint introduction',\n            'content': ('This set of tabs shows some hints. Click on the '\n                        'other tabs to display the relevant hints.')\n        }, {\n            'title': 'Hint 1',\n            'content': 'This is a first hint.'\n        }],\n    }]\n\n", "path": "extensions/rich_text_components/Tabs/Tabs.py"}, {"content": "# coding: utf-8\n#\n# Copyright 2014 The Oppia Authors. All Rights Reserved.\n#\n# Licensed under the Apache License, Version 2.0 (the \"License\");\n# you may not use this file except in compliance with the License.\n# You may obtain a copy of the License at\n#\n#      http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing, softwar\n# distributed under the License is distributed on an \"AS-IS\" BASIS,\n# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n# See the License for the specific language governing permissions and\n# limitations under the License.\n\nfrom extensions.rich_text_components import base\n\n\nclass Collapsible(base.BaseRichTextComponent):\n    \"\"\"A rich-text component representing a collapsible block.\"\"\"\n\n    name = 'Collapsible'\n    category = 'Basic Input'\n    description = 'A collapsible block of HTML.'\n    frontend_name = 'collapsible'\n    tooltip = 'Insert collapsible block'\n    is_complex = True\n\n    _customization_arg_specs = [{\n        'name': 'heading',\n        'description': 'The heading for the collapsible block',\n        'schema': {\n            'type': 'unicode',\n        },\n        'default_value': 'Sample Header',\n    }, {\n        'name': 'content',\n        'description': 'The content of the collapsible block',\n        'schema': {\n            'type': 'html',\n            'ui_config': {\n                'hide_complex_extensions': True,\n            }\n        },\n        'default_value': 'You have opened the collapsible block.'\n    }]\n\n", "path": "extensions/rich_text_components/Collapsible/Collapsible.py"}]}