[Back to OOP SWAG index] [Back to Main SWAG index] [Original]

    { NOTE : THE remainder of the units in this package are included in the
      XX3402 file listed below.  Follow the instructions to extract.

    {************************************************}
    {                                                }
    {   UNIT XVIEWS   A collection of new Views      }
    {   Copyright (c) 1994-97 by Tom Wellige         }
    {   Donated as FREEWARE                          }
    {                                                }
    {   Ortsmuehle 4, 44227 Dortmund, GERMANY        }
    {   EMail: wellige@itk.de                        }
    {                                                }
    {************************************************}

    (*
      Some few words on this unit:
      ----------------------------

       - This units works fine with Turbo Pascal 6 or higher. If you use
         TP/BP 7 you can use the "inherited" command as shown in the
         comment lines on each line where it is possible.

       - This unit defines first of all a basic object (TXView) for status views
         which are updateable via messages (send from the applications Idle
         methode). All inheritances only have to override the abstract methode
         UPDATE and place the information to display in a string. In this manner
         there are a ClockView, a DateView and an HeapView as examples
         implemented. The usage of these objects (TClock, TDate and THeap) will
         be demonstrated in the programs XTEST1 and XTEST2.

       - There is also a 7-segment view implemented in this unit (T7Segment)
         capable of displaying all numbers from 0 to 9 and the characters
         "A" "b" "c" "d" "E" "F" and "-". The usage of this object is also
         demonstrated in this unit by the object TBigClock which is a clock
         in "hh:mm:ss" format. How to use this clock is demonstrated in the
         XTEST3 program.
    *)

    unit xviews;

    interface

    uses dos, objects, drivers, views;

    const
      cmGetData        = 5000;   { Request data string from TXView object }
      cmChange7Segment = 5001;   { Set new value to display in T7Segment  }
      cmChangeBack     = 5002;   { Change Background of T7Segment         }

    type
      PXView = ^TXView;                  (* Basic status view object  *)
      TXView = object(TView)
          Data: string;
        procedure HandleEvent(var Event: TEvent); virtual;
        procedure Update; virtual;
        procedure Draw; virtual;
        function  GetString: PString; virtual;
      end;

      PClock = ^TClock;                   (* Displays current time           *)
      TClock = object(TXView)
        procedure Update; virtual;
      end;

      PDate = ^TDate;                     (* Displays current date           *)
      TDate = object(TXView)
        procedure Update; virtual;
      end;

      PHeap = ^THeap;                     (* Displays free bytes on the heap *)
      THeap = object(TXView)
        procedure Update; virtual;
      end;

      PInfoView = ^TInfoView;             (* Show all "actual" datas         *)
      TInfoView = object(TView)
        procedure Draw; virtual;
      end;

      PInfoWindow = ^TInfoWindow;         (* Window holding TInfoView        *)
      TInfoWindow = object(TWindow)
        constructor Init(var Bounds: TRect);
      end;

      TSegment = array[1..13] of byte;    (* Buffer for T7Sgement            *)

      P7Segment = ^T7Segment;             (* 7 Segment View (7x5)            *)
      T7Segment = object(TView)
          Segment: TSegment;
          Number: word;
            { 16 -> segm_ = "-",  >=17 -> segmBlank = " " }
          BackGround: boolean;
            { not active segment visible (gray) ? }
        constructor Init(Top: TPoint; ABackGround: boolean; ANumber: word);
          { Top: upper left corner of segment
            ABackGround: not active segments visible (gray) ?
            ANumber: default value to be displayed }
        procedure HandleEvent(var Event: TEvent); virtual;
        procedure Draw; virtual;
        procedure UpdateSegments;
      end;

      PBigClock = ^TBigClock;
      TBigClock = object(TGroup)
          Seg: Array[1..6] of P7Segment;
        constructor Init(Top: TPoint; BackGround: boolean);
          { Top: upper left corner of clock
            BackGround: will passed to each T7Segment: not active segments
                        visible (gray) ? }
        procedure HandleEvent(var Event: TEvent); virtual;
        procedure Update;
      end;

    const
      Date : PDate  = nil;
      Clock: PClock = nil;
      Heap : PHeap  = nil;

    implementation

    {***********************************************************************}
    {**                             TXView                                **}
    {***********************************************************************}

    procedure TXView.HandleEvent(var Event: TEvent);
    begin
      { TP/BP7: inherited HandleEvent(Event); }
      TView.HandleEvent(Event);
      if Event.What = evBroadCast then
        if Event.Command = cmGetData then
        begin
          ClearEvent(Event);
          Event.InfoPtr:= GetString;
        end;
    end;

    procedure TXView.Update;
    begin
      Abstract;
    end;

    procedure TXView.Draw;
    var
      Buf: TDrawBuffer;
      C: word;
    begin
      C:= GetColor(2);  (* Application -> "Menu normal"  *)
                        (* Window      -> "Frame active" *)
      MoveChar(Buf, ' ', C, Size.X);
      MoveStr(Buf, Data, C);
      WriteLine(0, 0, Size.X, 1, Buf);
    end;

    function TXView.GetString: PString;
    begin
      GetString:= PString(@Data);
    end;

    {***********************************************************************}
    {**                             TClock                                **}
    {***********************************************************************}

    procedure TClock.Update;
    type
      Rec = record
        hh, mm, ss: longint; end;
    var
      DataRec: Rec;
      hh, mm, ss, hs: word;
    begin
      GetTime(hh, mm, ss, hs);
      DataRec.hh:= hh;
      DataRec.mm:= mm;
      DataRec.ss:= ss;
      FormatStr(Data, '%2d:%2d:%2d', DataRec);
      if hh < 10 then Data[1]:= '0';
      if mm < 10 then Data[4]:= '0';
      if ss < 10 then Data[7]:= '0';
      DrawView;
    end;

    {***********************************************************************}
    {**                             TDate                                 **}
    {***********************************************************************}

    procedure TDate.Update;
    type
      Rec = record
        dd, mm, yy: longint; end;
    var
      DataRec: Rec;
      dd, mm, yy, dw: word;
    begin
      GetDate(yy, mm, dd, dw);
      DataRec.dd:= dd;
      DataRec.mm:= mm;
      DataRec.yy:= yy;
      FormatStr(Data, '%2d.%2d.%4d', DataRec);
      if dd < 10 then Data[1]:= '0';
      if mm < 10 then Data[4]:= '0';
      DrawView;
    end;

    {***********************************************************************}
    {**                             THeap                                 **}
    {***********************************************************************}

    procedure THeap.Update;
    var
      Mem: longint;
    begin
      Mem:= MemAvail;
      FormatStr(Data, '%d Bytes', Mem);
      DrawView;
    end;

    {***********************************************************************}
    {**                            TInfoView                              **}
    {***********************************************************************}

    procedure TInfoView.Draw;
    var
      Buf: TDrawBuffer;
      C: word;
      s: string;
    begin
      C:= GetColor(2);  (* Application -> "Menu normal"  *)
                        (* Window      -> "Frame active" *)
      s:= 'Date   : ';
      if assigned(Date) then
        s:= s + PString(Message(Date, evBroadCast, cmGetData, nil))^ else
        s:= s + 'not accessable';
      MoveChar(Buf, ' ', C, Size.X);
      MoveStr(Buf, s, C);
      WriteLine(0, 0, Size.X, 1, Buf);

      s:= 'Time   : ';
      if assigned(Clock) then
        s:= s + PString(Message(Clock, evBroadCast, cmGetData, nil))^ else
        s:= s + 'not accessable';
      MoveChar(Buf, ' ', C, Size.X);
      MoveStr(Buf, s, C);
      WriteLine(0, 1, Size.X, 1, Buf);

      s:= 'Memory : ';
      if assigned(Heap) then
        s:= s + PString(Message(Heap, evBroadCast, cmGetData, nil))^ else
        s:= s + 'not accessable';
      MoveChar(Buf, ' ', C, Size.X);
      MoveStr(Buf, s, C);
      WriteLine(0, 2, Size.X, 1, Buf);
    end;

    {***********************************************************************}
    {**                           TInfoWindow                             **}
    {***********************************************************************}

    constructor TInfoWindow.Init(var Bounds: TRect);
    var R: TRect;
    begin
      { TP/BP7: inherited Init(Bounds, 'Systeminfo', 0); }
      TWindow.Init(Bounds, 'Systeminfo', 0);
      Palette:= wpCyanWindow;
      Flags:= Flags and not (wfClose + wfZoom + wfGrow);
      GetExtent(R);
      R.Grow(-2, -2);
      Insert(New(PInfoView, Init(R)));
    end;

    {***********************************************************************}
    {**                            T7Segment                              **}
    {***********************************************************************}

    const              { 1  2  3  4  5  6  7  8  9  A  B  C  D }
      segm0: TSegment = (1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1);
      segm1: TSegment = (0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1);
      segm2: TSegment = (1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1);
      segm3: TSegment = (1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1);
      segm4: TSegment = (1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1);
      segm5: TSegment = (1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1);
      segm6: TSegment = (1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1);
      segm7: TSegment = (1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1);
      segm8: TSegment = (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
      segm9: TSegment = (1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1);
      segmA: TSegment = (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1);
      segmB: TSegment = (1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1);
      segmC: TSegment = (1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1);
      segmD: TSegment = (0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1);
      segmE: TSegment = (1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1);
      segmF: TSegment = (1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0);
      segm_: TSegment = (0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0);
      segmBlank: TSegment =
                        (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);

    constructor T7Segment.Init(Top: TPoint; ABackGround: boolean; ANumber: word);
    var R: TRect;
    begin
      R.Assign(Top.X, Top.Y, Top.X+7, Top.Y+5);
      { TP/BP7: inherited Init(R); }
      TView.Init(R);
      BackGround:= ABackGround;
      Number:= ANumber;
      UpdateSegments;
    end;

    procedure T7Segment.HandleEvent(var Event: TEvent);
    begin
      { TP/BP7: inherited HandleEvent(Event); }
      TView.HandleEvent(Event);
      if Event.What = evBroadCast then
        case Event.Command of
          cmChange7Segment: begin
                              Number:= Word(Event.InfoPtr^);
                              UpdateSegments;
                              DrawView;
                              ClearEvent(Event);
                            end;
          cmChangeBack    : begin
                              if BackGround then BackGround:= false
                                            else BackGround:= true;
                              DrawView;
                            end;
        end;
    end;

    procedure T7Segment.Draw;
    var
      Buf: TDrawBuffer;
      Front, Back: byte;

      function SetColor(w: word; c: byte): word;
      begin
        w:= w and $00FF;
        w:= swap(w);
        w:= w or c;
        w:= swap(w);
        SetColor:= w;
      end;

      procedure SetBufColor(var B: TDrawBuffer; C: word);
      var i: integer;
      begin
        for i:= 0 to Size.X do
          Buf[i]:= SetColor(Buf[i], C);
      end;

    begin
      if BackGround then Back:= $8 else Back:= $0;
      Front:= $F;

      { Segment 1,2,3 }
      SetBufColor(Buf, $0);
      MoveStr (Buf, ' þþþþþ', Back);
      if Segment[1] = 1 then
        Buf[1]:= SetColor(Buf[1], Front);
      if Segment[2] = 1 then begin
        Buf[2]:= SetColor(Buf[2], Front);
        Buf[3]:= SetColor(Buf[3], Front);
        Buf[4]:= SetColor(Buf[4], Front); end;
      if Segment[3] = 1 then
        Buf[5]:= SetColor(Buf[5], Front);
      WriteLine(0, 0, Size.X, 1, Buf);

      { Segment 4,5 }
      SetBufColor(Buf, $0);
      MoveStr (Buf, ' Û   Û', Back);
      if Segment[4] = 1 then
        Buf[1]:= SetColor(Buf[1], Front);
      if Segment[5] = 1 then
        Buf[5]:= SetColor(Buf[5], Front);
      WriteLine(0, 1, Size.X, 1, Buf);

      { Segment 6,7,8 }
      SetBufColor(Buf, $0);
      MoveStr (Buf, ' þþþþþ', Back);
      if Segment[6] = 1 then
        Buf[1]:= SetColor(Buf[1], Front);
      if Segment[7] = 1 then begin
        Buf[2]:= SetColor(Buf[2], Front);
        Buf[3]:= SetColor(Buf[3], Front);
        Buf[4]:= SetColor(Buf[4], Front); end;
      if Segment[8] = 1 then
        Buf[5]:= SetColor(Buf[5], Front);
      WriteLine(0, 2, Size.X, 1, Buf);

      { Segment 9,10 }
      SetBufColor(Buf, $0);
      MoveStr (Buf, ' Û   Û', Back);
      if Segment[9] = 1 then
        Buf[1]:= SetColor(Buf[1], Front);
      if Segment[10] = 1 then
        Buf[5]:= SetColor(Buf[5], Front);
      WriteLine(0, 3, Size.X, 1, Buf);

      { Segment 11,12,13 }
      SetBufColor(Buf, $0);
      MoveStr (Buf, ' þþþþþ', Back);
      if Segment[11] = 1 then
        Buf[1]:= SetColor(Buf[1], Front);
      if Segment[12] = 1 then begin
        Buf[2]:= SetColor(Buf[2], Front);
        Buf[3]:= SetColor(Buf[3], Front);
        Buf[4]:= SetColor(Buf[4], Front); end;
      if Segment[13] = 1 then
        Buf[5]:= SetColor(Buf[5], Front);
      WriteLine(0, 4, Size.X, 1, Buf);
    end;

    procedure T7Segment.UpdateSegments;
    begin
      case Number of
        0:  Segment:= segm0;
        1:  Segment:= segm1;
        2:  Segment:= segm2;
        3:  Segment:= segm3;
        4:  Segment:= segm4;
        5:  Segment:= segm5;
        6:  Segment:= segm6;
        7:  Segment:= segm7;
        8:  Segment:= segm8;
        9:  Segment:= segm9;
        10: Segment:= segmA;
        11: Segment:= segmB;
        12: Segment:= segmC;
        13: Segment:= segmD;
        14: Segment:= segmE;
        15: Segment:= segmF;
        16: Segment:= segm_;
      else
        Segment:= segmBlank;
      end;
    end;

    {***********************************************************************}
    {**                            TBigClock                              **}
    {***********************************************************************}

    type
      PBlackView = ^TBlackView;    (* black background for TBigClock *)
      TBlackView = object(TView)
        procedure Draw; virtual;
      end;

    procedure TBlackView.Draw;
    var
      Buf  : TDrawBuffer;
      Color: word;
      i    : integer;
    begin
      Color:= $0F;
      for i:= 0 to Size.Y do
      begin
        MoveChar(Buf, ' ', Color, Size.X);
        if (i = 2) or (i = 4) then
        begin
          Buf[16]:= $0FFE;
          Buf[33]:= $0FFE;
        end;
        WriteLine(0, i, Size.X, 1, Buf);
      end;
    end;

    constructor TBigClock.Init(Top: TPoint; BackGround: boolean);
    const
      XPos : Array [1..6] of word = (1, 8, 18, 25, 35, 42);
    var
      R: TRect;
      P: TPoint;
      i: integer;
    begin
      R.Assign(Top.X, Top.Y, Top.X+50, Top.Y+7);
      { TP/BP7: inherited Init(R); }
      TGroup.Init(R);

      R.Assign(0, 0, Size.X, Size.Y);
      Insert(new(PBlackView, Init(R)));

      for i:= 1 to 6 do
      begin
        P.X:= XPos[i]; P.Y:= 1;
        Seg[i]:= new(P7Segment, Init(P, BackGround, 0));
        insert(Seg[i]);
      end;
    end;

    procedure TBigClock.HandleEvent(var Event: TEvent);
    var i: integer;
    begin
      { TP/BP7: inherited HandleEvent(Event); }
      TGroup.HandleEvent(Event);
      if Event.What = evBroadCast then
        if Event.Command = cmChangeBack then
        begin
          for i:= 1 to 6 do
            Message(Seg[i], evBroadCast, cmChangeBack, nil);
        end;
    end;

    procedure TBigClock.Update;
    var
      w, h, m, s, hs: word;
    begin
      GetTime(h, m, s, hs);
      w:= h div 10;
      Message(Seg[1], evBroadCast, cmChange7Segment, @w); (* Hours   - 10^1 *)
      w:= h mod 10;
      Message(Seg[2], evBroadCast, cmChange7Segment, @w); (* Hours   - 10^0 *)
      w:= m div 10;
      Message(Seg[3], evBroadCast, cmChange7Segment, @w); (* Minutes - 10^1 *)
      w:= m mod 10;
      Message(Seg[4], evBroadCast, cmChange7Segment, @w); (* Minutes - 10^0 *)
      w:= s div 10;
      Message(Seg[5], evBroadCast, cmChange7Segment, @w); (* Seconds - 10^1 *)
      w:= s mod 10;
      Message(Seg[6], evBroadCast, cmChange7Segment, @w); (* Seconds - 10^0 *)
    end;

    end.

    { the following contains additional files that should be included with this
      file.  To extract, you need XX3402 available with the SWAG distribution.

      1.     Cut the text below out, and save to a file  ..  filename.xx
      2.     Use XX3402  :   xx3402 d filename.xx
      3.     The decoded file should be created in the same directory.
      4.     If the file is a archive file, use the proper archive program to
             extract the members.

    { ------------------            CUT              ----------------------}

    *XX3402-019818-110497--72--85-44774----TVSOURCE.ZIP--1-OF--5
    I2g1--E++U+6+5qNPG7zQFtXnEA++5k7+++A++++Fp7-FYF3HIwiI23HfJJVPxgq2DoS6DzV
    oWyl2xh6L5R-v4JMdfW--rUCB8t-ULuFePDAFGM3YbOZ-Tjjsp4IsaE7VVMHEDbsS5n5iyQH
    5oyywTbvwC+Fjj27SyvWlKpwDETrybUnbGwQlB1Md0VUdPG53vzw0bx6MRgxYGce9P8pVEvj
    kjbZtOVzSE590dXOk1raiQXkNNkP7FC98GE4DgPHuTppDDrDgrpDDUhhnKO9ullVp6DFO1Ww
    Q94prKlZqcDPOHmzzirnWnrHzXkFyFWypYTzKRW5EMfzwxayExD1Uo8fH0QPQ8xJWVgp6L-f
    o+1LhYRkgTMz8vLwomzuDFnHfIOLxmot04vQoWvFVkQ+NRG1mUriFVeJx8f468H31DL2SwHC
    kkriFVeHFznGUnYDBvUP8GADxg6X4UC9VCMtyabgdX3mawUg6AkVH6g4K46a7C4Dw1hO8qE4
    Rcr+ZR8dc1yC+PLmo2dcMu3EFZWV70EmVFFLEW8h2UC+2LxVszvCK0nACqyv2fYnk0Nt61fd
    AQApcVmEEZGPwFLwQ1Nl-Ec47yBwC83GYHLltG91NnaMGK2vHIYzbBJZhLe9LGw43NCwWR6P
    bfC-L54RpGTqa2W5ROo0OJ0VX2wjngUwxTHl0rd4ywu6jvIsKSSX0IYHngm6jZwTaULyc457
    yiy7brbyYdrinIXTzKUO0olgLSF5a7aacgO8D6TJBgwfq+YXZXZGTNjOnZMUZEKyRacXd28v
    DIuvaUR6eMrOCQa10U+wAIX3BHDtGS-Ltx5sxgz5EMcUULxOgDw2xcTXcBKyNkiqbWXHY3q6
    4vwNpwgJJ4fXBVcyWyjZrDRgkRPnLr5Nar5NOzampz7ZfyL9rgnr2O6YtxgwgPtvE9fMnndf
    jjUo-InsCWUxU6J2RpmraVjJF94uUaVlxvbJnzRF4Q2dmF8ueOebpOEBDO-f71FDRx9gXENn
    hQAKPcveyuWAWGAiEnRJxTG7AUuIjbKS8CB+4S0KYjeYNAH-mh-+JHpxcaG-obT92mI9Z+3i
    83DAYufncSirPuIJCHlUJKUo-hB7rI77uW-bBo6Q5b+ZXSyeiwGiaPfFMcQOfi0MXvwgWmz9
    H-lDUduRYuOBlAf7lFplsedzR5E27prW0ZztHBQgMtXhTNInDJRofnp5dpd5-CyXSpzYZic8
    Ph+WhrsHTIDwtR7dpbi-jjQgXSty02TVxwFchbbBsx7csjzsYqBMDB+zALkPvfKkaAjCQLCB
    +KehxDWsJzBAOHMrKGRER9i+iT4rE5hwS5s9yfxMfUlun+Cp2Csxc9nz+J-9+kEI++6+0+1n
    WKwWMjLCLvI6++0Z8E++0k+++2RGEINDEYciI23HrJVjQxfA2Lzj4Ly5bPkd77UaY4YaxiCq
    XYBgCfNVP76wSRCNEnfUbUURpIY4XOTTjPRv7yY+UQ0VGORYld5iRbyvhzxpHmzrzDrvyCU7
    xjlNbgxrrE3QrJxwubrsVrvhxTckXhVg6XkKU-nykPpMfT7QmZYOWT2YVddLVnTjrvwxSTwC
    VWYAt-GywW+EMvv8wp449CMyA+KTvXiRflTrbIfRbbCSLVGfOQ6b+MSr1LXvhhJudqJ5wHE7
    zENQRStj9yuyfT-oHauN02tVPZHzisWzBrpyMBqSsRDXcxf9smC+-nbZAC7naAj6Jm-1W0R0
    EF88y-HrHvPw22JfQ+81X2IVn5Q36l3ma6hs+cAY4YfcAsIyzkj600POinleEbQ2eIkUINlE
    ++PxDrzcknhOxJW6CpcN1Wx2e-a2xj+9wCFomY7mhNf6SEU03QsEQ7S5AEFOD7q3Aqx0Pn1L
    2-l213fHaJF81+DSn+xk2EHElKWRwbUWhFoav721ooWQeNWoa946HKASkNTiEzT1HOQ7LmQw
    p6dejsNXek-1VPGYK51T+76pWNQXgrvF15CK8jVoQTDE+GKpbY5e506z9TUgNheIDB+8nMJK
    QQUVaTYMukrGeG+pqIFI3WOIAR9vEgo0Zb9TudgcfOrFIwIgx1X62PtO+8ZBdKpjAR+1xfUk
    iDzQUJVaU0EzNu6rtIKQVoob8fWp7sS5uxtLw0AqJoj0WAx9cUWxdhoWMe2LoQ4CIyqq7kAN
    vG9fijil+nsDhA3ROOB6HVpSf0YFFtLE609CfIwoEyNx5oQmoNeEr577hvoj5NX8FptmeY98
    FDV4F+Cw0Ej5FPVEL9abRVIe3rbNurzH8gr2YYnh3uMRDi3FUPRe8NBX2km7oMVfYqfT1rYw
    Fmo73FKU2kaZCJZgJbp7cOEDkFqbK9Z1Dd6FnsypR8+arAaM4mFfSwcx2O8B9+vayZm4Tu7M
    NQC+op2wXmhZQZw4zchAaV8cgp+aMlWO6QoHnmQpYGTWSLjNMADfWvifnaLjdbRjJCR4a6ok
    BlyoyodwFXY7-U+Zqm7+IJsiwecnuDQSh4dl2cJe8Skx8GBTV0lKw1iVTHAe93aOmaKV3dKb
    8NdSanQoKNj-Q8XltfWdNLalpXnUxEl7Il4XBf5Kq2g03dg8Gt4XXG-4y8dB4p3No7v0tLXX
    YMk3mUypOgdmYCt1xyt9hzBJKtZvroa1sdHOouAYo8ty33GjPIXPsxU2ksv034KV1zdDFCTY
    zdVfawJ9mcpY22X89Yz9JeRK6zhv1STfsckEVynYXGOPAOJkrj+WOSAos0CAHtzgJeGRWpzC
    O4ORfNkbfJ9CN1PHVxoigtlH4q21dzIE1EKqiK0DIC1nYEXFQUerp6lvMWGwn6o8+j2xwsj7
    fji9XxrD1yURwrvHiPgOL8C2ZrLwWzxkMc0fW6puknzCQ620PgEwHfh8sx8wqAW4lHD13uQn
    6unTdqdm1jwQoBANfEumJQBJ4zHczrdia2I1ocM7oMNHuIwdsAQwCgj5WJ13IS93yVFRfKiB
    OIuaKFbl3jFNl7n0IAe+gv0SEQkWuL2zWHUwHCEQ0OAsMQ5NtbbiWReYfNDNV9S0ROpRhmAK
    hQ20PFrfJXtmSv1wEDIGw0R8gSpusT0y4lOKvUcg8gmLOCXOWfqL67xg0PQZdlHfWgRxeKeD
    968hqXp-lDyJQ-LbZHX14WKVFpoJgGvLj3zWW+6fIqkReuiusFT-txJMpDGmYjSr16i5zdZB
    qjuZW9m+ImuMFtgAyLeK1NERFH72n-S7CeLtjnfk1TIVAe+WeDSlpMPMiGRROmkvMMb9wy+l
    B4JqjQ4j-vEeDZWPqfIB3Zqo4d0q8Wru-Yq8Tt0SdOqTNxGRYrzT-1y+oqtsC6sbhQkcqvoK
    2547oyunqMQwZvxNxvavaEzFdTI1KBTJMV07EcbglSfUv7Kd+9-cBm-hvx8HGU67aJbOLUwd
    RnVkTzzrYNPttTV6H4Q-lqg0Vdna7iE+jnfVP9idgLD7pZy4Ql-xXczQO15WazgDAYAy3XFJ
    DdYfabSbngI1kdqN19Fn3YYUcmxCns2hu153ltESXQVn8tiKb-bgb7epKD0UVaCOWIAlmaTm
    40wl8-GDXn8T3Z3XnqXrQwLvWEDNm3hsTFg4lTBaX29ZfGXZMSz+KX4PX3Jpoj6oQT0T0Phh
    y59EGrlN-Pph3bCE4Gdix4OcSCdUtZZTE3uiZfYQ8BwwVon7HHXfBQH-2GBMk4zklYFUHbeC
    LsEwm0slWSej8DGK9LtTcrJ7WHUhVqkhoJb81DPP4joeCPWPftoHzwleNkTDLpLhXDXaPiDf
    dfOscHBKJgGJ+hi+2RACeaS3QaAZnUaFnAuhttbOStN0Os1JKjVUwu5aJY2+Eqq9at3Lrsev
    KVxnrCL8K6ZQ745agQcgDAb4xRzUxEvdy0cXrmgjhkgdHR+pEHyEeSg4fzWc8SgddF4o2X2z
    fm1EJxCj4rxET5DbPuyB3S4txG+LKJoFBd-GCqxFDqyNVYsjOKjDkY04q92g68pBLTBNKxy0
    iLB7q+hpXl584+RSEKrFUVBMp3onsL88mrOc9DCJ6qj3BIgvatKhbgRyK2R5l6eCGnhZ3ROY
    E2JxfR4MIwSfKpGFbei8PAoNSb7CNuKmrhPGEaWuGKV7oOotMp5CvOkQcjsOlpPQHam7lt7Y
    zIIpq9bty4Ypq13Y9brLudAnv36g0jGRup+pzYzoHLsXx6juMmOzSQ-fdQBon7IajRcvRqbg
    moqoHLbNBbZ79qZvnmOOKqizFdcqn+KlWP8JtLMXPPj9GBMcZfRdgKzfzKzdgOZNsySyftTx
    h9Hht0LHdwzyBXP4gwlDw2cjapqu0Q1Rx0ln5Cua1az9wfN8SJiKhvL0ik-nHo6-aw6iBmLt
    aHTpz6cnzuwThFUPWgfkXB4-bhi54GAgpcwC3jHQDhmEMT2CALPcztj5Fzw-I2g1--E++U+6
    +7GNPW9fRcbPUEI++06K+++9++++GIt4Ho7-IWtEEJDJK43DsnUEzMv2TlVdHm8-I9IFoVsh
    LGpZMEw73UHRNOLHfSEaPijPp8sQhw0VyyxbCrPWh2ZPSYWbmtQa5gznn9mNgRqLzJQyTyzi
    jA+f5uDnxQhZ5muzLBnoHizYtmZACMgk3H-+j2vbX2qTCFaB-LWF1urXszQkS6Myaw+1HV6m
    kVIublV3+gS+IfWsCnxzC9ovLqjPBjvQQ73CNbWQM1U8sCUc1Bz9hPaMn4UQk4TA7sUy9yWQ
    5psXYfHVAPDy6l2z4n3yMxiqs5FrNoO7+285H99FIEAjjrkz09sR-XQ5kQK-bY8ck5m66enb
    dnW3HtnAAIw1i-bwWGAVLvsFz7VeTT2wZFA-PWwZO+zlCll-3rt+jzXi85az7CQsMXlKsshD
    5ny7Ji+Aj+-Z+UM7cHw75M4EQiJyhKPMVZFkCOyXBHTEiWRzsHNQAHeud88nD+DHKDhNS8XQ
    gxuIL7A0dUDYxJJwT+haL3eovmIHN2OamYgnlsvYxYvEIk+c2XCQ7AiqrczNcpmx1ED42cmc
    2IGAmeJaYK+Q9WLfLczBO7mqcGwd2-osZHxhZnPT8CduXKRQtShjWAM7DdxX8fmtx30zGEXx
    urRUHfWMcQFc1aQo2cFFxTsNWpiIM03YR4zBqy7wRuJD51qiYbyRlYVUPmCfvr08FRpIGyXi
    XcuE4ccaHb80dD4cpKlqAcb48UWKYdOKbBalvCb0ixPliv0dcQZYai07X--GoQUKwzPTsD2p
    HYpDu7QhebwgndjMMw7c2grOoBUsskNsF8U8883Xn6beu6tiFdaiYrNL+zlcu8zCWgOE3Ncv
    DSnIR+AmB9BI4s0H1x+2AQPObhmkcg8u6Dr27i4ioNDuYMACVAokk2a8Op44G2c941bGR37H
    sdZGnwNhkVMNbYRtHLZKFhTJmSTdGCWjlgAM0SU0bjQsEr42Id45-2-yMXDjX2oa2UfMo1MW
    hsnOFQYuV4Q9BhH+fS0yrmZIrHdfakdSftb3dWXdj+DZ6OfgEovhrs7hmPxTMHcGMwxKhjy5
    1ABNoSXnK-OEWbo9ubqwxJSndJjQvcsYGe5oNYD7Z-eHPoCQPGJb944wpMPSgw13ECUAY++i
    02x3+DRMCV25Q6LIpqYYWJRPxwV+FKAS+-70FjCFwGmlobnvQRklOrOJLzfROzbiqcsUxApS
    e2pErbgeuljT6GNn05os-0z7ceWfx2+LbqyYOYzqxeI3W+inxw4yrWInJmFQVbg+9cXKerZ8
    Q843Il5FZNbVZj503LUGHVKj+PBkeYZY3EYbiilJDSW+3zvjqmaNgpZnY51FX5Bpy7qmh45U
    ZVvJ8klQVaO09BRJ5QvoXOf4RAray4mAiBSP1EDMUvr+g-YM73gb1ufqfkX3LXC+ddI460R8
    JHh99ZX-rcYpmyY1XUqN3TT0442CCtYNFM2L-dXgZIOIG3uodE6qh9+5fT1L8aVP2KLgQ+bP
    xhaOFWpdIrQJ3TgtGQYUkHZnAY6cIiqliGcM4p4m8GajcKL-ZgqcqMeQnSbNVe006jQ+bXAn
    k2Ca4ehi6Espdt8O2xB1LYZDe1hcDHRGK7337bh8lV4OYfXKCBCFLayRxefSDYBQFSecRExB
    ***** END OF BLOCK 1 *****

    *XX3402-019818-110497--72--85-26886----TVSOURCE.ZIP--2-OF--5
    I1uIwbMdKx7q3m6qTTNAdfGorsQ9GmxEbpcPBwmcR-rPOs6O9UTp0ap3y5MVfGqdwCquLIt0
    a7CE7Mtjpxew-RNXyFhax+0DGPsfqi1zzsDgxenkrqsdunf9cQfFeUKmopina9FWgmcRRGgC
    a8jimAJBMCXScxGRNqzD8NueixOGKZWdhbXbKbD-oY7pI1dNP2hZdEztuQiSiwnZOC5OdMvG
    ubyLpMTk3TwBz2QV8WuG0kuJfs3psGdTHjDnHDJxgm74yerl1p-9+kEI++6+0++FaqsWAF01
    MqE5++0r3k++1++++2ZCFYxIFJBI9Z--IvpMyqwPiF5yrM1zVs3PEB7V6xWCvx7MtnNym1aX
    RSn8OdCUO+3eRmHhSNQIG8tZpHXzvFoCiEwxP1St66g2qWItky5rnMhyyC29bxyqhlvU0twU
    QnqsSXwsjcG91yRLkzvBY6O4O8mMnK0gBDl1ddPbHcs5ZQmdaWpoCdZOOAQRq5jvxUqA3X-I
    CLn292gbi44TAmK3lEG2UTB-jzzlSB-zoPOjCQyJhWMjQ7cV52FkQ90zzsPqpXMjN-9-SxGt
    Y6gJaTufGt3aVn1rpfx9vKorkKxgqpRkifopoqeWFEud50h9hDHQM45EE87A-6ZCvp1HWlfx
    Wf4Z3y6hUfgItqsq3NaOo2iCge+TdqEYBCikWlZiPl5LZshXcjccO4UDuGh9Mq3H7HhiULha
    3mF7jsRkvRtCG+RxDM0R6imEWH38ikCYqVrIWsXMdbQgAZ6eEm4R-6aYVhT3VRNcNPPk0l5y
    IchakZW1AMbCZItu+Q655USPtZUj7HJi7GrBZ7mYocNRN7414UDB8NYMA8aA2MkJqU91mcRm
    RWS3FjV3m0H1zVqRcbp5lj5P6EnthxAXC9IhFBNPZPiEePqlkVPaPub2pLIDA2yn12M6gQUm
    H4+yFSYU6oZ0EGcvHSI2A1A6JV4TtP2O4t-Nuqft56P-Po-SGxqsSFMh7REANGrUrK7RvZcv
    +BocmeHbMPfaEHW0zknfuK2tKDfA4KgAvY8E4ui9q0fB014Yv24pyrFujsS1oXnSmEr2CNyN
    LS66xbNrSwg236PU5moMUSPdsxmTd79PvHod7yes86Ifc9rkbVQC4lVobYQQ4wXF413VZZSo
    C1qti1QMJltAijP71DPV2Sea4lTGdVZHe352IzGIoXtSpTNKysRjw5FMnpCN9CG93txGnnSl
    VzBUQ-FjEDQ3TxbS4W4VuT-BtFFpuYdDIuNOtmUXbXLAVLFFdHVOBUN9CjPPR1xCVSA7votJ
    bdBGhpduXuvKZ3B5ZNStFMoU0xhCVM4NFiBQXTAdVzQCX+dfZGHfHNfUaiSiar8WZIVCCIIy
    PonhhKnEQfMsnJ1c3MH8QBj+kYc4rBtmJ+m6VU54hYb0SvHxSyjI1XncUytlxzDV2TqSR1z1
    8xXXoEwsPxTu6dwz-d2z1IruiHAQhrQXyCAtDJ3N0efNjy8WrLcwnimfHszEjoxh8pflnRgF
    nLu8L+XzjIXhImfCLnxuihMIC-LbfrYoYDi2XUqG8qMsBL3yaWa1ZEuNNdpC7rnuXlRcwDEF
    y2taCcoUnmAk7c8d0JKIALRdNVVGA5pgXd8Un9icA7mLajvbOlR5GE9CeMnWuR-RV87+ms9x
    h1OJY4Cix88eSZAlstdICfAk7dp6qfrBZO7HCL3Z6CRZsJCSfyEVEgfUeHc6dsuvXncE4ZfM
    3sRdXar0WK+WZ8OaomivUh0X86YivR9dAVnPo2-k+y8CKAkGMNRu3hfH4DXtnpLnIiyxgbjJ
    rlkSYIWj5eMhqfuTuHF4WE9WSSvCv6cG6QYRI4BfrXkoEXwTVL8mhDyO-Rl3c+K7QnvDbQU8
    v3NYoywEvyoSgyjSxha6JghdLHHJ+AmJP3ZiQeN0HX-dqYKneNouhsB2BMTLn+4z6I5GOjLK
    7zMrHRmYzoKU0LzodIYT8jLrdGz+rfSWNf7okJQ5F+Hj-gjkClxr5RenICtsn5QM7LK5qaq-
    Si3RTGHWKpRKjBDCZ2bf5e90mMJSykxjCYhaglTH0QS093WOuIglmX-YRRDyJwXezpuKzkfo
    CNUsldvYcFZwHr5W+TYRb+nEc+r2P4GZyefTmnTzyomuP7Mw9ZXDtAI5Y4fCU517tAvkpUw7
    0uZh4FyEF5160gpQm0GLB3dRM8Xw4XbwpXcwrpWmEtD+9exSMP5-LgLOfsKlBCqwnOUQqSyu
    rKv7HYIRYSdqjvWwjVcAXnwA1m3rYWA2CYi49fqtl-RDVGOXmHEupJXd47RNrj0sEsTnor4s
    uyKYIfdtuFWv1MNw3b73V11ZpRlyCSlo-RuLVysnl7TBJmWIgwBkjqYGDWAf7QvPTWOo69sc
    SFTgrqBQKDFrbjMgsUfBAzuGQyE4Zins5aptTN5tbaptwuvbHSUyRyI9i1QOl6pBWTg1YvFO
    NGHxnlHbHLc4rKBi3Rdv-l5w4A3Dx5zjHlvzFUzXyoNchTnApQnZL2DQV1RE9itCIJfIbtcT
    bkBbpIKvx2nrln+Ci8UgWH9lPjrPzlaZuvbpqNmu6NTKxz68VVwNVMCT06ZZ7rGhx5KJEIh+
    raaAUlxTG6CuRCpJhLhj6u-zfrQ7rPrC2WR-xEYPKqhiDRswiZCocj8C2Q3cT6NXIKFqSQiU
    eRno-XCAvET0cbri8hqHESkRv+hiTZxvLzBzHRXMUWOdQOKrP1t1SXjncowLt+REhp5nxhwm
    je0sP8qGI3UGroZfB9PILCOzldzZpf7UJQwOiKXnJOtCjGzQWajwjojuUYiFGjXiuQit1pS4
    kp+VyAkJrzIRhpRz1UfNy1dHTCoZi9fPKzw1I2g1--E++U+6+0W9Pm7rLSr-ok6++B+5+++8
    ++++K3F3IpEl9Z--IspJrpDOE--yNsPzMFwu6olX0jKVIlUT29-pKai8IT53aN+gSWLQNN69
    mXXpPyzSLGsY-JFSvbMryyqDPzR6Ib4T-YiMydX7PfzNO1OS6Qy0SkEl-rwIG5H+5wMWL21+
    6z0zMt-+V5D4AE94sMcn0RDfgz5B7TlJvba44MlGhg6oQy-WxUR1GNR-YXVknT0FviT6Qnea
    KhElEw2nqKk+VAgPlWDl0ATEvLEuqWXL0GePRvsa399QyTfKJofT8cKCpD77WZYMG0NsKrp+
    a+cwnIAdIXWXRDh4HOK54CIdkZYIMlxK97Jt24xNjpDRAMtLm4Jf3OGUPnrkxRbSvqQ8qEt4
    4Jn8ECPNHydVrFpth4Z5YP2do0oGJkZA8DW2OWJlVjSA8wxbw9pD7xuL5b5mU0aHl6tqIOFE
    ZmdRgJ-8zkrZy2aemWNhbQ525PXHrX4R7ysI1e5P9RKrVTdKePJKHEQdTy3XmnCHce+7ma0R
    wElHqJ8KxbjXTGqo7oIs0UgTWr-u0aow9SkCe2rjW2VbWOrXJvGTCuwYcbP+te5iixBE3eKk
    d4t4k38elgtEKdidBrbJsve1JsBbS9Znft86nYrbOVeJL2KlBwQrVjyBH8jSRZqqwxvlZLs8
    UUlBDDTa6N+UtaOJQ1IImmLtx6lQyv6kZFxfgrpHSjKRhDhanvpB89qc+zcVuc3LERepXmDA
    3Z7EWvTanvCHMl1gv1VkQ6t9YOsDloF7Si-+dlUbvwuxG3GXAj9Q00-Geh7bAEtaZbQPh7V+
    nk+AUmkAcZRdzixFqjzCv3mbvNR-3PX-8qgoTGSXgMpkricswC4ITcvZd9Hyk5Lfs4IEmwDd
    0smTa8GSp5y94JabXa9sRwvYDcXHclSsG7+LvBRU3fDH6uQu75h+ha7jtO3kkiIk3VaK47n3
    vLOv26pEMO4Q7wp-1wdzhIezOsyz3GQtfoUXkEhirKPX5p-9+kEI++6+0+--WqwWzXrEyxI-
    +++T-+++0U+++3VIFJBIAWtEEJC3Iw3iqn+AjET6Dz-c+oPOPVUqCCWVOkcoVuq4tvMt-J+h
    ChKKGMMY7mW8zTh6mJvQNABm2Tbsx2HmCOop4mhyked0txzBdtDdt-Iu7nM6dc3eeFjne9Eo
    St1M86oGZ6NvfHmg5dMrXxzU3pzd51dMK9J1un8sSzeChOTUeaonS30sdrUJnj0+TqZlCU2c
    jfkE+mtVLMJcna+pU0Oc7-JZKpI9fslCaQ+zPWi5sh1RD3NectqrLSqB7MvmDIl1pWUvWv0I
    Ktn1HZbTWKqccdOVeT5JqACgJxU70qICJIbhIDe24uLttWhIlRbbsaBC8rZ4enkh7pnVbR+U
    cwM58QP9qNJnOeCHwykwiwUioh14EbXA9y2fvdC0sml67KJu88xbhodWG7TOcTI7cqYjSvop
    xMx-6GF52U2vpEXk6589cVooC1uGMCVIUR5oS1UO95jz6TiIxYnmexQxa5OYncLpv8vZVHZW
    jwa-P15BBKeD3iLsSOOlk41YkSn-FjMwqbWn6k4mAdnzxH7w8rzlAic-e+N2a-NZh+9wAyfS
    ezhKobb0WyiClBuFTn11KWAlvbr2WugdIJel5spC6r6pX7r1bnzJOAsr5zOEZdoSNEiXAKfC
    ddDTI2g1--E++U+6+4G9Pm7OsPAfO+6++7M3+++8++++K3F3IpEn9Z--IsJIGqzOE-0y6z2T
    tZ+dFb7QYeee0i6E04ZFGyguHY6iYFNvA3jA9ZejGJ1IzDPCfVwMtPILnwvvyrP44mIHlRMk
    0n5HbzfhJfjp05b42UGtU516Yp2eclL2iC+0My+0fUHLA9iSX4wisNw7m1DAs3nl9OfAVRzn
    jlVd2gsq4lSa858GfnbSoqRajvN872Kaqmq+O-r872YF-b1GvLOhISwqO4nyR2RNm56LKeZj
    Z44ZZ9OG2x6htF5HL6eCQH0bOfk5TWLq0tghfD76GkIHUZ8eWMU6spmVJJtedjDg7o5iktMf
    bPDoaRxr7i6IlpgIqhYm-JPeEKWzbRTX7VFpO2IFKxUZ8qJn-IujvB3Iw0av9vYkxnYaL7XU
    Fx7x5DdTSjEqGpFQomjN4DAsl3O15Oz4urin5j5xiIzG9IZTfPMaPE+0vtqOCRQaR5kLe1Tg
    R8nnF4Gch3Dt44K3MsypUO3-OM2a61E-DK+Hn1TIskRh4+q88c3rNVgAj83r0wRkMfKze9hx
    jf8xk0qM7aBVCwS3orLVkkIRhleAqjc1RwvFopaeXqRDA5vUygW3lZbBmHFn6JfzmPZy9TnW
    x+b8wFqmO7IcaMjM73fB9otBjaeuukG0dtpCSPDmawGxAqDjX22nidf8toDlUdTlsMiWabSn
    N-c4UBiFL8z73zEGFE4UxeZAUzouvvo+ddWNLsen5mXQ1dJYwMVZqb+wKX8Fc85EhOmwCIla
    TscFCe1XrOKkSzT0IVHt9-eKNHkF4Cz5qi8cByDCixf2H4CXDxi70PTRxO1yInLOCRXYuVfY
    cb2vZu9AufJPzk3EGkA23++0++U+j6dj6gxXChfi1E++oHo+++c+++-MJYZ3JpAiI23HnFhf
    Pxgswbi+z6S-oIDgJD3NhVAbxaJjbJQPsB692iwqjO7Ro-7hupMDbmX5nFLvGzSz56v1VoFN
    weB7o3Gh2sj14Qu9ky4EyPfvXQwTqphTsFgTVTD9iwg-rDpuSTvyZfzpkMZwbne73sIEXG0Y
    QzXJcrCKknaBdUylBtsYI5JeM-wRhTSCCX-wU22Ik5jeyxuM9ctn3cIYcGsE-VQrtyTjynTb
    OrZvX1nzX-AKnCX2dx0qcBpiBXhwv1U7Ne3fkNjnaujyikw9CCRLlDCvA7SQzykZjxRRyhmw
    DQ8aqpjJrSohUBgcc11WddV5gQi+amONS+lacNRo2PursY2eb6Ax44UIVaFyNn1mEUdn9tb+
    M-MD6vUan02y52+IksFPZwNpi-n-EnG14OC00g1Uyewbpx+FfEs72Q8NcJ1lEcvUQEhLk6a0
    U6H0p4kGnIDkY43B+O2oHA1bkkhN852asUrab+E39k5CuHFWn-juh3sI+3ku2gUX9qM7iWbl
    TG+k7Aln6-fyanc7J+Rru9Up453lK28G4MBvx4H3lbnWwK275qwqRIZ00Fy9Rm+EIAP6a3Cj
    ***** END OF BLOCK 2 *****

    *XX3402-019818-110497--72--85-56493----TVSOURCE.ZIP--3-OF--5
    Age34AJF60EYoubjCEFb-cB9pxTm-1GNF0uhpO5DiJ-e682XVDATM29iiMcWWCtd55iiJ-QN
    gWEab2q3fKXxQbrK5tk18aze2oTqxI6iEW+4FXeilnXg+NJ8i40l3sutbNF9Q9q5B3PI2e3C
    375+eFwtjuB09DtmliL3vq6UPgGrZ2nZCkDuVEFHbqcpSTW0xe7ibJi+OkiJUnfbp9bhdPOt
    gUNW-+g4G3kE5W1N4gkxrpT2VdGP9i1usv7X97-y+RAs4gQYM5+rC9wRq+7NT4qOlVSikPWd
    KQF3uCklCVNyV2MpqNFIhOhI-tpPqP4azMxAVOqt02eJL6D0Uw7NA8ElYmNjc8uD-0z6cnAV
    O0wCJaEezEdIVjnXw6z9DyTwQp2F07KxGY3Nb05ZaIc6FOSc2Aruw24Af9+47xtMe3Vt9Z6-
    -liodI8cH0PR6CUmJU5dAbJs4wpF21ZBCMv+ECEGEmV0EjIhPFJiUhoOaY5kx2JAcFuySpnN
    wMUsJ++NtGEXNaa5gA0BjLii9Ugm3+R5l34Qs+pBnYV0R6+wVjp4cx5Xrvv01TrDX962L6F9
    -tQaYHBO8yEDGSVoEg6lpIOKV4l7u7MaMU4v7zuA9YmRp0oUHyW2QDKY51IZ6EY0V6rXOAMh
    n2peIAWWzDNKwX+JWfmKn-v1NwZqfvUeJ5QtGElNFbXGog4iwBS-dW8PekAFotGVQ-uHfZ7F
    HnNmenbIbQIIrd9ExSbtDSSkSYxW2ByuA-0zOnoyKdnAW3z+yoK2kyLkgtXA3u4XKGVH-i-q
    jFLwRC3OTgbrdO5PYtDuKbcn8YVw8p2EOiVAqcm-AshXp5PW-SPOfDGYWKYxrFa8KWqPkN26
    LQXEaSU34r82B6gQ8K7DMUUXe4+6julbO-FH0gC5V8cQUQ620GW4392bALENXe9IfzJ9Pt4V
    qoYo3l4pEVmYIV3naGpem0-KshufD4u-czRSu2MNHz8pNr8YSYkWrwJkYUpRt0UZdbaG1Mcf
    2Q9WaNB2AJm4bdlO7lUHK-Q4BlmVhg1V6+hB76v7koSvLfRPbn02c8ZuCV9AFWAOWqlZo9YR
    oplYIFk8UMpExnaBEEIHR2-r2q7KCpzqOp-oIcBMOMFFs4seFIx1rcb3gWhGofEFUuJx+5gz
    +OvCjr4eZPq8-T1HgRrFfGQy0L4aJjWzDnEWVhMr6fFqMFV3DWJVXaUM7I0Ql9ibY8rv6Xy2
    udUfhENzpwE83Vd2IwvzRSGVajdZ6o5TZ8OKXjkJ-CtgCiKKwSYcsQHXY5zbhZBgN2na8-Tt
    NEK41JExj2h5NCMbqMe34NCQrRHJ+Xsxl7S3wAIEcCnB3iRPacOUyyYLoKZUU9EncHuadXRp
    cOwbkM4M+uYzxnMlLsbpBXCLaGYhy-gae1+ZX52JQtK9vIUuAIdBaR2lbqICyKl9gaa7B7IG
    molLfJpQwu2bwMIZihYeexj38h-JGojOjfqJNh-Wcs2hXxWnfWVDvCuir04fF4TBcoYx3pTP
    KtaG7ETpBHPOrVfGgFSW7fz8nL0b0ybSBqRVPJLV-cA0wNEUU1SGkxHTHkW4Mbdz2YT2DGIg
    kJIwZDuExXdJyyhX6szCieLwsLDeIl6LlgB5Yg63vne7iwRNseNuG2THvZNEIyeGuL-xhOJR
    VGI0nzMKpmhWbAl4L95M7VQzuPTdYd7GDdLgbINy33SPL8CskDKnvHWi97If4gsUl3qDLx59
    KqaqdBNrwG1WFIk0eaNsFG3SFTToR29W8aTAUVrMgS1IUZjjjvFy7pK6DPWyN+So+CwV6SzF
    2zvVVPHOg80VgGmk9FGsNeUbnNeJRYdmNoA94TFMUugzswUamSwvNqJgSQYt8nX6b33jjauc
    +wQEImS8LSY6YsY3EK+-Mprkcr+gJVCdBSKBe2eCpoJYMQUAlM678vcZBwX+0qUprowuUG7K
    bomshGOHL3gEw9MUm9Jlhcst+R3q6PPiu3nGfrPyobGvufBXONEoQYkaw1Sk4m600C-5ylAb
    hhDMoHq0M935Su25MsgxCaMDb86WoLwdFnj9vv-SkB4EUorwn5KZAnkwPClb4Mc3vfnInr1o
    8g8l5zNrtrYzQppi9hRRuqSQfKAyo36zeshDiwnDLDS7TjPWLWFHbdTo6iEUwm9Z23Qom5n3
    g1iq5yDDzXpFmJjFN0uQs5uTqshrfDo6SWvgfJx+nte3Pogs+7VFHLj-x+ALUloJwveEnWz0
    a1QCeMj4dnIXtFC9-vlCos6fSMEVyZZaBaZZ4OC3aLyhxVacfkxrB7YRiSJlYAfEdnixFuF2
    v-jmcJHYUGnhZMYg3jdBN3P521yGoDN8cOxc2AIDdI99+tHpAaCz5ojYteewxnh46vCWxrqX
    YJb5A9Wc9mwOMiCBSZyrnlFI7+JidBg5Zh++nkathFfdZhAQQKZTIREVDYoGqXq4yTHoUMGe
    U0dK57yAoJz2Pr4sVItHbMxCzMVFS+rnoPyW8--TrgGFGYjSoCHwGs8vnVjNQ3B5M5KjOQ3S
    InNRVcn4GTIRbJTHgf6Z-PidpJteIpAwpTaSzd6Tt0jM+2q+3Y+PM-zU+8+1Q+VkV1Qps+HU
    3C-AKVhfIsqiKKqiqa9maTwPVFNP4UClvHlqErRDTtOwNhXB7KArJX0FMPQqkquIQxsiM7Q6
    idHnzSJOOukTyq+nv0IuvumIStrC1xTNSyLMFthV9lavzspXtv3DmWnKq3FfdmhprWUZZa4T
    fTHnRKCTPqnjgf2jjV4vYQNcQO-GlfYdPZ25-fMsS12d9AZF3wWKzuydm7lPtbHgf1zur4LN
    4bVHvsiY06ZWIc4zDgVTRuwvujrpjVFquM7tYuz4uXOlBQXMCnON3I13tP5aJnEKXYZ8edud
    EbvQef7143qc8oQXvFa9pmiuySdmqNDeuXorOHJLNTtQuur091ZrKjMMKxnZbNPLjcgD1PB1
    nAKf6-g6nJKRiMmgTyEQOYHGt5iH-pDpD62Ybh4bOWGHQKZhDzLL1TPB3r2I7dNUgmhDgiKa
    7eperycxgutdUGAvpckRhu5OCSOT6gJwpKVQLDGmJXMboyewpXDvFH2sGvjccP5bkU3a7Wrj
    lAKF96e2D0yX9Ul6ahX-knaNo93GUA2ubhdvT1-lOIliTA0BogDhqSWXVtKkJ0Cm7RouOStG
    WYjwWNBsRNVt-vsqAZjUusKGwahuz4xPHOgZcsIdgBWwjKfYRbGUxrnzkqR5qXOB7MfUFzgH
    56BhF-+IlWu6NrDl-3g3+gqAU8Z1F4cKm1HnN4GrJe3PeulPix0hbLJ9dsD-KOhAhDo0ZTrw
    M7gJC189h8rxPvH5btmJDtTNczpISykzLKdvjRE5JgQuT2szD5Wer7oTpUwDbquFtbe953Zq
    snYRwSWd-f2PHtSvhJtiqvPgdaIzPp-wQZGoTxmkO1x1L4mj8UWKNG03P11JWQVMNNeNdeeB
    PbNLvJXKEdH2RU3W8oWn+4YeG8g+OGZ6ik-d8wVy+P8j6+Q3m640R+eEXc6Q3W050b7IU-ld
    GPYGwd0yVhW9Y-ABOGt0HXKYhEUtot1q6iFQEzML6He9gkwK6Pz7n0TBWlTskvqeYFixG0Yk
    jQzqbIi-uFJmfULtFljmgdpyopR4VxU+kylKifUwab8hfbWOF-ttnROMbmapsVM-Roe3knKF
    VKTdjWQrJ3YObNqmeLnxJIDuH14Zze-GOWAsZVpK67rwUMI6NZKDmxygsPt-T4rLZhqN2b5u
    s7DYtS8wNvOrKcjhqOse3yywgbVLxCNQyIFPffvljQTo3i1RRQF+rOq2v56ZuZrJaEst6znH
    r9SUlHzhNWonbZ3l+PVCFlI48nLKmb9ATYDLMncPpqD2DJ4X67AP77xKGpz6bG42S6OESaPy
    2A5o7FhxuO1cFhTpCkt35LvoDjLsukTgbCsZlr9r7YPFutAOtBcmH6BZgRHX74QGiQnqtdnG
    RZxP7GfgEVxNBd9eTjvPW2PVNAbY8XK3TDFddhFNsHkncmqDBBTJAZ8h9hura3i+BvP2qSL8
    SppN7nYMpVYas5frMAjgkiHMLgNltX2znvY-efjkBdf3HDlJaxrsP8gs9MY5YJh4jDZ6sUq1
    S90AwxPal8ywQ6NzLJ9UD3X4STiFl2rCqH9CxnQbTYiR85F9C4T9C1xs7557SFPWyPTuzk3E
    GkA23++0++U+o83k6WLjkCHB-E++y-g+++k+++-BHpN7FJFHJ0tEEJDhKSxiqnMEzlsUvr-1
    DxVS3RKmbSMTUgqpbGv+YbGCymRT0h+GPPCaG24Yv-X3z37xU8p3La79U9l7AN8GzwFBMfRQ
    qmwJ16h5rhrjXYTmdBDPbnznybBxvGpwtdL7D4iSD4pKXy1ctAJVcrLO+bUiI-Q1vo1fVSa2
    tsn64n6p5cpWoip7mDg3w5NqmVgvKx+SEMi5w-7HGdG0-NkuNoXW+70+UqOXwP9OP0mpvIjw
    CMaZ0-DQclUe1ZEedR8KkctZa91+UOSBtZ5py4l-df3lV+XRVK3eyex2xho+zwyqTI3ApxSW
    a5RX3A6F5l1Q2b7DRmM00kWsQ006mE15eg5PPv+jJEB3YEC8RuV50O8welcVNcaumI4cpFUR
    uqhm3C5pBM-KBMdUDxCEplEZDd82gs6S-Z+qy1V6MUnJBYyo0HRv1kC8xlFa9-B2DlpZF-sd
    z0QcjdjdBwGIYgM+AtYTc-VAOlROtZus8MRNM1nkCFBGRzWVgIjts-K9lQmvaKvhYHilL0bL
    6Yo51dHudj9Mu8kfOrPVaNbZaNCpiRsOdpFlepZFEqrQ7ImX87vRTHX4kzkWZqAQnqwK5RUg
    36mu6N2xe9pKYRBIdYDDEnI6TWQAtrCf9WT3KBXv6Th1xcTgfP9zLbmsK5dxiDXfBhZrw4st
    e48uJTPX8f6Trxq5SrY3JtRkSLqhzXE7VfWSsRu7SUbLVZorZ-71L3rBcRuBaE4ZjwYTf6E7
    8MleL0j6Z9VO+TBvnOytlXSTJQOkafTKi3zWfvPF+RYX+hEDEFFX8ITEtHlMWVhFt4CE529I
    lm-seDsYYXX2H6cZiAUYpF3DMgWSEhljsiwV61d26k47k8bP7fJe9uGOWbhlNExfgHUnLdBh
    9B548fUG0qaSdPGIX-2H32YS0y1lIbyJaOkfU78yBVZ73wts+YD2d1Nv0OsC1E98SFwsUr+2
    fGFiQrV--35ozT3B+mDU3nXaaadHfA7Iuq4zzvLroLUs59dx6Rq+G7TUFl5a2QKDlejis95A
    5fQTxG9VxaF6lpxxPRbsL4I-j2a2b4sbgnMvV6MeSYhk8N4GMaUHeS9AiXXSzHNbVqQHst9B
    D7RhpZP37fuPBaToMthphKKH4vNhpjCCHIseqikXnmMLZanqPxYa-pRgncpBaxnzqCOwqf7t
    thWqCGRrPAufcgrtvBaQYmKPj30qCNwfBjZcomMjD9P7UpgqyKXP7jziqCH-sZT7yrxTj3zy
    5jbysdzjzisveMY-BBqe28H9wYKbu3GqbN8LQVlAyWhCmOZI54ynY3KyPVGkHD2fepop5QUN
    CUQCp-ksa8xXpKydMoqlBnJ4qT382wwCaQ0ln-iQIsYYwJjsT6OHAibfEHYr8LL0k5C9iMQD
    jD91iT4PJ1arGWZueN9tqbGAwF13mqHipxT8LhMMZw+N5E20EQ86Teepb2jTJBfw55v83QkA
    9olaeS8+hyp+KRp9lRhax2YWtPHWe8AqDVbrQkvcoaUBAFxH-xeRCiuUVAdtX+1vSMLXjZ66
    La2jctxAu3KE1gSgklKK5lueVgNgRstt506u1rG8RJboKAIwro3IsAJJGneESci1T9qUrw+M
    n-KWLviBQykb2hRBFHhTRs+FCZ3T7m9W+iRfXjv6M5FDB0xIUIqZSZeyJP0gVqCW6tyB42jE
    l-8n2XBfHDipKkq03j5vxo1AZPhbtSNNfLa8zFH9lfbI-SxaCVhusgxqxrLUrHBs07vdnLHB
    RaZ8no8USbJTDdpcFNoaPRCF4yQSZ0d3RLCUiAVbC+wZ1VJPRKkqiMfaOMxotAO-dxfxhW2C
    ***** END OF BLOCK 3 *****

    *XX3402-019818-110497--72--85-17424----TVSOURCE.ZIP--4-OF--5
    D4RGLxROtcHBGTK7ggPsT2mo9gVJeRlsNJOVIeO6JuPdVrwYFCaO8hC-J7SVgjPRgvjYCw4h
    cNqLaT8NE-j8TRZ1yhg-5hFs40dS2yzIhWbDN4Vzyf2VLO9Nds87hJasevj4KhApBOVeZgNS
    qaka94jd3NheQBTLzUBEGkA23++0++U+P8-h6bmIsGlT-E++NF6+++g+++-IJYpDJYZ39Z--
    IwJLPKwOFl1y5WbzMKF3wZpw6CCagU6Z8UOGcgMq+VcrLm8RvkPMtfV3ikjIhT9TCzhmPvnM
    gaKpT1XiNaRbbbqSqPaxyvRDzDpszScSbjVnQzus4YlUwiKGflY0RC16r-o-LHP+Pzz0GCrA
    uT9ZbK0niE6jwe5lzjpDhTTbQ5g52vu+4okGBgDhCHqSVUdX00Jw5DLvBtpFzp3gnpbDhJ-m
    gQ7tUj+iU5TjngvC8PREWpIO-z0dDvfgL5rRahCjLMMgOQ94EjyJeSzp43wMqnAoTTpeZH8J
    eRDGVjgrpmT-ltBUS494LvxWeI6l1GAovV6ZfJM4o-BgXM7ifcq2RBBN9UDsEefeIFMaT0NB
    F5Krd9Y+xn1bGQnG4K+MnG3V8E8TUdcXqC9scPq4tfv9YsGWAdt04vtBhakhvHXNRPHJt2o8
    cuwx+NO0FlWj-A75UHVEiD1odEZ1PdPbhq1BV3e3GKhvEWSCDlBGHnN-8Y5cTSC0ORmmzCW3
    KTkploJt6ELw2iUGJAqL+kbkaIbJr44UZEoDBSwH3bob9-fq12IyRdr2so-T9tiksG7q+l3D
    0TIeIZn+U8Hqpe4+0vt8Mscl4J403bHqdzJreCW7QDAUIFePgGw3KsQ8fQhoZJe-s-AekuKy
    t2jkAq6fj4dKCvRwdKeqZ4+nNx4QD2CV70kAWvRrg76cXWLZEmZpNFppDYxeUuCm+WN86MBt
    94aF1KS0q5Gt7APb2JqATNHlyEHW7okZK3bybhw-SKVu7KwaJsltrVtDwP-SjsJdb4-zXOY3
    NyscaDbTqV0N8aNJqV+h-iaItlXPQ5NuShem6lMKVj3RBh6k6vPoawL4G3ZWcf93Ag23NErp
    kfH3SzgmDpy5ChkpmlLkqAz4SX3MXYibJ+Z6zTbJwcF8iQINGrI6ZgtFADrSB5Zhng+ZgnJp
    jRFF71HPyGp-thAiuhO7QG4imRyqC+ffW8-derocZM8pqmf68elIjaJGH0aLMIyV6mKPdFVv
    lgrLvl2nZDg+x1--VQv-ARNXQgaZAkNaXqF1ldEXmeeyn741YM2hBZANumAPOmzttHatbyu-
    QgBIB5S2wREqBZexNxreBzBERmxQzstrDPt7TO-6s+P7piKlrafTPni74jUy8SQ8NmR+ZmwK
    B9QGkBZcr4tsTmzB-ATWyyK1tWtreHU-R-AAlQsG1yboc383JZSswMPCkpGkfP8U82Wza1F6
    7EdJnIBO+WMGbkHs7PBLGWovGUXRDUDuGo8IOAz8iTFPkZo65gNFG9YCGJRot9ru5JfbWqmT
    se1o5nLpGazzzthuzFb59iox1q0F5yISPhRK+5gkP6Bx1EytBBrJjbdp8eVotYyc7am-bYtX
    nsraCjMTO4zpscV50+qQ+9-u3fLlN+-niMiyahEsKSlg0Z7r1sr1J8WSreM9b2115Gn6VtuB
    ntXADtwSO2I5+hLmE40DmKqElSDMC9ZbZYMSwNSLj1vqJhs5IoBjqx1ufRsZ2JGhIKdvZmVZ
    C2DjSdCW096hqUqZ0WevAR-vlOxgYVrCLLN5SCKImOfILumaB8fxuKveX3qSQ93LWTvTGizs
    YJzmOyg-Qygpf5r8-SJd+v5BMJGze5yZZQNwWrO0Whpt81n85A+l5+QqM+-XxUzKzmmp0CmC
    ZTD9DUS6n-Da-z1azCmwYPbSu16rkuS-fXAP86-4c-TevyokyNS4syvFvkr5eemQefO9ibnc
    o75UEoJtKqMi3H3pT3lublHasRVYwCnAXX8UTDxPNE4vyVSBcLvcovK8AAmCFRf9hjigOKjW
    XTK-DJv8hzT9BozZraNLiB3VdJwhMvefzkhEGkA23++0++U+3tZi6fakXO3m0E++D0c+++c+
    ++-BIoRDEYciI23HvJZvPxgs2jyzE9z1+9isG-TNm8D+cjMuqBVtCQX1W9qL1McKM4HOtZKK
    -6aCYmjqilzT6aL7Rhdx55-pUIMWNsMnwljC18YjzrnZvzSrPvv+8ry8txSPzUWiVySrrIjq
    Rcrn52rlvSCzQIXnCdtSYftYN1eXs6Iyv9xzTxVszlAwjg+caQAxXW6mlKKSYmF436w-tL-q
    RrduTrlriZ4rfv5bBeDtT63b2MNr+PlvRr1k2pgvczB3D+vUzDHiyjXacQFnqfV474f-Iefy
    0u4TaqDw-yjq3NWyTPC60MLfTAc+OTDr9nzSvUNbiw3jio4z2EkPUcX234QH349-YSAQ35s-
    b4HY0KTgsHVB+zULkIjqT6rX-NwX82eaz1qTRdBb6Nyyd2k8k-QMYnmBo+iUy+LaAWdm615E
    4QYVdsUiQcV6X9Zh++AaMmU4fzVM-nuBb72q7leJWF8V7bWXMhHbVDn5O2TsaPPMKVa7dqox
    DdkZmkhaQEgSYmH083MnMF6nmYJ6Yknun4jS2weUan1IwlOAvhUuPHUykFDqBd19gFRTAORN
    2i9l6gBkUS7lV2yTQ0kZW0QaEDnpqz-2Afd+YS8P9C8EYWE4CARoU07A8KPmpJCNiZXZ72D9
    yhZTon2eQuQAG1NM7IXhqFIlNmESxmaStq64lqC-AAQqb83sWVaIKACAlo0NhzYSFVdi3pYG
    QXVgNCK6UukVYgV8MCKU+HOQ8sJPQ7xYMkAgLE3v8oVZY+kZ5lnrYjaQERW07NDxfT-i0xUE
    Iuu4Rql5P2aOvLylVsGzqRwscN12oMh0-Hp446WMEJ4SA0R2GQPUAK1ot60BVXJYs517pi-l
    H4Y49SWyIBny8n1GgYcz3vaqI6gw9WVKijbZ9LTCb1v1kYl4wjWmPfzxPw-iPHg7TdmHAEMI
    guRoEIIqLF6u+kEtaOQFLhq7TItcdpUnM60rGHHgNgnTnXCJXf3BSJHVmUkKxYmGQ858+sO6
    tBF86ogGFT066Qmku+0AAJSAfdgwOpDIen4YaBNae-2Hiav6j06UPlPnLV9ZdSUiFyEkn76c
    ue8AZknxj1b5b53TwAHfwTxOH+i8dnVPsoqRV5DaBGg9C250W5Wt9fkbmvRqbbknjXCHqbJm
    k5UC8agf13Flh39vhZiQo+ULSy-PBe1qX3VLB1rZng5o6w6NsPmMIaa94PuzhvTL9YzTsNlN
    cOPrxPHe8+fYlTF-qpqPV+8DTulYJuI2TxP9Kq6C9H28ZFLpaE88IkVIbCxIT2U0BKC7DhVf
    +swSjKV1vkQELS5PBm85n7a12IyMIcq4wvCpOZHwTXQs8Dk9yiPqcT06dmHaZd-sVXD0Qs-U
    Zcm-sd--QthmLTBKFnw-BmWNx1-jQf5Qf07sCv0n6xs4v12aD5Not-FlNyav6EHTji41RxeA
    Geph2MOB2Il+jXPjNsVLKznInF6ove4QyY7zBOrluOm0vjDA8NMnukf-+zXtW3hbdVo0U-AQ
    MMexUKwqwEb7omFbEk2zQtau8Lr1bwslDLqar6MvDLbLDAyGdRQs08-lc+StLqzkofAmEW0-
    ikhsai1k8gDuwGENoAnzt4ha2iQscpcjiPW4dmMCfEqyJFkKxApLBTkPkt2nGPrp6QH2aXZx
    R400cVnL-dqZrAP+8lGOE-355FJ36QedVHtvlS04In7Fq3RYkdP7vIvMU4pP1NNqLSGB21wx
    qaCx08BgNHC+4qlJuLQPbNGzzsXZBKGpeler8xBLhpkZalABB3hUht4sk35OcwxgXXQNfbAz
    yGuhCj3NMwk2k34C5H8ae0ZK7SKep8gAJqRyRJr5SJiuKTzRY0W9vJyvJMkyHmWHeFo4-jQ9
    oyTN4qP36NMTr-Bk8Mlg1pgwDCgRdqZ2EZ2pDnJ5GKe3LbJ8tgdpMD0dSMudkhp-XwzCkdiY
    ZwGoO8mM92rA73vIdLVBkqFQ4CSLHJjN6mss4tCI9QxmjYaQhhQ5L-KS7AI0mla7A5XO8ufU
    SQMmvdNf2jiEN4-4XwEcSjNx40T8wG-RS8AR73nRANs4cFv6MWywKskkBeqwhhGQ2oi4JZvI
    a4NHK0ovZkxLC7vGaRSn9eQyAbpuneqKQIcVJmWYbfpT-jsqvVQ5HHSkJGvYPhrNYFukPbie
    EfTMTofQpiWvpoU8zqs9FbmWitVAQ0P2xECsAUQOAG6OsFMI-mZyaPWMK2Q9cu+uebSsewGn
    xyDSzhuVefH72yvBICNp+xW-bI0QyHp-tUQk7Dz-nRxwOk2iFrZ6X3ulxvpqsHdCIbWit0V-
    dC0Jh1sQeIJK2qilM7WY9scVU5pL9I57XFVGNgG5exrxXk3cKggMroaNxlkj1c4r3w0SZWW2
    Rzqp9NDRBOZfhxLy5KcP7wbGr5-ZYuyxgeaxjRaiuSRRfl+h8gEpmXxn5lQjH3if-J85BRrK
    RAmGgWynfq9KvnVZyGiugezhzwBpzPwmd99jByPIRRYOYRfWL8toqrWYtXf9wgF6h4P5NhCd
    ckODy+7BpQ1Rs8IMrl6CZP3IuZ3NlRl7mhAT4v0izDg-L+Nk3Q+UU+Qr8JJYfe3pzvUa6yp9
    4wuJ8sPmxMfHe5mVVYGpYXQ61q-mXxGHjtyNRYjKlkTsKKvi-pLk99VLQdzEdNlSNCT-x8Xf
    2rUnx45+GxEDVosK8rK4VN6Xhqbhlu3xY9EPkPscOiMpkmZ4hC0wR8Thdc+dfDO+IctNm6hy
    SPIpD1mDQmNbt6TxkmclWtWGW+gtsX7smw2SConzLSpCAOURhLxMg+c55paYdJ9+tWz3j8X3
    6U+iNFwWbUgyKu7mha+FLj8Iv+PXqcIygs2wkM4IQpZ2Ycu9va9WRHxQTUkMhjqD7XE4X9xT
    eDtuRzCQJIIir9dJw7mJ1VEfSBMjgSSfXesis6cbdo+yf-N6jT91tci4si9i8qeaRS5Lz8Pj
    58zyuD2r3p9xUOVH83SPnqobzRzKJyTUMLiYscCJwE6nwHVBxE4W+mWJR3dtVpR0kJNIFs1G
    d3jABWDppxRxSzKzjT-fprojzBw9ztxNyBquzvrgzrZZTuLc3tz2uwexatwATLDxtr5tnGWj
    iinMdeXJTHCmU1-ItIx5cbadmETt3bTuEolD22JSvbsTebKVzVVTxNKkiaBG5ApjykXzyczl
    4zgZhKtUmTHJLNMItPF2pFJA4pTvfLyfo50tpTKKv3iwqqKAgw+CWo+f46VvJeTDZTzMSzCz
    I2g1--E++U+6+DCJPG7EZ8JZtEA+++oB+++6++++K23EI0tEEJChJZpD4nYITITWDxm5TNVN
    VGWkOJYaHJI8UO8K28KVuPsUHH6CwH8l6xiHP6HqjyypDFwS7qaVqba+kHvbyDfQXy5txpQy
    zlsSDAAfbtlnrvwNkTTnkE1TSzwckV8Gk4SmaT-M7B-P2OOYnvbUmsqUXrA3kHG2svCnhoRb
    dn1Nk6UjM2nGZ1sGbrD7KOlECdNkBSnpliT1rYxXytLvr+YZ3laNdkHO1KWrHotCwKmV3VZ9
    4b1R4xuSxzzmC9qXqtWa2Olhu-ycSacat5yCvFRmSbWEAOckCwhZFzx3aG7W3Yy7qN72+iso
    s39E3F4m+LSHjwZIsQgrGhPGIBFaWKW+UFN7uHFKZ1DckgD6LSVcmAW1Q8AKX7nJICA+Zc7D
    GN67+hR2aF67Jf4klF9-mDkCCv0WEaJlOgE7GokwVkRHneHGGwzE7qijp9FH03txlyKDNhZt
    ij-Pexpe4FpBRwjpu66bu6SVDorCIrL7pumS-2pj5FxrGgXxogyHVNnYY+gZoWoN0zb1UKn7
    K2UvVrkVAzJpHaSpW0nYXExldGnYPEsNubPnNGnYR+jWm3X6bvZbstWe8mvE9sF2AC2w7P5C
    xGlC7P2phZWaN64dA+aj7Sl7xfZMlCbqNIpGB808kEDYhgjmeft0PffIXivmgtLv8H3lCxDK
    ***** END OF BLOCK 4 *****

    *XX3402-019818-110497--72--85-43119----TVSOURCE.ZIP--5-OF--5
    8Wu7hzi8oNjylHhin3irXBv6r8J70RiBAIp1K29N6pUZKxS60gPnK2J+JbqitfUTtdJRhIKh
    ZNczOd91+vosl6IVaOfwr3b4deM79nXaUH7tmnB7UY22+xrNMEETPSMua1VV9XEVXtHNvemF
    6A7s-kxBSxKM7G-bruWYYtH+izTE0jKOtS3x5te4RADoAM27gHaS2o50KVCv2q0E8LFmnzou
    CVYFf9Z6EXzAEXrKuQEcbOPji+VQp9qB05nP4kNuL0Ho-pvL+WXke6lgItGJGveUfj6su8me
    8THAfFop7vaO6qkMX8huipJEzIlXn2odkqTJHfp9cdf-taT15mdVdwuiab+DintAT5fJM5jc
    yLHpSJLbvi2JwxEbJZAZQXRmYpmvunuxpejvNTrYJvipKy+ZTipajgWlPOehzppzpQNOhumj
    Qhwhm8WOyetAxO2i8tfCWYZcqzLRyqfqZKLhRnP8tuHw+3T0h5iiI7k8-6DlZ8u7AUD7gGKg
    ah8N6BoR2LYxOGT21eKLOLZeg1plDB4TmQ7BYZON8EnkIuF2FbMbmCXfsnDtVH6naFVBbMVl
    Cr1CppCBf31Lz+BVNnwLlTbPG4CwUrKy2w2J3J8B2-hwe5phEfmZyIE3JK-VK5ClqbVcTY9B
    p5Sj8Y1nrjkDI2g1--E++U+6+DGJPG74MkzIU+2++7w1+++7++++K3F3IpEiI23HfN9FOy7+
    2APT-Ty5UPv2EkBLt2F3i7naSgRVZHGWxvUlIvDLRHRg7WZ-yfxrRxBOwIIgZtRYNyPvtfRw
    CLmtwbZdhktktTCaKIO9imWMkmMC5q8+4+hWSEuDGgAaK0tV7HaROuMefnLTNEHShUBTVwBj
    jS2+YVdWhMQp0g3rS8uN8QY6Iq+3z6n0Q-p2sIKqnxlbcObMZtU7V5sLyjrPqs5NfKZTmfE9
    Rq2o1yvzbab0rdllAM9b-jovdmQzlTzAxcZAqupQetpaStCCmKJg8qK--Qkofp+LLFBFbfgm
    pHaqKmMzIs+7eCETPga9PJzk9GCiNATq+MnZ3hBG6zlWAVIMJWX7etU4xnK0q9ovMuWsdd87
    gRKVHBoSVzGahvjw0mPhJc6v9eo3ZlZePjy-IwplnUkwBadzbH2mZw-ewkTf5sfd30V1qT+T
    doljeYlA2rV8+Y4fr+r-gxrVrEmgtnip+PDWSKq6FsvPZMxcfi5zZdn45wScZ0SbaN9MCDej
    I2g-+VE+3++0++U+TNZh6bxl5aDB+k++T+Y+++k++++++++++E+U+++++++++2RGEIN2FIpD
    9Z--Ip-9+E6I+-E++U+6+DC7Pm7WxQtThEU++8Id+++9++++++++++2+6++++DQ1++-5IY34
    Ho789Z--Ip-9+E6I+-E++U+6+7GNPW9fRcbPUEI++06K+++9++++++++++2+6++++BIA++-7
    HYNDEY3G9Z--Ip-9+E6I+-E++U+6+-4PPW6l26BXN+Q++9QL+++A++++++++++2+6++++5wG
    ++-7HYNDJ2JHJ0tEEJBEGk203++I++6+0++cWqwWRprhkRA0++1E-k++0U+++++++++-+0++
    +++B4U++K3F3IpEl9Z--Ip-9+E6I+-E++U+6+249Pm9yDR1vpE2++-w2+++8++++++++++2+
    6+++++UR++-MJ2JHJ16iI23HI2g-+VE+3++0++U+N6hj6ZfVgmhc+U++ZUI+++c+++++++++
    +E+U++++-Fw++3VIFJBIAmtEEJBEGk203++I++6+0+0wWawWnqAuqisB++1FDE++0U++++++
    +++-+0++++0J6E++K3N7FJRH9Z--Ip-9+E6I+-E++U+6+B0VQ06Zvw1YnEI++DUP+++A++++
    ++++++2+6++++8gj++-BHpN7FJFHJ0tEEJBEGk203++I++6+0+-gc4oWT7HV93w3++-Z2U++
    0k+++++++++-+0++++0WBE++J3NBHpN7FGtEEJBEGk203++I++6+0++LaKsWiP0BcL67+++w
    8U++0U+++++++++-+0+++++eCk++HJB5Ho789Z--Ip-9+E6I+-E++U+6+DCJPG7EZ8JZtEA+
    ++oB+++6++++++++++2+6++++AF2++-MEJ-E9Z--Ip-9+E6I+-E++U+6+DGJPG74MkzIU+2+
    +7w1+++7++++++++++2+6++++Ax6++-MJ2JHJ0tEEJBEGkI4++++++o+1E1S+U++RYc+++++
    ***** END OF BLOCK 5 *****

[Back to OOP SWAG index] [Back to Main SWAG index] [Original]