old_contents: #
  # (c) 2016 Red Hat Inc.
  #
  # This file is part of Ansible
  #
  # Ansible is free software: you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
  # the Free Software Foundation, either version 3 of the License, or
  # (at your option) any later version.
  #
  # Ansible is distributed in the hope that it will be useful,
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  # GNU General Public License for more details.
  #
  # You should have received a copy of the GNU General Public License
  # along with Ansible.  If not, see <http://www.gnu.org/licenses/>.
  #
  from __future__ import (absolute_import, division, print_function)
  __metaclass__ = type
  
  import re
  import json
  
  from ansible.errors import AnsibleConnectionFailure
  from ansible.module_utils._text import to_text, to_bytes
  from ansible.plugins.terminal import TerminalBase
  
  
  class TerminalModule(TerminalBase):
  
      terminal_stdout_re = [
          re.compile(br"[\r\n]?[\w+\-\.:\/\[\]]+(?:\([^\)]+\)){,3}(?:>|#) ?$"),
          re.compile(br"\[\w+\@[\w\-\.]+(?: [^\]])\] ?[>#\$] ?$")
      ]
  
      terminal_stderr_re = [
          re.compile(br"error:", re.I),
          re.compile(br"Removing.* not allowed, it is being used")
      ]
  
      def on_open_shell(self):
          if self._get_prompt().strip().endswith(b'#'):
              self.disable_pager()
  
      def disable_pager(self):
          cmd = {u'command': u'no terminal pager'}
          try:
              self._exec_cli_command(u'no terminal pager')
          except AnsibleConnectionFailure:
              raise AnsibleConnectionFailure('unable to disable terminal pager')
  
      def on_become(self, passwd=None):
          if self._get_prompt().strip().endswith(b'#'):
              return
  
          cmd = {u'command': u'enable'}
          if passwd:
              # Note: python-3.5 cannot combine u"" and r"" together.  Thus make
              # an r string and use to_text to ensure it's text on both py2 and py3.
              cmd[u'prompt'] = to_text(r"[\r\n]?password: $", errors='surrogate_or_strict')
              cmd[u'answer'] = passwd
  
          try:
              self._exec_cli_command(to_bytes(json.dumps(cmd), errors='surrogate_or_strict'))
          except AnsibleConnectionFailure:
              raise AnsibleConnectionFailure('unable to elevate privilege to enable mode')
  
          self.disable_pager()
  
new_contents: #
  # (c) 2016 Red Hat Inc.
  #
  # This file is part of Ansible
  #
  # Ansible is free software: you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
  # the Free Software Foundation, either version 3 of the License, or
  # (at your option) any later version.
  #
  # Ansible is distributed in the hope that it will be useful,
  # but WITHOUT ANY WARRANTY; without even the implied warranty of
  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  # GNU General Public License for more details.
  #
  # You should have received a copy of the GNU General Public License
  # along with Ansible.  If not, see <http://www.gnu.org/licenses/>.
  #
  from __future__ import (absolute_import, division, print_function)
  __metaclass__ = type
  
  import re
  import json
  
  from ansible.errors import AnsibleConnectionFailure
  from ansible.module_utils._text import to_text, to_bytes
  from ansible.plugins.terminal import TerminalBase
  
  
  class TerminalModule(TerminalBase):
  
      terminal_stdout_re = [
          re.compile(br"[\r\n]?[\w+\-\.:\/\[\]]+(?:\([^\)]+\)){,3}(?:>|#) ?$"),
          re.compile(br"\[\w+\@[\w\-\.]+(?: [^\]])\] ?[>#\$] ?$")
      ]
  
      terminal_stderr_re = [
          re.compile(br"error:", re.I),
          re.compile(br"Removing.* not allowed, it is being used")
      ]
  
      def on_open_shell(self):
          if self._get_prompt().strip().endswith(b'#'):
              self.disable_pager()
  
      def disable_pager(self):
          cmd = {u'command': u'no terminal pager'}
          try:
              self._exec_cli_command(u'no terminal pager')
          except AnsibleConnectionFailure:
              raise AnsibleConnectionFailure('unable to disable terminal pager')
  
      def on_become(self, passwd=None):
          if self._get_prompt().strip().endswith(b'#'):
              return
  
          cmd = {u'command': u'enable'}
          if passwd:
              # Note: python-3.5 cannot combine u"" and r"" together.  Thus make
              # an r string and use to_text to ensure it's text on both py2 and py3.
              cmd[u'prompt'] = to_text(r"[\r\n]?[Pp]assword: $", errors='surrogate_or_strict')
              cmd[u'answer'] = passwd
  
          try:
              self._exec_cli_command(to_bytes(json.dumps(cmd), errors='surrogate_or_strict'))
          except AnsibleConnectionFailure:
              raise AnsibleConnectionFailure('unable to elevate privilege to enable mode')
  
          self.disable_pager()
  
subject: Fix regex on ASA password prompt (#49438)