code: def output(self, filename):
          
  
          if not filename.endswith('.dot'):
              filename += '.dot'
          if filename == ".dot":
              filename = "all_contracts.dot"
  
          with open(filename, 'w', encoding='utf8') as f:
              self.info(f'Call Graph: {filename}')
              f.write('\n'.join(['strict digraph {'] + [self._process_functions(self.slither.functions)] +  ['}']))
  
  
          for derived_contract in self.slither.contracts_derived:
              with open(f'{derived_contract.name}.dot', 'w', encoding='utf8') as f:
                  self.info(f'Call Graph: {derived_contract.name}.dot')
                  f.write('\n'.join(['strict digraph {'] + [self._process_functions(derived_contract.functions)] +  ['}']))
docs: Output the graph in filename
              Args:
                  filename(string)