<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def wipe_avatar(self):
 """ Remove all avatar data stored on the server. If :attr:`synchronize_vcard` is true, the vCard avatar is disabled even if disabling the PEP avatar fails. This is equivalent to :meth:`disable_avatar` for vCard-based avatars, but will also remove the data PubSub node for PEP avatars. This method does not error if neither protocol is active. :raises aioxmpp.errors.GatherError: if an exception is raised by the spawned tasks. """


        @asyncio.coroutine
        def _wipe_pep_avatar():
            yield from self._pep.publish(
                namespaces.xep0084_metadata,
                avatar_xso.Metadata()
            )
            yield from self._pep.publish(
                namespaces.xep0084_data,
                avatar_xso.Data(b'')
            )

        with (yield from self._publish_lock):
            todo = []
            if self._synchronize_vcard:
                todo.append(self._disable_vcard_avatar())

            if (yield from self._pep.available()):
                todo.append(_wipe_pep_avatar())

            yield from gather_reraise_multi(*todo, message="wipe_avatar")