anchor.diff:      Reason: string;
     end;
   
  +  (* See Status Code Definitions at http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html *)
     TStatusCode = class
     public
  -    (* 200 OK, see {@link <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.1">HTTP/1.1 documentation</a>}.*)
  -    class function OK(): TReponseCode;
  -
  -    (* 201 Created, see {@link <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.2">HTTP/1.1 documentation</a>}. *)
  -    class function CREATED(): TReponseCode;
  -
  -    (* 202 Accepted, see {@l ink <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.3">HTTP/1.1 documentation</a>}.*)
  +    (* 100 CONTINUE *)
  +    class function CONTINUE: TReponseCode;
  +
  +    (* 101 Switching Protocols *)
  +    class function SWITCHING_PROTOCOLS: TReponseCode;
  +
  +    (* 200 OK *)
  +    class function OK: TReponseCode;
  +
  +    (* 201 Created *)
  +    class function CREATED: TReponseCode;
  +
  +    (* 202 Accepted *)
       class function ACCEPTED: TReponseCode;
   
  -    (* 204 No Content, see {@link <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.5">HTTP/1.1 documentation</a>}. *)
  +    (* 203 Non-Authoritative Information *)
  +    class function NON_AUTHORITATIVE_INFORMATION: TReponseCode;
  +
  +    (* 204 No Content *)
       class function NO_CONTENT: TReponseCode;
   
  -    (* 400 Bad Request, see {@link <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.1">HTTP/1.1 documentation</a>}*)
  +    (* 205 Reset Content *)
  +    class function RESET_CONTENT: TReponseCode;
  +
  +    (* 206 Partial Content *)
  +    class function PARTIAL_CONTENT: TReponseCode;
  +
  +    (* 300 Multiple Choices *)
  +    class function MULTIPLE_CHOICES: TReponseCode;
  +
  +    (* 301 Moved Permanently *)
  +    class function MOVED_PERMANENTLY: TReponseCode;
  +
  +    (* 302 Found *)
  +    class function FOUND: TReponseCode;
  +
  +    (* 303 See Other *)
  +    class function SEE_OTHER: TReponseCode;
  +
  +    (* 304 Not Modified *)
  +    class function NOT_MODIFIED: TReponseCode;
  +
  +    (* 305 Use Proxy *)
  +    class function USE_PROXY: TReponseCode;
  +
  +    (* 307 Temporary Redirect *)
  +    class function TEMPORARY_REDIRECT: TReponseCode;
  +
  +    (* 400 Bad Request *)
       class function BAD_REQUEST: TReponseCode;
   
  -    (* 401 Unauthorized, see {@link <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2">HTTP/1.1 documentation</a>}*)
  +    (* 401 Unauthorized *)
       class function UNAUTHORIZED: TReponseCode;
   
  -    (* 403 Forbidden, see {@link <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.4">HTTP/1.1 documentation</a>}*)
  +    (* 402 Payment Required *)
  +    class function PAYMENT_REQUIRED: TReponseCode;
  +
  +    (* 403 Forbidden *)
       class function FORBIDDEN: TReponseCode;
   
  -    (* 404 Not Found, see {@link <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.5">HTTP/1.1 documentation</a>}*)
  +    (* 404 Not Found *)
       class function NOT_FOUND: TReponseCode;
   
  -    (* 407 Proxy Authentication Required, see {@link <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.8">HTTP/1.1 documentation</a>}*)
  +    (* 405 Method Not Allowed *)
  +    class function METHOD_NOT_ALLOWED: TReponseCode;
  +
  +    (* 406 Not Acceptable *)
  +    class function NOT_ACCEPTABLE: TReponseCode;
  +
  +    (* 407 Proxy Authentication Required *)
       class function PROXY_AUTHENTICATION_REQUIRED: TReponseCode;
  +
  +    (* 408 Request Timeout *)
  +    class function REQUEST_TIMEOUT: TReponseCode;
  +
  +    (* 409 OK *)
  +    class function CONFLICT: TReponseCode;
  +
  +    (* 410 Gone *)
  +    class function GONE: TReponseCode;
  +
  +    (* 411 Length Required *)
  +    class function LENGTH_REQUIRED: TReponseCode;
  +
  +    (* 412 Precondition Failed *)
  +    class function PRECONDITION_FAILED: TReponseCode;
  +
  +    (* 413 Request Entity Too Large *)
  +    class function REQUEST_ENTITY_TOO_LARGE: TReponseCode;
  +
  +    (* 414 Request-URI Too Long *)
  +    class function REQUEST_URI_TOO_LONG: TReponseCode;
  +
  +    (* 415 Unsupported Media Type *)
  +    class function UNSUPPORTED_MEDIA_TYPE: TReponseCode;
  +
  +    (* 416 Requested Range Not Satisfiable *)
  +    class function REQUESTED_RANGE_NOT_SATISFIABLE: TReponseCode;
  +
  +    (* 417 Expectation Failed *)
  +    class function EXPECTATION_FAILED: TReponseCode;
  +
  +    (* 500 Internal Server Error *)
  +    class function INTERNAL_SERVER_ERROR: TReponseCode;
  +
  +    (* 501 Not Implemented *)
  +    class function NOT_IMPLEMENTED: TReponseCode;
  +
  +    (* 502 Bad Gateway *)
  +    class function BAD_GATEWAY: TReponseCode;
  +
  +    (* 503 Service Unavailable *)
  +    class function SERVICE_UNAVAILABLE: TReponseCode;
  +
  +    (* 504 Gateway Timeout *)
  +    class function GATEWAY_TIMEOUT: TReponseCode;
  +
  +    (* 505 HTTP Version Not Supported *)
  +    class function HTTP_VERSION_NOT_SUPPORTED: TReponseCode;
  +
     end;
   
     TRestUtils = class
  
positive.code:   Result.Reason := 'Accepted';
  end;
  
  class function TStatusCode.BAD_REQUEST: TReponseCode;
  begin
    Result.StatusCode := 400;
    Result.Reason := 'Bad Request';
  end;
  
  class function TStatusCode.Created: TReponseCode;
  begin
    Result.StatusCode := 201;
    Result.Reason := 'Created';
  end;
  
  class function TStatusCode.FORBIDDEN: TReponseCode;
  begin
    Result.StatusCode := 403;
    Result.Reason := 'Forbidden';
  end;
  
  class function TStatusCode.NOT_FOUND: TReponseCode;
  begin
    Result.StatusCode := 404;
    Result.Reason := 'Not Found';
  end;
  
  class function TStatusCode.NO_CONTENT: TReponseCode;
  begin
    Result.StatusCode := 204;
  
negative.code:   Result.Reason := 'OK';
  end;
  
  class function TStatusCode.PARTIAL_CONTENT: TReponseCode;
  begin
    Result.StatusCode := 206;
    Result.Reason := 'Partial Content';
  end;
  
  class function TStatusCode.PAYMENT_REQUIRED: TReponseCode;
  begin
    Result.StatusCode := 402;
    Result.Reason := 'Payment Required';
  end;
  
  class function TStatusCode.PRECONDITION_FAILED: TReponseCode;
  begin
    Result.StatusCode := 412;
    Result.Reason := 'Precondition Failed';
  end;
  
  class function TStatusCode.PROXY_AUTHENTICATION_REQUIRED: TReponseCode;
  begin
    Result.StatusCode := 407;
    Result.Reason := 'Proxy Authentication Required';
  end;
  
  class function TStatusCode.REQUESTED_RANGE_NOT_SATISFIABLE: TReponseCode;
  begin
    Result.StatusCode := 416;
    Result.Reason := 'Requested Range Not Satisfiable';
  end;
  
  class function TStatusCode.REQUEST_ENTITY_TOO_LARGE: TReponseCode;
  begin
    Result.StatusCode := 413;
    Result.Reason := 'Request Entity Too Large';
  end;
  
  class function TStatusCode.REQUEST_TIMEOUT: TReponseCode;
  begin
    Result.StatusCode := 408;
    Result.Reason := 'Request Timeout';
  end;
  
  class function TStatusCode.REQUEST_URI_TOO_LONG: TReponseCode;
  begin
    Result.StatusCode := 414;
    Result.Reason := 'Request-URI Too Long';
  end;
  
  class function TStatusCode.RESET_CONTENT: TReponseCode;
  begin
    Result.StatusCode := 205;
    Result.Reason := 'Reset Content';
  end;
  
  class function TStatusCode.SEE_OTHER: TReponseCode;
  begin
    Result.StatusCode := 303;
    Result.Reason := 'See Other';
  end;
  
  class function TStatusCode.SERVICE_UNAVAILABLE: TReponseCode;
  begin
    Result.StatusCode := 503;
    Result.Reason := 'Service Unavailable';
  end;
  
  class function TStatusCode.SWITCHING_PROTOCOLS: TReponseCode;
  begin
    Result.StatusCode := 101;
    Result.Reason := 'Switching Protocols';
  end;
  
  class function TStatusCode.TEMPORARY_REDIRECT: TReponseCode;
  begin
    Result.StatusCode := 307;
    Result.Reason := 'Temporary Redirect';
  end;
  
  class function TStatusCode.UNAUTHORIZED: TReponseCode;
  begin
    Result.StatusCode := 401;
    Result.Reason := 'Unauthorized';
  end;
  
  class function TStatusCode.UNSUPPORTED_MEDIA_TYPE: TReponseCode;
  begin
    Result.StatusCode := 415;
    Result.Reason := 'Unsupported Media Type';
  end;
  
  class function TStatusCode.USE_PROXY: TReponseCode;
  begin
    Result.StatusCode := 305;
    Result.Reason := 'Use Proxy';
  end;
  
  { TRestUtils }
  
  class function TRestUtils.Base64Decode(const AValue: String): String;
  