code: def sign_hashX(self, preimage):
          
          # if len(preimage) > 64:
          #     raise PreimageLengthError('preimage must <= 64 bytes')
          preimage = convert_hex_to_bytes(preimage)
          sig = hashX_sign_decorated(preimage)
          sig_dict = [signature.__dict__ for signature in self.signatures]
          if sig.__dict__ in sig_dict:
              raise SignatureExistError('The preimage has already signed.')
          else:
              self.signatures.append(sig)
docs: Sign this transaction envelope with a Hash(X) signature.
  
          See Stellar's documentation on `Multi-Sig
          <https://www.stellar.org/developers/guides/concepts/multi-sig.html>`_
          for more details on Hash(x) signatures.
  
          :param preimage: 32 byte hash or hex encoded string, the "x" value to be hashed and used as a
              signature.
          :type preimage: str, bytes