make-guide.py builds vim-user-guide.pdf with reportlab. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>main
| @@ -0,0 +1,329 @@ | |||
| """make-guide.py - build vim-user-guide.pdf (needs: pip install reportlab). | |||
| python make-guide.py [out.pdf] [screenshot.png] | |||
| Defaults: vim-user-guide.pdf and shots/run.png next to this script. | |||
| The command reference is hand-written: update it when the editor's keys change. | |||
| """ | |||
| import os, sys | |||
| from reportlab.lib.pagesizes import letter | |||
| from reportlab.lib import colors | |||
| from reportlab.lib.units import inch | |||
| from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle | |||
| from reportlab.platypus import (SimpleDocTemplate, Paragraph, Spacer, Table, | |||
| TableStyle, Image, PageBreak, Preformatted, KeepTogether) | |||
| HERE = os.path.dirname(os.path.abspath(__file__)) | |||
| OUT = sys.argv[1] if len(sys.argv) > 1 else os.path.join(HERE, "vim-user-guide.pdf") | |||
| SHOT = sys.argv[2] if len(sys.argv) > 2 else os.path.join(HERE, "shots", "run.png") | |||
| ss = getSampleStyleSheet() | |||
| BLUE = colors.HexColor("#352879") # C64 dark blue | |||
| LIGHT = colors.HexColor("#6c5eb5") # C64 light blue | |||
| H1 = ParagraphStyle("H1", parent=ss["Heading1"], textColor=BLUE, spaceBefore=14, spaceAfter=6) | |||
| H2 = ParagraphStyle("H2", parent=ss["Heading2"], textColor=BLUE, spaceBefore=10, spaceAfter=4) | |||
| B = ParagraphStyle("B", parent=ss["BodyText"], fontSize=10, leading=13.5, spaceAfter=6) | |||
| CELL = ParagraphStyle("C", parent=B, fontSize=9, leading=11.5, spaceAfter=0) | |||
| CELLB = ParagraphStyle("CB", parent=CELL, fontName="Helvetica-Bold", textColor=colors.white) | |||
| CODE = ParagraphStyle("Code", fontName="Courier", fontSize=8.8, leading=11, | |||
| backColor=colors.HexColor("#f2f1f8"), borderPadding=6, | |||
| leftIndent=6, rightIndent=6, spaceBefore=4, spaceAfter=10) | |||
| NOTE = ParagraphStyle("N", parent=B, backColor=colors.HexColor("#fff6dc"), | |||
| borderColor=colors.HexColor("#e0b84a"), borderWidth=0.6, | |||
| borderPadding=6, leftIndent=6, rightIndent=6, spaceBefore=4, spaceAfter=10) | |||
| def P(t, s=B): return Paragraph(t, s) | |||
| def k(t): return f'<font face="Courier-Bold">{t}</font>' | |||
| def code(t): return Preformatted(t, CODE) | |||
| def table(rows, widths, head=True): | |||
| data = [[P(c, CELLB if (head and i == 0) else CELL) for c in r] for i, r in enumerate(rows)] | |||
| t = Table(data, colWidths=widths, repeatRows=1 if head else 0) | |||
| st = [("GRID", (0, 0), (-1, -1), 0.4, colors.HexColor("#b8b4d6")), | |||
| ("VALIGN", (0, 0), (-1, -1), "TOP"), | |||
| ("TOPPADDING", (0, 0), (-1, -1), 3), ("BOTTOMPADDING", (0, 0), (-1, -1), 3)] | |||
| if head: | |||
| st.append(("BACKGROUND", (0, 0), (-1, 0), BLUE)) | |||
| for i in range(1 if head else 0, len(rows)): | |||
| if i % 2 == 0: | |||
| st.append(("BACKGROUND", (0, i), (-1, i), colors.HexColor("#f4f3fa"))) | |||
| t.setStyle(TableStyle(st)) | |||
| return t | |||
| def footer(c, d): | |||
| c.saveState() | |||
| c.setFont("Helvetica", 8) | |||
| c.setFillColor(colors.grey) | |||
| c.drawString(inch * 0.75, inch * 0.5, "vim for the Commodore 64 - User Guide") | |||
| c.drawRightString(letter[0] - inch * 0.75, inch * 0.5, f"Page {d.page}") | |||
| c.restoreState() | |||
| W = letter[0] - 1.5 * inch | |||
| s = [] | |||
| # ---------------------------------------------------------------- title | |||
| s += [Spacer(1, 0.6 * inch), | |||
| P("vim for the Commodore 64", ParagraphStyle("T", parent=ss["Title"], fontSize=28, textColor=BLUE, leading=34)), | |||
| P("User Guide and Command Reference", ParagraphStyle("ST", parent=ss["Title"], fontSize=15, textColor=LIGHT)), | |||
| Spacer(1, 6), | |||
| P("A small modal, vi-style text editor written in Power C (K&R C) with machine-language " | |||
| "helpers, running on a stock C64 with a 1541/1581-style disk drive on device 8.", | |||
| ParagraphStyle("Sub", parent=B, alignment=1, fontSize=10.5, textColor=colors.HexColor("#444444"))), | |||
| Spacer(1, 14)] | |||
| if os.path.exists(SHOT): | |||
| img = Image(SHOT, width=3.84 * inch * 1.05, height=2.72 * inch * 1.05) | |||
| s += [img, P("<i>The editor running in VICE: 24 text rows, the reverse-video cursor block " | |||
| "and the status row (file name on the left, line number / total on the right).</i>", | |||
| ParagraphStyle("cap", parent=B, alignment=1, fontSize=8.5, textColor=colors.grey))] | |||
| else: | |||
| print("note: no screenshot at", SHOT, "- title page built without it") | |||
| s += [P("Contents", H2)] | |||
| for line in ["1. Overview and limits", "2. Building and running", "3. Starting the editor", | |||
| "4. The screen", "5. Normal mode commands", "6. Insert mode", | |||
| "7. Colon (:) commands", "8. Status messages", "9. Differences from real vi/vim", | |||
| "10. Worked examples", "11. Source layout"]: | |||
| s.append(P(line, ParagraphStyle("toc", parent=B, spaceAfter=1, leftIndent=12))) | |||
| s.append(PageBreak()) | |||
| # ---------------------------------------------------------------- 1 | |||
| s += [P("1. Overview and limits", H1), | |||
| P("The editor loads a PETSCII sequential (SEQ) file from disk into one memory buffer, " | |||
| "shows it on the 40-column screen, lets you move around and edit it with vi-style " | |||
| "keys, and writes it back. It is a deliberately small subset of vi: the commands " | |||
| "listed in this guide are the complete set."), | |||
| table([["Item", "Limit / behaviour"], | |||
| ["Text buffer", "19,000 bytes (one <font face='Courier'>malloc</font> block). " | |||
| "A file larger than about 18,999 bytes is truncated on load without warning."], | |||
| ["Lines", "Up to 599 lines. Opening a new line beyond that is refused."], | |||
| ["Line length", "80 characters. Longer lines are split at 80 on load (you are told " | |||
| "<i>long lines split at 80</i>); typing past 80 shows <i>line full (80)</i>."], | |||
| ["Screen", "24 text rows of 40 columns plus a status row. The view scrolls vertically " | |||
| "and horizontally to follow the cursor."], | |||
| ["File format", "PETSCII, lines separated by carriage return ($0D). CR LF and bare LF " | |||
| "are converted to CR on load; a Ctrl-Z ($1A) byte ends the file. A final CR is " | |||
| "always added on save."], | |||
| ["Disk", "Device 8, drive 0. Files are read as <font face='Courier'>name,S,R</font> and " | |||
| "written as <font face='Courier'>@0:name,S,W</font> (replace)."], | |||
| ["File names", "Up to 20 characters, stored in lower case."], | |||
| ["Undo / search / counts", "Not supported (see section 9)."]], | |||
| [1.4 * inch, W - 1.4 * inch])] | |||
| # ---------------------------------------------------------------- 2 | |||
| s += [P("2. Building and running", H1), | |||
| P("Everything lives in the <font face='Courier'>vim/</font> folder of the repository. " | |||
| "The build needs VICE 3.10 installed at " | |||
| "<font face='Courier'>C:\\Program Files\\GTK3VICE-3.10-win64</font> and the Power C system " | |||
| "disk at <font face='Courier'>reference\\POWERc.d81</font> (never modified; the build works " | |||
| "on a copy called <font face='Courier'>work.d81</font>)."), | |||
| P("Build", H2), | |||
| code("build.bat build vim on work.d81\n" | |||
| "build.bat vim -Full fresh disk, recompile every unit\n" | |||
| "build.bat vim -Run -Keys \"vim.c\\njjj\" build, then run and type keys"), | |||
| P("The build runs one VICE session that compiles each changed unit " | |||
| "(<font face='Courier'>vim, vscreen, vview, vedit, vml</font>) with " | |||
| "<font face='Courier'>cc</font>, links them with <font face='Courier'>link -s</font>, and " | |||
| "produces the program <font face='Courier'>vim</font> on <font face='Courier'>work.d81</font>. " | |||
| "Only units whose source changed since the last build (tracked in " | |||
| "<font face='Courier'>work.stamp</font>) are recompiled. Screenshots of each step go to " | |||
| "<font face='Courier'>shots\\</font>."), | |||
| table([["build.ps1 option", "Meaning"], | |||
| [k("-Prog name"), "Program to build: <font face='Courier'>vim</font> (default) or <font face='Courier'>mltest</font>."], | |||
| [k("-Full"), "Ignore the stamps: start from a fresh work disk and recompile everything."], | |||
| [k("-Run"), "After linking, leave the Power C shell, load the program and run it."], | |||
| [k("-Keys text"), "Keystrokes typed into the running program (<font face='Courier'>\\n</font> = RETURN)."], | |||
| [k("-Shell text"), "Extra commands for the Power C shell instead of running."], | |||
| [k("-Delay ms"), "Wall-clock milliseconds per keystroke (default 900)."], | |||
| [k("-Pad / -Tail n"), "Spare RETURNs while a compile / the linker is working (20 / 8)."], | |||
| [k("-Settle s"), "Extra seconds to keep running after the last key."]], | |||
| [1.4 * inch, W - 1.4 * inch]), | |||
| P("Run", H2), | |||
| P("Double-click or run <font face='Courier'>run.bat</font>: it autostarts " | |||
| "<font face='Courier'>vim</font> from <font face='Courier'>work.d81</font> in " | |||
| "<font face='Courier'>x64sc</font>. On a real C64 (or any emulator) with the disk in device 8:"), | |||
| code("LOAD\"VIM\",8,1\nRUN"), | |||
| P("<b>Keyboard tip for VICE:</b> with the default keymap the PC <b>Esc</b> key is the C64 " | |||
| "<b>RUN/STOP</b> key and <b>Backspace</b> is <b>INST/DEL</b>, so the editor feels close to " | |||
| "vim on a PC keyboard. Upper-case letters such as G, A, I and O are typed with Shift.", NOTE)] | |||
| # ---------------------------------------------------------------- 3 | |||
| s += [P("3. Starting the editor", H1), | |||
| P("The screen clears to white text on blue and the status row asks:"), | |||
| code("file: _"), | |||
| table([["You type", "What happens"], | |||
| ["A name, then RETURN", "The file is loaded from device 8 and you are in normal mode at line 1."], | |||
| ["Just RETURN (or RUN/STOP)", "You get an empty buffer named <i>[no name]</i>. Give it a name later with " | |||
| + k(":w name") + "."], | |||
| ["A name that is not on the disk", "You are asked <font face='Courier'>not found - create it? (y/n)</font>. " | |||
| + k("y") + " starts an empty buffer that keeps the name (the status row says <i>new file</i>; " | |||
| "the file is created on the first " + k(":w") + "). " + k("n") + " or RUN/STOP asks for a name again."]], | |||
| [1.9 * inch, W - 1.9 * inch]), | |||
| P("While typing at the <i>file:</i> prompt (and on the colon command line) DEL erases the last " | |||
| "character and RUN/STOP cancels. Shifted letters are folded to lower case.")] | |||
| # ---------------------------------------------------------------- 4 | |||
| s += [P("4. The screen", H1), | |||
| P("Rows 0-23 show the text. The character under the cursor is drawn in reverse video. " | |||
| "Row 24 is the status row, also in reverse video:"), | |||
| code("left part (26 chars) + line/total\n" | |||
| "vim.c + 12/240"), | |||
| table([["Part", "Shows"], | |||
| ["Left", "A one-shot message if there is one (section 8); otherwise " | |||
| "<font face='Courier'>-- insert --</font> in insert mode; otherwise the file name, or " | |||
| "<font face='Courier'>[no name]</font>."], | |||
| ["Column 28", "<font face='Courier'>+</font> when the buffer has unsaved changes."], | |||
| ["Right", "Current line number / total lines."]], | |||
| [1.2 * inch, W - 1.2 * inch]), | |||
| P("The editor switches the VIC-II to the upper/lower-case character set, so unshifted " | |||
| "letters show as lower case and shifted letters as capitals.")] | |||
| # ---------------------------------------------------------------- 5 | |||
| s += [P("5. Normal mode commands", H1), | |||
| P("Normal mode is where the editor starts and where RUN/STOP returns you. Commands are " | |||
| "single keys (or the two-key " + k("dd") + " and " + k("gg") + "); they take no count prefix.")] | |||
| s += [KeepTogether([P("Moving", H2), table([["Key", "Action"], | |||
| [k("h") + " or CRSR left", "Left one character."], | |||
| [k("l") + " or CRSR right", "Right one character (stops at end of line)."], | |||
| [k("j") + " or CRSR down", "Down one line."], | |||
| [k("k") + " or CRSR up", "Up one line."], | |||
| [k("0"), "Start of the line."], | |||
| [k("$") + " (Shift+4)", "End of the line."], | |||
| [k("gg"), "First line of the file."], | |||
| [k("G") + " (Shift+g)", "Last line of the file."]], | |||
| [1.6 * inch, W - 1.6 * inch])]), | |||
| P("When moving up or down onto a shorter line the cursor is pulled back to that line's end. " | |||
| "The screen scrolls so the cursor is always visible, including sideways for lines " | |||
| "longer than 40 columns.")] | |||
| s += [P("Entering insert mode", H2), | |||
| table([["Key", "Inserts"], | |||
| [k("i"), "Before the cursor."], | |||
| [k("a"), "After the cursor."], | |||
| [k("I") + " (Shift+i)", "At the start of the line."], | |||
| [k("A") + " (Shift+a)", "At the end of the line."], | |||
| [k("o"), "On a new, empty line opened below the current one."], | |||
| [k("O") + " (Shift+o)", "On a new, empty line opened above the current one."]], | |||
| [1.6 * inch, W - 1.6 * inch])] | |||
| s += [P("Changing text", H2), | |||
| table([["Key", "Action"], | |||
| [k("x"), "Delete the character under the cursor."], | |||
| [k("dd"), "Delete the current line and keep a copy of it (up to 80 characters) in the yank buffer. " | |||
| "Pressing " + k("d") + " followed by any other key cancels."], | |||
| [k("p"), "Put the last line deleted with " + k("dd") + " on a new line below the cursor. " | |||
| "The copy stays, so " + k("p") + " can be repeated; " + k("dd") + " then " + k("p") + " moves a line down."], | |||
| [k(":"), "Open the colon command line (section 7)."]], | |||
| [1.6 * inch, W - 1.6 * inch]), | |||
| P("Any other key in normal mode is ignored.")] | |||
| # ---------------------------------------------------------------- 6 | |||
| s += [P("6. Insert mode", H1), | |||
| P("The status row shows <font face='Courier'>-- insert --</font>. Every printable key is " | |||
| "inserted at the cursor, including shifted letters and the C64 graphics characters."), | |||
| table([["Key", "Action"], | |||
| ["RUN/STOP (Esc in VICE)", "Back to normal mode; the cursor steps one left, as in vi."], | |||
| ["RETURN", "Split the line at the cursor; the rest moves to a new line below."], | |||
| ["INST/DEL (Backspace in VICE)", "Delete the character before the cursor. At the start of a line, " | |||
| "join it onto the previous line (refused with <i>joined line would pass 80</i> if the " | |||
| "result would be too long)."], | |||
| ["Cursor keys", "Move without leaving insert mode."]], | |||
| [1.9 * inch, W - 1.9 * inch]), | |||
| P("A line cannot grow past 80 characters: further typing is refused with <i>line full (80)</i>.")] | |||
| # ---------------------------------------------------------------- 7 | |||
| s += [P("7. Colon (:) commands", H1), | |||
| P("Press " + k(":") + " in normal mode, type the command on the status row and press RETURN. " | |||
| "DEL edits; RUN/STOP or an empty line cancels."), | |||
| table([["Command", "Action"], | |||
| [k(":w"), "Write the buffer to its file name, replacing the old copy."], | |||
| [k(":w name"), "Write to <i>name</i>; from now on the buffer is called <i>name</i>."], | |||
| [k(":wq") + " / " + k(":wq name"), "Write, then quit."], | |||
| [k(":x"), "Write (always, even if nothing changed), then quit."], | |||
| [k(":q"), "Quit. Refused with <i>unsaved - :q! quits</i> if there are unsaved changes."], | |||
| [k(":q!"), "Quit and throw away unsaved changes."]], | |||
| [1.6 * inch, W - 1.6 * inch]), | |||
| P("<b>Quitting restarts the C64.</b> Power C uses zero-page locations BASIC depends on, so " | |||
| "instead of returning to a damaged BASIC the editor jumps to the KERNAL reset routine " | |||
| "($FCE2). You see the normal power-on banner and READY. Anything in memory is gone; only " | |||
| "what you wrote to disk survives.", NOTE), | |||
| P("Commands are matched on their letters only, so " + k(":Q") + " works like " + k(":q") + | |||
| ". Anything else gives <i>unknown command</i>.")] | |||
| # ---------------------------------------------------------------- 8 | |||
| s += [P("8. Status messages", H1), | |||
| P("Messages appear on the left of the status row and disappear at the next key."), | |||
| table([["Message", "Meaning"], | |||
| ["new file", "The name you gave is not on the disk yet; " + k(":w") + " will create it."], | |||
| ["long lines split at 80", "The file had lines over 80 characters; they were broken into several lines."], | |||
| ["written", "The save succeeded."], | |||
| ["cannot write", "The file could not be opened for writing (no disk, drive not present, ...)."], | |||
| ["no file name", k(":w") + " on a buffer with no name: use " + k(":w name") + "."], | |||
| ["unsaved - :q! quits", k(":q") + " with unsaved changes."], | |||
| ["unknown command", "The colon command was not one of w, wq, x, q, q!."], | |||
| ["line full (80)", "Insert refused: the line is already 80 characters long."], | |||
| ["joined line would pass 80", "Backspace at the start of a line refused: the joined line would be too long."], | |||
| ["out of memory", "The 19,000-byte buffer could not be allocated (shown at start-up)."]], | |||
| [1.9 * inch, W - 1.9 * inch])] | |||
| # ---------------------------------------------------------------- 9 | |||
| s += [P("9. Differences from real vi/vim", H1), | |||
| table([["Area", "This editor"], | |||
| ["Escape", "RUN/STOP (the C64 has no Esc key; VICE maps PC Esc to it)."], | |||
| ["Counts", "No numeric prefixes: " + k("3j") + " or " + k("5dd") + " do not work (digits other than " | |||
| + k("0") + " are ignored)."], | |||
| ["Undo / redo", "None - save often."], | |||
| ["Yank / registers", "One unnamed register filled only by " + k("dd") + "; no " + k("yy") + ", " | |||
| "no named registers, no " + k("P") + "."], | |||
| ["Motions", "No word motions (w, b, e), no search (/, ?, n), no " + k(":number") + "."], | |||
| ["Other", "No visual mode, no " + k(".") + " repeat, no " + k("r") + ", " + k("c") + ", " + k("J") + | |||
| ", no " + k(":e") + " (quit and run again to open another file)."]], | |||
| [1.4 * inch, W - 1.4 * inch])] | |||
| # ---------------------------------------------------------------- 10 | |||
| s += [P("10. Worked examples", H1), | |||
| P("Create a new file", H2), | |||
| code("RUN start the editor\n" | |||
| "notes RETURN file: notes\n" | |||
| "y not found - create it? (y/n)\n" | |||
| "i Hello, C64! RETURN type some text\n" | |||
| " second line\n" | |||
| "RUN/STOP back to normal mode\n" | |||
| ":wq RETURN write and quit (the C64 restarts)"), | |||
| P("Fix a typo and move a line", H2), | |||
| code("j j j down to the line\n" | |||
| "l l l l x move right, delete one character\n" | |||
| "dd cut the line\n" | |||
| "p put it back one line lower\n" | |||
| ":w RETURN save; status row says \"written\""), | |||
| P("Save under a new name and abandon edits", H2), | |||
| code(":w backup RETURN write a copy as \"backup\"\n" | |||
| "x x x more edits ...\n" | |||
| ":q RETURN \"unsaved - :q! quits\"\n" | |||
| ":q! RETURN quit without saving"), | |||
| P("Automated test run in VICE", H2), | |||
| code("build.bat vim -Run -Keys \"vim.c\\njjj\""), | |||
| P("Builds, starts the editor, opens <font face='Courier'>vim.c</font> from the work disk and " | |||
| "moves down three lines; the final screen is saved to <font face='Courier'>shots\\run.png</font>.")] | |||
| # ---------------------------------------------------------------- 11 | |||
| s += [P("11. Source layout", H1), | |||
| table([["File", "Contents"], | |||
| ["vim.c", "<font face='Courier'>main()</font>, the key dispatcher for both modes, the file prompt, loading and the colon commands."], | |||
| ["vedit.c", "Buffer editing: insert, delete, newline, backspace/join, " + k("dd") + "/" + k("p") + ", cursor keys, saving."], | |||
| ["vview.c", "Scrolling, partial/full repaint and the status row."], | |||
| ["vscreen.c", "Screen set-up and tear-down, low-level drawing, keyboard read from the KERNAL buffer ($C6/$0277)."], | |||
| ["vml.s / vmlwrap.c", "6510 helpers copied to $C000: full-screen paint, row paint, block move, line-index adjust, key pop. " | |||
| "<font face='Courier'>build-ml.ps1</font> assembles them into the generated <font face='Courier'>vml.c</font>."], | |||
| ["*.pet", "PETSCII copies of the sources made by the build; the <font face='Courier'>.c</font> files are authoritative."], | |||
| ["build.bat / build.ps1", "One-session build on <font face='Courier'>work.d81</font>."], | |||
| ["run.bat", "Start the built editor in VICE."], | |||
| ["NOTES.md", "Hard-won notes on Power C, sys(), the keyboard and VICE automation."]], | |||
| [1.5 * inch, W - 1.5 * inch]), | |||
| Spacer(1, 6), | |||
| P("Memory use: Power C program and heap below $C000 (the text buffer is a 19,000-byte heap " | |||
| "block), machine code at $C000, its parameter block at $C400, zero-page save area at $C410, " | |||
| "and the C stack just below $D000. Screen at $0400, colour RAM at $D800.")] | |||
| doc = SimpleDocTemplate(OUT, pagesize=letter, leftMargin=0.75 * inch, rightMargin=0.75 * inch, | |||
| topMargin=0.75 * inch, bottomMargin=0.8 * inch, | |||
| title="vim for the Commodore 64 - User Guide", author="Daniel Covington") | |||
| doc.build(s, onFirstPage=footer, onLaterPages=footer) | |||
| print("ok", OUT) | |||
| @@ -0,0 +1,226 @@ | |||
| %PDF-1.4 | |||
| %“Œ‹ž ReportLab Generated PDF document (opensource) | |||
| 1 0 obj | |||
| << | |||
| /F1 2 0 R /F2 3 0 R /F3 6 0 R /F4 8 0 R /F5 9 0 R | |||
| >> | |||
| endobj | |||
| 2 0 obj | |||
| << | |||
| /BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font | |||
| >> | |||
| endobj | |||
| 3 0 obj | |||
| << | |||
| /BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font | |||
| >> | |||
| endobj | |||
| 4 0 obj | |||
| << | |||
| /BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter [ /ASCII85Decode /FlateDecode ] /Height 272 /Length 2981 /SMask 5 0 R | |||
| /Subtype /Image /Type /XObject /Width 384 | |||
| >> | |||
| stream | |||
| Gb"0T;/Rjd&k11dOJbqHT1mR^qERAbaLid<YRd,/[FDJ^@r<-X0`D"H8!5,hOsEV^,Y=.E8Wk>jOsEV^,Y=.E8Wk>jOsEV^,Y=.E8Wk>jOsEV^,Y=.E8Wk>jOsEV^,Y=0UUT]1I\*%k^il8e&C[[=kb<a\uk/dP,UYqKHpIEr"1YsaMbr8(LrNj$4k*rDAhfShhrPNDcmuOjI.2FSVj6qp"?LLDPq8h1.+2`0g+'qupJ#$?[ZM@*tYE#Y`oB9t;IJ_8h[V<0kNo*(6XS2Wa],]o*PrRM;l`VDDT-Ks#Gi7trpIEs5'Us"F(@Mnp042Ak=PV$cf6au6q!%[2f@8Y!C%VK.A*s5W<Z`G<f%qK_k>Nr2)#<D\;YL)lX8cejosONag>sH`%pP'Ac?&K(p-,NKI]h"BptOO",OKN5bnoX(7=G+"[Iqs-*V_bm\W7!P8:,i^>n4/hf<KPAmFRE5jd>GEgY:WbgtC_=2q$P)BpXH7C]?LX^h<&,j-RZUdG>sZk>U`\8_C\'YnL_f2E'I%h#1B"+6WFh^q4:KO0n``J[+qJ8?374(i/T$[*(aaqMu>?"MrQppIErsBW(lKn#EuE3o0H,nuJ5hmN4VnH[hi^:U+"Wa1kqbh#HJcYJ,8Fro!sepIEs!+HPr_8)L&BhaDn-/,KP]C@@4jb<]b/Iu`:]Y0B+As1gqfrK27e`TEYX`?'9rc-Opah>W5.gcp1TpARU`%hKRnmuOj#%q3-:J@En^+)-Z3P:WG`^A$R6>Mgd<G4:lif6L`^]^>Z[G'hFXqrdUR,L]lPIW=>s[j9:l,EL`-SbMNsgYO#dH^!,%g@=(\k+!7&a1Jh<HT^2h>!F1^QTMDB^>4(hq]ftLR&B&\_`@_.hOO3"W/oi^OmfmYr#@gpSC`$nn@\/eOg[3.VuOI@5'$qST1=B'o!S'Mmn94\]g's=`jIb4gNhYHoA]I>H![WAs6f9XmaHHPpPmJQhB-I0Sb<9_$_I,a?K=N"lb#H(hY-q>X8d?nZ1e/f>9#4tf+3;u_>c?nDj+H'RHNZBB^_"ho-lTT+"j/&GMc26hUUcU(DgD+b7e5]T6=Q?WqQE_]/n7)o7-[!h0^4p?Di!c^\;ue%_SRh]Cs_!b9,3i+)0n:$sjaZUH&$0g3b=i^Rlb.[=2p6G[CBLpARV[HMmS'HTgd+E:_e=p;<XijjVMu+4f9jC$/DGT)Vk.hHmU6q=gr`DZBBg]s5<O]=7fnoC>tjpIAD8J@?;@+M"QL\X]"aC[[=kq>c)OpARSjO7,<@:t4>DC$/FMr=Hm0%.Jl&q]kKDo`"qTnKSELXM$jH^@qT?b$Zk'^T"n2d_<#:hdZUN;1!egSPQNcr9*e>07SJfCM<0t[/'cRZ1e/fWt,aYC[[=kq>c)OpARU`%hKRnmuOjP!.hEKr^a(#&/]3OO0n``J[+qJ8?374(i/T$[/'cRZ1e/fWt,aYC[[=kq>c)OpARU`%hKRnmuOjP!.hEKr^a(#&/]3OO0n``J[+qJ8?374(i/T$[/'cRZ1e/fWt,aYC[[=kq>c)OpARU`%hKRnmuOjP!.hEKr^a(#&/]3OO0n``J[+qJ8?374(i/T$[/'cRZ1e/fWt,aYC[[=kq>c)OpARU`%hKRnmuOjP!.hEKr^a(#&/]3OO0n``J[+qJ8?374(i/T$[/'cRZ1e/fWt,aYC[[=kq>c)OpARU`%hKRnmuOjP!.hEKr^a(#&/]3OO0n``J[+qJ8?374(i/T$[/'cRZ1e/fWt,aYC[[=kq>c)OpARU`%hKRnmuOjP!.hEKr^a(#&/]3OO0n``J[+qJ8?374(i/T$[/'cRZ1e/fWt,aYC[[=kq>c)OpARU`%hKRnmuOjP!.hEKr^a(#&/]3OO0n``J[+qJ8?374(i/T$[/'cRZ1e/fWt,aYC[[=kq>c)OpARU`%hKRnmuOjP!.hEKr^a(#&/]3OO0n``J[+qJ8?374(i/T$[/'cRZ1e/fWt,aYC[[=kq>c)OpARU`%hKRnmuOjP!.hEKr^a(#&/]3OO0n``J[+qJ8?374(i/T$[/'cRZ1e/fWt,aYC[[=kq>c)OpARU`%hKRnmuOjP!.hEKr^a(#&/]3OO0n``J[+qJ8?374(i/T$[/'cRZ1e/fWt,aYC[[=kq>c)OpARU`%hKRnmuOjP!.hEKr^a(#&/]3OO0n``J[+qJ8?374(i/T$[/'cRZ1e/fWt,aYC[[=kq>c)OpARU`%hKRnmuOjP!.hEKr^a(#&/]3OO0n``J[+qJ8?374(i/T$[/'cRZ1e/fWt,aYC[[=kq>c)OpARU`%hKRnmuOjP!.hEKr^a(#&/]3OO0n``J[+qJ8?374(i/T$[/'cRZ1e/fWt,aYC[[=kq>c)OpARU`%hKRnmuOjP!.hEKr^a(#&/]3OO0n``J[+qJ8?374(i/T$[/'cRZ1e/fWt,aYC[[=kq>c)OpARU`%hKRnmuOjP!.hEKr^a(#&/]3OO0n``J[+qJ8?374(i/T$[/'cRZ1e/fWt,aYC[[=kq>c)OpARU`%hKRnmuOjP!.hEKr^a(#&/]3OO0n``J[+qJ8?374(i/T$[/'cRZ1e/fWt,aYC[[=kq>c)OpARU`%hKRnmuOjP!.hEKr^a(#&/]3OO0n``J[+qJ8?374(i/T$[/'cRZ1e/fWt,aYC[[=kq>c)OpARU`%hKRnmuOjP!.hEKr^a(#&/]3OO0n``J[+qJ8?374(i/T$[/'cRZ1e/f4%Z'rq8I^A2W+JY@sb0Jr^aX@jCK\i4h()J\Qnh+2D=smB^_"he!o]Lkp`a,kF7gQnr'6U5LM.hH0$2BH$A/l]\W-=fg!oS[/'Obe[9b]ons@PZ.f("m;e:)T<n1.%PFCH<Nf5GJ#%KWMpHnF+W^T!q8H\QmJW0uStDg(mJS2"OsEV^,Y=.E8Wk>jOsEV^,Y=.E8Wk>jOsEV^,Y=.E8Wk>jOsEV^,Y=.E8Wk>jOsEV^,Y=.E8Wk>jg?q26:(4B~>endstream | |||
| endobj | |||
| 5 0 obj | |||
| << | |||
| /BitsPerComponent 8 /ColorSpace /DeviceGray /Decode [ 0 1 ] /Filter [ /ASCII85Decode /FlateDecode ] /Height 272 /Length 61 | |||
| /Subtype /Image /Type /XObject /Width 384 | |||
| >> | |||
| stream | |||
| Gb"0;!=]#/!5bE.WG`:P'EA+5zzzzzzzzzzzzzzzzzzzzzzzz!5PK5a2rhS~>endstream | |||
| endobj | |||
| 6 0 obj | |||
| << | |||
| /BaseFont /Helvetica-Oblique /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font | |||
| >> | |||
| endobj | |||
| 7 0 obj | |||
| << | |||
| /Contents 19 0 R /MediaBox [ 0 0 612 792 ] /Parent 18 0 R /Resources << | |||
| /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /XObject << | |||
| /FormXob.710ea22e64b3ac41733440b8ebc0daeb 4 0 R | |||
| >> | |||
| >> /Rotate 0 /Trans << | |||
| >> | |||
| /Type /Page | |||
| >> | |||
| endobj | |||
| 8 0 obj | |||
| << | |||
| /BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F4 /Subtype /Type1 /Type /Font | |||
| >> | |||
| endobj | |||
| 9 0 obj | |||
| << | |||
| /BaseFont /Courier-Bold /Encoding /WinAnsiEncoding /Name /F5 /Subtype /Type1 /Type /Font | |||
| >> | |||
| endobj | |||
| 10 0 obj | |||
| << | |||
| /Contents 20 0 R /MediaBox [ 0 0 612 792 ] /Parent 18 0 R /Resources << | |||
| /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] | |||
| >> /Rotate 0 /Trans << | |||
| >> | |||
| /Type /Page | |||
| >> | |||
| endobj | |||
| 11 0 obj | |||
| << | |||
| /Contents 21 0 R /MediaBox [ 0 0 612 792 ] /Parent 18 0 R /Resources << | |||
| /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] | |||
| >> /Rotate 0 /Trans << | |||
| >> | |||
| /Type /Page | |||
| >> | |||
| endobj | |||
| 12 0 obj | |||
| << | |||
| /Contents 22 0 R /MediaBox [ 0 0 612 792 ] /Parent 18 0 R /Resources << | |||
| /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] | |||
| >> /Rotate 0 /Trans << | |||
| >> | |||
| /Type /Page | |||
| >> | |||
| endobj | |||
| 13 0 obj | |||
| << | |||
| /Contents 23 0 R /MediaBox [ 0 0 612 792 ] /Parent 18 0 R /Resources << | |||
| /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] | |||
| >> /Rotate 0 /Trans << | |||
| >> | |||
| /Type /Page | |||
| >> | |||
| endobj | |||
| 14 0 obj | |||
| << | |||
| /Contents 24 0 R /MediaBox [ 0 0 612 792 ] /Parent 18 0 R /Resources << | |||
| /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] | |||
| >> /Rotate 0 /Trans << | |||
| >> | |||
| /Type /Page | |||
| >> | |||
| endobj | |||
| 15 0 obj | |||
| << | |||
| /Contents 25 0 R /MediaBox [ 0 0 612 792 ] /Parent 18 0 R /Resources << | |||
| /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] | |||
| >> /Rotate 0 /Trans << | |||
| >> | |||
| /Type /Page | |||
| >> | |||
| endobj | |||
| 16 0 obj | |||
| << | |||
| /PageMode /UseNone /Pages 18 0 R /Type /Catalog | |||
| >> | |||
| endobj | |||
| 17 0 obj | |||
| << | |||
| /Author (Daniel Covington) /CreationDate (D:20261107083851-05'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20261107083851-05'00') /Producer (ReportLab PDF Library - \(opensource\)) | |||
| /Subject (\(unspecified\)) /Title (vim for the Commodore 64 - User Guide) /Trapped /False | |||
| >> | |||
| endobj | |||
| 18 0 obj | |||
| << | |||
| /Count 7 /Kids [ 7 0 R 10 0 R 11 0 R 12 0 R 13 0 R 14 0 R 15 0 R ] /Type /Pages | |||
| >> | |||
| endobj | |||
| 19 0 obj | |||
| << | |||
| /Filter [ /ASCII85Decode /FlateDecode ] /Length 1114 | |||
| >> | |||
| stream | |||
| GatU2gQEI6&:N^lqC0C\(8:V=r"`d\b*A4OfYl(Q^'le!Pb!`7&RbWe>/LclJk\-,'SmZ5cKTD]>;2`FB&.Z;!PFr?oSrt40OFmF7)JkGGWd-s)>,d4:8C;Pc\\AIeI52C^PWt4J%CdcE(:)lXfGj_GR/'mZ_jakU@B#+KF.S,=qAAc>[_PYrX[5&NoqK++umuu$n&a3<Yj?8dQ`lTYZ=]L`XmbWSNU%ps8:&rE1.UmJ2!gZ`_e'\ST;ak&T<!9JTnqg:(qK#`a9GB`K-c4fM.B-G>q@0EIArU\PPBl,*3I6J0Zs/<1^?e#$+Dd<h)Z\N!U\NU3^.,P!W1c*ORl@[nH%(SKENV4Pfa;L.m%t:1`(nr!>N`M2D^%&P9Pu(,8c6fd.I]*GrYN^65hMY@.89ZrL.mJ9#8`/Ss7=%Gsbc_0ui$$PuY0STc70)I*a?RN4jZKDY1W?!QE^p;;6Eh;?#nKf)h4^36oTPZb]R`;Ecmo!A#V/bi%G]6XWT4_V^2+c7;9bb,D>rW"aueaBLIKpQVu:k5-=iS"Mb]\?UP"q%tb\HP?\7&InuqLZd\ZZD7s`bdI!PpT3!>4[sk6"RNY;h`oDq\gMMmi#R3h(2+6W6I<2=tW4/99oi,-!_A"aD$di"h\Tq.0qOI;4^kFpb@-%Vfr3dhUoY\7T.-N%Hgh7]l/P[khF-:Ze$j\bIt*nfqBFkOM'DD20Q:EoPG`.p_NTUb%O+8ijbcn=kL*$&%]JskWtb>Sbd?7[**Cr,oR7+RO)"YIUY!a$Og#E#(*g_L\mQ2]<D\M'?Q<kii+u%l?U'2*i`7a.[d6_Gh1B3`1_V-btcY!FEp-Hh=IP"A'YpC%C*^/>o5@!J"W<9B6TnmV5rC$i#S`Ms2O(%?>a"N7#rR!n+T79Ts"_u&GQel+!P)PjOlsaQ<Y#p,S8G8c+UOX,oDpp=+mCU]Z"p:\h7Y>hfnRJ`j*He&XOj6VT*BrFFY0IPdr!BK]$uP@R8k3?XS50<a[,b+u%Il88K*-D-LiUQa'Y=7;s],=)Q\uZ7RVU;dhaT'=Vk:rtR-f;gLloGf.=p`]r)Wm+8?8>[EH=ctcelp66*4`oA@HB&B%O3'i/D^H]&JD?~>endstream | |||
| endobj | |||
| 20 0 obj | |||
| << | |||
| /Filter [ /ASCII85Decode /FlateDecode ] /Length 2989 | |||
| >> | |||
| stream | |||
| GatU5D0+E%')q<+dC"*u7CGIIKE*I#X1GBBVgRgdF_l)t]$_B<%7WWsZniq/malCOkQMN"@)XQ"\M_i!h:"#Q2\qeUcdMiK.tD!(E.)AMA]&U"Q=Dm.I=U):eXoq))jalU`jhf`,Lc5'(,S7p$Z3+?mNVsk\75]UFhE;d(SDNPDYRtc,;'gl*>lRnaTR":j+tC$l$&No9`4XQ$uKM@\.tp^i.Z`q\+C%LZ<B=J@:G?g82G('i]9F\XO5Z@j/4\Q7a2U8i"4N+3u]`QU2?*K4j/@?ekE/T[XfQ\+Gj1)Op=l(El[460e+H<RbAH42"A8FKm#A^SS8=#S"`nb'Iu":_LkBG!0=V<kF;?qOR1;`V()rfn9`Kj?i5+%NtV_=_,h2eEX?`c3:N0KMQOD@_CV>*RHT9.n;W*'iB(n"`uKapa]E2Q78JYiZ*Y#J;\HN$LD=/P#R&INA($gk6l\+i>/30?8@:n69=C+6rI,u#`O(S,&2"F%a45;,LaDSMM*S=V$ZZt-$-7K@)4kDG94,a.osmD2#@o1/`_s&Iog(@=Gp/Nie$*ReL?E)\&7rM#&*Rtm@orEo\d,%@g9sI)1=63+$#W!_o:N2pY?^=OCsPDVp0;\&g!pjRll'g"KJ'+1f\U0Y0Ikp-!]_>pf_<0EJ$\I>XrS<pe#_nilej`fm)j0^n2(r^o\+Z2<j1A5AW@5o#FI_P^qhnPfHOG<4;Y3A*_,S%/b&+4g`=P)ZG0?V/nag\-<?t`!Gb>@O,@?tTfNG@&[-,A-Hrn4-[q,n</\?%F,HeWM@L\n`,^><Ak6/&mgStnKR4>f(ImXF80OAj>bTSocgscS(bSGABc'YH@D#MSW<8-SQZd0HOiHY/ld:?N_uT(3abMieY@ko(L)kPhblAF4#^&j4$7=noOWKm&;U!ES6nd56bXZ=fSUgp5kE899RL[C*l+0kr9UY.'>+F'omc6/V(9g4MJl"1Ql9=^%Y$NW^e"Otu$k:]#(RB9)Y!r.j-VL%!Q&cAIG=mrca^B%._rprA+$a[!Z>::I<P&c6.8!0q.G8.$-WHI<dsotWf4o\Sda@j9\n%A:]/OWfD)nLsgC>W(#_I0[F0(^)e4U*NP#GMI.T#nj$Oi\kXjI.b;4]$G&1sh?`*hHed^\3Zr]a2D-D:CaE=q*X7b&e:(Qs\74&+LjB"HG&JW!O$cIckol!g\+Sb+G1@Tagqm[7o8%"sECU^<o=OeR't_u)p%m,eTqm^-tGjJ_]%W3E113o#Wo_BjSb:WTk,T\XON8-])=7b1)J5Et_h&Rlk5;L0nBA;V31)%Zj@2Sg.nU8UV<10Ck@4$-b=4+BQsG/h<ZhPXJaUk)<X*JY'Y5"$Sa>\4m>f3758_(b'TfdnIaY[[Ror_p.n<+&G*oYdn^S+"O[hjPM_SmY\6KFBN<`IL=f]:4uIF1%bfs.XVfqtUqG0uE8YAn"#7@LWFml5ZqYijAd^RRS:EMe%AE(N<ZlFGSS\V2m%jL==NjJ*./iG*[+g:OZ(p_TSX10a>;>2u"KmrI/<O&.O[`0IGr'F_rg;7$lIASj$Li/%DSKnk.q9H:m*u;pCJ;*`1(o29">1SX)c7TV*+Ioc"@Hb;]:.IY7.'UuPBJ7>+rEnYr7/_iffd'b-jZ6,SJ8k)=(aqQZb>QnAp:Pr&lrXK-ImSgnTk*-[$q=i6.>l9fCjI`^UqdWc"L(dT3OT=.423&XRnS#Z@eHHoetYff#8R#&6(HYK^g-<ODmNcho]2Gc2Z>pkMm7KkE]BYqVX>;0i38Ib'q.$ZSd!q@2HXSq&RRp-^J\1p`)'hIss"=-\j2t)1p;=GA6e6Rf((t/.C:OaAtQN;(DCuTR'*1\J(G`]b:%e:R#>O3ucQMH1jKT&U/'GI&;prBkuVpL6)l\MOt9,SWS)s&K>a"7(+:s]Rr2d@m[<Lj,*>=S9^CY0=lb>-/m9sf/+<@WC&><+`E\D"'l:UQ%a4mfr_HpkS[(kE"T&Td0XN.ap$A(ZJX#@,.uP*2-,D.:`9ipAsam:]1HQ92;[=a.o?<XeC%Fe8Gt$RQ\dNr/$l1c(d36W^^M4H7m,%%m))#/;q3$pW_.7d0a6p[@!hWXmZ.=%Xq<$GY;,`>I\/0pM&b-gUaXEOZAn'I`Wj8&pR!;T=$OKBFkPPJ@7$0Nd8;98Ks<kbTXN[L_\=hQnQeMB=\3_2hT:m"5Pfj,reb@<72nJkM*E<cE'i]n_/$hFIjq"HW,8'o4ImK)Sa'3=8<a`he6?NFSCkDBNAoi"BfMcUCrs*=&HMNeS4[Q49ir)H=_D'D/OBCl6ANnTtW%`3MW?-fniE>@kie/[8N*GEDnp5D/p"dQNB"9?^<P]PrHT:#:2imiSN0WF40-:JJf5l]RBt24AWUDnUR_gHj2bK,j3AS2X-^/8*ULHr]6o9No4fJmW.&?T0^SZ(N*Icj\o#0KEn;*`2CWkkt@GULT3\Q?VnAD6WcZc=B0#l]*6"o,pgC7KF;qe$MNJEcuHe.)P@`*NDEg%!*T\-B,]h8U3>iep0ZtVba"DTmom>3Qa-(S0;9b=R@r&CX_#o]=J0sb&d0@96iH2s#=*!UhbgbVsbq9Da+AE$^N(:@cXq(.S=@_EQ`P.A!gLZ-9fj[!s=u$S^G(/s2HH0p.Fg#Ps5Be;=TX+7aVCnYLVDYm,cI::RgnE06k(!IXV(+]jW"*c3hm>"d`?O@M)<f\GZf9lgAP^l>+9>+4.+lbs8LHQ<%bfiB%8>-^Fm>=IgI.FGoa/fGP)aRe4KI:6HGuF\WifW9:I,MI"*:\2)fWea=F,O(c[O(efQAJTKduZ';$BD+=#mE)2'nPc]NEaJ*p=Z7u&NrE/@_7aCJsC_L0eB-pFq]pU='ZHlkH%leTPWu0;YL<-M)l9H`/)Hl'Rs4D^r!,pD0A:L3Ag5KWnec(fqE4=rYFN<1/\a6-VkPC0@e'/o`h&Xesk<>l4:NjB@44^0TcGPN#glo1EoT!j2;R=iNR+9"&hiW72[K~>endstream | |||
| endobj | |||
| 21 0 obj | |||
| << | |||
| /Filter [ /ASCII85Decode /FlateDecode ] /Length 2459 | |||
| >> | |||
| stream | |||
| Gatm<D0+Gi')q<+Z.#,daJhUji4JmF-?5Q7Hb%)&Q#poh2`EDs8ZX=<,tKQ_pY?![7$/+)<bmaB)?^hkZd8&'J,q_1)X9+\!PFo=jF[I;KBWdQ9=&%&$#ZXWIp>rk4F5t%:=ZN#]&>^TFMG.B%599t[KS"<=Ma2I>/;c7+C>Da8QVrL9JZ^0"_7<W70Xil-kr"%r>hbRaF;m"aY_'/C.n;K0#2:Gr=p,OpN:Rs%1@B5D&Ul/cS@dBCr^VdgN"mX]0[MhZ9%fsE7\jn*pmq=:aCBdF=(uiURYl@Pi7cW_piM.U%$RRVQPBS3K2gm`H*TM5o^&$5WH%n!B&3aK2m%8@@Qu7o;]@00tN)f#@?Jjb^#MthCq@-3s9.u]'=FnUtJWR4epUjlEB<]A'(Cu;1gM.E6&0Ci<ET_1r>gQA.)jH`&pi%Vb>Z1q4\(46r"7;\YL*0nIc!,]^%k.D3NoVnNIUWRMF.i&`3,<?dqWTEH_\.<dN-p:K'qE%->K)?f&NsiS32'I^nsON+P3`?U#XqO/"N'?caFO#__8^)03e'NVUM5GkcN7JZusfRdX@]mXXF[%,"'"9@2&<!R#+`P9m%#]/OJf]eu9?Z"+#J>r-Tb]"%$"M`Rq0SUZOaF3:g#nn>-ll.b%=m<-a3"MBVt:s=.rkHGZT'jn#=qjZ<U[JA3ehn:iJ,$BXM]!ja(d@36n^YBnNa-3_di#N>oEm4^6)+"&`Zu*`H[s]4c_gb.<lrgjqr&C7[^\uZQnd8p-eg\HAGm?,K@L5>j8ca2EP]Tft.W0W:_5G-$oibndJ7G3R+L<g0Z3V5]-%*@W[o[OHG4>`\emp&6bYc)[Mm,VEE=pH9D2?*<j"rlED'i-pAkZ(SeDQH55"at>XU`Wm\`LJZU.#<n,i0$NRWYASR[6;e7"Q6_NkccnRmiPdRc8Zh=?acZ;"2h00GEQ%KIkq%GY:%6d^H-i-D]>"Ln7&?\;(#(M-hen(3<9F:*Jnl@-^pD%(D2Cfp`AoY<)M<o.:;e:H("eWtDel)pqu=$W#=fceX=\Y@[l[K>-q[m1fhS\_YCWs%WqEiZ/3SYS\R+[f,)!4GO*\TLe-`#D-FoEJj-C[;Z!q,^^o@Lb8urgePUJHp4ft1FFC7&iV4[`@2<P:f[1hl]!+U(9tfVVE0qQ$"H4DJpbieNY2B45X9s5ec<I*A\Sp7YI7c'auY);?(QRU2s$a$l3WmsGI<#^1D_GU'!04@Hje9>CkaEtI*q"fZQ(k!:Qh^os)#'B?^:GJd>Li$6bN`+m:\k`^T+>?FhQY1*aJjMBJSa(cjABY/ji,VWCfdj^,Q.kGmI'T.Dr`2Q:6$8=5ja&],co4[9Zt[/1lrqA&'@I?m0^n5aQC:8`f4q\/bjaSISK<]WMXmesA_)j^)eup%u>\\7M@#5SR$jUJ@DHHn2f38AmuO:1j_p.pVD-.X)TXE6k6e=l#i=a2HG<DkBUFT<3XrYI7D.PgHDna6,QW%WUbMr;6Ge&S\CcHQGOGL:Q%e`L;KiX\/F?Q,N29L.Bdk=&&NtMn\LT^?gi#M)f.JHE>l+9U)[S:q'SRdoS\um=sjJ/'2o/<#P_D?T_'?3pX<GgOd(neUtdBnqK9Y35<m<WhB'mg_t7s3_00Gg8oZCUbP%:G^?,Sb*XUL;3c^R:e[.+1$2#b@"F"pTO^>/]A=P34:+i^Br-VP:=V+Y6>Mn,Pe0e;`9@IXOA6bE=XN/+f2\-5_+sq;:<*R>5j=I7g?Kj;8C5E$"M)<-,cjO8Q.,.$_t5+p;fY]F'$63.(M8&Y:sI/$$c4/cf7kL"!)3O$C8noTnuDt/*htpe%NL^Ib]j)YP?0;I3NOrh+bqK!ismB`V=jEnI1V;`H(+?7=Z!.%/V)kGC7N*ebgMQQ5c3;6eMi2Z8(mm,9$lpcG_HcPgp;)@H6GN<3M0`?44E[Dno74r=oOi+k7^a$Gf?P(.'6W"eBM2k87INdPf$*a8bYNuN+*o.PmUkBkG/CS#h,(5FSR_goPtU:dB2*^0ntGtaO9Ug>F;.\IRbTeARt796e04Tj'oB=bTE*N6cqqa'CM>H/li94D]&):rF&Q;F^b<L$daVb4^h/YP6IPNMa[+Pbhj9+a]uo\NLFMInfaGT:9j(HpkgU98TbY:MUaNNBEBY@WO@G+q>[:Hatojs:lhO88#oQmJF&8<XK!!Wl8Gu?`SC,bH)b[\O(GrdBVf#-cknqh57EkfF7O"pS*o]V,T[qW73rV]h;+%Ym\n:WIg+ZL9N8\Ymq$\8:l8L`nfY+s@R68V/mC)>=8#I5FLu&/J?L3ijq&ta-,okDCE$K1c`JF(V4%VZ/:Qf<c[2R4?@+$CJ/aa\>PDUO=X's(eX?oI='fEoUm&'\0'6l18r-'gN0r=b!Y5_)fS]BGR;\:Ll+4&1pQ]V)_k*$-h$>ppk4<ILb0i8c(37.-n4O@t!eYKP1*l_QFVnB]$+K"9B`~>endstream | |||
| endobj | |||
| 22 0 obj | |||
| << | |||
| /Filter [ /ASCII85Decode /FlateDecode ] /Length 2076 | |||
| >> | |||
| stream | |||
| Gb!Sm968iG&AJ$Cm%H5#>FXdPd@;1XcF?R^a-PJ<0/Nu,N%'o9+=m<_?%?is'IbA$3usA.%L=WZgBDc8>q$oVT-?J4'u8QA>[/ePW%a]nU.[PkhSXGYo(P`T`o\ooaiqdO6WP1*JbF<!i!YcS\tOb2.on?L$!&a@;d`6"=7L#?qf,6DeDVAg-qWCR3q16?bW`r2-SE.d6rPC1[gPd:mXfsqS,*GV/EWBV=Gi,pE(j/@bLSP4'Z7:Pr73IUBPT#KcD=iPX,'qe[lM=I+7Vu8/K27NpH`2ATh7f3:(a+8=?+]i&Z`d@&GQ+#'?SAZ3elq`BL'V(2+K57WTrH#lk(0S,PFuXm3<"fAC_Jc8J^GfbC`dj#VE/iL;R0`g*9jtgaA,DU$r))b3rlqkn-?a,^$KT9906re0uA;<fOuN]-J/D0!:1-Ea]EE/;7&@&b0<3GRL\BmdD8DF4LSog9khT*Is@iT_BiSieW,oFApe$,aJ(sPO26"_CfY=YZUUN.lKO%g)ZO9`!289b2S)+bCDuE`,c3:Lch9s"7=/S4o2\s[3'=ucVOhWg@RY[^S5NFRKM:LbL/k2HL:jB:3n#t)]f:K+W1F'(jZ:CQ@-55mD4D/MVg3KAc.AS>h5ge2XY&Qd.YK>jF.ujg!BNTBb)h5go[#Wf4G:8Fm']\]4B<[:c$o495\Np*Meo+`=!7K+PcFQ;1<fBjd/EN?cL')G9F'GnGi*:A?!X9*0;`)Y\b+#)q26)_VMg;Ui`(E+'FF'SiqjJ0AaeGW8&5P)mcjE]2gG.3NcEr1*VpCMs'Yj>`R"XW*Libf;2]*E3#.=<2,A`A??^!C:i"]=)o%p5hBu&fi*Ug;u=MkG)EX+GUcbQ`16a=\JP9LOpG*?;IVcMU".K+3K(]W\r9RZ`.XVjO1f[.EDAbB=be0jiQ:ba!U$bbS"59U.F3&Jb]#K5;M*ou.h4oR1bMPDUaaIr2t!!K90e--OISTJH/[K?.T,9`iZ2[q>Wd]oNY[;sFZ0BoVAG$R<CHRd-m[6$dSGZ(;"&+O`o(S8&QT)EmFJ3E?4h2%*(IjGf8R<!;W"'CO-G#:S4<hSY636EE%I%BQHXVS>$[U@4R58oh;b`=b;gg35g>:nV9DY8p'Z2Qhe9H@aTO*i*D"dn(HhFoUal[?^'"+eO%$`G7[V%:Z8i#m9%Z$L.g_&WhBHC@.8FGH,#PdsHWKjFbAm'7=P5m^mSj$ML1!2qZ#t)c:<$>(eR34nI0N_e\:]?HRe7*q`YFZ*"Xb.GI-GNH+L=npTe/Gs5!8"47^5F*^(3kUbTi7'Ob.qlDO*F@g3r5/Z9nf1C;Z-pYl&g6h5>DV%o0j91('-3pE7o-g8%l7Lb!Es9<t<Q3n>[J=s-i!J[CFi%pgHe\X9%]#tZi9H#^.OaXU[8A[.Q;Wl12R>L:DhjR#:Ner?9[Bg&)P<.`kh:s/63*ia:/'>GEr3C&u_3LOA3'5r+*g#D_8-&PAnM(NsijH4Cg/HVA%b/f"%/p2BY0XL9jZehjk4<Km.]Is]\_^8d7=!mIlkq(-/9t%Km<;C5A<M8ghZD9'8_\01*1MMb8,GLj:;G9YK>ZBo]^G:c"Z@1`;f#8i]c,!kk4!<c0kcA-OPM%[IB=<f)"NJd<MB@:uj)IDBLfe'PmOTHAd7(pnPG*6hc02Q<NJu^rm:c;L5*U?I.(9hM`OKfOj5TUE4C.Be,>YB2?L)BloimE=bJm8s5SD'#apgcMJG1aL"V))nD]_;#a-$Sq)lG/@kJWVCAjHBIn#,E^JqE1i'u2;t<E,>sAIVjB8F]$qA\=_U`R=A2POnC?%<?o(?F'L""Oe0MDBVT(Lq-;)ac&^\'qC2f>+B8JHoO:/#oJA@cn=>Y5O7;V>#U2Fl6a]iUUB%:D0I3h>Q`'q^X4.NNmJip<QQ:4\<m#M0$!B$5$Zmh52KbURSo2RTg*IuVYfX$JRe>$DtDOjm@q=o2_ca+$-dq`+`hf2/jGrs&q#*oG_LN+Hart"kHAkiq'9Cab5/brXYR7SDciV(6r1:[XhQJkF;7q]@PDt,HEUp=PKEn0RV&;M7,SkW7^G:2PCESKkgM6~>endstream | |||
| endobj | |||
| 23 0 obj | |||
| << | |||
| /Filter [ /ASCII85Decode /FlateDecode ] /Length 2632 | |||
| >> | |||
| stream | |||
| Gb!Sm>B?9+&q9SYkZ")X3@/0#JA?VS*9U;pA9/Affr\2LQSBC]`/'PdLhM;:Fq7Xt">];Fg=gT#QA1gA9jbVP1f3^4PCMCG^kWe4IaUL1@C?<`:^i_>J\0Ugb?=h_V?`,jjm.f'C6#,Vo7-O'#IL#4BtsjIXC8L/f!#i3`%)>,@_ENb&TY)a\:>Y5&)m9$>OZ^$rIijNU0f9'd1sj/$VK=/'*kkPofEL`@q]"'C4pA[Y"ihD!fCSn[Y=a@WF8C*"5Jg99bl>s;oJkRAbl=!EUo*LWB1=LjOib9d>JZYBCh'3)/!,G"00e"H>1)[1(+Kq:J&ZI)`19cJrYmh_95V830K(e$X[<6#N+pJ>?=o_FN#:rqSnLX&KIWbJZ]cQl^Ck=2'X?I2$e^2qCoPZGkVC(UCYRsN],,Ci0Bg%s7gtg2a?b.X('r&ZX?f(/d-jT8+,u994)aA/7`XW*qm[AjDo8q#pU$3E"gEu;9Zlo`"Ep^?GOVN;g8=f\.lkJmb!2?l\QmMcV#;@UQ@-mLbBnDiYBQ-b>4<qRLp.J7s"f1On]=:YUBQWc1g<tO2+sl*[-RW5L-`%U7ai'07p+t\^GI^PHN(XYJ#3C\'b9Gb]cq1'b$l;GHp8X-mFMakA9Gf:O)aRkV6K/o/;U-L;,t!Pc9]%l@:Wi:#"5bYqZ;;$grL/_jlr,Tt?VAL`_"hODBT)XOl.C@SN*qnk$8XBC_%/a6AMN0@mS4jeCJie(CWo/;h=2=n\[=LJ/N;)>UOd7P,.8jM!Q+R?Y!],@Qa@J2XAn+\P(#/DObWkcu<B0g(.6,sR@9&$+?=Y$dZNk_,=qG8kg/&[_FY7XcUs/ed-_ppS^8O=U%"%[TV$1qh8uG`LY0djVMg-HhK'e*C\I?n&o'5oHifkMTfP@DUs57jDejlEmIRBqHE\@=1Ou*R$jrX/=n?jUd5ec$\d>@kq_hF>EA?W>%oO`e6\Q6)tqrrr-g/j8Q(\PW8KUMkb'ts7,dQ@J8kC&7LuO=9*`^M0J(3]%i@,RiI>1)>/ZWW9JV$NU*R%G$A8=3F`QWo:OT@9sk5VaP6(@N[IG);tRoUHRl>L;h7TaAqTYSg*?11Pagq9T:qU<f>hF4UoY`D>XksiHk$0]UYCQOj"m$"$#L>XdTj'1F]Ga3Br0rg9?FG/eUi#bbmkkY.k7!q^#W:\nS;6]@Z@Xb((m.m##hMEHlk.Y5ERSqQtC-r3`*\0.WL`f1a0nNQ,p6GgiJ>j.iF(dba?Te^e<\+SWLi4jp8_JKKkT:]<fgRbYQnE)?\lk%Z&fBS?BrJZ&/`]HndiM;8#.]I9aUT*X.V?jaK/g:*RT(#FJ5;Li)\8"^JaRP:B&h0G^uM_r"pQAt4n8F=Ml*1rd/AlQ10&A-uJ$j-;1?GittQF#nQj8o0LljlbZ31BXlS?$2sSIp,cDWbSqV=4#Efeojgs,1DF==UA]k.8PiOM:i,J2%pEP+g(ZA8_AW/%Flq*TM:dV$[uMKh4\P7[$ubm,:Hq;;q43m=ul_N!YSa7=06,pU=Xg<0:C=-)Vn&'@V#E;gX2k<'[$d!W#(Du0nj0e#Oq/N827%"!_,cbs5K`^f[)at(G;ID*l3W$LX3H6i#@\Q'MH7Z,!i>,bh7Sob`Kk:(s'QB.R44H[RN<9r&Cr/r.dGhcXa_G+R_\t\@_ceo7b-D0g`o+-N#eErV#LL:<,O1rXoN*4=eZ:$JgfZ(DXe(4^odh.Zf_Khq`\X$esTIQ_cIUY%t`eiJrfHP6gq@.cBb<?*P5i8378L<Y$!QoF+S0DS9n"FJJT_D5Hu[`[-CGOj#1g(:u)'J7gORVD>$g7EQuPI"9GU+5C-O_ImWBTD@I6Qfd_)=V+hZGToimqOf*Y`ekiPi;Q_nd);<c5ndcZn;t$jC[<1jLH>=)M*C=05*IHNk"pA%o^k.h@%.U<@=`HH^6GsfQC\;O,i?eN5tf"C`AD]#CfN=J3N6"uL9qNSJ6q@;].'0YCKkgtka<J$Vp6\ZG+]&a)VVh,4I(muTBOj&1c8KK9p!Sd:P]u=S'pdPNu49HG<ET'"Q<'KQ$U.TDTE]-h/62k)8kqR9c2t/+bFCf'D@9@&S6`7"u7FHa<#??(-,<u`EKW-Mn15[@EfrDq&#!%6JF>PN=^>i=O?->:/g@D]9F#'Ia!j3j14l9l'))L-*_L%0'<VVkgVs?f!+515#S90aTo+"0@H-7C1?pn>s;^=XO6[/LR;$)S<&71/<"!L@Ki$$C"C7UGRTJ(FAK@N:FM<?3K31,JTG:j\+J4qE5_fi7GBK--kq:Z\0AG-)"$h8$,DB2P,9gkokqfEEn[n]cl`R7#&/`loR__Y$Z.li\:0(`biBb17aAt02e>EqkCeH80r-I4pb`9Rqss.a`Z,3i]5@,qnc!,;Qd=?sRf"2A<JL.%1R9fY@mO;bp9V2T<V7\KO/=>]n'OmUH2(!deb_tiqL3D@.Ym$6hVGmDRlbqiL6?(ag4/5?*Vm5-N)`lkGhg:"(iq@Z1LE&QW:tZRXXN\c<74GVaeh4t^LBOhe0ZHd8J@9@Y.Y.`hJ$h1N@\hFAo3c@en67s;:70KNlU<Art?'5`_4:n!\G'&BCZ9*Vk_$tO$&(#0&elO"NUGu_q)HTHL$;5^tHI'"/e(O~>endstream | |||
| endobj | |||
| 24 0 obj | |||
| << | |||
| /Filter [ /ASCII85Decode /FlateDecode ] /Length 2291 | |||
| >> | |||
| stream | |||
| Gatm<D0+Dj&H88.Z-DoQBSRGZpl4p`9q+_#fCmWL+a7u`HkEde-ar,=FpS-I<q7aNR,VG>J.^L@mJF6<5fK':hq\k%dhG8Q)JD0*(SDY'!Rkt+3B_XK.=Q9T%hlo3eeM-6-C+l'cX\I1[">o(^_eLe(d.[=/6Du<MS]N)6ftY,Jn;_8giJq"kKN\a4.&4IoY'2?A2;^NbA^'K2e7buNNGG7O:?c,3`/T#$!.jI[2i`cMIp%PKqF*:R.?2ufWFJLd8]WERZ1*fT#LR?AQ%lcR/4`d`?pU+T'.J_@inKVp5l':P+tW$Et_2bWR>!sjf?f<(B3CU2S`VFG)H^e6tjflPn"JL6PBjb@.5nEABVDUlY<Gr35&Hj=$?lSq'eu19!D]tQJQCl]7[fJ@XlL*'%6qqn'1h)rd&ZFrI+jTJIGtGg_JcZ0gN;=82hXKmlrHX+XAdtRgZcq1@WcG4/G;KHedpD(G(JBIR)MJpF_aXVi#VB!#SrsLpE*h^'epI(]Fg(k9*3QY0;:b@/NhP'\!6#e8FY.4g2Q@6e3fB2+o"<Nh4#X;[s6'.I$tkg)SU#4i&uEQP!7.YM6.Ug!e4?&Y<uql/o5Qf'P'KRRIpk*[f8JfHR.hQQfq;Q]-DcoI/6lqE1UrTh$W/*#U3_;3<De84^Ed'J0/)_!`f]2DF$q?2?#t5)9nfD;&f0RtbD$[N%Kd6$UkQla!VK[hAVX;P-C59Nnbe55d0"4:$!_Qm_2Cb_JGrn"e*rP/LYbnn8<Dj%?T3ZG\c#n=1gqfV;dsqC[s*:iuB<_m@ZF&tgO5\k>Pi>ojUs;j-S&g,?mR]tlk=iQJBcC`AqR:Ga"QAUXt3_SFD?+A:]aU+NU:ijU<hI@)a2G<,PPrspK7XWr:_J7>RVj63-qL_DTQDEja99NsH[9ILK?rZ&_Er'`2<eZBR/CKLN4/o"+_\>o5%"@;jhHn<n:P)3I;1[B[]:!Vd>Fki'Zo@7TiR]9g2$.eoNIDR)n-q84Mpb;R!$:U^X/"2.$\jTI!9i^*nlr.#,kR.^WJF:a.+kA>oM`#$73I,+)pm"`"&CIloN%UfYA`Q1-]>6t]P)uIgokm;eG,DMJQD<ZS=EL(mjI'8i)qb&.;j*ph\Sn7P!<t7>E-jUY^O8g/:4Eao91?)<0*EOW=<Oj<YWKG,*W5PRbb<8eX'EW]#P`oU!?2@Wp'.tEVjj%TB-Dtn^8)L':kH7e=U0CTfsCs+]Dgs2I2'41$,bn*W$4?25ODAg@%I)0Kd]VAIgm5..P8bXAQmQ@nEJU%?NTK7J&*O"F"hm&O?JN#C21L6U;jWi>XTI\^5.(8n_3TtZ*gZc_D5=:#p=`2m%TY8,lVh<2;Y)/74S`sjf\*#DHccX6l@"Rk%<jn\T%iT`(5H>PQ;p1$;(TV\fpTk]g!P`eGCAo.*X^sClJfA%]:LG&H86g%u.@Z';Oni"N-eGR[@40D">^mY`t(S1<4SSai*TuE+;m0/i(H/^;rQD#ubI+/s@$l""oKjJ-4A:^9o`Ei!!G17n4UD8RA2P.#LoLV^#F)1lI$>7+F;IH6[KsT/K6tm&--E^%Tni_[&OTI^Io!9`5bg;q%-VZ]q0Vn\A70;i*"9</BM>bC@+f*9TP7TDRc=+*bquU`f)Ic>HMYfiKX))S[fjC_f/r4EL_6Y%p+mZ"?Ws33Ej%I_ATG_G<KR!rooj2B("?!\.O90r(B]a9,G0XB:-E_EpgFk>9LfO&_%t7:fXK1f&2l61/"Q&[h\">mYM?cXfRm<K*a?Q"7U<=Qa>\*$m4hU2bhr*0+r4IjhRU?o/&T=I-Iq$/&^>mM0K2Mq,^#"[\\PNkNNN^3:iV?HBq.UT_?NUX\>FbGhNpXJK>,p?$b=,-:?@eJ0XIfC2dqpV'"]N4W^UUHNsX32Xn("\`XU4<bR_kscpm9N"qe0._Z7%PeY>nR7P4!JMB>/B1F*0]HMLPW:(>FBO,'a(8\8/%fXCXh3JqL(S"UJ8&c\7h2DgZGcn<(*ZSWF"G%q-5@^BMZ,(Ta&"ZS1m:R&&'U)@9pDia6:S'dnLO4C=i/SAkQ+NaA\[ILl1KMVHhQ_#JG"5o^2jr'TQQPfLp;^3,T&,=+:s_uL0Rp$8<&nGo[Ac5nW?oD6TTD\er79\MB9TJHA2Dil9e-`-JF>JL%SS6T4n:36IsQnkfYt2M7D1^?JV'a?J]"<r!%3[CK7-t%GkDnUUR7@gV8&CJ;$*-[..T%@\?n<h?pW5D-n\N>(%Ea2+DsErV7p,P\Z"Rm?Nao\mCsuT2]<M3V5D0pjCqRPQ(X\e59<~>endstream | |||
| endobj | |||
| 25 0 obj | |||
| << | |||
| /Filter [ /ASCII85Decode /FlateDecode ] /Length 1179 | |||
| >> | |||
| stream | |||
| Gat=*968iG&AII3llcVQ,JaB;9M_d"Vp6QI'<+.j!g/R5Rj;);P+qsP0#35g`o0TJILt5R\%CNMZ!ougLY;]!!V",:Y&>13#?DdO*q<Y2$#We-Ij_?F15_G%Xdo0N`;tVMZ[O_@X@;kHE7(G2krpV*,AYY1!=N$E16o7t^k4ZFX[EU?G$-<O_WhG.<sJ[=`-"W/730f>IhWHcR"!"":BCaE-U-+7;W?%Wnm!<]&#'&r?Kh2Ca3n(r!"F@63Ns&jR*Xo06K6QSp79jR_W$B_Z-t^eoN+32+(J-:D*sS"SQaU8T(B+T!*)cm$X1B.?4%0O+t;-Q%`B-8)8R\fhIa;Xj62^R`k74\(UDPbeEWsi!CU8GJC?hl_.Ef9I?>0Hf7;17bq"s9<Y2i:O>C^;,BS^nLZfA%C#C5j>EN!]<fkBP'.IT$D\eScGHfc^q-55R&1(:</+j<cH0C:S>UIcnaM!s,Ss<cVQ)XNg4FPp4<'Q:NQghAF'`n3rqUTG&R'(X9T$FU\9!MFIVDe[]PUP+n;!&39!5hD*XuqS>e6HLH"#.Vm1-d!-:%A/iRrUqITgp'l!rX%s82'CL<m/J<?./u]EaqaCE`XX`Z/DU3p!Lo5FhcViJ;54;J5'WhjS5bFS_hLMdp-O40h.0B>ss[sMQFA.R;L5TB7EBN([)ZlqLZ&NKMn3hRm;LZ!>,Q>5EdoB:=`P#%_Zg.l<S,H*\I%on>59Tm^oVfUm]6IOd5F^h;W%RN>KS2lc\R*8W%W&E>Lq@am4%t^g<:(RfP2$?64(?/S:Z9l='PYG%M-$Rq"%t(3l8$.a@2"!p<UMY8-sIs.1P_FE"M(5XOa+OTQlG[DN(@p0iRMqf&k%$G1nYEt1jDM.77KJWO%QWZ$HYZ?ATZo9m&XhO=-^H621lMUAAbR_sFCYk&B4!.:]jh]=kigI^3;R9d(7Z=.Zeim9SiS&O"<kYV2:Rs?$qrF!#*/q)u4]>i[8q4C)!lQbb\Gh9>DW`hU;]Wch@$=:PPjLAR`p48!uR0>1VCRk=I"s#J3a+2,beBZZ9/Qs7&L<Siq4PA^4lBb6in]&N%aMQ1EdgA#ML(bK1RcS+gT$dNbC,rKAQRToJ_VCKjeM>XC"RUCj:n"/Ofl0ZkIC(s%0a`JCZRq.e[D7XCnHObe^ON]/pCUR<Af)lp")X!LZ2~>endstream | |||
| endobj | |||
| xref | |||
| 0 26 | |||
| 0000000000 65535 f | |||
| 0000000061 00000 n | |||
| 0000000132 00000 n | |||
| 0000000239 00000 n | |||
| 0000000351 00000 n | |||
| 0000003536 00000 n | |||
| 0000003803 00000 n | |||
| 0000003918 00000 n | |||
| 0000004176 00000 n | |||
| 0000004281 00000 n | |||
| 0000004391 00000 n | |||
| 0000004587 00000 n | |||
| 0000004783 00000 n | |||
| 0000004979 00000 n | |||
| 0000005175 00000 n | |||
| 0000005371 00000 n | |||
| 0000005567 00000 n | |||
| 0000005637 00000 n | |||
| 0000005945 00000 n | |||
| 0000006047 00000 n | |||
| 0000007253 00000 n | |||
| 0000010334 00000 n | |||
| 0000012885 00000 n | |||
| 0000015053 00000 n | |||
| 0000017777 00000 n | |||
| 0000020160 00000 n | |||
| trailer | |||
| << | |||
| /ID | |||
| [<93ff8ecba1600bc59dfd0d3f9189f269><93ff8ecba1600bc59dfd0d3f9189f269>] | |||
| % ReportLab generated PDF document -- digest (opensource) | |||
| /Info 17 0 R | |||
| /Root 16 0 R | |||
| /Size 26 | |||
| >> | |||
| startxref | |||
| 21431 | |||
| %%EOF | |||
Powered by TurnKey Linux.