We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Plaso hangs on VSS prompt
We should set `--vss_stores none` by default and also pass the `--unattended` flag.

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `turbinia/workers/plaso.py`
Content:
```
1 # -*- coding: utf-8 -*-
2 # Copyright 2015 Google Inc.
3 #
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at
7 #
8 #      http://www.apache.org/licenses/LICENSE-2.0
9 #
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
15 """Task for running Plaso."""
16 
17 from __future__ import unicode_literals
18 
19 import os
20 from tempfile import NamedTemporaryFile
21 
22 from turbinia import config
23 from turbinia.evidence import APFSEncryptedDisk
24 from turbinia.evidence import EvidenceState as state
25 from turbinia.evidence import PlasoFile
26 from turbinia.workers import TurbiniaTask
27 
28 
29 class PlasoTask(TurbiniaTask):
30   """Task to run Plaso (log2timeline)."""
31 
32   # Plaso requires the Disk to be attached, but doesn't require it be mounted.
33   REQUIRED_STATES = [state.ATTACHED, state.DECOMPRESSED]
34 
35   def run(self, evidence, result):
36     """Task that process data with Plaso.
37 
38     Args:
39         evidence (Evidence object):  The evidence we will process.
40         result (TurbiniaTaskResult): The object to place task results into.
41 
42     Returns:
43         TurbiniaTaskResult object.
44     """
45     config.LoadConfig()
46 
47     # TODO: Convert to using real recipes after
48     # https://github.com/google/turbinia/pull/486 is in.  For now we're just
49     # using the --recipe_config flag, and this can be used with colon separated
50     # values like:
51     # --recipe_config='artifact_filters=BrowserFoo:BrowserBar,parsers=foo:bar'
52     if evidence.config and evidence.config.get('artifact_filters'):
53       artifact_filters = evidence.config.get('artifact_filters')
54       artifact_filters = artifact_filters.replace(':', ',')
55     else:
56       artifact_filters = None
57 
58     if evidence.config and evidence.config.get('parsers'):
59       parsers = evidence.config.get('parsers')
60       parsers = parsers.replace(':', ',')
61     else:
62       parsers = None
63 
64     if evidence.config and evidence.config.get('file_filters'):
65       file_filters = evidence.config.get('file_filters')
66       file_filter_file = os.path.join(self.tmp_dir, 'file_filter.txt')
67       try:
68         with open(file_filter_file, 'wb') as file_filter_fh:
69           for filter_ in file_filters.split(':'):
70             file_filter_fh.write(filter_.encode('utf-8') + b'\n')
71       except IOError as exception:
72         message = 'Cannot write to filter file {0:s}: {1!s}'.format(
73             file_filter_file, exception)
74         result.close(self, success=False, status=message)
75         return result
76     else:
77       file_filters = None
78       file_filter_file = None
79 
80     if evidence.config and evidence.config.get('vss'):
81       vss = evidence.config.get('vss')
82     else:
83       vss = None
84 
85     if evidence.config and evidence.config.get('yara_rules'):
86       yara_rules = evidence.config.get('yara_rules')
87       with NamedTemporaryFile(dir=self.tmp_dir, delete=False, mode='w') as fh:
88         yara_file_path = fh.name
89         fh.write(yara_rules)
90     else:
91       yara_rules = None
92 
93     # Write plaso file into tmp_dir because sqlite has issues with some shared
94     # filesystems (e.g NFS).
95     plaso_file = os.path.join(self.tmp_dir, '{0:s}.plaso'.format(self.id))
96     plaso_evidence = PlasoFile(source_path=plaso_file)
97     plaso_log = os.path.join(self.output_dir, '{0:s}.log'.format(self.id))
98 
99     # TODO(aarontp): Move these flags into a recipe
100     cmd = (
101         'log2timeline.py --status_view none --hashers all '
102         '--partition all').split()
103     if config.DEBUG_TASKS or evidence.config.get('debug_tasks'):
104       cmd.append('-d')
105     if artifact_filters:
106       cmd.extend(['--artifact_filters', artifact_filters])
107     if parsers:
108       cmd.extend(['--parsers', parsers])
109     if file_filters:
110       cmd.extend(['--file_filter', file_filter_file])
111     if vss:
112       cmd.extend(['--vss_stores', vss])
113     if yara_rules:
114       cmd.extend(['--yara_rules', yara_file_path])
115 
116     # TODO(dfjxs): This can be removed once APFS encryption is implemented
117     # natively in Turbinia
118     if isinstance(evidence, APFSEncryptedDisk):
119       if evidence.recovery_key:
120         cmd.extend([
121             '--credential', 'recovery_password:{0:s}'.format(
122                 evidence.recovery_key)
123         ])
124       elif evidence.password:
125         cmd.extend(['--credential', 'password:{0:s}'.format(evidence.password)])
126       else:
127         result.close(
128             self, False, 'No credentials were provided '
129             'for a bitlocker disk.')
130         return result
131 
132     if evidence.credentials:
133       for credential in evidence.credentials:
134         credential_type = credential['credential_type']
135         credential_data = credential['credential_data']
136         cmd.extend([
137             '--credential', '{0:s}:{1:s}'.format(
138                 credential_type, credential_data)
139         ])
140 
141     cmd.extend(['--temporary_directory', self.tmp_dir])
142     cmd.extend(['--logfile', plaso_log])
143     cmd.extend([plaso_file, evidence.local_path])
144 
145     result.log('Running plaso as [{0:s}]'.format(' '.join(cmd)))
146 
147     self.execute(
148         cmd, result, log_files=[plaso_log], new_evidence=[plaso_evidence],
149         close=True)
150 
151     return result
152
```
--- 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/turbinia/workers/plaso.py b/turbinia/workers/plaso.py
--- a/turbinia/workers/plaso.py
+++ b/turbinia/workers/plaso.py
@@ -80,7 +80,7 @@
     if evidence.config and evidence.config.get('vss'):
       vss = evidence.config.get('vss')
     else:
-      vss = None
+      vss = 'none'
 
     if evidence.config and evidence.config.get('yara_rules'):
       yara_rules = evidence.config.get('yara_rules')
@@ -99,7 +99,7 @@
     # TODO(aarontp): Move these flags into a recipe
     cmd = (
         'log2timeline.py --status_view none --hashers all '
-        '--partition all').split()
+        '--partition all -u').split()
     if config.DEBUG_TASKS or evidence.config.get('debug_tasks'):
       cmd.append('-d')
     if artifact_filters:
@@ -108,10 +108,9 @@
       cmd.extend(['--parsers', parsers])
     if file_filters:
       cmd.extend(['--file_filter', file_filter_file])
-    if vss:
-      cmd.extend(['--vss_stores', vss])
     if yara_rules:
       cmd.extend(['--yara_rules', yara_file_path])
+    cmd.extend(['--vss_stores', vss])
 
     # TODO(dfjxs): This can be removed once APFS encryption is implemented
     # natively in Turbinia

{"golden_diff": "diff --git a/turbinia/workers/plaso.py b/turbinia/workers/plaso.py\n--- a/turbinia/workers/plaso.py\n+++ b/turbinia/workers/plaso.py\n@@ -80,7 +80,7 @@\n     if evidence.config and evidence.config.get('vss'):\n       vss = evidence.config.get('vss')\n     else:\n-      vss = None\n+      vss = 'none'\n \n     if evidence.config and evidence.config.get('yara_rules'):\n       yara_rules = evidence.config.get('yara_rules')\n@@ -99,7 +99,7 @@\n     # TODO(aarontp): Move these flags into a recipe\n     cmd = (\n         'log2timeline.py --status_view none --hashers all '\n-        '--partition all').split()\n+        '--partition all -u').split()\n     if config.DEBUG_TASKS or evidence.config.get('debug_tasks'):\n       cmd.append('-d')\n     if artifact_filters:\n@@ -108,10 +108,9 @@\n       cmd.extend(['--parsers', parsers])\n     if file_filters:\n       cmd.extend(['--file_filter', file_filter_file])\n-    if vss:\n-      cmd.extend(['--vss_stores', vss])\n     if yara_rules:\n       cmd.extend(['--yara_rules', yara_file_path])\n+    cmd.extend(['--vss_stores', vss])\n \n     # TODO(dfjxs): This can be removed once APFS encryption is implemented\n     # natively in Turbinia\n", "issue": "Plaso hangs on VSS prompt\nWe should set `--vss_stores none` by default and also pass the `--unattended` flag.\n", "before_files": [{"content": "# -*- coding: utf-8 -*-\n# Copyright 2015 Google Inc.\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, software\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\"\"\"Task for running Plaso.\"\"\"\n\nfrom __future__ import unicode_literals\n\nimport os\nfrom tempfile import NamedTemporaryFile\n\nfrom turbinia import config\nfrom turbinia.evidence import APFSEncryptedDisk\nfrom turbinia.evidence import EvidenceState as state\nfrom turbinia.evidence import PlasoFile\nfrom turbinia.workers import TurbiniaTask\n\n\nclass PlasoTask(TurbiniaTask):\n  \"\"\"Task to run Plaso (log2timeline).\"\"\"\n\n  # Plaso requires the Disk to be attached, but doesn't require it be mounted.\n  REQUIRED_STATES = [state.ATTACHED, state.DECOMPRESSED]\n\n  def run(self, evidence, result):\n    \"\"\"Task that process data with Plaso.\n\n    Args:\n        evidence (Evidence object):  The evidence we will process.\n        result (TurbiniaTaskResult): The object to place task results into.\n\n    Returns:\n        TurbiniaTaskResult object.\n    \"\"\"\n    config.LoadConfig()\n\n    # TODO: Convert to using real recipes after\n    # https://github.com/google/turbinia/pull/486 is in.  For now we're just\n    # using the --recipe_config flag, and this can be used with colon separated\n    # values like:\n    # --recipe_config='artifact_filters=BrowserFoo:BrowserBar,parsers=foo:bar'\n    if evidence.config and evidence.config.get('artifact_filters'):\n      artifact_filters = evidence.config.get('artifact_filters')\n      artifact_filters = artifact_filters.replace(':', ',')\n    else:\n      artifact_filters = None\n\n    if evidence.config and evidence.config.get('parsers'):\n      parsers = evidence.config.get('parsers')\n      parsers = parsers.replace(':', ',')\n    else:\n      parsers = None\n\n    if evidence.config and evidence.config.get('file_filters'):\n      file_filters = evidence.config.get('file_filters')\n      file_filter_file = os.path.join(self.tmp_dir, 'file_filter.txt')\n      try:\n        with open(file_filter_file, 'wb') as file_filter_fh:\n          for filter_ in file_filters.split(':'):\n            file_filter_fh.write(filter_.encode('utf-8') + b'\\n')\n      except IOError as exception:\n        message = 'Cannot write to filter file {0:s}: {1!s}'.format(\n            file_filter_file, exception)\n        result.close(self, success=False, status=message)\n        return result\n    else:\n      file_filters = None\n      file_filter_file = None\n\n    if evidence.config and evidence.config.get('vss'):\n      vss = evidence.config.get('vss')\n    else:\n      vss = None\n\n    if evidence.config and evidence.config.get('yara_rules'):\n      yara_rules = evidence.config.get('yara_rules')\n      with NamedTemporaryFile(dir=self.tmp_dir, delete=False, mode='w') as fh:\n        yara_file_path = fh.name\n        fh.write(yara_rules)\n    else:\n      yara_rules = None\n\n    # Write plaso file into tmp_dir because sqlite has issues with some shared\n    # filesystems (e.g NFS).\n    plaso_file = os.path.join(self.tmp_dir, '{0:s}.plaso'.format(self.id))\n    plaso_evidence = PlasoFile(source_path=plaso_file)\n    plaso_log = os.path.join(self.output_dir, '{0:s}.log'.format(self.id))\n\n    # TODO(aarontp): Move these flags into a recipe\n    cmd = (\n        'log2timeline.py --status_view none --hashers all '\n        '--partition all').split()\n    if config.DEBUG_TASKS or evidence.config.get('debug_tasks'):\n      cmd.append('-d')\n    if artifact_filters:\n      cmd.extend(['--artifact_filters', artifact_filters])\n    if parsers:\n      cmd.extend(['--parsers', parsers])\n    if file_filters:\n      cmd.extend(['--file_filter', file_filter_file])\n    if vss:\n      cmd.extend(['--vss_stores', vss])\n    if yara_rules:\n      cmd.extend(['--yara_rules', yara_file_path])\n\n    # TODO(dfjxs): This can be removed once APFS encryption is implemented\n    # natively in Turbinia\n    if isinstance(evidence, APFSEncryptedDisk):\n      if evidence.recovery_key:\n        cmd.extend([\n            '--credential', 'recovery_password:{0:s}'.format(\n                evidence.recovery_key)\n        ])\n      elif evidence.password:\n        cmd.extend(['--credential', 'password:{0:s}'.format(evidence.password)])\n      else:\n        result.close(\n            self, False, 'No credentials were provided '\n            'for a bitlocker disk.')\n        return result\n\n    if evidence.credentials:\n      for credential in evidence.credentials:\n        credential_type = credential['credential_type']\n        credential_data = credential['credential_data']\n        cmd.extend([\n            '--credential', '{0:s}:{1:s}'.format(\n                credential_type, credential_data)\n        ])\n\n    cmd.extend(['--temporary_directory', self.tmp_dir])\n    cmd.extend(['--logfile', plaso_log])\n    cmd.extend([plaso_file, evidence.local_path])\n\n    result.log('Running plaso as [{0:s}]'.format(' '.join(cmd)))\n\n    self.execute(\n        cmd, result, log_files=[plaso_log], new_evidence=[plaso_evidence],\n        close=True)\n\n    return result\n", "path": "turbinia/workers/plaso.py"}], "after_files": [{"content": "# -*- coding: utf-8 -*-\n# Copyright 2015 Google Inc.\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, software\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\"\"\"Task for running Plaso.\"\"\"\n\nfrom __future__ import unicode_literals\n\nimport os\nfrom tempfile import NamedTemporaryFile\n\nfrom turbinia import config\nfrom turbinia.evidence import APFSEncryptedDisk\nfrom turbinia.evidence import EvidenceState as state\nfrom turbinia.evidence import PlasoFile\nfrom turbinia.workers import TurbiniaTask\n\n\nclass PlasoTask(TurbiniaTask):\n  \"\"\"Task to run Plaso (log2timeline).\"\"\"\n\n  # Plaso requires the Disk to be attached, but doesn't require it be mounted.\n  REQUIRED_STATES = [state.ATTACHED, state.DECOMPRESSED]\n\n  def run(self, evidence, result):\n    \"\"\"Task that process data with Plaso.\n\n    Args:\n        evidence (Evidence object):  The evidence we will process.\n        result (TurbiniaTaskResult): The object to place task results into.\n\n    Returns:\n        TurbiniaTaskResult object.\n    \"\"\"\n    config.LoadConfig()\n\n    # TODO: Convert to using real recipes after\n    # https://github.com/google/turbinia/pull/486 is in.  For now we're just\n    # using the --recipe_config flag, and this can be used with colon separated\n    # values like:\n    # --recipe_config='artifact_filters=BrowserFoo:BrowserBar,parsers=foo:bar'\n    if evidence.config and evidence.config.get('artifact_filters'):\n      artifact_filters = evidence.config.get('artifact_filters')\n      artifact_filters = artifact_filters.replace(':', ',')\n    else:\n      artifact_filters = None\n\n    if evidence.config and evidence.config.get('parsers'):\n      parsers = evidence.config.get('parsers')\n      parsers = parsers.replace(':', ',')\n    else:\n      parsers = None\n\n    if evidence.config and evidence.config.get('file_filters'):\n      file_filters = evidence.config.get('file_filters')\n      file_filter_file = os.path.join(self.tmp_dir, 'file_filter.txt')\n      try:\n        with open(file_filter_file, 'wb') as file_filter_fh:\n          for filter_ in file_filters.split(':'):\n            file_filter_fh.write(filter_.encode('utf-8') + b'\\n')\n      except IOError as exception:\n        message = 'Cannot write to filter file {0:s}: {1!s}'.format(\n            file_filter_file, exception)\n        result.close(self, success=False, status=message)\n        return result\n    else:\n      file_filters = None\n      file_filter_file = None\n\n    if evidence.config and evidence.config.get('vss'):\n      vss = evidence.config.get('vss')\n    else:\n      vss = 'none'\n\n    if evidence.config and evidence.config.get('yara_rules'):\n      yara_rules = evidence.config.get('yara_rules')\n      with NamedTemporaryFile(dir=self.tmp_dir, delete=False, mode='w') as fh:\n        yara_file_path = fh.name\n        fh.write(yara_rules)\n    else:\n      yara_rules = None\n\n    # Write plaso file into tmp_dir because sqlite has issues with some shared\n    # filesystems (e.g NFS).\n    plaso_file = os.path.join(self.tmp_dir, '{0:s}.plaso'.format(self.id))\n    plaso_evidence = PlasoFile(source_path=plaso_file)\n    plaso_log = os.path.join(self.output_dir, '{0:s}.log'.format(self.id))\n\n    # TODO(aarontp): Move these flags into a recipe\n    cmd = (\n        'log2timeline.py --status_view none --hashers all '\n        '--partition all -u').split()\n    if config.DEBUG_TASKS or evidence.config.get('debug_tasks'):\n      cmd.append('-d')\n    if artifact_filters:\n      cmd.extend(['--artifact_filters', artifact_filters])\n    if parsers:\n      cmd.extend(['--parsers', parsers])\n    if file_filters:\n      cmd.extend(['--file_filter', file_filter_file])\n    if yara_rules:\n      cmd.extend(['--yara_rules', yara_file_path])\n    cmd.extend(['--vss_stores', vss])\n\n    # TODO(dfjxs): This can be removed once APFS encryption is implemented\n    # natively in Turbinia\n    if isinstance(evidence, APFSEncryptedDisk):\n      if evidence.recovery_key:\n        cmd.extend([\n            '--credential', 'recovery_password:{0:s}'.format(\n                evidence.recovery_key)\n        ])\n      elif evidence.password:\n        cmd.extend(['--credential', 'password:{0:s}'.format(evidence.password)])\n      else:\n        result.close(\n            self, False, 'No credentials were provided '\n            'for a bitlocker disk.')\n        return result\n\n    if evidence.credentials:\n      for credential in evidence.credentials:\n        credential_type = credential['credential_type']\n        credential_data = credential['credential_data']\n        cmd.extend([\n            '--credential', '{0:s}:{1:s}'.format(\n                credential_type, credential_data)\n        ])\n\n    cmd.extend(['--temporary_directory', self.tmp_dir])\n    cmd.extend(['--logfile', plaso_log])\n    cmd.extend([plaso_file, evidence.local_path])\n\n    result.log('Running plaso as [{0:s}]'.format(' '.join(cmd)))\n\n    self.execute(\n        cmd, result, log_files=[plaso_log], new_evidence=[plaso_evidence],\n        close=True)\n\n    return result\n", "path": "turbinia/workers/plaso.py"}]}