anchor.diff:  uses
     System.Classes, System.SysUtils, System.SyncObjs,
     IdContext, IdCustomHTTPServer, IdException, IdTCPServer, IdIOHandlerSocket,
  -  IdSchedulerOfThreadPool, idGlobal,
  +  IdSchedulerOfThreadPool, idGlobal, IdGlobalProtocols, IdURI,
     //MARS.http.Server.Authentication,
     MARS.Core.Engine,
   //  MARS.http.Core,
  
positive.code: begin
    inherited Create(nil);
    FEngine := AEngine;
    OnParseAuthentication := ParseAuthorizationHeader;
  end;
  
  
negative.code:   FRequestInfo := ARequestInfo;
  end;
  
  destructor TMARSHttpRequestIndy.Destroy;
  begin
    FCookieFields.Free;
    FQueryFields.Free;
    FContentFields.Free;
    inherited;
  end;
  
  procedure TMARSHttpRequestIndy.ParseParams(Params :TStrings; const AValue: String);
  var
    i, j : Integer;
    s: string;
    LEncoding: IIdTextEncoding;
  begin
    Params.BeginUpdate;
    try
      Params.Clear;
  
      if FRequestInfo.CharSet <> '' then
        LEncoding := CharsetToEncoding(FRequestInfo.CharSet)
      else
        LEncoding := IndyTextEncoding_UTF8;
      i := 1;
      while i <= Length(AValue) do
      begin
        j := i;
        while (j <= Length(AValue)) and (AValue[j] <> '&') do {do not localize}
        begin
          Inc(j);
        end;
        s := Copy(AValue, i, j-i);
        s := ReplaceAll(s, '+', ' ');
        Params.Add(TIdURI.URLDecode(s, LEncoding));
        i := j + 1;
      end;
    finally
      Params.EndUpdate;
    end;
  end;
  
  function TMARSHttpRequestIndy.DoGetFieldByName(const Name: string): string;
  begin
    Result := FRequestInfo.RawHeaders.Values[Name];
  