home *** CD-ROM | disk | FTP | other *** search
/ The Arcade BBS / arcadebbs.zip / arcadebbs / bbstools / MODS / ALLMODS.ZIP / FMD-24A.ZIP / FMD-24A.MOD
Encoding:
Text File  |  1995-06-09  |  18.8 KB  |  501 lines

  1. Nicolas Leblanc #2 @20302
  2. Wed Jun 07 03:41:01 1995
  3. 0R 34 06/09 07:13 WWIVNET 4051->8421
  4. 0R 34 06/08 18:18 WWIVNet 4001->4051
  5. 0R 34 06/08 14:07 WWIVnet 4000->4001
  6. 0R 34 06/08 05:34 WWIVnet ->4000
  7. 0R 34 06/07 22:42 WWIVnet 4001->4000
  8. 0R 34 06/08 06:43 WWIVnet 20001->4001
  9. 0R 34 06/07 03:54 WWIVnet 20302->20001
  10. 0R 34 06/07 03:46 WWIVnet ->20302
  11.  
  12.    ┌┬─── ──  ─   ─  ── ───────────────────────────────────────────────────┬─ ∙∙
  13.    ││                    Alternative Worlds Presents                      │
  14.    └┼─────────────────────────────────────────────────────────────────────┐
  15.    ││ Mod Name       » FMD-24a.MOD                                        │∙
  16.    ││ Difficulty     » █▒▒▒▒▒▒▒▒▒▒ (1/10)                                 │:
  17.    ││ WWIV Version   » 4.24                                               ││
  18.    ││ Date Affected  » 06/01/95                                           ││
  19.    :│ Files Affected » MSGBASE.C / BBSUTL.C / BBSOVL1.C / MMENU.C         ││
  20.    ∙│ Description    » Unlimited Uploadable Smart TagLines System For WWIV││
  21.     └─────────────────────────────────────────────────────────────────────┼┐
  22.     │       A French Mod Division Release - (C) 1995 FMD Software         ││
  23. ∙∙ ─┴─────────────────────────────────────────────────── ──  ─   ─  ── ───└┘
  24.  
  25.  ┌┬══════════════════┐
  26.  ││ Long Description ││
  27.   └══════════════════┴┘
  28.  
  29.   This modification will simplify the tag lines process by putting them
  30. in a string file that you can edit with WWIVsys' String Editor. It will choose
  31. randomly a tag line after you installed this modification, and by pressing
  32. "%" at the main menu, your users will be able to enter new ones themselves.
  33. You users will also be able to upload a tag line file easily.
  34.  
  35.  ┌┬═════════┐
  36.  ││ Credits ││
  37.   └═════════┴┘
  38.  
  39.   The user interface of this modification is totally done by Fenric, who
  40. updated this modification a long time ago.
  41.  
  42.   The tag line strings are taken from IceNEWS mostly, authors can be retraced
  43. by looking in IceNEWS issue.
  44.  
  45.  ┌┬═══════┐
  46.  ││ Tests ││
  47.   └═══════┴┘
  48.  
  49.   This modification has been tested on a virgin WWIV v4.24 source using
  50.   Borland C++ v4.5
  51.  
  52. ──────────────────────────────────────────────────────────────────────────────
  53.                                    Legend
  54.                           ╔═══╤══════════════════┐
  55.                           │ + │ Add This Line    │
  56.                           │ - │ Delete This Line │
  57.                           │ * │ Modify This Line │
  58.                           │ = │ Existing Line    │
  59.                           └═══╧══════════════════╝
  60. ───[Step 1]────────────────────────────────────────────────────────────────────
  61.  
  62. Load BBSUTL.C and do the following addition in void set_language_1
  63.  
  64. =  set_strings_fn(2, languagedir, "YES.STR", 0);
  65. =  set_strings_fn(3, languagedir, "NO.STR", 0);
  66. =  set_strings_fn(4, languagedir, "MODS.STR", 0); // You may don't have this
  67. +  set_strings_fn(5, languagedir, "TAG.STR", 1); // BE SURE THE LAST ONE IS "1"
  68.  
  69. Be sure that #5 isn't taken, if it is, just put another number not used.
  70. Stock WWIV only use 3, as you can see here, #4 is my MODS.STR where I add
  71. all strings I mod in my code.
  72.  
  73. Save BBSUTL.C
  74.  
  75. ───[Step 2]────────────────────────────────────────────────────────────────────
  76.  
  77. Load MSGBASE.C and do the following change in void inmsg:
  78.  
  79. =    if (sysinfo.flags & OP_FLAGS_MSG_TAG) {
  80. =      if ((xsubs[curlsub].num_nets) && (strcmp(aux,"EMAIL")!=0)
  81. =          && (!(subboards[curlsub].anony & anony_no_tag))
  82. =          && (strcmp(strupr(irt),strupr(get_string(333)))!=0)) {
  83. *       /* for (i=0; i<xsubs[curlsub].num_nets; i++) {
  84. =          xnp=&xsubs[curlsub].nets[i];
  85. =          nd=net_networks[xnp->net_num].dir;
  86. =          sprintf(s,"%s%s.TAG",nd,xnp->stype);
  87. =          if (exist(s))
  88. =            break;
  89. =          sprintf(s,"%sGENERAL.TAG",nd);
  90. =          if (exist(s))
  91. =            break;
  92. =          sprintf(s,"%s%s.TAG",syscfg.datadir,xnp->stype);
  93. =          if (exist(s))
  94. =            break;
  95. =          sprintf(s,"%sGENERAL.TAG",syscfg.datadir);
  96. =          if (exist(s))
  97. =            break;
  98. =        }
  99. =        result=fsh_open(s,"rb");
  100. =        if (result) {
  101. =          i=0;
  102. =          while (!feof(result)) {
  103. =            s[0]=0; s1[0]=0;
  104. =            fgets(s,180,result);
  105. =            if (strlen(s)>1)
  106. =              if (s[strlen(s)-2]==13)
  107. =                s[strlen(s)-2]=0;
  108. =            if (s[0]!=4)
  109. =              sprintf(s1,"%c%c%s",4,i+'2',s);
  110. =            else
  111. =              strncpy(s1,s,sizeof(s1));
  112. =            if (!i)
  113. =              addline(b,"1",&l1);
  114. =            addline(b,s1,&l1);
  115. =            if (i<7)
  116. =              i++;
  117. =          }
  118. =          fsh_close(result);
  119. *        } */
  120. +        strcpy(s,getrandomstring(5)); // Change to the # put in BBSUTL.C
  121. +        addline(b,"",&l1);
  122. +        addline(b,"17---",&l1);
  123. +        if (s[0]!=4)
  124. +          sprintf(s1,"%c2%s",4,s);
  125. +        addline(b,s1,&l1);
  126. =      }
  127. =    }
  128. =  }
  129.  
  130. So now you have just commented out the other code, so if you wish to get back
  131. to the original way, it's no problem at all.
  132.  
  133.  
  134. ───[Step 3]────────────────────────────────────────────────────────────────────
  135.  
  136. Copy the following functions at the end of BBSOVL1.C:
  137.  
  138. void ListTagLines(void)
  139. {
  140.   int i, abort=0;
  141.  
  142.   outchr(12);
  143.   litebar("%d Available Tag Lines", num_strings(5));
  144.   nl();
  145.   for (i=1; (i<=num_strings(5) && !abort && !hangup); i++) {
  146.     ansic(7);
  147.     pla(get_stringx(5, i),&abort);
  148.   }
  149.   nl();
  150.   pausescr();
  151.  
  152. }
  153.  
  154. int GoodTagLine(char *s)
  155. {
  156.   char s1[81], temp[66], temp1[66];
  157.   int i, gotit = 0;
  158.  
  159.   strcpy(temp,s);
  160.   temp[65] = 0;
  161.   strupr(temp);
  162.   sprintf(s1,"Entered tagline: %s",s);
  163.   sysoplog(s1);
  164.  
  165.   for (i=1; (i<num_strings(5) && !gotit && !hangup); i++)
  166.   {
  167.     strcpy(temp1,get_stringx(5,i));
  168.     strupr(temp1);
  169.     if (strcmp(temp,temp1) == 0)
  170.       gotit = 1;
  171.   }
  172.  
  173.   if (gotit)
  174.     return(0);
  175.  
  176.   return ((strstr(temp,"FUCK")==NULL) && (strstr(temp,"CUNT")==NULL) &&
  177.       (strstr(temp,"SHIT")==NULL) && (strstr(temp,"CALL ")==NULL) &&
  178.       (strstr(temp,"BORG")==NULL) && (strstr(temp,"TRIBBLE")==NULL));
  179.       /* Well, customize this yourself! */
  180. }
  181.  
  182. void AddTagLine(void)
  183. {
  184.   char s[66];
  185.   int ns;
  186.  
  187.   ns = num_strings(5);
  188.   nl();
  189.   pl("Enter a Tag Line, 65 characters maximum, on the following line...");
  190.   mpl(65);
  191.   inputl(s,65);
  192.   nl();
  193.   if (s[0])
  194.   {
  195.     if (!(GoodTagLine(s)))
  196.       pl("That Tag Line is not approved.");
  197.     else {
  198.       put_string(5, ns+1, s);
  199.       if (num_strings(5) == (ns + 1))
  200.         pl("String successfully added.");
  201.       else
  202.         pl("Error writing string.");
  203.     }
  204.   } else
  205.     pl("Function aborted.");
  206.   nl();
  207.   pausescr();
  208. }
  209.  
  210. void UploadTagLines(void)
  211. {
  212.   char s[81], ch, String[121];
  213.   int i, i1, i2;
  214.   FILE *f;
  215.  
  216.   outchr(12);
  217.   pl("Upload a text file (NOT compressed) that contains one tag line");
  218.   pl("per line, each line followed by a carraige return and line feed.");
  219.   nl();
  220.   sprintf(s,"%sTAGLINES.TXT",syscfgovr.tempdir);
  221.   receive_file(s,&i,&ch, "TAGLINES.TXT", -1);
  222.   if (!exist(s))
  223.   {
  224.     nl();
  225.     pl("File not received.");
  226.     nl();
  227.     pausescr();
  228.     return;
  229.   }
  230.   if ((f = fsh_open(s,"r")) != NULL)
  231.   {
  232.     i1 = 0;
  233.     i2 = num_strings(5);
  234.     fseek(f, 0L, SEEK_SET);
  235.     while ((fgets(String, 80, f) != NULL) && (!hangup))
  236.     {
  237.       String[65] = 0;
  238.       while (String[strlen(String)-1] < 32)
  239.       String[strlen(String)-1] = 0;
  240.       npr("%-65.65s ",String);
  241.       if (!GoodTagLine(String))
  242.         pl("NOT Approved.");
  243.       else {
  244.         outstr("Writing...");
  245.         put_string(5, i2+i1+1, String);
  246.         if (num_strings(5) == i2 + i1+1)
  247.         {
  248.            pl("\b\b\b\b\b\b\b\b\b\bSuccessful.");
  249.            i1++;
  250.         } else
  251.            pl("\b\b\b\b\b\b\b\b\b\bUnsuccessful.");
  252.       }
  253.     }
  254.     nl();
  255.     npr("Added %d tagline(s).\r\n",num_strings(5)-i2);
  256.     nl();
  257.     fsh_close(f);
  258.   } else {
  259.     nl();
  260.     pl("Error loading tagline file.");
  261.     nl();
  262.   }
  263.   pausescr();
  264. }
  265.  
  266. void taglines(void)
  267. {
  268.   int done=0;
  269.   char ch;
  270.  
  271.   do {
  272.     outchr(12);
  273.     litebar("French Mod Division Message Tag Lines");
  274.     nl();
  275.     pl("7L. 1List Available Tag Lines");
  276.     pl("7A. 1Add a Tag Line");
  277.     pl("7U. 1Upload a Text File of Tag Lines");
  278.     nl();
  279.     prt(3,"Tag Lines (Q=Quit): ");
  280.     ch = onek("QLAU");
  281.     switch(ch) {
  282.       case 'Q':  done = 1;  break;
  283.       case 'L':  ListTagLines(); break;
  284.       case 'A':  AddTagLine(); break;
  285.       case 'U':  UploadTagLines(); break;
  286.     }
  287.   } while (!done && !hangup);
  288. }
  289.  
  290.  
  291. ───[Step 4]────────────────────────────────────────────────────────────────────
  292.  
  293. Go into MMENU.C and look at void mainmenu(...).  Add the following to a key
  294. not already used, such as %.
  295.  
  296. =      case '.':
  297. =        helpl=26;
  298. =        write_inst(INST_LOC_CHAINS,0,INST_FLAGS_ONLINE);
  299. =        play_sdf(get_string(1030),0);
  300. =        existprint(get_string(1030));
  301. =        do_chains();
  302. =        break;
  303. +      case '%':
  304. +        taglines();
  305. +        break;
  306. =      case '$':
  307. =        write_inst(INST_LOC_BANK,0,INST_FLAGS_ONLINE);
  308.  
  309. Close MMENU.C.
  310.  
  311.  
  312. ───[Step 5]────────────────────────────────────────────────────────────────────
  313.  
  314. Load COM.C and add the following function at the end of the file:
  315. (You may already have it if you uses other FMD modifications)
  316.  
  317. void litebar(char *fmt, ...)
  318. {
  319.   va_list ap;
  320.   char s[512], s2[250];
  321.   
  322.   va_start(ap, fmt);
  323.   vsprintf(s, fmt, ap);
  324.   va_end(ap);
  325.   
  326.   if (okansi()) 
  327.   {
  328.     npr("\x1B[0;1m%s\r\n", charstr(strlen(s)+6, '▄'));
  329.     sprintf(s2, "\x1B[0;34;47m ∙ %s ∙ \x1B[40m", stripcolors(s));
  330.     pl(s2);
  331.     npr("\x1B[0;1;30m%s\r\n", charstr(strlen(s)+6, '▀'));
  332.   } else
  333.     pl(s);
  334.   ansic(0);
  335. }
  336.  
  337. ───[Step 6]────────────────────────────────────────────────────────────────────
  338.  
  339. You're done, just do a MAKE FCNS and compile back your BBS and enjoy it. The
  340. taglines are only working on networked subs and networked emails, and you can
  341. turn them OFF in the board editor for the subs you don't want them.
  342.  
  343. On every FMD Support BBS you will find a file called TAGLINES.ZIP which
  344. contains over 10,000 taglines, the one included in this modification is very
  345. small and is easy to use. Turn ON the option MSG_TAG in WWIV.INI for the use
  346. of taglines on your system.
  347.  
  348. You, of course, have to copy TAG.STR in your GFILES directory.
  349.  
  350.  
  351. French Proverb: Abondance de biens ne nuit pas.
  352.  
  353. For comments, bug report and suggestion, e-mail at the following address:
  354.  
  355. Nicolas LeBlanc  2@20302.WWIVnet (aka Spotnick)
  356.                  -> spotnick@gamemaster.qc.ca
  357. Martin Bourdages 242@20306 / 3@20302.WWIVnet (aka Dark Shadow)
  358.                  -> martin.bourdages@radio.magicnet.com
  359.  
  360.                  =>   French Mod Division Support Sub   <=
  361.                                 SubType: FMD
  362.                            Host: @20302 (WWIVnet)
  363.                       Scan sublist for other networks
  364.  
  365.         Read PRODUCTS.FMD for the full list of our support systems.
  366.  
  367. ───[EOF]──────────────────────────────────────────────────────────────────────
  368. section 1 of 1 of file tag.str  < uuencode 5.32 by R.E.M. >
  369.  
  370. begin 644 tag.str
  371. M__]D1&%D9'D@=VAA="!D;V5S($9/4DU!5"!#.B!D;S\`````````````````
  372. M````````````````````````````````````````````````````````````
  373. M`````````````````"A!*6)O<G0L("A2*65T<GDL("A&*6%I;"P@*$<I<F%B
  374. M7TAA;6UE<@``````````````````````````````````````````````````
  375. M``````````````````````````````!4:&ES(&UE<W-A9V4@=VEL;"!S96QF
  376. M+61E<W1R=6-T(&EN(#4@<V5C;VYD<RXN+C$N+BXR+BXS+BXT+BXN````````
  377. M````````````````````````````````````````````+BXN02!P96YN>2!S
  378. M879E9"!I<R!A($-O;F=R97-S:6]N86P@;W9E<G-I9VAT+@``````````````
  379. M`````````````````````````````````````````````````````````%1H
  380. M;W-E(&]F('EO=2!T:&%T('1H:6YK('EO=2!K;F]W(&5V97)Y=&AI;F<L(&%R
  381. M92!A;FYO>6EN9R!T:&]S92!O9B!U<R!T:&%T(&1O(0``````````````````
  382. M``````````!))W9E(&YE=F5R('-E96X@82!T86=L:6YE($D@=V]U;&1N)W0@
  383. M<W=I<&4N+BXN````````````````````````````````````````````````
  384. M````````````````````````5&AI<R!T86=L:6YE('-P86-E(&ES(&9O<B!L
  385. M96%S92XN+BX`````````````````````````````````````````````````
  386. M`````````````````````````````````````%1O($(Z(&]R(&YO="!T;R!"
  387. M.BP@=&AA="!I<R!T:&4@8F%C:W5P+@``````````````````````````````
  388. M``````````````````````````````````````````````````!4:&4@:6YF
  389. M;W)M871I;VX@=V5N="!D871A('=A>2X`````````````````````````````
  390. M````````````````````````````````````````````````````````````
  391. M````5VEN9&]W<RXN+B!&<F]M('1H92!P96]P;&4@=&AA="!B<F]U9VAT('EO
  392. M=2!%9&QI;BX`````````````````````````````````````````````````
  393. M`````````````````$5V97(@=V]N9&5R('=H>2!/<')A:"!S<&5L;&5D(&)A
  394. M8VMW87)D<R!I<R!H87)P3S\`````````````````````````````````````
  395. M```````````````````````````````B07!P;&4B("AC*2!#;W!Y<FEG:'0@
  396. M,3<V-RP@4VER($ES86%C($YE=W1O;BX`````````````````````````````
  397. M````````````````````````````````````````````06YD($=O9"!S86ED
  398. M.B!%(#T@JVUV_2`M(%IE_2]R+"!A;F0@=&AE<F4@=V%S(&QI9VAT(0``````
  399. M`````````````````````````````````````````````````````````$]N
  400. M(&$@8VQE87(@9&ES:R!Y;W4@8V%N('-E96L@9F]R979E<@``````````````
  401. M````````````````````````````````````````````````````````````
  402. M``````````!4:&4@<F]A9"!T;R!S=6-C97-S(&ES(&%L=V%Y<R!U;F1E<B!C
  403. M;VYS=')U8W1I;VXN````````````````````````````````````````````
  404. M````````````````````````5&AE(&9L;V=G:6YG<R!W:6QL(&-O;G1I;G5E
  405. M('5N=&EL(&UO<F%L92!I;7!R;W9E<RX`````````````````````````````
  406. M`````````````````````````````````````$D@:VYO=R!A(&=O;V0@=&%G
  407. M(&QI;F4@=VAE;B!)('-T96%L(&]N92X`````````````````````````````
  408. M``````````````````````````````````````````````````!$<F]P('EO
  409. M=7(@8V%R<FEE<BXN+G=E)W9E(&=O="!Y;W4@<W5R<F]U;F1E9"X`````````
  410. M````````````````````````````````````````````````````````````
  411. M````4D%-/2!287)E;'D@061E<75A=&4@365M;W)Y+@``````````````````
  412. M````````````````````````````````````````````````````````````
  413. M`````````````````$UA<GD@:&%D(&$@;&ET=&QE(%)!32`M+2!O;FQY(&%B
  414. M;W5T(&$@345'(&]R('-O+@``````````````````````````````````````
  415. M``````````````````````````````!23TU!3B!.54U%4D%,($))3D%262!#
  416. M3T1%.R`@:6EI:6EI:6EI:6EI:6EI:6EI:0``````````````````````````
  417. M````````````````````````````````````````````3VQD(&9O;&MS(&)O
  418. M;V=I92XN+B!Y;W5R(&UI;F0@;6%K97,@82!P<F]M:7-E('EO=7(@8F]D>2!C
  419. M86XG="!K965P`````````````````````````````````````````````"))
  420. M(&%M($9U9&0@;V8@0F]R9RX@5V5S:7-T86YC92!I<R!U<V5W97-S(2(`````
  421. M````````````````````````````````````````````````````````````
  422. M``````````!))VT@:6X@=&AE($UE=&%L;&EC($%G93H@4VEL=F5R(&AA:7(L
  423. M($=O;&0@=&5E=&@L(%1I;B!E87(L($QE860@*G-S+@``````````````````
  424. M````````````````````````(D)E=V%R92!O9B!P<F]G<F%M;65R<R!W:&\@
  425. M8V%R<GD@<V-R97=D<FEV97)S(@``````````````````````````````````
  426. M`````````````````````````````````````%)E;65M8F5R+"!O;FQY(&9O
  427. M<F5S="!F:7)E<R!C86X@<')E=F5N="!B96%R<R$`````````````````````
  428. M``````````````````````````````````````````````````!';V]D(&%N
  429. M9"!E=FEL+"!D97!E;F1E;G0@;VX@>6]U<B!P;&%C92!O;B!T:&4@9F]O9"!C
  430. M:&%I;BXN````````````````````````````````````````````````````
  431. M````2&]M92!);B!.;VUE(&]N(&UY(&UO9&5M(&)Y('1H92!"96%R:6YG(%-E
  432. M82$`````````````````````````````````````````````````````````
  433. M`````````````````$UA8TEN=&]S:#H@0V]M<'5T97(@=VET:"!T<F%I;FEN
  434. M9R!W:&5E;',@>6]U(&-A;B=T(')E;6]V92X`````````````````````````
  435. M``````````````````````````````!)9B!T:&4@86YS=V5R(&ES;B=T(')I
  436. M9VAT+"!T:&4@<75E<W1I;VX@;75S="!B92!W<F]N9R$`````````````````
  437. M````````````````````````````````````````````1V]O9"XN+D)A9"XN
  438. M+DDG;2!T:&4@9W5Y('=I=&@@=&AE(&=U;BX`````````````````````````
  439. M`````````````````````````````````````````````````````````$YE
  440. M=F5R('!U="!O9F8@=&EL;"<@=&]M;W)R;W<@=VAA="!Y;W4@8V%N(&%V;VED
  441. M(&%L;"!T;V=E=&AE<BX`````````````````````````````````````````
  442. M``````````!4:&]S92!T:&%T(&)E870@=&AE:7(@<W=O<F1S(&EN=&\@<&QO
  443. M=R!S:&%R97,L('=I;&P@<&QO=R!F;W(@=&AO<V4@=VAO(&1O;B=T````````
  444. M````````````````````````+BXN66]U<B!T86=L:6YE(&AA<R!B965N(&%S
  445. M<VEM:6QA=&5D+B`M+2!4:&4@0V]L;&5C=&EV90``````````````````````
  446. M`````````````````````````````````````%=O<G)Y(&ES(&$@9&%R:R!R
  447. M;V]M(&9O<B!D979E;&]P:6YG(&YE9V%T:79E<RXN+BX`````````````````
  448. M```````````````````````````````````````````````````H02EB;W)T
  449. M+"`H4BEE=')Y+"`H22EN9FQU96YC92!W:71H(&$@;&%R9V4@:&%M;65R+@``
  450. M````````````````````````````````````````````````````````````
  451. M````5VAY(&1O('1O;6]R<F]W('=H870@>6]U(&-A;B!D;R!T:&4@9&%Y(&%F
  452. M=&5R('1O;6]R<F]W/P``````````````````````````````````````````
  453. M`````````````````%=H870@9&\@>6]U(&UE86X_(%EO=2!A8W1U86QL>2!R
  454. M96%D('1H:7,@5&%G;&EN93\A/P``````````````````````````````````
  455. M``````````````````````````````!314Y)3$4N0T]-(&9O=6YD("X@+B`N
  456. M($]U="!/9B!-96UO<GD@+B`N("X`````````````````````````````````
  457. M````````````````````````````````````````````0F%C:W5P(&YO="!F
  458. M;W5N9#H@*$$I8F]R="`H4BEE=')Y("A0*6%N:6,`````````````````````
  459. M`````````````````````````````````````````````````````````$D@
  460. M:&%V96XG="!L;W-T(&UY(&UI;F0[(&ET)W,@8F%C:V5D('5P(&]N('1A<&4@
  461. M<V]M97=H97)E(0``````````````````````````````````````````````
  462. M``````````!';R!S=')A:6=H="!T;R!T:&4@9&]C<RX@($1O(&YO="!P87-S
  463. M($=/+B`@1&\@;F]T(&-O;&QE8W0@)#(P,"$`````````````````````````
  464. M````````````````````````5&AI<R!T86=L:6YE(&ES(%-(05)%5T%212$@
  465. M(%1O(')E9VES=&5R+"!S96YD(&UE("0Q,```````````````````````````
  466. M`````````````````````````````````````$)A8VL@=7`@;7D@:&%R9"!D
  467. M:7-K/R!)(&-A;B=T(&9I;F0@=&AE(')E=F5R<V4@<W=I=&-H(0``````````
  468. M``````````````````````````````````````````````````!$;V-U;65N
  469. M=&%T:6]N("T@5&AE('=O<G-T('!A<G0@;V8@<')O9W)A;6UI;F<N````````
  470. M````````````````````````````````````````````````````````````
  471. M````3F]T('1O;FEG:'0L(&1E87(N("!)(&AA=F4@82!M;V1E;2X`````````
  472. M````````````````````````````````````````````````````````````
  473. M`````````````````%1W;R!M;W-T(&-O;6UO;B!E;&5M96YT<R!I;B!T:&4@
  474. M=6YI=F5R<V4Z($AY9')O9V5N("8@4W1U<&ED:71Y+@``````````````````
  475. M``````````````````````````````!204T@1$E32R!I<R!.3U0@86X@:6YS
  476. M=&%L;&%T:6]N('!R;V-E9'5R92$`````````````````````````````````
  477. M````````````````````````````````````````````1$]3(&YE=F5R('-A
  478. M>7,@(D580T5,3$5.5"!C;VUM86YD(&]R(&9I;&5N86UE(BXN+@``````````
  479. M`````````````````````````````````````````````````````````$EF
  480. M(&%T(&9I<G-T('EO=2!D;VXG="!S=6-C965D+"!D97-T<F]Y(&%L;"!E=FED
  481. M96YC92!T:&%T('EO=2!T<FEE9"X`````````````````````````````````
  482. M``````````!-3TY%62!404Q+4R`N+BX@("!B=70@86QL(&UI;F4@979E<B!S
  483. M87ES(&ES($=/3T1"644A````````````````````````````````````````
  484. M````````````````````````3F5W($UA:6P@;F]T(&9O=6YD+B`@4W1A<G0@
  485. M=VAI;F4M<&]U="!S97%U96YC93\@*%DO3BD`````````````````````````
  486. M`````````````````````````````````````"A!*6)O<G0@*%(I971R>2`H
  487. M1"EI<V-O;FYE8W0@=&AE(%-O=6YD0FQA<W1E<B!A;F0@=')Y(&%G86EN+@``
  488. M```````````````````````````````````````````````````H6"D@/"TM
  489. M+2!9;W4@87)E(&AE<F4A````````````````````````````````````````
  490. M````````````````````````````````````````````````````````````
  491. M````1FEL92!N;W0@9F]U;F0N(%-H;W5L9"!)(&9A:V4@:70_("A9+TXI````
  492. M````````````````````````````````````````````````````````````
  493. M`````````````````$9I;&4@;F]T(&9O=6YD+"!))VQL(&QO860@<V]M971H
  494. M:6YG("I)*B!T:&EN:R!I<R!I;G1E<F5S=&EN9RX`````````````````````
  495. 7````````````````````````````````
  496. `
  497. end
  498. sum -r/size 13245/7746 section (from "begin" to "end")
  499. sum -r/size 18682/5603 entire input file
  500.  
  501.