anchor.diff:                  (cons key (if parser (funcall parser val) val))))
             (split-sequence #\& body)))
   
  -(defun url-encode (string external-format)
  +(defun url-encode (string &optional (external-format *external-format*))
     "Returns a URL-encoded version of the string STRING using the external format EXTERNAL-FORMAT.
   
   According to spec https://dev.twitter.com/docs/auth/percent-encoding-parameters"
  
positive.code: 
  (defconstant +unix-epoch-difference+  (encode-universal-time 0 0 0 1 1 1970 0))
  
  (defvar *oauth-consumer-key* NIL)
  (defvar *oauth-consumer-secret* NIL)
  (defvar *oauth-token* NIL)
  
negative.code:   (assert (not (null *oauth-consumer-secret*)) (*oauth-consumer-secret*)
            'oauth-parameter-missing :parameter '*oauth-consumer-secret*)
    (let ((prepared-parameters (sort (loop for (key . val) in parameters
                                           collect (cons (url-encode key)
                                                         (url-encode val)))
                                     #'string< :key #'car)))
      (let ((parameter-string (format NIL "~{~/chirp::signature-format-parameter/~^&~}" prepared-parameters)))
        (let ((base (format NIL "~a&~a&~a" (string-upcase method) (url-encode url) (url-encode parameter-string)))
              (signing-key (format NIL "~a&~a" *oauth-consumer-secret* (or *oauth-token-secret* ""))))
          (hmac base signing-key)))))
  
  (defun make-signed (method url parameters)
  