From 31194348803fea928ad74e0c8f7e52c2aa2ebaea Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Tue, 13 Oct 2026 14:57:03 +0000 Subject: [PATCH 01/40] Document the 23 undocumented public fns in pdf.clj Public coverage was 59/82, and the gap was almost exactly the surface shared with spellbook.clj and routes.clj: the coordinate converters, the text and box drawers, the abbreviators, the image loaders, print-spells/print-backs. Facts the docstrings now carry, each read off the code or run: - in-to-sz and inches-to-units are the same function, (float (* 72 inches)), declared 900 lines apart. Marked, not deduped. - Two opposite y conventions. Images go through in-to-coord-y and take y from the page top; text multiplies by 72 and takes it from the bottom, so card code flips by hand at every text call. in-to-coord-y also hardcodes 11in. - draw-grid sizing bug, noted at both call sites: print-backs and print-spells take box-width/box-height, size the cells and text boxes with them, then pass literal 2.5 3.5 to draw-grid. Latent, since every caller passes 2.5/3.5, but any other size draws the gridlines in the wrong places. print-items threads its arguments through correctly. - max-len returns nil on nil rather than throwing; abbreviate-times and abbreviate-range do throw. Probed in a REPL, not assumed. Also states the API boundary, which nothing did before: of 82 public fns and 45 public defs, 33 names are referenced outside this file - 23 by routes.clj, 9 by spellbook.clj, report-image-egress! by system.clj. The rest are public by defn default, not by design. No behaviour change. lein test 704/5294 green, lein lint 0/0. --- src/clj/orcpub/pdf.clj | 171 +++++++++++++++++++++++++++++++++++------ 1 file changed, 148 insertions(+), 23 deletions(-) diff --git a/src/clj/orcpub/pdf.clj b/src/clj/orcpub/pdf.clj index d6093bd69..0e42b1919 100644 --- a/src/clj/orcpub/pdf.clj +++ b/src/clj/orcpub/pdf.clj @@ -42,6 +42,18 @@ (java.awt.image BufferedImage) (java.net URL))) +;; THE ACTUAL API: 82 public fns, 45 public defs; 33 names referenced from outside this +;; file -- 23 by routes.clj (export entry points, spell-page and image helpers), 9 by +;; spellbook.clj (split-lines, string-width, draw-svg-icon!, normalize-text, svg-path-ops, +;; site-stamp, the three abbreviators), and report-image-egress! by system.clj. + +;; The rest are public by `defn` default, not by design. dev/ scripts reach deeper, but +;; that is tooling, not a contract to preserve. + +;; UNITS: this file is INCHES and converts at the drawing call; spellbook.clj is POINTS. +;; Images take y from the page TOP (via in-to-coord-y), text from the BOTTOM -- card +;; code flips by hand, `(- 11.0 y 0.08)`, at every text call. + ;; Pageless widgets came with the templates; dev/prepare_templates.clj has removed them ;; from resources/. Only add-missing-spell-pages! prunes at export time, before it ;; generates pages, in case it gets an unbaked template. widget-box ignores them. @@ -1091,16 +1103,34 @@ [doc page] (PDPageContentStream. doc page PDPageContentStream$AppendMode/APPEND true)) -(defn in-to-sz [inches] +(defn in-to-sz + "Inches to PDF points (72 per inch). Use for SIZES -- widths, heights, font + offsets -- where no page origin is involved. `inches-to-units` is the same + function under a second name; prefer this one." + [inches] (float (* 72 inches))) -(defn in-to-coord-x [inches] +(defn in-to-coord-x + "Inches from the page LEFT edge to a PDF x coordinate. Just `in-to-sz`: x needs no + flip because both spaces run left to right. It exists so that call sites can name + both axes the same way." + [inches] (in-to-sz inches)) -(defn in-to-coord-y [inches] +(defn in-to-coord-y + "Inches from the page TOP to a PDF y coordinate, which measures from the bottom. + Hardcodes an 11-inch page: wrong for any other size, and the only reason the + point-based spellbook code can reuse `draw-svg-icon!` is that 792pt is exactly + 11in. Images go through here and so take `y` from the top; the text functions + multiply by 72 directly and take it from the bottom." + [inches] (in-to-sz (- 11 inches))) -(defn scale [[r-h r-w] [i-h i-w]] +(defn scale + "Largest [height width] with the image's aspect ratio that fits the rectangle + [r-h r-w]. One dimension always matches the rectangle exactly; the other is + smaller. Units are whatever the caller used, so long as both pairs agree." + [[r-h r-w] [i-h i-w]] (let [height-to-width (/ i-h i-w) rect-height-to-width (/ r-h r-w) height-ratio (/ r-h i-h)] @@ -1108,7 +1138,12 @@ [r-h (* r-h (/ i-w i-h))] [(* r-w (/ i-h i-w)) r-w]))) -(defn draw-imagex [c-stream img x y width height] +(defn draw-imagex + "Draws an already-embedded PDImageXObject into the box at [`x` `y`] sized + `width` x `height`, all in INCHES, with `y` measured from the page TOP. The + image keeps its aspect ratio (see `scale`) and is centred in whichever + dimension it falls short of." + [c-stream img x y width height] (let [[scaled-height scaled-width] (scale [height width] [(.getHeight img) (.getWidth img)])] (.drawImage c-stream @@ -1442,7 +1477,13 @@ {:error :image-too-large-dimensions :url url}))) data)) -(defn draw-non-jpg [doc page url x y width height] +(defn draw-non-jpg + "Fetches a non-JPEG image from `url` and draws it, re-encoded losslessly (PNG and + anything else ImageIO reads). Box arguments are `draw-imagex`'s. Opens its own + content stream, so it cannot interleave with other drawing on the page. THROWS + ex-info on failure -- `:image-load-timeout`, `:unknown-host`, + `:invalid-image-format`, `:image-load-failed`; `draw-image!` is the quiet path." + [doc page url x y width height] (try (with-open [c-stream (content-stream doc page)] (let [buff-image (ImageIO/read (java.io.ByteArrayInputStream. @@ -1469,7 +1510,11 @@ :url url} e))))) -(defn draw-jpg [doc page url x y width height] +(defn draw-jpg + "`draw-non-jpg` for JPEGs: embeds the fetched bytes directly rather than + re-encoding, so the file stays small and the image lossless-to-source. + Same box arguments, same throwing contract (`:jpeg-load-failed`)." + [doc page url x y width height] (try (with-open [c-stream (content-stream doc page) image-stream (java.io.ByteArrayInputStream. (safe-image-bytes url))] @@ -1673,7 +1718,12 @@ (println "pdf: supplied image bytes rejected -" (.getMessage e)) nil))) -(defn draw-image! [doc page url x y width height] +(defn draw-image! + "Draws the image at `url` into the box at [`x` `y`] sized `width` x `height` in + inches, `y` from the page TOP. Picks `draw-jpg` or `draw-non-jpg` by extension. + SWALLOWS every failure: logs and returns nil, so one unreachable portrait URL + cannot fail an export. Callers get no signal that nothing was drawn." + [doc page url x y width height] (let [lower-case-url (s/lower-case url) jpg? (or (s/ends-with? lower-case-url "jpg") (s/ends-with? lower-case-url "jpeg")) @@ -1691,10 +1741,20 @@ (clojure.stacktrace/print-stack-trace e) nil)))) -(defn get-page [doc index] +(defn get-page + "The document's `index`th page, zero-based. Thin wrapper over + PDDocument.getPage so callers need not import PDFBox classes." + [doc index] (.getPage doc index)) -(defn split-lines [text ^PDFont font font-size width] +(defn split-lines + "Greedy word wrap of `text` to `width` INCHES at `font-size` (see + `string-width`, which also works in inches). Splits on whitespace, so + existing newlines are not honoured. A word wider than the box gets its own + over-long line rather than being hyphenated or dropped. + + Shared with spellbook.clj." + [text ^PDFont font font-size width] (let [words (s/split text #"\s")] (loop [lines [] current-line nil @@ -1936,7 +1996,13 @@ (recur (or tail "") (inc n))))))) trimmed)) -(defn draw-lines-to-box [cs lines font font-size x y height] +(defn draw-lines-to-box + "Draws pre-wrapped `lines` into a box `height` inches tall topped at [`x` `y`], + inches with `y` from the page BOTTOM (see `in-to-coord-y`). Leading is 1.1x the + font size. RETURNS the lines that did not fit, which is how card overflow reaches + the backs; empty means all fit. Nothing is truncated horizontally -- that is + `split-lines`' job." + [cs lines font font-size x y height] (let [leading (* font-size 1.1) max-lines (dec (/ (* 72 height) leading)) units-x (* 72 x) @@ -1952,7 +2018,11 @@ (.endText cs) (vec (drop max-lines lines)))) -(defn draw-text-to-box [cs text font font-size x y width height] +(defn draw-text-to-box + "`split-lines` then `draw-lines-to-box`: wraps `text` to `width` and fills the + box, returning the lines that did not fit. Inches throughout, `y` from the + page BOTTOM." + [cs text font font-size x y width height] (let [lines (split-lines text font font-size width)] (draw-lines-to-box cs lines font font-size x y height))) @@ -1961,7 +2031,12 @@ [cs r g b] (.setNonStrokingColor cs (float r) (float g) (float b))) -(defn draw-text [cs text font font-size x y & [color]] +(defn draw-text + "One line of text with its baseline at [`x` `y`], in inches with `y` from the + page BOTTOM. No wrapping and no box -- it runs off the page if too long. + `color` is an [r g b] of 0.0-1.0 floats and, when given, is reset to black + afterwards. Keywords are rendered via `common/safe-name`; nil `text` is a no-op." + [cs text font font-size x y & [color]] (when text (let [units-x (* 72 x) units-y (* 72 y)] @@ -1994,10 +2069,16 @@ (.lineTo cs (float end-x) (float end-y)) (.stroke cs)) -(defn inches-to-units [inches] +(defn inches-to-units + "DUPLICATE of `in-to-sz`, declared 900 lines later and identical. Kept because + `draw-line-in` and the grid code call it; new code should use `in-to-sz`." + [inches] (float (* inches 72))) -(defn draw-line-in [cs & coords] +(defn draw-line-in + "`draw-line` with every coordinate given in inches instead of points. Both + axes measure from the page BOTTOM-left; there is no flip here." + [cs & coords] (apply draw-line cs (map inches-to-units coords))) (defn draw-grid @@ -2031,13 +2112,23 @@ y))) (.setStrokingColor cs (float 0) (float 0) (float 0)))) -(defn spell-school-level [{:keys [level school]} class-nm] +(defn spell-school-level + "The subtitle line of a spell card: \"Wizard Cantrip Evocation\" at level 0, + \"Wizard Level 3 Evocation\" otherwise. A missing school reads \"Unknown\" and a + missing level \"?\" rather than throwing, since homebrew spells reach here + unvalidated." + [{:keys [level school]} class-nm] (let [school-str (if school (s/capitalize school) "Unknown")] (if (and level (zero? level)) (str class-nm " Cantrip " school-str) (str class-nm " Level " (or level "?") " " school-str)))) -(defn draw-spell-field [cs img title value x y bw? bw-faded?] +(defn draw-spell-field + "One icon-and-value field on a spell card (casting time, range, duration, + components): the `title` icon at [`x` `y`] with `value` printed over it. + Inches, `y` from the page TOP. `img` is the document's memoized image loader, and + both printer-friendly modes are handled here (see the note below)." + [cs img title value x y bw? bw-faded?] ;; The label overprints the icon; this is the one choke point for all four ;; per-spell icons. Colour: icon-red icon, black text. B&W solid: black icon, ;; WHITE-HALO text. B&W faded: black icon at 40%, black text. One SVG serves all. @@ -2052,17 +2143,28 @@ (draw-text cs value HELVETICA_BOLD_OBLIQUE 8 x (- y 0.07)) (.setNonStrokingColor cs (float 0) (float 0) (float 0)))))) -(defn abbreviate-times [time] +(defn abbreviate-times + "\"minute\" -> \"min\", \"hour\" -> \"hr\", anywhere in the string. Case-sensitive, so + a capitalized \"Hour\" passes through untouched. Throws on nil." + [time] (-> time (s/replace #"minute" "min") (s/replace #"hour" "hr"))) -(defn max-len [s len] +(defn max-len + "`s` truncated to at most `len` characters, with no ellipsis. nil returns nil." + [s len] (if (<= (count s) len) s (subs s 0 len))) -(defn abbreviate-duration [duration] +(defn abbreviate-duration + "Spell duration shortened to fit a card field: \"Concentration, up to 1 hour\" + -> \"Conc, 1 hr\", \"Instantaneous\" -> \"Inst\", \"round\" -> \"Rnd\", then hard + truncated at 16 characters. nil passes through. + + Shared with spellbook.clj." + [duration] (when duration (-> duration (s/replace #"Concentration,? up to " "Conc, ") @@ -2081,7 +2183,13 @@ (s/replace #"reaction" "React.") (s/replace #"\baction" "Act."))) -(defn abbreviate-range [range] +(defn abbreviate-range + "Spell range shortened to fit a card field: anything starting \"Self\" collapses + to \"Self\" (dropping the shape, so \"Self (15-foot cone)\" loses the cone), and + \"feet\" -> \"ft\". Throws on nil. + + Shared with spellbook.clj." + [range] (-> range (s/replace #"Self.*" "Self") (s/replace #"feet" "ft"))) @@ -2521,7 +2629,13 @@ true true)] (draw-text cs site-stamp HELVETICA site-stamp-size x y [0.45 0.45 0.45])))) -(defn print-backs [cs fonts img box-width box-height remaining-lines-vec page-number logo-img] +(defn print-backs + "Draws one page of spell card BACKS, mirroring the fronts for duplex printing. + `remaining-lines-vec` is indexed by the card position `print-spells` used, each + entry `{:remaining-lines :spell-name}` from that call; a card with no overflow + gets only its name and the site stamp. `logo-img` opts a card into the logo. + Inches. See the `draw-grid` call below for a latent sizing bug." + [cs fonts img box-width box-height remaining-lines-vec page-number logo-img] ;; `img` is the memoized per-document image loader; `logo?` opts each card back ;; into showing the card logo (matching the fronts) for double-sided printing. ;; When logo? is false NO images are loaded here — the old code decoded+embedded @@ -2533,6 +2647,10 @@ margin-x (/ remaining-width 2) remaining-height (- 11.0 total-height) margin-y (/ remaining-height 2)] + ;; BUG: box-width/box-height size the cells and the text boxes, but the gridlines + ;; come from these literals. Latent -- every caller passes 2.5/3.5 -- but any other + ;; box size draws the lines in the wrong places. Same in print-spells; print-items + ;; threads its arguments through correctly. (draw-grid cs 2.5 3.5) (draw-text cs (str "Page " (inc page-number) " (reverse)") @@ -2591,7 +2709,13 @@ ;; the same strip above. (draw-site-stamp! cs fonts x y box-width box-height)))))) -(defn print-spells [cs document fonts img box-width box-height spells page-number print-spell-card-dc-mod? bw? bw-faded?] +(defn print-spells + "Draws one page of spell card FRONTS and returns what did not fit, for + `print-backs`. `spells` is a seq of `{:class-nm :dc :attack-bonus :spell}`; cards + fill right to left within a row so a duplex flip lines the backs up. + `print-spell-card-dc-mod?` prints save DC and attack bonus; `bw?`/`bw-faded?` + select the printer-friendly renderings. Inches." + [cs document fonts img box-width box-height spells page-number print-spell-card-dc-mod? bw? bw-faded?] (let [num-boxes-x (int (/ 8.5 box-width)) num-boxes-y (int (/ 11.0 box-height)) total-width (* num-boxes-x box-width) @@ -2600,6 +2724,7 @@ margin-x (/ remaining-width 2) remaining-height (- 11.0 total-height) margin-y (/ remaining-height 2)] + ;; BUG: as in print-backs -- the gridlines ignore box-width/box-height. (draw-grid cs 2.5 3.5) (draw-text cs (str "Page " (inc page-number)) From 1d687ac177c81219a174bb5e0554f2034207737e Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Tue, 13 Oct 2026 15:01:45 +0000 Subject: [PATCH 02/40] Correct the external-call count in the pdf.clj API note: 31, not 33 The previous commit said 33 names are referenced from outside this file, counting pdf/safe-image-bytes (routes.clj:1181) and pdf/safe-image-url? (routes.clj:1536). Both appear in comments only; routes.clj calls 21, not 23. The two are real API, but their external consumers are the tests, which is a different claim and now said separately. A grep for pdf/NAME cannot tell a call from a mention. pdf-namespace-family.md's caller map had this right; I did not check it against my own count before writing. --- src/clj/orcpub/pdf.clj | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/clj/orcpub/pdf.clj b/src/clj/orcpub/pdf.clj index 0e42b1919..7a48e0d11 100644 --- a/src/clj/orcpub/pdf.clj +++ b/src/clj/orcpub/pdf.clj @@ -42,10 +42,13 @@ (java.awt.image BufferedImage) (java.net URL))) -;; THE ACTUAL API: 82 public fns, 45 public defs; 33 names referenced from outside this -;; file -- 23 by routes.clj (export entry points, spell-page and image helpers), 9 by -;; spellbook.clj (split-lines, string-width, draw-svg-icon!, normalize-text, svg-path-ops, -;; site-stamp, the three abbreviators), and report-image-egress! by system.clj. +;; THE ACTUAL API: 82 public fns, 45 public defs; 31 called from outside this file -- 21 by +;; routes.clj (export entry points, spell-page and image helpers), 9 by spellbook.clj +;; (split-lines, string-width, draw-svg-icon!, normalize-text, svg-path-ops, site-stamp, the +;; three abbreviators), and report-image-egress! by system.clj. + +;; safe-image-url? and safe-image-bytes are named in routes.clj comments only; their real +;; external consumers are the tests. ;; The rest are public by `defn` default, not by design. dev/ scripts reach deeper, but ;; that is tooling, not a contract to preserve. From 628b072bdeb85b587f8eb6666996c3e8903860fa Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Tue, 13 Oct 2026 18:05:55 +0000 Subject: [PATCH 03/40] Pin card geometry before touching the card shape layer The cards' positions were tuned by hand over several rounds. Nothing in the suite would have noticed them moving: card_export_test asserts structure (one set of fonts, a site stamp on every back), pdf_test asserts fields and overflow. No test read a coordinate. This parses each card page's content stream and pins every drawing operator with its operands: 4,083 operators across 8 pages - spell fronts and backs, item fronts and backs - through routes/add-spell-cards! and add-magic-item-cards!, reloaded from the saved bytes. Deterministic within a JVM and across runs. Proven to fail, not just to pass: - card-layout :rail 0.245 -> 0.250, five thousandths of an inch: fails, naming page 4 and op 78, "416.16 756.36 m" -> "416.16 756.00 m". - a spell card's material-component line moved 0.01in: fails, naming page 0 and op 75, "404.64 734.40 Td" -> "404.64 733.68 Td". Two things that would have made it useless, both found by running it: - A destructuring binding named `is` shadows clojure.test/is, so the assertion became a vector lookup and threw. It read as "0 failures, 1 error", which is easy to mistake for the perturbation being caught. Named `now`, with a comment. - COSString.getString() returns raw 2-byte CIDs for card text, because the embedded Vollkorn is a Type0 font. That put control bytes in the baseline and git called it binary, which destroys the diff the file is for. Non-ASCII now prints as hex; the file is 4,085 ASCII lines. Re-seed a DELIBERATE card change with CARD_GEOMETRY=seed, then read the diff. Not yet covered, and needed before the shape layer moves: draw-flourish! is a 3 x 5 matrix (card-flourishes x rarity-rank) and these pages exercise one family; bw?/bw-faded? are separate paths; charge tracks, attunement badges and the name shrink are unpinned. lein test 706/5308 green, lein lint 0/0. --- test/card-geometry-baseline.edn | 4085 ++++++++++++++++++++++++ test/clj/orcpub/card_geometry_test.clj | 135 + 2 files changed, 4220 insertions(+) create mode 100644 test/card-geometry-baseline.edn create mode 100644 test/clj/orcpub/card_geometry_test.clj diff --git a/test/card-geometry-baseline.edn b/test/card-geometry-baseline.edn new file mode 100644 index 000000000..1bf7a068a --- /dev/null +++ b/test/card-geometry-baseline.edn @@ -0,0 +1,4085 @@ +;; Written by orcpub.card-geometry-test. Drawing operators per card page. +;; A diff here is a card moving. Read it before committing it. +[["0.88 0.88 0.88 RG" + "36.00 18.00 m" + "36.00 774.00 l" + "S" + "216.00 18.00 m" + "216.00 774.00 l" + "S" + "396.00 18.00 m" + "396.00 774.00 l" + "S" + "576.00 18.00 m" + "576.00 774.00 l" + "S" + "36.00 18.00 m" + "576.00 18.00 l" + "S" + "36.00 270.00 m" + "576.00 270.00 l" + "S" + "36.00 522.00 m" + "576.00 522.00 l" + "S" + "36.00 774.00 m" + "576.00 774.00 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 781.20 Td" + "#hex:00a9014d01930178000303fa Tj" + "ET" + "BT" + "/F2 8.00 Tf" + "404.64 696.24 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de0003016b018d01be01840118018f01d6000301180003018d014301c901c90118015e0143000301f6016b01d60166016b018f00030118018f0003019b0133017d0143013401d60003016b018f Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f015e014305fc000301180003018d014301c901c90118015e0143000301d60166011801d60003016b01c9000301de01d601d6014301c10143013b000301f601660143018f00030118000301d601c1016b015e015e014301c1 Tj" + "0.00 -8.80 Td" + "#hex:0134019b018f013b016b01d6016b019b018f0003016b01c90003018d014301d60608000300200166019b019b01c9014300030118018f0003019b0133017d0143013401d6000301d60166011801d6000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:01340118018f000301c90143014300030118018f013b000301d60166011801d60003016b01c9018f060c01d6000301330143016b018f015e000301f6019b01c1018f0003019b01c100030134011801c101c1016b0143013b0003013301fc Tj" + "0.00 -8.80 Td" + "#hex:0118018f019b01d60166014301c10003013401c10143011801d601de01c101430608000300c101660143018f000301c901be014301180181000301d6016601430003018d014301c901c90118015e014305fc Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b013401660003018d01de01c901d60003013301430003056b056e000301f6019b01c1013b01c90003019b01c100030184014301c901c905fc000301d60166019b01de015e01660003016b01d6000301340118018f Tj" + "0.00 -8.80 Td" + "#hex:013301430003013b01430184016b01f5014301c10143013b0003019b01f5014301c10003011801c900030184019b018f015e0003011801c90003056a05690003018d016b018f01de01d6014301c90608 Tj" + "0.00 -8.80 Td" + "#hex:004a016b018f01180184018401fc05fc0003013b014301d6014301c1018d016b018f0143000301d60166014300030134016b01c1013401de018d01c901d60118018f01340143000301d60166011801d6000301f6016b01840184 Tj" + "0.00 -8.80 Td" + "#hex:01d601c1016b015e015e014301c1000301d601660143000301c901be014301840184000301d6019b0003013b01430184016b01f5014301c1000301fc019b01de01c10003018d014301c901c90118015e01430608 Tj" + "0.00 -8.80 Td" + "#hex:00e001660143018f000301d60166011801d600030134016b01c1013401de018d01c901d60118018f013401430003019b0134013401de01c101c905fc000301180003018d0118015e016b013401180184 Tj" + "0.00 -8.80 Td" + "#hex:018d019b01de01d601660003011801be01be0143011801c101c90003019b018f000301d6016601430003019b0133017d0143013401d600030118018f013b000301c101430134016b01d6014301c9000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:018d014301c901c90118015e01430003016b018f000301fc019b01de01c1000301f5019b016b0134014300030118018f013b0003011801d6000301d601660143000301c90118018d0143000301f5019b018401de018d0143 Tj" + "0.00 -8.80 Td" + "#hex:01fc019b01de000301c901be019b01810143060800030058015d000301d6016601430003019b0133017d0143013401d6000301fc019b01de000301340166019b01c9014300030166011801c9000301180003018d019b01de01d60166 Tj" + "0.00 -8.80 Td" + "#hex:019b01c1000301c9019b018d014301d60166016b018f015e000301d60166011801d600030184019b019b018101c900030184016b01810143000301180003018d019b01de01d6016600030628015d019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:014301fb0118018d01be0184014305fc000301d6016601430003018d019b01de01d601660003019b015d00030118000301c901d6011801d601de0143062905fc000301d6016601430003018d0118015e016b013401180184 Tj" + "0.00 -8.80 Td" + "#hex:018d019b01de01d601660003011801be01be0143011801c101c9000301d60166014301c10143000301c9019b000301d60166011801d6000301d601660143000301f6019b01c1013b01c90003011801be01be0143011801c1 Tj" + "0.00 -8.80 Td" + "#hex:01d6019b00030134019b018d01430003015d01c1019b018d000301d6016601430003019b0133017d0143013401d6060c01c90003018d019b01de01d601660608000300e001660143018f000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:0134011801c901d6000301d60166016b01c9000301c901be01430184018405fc000301fc019b01de000301340118018f00030166011801f50143000301d601660143000301c901be01430184018400030143018f013b00030118025e014301c1 Tj" + "0.00 -8.80 Td" + "#hex:016b01d60003013b01430184016b01f5014301c101c90003016b01d601c90003018d014301c901c90118015e014305fc0003019b01c10003016b01d6000301340118018f000301c10143018d0118016b018f00030118018f013b Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "404.64 734.40 Td" + "0.00 -8.80 Td" + "#hex:0004000301fe01c2014d01b901b90003016801a0020b000301d001920003019b01d001c401780231016901d001c201680003014d01c40170000301b2014d0170017800030170021301fe020b0003022b01d001f6020b019b0003014d020b000301b90178014d01fe020b Tj" + "0.00 -8.80 Td" + "#hex:03fa03f90003019301f304760003022b019b01a00169019b0003020b019b0178000301fe01f3017801b901b90003016901d001c401fe021301c2017801fe Tj" + "ET" + "q" + "13.20 0.00 0.00 18.00 562.20 754.56 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 10.00 Tf" + "404.64 774.00 Td" + "0.00 -11.00 Td" + "#hex:00780118015e016b013400030078019b01de01d60166 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "467.46 774.00 Td" + "0.00 -11.00 Td" + "#hex:000304a201f601a0020b0213014d01b904a3 Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "404.64 760.32 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303fb0003005801b901b9021301fe01a001d001c4 Tj" + "ET" + "q" + "/gs1 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 404.64 732.24 cm" + "/Form2 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "404.64 736.56 Td" + "\"1 min\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs2 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 440.64 732.24 cm" + "/Form3 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "440.64 736.56 Td" + "\"30 ft\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs3 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 476.64 732.24 cm" + "/Form4 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "476.64 736.56 Td" + "\"V,S,M\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs4 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 512.64 732.24 cm" + "/Form5 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "512.64 736.56 Td" + "\"Until dispelled\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "0.00 0.00 0.00 rg" + "0.02 0.00 0.00 0.02 561.60 525.60 cm" + "/Form6 Do" + "Q" + "BT" + "/F2 8.00 Tf" + "224.64 696.24 Td" + "0.00 -8.80 Td" + "#hex:001f01fc00030134011801c901d6016b018f015e0003015e0143018d0640016b018f01840118016b013b000301c901d6016b0134018101c905fc000301c1019b01840184016b018f015e0003013b01c10118015e019b018f Tj" + "0.00 -8.80 Td" + "#hex:0133019b018f014301c905fc00030184011801fc016b018f015e0003019b01de01d60003019b01c1018f011801d6014300030134011801c1013b01c905fc0003019b01c100030143018d01be0184019b01fc016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:01c9019b018d01430003019b01d60166014301c10003013b016b01f5016b018f016b018f015e000301d6019b019b018405fc000301fc019b01de000301c1014301340143016b01f5014300030118018f0003019b018d0143018f Tj" + "0.00 -8.80 Td" + "#hex:015d01c1019b018d00030118018f0003019b01d60166014301c101f6019b01c10184013b018401fc00030143018f01d6016b01d601fc000301180133019b01de01d6000301d601660143000301c1014301c901de018401d601c9 Tj" + "0.00 -8.80 Td" + "#hex:019b015d00030118000301c901be01430134016b025b013400030134019b01de01c101c901430003019b015d00030118013401d6016b019b018f000301d60166011801d6000301fc019b01de000301be01840118018f000301d6019b Tj" + "0.00 -8.80 Td" + "#hex:01d6011801810143000301f6016b01d60166016b018f000301d6016601430003018f014301fb01d60003056c05690003018d016b018f01de01d6014301c90608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c90003015d01c1019b018d000301d6016601430003015d019b01840184019b01f6016b018f015e000301be019b01c901c9016b0133018401430003019b018d0143018f01c905fb000305f8 Tj" + "0.00 -8.80 Td" + "#hex:00e001430118018405fc0003015d019b01c10003015e019b019b013b000301c1014301c901de018401d601c9000305f8000300e0019b014305fc0003015d019b01c1000301330118013b000301c1014301c901de018401d601c9000305f8 Tj" + "0.00 -8.80 Td" + "#hex:00e001430118018400030118018f013b000301f6019b014305fc0003015d019b01c100030133019b01d601660003015e019b019b013b00030118018f013b000301330118013b000301c1014301c901de018401d601c9000305f8 Tj" + "0.00 -8.80 Td" + "#hex:007a019b01d60166016b018f015e05fc0003015d019b01c1000301c1014301c901de018401d601c9000301d60166011801d60003011801c10143018f060c01d60003014301c901be01430134016b01180184018401fc0003015e019b019b013b Tj" + "0.00 -8.80 Td" + "#hex:019b01c1000301330118013b000300c101660143000301c901be0143018401840003013b019b014301c9018f060c01d6000301d60118018101430003016b018f01d6019b0003011801340134019b01de018f01d600030118018f01fc Tj" + "0.00 -8.80 Td" + "#hex:01be019b01c901c9016b01330184014300030134016b01c1013401de018d01c901d60118018f0134014301c9000301d60166011801d60003018d016b015e016601d60003013401660118018f015e0143000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:019b01de01d60134019b018d014305fc000301c901de013401660003011801c9000301d60166014300030134011801c901d6016b018f015e0003019b015d00030118013b013b016b01d6016b019b018f01180184 Tj" + "0.00 -8.80 Td" + "#hex:01c901be01430184018401c90003019b01c1000301d60166014300030184019b01c901c90003019b01c10003015e0118016b018f0003019b015d0003011800030134019b018d01be0118018f016b019b018f060800030058015d000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:0134011801c901d6000301d601660143000301c901be014301840184000301d601f6019b0003019b01c10003018d019b01c10143000301d6016b018d014301c9000301330143015d019b01c10143 Tj" + "0.00 -8.80 Td" + "#hex:0134019b018d01be0184014301d6016b018f015e000301fc019b01de01c10003018f014301fb01d600030184019b018f015e000301c1014301c901d605fc000301d60166014301c101430003016b01c900030118 Tj" + "0.00 -8.80 Td" + "#hex:013401de018d01de0184011801d6016b01f501430003056b056e000301be014301c101340143018f01d60003013401660118018f013401430003015d019b01c10003014301180134016600030134011801c901d6016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:0118025e014301c1000301d6016601430003025b01c101c901d6000301d60166011801d6000301fc019b01de0003015e014301d600030118000301c10118018f013b019b018d000301c101430118013b016b018f015e0608 Tj" + "0.00 -8.80 Td" + "#hex:00c1016601430003004b00780003018d01180181014301c9000301d60166016b01c9000301c1019b018401840003016b018f000301c90143013401c1014301d60608 Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "224.64 734.40 Td" + "0.00 -8.80 Td" + "#hex:00b401f30178016901a0014d01b901b90231000301c2014d01f601b601780170000301fe020b01a0016901b601fe04760003016801d001c4017801fe0476000301d001f6000301fe01a001c201a001b9014d01f60003020b01d001b6017801c401fe Tj" + "0.00 -8.80 Td" + "#hex:022b01d001f6020b019b0003014d020b000301b90178014d01fe020b000303fb03fe0003019301f3 Tj" + "ET" + "q" + "13.20 0.00 0.00 18.00 382.20 754.56 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 10.00 Tf" + "224.64 774.00 Td" + "0.00 -11.00 Td" + "#hex:000401de015e01de01c101fc Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "259.93 774.00 Td" + "0.00 -11.00 Td" + "#hex:000304a201f601a0020b0213014d01b904a3 Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "224.64 760.32 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303fb0003002701a0022a01a001c4014d020b01a001d001c4 Tj" + "ET" + "q" + "/gs5 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 224.64 732.24 cm" + "/Form2 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "224.64 736.56 Td" + "\"1 min\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs6 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 260.64 732.24 cm" + "/Form3 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "260.64 736.56 Td" + "\"Self\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs7 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 296.64 732.24 cm" + "/Form4 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "296.64 736.56 Td" + "\"V,S,M\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs8 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 332.64 732.24 cm" + "/Form5 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "332.64 736.56 Td" + "\"Inst\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "BT" + "/F2 8.00 Tf" + "44.64 696.24 Td" + "0.00 -8.80 Td" + "#hex:0004000301f6011801f501430003019b015d000301d6016601de018f013b014301c1019b01de01c90003015d019b01c101340143000301c901f60143014301be01c90003019b01de01d60003015d01c1019b018d Tj" + "0.00 -8.80 Td" + "#hex:01fc019b01de0608000300310118013401660003013401c10143011801d601de01c101430003016b018f000301180003056a056e0640015d019b019b01d60003013401de01330143 Tj" + "0.00 -8.80 Td" + "#hex:019b01c1016b015e016b018f011801d6016b018f015e0003015d01c1019b018d000301fc019b01de0003018d01de01c901d60003018d01180181014300030118 Tj" + "0.00 -8.80 Td" + "#hex:0020019b018f01c901d6016b01d601de01d6016b019b018f000301c9011801f5016b018f015e000301d6016601c1019b01f6060800030086018f000301180003015d0118016b01840143013b000301c9011801f5014305fc00030118 Tj" + "0.00 -8.80 Td" + "#hex:013401c10143011801d601de01c10143000301d601180181014301c90003056b013b0571000301d6016601de018f013b014301c10003013b0118018d0118015e014300030118018f013b0003016b01c9 Tj" + "0.00 -8.80 Td" + "#hex:01be01de01c901660143013b0003056a05690003015d0143014301d60003011801f6011801fc0003015d01c1019b018d000301fc019b01de060800030086018f00030118000301c901de01340134014301c901c9015d01de0184 Tj" + "0.00 -8.80 Td" + "#hex:01c9011801f5014305fc000301d6016601430003013401c10143011801d601de01c10143000301d601180181014301c90003016601180184015d0003011801c90003018d01de013401660003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:0118018f013b0003016b01c9018f060c01d6000301be01de01c901660143013b060800030058018f00030118013b013b016b01d6016b019b018f05fc000301de018f01c90143013401de01c10143013b Tj" + "0.00 -8.80 Td" + "#hex:019b0133017d0143013401d601c9000301d60166011801d60003011801c1014300030134019b018d01be0184014301d60143018401fc000301f6016b01d60166016b018f000301d6016601430003011801c1014301180003019b015d Tj" + "0.00 -8.80 Td" + "#hex:014302480143013401d60003011801c101430003011801de01d6019b018d011801d6016b013401180184018401fc000301be01de01c901660143013b0003056a05690003015d0143014301d60003011801f6011801fc Tj" + "0.00 -8.80 Td" + "#hex:015d01c1019b018d000301fc019b01de0003013301fc000301d601660143000301c901be014301840184060c01c90003014302480143013401d605fc00030118018f013b000301d601660143000301c901be014301840184 Tj" + "0.00 -8.80 Td" + "#hex:0143018d016b01d601c900030118000301d6016601de018f013b014301c1019b01de01c900030133019b019b018d0003011801de013b016b0133018401430003019b01de01d6000301d6019b0003056c05690569 Tj" + "0.00 -8.80 Td" + "#hex:015d0143014301d606080003000401d600030053016b015e0166014301c10003006e014301f50143018401c90608000300e001660143018f000301fc019b01de00030134011801c901d6000301d60166016b01c9 Tj" + "0.00 -8.80 Td" + "#hex:01c901be014301840184000301de01c9016b018f015e00030118000301c901be014301840184000301c90184019b01d60003019b015d0003056b018f013b00030184014301f5014301840003019b01c100030166016b015e0166014301c105fc Tj" + "0.00 -8.80 Td" + "#hex:01d6016601430003013b0118018d0118015e01430003016b018f013401c10143011801c9014301c90003013301fc0003056a013b05710003015d019b01c100030143011801340166000301c90184019b01d600030184014301f501430184 Tj" + "0.00 -8.80 Td" + "#hex:01180133019b01f501430003056a01c901d60608 Tj" + "ET" + "q" + "13.20 0.00 0.00 18.00 202.20 754.56 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 10.00 Tf" + "44.64 774.00 Td" + "0.00 -11.00 Td" + "#hex:00c1016601de018f013b014301c101f6011801f50143 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "110.66 774.00 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "44.64 760.32 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303fa00030031022a01d00169014d020b01a001d001c4 Tj" + "ET" + "q" + "/gs9 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 44.64 732.24 cm" + "/Form2 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "44.64 736.56 Td" + "\"1 Act.\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs10 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 80.64 732.24 cm" + "/Form3 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "80.64 736.56 Td" + "\"Self\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs11 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 116.64 732.24 cm" + "/Form4 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "116.64 736.56 Td" + "\"V,S\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs12 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 152.64 732.24 cm" + "/Form5 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "152.64 736.56 Td" + "\"Inst\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "BT" + "/F2 8.00 Tf" + "404.64 444.24 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de000301d601430184014301be019b01c101d6000301fc019b01de01c101c901430184015d0003015d01c1019b018d000301fc019b01de01c10003013401de01c101c10143018f01d6 Tj" + "0.00 -8.80 Td" + "#hex:0184019b0134011801d6016b019b018f000301d6019b00030118018f01fc0003019b01d60166014301c1000301c901be019b01d6000301f6016b01d60166016b018f000301c10118018f015e01430608000300e6019b01de Tj" + "0.00 -8.80 Td" + "#hex:011801c101c1016b01f501430003011801d60003014301fb0118013401d6018401fc000301d601660143000301c901be019b01d60003013b014301c9016b01c10143013b06080003005801d6000301340118018f00030133014300030118 Tj" + "0.00 -8.80 Td" + "#hex:01be0184011801340143000301fc019b01de000301340118018f000301c90143014305fc0003019b018f0143000301fc019b01de000301340118018f000301f5016b01c901de01180184016b0206014305fc0003019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:019b018f0143000301fc019b01de000301340118018f0003013b014301c9013401c1016b013301430003013301fc000301c901d6011801d6016b018f015e0003013b016b01c901d60118018f0134014300030118018f013b Tj" + "0.00 -8.80 Td" + "#hex:013b016b01c10143013401d6016b019b018f05fc000301c901de013401660003011801c900030655056b056905690003015d0143014301d6000301c901d601c10118016b015e016601d6 Tj" + "0.00 -8.80 Td" + "#hex:013b019b01f6018f01f6011801c1013b06560003019b01c10003065501de01be01f6011801c1013b000301d6019b000301d6016601430003018f019b01c101d6016601f6014301c901d60003011801d600030118 Tj" + "0.00 -8.80 Td" + "#hex:056d056e0640013b0143015e01c10143014300030118018f015e0184014305fc0003056c056905690003015d0143014301d606080656000300e6019b01de000301340118018f0003013301c1016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:01180184019b018f015e0003019b0133017d0143013401d601c90003011801c900030184019b018f015e0003011801c9000301d601660143016b01c1000301f60143016b015e016601d60003013b019b014301c9018f060c01d6 Tj" + "0.00 -8.80 Td" + "#hex:014301fb013401430143013b000301f60166011801d6000301fc019b01de000301340118018f00030134011801c101c101fc0608000300e6019b01de000301340118018f00030118018401c9019b0003013301c1016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:019b018f0143000301f6016b01840184016b018f015e0003013401c10143011801d601de01c101430003019b015d000301fc019b01de01c1000301c9016b020601430003019b01c1000301c9018d011801840184014301c1 Tj" + "0.00 -8.80 Td" + "#hex:01f60166019b0003016b01c900030134011801c101c101fc016b018f015e0003015e0143011801c1000301de01be000301d6019b0003016b01d601c900030134011801c101c101fc016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:0134011801be01180134016b01d601fc0608000300c1016601430003013401c10143011801d601de01c101430003018d01de01c901d6000301330143000301f6016b01d60166016b018f0003056e0003015d0143014301d60003019b015d Tj" + "0.00 -8.80 Td" + "#hex:01fc019b01de000301f601660143018f000301fc019b01de00030134011801c901d6000301d60166016b01c9000301c901be014301840184060800030058015d000301fc019b01de000301f6019b01de0184013b Tj" + "0.00 -8.80 Td" + "#hex:011801c101c1016b01f501430003016b018f00030118000301be018401180134014300030118018401c101430118013b01fc0003019b0134013401de01be016b0143013b0003013301fc00030118018f0003019b0133017d0143013401d6 Tj" + "0.00 -8.80 Td" + "#hex:019b01c1000301180003013401c10143011801d601de01c1014305fc000301fc019b01de00030118018f013b00030118018f01fc0003013401c10143011801d601de01c10143000301d601c1011801f501430184016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:01f6016b01d60166000301fc019b01de00030143011801340166000301d60118018101430003056d013b056f0003015d019b01c1013401430003013b0118018d0118015e014305fc00030118018f013b000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01c901be0143018401840003015d0118016b018401c9000301d6019b000301d601430184014301be019b01c101d6000301fc019b01de0608 Tj" + "ET" + "q" + "13.20 0.00 0.00 18.00 562.20 502.56 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 10.00 Tf" + "404.64 522.00 Td" + "0.00 -11.00 Td" + "#hex:0027016b018d0143018f01c9016b019b018f00030027019b019b01c1 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "483.21 522.00 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "404.64 508.32 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303fd0003002001d001c401b2021301f6014d020b01a001d001c4 Tj" + "ET" + "q" + "/gs13 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 404.64 480.24 cm" + "/Form2 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "404.64 484.56 Td" + "\"1 Act.\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs14 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 440.64 480.24 cm" + "/Form3 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "440.64 484.56 Td" + "\"500 ft\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs15 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 476.64 480.24 cm" + "/Form4 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "476.64 484.56 Td" + "\"V\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs16 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 512.64 480.24 cm" + "/Form5 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "512.64 484.56 Td" + "\"Inst\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "BT" + "/F2 8.00 Tf" + "224.64 444.24 Td" + "0.00 -8.80 Td" + "#hex:00040003056a05690640015d019b019b01d6064001c10118013b016b01de01c90003016b018d018d019b0133016b018401430003013b019b018d01430003019b015d0003015d019b01c101340143 Tj" + "0.00 -8.80 Td" + "#hex:01c901be01c1016b018f015e01c90003016b018f01d6019b0003014301fb016b01c901d60143018f013401430003011801c1019b01de018f013b00030118018f013b000301180133019b01f50143000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:0118018f013b000301c10143018d0118016b018f01c9000301c901d6011801d6016b019b018f011801c101fc0003015d019b01c1000301d6016601430003013b01de01c1011801d6016b019b018f0608000300c101660143 Tj" + "0.00 -8.80 Td" + "#hex:01c901be01430184018400030143018f013b01c90003016b015d000301fc019b01de000301840143011801f501430003016b01d601c90003011801c10143011806080003007a016b018f01430003013401c10143011801d601de01c1014301c9 Tj" + "0.00 -8.80 Td" + "#hex:019b015d000300780143013b016b01de018d000301c9016b020601430003019b01c1000301c9018d011801840184014301c1000301340118018f0003025b01d60003016b018f01c9016b013b0143000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:013b019b018d0143000301f6016b01d60166000301fc019b01de0608000300c101660143000301c901be0143018401840003015d0118016b018401c90003016b015d0003016b01d601c90003011801c101430118 Tj" + "0.00 -8.80 Td" + "#hex:016b018f0134018401de013b014301c90003011800030184011801c1015e014301c10003013401c10143011801d601de01c101430003019b01c10003018d019b01c10143000301d601660118018f0003018f016b018f0143 Tj" + "0.00 -8.80 Td" + "#hex:013401c10143011801d601de01c1014301c906080003002001c10143011801d601de01c1014301c900030118018f013b0003019b0133017d0143013401d601c9000301f6016b01d60166016b018f000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:013b019b018d0143000301f601660143018f000301fc019b01de00030134011801c901d6000301d60166016b01c9000301c901be014301840184000301340118018f0003018d019b01f50143 Tj" + "0.00 -8.80 Td" + "#hex:01d6016601c1019b01de015e01660003016b01d60003015d01c101430143018401fc060800030004018401840003019b01d60166014301c10003013401c10143011801d601de01c1014301c900030118018f013b Tj" + "0.00 -8.80 Td" + "#hex:019b0133017d0143013401d601c90003011801c1014300030133011801c101c10143013b0003015d01c1019b018d000301be011801c901c9016b018f015e000301d6016601c1019b01de015e01660003016b01d60608 Tj" + "0.00 -8.80 Td" + "#hex:00b401be01430184018401c900030118018f013b0003019b01d60166014301c10003018d0118015e016b0134011801840003014302480143013401d601c9000301340118018f060c01d60003014301fb01d60143018f013b Tj" + "0.00 -8.80 Td" + "#hex:01d6016601c1019b01de015e0166000301d6016601430003013b019b018d01430003019b01c100030133014300030134011801c901d6000301d6016601c1019b01de015e01660003016b01d60608000300c101660143 Tj" + "0.00 -8.80 Td" + "#hex:011801d6018d019b01c901be0166014301c101430003016b018f01c9016b013b0143000301d601660143000301c901be0118013401430003016b01c900030134019b018d015d019b01c101d60118013301840143 Tj" + "0.00 -8.80 Td" + "#hex:0118018f013b0003013b01c101fc05fc000301c10143015e011801c1013b0184014301c901c90003019b015d000301d601660143000301f60143011801d60166014301c10003019b01de01d601c9016b013b01430608 Tj" + "0.00 -8.80 Td" + "#hex:00c8018f01d6016b0184000301d601660143000301c901be01430184018400030143018f013b01c905fc000301fc019b01de000301340118018f00030134019b018d018d0118018f013b000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:016b018f01d6014301c1016b019b01c1000301d6019b0003013301430134019b018d01430003013b016b018d018401fc00030184016b01d60003019b01c10003013b011801c101810608000300c1016601430003013b019b018d0143 Tj" + "0.00 -8.80 Td" + "#hex:016b01c90003019b01be011801c001de01430003015d01c1019b018d000301d6016601430003019b01de01d601c9016b013b014305fc0003019b015d00030118018f01fc00030134019b0184019b01c1000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014305fc0003013301de01d60003016b01d60003016b01c9000301d601c10118018f01c901be011801c10143018f01d60003015d01c1019b018d000301d6016601430003016b018f01c9016b013b01430608 Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "224.64 482.40 Td" + "0.00 -8.80 Td" + "#hex:0004000301fe01c2014d01b901b90003016901f6023101fe020b014d01b9000301680178014d0170 Tj" + "ET" + "q" + "13.20 0.00 0.00 18.00 382.20 502.56 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 10.00 Tf" + "224.64 522.00 Td" + "0.00 -11.00 Td" + "#hex:00c1016b018f01fc0003005301de01d6 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "266.75 522.00 Td" + "0.00 -11.00 Td" + "#hex:000304a201f601a0020b0213014d01b904a3 Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "224.64 508.32 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303fc00030031022a01d00169014d020b01a001d001c4 Tj" + "ET" + "q" + "/gs17 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 224.64 480.24 cm" + "/Form2 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "224.64 484.56 Td" + "\"1 min\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs18 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 260.64 480.24 cm" + "/Form3 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "260.64 484.56 Td" + "\"Self\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs19 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 296.64 480.24 cm" + "/Form4 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "296.64 484.56 Td" + "\"V,S,M\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs20 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 332.64 480.24 cm" + "/Form5 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "332.64 484.56 Td" + "\"8 hrs\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "BT" + "/F2 8.00 Tf" + "44.64 444.24 Td" + "0.00 -8.80 Td" + "#hex:00c10166016b01c9000301c901be0143018401840003013401c10143011801d6014301c900030118018f000301de018f013b01430118013b000301c9014301c101f50118018f01d60608000300200166019b019b01c9014300030118 Tj" + "0.00 -8.80 Td" + "#hex:01be016b018401430003019b015d00030133019b018f014301c90003019b01c10003011800030134019b01c101be01c901430003019b015d00030118000300780143013b016b01de018d0003019b01c1000300b4018d011801840184 Tj" + "0.00 -8.80 Td" + "#hex:016601de018d0118018f019b016b013b000301f6016b01d60166016b018f000301c10118018f015e01430608000300e6019b01de01c1000301c901be0143018401840003016b018d013301de014301c9000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01d6011801c1015e014301d6000301f6016b01d60166000301180003015d019b01de01840003018d016b018d016b013401c101fc0003019b015d00030184016b015d014305fc000301c10118016b01c9016b018f015e0003016b01d60003011801c9 Tj" + "0.00 -8.80 Td" + "#hex:0118018f000301de018f013b01430118013b0003013401c10143011801d601de01c101430608000300c101660143000301d6011801c1015e014301d60003013301430134019b018d014301c900030118 Tj" + "0.00 -8.80 Td" + "#hex:01c9018101430184014301d6019b018f0003016b015d000301fc019b01de000301340166019b01c9014300030133019b018f014301c90003019b01c10003011800030206019b018d0133016b01430003016b015d000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:01340166019b01c901430003011800030134019b01c101be01c901430003062801d6016601430003004b007800030166011801c9000301d6016601430003013401c10143011801d601de01c10143060c01c9 Tj" + "0.00 -8.80 Td" + "#hex:015e0118018d0143000301c901d6011801d6016b01c901d6016b013401c90629060800030086018f000301430118013401660003019b015d000301fc019b01de01c1000301d601de01c1018f01c905fc000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:01340118018f000301de01c901430003011800030133019b018f01de01c900030118013401d6016b019b018f000301d6019b0003018d0143018f01d601180184018401fc00030134019b018d018d0118018f013b Tj" + "0.00 -8.80 Td" + "#hex:0118018f01fc0003013401c10143011801d601de01c10143000301fc019b01de0003018d0118013b0143000301f6016b01d60166000301d60166016b01c9000301c901be0143018401840003016b015d000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:013401c10143011801d601de01c101430003016b01c9000301f6016b01d60166016b018f0003056f05690003015d0143014301d60003019b015d000301fc019b01de00030628016b015d000301fc019b01de00030134019b018f01d601c1019b0184 Tj" + "0.00 -8.80 Td" + "#hex:018d01de018401d6016b01be018401430003013401c10143011801d601de01c1014301c905fc000301fc019b01de000301340118018f00030134019b018d018d0118018f013b00030118018f01fc0003019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:0118018401840003019b015d000301d601660143018d0003011801d6000301d601660143000301c90118018d0143000301d6016b018d014305fc0003016b01c901c901de016b018f015e000301d601660143000301c90118018d0143 Tj" + "0.00 -8.80 Td" + "#hex:0134019b018d018d0118018f013b000301d6019b000301430118013401660003019b018f014306290608000300e6019b01de0003013b01430134016b013b0143000301f60166011801d600030118013401d6016b019b018f Tj" + "0.00 -8.80 Td" + "#hex:01d6016601430003013401c10143011801d601de01c10143000301f6016b01840184000301d601180181014300030118018f013b000301f60166014301c101430003016b01d6000301f6016b018401840003018d019b01f50143 Tj" + "0.00 -8.80 Td" + "#hex:013b01de01c1016b018f015e0003016b01d601c90003018f014301fb01d6000301d601de01c1018f05fc0003019b01c1000301fc019b01de000301340118018f0003016b01c901c901de0143000301180003015e0143018f014301c101180184 Tj" + "0.00 -8.80 Td" + "#hex:0134019b018d018d0118018f013b05fc000301c901de013401660003011801c9000301d6019b0003015e01de011801c1013b00030118000301be011801c101d6016b013401de0184011801c1 Tj" + "0.00 -8.80 Td" + "#hex:013401660118018d0133014301c10003019b01c100030134019b01c101c1016b013b019b01c1060800030058015d000301fc019b01de0003016b01c901c901de01430003018f019b Tj" + "0.00 -8.80 Td" + "#hex:0134019b018d018d0118018f013b01c905fc000301d6016601430003013401c10143011801d601de01c101430003019b018f018401fc0003013b0143015d0143018f013b01c90003016b01d601c901430184015d Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "44.64 482.40 Td" + "0.00 -8.80 Td" + "#hex:00040003017001f601d001f3000301d001920003016801b901d001d0017004760003014d000301f301a0017801690178000301d001920003027f017801fe019b04760003014d01c401700003014d000301f301a001c40169019b000301d001920003016801d001c40178 Tj" + "0.00 -8.80 Td" + "#hex:0170021301fe020b Tj" + "ET" + "q" + "13.20 0.00 0.00 18.00 202.20 502.56 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 10.00 Tf" + "44.64 522.00 Td" + "0.00 -11.00 Td" + "#hex:0004018f016b018d011801d601430003002701430118013b Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "112.15 522.00 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "44.64 508.32 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303fc0003007a0178016901f601d001c2014d01c401690231 Tj" + "ET" + "q" + "/gs21 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 44.64 480.24 cm" + "/Form2 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "44.64 484.56 Td" + "\"1 min\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs22 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 80.64 480.24 cm" + "/Form3 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "80.64 484.56 Td" + "\"10 ft\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs23 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 116.64 480.24 cm" + "/Form4 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "116.64 484.56 Td" + "\"V,S,M\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs24 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 152.64 480.24 cm" + "/Form5 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "152.64 484.56 Td" + "\"Inst\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "0.00 0.00 0.00 rg" + "0.02 0.00 0.00 0.02 201.60 273.60 cm" + "/Form6 Do" + "Q" + "BT" + "/F2 8.00 Tf" + "404.64 192.24 Td" + "0.00 -8.80 Td" + "#hex:00200166019b019b01c9014300030118018f0003011801c1014301180003019b015d000301d6014301c101c10118016b018f0003018f019b00030184011801c1015e014301c1000301d601660118018f0003056d0569 Tj" + "0.00 -8.80 Td" + "#hex:015d0143014301d60003019b018f00030118000301c9016b013b0143000301f6016b01d60166016b018f000301c10118018f015e01430608000300e6019b01de000301340118018f000301c1014301c90166011801be0143 Tj" + "0.00 -8.80 Td" + "#hex:013b016b01c101d605fc000301c90118018f013b05fc0003019b01c1000301340184011801fc0003016b018f000301d6016601430003011801c1014301180003016b018f00030118018f01fc0003018d0118018f018f014301c1 Tj" + "0.00 -8.80 Td" + "#hex:01fc019b01de000301340166019b019b01c901430003015d019b01c1000301d6016601430003013b01de01c1011801d6016b019b018f0608000300e6019b01de000301340118018f000301c10118016b01c901430003019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:0184019b01f6014301c1000301d6016601430003011801c101430118060c01c9000301430184014301f5011801d6016b019b018f05fc0003013401c10143011801d601430003019b01c10003025b018401840003016b018f00030118 Tj" + "0.00 -8.80 Td" + "#hex:01d601c10143018f0134016605fc0003014301c10143013401d60003019b01c10003025d011801d601d60143018f00030118000301f601180184018405fc0003019b01c10003015d019b01c1018d00030118000301be016b01840184011801c10608 Tj" + "0.00 -8.80 Td" + "#hex:00c1016601430003014301fb01d60143018f01d60003019b015d00030118018f01fc000301c901de013401660003013401660118018f015e014301c9000301340118018f060c01d60003014301fb013401430143013b Tj" + "0.00 -8.80 Td" + "#hex:016601180184015d000301d6016601430003011801c101430118060c01c900030184011801c1015e014301c901d60003013b016b018d0143018f01c9016b019b018f0608000300b4019b05fc0003016b015d000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:011802480143013401d6000301180003056d05690640015d019b019b01d6000301c901c001de011801c1014305fc000301fc019b01de000301340118018f0003013401c10143011801d6014300030118000301be016b01840184011801c1 Tj" + "0.00 -8.80 Td" + "#hex:01de01be000301d6019b0003056b05690003015d0143014301d600030166016b015e016605fc000301c10118016b01c901430003019b01c100030184019b01f6014301c1000301d601660143000301c901c001de011801c10143060c01c9 Tj" + "0.00 -8.80 Td" + "#hex:01430184014301f5011801d6016b019b018f0003013301fc000301de01be000301d6019b0003056b05690003015d0143014301d605fc0003013b016b015e00030118000301d601c10143018f01340166000301de01be000301d6019b0003056b0569 Tj" + "0.00 -8.80 Td" + "#hex:015d0143014301d60003013b0143014301be05fc00030118018f013b000301c9019b0003019b018f06080003005801d6000301d601180181014301c90003056a05690003018d016b018f01de01d6014301c90003015d019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:01d60166014301c901430003013401660118018f015e014301c9000301d6019b00030134019b018d01be0184014301d6014306080003000401d6000301d60166014300030143018f013b0003019b015d0003014301f5014301c101fc Tj" + "0.00 -8.80 Td" + "#hex:056a05690003018d016b018f01de01d6014301c9000301fc019b01de000301c901be0143018f013b00030134019b018f01340143018f01d601c1011801d6016b018f015e0003019b018f000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01c901be01430184018405fc000301fc019b01de000301340118018f000301340166019b019b01c90143000301180003018f014301f60003011801c1014301180003019b015d000301d6014301c101c10118016b018f000301d6019b Tj" + "0.00 -8.80 Td" + "#hex:011802480143013401d606080003001f01430134011801de01c90143000301d601660143000301d6014301c101c10118016b018f060c01c9000301d601c10118018f01c9015d019b01c1018d011801d6016b019b018f Tj" + "0.00 -8.80 Td" + "#hex:019b0134013401de01c101c9000301c90184019b01f6018401fc05fc0003013401c10143011801d601de01c1014301c90003016b018f000301d6016601430003011801c101430118000301340118018f060c01d6 Tj" + "0.00 -8.80 Td" + "#hex:01de01c901de01180184018401fc000301330143000301d601c1011801be01be0143013b0003019b01c10003016b018f017d01de01c10143013b0003013301fc000301d6016601430003015e01c1019b01de018f013b060c01c9 Tj" + "0.00 -8.80 Td" + "#hex:018d019b01f50143018d0143018f01d60608000300c10166016b01c9000301c901be014301840184000301340118018f060c01d60003018d0118018f016b01be01de0184011801d601430003018f011801d601de01c101180184 Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "404.64 230.40 Td" + "0.00 -8.80 Td" + "#hex:000401c4000301a001f601d001c40003016801b9014d017001780003014d01c401700003014d000301fe01c2014d01b901b900030168014d01930003016901d001c4020b014d01a001c401a001c401930003014d000301c201a00230020b021301f60178 Tj" + "0.00 -8.80 Td" + "#hex:01d00192000301fe01d001a001b901fe04b6016901b9014d02310476000301b901d0014d01c204760003014d01c40170000301fe014d01c40170 Tj" + "ET" + "q" + "13.20 0.00 0.00 18.00 562.20 250.56 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 10.00 Tf" + "404.64 270.00 Td" + "0.00 -11.00 Td" + "#hex:0078019b01f5014300030031011801c101d60166 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "459.65 270.00 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "404.64 256.32 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303ff000300c101f6014d01c401fe01c20213020b014d020b01a001d001c4 Tj" + "ET" + "q" + "/gs25 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 404.64 228.24 cm" + "/Form2 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "404.64 232.56 Td" + "\"1 Act.\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs26 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 440.64 228.24 cm" + "/Form3 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "440.64 232.56 Td" + "\"120 ft\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs27 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 476.64 228.24 cm" + "/Form4 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "476.64 232.56 Td" + "\"V,S,M\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs28 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 512.64 228.24 cm" + "/Form5 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "512.64 232.56 Td" + "\"Conc, 2 hrs\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "0.00 0.00 0.00 rg" + "0.02 0.00 0.00 0.02 561.60 21.60 cm" + "/Form6 Do" + "Q" + "BT" + "/F2 8.00 Tf" + "224.64 192.24 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de0003016b018d013301de0143000301180003013401c10143011801d601de01c10143000301fc019b01de000301d6019b01de01340166000301f6016b01d60166000301be019b01c9016b01d6016b01f50143 Tj" + "0.00 -8.80 Td" + "#hex:0143018f014301c1015e01fc000301d6019b000301de018f013b019b000301180003013b01430133016b0184016b01d6011801d6016b018f015e0003014302480143013401d60608000300e6019b01de000301340118018f Tj" + "0.00 -8.80 Td" + "#hex:01c10143013b01de01340143000301d601660143000301d6011801c1015e014301d6060c01c90003014301fb0166011801de01c901d6016b019b018f00030184014301f5014301840003013301fc0003019b018f014305fc0003019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:0143018f013b0003019b018f01430003019b015d000301d6016601430003015d019b01840184019b01f6016b018f015e0003014302480143013401d601c90003019b018f000301d601660143000301d6011801c1015e014301d605fb000305f8 Tj" + "0.00 -8.80 Td" + "#hex:0086018f01430003014302480143013401d6000301d60166011801d6000301340166011801c1018d0143013b0003019b01c1000301be014301d601c1016b025b0143013b000301d601660143000301d6011801c1015e014301d6 Tj" + "0.00 -8.80 Td" + "#hex:05f800030086018f01430003013401de01c101c9014305fc0003016b018f0134018401de013b016b018f015e000301d601660143000301d6011801c1015e014301d6060c01c90003011801d601d601de018f0143018d0143018f01d6 Tj" + "0.00 -8.80 Td" + "#hex:01d6019b000301180003013401de01c101c90143013b0003018d0118015e016b01340003016b01d60143018d000305f800030004018f01fc000301c10143013b01de013401d6016b019b018f000301d6019b0003019b018f0143 Tj" + "0.00 -8.80 Td" + "#hex:019b015d000301d601660143000301d6011801c1015e014301d6060c01c9000301180133016b0184016b01d601fc000301c90134019b01c1014301c9000305f800030086018f01430003014302480143013401d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10143013b01de0134016b018f015e000301d601660143000301d6011801c1015e014301d6060c01c900030166016b01d6000301be019b016b018f01d60003018d011801fb016b018d01de018d Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "224.64 230.40 Td" + "0.00 -8.80 Td" + "#hex:002701a0014d01c201d001c4017000030170021301fe020b0003022b01d001f6020b019b0003014d020b000301b90178014d01fe020b000303fa03f903f90003019301f304760003022b019b01a00169019b0003020b019b0178000301fe01f3017801b901b9 Tj" + "0.00 -8.80 Td" + "#hex:016901d001c401fe021301c2017801fe Tj" + "ET" + "q" + "13.20 0.00 0.00 18.00 382.20 250.56 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 10.00 Tf" + "224.64 270.00 Td" + "0.00 -11.00 Td" + "#hex:004b01c10143011801d6014301c1000300ac014301c901d6019b01c1011801d6016b019b018f Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "319.16 270.00 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "224.64 256.32 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303fe00030004016801b2021301f6014d020b01a001d001c4 Tj" + "ET" + "q" + "/gs29 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 224.64 228.24 cm" + "/Form2 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "224.64 232.56 Td" + "\"1 Act.\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs30 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 260.64 228.24 cm" + "/Form3 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "260.64 232.56 Td" + "\"Touch\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs31 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 296.64 228.24 cm" + "/Form4 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "296.64 232.56 Td" + "\"V,S,M\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs32 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 332.64 228.24 cm" + "/Form5 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "332.64 232.56 Td" + "\"Inst\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "BT" + "/F2 8.00 Tf" + "44.64 192.24 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de000301be01de01840184000301f6016b01c901be01c90003019b015d000301c901660118013b019b01f60003018d011801d6014301c1016b011801840003015d01c1019b018d000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:00b401660118013b019b01f6015d014301840184000301d6019b0003013401c10143011801d60143000301180003018f019b018f0184016b01f5016b018f015e0003019b0133017d0143013401d60003019b015d Tj" + "0.00 -8.80 Td" + "#hex:01f50143015e014301d601180133018401430003018d011801d601d6014301c1000301f6016b01d60166016b018f000301c10118018f015e014305fb000301c9019b025e0003015e019b019b013b01c905fc Tj" + "0.00 -8.80 Td" + "#hex:01c1019b01be014305fc000301f6019b019b013b05fc0003019b01c1000301c9019b018d014301d60166016b018f015e000301c9016b018d016b0184011801c10608000300e6019b01de000301340118018f00030118018401c9019b Tj" + "0.00 -8.80 Td" + "#hex:01de01c90143000301d60166016b01c9000301c901be014301840184000301d6019b0003013401c10143011801d601430003018d016b018f014301c1011801840003019b0133017d0143013401d601c9000301c901de013401660003011801c9 Tj" + "0.00 -8.80 Td" + "#hex:01c901d6019b018f014305fc0003013401c101fc01c901d60118018405fc0003019b01c10003018d014301d6011801840608000300c1016601430003019b0133017d0143013401d60003013401c10143011801d60143013b Tj" + "0.00 -8.80 Td" + "#hex:018d01de01c901d60003013301430003018f019b00030184011801c1015e014301c1000301d601660118018f000301180003056e06400003015d019b019b01d60003013401de0133014305fc00030118018f013b000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:019b0133017d0143013401d60003018d01de01c901d60003013301430003019b015d000301180003015d019b01c1018d00030118018f013b0003018d011801d6014301c1016b01180184000301d60166011801d6000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:0166011801f50143000301c901430143018f000301330143015d019b01c101430608000300c1016601430003013b01de01c1011801d6016b019b018f0003013b014301be0143018f013b01c90003019b018f000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:019b0133017d0143013401d6060c01c90003018d011801d6014301c1016b01180184060800030058015d000301d6016601430003019b0133017d0143013401d60003016b01c900030134019b018d01be019b01c90143013b0003019b015d Tj" + "0.00 -8.80 Td" + "#hex:018d01de018401d6016b01be018401430003018d011801d6014301c1016b0118018401c905fc000301de01c90143000301d601660143000301c90166019b01c101d6014301c901d60003013b01de01c1011801d6016b019b018f0608 Tj" + "0.00 -8.80 Td" + "#hex:0078011801d6014301c1016b011801840003002701de01c1011801d6016b019b018f000300df0143015e014301d601180133018401430003018d011801d601d6014301c10003056a0003013b011801fc Tj" + "0.00 -8.80 Td" + "#hex:00b401d6019b018f01430003019b01c10003013401c101fc01c901d6011801840003056a056b00030166019b01de01c101c9000300a901c101430134016b019b01de01c90003018d014301d60118018401c90003056a Tj" + "0.00 -8.80 Td" + "#hex:0166019b01de01c10003004b0143018d01c90003056a05690003018d016b018f01de01d6014301c900030004013b0118018d0118018f01d6016b018f01430003019b01c10003018d016b01d6016601c101180184 Tj" + "0.00 -8.80 Td" + "#hex:056a0003018d016b018f01de01d60143000300c801c9016b018f015e00030118018f01fc0003018d011801d6014301c1016b011801840003013401c10143011801d60143013b0003013301fc000301d60166016b01c9 Tj" + "0.00 -8.80 Td" + "#hex:01c901be0143018401840003011801c900030118018f019b01d60166014301c1000301c901be014301840184060c01c90003018d011801d6014301c1016b0118018400030134019b018d01be019b018f0143018f01d6 Tj" + "0.00 -8.80 Td" + "#hex:0134011801de01c9014301c9000301d60166011801d6000301c901be014301840184000301d6019b0003015d0118016b018406080003000401d600030053016b015e0166014301c10003006e014301f50143018401c90608 Tj" + "0.00 -8.80 Td" + "#hex:00e001660143018f000301fc019b01de00030134011801c901d6000301d60166016b01c9000301c901be014301840184000301de01c9016b018f015e00030118000301c901be014301840184000301c90184019b01d60003019b015d Tj" + "0.00 -8.80 Td" + "#hex:056f01d6016600030184014301f5014301840003019b01c100030166016b015e0166014301c105fc000301d6016601430003013401de013301430003016b018f013401c10143011801c9014301c90003013301fc0003056e0003015d0143014301d6 Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "44.64 230.40 Td" + "0.00 -8.80 Td" + "#hex:00040003020b01a001c40231000301f301a0017801690178000301d00192000301c2014d020b020b017801f6000301d001920003020b019b0178000301fe014d01c201780003020b023101f30178000301d001920003020b019b0178000301a0020b017801c20003023101d00213 Tj" + "0.00 -8.80 Td" + "#hex:01f301b9014d01c40003020b01d00003016901f60178014d020b0178 Tj" + "ET" + "q" + "13.20 0.00 0.00 18.00 202.20 250.56 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 10.00 Tf" + "44.64 270.00 Td" + "0.00 -11.00 Td" + "#hex:002001c10143011801d6016b019b018f Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "86.17 270.00 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "44.64 256.32 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303fe0003005801b901b9021301fe01a001d001c4 Tj" + "ET" + "q" + "/gs33 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 44.64 228.24 cm" + "/Form2 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "44.64 232.56 Td" + "\"1 min\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs34 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 80.64 228.24 cm" + "/Form3 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "80.64 232.56 Td" + "\"30 ft\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs35 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 116.64 228.24 cm" + "/Form4 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "116.64 232.56 Td" + "\"V,S,M\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs36 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 152.64 228.24 cm" + "/Form5 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "152.64 232.56 Td" + "\"Special\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "0.00 0.00 0.00 rg" + "0.02 0.00 0.00 0.02 201.60 21.60 cm" + "/Form6 Do" + "Q"] + ["0.88 0.88 0.88 RG" + "36.00 18.00 m" + "36.00 774.00 l" + "S" + "216.00 18.00 m" + "216.00 774.00 l" + "S" + "396.00 18.00 m" + "396.00 774.00 l" + "S" + "576.00 18.00 m" + "576.00 774.00 l" + "S" + "36.00 18.00 m" + "576.00 18.00 l" + "S" + "36.00 270.00 m" + "576.00 270.00 l" + "S" + "36.00 522.00 m" + "576.00 522.00 l" + "S" + "36.00 774.00 m" + "576.00 774.00 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 781.20 Td" + "#hex:00a9014d01930178000303fa000304a201f60178022a017801f601fe017804a3 Tj" + "ET" + "BT" + "/F2 10.00 Tf" + "44.64 768.24 Td" + "0.00 -11.00 Td" + "#hex:00780118015e016b013400030078019b01de01d60166 Tj" + "ET" + "BT" + "/F3 8.00 Tf" + "44.64 756.72 Td" + "0.00 -8.80 Td" + "#hex:01c1014301be0143011801d60003016b01d601c90003018d014301c901c90118015e0143000301f601660143018f014301f5014301c1000301d601660143000301d601c1016b015e015e014301c1 Tj" + "0.00 -8.80 Td" + "#hex:019b0134013401de01c101c90608000300c101660143000301d601c1016b015e015e014301c1016b018f015e00030134016b01c1013401de018d01c901d60118018f01340143000301340118018f0003013301430003011801c9 Tj" + "0.00 -8.80 Td" + "#hex:015e0143018f014301c1011801840003019b01c10003011801c90003013b014301d60118016b01840143013b0003011801c9000301fc019b01de00030184016b0181014305fc000301d60166019b01de015e01660003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:018d01de01c901d600030133014300030133011801c90143013b0003019b018f000301f5016b01c901de011801840003019b01c10003011801de013b016b01330184014300030134019b018f013b016b01d6016b019b018f01c9 Tj" + "0.00 -8.80 Td" + "#hex:01d60166011801d60003019b0134013401de01c1000301f6016b01d60166016b018f0003056c05690003015d0143014301d60003019b015d000301d6016601430003019b0133017d0143013401d606080003004a019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:014301fb0118018d01be0184014305fc000301fc019b01de00030134019b01de0184013b0003016b018f01c901d601c101de013401d6000301d6016601430003018d019b01de01d60166000301d6019b Tj" + "0.00 -8.80 Td" + "#hex:01c901be014301180181000301f601660143018f00030118018f01fc0003013401c10143011801d601de01c101430003018d019b01f5014301c9000301f6016b01d60166016b018f0003056c05690003015d0143014301d6 Tj" + "0.00 -8.80 Td" + "#hex:019b015d000301d6016601430003019b0133017d0143013401d60003019b01c1000301f601660143018f00030118000301c9016b018401f5014301c100030133014301840184000301c1016b018f015e01c9000301f6016b01d60166016b018f Tj" + "0.00 -8.80 Td" + "#hex:056c05690003015d0143014301d60003019b015d0003016b01d60608 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "109.62 768.24 Td" + "0.00 -11.00 Td" + "#hex:04a201f60178022a017801f601fe017804a3 Tj" + "ET" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "91.01 533.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 54.00 324.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "91.01 281.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F2 10.00 Tf" + "44.64 264.24 Td" + "0.00 -11.00 Td" + "#hex:0078019b01f5014300030031011801c101d60166 Tj" + "ET" + "BT" + "/F3 8.00 Tf" + "44.64 252.72 Td" + "0.00 -8.80 Td" + "#hex:01c901d6019b018f01430003019b01c1000301c901d6019b018f014300030134019b018f01c901d601c101de013401d6016b019b018f0608000300ac019b0134018101c900030118018f013b Tj" + "0.00 -8.80 Td" + "#hex:01c901d601c101de013401d601de01c1014301c9000301c90166016b025e000301d6019b0003011801340134019b018d018d019b013b011801d60143000301d6016601430003018f014301f6 Tj" + "0.00 -8.80 Td" + "#hex:01d6014301c101c10118016b018f060800030058015d000301d601660143000301f6011801fc000301fc019b01de000301c90166011801be0143000301d601660143000301d6014301c101c10118016b018f000301f6019b01de0184013b Tj" + "0.00 -8.80 Td" + "#hex:018d01180181014300030118000301c901d601c101de013401d601de01c10143000301de018f01c901d6011801330184014305fc0003016b01d60003018d016b015e016601d600030134019b01840184011801be01c901430608 Tj" + "0.00 -8.80 Td" + "#hex:00b4016b018d016b0184011801c1018401fc05fc000301d60166016b01c9000301c901be0143018401840003013b019b014301c9018f060c01d60003013b016b01c10143013401d6018401fc0003011802480143013401d6 Tj" + "0.00 -8.80 Td" + "#hex:01be01840118018f01d60003015e01c1019b01f601d601660608000300c1016601430003018d019b01f50143013b00030143011801c101d6016600030134011801c101c1016b014301c900030118018f01fc Tj" + "0.00 -8.80 Td" + "#hex:01be01840118018f01d601c9000301180184019b018f015e000301f6016b01d601660003016b01d60608 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "101.81 264.24 Td" + "0.00 -11.00 Td" + "#hex:04a201f60178022a017801f601fe017804a3 Tj" + "ET" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "91.01 29.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 234.00 576.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "271.01 533.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 234.00 324.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "271.01 281.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 234.00 72.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "271.01 29.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 414.00 576.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "451.01 533.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F2 10.00 Tf" + "404.64 516.24 Td" + "0.00 -11.00 Td" + "#hex:0004018f016b018d011801d601430003002701430118013b Tj" + "ET" + "BT" + "/F3 8.00 Tf" + "404.64 504.72 Td" + "0.00 -8.80 Td" + "#hex:0118015e0118016b018f01c901d600030166019b01c901d6016b018401430003013401c10143011801d601de01c1014301c9060800030086018f013401430003015e016b01f50143018f00030118018f0003019b01c1013b014301c105fc Tj" + "0.00 -8.80 Td" + "#hex:01d6016601430003013401c10143011801d601de01c1014300030134019b018f01d6016b018f01de014301c9000301d6019b0003015d019b01840184019b01f60003016b01d6000301de018f01d6016b01840003016b01d601c9000301d6011801c90181 Tj" + "0.00 -8.80 Td" + "#hex:016b01c900030134019b018d01be0184014301d601430608000300c1016601430003013401c10143011801d601de01c101430003016b01c9000301de018f013b014301c1000301fc019b01de01c100030134019b018f01d601c1019b0184 Tj" + "0.00 -8.80 Td" + "#hex:015d019b01c10003056b056d00030166019b01de01c101c905fc00030118025e014301c1000301f60166016b013401660003016b01d6000301c901d6019b01be01c90003019b0133014301fc016b018f015e00030118018f01fc Tj" + "0.00 -8.80 Td" + "#hex:0134019b018d018d0118018f013b000301fc019b01de060c01f501430003015e016b01f50143018f0003016b01d60608000300c1019b0003018d0118016b018f01d60118016b018f00030134019b018f01d601c1019b0184 Tj" + "0.00 -8.80 Td" + "#hex:019b015d000301d6016601430003013401c10143011801d601de01c101430003015d019b01c100030118018f019b01d60166014301c10003056b056d00030166019b01de01c101c905fc000301fc019b01de0003018d01de01c901d6 Tj" + "0.00 -8.80 Td" + "#hex:0134011801c901d6000301d60166016b01c9000301c901be0143018401840003019b018f000301d6016601430003013401c10143011801d601de01c1014300030118015e0118016b018f000301330143015d019b01c10143000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:013401de01c101c10143018f01d60003056b056d06400166019b01de01c1000301be014301c1016b019b013b00030143018f013b01c90608000300c10166016b01c9000301de01c901430003019b015d000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01c901be014301840184000301c10143011801c901c9014301c101d601c9000301fc019b01de01c100030134019b018f01d601c1019b01840003019b01f5014301c1000301de01be000301d6019b0003015d019b01de01c1 Tj" + "0.00 -8.80 Td" + "#hex:013401c10143011801d601de01c1014301c9000301fc019b01de00030166011801f5014300030118018f016b018d011801d60143013b000301f6016b01d60166000301d60166016b01c9000301c901be01430184018405fc Tj" + "0.00 -8.80 Td" + "#hex:01c1011801d60166014301c1000301d601660118018f00030118018f016b018d011801d6016b018f015e000301180003018f014301f60003019b018f014306080003000401d600030053016b015e0166014301c1 Tj" + "0.00 -8.80 Td" + "#hex:006e014301f50143018401c90608000300e001660143018f000301fc019b01de00030134011801c901d6000301d60166016b01c9000301c901be014301840184000301de01c9016b018f015e00030118000301c901be014301840184 Tj" + "0.00 -8.80 Td" + "#hex:01c90184019b01d60003019b015d0003056d01d6016600030184014301f5014301840003019b01c100030166016b015e0166014301c105fc000301fc019b01de00030118018f016b018d011801d601430003019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:01c10143011801c901c9014301c101d600030134019b018f01d601c1019b01840003019b01f5014301c1000301d601f6019b00030118013b013b016b01d6016b019b018f01180184000301de018f013b01430118013b Tj" + "0.00 -8.80 Td" + "#hex:013401c10143011801d601de01c1014301c90003015d019b01c100030143011801340166000301c90184019b01d600030184014301f501430184000301180133019b01f501430003056c01c1013b0608000300310118013401660003019b015d Tj" + "0.00 -8.80 Td" + "#hex:01d6016601430003013401c10143011801d601de01c1014301c90003018d01de01c901d600030134019b018d01430003015d01c1019b018d000301180003013b016b0248014301c10143018f01d6 Tj" + "0.00 -8.80 Td" + "#hex:0134019b01c101be01c901430003019b01c1000301be016b018401430003019b015d00030133019b018f014301c90608 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "474.31 516.24 Td" + "0.00 -11.00 Td" + "#hex:04a201f60178022a017801f601fe017804a3 Tj" + "ET" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "451.01 281.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F2 10.00 Tf" + "404.64 264.24 Td" + "0.00 -11.00 Td" + "#hex:002001c10143011801d6016b019b018f Tj" + "ET" + "BT" + "/F3 8.00 Tf" + "404.64 252.72 Td" + "0.00 -8.80 Td" + "#hex:015d019b01c100030143011801340166000301c90184019b01d600030184014301f501430184000301180133019b01f501430003056e01d601660608 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "448.33 264.24 Td" + "0.00 -11.00 Td" + "#hex:04a201f60178022a017801f601fe017804a3 Tj" + "ET" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "451.01 29.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET"] + ["0.88 0.88 0.88 RG" + "36.00 18.00 m" + "36.00 774.00 l" + "S" + "216.00 18.00 m" + "216.00 774.00 l" + "S" + "396.00 18.00 m" + "396.00 774.00 l" + "S" + "576.00 18.00 m" + "576.00 774.00 l" + "S" + "36.00 18.00 m" + "576.00 18.00 l" + "S" + "36.00 270.00 m" + "576.00 270.00 l" + "S" + "36.00 522.00 m" + "576.00 522.00 l" + "S" + "36.00 774.00 m" + "576.00 774.00 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 781.20 Td" + "#hex:00a9014d01930178000303fb Tj" + "ET" + "BT" + "/F2 8.00 Tf" + "404.64 696.24 Td" + "0.00 -8.80 Td" + "#hex:000400030134016601de01c1018f016b018f015e000301c901d6019b01c1018d000301340184019b01de013b0003015d019b01c1018d01c905fc000301340143018f01d6014301c10143013b0003019b018f00030118 Tj" + "0.00 -8.80 Td" + "#hex:01be019b016b018f01d6000301fc019b01de000301340118018f000301c90143014300030118018f013b000301c901be01c101430118013b016b018f015e000301d6019b00030118000301c10118013b016b01de01c90003019b015d Tj" + "0.00 -8.80 Td" + "#hex:056c056f05690003015d0143014301d606080003006e016b015e016601d6018f016b018f015e0003025d011801c90166014301c90003016b018f000301d6016601430003011801c10143011805fc000301d6016601de018f013b014301c1 Tj" + "0.00 -8.80 Td" + "#hex:0133019b019b018d01c905fc00030118018f013b000301c901d601c1019b018f015e000301f6016b018f013b01c9000301c1019b011801c10608000300310118013401660003013401c10143011801d601de01c10143 Tj" + "0.00 -8.80 Td" + "#hex:01de018f013b014301c1000301d601660143000301340184019b01de013b00030628018f019b0003018d019b01c10143000301d601660118018f0003056e05fc0569056905690003015d0143014301d6 Tj" + "0.00 -8.80 Td" + "#hex:01330143018f0143011801d60166000301d601660143000301340184019b01de013b0629000301f601660143018f0003016b01d60003011801be01be0143011801c101c90003018d01de01c901d60003018d011801810143 Tj" + "0.00 -8.80 Td" + "#hex:011800030020019b018f01c901d6016b01d601de01d6016b019b018f000301c9011801f5016b018f015e000301d6016601c1019b01f6060800030086018f000301180003015d0118016b01840143013b000301c9011801f5014305fc Tj" + "0.00 -8.80 Td" + "#hex:01180003013401c10143011801d601de01c10143000301d601180181014301c90003056b013b056f000301d6016601de018f013b014301c10003013b0118018d0118015e014300030118018f013b Tj" + "0.00 -8.80 Td" + "#hex:013301430134019b018d014301c90003013b01430118015d0143018f0143013b0003015d019b01c10003056e0003018d016b018f01de01d6014301c9060800030031011801340166000301c1019b01de018f013b Tj" + "0.00 -8.80 Td" + "#hex:01fc019b01de0003018d0118016b018f01d60118016b018f00030134019b018f01340143018f01d601c1011801d6016b019b018f0003019b018f000301d60166016b01c9000301c901be01430184018405fc000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01c901d6019b01c1018d000301be01c1019b013b01de0134014301c900030118013b013b016b01d6016b019b018f011801840003014302480143013401d601c90003019b018f000301fc019b01de01c1 Tj" + "0.00 -8.80 Td" + "#hex:01d601de01c1018f0608000300ac019b01de018f013b0003056b0608000300040134016b013b016b0134000301c10118016b018f0003015d01180184018401c90003015d01c1019b018d000301d601660143000301340184019b01de013b0608 Tj" + "0.00 -8.80 Td" + "#hex:00310118013401660003013401c10143011801d601de01c1014300030118018f013b0003019b0133017d0143013401d6000301de018f013b014301c1000301d601660143000301340184019b01de013b000301d601180181014301c9 Tj" + "0.00 -8.80 Td" + "#hex:056a013b056f000301180134016b013b0003013b0118018d0118015e01430608000300ac019b01de018f013b0003056c0608000300e6019b01de00030134011801840184000301c9016b01fb00030133019b018401d601c90003019b015d Tj" + "0.00 -8.80 Td" + "#hex:0184016b015e016601d6018f016b018f015e0003015d01c1019b018d000301d601660143000301340184019b01de013b000301d6019b000301c901d601c1016b01810143000301c9016b01fb0003013401c10143011801d601de01c1014301c9 Tj" + "0.00 -8.80 Td" + "#hex:019b01c10003019b0133017d0143013401d601c90003019b015d000301fc019b01de01c1000301340166019b016b01340143000301330143018f0143011801d60166000301d601660143000301340184019b01de013b060800030004 Tj" + "0.00 -8.80 Td" + "#hex:015e016b01f50143018f0003013401c10143011801d601de01c101430003019b01c10003019b0133017d0143013401d6000301340118018f060c01d6000301330143000301c901d601c101de013401810003013301fc Tj" + "0.00 -8.80 Td" + "#hex:018d019b01c10143000301d601660118018f0003019b018f014300030133019b018401d6060800030004000301c901d601c101de013401810003013401c10143011801d601de01c101430003018d01de01c901d6 Tj" + "0.00 -8.80 Td" + "#hex:018d0118018101430003011800030027014301fb01d6014301c1016b01d601fc000301c9011801f5016b018f015e000301d6016601c1019b01f60608000300c1016601430003013401c10143011801d601de01c10143 Tj" + "ET" + "q" + "13.20 0.00 0.00 18.00 562.20 754.56 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 10.00 Tf" + "404.64 774.00 Td" + "0.00 -11.00 Td" + "#hex:00b401d6019b01c1018d0003019b015d000300df0143018f015e01430118018f01340143 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "499.27 774.00 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "404.64 760.32 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000304020003002001d001c401b2021301f6014d020b01a001d001c4 Tj" + "ET" + "q" + "/gs1 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 404.64 732.24 cm" + "/Form2 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "404.64 736.56 Td" + "\"1 Act.\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs2 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 440.64 732.24 cm" + "/Form3 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "440.64 736.56 Td" + "\"Sight\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs3 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 476.64 732.24 cm" + "/Form4 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "476.64 736.56 Td" + "\"V,S\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs4 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 512.64 732.24 cm" + "/Form5 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "512.64 736.56 Td" + "\"Conc, 1 min\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "0.00 0.00 0.00 rg" + "0.02 0.00 0.00 0.02 561.60 525.60 cm" + "/Form6 Do" + "Q" + "BT" + "/F2 8.00 Tf" + "224.64 696.24 Td" + "0.00 -8.80 Td" + "#hex:00c8018f01d6016b0184000301d601660143000301c901be01430184018400030143018f013b01c905fc000301f601660143018f000301fc019b01de0003018d01180181014300030118 Tj" + "0.00 -8.80 Td" + "#hex:00200166011801c1016b01c9018d011800030134016601430134018105fc000301fc019b01de000301340118018f000301c1014301be0184011801340143000301d6016601430003018f01de018d0133014301c1 Tj" + "0.00 -8.80 Td" + "#hex:01fc019b01de000301c1019b01840184000301f6016b01d60166000301180003056a056e060800030004013b013b016b01d6016b019b018f01180184018401fc05fc0003018f019b0003018d011801d601d6014301c1 Tj" + "0.00 -8.80 Td" + "#hex:01f60166011801d6000301fc019b01de000301c9011801fc05fc0003018d0118015e016b0134000301d60166011801d6000301f6019b01de0184013b0003013b014301d6014301c1018d016b018f01430003016b015d Tj" + "0.00 -8.80 Td" + "#hex:01fc019b01de0003011801c10143000301d6014301840184016b018f015e000301d601660143000301d601c101de01d601660003016b018f013b016b0134011801d6014301c9000301d60166011801d6000301fc019b01de0003011801c10143 Tj" + "0.00 -8.80 Td" + "#hex:01330143016b018f015e000301d601c101de01d60166015d01de01840608 Tj" + "ET" + "q" + "13.20 0.00 0.00 18.00 382.20 754.56 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 10.00 Tf" + "224.64 774.00 Td" + "0.00 -11.00 Td" + "#hex:004b0184016b0133018f014301c901c9 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "265.83 774.00 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "224.64 760.32 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b900030401000300c101f6014d01c401fe01c20213020b014d020b01a001d001c4 Tj" + "ET" + "q" + "/gs5 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 224.64 732.24 cm" + "/Form2 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "224.64 736.56 Td" + "\"1 Act.\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs6 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 260.64 732.24 cm" + "/Form3 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "260.64 736.56 Td" + "\"Self\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs7 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 296.64 732.24 cm" + "/Form4 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "296.64 736.56 Td" + "\"V\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs8 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 332.64 732.24 cm" + "/Form5 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "332.64 736.56 Td" + "\"1 hr\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "BT" + "/F2 8.00 Tf" + "44.64 696.24 Td" + "0.00 -8.80 Td" + "#hex:00c10166016b01c9000301c901be0143018401840003013401c10143011801d6014301c9000301180003018d0118015e016b01340118018400030184016b018f018100030133014301d601f601430143018f00030118 Tj" + "0.00 -8.80 Td" + "#hex:006e011801c1015e01430003019b01c100030184011801c1015e014301c10003016b018f0118018f016b018d011801d60143000301be01840118018f01d6000301f6016b01d60166016b018f000301c10118018f015e0143 Tj" + "0.00 -8.80 Td" + "#hex:0118018f013b00030118018f019b01d60166014301c1000301be01840118018f01d605fc0003011801d600030118018f01fc0003013b016b01c901d60118018f0134014305fc0003019b018f000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01c90118018d0143000301be01840118018f01430003019b015d0003014301fb016b01c901d60143018f013401430608000300e6019b01de0003018d01de01c901d600030166011801f50143000301c901430143018f Tj" + "0.00 -8.80 Td" + "#hex:019b01c1000301d6019b01de013401660143013b000301d6016601430003013b014301c901d6016b018f011801d6016b019b018f000301be01840118018f01d60003011801d6000301840143011801c901d60003019b018f01340143 Tj" + "0.00 -8.80 Td" + "#hex:01330143015d019b01c1014306080003004a019b01c1000301d6016601430003013b01de01c1011801d6016b019b018f05fc00030118018f01fc0003013401c10143011801d601de01c10143000301340118018f000301c901d6014301be Tj" + "0.00 -8.80 Td" + "#hex:016b018f01d6019b000301d601660143000301d6011801c1015e014301d6000301be01840118018f01d600030118018f013b0003014301fb016b01d60003015d01c1019b018d000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:013b014301c901d6016b018f011801d6016b019b018f000301be01840118018f01d60003013301fc000301de01c9016b018f015e0003056e0003015d0143014301d60003019b015d0003018d019b01f50143018d0143018f01d60608 Tj" + "ET" + "q" + "13.20 0.00 0.00 18.00 202.20 754.56 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 10.00 Tf" + "44.64 774.00 Td" + "0.00 -11.00 Td" + "#hex:00c101c10118018f01c901be019b01c101d6000301f5016b0118000300a901840118018f01d601c9 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "142.46 774.00 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "44.64 760.32 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303ff0003002001d001c401b2021301f6014d020b01a001d001c4 Tj" + "ET" + "q" + "/gs9 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 44.64 732.24 cm" + "/Form2 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "44.64 736.56 Td" + "\"1 Act.\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs10 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 80.64 732.24 cm" + "/Form3 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "80.64 736.56 Td" + "\"10 ft\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs11 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 116.64 732.24 cm" + "/Form4 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "116.64 736.56 Td" + "\"V,S\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs12 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 152.64 732.24 cm" + "/Form5 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "152.64 736.56 Td" + "\"1 Rnd\" Tj" + "ET" + "0.00 0.00 0.00 rg"] + ["0.88 0.88 0.88 RG" + "36.00 18.00 m" + "36.00 774.00 l" + "S" + "216.00 18.00 m" + "216.00 774.00 l" + "S" + "396.00 18.00 m" + "396.00 774.00 l" + "S" + "576.00 18.00 m" + "576.00 774.00 l" + "S" + "36.00 18.00 m" + "576.00 18.00 l" + "S" + "36.00 270.00 m" + "576.00 270.00 l" + "S" + "36.00 522.00 m" + "576.00 522.00 l" + "S" + "36.00 774.00 m" + "576.00 774.00 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 781.20 Td" + "#hex:00a9014d01930178000303fb000304a201f60178022a017801f601fe017804a3 Tj" + "ET" + "BT" + "/F2 10.00 Tf" + "44.64 768.24 Td" + "0.00 -11.00 Td" + "#hex:00b401d6019b01c1018d0003019b015d000300df0143018f015e01430118018f01340143 Tj" + "ET" + "BT" + "/F3 8.00 Tf" + "44.64 756.72 Td" + "0.00 -8.80 Td" + "#hex:01d601180181014301c90003056a0569013b056f00030184016b015e016601d6018f016b018f015e0003013b0118018d0118015e01430003019b018f000301180003015d0118016b01840143013b000301c9011801f5014305fc Tj" + "0.00 -8.80 Td" + "#hex:019b01c10003016601180184015d0003011801c90003018d01de013401660003013b0118018d0118015e01430003019b018f00030118000301c901de01340134014301c901c9015d01de01840003019b018f01430608 Tj" + "0.00 -8.80 Td" + "#hex:00ac019b01de018f013b0003056d0608000300530118016b018401c901d6019b018f014301c9000301c10118016b018f0003013b019b01f6018f0003015d01c1019b018d000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01340184019b01de013b0608000300310118013401660003013401c10143011801d601de01c10143000301de018f013b014301c1000301d601660143000301340184019b01de013b000301d601180181014301c90003056b013b056f Tj" + "0.00 -8.80 Td" + "#hex:0133018401de013b015e0143019b018f016b018f015e0003013b0118018d0118015e01430608000300ac019b01de018f013b0003056e063d056a056906080003004b01de01c901d601c900030118018f013b Tj" + "0.00 -8.80 Td" + "#hex:015d01c1014301430206016b018f015e000301c10118016b018f0003011801c901c90118016b0184000301d6016601430003011801c101430118000301de018f013b014301c1000301d601660143000301340184019b01de013b0608 Tj" + "0.00 -8.80 Td" + "#hex:00c1016601430003011801c1014301180003013301430134019b018d014301c90003013b016b0249013401de018401d6000301d6014301c101c10118016b018f00030118018f013b0003016b01c9 Tj" + "0.00 -8.80 Td" + "#hex:01660143011801f5016b018401fc0003019b013301c9013401de01c10143013b0608000300310118013401660003013401c10143011801d601de01c10143000301d60166014301c10143000301d601180181014301c9 Tj" + "0.00 -8.80 Td" + "#hex:056a013b056f00030134019b0184013b0003013b0118018d0118015e01430608000300ac0118018f015e0143013b000301f60143011801be019b018f0003011801d601d601180134018101c90003016b018f Tj" + "0.00 -8.80 Td" + "#hex:01d6016601430003011801c1014301180003011801c101430003016b018d01be019b01c901c9016b0133018401430608000300c101660143000301f6016b018f013b00030118018f013b000301c10118016b018f Tj" + "0.00 -8.80 Td" + "#hex:0134019b01de018f01d60003011801c900030118000301c9014301f5014301c101430003013b016b01c901d601c10118013401d6016b019b018f0003015d019b01c1000301d601660143000301be01de01c101be019b01c9014301c9 Tj" + "0.00 -8.80 Td" + "#hex:019b015d0003018d0118016b018f01d60118016b018f016b018f015e00030134019b018f01340143018f01d601c1011801d6016b019b018f0003019b018f000301c901be01430184018401c90608 Tj" + "0.00 -8.80 Td" + "#hex:004a016b018f01180184018401fc05fc0003015e01de01c901d601c90003019b015d000301c901d601c1019b018f015e000301f6016b018f013b0003062801c10118018f015e016b018f015e0003015d01c1019b018d0003056b0569 Tj" + "0.00 -8.80 Td" + "#hex:01d6019b0003056e05690003018d016b0184014301c9000301be014301c100030166019b01de01c106290003011801de01d6019b018d011801d6016b013401180184018401fc0003013b016b01c901be014301c101c90143 Tj" + "0.00 -8.80 Td" + "#hex:015d019b015e05fc0003018d016b01c901d601c905fc00030118018f013b000301c9016b018d016b0184011801c1000301be01660143018f019b018d0143018f01180003016b018f000301d6016601430003011801c10143011805fc Tj" + "0.00 -8.80 Td" + "#hex:01f60166014301d60166014301c10003018d01de018f013b0118018f01430003019b01c10003018d0118015e016b0134011801840608 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "141.43 768.24 Td" + "0.00 -11.00 Td" + "#hex:04a201f60178022a017801f601fe017804a3 Tj" + "ET" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "91.01 533.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 54.00 324.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "91.01 281.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 54.00 72.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "91.01 29.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 234.00 576.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "271.01 533.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 234.00 324.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "271.01 281.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 234.00 72.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "271.01 29.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 414.00 576.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "451.01 533.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 414.00 324.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "451.01 281.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 414.00 72.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "451.01 29.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET"] + ["0.88 0.88 0.88 RG" + "36.00 18.00 m" + "36.00 774.00 l" + "S" + "216.00 18.00 m" + "216.00 774.00 l" + "S" + "396.00 18.00 m" + "396.00 774.00 l" + "S" + "576.00 18.00 m" + "576.00 774.00 l" + "S" + "36.00 18.00 m" + "576.00 18.00 l" + "S" + "36.00 270.00 m" + "576.00 270.00 l" + "S" + "36.00 522.00 m" + "576.00 522.00 l" + "S" + "36.00 774.00 m" + "576.00 774.00 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 781.20 Td" + "#hex:00a9014d01930178000303fa Tj" + "ET" + "1.10 w" + "414.72 767.52 m" + "557.28 767.52 l" + "569.52 755.28 l" + "569.52 540.72 l" + "557.28 528.48 l" + "414.72 528.48 l" + "402.48 540.72 l" + "402.48 755.28 l" + "s" + "0.45 w" + "414.72 764.50 m" + "557.28 764.50 l" + "566.50 755.28 l" + "566.50 540.72 l" + "557.28 531.50 l" + "414.72 531.50 l" + "405.50 540.72 l" + "405.50 755.28 l" + "s" + "0.70 w" + "410.04 762.55 m" + "412.63 759.96 l" + "410.04 757.37 l" + "407.45 759.96 l" + "h" + "S" + "561.96 762.55 m" + "564.55 759.96 l" + "561.96 757.37 l" + "559.37 759.96 l" + "h" + "S" + "410.04 538.63 m" + "412.63 536.04 l" + "410.04 533.45 l" + "407.45 536.04 l" + "h" + "S" + "561.96 538.63 m" + "564.55 536.04 l" + "561.96 533.45 l" + "559.37 536.04 l" + "h" + "S" + "1.00 w" + "0.50 w" + "416.16 756.36 m" + "462.96 756.36 l" + "S" + "509.04 756.36 m" + "555.84 756.36 l" + "S" + "0.60 w" + "469.44 759.10 m" + "472.18 756.36 l" + "469.44 753.62 l" + "466.70 756.36 l" + "h" + "f" + "477.72 759.10 m" + "480.46 756.36 l" + "477.72 753.62 l" + "474.98 756.36 l" + "h" + "f" + "486.00 759.10 m" + "488.74 756.36 l" + "486.00 753.62 l" + "483.26 756.36 l" + "h" + "f" + "494.28 759.10 m" + "497.02 756.36 l" + "494.28 753.62 l" + "491.54 756.36 l" + "h" + "S" + "502.56 759.10 m" + "505.30 756.36 l" + "502.56 753.62 l" + "499.82 756.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "432.00 535.32 m" + "479.88 535.32 l" + "S" + "492.12 535.32 m" + "540.00 535.32 l" + "S" + "486.00 537.62 m" + "488.30 535.32 l" + "486.00 533.02 l" + "483.70 535.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "547.20 703.08 m" + "553.32 703.08 l" + "555.84 700.56 l" + "555.84 695.16 l" + "553.32 692.64 l" + "547.20 692.64 l" + "544.68 695.16 l" + "544.68 700.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "547.73 695.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "416.16 748.08 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc000300b401d601de013b013b0143013b Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "410.40 702.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "410.40 686.16 m" + "561.60 686.16 l" + "S" + "0.35 w" + "410.40 683.64 m" + "561.60 683.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "410.40 678.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "457.72 557.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "234.72 767.52 m" + "377.28 767.52 l" + "389.52 755.28 l" + "389.52 540.72 l" + "377.28 528.48 l" + "234.72 528.48 l" + "222.48 540.72 l" + "222.48 755.28 l" + "s" + "0.45 w" + "234.72 764.50 m" + "377.28 764.50 l" + "386.50 755.28 l" + "386.50 540.72 l" + "377.28 531.50 l" + "234.72 531.50 l" + "225.50 540.72 l" + "225.50 755.28 l" + "s" + "0.70 w" + "230.04 762.55 m" + "232.63 759.96 l" + "230.04 757.37 l" + "227.45 759.96 l" + "h" + "S" + "381.96 762.55 m" + "384.55 759.96 l" + "381.96 757.37 l" + "379.37 759.96 l" + "h" + "S" + "230.04 538.63 m" + "232.63 536.04 l" + "230.04 533.45 l" + "227.45 536.04 l" + "h" + "S" + "381.96 538.63 m" + "384.55 536.04 l" + "381.96 533.45 l" + "379.37 536.04 l" + "h" + "S" + "1.00 w" + "0.50 w" + "236.16 756.36 m" + "282.96 756.36 l" + "S" + "329.04 756.36 m" + "375.84 756.36 l" + "S" + "0.60 w" + "289.44 759.10 m" + "292.18 756.36 l" + "289.44 753.62 l" + "286.70 756.36 l" + "h" + "f" + "297.72 759.10 m" + "300.46 756.36 l" + "297.72 753.62 l" + "294.98 756.36 l" + "h" + "f" + "306.00 759.10 m" + "308.74 756.36 l" + "306.00 753.62 l" + "303.26 756.36 l" + "h" + "f" + "314.28 759.10 m" + "317.02 756.36 l" + "314.28 753.62 l" + "311.54 756.36 l" + "h" + "S" + "322.56 759.10 m" + "325.30 756.36 l" + "322.56 753.62 l" + "319.82 756.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "252.00 535.32 m" + "299.88 535.32 l" + "S" + "312.12 535.32 m" + "360.00 535.32 l" + "S" + "306.00 537.62 m" + "308.30 535.32 l" + "306.00 533.02 l" + "303.70 535.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "367.20 703.08 m" + "373.32 703.08 l" + "375.84 700.56 l" + "375.84 695.16 l" + "373.32 692.64 l" + "367.20 692.64 l" + "364.68 695.16 l" + "364.68 700.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "367.73 695.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "236.16 748.08 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc0003006e0143011801d60166014301c1 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "230.40 702.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "230.40 686.16 m" + "381.60 686.16 l" + "S" + "0.35 w" + "230.40 683.64 m" + "381.60 683.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "230.40 678.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "277.72 557.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "54.72 767.52 m" + "197.28 767.52 l" + "209.52 755.28 l" + "209.52 540.72 l" + "197.28 528.48 l" + "54.72 528.48 l" + "42.48 540.72 l" + "42.48 755.28 l" + "s" + "0.45 w" + "54.72 764.50 m" + "197.28 764.50 l" + "206.50 755.28 l" + "206.50 540.72 l" + "197.28 531.50 l" + "54.72 531.50 l" + "45.50 540.72 l" + "45.50 755.28 l" + "s" + "0.70 w" + "50.04 762.55 m" + "52.63 759.96 l" + "50.04 757.37 l" + "47.45 759.96 l" + "h" + "S" + "201.96 762.55 m" + "204.55 759.96 l" + "201.96 757.37 l" + "199.37 759.96 l" + "h" + "S" + "50.04 538.63 m" + "52.63 536.04 l" + "50.04 533.45 l" + "47.45 536.04 l" + "h" + "S" + "201.96 538.63 m" + "204.55 536.04 l" + "201.96 533.45 l" + "199.37 536.04 l" + "h" + "S" + "1.00 w" + "0.50 w" + "56.16 756.36 m" + "102.96 756.36 l" + "S" + "149.04 756.36 m" + "195.84 756.36 l" + "S" + "0.60 w" + "109.44 759.10 m" + "112.18 756.36 l" + "109.44 753.62 l" + "106.70 756.36 l" + "h" + "f" + "117.72 759.10 m" + "120.46 756.36 l" + "117.72 753.62 l" + "114.98 756.36 l" + "h" + "f" + "126.00 759.10 m" + "128.74 756.36 l" + "126.00 753.62 l" + "123.26 756.36 l" + "h" + "f" + "134.28 759.10 m" + "137.02 756.36 l" + "134.28 753.62 l" + "131.54 756.36 l" + "h" + "S" + "142.56 759.10 m" + "145.30 756.36 l" + "142.56 753.62 l" + "139.82 756.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "72.00 535.32 m" + "119.88 535.32 l" + "S" + "132.12 535.32 m" + "180.00 535.32 l" + "S" + "126.00 537.62 m" + "128.30 535.32 l" + "126.00 533.02 l" + "123.70 535.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "187.20 703.08 m" + "193.32 703.08 l" + "195.84 700.56 l" + "195.84 695.16 l" + "193.32 692.64 l" + "187.20 692.64 l" + "184.68 695.16 l" + "184.68 700.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "187.73 695.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "56.16 748.08 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc000300a90118013b013b0143013b Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "50.40 702.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "50.40 686.16 m" + "201.60 686.16 l" + "S" + "0.35 w" + "50.40 683.64 m" + "201.60 683.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "50.40 678.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "97.72 557.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "414.72 515.52 m" + "557.28 515.52 l" + "569.52 503.28 l" + "569.52 288.72 l" + "557.28 276.48 l" + "414.72 276.48 l" + "402.48 288.72 l" + "402.48 503.28 l" + "s" + "0.45 w" + "414.72 512.50 m" + "557.28 512.50 l" + "566.50 503.28 l" + "566.50 288.72 l" + "557.28 279.50 l" + "414.72 279.50 l" + "405.50 288.72 l" + "405.50 503.28 l" + "s" + "0.70 w" + "410.04 510.55 m" + "412.63 507.96 l" + "410.04 505.37 l" + "407.45 507.96 l" + "h" + "S" + "561.96 510.55 m" + "564.55 507.96 l" + "561.96 505.37 l" + "559.37 507.96 l" + "h" + "S" + "410.04 286.63 m" + "412.63 284.04 l" + "410.04 281.45 l" + "407.45 284.04 l" + "h" + "S" + "561.96 286.63 m" + "564.55 284.04 l" + "561.96 281.45 l" + "559.37 284.04 l" + "h" + "S" + "1.00 w" + "0.50 w" + "416.16 504.36 m" + "462.96 504.36 l" + "S" + "509.04 504.36 m" + "555.84 504.36 l" + "S" + "0.60 w" + "469.44 507.10 m" + "472.18 504.36 l" + "469.44 501.62 l" + "466.70 504.36 l" + "h" + "f" + "477.72 507.10 m" + "480.46 504.36 l" + "477.72 501.62 l" + "474.98 504.36 l" + "h" + "f" + "486.00 507.10 m" + "488.74 504.36 l" + "486.00 501.62 l" + "483.26 504.36 l" + "h" + "f" + "494.28 507.10 m" + "497.02 504.36 l" + "494.28 501.62 l" + "491.54 504.36 l" + "h" + "S" + "502.56 507.10 m" + "505.30 504.36 l" + "502.56 501.62 l" + "499.82 504.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "432.00 283.32 m" + "479.88 283.32 l" + "S" + "492.12 283.32 m" + "540.00 283.32 l" + "S" + "486.00 285.62 m" + "488.30 283.32 l" + "486.00 281.02 l" + "483.70 283.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "547.20 451.08 m" + "553.32 451.08 l" + "555.84 448.56 l" + "555.84 443.16 l" + "553.32 440.64 l" + "547.20 440.64 l" + "544.68 443.16 l" + "544.68 448.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "547.73 443.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "416.16 496.08 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc000300b401340118018401430003018d0118016b0184 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "410.40 450.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "410.40 434.16 m" + "561.60 434.16 l" + "S" + "0.35 w" + "410.40 431.64 m" + "561.60 431.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "410.40 426.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "457.72 305.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "234.72 515.52 m" + "377.28 515.52 l" + "389.52 503.28 l" + "389.52 288.72 l" + "377.28 276.48 l" + "234.72 276.48 l" + "222.48 288.72 l" + "222.48 503.28 l" + "s" + "0.45 w" + "234.72 512.50 m" + "377.28 512.50 l" + "386.50 503.28 l" + "386.50 288.72 l" + "377.28 279.50 l" + "234.72 279.50 l" + "225.50 288.72 l" + "225.50 503.28 l" + "s" + "0.70 w" + "230.04 510.55 m" + "232.63 507.96 l" + "230.04 505.37 l" + "227.45 507.96 l" + "h" + "S" + "381.96 510.55 m" + "384.55 507.96 l" + "381.96 505.37 l" + "379.37 507.96 l" + "h" + "S" + "230.04 286.63 m" + "232.63 284.04 l" + "230.04 281.45 l" + "227.45 284.04 l" + "h" + "S" + "381.96 286.63 m" + "384.55 284.04 l" + "381.96 281.45 l" + "379.37 284.04 l" + "h" + "S" + "1.00 w" + "0.50 w" + "236.16 504.36 m" + "282.96 504.36 l" + "S" + "329.04 504.36 m" + "375.84 504.36 l" + "S" + "0.60 w" + "289.44 507.10 m" + "292.18 504.36 l" + "289.44 501.62 l" + "286.70 504.36 l" + "h" + "f" + "297.72 507.10 m" + "300.46 504.36 l" + "297.72 501.62 l" + "294.98 504.36 l" + "h" + "f" + "306.00 507.10 m" + "308.74 504.36 l" + "306.00 501.62 l" + "303.26 504.36 l" + "h" + "f" + "314.28 507.10 m" + "317.02 504.36 l" + "314.28 501.62 l" + "311.54 504.36 l" + "h" + "S" + "322.56 507.10 m" + "325.30 504.36 l" + "322.56 501.62 l" + "319.82 504.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "252.00 283.32 m" + "299.88 283.32 l" + "S" + "312.12 283.32 m" + "360.00 283.32 l" + "S" + "306.00 285.62 m" + "308.30 283.32 l" + "306.00 281.02 l" + "303.70 283.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "367.20 451.08 m" + "373.32 451.08 l" + "375.84 448.56 l" + "375.84 443.16 l" + "373.32 440.64 l" + "367.20 440.64 l" + "364.68 443.16 l" + "364.68 448.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "367.73 443.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "236.16 496.08 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc0003002001660118016b018f000300b40166016b01c101d6 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "230.40 450.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "230.40 434.16 m" + "381.60 434.16 l" + "S" + "0.35 w" + "230.40 431.64 m" + "381.60 431.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "230.40 426.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "277.72 305.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "54.72 515.52 m" + "197.28 515.52 l" + "209.52 503.28 l" + "209.52 288.72 l" + "197.28 276.48 l" + "54.72 276.48 l" + "42.48 288.72 l" + "42.48 503.28 l" + "s" + "0.45 w" + "54.72 512.50 m" + "197.28 512.50 l" + "206.50 503.28 l" + "206.50 288.72 l" + "197.28 279.50 l" + "54.72 279.50 l" + "45.50 288.72 l" + "45.50 503.28 l" + "s" + "0.70 w" + "50.04 510.55 m" + "52.63 507.96 l" + "50.04 505.37 l" + "47.45 507.96 l" + "h" + "S" + "201.96 510.55 m" + "204.55 507.96 l" + "201.96 505.37 l" + "199.37 507.96 l" + "h" + "S" + "50.04 286.63 m" + "52.63 284.04 l" + "50.04 281.45 l" + "47.45 284.04 l" + "h" + "S" + "201.96 286.63 m" + "204.55 284.04 l" + "201.96 281.45 l" + "199.37 284.04 l" + "h" + "S" + "1.00 w" + "0.50 w" + "56.16 504.36 m" + "102.96 504.36 l" + "S" + "149.04 504.36 m" + "195.84 504.36 l" + "S" + "0.60 w" + "109.44 507.10 m" + "112.18 504.36 l" + "109.44 501.62 l" + "106.70 504.36 l" + "h" + "f" + "117.72 507.10 m" + "120.46 504.36 l" + "117.72 501.62 l" + "114.98 504.36 l" + "h" + "f" + "126.00 507.10 m" + "128.74 504.36 l" + "126.00 501.62 l" + "123.26 504.36 l" + "h" + "f" + "134.28 507.10 m" + "137.02 504.36 l" + "134.28 501.62 l" + "131.54 504.36 l" + "h" + "S" + "142.56 507.10 m" + "145.30 504.36 l" + "142.56 501.62 l" + "139.82 504.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "72.00 283.32 m" + "119.88 283.32 l" + "S" + "132.12 283.32 m" + "180.00 283.32 l" + "S" + "126.00 285.62 m" + "128.30 283.32 l" + "126.00 281.02 l" + "123.70 283.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "187.20 451.08 m" + "193.32 451.08 l" + "195.84 448.56 l" + "195.84 443.16 l" + "193.32 440.64 l" + "187.20 440.64 l" + "184.68 443.16 l" + "184.68 448.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "187.73 443.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "56.16 496.08 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc00030053016b013b0143 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "50.40 450.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "50.40 434.16 m" + "201.60 434.16 l" + "S" + "0.35 w" + "50.40 431.64 m" + "201.60 431.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "50.40 426.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "97.72 305.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "414.72 263.52 m" + "557.28 263.52 l" + "569.52 251.28 l" + "569.52 36.72 l" + "557.28 24.48 l" + "414.72 24.48 l" + "402.48 36.72 l" + "402.48 251.28 l" + "s" + "0.45 w" + "414.72 260.50 m" + "557.28 260.50 l" + "566.50 251.28 l" + "566.50 36.72 l" + "557.28 27.50 l" + "414.72 27.50 l" + "405.50 36.72 l" + "405.50 251.28 l" + "s" + "0.70 w" + "410.04 258.55 m" + "412.63 255.96 l" + "410.04 253.37 l" + "407.45 255.96 l" + "h" + "S" + "561.96 258.55 m" + "564.55 255.96 l" + "561.96 253.37 l" + "559.37 255.96 l" + "h" + "S" + "410.04 34.63 m" + "412.63 32.04 l" + "410.04 29.45 l" + "407.45 32.04 l" + "h" + "S" + "561.96 34.63 m" + "564.55 32.04 l" + "561.96 29.45 l" + "559.37 32.04 l" + "h" + "S" + "1.00 w" + "0.50 w" + "416.16 252.36 m" + "462.96 252.36 l" + "S" + "509.04 252.36 m" + "555.84 252.36 l" + "S" + "0.60 w" + "469.44 255.10 m" + "472.18 252.36 l" + "469.44 249.62 l" + "466.70 252.36 l" + "h" + "f" + "477.72 255.10 m" + "480.46 252.36 l" + "477.72 249.62 l" + "474.98 252.36 l" + "h" + "f" + "486.00 255.10 m" + "488.74 252.36 l" + "486.00 249.62 l" + "483.26 252.36 l" + "h" + "f" + "494.28 255.10 m" + "497.02 252.36 l" + "494.28 249.62 l" + "491.54 252.36 l" + "h" + "S" + "502.56 255.10 m" + "505.30 252.36 l" + "502.56 249.62 l" + "499.82 252.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "432.00 31.32 m" + "479.88 31.32 l" + "S" + "492.12 31.32 m" + "540.00 31.32 l" + "S" + "486.00 33.62 m" + "488.30 31.32 l" + "486.00 29.02 l" + "483.70 31.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "547.20 199.08 m" + "553.32 199.08 l" + "555.84 196.56 l" + "555.84 191.16 l" + "553.32 188.64 l" + "547.20 188.64 l" + "544.68 191.16 l" + "544.68 196.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "547.73 191.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "416.16 244.08 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc000300ac016b018f015e0003018d0118016b0184 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "410.40 198.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "410.40 182.16 m" + "561.60 182.16 l" + "S" + "0.35 w" + "410.40 179.64 m" + "561.60 179.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "410.40 174.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "457.72 53.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "234.72 263.52 m" + "377.28 263.52 l" + "389.52 251.28 l" + "389.52 36.72 l" + "377.28 24.48 l" + "234.72 24.48 l" + "222.48 36.72 l" + "222.48 251.28 l" + "s" + "0.45 w" + "234.72 260.50 m" + "377.28 260.50 l" + "386.50 251.28 l" + "386.50 36.72 l" + "377.28 27.50 l" + "234.72 27.50 l" + "225.50 36.72 l" + "225.50 251.28 l" + "s" + "0.70 w" + "230.04 258.55 m" + "232.63 255.96 l" + "230.04 253.37 l" + "227.45 255.96 l" + "h" + "S" + "381.96 258.55 m" + "384.55 255.96 l" + "381.96 253.37 l" + "379.37 255.96 l" + "h" + "S" + "230.04 34.63 m" + "232.63 32.04 l" + "230.04 29.45 l" + "227.45 32.04 l" + "h" + "S" + "381.96 34.63 m" + "384.55 32.04 l" + "381.96 29.45 l" + "379.37 32.04 l" + "h" + "S" + "1.00 w" + "0.50 w" + "236.16 252.36 m" + "282.96 252.36 l" + "S" + "329.04 252.36 m" + "375.84 252.36 l" + "S" + "0.60 w" + "289.44 255.10 m" + "292.18 252.36 l" + "289.44 249.62 l" + "286.70 252.36 l" + "h" + "f" + "297.72 255.10 m" + "300.46 252.36 l" + "297.72 249.62 l" + "294.98 252.36 l" + "h" + "f" + "306.00 255.10 m" + "308.74 252.36 l" + "306.00 249.62 l" + "303.26 252.36 l" + "h" + "f" + "314.28 255.10 m" + "317.02 252.36 l" + "314.28 249.62 l" + "311.54 252.36 l" + "h" + "S" + "322.56 255.10 m" + "325.30 252.36 l" + "322.56 249.62 l" + "319.82 252.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "252.00 31.32 m" + "299.88 31.32 l" + "S" + "312.12 31.32 m" + "360.00 31.32 l" + "S" + "306.00 33.62 m" + "308.30 31.32 l" + "306.00 29.02 l" + "303.70 31.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "367.20 199.08 m" + "373.32 199.08 l" + "375.84 196.56 l" + "375.84 191.16 l" + "373.32 188.64 l" + "367.20 188.64 l" + "364.68 191.16 l" + "364.68 196.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "367.73 191.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "236.16 244.08 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc0003005301180184015d000301be0184011801d60143 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "230.40 198.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "230.40 182.16 m" + "381.60 182.16 l" + "S" + "0.35 w" + "230.40 179.64 m" + "381.60 179.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "230.40 174.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "277.72 53.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "54.72 263.52 m" + "197.28 263.52 l" + "209.52 251.28 l" + "209.52 36.72 l" + "197.28 24.48 l" + "54.72 24.48 l" + "42.48 36.72 l" + "42.48 251.28 l" + "s" + "0.45 w" + "54.72 260.50 m" + "197.28 260.50 l" + "206.50 251.28 l" + "206.50 36.72 l" + "197.28 27.50 l" + "54.72 27.50 l" + "45.50 36.72 l" + "45.50 251.28 l" + "s" + "0.70 w" + "50.04 258.55 m" + "52.63 255.96 l" + "50.04 253.37 l" + "47.45 255.96 l" + "h" + "S" + "201.96 258.55 m" + "204.55 255.96 l" + "201.96 253.37 l" + "199.37 255.96 l" + "h" + "S" + "50.04 34.63 m" + "52.63 32.04 l" + "50.04 29.45 l" + "47.45 32.04 l" + "h" + "S" + "201.96 34.63 m" + "204.55 32.04 l" + "201.96 29.45 l" + "199.37 32.04 l" + "h" + "S" + "1.00 w" + "0.50 w" + "56.16 252.36 m" + "102.96 252.36 l" + "S" + "149.04 252.36 m" + "195.84 252.36 l" + "S" + "0.60 w" + "109.44 255.10 m" + "112.18 252.36 l" + "109.44 249.62 l" + "106.70 252.36 l" + "h" + "f" + "117.72 255.10 m" + "120.46 252.36 l" + "117.72 249.62 l" + "114.98 252.36 l" + "h" + "f" + "126.00 255.10 m" + "128.74 252.36 l" + "126.00 249.62 l" + "123.26 252.36 l" + "h" + "f" + "134.28 255.10 m" + "137.02 252.36 l" + "134.28 249.62 l" + "131.54 252.36 l" + "h" + "S" + "142.56 255.10 m" + "145.30 252.36 l" + "142.56 249.62 l" + "139.82 252.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "72.00 31.32 m" + "119.88 31.32 l" + "S" + "132.12 31.32 m" + "180.00 31.32 l" + "S" + "126.00 33.62 m" + "128.30 31.32 l" + "126.00 29.02 l" + "123.70 31.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "187.20 199.08 m" + "193.32 199.08 l" + "195.84 196.56 l" + "195.84 191.16 l" + "193.32 188.64 l" + "187.20 188.64 l" + "184.68 191.16 l" + "184.68 196.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "187.73 191.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "56.16 244.08 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc0003001f01c10143011801c901d601be0184011801d60143 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "50.40 198.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "50.40 182.16 m" + "201.60 182.16 l" + "S" + "0.35 w" + "50.40 179.64 m" + "201.60 179.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "50.40 174.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "97.72 53.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET"] + ["0.88 0.88 0.88 RG" + "36.00 18.00 m" + "36.00 774.00 l" + "S" + "216.00 18.00 m" + "216.00 774.00 l" + "S" + "396.00 18.00 m" + "396.00 774.00 l" + "S" + "576.00 18.00 m" + "576.00 774.00 l" + "S" + "36.00 18.00 m" + "576.00 18.00 l" + "S" + "36.00 270.00 m" + "576.00 270.00 l" + "S" + "36.00 522.00 m" + "576.00 522.00 l" + "S" + "36.00 774.00 m" + "576.00 774.00 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 781.20 Td" + "#hex:00a9014d01930178000303fa000304a201f60178022a017801f601fe017804a3 Tj" + "ET" + "q" + "144.00 0.00 0.00 144.00 54.00 576.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "91.01 533.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 54.00 324.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "91.01 281.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 54.00 72.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "91.01 29.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 234.00 576.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "271.01 533.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 234.00 324.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "271.01 281.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 234.00 72.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "271.01 29.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 414.00 576.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "451.01 533.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 414.00 324.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "451.01 281.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 414.00 72.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "451.01 29.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET"] + ["0.88 0.88 0.88 RG" + "36.00 18.00 m" + "36.00 774.00 l" + "S" + "216.00 18.00 m" + "216.00 774.00 l" + "S" + "396.00 18.00 m" + "396.00 774.00 l" + "S" + "576.00 18.00 m" + "576.00 774.00 l" + "S" + "36.00 18.00 m" + "576.00 18.00 l" + "S" + "36.00 270.00 m" + "576.00 270.00 l" + "S" + "36.00 522.00 m" + "576.00 522.00 l" + "S" + "36.00 774.00 m" + "576.00 774.00 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 781.20 Td" + "#hex:00a9014d01930178000303fb Tj" + "ET" + "1.10 w" + "414.72 767.52 m" + "557.28 767.52 l" + "569.52 755.28 l" + "569.52 540.72 l" + "557.28 528.48 l" + "414.72 528.48 l" + "402.48 540.72 l" + "402.48 755.28 l" + "s" + "0.45 w" + "414.72 764.50 m" + "557.28 764.50 l" + "566.50 755.28 l" + "566.50 540.72 l" + "557.28 531.50 l" + "414.72 531.50 l" + "405.50 540.72 l" + "405.50 755.28 l" + "s" + "0.70 w" + "410.04 762.55 m" + "412.63 759.96 l" + "410.04 757.37 l" + "407.45 759.96 l" + "h" + "S" + "561.96 762.55 m" + "564.55 759.96 l" + "561.96 757.37 l" + "559.37 759.96 l" + "h" + "S" + "410.04 538.63 m" + "412.63 536.04 l" + "410.04 533.45 l" + "407.45 536.04 l" + "h" + "S" + "561.96 538.63 m" + "564.55 536.04 l" + "561.96 533.45 l" + "559.37 536.04 l" + "h" + "S" + "1.00 w" + "0.50 w" + "416.16 756.36 m" + "462.96 756.36 l" + "S" + "509.04 756.36 m" + "555.84 756.36 l" + "S" + "0.60 w" + "469.44 759.10 m" + "472.18 756.36 l" + "469.44 753.62 l" + "466.70 756.36 l" + "h" + "f" + "477.72 759.10 m" + "480.46 756.36 l" + "477.72 753.62 l" + "474.98 756.36 l" + "h" + "f" + "486.00 759.10 m" + "488.74 756.36 l" + "486.00 753.62 l" + "483.26 756.36 l" + "h" + "f" + "494.28 759.10 m" + "497.02 756.36 l" + "494.28 753.62 l" + "491.54 756.36 l" + "h" + "S" + "502.56 759.10 m" + "505.30 756.36 l" + "502.56 753.62 l" + "499.82 756.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "432.00 535.32 m" + "479.88 535.32 l" + "S" + "492.12 535.32 m" + "540.00 535.32 l" + "S" + "486.00 537.62 m" + "488.30 535.32 l" + "486.00 533.02 l" + "483.70 535.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "547.20 703.08 m" + "553.32 703.08 l" + "555.84 700.56 l" + "555.84 695.16 l" + "553.32 692.64 l" + "547.20 692.64 l" + "544.68 695.16 l" + "544.68 700.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "547.73 695.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "416.16 748.08 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc000300a90184011801d60143 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "410.40 702.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "410.40 686.16 m" + "561.60 686.16 l" + "S" + "0.35 w" + "410.40 683.64 m" + "561.60 683.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "410.40 678.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "457.72 557.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "234.72 767.52 m" + "377.28 767.52 l" + "389.52 755.28 l" + "389.52 540.72 l" + "377.28 528.48 l" + "234.72 528.48 l" + "222.48 540.72 l" + "222.48 755.28 l" + "s" + "0.45 w" + "234.72 764.50 m" + "377.28 764.50 l" + "386.50 755.28 l" + "386.50 540.72 l" + "377.28 531.50 l" + "234.72 531.50 l" + "225.50 540.72 l" + "225.50 755.28 l" + "s" + "0.70 w" + "230.04 762.55 m" + "232.63 759.96 l" + "230.04 757.37 l" + "227.45 759.96 l" + "h" + "S" + "381.96 762.55 m" + "384.55 759.96 l" + "381.96 757.37 l" + "379.37 759.96 l" + "h" + "S" + "230.04 538.63 m" + "232.63 536.04 l" + "230.04 533.45 l" + "227.45 536.04 l" + "h" + "S" + "381.96 538.63 m" + "384.55 536.04 l" + "381.96 533.45 l" + "379.37 536.04 l" + "h" + "S" + "1.00 w" + "0.50 w" + "236.16 756.36 m" + "282.96 756.36 l" + "S" + "329.04 756.36 m" + "375.84 756.36 l" + "S" + "0.60 w" + "289.44 759.10 m" + "292.18 756.36 l" + "289.44 753.62 l" + "286.70 756.36 l" + "h" + "f" + "297.72 759.10 m" + "300.46 756.36 l" + "297.72 753.62 l" + "294.98 756.36 l" + "h" + "f" + "306.00 759.10 m" + "308.74 756.36 l" + "306.00 753.62 l" + "303.26 756.36 l" + "h" + "f" + "314.28 759.10 m" + "317.02 756.36 l" + "314.28 753.62 l" + "311.54 756.36 l" + "h" + "S" + "322.56 759.10 m" + "325.30 756.36 l" + "322.56 753.62 l" + "319.82 756.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "252.00 535.32 m" + "299.88 535.32 l" + "S" + "312.12 535.32 m" + "360.00 535.32 l" + "S" + "306.00 537.62 m" + "308.30 535.32 l" + "306.00 533.02 l" + "303.70 535.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "367.20 703.08 m" + "373.32 703.08 l" + "375.84 700.56 l" + "375.84 695.16 l" + "373.32 692.64 l" + "367.20 692.64 l" + "364.68 695.16 l" + "364.68 700.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "367.73 695.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "236.16 748.08 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc000300b401be0184016b018f01d6 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "230.40 702.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "230.40 686.16 m" + "381.60 686.16 l" + "S" + "0.35 w" + "230.40 683.64 m" + "381.60 683.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "230.40 678.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "277.72 557.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "54.72 767.52 m" + "197.28 767.52 l" + "209.52 755.28 l" + "209.52 540.72 l" + "197.28 528.48 l" + "54.72 528.48 l" + "42.48 540.72 l" + "42.48 755.28 l" + "s" + "0.45 w" + "54.72 764.50 m" + "197.28 764.50 l" + "206.50 755.28 l" + "206.50 540.72 l" + "197.28 531.50 l" + "54.72 531.50 l" + "45.50 540.72 l" + "45.50 755.28 l" + "s" + "0.70 w" + "50.04 762.55 m" + "52.63 759.96 l" + "50.04 757.37 l" + "47.45 759.96 l" + "h" + "S" + "201.96 762.55 m" + "204.55 759.96 l" + "201.96 757.37 l" + "199.37 759.96 l" + "h" + "S" + "50.04 538.63 m" + "52.63 536.04 l" + "50.04 533.45 l" + "47.45 536.04 l" + "h" + "S" + "201.96 538.63 m" + "204.55 536.04 l" + "201.96 533.45 l" + "199.37 536.04 l" + "h" + "S" + "1.00 w" + "0.50 w" + "56.16 756.36 m" + "102.96 756.36 l" + "S" + "149.04 756.36 m" + "195.84 756.36 l" + "S" + "0.60 w" + "109.44 759.10 m" + "112.18 756.36 l" + "109.44 753.62 l" + "106.70 756.36 l" + "h" + "f" + "117.72 759.10 m" + "120.46 756.36 l" + "117.72 753.62 l" + "114.98 756.36 l" + "h" + "f" + "126.00 759.10 m" + "128.74 756.36 l" + "126.00 753.62 l" + "123.26 756.36 l" + "h" + "f" + "134.28 759.10 m" + "137.02 756.36 l" + "134.28 753.62 l" + "131.54 756.36 l" + "h" + "S" + "142.56 759.10 m" + "145.30 756.36 l" + "142.56 753.62 l" + "139.82 756.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "72.00 535.32 m" + "119.88 535.32 l" + "S" + "132.12 535.32 m" + "180.00 535.32 l" + "S" + "126.00 537.62 m" + "128.30 535.32 l" + "126.00 533.02 l" + "123.70 535.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "187.20 703.08 m" + "193.32 703.08 l" + "195.84 700.56 l" + "195.84 695.16 l" + "193.32 692.64 l" + "187.20 692.64 l" + "184.68 695.16 l" + "184.68 700.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "187.73 695.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "56.16 748.08 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc0003002001660118016b018f0003018d0118016b0184 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "50.40 702.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "50.40 686.16 m" + "201.60 686.16 l" + "S" + "0.35 w" + "50.40 683.64 m" + "201.60 683.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "50.40 678.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "97.72 557.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET"] + ["0.88 0.88 0.88 RG" + "36.00 18.00 m" + "36.00 774.00 l" + "S" + "216.00 18.00 m" + "216.00 774.00 l" + "S" + "396.00 18.00 m" + "396.00 774.00 l" + "S" + "576.00 18.00 m" + "576.00 774.00 l" + "S" + "36.00 18.00 m" + "576.00 18.00 l" + "S" + "36.00 270.00 m" + "576.00 270.00 l" + "S" + "36.00 522.00 m" + "576.00 522.00 l" + "S" + "36.00 774.00 m" + "576.00 774.00 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 781.20 Td" + "#hex:00a9014d01930178000303fb000304a201f60178022a017801f601fe017804a3 Tj" + "ET" + "q" + "144.00 0.00 0.00 144.00 54.00 576.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "91.01 533.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 54.00 324.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "91.01 281.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 54.00 72.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "91.01 29.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 234.00 576.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "271.01 533.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 234.00 324.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "271.01 281.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 234.00 72.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "271.01 29.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 414.00 576.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "451.01 533.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 414.00 324.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "451.01 281.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 414.00 72.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "451.01 29.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET"]] diff --git a/test/clj/orcpub/card_geometry_test.clj b/test/clj/orcpub/card_geometry_test.clj new file mode 100644 index 000000000..7188f204f --- /dev/null +++ b/test/clj/orcpub/card_geometry_test.clj @@ -0,0 +1,135 @@ +(ns orcpub.card-geometry-test + "Pins the drawing operators of every card page, so a refactor that moves a card + by a sixteenth of an inch fails here instead of shipping. + + The cards' positions were tuned by hand over several rounds. Nothing else in the + suite would notice them moving: the other card tests assert structure (fonts + embedded once, a site stamp present), not geometry. + + Re-seed after a DELIBERATE card change: CARD_GEOMETRY=seed lein test :only + orcpub.card-geometry-test — then read the diff before committing it." + (:require [clojure.test :refer [deftest is testing]] + [clojure.string :as str] + [clojure.edn :as edn] + [clojure.java.io :as io] + [clojure.pprint :as pprint] + [orcpub.pdf :as pdf] + [orcpub.routes :as routes] + [orcpub.dnd.e5.spells :as spells] + [orcpub.dnd.e5.magic-items :as magic-items]) + (:import (org.apache.pdfbox.pdmodel PDDocument) + (org.apache.pdfbox Loader) + (org.apache.pdfbox.pdfparser PDFStreamParser) + (org.apache.pdfbox.contentstream.operator Operator) + (org.apache.pdfbox.cos COSNumber COSString COSName) + (java.io ByteArrayOutputStream))) + +(def baseline-file "test/card-geometry-baseline.edn") + +(def ^:private card-back-logo "public/image/dmv-mark-black.png") + +(def ^:private page-names + "The 8 pages render-cards produces, in order." + ["spell fronts 1" "spell backs 1" "spell fronts 2" "spell backs 2" + "item fronts 1" "item backs 1" "item fronts 2" "item backs 2"]) + +(defn- render-cards + "Both kinds of card page, through the real routes, reloaded from the saved bytes. + 12 of each: enough to fill one sheet of 9 and spill onto a second." + [] + (let [out (ByteArrayOutputStream.)] + (with-open [doc (PDDocument.)] + (let [fonts (pdf/load-fonts doc) + img (pdf/make-image-loader doc) + known {:wizard (vec (for [k (take 12 (keys spells/spell-map))] + {:key k :class "Wizard"}))}] + (routes/add-spell-cards! doc fonts img known {"Wizard" 15} {"Wizard" 7} + nil false card-back-logo false false) + (routes/add-magic-item-cards! doc fonts img + (vec (take 12 magic-items/magic-items)) + card-back-logo false false)) + (.save doc out)) + (Loader/loadPDF (.toByteArray out)))) + +(defn- show-string + "A drawn string as ASCII. Card text goes through an embedded Type0 font, so its + bytes are 2-byte CIDs, not characters: decoding them gives control bytes that + make the baseline a binary blob to git and kill the diff it exists for. Printable + ASCII prints as itself; anything else goes to hex." + [^COSString cs] + (let [bs (.getBytes cs)] + (if (every? #(<= 32 % 126) (map #(bit-and % 0xff) bs)) + (pr-str (String. bs "US-ASCII")) + (str "#hex:" (apply str (map #(format "%02x" (bit-and % 0xff)) bs)))))) + +(defn- token-str [t] + (cond + ;; 2dp of a point is 1/3600 inch: finer than any hand tweak, coarse enough that + ;; re-associating the same arithmetic does not flap the baseline. + (instance? COSNumber t) (format "%.2f" (.floatValue ^COSNumber t)) + (instance? COSString t) (show-string t) + (instance? COSName t) (str "/" (.getName ^COSName t)) + :else (str t))) + +(defn page-ops + "Every operator on `page` as \"arg arg op\", in order: the page's geometry as + PDFBox will write it." + [page] + (loop [[t & more] (seq (.parse (PDFStreamParser. page))), args [], out []] + (if (nil? t) + out + (if (instance? Operator t) + (recur more [] (conj out (str/join " " (conj args (.getName ^Operator t))))) + (recur more (conj args (token-str t)) out))))) + +(defn- current [] + (with-open [doc (render-cards)] + (mapv #(page-ops (.getPage doc %)) (range (.getNumberOfPages doc))))) + +(defn- first-diffs + "Up to `n` [index was now] where two op sequences disagree." + [was now n] + (->> (map vector (range) (concat was (repeat nil)) (concat now (repeat nil))) + (take (max (count was) (count now))) + (remove (fn [[_ a b]] (= a b))) + (take n) + (mapv (fn [[i a b]] [i a b])))) + +(deftest card-geometry-is-unchanged + (let [pages (current) + recorded (when (.exists (io/file baseline-file)) + (edn/read-string (slurp baseline-file)))] + (if (= "seed" (System/getenv "CARD_GEOMETRY")) + (do (spit baseline-file + (with-out-str + (println ";; Written by orcpub.card-geometry-test. Drawing operators per card page.") + (println ";; A diff here is a card moving. Read it before committing it.") + (binding [*print-length* nil *print-level* nil] + (pprint/pprint pages)))) + (println "seeded" (reduce + (map count pages)) "operators across" + (count pages) "pages to" baseline-file)) + (do + (is (some? recorded) (str baseline-file " is missing: run CARD_GEOMETRY=seed")) + (when recorded + (testing "the same pages, in the same order" + (is (= (count recorded) (count pages)))) + ;; `now`, not `is`: a binding named `is` shadows clojure.test/is and the + ;; assertion below silently becomes a vector lookup. + (doseq [[i was now nm] (map vector (range) recorded pages page-names)] + (testing (str "page " i " (" nm ")") + (when-not (= was now) + (println (format "%nPage %d (%s): %d ops recorded, %d now" + i nm (count was) (count now))) + (doseq [[j a b] (first-diffs was now 12)] + (println (format " op %4d was %-34s now %s" j (pr-str a) (pr-str b))))) + (is (= was now) + "a card moved; re-seed only if the move was intended")))))))) + +(deftest the-pages-are-what-we-think-they-are + (testing "the baseline covers real output, not an empty document" + (let [pages (current)] + (is (= 8 (count pages))) + (is (every? pos? (map count pages))) + (testing "and fronts carry more than backs, so the names are not swapped" + (is (> (count (nth pages 0)) (count (nth pages 1)))) + (is (> (count (nth pages 4)) (count (nth pages 5)))))))) From 3b34113f9bd69016bedc57e2b387fd9a3f75be27 Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Tue, 13 Oct 2026 18:22:05 +0000 Subject: [PATCH 04/40] Cover the ornament matrix and the printer-friendly modes The first baseline covered one flourish family in colour. draw-flourish! is a case over three families crossed with five rarity ranks, and bw? / bw-faded? are separate code paths, so it pinned roughly a ninth of the card drawing. Two changes: - Route sheets are now pinned per printing mode: 24 pages, 14,930 operators. The committed colour baseline is re-seeded, so the added coverage shows as a diff. - A second set drives print-items directly across flourish family x printing mode: 9 pages, 12,084 operators. Items are chosen BY NAME per rarity, not by position, and the-matrix-covers-what-it-claims asserts each one still has the rarity the matrix assumes. A data edit that changes a rarity now fails and names the item instead of quietly shrinking coverage. It already caught one: I had recorded Cube of Force as :very-rare and it is :rare. The matrix covers all five ranks plus :varies, both draw-charge-track! branches (36 charges prints a number, 3 prints circles, either side of tickable-charges), the attunement badge, and a name long enough to force the shrink. Proven to discriminate, not merely to go red. Each perturbation was reverted: - :nested rank-2 inset +0.003in -> exactly the 3 nested pages; all 6 brackets and diamonds pages stayed green. - draw-halo-text offset 0.009 -> 0.010 -> exactly the 2 bw spell FRONT pages. Not bw-faded, which takes draw-text; not colour; not backs; not item cards. Also fixed: the charge-path assertion compared a fixed order ([true false]) when order is irrelevant. It is a set over @#'pdf/tickable-charges now, so it tracks the constant rather than a hardcoded 12. The two baselines are 693 KiB over 27,016 lines. Generated, ASCII and line-diffable on purpose: the file is only useful if a reviewer can read what moved. Still unpinned, and needed before anything shared moves: spellbook.clj. It is a separate surface in points with its own re-implemented primitives, and it consumes split-lines, string-width and draw-svg-icon!, so an extraction can break it with all 33 pages here green. lein test 708/5367 green, lein lint 0/0. --- test/card-geometry-baseline.edn | 10847 ++++++++++++++++++++ test/card-ornament-baseline.edn | 12086 +++++++++++++++++++++++ test/clj/orcpub/card_geometry_test.clj | 141 +- 3 files changed, 23061 insertions(+), 13 deletions(-) create mode 100644 test/card-ornament-baseline.edn diff --git a/test/card-geometry-baseline.edn b/test/card-geometry-baseline.edn index 1bf7a068a..64ecfd7a2 100644 --- a/test/card-geometry-baseline.edn +++ b/test/card-geometry-baseline.edn @@ -4082,4 +4082,10851 @@ "451.01 29.52 Td" "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" "0.00 0.00 0.00 rg" + "ET"] + ["0.88 0.88 0.88 RG" + "36.00 18.00 m" + "36.00 774.00 l" + "S" + "216.00 18.00 m" + "216.00 774.00 l" + "S" + "396.00 18.00 m" + "396.00 774.00 l" + "S" + "576.00 18.00 m" + "576.00 774.00 l" + "S" + "36.00 18.00 m" + "576.00 18.00 l" + "S" + "36.00 270.00 m" + "576.00 270.00 l" + "S" + "36.00 522.00 m" + "576.00 522.00 l" + "S" + "36.00 774.00 m" + "576.00 774.00 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 781.20 Td" + "#hex:00a9014d01930178000303fa Tj" + "ET" + "BT" + "/F2 8.00 Tf" + "404.64 696.24 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de0003016b018d01be01840118018f01d6000301180003018d014301c901c90118015e0143000301f6016b01d60166016b018f00030118018f0003019b0133017d0143013401d60003016b018f Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f015e014305fc000301180003018d014301c901c90118015e0143000301d60166011801d60003016b01c9000301de01d601d6014301c10143013b000301f601660143018f00030118000301d601c1016b015e015e014301c1 Tj" + "0.00 -8.80 Td" + "#hex:0134019b018f013b016b01d6016b019b018f0003016b01c90003018d014301d60608000300200166019b019b01c9014300030118018f0003019b0133017d0143013401d6000301d60166011801d6000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:01340118018f000301c90143014300030118018f013b000301d60166011801d60003016b01c9018f060c01d6000301330143016b018f015e000301f6019b01c1018f0003019b01c100030134011801c101c1016b0143013b0003013301fc Tj" + "0.00 -8.80 Td" + "#hex:0118018f019b01d60166014301c10003013401c10143011801d601de01c101430608000300c101660143018f000301c901be014301180181000301d6016601430003018d014301c901c90118015e014305fc Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b013401660003018d01de01c901d60003013301430003056b056e000301f6019b01c1013b01c90003019b01c100030184014301c901c905fc000301d60166019b01de015e01660003016b01d6000301340118018f Tj" + "0.00 -8.80 Td" + "#hex:013301430003013b01430184016b01f5014301c10143013b0003019b01f5014301c10003011801c900030184019b018f015e0003011801c90003056a05690003018d016b018f01de01d6014301c90608 Tj" + "0.00 -8.80 Td" + "#hex:004a016b018f01180184018401fc05fc0003013b014301d6014301c1018d016b018f0143000301d60166014300030134016b01c1013401de018d01c901d60118018f01340143000301d60166011801d6000301f6016b01840184 Tj" + "0.00 -8.80 Td" + "#hex:01d601c1016b015e015e014301c1000301d601660143000301c901be014301840184000301d6019b0003013b01430184016b01f5014301c1000301fc019b01de01c10003018d014301c901c90118015e01430608 Tj" + "0.00 -8.80 Td" + "#hex:00e001660143018f000301d60166011801d600030134016b01c1013401de018d01c901d60118018f013401430003019b0134013401de01c101c905fc000301180003018d0118015e016b013401180184 Tj" + "0.00 -8.80 Td" + "#hex:018d019b01de01d601660003011801be01be0143011801c101c90003019b018f000301d6016601430003019b0133017d0143013401d600030118018f013b000301c101430134016b01d6014301c9000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:018d014301c901c90118015e01430003016b018f000301fc019b01de01c1000301f5019b016b0134014300030118018f013b0003011801d6000301d601660143000301c90118018d0143000301f5019b018401de018d0143 Tj" + "0.00 -8.80 Td" + "#hex:01fc019b01de000301c901be019b01810143060800030058015d000301d6016601430003019b0133017d0143013401d6000301fc019b01de000301340166019b01c9014300030166011801c9000301180003018d019b01de01d60166 Tj" + "0.00 -8.80 Td" + "#hex:019b01c1000301c9019b018d014301d60166016b018f015e000301d60166011801d600030184019b019b018101c900030184016b01810143000301180003018d019b01de01d6016600030628015d019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:014301fb0118018d01be0184014305fc000301d6016601430003018d019b01de01d601660003019b015d00030118000301c901d6011801d601de0143062905fc000301d6016601430003018d0118015e016b013401180184 Tj" + "0.00 -8.80 Td" + "#hex:018d019b01de01d601660003011801be01be0143011801c101c9000301d60166014301c10143000301c9019b000301d60166011801d6000301d601660143000301f6019b01c1013b01c90003011801be01be0143011801c1 Tj" + "0.00 -8.80 Td" + "#hex:01d6019b00030134019b018d01430003015d01c1019b018d000301d6016601430003019b0133017d0143013401d6060c01c90003018d019b01de01d601660608000300e001660143018f000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:0134011801c901d6000301d60166016b01c9000301c901be01430184018405fc000301fc019b01de000301340118018f00030166011801f50143000301d601660143000301c901be01430184018400030143018f013b00030118025e014301c1 Tj" + "0.00 -8.80 Td" + "#hex:016b01d60003013b01430184016b01f5014301c101c90003016b01d601c90003018d014301c901c90118015e014305fc0003019b01c10003016b01d6000301340118018f000301c10143018d0118016b018f00030118018f013b Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "404.64 734.40 Td" + "0.00 -8.80 Td" + "#hex:0004000301fe01c2014d01b901b90003016801a0020b000301d001920003019b01d001c401780231016901d001c201680003014d01c40170000301b2014d0170017800030170021301fe020b0003022b01d001f6020b019b0003014d020b000301b90178014d01fe020b Tj" + "0.00 -8.80 Td" + "#hex:03fa03f90003019301f304760003022b019b01a00169019b0003020b019b0178000301fe01f3017801b901b90003016901d001c401fe021301c2017801fe Tj" + "ET" + "q" + "13.20 0.00 0.00 18.00 562.20 754.56 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 10.00 Tf" + "404.64 774.00 Td" + "0.00 -11.00 Td" + "#hex:00780118015e016b013400030078019b01de01d60166 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "467.46 774.00 Td" + "0.00 -11.00 Td" + "#hex:000304a201f601a0020b0213014d01b904a3 Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "404.64 760.32 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303fb0003005801b901b9021301fe01a001d001c4 Tj" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 404.64 732.24 cm" + "/Form2 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "403.99 735.91 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "403.99 736.56 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "403.99 737.21 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "404.64 735.91 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "404.64 737.21 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "405.29 735.91 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "405.29 736.56 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "405.29 737.21 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "404.64 736.56 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 440.64 732.24 cm" + "/Form3 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "439.99 735.91 Td" + "\"30 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "439.99 736.56 Td" + "\"30 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "439.99 737.21 Td" + "\"30 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "440.64 735.91 Td" + "\"30 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "440.64 737.21 Td" + "\"30 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "441.29 735.91 Td" + "\"30 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "441.29 736.56 Td" + "\"30 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "441.29 737.21 Td" + "\"30 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "440.64 736.56 Td" + "\"30 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 476.64 732.24 cm" + "/Form4 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "475.99 735.91 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "475.99 736.56 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "475.99 737.21 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "476.64 735.91 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "476.64 737.21 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "477.29 735.91 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "477.29 736.56 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "477.29 737.21 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "476.64 736.56 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 512.64 732.24 cm" + "/Form5 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "511.99 735.91 Td" + "\"Until dispelled\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "511.99 736.56 Td" + "\"Until dispelled\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "511.99 737.21 Td" + "\"Until dispelled\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "512.64 735.91 Td" + "\"Until dispelled\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "512.64 737.21 Td" + "\"Until dispelled\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "513.29 735.91 Td" + "\"Until dispelled\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "513.29 736.56 Td" + "\"Until dispelled\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "513.29 737.21 Td" + "\"Until dispelled\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "512.64 736.56 Td" + "\"Until dispelled\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.02 0.00 0.00 0.02 561.60 525.60 cm" + "/Form6 Do" + "Q" + "BT" + "/F2 8.00 Tf" + "224.64 696.24 Td" + "0.00 -8.80 Td" + "#hex:001f01fc00030134011801c901d6016b018f015e0003015e0143018d0640016b018f01840118016b013b000301c901d6016b0134018101c905fc000301c1019b01840184016b018f015e0003013b01c10118015e019b018f Tj" + "0.00 -8.80 Td" + "#hex:0133019b018f014301c905fc00030184011801fc016b018f015e0003019b01de01d60003019b01c1018f011801d6014300030134011801c1013b01c905fc0003019b01c100030143018d01be0184019b01fc016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:01c9019b018d01430003019b01d60166014301c10003013b016b01f5016b018f016b018f015e000301d6019b019b018405fc000301fc019b01de000301c1014301340143016b01f5014300030118018f0003019b018d0143018f Tj" + "0.00 -8.80 Td" + "#hex:015d01c1019b018d00030118018f0003019b01d60166014301c101f6019b01c10184013b018401fc00030143018f01d6016b01d601fc000301180133019b01de01d6000301d601660143000301c1014301c901de018401d601c9 Tj" + "0.00 -8.80 Td" + "#hex:019b015d00030118000301c901be01430134016b025b013400030134019b01de01c101c901430003019b015d00030118013401d6016b019b018f000301d60166011801d6000301fc019b01de000301be01840118018f000301d6019b Tj" + "0.00 -8.80 Td" + "#hex:01d6011801810143000301f6016b01d60166016b018f000301d6016601430003018f014301fb01d60003056c05690003018d016b018f01de01d6014301c90608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c90003015d01c1019b018d000301d6016601430003015d019b01840184019b01f6016b018f015e000301be019b01c901c9016b0133018401430003019b018d0143018f01c905fb000305f8 Tj" + "0.00 -8.80 Td" + "#hex:00e001430118018405fc0003015d019b01c10003015e019b019b013b000301c1014301c901de018401d601c9000305f8000300e0019b014305fc0003015d019b01c1000301330118013b000301c1014301c901de018401d601c9000305f8 Tj" + "0.00 -8.80 Td" + "#hex:00e001430118018400030118018f013b000301f6019b014305fc0003015d019b01c100030133019b01d601660003015e019b019b013b00030118018f013b000301330118013b000301c1014301c901de018401d601c9000305f8 Tj" + "0.00 -8.80 Td" + "#hex:007a019b01d60166016b018f015e05fc0003015d019b01c1000301c1014301c901de018401d601c9000301d60166011801d60003011801c10143018f060c01d60003014301c901be01430134016b01180184018401fc0003015e019b019b013b Tj" + "0.00 -8.80 Td" + "#hex:019b01c1000301330118013b000300c101660143000301c901be0143018401840003013b019b014301c9018f060c01d6000301d60118018101430003016b018f01d6019b0003011801340134019b01de018f01d600030118018f01fc Tj" + "0.00 -8.80 Td" + "#hex:01be019b01c901c9016b01330184014300030134016b01c1013401de018d01c901d60118018f0134014301c9000301d60166011801d60003018d016b015e016601d60003013401660118018f015e0143000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:019b01de01d60134019b018d014305fc000301c901de013401660003011801c9000301d60166014300030134011801c901d6016b018f015e0003019b015d00030118013b013b016b01d6016b019b018f01180184 Tj" + "0.00 -8.80 Td" + "#hex:01c901be01430184018401c90003019b01c1000301d60166014300030184019b01c901c90003019b01c10003015e0118016b018f0003019b015d0003011800030134019b018d01be0118018f016b019b018f060800030058015d000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:0134011801c901d6000301d601660143000301c901be014301840184000301d601f6019b0003019b01c10003018d019b01c10143000301d6016b018d014301c9000301330143015d019b01c10143 Tj" + "0.00 -8.80 Td" + "#hex:0134019b018d01be0184014301d6016b018f015e000301fc019b01de01c10003018f014301fb01d600030184019b018f015e000301c1014301c901d605fc000301d60166014301c101430003016b01c900030118 Tj" + "0.00 -8.80 Td" + "#hex:013401de018d01de0184011801d6016b01f501430003056b056e000301be014301c101340143018f01d60003013401660118018f013401430003015d019b01c10003014301180134016600030134011801c901d6016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:0118025e014301c1000301d6016601430003025b01c101c901d6000301d60166011801d6000301fc019b01de0003015e014301d600030118000301c10118018f013b019b018d000301c101430118013b016b018f015e0608 Tj" + "0.00 -8.80 Td" + "#hex:00c1016601430003004b00780003018d01180181014301c9000301d60166016b01c9000301c1019b018401840003016b018f000301c90143013401c1014301d60608 Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "224.64 734.40 Td" + "0.00 -8.80 Td" + "#hex:00b401f30178016901a0014d01b901b90231000301c2014d01f601b601780170000301fe020b01a0016901b601fe04760003016801d001c4017801fe0476000301d001f6000301fe01a001c201a001b9014d01f60003020b01d001b6017801c401fe Tj" + "0.00 -8.80 Td" + "#hex:022b01d001f6020b019b0003014d020b000301b90178014d01fe020b000303fb03fe0003019301f3 Tj" + "ET" + "q" + "13.20 0.00 0.00 18.00 382.20 754.56 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 10.00 Tf" + "224.64 774.00 Td" + "0.00 -11.00 Td" + "#hex:000401de015e01de01c101fc Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "259.93 774.00 Td" + "0.00 -11.00 Td" + "#hex:000304a201f601a0020b0213014d01b904a3 Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "224.64 760.32 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303fb0003002701a0022a01a001c4014d020b01a001d001c4 Tj" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 224.64 732.24 cm" + "/Form2 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "223.99 735.91 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "223.99 736.56 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "223.99 737.21 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "224.64 735.91 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "224.64 737.21 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "225.29 735.91 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "225.29 736.56 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "225.29 737.21 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "224.64 736.56 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 260.64 732.24 cm" + "/Form3 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "259.99 735.91 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "259.99 736.56 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "259.99 737.21 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "260.64 735.91 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "260.64 737.21 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "261.29 735.91 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "261.29 736.56 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "261.29 737.21 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "260.64 736.56 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 296.64 732.24 cm" + "/Form4 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "295.99 735.91 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "295.99 736.56 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "295.99 737.21 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "296.64 735.91 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "296.64 737.21 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "297.29 735.91 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "297.29 736.56 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "297.29 737.21 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "296.64 736.56 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 332.64 732.24 cm" + "/Form5 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "331.99 735.91 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "331.99 736.56 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "331.99 737.21 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "332.64 735.91 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "332.64 737.21 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "333.29 735.91 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "333.29 736.56 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "333.29 737.21 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "332.64 736.56 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F2 8.00 Tf" + "44.64 696.24 Td" + "0.00 -8.80 Td" + "#hex:0004000301f6011801f501430003019b015d000301d6016601de018f013b014301c1019b01de01c90003015d019b01c101340143000301c901f60143014301be01c90003019b01de01d60003015d01c1019b018d Tj" + "0.00 -8.80 Td" + "#hex:01fc019b01de0608000300310118013401660003013401c10143011801d601de01c101430003016b018f000301180003056a056e0640015d019b019b01d60003013401de01330143 Tj" + "0.00 -8.80 Td" + "#hex:019b01c1016b015e016b018f011801d6016b018f015e0003015d01c1019b018d000301fc019b01de0003018d01de01c901d60003018d01180181014300030118 Tj" + "0.00 -8.80 Td" + "#hex:0020019b018f01c901d6016b01d601de01d6016b019b018f000301c9011801f5016b018f015e000301d6016601c1019b01f6060800030086018f000301180003015d0118016b01840143013b000301c9011801f5014305fc00030118 Tj" + "0.00 -8.80 Td" + "#hex:013401c10143011801d601de01c10143000301d601180181014301c90003056b013b0571000301d6016601de018f013b014301c10003013b0118018d0118015e014300030118018f013b0003016b01c9 Tj" + "0.00 -8.80 Td" + "#hex:01be01de01c901660143013b0003056a05690003015d0143014301d60003011801f6011801fc0003015d01c1019b018d000301fc019b01de060800030086018f00030118000301c901de01340134014301c901c9015d01de0184 Tj" + "0.00 -8.80 Td" + "#hex:01c9011801f5014305fc000301d6016601430003013401c10143011801d601de01c10143000301d601180181014301c90003016601180184015d0003011801c90003018d01de013401660003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:0118018f013b0003016b01c9018f060c01d6000301be01de01c901660143013b060800030058018f00030118013b013b016b01d6016b019b018f05fc000301de018f01c90143013401de01c10143013b Tj" + "0.00 -8.80 Td" + "#hex:019b0133017d0143013401d601c9000301d60166011801d60003011801c1014300030134019b018d01be0184014301d60143018401fc000301f6016b01d60166016b018f000301d6016601430003011801c1014301180003019b015d Tj" + "0.00 -8.80 Td" + "#hex:014302480143013401d60003011801c101430003011801de01d6019b018d011801d6016b013401180184018401fc000301be01de01c901660143013b0003056a05690003015d0143014301d60003011801f6011801fc Tj" + "0.00 -8.80 Td" + "#hex:015d01c1019b018d000301fc019b01de0003013301fc000301d601660143000301c901be014301840184060c01c90003014302480143013401d605fc00030118018f013b000301d601660143000301c901be014301840184 Tj" + "0.00 -8.80 Td" + "#hex:0143018d016b01d601c900030118000301d6016601de018f013b014301c1019b01de01c900030133019b019b018d0003011801de013b016b0133018401430003019b01de01d6000301d6019b0003056c05690569 Tj" + "0.00 -8.80 Td" + "#hex:015d0143014301d606080003000401d600030053016b015e0166014301c10003006e014301f50143018401c90608000300e001660143018f000301fc019b01de00030134011801c901d6000301d60166016b01c9 Tj" + "0.00 -8.80 Td" + "#hex:01c901be014301840184000301de01c9016b018f015e00030118000301c901be014301840184000301c90184019b01d60003019b015d0003056b018f013b00030184014301f5014301840003019b01c100030166016b015e0166014301c105fc Tj" + "0.00 -8.80 Td" + "#hex:01d6016601430003013b0118018d0118015e01430003016b018f013401c10143011801c9014301c90003013301fc0003056a013b05710003015d019b01c100030143011801340166000301c90184019b01d600030184014301f501430184 Tj" + "0.00 -8.80 Td" + "#hex:01180133019b01f501430003056a01c901d60608 Tj" + "ET" + "q" + "13.20 0.00 0.00 18.00 202.20 754.56 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 10.00 Tf" + "44.64 774.00 Td" + "0.00 -11.00 Td" + "#hex:00c1016601de018f013b014301c101f6011801f50143 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "110.66 774.00 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "44.64 760.32 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303fa00030031022a01d00169014d020b01a001d001c4 Tj" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 44.64 732.24 cm" + "/Form2 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "43.99 735.91 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "43.99 736.56 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "43.99 737.21 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "44.64 735.91 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "44.64 737.21 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "45.29 735.91 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "45.29 736.56 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "45.29 737.21 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "44.64 736.56 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 80.64 732.24 cm" + "/Form3 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "79.99 735.91 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "79.99 736.56 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "79.99 737.21 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "80.64 735.91 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "80.64 737.21 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "81.29 735.91 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "81.29 736.56 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "81.29 737.21 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "80.64 736.56 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 116.64 732.24 cm" + "/Form4 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "115.99 735.91 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "115.99 736.56 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "115.99 737.21 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "116.64 735.91 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "116.64 737.21 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "117.29 735.91 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "117.29 736.56 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "117.29 737.21 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "116.64 736.56 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 152.64 732.24 cm" + "/Form5 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "151.99 735.91 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "151.99 736.56 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "151.99 737.21 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "152.64 735.91 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "152.64 737.21 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "153.29 735.91 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "153.29 736.56 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "153.29 737.21 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "152.64 736.56 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F2 8.00 Tf" + "404.64 444.24 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de000301d601430184014301be019b01c101d6000301fc019b01de01c101c901430184015d0003015d01c1019b018d000301fc019b01de01c10003013401de01c101c10143018f01d6 Tj" + "0.00 -8.80 Td" + "#hex:0184019b0134011801d6016b019b018f000301d6019b00030118018f01fc0003019b01d60166014301c1000301c901be019b01d6000301f6016b01d60166016b018f000301c10118018f015e01430608000300e6019b01de Tj" + "0.00 -8.80 Td" + "#hex:011801c101c1016b01f501430003011801d60003014301fb0118013401d6018401fc000301d601660143000301c901be019b01d60003013b014301c9016b01c10143013b06080003005801d6000301340118018f00030133014300030118 Tj" + "0.00 -8.80 Td" + "#hex:01be0184011801340143000301fc019b01de000301340118018f000301c90143014305fc0003019b018f0143000301fc019b01de000301340118018f000301f5016b01c901de01180184016b0206014305fc0003019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:019b018f0143000301fc019b01de000301340118018f0003013b014301c9013401c1016b013301430003013301fc000301c901d6011801d6016b018f015e0003013b016b01c901d60118018f0134014300030118018f013b Tj" + "0.00 -8.80 Td" + "#hex:013b016b01c10143013401d6016b019b018f05fc000301c901de013401660003011801c900030655056b056905690003015d0143014301d6000301c901d601c10118016b015e016601d6 Tj" + "0.00 -8.80 Td" + "#hex:013b019b01f6018f01f6011801c1013b06560003019b01c10003065501de01be01f6011801c1013b000301d6019b000301d6016601430003018f019b01c101d6016601f6014301c901d60003011801d600030118 Tj" + "0.00 -8.80 Td" + "#hex:056d056e0640013b0143015e01c10143014300030118018f015e0184014305fc0003056c056905690003015d0143014301d606080656000300e6019b01de000301340118018f0003013301c1016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:01180184019b018f015e0003019b0133017d0143013401d601c90003011801c900030184019b018f015e0003011801c9000301d601660143016b01c1000301f60143016b015e016601d60003013b019b014301c9018f060c01d6 Tj" + "0.00 -8.80 Td" + "#hex:014301fb013401430143013b000301f60166011801d6000301fc019b01de000301340118018f00030134011801c101c101fc0608000300e6019b01de000301340118018f00030118018401c9019b0003013301c1016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:019b018f0143000301f6016b01840184016b018f015e0003013401c10143011801d601de01c101430003019b015d000301fc019b01de01c1000301c9016b020601430003019b01c1000301c9018d011801840184014301c1 Tj" + "0.00 -8.80 Td" + "#hex:01f60166019b0003016b01c900030134011801c101c101fc016b018f015e0003015e0143011801c1000301de01be000301d6019b0003016b01d601c900030134011801c101c101fc016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:0134011801be01180134016b01d601fc0608000300c1016601430003013401c10143011801d601de01c101430003018d01de01c901d6000301330143000301f6016b01d60166016b018f0003056e0003015d0143014301d60003019b015d Tj" + "0.00 -8.80 Td" + "#hex:01fc019b01de000301f601660143018f000301fc019b01de00030134011801c901d6000301d60166016b01c9000301c901be014301840184060800030058015d000301fc019b01de000301f6019b01de0184013b Tj" + "0.00 -8.80 Td" + "#hex:011801c101c1016b01f501430003016b018f00030118000301be018401180134014300030118018401c101430118013b01fc0003019b0134013401de01be016b0143013b0003013301fc00030118018f0003019b0133017d0143013401d6 Tj" + "0.00 -8.80 Td" + "#hex:019b01c1000301180003013401c10143011801d601de01c1014305fc000301fc019b01de00030118018f013b00030118018f01fc0003013401c10143011801d601de01c10143000301d601c1011801f501430184016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:01f6016b01d60166000301fc019b01de00030143011801340166000301d60118018101430003056d013b056f0003015d019b01c1013401430003013b0118018d0118015e014305fc00030118018f013b000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01c901be0143018401840003015d0118016b018401c9000301d6019b000301d601430184014301be019b01c101d6000301fc019b01de0608 Tj" + "ET" + "q" + "13.20 0.00 0.00 18.00 562.20 502.56 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 10.00 Tf" + "404.64 522.00 Td" + "0.00 -11.00 Td" + "#hex:0027016b018d0143018f01c9016b019b018f00030027019b019b01c1 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "483.21 522.00 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "404.64 508.32 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303fd0003002001d001c401b2021301f6014d020b01a001d001c4 Tj" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 404.64 480.24 cm" + "/Form2 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "403.99 483.91 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "403.99 484.56 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "403.99 485.21 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "404.64 483.91 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "404.64 485.21 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "405.29 483.91 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "405.29 484.56 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "405.29 485.21 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "404.64 484.56 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 440.64 480.24 cm" + "/Form3 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "439.99 483.91 Td" + "\"500 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "439.99 484.56 Td" + "\"500 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "439.99 485.21 Td" + "\"500 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "440.64 483.91 Td" + "\"500 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "440.64 485.21 Td" + "\"500 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "441.29 483.91 Td" + "\"500 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "441.29 484.56 Td" + "\"500 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "441.29 485.21 Td" + "\"500 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "440.64 484.56 Td" + "\"500 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 476.64 480.24 cm" + "/Form4 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "475.99 483.91 Td" + "\"V\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "475.99 484.56 Td" + "\"V\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "475.99 485.21 Td" + "\"V\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "476.64 483.91 Td" + "\"V\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "476.64 485.21 Td" + "\"V\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "477.29 483.91 Td" + "\"V\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "477.29 484.56 Td" + "\"V\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "477.29 485.21 Td" + "\"V\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "476.64 484.56 Td" + "\"V\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 512.64 480.24 cm" + "/Form5 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "511.99 483.91 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "511.99 484.56 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "511.99 485.21 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "512.64 483.91 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "512.64 485.21 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "513.29 483.91 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "513.29 484.56 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "513.29 485.21 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "512.64 484.56 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F2 8.00 Tf" + "224.64 444.24 Td" + "0.00 -8.80 Td" + "#hex:00040003056a05690640015d019b019b01d6064001c10118013b016b01de01c90003016b018d018d019b0133016b018401430003013b019b018d01430003019b015d0003015d019b01c101340143 Tj" + "0.00 -8.80 Td" + "#hex:01c901be01c1016b018f015e01c90003016b018f01d6019b0003014301fb016b01c901d60143018f013401430003011801c1019b01de018f013b00030118018f013b000301180133019b01f50143000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:0118018f013b000301c10143018d0118016b018f01c9000301c901d6011801d6016b019b018f011801c101fc0003015d019b01c1000301d6016601430003013b01de01c1011801d6016b019b018f0608000300c101660143 Tj" + "0.00 -8.80 Td" + "#hex:01c901be01430184018400030143018f013b01c90003016b015d000301fc019b01de000301840143011801f501430003016b01d601c90003011801c10143011806080003007a016b018f01430003013401c10143011801d601de01c1014301c9 Tj" + "0.00 -8.80 Td" + "#hex:019b015d000300780143013b016b01de018d000301c9016b020601430003019b01c1000301c9018d011801840184014301c1000301340118018f0003025b01d60003016b018f01c9016b013b0143000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:013b019b018d0143000301f6016b01d60166000301fc019b01de0608000300c101660143000301c901be0143018401840003015d0118016b018401c90003016b015d0003016b01d601c90003011801c101430118 Tj" + "0.00 -8.80 Td" + "#hex:016b018f0134018401de013b014301c90003011800030184011801c1015e014301c10003013401c10143011801d601de01c101430003019b01c10003018d019b01c10143000301d601660118018f0003018f016b018f0143 Tj" + "0.00 -8.80 Td" + "#hex:013401c10143011801d601de01c1014301c906080003002001c10143011801d601de01c1014301c900030118018f013b0003019b0133017d0143013401d601c9000301f6016b01d60166016b018f000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:013b019b018d0143000301f601660143018f000301fc019b01de00030134011801c901d6000301d60166016b01c9000301c901be014301840184000301340118018f0003018d019b01f50143 Tj" + "0.00 -8.80 Td" + "#hex:01d6016601c1019b01de015e01660003016b01d60003015d01c101430143018401fc060800030004018401840003019b01d60166014301c10003013401c10143011801d601de01c1014301c900030118018f013b Tj" + "0.00 -8.80 Td" + "#hex:019b0133017d0143013401d601c90003011801c1014300030133011801c101c10143013b0003015d01c1019b018d000301be011801c901c9016b018f015e000301d6016601c1019b01de015e01660003016b01d60608 Tj" + "0.00 -8.80 Td" + "#hex:00b401be01430184018401c900030118018f013b0003019b01d60166014301c10003018d0118015e016b0134011801840003014302480143013401d601c9000301340118018f060c01d60003014301fb01d60143018f013b Tj" + "0.00 -8.80 Td" + "#hex:01d6016601c1019b01de015e0166000301d6016601430003013b019b018d01430003019b01c100030133014300030134011801c901d6000301d6016601c1019b01de015e01660003016b01d60608000300c101660143 Tj" + "0.00 -8.80 Td" + "#hex:011801d6018d019b01c901be0166014301c101430003016b018f01c9016b013b0143000301d601660143000301c901be0118013401430003016b01c900030134019b018d015d019b01c101d60118013301840143 Tj" + "0.00 -8.80 Td" + "#hex:0118018f013b0003013b01c101fc05fc000301c10143015e011801c1013b0184014301c901c90003019b015d000301d601660143000301f60143011801d60166014301c10003019b01de01d601c9016b013b01430608 Tj" + "0.00 -8.80 Td" + "#hex:00c8018f01d6016b0184000301d601660143000301c901be01430184018400030143018f013b01c905fc000301fc019b01de000301340118018f00030134019b018d018d0118018f013b000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:016b018f01d6014301c1016b019b01c1000301d6019b0003013301430134019b018d01430003013b016b018d018401fc00030184016b01d60003019b01c10003013b011801c101810608000300c1016601430003013b019b018d0143 Tj" + "0.00 -8.80 Td" + "#hex:016b01c90003019b01be011801c001de01430003015d01c1019b018d000301d6016601430003019b01de01d601c9016b013b014305fc0003019b015d00030118018f01fc00030134019b0184019b01c1000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014305fc0003013301de01d60003016b01d60003016b01c9000301d601c10118018f01c901be011801c10143018f01d60003015d01c1019b018d000301d6016601430003016b018f01c9016b013b01430608 Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "224.64 482.40 Td" + "0.00 -8.80 Td" + "#hex:0004000301fe01c2014d01b901b90003016901f6023101fe020b014d01b9000301680178014d0170 Tj" + "ET" + "q" + "13.20 0.00 0.00 18.00 382.20 502.56 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 10.00 Tf" + "224.64 522.00 Td" + "0.00 -11.00 Td" + "#hex:00c1016b018f01fc0003005301de01d6 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "266.75 522.00 Td" + "0.00 -11.00 Td" + "#hex:000304a201f601a0020b0213014d01b904a3 Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "224.64 508.32 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303fc00030031022a01d00169014d020b01a001d001c4 Tj" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 224.64 480.24 cm" + "/Form2 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "223.99 483.91 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "223.99 484.56 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "223.99 485.21 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "224.64 483.91 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "224.64 485.21 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "225.29 483.91 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "225.29 484.56 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "225.29 485.21 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "224.64 484.56 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 260.64 480.24 cm" + "/Form3 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "259.99 483.91 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "259.99 484.56 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "259.99 485.21 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "260.64 483.91 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "260.64 485.21 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "261.29 483.91 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "261.29 484.56 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "261.29 485.21 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "260.64 484.56 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 296.64 480.24 cm" + "/Form4 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "295.99 483.91 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "295.99 484.56 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "295.99 485.21 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "296.64 483.91 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "296.64 485.21 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "297.29 483.91 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "297.29 484.56 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "297.29 485.21 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "296.64 484.56 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 332.64 480.24 cm" + "/Form5 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "331.99 483.91 Td" + "\"8 hrs\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "331.99 484.56 Td" + "\"8 hrs\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "331.99 485.21 Td" + "\"8 hrs\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "332.64 483.91 Td" + "\"8 hrs\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "332.64 485.21 Td" + "\"8 hrs\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "333.29 483.91 Td" + "\"8 hrs\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "333.29 484.56 Td" + "\"8 hrs\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "333.29 485.21 Td" + "\"8 hrs\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "332.64 484.56 Td" + "\"8 hrs\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F2 8.00 Tf" + "44.64 444.24 Td" + "0.00 -8.80 Td" + "#hex:00c10166016b01c9000301c901be0143018401840003013401c10143011801d6014301c900030118018f000301de018f013b01430118013b000301c9014301c101f50118018f01d60608000300200166019b019b01c9014300030118 Tj" + "0.00 -8.80 Td" + "#hex:01be016b018401430003019b015d00030133019b018f014301c90003019b01c10003011800030134019b01c101be01c901430003019b015d00030118000300780143013b016b01de018d0003019b01c1000300b4018d011801840184 Tj" + "0.00 -8.80 Td" + "#hex:016601de018d0118018f019b016b013b000301f6016b01d60166016b018f000301c10118018f015e01430608000300e6019b01de01c1000301c901be0143018401840003016b018d013301de014301c9000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01d6011801c1015e014301d6000301f6016b01d60166000301180003015d019b01de01840003018d016b018d016b013401c101fc0003019b015d00030184016b015d014305fc000301c10118016b01c9016b018f015e0003016b01d60003011801c9 Tj" + "0.00 -8.80 Td" + "#hex:0118018f000301de018f013b01430118013b0003013401c10143011801d601de01c101430608000300c101660143000301d6011801c1015e014301d60003013301430134019b018d014301c900030118 Tj" + "0.00 -8.80 Td" + "#hex:01c9018101430184014301d6019b018f0003016b015d000301fc019b01de000301340166019b01c9014300030133019b018f014301c90003019b01c10003011800030206019b018d0133016b01430003016b015d000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:01340166019b01c901430003011800030134019b01c101be01c901430003062801d6016601430003004b007800030166011801c9000301d6016601430003013401c10143011801d601de01c10143060c01c9 Tj" + "0.00 -8.80 Td" + "#hex:015e0118018d0143000301c901d6011801d6016b01c901d6016b013401c90629060800030086018f000301430118013401660003019b015d000301fc019b01de01c1000301d601de01c1018f01c905fc000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:01340118018f000301de01c901430003011800030133019b018f01de01c900030118013401d6016b019b018f000301d6019b0003018d0143018f01d601180184018401fc00030134019b018d018d0118018f013b Tj" + "0.00 -8.80 Td" + "#hex:0118018f01fc0003013401c10143011801d601de01c10143000301fc019b01de0003018d0118013b0143000301f6016b01d60166000301d60166016b01c9000301c901be0143018401840003016b015d000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:013401c10143011801d601de01c101430003016b01c9000301f6016b01d60166016b018f0003056f05690003015d0143014301d60003019b015d000301fc019b01de00030628016b015d000301fc019b01de00030134019b018f01d601c1019b0184 Tj" + "0.00 -8.80 Td" + "#hex:018d01de018401d6016b01be018401430003013401c10143011801d601de01c1014301c905fc000301fc019b01de000301340118018f00030134019b018d018d0118018f013b00030118018f01fc0003019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:0118018401840003019b015d000301d601660143018d0003011801d6000301d601660143000301c90118018d0143000301d6016b018d014305fc0003016b01c901c901de016b018f015e000301d601660143000301c90118018d0143 Tj" + "0.00 -8.80 Td" + "#hex:0134019b018d018d0118018f013b000301d6019b000301430118013401660003019b018f014306290608000300e6019b01de0003013b01430134016b013b0143000301f60166011801d600030118013401d6016b019b018f Tj" + "0.00 -8.80 Td" + "#hex:01d6016601430003013401c10143011801d601de01c10143000301f6016b01840184000301d601180181014300030118018f013b000301f60166014301c101430003016b01d6000301f6016b018401840003018d019b01f50143 Tj" + "0.00 -8.80 Td" + "#hex:013b01de01c1016b018f015e0003016b01d601c90003018f014301fb01d6000301d601de01c1018f05fc0003019b01c1000301fc019b01de000301340118018f0003016b01c901c901de0143000301180003015e0143018f014301c101180184 Tj" + "0.00 -8.80 Td" + "#hex:0134019b018d018d0118018f013b05fc000301c901de013401660003011801c9000301d6019b0003015e01de011801c1013b00030118000301be011801c101d6016b013401de0184011801c1 Tj" + "0.00 -8.80 Td" + "#hex:013401660118018d0133014301c10003019b01c100030134019b01c101c1016b013b019b01c1060800030058015d000301fc019b01de0003016b01c901c901de01430003018f019b Tj" + "0.00 -8.80 Td" + "#hex:0134019b018d018d0118018f013b01c905fc000301d6016601430003013401c10143011801d601de01c101430003019b018f018401fc0003013b0143015d0143018f013b01c90003016b01d601c901430184015d Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "44.64 482.40 Td" + "0.00 -8.80 Td" + "#hex:00040003017001f601d001f3000301d001920003016801b901d001d0017004760003014d000301f301a0017801690178000301d001920003027f017801fe019b04760003014d01c401700003014d000301f301a001c40169019b000301d001920003016801d001c40178 Tj" + "0.00 -8.80 Td" + "#hex:0170021301fe020b Tj" + "ET" + "q" + "13.20 0.00 0.00 18.00 202.20 502.56 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 10.00 Tf" + "44.64 522.00 Td" + "0.00 -11.00 Td" + "#hex:0004018f016b018d011801d601430003002701430118013b Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "112.15 522.00 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "44.64 508.32 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303fc0003007a0178016901f601d001c2014d01c401690231 Tj" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 44.64 480.24 cm" + "/Form2 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "43.99 483.91 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "43.99 484.56 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "43.99 485.21 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "44.64 483.91 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "44.64 485.21 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "45.29 483.91 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "45.29 484.56 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "45.29 485.21 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "44.64 484.56 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 80.64 480.24 cm" + "/Form3 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "79.99 483.91 Td" + "\"10 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "79.99 484.56 Td" + "\"10 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "79.99 485.21 Td" + "\"10 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "80.64 483.91 Td" + "\"10 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "80.64 485.21 Td" + "\"10 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "81.29 483.91 Td" + "\"10 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "81.29 484.56 Td" + "\"10 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "81.29 485.21 Td" + "\"10 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "80.64 484.56 Td" + "\"10 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 116.64 480.24 cm" + "/Form4 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "115.99 483.91 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "115.99 484.56 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "115.99 485.21 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "116.64 483.91 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "116.64 485.21 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "117.29 483.91 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "117.29 484.56 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "117.29 485.21 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "116.64 484.56 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 152.64 480.24 cm" + "/Form5 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "151.99 483.91 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "151.99 484.56 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "151.99 485.21 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "152.64 483.91 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "152.64 485.21 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "153.29 483.91 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "153.29 484.56 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "153.29 485.21 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "152.64 484.56 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.02 0.00 0.00 0.02 201.60 273.60 cm" + "/Form6 Do" + "Q" + "BT" + "/F2 8.00 Tf" + "404.64 192.24 Td" + "0.00 -8.80 Td" + "#hex:00200166019b019b01c9014300030118018f0003011801c1014301180003019b015d000301d6014301c101c10118016b018f0003018f019b00030184011801c1015e014301c1000301d601660118018f0003056d0569 Tj" + "0.00 -8.80 Td" + "#hex:015d0143014301d60003019b018f00030118000301c9016b013b0143000301f6016b01d60166016b018f000301c10118018f015e01430608000300e6019b01de000301340118018f000301c1014301c90166011801be0143 Tj" + "0.00 -8.80 Td" + "#hex:013b016b01c101d605fc000301c90118018f013b05fc0003019b01c1000301340184011801fc0003016b018f000301d6016601430003011801c1014301180003016b018f00030118018f01fc0003018d0118018f018f014301c1 Tj" + "0.00 -8.80 Td" + "#hex:01fc019b01de000301340166019b019b01c901430003015d019b01c1000301d6016601430003013b01de01c1011801d6016b019b018f0608000300e6019b01de000301340118018f000301c10118016b01c901430003019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:0184019b01f6014301c1000301d6016601430003011801c101430118060c01c9000301430184014301f5011801d6016b019b018f05fc0003013401c10143011801d601430003019b01c10003025b018401840003016b018f00030118 Tj" + "0.00 -8.80 Td" + "#hex:01d601c10143018f0134016605fc0003014301c10143013401d60003019b01c10003025d011801d601d60143018f00030118000301f601180184018405fc0003019b01c10003015d019b01c1018d00030118000301be016b01840184011801c10608 Tj" + "0.00 -8.80 Td" + "#hex:00c1016601430003014301fb01d60143018f01d60003019b015d00030118018f01fc000301c901de013401660003013401660118018f015e014301c9000301340118018f060c01d60003014301fb013401430143013b Tj" + "0.00 -8.80 Td" + "#hex:016601180184015d000301d6016601430003011801c101430118060c01c900030184011801c1015e014301c901d60003013b016b018d0143018f01c9016b019b018f0608000300b4019b05fc0003016b015d000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:011802480143013401d6000301180003056d05690640015d019b019b01d6000301c901c001de011801c1014305fc000301fc019b01de000301340118018f0003013401c10143011801d6014300030118000301be016b01840184011801c1 Tj" + "0.00 -8.80 Td" + "#hex:01de01be000301d6019b0003056b05690003015d0143014301d600030166016b015e016605fc000301c10118016b01c901430003019b01c100030184019b01f6014301c1000301d601660143000301c901c001de011801c10143060c01c9 Tj" + "0.00 -8.80 Td" + "#hex:01430184014301f5011801d6016b019b018f0003013301fc000301de01be000301d6019b0003056b05690003015d0143014301d605fc0003013b016b015e00030118000301d601c10143018f01340166000301de01be000301d6019b0003056b0569 Tj" + "0.00 -8.80 Td" + "#hex:015d0143014301d60003013b0143014301be05fc00030118018f013b000301c9019b0003019b018f06080003005801d6000301d601180181014301c90003056a05690003018d016b018f01de01d6014301c90003015d019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:01d60166014301c901430003013401660118018f015e014301c9000301d6019b00030134019b018d01be0184014301d6014306080003000401d6000301d60166014300030143018f013b0003019b015d0003014301f5014301c101fc Tj" + "0.00 -8.80 Td" + "#hex:056a05690003018d016b018f01de01d6014301c9000301fc019b01de000301c901be0143018f013b00030134019b018f01340143018f01d601c1011801d6016b018f015e0003019b018f000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01c901be01430184018405fc000301fc019b01de000301340118018f000301340166019b019b01c90143000301180003018f014301f60003011801c1014301180003019b015d000301d6014301c101c10118016b018f000301d6019b Tj" + "0.00 -8.80 Td" + "#hex:011802480143013401d606080003001f01430134011801de01c90143000301d601660143000301d6014301c101c10118016b018f060c01c9000301d601c10118018f01c9015d019b01c1018d011801d6016b019b018f Tj" + "0.00 -8.80 Td" + "#hex:019b0134013401de01c101c9000301c90184019b01f6018401fc05fc0003013401c10143011801d601de01c1014301c90003016b018f000301d6016601430003011801c101430118000301340118018f060c01d6 Tj" + "0.00 -8.80 Td" + "#hex:01de01c901de01180184018401fc000301330143000301d601c1011801be01be0143013b0003019b01c10003016b018f017d01de01c10143013b0003013301fc000301d6016601430003015e01c1019b01de018f013b060c01c9 Tj" + "0.00 -8.80 Td" + "#hex:018d019b01f50143018d0143018f01d60608000300c10166016b01c9000301c901be014301840184000301340118018f060c01d60003018d0118018f016b01be01de0184011801d601430003018f011801d601de01c101180184 Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "404.64 230.40 Td" + "0.00 -8.80 Td" + "#hex:000401c4000301a001f601d001c40003016801b9014d017001780003014d01c401700003014d000301fe01c2014d01b901b900030168014d01930003016901d001c4020b014d01a001c401a001c401930003014d000301c201a00230020b021301f60178 Tj" + "0.00 -8.80 Td" + "#hex:01d00192000301fe01d001a001b901fe04b6016901b9014d02310476000301b901d0014d01c204760003014d01c40170000301fe014d01c40170 Tj" + "ET" + "q" + "13.20 0.00 0.00 18.00 562.20 250.56 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 10.00 Tf" + "404.64 270.00 Td" + "0.00 -11.00 Td" + "#hex:0078019b01f5014300030031011801c101d60166 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "459.65 270.00 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "404.64 256.32 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303ff000300c101f6014d01c401fe01c20213020b014d020b01a001d001c4 Tj" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 404.64 228.24 cm" + "/Form2 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "403.99 231.91 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "403.99 232.56 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "403.99 233.21 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "404.64 231.91 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "404.64 233.21 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "405.29 231.91 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "405.29 232.56 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "405.29 233.21 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "404.64 232.56 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 440.64 228.24 cm" + "/Form3 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "439.99 231.91 Td" + "\"120 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "439.99 232.56 Td" + "\"120 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "439.99 233.21 Td" + "\"120 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "440.64 231.91 Td" + "\"120 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "440.64 233.21 Td" + "\"120 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "441.29 231.91 Td" + "\"120 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "441.29 232.56 Td" + "\"120 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "441.29 233.21 Td" + "\"120 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "440.64 232.56 Td" + "\"120 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 476.64 228.24 cm" + "/Form4 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "475.99 231.91 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "475.99 232.56 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "475.99 233.21 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "476.64 231.91 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "476.64 233.21 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "477.29 231.91 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "477.29 232.56 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "477.29 233.21 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "476.64 232.56 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 512.64 228.24 cm" + "/Form5 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "511.99 231.91 Td" + "\"Conc, 2 hrs\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "511.99 232.56 Td" + "\"Conc, 2 hrs\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "511.99 233.21 Td" + "\"Conc, 2 hrs\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "512.64 231.91 Td" + "\"Conc, 2 hrs\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "512.64 233.21 Td" + "\"Conc, 2 hrs\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "513.29 231.91 Td" + "\"Conc, 2 hrs\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "513.29 232.56 Td" + "\"Conc, 2 hrs\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "513.29 233.21 Td" + "\"Conc, 2 hrs\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "512.64 232.56 Td" + "\"Conc, 2 hrs\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.02 0.00 0.00 0.02 561.60 21.60 cm" + "/Form6 Do" + "Q" + "BT" + "/F2 8.00 Tf" + "224.64 192.24 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de0003016b018d013301de0143000301180003013401c10143011801d601de01c10143000301fc019b01de000301d6019b01de01340166000301f6016b01d60166000301be019b01c9016b01d6016b01f50143 Tj" + "0.00 -8.80 Td" + "#hex:0143018f014301c1015e01fc000301d6019b000301de018f013b019b000301180003013b01430133016b0184016b01d6011801d6016b018f015e0003014302480143013401d60608000300e6019b01de000301340118018f Tj" + "0.00 -8.80 Td" + "#hex:01c10143013b01de01340143000301d601660143000301d6011801c1015e014301d6060c01c90003014301fb0166011801de01c901d6016b019b018f00030184014301f5014301840003013301fc0003019b018f014305fc0003019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:0143018f013b0003019b018f01430003019b015d000301d6016601430003015d019b01840184019b01f6016b018f015e0003014302480143013401d601c90003019b018f000301d601660143000301d6011801c1015e014301d605fb000305f8 Tj" + "0.00 -8.80 Td" + "#hex:0086018f01430003014302480143013401d6000301d60166011801d6000301340166011801c1018d0143013b0003019b01c1000301be014301d601c1016b025b0143013b000301d601660143000301d6011801c1015e014301d6 Tj" + "0.00 -8.80 Td" + "#hex:05f800030086018f01430003013401de01c101c9014305fc0003016b018f0134018401de013b016b018f015e000301d601660143000301d6011801c1015e014301d6060c01c90003011801d601d601de018f0143018d0143018f01d6 Tj" + "0.00 -8.80 Td" + "#hex:01d6019b000301180003013401de01c101c90143013b0003018d0118015e016b01340003016b01d60143018d000305f800030004018f01fc000301c10143013b01de013401d6016b019b018f000301d6019b0003019b018f0143 Tj" + "0.00 -8.80 Td" + "#hex:019b015d000301d601660143000301d6011801c1015e014301d6060c01c9000301180133016b0184016b01d601fc000301c90134019b01c1014301c9000305f800030086018f01430003014302480143013401d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10143013b01de0134016b018f015e000301d601660143000301d6011801c1015e014301d6060c01c900030166016b01d6000301be019b016b018f01d60003018d011801fb016b018d01de018d Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "224.64 230.40 Td" + "0.00 -8.80 Td" + "#hex:002701a0014d01c201d001c4017000030170021301fe020b0003022b01d001f6020b019b0003014d020b000301b90178014d01fe020b000303fa03f903f90003019301f304760003022b019b01a00169019b0003020b019b0178000301fe01f3017801b901b9 Tj" + "0.00 -8.80 Td" + "#hex:016901d001c401fe021301c2017801fe Tj" + "ET" + "q" + "13.20 0.00 0.00 18.00 382.20 250.56 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 10.00 Tf" + "224.64 270.00 Td" + "0.00 -11.00 Td" + "#hex:004b01c10143011801d6014301c1000300ac014301c901d6019b01c1011801d6016b019b018f Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "319.16 270.00 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "224.64 256.32 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303fe00030004016801b2021301f6014d020b01a001d001c4 Tj" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 224.64 228.24 cm" + "/Form2 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "223.99 231.91 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "223.99 232.56 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "223.99 233.21 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "224.64 231.91 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "224.64 233.21 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "225.29 231.91 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "225.29 232.56 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "225.29 233.21 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "224.64 232.56 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 260.64 228.24 cm" + "/Form3 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "259.99 231.91 Td" + "\"Touch\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "259.99 232.56 Td" + "\"Touch\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "259.99 233.21 Td" + "\"Touch\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "260.64 231.91 Td" + "\"Touch\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "260.64 233.21 Td" + "\"Touch\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "261.29 231.91 Td" + "\"Touch\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "261.29 232.56 Td" + "\"Touch\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "261.29 233.21 Td" + "\"Touch\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "260.64 232.56 Td" + "\"Touch\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 296.64 228.24 cm" + "/Form4 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "295.99 231.91 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "295.99 232.56 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "295.99 233.21 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "296.64 231.91 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "296.64 233.21 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "297.29 231.91 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "297.29 232.56 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "297.29 233.21 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "296.64 232.56 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 332.64 228.24 cm" + "/Form5 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "331.99 231.91 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "331.99 232.56 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "331.99 233.21 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "332.64 231.91 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "332.64 233.21 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "333.29 231.91 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "333.29 232.56 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "333.29 233.21 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "332.64 232.56 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F2 8.00 Tf" + "44.64 192.24 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de000301be01de01840184000301f6016b01c901be01c90003019b015d000301c901660118013b019b01f60003018d011801d6014301c1016b011801840003015d01c1019b018d000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:00b401660118013b019b01f6015d014301840184000301d6019b0003013401c10143011801d60143000301180003018f019b018f0184016b01f5016b018f015e0003019b0133017d0143013401d60003019b015d Tj" + "0.00 -8.80 Td" + "#hex:01f50143015e014301d601180133018401430003018d011801d601d6014301c1000301f6016b01d60166016b018f000301c10118018f015e014305fb000301c9019b025e0003015e019b019b013b01c905fc Tj" + "0.00 -8.80 Td" + "#hex:01c1019b01be014305fc000301f6019b019b013b05fc0003019b01c1000301c9019b018d014301d60166016b018f015e000301c9016b018d016b0184011801c10608000300e6019b01de000301340118018f00030118018401c9019b Tj" + "0.00 -8.80 Td" + "#hex:01de01c90143000301d60166016b01c9000301c901be014301840184000301d6019b0003013401c10143011801d601430003018d016b018f014301c1011801840003019b0133017d0143013401d601c9000301c901de013401660003011801c9 Tj" + "0.00 -8.80 Td" + "#hex:01c901d6019b018f014305fc0003013401c101fc01c901d60118018405fc0003019b01c10003018d014301d6011801840608000300c1016601430003019b0133017d0143013401d60003013401c10143011801d60143013b Tj" + "0.00 -8.80 Td" + "#hex:018d01de01c901d60003013301430003018f019b00030184011801c1015e014301c1000301d601660118018f000301180003056e06400003015d019b019b01d60003013401de0133014305fc00030118018f013b000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:019b0133017d0143013401d60003018d01de01c901d60003013301430003019b015d000301180003015d019b01c1018d00030118018f013b0003018d011801d6014301c1016b01180184000301d60166011801d6000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:0166011801f50143000301c901430143018f000301330143015d019b01c101430608000300c1016601430003013b01de01c1011801d6016b019b018f0003013b014301be0143018f013b01c90003019b018f000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:019b0133017d0143013401d6060c01c90003018d011801d6014301c1016b01180184060800030058015d000301d6016601430003019b0133017d0143013401d60003016b01c900030134019b018d01be019b01c90143013b0003019b015d Tj" + "0.00 -8.80 Td" + "#hex:018d01de018401d6016b01be018401430003018d011801d6014301c1016b0118018401c905fc000301de01c90143000301d601660143000301c90166019b01c101d6014301c901d60003013b01de01c1011801d6016b019b018f0608 Tj" + "0.00 -8.80 Td" + "#hex:0078011801d6014301c1016b011801840003002701de01c1011801d6016b019b018f000300df0143015e014301d601180133018401430003018d011801d601d6014301c10003056a0003013b011801fc Tj" + "0.00 -8.80 Td" + "#hex:00b401d6019b018f01430003019b01c10003013401c101fc01c901d6011801840003056a056b00030166019b01de01c101c9000300a901c101430134016b019b01de01c90003018d014301d60118018401c90003056a Tj" + "0.00 -8.80 Td" + "#hex:0166019b01de01c10003004b0143018d01c90003056a05690003018d016b018f01de01d6014301c900030004013b0118018d0118018f01d6016b018f01430003019b01c10003018d016b01d6016601c101180184 Tj" + "0.00 -8.80 Td" + "#hex:056a0003018d016b018f01de01d60143000300c801c9016b018f015e00030118018f01fc0003018d011801d6014301c1016b011801840003013401c10143011801d60143013b0003013301fc000301d60166016b01c9 Tj" + "0.00 -8.80 Td" + "#hex:01c901be0143018401840003011801c900030118018f019b01d60166014301c1000301c901be014301840184060c01c90003018d011801d6014301c1016b0118018400030134019b018d01be019b018f0143018f01d6 Tj" + "0.00 -8.80 Td" + "#hex:0134011801de01c9014301c9000301d60166011801d6000301c901be014301840184000301d6019b0003015d0118016b018406080003000401d600030053016b015e0166014301c10003006e014301f50143018401c90608 Tj" + "0.00 -8.80 Td" + "#hex:00e001660143018f000301fc019b01de00030134011801c901d6000301d60166016b01c9000301c901be014301840184000301de01c9016b018f015e00030118000301c901be014301840184000301c90184019b01d60003019b015d Tj" + "0.00 -8.80 Td" + "#hex:056f01d6016600030184014301f5014301840003019b01c100030166016b015e0166014301c105fc000301d6016601430003013401de013301430003016b018f013401c10143011801c9014301c90003013301fc0003056e0003015d0143014301d6 Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "44.64 230.40 Td" + "0.00 -8.80 Td" + "#hex:00040003020b01a001c40231000301f301a0017801690178000301d00192000301c2014d020b020b017801f6000301d001920003020b019b0178000301fe014d01c201780003020b023101f30178000301d001920003020b019b0178000301a0020b017801c20003023101d00213 Tj" + "0.00 -8.80 Td" + "#hex:01f301b9014d01c40003020b01d00003016901f60178014d020b0178 Tj" + "ET" + "q" + "13.20 0.00 0.00 18.00 202.20 250.56 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 10.00 Tf" + "44.64 270.00 Td" + "0.00 -11.00 Td" + "#hex:002001c10143011801d6016b019b018f Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "86.17 270.00 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "44.64 256.32 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303fe0003005801b901b9021301fe01a001d001c4 Tj" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 44.64 228.24 cm" + "/Form2 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "43.99 231.91 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "43.99 232.56 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "43.99 233.21 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "44.64 231.91 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "44.64 233.21 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "45.29 231.91 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "45.29 232.56 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "45.29 233.21 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "44.64 232.56 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 80.64 228.24 cm" + "/Form3 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "79.99 231.91 Td" + "\"30 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "79.99 232.56 Td" + "\"30 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "79.99 233.21 Td" + "\"30 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "80.64 231.91 Td" + "\"30 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "80.64 233.21 Td" + "\"30 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "81.29 231.91 Td" + "\"30 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "81.29 232.56 Td" + "\"30 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "81.29 233.21 Td" + "\"30 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "80.64 232.56 Td" + "\"30 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 116.64 228.24 cm" + "/Form4 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "115.99 231.91 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "115.99 232.56 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "115.99 233.21 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "116.64 231.91 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "116.64 233.21 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "117.29 231.91 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "117.29 232.56 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "117.29 233.21 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "116.64 232.56 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 152.64 228.24 cm" + "/Form5 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "151.99 231.91 Td" + "\"Special\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "151.99 232.56 Td" + "\"Special\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "151.99 233.21 Td" + "\"Special\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "152.64 231.91 Td" + "\"Special\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "152.64 233.21 Td" + "\"Special\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "153.29 231.91 Td" + "\"Special\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "153.29 232.56 Td" + "\"Special\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "153.29 233.21 Td" + "\"Special\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "152.64 232.56 Td" + "\"Special\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.02 0.00 0.00 0.02 201.60 21.60 cm" + "/Form6 Do" + "Q"] + ["0.88 0.88 0.88 RG" + "36.00 18.00 m" + "36.00 774.00 l" + "S" + "216.00 18.00 m" + "216.00 774.00 l" + "S" + "396.00 18.00 m" + "396.00 774.00 l" + "S" + "576.00 18.00 m" + "576.00 774.00 l" + "S" + "36.00 18.00 m" + "576.00 18.00 l" + "S" + "36.00 270.00 m" + "576.00 270.00 l" + "S" + "36.00 522.00 m" + "576.00 522.00 l" + "S" + "36.00 774.00 m" + "576.00 774.00 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 781.20 Td" + "#hex:00a9014d01930178000303fa000304a201f60178022a017801f601fe017804a3 Tj" + "ET" + "BT" + "/F2 10.00 Tf" + "44.64 768.24 Td" + "0.00 -11.00 Td" + "#hex:00780118015e016b013400030078019b01de01d60166 Tj" + "ET" + "BT" + "/F3 8.00 Tf" + "44.64 756.72 Td" + "0.00 -8.80 Td" + "#hex:01c1014301be0143011801d60003016b01d601c90003018d014301c901c90118015e0143000301f601660143018f014301f5014301c1000301d601660143000301d601c1016b015e015e014301c1 Tj" + "0.00 -8.80 Td" + "#hex:019b0134013401de01c101c90608000300c101660143000301d601c1016b015e015e014301c1016b018f015e00030134016b01c1013401de018d01c901d60118018f01340143000301340118018f0003013301430003011801c9 Tj" + "0.00 -8.80 Td" + "#hex:015e0143018f014301c1011801840003019b01c10003011801c90003013b014301d60118016b01840143013b0003011801c9000301fc019b01de00030184016b0181014305fc000301d60166019b01de015e01660003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:018d01de01c901d600030133014300030133011801c90143013b0003019b018f000301f5016b01c901de011801840003019b01c10003011801de013b016b01330184014300030134019b018f013b016b01d6016b019b018f01c9 Tj" + "0.00 -8.80 Td" + "#hex:01d60166011801d60003019b0134013401de01c1000301f6016b01d60166016b018f0003056c05690003015d0143014301d60003019b015d000301d6016601430003019b0133017d0143013401d606080003004a019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:014301fb0118018d01be0184014305fc000301fc019b01de00030134019b01de0184013b0003016b018f01c901d601c101de013401d6000301d6016601430003018d019b01de01d60166000301d6019b Tj" + "0.00 -8.80 Td" + "#hex:01c901be014301180181000301f601660143018f00030118018f01fc0003013401c10143011801d601de01c101430003018d019b01f5014301c9000301f6016b01d60166016b018f0003056c05690003015d0143014301d6 Tj" + "0.00 -8.80 Td" + "#hex:019b015d000301d6016601430003019b0133017d0143013401d60003019b01c1000301f601660143018f00030118000301c9016b018401f5014301c100030133014301840184000301c1016b018f015e01c9000301f6016b01d60166016b018f Tj" + "0.00 -8.80 Td" + "#hex:056c05690003015d0143014301d60003019b015d0003016b01d60608 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "109.62 768.24 Td" + "0.00 -11.00 Td" + "#hex:04a201f60178022a017801f601fe017804a3 Tj" + "ET" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "91.01 533.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 54.00 324.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "91.01 281.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F2 10.00 Tf" + "44.64 264.24 Td" + "0.00 -11.00 Td" + "#hex:0078019b01f5014300030031011801c101d60166 Tj" + "ET" + "BT" + "/F3 8.00 Tf" + "44.64 252.72 Td" + "0.00 -8.80 Td" + "#hex:01c901d6019b018f01430003019b01c1000301c901d6019b018f014300030134019b018f01c901d601c101de013401d6016b019b018f0608000300ac019b0134018101c900030118018f013b Tj" + "0.00 -8.80 Td" + "#hex:01c901d601c101de013401d601de01c1014301c9000301c90166016b025e000301d6019b0003011801340134019b018d018d019b013b011801d60143000301d6016601430003018f014301f6 Tj" + "0.00 -8.80 Td" + "#hex:01d6014301c101c10118016b018f060800030058015d000301d601660143000301f6011801fc000301fc019b01de000301c90166011801be0143000301d601660143000301d6014301c101c10118016b018f000301f6019b01de0184013b Tj" + "0.00 -8.80 Td" + "#hex:018d01180181014300030118000301c901d601c101de013401d601de01c10143000301de018f01c901d6011801330184014305fc0003016b01d60003018d016b015e016601d600030134019b01840184011801be01c901430608 Tj" + "0.00 -8.80 Td" + "#hex:00b4016b018d016b0184011801c1018401fc05fc000301d60166016b01c9000301c901be0143018401840003013b019b014301c9018f060c01d60003013b016b01c10143013401d6018401fc0003011802480143013401d6 Tj" + "0.00 -8.80 Td" + "#hex:01be01840118018f01d60003015e01c1019b01f601d601660608000300c1016601430003018d019b01f50143013b00030143011801c101d6016600030134011801c101c1016b014301c900030118018f01fc Tj" + "0.00 -8.80 Td" + "#hex:01be01840118018f01d601c9000301180184019b018f015e000301f6016b01d601660003016b01d60608 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "101.81 264.24 Td" + "0.00 -11.00 Td" + "#hex:04a201f60178022a017801f601fe017804a3 Tj" + "ET" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "91.01 29.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 234.00 576.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "271.01 533.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 234.00 324.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "271.01 281.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 234.00 72.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "271.01 29.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 414.00 576.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "451.01 533.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F2 10.00 Tf" + "404.64 516.24 Td" + "0.00 -11.00 Td" + "#hex:0004018f016b018d011801d601430003002701430118013b Tj" + "ET" + "BT" + "/F3 8.00 Tf" + "404.64 504.72 Td" + "0.00 -8.80 Td" + "#hex:0118015e0118016b018f01c901d600030166019b01c901d6016b018401430003013401c10143011801d601de01c1014301c9060800030086018f013401430003015e016b01f50143018f00030118018f0003019b01c1013b014301c105fc Tj" + "0.00 -8.80 Td" + "#hex:01d6016601430003013401c10143011801d601de01c1014300030134019b018f01d6016b018f01de014301c9000301d6019b0003015d019b01840184019b01f60003016b01d6000301de018f01d6016b01840003016b01d601c9000301d6011801c90181 Tj" + "0.00 -8.80 Td" + "#hex:016b01c900030134019b018d01be0184014301d601430608000300c1016601430003013401c10143011801d601de01c101430003016b01c9000301de018f013b014301c1000301fc019b01de01c100030134019b018f01d601c1019b0184 Tj" + "0.00 -8.80 Td" + "#hex:015d019b01c10003056b056d00030166019b01de01c101c905fc00030118025e014301c1000301f60166016b013401660003016b01d6000301c901d6019b01be01c90003019b0133014301fc016b018f015e00030118018f01fc Tj" + "0.00 -8.80 Td" + "#hex:0134019b018d018d0118018f013b000301fc019b01de060c01f501430003015e016b01f50143018f0003016b01d60608000300c1019b0003018d0118016b018f01d60118016b018f00030134019b018f01d601c1019b0184 Tj" + "0.00 -8.80 Td" + "#hex:019b015d000301d6016601430003013401c10143011801d601de01c101430003015d019b01c100030118018f019b01d60166014301c10003056b056d00030166019b01de01c101c905fc000301fc019b01de0003018d01de01c901d6 Tj" + "0.00 -8.80 Td" + "#hex:0134011801c901d6000301d60166016b01c9000301c901be0143018401840003019b018f000301d6016601430003013401c10143011801d601de01c1014300030118015e0118016b018f000301330143015d019b01c10143000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:013401de01c101c10143018f01d60003056b056d06400166019b01de01c1000301be014301c1016b019b013b00030143018f013b01c90608000300c10166016b01c9000301de01c901430003019b015d000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01c901be014301840184000301c10143011801c901c9014301c101d601c9000301fc019b01de01c100030134019b018f01d601c1019b01840003019b01f5014301c1000301de01be000301d6019b0003015d019b01de01c1 Tj" + "0.00 -8.80 Td" + "#hex:013401c10143011801d601de01c1014301c9000301fc019b01de00030166011801f5014300030118018f016b018d011801d60143013b000301f6016b01d60166000301d60166016b01c9000301c901be01430184018405fc Tj" + "0.00 -8.80 Td" + "#hex:01c1011801d60166014301c1000301d601660118018f00030118018f016b018d011801d6016b018f015e000301180003018f014301f60003019b018f014306080003000401d600030053016b015e0166014301c1 Tj" + "0.00 -8.80 Td" + "#hex:006e014301f50143018401c90608000300e001660143018f000301fc019b01de00030134011801c901d6000301d60166016b01c9000301c901be014301840184000301de01c9016b018f015e00030118000301c901be014301840184 Tj" + "0.00 -8.80 Td" + "#hex:01c90184019b01d60003019b015d0003056d01d6016600030184014301f5014301840003019b01c100030166016b015e0166014301c105fc000301fc019b01de00030118018f016b018d011801d601430003019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:01c10143011801c901c9014301c101d600030134019b018f01d601c1019b01840003019b01f5014301c1000301d601f6019b00030118013b013b016b01d6016b019b018f01180184000301de018f013b01430118013b Tj" + "0.00 -8.80 Td" + "#hex:013401c10143011801d601de01c1014301c90003015d019b01c100030143011801340166000301c90184019b01d600030184014301f501430184000301180133019b01f501430003056c01c1013b0608000300310118013401660003019b015d Tj" + "0.00 -8.80 Td" + "#hex:01d6016601430003013401c10143011801d601de01c1014301c90003018d01de01c901d600030134019b018d01430003015d01c1019b018d000301180003013b016b0248014301c10143018f01d6 Tj" + "0.00 -8.80 Td" + "#hex:0134019b01c101be01c901430003019b01c1000301be016b018401430003019b015d00030133019b018f014301c90608 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "474.31 516.24 Td" + "0.00 -11.00 Td" + "#hex:04a201f60178022a017801f601fe017804a3 Tj" + "ET" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "451.01 281.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F2 10.00 Tf" + "404.64 264.24 Td" + "0.00 -11.00 Td" + "#hex:002001c10143011801d6016b019b018f Tj" + "ET" + "BT" + "/F3 8.00 Tf" + "404.64 252.72 Td" + "0.00 -8.80 Td" + "#hex:015d019b01c100030143011801340166000301c90184019b01d600030184014301f501430184000301180133019b01f501430003056e01d601660608 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "448.33 264.24 Td" + "0.00 -11.00 Td" + "#hex:04a201f60178022a017801f601fe017804a3 Tj" + "ET" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "451.01 29.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET"] + ["0.88 0.88 0.88 RG" + "36.00 18.00 m" + "36.00 774.00 l" + "S" + "216.00 18.00 m" + "216.00 774.00 l" + "S" + "396.00 18.00 m" + "396.00 774.00 l" + "S" + "576.00 18.00 m" + "576.00 774.00 l" + "S" + "36.00 18.00 m" + "576.00 18.00 l" + "S" + "36.00 270.00 m" + "576.00 270.00 l" + "S" + "36.00 522.00 m" + "576.00 522.00 l" + "S" + "36.00 774.00 m" + "576.00 774.00 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 781.20 Td" + "#hex:00a9014d01930178000303fb Tj" + "ET" + "BT" + "/F2 8.00 Tf" + "404.64 696.24 Td" + "0.00 -8.80 Td" + "#hex:000400030134016601de01c1018f016b018f015e000301c901d6019b01c1018d000301340184019b01de013b0003015d019b01c1018d01c905fc000301340143018f01d6014301c10143013b0003019b018f00030118 Tj" + "0.00 -8.80 Td" + "#hex:01be019b016b018f01d6000301fc019b01de000301340118018f000301c90143014300030118018f013b000301c901be01c101430118013b016b018f015e000301d6019b00030118000301c10118013b016b01de01c90003019b015d Tj" + "0.00 -8.80 Td" + "#hex:056c056f05690003015d0143014301d606080003006e016b015e016601d6018f016b018f015e0003025d011801c90166014301c90003016b018f000301d6016601430003011801c10143011805fc000301d6016601de018f013b014301c1 Tj" + "0.00 -8.80 Td" + "#hex:0133019b019b018d01c905fc00030118018f013b000301c901d601c1019b018f015e000301f6016b018f013b01c9000301c1019b011801c10608000300310118013401660003013401c10143011801d601de01c10143 Tj" + "0.00 -8.80 Td" + "#hex:01de018f013b014301c1000301d601660143000301340184019b01de013b00030628018f019b0003018d019b01c10143000301d601660118018f0003056e05fc0569056905690003015d0143014301d6 Tj" + "0.00 -8.80 Td" + "#hex:01330143018f0143011801d60166000301d601660143000301340184019b01de013b0629000301f601660143018f0003016b01d60003011801be01be0143011801c101c90003018d01de01c901d60003018d011801810143 Tj" + "0.00 -8.80 Td" + "#hex:011800030020019b018f01c901d6016b01d601de01d6016b019b018f000301c9011801f5016b018f015e000301d6016601c1019b01f6060800030086018f000301180003015d0118016b01840143013b000301c9011801f5014305fc Tj" + "0.00 -8.80 Td" + "#hex:01180003013401c10143011801d601de01c10143000301d601180181014301c90003056b013b056f000301d6016601de018f013b014301c10003013b0118018d0118015e014300030118018f013b Tj" + "0.00 -8.80 Td" + "#hex:013301430134019b018d014301c90003013b01430118015d0143018f0143013b0003015d019b01c10003056e0003018d016b018f01de01d6014301c9060800030031011801340166000301c1019b01de018f013b Tj" + "0.00 -8.80 Td" + "#hex:01fc019b01de0003018d0118016b018f01d60118016b018f00030134019b018f01340143018f01d601c1011801d6016b019b018f0003019b018f000301d60166016b01c9000301c901be01430184018405fc000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01c901d6019b01c1018d000301be01c1019b013b01de0134014301c900030118013b013b016b01d6016b019b018f011801840003014302480143013401d601c90003019b018f000301fc019b01de01c1 Tj" + "0.00 -8.80 Td" + "#hex:01d601de01c1018f0608000300ac019b01de018f013b0003056b0608000300040134016b013b016b0134000301c10118016b018f0003015d01180184018401c90003015d01c1019b018d000301d601660143000301340184019b01de013b0608 Tj" + "0.00 -8.80 Td" + "#hex:00310118013401660003013401c10143011801d601de01c1014300030118018f013b0003019b0133017d0143013401d6000301de018f013b014301c1000301d601660143000301340184019b01de013b000301d601180181014301c9 Tj" + "0.00 -8.80 Td" + "#hex:056a013b056f000301180134016b013b0003013b0118018d0118015e01430608000300ac019b01de018f013b0003056c0608000300e6019b01de00030134011801840184000301c9016b01fb00030133019b018401d601c90003019b015d Tj" + "0.00 -8.80 Td" + "#hex:0184016b015e016601d6018f016b018f015e0003015d01c1019b018d000301d601660143000301340184019b01de013b000301d6019b000301c901d601c1016b01810143000301c9016b01fb0003013401c10143011801d601de01c1014301c9 Tj" + "0.00 -8.80 Td" + "#hex:019b01c10003019b0133017d0143013401d601c90003019b015d000301fc019b01de01c1000301340166019b016b01340143000301330143018f0143011801d60166000301d601660143000301340184019b01de013b060800030004 Tj" + "0.00 -8.80 Td" + "#hex:015e016b01f50143018f0003013401c10143011801d601de01c101430003019b01c10003019b0133017d0143013401d6000301340118018f060c01d6000301330143000301c901d601c101de013401810003013301fc Tj" + "0.00 -8.80 Td" + "#hex:018d019b01c10143000301d601660118018f0003019b018f014300030133019b018401d6060800030004000301c901d601c101de013401810003013401c10143011801d601de01c101430003018d01de01c901d6 Tj" + "0.00 -8.80 Td" + "#hex:018d0118018101430003011800030027014301fb01d6014301c1016b01d601fc000301c9011801f5016b018f015e000301d6016601c1019b01f60608000300c1016601430003013401c10143011801d601de01c10143 Tj" + "ET" + "q" + "13.20 0.00 0.00 18.00 562.20 754.56 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 10.00 Tf" + "404.64 774.00 Td" + "0.00 -11.00 Td" + "#hex:00b401d6019b01c1018d0003019b015d000300df0143018f015e01430118018f01340143 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "499.27 774.00 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "404.64 760.32 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000304020003002001d001c401b2021301f6014d020b01a001d001c4 Tj" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 404.64 732.24 cm" + "/Form2 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "403.99 735.91 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "403.99 736.56 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "403.99 737.21 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "404.64 735.91 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "404.64 737.21 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "405.29 735.91 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "405.29 736.56 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "405.29 737.21 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "404.64 736.56 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 440.64 732.24 cm" + "/Form3 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "439.99 735.91 Td" + "\"Sight\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "439.99 736.56 Td" + "\"Sight\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "439.99 737.21 Td" + "\"Sight\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "440.64 735.91 Td" + "\"Sight\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "440.64 737.21 Td" + "\"Sight\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "441.29 735.91 Td" + "\"Sight\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "441.29 736.56 Td" + "\"Sight\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "441.29 737.21 Td" + "\"Sight\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "440.64 736.56 Td" + "\"Sight\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 476.64 732.24 cm" + "/Form4 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "475.99 735.91 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "475.99 736.56 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "475.99 737.21 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "476.64 735.91 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "476.64 737.21 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "477.29 735.91 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "477.29 736.56 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "477.29 737.21 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "476.64 736.56 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 512.64 732.24 cm" + "/Form5 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "511.99 735.91 Td" + "\"Conc, 1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "511.99 736.56 Td" + "\"Conc, 1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "511.99 737.21 Td" + "\"Conc, 1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "512.64 735.91 Td" + "\"Conc, 1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "512.64 737.21 Td" + "\"Conc, 1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "513.29 735.91 Td" + "\"Conc, 1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "513.29 736.56 Td" + "\"Conc, 1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "513.29 737.21 Td" + "\"Conc, 1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "512.64 736.56 Td" + "\"Conc, 1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.02 0.00 0.00 0.02 561.60 525.60 cm" + "/Form6 Do" + "Q" + "BT" + "/F2 8.00 Tf" + "224.64 696.24 Td" + "0.00 -8.80 Td" + "#hex:00c8018f01d6016b0184000301d601660143000301c901be01430184018400030143018f013b01c905fc000301f601660143018f000301fc019b01de0003018d01180181014300030118 Tj" + "0.00 -8.80 Td" + "#hex:00200166011801c1016b01c9018d011800030134016601430134018105fc000301fc019b01de000301340118018f000301c1014301be0184011801340143000301d6016601430003018f01de018d0133014301c1 Tj" + "0.00 -8.80 Td" + "#hex:01fc019b01de000301c1019b01840184000301f6016b01d60166000301180003056a056e060800030004013b013b016b01d6016b019b018f01180184018401fc05fc0003018f019b0003018d011801d601d6014301c1 Tj" + "0.00 -8.80 Td" + "#hex:01f60166011801d6000301fc019b01de000301c9011801fc05fc0003018d0118015e016b0134000301d60166011801d6000301f6019b01de0184013b0003013b014301d6014301c1018d016b018f01430003016b015d Tj" + "0.00 -8.80 Td" + "#hex:01fc019b01de0003011801c10143000301d6014301840184016b018f015e000301d601660143000301d601c101de01d601660003016b018f013b016b0134011801d6014301c9000301d60166011801d6000301fc019b01de0003011801c10143 Tj" + "0.00 -8.80 Td" + "#hex:01330143016b018f015e000301d601c101de01d60166015d01de01840608 Tj" + "ET" + "q" + "13.20 0.00 0.00 18.00 382.20 754.56 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 10.00 Tf" + "224.64 774.00 Td" + "0.00 -11.00 Td" + "#hex:004b0184016b0133018f014301c901c9 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "265.83 774.00 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "224.64 760.32 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b900030401000300c101f6014d01c401fe01c20213020b014d020b01a001d001c4 Tj" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 224.64 732.24 cm" + "/Form2 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "223.99 735.91 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "223.99 736.56 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "223.99 737.21 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "224.64 735.91 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "224.64 737.21 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "225.29 735.91 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "225.29 736.56 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "225.29 737.21 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "224.64 736.56 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 260.64 732.24 cm" + "/Form3 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "259.99 735.91 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "259.99 736.56 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "259.99 737.21 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "260.64 735.91 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "260.64 737.21 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "261.29 735.91 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "261.29 736.56 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "261.29 737.21 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "260.64 736.56 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 296.64 732.24 cm" + "/Form4 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "295.99 735.91 Td" + "\"V\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "295.99 736.56 Td" + "\"V\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "295.99 737.21 Td" + "\"V\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "296.64 735.91 Td" + "\"V\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "296.64 737.21 Td" + "\"V\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "297.29 735.91 Td" + "\"V\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "297.29 736.56 Td" + "\"V\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "297.29 737.21 Td" + "\"V\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "296.64 736.56 Td" + "\"V\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 332.64 732.24 cm" + "/Form5 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "331.99 735.91 Td" + "\"1 hr\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "331.99 736.56 Td" + "\"1 hr\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "331.99 737.21 Td" + "\"1 hr\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "332.64 735.91 Td" + "\"1 hr\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "332.64 737.21 Td" + "\"1 hr\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "333.29 735.91 Td" + "\"1 hr\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "333.29 736.56 Td" + "\"1 hr\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "333.29 737.21 Td" + "\"1 hr\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "332.64 736.56 Td" + "\"1 hr\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F2 8.00 Tf" + "44.64 696.24 Td" + "0.00 -8.80 Td" + "#hex:00c10166016b01c9000301c901be0143018401840003013401c10143011801d6014301c9000301180003018d0118015e016b01340118018400030184016b018f018100030133014301d601f601430143018f00030118 Tj" + "0.00 -8.80 Td" + "#hex:006e011801c1015e01430003019b01c100030184011801c1015e014301c10003016b018f0118018f016b018d011801d60143000301be01840118018f01d6000301f6016b01d60166016b018f000301c10118018f015e0143 Tj" + "0.00 -8.80 Td" + "#hex:0118018f013b00030118018f019b01d60166014301c1000301be01840118018f01d605fc0003011801d600030118018f01fc0003013b016b01c901d60118018f0134014305fc0003019b018f000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01c90118018d0143000301be01840118018f01430003019b015d0003014301fb016b01c901d60143018f013401430608000300e6019b01de0003018d01de01c901d600030166011801f50143000301c901430143018f Tj" + "0.00 -8.80 Td" + "#hex:019b01c1000301d6019b01de013401660143013b000301d6016601430003013b014301c901d6016b018f011801d6016b019b018f000301be01840118018f01d60003011801d6000301840143011801c901d60003019b018f01340143 Tj" + "0.00 -8.80 Td" + "#hex:01330143015d019b01c1014306080003004a019b01c1000301d6016601430003013b01de01c1011801d6016b019b018f05fc00030118018f01fc0003013401c10143011801d601de01c10143000301340118018f000301c901d6014301be Tj" + "0.00 -8.80 Td" + "#hex:016b018f01d6019b000301d601660143000301d6011801c1015e014301d6000301be01840118018f01d600030118018f013b0003014301fb016b01d60003015d01c1019b018d000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:013b014301c901d6016b018f011801d6016b019b018f000301be01840118018f01d60003013301fc000301de01c9016b018f015e0003056e0003015d0143014301d60003019b015d0003018d019b01f50143018d0143018f01d60608 Tj" + "ET" + "q" + "13.20 0.00 0.00 18.00 202.20 754.56 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 10.00 Tf" + "44.64 774.00 Td" + "0.00 -11.00 Td" + "#hex:00c101c10118018f01c901be019b01c101d6000301f5016b0118000300a901840118018f01d601c9 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "142.46 774.00 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "44.64 760.32 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303ff0003002001d001c401b2021301f6014d020b01a001d001c4 Tj" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 44.64 732.24 cm" + "/Form2 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "43.99 735.91 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "43.99 736.56 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "43.99 737.21 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "44.64 735.91 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "44.64 737.21 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "45.29 735.91 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "45.29 736.56 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "45.29 737.21 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "44.64 736.56 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 80.64 732.24 cm" + "/Form3 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "79.99 735.91 Td" + "\"10 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "79.99 736.56 Td" + "\"10 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "79.99 737.21 Td" + "\"10 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "80.64 735.91 Td" + "\"10 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "80.64 737.21 Td" + "\"10 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "81.29 735.91 Td" + "\"10 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "81.29 736.56 Td" + "\"10 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "81.29 737.21 Td" + "\"10 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "80.64 736.56 Td" + "\"10 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 116.64 732.24 cm" + "/Form4 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "115.99 735.91 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "115.99 736.56 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "115.99 737.21 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "116.64 735.91 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "116.64 737.21 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "117.29 735.91 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "117.29 736.56 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "117.29 737.21 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "116.64 736.56 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 152.64 732.24 cm" + "/Form5 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "151.99 735.91 Td" + "\"1 Rnd\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "151.99 736.56 Td" + "\"1 Rnd\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "151.99 737.21 Td" + "\"1 Rnd\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "152.64 735.91 Td" + "\"1 Rnd\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "152.64 737.21 Td" + "\"1 Rnd\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "153.29 735.91 Td" + "\"1 Rnd\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "153.29 736.56 Td" + "\"1 Rnd\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "153.29 737.21 Td" + "\"1 Rnd\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "152.64 736.56 Td" + "\"1 Rnd\" Tj" + "0.00 0.00 0.00 rg" + "ET"] + ["0.88 0.88 0.88 RG" + "36.00 18.00 m" + "36.00 774.00 l" + "S" + "216.00 18.00 m" + "216.00 774.00 l" + "S" + "396.00 18.00 m" + "396.00 774.00 l" + "S" + "576.00 18.00 m" + "576.00 774.00 l" + "S" + "36.00 18.00 m" + "576.00 18.00 l" + "S" + "36.00 270.00 m" + "576.00 270.00 l" + "S" + "36.00 522.00 m" + "576.00 522.00 l" + "S" + "36.00 774.00 m" + "576.00 774.00 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 781.20 Td" + "#hex:00a9014d01930178000303fb000304a201f60178022a017801f601fe017804a3 Tj" + "ET" + "BT" + "/F2 10.00 Tf" + "44.64 768.24 Td" + "0.00 -11.00 Td" + "#hex:00b401d6019b01c1018d0003019b015d000300df0143018f015e01430118018f01340143 Tj" + "ET" + "BT" + "/F3 8.00 Tf" + "44.64 756.72 Td" + "0.00 -8.80 Td" + "#hex:01d601180181014301c90003056a0569013b056f00030184016b015e016601d6018f016b018f015e0003013b0118018d0118015e01430003019b018f000301180003015d0118016b01840143013b000301c9011801f5014305fc Tj" + "0.00 -8.80 Td" + "#hex:019b01c10003016601180184015d0003011801c90003018d01de013401660003013b0118018d0118015e01430003019b018f00030118000301c901de01340134014301c901c9015d01de01840003019b018f01430608 Tj" + "0.00 -8.80 Td" + "#hex:00ac019b01de018f013b0003056d0608000300530118016b018401c901d6019b018f014301c9000301c10118016b018f0003013b019b01f6018f0003015d01c1019b018d000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01340184019b01de013b0608000300310118013401660003013401c10143011801d601de01c10143000301de018f013b014301c1000301d601660143000301340184019b01de013b000301d601180181014301c90003056b013b056f Tj" + "0.00 -8.80 Td" + "#hex:0133018401de013b015e0143019b018f016b018f015e0003013b0118018d0118015e01430608000300ac019b01de018f013b0003056e063d056a056906080003004b01de01c901d601c900030118018f013b Tj" + "0.00 -8.80 Td" + "#hex:015d01c1014301430206016b018f015e000301c10118016b018f0003011801c901c90118016b0184000301d6016601430003011801c101430118000301de018f013b014301c1000301d601660143000301340184019b01de013b0608 Tj" + "0.00 -8.80 Td" + "#hex:00c1016601430003011801c1014301180003013301430134019b018d014301c90003013b016b0249013401de018401d6000301d6014301c101c10118016b018f00030118018f013b0003016b01c9 Tj" + "0.00 -8.80 Td" + "#hex:01660143011801f5016b018401fc0003019b013301c9013401de01c10143013b0608000300310118013401660003013401c10143011801d601de01c10143000301d60166014301c10143000301d601180181014301c9 Tj" + "0.00 -8.80 Td" + "#hex:056a013b056f00030134019b0184013b0003013b0118018d0118015e01430608000300ac0118018f015e0143013b000301f60143011801be019b018f0003011801d601d601180134018101c90003016b018f Tj" + "0.00 -8.80 Td" + "#hex:01d6016601430003011801c1014301180003011801c101430003016b018d01be019b01c901c9016b0133018401430608000300c101660143000301f6016b018f013b00030118018f013b000301c10118016b018f Tj" + "0.00 -8.80 Td" + "#hex:0134019b01de018f01d60003011801c900030118000301c9014301f5014301c101430003013b016b01c901d601c10118013401d6016b019b018f0003015d019b01c1000301d601660143000301be01de01c101be019b01c9014301c9 Tj" + "0.00 -8.80 Td" + "#hex:019b015d0003018d0118016b018f01d60118016b018f016b018f015e00030134019b018f01340143018f01d601c1011801d6016b019b018f0003019b018f000301c901be01430184018401c90608 Tj" + "0.00 -8.80 Td" + "#hex:004a016b018f01180184018401fc05fc0003015e01de01c901d601c90003019b015d000301c901d601c1019b018f015e000301f6016b018f013b0003062801c10118018f015e016b018f015e0003015d01c1019b018d0003056b0569 Tj" + "0.00 -8.80 Td" + "#hex:01d6019b0003056e05690003018d016b0184014301c9000301be014301c100030166019b01de01c106290003011801de01d6019b018d011801d6016b013401180184018401fc0003013b016b01c901be014301c101c90143 Tj" + "0.00 -8.80 Td" + "#hex:015d019b015e05fc0003018d016b01c901d601c905fc00030118018f013b000301c9016b018d016b0184011801c1000301be01660143018f019b018d0143018f01180003016b018f000301d6016601430003011801c10143011805fc Tj" + "0.00 -8.80 Td" + "#hex:01f60166014301d60166014301c10003018d01de018f013b0118018f01430003019b01c10003018d0118015e016b0134011801840608 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "141.43 768.24 Td" + "0.00 -11.00 Td" + "#hex:04a201f60178022a017801f601fe017804a3 Tj" + "ET" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "91.01 533.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 54.00 324.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "91.01 281.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 54.00 72.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "91.01 29.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 234.00 576.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "271.01 533.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 234.00 324.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "271.01 281.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 234.00 72.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "271.01 29.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 414.00 576.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "451.01 533.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 414.00 324.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "451.01 281.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 414.00 72.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "451.01 29.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET"] + ["0.88 0.88 0.88 RG" + "36.00 18.00 m" + "36.00 774.00 l" + "S" + "216.00 18.00 m" + "216.00 774.00 l" + "S" + "396.00 18.00 m" + "396.00 774.00 l" + "S" + "576.00 18.00 m" + "576.00 774.00 l" + "S" + "36.00 18.00 m" + "576.00 18.00 l" + "S" + "36.00 270.00 m" + "576.00 270.00 l" + "S" + "36.00 522.00 m" + "576.00 522.00 l" + "S" + "36.00 774.00 m" + "576.00 774.00 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 781.20 Td" + "#hex:00a9014d01930178000303fa Tj" + "ET" + "1.10 w" + "414.72 767.52 m" + "557.28 767.52 l" + "569.52 755.28 l" + "569.52 540.72 l" + "557.28 528.48 l" + "414.72 528.48 l" + "402.48 540.72 l" + "402.48 755.28 l" + "s" + "0.45 w" + "414.72 764.50 m" + "557.28 764.50 l" + "566.50 755.28 l" + "566.50 540.72 l" + "557.28 531.50 l" + "414.72 531.50 l" + "405.50 540.72 l" + "405.50 755.28 l" + "s" + "0.70 w" + "410.04 762.55 m" + "412.63 759.96 l" + "410.04 757.37 l" + "407.45 759.96 l" + "h" + "S" + "561.96 762.55 m" + "564.55 759.96 l" + "561.96 757.37 l" + "559.37 759.96 l" + "h" + "S" + "410.04 538.63 m" + "412.63 536.04 l" + "410.04 533.45 l" + "407.45 536.04 l" + "h" + "S" + "561.96 538.63 m" + "564.55 536.04 l" + "561.96 533.45 l" + "559.37 536.04 l" + "h" + "S" + "1.00 w" + "0.50 w" + "416.16 756.36 m" + "462.96 756.36 l" + "S" + "509.04 756.36 m" + "555.84 756.36 l" + "S" + "0.60 w" + "469.44 759.10 m" + "472.18 756.36 l" + "469.44 753.62 l" + "466.70 756.36 l" + "h" + "f" + "477.72 759.10 m" + "480.46 756.36 l" + "477.72 753.62 l" + "474.98 756.36 l" + "h" + "f" + "486.00 759.10 m" + "488.74 756.36 l" + "486.00 753.62 l" + "483.26 756.36 l" + "h" + "f" + "494.28 759.10 m" + "497.02 756.36 l" + "494.28 753.62 l" + "491.54 756.36 l" + "h" + "S" + "502.56 759.10 m" + "505.30 756.36 l" + "502.56 753.62 l" + "499.82 756.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "432.00 535.32 m" + "479.88 535.32 l" + "S" + "492.12 535.32 m" + "540.00 535.32 l" + "S" + "486.00 537.62 m" + "488.30 535.32 l" + "486.00 533.02 l" + "483.70 535.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "547.20 703.08 m" + "553.32 703.08 l" + "555.84 700.56 l" + "555.84 695.16 l" + "553.32 692.64 l" + "547.20 692.64 l" + "544.68 695.16 l" + "544.68 700.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "547.73 695.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "416.16 748.08 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc000300b401d601de013b013b0143013b Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "410.40 702.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "410.40 686.16 m" + "561.60 686.16 l" + "S" + "0.35 w" + "410.40 683.64 m" + "561.60 683.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "410.40 678.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "457.72 557.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "234.72 767.52 m" + "377.28 767.52 l" + "389.52 755.28 l" + "389.52 540.72 l" + "377.28 528.48 l" + "234.72 528.48 l" + "222.48 540.72 l" + "222.48 755.28 l" + "s" + "0.45 w" + "234.72 764.50 m" + "377.28 764.50 l" + "386.50 755.28 l" + "386.50 540.72 l" + "377.28 531.50 l" + "234.72 531.50 l" + "225.50 540.72 l" + "225.50 755.28 l" + "s" + "0.70 w" + "230.04 762.55 m" + "232.63 759.96 l" + "230.04 757.37 l" + "227.45 759.96 l" + "h" + "S" + "381.96 762.55 m" + "384.55 759.96 l" + "381.96 757.37 l" + "379.37 759.96 l" + "h" + "S" + "230.04 538.63 m" + "232.63 536.04 l" + "230.04 533.45 l" + "227.45 536.04 l" + "h" + "S" + "381.96 538.63 m" + "384.55 536.04 l" + "381.96 533.45 l" + "379.37 536.04 l" + "h" + "S" + "1.00 w" + "0.50 w" + "236.16 756.36 m" + "282.96 756.36 l" + "S" + "329.04 756.36 m" + "375.84 756.36 l" + "S" + "0.60 w" + "289.44 759.10 m" + "292.18 756.36 l" + "289.44 753.62 l" + "286.70 756.36 l" + "h" + "f" + "297.72 759.10 m" + "300.46 756.36 l" + "297.72 753.62 l" + "294.98 756.36 l" + "h" + "f" + "306.00 759.10 m" + "308.74 756.36 l" + "306.00 753.62 l" + "303.26 756.36 l" + "h" + "f" + "314.28 759.10 m" + "317.02 756.36 l" + "314.28 753.62 l" + "311.54 756.36 l" + "h" + "S" + "322.56 759.10 m" + "325.30 756.36 l" + "322.56 753.62 l" + "319.82 756.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "252.00 535.32 m" + "299.88 535.32 l" + "S" + "312.12 535.32 m" + "360.00 535.32 l" + "S" + "306.00 537.62 m" + "308.30 535.32 l" + "306.00 533.02 l" + "303.70 535.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "367.20 703.08 m" + "373.32 703.08 l" + "375.84 700.56 l" + "375.84 695.16 l" + "373.32 692.64 l" + "367.20 692.64 l" + "364.68 695.16 l" + "364.68 700.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "367.73 695.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "236.16 748.08 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc0003006e0143011801d60166014301c1 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "230.40 702.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "230.40 686.16 m" + "381.60 686.16 l" + "S" + "0.35 w" + "230.40 683.64 m" + "381.60 683.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "230.40 678.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "277.72 557.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "54.72 767.52 m" + "197.28 767.52 l" + "209.52 755.28 l" + "209.52 540.72 l" + "197.28 528.48 l" + "54.72 528.48 l" + "42.48 540.72 l" + "42.48 755.28 l" + "s" + "0.45 w" + "54.72 764.50 m" + "197.28 764.50 l" + "206.50 755.28 l" + "206.50 540.72 l" + "197.28 531.50 l" + "54.72 531.50 l" + "45.50 540.72 l" + "45.50 755.28 l" + "s" + "0.70 w" + "50.04 762.55 m" + "52.63 759.96 l" + "50.04 757.37 l" + "47.45 759.96 l" + "h" + "S" + "201.96 762.55 m" + "204.55 759.96 l" + "201.96 757.37 l" + "199.37 759.96 l" + "h" + "S" + "50.04 538.63 m" + "52.63 536.04 l" + "50.04 533.45 l" + "47.45 536.04 l" + "h" + "S" + "201.96 538.63 m" + "204.55 536.04 l" + "201.96 533.45 l" + "199.37 536.04 l" + "h" + "S" + "1.00 w" + "0.50 w" + "56.16 756.36 m" + "102.96 756.36 l" + "S" + "149.04 756.36 m" + "195.84 756.36 l" + "S" + "0.60 w" + "109.44 759.10 m" + "112.18 756.36 l" + "109.44 753.62 l" + "106.70 756.36 l" + "h" + "f" + "117.72 759.10 m" + "120.46 756.36 l" + "117.72 753.62 l" + "114.98 756.36 l" + "h" + "f" + "126.00 759.10 m" + "128.74 756.36 l" + "126.00 753.62 l" + "123.26 756.36 l" + "h" + "f" + "134.28 759.10 m" + "137.02 756.36 l" + "134.28 753.62 l" + "131.54 756.36 l" + "h" + "S" + "142.56 759.10 m" + "145.30 756.36 l" + "142.56 753.62 l" + "139.82 756.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "72.00 535.32 m" + "119.88 535.32 l" + "S" + "132.12 535.32 m" + "180.00 535.32 l" + "S" + "126.00 537.62 m" + "128.30 535.32 l" + "126.00 533.02 l" + "123.70 535.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "187.20 703.08 m" + "193.32 703.08 l" + "195.84 700.56 l" + "195.84 695.16 l" + "193.32 692.64 l" + "187.20 692.64 l" + "184.68 695.16 l" + "184.68 700.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "187.73 695.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "56.16 748.08 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc000300a90118013b013b0143013b Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "50.40 702.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "50.40 686.16 m" + "201.60 686.16 l" + "S" + "0.35 w" + "50.40 683.64 m" + "201.60 683.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "50.40 678.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "97.72 557.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "414.72 515.52 m" + "557.28 515.52 l" + "569.52 503.28 l" + "569.52 288.72 l" + "557.28 276.48 l" + "414.72 276.48 l" + "402.48 288.72 l" + "402.48 503.28 l" + "s" + "0.45 w" + "414.72 512.50 m" + "557.28 512.50 l" + "566.50 503.28 l" + "566.50 288.72 l" + "557.28 279.50 l" + "414.72 279.50 l" + "405.50 288.72 l" + "405.50 503.28 l" + "s" + "0.70 w" + "410.04 510.55 m" + "412.63 507.96 l" + "410.04 505.37 l" + "407.45 507.96 l" + "h" + "S" + "561.96 510.55 m" + "564.55 507.96 l" + "561.96 505.37 l" + "559.37 507.96 l" + "h" + "S" + "410.04 286.63 m" + "412.63 284.04 l" + "410.04 281.45 l" + "407.45 284.04 l" + "h" + "S" + "561.96 286.63 m" + "564.55 284.04 l" + "561.96 281.45 l" + "559.37 284.04 l" + "h" + "S" + "1.00 w" + "0.50 w" + "416.16 504.36 m" + "462.96 504.36 l" + "S" + "509.04 504.36 m" + "555.84 504.36 l" + "S" + "0.60 w" + "469.44 507.10 m" + "472.18 504.36 l" + "469.44 501.62 l" + "466.70 504.36 l" + "h" + "f" + "477.72 507.10 m" + "480.46 504.36 l" + "477.72 501.62 l" + "474.98 504.36 l" + "h" + "f" + "486.00 507.10 m" + "488.74 504.36 l" + "486.00 501.62 l" + "483.26 504.36 l" + "h" + "f" + "494.28 507.10 m" + "497.02 504.36 l" + "494.28 501.62 l" + "491.54 504.36 l" + "h" + "S" + "502.56 507.10 m" + "505.30 504.36 l" + "502.56 501.62 l" + "499.82 504.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "432.00 283.32 m" + "479.88 283.32 l" + "S" + "492.12 283.32 m" + "540.00 283.32 l" + "S" + "486.00 285.62 m" + "488.30 283.32 l" + "486.00 281.02 l" + "483.70 283.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "547.20 451.08 m" + "553.32 451.08 l" + "555.84 448.56 l" + "555.84 443.16 l" + "553.32 440.64 l" + "547.20 440.64 l" + "544.68 443.16 l" + "544.68 448.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "547.73 443.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "416.16 496.08 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc000300b401340118018401430003018d0118016b0184 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "410.40 450.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "410.40 434.16 m" + "561.60 434.16 l" + "S" + "0.35 w" + "410.40 431.64 m" + "561.60 431.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "410.40 426.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "457.72 305.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "234.72 515.52 m" + "377.28 515.52 l" + "389.52 503.28 l" + "389.52 288.72 l" + "377.28 276.48 l" + "234.72 276.48 l" + "222.48 288.72 l" + "222.48 503.28 l" + "s" + "0.45 w" + "234.72 512.50 m" + "377.28 512.50 l" + "386.50 503.28 l" + "386.50 288.72 l" + "377.28 279.50 l" + "234.72 279.50 l" + "225.50 288.72 l" + "225.50 503.28 l" + "s" + "0.70 w" + "230.04 510.55 m" + "232.63 507.96 l" + "230.04 505.37 l" + "227.45 507.96 l" + "h" + "S" + "381.96 510.55 m" + "384.55 507.96 l" + "381.96 505.37 l" + "379.37 507.96 l" + "h" + "S" + "230.04 286.63 m" + "232.63 284.04 l" + "230.04 281.45 l" + "227.45 284.04 l" + "h" + "S" + "381.96 286.63 m" + "384.55 284.04 l" + "381.96 281.45 l" + "379.37 284.04 l" + "h" + "S" + "1.00 w" + "0.50 w" + "236.16 504.36 m" + "282.96 504.36 l" + "S" + "329.04 504.36 m" + "375.84 504.36 l" + "S" + "0.60 w" + "289.44 507.10 m" + "292.18 504.36 l" + "289.44 501.62 l" + "286.70 504.36 l" + "h" + "f" + "297.72 507.10 m" + "300.46 504.36 l" + "297.72 501.62 l" + "294.98 504.36 l" + "h" + "f" + "306.00 507.10 m" + "308.74 504.36 l" + "306.00 501.62 l" + "303.26 504.36 l" + "h" + "f" + "314.28 507.10 m" + "317.02 504.36 l" + "314.28 501.62 l" + "311.54 504.36 l" + "h" + "S" + "322.56 507.10 m" + "325.30 504.36 l" + "322.56 501.62 l" + "319.82 504.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "252.00 283.32 m" + "299.88 283.32 l" + "S" + "312.12 283.32 m" + "360.00 283.32 l" + "S" + "306.00 285.62 m" + "308.30 283.32 l" + "306.00 281.02 l" + "303.70 283.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "367.20 451.08 m" + "373.32 451.08 l" + "375.84 448.56 l" + "375.84 443.16 l" + "373.32 440.64 l" + "367.20 440.64 l" + "364.68 443.16 l" + "364.68 448.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "367.73 443.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "236.16 496.08 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc0003002001660118016b018f000300b40166016b01c101d6 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "230.40 450.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "230.40 434.16 m" + "381.60 434.16 l" + "S" + "0.35 w" + "230.40 431.64 m" + "381.60 431.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "230.40 426.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "277.72 305.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "54.72 515.52 m" + "197.28 515.52 l" + "209.52 503.28 l" + "209.52 288.72 l" + "197.28 276.48 l" + "54.72 276.48 l" + "42.48 288.72 l" + "42.48 503.28 l" + "s" + "0.45 w" + "54.72 512.50 m" + "197.28 512.50 l" + "206.50 503.28 l" + "206.50 288.72 l" + "197.28 279.50 l" + "54.72 279.50 l" + "45.50 288.72 l" + "45.50 503.28 l" + "s" + "0.70 w" + "50.04 510.55 m" + "52.63 507.96 l" + "50.04 505.37 l" + "47.45 507.96 l" + "h" + "S" + "201.96 510.55 m" + "204.55 507.96 l" + "201.96 505.37 l" + "199.37 507.96 l" + "h" + "S" + "50.04 286.63 m" + "52.63 284.04 l" + "50.04 281.45 l" + "47.45 284.04 l" + "h" + "S" + "201.96 286.63 m" + "204.55 284.04 l" + "201.96 281.45 l" + "199.37 284.04 l" + "h" + "S" + "1.00 w" + "0.50 w" + "56.16 504.36 m" + "102.96 504.36 l" + "S" + "149.04 504.36 m" + "195.84 504.36 l" + "S" + "0.60 w" + "109.44 507.10 m" + "112.18 504.36 l" + "109.44 501.62 l" + "106.70 504.36 l" + "h" + "f" + "117.72 507.10 m" + "120.46 504.36 l" + "117.72 501.62 l" + "114.98 504.36 l" + "h" + "f" + "126.00 507.10 m" + "128.74 504.36 l" + "126.00 501.62 l" + "123.26 504.36 l" + "h" + "f" + "134.28 507.10 m" + "137.02 504.36 l" + "134.28 501.62 l" + "131.54 504.36 l" + "h" + "S" + "142.56 507.10 m" + "145.30 504.36 l" + "142.56 501.62 l" + "139.82 504.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "72.00 283.32 m" + "119.88 283.32 l" + "S" + "132.12 283.32 m" + "180.00 283.32 l" + "S" + "126.00 285.62 m" + "128.30 283.32 l" + "126.00 281.02 l" + "123.70 283.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "187.20 451.08 m" + "193.32 451.08 l" + "195.84 448.56 l" + "195.84 443.16 l" + "193.32 440.64 l" + "187.20 440.64 l" + "184.68 443.16 l" + "184.68 448.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "187.73 443.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "56.16 496.08 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc00030053016b013b0143 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "50.40 450.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "50.40 434.16 m" + "201.60 434.16 l" + "S" + "0.35 w" + "50.40 431.64 m" + "201.60 431.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "50.40 426.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "97.72 305.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "414.72 263.52 m" + "557.28 263.52 l" + "569.52 251.28 l" + "569.52 36.72 l" + "557.28 24.48 l" + "414.72 24.48 l" + "402.48 36.72 l" + "402.48 251.28 l" + "s" + "0.45 w" + "414.72 260.50 m" + "557.28 260.50 l" + "566.50 251.28 l" + "566.50 36.72 l" + "557.28 27.50 l" + "414.72 27.50 l" + "405.50 36.72 l" + "405.50 251.28 l" + "s" + "0.70 w" + "410.04 258.55 m" + "412.63 255.96 l" + "410.04 253.37 l" + "407.45 255.96 l" + "h" + "S" + "561.96 258.55 m" + "564.55 255.96 l" + "561.96 253.37 l" + "559.37 255.96 l" + "h" + "S" + "410.04 34.63 m" + "412.63 32.04 l" + "410.04 29.45 l" + "407.45 32.04 l" + "h" + "S" + "561.96 34.63 m" + "564.55 32.04 l" + "561.96 29.45 l" + "559.37 32.04 l" + "h" + "S" + "1.00 w" + "0.50 w" + "416.16 252.36 m" + "462.96 252.36 l" + "S" + "509.04 252.36 m" + "555.84 252.36 l" + "S" + "0.60 w" + "469.44 255.10 m" + "472.18 252.36 l" + "469.44 249.62 l" + "466.70 252.36 l" + "h" + "f" + "477.72 255.10 m" + "480.46 252.36 l" + "477.72 249.62 l" + "474.98 252.36 l" + "h" + "f" + "486.00 255.10 m" + "488.74 252.36 l" + "486.00 249.62 l" + "483.26 252.36 l" + "h" + "f" + "494.28 255.10 m" + "497.02 252.36 l" + "494.28 249.62 l" + "491.54 252.36 l" + "h" + "S" + "502.56 255.10 m" + "505.30 252.36 l" + "502.56 249.62 l" + "499.82 252.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "432.00 31.32 m" + "479.88 31.32 l" + "S" + "492.12 31.32 m" + "540.00 31.32 l" + "S" + "486.00 33.62 m" + "488.30 31.32 l" + "486.00 29.02 l" + "483.70 31.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "547.20 199.08 m" + "553.32 199.08 l" + "555.84 196.56 l" + "555.84 191.16 l" + "553.32 188.64 l" + "547.20 188.64 l" + "544.68 191.16 l" + "544.68 196.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "547.73 191.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "416.16 244.08 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc000300ac016b018f015e0003018d0118016b0184 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "410.40 198.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "410.40 182.16 m" + "561.60 182.16 l" + "S" + "0.35 w" + "410.40 179.64 m" + "561.60 179.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "410.40 174.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "457.72 53.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "234.72 263.52 m" + "377.28 263.52 l" + "389.52 251.28 l" + "389.52 36.72 l" + "377.28 24.48 l" + "234.72 24.48 l" + "222.48 36.72 l" + "222.48 251.28 l" + "s" + "0.45 w" + "234.72 260.50 m" + "377.28 260.50 l" + "386.50 251.28 l" + "386.50 36.72 l" + "377.28 27.50 l" + "234.72 27.50 l" + "225.50 36.72 l" + "225.50 251.28 l" + "s" + "0.70 w" + "230.04 258.55 m" + "232.63 255.96 l" + "230.04 253.37 l" + "227.45 255.96 l" + "h" + "S" + "381.96 258.55 m" + "384.55 255.96 l" + "381.96 253.37 l" + "379.37 255.96 l" + "h" + "S" + "230.04 34.63 m" + "232.63 32.04 l" + "230.04 29.45 l" + "227.45 32.04 l" + "h" + "S" + "381.96 34.63 m" + "384.55 32.04 l" + "381.96 29.45 l" + "379.37 32.04 l" + "h" + "S" + "1.00 w" + "0.50 w" + "236.16 252.36 m" + "282.96 252.36 l" + "S" + "329.04 252.36 m" + "375.84 252.36 l" + "S" + "0.60 w" + "289.44 255.10 m" + "292.18 252.36 l" + "289.44 249.62 l" + "286.70 252.36 l" + "h" + "f" + "297.72 255.10 m" + "300.46 252.36 l" + "297.72 249.62 l" + "294.98 252.36 l" + "h" + "f" + "306.00 255.10 m" + "308.74 252.36 l" + "306.00 249.62 l" + "303.26 252.36 l" + "h" + "f" + "314.28 255.10 m" + "317.02 252.36 l" + "314.28 249.62 l" + "311.54 252.36 l" + "h" + "S" + "322.56 255.10 m" + "325.30 252.36 l" + "322.56 249.62 l" + "319.82 252.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "252.00 31.32 m" + "299.88 31.32 l" + "S" + "312.12 31.32 m" + "360.00 31.32 l" + "S" + "306.00 33.62 m" + "308.30 31.32 l" + "306.00 29.02 l" + "303.70 31.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "367.20 199.08 m" + "373.32 199.08 l" + "375.84 196.56 l" + "375.84 191.16 l" + "373.32 188.64 l" + "367.20 188.64 l" + "364.68 191.16 l" + "364.68 196.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "367.73 191.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "236.16 244.08 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc0003005301180184015d000301be0184011801d60143 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "230.40 198.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "230.40 182.16 m" + "381.60 182.16 l" + "S" + "0.35 w" + "230.40 179.64 m" + "381.60 179.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "230.40 174.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "277.72 53.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "54.72 263.52 m" + "197.28 263.52 l" + "209.52 251.28 l" + "209.52 36.72 l" + "197.28 24.48 l" + "54.72 24.48 l" + "42.48 36.72 l" + "42.48 251.28 l" + "s" + "0.45 w" + "54.72 260.50 m" + "197.28 260.50 l" + "206.50 251.28 l" + "206.50 36.72 l" + "197.28 27.50 l" + "54.72 27.50 l" + "45.50 36.72 l" + "45.50 251.28 l" + "s" + "0.70 w" + "50.04 258.55 m" + "52.63 255.96 l" + "50.04 253.37 l" + "47.45 255.96 l" + "h" + "S" + "201.96 258.55 m" + "204.55 255.96 l" + "201.96 253.37 l" + "199.37 255.96 l" + "h" + "S" + "50.04 34.63 m" + "52.63 32.04 l" + "50.04 29.45 l" + "47.45 32.04 l" + "h" + "S" + "201.96 34.63 m" + "204.55 32.04 l" + "201.96 29.45 l" + "199.37 32.04 l" + "h" + "S" + "1.00 w" + "0.50 w" + "56.16 252.36 m" + "102.96 252.36 l" + "S" + "149.04 252.36 m" + "195.84 252.36 l" + "S" + "0.60 w" + "109.44 255.10 m" + "112.18 252.36 l" + "109.44 249.62 l" + "106.70 252.36 l" + "h" + "f" + "117.72 255.10 m" + "120.46 252.36 l" + "117.72 249.62 l" + "114.98 252.36 l" + "h" + "f" + "126.00 255.10 m" + "128.74 252.36 l" + "126.00 249.62 l" + "123.26 252.36 l" + "h" + "f" + "134.28 255.10 m" + "137.02 252.36 l" + "134.28 249.62 l" + "131.54 252.36 l" + "h" + "S" + "142.56 255.10 m" + "145.30 252.36 l" + "142.56 249.62 l" + "139.82 252.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "72.00 31.32 m" + "119.88 31.32 l" + "S" + "132.12 31.32 m" + "180.00 31.32 l" + "S" + "126.00 33.62 m" + "128.30 31.32 l" + "126.00 29.02 l" + "123.70 31.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "187.20 199.08 m" + "193.32 199.08 l" + "195.84 196.56 l" + "195.84 191.16 l" + "193.32 188.64 l" + "187.20 188.64 l" + "184.68 191.16 l" + "184.68 196.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "187.73 191.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "56.16 244.08 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc0003001f01c10143011801c901d601be0184011801d60143 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "50.40 198.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "50.40 182.16 m" + "201.60 182.16 l" + "S" + "0.35 w" + "50.40 179.64 m" + "201.60 179.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "50.40 174.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "97.72 53.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET"] + ["0.88 0.88 0.88 RG" + "36.00 18.00 m" + "36.00 774.00 l" + "S" + "216.00 18.00 m" + "216.00 774.00 l" + "S" + "396.00 18.00 m" + "396.00 774.00 l" + "S" + "576.00 18.00 m" + "576.00 774.00 l" + "S" + "36.00 18.00 m" + "576.00 18.00 l" + "S" + "36.00 270.00 m" + "576.00 270.00 l" + "S" + "36.00 522.00 m" + "576.00 522.00 l" + "S" + "36.00 774.00 m" + "576.00 774.00 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 781.20 Td" + "#hex:00a9014d01930178000303fa000304a201f60178022a017801f601fe017804a3 Tj" + "ET" + "q" + "144.00 0.00 0.00 144.00 54.00 576.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "91.01 533.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 54.00 324.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "91.01 281.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 54.00 72.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "91.01 29.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 234.00 576.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "271.01 533.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 234.00 324.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "271.01 281.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 234.00 72.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "271.01 29.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 414.00 576.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "451.01 533.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 414.00 324.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "451.01 281.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 414.00 72.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "451.01 29.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET"] + ["0.88 0.88 0.88 RG" + "36.00 18.00 m" + "36.00 774.00 l" + "S" + "216.00 18.00 m" + "216.00 774.00 l" + "S" + "396.00 18.00 m" + "396.00 774.00 l" + "S" + "576.00 18.00 m" + "576.00 774.00 l" + "S" + "36.00 18.00 m" + "576.00 18.00 l" + "S" + "36.00 270.00 m" + "576.00 270.00 l" + "S" + "36.00 522.00 m" + "576.00 522.00 l" + "S" + "36.00 774.00 m" + "576.00 774.00 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 781.20 Td" + "#hex:00a9014d01930178000303fb Tj" + "ET" + "1.10 w" + "414.72 767.52 m" + "557.28 767.52 l" + "569.52 755.28 l" + "569.52 540.72 l" + "557.28 528.48 l" + "414.72 528.48 l" + "402.48 540.72 l" + "402.48 755.28 l" + "s" + "0.45 w" + "414.72 764.50 m" + "557.28 764.50 l" + "566.50 755.28 l" + "566.50 540.72 l" + "557.28 531.50 l" + "414.72 531.50 l" + "405.50 540.72 l" + "405.50 755.28 l" + "s" + "0.70 w" + "410.04 762.55 m" + "412.63 759.96 l" + "410.04 757.37 l" + "407.45 759.96 l" + "h" + "S" + "561.96 762.55 m" + "564.55 759.96 l" + "561.96 757.37 l" + "559.37 759.96 l" + "h" + "S" + "410.04 538.63 m" + "412.63 536.04 l" + "410.04 533.45 l" + "407.45 536.04 l" + "h" + "S" + "561.96 538.63 m" + "564.55 536.04 l" + "561.96 533.45 l" + "559.37 536.04 l" + "h" + "S" + "1.00 w" + "0.50 w" + "416.16 756.36 m" + "462.96 756.36 l" + "S" + "509.04 756.36 m" + "555.84 756.36 l" + "S" + "0.60 w" + "469.44 759.10 m" + "472.18 756.36 l" + "469.44 753.62 l" + "466.70 756.36 l" + "h" + "f" + "477.72 759.10 m" + "480.46 756.36 l" + "477.72 753.62 l" + "474.98 756.36 l" + "h" + "f" + "486.00 759.10 m" + "488.74 756.36 l" + "486.00 753.62 l" + "483.26 756.36 l" + "h" + "f" + "494.28 759.10 m" + "497.02 756.36 l" + "494.28 753.62 l" + "491.54 756.36 l" + "h" + "S" + "502.56 759.10 m" + "505.30 756.36 l" + "502.56 753.62 l" + "499.82 756.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "432.00 535.32 m" + "479.88 535.32 l" + "S" + "492.12 535.32 m" + "540.00 535.32 l" + "S" + "486.00 537.62 m" + "488.30 535.32 l" + "486.00 533.02 l" + "483.70 535.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "547.20 703.08 m" + "553.32 703.08 l" + "555.84 700.56 l" + "555.84 695.16 l" + "553.32 692.64 l" + "547.20 692.64 l" + "544.68 695.16 l" + "544.68 700.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "547.73 695.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "416.16 748.08 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc000300a90184011801d60143 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "410.40 702.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "410.40 686.16 m" + "561.60 686.16 l" + "S" + "0.35 w" + "410.40 683.64 m" + "561.60 683.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "410.40 678.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "457.72 557.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "234.72 767.52 m" + "377.28 767.52 l" + "389.52 755.28 l" + "389.52 540.72 l" + "377.28 528.48 l" + "234.72 528.48 l" + "222.48 540.72 l" + "222.48 755.28 l" + "s" + "0.45 w" + "234.72 764.50 m" + "377.28 764.50 l" + "386.50 755.28 l" + "386.50 540.72 l" + "377.28 531.50 l" + "234.72 531.50 l" + "225.50 540.72 l" + "225.50 755.28 l" + "s" + "0.70 w" + "230.04 762.55 m" + "232.63 759.96 l" + "230.04 757.37 l" + "227.45 759.96 l" + "h" + "S" + "381.96 762.55 m" + "384.55 759.96 l" + "381.96 757.37 l" + "379.37 759.96 l" + "h" + "S" + "230.04 538.63 m" + "232.63 536.04 l" + "230.04 533.45 l" + "227.45 536.04 l" + "h" + "S" + "381.96 538.63 m" + "384.55 536.04 l" + "381.96 533.45 l" + "379.37 536.04 l" + "h" + "S" + "1.00 w" + "0.50 w" + "236.16 756.36 m" + "282.96 756.36 l" + "S" + "329.04 756.36 m" + "375.84 756.36 l" + "S" + "0.60 w" + "289.44 759.10 m" + "292.18 756.36 l" + "289.44 753.62 l" + "286.70 756.36 l" + "h" + "f" + "297.72 759.10 m" + "300.46 756.36 l" + "297.72 753.62 l" + "294.98 756.36 l" + "h" + "f" + "306.00 759.10 m" + "308.74 756.36 l" + "306.00 753.62 l" + "303.26 756.36 l" + "h" + "f" + "314.28 759.10 m" + "317.02 756.36 l" + "314.28 753.62 l" + "311.54 756.36 l" + "h" + "S" + "322.56 759.10 m" + "325.30 756.36 l" + "322.56 753.62 l" + "319.82 756.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "252.00 535.32 m" + "299.88 535.32 l" + "S" + "312.12 535.32 m" + "360.00 535.32 l" + "S" + "306.00 537.62 m" + "308.30 535.32 l" + "306.00 533.02 l" + "303.70 535.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "367.20 703.08 m" + "373.32 703.08 l" + "375.84 700.56 l" + "375.84 695.16 l" + "373.32 692.64 l" + "367.20 692.64 l" + "364.68 695.16 l" + "364.68 700.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "367.73 695.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "236.16 748.08 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc000300b401be0184016b018f01d6 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "230.40 702.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "230.40 686.16 m" + "381.60 686.16 l" + "S" + "0.35 w" + "230.40 683.64 m" + "381.60 683.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "230.40 678.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "277.72 557.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "54.72 767.52 m" + "197.28 767.52 l" + "209.52 755.28 l" + "209.52 540.72 l" + "197.28 528.48 l" + "54.72 528.48 l" + "42.48 540.72 l" + "42.48 755.28 l" + "s" + "0.45 w" + "54.72 764.50 m" + "197.28 764.50 l" + "206.50 755.28 l" + "206.50 540.72 l" + "197.28 531.50 l" + "54.72 531.50 l" + "45.50 540.72 l" + "45.50 755.28 l" + "s" + "0.70 w" + "50.04 762.55 m" + "52.63 759.96 l" + "50.04 757.37 l" + "47.45 759.96 l" + "h" + "S" + "201.96 762.55 m" + "204.55 759.96 l" + "201.96 757.37 l" + "199.37 759.96 l" + "h" + "S" + "50.04 538.63 m" + "52.63 536.04 l" + "50.04 533.45 l" + "47.45 536.04 l" + "h" + "S" + "201.96 538.63 m" + "204.55 536.04 l" + "201.96 533.45 l" + "199.37 536.04 l" + "h" + "S" + "1.00 w" + "0.50 w" + "56.16 756.36 m" + "102.96 756.36 l" + "S" + "149.04 756.36 m" + "195.84 756.36 l" + "S" + "0.60 w" + "109.44 759.10 m" + "112.18 756.36 l" + "109.44 753.62 l" + "106.70 756.36 l" + "h" + "f" + "117.72 759.10 m" + "120.46 756.36 l" + "117.72 753.62 l" + "114.98 756.36 l" + "h" + "f" + "126.00 759.10 m" + "128.74 756.36 l" + "126.00 753.62 l" + "123.26 756.36 l" + "h" + "f" + "134.28 759.10 m" + "137.02 756.36 l" + "134.28 753.62 l" + "131.54 756.36 l" + "h" + "S" + "142.56 759.10 m" + "145.30 756.36 l" + "142.56 753.62 l" + "139.82 756.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "72.00 535.32 m" + "119.88 535.32 l" + "S" + "132.12 535.32 m" + "180.00 535.32 l" + "S" + "126.00 537.62 m" + "128.30 535.32 l" + "126.00 533.02 l" + "123.70 535.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "187.20 703.08 m" + "193.32 703.08 l" + "195.84 700.56 l" + "195.84 695.16 l" + "193.32 692.64 l" + "187.20 692.64 l" + "184.68 695.16 l" + "184.68 700.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "187.73 695.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "56.16 748.08 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc0003002001660118016b018f0003018d0118016b0184 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "50.40 702.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "50.40 686.16 m" + "201.60 686.16 l" + "S" + "0.35 w" + "50.40 683.64 m" + "201.60 683.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "50.40 678.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "97.72 557.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET"] + ["0.88 0.88 0.88 RG" + "36.00 18.00 m" + "36.00 774.00 l" + "S" + "216.00 18.00 m" + "216.00 774.00 l" + "S" + "396.00 18.00 m" + "396.00 774.00 l" + "S" + "576.00 18.00 m" + "576.00 774.00 l" + "S" + "36.00 18.00 m" + "576.00 18.00 l" + "S" + "36.00 270.00 m" + "576.00 270.00 l" + "S" + "36.00 522.00 m" + "576.00 522.00 l" + "S" + "36.00 774.00 m" + "576.00 774.00 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 781.20 Td" + "#hex:00a9014d01930178000303fb000304a201f60178022a017801f601fe017804a3 Tj" + "ET" + "q" + "144.00 0.00 0.00 144.00 54.00 576.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "91.01 533.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 54.00 324.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "91.01 281.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 54.00 72.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "91.01 29.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 234.00 576.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "271.01 533.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 234.00 324.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "271.01 281.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 234.00 72.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "271.01 29.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 414.00 576.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "451.01 533.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 414.00 324.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "451.01 281.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 414.00 72.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "451.01 29.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET"] + ["0.88 0.88 0.88 RG" + "36.00 18.00 m" + "36.00 774.00 l" + "S" + "216.00 18.00 m" + "216.00 774.00 l" + "S" + "396.00 18.00 m" + "396.00 774.00 l" + "S" + "576.00 18.00 m" + "576.00 774.00 l" + "S" + "36.00 18.00 m" + "576.00 18.00 l" + "S" + "36.00 270.00 m" + "576.00 270.00 l" + "S" + "36.00 522.00 m" + "576.00 522.00 l" + "S" + "36.00 774.00 m" + "576.00 774.00 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 781.20 Td" + "#hex:00a9014d01930178000303fa Tj" + "ET" + "BT" + "/F2 8.00 Tf" + "404.64 696.24 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de0003016b018d01be01840118018f01d6000301180003018d014301c901c90118015e0143000301f6016b01d60166016b018f00030118018f0003019b0133017d0143013401d60003016b018f Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f015e014305fc000301180003018d014301c901c90118015e0143000301d60166011801d60003016b01c9000301de01d601d6014301c10143013b000301f601660143018f00030118000301d601c1016b015e015e014301c1 Tj" + "0.00 -8.80 Td" + "#hex:0134019b018f013b016b01d6016b019b018f0003016b01c90003018d014301d60608000300200166019b019b01c9014300030118018f0003019b0133017d0143013401d6000301d60166011801d6000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:01340118018f000301c90143014300030118018f013b000301d60166011801d60003016b01c9018f060c01d6000301330143016b018f015e000301f6019b01c1018f0003019b01c100030134011801c101c1016b0143013b0003013301fc Tj" + "0.00 -8.80 Td" + "#hex:0118018f019b01d60166014301c10003013401c10143011801d601de01c101430608000300c101660143018f000301c901be014301180181000301d6016601430003018d014301c901c90118015e014305fc Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b013401660003018d01de01c901d60003013301430003056b056e000301f6019b01c1013b01c90003019b01c100030184014301c901c905fc000301d60166019b01de015e01660003016b01d6000301340118018f Tj" + "0.00 -8.80 Td" + "#hex:013301430003013b01430184016b01f5014301c10143013b0003019b01f5014301c10003011801c900030184019b018f015e0003011801c90003056a05690003018d016b018f01de01d6014301c90608 Tj" + "0.00 -8.80 Td" + "#hex:004a016b018f01180184018401fc05fc0003013b014301d6014301c1018d016b018f0143000301d60166014300030134016b01c1013401de018d01c901d60118018f01340143000301d60166011801d6000301f6016b01840184 Tj" + "0.00 -8.80 Td" + "#hex:01d601c1016b015e015e014301c1000301d601660143000301c901be014301840184000301d6019b0003013b01430184016b01f5014301c1000301fc019b01de01c10003018d014301c901c90118015e01430608 Tj" + "0.00 -8.80 Td" + "#hex:00e001660143018f000301d60166011801d600030134016b01c1013401de018d01c901d60118018f013401430003019b0134013401de01c101c905fc000301180003018d0118015e016b013401180184 Tj" + "0.00 -8.80 Td" + "#hex:018d019b01de01d601660003011801be01be0143011801c101c90003019b018f000301d6016601430003019b0133017d0143013401d600030118018f013b000301c101430134016b01d6014301c9000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:018d014301c901c90118015e01430003016b018f000301fc019b01de01c1000301f5019b016b0134014300030118018f013b0003011801d6000301d601660143000301c90118018d0143000301f5019b018401de018d0143 Tj" + "0.00 -8.80 Td" + "#hex:01fc019b01de000301c901be019b01810143060800030058015d000301d6016601430003019b0133017d0143013401d6000301fc019b01de000301340166019b01c9014300030166011801c9000301180003018d019b01de01d60166 Tj" + "0.00 -8.80 Td" + "#hex:019b01c1000301c9019b018d014301d60166016b018f015e000301d60166011801d600030184019b019b018101c900030184016b01810143000301180003018d019b01de01d6016600030628015d019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:014301fb0118018d01be0184014305fc000301d6016601430003018d019b01de01d601660003019b015d00030118000301c901d6011801d601de0143062905fc000301d6016601430003018d0118015e016b013401180184 Tj" + "0.00 -8.80 Td" + "#hex:018d019b01de01d601660003011801be01be0143011801c101c9000301d60166014301c10143000301c9019b000301d60166011801d6000301d601660143000301f6019b01c1013b01c90003011801be01be0143011801c1 Tj" + "0.00 -8.80 Td" + "#hex:01d6019b00030134019b018d01430003015d01c1019b018d000301d6016601430003019b0133017d0143013401d6060c01c90003018d019b01de01d601660608000300e001660143018f000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:0134011801c901d6000301d60166016b01c9000301c901be01430184018405fc000301fc019b01de000301340118018f00030166011801f50143000301d601660143000301c901be01430184018400030143018f013b00030118025e014301c1 Tj" + "0.00 -8.80 Td" + "#hex:016b01d60003013b01430184016b01f5014301c101c90003016b01d601c90003018d014301c901c90118015e014305fc0003019b01c10003016b01d6000301340118018f000301c10143018d0118016b018f00030118018f013b Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "404.64 734.40 Td" + "0.00 -8.80 Td" + "#hex:0004000301fe01c2014d01b901b90003016801a0020b000301d001920003019b01d001c401780231016901d001c201680003014d01c40170000301b2014d0170017800030170021301fe020b0003022b01d001f6020b019b0003014d020b000301b90178014d01fe020b Tj" + "0.00 -8.80 Td" + "#hex:03fa03f90003019301f304760003022b019b01a00169019b0003020b019b0178000301fe01f3017801b901b90003016901d001c401fe021301c2017801fe Tj" + "ET" + "q" + "/gs1 gs" + "q" + "13.20 0.00 0.00 18.00 562.20 754.56 cm" + "/Im1 Do" + "Q" + "Q" + "BT" + "/F3 10.00 Tf" + "404.64 774.00 Td" + "0.00 -11.00 Td" + "#hex:00780118015e016b013400030078019b01de01d60166 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "467.46 774.00 Td" + "0.00 -11.00 Td" + "#hex:000304a201f601a0020b0213014d01b904a3 Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "404.64 760.32 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303fb0003005801b901b9021301fe01a001d001c4 Tj" + "ET" + "q" + "/gs2 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 404.64 732.24 cm" + "/Form2 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "404.64 736.56 Td" + "\"1 min\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs3 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 440.64 732.24 cm" + "/Form3 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "440.64 736.56 Td" + "\"30 ft\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs4 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 476.64 732.24 cm" + "/Form4 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "476.64 736.56 Td" + "\"V,S,M\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs5 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 512.64 732.24 cm" + "/Form5 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "512.64 736.56 Td" + "\"Until dispelled\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs6 gs" + "0.00 0.00 0.00 rg" + "0.02 0.00 0.00 0.02 561.60 525.60 cm" + "/Form6 Do" + "Q" + "BT" + "/F2 8.00 Tf" + "224.64 696.24 Td" + "0.00 -8.80 Td" + "#hex:001f01fc00030134011801c901d6016b018f015e0003015e0143018d0640016b018f01840118016b013b000301c901d6016b0134018101c905fc000301c1019b01840184016b018f015e0003013b01c10118015e019b018f Tj" + "0.00 -8.80 Td" + "#hex:0133019b018f014301c905fc00030184011801fc016b018f015e0003019b01de01d60003019b01c1018f011801d6014300030134011801c1013b01c905fc0003019b01c100030143018d01be0184019b01fc016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:01c9019b018d01430003019b01d60166014301c10003013b016b01f5016b018f016b018f015e000301d6019b019b018405fc000301fc019b01de000301c1014301340143016b01f5014300030118018f0003019b018d0143018f Tj" + "0.00 -8.80 Td" + "#hex:015d01c1019b018d00030118018f0003019b01d60166014301c101f6019b01c10184013b018401fc00030143018f01d6016b01d601fc000301180133019b01de01d6000301d601660143000301c1014301c901de018401d601c9 Tj" + "0.00 -8.80 Td" + "#hex:019b015d00030118000301c901be01430134016b025b013400030134019b01de01c101c901430003019b015d00030118013401d6016b019b018f000301d60166011801d6000301fc019b01de000301be01840118018f000301d6019b Tj" + "0.00 -8.80 Td" + "#hex:01d6011801810143000301f6016b01d60166016b018f000301d6016601430003018f014301fb01d60003056c05690003018d016b018f01de01d6014301c90608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c90003015d01c1019b018d000301d6016601430003015d019b01840184019b01f6016b018f015e000301be019b01c901c9016b0133018401430003019b018d0143018f01c905fb000305f8 Tj" + "0.00 -8.80 Td" + "#hex:00e001430118018405fc0003015d019b01c10003015e019b019b013b000301c1014301c901de018401d601c9000305f8000300e0019b014305fc0003015d019b01c1000301330118013b000301c1014301c901de018401d601c9000305f8 Tj" + "0.00 -8.80 Td" + "#hex:00e001430118018400030118018f013b000301f6019b014305fc0003015d019b01c100030133019b01d601660003015e019b019b013b00030118018f013b000301330118013b000301c1014301c901de018401d601c9000305f8 Tj" + "0.00 -8.80 Td" + "#hex:007a019b01d60166016b018f015e05fc0003015d019b01c1000301c1014301c901de018401d601c9000301d60166011801d60003011801c10143018f060c01d60003014301c901be01430134016b01180184018401fc0003015e019b019b013b Tj" + "0.00 -8.80 Td" + "#hex:019b01c1000301330118013b000300c101660143000301c901be0143018401840003013b019b014301c9018f060c01d6000301d60118018101430003016b018f01d6019b0003011801340134019b01de018f01d600030118018f01fc Tj" + "0.00 -8.80 Td" + "#hex:01be019b01c901c9016b01330184014300030134016b01c1013401de018d01c901d60118018f0134014301c9000301d60166011801d60003018d016b015e016601d60003013401660118018f015e0143000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:019b01de01d60134019b018d014305fc000301c901de013401660003011801c9000301d60166014300030134011801c901d6016b018f015e0003019b015d00030118013b013b016b01d6016b019b018f01180184 Tj" + "0.00 -8.80 Td" + "#hex:01c901be01430184018401c90003019b01c1000301d60166014300030184019b01c901c90003019b01c10003015e0118016b018f0003019b015d0003011800030134019b018d01be0118018f016b019b018f060800030058015d000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:0134011801c901d6000301d601660143000301c901be014301840184000301d601f6019b0003019b01c10003018d019b01c10143000301d6016b018d014301c9000301330143015d019b01c10143 Tj" + "0.00 -8.80 Td" + "#hex:0134019b018d01be0184014301d6016b018f015e000301fc019b01de01c10003018f014301fb01d600030184019b018f015e000301c1014301c901d605fc000301d60166014301c101430003016b01c900030118 Tj" + "0.00 -8.80 Td" + "#hex:013401de018d01de0184011801d6016b01f501430003056b056e000301be014301c101340143018f01d60003013401660118018f013401430003015d019b01c10003014301180134016600030134011801c901d6016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:0118025e014301c1000301d6016601430003025b01c101c901d6000301d60166011801d6000301fc019b01de0003015e014301d600030118000301c10118018f013b019b018d000301c101430118013b016b018f015e0608 Tj" + "0.00 -8.80 Td" + "#hex:00c1016601430003004b00780003018d01180181014301c9000301d60166016b01c9000301c1019b018401840003016b018f000301c90143013401c1014301d60608 Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "224.64 734.40 Td" + "0.00 -8.80 Td" + "#hex:00b401f30178016901a0014d01b901b90231000301c2014d01f601b601780170000301fe020b01a0016901b601fe04760003016801d001c4017801fe0476000301d001f6000301fe01a001c201a001b9014d01f60003020b01d001b6017801c401fe Tj" + "0.00 -8.80 Td" + "#hex:022b01d001f6020b019b0003014d020b000301b90178014d01fe020b000303fb03fe0003019301f3 Tj" + "ET" + "q" + "/gs7 gs" + "q" + "13.20 0.00 0.00 18.00 382.20 754.56 cm" + "/Im1 Do" + "Q" + "Q" + "BT" + "/F3 10.00 Tf" + "224.64 774.00 Td" + "0.00 -11.00 Td" + "#hex:000401de015e01de01c101fc Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "259.93 774.00 Td" + "0.00 -11.00 Td" + "#hex:000304a201f601a0020b0213014d01b904a3 Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "224.64 760.32 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303fb0003002701a0022a01a001c4014d020b01a001d001c4 Tj" + "ET" + "q" + "/gs8 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 224.64 732.24 cm" + "/Form2 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "224.64 736.56 Td" + "\"1 min\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs9 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 260.64 732.24 cm" + "/Form3 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "260.64 736.56 Td" + "\"Self\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs10 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 296.64 732.24 cm" + "/Form4 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "296.64 736.56 Td" + "\"V,S,M\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs11 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 332.64 732.24 cm" + "/Form5 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "332.64 736.56 Td" + "\"Inst\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "BT" + "/F2 8.00 Tf" + "44.64 696.24 Td" + "0.00 -8.80 Td" + "#hex:0004000301f6011801f501430003019b015d000301d6016601de018f013b014301c1019b01de01c90003015d019b01c101340143000301c901f60143014301be01c90003019b01de01d60003015d01c1019b018d Tj" + "0.00 -8.80 Td" + "#hex:01fc019b01de0608000300310118013401660003013401c10143011801d601de01c101430003016b018f000301180003056a056e0640015d019b019b01d60003013401de01330143 Tj" + "0.00 -8.80 Td" + "#hex:019b01c1016b015e016b018f011801d6016b018f015e0003015d01c1019b018d000301fc019b01de0003018d01de01c901d60003018d01180181014300030118 Tj" + "0.00 -8.80 Td" + "#hex:0020019b018f01c901d6016b01d601de01d6016b019b018f000301c9011801f5016b018f015e000301d6016601c1019b01f6060800030086018f000301180003015d0118016b01840143013b000301c9011801f5014305fc00030118 Tj" + "0.00 -8.80 Td" + "#hex:013401c10143011801d601de01c10143000301d601180181014301c90003056b013b0571000301d6016601de018f013b014301c10003013b0118018d0118015e014300030118018f013b0003016b01c9 Tj" + "0.00 -8.80 Td" + "#hex:01be01de01c901660143013b0003056a05690003015d0143014301d60003011801f6011801fc0003015d01c1019b018d000301fc019b01de060800030086018f00030118000301c901de01340134014301c901c9015d01de0184 Tj" + "0.00 -8.80 Td" + "#hex:01c9011801f5014305fc000301d6016601430003013401c10143011801d601de01c10143000301d601180181014301c90003016601180184015d0003011801c90003018d01de013401660003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:0118018f013b0003016b01c9018f060c01d6000301be01de01c901660143013b060800030058018f00030118013b013b016b01d6016b019b018f05fc000301de018f01c90143013401de01c10143013b Tj" + "0.00 -8.80 Td" + "#hex:019b0133017d0143013401d601c9000301d60166011801d60003011801c1014300030134019b018d01be0184014301d60143018401fc000301f6016b01d60166016b018f000301d6016601430003011801c1014301180003019b015d Tj" + "0.00 -8.80 Td" + "#hex:014302480143013401d60003011801c101430003011801de01d6019b018d011801d6016b013401180184018401fc000301be01de01c901660143013b0003056a05690003015d0143014301d60003011801f6011801fc Tj" + "0.00 -8.80 Td" + "#hex:015d01c1019b018d000301fc019b01de0003013301fc000301d601660143000301c901be014301840184060c01c90003014302480143013401d605fc00030118018f013b000301d601660143000301c901be014301840184 Tj" + "0.00 -8.80 Td" + "#hex:0143018d016b01d601c900030118000301d6016601de018f013b014301c1019b01de01c900030133019b019b018d0003011801de013b016b0133018401430003019b01de01d6000301d6019b0003056c05690569 Tj" + "0.00 -8.80 Td" + "#hex:015d0143014301d606080003000401d600030053016b015e0166014301c10003006e014301f50143018401c90608000300e001660143018f000301fc019b01de00030134011801c901d6000301d60166016b01c9 Tj" + "0.00 -8.80 Td" + "#hex:01c901be014301840184000301de01c9016b018f015e00030118000301c901be014301840184000301c90184019b01d60003019b015d0003056b018f013b00030184014301f5014301840003019b01c100030166016b015e0166014301c105fc Tj" + "0.00 -8.80 Td" + "#hex:01d6016601430003013b0118018d0118015e01430003016b018f013401c10143011801c9014301c90003013301fc0003056a013b05710003015d019b01c100030143011801340166000301c90184019b01d600030184014301f501430184 Tj" + "0.00 -8.80 Td" + "#hex:01180133019b01f501430003056a01c901d60608 Tj" + "ET" + "q" + "/gs12 gs" + "q" + "13.20 0.00 0.00 18.00 202.20 754.56 cm" + "/Im1 Do" + "Q" + "Q" + "BT" + "/F3 10.00 Tf" + "44.64 774.00 Td" + "0.00 -11.00 Td" + "#hex:00c1016601de018f013b014301c101f6011801f50143 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "110.66 774.00 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "44.64 760.32 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303fa00030031022a01d00169014d020b01a001d001c4 Tj" + "ET" + "q" + "/gs13 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 44.64 732.24 cm" + "/Form2 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "44.64 736.56 Td" + "\"1 Act.\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs14 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 80.64 732.24 cm" + "/Form3 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "80.64 736.56 Td" + "\"Self\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs15 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 116.64 732.24 cm" + "/Form4 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "116.64 736.56 Td" + "\"V,S\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs16 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 152.64 732.24 cm" + "/Form5 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "152.64 736.56 Td" + "\"Inst\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "BT" + "/F2 8.00 Tf" + "404.64 444.24 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de000301d601430184014301be019b01c101d6000301fc019b01de01c101c901430184015d0003015d01c1019b018d000301fc019b01de01c10003013401de01c101c10143018f01d6 Tj" + "0.00 -8.80 Td" + "#hex:0184019b0134011801d6016b019b018f000301d6019b00030118018f01fc0003019b01d60166014301c1000301c901be019b01d6000301f6016b01d60166016b018f000301c10118018f015e01430608000300e6019b01de Tj" + "0.00 -8.80 Td" + "#hex:011801c101c1016b01f501430003011801d60003014301fb0118013401d6018401fc000301d601660143000301c901be019b01d60003013b014301c9016b01c10143013b06080003005801d6000301340118018f00030133014300030118 Tj" + "0.00 -8.80 Td" + "#hex:01be0184011801340143000301fc019b01de000301340118018f000301c90143014305fc0003019b018f0143000301fc019b01de000301340118018f000301f5016b01c901de01180184016b0206014305fc0003019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:019b018f0143000301fc019b01de000301340118018f0003013b014301c9013401c1016b013301430003013301fc000301c901d6011801d6016b018f015e0003013b016b01c901d60118018f0134014300030118018f013b Tj" + "0.00 -8.80 Td" + "#hex:013b016b01c10143013401d6016b019b018f05fc000301c901de013401660003011801c900030655056b056905690003015d0143014301d6000301c901d601c10118016b015e016601d6 Tj" + "0.00 -8.80 Td" + "#hex:013b019b01f6018f01f6011801c1013b06560003019b01c10003065501de01be01f6011801c1013b000301d6019b000301d6016601430003018f019b01c101d6016601f6014301c901d60003011801d600030118 Tj" + "0.00 -8.80 Td" + "#hex:056d056e0640013b0143015e01c10143014300030118018f015e0184014305fc0003056c056905690003015d0143014301d606080656000300e6019b01de000301340118018f0003013301c1016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:01180184019b018f015e0003019b0133017d0143013401d601c90003011801c900030184019b018f015e0003011801c9000301d601660143016b01c1000301f60143016b015e016601d60003013b019b014301c9018f060c01d6 Tj" + "0.00 -8.80 Td" + "#hex:014301fb013401430143013b000301f60166011801d6000301fc019b01de000301340118018f00030134011801c101c101fc0608000300e6019b01de000301340118018f00030118018401c9019b0003013301c1016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:019b018f0143000301f6016b01840184016b018f015e0003013401c10143011801d601de01c101430003019b015d000301fc019b01de01c1000301c9016b020601430003019b01c1000301c9018d011801840184014301c1 Tj" + "0.00 -8.80 Td" + "#hex:01f60166019b0003016b01c900030134011801c101c101fc016b018f015e0003015e0143011801c1000301de01be000301d6019b0003016b01d601c900030134011801c101c101fc016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:0134011801be01180134016b01d601fc0608000300c1016601430003013401c10143011801d601de01c101430003018d01de01c901d6000301330143000301f6016b01d60166016b018f0003056e0003015d0143014301d60003019b015d Tj" + "0.00 -8.80 Td" + "#hex:01fc019b01de000301f601660143018f000301fc019b01de00030134011801c901d6000301d60166016b01c9000301c901be014301840184060800030058015d000301fc019b01de000301f6019b01de0184013b Tj" + "0.00 -8.80 Td" + "#hex:011801c101c1016b01f501430003016b018f00030118000301be018401180134014300030118018401c101430118013b01fc0003019b0134013401de01be016b0143013b0003013301fc00030118018f0003019b0133017d0143013401d6 Tj" + "0.00 -8.80 Td" + "#hex:019b01c1000301180003013401c10143011801d601de01c1014305fc000301fc019b01de00030118018f013b00030118018f01fc0003013401c10143011801d601de01c10143000301d601c1011801f501430184016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:01f6016b01d60166000301fc019b01de00030143011801340166000301d60118018101430003056d013b056f0003015d019b01c1013401430003013b0118018d0118015e014305fc00030118018f013b000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01c901be0143018401840003015d0118016b018401c9000301d6019b000301d601430184014301be019b01c101d6000301fc019b01de0608 Tj" + "ET" + "q" + "/gs17 gs" + "q" + "13.20 0.00 0.00 18.00 562.20 502.56 cm" + "/Im1 Do" + "Q" + "Q" + "BT" + "/F3 10.00 Tf" + "404.64 522.00 Td" + "0.00 -11.00 Td" + "#hex:0027016b018d0143018f01c9016b019b018f00030027019b019b01c1 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "483.21 522.00 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "404.64 508.32 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303fd0003002001d001c401b2021301f6014d020b01a001d001c4 Tj" + "ET" + "q" + "/gs18 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 404.64 480.24 cm" + "/Form2 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "404.64 484.56 Td" + "\"1 Act.\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs19 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 440.64 480.24 cm" + "/Form3 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "440.64 484.56 Td" + "\"500 ft\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs20 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 476.64 480.24 cm" + "/Form4 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "476.64 484.56 Td" + "\"V\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs21 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 512.64 480.24 cm" + "/Form5 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "512.64 484.56 Td" + "\"Inst\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "BT" + "/F2 8.00 Tf" + "224.64 444.24 Td" + "0.00 -8.80 Td" + "#hex:00040003056a05690640015d019b019b01d6064001c10118013b016b01de01c90003016b018d018d019b0133016b018401430003013b019b018d01430003019b015d0003015d019b01c101340143 Tj" + "0.00 -8.80 Td" + "#hex:01c901be01c1016b018f015e01c90003016b018f01d6019b0003014301fb016b01c901d60143018f013401430003011801c1019b01de018f013b00030118018f013b000301180133019b01f50143000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:0118018f013b000301c10143018d0118016b018f01c9000301c901d6011801d6016b019b018f011801c101fc0003015d019b01c1000301d6016601430003013b01de01c1011801d6016b019b018f0608000300c101660143 Tj" + "0.00 -8.80 Td" + "#hex:01c901be01430184018400030143018f013b01c90003016b015d000301fc019b01de000301840143011801f501430003016b01d601c90003011801c10143011806080003007a016b018f01430003013401c10143011801d601de01c1014301c9 Tj" + "0.00 -8.80 Td" + "#hex:019b015d000300780143013b016b01de018d000301c9016b020601430003019b01c1000301c9018d011801840184014301c1000301340118018f0003025b01d60003016b018f01c9016b013b0143000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:013b019b018d0143000301f6016b01d60166000301fc019b01de0608000300c101660143000301c901be0143018401840003015d0118016b018401c90003016b015d0003016b01d601c90003011801c101430118 Tj" + "0.00 -8.80 Td" + "#hex:016b018f0134018401de013b014301c90003011800030184011801c1015e014301c10003013401c10143011801d601de01c101430003019b01c10003018d019b01c10143000301d601660118018f0003018f016b018f0143 Tj" + "0.00 -8.80 Td" + "#hex:013401c10143011801d601de01c1014301c906080003002001c10143011801d601de01c1014301c900030118018f013b0003019b0133017d0143013401d601c9000301f6016b01d60166016b018f000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:013b019b018d0143000301f601660143018f000301fc019b01de00030134011801c901d6000301d60166016b01c9000301c901be014301840184000301340118018f0003018d019b01f50143 Tj" + "0.00 -8.80 Td" + "#hex:01d6016601c1019b01de015e01660003016b01d60003015d01c101430143018401fc060800030004018401840003019b01d60166014301c10003013401c10143011801d601de01c1014301c900030118018f013b Tj" + "0.00 -8.80 Td" + "#hex:019b0133017d0143013401d601c90003011801c1014300030133011801c101c10143013b0003015d01c1019b018d000301be011801c901c9016b018f015e000301d6016601c1019b01de015e01660003016b01d60608 Tj" + "0.00 -8.80 Td" + "#hex:00b401be01430184018401c900030118018f013b0003019b01d60166014301c10003018d0118015e016b0134011801840003014302480143013401d601c9000301340118018f060c01d60003014301fb01d60143018f013b Tj" + "0.00 -8.80 Td" + "#hex:01d6016601c1019b01de015e0166000301d6016601430003013b019b018d01430003019b01c100030133014300030134011801c901d6000301d6016601c1019b01de015e01660003016b01d60608000300c101660143 Tj" + "0.00 -8.80 Td" + "#hex:011801d6018d019b01c901be0166014301c101430003016b018f01c9016b013b0143000301d601660143000301c901be0118013401430003016b01c900030134019b018d015d019b01c101d60118013301840143 Tj" + "0.00 -8.80 Td" + "#hex:0118018f013b0003013b01c101fc05fc000301c10143015e011801c1013b0184014301c901c90003019b015d000301d601660143000301f60143011801d60166014301c10003019b01de01d601c9016b013b01430608 Tj" + "0.00 -8.80 Td" + "#hex:00c8018f01d6016b0184000301d601660143000301c901be01430184018400030143018f013b01c905fc000301fc019b01de000301340118018f00030134019b018d018d0118018f013b000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:016b018f01d6014301c1016b019b01c1000301d6019b0003013301430134019b018d01430003013b016b018d018401fc00030184016b01d60003019b01c10003013b011801c101810608000300c1016601430003013b019b018d0143 Tj" + "0.00 -8.80 Td" + "#hex:016b01c90003019b01be011801c001de01430003015d01c1019b018d000301d6016601430003019b01de01d601c9016b013b014305fc0003019b015d00030118018f01fc00030134019b0184019b01c1000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014305fc0003013301de01d60003016b01d60003016b01c9000301d601c10118018f01c901be011801c10143018f01d60003015d01c1019b018d000301d6016601430003016b018f01c9016b013b01430608 Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "224.64 482.40 Td" + "0.00 -8.80 Td" + "#hex:0004000301fe01c2014d01b901b90003016901f6023101fe020b014d01b9000301680178014d0170 Tj" + "ET" + "q" + "/gs22 gs" + "q" + "13.20 0.00 0.00 18.00 382.20 502.56 cm" + "/Im1 Do" + "Q" + "Q" + "BT" + "/F3 10.00 Tf" + "224.64 522.00 Td" + "0.00 -11.00 Td" + "#hex:00c1016b018f01fc0003005301de01d6 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "266.75 522.00 Td" + "0.00 -11.00 Td" + "#hex:000304a201f601a0020b0213014d01b904a3 Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "224.64 508.32 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303fc00030031022a01d00169014d020b01a001d001c4 Tj" + "ET" + "q" + "/gs23 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 224.64 480.24 cm" + "/Form2 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "224.64 484.56 Td" + "\"1 min\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs24 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 260.64 480.24 cm" + "/Form3 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "260.64 484.56 Td" + "\"Self\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs25 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 296.64 480.24 cm" + "/Form4 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "296.64 484.56 Td" + "\"V,S,M\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs26 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 332.64 480.24 cm" + "/Form5 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "332.64 484.56 Td" + "\"8 hrs\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "BT" + "/F2 8.00 Tf" + "44.64 444.24 Td" + "0.00 -8.80 Td" + "#hex:00c10166016b01c9000301c901be0143018401840003013401c10143011801d6014301c900030118018f000301de018f013b01430118013b000301c9014301c101f50118018f01d60608000300200166019b019b01c9014300030118 Tj" + "0.00 -8.80 Td" + "#hex:01be016b018401430003019b015d00030133019b018f014301c90003019b01c10003011800030134019b01c101be01c901430003019b015d00030118000300780143013b016b01de018d0003019b01c1000300b4018d011801840184 Tj" + "0.00 -8.80 Td" + "#hex:016601de018d0118018f019b016b013b000301f6016b01d60166016b018f000301c10118018f015e01430608000300e6019b01de01c1000301c901be0143018401840003016b018d013301de014301c9000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01d6011801c1015e014301d6000301f6016b01d60166000301180003015d019b01de01840003018d016b018d016b013401c101fc0003019b015d00030184016b015d014305fc000301c10118016b01c9016b018f015e0003016b01d60003011801c9 Tj" + "0.00 -8.80 Td" + "#hex:0118018f000301de018f013b01430118013b0003013401c10143011801d601de01c101430608000300c101660143000301d6011801c1015e014301d60003013301430134019b018d014301c900030118 Tj" + "0.00 -8.80 Td" + "#hex:01c9018101430184014301d6019b018f0003016b015d000301fc019b01de000301340166019b01c9014300030133019b018f014301c90003019b01c10003011800030206019b018d0133016b01430003016b015d000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:01340166019b01c901430003011800030134019b01c101be01c901430003062801d6016601430003004b007800030166011801c9000301d6016601430003013401c10143011801d601de01c10143060c01c9 Tj" + "0.00 -8.80 Td" + "#hex:015e0118018d0143000301c901d6011801d6016b01c901d6016b013401c90629060800030086018f000301430118013401660003019b015d000301fc019b01de01c1000301d601de01c1018f01c905fc000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:01340118018f000301de01c901430003011800030133019b018f01de01c900030118013401d6016b019b018f000301d6019b0003018d0143018f01d601180184018401fc00030134019b018d018d0118018f013b Tj" + "0.00 -8.80 Td" + "#hex:0118018f01fc0003013401c10143011801d601de01c10143000301fc019b01de0003018d0118013b0143000301f6016b01d60166000301d60166016b01c9000301c901be0143018401840003016b015d000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:013401c10143011801d601de01c101430003016b01c9000301f6016b01d60166016b018f0003056f05690003015d0143014301d60003019b015d000301fc019b01de00030628016b015d000301fc019b01de00030134019b018f01d601c1019b0184 Tj" + "0.00 -8.80 Td" + "#hex:018d01de018401d6016b01be018401430003013401c10143011801d601de01c1014301c905fc000301fc019b01de000301340118018f00030134019b018d018d0118018f013b00030118018f01fc0003019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:0118018401840003019b015d000301d601660143018d0003011801d6000301d601660143000301c90118018d0143000301d6016b018d014305fc0003016b01c901c901de016b018f015e000301d601660143000301c90118018d0143 Tj" + "0.00 -8.80 Td" + "#hex:0134019b018d018d0118018f013b000301d6019b000301430118013401660003019b018f014306290608000300e6019b01de0003013b01430134016b013b0143000301f60166011801d600030118013401d6016b019b018f Tj" + "0.00 -8.80 Td" + "#hex:01d6016601430003013401c10143011801d601de01c10143000301f6016b01840184000301d601180181014300030118018f013b000301f60166014301c101430003016b01d6000301f6016b018401840003018d019b01f50143 Tj" + "0.00 -8.80 Td" + "#hex:013b01de01c1016b018f015e0003016b01d601c90003018f014301fb01d6000301d601de01c1018f05fc0003019b01c1000301fc019b01de000301340118018f0003016b01c901c901de0143000301180003015e0143018f014301c101180184 Tj" + "0.00 -8.80 Td" + "#hex:0134019b018d018d0118018f013b05fc000301c901de013401660003011801c9000301d6019b0003015e01de011801c1013b00030118000301be011801c101d6016b013401de0184011801c1 Tj" + "0.00 -8.80 Td" + "#hex:013401660118018d0133014301c10003019b01c100030134019b01c101c1016b013b019b01c1060800030058015d000301fc019b01de0003016b01c901c901de01430003018f019b Tj" + "0.00 -8.80 Td" + "#hex:0134019b018d018d0118018f013b01c905fc000301d6016601430003013401c10143011801d601de01c101430003019b018f018401fc0003013b0143015d0143018f013b01c90003016b01d601c901430184015d Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "44.64 482.40 Td" + "0.00 -8.80 Td" + "#hex:00040003017001f601d001f3000301d001920003016801b901d001d0017004760003014d000301f301a0017801690178000301d001920003027f017801fe019b04760003014d01c401700003014d000301f301a001c40169019b000301d001920003016801d001c40178 Tj" + "0.00 -8.80 Td" + "#hex:0170021301fe020b Tj" + "ET" + "q" + "/gs27 gs" + "q" + "13.20 0.00 0.00 18.00 202.20 502.56 cm" + "/Im1 Do" + "Q" + "Q" + "BT" + "/F3 10.00 Tf" + "44.64 522.00 Td" + "0.00 -11.00 Td" + "#hex:0004018f016b018d011801d601430003002701430118013b Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "112.15 522.00 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "44.64 508.32 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303fc0003007a0178016901f601d001c2014d01c401690231 Tj" + "ET" + "q" + "/gs28 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 44.64 480.24 cm" + "/Form2 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "44.64 484.56 Td" + "\"1 min\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs29 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 80.64 480.24 cm" + "/Form3 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "80.64 484.56 Td" + "\"10 ft\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs30 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 116.64 480.24 cm" + "/Form4 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "116.64 484.56 Td" + "\"V,S,M\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs31 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 152.64 480.24 cm" + "/Form5 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "152.64 484.56 Td" + "\"Inst\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs32 gs" + "0.00 0.00 0.00 rg" + "0.02 0.00 0.00 0.02 201.60 273.60 cm" + "/Form6 Do" + "Q" + "BT" + "/F2 8.00 Tf" + "404.64 192.24 Td" + "0.00 -8.80 Td" + "#hex:00200166019b019b01c9014300030118018f0003011801c1014301180003019b015d000301d6014301c101c10118016b018f0003018f019b00030184011801c1015e014301c1000301d601660118018f0003056d0569 Tj" + "0.00 -8.80 Td" + "#hex:015d0143014301d60003019b018f00030118000301c9016b013b0143000301f6016b01d60166016b018f000301c10118018f015e01430608000300e6019b01de000301340118018f000301c1014301c90166011801be0143 Tj" + "0.00 -8.80 Td" + "#hex:013b016b01c101d605fc000301c90118018f013b05fc0003019b01c1000301340184011801fc0003016b018f000301d6016601430003011801c1014301180003016b018f00030118018f01fc0003018d0118018f018f014301c1 Tj" + "0.00 -8.80 Td" + "#hex:01fc019b01de000301340166019b019b01c901430003015d019b01c1000301d6016601430003013b01de01c1011801d6016b019b018f0608000300e6019b01de000301340118018f000301c10118016b01c901430003019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:0184019b01f6014301c1000301d6016601430003011801c101430118060c01c9000301430184014301f5011801d6016b019b018f05fc0003013401c10143011801d601430003019b01c10003025b018401840003016b018f00030118 Tj" + "0.00 -8.80 Td" + "#hex:01d601c10143018f0134016605fc0003014301c10143013401d60003019b01c10003025d011801d601d60143018f00030118000301f601180184018405fc0003019b01c10003015d019b01c1018d00030118000301be016b01840184011801c10608 Tj" + "0.00 -8.80 Td" + "#hex:00c1016601430003014301fb01d60143018f01d60003019b015d00030118018f01fc000301c901de013401660003013401660118018f015e014301c9000301340118018f060c01d60003014301fb013401430143013b Tj" + "0.00 -8.80 Td" + "#hex:016601180184015d000301d6016601430003011801c101430118060c01c900030184011801c1015e014301c901d60003013b016b018d0143018f01c9016b019b018f0608000300b4019b05fc0003016b015d000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:011802480143013401d6000301180003056d05690640015d019b019b01d6000301c901c001de011801c1014305fc000301fc019b01de000301340118018f0003013401c10143011801d6014300030118000301be016b01840184011801c1 Tj" + "0.00 -8.80 Td" + "#hex:01de01be000301d6019b0003056b05690003015d0143014301d600030166016b015e016605fc000301c10118016b01c901430003019b01c100030184019b01f6014301c1000301d601660143000301c901c001de011801c10143060c01c9 Tj" + "0.00 -8.80 Td" + "#hex:01430184014301f5011801d6016b019b018f0003013301fc000301de01be000301d6019b0003056b05690003015d0143014301d605fc0003013b016b015e00030118000301d601c10143018f01340166000301de01be000301d6019b0003056b0569 Tj" + "0.00 -8.80 Td" + "#hex:015d0143014301d60003013b0143014301be05fc00030118018f013b000301c9019b0003019b018f06080003005801d6000301d601180181014301c90003056a05690003018d016b018f01de01d6014301c90003015d019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:01d60166014301c901430003013401660118018f015e014301c9000301d6019b00030134019b018d01be0184014301d6014306080003000401d6000301d60166014300030143018f013b0003019b015d0003014301f5014301c101fc Tj" + "0.00 -8.80 Td" + "#hex:056a05690003018d016b018f01de01d6014301c9000301fc019b01de000301c901be0143018f013b00030134019b018f01340143018f01d601c1011801d6016b018f015e0003019b018f000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01c901be01430184018405fc000301fc019b01de000301340118018f000301340166019b019b01c90143000301180003018f014301f60003011801c1014301180003019b015d000301d6014301c101c10118016b018f000301d6019b Tj" + "0.00 -8.80 Td" + "#hex:011802480143013401d606080003001f01430134011801de01c90143000301d601660143000301d6014301c101c10118016b018f060c01c9000301d601c10118018f01c9015d019b01c1018d011801d6016b019b018f Tj" + "0.00 -8.80 Td" + "#hex:019b0134013401de01c101c9000301c90184019b01f6018401fc05fc0003013401c10143011801d601de01c1014301c90003016b018f000301d6016601430003011801c101430118000301340118018f060c01d6 Tj" + "0.00 -8.80 Td" + "#hex:01de01c901de01180184018401fc000301330143000301d601c1011801be01be0143013b0003019b01c10003016b018f017d01de01c10143013b0003013301fc000301d6016601430003015e01c1019b01de018f013b060c01c9 Tj" + "0.00 -8.80 Td" + "#hex:018d019b01f50143018d0143018f01d60608000300c10166016b01c9000301c901be014301840184000301340118018f060c01d60003018d0118018f016b01be01de0184011801d601430003018f011801d601de01c101180184 Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "404.64 230.40 Td" + "0.00 -8.80 Td" + "#hex:000401c4000301a001f601d001c40003016801b9014d017001780003014d01c401700003014d000301fe01c2014d01b901b900030168014d01930003016901d001c4020b014d01a001c401a001c401930003014d000301c201a00230020b021301f60178 Tj" + "0.00 -8.80 Td" + "#hex:01d00192000301fe01d001a001b901fe04b6016901b9014d02310476000301b901d0014d01c204760003014d01c40170000301fe014d01c40170 Tj" + "ET" + "q" + "/gs33 gs" + "q" + "13.20 0.00 0.00 18.00 562.20 250.56 cm" + "/Im1 Do" + "Q" + "Q" + "BT" + "/F3 10.00 Tf" + "404.64 270.00 Td" + "0.00 -11.00 Td" + "#hex:0078019b01f5014300030031011801c101d60166 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "459.65 270.00 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "404.64 256.32 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303ff000300c101f6014d01c401fe01c20213020b014d020b01a001d001c4 Tj" + "ET" + "q" + "/gs34 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 404.64 228.24 cm" + "/Form2 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "404.64 232.56 Td" + "\"1 Act.\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs35 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 440.64 228.24 cm" + "/Form3 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "440.64 232.56 Td" + "\"120 ft\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs36 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 476.64 228.24 cm" + "/Form4 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "476.64 232.56 Td" + "\"V,S,M\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs37 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 512.64 228.24 cm" + "/Form5 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "512.64 232.56 Td" + "\"Conc, 2 hrs\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs38 gs" + "0.00 0.00 0.00 rg" + "0.02 0.00 0.00 0.02 561.60 21.60 cm" + "/Form6 Do" + "Q" + "BT" + "/F2 8.00 Tf" + "224.64 192.24 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de0003016b018d013301de0143000301180003013401c10143011801d601de01c10143000301fc019b01de000301d6019b01de01340166000301f6016b01d60166000301be019b01c9016b01d6016b01f50143 Tj" + "0.00 -8.80 Td" + "#hex:0143018f014301c1015e01fc000301d6019b000301de018f013b019b000301180003013b01430133016b0184016b01d6011801d6016b018f015e0003014302480143013401d60608000300e6019b01de000301340118018f Tj" + "0.00 -8.80 Td" + "#hex:01c10143013b01de01340143000301d601660143000301d6011801c1015e014301d6060c01c90003014301fb0166011801de01c901d6016b019b018f00030184014301f5014301840003013301fc0003019b018f014305fc0003019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:0143018f013b0003019b018f01430003019b015d000301d6016601430003015d019b01840184019b01f6016b018f015e0003014302480143013401d601c90003019b018f000301d601660143000301d6011801c1015e014301d605fb000305f8 Tj" + "0.00 -8.80 Td" + "#hex:0086018f01430003014302480143013401d6000301d60166011801d6000301340166011801c1018d0143013b0003019b01c1000301be014301d601c1016b025b0143013b000301d601660143000301d6011801c1015e014301d6 Tj" + "0.00 -8.80 Td" + "#hex:05f800030086018f01430003013401de01c101c9014305fc0003016b018f0134018401de013b016b018f015e000301d601660143000301d6011801c1015e014301d6060c01c90003011801d601d601de018f0143018d0143018f01d6 Tj" + "0.00 -8.80 Td" + "#hex:01d6019b000301180003013401de01c101c90143013b0003018d0118015e016b01340003016b01d60143018d000305f800030004018f01fc000301c10143013b01de013401d6016b019b018f000301d6019b0003019b018f0143 Tj" + "0.00 -8.80 Td" + "#hex:019b015d000301d601660143000301d6011801c1015e014301d6060c01c9000301180133016b0184016b01d601fc000301c90134019b01c1014301c9000305f800030086018f01430003014302480143013401d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10143013b01de0134016b018f015e000301d601660143000301d6011801c1015e014301d6060c01c900030166016b01d6000301be019b016b018f01d60003018d011801fb016b018d01de018d Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "224.64 230.40 Td" + "0.00 -8.80 Td" + "#hex:002701a0014d01c201d001c4017000030170021301fe020b0003022b01d001f6020b019b0003014d020b000301b90178014d01fe020b000303fa03f903f90003019301f304760003022b019b01a00169019b0003020b019b0178000301fe01f3017801b901b9 Tj" + "0.00 -8.80 Td" + "#hex:016901d001c401fe021301c2017801fe Tj" + "ET" + "q" + "/gs39 gs" + "q" + "13.20 0.00 0.00 18.00 382.20 250.56 cm" + "/Im1 Do" + "Q" + "Q" + "BT" + "/F3 10.00 Tf" + "224.64 270.00 Td" + "0.00 -11.00 Td" + "#hex:004b01c10143011801d6014301c1000300ac014301c901d6019b01c1011801d6016b019b018f Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "319.16 270.00 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "224.64 256.32 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303fe00030004016801b2021301f6014d020b01a001d001c4 Tj" + "ET" + "q" + "/gs40 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 224.64 228.24 cm" + "/Form2 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "224.64 232.56 Td" + "\"1 Act.\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs41 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 260.64 228.24 cm" + "/Form3 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "260.64 232.56 Td" + "\"Touch\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs42 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 296.64 228.24 cm" + "/Form4 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "296.64 232.56 Td" + "\"V,S,M\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs43 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 332.64 228.24 cm" + "/Form5 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "332.64 232.56 Td" + "\"Inst\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "BT" + "/F2 8.00 Tf" + "44.64 192.24 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de000301be01de01840184000301f6016b01c901be01c90003019b015d000301c901660118013b019b01f60003018d011801d6014301c1016b011801840003015d01c1019b018d000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:00b401660118013b019b01f6015d014301840184000301d6019b0003013401c10143011801d60143000301180003018f019b018f0184016b01f5016b018f015e0003019b0133017d0143013401d60003019b015d Tj" + "0.00 -8.80 Td" + "#hex:01f50143015e014301d601180133018401430003018d011801d601d6014301c1000301f6016b01d60166016b018f000301c10118018f015e014305fb000301c9019b025e0003015e019b019b013b01c905fc Tj" + "0.00 -8.80 Td" + "#hex:01c1019b01be014305fc000301f6019b019b013b05fc0003019b01c1000301c9019b018d014301d60166016b018f015e000301c9016b018d016b0184011801c10608000300e6019b01de000301340118018f00030118018401c9019b Tj" + "0.00 -8.80 Td" + "#hex:01de01c90143000301d60166016b01c9000301c901be014301840184000301d6019b0003013401c10143011801d601430003018d016b018f014301c1011801840003019b0133017d0143013401d601c9000301c901de013401660003011801c9 Tj" + "0.00 -8.80 Td" + "#hex:01c901d6019b018f014305fc0003013401c101fc01c901d60118018405fc0003019b01c10003018d014301d6011801840608000300c1016601430003019b0133017d0143013401d60003013401c10143011801d60143013b Tj" + "0.00 -8.80 Td" + "#hex:018d01de01c901d60003013301430003018f019b00030184011801c1015e014301c1000301d601660118018f000301180003056e06400003015d019b019b01d60003013401de0133014305fc00030118018f013b000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:019b0133017d0143013401d60003018d01de01c901d60003013301430003019b015d000301180003015d019b01c1018d00030118018f013b0003018d011801d6014301c1016b01180184000301d60166011801d6000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:0166011801f50143000301c901430143018f000301330143015d019b01c101430608000300c1016601430003013b01de01c1011801d6016b019b018f0003013b014301be0143018f013b01c90003019b018f000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:019b0133017d0143013401d6060c01c90003018d011801d6014301c1016b01180184060800030058015d000301d6016601430003019b0133017d0143013401d60003016b01c900030134019b018d01be019b01c90143013b0003019b015d Tj" + "0.00 -8.80 Td" + "#hex:018d01de018401d6016b01be018401430003018d011801d6014301c1016b0118018401c905fc000301de01c90143000301d601660143000301c90166019b01c101d6014301c901d60003013b01de01c1011801d6016b019b018f0608 Tj" + "0.00 -8.80 Td" + "#hex:0078011801d6014301c1016b011801840003002701de01c1011801d6016b019b018f000300df0143015e014301d601180133018401430003018d011801d601d6014301c10003056a0003013b011801fc Tj" + "0.00 -8.80 Td" + "#hex:00b401d6019b018f01430003019b01c10003013401c101fc01c901d6011801840003056a056b00030166019b01de01c101c9000300a901c101430134016b019b01de01c90003018d014301d60118018401c90003056a Tj" + "0.00 -8.80 Td" + "#hex:0166019b01de01c10003004b0143018d01c90003056a05690003018d016b018f01de01d6014301c900030004013b0118018d0118018f01d6016b018f01430003019b01c10003018d016b01d6016601c101180184 Tj" + "0.00 -8.80 Td" + "#hex:056a0003018d016b018f01de01d60143000300c801c9016b018f015e00030118018f01fc0003018d011801d6014301c1016b011801840003013401c10143011801d60143013b0003013301fc000301d60166016b01c9 Tj" + "0.00 -8.80 Td" + "#hex:01c901be0143018401840003011801c900030118018f019b01d60166014301c1000301c901be014301840184060c01c90003018d011801d6014301c1016b0118018400030134019b018d01be019b018f0143018f01d6 Tj" + "0.00 -8.80 Td" + "#hex:0134011801de01c9014301c9000301d60166011801d6000301c901be014301840184000301d6019b0003015d0118016b018406080003000401d600030053016b015e0166014301c10003006e014301f50143018401c90608 Tj" + "0.00 -8.80 Td" + "#hex:00e001660143018f000301fc019b01de00030134011801c901d6000301d60166016b01c9000301c901be014301840184000301de01c9016b018f015e00030118000301c901be014301840184000301c90184019b01d60003019b015d Tj" + "0.00 -8.80 Td" + "#hex:056f01d6016600030184014301f5014301840003019b01c100030166016b015e0166014301c105fc000301d6016601430003013401de013301430003016b018f013401c10143011801c9014301c90003013301fc0003056e0003015d0143014301d6 Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "44.64 230.40 Td" + "0.00 -8.80 Td" + "#hex:00040003020b01a001c40231000301f301a0017801690178000301d00192000301c2014d020b020b017801f6000301d001920003020b019b0178000301fe014d01c201780003020b023101f30178000301d001920003020b019b0178000301a0020b017801c20003023101d00213 Tj" + "0.00 -8.80 Td" + "#hex:01f301b9014d01c40003020b01d00003016901f60178014d020b0178 Tj" + "ET" + "q" + "/gs44 gs" + "q" + "13.20 0.00 0.00 18.00 202.20 250.56 cm" + "/Im1 Do" + "Q" + "Q" + "BT" + "/F3 10.00 Tf" + "44.64 270.00 Td" + "0.00 -11.00 Td" + "#hex:002001c10143011801d6016b019b018f Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "86.17 270.00 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "44.64 256.32 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303fe0003005801b901b9021301fe01a001d001c4 Tj" + "ET" + "q" + "/gs45 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 44.64 228.24 cm" + "/Form2 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "44.64 232.56 Td" + "\"1 min\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs46 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 80.64 228.24 cm" + "/Form3 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "80.64 232.56 Td" + "\"30 ft\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs47 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 116.64 228.24 cm" + "/Form4 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "116.64 232.56 Td" + "\"V,S,M\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs48 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 152.64 228.24 cm" + "/Form5 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "152.64 232.56 Td" + "\"Special\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs49 gs" + "0.00 0.00 0.00 rg" + "0.02 0.00 0.00 0.02 201.60 21.60 cm" + "/Form6 Do" + "Q"] + ["0.88 0.88 0.88 RG" + "36.00 18.00 m" + "36.00 774.00 l" + "S" + "216.00 18.00 m" + "216.00 774.00 l" + "S" + "396.00 18.00 m" + "396.00 774.00 l" + "S" + "576.00 18.00 m" + "576.00 774.00 l" + "S" + "36.00 18.00 m" + "576.00 18.00 l" + "S" + "36.00 270.00 m" + "576.00 270.00 l" + "S" + "36.00 522.00 m" + "576.00 522.00 l" + "S" + "36.00 774.00 m" + "576.00 774.00 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 781.20 Td" + "#hex:00a9014d01930178000303fa000304a201f60178022a017801f601fe017804a3 Tj" + "ET" + "BT" + "/F2 10.00 Tf" + "44.64 768.24 Td" + "0.00 -11.00 Td" + "#hex:00780118015e016b013400030078019b01de01d60166 Tj" + "ET" + "BT" + "/F3 8.00 Tf" + "44.64 756.72 Td" + "0.00 -8.80 Td" + "#hex:01c1014301be0143011801d60003016b01d601c90003018d014301c901c90118015e0143000301f601660143018f014301f5014301c1000301d601660143000301d601c1016b015e015e014301c1 Tj" + "0.00 -8.80 Td" + "#hex:019b0134013401de01c101c90608000300c101660143000301d601c1016b015e015e014301c1016b018f015e00030134016b01c1013401de018d01c901d60118018f01340143000301340118018f0003013301430003011801c9 Tj" + "0.00 -8.80 Td" + "#hex:015e0143018f014301c1011801840003019b01c10003011801c90003013b014301d60118016b01840143013b0003011801c9000301fc019b01de00030184016b0181014305fc000301d60166019b01de015e01660003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:018d01de01c901d600030133014300030133011801c90143013b0003019b018f000301f5016b01c901de011801840003019b01c10003011801de013b016b01330184014300030134019b018f013b016b01d6016b019b018f01c9 Tj" + "0.00 -8.80 Td" + "#hex:01d60166011801d60003019b0134013401de01c1000301f6016b01d60166016b018f0003056c05690003015d0143014301d60003019b015d000301d6016601430003019b0133017d0143013401d606080003004a019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:014301fb0118018d01be0184014305fc000301fc019b01de00030134019b01de0184013b0003016b018f01c901d601c101de013401d6000301d6016601430003018d019b01de01d60166000301d6019b Tj" + "0.00 -8.80 Td" + "#hex:01c901be014301180181000301f601660143018f00030118018f01fc0003013401c10143011801d601de01c101430003018d019b01f5014301c9000301f6016b01d60166016b018f0003056c05690003015d0143014301d6 Tj" + "0.00 -8.80 Td" + "#hex:019b015d000301d6016601430003019b0133017d0143013401d60003019b01c1000301f601660143018f00030118000301c9016b018401f5014301c100030133014301840184000301c1016b018f015e01c9000301f6016b01d60166016b018f Tj" + "0.00 -8.80 Td" + "#hex:056c05690003015d0143014301d60003019b015d0003016b01d60608 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "109.62 768.24 Td" + "0.00 -11.00 Td" + "#hex:04a201f60178022a017801f601fe017804a3 Tj" + "ET" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "91.01 533.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 54.00 324.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "91.01 281.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F2 10.00 Tf" + "44.64 264.24 Td" + "0.00 -11.00 Td" + "#hex:0078019b01f5014300030031011801c101d60166 Tj" + "ET" + "BT" + "/F3 8.00 Tf" + "44.64 252.72 Td" + "0.00 -8.80 Td" + "#hex:01c901d6019b018f01430003019b01c1000301c901d6019b018f014300030134019b018f01c901d601c101de013401d6016b019b018f0608000300ac019b0134018101c900030118018f013b Tj" + "0.00 -8.80 Td" + "#hex:01c901d601c101de013401d601de01c1014301c9000301c90166016b025e000301d6019b0003011801340134019b018d018d019b013b011801d60143000301d6016601430003018f014301f6 Tj" + "0.00 -8.80 Td" + "#hex:01d6014301c101c10118016b018f060800030058015d000301d601660143000301f6011801fc000301fc019b01de000301c90166011801be0143000301d601660143000301d6014301c101c10118016b018f000301f6019b01de0184013b Tj" + "0.00 -8.80 Td" + "#hex:018d01180181014300030118000301c901d601c101de013401d601de01c10143000301de018f01c901d6011801330184014305fc0003016b01d60003018d016b015e016601d600030134019b01840184011801be01c901430608 Tj" + "0.00 -8.80 Td" + "#hex:00b4016b018d016b0184011801c1018401fc05fc000301d60166016b01c9000301c901be0143018401840003013b019b014301c9018f060c01d60003013b016b01c10143013401d6018401fc0003011802480143013401d6 Tj" + "0.00 -8.80 Td" + "#hex:01be01840118018f01d60003015e01c1019b01f601d601660608000300c1016601430003018d019b01f50143013b00030143011801c101d6016600030134011801c101c1016b014301c900030118018f01fc Tj" + "0.00 -8.80 Td" + "#hex:01be01840118018f01d601c9000301180184019b018f015e000301f6016b01d601660003016b01d60608 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "101.81 264.24 Td" + "0.00 -11.00 Td" + "#hex:04a201f60178022a017801f601fe017804a3 Tj" + "ET" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "91.01 29.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 234.00 576.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "271.01 533.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 234.00 324.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "271.01 281.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 234.00 72.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "271.01 29.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 414.00 576.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "451.01 533.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F2 10.00 Tf" + "404.64 516.24 Td" + "0.00 -11.00 Td" + "#hex:0004018f016b018d011801d601430003002701430118013b Tj" + "ET" + "BT" + "/F3 8.00 Tf" + "404.64 504.72 Td" + "0.00 -8.80 Td" + "#hex:0118015e0118016b018f01c901d600030166019b01c901d6016b018401430003013401c10143011801d601de01c1014301c9060800030086018f013401430003015e016b01f50143018f00030118018f0003019b01c1013b014301c105fc Tj" + "0.00 -8.80 Td" + "#hex:01d6016601430003013401c10143011801d601de01c1014300030134019b018f01d6016b018f01de014301c9000301d6019b0003015d019b01840184019b01f60003016b01d6000301de018f01d6016b01840003016b01d601c9000301d6011801c90181 Tj" + "0.00 -8.80 Td" + "#hex:016b01c900030134019b018d01be0184014301d601430608000300c1016601430003013401c10143011801d601de01c101430003016b01c9000301de018f013b014301c1000301fc019b01de01c100030134019b018f01d601c1019b0184 Tj" + "0.00 -8.80 Td" + "#hex:015d019b01c10003056b056d00030166019b01de01c101c905fc00030118025e014301c1000301f60166016b013401660003016b01d6000301c901d6019b01be01c90003019b0133014301fc016b018f015e00030118018f01fc Tj" + "0.00 -8.80 Td" + "#hex:0134019b018d018d0118018f013b000301fc019b01de060c01f501430003015e016b01f50143018f0003016b01d60608000300c1019b0003018d0118016b018f01d60118016b018f00030134019b018f01d601c1019b0184 Tj" + "0.00 -8.80 Td" + "#hex:019b015d000301d6016601430003013401c10143011801d601de01c101430003015d019b01c100030118018f019b01d60166014301c10003056b056d00030166019b01de01c101c905fc000301fc019b01de0003018d01de01c901d6 Tj" + "0.00 -8.80 Td" + "#hex:0134011801c901d6000301d60166016b01c9000301c901be0143018401840003019b018f000301d6016601430003013401c10143011801d601de01c1014300030118015e0118016b018f000301330143015d019b01c10143000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:013401de01c101c10143018f01d60003056b056d06400166019b01de01c1000301be014301c1016b019b013b00030143018f013b01c90608000300c10166016b01c9000301de01c901430003019b015d000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01c901be014301840184000301c10143011801c901c9014301c101d601c9000301fc019b01de01c100030134019b018f01d601c1019b01840003019b01f5014301c1000301de01be000301d6019b0003015d019b01de01c1 Tj" + "0.00 -8.80 Td" + "#hex:013401c10143011801d601de01c1014301c9000301fc019b01de00030166011801f5014300030118018f016b018d011801d60143013b000301f6016b01d60166000301d60166016b01c9000301c901be01430184018405fc Tj" + "0.00 -8.80 Td" + "#hex:01c1011801d60166014301c1000301d601660118018f00030118018f016b018d011801d6016b018f015e000301180003018f014301f60003019b018f014306080003000401d600030053016b015e0166014301c1 Tj" + "0.00 -8.80 Td" + "#hex:006e014301f50143018401c90608000300e001660143018f000301fc019b01de00030134011801c901d6000301d60166016b01c9000301c901be014301840184000301de01c9016b018f015e00030118000301c901be014301840184 Tj" + "0.00 -8.80 Td" + "#hex:01c90184019b01d60003019b015d0003056d01d6016600030184014301f5014301840003019b01c100030166016b015e0166014301c105fc000301fc019b01de00030118018f016b018d011801d601430003019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:01c10143011801c901c9014301c101d600030134019b018f01d601c1019b01840003019b01f5014301c1000301d601f6019b00030118013b013b016b01d6016b019b018f01180184000301de018f013b01430118013b Tj" + "0.00 -8.80 Td" + "#hex:013401c10143011801d601de01c1014301c90003015d019b01c100030143011801340166000301c90184019b01d600030184014301f501430184000301180133019b01f501430003056c01c1013b0608000300310118013401660003019b015d Tj" + "0.00 -8.80 Td" + "#hex:01d6016601430003013401c10143011801d601de01c1014301c90003018d01de01c901d600030134019b018d01430003015d01c1019b018d000301180003013b016b0248014301c10143018f01d6 Tj" + "0.00 -8.80 Td" + "#hex:0134019b01c101be01c901430003019b01c1000301be016b018401430003019b015d00030133019b018f014301c90608 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "474.31 516.24 Td" + "0.00 -11.00 Td" + "#hex:04a201f60178022a017801f601fe017804a3 Tj" + "ET" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "451.01 281.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F2 10.00 Tf" + "404.64 264.24 Td" + "0.00 -11.00 Td" + "#hex:002001c10143011801d6016b019b018f Tj" + "ET" + "BT" + "/F3 8.00 Tf" + "404.64 252.72 Td" + "0.00 -8.80 Td" + "#hex:015d019b01c100030143011801340166000301c90184019b01d600030184014301f501430184000301180133019b01f501430003056e01d601660608 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "448.33 264.24 Td" + "0.00 -11.00 Td" + "#hex:04a201f60178022a017801f601fe017804a3 Tj" + "ET" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "451.01 29.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET"] + ["0.88 0.88 0.88 RG" + "36.00 18.00 m" + "36.00 774.00 l" + "S" + "216.00 18.00 m" + "216.00 774.00 l" + "S" + "396.00 18.00 m" + "396.00 774.00 l" + "S" + "576.00 18.00 m" + "576.00 774.00 l" + "S" + "36.00 18.00 m" + "576.00 18.00 l" + "S" + "36.00 270.00 m" + "576.00 270.00 l" + "S" + "36.00 522.00 m" + "576.00 522.00 l" + "S" + "36.00 774.00 m" + "576.00 774.00 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 781.20 Td" + "#hex:00a9014d01930178000303fb Tj" + "ET" + "BT" + "/F2 8.00 Tf" + "404.64 696.24 Td" + "0.00 -8.80 Td" + "#hex:000400030134016601de01c1018f016b018f015e000301c901d6019b01c1018d000301340184019b01de013b0003015d019b01c1018d01c905fc000301340143018f01d6014301c10143013b0003019b018f00030118 Tj" + "0.00 -8.80 Td" + "#hex:01be019b016b018f01d6000301fc019b01de000301340118018f000301c90143014300030118018f013b000301c901be01c101430118013b016b018f015e000301d6019b00030118000301c10118013b016b01de01c90003019b015d Tj" + "0.00 -8.80 Td" + "#hex:056c056f05690003015d0143014301d606080003006e016b015e016601d6018f016b018f015e0003025d011801c90166014301c90003016b018f000301d6016601430003011801c10143011805fc000301d6016601de018f013b014301c1 Tj" + "0.00 -8.80 Td" + "#hex:0133019b019b018d01c905fc00030118018f013b000301c901d601c1019b018f015e000301f6016b018f013b01c9000301c1019b011801c10608000300310118013401660003013401c10143011801d601de01c10143 Tj" + "0.00 -8.80 Td" + "#hex:01de018f013b014301c1000301d601660143000301340184019b01de013b00030628018f019b0003018d019b01c10143000301d601660118018f0003056e05fc0569056905690003015d0143014301d6 Tj" + "0.00 -8.80 Td" + "#hex:01330143018f0143011801d60166000301d601660143000301340184019b01de013b0629000301f601660143018f0003016b01d60003011801be01be0143011801c101c90003018d01de01c901d60003018d011801810143 Tj" + "0.00 -8.80 Td" + "#hex:011800030020019b018f01c901d6016b01d601de01d6016b019b018f000301c9011801f5016b018f015e000301d6016601c1019b01f6060800030086018f000301180003015d0118016b01840143013b000301c9011801f5014305fc Tj" + "0.00 -8.80 Td" + "#hex:01180003013401c10143011801d601de01c10143000301d601180181014301c90003056b013b056f000301d6016601de018f013b014301c10003013b0118018d0118015e014300030118018f013b Tj" + "0.00 -8.80 Td" + "#hex:013301430134019b018d014301c90003013b01430118015d0143018f0143013b0003015d019b01c10003056e0003018d016b018f01de01d6014301c9060800030031011801340166000301c1019b01de018f013b Tj" + "0.00 -8.80 Td" + "#hex:01fc019b01de0003018d0118016b018f01d60118016b018f00030134019b018f01340143018f01d601c1011801d6016b019b018f0003019b018f000301d60166016b01c9000301c901be01430184018405fc000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01c901d6019b01c1018d000301be01c1019b013b01de0134014301c900030118013b013b016b01d6016b019b018f011801840003014302480143013401d601c90003019b018f000301fc019b01de01c1 Tj" + "0.00 -8.80 Td" + "#hex:01d601de01c1018f0608000300ac019b01de018f013b0003056b0608000300040134016b013b016b0134000301c10118016b018f0003015d01180184018401c90003015d01c1019b018d000301d601660143000301340184019b01de013b0608 Tj" + "0.00 -8.80 Td" + "#hex:00310118013401660003013401c10143011801d601de01c1014300030118018f013b0003019b0133017d0143013401d6000301de018f013b014301c1000301d601660143000301340184019b01de013b000301d601180181014301c9 Tj" + "0.00 -8.80 Td" + "#hex:056a013b056f000301180134016b013b0003013b0118018d0118015e01430608000300ac019b01de018f013b0003056c0608000300e6019b01de00030134011801840184000301c9016b01fb00030133019b018401d601c90003019b015d Tj" + "0.00 -8.80 Td" + "#hex:0184016b015e016601d6018f016b018f015e0003015d01c1019b018d000301d601660143000301340184019b01de013b000301d6019b000301c901d601c1016b01810143000301c9016b01fb0003013401c10143011801d601de01c1014301c9 Tj" + "0.00 -8.80 Td" + "#hex:019b01c10003019b0133017d0143013401d601c90003019b015d000301fc019b01de01c1000301340166019b016b01340143000301330143018f0143011801d60166000301d601660143000301340184019b01de013b060800030004 Tj" + "0.00 -8.80 Td" + "#hex:015e016b01f50143018f0003013401c10143011801d601de01c101430003019b01c10003019b0133017d0143013401d6000301340118018f060c01d6000301330143000301c901d601c101de013401810003013301fc Tj" + "0.00 -8.80 Td" + "#hex:018d019b01c10143000301d601660118018f0003019b018f014300030133019b018401d6060800030004000301c901d601c101de013401810003013401c10143011801d601de01c101430003018d01de01c901d6 Tj" + "0.00 -8.80 Td" + "#hex:018d0118018101430003011800030027014301fb01d6014301c1016b01d601fc000301c9011801f5016b018f015e000301d6016601c1019b01f60608000300c1016601430003013401c10143011801d601de01c10143 Tj" + "ET" + "q" + "/gs1 gs" + "q" + "13.20 0.00 0.00 18.00 562.20 754.56 cm" + "/Im1 Do" + "Q" + "Q" + "BT" + "/F3 10.00 Tf" + "404.64 774.00 Td" + "0.00 -11.00 Td" + "#hex:00b401d6019b01c1018d0003019b015d000300df0143018f015e01430118018f01340143 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "499.27 774.00 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "404.64 760.32 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000304020003002001d001c401b2021301f6014d020b01a001d001c4 Tj" + "ET" + "q" + "/gs2 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 404.64 732.24 cm" + "/Form2 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "404.64 736.56 Td" + "\"1 Act.\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs3 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 440.64 732.24 cm" + "/Form3 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "440.64 736.56 Td" + "\"Sight\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs4 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 476.64 732.24 cm" + "/Form4 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "476.64 736.56 Td" + "\"V,S\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs5 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 512.64 732.24 cm" + "/Form5 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "512.64 736.56 Td" + "\"Conc, 1 min\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs6 gs" + "0.00 0.00 0.00 rg" + "0.02 0.00 0.00 0.02 561.60 525.60 cm" + "/Form6 Do" + "Q" + "BT" + "/F2 8.00 Tf" + "224.64 696.24 Td" + "0.00 -8.80 Td" + "#hex:00c8018f01d6016b0184000301d601660143000301c901be01430184018400030143018f013b01c905fc000301f601660143018f000301fc019b01de0003018d01180181014300030118 Tj" + "0.00 -8.80 Td" + "#hex:00200166011801c1016b01c9018d011800030134016601430134018105fc000301fc019b01de000301340118018f000301c1014301be0184011801340143000301d6016601430003018f01de018d0133014301c1 Tj" + "0.00 -8.80 Td" + "#hex:01fc019b01de000301c1019b01840184000301f6016b01d60166000301180003056a056e060800030004013b013b016b01d6016b019b018f01180184018401fc05fc0003018f019b0003018d011801d601d6014301c1 Tj" + "0.00 -8.80 Td" + "#hex:01f60166011801d6000301fc019b01de000301c9011801fc05fc0003018d0118015e016b0134000301d60166011801d6000301f6019b01de0184013b0003013b014301d6014301c1018d016b018f01430003016b015d Tj" + "0.00 -8.80 Td" + "#hex:01fc019b01de0003011801c10143000301d6014301840184016b018f015e000301d601660143000301d601c101de01d601660003016b018f013b016b0134011801d6014301c9000301d60166011801d6000301fc019b01de0003011801c10143 Tj" + "0.00 -8.80 Td" + "#hex:01330143016b018f015e000301d601c101de01d60166015d01de01840608 Tj" + "ET" + "q" + "/gs7 gs" + "q" + "13.20 0.00 0.00 18.00 382.20 754.56 cm" + "/Im1 Do" + "Q" + "Q" + "BT" + "/F3 10.00 Tf" + "224.64 774.00 Td" + "0.00 -11.00 Td" + "#hex:004b0184016b0133018f014301c901c9 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "265.83 774.00 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "224.64 760.32 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b900030401000300c101f6014d01c401fe01c20213020b014d020b01a001d001c4 Tj" + "ET" + "q" + "/gs8 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 224.64 732.24 cm" + "/Form2 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "224.64 736.56 Td" + "\"1 Act.\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs9 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 260.64 732.24 cm" + "/Form3 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "260.64 736.56 Td" + "\"Self\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs10 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 296.64 732.24 cm" + "/Form4 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "296.64 736.56 Td" + "\"V\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs11 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 332.64 732.24 cm" + "/Form5 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "332.64 736.56 Td" + "\"1 hr\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "BT" + "/F2 8.00 Tf" + "44.64 696.24 Td" + "0.00 -8.80 Td" + "#hex:00c10166016b01c9000301c901be0143018401840003013401c10143011801d6014301c9000301180003018d0118015e016b01340118018400030184016b018f018100030133014301d601f601430143018f00030118 Tj" + "0.00 -8.80 Td" + "#hex:006e011801c1015e01430003019b01c100030184011801c1015e014301c10003016b018f0118018f016b018d011801d60143000301be01840118018f01d6000301f6016b01d60166016b018f000301c10118018f015e0143 Tj" + "0.00 -8.80 Td" + "#hex:0118018f013b00030118018f019b01d60166014301c1000301be01840118018f01d605fc0003011801d600030118018f01fc0003013b016b01c901d60118018f0134014305fc0003019b018f000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01c90118018d0143000301be01840118018f01430003019b015d0003014301fb016b01c901d60143018f013401430608000300e6019b01de0003018d01de01c901d600030166011801f50143000301c901430143018f Tj" + "0.00 -8.80 Td" + "#hex:019b01c1000301d6019b01de013401660143013b000301d6016601430003013b014301c901d6016b018f011801d6016b019b018f000301be01840118018f01d60003011801d6000301840143011801c901d60003019b018f01340143 Tj" + "0.00 -8.80 Td" + "#hex:01330143015d019b01c1014306080003004a019b01c1000301d6016601430003013b01de01c1011801d6016b019b018f05fc00030118018f01fc0003013401c10143011801d601de01c10143000301340118018f000301c901d6014301be Tj" + "0.00 -8.80 Td" + "#hex:016b018f01d6019b000301d601660143000301d6011801c1015e014301d6000301be01840118018f01d600030118018f013b0003014301fb016b01d60003015d01c1019b018d000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:013b014301c901d6016b018f011801d6016b019b018f000301be01840118018f01d60003013301fc000301de01c9016b018f015e0003056e0003015d0143014301d60003019b015d0003018d019b01f50143018d0143018f01d60608 Tj" + "ET" + "q" + "/gs12 gs" + "q" + "13.20 0.00 0.00 18.00 202.20 754.56 cm" + "/Im1 Do" + "Q" + "Q" + "BT" + "/F3 10.00 Tf" + "44.64 774.00 Td" + "0.00 -11.00 Td" + "#hex:00c101c10118018f01c901be019b01c101d6000301f5016b0118000300a901840118018f01d601c9 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "142.46 774.00 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "44.64 760.32 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303ff0003002001d001c401b2021301f6014d020b01a001d001c4 Tj" + "ET" + "q" + "/gs13 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 44.64 732.24 cm" + "/Form2 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "44.64 736.56 Td" + "\"1 Act.\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs14 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 80.64 732.24 cm" + "/Form3 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "80.64 736.56 Td" + "\"10 ft\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs15 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 116.64 732.24 cm" + "/Form4 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "116.64 736.56 Td" + "\"V,S\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs16 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 152.64 732.24 cm" + "/Form5 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "152.64 736.56 Td" + "\"1 Rnd\" Tj" + "ET" + "0.00 0.00 0.00 rg"] + ["0.88 0.88 0.88 RG" + "36.00 18.00 m" + "36.00 774.00 l" + "S" + "216.00 18.00 m" + "216.00 774.00 l" + "S" + "396.00 18.00 m" + "396.00 774.00 l" + "S" + "576.00 18.00 m" + "576.00 774.00 l" + "S" + "36.00 18.00 m" + "576.00 18.00 l" + "S" + "36.00 270.00 m" + "576.00 270.00 l" + "S" + "36.00 522.00 m" + "576.00 522.00 l" + "S" + "36.00 774.00 m" + "576.00 774.00 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 781.20 Td" + "#hex:00a9014d01930178000303fb000304a201f60178022a017801f601fe017804a3 Tj" + "ET" + "BT" + "/F2 10.00 Tf" + "44.64 768.24 Td" + "0.00 -11.00 Td" + "#hex:00b401d6019b01c1018d0003019b015d000300df0143018f015e01430118018f01340143 Tj" + "ET" + "BT" + "/F3 8.00 Tf" + "44.64 756.72 Td" + "0.00 -8.80 Td" + "#hex:01d601180181014301c90003056a0569013b056f00030184016b015e016601d6018f016b018f015e0003013b0118018d0118015e01430003019b018f000301180003015d0118016b01840143013b000301c9011801f5014305fc Tj" + "0.00 -8.80 Td" + "#hex:019b01c10003016601180184015d0003011801c90003018d01de013401660003013b0118018d0118015e01430003019b018f00030118000301c901de01340134014301c901c9015d01de01840003019b018f01430608 Tj" + "0.00 -8.80 Td" + "#hex:00ac019b01de018f013b0003056d0608000300530118016b018401c901d6019b018f014301c9000301c10118016b018f0003013b019b01f6018f0003015d01c1019b018d000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01340184019b01de013b0608000300310118013401660003013401c10143011801d601de01c10143000301de018f013b014301c1000301d601660143000301340184019b01de013b000301d601180181014301c90003056b013b056f Tj" + "0.00 -8.80 Td" + "#hex:0133018401de013b015e0143019b018f016b018f015e0003013b0118018d0118015e01430608000300ac019b01de018f013b0003056e063d056a056906080003004b01de01c901d601c900030118018f013b Tj" + "0.00 -8.80 Td" + "#hex:015d01c1014301430206016b018f015e000301c10118016b018f0003011801c901c90118016b0184000301d6016601430003011801c101430118000301de018f013b014301c1000301d601660143000301340184019b01de013b0608 Tj" + "0.00 -8.80 Td" + "#hex:00c1016601430003011801c1014301180003013301430134019b018d014301c90003013b016b0249013401de018401d6000301d6014301c101c10118016b018f00030118018f013b0003016b01c9 Tj" + "0.00 -8.80 Td" + "#hex:01660143011801f5016b018401fc0003019b013301c9013401de01c10143013b0608000300310118013401660003013401c10143011801d601de01c10143000301d60166014301c10143000301d601180181014301c9 Tj" + "0.00 -8.80 Td" + "#hex:056a013b056f00030134019b0184013b0003013b0118018d0118015e01430608000300ac0118018f015e0143013b000301f60143011801be019b018f0003011801d601d601180134018101c90003016b018f Tj" + "0.00 -8.80 Td" + "#hex:01d6016601430003011801c1014301180003011801c101430003016b018d01be019b01c901c9016b0133018401430608000300c101660143000301f6016b018f013b00030118018f013b000301c10118016b018f Tj" + "0.00 -8.80 Td" + "#hex:0134019b01de018f01d60003011801c900030118000301c9014301f5014301c101430003013b016b01c901d601c10118013401d6016b019b018f0003015d019b01c1000301d601660143000301be01de01c101be019b01c9014301c9 Tj" + "0.00 -8.80 Td" + "#hex:019b015d0003018d0118016b018f01d60118016b018f016b018f015e00030134019b018f01340143018f01d601c1011801d6016b019b018f0003019b018f000301c901be01430184018401c90608 Tj" + "0.00 -8.80 Td" + "#hex:004a016b018f01180184018401fc05fc0003015e01de01c901d601c90003019b015d000301c901d601c1019b018f015e000301f6016b018f013b0003062801c10118018f015e016b018f015e0003015d01c1019b018d0003056b0569 Tj" + "0.00 -8.80 Td" + "#hex:01d6019b0003056e05690003018d016b0184014301c9000301be014301c100030166019b01de01c106290003011801de01d6019b018d011801d6016b013401180184018401fc0003013b016b01c901be014301c101c90143 Tj" + "0.00 -8.80 Td" + "#hex:015d019b015e05fc0003018d016b01c901d601c905fc00030118018f013b000301c9016b018d016b0184011801c1000301be01660143018f019b018d0143018f01180003016b018f000301d6016601430003011801c10143011805fc Tj" + "0.00 -8.80 Td" + "#hex:01f60166014301d60166014301c10003018d01de018f013b0118018f01430003019b01c10003018d0118015e016b0134011801840608 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "141.43 768.24 Td" + "0.00 -11.00 Td" + "#hex:04a201f60178022a017801f601fe017804a3 Tj" + "ET" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "91.01 533.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 54.00 324.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "91.01 281.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 54.00 72.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "91.01 29.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 234.00 576.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "271.01 533.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 234.00 324.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "271.01 281.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 234.00 72.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "271.01 29.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 414.00 576.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "451.01 533.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 414.00 324.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "451.01 281.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 414.00 72.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "451.01 29.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET"] + ["0.88 0.88 0.88 RG" + "36.00 18.00 m" + "36.00 774.00 l" + "S" + "216.00 18.00 m" + "216.00 774.00 l" + "S" + "396.00 18.00 m" + "396.00 774.00 l" + "S" + "576.00 18.00 m" + "576.00 774.00 l" + "S" + "36.00 18.00 m" + "576.00 18.00 l" + "S" + "36.00 270.00 m" + "576.00 270.00 l" + "S" + "36.00 522.00 m" + "576.00 522.00 l" + "S" + "36.00 774.00 m" + "576.00 774.00 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 781.20 Td" + "#hex:00a9014d01930178000303fa Tj" + "ET" + "1.10 w" + "414.72 767.52 m" + "557.28 767.52 l" + "569.52 755.28 l" + "569.52 540.72 l" + "557.28 528.48 l" + "414.72 528.48 l" + "402.48 540.72 l" + "402.48 755.28 l" + "s" + "0.45 w" + "414.72 764.50 m" + "557.28 764.50 l" + "566.50 755.28 l" + "566.50 540.72 l" + "557.28 531.50 l" + "414.72 531.50 l" + "405.50 540.72 l" + "405.50 755.28 l" + "s" + "0.70 w" + "410.04 762.55 m" + "412.63 759.96 l" + "410.04 757.37 l" + "407.45 759.96 l" + "h" + "S" + "561.96 762.55 m" + "564.55 759.96 l" + "561.96 757.37 l" + "559.37 759.96 l" + "h" + "S" + "410.04 538.63 m" + "412.63 536.04 l" + "410.04 533.45 l" + "407.45 536.04 l" + "h" + "S" + "561.96 538.63 m" + "564.55 536.04 l" + "561.96 533.45 l" + "559.37 536.04 l" + "h" + "S" + "1.00 w" + "0.50 w" + "416.16 756.36 m" + "462.96 756.36 l" + "S" + "509.04 756.36 m" + "555.84 756.36 l" + "S" + "0.60 w" + "469.44 759.10 m" + "472.18 756.36 l" + "469.44 753.62 l" + "466.70 756.36 l" + "h" + "f" + "477.72 759.10 m" + "480.46 756.36 l" + "477.72 753.62 l" + "474.98 756.36 l" + "h" + "f" + "486.00 759.10 m" + "488.74 756.36 l" + "486.00 753.62 l" + "483.26 756.36 l" + "h" + "f" + "494.28 759.10 m" + "497.02 756.36 l" + "494.28 753.62 l" + "491.54 756.36 l" + "h" + "S" + "502.56 759.10 m" + "505.30 756.36 l" + "502.56 753.62 l" + "499.82 756.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "432.00 535.32 m" + "479.88 535.32 l" + "S" + "492.12 535.32 m" + "540.00 535.32 l" + "S" + "486.00 537.62 m" + "488.30 535.32 l" + "486.00 533.02 l" + "483.70 535.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "547.20 703.08 m" + "553.32 703.08 l" + "555.84 700.56 l" + "555.84 695.16 l" + "553.32 692.64 l" + "547.20 692.64 l" + "544.68 695.16 l" + "544.68 700.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "547.73 695.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "416.16 748.08 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc000300b401d601de013b013b0143013b Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "410.40 702.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "410.40 686.16 m" + "561.60 686.16 l" + "S" + "0.35 w" + "410.40 683.64 m" + "561.60 683.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "410.40 678.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "457.72 557.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "234.72 767.52 m" + "377.28 767.52 l" + "389.52 755.28 l" + "389.52 540.72 l" + "377.28 528.48 l" + "234.72 528.48 l" + "222.48 540.72 l" + "222.48 755.28 l" + "s" + "0.45 w" + "234.72 764.50 m" + "377.28 764.50 l" + "386.50 755.28 l" + "386.50 540.72 l" + "377.28 531.50 l" + "234.72 531.50 l" + "225.50 540.72 l" + "225.50 755.28 l" + "s" + "0.70 w" + "230.04 762.55 m" + "232.63 759.96 l" + "230.04 757.37 l" + "227.45 759.96 l" + "h" + "S" + "381.96 762.55 m" + "384.55 759.96 l" + "381.96 757.37 l" + "379.37 759.96 l" + "h" + "S" + "230.04 538.63 m" + "232.63 536.04 l" + "230.04 533.45 l" + "227.45 536.04 l" + "h" + "S" + "381.96 538.63 m" + "384.55 536.04 l" + "381.96 533.45 l" + "379.37 536.04 l" + "h" + "S" + "1.00 w" + "0.50 w" + "236.16 756.36 m" + "282.96 756.36 l" + "S" + "329.04 756.36 m" + "375.84 756.36 l" + "S" + "0.60 w" + "289.44 759.10 m" + "292.18 756.36 l" + "289.44 753.62 l" + "286.70 756.36 l" + "h" + "f" + "297.72 759.10 m" + "300.46 756.36 l" + "297.72 753.62 l" + "294.98 756.36 l" + "h" + "f" + "306.00 759.10 m" + "308.74 756.36 l" + "306.00 753.62 l" + "303.26 756.36 l" + "h" + "f" + "314.28 759.10 m" + "317.02 756.36 l" + "314.28 753.62 l" + "311.54 756.36 l" + "h" + "S" + "322.56 759.10 m" + "325.30 756.36 l" + "322.56 753.62 l" + "319.82 756.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "252.00 535.32 m" + "299.88 535.32 l" + "S" + "312.12 535.32 m" + "360.00 535.32 l" + "S" + "306.00 537.62 m" + "308.30 535.32 l" + "306.00 533.02 l" + "303.70 535.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "367.20 703.08 m" + "373.32 703.08 l" + "375.84 700.56 l" + "375.84 695.16 l" + "373.32 692.64 l" + "367.20 692.64 l" + "364.68 695.16 l" + "364.68 700.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "367.73 695.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "236.16 748.08 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc0003006e0143011801d60166014301c1 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "230.40 702.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "230.40 686.16 m" + "381.60 686.16 l" + "S" + "0.35 w" + "230.40 683.64 m" + "381.60 683.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "230.40 678.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "277.72 557.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "54.72 767.52 m" + "197.28 767.52 l" + "209.52 755.28 l" + "209.52 540.72 l" + "197.28 528.48 l" + "54.72 528.48 l" + "42.48 540.72 l" + "42.48 755.28 l" + "s" + "0.45 w" + "54.72 764.50 m" + "197.28 764.50 l" + "206.50 755.28 l" + "206.50 540.72 l" + "197.28 531.50 l" + "54.72 531.50 l" + "45.50 540.72 l" + "45.50 755.28 l" + "s" + "0.70 w" + "50.04 762.55 m" + "52.63 759.96 l" + "50.04 757.37 l" + "47.45 759.96 l" + "h" + "S" + "201.96 762.55 m" + "204.55 759.96 l" + "201.96 757.37 l" + "199.37 759.96 l" + "h" + "S" + "50.04 538.63 m" + "52.63 536.04 l" + "50.04 533.45 l" + "47.45 536.04 l" + "h" + "S" + "201.96 538.63 m" + "204.55 536.04 l" + "201.96 533.45 l" + "199.37 536.04 l" + "h" + "S" + "1.00 w" + "0.50 w" + "56.16 756.36 m" + "102.96 756.36 l" + "S" + "149.04 756.36 m" + "195.84 756.36 l" + "S" + "0.60 w" + "109.44 759.10 m" + "112.18 756.36 l" + "109.44 753.62 l" + "106.70 756.36 l" + "h" + "f" + "117.72 759.10 m" + "120.46 756.36 l" + "117.72 753.62 l" + "114.98 756.36 l" + "h" + "f" + "126.00 759.10 m" + "128.74 756.36 l" + "126.00 753.62 l" + "123.26 756.36 l" + "h" + "f" + "134.28 759.10 m" + "137.02 756.36 l" + "134.28 753.62 l" + "131.54 756.36 l" + "h" + "S" + "142.56 759.10 m" + "145.30 756.36 l" + "142.56 753.62 l" + "139.82 756.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "72.00 535.32 m" + "119.88 535.32 l" + "S" + "132.12 535.32 m" + "180.00 535.32 l" + "S" + "126.00 537.62 m" + "128.30 535.32 l" + "126.00 533.02 l" + "123.70 535.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "187.20 703.08 m" + "193.32 703.08 l" + "195.84 700.56 l" + "195.84 695.16 l" + "193.32 692.64 l" + "187.20 692.64 l" + "184.68 695.16 l" + "184.68 700.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "187.73 695.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "56.16 748.08 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc000300a90118013b013b0143013b Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "50.40 702.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "50.40 686.16 m" + "201.60 686.16 l" + "S" + "0.35 w" + "50.40 683.64 m" + "201.60 683.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "50.40 678.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "97.72 557.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "414.72 515.52 m" + "557.28 515.52 l" + "569.52 503.28 l" + "569.52 288.72 l" + "557.28 276.48 l" + "414.72 276.48 l" + "402.48 288.72 l" + "402.48 503.28 l" + "s" + "0.45 w" + "414.72 512.50 m" + "557.28 512.50 l" + "566.50 503.28 l" + "566.50 288.72 l" + "557.28 279.50 l" + "414.72 279.50 l" + "405.50 288.72 l" + "405.50 503.28 l" + "s" + "0.70 w" + "410.04 510.55 m" + "412.63 507.96 l" + "410.04 505.37 l" + "407.45 507.96 l" + "h" + "S" + "561.96 510.55 m" + "564.55 507.96 l" + "561.96 505.37 l" + "559.37 507.96 l" + "h" + "S" + "410.04 286.63 m" + "412.63 284.04 l" + "410.04 281.45 l" + "407.45 284.04 l" + "h" + "S" + "561.96 286.63 m" + "564.55 284.04 l" + "561.96 281.45 l" + "559.37 284.04 l" + "h" + "S" + "1.00 w" + "0.50 w" + "416.16 504.36 m" + "462.96 504.36 l" + "S" + "509.04 504.36 m" + "555.84 504.36 l" + "S" + "0.60 w" + "469.44 507.10 m" + "472.18 504.36 l" + "469.44 501.62 l" + "466.70 504.36 l" + "h" + "f" + "477.72 507.10 m" + "480.46 504.36 l" + "477.72 501.62 l" + "474.98 504.36 l" + "h" + "f" + "486.00 507.10 m" + "488.74 504.36 l" + "486.00 501.62 l" + "483.26 504.36 l" + "h" + "f" + "494.28 507.10 m" + "497.02 504.36 l" + "494.28 501.62 l" + "491.54 504.36 l" + "h" + "S" + "502.56 507.10 m" + "505.30 504.36 l" + "502.56 501.62 l" + "499.82 504.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "432.00 283.32 m" + "479.88 283.32 l" + "S" + "492.12 283.32 m" + "540.00 283.32 l" + "S" + "486.00 285.62 m" + "488.30 283.32 l" + "486.00 281.02 l" + "483.70 283.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "547.20 451.08 m" + "553.32 451.08 l" + "555.84 448.56 l" + "555.84 443.16 l" + "553.32 440.64 l" + "547.20 440.64 l" + "544.68 443.16 l" + "544.68 448.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "547.73 443.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "416.16 496.08 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc000300b401340118018401430003018d0118016b0184 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "410.40 450.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "410.40 434.16 m" + "561.60 434.16 l" + "S" + "0.35 w" + "410.40 431.64 m" + "561.60 431.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "410.40 426.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "457.72 305.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "234.72 515.52 m" + "377.28 515.52 l" + "389.52 503.28 l" + "389.52 288.72 l" + "377.28 276.48 l" + "234.72 276.48 l" + "222.48 288.72 l" + "222.48 503.28 l" + "s" + "0.45 w" + "234.72 512.50 m" + "377.28 512.50 l" + "386.50 503.28 l" + "386.50 288.72 l" + "377.28 279.50 l" + "234.72 279.50 l" + "225.50 288.72 l" + "225.50 503.28 l" + "s" + "0.70 w" + "230.04 510.55 m" + "232.63 507.96 l" + "230.04 505.37 l" + "227.45 507.96 l" + "h" + "S" + "381.96 510.55 m" + "384.55 507.96 l" + "381.96 505.37 l" + "379.37 507.96 l" + "h" + "S" + "230.04 286.63 m" + "232.63 284.04 l" + "230.04 281.45 l" + "227.45 284.04 l" + "h" + "S" + "381.96 286.63 m" + "384.55 284.04 l" + "381.96 281.45 l" + "379.37 284.04 l" + "h" + "S" + "1.00 w" + "0.50 w" + "236.16 504.36 m" + "282.96 504.36 l" + "S" + "329.04 504.36 m" + "375.84 504.36 l" + "S" + "0.60 w" + "289.44 507.10 m" + "292.18 504.36 l" + "289.44 501.62 l" + "286.70 504.36 l" + "h" + "f" + "297.72 507.10 m" + "300.46 504.36 l" + "297.72 501.62 l" + "294.98 504.36 l" + "h" + "f" + "306.00 507.10 m" + "308.74 504.36 l" + "306.00 501.62 l" + "303.26 504.36 l" + "h" + "f" + "314.28 507.10 m" + "317.02 504.36 l" + "314.28 501.62 l" + "311.54 504.36 l" + "h" + "S" + "322.56 507.10 m" + "325.30 504.36 l" + "322.56 501.62 l" + "319.82 504.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "252.00 283.32 m" + "299.88 283.32 l" + "S" + "312.12 283.32 m" + "360.00 283.32 l" + "S" + "306.00 285.62 m" + "308.30 283.32 l" + "306.00 281.02 l" + "303.70 283.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "367.20 451.08 m" + "373.32 451.08 l" + "375.84 448.56 l" + "375.84 443.16 l" + "373.32 440.64 l" + "367.20 440.64 l" + "364.68 443.16 l" + "364.68 448.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "367.73 443.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "236.16 496.08 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc0003002001660118016b018f000300b40166016b01c101d6 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "230.40 450.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "230.40 434.16 m" + "381.60 434.16 l" + "S" + "0.35 w" + "230.40 431.64 m" + "381.60 431.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "230.40 426.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "277.72 305.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "54.72 515.52 m" + "197.28 515.52 l" + "209.52 503.28 l" + "209.52 288.72 l" + "197.28 276.48 l" + "54.72 276.48 l" + "42.48 288.72 l" + "42.48 503.28 l" + "s" + "0.45 w" + "54.72 512.50 m" + "197.28 512.50 l" + "206.50 503.28 l" + "206.50 288.72 l" + "197.28 279.50 l" + "54.72 279.50 l" + "45.50 288.72 l" + "45.50 503.28 l" + "s" + "0.70 w" + "50.04 510.55 m" + "52.63 507.96 l" + "50.04 505.37 l" + "47.45 507.96 l" + "h" + "S" + "201.96 510.55 m" + "204.55 507.96 l" + "201.96 505.37 l" + "199.37 507.96 l" + "h" + "S" + "50.04 286.63 m" + "52.63 284.04 l" + "50.04 281.45 l" + "47.45 284.04 l" + "h" + "S" + "201.96 286.63 m" + "204.55 284.04 l" + "201.96 281.45 l" + "199.37 284.04 l" + "h" + "S" + "1.00 w" + "0.50 w" + "56.16 504.36 m" + "102.96 504.36 l" + "S" + "149.04 504.36 m" + "195.84 504.36 l" + "S" + "0.60 w" + "109.44 507.10 m" + "112.18 504.36 l" + "109.44 501.62 l" + "106.70 504.36 l" + "h" + "f" + "117.72 507.10 m" + "120.46 504.36 l" + "117.72 501.62 l" + "114.98 504.36 l" + "h" + "f" + "126.00 507.10 m" + "128.74 504.36 l" + "126.00 501.62 l" + "123.26 504.36 l" + "h" + "f" + "134.28 507.10 m" + "137.02 504.36 l" + "134.28 501.62 l" + "131.54 504.36 l" + "h" + "S" + "142.56 507.10 m" + "145.30 504.36 l" + "142.56 501.62 l" + "139.82 504.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "72.00 283.32 m" + "119.88 283.32 l" + "S" + "132.12 283.32 m" + "180.00 283.32 l" + "S" + "126.00 285.62 m" + "128.30 283.32 l" + "126.00 281.02 l" + "123.70 283.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "187.20 451.08 m" + "193.32 451.08 l" + "195.84 448.56 l" + "195.84 443.16 l" + "193.32 440.64 l" + "187.20 440.64 l" + "184.68 443.16 l" + "184.68 448.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "187.73 443.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "56.16 496.08 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc00030053016b013b0143 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "50.40 450.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "50.40 434.16 m" + "201.60 434.16 l" + "S" + "0.35 w" + "50.40 431.64 m" + "201.60 431.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "50.40 426.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "97.72 305.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "414.72 263.52 m" + "557.28 263.52 l" + "569.52 251.28 l" + "569.52 36.72 l" + "557.28 24.48 l" + "414.72 24.48 l" + "402.48 36.72 l" + "402.48 251.28 l" + "s" + "0.45 w" + "414.72 260.50 m" + "557.28 260.50 l" + "566.50 251.28 l" + "566.50 36.72 l" + "557.28 27.50 l" + "414.72 27.50 l" + "405.50 36.72 l" + "405.50 251.28 l" + "s" + "0.70 w" + "410.04 258.55 m" + "412.63 255.96 l" + "410.04 253.37 l" + "407.45 255.96 l" + "h" + "S" + "561.96 258.55 m" + "564.55 255.96 l" + "561.96 253.37 l" + "559.37 255.96 l" + "h" + "S" + "410.04 34.63 m" + "412.63 32.04 l" + "410.04 29.45 l" + "407.45 32.04 l" + "h" + "S" + "561.96 34.63 m" + "564.55 32.04 l" + "561.96 29.45 l" + "559.37 32.04 l" + "h" + "S" + "1.00 w" + "0.50 w" + "416.16 252.36 m" + "462.96 252.36 l" + "S" + "509.04 252.36 m" + "555.84 252.36 l" + "S" + "0.60 w" + "469.44 255.10 m" + "472.18 252.36 l" + "469.44 249.62 l" + "466.70 252.36 l" + "h" + "f" + "477.72 255.10 m" + "480.46 252.36 l" + "477.72 249.62 l" + "474.98 252.36 l" + "h" + "f" + "486.00 255.10 m" + "488.74 252.36 l" + "486.00 249.62 l" + "483.26 252.36 l" + "h" + "f" + "494.28 255.10 m" + "497.02 252.36 l" + "494.28 249.62 l" + "491.54 252.36 l" + "h" + "S" + "502.56 255.10 m" + "505.30 252.36 l" + "502.56 249.62 l" + "499.82 252.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "432.00 31.32 m" + "479.88 31.32 l" + "S" + "492.12 31.32 m" + "540.00 31.32 l" + "S" + "486.00 33.62 m" + "488.30 31.32 l" + "486.00 29.02 l" + "483.70 31.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "547.20 199.08 m" + "553.32 199.08 l" + "555.84 196.56 l" + "555.84 191.16 l" + "553.32 188.64 l" + "547.20 188.64 l" + "544.68 191.16 l" + "544.68 196.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "547.73 191.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "416.16 244.08 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc000300ac016b018f015e0003018d0118016b0184 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "410.40 198.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "410.40 182.16 m" + "561.60 182.16 l" + "S" + "0.35 w" + "410.40 179.64 m" + "561.60 179.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "410.40 174.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "457.72 53.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "234.72 263.52 m" + "377.28 263.52 l" + "389.52 251.28 l" + "389.52 36.72 l" + "377.28 24.48 l" + "234.72 24.48 l" + "222.48 36.72 l" + "222.48 251.28 l" + "s" + "0.45 w" + "234.72 260.50 m" + "377.28 260.50 l" + "386.50 251.28 l" + "386.50 36.72 l" + "377.28 27.50 l" + "234.72 27.50 l" + "225.50 36.72 l" + "225.50 251.28 l" + "s" + "0.70 w" + "230.04 258.55 m" + "232.63 255.96 l" + "230.04 253.37 l" + "227.45 255.96 l" + "h" + "S" + "381.96 258.55 m" + "384.55 255.96 l" + "381.96 253.37 l" + "379.37 255.96 l" + "h" + "S" + "230.04 34.63 m" + "232.63 32.04 l" + "230.04 29.45 l" + "227.45 32.04 l" + "h" + "S" + "381.96 34.63 m" + "384.55 32.04 l" + "381.96 29.45 l" + "379.37 32.04 l" + "h" + "S" + "1.00 w" + "0.50 w" + "236.16 252.36 m" + "282.96 252.36 l" + "S" + "329.04 252.36 m" + "375.84 252.36 l" + "S" + "0.60 w" + "289.44 255.10 m" + "292.18 252.36 l" + "289.44 249.62 l" + "286.70 252.36 l" + "h" + "f" + "297.72 255.10 m" + "300.46 252.36 l" + "297.72 249.62 l" + "294.98 252.36 l" + "h" + "f" + "306.00 255.10 m" + "308.74 252.36 l" + "306.00 249.62 l" + "303.26 252.36 l" + "h" + "f" + "314.28 255.10 m" + "317.02 252.36 l" + "314.28 249.62 l" + "311.54 252.36 l" + "h" + "S" + "322.56 255.10 m" + "325.30 252.36 l" + "322.56 249.62 l" + "319.82 252.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "252.00 31.32 m" + "299.88 31.32 l" + "S" + "312.12 31.32 m" + "360.00 31.32 l" + "S" + "306.00 33.62 m" + "308.30 31.32 l" + "306.00 29.02 l" + "303.70 31.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "367.20 199.08 m" + "373.32 199.08 l" + "375.84 196.56 l" + "375.84 191.16 l" + "373.32 188.64 l" + "367.20 188.64 l" + "364.68 191.16 l" + "364.68 196.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "367.73 191.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "236.16 244.08 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc0003005301180184015d000301be0184011801d60143 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "230.40 198.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "230.40 182.16 m" + "381.60 182.16 l" + "S" + "0.35 w" + "230.40 179.64 m" + "381.60 179.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "230.40 174.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "277.72 53.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "54.72 263.52 m" + "197.28 263.52 l" + "209.52 251.28 l" + "209.52 36.72 l" + "197.28 24.48 l" + "54.72 24.48 l" + "42.48 36.72 l" + "42.48 251.28 l" + "s" + "0.45 w" + "54.72 260.50 m" + "197.28 260.50 l" + "206.50 251.28 l" + "206.50 36.72 l" + "197.28 27.50 l" + "54.72 27.50 l" + "45.50 36.72 l" + "45.50 251.28 l" + "s" + "0.70 w" + "50.04 258.55 m" + "52.63 255.96 l" + "50.04 253.37 l" + "47.45 255.96 l" + "h" + "S" + "201.96 258.55 m" + "204.55 255.96 l" + "201.96 253.37 l" + "199.37 255.96 l" + "h" + "S" + "50.04 34.63 m" + "52.63 32.04 l" + "50.04 29.45 l" + "47.45 32.04 l" + "h" + "S" + "201.96 34.63 m" + "204.55 32.04 l" + "201.96 29.45 l" + "199.37 32.04 l" + "h" + "S" + "1.00 w" + "0.50 w" + "56.16 252.36 m" + "102.96 252.36 l" + "S" + "149.04 252.36 m" + "195.84 252.36 l" + "S" + "0.60 w" + "109.44 255.10 m" + "112.18 252.36 l" + "109.44 249.62 l" + "106.70 252.36 l" + "h" + "f" + "117.72 255.10 m" + "120.46 252.36 l" + "117.72 249.62 l" + "114.98 252.36 l" + "h" + "f" + "126.00 255.10 m" + "128.74 252.36 l" + "126.00 249.62 l" + "123.26 252.36 l" + "h" + "f" + "134.28 255.10 m" + "137.02 252.36 l" + "134.28 249.62 l" + "131.54 252.36 l" + "h" + "S" + "142.56 255.10 m" + "145.30 252.36 l" + "142.56 249.62 l" + "139.82 252.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "72.00 31.32 m" + "119.88 31.32 l" + "S" + "132.12 31.32 m" + "180.00 31.32 l" + "S" + "126.00 33.62 m" + "128.30 31.32 l" + "126.00 29.02 l" + "123.70 31.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "187.20 199.08 m" + "193.32 199.08 l" + "195.84 196.56 l" + "195.84 191.16 l" + "193.32 188.64 l" + "187.20 188.64 l" + "184.68 191.16 l" + "184.68 196.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "187.73 191.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "56.16 244.08 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc0003001f01c10143011801c901d601be0184011801d60143 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "50.40 198.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "50.40 182.16 m" + "201.60 182.16 l" + "S" + "0.35 w" + "50.40 179.64 m" + "201.60 179.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "50.40 174.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "97.72 53.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET"] + ["0.88 0.88 0.88 RG" + "36.00 18.00 m" + "36.00 774.00 l" + "S" + "216.00 18.00 m" + "216.00 774.00 l" + "S" + "396.00 18.00 m" + "396.00 774.00 l" + "S" + "576.00 18.00 m" + "576.00 774.00 l" + "S" + "36.00 18.00 m" + "576.00 18.00 l" + "S" + "36.00 270.00 m" + "576.00 270.00 l" + "S" + "36.00 522.00 m" + "576.00 522.00 l" + "S" + "36.00 774.00 m" + "576.00 774.00 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 781.20 Td" + "#hex:00a9014d01930178000303fa000304a201f60178022a017801f601fe017804a3 Tj" + "ET" + "q" + "144.00 0.00 0.00 144.00 54.00 576.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "91.01 533.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 54.00 324.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "91.01 281.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 54.00 72.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "91.01 29.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 234.00 576.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "271.01 533.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 234.00 324.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "271.01 281.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 234.00 72.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "271.01 29.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 414.00 576.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "451.01 533.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 414.00 324.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "451.01 281.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 414.00 72.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "451.01 29.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET"] + ["0.88 0.88 0.88 RG" + "36.00 18.00 m" + "36.00 774.00 l" + "S" + "216.00 18.00 m" + "216.00 774.00 l" + "S" + "396.00 18.00 m" + "396.00 774.00 l" + "S" + "576.00 18.00 m" + "576.00 774.00 l" + "S" + "36.00 18.00 m" + "576.00 18.00 l" + "S" + "36.00 270.00 m" + "576.00 270.00 l" + "S" + "36.00 522.00 m" + "576.00 522.00 l" + "S" + "36.00 774.00 m" + "576.00 774.00 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 781.20 Td" + "#hex:00a9014d01930178000303fb Tj" + "ET" + "1.10 w" + "414.72 767.52 m" + "557.28 767.52 l" + "569.52 755.28 l" + "569.52 540.72 l" + "557.28 528.48 l" + "414.72 528.48 l" + "402.48 540.72 l" + "402.48 755.28 l" + "s" + "0.45 w" + "414.72 764.50 m" + "557.28 764.50 l" + "566.50 755.28 l" + "566.50 540.72 l" + "557.28 531.50 l" + "414.72 531.50 l" + "405.50 540.72 l" + "405.50 755.28 l" + "s" + "0.70 w" + "410.04 762.55 m" + "412.63 759.96 l" + "410.04 757.37 l" + "407.45 759.96 l" + "h" + "S" + "561.96 762.55 m" + "564.55 759.96 l" + "561.96 757.37 l" + "559.37 759.96 l" + "h" + "S" + "410.04 538.63 m" + "412.63 536.04 l" + "410.04 533.45 l" + "407.45 536.04 l" + "h" + "S" + "561.96 538.63 m" + "564.55 536.04 l" + "561.96 533.45 l" + "559.37 536.04 l" + "h" + "S" + "1.00 w" + "0.50 w" + "416.16 756.36 m" + "462.96 756.36 l" + "S" + "509.04 756.36 m" + "555.84 756.36 l" + "S" + "0.60 w" + "469.44 759.10 m" + "472.18 756.36 l" + "469.44 753.62 l" + "466.70 756.36 l" + "h" + "f" + "477.72 759.10 m" + "480.46 756.36 l" + "477.72 753.62 l" + "474.98 756.36 l" + "h" + "f" + "486.00 759.10 m" + "488.74 756.36 l" + "486.00 753.62 l" + "483.26 756.36 l" + "h" + "f" + "494.28 759.10 m" + "497.02 756.36 l" + "494.28 753.62 l" + "491.54 756.36 l" + "h" + "S" + "502.56 759.10 m" + "505.30 756.36 l" + "502.56 753.62 l" + "499.82 756.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "432.00 535.32 m" + "479.88 535.32 l" + "S" + "492.12 535.32 m" + "540.00 535.32 l" + "S" + "486.00 537.62 m" + "488.30 535.32 l" + "486.00 533.02 l" + "483.70 535.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "547.20 703.08 m" + "553.32 703.08 l" + "555.84 700.56 l" + "555.84 695.16 l" + "553.32 692.64 l" + "547.20 692.64 l" + "544.68 695.16 l" + "544.68 700.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "547.73 695.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "416.16 748.08 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc000300a90184011801d60143 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "410.40 702.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "410.40 686.16 m" + "561.60 686.16 l" + "S" + "0.35 w" + "410.40 683.64 m" + "561.60 683.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "410.40 678.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "457.72 557.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "234.72 767.52 m" + "377.28 767.52 l" + "389.52 755.28 l" + "389.52 540.72 l" + "377.28 528.48 l" + "234.72 528.48 l" + "222.48 540.72 l" + "222.48 755.28 l" + "s" + "0.45 w" + "234.72 764.50 m" + "377.28 764.50 l" + "386.50 755.28 l" + "386.50 540.72 l" + "377.28 531.50 l" + "234.72 531.50 l" + "225.50 540.72 l" + "225.50 755.28 l" + "s" + "0.70 w" + "230.04 762.55 m" + "232.63 759.96 l" + "230.04 757.37 l" + "227.45 759.96 l" + "h" + "S" + "381.96 762.55 m" + "384.55 759.96 l" + "381.96 757.37 l" + "379.37 759.96 l" + "h" + "S" + "230.04 538.63 m" + "232.63 536.04 l" + "230.04 533.45 l" + "227.45 536.04 l" + "h" + "S" + "381.96 538.63 m" + "384.55 536.04 l" + "381.96 533.45 l" + "379.37 536.04 l" + "h" + "S" + "1.00 w" + "0.50 w" + "236.16 756.36 m" + "282.96 756.36 l" + "S" + "329.04 756.36 m" + "375.84 756.36 l" + "S" + "0.60 w" + "289.44 759.10 m" + "292.18 756.36 l" + "289.44 753.62 l" + "286.70 756.36 l" + "h" + "f" + "297.72 759.10 m" + "300.46 756.36 l" + "297.72 753.62 l" + "294.98 756.36 l" + "h" + "f" + "306.00 759.10 m" + "308.74 756.36 l" + "306.00 753.62 l" + "303.26 756.36 l" + "h" + "f" + "314.28 759.10 m" + "317.02 756.36 l" + "314.28 753.62 l" + "311.54 756.36 l" + "h" + "S" + "322.56 759.10 m" + "325.30 756.36 l" + "322.56 753.62 l" + "319.82 756.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "252.00 535.32 m" + "299.88 535.32 l" + "S" + "312.12 535.32 m" + "360.00 535.32 l" + "S" + "306.00 537.62 m" + "308.30 535.32 l" + "306.00 533.02 l" + "303.70 535.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "367.20 703.08 m" + "373.32 703.08 l" + "375.84 700.56 l" + "375.84 695.16 l" + "373.32 692.64 l" + "367.20 692.64 l" + "364.68 695.16 l" + "364.68 700.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "367.73 695.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "236.16 748.08 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc000300b401be0184016b018f01d6 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "230.40 702.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "230.40 686.16 m" + "381.60 686.16 l" + "S" + "0.35 w" + "230.40 683.64 m" + "381.60 683.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "230.40 678.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "277.72 557.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "54.72 767.52 m" + "197.28 767.52 l" + "209.52 755.28 l" + "209.52 540.72 l" + "197.28 528.48 l" + "54.72 528.48 l" + "42.48 540.72 l" + "42.48 755.28 l" + "s" + "0.45 w" + "54.72 764.50 m" + "197.28 764.50 l" + "206.50 755.28 l" + "206.50 540.72 l" + "197.28 531.50 l" + "54.72 531.50 l" + "45.50 540.72 l" + "45.50 755.28 l" + "s" + "0.70 w" + "50.04 762.55 m" + "52.63 759.96 l" + "50.04 757.37 l" + "47.45 759.96 l" + "h" + "S" + "201.96 762.55 m" + "204.55 759.96 l" + "201.96 757.37 l" + "199.37 759.96 l" + "h" + "S" + "50.04 538.63 m" + "52.63 536.04 l" + "50.04 533.45 l" + "47.45 536.04 l" + "h" + "S" + "201.96 538.63 m" + "204.55 536.04 l" + "201.96 533.45 l" + "199.37 536.04 l" + "h" + "S" + "1.00 w" + "0.50 w" + "56.16 756.36 m" + "102.96 756.36 l" + "S" + "149.04 756.36 m" + "195.84 756.36 l" + "S" + "0.60 w" + "109.44 759.10 m" + "112.18 756.36 l" + "109.44 753.62 l" + "106.70 756.36 l" + "h" + "f" + "117.72 759.10 m" + "120.46 756.36 l" + "117.72 753.62 l" + "114.98 756.36 l" + "h" + "f" + "126.00 759.10 m" + "128.74 756.36 l" + "126.00 753.62 l" + "123.26 756.36 l" + "h" + "f" + "134.28 759.10 m" + "137.02 756.36 l" + "134.28 753.62 l" + "131.54 756.36 l" + "h" + "S" + "142.56 759.10 m" + "145.30 756.36 l" + "142.56 753.62 l" + "139.82 756.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "72.00 535.32 m" + "119.88 535.32 l" + "S" + "132.12 535.32 m" + "180.00 535.32 l" + "S" + "126.00 537.62 m" + "128.30 535.32 l" + "126.00 533.02 l" + "123.70 535.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "187.20 703.08 m" + "193.32 703.08 l" + "195.84 700.56 l" + "195.84 695.16 l" + "193.32 692.64 l" + "187.20 692.64 l" + "184.68 695.16 l" + "184.68 700.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "187.73 695.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "56.16 748.08 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc0003002001660118016b018f0003018d0118016b0184 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "50.40 702.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "50.40 686.16 m" + "201.60 686.16 l" + "S" + "0.35 w" + "50.40 683.64 m" + "201.60 683.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "50.40 678.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "97.72 557.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET"] + ["0.88 0.88 0.88 RG" + "36.00 18.00 m" + "36.00 774.00 l" + "S" + "216.00 18.00 m" + "216.00 774.00 l" + "S" + "396.00 18.00 m" + "396.00 774.00 l" + "S" + "576.00 18.00 m" + "576.00 774.00 l" + "S" + "36.00 18.00 m" + "576.00 18.00 l" + "S" + "36.00 270.00 m" + "576.00 270.00 l" + "S" + "36.00 522.00 m" + "576.00 522.00 l" + "S" + "36.00 774.00 m" + "576.00 774.00 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 781.20 Td" + "#hex:00a9014d01930178000303fb000304a201f60178022a017801f601fe017804a3 Tj" + "ET" + "q" + "144.00 0.00 0.00 144.00 54.00 576.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "91.01 533.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 54.00 324.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "91.01 281.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 54.00 72.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "91.01 29.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 234.00 576.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "271.01 533.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 234.00 324.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "271.01 281.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 234.00 72.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "271.01 29.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 414.00 576.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "451.01 533.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 414.00 324.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "451.01 281.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 414.00 72.00 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "451.01 29.52 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" "ET"]] diff --git a/test/card-ornament-baseline.edn b/test/card-ornament-baseline.edn new file mode 100644 index 000000000..2b27b699e --- /dev/null +++ b/test/card-ornament-baseline.edn @@ -0,0 +1,12086 @@ +;; Written by orcpub.card-geometry-test. Flourish family x printing mode. +;; A diff here is an ornament moving. Read it before committing it. +[["0.88 0.88 0.88 RG" + "36.00 18.00 m" + "36.00 774.00 l" + "S" + "216.00 18.00 m" + "216.00 774.00 l" + "S" + "396.00 18.00 m" + "396.00 774.00 l" + "S" + "576.00 18.00 m" + "576.00 774.00 l" + "S" + "36.00 18.00 m" + "576.00 18.00 l" + "S" + "36.00 270.00 m" + "576.00 270.00 l" + "S" + "36.00 522.00 m" + "576.00 522.00 l" + "S" + "36.00 774.00 m" + "576.00 774.00 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 781.20 Td" + "#hex:00a9014d01930178000303fa Tj" + "ET" + "1.10 w" + "414.72 767.52 m" + "557.28 767.52 l" + "569.52 755.28 l" + "569.52 540.72 l" + "557.28 528.48 l" + "414.72 528.48 l" + "402.48 540.72 l" + "402.48 755.28 l" + "s" + "0.45 w" + "414.72 764.50 m" + "557.28 764.50 l" + "566.50 755.28 l" + "566.50 540.72 l" + "557.28 531.50 l" + "414.72 531.50 l" + "405.50 540.72 l" + "405.50 755.28 l" + "s" + "1.00 w" + "0.50 w" + "416.16 756.36 m" + "462.96 756.36 l" + "S" + "509.04 756.36 m" + "555.84 756.36 l" + "S" + "0.60 w" + "469.44 759.10 m" + "472.18 756.36 l" + "469.44 753.62 l" + "466.70 756.36 l" + "h" + "f" + "477.72 759.10 m" + "480.46 756.36 l" + "477.72 753.62 l" + "474.98 756.36 l" + "h" + "f" + "486.00 759.10 m" + "488.74 756.36 l" + "486.00 753.62 l" + "483.26 756.36 l" + "h" + "f" + "494.28 759.10 m" + "497.02 756.36 l" + "494.28 753.62 l" + "491.54 756.36 l" + "h" + "S" + "502.56 759.10 m" + "505.30 756.36 l" + "502.56 753.62 l" + "499.82 756.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "432.00 535.32 m" + "479.88 535.32 l" + "S" + "492.12 535.32 m" + "540.00 535.32 l" + "S" + "486.00 537.62 m" + "488.30 535.32 l" + "486.00 533.02 l" + "483.70 535.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "547.20 703.08 m" + "553.32 703.08 l" + "555.84 700.56 l" + "555.84 695.16 l" + "553.32 692.64 l" + "547.20 692.64 l" + "544.68 695.16 l" + "544.68 700.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "547.73 695.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "416.16 748.08 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc000300a90118013b013b0143013b Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "410.40 702.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "410.40 686.16 m" + "561.60 686.16 l" + "S" + "0.35 w" + "410.40 683.64 m" + "561.60 683.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "410.40 678.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "457.72 557.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "234.72 767.52 m" + "377.28 767.52 l" + "389.52 755.28 l" + "389.52 540.72 l" + "377.28 528.48 l" + "234.72 528.48 l" + "222.48 540.72 l" + "222.48 755.28 l" + "s" + "0.45 w" + "234.72 764.50 m" + "377.28 764.50 l" + "386.50 755.28 l" + "386.50 540.72 l" + "377.28 531.50 l" + "234.72 531.50 l" + "225.50 540.72 l" + "225.50 755.28 l" + "s" + "1.00 w" + "0.50 w" + "236.16 756.36 m" + "282.96 756.36 l" + "S" + "329.04 756.36 m" + "375.84 756.36 l" + "S" + "0.60 w" + "289.44 759.10 m" + "292.18 756.36 l" + "289.44 753.62 l" + "286.70 756.36 l" + "h" + "f" + "297.72 759.10 m" + "300.46 756.36 l" + "297.72 753.62 l" + "294.98 756.36 l" + "h" + "f" + "306.00 759.10 m" + "308.74 756.36 l" + "306.00 753.62 l" + "303.26 756.36 l" + "h" + "S" + "314.28 759.10 m" + "317.02 756.36 l" + "314.28 753.62 l" + "311.54 756.36 l" + "h" + "S" + "322.56 759.10 m" + "325.30 756.36 l" + "322.56 753.62 l" + "319.82 756.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "252.00 535.32 m" + "299.88 535.32 l" + "S" + "312.12 535.32 m" + "360.00 535.32 l" + "S" + "306.00 537.62 m" + "308.30 535.32 l" + "306.00 533.02 l" + "303.70 535.32 l" + "h" + "S" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "236.16 748.08 Td" + "0.00 -14.30 Td" + "#hex:0004013b0118018d0118018f01d6016b018f01430003000401c1018d019b01c105fc Tj" + "0.00 -14.30 Td" + "#hex:002001660118016b018f000300b40166016b01c101d6 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "230.40 702.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f604760003021301c4016901d001c201c201d001c4 Tj" + "ET" + "0.90 w" + "230.40 686.16 m" + "381.60 686.16 l" + "S" + "0.35 w" + "230.40 683.64 m" + "381.60 683.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "230.40 678.96 Td" + "0.00 -8.80 Td" + "#hex:00c10166016b01c9000301c901de016b01d60003019b015d0003011801c1018d019b01c10003016b01c9000301c10143016b018f015d019b01c101340143013b000301f6016b01d60166 Tj" + "0.00 -8.80 Td" + "#hex:0118013b0118018d0118018f01d6016b018f014305fc0003019b018f01430003019b015d000301d60166014300030166011801c1013b014301c901d6000301c901de013301c901d60118018f0134014301c9 Tj" + "0.00 -8.80 Td" + "#hex:016b018f0003014301fb016b01c901d60143018f013401430608000300e00166016b01840143000301fc019b01de065a01c10143000301f60143011801c1016b018f015e0003016b01d605fc00030118018f01fc Tj" + "0.00 -8.80 Td" + "#hex:013401c1016b01d6016b01340118018400030166016b01d600030118015e0118016b018f01c901d6000301fc019b01de0003013301430134019b018d014301c9000301180003018f019b01c1018d01180184 Tj" + "0.00 -8.80 Td" + "#hex:0166016b01d60608 Tj" + "ET" + "1.10 w" + "54.72 767.52 m" + "197.28 767.52 l" + "209.52 755.28 l" + "209.52 540.72 l" + "197.28 528.48 l" + "54.72 528.48 l" + "42.48 540.72 l" + "42.48 755.28 l" + "s" + "1.00 w" + "0.50 w" + "56.16 756.36 m" + "102.96 756.36 l" + "S" + "149.04 756.36 m" + "195.84 756.36 l" + "S" + "0.60 w" + "109.44 759.10 m" + "112.18 756.36 l" + "109.44 753.62 l" + "106.70 756.36 l" + "h" + "f" + "117.72 759.10 m" + "120.46 756.36 l" + "117.72 753.62 l" + "114.98 756.36 l" + "h" + "S" + "126.00 759.10 m" + "128.74 756.36 l" + "126.00 753.62 l" + "123.26 756.36 l" + "h" + "S" + "134.28 759.10 m" + "137.02 756.36 l" + "134.28 753.62 l" + "131.54 756.36 l" + "h" + "S" + "142.56 759.10 m" + "145.30 756.36 l" + "142.56 753.62 l" + "139.82 756.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "72.00 535.32 m" + "119.88 535.32 l" + "S" + "132.12 535.32 m" + "180.00 535.32 l" + "S" + "126.00 537.62 m" + "128.30 535.32 l" + "126.00 533.02 l" + "123.70 535.32 l" + "h" + "S" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "56.16 740.88 Td" + "0.00 -14.30 Td" + "#hex:00a9019b01d6016b019b018f0003019b015d000300200184016b018d0133016b018f015e Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "50.40 702.00 Td" + "0.00 -8.25 Td" + "#hex:00a901d0020b01a001d001c404760003016901d001c201c201d001c4 Tj" + "ET" + "0.90 w" + "50.40 686.16 m" + "201.60 686.16 l" + "S" + "0.35 w" + "50.40 683.64 m" + "201.60 683.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "50.40 678.96 Td" + "0.00 -8.80 Td" + "#hex:00e001660143018f000301fc019b01de0003013b01c1016b018f0181000301d60166016b01c9000301be019b01d6016b019b018f05fc000301fc019b01de0003015e0118016b018f00030118 Tj" + "0.00 -8.80 Td" + "#hex:01340184016b018d0133016b018f015e000301c901be01430143013b0003014301c001de01180184000301d6019b000301fc019b01de01c1000301f6011801840181016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:01c901be01430143013b0003015d019b01c10003056a00030166019b01de01c106080003002701de01c1016b018f015e000301d60166016b01c9000301d6016b018d014305fc000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:0166011801f5014300030118013b01f50118018f01d60118015e01430003019b018f000300b401d601c10143018f015e01d6016600030628000401d601660184014301d6016b013401c90629 Tj" + "0.00 -8.80 Td" + "#hex:0134016601430134018101c9000301fc019b01de0003018d011801810143000301d6019b000301340184016b018d01330608000300c101660143000301be019b01d6016b019b018f0003016b01c9 Tj" + "0.00 -8.80 Td" + "#hex:01c9014301be011801c1011801d60143013b0003016b018f01d6019b0003013301c1019b01f6018f05fc000301c9016b018401f5014301c105fc00030118018f013b0003015e01c1011801fc Tj" + "0.00 -8.80 Td" + "#hex:0184011801fc014301c101c9000301c1014301c90143018d01330184016b018f015e000301330118018f013b01c90003019b015d000301c901d6019b018f01430608000300b4016601180181016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:01d60166014300030133019b01d601d6018401430003015d0118016b018401c9000301d6019b0003018d016b01fb000301d60166014300030134019b0184019b01c101c90608 Tj" + "ET" + "1.10 w" + "414.72 515.52 m" + "557.28 515.52 l" + "569.52 503.28 l" + "569.52 288.72 l" + "557.28 276.48 l" + "414.72 276.48 l" + "402.48 288.72 l" + "402.48 503.28 l" + "s" + "1.00 w" + "0.50 w" + "416.16 504.36 m" + "462.96 504.36 l" + "S" + "509.04 504.36 m" + "555.84 504.36 l" + "S" + "0.60 w" + "469.44 507.10 m" + "472.18 504.36 l" + "469.44 501.62 l" + "466.70 504.36 l" + "h" + "S" + "477.72 507.10 m" + "480.46 504.36 l" + "477.72 501.62 l" + "474.98 504.36 l" + "h" + "S" + "486.00 507.10 m" + "488.74 504.36 l" + "486.00 501.62 l" + "483.26 504.36 l" + "h" + "S" + "494.28 507.10 m" + "497.02 504.36 l" + "494.28 501.62 l" + "491.54 504.36 l" + "h" + "S" + "502.56 507.10 m" + "505.30 504.36 l" + "502.56 501.62 l" + "499.82 504.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "432.00 283.32 m" + "479.88 283.32 l" + "S" + "492.12 283.32 m" + "540.00 283.32 l" + "S" + "486.00 285.62 m" + "488.30 283.32 l" + "486.00 281.02 l" + "483.70 283.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "547.20 451.08 m" + "553.32 451.08 l" + "555.84 448.56 l" + "555.84 443.16 l" + "553.32 440.64 l" + "547.20 440.64 l" + "544.68 443.16 l" + "544.68 448.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "547.73 443.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "416.16 488.88 Td" + "0.00 -14.30 Td" + "#hex:001f0143018401d60003019b015d0003002701f6011801c101f50143018f0181016b018f013b Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "410.40 450.00 Td" + "0.00 -8.25 Td" + "#hex:00e001d001c4017001f601d0021301fe000301a0020b017801c20476000301f6014d01f601a0020b02310003022a014d01f601a0017801fe Tj" + "ET" + "0.90 w" + "410.40 434.16 m" + "561.60 434.16 l" + "S" + "0.35 w" + "410.40 431.64 m" + "561.60 431.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "410.40 426.96 Td" + "0.00 -8.80 Td" + "#hex:00e00166016b01840143000301f60143011801c1016b018f015e000301d60166016b01c9000301330143018401d605fc000301fc019b01de0003015e0118016b018f000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:015d019b01840184019b01f6016b018f015e000301330143018f0143025b01d601c905fb000305f8000300e6019b01de01c100030020019b018f01c901d6016b01d601de01d6016b019b018f Tj" + "0.00 -8.80 Td" + "#hex:01c90134019b01c101430003016b018f013401c10143011801c9014301c90003013301fc0003056b05fc000301d6019b000301180003018d011801fb016b018d01de018d0003019b015d0003056b05690608000305f8 Tj" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f5014300030118013b01f50118018f01d60118015e01430003019b018f000300200166011801c1016b01c9018d0118 Tj" + "0.00 -8.80 Td" + "#hex:062800a9014301c101c901de011801c9016b019b018f062900030134016601430134018101c90003018d0118013b0143000301d6019b0003016b018f01d6014301c10118013401d6000301f6016b01d60166 Tj" + "0.00 -8.80 Td" + "#hex:013b01f6011801c101f5014301c9060800030058018f00030118013b013b016b01d6016b019b018f05fc000301f60166016b018401430003011801d601d601de018f0143013b000301d6019b000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01330143018401d605fc000301fc019b01de00030166011801f50143000301180003056e0569000301be014301c101340143018f01d60003013401660118018f01340143000301430118013401660003013b011801fc Tj" + "0.00 -8.80 Td" + "#hex:011801d60003013b011801f6018f0003019b015d0003015e01c1019b01f6016b018f015e000301180003015d01de01840184000301330143011801c1013b0003016b015d000301fc019b01de065a01c10143 Tj" + "0.00 -8.80 Td" + "#hex:0134011801be01180133018401430003019b015d0003015e01c1019b01f6016b018f015e0003019b018f014305fc0003019b01c100030118000301f5016b01c9016b0133018401fc000301d60166016b01340181014301c1 Tj" + "0.00 -8.80 Td" + "#hex:01330143011801c1013b0003016b015d000301fc019b01de00030118018401c101430118013b01fc00030166011801f501430003019b018f0143060800030058015d000301fc019b01de0003011801c10143018f065a01d6 Tj" + "0.00 -8.80 Td" + "#hex:01180003013b01f6011801c1015d05fc000301fc019b01de0003015e0118016b018f000301d6016601430003015d019b01840184019b01f6016b018f015e00030118013b013b016b01d6016b019b018f01180184 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "457.72 305.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "BT" + "/F1 6.20 Tf" + "460.52 320.40 Td" + "#hex:016901d001c4020b01a001c4021301780170000301d001c40003020b019b017800030168014d016901b6 Tj" + "ET" + "1.10 w" + "234.72 515.52 m" + "377.28 515.52 l" + "389.52 503.28 l" + "389.52 288.72 l" + "377.28 276.48 l" + "234.72 276.48 l" + "222.48 288.72 l" + "222.48 503.28 l" + "s" + "0.45 w" + "234.72 512.50 m" + "377.28 512.50 l" + "386.50 503.28 l" + "386.50 288.72 l" + "377.28 279.50 l" + "234.72 279.50 l" + "225.50 288.72 l" + "225.50 503.28 l" + "s" + "0.35 w" + "234.72 510.12 m" + "377.28 510.12 l" + "384.12 503.28 l" + "384.12 288.72 l" + "377.28 281.88 l" + "234.72 281.88 l" + "227.88 288.72 l" + "227.88 503.28 l" + "s" + "1.90 w" + "232.20 518.04 m" + "379.80 518.04 l" + "392.04 505.80 l" + "392.04 286.20 l" + "379.80 273.96 l" + "232.20 273.96 l" + "219.96 286.20 l" + "219.96 505.80 l" + "s" + "1.00 w" + "0.50 w" + "236.16 504.36 m" + "282.96 504.36 l" + "S" + "329.04 504.36 m" + "375.84 504.36 l" + "S" + "0.60 w" + "289.44 507.10 m" + "292.18 504.36 l" + "289.44 501.62 l" + "286.70 504.36 l" + "h" + "f" + "297.72 507.10 m" + "300.46 504.36 l" + "297.72 501.62 l" + "294.98 504.36 l" + "h" + "f" + "306.00 507.10 m" + "308.74 504.36 l" + "306.00 501.62 l" + "303.26 504.36 l" + "h" + "f" + "314.28 507.10 m" + "317.02 504.36 l" + "314.28 501.62 l" + "311.54 504.36 l" + "h" + "f" + "322.56 507.10 m" + "325.30 504.36 l" + "322.56 501.62 l" + "319.82 504.36 l" + "h" + "f" + "1.00 w" + "0.50 w" + "252.00 283.32 m" + "299.88 283.32 l" + "S" + "312.12 283.32 m" + "360.00 283.32 l" + "S" + "306.00 285.62 m" + "308.30 283.32 l" + "306.00 281.02 l" + "303.70 283.32 l" + "h" + "S" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "236.16 488.88 Td" + "0.00 -14.30 Td" + "#hex:000401be01be011801c1011801d601de01c90003019b015d000301d6016601430003002001c101180133 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "230.40 450.00 Td" + "0.00 -8.25 Td" + "#hex:00e001d001c4017001f601d0021301fe000301a0020b017801c20476000301b901780193017801c40170014d01f60231 Tj" + "ET" + "0.90 w" + "230.40 434.16 m" + "381.60 434.16 l" + "S" + "0.35 w" + "230.40 431.64 m" + "381.60 431.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "230.40 426.96 Td" + "0.00 -8.80 Td" + "#hex:00c10166016b01c90003016b01d60143018d0003025b01c101c901d60003011801be01be0143011801c101c9000301d6019b000301330143000301180003006e011801c1015e0143000301c90143011801840143013b Tj" + "0.00 -8.80 Td" + "#hex:016b01c1019b018f00030133011801c101c101430184000301f60143016b015e0166016b018f015e0003056e05690569000301be019b01de018f013b01c90608000300c101660143 Tj" + "0.00 -8.80 Td" + "#hex:0133011801c101c10143018400030166011801c90003011800030166016b013b013b0143018f00030134011801d60134016605fc000301f60166016b01340166000301340118018f000301330143 Tj" + "0.00 -8.80 Td" + "#hex:015d019b01de018f013b000301f6016b01d6016600030118000301c901de01340134014301c901c9015d01de01840003002700200003056b056900030058018f01d6014301840184016b015e0143018f01340143 Tj" + "0.00 -8.80 Td" + "#hex:06280058018f01f5014301c901d6016b015e011801d6016b019b018f06290003013401660143013401810608000300ac014301840143011801c9016b018f015e000301d60166014300030134011801d601340166 Tj" + "0.00 -8.80 Td" + "#hex:01de018f0184019b0134018101c90003011800030166011801d6013401660003011801d60003019b018f014300030143018f013b0003019b015d000301d60166014300030133011801c101c10143018405fc Tj" + "0.00 -8.80 Td" + "#hex:011801840184019b01f6016b018f015e000301d601f6019b000300780143013b016b01de018d0003019b01c1000301c9018d011801840184014301c10003013401c10143011801d601de01c1014301c9 Tj" + "0.00 -8.80 Td" + "#hex:01d6019b0003013401c1011801f601840003016b018f01c9016b013b01430608000300c10143018f00030184014301f5014301c101c90003011801c10143000301c9014301d60003016b018f00030118000301c1019b01f6 Tj" + "0.00 -8.80 Td" + "#hex:011801d6000301d6016601430003015d011801c100030143018f013b05fc000301430118013401660003016b018f000301180003018f014301de01d601c101180184000301be019b01c9016b01d6016b019b018f05fc Tj" + "0.00 -8.80 Td" + "#hex:0118013301840143000301d6019b0003018d019b01f5014300030143016b01d60166014301c1000301de01be0003019b01c10003013b019b01f6018f0608000300e001660143018f Tj" + "0.00 -8.80 Td" + "#hex:0134014301c101d60118016b018f00030184014301f5014301c101c90003011801c10143000301de01c90143013b05fc000301d6016601430003011801be01be011801c1011801d601de01c9 Tj" + "0.00 -8.80 Td" + "#hex:01d601c10118018f01c9015d019b01c1018d01c9000301d6019b000301c1014301c90143018d013301840143000301180003015e016b0118018f01d600030184019b013301c901d6014301c10608000300c101660143 Tj" + "0.00 -8.80 Td" + "#hex:011801be01be011801c1011801d601de01c90003019b015d000301d6016601430003002001c1011801330003016b01c9000301180003006e011801c1015e01430003019b0133017d0143013401d6000301f6016b01d60166 Tj" + "0.00 -8.80 Td" + "#hex:01d6016601430003015d019b01840184019b01f6016b018f015e000301c901d6011801d6016b01c901d6016b013401c905fb0003000401c1018d019b01c1000300200184011801c901c905fb0003056b0569 Tj" + "ET" + "BT" + "/F1 6.20 Tf" + "280.52 291.60 Td" + "#hex:016901d001c4020b01a001c4021301780170000301d001c40003020b019b017800030168014d016901b6 Tj" + "ET" + "1.10 w" + "54.72 515.52 m" + "197.28 515.52 l" + "209.52 503.28 l" + "209.52 288.72 l" + "197.28 276.48 l" + "54.72 276.48 l" + "42.48 288.72 l" + "42.48 503.28 l" + "s" + "0.45 w" + "54.72 512.50 m" + "197.28 512.50 l" + "206.50 503.28 l" + "206.50 288.72 l" + "197.28 279.50 l" + "54.72 279.50 l" + "45.50 288.72 l" + "45.50 503.28 l" + "s" + "0.35 w" + "54.72 510.12 m" + "197.28 510.12 l" + "204.12 503.28 l" + "204.12 288.72 l" + "197.28 281.88 l" + "54.72 281.88 l" + "47.88 288.72 l" + "47.88 503.28 l" + "s" + "1.00 w" + "0.50 w" + "56.16 504.36 m" + "102.96 504.36 l" + "S" + "149.04 504.36 m" + "195.84 504.36 l" + "S" + "0.60 w" + "109.44 507.10 m" + "112.18 504.36 l" + "109.44 501.62 l" + "106.70 504.36 l" + "h" + "f" + "117.72 507.10 m" + "120.46 504.36 l" + "117.72 501.62 l" + "114.98 504.36 l" + "h" + "f" + "126.00 507.10 m" + "128.74 504.36 l" + "126.00 501.62 l" + "123.26 504.36 l" + "h" + "f" + "134.28 507.10 m" + "137.02 504.36 l" + "134.28 501.62 l" + "131.54 504.36 l" + "h" + "f" + "142.56 507.10 m" + "145.30 504.36 l" + "142.56 501.62 l" + "139.82 504.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "72.00 283.32 m" + "119.88 283.32 l" + "S" + "132.12 283.32 m" + "180.00 283.32 l" + "S" + "126.00 285.62 m" + "128.30 283.32 l" + "126.00 281.02 l" + "123.70 283.32 l" + "h" + "S" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "56.16 488.88 Td" + "0.00 -14.30 Td" + "#hex:000401c101c1019b01f6000306af056c Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "50.40 450.00 Td" + "0.00 -8.25 Td" + "#hex:00e00178014d01f301d001c404760003022a017801f60231000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "50.40 434.16 m" + "201.60 434.16 l" + "S" + "0.35 w" + "50.40 431.64 m" + "201.60 431.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "50.40 426.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f5014300030118000306af056c00030133019b018f01de01c9000301d6019b0003011801d601d601180134018100030118018f013b0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01c1019b0184018401c90003018d0118013b0143000301f6016b01d60166000301d60166016b01c9000301be016b0143013401430003019b015d0003018d0118015e016b0134 Tj" + "0.00 -8.80 Td" + "#hex:0118018d018d01de018f016b01d6016b019b018f0608000300c10166014300030133019b018f01de01c90003016b01c90003013b014301d6014301c1018d016b018f0143013b0003013301fc Tj" + "0.00 -8.80 Td" + "#hex:01d601660143000301c1011801c1016b01d601fc0003019b015d000301d60166014300030118018d018d01de018f016b01d6016b019b018f060800030086018f013401430003016b01d600030166016b01d601c900030118 Tj" + "0.00 -8.80 Td" + "#hex:01d6011801c1015e014301d605fc000301d60166014300030118018d018d01de018f016b01d6016b019b018f0003016b01c90003018f019b00030184019b018f015e014301c1 Tj" + "0.00 -8.80 Td" + "#hex:018d0118015e016b0134011801840608 Tj" + "ET" + "1.10 w" + "414.72 263.52 m" + "557.28 263.52 l" + "569.52 251.28 l" + "569.52 36.72 l" + "557.28 24.48 l" + "414.72 24.48 l" + "402.48 36.72 l" + "402.48 251.28 l" + "s" + "0.45 w" + "414.72 260.50 m" + "557.28 260.50 l" + "566.50 251.28 l" + "566.50 36.72 l" + "557.28 27.50 l" + "414.72 27.50 l" + "405.50 36.72 l" + "405.50 251.28 l" + "s" + "0.35 w" + "414.72 258.12 m" + "557.28 258.12 l" + "564.12 251.28 l" + "564.12 36.72 l" + "557.28 29.88 l" + "414.72 29.88 l" + "407.88 36.72 l" + "407.88 251.28 l" + "s" + "1.00 w" + "0.50 w" + "416.16 252.36 m" + "462.96 252.36 l" + "S" + "509.04 252.36 m" + "555.84 252.36 l" + "S" + "0.60 w" + "469.44 255.10 m" + "472.18 252.36 l" + "469.44 249.62 l" + "466.70 252.36 l" + "h" + "f" + "477.72 255.10 m" + "480.46 252.36 l" + "477.72 249.62 l" + "474.98 252.36 l" + "h" + "f" + "486.00 255.10 m" + "488.74 252.36 l" + "486.00 249.62 l" + "483.26 252.36 l" + "h" + "f" + "494.28 255.10 m" + "497.02 252.36 l" + "494.28 249.62 l" + "491.54 252.36 l" + "h" + "f" + "502.56 255.10 m" + "505.30 252.36 l" + "502.56 249.62 l" + "499.82 252.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "432.00 31.32 m" + "479.88 31.32 l" + "S" + "492.12 31.32 m" + "540.00 31.32 l" + "S" + "486.00 33.62 m" + "488.30 31.32 l" + "486.00 29.02 l" + "483.70 31.32 l" + "h" + "S" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 12.00 Tf" + "416.16 246.96 Td" + "0.00 -13.20 Td" + "#hex:00c1019b018d01430003019b015d0003006e01430118013b014301c101c90166016b01be00030118018f013b Tj" + "0.00 -13.20 Td" + "#hex:0058018f025d01de0143018f013401430003062801c101430118013b000301f6016b01d60166 Tj" + "0.00 -13.20 Td" + "#hex:018d019b013b016b025b014301c101c90629 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "410.40 198.00 Td" + "0.00 -8.25 Td" + "#hex:00e001d001c4017001f601d0021301fe000301a0020b017801c204760003022a017801f60231000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "410.40 182.16 m" + "561.60 182.16 l" + "S" + "0.35 w" + "410.40 179.64 m" + "561.60 179.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "410.40 174.96 Td" + "0.00 -8.80 Td" + "#hex:00c10166016b01c900030133019b019b018100030134019b018f01d60118016b018f01c90003015e01de016b013b01430184016b018f014301c90003015d019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:016b018f025d01de0143018f0134016b018f015e00030118018f013b000301340166011801c1018d016b018f015e0003019b01d60166014301c101c905fc00030118018f013b0003016b01d601c9 Tj" + "0.00 -8.80 Td" + "#hex:01f6019b01c1013b01c90003011801c10143000301340166011801c1015e0143013b000301f6016b01d601660003018d0118015e016b0134060800030058015d000301fc019b01de000301c901be0143018f013b Tj" + "0.00 -8.80 Td" + "#hex:056d057100030166019b01de01c101c90003019b01f5014301c100030118000301be014301c1016b019b013b0003019b015d0003056f0003013b011801fc01c90003019b01c10003015d014301f6014301c1 Tj" + "0.00 -8.80 Td" + "#hex:01c901d601de013b01fc016b018f015e000301d60166014300030133019b019b0181065a01c900030134019b018f01d60143018f01d601c900030118018f013b Tj" + "0.00 -8.80 Td" + "#hex:01be01c10118013401d6016b0134016b018f015e0003016b01d601c90003015e01de016b013b01430184016b018f014301c905fc000301fc019b01de01c1000300200166011801c1016b01c9018d0118 Tj" + "0.00 -8.80 Td" + "#hex:01c90134019b01c101430003016b018f013401c10143011801c9014301c90003013301fc0003056b05fc0003011801c90003013b019b014301c9000301fc019b01de01c1 Tj" + "0.00 -8.80 Td" + "#hex:018d011801fb016b018d01de018d0003015d019b01c1000301d60166011801d6000301c90134019b01c101430608000300c1016601430003018d0118018f01de01180184000301d601660143018f Tj" + "0.00 -8.80 Td" + "#hex:0184019b01c9014301c90003016b01d601c90003018d0118015e016b013405fc0003013301de01d6000301c10143015e0118016b018f01c90003016b01d60003016b018f00030118000301340143018f01d601de01c101fc0608 Tj" + "ET" + "1.10 w" + "234.72 263.52 m" + "377.28 263.52 l" + "389.52 251.28 l" + "389.52 36.72 l" + "377.28 24.48 l" + "234.72 24.48 l" + "222.48 36.72 l" + "222.48 251.28 l" + "s" + "0.45 w" + "234.72 260.50 m" + "377.28 260.50 l" + "386.50 251.28 l" + "386.50 36.72 l" + "377.28 27.50 l" + "234.72 27.50 l" + "225.50 36.72 l" + "225.50 251.28 l" + "s" + "1.00 w" + "0.50 w" + "236.16 252.36 m" + "282.96 252.36 l" + "S" + "329.04 252.36 m" + "375.84 252.36 l" + "S" + "0.60 w" + "289.44 255.10 m" + "292.18 252.36 l" + "289.44 249.62 l" + "286.70 252.36 l" + "h" + "f" + "297.72 255.10 m" + "300.46 252.36 l" + "297.72 249.62 l" + "294.98 252.36 l" + "h" + "f" + "306.00 255.10 m" + "308.74 252.36 l" + "306.00 249.62 l" + "303.26 252.36 l" + "h" + "S" + "314.28 255.10 m" + "317.02 252.36 l" + "314.28 249.62 l" + "311.54 252.36 l" + "h" + "S" + "322.56 255.10 m" + "325.30 252.36 l" + "322.56 249.62 l" + "319.82 252.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "252.00 31.32 m" + "299.88 31.32 l" + "S" + "312.12 31.32 m" + "360.00 31.32 l" + "S" + "306.00 33.62 m" + "308.30 31.32 l" + "306.00 29.02 l" + "303.70 31.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "367.20 199.08 m" + "373.32 199.08 l" + "375.84 196.56 l" + "375.84 191.16 l" + "373.32 188.64 l" + "367.20 188.64 l" + "364.68 191.16 l" + "364.68 196.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "367.73 191.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "236.16 236.88 Td" + "0.00 -14.30 Td" + "#hex:003101fc014301c90003019b015d000300200166011801c1018d016b018f015e Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "230.40 198.00 Td" + "0.00 -8.25 Td" + "#hex:00e001d001c4017001f601d0021301fe000301a0020b017801c204760003021301c4016901d001c201c201d001c4 Tj" + "ET" + "0.90 w" + "230.40 182.16 m" + "381.60 182.16 l" + "S" + "0.35 w" + "230.40 179.64 m" + "381.60 179.64 l" + "S" + "1.00 w" + "0.80 w" + "BT" + "/F5 5.50 Tf" + "292.40 169.92 Td" + "\"CHARGES\" Tj" + "ET" + "299.30 158.40 m" + "299.30 160.47 297.63 162.14 295.56 162.14 c" + "293.49 162.14 291.82 160.47 291.82 158.40 c" + "291.82 156.33 293.49 154.66 295.56 154.66 c" + "297.63 154.66 299.30 156.33 299.30 158.40 c" + "s" + "309.74 158.40 m" + "309.74 160.47 308.07 162.14 306.00 162.14 c" + "303.93 162.14 302.26 160.47 302.26 158.40 c" + "302.26 156.33 303.93 154.66 306.00 154.66 c" + "308.07 154.66 309.74 156.33 309.74 158.40 c" + "s" + "320.18 158.40 m" + "320.18 160.47 318.51 162.14 316.44 162.14 c" + "314.37 162.14 312.70 160.47 312.70 158.40 c" + "312.70 156.33 314.37 154.66 316.44 154.66 c" + "318.51 154.66 320.18 156.33 320.18 158.40 c" + "s" + "1.00 w" + "0.35 w" + "230.40 146.88 m" + "381.60 146.88 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "230.40 141.12 Td" + "0.00 -8.80 Td" + "#hex:00c10166014301c901430003013401c101fc01c901d601180184000301840143018f01c9014301c90003025b01d60003019b01f5014301c1000301d6016601430003014301fc014301c90608000300c10166014301fc Tj" + "0.00 -8.80 Td" + "#hex:0166011801f501430003056c000301340166011801c1015e014301c90608000300e00166016b01840143000301f60143011801c1016b018f015e000301d601660143018d05fc000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:01340118018f0003014301fb01be0143018f013b0003056a000301340166011801c1015e01430003011801c900030118018f00030118013401d6016b019b018f000301d6019b00030134011801c901d6000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01340166011801c1018d000301be014301c101c9019b018f000301c901be0143018401840003062801c9011801f501430003002700200003056a056c06290003019b018f00030118 Tj" + "0.00 -8.80 Td" + "#hex:016601de018d0118018f019b016b013b000301f6016b01d60166016b018f0003056c05690003015d0143014301d60003019b015d000301fc019b01de05fc000301be01c1019b01f5016b013b0143013b Tj" + "0.00 -8.80 Td" + "#hex:01d60166011801d6000301fc019b01de00030118018f013b000301d601660143000301d6011801c1015e014301d6000301340118018f000301c901430143000301430118013401660003019b01d60166014301c10608 Tj" + "0.00 -8.80 Td" + "#hex:00c101660143000301840143018f01c9014301c9000301c10143015e0118016b018f00030118018401840003014301fb01be0143018f013b0143013b000301340166011801c1015e014301c9 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "277.72 53.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "BT" + "/F1 6.20 Tf" + "280.52 68.40 Td" + "#hex:016901d001c4020b01a001c4021301780170000301d001c40003020b019b017800030168014d016901b6 Tj" + "ET" + "1.10 w" + "54.72 263.52 m" + "197.28 263.52 l" + "209.52 251.28 l" + "209.52 36.72 l" + "197.28 24.48 l" + "54.72 24.48 l" + "42.48 36.72 l" + "42.48 251.28 l" + "s" + "0.45 w" + "54.72 260.50 m" + "197.28 260.50 l" + "206.50 251.28 l" + "206.50 36.72 l" + "197.28 27.50 l" + "54.72 27.50 l" + "45.50 36.72 l" + "45.50 251.28 l" + "s" + "1.00 w" + "0.50 w" + "56.16 252.36 m" + "102.96 252.36 l" + "S" + "149.04 252.36 m" + "195.84 252.36 l" + "S" + "0.60 w" + "109.44 255.10 m" + "112.18 252.36 l" + "109.44 249.62 l" + "106.70 252.36 l" + "h" + "f" + "117.72 255.10 m" + "120.46 252.36 l" + "117.72 249.62 l" + "114.98 252.36 l" + "h" + "f" + "126.00 255.10 m" + "128.74 252.36 l" + "126.00 249.62 l" + "123.26 252.36 l" + "h" + "f" + "134.28 255.10 m" + "137.02 252.36 l" + "134.28 249.62 l" + "131.54 252.36 l" + "h" + "S" + "142.56 255.10 m" + "145.30 252.36 l" + "142.56 249.62 l" + "139.82 252.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "72.00 31.32 m" + "119.88 31.32 l" + "S" + "132.12 31.32 m" + "180.00 31.32 l" + "S" + "126.00 33.62 m" + "128.30 31.32 l" + "126.00 29.02 l" + "123.70 31.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "187.20 199.08 m" + "193.32 199.08 l" + "195.84 196.56 l" + "195.84 191.16 l" + "193.32 188.64 l" + "187.20 188.64 l" + "184.68 191.16 l" + "184.68 196.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "187.73 191.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "56.16 236.88 Td" + "0.00 -14.30 Td" + "#hex:002001de013301430003019b015d0003004a019b01c101340143 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "50.40 198.00 Td" + "0.00 -8.25 Td" + "#hex:00e001d001c4017001f601d0021301fe000301a0020b017801c20476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "50.40 182.16 m" + "201.60 182.16 l" + "S" + "0.35 w" + "50.40 179.64 m" + "201.60 179.64 l" + "S" + "1.00 w" + "0.80 w" + "BT" + "/F5 5.50 Tf" + "112.40 169.92 Td" + "\"CHARGES\" Tj" + "ET" + "96.04 158.40 m" + "140.68 158.40 l" + "S" + "BT" + "/F5 7.00 Tf" + "144.28 159.48 Td" + "\"/ 36\" Tj" + "ET" + "1.00 w" + "0.35 w" + "50.40 146.88 m" + "201.60 146.88 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "50.40 141.12 Td" + "0.00 -8.80 Td" + "#hex:00c10166016b01c90003013401de013301430003016b01c9000301180133019b01de01d600030118018f0003016b018f0134016600030118013401c1019b01c901c90608000300310118013401660003015d011801340143 Tj" + "0.00 -8.80 Td" + "#hex:0166011801c9000301180003013b016b01c901d6016b018f013401d60003018d011801c10181016b018f015e0003019b018f0003016b01d6000301d60166011801d6000301340118018f000301330143 Tj" + "0.00 -8.80 Td" + "#hex:01be01c1014301c901c90143013b0608000300c1016601430003013401de01330143000301c901d6011801c101d601c9000301f6016b01d601660003056c056f000301340166011801c1015e014301c905fc Tj" + "0.00 -8.80 Td" + "#hex:0118018f013b0003016b01d6000301c10143015e0118016b018f01c90003056a013b056b05690003014301fb01be0143018f013b0143013b000301340166011801c1015e014301c90003013b0118016b018401fc Tj" + "0.00 -8.80 Td" + "#hex:011801d60003013b011801f6018f0608000300e6019b01de000301340118018f000301de01c9014300030118018f00030118013401d6016b019b018f000301d6019b000301be01c1014301c901c90003019b018f0143 Tj" + "0.00 -8.80 Td" + "#hex:019b015d000301d6016601430003013401de01330143065a01c90003015d01180134014301c905fc0003014301fb01be0143018f013b016b018f015e000301180003018f01de018d0133014301c10003019b015d Tj" + "0.00 -8.80 Td" + "#hex:01340166011801c1015e014301c900030133011801c90143013b0003019b018f000301d601660143000301340166019b01c90143018f0003015d01180134014305fc0003011801c9000301c90166019b01f6018f Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "97.72 53.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "BT" + "/F1 6.20 Tf" + "100.52 68.40 Td" + "#hex:016901d001c4020b01a001c4021301780170000301d001c40003020b019b017800030168014d016901b6 Tj" + "ET"] + ["0.88 0.88 0.88 RG" + "36.00 18.00 m" + "36.00 774.00 l" + "S" + "216.00 18.00 m" + "216.00 774.00 l" + "S" + "396.00 18.00 m" + "396.00 774.00 l" + "S" + "576.00 18.00 m" + "576.00 774.00 l" + "S" + "36.00 18.00 m" + "576.00 18.00 l" + "S" + "36.00 270.00 m" + "576.00 270.00 l" + "S" + "36.00 522.00 m" + "576.00 522.00 l" + "S" + "36.00 774.00 m" + "576.00 774.00 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 781.20 Td" + "#hex:00a9014d01930178000303fa Tj" + "ET" + "1.10 w" + "414.72 767.52 m" + "557.28 767.52 l" + "569.52 755.28 l" + "569.52 540.72 l" + "557.28 528.48 l" + "414.72 528.48 l" + "402.48 540.72 l" + "402.48 755.28 l" + "s" + "0.45 w" + "414.72 764.50 m" + "557.28 764.50 l" + "566.50 755.28 l" + "566.50 540.72 l" + "557.28 531.50 l" + "414.72 531.50 l" + "405.50 540.72 l" + "405.50 755.28 l" + "s" + "1.00 w" + "0.50 w" + "416.16 756.36 m" + "462.96 756.36 l" + "S" + "509.04 756.36 m" + "555.84 756.36 l" + "S" + "0.60 w" + "469.44 759.10 m" + "472.18 756.36 l" + "469.44 753.62 l" + "466.70 756.36 l" + "h" + "f" + "477.72 759.10 m" + "480.46 756.36 l" + "477.72 753.62 l" + "474.98 756.36 l" + "h" + "f" + "486.00 759.10 m" + "488.74 756.36 l" + "486.00 753.62 l" + "483.26 756.36 l" + "h" + "f" + "494.28 759.10 m" + "497.02 756.36 l" + "494.28 753.62 l" + "491.54 756.36 l" + "h" + "S" + "502.56 759.10 m" + "505.30 756.36 l" + "502.56 753.62 l" + "499.82 756.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "432.00 535.32 m" + "479.88 535.32 l" + "S" + "492.12 535.32 m" + "540.00 535.32 l" + "S" + "486.00 537.62 m" + "488.30 535.32 l" + "486.00 533.02 l" + "483.70 535.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "547.20 703.08 m" + "553.32 703.08 l" + "555.84 700.56 l" + "555.84 695.16 l" + "553.32 692.64 l" + "547.20 692.64 l" + "544.68 695.16 l" + "544.68 700.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "547.73 695.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "416.16 748.08 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc000300a90118013b013b0143013b Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "410.40 702.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "410.40 686.16 m" + "561.60 686.16 l" + "S" + "0.35 w" + "410.40 683.64 m" + "561.60 683.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "410.40 678.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "457.72 557.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "234.72 767.52 m" + "377.28 767.52 l" + "389.52 755.28 l" + "389.52 540.72 l" + "377.28 528.48 l" + "234.72 528.48 l" + "222.48 540.72 l" + "222.48 755.28 l" + "s" + "0.45 w" + "234.72 764.50 m" + "377.28 764.50 l" + "386.50 755.28 l" + "386.50 540.72 l" + "377.28 531.50 l" + "234.72 531.50 l" + "225.50 540.72 l" + "225.50 755.28 l" + "s" + "1.00 w" + "0.50 w" + "236.16 756.36 m" + "282.96 756.36 l" + "S" + "329.04 756.36 m" + "375.84 756.36 l" + "S" + "0.60 w" + "289.44 759.10 m" + "292.18 756.36 l" + "289.44 753.62 l" + "286.70 756.36 l" + "h" + "f" + "297.72 759.10 m" + "300.46 756.36 l" + "297.72 753.62 l" + "294.98 756.36 l" + "h" + "f" + "306.00 759.10 m" + "308.74 756.36 l" + "306.00 753.62 l" + "303.26 756.36 l" + "h" + "S" + "314.28 759.10 m" + "317.02 756.36 l" + "314.28 753.62 l" + "311.54 756.36 l" + "h" + "S" + "322.56 759.10 m" + "325.30 756.36 l" + "322.56 753.62 l" + "319.82 756.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "252.00 535.32 m" + "299.88 535.32 l" + "S" + "312.12 535.32 m" + "360.00 535.32 l" + "S" + "306.00 537.62 m" + "308.30 535.32 l" + "306.00 533.02 l" + "303.70 535.32 l" + "h" + "S" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "236.16 748.08 Td" + "0.00 -14.30 Td" + "#hex:0004013b0118018d0118018f01d6016b018f01430003000401c1018d019b01c105fc Tj" + "0.00 -14.30 Td" + "#hex:002001660118016b018f000300b40166016b01c101d6 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "230.40 702.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f604760003021301c4016901d001c201c201d001c4 Tj" + "ET" + "0.90 w" + "230.40 686.16 m" + "381.60 686.16 l" + "S" + "0.35 w" + "230.40 683.64 m" + "381.60 683.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "230.40 678.96 Td" + "0.00 -8.80 Td" + "#hex:00c10166016b01c9000301c901de016b01d60003019b015d0003011801c1018d019b01c10003016b01c9000301c10143016b018f015d019b01c101340143013b000301f6016b01d60166 Tj" + "0.00 -8.80 Td" + "#hex:0118013b0118018d0118018f01d6016b018f014305fc0003019b018f01430003019b015d000301d60166014300030166011801c1013b014301c901d6000301c901de013301c901d60118018f0134014301c9 Tj" + "0.00 -8.80 Td" + "#hex:016b018f0003014301fb016b01c901d60143018f013401430608000300e00166016b01840143000301fc019b01de065a01c10143000301f60143011801c1016b018f015e0003016b01d605fc00030118018f01fc Tj" + "0.00 -8.80 Td" + "#hex:013401c1016b01d6016b01340118018400030166016b01d600030118015e0118016b018f01c901d6000301fc019b01de0003013301430134019b018d014301c9000301180003018f019b01c1018d01180184 Tj" + "0.00 -8.80 Td" + "#hex:0166016b01d60608 Tj" + "ET" + "1.10 w" + "54.72 767.52 m" + "197.28 767.52 l" + "209.52 755.28 l" + "209.52 540.72 l" + "197.28 528.48 l" + "54.72 528.48 l" + "42.48 540.72 l" + "42.48 755.28 l" + "s" + "1.00 w" + "0.50 w" + "56.16 756.36 m" + "102.96 756.36 l" + "S" + "149.04 756.36 m" + "195.84 756.36 l" + "S" + "0.60 w" + "109.44 759.10 m" + "112.18 756.36 l" + "109.44 753.62 l" + "106.70 756.36 l" + "h" + "f" + "117.72 759.10 m" + "120.46 756.36 l" + "117.72 753.62 l" + "114.98 756.36 l" + "h" + "S" + "126.00 759.10 m" + "128.74 756.36 l" + "126.00 753.62 l" + "123.26 756.36 l" + "h" + "S" + "134.28 759.10 m" + "137.02 756.36 l" + "134.28 753.62 l" + "131.54 756.36 l" + "h" + "S" + "142.56 759.10 m" + "145.30 756.36 l" + "142.56 753.62 l" + "139.82 756.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "72.00 535.32 m" + "119.88 535.32 l" + "S" + "132.12 535.32 m" + "180.00 535.32 l" + "S" + "126.00 537.62 m" + "128.30 535.32 l" + "126.00 533.02 l" + "123.70 535.32 l" + "h" + "S" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "56.16 740.88 Td" + "0.00 -14.30 Td" + "#hex:00a9019b01d6016b019b018f0003019b015d000300200184016b018d0133016b018f015e Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "50.40 702.00 Td" + "0.00 -8.25 Td" + "#hex:00a901d0020b01a001d001c404760003016901d001c201c201d001c4 Tj" + "ET" + "0.90 w" + "50.40 686.16 m" + "201.60 686.16 l" + "S" + "0.35 w" + "50.40 683.64 m" + "201.60 683.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "50.40 678.96 Td" + "0.00 -8.80 Td" + "#hex:00e001660143018f000301fc019b01de0003013b01c1016b018f0181000301d60166016b01c9000301be019b01d6016b019b018f05fc000301fc019b01de0003015e0118016b018f00030118 Tj" + "0.00 -8.80 Td" + "#hex:01340184016b018d0133016b018f015e000301c901be01430143013b0003014301c001de01180184000301d6019b000301fc019b01de01c1000301f6011801840181016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:01c901be01430143013b0003015d019b01c10003056a00030166019b01de01c106080003002701de01c1016b018f015e000301d60166016b01c9000301d6016b018d014305fc000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:0166011801f5014300030118013b01f50118018f01d60118015e01430003019b018f000300b401d601c10143018f015e01d6016600030628000401d601660184014301d6016b013401c90629 Tj" + "0.00 -8.80 Td" + "#hex:0134016601430134018101c9000301fc019b01de0003018d011801810143000301d6019b000301340184016b018d01330608000300c101660143000301be019b01d6016b019b018f0003016b01c9 Tj" + "0.00 -8.80 Td" + "#hex:01c9014301be011801c1011801d60143013b0003016b018f01d6019b0003013301c1019b01f6018f05fc000301c9016b018401f5014301c105fc00030118018f013b0003015e01c1011801fc Tj" + "0.00 -8.80 Td" + "#hex:0184011801fc014301c101c9000301c1014301c90143018d01330184016b018f015e000301330118018f013b01c90003019b015d000301c901d6019b018f01430608000300b4016601180181016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:01d60166014300030133019b01d601d6018401430003015d0118016b018401c9000301d6019b0003018d016b01fb000301d60166014300030134019b0184019b01c101c90608 Tj" + "ET" + "1.10 w" + "414.72 515.52 m" + "557.28 515.52 l" + "569.52 503.28 l" + "569.52 288.72 l" + "557.28 276.48 l" + "414.72 276.48 l" + "402.48 288.72 l" + "402.48 503.28 l" + "s" + "1.00 w" + "0.50 w" + "416.16 504.36 m" + "462.96 504.36 l" + "S" + "509.04 504.36 m" + "555.84 504.36 l" + "S" + "0.60 w" + "469.44 507.10 m" + "472.18 504.36 l" + "469.44 501.62 l" + "466.70 504.36 l" + "h" + "S" + "477.72 507.10 m" + "480.46 504.36 l" + "477.72 501.62 l" + "474.98 504.36 l" + "h" + "S" + "486.00 507.10 m" + "488.74 504.36 l" + "486.00 501.62 l" + "483.26 504.36 l" + "h" + "S" + "494.28 507.10 m" + "497.02 504.36 l" + "494.28 501.62 l" + "491.54 504.36 l" + "h" + "S" + "502.56 507.10 m" + "505.30 504.36 l" + "502.56 501.62 l" + "499.82 504.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "432.00 283.32 m" + "479.88 283.32 l" + "S" + "492.12 283.32 m" + "540.00 283.32 l" + "S" + "486.00 285.62 m" + "488.30 283.32 l" + "486.00 281.02 l" + "483.70 283.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "547.20 451.08 m" + "553.32 451.08 l" + "555.84 448.56 l" + "555.84 443.16 l" + "553.32 440.64 l" + "547.20 440.64 l" + "544.68 443.16 l" + "544.68 448.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "547.73 443.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "416.16 488.88 Td" + "0.00 -14.30 Td" + "#hex:001f0143018401d60003019b015d0003002701f6011801c101f50143018f0181016b018f013b Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "410.40 450.00 Td" + "0.00 -8.25 Td" + "#hex:00e001d001c4017001f601d0021301fe000301a0020b017801c20476000301f6014d01f601a0020b02310003022a014d01f601a0017801fe Tj" + "ET" + "0.90 w" + "410.40 434.16 m" + "561.60 434.16 l" + "S" + "0.35 w" + "410.40 431.64 m" + "561.60 431.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "410.40 426.96 Td" + "0.00 -8.80 Td" + "#hex:00e00166016b01840143000301f60143011801c1016b018f015e000301d60166016b01c9000301330143018401d605fc000301fc019b01de0003015e0118016b018f000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:015d019b01840184019b01f6016b018f015e000301330143018f0143025b01d601c905fb000305f8000300e6019b01de01c100030020019b018f01c901d6016b01d601de01d6016b019b018f Tj" + "0.00 -8.80 Td" + "#hex:01c90134019b01c101430003016b018f013401c10143011801c9014301c90003013301fc0003056b05fc000301d6019b000301180003018d011801fb016b018d01de018d0003019b015d0003056b05690608000305f8 Tj" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f5014300030118013b01f50118018f01d60118015e01430003019b018f000300200166011801c1016b01c9018d0118 Tj" + "0.00 -8.80 Td" + "#hex:062800a9014301c101c901de011801c9016b019b018f062900030134016601430134018101c90003018d0118013b0143000301d6019b0003016b018f01d6014301c10118013401d6000301f6016b01d60166 Tj" + "0.00 -8.80 Td" + "#hex:013b01f6011801c101f5014301c9060800030058018f00030118013b013b016b01d6016b019b018f05fc000301f60166016b018401430003011801d601d601de018f0143013b000301d6019b000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01330143018401d605fc000301fc019b01de00030166011801f50143000301180003056e0569000301be014301c101340143018f01d60003013401660118018f01340143000301430118013401660003013b011801fc Tj" + "0.00 -8.80 Td" + "#hex:011801d60003013b011801f6018f0003019b015d0003015e01c1019b01f6016b018f015e000301180003015d01de01840184000301330143011801c1013b0003016b015d000301fc019b01de065a01c10143 Tj" + "0.00 -8.80 Td" + "#hex:0134011801be01180133018401430003019b015d0003015e01c1019b01f6016b018f015e0003019b018f014305fc0003019b01c100030118000301f5016b01c9016b0133018401fc000301d60166016b01340181014301c1 Tj" + "0.00 -8.80 Td" + "#hex:01330143011801c1013b0003016b015d000301fc019b01de00030118018401c101430118013b01fc00030166011801f501430003019b018f0143060800030058015d000301fc019b01de0003011801c10143018f065a01d6 Tj" + "0.00 -8.80 Td" + "#hex:01180003013b01f6011801c1015d05fc000301fc019b01de0003015e0118016b018f000301d6016601430003015d019b01840184019b01f6016b018f015e00030118013b013b016b01d6016b019b018f01180184 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "457.72 305.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "BT" + "/F1 6.20 Tf" + "460.52 320.40 Td" + "#hex:016901d001c4020b01a001c4021301780170000301d001c40003020b019b017800030168014d016901b6 Tj" + "ET" + "1.10 w" + "234.72 515.52 m" + "377.28 515.52 l" + "389.52 503.28 l" + "389.52 288.72 l" + "377.28 276.48 l" + "234.72 276.48 l" + "222.48 288.72 l" + "222.48 503.28 l" + "s" + "0.45 w" + "234.72 512.50 m" + "377.28 512.50 l" + "386.50 503.28 l" + "386.50 288.72 l" + "377.28 279.50 l" + "234.72 279.50 l" + "225.50 288.72 l" + "225.50 503.28 l" + "s" + "0.35 w" + "234.72 510.12 m" + "377.28 510.12 l" + "384.12 503.28 l" + "384.12 288.72 l" + "377.28 281.88 l" + "234.72 281.88 l" + "227.88 288.72 l" + "227.88 503.28 l" + "s" + "1.90 w" + "232.20 518.04 m" + "379.80 518.04 l" + "392.04 505.80 l" + "392.04 286.20 l" + "379.80 273.96 l" + "232.20 273.96 l" + "219.96 286.20 l" + "219.96 505.80 l" + "s" + "1.00 w" + "0.50 w" + "236.16 504.36 m" + "282.96 504.36 l" + "S" + "329.04 504.36 m" + "375.84 504.36 l" + "S" + "0.60 w" + "289.44 507.10 m" + "292.18 504.36 l" + "289.44 501.62 l" + "286.70 504.36 l" + "h" + "f" + "297.72 507.10 m" + "300.46 504.36 l" + "297.72 501.62 l" + "294.98 504.36 l" + "h" + "f" + "306.00 507.10 m" + "308.74 504.36 l" + "306.00 501.62 l" + "303.26 504.36 l" + "h" + "f" + "314.28 507.10 m" + "317.02 504.36 l" + "314.28 501.62 l" + "311.54 504.36 l" + "h" + "f" + "322.56 507.10 m" + "325.30 504.36 l" + "322.56 501.62 l" + "319.82 504.36 l" + "h" + "f" + "1.00 w" + "0.50 w" + "252.00 283.32 m" + "299.88 283.32 l" + "S" + "312.12 283.32 m" + "360.00 283.32 l" + "S" + "306.00 285.62 m" + "308.30 283.32 l" + "306.00 281.02 l" + "303.70 283.32 l" + "h" + "S" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "236.16 488.88 Td" + "0.00 -14.30 Td" + "#hex:000401be01be011801c1011801d601de01c90003019b015d000301d6016601430003002001c101180133 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "230.40 450.00 Td" + "0.00 -8.25 Td" + "#hex:00e001d001c4017001f601d0021301fe000301a0020b017801c20476000301b901780193017801c40170014d01f60231 Tj" + "ET" + "0.90 w" + "230.40 434.16 m" + "381.60 434.16 l" + "S" + "0.35 w" + "230.40 431.64 m" + "381.60 431.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "230.40 426.96 Td" + "0.00 -8.80 Td" + "#hex:00c10166016b01c90003016b01d60143018d0003025b01c101c901d60003011801be01be0143011801c101c9000301d6019b000301330143000301180003006e011801c1015e0143000301c90143011801840143013b Tj" + "0.00 -8.80 Td" + "#hex:016b01c1019b018f00030133011801c101c101430184000301f60143016b015e0166016b018f015e0003056e05690569000301be019b01de018f013b01c90608000300c101660143 Tj" + "0.00 -8.80 Td" + "#hex:0133011801c101c10143018400030166011801c90003011800030166016b013b013b0143018f00030134011801d60134016605fc000301f60166016b01340166000301340118018f000301330143 Tj" + "0.00 -8.80 Td" + "#hex:015d019b01de018f013b000301f6016b01d6016600030118000301c901de01340134014301c901c9015d01de01840003002700200003056b056900030058018f01d6014301840184016b015e0143018f01340143 Tj" + "0.00 -8.80 Td" + "#hex:06280058018f01f5014301c901d6016b015e011801d6016b019b018f06290003013401660143013401810608000300ac014301840143011801c9016b018f015e000301d60166014300030134011801d601340166 Tj" + "0.00 -8.80 Td" + "#hex:01de018f0184019b0134018101c90003011800030166011801d6013401660003011801d60003019b018f014300030143018f013b0003019b015d000301d60166014300030133011801c101c10143018405fc Tj" + "0.00 -8.80 Td" + "#hex:011801840184019b01f6016b018f015e000301d601f6019b000300780143013b016b01de018d0003019b01c1000301c9018d011801840184014301c10003013401c10143011801d601de01c1014301c9 Tj" + "0.00 -8.80 Td" + "#hex:01d6019b0003013401c1011801f601840003016b018f01c9016b013b01430608000300c10143018f00030184014301f5014301c101c90003011801c10143000301c9014301d60003016b018f00030118000301c1019b01f6 Tj" + "0.00 -8.80 Td" + "#hex:011801d6000301d6016601430003015d011801c100030143018f013b05fc000301430118013401660003016b018f000301180003018f014301de01d601c101180184000301be019b01c9016b01d6016b019b018f05fc Tj" + "0.00 -8.80 Td" + "#hex:0118013301840143000301d6019b0003018d019b01f5014300030143016b01d60166014301c1000301de01be0003019b01c10003013b019b01f6018f0608000300e001660143018f Tj" + "0.00 -8.80 Td" + "#hex:0134014301c101d60118016b018f00030184014301f5014301c101c90003011801c10143000301de01c90143013b05fc000301d6016601430003011801be01be011801c1011801d601de01c9 Tj" + "0.00 -8.80 Td" + "#hex:01d601c10118018f01c9015d019b01c1018d01c9000301d6019b000301c1014301c90143018d013301840143000301180003015e016b0118018f01d600030184019b013301c901d6014301c10608000300c101660143 Tj" + "0.00 -8.80 Td" + "#hex:011801be01be011801c1011801d601de01c90003019b015d000301d6016601430003002001c1011801330003016b01c9000301180003006e011801c1015e01430003019b0133017d0143013401d6000301f6016b01d60166 Tj" + "0.00 -8.80 Td" + "#hex:01d6016601430003015d019b01840184019b01f6016b018f015e000301c901d6011801d6016b01c901d6016b013401c905fb0003000401c1018d019b01c1000300200184011801c901c905fb0003056b0569 Tj" + "ET" + "BT" + "/F1 6.20 Tf" + "280.52 291.60 Td" + "#hex:016901d001c4020b01a001c4021301780170000301d001c40003020b019b017800030168014d016901b6 Tj" + "ET" + "1.10 w" + "54.72 515.52 m" + "197.28 515.52 l" + "209.52 503.28 l" + "209.52 288.72 l" + "197.28 276.48 l" + "54.72 276.48 l" + "42.48 288.72 l" + "42.48 503.28 l" + "s" + "0.45 w" + "54.72 512.50 m" + "197.28 512.50 l" + "206.50 503.28 l" + "206.50 288.72 l" + "197.28 279.50 l" + "54.72 279.50 l" + "45.50 288.72 l" + "45.50 503.28 l" + "s" + "0.35 w" + "54.72 510.12 m" + "197.28 510.12 l" + "204.12 503.28 l" + "204.12 288.72 l" + "197.28 281.88 l" + "54.72 281.88 l" + "47.88 288.72 l" + "47.88 503.28 l" + "s" + "1.00 w" + "0.50 w" + "56.16 504.36 m" + "102.96 504.36 l" + "S" + "149.04 504.36 m" + "195.84 504.36 l" + "S" + "0.60 w" + "109.44 507.10 m" + "112.18 504.36 l" + "109.44 501.62 l" + "106.70 504.36 l" + "h" + "f" + "117.72 507.10 m" + "120.46 504.36 l" + "117.72 501.62 l" + "114.98 504.36 l" + "h" + "f" + "126.00 507.10 m" + "128.74 504.36 l" + "126.00 501.62 l" + "123.26 504.36 l" + "h" + "f" + "134.28 507.10 m" + "137.02 504.36 l" + "134.28 501.62 l" + "131.54 504.36 l" + "h" + "f" + "142.56 507.10 m" + "145.30 504.36 l" + "142.56 501.62 l" + "139.82 504.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "72.00 283.32 m" + "119.88 283.32 l" + "S" + "132.12 283.32 m" + "180.00 283.32 l" + "S" + "126.00 285.62 m" + "128.30 283.32 l" + "126.00 281.02 l" + "123.70 283.32 l" + "h" + "S" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "56.16 488.88 Td" + "0.00 -14.30 Td" + "#hex:000401c101c1019b01f6000306af056c Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "50.40 450.00 Td" + "0.00 -8.25 Td" + "#hex:00e00178014d01f301d001c404760003022a017801f60231000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "50.40 434.16 m" + "201.60 434.16 l" + "S" + "0.35 w" + "50.40 431.64 m" + "201.60 431.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "50.40 426.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f5014300030118000306af056c00030133019b018f01de01c9000301d6019b0003011801d601d601180134018100030118018f013b0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01c1019b0184018401c90003018d0118013b0143000301f6016b01d60166000301d60166016b01c9000301be016b0143013401430003019b015d0003018d0118015e016b0134 Tj" + "0.00 -8.80 Td" + "#hex:0118018d018d01de018f016b01d6016b019b018f0608000300c10166014300030133019b018f01de01c90003016b01c90003013b014301d6014301c1018d016b018f0143013b0003013301fc Tj" + "0.00 -8.80 Td" + "#hex:01d601660143000301c1011801c1016b01d601fc0003019b015d000301d60166014300030118018d018d01de018f016b01d6016b019b018f060800030086018f013401430003016b01d600030166016b01d601c900030118 Tj" + "0.00 -8.80 Td" + "#hex:01d6011801c1015e014301d605fc000301d60166014300030118018d018d01de018f016b01d6016b019b018f0003016b01c90003018f019b00030184019b018f015e014301c1 Tj" + "0.00 -8.80 Td" + "#hex:018d0118015e016b0134011801840608 Tj" + "ET" + "1.10 w" + "414.72 263.52 m" + "557.28 263.52 l" + "569.52 251.28 l" + "569.52 36.72 l" + "557.28 24.48 l" + "414.72 24.48 l" + "402.48 36.72 l" + "402.48 251.28 l" + "s" + "0.45 w" + "414.72 260.50 m" + "557.28 260.50 l" + "566.50 251.28 l" + "566.50 36.72 l" + "557.28 27.50 l" + "414.72 27.50 l" + "405.50 36.72 l" + "405.50 251.28 l" + "s" + "0.35 w" + "414.72 258.12 m" + "557.28 258.12 l" + "564.12 251.28 l" + "564.12 36.72 l" + "557.28 29.88 l" + "414.72 29.88 l" + "407.88 36.72 l" + "407.88 251.28 l" + "s" + "1.00 w" + "0.50 w" + "416.16 252.36 m" + "462.96 252.36 l" + "S" + "509.04 252.36 m" + "555.84 252.36 l" + "S" + "0.60 w" + "469.44 255.10 m" + "472.18 252.36 l" + "469.44 249.62 l" + "466.70 252.36 l" + "h" + "f" + "477.72 255.10 m" + "480.46 252.36 l" + "477.72 249.62 l" + "474.98 252.36 l" + "h" + "f" + "486.00 255.10 m" + "488.74 252.36 l" + "486.00 249.62 l" + "483.26 252.36 l" + "h" + "f" + "494.28 255.10 m" + "497.02 252.36 l" + "494.28 249.62 l" + "491.54 252.36 l" + "h" + "f" + "502.56 255.10 m" + "505.30 252.36 l" + "502.56 249.62 l" + "499.82 252.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "432.00 31.32 m" + "479.88 31.32 l" + "S" + "492.12 31.32 m" + "540.00 31.32 l" + "S" + "486.00 33.62 m" + "488.30 31.32 l" + "486.00 29.02 l" + "483.70 31.32 l" + "h" + "S" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 12.00 Tf" + "416.16 246.96 Td" + "0.00 -13.20 Td" + "#hex:00c1019b018d01430003019b015d0003006e01430118013b014301c101c90166016b01be00030118018f013b Tj" + "0.00 -13.20 Td" + "#hex:0058018f025d01de0143018f013401430003062801c101430118013b000301f6016b01d60166 Tj" + "0.00 -13.20 Td" + "#hex:018d019b013b016b025b014301c101c90629 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "410.40 198.00 Td" + "0.00 -8.25 Td" + "#hex:00e001d001c4017001f601d0021301fe000301a0020b017801c204760003022a017801f60231000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "410.40 182.16 m" + "561.60 182.16 l" + "S" + "0.35 w" + "410.40 179.64 m" + "561.60 179.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "410.40 174.96 Td" + "0.00 -8.80 Td" + "#hex:00c10166016b01c900030133019b019b018100030134019b018f01d60118016b018f01c90003015e01de016b013b01430184016b018f014301c90003015d019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:016b018f025d01de0143018f0134016b018f015e00030118018f013b000301340166011801c1018d016b018f015e0003019b01d60166014301c101c905fc00030118018f013b0003016b01d601c9 Tj" + "0.00 -8.80 Td" + "#hex:01f6019b01c1013b01c90003011801c10143000301340166011801c1015e0143013b000301f6016b01d601660003018d0118015e016b0134060800030058015d000301fc019b01de000301c901be0143018f013b Tj" + "0.00 -8.80 Td" + "#hex:056d057100030166019b01de01c101c90003019b01f5014301c100030118000301be014301c1016b019b013b0003019b015d0003056f0003013b011801fc01c90003019b01c10003015d014301f6014301c1 Tj" + "0.00 -8.80 Td" + "#hex:01c901d601de013b01fc016b018f015e000301d60166014300030133019b019b0181065a01c900030134019b018f01d60143018f01d601c900030118018f013b Tj" + "0.00 -8.80 Td" + "#hex:01be01c10118013401d6016b0134016b018f015e0003016b01d601c90003015e01de016b013b01430184016b018f014301c905fc000301fc019b01de01c1000300200166011801c1016b01c9018d0118 Tj" + "0.00 -8.80 Td" + "#hex:01c90134019b01c101430003016b018f013401c10143011801c9014301c90003013301fc0003056b05fc0003011801c90003013b019b014301c9000301fc019b01de01c1 Tj" + "0.00 -8.80 Td" + "#hex:018d011801fb016b018d01de018d0003015d019b01c1000301d60166011801d6000301c90134019b01c101430608000300c1016601430003018d0118018f01de01180184000301d601660143018f Tj" + "0.00 -8.80 Td" + "#hex:0184019b01c9014301c90003016b01d601c90003018d0118015e016b013405fc0003013301de01d6000301c10143015e0118016b018f01c90003016b01d60003016b018f00030118000301340143018f01d601de01c101fc0608 Tj" + "ET" + "1.10 w" + "234.72 263.52 m" + "377.28 263.52 l" + "389.52 251.28 l" + "389.52 36.72 l" + "377.28 24.48 l" + "234.72 24.48 l" + "222.48 36.72 l" + "222.48 251.28 l" + "s" + "0.45 w" + "234.72 260.50 m" + "377.28 260.50 l" + "386.50 251.28 l" + "386.50 36.72 l" + "377.28 27.50 l" + "234.72 27.50 l" + "225.50 36.72 l" + "225.50 251.28 l" + "s" + "1.00 w" + "0.50 w" + "236.16 252.36 m" + "282.96 252.36 l" + "S" + "329.04 252.36 m" + "375.84 252.36 l" + "S" + "0.60 w" + "289.44 255.10 m" + "292.18 252.36 l" + "289.44 249.62 l" + "286.70 252.36 l" + "h" + "f" + "297.72 255.10 m" + "300.46 252.36 l" + "297.72 249.62 l" + "294.98 252.36 l" + "h" + "f" + "306.00 255.10 m" + "308.74 252.36 l" + "306.00 249.62 l" + "303.26 252.36 l" + "h" + "S" + "314.28 255.10 m" + "317.02 252.36 l" + "314.28 249.62 l" + "311.54 252.36 l" + "h" + "S" + "322.56 255.10 m" + "325.30 252.36 l" + "322.56 249.62 l" + "319.82 252.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "252.00 31.32 m" + "299.88 31.32 l" + "S" + "312.12 31.32 m" + "360.00 31.32 l" + "S" + "306.00 33.62 m" + "308.30 31.32 l" + "306.00 29.02 l" + "303.70 31.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "367.20 199.08 m" + "373.32 199.08 l" + "375.84 196.56 l" + "375.84 191.16 l" + "373.32 188.64 l" + "367.20 188.64 l" + "364.68 191.16 l" + "364.68 196.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "367.73 191.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "236.16 236.88 Td" + "0.00 -14.30 Td" + "#hex:003101fc014301c90003019b015d000300200166011801c1018d016b018f015e Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "230.40 198.00 Td" + "0.00 -8.25 Td" + "#hex:00e001d001c4017001f601d0021301fe000301a0020b017801c204760003021301c4016901d001c201c201d001c4 Tj" + "ET" + "0.90 w" + "230.40 182.16 m" + "381.60 182.16 l" + "S" + "0.35 w" + "230.40 179.64 m" + "381.60 179.64 l" + "S" + "1.00 w" + "0.80 w" + "BT" + "/F5 5.50 Tf" + "292.40 169.92 Td" + "\"CHARGES\" Tj" + "ET" + "299.30 158.40 m" + "299.30 160.47 297.63 162.14 295.56 162.14 c" + "293.49 162.14 291.82 160.47 291.82 158.40 c" + "291.82 156.33 293.49 154.66 295.56 154.66 c" + "297.63 154.66 299.30 156.33 299.30 158.40 c" + "s" + "309.74 158.40 m" + "309.74 160.47 308.07 162.14 306.00 162.14 c" + "303.93 162.14 302.26 160.47 302.26 158.40 c" + "302.26 156.33 303.93 154.66 306.00 154.66 c" + "308.07 154.66 309.74 156.33 309.74 158.40 c" + "s" + "320.18 158.40 m" + "320.18 160.47 318.51 162.14 316.44 162.14 c" + "314.37 162.14 312.70 160.47 312.70 158.40 c" + "312.70 156.33 314.37 154.66 316.44 154.66 c" + "318.51 154.66 320.18 156.33 320.18 158.40 c" + "s" + "1.00 w" + "0.35 w" + "230.40 146.88 m" + "381.60 146.88 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "230.40 141.12 Td" + "0.00 -8.80 Td" + "#hex:00c10166014301c901430003013401c101fc01c901d601180184000301840143018f01c9014301c90003025b01d60003019b01f5014301c1000301d6016601430003014301fc014301c90608000300c10166014301fc Tj" + "0.00 -8.80 Td" + "#hex:0166011801f501430003056c000301340166011801c1015e014301c90608000300e00166016b01840143000301f60143011801c1016b018f015e000301d601660143018d05fc000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:01340118018f0003014301fb01be0143018f013b0003056a000301340166011801c1015e01430003011801c900030118018f00030118013401d6016b019b018f000301d6019b00030134011801c901d6000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01340166011801c1018d000301be014301c101c9019b018f000301c901be0143018401840003062801c9011801f501430003002700200003056a056c06290003019b018f00030118 Tj" + "0.00 -8.80 Td" + "#hex:016601de018d0118018f019b016b013b000301f6016b01d60166016b018f0003056c05690003015d0143014301d60003019b015d000301fc019b01de05fc000301be01c1019b01f5016b013b0143013b Tj" + "0.00 -8.80 Td" + "#hex:01d60166011801d6000301fc019b01de00030118018f013b000301d601660143000301d6011801c1015e014301d6000301340118018f000301c901430143000301430118013401660003019b01d60166014301c10608 Tj" + "0.00 -8.80 Td" + "#hex:00c101660143000301840143018f01c9014301c9000301c10143015e0118016b018f00030118018401840003014301fb01be0143018f013b0143013b000301340166011801c1015e014301c9 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "277.72 53.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "BT" + "/F1 6.20 Tf" + "280.52 68.40 Td" + "#hex:016901d001c4020b01a001c4021301780170000301d001c40003020b019b017800030168014d016901b6 Tj" + "ET" + "1.10 w" + "54.72 263.52 m" + "197.28 263.52 l" + "209.52 251.28 l" + "209.52 36.72 l" + "197.28 24.48 l" + "54.72 24.48 l" + "42.48 36.72 l" + "42.48 251.28 l" + "s" + "0.45 w" + "54.72 260.50 m" + "197.28 260.50 l" + "206.50 251.28 l" + "206.50 36.72 l" + "197.28 27.50 l" + "54.72 27.50 l" + "45.50 36.72 l" + "45.50 251.28 l" + "s" + "1.00 w" + "0.50 w" + "56.16 252.36 m" + "102.96 252.36 l" + "S" + "149.04 252.36 m" + "195.84 252.36 l" + "S" + "0.60 w" + "109.44 255.10 m" + "112.18 252.36 l" + "109.44 249.62 l" + "106.70 252.36 l" + "h" + "f" + "117.72 255.10 m" + "120.46 252.36 l" + "117.72 249.62 l" + "114.98 252.36 l" + "h" + "f" + "126.00 255.10 m" + "128.74 252.36 l" + "126.00 249.62 l" + "123.26 252.36 l" + "h" + "f" + "134.28 255.10 m" + "137.02 252.36 l" + "134.28 249.62 l" + "131.54 252.36 l" + "h" + "S" + "142.56 255.10 m" + "145.30 252.36 l" + "142.56 249.62 l" + "139.82 252.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "72.00 31.32 m" + "119.88 31.32 l" + "S" + "132.12 31.32 m" + "180.00 31.32 l" + "S" + "126.00 33.62 m" + "128.30 31.32 l" + "126.00 29.02 l" + "123.70 31.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "187.20 199.08 m" + "193.32 199.08 l" + "195.84 196.56 l" + "195.84 191.16 l" + "193.32 188.64 l" + "187.20 188.64 l" + "184.68 191.16 l" + "184.68 196.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "187.73 191.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "56.16 236.88 Td" + "0.00 -14.30 Td" + "#hex:002001de013301430003019b015d0003004a019b01c101340143 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "50.40 198.00 Td" + "0.00 -8.25 Td" + "#hex:00e001d001c4017001f601d0021301fe000301a0020b017801c20476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "50.40 182.16 m" + "201.60 182.16 l" + "S" + "0.35 w" + "50.40 179.64 m" + "201.60 179.64 l" + "S" + "1.00 w" + "0.80 w" + "BT" + "/F5 5.50 Tf" + "112.40 169.92 Td" + "\"CHARGES\" Tj" + "ET" + "96.04 158.40 m" + "140.68 158.40 l" + "S" + "BT" + "/F5 7.00 Tf" + "144.28 159.48 Td" + "\"/ 36\" Tj" + "ET" + "1.00 w" + "0.35 w" + "50.40 146.88 m" + "201.60 146.88 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "50.40 141.12 Td" + "0.00 -8.80 Td" + "#hex:00c10166016b01c90003013401de013301430003016b01c9000301180133019b01de01d600030118018f0003016b018f0134016600030118013401c1019b01c901c90608000300310118013401660003015d011801340143 Tj" + "0.00 -8.80 Td" + "#hex:0166011801c9000301180003013b016b01c901d6016b018f013401d60003018d011801c10181016b018f015e0003019b018f0003016b01d6000301d60166011801d6000301340118018f000301330143 Tj" + "0.00 -8.80 Td" + "#hex:01be01c1014301c901c90143013b0608000300c1016601430003013401de01330143000301c901d6011801c101d601c9000301f6016b01d601660003056c056f000301340166011801c1015e014301c905fc Tj" + "0.00 -8.80 Td" + "#hex:0118018f013b0003016b01d6000301c10143015e0118016b018f01c90003056a013b056b05690003014301fb01be0143018f013b0143013b000301340166011801c1015e014301c90003013b0118016b018401fc Tj" + "0.00 -8.80 Td" + "#hex:011801d60003013b011801f6018f0608000300e6019b01de000301340118018f000301de01c9014300030118018f00030118013401d6016b019b018f000301d6019b000301be01c1014301c901c90003019b018f0143 Tj" + "0.00 -8.80 Td" + "#hex:019b015d000301d6016601430003013401de01330143065a01c90003015d01180134014301c905fc0003014301fb01be0143018f013b016b018f015e000301180003018f01de018d0133014301c10003019b015d Tj" + "0.00 -8.80 Td" + "#hex:01340166011801c1015e014301c900030133011801c90143013b0003019b018f000301d601660143000301340166019b01c90143018f0003015d01180134014305fc0003011801c9000301c90166019b01f6018f Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "97.72 53.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "BT" + "/F1 6.20 Tf" + "100.52 68.40 Td" + "#hex:016901d001c4020b01a001c4021301780170000301d001c40003020b019b017800030168014d016901b6 Tj" + "ET"] + ["0.88 0.88 0.88 RG" + "36.00 18.00 m" + "36.00 774.00 l" + "S" + "216.00 18.00 m" + "216.00 774.00 l" + "S" + "396.00 18.00 m" + "396.00 774.00 l" + "S" + "576.00 18.00 m" + "576.00 774.00 l" + "S" + "36.00 18.00 m" + "576.00 18.00 l" + "S" + "36.00 270.00 m" + "576.00 270.00 l" + "S" + "36.00 522.00 m" + "576.00 522.00 l" + "S" + "36.00 774.00 m" + "576.00 774.00 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 781.20 Td" + "#hex:00a9014d01930178000303fa Tj" + "ET" + "1.10 w" + "414.72 767.52 m" + "557.28 767.52 l" + "569.52 755.28 l" + "569.52 540.72 l" + "557.28 528.48 l" + "414.72 528.48 l" + "402.48 540.72 l" + "402.48 755.28 l" + "s" + "0.45 w" + "414.72 764.50 m" + "557.28 764.50 l" + "566.50 755.28 l" + "566.50 540.72 l" + "557.28 531.50 l" + "414.72 531.50 l" + "405.50 540.72 l" + "405.50 755.28 l" + "s" + "1.00 w" + "0.50 w" + "416.16 756.36 m" + "462.96 756.36 l" + "S" + "509.04 756.36 m" + "555.84 756.36 l" + "S" + "0.60 w" + "469.44 759.10 m" + "472.18 756.36 l" + "469.44 753.62 l" + "466.70 756.36 l" + "h" + "f" + "477.72 759.10 m" + "480.46 756.36 l" + "477.72 753.62 l" + "474.98 756.36 l" + "h" + "f" + "486.00 759.10 m" + "488.74 756.36 l" + "486.00 753.62 l" + "483.26 756.36 l" + "h" + "f" + "494.28 759.10 m" + "497.02 756.36 l" + "494.28 753.62 l" + "491.54 756.36 l" + "h" + "S" + "502.56 759.10 m" + "505.30 756.36 l" + "502.56 753.62 l" + "499.82 756.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "432.00 535.32 m" + "479.88 535.32 l" + "S" + "492.12 535.32 m" + "540.00 535.32 l" + "S" + "486.00 537.62 m" + "488.30 535.32 l" + "486.00 533.02 l" + "483.70 535.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "547.20 703.08 m" + "553.32 703.08 l" + "555.84 700.56 l" + "555.84 695.16 l" + "553.32 692.64 l" + "547.20 692.64 l" + "544.68 695.16 l" + "544.68 700.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "547.73 695.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "416.16 748.08 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc000300a90118013b013b0143013b Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "410.40 702.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "410.40 686.16 m" + "561.60 686.16 l" + "S" + "0.35 w" + "410.40 683.64 m" + "561.60 683.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "410.40 678.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "457.72 557.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "234.72 767.52 m" + "377.28 767.52 l" + "389.52 755.28 l" + "389.52 540.72 l" + "377.28 528.48 l" + "234.72 528.48 l" + "222.48 540.72 l" + "222.48 755.28 l" + "s" + "0.45 w" + "234.72 764.50 m" + "377.28 764.50 l" + "386.50 755.28 l" + "386.50 540.72 l" + "377.28 531.50 l" + "234.72 531.50 l" + "225.50 540.72 l" + "225.50 755.28 l" + "s" + "1.00 w" + "0.50 w" + "236.16 756.36 m" + "282.96 756.36 l" + "S" + "329.04 756.36 m" + "375.84 756.36 l" + "S" + "0.60 w" + "289.44 759.10 m" + "292.18 756.36 l" + "289.44 753.62 l" + "286.70 756.36 l" + "h" + "f" + "297.72 759.10 m" + "300.46 756.36 l" + "297.72 753.62 l" + "294.98 756.36 l" + "h" + "f" + "306.00 759.10 m" + "308.74 756.36 l" + "306.00 753.62 l" + "303.26 756.36 l" + "h" + "S" + "314.28 759.10 m" + "317.02 756.36 l" + "314.28 753.62 l" + "311.54 756.36 l" + "h" + "S" + "322.56 759.10 m" + "325.30 756.36 l" + "322.56 753.62 l" + "319.82 756.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "252.00 535.32 m" + "299.88 535.32 l" + "S" + "312.12 535.32 m" + "360.00 535.32 l" + "S" + "306.00 537.62 m" + "308.30 535.32 l" + "306.00 533.02 l" + "303.70 535.32 l" + "h" + "S" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "236.16 748.08 Td" + "0.00 -14.30 Td" + "#hex:0004013b0118018d0118018f01d6016b018f01430003000401c1018d019b01c105fc Tj" + "0.00 -14.30 Td" + "#hex:002001660118016b018f000300b40166016b01c101d6 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "230.40 702.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f604760003021301c4016901d001c201c201d001c4 Tj" + "ET" + "0.90 w" + "230.40 686.16 m" + "381.60 686.16 l" + "S" + "0.35 w" + "230.40 683.64 m" + "381.60 683.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "230.40 678.96 Td" + "0.00 -8.80 Td" + "#hex:00c10166016b01c9000301c901de016b01d60003019b015d0003011801c1018d019b01c10003016b01c9000301c10143016b018f015d019b01c101340143013b000301f6016b01d60166 Tj" + "0.00 -8.80 Td" + "#hex:0118013b0118018d0118018f01d6016b018f014305fc0003019b018f01430003019b015d000301d60166014300030166011801c1013b014301c901d6000301c901de013301c901d60118018f0134014301c9 Tj" + "0.00 -8.80 Td" + "#hex:016b018f0003014301fb016b01c901d60143018f013401430608000300e00166016b01840143000301fc019b01de065a01c10143000301f60143011801c1016b018f015e0003016b01d605fc00030118018f01fc Tj" + "0.00 -8.80 Td" + "#hex:013401c1016b01d6016b01340118018400030166016b01d600030118015e0118016b018f01c901d6000301fc019b01de0003013301430134019b018d014301c9000301180003018f019b01c1018d01180184 Tj" + "0.00 -8.80 Td" + "#hex:0166016b01d60608 Tj" + "ET" + "1.10 w" + "54.72 767.52 m" + "197.28 767.52 l" + "209.52 755.28 l" + "209.52 540.72 l" + "197.28 528.48 l" + "54.72 528.48 l" + "42.48 540.72 l" + "42.48 755.28 l" + "s" + "1.00 w" + "0.50 w" + "56.16 756.36 m" + "102.96 756.36 l" + "S" + "149.04 756.36 m" + "195.84 756.36 l" + "S" + "0.60 w" + "109.44 759.10 m" + "112.18 756.36 l" + "109.44 753.62 l" + "106.70 756.36 l" + "h" + "f" + "117.72 759.10 m" + "120.46 756.36 l" + "117.72 753.62 l" + "114.98 756.36 l" + "h" + "S" + "126.00 759.10 m" + "128.74 756.36 l" + "126.00 753.62 l" + "123.26 756.36 l" + "h" + "S" + "134.28 759.10 m" + "137.02 756.36 l" + "134.28 753.62 l" + "131.54 756.36 l" + "h" + "S" + "142.56 759.10 m" + "145.30 756.36 l" + "142.56 753.62 l" + "139.82 756.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "72.00 535.32 m" + "119.88 535.32 l" + "S" + "132.12 535.32 m" + "180.00 535.32 l" + "S" + "126.00 537.62 m" + "128.30 535.32 l" + "126.00 533.02 l" + "123.70 535.32 l" + "h" + "S" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "56.16 740.88 Td" + "0.00 -14.30 Td" + "#hex:00a9019b01d6016b019b018f0003019b015d000300200184016b018d0133016b018f015e Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "50.40 702.00 Td" + "0.00 -8.25 Td" + "#hex:00a901d0020b01a001d001c404760003016901d001c201c201d001c4 Tj" + "ET" + "0.90 w" + "50.40 686.16 m" + "201.60 686.16 l" + "S" + "0.35 w" + "50.40 683.64 m" + "201.60 683.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "50.40 678.96 Td" + "0.00 -8.80 Td" + "#hex:00e001660143018f000301fc019b01de0003013b01c1016b018f0181000301d60166016b01c9000301be019b01d6016b019b018f05fc000301fc019b01de0003015e0118016b018f00030118 Tj" + "0.00 -8.80 Td" + "#hex:01340184016b018d0133016b018f015e000301c901be01430143013b0003014301c001de01180184000301d6019b000301fc019b01de01c1000301f6011801840181016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:01c901be01430143013b0003015d019b01c10003056a00030166019b01de01c106080003002701de01c1016b018f015e000301d60166016b01c9000301d6016b018d014305fc000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:0166011801f5014300030118013b01f50118018f01d60118015e01430003019b018f000300b401d601c10143018f015e01d6016600030628000401d601660184014301d6016b013401c90629 Tj" + "0.00 -8.80 Td" + "#hex:0134016601430134018101c9000301fc019b01de0003018d011801810143000301d6019b000301340184016b018d01330608000300c101660143000301be019b01d6016b019b018f0003016b01c9 Tj" + "0.00 -8.80 Td" + "#hex:01c9014301be011801c1011801d60143013b0003016b018f01d6019b0003013301c1019b01f6018f05fc000301c9016b018401f5014301c105fc00030118018f013b0003015e01c1011801fc Tj" + "0.00 -8.80 Td" + "#hex:0184011801fc014301c101c9000301c1014301c90143018d01330184016b018f015e000301330118018f013b01c90003019b015d000301c901d6019b018f01430608000300b4016601180181016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:01d60166014300030133019b01d601d6018401430003015d0118016b018401c9000301d6019b0003018d016b01fb000301d60166014300030134019b0184019b01c101c90608 Tj" + "ET" + "1.10 w" + "414.72 515.52 m" + "557.28 515.52 l" + "569.52 503.28 l" + "569.52 288.72 l" + "557.28 276.48 l" + "414.72 276.48 l" + "402.48 288.72 l" + "402.48 503.28 l" + "s" + "1.00 w" + "0.50 w" + "416.16 504.36 m" + "462.96 504.36 l" + "S" + "509.04 504.36 m" + "555.84 504.36 l" + "S" + "0.60 w" + "469.44 507.10 m" + "472.18 504.36 l" + "469.44 501.62 l" + "466.70 504.36 l" + "h" + "S" + "477.72 507.10 m" + "480.46 504.36 l" + "477.72 501.62 l" + "474.98 504.36 l" + "h" + "S" + "486.00 507.10 m" + "488.74 504.36 l" + "486.00 501.62 l" + "483.26 504.36 l" + "h" + "S" + "494.28 507.10 m" + "497.02 504.36 l" + "494.28 501.62 l" + "491.54 504.36 l" + "h" + "S" + "502.56 507.10 m" + "505.30 504.36 l" + "502.56 501.62 l" + "499.82 504.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "432.00 283.32 m" + "479.88 283.32 l" + "S" + "492.12 283.32 m" + "540.00 283.32 l" + "S" + "486.00 285.62 m" + "488.30 283.32 l" + "486.00 281.02 l" + "483.70 283.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "547.20 451.08 m" + "553.32 451.08 l" + "555.84 448.56 l" + "555.84 443.16 l" + "553.32 440.64 l" + "547.20 440.64 l" + "544.68 443.16 l" + "544.68 448.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "547.73 443.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "416.16 488.88 Td" + "0.00 -14.30 Td" + "#hex:001f0143018401d60003019b015d0003002701f6011801c101f50143018f0181016b018f013b Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "410.40 450.00 Td" + "0.00 -8.25 Td" + "#hex:00e001d001c4017001f601d0021301fe000301a0020b017801c20476000301f6014d01f601a0020b02310003022a014d01f601a0017801fe Tj" + "ET" + "0.90 w" + "410.40 434.16 m" + "561.60 434.16 l" + "S" + "0.35 w" + "410.40 431.64 m" + "561.60 431.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "410.40 426.96 Td" + "0.00 -8.80 Td" + "#hex:00e00166016b01840143000301f60143011801c1016b018f015e000301d60166016b01c9000301330143018401d605fc000301fc019b01de0003015e0118016b018f000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:015d019b01840184019b01f6016b018f015e000301330143018f0143025b01d601c905fb000305f8000300e6019b01de01c100030020019b018f01c901d6016b01d601de01d6016b019b018f Tj" + "0.00 -8.80 Td" + "#hex:01c90134019b01c101430003016b018f013401c10143011801c9014301c90003013301fc0003056b05fc000301d6019b000301180003018d011801fb016b018d01de018d0003019b015d0003056b05690608000305f8 Tj" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f5014300030118013b01f50118018f01d60118015e01430003019b018f000300200166011801c1016b01c9018d0118 Tj" + "0.00 -8.80 Td" + "#hex:062800a9014301c101c901de011801c9016b019b018f062900030134016601430134018101c90003018d0118013b0143000301d6019b0003016b018f01d6014301c10118013401d6000301f6016b01d60166 Tj" + "0.00 -8.80 Td" + "#hex:013b01f6011801c101f5014301c9060800030058018f00030118013b013b016b01d6016b019b018f05fc000301f60166016b018401430003011801d601d601de018f0143013b000301d6019b000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01330143018401d605fc000301fc019b01de00030166011801f50143000301180003056e0569000301be014301c101340143018f01d60003013401660118018f01340143000301430118013401660003013b011801fc Tj" + "0.00 -8.80 Td" + "#hex:011801d60003013b011801f6018f0003019b015d0003015e01c1019b01f6016b018f015e000301180003015d01de01840184000301330143011801c1013b0003016b015d000301fc019b01de065a01c10143 Tj" + "0.00 -8.80 Td" + "#hex:0134011801be01180133018401430003019b015d0003015e01c1019b01f6016b018f015e0003019b018f014305fc0003019b01c100030118000301f5016b01c9016b0133018401fc000301d60166016b01340181014301c1 Tj" + "0.00 -8.80 Td" + "#hex:01330143011801c1013b0003016b015d000301fc019b01de00030118018401c101430118013b01fc00030166011801f501430003019b018f0143060800030058015d000301fc019b01de0003011801c10143018f065a01d6 Tj" + "0.00 -8.80 Td" + "#hex:01180003013b01f6011801c1015d05fc000301fc019b01de0003015e0118016b018f000301d6016601430003015d019b01840184019b01f6016b018f015e00030118013b013b016b01d6016b019b018f01180184 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "457.72 305.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "BT" + "/F1 6.20 Tf" + "460.52 320.40 Td" + "#hex:016901d001c4020b01a001c4021301780170000301d001c40003020b019b017800030168014d016901b6 Tj" + "ET" + "1.10 w" + "234.72 515.52 m" + "377.28 515.52 l" + "389.52 503.28 l" + "389.52 288.72 l" + "377.28 276.48 l" + "234.72 276.48 l" + "222.48 288.72 l" + "222.48 503.28 l" + "s" + "0.45 w" + "234.72 512.50 m" + "377.28 512.50 l" + "386.50 503.28 l" + "386.50 288.72 l" + "377.28 279.50 l" + "234.72 279.50 l" + "225.50 288.72 l" + "225.50 503.28 l" + "s" + "0.35 w" + "234.72 510.12 m" + "377.28 510.12 l" + "384.12 503.28 l" + "384.12 288.72 l" + "377.28 281.88 l" + "234.72 281.88 l" + "227.88 288.72 l" + "227.88 503.28 l" + "s" + "1.90 w" + "232.20 518.04 m" + "379.80 518.04 l" + "392.04 505.80 l" + "392.04 286.20 l" + "379.80 273.96 l" + "232.20 273.96 l" + "219.96 286.20 l" + "219.96 505.80 l" + "s" + "1.00 w" + "0.50 w" + "236.16 504.36 m" + "282.96 504.36 l" + "S" + "329.04 504.36 m" + "375.84 504.36 l" + "S" + "0.60 w" + "289.44 507.10 m" + "292.18 504.36 l" + "289.44 501.62 l" + "286.70 504.36 l" + "h" + "f" + "297.72 507.10 m" + "300.46 504.36 l" + "297.72 501.62 l" + "294.98 504.36 l" + "h" + "f" + "306.00 507.10 m" + "308.74 504.36 l" + "306.00 501.62 l" + "303.26 504.36 l" + "h" + "f" + "314.28 507.10 m" + "317.02 504.36 l" + "314.28 501.62 l" + "311.54 504.36 l" + "h" + "f" + "322.56 507.10 m" + "325.30 504.36 l" + "322.56 501.62 l" + "319.82 504.36 l" + "h" + "f" + "1.00 w" + "0.50 w" + "252.00 283.32 m" + "299.88 283.32 l" + "S" + "312.12 283.32 m" + "360.00 283.32 l" + "S" + "306.00 285.62 m" + "308.30 283.32 l" + "306.00 281.02 l" + "303.70 283.32 l" + "h" + "S" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "236.16 488.88 Td" + "0.00 -14.30 Td" + "#hex:000401be01be011801c1011801d601de01c90003019b015d000301d6016601430003002001c101180133 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "230.40 450.00 Td" + "0.00 -8.25 Td" + "#hex:00e001d001c4017001f601d0021301fe000301a0020b017801c20476000301b901780193017801c40170014d01f60231 Tj" + "ET" + "0.90 w" + "230.40 434.16 m" + "381.60 434.16 l" + "S" + "0.35 w" + "230.40 431.64 m" + "381.60 431.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "230.40 426.96 Td" + "0.00 -8.80 Td" + "#hex:00c10166016b01c90003016b01d60143018d0003025b01c101c901d60003011801be01be0143011801c101c9000301d6019b000301330143000301180003006e011801c1015e0143000301c90143011801840143013b Tj" + "0.00 -8.80 Td" + "#hex:016b01c1019b018f00030133011801c101c101430184000301f60143016b015e0166016b018f015e0003056e05690569000301be019b01de018f013b01c90608000300c101660143 Tj" + "0.00 -8.80 Td" + "#hex:0133011801c101c10143018400030166011801c90003011800030166016b013b013b0143018f00030134011801d60134016605fc000301f60166016b01340166000301340118018f000301330143 Tj" + "0.00 -8.80 Td" + "#hex:015d019b01de018f013b000301f6016b01d6016600030118000301c901de01340134014301c901c9015d01de01840003002700200003056b056900030058018f01d6014301840184016b015e0143018f01340143 Tj" + "0.00 -8.80 Td" + "#hex:06280058018f01f5014301c901d6016b015e011801d6016b019b018f06290003013401660143013401810608000300ac014301840143011801c9016b018f015e000301d60166014300030134011801d601340166 Tj" + "0.00 -8.80 Td" + "#hex:01de018f0184019b0134018101c90003011800030166011801d6013401660003011801d60003019b018f014300030143018f013b0003019b015d000301d60166014300030133011801c101c10143018405fc Tj" + "0.00 -8.80 Td" + "#hex:011801840184019b01f6016b018f015e000301d601f6019b000300780143013b016b01de018d0003019b01c1000301c9018d011801840184014301c10003013401c10143011801d601de01c1014301c9 Tj" + "0.00 -8.80 Td" + "#hex:01d6019b0003013401c1011801f601840003016b018f01c9016b013b01430608000300c10143018f00030184014301f5014301c101c90003011801c10143000301c9014301d60003016b018f00030118000301c1019b01f6 Tj" + "0.00 -8.80 Td" + "#hex:011801d6000301d6016601430003015d011801c100030143018f013b05fc000301430118013401660003016b018f000301180003018f014301de01d601c101180184000301be019b01c9016b01d6016b019b018f05fc Tj" + "0.00 -8.80 Td" + "#hex:0118013301840143000301d6019b0003018d019b01f5014300030143016b01d60166014301c1000301de01be0003019b01c10003013b019b01f6018f0608000300e001660143018f Tj" + "0.00 -8.80 Td" + "#hex:0134014301c101d60118016b018f00030184014301f5014301c101c90003011801c10143000301de01c90143013b05fc000301d6016601430003011801be01be011801c1011801d601de01c9 Tj" + "0.00 -8.80 Td" + "#hex:01d601c10118018f01c9015d019b01c1018d01c9000301d6019b000301c1014301c90143018d013301840143000301180003015e016b0118018f01d600030184019b013301c901d6014301c10608000300c101660143 Tj" + "0.00 -8.80 Td" + "#hex:011801be01be011801c1011801d601de01c90003019b015d000301d6016601430003002001c1011801330003016b01c9000301180003006e011801c1015e01430003019b0133017d0143013401d6000301f6016b01d60166 Tj" + "0.00 -8.80 Td" + "#hex:01d6016601430003015d019b01840184019b01f6016b018f015e000301c901d6011801d6016b01c901d6016b013401c905fb0003000401c1018d019b01c1000300200184011801c901c905fb0003056b0569 Tj" + "ET" + "BT" + "/F1 6.20 Tf" + "280.52 291.60 Td" + "#hex:016901d001c4020b01a001c4021301780170000301d001c40003020b019b017800030168014d016901b6 Tj" + "ET" + "1.10 w" + "54.72 515.52 m" + "197.28 515.52 l" + "209.52 503.28 l" + "209.52 288.72 l" + "197.28 276.48 l" + "54.72 276.48 l" + "42.48 288.72 l" + "42.48 503.28 l" + "s" + "0.45 w" + "54.72 512.50 m" + "197.28 512.50 l" + "206.50 503.28 l" + "206.50 288.72 l" + "197.28 279.50 l" + "54.72 279.50 l" + "45.50 288.72 l" + "45.50 503.28 l" + "s" + "0.35 w" + "54.72 510.12 m" + "197.28 510.12 l" + "204.12 503.28 l" + "204.12 288.72 l" + "197.28 281.88 l" + "54.72 281.88 l" + "47.88 288.72 l" + "47.88 503.28 l" + "s" + "1.00 w" + "0.50 w" + "56.16 504.36 m" + "102.96 504.36 l" + "S" + "149.04 504.36 m" + "195.84 504.36 l" + "S" + "0.60 w" + "109.44 507.10 m" + "112.18 504.36 l" + "109.44 501.62 l" + "106.70 504.36 l" + "h" + "f" + "117.72 507.10 m" + "120.46 504.36 l" + "117.72 501.62 l" + "114.98 504.36 l" + "h" + "f" + "126.00 507.10 m" + "128.74 504.36 l" + "126.00 501.62 l" + "123.26 504.36 l" + "h" + "f" + "134.28 507.10 m" + "137.02 504.36 l" + "134.28 501.62 l" + "131.54 504.36 l" + "h" + "f" + "142.56 507.10 m" + "145.30 504.36 l" + "142.56 501.62 l" + "139.82 504.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "72.00 283.32 m" + "119.88 283.32 l" + "S" + "132.12 283.32 m" + "180.00 283.32 l" + "S" + "126.00 285.62 m" + "128.30 283.32 l" + "126.00 281.02 l" + "123.70 283.32 l" + "h" + "S" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "56.16 488.88 Td" + "0.00 -14.30 Td" + "#hex:000401c101c1019b01f6000306af056c Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "50.40 450.00 Td" + "0.00 -8.25 Td" + "#hex:00e00178014d01f301d001c404760003022a017801f60231000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "50.40 434.16 m" + "201.60 434.16 l" + "S" + "0.35 w" + "50.40 431.64 m" + "201.60 431.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "50.40 426.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f5014300030118000306af056c00030133019b018f01de01c9000301d6019b0003011801d601d601180134018100030118018f013b0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01c1019b0184018401c90003018d0118013b0143000301f6016b01d60166000301d60166016b01c9000301be016b0143013401430003019b015d0003018d0118015e016b0134 Tj" + "0.00 -8.80 Td" + "#hex:0118018d018d01de018f016b01d6016b019b018f0608000300c10166014300030133019b018f01de01c90003016b01c90003013b014301d6014301c1018d016b018f0143013b0003013301fc Tj" + "0.00 -8.80 Td" + "#hex:01d601660143000301c1011801c1016b01d601fc0003019b015d000301d60166014300030118018d018d01de018f016b01d6016b019b018f060800030086018f013401430003016b01d600030166016b01d601c900030118 Tj" + "0.00 -8.80 Td" + "#hex:01d6011801c1015e014301d605fc000301d60166014300030118018d018d01de018f016b01d6016b019b018f0003016b01c90003018f019b00030184019b018f015e014301c1 Tj" + "0.00 -8.80 Td" + "#hex:018d0118015e016b0134011801840608 Tj" + "ET" + "1.10 w" + "414.72 263.52 m" + "557.28 263.52 l" + "569.52 251.28 l" + "569.52 36.72 l" + "557.28 24.48 l" + "414.72 24.48 l" + "402.48 36.72 l" + "402.48 251.28 l" + "s" + "0.45 w" + "414.72 260.50 m" + "557.28 260.50 l" + "566.50 251.28 l" + "566.50 36.72 l" + "557.28 27.50 l" + "414.72 27.50 l" + "405.50 36.72 l" + "405.50 251.28 l" + "s" + "0.35 w" + "414.72 258.12 m" + "557.28 258.12 l" + "564.12 251.28 l" + "564.12 36.72 l" + "557.28 29.88 l" + "414.72 29.88 l" + "407.88 36.72 l" + "407.88 251.28 l" + "s" + "1.00 w" + "0.50 w" + "416.16 252.36 m" + "462.96 252.36 l" + "S" + "509.04 252.36 m" + "555.84 252.36 l" + "S" + "0.60 w" + "469.44 255.10 m" + "472.18 252.36 l" + "469.44 249.62 l" + "466.70 252.36 l" + "h" + "f" + "477.72 255.10 m" + "480.46 252.36 l" + "477.72 249.62 l" + "474.98 252.36 l" + "h" + "f" + "486.00 255.10 m" + "488.74 252.36 l" + "486.00 249.62 l" + "483.26 252.36 l" + "h" + "f" + "494.28 255.10 m" + "497.02 252.36 l" + "494.28 249.62 l" + "491.54 252.36 l" + "h" + "f" + "502.56 255.10 m" + "505.30 252.36 l" + "502.56 249.62 l" + "499.82 252.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "432.00 31.32 m" + "479.88 31.32 l" + "S" + "492.12 31.32 m" + "540.00 31.32 l" + "S" + "486.00 33.62 m" + "488.30 31.32 l" + "486.00 29.02 l" + "483.70 31.32 l" + "h" + "S" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 12.00 Tf" + "416.16 246.96 Td" + "0.00 -13.20 Td" + "#hex:00c1019b018d01430003019b015d0003006e01430118013b014301c101c90166016b01be00030118018f013b Tj" + "0.00 -13.20 Td" + "#hex:0058018f025d01de0143018f013401430003062801c101430118013b000301f6016b01d60166 Tj" + "0.00 -13.20 Td" + "#hex:018d019b013b016b025b014301c101c90629 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "410.40 198.00 Td" + "0.00 -8.25 Td" + "#hex:00e001d001c4017001f601d0021301fe000301a0020b017801c204760003022a017801f60231000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "410.40 182.16 m" + "561.60 182.16 l" + "S" + "0.35 w" + "410.40 179.64 m" + "561.60 179.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "410.40 174.96 Td" + "0.00 -8.80 Td" + "#hex:00c10166016b01c900030133019b019b018100030134019b018f01d60118016b018f01c90003015e01de016b013b01430184016b018f014301c90003015d019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:016b018f025d01de0143018f0134016b018f015e00030118018f013b000301340166011801c1018d016b018f015e0003019b01d60166014301c101c905fc00030118018f013b0003016b01d601c9 Tj" + "0.00 -8.80 Td" + "#hex:01f6019b01c1013b01c90003011801c10143000301340166011801c1015e0143013b000301f6016b01d601660003018d0118015e016b0134060800030058015d000301fc019b01de000301c901be0143018f013b Tj" + "0.00 -8.80 Td" + "#hex:056d057100030166019b01de01c101c90003019b01f5014301c100030118000301be014301c1016b019b013b0003019b015d0003056f0003013b011801fc01c90003019b01c10003015d014301f6014301c1 Tj" + "0.00 -8.80 Td" + "#hex:01c901d601de013b01fc016b018f015e000301d60166014300030133019b019b0181065a01c900030134019b018f01d60143018f01d601c900030118018f013b Tj" + "0.00 -8.80 Td" + "#hex:01be01c10118013401d6016b0134016b018f015e0003016b01d601c90003015e01de016b013b01430184016b018f014301c905fc000301fc019b01de01c1000300200166011801c1016b01c9018d0118 Tj" + "0.00 -8.80 Td" + "#hex:01c90134019b01c101430003016b018f013401c10143011801c9014301c90003013301fc0003056b05fc0003011801c90003013b019b014301c9000301fc019b01de01c1 Tj" + "0.00 -8.80 Td" + "#hex:018d011801fb016b018d01de018d0003015d019b01c1000301d60166011801d6000301c90134019b01c101430608000300c1016601430003018d0118018f01de01180184000301d601660143018f Tj" + "0.00 -8.80 Td" + "#hex:0184019b01c9014301c90003016b01d601c90003018d0118015e016b013405fc0003013301de01d6000301c10143015e0118016b018f01c90003016b01d60003016b018f00030118000301340143018f01d601de01c101fc0608 Tj" + "ET" + "1.10 w" + "234.72 263.52 m" + "377.28 263.52 l" + "389.52 251.28 l" + "389.52 36.72 l" + "377.28 24.48 l" + "234.72 24.48 l" + "222.48 36.72 l" + "222.48 251.28 l" + "s" + "0.45 w" + "234.72 260.50 m" + "377.28 260.50 l" + "386.50 251.28 l" + "386.50 36.72 l" + "377.28 27.50 l" + "234.72 27.50 l" + "225.50 36.72 l" + "225.50 251.28 l" + "s" + "1.00 w" + "0.50 w" + "236.16 252.36 m" + "282.96 252.36 l" + "S" + "329.04 252.36 m" + "375.84 252.36 l" + "S" + "0.60 w" + "289.44 255.10 m" + "292.18 252.36 l" + "289.44 249.62 l" + "286.70 252.36 l" + "h" + "f" + "297.72 255.10 m" + "300.46 252.36 l" + "297.72 249.62 l" + "294.98 252.36 l" + "h" + "f" + "306.00 255.10 m" + "308.74 252.36 l" + "306.00 249.62 l" + "303.26 252.36 l" + "h" + "S" + "314.28 255.10 m" + "317.02 252.36 l" + "314.28 249.62 l" + "311.54 252.36 l" + "h" + "S" + "322.56 255.10 m" + "325.30 252.36 l" + "322.56 249.62 l" + "319.82 252.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "252.00 31.32 m" + "299.88 31.32 l" + "S" + "312.12 31.32 m" + "360.00 31.32 l" + "S" + "306.00 33.62 m" + "308.30 31.32 l" + "306.00 29.02 l" + "303.70 31.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "367.20 199.08 m" + "373.32 199.08 l" + "375.84 196.56 l" + "375.84 191.16 l" + "373.32 188.64 l" + "367.20 188.64 l" + "364.68 191.16 l" + "364.68 196.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "367.73 191.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "236.16 236.88 Td" + "0.00 -14.30 Td" + "#hex:003101fc014301c90003019b015d000300200166011801c1018d016b018f015e Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "230.40 198.00 Td" + "0.00 -8.25 Td" + "#hex:00e001d001c4017001f601d0021301fe000301a0020b017801c204760003021301c4016901d001c201c201d001c4 Tj" + "ET" + "0.90 w" + "230.40 182.16 m" + "381.60 182.16 l" + "S" + "0.35 w" + "230.40 179.64 m" + "381.60 179.64 l" + "S" + "1.00 w" + "0.80 w" + "BT" + "/F5 5.50 Tf" + "292.40 169.92 Td" + "\"CHARGES\" Tj" + "ET" + "299.30 158.40 m" + "299.30 160.47 297.63 162.14 295.56 162.14 c" + "293.49 162.14 291.82 160.47 291.82 158.40 c" + "291.82 156.33 293.49 154.66 295.56 154.66 c" + "297.63 154.66 299.30 156.33 299.30 158.40 c" + "s" + "309.74 158.40 m" + "309.74 160.47 308.07 162.14 306.00 162.14 c" + "303.93 162.14 302.26 160.47 302.26 158.40 c" + "302.26 156.33 303.93 154.66 306.00 154.66 c" + "308.07 154.66 309.74 156.33 309.74 158.40 c" + "s" + "320.18 158.40 m" + "320.18 160.47 318.51 162.14 316.44 162.14 c" + "314.37 162.14 312.70 160.47 312.70 158.40 c" + "312.70 156.33 314.37 154.66 316.44 154.66 c" + "318.51 154.66 320.18 156.33 320.18 158.40 c" + "s" + "1.00 w" + "0.35 w" + "230.40 146.88 m" + "381.60 146.88 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "230.40 141.12 Td" + "0.00 -8.80 Td" + "#hex:00c10166014301c901430003013401c101fc01c901d601180184000301840143018f01c9014301c90003025b01d60003019b01f5014301c1000301d6016601430003014301fc014301c90608000300c10166014301fc Tj" + "0.00 -8.80 Td" + "#hex:0166011801f501430003056c000301340166011801c1015e014301c90608000300e00166016b01840143000301f60143011801c1016b018f015e000301d601660143018d05fc000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:01340118018f0003014301fb01be0143018f013b0003056a000301340166011801c1015e01430003011801c900030118018f00030118013401d6016b019b018f000301d6019b00030134011801c901d6000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01340166011801c1018d000301be014301c101c9019b018f000301c901be0143018401840003062801c9011801f501430003002700200003056a056c06290003019b018f00030118 Tj" + "0.00 -8.80 Td" + "#hex:016601de018d0118018f019b016b013b000301f6016b01d60166016b018f0003056c05690003015d0143014301d60003019b015d000301fc019b01de05fc000301be01c1019b01f5016b013b0143013b Tj" + "0.00 -8.80 Td" + "#hex:01d60166011801d6000301fc019b01de00030118018f013b000301d601660143000301d6011801c1015e014301d6000301340118018f000301c901430143000301430118013401660003019b01d60166014301c10608 Tj" + "0.00 -8.80 Td" + "#hex:00c101660143000301840143018f01c9014301c9000301c10143015e0118016b018f00030118018401840003014301fb01be0143018f013b0143013b000301340166011801c1015e014301c9 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "277.72 53.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "BT" + "/F1 6.20 Tf" + "280.52 68.40 Td" + "#hex:016901d001c4020b01a001c4021301780170000301d001c40003020b019b017800030168014d016901b6 Tj" + "ET" + "1.10 w" + "54.72 263.52 m" + "197.28 263.52 l" + "209.52 251.28 l" + "209.52 36.72 l" + "197.28 24.48 l" + "54.72 24.48 l" + "42.48 36.72 l" + "42.48 251.28 l" + "s" + "0.45 w" + "54.72 260.50 m" + "197.28 260.50 l" + "206.50 251.28 l" + "206.50 36.72 l" + "197.28 27.50 l" + "54.72 27.50 l" + "45.50 36.72 l" + "45.50 251.28 l" + "s" + "1.00 w" + "0.50 w" + "56.16 252.36 m" + "102.96 252.36 l" + "S" + "149.04 252.36 m" + "195.84 252.36 l" + "S" + "0.60 w" + "109.44 255.10 m" + "112.18 252.36 l" + "109.44 249.62 l" + "106.70 252.36 l" + "h" + "f" + "117.72 255.10 m" + "120.46 252.36 l" + "117.72 249.62 l" + "114.98 252.36 l" + "h" + "f" + "126.00 255.10 m" + "128.74 252.36 l" + "126.00 249.62 l" + "123.26 252.36 l" + "h" + "f" + "134.28 255.10 m" + "137.02 252.36 l" + "134.28 249.62 l" + "131.54 252.36 l" + "h" + "S" + "142.56 255.10 m" + "145.30 252.36 l" + "142.56 249.62 l" + "139.82 252.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "72.00 31.32 m" + "119.88 31.32 l" + "S" + "132.12 31.32 m" + "180.00 31.32 l" + "S" + "126.00 33.62 m" + "128.30 31.32 l" + "126.00 29.02 l" + "123.70 31.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "187.20 199.08 m" + "193.32 199.08 l" + "195.84 196.56 l" + "195.84 191.16 l" + "193.32 188.64 l" + "187.20 188.64 l" + "184.68 191.16 l" + "184.68 196.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "187.73 191.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "56.16 236.88 Td" + "0.00 -14.30 Td" + "#hex:002001de013301430003019b015d0003004a019b01c101340143 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "50.40 198.00 Td" + "0.00 -8.25 Td" + "#hex:00e001d001c4017001f601d0021301fe000301a0020b017801c20476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "50.40 182.16 m" + "201.60 182.16 l" + "S" + "0.35 w" + "50.40 179.64 m" + "201.60 179.64 l" + "S" + "1.00 w" + "0.80 w" + "BT" + "/F5 5.50 Tf" + "112.40 169.92 Td" + "\"CHARGES\" Tj" + "ET" + "96.04 158.40 m" + "140.68 158.40 l" + "S" + "BT" + "/F5 7.00 Tf" + "144.28 159.48 Td" + "\"/ 36\" Tj" + "ET" + "1.00 w" + "0.35 w" + "50.40 146.88 m" + "201.60 146.88 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "50.40 141.12 Td" + "0.00 -8.80 Td" + "#hex:00c10166016b01c90003013401de013301430003016b01c9000301180133019b01de01d600030118018f0003016b018f0134016600030118013401c1019b01c901c90608000300310118013401660003015d011801340143 Tj" + "0.00 -8.80 Td" + "#hex:0166011801c9000301180003013b016b01c901d6016b018f013401d60003018d011801c10181016b018f015e0003019b018f0003016b01d6000301d60166011801d6000301340118018f000301330143 Tj" + "0.00 -8.80 Td" + "#hex:01be01c1014301c901c90143013b0608000300c1016601430003013401de01330143000301c901d6011801c101d601c9000301f6016b01d601660003056c056f000301340166011801c1015e014301c905fc Tj" + "0.00 -8.80 Td" + "#hex:0118018f013b0003016b01d6000301c10143015e0118016b018f01c90003056a013b056b05690003014301fb01be0143018f013b0143013b000301340166011801c1015e014301c90003013b0118016b018401fc Tj" + "0.00 -8.80 Td" + "#hex:011801d60003013b011801f6018f0608000300e6019b01de000301340118018f000301de01c9014300030118018f00030118013401d6016b019b018f000301d6019b000301be01c1014301c901c90003019b018f0143 Tj" + "0.00 -8.80 Td" + "#hex:019b015d000301d6016601430003013401de01330143065a01c90003015d01180134014301c905fc0003014301fb01be0143018f013b016b018f015e000301180003018f01de018d0133014301c10003019b015d Tj" + "0.00 -8.80 Td" + "#hex:01340166011801c1015e014301c900030133011801c90143013b0003019b018f000301d601660143000301340166019b01c90143018f0003015d01180134014305fc0003011801c9000301c90166019b01f6018f Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "97.72 53.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "BT" + "/F1 6.20 Tf" + "100.52 68.40 Td" + "#hex:016901d001c4020b01a001c4021301780170000301d001c40003020b019b017800030168014d016901b6 Tj" + "ET"] + ["0.88 0.88 0.88 RG" + "36.00 18.00 m" + "36.00 774.00 l" + "S" + "216.00 18.00 m" + "216.00 774.00 l" + "S" + "396.00 18.00 m" + "396.00 774.00 l" + "S" + "576.00 18.00 m" + "576.00 774.00 l" + "S" + "36.00 18.00 m" + "576.00 18.00 l" + "S" + "36.00 270.00 m" + "576.00 270.00 l" + "S" + "36.00 522.00 m" + "576.00 522.00 l" + "S" + "36.00 774.00 m" + "576.00 774.00 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 781.20 Td" + "#hex:00a9014d01930178000303fa Tj" + "ET" + "1.10 w" + "414.72 767.52 m" + "557.28 767.52 l" + "569.52 755.28 l" + "569.52 540.72 l" + "557.28 528.48 l" + "414.72 528.48 l" + "402.48 540.72 l" + "402.48 755.28 l" + "s" + "0.45 w" + "414.72 764.50 m" + "557.28 764.50 l" + "566.50 755.28 l" + "566.50 540.72 l" + "557.28 531.50 l" + "414.72 531.50 l" + "405.50 540.72 l" + "405.50 755.28 l" + "s" + "0.90 w" + "417.96 760.68 m" + "409.32 760.68 l" + "409.32 752.04 l" + "S" + "554.04 760.68 m" + "562.68 760.68 l" + "562.68 752.04 l" + "S" + "417.96 535.32 m" + "409.32 535.32 l" + "409.32 543.96 l" + "S" + "554.04 535.32 m" + "562.68 535.32 l" + "562.68 543.96 l" + "S" + "1.00 w" + "0.50 w" + "416.16 756.36 m" + "462.96 756.36 l" + "S" + "509.04 756.36 m" + "555.84 756.36 l" + "S" + "0.60 w" + "469.44 759.10 m" + "472.18 756.36 l" + "469.44 753.62 l" + "466.70 756.36 l" + "h" + "f" + "477.72 759.10 m" + "480.46 756.36 l" + "477.72 753.62 l" + "474.98 756.36 l" + "h" + "f" + "486.00 759.10 m" + "488.74 756.36 l" + "486.00 753.62 l" + "483.26 756.36 l" + "h" + "f" + "494.28 759.10 m" + "497.02 756.36 l" + "494.28 753.62 l" + "491.54 756.36 l" + "h" + "S" + "502.56 759.10 m" + "505.30 756.36 l" + "502.56 753.62 l" + "499.82 756.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "432.00 535.32 m" + "479.88 535.32 l" + "S" + "492.12 535.32 m" + "540.00 535.32 l" + "S" + "486.00 537.62 m" + "488.30 535.32 l" + "486.00 533.02 l" + "483.70 535.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "547.20 703.08 m" + "553.32 703.08 l" + "555.84 700.56 l" + "555.84 695.16 l" + "553.32 692.64 l" + "547.20 692.64 l" + "544.68 695.16 l" + "544.68 700.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "547.73 695.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "416.16 748.08 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc000300a90118013b013b0143013b Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "410.40 702.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "410.40 686.16 m" + "561.60 686.16 l" + "S" + "0.35 w" + "410.40 683.64 m" + "561.60 683.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "410.40 678.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "457.72 557.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "234.72 767.52 m" + "377.28 767.52 l" + "389.52 755.28 l" + "389.52 540.72 l" + "377.28 528.48 l" + "234.72 528.48 l" + "222.48 540.72 l" + "222.48 755.28 l" + "s" + "0.45 w" + "234.72 764.50 m" + "377.28 764.50 l" + "386.50 755.28 l" + "386.50 540.72 l" + "377.28 531.50 l" + "234.72 531.50 l" + "225.50 540.72 l" + "225.50 755.28 l" + "s" + "1.00 w" + "0.50 w" + "236.16 756.36 m" + "282.96 756.36 l" + "S" + "329.04 756.36 m" + "375.84 756.36 l" + "S" + "0.60 w" + "289.44 759.10 m" + "292.18 756.36 l" + "289.44 753.62 l" + "286.70 756.36 l" + "h" + "f" + "297.72 759.10 m" + "300.46 756.36 l" + "297.72 753.62 l" + "294.98 756.36 l" + "h" + "f" + "306.00 759.10 m" + "308.74 756.36 l" + "306.00 753.62 l" + "303.26 756.36 l" + "h" + "S" + "314.28 759.10 m" + "317.02 756.36 l" + "314.28 753.62 l" + "311.54 756.36 l" + "h" + "S" + "322.56 759.10 m" + "325.30 756.36 l" + "322.56 753.62 l" + "319.82 756.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "252.00 535.32 m" + "299.88 535.32 l" + "S" + "312.12 535.32 m" + "360.00 535.32 l" + "S" + "306.00 537.62 m" + "308.30 535.32 l" + "306.00 533.02 l" + "303.70 535.32 l" + "h" + "S" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "236.16 748.08 Td" + "0.00 -14.30 Td" + "#hex:0004013b0118018d0118018f01d6016b018f01430003000401c1018d019b01c105fc Tj" + "0.00 -14.30 Td" + "#hex:002001660118016b018f000300b40166016b01c101d6 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "230.40 702.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f604760003021301c4016901d001c201c201d001c4 Tj" + "ET" + "0.90 w" + "230.40 686.16 m" + "381.60 686.16 l" + "S" + "0.35 w" + "230.40 683.64 m" + "381.60 683.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "230.40 678.96 Td" + "0.00 -8.80 Td" + "#hex:00c10166016b01c9000301c901de016b01d60003019b015d0003011801c1018d019b01c10003016b01c9000301c10143016b018f015d019b01c101340143013b000301f6016b01d60166 Tj" + "0.00 -8.80 Td" + "#hex:0118013b0118018d0118018f01d6016b018f014305fc0003019b018f01430003019b015d000301d60166014300030166011801c1013b014301c901d6000301c901de013301c901d60118018f0134014301c9 Tj" + "0.00 -8.80 Td" + "#hex:016b018f0003014301fb016b01c901d60143018f013401430608000300e00166016b01840143000301fc019b01de065a01c10143000301f60143011801c1016b018f015e0003016b01d605fc00030118018f01fc Tj" + "0.00 -8.80 Td" + "#hex:013401c1016b01d6016b01340118018400030166016b01d600030118015e0118016b018f01c901d6000301fc019b01de0003013301430134019b018d014301c9000301180003018f019b01c1018d01180184 Tj" + "0.00 -8.80 Td" + "#hex:0166016b01d60608 Tj" + "ET" + "1.10 w" + "54.72 767.52 m" + "197.28 767.52 l" + "209.52 755.28 l" + "209.52 540.72 l" + "197.28 528.48 l" + "54.72 528.48 l" + "42.48 540.72 l" + "42.48 755.28 l" + "s" + "1.00 w" + "0.50 w" + "56.16 756.36 m" + "102.96 756.36 l" + "S" + "149.04 756.36 m" + "195.84 756.36 l" + "S" + "0.60 w" + "109.44 759.10 m" + "112.18 756.36 l" + "109.44 753.62 l" + "106.70 756.36 l" + "h" + "f" + "117.72 759.10 m" + "120.46 756.36 l" + "117.72 753.62 l" + "114.98 756.36 l" + "h" + "S" + "126.00 759.10 m" + "128.74 756.36 l" + "126.00 753.62 l" + "123.26 756.36 l" + "h" + "S" + "134.28 759.10 m" + "137.02 756.36 l" + "134.28 753.62 l" + "131.54 756.36 l" + "h" + "S" + "142.56 759.10 m" + "145.30 756.36 l" + "142.56 753.62 l" + "139.82 756.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "72.00 535.32 m" + "119.88 535.32 l" + "S" + "132.12 535.32 m" + "180.00 535.32 l" + "S" + "126.00 537.62 m" + "128.30 535.32 l" + "126.00 533.02 l" + "123.70 535.32 l" + "h" + "S" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "56.16 740.88 Td" + "0.00 -14.30 Td" + "#hex:00a9019b01d6016b019b018f0003019b015d000300200184016b018d0133016b018f015e Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "50.40 702.00 Td" + "0.00 -8.25 Td" + "#hex:00a901d0020b01a001d001c404760003016901d001c201c201d001c4 Tj" + "ET" + "0.90 w" + "50.40 686.16 m" + "201.60 686.16 l" + "S" + "0.35 w" + "50.40 683.64 m" + "201.60 683.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "50.40 678.96 Td" + "0.00 -8.80 Td" + "#hex:00e001660143018f000301fc019b01de0003013b01c1016b018f0181000301d60166016b01c9000301be019b01d6016b019b018f05fc000301fc019b01de0003015e0118016b018f00030118 Tj" + "0.00 -8.80 Td" + "#hex:01340184016b018d0133016b018f015e000301c901be01430143013b0003014301c001de01180184000301d6019b000301fc019b01de01c1000301f6011801840181016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:01c901be01430143013b0003015d019b01c10003056a00030166019b01de01c106080003002701de01c1016b018f015e000301d60166016b01c9000301d6016b018d014305fc000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:0166011801f5014300030118013b01f50118018f01d60118015e01430003019b018f000300b401d601c10143018f015e01d6016600030628000401d601660184014301d6016b013401c90629 Tj" + "0.00 -8.80 Td" + "#hex:0134016601430134018101c9000301fc019b01de0003018d011801810143000301d6019b000301340184016b018d01330608000300c101660143000301be019b01d6016b019b018f0003016b01c9 Tj" + "0.00 -8.80 Td" + "#hex:01c9014301be011801c1011801d60143013b0003016b018f01d6019b0003013301c1019b01f6018f05fc000301c9016b018401f5014301c105fc00030118018f013b0003015e01c1011801fc Tj" + "0.00 -8.80 Td" + "#hex:0184011801fc014301c101c9000301c1014301c90143018d01330184016b018f015e000301330118018f013b01c90003019b015d000301c901d6019b018f01430608000300b4016601180181016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:01d60166014300030133019b01d601d6018401430003015d0118016b018401c9000301d6019b0003018d016b01fb000301d60166014300030134019b0184019b01c101c90608 Tj" + "ET" + "1.10 w" + "414.72 515.52 m" + "557.28 515.52 l" + "569.52 503.28 l" + "569.52 288.72 l" + "557.28 276.48 l" + "414.72 276.48 l" + "402.48 288.72 l" + "402.48 503.28 l" + "s" + "1.00 w" + "0.50 w" + "416.16 504.36 m" + "462.96 504.36 l" + "S" + "509.04 504.36 m" + "555.84 504.36 l" + "S" + "0.60 w" + "469.44 507.10 m" + "472.18 504.36 l" + "469.44 501.62 l" + "466.70 504.36 l" + "h" + "S" + "477.72 507.10 m" + "480.46 504.36 l" + "477.72 501.62 l" + "474.98 504.36 l" + "h" + "S" + "486.00 507.10 m" + "488.74 504.36 l" + "486.00 501.62 l" + "483.26 504.36 l" + "h" + "S" + "494.28 507.10 m" + "497.02 504.36 l" + "494.28 501.62 l" + "491.54 504.36 l" + "h" + "S" + "502.56 507.10 m" + "505.30 504.36 l" + "502.56 501.62 l" + "499.82 504.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "432.00 283.32 m" + "479.88 283.32 l" + "S" + "492.12 283.32 m" + "540.00 283.32 l" + "S" + "486.00 285.62 m" + "488.30 283.32 l" + "486.00 281.02 l" + "483.70 283.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "547.20 451.08 m" + "553.32 451.08 l" + "555.84 448.56 l" + "555.84 443.16 l" + "553.32 440.64 l" + "547.20 440.64 l" + "544.68 443.16 l" + "544.68 448.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "547.73 443.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "416.16 488.88 Td" + "0.00 -14.30 Td" + "#hex:001f0143018401d60003019b015d0003002701f6011801c101f50143018f0181016b018f013b Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "410.40 450.00 Td" + "0.00 -8.25 Td" + "#hex:00e001d001c4017001f601d0021301fe000301a0020b017801c20476000301f6014d01f601a0020b02310003022a014d01f601a0017801fe Tj" + "ET" + "0.90 w" + "410.40 434.16 m" + "561.60 434.16 l" + "S" + "0.35 w" + "410.40 431.64 m" + "561.60 431.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "410.40 426.96 Td" + "0.00 -8.80 Td" + "#hex:00e00166016b01840143000301f60143011801c1016b018f015e000301d60166016b01c9000301330143018401d605fc000301fc019b01de0003015e0118016b018f000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:015d019b01840184019b01f6016b018f015e000301330143018f0143025b01d601c905fb000305f8000300e6019b01de01c100030020019b018f01c901d6016b01d601de01d6016b019b018f Tj" + "0.00 -8.80 Td" + "#hex:01c90134019b01c101430003016b018f013401c10143011801c9014301c90003013301fc0003056b05fc000301d6019b000301180003018d011801fb016b018d01de018d0003019b015d0003056b05690608000305f8 Tj" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f5014300030118013b01f50118018f01d60118015e01430003019b018f000300200166011801c1016b01c9018d0118 Tj" + "0.00 -8.80 Td" + "#hex:062800a9014301c101c901de011801c9016b019b018f062900030134016601430134018101c90003018d0118013b0143000301d6019b0003016b018f01d6014301c10118013401d6000301f6016b01d60166 Tj" + "0.00 -8.80 Td" + "#hex:013b01f6011801c101f5014301c9060800030058018f00030118013b013b016b01d6016b019b018f05fc000301f60166016b018401430003011801d601d601de018f0143013b000301d6019b000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01330143018401d605fc000301fc019b01de00030166011801f50143000301180003056e0569000301be014301c101340143018f01d60003013401660118018f01340143000301430118013401660003013b011801fc Tj" + "0.00 -8.80 Td" + "#hex:011801d60003013b011801f6018f0003019b015d0003015e01c1019b01f6016b018f015e000301180003015d01de01840184000301330143011801c1013b0003016b015d000301fc019b01de065a01c10143 Tj" + "0.00 -8.80 Td" + "#hex:0134011801be01180133018401430003019b015d0003015e01c1019b01f6016b018f015e0003019b018f014305fc0003019b01c100030118000301f5016b01c9016b0133018401fc000301d60166016b01340181014301c1 Tj" + "0.00 -8.80 Td" + "#hex:01330143011801c1013b0003016b015d000301fc019b01de00030118018401c101430118013b01fc00030166011801f501430003019b018f0143060800030058015d000301fc019b01de0003011801c10143018f065a01d6 Tj" + "0.00 -8.80 Td" + "#hex:01180003013b01f6011801c1015d05fc000301fc019b01de0003015e0118016b018f000301d6016601430003015d019b01840184019b01f6016b018f015e00030118013b013b016b01d6016b019b018f01180184 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "457.72 305.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "BT" + "/F1 6.20 Tf" + "460.52 320.40 Td" + "#hex:016901d001c4020b01a001c4021301780170000301d001c40003020b019b017800030168014d016901b6 Tj" + "ET" + "1.10 w" + "234.72 515.52 m" + "377.28 515.52 l" + "389.52 503.28 l" + "389.52 288.72 l" + "377.28 276.48 l" + "234.72 276.48 l" + "222.48 288.72 l" + "222.48 503.28 l" + "s" + "0.45 w" + "234.72 512.50 m" + "377.28 512.50 l" + "386.50 503.28 l" + "386.50 288.72 l" + "377.28 279.50 l" + "234.72 279.50 l" + "225.50 288.72 l" + "225.50 503.28 l" + "s" + "0.90 w" + "243.72 508.68 m" + "229.32 508.68 l" + "229.32 494.28 l" + "S" + "368.28 508.68 m" + "382.68 508.68 l" + "382.68 494.28 l" + "S" + "243.72 283.32 m" + "229.32 283.32 l" + "229.32 297.72 l" + "S" + "368.28 283.32 m" + "382.68 283.32 l" + "382.68 297.72 l" + "S" + "0.90 w" + "241.56 504.36 m" + "233.64 504.36 l" + "233.64 496.44 l" + "S" + "370.44 504.36 m" + "378.36 504.36 l" + "378.36 496.44 l" + "S" + "241.56 287.64 m" + "233.64 287.64 l" + "233.64 295.56 l" + "S" + "370.44 287.64 m" + "378.36 287.64 l" + "378.36 295.56 l" + "S" + "1.00 w" + "0.50 w" + "236.16 504.36 m" + "282.96 504.36 l" + "S" + "329.04 504.36 m" + "375.84 504.36 l" + "S" + "0.60 w" + "289.44 507.10 m" + "292.18 504.36 l" + "289.44 501.62 l" + "286.70 504.36 l" + "h" + "f" + "297.72 507.10 m" + "300.46 504.36 l" + "297.72 501.62 l" + "294.98 504.36 l" + "h" + "f" + "306.00 507.10 m" + "308.74 504.36 l" + "306.00 501.62 l" + "303.26 504.36 l" + "h" + "f" + "314.28 507.10 m" + "317.02 504.36 l" + "314.28 501.62 l" + "311.54 504.36 l" + "h" + "f" + "322.56 507.10 m" + "325.30 504.36 l" + "322.56 501.62 l" + "319.82 504.36 l" + "h" + "f" + "1.00 w" + "0.50 w" + "252.00 283.32 m" + "299.88 283.32 l" + "S" + "312.12 283.32 m" + "360.00 283.32 l" + "S" + "306.00 285.62 m" + "308.30 283.32 l" + "306.00 281.02 l" + "303.70 283.32 l" + "h" + "S" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "236.16 488.88 Td" + "0.00 -14.30 Td" + "#hex:000401be01be011801c1011801d601de01c90003019b015d000301d6016601430003002001c101180133 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "230.40 450.00 Td" + "0.00 -8.25 Td" + "#hex:00e001d001c4017001f601d0021301fe000301a0020b017801c20476000301b901780193017801c40170014d01f60231 Tj" + "ET" + "0.90 w" + "230.40 434.16 m" + "381.60 434.16 l" + "S" + "0.35 w" + "230.40 431.64 m" + "381.60 431.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "230.40 426.96 Td" + "0.00 -8.80 Td" + "#hex:00c10166016b01c90003016b01d60143018d0003025b01c101c901d60003011801be01be0143011801c101c9000301d6019b000301330143000301180003006e011801c1015e0143000301c90143011801840143013b Tj" + "0.00 -8.80 Td" + "#hex:016b01c1019b018f00030133011801c101c101430184000301f60143016b015e0166016b018f015e0003056e05690569000301be019b01de018f013b01c90608000300c101660143 Tj" + "0.00 -8.80 Td" + "#hex:0133011801c101c10143018400030166011801c90003011800030166016b013b013b0143018f00030134011801d60134016605fc000301f60166016b01340166000301340118018f000301330143 Tj" + "0.00 -8.80 Td" + "#hex:015d019b01de018f013b000301f6016b01d6016600030118000301c901de01340134014301c901c9015d01de01840003002700200003056b056900030058018f01d6014301840184016b015e0143018f01340143 Tj" + "0.00 -8.80 Td" + "#hex:06280058018f01f5014301c901d6016b015e011801d6016b019b018f06290003013401660143013401810608000300ac014301840143011801c9016b018f015e000301d60166014300030134011801d601340166 Tj" + "0.00 -8.80 Td" + "#hex:01de018f0184019b0134018101c90003011800030166011801d6013401660003011801d60003019b018f014300030143018f013b0003019b015d000301d60166014300030133011801c101c10143018405fc Tj" + "0.00 -8.80 Td" + "#hex:011801840184019b01f6016b018f015e000301d601f6019b000300780143013b016b01de018d0003019b01c1000301c9018d011801840184014301c10003013401c10143011801d601de01c1014301c9 Tj" + "0.00 -8.80 Td" + "#hex:01d6019b0003013401c1011801f601840003016b018f01c9016b013b01430608000300c10143018f00030184014301f5014301c101c90003011801c10143000301c9014301d60003016b018f00030118000301c1019b01f6 Tj" + "0.00 -8.80 Td" + "#hex:011801d6000301d6016601430003015d011801c100030143018f013b05fc000301430118013401660003016b018f000301180003018f014301de01d601c101180184000301be019b01c9016b01d6016b019b018f05fc Tj" + "0.00 -8.80 Td" + "#hex:0118013301840143000301d6019b0003018d019b01f5014300030143016b01d60166014301c1000301de01be0003019b01c10003013b019b01f6018f0608000300e001660143018f Tj" + "0.00 -8.80 Td" + "#hex:0134014301c101d60118016b018f00030184014301f5014301c101c90003011801c10143000301de01c90143013b05fc000301d6016601430003011801be01be011801c1011801d601de01c9 Tj" + "0.00 -8.80 Td" + "#hex:01d601c10118018f01c9015d019b01c1018d01c9000301d6019b000301c1014301c90143018d013301840143000301180003015e016b0118018f01d600030184019b013301c901d6014301c10608000300c101660143 Tj" + "0.00 -8.80 Td" + "#hex:011801be01be011801c1011801d601de01c90003019b015d000301d6016601430003002001c1011801330003016b01c9000301180003006e011801c1015e01430003019b0133017d0143013401d6000301f6016b01d60166 Tj" + "0.00 -8.80 Td" + "#hex:01d6016601430003015d019b01840184019b01f6016b018f015e000301c901d6011801d6016b01c901d6016b013401c905fb0003000401c1018d019b01c1000300200184011801c901c905fb0003056b0569 Tj" + "ET" + "BT" + "/F1 6.20 Tf" + "280.52 291.60 Td" + "#hex:016901d001c4020b01a001c4021301780170000301d001c40003020b019b017800030168014d016901b6 Tj" + "ET" + "1.10 w" + "54.72 515.52 m" + "197.28 515.52 l" + "209.52 503.28 l" + "209.52 288.72 l" + "197.28 276.48 l" + "54.72 276.48 l" + "42.48 288.72 l" + "42.48 503.28 l" + "s" + "0.45 w" + "54.72 512.50 m" + "197.28 512.50 l" + "206.50 503.28 l" + "206.50 288.72 l" + "197.28 279.50 l" + "54.72 279.50 l" + "45.50 288.72 l" + "45.50 503.28 l" + "s" + "0.90 w" + "63.72 508.68 m" + "49.32 508.68 l" + "49.32 494.28 l" + "S" + "188.28 508.68 m" + "202.68 508.68 l" + "202.68 494.28 l" + "S" + "63.72 283.32 m" + "49.32 283.32 l" + "49.32 297.72 l" + "S" + "188.28 283.32 m" + "202.68 283.32 l" + "202.68 297.72 l" + "S" + "1.00 w" + "0.50 w" + "56.16 504.36 m" + "102.96 504.36 l" + "S" + "149.04 504.36 m" + "195.84 504.36 l" + "S" + "0.60 w" + "109.44 507.10 m" + "112.18 504.36 l" + "109.44 501.62 l" + "106.70 504.36 l" + "h" + "f" + "117.72 507.10 m" + "120.46 504.36 l" + "117.72 501.62 l" + "114.98 504.36 l" + "h" + "f" + "126.00 507.10 m" + "128.74 504.36 l" + "126.00 501.62 l" + "123.26 504.36 l" + "h" + "f" + "134.28 507.10 m" + "137.02 504.36 l" + "134.28 501.62 l" + "131.54 504.36 l" + "h" + "f" + "142.56 507.10 m" + "145.30 504.36 l" + "142.56 501.62 l" + "139.82 504.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "72.00 283.32 m" + "119.88 283.32 l" + "S" + "132.12 283.32 m" + "180.00 283.32 l" + "S" + "126.00 285.62 m" + "128.30 283.32 l" + "126.00 281.02 l" + "123.70 283.32 l" + "h" + "S" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "56.16 488.88 Td" + "0.00 -14.30 Td" + "#hex:000401c101c1019b01f6000306af056c Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "50.40 450.00 Td" + "0.00 -8.25 Td" + "#hex:00e00178014d01f301d001c404760003022a017801f60231000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "50.40 434.16 m" + "201.60 434.16 l" + "S" + "0.35 w" + "50.40 431.64 m" + "201.60 431.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "50.40 426.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f5014300030118000306af056c00030133019b018f01de01c9000301d6019b0003011801d601d601180134018100030118018f013b0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01c1019b0184018401c90003018d0118013b0143000301f6016b01d60166000301d60166016b01c9000301be016b0143013401430003019b015d0003018d0118015e016b0134 Tj" + "0.00 -8.80 Td" + "#hex:0118018d018d01de018f016b01d6016b019b018f0608000300c10166014300030133019b018f01de01c90003016b01c90003013b014301d6014301c1018d016b018f0143013b0003013301fc Tj" + "0.00 -8.80 Td" + "#hex:01d601660143000301c1011801c1016b01d601fc0003019b015d000301d60166014300030118018d018d01de018f016b01d6016b019b018f060800030086018f013401430003016b01d600030166016b01d601c900030118 Tj" + "0.00 -8.80 Td" + "#hex:01d6011801c1015e014301d605fc000301d60166014300030118018d018d01de018f016b01d6016b019b018f0003016b01c90003018f019b00030184019b018f015e014301c1 Tj" + "0.00 -8.80 Td" + "#hex:018d0118015e016b0134011801840608 Tj" + "ET" + "1.10 w" + "414.72 263.52 m" + "557.28 263.52 l" + "569.52 251.28 l" + "569.52 36.72 l" + "557.28 24.48 l" + "414.72 24.48 l" + "402.48 36.72 l" + "402.48 251.28 l" + "s" + "0.45 w" + "414.72 260.50 m" + "557.28 260.50 l" + "566.50 251.28 l" + "566.50 36.72 l" + "557.28 27.50 l" + "414.72 27.50 l" + "405.50 36.72 l" + "405.50 251.28 l" + "s" + "0.90 w" + "423.72 256.68 m" + "409.32 256.68 l" + "409.32 242.28 l" + "S" + "548.28 256.68 m" + "562.68 256.68 l" + "562.68 242.28 l" + "S" + "423.72 31.32 m" + "409.32 31.32 l" + "409.32 45.72 l" + "S" + "548.28 31.32 m" + "562.68 31.32 l" + "562.68 45.72 l" + "S" + "1.00 w" + "0.50 w" + "416.16 252.36 m" + "462.96 252.36 l" + "S" + "509.04 252.36 m" + "555.84 252.36 l" + "S" + "0.60 w" + "469.44 255.10 m" + "472.18 252.36 l" + "469.44 249.62 l" + "466.70 252.36 l" + "h" + "f" + "477.72 255.10 m" + "480.46 252.36 l" + "477.72 249.62 l" + "474.98 252.36 l" + "h" + "f" + "486.00 255.10 m" + "488.74 252.36 l" + "486.00 249.62 l" + "483.26 252.36 l" + "h" + "f" + "494.28 255.10 m" + "497.02 252.36 l" + "494.28 249.62 l" + "491.54 252.36 l" + "h" + "f" + "502.56 255.10 m" + "505.30 252.36 l" + "502.56 249.62 l" + "499.82 252.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "432.00 31.32 m" + "479.88 31.32 l" + "S" + "492.12 31.32 m" + "540.00 31.32 l" + "S" + "486.00 33.62 m" + "488.30 31.32 l" + "486.00 29.02 l" + "483.70 31.32 l" + "h" + "S" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 12.00 Tf" + "416.16 246.96 Td" + "0.00 -13.20 Td" + "#hex:00c1019b018d01430003019b015d0003006e01430118013b014301c101c90166016b01be00030118018f013b Tj" + "0.00 -13.20 Td" + "#hex:0058018f025d01de0143018f013401430003062801c101430118013b000301f6016b01d60166 Tj" + "0.00 -13.20 Td" + "#hex:018d019b013b016b025b014301c101c90629 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "410.40 198.00 Td" + "0.00 -8.25 Td" + "#hex:00e001d001c4017001f601d0021301fe000301a0020b017801c204760003022a017801f60231000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "410.40 182.16 m" + "561.60 182.16 l" + "S" + "0.35 w" + "410.40 179.64 m" + "561.60 179.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "410.40 174.96 Td" + "0.00 -8.80 Td" + "#hex:00c10166016b01c900030133019b019b018100030134019b018f01d60118016b018f01c90003015e01de016b013b01430184016b018f014301c90003015d019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:016b018f025d01de0143018f0134016b018f015e00030118018f013b000301340166011801c1018d016b018f015e0003019b01d60166014301c101c905fc00030118018f013b0003016b01d601c9 Tj" + "0.00 -8.80 Td" + "#hex:01f6019b01c1013b01c90003011801c10143000301340166011801c1015e0143013b000301f6016b01d601660003018d0118015e016b0134060800030058015d000301fc019b01de000301c901be0143018f013b Tj" + "0.00 -8.80 Td" + "#hex:056d057100030166019b01de01c101c90003019b01f5014301c100030118000301be014301c1016b019b013b0003019b015d0003056f0003013b011801fc01c90003019b01c10003015d014301f6014301c1 Tj" + "0.00 -8.80 Td" + "#hex:01c901d601de013b01fc016b018f015e000301d60166014300030133019b019b0181065a01c900030134019b018f01d60143018f01d601c900030118018f013b Tj" + "0.00 -8.80 Td" + "#hex:01be01c10118013401d6016b0134016b018f015e0003016b01d601c90003015e01de016b013b01430184016b018f014301c905fc000301fc019b01de01c1000300200166011801c1016b01c9018d0118 Tj" + "0.00 -8.80 Td" + "#hex:01c90134019b01c101430003016b018f013401c10143011801c9014301c90003013301fc0003056b05fc0003011801c90003013b019b014301c9000301fc019b01de01c1 Tj" + "0.00 -8.80 Td" + "#hex:018d011801fb016b018d01de018d0003015d019b01c1000301d60166011801d6000301c90134019b01c101430608000300c1016601430003018d0118018f01de01180184000301d601660143018f Tj" + "0.00 -8.80 Td" + "#hex:0184019b01c9014301c90003016b01d601c90003018d0118015e016b013405fc0003013301de01d6000301c10143015e0118016b018f01c90003016b01d60003016b018f00030118000301340143018f01d601de01c101fc0608 Tj" + "ET" + "1.10 w" + "234.72 263.52 m" + "377.28 263.52 l" + "389.52 251.28 l" + "389.52 36.72 l" + "377.28 24.48 l" + "234.72 24.48 l" + "222.48 36.72 l" + "222.48 251.28 l" + "s" + "0.45 w" + "234.72 260.50 m" + "377.28 260.50 l" + "386.50 251.28 l" + "386.50 36.72 l" + "377.28 27.50 l" + "234.72 27.50 l" + "225.50 36.72 l" + "225.50 251.28 l" + "s" + "1.00 w" + "0.50 w" + "236.16 252.36 m" + "282.96 252.36 l" + "S" + "329.04 252.36 m" + "375.84 252.36 l" + "S" + "0.60 w" + "289.44 255.10 m" + "292.18 252.36 l" + "289.44 249.62 l" + "286.70 252.36 l" + "h" + "f" + "297.72 255.10 m" + "300.46 252.36 l" + "297.72 249.62 l" + "294.98 252.36 l" + "h" + "f" + "306.00 255.10 m" + "308.74 252.36 l" + "306.00 249.62 l" + "303.26 252.36 l" + "h" + "S" + "314.28 255.10 m" + "317.02 252.36 l" + "314.28 249.62 l" + "311.54 252.36 l" + "h" + "S" + "322.56 255.10 m" + "325.30 252.36 l" + "322.56 249.62 l" + "319.82 252.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "252.00 31.32 m" + "299.88 31.32 l" + "S" + "312.12 31.32 m" + "360.00 31.32 l" + "S" + "306.00 33.62 m" + "308.30 31.32 l" + "306.00 29.02 l" + "303.70 31.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "367.20 199.08 m" + "373.32 199.08 l" + "375.84 196.56 l" + "375.84 191.16 l" + "373.32 188.64 l" + "367.20 188.64 l" + "364.68 191.16 l" + "364.68 196.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "367.73 191.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "236.16 236.88 Td" + "0.00 -14.30 Td" + "#hex:003101fc014301c90003019b015d000300200166011801c1018d016b018f015e Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "230.40 198.00 Td" + "0.00 -8.25 Td" + "#hex:00e001d001c4017001f601d0021301fe000301a0020b017801c204760003021301c4016901d001c201c201d001c4 Tj" + "ET" + "0.90 w" + "230.40 182.16 m" + "381.60 182.16 l" + "S" + "0.35 w" + "230.40 179.64 m" + "381.60 179.64 l" + "S" + "1.00 w" + "0.80 w" + "BT" + "/F5 5.50 Tf" + "292.40 169.92 Td" + "\"CHARGES\" Tj" + "ET" + "299.30 158.40 m" + "299.30 160.47 297.63 162.14 295.56 162.14 c" + "293.49 162.14 291.82 160.47 291.82 158.40 c" + "291.82 156.33 293.49 154.66 295.56 154.66 c" + "297.63 154.66 299.30 156.33 299.30 158.40 c" + "s" + "309.74 158.40 m" + "309.74 160.47 308.07 162.14 306.00 162.14 c" + "303.93 162.14 302.26 160.47 302.26 158.40 c" + "302.26 156.33 303.93 154.66 306.00 154.66 c" + "308.07 154.66 309.74 156.33 309.74 158.40 c" + "s" + "320.18 158.40 m" + "320.18 160.47 318.51 162.14 316.44 162.14 c" + "314.37 162.14 312.70 160.47 312.70 158.40 c" + "312.70 156.33 314.37 154.66 316.44 154.66 c" + "318.51 154.66 320.18 156.33 320.18 158.40 c" + "s" + "1.00 w" + "0.35 w" + "230.40 146.88 m" + "381.60 146.88 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "230.40 141.12 Td" + "0.00 -8.80 Td" + "#hex:00c10166014301c901430003013401c101fc01c901d601180184000301840143018f01c9014301c90003025b01d60003019b01f5014301c1000301d6016601430003014301fc014301c90608000300c10166014301fc Tj" + "0.00 -8.80 Td" + "#hex:0166011801f501430003056c000301340166011801c1015e014301c90608000300e00166016b01840143000301f60143011801c1016b018f015e000301d601660143018d05fc000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:01340118018f0003014301fb01be0143018f013b0003056a000301340166011801c1015e01430003011801c900030118018f00030118013401d6016b019b018f000301d6019b00030134011801c901d6000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01340166011801c1018d000301be014301c101c9019b018f000301c901be0143018401840003062801c9011801f501430003002700200003056a056c06290003019b018f00030118 Tj" + "0.00 -8.80 Td" + "#hex:016601de018d0118018f019b016b013b000301f6016b01d60166016b018f0003056c05690003015d0143014301d60003019b015d000301fc019b01de05fc000301be01c1019b01f5016b013b0143013b Tj" + "0.00 -8.80 Td" + "#hex:01d60166011801d6000301fc019b01de00030118018f013b000301d601660143000301d6011801c1015e014301d6000301340118018f000301c901430143000301430118013401660003019b01d60166014301c10608 Tj" + "0.00 -8.80 Td" + "#hex:00c101660143000301840143018f01c9014301c9000301c10143015e0118016b018f00030118018401840003014301fb01be0143018f013b0143013b000301340166011801c1015e014301c9 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "277.72 53.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "BT" + "/F1 6.20 Tf" + "280.52 68.40 Td" + "#hex:016901d001c4020b01a001c4021301780170000301d001c40003020b019b017800030168014d016901b6 Tj" + "ET" + "1.10 w" + "54.72 263.52 m" + "197.28 263.52 l" + "209.52 251.28 l" + "209.52 36.72 l" + "197.28 24.48 l" + "54.72 24.48 l" + "42.48 36.72 l" + "42.48 251.28 l" + "s" + "0.45 w" + "54.72 260.50 m" + "197.28 260.50 l" + "206.50 251.28 l" + "206.50 36.72 l" + "197.28 27.50 l" + "54.72 27.50 l" + "45.50 36.72 l" + "45.50 251.28 l" + "s" + "0.90 w" + "57.96 256.68 m" + "49.32 256.68 l" + "49.32 248.04 l" + "S" + "194.04 256.68 m" + "202.68 256.68 l" + "202.68 248.04 l" + "S" + "57.96 31.32 m" + "49.32 31.32 l" + "49.32 39.96 l" + "S" + "194.04 31.32 m" + "202.68 31.32 l" + "202.68 39.96 l" + "S" + "1.00 w" + "0.50 w" + "56.16 252.36 m" + "102.96 252.36 l" + "S" + "149.04 252.36 m" + "195.84 252.36 l" + "S" + "0.60 w" + "109.44 255.10 m" + "112.18 252.36 l" + "109.44 249.62 l" + "106.70 252.36 l" + "h" + "f" + "117.72 255.10 m" + "120.46 252.36 l" + "117.72 249.62 l" + "114.98 252.36 l" + "h" + "f" + "126.00 255.10 m" + "128.74 252.36 l" + "126.00 249.62 l" + "123.26 252.36 l" + "h" + "f" + "134.28 255.10 m" + "137.02 252.36 l" + "134.28 249.62 l" + "131.54 252.36 l" + "h" + "S" + "142.56 255.10 m" + "145.30 252.36 l" + "142.56 249.62 l" + "139.82 252.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "72.00 31.32 m" + "119.88 31.32 l" + "S" + "132.12 31.32 m" + "180.00 31.32 l" + "S" + "126.00 33.62 m" + "128.30 31.32 l" + "126.00 29.02 l" + "123.70 31.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "187.20 199.08 m" + "193.32 199.08 l" + "195.84 196.56 l" + "195.84 191.16 l" + "193.32 188.64 l" + "187.20 188.64 l" + "184.68 191.16 l" + "184.68 196.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "187.73 191.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "56.16 236.88 Td" + "0.00 -14.30 Td" + "#hex:002001de013301430003019b015d0003004a019b01c101340143 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "50.40 198.00 Td" + "0.00 -8.25 Td" + "#hex:00e001d001c4017001f601d0021301fe000301a0020b017801c20476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "50.40 182.16 m" + "201.60 182.16 l" + "S" + "0.35 w" + "50.40 179.64 m" + "201.60 179.64 l" + "S" + "1.00 w" + "0.80 w" + "BT" + "/F5 5.50 Tf" + "112.40 169.92 Td" + "\"CHARGES\" Tj" + "ET" + "96.04 158.40 m" + "140.68 158.40 l" + "S" + "BT" + "/F5 7.00 Tf" + "144.28 159.48 Td" + "\"/ 36\" Tj" + "ET" + "1.00 w" + "0.35 w" + "50.40 146.88 m" + "201.60 146.88 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "50.40 141.12 Td" + "0.00 -8.80 Td" + "#hex:00c10166016b01c90003013401de013301430003016b01c9000301180133019b01de01d600030118018f0003016b018f0134016600030118013401c1019b01c901c90608000300310118013401660003015d011801340143 Tj" + "0.00 -8.80 Td" + "#hex:0166011801c9000301180003013b016b01c901d6016b018f013401d60003018d011801c10181016b018f015e0003019b018f0003016b01d6000301d60166011801d6000301340118018f000301330143 Tj" + "0.00 -8.80 Td" + "#hex:01be01c1014301c901c90143013b0608000300c1016601430003013401de01330143000301c901d6011801c101d601c9000301f6016b01d601660003056c056f000301340166011801c1015e014301c905fc Tj" + "0.00 -8.80 Td" + "#hex:0118018f013b0003016b01d6000301c10143015e0118016b018f01c90003056a013b056b05690003014301fb01be0143018f013b0143013b000301340166011801c1015e014301c90003013b0118016b018401fc Tj" + "0.00 -8.80 Td" + "#hex:011801d60003013b011801f6018f0608000300e6019b01de000301340118018f000301de01c9014300030118018f00030118013401d6016b019b018f000301d6019b000301be01c1014301c901c90003019b018f0143 Tj" + "0.00 -8.80 Td" + "#hex:019b015d000301d6016601430003013401de01330143065a01c90003015d01180134014301c905fc0003014301fb01be0143018f013b016b018f015e000301180003018f01de018d0133014301c10003019b015d Tj" + "0.00 -8.80 Td" + "#hex:01340166011801c1015e014301c900030133011801c90143013b0003019b018f000301d601660143000301340166019b01c90143018f0003015d01180134014305fc0003011801c9000301c90166019b01f6018f Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "97.72 53.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "BT" + "/F1 6.20 Tf" + "100.52 68.40 Td" + "#hex:016901d001c4020b01a001c4021301780170000301d001c40003020b019b017800030168014d016901b6 Tj" + "ET"] + ["0.88 0.88 0.88 RG" + "36.00 18.00 m" + "36.00 774.00 l" + "S" + "216.00 18.00 m" + "216.00 774.00 l" + "S" + "396.00 18.00 m" + "396.00 774.00 l" + "S" + "576.00 18.00 m" + "576.00 774.00 l" + "S" + "36.00 18.00 m" + "576.00 18.00 l" + "S" + "36.00 270.00 m" + "576.00 270.00 l" + "S" + "36.00 522.00 m" + "576.00 522.00 l" + "S" + "36.00 774.00 m" + "576.00 774.00 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 781.20 Td" + "#hex:00a9014d01930178000303fa Tj" + "ET" + "1.10 w" + "414.72 767.52 m" + "557.28 767.52 l" + "569.52 755.28 l" + "569.52 540.72 l" + "557.28 528.48 l" + "414.72 528.48 l" + "402.48 540.72 l" + "402.48 755.28 l" + "s" + "0.45 w" + "414.72 764.50 m" + "557.28 764.50 l" + "566.50 755.28 l" + "566.50 540.72 l" + "557.28 531.50 l" + "414.72 531.50 l" + "405.50 540.72 l" + "405.50 755.28 l" + "s" + "0.90 w" + "417.96 760.68 m" + "409.32 760.68 l" + "409.32 752.04 l" + "S" + "554.04 760.68 m" + "562.68 760.68 l" + "562.68 752.04 l" + "S" + "417.96 535.32 m" + "409.32 535.32 l" + "409.32 543.96 l" + "S" + "554.04 535.32 m" + "562.68 535.32 l" + "562.68 543.96 l" + "S" + "1.00 w" + "0.50 w" + "416.16 756.36 m" + "462.96 756.36 l" + "S" + "509.04 756.36 m" + "555.84 756.36 l" + "S" + "0.60 w" + "469.44 759.10 m" + "472.18 756.36 l" + "469.44 753.62 l" + "466.70 756.36 l" + "h" + "f" + "477.72 759.10 m" + "480.46 756.36 l" + "477.72 753.62 l" + "474.98 756.36 l" + "h" + "f" + "486.00 759.10 m" + "488.74 756.36 l" + "486.00 753.62 l" + "483.26 756.36 l" + "h" + "f" + "494.28 759.10 m" + "497.02 756.36 l" + "494.28 753.62 l" + "491.54 756.36 l" + "h" + "S" + "502.56 759.10 m" + "505.30 756.36 l" + "502.56 753.62 l" + "499.82 756.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "432.00 535.32 m" + "479.88 535.32 l" + "S" + "492.12 535.32 m" + "540.00 535.32 l" + "S" + "486.00 537.62 m" + "488.30 535.32 l" + "486.00 533.02 l" + "483.70 535.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "547.20 703.08 m" + "553.32 703.08 l" + "555.84 700.56 l" + "555.84 695.16 l" + "553.32 692.64 l" + "547.20 692.64 l" + "544.68 695.16 l" + "544.68 700.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "547.73 695.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "416.16 748.08 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc000300a90118013b013b0143013b Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "410.40 702.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "410.40 686.16 m" + "561.60 686.16 l" + "S" + "0.35 w" + "410.40 683.64 m" + "561.60 683.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "410.40 678.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "457.72 557.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "234.72 767.52 m" + "377.28 767.52 l" + "389.52 755.28 l" + "389.52 540.72 l" + "377.28 528.48 l" + "234.72 528.48 l" + "222.48 540.72 l" + "222.48 755.28 l" + "s" + "0.45 w" + "234.72 764.50 m" + "377.28 764.50 l" + "386.50 755.28 l" + "386.50 540.72 l" + "377.28 531.50 l" + "234.72 531.50 l" + "225.50 540.72 l" + "225.50 755.28 l" + "s" + "1.00 w" + "0.50 w" + "236.16 756.36 m" + "282.96 756.36 l" + "S" + "329.04 756.36 m" + "375.84 756.36 l" + "S" + "0.60 w" + "289.44 759.10 m" + "292.18 756.36 l" + "289.44 753.62 l" + "286.70 756.36 l" + "h" + "f" + "297.72 759.10 m" + "300.46 756.36 l" + "297.72 753.62 l" + "294.98 756.36 l" + "h" + "f" + "306.00 759.10 m" + "308.74 756.36 l" + "306.00 753.62 l" + "303.26 756.36 l" + "h" + "S" + "314.28 759.10 m" + "317.02 756.36 l" + "314.28 753.62 l" + "311.54 756.36 l" + "h" + "S" + "322.56 759.10 m" + "325.30 756.36 l" + "322.56 753.62 l" + "319.82 756.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "252.00 535.32 m" + "299.88 535.32 l" + "S" + "312.12 535.32 m" + "360.00 535.32 l" + "S" + "306.00 537.62 m" + "308.30 535.32 l" + "306.00 533.02 l" + "303.70 535.32 l" + "h" + "S" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "236.16 748.08 Td" + "0.00 -14.30 Td" + "#hex:0004013b0118018d0118018f01d6016b018f01430003000401c1018d019b01c105fc Tj" + "0.00 -14.30 Td" + "#hex:002001660118016b018f000300b40166016b01c101d6 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "230.40 702.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f604760003021301c4016901d001c201c201d001c4 Tj" + "ET" + "0.90 w" + "230.40 686.16 m" + "381.60 686.16 l" + "S" + "0.35 w" + "230.40 683.64 m" + "381.60 683.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "230.40 678.96 Td" + "0.00 -8.80 Td" + "#hex:00c10166016b01c9000301c901de016b01d60003019b015d0003011801c1018d019b01c10003016b01c9000301c10143016b018f015d019b01c101340143013b000301f6016b01d60166 Tj" + "0.00 -8.80 Td" + "#hex:0118013b0118018d0118018f01d6016b018f014305fc0003019b018f01430003019b015d000301d60166014300030166011801c1013b014301c901d6000301c901de013301c901d60118018f0134014301c9 Tj" + "0.00 -8.80 Td" + "#hex:016b018f0003014301fb016b01c901d60143018f013401430608000300e00166016b01840143000301fc019b01de065a01c10143000301f60143011801c1016b018f015e0003016b01d605fc00030118018f01fc Tj" + "0.00 -8.80 Td" + "#hex:013401c1016b01d6016b01340118018400030166016b01d600030118015e0118016b018f01c901d6000301fc019b01de0003013301430134019b018d014301c9000301180003018f019b01c1018d01180184 Tj" + "0.00 -8.80 Td" + "#hex:0166016b01d60608 Tj" + "ET" + "1.10 w" + "54.72 767.52 m" + "197.28 767.52 l" + "209.52 755.28 l" + "209.52 540.72 l" + "197.28 528.48 l" + "54.72 528.48 l" + "42.48 540.72 l" + "42.48 755.28 l" + "s" + "1.00 w" + "0.50 w" + "56.16 756.36 m" + "102.96 756.36 l" + "S" + "149.04 756.36 m" + "195.84 756.36 l" + "S" + "0.60 w" + "109.44 759.10 m" + "112.18 756.36 l" + "109.44 753.62 l" + "106.70 756.36 l" + "h" + "f" + "117.72 759.10 m" + "120.46 756.36 l" + "117.72 753.62 l" + "114.98 756.36 l" + "h" + "S" + "126.00 759.10 m" + "128.74 756.36 l" + "126.00 753.62 l" + "123.26 756.36 l" + "h" + "S" + "134.28 759.10 m" + "137.02 756.36 l" + "134.28 753.62 l" + "131.54 756.36 l" + "h" + "S" + "142.56 759.10 m" + "145.30 756.36 l" + "142.56 753.62 l" + "139.82 756.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "72.00 535.32 m" + "119.88 535.32 l" + "S" + "132.12 535.32 m" + "180.00 535.32 l" + "S" + "126.00 537.62 m" + "128.30 535.32 l" + "126.00 533.02 l" + "123.70 535.32 l" + "h" + "S" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "56.16 740.88 Td" + "0.00 -14.30 Td" + "#hex:00a9019b01d6016b019b018f0003019b015d000300200184016b018d0133016b018f015e Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "50.40 702.00 Td" + "0.00 -8.25 Td" + "#hex:00a901d0020b01a001d001c404760003016901d001c201c201d001c4 Tj" + "ET" + "0.90 w" + "50.40 686.16 m" + "201.60 686.16 l" + "S" + "0.35 w" + "50.40 683.64 m" + "201.60 683.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "50.40 678.96 Td" + "0.00 -8.80 Td" + "#hex:00e001660143018f000301fc019b01de0003013b01c1016b018f0181000301d60166016b01c9000301be019b01d6016b019b018f05fc000301fc019b01de0003015e0118016b018f00030118 Tj" + "0.00 -8.80 Td" + "#hex:01340184016b018d0133016b018f015e000301c901be01430143013b0003014301c001de01180184000301d6019b000301fc019b01de01c1000301f6011801840181016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:01c901be01430143013b0003015d019b01c10003056a00030166019b01de01c106080003002701de01c1016b018f015e000301d60166016b01c9000301d6016b018d014305fc000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:0166011801f5014300030118013b01f50118018f01d60118015e01430003019b018f000300b401d601c10143018f015e01d6016600030628000401d601660184014301d6016b013401c90629 Tj" + "0.00 -8.80 Td" + "#hex:0134016601430134018101c9000301fc019b01de0003018d011801810143000301d6019b000301340184016b018d01330608000300c101660143000301be019b01d6016b019b018f0003016b01c9 Tj" + "0.00 -8.80 Td" + "#hex:01c9014301be011801c1011801d60143013b0003016b018f01d6019b0003013301c1019b01f6018f05fc000301c9016b018401f5014301c105fc00030118018f013b0003015e01c1011801fc Tj" + "0.00 -8.80 Td" + "#hex:0184011801fc014301c101c9000301c1014301c90143018d01330184016b018f015e000301330118018f013b01c90003019b015d000301c901d6019b018f01430608000300b4016601180181016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:01d60166014300030133019b01d601d6018401430003015d0118016b018401c9000301d6019b0003018d016b01fb000301d60166014300030134019b0184019b01c101c90608 Tj" + "ET" + "1.10 w" + "414.72 515.52 m" + "557.28 515.52 l" + "569.52 503.28 l" + "569.52 288.72 l" + "557.28 276.48 l" + "414.72 276.48 l" + "402.48 288.72 l" + "402.48 503.28 l" + "s" + "1.00 w" + "0.50 w" + "416.16 504.36 m" + "462.96 504.36 l" + "S" + "509.04 504.36 m" + "555.84 504.36 l" + "S" + "0.60 w" + "469.44 507.10 m" + "472.18 504.36 l" + "469.44 501.62 l" + "466.70 504.36 l" + "h" + "S" + "477.72 507.10 m" + "480.46 504.36 l" + "477.72 501.62 l" + "474.98 504.36 l" + "h" + "S" + "486.00 507.10 m" + "488.74 504.36 l" + "486.00 501.62 l" + "483.26 504.36 l" + "h" + "S" + "494.28 507.10 m" + "497.02 504.36 l" + "494.28 501.62 l" + "491.54 504.36 l" + "h" + "S" + "502.56 507.10 m" + "505.30 504.36 l" + "502.56 501.62 l" + "499.82 504.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "432.00 283.32 m" + "479.88 283.32 l" + "S" + "492.12 283.32 m" + "540.00 283.32 l" + "S" + "486.00 285.62 m" + "488.30 283.32 l" + "486.00 281.02 l" + "483.70 283.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "547.20 451.08 m" + "553.32 451.08 l" + "555.84 448.56 l" + "555.84 443.16 l" + "553.32 440.64 l" + "547.20 440.64 l" + "544.68 443.16 l" + "544.68 448.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "547.73 443.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "416.16 488.88 Td" + "0.00 -14.30 Td" + "#hex:001f0143018401d60003019b015d0003002701f6011801c101f50143018f0181016b018f013b Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "410.40 450.00 Td" + "0.00 -8.25 Td" + "#hex:00e001d001c4017001f601d0021301fe000301a0020b017801c20476000301f6014d01f601a0020b02310003022a014d01f601a0017801fe Tj" + "ET" + "0.90 w" + "410.40 434.16 m" + "561.60 434.16 l" + "S" + "0.35 w" + "410.40 431.64 m" + "561.60 431.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "410.40 426.96 Td" + "0.00 -8.80 Td" + "#hex:00e00166016b01840143000301f60143011801c1016b018f015e000301d60166016b01c9000301330143018401d605fc000301fc019b01de0003015e0118016b018f000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:015d019b01840184019b01f6016b018f015e000301330143018f0143025b01d601c905fb000305f8000300e6019b01de01c100030020019b018f01c901d6016b01d601de01d6016b019b018f Tj" + "0.00 -8.80 Td" + "#hex:01c90134019b01c101430003016b018f013401c10143011801c9014301c90003013301fc0003056b05fc000301d6019b000301180003018d011801fb016b018d01de018d0003019b015d0003056b05690608000305f8 Tj" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f5014300030118013b01f50118018f01d60118015e01430003019b018f000300200166011801c1016b01c9018d0118 Tj" + "0.00 -8.80 Td" + "#hex:062800a9014301c101c901de011801c9016b019b018f062900030134016601430134018101c90003018d0118013b0143000301d6019b0003016b018f01d6014301c10118013401d6000301f6016b01d60166 Tj" + "0.00 -8.80 Td" + "#hex:013b01f6011801c101f5014301c9060800030058018f00030118013b013b016b01d6016b019b018f05fc000301f60166016b018401430003011801d601d601de018f0143013b000301d6019b000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01330143018401d605fc000301fc019b01de00030166011801f50143000301180003056e0569000301be014301c101340143018f01d60003013401660118018f01340143000301430118013401660003013b011801fc Tj" + "0.00 -8.80 Td" + "#hex:011801d60003013b011801f6018f0003019b015d0003015e01c1019b01f6016b018f015e000301180003015d01de01840184000301330143011801c1013b0003016b015d000301fc019b01de065a01c10143 Tj" + "0.00 -8.80 Td" + "#hex:0134011801be01180133018401430003019b015d0003015e01c1019b01f6016b018f015e0003019b018f014305fc0003019b01c100030118000301f5016b01c9016b0133018401fc000301d60166016b01340181014301c1 Tj" + "0.00 -8.80 Td" + "#hex:01330143011801c1013b0003016b015d000301fc019b01de00030118018401c101430118013b01fc00030166011801f501430003019b018f0143060800030058015d000301fc019b01de0003011801c10143018f065a01d6 Tj" + "0.00 -8.80 Td" + "#hex:01180003013b01f6011801c1015d05fc000301fc019b01de0003015e0118016b018f000301d6016601430003015d019b01840184019b01f6016b018f015e00030118013b013b016b01d6016b019b018f01180184 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "457.72 305.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "BT" + "/F1 6.20 Tf" + "460.52 320.40 Td" + "#hex:016901d001c4020b01a001c4021301780170000301d001c40003020b019b017800030168014d016901b6 Tj" + "ET" + "1.10 w" + "234.72 515.52 m" + "377.28 515.52 l" + "389.52 503.28 l" + "389.52 288.72 l" + "377.28 276.48 l" + "234.72 276.48 l" + "222.48 288.72 l" + "222.48 503.28 l" + "s" + "0.45 w" + "234.72 512.50 m" + "377.28 512.50 l" + "386.50 503.28 l" + "386.50 288.72 l" + "377.28 279.50 l" + "234.72 279.50 l" + "225.50 288.72 l" + "225.50 503.28 l" + "s" + "0.90 w" + "243.72 508.68 m" + "229.32 508.68 l" + "229.32 494.28 l" + "S" + "368.28 508.68 m" + "382.68 508.68 l" + "382.68 494.28 l" + "S" + "243.72 283.32 m" + "229.32 283.32 l" + "229.32 297.72 l" + "S" + "368.28 283.32 m" + "382.68 283.32 l" + "382.68 297.72 l" + "S" + "0.90 w" + "241.56 504.36 m" + "233.64 504.36 l" + "233.64 496.44 l" + "S" + "370.44 504.36 m" + "378.36 504.36 l" + "378.36 496.44 l" + "S" + "241.56 287.64 m" + "233.64 287.64 l" + "233.64 295.56 l" + "S" + "370.44 287.64 m" + "378.36 287.64 l" + "378.36 295.56 l" + "S" + "1.00 w" + "0.50 w" + "236.16 504.36 m" + "282.96 504.36 l" + "S" + "329.04 504.36 m" + "375.84 504.36 l" + "S" + "0.60 w" + "289.44 507.10 m" + "292.18 504.36 l" + "289.44 501.62 l" + "286.70 504.36 l" + "h" + "f" + "297.72 507.10 m" + "300.46 504.36 l" + "297.72 501.62 l" + "294.98 504.36 l" + "h" + "f" + "306.00 507.10 m" + "308.74 504.36 l" + "306.00 501.62 l" + "303.26 504.36 l" + "h" + "f" + "314.28 507.10 m" + "317.02 504.36 l" + "314.28 501.62 l" + "311.54 504.36 l" + "h" + "f" + "322.56 507.10 m" + "325.30 504.36 l" + "322.56 501.62 l" + "319.82 504.36 l" + "h" + "f" + "1.00 w" + "0.50 w" + "252.00 283.32 m" + "299.88 283.32 l" + "S" + "312.12 283.32 m" + "360.00 283.32 l" + "S" + "306.00 285.62 m" + "308.30 283.32 l" + "306.00 281.02 l" + "303.70 283.32 l" + "h" + "S" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "236.16 488.88 Td" + "0.00 -14.30 Td" + "#hex:000401be01be011801c1011801d601de01c90003019b015d000301d6016601430003002001c101180133 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "230.40 450.00 Td" + "0.00 -8.25 Td" + "#hex:00e001d001c4017001f601d0021301fe000301a0020b017801c20476000301b901780193017801c40170014d01f60231 Tj" + "ET" + "0.90 w" + "230.40 434.16 m" + "381.60 434.16 l" + "S" + "0.35 w" + "230.40 431.64 m" + "381.60 431.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "230.40 426.96 Td" + "0.00 -8.80 Td" + "#hex:00c10166016b01c90003016b01d60143018d0003025b01c101c901d60003011801be01be0143011801c101c9000301d6019b000301330143000301180003006e011801c1015e0143000301c90143011801840143013b Tj" + "0.00 -8.80 Td" + "#hex:016b01c1019b018f00030133011801c101c101430184000301f60143016b015e0166016b018f015e0003056e05690569000301be019b01de018f013b01c90608000300c101660143 Tj" + "0.00 -8.80 Td" + "#hex:0133011801c101c10143018400030166011801c90003011800030166016b013b013b0143018f00030134011801d60134016605fc000301f60166016b01340166000301340118018f000301330143 Tj" + "0.00 -8.80 Td" + "#hex:015d019b01de018f013b000301f6016b01d6016600030118000301c901de01340134014301c901c9015d01de01840003002700200003056b056900030058018f01d6014301840184016b015e0143018f01340143 Tj" + "0.00 -8.80 Td" + "#hex:06280058018f01f5014301c901d6016b015e011801d6016b019b018f06290003013401660143013401810608000300ac014301840143011801c9016b018f015e000301d60166014300030134011801d601340166 Tj" + "0.00 -8.80 Td" + "#hex:01de018f0184019b0134018101c90003011800030166011801d6013401660003011801d60003019b018f014300030143018f013b0003019b015d000301d60166014300030133011801c101c10143018405fc Tj" + "0.00 -8.80 Td" + "#hex:011801840184019b01f6016b018f015e000301d601f6019b000300780143013b016b01de018d0003019b01c1000301c9018d011801840184014301c10003013401c10143011801d601de01c1014301c9 Tj" + "0.00 -8.80 Td" + "#hex:01d6019b0003013401c1011801f601840003016b018f01c9016b013b01430608000300c10143018f00030184014301f5014301c101c90003011801c10143000301c9014301d60003016b018f00030118000301c1019b01f6 Tj" + "0.00 -8.80 Td" + "#hex:011801d6000301d6016601430003015d011801c100030143018f013b05fc000301430118013401660003016b018f000301180003018f014301de01d601c101180184000301be019b01c9016b01d6016b019b018f05fc Tj" + "0.00 -8.80 Td" + "#hex:0118013301840143000301d6019b0003018d019b01f5014300030143016b01d60166014301c1000301de01be0003019b01c10003013b019b01f6018f0608000300e001660143018f Tj" + "0.00 -8.80 Td" + "#hex:0134014301c101d60118016b018f00030184014301f5014301c101c90003011801c10143000301de01c90143013b05fc000301d6016601430003011801be01be011801c1011801d601de01c9 Tj" + "0.00 -8.80 Td" + "#hex:01d601c10118018f01c9015d019b01c1018d01c9000301d6019b000301c1014301c90143018d013301840143000301180003015e016b0118018f01d600030184019b013301c901d6014301c10608000300c101660143 Tj" + "0.00 -8.80 Td" + "#hex:011801be01be011801c1011801d601de01c90003019b015d000301d6016601430003002001c1011801330003016b01c9000301180003006e011801c1015e01430003019b0133017d0143013401d6000301f6016b01d60166 Tj" + "0.00 -8.80 Td" + "#hex:01d6016601430003015d019b01840184019b01f6016b018f015e000301c901d6011801d6016b01c901d6016b013401c905fb0003000401c1018d019b01c1000300200184011801c901c905fb0003056b0569 Tj" + "ET" + "BT" + "/F1 6.20 Tf" + "280.52 291.60 Td" + "#hex:016901d001c4020b01a001c4021301780170000301d001c40003020b019b017800030168014d016901b6 Tj" + "ET" + "1.10 w" + "54.72 515.52 m" + "197.28 515.52 l" + "209.52 503.28 l" + "209.52 288.72 l" + "197.28 276.48 l" + "54.72 276.48 l" + "42.48 288.72 l" + "42.48 503.28 l" + "s" + "0.45 w" + "54.72 512.50 m" + "197.28 512.50 l" + "206.50 503.28 l" + "206.50 288.72 l" + "197.28 279.50 l" + "54.72 279.50 l" + "45.50 288.72 l" + "45.50 503.28 l" + "s" + "0.90 w" + "63.72 508.68 m" + "49.32 508.68 l" + "49.32 494.28 l" + "S" + "188.28 508.68 m" + "202.68 508.68 l" + "202.68 494.28 l" + "S" + "63.72 283.32 m" + "49.32 283.32 l" + "49.32 297.72 l" + "S" + "188.28 283.32 m" + "202.68 283.32 l" + "202.68 297.72 l" + "S" + "1.00 w" + "0.50 w" + "56.16 504.36 m" + "102.96 504.36 l" + "S" + "149.04 504.36 m" + "195.84 504.36 l" + "S" + "0.60 w" + "109.44 507.10 m" + "112.18 504.36 l" + "109.44 501.62 l" + "106.70 504.36 l" + "h" + "f" + "117.72 507.10 m" + "120.46 504.36 l" + "117.72 501.62 l" + "114.98 504.36 l" + "h" + "f" + "126.00 507.10 m" + "128.74 504.36 l" + "126.00 501.62 l" + "123.26 504.36 l" + "h" + "f" + "134.28 507.10 m" + "137.02 504.36 l" + "134.28 501.62 l" + "131.54 504.36 l" + "h" + "f" + "142.56 507.10 m" + "145.30 504.36 l" + "142.56 501.62 l" + "139.82 504.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "72.00 283.32 m" + "119.88 283.32 l" + "S" + "132.12 283.32 m" + "180.00 283.32 l" + "S" + "126.00 285.62 m" + "128.30 283.32 l" + "126.00 281.02 l" + "123.70 283.32 l" + "h" + "S" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "56.16 488.88 Td" + "0.00 -14.30 Td" + "#hex:000401c101c1019b01f6000306af056c Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "50.40 450.00 Td" + "0.00 -8.25 Td" + "#hex:00e00178014d01f301d001c404760003022a017801f60231000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "50.40 434.16 m" + "201.60 434.16 l" + "S" + "0.35 w" + "50.40 431.64 m" + "201.60 431.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "50.40 426.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f5014300030118000306af056c00030133019b018f01de01c9000301d6019b0003011801d601d601180134018100030118018f013b0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01c1019b0184018401c90003018d0118013b0143000301f6016b01d60166000301d60166016b01c9000301be016b0143013401430003019b015d0003018d0118015e016b0134 Tj" + "0.00 -8.80 Td" + "#hex:0118018d018d01de018f016b01d6016b019b018f0608000300c10166014300030133019b018f01de01c90003016b01c90003013b014301d6014301c1018d016b018f0143013b0003013301fc Tj" + "0.00 -8.80 Td" + "#hex:01d601660143000301c1011801c1016b01d601fc0003019b015d000301d60166014300030118018d018d01de018f016b01d6016b019b018f060800030086018f013401430003016b01d600030166016b01d601c900030118 Tj" + "0.00 -8.80 Td" + "#hex:01d6011801c1015e014301d605fc000301d60166014300030118018d018d01de018f016b01d6016b019b018f0003016b01c90003018f019b00030184019b018f015e014301c1 Tj" + "0.00 -8.80 Td" + "#hex:018d0118015e016b0134011801840608 Tj" + "ET" + "1.10 w" + "414.72 263.52 m" + "557.28 263.52 l" + "569.52 251.28 l" + "569.52 36.72 l" + "557.28 24.48 l" + "414.72 24.48 l" + "402.48 36.72 l" + "402.48 251.28 l" + "s" + "0.45 w" + "414.72 260.50 m" + "557.28 260.50 l" + "566.50 251.28 l" + "566.50 36.72 l" + "557.28 27.50 l" + "414.72 27.50 l" + "405.50 36.72 l" + "405.50 251.28 l" + "s" + "0.90 w" + "423.72 256.68 m" + "409.32 256.68 l" + "409.32 242.28 l" + "S" + "548.28 256.68 m" + "562.68 256.68 l" + "562.68 242.28 l" + "S" + "423.72 31.32 m" + "409.32 31.32 l" + "409.32 45.72 l" + "S" + "548.28 31.32 m" + "562.68 31.32 l" + "562.68 45.72 l" + "S" + "1.00 w" + "0.50 w" + "416.16 252.36 m" + "462.96 252.36 l" + "S" + "509.04 252.36 m" + "555.84 252.36 l" + "S" + "0.60 w" + "469.44 255.10 m" + "472.18 252.36 l" + "469.44 249.62 l" + "466.70 252.36 l" + "h" + "f" + "477.72 255.10 m" + "480.46 252.36 l" + "477.72 249.62 l" + "474.98 252.36 l" + "h" + "f" + "486.00 255.10 m" + "488.74 252.36 l" + "486.00 249.62 l" + "483.26 252.36 l" + "h" + "f" + "494.28 255.10 m" + "497.02 252.36 l" + "494.28 249.62 l" + "491.54 252.36 l" + "h" + "f" + "502.56 255.10 m" + "505.30 252.36 l" + "502.56 249.62 l" + "499.82 252.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "432.00 31.32 m" + "479.88 31.32 l" + "S" + "492.12 31.32 m" + "540.00 31.32 l" + "S" + "486.00 33.62 m" + "488.30 31.32 l" + "486.00 29.02 l" + "483.70 31.32 l" + "h" + "S" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 12.00 Tf" + "416.16 246.96 Td" + "0.00 -13.20 Td" + "#hex:00c1019b018d01430003019b015d0003006e01430118013b014301c101c90166016b01be00030118018f013b Tj" + "0.00 -13.20 Td" + "#hex:0058018f025d01de0143018f013401430003062801c101430118013b000301f6016b01d60166 Tj" + "0.00 -13.20 Td" + "#hex:018d019b013b016b025b014301c101c90629 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "410.40 198.00 Td" + "0.00 -8.25 Td" + "#hex:00e001d001c4017001f601d0021301fe000301a0020b017801c204760003022a017801f60231000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "410.40 182.16 m" + "561.60 182.16 l" + "S" + "0.35 w" + "410.40 179.64 m" + "561.60 179.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "410.40 174.96 Td" + "0.00 -8.80 Td" + "#hex:00c10166016b01c900030133019b019b018100030134019b018f01d60118016b018f01c90003015e01de016b013b01430184016b018f014301c90003015d019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:016b018f025d01de0143018f0134016b018f015e00030118018f013b000301340166011801c1018d016b018f015e0003019b01d60166014301c101c905fc00030118018f013b0003016b01d601c9 Tj" + "0.00 -8.80 Td" + "#hex:01f6019b01c1013b01c90003011801c10143000301340166011801c1015e0143013b000301f6016b01d601660003018d0118015e016b0134060800030058015d000301fc019b01de000301c901be0143018f013b Tj" + "0.00 -8.80 Td" + "#hex:056d057100030166019b01de01c101c90003019b01f5014301c100030118000301be014301c1016b019b013b0003019b015d0003056f0003013b011801fc01c90003019b01c10003015d014301f6014301c1 Tj" + "0.00 -8.80 Td" + "#hex:01c901d601de013b01fc016b018f015e000301d60166014300030133019b019b0181065a01c900030134019b018f01d60143018f01d601c900030118018f013b Tj" + "0.00 -8.80 Td" + "#hex:01be01c10118013401d6016b0134016b018f015e0003016b01d601c90003015e01de016b013b01430184016b018f014301c905fc000301fc019b01de01c1000300200166011801c1016b01c9018d0118 Tj" + "0.00 -8.80 Td" + "#hex:01c90134019b01c101430003016b018f013401c10143011801c9014301c90003013301fc0003056b05fc0003011801c90003013b019b014301c9000301fc019b01de01c1 Tj" + "0.00 -8.80 Td" + "#hex:018d011801fb016b018d01de018d0003015d019b01c1000301d60166011801d6000301c90134019b01c101430608000300c1016601430003018d0118018f01de01180184000301d601660143018f Tj" + "0.00 -8.80 Td" + "#hex:0184019b01c9014301c90003016b01d601c90003018d0118015e016b013405fc0003013301de01d6000301c10143015e0118016b018f01c90003016b01d60003016b018f00030118000301340143018f01d601de01c101fc0608 Tj" + "ET" + "1.10 w" + "234.72 263.52 m" + "377.28 263.52 l" + "389.52 251.28 l" + "389.52 36.72 l" + "377.28 24.48 l" + "234.72 24.48 l" + "222.48 36.72 l" + "222.48 251.28 l" + "s" + "0.45 w" + "234.72 260.50 m" + "377.28 260.50 l" + "386.50 251.28 l" + "386.50 36.72 l" + "377.28 27.50 l" + "234.72 27.50 l" + "225.50 36.72 l" + "225.50 251.28 l" + "s" + "1.00 w" + "0.50 w" + "236.16 252.36 m" + "282.96 252.36 l" + "S" + "329.04 252.36 m" + "375.84 252.36 l" + "S" + "0.60 w" + "289.44 255.10 m" + "292.18 252.36 l" + "289.44 249.62 l" + "286.70 252.36 l" + "h" + "f" + "297.72 255.10 m" + "300.46 252.36 l" + "297.72 249.62 l" + "294.98 252.36 l" + "h" + "f" + "306.00 255.10 m" + "308.74 252.36 l" + "306.00 249.62 l" + "303.26 252.36 l" + "h" + "S" + "314.28 255.10 m" + "317.02 252.36 l" + "314.28 249.62 l" + "311.54 252.36 l" + "h" + "S" + "322.56 255.10 m" + "325.30 252.36 l" + "322.56 249.62 l" + "319.82 252.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "252.00 31.32 m" + "299.88 31.32 l" + "S" + "312.12 31.32 m" + "360.00 31.32 l" + "S" + "306.00 33.62 m" + "308.30 31.32 l" + "306.00 29.02 l" + "303.70 31.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "367.20 199.08 m" + "373.32 199.08 l" + "375.84 196.56 l" + "375.84 191.16 l" + "373.32 188.64 l" + "367.20 188.64 l" + "364.68 191.16 l" + "364.68 196.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "367.73 191.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "236.16 236.88 Td" + "0.00 -14.30 Td" + "#hex:003101fc014301c90003019b015d000300200166011801c1018d016b018f015e Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "230.40 198.00 Td" + "0.00 -8.25 Td" + "#hex:00e001d001c4017001f601d0021301fe000301a0020b017801c204760003021301c4016901d001c201c201d001c4 Tj" + "ET" + "0.90 w" + "230.40 182.16 m" + "381.60 182.16 l" + "S" + "0.35 w" + "230.40 179.64 m" + "381.60 179.64 l" + "S" + "1.00 w" + "0.80 w" + "BT" + "/F5 5.50 Tf" + "292.40 169.92 Td" + "\"CHARGES\" Tj" + "ET" + "299.30 158.40 m" + "299.30 160.47 297.63 162.14 295.56 162.14 c" + "293.49 162.14 291.82 160.47 291.82 158.40 c" + "291.82 156.33 293.49 154.66 295.56 154.66 c" + "297.63 154.66 299.30 156.33 299.30 158.40 c" + "s" + "309.74 158.40 m" + "309.74 160.47 308.07 162.14 306.00 162.14 c" + "303.93 162.14 302.26 160.47 302.26 158.40 c" + "302.26 156.33 303.93 154.66 306.00 154.66 c" + "308.07 154.66 309.74 156.33 309.74 158.40 c" + "s" + "320.18 158.40 m" + "320.18 160.47 318.51 162.14 316.44 162.14 c" + "314.37 162.14 312.70 160.47 312.70 158.40 c" + "312.70 156.33 314.37 154.66 316.44 154.66 c" + "318.51 154.66 320.18 156.33 320.18 158.40 c" + "s" + "1.00 w" + "0.35 w" + "230.40 146.88 m" + "381.60 146.88 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "230.40 141.12 Td" + "0.00 -8.80 Td" + "#hex:00c10166014301c901430003013401c101fc01c901d601180184000301840143018f01c9014301c90003025b01d60003019b01f5014301c1000301d6016601430003014301fc014301c90608000300c10166014301fc Tj" + "0.00 -8.80 Td" + "#hex:0166011801f501430003056c000301340166011801c1015e014301c90608000300e00166016b01840143000301f60143011801c1016b018f015e000301d601660143018d05fc000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:01340118018f0003014301fb01be0143018f013b0003056a000301340166011801c1015e01430003011801c900030118018f00030118013401d6016b019b018f000301d6019b00030134011801c901d6000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01340166011801c1018d000301be014301c101c9019b018f000301c901be0143018401840003062801c9011801f501430003002700200003056a056c06290003019b018f00030118 Tj" + "0.00 -8.80 Td" + "#hex:016601de018d0118018f019b016b013b000301f6016b01d60166016b018f0003056c05690003015d0143014301d60003019b015d000301fc019b01de05fc000301be01c1019b01f5016b013b0143013b Tj" + "0.00 -8.80 Td" + "#hex:01d60166011801d6000301fc019b01de00030118018f013b000301d601660143000301d6011801c1015e014301d6000301340118018f000301c901430143000301430118013401660003019b01d60166014301c10608 Tj" + "0.00 -8.80 Td" + "#hex:00c101660143000301840143018f01c9014301c9000301c10143015e0118016b018f00030118018401840003014301fb01be0143018f013b0143013b000301340166011801c1015e014301c9 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "277.72 53.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "BT" + "/F1 6.20 Tf" + "280.52 68.40 Td" + "#hex:016901d001c4020b01a001c4021301780170000301d001c40003020b019b017800030168014d016901b6 Tj" + "ET" + "1.10 w" + "54.72 263.52 m" + "197.28 263.52 l" + "209.52 251.28 l" + "209.52 36.72 l" + "197.28 24.48 l" + "54.72 24.48 l" + "42.48 36.72 l" + "42.48 251.28 l" + "s" + "0.45 w" + "54.72 260.50 m" + "197.28 260.50 l" + "206.50 251.28 l" + "206.50 36.72 l" + "197.28 27.50 l" + "54.72 27.50 l" + "45.50 36.72 l" + "45.50 251.28 l" + "s" + "0.90 w" + "57.96 256.68 m" + "49.32 256.68 l" + "49.32 248.04 l" + "S" + "194.04 256.68 m" + "202.68 256.68 l" + "202.68 248.04 l" + "S" + "57.96 31.32 m" + "49.32 31.32 l" + "49.32 39.96 l" + "S" + "194.04 31.32 m" + "202.68 31.32 l" + "202.68 39.96 l" + "S" + "1.00 w" + "0.50 w" + "56.16 252.36 m" + "102.96 252.36 l" + "S" + "149.04 252.36 m" + "195.84 252.36 l" + "S" + "0.60 w" + "109.44 255.10 m" + "112.18 252.36 l" + "109.44 249.62 l" + "106.70 252.36 l" + "h" + "f" + "117.72 255.10 m" + "120.46 252.36 l" + "117.72 249.62 l" + "114.98 252.36 l" + "h" + "f" + "126.00 255.10 m" + "128.74 252.36 l" + "126.00 249.62 l" + "123.26 252.36 l" + "h" + "f" + "134.28 255.10 m" + "137.02 252.36 l" + "134.28 249.62 l" + "131.54 252.36 l" + "h" + "S" + "142.56 255.10 m" + "145.30 252.36 l" + "142.56 249.62 l" + "139.82 252.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "72.00 31.32 m" + "119.88 31.32 l" + "S" + "132.12 31.32 m" + "180.00 31.32 l" + "S" + "126.00 33.62 m" + "128.30 31.32 l" + "126.00 29.02 l" + "123.70 31.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "187.20 199.08 m" + "193.32 199.08 l" + "195.84 196.56 l" + "195.84 191.16 l" + "193.32 188.64 l" + "187.20 188.64 l" + "184.68 191.16 l" + "184.68 196.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "187.73 191.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "56.16 236.88 Td" + "0.00 -14.30 Td" + "#hex:002001de013301430003019b015d0003004a019b01c101340143 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "50.40 198.00 Td" + "0.00 -8.25 Td" + "#hex:00e001d001c4017001f601d0021301fe000301a0020b017801c20476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "50.40 182.16 m" + "201.60 182.16 l" + "S" + "0.35 w" + "50.40 179.64 m" + "201.60 179.64 l" + "S" + "1.00 w" + "0.80 w" + "BT" + "/F5 5.50 Tf" + "112.40 169.92 Td" + "\"CHARGES\" Tj" + "ET" + "96.04 158.40 m" + "140.68 158.40 l" + "S" + "BT" + "/F5 7.00 Tf" + "144.28 159.48 Td" + "\"/ 36\" Tj" + "ET" + "1.00 w" + "0.35 w" + "50.40 146.88 m" + "201.60 146.88 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "50.40 141.12 Td" + "0.00 -8.80 Td" + "#hex:00c10166016b01c90003013401de013301430003016b01c9000301180133019b01de01d600030118018f0003016b018f0134016600030118013401c1019b01c901c90608000300310118013401660003015d011801340143 Tj" + "0.00 -8.80 Td" + "#hex:0166011801c9000301180003013b016b01c901d6016b018f013401d60003018d011801c10181016b018f015e0003019b018f0003016b01d6000301d60166011801d6000301340118018f000301330143 Tj" + "0.00 -8.80 Td" + "#hex:01be01c1014301c901c90143013b0608000300c1016601430003013401de01330143000301c901d6011801c101d601c9000301f6016b01d601660003056c056f000301340166011801c1015e014301c905fc Tj" + "0.00 -8.80 Td" + "#hex:0118018f013b0003016b01d6000301c10143015e0118016b018f01c90003056a013b056b05690003014301fb01be0143018f013b0143013b000301340166011801c1015e014301c90003013b0118016b018401fc Tj" + "0.00 -8.80 Td" + "#hex:011801d60003013b011801f6018f0608000300e6019b01de000301340118018f000301de01c9014300030118018f00030118013401d6016b019b018f000301d6019b000301be01c1014301c901c90003019b018f0143 Tj" + "0.00 -8.80 Td" + "#hex:019b015d000301d6016601430003013401de01330143065a01c90003015d01180134014301c905fc0003014301fb01be0143018f013b016b018f015e000301180003018f01de018d0133014301c10003019b015d Tj" + "0.00 -8.80 Td" + "#hex:01340166011801c1015e014301c900030133011801c90143013b0003019b018f000301d601660143000301340166019b01c90143018f0003015d01180134014305fc0003011801c9000301c90166019b01f6018f Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "97.72 53.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "BT" + "/F1 6.20 Tf" + "100.52 68.40 Td" + "#hex:016901d001c4020b01a001c4021301780170000301d001c40003020b019b017800030168014d016901b6 Tj" + "ET"] + ["0.88 0.88 0.88 RG" + "36.00 18.00 m" + "36.00 774.00 l" + "S" + "216.00 18.00 m" + "216.00 774.00 l" + "S" + "396.00 18.00 m" + "396.00 774.00 l" + "S" + "576.00 18.00 m" + "576.00 774.00 l" + "S" + "36.00 18.00 m" + "576.00 18.00 l" + "S" + "36.00 270.00 m" + "576.00 270.00 l" + "S" + "36.00 522.00 m" + "576.00 522.00 l" + "S" + "36.00 774.00 m" + "576.00 774.00 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 781.20 Td" + "#hex:00a9014d01930178000303fa Tj" + "ET" + "1.10 w" + "414.72 767.52 m" + "557.28 767.52 l" + "569.52 755.28 l" + "569.52 540.72 l" + "557.28 528.48 l" + "414.72 528.48 l" + "402.48 540.72 l" + "402.48 755.28 l" + "s" + "0.45 w" + "414.72 764.50 m" + "557.28 764.50 l" + "566.50 755.28 l" + "566.50 540.72 l" + "557.28 531.50 l" + "414.72 531.50 l" + "405.50 540.72 l" + "405.50 755.28 l" + "s" + "0.90 w" + "417.96 760.68 m" + "409.32 760.68 l" + "409.32 752.04 l" + "S" + "554.04 760.68 m" + "562.68 760.68 l" + "562.68 752.04 l" + "S" + "417.96 535.32 m" + "409.32 535.32 l" + "409.32 543.96 l" + "S" + "554.04 535.32 m" + "562.68 535.32 l" + "562.68 543.96 l" + "S" + "1.00 w" + "0.50 w" + "416.16 756.36 m" + "462.96 756.36 l" + "S" + "509.04 756.36 m" + "555.84 756.36 l" + "S" + "0.60 w" + "469.44 759.10 m" + "472.18 756.36 l" + "469.44 753.62 l" + "466.70 756.36 l" + "h" + "f" + "477.72 759.10 m" + "480.46 756.36 l" + "477.72 753.62 l" + "474.98 756.36 l" + "h" + "f" + "486.00 759.10 m" + "488.74 756.36 l" + "486.00 753.62 l" + "483.26 756.36 l" + "h" + "f" + "494.28 759.10 m" + "497.02 756.36 l" + "494.28 753.62 l" + "491.54 756.36 l" + "h" + "S" + "502.56 759.10 m" + "505.30 756.36 l" + "502.56 753.62 l" + "499.82 756.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "432.00 535.32 m" + "479.88 535.32 l" + "S" + "492.12 535.32 m" + "540.00 535.32 l" + "S" + "486.00 537.62 m" + "488.30 535.32 l" + "486.00 533.02 l" + "483.70 535.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "547.20 703.08 m" + "553.32 703.08 l" + "555.84 700.56 l" + "555.84 695.16 l" + "553.32 692.64 l" + "547.20 692.64 l" + "544.68 695.16 l" + "544.68 700.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "547.73 695.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "416.16 748.08 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc000300a90118013b013b0143013b Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "410.40 702.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "410.40 686.16 m" + "561.60 686.16 l" + "S" + "0.35 w" + "410.40 683.64 m" + "561.60 683.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "410.40 678.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "457.72 557.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "234.72 767.52 m" + "377.28 767.52 l" + "389.52 755.28 l" + "389.52 540.72 l" + "377.28 528.48 l" + "234.72 528.48 l" + "222.48 540.72 l" + "222.48 755.28 l" + "s" + "0.45 w" + "234.72 764.50 m" + "377.28 764.50 l" + "386.50 755.28 l" + "386.50 540.72 l" + "377.28 531.50 l" + "234.72 531.50 l" + "225.50 540.72 l" + "225.50 755.28 l" + "s" + "1.00 w" + "0.50 w" + "236.16 756.36 m" + "282.96 756.36 l" + "S" + "329.04 756.36 m" + "375.84 756.36 l" + "S" + "0.60 w" + "289.44 759.10 m" + "292.18 756.36 l" + "289.44 753.62 l" + "286.70 756.36 l" + "h" + "f" + "297.72 759.10 m" + "300.46 756.36 l" + "297.72 753.62 l" + "294.98 756.36 l" + "h" + "f" + "306.00 759.10 m" + "308.74 756.36 l" + "306.00 753.62 l" + "303.26 756.36 l" + "h" + "S" + "314.28 759.10 m" + "317.02 756.36 l" + "314.28 753.62 l" + "311.54 756.36 l" + "h" + "S" + "322.56 759.10 m" + "325.30 756.36 l" + "322.56 753.62 l" + "319.82 756.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "252.00 535.32 m" + "299.88 535.32 l" + "S" + "312.12 535.32 m" + "360.00 535.32 l" + "S" + "306.00 537.62 m" + "308.30 535.32 l" + "306.00 533.02 l" + "303.70 535.32 l" + "h" + "S" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "236.16 748.08 Td" + "0.00 -14.30 Td" + "#hex:0004013b0118018d0118018f01d6016b018f01430003000401c1018d019b01c105fc Tj" + "0.00 -14.30 Td" + "#hex:002001660118016b018f000300b40166016b01c101d6 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "230.40 702.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f604760003021301c4016901d001c201c201d001c4 Tj" + "ET" + "0.90 w" + "230.40 686.16 m" + "381.60 686.16 l" + "S" + "0.35 w" + "230.40 683.64 m" + "381.60 683.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "230.40 678.96 Td" + "0.00 -8.80 Td" + "#hex:00c10166016b01c9000301c901de016b01d60003019b015d0003011801c1018d019b01c10003016b01c9000301c10143016b018f015d019b01c101340143013b000301f6016b01d60166 Tj" + "0.00 -8.80 Td" + "#hex:0118013b0118018d0118018f01d6016b018f014305fc0003019b018f01430003019b015d000301d60166014300030166011801c1013b014301c901d6000301c901de013301c901d60118018f0134014301c9 Tj" + "0.00 -8.80 Td" + "#hex:016b018f0003014301fb016b01c901d60143018f013401430608000300e00166016b01840143000301fc019b01de065a01c10143000301f60143011801c1016b018f015e0003016b01d605fc00030118018f01fc Tj" + "0.00 -8.80 Td" + "#hex:013401c1016b01d6016b01340118018400030166016b01d600030118015e0118016b018f01c901d6000301fc019b01de0003013301430134019b018d014301c9000301180003018f019b01c1018d01180184 Tj" + "0.00 -8.80 Td" + "#hex:0166016b01d60608 Tj" + "ET" + "1.10 w" + "54.72 767.52 m" + "197.28 767.52 l" + "209.52 755.28 l" + "209.52 540.72 l" + "197.28 528.48 l" + "54.72 528.48 l" + "42.48 540.72 l" + "42.48 755.28 l" + "s" + "1.00 w" + "0.50 w" + "56.16 756.36 m" + "102.96 756.36 l" + "S" + "149.04 756.36 m" + "195.84 756.36 l" + "S" + "0.60 w" + "109.44 759.10 m" + "112.18 756.36 l" + "109.44 753.62 l" + "106.70 756.36 l" + "h" + "f" + "117.72 759.10 m" + "120.46 756.36 l" + "117.72 753.62 l" + "114.98 756.36 l" + "h" + "S" + "126.00 759.10 m" + "128.74 756.36 l" + "126.00 753.62 l" + "123.26 756.36 l" + "h" + "S" + "134.28 759.10 m" + "137.02 756.36 l" + "134.28 753.62 l" + "131.54 756.36 l" + "h" + "S" + "142.56 759.10 m" + "145.30 756.36 l" + "142.56 753.62 l" + "139.82 756.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "72.00 535.32 m" + "119.88 535.32 l" + "S" + "132.12 535.32 m" + "180.00 535.32 l" + "S" + "126.00 537.62 m" + "128.30 535.32 l" + "126.00 533.02 l" + "123.70 535.32 l" + "h" + "S" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "56.16 740.88 Td" + "0.00 -14.30 Td" + "#hex:00a9019b01d6016b019b018f0003019b015d000300200184016b018d0133016b018f015e Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "50.40 702.00 Td" + "0.00 -8.25 Td" + "#hex:00a901d0020b01a001d001c404760003016901d001c201c201d001c4 Tj" + "ET" + "0.90 w" + "50.40 686.16 m" + "201.60 686.16 l" + "S" + "0.35 w" + "50.40 683.64 m" + "201.60 683.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "50.40 678.96 Td" + "0.00 -8.80 Td" + "#hex:00e001660143018f000301fc019b01de0003013b01c1016b018f0181000301d60166016b01c9000301be019b01d6016b019b018f05fc000301fc019b01de0003015e0118016b018f00030118 Tj" + "0.00 -8.80 Td" + "#hex:01340184016b018d0133016b018f015e000301c901be01430143013b0003014301c001de01180184000301d6019b000301fc019b01de01c1000301f6011801840181016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:01c901be01430143013b0003015d019b01c10003056a00030166019b01de01c106080003002701de01c1016b018f015e000301d60166016b01c9000301d6016b018d014305fc000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:0166011801f5014300030118013b01f50118018f01d60118015e01430003019b018f000300b401d601c10143018f015e01d6016600030628000401d601660184014301d6016b013401c90629 Tj" + "0.00 -8.80 Td" + "#hex:0134016601430134018101c9000301fc019b01de0003018d011801810143000301d6019b000301340184016b018d01330608000300c101660143000301be019b01d6016b019b018f0003016b01c9 Tj" + "0.00 -8.80 Td" + "#hex:01c9014301be011801c1011801d60143013b0003016b018f01d6019b0003013301c1019b01f6018f05fc000301c9016b018401f5014301c105fc00030118018f013b0003015e01c1011801fc Tj" + "0.00 -8.80 Td" + "#hex:0184011801fc014301c101c9000301c1014301c90143018d01330184016b018f015e000301330118018f013b01c90003019b015d000301c901d6019b018f01430608000300b4016601180181016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:01d60166014300030133019b01d601d6018401430003015d0118016b018401c9000301d6019b0003018d016b01fb000301d60166014300030134019b0184019b01c101c90608 Tj" + "ET" + "1.10 w" + "414.72 515.52 m" + "557.28 515.52 l" + "569.52 503.28 l" + "569.52 288.72 l" + "557.28 276.48 l" + "414.72 276.48 l" + "402.48 288.72 l" + "402.48 503.28 l" + "s" + "1.00 w" + "0.50 w" + "416.16 504.36 m" + "462.96 504.36 l" + "S" + "509.04 504.36 m" + "555.84 504.36 l" + "S" + "0.60 w" + "469.44 507.10 m" + "472.18 504.36 l" + "469.44 501.62 l" + "466.70 504.36 l" + "h" + "S" + "477.72 507.10 m" + "480.46 504.36 l" + "477.72 501.62 l" + "474.98 504.36 l" + "h" + "S" + "486.00 507.10 m" + "488.74 504.36 l" + "486.00 501.62 l" + "483.26 504.36 l" + "h" + "S" + "494.28 507.10 m" + "497.02 504.36 l" + "494.28 501.62 l" + "491.54 504.36 l" + "h" + "S" + "502.56 507.10 m" + "505.30 504.36 l" + "502.56 501.62 l" + "499.82 504.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "432.00 283.32 m" + "479.88 283.32 l" + "S" + "492.12 283.32 m" + "540.00 283.32 l" + "S" + "486.00 285.62 m" + "488.30 283.32 l" + "486.00 281.02 l" + "483.70 283.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "547.20 451.08 m" + "553.32 451.08 l" + "555.84 448.56 l" + "555.84 443.16 l" + "553.32 440.64 l" + "547.20 440.64 l" + "544.68 443.16 l" + "544.68 448.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "547.73 443.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "416.16 488.88 Td" + "0.00 -14.30 Td" + "#hex:001f0143018401d60003019b015d0003002701f6011801c101f50143018f0181016b018f013b Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "410.40 450.00 Td" + "0.00 -8.25 Td" + "#hex:00e001d001c4017001f601d0021301fe000301a0020b017801c20476000301f6014d01f601a0020b02310003022a014d01f601a0017801fe Tj" + "ET" + "0.90 w" + "410.40 434.16 m" + "561.60 434.16 l" + "S" + "0.35 w" + "410.40 431.64 m" + "561.60 431.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "410.40 426.96 Td" + "0.00 -8.80 Td" + "#hex:00e00166016b01840143000301f60143011801c1016b018f015e000301d60166016b01c9000301330143018401d605fc000301fc019b01de0003015e0118016b018f000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:015d019b01840184019b01f6016b018f015e000301330143018f0143025b01d601c905fb000305f8000300e6019b01de01c100030020019b018f01c901d6016b01d601de01d6016b019b018f Tj" + "0.00 -8.80 Td" + "#hex:01c90134019b01c101430003016b018f013401c10143011801c9014301c90003013301fc0003056b05fc000301d6019b000301180003018d011801fb016b018d01de018d0003019b015d0003056b05690608000305f8 Tj" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f5014300030118013b01f50118018f01d60118015e01430003019b018f000300200166011801c1016b01c9018d0118 Tj" + "0.00 -8.80 Td" + "#hex:062800a9014301c101c901de011801c9016b019b018f062900030134016601430134018101c90003018d0118013b0143000301d6019b0003016b018f01d6014301c10118013401d6000301f6016b01d60166 Tj" + "0.00 -8.80 Td" + "#hex:013b01f6011801c101f5014301c9060800030058018f00030118013b013b016b01d6016b019b018f05fc000301f60166016b018401430003011801d601d601de018f0143013b000301d6019b000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01330143018401d605fc000301fc019b01de00030166011801f50143000301180003056e0569000301be014301c101340143018f01d60003013401660118018f01340143000301430118013401660003013b011801fc Tj" + "0.00 -8.80 Td" + "#hex:011801d60003013b011801f6018f0003019b015d0003015e01c1019b01f6016b018f015e000301180003015d01de01840184000301330143011801c1013b0003016b015d000301fc019b01de065a01c10143 Tj" + "0.00 -8.80 Td" + "#hex:0134011801be01180133018401430003019b015d0003015e01c1019b01f6016b018f015e0003019b018f014305fc0003019b01c100030118000301f5016b01c9016b0133018401fc000301d60166016b01340181014301c1 Tj" + "0.00 -8.80 Td" + "#hex:01330143011801c1013b0003016b015d000301fc019b01de00030118018401c101430118013b01fc00030166011801f501430003019b018f0143060800030058015d000301fc019b01de0003011801c10143018f065a01d6 Tj" + "0.00 -8.80 Td" + "#hex:01180003013b01f6011801c1015d05fc000301fc019b01de0003015e0118016b018f000301d6016601430003015d019b01840184019b01f6016b018f015e00030118013b013b016b01d6016b019b018f01180184 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "457.72 305.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "BT" + "/F1 6.20 Tf" + "460.52 320.40 Td" + "#hex:016901d001c4020b01a001c4021301780170000301d001c40003020b019b017800030168014d016901b6 Tj" + "ET" + "1.10 w" + "234.72 515.52 m" + "377.28 515.52 l" + "389.52 503.28 l" + "389.52 288.72 l" + "377.28 276.48 l" + "234.72 276.48 l" + "222.48 288.72 l" + "222.48 503.28 l" + "s" + "0.45 w" + "234.72 512.50 m" + "377.28 512.50 l" + "386.50 503.28 l" + "386.50 288.72 l" + "377.28 279.50 l" + "234.72 279.50 l" + "225.50 288.72 l" + "225.50 503.28 l" + "s" + "0.90 w" + "243.72 508.68 m" + "229.32 508.68 l" + "229.32 494.28 l" + "S" + "368.28 508.68 m" + "382.68 508.68 l" + "382.68 494.28 l" + "S" + "243.72 283.32 m" + "229.32 283.32 l" + "229.32 297.72 l" + "S" + "368.28 283.32 m" + "382.68 283.32 l" + "382.68 297.72 l" + "S" + "0.90 w" + "241.56 504.36 m" + "233.64 504.36 l" + "233.64 496.44 l" + "S" + "370.44 504.36 m" + "378.36 504.36 l" + "378.36 496.44 l" + "S" + "241.56 287.64 m" + "233.64 287.64 l" + "233.64 295.56 l" + "S" + "370.44 287.64 m" + "378.36 287.64 l" + "378.36 295.56 l" + "S" + "1.00 w" + "0.50 w" + "236.16 504.36 m" + "282.96 504.36 l" + "S" + "329.04 504.36 m" + "375.84 504.36 l" + "S" + "0.60 w" + "289.44 507.10 m" + "292.18 504.36 l" + "289.44 501.62 l" + "286.70 504.36 l" + "h" + "f" + "297.72 507.10 m" + "300.46 504.36 l" + "297.72 501.62 l" + "294.98 504.36 l" + "h" + "f" + "306.00 507.10 m" + "308.74 504.36 l" + "306.00 501.62 l" + "303.26 504.36 l" + "h" + "f" + "314.28 507.10 m" + "317.02 504.36 l" + "314.28 501.62 l" + "311.54 504.36 l" + "h" + "f" + "322.56 507.10 m" + "325.30 504.36 l" + "322.56 501.62 l" + "319.82 504.36 l" + "h" + "f" + "1.00 w" + "0.50 w" + "252.00 283.32 m" + "299.88 283.32 l" + "S" + "312.12 283.32 m" + "360.00 283.32 l" + "S" + "306.00 285.62 m" + "308.30 283.32 l" + "306.00 281.02 l" + "303.70 283.32 l" + "h" + "S" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "236.16 488.88 Td" + "0.00 -14.30 Td" + "#hex:000401be01be011801c1011801d601de01c90003019b015d000301d6016601430003002001c101180133 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "230.40 450.00 Td" + "0.00 -8.25 Td" + "#hex:00e001d001c4017001f601d0021301fe000301a0020b017801c20476000301b901780193017801c40170014d01f60231 Tj" + "ET" + "0.90 w" + "230.40 434.16 m" + "381.60 434.16 l" + "S" + "0.35 w" + "230.40 431.64 m" + "381.60 431.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "230.40 426.96 Td" + "0.00 -8.80 Td" + "#hex:00c10166016b01c90003016b01d60143018d0003025b01c101c901d60003011801be01be0143011801c101c9000301d6019b000301330143000301180003006e011801c1015e0143000301c90143011801840143013b Tj" + "0.00 -8.80 Td" + "#hex:016b01c1019b018f00030133011801c101c101430184000301f60143016b015e0166016b018f015e0003056e05690569000301be019b01de018f013b01c90608000300c101660143 Tj" + "0.00 -8.80 Td" + "#hex:0133011801c101c10143018400030166011801c90003011800030166016b013b013b0143018f00030134011801d60134016605fc000301f60166016b01340166000301340118018f000301330143 Tj" + "0.00 -8.80 Td" + "#hex:015d019b01de018f013b000301f6016b01d6016600030118000301c901de01340134014301c901c9015d01de01840003002700200003056b056900030058018f01d6014301840184016b015e0143018f01340143 Tj" + "0.00 -8.80 Td" + "#hex:06280058018f01f5014301c901d6016b015e011801d6016b019b018f06290003013401660143013401810608000300ac014301840143011801c9016b018f015e000301d60166014300030134011801d601340166 Tj" + "0.00 -8.80 Td" + "#hex:01de018f0184019b0134018101c90003011800030166011801d6013401660003011801d60003019b018f014300030143018f013b0003019b015d000301d60166014300030133011801c101c10143018405fc Tj" + "0.00 -8.80 Td" + "#hex:011801840184019b01f6016b018f015e000301d601f6019b000300780143013b016b01de018d0003019b01c1000301c9018d011801840184014301c10003013401c10143011801d601de01c1014301c9 Tj" + "0.00 -8.80 Td" + "#hex:01d6019b0003013401c1011801f601840003016b018f01c9016b013b01430608000300c10143018f00030184014301f5014301c101c90003011801c10143000301c9014301d60003016b018f00030118000301c1019b01f6 Tj" + "0.00 -8.80 Td" + "#hex:011801d6000301d6016601430003015d011801c100030143018f013b05fc000301430118013401660003016b018f000301180003018f014301de01d601c101180184000301be019b01c9016b01d6016b019b018f05fc Tj" + "0.00 -8.80 Td" + "#hex:0118013301840143000301d6019b0003018d019b01f5014300030143016b01d60166014301c1000301de01be0003019b01c10003013b019b01f6018f0608000300e001660143018f Tj" + "0.00 -8.80 Td" + "#hex:0134014301c101d60118016b018f00030184014301f5014301c101c90003011801c10143000301de01c90143013b05fc000301d6016601430003011801be01be011801c1011801d601de01c9 Tj" + "0.00 -8.80 Td" + "#hex:01d601c10118018f01c9015d019b01c1018d01c9000301d6019b000301c1014301c90143018d013301840143000301180003015e016b0118018f01d600030184019b013301c901d6014301c10608000300c101660143 Tj" + "0.00 -8.80 Td" + "#hex:011801be01be011801c1011801d601de01c90003019b015d000301d6016601430003002001c1011801330003016b01c9000301180003006e011801c1015e01430003019b0133017d0143013401d6000301f6016b01d60166 Tj" + "0.00 -8.80 Td" + "#hex:01d6016601430003015d019b01840184019b01f6016b018f015e000301c901d6011801d6016b01c901d6016b013401c905fb0003000401c1018d019b01c1000300200184011801c901c905fb0003056b0569 Tj" + "ET" + "BT" + "/F1 6.20 Tf" + "280.52 291.60 Td" + "#hex:016901d001c4020b01a001c4021301780170000301d001c40003020b019b017800030168014d016901b6 Tj" + "ET" + "1.10 w" + "54.72 515.52 m" + "197.28 515.52 l" + "209.52 503.28 l" + "209.52 288.72 l" + "197.28 276.48 l" + "54.72 276.48 l" + "42.48 288.72 l" + "42.48 503.28 l" + "s" + "0.45 w" + "54.72 512.50 m" + "197.28 512.50 l" + "206.50 503.28 l" + "206.50 288.72 l" + "197.28 279.50 l" + "54.72 279.50 l" + "45.50 288.72 l" + "45.50 503.28 l" + "s" + "0.90 w" + "63.72 508.68 m" + "49.32 508.68 l" + "49.32 494.28 l" + "S" + "188.28 508.68 m" + "202.68 508.68 l" + "202.68 494.28 l" + "S" + "63.72 283.32 m" + "49.32 283.32 l" + "49.32 297.72 l" + "S" + "188.28 283.32 m" + "202.68 283.32 l" + "202.68 297.72 l" + "S" + "1.00 w" + "0.50 w" + "56.16 504.36 m" + "102.96 504.36 l" + "S" + "149.04 504.36 m" + "195.84 504.36 l" + "S" + "0.60 w" + "109.44 507.10 m" + "112.18 504.36 l" + "109.44 501.62 l" + "106.70 504.36 l" + "h" + "f" + "117.72 507.10 m" + "120.46 504.36 l" + "117.72 501.62 l" + "114.98 504.36 l" + "h" + "f" + "126.00 507.10 m" + "128.74 504.36 l" + "126.00 501.62 l" + "123.26 504.36 l" + "h" + "f" + "134.28 507.10 m" + "137.02 504.36 l" + "134.28 501.62 l" + "131.54 504.36 l" + "h" + "f" + "142.56 507.10 m" + "145.30 504.36 l" + "142.56 501.62 l" + "139.82 504.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "72.00 283.32 m" + "119.88 283.32 l" + "S" + "132.12 283.32 m" + "180.00 283.32 l" + "S" + "126.00 285.62 m" + "128.30 283.32 l" + "126.00 281.02 l" + "123.70 283.32 l" + "h" + "S" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "56.16 488.88 Td" + "0.00 -14.30 Td" + "#hex:000401c101c1019b01f6000306af056c Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "50.40 450.00 Td" + "0.00 -8.25 Td" + "#hex:00e00178014d01f301d001c404760003022a017801f60231000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "50.40 434.16 m" + "201.60 434.16 l" + "S" + "0.35 w" + "50.40 431.64 m" + "201.60 431.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "50.40 426.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f5014300030118000306af056c00030133019b018f01de01c9000301d6019b0003011801d601d601180134018100030118018f013b0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01c1019b0184018401c90003018d0118013b0143000301f6016b01d60166000301d60166016b01c9000301be016b0143013401430003019b015d0003018d0118015e016b0134 Tj" + "0.00 -8.80 Td" + "#hex:0118018d018d01de018f016b01d6016b019b018f0608000300c10166014300030133019b018f01de01c90003016b01c90003013b014301d6014301c1018d016b018f0143013b0003013301fc Tj" + "0.00 -8.80 Td" + "#hex:01d601660143000301c1011801c1016b01d601fc0003019b015d000301d60166014300030118018d018d01de018f016b01d6016b019b018f060800030086018f013401430003016b01d600030166016b01d601c900030118 Tj" + "0.00 -8.80 Td" + "#hex:01d6011801c1015e014301d605fc000301d60166014300030118018d018d01de018f016b01d6016b019b018f0003016b01c90003018f019b00030184019b018f015e014301c1 Tj" + "0.00 -8.80 Td" + "#hex:018d0118015e016b0134011801840608 Tj" + "ET" + "1.10 w" + "414.72 263.52 m" + "557.28 263.52 l" + "569.52 251.28 l" + "569.52 36.72 l" + "557.28 24.48 l" + "414.72 24.48 l" + "402.48 36.72 l" + "402.48 251.28 l" + "s" + "0.45 w" + "414.72 260.50 m" + "557.28 260.50 l" + "566.50 251.28 l" + "566.50 36.72 l" + "557.28 27.50 l" + "414.72 27.50 l" + "405.50 36.72 l" + "405.50 251.28 l" + "s" + "0.90 w" + "423.72 256.68 m" + "409.32 256.68 l" + "409.32 242.28 l" + "S" + "548.28 256.68 m" + "562.68 256.68 l" + "562.68 242.28 l" + "S" + "423.72 31.32 m" + "409.32 31.32 l" + "409.32 45.72 l" + "S" + "548.28 31.32 m" + "562.68 31.32 l" + "562.68 45.72 l" + "S" + "1.00 w" + "0.50 w" + "416.16 252.36 m" + "462.96 252.36 l" + "S" + "509.04 252.36 m" + "555.84 252.36 l" + "S" + "0.60 w" + "469.44 255.10 m" + "472.18 252.36 l" + "469.44 249.62 l" + "466.70 252.36 l" + "h" + "f" + "477.72 255.10 m" + "480.46 252.36 l" + "477.72 249.62 l" + "474.98 252.36 l" + "h" + "f" + "486.00 255.10 m" + "488.74 252.36 l" + "486.00 249.62 l" + "483.26 252.36 l" + "h" + "f" + "494.28 255.10 m" + "497.02 252.36 l" + "494.28 249.62 l" + "491.54 252.36 l" + "h" + "f" + "502.56 255.10 m" + "505.30 252.36 l" + "502.56 249.62 l" + "499.82 252.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "432.00 31.32 m" + "479.88 31.32 l" + "S" + "492.12 31.32 m" + "540.00 31.32 l" + "S" + "486.00 33.62 m" + "488.30 31.32 l" + "486.00 29.02 l" + "483.70 31.32 l" + "h" + "S" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 12.00 Tf" + "416.16 246.96 Td" + "0.00 -13.20 Td" + "#hex:00c1019b018d01430003019b015d0003006e01430118013b014301c101c90166016b01be00030118018f013b Tj" + "0.00 -13.20 Td" + "#hex:0058018f025d01de0143018f013401430003062801c101430118013b000301f6016b01d60166 Tj" + "0.00 -13.20 Td" + "#hex:018d019b013b016b025b014301c101c90629 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "410.40 198.00 Td" + "0.00 -8.25 Td" + "#hex:00e001d001c4017001f601d0021301fe000301a0020b017801c204760003022a017801f60231000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "410.40 182.16 m" + "561.60 182.16 l" + "S" + "0.35 w" + "410.40 179.64 m" + "561.60 179.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "410.40 174.96 Td" + "0.00 -8.80 Td" + "#hex:00c10166016b01c900030133019b019b018100030134019b018f01d60118016b018f01c90003015e01de016b013b01430184016b018f014301c90003015d019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:016b018f025d01de0143018f0134016b018f015e00030118018f013b000301340166011801c1018d016b018f015e0003019b01d60166014301c101c905fc00030118018f013b0003016b01d601c9 Tj" + "0.00 -8.80 Td" + "#hex:01f6019b01c1013b01c90003011801c10143000301340166011801c1015e0143013b000301f6016b01d601660003018d0118015e016b0134060800030058015d000301fc019b01de000301c901be0143018f013b Tj" + "0.00 -8.80 Td" + "#hex:056d057100030166019b01de01c101c90003019b01f5014301c100030118000301be014301c1016b019b013b0003019b015d0003056f0003013b011801fc01c90003019b01c10003015d014301f6014301c1 Tj" + "0.00 -8.80 Td" + "#hex:01c901d601de013b01fc016b018f015e000301d60166014300030133019b019b0181065a01c900030134019b018f01d60143018f01d601c900030118018f013b Tj" + "0.00 -8.80 Td" + "#hex:01be01c10118013401d6016b0134016b018f015e0003016b01d601c90003015e01de016b013b01430184016b018f014301c905fc000301fc019b01de01c1000300200166011801c1016b01c9018d0118 Tj" + "0.00 -8.80 Td" + "#hex:01c90134019b01c101430003016b018f013401c10143011801c9014301c90003013301fc0003056b05fc0003011801c90003013b019b014301c9000301fc019b01de01c1 Tj" + "0.00 -8.80 Td" + "#hex:018d011801fb016b018d01de018d0003015d019b01c1000301d60166011801d6000301c90134019b01c101430608000300c1016601430003018d0118018f01de01180184000301d601660143018f Tj" + "0.00 -8.80 Td" + "#hex:0184019b01c9014301c90003016b01d601c90003018d0118015e016b013405fc0003013301de01d6000301c10143015e0118016b018f01c90003016b01d60003016b018f00030118000301340143018f01d601de01c101fc0608 Tj" + "ET" + "1.10 w" + "234.72 263.52 m" + "377.28 263.52 l" + "389.52 251.28 l" + "389.52 36.72 l" + "377.28 24.48 l" + "234.72 24.48 l" + "222.48 36.72 l" + "222.48 251.28 l" + "s" + "0.45 w" + "234.72 260.50 m" + "377.28 260.50 l" + "386.50 251.28 l" + "386.50 36.72 l" + "377.28 27.50 l" + "234.72 27.50 l" + "225.50 36.72 l" + "225.50 251.28 l" + "s" + "1.00 w" + "0.50 w" + "236.16 252.36 m" + "282.96 252.36 l" + "S" + "329.04 252.36 m" + "375.84 252.36 l" + "S" + "0.60 w" + "289.44 255.10 m" + "292.18 252.36 l" + "289.44 249.62 l" + "286.70 252.36 l" + "h" + "f" + "297.72 255.10 m" + "300.46 252.36 l" + "297.72 249.62 l" + "294.98 252.36 l" + "h" + "f" + "306.00 255.10 m" + "308.74 252.36 l" + "306.00 249.62 l" + "303.26 252.36 l" + "h" + "S" + "314.28 255.10 m" + "317.02 252.36 l" + "314.28 249.62 l" + "311.54 252.36 l" + "h" + "S" + "322.56 255.10 m" + "325.30 252.36 l" + "322.56 249.62 l" + "319.82 252.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "252.00 31.32 m" + "299.88 31.32 l" + "S" + "312.12 31.32 m" + "360.00 31.32 l" + "S" + "306.00 33.62 m" + "308.30 31.32 l" + "306.00 29.02 l" + "303.70 31.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "367.20 199.08 m" + "373.32 199.08 l" + "375.84 196.56 l" + "375.84 191.16 l" + "373.32 188.64 l" + "367.20 188.64 l" + "364.68 191.16 l" + "364.68 196.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "367.73 191.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "236.16 236.88 Td" + "0.00 -14.30 Td" + "#hex:003101fc014301c90003019b015d000300200166011801c1018d016b018f015e Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "230.40 198.00 Td" + "0.00 -8.25 Td" + "#hex:00e001d001c4017001f601d0021301fe000301a0020b017801c204760003021301c4016901d001c201c201d001c4 Tj" + "ET" + "0.90 w" + "230.40 182.16 m" + "381.60 182.16 l" + "S" + "0.35 w" + "230.40 179.64 m" + "381.60 179.64 l" + "S" + "1.00 w" + "0.80 w" + "BT" + "/F5 5.50 Tf" + "292.40 169.92 Td" + "\"CHARGES\" Tj" + "ET" + "299.30 158.40 m" + "299.30 160.47 297.63 162.14 295.56 162.14 c" + "293.49 162.14 291.82 160.47 291.82 158.40 c" + "291.82 156.33 293.49 154.66 295.56 154.66 c" + "297.63 154.66 299.30 156.33 299.30 158.40 c" + "s" + "309.74 158.40 m" + "309.74 160.47 308.07 162.14 306.00 162.14 c" + "303.93 162.14 302.26 160.47 302.26 158.40 c" + "302.26 156.33 303.93 154.66 306.00 154.66 c" + "308.07 154.66 309.74 156.33 309.74 158.40 c" + "s" + "320.18 158.40 m" + "320.18 160.47 318.51 162.14 316.44 162.14 c" + "314.37 162.14 312.70 160.47 312.70 158.40 c" + "312.70 156.33 314.37 154.66 316.44 154.66 c" + "318.51 154.66 320.18 156.33 320.18 158.40 c" + "s" + "1.00 w" + "0.35 w" + "230.40 146.88 m" + "381.60 146.88 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "230.40 141.12 Td" + "0.00 -8.80 Td" + "#hex:00c10166014301c901430003013401c101fc01c901d601180184000301840143018f01c9014301c90003025b01d60003019b01f5014301c1000301d6016601430003014301fc014301c90608000300c10166014301fc Tj" + "0.00 -8.80 Td" + "#hex:0166011801f501430003056c000301340166011801c1015e014301c90608000300e00166016b01840143000301f60143011801c1016b018f015e000301d601660143018d05fc000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:01340118018f0003014301fb01be0143018f013b0003056a000301340166011801c1015e01430003011801c900030118018f00030118013401d6016b019b018f000301d6019b00030134011801c901d6000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01340166011801c1018d000301be014301c101c9019b018f000301c901be0143018401840003062801c9011801f501430003002700200003056a056c06290003019b018f00030118 Tj" + "0.00 -8.80 Td" + "#hex:016601de018d0118018f019b016b013b000301f6016b01d60166016b018f0003056c05690003015d0143014301d60003019b015d000301fc019b01de05fc000301be01c1019b01f5016b013b0143013b Tj" + "0.00 -8.80 Td" + "#hex:01d60166011801d6000301fc019b01de00030118018f013b000301d601660143000301d6011801c1015e014301d6000301340118018f000301c901430143000301430118013401660003019b01d60166014301c10608 Tj" + "0.00 -8.80 Td" + "#hex:00c101660143000301840143018f01c9014301c9000301c10143015e0118016b018f00030118018401840003014301fb01be0143018f013b0143013b000301340166011801c1015e014301c9 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "277.72 53.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "BT" + "/F1 6.20 Tf" + "280.52 68.40 Td" + "#hex:016901d001c4020b01a001c4021301780170000301d001c40003020b019b017800030168014d016901b6 Tj" + "ET" + "1.10 w" + "54.72 263.52 m" + "197.28 263.52 l" + "209.52 251.28 l" + "209.52 36.72 l" + "197.28 24.48 l" + "54.72 24.48 l" + "42.48 36.72 l" + "42.48 251.28 l" + "s" + "0.45 w" + "54.72 260.50 m" + "197.28 260.50 l" + "206.50 251.28 l" + "206.50 36.72 l" + "197.28 27.50 l" + "54.72 27.50 l" + "45.50 36.72 l" + "45.50 251.28 l" + "s" + "0.90 w" + "57.96 256.68 m" + "49.32 256.68 l" + "49.32 248.04 l" + "S" + "194.04 256.68 m" + "202.68 256.68 l" + "202.68 248.04 l" + "S" + "57.96 31.32 m" + "49.32 31.32 l" + "49.32 39.96 l" + "S" + "194.04 31.32 m" + "202.68 31.32 l" + "202.68 39.96 l" + "S" + "1.00 w" + "0.50 w" + "56.16 252.36 m" + "102.96 252.36 l" + "S" + "149.04 252.36 m" + "195.84 252.36 l" + "S" + "0.60 w" + "109.44 255.10 m" + "112.18 252.36 l" + "109.44 249.62 l" + "106.70 252.36 l" + "h" + "f" + "117.72 255.10 m" + "120.46 252.36 l" + "117.72 249.62 l" + "114.98 252.36 l" + "h" + "f" + "126.00 255.10 m" + "128.74 252.36 l" + "126.00 249.62 l" + "123.26 252.36 l" + "h" + "f" + "134.28 255.10 m" + "137.02 252.36 l" + "134.28 249.62 l" + "131.54 252.36 l" + "h" + "S" + "142.56 255.10 m" + "145.30 252.36 l" + "142.56 249.62 l" + "139.82 252.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "72.00 31.32 m" + "119.88 31.32 l" + "S" + "132.12 31.32 m" + "180.00 31.32 l" + "S" + "126.00 33.62 m" + "128.30 31.32 l" + "126.00 29.02 l" + "123.70 31.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "187.20 199.08 m" + "193.32 199.08 l" + "195.84 196.56 l" + "195.84 191.16 l" + "193.32 188.64 l" + "187.20 188.64 l" + "184.68 191.16 l" + "184.68 196.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "187.73 191.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "56.16 236.88 Td" + "0.00 -14.30 Td" + "#hex:002001de013301430003019b015d0003004a019b01c101340143 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "50.40 198.00 Td" + "0.00 -8.25 Td" + "#hex:00e001d001c4017001f601d0021301fe000301a0020b017801c20476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "50.40 182.16 m" + "201.60 182.16 l" + "S" + "0.35 w" + "50.40 179.64 m" + "201.60 179.64 l" + "S" + "1.00 w" + "0.80 w" + "BT" + "/F5 5.50 Tf" + "112.40 169.92 Td" + "\"CHARGES\" Tj" + "ET" + "96.04 158.40 m" + "140.68 158.40 l" + "S" + "BT" + "/F5 7.00 Tf" + "144.28 159.48 Td" + "\"/ 36\" Tj" + "ET" + "1.00 w" + "0.35 w" + "50.40 146.88 m" + "201.60 146.88 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "50.40 141.12 Td" + "0.00 -8.80 Td" + "#hex:00c10166016b01c90003013401de013301430003016b01c9000301180133019b01de01d600030118018f0003016b018f0134016600030118013401c1019b01c901c90608000300310118013401660003015d011801340143 Tj" + "0.00 -8.80 Td" + "#hex:0166011801c9000301180003013b016b01c901d6016b018f013401d60003018d011801c10181016b018f015e0003019b018f0003016b01d6000301d60166011801d6000301340118018f000301330143 Tj" + "0.00 -8.80 Td" + "#hex:01be01c1014301c901c90143013b0608000300c1016601430003013401de01330143000301c901d6011801c101d601c9000301f6016b01d601660003056c056f000301340166011801c1015e014301c905fc Tj" + "0.00 -8.80 Td" + "#hex:0118018f013b0003016b01d6000301c10143015e0118016b018f01c90003056a013b056b05690003014301fb01be0143018f013b0143013b000301340166011801c1015e014301c90003013b0118016b018401fc Tj" + "0.00 -8.80 Td" + "#hex:011801d60003013b011801f6018f0608000300e6019b01de000301340118018f000301de01c9014300030118018f00030118013401d6016b019b018f000301d6019b000301be01c1014301c901c90003019b018f0143 Tj" + "0.00 -8.80 Td" + "#hex:019b015d000301d6016601430003013401de01330143065a01c90003015d01180134014301c905fc0003014301fb01be0143018f013b016b018f015e000301180003018f01de018d0133014301c10003019b015d Tj" + "0.00 -8.80 Td" + "#hex:01340166011801c1015e014301c900030133011801c90143013b0003019b018f000301d601660143000301340166019b01c90143018f0003015d01180134014305fc0003011801c9000301c90166019b01f6018f Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "97.72 53.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "BT" + "/F1 6.20 Tf" + "100.52 68.40 Td" + "#hex:016901d001c4020b01a001c4021301780170000301d001c40003020b019b017800030168014d016901b6 Tj" + "ET"] + ["0.88 0.88 0.88 RG" + "36.00 18.00 m" + "36.00 774.00 l" + "S" + "216.00 18.00 m" + "216.00 774.00 l" + "S" + "396.00 18.00 m" + "396.00 774.00 l" + "S" + "576.00 18.00 m" + "576.00 774.00 l" + "S" + "36.00 18.00 m" + "576.00 18.00 l" + "S" + "36.00 270.00 m" + "576.00 270.00 l" + "S" + "36.00 522.00 m" + "576.00 522.00 l" + "S" + "36.00 774.00 m" + "576.00 774.00 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 781.20 Td" + "#hex:00a9014d01930178000303fa Tj" + "ET" + "1.10 w" + "414.72 767.52 m" + "557.28 767.52 l" + "569.52 755.28 l" + "569.52 540.72 l" + "557.28 528.48 l" + "414.72 528.48 l" + "402.48 540.72 l" + "402.48 755.28 l" + "s" + "0.45 w" + "414.72 764.50 m" + "557.28 764.50 l" + "566.50 755.28 l" + "566.50 540.72 l" + "557.28 531.50 l" + "414.72 531.50 l" + "405.50 540.72 l" + "405.50 755.28 l" + "s" + "0.70 w" + "410.04 762.55 m" + "412.63 759.96 l" + "410.04 757.37 l" + "407.45 759.96 l" + "h" + "S" + "561.96 762.55 m" + "564.55 759.96 l" + "561.96 757.37 l" + "559.37 759.96 l" + "h" + "S" + "410.04 538.63 m" + "412.63 536.04 l" + "410.04 533.45 l" + "407.45 536.04 l" + "h" + "S" + "561.96 538.63 m" + "564.55 536.04 l" + "561.96 533.45 l" + "559.37 536.04 l" + "h" + "S" + "1.00 w" + "0.50 w" + "416.16 756.36 m" + "462.96 756.36 l" + "S" + "509.04 756.36 m" + "555.84 756.36 l" + "S" + "0.60 w" + "469.44 759.10 m" + "472.18 756.36 l" + "469.44 753.62 l" + "466.70 756.36 l" + "h" + "f" + "477.72 759.10 m" + "480.46 756.36 l" + "477.72 753.62 l" + "474.98 756.36 l" + "h" + "f" + "486.00 759.10 m" + "488.74 756.36 l" + "486.00 753.62 l" + "483.26 756.36 l" + "h" + "f" + "494.28 759.10 m" + "497.02 756.36 l" + "494.28 753.62 l" + "491.54 756.36 l" + "h" + "S" + "502.56 759.10 m" + "505.30 756.36 l" + "502.56 753.62 l" + "499.82 756.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "432.00 535.32 m" + "479.88 535.32 l" + "S" + "492.12 535.32 m" + "540.00 535.32 l" + "S" + "486.00 537.62 m" + "488.30 535.32 l" + "486.00 533.02 l" + "483.70 535.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "547.20 703.08 m" + "553.32 703.08 l" + "555.84 700.56 l" + "555.84 695.16 l" + "553.32 692.64 l" + "547.20 692.64 l" + "544.68 695.16 l" + "544.68 700.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "547.73 695.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "416.16 748.08 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc000300a90118013b013b0143013b Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "410.40 702.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "410.40 686.16 m" + "561.60 686.16 l" + "S" + "0.35 w" + "410.40 683.64 m" + "561.60 683.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "410.40 678.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "457.72 557.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "234.72 767.52 m" + "377.28 767.52 l" + "389.52 755.28 l" + "389.52 540.72 l" + "377.28 528.48 l" + "234.72 528.48 l" + "222.48 540.72 l" + "222.48 755.28 l" + "s" + "0.45 w" + "234.72 764.50 m" + "377.28 764.50 l" + "386.50 755.28 l" + "386.50 540.72 l" + "377.28 531.50 l" + "234.72 531.50 l" + "225.50 540.72 l" + "225.50 755.28 l" + "s" + "1.00 w" + "0.50 w" + "236.16 756.36 m" + "282.96 756.36 l" + "S" + "329.04 756.36 m" + "375.84 756.36 l" + "S" + "0.60 w" + "289.44 759.10 m" + "292.18 756.36 l" + "289.44 753.62 l" + "286.70 756.36 l" + "h" + "f" + "297.72 759.10 m" + "300.46 756.36 l" + "297.72 753.62 l" + "294.98 756.36 l" + "h" + "f" + "306.00 759.10 m" + "308.74 756.36 l" + "306.00 753.62 l" + "303.26 756.36 l" + "h" + "S" + "314.28 759.10 m" + "317.02 756.36 l" + "314.28 753.62 l" + "311.54 756.36 l" + "h" + "S" + "322.56 759.10 m" + "325.30 756.36 l" + "322.56 753.62 l" + "319.82 756.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "252.00 535.32 m" + "299.88 535.32 l" + "S" + "312.12 535.32 m" + "360.00 535.32 l" + "S" + "306.00 537.62 m" + "308.30 535.32 l" + "306.00 533.02 l" + "303.70 535.32 l" + "h" + "S" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "236.16 748.08 Td" + "0.00 -14.30 Td" + "#hex:0004013b0118018d0118018f01d6016b018f01430003000401c1018d019b01c105fc Tj" + "0.00 -14.30 Td" + "#hex:002001660118016b018f000300b40166016b01c101d6 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "230.40 702.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f604760003021301c4016901d001c201c201d001c4 Tj" + "ET" + "0.90 w" + "230.40 686.16 m" + "381.60 686.16 l" + "S" + "0.35 w" + "230.40 683.64 m" + "381.60 683.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "230.40 678.96 Td" + "0.00 -8.80 Td" + "#hex:00c10166016b01c9000301c901de016b01d60003019b015d0003011801c1018d019b01c10003016b01c9000301c10143016b018f015d019b01c101340143013b000301f6016b01d60166 Tj" + "0.00 -8.80 Td" + "#hex:0118013b0118018d0118018f01d6016b018f014305fc0003019b018f01430003019b015d000301d60166014300030166011801c1013b014301c901d6000301c901de013301c901d60118018f0134014301c9 Tj" + "0.00 -8.80 Td" + "#hex:016b018f0003014301fb016b01c901d60143018f013401430608000300e00166016b01840143000301fc019b01de065a01c10143000301f60143011801c1016b018f015e0003016b01d605fc00030118018f01fc Tj" + "0.00 -8.80 Td" + "#hex:013401c1016b01d6016b01340118018400030166016b01d600030118015e0118016b018f01c901d6000301fc019b01de0003013301430134019b018d014301c9000301180003018f019b01c1018d01180184 Tj" + "0.00 -8.80 Td" + "#hex:0166016b01d60608 Tj" + "ET" + "1.10 w" + "54.72 767.52 m" + "197.28 767.52 l" + "209.52 755.28 l" + "209.52 540.72 l" + "197.28 528.48 l" + "54.72 528.48 l" + "42.48 540.72 l" + "42.48 755.28 l" + "s" + "1.00 w" + "0.50 w" + "56.16 756.36 m" + "102.96 756.36 l" + "S" + "149.04 756.36 m" + "195.84 756.36 l" + "S" + "0.60 w" + "109.44 759.10 m" + "112.18 756.36 l" + "109.44 753.62 l" + "106.70 756.36 l" + "h" + "f" + "117.72 759.10 m" + "120.46 756.36 l" + "117.72 753.62 l" + "114.98 756.36 l" + "h" + "S" + "126.00 759.10 m" + "128.74 756.36 l" + "126.00 753.62 l" + "123.26 756.36 l" + "h" + "S" + "134.28 759.10 m" + "137.02 756.36 l" + "134.28 753.62 l" + "131.54 756.36 l" + "h" + "S" + "142.56 759.10 m" + "145.30 756.36 l" + "142.56 753.62 l" + "139.82 756.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "72.00 535.32 m" + "119.88 535.32 l" + "S" + "132.12 535.32 m" + "180.00 535.32 l" + "S" + "126.00 537.62 m" + "128.30 535.32 l" + "126.00 533.02 l" + "123.70 535.32 l" + "h" + "S" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "56.16 740.88 Td" + "0.00 -14.30 Td" + "#hex:00a9019b01d6016b019b018f0003019b015d000300200184016b018d0133016b018f015e Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "50.40 702.00 Td" + "0.00 -8.25 Td" + "#hex:00a901d0020b01a001d001c404760003016901d001c201c201d001c4 Tj" + "ET" + "0.90 w" + "50.40 686.16 m" + "201.60 686.16 l" + "S" + "0.35 w" + "50.40 683.64 m" + "201.60 683.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "50.40 678.96 Td" + "0.00 -8.80 Td" + "#hex:00e001660143018f000301fc019b01de0003013b01c1016b018f0181000301d60166016b01c9000301be019b01d6016b019b018f05fc000301fc019b01de0003015e0118016b018f00030118 Tj" + "0.00 -8.80 Td" + "#hex:01340184016b018d0133016b018f015e000301c901be01430143013b0003014301c001de01180184000301d6019b000301fc019b01de01c1000301f6011801840181016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:01c901be01430143013b0003015d019b01c10003056a00030166019b01de01c106080003002701de01c1016b018f015e000301d60166016b01c9000301d6016b018d014305fc000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:0166011801f5014300030118013b01f50118018f01d60118015e01430003019b018f000300b401d601c10143018f015e01d6016600030628000401d601660184014301d6016b013401c90629 Tj" + "0.00 -8.80 Td" + "#hex:0134016601430134018101c9000301fc019b01de0003018d011801810143000301d6019b000301340184016b018d01330608000300c101660143000301be019b01d6016b019b018f0003016b01c9 Tj" + "0.00 -8.80 Td" + "#hex:01c9014301be011801c1011801d60143013b0003016b018f01d6019b0003013301c1019b01f6018f05fc000301c9016b018401f5014301c105fc00030118018f013b0003015e01c1011801fc Tj" + "0.00 -8.80 Td" + "#hex:0184011801fc014301c101c9000301c1014301c90143018d01330184016b018f015e000301330118018f013b01c90003019b015d000301c901d6019b018f01430608000300b4016601180181016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:01d60166014300030133019b01d601d6018401430003015d0118016b018401c9000301d6019b0003018d016b01fb000301d60166014300030134019b0184019b01c101c90608 Tj" + "ET" + "1.10 w" + "414.72 515.52 m" + "557.28 515.52 l" + "569.52 503.28 l" + "569.52 288.72 l" + "557.28 276.48 l" + "414.72 276.48 l" + "402.48 288.72 l" + "402.48 503.28 l" + "s" + "1.00 w" + "0.50 w" + "416.16 504.36 m" + "462.96 504.36 l" + "S" + "509.04 504.36 m" + "555.84 504.36 l" + "S" + "0.60 w" + "469.44 507.10 m" + "472.18 504.36 l" + "469.44 501.62 l" + "466.70 504.36 l" + "h" + "S" + "477.72 507.10 m" + "480.46 504.36 l" + "477.72 501.62 l" + "474.98 504.36 l" + "h" + "S" + "486.00 507.10 m" + "488.74 504.36 l" + "486.00 501.62 l" + "483.26 504.36 l" + "h" + "S" + "494.28 507.10 m" + "497.02 504.36 l" + "494.28 501.62 l" + "491.54 504.36 l" + "h" + "S" + "502.56 507.10 m" + "505.30 504.36 l" + "502.56 501.62 l" + "499.82 504.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "432.00 283.32 m" + "479.88 283.32 l" + "S" + "492.12 283.32 m" + "540.00 283.32 l" + "S" + "486.00 285.62 m" + "488.30 283.32 l" + "486.00 281.02 l" + "483.70 283.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "547.20 451.08 m" + "553.32 451.08 l" + "555.84 448.56 l" + "555.84 443.16 l" + "553.32 440.64 l" + "547.20 440.64 l" + "544.68 443.16 l" + "544.68 448.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "547.73 443.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "416.16 488.88 Td" + "0.00 -14.30 Td" + "#hex:001f0143018401d60003019b015d0003002701f6011801c101f50143018f0181016b018f013b Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "410.40 450.00 Td" + "0.00 -8.25 Td" + "#hex:00e001d001c4017001f601d0021301fe000301a0020b017801c20476000301f6014d01f601a0020b02310003022a014d01f601a0017801fe Tj" + "ET" + "0.90 w" + "410.40 434.16 m" + "561.60 434.16 l" + "S" + "0.35 w" + "410.40 431.64 m" + "561.60 431.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "410.40 426.96 Td" + "0.00 -8.80 Td" + "#hex:00e00166016b01840143000301f60143011801c1016b018f015e000301d60166016b01c9000301330143018401d605fc000301fc019b01de0003015e0118016b018f000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:015d019b01840184019b01f6016b018f015e000301330143018f0143025b01d601c905fb000305f8000300e6019b01de01c100030020019b018f01c901d6016b01d601de01d6016b019b018f Tj" + "0.00 -8.80 Td" + "#hex:01c90134019b01c101430003016b018f013401c10143011801c9014301c90003013301fc0003056b05fc000301d6019b000301180003018d011801fb016b018d01de018d0003019b015d0003056b05690608000305f8 Tj" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f5014300030118013b01f50118018f01d60118015e01430003019b018f000300200166011801c1016b01c9018d0118 Tj" + "0.00 -8.80 Td" + "#hex:062800a9014301c101c901de011801c9016b019b018f062900030134016601430134018101c90003018d0118013b0143000301d6019b0003016b018f01d6014301c10118013401d6000301f6016b01d60166 Tj" + "0.00 -8.80 Td" + "#hex:013b01f6011801c101f5014301c9060800030058018f00030118013b013b016b01d6016b019b018f05fc000301f60166016b018401430003011801d601d601de018f0143013b000301d6019b000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01330143018401d605fc000301fc019b01de00030166011801f50143000301180003056e0569000301be014301c101340143018f01d60003013401660118018f01340143000301430118013401660003013b011801fc Tj" + "0.00 -8.80 Td" + "#hex:011801d60003013b011801f6018f0003019b015d0003015e01c1019b01f6016b018f015e000301180003015d01de01840184000301330143011801c1013b0003016b015d000301fc019b01de065a01c10143 Tj" + "0.00 -8.80 Td" + "#hex:0134011801be01180133018401430003019b015d0003015e01c1019b01f6016b018f015e0003019b018f014305fc0003019b01c100030118000301f5016b01c9016b0133018401fc000301d60166016b01340181014301c1 Tj" + "0.00 -8.80 Td" + "#hex:01330143011801c1013b0003016b015d000301fc019b01de00030118018401c101430118013b01fc00030166011801f501430003019b018f0143060800030058015d000301fc019b01de0003011801c10143018f065a01d6 Tj" + "0.00 -8.80 Td" + "#hex:01180003013b01f6011801c1015d05fc000301fc019b01de0003015e0118016b018f000301d6016601430003015d019b01840184019b01f6016b018f015e00030118013b013b016b01d6016b019b018f01180184 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "457.72 305.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "BT" + "/F1 6.20 Tf" + "460.52 320.40 Td" + "#hex:016901d001c4020b01a001c4021301780170000301d001c40003020b019b017800030168014d016901b6 Tj" + "ET" + "1.10 w" + "234.72 515.52 m" + "377.28 515.52 l" + "389.52 503.28 l" + "389.52 288.72 l" + "377.28 276.48 l" + "234.72 276.48 l" + "222.48 288.72 l" + "222.48 503.28 l" + "s" + "0.45 w" + "234.72 512.50 m" + "377.28 512.50 l" + "386.50 503.28 l" + "386.50 288.72 l" + "377.28 279.50 l" + "234.72 279.50 l" + "225.50 288.72 l" + "225.50 503.28 l" + "s" + "0.90 w" + "230.04 511.49 m" + "233.57 507.96 l" + "230.04 504.43 l" + "226.51 507.96 l" + "h" + "f" + "235.15 507.96 m" + "243.29 507.96 l" + "S" + "230.04 502.85 m" + "230.04 494.71 l" + "S" + "381.96 511.49 m" + "385.49 507.96 l" + "381.96 504.43 l" + "378.43 507.96 l" + "h" + "f" + "376.85 507.96 m" + "368.71 507.96 l" + "S" + "381.96 502.85 m" + "381.96 494.71 l" + "S" + "230.04 287.57 m" + "233.57 284.04 l" + "230.04 280.51 l" + "226.51 284.04 l" + "h" + "f" + "235.15 284.04 m" + "243.29 284.04 l" + "S" + "230.04 289.15 m" + "230.04 297.29 l" + "S" + "381.96 287.57 m" + "385.49 284.04 l" + "381.96 280.51 l" + "378.43 284.04 l" + "h" + "f" + "376.85 284.04 m" + "368.71 284.04 l" + "S" + "381.96 289.15 m" + "381.96 297.29 l" + "S" + "2.10 w" + "232.13 518.11 m" + "379.87 518.11 l" + "392.11 505.87 l" + "392.11 286.13 l" + "379.87 273.89 l" + "232.13 273.89 l" + "219.89 286.13 l" + "219.89 505.87 l" + "s" + "0.90 w" + "306.00 284.69 m" + "310.46 280.22 l" + "306.00 275.76 l" + "301.54 280.22 l" + "h" + "f" + "1.00 w" + "0.50 w" + "236.16 504.36 m" + "282.96 504.36 l" + "S" + "329.04 504.36 m" + "375.84 504.36 l" + "S" + "0.60 w" + "289.44 507.10 m" + "292.18 504.36 l" + "289.44 501.62 l" + "286.70 504.36 l" + "h" + "f" + "297.72 507.10 m" + "300.46 504.36 l" + "297.72 501.62 l" + "294.98 504.36 l" + "h" + "f" + "306.00 507.10 m" + "308.74 504.36 l" + "306.00 501.62 l" + "303.26 504.36 l" + "h" + "f" + "314.28 507.10 m" + "317.02 504.36 l" + "314.28 501.62 l" + "311.54 504.36 l" + "h" + "f" + "322.56 507.10 m" + "325.30 504.36 l" + "322.56 501.62 l" + "319.82 504.36 l" + "h" + "f" + "1.00 w" + "0.50 w" + "252.00 283.32 m" + "299.88 283.32 l" + "S" + "312.12 283.32 m" + "360.00 283.32 l" + "S" + "306.00 285.62 m" + "308.30 283.32 l" + "306.00 281.02 l" + "303.70 283.32 l" + "h" + "S" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "236.16 488.88 Td" + "0.00 -14.30 Td" + "#hex:000401be01be011801c1011801d601de01c90003019b015d000301d6016601430003002001c101180133 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "230.40 450.00 Td" + "0.00 -8.25 Td" + "#hex:00e001d001c4017001f601d0021301fe000301a0020b017801c20476000301b901780193017801c40170014d01f60231 Tj" + "ET" + "0.90 w" + "230.40 434.16 m" + "381.60 434.16 l" + "S" + "0.35 w" + "230.40 431.64 m" + "381.60 431.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "230.40 426.96 Td" + "0.00 -8.80 Td" + "#hex:00c10166016b01c90003016b01d60143018d0003025b01c101c901d60003011801be01be0143011801c101c9000301d6019b000301330143000301180003006e011801c1015e0143000301c90143011801840143013b Tj" + "0.00 -8.80 Td" + "#hex:016b01c1019b018f00030133011801c101c101430184000301f60143016b015e0166016b018f015e0003056e05690569000301be019b01de018f013b01c90608000300c101660143 Tj" + "0.00 -8.80 Td" + "#hex:0133011801c101c10143018400030166011801c90003011800030166016b013b013b0143018f00030134011801d60134016605fc000301f60166016b01340166000301340118018f000301330143 Tj" + "0.00 -8.80 Td" + "#hex:015d019b01de018f013b000301f6016b01d6016600030118000301c901de01340134014301c901c9015d01de01840003002700200003056b056900030058018f01d6014301840184016b015e0143018f01340143 Tj" + "0.00 -8.80 Td" + "#hex:06280058018f01f5014301c901d6016b015e011801d6016b019b018f06290003013401660143013401810608000300ac014301840143011801c9016b018f015e000301d60166014300030134011801d601340166 Tj" + "0.00 -8.80 Td" + "#hex:01de018f0184019b0134018101c90003011800030166011801d6013401660003011801d60003019b018f014300030143018f013b0003019b015d000301d60166014300030133011801c101c10143018405fc Tj" + "0.00 -8.80 Td" + "#hex:011801840184019b01f6016b018f015e000301d601f6019b000300780143013b016b01de018d0003019b01c1000301c9018d011801840184014301c10003013401c10143011801d601de01c1014301c9 Tj" + "0.00 -8.80 Td" + "#hex:01d6019b0003013401c1011801f601840003016b018f01c9016b013b01430608000300c10143018f00030184014301f5014301c101c90003011801c10143000301c9014301d60003016b018f00030118000301c1019b01f6 Tj" + "0.00 -8.80 Td" + "#hex:011801d6000301d6016601430003015d011801c100030143018f013b05fc000301430118013401660003016b018f000301180003018f014301de01d601c101180184000301be019b01c9016b01d6016b019b018f05fc Tj" + "0.00 -8.80 Td" + "#hex:0118013301840143000301d6019b0003018d019b01f5014300030143016b01d60166014301c1000301de01be0003019b01c10003013b019b01f6018f0608000300e001660143018f Tj" + "0.00 -8.80 Td" + "#hex:0134014301c101d60118016b018f00030184014301f5014301c101c90003011801c10143000301de01c90143013b05fc000301d6016601430003011801be01be011801c1011801d601de01c9 Tj" + "0.00 -8.80 Td" + "#hex:01d601c10118018f01c9015d019b01c1018d01c9000301d6019b000301c1014301c90143018d013301840143000301180003015e016b0118018f01d600030184019b013301c901d6014301c10608000300c101660143 Tj" + "0.00 -8.80 Td" + "#hex:011801be01be011801c1011801d601de01c90003019b015d000301d6016601430003002001c1011801330003016b01c9000301180003006e011801c1015e01430003019b0133017d0143013401d6000301f6016b01d60166 Tj" + "0.00 -8.80 Td" + "#hex:01d6016601430003015d019b01840184019b01f6016b018f015e000301c901d6011801d6016b01c901d6016b013401c905fb0003000401c1018d019b01c1000300200184011801c901c905fb0003056b0569 Tj" + "ET" + "BT" + "/F1 6.20 Tf" + "280.52 291.60 Td" + "#hex:016901d001c4020b01a001c4021301780170000301d001c40003020b019b017800030168014d016901b6 Tj" + "ET" + "1.10 w" + "54.72 515.52 m" + "197.28 515.52 l" + "209.52 503.28 l" + "209.52 288.72 l" + "197.28 276.48 l" + "54.72 276.48 l" + "42.48 288.72 l" + "42.48 503.28 l" + "s" + "0.45 w" + "54.72 512.50 m" + "197.28 512.50 l" + "206.50 503.28 l" + "206.50 288.72 l" + "197.28 279.50 l" + "54.72 279.50 l" + "45.50 288.72 l" + "45.50 503.28 l" + "s" + "0.90 w" + "50.04 511.49 m" + "53.57 507.96 l" + "50.04 504.43 l" + "46.51 507.96 l" + "h" + "f" + "55.15 507.96 m" + "63.29 507.96 l" + "S" + "50.04 502.85 m" + "50.04 494.71 l" + "S" + "201.96 511.49 m" + "205.49 507.96 l" + "201.96 504.43 l" + "198.43 507.96 l" + "h" + "f" + "196.85 507.96 m" + "188.71 507.96 l" + "S" + "201.96 502.85 m" + "201.96 494.71 l" + "S" + "50.04 287.57 m" + "53.57 284.04 l" + "50.04 280.51 l" + "46.51 284.04 l" + "h" + "f" + "55.15 284.04 m" + "63.29 284.04 l" + "S" + "50.04 289.15 m" + "50.04 297.29 l" + "S" + "201.96 287.57 m" + "205.49 284.04 l" + "201.96 280.51 l" + "198.43 284.04 l" + "h" + "f" + "196.85 284.04 m" + "188.71 284.04 l" + "S" + "201.96 289.15 m" + "201.96 297.29 l" + "S" + "1.00 w" + "0.50 w" + "56.16 504.36 m" + "102.96 504.36 l" + "S" + "149.04 504.36 m" + "195.84 504.36 l" + "S" + "0.60 w" + "109.44 507.10 m" + "112.18 504.36 l" + "109.44 501.62 l" + "106.70 504.36 l" + "h" + "f" + "117.72 507.10 m" + "120.46 504.36 l" + "117.72 501.62 l" + "114.98 504.36 l" + "h" + "f" + "126.00 507.10 m" + "128.74 504.36 l" + "126.00 501.62 l" + "123.26 504.36 l" + "h" + "f" + "134.28 507.10 m" + "137.02 504.36 l" + "134.28 501.62 l" + "131.54 504.36 l" + "h" + "f" + "142.56 507.10 m" + "145.30 504.36 l" + "142.56 501.62 l" + "139.82 504.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "72.00 283.32 m" + "119.88 283.32 l" + "S" + "132.12 283.32 m" + "180.00 283.32 l" + "S" + "126.00 285.62 m" + "128.30 283.32 l" + "126.00 281.02 l" + "123.70 283.32 l" + "h" + "S" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "56.16 488.88 Td" + "0.00 -14.30 Td" + "#hex:000401c101c1019b01f6000306af056c Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "50.40 450.00 Td" + "0.00 -8.25 Td" + "#hex:00e00178014d01f301d001c404760003022a017801f60231000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "50.40 434.16 m" + "201.60 434.16 l" + "S" + "0.35 w" + "50.40 431.64 m" + "201.60 431.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "50.40 426.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f5014300030118000306af056c00030133019b018f01de01c9000301d6019b0003011801d601d601180134018100030118018f013b0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01c1019b0184018401c90003018d0118013b0143000301f6016b01d60166000301d60166016b01c9000301be016b0143013401430003019b015d0003018d0118015e016b0134 Tj" + "0.00 -8.80 Td" + "#hex:0118018d018d01de018f016b01d6016b019b018f0608000300c10166014300030133019b018f01de01c90003016b01c90003013b014301d6014301c1018d016b018f0143013b0003013301fc Tj" + "0.00 -8.80 Td" + "#hex:01d601660143000301c1011801c1016b01d601fc0003019b015d000301d60166014300030118018d018d01de018f016b01d6016b019b018f060800030086018f013401430003016b01d600030166016b01d601c900030118 Tj" + "0.00 -8.80 Td" + "#hex:01d6011801c1015e014301d605fc000301d60166014300030118018d018d01de018f016b01d6016b019b018f0003016b01c90003018f019b00030184019b018f015e014301c1 Tj" + "0.00 -8.80 Td" + "#hex:018d0118015e016b0134011801840608 Tj" + "ET" + "1.10 w" + "414.72 263.52 m" + "557.28 263.52 l" + "569.52 251.28 l" + "569.52 36.72 l" + "557.28 24.48 l" + "414.72 24.48 l" + "402.48 36.72 l" + "402.48 251.28 l" + "s" + "0.45 w" + "414.72 260.50 m" + "557.28 260.50 l" + "566.50 251.28 l" + "566.50 36.72 l" + "557.28 27.50 l" + "414.72 27.50 l" + "405.50 36.72 l" + "405.50 251.28 l" + "s" + "0.90 w" + "410.04 259.49 m" + "413.57 255.96 l" + "410.04 252.43 l" + "406.51 255.96 l" + "h" + "f" + "415.15 255.96 m" + "423.29 255.96 l" + "S" + "410.04 250.85 m" + "410.04 242.71 l" + "S" + "561.96 259.49 m" + "565.49 255.96 l" + "561.96 252.43 l" + "558.43 255.96 l" + "h" + "f" + "556.85 255.96 m" + "548.71 255.96 l" + "S" + "561.96 250.85 m" + "561.96 242.71 l" + "S" + "410.04 35.57 m" + "413.57 32.04 l" + "410.04 28.51 l" + "406.51 32.04 l" + "h" + "f" + "415.15 32.04 m" + "423.29 32.04 l" + "S" + "410.04 37.15 m" + "410.04 45.29 l" + "S" + "561.96 35.57 m" + "565.49 32.04 l" + "561.96 28.51 l" + "558.43 32.04 l" + "h" + "f" + "556.85 32.04 m" + "548.71 32.04 l" + "S" + "561.96 37.15 m" + "561.96 45.29 l" + "S" + "1.00 w" + "0.50 w" + "416.16 252.36 m" + "462.96 252.36 l" + "S" + "509.04 252.36 m" + "555.84 252.36 l" + "S" + "0.60 w" + "469.44 255.10 m" + "472.18 252.36 l" + "469.44 249.62 l" + "466.70 252.36 l" + "h" + "f" + "477.72 255.10 m" + "480.46 252.36 l" + "477.72 249.62 l" + "474.98 252.36 l" + "h" + "f" + "486.00 255.10 m" + "488.74 252.36 l" + "486.00 249.62 l" + "483.26 252.36 l" + "h" + "f" + "494.28 255.10 m" + "497.02 252.36 l" + "494.28 249.62 l" + "491.54 252.36 l" + "h" + "f" + "502.56 255.10 m" + "505.30 252.36 l" + "502.56 249.62 l" + "499.82 252.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "432.00 31.32 m" + "479.88 31.32 l" + "S" + "492.12 31.32 m" + "540.00 31.32 l" + "S" + "486.00 33.62 m" + "488.30 31.32 l" + "486.00 29.02 l" + "483.70 31.32 l" + "h" + "S" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 12.00 Tf" + "416.16 246.96 Td" + "0.00 -13.20 Td" + "#hex:00c1019b018d01430003019b015d0003006e01430118013b014301c101c90166016b01be00030118018f013b Tj" + "0.00 -13.20 Td" + "#hex:0058018f025d01de0143018f013401430003062801c101430118013b000301f6016b01d60166 Tj" + "0.00 -13.20 Td" + "#hex:018d019b013b016b025b014301c101c90629 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "410.40 198.00 Td" + "0.00 -8.25 Td" + "#hex:00e001d001c4017001f601d0021301fe000301a0020b017801c204760003022a017801f60231000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "410.40 182.16 m" + "561.60 182.16 l" + "S" + "0.35 w" + "410.40 179.64 m" + "561.60 179.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "410.40 174.96 Td" + "0.00 -8.80 Td" + "#hex:00c10166016b01c900030133019b019b018100030134019b018f01d60118016b018f01c90003015e01de016b013b01430184016b018f014301c90003015d019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:016b018f025d01de0143018f0134016b018f015e00030118018f013b000301340166011801c1018d016b018f015e0003019b01d60166014301c101c905fc00030118018f013b0003016b01d601c9 Tj" + "0.00 -8.80 Td" + "#hex:01f6019b01c1013b01c90003011801c10143000301340166011801c1015e0143013b000301f6016b01d601660003018d0118015e016b0134060800030058015d000301fc019b01de000301c901be0143018f013b Tj" + "0.00 -8.80 Td" + "#hex:056d057100030166019b01de01c101c90003019b01f5014301c100030118000301be014301c1016b019b013b0003019b015d0003056f0003013b011801fc01c90003019b01c10003015d014301f6014301c1 Tj" + "0.00 -8.80 Td" + "#hex:01c901d601de013b01fc016b018f015e000301d60166014300030133019b019b0181065a01c900030134019b018f01d60143018f01d601c900030118018f013b Tj" + "0.00 -8.80 Td" + "#hex:01be01c10118013401d6016b0134016b018f015e0003016b01d601c90003015e01de016b013b01430184016b018f014301c905fc000301fc019b01de01c1000300200166011801c1016b01c9018d0118 Tj" + "0.00 -8.80 Td" + "#hex:01c90134019b01c101430003016b018f013401c10143011801c9014301c90003013301fc0003056b05fc0003011801c90003013b019b014301c9000301fc019b01de01c1 Tj" + "0.00 -8.80 Td" + "#hex:018d011801fb016b018d01de018d0003015d019b01c1000301d60166011801d6000301c90134019b01c101430608000300c1016601430003018d0118018f01de01180184000301d601660143018f Tj" + "0.00 -8.80 Td" + "#hex:0184019b01c9014301c90003016b01d601c90003018d0118015e016b013405fc0003013301de01d6000301c10143015e0118016b018f01c90003016b01d60003016b018f00030118000301340143018f01d601de01c101fc0608 Tj" + "ET" + "1.10 w" + "234.72 263.52 m" + "377.28 263.52 l" + "389.52 251.28 l" + "389.52 36.72 l" + "377.28 24.48 l" + "234.72 24.48 l" + "222.48 36.72 l" + "222.48 251.28 l" + "s" + "0.45 w" + "234.72 260.50 m" + "377.28 260.50 l" + "386.50 251.28 l" + "386.50 36.72 l" + "377.28 27.50 l" + "234.72 27.50 l" + "225.50 36.72 l" + "225.50 251.28 l" + "s" + "1.00 w" + "0.50 w" + "236.16 252.36 m" + "282.96 252.36 l" + "S" + "329.04 252.36 m" + "375.84 252.36 l" + "S" + "0.60 w" + "289.44 255.10 m" + "292.18 252.36 l" + "289.44 249.62 l" + "286.70 252.36 l" + "h" + "f" + "297.72 255.10 m" + "300.46 252.36 l" + "297.72 249.62 l" + "294.98 252.36 l" + "h" + "f" + "306.00 255.10 m" + "308.74 252.36 l" + "306.00 249.62 l" + "303.26 252.36 l" + "h" + "S" + "314.28 255.10 m" + "317.02 252.36 l" + "314.28 249.62 l" + "311.54 252.36 l" + "h" + "S" + "322.56 255.10 m" + "325.30 252.36 l" + "322.56 249.62 l" + "319.82 252.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "252.00 31.32 m" + "299.88 31.32 l" + "S" + "312.12 31.32 m" + "360.00 31.32 l" + "S" + "306.00 33.62 m" + "308.30 31.32 l" + "306.00 29.02 l" + "303.70 31.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "367.20 199.08 m" + "373.32 199.08 l" + "375.84 196.56 l" + "375.84 191.16 l" + "373.32 188.64 l" + "367.20 188.64 l" + "364.68 191.16 l" + "364.68 196.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "367.73 191.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "236.16 236.88 Td" + "0.00 -14.30 Td" + "#hex:003101fc014301c90003019b015d000300200166011801c1018d016b018f015e Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "230.40 198.00 Td" + "0.00 -8.25 Td" + "#hex:00e001d001c4017001f601d0021301fe000301a0020b017801c204760003021301c4016901d001c201c201d001c4 Tj" + "ET" + "0.90 w" + "230.40 182.16 m" + "381.60 182.16 l" + "S" + "0.35 w" + "230.40 179.64 m" + "381.60 179.64 l" + "S" + "1.00 w" + "0.80 w" + "BT" + "/F5 5.50 Tf" + "292.40 169.92 Td" + "\"CHARGES\" Tj" + "ET" + "299.30 158.40 m" + "299.30 160.47 297.63 162.14 295.56 162.14 c" + "293.49 162.14 291.82 160.47 291.82 158.40 c" + "291.82 156.33 293.49 154.66 295.56 154.66 c" + "297.63 154.66 299.30 156.33 299.30 158.40 c" + "s" + "309.74 158.40 m" + "309.74 160.47 308.07 162.14 306.00 162.14 c" + "303.93 162.14 302.26 160.47 302.26 158.40 c" + "302.26 156.33 303.93 154.66 306.00 154.66 c" + "308.07 154.66 309.74 156.33 309.74 158.40 c" + "s" + "320.18 158.40 m" + "320.18 160.47 318.51 162.14 316.44 162.14 c" + "314.37 162.14 312.70 160.47 312.70 158.40 c" + "312.70 156.33 314.37 154.66 316.44 154.66 c" + "318.51 154.66 320.18 156.33 320.18 158.40 c" + "s" + "1.00 w" + "0.35 w" + "230.40 146.88 m" + "381.60 146.88 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "230.40 141.12 Td" + "0.00 -8.80 Td" + "#hex:00c10166014301c901430003013401c101fc01c901d601180184000301840143018f01c9014301c90003025b01d60003019b01f5014301c1000301d6016601430003014301fc014301c90608000300c10166014301fc Tj" + "0.00 -8.80 Td" + "#hex:0166011801f501430003056c000301340166011801c1015e014301c90608000300e00166016b01840143000301f60143011801c1016b018f015e000301d601660143018d05fc000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:01340118018f0003014301fb01be0143018f013b0003056a000301340166011801c1015e01430003011801c900030118018f00030118013401d6016b019b018f000301d6019b00030134011801c901d6000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01340166011801c1018d000301be014301c101c9019b018f000301c901be0143018401840003062801c9011801f501430003002700200003056a056c06290003019b018f00030118 Tj" + "0.00 -8.80 Td" + "#hex:016601de018d0118018f019b016b013b000301f6016b01d60166016b018f0003056c05690003015d0143014301d60003019b015d000301fc019b01de05fc000301be01c1019b01f5016b013b0143013b Tj" + "0.00 -8.80 Td" + "#hex:01d60166011801d6000301fc019b01de00030118018f013b000301d601660143000301d6011801c1015e014301d6000301340118018f000301c901430143000301430118013401660003019b01d60166014301c10608 Tj" + "0.00 -8.80 Td" + "#hex:00c101660143000301840143018f01c9014301c9000301c10143015e0118016b018f00030118018401840003014301fb01be0143018f013b0143013b000301340166011801c1015e014301c9 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "277.72 53.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "BT" + "/F1 6.20 Tf" + "280.52 68.40 Td" + "#hex:016901d001c4020b01a001c4021301780170000301d001c40003020b019b017800030168014d016901b6 Tj" + "ET" + "1.10 w" + "54.72 263.52 m" + "197.28 263.52 l" + "209.52 251.28 l" + "209.52 36.72 l" + "197.28 24.48 l" + "54.72 24.48 l" + "42.48 36.72 l" + "42.48 251.28 l" + "s" + "0.45 w" + "54.72 260.50 m" + "197.28 260.50 l" + "206.50 251.28 l" + "206.50 36.72 l" + "197.28 27.50 l" + "54.72 27.50 l" + "45.50 36.72 l" + "45.50 251.28 l" + "s" + "0.70 w" + "50.04 258.55 m" + "52.63 255.96 l" + "50.04 253.37 l" + "47.45 255.96 l" + "h" + "S" + "201.96 258.55 m" + "204.55 255.96 l" + "201.96 253.37 l" + "199.37 255.96 l" + "h" + "S" + "50.04 34.63 m" + "52.63 32.04 l" + "50.04 29.45 l" + "47.45 32.04 l" + "h" + "S" + "201.96 34.63 m" + "204.55 32.04 l" + "201.96 29.45 l" + "199.37 32.04 l" + "h" + "S" + "1.00 w" + "0.50 w" + "56.16 252.36 m" + "102.96 252.36 l" + "S" + "149.04 252.36 m" + "195.84 252.36 l" + "S" + "0.60 w" + "109.44 255.10 m" + "112.18 252.36 l" + "109.44 249.62 l" + "106.70 252.36 l" + "h" + "f" + "117.72 255.10 m" + "120.46 252.36 l" + "117.72 249.62 l" + "114.98 252.36 l" + "h" + "f" + "126.00 255.10 m" + "128.74 252.36 l" + "126.00 249.62 l" + "123.26 252.36 l" + "h" + "f" + "134.28 255.10 m" + "137.02 252.36 l" + "134.28 249.62 l" + "131.54 252.36 l" + "h" + "S" + "142.56 255.10 m" + "145.30 252.36 l" + "142.56 249.62 l" + "139.82 252.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "72.00 31.32 m" + "119.88 31.32 l" + "S" + "132.12 31.32 m" + "180.00 31.32 l" + "S" + "126.00 33.62 m" + "128.30 31.32 l" + "126.00 29.02 l" + "123.70 31.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "187.20 199.08 m" + "193.32 199.08 l" + "195.84 196.56 l" + "195.84 191.16 l" + "193.32 188.64 l" + "187.20 188.64 l" + "184.68 191.16 l" + "184.68 196.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "187.73 191.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "56.16 236.88 Td" + "0.00 -14.30 Td" + "#hex:002001de013301430003019b015d0003004a019b01c101340143 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "50.40 198.00 Td" + "0.00 -8.25 Td" + "#hex:00e001d001c4017001f601d0021301fe000301a0020b017801c20476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "50.40 182.16 m" + "201.60 182.16 l" + "S" + "0.35 w" + "50.40 179.64 m" + "201.60 179.64 l" + "S" + "1.00 w" + "0.80 w" + "BT" + "/F5 5.50 Tf" + "112.40 169.92 Td" + "\"CHARGES\" Tj" + "ET" + "96.04 158.40 m" + "140.68 158.40 l" + "S" + "BT" + "/F5 7.00 Tf" + "144.28 159.48 Td" + "\"/ 36\" Tj" + "ET" + "1.00 w" + "0.35 w" + "50.40 146.88 m" + "201.60 146.88 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "50.40 141.12 Td" + "0.00 -8.80 Td" + "#hex:00c10166016b01c90003013401de013301430003016b01c9000301180133019b01de01d600030118018f0003016b018f0134016600030118013401c1019b01c901c90608000300310118013401660003015d011801340143 Tj" + "0.00 -8.80 Td" + "#hex:0166011801c9000301180003013b016b01c901d6016b018f013401d60003018d011801c10181016b018f015e0003019b018f0003016b01d6000301d60166011801d6000301340118018f000301330143 Tj" + "0.00 -8.80 Td" + "#hex:01be01c1014301c901c90143013b0608000300c1016601430003013401de01330143000301c901d6011801c101d601c9000301f6016b01d601660003056c056f000301340166011801c1015e014301c905fc Tj" + "0.00 -8.80 Td" + "#hex:0118018f013b0003016b01d6000301c10143015e0118016b018f01c90003056a013b056b05690003014301fb01be0143018f013b0143013b000301340166011801c1015e014301c90003013b0118016b018401fc Tj" + "0.00 -8.80 Td" + "#hex:011801d60003013b011801f6018f0608000300e6019b01de000301340118018f000301de01c9014300030118018f00030118013401d6016b019b018f000301d6019b000301be01c1014301c901c90003019b018f0143 Tj" + "0.00 -8.80 Td" + "#hex:019b015d000301d6016601430003013401de01330143065a01c90003015d01180134014301c905fc0003014301fb01be0143018f013b016b018f015e000301180003018f01de018d0133014301c10003019b015d Tj" + "0.00 -8.80 Td" + "#hex:01340166011801c1015e014301c900030133011801c90143013b0003019b018f000301d601660143000301340166019b01c90143018f0003015d01180134014305fc0003011801c9000301c90166019b01f6018f Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "97.72 53.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "BT" + "/F1 6.20 Tf" + "100.52 68.40 Td" + "#hex:016901d001c4020b01a001c4021301780170000301d001c40003020b019b017800030168014d016901b6 Tj" + "ET"] + ["0.88 0.88 0.88 RG" + "36.00 18.00 m" + "36.00 774.00 l" + "S" + "216.00 18.00 m" + "216.00 774.00 l" + "S" + "396.00 18.00 m" + "396.00 774.00 l" + "S" + "576.00 18.00 m" + "576.00 774.00 l" + "S" + "36.00 18.00 m" + "576.00 18.00 l" + "S" + "36.00 270.00 m" + "576.00 270.00 l" + "S" + "36.00 522.00 m" + "576.00 522.00 l" + "S" + "36.00 774.00 m" + "576.00 774.00 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 781.20 Td" + "#hex:00a9014d01930178000303fa Tj" + "ET" + "1.10 w" + "414.72 767.52 m" + "557.28 767.52 l" + "569.52 755.28 l" + "569.52 540.72 l" + "557.28 528.48 l" + "414.72 528.48 l" + "402.48 540.72 l" + "402.48 755.28 l" + "s" + "0.45 w" + "414.72 764.50 m" + "557.28 764.50 l" + "566.50 755.28 l" + "566.50 540.72 l" + "557.28 531.50 l" + "414.72 531.50 l" + "405.50 540.72 l" + "405.50 755.28 l" + "s" + "0.70 w" + "410.04 762.55 m" + "412.63 759.96 l" + "410.04 757.37 l" + "407.45 759.96 l" + "h" + "S" + "561.96 762.55 m" + "564.55 759.96 l" + "561.96 757.37 l" + "559.37 759.96 l" + "h" + "S" + "410.04 538.63 m" + "412.63 536.04 l" + "410.04 533.45 l" + "407.45 536.04 l" + "h" + "S" + "561.96 538.63 m" + "564.55 536.04 l" + "561.96 533.45 l" + "559.37 536.04 l" + "h" + "S" + "1.00 w" + "0.50 w" + "416.16 756.36 m" + "462.96 756.36 l" + "S" + "509.04 756.36 m" + "555.84 756.36 l" + "S" + "0.60 w" + "469.44 759.10 m" + "472.18 756.36 l" + "469.44 753.62 l" + "466.70 756.36 l" + "h" + "f" + "477.72 759.10 m" + "480.46 756.36 l" + "477.72 753.62 l" + "474.98 756.36 l" + "h" + "f" + "486.00 759.10 m" + "488.74 756.36 l" + "486.00 753.62 l" + "483.26 756.36 l" + "h" + "f" + "494.28 759.10 m" + "497.02 756.36 l" + "494.28 753.62 l" + "491.54 756.36 l" + "h" + "S" + "502.56 759.10 m" + "505.30 756.36 l" + "502.56 753.62 l" + "499.82 756.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "432.00 535.32 m" + "479.88 535.32 l" + "S" + "492.12 535.32 m" + "540.00 535.32 l" + "S" + "486.00 537.62 m" + "488.30 535.32 l" + "486.00 533.02 l" + "483.70 535.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "547.20 703.08 m" + "553.32 703.08 l" + "555.84 700.56 l" + "555.84 695.16 l" + "553.32 692.64 l" + "547.20 692.64 l" + "544.68 695.16 l" + "544.68 700.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "547.73 695.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "416.16 748.08 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc000300a90118013b013b0143013b Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "410.40 702.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "410.40 686.16 m" + "561.60 686.16 l" + "S" + "0.35 w" + "410.40 683.64 m" + "561.60 683.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "410.40 678.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "457.72 557.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "234.72 767.52 m" + "377.28 767.52 l" + "389.52 755.28 l" + "389.52 540.72 l" + "377.28 528.48 l" + "234.72 528.48 l" + "222.48 540.72 l" + "222.48 755.28 l" + "s" + "0.45 w" + "234.72 764.50 m" + "377.28 764.50 l" + "386.50 755.28 l" + "386.50 540.72 l" + "377.28 531.50 l" + "234.72 531.50 l" + "225.50 540.72 l" + "225.50 755.28 l" + "s" + "1.00 w" + "0.50 w" + "236.16 756.36 m" + "282.96 756.36 l" + "S" + "329.04 756.36 m" + "375.84 756.36 l" + "S" + "0.60 w" + "289.44 759.10 m" + "292.18 756.36 l" + "289.44 753.62 l" + "286.70 756.36 l" + "h" + "f" + "297.72 759.10 m" + "300.46 756.36 l" + "297.72 753.62 l" + "294.98 756.36 l" + "h" + "f" + "306.00 759.10 m" + "308.74 756.36 l" + "306.00 753.62 l" + "303.26 756.36 l" + "h" + "S" + "314.28 759.10 m" + "317.02 756.36 l" + "314.28 753.62 l" + "311.54 756.36 l" + "h" + "S" + "322.56 759.10 m" + "325.30 756.36 l" + "322.56 753.62 l" + "319.82 756.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "252.00 535.32 m" + "299.88 535.32 l" + "S" + "312.12 535.32 m" + "360.00 535.32 l" + "S" + "306.00 537.62 m" + "308.30 535.32 l" + "306.00 533.02 l" + "303.70 535.32 l" + "h" + "S" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "236.16 748.08 Td" + "0.00 -14.30 Td" + "#hex:0004013b0118018d0118018f01d6016b018f01430003000401c1018d019b01c105fc Tj" + "0.00 -14.30 Td" + "#hex:002001660118016b018f000300b40166016b01c101d6 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "230.40 702.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f604760003021301c4016901d001c201c201d001c4 Tj" + "ET" + "0.90 w" + "230.40 686.16 m" + "381.60 686.16 l" + "S" + "0.35 w" + "230.40 683.64 m" + "381.60 683.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "230.40 678.96 Td" + "0.00 -8.80 Td" + "#hex:00c10166016b01c9000301c901de016b01d60003019b015d0003011801c1018d019b01c10003016b01c9000301c10143016b018f015d019b01c101340143013b000301f6016b01d60166 Tj" + "0.00 -8.80 Td" + "#hex:0118013b0118018d0118018f01d6016b018f014305fc0003019b018f01430003019b015d000301d60166014300030166011801c1013b014301c901d6000301c901de013301c901d60118018f0134014301c9 Tj" + "0.00 -8.80 Td" + "#hex:016b018f0003014301fb016b01c901d60143018f013401430608000300e00166016b01840143000301fc019b01de065a01c10143000301f60143011801c1016b018f015e0003016b01d605fc00030118018f01fc Tj" + "0.00 -8.80 Td" + "#hex:013401c1016b01d6016b01340118018400030166016b01d600030118015e0118016b018f01c901d6000301fc019b01de0003013301430134019b018d014301c9000301180003018f019b01c1018d01180184 Tj" + "0.00 -8.80 Td" + "#hex:0166016b01d60608 Tj" + "ET" + "1.10 w" + "54.72 767.52 m" + "197.28 767.52 l" + "209.52 755.28 l" + "209.52 540.72 l" + "197.28 528.48 l" + "54.72 528.48 l" + "42.48 540.72 l" + "42.48 755.28 l" + "s" + "1.00 w" + "0.50 w" + "56.16 756.36 m" + "102.96 756.36 l" + "S" + "149.04 756.36 m" + "195.84 756.36 l" + "S" + "0.60 w" + "109.44 759.10 m" + "112.18 756.36 l" + "109.44 753.62 l" + "106.70 756.36 l" + "h" + "f" + "117.72 759.10 m" + "120.46 756.36 l" + "117.72 753.62 l" + "114.98 756.36 l" + "h" + "S" + "126.00 759.10 m" + "128.74 756.36 l" + "126.00 753.62 l" + "123.26 756.36 l" + "h" + "S" + "134.28 759.10 m" + "137.02 756.36 l" + "134.28 753.62 l" + "131.54 756.36 l" + "h" + "S" + "142.56 759.10 m" + "145.30 756.36 l" + "142.56 753.62 l" + "139.82 756.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "72.00 535.32 m" + "119.88 535.32 l" + "S" + "132.12 535.32 m" + "180.00 535.32 l" + "S" + "126.00 537.62 m" + "128.30 535.32 l" + "126.00 533.02 l" + "123.70 535.32 l" + "h" + "S" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "56.16 740.88 Td" + "0.00 -14.30 Td" + "#hex:00a9019b01d6016b019b018f0003019b015d000300200184016b018d0133016b018f015e Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "50.40 702.00 Td" + "0.00 -8.25 Td" + "#hex:00a901d0020b01a001d001c404760003016901d001c201c201d001c4 Tj" + "ET" + "0.90 w" + "50.40 686.16 m" + "201.60 686.16 l" + "S" + "0.35 w" + "50.40 683.64 m" + "201.60 683.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "50.40 678.96 Td" + "0.00 -8.80 Td" + "#hex:00e001660143018f000301fc019b01de0003013b01c1016b018f0181000301d60166016b01c9000301be019b01d6016b019b018f05fc000301fc019b01de0003015e0118016b018f00030118 Tj" + "0.00 -8.80 Td" + "#hex:01340184016b018d0133016b018f015e000301c901be01430143013b0003014301c001de01180184000301d6019b000301fc019b01de01c1000301f6011801840181016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:01c901be01430143013b0003015d019b01c10003056a00030166019b01de01c106080003002701de01c1016b018f015e000301d60166016b01c9000301d6016b018d014305fc000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:0166011801f5014300030118013b01f50118018f01d60118015e01430003019b018f000300b401d601c10143018f015e01d6016600030628000401d601660184014301d6016b013401c90629 Tj" + "0.00 -8.80 Td" + "#hex:0134016601430134018101c9000301fc019b01de0003018d011801810143000301d6019b000301340184016b018d01330608000300c101660143000301be019b01d6016b019b018f0003016b01c9 Tj" + "0.00 -8.80 Td" + "#hex:01c9014301be011801c1011801d60143013b0003016b018f01d6019b0003013301c1019b01f6018f05fc000301c9016b018401f5014301c105fc00030118018f013b0003015e01c1011801fc Tj" + "0.00 -8.80 Td" + "#hex:0184011801fc014301c101c9000301c1014301c90143018d01330184016b018f015e000301330118018f013b01c90003019b015d000301c901d6019b018f01430608000300b4016601180181016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:01d60166014300030133019b01d601d6018401430003015d0118016b018401c9000301d6019b0003018d016b01fb000301d60166014300030134019b0184019b01c101c90608 Tj" + "ET" + "1.10 w" + "414.72 515.52 m" + "557.28 515.52 l" + "569.52 503.28 l" + "569.52 288.72 l" + "557.28 276.48 l" + "414.72 276.48 l" + "402.48 288.72 l" + "402.48 503.28 l" + "s" + "1.00 w" + "0.50 w" + "416.16 504.36 m" + "462.96 504.36 l" + "S" + "509.04 504.36 m" + "555.84 504.36 l" + "S" + "0.60 w" + "469.44 507.10 m" + "472.18 504.36 l" + "469.44 501.62 l" + "466.70 504.36 l" + "h" + "S" + "477.72 507.10 m" + "480.46 504.36 l" + "477.72 501.62 l" + "474.98 504.36 l" + "h" + "S" + "486.00 507.10 m" + "488.74 504.36 l" + "486.00 501.62 l" + "483.26 504.36 l" + "h" + "S" + "494.28 507.10 m" + "497.02 504.36 l" + "494.28 501.62 l" + "491.54 504.36 l" + "h" + "S" + "502.56 507.10 m" + "505.30 504.36 l" + "502.56 501.62 l" + "499.82 504.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "432.00 283.32 m" + "479.88 283.32 l" + "S" + "492.12 283.32 m" + "540.00 283.32 l" + "S" + "486.00 285.62 m" + "488.30 283.32 l" + "486.00 281.02 l" + "483.70 283.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "547.20 451.08 m" + "553.32 451.08 l" + "555.84 448.56 l" + "555.84 443.16 l" + "553.32 440.64 l" + "547.20 440.64 l" + "544.68 443.16 l" + "544.68 448.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "547.73 443.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "416.16 488.88 Td" + "0.00 -14.30 Td" + "#hex:001f0143018401d60003019b015d0003002701f6011801c101f50143018f0181016b018f013b Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "410.40 450.00 Td" + "0.00 -8.25 Td" + "#hex:00e001d001c4017001f601d0021301fe000301a0020b017801c20476000301f6014d01f601a0020b02310003022a014d01f601a0017801fe Tj" + "ET" + "0.90 w" + "410.40 434.16 m" + "561.60 434.16 l" + "S" + "0.35 w" + "410.40 431.64 m" + "561.60 431.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "410.40 426.96 Td" + "0.00 -8.80 Td" + "#hex:00e00166016b01840143000301f60143011801c1016b018f015e000301d60166016b01c9000301330143018401d605fc000301fc019b01de0003015e0118016b018f000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:015d019b01840184019b01f6016b018f015e000301330143018f0143025b01d601c905fb000305f8000300e6019b01de01c100030020019b018f01c901d6016b01d601de01d6016b019b018f Tj" + "0.00 -8.80 Td" + "#hex:01c90134019b01c101430003016b018f013401c10143011801c9014301c90003013301fc0003056b05fc000301d6019b000301180003018d011801fb016b018d01de018d0003019b015d0003056b05690608000305f8 Tj" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f5014300030118013b01f50118018f01d60118015e01430003019b018f000300200166011801c1016b01c9018d0118 Tj" + "0.00 -8.80 Td" + "#hex:062800a9014301c101c901de011801c9016b019b018f062900030134016601430134018101c90003018d0118013b0143000301d6019b0003016b018f01d6014301c10118013401d6000301f6016b01d60166 Tj" + "0.00 -8.80 Td" + "#hex:013b01f6011801c101f5014301c9060800030058018f00030118013b013b016b01d6016b019b018f05fc000301f60166016b018401430003011801d601d601de018f0143013b000301d6019b000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01330143018401d605fc000301fc019b01de00030166011801f50143000301180003056e0569000301be014301c101340143018f01d60003013401660118018f01340143000301430118013401660003013b011801fc Tj" + "0.00 -8.80 Td" + "#hex:011801d60003013b011801f6018f0003019b015d0003015e01c1019b01f6016b018f015e000301180003015d01de01840184000301330143011801c1013b0003016b015d000301fc019b01de065a01c10143 Tj" + "0.00 -8.80 Td" + "#hex:0134011801be01180133018401430003019b015d0003015e01c1019b01f6016b018f015e0003019b018f014305fc0003019b01c100030118000301f5016b01c9016b0133018401fc000301d60166016b01340181014301c1 Tj" + "0.00 -8.80 Td" + "#hex:01330143011801c1013b0003016b015d000301fc019b01de00030118018401c101430118013b01fc00030166011801f501430003019b018f0143060800030058015d000301fc019b01de0003011801c10143018f065a01d6 Tj" + "0.00 -8.80 Td" + "#hex:01180003013b01f6011801c1015d05fc000301fc019b01de0003015e0118016b018f000301d6016601430003015d019b01840184019b01f6016b018f015e00030118013b013b016b01d6016b019b018f01180184 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "457.72 305.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "BT" + "/F1 6.20 Tf" + "460.52 320.40 Td" + "#hex:016901d001c4020b01a001c4021301780170000301d001c40003020b019b017800030168014d016901b6 Tj" + "ET" + "1.10 w" + "234.72 515.52 m" + "377.28 515.52 l" + "389.52 503.28 l" + "389.52 288.72 l" + "377.28 276.48 l" + "234.72 276.48 l" + "222.48 288.72 l" + "222.48 503.28 l" + "s" + "0.45 w" + "234.72 512.50 m" + "377.28 512.50 l" + "386.50 503.28 l" + "386.50 288.72 l" + "377.28 279.50 l" + "234.72 279.50 l" + "225.50 288.72 l" + "225.50 503.28 l" + "s" + "0.90 w" + "230.04 511.49 m" + "233.57 507.96 l" + "230.04 504.43 l" + "226.51 507.96 l" + "h" + "f" + "235.15 507.96 m" + "243.29 507.96 l" + "S" + "230.04 502.85 m" + "230.04 494.71 l" + "S" + "381.96 511.49 m" + "385.49 507.96 l" + "381.96 504.43 l" + "378.43 507.96 l" + "h" + "f" + "376.85 507.96 m" + "368.71 507.96 l" + "S" + "381.96 502.85 m" + "381.96 494.71 l" + "S" + "230.04 287.57 m" + "233.57 284.04 l" + "230.04 280.51 l" + "226.51 284.04 l" + "h" + "f" + "235.15 284.04 m" + "243.29 284.04 l" + "S" + "230.04 289.15 m" + "230.04 297.29 l" + "S" + "381.96 287.57 m" + "385.49 284.04 l" + "381.96 280.51 l" + "378.43 284.04 l" + "h" + "f" + "376.85 284.04 m" + "368.71 284.04 l" + "S" + "381.96 289.15 m" + "381.96 297.29 l" + "S" + "2.10 w" + "232.13 518.11 m" + "379.87 518.11 l" + "392.11 505.87 l" + "392.11 286.13 l" + "379.87 273.89 l" + "232.13 273.89 l" + "219.89 286.13 l" + "219.89 505.87 l" + "s" + "0.90 w" + "306.00 284.69 m" + "310.46 280.22 l" + "306.00 275.76 l" + "301.54 280.22 l" + "h" + "f" + "1.00 w" + "0.50 w" + "236.16 504.36 m" + "282.96 504.36 l" + "S" + "329.04 504.36 m" + "375.84 504.36 l" + "S" + "0.60 w" + "289.44 507.10 m" + "292.18 504.36 l" + "289.44 501.62 l" + "286.70 504.36 l" + "h" + "f" + "297.72 507.10 m" + "300.46 504.36 l" + "297.72 501.62 l" + "294.98 504.36 l" + "h" + "f" + "306.00 507.10 m" + "308.74 504.36 l" + "306.00 501.62 l" + "303.26 504.36 l" + "h" + "f" + "314.28 507.10 m" + "317.02 504.36 l" + "314.28 501.62 l" + "311.54 504.36 l" + "h" + "f" + "322.56 507.10 m" + "325.30 504.36 l" + "322.56 501.62 l" + "319.82 504.36 l" + "h" + "f" + "1.00 w" + "0.50 w" + "252.00 283.32 m" + "299.88 283.32 l" + "S" + "312.12 283.32 m" + "360.00 283.32 l" + "S" + "306.00 285.62 m" + "308.30 283.32 l" + "306.00 281.02 l" + "303.70 283.32 l" + "h" + "S" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "236.16 488.88 Td" + "0.00 -14.30 Td" + "#hex:000401be01be011801c1011801d601de01c90003019b015d000301d6016601430003002001c101180133 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "230.40 450.00 Td" + "0.00 -8.25 Td" + "#hex:00e001d001c4017001f601d0021301fe000301a0020b017801c20476000301b901780193017801c40170014d01f60231 Tj" + "ET" + "0.90 w" + "230.40 434.16 m" + "381.60 434.16 l" + "S" + "0.35 w" + "230.40 431.64 m" + "381.60 431.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "230.40 426.96 Td" + "0.00 -8.80 Td" + "#hex:00c10166016b01c90003016b01d60143018d0003025b01c101c901d60003011801be01be0143011801c101c9000301d6019b000301330143000301180003006e011801c1015e0143000301c90143011801840143013b Tj" + "0.00 -8.80 Td" + "#hex:016b01c1019b018f00030133011801c101c101430184000301f60143016b015e0166016b018f015e0003056e05690569000301be019b01de018f013b01c90608000300c101660143 Tj" + "0.00 -8.80 Td" + "#hex:0133011801c101c10143018400030166011801c90003011800030166016b013b013b0143018f00030134011801d60134016605fc000301f60166016b01340166000301340118018f000301330143 Tj" + "0.00 -8.80 Td" + "#hex:015d019b01de018f013b000301f6016b01d6016600030118000301c901de01340134014301c901c9015d01de01840003002700200003056b056900030058018f01d6014301840184016b015e0143018f01340143 Tj" + "0.00 -8.80 Td" + "#hex:06280058018f01f5014301c901d6016b015e011801d6016b019b018f06290003013401660143013401810608000300ac014301840143011801c9016b018f015e000301d60166014300030134011801d601340166 Tj" + "0.00 -8.80 Td" + "#hex:01de018f0184019b0134018101c90003011800030166011801d6013401660003011801d60003019b018f014300030143018f013b0003019b015d000301d60166014300030133011801c101c10143018405fc Tj" + "0.00 -8.80 Td" + "#hex:011801840184019b01f6016b018f015e000301d601f6019b000300780143013b016b01de018d0003019b01c1000301c9018d011801840184014301c10003013401c10143011801d601de01c1014301c9 Tj" + "0.00 -8.80 Td" + "#hex:01d6019b0003013401c1011801f601840003016b018f01c9016b013b01430608000300c10143018f00030184014301f5014301c101c90003011801c10143000301c9014301d60003016b018f00030118000301c1019b01f6 Tj" + "0.00 -8.80 Td" + "#hex:011801d6000301d6016601430003015d011801c100030143018f013b05fc000301430118013401660003016b018f000301180003018f014301de01d601c101180184000301be019b01c9016b01d6016b019b018f05fc Tj" + "0.00 -8.80 Td" + "#hex:0118013301840143000301d6019b0003018d019b01f5014300030143016b01d60166014301c1000301de01be0003019b01c10003013b019b01f6018f0608000300e001660143018f Tj" + "0.00 -8.80 Td" + "#hex:0134014301c101d60118016b018f00030184014301f5014301c101c90003011801c10143000301de01c90143013b05fc000301d6016601430003011801be01be011801c1011801d601de01c9 Tj" + "0.00 -8.80 Td" + "#hex:01d601c10118018f01c9015d019b01c1018d01c9000301d6019b000301c1014301c90143018d013301840143000301180003015e016b0118018f01d600030184019b013301c901d6014301c10608000300c101660143 Tj" + "0.00 -8.80 Td" + "#hex:011801be01be011801c1011801d601de01c90003019b015d000301d6016601430003002001c1011801330003016b01c9000301180003006e011801c1015e01430003019b0133017d0143013401d6000301f6016b01d60166 Tj" + "0.00 -8.80 Td" + "#hex:01d6016601430003015d019b01840184019b01f6016b018f015e000301c901d6011801d6016b01c901d6016b013401c905fb0003000401c1018d019b01c1000300200184011801c901c905fb0003056b0569 Tj" + "ET" + "BT" + "/F1 6.20 Tf" + "280.52 291.60 Td" + "#hex:016901d001c4020b01a001c4021301780170000301d001c40003020b019b017800030168014d016901b6 Tj" + "ET" + "1.10 w" + "54.72 515.52 m" + "197.28 515.52 l" + "209.52 503.28 l" + "209.52 288.72 l" + "197.28 276.48 l" + "54.72 276.48 l" + "42.48 288.72 l" + "42.48 503.28 l" + "s" + "0.45 w" + "54.72 512.50 m" + "197.28 512.50 l" + "206.50 503.28 l" + "206.50 288.72 l" + "197.28 279.50 l" + "54.72 279.50 l" + "45.50 288.72 l" + "45.50 503.28 l" + "s" + "0.90 w" + "50.04 511.49 m" + "53.57 507.96 l" + "50.04 504.43 l" + "46.51 507.96 l" + "h" + "f" + "55.15 507.96 m" + "63.29 507.96 l" + "S" + "50.04 502.85 m" + "50.04 494.71 l" + "S" + "201.96 511.49 m" + "205.49 507.96 l" + "201.96 504.43 l" + "198.43 507.96 l" + "h" + "f" + "196.85 507.96 m" + "188.71 507.96 l" + "S" + "201.96 502.85 m" + "201.96 494.71 l" + "S" + "50.04 287.57 m" + "53.57 284.04 l" + "50.04 280.51 l" + "46.51 284.04 l" + "h" + "f" + "55.15 284.04 m" + "63.29 284.04 l" + "S" + "50.04 289.15 m" + "50.04 297.29 l" + "S" + "201.96 287.57 m" + "205.49 284.04 l" + "201.96 280.51 l" + "198.43 284.04 l" + "h" + "f" + "196.85 284.04 m" + "188.71 284.04 l" + "S" + "201.96 289.15 m" + "201.96 297.29 l" + "S" + "1.00 w" + "0.50 w" + "56.16 504.36 m" + "102.96 504.36 l" + "S" + "149.04 504.36 m" + "195.84 504.36 l" + "S" + "0.60 w" + "109.44 507.10 m" + "112.18 504.36 l" + "109.44 501.62 l" + "106.70 504.36 l" + "h" + "f" + "117.72 507.10 m" + "120.46 504.36 l" + "117.72 501.62 l" + "114.98 504.36 l" + "h" + "f" + "126.00 507.10 m" + "128.74 504.36 l" + "126.00 501.62 l" + "123.26 504.36 l" + "h" + "f" + "134.28 507.10 m" + "137.02 504.36 l" + "134.28 501.62 l" + "131.54 504.36 l" + "h" + "f" + "142.56 507.10 m" + "145.30 504.36 l" + "142.56 501.62 l" + "139.82 504.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "72.00 283.32 m" + "119.88 283.32 l" + "S" + "132.12 283.32 m" + "180.00 283.32 l" + "S" + "126.00 285.62 m" + "128.30 283.32 l" + "126.00 281.02 l" + "123.70 283.32 l" + "h" + "S" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "56.16 488.88 Td" + "0.00 -14.30 Td" + "#hex:000401c101c1019b01f6000306af056c Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "50.40 450.00 Td" + "0.00 -8.25 Td" + "#hex:00e00178014d01f301d001c404760003022a017801f60231000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "50.40 434.16 m" + "201.60 434.16 l" + "S" + "0.35 w" + "50.40 431.64 m" + "201.60 431.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "50.40 426.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f5014300030118000306af056c00030133019b018f01de01c9000301d6019b0003011801d601d601180134018100030118018f013b0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01c1019b0184018401c90003018d0118013b0143000301f6016b01d60166000301d60166016b01c9000301be016b0143013401430003019b015d0003018d0118015e016b0134 Tj" + "0.00 -8.80 Td" + "#hex:0118018d018d01de018f016b01d6016b019b018f0608000300c10166014300030133019b018f01de01c90003016b01c90003013b014301d6014301c1018d016b018f0143013b0003013301fc Tj" + "0.00 -8.80 Td" + "#hex:01d601660143000301c1011801c1016b01d601fc0003019b015d000301d60166014300030118018d018d01de018f016b01d6016b019b018f060800030086018f013401430003016b01d600030166016b01d601c900030118 Tj" + "0.00 -8.80 Td" + "#hex:01d6011801c1015e014301d605fc000301d60166014300030118018d018d01de018f016b01d6016b019b018f0003016b01c90003018f019b00030184019b018f015e014301c1 Tj" + "0.00 -8.80 Td" + "#hex:018d0118015e016b0134011801840608 Tj" + "ET" + "1.10 w" + "414.72 263.52 m" + "557.28 263.52 l" + "569.52 251.28 l" + "569.52 36.72 l" + "557.28 24.48 l" + "414.72 24.48 l" + "402.48 36.72 l" + "402.48 251.28 l" + "s" + "0.45 w" + "414.72 260.50 m" + "557.28 260.50 l" + "566.50 251.28 l" + "566.50 36.72 l" + "557.28 27.50 l" + "414.72 27.50 l" + "405.50 36.72 l" + "405.50 251.28 l" + "s" + "0.90 w" + "410.04 259.49 m" + "413.57 255.96 l" + "410.04 252.43 l" + "406.51 255.96 l" + "h" + "f" + "415.15 255.96 m" + "423.29 255.96 l" + "S" + "410.04 250.85 m" + "410.04 242.71 l" + "S" + "561.96 259.49 m" + "565.49 255.96 l" + "561.96 252.43 l" + "558.43 255.96 l" + "h" + "f" + "556.85 255.96 m" + "548.71 255.96 l" + "S" + "561.96 250.85 m" + "561.96 242.71 l" + "S" + "410.04 35.57 m" + "413.57 32.04 l" + "410.04 28.51 l" + "406.51 32.04 l" + "h" + "f" + "415.15 32.04 m" + "423.29 32.04 l" + "S" + "410.04 37.15 m" + "410.04 45.29 l" + "S" + "561.96 35.57 m" + "565.49 32.04 l" + "561.96 28.51 l" + "558.43 32.04 l" + "h" + "f" + "556.85 32.04 m" + "548.71 32.04 l" + "S" + "561.96 37.15 m" + "561.96 45.29 l" + "S" + "1.00 w" + "0.50 w" + "416.16 252.36 m" + "462.96 252.36 l" + "S" + "509.04 252.36 m" + "555.84 252.36 l" + "S" + "0.60 w" + "469.44 255.10 m" + "472.18 252.36 l" + "469.44 249.62 l" + "466.70 252.36 l" + "h" + "f" + "477.72 255.10 m" + "480.46 252.36 l" + "477.72 249.62 l" + "474.98 252.36 l" + "h" + "f" + "486.00 255.10 m" + "488.74 252.36 l" + "486.00 249.62 l" + "483.26 252.36 l" + "h" + "f" + "494.28 255.10 m" + "497.02 252.36 l" + "494.28 249.62 l" + "491.54 252.36 l" + "h" + "f" + "502.56 255.10 m" + "505.30 252.36 l" + "502.56 249.62 l" + "499.82 252.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "432.00 31.32 m" + "479.88 31.32 l" + "S" + "492.12 31.32 m" + "540.00 31.32 l" + "S" + "486.00 33.62 m" + "488.30 31.32 l" + "486.00 29.02 l" + "483.70 31.32 l" + "h" + "S" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 12.00 Tf" + "416.16 246.96 Td" + "0.00 -13.20 Td" + "#hex:00c1019b018d01430003019b015d0003006e01430118013b014301c101c90166016b01be00030118018f013b Tj" + "0.00 -13.20 Td" + "#hex:0058018f025d01de0143018f013401430003062801c101430118013b000301f6016b01d60166 Tj" + "0.00 -13.20 Td" + "#hex:018d019b013b016b025b014301c101c90629 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "410.40 198.00 Td" + "0.00 -8.25 Td" + "#hex:00e001d001c4017001f601d0021301fe000301a0020b017801c204760003022a017801f60231000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "410.40 182.16 m" + "561.60 182.16 l" + "S" + "0.35 w" + "410.40 179.64 m" + "561.60 179.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "410.40 174.96 Td" + "0.00 -8.80 Td" + "#hex:00c10166016b01c900030133019b019b018100030134019b018f01d60118016b018f01c90003015e01de016b013b01430184016b018f014301c90003015d019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:016b018f025d01de0143018f0134016b018f015e00030118018f013b000301340166011801c1018d016b018f015e0003019b01d60166014301c101c905fc00030118018f013b0003016b01d601c9 Tj" + "0.00 -8.80 Td" + "#hex:01f6019b01c1013b01c90003011801c10143000301340166011801c1015e0143013b000301f6016b01d601660003018d0118015e016b0134060800030058015d000301fc019b01de000301c901be0143018f013b Tj" + "0.00 -8.80 Td" + "#hex:056d057100030166019b01de01c101c90003019b01f5014301c100030118000301be014301c1016b019b013b0003019b015d0003056f0003013b011801fc01c90003019b01c10003015d014301f6014301c1 Tj" + "0.00 -8.80 Td" + "#hex:01c901d601de013b01fc016b018f015e000301d60166014300030133019b019b0181065a01c900030134019b018f01d60143018f01d601c900030118018f013b Tj" + "0.00 -8.80 Td" + "#hex:01be01c10118013401d6016b0134016b018f015e0003016b01d601c90003015e01de016b013b01430184016b018f014301c905fc000301fc019b01de01c1000300200166011801c1016b01c9018d0118 Tj" + "0.00 -8.80 Td" + "#hex:01c90134019b01c101430003016b018f013401c10143011801c9014301c90003013301fc0003056b05fc0003011801c90003013b019b014301c9000301fc019b01de01c1 Tj" + "0.00 -8.80 Td" + "#hex:018d011801fb016b018d01de018d0003015d019b01c1000301d60166011801d6000301c90134019b01c101430608000300c1016601430003018d0118018f01de01180184000301d601660143018f Tj" + "0.00 -8.80 Td" + "#hex:0184019b01c9014301c90003016b01d601c90003018d0118015e016b013405fc0003013301de01d6000301c10143015e0118016b018f01c90003016b01d60003016b018f00030118000301340143018f01d601de01c101fc0608 Tj" + "ET" + "1.10 w" + "234.72 263.52 m" + "377.28 263.52 l" + "389.52 251.28 l" + "389.52 36.72 l" + "377.28 24.48 l" + "234.72 24.48 l" + "222.48 36.72 l" + "222.48 251.28 l" + "s" + "0.45 w" + "234.72 260.50 m" + "377.28 260.50 l" + "386.50 251.28 l" + "386.50 36.72 l" + "377.28 27.50 l" + "234.72 27.50 l" + "225.50 36.72 l" + "225.50 251.28 l" + "s" + "1.00 w" + "0.50 w" + "236.16 252.36 m" + "282.96 252.36 l" + "S" + "329.04 252.36 m" + "375.84 252.36 l" + "S" + "0.60 w" + "289.44 255.10 m" + "292.18 252.36 l" + "289.44 249.62 l" + "286.70 252.36 l" + "h" + "f" + "297.72 255.10 m" + "300.46 252.36 l" + "297.72 249.62 l" + "294.98 252.36 l" + "h" + "f" + "306.00 255.10 m" + "308.74 252.36 l" + "306.00 249.62 l" + "303.26 252.36 l" + "h" + "S" + "314.28 255.10 m" + "317.02 252.36 l" + "314.28 249.62 l" + "311.54 252.36 l" + "h" + "S" + "322.56 255.10 m" + "325.30 252.36 l" + "322.56 249.62 l" + "319.82 252.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "252.00 31.32 m" + "299.88 31.32 l" + "S" + "312.12 31.32 m" + "360.00 31.32 l" + "S" + "306.00 33.62 m" + "308.30 31.32 l" + "306.00 29.02 l" + "303.70 31.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "367.20 199.08 m" + "373.32 199.08 l" + "375.84 196.56 l" + "375.84 191.16 l" + "373.32 188.64 l" + "367.20 188.64 l" + "364.68 191.16 l" + "364.68 196.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "367.73 191.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "236.16 236.88 Td" + "0.00 -14.30 Td" + "#hex:003101fc014301c90003019b015d000300200166011801c1018d016b018f015e Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "230.40 198.00 Td" + "0.00 -8.25 Td" + "#hex:00e001d001c4017001f601d0021301fe000301a0020b017801c204760003021301c4016901d001c201c201d001c4 Tj" + "ET" + "0.90 w" + "230.40 182.16 m" + "381.60 182.16 l" + "S" + "0.35 w" + "230.40 179.64 m" + "381.60 179.64 l" + "S" + "1.00 w" + "0.80 w" + "BT" + "/F5 5.50 Tf" + "292.40 169.92 Td" + "\"CHARGES\" Tj" + "ET" + "299.30 158.40 m" + "299.30 160.47 297.63 162.14 295.56 162.14 c" + "293.49 162.14 291.82 160.47 291.82 158.40 c" + "291.82 156.33 293.49 154.66 295.56 154.66 c" + "297.63 154.66 299.30 156.33 299.30 158.40 c" + "s" + "309.74 158.40 m" + "309.74 160.47 308.07 162.14 306.00 162.14 c" + "303.93 162.14 302.26 160.47 302.26 158.40 c" + "302.26 156.33 303.93 154.66 306.00 154.66 c" + "308.07 154.66 309.74 156.33 309.74 158.40 c" + "s" + "320.18 158.40 m" + "320.18 160.47 318.51 162.14 316.44 162.14 c" + "314.37 162.14 312.70 160.47 312.70 158.40 c" + "312.70 156.33 314.37 154.66 316.44 154.66 c" + "318.51 154.66 320.18 156.33 320.18 158.40 c" + "s" + "1.00 w" + "0.35 w" + "230.40 146.88 m" + "381.60 146.88 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "230.40 141.12 Td" + "0.00 -8.80 Td" + "#hex:00c10166014301c901430003013401c101fc01c901d601180184000301840143018f01c9014301c90003025b01d60003019b01f5014301c1000301d6016601430003014301fc014301c90608000300c10166014301fc Tj" + "0.00 -8.80 Td" + "#hex:0166011801f501430003056c000301340166011801c1015e014301c90608000300e00166016b01840143000301f60143011801c1016b018f015e000301d601660143018d05fc000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:01340118018f0003014301fb01be0143018f013b0003056a000301340166011801c1015e01430003011801c900030118018f00030118013401d6016b019b018f000301d6019b00030134011801c901d6000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01340166011801c1018d000301be014301c101c9019b018f000301c901be0143018401840003062801c9011801f501430003002700200003056a056c06290003019b018f00030118 Tj" + "0.00 -8.80 Td" + "#hex:016601de018d0118018f019b016b013b000301f6016b01d60166016b018f0003056c05690003015d0143014301d60003019b015d000301fc019b01de05fc000301be01c1019b01f5016b013b0143013b Tj" + "0.00 -8.80 Td" + "#hex:01d60166011801d6000301fc019b01de00030118018f013b000301d601660143000301d6011801c1015e014301d6000301340118018f000301c901430143000301430118013401660003019b01d60166014301c10608 Tj" + "0.00 -8.80 Td" + "#hex:00c101660143000301840143018f01c9014301c9000301c10143015e0118016b018f00030118018401840003014301fb01be0143018f013b0143013b000301340166011801c1015e014301c9 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "277.72 53.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "BT" + "/F1 6.20 Tf" + "280.52 68.40 Td" + "#hex:016901d001c4020b01a001c4021301780170000301d001c40003020b019b017800030168014d016901b6 Tj" + "ET" + "1.10 w" + "54.72 263.52 m" + "197.28 263.52 l" + "209.52 251.28 l" + "209.52 36.72 l" + "197.28 24.48 l" + "54.72 24.48 l" + "42.48 36.72 l" + "42.48 251.28 l" + "s" + "0.45 w" + "54.72 260.50 m" + "197.28 260.50 l" + "206.50 251.28 l" + "206.50 36.72 l" + "197.28 27.50 l" + "54.72 27.50 l" + "45.50 36.72 l" + "45.50 251.28 l" + "s" + "0.70 w" + "50.04 258.55 m" + "52.63 255.96 l" + "50.04 253.37 l" + "47.45 255.96 l" + "h" + "S" + "201.96 258.55 m" + "204.55 255.96 l" + "201.96 253.37 l" + "199.37 255.96 l" + "h" + "S" + "50.04 34.63 m" + "52.63 32.04 l" + "50.04 29.45 l" + "47.45 32.04 l" + "h" + "S" + "201.96 34.63 m" + "204.55 32.04 l" + "201.96 29.45 l" + "199.37 32.04 l" + "h" + "S" + "1.00 w" + "0.50 w" + "56.16 252.36 m" + "102.96 252.36 l" + "S" + "149.04 252.36 m" + "195.84 252.36 l" + "S" + "0.60 w" + "109.44 255.10 m" + "112.18 252.36 l" + "109.44 249.62 l" + "106.70 252.36 l" + "h" + "f" + "117.72 255.10 m" + "120.46 252.36 l" + "117.72 249.62 l" + "114.98 252.36 l" + "h" + "f" + "126.00 255.10 m" + "128.74 252.36 l" + "126.00 249.62 l" + "123.26 252.36 l" + "h" + "f" + "134.28 255.10 m" + "137.02 252.36 l" + "134.28 249.62 l" + "131.54 252.36 l" + "h" + "S" + "142.56 255.10 m" + "145.30 252.36 l" + "142.56 249.62 l" + "139.82 252.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "72.00 31.32 m" + "119.88 31.32 l" + "S" + "132.12 31.32 m" + "180.00 31.32 l" + "S" + "126.00 33.62 m" + "128.30 31.32 l" + "126.00 29.02 l" + "123.70 31.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "187.20 199.08 m" + "193.32 199.08 l" + "195.84 196.56 l" + "195.84 191.16 l" + "193.32 188.64 l" + "187.20 188.64 l" + "184.68 191.16 l" + "184.68 196.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "187.73 191.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "56.16 236.88 Td" + "0.00 -14.30 Td" + "#hex:002001de013301430003019b015d0003004a019b01c101340143 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "50.40 198.00 Td" + "0.00 -8.25 Td" + "#hex:00e001d001c4017001f601d0021301fe000301a0020b017801c20476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "50.40 182.16 m" + "201.60 182.16 l" + "S" + "0.35 w" + "50.40 179.64 m" + "201.60 179.64 l" + "S" + "1.00 w" + "0.80 w" + "BT" + "/F5 5.50 Tf" + "112.40 169.92 Td" + "\"CHARGES\" Tj" + "ET" + "96.04 158.40 m" + "140.68 158.40 l" + "S" + "BT" + "/F5 7.00 Tf" + "144.28 159.48 Td" + "\"/ 36\" Tj" + "ET" + "1.00 w" + "0.35 w" + "50.40 146.88 m" + "201.60 146.88 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "50.40 141.12 Td" + "0.00 -8.80 Td" + "#hex:00c10166016b01c90003013401de013301430003016b01c9000301180133019b01de01d600030118018f0003016b018f0134016600030118013401c1019b01c901c90608000300310118013401660003015d011801340143 Tj" + "0.00 -8.80 Td" + "#hex:0166011801c9000301180003013b016b01c901d6016b018f013401d60003018d011801c10181016b018f015e0003019b018f0003016b01d6000301d60166011801d6000301340118018f000301330143 Tj" + "0.00 -8.80 Td" + "#hex:01be01c1014301c901c90143013b0608000300c1016601430003013401de01330143000301c901d6011801c101d601c9000301f6016b01d601660003056c056f000301340166011801c1015e014301c905fc Tj" + "0.00 -8.80 Td" + "#hex:0118018f013b0003016b01d6000301c10143015e0118016b018f01c90003056a013b056b05690003014301fb01be0143018f013b0143013b000301340166011801c1015e014301c90003013b0118016b018401fc Tj" + "0.00 -8.80 Td" + "#hex:011801d60003013b011801f6018f0608000300e6019b01de000301340118018f000301de01c9014300030118018f00030118013401d6016b019b018f000301d6019b000301be01c1014301c901c90003019b018f0143 Tj" + "0.00 -8.80 Td" + "#hex:019b015d000301d6016601430003013401de01330143065a01c90003015d01180134014301c905fc0003014301fb01be0143018f013b016b018f015e000301180003018f01de018d0133014301c10003019b015d Tj" + "0.00 -8.80 Td" + "#hex:01340166011801c1015e014301c900030133011801c90143013b0003019b018f000301d601660143000301340166019b01c90143018f0003015d01180134014305fc0003011801c9000301c90166019b01f6018f Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "97.72 53.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "BT" + "/F1 6.20 Tf" + "100.52 68.40 Td" + "#hex:016901d001c4020b01a001c4021301780170000301d001c40003020b019b017800030168014d016901b6 Tj" + "ET"] + ["0.88 0.88 0.88 RG" + "36.00 18.00 m" + "36.00 774.00 l" + "S" + "216.00 18.00 m" + "216.00 774.00 l" + "S" + "396.00 18.00 m" + "396.00 774.00 l" + "S" + "576.00 18.00 m" + "576.00 774.00 l" + "S" + "36.00 18.00 m" + "576.00 18.00 l" + "S" + "36.00 270.00 m" + "576.00 270.00 l" + "S" + "36.00 522.00 m" + "576.00 522.00 l" + "S" + "36.00 774.00 m" + "576.00 774.00 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 781.20 Td" + "#hex:00a9014d01930178000303fa Tj" + "ET" + "1.10 w" + "414.72 767.52 m" + "557.28 767.52 l" + "569.52 755.28 l" + "569.52 540.72 l" + "557.28 528.48 l" + "414.72 528.48 l" + "402.48 540.72 l" + "402.48 755.28 l" + "s" + "0.45 w" + "414.72 764.50 m" + "557.28 764.50 l" + "566.50 755.28 l" + "566.50 540.72 l" + "557.28 531.50 l" + "414.72 531.50 l" + "405.50 540.72 l" + "405.50 755.28 l" + "s" + "0.70 w" + "410.04 762.55 m" + "412.63 759.96 l" + "410.04 757.37 l" + "407.45 759.96 l" + "h" + "S" + "561.96 762.55 m" + "564.55 759.96 l" + "561.96 757.37 l" + "559.37 759.96 l" + "h" + "S" + "410.04 538.63 m" + "412.63 536.04 l" + "410.04 533.45 l" + "407.45 536.04 l" + "h" + "S" + "561.96 538.63 m" + "564.55 536.04 l" + "561.96 533.45 l" + "559.37 536.04 l" + "h" + "S" + "1.00 w" + "0.50 w" + "416.16 756.36 m" + "462.96 756.36 l" + "S" + "509.04 756.36 m" + "555.84 756.36 l" + "S" + "0.60 w" + "469.44 759.10 m" + "472.18 756.36 l" + "469.44 753.62 l" + "466.70 756.36 l" + "h" + "f" + "477.72 759.10 m" + "480.46 756.36 l" + "477.72 753.62 l" + "474.98 756.36 l" + "h" + "f" + "486.00 759.10 m" + "488.74 756.36 l" + "486.00 753.62 l" + "483.26 756.36 l" + "h" + "f" + "494.28 759.10 m" + "497.02 756.36 l" + "494.28 753.62 l" + "491.54 756.36 l" + "h" + "S" + "502.56 759.10 m" + "505.30 756.36 l" + "502.56 753.62 l" + "499.82 756.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "432.00 535.32 m" + "479.88 535.32 l" + "S" + "492.12 535.32 m" + "540.00 535.32 l" + "S" + "486.00 537.62 m" + "488.30 535.32 l" + "486.00 533.02 l" + "483.70 535.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "547.20 703.08 m" + "553.32 703.08 l" + "555.84 700.56 l" + "555.84 695.16 l" + "553.32 692.64 l" + "547.20 692.64 l" + "544.68 695.16 l" + "544.68 700.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "547.73 695.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "416.16 748.08 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc000300a90118013b013b0143013b Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "410.40 702.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "410.40 686.16 m" + "561.60 686.16 l" + "S" + "0.35 w" + "410.40 683.64 m" + "561.60 683.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "410.40 678.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "457.72 557.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "234.72 767.52 m" + "377.28 767.52 l" + "389.52 755.28 l" + "389.52 540.72 l" + "377.28 528.48 l" + "234.72 528.48 l" + "222.48 540.72 l" + "222.48 755.28 l" + "s" + "0.45 w" + "234.72 764.50 m" + "377.28 764.50 l" + "386.50 755.28 l" + "386.50 540.72 l" + "377.28 531.50 l" + "234.72 531.50 l" + "225.50 540.72 l" + "225.50 755.28 l" + "s" + "1.00 w" + "0.50 w" + "236.16 756.36 m" + "282.96 756.36 l" + "S" + "329.04 756.36 m" + "375.84 756.36 l" + "S" + "0.60 w" + "289.44 759.10 m" + "292.18 756.36 l" + "289.44 753.62 l" + "286.70 756.36 l" + "h" + "f" + "297.72 759.10 m" + "300.46 756.36 l" + "297.72 753.62 l" + "294.98 756.36 l" + "h" + "f" + "306.00 759.10 m" + "308.74 756.36 l" + "306.00 753.62 l" + "303.26 756.36 l" + "h" + "S" + "314.28 759.10 m" + "317.02 756.36 l" + "314.28 753.62 l" + "311.54 756.36 l" + "h" + "S" + "322.56 759.10 m" + "325.30 756.36 l" + "322.56 753.62 l" + "319.82 756.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "252.00 535.32 m" + "299.88 535.32 l" + "S" + "312.12 535.32 m" + "360.00 535.32 l" + "S" + "306.00 537.62 m" + "308.30 535.32 l" + "306.00 533.02 l" + "303.70 535.32 l" + "h" + "S" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "236.16 748.08 Td" + "0.00 -14.30 Td" + "#hex:0004013b0118018d0118018f01d6016b018f01430003000401c1018d019b01c105fc Tj" + "0.00 -14.30 Td" + "#hex:002001660118016b018f000300b40166016b01c101d6 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "230.40 702.00 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f604760003021301c4016901d001c201c201d001c4 Tj" + "ET" + "0.90 w" + "230.40 686.16 m" + "381.60 686.16 l" + "S" + "0.35 w" + "230.40 683.64 m" + "381.60 683.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "230.40 678.96 Td" + "0.00 -8.80 Td" + "#hex:00c10166016b01c9000301c901de016b01d60003019b015d0003011801c1018d019b01c10003016b01c9000301c10143016b018f015d019b01c101340143013b000301f6016b01d60166 Tj" + "0.00 -8.80 Td" + "#hex:0118013b0118018d0118018f01d6016b018f014305fc0003019b018f01430003019b015d000301d60166014300030166011801c1013b014301c901d6000301c901de013301c901d60118018f0134014301c9 Tj" + "0.00 -8.80 Td" + "#hex:016b018f0003014301fb016b01c901d60143018f013401430608000300e00166016b01840143000301fc019b01de065a01c10143000301f60143011801c1016b018f015e0003016b01d605fc00030118018f01fc Tj" + "0.00 -8.80 Td" + "#hex:013401c1016b01d6016b01340118018400030166016b01d600030118015e0118016b018f01c901d6000301fc019b01de0003013301430134019b018d014301c9000301180003018f019b01c1018d01180184 Tj" + "0.00 -8.80 Td" + "#hex:0166016b01d60608 Tj" + "ET" + "1.10 w" + "54.72 767.52 m" + "197.28 767.52 l" + "209.52 755.28 l" + "209.52 540.72 l" + "197.28 528.48 l" + "54.72 528.48 l" + "42.48 540.72 l" + "42.48 755.28 l" + "s" + "1.00 w" + "0.50 w" + "56.16 756.36 m" + "102.96 756.36 l" + "S" + "149.04 756.36 m" + "195.84 756.36 l" + "S" + "0.60 w" + "109.44 759.10 m" + "112.18 756.36 l" + "109.44 753.62 l" + "106.70 756.36 l" + "h" + "f" + "117.72 759.10 m" + "120.46 756.36 l" + "117.72 753.62 l" + "114.98 756.36 l" + "h" + "S" + "126.00 759.10 m" + "128.74 756.36 l" + "126.00 753.62 l" + "123.26 756.36 l" + "h" + "S" + "134.28 759.10 m" + "137.02 756.36 l" + "134.28 753.62 l" + "131.54 756.36 l" + "h" + "S" + "142.56 759.10 m" + "145.30 756.36 l" + "142.56 753.62 l" + "139.82 756.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "72.00 535.32 m" + "119.88 535.32 l" + "S" + "132.12 535.32 m" + "180.00 535.32 l" + "S" + "126.00 537.62 m" + "128.30 535.32 l" + "126.00 533.02 l" + "123.70 535.32 l" + "h" + "S" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "56.16 740.88 Td" + "0.00 -14.30 Td" + "#hex:00a9019b01d6016b019b018f0003019b015d000300200184016b018d0133016b018f015e Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "50.40 702.00 Td" + "0.00 -8.25 Td" + "#hex:00a901d0020b01a001d001c404760003016901d001c201c201d001c4 Tj" + "ET" + "0.90 w" + "50.40 686.16 m" + "201.60 686.16 l" + "S" + "0.35 w" + "50.40 683.64 m" + "201.60 683.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "50.40 678.96 Td" + "0.00 -8.80 Td" + "#hex:00e001660143018f000301fc019b01de0003013b01c1016b018f0181000301d60166016b01c9000301be019b01d6016b019b018f05fc000301fc019b01de0003015e0118016b018f00030118 Tj" + "0.00 -8.80 Td" + "#hex:01340184016b018d0133016b018f015e000301c901be01430143013b0003014301c001de01180184000301d6019b000301fc019b01de01c1000301f6011801840181016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:01c901be01430143013b0003015d019b01c10003056a00030166019b01de01c106080003002701de01c1016b018f015e000301d60166016b01c9000301d6016b018d014305fc000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:0166011801f5014300030118013b01f50118018f01d60118015e01430003019b018f000300b401d601c10143018f015e01d6016600030628000401d601660184014301d6016b013401c90629 Tj" + "0.00 -8.80 Td" + "#hex:0134016601430134018101c9000301fc019b01de0003018d011801810143000301d6019b000301340184016b018d01330608000300c101660143000301be019b01d6016b019b018f0003016b01c9 Tj" + "0.00 -8.80 Td" + "#hex:01c9014301be011801c1011801d60143013b0003016b018f01d6019b0003013301c1019b01f6018f05fc000301c9016b018401f5014301c105fc00030118018f013b0003015e01c1011801fc Tj" + "0.00 -8.80 Td" + "#hex:0184011801fc014301c101c9000301c1014301c90143018d01330184016b018f015e000301330118018f013b01c90003019b015d000301c901d6019b018f01430608000300b4016601180181016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:01d60166014300030133019b01d601d6018401430003015d0118016b018401c9000301d6019b0003018d016b01fb000301d60166014300030134019b0184019b01c101c90608 Tj" + "ET" + "1.10 w" + "414.72 515.52 m" + "557.28 515.52 l" + "569.52 503.28 l" + "569.52 288.72 l" + "557.28 276.48 l" + "414.72 276.48 l" + "402.48 288.72 l" + "402.48 503.28 l" + "s" + "1.00 w" + "0.50 w" + "416.16 504.36 m" + "462.96 504.36 l" + "S" + "509.04 504.36 m" + "555.84 504.36 l" + "S" + "0.60 w" + "469.44 507.10 m" + "472.18 504.36 l" + "469.44 501.62 l" + "466.70 504.36 l" + "h" + "S" + "477.72 507.10 m" + "480.46 504.36 l" + "477.72 501.62 l" + "474.98 504.36 l" + "h" + "S" + "486.00 507.10 m" + "488.74 504.36 l" + "486.00 501.62 l" + "483.26 504.36 l" + "h" + "S" + "494.28 507.10 m" + "497.02 504.36 l" + "494.28 501.62 l" + "491.54 504.36 l" + "h" + "S" + "502.56 507.10 m" + "505.30 504.36 l" + "502.56 501.62 l" + "499.82 504.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "432.00 283.32 m" + "479.88 283.32 l" + "S" + "492.12 283.32 m" + "540.00 283.32 l" + "S" + "486.00 285.62 m" + "488.30 283.32 l" + "486.00 281.02 l" + "483.70 283.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "547.20 451.08 m" + "553.32 451.08 l" + "555.84 448.56 l" + "555.84 443.16 l" + "553.32 440.64 l" + "547.20 440.64 l" + "544.68 443.16 l" + "544.68 448.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "547.73 443.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "416.16 488.88 Td" + "0.00 -14.30 Td" + "#hex:001f0143018401d60003019b015d0003002701f6011801c101f50143018f0181016b018f013b Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "410.40 450.00 Td" + "0.00 -8.25 Td" + "#hex:00e001d001c4017001f601d0021301fe000301a0020b017801c20476000301f6014d01f601a0020b02310003022a014d01f601a0017801fe Tj" + "ET" + "0.90 w" + "410.40 434.16 m" + "561.60 434.16 l" + "S" + "0.35 w" + "410.40 431.64 m" + "561.60 431.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "410.40 426.96 Td" + "0.00 -8.80 Td" + "#hex:00e00166016b01840143000301f60143011801c1016b018f015e000301d60166016b01c9000301330143018401d605fc000301fc019b01de0003015e0118016b018f000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:015d019b01840184019b01f6016b018f015e000301330143018f0143025b01d601c905fb000305f8000300e6019b01de01c100030020019b018f01c901d6016b01d601de01d6016b019b018f Tj" + "0.00 -8.80 Td" + "#hex:01c90134019b01c101430003016b018f013401c10143011801c9014301c90003013301fc0003056b05fc000301d6019b000301180003018d011801fb016b018d01de018d0003019b015d0003056b05690608000305f8 Tj" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f5014300030118013b01f50118018f01d60118015e01430003019b018f000300200166011801c1016b01c9018d0118 Tj" + "0.00 -8.80 Td" + "#hex:062800a9014301c101c901de011801c9016b019b018f062900030134016601430134018101c90003018d0118013b0143000301d6019b0003016b018f01d6014301c10118013401d6000301f6016b01d60166 Tj" + "0.00 -8.80 Td" + "#hex:013b01f6011801c101f5014301c9060800030058018f00030118013b013b016b01d6016b019b018f05fc000301f60166016b018401430003011801d601d601de018f0143013b000301d6019b000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01330143018401d605fc000301fc019b01de00030166011801f50143000301180003056e0569000301be014301c101340143018f01d60003013401660118018f01340143000301430118013401660003013b011801fc Tj" + "0.00 -8.80 Td" + "#hex:011801d60003013b011801f6018f0003019b015d0003015e01c1019b01f6016b018f015e000301180003015d01de01840184000301330143011801c1013b0003016b015d000301fc019b01de065a01c10143 Tj" + "0.00 -8.80 Td" + "#hex:0134011801be01180133018401430003019b015d0003015e01c1019b01f6016b018f015e0003019b018f014305fc0003019b01c100030118000301f5016b01c9016b0133018401fc000301d60166016b01340181014301c1 Tj" + "0.00 -8.80 Td" + "#hex:01330143011801c1013b0003016b015d000301fc019b01de00030118018401c101430118013b01fc00030166011801f501430003019b018f0143060800030058015d000301fc019b01de0003011801c10143018f065a01d6 Tj" + "0.00 -8.80 Td" + "#hex:01180003013b01f6011801c1015d05fc000301fc019b01de0003015e0118016b018f000301d6016601430003015d019b01840184019b01f6016b018f015e00030118013b013b016b01d6016b019b018f01180184 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "457.72 305.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "BT" + "/F1 6.20 Tf" + "460.52 320.40 Td" + "#hex:016901d001c4020b01a001c4021301780170000301d001c40003020b019b017800030168014d016901b6 Tj" + "ET" + "1.10 w" + "234.72 515.52 m" + "377.28 515.52 l" + "389.52 503.28 l" + "389.52 288.72 l" + "377.28 276.48 l" + "234.72 276.48 l" + "222.48 288.72 l" + "222.48 503.28 l" + "s" + "0.45 w" + "234.72 512.50 m" + "377.28 512.50 l" + "386.50 503.28 l" + "386.50 288.72 l" + "377.28 279.50 l" + "234.72 279.50 l" + "225.50 288.72 l" + "225.50 503.28 l" + "s" + "0.90 w" + "230.04 511.49 m" + "233.57 507.96 l" + "230.04 504.43 l" + "226.51 507.96 l" + "h" + "f" + "235.15 507.96 m" + "243.29 507.96 l" + "S" + "230.04 502.85 m" + "230.04 494.71 l" + "S" + "381.96 511.49 m" + "385.49 507.96 l" + "381.96 504.43 l" + "378.43 507.96 l" + "h" + "f" + "376.85 507.96 m" + "368.71 507.96 l" + "S" + "381.96 502.85 m" + "381.96 494.71 l" + "S" + "230.04 287.57 m" + "233.57 284.04 l" + "230.04 280.51 l" + "226.51 284.04 l" + "h" + "f" + "235.15 284.04 m" + "243.29 284.04 l" + "S" + "230.04 289.15 m" + "230.04 297.29 l" + "S" + "381.96 287.57 m" + "385.49 284.04 l" + "381.96 280.51 l" + "378.43 284.04 l" + "h" + "f" + "376.85 284.04 m" + "368.71 284.04 l" + "S" + "381.96 289.15 m" + "381.96 297.29 l" + "S" + "2.10 w" + "232.13 518.11 m" + "379.87 518.11 l" + "392.11 505.87 l" + "392.11 286.13 l" + "379.87 273.89 l" + "232.13 273.89 l" + "219.89 286.13 l" + "219.89 505.87 l" + "s" + "0.90 w" + "306.00 284.69 m" + "310.46 280.22 l" + "306.00 275.76 l" + "301.54 280.22 l" + "h" + "f" + "1.00 w" + "0.50 w" + "236.16 504.36 m" + "282.96 504.36 l" + "S" + "329.04 504.36 m" + "375.84 504.36 l" + "S" + "0.60 w" + "289.44 507.10 m" + "292.18 504.36 l" + "289.44 501.62 l" + "286.70 504.36 l" + "h" + "f" + "297.72 507.10 m" + "300.46 504.36 l" + "297.72 501.62 l" + "294.98 504.36 l" + "h" + "f" + "306.00 507.10 m" + "308.74 504.36 l" + "306.00 501.62 l" + "303.26 504.36 l" + "h" + "f" + "314.28 507.10 m" + "317.02 504.36 l" + "314.28 501.62 l" + "311.54 504.36 l" + "h" + "f" + "322.56 507.10 m" + "325.30 504.36 l" + "322.56 501.62 l" + "319.82 504.36 l" + "h" + "f" + "1.00 w" + "0.50 w" + "252.00 283.32 m" + "299.88 283.32 l" + "S" + "312.12 283.32 m" + "360.00 283.32 l" + "S" + "306.00 285.62 m" + "308.30 283.32 l" + "306.00 281.02 l" + "303.70 283.32 l" + "h" + "S" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "236.16 488.88 Td" + "0.00 -14.30 Td" + "#hex:000401be01be011801c1011801d601de01c90003019b015d000301d6016601430003002001c101180133 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "230.40 450.00 Td" + "0.00 -8.25 Td" + "#hex:00e001d001c4017001f601d0021301fe000301a0020b017801c20476000301b901780193017801c40170014d01f60231 Tj" + "ET" + "0.90 w" + "230.40 434.16 m" + "381.60 434.16 l" + "S" + "0.35 w" + "230.40 431.64 m" + "381.60 431.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "230.40 426.96 Td" + "0.00 -8.80 Td" + "#hex:00c10166016b01c90003016b01d60143018d0003025b01c101c901d60003011801be01be0143011801c101c9000301d6019b000301330143000301180003006e011801c1015e0143000301c90143011801840143013b Tj" + "0.00 -8.80 Td" + "#hex:016b01c1019b018f00030133011801c101c101430184000301f60143016b015e0166016b018f015e0003056e05690569000301be019b01de018f013b01c90608000300c101660143 Tj" + "0.00 -8.80 Td" + "#hex:0133011801c101c10143018400030166011801c90003011800030166016b013b013b0143018f00030134011801d60134016605fc000301f60166016b01340166000301340118018f000301330143 Tj" + "0.00 -8.80 Td" + "#hex:015d019b01de018f013b000301f6016b01d6016600030118000301c901de01340134014301c901c9015d01de01840003002700200003056b056900030058018f01d6014301840184016b015e0143018f01340143 Tj" + "0.00 -8.80 Td" + "#hex:06280058018f01f5014301c901d6016b015e011801d6016b019b018f06290003013401660143013401810608000300ac014301840143011801c9016b018f015e000301d60166014300030134011801d601340166 Tj" + "0.00 -8.80 Td" + "#hex:01de018f0184019b0134018101c90003011800030166011801d6013401660003011801d60003019b018f014300030143018f013b0003019b015d000301d60166014300030133011801c101c10143018405fc Tj" + "0.00 -8.80 Td" + "#hex:011801840184019b01f6016b018f015e000301d601f6019b000300780143013b016b01de018d0003019b01c1000301c9018d011801840184014301c10003013401c10143011801d601de01c1014301c9 Tj" + "0.00 -8.80 Td" + "#hex:01d6019b0003013401c1011801f601840003016b018f01c9016b013b01430608000300c10143018f00030184014301f5014301c101c90003011801c10143000301c9014301d60003016b018f00030118000301c1019b01f6 Tj" + "0.00 -8.80 Td" + "#hex:011801d6000301d6016601430003015d011801c100030143018f013b05fc000301430118013401660003016b018f000301180003018f014301de01d601c101180184000301be019b01c9016b01d6016b019b018f05fc Tj" + "0.00 -8.80 Td" + "#hex:0118013301840143000301d6019b0003018d019b01f5014300030143016b01d60166014301c1000301de01be0003019b01c10003013b019b01f6018f0608000300e001660143018f Tj" + "0.00 -8.80 Td" + "#hex:0134014301c101d60118016b018f00030184014301f5014301c101c90003011801c10143000301de01c90143013b05fc000301d6016601430003011801be01be011801c1011801d601de01c9 Tj" + "0.00 -8.80 Td" + "#hex:01d601c10118018f01c9015d019b01c1018d01c9000301d6019b000301c1014301c90143018d013301840143000301180003015e016b0118018f01d600030184019b013301c901d6014301c10608000300c101660143 Tj" + "0.00 -8.80 Td" + "#hex:011801be01be011801c1011801d601de01c90003019b015d000301d6016601430003002001c1011801330003016b01c9000301180003006e011801c1015e01430003019b0133017d0143013401d6000301f6016b01d60166 Tj" + "0.00 -8.80 Td" + "#hex:01d6016601430003015d019b01840184019b01f6016b018f015e000301c901d6011801d6016b01c901d6016b013401c905fb0003000401c1018d019b01c1000300200184011801c901c905fb0003056b0569 Tj" + "ET" + "BT" + "/F1 6.20 Tf" + "280.52 291.60 Td" + "#hex:016901d001c4020b01a001c4021301780170000301d001c40003020b019b017800030168014d016901b6 Tj" + "ET" + "1.10 w" + "54.72 515.52 m" + "197.28 515.52 l" + "209.52 503.28 l" + "209.52 288.72 l" + "197.28 276.48 l" + "54.72 276.48 l" + "42.48 288.72 l" + "42.48 503.28 l" + "s" + "0.45 w" + "54.72 512.50 m" + "197.28 512.50 l" + "206.50 503.28 l" + "206.50 288.72 l" + "197.28 279.50 l" + "54.72 279.50 l" + "45.50 288.72 l" + "45.50 503.28 l" + "s" + "0.90 w" + "50.04 511.49 m" + "53.57 507.96 l" + "50.04 504.43 l" + "46.51 507.96 l" + "h" + "f" + "55.15 507.96 m" + "63.29 507.96 l" + "S" + "50.04 502.85 m" + "50.04 494.71 l" + "S" + "201.96 511.49 m" + "205.49 507.96 l" + "201.96 504.43 l" + "198.43 507.96 l" + "h" + "f" + "196.85 507.96 m" + "188.71 507.96 l" + "S" + "201.96 502.85 m" + "201.96 494.71 l" + "S" + "50.04 287.57 m" + "53.57 284.04 l" + "50.04 280.51 l" + "46.51 284.04 l" + "h" + "f" + "55.15 284.04 m" + "63.29 284.04 l" + "S" + "50.04 289.15 m" + "50.04 297.29 l" + "S" + "201.96 287.57 m" + "205.49 284.04 l" + "201.96 280.51 l" + "198.43 284.04 l" + "h" + "f" + "196.85 284.04 m" + "188.71 284.04 l" + "S" + "201.96 289.15 m" + "201.96 297.29 l" + "S" + "1.00 w" + "0.50 w" + "56.16 504.36 m" + "102.96 504.36 l" + "S" + "149.04 504.36 m" + "195.84 504.36 l" + "S" + "0.60 w" + "109.44 507.10 m" + "112.18 504.36 l" + "109.44 501.62 l" + "106.70 504.36 l" + "h" + "f" + "117.72 507.10 m" + "120.46 504.36 l" + "117.72 501.62 l" + "114.98 504.36 l" + "h" + "f" + "126.00 507.10 m" + "128.74 504.36 l" + "126.00 501.62 l" + "123.26 504.36 l" + "h" + "f" + "134.28 507.10 m" + "137.02 504.36 l" + "134.28 501.62 l" + "131.54 504.36 l" + "h" + "f" + "142.56 507.10 m" + "145.30 504.36 l" + "142.56 501.62 l" + "139.82 504.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "72.00 283.32 m" + "119.88 283.32 l" + "S" + "132.12 283.32 m" + "180.00 283.32 l" + "S" + "126.00 285.62 m" + "128.30 283.32 l" + "126.00 281.02 l" + "123.70 283.32 l" + "h" + "S" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "56.16 488.88 Td" + "0.00 -14.30 Td" + "#hex:000401c101c1019b01f6000306af056c Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "50.40 450.00 Td" + "0.00 -8.25 Td" + "#hex:00e00178014d01f301d001c404760003022a017801f60231000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "50.40 434.16 m" + "201.60 434.16 l" + "S" + "0.35 w" + "50.40 431.64 m" + "201.60 431.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "50.40 426.96 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f5014300030118000306af056c00030133019b018f01de01c9000301d6019b0003011801d601d601180134018100030118018f013b0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01c1019b0184018401c90003018d0118013b0143000301f6016b01d60166000301d60166016b01c9000301be016b0143013401430003019b015d0003018d0118015e016b0134 Tj" + "0.00 -8.80 Td" + "#hex:0118018d018d01de018f016b01d6016b019b018f0608000300c10166014300030133019b018f01de01c90003016b01c90003013b014301d6014301c1018d016b018f0143013b0003013301fc Tj" + "0.00 -8.80 Td" + "#hex:01d601660143000301c1011801c1016b01d601fc0003019b015d000301d60166014300030118018d018d01de018f016b01d6016b019b018f060800030086018f013401430003016b01d600030166016b01d601c900030118 Tj" + "0.00 -8.80 Td" + "#hex:01d6011801c1015e014301d605fc000301d60166014300030118018d018d01de018f016b01d6016b019b018f0003016b01c90003018f019b00030184019b018f015e014301c1 Tj" + "0.00 -8.80 Td" + "#hex:018d0118015e016b0134011801840608 Tj" + "ET" + "1.10 w" + "414.72 263.52 m" + "557.28 263.52 l" + "569.52 251.28 l" + "569.52 36.72 l" + "557.28 24.48 l" + "414.72 24.48 l" + "402.48 36.72 l" + "402.48 251.28 l" + "s" + "0.45 w" + "414.72 260.50 m" + "557.28 260.50 l" + "566.50 251.28 l" + "566.50 36.72 l" + "557.28 27.50 l" + "414.72 27.50 l" + "405.50 36.72 l" + "405.50 251.28 l" + "s" + "0.90 w" + "410.04 259.49 m" + "413.57 255.96 l" + "410.04 252.43 l" + "406.51 255.96 l" + "h" + "f" + "415.15 255.96 m" + "423.29 255.96 l" + "S" + "410.04 250.85 m" + "410.04 242.71 l" + "S" + "561.96 259.49 m" + "565.49 255.96 l" + "561.96 252.43 l" + "558.43 255.96 l" + "h" + "f" + "556.85 255.96 m" + "548.71 255.96 l" + "S" + "561.96 250.85 m" + "561.96 242.71 l" + "S" + "410.04 35.57 m" + "413.57 32.04 l" + "410.04 28.51 l" + "406.51 32.04 l" + "h" + "f" + "415.15 32.04 m" + "423.29 32.04 l" + "S" + "410.04 37.15 m" + "410.04 45.29 l" + "S" + "561.96 35.57 m" + "565.49 32.04 l" + "561.96 28.51 l" + "558.43 32.04 l" + "h" + "f" + "556.85 32.04 m" + "548.71 32.04 l" + "S" + "561.96 37.15 m" + "561.96 45.29 l" + "S" + "1.00 w" + "0.50 w" + "416.16 252.36 m" + "462.96 252.36 l" + "S" + "509.04 252.36 m" + "555.84 252.36 l" + "S" + "0.60 w" + "469.44 255.10 m" + "472.18 252.36 l" + "469.44 249.62 l" + "466.70 252.36 l" + "h" + "f" + "477.72 255.10 m" + "480.46 252.36 l" + "477.72 249.62 l" + "474.98 252.36 l" + "h" + "f" + "486.00 255.10 m" + "488.74 252.36 l" + "486.00 249.62 l" + "483.26 252.36 l" + "h" + "f" + "494.28 255.10 m" + "497.02 252.36 l" + "494.28 249.62 l" + "491.54 252.36 l" + "h" + "f" + "502.56 255.10 m" + "505.30 252.36 l" + "502.56 249.62 l" + "499.82 252.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "432.00 31.32 m" + "479.88 31.32 l" + "S" + "492.12 31.32 m" + "540.00 31.32 l" + "S" + "486.00 33.62 m" + "488.30 31.32 l" + "486.00 29.02 l" + "483.70 31.32 l" + "h" + "S" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 12.00 Tf" + "416.16 246.96 Td" + "0.00 -13.20 Td" + "#hex:00c1019b018d01430003019b015d0003006e01430118013b014301c101c90166016b01be00030118018f013b Tj" + "0.00 -13.20 Td" + "#hex:0058018f025d01de0143018f013401430003062801c101430118013b000301f6016b01d60166 Tj" + "0.00 -13.20 Td" + "#hex:018d019b013b016b025b014301c101c90629 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "410.40 198.00 Td" + "0.00 -8.25 Td" + "#hex:00e001d001c4017001f601d0021301fe000301a0020b017801c204760003022a017801f60231000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "410.40 182.16 m" + "561.60 182.16 l" + "S" + "0.35 w" + "410.40 179.64 m" + "561.60 179.64 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "410.40 174.96 Td" + "0.00 -8.80 Td" + "#hex:00c10166016b01c900030133019b019b018100030134019b018f01d60118016b018f01c90003015e01de016b013b01430184016b018f014301c90003015d019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:016b018f025d01de0143018f0134016b018f015e00030118018f013b000301340166011801c1018d016b018f015e0003019b01d60166014301c101c905fc00030118018f013b0003016b01d601c9 Tj" + "0.00 -8.80 Td" + "#hex:01f6019b01c1013b01c90003011801c10143000301340166011801c1015e0143013b000301f6016b01d601660003018d0118015e016b0134060800030058015d000301fc019b01de000301c901be0143018f013b Tj" + "0.00 -8.80 Td" + "#hex:056d057100030166019b01de01c101c90003019b01f5014301c100030118000301be014301c1016b019b013b0003019b015d0003056f0003013b011801fc01c90003019b01c10003015d014301f6014301c1 Tj" + "0.00 -8.80 Td" + "#hex:01c901d601de013b01fc016b018f015e000301d60166014300030133019b019b0181065a01c900030134019b018f01d60143018f01d601c900030118018f013b Tj" + "0.00 -8.80 Td" + "#hex:01be01c10118013401d6016b0134016b018f015e0003016b01d601c90003015e01de016b013b01430184016b018f014301c905fc000301fc019b01de01c1000300200166011801c1016b01c9018d0118 Tj" + "0.00 -8.80 Td" + "#hex:01c90134019b01c101430003016b018f013401c10143011801c9014301c90003013301fc0003056b05fc0003011801c90003013b019b014301c9000301fc019b01de01c1 Tj" + "0.00 -8.80 Td" + "#hex:018d011801fb016b018d01de018d0003015d019b01c1000301d60166011801d6000301c90134019b01c101430608000300c1016601430003018d0118018f01de01180184000301d601660143018f Tj" + "0.00 -8.80 Td" + "#hex:0184019b01c9014301c90003016b01d601c90003018d0118015e016b013405fc0003013301de01d6000301c10143015e0118016b018f01c90003016b01d60003016b018f00030118000301340143018f01d601de01c101fc0608 Tj" + "ET" + "1.10 w" + "234.72 263.52 m" + "377.28 263.52 l" + "389.52 251.28 l" + "389.52 36.72 l" + "377.28 24.48 l" + "234.72 24.48 l" + "222.48 36.72 l" + "222.48 251.28 l" + "s" + "0.45 w" + "234.72 260.50 m" + "377.28 260.50 l" + "386.50 251.28 l" + "386.50 36.72 l" + "377.28 27.50 l" + "234.72 27.50 l" + "225.50 36.72 l" + "225.50 251.28 l" + "s" + "1.00 w" + "0.50 w" + "236.16 252.36 m" + "282.96 252.36 l" + "S" + "329.04 252.36 m" + "375.84 252.36 l" + "S" + "0.60 w" + "289.44 255.10 m" + "292.18 252.36 l" + "289.44 249.62 l" + "286.70 252.36 l" + "h" + "f" + "297.72 255.10 m" + "300.46 252.36 l" + "297.72 249.62 l" + "294.98 252.36 l" + "h" + "f" + "306.00 255.10 m" + "308.74 252.36 l" + "306.00 249.62 l" + "303.26 252.36 l" + "h" + "S" + "314.28 255.10 m" + "317.02 252.36 l" + "314.28 249.62 l" + "311.54 252.36 l" + "h" + "S" + "322.56 255.10 m" + "325.30 252.36 l" + "322.56 249.62 l" + "319.82 252.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "252.00 31.32 m" + "299.88 31.32 l" + "S" + "312.12 31.32 m" + "360.00 31.32 l" + "S" + "306.00 33.62 m" + "308.30 31.32 l" + "306.00 29.02 l" + "303.70 31.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "367.20 199.08 m" + "373.32 199.08 l" + "375.84 196.56 l" + "375.84 191.16 l" + "373.32 188.64 l" + "367.20 188.64 l" + "364.68 191.16 l" + "364.68 196.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "367.73 191.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "236.16 236.88 Td" + "0.00 -14.30 Td" + "#hex:003101fc014301c90003019b015d000300200166011801c1018d016b018f015e Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "230.40 198.00 Td" + "0.00 -8.25 Td" + "#hex:00e001d001c4017001f601d0021301fe000301a0020b017801c204760003021301c4016901d001c201c201d001c4 Tj" + "ET" + "0.90 w" + "230.40 182.16 m" + "381.60 182.16 l" + "S" + "0.35 w" + "230.40 179.64 m" + "381.60 179.64 l" + "S" + "1.00 w" + "0.80 w" + "BT" + "/F5 5.50 Tf" + "292.40 169.92 Td" + "\"CHARGES\" Tj" + "ET" + "299.30 158.40 m" + "299.30 160.47 297.63 162.14 295.56 162.14 c" + "293.49 162.14 291.82 160.47 291.82 158.40 c" + "291.82 156.33 293.49 154.66 295.56 154.66 c" + "297.63 154.66 299.30 156.33 299.30 158.40 c" + "s" + "309.74 158.40 m" + "309.74 160.47 308.07 162.14 306.00 162.14 c" + "303.93 162.14 302.26 160.47 302.26 158.40 c" + "302.26 156.33 303.93 154.66 306.00 154.66 c" + "308.07 154.66 309.74 156.33 309.74 158.40 c" + "s" + "320.18 158.40 m" + "320.18 160.47 318.51 162.14 316.44 162.14 c" + "314.37 162.14 312.70 160.47 312.70 158.40 c" + "312.70 156.33 314.37 154.66 316.44 154.66 c" + "318.51 154.66 320.18 156.33 320.18 158.40 c" + "s" + "1.00 w" + "0.35 w" + "230.40 146.88 m" + "381.60 146.88 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "230.40 141.12 Td" + "0.00 -8.80 Td" + "#hex:00c10166014301c901430003013401c101fc01c901d601180184000301840143018f01c9014301c90003025b01d60003019b01f5014301c1000301d6016601430003014301fc014301c90608000300c10166014301fc Tj" + "0.00 -8.80 Td" + "#hex:0166011801f501430003056c000301340166011801c1015e014301c90608000300e00166016b01840143000301f60143011801c1016b018f015e000301d601660143018d05fc000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:01340118018f0003014301fb01be0143018f013b0003056a000301340166011801c1015e01430003011801c900030118018f00030118013401d6016b019b018f000301d6019b00030134011801c901d6000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01340166011801c1018d000301be014301c101c9019b018f000301c901be0143018401840003062801c9011801f501430003002700200003056a056c06290003019b018f00030118 Tj" + "0.00 -8.80 Td" + "#hex:016601de018d0118018f019b016b013b000301f6016b01d60166016b018f0003056c05690003015d0143014301d60003019b015d000301fc019b01de05fc000301be01c1019b01f5016b013b0143013b Tj" + "0.00 -8.80 Td" + "#hex:01d60166011801d6000301fc019b01de00030118018f013b000301d601660143000301d6011801c1015e014301d6000301340118018f000301c901430143000301430118013401660003019b01d60166014301c10608 Tj" + "0.00 -8.80 Td" + "#hex:00c101660143000301840143018f01c9014301c9000301c10143015e0118016b018f00030118018401840003014301fb01be0143018f013b0143013b000301340166011801c1015e014301c9 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "277.72 53.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "BT" + "/F1 6.20 Tf" + "280.52 68.40 Td" + "#hex:016901d001c4020b01a001c4021301780170000301d001c40003020b019b017800030168014d016901b6 Tj" + "ET" + "1.10 w" + "54.72 263.52 m" + "197.28 263.52 l" + "209.52 251.28 l" + "209.52 36.72 l" + "197.28 24.48 l" + "54.72 24.48 l" + "42.48 36.72 l" + "42.48 251.28 l" + "s" + "0.45 w" + "54.72 260.50 m" + "197.28 260.50 l" + "206.50 251.28 l" + "206.50 36.72 l" + "197.28 27.50 l" + "54.72 27.50 l" + "45.50 36.72 l" + "45.50 251.28 l" + "s" + "0.70 w" + "50.04 258.55 m" + "52.63 255.96 l" + "50.04 253.37 l" + "47.45 255.96 l" + "h" + "S" + "201.96 258.55 m" + "204.55 255.96 l" + "201.96 253.37 l" + "199.37 255.96 l" + "h" + "S" + "50.04 34.63 m" + "52.63 32.04 l" + "50.04 29.45 l" + "47.45 32.04 l" + "h" + "S" + "201.96 34.63 m" + "204.55 32.04 l" + "201.96 29.45 l" + "199.37 32.04 l" + "h" + "S" + "1.00 w" + "0.50 w" + "56.16 252.36 m" + "102.96 252.36 l" + "S" + "149.04 252.36 m" + "195.84 252.36 l" + "S" + "0.60 w" + "109.44 255.10 m" + "112.18 252.36 l" + "109.44 249.62 l" + "106.70 252.36 l" + "h" + "f" + "117.72 255.10 m" + "120.46 252.36 l" + "117.72 249.62 l" + "114.98 252.36 l" + "h" + "f" + "126.00 255.10 m" + "128.74 252.36 l" + "126.00 249.62 l" + "123.26 252.36 l" + "h" + "f" + "134.28 255.10 m" + "137.02 252.36 l" + "134.28 249.62 l" + "131.54 252.36 l" + "h" + "S" + "142.56 255.10 m" + "145.30 252.36 l" + "142.56 249.62 l" + "139.82 252.36 l" + "h" + "S" + "1.00 w" + "0.50 w" + "72.00 31.32 m" + "119.88 31.32 l" + "S" + "132.12 31.32 m" + "180.00 31.32 l" + "S" + "126.00 33.62 m" + "128.30 31.32 l" + "126.00 29.02 l" + "123.70 31.32 l" + "h" + "S" + "1.00 w" + "0.70 w" + "187.20 199.08 m" + "193.32 199.08 l" + "195.84 196.56 l" + "195.84 191.16 l" + "193.32 188.64 l" + "187.20 188.64 l" + "184.68 191.16 l" + "184.68 196.56 l" + "s" + "BT" + "/F2 7.00 Tf" + "187.73 191.23 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "56.16 236.88 Td" + "0.00 -14.30 Td" + "#hex:002001de013301430003019b015d0003004a019b01c101340143 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "50.40 198.00 Td" + "0.00 -8.25 Td" + "#hex:00e001d001c4017001f601d0021301fe000301a0020b017801c20476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "50.40 182.16 m" + "201.60 182.16 l" + "S" + "0.35 w" + "50.40 179.64 m" + "201.60 179.64 l" + "S" + "1.00 w" + "0.80 w" + "BT" + "/F5 5.50 Tf" + "112.40 169.92 Td" + "\"CHARGES\" Tj" + "ET" + "96.04 158.40 m" + "140.68 158.40 l" + "S" + "BT" + "/F5 7.00 Tf" + "144.28 159.48 Td" + "\"/ 36\" Tj" + "ET" + "1.00 w" + "0.35 w" + "50.40 146.88 m" + "201.60 146.88 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "50.40 141.12 Td" + "0.00 -8.80 Td" + "#hex:00c10166016b01c90003013401de013301430003016b01c9000301180133019b01de01d600030118018f0003016b018f0134016600030118013401c1019b01c901c90608000300310118013401660003015d011801340143 Tj" + "0.00 -8.80 Td" + "#hex:0166011801c9000301180003013b016b01c901d6016b018f013401d60003018d011801c10181016b018f015e0003019b018f0003016b01d6000301d60166011801d6000301340118018f000301330143 Tj" + "0.00 -8.80 Td" + "#hex:01be01c1014301c901c90143013b0608000300c1016601430003013401de01330143000301c901d6011801c101d601c9000301f6016b01d601660003056c056f000301340166011801c1015e014301c905fc Tj" + "0.00 -8.80 Td" + "#hex:0118018f013b0003016b01d6000301c10143015e0118016b018f01c90003056a013b056b05690003014301fb01be0143018f013b0143013b000301340166011801c1015e014301c90003013b0118016b018401fc Tj" + "0.00 -8.80 Td" + "#hex:011801d60003013b011801f6018f0608000300e6019b01de000301340118018f000301de01c9014300030118018f00030118013401d6016b019b018f000301d6019b000301be01c1014301c901c90003019b018f0143 Tj" + "0.00 -8.80 Td" + "#hex:019b015d000301d6016601430003013401de01330143065a01c90003015d01180134014301c905fc0003014301fb01be0143018f013b016b018f015e000301180003018f01de018d0133014301c10003019b015d Tj" + "0.00 -8.80 Td" + "#hex:01340166011801c1015e014301c900030133011801c90143013b0003019b018f000301d601660143000301340166019b01c90143018f0003015d01180134014305fc0003011801c9000301c90166019b01f6018f Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "97.72 53.72 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "BT" + "/F1 6.20 Tf" + "100.52 68.40 Td" + "#hex:016901d001c4020b01a001c4021301780170000301d001c40003020b019b017800030168014d016901b6 Tj" + "ET"]] diff --git a/test/clj/orcpub/card_geometry_test.clj b/test/clj/orcpub/card_geometry_test.clj index 7188f204f..3df2b2437 100644 --- a/test/clj/orcpub/card_geometry_test.clj +++ b/test/clj/orcpub/card_geometry_test.clj @@ -17,7 +17,7 @@ [orcpub.routes :as routes] [orcpub.dnd.e5.spells :as spells] [orcpub.dnd.e5.magic-items :as magic-items]) - (:import (org.apache.pdfbox.pdmodel PDDocument) + (:import (org.apache.pdfbox.pdmodel PDDocument PDPage PDPageContentStream) (org.apache.pdfbox Loader) (org.apache.pdfbox.pdfparser PDFStreamParser) (org.apache.pdfbox.contentstream.operator Operator) @@ -28,14 +28,22 @@ (def ^:private card-back-logo "public/image/dmv-mark-black.png") -(def ^:private page-names - "The 8 pages render-cards produces, in order." +(def ^:private sheet-pages + "The 8 pages render-cards produces per printing mode, in order." ["spell fronts 1" "spell backs 1" "spell fronts 2" "spell backs 2" "item fronts 1" "item backs 1" "item fronts 2" "item backs 2"]) +(def ^:private print-modes + "Colour and the two printer-friendly renderings. draw-spell-field and the card + frame each branch three ways on these, so one mode pins a third of the paths." + [[:colour false false] [:bw true false] [:bw-faded true true]]) + +(def ^:private page-names + (vec (for [[mode _ _] print-modes, nm sheet-pages] (str nm " / " (name mode))))) + (defn- render-cards - "Both kinds of card page, through the real routes, reloaded from the saved bytes. - 12 of each: enough to fill one sheet of 9 and spill onto a second." + "Both kinds of card page in every printing mode, through the real routes, reloaded + from the saved bytes. 12 of each kind: fills one sheet of 9 and spills onto a second." [] (let [out (ByteArrayOutputStream.)] (with-open [doc (PDDocument.)] @@ -43,11 +51,12 @@ img (pdf/make-image-loader doc) known {:wizard (vec (for [k (take 12 (keys spells/spell-map))] {:key k :class "Wizard"}))}] - (routes/add-spell-cards! doc fonts img known {"Wizard" 15} {"Wizard" 7} - nil false card-back-logo false false) - (routes/add-magic-item-cards! doc fonts img - (vec (take 12 magic-items/magic-items)) - card-back-logo false false)) + (doseq [[_ bw? faded?] print-modes] + (routes/add-spell-cards! doc fonts img known {"Wizard" 15} {"Wizard" 7} + nil false card-back-logo bw? faded?) + (routes/add-magic-item-cards! doc fonts img + (vec (take 12 magic-items/magic-items)) + card-back-logo bw? faded?))) (.save doc out)) (Loader/loadPDF (.toByteArray out)))) @@ -128,8 +137,114 @@ (deftest the-pages-are-what-we-think-they-are (testing "the baseline covers real output, not an empty document" (let [pages (current)] - (is (= 8 (count pages))) + (is (= 24 (count pages)) "8 pages x 3 printing modes") + (is (= (count page-names) (count pages))) (is (every? pos? (map count pages))) (testing "and fronts carry more than backs, so the names are not swapped" - (is (> (count (nth pages 0)) (count (nth pages 1)))) - (is (> (count (nth pages 4)) (count (nth pages 5)))))))) + (doseq [base (range 0 24 8)] + (is (> (count (nth pages base)) (count (nth pages (inc base))))) + (is (> (count (nth pages (+ base 4))) (count (nth pages (+ base 5))))))) + (testing "and the three modes differ, so bw is really being exercised" + (is (not= (nth pages 0) (nth pages 8))) + (is (not= (nth pages 8) (nth pages 16))))))) + +;; ── The ornament matrix ────────────────────────────────────────────────────── +;; The two sheets above go through the real route, which fixes the flourish at its +;; default and the printing mode to colour. draw-flourish! is a case over three +;; families crossed with five rarity ranks, and bw? / bw-faded? are separate paths. + +(def ornament-baseline-file "test/card-ornament-baseline.edn") + +(def ^:private rarity-cases + "One item per rarity, named rather than taken by position, so a data edit cannot + quietly shrink what the matrix covers. `expect` is asserted before use." + [{:name "Potion of Climbing" :expect :common} + {:name "Adamantine Armor, Chain Shirt" :expect :uncommon} + {:name "Armor of Resistance (Acid), Padded" :expect :rare} + {:name "Arrow +3" :expect :very-rare} + {:name "Apparatus of the Crab" :expect :legendary} + {:name "Belt of Dwarvenkind" :expect :varies} + ;; Not rarities. Both charge paths: 36 is past tickable-charges so it prints a + ;; number, 3 prints circles. Then a name long enough to force the shrink. + {:name "Cube of Force" :expect :rare :charges 36} + {:name "Eyes of Charming" :expect :uncommon :charges 3} + {:name "Tome of Leadership and Influence (read with modifiers)" :expect :very-rare}]) + +(defn- item-named [nm] + (first (filter #(= nm (:name %)) magic-items/magic-items))) + +(defn- ornament-pages + "One page per flourish family x printing mode, each carrying every rarity case." + [] + (let [items (mapv (comp item-named :name) rarity-cases) + out (ByteArrayOutputStream.) + labels (atom [])] + (with-open [doc (PDDocument.)] + (let [fonts (pdf/load-fonts doc) + img (pdf/make-image-loader doc)] + (doseq [family pdf/card-flourishes + [mode bw? faded?] print-modes] + (let [page (PDPage.)] + (.addPage doc page) + (swap! labels conj (str (name family) " / " (name mode))) + (with-open [cs (PDPageContentStream. doc page)] + (pdf/print-items cs doc fonts img 2.5 3.5 items 0 bw? faded? + {:flourish family}))))) + (.save doc out)) + [@labels (with-open [doc (Loader/loadPDF (.toByteArray out))] + (mapv #(page-ops (.getPage doc %)) + (range (.getNumberOfPages doc))))])) + +(deftest the-matrix-covers-what-it-claims + (testing "every named item exists and still has the rarity the matrix assumes" + (doseq [{:keys [name expect]} rarity-cases] + (let [item (item-named name)] + (is (some? item) (str "no magic item named " (pr-str name))) + (when item + (is (= expect (:orcpub.dnd.e5.magic-items/rarity item)) + (str (pr-str name) " changed rarity: the matrix no longer covers " + expect)))))) + (testing "all five ranks, plus :varies" + (is (= #{:common :uncommon :rare :very-rare :legendary :varies} + (set (map :expect rarity-cases))))) + (testing "both charge paths, either side of tickable-charges" + (doseq [{:keys [name charges]} (filter :charges rarity-cases)] + (is (= charges (pdf/item-charges + (:orcpub.dnd.e5.magic-items/description (item-named name)))) + (str (pr-str name) " no longer reads as " charges " charges"))) + (is (= #{true false} + (set (map #(<= % @#'pdf/tickable-charges) (keep :charges rarity-cases)))) + "the matrix needs one item each side of tickable-charges")) + (testing "an attunement badge and a name that must shrink are both on the page" + (is (some #(seq (str (:orcpub.dnd.e5.magic-items/attunement (item-named (:name %))))) + rarity-cases)) + (is (some #(< 40 (count (:name %))) rarity-cases))) + (testing "every flourish family and printing mode" + (is (= 9 (* (count pdf/card-flourishes) (count print-modes)))))) + +(deftest ornament-geometry-is-unchanged + (let [[labels pages] (ornament-pages) + recorded (when (.exists (io/file ornament-baseline-file)) + (edn/read-string (slurp ornament-baseline-file)))] + (if (= "seed" (System/getenv "CARD_GEOMETRY")) + (do (spit ornament-baseline-file + (with-out-str + (println ";; Written by orcpub.card-geometry-test. Flourish family x printing mode.") + (println ";; A diff here is an ornament moving. Read it before committing it.") + (binding [*print-length* nil *print-level* nil] + (pprint/pprint pages)))) + (println "seeded" (reduce + (map count pages)) "operators across" + (count pages) "ornament pages to" ornament-baseline-file)) + (do + (is (some? recorded) (str ornament-baseline-file " is missing: run CARD_GEOMETRY=seed")) + (when recorded + (is (= (count recorded) (count pages))) + (doseq [[i was now nm] (map vector (range) recorded pages labels)] + (testing (str "page " i " (" nm ")") + (when-not (= was now) + (println (format "%nOrnament page %d (%s): %d ops recorded, %d now" + i nm (count was) (count now))) + (doseq [[j a b] (first-diffs was now 12)] + (println (format " op %4d was %-34s now %s" j (pr-str a) (pr-str b))))) + (is (= was now) + "an ornament moved; re-seed only if the move was intended")))))))) From d3768a59f39916fb0decdec0edae33f93f0767c9 Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Tue, 13 Oct 2026 19:00:28 +0000 Subject: [PATCH 05/40] Pin the spellbook too, and share the baseline machinery spellbook.clj is the OTHER consumer of pdf.clj's shared surface. The 33 card pages prove the cards did not move; nothing proved the spellbook did not, so unifying the duplicated shape primitives would have been half-checked. Correcting an earlier claim of mine: spellbook.clj is NOT a third implementation. It already calls pdf/normalize-text, string-width, split-lines, svg-path-ops, draw-svg-icon! and all three abbreviators - the text, SVG and abbreviation surfaces are shared today. Its wrappers are a unit shim (x72, /72) plus three real additions: clean adds bullet substitution, wrap honours hard line breaks that pdf/split-lines discards, and clip truncates with an ellipsis, which the card code cannot do. What is actually duplicated is the shape layer: polyline! (pdf 2745 / sb 186), circle! (pdf 2770 / sb 179), and bezier-k 0.5522847, typed out in both files. Same algorithm; the only difference is the coordinate transform, card-pt against a hardcoded 11 inches versus py against page-h 792.0 - the same page in two units. the-cases-cover-what-they-claim asserts the two bezier-k values are still equal, so they cannot drift while they wait to be unified. Pages are recorded as FINGERPRINTS, not operator lists. A spellbook page is ~12,300 operators, 124,684 of the 200,156 total being curveTo from the shared SVG emblems redrawn on every page: in full that is 7.0MB of redundant text. The fingerprint is 7.6K over 596 lines and holds the op count, a histogram by operator, and three disjoint hashes - geometry, colour, text. Cards keep full operators, because those are the hand-tuned positions worth reading a diff of. Coverage: 18 cases, layout x order x tabs, the matrix spellbook_test already iterates, over 24 pages. Spells span cantrip to 9th so every level ring is drawn. Proven to fail, each perturbation reverted: - spellbook bezier-k 0.5522847 -> 0.56: "moved: geometry". - the `hair` grey 0.78 -> 0.85: "moved: colour". Two mistakes of my own, both fixed here: - The first report printed "drawing unchanged: text moved" when all it knew was "not in my drawing-operator set". That is the test claiming more than it measured. Hence three disjoint hashes and an explicit graphics-state-only case. - I read `hair` as a hairline width. It is a grey level passed to gray! (spellbook.clj:28, used at 513, 560, 596, 924). LIMIT, recorded deliberately: operands are rounded to 2dp of a point, 1/3600 inch. A change below that is invisible here. Found by perturbing bezier-k in its seventh decimal - the geometry hash did not budge and only the drift assertion caught it. These baselines prove nothing moved VISIBLY, not that the bytes are identical. The operator reading and baseline checking now live in orcpub.pdf-ops, used by both geometry tests, rather than copied - the same principle as the refactor they guard. Re-seeding the cards against their committed baseline through the shared code gave the same 73 assertions green, so the extraction is behaviour-identical. lein test 710/5400 green, lein lint 0/0. --- test/clj/orcpub/card_geometry_test.clj | 181 ++---- test/clj/orcpub/pdf_ops.clj | 141 +++++ test/clj/orcpub/spellbook_geometry_test.clj | 88 +++ test/spellbook-geometry-baseline.edn | 644 ++++++++++++++++++++ 4 files changed, 912 insertions(+), 142 deletions(-) create mode 100644 test/clj/orcpub/pdf_ops.clj create mode 100644 test/clj/orcpub/spellbook_geometry_test.clj create mode 100644 test/spellbook-geometry-baseline.edn diff --git a/test/clj/orcpub/card_geometry_test.clj b/test/clj/orcpub/card_geometry_test.clj index 3df2b2437..e7fb34208 100644 --- a/test/clj/orcpub/card_geometry_test.clj +++ b/test/clj/orcpub/card_geometry_test.clj @@ -1,49 +1,42 @@ (ns orcpub.card-geometry-test - "Pins the drawing operators of every card page, so a refactor that moves a card - by a sixteenth of an inch fails here instead of shipping. + "Pins the drawing operators of every card page, so a refactor that moves a card by a + sixteenth of an inch fails here instead of shipping. - The cards' positions were tuned by hand over several rounds. Nothing else in the - suite would notice them moving: the other card tests assert structure (fonts - embedded once, a site stamp present), not geometry. + The cards' positions were tuned by hand over several rounds, and nothing else in the + suite reads a coordinate: card_export_test asserts structure, pdf_test asserts fields. - Re-seed after a DELIBERATE card change: CARD_GEOMETRY=seed lein test :only - orcpub.card-geometry-test — then read the diff before committing it." + Re-seed after a DELIBERATE change: CARD_GEOMETRY=seed lein test, then read the diff." (:require [clojure.test :refer [deftest is testing]] - [clojure.string :as str] - [clojure.edn :as edn] - [clojure.java.io :as io] - [clojure.pprint :as pprint] + [orcpub.pdf-ops :as ops] [orcpub.pdf :as pdf] [orcpub.routes :as routes] [orcpub.dnd.e5.spells :as spells] [orcpub.dnd.e5.magic-items :as magic-items]) (:import (org.apache.pdfbox.pdmodel PDDocument PDPage PDPageContentStream) (org.apache.pdfbox Loader) - (org.apache.pdfbox.pdfparser PDFStreamParser) - (org.apache.pdfbox.contentstream.operator Operator) - (org.apache.pdfbox.cos COSNumber COSString COSName) (java.io ByteArrayOutputStream))) -(def baseline-file "test/card-geometry-baseline.edn") +(def sheet-baseline-file "test/card-geometry-baseline.edn") +(def ornament-baseline-file "test/card-ornament-baseline.edn") (def ^:private card-back-logo "public/image/dmv-mark-black.png") +(def ^:private print-modes + "Colour and the two printer-friendly renderings. draw-spell-field and the card frame + each branch three ways on these, so one mode pins a third of the paths." + [[:colour false false] [:bw true false] [:bw-faded true true]]) + (def ^:private sheet-pages "The 8 pages render-cards produces per printing mode, in order." ["spell fronts 1" "spell backs 1" "spell fronts 2" "spell backs 2" "item fronts 1" "item backs 1" "item fronts 2" "item backs 2"]) -(def ^:private print-modes - "Colour and the two printer-friendly renderings. draw-spell-field and the card - frame each branch three ways on these, so one mode pins a third of the paths." - [[:colour false false] [:bw true false] [:bw-faded true true]]) - -(def ^:private page-names +(def ^:private sheet-labels (vec (for [[mode _ _] print-modes, nm sheet-pages] (str nm " / " (name mode))))) (defn- render-cards - "Both kinds of card page in every printing mode, through the real routes, reloaded - from the saved bytes. 12 of each kind: fills one sheet of 9 and spills onto a second." + "Both kinds of card page in every printing mode, through the real routes, reloaded from + the saved bytes. 12 of each kind: fills one sheet of 9 and spills onto a second." [] (let [out (ByteArrayOutputStream.)] (with-open [doc (PDDocument.)] @@ -60,112 +53,41 @@ (.save doc out)) (Loader/loadPDF (.toByteArray out)))) -(defn- show-string - "A drawn string as ASCII. Card text goes through an embedded Type0 font, so its - bytes are 2-byte CIDs, not characters: decoding them gives control bytes that - make the baseline a binary blob to git and kill the diff it exists for. Printable - ASCII prints as itself; anything else goes to hex." - [^COSString cs] - (let [bs (.getBytes cs)] - (if (every? #(<= 32 % 126) (map #(bit-and % 0xff) bs)) - (pr-str (String. bs "US-ASCII")) - (str "#hex:" (apply str (map #(format "%02x" (bit-and % 0xff)) bs)))))) - -(defn- token-str [t] - (cond - ;; 2dp of a point is 1/3600 inch: finer than any hand tweak, coarse enough that - ;; re-associating the same arithmetic does not flap the baseline. - (instance? COSNumber t) (format "%.2f" (.floatValue ^COSNumber t)) - (instance? COSString t) (show-string t) - (instance? COSName t) (str "/" (.getName ^COSName t)) - :else (str t))) - -(defn page-ops - "Every operator on `page` as \"arg arg op\", in order: the page's geometry as - PDFBox will write it." - [page] - (loop [[t & more] (seq (.parse (PDFStreamParser. page))), args [], out []] - (if (nil? t) - out - (if (instance? Operator t) - (recur more [] (conj out (str/join " " (conj args (.getName ^Operator t))))) - (recur more (conj args (token-str t)) out))))) - -(defn- current [] - (with-open [doc (render-cards)] - (mapv #(page-ops (.getPage doc %)) (range (.getNumberOfPages doc))))) - -(defn- first-diffs - "Up to `n` [index was now] where two op sequences disagree." - [was now n] - (->> (map vector (range) (concat was (repeat nil)) (concat now (repeat nil))) - (take (max (count was) (count now))) - (remove (fn [[_ a b]] (= a b))) - (take n) - (mapv (fn [[i a b]] [i a b])))) +(defn- sheet-pages-ops [] + (with-open [doc (render-cards)] (ops/doc-ops doc))) (deftest card-geometry-is-unchanged - (let [pages (current) - recorded (when (.exists (io/file baseline-file)) - (edn/read-string (slurp baseline-file)))] - (if (= "seed" (System/getenv "CARD_GEOMETRY")) - (do (spit baseline-file - (with-out-str - (println ";; Written by orcpub.card-geometry-test. Drawing operators per card page.") - (println ";; A diff here is a card moving. Read it before committing it.") - (binding [*print-length* nil *print-level* nil] - (pprint/pprint pages)))) - (println "seeded" (reduce + (map count pages)) "operators across" - (count pages) "pages to" baseline-file)) - (do - (is (some? recorded) (str baseline-file " is missing: run CARD_GEOMETRY=seed")) - (when recorded - (testing "the same pages, in the same order" - (is (= (count recorded) (count pages)))) - ;; `now`, not `is`: a binding named `is` shadows clojure.test/is and the - ;; assertion below silently becomes a vector lookup. - (doseq [[i was now nm] (map vector (range) recorded pages page-names)] - (testing (str "page " i " (" nm ")") - (when-not (= was now) - (println (format "%nPage %d (%s): %d ops recorded, %d now" - i nm (count was) (count now))) - (doseq [[j a b] (first-diffs was now 12)] - (println (format " op %4d was %-34s now %s" j (pr-str a) (pr-str b))))) - (is (= was now) - "a card moved; re-seed only if the move was intended")))))))) + (ops/check-baseline! sheet-baseline-file (sheet-pages-ops) sheet-labels "Card sheet")) (deftest the-pages-are-what-we-think-they-are (testing "the baseline covers real output, not an empty document" - (let [pages (current)] + (let [pages (sheet-pages-ops)] (is (= 24 (count pages)) "8 pages x 3 printing modes") - (is (= (count page-names) (count pages))) + (is (= (count sheet-labels) (count pages))) (is (every? pos? (map count pages))) - (testing "and fronts carry more than backs, so the names are not swapped" + (testing "fronts carry more than backs, so the names are not swapped" (doseq [base (range 0 24 8)] (is (> (count (nth pages base)) (count (nth pages (inc base))))) (is (> (count (nth pages (+ base 4))) (count (nth pages (+ base 5))))))) - (testing "and the three modes differ, so bw is really being exercised" + (testing "the three modes differ, so bw is really being exercised" (is (not= (nth pages 0) (nth pages 8))) (is (not= (nth pages 8) (nth pages 16))))))) ;; ── The ornament matrix ────────────────────────────────────────────────────── -;; The two sheets above go through the real route, which fixes the flourish at its -;; default and the printing mode to colour. draw-flourish! is a case over three -;; families crossed with five rarity ranks, and bw? / bw-faded? are separate paths. - -(def ornament-baseline-file "test/card-ornament-baseline.edn") +;; The sheets above go through the real route, which fixes the flourish at its default. +;; draw-flourish! is a case over three families crossed with five rarity ranks. (def ^:private rarity-cases - "One item per rarity, named rather than taken by position, so a data edit cannot - quietly shrink what the matrix covers. `expect` is asserted before use." + "One item per rarity, named rather than taken by position, so a data edit cannot quietly + shrink what the matrix covers. `expect` is asserted before use." [{:name "Potion of Climbing" :expect :common} {:name "Adamantine Armor, Chain Shirt" :expect :uncommon} {:name "Armor of Resistance (Acid), Padded" :expect :rare} {:name "Arrow +3" :expect :very-rare} {:name "Apparatus of the Crab" :expect :legendary} {:name "Belt of Dwarvenkind" :expect :varies} - ;; Not rarities. Both charge paths: 36 is past tickable-charges so it prints a - ;; number, 3 prints circles. Then a name long enough to force the shrink. + ;; Not rarities. Both charge paths: 36 is past tickable-charges so it prints a number, + ;; 3 prints circles. Then a name long enough to force the shrink. {:name "Cube of Force" :expect :rare :charges 36} {:name "Eyes of Charming" :expect :uncommon :charges 3} {:name "Tome of Leadership and Influence (read with modifiers)" :expect :very-rare}]) @@ -173,27 +95,27 @@ (defn- item-named [nm] (first (filter #(= nm (:name %)) magic-items/magic-items))) +(def ^:private ornament-labels + (vec (for [family pdf/card-flourishes, [mode _ _] print-modes] + (str (name family) " / " (name mode))))) + (defn- ornament-pages "One page per flourish family x printing mode, each carrying every rarity case." [] (let [items (mapv (comp item-named :name) rarity-cases) - out (ByteArrayOutputStream.) - labels (atom [])] + out (ByteArrayOutputStream.)] (with-open [doc (PDDocument.)] (let [fonts (pdf/load-fonts doc) img (pdf/make-image-loader doc)] (doseq [family pdf/card-flourishes - [mode bw? faded?] print-modes] + [_ bw? faded?] print-modes] (let [page (PDPage.)] (.addPage doc page) - (swap! labels conj (str (name family) " / " (name mode))) (with-open [cs (PDPageContentStream. doc page)] (pdf/print-items cs doc fonts img 2.5 3.5 items 0 bw? faded? {:flourish family}))))) (.save doc out)) - [@labels (with-open [doc (Loader/loadPDF (.toByteArray out))] - (mapv #(page-ops (.getPage doc %)) - (range (.getNumberOfPages doc))))])) + (with-open [doc (Loader/loadPDF (.toByteArray out))] (ops/doc-ops doc)))) (deftest the-matrix-covers-what-it-claims (testing "every named item exists and still has the rarity the matrix assumes" @@ -202,8 +124,7 @@ (is (some? item) (str "no magic item named " (pr-str name))) (when item (is (= expect (:orcpub.dnd.e5.magic-items/rarity item)) - (str (pr-str name) " changed rarity: the matrix no longer covers " - expect)))))) + (str (pr-str name) " changed rarity: the matrix no longer covers " expect)))))) (testing "all five ranks, plus :varies" (is (= #{:common :uncommon :rare :very-rare :legendary :varies} (set (map :expect rarity-cases))))) @@ -220,31 +141,7 @@ rarity-cases)) (is (some #(< 40 (count (:name %))) rarity-cases))) (testing "every flourish family and printing mode" - (is (= 9 (* (count pdf/card-flourishes) (count print-modes)))))) + (is (= 9 (count ornament-labels))))) (deftest ornament-geometry-is-unchanged - (let [[labels pages] (ornament-pages) - recorded (when (.exists (io/file ornament-baseline-file)) - (edn/read-string (slurp ornament-baseline-file)))] - (if (= "seed" (System/getenv "CARD_GEOMETRY")) - (do (spit ornament-baseline-file - (with-out-str - (println ";; Written by orcpub.card-geometry-test. Flourish family x printing mode.") - (println ";; A diff here is an ornament moving. Read it before committing it.") - (binding [*print-length* nil *print-level* nil] - (pprint/pprint pages)))) - (println "seeded" (reduce + (map count pages)) "operators across" - (count pages) "ornament pages to" ornament-baseline-file)) - (do - (is (some? recorded) (str ornament-baseline-file " is missing: run CARD_GEOMETRY=seed")) - (when recorded - (is (= (count recorded) (count pages))) - (doseq [[i was now nm] (map vector (range) recorded pages labels)] - (testing (str "page " i " (" nm ")") - (when-not (= was now) - (println (format "%nOrnament page %d (%s): %d ops recorded, %d now" - i nm (count was) (count now))) - (doseq [[j a b] (first-diffs was now 12)] - (println (format " op %4d was %-34s now %s" j (pr-str a) (pr-str b))))) - (is (= was now) - "an ornament moved; re-seed only if the move was intended")))))))) + (ops/check-baseline! ornament-baseline-file (ornament-pages) ornament-labels "Ornament")) diff --git a/test/clj/orcpub/pdf_ops.clj b/test/clj/orcpub/pdf_ops.clj new file mode 100644 index 000000000..4609a0dfe --- /dev/null +++ b/test/clj/orcpub/pdf_ops.clj @@ -0,0 +1,141 @@ +(ns orcpub.pdf-ops + "Reads the drawing operators off a rendered PDF page, and checks them against a + recorded baseline. Shared by the geometry characterization tests: card_geometry_test + pins the card sheets, spellbook_geometry_test pins the spellbook." + (:require [clojure.string :as str] + [clojure.edn :as edn] + [clojure.java.io :as io] + [clojure.pprint :as pprint] + [clojure.test :refer [is testing]]) + (:import (java.security MessageDigest) + (org.apache.pdfbox.pdfparser PDFStreamParser) + (org.apache.pdfbox.contentstream.operator Operator) + (org.apache.pdfbox.cos COSNumber COSString COSName))) + +(defn- show-string + "A drawn string as ASCII. Card and spellbook text go through an embedded Type0 font, + so the bytes are 2-byte CIDs, not characters: decoding them gives control bytes that + make the baseline a binary blob to git and kill the diff it exists for. Printable + ASCII prints as itself; anything else goes to hex." + [^COSString cs] + (let [bs (.getBytes cs)] + (if (every? #(<= 32 % 126) (map #(bit-and % 0xff) bs)) + (pr-str (String. bs "US-ASCII")) + (str "#hex:" (apply str (map #(format "%02x" (bit-and % 0xff)) bs)))))) + +(defn- token-str [t] + (cond + ;; 2dp of a point is 1/3600 inch: finer than any hand tweak, coarse enough that + ;; re-associating the same arithmetic does not flap the baseline. + (instance? COSNumber t) (format "%.2f" (.floatValue ^COSNumber t)) + (instance? COSString t) (show-string t) + (instance? COSName t) (str "/" (.getName ^COSName t)) + :else (str t))) + +(defn page-ops + "Every operator on `page` as \"arg arg op\", in order: the page's geometry as PDFBox + will write it." + [page] + (loop [[t & more] (seq (.parse (PDFStreamParser. page))), args [], out []] + (if (nil? t) + out + (if (instance? Operator t) + (recur more [] (conj out (str/join " " (conj args (.getName ^Operator t))))) + (recur more (conj args (token-str t)) out))))) + +(defn doc-ops + "page-ops for every page of `doc`, in order." + [doc] + (mapv #(page-ops (.getPage doc %)) (range (.getNumberOfPages doc)))) + +(defn- sha12 [coll] + (let [bs (.digest (MessageDigest/getInstance "SHA-256") + (.getBytes (str/join "\n" coll) "UTF-8"))] + (subs (apply str (map #(format "%02x" (bit-and % 0xff)) bs)) 0 12))) + +(defn fingerprint + "A page's operators as a small map: the count, a histogram by operator, and hashes of + the whole stream and of its drawing operators alone. + + For pages whose bulk is generated vector art. The spellbook runs ~8,300 operators a + page, mostly curveTo from the shared SVG emblems, so recording them in full is 7MB of + redundant text. This still fails on any change; the histogram says whether the shape + counts changed, and the three hashes say whether geometry, colour or text moved." + [ops] + (let [kind #(or (last (str/split % #" ")) "") + ;; Three disjoint hashes, so a failure says WHICH of the three moved. Everything + ;; else -- graphics state, form XObjects -- shows only in :sha. + geometry #{"m" "l" "c" "v" "y" "h" "re" "S" "s" "f" "F" "f*" "B" "b" "n" "w"} + colour #{"rg" "RG" "g" "G" "k" "K" "sc" "SC" "scn" "SCN" "cs" "CS"} + text #{"Tj" "TJ" "Td" "TD" "Tm" "Tf" "T*" "TL" "Tc" "Tw" "Tz" "Ts" "BT" "ET"}] + {:ops (count ops) + :kinds (into (sorted-map) (frequencies (map kind ops))) + :sha (sha12 ops) + :geom (sha12 (filter (comp geometry kind) ops)) + :colour (sha12 (filter (comp colour kind) ops)) + :text (sha12 (filter (comp text kind) ops))})) + +(defn doc-fingerprints [doc] + (mapv fingerprint (doc-ops doc))) + +(defn- first-diffs + "Up to `n` [index was now] where two op sequences disagree." + [was now n] + (->> (map vector (range) (concat was (repeat nil)) (concat now (repeat nil))) + (take (max (count was) (count now))) + (remove (fn [[_ a b]] (= a b))) + (take n) + (mapv (fn [[i a b]] [i a b])))) + +(defn seeding? [] + (= "seed" (System/getenv "CARD_GEOMETRY"))) + +(defn- seed! [file pages what] + (spit file + (with-out-str + (println ";; Written by orcpub's geometry characterization tests:" what) + (println ";; A diff here is drawing moving. Read it before committing it.") + (binding [*print-length* nil *print-level* nil] + (pprint/pprint pages)))) + (println "seeded" (reduce + (map #(if (map? %) (:ops %) (count %)) pages)) + "operators across" (count pages) "pages to" file)) + +(defn check-baseline! + "Seeds `file` from `pages` under CARD_GEOMETRY=seed; otherwise asserts `pages` matches + it, printing the first differing operators per page. `labels` names the pages and + `what` describes the set." + [file pages labels what] + (if (seeding?) + (seed! file pages what) + (do + (is (some? (when (.exists (io/file file)) true)) + (str file " is missing: run CARD_GEOMETRY=seed")) + (when (.exists (io/file file)) + (let [recorded (edn/read-string (slurp file))] + (is (= (count recorded) (count pages)) "the page count changed") + (doseq [[i was now nm] (map vector (range) recorded pages labels)] + (testing (str "page " i " (" nm ")") + (when-not (= was now) + (if (map? was) + (do (println (format "%n%s page %d (%s): %d ops recorded, %d now" + what i nm (:ops was) (:ops now))) + (println " stream" (:sha was) "->" (:sha now)) + (let [moved (for [[k label] [[:geom "geometry"] [:colour "colour"] + [:text "text"]] + :when (not= (k was) (k now))] + label)] + (println " moved:" + (if (seq moved) + (str/join ", " moved) + "none of geometry, colour or text -- graphics state only"))) + (doseq [k (sort (into #{} (concat (keys (:kinds was)) (keys (:kinds now))))) + :let [a (get (:kinds was) k 0) b (get (:kinds now) k 0)] + :when (not= a b)] + (println (format " %-4s %d -> %d" k a b)))) + (do (println (format "%n%s page %d (%s): %d ops recorded, %d now" + what i nm (count was) (count now))) + (doseq [[j a b] (first-diffs was now 12)] + (println (format " op %4d was %-34s now %s" + j (pr-str a) (pr-str b))))))) + (is (= was now) + "drawing moved; re-seed only if the move was intended")))))))) diff --git a/test/clj/orcpub/spellbook_geometry_test.clj b/test/clj/orcpub/spellbook_geometry_test.clj new file mode 100644 index 000000000..46d67d78c --- /dev/null +++ b/test/clj/orcpub/spellbook_geometry_test.clj @@ -0,0 +1,88 @@ +(ns orcpub.spellbook-geometry-test + "Pins the spellbook's drawing operators, for the same reason card_geometry_test pins the + cards: spellbook.clj is the OTHER consumer of pdf.clj's shared surface, and the card + baseline cannot see it move. + + spellbook_test asserts that every layout renders and that each spell's name appears. + Neither reads a coordinate, so unifying the duplicated shape primitives (polyline!, + circle!, line! exist in both files, and bezier-k is typed out twice) would be unchecked + here. Re-seed a DELIBERATE change with CARD_GEOMETRY=seed. + + Pages are recorded as fingerprints, not full operator lists: a spellbook page runs + ~8,300 operators, mostly curveTo from the shared SVG emblems, and 18 cases of that is + 7MB of redundant text. See ops/fingerprint for what a failure still tells you." + (:require [clojure.test :refer [deftest is testing]] + [orcpub.pdf-ops :as ops] + [orcpub.common :as common] + [orcpub.pdf :as pdf] + [orcpub.spellbook :as sb] + [orcpub.dnd.e5.spells :as spells]) + (:import (java.io ByteArrayOutputStream) + (org.apache.pdfbox Loader) + (org.apache.pdfbox.pdmodel PDDocument))) + +(def baseline-file "test/spellbook-geometry-baseline.edn") + +(def ^:private book-spells + "Two classes, six spells each, spanning cantrip to 9th so the level rings and the page + breaks both get exercised. Same set spellbook_test renders." + {"Cleric" ["Guidance" "Sacred Flame" "Bless" "Cure Wounds" "Spiritual Weapon" + "Spirit Guardians"] + "Wizard" ["Fire Bolt" "Magic Missile" "Shield" "Misty Step" "Fireball" "Wish"]}) + +(def ^:private base-opts + {:classes [{:class "Cleric" :class-kw :cleric :level 5 :ability "Wisdom" + :dc 15 :attack "+7" :icon "holy-symbol"} + {:class "Wizard" :class-kw :wizard :level 6 :ability "Intelligence" + :dc 16 :attack "+8" :icon "spell-book"}] + :slots {1 4 2 3 3 3} :pact-slots {} :character-name "Aldric"}) + +(def ^:private cases + "Every layout x order x tab placement: 18, the same matrix spellbook_test iterates. + The layouts decide page structure, the tabs decide the edge art, and the emblems - + the line art that shares bezier-k with pdf.clj - are drawn in all of them." + (vec (for [layout [:book :ledger :prep] + order [:level :alpha] + tabs [:head :inset :off]] + {:layout layout :order order :class-break :runon :tabs tabs}))) + +(defn- spell-of [n] (get spells/spell-map (common/name-to-kw n))) + +(defn- render-one [opts] + (let [known (->> (for [[cls ns] book-spells n ns] + {:key (common/name-to-kw n) :class cls :level (:level (spell-of n))}) + (group-by :level)) + out (ByteArrayOutputStream.)] + (with-open [doc (PDDocument.)] + (sb/add-spellbook! doc (pdf/load-fonts doc) (pdf/make-image-loader doc) + (merge base-opts opts) known spells/spell-map) + (.save doc out)) + (with-open [doc (Loader/loadPDF (.toByteArray out))] (ops/doc-fingerprints doc)))) + +(defn- all-pages + "[labels pages] across every case, each page labelled by its case and index." + [] + (reduce (fn [[labels pages] {:keys [layout order tabs] :as opts}] + (let [ps (render-one opts) + tag (str (name layout) "/" (name order) "/" (name tabs))] + [(into labels (map #(str tag " p" (inc %)) (range (count ps)))) + (into pages ps)])) + [[] []] cases)) + +(deftest spellbook-geometry-is-unchanged + (let [[labels pages] (all-pages)] + (ops/check-baseline! baseline-file pages labels "Spellbook"))) + +(deftest the-cases-cover-what-they-claim + (testing "every layout, order and tab placement" + (is (= 18 (count cases))) + (is (= #{:book :ledger :prep} (set (map :layout cases)))) + (is (= #{:level :alpha} (set (map :order cases)))) + (is (= #{:head :inset :off} (set (map :tabs cases))))) + (testing "the spells span cantrips to 9th, so every level ring is drawn" + (let [levels (set (map (comp :level spell-of) (mapcat val book-spells)))] + (is (contains? levels 0)) + (is (contains? levels 9)))) + (testing "spellbook.clj really does duplicate the constant this test protects" + (is (= @#'sb/bezier-k @#'pdf/bezier-k) + "bezier-k is declared in both files; unify them, do not let them drift"))) diff --git a/test/spellbook-geometry-baseline.edn b/test/spellbook-geometry-baseline.edn new file mode 100644 index 000000000..29da7b057 --- /dev/null +++ b/test/spellbook-geometry-baseline.edn @@ -0,0 +1,644 @@ +;; Written by orcpub's geometry characterization tests: Spellbook +;; A diff here is drawing moving. Read it before committing it. +[{:ops 12304, + :kinds + {"BT" 92, + "Do" 2, + "ET" 92, + "Q" 2, + "RG" 189, + "S" 115, + "Tc" 2, + "Td" 92, + "Tf" 92, + "Tj" 92, + "c" 8116, + "cm" 2, + "d" 4, + "f" 389, + "h" 472, + "l" 1632, + "m" 568, + "q" 2, + "re" 10, + "rg" 191, + "w" 148}, + :sha "ffbfd39b6560", + :geom "ade4a91576e4", + :colour "9d71a4b7b5c9", + :text "f5b47e5f3212"} + {:ops 6545, + :kinds + {"BT" 74, + "Do" 1, + "ET" 74, + "Q" 1, + "RG" 129, + "S" 49, + "Tc" 2, + "Td" 74, + "Tf" 74, + "Tj" 74, + "c" 4237, + "cm" 1, + "d" 4, + "f" 193, + "h" 239, + "l" 852, + "m" 273, + "q" 1, + "re" 10, + "rg" 130, + "w" 53}, + :sha "5703a06312a1", + :geom "3ff6e899a620", + :colour "6e4bc9c479ce", + :text "bc862b88b6fb"} + {:ops 12339, + :kinds + {"BT" 97, + "Do" 2, + "ET" 97, + "Q" 2, + "RG" 194, + "S" 115, + "Tc" 2, + "Td" 97, + "Tf" 97, + "Tj" 97, + "c" 8116, + "cm" 2, + "d" 4, + "f" 389, + "h" 472, + "l" 1632, + "m" 568, + "q" 2, + "re" 10, + "rg" 196, + "w" 148}, + :sha "79605288e13b", + :geom "3dfeab16758f", + :colour "c648c3dc74fa", + :text "c292ce1a89dc"} + {:ops 6594, + :kinds + {"BT" 81, + "Do" 1, + "ET" 81, + "Q" 1, + "RG" 136, + "S" 49, + "Tc" 2, + "Td" 81, + "Tf" 81, + "Tj" 81, + "c" 4237, + "cm" 1, + "d" 4, + "f" 193, + "h" 239, + "l" 852, + "m" 273, + "q" 1, + "re" 10, + "rg" 137, + "w" 53}, + :sha "76260efb33db", + :geom "58f27ff00619", + :colour "8d393dc092ac", + :text "a031509805a6"} + {:ops 11948, + :kinds + {"BT" 92, + "Do" 2, + "ET" 92, + "Q" 2, + "RG" 169, + "S" 109, + "Tc" 2, + "Td" 92, + "Tf" 92, + "Tj" 92, + "c" 7890, + "cm" 2, + "d" 4, + "f" 375, + "h" 457, + "l" 1612, + "m" 553, + "q" 2, + "rg" 171, + "w" 138}, + :sha "956de3ea64a0", + :geom "cd8d26276450", + :colour "ccf185202a88", + :text "f5b47e5f3212"} + {:ops 6189, + :kinds + {"BT" 74, + "Do" 1, + "ET" 74, + "Q" 1, + "RG" 109, + "S" 43, + "Tc" 2, + "Td" 74, + "Tf" 74, + "Tj" 74, + "c" 4011, + "cm" 1, + "d" 4, + "f" 179, + "h" 224, + "l" 832, + "m" 258, + "q" 1, + "rg" 110, + "w" 43}, + :sha "0c148524f589", + :geom "04e16af8fb35", + :colour "a678c2ec6322", + :text "bc862b88b6fb"} + {:ops 9239, + :kinds + {"BT" 95, + "Do" 2, + "ET" 95, + "Q" 2, + "RG" 178, + "S" 95, + "Tc" 2, + "Td" 95, + "Tf" 95, + "Tj" 95, + "c" 6031, + "cm" 2, + "d" 4, + "f" 297, + "h" 382, + "l" 999, + "m" 450, + "q" 2, + "re" 10, + "rg" 180, + "w" 128}, + :sha "b674e3cd644d", + :geom "30a108936caf", + :colour "55a93747a290", + :text "a825fdd852dd"} + {:ops 4817, + :kinds + {"BT" 71, + "Do" 1, + "ET" 71, + "Q" 1, + "RG" 119, + "S" 41, + "Tc" 2, + "Td" 71, + "Tf" 71, + "Tj" 71, + "c" 3027, + "cm" 1, + "d" 4, + "f" 140, + "h" 188, + "l" 554, + "m" 209, + "q" 1, + "re" 10, + "rg" 120, + "w" 44}, + :sha "434ad6bc2fe7", + :geom "741ec354ac12", + :colour "e038e22f0631", + :text "1699c85a6326"} + {:ops 9274, + :kinds + {"BT" 100, + "Do" 2, + "ET" 100, + "Q" 2, + "RG" 183, + "S" 95, + "Tc" 2, + "Td" 100, + "Tf" 100, + "Tj" 100, + "c" 6031, + "cm" 2, + "d" 4, + "f" 297, + "h" 382, + "l" 999, + "m" 450, + "q" 2, + "re" 10, + "rg" 185, + "w" 128}, + :sha "ab45e10a5213", + :geom "5472dff12734", + :colour "779cfeac6415", + :text "49a8b79bc3e3"} + {:ops 4866, + :kinds + {"BT" 78, + "Do" 1, + "ET" 78, + "Q" 1, + "RG" 126, + "S" 41, + "Tc" 2, + "Td" 78, + "Tf" 78, + "Tj" 78, + "c" 3027, + "cm" 1, + "d" 4, + "f" 140, + "h" 188, + "l" 554, + "m" 209, + "q" 1, + "re" 10, + "rg" 127, + "w" 44}, + :sha "a10c9299345e", + :geom "901280e734fe", + :colour "24956ce7d93e", + :text "5f5e812ca177"} + {:ops 8883, + :kinds + {"BT" 95, + "Do" 2, + "ET" 95, + "Q" 2, + "RG" 158, + "S" 89, + "Tc" 2, + "Td" 95, + "Tf" 95, + "Tj" 95, + "c" 5805, + "cm" 2, + "d" 4, + "f" 283, + "h" 367, + "l" 979, + "m" 435, + "q" 2, + "rg" 160, + "w" 118}, + :sha "689901ab1a8d", + :geom "9c6b55699427", + :colour "e24b633981cf", + :text "a825fdd852dd"} + {:ops 4461, + :kinds + {"BT" 71, + "Do" 1, + "ET" 71, + "Q" 1, + "RG" 99, + "S" 34, + "Tc" 2, + "Td" 71, + "Tf" 71, + "Tj" 71, + "c" 2801, + "cm" 1, + "d" 4, + "f" 127, + "h" 173, + "l" 534, + "m" 194, + "q" 1, + "rg" 100, + "w" 34}, + :sha "ad68447231a4", + :geom "854c3fc969e5", + :colour "e693e080fa18", + :text "1699c85a6326"} + {:ops 11715, + :kinds + {"BT" 106, + "Do" 2, + "ET" 106, + "Q" 2, + "RG" 230, + "S" 144, + "Tc" 30, + "Td" 106, + "Tf" 106, + "Tj" 106, + "c" 7160, + "cm" 2, + "d" 4, + "f" 343, + "h" 397, + "l" 1931, + "m" 518, + "q" 2, + "re" 10, + "rg" 232, + "w" 178}, + :sha "2a359db42899", + :geom "14434da7babe", + :colour "cffb1a2dbef4", + :text "777eb987bbf1"} + {:ops 11715, + :kinds + {"BT" 106, + "Do" 2, + "ET" 106, + "Q" 2, + "RG" 230, + "S" 144, + "Tc" 30, + "Td" 106, + "Tf" 106, + "Tj" 106, + "c" 7160, + "cm" 2, + "d" 4, + "f" 343, + "h" 397, + "l" 1931, + "m" 518, + "q" 2, + "re" 10, + "rg" 232, + "w" 178}, + :sha "80d198cc35ae", + :geom "0790e4dd5baf", + :colour "7ac0c9600e0c", + :text "4ac066b72c61"} + {:ops 11359, + :kinds + {"BT" 106, + "Do" 2, + "ET" 106, + "Q" 2, + "RG" 210, + "S" 139, + "Tc" 30, + "Td" 106, + "Tf" 106, + "Tj" 106, + "c" 6934, + "cm" 2, + "d" 4, + "f" 328, + "h" 382, + "l" 1911, + "m" 503, + "q" 2, + "rg" 212, + "w" 168}, + :sha "630befc4a015", + :geom "3e53577a99df", + :colour "fa726c9a6ad7", + :text "777eb987bbf1"} + {:ops 6459, + :kinds + {"BT" 106, + "Do" 2, + "ET" 106, + "Q" 2, + "RG" 185, + "S" 103, + "Tc" 30, + "Td" 106, + "Tf" 106, + "Tj" 106, + "c" 3552, + "cm" 2, + "d" 4, + "f" 187, + "h" 231, + "l" 984, + "m" 311, + "q" 2, + "re" 10, + "rg" 187, + "w" 137}, + :sha "15ad8d2b9753", + :geom "94ceca89c8c4", + :colour "7325a842bce2", + :text "8aecc226a01d"} + {:ops 6459, + :kinds + {"BT" 106, + "Do" 2, + "ET" 106, + "Q" 2, + "RG" 185, + "S" 103, + "Tc" 30, + "Td" 106, + "Tf" 106, + "Tj" 106, + "c" 3552, + "cm" 2, + "d" 4, + "f" 187, + "h" 231, + "l" 984, + "m" 311, + "q" 2, + "re" 10, + "rg" 187, + "w" 137}, + :sha "31e724260978", + :geom "a9cd1358da3c", + :colour "0f8bda4a416e", + :text "e74f911b05c0"} + {:ops 6103, + :kinds + {"BT" 106, + "Do" 2, + "ET" 106, + "Q" 2, + "RG" 165, + "S" 98, + "Tc" 30, + "Td" 106, + "Tf" 106, + "Tj" 106, + "c" 3326, + "cm" 2, + "d" 4, + "f" 172, + "h" 216, + "l" 964, + "m" 296, + "q" 2, + "rg" 167, + "w" 127}, + :sha "57a7e78f73ef", + :geom "debc4310992b", + :colour "d66d5513e4b8", + :text "8aecc226a01d"} + {:ops 10663, + :kinds + {"BT" 47, + "Do" 2, + "ET" 47, + "Q" 2, + "RG" 174, + "S" 162, + "Tc" 2, + "Td" 47, + "Tf" 47, + "Tj" 47, + "c" 6668, + "cm" 2, + "d" 4, + "f" 323, + "h" 377, + "l" 1822, + "m" 496, + "q" 2, + "re" 20, + "rg" 176, + "w" 196}, + :sha "5c9e47fd1acf", + :geom "d281e8088330", + :colour "b4cbc87a8f5c", + :text "34acb6fc90c8"} + {:ops 10663, + :kinds + {"BT" 47, + "Do" 2, + "ET" 47, + "Q" 2, + "RG" 174, + "S" 162, + "Tc" 2, + "Td" 47, + "Tf" 47, + "Tj" 47, + "c" 6668, + "cm" 2, + "d" 4, + "f" 323, + "h" 377, + "l" 1822, + "m" 496, + "q" 2, + "re" 20, + "rg" 176, + "w" 196}, + :sha "4c2cec644f5e", + :geom "6b597e56ee27", + :colour "19d5f979ed62", + :text "a434f364fbc4"} + {:ops 10307, + :kinds + {"BT" 47, + "Do" 2, + "ET" 47, + "Q" 2, + "RG" 154, + "S" 157, + "Tc" 2, + "Td" 47, + "Tf" 47, + "Tj" 47, + "c" 6442, + "cm" 2, + "d" 4, + "f" 308, + "h" 362, + "l" 1802, + "m" 481, + "q" 2, + "re" 10, + "rg" 156, + "w" 186}, + :sha "d17d42f4e351", + :geom "3bfd698e01a9", + :colour "ca076ea412ae", + :text "34acb6fc90c8"} + {:ops 5870, + :kinds + {"BT" 47, + "Do" 2, + "ET" 47, + "Q" 2, + "RG" 153, + "S" 133, + "Tc" 2, + "Td" 47, + "Tf" 47, + "Tj" 47, + "c" 3373, + "cm" 2, + "d" 4, + "f" 179, + "h" 236, + "l" 891, + "m" 314, + "q" 2, + "re" 20, + "rg" 155, + "w" 167}, + :sha "9a7eaa2f2eb7", + :geom "69bad5bb08da", + :colour "e7ac000d13fe", + :text "3ec81c2cf1c5"} + {:ops 5870, + :kinds + {"BT" 47, + "Do" 2, + "ET" 47, + "Q" 2, + "RG" 153, + "S" 133, + "Tc" 2, + "Td" 47, + "Tf" 47, + "Tj" 47, + "c" 3373, + "cm" 2, + "d" 4, + "f" 179, + "h" 236, + "l" 891, + "m" 314, + "q" 2, + "re" 20, + "rg" 155, + "w" 167}, + :sha "12070e3002e9", + :geom "d238a0ea0e4f", + :colour "687cf3c39ee3", + :text "1d05cab6bd7a"} + {:ops 5514, + :kinds + {"BT" 47, + "Do" 2, + "ET" 47, + "Q" 2, + "RG" 133, + "S" 128, + "Tc" 2, + "Td" 47, + "Tf" 47, + "Tj" 47, + "c" 3147, + "cm" 2, + "d" 4, + "f" 164, + "h" 221, + "l" 871, + "m" 299, + "q" 2, + "re" 10, + "rg" 135, + "w" 157}, + :sha "337b61b7f6fe", + :geom "f855aaca702c", + :colour "d3e7856ddb1e", + :text "3ec81c2cf1c5"}] From 5eb1a38eef716a7b08cdc67c2346d1edabca7a2c Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Tue, 13 Oct 2026 19:04:33 +0000 Subject: [PATCH 06/40] Unify bezier-k: one constant, not two copies 0.5522847 was typed out in pdf.clj and again in spellbook.clj, both turning four cubic curves into a circle because a PDF content stream has no arc operator. The first of the duplicated shape layer to go. pdf.clj's copy wins: it carries the docstring explaining the number. It stops being ^:private, with a line saying why, and spellbook's circle-path! uses pdf/bezier-k. The guard flips from drift to regression: it asserted the two values stayed equal, and now asserts spellbook does not intern its own bezier-k again. Behaviour-neutral, and that is checked rather than asserted: both geometry baselines are UNCHANGED - 33 card pages of full operators and 24 spellbook fingerprints - so nothing moved. git status after the change lists only the three source files. Merge note: this makes bezier-k public, so the namespace note branch docs/pdf-api adds to pdf.clj goes stale by one - 45 public defs becomes 46, and 31 names called from outside becomes 32. Whichever of the two branches lands second fixes that line. Still duplicated, and why each waits: - polyline! (pdf 2745 / sb 186) and circle! (pdf 2770 / sb 179): same algorithm, differing only in the coordinate transform - card-pt against a hardcoded 11 inches versus py against page-h 792.0. A parameter, not an incompatibility. The KB calls this the canvas extraction and an API change, not a refactor, because draw-text, draw-grid and get-page are public with 21 call sites in routes.clj, and it records the decision that the point space wins. Not started in the same breath as building its safety net. - The pure abbreviators to spell_print.cljc, which the KB says to do regardless: blocked behind docs/pdf-api, which documents exactly the functions that would move. Doing both unmerged would guarantee a conflict in both. lein test 710/5401 green, lein lint 0/0. --- src/clj/orcpub/pdf.clj | 6 ++++-- src/clj/orcpub/spellbook.clj | 4 +--- test/clj/orcpub/spellbook_geometry_test.clj | 7 ++++--- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/clj/orcpub/pdf.clj b/src/clj/orcpub/pdf.clj index d6093bd69..531b7b16c 100644 --- a/src/clj/orcpub/pdf.clj +++ b/src/clj/orcpub/pdf.clj @@ -2736,9 +2736,11 @@ {:remaining-lines remaining-desc-lines :spell-name spell-name})))))) -(def ^:private bezier-k +(def bezier-k "Control-point offset that turns four cubic curves into a circle, to within a - fifth of a percent. There is no arc operator in a PDF content stream." + fifth of a percent. There is no arc operator in a PDF content stream. + + Public because spellbook.clj draws circles too and had declared its own copy." 0.5522847) (defn- card-pt diff --git a/src/clj/orcpub/spellbook.clj b/src/clj/orcpub/spellbook.clj index 95644774f..f184b6850 100644 --- a/src/clj/orcpub/spellbook.clj +++ b/src/clj/orcpub/spellbook.clj @@ -163,12 +163,10 @@ ;; ─── Line art ──────────────────────────────────────────────────────────────── -(def ^:private bezier-k 0.5522847) - (defn- circle-path! "Adds a circle of radius `r` about (cx, cy) to the current path, as four cubic curves." [cs cx cy r] - (let [k (* r bezier-k) x (float cx) y (py cy)] + (let [k (* r pdf/bezier-k) x (float cx) y (py cy)] (.moveTo cs (float (+ cx r)) y) (.curveTo cs (float (+ cx r)) (py (- cy k)) (float (+ cx k)) (py (- cy r)) x (py (- cy r))) (.curveTo cs (float (- cx k)) (py (- cy r)) (float (- cx r)) (py (- cy k)) (float (- cx r)) y) diff --git a/test/clj/orcpub/spellbook_geometry_test.clj b/test/clj/orcpub/spellbook_geometry_test.clj index 46d67d78c..e356e8c6e 100644 --- a/test/clj/orcpub/spellbook_geometry_test.clj +++ b/test/clj/orcpub/spellbook_geometry_test.clj @@ -83,6 +83,7 @@ (let [levels (set (map (comp :level spell-of) (mapcat val book-spells)))] (is (contains? levels 0)) (is (contains? levels 9)))) - (testing "spellbook.clj really does duplicate the constant this test protects" - (is (= @#'sb/bezier-k @#'pdf/bezier-k) - "bezier-k is declared in both files; unify them, do not let them drift"))) + (testing "bezier-k is not declared twice again" + (is (nil? (get (ns-interns 'orcpub.spellbook) 'bezier-k)) + "spellbook re-declared bezier-k; it shares pdf/bezier-k") + (is (= 0.5522847 pdf/bezier-k)))) From 4045c50e2c20322cb1661c3df32d05825f7f9562 Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Tue, 13 Oct 2026 23:20:04 +0000 Subject: [PATCH 07/40] Lift the spell abbreviations out of pdf.clj into spell_print.cljc spellbook.clj required a 3,200-line clj file to shorten "Concentration, up to 1 hour" to "Conc, 1 hr". Six functions, pure string work, no PDFBox, no :import: spell-school-level, abbreviate-times, max-len, abbreviate-duration, abbreviate-casting-time, abbreviate-range. They move to src/cljc/orcpub/dnd/e5/spell_print.cljc, beside spell_annotations.cljc, which was lifted out of the print path on the same grounds and is the precedent. Being cljc, the builder can use them now too. pdf.clj loses 59 lines and six publics: 82 public fns -> 76, and the names called from outside drop 32 -> 29, with spellbook's share going 10 -> 7. The namespace note is re-measured to match. Callers repointed: pdf.clj's print-spells, spellbook.clj (3), spellbook_test.clj (1). max-len in orcbrew_validation.cljs is a different function of the same name in ClojureScript, which cannot call clj - a collision, not a caller, so untouched. Correcting my own note from the previous commits: it claimed "45 public defs". The grep behind that number, ^(def , also matches (def ^:private, so it counted private ones. Measured properly: 16 public defs and 29 private, against 76 public fns and 59 private. Fixed rather than carried forward. Behaviour-neutral, and checked: both geometry baselines are UNCHANGED - 33 card pages of full operators, 24 spellbook fingerprints. git status after the move lists only the three edited files and the new one. lein test 710/5401 green, lein lint 0/0. --- src/clj/orcpub/pdf.clj | 83 ++++--------------------- src/clj/orcpub/spellbook.clj | 7 ++- src/cljc/orcpub/dnd/e5/spell_print.cljc | 66 ++++++++++++++++++++ test/clj/orcpub/spellbook_test.clj | 7 ++- 4 files changed, 86 insertions(+), 77 deletions(-) create mode 100644 src/cljc/orcpub/dnd/e5/spell_print.cljc diff --git a/src/clj/orcpub/pdf.clj b/src/clj/orcpub/pdf.clj index bedc74d4c..f79852089 100644 --- a/src/clj/orcpub/pdf.clj +++ b/src/clj/orcpub/pdf.clj @@ -11,6 +11,7 @@ [orcpub.common :as common] [orcpub.dnd.e5.magic-items :as mi] [orcpub.dnd.e5.display :as dis5e] + [orcpub.dnd.e5.spell-print :as sp] [orcpub.dnd.e5.options :as options] [clj-http.client :as client]) (:import (java.io ByteArrayOutputStream) @@ -42,10 +43,12 @@ (java.awt.image BufferedImage) (java.net URL))) -;; THE ACTUAL API: 82 public fns, 45 public defs; 31 called from outside this file -- 21 by -;; routes.clj (export entry points, spell-page and image helpers), 9 by spellbook.clj -;; (split-lines, string-width, draw-svg-icon!, normalize-text, svg-path-ops, site-stamp, the -;; three abbreviators), and report-image-egress! by system.clj. +;; THE ACTUAL API: 76 public fns and 16 public defs, against 59 private fns and 29 private +;; defs. Only 29 names are called from outside this file. + +;; 21 by routes.clj (export entry points, spell-page and image helpers), 7 by spellbook.clj +;; (split-lines, string-width, draw-svg-icon!, normalize-text, svg-path-ops, site-stamp and +;; bezier-k), and report-image-egress! by system.clj. The abbreviators left for spell-print. ;; safe-image-url? and safe-image-bytes are named in routes.clj comments only; their real ;; external consumers are the tests. @@ -2115,17 +2118,6 @@ y))) (.setStrokingColor cs (float 0) (float 0) (float 0)))) -(defn spell-school-level - "The subtitle line of a spell card: \"Wizard Cantrip Evocation\" at level 0, - \"Wizard Level 3 Evocation\" otherwise. A missing school reads \"Unknown\" and a - missing level \"?\" rather than throwing, since homebrew spells reach here - unvalidated." - [{:keys [level school]} class-nm] - (let [school-str (if school (s/capitalize school) "Unknown")] - (if (and level (zero? level)) - (str class-nm " Cantrip " school-str) - (str class-nm " Level " (or level "?") " " school-str)))) - (defn draw-spell-field "One icon-and-value field on a spell card (casting time, range, duration, components): the `title` icon at [`x` `y`] with `value` printed over it. @@ -2146,57 +2138,6 @@ (draw-text cs value HELVETICA_BOLD_OBLIQUE 8 x (- y 0.07)) (.setNonStrokingColor cs (float 0) (float 0) (float 0)))))) -(defn abbreviate-times - "\"minute\" -> \"min\", \"hour\" -> \"hr\", anywhere in the string. Case-sensitive, so - a capitalized \"Hour\" passes through untouched. Throws on nil." - [time] - (-> time - (s/replace #"minute" "min") - (s/replace #"hour" "hr"))) - -(defn max-len - "`s` truncated to at most `len` characters, with no ellipsis. nil returns nil." - [s len] - (if (<= (count s) len) - s - (subs s 0 len))) - -(defn abbreviate-duration - "Spell duration shortened to fit a card field: \"Concentration, up to 1 hour\" - -> \"Conc, 1 hr\", \"Instantaneous\" -> \"Inst\", \"round\" -> \"Rnd\", then hard - truncated at 16 characters. nil passes through. - - Shared with spellbook.clj." - [duration] - (when duration - (-> duration - (s/replace #"Concentration,? up to " "Conc, ") - abbreviate-times - (s/replace #"Instantaneous.*" "Inst") - (s/replace #"round" "Rnd") - (max-len 16)))) - -(defn abbreviate-casting-time - "\"1 bonus action\" -> \"1 B.A.\", \"1 reaction\" -> \"1 React.\". Reaction goes before - action, which it contains." - [casting-time] - (-> casting-time - abbreviate-times - (s/replace #"bonus action" "B.A.") - (s/replace #"reaction" "React.") - (s/replace #"\baction" "Act."))) - -(defn abbreviate-range - "Spell range shortened to fit a card field: anything starting \"Self\" collapses - to \"Self\" (dropping the shape, so \"Self (15-foot cone)\" loses the cone), and - \"feet\" -> \"ft\". Throws on nil. - - Shared with spellbook.clj." - [range] - (-> range - (s/replace #"Self.*" "Self") - (s/replace #"feet" "ft"))) - (def site-stamp "The site line printed on card backs." "dungeonmastersvault.com") @@ -2805,8 +2746,8 @@ 0.2) (draw-text-to-box cs (if (not= class-nm "Homebrew") - (str (spell-school-level spell class-nm) (when print-spell-card-dc-mod? (str " " dc-str " Spell Mod " (common/bonus-str attack-bonus)))) - (spell-school-level spell class-nm)) + (str (sp/spell-school-level spell class-nm) (when print-spell-card-dc-mod? (str " " dc-str " Spell Mod " (common/bonus-str attack-bonus)))) + (sp/spell-school-level spell class-nm)) (:italic fonts) 8 (+ x 0.12) @@ -2817,7 +2758,7 @@ (draw-spell-field cs img "magic-swirl" - (str (abbreviate-casting-time + (str (sp/abbreviate-casting-time (first (s/split casting-time @@ -2829,7 +2770,7 @@ (draw-spell-field cs img "arrow-dunk" - (abbreviate-range range) + (sp/abbreviate-range range) (+ x 0.62) (- 11.0 y 0.45) bw? bw-faded?)) @@ -2854,7 +2795,7 @@ (draw-spell-field cs img "sands-of-time" - (abbreviate-duration duration) + (sp/abbreviate-duration duration) (+ x 1.62) (- 11.0 y 0.45) bw? bw-faded?)) diff --git a/src/clj/orcpub/spellbook.clj b/src/clj/orcpub/spellbook.clj index f184b6850..9ee1b037e 100644 --- a/src/clj/orcpub/spellbook.clj +++ b/src/clj/orcpub/spellbook.clj @@ -6,6 +6,7 @@ (:require [clojure.string :as s] [orcpub.common :as common] [orcpub.pdf :as pdf] + [orcpub.dnd.e5.spell-print :as sp] [orcpub.dnd.e5.emblems :as emblems] [orcpub.dnd.e5.spell-annotations :as ann]) (:import (java.awt.geom PathIterator) @@ -402,15 +403,15 @@ "The cards' abbreviation, first clause only: \"1 reaction, which you take when...\" is a sentence, not a casting time." [t] - (pdf/abbreviate-casting-time (first (s/split (str t) #",")))) + (sp/abbreviate-casting-time (first (s/split (str t) #",")))) (defn- short-duration "The cards' abbreviation of a duration: \"Conc, 1 min\", \"Inst\"." - [d] (pdf/abbreviate-duration (str d))) + [d] (sp/abbreviate-duration (str d))) (defn- short-range "The cards' abbreviation of a range: \"60 ft\", \"Self\"." - [r] (pdf/abbreviate-range (str r))) + [r] (sp/abbreviate-range (str r))) (defn marks "The small italic notes after a spell's name: concentration, ritual, a costly material." diff --git a/src/cljc/orcpub/dnd/e5/spell_print.cljc b/src/cljc/orcpub/dnd/e5/spell_print.cljc new file mode 100644 index 000000000..db703e581 --- /dev/null +++ b/src/cljc/orcpub/dnd/e5/spell_print.cljc @@ -0,0 +1,66 @@ +(ns orcpub.dnd.e5.spell-print + "Shortening a spell's fields to fit a printed card or a spellbook row, and the subtitle + line naming its class, level and school. Deliberately lossy -- a card field is about + sixteen characters -- so each docstring says what it drops. + Pure string work, no PDFBox. These were in pdf.clj, so spellbook.clj depended on a + 3,200-line clj file for six functions that never touch a PDF, beside spell-annotations, + which was lifted out of the print path on the same grounds." + (:require [clojure.string :as s])) + +(defn spell-school-level + "The subtitle line of a spell card: \"Wizard Cantrip Evocation\" at level 0, + \"Wizard Level 3 Evocation\" otherwise. A missing school reads \"Unknown\" and a + missing level \"?\" rather than throwing, since homebrew spells reach here + unvalidated." + [{:keys [level school]} class-nm] + (let [school-str (if school (s/capitalize school) "Unknown")] + (if (and level (zero? level)) + (str class-nm " Cantrip " school-str) + (str class-nm " Level " (or level "?") " " school-str)))) + +(defn abbreviate-times + "\"minute\" -> \"min\", \"hour\" -> \"hr\", anywhere in the string. Case-sensitive, so + a capitalized \"Hour\" passes through untouched. Throws on nil." + [time] + (-> time + (s/replace #"minute" "min") + (s/replace #"hour" "hr"))) + +(defn max-len + "`s` truncated to at most `len` characters, with no ellipsis. nil returns nil." + [s len] + (if (<= (count s) len) + s + (subs s 0 len))) + +(defn abbreviate-duration + "Spell duration shortened to fit a card field: \"Concentration, up to 1 hour\" + -> \"Conc, 1 hr\", \"Instantaneous\" -> \"Inst\", \"round\" -> \"Rnd\", then hard + truncated at 16 characters. nil passes through." + [duration] + (when duration + (-> duration + (s/replace #"Concentration,? up to " "Conc, ") + abbreviate-times + (s/replace #"Instantaneous.*" "Inst") + (s/replace #"round" "Rnd") + (max-len 16)))) + +(defn abbreviate-casting-time + "\"1 bonus action\" -> \"1 B.A.\", \"1 reaction\" -> \"1 React.\". Reaction goes before + action, which it contains." + [casting-time] + (-> casting-time + abbreviate-times + (s/replace #"bonus action" "B.A.") + (s/replace #"reaction" "React.") + (s/replace #"\baction" "Act."))) + +(defn abbreviate-range + "Spell range shortened to fit a card field: anything starting \"Self\" collapses + to \"Self\" (dropping the shape, so \"Self (15-foot cone)\" loses the cone), and + \"feet\" -> \"ft\". Throws on nil." + [range] + (-> range + (s/replace #"Self.*" "Self") + (s/replace #"feet" "ft"))) diff --git a/test/clj/orcpub/spellbook_test.clj b/test/clj/orcpub/spellbook_test.clj index 5581956bd..eef4ecbe4 100644 --- a/test/clj/orcpub/spellbook_test.clj +++ b/test/clj/orcpub/spellbook_test.clj @@ -6,6 +6,7 @@ [clojure.java.io :as io] [orcpub.common :as common] [orcpub.pdf :as pdf] + [orcpub.dnd.e5.spell-print :as sp] [orcpub.routes :as routes] [orcpub.spellbook :as sb] [orcpub.dnd.e5.emblems :as emblems] @@ -109,9 +110,9 @@ (deftest abbreviations-and-summaries (testing "reaction is not read as re- plus action, on the cards or here" - (is (= "1 React." (pdf/abbreviate-casting-time "1 reaction"))) - (is (= "1 B.A." (pdf/abbreviate-casting-time "1 bonus action"))) - (is (= "1 Act." (pdf/abbreviate-casting-time "1 action")))) + (is (= "1 React." (sp/abbreviate-casting-time "1 reaction"))) + (is (= "1 B.A." (sp/abbreviate-casting-time "1 bonus action"))) + (is (= "1 Act." (sp/abbreviate-casting-time "1 action")))) (testing "a summary never opens on a list bullet" (is (not (str/starts-with? (sb/summary (spell "Wish")) "\u00B7"))))) From 36419f0aa328cbeeeb255a3f9c830e60e2b2d9fe Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Tue, 13 Oct 2026 23:28:42 +0000 Subject: [PATCH 08/40] Share the shape path emission between pdf.clj and spellbook.clj polyline! and circle! existed in both files with the same arithmetic. New orcpub.pdf.canvas (41 lines) holds path!, circle-path! and bezier-k; pdf.clj's polyline!, diamond! and circle! delegate, as do spellbook.clj's polyline! and circle-path!. 20 polyline call sites and 12 circle call sites, one implementation each. No coordinate system changed. Each caller passes a `pt` mapper - pdf.clj card-relative inches through card-pt, spellbook.clj points through py - and both measure y DOWNWARD, which is why one formula serves them. Only the PATH is shared, not the whole primitive. The two differ in how they terminate: closeAndStroke emits `s`, closePath then stroke emits `h S`. Sharing the terminator too would have rewritten one side's content stream for no visual change. Leaving it to the callers made this byte-identical instead. Correcting my first reading: I had the two circles emitting in different orders. They do not - both run right, top, left, bottom, counter-clockwise in PDF space. Only the terminator and where the mapping happens differed. The KB deferred this as "an API change, not a refactor". That was wrong for this slice: every function involved is private on both sides, so nothing public moved. What it correctly warned about - re-expressing the public draw-text / draw-grid / get-page in points, with 21 routes.clj call sites - is untouched and still open. pdf.clj is now 76 public fns and 28 names called from outside, down from 82 and 32 at the start of this branch. bezier-k is interned in exactly one namespace, and the test asserts neither pdf nor spellbook re-declares it. Verified: - Both geometry baselines UNCHANGED. git status lists only the edited files. - Breaking canvas/path! by half a point fails 15 card and ornament pages AND all 24 spellbook pages, so both callers really route through it rather than keeping a live copy. - lein test 710/5402 green, lein lint 0/0. --- src/clj/orcpub/pdf.clj | 49 ++++++++------------- src/clj/orcpub/pdf/canvas.clj | 41 +++++++++++++++++ src/clj/orcpub/spellbook.clj | 27 ++++++------ test/clj/orcpub/spellbook_geometry_test.clj | 10 +++-- 4 files changed, 79 insertions(+), 48 deletions(-) create mode 100644 src/clj/orcpub/pdf/canvas.clj diff --git a/src/clj/orcpub/pdf.clj b/src/clj/orcpub/pdf.clj index f79852089..bf7d6a528 100644 --- a/src/clj/orcpub/pdf.clj +++ b/src/clj/orcpub/pdf.clj @@ -12,6 +12,7 @@ [orcpub.dnd.e5.magic-items :as mi] [orcpub.dnd.e5.display :as dis5e] [orcpub.dnd.e5.spell-print :as sp] + [orcpub.pdf.canvas :as canvas] [orcpub.dnd.e5.options :as options] [clj-http.client :as client]) (:import (java.io ByteArrayOutputStream) @@ -44,11 +45,12 @@ (java.net URL))) ;; THE ACTUAL API: 76 public fns and 16 public defs, against 59 private fns and 29 private -;; defs. Only 29 names are called from outside this file. +;; defs. Only 28 names are called from outside this file. -;; 21 by routes.clj (export entry points, spell-page and image helpers), 7 by spellbook.clj -;; (split-lines, string-width, draw-svg-icon!, normalize-text, svg-path-ops, site-stamp and -;; bezier-k), and report-image-egress! by system.clj. The abbreviators left for spell-print. +;; 21 by routes.clj (export entry points, spell-page and image helpers), 6 by spellbook.clj +;; (split-lines, string-width, draw-svg-icon!, normalize-text, svg-path-ops, site-stamp), +;; and report-image-egress! by system.clj. The abbreviators went to spell-print, the shape +;; paths and bezier-k to pdf.canvas. ;; safe-image-url? and safe-image-bytes are named in routes.clj comments only; their real ;; external consumers are the tests. @@ -2805,13 +2807,6 @@ {:remaining-lines remaining-desc-lines :spell-name spell-name})))))) -(def bezier-k - "Control-point offset that turns four cubic curves into a circle, to within a - fifth of a percent. There is no arc operator in a PDF content stream. - - Public because spellbook.clj draws circles too and had declared its own copy." - 0.5522847) - (defn- card-pt "A point `dx` right and `dy` DOWN from the top-left of the card at (x, y), in PDF page units. Card coordinates run downward from the page top, page units run @@ -2819,37 +2814,31 @@ [x y dx dy] [(float (* 72 (+ x dx))) (float (* 72 (- 11 (+ y dy))))]) +(defn- card-mapper + "`canvas/path!`'s `pt` for the card at (x, y): card-relative inches to page units." + [x y] + (fn [dx dy] (card-pt x y dx dy))) + (defn- polyline! "Strokes, and optionally closes, a path through card-relative points." [cs x y points close?] - (let [[[px py] & rest-pts] (map (fn [[dx dy]] (card-pt x y dx dy)) points)] - (.moveTo cs px py) - (doseq [[qx qy] rest-pts] (.lineTo cs qx qy)) - (if close? (.closeAndStroke cs) (.stroke cs)))) + (canvas/path! cs (card-mapper x y) points) + (if close? (.closeAndStroke cs) (.stroke cs))) (defn- diamond! "A small diamond of radius `r` centred at (dx, dy) on the card. Filled ones mark the item's rarity rank, outlined ones the ranks above it." [cs x y dx dy r filled?] - (let [pts [[dx (- dy r)] [(+ dx r) dy] [dx (+ dy r)] [(- dx r) dy]] - [[px py] & rest-pts] (map (fn [[a b]] (card-pt x y a b)) pts)] - (.moveTo cs px py) - (doseq [[qx qy] rest-pts] (.lineTo cs qx qy)) - (.closePath cs) - (if filled? (.fill cs) (.stroke cs)))) + (canvas/path! cs (card-mapper x y) + [[dx (- dy r)] [(+ dx r) dy] [dx (+ dy r)] [(- dx r) dy]]) + (.closePath cs) + (if filled? (.fill cs) (.stroke cs))) (defn- circle! "An outlined circle of radius `r` centred at (dx, dy) on the card." [cs x y dx dy r] - (let [k (* r bezier-k) - [cx cy] (card-pt x y dx dy) - rr (* 72 r) kk (* 72 k)] - (.moveTo cs (float (+ cx rr)) cy) - (.curveTo cs (float (+ cx rr)) (float (+ cy kk)) (float (+ cx kk)) (float (+ cy rr)) cx (float (+ cy rr))) - (.curveTo cs (float (- cx kk)) (float (+ cy rr)) (float (- cx rr)) (float (+ cy kk)) (float (- cx rr)) cy) - (.curveTo cs (float (- cx rr)) (float (- cy kk)) (float (- cx kk)) (float (- cy rr)) cx (float (- cy rr))) - (.curveTo cs (float (+ cx kk)) (float (- cy rr)) (float (+ cx rr)) (float (- cy kk)) (float (+ cx rr)) cy) - (.closeAndStroke cs))) + (canvas/circle-path! cs (card-mapper x y) dx dy r) + (.closeAndStroke cs)) (def ^:private rarity-rank "How the rarities order, for the diamonds along the top edge. :varies has no diff --git a/src/clj/orcpub/pdf/canvas.clj b/src/clj/orcpub/pdf/canvas.clj new file mode 100644 index 000000000..08638ac6e --- /dev/null +++ b/src/clj/orcpub/pdf/canvas.clj @@ -0,0 +1,41 @@ +(ns orcpub.pdf.canvas + "Path emission shared by the two files that draw shapes into a PDF: pdf.clj's card frame + and spellbook.clj's line art, which each had their own copy of the same arithmetic. + Everything takes a `pt` mapper, [x y] in the caller's drawing space to PDF page units, + so neither has to change coordinate system -- pdf.clj works in inches from the card's + top-left, spellbook.clj in points from the page top. Both measure y DOWNWARD, which is + why one formula serves them." + (:import (org.apache.pdfbox.pdmodel PDPageContentStream))) + +(def bezier-k + "Control-point offset that turns four cubic curves into a circle, to within a fifth of + a percent. There is no arc operator in a PDF content stream." + 0.5522847) + +(defn path! + "`moveTo` the first of `pts`, `lineTo` the rest, each mapped through `pt`. + + Emits no close and no stroke on purpose: the callers' terminators differ, and the + difference is visible in the content stream -- closeAndStroke is `s`, while closePath + then stroke is `h S`. Sharing only the path keeps both byte-identical." + [^PDPageContentStream cs pt pts] + (let [[[px py] & more] (map (fn [[a b]] (pt a b)) pts)] + (.moveTo cs (float px) (float py)) + (doseq [[qx qy] more] (.lineTo cs (float qx) (float qy))))) + +(defn circle-path! + "A circle of radius `r` about (`cx`, `cy`) in the caller's drawing space, as `moveTo` + plus four cubic curves, counter-clockwise from the rightmost point. Closes nothing and + strokes nothing, as `path!`." + [^PDPageContentStream cs pt cx cy r] + (let [k (* r bezier-k) + [x0 y0] (pt (+ cx r) cy) + curve (fn [[ax ay] [bx by] [ex ey]] + (.curveTo cs (float ax) (float ay) (float bx) (float by) + (float ex) (float ey)))] + (.moveTo cs (float x0) (float y0)) + ;; y runs DOWN in both callers' spaces, so (- cy r) is the top of the circle. + (curve (pt (+ cx r) (- cy k)) (pt (+ cx k) (- cy r)) (pt cx (- cy r))) + (curve (pt (- cx k) (- cy r)) (pt (- cx r) (- cy k)) (pt (- cx r) cy)) + (curve (pt (- cx r) (+ cy k)) (pt (- cx k) (+ cy r)) (pt cx (+ cy r))) + (curve (pt (+ cx k) (+ cy r)) (pt (+ cx r) (+ cy k)) (pt (+ cx r) cy)))) diff --git a/src/clj/orcpub/spellbook.clj b/src/clj/orcpub/spellbook.clj index 9ee1b037e..1b57c1163 100644 --- a/src/clj/orcpub/spellbook.clj +++ b/src/clj/orcpub/spellbook.clj @@ -7,6 +7,7 @@ [orcpub.common :as common] [orcpub.pdf :as pdf] [orcpub.dnd.e5.spell-print :as sp] + [orcpub.pdf.canvas :as canvas] [orcpub.dnd.e5.emblems :as emblems] [orcpub.dnd.e5.spell-annotations :as ann]) (:import (java.awt.geom PathIterator) @@ -164,16 +165,16 @@ ;; ─── Line art ──────────────────────────────────────────────────────────────── +(defn- pt + "`canvas`'s point mapper for this file: x in points, y in points DOWN from the page top." + [x ty] + [(float x) (py ty)]) + (defn- circle-path! "Adds a circle of radius `r` about (cx, cy) to the current path, as four cubic curves." [cs cx cy r] - (let [k (* r pdf/bezier-k) x (float cx) y (py cy)] - (.moveTo cs (float (+ cx r)) y) - (.curveTo cs (float (+ cx r)) (py (- cy k)) (float (+ cx k)) (py (- cy r)) x (py (- cy r))) - (.curveTo cs (float (- cx k)) (py (- cy r)) (float (- cx r)) (py (- cy k)) (float (- cx r)) y) - (.curveTo cs (float (- cx r)) (py (+ cy k)) (float (- cx k)) (py (+ cy r)) x (py (+ cy r))) - (.curveTo cs (float (+ cx k)) (py (+ cy r)) (float (+ cx r)) (py (+ cy k)) (float (+ cx r)) y) - (.closePath cs))) + (canvas/circle-path! cs pt cx cy r) + (.closePath cs)) (defn- circle! "Strokes a circle of radius `r` about (cx, cy) at line width `lw`, or fills it when `fill?`." @@ -186,13 +187,11 @@ "Strokes the path through `pts`, each [x ty], at line width `lw`; closes it with `:close?`, fills it with `:fill?`." [cs pts lw & [{:keys [close? fill?]}]] - (let [[[x y] & more] pts] - (.setLineWidth cs (float lw)) - (.moveTo cs (float x) (py y)) - (doseq [[a b] more] (.lineTo cs (float a) (py b))) - (cond fill? (do (.closePath cs) (.fill cs)) - close? (.closeAndStroke cs) - :else (.stroke cs)))) + (.setLineWidth cs (float lw)) + (canvas/path! cs pt pts) + (cond fill? (do (.closePath cs) (.fill cs)) + close? (.closeAndStroke cs) + :else (.stroke cs))) (defn- line! "Strokes a straight line from (x1, y1) to (x2, y2) at line width `lw`." diff --git a/test/clj/orcpub/spellbook_geometry_test.clj b/test/clj/orcpub/spellbook_geometry_test.clj index e356e8c6e..77e505574 100644 --- a/test/clj/orcpub/spellbook_geometry_test.clj +++ b/test/clj/orcpub/spellbook_geometry_test.clj @@ -15,6 +15,7 @@ [orcpub.pdf-ops :as ops] [orcpub.common :as common] [orcpub.pdf :as pdf] + [orcpub.pdf.canvas :as canvas] [orcpub.spellbook :as sb] [orcpub.dnd.e5.spells :as spells]) (:import (java.io ByteArrayOutputStream) @@ -83,7 +84,8 @@ (let [levels (set (map (comp :level spell-of) (mapcat val book-spells)))] (is (contains? levels 0)) (is (contains? levels 9)))) - (testing "bezier-k is not declared twice again" - (is (nil? (get (ns-interns 'orcpub.spellbook) 'bezier-k)) - "spellbook re-declared bezier-k; it shares pdf/bezier-k") - (is (= 0.5522847 pdf/bezier-k)))) + (testing "bezier-k lives in one place" + (is (= 0.5522847 canvas/bezier-k)) + (doseq [ns- ['orcpub.spellbook 'orcpub.pdf]] + (is (nil? (get (ns-interns ns-) 'bezier-k)) + (str ns- " re-declared bezier-k; it shares orcpub.pdf.canvas/bezier-k"))))) From 153fd0f8c84f79b64c195ba71235ef3c3891376f Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Thu, 15 Oct 2026 23:27:46 +0000 Subject: [PATCH 09/40] Stop one unrenderable homebrew name costing the export whole card sheets A homebrew item or spell name is user text. PDFBox throws IllegalArgumentException on a glyph the embedded font has not got, and add-magic-item-cards! wraps every sheet in ONE try, so the throw escapes the whole page loop. Measured, with ten items and a katakana name on the first sheet: the export produced 1 page where it should produce 4, and only 2 of the 9 cards on that sheet had been drawn before it was abandoned. Three of four pages and eight of ten cards, gone, with nothing but a line on stdout. normalize-text is NOT the fix, though it looks like it. Its docstring says what it is for: coercing text into WinAnsiEncoding for PDType1Font, which is the AcroForm fields on Helvetica. The cards draw with embedded Vollkorn, a Type0 font, and Vollkorn has glyphs for everything the SRD uses. Checked all three weights: bullet, middle dot, curly quotes, curly apostrophe, en dash, em dash, ellipsis and S-caron all draw. Only katakana and the control characters are missing. Running normalize-text over the text the baselines already render would have changed 8 bullets to "?", 4 curly quotes to straight ones and an en dash to a hyphen - a regression wearing a fix's clothes, and the reason spellbook.clj's `clean` maps the bullet to a middle dot before calling normalize-text at all. So the fix asks the font instead of assuming an encoding. font-safe drops characters below 0x20 and replaces anything the font cannot draw with "?", by codepoint, so an emoji surrogate pair collapses to one "?" rather than two. It returns the string itself when the whole string draws, which is every string in the SRD, so it costs one getStringWidth on the happy path and only does work on homebrew. Applied at the three places text reaches PDFBox: string-width's getStringWidth (which now falls back rather than propagating) and the showText calls in draw-lines-to-box and draw-text. Characterization first, and the first attempt was too weak - it PASSED on the broken code, because .addPage runs before the drawing throws and the surviving item happened to be drawn first. Rewritten to span two sheets and assert on an item that only renders if sheet one finished. Four tests now: - ten items make two sheets and their backs (the premise the others rest on) - an unrenderable name does not cost the later sheets - control characters do not cost the later sheets - the punctuation the SRD uses is LEFT ALONE - em dash, curly quotes, bullet - so the fix cannot quietly decay into normalize-text Behaviour-neutral on everything that renders today: both geometry baselines are unchanged, 33 card pages of full operators and 24 spellbook fingerprints. lein test 714/5413 green, lein lint 0/0. --- src/clj/orcpub/pdf.clj | 39 +++++++++++++-- test/clj/orcpub/card_export_test.clj | 72 ++++++++++++++++++++++++++++ test/comment-baseline.edn | 4 +- 3 files changed, 110 insertions(+), 5 deletions(-) diff --git a/src/clj/orcpub/pdf.clj b/src/clj/orcpub/pdf.clj index bf7d6a528..485912a3e 100644 --- a/src/clj/orcpub/pdf.clj +++ b/src/clj/orcpub/pdf.clj @@ -314,12 +314,42 @@ (nil? (.getPage annotation)))] (.setPage annotation page))) +(defn font-safe + "`text` with whatever `font` has no glyph for made drawable: characters below 0x20 + dropped, anything else replaced by `?`. Returns `text` itself when the whole string + draws, which is every string in the SRD -- the embedded Vollkorn covers Latin-1 and + the punctuation the books use, so this only fires on homebrew." + [^PDFont font text] + (if-not (string? text) + text + (try + (.getStringWidth font text) + text + (catch Exception _ + (letfn [(drawable? [s] (try (.getStringWidth font s) true + (catch Exception _ false)))] + (->> (seq (.toArray (.codePoints text))) + (keep #(let [c (String. (Character/toChars (int %)))] + (when (>= (int %) 0x20) (if (drawable? c) c "?")))) + (apply str))))))) + +;; FIELD NOTE (glyph-throw): PDFBox throws IllegalArgumentException on a glyph the +;; embedded font has not got, and add-magic-item-cards! wraps every sheet in one try. +;; Unprotected, one homebrew name in a script Vollkorn lacks cost the export the sheet +;; it was on AND every sheet after it. Measured: 1 page of an expected 4. + (defn string-width "Width of `text` in INCHES at `font-size`, not points: the raw glyph width is - divided by 72. Callers working in points must convert." + divided by 72. Callers working in points must convert. Falls back to `font-safe` + for text the font cannot draw, rather than throwing." [text ^PDFont font font-size] (if text - (/ (* (/ (.getStringWidth font (if (keyword? text) (common/safe-name text) text)) 1000.0) font-size) 72) + (let [t (if (keyword? text) (common/safe-name text) text)] + (/ (* (/ (try (.getStringWidth font t) + (catch Exception _ (.getStringWidth font (font-safe font t)))) + 1000.0) + font-size) + 72)) 0)) ;; ─── Orphaned widgets ──────────────────────────────────────────────────────── @@ -2022,7 +2052,7 @@ (doseq [i (range (count fitting-lines))] (let [line (get fitting-lines i)] (.newLineAtOffset cs 0 (- leading)) - (.showText cs line))) + (.showText cs (font-safe font line)))) (.endText cs) (vec (drop max-lines lines)))) @@ -2053,7 +2083,8 @@ (when color (apply set-text-color cs color)) (.newLineAtOffset cs units-x units-y) - (.showText cs (if (keyword? text) (common/safe-name text) text)) + (.showText cs (font-safe font (if (keyword? text) + (common/safe-name text) text))) (when color (set-text-color cs 0 0 0)) (.endText cs)))) diff --git a/test/clj/orcpub/card_export_test.clj b/test/clj/orcpub/card_export_test.clj index b3d8ccba6..0c179215b 100644 --- a/test/clj/orcpub/card_export_test.clj +++ b/test/clj/orcpub/card_export_test.clj @@ -182,3 +182,75 @@ (when (seq body) (is (> (- bottom (apply max (map :y body))) 6.0) (str "box " box ": body text clears the stamp by at least 6pt"))))))))) + + +;; ── Text the embedded font cannot draw ─────────────────────────────────────── +;; Homebrew names are user text. The embedded Vollkorn covers Latin-1 and the +;; punctuation the SRD uses, but not every script, and PDFBox throws on a glyph it +;; has not got. add-magic-item-cards! wraps EVERY page in one try, so one bad name on +;; the first sheet costs the export every sheet after it. + +(def ^:private unrenderable-name + "Katakana: verified absent from Vollkorn in all three weights." + "Blade of \u30c4\u30c4\u30c4") + +(def ^:private control-char-name + "A BEL and a SOH, the shape of a copy-paste accident." + "Wand\u0007of\u0001Fire") + +(defn- renamed + "The nth real magic item with `nm` for its name, so only the name differs." + [n nm] + (assoc (nth magic-items/magic-items n) :name nm)) + +(defn- render-items + "Item card pages for `items`, as [page-count extracted-text]." + [items] + (let [out (ByteArrayOutputStream.)] + (with-open [doc (PDDocument.)] + (routes/add-magic-item-cards! doc (pdf/load-fonts doc) (pdf/make-image-loader doc) + (vec items) card-back-logo false false) + (.save doc out)) + (with-open [doc (Loader/loadPDF (.toByteArray out))] + [(.getNumberOfPages doc) + (.getText (org.apache.pdfbox.text.PDFTextStripper.) doc)]))) + +(def ^:private last-page-item + "Named on the SECOND sheet, so it is only drawn if the first sheet finished." + "Wings of Flying") + +(defn- two-sheets-with + "Ten items: `bad` first, nine real ones after, the last named so it lands on sheet two." + [bad] + (concat [(renamed 0 bad)] + (map #(renamed % (str "Filler Item " %)) (range 1 9)) + [(renamed 9 last-page-item)])) + +(deftest ten-items-make-two-sheets-and-their-backs + (testing "the baseline shape this test depends on, with no bad names" + (let [[pages text] (render-items (two-sheets-with "Ordinary Name"))] + (is (= 4 pages) "two fronts and two backs") + (is (str/includes? text last-page-item))))) + +(deftest a-name-the-font-cannot-draw-does-not-cost-the-later-sheets + (let [[pages text] (render-items (two-sheets-with unrenderable-name))] + (is (= 4 pages) + "a glyph the font has not got cost the export whole sheets") + (is (str/includes? text last-page-item) + (str last-page-item " is on sheet two and never got drawn")))) + +(deftest control-characters-in-a-name-do-not-cost-the-later-sheets + (let [[pages text] (render-items (two-sheets-with control-char-name))] + (is (= 4 pages) "control characters in a name cost the export whole sheets") + (is (str/includes? text last-page-item) + (str last-page-item " is on sheet two and never got drawn")))) + +(deftest the-punctuation-the-srd-uses-is-left-alone + (testing "Vollkorn draws these, so nothing should replace them" + (let [nm "Rod \u2014 of \u201cLordly\u201d Might\u2019s \u2022 Grip" + [pages text] (render-items [(renamed 0 nm)])] + (is (pos? pages)) + (doseq [[cp label] [[0x2014 "em dash"] [0x201C "curly open"] [0x2019 "curly apos"] + [0x2022 "bullet"]]] + (is (str/includes? text (str (char cp))) + (str label " was replaced; Vollkorn has a glyph for it")))))) diff --git a/test/comment-baseline.edn b/test/comment-baseline.edn index 72547116f..0c8cacdd7 100644 --- a/test/comment-baseline.edn +++ b/test/comment-baseline.edn @@ -10,7 +10,9 @@ "A field table: one line per field of a link entry, each defining it. Nothing in it is history."}, :baseline [], :field-notes - {["src/cljc/orcpub/dnd/e5/options.cljc" "background-name-key"] + {["src/clj/orcpub/pdf.clj" "glyph-throw"] + "fca62d7237f8", + ["src/cljc/orcpub/dnd/e5/options.cljc" "background-name-key"] "e8e6f28a2ab7", ["src/cljs/orcpub/dnd/e5/content_reconciliation.cljs" "heal-sites"] "0c6c2fd217f8", From 6d16d96a90a1042b79ed02258c762b1b6819ac81 Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Fri, 16 Oct 2026 02:16:19 +0000 Subject: [PATCH 10/40] One coordinate flip, with the page height named instead of inline The last genuine duplicate between pdf.clj and spellbook.clj. Both flipped y from the page top to PDF's bottom-up space with the same arithmetic in different units, and only one of them named the page height: pdf.clj (in-to-sz (- 11 inches)) the height inline, 35 lines flip spellbook.clj (float (- page-h ty)) page-h 792.0, named canvas/pt-from-top is now the one flip. `pt-per-unit` is 72 when the caller works in inches, 1 when it works in points, so neither file changes coordinate system. It also takes an optional page key, which is the point: the height stops being a literal. canvas also gains page-sizes (letter 612x792, a4 595x842, a5 420x595, ISO 216), default-page, page-size, in->pt and fit. pdf.clj's in-to-sz, in-to-coord-x, in-to-coord-y, inches-to-units and scale all delegate, keeping their names so their 48 call sites are untouched; spellbook's page-w and page-h derive from canvas/page-size rather than carrying their own literals. Verified identical before running the suite: the flip matches the old arithmetic bitwise at 0, 0.08, 0.5, 2.5, 3.5, 10.92 and 11 inches, and at 0, 12.4, 400 and 792 points. 0.08in gives 786.240 both ways; 792pt gives 0.000 both ways. What this does NOT do: produce an A4 export. The page key is accepted but nothing threads one through the drawing calls yet, and the character-sheet templates in resources/ are all 612x792 with fixed artwork, so an A4 sheet needs A4 artwork rather than code. This makes A4 and A5 a threading job instead of a hunt for 35 literals. Behaviour-neutral: both geometry baselines unchanged, 33 card pages of full operators and 24 spellbook fingerprints. lein test 714/5413 green, lein lint 0/0. --- src/clj/orcpub/pdf.clj | 43 ++++++++++++++------------------- src/clj/orcpub/pdf/canvas.clj | 45 +++++++++++++++++++++++++++++++++++ src/clj/orcpub/spellbook.clj | 9 +++---- 3 files changed, 68 insertions(+), 29 deletions(-) diff --git a/src/clj/orcpub/pdf.clj b/src/clj/orcpub/pdf.clj index 485912a3e..177e16420 100644 --- a/src/clj/orcpub/pdf.clj +++ b/src/clj/orcpub/pdf.clj @@ -1142,39 +1142,32 @@ (PDPageContentStream. doc page PDPageContentStream$AppendMode/APPEND true)) (defn in-to-sz - "Inches to PDF points (72 per inch). Use for SIZES -- widths, heights, font - offsets -- where no page origin is involved. `inches-to-units` is the same - function under a second name; prefer this one." + "Inches to PDF points. `canvas/in->pt` under this file's older name, kept because 48 + call sites use it. `inches-to-units` is the same function under a THIRD name." [inches] - (float (* 72 inches))) + (canvas/in->pt inches)) (defn in-to-coord-x "Inches from the page LEFT edge to a PDF x coordinate. Just `in-to-sz`: x needs no - flip because both spaces run left to right. It exists so that call sites can name - both axes the same way." + flip because both spaces run left to right. It exists so call sites can name both + axes the same way." [inches] - (in-to-sz inches)) + (canvas/in->pt inches)) (defn in-to-coord-y "Inches from the page TOP to a PDF y coordinate, which measures from the bottom. - Hardcodes an 11-inch page: wrong for any other size, and the only reason the - point-based spellbook code can reuse `draw-svg-icon!` is that 792pt is exactly - 11in. Images go through here and so take `y` from the top; the text functions - multiply by 72 directly and take it from the bottom." + The page height is no longer inline here -- `canvas/pt-from-top` holds it, and + spellbook.clj flips through the same function. + + Images go through here and so take `y` from the top; the text functions multiply by + 72 directly and take it from the bottom. That split is unchanged." [inches] - (in-to-sz (- 11 inches))) + (canvas/pt-from-top 72 inches)) (defn scale - "Largest [height width] with the image's aspect ratio that fits the rectangle - [r-h r-w]. One dimension always matches the rectangle exactly; the other is - smaller. Units are whatever the caller used, so long as both pairs agree." - [[r-h r-w] [i-h i-w]] - (let [height-to-width (/ i-h i-w) - rect-height-to-width (/ r-h r-w) - height-ratio (/ r-h i-h)] - (if (> height-to-width rect-height-to-width) - [r-h (* r-h (/ i-w i-h))] - [(* r-w (/ i-h i-w)) r-w]))) + "`canvas/fit` under this file's older name. Kept for its call sites." + [rect img] + (canvas/fit rect img)) (defn draw-imagex "Draws an already-embedded PDImageXObject into the box at [`x` `y`] sized @@ -2109,10 +2102,10 @@ (.stroke cs)) (defn inches-to-units - "DUPLICATE of `in-to-sz`, declared 900 lines later and identical. Kept because - `draw-line-in` and the grid code call it; new code should use `in-to-sz`." + "The third name for `canvas/in->pt`, after `in-to-sz` 900 lines above. Kept because + `draw-line-in` and the grid code call it; new code should use `canvas/in->pt`." [inches] - (float (* inches 72))) + (canvas/in->pt inches)) (defn draw-line-in "`draw-line` with every coordinate given in inches instead of points. Both diff --git a/src/clj/orcpub/pdf/canvas.clj b/src/clj/orcpub/pdf/canvas.clj index 08638ac6e..2dfda6f6f 100644 --- a/src/clj/orcpub/pdf/canvas.clj +++ b/src/clj/orcpub/pdf/canvas.clj @@ -7,6 +7,51 @@ why one formula serves them." (:import (org.apache.pdfbox.pdmodel PDPageContentStream))) +(def page-sizes + "Page dimensions in POINTS, [width height]. ISO 216 for the A series; US Letter is + 612x792, which is exactly 8.5x11 inches." + {:letter [612.0 792.0] + :a4 [595.0 842.0] + :a5 [420.0 595.0]}) + +(def default-page + "What everything draws on today. The character-sheet templates in resources/ are all + 612x792 and their artwork is fixed, so an A4 character sheet needs A4 artwork rather + than a change here; a bare (PDPage.) is PDFBox's Letter. Changing this alone does not + produce an A4 export -- it is the one place the page height stops being a literal." + :letter) + +(defn page-size + "[width height] in points for `page`, a key of `page-sizes`. Unknown keys get Letter." + [page] + (get page-sizes page (page-sizes :letter))) + +(defn in->pt + "Inches to PDF points, 72 per inch. For SIZES -- widths, heights, offsets -- where no + page origin is involved, so no flip." + [inches] + (float (* 72 inches))) + +(defn pt-from-top + "`y` units DOWN from the page top to a PDF y coordinate, which runs up from the bottom. + `pt-per-unit` is 72 when the caller works in inches, 1 when it works in points. + + The one flip both drawing files use: pdf.clj had it as `(in-to-sz (- 11 inches))` with + the page height inline, spellbook.clj as `(- page-h ty)`. Same arithmetic, two units, + and only one of them named the height." + ([pt-per-unit y] (pt-from-top default-page pt-per-unit y)) + ([page pt-per-unit y] + (float (- (second (page-size page)) (* pt-per-unit y))))) + +(defn fit + "Largest [height width] with the image's aspect ratio that fits the rectangle + [r-h r-w]. One dimension matches the rectangle exactly; the other is smaller. Units + are the caller's, so long as both pairs agree." + [[r-h r-w] [i-h i-w]] + (if (> (/ i-h i-w) (/ r-h r-w)) + [r-h (* r-h (/ i-w i-h))] + [(* r-w (/ i-h i-w)) r-w])) + (def bezier-k "Control-point offset that turns four cubic curves into a circle, to within a fifth of a percent. There is no arc operator in a PDF content stream." diff --git a/src/clj/orcpub/spellbook.clj b/src/clj/orcpub/spellbook.clj index 1b57c1163..78aad3763 100644 --- a/src/clj/orcpub/spellbook.clj +++ b/src/clj/orcpub/spellbook.clj @@ -15,8 +15,8 @@ ;; ─── Page geometry, in points ──────────────────────────────────────────────── -(def page-w 612.0) -(def page-h 792.0) +(def page-w (first (canvas/page-size canvas/default-page))) +(def page-h (second (canvas/page-size canvas/default-page))) (def ^:private margin 36.0) (def ^:private body-top 56.0) (def ^:private body-bottom (- page-h 46.0)) @@ -30,8 +30,9 @@ (def ^:private hair 0.78) (defn- py - "Converts `ty`, points down from the page top, to PDF y, which runs up from the bottom." - [ty] (float (- page-h ty))) + "Converts `ty`, points down from the page top, to PDF y, which runs up from the bottom. + `canvas/pt-from-top` at a scale of 1, the same flip pdf.clj uses at 72." + [ty] (canvas/pt-from-top 1 ty)) (defn body-width "The width spells are laid into, in points: the page less its margins, and less the tab From 8e5668d1fe4af84b26723555b522c4f044461c4a Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Fri, 16 Oct 2026 02:30:02 +0000 Subject: [PATCH 11/40] Move the text layer into the shared drawing file, and name it draw, not canvas NAMING FIRST, because I got this wrong: the plan and the chart the owner was shown say orcpub.pdf.draw. The file I actually started in this branch was orcpub.pdf.canvas. I noticed the mismatch, decided on my own to keep canvas to avoid rename churn, and never said so. Renamed to orcpub.pdf.draw, file src/clj/orcpub/pdf/draw.clj, alias draw, so the code matches the plan. The BRANCH is still refactor/pdf-canvas and will stay wrong - renaming it would make a branch the owner then has to delete. Moved out of pdf.clj, 17 forms and 235 lines: the three Helvetica constants and load-fonts, normalize-text, font-safe, string-width, split-lines, set-text-color, draw-text, draw-halo-text, draw-line, draw-line-in, draw-grid, draw-lines-to-box, draw-text-to-box, content-stream. pdf.clj 3,272 -> 3,076; draw.clj 327. Deliberately NOT moved: min-font-size and line-height-factor, which only fit-text uses - they are AcroForm field-fitting constants, not drawing constants. And the five old coordinate names (in-to-sz, in-to-coord-x, in-to-coord-y, inches-to-units, scale) stay in pdf.clj as shims over draw/in->pt, pt-from-top and fit, so their 48 call sites are undisturbed. The dependency direction was measured before anything moved, not assumed: the 38 candidate forms were indexed and checked for references back into the AcroForm half. Three reached outside the set, and all three wanted SVG helpers I had forgotten to list, not sheet code. With those added the set closes - nothing reaches back. Three mistakes of mine, each caught by a tool rather than by me: - My rewrite script matched pdf/normalize-text inside the fully-qualified #'orcpub.pdf/normalize-text in pdf_test.clj:124, producing #'orcpub.canvas/ - a namespace that never existed. That is what failed the suite, and lint named it before I had read the test tally. Checked for other fully-qualified casualties: none. - I assumed :refer re-exports, so pdf/normalize-text would keep resolving for spellbook.clj. It does not - a refer is not an interned var. That forced all 40 external references across 12 files to move to draw/, which is the better outcome: the boundary is real instead of papered over. - The substitution for the old coordinate names only matched call position, so draw-line-in's (map inches-to-units coords) - a bare function value - slipped through and would not compile. Also: five names were referred into pdf.clj but no longer used there, and PDFont and PDType0Font became unused imports once the font code left. Lint flagged all seven. draw.clj's docstring still said "path emission", true three moves ago; it now describes page sizes, coordinates, fonts, text and shape paths. The glyph-throw FIELD NOTE moved with font-safe. Its content hash is unchanged at fca62d7237f8 and only its [file id] key moved, so the check correctly told "relocated" from "edited". Behaviour-neutral: both geometry baselines unchanged. 40 call sites rewritten, 17 forms relocated, a file renamed, and not one drawing operator moved. lein test 714/5413 green, lein lint 0 errors 0 warnings. --- dev/compare_item_cards.clj | 5 +- dev/measure_item_card.clj | 11 +- dev/scan_site_line.clj | 3 +- dev/stress_spell_sheets.clj | 5 +- dev/svg_icon_proof.clj | 5 +- src/clj/orcpub/pdf.clj | 280 ++--------------- src/clj/orcpub/pdf/canvas.clj | 86 ----- src/clj/orcpub/pdf/draw.clj | 327 ++++++++++++++++++++ src/clj/orcpub/routes.clj | 3 +- src/clj/orcpub/spellbook.clj | 22 +- test/clj/orcpub/card_export_test.clj | 7 +- test/clj/orcpub/card_geometry_test.clj | 5 +- test/clj/orcpub/pdf_test.clj | 23 +- test/clj/orcpub/spellbook_geometry_test.clj | 8 +- test/clj/orcpub/spellbook_test.clj | 7 +- test/comment-baseline.edn | 2 +- 16 files changed, 413 insertions(+), 386 deletions(-) delete mode 100644 src/clj/orcpub/pdf/canvas.clj create mode 100644 src/clj/orcpub/pdf/draw.clj diff --git a/dev/compare_item_cards.clj b/dev/compare_item_cards.clj index b3861a76e..efa658faf 100644 --- a/dev/compare_item_cards.clj +++ b/dev/compare_item_cards.clj @@ -7,7 +7,8 @@ ;; PDFBox's renderer cannot rasterise the embedded faces -- open the result in a ;; browser, not with PDFRenderer, or every card looks like an encoding bug. -(require '[orcpub.pdf :as pdf] '[orcpub.dnd.e5.magic-items :as mi]) +(require '[orcpub.pdf :as pdf] +(require '[orcpub.pdf.draw :as draw] '[orcpub.dnd.e5.magic-items :as mi]) (import '[org.apache.pdfbox.pdmodel PDDocument PDPage PDPageContentStream] '[java.io File]) (def rarities [:common :uncommon :rare :very-rare :legendary]) @@ -31,7 +32,7 @@ (pdf/print-items cs doc fonts img 2.5 3.5 items 0 false false opts)))) (let [doc (PDDocument.) - fonts (pdf/load-fonts doc) + fonts (draw/load-fonts doc) img (pdf/make-image-loader doc) ladder (mapv sample rarities)] ;; One page per family: the five ranks side by side. diff --git a/dev/measure_item_card.clj b/dev/measure_item_card.clj index 26b0e2c48..5926281a3 100644 --- a/dev/measure_item_card.clj +++ b/dev/measure_item_card.clj @@ -13,7 +13,8 @@ ;; PDFBox's renderer cannot rasterise the embedded faces -- open the PDF in a ;; browser, or every card will look like a text encoding bug. -(require '[orcpub.pdf :as pdf] '[clojure.string :as str]) +(require '[orcpub.pdf :as pdf] +(require '[orcpub.pdf.draw :as draw] '[clojure.string :as str]) (import '[org.apache.pdfbox.pdmodel PDDocument PDPage PDPageContentStream] '[java.io File]) (def MIN-GAP @@ -96,7 +97,7 @@ (let [doc (PDDocument.) page (PDPage.)] (.addPage doc page) - (let [fonts (pdf/load-fonts doc) img (pdf/make-image-loader doc)] + (let [fonts (draw/load-fonts doc) img (pdf/make-image-loader doc)] (with-open [cs (PDPageContentStream. doc page)] (pdf/print-items cs doc fonts img 2.5 3.5 [torture torture torture] 0 false false nil))) (.save doc (File. (or (System/getenv "OUT") "target/item-card-torture.pdf"))) @@ -110,16 +111,16 @@ ;; The name shrinks to fit two lines, so ask the renderer what size it settled on ;; rather than assuming the nominal one. (let [doc (PDDocument.) - fonts (pdf/load-fonts doc) + fonts (draw/load-fonts doc) width (- 2.5 0.56) - lines-at (fn [pt] (count (#'pdf/split-lines (:name torture) (:bold fonts) pt width))) + lines-at (fn [pt] (count (#'draw/split-lines (:name torture) (:bold fonts) pt width))) floor (get-in pdf/card-layout [:down :name-floor]) height (get-in pdf/card-layout [:down :name-height]) fits? (fn [pt] (let [n (lines-at pt)] (and (<= n 3) (<= (* n (/ (* pt 1.1) 72)) height)))) size (or (first (filter fits? (take-while #(>= % floor) (iterate #(- % 0.5) 13)))) floor) - body-lines (count (#'pdf/split-lines + body-lines (count (#'draw/split-lines (:orcpub.dnd.e5.magic-items/description torture) (:plain fonts) 8 (- 2.5 0.4))) capacity (int (dec (/ (* 72 (- 3.5 1.74 0.80)) (* 8 1.1))))] diff --git a/dev/scan_site_line.clj b/dev/scan_site_line.clj index c7dd45218..fcba4ac04 100644 --- a/dev/scan_site_line.clj +++ b/dev/scan_site_line.clj @@ -17,6 +17,7 @@ ;; Pages a style prints its own footer on are skipped, the same as at export. (require '[orcpub.pdf :as pdf] +(require '[orcpub.pdf.draw :as draw] '[clojure.java.io :as io]) (import '[org.apache.pdfbox Loader] '[org.apache.pdfbox.rendering PDFRenderer] @@ -24,7 +25,7 @@ '[java.io ByteArrayOutputStream]) (def dpi 150.0) -(def stamp-width (pdf/string-width pdf/site-stamp pdf/HELVETICA 6)) +(def stamp-width (draw/string-width pdf/site-stamp draw/HELVETICA 6)) (def stamp-height "6pt of cap height plus room for a descender, in inches." (/ 8.0 72)) diff --git a/dev/stress_spell_sheets.clj b/dev/stress_spell_sheets.clj index eeb02b5fd..6ce3baec7 100644 --- a/dev/stress_spell_sheets.clj +++ b/dev/stress_spell_sheets.clj @@ -15,6 +15,7 @@ ;; annotation column has to live in. (require '[orcpub.pdf :as pdf] +(require '[orcpub.pdf.draw :as draw] '[orcpub.dnd.e5.spells :as spells] '[clojure.java.io :as io] '[clojure.string :as st]) @@ -77,14 +78,14 @@ ;; Render the page section 1's rows actually live on. Style 4's master has ;; TWO spell pages, so the last page belongs to section 2 and is empty here. ;; Rendering it looked exactly like a total failure to fill anything. - (let [helv pdf/HELVETICA + (let [helv draw/HELVETICA per-level (for [[lvl rs] (sort (group-by :level rows))] (let [sizes (keep #(baked-size doc (:name %)) rs) widest (apply max (for [r rs :let [sz (or (baked-size doc (:name r)) 0) v (get values (keyword (:name r)))]] - (* 72 (pdf/string-width v helv sz))))] + (* 72 (draw/string-width v helv sz))))] {:level lvl :rows (count rs) :w (:w (first rs)) :size-min (when (seq sizes) (apply min sizes)) diff --git a/dev/svg_icon_proof.clj b/dev/svg_icon_proof.clj index 2420a579e..7d3dbc12d 100644 --- a/dev/svg_icon_proof.clj +++ b/dev/svg_icon_proof.clj @@ -11,7 +11,8 @@ ;; The rasters are no longer what the cards draw. The comparison is kept because ;; it is the check to repeat whenever an icon or the parser changes. -(require '[orcpub.pdf :as pdf] '[clojure.string :as str] '[clojure.java.io :as io]) +(require '[orcpub.pdf :as pdf] +(require '[orcpub.pdf.draw :as draw] '[clojure.string :as str] '[clojure.java.io :as io]) (import '[org.apache.pdfbox.pdmodel PDDocument PDPage PDPageContentStream] '[org.apache.pdfbox.pdmodel.font PDType1Font Standard14Fonts$FontName] '[org.apache.pdfbox.rendering PDFRenderer] @@ -22,7 +23,7 @@ (let [doc (PDDocument.) page (PDPage.) img (pdf/make-image-loader doc) helv (PDType1Font. Standard14Fonts$FontName/HELVETICA) - label (fn [cs t x y] (pdf/draw-text cs t helv 7 x y))] + label (fn [cs t x y] (draw/draw-text cs t helv 7 x y))] (.addPage doc page) (with-open [cs (PDPageContentStream. doc page)] (doseq [[row icon] (map-indexed vector icons)] diff --git a/src/clj/orcpub/pdf.clj b/src/clj/orcpub/pdf.clj index 177e16420..9b555ce9d 100644 --- a/src/clj/orcpub/pdf.clj +++ b/src/clj/orcpub/pdf.clj @@ -12,7 +12,19 @@ [orcpub.dnd.e5.magic-items :as mi] [orcpub.dnd.e5.display :as dis5e] [orcpub.dnd.e5.spell-print :as sp] - [orcpub.pdf.canvas :as canvas] + [orcpub.pdf.draw :as draw + :refer [HELVETICA + HELVETICA_BOLD + HELVETICA_BOLD_OBLIQUE + normalize-text + string-width + content-stream + split-lines + draw-lines-to-box + draw-text-to-box + draw-text + draw-halo-text + draw-grid]] [orcpub.dnd.e5.options :as options] [clj-http.client :as client]) (:import (java.io ByteArrayOutputStream) @@ -36,7 +48,7 @@ (org.apache.http.conn.socket PlainConnectionSocketFactory) (org.apache.http.conn.ssl SSLConnectionSocketFactory) (java.net UnknownHostException) - (org.apache.pdfbox.pdmodel.font PDType1Font PDFont PDType0Font Standard14Fonts$FontName) + (org.apache.pdfbox.pdmodel.font PDType1Font Standard14Fonts$FontName) (org.apache.pdfbox.text PDFTextStripper) (javax.imageio ImageIO IIOImage ImageWriteParam) (javax.imageio.stream MemoryCacheImageOutputStream) @@ -72,33 +84,6 @@ ;; equipment = unused (pdf_spec emits no such key); cha = modifier; cha-mod = score. ;; The Base 14 fonts, present in every PDF reader. Constructed once at load time. -(def HELVETICA - "Standard Helvetica font (regular weight, upright)" - (PDType1Font. Standard14Fonts$FontName/HELVETICA)) - -(def HELVETICA_BOLD - "Standard Helvetica font (bold weight, upright)" - (PDType1Font. Standard14Fonts$FontName/HELVETICA_BOLD)) - -(def HELVETICA_BOLD_OBLIQUE - "Standard Helvetica font (bold weight, italic/oblique)" - (PDType1Font. Standard14Fonts$FontName/HELVETICA_BOLD_OBLIQUE)) - -(defn load-fonts - "Loads the fonts for the document. Will contain - :plain, :italic, :bold and :bold-italic fonts." - [doc] - (reduce-kv - (fn [m type file] - (assoc m type - (with-open [stream (.openStream (io/resource file))] - (PDType0Font/load doc stream)))) - {} - {:plain "Vollkorn-Regular.ttf" - :italic "Vollkorn-Italic.ttf" - :bold "Vollkorn-Bold.ttf" - :bold-italic "Vollkorn-BoldItalic.ttf"})) - (def ^:private svg-token #"([MmLlHhVvCcSsQqTtAaZz])|(-?(?:\d*\.\d+|\d+)(?:[eE][-+]?\d+)?)") @@ -284,23 +269,6 @@ (with-open [in (io/input-stream (io/resource resource-path))] (LosslessFactory/createFromImage doc (ImageIO/read in))))))) -(defn normalize-text - "Coerces a value into the WinAnsiEncoding 0x20-0xFF subset PDFBox can render - (PDType1Font throws on anything else, blanking the field). nil -> nil; non-strings - stringified. \\t -> space; other 0x00-0x1F dropped except \\n and \\r; curly - quotes -> straight; U+2013 / U+2014 -> - / --; U+2026 -> ...; anything else - above U+00FF -> '?'." - [s] - (when (some? s) - (-> (str s) - (s/replace "\t" " ") - (s/replace #"[\u0000-\u0008\u000B\u000C\u000E-\u001F]" "") - (s/replace "\u2018" "'") (s/replace "\u2019" "'") - (s/replace "\u201C" "\"") (s/replace "\u201D" "\"") - (s/replace "\u2013" "-") (s/replace "\u2014" "--") - (s/replace "\u2026" "...") - (s/replace #"[^\u0000-\u00FF]" "?")))) - (defn- fix-widget-page-refs! "Populate the /P (page reference) entry on widget annotations that are missing it. Many fillable templates omit the /P back-pointer; PDFBox 3.x's flatten() then @@ -314,46 +282,6 @@ (nil? (.getPage annotation)))] (.setPage annotation page))) -(defn font-safe - "`text` with whatever `font` has no glyph for made drawable: characters below 0x20 - dropped, anything else replaced by `?`. Returns `text` itself when the whole string - draws, which is every string in the SRD -- the embedded Vollkorn covers Latin-1 and - the punctuation the books use, so this only fires on homebrew." - [^PDFont font text] - (if-not (string? text) - text - (try - (.getStringWidth font text) - text - (catch Exception _ - (letfn [(drawable? [s] (try (.getStringWidth font s) true - (catch Exception _ false)))] - (->> (seq (.toArray (.codePoints text))) - (keep #(let [c (String. (Character/toChars (int %)))] - (when (>= (int %) 0x20) (if (drawable? c) c "?")))) - (apply str))))))) - -;; FIELD NOTE (glyph-throw): PDFBox throws IllegalArgumentException on a glyph the -;; embedded font has not got, and add-magic-item-cards! wraps every sheet in one try. -;; Unprotected, one homebrew name in a script Vollkorn lacks cost the export the sheet -;; it was on AND every sheet after it. Measured: 1 page of an expected 4. - -(defn string-width - "Width of `text` in INCHES at `font-size`, not points: the raw glyph width is - divided by 72. Callers working in points must convert. Falls back to `font-safe` - for text the font cannot draw, rather than throwing." - [text ^PDFont font font-size] - (if text - (let [t (if (keyword? text) (common/safe-name text) text)] - (/ (* (/ (try (.getStringWidth font t) - (catch Exception _ (.getStringWidth font (font-safe font t)))) - 1000.0) - font-size) - 72)) - 0)) - -;; ─── Orphaned widgets ──────────────────────────────────────────────────────── - (defn- on-page-widgets "Identity hashes of the annotation COS objects reachable from any page." [doc] @@ -1135,39 +1063,33 @@ (.flatten form)) unplaceable))) -(defn content-stream - "Opens a compressed PDPageContentStream that APPENDs to `page`'s existing - content, so template artwork survives (OVERWRITE would replace it)." - [doc page] - (PDPageContentStream. doc page PDPageContentStream$AppendMode/APPEND true)) - (defn in-to-sz - "Inches to PDF points. `canvas/in->pt` under this file's older name, kept because 48 + "Inches to PDF points. `draw/in->pt` under this file's older name, kept because 48 call sites use it. `inches-to-units` is the same function under a THIRD name." [inches] - (canvas/in->pt inches)) + (draw/in->pt inches)) (defn in-to-coord-x "Inches from the page LEFT edge to a PDF x coordinate. Just `in-to-sz`: x needs no flip because both spaces run left to right. It exists so call sites can name both axes the same way." [inches] - (canvas/in->pt inches)) + (draw/in->pt inches)) (defn in-to-coord-y "Inches from the page TOP to a PDF y coordinate, which measures from the bottom. - The page height is no longer inline here -- `canvas/pt-from-top` holds it, and + The page height is no longer inline here -- `draw/pt-from-top` holds it, and spellbook.clj flips through the same function. Images go through here and so take `y` from the top; the text functions multiply by 72 directly and take it from the bottom. That split is unchanged." [inches] - (canvas/pt-from-top 72 inches)) + (draw/pt-from-top 72 inches)) (defn scale - "`canvas/fit` under this file's older name. Kept for its call sites." + "`draw/fit` under this file's older name. Kept for its call sites." [rect img] - (canvas/fit rect img)) + (draw/fit rect img)) (defn draw-imagex "Draws an already-embedded PDImageXObject into the box at [`x` `y`] sized @@ -1778,41 +1700,6 @@ [doc index] (.getPage doc index)) -(defn split-lines - "Greedy word wrap of `text` to `width` INCHES at `font-size` (see - `string-width`, which also works in inches). Splits on whitespace, so - existing newlines are not honoured. A word wider than the box gets its own - over-long line rather than being hyphenated or dropped. - - Shared with spellbook.clj." - [text ^PDFont font font-size width] - (let [words (s/split text #"\s")] - (loop [lines [] - current-line nil - [next-word & remaining-words :as current-words] words] - (if next-word - (let [line-with-word (str current-line (when current-line " ") next-word) - new-width (string-width line-with-word font font-size)] - (if (> new-width width) - (if current-line - (recur (conj lines current-line) - nil - current-words) - ;; A single word wider than the box takes its own line. Retrying it - ;; against an empty current-line would never consume it, so the word - ;; has to be taken here or the loop never terminates. - (recur (conj lines next-word) - nil - remaining-words)) - (recur lines - line-with-word - remaining-words))) - (if current-line - (conj lines current-line) - lines))))) - -;; ─── Fitting text to a box ──────────────────────────────────────────────────── - (def min-font-size "Point size below which text is spilled to a continuation page rather than scaled down further. Auto-sizing alone would shrink to 4pt and then clip. @@ -2027,122 +1914,11 @@ (recur (or tail "") (inc n))))))) trimmed)) -(defn draw-lines-to-box - "Draws pre-wrapped `lines` into a box `height` inches tall topped at [`x` `y`], - inches with `y` from the page BOTTOM (see `in-to-coord-y`). Leading is 1.1x the - font size. RETURNS the lines that did not fit, which is how card overflow reaches - the backs; empty means all fit. Nothing is truncated horizontally -- that is - `split-lines`' job." - [cs lines font font-size x y height] - (let [leading (* font-size 1.1) - max-lines (dec (/ (* 72 height) leading)) - units-x (* 72 x) - units-y (* 72 y) - fitting-lines (vec (take max-lines lines))] - (.beginText cs) - (.setFont cs font font-size) - (.newLineAtOffset cs units-x units-y) - (doseq [i (range (count fitting-lines))] - (let [line (get fitting-lines i)] - (.newLineAtOffset cs 0 (- leading)) - (.showText cs (font-safe font line)))) - (.endText cs) - (vec (drop max-lines lines)))) - -(defn draw-text-to-box - "`split-lines` then `draw-lines-to-box`: wraps `text` to `width` and fills the - box, returning the lines that did not fit. Inches throughout, `y` from the - page BOTTOM." - [cs text font font-size x y width height] - (let [lines (split-lines text font font-size width)] - (draw-lines-to-box cs lines font font-size x y height))) - -(defn set-text-color - "Set text (non-stroking) color. Values must be 0.0-1.0 floats (PDFBox 3.x)." - [cs r g b] - (.setNonStrokingColor cs (float r) (float g) (float b))) - -(defn draw-text - "One line of text with its baseline at [`x` `y`], in inches with `y` from the - page BOTTOM. No wrapping and no box -- it runs off the page if too long. - `color` is an [r g b] of 0.0-1.0 floats and, when given, is reset to black - afterwards. Keywords are rendered via `common/safe-name`; nil `text` is a no-op." - [cs text font font-size x y & [color]] - (when text - (let [units-x (* 72 x) - units-y (* 72 y)] - (.beginText cs) - (.setFont cs font font-size) - (when color - (apply set-text-color cs color)) - (.newLineAtOffset cs units-x units-y) - (.showText cs (font-safe font (if (keyword? text) - (common/safe-name text) text))) - (when color - (set-text-color cs 0 0 0)) - (.endText cs)))) - -(defn draw-halo-text - "Draw text with a white outline (8 offset copies) then black fill, so a black - label stays legible on top of a solid-black icon. Used only in printer-friendly - B&W mode, where icon and text are both pure black; offsets are in inches." - [cs text font font-size x y] - (let [d 0.009] - (doseq [dx [(- d) 0 d] - dy [(- d) 0 d] - :when (not (and (zero? dx) (zero? dy)))] - (draw-text cs text font font-size (+ x dx) (+ y dy) [1 1 1])) - (draw-text cs text font font-size x y [0 0 0]))) - -(defn draw-line - "Draw a line. PDFBox 3.x removed drawLine — use moveTo/lineTo/stroke." - [cs start-x start-y end-x end-y] - (.moveTo cs (float start-x) (float start-y)) - (.lineTo cs (float end-x) (float end-y)) - (.stroke cs)) - (defn inches-to-units - "The third name for `canvas/in->pt`, after `in-to-sz` 900 lines above. Kept because - `draw-line-in` and the grid code call it; new code should use `canvas/in->pt`." + "The third name for `draw/in->pt`, after `in-to-sz` 900 lines above. Kept because + `draw-line-in` and the grid code call it; new code should use `draw/in->pt`." [inches] - (canvas/in->pt inches)) - -(defn draw-line-in - "`draw-line` with every coordinate given in inches instead of points. Both - axes measure from the page BOTTOM-left; there is no flip here." - [cs & coords] - (apply draw-line cs (map inches-to-units coords))) - -(defn draw-grid - "Draw the spell card grid. Light gray lines for card boundaries." - [cs box-width box-height] - (let [num-boxes-x (int (/ 8.5 box-width)) - num-boxes-y (int (/ 11.0 box-height)) - total-width (* num-boxes-x box-width) - total-height (* num-boxes-y box-height) - remaining-width (- 8.5 total-width) - margin-x (/ remaining-width 2) - remaining-height (- 11.0 total-height) - margin-y (/ remaining-height 2) - ;; PDFBox 3.x: setStrokingColor(float,float,float) requires 0.0-1.0 range - ;; (PDFBox 2.x accepted 0-255 integers via a separate overload) - light-gray (float (/ 225.0 255.0))] - (.setStrokingColor cs light-gray light-gray light-gray) - (doseq [i (range (inc num-boxes-x))] - (let [x (+ margin-x (* box-width i))] - (draw-line-in cs - x - margin-y - x - (+ margin-y total-height)))) - (doseq [i (range (inc num-boxes-y))] - (let [y (+ margin-y (* box-height i))] - (draw-line-in cs - margin-x - y - (+ margin-x total-width) - y))) - (.setStrokingColor cs (float 0) (float 0) (float 0)))) + (draw/in->pt inches)) (defn draw-spell-field "One icon-and-value field on a spell card (casting time, range, duration, @@ -2839,21 +2615,21 @@ [(float (* 72 (+ x dx))) (float (* 72 (- 11 (+ y dy))))]) (defn- card-mapper - "`canvas/path!`'s `pt` for the card at (x, y): card-relative inches to page units." + "`draw/path!`'s `pt` for the card at (x, y): card-relative inches to page units." [x y] (fn [dx dy] (card-pt x y dx dy))) (defn- polyline! "Strokes, and optionally closes, a path through card-relative points." [cs x y points close?] - (canvas/path! cs (card-mapper x y) points) + (draw/path! cs (card-mapper x y) points) (if close? (.closeAndStroke cs) (.stroke cs))) (defn- diamond! "A small diamond of radius `r` centred at (dx, dy) on the card. Filled ones mark the item's rarity rank, outlined ones the ranks above it." [cs x y dx dy r filled?] - (canvas/path! cs (card-mapper x y) + (draw/path! cs (card-mapper x y) [[dx (- dy r)] [(+ dx r) dy] [dx (+ dy r)] [(- dx r) dy]]) (.closePath cs) (if filled? (.fill cs) (.stroke cs))) @@ -2861,7 +2637,7 @@ (defn- circle! "An outlined circle of radius `r` centred at (dx, dy) on the card." [cs x y dx dy r] - (canvas/circle-path! cs (card-mapper x y) dx dy r) + (draw/circle-path! cs (card-mapper x y) dx dy r) (.closeAndStroke cs)) (def ^:private rarity-rank diff --git a/src/clj/orcpub/pdf/canvas.clj b/src/clj/orcpub/pdf/canvas.clj deleted file mode 100644 index 2dfda6f6f..000000000 --- a/src/clj/orcpub/pdf/canvas.clj +++ /dev/null @@ -1,86 +0,0 @@ -(ns orcpub.pdf.canvas - "Path emission shared by the two files that draw shapes into a PDF: pdf.clj's card frame - and spellbook.clj's line art, which each had their own copy of the same arithmetic. - Everything takes a `pt` mapper, [x y] in the caller's drawing space to PDF page units, - so neither has to change coordinate system -- pdf.clj works in inches from the card's - top-left, spellbook.clj in points from the page top. Both measure y DOWNWARD, which is - why one formula serves them." - (:import (org.apache.pdfbox.pdmodel PDPageContentStream))) - -(def page-sizes - "Page dimensions in POINTS, [width height]. ISO 216 for the A series; US Letter is - 612x792, which is exactly 8.5x11 inches." - {:letter [612.0 792.0] - :a4 [595.0 842.0] - :a5 [420.0 595.0]}) - -(def default-page - "What everything draws on today. The character-sheet templates in resources/ are all - 612x792 and their artwork is fixed, so an A4 character sheet needs A4 artwork rather - than a change here; a bare (PDPage.) is PDFBox's Letter. Changing this alone does not - produce an A4 export -- it is the one place the page height stops being a literal." - :letter) - -(defn page-size - "[width height] in points for `page`, a key of `page-sizes`. Unknown keys get Letter." - [page] - (get page-sizes page (page-sizes :letter))) - -(defn in->pt - "Inches to PDF points, 72 per inch. For SIZES -- widths, heights, offsets -- where no - page origin is involved, so no flip." - [inches] - (float (* 72 inches))) - -(defn pt-from-top - "`y` units DOWN from the page top to a PDF y coordinate, which runs up from the bottom. - `pt-per-unit` is 72 when the caller works in inches, 1 when it works in points. - - The one flip both drawing files use: pdf.clj had it as `(in-to-sz (- 11 inches))` with - the page height inline, spellbook.clj as `(- page-h ty)`. Same arithmetic, two units, - and only one of them named the height." - ([pt-per-unit y] (pt-from-top default-page pt-per-unit y)) - ([page pt-per-unit y] - (float (- (second (page-size page)) (* pt-per-unit y))))) - -(defn fit - "Largest [height width] with the image's aspect ratio that fits the rectangle - [r-h r-w]. One dimension matches the rectangle exactly; the other is smaller. Units - are the caller's, so long as both pairs agree." - [[r-h r-w] [i-h i-w]] - (if (> (/ i-h i-w) (/ r-h r-w)) - [r-h (* r-h (/ i-w i-h))] - [(* r-w (/ i-h i-w)) r-w])) - -(def bezier-k - "Control-point offset that turns four cubic curves into a circle, to within a fifth of - a percent. There is no arc operator in a PDF content stream." - 0.5522847) - -(defn path! - "`moveTo` the first of `pts`, `lineTo` the rest, each mapped through `pt`. - - Emits no close and no stroke on purpose: the callers' terminators differ, and the - difference is visible in the content stream -- closeAndStroke is `s`, while closePath - then stroke is `h S`. Sharing only the path keeps both byte-identical." - [^PDPageContentStream cs pt pts] - (let [[[px py] & more] (map (fn [[a b]] (pt a b)) pts)] - (.moveTo cs (float px) (float py)) - (doseq [[qx qy] more] (.lineTo cs (float qx) (float qy))))) - -(defn circle-path! - "A circle of radius `r` about (`cx`, `cy`) in the caller's drawing space, as `moveTo` - plus four cubic curves, counter-clockwise from the rightmost point. Closes nothing and - strokes nothing, as `path!`." - [^PDPageContentStream cs pt cx cy r] - (let [k (* r bezier-k) - [x0 y0] (pt (+ cx r) cy) - curve (fn [[ax ay] [bx by] [ex ey]] - (.curveTo cs (float ax) (float ay) (float bx) (float by) - (float ex) (float ey)))] - (.moveTo cs (float x0) (float y0)) - ;; y runs DOWN in both callers' spaces, so (- cy r) is the top of the circle. - (curve (pt (+ cx r) (- cy k)) (pt (+ cx k) (- cy r)) (pt cx (- cy r))) - (curve (pt (- cx k) (- cy r)) (pt (- cx r) (- cy k)) (pt (- cx r) cy)) - (curve (pt (- cx r) (+ cy k)) (pt (- cx k) (+ cy r)) (pt cx (+ cy r))) - (curve (pt (+ cx k) (+ cy r)) (pt (+ cx r) (+ cy k)) (pt (+ cx r) cy)))) diff --git a/src/clj/orcpub/pdf/draw.clj b/src/clj/orcpub/pdf/draw.clj new file mode 100644 index 000000000..eecbd3245 --- /dev/null +++ b/src/clj/orcpub/pdf/draw.clj @@ -0,0 +1,327 @@ +(ns orcpub.pdf.draw + "The drawing toolbox the PDF outputs share: page sizes, the coordinate flip, fonts, text + measurement and wrapping, text and line drawing, and shape paths. pdf.clj's character + sheet and cards and spellbook.clj's booklet all draw through here. + Neither caller changes coordinate system. The shape functions take a `pt` mapper and + `pt-from-top` takes points-per-unit, so pdf.clj stays in inches from a card's top-left + and spellbook.clj in points from the page top; both measure y DOWNWARD." + (:require [clojure.string :as s] + [clojure.java.io :as io] + [orcpub.common :as common]) + (:import (org.apache.pdfbox.pdmodel PDPageContentStream PDPageContentStream$AppendMode) + (org.apache.pdfbox.pdmodel.font PDType1Font PDType0Font PDFont + Standard14Fonts$FontName))) + +(def page-sizes + "Page dimensions in POINTS, [width height]. ISO 216 for the A series; US Letter is + 612x792, which is exactly 8.5x11 inches." + {:letter [612.0 792.0] + :a4 [595.0 842.0] + :a5 [420.0 595.0]}) + +(def default-page + "What everything draws on today. The character-sheet templates in resources/ are all + 612x792 and their artwork is fixed, so an A4 character sheet needs A4 artwork rather + than a change here; a bare (PDPage.) is PDFBox's Letter. Changing this alone does not + produce an A4 export -- it is the one place the page height stops being a literal." + :letter) + +(defn page-size + "[width height] in points for `page`, a key of `page-sizes`. Unknown keys get Letter." + [page] + (get page-sizes page (page-sizes :letter))) + +(defn in->pt + "Inches to PDF points, 72 per inch. For SIZES -- widths, heights, offsets -- where no + page origin is involved, so no flip." + [inches] + (float (* 72 inches))) + +(defn pt-from-top + "`y` units DOWN from the page top to a PDF y coordinate, which runs up from the bottom. + `pt-per-unit` is 72 when the caller works in inches, 1 when it works in points. + + The one flip both drawing files use: pdf.clj had it as `(in-to-sz (- 11 inches))` with + the page height inline, spellbook.clj as `(- page-h ty)`. Same arithmetic, two units, + and only one of them named the height." + ([pt-per-unit y] (pt-from-top default-page pt-per-unit y)) + ([page pt-per-unit y] + (float (- (second (page-size page)) (* pt-per-unit y))))) + +(defn fit + "Largest [height width] with the image's aspect ratio that fits the rectangle + [r-h r-w]. One dimension matches the rectangle exactly; the other is smaller. Units + are the caller's, so long as both pairs agree." + [[r-h r-w] [i-h i-w]] + (if (> (/ i-h i-w) (/ r-h r-w)) + [r-h (* r-h (/ i-w i-h))] + [(* r-w (/ i-h i-w)) r-w])) + +(def bezier-k + "Control-point offset that turns four cubic curves into a circle, to within a fifth of + a percent. There is no arc operator in a PDF content stream." + 0.5522847) + +(defn path! + "`moveTo` the first of `pts`, `lineTo` the rest, each mapped through `pt`. + + Emits no close and no stroke on purpose: the callers' terminators differ, and the + difference is visible in the content stream -- closeAndStroke is `s`, while closePath + then stroke is `h S`. Sharing only the path keeps both byte-identical." + [^PDPageContentStream cs pt pts] + (let [[[px py] & more] (map (fn [[a b]] (pt a b)) pts)] + (.moveTo cs (float px) (float py)) + (doseq [[qx qy] more] (.lineTo cs (float qx) (float qy))))) + +(defn circle-path! + "A circle of radius `r` about (`cx`, `cy`) in the caller's drawing space, as `moveTo` + plus four cubic curves, counter-clockwise from the rightmost point. Closes nothing and + strokes nothing, as `path!`." + [^PDPageContentStream cs pt cx cy r] + (let [k (* r bezier-k) + [x0 y0] (pt (+ cx r) cy) + curve (fn [[ax ay] [bx by] [ex ey]] + (.curveTo cs (float ax) (float ay) (float bx) (float by) + (float ex) (float ey)))] + (.moveTo cs (float x0) (float y0)) + ;; y runs DOWN in both callers' spaces, so (- cy r) is the top of the circle. + (curve (pt (+ cx r) (- cy k)) (pt (+ cx k) (- cy r)) (pt cx (- cy r))) + (curve (pt (- cx k) (- cy r)) (pt (- cx r) (- cy k)) (pt (- cx r) cy)) + (curve (pt (- cx r) (+ cy k)) (pt (- cx k) (+ cy r)) (pt cx (+ cy r))) + (curve (pt (+ cx k) (+ cy r)) (pt (+ cx r) (+ cy k)) (pt (+ cx r) cy)))) + +(def HELVETICA + "Standard Helvetica font (regular weight, upright)" + (PDType1Font. Standard14Fonts$FontName/HELVETICA)) + +(def HELVETICA_BOLD + "Standard Helvetica font (bold weight, upright)" + (PDType1Font. Standard14Fonts$FontName/HELVETICA_BOLD)) + +(def HELVETICA_BOLD_OBLIQUE + "Standard Helvetica font (bold weight, italic/oblique)" + (PDType1Font. Standard14Fonts$FontName/HELVETICA_BOLD_OBLIQUE)) + +(defn load-fonts + "Loads the fonts for the document. Will contain + :plain, :italic, :bold and :bold-italic fonts." + [doc] + (reduce-kv + (fn [m type file] + (assoc m type + (with-open [stream (.openStream (io/resource file))] + (PDType0Font/load doc stream)))) + {} + {:plain "Vollkorn-Regular.ttf" + :italic "Vollkorn-Italic.ttf" + :bold "Vollkorn-Bold.ttf" + :bold-italic "Vollkorn-BoldItalic.ttf"})) + +(defn normalize-text + "Coerces a value into the WinAnsiEncoding 0x20-0xFF subset PDFBox can render + (PDType1Font throws on anything else, blanking the field). nil -> nil; non-strings + stringified. \\t -> space; other 0x00-0x1F dropped except \\n and \\r; curly + quotes -> straight; U+2013 / U+2014 -> - / --; U+2026 -> ...; anything else + above U+00FF -> '?'." + [s] + (when (some? s) + (-> (str s) + (s/replace "\t" " ") + (s/replace #"[\u0000-\u0008\u000B\u000C\u000E-\u001F]" "") + (s/replace "\u2018" "'") (s/replace "\u2019" "'") + (s/replace "\u201C" "\"") (s/replace "\u201D" "\"") + (s/replace "\u2013" "-") (s/replace "\u2014" "--") + (s/replace "\u2026" "...") + (s/replace #"[^\u0000-\u00FF]" "?")))) + +(defn font-safe + "`text` with whatever `font` has no glyph for made drawable: characters below 0x20 + dropped, anything else replaced by `?`. Returns `text` itself when the whole string + draws, which is every string in the SRD -- the embedded Vollkorn covers Latin-1 and + the punctuation the books use, so this only fires on homebrew." + [^PDFont font text] + (if-not (string? text) + text + (try + (.getStringWidth font text) + text + (catch Exception _ + (letfn [(drawable? [s] (try (.getStringWidth font s) true + (catch Exception _ false)))] + (->> (seq (.toArray (.codePoints text))) + (keep #(let [c (String. (Character/toChars (int %)))] + (when (>= (int %) 0x20) (if (drawable? c) c "?")))) + (apply str))))))) + +;; FIELD NOTE (glyph-throw): PDFBox throws IllegalArgumentException on a glyph the +;; embedded font has not got, and add-magic-item-cards! wraps every sheet in one try. +;; Unprotected, one homebrew name in a script Vollkorn lacks cost the export the sheet +;; it was on AND every sheet after it. Measured: 1 page of an expected 4. + +(defn string-width + "Width of `text` in INCHES at `font-size`, not points: the raw glyph width is + divided by 72. Callers working in points must convert. Falls back to `font-safe` + for text the font cannot draw, rather than throwing." + [text ^PDFont font font-size] + (if text + (let [t (if (keyword? text) (common/safe-name text) text)] + (/ (* (/ (try (.getStringWidth font t) + (catch Exception _ (.getStringWidth font (font-safe font t)))) + 1000.0) + font-size) + 72)) + 0)) + +;; ─── Orphaned widgets ──────────────────────────────────────────────────────── + +(defn content-stream + "Opens a compressed PDPageContentStream that APPENDs to `page`'s existing + content, so template artwork survives (OVERWRITE would replace it)." + [doc page] + (PDPageContentStream. doc page PDPageContentStream$AppendMode/APPEND true)) + +(defn split-lines + "Greedy word wrap of `text` to `width` INCHES at `font-size` (see + `string-width`, which also works in inches). Splits on whitespace, so + existing newlines are not honoured. A word wider than the box gets its own + over-long line rather than being hyphenated or dropped. + + Shared with spellbook.clj." + [text ^PDFont font font-size width] + (let [words (s/split text #"\s")] + (loop [lines [] + current-line nil + [next-word & remaining-words :as current-words] words] + (if next-word + (let [line-with-word (str current-line (when current-line " ") next-word) + new-width (string-width line-with-word font font-size)] + (if (> new-width width) + (if current-line + (recur (conj lines current-line) + nil + current-words) + ;; A single word wider than the box takes its own line. Retrying it + ;; against an empty current-line would never consume it, so the word + ;; has to be taken here or the loop never terminates. + (recur (conj lines next-word) + nil + remaining-words)) + (recur lines + line-with-word + remaining-words))) + (if current-line + (conj lines current-line) + lines))))) + +;; ─── Fitting text to a box ──────────────────────────────────────────────────── + +(defn draw-lines-to-box + "Draws pre-wrapped `lines` into a box `height` inches tall topped at [`x` `y`], + inches with `y` from the page BOTTOM (see `in-to-coord-y`). Leading is 1.1x the + font size. RETURNS the lines that did not fit, which is how card overflow reaches + the backs; empty means all fit. Nothing is truncated horizontally -- that is + `split-lines`' job." + [cs lines font font-size x y height] + (let [leading (* font-size 1.1) + max-lines (dec (/ (* 72 height) leading)) + units-x (* 72 x) + units-y (* 72 y) + fitting-lines (vec (take max-lines lines))] + (.beginText cs) + (.setFont cs font font-size) + (.newLineAtOffset cs units-x units-y) + (doseq [i (range (count fitting-lines))] + (let [line (get fitting-lines i)] + (.newLineAtOffset cs 0 (- leading)) + (.showText cs (font-safe font line)))) + (.endText cs) + (vec (drop max-lines lines)))) + +(defn draw-text-to-box + "`split-lines` then `draw-lines-to-box`: wraps `text` to `width` and fills the + box, returning the lines that did not fit. Inches throughout, `y` from the + page BOTTOM." + [cs text font font-size x y width height] + (let [lines (split-lines text font font-size width)] + (draw-lines-to-box cs lines font font-size x y height))) + +(defn set-text-color + "Set text (non-stroking) color. Values must be 0.0-1.0 floats (PDFBox 3.x)." + [cs r g b] + (.setNonStrokingColor cs (float r) (float g) (float b))) + +(defn draw-text + "One line of text with its baseline at [`x` `y`], in inches with `y` from the + page BOTTOM. No wrapping and no box -- it runs off the page if too long. + `color` is an [r g b] of 0.0-1.0 floats and, when given, is reset to black + afterwards. Keywords are rendered via `common/safe-name`; nil `text` is a no-op." + [cs text font font-size x y & [color]] + (when text + (let [units-x (* 72 x) + units-y (* 72 y)] + (.beginText cs) + (.setFont cs font font-size) + (when color + (apply set-text-color cs color)) + (.newLineAtOffset cs units-x units-y) + (.showText cs (font-safe font (if (keyword? text) + (common/safe-name text) text))) + (when color + (set-text-color cs 0 0 0)) + (.endText cs)))) + +(defn draw-halo-text + "Draw text with a white outline (8 offset copies) then black fill, so a black + label stays legible on top of a solid-black icon. Used only in printer-friendly + B&W mode, where icon and text are both pure black; offsets are in inches." + [cs text font font-size x y] + (let [d 0.009] + (doseq [dx [(- d) 0 d] + dy [(- d) 0 d] + :when (not (and (zero? dx) (zero? dy)))] + (draw-text cs text font font-size (+ x dx) (+ y dy) [1 1 1])) + (draw-text cs text font font-size x y [0 0 0]))) + +(defn draw-line + "Draw a line. PDFBox 3.x removed drawLine — use moveTo/lineTo/stroke." + [cs start-x start-y end-x end-y] + (.moveTo cs (float start-x) (float start-y)) + (.lineTo cs (float end-x) (float end-y)) + (.stroke cs)) + +(defn draw-line-in + "`draw-line` with every coordinate given in inches instead of points. Both + axes measure from the page BOTTOM-left; there is no flip here." + [cs & coords] + (apply draw-line cs (map in->pt coords))) + +(defn draw-grid + "Draw the spell card grid. Light gray lines for card boundaries." + [cs box-width box-height] + (let [num-boxes-x (int (/ 8.5 box-width)) + num-boxes-y (int (/ 11.0 box-height)) + total-width (* num-boxes-x box-width) + total-height (* num-boxes-y box-height) + remaining-width (- 8.5 total-width) + margin-x (/ remaining-width 2) + remaining-height (- 11.0 total-height) + margin-y (/ remaining-height 2) + ;; PDFBox 3.x: setStrokingColor(float,float,float) requires 0.0-1.0 range + ;; (PDFBox 2.x accepted 0-255 integers via a separate overload) + light-gray (float (/ 225.0 255.0))] + (.setStrokingColor cs light-gray light-gray light-gray) + (doseq [i (range (inc num-boxes-x))] + (let [x (+ margin-x (* box-width i))] + (draw-line-in cs + x + margin-y + x + (+ margin-y total-height)))) + (doseq [i (range (inc num-boxes-y))] + (let [y (+ margin-y (* box-height i))] + (draw-line-in cs + margin-x + y + (+ margin-x total-width) + y))) + (.setStrokingColor cs (float 0) (float 0) (float 0)))) diff --git a/src/clj/orcpub/routes.clj b/src/clj/orcpub/routes.clj index ed4ef6df6..06f278592 100644 --- a/src/clj/orcpub/routes.clj +++ b/src/clj/orcpub/routes.clj @@ -39,6 +39,7 @@ [orcpub.loading-spinner :as spinner] [orcpub.index :refer [index-page]] [orcpub.pdf :as pdf] + [orcpub.pdf.draw :as draw] [orcpub.spellbook :as spellbook] [orcpub.dnd.e5.emblems :as emblems] [orcpub.registration :as registration] @@ -1518,7 +1519,7 @@ item-cards? (and print-magic-item-cards? (seq magic-items-known)) book (when (seq spells-known) (spellbook-options spellbook character-name)) spell-order (one-of #{:level :alpha} spell-order :level) - fonts (when (or spell-cards? item-cards? book) (pdf/load-fonts doc)) + fonts (when (or spell-cards? item-cards? book) (draw/load-fonts doc)) img (when (or spell-cards? item-cards? book) (pdf/make-image-loader doc))] ;; Order: sheet, spellbook, then cards. (when book diff --git a/src/clj/orcpub/spellbook.clj b/src/clj/orcpub/spellbook.clj index 78aad3763..b83ecaec9 100644 --- a/src/clj/orcpub/spellbook.clj +++ b/src/clj/orcpub/spellbook.clj @@ -7,7 +7,7 @@ [orcpub.common :as common] [orcpub.pdf :as pdf] [orcpub.dnd.e5.spell-print :as sp] - [orcpub.pdf.canvas :as canvas] + [orcpub.pdf.draw :as draw] [orcpub.dnd.e5.emblems :as emblems] [orcpub.dnd.e5.spell-annotations :as ann]) (:import (java.awt.geom PathIterator) @@ -15,8 +15,8 @@ ;; ─── Page geometry, in points ──────────────────────────────────────────────── -(def page-w (first (canvas/page-size canvas/default-page))) -(def page-h (second (canvas/page-size canvas/default-page))) +(def page-w (first (draw/page-size draw/default-page))) +(def page-h (second (draw/page-size draw/default-page))) (def ^:private margin 36.0) (def ^:private body-top 56.0) (def ^:private body-bottom (- page-h 46.0)) @@ -31,8 +31,8 @@ (defn- py "Converts `ty`, points down from the page top, to PDF y, which runs up from the bottom. - `canvas/pt-from-top` at a scale of 1, the same flip pdf.clj uses at 72." - [ty] (canvas/pt-from-top 1 ty)) + `draw/pt-from-top` at a scale of 1, the same flip pdf.clj uses at 72." + [ty] (draw/pt-from-top 1 ty)) (defn body-width "The width spells are laid into, in points: the page less its margins, and less the tab @@ -47,20 +47,20 @@ ;; ─── Text ──────────────────────────────────────────────────────────────────── (defn- clean - "`v` as a string the embedded fonts can show (pdf/normalize-text), with list bullets turned + "`v` as a string the embedded fonts can show (draw/normalize-text), with list bullets turned into middle dots; \"\" for nil." [v] - (or (pdf/normalize-text (some-> v str (s/replace "\u2022" "\u00B7"))) "")) + (or (draw/normalize-text (some-> v str (s/replace "\u2022" "\u00B7"))) "")) (defn- width "Width of `text` in points at `size` in `font`, after `clean`." - [font size text] (* 72.0 (pdf/string-width (clean text) font size))) + [font size text] (* 72.0 (draw/string-width (clean text) font size))) (defn- wrap "`text` broken into lines of at most `w` points, hard breaks kept." [font size text w] (into [] - (mapcat #(if (s/blank? %) [] (pdf/split-lines (s/trim %) font size (/ w 72.0)))) + (mapcat #(if (s/blank? %) [] (draw/split-lines (s/trim %) font size (/ w 72.0)))) (s/split-lines (clean text)))) (defn- clip @@ -174,7 +174,7 @@ (defn- circle-path! "Adds a circle of radius `r` about (cx, cy) to the current path, as four cubic curves." [cs cx cy r] - (canvas/circle-path! cs pt cx cy r) + (draw/circle-path! cs pt cx cy r) (.closePath cs)) (defn- circle! @@ -189,7 +189,7 @@ fills it with `:fill?`." [cs pts lw & [{:keys [close? fill?]}]] (.setLineWidth cs (float lw)) - (canvas/path! cs pt pts) + (draw/path! cs pt pts) (cond fill? (do (.closePath cs) (.fill cs)) close? (.closeAndStroke cs) :else (.stroke cs))) diff --git a/test/clj/orcpub/card_export_test.clj b/test/clj/orcpub/card_export_test.clj index 0c179215b..e5efb636b 100644 --- a/test/clj/orcpub/card_export_test.clj +++ b/test/clj/orcpub/card_export_test.clj @@ -4,6 +4,7 @@ (:require [clojure.test :refer [deftest is testing]] [clojure.string :as str] [orcpub.pdf :as pdf] + [orcpub.pdf.draw :as draw] [orcpub.routes :as routes] [orcpub.dnd.e5.spells :as spells] [orcpub.dnd.e5.magic-items :as magic-items]) @@ -62,7 +63,7 @@ [kinds] (let [out (ByteArrayOutputStream.)] (with-open [doc (PDDocument.)] - (let [fonts (pdf/load-fonts doc) + (let [fonts (draw/load-fonts doc) img (pdf/make-image-loader doc) spells-known {:wizard (vec (for [k (take 12 (keys spells/spell-map))] {:key k :class "Wizard"}))}] @@ -136,7 +137,7 @@ spells-known {:wizard (vec (for [c customs] {:key (:key c) :class "Wizard"}))} out (ByteArrayOutputStream.)] (with-open [doc (PDDocument.)] - (let [fonts (pdf/load-fonts doc) + (let [fonts (draw/load-fonts doc) img (pdf/make-image-loader doc)] (routes/add-spell-cards! doc fonts img spells-known {"Wizard" 15} {"Wizard" 7} customs false card-back-logo false false)) @@ -208,7 +209,7 @@ [items] (let [out (ByteArrayOutputStream.)] (with-open [doc (PDDocument.)] - (routes/add-magic-item-cards! doc (pdf/load-fonts doc) (pdf/make-image-loader doc) + (routes/add-magic-item-cards! doc (draw/load-fonts doc) (pdf/make-image-loader doc) (vec items) card-back-logo false false) (.save doc out)) (with-open [doc (Loader/loadPDF (.toByteArray out))] diff --git a/test/clj/orcpub/card_geometry_test.clj b/test/clj/orcpub/card_geometry_test.clj index e7fb34208..f8e5c6292 100644 --- a/test/clj/orcpub/card_geometry_test.clj +++ b/test/clj/orcpub/card_geometry_test.clj @@ -9,6 +9,7 @@ (:require [clojure.test :refer [deftest is testing]] [orcpub.pdf-ops :as ops] [orcpub.pdf :as pdf] + [orcpub.pdf.draw :as draw] [orcpub.routes :as routes] [orcpub.dnd.e5.spells :as spells] [orcpub.dnd.e5.magic-items :as magic-items]) @@ -40,7 +41,7 @@ [] (let [out (ByteArrayOutputStream.)] (with-open [doc (PDDocument.)] - (let [fonts (pdf/load-fonts doc) + (let [fonts (draw/load-fonts doc) img (pdf/make-image-loader doc) known {:wizard (vec (for [k (take 12 (keys spells/spell-map))] {:key k :class "Wizard"}))}] @@ -105,7 +106,7 @@ (let [items (mapv (comp item-named :name) rarity-cases) out (ByteArrayOutputStream.)] (with-open [doc (PDDocument.)] - (let [fonts (pdf/load-fonts doc) + (let [fonts (draw/load-fonts doc) img (pdf/make-image-loader doc)] (doseq [family pdf/card-flourishes [_ bw? faded?] print-modes] diff --git a/test/clj/orcpub/pdf_test.clj b/test/clj/orcpub/pdf_test.clj index 301f04b2d..7bffc9a73 100644 --- a/test/clj/orcpub/pdf_test.clj +++ b/test/clj/orcpub/pdf_test.clj @@ -4,6 +4,7 @@ [clojure.java.io :as io] [clojure.string :as str] [orcpub.pdf :as pdf] + [orcpub.pdf.draw :as draw] [orcpub.dnd.e5.spell-packing :as packing]) (:import (org.apache.pdfbox Loader) (org.apache.pdfbox.cos COSName) @@ -83,7 +84,7 @@ renders a spell without throwing (load-fonts + icon embed hoisted out)" (with-open [doc (PDDocument.)] (.addPage doc (PDPage.)) - (let [fonts (pdf/load-fonts doc) + (let [fonts (draw/load-fonts doc) img (pdf/make-image-loader doc) page (.getPage doc 0)] (with-open [cs (PDPageContentStream. doc page)] @@ -106,7 +107,7 @@ printing; the grayscale/black choice is a caller-resolved resource)" (with-open [doc (PDDocument.)] (.addPage doc (PDPage.)) - (let [fonts (pdf/load-fonts doc) + (let [fonts (draw/load-fonts doc) img (pdf/make-image-loader doc) page (.getPage doc 0) lines (vec (repeat 9 {:remaining-lines ["overflow line"] :spell-name "Bolt"}))] @@ -120,7 +121,7 @@ (deftest normalize-text-coerces-to-winansi (testing "unit: smart punctuation downgraded, controls dropped, non-Latin-1 -> '?'" - (let [nt #'orcpub.pdf/normalize-text] + (let [nt #'orcpub.pdf.draw/normalize-text] (is (= "'q' \"d\" - -- ..." (nt "‘q’ “d” – — …"))) (is (= "ab c" (nt "ab\tc")) "BEL dropped, tab -> space") @@ -131,7 +132,7 @@ (testing "Font creation and ability to print latin and cyrillic characters" (let [^PDDocument doc (PDDocument.) ^PDPage page (PDPage.) - fonts (pdf/load-fonts doc) + fonts (draw/load-fonts doc) required-keys [:plain :bold :italic :bold-italic]] (is (every? some? (map fonts required-keys))) (.addPage doc page) @@ -324,8 +325,8 @@ `lines` without bound. Reachable from /character.pdf, which is unauthenticated: draw-text-to-box renders custom spell names into a roughly two-inch card box." - (let [result (future (pdf/split-lines "supercalifragilisticexpialidocious tail" - pdf/HELVETICA 8.0 0.2)) + (let [result (future (draw/split-lines "supercalifragilisticexpialidocious tail" + draw/HELVETICA 8.0 0.2)) value (deref result 5000 ::timed-out)] (when (= ::timed-out value) (future-cancel result)) (is (not= ::timed-out value) "split-lines must terminate") @@ -511,7 +512,7 @@ (let [size (baked-size form nm) widget (first (.getWidgets (.getField form nm))) available (- (.getWidth (.getRectangle widget)) 2.0)] - (<= (* 72.0 (pdf/string-width value pdf/HELVETICA size)) available)))] + (<= (* 72.0 (draw/string-width value draw/HELVETICA size)) available)))] (is (= 8.0 (baked-size form "int-save")) "a value that already fits is left at the size PDFBox chose") (is (< (baked-size form "wis-save") 8.0) "a wide value is shrunk") @@ -761,7 +762,7 @@ (let [dpi 300.0 img (.renderImageWithDPI (org.apache.pdfbox.rendering.PDFRenderer. doc) index (float dpi)) - w (pdf/string-width pdf/site-stamp pdf/HELVETICA 6) + w (draw/string-width pdf/site-stamp draw/HELVETICA 6) h (/ 8.0 72) height (.getHeight img) x0 (int (* x dpi)) @@ -1073,7 +1074,7 @@ size (some-> (re-find #"/\S+\s+([0-9.]+)\s+Tf" (String. (.toByteArray b))) second Double/parseDouble)] (when size - (is (<= (* 72 (pdf/string-width v pdf/HELVETICA size)) + (is (<= (* 72 (draw/string-width v draw/HELVETICA size)) (.getWidth r)) (str "style " style " " n " \"" v "\" at " size "pt")))))))))))) @@ -1154,12 +1155,12 @@ (let [{:keys [label size]} (fit "Eldritch Knight" 35.0)] (is (not= "Eldritch Knight" label)) (is (clojure.string/ends-with? label "\u2026")) - (is (<= (* 72 (pdf/string-width label pdf/HELVETICA_BOLD size)) 35.0)))) + (is (<= (* 72 (draw/string-width label draw/HELVETICA_BOLD size)) 35.0)))) (testing "every real class name fits a level box's compartment" (doseq [nm ["Bard" "Cleric" "Druid" "Paladin" "Ranger" "Sorcerer" "Warlock" "Wizard" "Arcane Trickster" "Eldritch Knight"]] (let [{:keys [label size]} (fit nm 35.0)] - (is (<= (* 72 (pdf/string-width label pdf/HELVETICA_BOLD size)) 35.0) + (is (<= (* 72 (draw/string-width label draw/HELVETICA_BOLD size)) 35.0) (str nm " -> " label))))))) (deftest a-label-on-box-0-is-refused diff --git a/test/clj/orcpub/spellbook_geometry_test.clj b/test/clj/orcpub/spellbook_geometry_test.clj index 77e505574..2efabe021 100644 --- a/test/clj/orcpub/spellbook_geometry_test.clj +++ b/test/clj/orcpub/spellbook_geometry_test.clj @@ -15,7 +15,7 @@ [orcpub.pdf-ops :as ops] [orcpub.common :as common] [orcpub.pdf :as pdf] - [orcpub.pdf.canvas :as canvas] + [orcpub.pdf.draw :as draw] [orcpub.spellbook :as sb] [orcpub.dnd.e5.spells :as spells]) (:import (java.io ByteArrayOutputStream) @@ -55,7 +55,7 @@ (group-by :level)) out (ByteArrayOutputStream.)] (with-open [doc (PDDocument.)] - (sb/add-spellbook! doc (pdf/load-fonts doc) (pdf/make-image-loader doc) + (sb/add-spellbook! doc (draw/load-fonts doc) (pdf/make-image-loader doc) (merge base-opts opts) known spells/spell-map) (.save doc out)) (with-open [doc (Loader/loadPDF (.toByteArray out))] (ops/doc-fingerprints doc)))) @@ -85,7 +85,7 @@ (is (contains? levels 0)) (is (contains? levels 9)))) (testing "bezier-k lives in one place" - (is (= 0.5522847 canvas/bezier-k)) + (is (= 0.5522847 draw/bezier-k)) (doseq [ns- ['orcpub.spellbook 'orcpub.pdf]] (is (nil? (get (ns-interns ns-) 'bezier-k)) - (str ns- " re-declared bezier-k; it shares orcpub.pdf.canvas/bezier-k"))))) + (str ns- " re-declared bezier-k; it shares orcpub.pdf.draw/bezier-k"))))) diff --git a/test/clj/orcpub/spellbook_test.clj b/test/clj/orcpub/spellbook_test.clj index eef4ecbe4..96b19e6bf 100644 --- a/test/clj/orcpub/spellbook_test.clj +++ b/test/clj/orcpub/spellbook_test.clj @@ -6,6 +6,7 @@ [clojure.java.io :as io] [orcpub.common :as common] [orcpub.pdf :as pdf] + [orcpub.pdf.draw :as draw] [orcpub.dnd.e5.spell-print :as sp] [orcpub.routes :as routes] [orcpub.spellbook :as sb] @@ -84,7 +85,7 @@ (deftest pact-slots-serve-every-level (with-open [doc (PDDocument.)] - (let [us (sb/units (pdf/load-fonts doc) (pdf/make-image-loader doc) + (let [us (sb/units (draw/load-fonts doc) (pdf/make-image-loader doc) {:classes [{:class "Warlock" :class-kw :warlock :level 5 :pact? true :icon "warlock-eye"}] :slots {} :pact-slots {3 2} :layout :book :order :level :tabs :head} {:all [{:key (common/name-to-kw "Charm Person") :class "Warlock"} @@ -99,7 +100,7 @@ (deftest the-slot-pool-wraps (with-open [doc (PDDocument.)] - (let [pool #(first (sb/units (pdf/load-fonts doc) (pdf/make-image-loader doc) + (let [pool #(first (sb/units (draw/load-fonts doc) (pdf/make-image-loader doc) {:classes [{:class "Wizard" :class-kw :wizard :level 20 :icon "spell-book"}] :slots % :pact-slots {} :layout :prep :order :level :tabs :head} {:all [{:key (common/name-to-kw "Shield") :class "Wizard"}]} @@ -156,7 +157,7 @@ (group-by :level)) out (ByteArrayOutputStream.)] (with-open [doc (PDDocument.)] - (let [n (sb/add-spellbook! doc (pdf/load-fonts doc) (pdf/make-image-loader doc) + (let [n (sb/add-spellbook! doc (draw/load-fonts doc) (pdf/make-image-loader doc) (merge {:classes [{:class "Cleric" :class-kw :cleric :level 5 :ability "Wisdom" :dc 15 :attack "+7" :icon "holy-symbol"} {:class "Wizard" :class-kw :wizard :level 6 :ability "Intelligence" diff --git a/test/comment-baseline.edn b/test/comment-baseline.edn index 0c8cacdd7..668dde2ad 100644 --- a/test/comment-baseline.edn +++ b/test/comment-baseline.edn @@ -10,7 +10,7 @@ "A field table: one line per field of a link entry, each defining it. Nothing in it is history."}, :baseline [], :field-notes - {["src/clj/orcpub/pdf.clj" "glyph-throw"] + {["src/clj/orcpub/pdf/draw.clj" "glyph-throw"] "fca62d7237f8", ["src/cljc/orcpub/dnd/e5/options.cljc" "background-name-key"] "e8e6f28a2ab7", From 88bc903510f312756c7a5312f13c1822a10980ff Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Fri, 16 Oct 2026 02:41:49 +0000 Subject: [PATCH 12/40] Move the SVG and icon block into draw, and qualify every call site 16 forms, ~250 lines: the SVG tokeniser and path parser, arc-points, last-svg-path, svg-view, round-unit, emit-svg-path!, svg-form, load-svg-icon, draw-svg-icon!, draw-imagex, draw-imagex-alpha, icon-red, plus draw-svg-path! and make-image-loader. pdf.clj 3,076 -> 2,813; draw.clj 327 -> 582. The last two were not on my candidate list, and the way I found that out is the useful part: emit-svg-path! is defn- in draw, and pdf.clj called it, so compilation failed with "not public". The lazy fix is to widen the private. Instead I looked at who was calling it - draw-svg-path! and make-image-loader, both drawing functions I had simply failed to list. The privacy error was telling me the cut line was in the wrong place, not that the boundary should be weakened. Nothing was made public. draw-svg-path! carried a SECOND hardcoded page height, (- 11 y (* size (/ v view))). It now goes through pt-from-top, which is algebraically the same - 792 - 72*(y + size*v/view) either way - and the baselines prove it moved nothing. pdf.clj now calls draw/ explicitly at all 88 code occurrences and the :refer list is GONE, so the boundary is visible at every call site instead of hidden behind refers. The rewrite used a scanner that tracks string literals and line comments, so the 15 remaining bare mentions are prose in docstrings, left alone: draw/draw-text reads worse than draw-text in a sentence. Regex discipline, after breaking this twice: every pattern carries a negative lookbehind so it cannot match inside a fully-qualified orcpub.pdf/name, and a trailing character-class guard rather than \b, because emit-svg-path! and draw-svg-icon! end in ! and \b does not fire after punctuation. 26 external references moved across spellbook.clj, svg_path_test.clj and dev/svg_icon_proof.clj, then 17 more for make-image-loader and draw-svg-path! across 9 files, and a grep for every moved name confirmed no pdf/ qualified leftovers. Also removed 4 imports the move orphaned: PDAppearanceStream, PDExtendedGraphicsState and Matrix from pdf.clj, PDImageXObject from draw.clj. Lint is now 0 warnings, down from 8. Still 31 literal 11 flips in pdf.clj, all in the card and AcroForm code. pt-from-top accepts a page key but nothing threads one yet, so A4 and A5 are possible and not wired. Behaviour-neutral: all three geometry baselines unchanged - card sheets, ornaments and spellbook. lein test 714/5413 green, lein lint 0 errors 0 warnings. --- dev/compare_item_cards.clj | 2 +- dev/measure_item_card.clj | 2 +- dev/svg_icon_proof.clj | 10 +- src/clj/orcpub/pdf.clj | 392 ++++---------------- src/clj/orcpub/pdf/draw.clj | 258 ++++++++++++- src/clj/orcpub/routes.clj | 2 +- src/clj/orcpub/spellbook.clj | 4 +- test/clj/orcpub/card_export_test.clj | 6 +- test/clj/orcpub/card_geometry_test.clj | 4 +- test/clj/orcpub/pdf_test.clj | 6 +- test/clj/orcpub/spellbook_geometry_test.clj | 2 +- test/clj/orcpub/spellbook_test.clj | 6 +- test/clj/orcpub/svg_path_test.clj | 43 +-- 13 files changed, 365 insertions(+), 372 deletions(-) diff --git a/dev/compare_item_cards.clj b/dev/compare_item_cards.clj index efa658faf..49cedaa6a 100644 --- a/dev/compare_item_cards.clj +++ b/dev/compare_item_cards.clj @@ -33,7 +33,7 @@ (let [doc (PDDocument.) fonts (draw/load-fonts doc) - img (pdf/make-image-loader doc) + img (draw/make-image-loader doc) ladder (mapv sample rarities)] ;; One page per family: the five ranks side by side. (doseq [family pdf/card-flourishes] diff --git a/dev/measure_item_card.clj b/dev/measure_item_card.clj index 5926281a3..152224418 100644 --- a/dev/measure_item_card.clj +++ b/dev/measure_item_card.clj @@ -97,7 +97,7 @@ (let [doc (PDDocument.) page (PDPage.)] (.addPage doc page) - (let [fonts (draw/load-fonts doc) img (pdf/make-image-loader doc)] + (let [fonts (draw/load-fonts doc) img (draw/make-image-loader doc)] (with-open [cs (PDPageContentStream. doc page)] (pdf/print-items cs doc fonts img 2.5 3.5 [torture torture torture] 0 false false nil))) (.save doc (File. (or (System/getenv "OUT") "target/item-card-torture.pdf"))) diff --git a/dev/svg_icon_proof.clj b/dev/svg_icon_proof.clj index 7d3dbc12d..6afc45faf 100644 --- a/dev/svg_icon_proof.clj +++ b/dev/svg_icon_proof.clj @@ -21,13 +21,13 @@ (def icons (str/split (or (System/getenv "ICONS") "magic-swirl") #",")) (def sizes "Inches. 0.25 is what a spell card actually draws." [0.15 0.25 0.4 0.7 1.1]) -(let [doc (PDDocument.) page (PDPage.) img (pdf/make-image-loader doc) +(let [doc (PDDocument.) page (PDPage.) img (draw/make-image-loader doc) helv (PDType1Font. Standard14Fonts$FontName/HELVETICA) label (fn [cs t x y] (draw/draw-text cs t helv 7 x y))] (.addPage doc page) (with-open [cs (PDPageContentStream. doc page)] (doseq [[row icon] (map-indexed vector icons)] - (let [ops (pdf/load-svg-icon icon) + (let [ops (draw/load-svg-icon icon) png (when (io/resource (str "public/image/" icon ".png")) (img (str "public/image/" icon ".png"))) top (+ 0.9 (* row 2.6))] @@ -38,10 +38,10 @@ (loop [[s & more] sizes x 2.1] (when s ;; Both rows share a baseline so the eye compares like with like. - (when ops (pdf/draw-svg-path! cs ops x (+ top 0.15) s 512)) + (when ops (draw/draw-svg-path! cs ops x (+ top 0.15) s 512)) ;; Only some of these were ever rasterised; the row is skipped rather ;; than faked for the rest. - (when png (pdf/draw-imagex cs png x (+ top 1.45) s s)) + (when png (draw/draw-imagex cs png x (+ top 1.45) s s)) (label cs (format "%.2fin" (double s)) x (- 11 (+ top 2.55))) (recur more (+ x s 0.28))))))) (.save doc (File. "target/svg-icon-proof.pdf")) @@ -50,7 +50,7 @@ (.close doc)) (doseq [i icons] - (let [ops (pdf/load-svg-icon i)] + (let [ops (draw/load-svg-icon i)] (printf "%-20s %s%n" i (if ops (format "%d ops %s" (count ops) diff --git a/src/clj/orcpub/pdf.clj b/src/clj/orcpub/pdf.clj index 9b555ce9d..c40d7b0e4 100644 --- a/src/clj/orcpub/pdf.clj +++ b/src/clj/orcpub/pdf.clj @@ -12,27 +12,14 @@ [orcpub.dnd.e5.magic-items :as mi] [orcpub.dnd.e5.display :as dis5e] [orcpub.dnd.e5.spell-print :as sp] - [orcpub.pdf.draw :as draw - :refer [HELVETICA - HELVETICA_BOLD - HELVETICA_BOLD_OBLIQUE - normalize-text - string-width - content-stream - split-lines - draw-lines-to-box - draw-text-to-box - draw-text - draw-halo-text - draw-grid]] + [orcpub.pdf.draw :as draw] [orcpub.dnd.e5.options :as options] [clj-http.client :as client]) (:import (java.io ByteArrayOutputStream) (java.util.zip Deflater DeflaterOutputStream) (org.apache.pdfbox.pdmodel.graphics.image PDImageXObject) (org.apache.pdfbox.pdmodel.interactive.form PDCheckBox PDTextField PDTerminalField) - (org.apache.pdfbox.pdmodel.interactive.annotation PDAnnotationWidget - PDAppearanceStream) + (org.apache.pdfbox.pdmodel.interactive.annotation PDAnnotationWidget) (org.apache.pdfbox.pdmodel.common PDRectangle) (org.apache.pdfbox.cos COSName COSDictionary) (org.apache.pdfbox.pdmodel PDPage PDPageContentStream PDResources) @@ -40,8 +27,6 @@ ;; template artwork survives. The alternative overwrites it. (org.apache.pdfbox.pdmodel PDPageContentStream$AppendMode) (org.apache.pdfbox.pdmodel.graphics.image JPEGFactory LosslessFactory) - (org.apache.pdfbox.pdmodel.graphics.state PDExtendedGraphicsState) - (org.apache.pdfbox.util Matrix) (org.apache.http.conn DnsResolver) (org.apache.http.impl.conn BasicHttpClientConnectionManager) (org.apache.http.config RegistryBuilder) @@ -84,191 +69,6 @@ ;; equipment = unused (pdf_spec emits no such key); cha = modifier; cha-mod = score. ;; The Base 14 fonts, present in every PDF reader. Constructed once at load time. -(def ^:private svg-token - #"([MmLlHhVvCcSsQqTtAaZz])|(-?(?:\d*\.\d+|\d+)(?:[eE][-+]?\d+)?)") - -(defn- svg-tokens - "The `d` attribute as an alternating stream of command keywords and numbers." - [d] - (for [[_ cmd num] (re-seq svg-token d)] - (if cmd (keyword cmd) (Double/parseDouble num)))) - -(defn- arc-points - "An elliptical arc sampled as points. SVG's A takes radii, a rotation and two - flags; PDF has no arc operator, and the exact bezier decomposition is a page of - trigonometry for a curve that spans a few points on an icon, so it is sampled." - [x0 y0 rx ry rot large? sweep? x1 y1] - (let [phi (Math/toRadians rot) - cos-p (Math/cos phi) sin-p (Math/sin phi) - dx2 (/ (- x0 x1) 2.0) dy2 (/ (- y0 y1) 2.0) - tx (+ (* cos-p dx2) (* sin-p dy2)) - ty (- (* cos-p dy2) (* sin-p dx2)) - rx (Math/abs rx) ry (Math/abs ry) - ;; A radius too small to span the endpoints is scaled up, per the spec. - lam (+ (/ (* tx tx) (* rx rx)) (/ (* ty ty) (* ry ry))) - [rx ry] (if (> lam 1) [(* rx (Math/sqrt lam)) (* ry (Math/sqrt lam))] [rx ry]) - num (- (* rx rx ry ry) (* rx rx ty ty) (* ry ry tx tx)) - den (+ (* rx rx ty ty) (* ry ry tx tx)) - co (* (if (= large? sweep?) -1 1) (Math/sqrt (max 0.0 (/ num den)))) - cx' (* co (/ (* rx ty) ry)) - cy' (* co (- (/ (* ry tx) rx))) - cx (+ (* cos-p cx') (- (* sin-p cy')) (/ (+ x0 x1) 2.0)) - cy (+ (* sin-p cx') (* cos-p cy') (/ (+ y0 y1) 2.0)) - ang (fn [ux uy vx vy] - (let [d (/ (+ (* ux vx) (* uy vy)) - (* (Math/hypot ux uy) (Math/hypot vx vy))) - a (Math/acos (max -1.0 (min 1.0 d)))] - (if (neg? (- (* ux vy) (* uy vx))) (- a) a))) - th1 (ang 1 0 (/ (- tx cx') rx) (/ (- ty cy') ry)) - dth (let [d (ang (/ (- tx cx') rx) (/ (- ty cy') ry) - (/ (- (- tx) cx') rx) (/ (- (- ty) cy') ry))] - (cond (and (not sweep?) (pos? d)) (- d (* 2 Math/PI)) - (and sweep? (neg? d)) (+ d (* 2 Math/PI)) - :else d)) - steps (max 6 (int (* 24 (/ (Math/abs dth) Math/PI))))] - (for [i (range 1 (inc steps)) - :let [t (+ th1 (* dth (/ i (double steps)))) - ex (* rx (Math/cos t)) ey (* ry (Math/sin t))]] - [(+ cx (* cos-p ex) (- (* sin-p ey))) - (+ cy (* sin-p ex) (* cos-p ey))]))) - -(defn svg-path-ops - "Parses an SVG `d` attribute into [:move x y], [:line x y], - [:curve x1 y1 x2 y2 x y] and [:close], in the SVG's own coordinates. - Covers M L H V C S Q T A Z and their relative forms, with pairs after an M - continuing as implicit L. Quadratics are raised to cubics; arcs, which PDF - lacks, are sampled as lines." - [d] - (loop [[t & more :as ts] (svg-tokens d) - cmd nil, cx 0.0, cy 0.0, sx 0.0, sy 0.0 - prev-c nil, prev-q nil, out []] - (if (nil? t) - out - (let [[cmd ts] (if (keyword? t) [t more] [cmd ts]) - rel? (and cmd (Character/isLowerCase (first (name cmd)))) - n (fn [i] (nth ts i)) - ax (fn [v] (if rel? (+ cx v) v)) - ay (fn [v] (if rel? (+ cy v) v))] - (case (if cmd (keyword (s/upper-case (name cmd))) :none) - :M (let [x (ax (n 0)) y (ay (n 1))] - (recur (drop 2 ts) (if rel? :l :L) x y x y nil nil - (conj out [:move x y]))) - :L (let [x (ax (n 0)) y (ay (n 1))] - (recur (drop 2 ts) cmd x y sx sy nil nil (conj out [:line x y]))) - :H (let [x (ax (n 0))] - (recur (drop 1 ts) cmd x cy sx sy nil nil (conj out [:line x cy]))) - :V (let [y (ay (n 0))] - (recur (drop 1 ts) cmd cx y sx sy nil nil (conj out [:line cx y]))) - :C (let [x1 (ax (n 0)) y1 (ay (n 1)) x2 (ax (n 2)) y2 (ay (n 3)) - x (ax (n 4)) y (ay (n 5))] - (recur (drop 6 ts) cmd x y sx sy [x2 y2] nil - (conj out [:curve x1 y1 x2 y2 x y]))) - ;; S and T take their first control point by reflecting the previous - ;; one through the current point; with no previous curve it is the - ;; current point itself. - :S (let [[px py] (or prev-c [cx cy]) - x1 (- (* 2 cx) px) y1 (- (* 2 cy) py) - x2 (ax (n 0)) y2 (ay (n 1)) x (ax (n 2)) y (ay (n 3))] - (recur (drop 4 ts) cmd x y sx sy [x2 y2] nil - (conj out [:curve x1 y1 x2 y2 x y]))) - :Q (let [qx (ax (n 0)) qy (ay (n 1)) x (ax (n 2)) y (ay (n 3))] - (recur (drop 4 ts) cmd x y sx sy nil [qx qy] - (conj out [:curve (+ cx (* 2/3 (- qx cx))) (+ cy (* 2/3 (- qy cy))) - (+ x (* 2/3 (- qx x))) (+ y (* 2/3 (- qy y))) x y]))) - :T (let [[px py] (or prev-q [cx cy]) - qx (- (* 2 cx) px) qy (- (* 2 cy) py) - x (ax (n 0)) y (ay (n 1))] - (recur (drop 2 ts) cmd x y sx sy nil [qx qy] - (conj out [:curve (+ cx (* 2/3 (- qx cx))) (+ cy (* 2/3 (- qy cy))) - (+ x (* 2/3 (- qx x))) (+ y (* 2/3 (- qy y))) x y]))) - :A (let [x (ax (n 5)) y (ay (n 6)) - pts (arc-points cx cy (n 0) (n 1) (n 2) - (not (zero? (n 3))) (not (zero? (n 4))) x y)] - (recur (drop 7 ts) cmd x y sx sy nil nil - (into out (map (fn [[px py]] [:line px py]) pts)))) - :Z (recur ts cmd sx sy sx sy nil nil (conj out [:close])) - (recur more cmd cx cy sx sy prev-c prev-q out)))))) - -(defn- emit-svg-path! - "Writes `ops` from svg-path-ops as PDF path operators, mapping SVG coordinates - through `px` and `py`. - - game-icons.net glyphs are one filled path with holes, which is exactly what the - nonzero winding rule of `fill` produces." - [cs ops px py] - (doseq [op ops] - (case (first op) - :move (.moveTo cs (px (nth op 1)) (py (nth op 2))) - :line (.lineTo cs (px (nth op 1)) (py (nth op 2))) - :curve (.curveTo cs (px (nth op 1)) (py (nth op 2)) - (px (nth op 3)) (py (nth op 4)) - (px (nth op 5)) (py (nth op 6))) - :close (.closePath cs) - nil)) - (.fill cs)) - -(def ^:private svg-view - "game-icons.net glyphs are all drawn in a 512x512 viewBox." - 512.0) - -(defn draw-svg-path! - "Fills `ops` straight into a `size`-inch box whose top-left is (x, y) on the - page, scaling from a `view` square viewBox and flipping SVG's downward y. - GOTCHA: writes the whole path into the page's content stream every call; - anything drawn more than once should go through the image loader instead." - [cs ops x y size view] - (emit-svg-path! cs ops - (fn [v] (float (* 72 (+ x (* size (/ v view)))))) - (fn [v] (float (* 72 (- 11 y (* size (/ v view)))))))) - -(defn last-svg-path - "The `d` of the LAST in an SVG document, in either quote style (the - colour icons use double quotes, the `black/` set single). - GOTCHA: game-icons.net glyphs open with a transparent square background path; - filling it would black out the icon, so the glyph is the last one." - [svg] - (when-let [m (last (re-seq #"]*\sd\s*=\s*(?:\"([^\"]*)\"|'([^']*)')" svg))] - (or (nth m 1) (nth m 2)))) - -(defn load-svg-icon - "The drawable path operations of an icon in resources/public/image, or nil if - that icon was never vendored as an SVG." - [icon-name] - (some-> (io/resource (str "public/image/" icon-name ".svg")) - slurp last-svg-path svg-path-ops)) - -(defn- round-unit - "A form coordinate, rounded to one decimal place to keep the file small. A - tenth of a 512-unit box stays under a 600 DPI dot at card icon sizes." - [v] - (float (/ (Math/round (* 10.0 (double v))) 10.0))) - -(defn svg-form - "An icon's paths as a Form XObject in a `svg-view`-unit box, y already flipped - so the form's own space is upright. Written into the file once and referenced - wherever it is drawn. The form sets no colour of its own, so the fill colour - and alpha in force at each draw site apply to it." - [doc ops] - (let [form (PDAppearanceStream. doc)] - (.setBBox form (PDRectangle. 0 0 (float svg-view) (float svg-view))) - (.setResources form (PDResources.)) - (with-open [cs (PDPageContentStream. doc form)] - (emit-svg-path! cs ops round-unit (fn [v] (round-unit (- svg-view v))))) - form)) - -(defn make-image-loader - "Returns a memoized (resource-path -> XObject) embedder scoped to ONE document: - a PDImageXObject for a raster path, a form (see svg-form) for a `.svg` one. - Each distinct resource is embedded once and referenced thereafter, so repeated - icons and logos are neither re-decoded nor duplicated in the file." - [doc] - (memoize - (fn [resource-path] - (if (s/ends-with? resource-path ".svg") - (svg-form doc (svg-path-ops (last-svg-path (slurp (io/resource resource-path))))) - (with-open [in (io/input-stream (io/resource resource-path))] - (LosslessFactory/createFromImage doc (ImageIO/read in))))))) - (defn- fix-widget-page-refs! "Populate the /P (page reference) entry on widget annotations that are missing it. Many fillable templates omit the /P back-pointer; PDFBox 3.x's flatten() then @@ -990,7 +790,7 @@ ;; The generated appearance clips at "1 1 w h re", so 1pt each side. available (- (.getWidth rect) 2.0) size (baked-font-size widget) - width (when size (* 72.0 (string-width value HELVETICA size)))] + width (when size (* 72.0 (draw/string-width value draw/HELVETICA size)))] (when (and size width (> width available)) ;; 2% under the exact fit: sizing to the millimetre lands a hair over once ;; the size is rounded into the appearance stream. @@ -1042,7 +842,7 @@ ;; rewrite the DA to the caller's size first. (when (and flatten? (font-sizes k) (instance? PDTextField field)) (.setDefaultAppearance field (str "/Helv " " " (font-sizes k) " Tf 0 0 0 rg"))) - (let [text (when (instance? PDTextField field) (normalize-text v))] + (let [text (when (instance? PDTextField field) (draw/normalize-text v))] (.setValue field (cond @@ -1091,68 +891,6 @@ [rect img] (draw/fit rect img)) -(defn draw-imagex - "Draws an already-embedded PDImageXObject into the box at [`x` `y`] sized - `width` x `height`, all in INCHES, with `y` measured from the page TOP. The - image keeps its aspect ratio (see `scale`) and is centred in whichever - dimension it falls short of." - [c-stream img x y width height] - (let [[scaled-height scaled-width] (scale [height width] [(.getHeight img) (.getWidth img)])] - (.drawImage - c-stream - img - (in-to-coord-x (+ x (if (< scaled-width width) - (/ (- width scaled-width) 2) - 0))) - (in-to-coord-y (+ height y (if (< scaled-height height) - (/ (- scaled-height height) 2) - 0))) - (in-to-sz scaled-width) - (in-to-sz scaled-height)))) - -(defn draw-imagex-alpha - "draw-imagex at a reduced constant opacity (0.0-1.0). Used for the faded - grayscale card icons: a black `-bw` icon drawn at ~40% reads as a light - backdrop the black label sits over. Isolated in a save/restore so the alpha - doesn't leak into later drawing." - [cs img x y width height alpha] - (let [gs (doto (PDExtendedGraphicsState.) - (.setNonStrokingAlphaConstant (float alpha)))] - (.saveGraphicsState cs) - (.setGraphicsStateParameters cs gs) - (draw-imagex cs img x y width height) - (.restoreGraphicsState cs))) - -(def icon-red - "The red the card icons were baked at, as [r g b alpha]. The PNGs carry #910000 - at half opacity; filling the vector with the same two values composites - identically over whatever is beneath it." - [0.5686 0.0 0.0 0.5]) - -(defn draw-svg-icon! - "Draws a named icon into a `size`-inch box, filled in `color` at `alpha`. `y` is - inches from the page TOP to the box's top edge, as in draw-imagex (whose PDF - arithmetic makes it look otherwise). The icon is the document's shared form, placed - by a transform; colour and alpha sit in a save/restore so they reach the form but - not the label drawn over it. Without a vendored SVG it falls back to the PNG of the - same name, which ignores `color`." - [cs img icon-name x y size [r g b] alpha] - (if (io/resource (str "public/image/" icon-name ".svg")) - ;; The form is a svg-view-unit square; this maps that square onto `size` inches. - (let [unit (float (/ (* 72 size) svg-view))] - (.saveGraphicsState cs) - (when (< alpha 1) - (.setGraphicsStateParameters - cs (doto (PDExtendedGraphicsState.) - (.setNonStrokingAlphaConstant (float alpha))))) - (.setNonStrokingColor cs (float r) (float g) (float b)) - (.transform cs (Matrix. unit 0 0 unit - (float (* 72 x)) (float (* 72 (- 11 y size))))) - (.drawForm cs (img (str "public/image/" icon-name ".svg"))) - (.restoreGraphicsState cs)) - (draw-imagex-alpha cs (img (str "public/image/" icon-name ".png")) - x y size size alpha))) - (def user-agent "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172") (def ^:private max-embedded-bytes @@ -1438,7 +1176,7 @@ `:invalid-image-format`, `:image-load-failed`; `draw-image!` is the quiet path." [doc page url x y width height] (try - (with-open [c-stream (content-stream doc page)] + (with-open [c-stream (draw/content-stream doc page)] (let [buff-image (ImageIO/read (java.io.ByteArrayInputStream. (safe-image-bytes url)))] (when (nil? buff-image) @@ -1446,7 +1184,7 @@ {:error :invalid-image-format :url url}))) (let [img (LosslessFactory/createFromImage doc buff-image)] - (draw-imagex c-stream img x y width height)))) + (draw/draw-imagex c-stream img x y width height)))) (catch java.net.SocketTimeoutException e (throw (ex-info (str "Timeout loading image from URL: " url) {:error :image-load-timeout @@ -1469,10 +1207,10 @@ Same box arguments, same throwing contract (`:jpeg-load-failed`)." [doc page url x y width height] (try - (with-open [c-stream (content-stream doc page) + (with-open [c-stream (draw/content-stream doc page) image-stream (java.io.ByteArrayInputStream. (safe-image-bytes url))] (let [img (JPEGFactory/createFromStream doc image-stream)] - (draw-imagex c-stream img x y width height))) + (draw/draw-imagex c-stream img x y width height))) (catch java.net.SocketTimeoutException e (throw (ex-info (str "Timeout loading image from URL: " url) {:error :image-load-timeout @@ -1496,14 +1234,14 @@ failure and returns nil rather than throwing." [doc page data jpg? x y width height] (try - (with-open [c-stream (content-stream doc page)] + (with-open [c-stream (draw/content-stream doc page)] (if jpg? (with-open [in (java.io.ByteArrayInputStream. data)] - (draw-imagex c-stream (JPEGFactory/createFromStream doc in) x y width height)) + (draw/draw-imagex c-stream (JPEGFactory/createFromStream doc in) x y width height)) (let [buff (ImageIO/read (java.io.ByteArrayInputStream. data))] (when (nil? buff) (throw (ex-info "Unable to read image" {:error :invalid-image-format}))) - (draw-imagex c-stream (LosslessFactory/createFromImage doc buff) + (draw/draw-imagex c-stream (LosslessFactory/createFromImage doc buff) x y width height)))) (catch Exception e (println "ERROR: Failed to draw image for PDF:" (.getMessage e)) @@ -1739,7 +1477,7 @@ (let [paragraphs (s/split-lines (str text)) wrap (fn [p] (if (s/blank? p) [""] - (vec (split-lines p HELVETICA size (/ width 72.0))))) + (vec (draw/split-lines p draw/HELVETICA size (/ width 72.0))))) per-box (max 1 (int (Math/floor (/ height (* size line-height-factor)))))] (if (s/blank? (str text)) {:head "" :tail nil :lines 0} @@ -1878,7 +1616,7 @@ (.setWidgets field (java.util.ArrayList. [widget])) (.setAnnotations page (java.util.ArrayList. [widget])) (.setFields form (java.util.ArrayList. (conj (vec (.getFields form)) field))) - (.setValue field (normalize-text text)) + (.setValue field (draw/normalize-text text)) page)) (defn spill-overflow! @@ -1932,12 +1670,12 @@ (let [iy (- 11 y 0.12) [color alpha] (cond (and bw? bw-faded?) [[0 0 0] 0.4] bw? [[0 0 0] 1.0] - :else [(vec (take 3 icon-red)) (last icon-red)])] - (draw-svg-icon! cs img title x iy 0.25 color alpha) + :else [(vec (take 3 draw/icon-red)) (last draw/icon-red)])] + (draw/draw-svg-icon! cs img title x iy 0.25 color alpha) (if (and bw? (not bw-faded?)) - (draw-halo-text cs value HELVETICA_BOLD_OBLIQUE 8 x (- y 0.07)) + (draw/draw-halo-text cs value draw/HELVETICA_BOLD_OBLIQUE 8 x (- y 0.07)) (do (.setNonStrokingColor cs (float 0) (float 0) (float 0)) - (draw-text cs value HELVETICA_BOLD_OBLIQUE 8 x (- y 0.07)) + (draw/draw-text cs value draw/HELVETICA_BOLD_OBLIQUE 8 x (- y 0.07)) (.setNonStrokingColor cs (float 0) (float 0) (float 0)))))) (def site-stamp @@ -1961,8 +1699,8 @@ flips it to draw-text's baseline from the page BOTTOM." [cs fonts x y box-width box-height] (let [font (:plain fonts) - width (string-width site-stamp font site-stamp-size)] - (draw-text cs + width (draw/string-width site-stamp font site-stamp-size)] + (draw/draw-text cs site-stamp font site-stamp-size @@ -2070,8 +1808,8 @@ [:material (:material marks)]] :when text] (let [{:keys [dx size bold? grey]} (get annotation-columns k)] - (draw-text cs text - (if bold? HELVETICA_BOLD HELVETICA) + (draw/draw-text cs text + (if bold? draw/HELVETICA_BOLD draw/HELVETICA) size (/ (- right dx) 72.0) base-y @@ -2122,8 +1860,8 @@ (.fill cs) (.setNonStrokingColor cs (float 0) (float 0) (float 0)) (when-not (s/blank? (str label)) - (let [lw (* 72 (string-width (str label) HELVETICA_BOLD size))] - (draw-text cs (str label) HELVETICA_BOLD size + (let [lw (* 72 (draw/string-width (str label) draw/HELVETICA_BOLD size))] + (draw/draw-text cs (str label) draw/HELVETICA_BOLD size (/ (+ x (/ (- w lw) 2.0)) 72.0) (/ (+ y (* 0.22 h)) 72.0) [0 0 0]))))))))) @@ -2183,7 +1921,7 @@ "The largest size at or below heading-target-size that fits `label` in `width`, floored at heading-floor-size." [label width] - (let [natural (* 72 (string-width label HELVETICA_BOLD heading-target-size))] + (let [natural (* 72 (draw/string-width label draw/HELVETICA_BOLD heading-target-size))] (if (<= natural width) heading-target-size (max heading-floor-size (* heading-target-size (/ width natural)))))) @@ -2194,13 +1932,13 @@ fit (\"Eldritch Knight\" at 6pt would print through the bar's rules)." [label width] (let [size (heading-size label width)] - (if (<= (* 72 (string-width label HELVETICA_BOLD size)) width) + (if (<= (* 72 (draw/string-width label draw/HELVETICA_BOLD size)) width) {:label label :size size} (loop [n (dec (count label))] (let [candidate (str (s/trimr (subs label 0 (max 0 n))) "\u2026")] (cond (<= n 1) {:label "\u2026" :size size} - (<= (* 72 (string-width candidate HELVETICA_BOLD size)) width) + (<= (* 72 (draw/string-width candidate draw/HELVETICA_BOLD size)) width) {:label candidate :size size} :else (recur (dec n)))))))) @@ -2298,13 +2036,13 @@ ;; word at its padded position. {csize :size ctext :label} (let [room (- nw cantrips-label-pad 2.0) - natural (* 72 (string-width cantrips-label HELVETICA_BOLD + natural (* 72 (draw/string-width cantrips-label draw/HELVETICA_BOLD cantrips-label-size))] (if (<= natural room) {:size cantrips-label-size :label cantrips-label} {:size (max 4.5 (* cantrips-label-size (/ room natural))) :label cantrips-label}))] - (draw-text cs ctext HELVETICA_BOLD csize + (draw/draw-text cs ctext draw/HELVETICA_BOLD csize (/ (+ (if (zero? box) ;; Past box 0's own divider, which ends about ;; nine points beyond the hexagon. @@ -2332,11 +2070,11 @@ ;; the left half and the input moves to the right of it. room (if cantrips? (- ww 6.0) (* ww 0.5)) {label :label size :size} (fit-heading label room) - lw (* 72 (string-width label HELVETICA_BOLD size)) + lw (* 72 (draw/string-width label draw/HELVETICA_BOLD size)) start (if cantrips? (+ wx (/ (- ww lw) 2.0)) (+ wx 4.0))] (when-not cantrips? (shrink-slots-expended! doc box suffix (+ wx lw 10.0))) - (draw-text cs label HELVETICA_BOLD size + (draw/draw-text cs label draw/HELVETICA_BOLD size (/ start 72.0) (/ (+ middle (* -0.36 size)) 72.0) [0.15 0.15 0.15]) @@ -2345,7 +2083,7 @@ ;; -- the save DC of the spell they are casting and what they add ;; to hit -- so they are set like the class name rather than like ;; the CANTRIPS caption, which is a label nobody needs to find. - (let [sw (* 72 (string-width stats HELVETICA_BOLD small)) + (let [sw (* 72 (draw/string-width stats draw/HELVETICA_BOLD small)) sx (+ wx (/ (- ww sw) 2.0)) ;; Clear of the bar's upper rule, which sits 9.75 above its ;; middle. @@ -2358,7 +2096,7 @@ (float (+ sw 4.0)) (float (+ small 1.5))) (.fill cs) (.setNonStrokingColor cs (float 0) (float 0) (float 0)) - (draw-text cs stats HELVETICA_BOLD small + (draw/draw-text cs stats draw/HELVETICA_BOLD small (/ sx 72.0) (/ sy 72.0) [0.1 0.1 0.1]))))))))))) @@ -2373,7 +2111,7 @@ :when (not (and prints-own? (page-prints-site-line? doc index)))] (with-open [cs (PDPageContentStream. doc page PDPageContentStream$AppendMode/APPEND true true)] - (draw-text cs site-stamp HELVETICA site-stamp-size x y [0.45 0.45 0.45])))) + (draw/draw-text cs site-stamp draw/HELVETICA site-stamp-size x y [0.45 0.45 0.45])))) (defn print-backs "Draws one page of spell card BACKS, mirroring the fronts for duplex printing. @@ -2397,8 +2135,8 @@ ;; come from these literals. Latent -- every caller passes 2.5/3.5 -- but any other ;; box size draws the lines in the wrong places. Same in print-spells; print-items ;; threads its arguments through correctly. - (draw-grid cs 2.5 3.5) - (draw-text cs + (draw/draw-grid cs 2.5 3.5) + (draw/draw-text cs (str "Page " (inc page-number) " (reverse)") (:italic fonts) 8 @@ -2414,7 +2152,7 @@ (if (seq remaining-lines) ;; This card back carries overflow text from the front. (do - (draw-text-to-box cs + (draw/draw-text-to-box cs spell-name (:bold fonts) 10 @@ -2425,18 +2163,18 @@ ;; The card's own box, less the strip the stamp sits in: ;; draw-lines-to-box fills its height to the last line that fits, so ;; overflow text prints over the stamp unless the room is taken away. - (draw-lines-to-box cs + (draw/draw-lines-to-box cs remaining-lines (:plain fonts) 8 (+ x 0.12) (- 11.0 y 0.24) (- box-height 0.2 site-stamp-strip)) - (draw-text-to-box cs + (draw/draw-text-to-box cs "(reverse)" (:italic fonts) 10 - (+ x 0.15 (string-width spell-name (:bold fonts) 10)) + (+ x 0.15 (draw/string-width spell-name (:bold fonts) 10)) (- 11.0 y 0.08) (- box-width 0.3) (- box-height 0.2))) @@ -2444,7 +2182,7 @@ ;; caller's resource path (a hi-res grayscale or solid-black DMV mark, not ;; the front's tiny card-logo.png), or nil when the logo is turned off. (when logo-img - (draw-imagex cs + (draw/draw-imagex cs (img logo-img) (+ x (* box-width 0.1)) (+ y (* box-height 0.1)) @@ -2471,8 +2209,8 @@ remaining-height (- 11.0 total-height) margin-y (/ remaining-height 2)] ;; BUG: as in print-backs -- the gridlines ignore box-width/box-height. - (draw-grid cs 2.5 3.5) - (draw-text cs + (draw/draw-grid cs 2.5 3.5) + (draw/draw-text cs (str "Page " (inc page-number)) (:italic fonts) 8 @@ -2499,7 +2237,7 @@ dc-str (str "DC " dc) remaining-desc-lines - (draw-text-to-box cs + (draw/draw-text-to-box cs (or description (if summary (str summary @@ -2518,7 +2256,7 @@ (- box-width 0.24) (- box-height 1.13))] (when (:material-component components) - (draw-text-to-box cs + (draw/draw-text-to-box cs (str (s/capitalize (:material-component components))) (:italic fonts) 8 @@ -2528,9 +2266,9 @@ 0.5)) (let [card-logo (img (str "public/image/card-logo" (when bw? "-bw") ".png"))] (if (and bw? bw-faded?) - (draw-imagex-alpha cs card-logo (+ x 1.9) (+ y 0.02) 1.0 0.25 0.4) - (draw-imagex cs card-logo (+ x 1.9) (+ y 0.02) 1.0 0.25))) - (draw-text-to-box cs + (draw/draw-imagex-alpha cs card-logo (+ x 1.9) (+ y 0.02) 1.0 0.25 0.4) + (draw/draw-imagex cs card-logo (+ x 1.9) (+ y 0.02) 1.0 0.25))) + (draw/draw-text-to-box cs spell-name (:bold fonts) 10 @@ -2538,15 +2276,15 @@ (- 11.0 y) (- box-width 0.3) 0.2) - (draw-text-to-box cs + (draw/draw-text-to-box cs (if ritual " (ritual)" "") (:italic fonts) 10 - (+ x 0.12 (string-width spell-name (:bold fonts) 10)) + (+ x 0.12 (draw/string-width spell-name (:bold fonts) 10)) (- 11.0 y) (- box-width 0.3) 0.2) - (draw-text-to-box cs + (draw/draw-text-to-box cs (if (not= class-nm "Homebrew") (str (sp/spell-school-level spell class-nm) (when print-spell-card-dc-mod? (str " " dc-str " Spell Mod " (common/bonus-str attack-bonus)))) (sp/spell-school-level spell class-nm)) @@ -2602,7 +2340,7 @@ (- 11.0 y 0.45) bw? bw-faded?)) (when (seq remaining-desc-lines) - (draw-svg-icon! cs img "clockwise-rotation" (+ x 2.3) (+ y 3.3) 0.15 + (draw/draw-svg-icon! cs img "clockwise-rotation" (+ x 2.3) (+ y 3.3) 0.15 [0 0 0] (if (and bw? bw-faded?) 0.4 1.0))) {:remaining-lines remaining-desc-lines :spell-name spell-name})))))) @@ -2840,7 +2578,7 @@ wide it sets. Halving a hardcoded width puts it near the middle and no nearer, and the miss moves with the font and the size." [cs text font size cx baseline] - (draw-text cs text font size (- cx (/ (string-width text font size) 2)) baseline)) + (draw/draw-text cs text font size (- cx (/ (draw/string-width text font size) 2)) baseline)) (def card-layout "Where everything sits on a 2.5 x 3.5in item card. @@ -2892,7 +2630,7 @@ [(- (+ left bw) c) (+ dy bh)] [(+ left c) (+ dy bh)] [left (- (+ dy bh) c)] [left (+ dy c)]] true) - (draw-centred-text! cs "A" HELVETICA_BOLD 7 + (draw-centred-text! cs "A" draw/HELVETICA_BOLD 7 (+ x left (/ bw 2)) (- 11 y dy bh -0.036)) (.setLineWidth cs (float 1)))) @@ -2901,7 +2639,7 @@ "Wraps `text` to `width` and centres each line on `cx`, returning what did not fit. draw-text-to-box only sets flush left." [cs text font size cx top width max-lines] - (let [lines (split-lines text font size width) + (let [lines (draw/split-lines text font size width) leading (/ (* size 1.1) 72)] (doseq [[i line] (map-indexed vector (take max-lines lines))] (draw-centred-text! cs line font size cx (- top (* leading (inc i))))) @@ -2937,7 +2675,7 @@ (let [r 0.052 gap 0.145 cx (- (/ w 2) (/ (* gap (dec n)) 2))] - (draw-centred-text! cs "CHARGES" HELVETICA 5.5 (+ x (/ w 2)) (- 11 y label-y)) + (draw-centred-text! cs "CHARGES" draw/HELVETICA 5.5 (+ x (/ w 2)) (- 11 y label-y)) (doseq [i (range n)] (circle! cs x y (+ cx (* gap i)) cy r))) ;; The rule and the total are centred as one group, not the rule alone: the @@ -2945,11 +2683,11 @@ (let [total (str "/ " n) rule-w 0.62 gap 0.05 - group (+ rule-w gap (string-width total HELVETICA 7)) + group (+ rule-w gap (draw/string-width total draw/HELVETICA 7)) left (- (/ w 2) (/ group 2))] - (draw-centred-text! cs "CHARGES" HELVETICA 5.5 (+ x (/ w 2)) (- 11 y label-y)) + (draw-centred-text! cs "CHARGES" draw/HELVETICA 5.5 (+ x (/ w 2)) (- 11 y label-y)) (polyline! cs x y [[left cy] [(+ left rule-w) cy]] false) - (draw-text cs total HELVETICA 7 (+ x left rule-w gap) (- 11 y cy -0.015)))) + (draw/draw-text cs total draw/HELVETICA 7 (+ x left rule-w gap) (- 11 y cy -0.015)))) (.setLineWidth cs (float 1))) (defn print-items @@ -2971,8 +2709,8 @@ num-boxes-y (int (/ 11.0 box-height)) margin-x (/ (- 8.5 (* num-boxes-x box-width)) 2) margin-y (/ (- 11.0 (* num-boxes-y box-height)) 2)] - (draw-grid cs box-width box-height) - (draw-text cs (str "Page " (inc page-number)) (:italic fonts) 8 0.12 (- 11 0.15)) + (draw/draw-grid cs box-width box-height) + (draw/draw-text cs (str "Page " (inc page-number)) (:italic fonts) 8 0.12 (- 11 0.15)) (doall (for [j (range num-boxes-y) i (range (dec num-boxes-x) -1 -1) @@ -3000,7 +2738,7 @@ ;; the note saying so has reserved room. Measured against the box ;; WITHOUT the note, which only shrinks it. The LINES are kept, not ;; just their count, because splitting is the expensive part. - body-lines (split-lines body (:plain fonts) 8 (- box-width 0.4)) + body-lines (draw/split-lines body (:plain fonts) 8 (- box-width 0.4)) capacity (fn [h] (int (dec (/ (* 72 h) (* 8 1.1))))) spills? (> (count body-lines) (capacity (- box-height body-top (body-stops [false (some? clause)])))) @@ -3016,7 +2754,7 @@ ;; across a sheet; a one-line name sits in the middle of it. (let [face (name-face fonts) width (- box-width 0.56) - lines-at (fn [pt] (count (split-lines item-name face pt width))) + lines-at (fn [pt] (count (draw/split-lines item-name face pt width))) fits? (fn [pt] (let [n (lines-at pt)] (and (<= n 3) (<= (* n (/ (* pt 1.1) 72)) (:name-height down))))) @@ -3029,11 +2767,11 @@ 2 (:name-two-line down) (:name-three-line down))] (.setCharacterSpacing cs (float name-tracking)) - (draw-text-to-box cs item-name face size + (draw/draw-text-to-box cs item-name face size (+ x 0.28) (- 11.0 y top) width (:name-height down)) (.setCharacterSpacing cs (float 0))) ;; The subtitle stops short of the badge so the two never meet. - (draw-text-to-box cs (magic-item-subtitle item) (:italic fonts) 7.5 + (draw/draw-text-to-box cs (magic-item-subtitle item) (:italic fonts) 7.5 (+ x 0.2) (- 11.0 y (:subtitle down)) (- box-width (if clause 0.68 0.4)) 0.2) ;; A rule and a hairline under it: the header carries two kinds of @@ -3049,7 +2787,7 @@ (polyline! cs x y [[0.2 (:charge-under down)] [(- box-width 0.2) (:charge-under down)]] false) (.setLineWidth cs (float 1))) (let [remaining-desc-lines - (draw-lines-to-box cs body-lines (:plain fonts) 8 + (draw/draw-lines-to-box cs body-lines (:plain fonts) 8 (+ x 0.2) (- 11.0 y body-top) (- box-height body-top body-bottom))] ;; Centred, like the ornament under it and the note above it. Flush diff --git a/src/clj/orcpub/pdf/draw.clj b/src/clj/orcpub/pdf/draw.clj index eecbd3245..f39407313 100644 --- a/src/clj/orcpub/pdf/draw.clj +++ b/src/clj/orcpub/pdf/draw.clj @@ -8,9 +8,16 @@ (:require [clojure.string :as s] [clojure.java.io :as io] [orcpub.common :as common]) - (:import (org.apache.pdfbox.pdmodel PDPageContentStream PDPageContentStream$AppendMode) + (:import (org.apache.pdfbox.pdmodel PDPageContentStream PDPageContentStream$AppendMode + PDResources) + (org.apache.pdfbox.pdmodel.common PDRectangle) (org.apache.pdfbox.pdmodel.font PDType1Font PDType0Font PDFont - Standard14Fonts$FontName))) + Standard14Fonts$FontName) + (org.apache.pdfbox.pdmodel.graphics.state PDExtendedGraphicsState) + (org.apache.pdfbox.pdmodel.interactive.annotation PDAppearanceStream) + (org.apache.pdfbox.pdmodel.graphics.image LosslessFactory) + (org.apache.pdfbox.util Matrix) + (javax.imageio ImageIO))) (def page-sizes "Page dimensions in POINTS, [width height]. ISO 216 for the A series; US Letter is @@ -325,3 +332,250 @@ (+ margin-x total-width) y))) (.setStrokingColor cs (float 0) (float 0) (float 0)))) + +(def ^:private svg-token + #"([MmLlHhVvCcSsQqTtAaZz])|(-?(?:\d*\.\d+|\d+)(?:[eE][-+]?\d+)?)") + +(defn- svg-tokens + "The `d` attribute as an alternating stream of command keywords and numbers." + [d] + (for [[_ cmd num] (re-seq svg-token d)] + (if cmd (keyword cmd) (Double/parseDouble num)))) + +(defn- arc-points + "An elliptical arc sampled as points. SVG's A takes radii, a rotation and two + flags; PDF has no arc operator, and the exact bezier decomposition is a page of + trigonometry for a curve that spans a few points on an icon, so it is sampled." + [x0 y0 rx ry rot large? sweep? x1 y1] + (let [phi (Math/toRadians rot) + cos-p (Math/cos phi) sin-p (Math/sin phi) + dx2 (/ (- x0 x1) 2.0) dy2 (/ (- y0 y1) 2.0) + tx (+ (* cos-p dx2) (* sin-p dy2)) + ty (- (* cos-p dy2) (* sin-p dx2)) + rx (Math/abs rx) ry (Math/abs ry) + ;; A radius too small to span the endpoints is scaled up, per the spec. + lam (+ (/ (* tx tx) (* rx rx)) (/ (* ty ty) (* ry ry))) + [rx ry] (if (> lam 1) [(* rx (Math/sqrt lam)) (* ry (Math/sqrt lam))] [rx ry]) + num (- (* rx rx ry ry) (* rx rx ty ty) (* ry ry tx tx)) + den (+ (* rx rx ty ty) (* ry ry tx tx)) + co (* (if (= large? sweep?) -1 1) (Math/sqrt (max 0.0 (/ num den)))) + cx' (* co (/ (* rx ty) ry)) + cy' (* co (- (/ (* ry tx) rx))) + cx (+ (* cos-p cx') (- (* sin-p cy')) (/ (+ x0 x1) 2.0)) + cy (+ (* sin-p cx') (* cos-p cy') (/ (+ y0 y1) 2.0)) + ang (fn [ux uy vx vy] + (let [d (/ (+ (* ux vx) (* uy vy)) + (* (Math/hypot ux uy) (Math/hypot vx vy))) + a (Math/acos (max -1.0 (min 1.0 d)))] + (if (neg? (- (* ux vy) (* uy vx))) (- a) a))) + th1 (ang 1 0 (/ (- tx cx') rx) (/ (- ty cy') ry)) + dth (let [d (ang (/ (- tx cx') rx) (/ (- ty cy') ry) + (/ (- (- tx) cx') rx) (/ (- (- ty) cy') ry))] + (cond (and (not sweep?) (pos? d)) (- d (* 2 Math/PI)) + (and sweep? (neg? d)) (+ d (* 2 Math/PI)) + :else d)) + steps (max 6 (int (* 24 (/ (Math/abs dth) Math/PI))))] + (for [i (range 1 (inc steps)) + :let [t (+ th1 (* dth (/ i (double steps)))) + ex (* rx (Math/cos t)) ey (* ry (Math/sin t))]] + [(+ cx (* cos-p ex) (- (* sin-p ey))) + (+ cy (* sin-p ex) (* cos-p ey))]))) + +(defn svg-path-ops + "Parses an SVG `d` attribute into [:move x y], [:line x y], + [:curve x1 y1 x2 y2 x y] and [:close], in the SVG's own coordinates. + Covers M L H V C S Q T A Z and their relative forms, with pairs after an M + continuing as implicit L. Quadratics are raised to cubics; arcs, which PDF + lacks, are sampled as lines." + [d] + (loop [[t & more :as ts] (svg-tokens d) + cmd nil, cx 0.0, cy 0.0, sx 0.0, sy 0.0 + prev-c nil, prev-q nil, out []] + (if (nil? t) + out + (let [[cmd ts] (if (keyword? t) [t more] [cmd ts]) + rel? (and cmd (Character/isLowerCase (first (name cmd)))) + n (fn [i] (nth ts i)) + ax (fn [v] (if rel? (+ cx v) v)) + ay (fn [v] (if rel? (+ cy v) v))] + (case (if cmd (keyword (s/upper-case (name cmd))) :none) + :M (let [x (ax (n 0)) y (ay (n 1))] + (recur (drop 2 ts) (if rel? :l :L) x y x y nil nil + (conj out [:move x y]))) + :L (let [x (ax (n 0)) y (ay (n 1))] + (recur (drop 2 ts) cmd x y sx sy nil nil (conj out [:line x y]))) + :H (let [x (ax (n 0))] + (recur (drop 1 ts) cmd x cy sx sy nil nil (conj out [:line x cy]))) + :V (let [y (ay (n 0))] + (recur (drop 1 ts) cmd cx y sx sy nil nil (conj out [:line cx y]))) + :C (let [x1 (ax (n 0)) y1 (ay (n 1)) x2 (ax (n 2)) y2 (ay (n 3)) + x (ax (n 4)) y (ay (n 5))] + (recur (drop 6 ts) cmd x y sx sy [x2 y2] nil + (conj out [:curve x1 y1 x2 y2 x y]))) + ;; S and T take their first control point by reflecting the previous + ;; one through the current point; with no previous curve it is the + ;; current point itself. + :S (let [[px py] (or prev-c [cx cy]) + x1 (- (* 2 cx) px) y1 (- (* 2 cy) py) + x2 (ax (n 0)) y2 (ay (n 1)) x (ax (n 2)) y (ay (n 3))] + (recur (drop 4 ts) cmd x y sx sy [x2 y2] nil + (conj out [:curve x1 y1 x2 y2 x y]))) + :Q (let [qx (ax (n 0)) qy (ay (n 1)) x (ax (n 2)) y (ay (n 3))] + (recur (drop 4 ts) cmd x y sx sy nil [qx qy] + (conj out [:curve (+ cx (* 2/3 (- qx cx))) (+ cy (* 2/3 (- qy cy))) + (+ x (* 2/3 (- qx x))) (+ y (* 2/3 (- qy y))) x y]))) + :T (let [[px py] (or prev-q [cx cy]) + qx (- (* 2 cx) px) qy (- (* 2 cy) py) + x (ax (n 0)) y (ay (n 1))] + (recur (drop 2 ts) cmd x y sx sy nil [qx qy] + (conj out [:curve (+ cx (* 2/3 (- qx cx))) (+ cy (* 2/3 (- qy cy))) + (+ x (* 2/3 (- qx x))) (+ y (* 2/3 (- qy y))) x y]))) + :A (let [x (ax (n 5)) y (ay (n 6)) + pts (arc-points cx cy (n 0) (n 1) (n 2) + (not (zero? (n 3))) (not (zero? (n 4))) x y)] + (recur (drop 7 ts) cmd x y sx sy nil nil + (into out (map (fn [[px py]] [:line px py]) pts)))) + :Z (recur ts cmd sx sy sx sy nil nil (conj out [:close])) + (recur more cmd cx cy sx sy prev-c prev-q out)))))) + +(defn- emit-svg-path! + "Writes `ops` from svg-path-ops as PDF path operators, mapping SVG coordinates + through `px` and `py`. + + game-icons.net glyphs are one filled path with holes, which is exactly what the + nonzero winding rule of `fill` produces." + [cs ops px py] + (doseq [op ops] + (case (first op) + :move (.moveTo cs (px (nth op 1)) (py (nth op 2))) + :line (.lineTo cs (px (nth op 1)) (py (nth op 2))) + :curve (.curveTo cs (px (nth op 1)) (py (nth op 2)) + (px (nth op 3)) (py (nth op 4)) + (px (nth op 5)) (py (nth op 6))) + :close (.closePath cs) + nil)) + (.fill cs)) + +(def ^:private svg-view + "game-icons.net glyphs are all drawn in a 512x512 viewBox." + 512.0) + +(defn last-svg-path + "The `d` of the LAST in an SVG document, in either quote style (the + colour icons use double quotes, the `black/` set single). + GOTCHA: game-icons.net glyphs open with a transparent square background path; + filling it would black out the icon, so the glyph is the last one." + [svg] + (when-let [m (last (re-seq #"]*\sd\s*=\s*(?:\"([^\"]*)\"|'([^']*)')" svg))] + (or (nth m 1) (nth m 2)))) + +(defn load-svg-icon + "The drawable path operations of an icon in resources/public/image, or nil if + that icon was never vendored as an SVG." + [icon-name] + (some-> (io/resource (str "public/image/" icon-name ".svg")) + slurp last-svg-path svg-path-ops)) + +(defn- round-unit + "A form coordinate, rounded to one decimal place to keep the file small. A + tenth of a 512-unit box stays under a 600 DPI dot at card icon sizes." + [v] + (float (/ (Math/round (* 10.0 (double v))) 10.0))) + +(defn svg-form + "An icon's paths as a Form XObject in a `svg-view`-unit box, y already flipped + so the form's own space is upright. Written into the file once and referenced + wherever it is drawn. The form sets no colour of its own, so the fill colour + and alpha in force at each draw site apply to it." + [doc ops] + (let [form (PDAppearanceStream. doc)] + (.setBBox form (PDRectangle. 0 0 (float svg-view) (float svg-view))) + (.setResources form (PDResources.)) + (with-open [cs (PDPageContentStream. doc form)] + (emit-svg-path! cs ops round-unit (fn [v] (round-unit (- svg-view v))))) + form)) + +(defn draw-imagex + "Draws an already-embedded PDImageXObject into the box at [`x` `y`] sized + `width` x `height`, all in INCHES, with `y` measured from the page TOP. The + image keeps its aspect ratio (see `fit`) and is centred in whichever + dimension it falls short of." + [c-stream img x y width height] + (let [[scaled-height scaled-width] (fit [height width] [(.getHeight img) (.getWidth img)])] + (.drawImage + c-stream + img + (in->pt (+ x (if (< scaled-width width) + (/ (- width scaled-width) 2) + 0))) + (pt-from-top 72 (+ height y (if (< scaled-height height) + (/ (- scaled-height height) 2) + 0))) + (in->pt scaled-width) + (in->pt scaled-height)))) + +(defn draw-imagex-alpha + "draw-imagex at a reduced constant opacity (0.0-1.0). Used for the faded + grayscale card icons: a black `-bw` icon drawn at ~40% reads as a light + backdrop the black label sits over. Isolated in a save/restore so the alpha + doesn't leak into later drawing." + [cs img x y width height alpha] + (let [gs (doto (PDExtendedGraphicsState.) + (.setNonStrokingAlphaConstant (float alpha)))] + (.saveGraphicsState cs) + (.setGraphicsStateParameters cs gs) + (draw-imagex cs img x y width height) + (.restoreGraphicsState cs))) + +(def icon-red + "The red the card icons were baked at, as [r g b alpha]. The PNGs carry #910000 + at half opacity; filling the vector with the same two values composites + identically over whatever is beneath it." + [0.5686 0.0 0.0 0.5]) + +(defn draw-svg-icon! + "Draws a named icon into a `size`-inch box, filled in `color` at `alpha`. `y` is + inches from the page TOP to the box's top edge, as in draw-imagex (whose PDF + arithmetic makes it look otherwise). The icon is the document's shared form, placed + by a transform; colour and alpha sit in a save/restore so they reach the form but + not the label drawn over it. Without a vendored SVG it falls back to the PNG of the + same name, which ignores `color`." + [cs img icon-name x y size [r g b] alpha] + (if (io/resource (str "public/image/" icon-name ".svg")) + ;; The form is a svg-view-unit square; this maps that square onto `size` inches. + (let [unit (float (/ (* 72 size) svg-view))] + (.saveGraphicsState cs) + (when (< alpha 1) + (.setGraphicsStateParameters + cs (doto (PDExtendedGraphicsState.) + (.setNonStrokingAlphaConstant (float alpha))))) + (.setNonStrokingColor cs (float r) (float g) (float b)) + (.transform cs (Matrix. unit 0 0 unit + (float (* 72 x)) (float (* 72 (- 11 y size))))) + (.drawForm cs (img (str "public/image/" icon-name ".svg"))) + (.restoreGraphicsState cs)) + (draw-imagex-alpha cs (img (str "public/image/" icon-name ".png")) + x y size size alpha))) + +(defn draw-svg-path! + "Fills `ops` straight into a `size`-inch box whose top-left is (x, y) on the + page, scaling from a `view` square viewBox and flipping SVG's downward y. + GOTCHA: writes the whole path into the page's content stream every call; + anything drawn more than once should go through the image loader instead." + [cs ops x y size view] + (emit-svg-path! cs ops + (fn [v] (in->pt (+ x (* size (/ v view))))) + (fn [v] (pt-from-top 72 (+ y (* size (/ v view))))))) + +(defn make-image-loader + "Returns a memoized (resource-path -> XObject) embedder scoped to ONE document: + a PDImageXObject for a raster path, a form (see svg-form) for a `.svg` one. + Each distinct resource is embedded once and referenced thereafter, so repeated + icons and logos are neither re-decoded nor duplicated in the file." + [doc] + (memoize + (fn [resource-path] + (if (s/ends-with? resource-path ".svg") + (svg-form doc (svg-path-ops (last-svg-path (slurp (io/resource resource-path))))) + (with-open [in (io/input-stream (io/resource resource-path))] + (LosslessFactory/createFromImage doc (ImageIO/read in))))))) diff --git a/src/clj/orcpub/routes.clj b/src/clj/orcpub/routes.clj index 06f278592..61b78e3fe 100644 --- a/src/clj/orcpub/routes.clj +++ b/src/clj/orcpub/routes.clj @@ -1520,7 +1520,7 @@ book (when (seq spells-known) (spellbook-options spellbook character-name)) spell-order (one-of #{:level :alpha} spell-order :level) fonts (when (or spell-cards? item-cards? book) (draw/load-fonts doc)) - img (when (or spell-cards? item-cards? book) (pdf/make-image-loader doc))] + img (when (or spell-cards? item-cards? book) (draw/make-image-loader doc))] ;; Order: sheet, spellbook, then cards. (when book (add-spellbook! doc fonts img book spells-known custom-spells)) diff --git a/src/clj/orcpub/spellbook.clj b/src/clj/orcpub/spellbook.clj index b83ecaec9..1f63f1e6f 100644 --- a/src/clj/orcpub/spellbook.clj +++ b/src/clj/orcpub/spellbook.clj @@ -204,7 +204,7 @@ whose units are `unit` points each." [cs d x ty unit lw & [fill?]] (.setLineWidth cs (float lw)) - (doseq [op (pdf/svg-path-ops d) + (doseq [op (draw/svg-path-ops d) :let [px #(float (+ x (* unit %))) pyy #(py (+ ty (* unit %)))]] (case (first op) @@ -305,7 +305,7 @@ (line! cs (first (polar cx cy (* 11.2 s) a)) (second (polar cx cy (* 11.2 s) a)) (first (polar cx cy reach a)) (second (polar cx cy reach a)) (* 0.9 s))))) (let [icon-size (* size 0.5)] - (pdf/draw-svg-icon! cs img (str "emblems/" icon) + (draw/draw-svg-icon! cs img (str "emblems/" icon) (/ (- cx (/ icon-size 2)) 72.0) (/ (- cy (/ icon-size 2)) 72.0) (/ icon-size 72.0) [ink ink ink] 1.0)))) diff --git a/test/clj/orcpub/card_export_test.clj b/test/clj/orcpub/card_export_test.clj index e5efb636b..ace803120 100644 --- a/test/clj/orcpub/card_export_test.clj +++ b/test/clj/orcpub/card_export_test.clj @@ -64,7 +64,7 @@ (let [out (ByteArrayOutputStream.)] (with-open [doc (PDDocument.)] (let [fonts (draw/load-fonts doc) - img (pdf/make-image-loader doc) + img (draw/make-image-loader doc) spells-known {:wizard (vec (for [k (take 12 (keys spells/spell-map))] {:key k :class "Wizard"}))}] (when (kinds :spells) @@ -138,7 +138,7 @@ out (ByteArrayOutputStream.)] (with-open [doc (PDDocument.)] (let [fonts (draw/load-fonts doc) - img (pdf/make-image-loader doc)] + img (draw/make-image-loader doc)] (routes/add-spell-cards! doc fonts img spells-known {"Wizard" 15} {"Wizard" 7} customs false card-back-logo false false)) (.save doc out)) @@ -209,7 +209,7 @@ [items] (let [out (ByteArrayOutputStream.)] (with-open [doc (PDDocument.)] - (routes/add-magic-item-cards! doc (draw/load-fonts doc) (pdf/make-image-loader doc) + (routes/add-magic-item-cards! doc (draw/load-fonts doc) (draw/make-image-loader doc) (vec items) card-back-logo false false) (.save doc out)) (with-open [doc (Loader/loadPDF (.toByteArray out))] diff --git a/test/clj/orcpub/card_geometry_test.clj b/test/clj/orcpub/card_geometry_test.clj index f8e5c6292..278568ca3 100644 --- a/test/clj/orcpub/card_geometry_test.clj +++ b/test/clj/orcpub/card_geometry_test.clj @@ -42,7 +42,7 @@ (let [out (ByteArrayOutputStream.)] (with-open [doc (PDDocument.)] (let [fonts (draw/load-fonts doc) - img (pdf/make-image-loader doc) + img (draw/make-image-loader doc) known {:wizard (vec (for [k (take 12 (keys spells/spell-map))] {:key k :class "Wizard"}))}] (doseq [[_ bw? faded?] print-modes] @@ -107,7 +107,7 @@ out (ByteArrayOutputStream.)] (with-open [doc (PDDocument.)] (let [fonts (draw/load-fonts doc) - img (pdf/make-image-loader doc)] + img (draw/make-image-loader doc)] (doseq [family pdf/card-flourishes [_ bw? faded?] print-modes] (let [page (PDPage.)] diff --git a/test/clj/orcpub/pdf_test.clj b/test/clj/orcpub/pdf_test.clj index 7bffc9a73..d6aa133bd 100644 --- a/test/clj/orcpub/pdf_test.clj +++ b/test/clj/orcpub/pdf_test.clj @@ -74,7 +74,7 @@ (testing "the per-document loader memoizes: the same icon path returns the SAME embedded image object (embedded/decoded once, referenced thereafter)" (with-open [doc (PDDocument.)] - (let [img (pdf/make-image-loader doc) + (let [img (draw/make-image-loader doc) a (img "public/image/shiny-purse.png") b (img "public/image/shiny-purse.png")] (is (identical? a b) "same path -> same PDImageXObject, not a re-embed"))))) @@ -85,7 +85,7 @@ (with-open [doc (PDDocument.)] (.addPage doc (PDPage.)) (let [fonts (draw/load-fonts doc) - img (pdf/make-image-loader doc) + img (draw/make-image-loader doc) page (.getPage doc 0)] (with-open [cs (PDPageContentStream. doc page)] (let [spell [{:spell {:name "Bolt" :level 1 :school "evocation" @@ -108,7 +108,7 @@ (with-open [doc (PDDocument.)] (.addPage doc (PDPage.)) (let [fonts (draw/load-fonts doc) - img (pdf/make-image-loader doc) + img (draw/make-image-loader doc) page (.getPage doc 0) lines (vec (repeat 9 {:remaining-lines ["overflow line"] :spell-name "Bolt"}))] (with-open [cs (PDPageContentStream. doc page)] diff --git a/test/clj/orcpub/spellbook_geometry_test.clj b/test/clj/orcpub/spellbook_geometry_test.clj index 2efabe021..e172cea9f 100644 --- a/test/clj/orcpub/spellbook_geometry_test.clj +++ b/test/clj/orcpub/spellbook_geometry_test.clj @@ -55,7 +55,7 @@ (group-by :level)) out (ByteArrayOutputStream.)] (with-open [doc (PDDocument.)] - (sb/add-spellbook! doc (draw/load-fonts doc) (pdf/make-image-loader doc) + (sb/add-spellbook! doc (draw/load-fonts doc) (draw/make-image-loader doc) (merge base-opts opts) known spells/spell-map) (.save doc out)) (with-open [doc (Loader/loadPDF (.toByteArray out))] (ops/doc-fingerprints doc)))) diff --git a/test/clj/orcpub/spellbook_test.clj b/test/clj/orcpub/spellbook_test.clj index 96b19e6bf..5db6a6d9e 100644 --- a/test/clj/orcpub/spellbook_test.clj +++ b/test/clj/orcpub/spellbook_test.clj @@ -85,7 +85,7 @@ (deftest pact-slots-serve-every-level (with-open [doc (PDDocument.)] - (let [us (sb/units (draw/load-fonts doc) (pdf/make-image-loader doc) + (let [us (sb/units (draw/load-fonts doc) (draw/make-image-loader doc) {:classes [{:class "Warlock" :class-kw :warlock :level 5 :pact? true :icon "warlock-eye"}] :slots {} :pact-slots {3 2} :layout :book :order :level :tabs :head} {:all [{:key (common/name-to-kw "Charm Person") :class "Warlock"} @@ -100,7 +100,7 @@ (deftest the-slot-pool-wraps (with-open [doc (PDDocument.)] - (let [pool #(first (sb/units (draw/load-fonts doc) (pdf/make-image-loader doc) + (let [pool #(first (sb/units (draw/load-fonts doc) (draw/make-image-loader doc) {:classes [{:class "Wizard" :class-kw :wizard :level 20 :icon "spell-book"}] :slots % :pact-slots {} :layout :prep :order :level :tabs :head} {:all [{:key (common/name-to-kw "Shield") :class "Wizard"}]} @@ -157,7 +157,7 @@ (group-by :level)) out (ByteArrayOutputStream.)] (with-open [doc (PDDocument.)] - (let [n (sb/add-spellbook! doc (draw/load-fonts doc) (pdf/make-image-loader doc) + (let [n (sb/add-spellbook! doc (draw/load-fonts doc) (draw/make-image-loader doc) (merge {:classes [{:class "Cleric" :class-kw :cleric :level 5 :ability "Wisdom" :dc 15 :attack "+7" :icon "holy-symbol"} {:class "Wizard" :class-kw :wizard :level 6 :ability "Intelligence" diff --git a/test/clj/orcpub/svg_path_test.clj b/test/clj/orcpub/svg_path_test.clj index 927c71f83..e3a3c4aa2 100644 --- a/test/clj/orcpub/svg_path_test.clj +++ b/test/clj/orcpub/svg_path_test.clj @@ -3,7 +3,8 @@ ;; explicit :refer to avoid namespace pollution from :refer :all (:require [clojure.test :refer [deftest is testing]] [clojure.java.io :as io] - [orcpub.pdf :as pdf])) + [orcpub.pdf :as pdf] + [orcpub.pdf.draw :as draw])) (defn- close-to? "Path arithmetic is floating point; compare shapes, not bit patterns." @@ -18,28 +19,28 @@ (deftest absolute-and-relative-agree (testing "the same shape written either way parses to the same points" - (is (close-to? (pdf/svg-path-ops "M10 10 L30 10 L30 30 Z") - (pdf/svg-path-ops "m10 10 l20 0 l0 20 z"))))) + (is (close-to? (draw/svg-path-ops "M10 10 L30 10 L30 30 Z") + (draw/svg-path-ops "m10 10 l20 0 l0 20 z"))))) (deftest coordinate-pairs-after-a-move-are-implicit-lines (testing "M with three pairs is a move and two lines, not three moves" (is (close-to? [[:move 1.0 2.0] [:line 3.0 4.0] [:line 5.0 6.0]] - (pdf/svg-path-ops "M1 2 3 4 5 6")))) + (draw/svg-path-ops "M1 2 3 4 5 6")))) (testing "and a relative m continues as relative l" (is (close-to? [[:move 1.0 1.0] [:line 3.0 3.0] [:line 6.0 6.0]] - (pdf/svg-path-ops "m1 1 2 2 3 3"))))) + (draw/svg-path-ops "m1 1 2 2 3 3"))))) (deftest horizontal-and-vertical-hold-the-other-axis (is (close-to? [[:move 5.0 5.0] [:line 20.0 5.0] [:line 20.0 30.0]] - (pdf/svg-path-ops "M5 5 H20 V30"))) + (draw/svg-path-ops "M5 5 H20 V30"))) (is (close-to? [[:move 5.0 5.0] [:line 25.0 5.0] [:line 25.0 15.0]] - (pdf/svg-path-ops "M5 5 h20 v10")))) + (draw/svg-path-ops "M5 5 h20 v10")))) (deftest close-returns-to-the-subpath-start (testing "a relative command after Z is relative to where the subpath began, not to the last point drawn" (is (close-to? [[:move 10.0 10.0] [:line 20.0 20.0] [:close] [:line 15.0 15.0]] - (pdf/svg-path-ops "M10 10 L20 20 Z l5 5"))))) + (draw/svg-path-ops "M10 10 L20 20 Z l5 5"))))) (deftest smooth-curves-reflect-the-previous-control-point (testing "S takes its first control point by mirroring C's second through the @@ -47,28 +48,28 @@ (is (close-to? [[:move 0.0 0.0] [:curve 10.0 10.0 20.0 0.0 30.0 0.0] [:curve 40.0 0.0 50.0 10.0 60.0 0.0]] - (pdf/svg-path-ops "M0 0 C10 10 20 0 30 0 S50 10 60 0")))) + (draw/svg-path-ops "M0 0 C10 10 20 0 30 0 S50 10 60 0")))) (testing "with no curve to reflect, the control point is the current point" (is (close-to? [[:move 0.0 0.0] [:curve 0.0 0.0 10.0 10.0 20.0 0.0]] - (pdf/svg-path-ops "M0 0 S10 10 20 0"))))) + (draw/svg-path-ops "M0 0 S10 10 20 0"))))) (deftest quadratics-are-raised-to-cubics (testing "PDF has no quadratic operator, so Q becomes the equivalent C" (is (close-to? [[:move 0.0 0.0] [:curve (/ 20.0 3) 0.0 10.0 (/ 10.0 3) 10.0 10.0]] - (pdf/svg-path-ops "M0 0 Q10 0 10 10"))))) + (draw/svg-path-ops "M0 0 Q10 0 10 10"))))) (deftest number-forms-the-glyphs-actually-use (testing "a negative number needs no separator before it" (is (close-to? [[:move 10.0 -20.0] [:line 5.0 -1.0]] - (pdf/svg-path-ops "M10-20L5-1")))) + (draw/svg-path-ops "M10-20L5-1")))) (testing "a leading-dot decimal, and two of them run together" - (is (close-to? [[:move 0.5 0.25]] (pdf/svg-path-ops "M.5.25")))) + (is (close-to? [[:move 0.5 0.25]] (draw/svg-path-ops "M.5.25")))) (testing "exponent notation" - (is (close-to? [[:move 1.5 0.002]] (pdf/svg-path-ops "M1.5 2e-3"))))) + (is (close-to? [[:move 1.5 0.002]] (draw/svg-path-ops "M1.5 2e-3"))))) (deftest arcs-are-sampled-rather-than-dropped - (let [ops (pdf/svg-path-ops "M100 100 A50 50 0 0 1 200 100")] + (let [ops (draw/svg-path-ops "M100 100 A50 50 0 0 1 200 100")] (testing "an A produces a run of points, not nothing" (is (> (count ops) 5))) (testing "that ends where the arc was told to end" @@ -80,25 +81,25 @@ (testing "game-icons wraps each glyph in a transparent square; filling that instead would print a solid black box" (is (= "M9 9h4v4H9z" - (pdf/last-svg-path + (draw/last-svg-path (str "" ""))))) (testing "single-quoted attributes too -- the black/ icons were saved that way" (is (= "M9 9h4v4H9z" - (pdf/last-svg-path + (draw/last-svg-path (str "" ""))))) (testing "a file with no path at all is nil rather than an exception" - (is (nil? (pdf/last-svg-path ""))))) + (is (nil? (draw/last-svg-path ""))))) (deftest a-missing-icon-is-nil-not-a-throw - (is (nil? (pdf/load-svg-icon "no-such-icon-exists")))) + (is (nil? (draw/load-svg-icon "no-such-icon-exists")))) (deftest the-card-icons-parse (doseq [icon ["magic-swirl" "arrow-dunk" "shiny-purse" "sands-of-time" "clockwise-rotation"]] (testing (str icon " is vendored as an SVG and yields a drawable path") - (let [ops (pdf/load-svg-icon icon)] + (let [ops (draw/load-svg-icon icon)] (is (seq ops) "the spell cards fall back to a 32px raster without it") (is (= :move (ffirst ops)) "a path has to open with a move"))))) @@ -107,7 +108,7 @@ ;; does not cover, this fails on the file rather than in a silently blank card. (let [dir (io/file (io/resource "public/image")) svgs (filter #(.endsWith (.getName %) ".svg") (file-seq dir)) - broken (remove #(let [ops (some-> (slurp %) pdf/last-svg-path pdf/svg-path-ops)] + broken (remove #(let [ops (some-> (slurp %) draw/last-svg-path draw/svg-path-ops)] (and (seq ops) (= :move (ffirst ops)))) svgs)] (is (seq svgs) "the icons should be on the classpath") From d50b5e463b5b62525d59c9c809dd7ff66ba77fdb Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Fri, 16 Oct 2026 03:05:24 +0000 Subject: [PATCH 13/40] Cards out to orcpub.pdf.cards, and lint dev/ so this stops happening src/clj/orcpub/pdf/cards.clj, 755 lines: print-spells, print-backs, print-items, the frame and its ornaments, card-layout, the nine-up layout. pdf.clj 2,810 -> 2,056 and is now the AcroForm character sheet, image egress and the site line. I measured the seam before cutting rather than trusting the earlier note. With string literals and comments stripped so docstring prose does not count as a reference: the card region used 6 names from the sheet region, the sheet region used 0 from the card region. Zero back-references is what made this cheap. The 6 split three ways, by CONSUMER and not by where they sat: site-stamp, site-stamp-size -> draw the sheet, the cards and the spellbook all draw the site line draw-spell-field, -> cards card-only, and in the sheet region purely by site-stamp-strip, accident of file position draw-site-stamp! page-prints-site-line? -> stays only stamp-site-line! calls it, which is the sheet's own (routes.clj:1513) A first pass drew the cut one form too high and took stamp-site-line! with it. Two corrections fell out. It is the character sheet's, so the cut moved down 13 lines. And the scan reported the sheet region referencing it back, which was FALSE: the stripper works line by line and cannot see into a multi-line docstring, and sheet-masters' docstring names it in prose. A seam check that counts prose is not a seam check. inches-to-units is deleted, not moved. Its own docstring claimed draw-line-in and the grid code called it; both moved to draw and use in->pt. Zero callers anywhere. draw-spell-field is now defn-. The split is what made it visible: nothing outside this file ever called it. THE PART WORTH READING: I shipped five un-loadable dev/ scripts b8d2b463 and 9d0a0710 left dev/compare_item_cards, measure_item_card, scan_site_line, stress_spell_sheets and svg_icon_proof each +1 paren unbalanced. A rewriter inserted (require '[orcpub.pdf.draw :as draw] as a NEW form where a continuation line was needed '[orcpub.pdf.draw :as draw] orphaning the opening paren of the require above it. Both commits reported "714/5413 green, lint 0 warnings" and both reports were true and worthless: lein lint linted src test web, and lein test does not load dev/. Five files were broken for two commits with nothing looking at them. dev is now in the lint path. I checked that this would have caught it instead of assuming: re-linted the broken version, and clj-kondo calls it an error -- "Expected a ) to match ( from line 19", errors: 5 -- and the task runs --fail-level error, so the build would have failed. dev/ also contributes ~41 warnings of its own idiom (the scripts load-file each other, so re-requiring and re-defing is how they work) which --fail-level error ignores. Tried suppressing those with :config-in-ns {user ...} and reverted it: the scripts have no ns form, so kondo does not resolve them to `user` and it caught 3 of the 41. A config that half-works is worse than none. Also: a note I wrote claiming 29 lines of pdf.clj still flip against a literal 11. Measured: zero. All 31 went with the cards, and that is a relocation, not a fix -- draw/pt-from-top takes a page key and nothing passes one, so A4 and A5 still wait on threading it through those 31 sites. They are at least all in one file now. Verified, not asserted: lein test 714 tests / 5413 assertions, 0 failures 0 errors lein lint 0 errors (41 warnings, all dev/ idiom) card, ornament and spellbook geometry baselines all UNCHANGED - 57 pinned pages dev/measure_item_card.clj and dev/svg_icon_proof.clj RUN, not just lint: the first draws a card and reports its layout table, gaps under 0.06in: 0 --- dev/compare_item_cards.clj | 10 +- dev/measure_item_card.clj | 18 +- dev/scan_site_line.clj | 4 +- dev/stress_spell_sheets.clj | 2 +- dev/svg_icon_proof.clj | 1 - project.clj | 9 +- src/clj/orcpub/pdf.clj | 780 +--------------------- src/clj/orcpub/pdf/cards.clj | 755 +++++++++++++++++++++ src/clj/orcpub/pdf/draw.clj | 9 + src/clj/orcpub/routes.clj | 15 +- src/clj/orcpub/spellbook.clj | 4 +- test/clj/orcpub/card_export_test.clj | 9 +- test/clj/orcpub/card_geometry_test.clj | 14 +- test/clj/orcpub/magic_item_cards_test.clj | 58 +- test/clj/orcpub/pdf_test.clj | 17 +- 15 files changed, 861 insertions(+), 844 deletions(-) create mode 100644 src/clj/orcpub/pdf/cards.clj diff --git a/dev/compare_item_cards.clj b/dev/compare_item_cards.clj index 49cedaa6a..a7e991159 100644 --- a/dev/compare_item_cards.clj +++ b/dev/compare_item_cards.clj @@ -7,8 +7,8 @@ ;; PDFBox's renderer cannot rasterise the embedded faces -- open the result in a ;; browser, not with PDFRenderer, or every card looks like an encoding bug. -(require '[orcpub.pdf :as pdf] -(require '[orcpub.pdf.draw :as draw] '[orcpub.dnd.e5.magic-items :as mi]) +(require '[orcpub.pdf.draw :as draw] '[orcpub.pdf.cards :as cards] + '[orcpub.dnd.e5.magic-items :as mi]) (import '[org.apache.pdfbox.pdmodel PDDocument PDPage PDPageContentStream] '[java.io File]) (def rarities [:common :uncommon :rare :very-rare :legendary]) @@ -29,14 +29,14 @@ (let [page (PDPage.)] (.addPage doc page) (with-open [cs (PDPageContentStream. doc page)] - (pdf/print-items cs doc fonts img 2.5 3.5 items 0 false false opts)))) + (cards/print-items cs doc fonts img 2.5 3.5 items 0 false false opts)))) (let [doc (PDDocument.) fonts (draw/load-fonts doc) img (draw/make-image-loader doc) ladder (mapv sample rarities)] ;; One page per family: the five ranks side by side. - (doseq [family pdf/card-flourishes] + (doseq [family cards/card-flourishes] (page! doc fonts img ladder {:flourish family})) ;; Name treatments, all on the winning-ish frame. (doseq [[face size track] [[:bold 12 0.15] [:bold 13.5 0.3] @@ -45,4 +45,4 @@ {:flourish :diamonds :name-face face :name-size size :name-tracking track})) (.save doc (File. (or (System/getenv "OUT") "target/item-card-styles.pdf"))) (.close doc) - (println "families:" (pr-str pdf/card-flourishes) "pages:" (+ (count pdf/card-flourishes) 4))) + (println "families:" (pr-str cards/card-flourishes) "pages:" (+ (count cards/card-flourishes) 4))) diff --git a/dev/measure_item_card.clj b/dev/measure_item_card.clj index 152224418..310a81000 100644 --- a/dev/measure_item_card.clj +++ b/dev/measure_item_card.clj @@ -13,8 +13,8 @@ ;; PDFBox's renderer cannot rasterise the embedded faces -- open the PDF in a ;; browser, or every card will look like a text encoding bug. -(require '[orcpub.pdf :as pdf] -(require '[orcpub.pdf.draw :as draw] '[clojure.string :as str]) +(require '[orcpub.pdf.draw :as draw] '[orcpub.pdf.cards :as cards] + '[clojure.string :as str]) (import '[org.apache.pdfbox.pdmodel PDDocument PDPage PDPageContentStream] '[java.io File]) (def MIN-GAP @@ -99,13 +99,13 @@ (.addPage doc page) (let [fonts (draw/load-fonts doc) img (draw/make-image-loader doc)] (with-open [cs (PDPageContentStream. doc page)] - (pdf/print-items cs doc fonts img 2.5 3.5 [torture torture torture] 0 false false nil))) + (cards/print-items cs doc fonts img 2.5 3.5 [torture torture torture] 0 false false nil))) (.save doc (File. (or (System/getenv "OUT") "target/item-card-torture.pdf"))) (.close doc)) -(println "charges parsed:" (pdf/item-charges (:orcpub.dnd.e5.magic-items/description torture))) -(println "subtitle :" (pdf/magic-item-subtitle torture)) -(println "clause :" (pdf/attunement-phrase +(println "charges parsed:" (cards/item-charges (:orcpub.dnd.e5.magic-items/description torture))) +(println "subtitle :" (cards/magic-item-subtitle torture)) +(println "clause :" (cards/attunement-phrase (:orcpub.dnd.e5.magic-items/attunement torture) nil)) (println) ;; The name shrinks to fit two lines, so ask the renderer what size it settled on @@ -114,8 +114,8 @@ fonts (draw/load-fonts doc) width (- 2.5 0.56) lines-at (fn [pt] (count (#'draw/split-lines (:name torture) (:bold fonts) pt width))) - floor (get-in pdf/card-layout [:down :name-floor]) - height (get-in pdf/card-layout [:down :name-height]) + floor (get-in cards/card-layout [:down :name-floor]) + height (get-in cards/card-layout [:down :name-height]) fits? (fn [pt] (let [n (lines-at pt)] (and (<= n 3) (<= (* n (/ (* pt 1.1) 72)) height)))) size (or (first (filter fits? (take-while #(>= % floor) (iterate #(- % 0.5) 13)))) @@ -126,5 +126,5 @@ capacity (int (dec (/ (* 72 (- 3.5 1.74 0.80)) (* 8 1.1))))] (printf "name set at %.2fpt over %d lines; description %d lines, %d fit%n%n" (double size) (lines-at size) body-lines capacity) - (report (elements pdf/card-layout 3.5 size (lines-at size) (min body-lines capacity))) + (report (elements cards/card-layout 3.5 size (lines-at size) (min body-lines capacity))) (.close doc)) diff --git a/dev/scan_site_line.clj b/dev/scan_site_line.clj index fcba4ac04..697e47485 100644 --- a/dev/scan_site_line.clj +++ b/dev/scan_site_line.clj @@ -17,7 +17,7 @@ ;; Pages a style prints its own footer on are skipped, the same as at export. (require '[orcpub.pdf :as pdf] -(require '[orcpub.pdf.draw :as draw] + '[orcpub.pdf.draw :as draw] '[clojure.java.io :as io]) (import '[org.apache.pdfbox Loader] '[org.apache.pdfbox.rendering PDFRenderer] @@ -25,7 +25,7 @@ '[java.io ByteArrayOutputStream]) (def dpi 150.0) -(def stamp-width (draw/string-width pdf/site-stamp draw/HELVETICA 6)) +(def stamp-width (draw/string-width draw/site-stamp draw/HELVETICA 6)) (def stamp-height "6pt of cap height plus room for a descender, in inches." (/ 8.0 72)) diff --git a/dev/stress_spell_sheets.clj b/dev/stress_spell_sheets.clj index 6ce3baec7..850be0869 100644 --- a/dev/stress_spell_sheets.clj +++ b/dev/stress_spell_sheets.clj @@ -15,7 +15,7 @@ ;; annotation column has to live in. (require '[orcpub.pdf :as pdf] -(require '[orcpub.pdf.draw :as draw] + '[orcpub.pdf.draw :as draw] '[orcpub.dnd.e5.spells :as spells] '[clojure.java.io :as io] '[clojure.string :as st]) diff --git a/dev/svg_icon_proof.clj b/dev/svg_icon_proof.clj index 6afc45faf..178a685b8 100644 --- a/dev/svg_icon_proof.clj +++ b/dev/svg_icon_proof.clj @@ -11,7 +11,6 @@ ;; The rasters are no longer what the cards draw. The comparison is kept because ;; it is the check to repeat whenever an icon or the parser changes. -(require '[orcpub.pdf :as pdf] (require '[orcpub.pdf.draw :as draw] '[clojure.string :as str] '[clojure.java.io :as io]) (import '[org.apache.pdfbox.pdmodel PDDocument PDPage PDPageContentStream] '[org.apache.pdfbox.pdmodel.font PDType1Font Standard14Fonts$FontName] diff --git a/project.clj b/project.clj index 2ec591250..13736ac35 100644 --- a/project.clj +++ b/project.clj @@ -219,7 +219,14 @@ ;; trampoline re-execs in a fresh JVM so System/exit propagates ;; (without it, lein suppresses the exit code). ;; native/ is excluded — directory only exists for React Native builds. - "lint" ["trampoline" "with-profile" "lint" "run" "-m" "clj-kondo.main" "--lint" "src" "test" "web" "--fail-level" "error"] + ;; dev/ is linted for its ERRORS. It contributes ~41 warnings that are the + ;; scripts' own idiom -- they load-file each other, so re-requiring and + ;; re-defining is normal -- and --fail-level error ignores those. Not silenced + ;; via :config-in-ns: the scripts have no ns form, so kondo does not resolve + ;; them to `user` and the suppression only caught 3 of the 41. + ;; Added because this refactor shipped an unbalanced paren in 5 dev scripts + ;; across 2 commits, unseen: kondo calls it an error, and dev/ was unlinted. + "lint" ["trampoline" "with-profile" "lint" "run" "-m" "clj-kondo.main" "--lint" "src" "test" "web" "dev" "--fail-level" "error"] "prod-build" ^{:doc "Recompile code with prod profile."} ["externs" ["run" "-m" "figwheel.main" "--" "--build-once" "prod"]]} diff --git a/src/clj/orcpub/pdf.clj b/src/clj/orcpub/pdf.clj index c40d7b0e4..2dcf93dc6 100644 --- a/src/clj/orcpub/pdf.clj +++ b/src/clj/orcpub/pdf.clj @@ -1,6 +1,6 @@ (ns orcpub.pdf - "Fills the AcroForm character sheet templates in resources/, and draws spell - cards and monster stat blocks. + "Fills the AcroForm character sheet templates in resources/. Cards live in + orcpub.pdf.cards, shared drawing in orcpub.pdf.draw. Text fields auto-size (`/Helv 0 Tf`): PDFBox shrinks text to 4pt, then clips; `fit-text` splits text at `min-font-size` instead. Fields sharing a name share @@ -41,23 +41,21 @@ (java.awt.image BufferedImage) (java.net URL))) -;; THE ACTUAL API: 76 public fns and 16 public defs, against 59 private fns and 29 private -;; defs. Only 28 names are called from outside this file. - -;; 21 by routes.clj (export entry points, spell-page and image helpers), 6 by spellbook.clj -;; (split-lines, string-width, draw-svg-icon!, normalize-text, svg-path-ops, site-stamp), -;; and report-image-egress! by system.clj. The abbreviators went to spell-print, the shape -;; paths and bezier-k to pdf.canvas. +;; THE ACTUAL API: 46 public fns and 8 public defs, against 39 private fns and 22 private +;; defs. Production calls 16 of them from outside: 15 in routes.clj (export entry points, +;; spell-page and image helpers) and report-image-egress! in system.clj. spellbook.clj no +;; longer calls anything here -- it goes to pdf.draw. ;; safe-image-url? and safe-image-bytes are named in routes.clj comments only; their real ;; external consumers are the tests. -;; The rest are public by `defn` default, not by design. dev/ scripts reach deeper, but -;; that is tooling, not a contract to preserve. +;; The rest are public by `defn` default, not by design. Tests reach 46 names and dev/ +;; scripts 25, but that is tooling, not a contract to preserve. ;; UNITS: this file is INCHES and converts at the drawing call; spellbook.clj is POINTS. -;; Images take y from the page TOP (via in-to-coord-y), text from the BOTTOM -- card -;; code flips by hand, `(- 11.0 y 0.08)`, at every text call. +;; Images take y from the page TOP (via in-to-coord-y), text from the BOTTOM. All 31 of the +;; hand-written `(- 11 y ...)` flips left with the cards; in-to-coord-y is the one left here +;; and it reads its page height from draw/page-size. ;; Pageless widgets came with the templates; dev/prepare_templates.clj has removed them ;; from resources/. Only add-missing-spell-pages! prunes at export time, before it @@ -1652,62 +1650,6 @@ (recur (or tail "") (inc n))))))) trimmed)) -(defn inches-to-units - "The third name for `draw/in->pt`, after `in-to-sz` 900 lines above. Kept because - `draw-line-in` and the grid code call it; new code should use `draw/in->pt`." - [inches] - (draw/in->pt inches)) - -(defn draw-spell-field - "One icon-and-value field on a spell card (casting time, range, duration, - components): the `title` icon at [`x` `y`] with `value` printed over it. - Inches, `y` from the page TOP. `img` is the document's memoized image loader, and - both printer-friendly modes are handled here (see the note below)." - [cs img title value x y bw? bw-faded?] - ;; The label overprints the icon; this is the one choke point for all four - ;; per-spell icons. Colour: icon-red icon, black text. B&W solid: black icon, - ;; WHITE-HALO text. B&W faded: black icon at 40%, black text. One SVG serves all. - (let [iy (- 11 y 0.12) - [color alpha] (cond (and bw? bw-faded?) [[0 0 0] 0.4] - bw? [[0 0 0] 1.0] - :else [(vec (take 3 draw/icon-red)) (last draw/icon-red)])] - (draw/draw-svg-icon! cs img title x iy 0.25 color alpha) - (if (and bw? (not bw-faded?)) - (draw/draw-halo-text cs value draw/HELVETICA_BOLD_OBLIQUE 8 x (- y 0.07)) - (do (.setNonStrokingColor cs (float 0) (float 0) (float 0)) - (draw/draw-text cs value draw/HELVETICA_BOLD_OBLIQUE 8 x (- y 0.07)) - (.setNonStrokingColor cs (float 0) (float 0) (float 0)))))) - -(def site-stamp - "The site line printed on card backs." - "dungeonmastersvault.com") - -(def ^:private site-stamp-size 6) - -(def ^:private site-stamp-strip - "Inches reserved at the foot of a card for the site line. - - Sized so the last line of overflow text clears the stamp by about an eighth of - an inch. draw-lines-to-box takes `(dec (/ (* 72 height) leading))` lines, and - `take` given a fraction rounds UP -- a box shortened by 0.22 computed 24.2 and - laid down 25 lines, whose descenders sat on the stamp." - 0.35) - -(defn- draw-site-stamp! - "Centres the site line, in grey even in B&W mode, just above a card's bottom - edge. `x` and `y` are the card's top-left in inches, y from the page TOP; this - flips it to draw-text's baseline from the page BOTTOM." - [cs fonts x y box-width box-height] - (let [font (:plain fonts) - width (draw/string-width site-stamp font site-stamp-size)] - (draw/draw-text cs - site-stamp - font - site-stamp-size - (+ x (/ (- box-width width) 2)) - (- 11.0 y (- box-height 0.16)) - [0.45 0.45 0.45]))) - (defn- page-prints-site-line? "Whether `index` already shows the site name in its own artwork. @@ -1718,7 +1660,7 @@ (let [stripper (doto (PDFTextStripper.) (.setStartPage (inc index)) (.setEndPage (inc index)))] - (s/includes? (s/replace (.getText stripper doc) #"\s+" " ") site-stamp))) + (s/includes? (s/replace (.getText stripper doc) #"\s+" " ") draw/site-stamp))) (def annotation-zone "Points reserved at the right of a spell row for its annotation columns. @@ -2111,700 +2053,4 @@ :when (not (and prints-own? (page-prints-site-line? doc index)))] (with-open [cs (PDPageContentStream. doc page PDPageContentStream$AppendMode/APPEND true true)] - (draw/draw-text cs site-stamp draw/HELVETICA site-stamp-size x y [0.45 0.45 0.45])))) - -(defn print-backs - "Draws one page of spell card BACKS, mirroring the fronts for duplex printing. - `remaining-lines-vec` is indexed by the card position `print-spells` used, each - entry `{:remaining-lines :spell-name}` from that call; a card with no overflow - gets only its name and the site stamp. `logo-img` opts a card into the logo. - Inches. See the `draw-grid` call below for a latent sizing bug." - [cs fonts img box-width box-height remaining-lines-vec page-number logo-img] - ;; `img` is the memoized per-document image loader; `logo?` opts each card back - ;; into showing the card logo (matching the fronts) for double-sided printing. - ;; When logo? is false NO images are loaded here — the old code decoded+embedded - ;; the logo/rotation PNGs every page and never drew them (pure waste). - (let [num-boxes-x (int (/ 8.5 box-width)) - num-boxes-y (int (/ 11.0 box-height)) - total-height (* num-boxes-y box-height) - remaining-width (- 8.5 (* num-boxes-x box-width)) - margin-x (/ remaining-width 2) - remaining-height (- 11.0 total-height) - margin-y (/ remaining-height 2)] - ;; BUG: box-width/box-height size the cells and the text boxes, but the gridlines - ;; come from these literals. Latent -- every caller passes 2.5/3.5 -- but any other - ;; box size draws the lines in the wrong places. Same in print-spells; print-items - ;; threads its arguments through correctly. - (draw/draw-grid cs 2.5 3.5) - (draw/draw-text cs - (str "Page " (inc page-number) " (reverse)") - (:italic fonts) - 8 - 0.12 - (- 11 0.15)) - (doall - (for [i (range num-boxes-x) - j (range num-boxes-y)] - (let [x (+ margin-x (* box-width i)) - y (+ margin-y (* box-height j)) - spell-index (+ i (* j num-boxes-x)) - {:keys [remaining-lines spell-name]} (remaining-lines-vec spell-index)] - (if (seq remaining-lines) - ;; This card back carries overflow text from the front. - (do - (draw/draw-text-to-box cs - spell-name - (:bold fonts) - 10 - (+ x 0.12) - (- 11.0 y 0.08) - (- box-width 0.3) - 0.25) - ;; The card's own box, less the strip the stamp sits in: - ;; draw-lines-to-box fills its height to the last line that fits, so - ;; overflow text prints over the stamp unless the room is taken away. - (draw/draw-lines-to-box cs - remaining-lines - (:plain fonts) - 8 - (+ x 0.12) - (- 11.0 y 0.24) - (- box-height 0.2 site-stamp-strip)) - (draw/draw-text-to-box cs - "(reverse)" - (:italic fonts) - 10 - (+ x 0.15 (draw/string-width spell-name (:bold fonts) 10)) - (- 11.0 y 0.08) - (- box-width 0.3) - (- box-height 0.2))) - ;; Blank back: a large, CENTERED logo (~80% of the card). logo-img is the - ;; caller's resource path (a hi-res grayscale or solid-black DMV mark, not - ;; the front's tiny card-logo.png), or nil when the logo is turned off. - (when logo-img - (draw/draw-imagex cs - (img logo-img) - (+ x (* box-width 0.1)) - (+ y (* box-height 0.1)) - (* box-width 0.8) - (* box-height 0.8)))) - ;; Every back, whichever branch drew it. The blank one leaves the bottom - ;; tenth of the card clear below the mark, and the overflow one reserves - ;; the same strip above. - (draw-site-stamp! cs fonts x y box-width box-height)))))) - -(defn print-spells - "Draws one page of spell card FRONTS and returns what did not fit, for - `print-backs`. `spells` is a seq of `{:class-nm :dc :attack-bonus :spell}`; cards - fill right to left within a row so a duplex flip lines the backs up. - `print-spell-card-dc-mod?` prints save DC and attack bonus; `bw?`/`bw-faded?` - select the printer-friendly renderings. Inches." - [cs document fonts img box-width box-height spells page-number print-spell-card-dc-mod? bw? bw-faded?] - (let [num-boxes-x (int (/ 8.5 box-width)) - num-boxes-y (int (/ 11.0 box-height)) - total-width (* num-boxes-x box-width) - total-height (* num-boxes-y box-height) - remaining-width (- 8.5 total-width) - margin-x (/ remaining-width 2) - remaining-height (- 11.0 total-height) - margin-y (/ remaining-height 2)] - ;; BUG: as in print-backs -- the gridlines ignore box-width/box-height. - (draw/draw-grid cs 2.5 3.5) - (draw/draw-text cs - (str "Page " (inc page-number)) - (:italic fonts) - 8 - 0.12 - (- 11 0.15)) - (doall - (for [j (range num-boxes-y) - i (range (dec num-boxes-x) -1 -1) - :let [spell-index (+ i (* j num-boxes-x))]] - (when-let [{:keys [class-nm dc attack-bonus spell] :as spell-data} - (get (vec spells) spell-index)] - (let [{:keys [description - casting-time - duration - level - ritual - range]} spell - x (+ margin-x (* box-width i)) - y (+ margin-y (* box-height j)) - - {:keys [page source description summary components]} spell - ;; Handle nil spell name gracefully - spell-name (or (:name spell) "(Unknown Spell)") - - dc-str (str "DC " dc) - remaining-desc-lines - (draw/draw-text-to-box cs - (or description - (if summary - (str summary - " (see " - (if source - (s/upper-case (name source)) - "PHB") - " " - page - " for more details)") - "")) - (:plain fonts) - 8 - (+ x 0.12) ; from the left - (- 11.0 y 1.08) ;from the top down - (- box-width 0.24) - (- box-height 1.13))] - (when (:material-component components) - (draw/draw-text-to-box cs - (str (s/capitalize (:material-component components))) - (:italic fonts) - 8 - (+ x 0.12) - (- 11.0 y 0.55) - (- box-width 0.24) - 0.5)) - (let [card-logo (img (str "public/image/card-logo" (when bw? "-bw") ".png"))] - (if (and bw? bw-faded?) - (draw/draw-imagex-alpha cs card-logo (+ x 1.9) (+ y 0.02) 1.0 0.25 0.4) - (draw/draw-imagex cs card-logo (+ x 1.9) (+ y 0.02) 1.0 0.25))) - (draw/draw-text-to-box cs - spell-name - (:bold fonts) - 10 - (+ x 0.12) - (- 11.0 y) - (- box-width 0.3) - 0.2) - (draw/draw-text-to-box cs - (if ritual " (ritual)" "") - (:italic fonts) - 10 - (+ x 0.12 (draw/string-width spell-name (:bold fonts) 10)) - (- 11.0 y) - (- box-width 0.3) - 0.2) - (draw/draw-text-to-box cs - (if (not= class-nm "Homebrew") - (str (sp/spell-school-level spell class-nm) (when print-spell-card-dc-mod? (str " " dc-str " Spell Mod " (common/bonus-str attack-bonus)))) - (sp/spell-school-level spell class-nm)) - (:italic fonts) - 8 - (+ x 0.12) - (- 11.0 y 0.19) - (- box-width 0.24) - 0.25) - (when casting-time - (draw-spell-field cs - img - "magic-swirl" - (str (sp/abbreviate-casting-time - (first - (s/split - casting-time - #",")))) - (+ x 0.12) - (- 11.0 y 0.45) - bw? bw-faded?)) - (when range - (draw-spell-field cs - img - "arrow-dunk" - (sp/abbreviate-range range) - (+ x 0.62) - (- 11.0 y 0.45) - bw? bw-faded?)) - (draw-spell-field cs - img - "shiny-purse" - (s/join - "," - (remove - nil? - (map - (fn [[k v]] - (when (-> spell :components k) - v)) - {:verbal "V" - :somatic "S" - :material "M"}))) - (+ x 1.12) - (- 11.0 y 0.45) - bw? bw-faded?) - (when duration - (draw-spell-field cs - img - "sands-of-time" - (sp/abbreviate-duration duration) - (+ x 1.62) - (- 11.0 y 0.45) - bw? bw-faded?)) - (when (seq remaining-desc-lines) - (draw/draw-svg-icon! cs img "clockwise-rotation" (+ x 2.3) (+ y 3.3) 0.15 - [0 0 0] (if (and bw? bw-faded?) 0.4 1.0))) - {:remaining-lines remaining-desc-lines - :spell-name spell-name})))))) - -(defn- card-pt - "A point `dx` right and `dy` DOWN from the top-left of the card at (x, y), in - PDF page units. Card coordinates run downward from the page top, page units run - up from the page bottom." - [x y dx dy] - [(float (* 72 (+ x dx))) (float (* 72 (- 11 (+ y dy))))]) - -(defn- card-mapper - "`draw/path!`'s `pt` for the card at (x, y): card-relative inches to page units." - [x y] - (fn [dx dy] (card-pt x y dx dy))) - -(defn- polyline! - "Strokes, and optionally closes, a path through card-relative points." - [cs x y points close?] - (draw/path! cs (card-mapper x y) points) - (if close? (.closeAndStroke cs) (.stroke cs))) - -(defn- diamond! - "A small diamond of radius `r` centred at (dx, dy) on the card. Filled ones mark - the item's rarity rank, outlined ones the ranks above it." - [cs x y dx dy r filled?] - (draw/path! cs (card-mapper x y) - [[dx (- dy r)] [(+ dx r) dy] [dx (+ dy r)] [(- dx r) dy]]) - (.closePath cs) - (if filled? (.fill cs) (.stroke cs))) - -(defn- circle! - "An outlined circle of radius `r` centred at (dx, dy) on the card." - [cs x y dx dy r] - (draw/circle-path! cs (card-mapper x y) dx dy r) - (.closeAndStroke cs)) - -(def ^:private rarity-rank - "How the rarities order, for the diamonds along the top edge. :varies has no - rank and draws none -- an item whose rarity depends on the table cannot be - ranked against one that does not." - {:common 1 :uncommon 2 :rare 3 :very-rare 4 :legendary 5}) - -(defn item-charges - "How many charges the item's description says it has, or nil. The data has no - charge count, so it is read off the prose; a die expression takes its maximum - (`1d8 + 1 charges` gives nine). Only \" charges\" matches, so the - Manuals and Tomes \"charged with magic\" get no tracker; over 99 is noise, nil." - [description] - (when description - (let [flat (s/replace description #"\s+" " ")] - (when-let [[_ dice faces plus fixed] - (re-find #"(?i)\b(?:(\d+)d(\d+)(?:\s*\+\s*(\d+))?|(\d+))\s+charges\b" flat)] - (let [n (if fixed - (parse-long fixed) - (+ (* (parse-long dice) (parse-long faces)) - (if plus (parse-long plus) 0)))] - (when (<= 1 n 99) n)))))) - -(def ^:private alignment-attunement - "Attunement keywords that name an alignment rather than a class or a race. The - books phrase these differently: a creature OF good alignment, not a good." - #{:good :evil :lawful :chaotic :neutral}) - -(defn attunement-phrase - "The parenthesised attunement clause a magic item carries in the books, or nil - when the item needs none. - - `attunement` is a vector of keywords: [:any] for anyone, otherwise the classes, - races or alignments that may attune. `details` overrides it, for the handful of - items whose condition is a sentence rather than a list." - [attunement details] - (cond - (seq details) (str "(" details ")") - (empty? attunement) nil - (= [:any] (vec attunement)) "(requires attunement)" - :else - ;; The article goes on the first name only -- "by a sorcerer, warlock, or - ;; wizard", as the books set it. One per name is both wrong and wide enough to - ;; run past the card's frame at the foot. - (let [names (map (fn [k] - (if (alignment-attunement k) - (str "creature of " (name k) " alignment") - (common/kw-to-name k))) - attunement) - listed (case (count names) - 1 (first names) - 2 (s/join " or " names) - (str (s/join ", " (butlast names)) ", or " (last names)))] - (str "(requires attunement by a " listed ")")))) - -(defn magic-item-subtitle - "The italic line under a magic item's name: what kind of thing it is and how rare, - in the order the books use. GOTCHA: the attunement clause is NOT here; the card - prints it at the foot, and a long clause clipped a one-line subtitle." - [{:keys [::mi/type ::mi/subtype ::mi/rarity]}] - (let [kind (when type - ;; Capitalised, and only the first word: the books write "Wondrous - ;; item, rare", not "Wondrous Item". - (s/capitalize - (str (common/kw-to-name type) - (when subtype (str " (" (common/kw-to-name subtype) ")"))))) - rare (when rarity - (if (= :varies rarity) - "rarity varies" - (s/lower-case (common/kw-to-name rarity)))) - ] - (s/join ", " (remove s/blank? [kind rare])))) - -(defn- chamfered-frame! - "A rectangle with its corners cut, inset `m` from the card edge." - [cs x y w h m c] - (polyline! cs x y [[(+ m c) m] [(- w m c) m] [(- w m) (+ m c)] [(- w m) (- h m c)] - [(- w m c) (- h m)] [(+ m c) (- h m)] [m (- h m c)] [m (+ m c)]] - true)) - -(defn- corner-brackets! - "A right-angled bracket inside each corner, `len` long, `inset` in from the - frame. Reads as cornerwork rather than a second border, because it stops." - [cs x y w h m inset len] - (let [a (+ m inset) - r (- w m inset) - b (- h m inset)] - (doseq [[cx cy sx sy] [[a a 1 1] [r a -1 1] [a b 1 -1] [r b -1 -1]]] - (polyline! cs x y [[(+ cx (* sx len)) cy] [cx cy] [cx (+ cy (* sy len))]] false)))) - -(defn- corner-diamonds! - "A diamond at each corner of an inset rectangle. - - With `arms?`, two short strokes run from each diamond along the frame edges, - which turns four marks into four cornerpieces. Adding reach rather than another - mark is what separates the ranks at card size: filled against outlined is close - to invisible from a foot away, mass is not." - [cs x y w h m inset r filled? arms?] - (let [a (+ m inset) - rt (- w m inset) - b (- h m inset) - arm 0.135] - (doseq [[dx dy sx sy] [[a a 1 1] [rt a -1 1] [a b 1 -1] [rt b -1 -1]]] - (diamond! cs x y dx dy r filled?) - (when arms? - (polyline! cs x y [[(+ dx (* sx (+ r 0.022))) dy] - [(+ dx (* sx (+ r arm))) dy]] false) - (polyline! cs x y [[dx (+ dy (* sy (+ r 0.022)))] - [dx (+ dy (* sy (+ r arm)))]] false))))) - -(def card-flourishes - "The decoration families a card frame can escalate through, weakest rank first. - - Each is a ladder of five: whatever a common gets, a legendary gets that and - more, so the treatments compare against each other rather than merely differ. - The eye should reach the rare items before it reads a word." - [:nested :brackets :diamonds]) - -(defn- draw-flourish! - "Draws `family`'s decoration for a rarity of `rank`, 1 to 5." - [cs x y w h m c family rank] - (case family - :nested - (do (when (>= rank 2) - (.setLineWidth cs (float 0.45)) - (chamfered-frame! cs x y w h (+ m 0.042) (- c 0.042))) - (when (>= rank 4) - (.setLineWidth cs (float 0.35)) - (chamfered-frame! cs x y w h (+ m 0.075) (- c 0.075))) - (when (>= rank 5) - (.setLineWidth cs (float 1.9)) - (chamfered-frame! cs x y w h (- m 0.035) c))) - - :brackets - (do (when (>= rank 2) - (.setLineWidth cs (float 0.45)) - (chamfered-frame! cs x y w h (+ m 0.042) (- c 0.042))) - (when (>= rank 3) - (.setLineWidth cs (float 0.9)) - (corner-brackets! cs x y w h m 0.095 (if (>= rank 4) 0.20 0.12))) - (when (>= rank 5) - (.setLineWidth cs (float 0.9)) - (corner-brackets! cs x y w h m 0.155 0.11))) - - ;; Each step adds mass rather than restating the last one in another way: - ;; a second rule, then cornerpieces, then reach and weight on them, then a - ;; heavy outer border. Ranks 3, 4 and 5 have to separate at arm's length. - :diamonds - (do (when (>= rank 2) - (.setLineWidth cs (float 0.45)) - (chamfered-frame! cs x y w h (+ m 0.042) (- c 0.042))) - (when (= rank 3) - (.setLineWidth cs (float 0.7)) - (corner-diamonds! cs x y w h m 0.105 0.036 false false)) - (when (>= rank 4) - (.setLineWidth cs (float 0.9)) - (corner-diamonds! cs x y w h m 0.105 0.049 true true)) - ;; The legendary's mark goes at the FOOT. At the head it lands on the - ;; rarity rail, which is the thing actually carrying the rank. - (when (>= rank 5) - (.setLineWidth cs (float 2.1)) - (chamfered-frame! cs x y w h (- m 0.036) c) - (.setLineWidth cs (float 0.9)) - (diamond! cs x y (/ w 2) (- h m 0.052) 0.062 true))) - nil)) - -(defn- draw-rarity-rail! - "The rank marks on their own rule across the top of the card: five diamonds, filled - to the item's rank, centred, with a hairline out to each side. Its own row so it - does not compete with the name; the filled count sorts a fanned deck. :varies has - no rank, so its rail is drawn unfilled." - [cs x y w rarity dy] - (let [rank (rarity-rank rarity) - span 0.115 - half (/ (* span 4) 2) - mid (/ w 2)] - (.setLineWidth cs (float 0.5)) - (polyline! cs x y [[0.28 dy] [(- mid half 0.09) dy]] false) - (polyline! cs x y [[(+ mid half 0.09) dy] [(- w 0.28) dy]] false) - (.setLineWidth cs (float 0.6)) - (doseq [i (range 5)] - (diamond! cs x y (+ (- mid half) (* i span)) dy 0.038 (< i (or rank 0)))) - (.setLineWidth cs (float 1)))) - -(defn- draw-foot-ornament! - "A single diamond between two hairlines, closing the card the way the rarity - rail opens it. Purely a frame: it carries nothing, which is why it is one mark - and not five." - [cs x y w dy] - (let [mid (/ w 2)] - (.setLineWidth cs (float 0.5)) - (polyline! cs x y [[0.5 dy] [(- mid 0.085) dy]] false) - (polyline! cs x y [[(+ mid 0.085) dy] [(- w 0.5) dy]] false) - (diamond! cs x y mid dy 0.032 false) - (.setLineWidth cs (float 1)))) - -(defn- draw-centred-text! - "Draws `text` centred on `cx`, measuring the string rather than guessing how - wide it sets. Halving a hardcoded width puts it near the middle and no nearer, - and the miss moves with the font and the size." - [cs text font size cx baseline] - (draw/draw-text cs text font size (- cx (/ (draw/string-width text font size) 2)) baseline)) - -(def card-layout - "Where everything sits on a 2.5 x 3.5in item card. - - `:down` values are inches from the card's TOP edge, `:up` values from its - BOTTOM. Declared in one place rather than spelled out at each draw site, so the - vertical rhythm can be measured -- dev/measure_item_card.clj reports the gap - between every pair -- instead of adjusted a sixteenth at a time by eye." - {:down {:frame 0.09 - :rail 0.245 - :name-three-line 0.32 - :name-two-line 0.36 - :name-one-line 0.46 - :name-height 0.56 - :name-floor 10.5 - :subtitle 1.00 - :badge 0.985 - :rule 1.22 - :rule-under 1.255 - :charge-label 1.39 - :charge-marks 1.55 - :charge-under 1.71 - :body 1.32 - :body-charged 1.79} - :up {:ornament 0.185 - :clause 0.60 - :continued 0.70 - :continued-bare 0.30} - ;; What the body must stop short of, by which of the foot pieces are drawn. - :body-stops {[true true] 0.80 ; a note and a clause - [true false] 0.40 ; a note alone - [false true] 0.68 ; a clause alone - [false false] 0.28}}) - -(defn- draw-attunement-badge! - "A boxed A at the right of the subtitle line, for an item needing attunement. - - The foot says who may attune; this says THAT it must be, at the top where the - rarity is, because that is the pair of facts anyone sorting a handful of cards - is actually looking for. A letter rather than an invented glyph: there is no - artwork for it, and a letter cannot be misread as decoration." - [cs x y w dy] - (let [bw 0.155 bh 0.145 - left (- w 0.28 bw) - c 0.035] - (.setLineWidth cs (float 0.7)) - (polyline! cs x y [[(+ left c) dy] [(- (+ left bw) c) dy] - [(+ left bw) (+ dy c)] [(+ left bw) (- (+ dy bh) c)] - [(- (+ left bw) c) (+ dy bh)] [(+ left c) (+ dy bh)] - [left (- (+ dy bh) c)] [left (+ dy c)]] - true) - (draw-centred-text! cs "A" draw/HELVETICA_BOLD 7 - (+ x left (/ bw 2)) - (- 11 y dy bh -0.036)) - (.setLineWidth cs (float 1)))) - -(defn- draw-centred-lines! - "Wraps `text` to `width` and centres each line on `cx`, returning what did not - fit. draw-text-to-box only sets flush left." - [cs text font size cx top width max-lines] - (let [lines (draw/split-lines text font size width) - leading (/ (* size 1.1) 72)] - (doseq [[i line] (map-indexed vector (take max-lines lines))] - (draw-centred-text! cs line font size cx (- top (* leading (inc i))))) - (drop max-lines lines))) - -(defn- draw-card-frame! - "The card's border, plus whatever decoration its rarity has earned. - - The border escalates as well as the rank marks do. The marks say which rarity - to anyone who counts them; the frame is what carries across a table to someone - who does not." - [cs x y w h rarity family] - (let [m 0.09 - c 0.17] - (.setLineWidth cs (float 1.1)) - (chamfered-frame! cs x y w h m c) - (when-let [rank (rarity-rank rarity)] - (draw-flourish! cs x y w h m c family rank)) - (.setLineWidth cs (float 1)))) - -(def ^:private tickable-charges - "The most circles a card can carry in one row and a hand can sensibly tick. - Past this the tracker becomes a number to write instead." - 12) - -(defn- draw-charge-track! - "Somewhere to track `n` charges, drawn at `cy` in its own band under the header. - Up to `tickable-charges` it is a circle each; past it (a Staff of the Magi has - fifty) a rule to write the remaining count on, over the total." - [cs x y w n cy label-y] - (.setLineWidth cs (float 0.8)) - (if (<= n tickable-charges) - (let [r 0.052 - gap 0.145 - cx (- (/ w 2) (/ (* gap (dec n)) 2))] - (draw-centred-text! cs "CHARGES" draw/HELVETICA 5.5 (+ x (/ w 2)) (- 11 y label-y)) - (doseq [i (range n)] - (circle! cs x y (+ cx (* gap i)) cy r))) - ;; The rule and the total are centred as one group, not the rule alone: the - ;; total hangs off its right end and pulls the pair off centre otherwise. - (let [total (str "/ " n) - rule-w 0.62 - gap 0.05 - group (+ rule-w gap (draw/string-width total draw/HELVETICA 7)) - left (- (/ w 2) (/ group 2))] - (draw-centred-text! cs "CHARGES" draw/HELVETICA 5.5 (+ x (/ w 2)) (- 11 y label-y)) - (polyline! cs x y [[left cy] [(+ left rule-w) cy]] false) - (draw/draw-text cs total draw/HELVETICA 7 (+ x left rule-w gap) (- 11 y cy -0.015)))) - (.setLineWidth cs (float 1))) - -(defn print-items - "Draws one page of magic item cards, and returns what did not fit for the backs. - Same grid, box and overflow handling as print-spells; everything is vector, so - cards stay sharp and cost the file almost nothing. The room a blank template - gives labelled slots goes to the description; attunement sits at the foot, only - when needed. `opts`: `:flourish` (one of card-flourishes), `:name-face` (a key - into `fonts`, or a font), `:name-size` in points, `:name-tracking` letter spacing." - ([cs document fonts img box-width box-height items page-number bw? bw-faded?] - (print-items cs document fonts img box-width box-height items page-number - bw? bw-faded? nil)) - ([cs document fonts img box-width box-height items page-number bw? bw-faded? opts] - (let [{:keys [flourish name-size name-tracking] - :or {flourish :diamonds name-size 13 name-tracking 0.15}} opts - name-face (fn [fs] (let [f (:name-face opts :bold)] - (if (keyword? f) (get fs f) f))) - num-boxes-x (int (/ 8.5 box-width)) - num-boxes-y (int (/ 11.0 box-height)) - margin-x (/ (- 8.5 (* num-boxes-x box-width)) 2) - margin-y (/ (- 11.0 (* num-boxes-y box-height)) 2)] - (draw/draw-grid cs box-width box-height) - (draw/draw-text cs (str "Page " (inc page-number)) (:italic fonts) 8 0.12 (- 11 0.15)) - (doall - (for [j (range num-boxes-y) - i (range (dec num-boxes-x) -1 -1) - :let [item-index (+ i (* j num-boxes-x))]] - (when-let [item (get (vec items) item-index)] - (let [x (+ margin-x (* box-width i)) - y (+ margin-y (* box-height j)) - item-name (or (:name item) (::mi/name item) "(Unknown Item)") - {:keys [::mi/description ::mi/summary ::mi/page ::mi/source - ::mi/rarity ::mi/attunement ::mi/attunement-details]} item - body (or description - (when summary - (str summary " (see " - (if source (s/upper-case (name source)) "DMG") - " " page " for more details)")) - "") - clause (attunement-phrase attunement attunement-details) - charges (item-charges description) - {:keys [down up body-stops]} card-layout - ;; The charge band sits between the header rule and the body, so - ;; the description starts lower when there is one and reclaims the - ;; room when there is not. - body-top (if charges (:body-charged down) (:body down)) - ;; Whether the description spills is settled before it is drawn, so - ;; the note saying so has reserved room. Measured against the box - ;; WITHOUT the note, which only shrinks it. The LINES are kept, not - ;; just their count, because splitting is the expensive part. - body-lines (draw/split-lines body (:plain fonts) 8 (- box-width 0.4)) - capacity (fn [h] (int (dec (/ (* 72 h) (* 8 1.1))))) - spills? (> (count body-lines) - (capacity (- box-height body-top (body-stops [false (some? clause)])))) - body-bottom (body-stops [spills? (some? clause)])] - (draw-card-frame! cs x y box-width box-height rarity flourish) - (draw-rarity-rail! cs x y box-width rarity (:rail down)) - (draw-foot-ornament! cs x y box-width (- box-height (:ornament up))) - (when clause - (draw-attunement-badge! cs x y box-width (:badge down))) - ;; The name is indented further and set larger, so it reads as a title. - ;; It shrinks to fit two lines, but not below :name-floor, where it takes - ;; a third instead. The block's height is fixed so header rules fall level - ;; across a sheet; a one-line name sits in the middle of it. - (let [face (name-face fonts) - width (- box-width 0.56) - lines-at (fn [pt] (count (draw/split-lines item-name face pt width))) - fits? (fn [pt] (let [n (lines-at pt)] - (and (<= n 3) - (<= (* n (/ (* pt 1.1) 72)) (:name-height down))))) - size (or (first (filter fits? - (take-while #(>= % (:name-floor down)) - (iterate #(- % 0.5) name-size)))) - (:name-floor down)) - top (condp = (lines-at size) - 1 (:name-one-line down) - 2 (:name-two-line down) - (:name-three-line down))] - (.setCharacterSpacing cs (float name-tracking)) - (draw/draw-text-to-box cs item-name face size - (+ x 0.28) (- 11.0 y top) width (:name-height down)) - (.setCharacterSpacing cs (float 0))) - ;; The subtitle stops short of the badge so the two never meet. - (draw/draw-text-to-box cs (magic-item-subtitle item) (:italic fonts) 7.5 - (+ x 0.2) (- 11.0 y (:subtitle down)) - (- box-width (if clause 0.68 0.4)) 0.2) - ;; A rule and a hairline under it: the header carries two kinds of - ;; information, so it closes with more than the body's plain divisions. - (.setLineWidth cs (float 0.9)) - (polyline! cs x y [[0.2 (:rule down)] [(- box-width 0.2) (:rule down)]] false) - (.setLineWidth cs (float 0.35)) - (polyline! cs x y [[0.2 (:rule-under down)] [(- box-width 0.2) (:rule-under down)]] false) - (.setLineWidth cs (float 1)) - (when charges - (draw-charge-track! cs x y box-width charges (:charge-marks down) (:charge-label down)) - (.setLineWidth cs (float 0.35)) - (polyline! cs x y [[0.2 (:charge-under down)] [(- box-width 0.2) (:charge-under down)]] false) - (.setLineWidth cs (float 1))) - (let [remaining-desc-lines - (draw/draw-lines-to-box cs body-lines (:plain fonts) 8 - (+ x 0.2) (- 11.0 y body-top) - (- box-height body-top body-bottom))] - ;; Centred, like the ornament under it and the note above it. Flush - ;; left it was the only thing at the foot on its own axis. - (when clause - (draw-centred-lines! cs clause (:italic fonts) 6.8 - (+ x (/ box-width 2)) - (- 11.0 y (- box-height (:clause up))) - (- box-width 0.4) 2)) - ;; A phrase rather than the recharge icon. At the bottom right the - ;; icon sat on the corner diamond and its arms, every other spot down - ;; there belongs to the clause or the ornament, and an arrow does not - ;; say what it means anyway. - (when (seq remaining-desc-lines) - (draw-centred-text! cs "continued on the back" (:italic fonts) 6.2 - (+ x (/ box-width 2)) - (- 11 y (- box-height - (if clause (:continued up) (:continued-bare up)))))) - {:remaining-lines remaining-desc-lines - :spell-name item-name})))))))) + (draw/draw-text cs draw/site-stamp draw/HELVETICA draw/site-stamp-size x y [0.45 0.45 0.45])))) diff --git a/src/clj/orcpub/pdf/cards.clj b/src/clj/orcpub/pdf/cards.clj new file mode 100644 index 000000000..e8d476629 --- /dev/null +++ b/src/clj/orcpub/pdf/cards.clj @@ -0,0 +1,755 @@ +(ns orcpub.pdf.cards + "Spell cards and magic-item cards: the frame, its ornaments, and nine to a sheet. + + Split out of orcpub.pdf, which keeps the AcroForm character sheet. The seam is + one-way -- nothing here is called from there." + (:require [clojure.string :as s] + [orcpub.common :as common] + [orcpub.dnd.e5.magic-items :as mi] + [orcpub.dnd.e5.spell-print :as sp] + [orcpub.pdf.draw :as draw])) + +;; UNITS: inches, y from the page TOP. draw/draw-text takes y from the BOTTOM, so +;; every text call flips by hand: `(- 11.0 y 0.08)`. All 31 such flips in the family are +;; now in this file -- pdf.clj has none. The 11 is the page height; draw/pt-from-top is +;; the parameterised form, and these 31 are what A4 and A5 cards wait on. + +(defn- draw-spell-field + "One icon-and-value field on a spell card (casting time, range, duration, + components): the `title` icon at [`x` `y`] with `value` printed over it. + Inches, `y` from the page TOP. `img` is the document's memoized image loader, and + both printer-friendly modes are handled here (see the note below)." + [cs img title value x y bw? bw-faded?] + ;; The label overprints the icon; this is the one choke point for all four + ;; per-spell icons. Colour: icon-red icon, black text. B&W solid: black icon, + ;; WHITE-HALO text. B&W faded: black icon at 40%, black text. One SVG serves all. + (let [iy (- 11 y 0.12) + [color alpha] (cond (and bw? bw-faded?) [[0 0 0] 0.4] + bw? [[0 0 0] 1.0] + :else [(vec (take 3 draw/icon-red)) (last draw/icon-red)])] + (draw/draw-svg-icon! cs img title x iy 0.25 color alpha) + (if (and bw? (not bw-faded?)) + (draw/draw-halo-text cs value draw/HELVETICA_BOLD_OBLIQUE 8 x (- y 0.07)) + (do (.setNonStrokingColor cs (float 0) (float 0) (float 0)) + (draw/draw-text cs value draw/HELVETICA_BOLD_OBLIQUE 8 x (- y 0.07)) + (.setNonStrokingColor cs (float 0) (float 0) (float 0)))))) + +(def ^:private site-stamp-strip + "Inches reserved at the foot of a card for the site line. + + Sized so the last line of overflow text clears the stamp by about an eighth of + an inch. draw-lines-to-box takes `(dec (/ (* 72 height) leading))` lines, and + `take` given a fraction rounds UP -- a box shortened by 0.22 computed 24.2 and + laid down 25 lines, whose descenders sat on the stamp." + 0.35) + +(defn- draw-site-stamp! + "Centres the site line, in grey even in B&W mode, just above a card's bottom + edge. `x` and `y` are the card's top-left in inches, y from the page TOP; this + flips it to draw-text's baseline from the page BOTTOM." + [cs fonts x y box-width box-height] + (let [font (:plain fonts) + width (draw/string-width draw/site-stamp font draw/site-stamp-size)] + (draw/draw-text cs + draw/site-stamp + font + draw/site-stamp-size + (+ x (/ (- box-width width) 2)) + (- 11.0 y (- box-height 0.16)) + [0.45 0.45 0.45]))) + +(defn print-backs + "Draws one page of spell card BACKS, mirroring the fronts for duplex printing. + `remaining-lines-vec` is indexed by the card position `print-spells` used, each + entry `{:remaining-lines :spell-name}` from that call; a card with no overflow + gets only its name and the site stamp. `logo-img` opts a card into the logo. + Inches. See the `draw-grid` call below for a latent sizing bug." + [cs fonts img box-width box-height remaining-lines-vec page-number logo-img] + ;; `img` is the memoized per-document image loader; `logo?` opts each card back + ;; into showing the card logo (matching the fronts) for double-sided printing. + ;; When logo? is false NO images are loaded here — the old code decoded+embedded + ;; the logo/rotation PNGs every page and never drew them (pure waste). + (let [num-boxes-x (int (/ 8.5 box-width)) + num-boxes-y (int (/ 11.0 box-height)) + total-height (* num-boxes-y box-height) + remaining-width (- 8.5 (* num-boxes-x box-width)) + margin-x (/ remaining-width 2) + remaining-height (- 11.0 total-height) + margin-y (/ remaining-height 2)] + ;; BUG: box-width/box-height size the cells and the text boxes, but the gridlines + ;; come from these literals. Latent -- every caller passes 2.5/3.5 -- but any other + ;; box size draws the lines in the wrong places. Same in print-spells; print-items + ;; threads its arguments through correctly. + (draw/draw-grid cs 2.5 3.5) + (draw/draw-text cs + (str "Page " (inc page-number) " (reverse)") + (:italic fonts) + 8 + 0.12 + (- 11 0.15)) + (doall + (for [i (range num-boxes-x) + j (range num-boxes-y)] + (let [x (+ margin-x (* box-width i)) + y (+ margin-y (* box-height j)) + spell-index (+ i (* j num-boxes-x)) + {:keys [remaining-lines spell-name]} (remaining-lines-vec spell-index)] + (if (seq remaining-lines) + ;; This card back carries overflow text from the front. + (do + (draw/draw-text-to-box cs + spell-name + (:bold fonts) + 10 + (+ x 0.12) + (- 11.0 y 0.08) + (- box-width 0.3) + 0.25) + ;; The card's own box, less the strip the stamp sits in: + ;; draw-lines-to-box fills its height to the last line that fits, so + ;; overflow text prints over the stamp unless the room is taken away. + (draw/draw-lines-to-box cs + remaining-lines + (:plain fonts) + 8 + (+ x 0.12) + (- 11.0 y 0.24) + (- box-height 0.2 site-stamp-strip)) + (draw/draw-text-to-box cs + "(reverse)" + (:italic fonts) + 10 + (+ x 0.15 (draw/string-width spell-name (:bold fonts) 10)) + (- 11.0 y 0.08) + (- box-width 0.3) + (- box-height 0.2))) + ;; Blank back: a large, CENTERED logo (~80% of the card). logo-img is the + ;; caller's resource path (a hi-res grayscale or solid-black DMV mark, not + ;; the front's tiny card-logo.png), or nil when the logo is turned off. + (when logo-img + (draw/draw-imagex cs + (img logo-img) + (+ x (* box-width 0.1)) + (+ y (* box-height 0.1)) + (* box-width 0.8) + (* box-height 0.8)))) + ;; Every back, whichever branch drew it. The blank one leaves the bottom + ;; tenth of the card clear below the mark, and the overflow one reserves + ;; the same strip above. + (draw-site-stamp! cs fonts x y box-width box-height)))))) + +(defn print-spells + "Draws one page of spell card FRONTS and returns what did not fit, for + `print-backs`. `spells` is a seq of `{:class-nm :dc :attack-bonus :spell}`; cards + fill right to left within a row so a duplex flip lines the backs up. + `print-spell-card-dc-mod?` prints save DC and attack bonus; `bw?`/`bw-faded?` + select the printer-friendly renderings. Inches." + [cs document fonts img box-width box-height spells page-number print-spell-card-dc-mod? bw? bw-faded?] + (let [num-boxes-x (int (/ 8.5 box-width)) + num-boxes-y (int (/ 11.0 box-height)) + total-width (* num-boxes-x box-width) + total-height (* num-boxes-y box-height) + remaining-width (- 8.5 total-width) + margin-x (/ remaining-width 2) + remaining-height (- 11.0 total-height) + margin-y (/ remaining-height 2)] + ;; BUG: as in print-backs -- the gridlines ignore box-width/box-height. + (draw/draw-grid cs 2.5 3.5) + (draw/draw-text cs + (str "Page " (inc page-number)) + (:italic fonts) + 8 + 0.12 + (- 11 0.15)) + (doall + (for [j (range num-boxes-y) + i (range (dec num-boxes-x) -1 -1) + :let [spell-index (+ i (* j num-boxes-x))]] + (when-let [{:keys [class-nm dc attack-bonus spell] :as spell-data} + (get (vec spells) spell-index)] + (let [{:keys [description + casting-time + duration + level + ritual + range]} spell + x (+ margin-x (* box-width i)) + y (+ margin-y (* box-height j)) + + {:keys [page source description summary components]} spell + ;; Handle nil spell name gracefully + spell-name (or (:name spell) "(Unknown Spell)") + + dc-str (str "DC " dc) + remaining-desc-lines + (draw/draw-text-to-box cs + (or description + (if summary + (str summary + " (see " + (if source + (s/upper-case (name source)) + "PHB") + " " + page + " for more details)") + "")) + (:plain fonts) + 8 + (+ x 0.12) ; from the left + (- 11.0 y 1.08) ;from the top down + (- box-width 0.24) + (- box-height 1.13))] + (when (:material-component components) + (draw/draw-text-to-box cs + (str (s/capitalize (:material-component components))) + (:italic fonts) + 8 + (+ x 0.12) + (- 11.0 y 0.55) + (- box-width 0.24) + 0.5)) + (let [card-logo (img (str "public/image/card-logo" (when bw? "-bw") ".png"))] + (if (and bw? bw-faded?) + (draw/draw-imagex-alpha cs card-logo (+ x 1.9) (+ y 0.02) 1.0 0.25 0.4) + (draw/draw-imagex cs card-logo (+ x 1.9) (+ y 0.02) 1.0 0.25))) + (draw/draw-text-to-box cs + spell-name + (:bold fonts) + 10 + (+ x 0.12) + (- 11.0 y) + (- box-width 0.3) + 0.2) + (draw/draw-text-to-box cs + (if ritual " (ritual)" "") + (:italic fonts) + 10 + (+ x 0.12 (draw/string-width spell-name (:bold fonts) 10)) + (- 11.0 y) + (- box-width 0.3) + 0.2) + (draw/draw-text-to-box cs + (if (not= class-nm "Homebrew") + (str (sp/spell-school-level spell class-nm) (when print-spell-card-dc-mod? (str " " dc-str " Spell Mod " (common/bonus-str attack-bonus)))) + (sp/spell-school-level spell class-nm)) + (:italic fonts) + 8 + (+ x 0.12) + (- 11.0 y 0.19) + (- box-width 0.24) + 0.25) + (when casting-time + (draw-spell-field cs + img + "magic-swirl" + (str (sp/abbreviate-casting-time + (first + (s/split + casting-time + #",")))) + (+ x 0.12) + (- 11.0 y 0.45) + bw? bw-faded?)) + (when range + (draw-spell-field cs + img + "arrow-dunk" + (sp/abbreviate-range range) + (+ x 0.62) + (- 11.0 y 0.45) + bw? bw-faded?)) + (draw-spell-field cs + img + "shiny-purse" + (s/join + "," + (remove + nil? + (map + (fn [[k v]] + (when (-> spell :components k) + v)) + {:verbal "V" + :somatic "S" + :material "M"}))) + (+ x 1.12) + (- 11.0 y 0.45) + bw? bw-faded?) + (when duration + (draw-spell-field cs + img + "sands-of-time" + (sp/abbreviate-duration duration) + (+ x 1.62) + (- 11.0 y 0.45) + bw? bw-faded?)) + (when (seq remaining-desc-lines) + (draw/draw-svg-icon! cs img "clockwise-rotation" (+ x 2.3) (+ y 3.3) 0.15 + [0 0 0] (if (and bw? bw-faded?) 0.4 1.0))) + {:remaining-lines remaining-desc-lines + :spell-name spell-name})))))) + +(defn- card-pt + "A point `dx` right and `dy` DOWN from the top-left of the card at (x, y), in + PDF page units. Card coordinates run downward from the page top, page units run + up from the page bottom." + [x y dx dy] + [(float (* 72 (+ x dx))) (float (* 72 (- 11 (+ y dy))))]) + +(defn- card-mapper + "`draw/path!`'s `pt` for the card at (x, y): card-relative inches to page units." + [x y] + (fn [dx dy] (card-pt x y dx dy))) + +(defn- polyline! + "Strokes, and optionally closes, a path through card-relative points." + [cs x y points close?] + (draw/path! cs (card-mapper x y) points) + (if close? (.closeAndStroke cs) (.stroke cs))) + +(defn- diamond! + "A small diamond of radius `r` centred at (dx, dy) on the card. Filled ones mark + the item's rarity rank, outlined ones the ranks above it." + [cs x y dx dy r filled?] + (draw/path! cs (card-mapper x y) + [[dx (- dy r)] [(+ dx r) dy] [dx (+ dy r)] [(- dx r) dy]]) + (.closePath cs) + (if filled? (.fill cs) (.stroke cs))) + +(defn- circle! + "An outlined circle of radius `r` centred at (dx, dy) on the card." + [cs x y dx dy r] + (draw/circle-path! cs (card-mapper x y) dx dy r) + (.closeAndStroke cs)) + +(def ^:private rarity-rank + "How the rarities order, for the diamonds along the top edge. :varies has no + rank and draws none -- an item whose rarity depends on the table cannot be + ranked against one that does not." + {:common 1 :uncommon 2 :rare 3 :very-rare 4 :legendary 5}) + +(defn item-charges + "How many charges the item's description says it has, or nil. The data has no + charge count, so it is read off the prose; a die expression takes its maximum + (`1d8 + 1 charges` gives nine). Only \" charges\" matches, so the + Manuals and Tomes \"charged with magic\" get no tracker; over 99 is noise, nil." + [description] + (when description + (let [flat (s/replace description #"\s+" " ")] + (when-let [[_ dice faces plus fixed] + (re-find #"(?i)\b(?:(\d+)d(\d+)(?:\s*\+\s*(\d+))?|(\d+))\s+charges\b" flat)] + (let [n (if fixed + (parse-long fixed) + (+ (* (parse-long dice) (parse-long faces)) + (if plus (parse-long plus) 0)))] + (when (<= 1 n 99) n)))))) + +(def ^:private alignment-attunement + "Attunement keywords that name an alignment rather than a class or a race. The + books phrase these differently: a creature OF good alignment, not a good." + #{:good :evil :lawful :chaotic :neutral}) + +(defn attunement-phrase + "The parenthesised attunement clause a magic item carries in the books, or nil + when the item needs none. + + `attunement` is a vector of keywords: [:any] for anyone, otherwise the classes, + races or alignments that may attune. `details` overrides it, for the handful of + items whose condition is a sentence rather than a list." + [attunement details] + (cond + (seq details) (str "(" details ")") + (empty? attunement) nil + (= [:any] (vec attunement)) "(requires attunement)" + :else + ;; The article goes on the first name only -- "by a sorcerer, warlock, or + ;; wizard", as the books set it. One per name is both wrong and wide enough to + ;; run past the card's frame at the foot. + (let [names (map (fn [k] + (if (alignment-attunement k) + (str "creature of " (name k) " alignment") + (common/kw-to-name k))) + attunement) + listed (case (count names) + 1 (first names) + 2 (s/join " or " names) + (str (s/join ", " (butlast names)) ", or " (last names)))] + (str "(requires attunement by a " listed ")")))) + +(defn magic-item-subtitle + "The italic line under a magic item's name: what kind of thing it is and how rare, + in the order the books use. GOTCHA: the attunement clause is NOT here; the card + prints it at the foot, and a long clause clipped a one-line subtitle." + [{:keys [::mi/type ::mi/subtype ::mi/rarity]}] + (let [kind (when type + ;; Capitalised, and only the first word: the books write "Wondrous + ;; item, rare", not "Wondrous Item". + (s/capitalize + (str (common/kw-to-name type) + (when subtype (str " (" (common/kw-to-name subtype) ")"))))) + rare (when rarity + (if (= :varies rarity) + "rarity varies" + (s/lower-case (common/kw-to-name rarity)))) + ] + (s/join ", " (remove s/blank? [kind rare])))) + +(defn- chamfered-frame! + "A rectangle with its corners cut, inset `m` from the card edge." + [cs x y w h m c] + (polyline! cs x y [[(+ m c) m] [(- w m c) m] [(- w m) (+ m c)] [(- w m) (- h m c)] + [(- w m c) (- h m)] [(+ m c) (- h m)] [m (- h m c)] [m (+ m c)]] + true)) + +(defn- corner-brackets! + "A right-angled bracket inside each corner, `len` long, `inset` in from the + frame. Reads as cornerwork rather than a second border, because it stops." + [cs x y w h m inset len] + (let [a (+ m inset) + r (- w m inset) + b (- h m inset)] + (doseq [[cx cy sx sy] [[a a 1 1] [r a -1 1] [a b 1 -1] [r b -1 -1]]] + (polyline! cs x y [[(+ cx (* sx len)) cy] [cx cy] [cx (+ cy (* sy len))]] false)))) + +(defn- corner-diamonds! + "A diamond at each corner of an inset rectangle. + + With `arms?`, two short strokes run from each diamond along the frame edges, + which turns four marks into four cornerpieces. Adding reach rather than another + mark is what separates the ranks at card size: filled against outlined is close + to invisible from a foot away, mass is not." + [cs x y w h m inset r filled? arms?] + (let [a (+ m inset) + rt (- w m inset) + b (- h m inset) + arm 0.135] + (doseq [[dx dy sx sy] [[a a 1 1] [rt a -1 1] [a b 1 -1] [rt b -1 -1]]] + (diamond! cs x y dx dy r filled?) + (when arms? + (polyline! cs x y [[(+ dx (* sx (+ r 0.022))) dy] + [(+ dx (* sx (+ r arm))) dy]] false) + (polyline! cs x y [[dx (+ dy (* sy (+ r 0.022)))] + [dx (+ dy (* sy (+ r arm)))]] false))))) + +(def card-flourishes + "The decoration families a card frame can escalate through, weakest rank first. + + Each is a ladder of five: whatever a common gets, a legendary gets that and + more, so the treatments compare against each other rather than merely differ. + The eye should reach the rare items before it reads a word." + [:nested :brackets :diamonds]) + +(defn- draw-flourish! + "Draws `family`'s decoration for a rarity of `rank`, 1 to 5." + [cs x y w h m c family rank] + (case family + :nested + (do (when (>= rank 2) + (.setLineWidth cs (float 0.45)) + (chamfered-frame! cs x y w h (+ m 0.042) (- c 0.042))) + (when (>= rank 4) + (.setLineWidth cs (float 0.35)) + (chamfered-frame! cs x y w h (+ m 0.075) (- c 0.075))) + (when (>= rank 5) + (.setLineWidth cs (float 1.9)) + (chamfered-frame! cs x y w h (- m 0.035) c))) + + :brackets + (do (when (>= rank 2) + (.setLineWidth cs (float 0.45)) + (chamfered-frame! cs x y w h (+ m 0.042) (- c 0.042))) + (when (>= rank 3) + (.setLineWidth cs (float 0.9)) + (corner-brackets! cs x y w h m 0.095 (if (>= rank 4) 0.20 0.12))) + (when (>= rank 5) + (.setLineWidth cs (float 0.9)) + (corner-brackets! cs x y w h m 0.155 0.11))) + + ;; Each step adds mass rather than restating the last one in another way: + ;; a second rule, then cornerpieces, then reach and weight on them, then a + ;; heavy outer border. Ranks 3, 4 and 5 have to separate at arm's length. + :diamonds + (do (when (>= rank 2) + (.setLineWidth cs (float 0.45)) + (chamfered-frame! cs x y w h (+ m 0.042) (- c 0.042))) + (when (= rank 3) + (.setLineWidth cs (float 0.7)) + (corner-diamonds! cs x y w h m 0.105 0.036 false false)) + (when (>= rank 4) + (.setLineWidth cs (float 0.9)) + (corner-diamonds! cs x y w h m 0.105 0.049 true true)) + ;; The legendary's mark goes at the FOOT. At the head it lands on the + ;; rarity rail, which is the thing actually carrying the rank. + (when (>= rank 5) + (.setLineWidth cs (float 2.1)) + (chamfered-frame! cs x y w h (- m 0.036) c) + (.setLineWidth cs (float 0.9)) + (diamond! cs x y (/ w 2) (- h m 0.052) 0.062 true))) + nil)) + +(defn- draw-rarity-rail! + "The rank marks on their own rule across the top of the card: five diamonds, filled + to the item's rank, centred, with a hairline out to each side. Its own row so it + does not compete with the name; the filled count sorts a fanned deck. :varies has + no rank, so its rail is drawn unfilled." + [cs x y w rarity dy] + (let [rank (rarity-rank rarity) + span 0.115 + half (/ (* span 4) 2) + mid (/ w 2)] + (.setLineWidth cs (float 0.5)) + (polyline! cs x y [[0.28 dy] [(- mid half 0.09) dy]] false) + (polyline! cs x y [[(+ mid half 0.09) dy] [(- w 0.28) dy]] false) + (.setLineWidth cs (float 0.6)) + (doseq [i (range 5)] + (diamond! cs x y (+ (- mid half) (* i span)) dy 0.038 (< i (or rank 0)))) + (.setLineWidth cs (float 1)))) + +(defn- draw-foot-ornament! + "A single diamond between two hairlines, closing the card the way the rarity + rail opens it. Purely a frame: it carries nothing, which is why it is one mark + and not five." + [cs x y w dy] + (let [mid (/ w 2)] + (.setLineWidth cs (float 0.5)) + (polyline! cs x y [[0.5 dy] [(- mid 0.085) dy]] false) + (polyline! cs x y [[(+ mid 0.085) dy] [(- w 0.5) dy]] false) + (diamond! cs x y mid dy 0.032 false) + (.setLineWidth cs (float 1)))) + +(defn- draw-centred-text! + "Draws `text` centred on `cx`, measuring the string rather than guessing how + wide it sets. Halving a hardcoded width puts it near the middle and no nearer, + and the miss moves with the font and the size." + [cs text font size cx baseline] + (draw/draw-text cs text font size (- cx (/ (draw/string-width text font size) 2)) baseline)) + +(def card-layout + "Where everything sits on a 2.5 x 3.5in item card. + + `:down` values are inches from the card's TOP edge, `:up` values from its + BOTTOM. Declared in one place rather than spelled out at each draw site, so the + vertical rhythm can be measured -- dev/measure_item_card.clj reports the gap + between every pair -- instead of adjusted a sixteenth at a time by eye." + {:down {:frame 0.09 + :rail 0.245 + :name-three-line 0.32 + :name-two-line 0.36 + :name-one-line 0.46 + :name-height 0.56 + :name-floor 10.5 + :subtitle 1.00 + :badge 0.985 + :rule 1.22 + :rule-under 1.255 + :charge-label 1.39 + :charge-marks 1.55 + :charge-under 1.71 + :body 1.32 + :body-charged 1.79} + :up {:ornament 0.185 + :clause 0.60 + :continued 0.70 + :continued-bare 0.30} + ;; What the body must stop short of, by which of the foot pieces are drawn. + :body-stops {[true true] 0.80 ; a note and a clause + [true false] 0.40 ; a note alone + [false true] 0.68 ; a clause alone + [false false] 0.28}}) + +(defn- draw-attunement-badge! + "A boxed A at the right of the subtitle line, for an item needing attunement. + + The foot says who may attune; this says THAT it must be, at the top where the + rarity is, because that is the pair of facts anyone sorting a handful of cards + is actually looking for. A letter rather than an invented glyph: there is no + artwork for it, and a letter cannot be misread as decoration." + [cs x y w dy] + (let [bw 0.155 bh 0.145 + left (- w 0.28 bw) + c 0.035] + (.setLineWidth cs (float 0.7)) + (polyline! cs x y [[(+ left c) dy] [(- (+ left bw) c) dy] + [(+ left bw) (+ dy c)] [(+ left bw) (- (+ dy bh) c)] + [(- (+ left bw) c) (+ dy bh)] [(+ left c) (+ dy bh)] + [left (- (+ dy bh) c)] [left (+ dy c)]] + true) + (draw-centred-text! cs "A" draw/HELVETICA_BOLD 7 + (+ x left (/ bw 2)) + (- 11 y dy bh -0.036)) + (.setLineWidth cs (float 1)))) + +(defn- draw-centred-lines! + "Wraps `text` to `width` and centres each line on `cx`, returning what did not + fit. draw-text-to-box only sets flush left." + [cs text font size cx top width max-lines] + (let [lines (draw/split-lines text font size width) + leading (/ (* size 1.1) 72)] + (doseq [[i line] (map-indexed vector (take max-lines lines))] + (draw-centred-text! cs line font size cx (- top (* leading (inc i))))) + (drop max-lines lines))) + +(defn- draw-card-frame! + "The card's border, plus whatever decoration its rarity has earned. + + The border escalates as well as the rank marks do. The marks say which rarity + to anyone who counts them; the frame is what carries across a table to someone + who does not." + [cs x y w h rarity family] + (let [m 0.09 + c 0.17] + (.setLineWidth cs (float 1.1)) + (chamfered-frame! cs x y w h m c) + (when-let [rank (rarity-rank rarity)] + (draw-flourish! cs x y w h m c family rank)) + (.setLineWidth cs (float 1)))) + +(def ^:private tickable-charges + "The most circles a card can carry in one row and a hand can sensibly tick. + Past this the tracker becomes a number to write instead." + 12) + +(defn- draw-charge-track! + "Somewhere to track `n` charges, drawn at `cy` in its own band under the header. + Up to `tickable-charges` it is a circle each; past it (a Staff of the Magi has + fifty) a rule to write the remaining count on, over the total." + [cs x y w n cy label-y] + (.setLineWidth cs (float 0.8)) + (if (<= n tickable-charges) + (let [r 0.052 + gap 0.145 + cx (- (/ w 2) (/ (* gap (dec n)) 2))] + (draw-centred-text! cs "CHARGES" draw/HELVETICA 5.5 (+ x (/ w 2)) (- 11 y label-y)) + (doseq [i (range n)] + (circle! cs x y (+ cx (* gap i)) cy r))) + ;; The rule and the total are centred as one group, not the rule alone: the + ;; total hangs off its right end and pulls the pair off centre otherwise. + (let [total (str "/ " n) + rule-w 0.62 + gap 0.05 + group (+ rule-w gap (draw/string-width total draw/HELVETICA 7)) + left (- (/ w 2) (/ group 2))] + (draw-centred-text! cs "CHARGES" draw/HELVETICA 5.5 (+ x (/ w 2)) (- 11 y label-y)) + (polyline! cs x y [[left cy] [(+ left rule-w) cy]] false) + (draw/draw-text cs total draw/HELVETICA 7 (+ x left rule-w gap) (- 11 y cy -0.015)))) + (.setLineWidth cs (float 1))) + +(defn print-items + "Draws one page of magic item cards, and returns what did not fit for the backs. + Same grid, box and overflow handling as print-spells; everything is vector, so + cards stay sharp and cost the file almost nothing. The room a blank template + gives labelled slots goes to the description; attunement sits at the foot, only + when needed. `opts`: `:flourish` (one of card-flourishes), `:name-face` (a key + into `fonts`, or a font), `:name-size` in points, `:name-tracking` letter spacing." + ([cs document fonts img box-width box-height items page-number bw? bw-faded?] + (print-items cs document fonts img box-width box-height items page-number + bw? bw-faded? nil)) + ([cs document fonts img box-width box-height items page-number bw? bw-faded? opts] + (let [{:keys [flourish name-size name-tracking] + :or {flourish :diamonds name-size 13 name-tracking 0.15}} opts + name-face (fn [fs] (let [f (:name-face opts :bold)] + (if (keyword? f) (get fs f) f))) + num-boxes-x (int (/ 8.5 box-width)) + num-boxes-y (int (/ 11.0 box-height)) + margin-x (/ (- 8.5 (* num-boxes-x box-width)) 2) + margin-y (/ (- 11.0 (* num-boxes-y box-height)) 2)] + (draw/draw-grid cs box-width box-height) + (draw/draw-text cs (str "Page " (inc page-number)) (:italic fonts) 8 0.12 (- 11 0.15)) + (doall + (for [j (range num-boxes-y) + i (range (dec num-boxes-x) -1 -1) + :let [item-index (+ i (* j num-boxes-x))]] + (when-let [item (get (vec items) item-index)] + (let [x (+ margin-x (* box-width i)) + y (+ margin-y (* box-height j)) + item-name (or (:name item) (::mi/name item) "(Unknown Item)") + {:keys [::mi/description ::mi/summary ::mi/page ::mi/source + ::mi/rarity ::mi/attunement ::mi/attunement-details]} item + body (or description + (when summary + (str summary " (see " + (if source (s/upper-case (name source)) "DMG") + " " page " for more details)")) + "") + clause (attunement-phrase attunement attunement-details) + charges (item-charges description) + {:keys [down up body-stops]} card-layout + ;; The charge band sits between the header rule and the body, so + ;; the description starts lower when there is one and reclaims the + ;; room when there is not. + body-top (if charges (:body-charged down) (:body down)) + ;; Whether the description spills is settled before it is drawn, so + ;; the note saying so has reserved room. Measured against the box + ;; WITHOUT the note, which only shrinks it. The LINES are kept, not + ;; just their count, because splitting is the expensive part. + body-lines (draw/split-lines body (:plain fonts) 8 (- box-width 0.4)) + capacity (fn [h] (int (dec (/ (* 72 h) (* 8 1.1))))) + spills? (> (count body-lines) + (capacity (- box-height body-top (body-stops [false (some? clause)])))) + body-bottom (body-stops [spills? (some? clause)])] + (draw-card-frame! cs x y box-width box-height rarity flourish) + (draw-rarity-rail! cs x y box-width rarity (:rail down)) + (draw-foot-ornament! cs x y box-width (- box-height (:ornament up))) + (when clause + (draw-attunement-badge! cs x y box-width (:badge down))) + ;; The name is indented further and set larger, so it reads as a title. + ;; It shrinks to fit two lines, but not below :name-floor, where it takes + ;; a third instead. The block's height is fixed so header rules fall level + ;; across a sheet; a one-line name sits in the middle of it. + (let [face (name-face fonts) + width (- box-width 0.56) + lines-at (fn [pt] (count (draw/split-lines item-name face pt width))) + fits? (fn [pt] (let [n (lines-at pt)] + (and (<= n 3) + (<= (* n (/ (* pt 1.1) 72)) (:name-height down))))) + size (or (first (filter fits? + (take-while #(>= % (:name-floor down)) + (iterate #(- % 0.5) name-size)))) + (:name-floor down)) + top (condp = (lines-at size) + 1 (:name-one-line down) + 2 (:name-two-line down) + (:name-three-line down))] + (.setCharacterSpacing cs (float name-tracking)) + (draw/draw-text-to-box cs item-name face size + (+ x 0.28) (- 11.0 y top) width (:name-height down)) + (.setCharacterSpacing cs (float 0))) + ;; The subtitle stops short of the badge so the two never meet. + (draw/draw-text-to-box cs (magic-item-subtitle item) (:italic fonts) 7.5 + (+ x 0.2) (- 11.0 y (:subtitle down)) + (- box-width (if clause 0.68 0.4)) 0.2) + ;; A rule and a hairline under it: the header carries two kinds of + ;; information, so it closes with more than the body's plain divisions. + (.setLineWidth cs (float 0.9)) + (polyline! cs x y [[0.2 (:rule down)] [(- box-width 0.2) (:rule down)]] false) + (.setLineWidth cs (float 0.35)) + (polyline! cs x y [[0.2 (:rule-under down)] [(- box-width 0.2) (:rule-under down)]] false) + (.setLineWidth cs (float 1)) + (when charges + (draw-charge-track! cs x y box-width charges (:charge-marks down) (:charge-label down)) + (.setLineWidth cs (float 0.35)) + (polyline! cs x y [[0.2 (:charge-under down)] [(- box-width 0.2) (:charge-under down)]] false) + (.setLineWidth cs (float 1))) + (let [remaining-desc-lines + (draw/draw-lines-to-box cs body-lines (:plain fonts) 8 + (+ x 0.2) (- 11.0 y body-top) + (- box-height body-top body-bottom))] + ;; Centred, like the ornament under it and the note above it. Flush + ;; left it was the only thing at the foot on its own axis. + (when clause + (draw-centred-lines! cs clause (:italic fonts) 6.8 + (+ x (/ box-width 2)) + (- 11.0 y (- box-height (:clause up))) + (- box-width 0.4) 2)) + ;; A phrase rather than the recharge icon. At the bottom right the + ;; icon sat on the corner diamond and its arms, every other spot down + ;; there belongs to the clause or the ornament, and an arrow does not + ;; say what it means anyway. + (when (seq remaining-desc-lines) + (draw-centred-text! cs "continued on the back" (:italic fonts) 6.2 + (+ x (/ box-width 2)) + (- 11 y (- box-height + (if clause (:continued up) (:continued-bare up)))))) + {:remaining-lines remaining-desc-lines + :spell-name item-name})))))))) diff --git a/src/clj/orcpub/pdf/draw.clj b/src/clj/orcpub/pdf/draw.clj index f39407313..5c77c2005 100644 --- a/src/clj/orcpub/pdf/draw.clj +++ b/src/clj/orcpub/pdf/draw.clj @@ -109,6 +109,15 @@ "Standard Helvetica font (bold weight, italic/oblique)" (PDType1Font. Standard14Fonts$FontName/HELVETICA_BOLD_OBLIQUE)) +(def site-stamp + "The site line printed on card backs, the spellbook foot and every character-sheet + page. Here because all three draw it; the placement is each one's own." + "dungeonmastersvault.com") + +(def site-stamp-size + "Point size of `site-stamp`. The spellbook sets its own, 6.6 with letter-spacing." + 6) + (defn load-fonts "Loads the fonts for the document. Will contain :plain, :italic, :bold and :bold-italic fonts." diff --git a/src/clj/orcpub/routes.clj b/src/clj/orcpub/routes.clj index 61b78e3fe..e4ebe1cab 100644 --- a/src/clj/orcpub/routes.clj +++ b/src/clj/orcpub/routes.clj @@ -40,6 +40,7 @@ [orcpub.index :refer [index-page]] [orcpub.pdf :as pdf] [orcpub.pdf.draw :as draw] + [orcpub.pdf.cards :as cards] [orcpub.spellbook :as spellbook] [orcpub.dnd.e5.emblems :as emblems] [orcpub.registration :as registration] @@ -1043,7 +1044,7 @@ :attack-bonus (get spell-attack-mods class)}))) part) remaining-desc-lines (vec - (pdf/print-spells + (cards/print-spells cs doc fonts @@ -1058,8 +1059,8 @@ back-page (PDPage.)] (with-open [back-page-cs (PDPageContentStream. doc back-page)] (.addPage doc back-page) - (pdf/print-backs back-page-cs fonts img 2.5 3.5 remaining-desc-lines i - logo-img))))))) + (cards/print-backs back-page-cs fonts img 2.5 3.5 remaining-desc-lines i + logo-img))))))) (catch Exception e (println "pdf: failed adding spell cards -" (.getMessage e))))) @@ -1076,13 +1077,13 @@ (let [page (PDPage.)] (.addPage doc page) (with-open [cs (PDPageContentStream. doc page)] - (let [remaining-desc-lines (vec (pdf/print-items cs doc fonts img 2.5 3.5 - part i bw? bw-faded?)) + (let [remaining-desc-lines (vec (cards/print-items cs doc fonts img 2.5 3.5 + part i bw? bw-faded?)) back-page (PDPage.)] (with-open [back-page-cs (PDPageContentStream. doc back-page)] (.addPage doc back-page) - (pdf/print-backs back-page-cs fonts img 2.5 3.5 remaining-desc-lines i - logo-img))))))) + (cards/print-backs back-page-cs fonts img 2.5 3.5 remaining-desc-lines i + logo-img))))))) (catch Exception e (println "pdf: failed adding magic item cards" e)))) (defn- one-of diff --git a/src/clj/orcpub/spellbook.clj b/src/clj/orcpub/spellbook.clj index 1f63f1e6f..a5439013d 100644 --- a/src/clj/orcpub/spellbook.clj +++ b/src/clj/orcpub/spellbook.clj @@ -900,8 +900,8 @@ (let [ty (- page-h 22)] (text! cs (:plain fonts) 6.6 margin ty (str "Spellbook of " (if (s/blank? character-name) "an adventurer" character-name)) {:color ink-2}) (folio! cs fonts (+ margin (/ w 2)) (- ty 2.4) n) - (let [sw (spaced-width (:plain fonts) 6.6 pdf/site-stamp 0.4)] - (text! cs (:plain fonts) 6.6 (- (+ margin w) sw) ty pdf/site-stamp {:color ink-2 :spacing 0.4})))) + (let [sw (spaced-width (:plain fonts) 6.6 draw/site-stamp 0.4)] + (text! cs (:plain fonts) 6.6 (- (+ margin w) sw) ty draw/site-stamp {:color ink-2 :spacing 0.4})))) (defn- draw-page! "Draws `page`: running head, inset tabs when asked for, every block of units, the footer, diff --git a/test/clj/orcpub/card_export_test.clj b/test/clj/orcpub/card_export_test.clj index ace803120..0addb5877 100644 --- a/test/clj/orcpub/card_export_test.clj +++ b/test/clj/orcpub/card_export_test.clj @@ -3,7 +3,6 @@ ;; explicit :refer to avoid namespace pollution from :refer :all (:require [clojure.test :refer [deftest is testing]] [clojure.string :as str] - [orcpub.pdf :as pdf] [orcpub.pdf.draw :as draw] [orcpub.routes :as routes] [orcpub.dnd.e5.spells :as spells] @@ -148,12 +147,12 @@ (testing "each of the nine card backs carries the site line" (with-open [doc (render-cards #{:spells})] (let [text (str/join (map :ch (glyphs doc 1)))] - (is (= 9 (count (re-seq (re-pattern pdf/site-stamp) text))) + (is (= 9 (count (re-seq (re-pattern draw/site-stamp) text))) "one stamp per card on the back page")))) (testing "and the item cards' backs too, which share print-backs" (with-open [doc (render-cards #{:items})] (let [text (str/join (map :ch (glyphs doc 1)))] - (is (= 9 (count (re-seq (re-pattern pdf/site-stamp) text)))))))) + (is (= 9 (count (re-seq (re-pattern draw/site-stamp) text)))))))) (deftest overflow-text-clears-the-site-stamp ;; REGRESSION: draw-lines-to-box fills its box to the last line that fits, and @@ -169,7 +168,7 @@ box-of (fn [{:keys [x y]}] [(int (/ (- x (* 72 0.5)) (* 72 2.5))) (int (/ (- y (* 72 0.25)) (* 72 3.5)))]) - stamp-chars (set pdf/site-stamp)] + stamp-chars (set draw/site-stamp)] (doseq [[box gs] (group-by box-of all) ;; The page header sits above the grid and is not a card. :when (<= 0 (second box) 2)] @@ -178,7 +177,7 @@ bottom (apply max (map :y gs)) stamp (filter #(> (:y %) (- bottom 2)) gs) body (remove #(> (:y %) (- bottom 2)) gs)] - (is (= pdf/site-stamp (str/join (map :ch (sort-by :x stamp)))) + (is (= draw/site-stamp (str/join (map :ch (sort-by :x stamp)))) (str "box " box " ends with the stamp")) (when (seq body) (is (> (- bottom (apply max (map :y body))) 6.0) diff --git a/test/clj/orcpub/card_geometry_test.clj b/test/clj/orcpub/card_geometry_test.clj index 278568ca3..d7bf840b1 100644 --- a/test/clj/orcpub/card_geometry_test.clj +++ b/test/clj/orcpub/card_geometry_test.clj @@ -8,8 +8,8 @@ Re-seed after a DELIBERATE change: CARD_GEOMETRY=seed lein test, then read the diff." (:require [clojure.test :refer [deftest is testing]] [orcpub.pdf-ops :as ops] - [orcpub.pdf :as pdf] [orcpub.pdf.draw :as draw] + [orcpub.pdf.cards :as cards] [orcpub.routes :as routes] [orcpub.dnd.e5.spells :as spells] [orcpub.dnd.e5.magic-items :as magic-items]) @@ -97,7 +97,7 @@ (first (filter #(= nm (:name %)) magic-items/magic-items))) (def ^:private ornament-labels - (vec (for [family pdf/card-flourishes, [mode _ _] print-modes] + (vec (for [family cards/card-flourishes, [mode _ _] print-modes] (str (name family) " / " (name mode))))) (defn- ornament-pages @@ -108,13 +108,13 @@ (with-open [doc (PDDocument.)] (let [fonts (draw/load-fonts doc) img (draw/make-image-loader doc)] - (doseq [family pdf/card-flourishes + (doseq [family cards/card-flourishes [_ bw? faded?] print-modes] (let [page (PDPage.)] (.addPage doc page) (with-open [cs (PDPageContentStream. doc page)] - (pdf/print-items cs doc fonts img 2.5 3.5 items 0 bw? faded? - {:flourish family}))))) + (cards/print-items cs doc fonts img 2.5 3.5 items 0 bw? faded? + {:flourish family}))))) (.save doc out)) (with-open [doc (Loader/loadPDF (.toByteArray out))] (ops/doc-ops doc)))) @@ -131,11 +131,11 @@ (set (map :expect rarity-cases))))) (testing "both charge paths, either side of tickable-charges" (doseq [{:keys [name charges]} (filter :charges rarity-cases)] - (is (= charges (pdf/item-charges + (is (= charges (cards/item-charges (:orcpub.dnd.e5.magic-items/description (item-named name)))) (str (pr-str name) " no longer reads as " charges " charges"))) (is (= #{true false} - (set (map #(<= % @#'pdf/tickable-charges) (keep :charges rarity-cases)))) + (set (map #(<= % @#'cards/tickable-charges) (keep :charges rarity-cases)))) "the matrix needs one item each side of tickable-charges")) (testing "an attunement badge and a name that must shrink are both on the page" (is (some #(seq (str (:orcpub.dnd.e5.magic-items/attunement (item-named (:name %))))) diff --git a/test/clj/orcpub/magic_item_cards_test.clj b/test/clj/orcpub/magic_item_cards_test.clj index f075abf56..8b9cd29b8 100644 --- a/test/clj/orcpub/magic_item_cards_test.clj +++ b/test/clj/orcpub/magic_item_cards_test.clj @@ -2,56 +2,56 @@ "Covers the magic item card text: the line under the name, and attunement." ;; explicit :refer to avoid namespace pollution from :refer :all (:require [clojure.test :refer [deftest is testing]] - [orcpub.pdf :as pdf] + [orcpub.pdf.cards :as cards] [orcpub.dnd.e5.magic-items :as mi])) (deftest attunement-reads-the-way-the-books-write-it (testing "an item needing none says nothing" - (is (nil? (pdf/attunement-phrase nil nil))) - (is (nil? (pdf/attunement-phrase [] nil)))) + (is (nil? (cards/attunement-phrase nil nil))) + (is (nil? (cards/attunement-phrase [] nil)))) (testing "anyone may attune" - (is (= "(requires attunement)" (pdf/attunement-phrase [:any] nil)))) + (is (= "(requires attunement)" (cards/attunement-phrase [:any] nil)))) (testing "one class" - (is (= "(requires attunement by a warlock)" (pdf/attunement-phrase [:warlock] nil)))) + (is (= "(requires attunement by a warlock)" (cards/attunement-phrase [:warlock] nil)))) (testing "the article goes on the first name only, as the books set it" (is (= "(requires attunement by a sorcerer or wizard)" - (pdf/attunement-phrase [:sorcerer :wizard] nil))) + (cards/attunement-phrase [:sorcerer :wizard] nil))) (is (= "(requires attunement by a bard, cleric, or druid)" - (pdf/attunement-phrase [:bard :cleric :druid] nil)))) + (cards/attunement-phrase [:bard :cleric :druid] nil)))) (testing "an alignment is a creature of that alignment, not 'a good'" (is (= "(requires attunement by a creature of good alignment)" - (pdf/attunement-phrase [:good] nil)))) + (cards/attunement-phrase [:good] nil)))) (testing "a spelled-out condition wins over the list" (is (= "(requires attunement outdoors at night)" - (pdf/attunement-phrase [:any] "requires attunement outdoors at night"))))) + (cards/attunement-phrase [:any] "requires attunement outdoors at night"))))) (deftest the-subtitle-names-kind-and-rarity (testing "in that order, comma separated" (is (= "Weapon, very rare" - (pdf/magic-item-subtitle {::mi/type :weapon + (cards/magic-item-subtitle {::mi/type :weapon ::mi/rarity :very-rare})))) (testing "attunement is left to the foot of the card, not repeated here" (is (= "Weapon, very rare" - (pdf/magic-item-subtitle {::mi/type :weapon + (cards/magic-item-subtitle {::mi/type :weapon ::mi/rarity :very-rare ::mi/attunement [:sorcerer :warlock :wizard]})) "the long clause clipped this line, and the card already prints it below")) (testing "a subtype is parenthesised after the kind" (is (= "Weapon (sword), rare" - (pdf/magic-item-subtitle {::mi/type :weapon + (cards/magic-item-subtitle {::mi/type :weapon ::mi/subtype :sword ::mi/rarity :rare})))) (testing "varies is spelled out, since 'varies' alone reads as a rarity name" (is (= "Wondrous item, rarity varies" - (pdf/magic-item-subtitle {::mi/type :wondrous-item + (cards/magic-item-subtitle {::mi/type :wondrous-item ::mi/rarity :varies})))) (testing "missing pieces are left out rather than rendered blank" - (is (= "Potion" (pdf/magic-item-subtitle {::mi/type :potion}))) - (is (= "" (pdf/magic-item-subtitle {}))))) + (is (= "Potion" (cards/magic-item-subtitle {::mi/type :potion}))) + (is (= "" (cards/magic-item-subtitle {}))))) (deftest every-shipped-item-produces-a-subtitle (testing "no item in the data throws or renders nil" - (let [subtitles (map pdf/magic-item-subtitle (vals mi/magic-item-map))] + (let [subtitles (map cards/magic-item-subtitle (vals mi/magic-item-map))] (is (= 805 (count subtitles))) (is (every? string? subtitles)) (is (every? #(not (re-find #"null|clojure\.lang|\{" %)) subtitles) @@ -59,27 +59,27 @@ (deftest charges-are-read-off-the-item-text (testing "a plain count" - (is (= 3 (pdf/item-charges "This gem has 3 charges. As an action..."))) - (is (= 7 (pdf/item-charges "The staff has 7 charges.")))) + (is (= 3 (cards/item-charges "This gem has 3 charges. As an action..."))) + (is (= 7 (cards/item-charges "The staff has 7 charges.")))) (testing "a die expression takes its maximum, so the best roll still has a circle" - (is (= 9 (pdf/item-charges "The sword has 1d8 + 1 charges."))) - (is (= 8 (pdf/item-charges "It has 1d8 charges.")))) + (is (= 9 (cards/item-charges "The sword has 1d8 + 1 charges."))) + (is (= 8 (cards/item-charges "It has 1d8 charges.")))) (testing "line breaks in the description do not hide the number" - (is (= 4 (pdf/item-charges "The wand\nhas 4 charges and regains them at dawn.")))) + (is (= 4 (cards/item-charges "The wand\nhas 4 charges and regains them at dawn.")))) (testing "nothing to track draws nothing" - (is (nil? (pdf/item-charges nil))) - (is (nil? (pdf/item-charges "You gain a +2 bonus to attack rolls."))) - (is (nil? (pdf/item-charges "It has 3 charge levels")) + (is (nil? (cards/item-charges nil))) + (is (nil? (cards/item-charges "You gain a +2 bonus to attack rolls."))) + (is (nil? (cards/item-charges "It has 3 charge levels")) "'charges' must be the word, not a prefix")) (testing "a big pool is still read; the card writes it rather than ticking it" - (is (= 50 (pdf/item-charges "The staff has 50 charges."))) - (is (= 12 (pdf/item-charges "It has 12 charges.")))) + (is (= 50 (cards/item-charges "The staff has 50 charges."))) + (is (= 12 (cards/item-charges "It has 12 charges.")))) (testing "past 99 is parse noise, not a charge pool" - (is (nil? (pdf/item-charges "It has 500 charges."))))) + (is (nil? (cards/item-charges "It has 500 charges."))))) (deftest charge-parsing-survives-every-shipped-item (testing "no description throws, and every count is a plausible pool" - (let [counts (keep #(pdf/item-charges (::mi/description %)) (vals mi/magic-item-map))] + (let [counts (keep #(cards/item-charges (::mi/description %)) (vals mi/magic-item-map))] (is (seq counts) "some items do have charges") (is (every? #(<= 1 % 99) counts)) (is (= 55 (count counts)) @@ -89,4 +89,4 @@ (filter #(re-find #"words are charged with magic" (str (::mi/description %)))))] (is (seq tomes)) - (is (every? #(nil? (pdf/item-charges (::mi/description %))) tomes))))) + (is (every? #(nil? (cards/item-charges (::mi/description %))) tomes))))) diff --git a/test/clj/orcpub/pdf_test.clj b/test/clj/orcpub/pdf_test.clj index d6aa133bd..b0f780106 100644 --- a/test/clj/orcpub/pdf_test.clj +++ b/test/clj/orcpub/pdf_test.clj @@ -5,6 +5,7 @@ [clojure.string :as str] [orcpub.pdf :as pdf] [orcpub.pdf.draw :as draw] + [orcpub.pdf.cards :as cards] [orcpub.dnd.e5.spell-packing :as packing]) (:import (org.apache.pdfbox Loader) (org.apache.pdfbox.cos COSName) @@ -92,13 +93,13 @@ :components {:verbal true}} :class-nm "Wizard" :dc 13 :attack-bonus 5}]] (is (sequential? - (pdf/print-spells cs doc fonts img 2.5 3.5 spell 0 false false false)) + (cards/print-spells cs doc fonts img 2.5 3.5 spell 0 false false false)) "color icons: returns the remaining-lines sequence without throwing") (is (sequential? - (pdf/print-spells cs doc fonts img 2.5 3.5 spell 0 false true false)) + (cards/print-spells cs doc fonts img 2.5 3.5 spell 0 false true false)) "B&W solid: solid-black -bw icons + halo labels, renders without throwing") (is (sequential? - (pdf/print-spells cs doc fonts img 2.5 3.5 spell 0 false true true)) + (cards/print-spells cs doc fonts img 2.5 3.5 spell 0 false true true)) "B&W faded: grayscale icons (reduced alpha), renders without throwing"))))))) (deftest print-backs-renders-with-optional-logo @@ -112,11 +113,11 @@ page (.getPage doc 0) lines (vec (repeat 9 {:remaining-lines ["overflow line"] :spell-name "Bolt"}))] (with-open [cs (PDPageContentStream. doc page)] - (is (sequential? (pdf/print-backs cs fonts img 2.5 3.5 lines 0 "public/image/dmv-logo-bw.png")) + (is (sequential? (cards/print-backs cs fonts img 2.5 3.5 lines 0 "public/image/dmv-logo-bw.png")) "grayscale logo on") - (is (sequential? (pdf/print-backs cs fonts img 2.5 3.5 lines 0 "public/image/dmv-logo-black.png")) + (is (sequential? (cards/print-backs cs fonts img 2.5 3.5 lines 0 "public/image/dmv-logo-black.png")) "solid-black logo on") - (is (sequential? (pdf/print-backs cs fonts img 2.5 3.5 lines 0 nil)) + (is (sequential? (cards/print-backs cs fonts img 2.5 3.5 lines 0 nil)) "logo off")))))) (deftest normalize-text-coerces-to-winansi @@ -750,7 +751,7 @@ (pdf/grow-spell-sections! doc casters (if (zero? casters) :all marks)) (pdf/stamp-site-line! doc site-line (boolean prints-site-line?)) (doseq [i (range (.getNumberOfPages doc))] - (is (= 1 (count (re-seq (re-pattern pdf/site-stamp) (page-text doc i)))) + (is (= 1 (count (re-seq (re-pattern draw/site-stamp) (page-text doc i)))) (str "style " style ", " casters " caster(s), page " (inc i))))))))) (defn- ink-free? @@ -762,7 +763,7 @@ (let [dpi 300.0 img (.renderImageWithDPI (org.apache.pdfbox.rendering.PDFRenderer. doc) index (float dpi)) - w (draw/string-width pdf/site-stamp draw/HELVETICA 6) + w (draw/string-width draw/site-stamp draw/HELVETICA 6) h (/ 8.0 72) height (.getHeight img) x0 (int (* x dpi)) From 8841cdac60f9600dcc40bb7994759d4d607f87d1 Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Fri, 16 Oct 2026 08:46:45 +0000 Subject: [PATCH 14/40] Pin the AcroForm character sheet, which nothing covered The card and spellbook baselines cover 57 pages we build from nothing. The character sheet - template artwork we append to - had none, and draw-text has 6 callers in pdf.clj. So every change to a shared drawing primitive on this branch moved the live sheet export with nothing watching it. That gap blocks the page-size work and the orchestrator move both. sheet_geometry_test runs the export's own sequence from generate-character-pdf across all four styles - grow-spell-sections!, add-missing-spell-pages!, merge-style-fields, apply-relabel-instructions!, reserve-annotation-columns!, write-fields! over spill-overflow!, annotate-spell-rows!, draw-column-heading!, stamp-site-line! - and pins 18 pages, 71,267 operators, in 8.5K of fingerprints. TWO pins, because one is not enough. Unflattened field boxes do not appear in a page's content stream at all, so an operator-only test would pass a change that slid every field off its artwork - which is exactly what a bad page translate does. The second pin hashes every widget's name and rect. Proven independent: moving a widget rect 0.5pt reddens the widget pin on all four styles and leaves the operator pin green. Discrimination, by perturb-and-revert, because a seeded baseline is not evidence: stamp-site-line! y +0.003in 16 of 18 pages relabel-numeral! 0.22 -> 0.25 4 - every style, page 3 annotate-spell-rows! x -0.2in 8 - every style, pages 3 and 4 draw-column-heading! 9.0->9.4 4 - every style, page 3 widget rect +0.5pt 4 widget rows, operator pin GREEN The 2 pages the site-line perturbation does not touch are style 4's spell pages, whose artwork prints its own line and which page-prints-site-line? skips. That behaviour is now pinned rather than merely believed. Three faults in my own fixture, found before trusting it: - 144 pages. The overflow field was ~10,500 characters and spilled ~32 continuation pages a style. Cut to 30 repeats: 18 pages, and the baseline went 56K -> 8.5K. - class-and-level does not exist. It is class-level, in all four styles. Dumped the forms rather than guessing a second time. - spell-slots--
was missing, and that is what bar-compartments reads to find a bar at all. Without it draw-column-heading! would have drawn NOTHING on all four styles and the baseline would have pinned the absence of a heading. Same failure as the bug-fix test earlier on this branch that passed against broken code. slots-expended-* existing only on styles 1 and 3 is NOT a fault: bar-compartments has a deliberate fallback taking the wide compartment from the spell row's right edge for "a style with no slots-expended field (2 and 4)". Feeding the key covers both branches, and write-fields! reporting it dropped on 2 and 4 is that fallback being taken. Also fixes pdf_ops: a fingerprint without :ops printed "null ops recorded, null now" on failure. The earlier (:ops % 0) fix covered seeding only, not the report. It now names the keys that differ. lein test 716/5439 green (was 714/5413), lein lint 0 errors, and the card, ornament, spellbook and comment baselines all UNCHANGED. --- test/clj/orcpub/pdf_ops.clj | 15 +- test/clj/orcpub/sheet_geometry_test.clj | 143 ++++++ test/sheet-geometry-baseline.edn | 650 ++++++++++++++++++++++++ test/sheet-widgets-baseline.edn | 6 + 4 files changed, 811 insertions(+), 3 deletions(-) create mode 100644 test/clj/orcpub/sheet_geometry_test.clj create mode 100644 test/sheet-geometry-baseline.edn create mode 100644 test/sheet-widgets-baseline.edn diff --git a/test/clj/orcpub/pdf_ops.clj b/test/clj/orcpub/pdf_ops.clj index 4609a0dfe..ac56aeda3 100644 --- a/test/clj/orcpub/pdf_ops.clj +++ b/test/clj/orcpub/pdf_ops.clj @@ -97,7 +97,7 @@ (println ";; A diff here is drawing moving. Read it before committing it.") (binding [*print-length* nil *print-level* nil] (pprint/pprint pages)))) - (println "seeded" (reduce + (map #(if (map? %) (:ops %) (count %)) pages)) + (println "seeded" (reduce + (map #(if (map? %) (:ops % 0) (count %)) pages)) "operators across" (count pages) "pages to" file)) (defn check-baseline! @@ -117,7 +117,16 @@ (testing (str "page " i " (" nm ")") (when-not (= was now) (if (map? was) - (do (println (format "%n%s page %d (%s): %d ops recorded, %d now" + (if-not (:ops was) + ;; A fingerprint that is not operator counts -- the sheet's widget + ;; boxes. Report the keys that actually differ; the operator + ;; branch below would print "null ops" and an empty :kinds diff. + (do (println (format "%n%s %d (%s):" what i nm)) + (doseq [k (sort (into #{} (concat (keys was) (keys now)))) + :when (not= (get was k) (get now k))] + (println (format " %-10s %s -> %s" + (name k) (pr-str (get was k)) (pr-str (get now k)))))) + (do (println (format "%n%s page %d (%s): %d ops recorded, %d now" what i nm (:ops was) (:ops now))) (println " stream" (:sha was) "->" (:sha now)) (let [moved (for [[k label] [[:geom "geometry"] [:colour "colour"] @@ -131,7 +140,7 @@ (doseq [k (sort (into #{} (concat (keys (:kinds was)) (keys (:kinds now))))) :let [a (get (:kinds was) k 0) b (get (:kinds now) k 0)] :when (not= a b)] - (println (format " %-4s %d -> %d" k a b)))) + (println (format " %-4s %d -> %d" k a b))))) (do (println (format "%n%s page %d (%s): %d ops recorded, %d now" what i nm (count was) (count now))) (doseq [[j a b] (first-diffs was now 12)] diff --git a/test/clj/orcpub/sheet_geometry_test.clj b/test/clj/orcpub/sheet_geometry_test.clj new file mode 100644 index 000000000..ec4d3aaa8 --- /dev/null +++ b/test/clj/orcpub/sheet_geometry_test.clj @@ -0,0 +1,143 @@ +(ns orcpub.sheet-geometry-test + "Pins what the export DRAWS on the AcroForm character sheet, and where the fields sit. + + The card and spellbook baselines cover pages we build from nothing. These pages are + template artwork we append to, and nothing covered them -- so changing a shared + primitive moved the live sheet export unwatched. draw-text has 6 callers here." + (:require [clojure.test :refer [deftest testing]] + [clojure.java.io :as io] + [clojure.string :as str] + [orcpub.pdf-ops :as ops] + [orcpub.pdf :as pdf]) + (:import (org.apache.pdfbox Loader) + (java.security MessageDigest))) + +;; The four things that draw here, from routes.clj's order: apply-relabel-instructions! +;; (numeral patches), annotate-spell-rows! (row marks), draw-column-heading! (packed +;; column labels), stamp-site-line! (every page). Each one is a draw-text caller. + +(def ^:private casters 2) + +(defn- spell-rows + "`spells---
` values, the naming the templates use. Names are + fixed strings, not generated, so a change to the spell data cannot move the baseline." + [] + (into {} + (for [section (range 1 (inc casters)) + level [0 1 3] + row [1 2 5]] + [(keyword (format "spells-%d-%d-%d" level row section)) + (format "Spell L%dR%dS%d" level row section)]))) + +(defn- slot-fields + "`spell-slots--
` is what bar-compartments reads to find a bar at all, + and it exists on every style. `slots-expended-*` only exists on styles 1 and 3, so + feeding it covers BOTH of bar-compartments' branches -- the field on 1 and 3, the + spell-row right edge fallback on 2 and 4. write-fields! reporting it dropped on 2 and + 4 is that fallback being taken, not a broken fixture." + [] + (into {} + (for [section (range 1 (inc casters)) + level [1 3] + [prefix v] [["spell-slots" "4"] ["slots-expended" "2"]]] + [(keyword (format "%s-%d-%d" prefix level section)) v]))) + +(def ^:private fields + (merge + {:character-name "Characterisation Probe" + ;; class-level, NOT class-and-level: dumped from the templates, all four agree. + :class-level "Wizard 7 / Cleric 3" + :race "Half-Elf" :alignment "Neutral Good" :background "Sage" + :ac "17" :initiative "+3" :speed "30 ft." + :cha "14" :cha-mod "+2" + :spellcasting-class-1 "Wizard" :spellcasting-ability-1 "INT" + :spellcasting-class-2 "Cleric" :spellcasting-ability-2 "WIS" + ;; Spills one or two continuation pages, which are drawn output of their own. + ;; Kept small on purpose: 220 repeats here span 32 pages a style, 144 in all. + :features-and-traits-2 + (str/join " " (repeat 30 "A sentence that exists only to overflow its box."))} + (slot-fields) + (spell-rows))) + +(def ^:private relabels + "One valid, one refused -- the refused path must not draw." + [{:section 1 :box 3 :label "4"} + {:section 99 :box 3 :label "nope"}]) + +(def ^:private headings + [{:box 0 :section 1 :class "Wizard" :ability "INT" :dc "15" :attack "+7"} + {:box 0 :section 2 :class "Cleric" :cantrips? false}]) + +(defn- annotate + "Marks for the rows whose names spell-rows made, keyed off the printed value." + [value] + (when (str/starts-with? value "Spell L") + (cond-> {} + (str/includes? value "R1") (assoc :concentration? true) + (str/includes? value "R2") (assoc :material "M") + (str/includes? value "R5") (assoc :tag "ritual")))) + +(defn- build-sheet + "The export's own sequence for `style`, from routes.clj's generate-character-pdf." + [style] + (let [{:keys [file marks site-line prints-site-line?]} (get pdf/sheet-masters style) + doc (with-open [in (.openStream (io/resource file))] + (Loader/loadPDF (.readAllBytes in)))] + (pdf/grow-spell-sections! doc casters marks) + (pdf/add-missing-spell-pages! doc fields 9) + (let [merged (pdf/merge-style-fields style fields)] + (pdf/apply-relabel-instructions! doc relabels casters style) + (pdf/reserve-annotation-columns! doc) + (pdf/write-fields! doc (pdf/spill-overflow! doc merged) false {}) + (pdf/annotate-spell-rows! doc annotate) + (doseq [{:keys [box section class] :as h} headings] + (pdf/draw-column-heading! doc style box section class h))) + (pdf/stamp-site-line! doc site-line (boolean prints-site-line?)) + doc)) + +(defn- widget-geometry + "Every widget as \"name x y w h\" at 2dp, sorted. Page content streams do not carry + unflattened field boxes, so a move that shifted fields off their artwork -- which is + exactly what a page translate or scale does wrong -- would not show in the operators." + [doc] + (->> (for [i (range (.getNumberOfPages doc)) + a (.getAnnotations (.getPage doc i)) + :let [r (.getRectangle a)] + :when r] + (format "%d %s %.2f %.2f %.2f %.2f" + i + (or (some-> a .getCOSObject (.getNameAsString "T")) "-") + (.getLowerLeftX r) (.getLowerLeftY r) + (.getWidth r) (.getHeight r))) + sort + vec)) + +(defn- sha12 [coll] + (let [bs (.digest (MessageDigest/getInstance "SHA-256") + (.getBytes (str/join "\n" coll) "UTF-8"))] + (subs (apply str (map #(format "%02x" (bit-and % 0xff)) bs)) 0 12))) + +(def ^:private baseline "test/sheet-geometry-baseline.edn") + +(def ^:private built + "Each style built once. Both tests read it, and building a sheet is seconds." + (delay (into (sorted-map) (for [style [1 2 3 4]] [style (build-sheet style)])))) + +(deftest sheet-drawing-is-unchanged + (testing "every style's drawn operators, through the export's own order" + (let [rows (vec (for [[style doc] @built + page (range (.getNumberOfPages doc))] + [(assoc (ops/fingerprint (ops/page-ops (.getPage doc page))) + :style style) + (format "style %d page %d" style (inc page))]))] + (ops/check-baseline! baseline (mapv first rows) (mapv second rows) "sheet")))) + +(deftest field-boxes-are-unchanged + (testing "where the widgets sit, per style -- the operators cannot see this" + (let [rows (vec (for [[style doc] @built + :let [g (widget-geometry doc)]] + {:style style :widgets (count g) :sha (sha12 g)}))] + (ops/check-baseline! "test/sheet-widgets-baseline.edn" + rows + (mapv #(str "style " (:style %)) rows) + "sheet widgets")))) diff --git a/test/sheet-geometry-baseline.edn b/test/sheet-geometry-baseline.edn new file mode 100644 index 000000000..f5472a193 --- /dev/null +++ b/test/sheet-geometry-baseline.edn @@ -0,0 +1,650 @@ +;; Written by orcpub's geometry characterization tests: sheet +;; A diff here is drawing moving. Read it before committing it. +[{:ops 8484, + :kinds + {"BDC" 239, + "BT" 30, + "CS" 8, + "Do" 1, + "EMC" 239, + "ET" 30, + "G" 1, + "M" 3, + "Q" 292, + "S" 40, + "SCN" 11, + "TD" 1, + "TJ" 59, + "Tc" 48, + "Td" 34, + "Tf" 34, + "Tj" 29, + "Tm" 35, + "Tw" 55, + "W" 41, + "c" 2756, + "cm" 249, + "cs" 26, + "f" 211, + "g" 1, + "gs" 179, + "h" 206, + "l" 2084, + "m" 564, + "n" 41, + "q" 292, + "re" 46, + "rg" 2, + "scn" 207, + "v" 181, + "w" 37, + "y" 172}, + :sha "3472e3db462c", + :geom "4bc651ad8d9c", + :colour "2570ea8c830f", + :text "b432a8cccf56", + :style 1} + {:ops 4278, + :kinds + {"BDC" 17, + "BMC" 5, + "BT" 4, + "CS" 1, + "Do" 1, + "EMC" 22, + "ET" 4, + "G" 1, + "M" 2, + "Q" 59, + "S" 20, + "SCN" 3, + "TD" 1, + "TJ" 5, + "Tc" 5, + "Td" 7, + "Tf" 6, + "Tj" 9, + "Tm" 6, + "Tw" 6, + "W" 8, + "c" 2887, + "cm" 52, + "cs" 14, + "f" 34, + "g" 1, + "gs" 29, + "h" 69, + "l" 499, + "m" 306, + "n" 8, + "q" 59, + "re" 12, + "rg" 2, + "scn" 33, + "v" 36, + "w" 16, + "y" 29}, + :sha "77141d0f8e47", + :geom "d664b06f5050", + :colour "67750848e040", + :text "3c3e93ef0e13", + :style 1} + {:ops 7394, + :kinds + {"BT" 16, + "ET" 16, + "Q" 428, + "RG" 12, + "S" 126, + "TD" 7, + "TJ" 6, + "Tc" 4, + "Td" 25, + "Tf" 22, + "Tj" 42, + "Tm" 16, + "Tw" 4, + "W" 2, + "c" 2125, + "cm" 422, + "f" 301, + "gs" 102, + "h" 253, + "l" 1919, + "m" 765, + "n" 2, + "q" 428, + "re" 7, + "rg" 224, + "w" 120}, + :sha "b43c05268c95", + :geom "2f70b6c9697c", + :colour "8595b4602a89", + :text "a6cb148f47d5", + :style 1} + {:ops 7363, + :kinds + {"BT" 13, + "ET" 13, + "Q" 427, + "RG" 12, + "S" 126, + "TD" 7, + "TJ" 6, + "Tc" 4, + "Td" 22, + "Tf" 19, + "Tj" 39, + "Tm" 16, + "Tw" 4, + "W" 2, + "c" 2125, + "cm" 422, + "f" 299, + "gs" 102, + "h" 253, + "l" 1919, + "m" 765, + "n" 2, + "q" 427, + "re" 5, + "rg" 214, + "w" 120}, + :sha "26a95090c6e0", + :geom "4cfb5fadfe6b", + :colour "a062bd34a4c1", + :text "e5e91d1d2715", + :style 1} + {:ops 107, + :kinds + {"BT" 2, + "ET" 2, + "Q" 2, + "TJ" 1, + "Td" 2, + "Tf" 2, + "Tj" 1, + "Tw" 1, + "W" 1, + "c" 30, + "cm" 2, + "cs" 2, + "f" 1, + "gs" 2, + "h" 4, + "l" 34, + "m" 10, + "n" 1, + "q" 2, + "re" 1, + "rg" 2, + "scn" 2}, + :sha "f4c975a741ca", + :geom "fd97c4a603ff", + :colour "f300674bc4e9", + :text "2b93351f9e47", + :style 1} + {:ops 8817, + :kinds + {"B*" 1, + "BDC" 117, + "BT" 148, + "Do" 30, + "EMC" 117, + "ET" 148, + "G" 3, + "J" 32, + "M" 8, + "MP" 5, + "Q" 256, + "RG" 2, + "S" 40, + "TD" 1, + "TJ" 80, + "Tc" 136, + "Td" 13, + "Tf" 79, + "Tj" 84, + "Tm" 144, + "Tw" 138, + "W" 141, + "c" 80, + "cm" 124, + "cs" 1, + "f" 14, + "f*" 42, + "g" 99, + "gs" 32, + "h" 150, + "i" 2, + "j" 39, + "l" 5707, + "m" 190, + "n" 141, + "q" 256, + "re" 154, + "rg" 26, + "scn" 1, + "w" 36}, + :sha "e6a0cf8fe64f", + :geom "27f513286a38", + :colour "6c3c1042e999", + :text "1e8641967ae1", + :style 2} + {:ops 2089, + :kinds + {"B*" 2, + "BDC" 49, + "BT" 31, + "Do" 4, + "EMC" 49, + "ET" 31, + "J" 10, + "M" 1, + "Q" 57, + "RG" 2, + "S" 11, + "TJ" 15, + "Tc" 30, + "Td" 1, + "Tf" 30, + "Tj" 16, + "Tm" 30, + "Tw" 30, + "W" 29, + "cm" 27, + "f*" 12, + "g" 35, + "gs" 4, + "h" 106, + "j" 11, + "l" 1209, + "m" 119, + "n" 29, + "q" 57, + "re" 35, + "rg" 7, + "w" 10}, + :sha "4bc020d8e5e4", + :geom "ba87e97e0b80", + :colour "86575d10d1f1", + :text "fbdaedcd21c0", + :style 2} + {:ops 6304, + :kinds + {"B*" 1, + "BDC" 106, + "BT" 28, + "Do" 110, + "EMC" 106, + "ET" 28, + "G" 1, + "J" 12, + "M" 1, + "Q" 274, + "RG" 1, + "S" 118, + "T*" 11, + "TD" 50, + "TJ" 17, + "Tc" 32, + "Td" 47, + "Tf" 24, + "Tj" 238, + "Tm" 145, + "Tw" 32, + "W" 15, + "c" 113, + "cm" 255, + "f" 4, + "f*" 27, + "g" 16, + "gs" 110, + "h" 151, + "j" 3, + "l" 3561, + "m" 290, + "n" 15, + "q" 274, + "re" 20, + "rg" 55, + "w" 13}, + :sha "8b81b8b12d21", + :geom "65c59499d6dd", + :colour "eafaa24af1a0", + :text "25fb84043ffd", + :style 2} + {:ops 6273, + :kinds + {"B*" 1, + "BDC" 106, + "BT" 25, + "Do" 110, + "EMC" 106, + "ET" 25, + "G" 1, + "J" 12, + "M" 1, + "Q" 273, + "RG" 1, + "S" 118, + "T*" 11, + "TD" 50, + "TJ" 17, + "Tc" 32, + "Td" 44, + "Tf" 21, + "Tj" 235, + "Tm" 145, + "Tw" 32, + "W" 15, + "c" 113, + "cm" 255, + "f" 2, + "f*" 27, + "g" 16, + "gs" 110, + "h" 151, + "j" 3, + "l" 3561, + "m" 290, + "n" 15, + "q" 273, + "re" 18, + "rg" 45, + "w" 13}, + :sha "bc4337bc7943", + :geom "8a0753cbe921", + :colour "1dacb4d495b2", + :text "a315ce7dfd04", + :style 2} + {:ops 313, + :kinds + {"BDC" 4, + "BT" 4, + "EMC" 4, + "ET" 4, + "Q" 4, + "TJ" 1, + "Tc" 2, + "Td" 2, + "Tf" 4, + "Tj" 4, + "Tm" 3, + "Tw" 2, + "W" 2, + "cm" 1, + "f*" 1, + "h" 10, + "l" 241, + "m" 10, + "n" 2, + "q" 4, + "re" 2, + "rg" 2}, + :sha "70ee1fe07cca", + :geom "a5ded91e5ba9", + :colour "5dc9060a4fb6", + :text "b68a534826d1", + :style 2} + {:ops 2620, + :kinds + {"BDC" 48, + "BT" 74, + "Do" 1, + "EMC" 48, + "ET" 74, + "K" 24, + "Q" 110, + "S" 24, + "TD" 1, + "TJ" 82, + "Tc" 102, + "Td" 46, + "Tf" 78, + "Tj" 108, + "Tm" 140, + "Tw" 102, + "W" 25, + "c" 593, + "cm" 84, + "f" 59, + "gs" 93, + "h" 17, + "k" 101, + "l" 233, + "m" 135, + "n" 25, + "q" 110, + "re" 25, + "rg" 2, + "v" 18, + "w" 24, + "y" 14}, + :sha "6269538e3500", + :geom "90f8682f24db", + :colour "959762e87bc2", + :text "0945c624ab77", + :style 3} + {:ops 637, + :kinds + {"BT" 2, + "Do" 1, + "ET" 2, + "Q" 5, + "T*" 2, + "TD" 1, + "TJ" 15, + "Tc" 14, + "Td" 9, + "Tf" 3, + "Tj" 1, + "Tm" 4, + "Tw" 13, + "W" 1, + "c" 305, + "cm" 3, + "f" 2, + "gs" 6, + "h" 8, + "k" 5, + "l" 164, + "m" 30, + "n" 1, + "q" 5, + "re" 1, + "rg" 2, + "v" 18, + "y" 14}, + :sha "945b871c840e", + :geom "c6065017ee30", + :colour "03c4dbcadaff", + :text "ce4c387a5537", + :style 3} + {:ops 7768, + :kinds + {"BT" 17, + "BX" 30, + "Do" 1, + "ET" 17, + "EX" 30, + "K" 206, + "MP" 1, + "Q" 454, + "S" 206, + "TD" 5, + "TJ" 14, + "Tc" 16, + "Td" 25, + "Tf" 19, + "Tj" 34, + "Tm" 18, + "Tw" 15, + "W" 153, + "c" 2389, + "cm" 297, + "f" 63, + "gs" 298, + "h" 151, + "k" 63, + "l" 1767, + "m" 444, + "n" 153, + "q" 454, + "re" 126, + "rg" 34, + "sh" 30, + "v" 18, + "w" 206, + "y" 14}, + :sha "e808ccea0d9d", + :geom "50f16a3f1158", + :colour "fb45165ff2ee", + :text "6e698eb0b25c", + :style 3} + {:ops 7737, + :kinds + {"BT" 14, + "BX" 30, + "Do" 1, + "ET" 14, + "EX" 30, + "K" 206, + "MP" 1, + "Q" 453, + "S" 206, + "TD" 5, + "TJ" 14, + "Tc" 16, + "Td" 22, + "Tf" 16, + "Tj" 31, + "Tm" 18, + "Tw" 15, + "W" 153, + "c" 2389, + "cm" 297, + "f" 61, + "gs" 298, + "h" 151, + "k" 63, + "l" 1767, + "m" 444, + "n" 153, + "q" 453, + "re" 124, + "rg" 24, + "sh" 30, + "v" 18, + "w" 206, + "y" 14}, + :sha "90aaf53ee899", + :geom "4c66f64e21de", + :colour "69ac3f52bc8b", + :text "cd6676e06472", + :style 3} + {:ops 552, + :kinds + {"BDC" 99, + "BMC" 19, + "BT" 32, + "Do" 1, + "EMC" 118, + "ET" 32, + "Q" 2, + "T*" 1, + "TD" 3, + "TJ" 36, + "Tc" 13, + "Td" 49, + "Tf" 12, + "Tj" 56, + "Tm" 41, + "Tw" 31, + "cm" 1, + "gs" 1, + "k" 1, + "q" 2, + "rg" 2}, + :sha "e54e76da2593", + :geom "e3b0c44298fc", + :colour "5c4d7a30a286", + :text "a1de20f28a33", + :style 4} + {:ops 122, + :kinds + {"BDC" 22, + "BT" 2, + "Do" 1, + "EMC" 22, + "ET" 2, + "Q" 2, + "TJ" 8, + "Tc" 4, + "Td" 21, + "Tf" 9, + "Tj" 15, + "Tm" 1, + "Tw" 6, + "cm" 1, + "gs" 1, + "k" 1, + "q" 2, + "rg" 2}, + :sha "0460919acf56", + :geom "e3b0c44298fc", + :colour "5c4d7a30a286", + :text "0543417aee22", + :style 4} + {:ops 220, + :kinds + {"BDC" 22, + "BT" 15, + "Do" 1, + "EMC" 22, + "ET" 15, + "Q" 4, + "TJ" 5, + "Td" 31, + "Tf" 18, + "Tj" 30, + "Tm" 4, + "Tw" 6, + "cm" 1, + "f" 3, + "gs" 2, + "k" 1, + "q" 4, + "re" 3, + "rg" 33}, + :sha "16360a6f97ff", + :geom "8f12ae50fb9e", + :colour "8a2c77575500", + :text "08364ed04e7f", + :style 4} + {:ops 189, + :kinds + {"BDC" 22, + "BT" 12, + "Do" 1, + "EMC" 22, + "ET" 12, + "Q" 3, + "TJ" 5, + "Td" 28, + "Tf" 15, + "Tj" 27, + "Tm" 4, + "Tw" 6, + "cm" 1, + "f" 1, + "gs" 2, + "k" 1, + "q" 3, + "re" 1, + "rg" 23}, + :sha "c33d286b5bc8", + :geom "dd46d244d113", + :colour "3d3fb74c1692", + :text "538e27be77be", + :style 4}] diff --git a/test/sheet-widgets-baseline.edn b/test/sheet-widgets-baseline.edn new file mode 100644 index 000000000..955fb09a4 --- /dev/null +++ b/test/sheet-widgets-baseline.edn @@ -0,0 +1,6 @@ +;; Written by orcpub's geometry characterization tests: sheet widgets +;; A diff here is drawing moving. Read it before committing it. +[{:style 1, :widgets 549, :sha "c39392ddd533"} + {:style 2, :widgets 457, :sha "74a91d0796f4"} + {:style 3, :widgets 457, :sha "2e32b09b9eac"} + {:style 4, :widgets 461, :sha "d462c9b0225f"}] From 9f46f20342b0c0d65086717e61c121adbfa9195d Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Fri, 16 Oct 2026 08:54:52 +0000 Subject: [PATCH 15/40] Make the page a binding, and test a non-Letter page for the first time The page-size work already on this branch was decorative. pt-from-top took a page key and NOTHING passed one: all four call sites used the 2-arity form, which supplied a constant :letter. So page-sizes was consulted and always answered 612x792 - a literal 11 replaced by a table lookup returning 11. Behaviour-neutral, every baseline byte-identical, and I read that as progress. The owner caught it from one sentence: "draw-text takes y in inches and multiplies by 72 itself - this sounds like you missed a place to genericise." What changed: - default-page, a constant, is now ^:dynamic *page* with root :letter. pt-from-top's 2-arity reads it, so A4 is a binding at the entry point and no call site changes. - page-width/page-height accessors in the caller's unit, for code asking how big the page is rather than converting a coordinate. - draw-grid computes its grid from the bound page instead of 8.5/8.5/11.0. - draw-svg-icon!'s literal 11 goes through pt-from-top. Algebraically identical: 792 - 72y - 72*size either way, and the baselines agree. A dynamic var, not a parameter, because the alternative is 66 call sites plus every intermediate that has to forward it, and print-items already takes 11 positional arguments. Checked the one thing that depends on: there is no future, pmap, agent, thread or core.async anywhere in pdf.clj, cards.clj, draw.clj or spellbook.clj, so drawing runs on the request thread and the binding holds. If PDF generation ever moves to a worker thread the binding is lost and the page silently reverts to Letter - noted in plan-pdf-page-sizes.md rather than left to be rediscovered. THE TRAP, found by measuring rather than reasoning: a binding does not reach a load-time constant derived from it. spellbook.clj had page-w and page-h as top-level defs evaluated at namespace load, plus body-bottom derived from page-h. Binding :a4 would have moved the cards and silently left the spellbook on Letter. Scanned all four namespaces for the shape: three instances, all in the spellbook, none in cards.clj, pdf.clj or draw.clj, whose page literals sit inside function bodies where a binding reaches them. All three are now fns, commented as to why they cannot be defs. page_size_test is the point of this commit. Nothing had ever drawn on a non-Letter page, which is why the decorative version passed as done. It asserts the accessors, pt-from-top and the spellbook all follow the binding; that draw-grid gives 3x3 on Letter and A4 but 2x2 on A5, with a different operator stream; and that a card sheet through print-items differs between Letter and A4 - failing with "if these match, the page is being consulted and discarded again". It also caught me asserting something false. "A5 is exactly half an A4" is wrong, and I had written it in three docs and said it out loud. ISO 216 halves the previous size and rounds DOWN to a whole millimetre: half of A4's 297mm is 148.5, but A5 is 148. Half an A4's height is 420.94pt against A5's 419.53pt width, a 1.42pt sliver. Harmless to print, wrong to assert. page-sizes also carried A4 as 595.0x842.0 and A5 as 420.0x595.0 from my own rounding earlier today; the exact values are 595.28x841.89 and 419.53x595.28, and the test now pins them. Still Letter everywhere in production: nothing binds *page* yet, which is step 5. The 31 flips in cards.clj are step 3. lein test 722/5461 green (was 716/5439), lein lint 0 errors, and all SIX baselines - card, ornament, spellbook, sheet, sheet widgets, comment - UNCHANGED. --- src/clj/orcpub/pdf/draw.clj | 46 +++++++++----- src/clj/orcpub/spellbook.clj | 19 +++--- test/clj/orcpub/page_size_test.clj | 97 ++++++++++++++++++++++++++++++ 3 files changed, 139 insertions(+), 23 deletions(-) create mode 100644 test/clj/orcpub/page_size_test.clj diff --git a/src/clj/orcpub/pdf/draw.clj b/src/clj/orcpub/pdf/draw.clj index 5c77c2005..74573c529 100644 --- a/src/clj/orcpub/pdf/draw.clj +++ b/src/clj/orcpub/pdf/draw.clj @@ -23,14 +23,15 @@ "Page dimensions in POINTS, [width height]. ISO 216 for the A series; US Letter is 612x792, which is exactly 8.5x11 inches." {:letter [612.0 792.0] - :a4 [595.0 842.0] - :a5 [420.0 595.0]}) - -(def default-page - "What everything draws on today. The character-sheet templates in resources/ are all - 612x792 and their artwork is fixed, so an A4 character sheet needs A4 artwork rather - than a change here; a bare (PDPage.) is PDFBox's Letter. Changing this alone does not - produce an A4 export -- it is the one place the page height stops being a literal." + :a4 [595.28 841.89] + :a5 [419.53 595.28]}) + +(def ^:dynamic *page* + "The page every drawing call measures against, a key of `page-sizes`. Bind it once per + document; the primitives read it, so nothing threads a page through 66 call sites. + + Root is :letter, which is what a bare (PDPage.) is. A binding does NOT reach a + load-time constant derived from it -- see spellbook's page-w -- so those are fns." :letter) (defn page-size @@ -38,6 +39,17 @@ [page] (get page-sizes page (page-sizes :letter))) +(defn page-width + "The bound page's width in the caller's unit: `pt-per-unit` is 72 for inches, 1 for + points. For code asking how wide the page is, not converting a coordinate." + [pt-per-unit] + (/ (first (page-size *page*)) pt-per-unit)) + +(defn page-height + "The bound page's height in the caller's unit. `pt-per-unit` as `page-width`." + [pt-per-unit] + (/ (second (page-size *page*)) pt-per-unit)) + (defn in->pt "Inches to PDF points, 72 per inch. For SIZES -- widths, heights, offsets -- where no page origin is involved, so no flip." @@ -51,7 +63,7 @@ The one flip both drawing files use: pdf.clj had it as `(in-to-sz (- 11 inches))` with the page height inline, spellbook.clj as `(- page-h ty)`. Same arithmetic, two units, and only one of them named the height." - ([pt-per-unit y] (pt-from-top default-page pt-per-unit y)) + ([pt-per-unit y] (pt-from-top *page* pt-per-unit y)) ([page pt-per-unit y] (float (- (second (page-size page)) (* pt-per-unit y))))) @@ -312,15 +324,19 @@ (apply draw-line cs (map in->pt coords))) (defn draw-grid - "Draw the spell card grid. Light gray lines for card boundaries." + "The cut grid for cards `box-width` x `box-height` inches, as many as fit the bound + page, centred. Light grey lines. Takes its page from `*page*`, so a 2-up A5 grid on + A4 is the same call with a different binding." [cs box-width box-height] - (let [num-boxes-x (int (/ 8.5 box-width)) - num-boxes-y (int (/ 11.0 box-height)) + (let [page-w (page-width 72) + page-h (page-height 72) + num-boxes-x (int (/ page-w box-width)) + num-boxes-y (int (/ page-h box-height)) total-width (* num-boxes-x box-width) total-height (* num-boxes-y box-height) - remaining-width (- 8.5 total-width) + remaining-width (- page-w total-width) margin-x (/ remaining-width 2) - remaining-height (- 11.0 total-height) + remaining-height (- page-h total-height) margin-y (/ remaining-height 2) ;; PDFBox 3.x: setStrokingColor(float,float,float) requires 0.0-1.0 range ;; (PDFBox 2.x accepted 0-255 integers via a separate overload) @@ -560,7 +576,7 @@ (.setNonStrokingAlphaConstant (float alpha))))) (.setNonStrokingColor cs (float r) (float g) (float b)) (.transform cs (Matrix. unit 0 0 unit - (float (* 72 x)) (float (* 72 (- 11 y size))))) + (in->pt x) (pt-from-top 72 (+ y size)))) (.drawForm cs (img (str "public/image/" icon-name ".svg"))) (.restoreGraphicsState cs)) (draw-imagex-alpha cs (img (str "public/image/" icon-name ".png")) diff --git a/src/clj/orcpub/spellbook.clj b/src/clj/orcpub/spellbook.clj index a5439013d..4b315bf91 100644 --- a/src/clj/orcpub/spellbook.clj +++ b/src/clj/orcpub/spellbook.clj @@ -15,11 +15,14 @@ ;; ─── Page geometry, in points ──────────────────────────────────────────────── -(def page-w (first (draw/page-size draw/default-page))) -(def page-h (second (draw/page-size draw/default-page))) +;; FNS, not defs. These were (first (draw/page-size draw/default-page)) evaluated at +;; namespace load, which no per-document page binding could ever reach -- binding +;; draw/*page* to :a4 would have moved the cards and left the spellbook on Letter. +(defn page-w [] (draw/page-width 1)) +(defn page-h [] (draw/page-height 1)) (def ^:private margin 36.0) (def ^:private body-top 56.0) -(def ^:private body-bottom (- page-h 46.0)) +(defn- body-bottom [] (- (page-h) 46.0)) (def ^:private gutter 16.0) (def ^:private tab-room "What the inset tabs take from every line: 0.35in, about 5% of the measure." @@ -37,12 +40,12 @@ (defn body-width "The width spells are laid into, in points: the page less its margins, and less the tab column when `tabs` is :inset." - [tabs] (- page-w (* 2 margin) (if (= :inset tabs) tab-room 0))) + [tabs] (- (page-w) (* 2 margin) (if (= :inset tabs) tab-room 0))) (defn capacity "The height spells are laid into on one page." [] - (- body-bottom body-top)) + (- (body-bottom) body-top)) ;; ─── Text ──────────────────────────────────────────────────────────────────── @@ -874,7 +877,7 @@ "Draws the inset level tabs down the right edge of `page`, one per level up to `max-level`, filled for the levels on the page." [cs fonts page max-level] - (let [n (inc max-level) x (- page-w 18 15) top (+ body-top 4) bottom (- body-bottom 4) + (let [n (inc max-level) x (- (page-w) 18 15) top (+ body-top 4) bottom (- (body-bottom) 4) th (min 36 (/ (- bottom top (* 3 (dec n))) n))] (doseq [l (range n) :let [ty (+ top (* l (+ th 3))) on? (contains? (:levels page) l)]] (gray! cs ink) @@ -891,13 +894,13 @@ (let [names (->> classes (keep #(emblems/authors (:icon %))) distinct)] (when (seq names) (let [t (str "Class emblems by " (s/join ", " names) ", from game-icons.net under CC BY 3.0")] - (text! cs (:italic fonts) 5.4 (- (+ margin (/ w 2)) (/ (width (:italic fonts) 5.4 t) 2)) (- page-h 8) t + (text! cs (:italic fonts) 5.4 (- (+ margin (/ w 2)) (/ (width (:italic fonts) 5.4 t) 2)) (- (page-h) 8) t {:color ink-2}))))) (defn- footer! "Draws the foot of page `n`: whose spellbook it is, the page number and the site stamp." [cs fonts character-name n w] - (let [ty (- page-h 22)] + (let [ty (- (page-h) 22)] (text! cs (:plain fonts) 6.6 margin ty (str "Spellbook of " (if (s/blank? character-name) "an adventurer" character-name)) {:color ink-2}) (folio! cs fonts (+ margin (/ w 2)) (- ty 2.4) n) (let [sw (spaced-width (:plain fonts) 6.6 draw/site-stamp 0.4)] diff --git a/test/clj/orcpub/page_size_test.clj b/test/clj/orcpub/page_size_test.clj new file mode 100644 index 000000000..2c6759ac1 --- /dev/null +++ b/test/clj/orcpub/page_size_test.clj @@ -0,0 +1,97 @@ +(ns orcpub.page-size-test + "Proves binding draw/*page* actually changes the output. + + The previous attempt at this replaced a literal 11 with a table lookup that always + returned 11, and every baseline stayed byte-identical -- correctly, because nothing + had changed. Nothing tested a non-Letter page, so nothing caught it. This does." + (:require [clojure.test :refer [deftest testing is]] + [orcpub.pdf-ops :as ops] + [orcpub.pdf.draw :as draw] + [orcpub.pdf.cards :as cards] + [orcpub.spellbook :as spellbook]) + (:import (org.apache.pdfbox.pdmodel PDDocument PDPage PDPageContentStream) + (org.apache.pdfbox.pdmodel.common PDRectangle))) + +(deftest page-sizes-are-iso-216 + (testing "to the hundredth of a point, not rounded to the nearest point" + ;; 210x297mm and 148x210mm at 72pt/inch over 25.4mm/inch. + (is (= [595.28 841.89] (draw/page-size :a4))) + (is (= [419.53 595.28] (draw/page-size :a5))) + (is (= [612.0 792.0] (draw/page-size :letter)))) + (testing "A5 is half an A4 only to the millimetre, NOT exactly" + ;; ISO 216 halves the previous size and rounds DOWN to a whole mm: half of A4's + ;; 297mm is 148.5, but A5 is 148. So 2-up A5 on A4 leaves a 0.5mm = 1.4175pt + ;; sliver. Fine to print; not fine to assert as exact, which this test caught. + (let [gap (- (/ (second (draw/page-size :a4)) 2) + (first (draw/page-size :a5)))] + (is (< 1.41 gap 1.42) "half of 297mm less 148mm, in points") + (is (pos? gap) "A5 is the narrower of the two, never wider")))) + +(deftest accessors-follow-the-binding + (testing "page-width and page-height read *page*, in the caller's unit" + (is (= 612.0 (draw/page-width 1))) + (is (= 11.0 (draw/page-height 72))) + (binding [draw/*page* :a4] + (is (= 595.28 (draw/page-width 1))) + (is (= 841.89 (draw/page-height 1)))) + (binding [draw/*page* :a5] + (is (= 419.53 (draw/page-width 1)))))) + +(deftest the-flip-follows-the-binding + (testing "pt-from-top is the choke point every y conversion goes through" + (is (= (float 792.0) (draw/pt-from-top 72 0))) + (binding [draw/*page* :a4] + (is (= (float 841.89) (draw/pt-from-top 72 0))) + ;; An inch down from the top of a taller page is lower in PDF space. + (is (= (float (- 841.89 72)) (draw/pt-from-top 72 1)))) + (binding [draw/*page* :a5] + (is (= (float 595.28) (draw/pt-from-top 1 0)))))) + +(deftest the-spellbook-follows-the-binding + (testing "page-w/page-h were load-time defs, which no binding could reach" + (is (= 792.0 (spellbook/page-h))) + (binding [draw/*page* :a4] + (is (= 841.89 (spellbook/page-h))) + (is (= 595.28 (spellbook/page-w)))))) + +(defn- grid-ops + "The cut grid for 2.5x3.5 cards on `page`, as drawing operators." + [page] + (binding [draw/*page* page] + (with-open [doc (PDDocument.)] + (let [pg (PDPage. (PDRectangle. (draw/page-width 1) (draw/page-height 1)))] + (.addPage doc pg) + (with-open [cs (PDPageContentStream. doc pg)] + (draw/draw-grid cs 2.5 3.5)) + (ops/page-ops pg))))) + +(deftest the-card-grid-resizes + (testing "9 up on Letter and A4, 4 up on A5 -- the grid is computed, not assumed" + ;; floor(8.5/2.5)=3 x floor(11/3.5)=3; A4 3.30x3.34 -> 3x3; A5 2.33x2.36 -> 2x2. + ;; Each boundary line is moveTo + lineTo + stroke, so 3 ops a line. + (let [lines #(/ (count (filter (fn [o] (re-find #" l$" o)) %)) 1)] + (is (= 8 (lines (grid-ops :letter))) "4 vertical + 4 horizontal for 3x3") + (is (= 8 (lines (grid-ops :a4))) "A4 also fits 3x3, at different margins") + (is (= 6 (lines (grid-ops :a5))) "3 + 3 for 2x2"))) + (testing "and A4's grid is not Letter's grid: same box count, different margins" + (is (not= (grid-ops :letter) (grid-ops :a4))))) + +(deftest a-card-sheet-drawn-on-a4-is-not-the-letter-sheet + (testing "end to end through print-items, the real export entry" + (let [sheet (fn [page] + (binding [draw/*page* page] + (with-open [doc (PDDocument.)] + (let [pg (PDPage. (PDRectangle. (draw/page-width 1) (draw/page-height 1)))] + (.addPage doc pg) + (with-open [cs (PDPageContentStream. doc pg)] + (let [fonts (draw/load-fonts doc) + img (draw/make-image-loader doc)] + (cards/print-items cs doc fonts img 2.5 3.5 + [{:orcpub.dnd.e5.magic-items/name "Probe" + :orcpub.dnd.e5.magic-items/type :wondrous-item + :orcpub.dnd.e5.magic-items/rarity :rare + :orcpub.dnd.e5.magic-items/description "A short item."}] + 0 false false nil))) + (ops/page-ops pg)))))] + (is (not= (sheet :letter) (sheet :a4)) + "if these match, the page is being consulted and discarded again")))) From e4de43b1d2a528724b0b043bdae62838fbb07a07 Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Fri, 16 Oct 2026 09:21:35 +0000 Subject: [PATCH 16/40] Cards stop naming a page size, and the cut grid follows the card size Two changes, verified separately so a regression bisects. FIRST, 39 page-size literals out of cards.clj. 27 y flips now go through one draw/in-from-top -- inches down from the page top as inches up from the bottom, which is what draw-text takes, and the exact parallel of spellbook's py in points. 12 page extents read draw/page-width and draw/page-height. Nothing in the file names a page size any more, so all of it follows draw/*page*. 39, not the 31 I have been quoting since the cards split. The 31 only ever counted the height pattern (- 11 ...). There were also SIX page-WIDTH sites -- (int (/ 8.5 box-width)), (- 8.5 total-width), margin-x -- which my grep never looked for because I had framed the problem as the y flips. Page width was invisible to me the whole time I was describing the scope. The substitution asserts an exact occurrence count per pattern before writing, and that caught a near miss: (- 11.0 y 0.08) appears 3 times, not 2, because the third is inside this file's own ns comment describing the flips. Without the count it would have rewritten prose into code. Third time on this branch a pattern has matched text rather than code. No draw-text-from-top / draw-text-to-box-from-top / draw-lines-to-box-from-top variants: that is four new names on the shared API to do what one conversion function does. SECOND, the latent draw-grid bug, characterization first. print-backs and print-spells passed draw-grid literal 2.5 3.5 while threading their own box-width/box-height to everything else; print-items threaded correctly. card_grid_test compares each printer's grid against draw-grid's own output at the same size, isolating the grid by its light-grey stroke window so card frames cannot pollute the comparison. Measured at 2.0x3.0 BEFORE the fix: correct verticals x = 18, 162, 306, 450, 594 horizontals y = 72, 288, 504, 720 actual verticals x = 36, 216, 396, 576 horizontals y = 18, 270, 522, 774 18pt out horizontally, 54pt vertically, and ONE COLUMN TOO FEW - a whole column of cards would print uncut. Worse than the "mis-drawn cut grid" I filed it as. The test ran red first: 2 failures, 0 errors, on exactly the 2.0x3.0 assertions, with 2.5x3.5 passing because the literal happens to be right there. A bug-fix test that has never failed proves nothing, which this branch has already learned once. Also removes the two comment blocks that described the bug and the docstring line pointing at it. A previous pass documented this instead of fixing it, which was right then - no test could show the difference - and is why characterization had to come first now. The last assertion checks the two sizes really do produce different grids, so the others cannot pass vacuously on two empty vectors. NOT fixed, flagged instead: print-backs does (remaining-lines-vec spell-index), invoking the vector as a function, which THROWS on a vector shorter than the slot count. Latent - routes.clj always passes one print-spells just built - but add-spell-cards! wraps the whole thing in a try that prints and swallows, so a short vector would make the entire card set vanish silently. Same failure shape as the glyph bug that cost 3 of 4 pages. The fix is `get`, one word. Outside what this commit said it would touch. lein test 723/5466 green (was 722/5461), lein lint 0 errors, and all SIX baselines UNCHANGED - every routes.clj caller passes 2.5x3.5, where the old literal was correct. --- src/clj/orcpub/pdf/cards.clj | 99 ++++++++++++++---------------- src/clj/orcpub/pdf/draw.clj | 7 +++ test/clj/orcpub/card_grid_test.clj | 68 ++++++++++++++++++++ 3 files changed, 122 insertions(+), 52 deletions(-) create mode 100644 test/clj/orcpub/card_grid_test.clj diff --git a/src/clj/orcpub/pdf/cards.clj b/src/clj/orcpub/pdf/cards.clj index e8d476629..d6542901d 100644 --- a/src/clj/orcpub/pdf/cards.clj +++ b/src/clj/orcpub/pdf/cards.clj @@ -9,10 +9,10 @@ [orcpub.dnd.e5.spell-print :as sp] [orcpub.pdf.draw :as draw])) -;; UNITS: inches, y from the page TOP. draw/draw-text takes y from the BOTTOM, so -;; every text call flips by hand: `(- 11.0 y 0.08)`. All 31 such flips in the family are -;; now in this file -- pdf.clj has none. The 11 is the page height; draw/pt-from-top is -;; the parameterised form, and these 31 are what A4 and A5 cards wait on. +;; UNITS: inches, y from the page TOP. draw/draw-text takes y from the BOTTOM, so every +;; text call converts through draw/in-from-top. Page extents come from draw/page-width and +;; draw/page-height. Nothing here names a page size, so the whole file follows +;; draw/*page*. (defn- draw-spell-field "One icon-and-value field on a spell card (casting time, range, duration, @@ -23,7 +23,7 @@ ;; The label overprints the icon; this is the one choke point for all four ;; per-spell icons. Colour: icon-red icon, black text. B&W solid: black icon, ;; WHITE-HALO text. B&W faded: black icon at 40%, black text. One SVG serves all. - (let [iy (- 11 y 0.12) + (let [iy (draw/in-from-top (+ y 0.12)) [color alpha] (cond (and bw? bw-faded?) [[0 0 0] 0.4] bw? [[0 0 0] 1.0] :else [(vec (take 3 draw/icon-red)) (last draw/icon-red)])] @@ -55,7 +55,7 @@ font draw/site-stamp-size (+ x (/ (- box-width width) 2)) - (- 11.0 y (- box-height 0.16)) + (draw/in-from-top (+ y (- box-height 0.16))) [0.45 0.45 0.45]))) (defn print-backs @@ -63,30 +63,26 @@ `remaining-lines-vec` is indexed by the card position `print-spells` used, each entry `{:remaining-lines :spell-name}` from that call; a card with no overflow gets only its name and the site stamp. `logo-img` opts a card into the logo. - Inches. See the `draw-grid` call below for a latent sizing bug." + Inches." [cs fonts img box-width box-height remaining-lines-vec page-number logo-img] ;; `img` is the memoized per-document image loader; `logo?` opts each card back ;; into showing the card logo (matching the fronts) for double-sided printing. ;; When logo? is false NO images are loaded here — the old code decoded+embedded ;; the logo/rotation PNGs every page and never drew them (pure waste). - (let [num-boxes-x (int (/ 8.5 box-width)) - num-boxes-y (int (/ 11.0 box-height)) + (let [num-boxes-x (int (/ (draw/page-width 72) box-width)) + num-boxes-y (int (/ (draw/page-height 72) box-height)) total-height (* num-boxes-y box-height) - remaining-width (- 8.5 (* num-boxes-x box-width)) + remaining-width (- (draw/page-width 72) (* num-boxes-x box-width)) margin-x (/ remaining-width 2) - remaining-height (- 11.0 total-height) + remaining-height (- (draw/page-height 72) total-height) margin-y (/ remaining-height 2)] - ;; BUG: box-width/box-height size the cells and the text boxes, but the gridlines - ;; come from these literals. Latent -- every caller passes 2.5/3.5 -- but any other - ;; box size draws the lines in the wrong places. Same in print-spells; print-items - ;; threads its arguments through correctly. - (draw/draw-grid cs 2.5 3.5) + (draw/draw-grid cs box-width box-height) (draw/draw-text cs (str "Page " (inc page-number) " (reverse)") (:italic fonts) 8 0.12 - (- 11 0.15)) + (draw/in-from-top 0.15)) (doall (for [i (range num-boxes-x) j (range num-boxes-y)] @@ -102,7 +98,7 @@ (:bold fonts) 10 (+ x 0.12) - (- 11.0 y 0.08) + (draw/in-from-top (+ y 0.08)) (- box-width 0.3) 0.25) ;; The card's own box, less the strip the stamp sits in: @@ -113,14 +109,14 @@ (:plain fonts) 8 (+ x 0.12) - (- 11.0 y 0.24) + (draw/in-from-top (+ y 0.24)) (- box-height 0.2 site-stamp-strip)) (draw/draw-text-to-box cs "(reverse)" (:italic fonts) 10 (+ x 0.15 (draw/string-width spell-name (:bold fonts) 10)) - (- 11.0 y 0.08) + (draw/in-from-top (+ y 0.08)) (- box-width 0.3) (- box-height 0.2))) ;; Blank back: a large, CENTERED logo (~80% of the card). logo-img is the @@ -145,22 +141,21 @@ `print-spell-card-dc-mod?` prints save DC and attack bonus; `bw?`/`bw-faded?` select the printer-friendly renderings. Inches." [cs document fonts img box-width box-height spells page-number print-spell-card-dc-mod? bw? bw-faded?] - (let [num-boxes-x (int (/ 8.5 box-width)) - num-boxes-y (int (/ 11.0 box-height)) + (let [num-boxes-x (int (/ (draw/page-width 72) box-width)) + num-boxes-y (int (/ (draw/page-height 72) box-height)) total-width (* num-boxes-x box-width) total-height (* num-boxes-y box-height) - remaining-width (- 8.5 total-width) + remaining-width (- (draw/page-width 72) total-width) margin-x (/ remaining-width 2) - remaining-height (- 11.0 total-height) + remaining-height (- (draw/page-height 72) total-height) margin-y (/ remaining-height 2)] - ;; BUG: as in print-backs -- the gridlines ignore box-width/box-height. - (draw/draw-grid cs 2.5 3.5) + (draw/draw-grid cs box-width box-height) (draw/draw-text cs (str "Page " (inc page-number)) (:italic fonts) 8 0.12 - (- 11 0.15)) + (draw/in-from-top 0.15)) (doall (for [j (range num-boxes-y) i (range (dec num-boxes-x) -1 -1) @@ -197,7 +192,7 @@ (:plain fonts) 8 (+ x 0.12) ; from the left - (- 11.0 y 1.08) ;from the top down + (draw/in-from-top (+ y 1.08)) (- box-width 0.24) (- box-height 1.13))] (when (:material-component components) @@ -206,7 +201,7 @@ (:italic fonts) 8 (+ x 0.12) - (- 11.0 y 0.55) + (draw/in-from-top (+ y 0.55)) (- box-width 0.24) 0.5)) (let [card-logo (img (str "public/image/card-logo" (when bw? "-bw") ".png"))] @@ -218,7 +213,7 @@ (:bold fonts) 10 (+ x 0.12) - (- 11.0 y) + (draw/in-from-top y) (- box-width 0.3) 0.2) (draw/draw-text-to-box cs @@ -226,7 +221,7 @@ (:italic fonts) 10 (+ x 0.12 (draw/string-width spell-name (:bold fonts) 10)) - (- 11.0 y) + (draw/in-from-top y) (- box-width 0.3) 0.2) (draw/draw-text-to-box cs @@ -236,7 +231,7 @@ (:italic fonts) 8 (+ x 0.12) - (- 11.0 y 0.19) + (draw/in-from-top (+ y 0.19)) (- box-width 0.24) 0.25) (when casting-time @@ -249,7 +244,7 @@ casting-time #",")))) (+ x 0.12) - (- 11.0 y 0.45) + (draw/in-from-top (+ y 0.45)) bw? bw-faded?)) (when range (draw-spell-field cs @@ -257,7 +252,7 @@ "arrow-dunk" (sp/abbreviate-range range) (+ x 0.62) - (- 11.0 y 0.45) + (draw/in-from-top (+ y 0.45)) bw? bw-faded?)) (draw-spell-field cs img @@ -274,7 +269,7 @@ :somatic "S" :material "M"}))) (+ x 1.12) - (- 11.0 y 0.45) + (draw/in-from-top (+ y 0.45)) bw? bw-faded?) (when duration (draw-spell-field cs @@ -282,7 +277,7 @@ "sands-of-time" (sp/abbreviate-duration duration) (+ x 1.62) - (- 11.0 y 0.45) + (draw/in-from-top (+ y 0.45)) bw? bw-faded?)) (when (seq remaining-desc-lines) (draw/draw-svg-icon! cs img "clockwise-rotation" (+ x 2.3) (+ y 3.3) 0.15 @@ -295,7 +290,7 @@ PDF page units. Card coordinates run downward from the page top, page units run up from the page bottom." [x y dx dy] - [(float (* 72 (+ x dx))) (float (* 72 (- 11 (+ y dy))))]) + [(float (* 72 (+ x dx))) (draw/in->pt (draw/in-from-top (+ y dy)))]) (defn- card-mapper "`draw/path!`'s `pt` for the card at (x, y): card-relative inches to page units." @@ -577,7 +572,7 @@ true) (draw-centred-text! cs "A" draw/HELVETICA_BOLD 7 (+ x left (/ bw 2)) - (- 11 y dy bh -0.036)) + (draw/in-from-top (+ y dy bh -0.036))) (.setLineWidth cs (float 1)))) (defn- draw-centred-lines! @@ -620,7 +615,7 @@ (let [r 0.052 gap 0.145 cx (- (/ w 2) (/ (* gap (dec n)) 2))] - (draw-centred-text! cs "CHARGES" draw/HELVETICA 5.5 (+ x (/ w 2)) (- 11 y label-y)) + (draw-centred-text! cs "CHARGES" draw/HELVETICA 5.5 (+ x (/ w 2)) (draw/in-from-top (+ y label-y))) (doseq [i (range n)] (circle! cs x y (+ cx (* gap i)) cy r))) ;; The rule and the total are centred as one group, not the rule alone: the @@ -630,9 +625,9 @@ gap 0.05 group (+ rule-w gap (draw/string-width total draw/HELVETICA 7)) left (- (/ w 2) (/ group 2))] - (draw-centred-text! cs "CHARGES" draw/HELVETICA 5.5 (+ x (/ w 2)) (- 11 y label-y)) + (draw-centred-text! cs "CHARGES" draw/HELVETICA 5.5 (+ x (/ w 2)) (draw/in-from-top (+ y label-y))) (polyline! cs x y [[left cy] [(+ left rule-w) cy]] false) - (draw/draw-text cs total draw/HELVETICA 7 (+ x left rule-w gap) (- 11 y cy -0.015)))) + (draw/draw-text cs total draw/HELVETICA 7 (+ x left rule-w gap) (draw/in-from-top (+ y cy -0.015))))) (.setLineWidth cs (float 1))) (defn print-items @@ -650,12 +645,12 @@ :or {flourish :diamonds name-size 13 name-tracking 0.15}} opts name-face (fn [fs] (let [f (:name-face opts :bold)] (if (keyword? f) (get fs f) f))) - num-boxes-x (int (/ 8.5 box-width)) - num-boxes-y (int (/ 11.0 box-height)) - margin-x (/ (- 8.5 (* num-boxes-x box-width)) 2) - margin-y (/ (- 11.0 (* num-boxes-y box-height)) 2)] + num-boxes-x (int (/ (draw/page-width 72) box-width)) + num-boxes-y (int (/ (draw/page-height 72) box-height)) + margin-x (/ (- (draw/page-width 72) (* num-boxes-x box-width)) 2) + margin-y (/ (- (draw/page-height 72) (* num-boxes-y box-height)) 2)] (draw/draw-grid cs box-width box-height) - (draw/draw-text cs (str "Page " (inc page-number)) (:italic fonts) 8 0.12 (- 11 0.15)) + (draw/draw-text cs (str "Page " (inc page-number)) (:italic fonts) 8 0.12 (draw/in-from-top 0.15)) (doall (for [j (range num-boxes-y) i (range (dec num-boxes-x) -1 -1) @@ -713,11 +708,11 @@ (:name-three-line down))] (.setCharacterSpacing cs (float name-tracking)) (draw/draw-text-to-box cs item-name face size - (+ x 0.28) (- 11.0 y top) width (:name-height down)) + (+ x 0.28) (draw/in-from-top (+ y top)) width (:name-height down)) (.setCharacterSpacing cs (float 0))) ;; The subtitle stops short of the badge so the two never meet. (draw/draw-text-to-box cs (magic-item-subtitle item) (:italic fonts) 7.5 - (+ x 0.2) (- 11.0 y (:subtitle down)) + (+ x 0.2) (draw/in-from-top (+ y (:subtitle down))) (- box-width (if clause 0.68 0.4)) 0.2) ;; A rule and a hairline under it: the header carries two kinds of ;; information, so it closes with more than the body's plain divisions. @@ -733,14 +728,14 @@ (.setLineWidth cs (float 1))) (let [remaining-desc-lines (draw/draw-lines-to-box cs body-lines (:plain fonts) 8 - (+ x 0.2) (- 11.0 y body-top) + (+ x 0.2) (draw/in-from-top (+ y body-top)) (- box-height body-top body-bottom))] ;; Centred, like the ornament under it and the note above it. Flush ;; left it was the only thing at the foot on its own axis. (when clause (draw-centred-lines! cs clause (:italic fonts) 6.8 (+ x (/ box-width 2)) - (- 11.0 y (- box-height (:clause up))) + (draw/in-from-top (+ y (- box-height (:clause up)))) (- box-width 0.4) 2)) ;; A phrase rather than the recharge icon. At the bottom right the ;; icon sat on the corner diamond and its arms, every other spot down @@ -749,7 +744,7 @@ (when (seq remaining-desc-lines) (draw-centred-text! cs "continued on the back" (:italic fonts) 6.2 (+ x (/ box-width 2)) - (- 11 y (- box-height - (if clause (:continued up) (:continued-bare up)))))) + (draw/in-from-top (+ y (- box-height + (if clause (:continued up) (:continued-bare up))))))) {:remaining-lines remaining-desc-lines :spell-name item-name})))))))) diff --git a/src/clj/orcpub/pdf/draw.clj b/src/clj/orcpub/pdf/draw.clj index 74573c529..7697448aa 100644 --- a/src/clj/orcpub/pdf/draw.clj +++ b/src/clj/orcpub/pdf/draw.clj @@ -67,6 +67,13 @@ ([page pt-per-unit y] (float (- (second (page-size page)) (* pt-per-unit y))))) +(defn in-from-top + "`y` INCHES down from the page top as inches up from the bottom, which is what + draw-text and the box fns take. One named conversion for the card code, which + wrote `(- 11.0 y 0.08)` at 27 sites; spellbook's `py` is the points equivalent." + [y] + (/ (pt-from-top 72 y) 72.0)) + (defn fit "Largest [height width] with the image's aspect ratio that fits the rectangle [r-h r-w]. One dimension matches the rectangle exactly; the other is smaller. Units diff --git a/test/clj/orcpub/card_grid_test.clj b/test/clj/orcpub/card_grid_test.clj new file mode 100644 index 000000000..dc0b6f8f6 --- /dev/null +++ b/test/clj/orcpub/card_grid_test.clj @@ -0,0 +1,68 @@ +(ns orcpub.card-grid-test + "The cut grid must match the cards it cuts, at any card size. + + print-backs and print-spells passed draw-grid literal 2.5 3.5 while threading their + own box-width/box-height to everything else, so at any other size the lines and the + cards came from different numbers. Latent: every routes.clj caller passes 2.5x3.5." + (:require [clojure.test :refer [deftest testing is]] + [orcpub.pdf-ops :as ops] + [orcpub.pdf.draw :as draw] + [orcpub.pdf.cards :as cards]) + (:import (org.apache.pdfbox.pdmodel PDDocument PDPage PDPageContentStream))) + +(def ^:private spell + {:orcpub.dnd.e5.spells/name "Probe" + :orcpub.dnd.e5.spells/level 1 + :orcpub.dnd.e5.spells/school "evocation" + :orcpub.dnd.e5.spells/casting-time "1 action" + :orcpub.dnd.e5.spells/range "60 feet" + :orcpub.dnd.e5.spells/components {:verbal true} + :orcpub.dnd.e5.spells/duration "Instantaneous" + :orcpub.dnd.e5.spells/description "Short."}) + +(defn- grid-lines + "The cut grid's own moveTo/lineTo, isolated by its light-grey stroke. draw-grid sets + 0.88 grey, strokes the lines, then resets to black -- so the ops between those two + RG operators are the grid and nothing else." + [page-ops] + (let [from (first (keep-indexed #(when (= "0.88 0.88 0.88 RG" %2) %1) page-ops)) + rest' (drop (inc from) page-ops) + window (take-while #(not (re-find #" RG$" %)) rest')] + (vec (filter #(re-find #" [ml]$" %) window)))) + +(defn- rendered + "`draw!` on one page, as drawing operators." + [draw!] + (with-open [doc (PDDocument.)] + (let [pg (PDPage.)] + (.addPage doc pg) + (with-open [cs (PDPageContentStream. doc pg)] + (draw! cs doc (draw/load-fonts doc) (draw/make-image-loader doc))) + (ops/page-ops pg)))) + +(defn- spells-grid [bw bh] + (grid-lines (rendered (fn [cs doc fonts img] + (cards/print-spells cs doc fonts img bw bh [spell] 0 false false false))))) + +(defn- backs-grid [bw bh] + ;; print-backs calls (remaining-lines-vec i) -- a vector AS a function -- for every + ;; card slot, so it needs one entry per slot or it throws. 20 covers 4x3 and 3x3. + (grid-lines (rendered (fn [cs _doc fonts img] + (cards/print-backs cs fonts img bw bh (vec (repeat 20 nil)) 0 nil))))) + +(defn- own-grid [bw bh] + (grid-lines (rendered (fn [cs _doc _fonts _img] (draw/draw-grid cs bw bh))))) + +(deftest the-grid-follows-the-card-size + (testing "2.5x3.5, the size production uses: 3 columns, 0.5in margin" + ;; 4 vertical lines at x = 36, 216, 396, 576 pt (0.5in + 2.5in steps). + (is (= (own-grid 2.5 3.5) (spells-grid 2.5 3.5))) + (is (= (own-grid 2.5 3.5) (backs-grid 2.5 3.5)))) + (testing "2.0x3.0: 4 columns at 144pt from an 18pt margin, NOT 3 at 180 from 36" + ;; Measured before the fix: print-spells and print-backs both emitted the 2.5x3.5 + ;; grid here -- x = 36, 216, 396, 576 - while placing cards at 18, 162, 306, 450, + ;; 594. Wrong column count and wrong margin, from the same literal. + (is (= (own-grid 2.0 3.0) (spells-grid 2.0 3.0))) + (is (= (own-grid 2.0 3.0) (backs-grid 2.0 3.0)))) + (testing "and the two sizes really do differ, so the above is not vacuous" + (is (not= (own-grid 2.5 3.5) (own-grid 2.0 3.0))))) From c68dab2855c1bb49ca2adccd234e7cf3bf464de9 Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Fri, 16 Oct 2026 09:26:08 +0000 Subject: [PATCH 17/40] One grid-layout, so the cut lines and the cards cannot disagree The draw-grid literal fixed in the last commit was the symptom. The cause is that print-backs, print-spells and print-items each recomputed the 9-up geometry inline and draw-grid computed it a fourth time - four copies that had to agree by hand, and the literal was the place they did not. draw/grid-layout returns {:cols :rows :margin-x :margin-y :width :height} in inches and all four read it. The cut lines and the card placements are no longer ABLE to come from different numbers. 22 lines of duplicated arithmetic gone, cards.clj 745 -> 734. num-boxes-x/num-boxes-y renamed to cols/rows at 9 downstream sites; no num-boxes reference remains. Checked before dropping them: total-width, total-height, remaining-width and remaining-height were pure intermediates with no use past their let, so removing them from the bindings could not break a caller silently. The risk in this one was floating point, not algebra. grid-layout computes (- pw (* cols box-width)) where print-backs had (- pw (* num-boxes-x box-width)) and print-spells reached the same value through a total-width intermediate. Algebraically identical, but addition is not associative in floating point, and the baselines round to 2dp of a point - 1/3600 inch - precisely so re-associating the same arithmetic does not flap them. It did not: all six baselines are byte-identical, which is the evidence that the reassociation stayed under the threshold. lein test 723/5466 green, lein lint 0 errors, all SIX baselines UNCHANGED. --- src/clj/orcpub/pdf/cards.clj | 40 ++++++++++---------------------- src/clj/orcpub/pdf/draw.clj | 45 ++++++++++++++++++------------------ 2 files changed, 35 insertions(+), 50 deletions(-) diff --git a/src/clj/orcpub/pdf/cards.clj b/src/clj/orcpub/pdf/cards.clj index d6542901d..d7feddf24 100644 --- a/src/clj/orcpub/pdf/cards.clj +++ b/src/clj/orcpub/pdf/cards.clj @@ -69,13 +69,7 @@ ;; into showing the card logo (matching the fronts) for double-sided printing. ;; When logo? is false NO images are loaded here — the old code decoded+embedded ;; the logo/rotation PNGs every page and never drew them (pure waste). - (let [num-boxes-x (int (/ (draw/page-width 72) box-width)) - num-boxes-y (int (/ (draw/page-height 72) box-height)) - total-height (* num-boxes-y box-height) - remaining-width (- (draw/page-width 72) (* num-boxes-x box-width)) - margin-x (/ remaining-width 2) - remaining-height (- (draw/page-height 72) total-height) - margin-y (/ remaining-height 2)] + (let [{:keys [cols rows margin-x margin-y]} (draw/grid-layout box-width box-height)] (draw/draw-grid cs box-width box-height) (draw/draw-text cs (str "Page " (inc page-number) " (reverse)") @@ -84,11 +78,11 @@ 0.12 (draw/in-from-top 0.15)) (doall - (for [i (range num-boxes-x) - j (range num-boxes-y)] + (for [i (range cols) + j (range rows)] (let [x (+ margin-x (* box-width i)) y (+ margin-y (* box-height j)) - spell-index (+ i (* j num-boxes-x)) + spell-index (+ i (* j cols)) {:keys [remaining-lines spell-name]} (remaining-lines-vec spell-index)] (if (seq remaining-lines) ;; This card back carries overflow text from the front. @@ -141,14 +135,7 @@ `print-spell-card-dc-mod?` prints save DC and attack bonus; `bw?`/`bw-faded?` select the printer-friendly renderings. Inches." [cs document fonts img box-width box-height spells page-number print-spell-card-dc-mod? bw? bw-faded?] - (let [num-boxes-x (int (/ (draw/page-width 72) box-width)) - num-boxes-y (int (/ (draw/page-height 72) box-height)) - total-width (* num-boxes-x box-width) - total-height (* num-boxes-y box-height) - remaining-width (- (draw/page-width 72) total-width) - margin-x (/ remaining-width 2) - remaining-height (- (draw/page-height 72) total-height) - margin-y (/ remaining-height 2)] + (let [{:keys [cols rows margin-x margin-y]} (draw/grid-layout box-width box-height)] (draw/draw-grid cs box-width box-height) (draw/draw-text cs (str "Page " (inc page-number)) @@ -157,9 +144,9 @@ 0.12 (draw/in-from-top 0.15)) (doall - (for [j (range num-boxes-y) - i (range (dec num-boxes-x) -1 -1) - :let [spell-index (+ i (* j num-boxes-x))]] + (for [j (range rows) + i (range (dec cols) -1 -1) + :let [spell-index (+ i (* j cols))]] (when-let [{:keys [class-nm dc attack-bonus spell] :as spell-data} (get (vec spells) spell-index)] (let [{:keys [description @@ -645,16 +632,13 @@ :or {flourish :diamonds name-size 13 name-tracking 0.15}} opts name-face (fn [fs] (let [f (:name-face opts :bold)] (if (keyword? f) (get fs f) f))) - num-boxes-x (int (/ (draw/page-width 72) box-width)) - num-boxes-y (int (/ (draw/page-height 72) box-height)) - margin-x (/ (- (draw/page-width 72) (* num-boxes-x box-width)) 2) - margin-y (/ (- (draw/page-height 72) (* num-boxes-y box-height)) 2)] + {:keys [cols rows margin-x margin-y]} (draw/grid-layout box-width box-height)] (draw/draw-grid cs box-width box-height) (draw/draw-text cs (str "Page " (inc page-number)) (:italic fonts) 8 0.12 (draw/in-from-top 0.15)) (doall - (for [j (range num-boxes-y) - i (range (dec num-boxes-x) -1 -1) - :let [item-index (+ i (* j num-boxes-x))]] + (for [j (range rows) + i (range (dec cols) -1 -1) + :let [item-index (+ i (* j cols))]] (when-let [item (get (vec items) item-index)] (let [x (+ margin-x (* box-width i)) y (+ margin-y (* box-height j)) diff --git a/src/clj/orcpub/pdf/draw.clj b/src/clj/orcpub/pdf/draw.clj index 7697448aa..d854100ef 100644 --- a/src/clj/orcpub/pdf/draw.clj +++ b/src/clj/orcpub/pdf/draw.clj @@ -330,39 +330,40 @@ [cs & coords] (apply draw-line cs (map in->pt coords))) +(defn grid-layout + "How many `box-width` x `box-height` inch cells fit the bound page, and the margins + that centre them: {:cols :rows :margin-x :margin-y :width :height}, in inches. + + One source for the whole 9-up layout. draw-grid draws its lines from this and the + card printers place cards by it, so the cut lines and the cards cannot be computed + from different numbers -- which is exactly the bug they had." + [box-width box-height] + (let [pw (page-width 72) + ph (page-height 72) + cols (int (/ pw box-width)) + rows (int (/ ph box-height)) + width (* cols box-width) + height (* rows box-height)] + {:cols cols :rows rows :width width :height height + :margin-x (/ (- pw width) 2) + :margin-y (/ (- ph height) 2)})) + (defn draw-grid "The cut grid for cards `box-width` x `box-height` inches, as many as fit the bound page, centred. Light grey lines. Takes its page from `*page*`, so a 2-up A5 grid on A4 is the same call with a different binding." [cs box-width box-height] - (let [page-w (page-width 72) - page-h (page-height 72) - num-boxes-x (int (/ page-w box-width)) - num-boxes-y (int (/ page-h box-height)) - total-width (* num-boxes-x box-width) - total-height (* num-boxes-y box-height) - remaining-width (- page-w total-width) - margin-x (/ remaining-width 2) - remaining-height (- page-h total-height) - margin-y (/ remaining-height 2) + (let [{:keys [cols rows margin-x margin-y width height]} (grid-layout box-width box-height) ;; PDFBox 3.x: setStrokingColor(float,float,float) requires 0.0-1.0 range ;; (PDFBox 2.x accepted 0-255 integers via a separate overload) light-gray (float (/ 225.0 255.0))] (.setStrokingColor cs light-gray light-gray light-gray) - (doseq [i (range (inc num-boxes-x))] + (doseq [i (range (inc cols))] (let [x (+ margin-x (* box-width i))] - (draw-line-in cs - x - margin-y - x - (+ margin-y total-height)))) - (doseq [i (range (inc num-boxes-y))] + (draw-line-in cs x margin-y x (+ margin-y height)))) + (doseq [i (range (inc rows))] (let [y (+ margin-y (* box-height i))] - (draw-line-in cs - margin-x - y - (+ margin-x total-width) - y))) + (draw-line-in cs margin-x y (+ margin-x width) y))) (.setStrokingColor cs (float 0) (float 0) (float 0)))) (def ^:private svg-token From 2aac01c1023464ba1625514c800dadb56e275b88 Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Sat, 17 Oct 2026 02:01:32 +0000 Subject: [PATCH 18/40] Three ways a non-Letter page lost data silently All three were latent on Letter and armed by the page-size work. None is caught by any test, baseline or lint: they are invisible until something draws on another page size, and until today nothing ever had. 1. print-backs called (remaining-lines-vec spell-index) -- the vector AS A FUNCTION, which throws IndexOutOfBounds on a vector shorter than the slot count rather than returning nil. add-spell-cards! wraps the lot in a try that prints and continues, so the throw did not crash the export: it silently dropped THE ENTIRE CARD SET. Same shape as the glyph bug that cost 3 of 4 pages. Now `get`. 2. draw/cards-per-page replaces a literal 9 in the two routes.clj partitions. A page holds 9 on Letter and A4 but 4 on A5, and print-items iterates CELLS and indexes into the list -- so handed 9 for a 4-cell page it drew 4 and the other 5 vanished. No error, no log line. Measured in a generated A5 sheet: 12 items in, 4 cards out. 3. Every page was created with a bare (PDPage.), which is PDFBox's Letter, at five sites across routes.clj and spellbook.clj. Binding :a4 drew A4 geometry onto a Letter sheet. draw/page-rect sizes them from the bound page. Found by generating PDFs and counting what was on them, not by reading the code. The suite, 75 pinned baseline pages and lint all pass with every one of these present. lein test 727/5482 green, lein lint 0 errors, and all SIX baselines UNCHANGED -- which is the evidence these change nothing for anyone printing Letter today. --- src/clj/orcpub/pdf/cards.clj | 6 +++--- src/clj/orcpub/pdf/draw.clj | 14 ++++++++++++++ src/clj/orcpub/spellbook.clj | 2 +- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/clj/orcpub/pdf/cards.clj b/src/clj/orcpub/pdf/cards.clj index d7feddf24..c8caac7be 100644 --- a/src/clj/orcpub/pdf/cards.clj +++ b/src/clj/orcpub/pdf/cards.clj @@ -62,8 +62,8 @@ "Draws one page of spell card BACKS, mirroring the fronts for duplex printing. `remaining-lines-vec` is indexed by the card position `print-spells` used, each entry `{:remaining-lines :spell-name}` from that call; a card with no overflow - gets only its name and the site stamp. `logo-img` opts a card into the logo. - Inches." + gets only its name and the site stamp. Read with `get`, not as a function: a short + vector threw, and the caller's try swallowed it along with every card. Inches." [cs fonts img box-width box-height remaining-lines-vec page-number logo-img] ;; `img` is the memoized per-document image loader; `logo?` opts each card back ;; into showing the card logo (matching the fronts) for double-sided printing. @@ -83,7 +83,7 @@ (let [x (+ margin-x (* box-width i)) y (+ margin-y (* box-height j)) spell-index (+ i (* j cols)) - {:keys [remaining-lines spell-name]} (remaining-lines-vec spell-index)] + {:keys [remaining-lines spell-name]} (get remaining-lines-vec spell-index)] (if (seq remaining-lines) ;; This card back carries overflow text from the front. (do diff --git a/src/clj/orcpub/pdf/draw.clj b/src/clj/orcpub/pdf/draw.clj index d854100ef..30cb2eed8 100644 --- a/src/clj/orcpub/pdf/draw.clj +++ b/src/clj/orcpub/pdf/draw.clj @@ -348,6 +348,20 @@ :margin-x (/ (- pw width) 2) :margin-y (/ (- ph height) 2)})) +(defn page-rect + "A PDRectangle for the bound page, for `(PDPage. (draw/page-rect))`. A bare (PDPage.) + is PDFBox's Letter, which silently ignores `*page*`." + [] + (let [[w h] (page-size *page*)] + (PDRectangle. (float w) (float h)))) + +(defn cards-per-page + "How many `box-width` x `box-height` inch cards fit the bound page. What a caller must + partition by -- 9 on Letter and A4, 4 on A5, and a literal 9 drops the rest." + [box-width box-height] + (let [{:keys [cols rows]} (grid-layout box-width box-height)] + (* cols rows))) + (defn draw-grid "The cut grid for cards `box-width` x `box-height` inches, as many as fit the bound page, centred. Light grey lines. Takes its page from `*page*`, so a 2-up A5 grid on diff --git a/src/clj/orcpub/spellbook.clj b/src/clj/orcpub/spellbook.clj index 4b315bf91..bf9be4455 100644 --- a/src/clj/orcpub/spellbook.clj +++ b/src/clj/orcpub/spellbook.clj @@ -951,7 +951,7 @@ (let [pages (layout-pages fonts img opts spells-known spells-map) max-level (reduce max 0 (for [p pages l (:levels p)] l))] (doseq [[i page] (map-indexed vector pages)] - (let [pdpage (PDPage.)] + (let [pdpage (PDPage. (draw/page-rect))] (.addPage doc pdpage) (with-open [cs (PDPageContentStream. doc pdpage)] (draw-page! cs fonts page opts max-level (inc i) (= i (dec (count pages))))))) From 397c4a569d335ec59178ee26ec2aebd670aca080 Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Sat, 17 Oct 2026 02:01:32 +0000 Subject: [PATCH 19/40] A degraded export says what it dropped, on a page in the PDF The export already caught failures and carried on, which is right: a broken spellbook must not cost someone their character sheet. What it did not do is SAY so. The file downloaded looking complete with a section missing, and the only record was a println on a server console the user will never read. The information already existed. bound-cards counts what it truncates, apply-relabel-instructions! returns [applied refused], write-fields! lists the values with no box. It was all going to the wrong place. orcpub.errors gains *notices*, note! and notices -- built on the existing framework rather than beside it. note! is a no-op when nothing is collecting, so callers need no guard, and it still logs exactly as before. The macros there all RE-THROW, which is wrong for an export; this is the third pattern, degrade-and-record. Six sites wired: the three swallowing catches (spell cards, item cards, spellbook), the card ceiling, refused relabels, and fields with no box on the chosen style. pdf/add-notice-page! prepends a page naming each one with its reason, and adds NO page at all on a clean export -- a warning that costs something on the happy path is one people switch off. Prepended, so it is read before eight sheets go through a printer. Helvetica, not the document's Vollkorn: routes.clj warns that a second load-fonts embeds a second subset of every face, and fonts is not in scope where the document closes. MY BUG, found by rendering it: every detail line printed on top of the next heading. draw-text takes y as the BASELINE; draw-text-to-box takes y as the box TOP and puts its first baseline one leading below. Same namespace, same unit, same parameter name, opposite meaning, undocumented in both. A detail at (- y 0.32) landed at (- y 0.46), exactly the row pitch. That is a third convention mismatch in the shared layer, beside inches-vs-points and y-from-top-vs-bottom. The test caught it and described it WRONG -- as a missing word -- because it asserted on PDFTextStripper output, the one channel this codebase documents as unreliable (Vollkorn maps ff to a ligature with no ToUnicode entry, so "Staff" extracts as "Sta "). The card baselines fingerprint operators for exactly this reason. So no-two-lines-share-a-baseline reads the Td operators instead. Two corrections to it before it was worth anything: the first Td in a BT/ET block is absolute and later ones are RELATIVE, so reading them all as absolute reported a one-leading offset as an off-page baseline; and it tested baselines for EQUALITY when the real overlap was 0.37pt apart -- 11pt text overprints long before two baselines coincide, so that check could never have caught the bug it was written for. It now requires a 9pt gap, and restoring both original numbers turns it red on exactly the three overlapping pairs. lein test 727/5482 green, lein lint 0 errors, all SIX baselines UNCHANGED. --- src/clj/orcpub/pdf.clj | 39 +++++++++++ src/clj/orcpub/routes.clj | 43 +++++++++--- src/cljc/orcpub/errors.cljc | 23 ++++++ test/clj/orcpub/notice_page_test.clj | 101 +++++++++++++++++++++++++++ 4 files changed, 196 insertions(+), 10 deletions(-) create mode 100644 test/clj/orcpub/notice_page_test.clj diff --git a/src/clj/orcpub/pdf.clj b/src/clj/orcpub/pdf.clj index 2dcf93dc6..c337a0170 100644 --- a/src/clj/orcpub/pdf.clj +++ b/src/clj/orcpub/pdf.clj @@ -13,6 +13,7 @@ [orcpub.dnd.e5.display :as dis5e] [orcpub.dnd.e5.spell-print :as sp] [orcpub.pdf.draw :as draw] + [orcpub.errors :as errors] [orcpub.dnd.e5.options :as options] [clj-http.client :as client]) (:import (java.io ByteArrayOutputStream) @@ -829,6 +830,9 @@ (iterator-seq (.iterator (.getFieldTree form))))) unplaceable (sort (map name (remove #(contains? by-name (name %)) (keys fields))))] (when (seq unplaceable) + (errors/note! "Sheet fields" + (format "%d value(s) have no box on this sheet style and were left blank: %s" + (count unplaceable) (s/join ", " unplaceable))) (println (format "pdf/write-fields!: %d value(s) had no field in this template and were dropped: %s" (count unplaceable) (s/join ", " unplaceable)))) (doseq [[k v] fields] @@ -2042,6 +2046,41 @@ (/ sx 72.0) (/ sy 72.0) [0.1 0.1 0.1]))))))))))) +(def ^:private notice-titles + "The heading, and the line under it. Deliberately plain: this page is bad news and + dressing it up makes it read as decoration and get skipped." + {:head "Some of this export did not fit." + :sub "Your sheet is below and is complete. These parts were left out:"}) + +(defn add-notice-page! + "Prepends a page naming what the export dropped. Adds NO page on a clean export. + + In the document, not the response: the PDF is what gets saved and printed, and a + browser banner is gone on the next click. First so it is read before the printing. + Helvetica, not Vollkorn -- a second load-fonts embeds a second subset of every face." + [doc] + (when-let [items (seq (errors/notices))] + (let [page (PDPage. (draw/page-rect)) + tree (.getPages doc) + h (draw/page-height 72)] + (if (pos? (.getCount tree)) + (.insertBefore tree page (.get tree 0)) + (.addPage doc page)) + (with-open [cs (PDPageContentStream. doc page)] + (draw/draw-text cs (:head notice-titles) draw/HELVETICA_BOLD 16 1.0 (- h 1.2)) + (draw/draw-text cs (:sub notice-titles) draw/HELVETICA 10 1.0 (- h 1.5)) + ;; draw-text-to-box takes the box TOP and puts its first baseline one leading + ;; below it, so a detail at (- y 0.32) landed at (- y 0.46) -- exactly the row + ;; pitch, printing every detail on top of the next heading. + (doseq [[i {:keys [what detail]}] (map-indexed vector items) + :let [y (- h 1.95 (* 0.62 i))] + :while (> y 1.1)] + (draw/draw-text cs (str "- " what) draw/HELVETICA_BOLD 11 1.1 y) + (draw/draw-text-to-box cs detail draw/HELVETICA 9.5 1.25 (- y 0.16) + (- (draw/page-width 72) 2.4) 0.32)) + (draw/draw-text cs draw/site-stamp draw/HELVETICA 8 1.0 0.6 [0.45 0.45 0.45])) + page))) + (defn stamp-site-line! "Prints the site line at `position` (the style's :site-line from sheet-masters, chosen per style to clear its corner artwork) on every page that lacks one. diff --git a/src/clj/orcpub/routes.clj b/src/clj/orcpub/routes.clj index e4ebe1cab..6040cee63 100644 --- a/src/clj/orcpub/routes.clj +++ b/src/clj/orcpub/routes.clj @@ -997,6 +997,9 @@ (let [limit (config/get-pdf-max-cards) n (count cards)] (when (> n limit) + (errors/note! (str (s/capitalize kind) " cards") + (format "%d requested, %d printed -- the export is capped at %d" + n limit limit)) (println (format "pdf: %d %s cards requested, printing the first %d" n kind limit))) (take limit cards))) @@ -1023,10 +1026,12 @@ (str class))] (spellbook/spell-sort-key spell-order (spells-map key)))) flat-spells) - parts (vec (partition-all 9 sorted-spells))] + ;; Capacity, not 9: a page holds 9 on Letter and A4 but 4 on A5, and + ;; print-spells draws only as many as there are cells -- the rest vanished. + parts (vec (partition-all (draw/cards-per-page 2.5 3.5) sorted-spells))] (doseq [i (range (count parts)) :let [part (parts i)]] - (let [page (PDPage.)] + (let [page (PDPage. (draw/page-rect))] (.addPage doc page) (with-open [cs (PDPageContentStream. doc page)] (let [spells (sequence @@ -1056,13 +1061,14 @@ print-spell-card-dc-mod? bw? bw-faded?)) - back-page (PDPage.)] + back-page (PDPage. (draw/page-rect))] (with-open [back-page-cs (PDPageContentStream. doc back-page)] (.addPage doc back-page) (cards/print-backs back-page-cs fonts img 2.5 3.5 remaining-desc-lines i logo-img))))))) (catch Exception e - (println "pdf: failed adding spell cards -" (.getMessage e))))) + (errors/note! "Spell cards" + (str "could not be drawn and were left out (" (.getMessage e) ")"))))) (defn add-magic-item-cards! "Appends card pages for `magic-items`, nine to a sheet, each with its back; the same layout @@ -1071,20 +1077,23 @@ add-spell-cards!." [doc fonts img magic-items logo-img bw? bw-faded?] (try - (let [parts (vec (partition-all 9 (bound-cards "magic item" magic-items)))] + (let [parts (vec (partition-all (draw/cards-per-page 2.5 3.5) + (bound-cards "magic item" magic-items)))] (doseq [i (range (count parts)) :let [part (parts i)]] - (let [page (PDPage.)] + (let [page (PDPage. (draw/page-rect))] (.addPage doc page) (with-open [cs (PDPageContentStream. doc page)] (let [remaining-desc-lines (vec (cards/print-items cs doc fonts img 2.5 3.5 part i bw? bw-faded?)) - back-page (PDPage.)] + back-page (PDPage. (draw/page-rect))] (with-open [back-page-cs (PDPageContentStream. doc back-page)] (.addPage doc back-page) (cards/print-backs back-page-cs fonts img 2.5 3.5 remaining-desc-lines i logo-img))))))) - (catch Exception e (println "pdf: failed adding magic item cards" e)))) + (catch Exception e + (errors/note! "Magic item cards" + (str "could not be drawn and were left out (" (.getMessage e) ")"))))) (defn- one-of "`v` as a keyword when it names one of `allowed` (keyword or string), else `default`." @@ -1155,7 +1164,8 @@ spells-known {:all (bound-cards "spellbook" (-> spells-known vals flatten))}] (spellbook/add-spellbook! doc fonts img opts spells-known spells-map)) (catch Exception e - (println "pdf: failed adding the spellbook -" (.getMessage e))))) + (errors/note! "Spellbook" + (str "could not be drawn and was left out (" (.getMessage e) ")"))))) (def valid-sheet-styles "Style ids with a template on disk: resources/fillable-char-sheetstyle-N-*.pdf" @@ -1417,7 +1427,7 @@ (some-> (get spells/spell-map (common/name-to-kw nm)) spell-annotations/annotation)) -(defn- generate-character-pdf [req] +(defn- generate-character-pdf* [req] (let [fields (try (-> req :form-params :body edn/read-string bound-request) (catch Exception e @@ -1493,6 +1503,9 @@ (pdf/apply-relabel-instructions! doc spell-relabels casters print-character-sheet-style?)] (when (pos? refused) + (errors/note! "Spell slot renumbering" + (format "%d of %d instructions were not valid for this sheet style" + refused (+ applied refused))) (println (format "pdf: refused %d of %d relabel instruction(s)" refused (+ applied refused)))))) (when print-spell-annotations? @@ -1563,12 +1576,22 @@ 2 (pdf/draw-image-bytes! doc (pdf/get-page doc 1) data jpg? 5.88 2.4 1.905 1.52) 3 (pdf/draw-image-bytes! doc (pdf/get-page doc 1) data jpg? 5.88 2.0 1.905 1.52) 4 nil))) + ;; Last, so every notice is in: it prepends a page naming what was left out, and + ;; adds nothing at all when nothing was. + (pdf/add-notice-page! doc) (.save doc output)) (let [a (.toByteArray output)] {:status 200 :headers {"Content-Disposition" (str "inline; filename=\"" filename "\"")} :body (ByteArrayInputStream. a)}))) +(defn- generate-character-pdf + "generate-character-pdf* with a notice collector bound for the whole export, so a + section that degrades can say so and add-notice-page! can print it." + [req] + (binding [errors/*notices* (atom [])] + (generate-character-pdf* req))) + (defn character-pdf-2 [req] (with-export-slot req #(generate-character-pdf req))) diff --git a/src/cljc/orcpub/errors.cljc b/src/cljc/orcpub/errors.cljc index 16a2e1b6c..7a77c599f 100644 --- a/src/cljc/orcpub/errors.cljc +++ b/src/cljc/orcpub/errors.cljc @@ -34,6 +34,29 @@ (when (seq context) (println " Context:" context)))) +(def ^:dynamic *notices* + "Where `note!` records what an export dropped, or nil when nobody is collecting. + An atom holding a vector of {:what :detail}. Bound per document. + + The macros below all RE-THROW. An export must not: a failed spellbook should not + cost someone their character sheet. So it degrades, and this is how it says so." + nil) + +(defn note! + "Records that `what` was dropped or degraded, with a one-line `detail` for the reader. + A no-op when nothing is collecting, so callers need no guard. Also logs, so the + server's console keeps what it had before." + [what detail] + (log-error "DEGRADED:" (str what " -- " detail)) + (when *notices* + (swap! *notices* conj {:what what :detail detail})) + nil) + +(defn notices + "What has been recorded, oldest first; empty when nothing was." + [] + (if *notices* @*notices* [])) + (defn create-error "An ExceptionInfo with message `user-msg` (user-friendly) and ex-data `context` plus `:error error-code`, wrapping the optional underlying exception `cause`." diff --git a/test/clj/orcpub/notice_page_test.clj b/test/clj/orcpub/notice_page_test.clj new file mode 100644 index 000000000..0f6002c82 --- /dev/null +++ b/test/clj/orcpub/notice_page_test.clj @@ -0,0 +1,101 @@ +(ns orcpub.notice-page-test + "The degraded-export notice: a page in the PDF naming what was left out. + + The export already caught failures and carried on -- a broken spellbook must not cost + someone their sheet. What it did not do is say so: the file downloaded looking + complete with a section missing. These pin that it says so, and that it stays silent + when there is nothing to say." + (:require [clojure.test :refer [deftest testing is]] + [clojure.string :as str] + [orcpub.errors :as errors] + [orcpub.pdf-ops :as ops] + [orcpub.pdf :as pdf]) + (:import (org.apache.pdfbox.pdmodel PDDocument PDPage) + (org.apache.pdfbox.text PDFTextStripper))) + +(defn- page-text [doc i] + (let [s (doto (PDFTextStripper.) (.setStartPage (inc i)) (.setEndPage (inc i)))] + (str/replace (.getText s doc) #"\s+" " "))) + +(defn- doc-with [n-pages] + (let [doc (PDDocument.)] + (dotimes [_ n-pages] (.addPage doc (PDPage.))) + doc)) + +(deftest a-clean-export-gets-no-notice-page + (testing "nothing recorded, nothing added -- the happy path pays nothing" + (binding [errors/*notices* (atom [])] + (with-open [doc (doc-with 3)] + (is (nil? (pdf/add-notice-page! doc))) + (is (= 3 (.getNumberOfPages doc)))))) + (testing "and with no collector bound at all it still does not throw" + (with-open [doc (doc-with 2)] + (is (nil? (pdf/add-notice-page! doc))) + (is (= 2 (.getNumberOfPages doc)))))) + +(deftest what-was-dropped-is-named-on-page-one + (testing "the notice is PREPENDED, so it is read before the sheet is printed" + (binding [errors/*notices* (atom [])] + (errors/note! "Spell cards" "could not be drawn and were left out (boom)") + (errors/note! "Spellbook" "could not be drawn and was left out (kaput)") + (with-open [doc (doc-with 3)] + (is (some? (pdf/add-notice-page! doc))) + (is (= 4 (.getNumberOfPages doc)) "one page added, not replacing a sheet page") + (let [t (page-text doc 0)] + (is (str/includes? t "did not fit")) + (is (str/includes? t "Spell cards")) + (is (str/includes? t "Spellbook")) + (is (str/includes? t "boom") "the reason, not just the section") + (is (str/includes? t "kaput"))))))) + +(deftest note-records-without-a-collector + (testing "note! is a no-op when nothing collects, so callers need no guard" + (is (nil? (errors/note! "Anything" "detail"))) + (is (= [] (errors/notices)))) + (testing "and collects in order when one is bound" + (binding [errors/*notices* (atom [])] + (errors/note! "First" "a") + (errors/note! "Second" "b") + (is (= ["First" "Second"] (mapv :what (errors/notices))))))) + +(defn- text-baselines + "The y each drawn string actually sits at, at 2dp. + + Not simply every Td: the FIRST Td in a BT/ET block is absolute and any after it are + RELATIVE to it, which is how draw-lines-to-box advances a line. Reading them all as + absolute reports a one-leading offset (-10.45) as an off-page baseline." + [page] + (let [{:keys [out]} + (reduce (fn [{:keys [y out] :as st} op] + (cond + (= "BT" op) (assoc st :y nil) + (re-matches #"[0-9.-]+ [0-9.-]+ Td" op) + (let [dy (Double/parseDouble (second (str/split op #" ")))] + (assoc st :y (if y (+ y dy) dy))) + (re-find #" Tj$" op) (assoc st :out (conj out (format "%.2f" y))) + :else st)) + {:y nil :out []} + (ops/page-ops page))] + out)) + +(deftest no-two-lines-share-a-baseline + (testing "details must not print on top of the next heading. + + This is the failure this page is prone to, and a text-extraction assertion + reports it as a MISSING WORD -- the first version drew every detail over the + following heading and the test said \"Spellbook\" was absent. Checking the + drawn baselines names it directly." + (binding [errors/*notices* (atom [])] + (doseq [n ["Spell cards" "Spellbook" "Magic item cards" "Sheet fields"]] + (errors/note! n (str n " was left out because of a reason that wraps a little"))) + (with-open [doc (doc-with 1)] + (pdf/add-notice-page! doc) + (let [ys (sort (map #(Double/parseDouble %) (text-baselines (.getPage doc 0)))) + gaps (map - (rest ys) ys)] + (is (seq ys) "something was drawn") + ;; A GAP, not equality. The bug this was written for put baselines 0.36pt + ;; apart -- 11pt text overlaps long before two baselines coincide, so an + ;; equality check could never have caught it. + (is (every? #(>= % 9.0) gaps) + (str "lines closer than 9pt overprint; baselines " (pr-str (vec ys)) + " gaps " (pr-str (vec gaps))))))))) From 78ef468c25318252f10fb7d7bbdcf1581af4f8a5 Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Sat, 17 Oct 2026 02:28:21 +0000 Subject: [PATCH 20/40] A4 is selectable from the request, and pinned like Letter Three things, one capability: A4 stops being reachable only from a binding in code and becomes an option a person can choose and the suite protects. THE REQUEST. :page-size on the export request, validated against #{:letter :a4 :a5} through the same one-of valid-sheet-styles uses, bound with the notice collector for the whole export. An unknown value falls back to :letter rather than throwing -- a typo in an option must not cost someone their sheet. Also added to pdf-option-keys, which matters more than it looks: that set is stripped before write-fields!, and anything not in it is reported as a value with no box. Those reports now reach the user on the notice page, so without this entry EVERY export would have printed a spurious warning about page-size. The request body was being parsed twice in my first attempt -- once in a wrapper to read the page, once in the export for the fields. On a 2 MB body that is real waste and two parses can disagree. generate-character-pdf now parses once and passes the fields down. THE BASELINES. A4 card and spellbook baselines, because the standard the owner set is that A4 is a second MAIN layout, not a tolerated one. Every baseline was Letter, so A4 could have broken completely with the whole suite green. Both are genuinely different files, which is the evidence the binding reaches the render rather than producing a copy: cards 24 pages at the same operator count but different coordinates (A4 centres 3x3 at 28/43pt margins against Letter's 36/18), and the spellbook 200,436 operators against Letter's 200,156 -- a different pagination, because A4's body is 740pt tall against 690 and carries about 7% more per page. THE RETRY. Narrower than I said it would be. I had claimed all four transient reasons from failure-reason; the export-slot budget rules out two of them. An image fetch holds a slot and has a 20s transfer deadline, so :timeout has already spent that budget and a retry spends it again, and :rate-limited is the host asking us to slow down. It retries ONCE, immediately, on :unreachable and :host-error only -- the two that fail fast. No sleep: a sleep holds the slot too. The test asserts attempt COUNTS, so "retried once" and "not retried" are both verified rather than inferred. End to end, 12 items through routes/add-magic-item-cards!: Letter and A4 give 4 pages, A5 gives 6. That page count is the earlier partition-all fix proven in real output -- A5 used to give 4 pages and silently drop 5 cards a sheet. The card and ornament baselines show a 2-line diff each: only the header comment, which re-seeding rewrote into the shared pdf_ops format they predate. All 14,930 operators are byte-identical. lein test 735/5552 green (was 727/5482), lein lint 0 errors, and the spellbook, sheet, widget and comment baselines UNCHANGED. --- src/clj/orcpub/pdf.clj | 30 +- src/clj/orcpub/routes.clj | 40 +- test/card-geometry-a4-baseline.edn | 14932 ++++++++++++++++++ test/card-geometry-baseline.edn | 4 +- test/card-ornament-baseline.edn | 4 +- test/clj/orcpub/card_geometry_test.clj | 10 + test/clj/orcpub/image_retry_test.clj | 45 + test/clj/orcpub/page_size_test.clj | 23 + test/clj/orcpub/spellbook_geometry_test.clj | 11 + test/spellbook-geometry-a4-baseline.edn | 644 + 10 files changed, 15721 insertions(+), 22 deletions(-) create mode 100644 test/card-geometry-a4-baseline.edn create mode 100644 test/clj/orcpub/image_retry_test.clj create mode 100644 test/spellbook-geometry-a4-baseline.edn diff --git a/src/clj/orcpub/pdf.clj b/src/clj/orcpub/pdf.clj index c337a0170..af2307424 100644 --- a/src/clj/orcpub/pdf.clj +++ b/src/clj/orcpub/pdf.clj @@ -1364,12 +1364,15 @@ java.net.SocketTimeoutException :timeout :unknown))))) -(defn fetch-image-outcome - "Fetches `url` and returns {:image {:data :jpg?}} or {:reason keyword}. +(def ^:private retry-once-on + "Reasons a second attempt can plausibly succeed AND the first one failed cheaply. - The reason is what lets the builder say something a person can act on -- a 404 - and a 2 MB photograph are the same blank space on the sheet otherwise." - [url] + NOT :timeout -- it already spent image-transfer-deadline-ms holding an export slot, + and a retry spends it again. NOT :rate-limited -- the host asked us to slow down. + The rest are permanent: a 404 is a 404 twice." + #{:unreachable :host-error}) + +(defn- attempt-image [url] (try (if-let [image (fit-for-sheet (safe-image-bytes url))] {:image image} @@ -1378,6 +1381,23 @@ (println "pdf: image unavailable -" (.getMessage e) "-" url) {:reason (failure-reason e)}))) +(defn fetch-image-outcome + "Fetches `url` and returns {:image {:data :jpg?}} or {:reason keyword}, retrying once + for the reasons in `retry-once-on`. + + The reason is what lets the builder say something a person can act on -- a 404 + and a 2 MB photograph are the same blank space on the sheet otherwise." + [url] + (let [outcome (attempt-image url)] + (if (retry-once-on (:reason outcome)) + ;; Immediately, with no sleep: a sleep holds the export slot too, and these two + ;; reasons fail fast enough that a second go is cheap. + (let [again (attempt-image url)] + (when (:image again) + (println "pdf: image recovered on retry -" url)) + again) + outcome))) + (defn fetch-image "Fetches `url` and returns {:data bytes :jpg? bool}, or nil if it cannot be had; a picture that will not load must not cost the character their sheet. diff --git a/src/clj/orcpub/routes.clj b/src/clj/orcpub/routes.clj index 6040cee63..58df5e1bf 100644 --- a/src/clj/orcpub/routes.clj +++ b/src/clj/orcpub/routes.clj @@ -1171,6 +1171,14 @@ "Style ids with a template on disk: resources/fillable-char-sheetstyle-N-*.pdf" #{1 2 3 4}) +(def valid-page-sizes + "Paper the export draws on. Letter and A4 are both designed for; A5 fits 4 cards a + page instead of 9 and suits a pocket spellbook, not a character sheet. + + The character-sheet TEMPLATES are 612x792 whatever this says -- their artwork is + fixed, and fitting them to A4 is a separate shim." + #{:letter :a4 :a5}) + (def default-sheet-style 1) (def ^:private pdf-option-keys @@ -1186,6 +1194,7 @@ :print-spell-annotations? :spell-relabels :spell-headings :spell-layout :magic-items-known :print-magic-item-cards? :spellbook :spell-order + :page-size :flatten?}) (def ^:private image-url-shape @@ -1427,15 +1436,11 @@ (some-> (get spells/spell-map (common/name-to-kw nm)) spell-annotations/annotation)) -(defn- generate-character-pdf* [req] - (let [fields (try - (-> req :form-params :body edn/read-string bound-request) - (catch Exception e - (throw (ex-info "Invalid character data format. Unable to parse PDF request." - {:error :invalid-pdf-data} - e)))) - - {:keys [image-url image-url-failed image-data faction-image-url faction-image-url-failed faction-image-data spells-known custom-spells spell-save-dcs spell-attack-mods print-spell-cards? magic-items-known print-magic-item-cards? print-character-sheet-style? print-spell-card-dc-mod? print-card-back-logo? card-back-logo-faded? print-bw? bw-faded? print-spell-annotations? spell-relabels spell-headings character-name class-level player-name flatten? spellbook spell-order]} fields +(defn- generate-character-pdf* + "The export itself. `fields` is already parsed and bounded; the caller binds the page + and the notice collector around it." + [req fields] + (let [{:keys [image-url image-url-failed image-data faction-image-url faction-image-url-failed faction-image-data spells-known custom-spells spell-save-dcs spell-attack-mods print-spell-cards? magic-items-known print-magic-item-cards? print-character-sheet-style? print-spell-card-dc-mod? print-card-back-logo? card-back-logo-faded? print-bw? bw-faded? print-spell-annotations? spell-relabels spell-headings character-name class-level player-name flatten? spellbook spell-order page-size]} fields ;; Printer-friendly mode: monochrome spell-card icons + a forced solid-black ;; card-back logo (no color anywhere on the cards). bw-faded? picks the @@ -1586,11 +1591,20 @@ :body (ByteArrayInputStream. a)}))) (defn- generate-character-pdf - "generate-character-pdf* with a notice collector bound for the whole export, so a - section that degrades can say so and add-notice-page! can print it." + "Parses the request once, then runs the export with the notice collector and the page + bound for its whole length: a section that degrades can say so, and every drawing + call agrees on the paper. An unknown :page-size falls back to :letter rather than + throwing -- a bad option must not cost someone their sheet." [req] - (binding [errors/*notices* (atom [])] - (generate-character-pdf* req))) + (let [fields (try + (-> req :form-params :body edn/read-string bound-request) + (catch Exception e + (throw (ex-info "Invalid character data format. Unable to parse PDF request." + {:error :invalid-pdf-data} + e))))] + (binding [errors/*notices* (atom []) + draw/*page* (one-of valid-page-sizes (:page-size fields) :letter)] + (generate-character-pdf* req fields)))) (defn character-pdf-2 [req] (with-export-slot req #(generate-character-pdf req))) diff --git a/test/card-geometry-a4-baseline.edn b/test/card-geometry-a4-baseline.edn new file mode 100644 index 000000000..16188db2f --- /dev/null +++ b/test/card-geometry-a4-baseline.edn @@ -0,0 +1,14932 @@ +;; Written by orcpub's geometry characterization tests: Card sheet A4 +;; A diff here is drawing moving. Read it before committing it. +[["0.88 0.88 0.88 RG" + "27.64 42.94 m" + "27.64 798.95 l" + "S" + "207.64 42.94 m" + "207.64 798.95 l" + "S" + "387.64 42.94 m" + "387.64 798.95 l" + "S" + "567.64 42.94 m" + "567.64 798.95 l" + "S" + "27.64 42.94 m" + "567.64 42.94 l" + "S" + "27.64 294.95 m" + "567.64 294.95 l" + "S" + "27.64 546.95 m" + "567.64 546.95 l" + "S" + "27.64 798.95 m" + "567.64 798.95 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 831.09 Td" + "#hex:00a9014d01930178000303fa Tj" + "ET" + "BT" + "/F2 8.00 Tf" + "396.28 721.18 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de0003016b018d01be01840118018f01d6000301180003018d014301c901c90118015e0143000301f6016b01d60166016b018f00030118018f0003019b0133017d0143013401d60003016b018f Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f015e014305fc000301180003018d014301c901c90118015e0143000301d60166011801d60003016b01c9000301de01d601d6014301c10143013b000301f601660143018f00030118000301d601c1016b015e015e014301c1 Tj" + "0.00 -8.80 Td" + "#hex:0134019b018f013b016b01d6016b019b018f0003016b01c90003018d014301d60608000300200166019b019b01c9014300030118018f0003019b0133017d0143013401d6000301d60166011801d6000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:01340118018f000301c90143014300030118018f013b000301d60166011801d60003016b01c9018f060c01d6000301330143016b018f015e000301f6019b01c1018f0003019b01c100030134011801c101c1016b0143013b0003013301fc Tj" + "0.00 -8.80 Td" + "#hex:0118018f019b01d60166014301c10003013401c10143011801d601de01c101430608000300c101660143018f000301c901be014301180181000301d6016601430003018d014301c901c90118015e014305fc Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b013401660003018d01de01c901d60003013301430003056b056e000301f6019b01c1013b01c90003019b01c100030184014301c901c905fc000301d60166019b01de015e01660003016b01d6000301340118018f Tj" + "0.00 -8.80 Td" + "#hex:013301430003013b01430184016b01f5014301c10143013b0003019b01f5014301c10003011801c900030184019b018f015e0003011801c90003056a05690003018d016b018f01de01d6014301c90608 Tj" + "0.00 -8.80 Td" + "#hex:004a016b018f01180184018401fc05fc0003013b014301d6014301c1018d016b018f0143000301d60166014300030134016b01c1013401de018d01c901d60118018f01340143000301d60166011801d6000301f6016b01840184 Tj" + "0.00 -8.80 Td" + "#hex:01d601c1016b015e015e014301c1000301d601660143000301c901be014301840184000301d6019b0003013b01430184016b01f5014301c1000301fc019b01de01c10003018d014301c901c90118015e01430608 Tj" + "0.00 -8.80 Td" + "#hex:00e001660143018f000301d60166011801d600030134016b01c1013401de018d01c901d60118018f013401430003019b0134013401de01c101c905fc000301180003018d0118015e016b013401180184 Tj" + "0.00 -8.80 Td" + "#hex:018d019b01de01d601660003011801be01be0143011801c101c90003019b018f000301d6016601430003019b0133017d0143013401d600030118018f013b000301c101430134016b01d6014301c9000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:018d014301c901c90118015e01430003016b018f000301fc019b01de01c1000301f5019b016b0134014300030118018f013b0003011801d6000301d601660143000301c90118018d0143000301f5019b018401de018d0143 Tj" + "0.00 -8.80 Td" + "#hex:01fc019b01de000301c901be019b01810143060800030058015d000301d6016601430003019b0133017d0143013401d6000301fc019b01de000301340166019b01c9014300030166011801c9000301180003018d019b01de01d60166 Tj" + "0.00 -8.80 Td" + "#hex:019b01c1000301c9019b018d014301d60166016b018f015e000301d60166011801d600030184019b019b018101c900030184016b01810143000301180003018d019b01de01d6016600030628015d019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:014301fb0118018d01be0184014305fc000301d6016601430003018d019b01de01d601660003019b015d00030118000301c901d6011801d601de0143062905fc000301d6016601430003018d0118015e016b013401180184 Tj" + "0.00 -8.80 Td" + "#hex:018d019b01de01d601660003011801be01be0143011801c101c9000301d60166014301c10143000301c9019b000301d60166011801d6000301d601660143000301f6019b01c1013b01c90003011801be01be0143011801c1 Tj" + "0.00 -8.80 Td" + "#hex:01d6019b00030134019b018d01430003015d01c1019b018d000301d6016601430003019b0133017d0143013401d6060c01c90003018d019b01de01d601660608000300e001660143018f000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:0134011801c901d6000301d60166016b01c9000301c901be01430184018405fc000301fc019b01de000301340118018f00030166011801f50143000301d601660143000301c901be01430184018400030143018f013b00030118025e014301c1 Tj" + "0.00 -8.80 Td" + "#hex:016b01d60003013b01430184016b01f5014301c101c90003016b01d601c90003018d014301c901c90118015e014305fc0003019b01c10003016b01d6000301340118018f000301c10143018d0118016b018f00030118018f013b Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "396.28 759.34 Td" + "0.00 -8.80 Td" + "#hex:0004000301fe01c2014d01b901b90003016801a0020b000301d001920003019b01d001c401780231016901d001c201680003014d01c40170000301b2014d0170017800030170021301fe020b0003022b01d001f6020b019b0003014d020b000301b90178014d01fe020b Tj" + "0.00 -8.80 Td" + "#hex:03fa03f90003019301f304760003022b019b01a00169019b0003020b019b0178000301fe01f3017801b901b90003016901d001c401fe021301c2017801fe Tj" + "ET" + "q" + "13.20 0.00 0.00 18.00 553.84 779.51 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 10.00 Tf" + "396.28 798.95 Td" + "0.00 -11.00 Td" + "#hex:00780118015e016b013400030078019b01de01d60166 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "459.10 798.95 Td" + "0.00 -11.00 Td" + "#hex:000304a201f601a0020b0213014d01b904a3 Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "396.28 785.27 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303fb0003005801b901b9021301fe01a001d001c4 Tj" + "ET" + "q" + "/gs1 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 396.28 757.18 cm" + "/Form2 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "396.28 761.51 Td" + "\"1 min\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs2 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 432.28 757.18 cm" + "/Form3 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "432.28 761.51 Td" + "\"30 ft\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs3 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 468.28 757.18 cm" + "/Form4 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "468.28 761.51 Td" + "\"V,S,M\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs4 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 504.28 757.18 cm" + "/Form5 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "504.28 761.51 Td" + "\"Until dispelled\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "0.00 0.00 0.00 rg" + "0.02 0.00 0.00 0.02 553.24 550.54 cm" + "/Form6 Do" + "Q" + "BT" + "/F2 8.00 Tf" + "216.28 721.18 Td" + "0.00 -8.80 Td" + "#hex:001f01fc00030134011801c901d6016b018f015e0003015e0143018d0640016b018f01840118016b013b000301c901d6016b0134018101c905fc000301c1019b01840184016b018f015e0003013b01c10118015e019b018f Tj" + "0.00 -8.80 Td" + "#hex:0133019b018f014301c905fc00030184011801fc016b018f015e0003019b01de01d60003019b01c1018f011801d6014300030134011801c1013b01c905fc0003019b01c100030143018d01be0184019b01fc016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:01c9019b018d01430003019b01d60166014301c10003013b016b01f5016b018f016b018f015e000301d6019b019b018405fc000301fc019b01de000301c1014301340143016b01f5014300030118018f0003019b018d0143018f Tj" + "0.00 -8.80 Td" + "#hex:015d01c1019b018d00030118018f0003019b01d60166014301c101f6019b01c10184013b018401fc00030143018f01d6016b01d601fc000301180133019b01de01d6000301d601660143000301c1014301c901de018401d601c9 Tj" + "0.00 -8.80 Td" + "#hex:019b015d00030118000301c901be01430134016b025b013400030134019b01de01c101c901430003019b015d00030118013401d6016b019b018f000301d60166011801d6000301fc019b01de000301be01840118018f000301d6019b Tj" + "0.00 -8.80 Td" + "#hex:01d6011801810143000301f6016b01d60166016b018f000301d6016601430003018f014301fb01d60003056c05690003018d016b018f01de01d6014301c90608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c90003015d01c1019b018d000301d6016601430003015d019b01840184019b01f6016b018f015e000301be019b01c901c9016b0133018401430003019b018d0143018f01c905fb000305f8 Tj" + "0.00 -8.80 Td" + "#hex:00e001430118018405fc0003015d019b01c10003015e019b019b013b000301c1014301c901de018401d601c9000305f8000300e0019b014305fc0003015d019b01c1000301330118013b000301c1014301c901de018401d601c9000305f8 Tj" + "0.00 -8.80 Td" + "#hex:00e001430118018400030118018f013b000301f6019b014305fc0003015d019b01c100030133019b01d601660003015e019b019b013b00030118018f013b000301330118013b000301c1014301c901de018401d601c9000305f8 Tj" + "0.00 -8.80 Td" + "#hex:007a019b01d60166016b018f015e05fc0003015d019b01c1000301c1014301c901de018401d601c9000301d60166011801d60003011801c10143018f060c01d60003014301c901be01430134016b01180184018401fc0003015e019b019b013b Tj" + "0.00 -8.80 Td" + "#hex:019b01c1000301330118013b000300c101660143000301c901be0143018401840003013b019b014301c9018f060c01d6000301d60118018101430003016b018f01d6019b0003011801340134019b01de018f01d600030118018f01fc Tj" + "0.00 -8.80 Td" + "#hex:01be019b01c901c9016b01330184014300030134016b01c1013401de018d01c901d60118018f0134014301c9000301d60166011801d60003018d016b015e016601d60003013401660118018f015e0143000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:019b01de01d60134019b018d014305fc000301c901de013401660003011801c9000301d60166014300030134011801c901d6016b018f015e0003019b015d00030118013b013b016b01d6016b019b018f01180184 Tj" + "0.00 -8.80 Td" + "#hex:01c901be01430184018401c90003019b01c1000301d60166014300030184019b01c901c90003019b01c10003015e0118016b018f0003019b015d0003011800030134019b018d01be0118018f016b019b018f060800030058015d000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:0134011801c901d6000301d601660143000301c901be014301840184000301d601f6019b0003019b01c10003018d019b01c10143000301d6016b018d014301c9000301330143015d019b01c10143 Tj" + "0.00 -8.80 Td" + "#hex:0134019b018d01be0184014301d6016b018f015e000301fc019b01de01c10003018f014301fb01d600030184019b018f015e000301c1014301c901d605fc000301d60166014301c101430003016b01c900030118 Tj" + "0.00 -8.80 Td" + "#hex:013401de018d01de0184011801d6016b01f501430003056b056e000301be014301c101340143018f01d60003013401660118018f013401430003015d019b01c10003014301180134016600030134011801c901d6016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:0118025e014301c1000301d6016601430003025b01c101c901d6000301d60166011801d6000301fc019b01de0003015e014301d600030118000301c10118018f013b019b018d000301c101430118013b016b018f015e0608 Tj" + "0.00 -8.80 Td" + "#hex:00c1016601430003004b00780003018d01180181014301c9000301d60166016b01c9000301c1019b018401840003016b018f000301c90143013401c1014301d60608 Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "216.28 759.34 Td" + "0.00 -8.80 Td" + "#hex:00b401f30178016901a0014d01b901b90231000301c2014d01f601b601780170000301fe020b01a0016901b601fe04760003016801d001c4017801fe0476000301d001f6000301fe01a001c201a001b9014d01f60003020b01d001b6017801c401fe Tj" + "0.00 -8.80 Td" + "#hex:022b01d001f6020b019b0003014d020b000301b90178014d01fe020b000303fb03fe0003019301f3 Tj" + "ET" + "q" + "13.20 0.00 0.00 18.00 373.84 779.51 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 10.00 Tf" + "216.28 798.95 Td" + "0.00 -11.00 Td" + "#hex:000401de015e01de01c101fc Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "251.57 798.95 Td" + "0.00 -11.00 Td" + "#hex:000304a201f601a0020b0213014d01b904a3 Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "216.28 785.27 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303fb0003002701a0022a01a001c4014d020b01a001d001c4 Tj" + "ET" + "q" + "/gs5 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 216.28 757.18 cm" + "/Form2 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "216.28 761.51 Td" + "\"1 min\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs6 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 252.28 757.18 cm" + "/Form3 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "252.28 761.51 Td" + "\"Self\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs7 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 288.28 757.18 cm" + "/Form4 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "288.28 761.51 Td" + "\"V,S,M\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs8 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 324.28 757.18 cm" + "/Form5 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "324.28 761.51 Td" + "\"Inst\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "BT" + "/F2 8.00 Tf" + "36.28 721.18 Td" + "0.00 -8.80 Td" + "#hex:0004000301f6011801f501430003019b015d000301d6016601de018f013b014301c1019b01de01c90003015d019b01c101340143000301c901f60143014301be01c90003019b01de01d60003015d01c1019b018d Tj" + "0.00 -8.80 Td" + "#hex:01fc019b01de0608000300310118013401660003013401c10143011801d601de01c101430003016b018f000301180003056a056e0640015d019b019b01d60003013401de01330143 Tj" + "0.00 -8.80 Td" + "#hex:019b01c1016b015e016b018f011801d6016b018f015e0003015d01c1019b018d000301fc019b01de0003018d01de01c901d60003018d01180181014300030118 Tj" + "0.00 -8.80 Td" + "#hex:0020019b018f01c901d6016b01d601de01d6016b019b018f000301c9011801f5016b018f015e000301d6016601c1019b01f6060800030086018f000301180003015d0118016b01840143013b000301c9011801f5014305fc00030118 Tj" + "0.00 -8.80 Td" + "#hex:013401c10143011801d601de01c10143000301d601180181014301c90003056b013b0571000301d6016601de018f013b014301c10003013b0118018d0118015e014300030118018f013b0003016b01c9 Tj" + "0.00 -8.80 Td" + "#hex:01be01de01c901660143013b0003056a05690003015d0143014301d60003011801f6011801fc0003015d01c1019b018d000301fc019b01de060800030086018f00030118000301c901de01340134014301c901c9015d01de0184 Tj" + "0.00 -8.80 Td" + "#hex:01c9011801f5014305fc000301d6016601430003013401c10143011801d601de01c10143000301d601180181014301c90003016601180184015d0003011801c90003018d01de013401660003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:0118018f013b0003016b01c9018f060c01d6000301be01de01c901660143013b060800030058018f00030118013b013b016b01d6016b019b018f05fc000301de018f01c90143013401de01c10143013b Tj" + "0.00 -8.80 Td" + "#hex:019b0133017d0143013401d601c9000301d60166011801d60003011801c1014300030134019b018d01be0184014301d60143018401fc000301f6016b01d60166016b018f000301d6016601430003011801c1014301180003019b015d Tj" + "0.00 -8.80 Td" + "#hex:014302480143013401d60003011801c101430003011801de01d6019b018d011801d6016b013401180184018401fc000301be01de01c901660143013b0003056a05690003015d0143014301d60003011801f6011801fc Tj" + "0.00 -8.80 Td" + "#hex:015d01c1019b018d000301fc019b01de0003013301fc000301d601660143000301c901be014301840184060c01c90003014302480143013401d605fc00030118018f013b000301d601660143000301c901be014301840184 Tj" + "0.00 -8.80 Td" + "#hex:0143018d016b01d601c900030118000301d6016601de018f013b014301c1019b01de01c900030133019b019b018d0003011801de013b016b0133018401430003019b01de01d6000301d6019b0003056c05690569 Tj" + "0.00 -8.80 Td" + "#hex:015d0143014301d606080003000401d600030053016b015e0166014301c10003006e014301f50143018401c90608000300e001660143018f000301fc019b01de00030134011801c901d6000301d60166016b01c9 Tj" + "0.00 -8.80 Td" + "#hex:01c901be014301840184000301de01c9016b018f015e00030118000301c901be014301840184000301c90184019b01d60003019b015d0003056b018f013b00030184014301f5014301840003019b01c100030166016b015e0166014301c105fc Tj" + "0.00 -8.80 Td" + "#hex:01d6016601430003013b0118018d0118015e01430003016b018f013401c10143011801c9014301c90003013301fc0003056a013b05710003015d019b01c100030143011801340166000301c90184019b01d600030184014301f501430184 Tj" + "0.00 -8.80 Td" + "#hex:01180133019b01f501430003056a01c901d60608 Tj" + "ET" + "q" + "13.20 0.00 0.00 18.00 193.84 779.51 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 10.00 Tf" + "36.28 798.95 Td" + "0.00 -11.00 Td" + "#hex:00c1016601de018f013b014301c101f6011801f50143 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "102.30 798.95 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "36.28 785.27 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303fa00030031022a01d00169014d020b01a001d001c4 Tj" + "ET" + "q" + "/gs9 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 36.28 757.18 cm" + "/Form2 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "36.28 761.51 Td" + "\"1 Act.\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs10 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 72.28 757.18 cm" + "/Form3 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "72.28 761.51 Td" + "\"Self\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs11 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 108.28 757.18 cm" + "/Form4 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "108.28 761.51 Td" + "\"V,S\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs12 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 144.28 757.18 cm" + "/Form5 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "144.28 761.51 Td" + "\"Inst\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "BT" + "/F2 8.00 Tf" + "396.28 469.18 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de000301d601430184014301be019b01c101d6000301fc019b01de01c101c901430184015d0003015d01c1019b018d000301fc019b01de01c10003013401de01c101c10143018f01d6 Tj" + "0.00 -8.80 Td" + "#hex:0184019b0134011801d6016b019b018f000301d6019b00030118018f01fc0003019b01d60166014301c1000301c901be019b01d6000301f6016b01d60166016b018f000301c10118018f015e01430608000300e6019b01de Tj" + "0.00 -8.80 Td" + "#hex:011801c101c1016b01f501430003011801d60003014301fb0118013401d6018401fc000301d601660143000301c901be019b01d60003013b014301c9016b01c10143013b06080003005801d6000301340118018f00030133014300030118 Tj" + "0.00 -8.80 Td" + "#hex:01be0184011801340143000301fc019b01de000301340118018f000301c90143014305fc0003019b018f0143000301fc019b01de000301340118018f000301f5016b01c901de01180184016b0206014305fc0003019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:019b018f0143000301fc019b01de000301340118018f0003013b014301c9013401c1016b013301430003013301fc000301c901d6011801d6016b018f015e0003013b016b01c901d60118018f0134014300030118018f013b Tj" + "0.00 -8.80 Td" + "#hex:013b016b01c10143013401d6016b019b018f05fc000301c901de013401660003011801c900030655056b056905690003015d0143014301d6000301c901d601c10118016b015e016601d6 Tj" + "0.00 -8.80 Td" + "#hex:013b019b01f6018f01f6011801c1013b06560003019b01c10003065501de01be01f6011801c1013b000301d6019b000301d6016601430003018f019b01c101d6016601f6014301c901d60003011801d600030118 Tj" + "0.00 -8.80 Td" + "#hex:056d056e0640013b0143015e01c10143014300030118018f015e0184014305fc0003056c056905690003015d0143014301d606080656000300e6019b01de000301340118018f0003013301c1016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:01180184019b018f015e0003019b0133017d0143013401d601c90003011801c900030184019b018f015e0003011801c9000301d601660143016b01c1000301f60143016b015e016601d60003013b019b014301c9018f060c01d6 Tj" + "0.00 -8.80 Td" + "#hex:014301fb013401430143013b000301f60166011801d6000301fc019b01de000301340118018f00030134011801c101c101fc0608000300e6019b01de000301340118018f00030118018401c9019b0003013301c1016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:019b018f0143000301f6016b01840184016b018f015e0003013401c10143011801d601de01c101430003019b015d000301fc019b01de01c1000301c9016b020601430003019b01c1000301c9018d011801840184014301c1 Tj" + "0.00 -8.80 Td" + "#hex:01f60166019b0003016b01c900030134011801c101c101fc016b018f015e0003015e0143011801c1000301de01be000301d6019b0003016b01d601c900030134011801c101c101fc016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:0134011801be01180134016b01d601fc0608000300c1016601430003013401c10143011801d601de01c101430003018d01de01c901d6000301330143000301f6016b01d60166016b018f0003056e0003015d0143014301d60003019b015d Tj" + "0.00 -8.80 Td" + "#hex:01fc019b01de000301f601660143018f000301fc019b01de00030134011801c901d6000301d60166016b01c9000301c901be014301840184060800030058015d000301fc019b01de000301f6019b01de0184013b Tj" + "0.00 -8.80 Td" + "#hex:011801c101c1016b01f501430003016b018f00030118000301be018401180134014300030118018401c101430118013b01fc0003019b0134013401de01be016b0143013b0003013301fc00030118018f0003019b0133017d0143013401d6 Tj" + "0.00 -8.80 Td" + "#hex:019b01c1000301180003013401c10143011801d601de01c1014305fc000301fc019b01de00030118018f013b00030118018f01fc0003013401c10143011801d601de01c10143000301d601c1011801f501430184016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:01f6016b01d60166000301fc019b01de00030143011801340166000301d60118018101430003056d013b056f0003015d019b01c1013401430003013b0118018d0118015e014305fc00030118018f013b000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01c901be0143018401840003015d0118016b018401c9000301d6019b000301d601430184014301be019b01c101d6000301fc019b01de0608 Tj" + "ET" + "q" + "13.20 0.00 0.00 18.00 553.84 527.51 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 10.00 Tf" + "396.28 546.95 Td" + "0.00 -11.00 Td" + "#hex:0027016b018d0143018f01c9016b019b018f00030027019b019b01c1 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "474.85 546.95 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "396.28 533.27 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303fd0003002001d001c401b2021301f6014d020b01a001d001c4 Tj" + "ET" + "q" + "/gs13 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 396.28 505.18 cm" + "/Form2 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "396.28 509.50 Td" + "\"1 Act.\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs14 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 432.28 505.18 cm" + "/Form3 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "432.28 509.50 Td" + "\"500 ft\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs15 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 468.28 505.18 cm" + "/Form4 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "468.28 509.50 Td" + "\"V\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs16 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 504.28 505.18 cm" + "/Form5 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "504.28 509.50 Td" + "\"Inst\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "BT" + "/F2 8.00 Tf" + "216.28 469.18 Td" + "0.00 -8.80 Td" + "#hex:00040003056a05690640015d019b019b01d6064001c10118013b016b01de01c90003016b018d018d019b0133016b018401430003013b019b018d01430003019b015d0003015d019b01c101340143 Tj" + "0.00 -8.80 Td" + "#hex:01c901be01c1016b018f015e01c90003016b018f01d6019b0003014301fb016b01c901d60143018f013401430003011801c1019b01de018f013b00030118018f013b000301180133019b01f50143000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:0118018f013b000301c10143018d0118016b018f01c9000301c901d6011801d6016b019b018f011801c101fc0003015d019b01c1000301d6016601430003013b01de01c1011801d6016b019b018f0608000300c101660143 Tj" + "0.00 -8.80 Td" + "#hex:01c901be01430184018400030143018f013b01c90003016b015d000301fc019b01de000301840143011801f501430003016b01d601c90003011801c10143011806080003007a016b018f01430003013401c10143011801d601de01c1014301c9 Tj" + "0.00 -8.80 Td" + "#hex:019b015d000300780143013b016b01de018d000301c9016b020601430003019b01c1000301c9018d011801840184014301c1000301340118018f0003025b01d60003016b018f01c9016b013b0143000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:013b019b018d0143000301f6016b01d60166000301fc019b01de0608000300c101660143000301c901be0143018401840003015d0118016b018401c90003016b015d0003016b01d601c90003011801c101430118 Tj" + "0.00 -8.80 Td" + "#hex:016b018f0134018401de013b014301c90003011800030184011801c1015e014301c10003013401c10143011801d601de01c101430003019b01c10003018d019b01c10143000301d601660118018f0003018f016b018f0143 Tj" + "0.00 -8.80 Td" + "#hex:013401c10143011801d601de01c1014301c906080003002001c10143011801d601de01c1014301c900030118018f013b0003019b0133017d0143013401d601c9000301f6016b01d60166016b018f000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:013b019b018d0143000301f601660143018f000301fc019b01de00030134011801c901d6000301d60166016b01c9000301c901be014301840184000301340118018f0003018d019b01f50143 Tj" + "0.00 -8.80 Td" + "#hex:01d6016601c1019b01de015e01660003016b01d60003015d01c101430143018401fc060800030004018401840003019b01d60166014301c10003013401c10143011801d601de01c1014301c900030118018f013b Tj" + "0.00 -8.80 Td" + "#hex:019b0133017d0143013401d601c90003011801c1014300030133011801c101c10143013b0003015d01c1019b018d000301be011801c901c9016b018f015e000301d6016601c1019b01de015e01660003016b01d60608 Tj" + "0.00 -8.80 Td" + "#hex:00b401be01430184018401c900030118018f013b0003019b01d60166014301c10003018d0118015e016b0134011801840003014302480143013401d601c9000301340118018f060c01d60003014301fb01d60143018f013b Tj" + "0.00 -8.80 Td" + "#hex:01d6016601c1019b01de015e0166000301d6016601430003013b019b018d01430003019b01c100030133014300030134011801c901d6000301d6016601c1019b01de015e01660003016b01d60608000300c101660143 Tj" + "0.00 -8.80 Td" + "#hex:011801d6018d019b01c901be0166014301c101430003016b018f01c9016b013b0143000301d601660143000301c901be0118013401430003016b01c900030134019b018d015d019b01c101d60118013301840143 Tj" + "0.00 -8.80 Td" + "#hex:0118018f013b0003013b01c101fc05fc000301c10143015e011801c1013b0184014301c901c90003019b015d000301d601660143000301f60143011801d60166014301c10003019b01de01d601c9016b013b01430608 Tj" + "0.00 -8.80 Td" + "#hex:00c8018f01d6016b0184000301d601660143000301c901be01430184018400030143018f013b01c905fc000301fc019b01de000301340118018f00030134019b018d018d0118018f013b000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:016b018f01d6014301c1016b019b01c1000301d6019b0003013301430134019b018d01430003013b016b018d018401fc00030184016b01d60003019b01c10003013b011801c101810608000300c1016601430003013b019b018d0143 Tj" + "0.00 -8.80 Td" + "#hex:016b01c90003019b01be011801c001de01430003015d01c1019b018d000301d6016601430003019b01de01d601c9016b013b014305fc0003019b015d00030118018f01fc00030134019b0184019b01c1000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014305fc0003013301de01d60003016b01d60003016b01c9000301d601c10118018f01c901be011801c10143018f01d60003015d01c1019b018d000301d6016601430003016b018f01c9016b013b01430608 Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "216.28 507.35 Td" + "0.00 -8.80 Td" + "#hex:0004000301fe01c2014d01b901b90003016901f6023101fe020b014d01b9000301680178014d0170 Tj" + "ET" + "q" + "13.20 0.00 0.00 18.00 373.84 527.51 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 10.00 Tf" + "216.28 546.95 Td" + "0.00 -11.00 Td" + "#hex:00c1016b018f01fc0003005301de01d6 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "258.39 546.95 Td" + "0.00 -11.00 Td" + "#hex:000304a201f601a0020b0213014d01b904a3 Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "216.28 533.27 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303fc00030031022a01d00169014d020b01a001d001c4 Tj" + "ET" + "q" + "/gs17 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 216.28 505.18 cm" + "/Form2 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "216.28 509.50 Td" + "\"1 min\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs18 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 252.28 505.18 cm" + "/Form3 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "252.28 509.50 Td" + "\"Self\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs19 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 288.28 505.18 cm" + "/Form4 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "288.28 509.50 Td" + "\"V,S,M\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs20 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 324.28 505.18 cm" + "/Form5 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "324.28 509.50 Td" + "\"8 hrs\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "BT" + "/F2 8.00 Tf" + "36.28 469.18 Td" + "0.00 -8.80 Td" + "#hex:00c10166016b01c9000301c901be0143018401840003013401c10143011801d6014301c900030118018f000301de018f013b01430118013b000301c9014301c101f50118018f01d60608000300200166019b019b01c9014300030118 Tj" + "0.00 -8.80 Td" + "#hex:01be016b018401430003019b015d00030133019b018f014301c90003019b01c10003011800030134019b01c101be01c901430003019b015d00030118000300780143013b016b01de018d0003019b01c1000300b4018d011801840184 Tj" + "0.00 -8.80 Td" + "#hex:016601de018d0118018f019b016b013b000301f6016b01d60166016b018f000301c10118018f015e01430608000300e6019b01de01c1000301c901be0143018401840003016b018d013301de014301c9000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01d6011801c1015e014301d6000301f6016b01d60166000301180003015d019b01de01840003018d016b018d016b013401c101fc0003019b015d00030184016b015d014305fc000301c10118016b01c9016b018f015e0003016b01d60003011801c9 Tj" + "0.00 -8.80 Td" + "#hex:0118018f000301de018f013b01430118013b0003013401c10143011801d601de01c101430608000300c101660143000301d6011801c1015e014301d60003013301430134019b018d014301c900030118 Tj" + "0.00 -8.80 Td" + "#hex:01c9018101430184014301d6019b018f0003016b015d000301fc019b01de000301340166019b01c9014300030133019b018f014301c90003019b01c10003011800030206019b018d0133016b01430003016b015d000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:01340166019b01c901430003011800030134019b01c101be01c901430003062801d6016601430003004b007800030166011801c9000301d6016601430003013401c10143011801d601de01c10143060c01c9 Tj" + "0.00 -8.80 Td" + "#hex:015e0118018d0143000301c901d6011801d6016b01c901d6016b013401c90629060800030086018f000301430118013401660003019b015d000301fc019b01de01c1000301d601de01c1018f01c905fc000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:01340118018f000301de01c901430003011800030133019b018f01de01c900030118013401d6016b019b018f000301d6019b0003018d0143018f01d601180184018401fc00030134019b018d018d0118018f013b Tj" + "0.00 -8.80 Td" + "#hex:0118018f01fc0003013401c10143011801d601de01c10143000301fc019b01de0003018d0118013b0143000301f6016b01d60166000301d60166016b01c9000301c901be0143018401840003016b015d000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:013401c10143011801d601de01c101430003016b01c9000301f6016b01d60166016b018f0003056f05690003015d0143014301d60003019b015d000301fc019b01de00030628016b015d000301fc019b01de00030134019b018f01d601c1019b0184 Tj" + "0.00 -8.80 Td" + "#hex:018d01de018401d6016b01be018401430003013401c10143011801d601de01c1014301c905fc000301fc019b01de000301340118018f00030134019b018d018d0118018f013b00030118018f01fc0003019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:0118018401840003019b015d000301d601660143018d0003011801d6000301d601660143000301c90118018d0143000301d6016b018d014305fc0003016b01c901c901de016b018f015e000301d601660143000301c90118018d0143 Tj" + "0.00 -8.80 Td" + "#hex:0134019b018d018d0118018f013b000301d6019b000301430118013401660003019b018f014306290608000300e6019b01de0003013b01430134016b013b0143000301f60166011801d600030118013401d6016b019b018f Tj" + "0.00 -8.80 Td" + "#hex:01d6016601430003013401c10143011801d601de01c10143000301f6016b01840184000301d601180181014300030118018f013b000301f60166014301c101430003016b01d6000301f6016b018401840003018d019b01f50143 Tj" + "0.00 -8.80 Td" + "#hex:013b01de01c1016b018f015e0003016b01d601c90003018f014301fb01d6000301d601de01c1018f05fc0003019b01c1000301fc019b01de000301340118018f0003016b01c901c901de0143000301180003015e0143018f014301c101180184 Tj" + "0.00 -8.80 Td" + "#hex:0134019b018d018d0118018f013b05fc000301c901de013401660003011801c9000301d6019b0003015e01de011801c1013b00030118000301be011801c101d6016b013401de0184011801c1 Tj" + "0.00 -8.80 Td" + "#hex:013401660118018d0133014301c10003019b01c100030134019b01c101c1016b013b019b01c1060800030058015d000301fc019b01de0003016b01c901c901de01430003018f019b Tj" + "0.00 -8.80 Td" + "#hex:0134019b018d018d0118018f013b01c905fc000301d6016601430003013401c10143011801d601de01c101430003019b018f018401fc0003013b0143015d0143018f013b01c90003016b01d601c901430184015d Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "36.28 507.35 Td" + "0.00 -8.80 Td" + "#hex:00040003017001f601d001f3000301d001920003016801b901d001d0017004760003014d000301f301a0017801690178000301d001920003027f017801fe019b04760003014d01c401700003014d000301f301a001c40169019b000301d001920003016801d001c40178 Tj" + "0.00 -8.80 Td" + "#hex:0170021301fe020b Tj" + "ET" + "q" + "13.20 0.00 0.00 18.00 193.84 527.51 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 10.00 Tf" + "36.28 546.95 Td" + "0.00 -11.00 Td" + "#hex:0004018f016b018d011801d601430003002701430118013b Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "103.79 546.95 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "36.28 533.27 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303fc0003007a0178016901f601d001c2014d01c401690231 Tj" + "ET" + "q" + "/gs21 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 36.28 505.18 cm" + "/Form2 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "36.28 509.50 Td" + "\"1 min\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs22 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 72.28 505.18 cm" + "/Form3 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "72.28 509.50 Td" + "\"10 ft\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs23 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 108.28 505.18 cm" + "/Form4 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "108.28 509.50 Td" + "\"V,S,M\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs24 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 144.28 505.18 cm" + "/Form5 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "144.28 509.50 Td" + "\"Inst\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "0.00 0.00 0.00 rg" + "0.02 0.00 0.00 0.02 193.24 298.55 cm" + "/Form6 Do" + "Q" + "BT" + "/F2 8.00 Tf" + "396.28 217.18 Td" + "0.00 -8.80 Td" + "#hex:00200166019b019b01c9014300030118018f0003011801c1014301180003019b015d000301d6014301c101c10118016b018f0003018f019b00030184011801c1015e014301c1000301d601660118018f0003056d0569 Tj" + "0.00 -8.80 Td" + "#hex:015d0143014301d60003019b018f00030118000301c9016b013b0143000301f6016b01d60166016b018f000301c10118018f015e01430608000300e6019b01de000301340118018f000301c1014301c90166011801be0143 Tj" + "0.00 -8.80 Td" + "#hex:013b016b01c101d605fc000301c90118018f013b05fc0003019b01c1000301340184011801fc0003016b018f000301d6016601430003011801c1014301180003016b018f00030118018f01fc0003018d0118018f018f014301c1 Tj" + "0.00 -8.80 Td" + "#hex:01fc019b01de000301340166019b019b01c901430003015d019b01c1000301d6016601430003013b01de01c1011801d6016b019b018f0608000300e6019b01de000301340118018f000301c10118016b01c901430003019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:0184019b01f6014301c1000301d6016601430003011801c101430118060c01c9000301430184014301f5011801d6016b019b018f05fc0003013401c10143011801d601430003019b01c10003025b018401840003016b018f00030118 Tj" + "0.00 -8.80 Td" + "#hex:01d601c10143018f0134016605fc0003014301c10143013401d60003019b01c10003025d011801d601d60143018f00030118000301f601180184018405fc0003019b01c10003015d019b01c1018d00030118000301be016b01840184011801c10608 Tj" + "0.00 -8.80 Td" + "#hex:00c1016601430003014301fb01d60143018f01d60003019b015d00030118018f01fc000301c901de013401660003013401660118018f015e014301c9000301340118018f060c01d60003014301fb013401430143013b Tj" + "0.00 -8.80 Td" + "#hex:016601180184015d000301d6016601430003011801c101430118060c01c900030184011801c1015e014301c901d60003013b016b018d0143018f01c9016b019b018f0608000300b4019b05fc0003016b015d000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:011802480143013401d6000301180003056d05690640015d019b019b01d6000301c901c001de011801c1014305fc000301fc019b01de000301340118018f0003013401c10143011801d6014300030118000301be016b01840184011801c1 Tj" + "0.00 -8.80 Td" + "#hex:01de01be000301d6019b0003056b05690003015d0143014301d600030166016b015e016605fc000301c10118016b01c901430003019b01c100030184019b01f6014301c1000301d601660143000301c901c001de011801c10143060c01c9 Tj" + "0.00 -8.80 Td" + "#hex:01430184014301f5011801d6016b019b018f0003013301fc000301de01be000301d6019b0003056b05690003015d0143014301d605fc0003013b016b015e00030118000301d601c10143018f01340166000301de01be000301d6019b0003056b0569 Tj" + "0.00 -8.80 Td" + "#hex:015d0143014301d60003013b0143014301be05fc00030118018f013b000301c9019b0003019b018f06080003005801d6000301d601180181014301c90003056a05690003018d016b018f01de01d6014301c90003015d019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:01d60166014301c901430003013401660118018f015e014301c9000301d6019b00030134019b018d01be0184014301d6014306080003000401d6000301d60166014300030143018f013b0003019b015d0003014301f5014301c101fc Tj" + "0.00 -8.80 Td" + "#hex:056a05690003018d016b018f01de01d6014301c9000301fc019b01de000301c901be0143018f013b00030134019b018f01340143018f01d601c1011801d6016b018f015e0003019b018f000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01c901be01430184018405fc000301fc019b01de000301340118018f000301340166019b019b01c90143000301180003018f014301f60003011801c1014301180003019b015d000301d6014301c101c10118016b018f000301d6019b Tj" + "0.00 -8.80 Td" + "#hex:011802480143013401d606080003001f01430134011801de01c90143000301d601660143000301d6014301c101c10118016b018f060c01c9000301d601c10118018f01c9015d019b01c1018d011801d6016b019b018f Tj" + "0.00 -8.80 Td" + "#hex:019b0134013401de01c101c9000301c90184019b01f6018401fc05fc0003013401c10143011801d601de01c1014301c90003016b018f000301d6016601430003011801c101430118000301340118018f060c01d6 Tj" + "0.00 -8.80 Td" + "#hex:01de01c901de01180184018401fc000301330143000301d601c1011801be01be0143013b0003019b01c10003016b018f017d01de01c10143013b0003013301fc000301d6016601430003015e01c1019b01de018f013b060c01c9 Tj" + "0.00 -8.80 Td" + "#hex:018d019b01f50143018d0143018f01d60608000300c10166016b01c9000301c901be014301840184000301340118018f060c01d60003018d0118018f016b01be01de0184011801d601430003018f011801d601de01c101180184 Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "396.28 255.35 Td" + "0.00 -8.80 Td" + "#hex:000401c4000301a001f601d001c40003016801b9014d017001780003014d01c401700003014d000301fe01c2014d01b901b900030168014d01930003016901d001c4020b014d01a001c401a001c401930003014d000301c201a00230020b021301f60178 Tj" + "0.00 -8.80 Td" + "#hex:01d00192000301fe01d001a001b901fe04b6016901b9014d02310476000301b901d0014d01c204760003014d01c40170000301fe014d01c40170 Tj" + "ET" + "q" + "13.20 0.00 0.00 18.00 553.84 275.51 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 10.00 Tf" + "396.28 294.95 Td" + "0.00 -11.00 Td" + "#hex:0078019b01f5014300030031011801c101d60166 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "451.29 294.95 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "396.28 281.27 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303ff000300c101f6014d01c401fe01c20213020b014d020b01a001d001c4 Tj" + "ET" + "q" + "/gs25 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 396.28 253.19 cm" + "/Form2 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "396.28 257.51 Td" + "\"1 Act.\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs26 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 432.28 253.19 cm" + "/Form3 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "432.28 257.51 Td" + "\"120 ft\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs27 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 468.28 253.19 cm" + "/Form4 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "468.28 257.51 Td" + "\"V,S,M\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs28 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 504.28 253.19 cm" + "/Form5 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "504.28 257.51 Td" + "\"Conc, 2 hrs\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "0.00 0.00 0.00 rg" + "0.02 0.00 0.00 0.02 553.24 46.54 cm" + "/Form6 Do" + "Q" + "BT" + "/F2 8.00 Tf" + "216.28 217.18 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de0003016b018d013301de0143000301180003013401c10143011801d601de01c10143000301fc019b01de000301d6019b01de01340166000301f6016b01d60166000301be019b01c9016b01d6016b01f50143 Tj" + "0.00 -8.80 Td" + "#hex:0143018f014301c1015e01fc000301d6019b000301de018f013b019b000301180003013b01430133016b0184016b01d6011801d6016b018f015e0003014302480143013401d60608000300e6019b01de000301340118018f Tj" + "0.00 -8.80 Td" + "#hex:01c10143013b01de01340143000301d601660143000301d6011801c1015e014301d6060c01c90003014301fb0166011801de01c901d6016b019b018f00030184014301f5014301840003013301fc0003019b018f014305fc0003019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:0143018f013b0003019b018f01430003019b015d000301d6016601430003015d019b01840184019b01f6016b018f015e0003014302480143013401d601c90003019b018f000301d601660143000301d6011801c1015e014301d605fb000305f8 Tj" + "0.00 -8.80 Td" + "#hex:0086018f01430003014302480143013401d6000301d60166011801d6000301340166011801c1018d0143013b0003019b01c1000301be014301d601c1016b025b0143013b000301d601660143000301d6011801c1015e014301d6 Tj" + "0.00 -8.80 Td" + "#hex:05f800030086018f01430003013401de01c101c9014305fc0003016b018f0134018401de013b016b018f015e000301d601660143000301d6011801c1015e014301d6060c01c90003011801d601d601de018f0143018d0143018f01d6 Tj" + "0.00 -8.80 Td" + "#hex:01d6019b000301180003013401de01c101c90143013b0003018d0118015e016b01340003016b01d60143018d000305f800030004018f01fc000301c10143013b01de013401d6016b019b018f000301d6019b0003019b018f0143 Tj" + "0.00 -8.80 Td" + "#hex:019b015d000301d601660143000301d6011801c1015e014301d6060c01c9000301180133016b0184016b01d601fc000301c90134019b01c1014301c9000305f800030086018f01430003014302480143013401d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10143013b01de0134016b018f015e000301d601660143000301d6011801c1015e014301d6060c01c900030166016b01d6000301be019b016b018f01d60003018d011801fb016b018d01de018d Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "216.28 255.35 Td" + "0.00 -8.80 Td" + "#hex:002701a0014d01c201d001c4017000030170021301fe020b0003022b01d001f6020b019b0003014d020b000301b90178014d01fe020b000303fa03f903f90003019301f304760003022b019b01a00169019b0003020b019b0178000301fe01f3017801b901b9 Tj" + "0.00 -8.80 Td" + "#hex:016901d001c401fe021301c2017801fe Tj" + "ET" + "q" + "13.20 0.00 0.00 18.00 373.84 275.51 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 10.00 Tf" + "216.28 294.95 Td" + "0.00 -11.00 Td" + "#hex:004b01c10143011801d6014301c1000300ac014301c901d6019b01c1011801d6016b019b018f Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "310.80 294.95 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "216.28 281.27 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303fe00030004016801b2021301f6014d020b01a001d001c4 Tj" + "ET" + "q" + "/gs29 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 216.28 253.19 cm" + "/Form2 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "216.28 257.51 Td" + "\"1 Act.\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs30 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 252.28 253.19 cm" + "/Form3 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "252.28 257.51 Td" + "\"Touch\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs31 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 288.28 253.19 cm" + "/Form4 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "288.28 257.51 Td" + "\"V,S,M\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs32 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 324.28 253.19 cm" + "/Form5 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "324.28 257.51 Td" + "\"Inst\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "BT" + "/F2 8.00 Tf" + "36.28 217.18 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de000301be01de01840184000301f6016b01c901be01c90003019b015d000301c901660118013b019b01f60003018d011801d6014301c1016b011801840003015d01c1019b018d000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:00b401660118013b019b01f6015d014301840184000301d6019b0003013401c10143011801d60143000301180003018f019b018f0184016b01f5016b018f015e0003019b0133017d0143013401d60003019b015d Tj" + "0.00 -8.80 Td" + "#hex:01f50143015e014301d601180133018401430003018d011801d601d6014301c1000301f6016b01d60166016b018f000301c10118018f015e014305fb000301c9019b025e0003015e019b019b013b01c905fc Tj" + "0.00 -8.80 Td" + "#hex:01c1019b01be014305fc000301f6019b019b013b05fc0003019b01c1000301c9019b018d014301d60166016b018f015e000301c9016b018d016b0184011801c10608000300e6019b01de000301340118018f00030118018401c9019b Tj" + "0.00 -8.80 Td" + "#hex:01de01c90143000301d60166016b01c9000301c901be014301840184000301d6019b0003013401c10143011801d601430003018d016b018f014301c1011801840003019b0133017d0143013401d601c9000301c901de013401660003011801c9 Tj" + "0.00 -8.80 Td" + "#hex:01c901d6019b018f014305fc0003013401c101fc01c901d60118018405fc0003019b01c10003018d014301d6011801840608000300c1016601430003019b0133017d0143013401d60003013401c10143011801d60143013b Tj" + "0.00 -8.80 Td" + "#hex:018d01de01c901d60003013301430003018f019b00030184011801c1015e014301c1000301d601660118018f000301180003056e06400003015d019b019b01d60003013401de0133014305fc00030118018f013b000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:019b0133017d0143013401d60003018d01de01c901d60003013301430003019b015d000301180003015d019b01c1018d00030118018f013b0003018d011801d6014301c1016b01180184000301d60166011801d6000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:0166011801f50143000301c901430143018f000301330143015d019b01c101430608000300c1016601430003013b01de01c1011801d6016b019b018f0003013b014301be0143018f013b01c90003019b018f000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:019b0133017d0143013401d6060c01c90003018d011801d6014301c1016b01180184060800030058015d000301d6016601430003019b0133017d0143013401d60003016b01c900030134019b018d01be019b01c90143013b0003019b015d Tj" + "0.00 -8.80 Td" + "#hex:018d01de018401d6016b01be018401430003018d011801d6014301c1016b0118018401c905fc000301de01c90143000301d601660143000301c90166019b01c101d6014301c901d60003013b01de01c1011801d6016b019b018f0608 Tj" + "0.00 -8.80 Td" + "#hex:0078011801d6014301c1016b011801840003002701de01c1011801d6016b019b018f000300df0143015e014301d601180133018401430003018d011801d601d6014301c10003056a0003013b011801fc Tj" + "0.00 -8.80 Td" + "#hex:00b401d6019b018f01430003019b01c10003013401c101fc01c901d6011801840003056a056b00030166019b01de01c101c9000300a901c101430134016b019b01de01c90003018d014301d60118018401c90003056a Tj" + "0.00 -8.80 Td" + "#hex:0166019b01de01c10003004b0143018d01c90003056a05690003018d016b018f01de01d6014301c900030004013b0118018d0118018f01d6016b018f01430003019b01c10003018d016b01d6016601c101180184 Tj" + "0.00 -8.80 Td" + "#hex:056a0003018d016b018f01de01d60143000300c801c9016b018f015e00030118018f01fc0003018d011801d6014301c1016b011801840003013401c10143011801d60143013b0003013301fc000301d60166016b01c9 Tj" + "0.00 -8.80 Td" + "#hex:01c901be0143018401840003011801c900030118018f019b01d60166014301c1000301c901be014301840184060c01c90003018d011801d6014301c1016b0118018400030134019b018d01be019b018f0143018f01d6 Tj" + "0.00 -8.80 Td" + "#hex:0134011801de01c9014301c9000301d60166011801d6000301c901be014301840184000301d6019b0003015d0118016b018406080003000401d600030053016b015e0166014301c10003006e014301f50143018401c90608 Tj" + "0.00 -8.80 Td" + "#hex:00e001660143018f000301fc019b01de00030134011801c901d6000301d60166016b01c9000301c901be014301840184000301de01c9016b018f015e00030118000301c901be014301840184000301c90184019b01d60003019b015d Tj" + "0.00 -8.80 Td" + "#hex:056f01d6016600030184014301f5014301840003019b01c100030166016b015e0166014301c105fc000301d6016601430003013401de013301430003016b018f013401c10143011801c9014301c90003013301fc0003056e0003015d0143014301d6 Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "36.28 255.35 Td" + "0.00 -8.80 Td" + "#hex:00040003020b01a001c40231000301f301a0017801690178000301d00192000301c2014d020b020b017801f6000301d001920003020b019b0178000301fe014d01c201780003020b023101f30178000301d001920003020b019b0178000301a0020b017801c20003023101d00213 Tj" + "0.00 -8.80 Td" + "#hex:01f301b9014d01c40003020b01d00003016901f60178014d020b0178 Tj" + "ET" + "q" + "13.20 0.00 0.00 18.00 193.84 275.51 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 10.00 Tf" + "36.28 294.95 Td" + "0.00 -11.00 Td" + "#hex:002001c10143011801d6016b019b018f Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "77.81 294.95 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "36.28 281.27 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303fe0003005801b901b9021301fe01a001d001c4 Tj" + "ET" + "q" + "/gs33 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 36.28 253.19 cm" + "/Form2 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "36.28 257.51 Td" + "\"1 min\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs34 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 72.28 253.19 cm" + "/Form3 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "72.28 257.51 Td" + "\"30 ft\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs35 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 108.28 253.19 cm" + "/Form4 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "108.28 257.51 Td" + "\"V,S,M\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs36 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 144.28 253.19 cm" + "/Form5 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "144.28 257.51 Td" + "\"Special\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "0.00 0.00 0.00 rg" + "0.02 0.00 0.00 0.02 193.24 46.54 cm" + "/Form6 Do" + "Q"] + ["0.88 0.88 0.88 RG" + "27.64 42.94 m" + "27.64 798.95 l" + "S" + "207.64 42.94 m" + "207.64 798.95 l" + "S" + "387.64 42.94 m" + "387.64 798.95 l" + "S" + "567.64 42.94 m" + "567.64 798.95 l" + "S" + "27.64 42.94 m" + "567.64 42.94 l" + "S" + "27.64 294.95 m" + "567.64 294.95 l" + "S" + "27.64 546.95 m" + "567.64 546.95 l" + "S" + "27.64 798.95 m" + "567.64 798.95 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 831.09 Td" + "#hex:00a9014d01930178000303fa000304a201f60178022a017801f601fe017804a3 Tj" + "ET" + "BT" + "/F2 10.00 Tf" + "36.28 793.18 Td" + "0.00 -11.00 Td" + "#hex:00780118015e016b013400030078019b01de01d60166 Tj" + "ET" + "BT" + "/F3 8.00 Tf" + "36.28 781.66 Td" + "0.00 -8.80 Td" + "#hex:01c1014301be0143011801d60003016b01d601c90003018d014301c901c90118015e0143000301f601660143018f014301f5014301c1000301d601660143000301d601c1016b015e015e014301c1 Tj" + "0.00 -8.80 Td" + "#hex:019b0134013401de01c101c90608000300c101660143000301d601c1016b015e015e014301c1016b018f015e00030134016b01c1013401de018d01c901d60118018f01340143000301340118018f0003013301430003011801c9 Tj" + "0.00 -8.80 Td" + "#hex:015e0143018f014301c1011801840003019b01c10003011801c90003013b014301d60118016b01840143013b0003011801c9000301fc019b01de00030184016b0181014305fc000301d60166019b01de015e01660003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:018d01de01c901d600030133014300030133011801c90143013b0003019b018f000301f5016b01c901de011801840003019b01c10003011801de013b016b01330184014300030134019b018f013b016b01d6016b019b018f01c9 Tj" + "0.00 -8.80 Td" + "#hex:01d60166011801d60003019b0134013401de01c1000301f6016b01d60166016b018f0003056c05690003015d0143014301d60003019b015d000301d6016601430003019b0133017d0143013401d606080003004a019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:014301fb0118018d01be0184014305fc000301fc019b01de00030134019b01de0184013b0003016b018f01c901d601c101de013401d6000301d6016601430003018d019b01de01d60166000301d6019b Tj" + "0.00 -8.80 Td" + "#hex:01c901be014301180181000301f601660143018f00030118018f01fc0003013401c10143011801d601de01c101430003018d019b01f5014301c9000301f6016b01d60166016b018f0003056c05690003015d0143014301d6 Tj" + "0.00 -8.80 Td" + "#hex:019b015d000301d6016601430003019b0133017d0143013401d60003019b01c1000301f601660143018f00030118000301c9016b018401f5014301c100030133014301840184000301c1016b018f015e01c9000301f6016b01d60166016b018f Tj" + "0.00 -8.80 Td" + "#hex:056c05690003015d0143014301d60003019b015d0003016b01d60608 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "101.26 793.18 Td" + "0.00 -11.00 Td" + "#hex:04a201f60178022a017801f601fe017804a3 Tj" + "ET" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "82.65 558.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 45.64 348.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "82.65 306.46 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F2 10.00 Tf" + "36.28 289.18 Td" + "0.00 -11.00 Td" + "#hex:0078019b01f5014300030031011801c101d60166 Tj" + "ET" + "BT" + "/F3 8.00 Tf" + "36.28 277.67 Td" + "0.00 -8.80 Td" + "#hex:01c901d6019b018f01430003019b01c1000301c901d6019b018f014300030134019b018f01c901d601c101de013401d6016b019b018f0608000300ac019b0134018101c900030118018f013b Tj" + "0.00 -8.80 Td" + "#hex:01c901d601c101de013401d601de01c1014301c9000301c90166016b025e000301d6019b0003011801340134019b018d018d019b013b011801d60143000301d6016601430003018f014301f6 Tj" + "0.00 -8.80 Td" + "#hex:01d6014301c101c10118016b018f060800030058015d000301d601660143000301f6011801fc000301fc019b01de000301c90166011801be0143000301d601660143000301d6014301c101c10118016b018f000301f6019b01de0184013b Tj" + "0.00 -8.80 Td" + "#hex:018d01180181014300030118000301c901d601c101de013401d601de01c10143000301de018f01c901d6011801330184014305fc0003016b01d60003018d016b015e016601d600030134019b01840184011801be01c901430608 Tj" + "0.00 -8.80 Td" + "#hex:00b4016b018d016b0184011801c1018401fc05fc000301d60166016b01c9000301c901be0143018401840003013b019b014301c9018f060c01d60003013b016b01c10143013401d6018401fc0003011802480143013401d6 Tj" + "0.00 -8.80 Td" + "#hex:01be01840118018f01d60003015e01c1019b01f601d601660608000300c1016601430003018d019b01f50143013b00030143011801c101d6016600030134011801c101c1016b014301c900030118018f01fc Tj" + "0.00 -8.80 Td" + "#hex:01be01840118018f01d601c9000301180184019b018f015e000301f6016b01d601660003016b01d60608 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "93.45 289.18 Td" + "0.00 -11.00 Td" + "#hex:04a201f60178022a017801f601fe017804a3 Tj" + "ET" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "82.65 54.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 225.64 600.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "262.65 558.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 225.64 348.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "262.65 306.46 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 225.64 96.94 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "262.65 54.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 405.64 600.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "442.65 558.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F2 10.00 Tf" + "396.28 541.18 Td" + "0.00 -11.00 Td" + "#hex:0004018f016b018d011801d601430003002701430118013b Tj" + "ET" + "BT" + "/F3 8.00 Tf" + "396.28 529.66 Td" + "0.00 -8.80 Td" + "#hex:0118015e0118016b018f01c901d600030166019b01c901d6016b018401430003013401c10143011801d601de01c1014301c9060800030086018f013401430003015e016b01f50143018f00030118018f0003019b01c1013b014301c105fc Tj" + "0.00 -8.80 Td" + "#hex:01d6016601430003013401c10143011801d601de01c1014300030134019b018f01d6016b018f01de014301c9000301d6019b0003015d019b01840184019b01f60003016b01d6000301de018f01d6016b01840003016b01d601c9000301d6011801c90181 Tj" + "0.00 -8.80 Td" + "#hex:016b01c900030134019b018d01be0184014301d601430608000300c1016601430003013401c10143011801d601de01c101430003016b01c9000301de018f013b014301c1000301fc019b01de01c100030134019b018f01d601c1019b0184 Tj" + "0.00 -8.80 Td" + "#hex:015d019b01c10003056b056d00030166019b01de01c101c905fc00030118025e014301c1000301f60166016b013401660003016b01d6000301c901d6019b01be01c90003019b0133014301fc016b018f015e00030118018f01fc Tj" + "0.00 -8.80 Td" + "#hex:0134019b018d018d0118018f013b000301fc019b01de060c01f501430003015e016b01f50143018f0003016b01d60608000300c1019b0003018d0118016b018f01d60118016b018f00030134019b018f01d601c1019b0184 Tj" + "0.00 -8.80 Td" + "#hex:019b015d000301d6016601430003013401c10143011801d601de01c101430003015d019b01c100030118018f019b01d60166014301c10003056b056d00030166019b01de01c101c905fc000301fc019b01de0003018d01de01c901d6 Tj" + "0.00 -8.80 Td" + "#hex:0134011801c901d6000301d60166016b01c9000301c901be0143018401840003019b018f000301d6016601430003013401c10143011801d601de01c1014300030118015e0118016b018f000301330143015d019b01c10143000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:013401de01c101c10143018f01d60003056b056d06400166019b01de01c1000301be014301c1016b019b013b00030143018f013b01c90608000300c10166016b01c9000301de01c901430003019b015d000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01c901be014301840184000301c10143011801c901c9014301c101d601c9000301fc019b01de01c100030134019b018f01d601c1019b01840003019b01f5014301c1000301de01be000301d6019b0003015d019b01de01c1 Tj" + "0.00 -8.80 Td" + "#hex:013401c10143011801d601de01c1014301c9000301fc019b01de00030166011801f5014300030118018f016b018d011801d60143013b000301f6016b01d60166000301d60166016b01c9000301c901be01430184018405fc Tj" + "0.00 -8.80 Td" + "#hex:01c1011801d60166014301c1000301d601660118018f00030118018f016b018d011801d6016b018f015e000301180003018f014301f60003019b018f014306080003000401d600030053016b015e0166014301c1 Tj" + "0.00 -8.80 Td" + "#hex:006e014301f50143018401c90608000300e001660143018f000301fc019b01de00030134011801c901d6000301d60166016b01c9000301c901be014301840184000301de01c9016b018f015e00030118000301c901be014301840184 Tj" + "0.00 -8.80 Td" + "#hex:01c90184019b01d60003019b015d0003056d01d6016600030184014301f5014301840003019b01c100030166016b015e0166014301c105fc000301fc019b01de00030118018f016b018d011801d601430003019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:01c10143011801c901c9014301c101d600030134019b018f01d601c1019b01840003019b01f5014301c1000301d601f6019b00030118013b013b016b01d6016b019b018f01180184000301de018f013b01430118013b Tj" + "0.00 -8.80 Td" + "#hex:013401c10143011801d601de01c1014301c90003015d019b01c100030143011801340166000301c90184019b01d600030184014301f501430184000301180133019b01f501430003056c01c1013b0608000300310118013401660003019b015d Tj" + "0.00 -8.80 Td" + "#hex:01d6016601430003013401c10143011801d601de01c1014301c90003018d01de01c901d600030134019b018d01430003015d01c1019b018d000301180003013b016b0248014301c10143018f01d6 Tj" + "0.00 -8.80 Td" + "#hex:0134019b01c101be01c901430003019b01c1000301be016b018401430003019b015d00030133019b018f014301c90608 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "465.95 541.18 Td" + "0.00 -11.00 Td" + "#hex:04a201f60178022a017801f601fe017804a3 Tj" + "ET" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "442.65 306.46 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F2 10.00 Tf" + "396.28 289.18 Td" + "0.00 -11.00 Td" + "#hex:002001c10143011801d6016b019b018f Tj" + "ET" + "BT" + "/F3 8.00 Tf" + "396.28 277.67 Td" + "0.00 -8.80 Td" + "#hex:015d019b01c100030143011801340166000301c90184019b01d600030184014301f501430184000301180133019b01f501430003056e01d601660608 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "439.97 289.18 Td" + "0.00 -11.00 Td" + "#hex:04a201f60178022a017801f601fe017804a3 Tj" + "ET" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "442.65 54.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET"] + ["0.88 0.88 0.88 RG" + "27.64 42.94 m" + "27.64 798.95 l" + "S" + "207.64 42.94 m" + "207.64 798.95 l" + "S" + "387.64 42.94 m" + "387.64 798.95 l" + "S" + "567.64 42.94 m" + "567.64 798.95 l" + "S" + "27.64 42.94 m" + "567.64 42.94 l" + "S" + "27.64 294.95 m" + "567.64 294.95 l" + "S" + "27.64 546.95 m" + "567.64 546.95 l" + "S" + "27.64 798.95 m" + "567.64 798.95 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 831.09 Td" + "#hex:00a9014d01930178000303fb Tj" + "ET" + "BT" + "/F2 8.00 Tf" + "396.28 721.18 Td" + "0.00 -8.80 Td" + "#hex:000400030134016601de01c1018f016b018f015e000301c901d6019b01c1018d000301340184019b01de013b0003015d019b01c1018d01c905fc000301340143018f01d6014301c10143013b0003019b018f00030118 Tj" + "0.00 -8.80 Td" + "#hex:01be019b016b018f01d6000301fc019b01de000301340118018f000301c90143014300030118018f013b000301c901be01c101430118013b016b018f015e000301d6019b00030118000301c10118013b016b01de01c90003019b015d Tj" + "0.00 -8.80 Td" + "#hex:056c056f05690003015d0143014301d606080003006e016b015e016601d6018f016b018f015e0003025d011801c90166014301c90003016b018f000301d6016601430003011801c10143011805fc000301d6016601de018f013b014301c1 Tj" + "0.00 -8.80 Td" + "#hex:0133019b019b018d01c905fc00030118018f013b000301c901d601c1019b018f015e000301f6016b018f013b01c9000301c1019b011801c10608000300310118013401660003013401c10143011801d601de01c10143 Tj" + "0.00 -8.80 Td" + "#hex:01de018f013b014301c1000301d601660143000301340184019b01de013b00030628018f019b0003018d019b01c10143000301d601660118018f0003056e05fc0569056905690003015d0143014301d6 Tj" + "0.00 -8.80 Td" + "#hex:01330143018f0143011801d60166000301d601660143000301340184019b01de013b0629000301f601660143018f0003016b01d60003011801be01be0143011801c101c90003018d01de01c901d60003018d011801810143 Tj" + "0.00 -8.80 Td" + "#hex:011800030020019b018f01c901d6016b01d601de01d6016b019b018f000301c9011801f5016b018f015e000301d6016601c1019b01f6060800030086018f000301180003015d0118016b01840143013b000301c9011801f5014305fc Tj" + "0.00 -8.80 Td" + "#hex:01180003013401c10143011801d601de01c10143000301d601180181014301c90003056b013b056f000301d6016601de018f013b014301c10003013b0118018d0118015e014300030118018f013b Tj" + "0.00 -8.80 Td" + "#hex:013301430134019b018d014301c90003013b01430118015d0143018f0143013b0003015d019b01c10003056e0003018d016b018f01de01d6014301c9060800030031011801340166000301c1019b01de018f013b Tj" + "0.00 -8.80 Td" + "#hex:01fc019b01de0003018d0118016b018f01d60118016b018f00030134019b018f01340143018f01d601c1011801d6016b019b018f0003019b018f000301d60166016b01c9000301c901be01430184018405fc000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01c901d6019b01c1018d000301be01c1019b013b01de0134014301c900030118013b013b016b01d6016b019b018f011801840003014302480143013401d601c90003019b018f000301fc019b01de01c1 Tj" + "0.00 -8.80 Td" + "#hex:01d601de01c1018f0608000300ac019b01de018f013b0003056b0608000300040134016b013b016b0134000301c10118016b018f0003015d01180184018401c90003015d01c1019b018d000301d601660143000301340184019b01de013b0608 Tj" + "0.00 -8.80 Td" + "#hex:00310118013401660003013401c10143011801d601de01c1014300030118018f013b0003019b0133017d0143013401d6000301de018f013b014301c1000301d601660143000301340184019b01de013b000301d601180181014301c9 Tj" + "0.00 -8.80 Td" + "#hex:056a013b056f000301180134016b013b0003013b0118018d0118015e01430608000300ac019b01de018f013b0003056c0608000300e6019b01de00030134011801840184000301c9016b01fb00030133019b018401d601c90003019b015d Tj" + "0.00 -8.80 Td" + "#hex:0184016b015e016601d6018f016b018f015e0003015d01c1019b018d000301d601660143000301340184019b01de013b000301d6019b000301c901d601c1016b01810143000301c9016b01fb0003013401c10143011801d601de01c1014301c9 Tj" + "0.00 -8.80 Td" + "#hex:019b01c10003019b0133017d0143013401d601c90003019b015d000301fc019b01de01c1000301340166019b016b01340143000301330143018f0143011801d60166000301d601660143000301340184019b01de013b060800030004 Tj" + "0.00 -8.80 Td" + "#hex:015e016b01f50143018f0003013401c10143011801d601de01c101430003019b01c10003019b0133017d0143013401d6000301340118018f060c01d6000301330143000301c901d601c101de013401810003013301fc Tj" + "0.00 -8.80 Td" + "#hex:018d019b01c10143000301d601660118018f0003019b018f014300030133019b018401d6060800030004000301c901d601c101de013401810003013401c10143011801d601de01c101430003018d01de01c901d6 Tj" + "0.00 -8.80 Td" + "#hex:018d0118018101430003011800030027014301fb01d6014301c1016b01d601fc000301c9011801f5016b018f015e000301d6016601c1019b01f60608000300c1016601430003013401c10143011801d601de01c10143 Tj" + "ET" + "q" + "13.20 0.00 0.00 18.00 553.84 779.51 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 10.00 Tf" + "396.28 798.95 Td" + "0.00 -11.00 Td" + "#hex:00b401d6019b01c1018d0003019b015d000300df0143018f015e01430118018f01340143 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "490.91 798.95 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "396.28 785.27 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000304020003002001d001c401b2021301f6014d020b01a001d001c4 Tj" + "ET" + "q" + "/gs1 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 396.28 757.18 cm" + "/Form2 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "396.28 761.51 Td" + "\"1 Act.\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs2 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 432.28 757.18 cm" + "/Form3 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "432.28 761.51 Td" + "\"Sight\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs3 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 468.28 757.18 cm" + "/Form4 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "468.28 761.51 Td" + "\"V,S\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs4 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 504.28 757.18 cm" + "/Form5 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "504.28 761.51 Td" + "\"Conc, 1 min\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "0.00 0.00 0.00 rg" + "0.02 0.00 0.00 0.02 553.24 550.54 cm" + "/Form6 Do" + "Q" + "BT" + "/F2 8.00 Tf" + "216.28 721.18 Td" + "0.00 -8.80 Td" + "#hex:00c8018f01d6016b0184000301d601660143000301c901be01430184018400030143018f013b01c905fc000301f601660143018f000301fc019b01de0003018d01180181014300030118 Tj" + "0.00 -8.80 Td" + "#hex:00200166011801c1016b01c9018d011800030134016601430134018105fc000301fc019b01de000301340118018f000301c1014301be0184011801340143000301d6016601430003018f01de018d0133014301c1 Tj" + "0.00 -8.80 Td" + "#hex:01fc019b01de000301c1019b01840184000301f6016b01d60166000301180003056a056e060800030004013b013b016b01d6016b019b018f01180184018401fc05fc0003018f019b0003018d011801d601d6014301c1 Tj" + "0.00 -8.80 Td" + "#hex:01f60166011801d6000301fc019b01de000301c9011801fc05fc0003018d0118015e016b0134000301d60166011801d6000301f6019b01de0184013b0003013b014301d6014301c1018d016b018f01430003016b015d Tj" + "0.00 -8.80 Td" + "#hex:01fc019b01de0003011801c10143000301d6014301840184016b018f015e000301d601660143000301d601c101de01d601660003016b018f013b016b0134011801d6014301c9000301d60166011801d6000301fc019b01de0003011801c10143 Tj" + "0.00 -8.80 Td" + "#hex:01330143016b018f015e000301d601c101de01d60166015d01de01840608 Tj" + "ET" + "q" + "13.20 0.00 0.00 18.00 373.84 779.51 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 10.00 Tf" + "216.28 798.95 Td" + "0.00 -11.00 Td" + "#hex:004b0184016b0133018f014301c901c9 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "257.47 798.95 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "216.28 785.27 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b900030401000300c101f6014d01c401fe01c20213020b014d020b01a001d001c4 Tj" + "ET" + "q" + "/gs5 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 216.28 757.18 cm" + "/Form2 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "216.28 761.51 Td" + "\"1 Act.\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs6 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 252.28 757.18 cm" + "/Form3 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "252.28 761.51 Td" + "\"Self\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs7 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 288.28 757.18 cm" + "/Form4 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "288.28 761.51 Td" + "\"V\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs8 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 324.28 757.18 cm" + "/Form5 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "324.28 761.51 Td" + "\"1 hr\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "BT" + "/F2 8.00 Tf" + "36.28 721.18 Td" + "0.00 -8.80 Td" + "#hex:00c10166016b01c9000301c901be0143018401840003013401c10143011801d6014301c9000301180003018d0118015e016b01340118018400030184016b018f018100030133014301d601f601430143018f00030118 Tj" + "0.00 -8.80 Td" + "#hex:006e011801c1015e01430003019b01c100030184011801c1015e014301c10003016b018f0118018f016b018d011801d60143000301be01840118018f01d6000301f6016b01d60166016b018f000301c10118018f015e0143 Tj" + "0.00 -8.80 Td" + "#hex:0118018f013b00030118018f019b01d60166014301c1000301be01840118018f01d605fc0003011801d600030118018f01fc0003013b016b01c901d60118018f0134014305fc0003019b018f000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01c90118018d0143000301be01840118018f01430003019b015d0003014301fb016b01c901d60143018f013401430608000300e6019b01de0003018d01de01c901d600030166011801f50143000301c901430143018f Tj" + "0.00 -8.80 Td" + "#hex:019b01c1000301d6019b01de013401660143013b000301d6016601430003013b014301c901d6016b018f011801d6016b019b018f000301be01840118018f01d60003011801d6000301840143011801c901d60003019b018f01340143 Tj" + "0.00 -8.80 Td" + "#hex:01330143015d019b01c1014306080003004a019b01c1000301d6016601430003013b01de01c1011801d6016b019b018f05fc00030118018f01fc0003013401c10143011801d601de01c10143000301340118018f000301c901d6014301be Tj" + "0.00 -8.80 Td" + "#hex:016b018f01d6019b000301d601660143000301d6011801c1015e014301d6000301be01840118018f01d600030118018f013b0003014301fb016b01d60003015d01c1019b018d000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:013b014301c901d6016b018f011801d6016b019b018f000301be01840118018f01d60003013301fc000301de01c9016b018f015e0003056e0003015d0143014301d60003019b015d0003018d019b01f50143018d0143018f01d60608 Tj" + "ET" + "q" + "13.20 0.00 0.00 18.00 193.84 779.51 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 10.00 Tf" + "36.28 798.95 Td" + "0.00 -11.00 Td" + "#hex:00c101c10118018f01c901be019b01c101d6000301f5016b0118000300a901840118018f01d601c9 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "134.10 798.95 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "36.28 785.27 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303ff0003002001d001c401b2021301f6014d020b01a001d001c4 Tj" + "ET" + "q" + "/gs9 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 36.28 757.18 cm" + "/Form2 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "36.28 761.51 Td" + "\"1 Act.\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs10 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 72.28 757.18 cm" + "/Form3 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "72.28 761.51 Td" + "\"10 ft\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs11 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 108.28 757.18 cm" + "/Form4 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "108.28 761.51 Td" + "\"V,S\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs12 gs" + "0.57 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 144.28 757.18 cm" + "/Form5 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "144.28 761.51 Td" + "\"1 Rnd\" Tj" + "ET" + "0.00 0.00 0.00 rg"] + ["0.88 0.88 0.88 RG" + "27.64 42.94 m" + "27.64 798.95 l" + "S" + "207.64 42.94 m" + "207.64 798.95 l" + "S" + "387.64 42.94 m" + "387.64 798.95 l" + "S" + "567.64 42.94 m" + "567.64 798.95 l" + "S" + "27.64 42.94 m" + "567.64 42.94 l" + "S" + "27.64 294.95 m" + "567.64 294.95 l" + "S" + "27.64 546.95 m" + "567.64 546.95 l" + "S" + "27.64 798.95 m" + "567.64 798.95 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 831.09 Td" + "#hex:00a9014d01930178000303fb000304a201f60178022a017801f601fe017804a3 Tj" + "ET" + "BT" + "/F2 10.00 Tf" + "36.28 793.18 Td" + "0.00 -11.00 Td" + "#hex:00b401d6019b01c1018d0003019b015d000300df0143018f015e01430118018f01340143 Tj" + "ET" + "BT" + "/F3 8.00 Tf" + "36.28 781.66 Td" + "0.00 -8.80 Td" + "#hex:01d601180181014301c90003056a0569013b056f00030184016b015e016601d6018f016b018f015e0003013b0118018d0118015e01430003019b018f000301180003015d0118016b01840143013b000301c9011801f5014305fc Tj" + "0.00 -8.80 Td" + "#hex:019b01c10003016601180184015d0003011801c90003018d01de013401660003013b0118018d0118015e01430003019b018f00030118000301c901de01340134014301c901c9015d01de01840003019b018f01430608 Tj" + "0.00 -8.80 Td" + "#hex:00ac019b01de018f013b0003056d0608000300530118016b018401c901d6019b018f014301c9000301c10118016b018f0003013b019b01f6018f0003015d01c1019b018d000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01340184019b01de013b0608000300310118013401660003013401c10143011801d601de01c10143000301de018f013b014301c1000301d601660143000301340184019b01de013b000301d601180181014301c90003056b013b056f Tj" + "0.00 -8.80 Td" + "#hex:0133018401de013b015e0143019b018f016b018f015e0003013b0118018d0118015e01430608000300ac019b01de018f013b0003056e063d056a056906080003004b01de01c901d601c900030118018f013b Tj" + "0.00 -8.80 Td" + "#hex:015d01c1014301430206016b018f015e000301c10118016b018f0003011801c901c90118016b0184000301d6016601430003011801c101430118000301de018f013b014301c1000301d601660143000301340184019b01de013b0608 Tj" + "0.00 -8.80 Td" + "#hex:00c1016601430003011801c1014301180003013301430134019b018d014301c90003013b016b0249013401de018401d6000301d6014301c101c10118016b018f00030118018f013b0003016b01c9 Tj" + "0.00 -8.80 Td" + "#hex:01660143011801f5016b018401fc0003019b013301c9013401de01c10143013b0608000300310118013401660003013401c10143011801d601de01c10143000301d60166014301c10143000301d601180181014301c9 Tj" + "0.00 -8.80 Td" + "#hex:056a013b056f00030134019b0184013b0003013b0118018d0118015e01430608000300ac0118018f015e0143013b000301f60143011801be019b018f0003011801d601d601180134018101c90003016b018f Tj" + "0.00 -8.80 Td" + "#hex:01d6016601430003011801c1014301180003011801c101430003016b018d01be019b01c901c9016b0133018401430608000300c101660143000301f6016b018f013b00030118018f013b000301c10118016b018f Tj" + "0.00 -8.80 Td" + "#hex:0134019b01de018f01d60003011801c900030118000301c9014301f5014301c101430003013b016b01c901d601c10118013401d6016b019b018f0003015d019b01c1000301d601660143000301be01de01c101be019b01c9014301c9 Tj" + "0.00 -8.80 Td" + "#hex:019b015d0003018d0118016b018f01d60118016b018f016b018f015e00030134019b018f01340143018f01d601c1011801d6016b019b018f0003019b018f000301c901be01430184018401c90608 Tj" + "0.00 -8.80 Td" + "#hex:004a016b018f01180184018401fc05fc0003015e01de01c901d601c90003019b015d000301c901d601c1019b018f015e000301f6016b018f013b0003062801c10118018f015e016b018f015e0003015d01c1019b018d0003056b0569 Tj" + "0.00 -8.80 Td" + "#hex:01d6019b0003056e05690003018d016b0184014301c9000301be014301c100030166019b01de01c106290003011801de01d6019b018d011801d6016b013401180184018401fc0003013b016b01c901be014301c101c90143 Tj" + "0.00 -8.80 Td" + "#hex:015d019b015e05fc0003018d016b01c901d601c905fc00030118018f013b000301c9016b018d016b0184011801c1000301be01660143018f019b018d0143018f01180003016b018f000301d6016601430003011801c10143011805fc Tj" + "0.00 -8.80 Td" + "#hex:01f60166014301d60166014301c10003018d01de018f013b0118018f01430003019b01c10003018d0118015e016b0134011801840608 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "133.07 793.18 Td" + "0.00 -11.00 Td" + "#hex:04a201f60178022a017801f601fe017804a3 Tj" + "ET" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "82.65 558.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 45.64 348.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "82.65 306.46 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 45.64 96.94 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "82.65 54.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 225.64 600.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "262.65 558.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 225.64 348.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "262.65 306.46 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 225.64 96.94 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "262.65 54.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 405.64 600.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "442.65 558.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 405.64 348.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "442.65 306.46 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 405.64 96.94 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "442.65 54.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET"] + ["0.88 0.88 0.88 RG" + "27.64 42.94 m" + "27.64 798.95 l" + "S" + "207.64 42.94 m" + "207.64 798.95 l" + "S" + "387.64 42.94 m" + "387.64 798.95 l" + "S" + "567.64 42.94 m" + "567.64 798.95 l" + "S" + "27.64 42.94 m" + "567.64 42.94 l" + "S" + "27.64 294.95 m" + "567.64 294.95 l" + "S" + "27.64 546.95 m" + "567.64 546.95 l" + "S" + "27.64 798.95 m" + "567.64 798.95 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 831.09 Td" + "#hex:00a9014d01930178000303fa Tj" + "ET" + "1.10 w" + "406.36 792.47 m" + "548.92 792.47 l" + "561.16 780.22 l" + "561.16 565.66 l" + "548.92 553.42 l" + "406.36 553.42 l" + "394.12 565.66 l" + "394.12 780.22 l" + "s" + "0.45 w" + "406.36 789.44 m" + "548.92 789.44 l" + "558.14 780.22 l" + "558.14 565.66 l" + "548.92 556.45 l" + "406.36 556.45 l" + "397.14 565.66 l" + "397.14 780.22 l" + "s" + "0.70 w" + "401.68 787.50 m" + "404.27 784.91 l" + "401.68 782.31 l" + "399.09 784.91 l" + "h" + "S" + "553.60 787.50 m" + "556.19 784.91 l" + "553.60 782.31 l" + "551.01 784.91 l" + "h" + "S" + "401.68 563.58 m" + "404.27 560.98 l" + "401.68 558.39 l" + "399.09 560.98 l" + "h" + "S" + "553.60 563.58 m" + "556.19 560.98 l" + "553.60 558.39 l" + "551.01 560.98 l" + "h" + "S" + "1.00 w" + "0.50 w" + "407.80 781.30 m" + "454.60 781.30 l" + "S" + "500.68 781.30 m" + "547.48 781.30 l" + "S" + "0.60 w" + "461.08 784.04 m" + "463.82 781.30 l" + "461.08 778.57 l" + "458.34 781.30 l" + "h" + "f" + "469.36 784.04 m" + "472.10 781.30 l" + "469.36 778.57 l" + "466.62 781.30 l" + "h" + "f" + "477.64 784.04 m" + "480.38 781.30 l" + "477.64 778.57 l" + "474.90 781.30 l" + "h" + "f" + "485.92 784.04 m" + "488.66 781.30 l" + "485.92 778.57 l" + "483.18 781.30 l" + "h" + "S" + "494.20 784.04 m" + "496.94 781.30 l" + "494.20 778.57 l" + "491.46 781.30 l" + "h" + "S" + "1.00 w" + "0.50 w" + "423.64 560.27 m" + "471.52 560.27 l" + "S" + "483.76 560.27 m" + "531.64 560.27 l" + "S" + "477.64 562.57 m" + "479.94 560.27 l" + "477.64 557.96 l" + "475.34 560.27 l" + "h" + "S" + "1.00 w" + "0.70 w" + "538.84 728.03 m" + "544.96 728.03 l" + "547.48 725.51 l" + "547.48 720.10 l" + "544.96 717.59 l" + "538.84 717.59 l" + "536.32 720.10 l" + "536.32 725.51 l" + "s" + "BT" + "/F2 7.00 Tf" + "539.37 720.18 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "407.80 773.03 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc000300b401d601de013b013b0143013b Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "402.04 726.95 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "402.04 711.10 m" + "553.24 711.10 l" + "S" + "0.35 w" + "402.04 708.59 m" + "553.24 708.59 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "402.04 703.91 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "449.36 582.67 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "226.36 792.47 m" + "368.92 792.47 l" + "381.16 780.22 l" + "381.16 565.66 l" + "368.92 553.42 l" + "226.36 553.42 l" + "214.12 565.66 l" + "214.12 780.22 l" + "s" + "0.45 w" + "226.36 789.44 m" + "368.92 789.44 l" + "378.14 780.22 l" + "378.14 565.66 l" + "368.92 556.45 l" + "226.36 556.45 l" + "217.14 565.66 l" + "217.14 780.22 l" + "s" + "0.70 w" + "221.68 787.50 m" + "224.27 784.91 l" + "221.68 782.31 l" + "219.09 784.91 l" + "h" + "S" + "373.60 787.50 m" + "376.19 784.91 l" + "373.60 782.31 l" + "371.01 784.91 l" + "h" + "S" + "221.68 563.58 m" + "224.27 560.98 l" + "221.68 558.39 l" + "219.09 560.98 l" + "h" + "S" + "373.60 563.58 m" + "376.19 560.98 l" + "373.60 558.39 l" + "371.01 560.98 l" + "h" + "S" + "1.00 w" + "0.50 w" + "227.80 781.30 m" + "274.60 781.30 l" + "S" + "320.68 781.30 m" + "367.48 781.30 l" + "S" + "0.60 w" + "281.08 784.04 m" + "283.82 781.30 l" + "281.08 778.57 l" + "278.34 781.30 l" + "h" + "f" + "289.36 784.04 m" + "292.10 781.30 l" + "289.36 778.57 l" + "286.62 781.30 l" + "h" + "f" + "297.64 784.04 m" + "300.38 781.30 l" + "297.64 778.57 l" + "294.90 781.30 l" + "h" + "f" + "305.92 784.04 m" + "308.66 781.30 l" + "305.92 778.57 l" + "303.18 781.30 l" + "h" + "S" + "314.20 784.04 m" + "316.94 781.30 l" + "314.20 778.57 l" + "311.46 781.30 l" + "h" + "S" + "1.00 w" + "0.50 w" + "243.64 560.27 m" + "291.52 560.27 l" + "S" + "303.76 560.27 m" + "351.64 560.27 l" + "S" + "297.64 562.57 m" + "299.94 560.27 l" + "297.64 557.96 l" + "295.34 560.27 l" + "h" + "S" + "1.00 w" + "0.70 w" + "358.84 728.03 m" + "364.96 728.03 l" + "367.48 725.51 l" + "367.48 720.10 l" + "364.96 717.59 l" + "358.84 717.59 l" + "356.32 720.10 l" + "356.32 725.51 l" + "s" + "BT" + "/F2 7.00 Tf" + "359.37 720.18 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "227.80 773.03 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc0003006e0143011801d60166014301c1 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "222.04 726.95 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "222.04 711.10 m" + "373.24 711.10 l" + "S" + "0.35 w" + "222.04 708.59 m" + "373.24 708.59 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "222.04 703.91 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "269.36 582.67 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "46.36 792.47 m" + "188.92 792.47 l" + "201.16 780.22 l" + "201.16 565.66 l" + "188.92 553.42 l" + "46.36 553.42 l" + "34.12 565.66 l" + "34.12 780.22 l" + "s" + "0.45 w" + "46.36 789.44 m" + "188.92 789.44 l" + "198.14 780.22 l" + "198.14 565.66 l" + "188.92 556.45 l" + "46.36 556.45 l" + "37.14 565.66 l" + "37.14 780.22 l" + "s" + "0.70 w" + "41.68 787.50 m" + "44.27 784.91 l" + "41.68 782.31 l" + "39.09 784.91 l" + "h" + "S" + "193.60 787.50 m" + "196.19 784.91 l" + "193.60 782.31 l" + "191.01 784.91 l" + "h" + "S" + "41.68 563.58 m" + "44.27 560.98 l" + "41.68 558.39 l" + "39.09 560.98 l" + "h" + "S" + "193.60 563.58 m" + "196.19 560.98 l" + "193.60 558.39 l" + "191.01 560.98 l" + "h" + "S" + "1.00 w" + "0.50 w" + "47.80 781.30 m" + "94.60 781.30 l" + "S" + "140.68 781.30 m" + "187.48 781.30 l" + "S" + "0.60 w" + "101.08 784.04 m" + "103.82 781.30 l" + "101.08 778.57 l" + "98.34 781.30 l" + "h" + "f" + "109.36 784.04 m" + "112.10 781.30 l" + "109.36 778.57 l" + "106.62 781.30 l" + "h" + "f" + "117.64 784.04 m" + "120.38 781.30 l" + "117.64 778.57 l" + "114.90 781.30 l" + "h" + "f" + "125.92 784.04 m" + "128.66 781.30 l" + "125.92 778.57 l" + "123.18 781.30 l" + "h" + "S" + "134.20 784.04 m" + "136.94 781.30 l" + "134.20 778.57 l" + "131.46 781.30 l" + "h" + "S" + "1.00 w" + "0.50 w" + "63.64 560.27 m" + "111.52 560.27 l" + "S" + "123.76 560.27 m" + "171.64 560.27 l" + "S" + "117.64 562.57 m" + "119.94 560.27 l" + "117.64 557.96 l" + "115.34 560.27 l" + "h" + "S" + "1.00 w" + "0.70 w" + "178.84 728.03 m" + "184.96 728.03 l" + "187.48 725.51 l" + "187.48 720.10 l" + "184.96 717.59 l" + "178.84 717.59 l" + "176.32 720.10 l" + "176.32 725.51 l" + "s" + "BT" + "/F2 7.00 Tf" + "179.37 720.18 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "47.80 773.03 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc000300a90118013b013b0143013b Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "42.04 726.95 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "42.04 711.10 m" + "193.24 711.10 l" + "S" + "0.35 w" + "42.04 708.59 m" + "193.24 708.59 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "42.04 703.91 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "89.36 582.67 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "406.36 540.47 m" + "548.92 540.47 l" + "561.16 528.22 l" + "561.16 313.67 l" + "548.92 301.42 l" + "406.36 301.42 l" + "394.12 313.67 l" + "394.12 528.22 l" + "s" + "0.45 w" + "406.36 537.44 m" + "548.92 537.44 l" + "558.14 528.22 l" + "558.14 313.67 l" + "548.92 304.45 l" + "406.36 304.45 l" + "397.14 313.67 l" + "397.14 528.22 l" + "s" + "0.70 w" + "401.68 535.50 m" + "404.27 532.91 l" + "401.68 530.31 l" + "399.09 532.91 l" + "h" + "S" + "553.60 535.50 m" + "556.19 532.91 l" + "553.60 530.31 l" + "551.01 532.91 l" + "h" + "S" + "401.68 311.58 m" + "404.27 308.98 l" + "401.68 306.39 l" + "399.09 308.98 l" + "h" + "S" + "553.60 311.58 m" + "556.19 308.98 l" + "553.60 306.39 l" + "551.01 308.98 l" + "h" + "S" + "1.00 w" + "0.50 w" + "407.80 529.30 m" + "454.60 529.30 l" + "S" + "500.68 529.30 m" + "547.48 529.30 l" + "S" + "0.60 w" + "461.08 532.04 m" + "463.82 529.30 l" + "461.08 526.57 l" + "458.34 529.30 l" + "h" + "f" + "469.36 532.04 m" + "472.10 529.30 l" + "469.36 526.57 l" + "466.62 529.30 l" + "h" + "f" + "477.64 532.04 m" + "480.38 529.30 l" + "477.64 526.57 l" + "474.90 529.30 l" + "h" + "f" + "485.92 532.04 m" + "488.66 529.30 l" + "485.92 526.57 l" + "483.18 529.30 l" + "h" + "S" + "494.20 532.04 m" + "496.94 529.30 l" + "494.20 526.57 l" + "491.46 529.30 l" + "h" + "S" + "1.00 w" + "0.50 w" + "423.64 308.27 m" + "471.52 308.27 l" + "S" + "483.76 308.27 m" + "531.64 308.27 l" + "S" + "477.64 310.57 m" + "479.94 308.27 l" + "477.64 305.96 l" + "475.34 308.27 l" + "h" + "S" + "1.00 w" + "0.70 w" + "538.84 476.02 m" + "544.96 476.02 l" + "547.48 473.51 l" + "547.48 468.11 l" + "544.96 465.58 l" + "538.84 465.58 l" + "536.32 468.11 l" + "536.32 473.51 l" + "s" + "BT" + "/F2 7.00 Tf" + "539.37 468.18 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "407.80 521.03 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc000300b401340118018401430003018d0118016b0184 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "402.04 474.95 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "402.04 459.11 m" + "553.24 459.11 l" + "S" + "0.35 w" + "402.04 456.58 m" + "553.24 456.58 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "402.04 451.90 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "449.36 330.66 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "226.36 540.47 m" + "368.92 540.47 l" + "381.16 528.22 l" + "381.16 313.67 l" + "368.92 301.42 l" + "226.36 301.42 l" + "214.12 313.67 l" + "214.12 528.22 l" + "s" + "0.45 w" + "226.36 537.44 m" + "368.92 537.44 l" + "378.14 528.22 l" + "378.14 313.67 l" + "368.92 304.45 l" + "226.36 304.45 l" + "217.14 313.67 l" + "217.14 528.22 l" + "s" + "0.70 w" + "221.68 535.50 m" + "224.27 532.91 l" + "221.68 530.31 l" + "219.09 532.91 l" + "h" + "S" + "373.60 535.50 m" + "376.19 532.91 l" + "373.60 530.31 l" + "371.01 532.91 l" + "h" + "S" + "221.68 311.58 m" + "224.27 308.98 l" + "221.68 306.39 l" + "219.09 308.98 l" + "h" + "S" + "373.60 311.58 m" + "376.19 308.98 l" + "373.60 306.39 l" + "371.01 308.98 l" + "h" + "S" + "1.00 w" + "0.50 w" + "227.80 529.30 m" + "274.60 529.30 l" + "S" + "320.68 529.30 m" + "367.48 529.30 l" + "S" + "0.60 w" + "281.08 532.04 m" + "283.82 529.30 l" + "281.08 526.57 l" + "278.34 529.30 l" + "h" + "f" + "289.36 532.04 m" + "292.10 529.30 l" + "289.36 526.57 l" + "286.62 529.30 l" + "h" + "f" + "297.64 532.04 m" + "300.38 529.30 l" + "297.64 526.57 l" + "294.90 529.30 l" + "h" + "f" + "305.92 532.04 m" + "308.66 529.30 l" + "305.92 526.57 l" + "303.18 529.30 l" + "h" + "S" + "314.20 532.04 m" + "316.94 529.30 l" + "314.20 526.57 l" + "311.46 529.30 l" + "h" + "S" + "1.00 w" + "0.50 w" + "243.64 308.27 m" + "291.52 308.27 l" + "S" + "303.76 308.27 m" + "351.64 308.27 l" + "S" + "297.64 310.57 m" + "299.94 308.27 l" + "297.64 305.96 l" + "295.34 308.27 l" + "h" + "S" + "1.00 w" + "0.70 w" + "358.84 476.02 m" + "364.96 476.02 l" + "367.48 473.51 l" + "367.48 468.11 l" + "364.96 465.58 l" + "358.84 465.58 l" + "356.32 468.11 l" + "356.32 473.51 l" + "s" + "BT" + "/F2 7.00 Tf" + "359.37 468.18 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "227.80 521.03 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc0003002001660118016b018f000300b40166016b01c101d6 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "222.04 474.95 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "222.04 459.11 m" + "373.24 459.11 l" + "S" + "0.35 w" + "222.04 456.58 m" + "373.24 456.58 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "222.04 451.90 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "269.36 330.66 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "46.36 540.47 m" + "188.92 540.47 l" + "201.16 528.22 l" + "201.16 313.67 l" + "188.92 301.42 l" + "46.36 301.42 l" + "34.12 313.67 l" + "34.12 528.22 l" + "s" + "0.45 w" + "46.36 537.44 m" + "188.92 537.44 l" + "198.14 528.22 l" + "198.14 313.67 l" + "188.92 304.45 l" + "46.36 304.45 l" + "37.14 313.67 l" + "37.14 528.22 l" + "s" + "0.70 w" + "41.68 535.50 m" + "44.27 532.91 l" + "41.68 530.31 l" + "39.09 532.91 l" + "h" + "S" + "193.60 535.50 m" + "196.19 532.91 l" + "193.60 530.31 l" + "191.01 532.91 l" + "h" + "S" + "41.68 311.58 m" + "44.27 308.98 l" + "41.68 306.39 l" + "39.09 308.98 l" + "h" + "S" + "193.60 311.58 m" + "196.19 308.98 l" + "193.60 306.39 l" + "191.01 308.98 l" + "h" + "S" + "1.00 w" + "0.50 w" + "47.80 529.30 m" + "94.60 529.30 l" + "S" + "140.68 529.30 m" + "187.48 529.30 l" + "S" + "0.60 w" + "101.08 532.04 m" + "103.82 529.30 l" + "101.08 526.57 l" + "98.34 529.30 l" + "h" + "f" + "109.36 532.04 m" + "112.10 529.30 l" + "109.36 526.57 l" + "106.62 529.30 l" + "h" + "f" + "117.64 532.04 m" + "120.38 529.30 l" + "117.64 526.57 l" + "114.90 529.30 l" + "h" + "f" + "125.92 532.04 m" + "128.66 529.30 l" + "125.92 526.57 l" + "123.18 529.30 l" + "h" + "S" + "134.20 532.04 m" + "136.94 529.30 l" + "134.20 526.57 l" + "131.46 529.30 l" + "h" + "S" + "1.00 w" + "0.50 w" + "63.64 308.27 m" + "111.52 308.27 l" + "S" + "123.76 308.27 m" + "171.64 308.27 l" + "S" + "117.64 310.57 m" + "119.94 308.27 l" + "117.64 305.96 l" + "115.34 308.27 l" + "h" + "S" + "1.00 w" + "0.70 w" + "178.84 476.02 m" + "184.96 476.02 l" + "187.48 473.51 l" + "187.48 468.11 l" + "184.96 465.58 l" + "178.84 465.58 l" + "176.32 468.11 l" + "176.32 473.51 l" + "s" + "BT" + "/F2 7.00 Tf" + "179.37 468.18 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "47.80 521.03 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc00030053016b013b0143 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "42.04 474.95 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "42.04 459.11 m" + "193.24 459.11 l" + "S" + "0.35 w" + "42.04 456.58 m" + "193.24 456.58 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "42.04 451.90 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "89.36 330.66 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "406.36 288.46 m" + "548.92 288.46 l" + "561.16 276.23 l" + "561.16 61.67 l" + "548.92 49.42 l" + "406.36 49.42 l" + "394.12 61.67 l" + "394.12 276.23 l" + "s" + "0.45 w" + "406.36 285.44 m" + "548.92 285.44 l" + "558.14 276.23 l" + "558.14 61.67 l" + "548.92 52.45 l" + "406.36 52.45 l" + "397.14 61.67 l" + "397.14 276.23 l" + "s" + "0.70 w" + "401.68 283.50 m" + "404.27 280.90 l" + "401.68 278.31 l" + "399.09 280.90 l" + "h" + "S" + "553.60 283.50 m" + "556.19 280.90 l" + "553.60 278.31 l" + "551.01 280.90 l" + "h" + "S" + "401.68 59.58 m" + "404.27 56.99 l" + "401.68 54.39 l" + "399.09 56.99 l" + "h" + "S" + "553.60 59.58 m" + "556.19 56.99 l" + "553.60 54.39 l" + "551.01 56.99 l" + "h" + "S" + "1.00 w" + "0.50 w" + "407.80 277.30 m" + "454.60 277.30 l" + "S" + "500.68 277.30 m" + "547.48 277.30 l" + "S" + "0.60 w" + "461.08 280.04 m" + "463.82 277.30 l" + "461.08 274.57 l" + "458.34 277.30 l" + "h" + "f" + "469.36 280.04 m" + "472.10 277.30 l" + "469.36 274.57 l" + "466.62 277.30 l" + "h" + "f" + "477.64 280.04 m" + "480.38 277.30 l" + "477.64 274.57 l" + "474.90 277.30 l" + "h" + "f" + "485.92 280.04 m" + "488.66 277.30 l" + "485.92 274.57 l" + "483.18 277.30 l" + "h" + "S" + "494.20 280.04 m" + "496.94 277.30 l" + "494.20 274.57 l" + "491.46 277.30 l" + "h" + "S" + "1.00 w" + "0.50 w" + "423.64 56.26 m" + "471.52 56.26 l" + "S" + "483.76 56.26 m" + "531.64 56.26 l" + "S" + "477.64 58.57 m" + "479.94 56.26 l" + "477.64 53.96 l" + "475.34 56.26 l" + "h" + "S" + "1.00 w" + "0.70 w" + "538.84 224.02 m" + "544.96 224.02 l" + "547.48 221.51 l" + "547.48 216.10 l" + "544.96 213.59 l" + "538.84 213.59 l" + "536.32 216.10 l" + "536.32 221.51 l" + "s" + "BT" + "/F2 7.00 Tf" + "539.37 216.18 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "407.80 269.02 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc000300ac016b018f015e0003018d0118016b0184 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "402.04 222.95 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "402.04 207.10 m" + "553.24 207.10 l" + "S" + "0.35 w" + "402.04 204.59 m" + "553.24 204.59 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "402.04 199.90 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "449.36 78.66 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "226.36 288.46 m" + "368.92 288.46 l" + "381.16 276.23 l" + "381.16 61.67 l" + "368.92 49.42 l" + "226.36 49.42 l" + "214.12 61.67 l" + "214.12 276.23 l" + "s" + "0.45 w" + "226.36 285.44 m" + "368.92 285.44 l" + "378.14 276.23 l" + "378.14 61.67 l" + "368.92 52.45 l" + "226.36 52.45 l" + "217.14 61.67 l" + "217.14 276.23 l" + "s" + "0.70 w" + "221.68 283.50 m" + "224.27 280.90 l" + "221.68 278.31 l" + "219.09 280.90 l" + "h" + "S" + "373.60 283.50 m" + "376.19 280.90 l" + "373.60 278.31 l" + "371.01 280.90 l" + "h" + "S" + "221.68 59.58 m" + "224.27 56.99 l" + "221.68 54.39 l" + "219.09 56.99 l" + "h" + "S" + "373.60 59.58 m" + "376.19 56.99 l" + "373.60 54.39 l" + "371.01 56.99 l" + "h" + "S" + "1.00 w" + "0.50 w" + "227.80 277.30 m" + "274.60 277.30 l" + "S" + "320.68 277.30 m" + "367.48 277.30 l" + "S" + "0.60 w" + "281.08 280.04 m" + "283.82 277.30 l" + "281.08 274.57 l" + "278.34 277.30 l" + "h" + "f" + "289.36 280.04 m" + "292.10 277.30 l" + "289.36 274.57 l" + "286.62 277.30 l" + "h" + "f" + "297.64 280.04 m" + "300.38 277.30 l" + "297.64 274.57 l" + "294.90 277.30 l" + "h" + "f" + "305.92 280.04 m" + "308.66 277.30 l" + "305.92 274.57 l" + "303.18 277.30 l" + "h" + "S" + "314.20 280.04 m" + "316.94 277.30 l" + "314.20 274.57 l" + "311.46 277.30 l" + "h" + "S" + "1.00 w" + "0.50 w" + "243.64 56.26 m" + "291.52 56.26 l" + "S" + "303.76 56.26 m" + "351.64 56.26 l" + "S" + "297.64 58.57 m" + "299.94 56.26 l" + "297.64 53.96 l" + "295.34 56.26 l" + "h" + "S" + "1.00 w" + "0.70 w" + "358.84 224.02 m" + "364.96 224.02 l" + "367.48 221.51 l" + "367.48 216.10 l" + "364.96 213.59 l" + "358.84 213.59 l" + "356.32 216.10 l" + "356.32 221.51 l" + "s" + "BT" + "/F2 7.00 Tf" + "359.37 216.18 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "227.80 269.02 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc0003005301180184015d000301be0184011801d60143 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "222.04 222.95 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "222.04 207.10 m" + "373.24 207.10 l" + "S" + "0.35 w" + "222.04 204.59 m" + "373.24 204.59 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "222.04 199.90 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "269.36 78.66 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "46.36 288.46 m" + "188.92 288.46 l" + "201.16 276.23 l" + "201.16 61.67 l" + "188.92 49.42 l" + "46.36 49.42 l" + "34.12 61.67 l" + "34.12 276.23 l" + "s" + "0.45 w" + "46.36 285.44 m" + "188.92 285.44 l" + "198.14 276.23 l" + "198.14 61.67 l" + "188.92 52.45 l" + "46.36 52.45 l" + "37.14 61.67 l" + "37.14 276.23 l" + "s" + "0.70 w" + "41.68 283.50 m" + "44.27 280.90 l" + "41.68 278.31 l" + "39.09 280.90 l" + "h" + "S" + "193.60 283.50 m" + "196.19 280.90 l" + "193.60 278.31 l" + "191.01 280.90 l" + "h" + "S" + "41.68 59.58 m" + "44.27 56.99 l" + "41.68 54.39 l" + "39.09 56.99 l" + "h" + "S" + "193.60 59.58 m" + "196.19 56.99 l" + "193.60 54.39 l" + "191.01 56.99 l" + "h" + "S" + "1.00 w" + "0.50 w" + "47.80 277.30 m" + "94.60 277.30 l" + "S" + "140.68 277.30 m" + "187.48 277.30 l" + "S" + "0.60 w" + "101.08 280.04 m" + "103.82 277.30 l" + "101.08 274.57 l" + "98.34 277.30 l" + "h" + "f" + "109.36 280.04 m" + "112.10 277.30 l" + "109.36 274.57 l" + "106.62 277.30 l" + "h" + "f" + "117.64 280.04 m" + "120.38 277.30 l" + "117.64 274.57 l" + "114.90 277.30 l" + "h" + "f" + "125.92 280.04 m" + "128.66 277.30 l" + "125.92 274.57 l" + "123.18 277.30 l" + "h" + "S" + "134.20 280.04 m" + "136.94 277.30 l" + "134.20 274.57 l" + "131.46 277.30 l" + "h" + "S" + "1.00 w" + "0.50 w" + "63.64 56.26 m" + "111.52 56.26 l" + "S" + "123.76 56.26 m" + "171.64 56.26 l" + "S" + "117.64 58.57 m" + "119.94 56.26 l" + "117.64 53.96 l" + "115.34 56.26 l" + "h" + "S" + "1.00 w" + "0.70 w" + "178.84 224.02 m" + "184.96 224.02 l" + "187.48 221.51 l" + "187.48 216.10 l" + "184.96 213.59 l" + "178.84 213.59 l" + "176.32 216.10 l" + "176.32 221.51 l" + "s" + "BT" + "/F2 7.00 Tf" + "179.37 216.18 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "47.80 269.02 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc0003001f01c10143011801c901d601be0184011801d60143 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "42.04 222.95 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "42.04 207.10 m" + "193.24 207.10 l" + "S" + "0.35 w" + "42.04 204.59 m" + "193.24 204.59 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "42.04 199.90 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "89.36 78.66 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET"] + ["0.88 0.88 0.88 RG" + "27.64 42.94 m" + "27.64 798.95 l" + "S" + "207.64 42.94 m" + "207.64 798.95 l" + "S" + "387.64 42.94 m" + "387.64 798.95 l" + "S" + "567.64 42.94 m" + "567.64 798.95 l" + "S" + "27.64 42.94 m" + "567.64 42.94 l" + "S" + "27.64 294.95 m" + "567.64 294.95 l" + "S" + "27.64 546.95 m" + "567.64 546.95 l" + "S" + "27.64 798.95 m" + "567.64 798.95 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 831.09 Td" + "#hex:00a9014d01930178000303fa000304a201f60178022a017801f601fe017804a3 Tj" + "ET" + "q" + "144.00 0.00 0.00 144.00 45.64 600.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "82.65 558.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 45.64 348.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "82.65 306.46 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 45.64 96.94 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "82.65 54.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 225.64 600.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "262.65 558.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 225.64 348.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "262.65 306.46 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 225.64 96.94 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "262.65 54.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 405.64 600.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "442.65 558.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 405.64 348.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "442.65 306.46 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 405.64 96.94 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "442.65 54.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET"] + ["0.88 0.88 0.88 RG" + "27.64 42.94 m" + "27.64 798.95 l" + "S" + "207.64 42.94 m" + "207.64 798.95 l" + "S" + "387.64 42.94 m" + "387.64 798.95 l" + "S" + "567.64 42.94 m" + "567.64 798.95 l" + "S" + "27.64 42.94 m" + "567.64 42.94 l" + "S" + "27.64 294.95 m" + "567.64 294.95 l" + "S" + "27.64 546.95 m" + "567.64 546.95 l" + "S" + "27.64 798.95 m" + "567.64 798.95 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 831.09 Td" + "#hex:00a9014d01930178000303fb Tj" + "ET" + "1.10 w" + "406.36 792.47 m" + "548.92 792.47 l" + "561.16 780.22 l" + "561.16 565.66 l" + "548.92 553.42 l" + "406.36 553.42 l" + "394.12 565.66 l" + "394.12 780.22 l" + "s" + "0.45 w" + "406.36 789.44 m" + "548.92 789.44 l" + "558.14 780.22 l" + "558.14 565.66 l" + "548.92 556.45 l" + "406.36 556.45 l" + "397.14 565.66 l" + "397.14 780.22 l" + "s" + "0.70 w" + "401.68 787.50 m" + "404.27 784.91 l" + "401.68 782.31 l" + "399.09 784.91 l" + "h" + "S" + "553.60 787.50 m" + "556.19 784.91 l" + "553.60 782.31 l" + "551.01 784.91 l" + "h" + "S" + "401.68 563.58 m" + "404.27 560.98 l" + "401.68 558.39 l" + "399.09 560.98 l" + "h" + "S" + "553.60 563.58 m" + "556.19 560.98 l" + "553.60 558.39 l" + "551.01 560.98 l" + "h" + "S" + "1.00 w" + "0.50 w" + "407.80 781.30 m" + "454.60 781.30 l" + "S" + "500.68 781.30 m" + "547.48 781.30 l" + "S" + "0.60 w" + "461.08 784.04 m" + "463.82 781.30 l" + "461.08 778.57 l" + "458.34 781.30 l" + "h" + "f" + "469.36 784.04 m" + "472.10 781.30 l" + "469.36 778.57 l" + "466.62 781.30 l" + "h" + "f" + "477.64 784.04 m" + "480.38 781.30 l" + "477.64 778.57 l" + "474.90 781.30 l" + "h" + "f" + "485.92 784.04 m" + "488.66 781.30 l" + "485.92 778.57 l" + "483.18 781.30 l" + "h" + "S" + "494.20 784.04 m" + "496.94 781.30 l" + "494.20 778.57 l" + "491.46 781.30 l" + "h" + "S" + "1.00 w" + "0.50 w" + "423.64 560.27 m" + "471.52 560.27 l" + "S" + "483.76 560.27 m" + "531.64 560.27 l" + "S" + "477.64 562.57 m" + "479.94 560.27 l" + "477.64 557.96 l" + "475.34 560.27 l" + "h" + "S" + "1.00 w" + "0.70 w" + "538.84 728.03 m" + "544.96 728.03 l" + "547.48 725.51 l" + "547.48 720.10 l" + "544.96 717.59 l" + "538.84 717.59 l" + "536.32 720.10 l" + "536.32 725.51 l" + "s" + "BT" + "/F2 7.00 Tf" + "539.37 720.18 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "407.80 773.03 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc000300a90184011801d60143 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "402.04 726.95 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "402.04 711.10 m" + "553.24 711.10 l" + "S" + "0.35 w" + "402.04 708.59 m" + "553.24 708.59 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "402.04 703.91 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "449.36 582.67 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "226.36 792.47 m" + "368.92 792.47 l" + "381.16 780.22 l" + "381.16 565.66 l" + "368.92 553.42 l" + "226.36 553.42 l" + "214.12 565.66 l" + "214.12 780.22 l" + "s" + "0.45 w" + "226.36 789.44 m" + "368.92 789.44 l" + "378.14 780.22 l" + "378.14 565.66 l" + "368.92 556.45 l" + "226.36 556.45 l" + "217.14 565.66 l" + "217.14 780.22 l" + "s" + "0.70 w" + "221.68 787.50 m" + "224.27 784.91 l" + "221.68 782.31 l" + "219.09 784.91 l" + "h" + "S" + "373.60 787.50 m" + "376.19 784.91 l" + "373.60 782.31 l" + "371.01 784.91 l" + "h" + "S" + "221.68 563.58 m" + "224.27 560.98 l" + "221.68 558.39 l" + "219.09 560.98 l" + "h" + "S" + "373.60 563.58 m" + "376.19 560.98 l" + "373.60 558.39 l" + "371.01 560.98 l" + "h" + "S" + "1.00 w" + "0.50 w" + "227.80 781.30 m" + "274.60 781.30 l" + "S" + "320.68 781.30 m" + "367.48 781.30 l" + "S" + "0.60 w" + "281.08 784.04 m" + "283.82 781.30 l" + "281.08 778.57 l" + "278.34 781.30 l" + "h" + "f" + "289.36 784.04 m" + "292.10 781.30 l" + "289.36 778.57 l" + "286.62 781.30 l" + "h" + "f" + "297.64 784.04 m" + "300.38 781.30 l" + "297.64 778.57 l" + "294.90 781.30 l" + "h" + "f" + "305.92 784.04 m" + "308.66 781.30 l" + "305.92 778.57 l" + "303.18 781.30 l" + "h" + "S" + "314.20 784.04 m" + "316.94 781.30 l" + "314.20 778.57 l" + "311.46 781.30 l" + "h" + "S" + "1.00 w" + "0.50 w" + "243.64 560.27 m" + "291.52 560.27 l" + "S" + "303.76 560.27 m" + "351.64 560.27 l" + "S" + "297.64 562.57 m" + "299.94 560.27 l" + "297.64 557.96 l" + "295.34 560.27 l" + "h" + "S" + "1.00 w" + "0.70 w" + "358.84 728.03 m" + "364.96 728.03 l" + "367.48 725.51 l" + "367.48 720.10 l" + "364.96 717.59 l" + "358.84 717.59 l" + "356.32 720.10 l" + "356.32 725.51 l" + "s" + "BT" + "/F2 7.00 Tf" + "359.37 720.18 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "227.80 773.03 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc000300b401be0184016b018f01d6 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "222.04 726.95 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "222.04 711.10 m" + "373.24 711.10 l" + "S" + "0.35 w" + "222.04 708.59 m" + "373.24 708.59 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "222.04 703.91 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "269.36 582.67 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "46.36 792.47 m" + "188.92 792.47 l" + "201.16 780.22 l" + "201.16 565.66 l" + "188.92 553.42 l" + "46.36 553.42 l" + "34.12 565.66 l" + "34.12 780.22 l" + "s" + "0.45 w" + "46.36 789.44 m" + "188.92 789.44 l" + "198.14 780.22 l" + "198.14 565.66 l" + "188.92 556.45 l" + "46.36 556.45 l" + "37.14 565.66 l" + "37.14 780.22 l" + "s" + "0.70 w" + "41.68 787.50 m" + "44.27 784.91 l" + "41.68 782.31 l" + "39.09 784.91 l" + "h" + "S" + "193.60 787.50 m" + "196.19 784.91 l" + "193.60 782.31 l" + "191.01 784.91 l" + "h" + "S" + "41.68 563.58 m" + "44.27 560.98 l" + "41.68 558.39 l" + "39.09 560.98 l" + "h" + "S" + "193.60 563.58 m" + "196.19 560.98 l" + "193.60 558.39 l" + "191.01 560.98 l" + "h" + "S" + "1.00 w" + "0.50 w" + "47.80 781.30 m" + "94.60 781.30 l" + "S" + "140.68 781.30 m" + "187.48 781.30 l" + "S" + "0.60 w" + "101.08 784.04 m" + "103.82 781.30 l" + "101.08 778.57 l" + "98.34 781.30 l" + "h" + "f" + "109.36 784.04 m" + "112.10 781.30 l" + "109.36 778.57 l" + "106.62 781.30 l" + "h" + "f" + "117.64 784.04 m" + "120.38 781.30 l" + "117.64 778.57 l" + "114.90 781.30 l" + "h" + "f" + "125.92 784.04 m" + "128.66 781.30 l" + "125.92 778.57 l" + "123.18 781.30 l" + "h" + "S" + "134.20 784.04 m" + "136.94 781.30 l" + "134.20 778.57 l" + "131.46 781.30 l" + "h" + "S" + "1.00 w" + "0.50 w" + "63.64 560.27 m" + "111.52 560.27 l" + "S" + "123.76 560.27 m" + "171.64 560.27 l" + "S" + "117.64 562.57 m" + "119.94 560.27 l" + "117.64 557.96 l" + "115.34 560.27 l" + "h" + "S" + "1.00 w" + "0.70 w" + "178.84 728.03 m" + "184.96 728.03 l" + "187.48 725.51 l" + "187.48 720.10 l" + "184.96 717.59 l" + "178.84 717.59 l" + "176.32 720.10 l" + "176.32 725.51 l" + "s" + "BT" + "/F2 7.00 Tf" + "179.37 720.18 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "47.80 773.03 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc0003002001660118016b018f0003018d0118016b0184 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "42.04 726.95 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "42.04 711.10 m" + "193.24 711.10 l" + "S" + "0.35 w" + "42.04 708.59 m" + "193.24 708.59 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "42.04 703.91 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "89.36 582.67 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET"] + ["0.88 0.88 0.88 RG" + "27.64 42.94 m" + "27.64 798.95 l" + "S" + "207.64 42.94 m" + "207.64 798.95 l" + "S" + "387.64 42.94 m" + "387.64 798.95 l" + "S" + "567.64 42.94 m" + "567.64 798.95 l" + "S" + "27.64 42.94 m" + "567.64 42.94 l" + "S" + "27.64 294.95 m" + "567.64 294.95 l" + "S" + "27.64 546.95 m" + "567.64 546.95 l" + "S" + "27.64 798.95 m" + "567.64 798.95 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 831.09 Td" + "#hex:00a9014d01930178000303fb000304a201f60178022a017801f601fe017804a3 Tj" + "ET" + "q" + "144.00 0.00 0.00 144.00 45.64 600.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "82.65 558.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 45.64 348.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "82.65 306.46 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 45.64 96.94 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "82.65 54.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 225.64 600.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "262.65 558.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 225.64 348.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "262.65 306.46 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 225.64 96.94 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "262.65 54.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 405.64 600.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "442.65 558.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 405.64 348.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "442.65 306.46 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 405.64 96.94 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "442.65 54.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET"] + ["0.88 0.88 0.88 RG" + "27.64 42.94 m" + "27.64 798.95 l" + "S" + "207.64 42.94 m" + "207.64 798.95 l" + "S" + "387.64 42.94 m" + "387.64 798.95 l" + "S" + "567.64 42.94 m" + "567.64 798.95 l" + "S" + "27.64 42.94 m" + "567.64 42.94 l" + "S" + "27.64 294.95 m" + "567.64 294.95 l" + "S" + "27.64 546.95 m" + "567.64 546.95 l" + "S" + "27.64 798.95 m" + "567.64 798.95 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 831.09 Td" + "#hex:00a9014d01930178000303fa Tj" + "ET" + "BT" + "/F2 8.00 Tf" + "396.28 721.18 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de0003016b018d01be01840118018f01d6000301180003018d014301c901c90118015e0143000301f6016b01d60166016b018f00030118018f0003019b0133017d0143013401d60003016b018f Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f015e014305fc000301180003018d014301c901c90118015e0143000301d60166011801d60003016b01c9000301de01d601d6014301c10143013b000301f601660143018f00030118000301d601c1016b015e015e014301c1 Tj" + "0.00 -8.80 Td" + "#hex:0134019b018f013b016b01d6016b019b018f0003016b01c90003018d014301d60608000300200166019b019b01c9014300030118018f0003019b0133017d0143013401d6000301d60166011801d6000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:01340118018f000301c90143014300030118018f013b000301d60166011801d60003016b01c9018f060c01d6000301330143016b018f015e000301f6019b01c1018f0003019b01c100030134011801c101c1016b0143013b0003013301fc Tj" + "0.00 -8.80 Td" + "#hex:0118018f019b01d60166014301c10003013401c10143011801d601de01c101430608000300c101660143018f000301c901be014301180181000301d6016601430003018d014301c901c90118015e014305fc Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b013401660003018d01de01c901d60003013301430003056b056e000301f6019b01c1013b01c90003019b01c100030184014301c901c905fc000301d60166019b01de015e01660003016b01d6000301340118018f Tj" + "0.00 -8.80 Td" + "#hex:013301430003013b01430184016b01f5014301c10143013b0003019b01f5014301c10003011801c900030184019b018f015e0003011801c90003056a05690003018d016b018f01de01d6014301c90608 Tj" + "0.00 -8.80 Td" + "#hex:004a016b018f01180184018401fc05fc0003013b014301d6014301c1018d016b018f0143000301d60166014300030134016b01c1013401de018d01c901d60118018f01340143000301d60166011801d6000301f6016b01840184 Tj" + "0.00 -8.80 Td" + "#hex:01d601c1016b015e015e014301c1000301d601660143000301c901be014301840184000301d6019b0003013b01430184016b01f5014301c1000301fc019b01de01c10003018d014301c901c90118015e01430608 Tj" + "0.00 -8.80 Td" + "#hex:00e001660143018f000301d60166011801d600030134016b01c1013401de018d01c901d60118018f013401430003019b0134013401de01c101c905fc000301180003018d0118015e016b013401180184 Tj" + "0.00 -8.80 Td" + "#hex:018d019b01de01d601660003011801be01be0143011801c101c90003019b018f000301d6016601430003019b0133017d0143013401d600030118018f013b000301c101430134016b01d6014301c9000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:018d014301c901c90118015e01430003016b018f000301fc019b01de01c1000301f5019b016b0134014300030118018f013b0003011801d6000301d601660143000301c90118018d0143000301f5019b018401de018d0143 Tj" + "0.00 -8.80 Td" + "#hex:01fc019b01de000301c901be019b01810143060800030058015d000301d6016601430003019b0133017d0143013401d6000301fc019b01de000301340166019b01c9014300030166011801c9000301180003018d019b01de01d60166 Tj" + "0.00 -8.80 Td" + "#hex:019b01c1000301c9019b018d014301d60166016b018f015e000301d60166011801d600030184019b019b018101c900030184016b01810143000301180003018d019b01de01d6016600030628015d019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:014301fb0118018d01be0184014305fc000301d6016601430003018d019b01de01d601660003019b015d00030118000301c901d6011801d601de0143062905fc000301d6016601430003018d0118015e016b013401180184 Tj" + "0.00 -8.80 Td" + "#hex:018d019b01de01d601660003011801be01be0143011801c101c9000301d60166014301c10143000301c9019b000301d60166011801d6000301d601660143000301f6019b01c1013b01c90003011801be01be0143011801c1 Tj" + "0.00 -8.80 Td" + "#hex:01d6019b00030134019b018d01430003015d01c1019b018d000301d6016601430003019b0133017d0143013401d6060c01c90003018d019b01de01d601660608000300e001660143018f000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:0134011801c901d6000301d60166016b01c9000301c901be01430184018405fc000301fc019b01de000301340118018f00030166011801f50143000301d601660143000301c901be01430184018400030143018f013b00030118025e014301c1 Tj" + "0.00 -8.80 Td" + "#hex:016b01d60003013b01430184016b01f5014301c101c90003016b01d601c90003018d014301c901c90118015e014305fc0003019b01c10003016b01d6000301340118018f000301c10143018d0118016b018f00030118018f013b Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "396.28 759.34 Td" + "0.00 -8.80 Td" + "#hex:0004000301fe01c2014d01b901b90003016801a0020b000301d001920003019b01d001c401780231016901d001c201680003014d01c40170000301b2014d0170017800030170021301fe020b0003022b01d001f6020b019b0003014d020b000301b90178014d01fe020b Tj" + "0.00 -8.80 Td" + "#hex:03fa03f90003019301f304760003022b019b01a00169019b0003020b019b0178000301fe01f3017801b901b90003016901d001c401fe021301c2017801fe Tj" + "ET" + "q" + "13.20 0.00 0.00 18.00 553.84 779.51 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 10.00 Tf" + "396.28 798.95 Td" + "0.00 -11.00 Td" + "#hex:00780118015e016b013400030078019b01de01d60166 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "459.10 798.95 Td" + "0.00 -11.00 Td" + "#hex:000304a201f601a0020b0213014d01b904a3 Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "396.28 785.27 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303fb0003005801b901b9021301fe01a001d001c4 Tj" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 396.28 757.18 cm" + "/Form2 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "395.63 760.86 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "395.63 761.51 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "395.63 762.15 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "396.28 760.86 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "396.28 762.15 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "396.93 760.86 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "396.93 761.51 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "396.93 762.15 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "396.28 761.51 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 432.28 757.18 cm" + "/Form3 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "431.63 760.86 Td" + "\"30 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "431.63 761.51 Td" + "\"30 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "431.63 762.15 Td" + "\"30 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "432.28 760.86 Td" + "\"30 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "432.28 762.15 Td" + "\"30 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "432.93 760.86 Td" + "\"30 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "432.93 761.51 Td" + "\"30 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "432.93 762.15 Td" + "\"30 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "432.28 761.51 Td" + "\"30 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 468.28 757.18 cm" + "/Form4 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "467.63 760.86 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "467.63 761.51 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "467.63 762.15 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "468.28 760.86 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "468.28 762.15 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "468.93 760.86 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "468.93 761.51 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "468.93 762.15 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "468.28 761.51 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 504.28 757.18 cm" + "/Form5 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "503.63 760.86 Td" + "\"Until dispelled\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "503.63 761.51 Td" + "\"Until dispelled\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "503.63 762.15 Td" + "\"Until dispelled\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "504.28 760.86 Td" + "\"Until dispelled\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "504.28 762.15 Td" + "\"Until dispelled\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "504.93 760.86 Td" + "\"Until dispelled\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "504.93 761.51 Td" + "\"Until dispelled\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "504.93 762.15 Td" + "\"Until dispelled\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "504.28 761.51 Td" + "\"Until dispelled\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.02 0.00 0.00 0.02 553.24 550.54 cm" + "/Form6 Do" + "Q" + "BT" + "/F2 8.00 Tf" + "216.28 721.18 Td" + "0.00 -8.80 Td" + "#hex:001f01fc00030134011801c901d6016b018f015e0003015e0143018d0640016b018f01840118016b013b000301c901d6016b0134018101c905fc000301c1019b01840184016b018f015e0003013b01c10118015e019b018f Tj" + "0.00 -8.80 Td" + "#hex:0133019b018f014301c905fc00030184011801fc016b018f015e0003019b01de01d60003019b01c1018f011801d6014300030134011801c1013b01c905fc0003019b01c100030143018d01be0184019b01fc016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:01c9019b018d01430003019b01d60166014301c10003013b016b01f5016b018f016b018f015e000301d6019b019b018405fc000301fc019b01de000301c1014301340143016b01f5014300030118018f0003019b018d0143018f Tj" + "0.00 -8.80 Td" + "#hex:015d01c1019b018d00030118018f0003019b01d60166014301c101f6019b01c10184013b018401fc00030143018f01d6016b01d601fc000301180133019b01de01d6000301d601660143000301c1014301c901de018401d601c9 Tj" + "0.00 -8.80 Td" + "#hex:019b015d00030118000301c901be01430134016b025b013400030134019b01de01c101c901430003019b015d00030118013401d6016b019b018f000301d60166011801d6000301fc019b01de000301be01840118018f000301d6019b Tj" + "0.00 -8.80 Td" + "#hex:01d6011801810143000301f6016b01d60166016b018f000301d6016601430003018f014301fb01d60003056c05690003018d016b018f01de01d6014301c90608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c90003015d01c1019b018d000301d6016601430003015d019b01840184019b01f6016b018f015e000301be019b01c901c9016b0133018401430003019b018d0143018f01c905fb000305f8 Tj" + "0.00 -8.80 Td" + "#hex:00e001430118018405fc0003015d019b01c10003015e019b019b013b000301c1014301c901de018401d601c9000305f8000300e0019b014305fc0003015d019b01c1000301330118013b000301c1014301c901de018401d601c9000305f8 Tj" + "0.00 -8.80 Td" + "#hex:00e001430118018400030118018f013b000301f6019b014305fc0003015d019b01c100030133019b01d601660003015e019b019b013b00030118018f013b000301330118013b000301c1014301c901de018401d601c9000305f8 Tj" + "0.00 -8.80 Td" + "#hex:007a019b01d60166016b018f015e05fc0003015d019b01c1000301c1014301c901de018401d601c9000301d60166011801d60003011801c10143018f060c01d60003014301c901be01430134016b01180184018401fc0003015e019b019b013b Tj" + "0.00 -8.80 Td" + "#hex:019b01c1000301330118013b000300c101660143000301c901be0143018401840003013b019b014301c9018f060c01d6000301d60118018101430003016b018f01d6019b0003011801340134019b01de018f01d600030118018f01fc Tj" + "0.00 -8.80 Td" + "#hex:01be019b01c901c9016b01330184014300030134016b01c1013401de018d01c901d60118018f0134014301c9000301d60166011801d60003018d016b015e016601d60003013401660118018f015e0143000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:019b01de01d60134019b018d014305fc000301c901de013401660003011801c9000301d60166014300030134011801c901d6016b018f015e0003019b015d00030118013b013b016b01d6016b019b018f01180184 Tj" + "0.00 -8.80 Td" + "#hex:01c901be01430184018401c90003019b01c1000301d60166014300030184019b01c901c90003019b01c10003015e0118016b018f0003019b015d0003011800030134019b018d01be0118018f016b019b018f060800030058015d000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:0134011801c901d6000301d601660143000301c901be014301840184000301d601f6019b0003019b01c10003018d019b01c10143000301d6016b018d014301c9000301330143015d019b01c10143 Tj" + "0.00 -8.80 Td" + "#hex:0134019b018d01be0184014301d6016b018f015e000301fc019b01de01c10003018f014301fb01d600030184019b018f015e000301c1014301c901d605fc000301d60166014301c101430003016b01c900030118 Tj" + "0.00 -8.80 Td" + "#hex:013401de018d01de0184011801d6016b01f501430003056b056e000301be014301c101340143018f01d60003013401660118018f013401430003015d019b01c10003014301180134016600030134011801c901d6016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:0118025e014301c1000301d6016601430003025b01c101c901d6000301d60166011801d6000301fc019b01de0003015e014301d600030118000301c10118018f013b019b018d000301c101430118013b016b018f015e0608 Tj" + "0.00 -8.80 Td" + "#hex:00c1016601430003004b00780003018d01180181014301c9000301d60166016b01c9000301c1019b018401840003016b018f000301c90143013401c1014301d60608 Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "216.28 759.34 Td" + "0.00 -8.80 Td" + "#hex:00b401f30178016901a0014d01b901b90231000301c2014d01f601b601780170000301fe020b01a0016901b601fe04760003016801d001c4017801fe0476000301d001f6000301fe01a001c201a001b9014d01f60003020b01d001b6017801c401fe Tj" + "0.00 -8.80 Td" + "#hex:022b01d001f6020b019b0003014d020b000301b90178014d01fe020b000303fb03fe0003019301f3 Tj" + "ET" + "q" + "13.20 0.00 0.00 18.00 373.84 779.51 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 10.00 Tf" + "216.28 798.95 Td" + "0.00 -11.00 Td" + "#hex:000401de015e01de01c101fc Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "251.57 798.95 Td" + "0.00 -11.00 Td" + "#hex:000304a201f601a0020b0213014d01b904a3 Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "216.28 785.27 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303fb0003002701a0022a01a001c4014d020b01a001d001c4 Tj" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 216.28 757.18 cm" + "/Form2 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "215.63 760.86 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "215.63 761.51 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "215.63 762.15 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "216.28 760.86 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "216.28 762.15 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "216.93 760.86 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "216.93 761.51 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "216.93 762.15 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "216.28 761.51 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 252.28 757.18 cm" + "/Form3 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "251.63 760.86 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "251.63 761.51 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "251.63 762.15 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "252.28 760.86 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "252.28 762.15 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "252.93 760.86 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "252.93 761.51 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "252.93 762.15 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "252.28 761.51 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 288.28 757.18 cm" + "/Form4 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "287.63 760.86 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "287.63 761.51 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "287.63 762.15 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "288.28 760.86 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "288.28 762.15 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "288.93 760.86 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "288.93 761.51 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "288.93 762.15 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "288.28 761.51 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 324.28 757.18 cm" + "/Form5 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "323.63 760.86 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "323.63 761.51 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "323.63 762.15 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "324.28 760.86 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "324.28 762.15 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "324.93 760.86 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "324.93 761.51 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "324.93 762.15 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "324.28 761.51 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F2 8.00 Tf" + "36.28 721.18 Td" + "0.00 -8.80 Td" + "#hex:0004000301f6011801f501430003019b015d000301d6016601de018f013b014301c1019b01de01c90003015d019b01c101340143000301c901f60143014301be01c90003019b01de01d60003015d01c1019b018d Tj" + "0.00 -8.80 Td" + "#hex:01fc019b01de0608000300310118013401660003013401c10143011801d601de01c101430003016b018f000301180003056a056e0640015d019b019b01d60003013401de01330143 Tj" + "0.00 -8.80 Td" + "#hex:019b01c1016b015e016b018f011801d6016b018f015e0003015d01c1019b018d000301fc019b01de0003018d01de01c901d60003018d01180181014300030118 Tj" + "0.00 -8.80 Td" + "#hex:0020019b018f01c901d6016b01d601de01d6016b019b018f000301c9011801f5016b018f015e000301d6016601c1019b01f6060800030086018f000301180003015d0118016b01840143013b000301c9011801f5014305fc00030118 Tj" + "0.00 -8.80 Td" + "#hex:013401c10143011801d601de01c10143000301d601180181014301c90003056b013b0571000301d6016601de018f013b014301c10003013b0118018d0118015e014300030118018f013b0003016b01c9 Tj" + "0.00 -8.80 Td" + "#hex:01be01de01c901660143013b0003056a05690003015d0143014301d60003011801f6011801fc0003015d01c1019b018d000301fc019b01de060800030086018f00030118000301c901de01340134014301c901c9015d01de0184 Tj" + "0.00 -8.80 Td" + "#hex:01c9011801f5014305fc000301d6016601430003013401c10143011801d601de01c10143000301d601180181014301c90003016601180184015d0003011801c90003018d01de013401660003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:0118018f013b0003016b01c9018f060c01d6000301be01de01c901660143013b060800030058018f00030118013b013b016b01d6016b019b018f05fc000301de018f01c90143013401de01c10143013b Tj" + "0.00 -8.80 Td" + "#hex:019b0133017d0143013401d601c9000301d60166011801d60003011801c1014300030134019b018d01be0184014301d60143018401fc000301f6016b01d60166016b018f000301d6016601430003011801c1014301180003019b015d Tj" + "0.00 -8.80 Td" + "#hex:014302480143013401d60003011801c101430003011801de01d6019b018d011801d6016b013401180184018401fc000301be01de01c901660143013b0003056a05690003015d0143014301d60003011801f6011801fc Tj" + "0.00 -8.80 Td" + "#hex:015d01c1019b018d000301fc019b01de0003013301fc000301d601660143000301c901be014301840184060c01c90003014302480143013401d605fc00030118018f013b000301d601660143000301c901be014301840184 Tj" + "0.00 -8.80 Td" + "#hex:0143018d016b01d601c900030118000301d6016601de018f013b014301c1019b01de01c900030133019b019b018d0003011801de013b016b0133018401430003019b01de01d6000301d6019b0003056c05690569 Tj" + "0.00 -8.80 Td" + "#hex:015d0143014301d606080003000401d600030053016b015e0166014301c10003006e014301f50143018401c90608000300e001660143018f000301fc019b01de00030134011801c901d6000301d60166016b01c9 Tj" + "0.00 -8.80 Td" + "#hex:01c901be014301840184000301de01c9016b018f015e00030118000301c901be014301840184000301c90184019b01d60003019b015d0003056b018f013b00030184014301f5014301840003019b01c100030166016b015e0166014301c105fc Tj" + "0.00 -8.80 Td" + "#hex:01d6016601430003013b0118018d0118015e01430003016b018f013401c10143011801c9014301c90003013301fc0003056a013b05710003015d019b01c100030143011801340166000301c90184019b01d600030184014301f501430184 Tj" + "0.00 -8.80 Td" + "#hex:01180133019b01f501430003056a01c901d60608 Tj" + "ET" + "q" + "13.20 0.00 0.00 18.00 193.84 779.51 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 10.00 Tf" + "36.28 798.95 Td" + "0.00 -11.00 Td" + "#hex:00c1016601de018f013b014301c101f6011801f50143 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "102.30 798.95 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "36.28 785.27 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303fa00030031022a01d00169014d020b01a001d001c4 Tj" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 36.28 757.18 cm" + "/Form2 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "35.63 760.86 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "35.63 761.51 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "35.63 762.15 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "36.28 760.86 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "36.28 762.15 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "36.93 760.86 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "36.93 761.51 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "36.93 762.15 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "36.28 761.51 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 72.28 757.18 cm" + "/Form3 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "71.63 760.86 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "71.63 761.51 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "71.63 762.15 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "72.28 760.86 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "72.28 762.15 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "72.93 760.86 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "72.93 761.51 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "72.93 762.15 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "72.28 761.51 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 108.28 757.18 cm" + "/Form4 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "107.63 760.86 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "107.63 761.51 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "107.63 762.15 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "108.28 760.86 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "108.28 762.15 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "108.93 760.86 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "108.93 761.51 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "108.93 762.15 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "108.28 761.51 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 144.28 757.18 cm" + "/Form5 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "143.63 760.86 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "143.63 761.51 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "143.63 762.15 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "144.28 760.86 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "144.28 762.15 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "144.93 760.86 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "144.93 761.51 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "144.93 762.15 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "144.28 761.51 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F2 8.00 Tf" + "396.28 469.18 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de000301d601430184014301be019b01c101d6000301fc019b01de01c101c901430184015d0003015d01c1019b018d000301fc019b01de01c10003013401de01c101c10143018f01d6 Tj" + "0.00 -8.80 Td" + "#hex:0184019b0134011801d6016b019b018f000301d6019b00030118018f01fc0003019b01d60166014301c1000301c901be019b01d6000301f6016b01d60166016b018f000301c10118018f015e01430608000300e6019b01de Tj" + "0.00 -8.80 Td" + "#hex:011801c101c1016b01f501430003011801d60003014301fb0118013401d6018401fc000301d601660143000301c901be019b01d60003013b014301c9016b01c10143013b06080003005801d6000301340118018f00030133014300030118 Tj" + "0.00 -8.80 Td" + "#hex:01be0184011801340143000301fc019b01de000301340118018f000301c90143014305fc0003019b018f0143000301fc019b01de000301340118018f000301f5016b01c901de01180184016b0206014305fc0003019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:019b018f0143000301fc019b01de000301340118018f0003013b014301c9013401c1016b013301430003013301fc000301c901d6011801d6016b018f015e0003013b016b01c901d60118018f0134014300030118018f013b Tj" + "0.00 -8.80 Td" + "#hex:013b016b01c10143013401d6016b019b018f05fc000301c901de013401660003011801c900030655056b056905690003015d0143014301d6000301c901d601c10118016b015e016601d6 Tj" + "0.00 -8.80 Td" + "#hex:013b019b01f6018f01f6011801c1013b06560003019b01c10003065501de01be01f6011801c1013b000301d6019b000301d6016601430003018f019b01c101d6016601f6014301c901d60003011801d600030118 Tj" + "0.00 -8.80 Td" + "#hex:056d056e0640013b0143015e01c10143014300030118018f015e0184014305fc0003056c056905690003015d0143014301d606080656000300e6019b01de000301340118018f0003013301c1016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:01180184019b018f015e0003019b0133017d0143013401d601c90003011801c900030184019b018f015e0003011801c9000301d601660143016b01c1000301f60143016b015e016601d60003013b019b014301c9018f060c01d6 Tj" + "0.00 -8.80 Td" + "#hex:014301fb013401430143013b000301f60166011801d6000301fc019b01de000301340118018f00030134011801c101c101fc0608000300e6019b01de000301340118018f00030118018401c9019b0003013301c1016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:019b018f0143000301f6016b01840184016b018f015e0003013401c10143011801d601de01c101430003019b015d000301fc019b01de01c1000301c9016b020601430003019b01c1000301c9018d011801840184014301c1 Tj" + "0.00 -8.80 Td" + "#hex:01f60166019b0003016b01c900030134011801c101c101fc016b018f015e0003015e0143011801c1000301de01be000301d6019b0003016b01d601c900030134011801c101c101fc016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:0134011801be01180134016b01d601fc0608000300c1016601430003013401c10143011801d601de01c101430003018d01de01c901d6000301330143000301f6016b01d60166016b018f0003056e0003015d0143014301d60003019b015d Tj" + "0.00 -8.80 Td" + "#hex:01fc019b01de000301f601660143018f000301fc019b01de00030134011801c901d6000301d60166016b01c9000301c901be014301840184060800030058015d000301fc019b01de000301f6019b01de0184013b Tj" + "0.00 -8.80 Td" + "#hex:011801c101c1016b01f501430003016b018f00030118000301be018401180134014300030118018401c101430118013b01fc0003019b0134013401de01be016b0143013b0003013301fc00030118018f0003019b0133017d0143013401d6 Tj" + "0.00 -8.80 Td" + "#hex:019b01c1000301180003013401c10143011801d601de01c1014305fc000301fc019b01de00030118018f013b00030118018f01fc0003013401c10143011801d601de01c10143000301d601c1011801f501430184016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:01f6016b01d60166000301fc019b01de00030143011801340166000301d60118018101430003056d013b056f0003015d019b01c1013401430003013b0118018d0118015e014305fc00030118018f013b000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01c901be0143018401840003015d0118016b018401c9000301d6019b000301d601430184014301be019b01c101d6000301fc019b01de0608 Tj" + "ET" + "q" + "13.20 0.00 0.00 18.00 553.84 527.51 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 10.00 Tf" + "396.28 546.95 Td" + "0.00 -11.00 Td" + "#hex:0027016b018d0143018f01c9016b019b018f00030027019b019b01c1 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "474.85 546.95 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "396.28 533.27 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303fd0003002001d001c401b2021301f6014d020b01a001d001c4 Tj" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 396.28 505.18 cm" + "/Form2 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "395.63 508.86 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "395.63 509.50 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "395.63 510.15 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "396.28 508.86 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "396.28 510.15 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "396.93 508.86 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "396.93 509.50 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "396.93 510.15 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "396.28 509.50 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 432.28 505.18 cm" + "/Form3 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "431.63 508.86 Td" + "\"500 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "431.63 509.50 Td" + "\"500 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "431.63 510.15 Td" + "\"500 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "432.28 508.86 Td" + "\"500 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "432.28 510.15 Td" + "\"500 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "432.93 508.86 Td" + "\"500 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "432.93 509.50 Td" + "\"500 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "432.93 510.15 Td" + "\"500 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "432.28 509.50 Td" + "\"500 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 468.28 505.18 cm" + "/Form4 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "467.63 508.86 Td" + "\"V\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "467.63 509.50 Td" + "\"V\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "467.63 510.15 Td" + "\"V\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "468.28 508.86 Td" + "\"V\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "468.28 510.15 Td" + "\"V\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "468.93 508.86 Td" + "\"V\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "468.93 509.50 Td" + "\"V\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "468.93 510.15 Td" + "\"V\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "468.28 509.50 Td" + "\"V\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 504.28 505.18 cm" + "/Form5 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "503.63 508.86 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "503.63 509.50 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "503.63 510.15 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "504.28 508.86 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "504.28 510.15 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "504.93 508.86 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "504.93 509.50 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "504.93 510.15 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "504.28 509.50 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F2 8.00 Tf" + "216.28 469.18 Td" + "0.00 -8.80 Td" + "#hex:00040003056a05690640015d019b019b01d6064001c10118013b016b01de01c90003016b018d018d019b0133016b018401430003013b019b018d01430003019b015d0003015d019b01c101340143 Tj" + "0.00 -8.80 Td" + "#hex:01c901be01c1016b018f015e01c90003016b018f01d6019b0003014301fb016b01c901d60143018f013401430003011801c1019b01de018f013b00030118018f013b000301180133019b01f50143000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:0118018f013b000301c10143018d0118016b018f01c9000301c901d6011801d6016b019b018f011801c101fc0003015d019b01c1000301d6016601430003013b01de01c1011801d6016b019b018f0608000300c101660143 Tj" + "0.00 -8.80 Td" + "#hex:01c901be01430184018400030143018f013b01c90003016b015d000301fc019b01de000301840143011801f501430003016b01d601c90003011801c10143011806080003007a016b018f01430003013401c10143011801d601de01c1014301c9 Tj" + "0.00 -8.80 Td" + "#hex:019b015d000300780143013b016b01de018d000301c9016b020601430003019b01c1000301c9018d011801840184014301c1000301340118018f0003025b01d60003016b018f01c9016b013b0143000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:013b019b018d0143000301f6016b01d60166000301fc019b01de0608000300c101660143000301c901be0143018401840003015d0118016b018401c90003016b015d0003016b01d601c90003011801c101430118 Tj" + "0.00 -8.80 Td" + "#hex:016b018f0134018401de013b014301c90003011800030184011801c1015e014301c10003013401c10143011801d601de01c101430003019b01c10003018d019b01c10143000301d601660118018f0003018f016b018f0143 Tj" + "0.00 -8.80 Td" + "#hex:013401c10143011801d601de01c1014301c906080003002001c10143011801d601de01c1014301c900030118018f013b0003019b0133017d0143013401d601c9000301f6016b01d60166016b018f000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:013b019b018d0143000301f601660143018f000301fc019b01de00030134011801c901d6000301d60166016b01c9000301c901be014301840184000301340118018f0003018d019b01f50143 Tj" + "0.00 -8.80 Td" + "#hex:01d6016601c1019b01de015e01660003016b01d60003015d01c101430143018401fc060800030004018401840003019b01d60166014301c10003013401c10143011801d601de01c1014301c900030118018f013b Tj" + "0.00 -8.80 Td" + "#hex:019b0133017d0143013401d601c90003011801c1014300030133011801c101c10143013b0003015d01c1019b018d000301be011801c901c9016b018f015e000301d6016601c1019b01de015e01660003016b01d60608 Tj" + "0.00 -8.80 Td" + "#hex:00b401be01430184018401c900030118018f013b0003019b01d60166014301c10003018d0118015e016b0134011801840003014302480143013401d601c9000301340118018f060c01d60003014301fb01d60143018f013b Tj" + "0.00 -8.80 Td" + "#hex:01d6016601c1019b01de015e0166000301d6016601430003013b019b018d01430003019b01c100030133014300030134011801c901d6000301d6016601c1019b01de015e01660003016b01d60608000300c101660143 Tj" + "0.00 -8.80 Td" + "#hex:011801d6018d019b01c901be0166014301c101430003016b018f01c9016b013b0143000301d601660143000301c901be0118013401430003016b01c900030134019b018d015d019b01c101d60118013301840143 Tj" + "0.00 -8.80 Td" + "#hex:0118018f013b0003013b01c101fc05fc000301c10143015e011801c1013b0184014301c901c90003019b015d000301d601660143000301f60143011801d60166014301c10003019b01de01d601c9016b013b01430608 Tj" + "0.00 -8.80 Td" + "#hex:00c8018f01d6016b0184000301d601660143000301c901be01430184018400030143018f013b01c905fc000301fc019b01de000301340118018f00030134019b018d018d0118018f013b000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:016b018f01d6014301c1016b019b01c1000301d6019b0003013301430134019b018d01430003013b016b018d018401fc00030184016b01d60003019b01c10003013b011801c101810608000300c1016601430003013b019b018d0143 Tj" + "0.00 -8.80 Td" + "#hex:016b01c90003019b01be011801c001de01430003015d01c1019b018d000301d6016601430003019b01de01d601c9016b013b014305fc0003019b015d00030118018f01fc00030134019b0184019b01c1000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014305fc0003013301de01d60003016b01d60003016b01c9000301d601c10118018f01c901be011801c10143018f01d60003015d01c1019b018d000301d6016601430003016b018f01c9016b013b01430608 Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "216.28 507.35 Td" + "0.00 -8.80 Td" + "#hex:0004000301fe01c2014d01b901b90003016901f6023101fe020b014d01b9000301680178014d0170 Tj" + "ET" + "q" + "13.20 0.00 0.00 18.00 373.84 527.51 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 10.00 Tf" + "216.28 546.95 Td" + "0.00 -11.00 Td" + "#hex:00c1016b018f01fc0003005301de01d6 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "258.39 546.95 Td" + "0.00 -11.00 Td" + "#hex:000304a201f601a0020b0213014d01b904a3 Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "216.28 533.27 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303fc00030031022a01d00169014d020b01a001d001c4 Tj" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 216.28 505.18 cm" + "/Form2 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "215.63 508.86 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "215.63 509.50 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "215.63 510.15 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "216.28 508.86 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "216.28 510.15 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "216.93 508.86 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "216.93 509.50 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "216.93 510.15 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "216.28 509.50 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 252.28 505.18 cm" + "/Form3 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "251.63 508.86 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "251.63 509.50 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "251.63 510.15 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "252.28 508.86 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "252.28 510.15 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "252.93 508.86 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "252.93 509.50 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "252.93 510.15 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "252.28 509.50 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 288.28 505.18 cm" + "/Form4 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "287.63 508.86 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "287.63 509.50 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "287.63 510.15 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "288.28 508.86 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "288.28 510.15 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "288.93 508.86 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "288.93 509.50 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "288.93 510.15 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "288.28 509.50 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 324.28 505.18 cm" + "/Form5 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "323.63 508.86 Td" + "\"8 hrs\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "323.63 509.50 Td" + "\"8 hrs\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "323.63 510.15 Td" + "\"8 hrs\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "324.28 508.86 Td" + "\"8 hrs\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "324.28 510.15 Td" + "\"8 hrs\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "324.93 508.86 Td" + "\"8 hrs\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "324.93 509.50 Td" + "\"8 hrs\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "324.93 510.15 Td" + "\"8 hrs\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "324.28 509.50 Td" + "\"8 hrs\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F2 8.00 Tf" + "36.28 469.18 Td" + "0.00 -8.80 Td" + "#hex:00c10166016b01c9000301c901be0143018401840003013401c10143011801d6014301c900030118018f000301de018f013b01430118013b000301c9014301c101f50118018f01d60608000300200166019b019b01c9014300030118 Tj" + "0.00 -8.80 Td" + "#hex:01be016b018401430003019b015d00030133019b018f014301c90003019b01c10003011800030134019b01c101be01c901430003019b015d00030118000300780143013b016b01de018d0003019b01c1000300b4018d011801840184 Tj" + "0.00 -8.80 Td" + "#hex:016601de018d0118018f019b016b013b000301f6016b01d60166016b018f000301c10118018f015e01430608000300e6019b01de01c1000301c901be0143018401840003016b018d013301de014301c9000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01d6011801c1015e014301d6000301f6016b01d60166000301180003015d019b01de01840003018d016b018d016b013401c101fc0003019b015d00030184016b015d014305fc000301c10118016b01c9016b018f015e0003016b01d60003011801c9 Tj" + "0.00 -8.80 Td" + "#hex:0118018f000301de018f013b01430118013b0003013401c10143011801d601de01c101430608000300c101660143000301d6011801c1015e014301d60003013301430134019b018d014301c900030118 Tj" + "0.00 -8.80 Td" + "#hex:01c9018101430184014301d6019b018f0003016b015d000301fc019b01de000301340166019b01c9014300030133019b018f014301c90003019b01c10003011800030206019b018d0133016b01430003016b015d000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:01340166019b01c901430003011800030134019b01c101be01c901430003062801d6016601430003004b007800030166011801c9000301d6016601430003013401c10143011801d601de01c10143060c01c9 Tj" + "0.00 -8.80 Td" + "#hex:015e0118018d0143000301c901d6011801d6016b01c901d6016b013401c90629060800030086018f000301430118013401660003019b015d000301fc019b01de01c1000301d601de01c1018f01c905fc000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:01340118018f000301de01c901430003011800030133019b018f01de01c900030118013401d6016b019b018f000301d6019b0003018d0143018f01d601180184018401fc00030134019b018d018d0118018f013b Tj" + "0.00 -8.80 Td" + "#hex:0118018f01fc0003013401c10143011801d601de01c10143000301fc019b01de0003018d0118013b0143000301f6016b01d60166000301d60166016b01c9000301c901be0143018401840003016b015d000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:013401c10143011801d601de01c101430003016b01c9000301f6016b01d60166016b018f0003056f05690003015d0143014301d60003019b015d000301fc019b01de00030628016b015d000301fc019b01de00030134019b018f01d601c1019b0184 Tj" + "0.00 -8.80 Td" + "#hex:018d01de018401d6016b01be018401430003013401c10143011801d601de01c1014301c905fc000301fc019b01de000301340118018f00030134019b018d018d0118018f013b00030118018f01fc0003019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:0118018401840003019b015d000301d601660143018d0003011801d6000301d601660143000301c90118018d0143000301d6016b018d014305fc0003016b01c901c901de016b018f015e000301d601660143000301c90118018d0143 Tj" + "0.00 -8.80 Td" + "#hex:0134019b018d018d0118018f013b000301d6019b000301430118013401660003019b018f014306290608000300e6019b01de0003013b01430134016b013b0143000301f60166011801d600030118013401d6016b019b018f Tj" + "0.00 -8.80 Td" + "#hex:01d6016601430003013401c10143011801d601de01c10143000301f6016b01840184000301d601180181014300030118018f013b000301f60166014301c101430003016b01d6000301f6016b018401840003018d019b01f50143 Tj" + "0.00 -8.80 Td" + "#hex:013b01de01c1016b018f015e0003016b01d601c90003018f014301fb01d6000301d601de01c1018f05fc0003019b01c1000301fc019b01de000301340118018f0003016b01c901c901de0143000301180003015e0143018f014301c101180184 Tj" + "0.00 -8.80 Td" + "#hex:0134019b018d018d0118018f013b05fc000301c901de013401660003011801c9000301d6019b0003015e01de011801c1013b00030118000301be011801c101d6016b013401de0184011801c1 Tj" + "0.00 -8.80 Td" + "#hex:013401660118018d0133014301c10003019b01c100030134019b01c101c1016b013b019b01c1060800030058015d000301fc019b01de0003016b01c901c901de01430003018f019b Tj" + "0.00 -8.80 Td" + "#hex:0134019b018d018d0118018f013b01c905fc000301d6016601430003013401c10143011801d601de01c101430003019b018f018401fc0003013b0143015d0143018f013b01c90003016b01d601c901430184015d Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "36.28 507.35 Td" + "0.00 -8.80 Td" + "#hex:00040003017001f601d001f3000301d001920003016801b901d001d0017004760003014d000301f301a0017801690178000301d001920003027f017801fe019b04760003014d01c401700003014d000301f301a001c40169019b000301d001920003016801d001c40178 Tj" + "0.00 -8.80 Td" + "#hex:0170021301fe020b Tj" + "ET" + "q" + "13.20 0.00 0.00 18.00 193.84 527.51 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 10.00 Tf" + "36.28 546.95 Td" + "0.00 -11.00 Td" + "#hex:0004018f016b018d011801d601430003002701430118013b Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "103.79 546.95 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "36.28 533.27 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303fc0003007a0178016901f601d001c2014d01c401690231 Tj" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 36.28 505.18 cm" + "/Form2 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "35.63 508.86 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "35.63 509.50 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "35.63 510.15 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "36.28 508.86 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "36.28 510.15 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "36.93 508.86 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "36.93 509.50 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "36.93 510.15 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "36.28 509.50 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 72.28 505.18 cm" + "/Form3 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "71.63 508.86 Td" + "\"10 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "71.63 509.50 Td" + "\"10 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "71.63 510.15 Td" + "\"10 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "72.28 508.86 Td" + "\"10 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "72.28 510.15 Td" + "\"10 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "72.93 508.86 Td" + "\"10 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "72.93 509.50 Td" + "\"10 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "72.93 510.15 Td" + "\"10 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "72.28 509.50 Td" + "\"10 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 108.28 505.18 cm" + "/Form4 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "107.63 508.86 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "107.63 509.50 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "107.63 510.15 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "108.28 508.86 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "108.28 510.15 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "108.93 508.86 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "108.93 509.50 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "108.93 510.15 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "108.28 509.50 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 144.28 505.18 cm" + "/Form5 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "143.63 508.86 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "143.63 509.50 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "143.63 510.15 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "144.28 508.86 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "144.28 510.15 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "144.93 508.86 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "144.93 509.50 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "144.93 510.15 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "144.28 509.50 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.02 0.00 0.00 0.02 193.24 298.55 cm" + "/Form6 Do" + "Q" + "BT" + "/F2 8.00 Tf" + "396.28 217.18 Td" + "0.00 -8.80 Td" + "#hex:00200166019b019b01c9014300030118018f0003011801c1014301180003019b015d000301d6014301c101c10118016b018f0003018f019b00030184011801c1015e014301c1000301d601660118018f0003056d0569 Tj" + "0.00 -8.80 Td" + "#hex:015d0143014301d60003019b018f00030118000301c9016b013b0143000301f6016b01d60166016b018f000301c10118018f015e01430608000300e6019b01de000301340118018f000301c1014301c90166011801be0143 Tj" + "0.00 -8.80 Td" + "#hex:013b016b01c101d605fc000301c90118018f013b05fc0003019b01c1000301340184011801fc0003016b018f000301d6016601430003011801c1014301180003016b018f00030118018f01fc0003018d0118018f018f014301c1 Tj" + "0.00 -8.80 Td" + "#hex:01fc019b01de000301340166019b019b01c901430003015d019b01c1000301d6016601430003013b01de01c1011801d6016b019b018f0608000300e6019b01de000301340118018f000301c10118016b01c901430003019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:0184019b01f6014301c1000301d6016601430003011801c101430118060c01c9000301430184014301f5011801d6016b019b018f05fc0003013401c10143011801d601430003019b01c10003025b018401840003016b018f00030118 Tj" + "0.00 -8.80 Td" + "#hex:01d601c10143018f0134016605fc0003014301c10143013401d60003019b01c10003025d011801d601d60143018f00030118000301f601180184018405fc0003019b01c10003015d019b01c1018d00030118000301be016b01840184011801c10608 Tj" + "0.00 -8.80 Td" + "#hex:00c1016601430003014301fb01d60143018f01d60003019b015d00030118018f01fc000301c901de013401660003013401660118018f015e014301c9000301340118018f060c01d60003014301fb013401430143013b Tj" + "0.00 -8.80 Td" + "#hex:016601180184015d000301d6016601430003011801c101430118060c01c900030184011801c1015e014301c901d60003013b016b018d0143018f01c9016b019b018f0608000300b4019b05fc0003016b015d000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:011802480143013401d6000301180003056d05690640015d019b019b01d6000301c901c001de011801c1014305fc000301fc019b01de000301340118018f0003013401c10143011801d6014300030118000301be016b01840184011801c1 Tj" + "0.00 -8.80 Td" + "#hex:01de01be000301d6019b0003056b05690003015d0143014301d600030166016b015e016605fc000301c10118016b01c901430003019b01c100030184019b01f6014301c1000301d601660143000301c901c001de011801c10143060c01c9 Tj" + "0.00 -8.80 Td" + "#hex:01430184014301f5011801d6016b019b018f0003013301fc000301de01be000301d6019b0003056b05690003015d0143014301d605fc0003013b016b015e00030118000301d601c10143018f01340166000301de01be000301d6019b0003056b0569 Tj" + "0.00 -8.80 Td" + "#hex:015d0143014301d60003013b0143014301be05fc00030118018f013b000301c9019b0003019b018f06080003005801d6000301d601180181014301c90003056a05690003018d016b018f01de01d6014301c90003015d019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:01d60166014301c901430003013401660118018f015e014301c9000301d6019b00030134019b018d01be0184014301d6014306080003000401d6000301d60166014300030143018f013b0003019b015d0003014301f5014301c101fc Tj" + "0.00 -8.80 Td" + "#hex:056a05690003018d016b018f01de01d6014301c9000301fc019b01de000301c901be0143018f013b00030134019b018f01340143018f01d601c1011801d6016b018f015e0003019b018f000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01c901be01430184018405fc000301fc019b01de000301340118018f000301340166019b019b01c90143000301180003018f014301f60003011801c1014301180003019b015d000301d6014301c101c10118016b018f000301d6019b Tj" + "0.00 -8.80 Td" + "#hex:011802480143013401d606080003001f01430134011801de01c90143000301d601660143000301d6014301c101c10118016b018f060c01c9000301d601c10118018f01c9015d019b01c1018d011801d6016b019b018f Tj" + "0.00 -8.80 Td" + "#hex:019b0134013401de01c101c9000301c90184019b01f6018401fc05fc0003013401c10143011801d601de01c1014301c90003016b018f000301d6016601430003011801c101430118000301340118018f060c01d6 Tj" + "0.00 -8.80 Td" + "#hex:01de01c901de01180184018401fc000301330143000301d601c1011801be01be0143013b0003019b01c10003016b018f017d01de01c10143013b0003013301fc000301d6016601430003015e01c1019b01de018f013b060c01c9 Tj" + "0.00 -8.80 Td" + "#hex:018d019b01f50143018d0143018f01d60608000300c10166016b01c9000301c901be014301840184000301340118018f060c01d60003018d0118018f016b01be01de0184011801d601430003018f011801d601de01c101180184 Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "396.28 255.35 Td" + "0.00 -8.80 Td" + "#hex:000401c4000301a001f601d001c40003016801b9014d017001780003014d01c401700003014d000301fe01c2014d01b901b900030168014d01930003016901d001c4020b014d01a001c401a001c401930003014d000301c201a00230020b021301f60178 Tj" + "0.00 -8.80 Td" + "#hex:01d00192000301fe01d001a001b901fe04b6016901b9014d02310476000301b901d0014d01c204760003014d01c40170000301fe014d01c40170 Tj" + "ET" + "q" + "13.20 0.00 0.00 18.00 553.84 275.51 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 10.00 Tf" + "396.28 294.95 Td" + "0.00 -11.00 Td" + "#hex:0078019b01f5014300030031011801c101d60166 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "451.29 294.95 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "396.28 281.27 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303ff000300c101f6014d01c401fe01c20213020b014d020b01a001d001c4 Tj" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 396.28 253.19 cm" + "/Form2 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "395.63 256.86 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "395.63 257.51 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "395.63 258.15 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "396.28 256.86 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "396.28 258.15 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "396.93 256.86 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "396.93 257.51 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "396.93 258.15 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "396.28 257.51 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 432.28 253.19 cm" + "/Form3 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "431.63 256.86 Td" + "\"120 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "431.63 257.51 Td" + "\"120 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "431.63 258.15 Td" + "\"120 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "432.28 256.86 Td" + "\"120 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "432.28 258.15 Td" + "\"120 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "432.93 256.86 Td" + "\"120 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "432.93 257.51 Td" + "\"120 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "432.93 258.15 Td" + "\"120 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "432.28 257.51 Td" + "\"120 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 468.28 253.19 cm" + "/Form4 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "467.63 256.86 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "467.63 257.51 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "467.63 258.15 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "468.28 256.86 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "468.28 258.15 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "468.93 256.86 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "468.93 257.51 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "468.93 258.15 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "468.28 257.51 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 504.28 253.19 cm" + "/Form5 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "503.63 256.86 Td" + "\"Conc, 2 hrs\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "503.63 257.51 Td" + "\"Conc, 2 hrs\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "503.63 258.15 Td" + "\"Conc, 2 hrs\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "504.28 256.86 Td" + "\"Conc, 2 hrs\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "504.28 258.15 Td" + "\"Conc, 2 hrs\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "504.93 256.86 Td" + "\"Conc, 2 hrs\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "504.93 257.51 Td" + "\"Conc, 2 hrs\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "504.93 258.15 Td" + "\"Conc, 2 hrs\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "504.28 257.51 Td" + "\"Conc, 2 hrs\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.02 0.00 0.00 0.02 553.24 46.54 cm" + "/Form6 Do" + "Q" + "BT" + "/F2 8.00 Tf" + "216.28 217.18 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de0003016b018d013301de0143000301180003013401c10143011801d601de01c10143000301fc019b01de000301d6019b01de01340166000301f6016b01d60166000301be019b01c9016b01d6016b01f50143 Tj" + "0.00 -8.80 Td" + "#hex:0143018f014301c1015e01fc000301d6019b000301de018f013b019b000301180003013b01430133016b0184016b01d6011801d6016b018f015e0003014302480143013401d60608000300e6019b01de000301340118018f Tj" + "0.00 -8.80 Td" + "#hex:01c10143013b01de01340143000301d601660143000301d6011801c1015e014301d6060c01c90003014301fb0166011801de01c901d6016b019b018f00030184014301f5014301840003013301fc0003019b018f014305fc0003019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:0143018f013b0003019b018f01430003019b015d000301d6016601430003015d019b01840184019b01f6016b018f015e0003014302480143013401d601c90003019b018f000301d601660143000301d6011801c1015e014301d605fb000305f8 Tj" + "0.00 -8.80 Td" + "#hex:0086018f01430003014302480143013401d6000301d60166011801d6000301340166011801c1018d0143013b0003019b01c1000301be014301d601c1016b025b0143013b000301d601660143000301d6011801c1015e014301d6 Tj" + "0.00 -8.80 Td" + "#hex:05f800030086018f01430003013401de01c101c9014305fc0003016b018f0134018401de013b016b018f015e000301d601660143000301d6011801c1015e014301d6060c01c90003011801d601d601de018f0143018d0143018f01d6 Tj" + "0.00 -8.80 Td" + "#hex:01d6019b000301180003013401de01c101c90143013b0003018d0118015e016b01340003016b01d60143018d000305f800030004018f01fc000301c10143013b01de013401d6016b019b018f000301d6019b0003019b018f0143 Tj" + "0.00 -8.80 Td" + "#hex:019b015d000301d601660143000301d6011801c1015e014301d6060c01c9000301180133016b0184016b01d601fc000301c90134019b01c1014301c9000305f800030086018f01430003014302480143013401d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10143013b01de0134016b018f015e000301d601660143000301d6011801c1015e014301d6060c01c900030166016b01d6000301be019b016b018f01d60003018d011801fb016b018d01de018d Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "216.28 255.35 Td" + "0.00 -8.80 Td" + "#hex:002701a0014d01c201d001c4017000030170021301fe020b0003022b01d001f6020b019b0003014d020b000301b90178014d01fe020b000303fa03f903f90003019301f304760003022b019b01a00169019b0003020b019b0178000301fe01f3017801b901b9 Tj" + "0.00 -8.80 Td" + "#hex:016901d001c401fe021301c2017801fe Tj" + "ET" + "q" + "13.20 0.00 0.00 18.00 373.84 275.51 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 10.00 Tf" + "216.28 294.95 Td" + "0.00 -11.00 Td" + "#hex:004b01c10143011801d6014301c1000300ac014301c901d6019b01c1011801d6016b019b018f Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "310.80 294.95 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "216.28 281.27 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303fe00030004016801b2021301f6014d020b01a001d001c4 Tj" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 216.28 253.19 cm" + "/Form2 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "215.63 256.86 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "215.63 257.51 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "215.63 258.15 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "216.28 256.86 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "216.28 258.15 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "216.93 256.86 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "216.93 257.51 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "216.93 258.15 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "216.28 257.51 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 252.28 253.19 cm" + "/Form3 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "251.63 256.86 Td" + "\"Touch\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "251.63 257.51 Td" + "\"Touch\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "251.63 258.15 Td" + "\"Touch\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "252.28 256.86 Td" + "\"Touch\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "252.28 258.15 Td" + "\"Touch\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "252.93 256.86 Td" + "\"Touch\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "252.93 257.51 Td" + "\"Touch\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "252.93 258.15 Td" + "\"Touch\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "252.28 257.51 Td" + "\"Touch\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 288.28 253.19 cm" + "/Form4 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "287.63 256.86 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "287.63 257.51 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "287.63 258.15 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "288.28 256.86 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "288.28 258.15 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "288.93 256.86 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "288.93 257.51 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "288.93 258.15 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "288.28 257.51 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 324.28 253.19 cm" + "/Form5 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "323.63 256.86 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "323.63 257.51 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "323.63 258.15 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "324.28 256.86 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "324.28 258.15 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "324.93 256.86 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "324.93 257.51 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "324.93 258.15 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "324.28 257.51 Td" + "\"Inst\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F2 8.00 Tf" + "36.28 217.18 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de000301be01de01840184000301f6016b01c901be01c90003019b015d000301c901660118013b019b01f60003018d011801d6014301c1016b011801840003015d01c1019b018d000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:00b401660118013b019b01f6015d014301840184000301d6019b0003013401c10143011801d60143000301180003018f019b018f0184016b01f5016b018f015e0003019b0133017d0143013401d60003019b015d Tj" + "0.00 -8.80 Td" + "#hex:01f50143015e014301d601180133018401430003018d011801d601d6014301c1000301f6016b01d60166016b018f000301c10118018f015e014305fb000301c9019b025e0003015e019b019b013b01c905fc Tj" + "0.00 -8.80 Td" + "#hex:01c1019b01be014305fc000301f6019b019b013b05fc0003019b01c1000301c9019b018d014301d60166016b018f015e000301c9016b018d016b0184011801c10608000300e6019b01de000301340118018f00030118018401c9019b Tj" + "0.00 -8.80 Td" + "#hex:01de01c90143000301d60166016b01c9000301c901be014301840184000301d6019b0003013401c10143011801d601430003018d016b018f014301c1011801840003019b0133017d0143013401d601c9000301c901de013401660003011801c9 Tj" + "0.00 -8.80 Td" + "#hex:01c901d6019b018f014305fc0003013401c101fc01c901d60118018405fc0003019b01c10003018d014301d6011801840608000300c1016601430003019b0133017d0143013401d60003013401c10143011801d60143013b Tj" + "0.00 -8.80 Td" + "#hex:018d01de01c901d60003013301430003018f019b00030184011801c1015e014301c1000301d601660118018f000301180003056e06400003015d019b019b01d60003013401de0133014305fc00030118018f013b000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:019b0133017d0143013401d60003018d01de01c901d60003013301430003019b015d000301180003015d019b01c1018d00030118018f013b0003018d011801d6014301c1016b01180184000301d60166011801d6000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:0166011801f50143000301c901430143018f000301330143015d019b01c101430608000300c1016601430003013b01de01c1011801d6016b019b018f0003013b014301be0143018f013b01c90003019b018f000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:019b0133017d0143013401d6060c01c90003018d011801d6014301c1016b01180184060800030058015d000301d6016601430003019b0133017d0143013401d60003016b01c900030134019b018d01be019b01c90143013b0003019b015d Tj" + "0.00 -8.80 Td" + "#hex:018d01de018401d6016b01be018401430003018d011801d6014301c1016b0118018401c905fc000301de01c90143000301d601660143000301c90166019b01c101d6014301c901d60003013b01de01c1011801d6016b019b018f0608 Tj" + "0.00 -8.80 Td" + "#hex:0078011801d6014301c1016b011801840003002701de01c1011801d6016b019b018f000300df0143015e014301d601180133018401430003018d011801d601d6014301c10003056a0003013b011801fc Tj" + "0.00 -8.80 Td" + "#hex:00b401d6019b018f01430003019b01c10003013401c101fc01c901d6011801840003056a056b00030166019b01de01c101c9000300a901c101430134016b019b01de01c90003018d014301d60118018401c90003056a Tj" + "0.00 -8.80 Td" + "#hex:0166019b01de01c10003004b0143018d01c90003056a05690003018d016b018f01de01d6014301c900030004013b0118018d0118018f01d6016b018f01430003019b01c10003018d016b01d6016601c101180184 Tj" + "0.00 -8.80 Td" + "#hex:056a0003018d016b018f01de01d60143000300c801c9016b018f015e00030118018f01fc0003018d011801d6014301c1016b011801840003013401c10143011801d60143013b0003013301fc000301d60166016b01c9 Tj" + "0.00 -8.80 Td" + "#hex:01c901be0143018401840003011801c900030118018f019b01d60166014301c1000301c901be014301840184060c01c90003018d011801d6014301c1016b0118018400030134019b018d01be019b018f0143018f01d6 Tj" + "0.00 -8.80 Td" + "#hex:0134011801de01c9014301c9000301d60166011801d6000301c901be014301840184000301d6019b0003015d0118016b018406080003000401d600030053016b015e0166014301c10003006e014301f50143018401c90608 Tj" + "0.00 -8.80 Td" + "#hex:00e001660143018f000301fc019b01de00030134011801c901d6000301d60166016b01c9000301c901be014301840184000301de01c9016b018f015e00030118000301c901be014301840184000301c90184019b01d60003019b015d Tj" + "0.00 -8.80 Td" + "#hex:056f01d6016600030184014301f5014301840003019b01c100030166016b015e0166014301c105fc000301d6016601430003013401de013301430003016b018f013401c10143011801c9014301c90003013301fc0003056e0003015d0143014301d6 Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "36.28 255.35 Td" + "0.00 -8.80 Td" + "#hex:00040003020b01a001c40231000301f301a0017801690178000301d00192000301c2014d020b020b017801f6000301d001920003020b019b0178000301fe014d01c201780003020b023101f30178000301d001920003020b019b0178000301a0020b017801c20003023101d00213 Tj" + "0.00 -8.80 Td" + "#hex:01f301b9014d01c40003020b01d00003016901f60178014d020b0178 Tj" + "ET" + "q" + "13.20 0.00 0.00 18.00 193.84 275.51 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 10.00 Tf" + "36.28 294.95 Td" + "0.00 -11.00 Td" + "#hex:002001c10143011801d6016b019b018f Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "77.81 294.95 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "36.28 281.27 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303fe0003005801b901b9021301fe01a001d001c4 Tj" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 36.28 253.19 cm" + "/Form2 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "35.63 256.86 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "35.63 257.51 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "35.63 258.15 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "36.28 256.86 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "36.28 258.15 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "36.93 256.86 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "36.93 257.51 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "36.93 258.15 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "36.28 257.51 Td" + "\"1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 72.28 253.19 cm" + "/Form3 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "71.63 256.86 Td" + "\"30 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "71.63 257.51 Td" + "\"30 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "71.63 258.15 Td" + "\"30 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "72.28 256.86 Td" + "\"30 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "72.28 258.15 Td" + "\"30 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "72.93 256.86 Td" + "\"30 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "72.93 257.51 Td" + "\"30 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "72.93 258.15 Td" + "\"30 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "72.28 257.51 Td" + "\"30 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 108.28 253.19 cm" + "/Form4 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "107.63 256.86 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "107.63 257.51 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "107.63 258.15 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "108.28 256.86 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "108.28 258.15 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "108.93 256.86 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "108.93 257.51 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "108.93 258.15 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "108.28 257.51 Td" + "\"V,S,M\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 144.28 253.19 cm" + "/Form5 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "143.63 256.86 Td" + "\"Special\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "143.63 257.51 Td" + "\"Special\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "143.63 258.15 Td" + "\"Special\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "144.28 256.86 Td" + "\"Special\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "144.28 258.15 Td" + "\"Special\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "144.93 256.86 Td" + "\"Special\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "144.93 257.51 Td" + "\"Special\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "144.93 258.15 Td" + "\"Special\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "144.28 257.51 Td" + "\"Special\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.02 0.00 0.00 0.02 193.24 46.54 cm" + "/Form6 Do" + "Q"] + ["0.88 0.88 0.88 RG" + "27.64 42.94 m" + "27.64 798.95 l" + "S" + "207.64 42.94 m" + "207.64 798.95 l" + "S" + "387.64 42.94 m" + "387.64 798.95 l" + "S" + "567.64 42.94 m" + "567.64 798.95 l" + "S" + "27.64 42.94 m" + "567.64 42.94 l" + "S" + "27.64 294.95 m" + "567.64 294.95 l" + "S" + "27.64 546.95 m" + "567.64 546.95 l" + "S" + "27.64 798.95 m" + "567.64 798.95 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 831.09 Td" + "#hex:00a9014d01930178000303fa000304a201f60178022a017801f601fe017804a3 Tj" + "ET" + "BT" + "/F2 10.00 Tf" + "36.28 793.18 Td" + "0.00 -11.00 Td" + "#hex:00780118015e016b013400030078019b01de01d60166 Tj" + "ET" + "BT" + "/F3 8.00 Tf" + "36.28 781.66 Td" + "0.00 -8.80 Td" + "#hex:01c1014301be0143011801d60003016b01d601c90003018d014301c901c90118015e0143000301f601660143018f014301f5014301c1000301d601660143000301d601c1016b015e015e014301c1 Tj" + "0.00 -8.80 Td" + "#hex:019b0134013401de01c101c90608000300c101660143000301d601c1016b015e015e014301c1016b018f015e00030134016b01c1013401de018d01c901d60118018f01340143000301340118018f0003013301430003011801c9 Tj" + "0.00 -8.80 Td" + "#hex:015e0143018f014301c1011801840003019b01c10003011801c90003013b014301d60118016b01840143013b0003011801c9000301fc019b01de00030184016b0181014305fc000301d60166019b01de015e01660003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:018d01de01c901d600030133014300030133011801c90143013b0003019b018f000301f5016b01c901de011801840003019b01c10003011801de013b016b01330184014300030134019b018f013b016b01d6016b019b018f01c9 Tj" + "0.00 -8.80 Td" + "#hex:01d60166011801d60003019b0134013401de01c1000301f6016b01d60166016b018f0003056c05690003015d0143014301d60003019b015d000301d6016601430003019b0133017d0143013401d606080003004a019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:014301fb0118018d01be0184014305fc000301fc019b01de00030134019b01de0184013b0003016b018f01c901d601c101de013401d6000301d6016601430003018d019b01de01d60166000301d6019b Tj" + "0.00 -8.80 Td" + "#hex:01c901be014301180181000301f601660143018f00030118018f01fc0003013401c10143011801d601de01c101430003018d019b01f5014301c9000301f6016b01d60166016b018f0003056c05690003015d0143014301d6 Tj" + "0.00 -8.80 Td" + "#hex:019b015d000301d6016601430003019b0133017d0143013401d60003019b01c1000301f601660143018f00030118000301c9016b018401f5014301c100030133014301840184000301c1016b018f015e01c9000301f6016b01d60166016b018f Tj" + "0.00 -8.80 Td" + "#hex:056c05690003015d0143014301d60003019b015d0003016b01d60608 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "101.26 793.18 Td" + "0.00 -11.00 Td" + "#hex:04a201f60178022a017801f601fe017804a3 Tj" + "ET" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "82.65 558.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 45.64 348.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "82.65 306.46 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F2 10.00 Tf" + "36.28 289.18 Td" + "0.00 -11.00 Td" + "#hex:0078019b01f5014300030031011801c101d60166 Tj" + "ET" + "BT" + "/F3 8.00 Tf" + "36.28 277.67 Td" + "0.00 -8.80 Td" + "#hex:01c901d6019b018f01430003019b01c1000301c901d6019b018f014300030134019b018f01c901d601c101de013401d6016b019b018f0608000300ac019b0134018101c900030118018f013b Tj" + "0.00 -8.80 Td" + "#hex:01c901d601c101de013401d601de01c1014301c9000301c90166016b025e000301d6019b0003011801340134019b018d018d019b013b011801d60143000301d6016601430003018f014301f6 Tj" + "0.00 -8.80 Td" + "#hex:01d6014301c101c10118016b018f060800030058015d000301d601660143000301f6011801fc000301fc019b01de000301c90166011801be0143000301d601660143000301d6014301c101c10118016b018f000301f6019b01de0184013b Tj" + "0.00 -8.80 Td" + "#hex:018d01180181014300030118000301c901d601c101de013401d601de01c10143000301de018f01c901d6011801330184014305fc0003016b01d60003018d016b015e016601d600030134019b01840184011801be01c901430608 Tj" + "0.00 -8.80 Td" + "#hex:00b4016b018d016b0184011801c1018401fc05fc000301d60166016b01c9000301c901be0143018401840003013b019b014301c9018f060c01d60003013b016b01c10143013401d6018401fc0003011802480143013401d6 Tj" + "0.00 -8.80 Td" + "#hex:01be01840118018f01d60003015e01c1019b01f601d601660608000300c1016601430003018d019b01f50143013b00030143011801c101d6016600030134011801c101c1016b014301c900030118018f01fc Tj" + "0.00 -8.80 Td" + "#hex:01be01840118018f01d601c9000301180184019b018f015e000301f6016b01d601660003016b01d60608 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "93.45 289.18 Td" + "0.00 -11.00 Td" + "#hex:04a201f60178022a017801f601fe017804a3 Tj" + "ET" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "82.65 54.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 225.64 600.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "262.65 558.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 225.64 348.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "262.65 306.46 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 225.64 96.94 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "262.65 54.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 405.64 600.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "442.65 558.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F2 10.00 Tf" + "396.28 541.18 Td" + "0.00 -11.00 Td" + "#hex:0004018f016b018d011801d601430003002701430118013b Tj" + "ET" + "BT" + "/F3 8.00 Tf" + "396.28 529.66 Td" + "0.00 -8.80 Td" + "#hex:0118015e0118016b018f01c901d600030166019b01c901d6016b018401430003013401c10143011801d601de01c1014301c9060800030086018f013401430003015e016b01f50143018f00030118018f0003019b01c1013b014301c105fc Tj" + "0.00 -8.80 Td" + "#hex:01d6016601430003013401c10143011801d601de01c1014300030134019b018f01d6016b018f01de014301c9000301d6019b0003015d019b01840184019b01f60003016b01d6000301de018f01d6016b01840003016b01d601c9000301d6011801c90181 Tj" + "0.00 -8.80 Td" + "#hex:016b01c900030134019b018d01be0184014301d601430608000300c1016601430003013401c10143011801d601de01c101430003016b01c9000301de018f013b014301c1000301fc019b01de01c100030134019b018f01d601c1019b0184 Tj" + "0.00 -8.80 Td" + "#hex:015d019b01c10003056b056d00030166019b01de01c101c905fc00030118025e014301c1000301f60166016b013401660003016b01d6000301c901d6019b01be01c90003019b0133014301fc016b018f015e00030118018f01fc Tj" + "0.00 -8.80 Td" + "#hex:0134019b018d018d0118018f013b000301fc019b01de060c01f501430003015e016b01f50143018f0003016b01d60608000300c1019b0003018d0118016b018f01d60118016b018f00030134019b018f01d601c1019b0184 Tj" + "0.00 -8.80 Td" + "#hex:019b015d000301d6016601430003013401c10143011801d601de01c101430003015d019b01c100030118018f019b01d60166014301c10003056b056d00030166019b01de01c101c905fc000301fc019b01de0003018d01de01c901d6 Tj" + "0.00 -8.80 Td" + "#hex:0134011801c901d6000301d60166016b01c9000301c901be0143018401840003019b018f000301d6016601430003013401c10143011801d601de01c1014300030118015e0118016b018f000301330143015d019b01c10143000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:013401de01c101c10143018f01d60003056b056d06400166019b01de01c1000301be014301c1016b019b013b00030143018f013b01c90608000300c10166016b01c9000301de01c901430003019b015d000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01c901be014301840184000301c10143011801c901c9014301c101d601c9000301fc019b01de01c100030134019b018f01d601c1019b01840003019b01f5014301c1000301de01be000301d6019b0003015d019b01de01c1 Tj" + "0.00 -8.80 Td" + "#hex:013401c10143011801d601de01c1014301c9000301fc019b01de00030166011801f5014300030118018f016b018d011801d60143013b000301f6016b01d60166000301d60166016b01c9000301c901be01430184018405fc Tj" + "0.00 -8.80 Td" + "#hex:01c1011801d60166014301c1000301d601660118018f00030118018f016b018d011801d6016b018f015e000301180003018f014301f60003019b018f014306080003000401d600030053016b015e0166014301c1 Tj" + "0.00 -8.80 Td" + "#hex:006e014301f50143018401c90608000300e001660143018f000301fc019b01de00030134011801c901d6000301d60166016b01c9000301c901be014301840184000301de01c9016b018f015e00030118000301c901be014301840184 Tj" + "0.00 -8.80 Td" + "#hex:01c90184019b01d60003019b015d0003056d01d6016600030184014301f5014301840003019b01c100030166016b015e0166014301c105fc000301fc019b01de00030118018f016b018d011801d601430003019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:01c10143011801c901c9014301c101d600030134019b018f01d601c1019b01840003019b01f5014301c1000301d601f6019b00030118013b013b016b01d6016b019b018f01180184000301de018f013b01430118013b Tj" + "0.00 -8.80 Td" + "#hex:013401c10143011801d601de01c1014301c90003015d019b01c100030143011801340166000301c90184019b01d600030184014301f501430184000301180133019b01f501430003056c01c1013b0608000300310118013401660003019b015d Tj" + "0.00 -8.80 Td" + "#hex:01d6016601430003013401c10143011801d601de01c1014301c90003018d01de01c901d600030134019b018d01430003015d01c1019b018d000301180003013b016b0248014301c10143018f01d6 Tj" + "0.00 -8.80 Td" + "#hex:0134019b01c101be01c901430003019b01c1000301be016b018401430003019b015d00030133019b018f014301c90608 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "465.95 541.18 Td" + "0.00 -11.00 Td" + "#hex:04a201f60178022a017801f601fe017804a3 Tj" + "ET" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "442.65 306.46 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F2 10.00 Tf" + "396.28 289.18 Td" + "0.00 -11.00 Td" + "#hex:002001c10143011801d6016b019b018f Tj" + "ET" + "BT" + "/F3 8.00 Tf" + "396.28 277.67 Td" + "0.00 -8.80 Td" + "#hex:015d019b01c100030143011801340166000301c90184019b01d600030184014301f501430184000301180133019b01f501430003056e01d601660608 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "439.97 289.18 Td" + "0.00 -11.00 Td" + "#hex:04a201f60178022a017801f601fe017804a3 Tj" + "ET" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "442.65 54.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET"] + ["0.88 0.88 0.88 RG" + "27.64 42.94 m" + "27.64 798.95 l" + "S" + "207.64 42.94 m" + "207.64 798.95 l" + "S" + "387.64 42.94 m" + "387.64 798.95 l" + "S" + "567.64 42.94 m" + "567.64 798.95 l" + "S" + "27.64 42.94 m" + "567.64 42.94 l" + "S" + "27.64 294.95 m" + "567.64 294.95 l" + "S" + "27.64 546.95 m" + "567.64 546.95 l" + "S" + "27.64 798.95 m" + "567.64 798.95 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 831.09 Td" + "#hex:00a9014d01930178000303fb Tj" + "ET" + "BT" + "/F2 8.00 Tf" + "396.28 721.18 Td" + "0.00 -8.80 Td" + "#hex:000400030134016601de01c1018f016b018f015e000301c901d6019b01c1018d000301340184019b01de013b0003015d019b01c1018d01c905fc000301340143018f01d6014301c10143013b0003019b018f00030118 Tj" + "0.00 -8.80 Td" + "#hex:01be019b016b018f01d6000301fc019b01de000301340118018f000301c90143014300030118018f013b000301c901be01c101430118013b016b018f015e000301d6019b00030118000301c10118013b016b01de01c90003019b015d Tj" + "0.00 -8.80 Td" + "#hex:056c056f05690003015d0143014301d606080003006e016b015e016601d6018f016b018f015e0003025d011801c90166014301c90003016b018f000301d6016601430003011801c10143011805fc000301d6016601de018f013b014301c1 Tj" + "0.00 -8.80 Td" + "#hex:0133019b019b018d01c905fc00030118018f013b000301c901d601c1019b018f015e000301f6016b018f013b01c9000301c1019b011801c10608000300310118013401660003013401c10143011801d601de01c10143 Tj" + "0.00 -8.80 Td" + "#hex:01de018f013b014301c1000301d601660143000301340184019b01de013b00030628018f019b0003018d019b01c10143000301d601660118018f0003056e05fc0569056905690003015d0143014301d6 Tj" + "0.00 -8.80 Td" + "#hex:01330143018f0143011801d60166000301d601660143000301340184019b01de013b0629000301f601660143018f0003016b01d60003011801be01be0143011801c101c90003018d01de01c901d60003018d011801810143 Tj" + "0.00 -8.80 Td" + "#hex:011800030020019b018f01c901d6016b01d601de01d6016b019b018f000301c9011801f5016b018f015e000301d6016601c1019b01f6060800030086018f000301180003015d0118016b01840143013b000301c9011801f5014305fc Tj" + "0.00 -8.80 Td" + "#hex:01180003013401c10143011801d601de01c10143000301d601180181014301c90003056b013b056f000301d6016601de018f013b014301c10003013b0118018d0118015e014300030118018f013b Tj" + "0.00 -8.80 Td" + "#hex:013301430134019b018d014301c90003013b01430118015d0143018f0143013b0003015d019b01c10003056e0003018d016b018f01de01d6014301c9060800030031011801340166000301c1019b01de018f013b Tj" + "0.00 -8.80 Td" + "#hex:01fc019b01de0003018d0118016b018f01d60118016b018f00030134019b018f01340143018f01d601c1011801d6016b019b018f0003019b018f000301d60166016b01c9000301c901be01430184018405fc000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01c901d6019b01c1018d000301be01c1019b013b01de0134014301c900030118013b013b016b01d6016b019b018f011801840003014302480143013401d601c90003019b018f000301fc019b01de01c1 Tj" + "0.00 -8.80 Td" + "#hex:01d601de01c1018f0608000300ac019b01de018f013b0003056b0608000300040134016b013b016b0134000301c10118016b018f0003015d01180184018401c90003015d01c1019b018d000301d601660143000301340184019b01de013b0608 Tj" + "0.00 -8.80 Td" + "#hex:00310118013401660003013401c10143011801d601de01c1014300030118018f013b0003019b0133017d0143013401d6000301de018f013b014301c1000301d601660143000301340184019b01de013b000301d601180181014301c9 Tj" + "0.00 -8.80 Td" + "#hex:056a013b056f000301180134016b013b0003013b0118018d0118015e01430608000300ac019b01de018f013b0003056c0608000300e6019b01de00030134011801840184000301c9016b01fb00030133019b018401d601c90003019b015d Tj" + "0.00 -8.80 Td" + "#hex:0184016b015e016601d6018f016b018f015e0003015d01c1019b018d000301d601660143000301340184019b01de013b000301d6019b000301c901d601c1016b01810143000301c9016b01fb0003013401c10143011801d601de01c1014301c9 Tj" + "0.00 -8.80 Td" + "#hex:019b01c10003019b0133017d0143013401d601c90003019b015d000301fc019b01de01c1000301340166019b016b01340143000301330143018f0143011801d60166000301d601660143000301340184019b01de013b060800030004 Tj" + "0.00 -8.80 Td" + "#hex:015e016b01f50143018f0003013401c10143011801d601de01c101430003019b01c10003019b0133017d0143013401d6000301340118018f060c01d6000301330143000301c901d601c101de013401810003013301fc Tj" + "0.00 -8.80 Td" + "#hex:018d019b01c10143000301d601660118018f0003019b018f014300030133019b018401d6060800030004000301c901d601c101de013401810003013401c10143011801d601de01c101430003018d01de01c901d6 Tj" + "0.00 -8.80 Td" + "#hex:018d0118018101430003011800030027014301fb01d6014301c1016b01d601fc000301c9011801f5016b018f015e000301d6016601c1019b01f60608000300c1016601430003013401c10143011801d601de01c10143 Tj" + "ET" + "q" + "13.20 0.00 0.00 18.00 553.84 779.51 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 10.00 Tf" + "396.28 798.95 Td" + "0.00 -11.00 Td" + "#hex:00b401d6019b01c1018d0003019b015d000300df0143018f015e01430118018f01340143 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "490.91 798.95 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "396.28 785.27 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000304020003002001d001c401b2021301f6014d020b01a001d001c4 Tj" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 396.28 757.18 cm" + "/Form2 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "395.63 760.86 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "395.63 761.51 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "395.63 762.15 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "396.28 760.86 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "396.28 762.15 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "396.93 760.86 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "396.93 761.51 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "396.93 762.15 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "396.28 761.51 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 432.28 757.18 cm" + "/Form3 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "431.63 760.86 Td" + "\"Sight\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "431.63 761.51 Td" + "\"Sight\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "431.63 762.15 Td" + "\"Sight\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "432.28 760.86 Td" + "\"Sight\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "432.28 762.15 Td" + "\"Sight\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "432.93 760.86 Td" + "\"Sight\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "432.93 761.51 Td" + "\"Sight\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "432.93 762.15 Td" + "\"Sight\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "432.28 761.51 Td" + "\"Sight\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 468.28 757.18 cm" + "/Form4 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "467.63 760.86 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "467.63 761.51 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "467.63 762.15 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "468.28 760.86 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "468.28 762.15 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "468.93 760.86 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "468.93 761.51 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "468.93 762.15 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "468.28 761.51 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 504.28 757.18 cm" + "/Form5 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "503.63 760.86 Td" + "\"Conc, 1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "503.63 761.51 Td" + "\"Conc, 1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "503.63 762.15 Td" + "\"Conc, 1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "504.28 760.86 Td" + "\"Conc, 1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "504.28 762.15 Td" + "\"Conc, 1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "504.93 760.86 Td" + "\"Conc, 1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "504.93 761.51 Td" + "\"Conc, 1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "504.93 762.15 Td" + "\"Conc, 1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "504.28 761.51 Td" + "\"Conc, 1 min\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.02 0.00 0.00 0.02 553.24 550.54 cm" + "/Form6 Do" + "Q" + "BT" + "/F2 8.00 Tf" + "216.28 721.18 Td" + "0.00 -8.80 Td" + "#hex:00c8018f01d6016b0184000301d601660143000301c901be01430184018400030143018f013b01c905fc000301f601660143018f000301fc019b01de0003018d01180181014300030118 Tj" + "0.00 -8.80 Td" + "#hex:00200166011801c1016b01c9018d011800030134016601430134018105fc000301fc019b01de000301340118018f000301c1014301be0184011801340143000301d6016601430003018f01de018d0133014301c1 Tj" + "0.00 -8.80 Td" + "#hex:01fc019b01de000301c1019b01840184000301f6016b01d60166000301180003056a056e060800030004013b013b016b01d6016b019b018f01180184018401fc05fc0003018f019b0003018d011801d601d6014301c1 Tj" + "0.00 -8.80 Td" + "#hex:01f60166011801d6000301fc019b01de000301c9011801fc05fc0003018d0118015e016b0134000301d60166011801d6000301f6019b01de0184013b0003013b014301d6014301c1018d016b018f01430003016b015d Tj" + "0.00 -8.80 Td" + "#hex:01fc019b01de0003011801c10143000301d6014301840184016b018f015e000301d601660143000301d601c101de01d601660003016b018f013b016b0134011801d6014301c9000301d60166011801d6000301fc019b01de0003011801c10143 Tj" + "0.00 -8.80 Td" + "#hex:01330143016b018f015e000301d601c101de01d60166015d01de01840608 Tj" + "ET" + "q" + "13.20 0.00 0.00 18.00 373.84 779.51 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 10.00 Tf" + "216.28 798.95 Td" + "0.00 -11.00 Td" + "#hex:004b0184016b0133018f014301c901c9 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "257.47 798.95 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "216.28 785.27 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b900030401000300c101f6014d01c401fe01c20213020b014d020b01a001d001c4 Tj" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 216.28 757.18 cm" + "/Form2 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "215.63 760.86 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "215.63 761.51 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "215.63 762.15 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "216.28 760.86 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "216.28 762.15 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "216.93 760.86 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "216.93 761.51 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "216.93 762.15 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "216.28 761.51 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 252.28 757.18 cm" + "/Form3 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "251.63 760.86 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "251.63 761.51 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "251.63 762.15 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "252.28 760.86 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "252.28 762.15 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "252.93 760.86 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "252.93 761.51 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "252.93 762.15 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "252.28 761.51 Td" + "\"Self\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 288.28 757.18 cm" + "/Form4 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "287.63 760.86 Td" + "\"V\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "287.63 761.51 Td" + "\"V\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "287.63 762.15 Td" + "\"V\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "288.28 760.86 Td" + "\"V\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "288.28 762.15 Td" + "\"V\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "288.93 760.86 Td" + "\"V\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "288.93 761.51 Td" + "\"V\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "288.93 762.15 Td" + "\"V\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "288.28 761.51 Td" + "\"V\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 324.28 757.18 cm" + "/Form5 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "323.63 760.86 Td" + "\"1 hr\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "323.63 761.51 Td" + "\"1 hr\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "323.63 762.15 Td" + "\"1 hr\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "324.28 760.86 Td" + "\"1 hr\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "324.28 762.15 Td" + "\"1 hr\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "324.93 760.86 Td" + "\"1 hr\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "324.93 761.51 Td" + "\"1 hr\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "324.93 762.15 Td" + "\"1 hr\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "324.28 761.51 Td" + "\"1 hr\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F2 8.00 Tf" + "36.28 721.18 Td" + "0.00 -8.80 Td" + "#hex:00c10166016b01c9000301c901be0143018401840003013401c10143011801d6014301c9000301180003018d0118015e016b01340118018400030184016b018f018100030133014301d601f601430143018f00030118 Tj" + "0.00 -8.80 Td" + "#hex:006e011801c1015e01430003019b01c100030184011801c1015e014301c10003016b018f0118018f016b018d011801d60143000301be01840118018f01d6000301f6016b01d60166016b018f000301c10118018f015e0143 Tj" + "0.00 -8.80 Td" + "#hex:0118018f013b00030118018f019b01d60166014301c1000301be01840118018f01d605fc0003011801d600030118018f01fc0003013b016b01c901d60118018f0134014305fc0003019b018f000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01c90118018d0143000301be01840118018f01430003019b015d0003014301fb016b01c901d60143018f013401430608000300e6019b01de0003018d01de01c901d600030166011801f50143000301c901430143018f Tj" + "0.00 -8.80 Td" + "#hex:019b01c1000301d6019b01de013401660143013b000301d6016601430003013b014301c901d6016b018f011801d6016b019b018f000301be01840118018f01d60003011801d6000301840143011801c901d60003019b018f01340143 Tj" + "0.00 -8.80 Td" + "#hex:01330143015d019b01c1014306080003004a019b01c1000301d6016601430003013b01de01c1011801d6016b019b018f05fc00030118018f01fc0003013401c10143011801d601de01c10143000301340118018f000301c901d6014301be Tj" + "0.00 -8.80 Td" + "#hex:016b018f01d6019b000301d601660143000301d6011801c1015e014301d6000301be01840118018f01d600030118018f013b0003014301fb016b01d60003015d01c1019b018d000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:013b014301c901d6016b018f011801d6016b019b018f000301be01840118018f01d60003013301fc000301de01c9016b018f015e0003056e0003015d0143014301d60003019b015d0003018d019b01f50143018d0143018f01d60608 Tj" + "ET" + "q" + "13.20 0.00 0.00 18.00 193.84 779.51 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 10.00 Tf" + "36.28 798.95 Td" + "0.00 -11.00 Td" + "#hex:00c101c10118018f01c901be019b01c101d6000301f5016b0118000300a901840118018f01d601c9 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "134.10 798.95 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "36.28 785.27 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303ff0003002001d001c401b2021301f6014d020b01a001d001c4 Tj" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 36.28 757.18 cm" + "/Form2 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "35.63 760.86 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "35.63 761.51 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "35.63 762.15 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "36.28 760.86 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "36.28 762.15 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "36.93 760.86 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "36.93 761.51 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "36.93 762.15 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "36.28 761.51 Td" + "\"1 Act.\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 72.28 757.18 cm" + "/Form3 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "71.63 760.86 Td" + "\"10 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "71.63 761.51 Td" + "\"10 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "71.63 762.15 Td" + "\"10 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "72.28 760.86 Td" + "\"10 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "72.28 762.15 Td" + "\"10 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "72.93 760.86 Td" + "\"10 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "72.93 761.51 Td" + "\"10 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "72.93 762.15 Td" + "\"10 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "72.28 761.51 Td" + "\"10 ft\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 108.28 757.18 cm" + "/Form4 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "107.63 760.86 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "107.63 761.51 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "107.63 762.15 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "108.28 760.86 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "108.28 762.15 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "108.93 760.86 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "108.93 761.51 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "108.93 762.15 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "108.28 761.51 Td" + "\"V,S\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 144.28 757.18 cm" + "/Form5 Do" + "Q" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "143.63 760.86 Td" + "\"1 Rnd\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "143.63 761.51 Td" + "\"1 Rnd\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "143.63 762.15 Td" + "\"1 Rnd\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "144.28 760.86 Td" + "\"1 Rnd\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "144.28 762.15 Td" + "\"1 Rnd\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "144.93 760.86 Td" + "\"1 Rnd\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "144.93 761.51 Td" + "\"1 Rnd\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "1.00 1.00 1.00 rg" + "144.93 762.15 Td" + "\"1 Rnd\" Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F4 8.00 Tf" + "0.00 0.00 0.00 rg" + "144.28 761.51 Td" + "\"1 Rnd\" Tj" + "0.00 0.00 0.00 rg" + "ET"] + ["0.88 0.88 0.88 RG" + "27.64 42.94 m" + "27.64 798.95 l" + "S" + "207.64 42.94 m" + "207.64 798.95 l" + "S" + "387.64 42.94 m" + "387.64 798.95 l" + "S" + "567.64 42.94 m" + "567.64 798.95 l" + "S" + "27.64 42.94 m" + "567.64 42.94 l" + "S" + "27.64 294.95 m" + "567.64 294.95 l" + "S" + "27.64 546.95 m" + "567.64 546.95 l" + "S" + "27.64 798.95 m" + "567.64 798.95 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 831.09 Td" + "#hex:00a9014d01930178000303fb000304a201f60178022a017801f601fe017804a3 Tj" + "ET" + "BT" + "/F2 10.00 Tf" + "36.28 793.18 Td" + "0.00 -11.00 Td" + "#hex:00b401d6019b01c1018d0003019b015d000300df0143018f015e01430118018f01340143 Tj" + "ET" + "BT" + "/F3 8.00 Tf" + "36.28 781.66 Td" + "0.00 -8.80 Td" + "#hex:01d601180181014301c90003056a0569013b056f00030184016b015e016601d6018f016b018f015e0003013b0118018d0118015e01430003019b018f000301180003015d0118016b01840143013b000301c9011801f5014305fc Tj" + "0.00 -8.80 Td" + "#hex:019b01c10003016601180184015d0003011801c90003018d01de013401660003013b0118018d0118015e01430003019b018f00030118000301c901de01340134014301c901c9015d01de01840003019b018f01430608 Tj" + "0.00 -8.80 Td" + "#hex:00ac019b01de018f013b0003056d0608000300530118016b018401c901d6019b018f014301c9000301c10118016b018f0003013b019b01f6018f0003015d01c1019b018d000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01340184019b01de013b0608000300310118013401660003013401c10143011801d601de01c10143000301de018f013b014301c1000301d601660143000301340184019b01de013b000301d601180181014301c90003056b013b056f Tj" + "0.00 -8.80 Td" + "#hex:0133018401de013b015e0143019b018f016b018f015e0003013b0118018d0118015e01430608000300ac019b01de018f013b0003056e063d056a056906080003004b01de01c901d601c900030118018f013b Tj" + "0.00 -8.80 Td" + "#hex:015d01c1014301430206016b018f015e000301c10118016b018f0003011801c901c90118016b0184000301d6016601430003011801c101430118000301de018f013b014301c1000301d601660143000301340184019b01de013b0608 Tj" + "0.00 -8.80 Td" + "#hex:00c1016601430003011801c1014301180003013301430134019b018d014301c90003013b016b0249013401de018401d6000301d6014301c101c10118016b018f00030118018f013b0003016b01c9 Tj" + "0.00 -8.80 Td" + "#hex:01660143011801f5016b018401fc0003019b013301c9013401de01c10143013b0608000300310118013401660003013401c10143011801d601de01c10143000301d60166014301c10143000301d601180181014301c9 Tj" + "0.00 -8.80 Td" + "#hex:056a013b056f00030134019b0184013b0003013b0118018d0118015e01430608000300ac0118018f015e0143013b000301f60143011801be019b018f0003011801d601d601180134018101c90003016b018f Tj" + "0.00 -8.80 Td" + "#hex:01d6016601430003011801c1014301180003011801c101430003016b018d01be019b01c901c9016b0133018401430608000300c101660143000301f6016b018f013b00030118018f013b000301c10118016b018f Tj" + "0.00 -8.80 Td" + "#hex:0134019b01de018f01d60003011801c900030118000301c9014301f5014301c101430003013b016b01c901d601c10118013401d6016b019b018f0003015d019b01c1000301d601660143000301be01de01c101be019b01c9014301c9 Tj" + "0.00 -8.80 Td" + "#hex:019b015d0003018d0118016b018f01d60118016b018f016b018f015e00030134019b018f01340143018f01d601c1011801d6016b019b018f0003019b018f000301c901be01430184018401c90608 Tj" + "0.00 -8.80 Td" + "#hex:004a016b018f01180184018401fc05fc0003015e01de01c901d601c90003019b015d000301c901d601c1019b018f015e000301f6016b018f013b0003062801c10118018f015e016b018f015e0003015d01c1019b018d0003056b0569 Tj" + "0.00 -8.80 Td" + "#hex:01d6019b0003056e05690003018d016b0184014301c9000301be014301c100030166019b01de01c106290003011801de01d6019b018d011801d6016b013401180184018401fc0003013b016b01c901be014301c101c90143 Tj" + "0.00 -8.80 Td" + "#hex:015d019b015e05fc0003018d016b01c901d601c905fc00030118018f013b000301c9016b018d016b0184011801c1000301be01660143018f019b018d0143018f01180003016b018f000301d6016601430003011801c10143011805fc Tj" + "0.00 -8.80 Td" + "#hex:01f60166014301d60166014301c10003018d01de018f013b0118018f01430003019b01c10003018d0118015e016b0134011801840608 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "133.07 793.18 Td" + "0.00 -11.00 Td" + "#hex:04a201f60178022a017801f601fe017804a3 Tj" + "ET" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "82.65 558.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 45.64 348.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "82.65 306.46 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 45.64 96.94 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "82.65 54.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 225.64 600.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "262.65 558.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 225.64 348.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "262.65 306.46 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 225.64 96.94 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "262.65 54.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 405.64 600.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "442.65 558.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 405.64 348.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "442.65 306.46 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 405.64 96.94 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "442.65 54.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET"] + ["0.88 0.88 0.88 RG" + "27.64 42.94 m" + "27.64 798.95 l" + "S" + "207.64 42.94 m" + "207.64 798.95 l" + "S" + "387.64 42.94 m" + "387.64 798.95 l" + "S" + "567.64 42.94 m" + "567.64 798.95 l" + "S" + "27.64 42.94 m" + "567.64 42.94 l" + "S" + "27.64 294.95 m" + "567.64 294.95 l" + "S" + "27.64 546.95 m" + "567.64 546.95 l" + "S" + "27.64 798.95 m" + "567.64 798.95 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 831.09 Td" + "#hex:00a9014d01930178000303fa Tj" + "ET" + "1.10 w" + "406.36 792.47 m" + "548.92 792.47 l" + "561.16 780.22 l" + "561.16 565.66 l" + "548.92 553.42 l" + "406.36 553.42 l" + "394.12 565.66 l" + "394.12 780.22 l" + "s" + "0.45 w" + "406.36 789.44 m" + "548.92 789.44 l" + "558.14 780.22 l" + "558.14 565.66 l" + "548.92 556.45 l" + "406.36 556.45 l" + "397.14 565.66 l" + "397.14 780.22 l" + "s" + "0.70 w" + "401.68 787.50 m" + "404.27 784.91 l" + "401.68 782.31 l" + "399.09 784.91 l" + "h" + "S" + "553.60 787.50 m" + "556.19 784.91 l" + "553.60 782.31 l" + "551.01 784.91 l" + "h" + "S" + "401.68 563.58 m" + "404.27 560.98 l" + "401.68 558.39 l" + "399.09 560.98 l" + "h" + "S" + "553.60 563.58 m" + "556.19 560.98 l" + "553.60 558.39 l" + "551.01 560.98 l" + "h" + "S" + "1.00 w" + "0.50 w" + "407.80 781.30 m" + "454.60 781.30 l" + "S" + "500.68 781.30 m" + "547.48 781.30 l" + "S" + "0.60 w" + "461.08 784.04 m" + "463.82 781.30 l" + "461.08 778.57 l" + "458.34 781.30 l" + "h" + "f" + "469.36 784.04 m" + "472.10 781.30 l" + "469.36 778.57 l" + "466.62 781.30 l" + "h" + "f" + "477.64 784.04 m" + "480.38 781.30 l" + "477.64 778.57 l" + "474.90 781.30 l" + "h" + "f" + "485.92 784.04 m" + "488.66 781.30 l" + "485.92 778.57 l" + "483.18 781.30 l" + "h" + "S" + "494.20 784.04 m" + "496.94 781.30 l" + "494.20 778.57 l" + "491.46 781.30 l" + "h" + "S" + "1.00 w" + "0.50 w" + "423.64 560.27 m" + "471.52 560.27 l" + "S" + "483.76 560.27 m" + "531.64 560.27 l" + "S" + "477.64 562.57 m" + "479.94 560.27 l" + "477.64 557.96 l" + "475.34 560.27 l" + "h" + "S" + "1.00 w" + "0.70 w" + "538.84 728.03 m" + "544.96 728.03 l" + "547.48 725.51 l" + "547.48 720.10 l" + "544.96 717.59 l" + "538.84 717.59 l" + "536.32 720.10 l" + "536.32 725.51 l" + "s" + "BT" + "/F2 7.00 Tf" + "539.37 720.18 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "407.80 773.03 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc000300b401d601de013b013b0143013b Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "402.04 726.95 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "402.04 711.10 m" + "553.24 711.10 l" + "S" + "0.35 w" + "402.04 708.59 m" + "553.24 708.59 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "402.04 703.91 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "449.36 582.67 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "226.36 792.47 m" + "368.92 792.47 l" + "381.16 780.22 l" + "381.16 565.66 l" + "368.92 553.42 l" + "226.36 553.42 l" + "214.12 565.66 l" + "214.12 780.22 l" + "s" + "0.45 w" + "226.36 789.44 m" + "368.92 789.44 l" + "378.14 780.22 l" + "378.14 565.66 l" + "368.92 556.45 l" + "226.36 556.45 l" + "217.14 565.66 l" + "217.14 780.22 l" + "s" + "0.70 w" + "221.68 787.50 m" + "224.27 784.91 l" + "221.68 782.31 l" + "219.09 784.91 l" + "h" + "S" + "373.60 787.50 m" + "376.19 784.91 l" + "373.60 782.31 l" + "371.01 784.91 l" + "h" + "S" + "221.68 563.58 m" + "224.27 560.98 l" + "221.68 558.39 l" + "219.09 560.98 l" + "h" + "S" + "373.60 563.58 m" + "376.19 560.98 l" + "373.60 558.39 l" + "371.01 560.98 l" + "h" + "S" + "1.00 w" + "0.50 w" + "227.80 781.30 m" + "274.60 781.30 l" + "S" + "320.68 781.30 m" + "367.48 781.30 l" + "S" + "0.60 w" + "281.08 784.04 m" + "283.82 781.30 l" + "281.08 778.57 l" + "278.34 781.30 l" + "h" + "f" + "289.36 784.04 m" + "292.10 781.30 l" + "289.36 778.57 l" + "286.62 781.30 l" + "h" + "f" + "297.64 784.04 m" + "300.38 781.30 l" + "297.64 778.57 l" + "294.90 781.30 l" + "h" + "f" + "305.92 784.04 m" + "308.66 781.30 l" + "305.92 778.57 l" + "303.18 781.30 l" + "h" + "S" + "314.20 784.04 m" + "316.94 781.30 l" + "314.20 778.57 l" + "311.46 781.30 l" + "h" + "S" + "1.00 w" + "0.50 w" + "243.64 560.27 m" + "291.52 560.27 l" + "S" + "303.76 560.27 m" + "351.64 560.27 l" + "S" + "297.64 562.57 m" + "299.94 560.27 l" + "297.64 557.96 l" + "295.34 560.27 l" + "h" + "S" + "1.00 w" + "0.70 w" + "358.84 728.03 m" + "364.96 728.03 l" + "367.48 725.51 l" + "367.48 720.10 l" + "364.96 717.59 l" + "358.84 717.59 l" + "356.32 720.10 l" + "356.32 725.51 l" + "s" + "BT" + "/F2 7.00 Tf" + "359.37 720.18 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "227.80 773.03 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc0003006e0143011801d60166014301c1 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "222.04 726.95 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "222.04 711.10 m" + "373.24 711.10 l" + "S" + "0.35 w" + "222.04 708.59 m" + "373.24 708.59 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "222.04 703.91 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "269.36 582.67 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "46.36 792.47 m" + "188.92 792.47 l" + "201.16 780.22 l" + "201.16 565.66 l" + "188.92 553.42 l" + "46.36 553.42 l" + "34.12 565.66 l" + "34.12 780.22 l" + "s" + "0.45 w" + "46.36 789.44 m" + "188.92 789.44 l" + "198.14 780.22 l" + "198.14 565.66 l" + "188.92 556.45 l" + "46.36 556.45 l" + "37.14 565.66 l" + "37.14 780.22 l" + "s" + "0.70 w" + "41.68 787.50 m" + "44.27 784.91 l" + "41.68 782.31 l" + "39.09 784.91 l" + "h" + "S" + "193.60 787.50 m" + "196.19 784.91 l" + "193.60 782.31 l" + "191.01 784.91 l" + "h" + "S" + "41.68 563.58 m" + "44.27 560.98 l" + "41.68 558.39 l" + "39.09 560.98 l" + "h" + "S" + "193.60 563.58 m" + "196.19 560.98 l" + "193.60 558.39 l" + "191.01 560.98 l" + "h" + "S" + "1.00 w" + "0.50 w" + "47.80 781.30 m" + "94.60 781.30 l" + "S" + "140.68 781.30 m" + "187.48 781.30 l" + "S" + "0.60 w" + "101.08 784.04 m" + "103.82 781.30 l" + "101.08 778.57 l" + "98.34 781.30 l" + "h" + "f" + "109.36 784.04 m" + "112.10 781.30 l" + "109.36 778.57 l" + "106.62 781.30 l" + "h" + "f" + "117.64 784.04 m" + "120.38 781.30 l" + "117.64 778.57 l" + "114.90 781.30 l" + "h" + "f" + "125.92 784.04 m" + "128.66 781.30 l" + "125.92 778.57 l" + "123.18 781.30 l" + "h" + "S" + "134.20 784.04 m" + "136.94 781.30 l" + "134.20 778.57 l" + "131.46 781.30 l" + "h" + "S" + "1.00 w" + "0.50 w" + "63.64 560.27 m" + "111.52 560.27 l" + "S" + "123.76 560.27 m" + "171.64 560.27 l" + "S" + "117.64 562.57 m" + "119.94 560.27 l" + "117.64 557.96 l" + "115.34 560.27 l" + "h" + "S" + "1.00 w" + "0.70 w" + "178.84 728.03 m" + "184.96 728.03 l" + "187.48 725.51 l" + "187.48 720.10 l" + "184.96 717.59 l" + "178.84 717.59 l" + "176.32 720.10 l" + "176.32 725.51 l" + "s" + "BT" + "/F2 7.00 Tf" + "179.37 720.18 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "47.80 773.03 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc000300a90118013b013b0143013b Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "42.04 726.95 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "42.04 711.10 m" + "193.24 711.10 l" + "S" + "0.35 w" + "42.04 708.59 m" + "193.24 708.59 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "42.04 703.91 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "89.36 582.67 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "406.36 540.47 m" + "548.92 540.47 l" + "561.16 528.22 l" + "561.16 313.67 l" + "548.92 301.42 l" + "406.36 301.42 l" + "394.12 313.67 l" + "394.12 528.22 l" + "s" + "0.45 w" + "406.36 537.44 m" + "548.92 537.44 l" + "558.14 528.22 l" + "558.14 313.67 l" + "548.92 304.45 l" + "406.36 304.45 l" + "397.14 313.67 l" + "397.14 528.22 l" + "s" + "0.70 w" + "401.68 535.50 m" + "404.27 532.91 l" + "401.68 530.31 l" + "399.09 532.91 l" + "h" + "S" + "553.60 535.50 m" + "556.19 532.91 l" + "553.60 530.31 l" + "551.01 532.91 l" + "h" + "S" + "401.68 311.58 m" + "404.27 308.98 l" + "401.68 306.39 l" + "399.09 308.98 l" + "h" + "S" + "553.60 311.58 m" + "556.19 308.98 l" + "553.60 306.39 l" + "551.01 308.98 l" + "h" + "S" + "1.00 w" + "0.50 w" + "407.80 529.30 m" + "454.60 529.30 l" + "S" + "500.68 529.30 m" + "547.48 529.30 l" + "S" + "0.60 w" + "461.08 532.04 m" + "463.82 529.30 l" + "461.08 526.57 l" + "458.34 529.30 l" + "h" + "f" + "469.36 532.04 m" + "472.10 529.30 l" + "469.36 526.57 l" + "466.62 529.30 l" + "h" + "f" + "477.64 532.04 m" + "480.38 529.30 l" + "477.64 526.57 l" + "474.90 529.30 l" + "h" + "f" + "485.92 532.04 m" + "488.66 529.30 l" + "485.92 526.57 l" + "483.18 529.30 l" + "h" + "S" + "494.20 532.04 m" + "496.94 529.30 l" + "494.20 526.57 l" + "491.46 529.30 l" + "h" + "S" + "1.00 w" + "0.50 w" + "423.64 308.27 m" + "471.52 308.27 l" + "S" + "483.76 308.27 m" + "531.64 308.27 l" + "S" + "477.64 310.57 m" + "479.94 308.27 l" + "477.64 305.96 l" + "475.34 308.27 l" + "h" + "S" + "1.00 w" + "0.70 w" + "538.84 476.02 m" + "544.96 476.02 l" + "547.48 473.51 l" + "547.48 468.11 l" + "544.96 465.58 l" + "538.84 465.58 l" + "536.32 468.11 l" + "536.32 473.51 l" + "s" + "BT" + "/F2 7.00 Tf" + "539.37 468.18 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "407.80 521.03 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc000300b401340118018401430003018d0118016b0184 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "402.04 474.95 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "402.04 459.11 m" + "553.24 459.11 l" + "S" + "0.35 w" + "402.04 456.58 m" + "553.24 456.58 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "402.04 451.90 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "449.36 330.66 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "226.36 540.47 m" + "368.92 540.47 l" + "381.16 528.22 l" + "381.16 313.67 l" + "368.92 301.42 l" + "226.36 301.42 l" + "214.12 313.67 l" + "214.12 528.22 l" + "s" + "0.45 w" + "226.36 537.44 m" + "368.92 537.44 l" + "378.14 528.22 l" + "378.14 313.67 l" + "368.92 304.45 l" + "226.36 304.45 l" + "217.14 313.67 l" + "217.14 528.22 l" + "s" + "0.70 w" + "221.68 535.50 m" + "224.27 532.91 l" + "221.68 530.31 l" + "219.09 532.91 l" + "h" + "S" + "373.60 535.50 m" + "376.19 532.91 l" + "373.60 530.31 l" + "371.01 532.91 l" + "h" + "S" + "221.68 311.58 m" + "224.27 308.98 l" + "221.68 306.39 l" + "219.09 308.98 l" + "h" + "S" + "373.60 311.58 m" + "376.19 308.98 l" + "373.60 306.39 l" + "371.01 308.98 l" + "h" + "S" + "1.00 w" + "0.50 w" + "227.80 529.30 m" + "274.60 529.30 l" + "S" + "320.68 529.30 m" + "367.48 529.30 l" + "S" + "0.60 w" + "281.08 532.04 m" + "283.82 529.30 l" + "281.08 526.57 l" + "278.34 529.30 l" + "h" + "f" + "289.36 532.04 m" + "292.10 529.30 l" + "289.36 526.57 l" + "286.62 529.30 l" + "h" + "f" + "297.64 532.04 m" + "300.38 529.30 l" + "297.64 526.57 l" + "294.90 529.30 l" + "h" + "f" + "305.92 532.04 m" + "308.66 529.30 l" + "305.92 526.57 l" + "303.18 529.30 l" + "h" + "S" + "314.20 532.04 m" + "316.94 529.30 l" + "314.20 526.57 l" + "311.46 529.30 l" + "h" + "S" + "1.00 w" + "0.50 w" + "243.64 308.27 m" + "291.52 308.27 l" + "S" + "303.76 308.27 m" + "351.64 308.27 l" + "S" + "297.64 310.57 m" + "299.94 308.27 l" + "297.64 305.96 l" + "295.34 308.27 l" + "h" + "S" + "1.00 w" + "0.70 w" + "358.84 476.02 m" + "364.96 476.02 l" + "367.48 473.51 l" + "367.48 468.11 l" + "364.96 465.58 l" + "358.84 465.58 l" + "356.32 468.11 l" + "356.32 473.51 l" + "s" + "BT" + "/F2 7.00 Tf" + "359.37 468.18 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "227.80 521.03 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc0003002001660118016b018f000300b40166016b01c101d6 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "222.04 474.95 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "222.04 459.11 m" + "373.24 459.11 l" + "S" + "0.35 w" + "222.04 456.58 m" + "373.24 456.58 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "222.04 451.90 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "269.36 330.66 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "46.36 540.47 m" + "188.92 540.47 l" + "201.16 528.22 l" + "201.16 313.67 l" + "188.92 301.42 l" + "46.36 301.42 l" + "34.12 313.67 l" + "34.12 528.22 l" + "s" + "0.45 w" + "46.36 537.44 m" + "188.92 537.44 l" + "198.14 528.22 l" + "198.14 313.67 l" + "188.92 304.45 l" + "46.36 304.45 l" + "37.14 313.67 l" + "37.14 528.22 l" + "s" + "0.70 w" + "41.68 535.50 m" + "44.27 532.91 l" + "41.68 530.31 l" + "39.09 532.91 l" + "h" + "S" + "193.60 535.50 m" + "196.19 532.91 l" + "193.60 530.31 l" + "191.01 532.91 l" + "h" + "S" + "41.68 311.58 m" + "44.27 308.98 l" + "41.68 306.39 l" + "39.09 308.98 l" + "h" + "S" + "193.60 311.58 m" + "196.19 308.98 l" + "193.60 306.39 l" + "191.01 308.98 l" + "h" + "S" + "1.00 w" + "0.50 w" + "47.80 529.30 m" + "94.60 529.30 l" + "S" + "140.68 529.30 m" + "187.48 529.30 l" + "S" + "0.60 w" + "101.08 532.04 m" + "103.82 529.30 l" + "101.08 526.57 l" + "98.34 529.30 l" + "h" + "f" + "109.36 532.04 m" + "112.10 529.30 l" + "109.36 526.57 l" + "106.62 529.30 l" + "h" + "f" + "117.64 532.04 m" + "120.38 529.30 l" + "117.64 526.57 l" + "114.90 529.30 l" + "h" + "f" + "125.92 532.04 m" + "128.66 529.30 l" + "125.92 526.57 l" + "123.18 529.30 l" + "h" + "S" + "134.20 532.04 m" + "136.94 529.30 l" + "134.20 526.57 l" + "131.46 529.30 l" + "h" + "S" + "1.00 w" + "0.50 w" + "63.64 308.27 m" + "111.52 308.27 l" + "S" + "123.76 308.27 m" + "171.64 308.27 l" + "S" + "117.64 310.57 m" + "119.94 308.27 l" + "117.64 305.96 l" + "115.34 308.27 l" + "h" + "S" + "1.00 w" + "0.70 w" + "178.84 476.02 m" + "184.96 476.02 l" + "187.48 473.51 l" + "187.48 468.11 l" + "184.96 465.58 l" + "178.84 465.58 l" + "176.32 468.11 l" + "176.32 473.51 l" + "s" + "BT" + "/F2 7.00 Tf" + "179.37 468.18 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "47.80 521.03 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc00030053016b013b0143 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "42.04 474.95 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "42.04 459.11 m" + "193.24 459.11 l" + "S" + "0.35 w" + "42.04 456.58 m" + "193.24 456.58 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "42.04 451.90 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "89.36 330.66 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "406.36 288.46 m" + "548.92 288.46 l" + "561.16 276.23 l" + "561.16 61.67 l" + "548.92 49.42 l" + "406.36 49.42 l" + "394.12 61.67 l" + "394.12 276.23 l" + "s" + "0.45 w" + "406.36 285.44 m" + "548.92 285.44 l" + "558.14 276.23 l" + "558.14 61.67 l" + "548.92 52.45 l" + "406.36 52.45 l" + "397.14 61.67 l" + "397.14 276.23 l" + "s" + "0.70 w" + "401.68 283.50 m" + "404.27 280.90 l" + "401.68 278.31 l" + "399.09 280.90 l" + "h" + "S" + "553.60 283.50 m" + "556.19 280.90 l" + "553.60 278.31 l" + "551.01 280.90 l" + "h" + "S" + "401.68 59.58 m" + "404.27 56.99 l" + "401.68 54.39 l" + "399.09 56.99 l" + "h" + "S" + "553.60 59.58 m" + "556.19 56.99 l" + "553.60 54.39 l" + "551.01 56.99 l" + "h" + "S" + "1.00 w" + "0.50 w" + "407.80 277.30 m" + "454.60 277.30 l" + "S" + "500.68 277.30 m" + "547.48 277.30 l" + "S" + "0.60 w" + "461.08 280.04 m" + "463.82 277.30 l" + "461.08 274.57 l" + "458.34 277.30 l" + "h" + "f" + "469.36 280.04 m" + "472.10 277.30 l" + "469.36 274.57 l" + "466.62 277.30 l" + "h" + "f" + "477.64 280.04 m" + "480.38 277.30 l" + "477.64 274.57 l" + "474.90 277.30 l" + "h" + "f" + "485.92 280.04 m" + "488.66 277.30 l" + "485.92 274.57 l" + "483.18 277.30 l" + "h" + "S" + "494.20 280.04 m" + "496.94 277.30 l" + "494.20 274.57 l" + "491.46 277.30 l" + "h" + "S" + "1.00 w" + "0.50 w" + "423.64 56.26 m" + "471.52 56.26 l" + "S" + "483.76 56.26 m" + "531.64 56.26 l" + "S" + "477.64 58.57 m" + "479.94 56.26 l" + "477.64 53.96 l" + "475.34 56.26 l" + "h" + "S" + "1.00 w" + "0.70 w" + "538.84 224.02 m" + "544.96 224.02 l" + "547.48 221.51 l" + "547.48 216.10 l" + "544.96 213.59 l" + "538.84 213.59 l" + "536.32 216.10 l" + "536.32 221.51 l" + "s" + "BT" + "/F2 7.00 Tf" + "539.37 216.18 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "407.80 269.02 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc000300ac016b018f015e0003018d0118016b0184 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "402.04 222.95 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "402.04 207.10 m" + "553.24 207.10 l" + "S" + "0.35 w" + "402.04 204.59 m" + "553.24 204.59 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "402.04 199.90 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "449.36 78.66 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "226.36 288.46 m" + "368.92 288.46 l" + "381.16 276.23 l" + "381.16 61.67 l" + "368.92 49.42 l" + "226.36 49.42 l" + "214.12 61.67 l" + "214.12 276.23 l" + "s" + "0.45 w" + "226.36 285.44 m" + "368.92 285.44 l" + "378.14 276.23 l" + "378.14 61.67 l" + "368.92 52.45 l" + "226.36 52.45 l" + "217.14 61.67 l" + "217.14 276.23 l" + "s" + "0.70 w" + "221.68 283.50 m" + "224.27 280.90 l" + "221.68 278.31 l" + "219.09 280.90 l" + "h" + "S" + "373.60 283.50 m" + "376.19 280.90 l" + "373.60 278.31 l" + "371.01 280.90 l" + "h" + "S" + "221.68 59.58 m" + "224.27 56.99 l" + "221.68 54.39 l" + "219.09 56.99 l" + "h" + "S" + "373.60 59.58 m" + "376.19 56.99 l" + "373.60 54.39 l" + "371.01 56.99 l" + "h" + "S" + "1.00 w" + "0.50 w" + "227.80 277.30 m" + "274.60 277.30 l" + "S" + "320.68 277.30 m" + "367.48 277.30 l" + "S" + "0.60 w" + "281.08 280.04 m" + "283.82 277.30 l" + "281.08 274.57 l" + "278.34 277.30 l" + "h" + "f" + "289.36 280.04 m" + "292.10 277.30 l" + "289.36 274.57 l" + "286.62 277.30 l" + "h" + "f" + "297.64 280.04 m" + "300.38 277.30 l" + "297.64 274.57 l" + "294.90 277.30 l" + "h" + "f" + "305.92 280.04 m" + "308.66 277.30 l" + "305.92 274.57 l" + "303.18 277.30 l" + "h" + "S" + "314.20 280.04 m" + "316.94 277.30 l" + "314.20 274.57 l" + "311.46 277.30 l" + "h" + "S" + "1.00 w" + "0.50 w" + "243.64 56.26 m" + "291.52 56.26 l" + "S" + "303.76 56.26 m" + "351.64 56.26 l" + "S" + "297.64 58.57 m" + "299.94 56.26 l" + "297.64 53.96 l" + "295.34 56.26 l" + "h" + "S" + "1.00 w" + "0.70 w" + "358.84 224.02 m" + "364.96 224.02 l" + "367.48 221.51 l" + "367.48 216.10 l" + "364.96 213.59 l" + "358.84 213.59 l" + "356.32 216.10 l" + "356.32 221.51 l" + "s" + "BT" + "/F2 7.00 Tf" + "359.37 216.18 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "227.80 269.02 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc0003005301180184015d000301be0184011801d60143 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "222.04 222.95 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "222.04 207.10 m" + "373.24 207.10 l" + "S" + "0.35 w" + "222.04 204.59 m" + "373.24 204.59 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "222.04 199.90 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "269.36 78.66 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "46.36 288.46 m" + "188.92 288.46 l" + "201.16 276.23 l" + "201.16 61.67 l" + "188.92 49.42 l" + "46.36 49.42 l" + "34.12 61.67 l" + "34.12 276.23 l" + "s" + "0.45 w" + "46.36 285.44 m" + "188.92 285.44 l" + "198.14 276.23 l" + "198.14 61.67 l" + "188.92 52.45 l" + "46.36 52.45 l" + "37.14 61.67 l" + "37.14 276.23 l" + "s" + "0.70 w" + "41.68 283.50 m" + "44.27 280.90 l" + "41.68 278.31 l" + "39.09 280.90 l" + "h" + "S" + "193.60 283.50 m" + "196.19 280.90 l" + "193.60 278.31 l" + "191.01 280.90 l" + "h" + "S" + "41.68 59.58 m" + "44.27 56.99 l" + "41.68 54.39 l" + "39.09 56.99 l" + "h" + "S" + "193.60 59.58 m" + "196.19 56.99 l" + "193.60 54.39 l" + "191.01 56.99 l" + "h" + "S" + "1.00 w" + "0.50 w" + "47.80 277.30 m" + "94.60 277.30 l" + "S" + "140.68 277.30 m" + "187.48 277.30 l" + "S" + "0.60 w" + "101.08 280.04 m" + "103.82 277.30 l" + "101.08 274.57 l" + "98.34 277.30 l" + "h" + "f" + "109.36 280.04 m" + "112.10 277.30 l" + "109.36 274.57 l" + "106.62 277.30 l" + "h" + "f" + "117.64 280.04 m" + "120.38 277.30 l" + "117.64 274.57 l" + "114.90 277.30 l" + "h" + "f" + "125.92 280.04 m" + "128.66 277.30 l" + "125.92 274.57 l" + "123.18 277.30 l" + "h" + "S" + "134.20 280.04 m" + "136.94 277.30 l" + "134.20 274.57 l" + "131.46 277.30 l" + "h" + "S" + "1.00 w" + "0.50 w" + "63.64 56.26 m" + "111.52 56.26 l" + "S" + "123.76 56.26 m" + "171.64 56.26 l" + "S" + "117.64 58.57 m" + "119.94 56.26 l" + "117.64 53.96 l" + "115.34 56.26 l" + "h" + "S" + "1.00 w" + "0.70 w" + "178.84 224.02 m" + "184.96 224.02 l" + "187.48 221.51 l" + "187.48 216.10 l" + "184.96 213.59 l" + "178.84 213.59 l" + "176.32 216.10 l" + "176.32 221.51 l" + "s" + "BT" + "/F2 7.00 Tf" + "179.37 216.18 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "47.80 269.02 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc0003001f01c10143011801c901d601be0184011801d60143 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "42.04 222.95 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "42.04 207.10 m" + "193.24 207.10 l" + "S" + "0.35 w" + "42.04 204.59 m" + "193.24 204.59 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "42.04 199.90 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "89.36 78.66 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET"] + ["0.88 0.88 0.88 RG" + "27.64 42.94 m" + "27.64 798.95 l" + "S" + "207.64 42.94 m" + "207.64 798.95 l" + "S" + "387.64 42.94 m" + "387.64 798.95 l" + "S" + "567.64 42.94 m" + "567.64 798.95 l" + "S" + "27.64 42.94 m" + "567.64 42.94 l" + "S" + "27.64 294.95 m" + "567.64 294.95 l" + "S" + "27.64 546.95 m" + "567.64 546.95 l" + "S" + "27.64 798.95 m" + "567.64 798.95 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 831.09 Td" + "#hex:00a9014d01930178000303fa000304a201f60178022a017801f601fe017804a3 Tj" + "ET" + "q" + "144.00 0.00 0.00 144.00 45.64 600.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "82.65 558.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 45.64 348.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "82.65 306.46 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 45.64 96.94 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "82.65 54.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 225.64 600.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "262.65 558.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 225.64 348.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "262.65 306.46 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 225.64 96.94 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "262.65 54.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 405.64 600.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "442.65 558.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 405.64 348.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "442.65 306.46 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 405.64 96.94 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "442.65 54.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET"] + ["0.88 0.88 0.88 RG" + "27.64 42.94 m" + "27.64 798.95 l" + "S" + "207.64 42.94 m" + "207.64 798.95 l" + "S" + "387.64 42.94 m" + "387.64 798.95 l" + "S" + "567.64 42.94 m" + "567.64 798.95 l" + "S" + "27.64 42.94 m" + "567.64 42.94 l" + "S" + "27.64 294.95 m" + "567.64 294.95 l" + "S" + "27.64 546.95 m" + "567.64 546.95 l" + "S" + "27.64 798.95 m" + "567.64 798.95 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 831.09 Td" + "#hex:00a9014d01930178000303fb Tj" + "ET" + "1.10 w" + "406.36 792.47 m" + "548.92 792.47 l" + "561.16 780.22 l" + "561.16 565.66 l" + "548.92 553.42 l" + "406.36 553.42 l" + "394.12 565.66 l" + "394.12 780.22 l" + "s" + "0.45 w" + "406.36 789.44 m" + "548.92 789.44 l" + "558.14 780.22 l" + "558.14 565.66 l" + "548.92 556.45 l" + "406.36 556.45 l" + "397.14 565.66 l" + "397.14 780.22 l" + "s" + "0.70 w" + "401.68 787.50 m" + "404.27 784.91 l" + "401.68 782.31 l" + "399.09 784.91 l" + "h" + "S" + "553.60 787.50 m" + "556.19 784.91 l" + "553.60 782.31 l" + "551.01 784.91 l" + "h" + "S" + "401.68 563.58 m" + "404.27 560.98 l" + "401.68 558.39 l" + "399.09 560.98 l" + "h" + "S" + "553.60 563.58 m" + "556.19 560.98 l" + "553.60 558.39 l" + "551.01 560.98 l" + "h" + "S" + "1.00 w" + "0.50 w" + "407.80 781.30 m" + "454.60 781.30 l" + "S" + "500.68 781.30 m" + "547.48 781.30 l" + "S" + "0.60 w" + "461.08 784.04 m" + "463.82 781.30 l" + "461.08 778.57 l" + "458.34 781.30 l" + "h" + "f" + "469.36 784.04 m" + "472.10 781.30 l" + "469.36 778.57 l" + "466.62 781.30 l" + "h" + "f" + "477.64 784.04 m" + "480.38 781.30 l" + "477.64 778.57 l" + "474.90 781.30 l" + "h" + "f" + "485.92 784.04 m" + "488.66 781.30 l" + "485.92 778.57 l" + "483.18 781.30 l" + "h" + "S" + "494.20 784.04 m" + "496.94 781.30 l" + "494.20 778.57 l" + "491.46 781.30 l" + "h" + "S" + "1.00 w" + "0.50 w" + "423.64 560.27 m" + "471.52 560.27 l" + "S" + "483.76 560.27 m" + "531.64 560.27 l" + "S" + "477.64 562.57 m" + "479.94 560.27 l" + "477.64 557.96 l" + "475.34 560.27 l" + "h" + "S" + "1.00 w" + "0.70 w" + "538.84 728.03 m" + "544.96 728.03 l" + "547.48 725.51 l" + "547.48 720.10 l" + "544.96 717.59 l" + "538.84 717.59 l" + "536.32 720.10 l" + "536.32 725.51 l" + "s" + "BT" + "/F2 7.00 Tf" + "539.37 720.18 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "407.80 773.03 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc000300a90184011801d60143 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "402.04 726.95 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "402.04 711.10 m" + "553.24 711.10 l" + "S" + "0.35 w" + "402.04 708.59 m" + "553.24 708.59 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "402.04 703.91 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "449.36 582.67 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "226.36 792.47 m" + "368.92 792.47 l" + "381.16 780.22 l" + "381.16 565.66 l" + "368.92 553.42 l" + "226.36 553.42 l" + "214.12 565.66 l" + "214.12 780.22 l" + "s" + "0.45 w" + "226.36 789.44 m" + "368.92 789.44 l" + "378.14 780.22 l" + "378.14 565.66 l" + "368.92 556.45 l" + "226.36 556.45 l" + "217.14 565.66 l" + "217.14 780.22 l" + "s" + "0.70 w" + "221.68 787.50 m" + "224.27 784.91 l" + "221.68 782.31 l" + "219.09 784.91 l" + "h" + "S" + "373.60 787.50 m" + "376.19 784.91 l" + "373.60 782.31 l" + "371.01 784.91 l" + "h" + "S" + "221.68 563.58 m" + "224.27 560.98 l" + "221.68 558.39 l" + "219.09 560.98 l" + "h" + "S" + "373.60 563.58 m" + "376.19 560.98 l" + "373.60 558.39 l" + "371.01 560.98 l" + "h" + "S" + "1.00 w" + "0.50 w" + "227.80 781.30 m" + "274.60 781.30 l" + "S" + "320.68 781.30 m" + "367.48 781.30 l" + "S" + "0.60 w" + "281.08 784.04 m" + "283.82 781.30 l" + "281.08 778.57 l" + "278.34 781.30 l" + "h" + "f" + "289.36 784.04 m" + "292.10 781.30 l" + "289.36 778.57 l" + "286.62 781.30 l" + "h" + "f" + "297.64 784.04 m" + "300.38 781.30 l" + "297.64 778.57 l" + "294.90 781.30 l" + "h" + "f" + "305.92 784.04 m" + "308.66 781.30 l" + "305.92 778.57 l" + "303.18 781.30 l" + "h" + "S" + "314.20 784.04 m" + "316.94 781.30 l" + "314.20 778.57 l" + "311.46 781.30 l" + "h" + "S" + "1.00 w" + "0.50 w" + "243.64 560.27 m" + "291.52 560.27 l" + "S" + "303.76 560.27 m" + "351.64 560.27 l" + "S" + "297.64 562.57 m" + "299.94 560.27 l" + "297.64 557.96 l" + "295.34 560.27 l" + "h" + "S" + "1.00 w" + "0.70 w" + "358.84 728.03 m" + "364.96 728.03 l" + "367.48 725.51 l" + "367.48 720.10 l" + "364.96 717.59 l" + "358.84 717.59 l" + "356.32 720.10 l" + "356.32 725.51 l" + "s" + "BT" + "/F2 7.00 Tf" + "359.37 720.18 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "227.80 773.03 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc000300b401be0184016b018f01d6 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "222.04 726.95 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "222.04 711.10 m" + "373.24 711.10 l" + "S" + "0.35 w" + "222.04 708.59 m" + "373.24 708.59 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "222.04 703.91 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "269.36 582.67 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "46.36 792.47 m" + "188.92 792.47 l" + "201.16 780.22 l" + "201.16 565.66 l" + "188.92 553.42 l" + "46.36 553.42 l" + "34.12 565.66 l" + "34.12 780.22 l" + "s" + "0.45 w" + "46.36 789.44 m" + "188.92 789.44 l" + "198.14 780.22 l" + "198.14 565.66 l" + "188.92 556.45 l" + "46.36 556.45 l" + "37.14 565.66 l" + "37.14 780.22 l" + "s" + "0.70 w" + "41.68 787.50 m" + "44.27 784.91 l" + "41.68 782.31 l" + "39.09 784.91 l" + "h" + "S" + "193.60 787.50 m" + "196.19 784.91 l" + "193.60 782.31 l" + "191.01 784.91 l" + "h" + "S" + "41.68 563.58 m" + "44.27 560.98 l" + "41.68 558.39 l" + "39.09 560.98 l" + "h" + "S" + "193.60 563.58 m" + "196.19 560.98 l" + "193.60 558.39 l" + "191.01 560.98 l" + "h" + "S" + "1.00 w" + "0.50 w" + "47.80 781.30 m" + "94.60 781.30 l" + "S" + "140.68 781.30 m" + "187.48 781.30 l" + "S" + "0.60 w" + "101.08 784.04 m" + "103.82 781.30 l" + "101.08 778.57 l" + "98.34 781.30 l" + "h" + "f" + "109.36 784.04 m" + "112.10 781.30 l" + "109.36 778.57 l" + "106.62 781.30 l" + "h" + "f" + "117.64 784.04 m" + "120.38 781.30 l" + "117.64 778.57 l" + "114.90 781.30 l" + "h" + "f" + "125.92 784.04 m" + "128.66 781.30 l" + "125.92 778.57 l" + "123.18 781.30 l" + "h" + "S" + "134.20 784.04 m" + "136.94 781.30 l" + "134.20 778.57 l" + "131.46 781.30 l" + "h" + "S" + "1.00 w" + "0.50 w" + "63.64 560.27 m" + "111.52 560.27 l" + "S" + "123.76 560.27 m" + "171.64 560.27 l" + "S" + "117.64 562.57 m" + "119.94 560.27 l" + "117.64 557.96 l" + "115.34 560.27 l" + "h" + "S" + "1.00 w" + "0.70 w" + "178.84 728.03 m" + "184.96 728.03 l" + "187.48 725.51 l" + "187.48 720.10 l" + "184.96 717.59 l" + "178.84 717.59 l" + "176.32 720.10 l" + "176.32 725.51 l" + "s" + "BT" + "/F2 7.00 Tf" + "179.37 720.18 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "47.80 773.03 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc0003002001660118016b018f0003018d0118016b0184 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "42.04 726.95 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "42.04 711.10 m" + "193.24 711.10 l" + "S" + "0.35 w" + "42.04 708.59 m" + "193.24 708.59 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "42.04 703.91 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "89.36 582.67 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET"] + ["0.88 0.88 0.88 RG" + "27.64 42.94 m" + "27.64 798.95 l" + "S" + "207.64 42.94 m" + "207.64 798.95 l" + "S" + "387.64 42.94 m" + "387.64 798.95 l" + "S" + "567.64 42.94 m" + "567.64 798.95 l" + "S" + "27.64 42.94 m" + "567.64 42.94 l" + "S" + "27.64 294.95 m" + "567.64 294.95 l" + "S" + "27.64 546.95 m" + "567.64 546.95 l" + "S" + "27.64 798.95 m" + "567.64 798.95 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 831.09 Td" + "#hex:00a9014d01930178000303fb000304a201f60178022a017801f601fe017804a3 Tj" + "ET" + "q" + "144.00 0.00 0.00 144.00 45.64 600.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "82.65 558.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 45.64 348.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "82.65 306.46 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 45.64 96.94 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "82.65 54.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 225.64 600.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "262.65 558.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 225.64 348.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "262.65 306.46 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 225.64 96.94 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "262.65 54.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 405.64 600.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "442.65 558.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 405.64 348.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "442.65 306.46 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 405.64 96.94 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "442.65 54.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET"] + ["0.88 0.88 0.88 RG" + "27.64 42.94 m" + "27.64 798.95 l" + "S" + "207.64 42.94 m" + "207.64 798.95 l" + "S" + "387.64 42.94 m" + "387.64 798.95 l" + "S" + "567.64 42.94 m" + "567.64 798.95 l" + "S" + "27.64 42.94 m" + "567.64 42.94 l" + "S" + "27.64 294.95 m" + "567.64 294.95 l" + "S" + "27.64 546.95 m" + "567.64 546.95 l" + "S" + "27.64 798.95 m" + "567.64 798.95 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 831.09 Td" + "#hex:00a9014d01930178000303fa Tj" + "ET" + "BT" + "/F2 8.00 Tf" + "396.28 721.18 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de0003016b018d01be01840118018f01d6000301180003018d014301c901c90118015e0143000301f6016b01d60166016b018f00030118018f0003019b0133017d0143013401d60003016b018f Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f015e014305fc000301180003018d014301c901c90118015e0143000301d60166011801d60003016b01c9000301de01d601d6014301c10143013b000301f601660143018f00030118000301d601c1016b015e015e014301c1 Tj" + "0.00 -8.80 Td" + "#hex:0134019b018f013b016b01d6016b019b018f0003016b01c90003018d014301d60608000300200166019b019b01c9014300030118018f0003019b0133017d0143013401d6000301d60166011801d6000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:01340118018f000301c90143014300030118018f013b000301d60166011801d60003016b01c9018f060c01d6000301330143016b018f015e000301f6019b01c1018f0003019b01c100030134011801c101c1016b0143013b0003013301fc Tj" + "0.00 -8.80 Td" + "#hex:0118018f019b01d60166014301c10003013401c10143011801d601de01c101430608000300c101660143018f000301c901be014301180181000301d6016601430003018d014301c901c90118015e014305fc Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b013401660003018d01de01c901d60003013301430003056b056e000301f6019b01c1013b01c90003019b01c100030184014301c901c905fc000301d60166019b01de015e01660003016b01d6000301340118018f Tj" + "0.00 -8.80 Td" + "#hex:013301430003013b01430184016b01f5014301c10143013b0003019b01f5014301c10003011801c900030184019b018f015e0003011801c90003056a05690003018d016b018f01de01d6014301c90608 Tj" + "0.00 -8.80 Td" + "#hex:004a016b018f01180184018401fc05fc0003013b014301d6014301c1018d016b018f0143000301d60166014300030134016b01c1013401de018d01c901d60118018f01340143000301d60166011801d6000301f6016b01840184 Tj" + "0.00 -8.80 Td" + "#hex:01d601c1016b015e015e014301c1000301d601660143000301c901be014301840184000301d6019b0003013b01430184016b01f5014301c1000301fc019b01de01c10003018d014301c901c90118015e01430608 Tj" + "0.00 -8.80 Td" + "#hex:00e001660143018f000301d60166011801d600030134016b01c1013401de018d01c901d60118018f013401430003019b0134013401de01c101c905fc000301180003018d0118015e016b013401180184 Tj" + "0.00 -8.80 Td" + "#hex:018d019b01de01d601660003011801be01be0143011801c101c90003019b018f000301d6016601430003019b0133017d0143013401d600030118018f013b000301c101430134016b01d6014301c9000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:018d014301c901c90118015e01430003016b018f000301fc019b01de01c1000301f5019b016b0134014300030118018f013b0003011801d6000301d601660143000301c90118018d0143000301f5019b018401de018d0143 Tj" + "0.00 -8.80 Td" + "#hex:01fc019b01de000301c901be019b01810143060800030058015d000301d6016601430003019b0133017d0143013401d6000301fc019b01de000301340166019b01c9014300030166011801c9000301180003018d019b01de01d60166 Tj" + "0.00 -8.80 Td" + "#hex:019b01c1000301c9019b018d014301d60166016b018f015e000301d60166011801d600030184019b019b018101c900030184016b01810143000301180003018d019b01de01d6016600030628015d019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:014301fb0118018d01be0184014305fc000301d6016601430003018d019b01de01d601660003019b015d00030118000301c901d6011801d601de0143062905fc000301d6016601430003018d0118015e016b013401180184 Tj" + "0.00 -8.80 Td" + "#hex:018d019b01de01d601660003011801be01be0143011801c101c9000301d60166014301c10143000301c9019b000301d60166011801d6000301d601660143000301f6019b01c1013b01c90003011801be01be0143011801c1 Tj" + "0.00 -8.80 Td" + "#hex:01d6019b00030134019b018d01430003015d01c1019b018d000301d6016601430003019b0133017d0143013401d6060c01c90003018d019b01de01d601660608000300e001660143018f000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:0134011801c901d6000301d60166016b01c9000301c901be01430184018405fc000301fc019b01de000301340118018f00030166011801f50143000301d601660143000301c901be01430184018400030143018f013b00030118025e014301c1 Tj" + "0.00 -8.80 Td" + "#hex:016b01d60003013b01430184016b01f5014301c101c90003016b01d601c90003018d014301c901c90118015e014305fc0003019b01c10003016b01d6000301340118018f000301c10143018d0118016b018f00030118018f013b Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "396.28 759.34 Td" + "0.00 -8.80 Td" + "#hex:0004000301fe01c2014d01b901b90003016801a0020b000301d001920003019b01d001c401780231016901d001c201680003014d01c40170000301b2014d0170017800030170021301fe020b0003022b01d001f6020b019b0003014d020b000301b90178014d01fe020b Tj" + "0.00 -8.80 Td" + "#hex:03fa03f90003019301f304760003022b019b01a00169019b0003020b019b0178000301fe01f3017801b901b90003016901d001c401fe021301c2017801fe Tj" + "ET" + "q" + "/gs1 gs" + "q" + "13.20 0.00 0.00 18.00 553.84 779.51 cm" + "/Im1 Do" + "Q" + "Q" + "BT" + "/F3 10.00 Tf" + "396.28 798.95 Td" + "0.00 -11.00 Td" + "#hex:00780118015e016b013400030078019b01de01d60166 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "459.10 798.95 Td" + "0.00 -11.00 Td" + "#hex:000304a201f601a0020b0213014d01b904a3 Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "396.28 785.27 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303fb0003005801b901b9021301fe01a001d001c4 Tj" + "ET" + "q" + "/gs2 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 396.28 757.18 cm" + "/Form2 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "396.28 761.51 Td" + "\"1 min\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs3 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 432.28 757.18 cm" + "/Form3 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "432.28 761.51 Td" + "\"30 ft\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs4 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 468.28 757.18 cm" + "/Form4 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "468.28 761.51 Td" + "\"V,S,M\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs5 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 504.28 757.18 cm" + "/Form5 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "504.28 761.51 Td" + "\"Until dispelled\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs6 gs" + "0.00 0.00 0.00 rg" + "0.02 0.00 0.00 0.02 553.24 550.54 cm" + "/Form6 Do" + "Q" + "BT" + "/F2 8.00 Tf" + "216.28 721.18 Td" + "0.00 -8.80 Td" + "#hex:001f01fc00030134011801c901d6016b018f015e0003015e0143018d0640016b018f01840118016b013b000301c901d6016b0134018101c905fc000301c1019b01840184016b018f015e0003013b01c10118015e019b018f Tj" + "0.00 -8.80 Td" + "#hex:0133019b018f014301c905fc00030184011801fc016b018f015e0003019b01de01d60003019b01c1018f011801d6014300030134011801c1013b01c905fc0003019b01c100030143018d01be0184019b01fc016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:01c9019b018d01430003019b01d60166014301c10003013b016b01f5016b018f016b018f015e000301d6019b019b018405fc000301fc019b01de000301c1014301340143016b01f5014300030118018f0003019b018d0143018f Tj" + "0.00 -8.80 Td" + "#hex:015d01c1019b018d00030118018f0003019b01d60166014301c101f6019b01c10184013b018401fc00030143018f01d6016b01d601fc000301180133019b01de01d6000301d601660143000301c1014301c901de018401d601c9 Tj" + "0.00 -8.80 Td" + "#hex:019b015d00030118000301c901be01430134016b025b013400030134019b01de01c101c901430003019b015d00030118013401d6016b019b018f000301d60166011801d6000301fc019b01de000301be01840118018f000301d6019b Tj" + "0.00 -8.80 Td" + "#hex:01d6011801810143000301f6016b01d60166016b018f000301d6016601430003018f014301fb01d60003056c05690003018d016b018f01de01d6014301c90608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c90003015d01c1019b018d000301d6016601430003015d019b01840184019b01f6016b018f015e000301be019b01c901c9016b0133018401430003019b018d0143018f01c905fb000305f8 Tj" + "0.00 -8.80 Td" + "#hex:00e001430118018405fc0003015d019b01c10003015e019b019b013b000301c1014301c901de018401d601c9000305f8000300e0019b014305fc0003015d019b01c1000301330118013b000301c1014301c901de018401d601c9000305f8 Tj" + "0.00 -8.80 Td" + "#hex:00e001430118018400030118018f013b000301f6019b014305fc0003015d019b01c100030133019b01d601660003015e019b019b013b00030118018f013b000301330118013b000301c1014301c901de018401d601c9000305f8 Tj" + "0.00 -8.80 Td" + "#hex:007a019b01d60166016b018f015e05fc0003015d019b01c1000301c1014301c901de018401d601c9000301d60166011801d60003011801c10143018f060c01d60003014301c901be01430134016b01180184018401fc0003015e019b019b013b Tj" + "0.00 -8.80 Td" + "#hex:019b01c1000301330118013b000300c101660143000301c901be0143018401840003013b019b014301c9018f060c01d6000301d60118018101430003016b018f01d6019b0003011801340134019b01de018f01d600030118018f01fc Tj" + "0.00 -8.80 Td" + "#hex:01be019b01c901c9016b01330184014300030134016b01c1013401de018d01c901d60118018f0134014301c9000301d60166011801d60003018d016b015e016601d60003013401660118018f015e0143000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:019b01de01d60134019b018d014305fc000301c901de013401660003011801c9000301d60166014300030134011801c901d6016b018f015e0003019b015d00030118013b013b016b01d6016b019b018f01180184 Tj" + "0.00 -8.80 Td" + "#hex:01c901be01430184018401c90003019b01c1000301d60166014300030184019b01c901c90003019b01c10003015e0118016b018f0003019b015d0003011800030134019b018d01be0118018f016b019b018f060800030058015d000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:0134011801c901d6000301d601660143000301c901be014301840184000301d601f6019b0003019b01c10003018d019b01c10143000301d6016b018d014301c9000301330143015d019b01c10143 Tj" + "0.00 -8.80 Td" + "#hex:0134019b018d01be0184014301d6016b018f015e000301fc019b01de01c10003018f014301fb01d600030184019b018f015e000301c1014301c901d605fc000301d60166014301c101430003016b01c900030118 Tj" + "0.00 -8.80 Td" + "#hex:013401de018d01de0184011801d6016b01f501430003056b056e000301be014301c101340143018f01d60003013401660118018f013401430003015d019b01c10003014301180134016600030134011801c901d6016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:0118025e014301c1000301d6016601430003025b01c101c901d6000301d60166011801d6000301fc019b01de0003015e014301d600030118000301c10118018f013b019b018d000301c101430118013b016b018f015e0608 Tj" + "0.00 -8.80 Td" + "#hex:00c1016601430003004b00780003018d01180181014301c9000301d60166016b01c9000301c1019b018401840003016b018f000301c90143013401c1014301d60608 Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "216.28 759.34 Td" + "0.00 -8.80 Td" + "#hex:00b401f30178016901a0014d01b901b90231000301c2014d01f601b601780170000301fe020b01a0016901b601fe04760003016801d001c4017801fe0476000301d001f6000301fe01a001c201a001b9014d01f60003020b01d001b6017801c401fe Tj" + "0.00 -8.80 Td" + "#hex:022b01d001f6020b019b0003014d020b000301b90178014d01fe020b000303fb03fe0003019301f3 Tj" + "ET" + "q" + "/gs7 gs" + "q" + "13.20 0.00 0.00 18.00 373.84 779.51 cm" + "/Im1 Do" + "Q" + "Q" + "BT" + "/F3 10.00 Tf" + "216.28 798.95 Td" + "0.00 -11.00 Td" + "#hex:000401de015e01de01c101fc Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "251.57 798.95 Td" + "0.00 -11.00 Td" + "#hex:000304a201f601a0020b0213014d01b904a3 Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "216.28 785.27 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303fb0003002701a0022a01a001c4014d020b01a001d001c4 Tj" + "ET" + "q" + "/gs8 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 216.28 757.18 cm" + "/Form2 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "216.28 761.51 Td" + "\"1 min\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs9 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 252.28 757.18 cm" + "/Form3 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "252.28 761.51 Td" + "\"Self\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs10 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 288.28 757.18 cm" + "/Form4 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "288.28 761.51 Td" + "\"V,S,M\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs11 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 324.28 757.18 cm" + "/Form5 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "324.28 761.51 Td" + "\"Inst\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "BT" + "/F2 8.00 Tf" + "36.28 721.18 Td" + "0.00 -8.80 Td" + "#hex:0004000301f6011801f501430003019b015d000301d6016601de018f013b014301c1019b01de01c90003015d019b01c101340143000301c901f60143014301be01c90003019b01de01d60003015d01c1019b018d Tj" + "0.00 -8.80 Td" + "#hex:01fc019b01de0608000300310118013401660003013401c10143011801d601de01c101430003016b018f000301180003056a056e0640015d019b019b01d60003013401de01330143 Tj" + "0.00 -8.80 Td" + "#hex:019b01c1016b015e016b018f011801d6016b018f015e0003015d01c1019b018d000301fc019b01de0003018d01de01c901d60003018d01180181014300030118 Tj" + "0.00 -8.80 Td" + "#hex:0020019b018f01c901d6016b01d601de01d6016b019b018f000301c9011801f5016b018f015e000301d6016601c1019b01f6060800030086018f000301180003015d0118016b01840143013b000301c9011801f5014305fc00030118 Tj" + "0.00 -8.80 Td" + "#hex:013401c10143011801d601de01c10143000301d601180181014301c90003056b013b0571000301d6016601de018f013b014301c10003013b0118018d0118015e014300030118018f013b0003016b01c9 Tj" + "0.00 -8.80 Td" + "#hex:01be01de01c901660143013b0003056a05690003015d0143014301d60003011801f6011801fc0003015d01c1019b018d000301fc019b01de060800030086018f00030118000301c901de01340134014301c901c9015d01de0184 Tj" + "0.00 -8.80 Td" + "#hex:01c9011801f5014305fc000301d6016601430003013401c10143011801d601de01c10143000301d601180181014301c90003016601180184015d0003011801c90003018d01de013401660003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:0118018f013b0003016b01c9018f060c01d6000301be01de01c901660143013b060800030058018f00030118013b013b016b01d6016b019b018f05fc000301de018f01c90143013401de01c10143013b Tj" + "0.00 -8.80 Td" + "#hex:019b0133017d0143013401d601c9000301d60166011801d60003011801c1014300030134019b018d01be0184014301d60143018401fc000301f6016b01d60166016b018f000301d6016601430003011801c1014301180003019b015d Tj" + "0.00 -8.80 Td" + "#hex:014302480143013401d60003011801c101430003011801de01d6019b018d011801d6016b013401180184018401fc000301be01de01c901660143013b0003056a05690003015d0143014301d60003011801f6011801fc Tj" + "0.00 -8.80 Td" + "#hex:015d01c1019b018d000301fc019b01de0003013301fc000301d601660143000301c901be014301840184060c01c90003014302480143013401d605fc00030118018f013b000301d601660143000301c901be014301840184 Tj" + "0.00 -8.80 Td" + "#hex:0143018d016b01d601c900030118000301d6016601de018f013b014301c1019b01de01c900030133019b019b018d0003011801de013b016b0133018401430003019b01de01d6000301d6019b0003056c05690569 Tj" + "0.00 -8.80 Td" + "#hex:015d0143014301d606080003000401d600030053016b015e0166014301c10003006e014301f50143018401c90608000300e001660143018f000301fc019b01de00030134011801c901d6000301d60166016b01c9 Tj" + "0.00 -8.80 Td" + "#hex:01c901be014301840184000301de01c9016b018f015e00030118000301c901be014301840184000301c90184019b01d60003019b015d0003056b018f013b00030184014301f5014301840003019b01c100030166016b015e0166014301c105fc Tj" + "0.00 -8.80 Td" + "#hex:01d6016601430003013b0118018d0118015e01430003016b018f013401c10143011801c9014301c90003013301fc0003056a013b05710003015d019b01c100030143011801340166000301c90184019b01d600030184014301f501430184 Tj" + "0.00 -8.80 Td" + "#hex:01180133019b01f501430003056a01c901d60608 Tj" + "ET" + "q" + "/gs12 gs" + "q" + "13.20 0.00 0.00 18.00 193.84 779.51 cm" + "/Im1 Do" + "Q" + "Q" + "BT" + "/F3 10.00 Tf" + "36.28 798.95 Td" + "0.00 -11.00 Td" + "#hex:00c1016601de018f013b014301c101f6011801f50143 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "102.30 798.95 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "36.28 785.27 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303fa00030031022a01d00169014d020b01a001d001c4 Tj" + "ET" + "q" + "/gs13 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 36.28 757.18 cm" + "/Form2 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "36.28 761.51 Td" + "\"1 Act.\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs14 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 72.28 757.18 cm" + "/Form3 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "72.28 761.51 Td" + "\"Self\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs15 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 108.28 757.18 cm" + "/Form4 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "108.28 761.51 Td" + "\"V,S\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs16 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 144.28 757.18 cm" + "/Form5 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "144.28 761.51 Td" + "\"Inst\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "BT" + "/F2 8.00 Tf" + "396.28 469.18 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de000301d601430184014301be019b01c101d6000301fc019b01de01c101c901430184015d0003015d01c1019b018d000301fc019b01de01c10003013401de01c101c10143018f01d6 Tj" + "0.00 -8.80 Td" + "#hex:0184019b0134011801d6016b019b018f000301d6019b00030118018f01fc0003019b01d60166014301c1000301c901be019b01d6000301f6016b01d60166016b018f000301c10118018f015e01430608000300e6019b01de Tj" + "0.00 -8.80 Td" + "#hex:011801c101c1016b01f501430003011801d60003014301fb0118013401d6018401fc000301d601660143000301c901be019b01d60003013b014301c9016b01c10143013b06080003005801d6000301340118018f00030133014300030118 Tj" + "0.00 -8.80 Td" + "#hex:01be0184011801340143000301fc019b01de000301340118018f000301c90143014305fc0003019b018f0143000301fc019b01de000301340118018f000301f5016b01c901de01180184016b0206014305fc0003019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:019b018f0143000301fc019b01de000301340118018f0003013b014301c9013401c1016b013301430003013301fc000301c901d6011801d6016b018f015e0003013b016b01c901d60118018f0134014300030118018f013b Tj" + "0.00 -8.80 Td" + "#hex:013b016b01c10143013401d6016b019b018f05fc000301c901de013401660003011801c900030655056b056905690003015d0143014301d6000301c901d601c10118016b015e016601d6 Tj" + "0.00 -8.80 Td" + "#hex:013b019b01f6018f01f6011801c1013b06560003019b01c10003065501de01be01f6011801c1013b000301d6019b000301d6016601430003018f019b01c101d6016601f6014301c901d60003011801d600030118 Tj" + "0.00 -8.80 Td" + "#hex:056d056e0640013b0143015e01c10143014300030118018f015e0184014305fc0003056c056905690003015d0143014301d606080656000300e6019b01de000301340118018f0003013301c1016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:01180184019b018f015e0003019b0133017d0143013401d601c90003011801c900030184019b018f015e0003011801c9000301d601660143016b01c1000301f60143016b015e016601d60003013b019b014301c9018f060c01d6 Tj" + "0.00 -8.80 Td" + "#hex:014301fb013401430143013b000301f60166011801d6000301fc019b01de000301340118018f00030134011801c101c101fc0608000300e6019b01de000301340118018f00030118018401c9019b0003013301c1016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:019b018f0143000301f6016b01840184016b018f015e0003013401c10143011801d601de01c101430003019b015d000301fc019b01de01c1000301c9016b020601430003019b01c1000301c9018d011801840184014301c1 Tj" + "0.00 -8.80 Td" + "#hex:01f60166019b0003016b01c900030134011801c101c101fc016b018f015e0003015e0143011801c1000301de01be000301d6019b0003016b01d601c900030134011801c101c101fc016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:0134011801be01180134016b01d601fc0608000300c1016601430003013401c10143011801d601de01c101430003018d01de01c901d6000301330143000301f6016b01d60166016b018f0003056e0003015d0143014301d60003019b015d Tj" + "0.00 -8.80 Td" + "#hex:01fc019b01de000301f601660143018f000301fc019b01de00030134011801c901d6000301d60166016b01c9000301c901be014301840184060800030058015d000301fc019b01de000301f6019b01de0184013b Tj" + "0.00 -8.80 Td" + "#hex:011801c101c1016b01f501430003016b018f00030118000301be018401180134014300030118018401c101430118013b01fc0003019b0134013401de01be016b0143013b0003013301fc00030118018f0003019b0133017d0143013401d6 Tj" + "0.00 -8.80 Td" + "#hex:019b01c1000301180003013401c10143011801d601de01c1014305fc000301fc019b01de00030118018f013b00030118018f01fc0003013401c10143011801d601de01c10143000301d601c1011801f501430184016b018f015e Tj" + "0.00 -8.80 Td" + "#hex:01f6016b01d60166000301fc019b01de00030143011801340166000301d60118018101430003056d013b056f0003015d019b01c1013401430003013b0118018d0118015e014305fc00030118018f013b000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01c901be0143018401840003015d0118016b018401c9000301d6019b000301d601430184014301be019b01c101d6000301fc019b01de0608 Tj" + "ET" + "q" + "/gs17 gs" + "q" + "13.20 0.00 0.00 18.00 553.84 527.51 cm" + "/Im1 Do" + "Q" + "Q" + "BT" + "/F3 10.00 Tf" + "396.28 546.95 Td" + "0.00 -11.00 Td" + "#hex:0027016b018d0143018f01c9016b019b018f00030027019b019b01c1 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "474.85 546.95 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "396.28 533.27 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303fd0003002001d001c401b2021301f6014d020b01a001d001c4 Tj" + "ET" + "q" + "/gs18 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 396.28 505.18 cm" + "/Form2 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "396.28 509.50 Td" + "\"1 Act.\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs19 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 432.28 505.18 cm" + "/Form3 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "432.28 509.50 Td" + "\"500 ft\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs20 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 468.28 505.18 cm" + "/Form4 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "468.28 509.50 Td" + "\"V\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs21 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 504.28 505.18 cm" + "/Form5 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "504.28 509.50 Td" + "\"Inst\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "BT" + "/F2 8.00 Tf" + "216.28 469.18 Td" + "0.00 -8.80 Td" + "#hex:00040003056a05690640015d019b019b01d6064001c10118013b016b01de01c90003016b018d018d019b0133016b018401430003013b019b018d01430003019b015d0003015d019b01c101340143 Tj" + "0.00 -8.80 Td" + "#hex:01c901be01c1016b018f015e01c90003016b018f01d6019b0003014301fb016b01c901d60143018f013401430003011801c1019b01de018f013b00030118018f013b000301180133019b01f50143000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:0118018f013b000301c10143018d0118016b018f01c9000301c901d6011801d6016b019b018f011801c101fc0003015d019b01c1000301d6016601430003013b01de01c1011801d6016b019b018f0608000300c101660143 Tj" + "0.00 -8.80 Td" + "#hex:01c901be01430184018400030143018f013b01c90003016b015d000301fc019b01de000301840143011801f501430003016b01d601c90003011801c10143011806080003007a016b018f01430003013401c10143011801d601de01c1014301c9 Tj" + "0.00 -8.80 Td" + "#hex:019b015d000300780143013b016b01de018d000301c9016b020601430003019b01c1000301c9018d011801840184014301c1000301340118018f0003025b01d60003016b018f01c9016b013b0143000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:013b019b018d0143000301f6016b01d60166000301fc019b01de0608000300c101660143000301c901be0143018401840003015d0118016b018401c90003016b015d0003016b01d601c90003011801c101430118 Tj" + "0.00 -8.80 Td" + "#hex:016b018f0134018401de013b014301c90003011800030184011801c1015e014301c10003013401c10143011801d601de01c101430003019b01c10003018d019b01c10143000301d601660118018f0003018f016b018f0143 Tj" + "0.00 -8.80 Td" + "#hex:013401c10143011801d601de01c1014301c906080003002001c10143011801d601de01c1014301c900030118018f013b0003019b0133017d0143013401d601c9000301f6016b01d60166016b018f000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:013b019b018d0143000301f601660143018f000301fc019b01de00030134011801c901d6000301d60166016b01c9000301c901be014301840184000301340118018f0003018d019b01f50143 Tj" + "0.00 -8.80 Td" + "#hex:01d6016601c1019b01de015e01660003016b01d60003015d01c101430143018401fc060800030004018401840003019b01d60166014301c10003013401c10143011801d601de01c1014301c900030118018f013b Tj" + "0.00 -8.80 Td" + "#hex:019b0133017d0143013401d601c90003011801c1014300030133011801c101c10143013b0003015d01c1019b018d000301be011801c901c9016b018f015e000301d6016601c1019b01de015e01660003016b01d60608 Tj" + "0.00 -8.80 Td" + "#hex:00b401be01430184018401c900030118018f013b0003019b01d60166014301c10003018d0118015e016b0134011801840003014302480143013401d601c9000301340118018f060c01d60003014301fb01d60143018f013b Tj" + "0.00 -8.80 Td" + "#hex:01d6016601c1019b01de015e0166000301d6016601430003013b019b018d01430003019b01c100030133014300030134011801c901d6000301d6016601c1019b01de015e01660003016b01d60608000300c101660143 Tj" + "0.00 -8.80 Td" + "#hex:011801d6018d019b01c901be0166014301c101430003016b018f01c9016b013b0143000301d601660143000301c901be0118013401430003016b01c900030134019b018d015d019b01c101d60118013301840143 Tj" + "0.00 -8.80 Td" + "#hex:0118018f013b0003013b01c101fc05fc000301c10143015e011801c1013b0184014301c901c90003019b015d000301d601660143000301f60143011801d60166014301c10003019b01de01d601c9016b013b01430608 Tj" + "0.00 -8.80 Td" + "#hex:00c8018f01d6016b0184000301d601660143000301c901be01430184018400030143018f013b01c905fc000301fc019b01de000301340118018f00030134019b018d018d0118018f013b000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:016b018f01d6014301c1016b019b01c1000301d6019b0003013301430134019b018d01430003013b016b018d018401fc00030184016b01d60003019b01c10003013b011801c101810608000300c1016601430003013b019b018d0143 Tj" + "0.00 -8.80 Td" + "#hex:016b01c90003019b01be011801c001de01430003015d01c1019b018d000301d6016601430003019b01de01d601c9016b013b014305fc0003019b015d00030118018f01fc00030134019b0184019b01c1000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014305fc0003013301de01d60003016b01d60003016b01c9000301d601c10118018f01c901be011801c10143018f01d60003015d01c1019b018d000301d6016601430003016b018f01c9016b013b01430608 Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "216.28 507.35 Td" + "0.00 -8.80 Td" + "#hex:0004000301fe01c2014d01b901b90003016901f6023101fe020b014d01b9000301680178014d0170 Tj" + "ET" + "q" + "/gs22 gs" + "q" + "13.20 0.00 0.00 18.00 373.84 527.51 cm" + "/Im1 Do" + "Q" + "Q" + "BT" + "/F3 10.00 Tf" + "216.28 546.95 Td" + "0.00 -11.00 Td" + "#hex:00c1016b018f01fc0003005301de01d6 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "258.39 546.95 Td" + "0.00 -11.00 Td" + "#hex:000304a201f601a0020b0213014d01b904a3 Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "216.28 533.27 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303fc00030031022a01d00169014d020b01a001d001c4 Tj" + "ET" + "q" + "/gs23 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 216.28 505.18 cm" + "/Form2 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "216.28 509.50 Td" + "\"1 min\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs24 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 252.28 505.18 cm" + "/Form3 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "252.28 509.50 Td" + "\"Self\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs25 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 288.28 505.18 cm" + "/Form4 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "288.28 509.50 Td" + "\"V,S,M\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs26 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 324.28 505.18 cm" + "/Form5 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "324.28 509.50 Td" + "\"8 hrs\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "BT" + "/F2 8.00 Tf" + "36.28 469.18 Td" + "0.00 -8.80 Td" + "#hex:00c10166016b01c9000301c901be0143018401840003013401c10143011801d6014301c900030118018f000301de018f013b01430118013b000301c9014301c101f50118018f01d60608000300200166019b019b01c9014300030118 Tj" + "0.00 -8.80 Td" + "#hex:01be016b018401430003019b015d00030133019b018f014301c90003019b01c10003011800030134019b01c101be01c901430003019b015d00030118000300780143013b016b01de018d0003019b01c1000300b4018d011801840184 Tj" + "0.00 -8.80 Td" + "#hex:016601de018d0118018f019b016b013b000301f6016b01d60166016b018f000301c10118018f015e01430608000300e6019b01de01c1000301c901be0143018401840003016b018d013301de014301c9000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01d6011801c1015e014301d6000301f6016b01d60166000301180003015d019b01de01840003018d016b018d016b013401c101fc0003019b015d00030184016b015d014305fc000301c10118016b01c9016b018f015e0003016b01d60003011801c9 Tj" + "0.00 -8.80 Td" + "#hex:0118018f000301de018f013b01430118013b0003013401c10143011801d601de01c101430608000300c101660143000301d6011801c1015e014301d60003013301430134019b018d014301c900030118 Tj" + "0.00 -8.80 Td" + "#hex:01c9018101430184014301d6019b018f0003016b015d000301fc019b01de000301340166019b01c9014300030133019b018f014301c90003019b01c10003011800030206019b018d0133016b01430003016b015d000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:01340166019b01c901430003011800030134019b01c101be01c901430003062801d6016601430003004b007800030166011801c9000301d6016601430003013401c10143011801d601de01c10143060c01c9 Tj" + "0.00 -8.80 Td" + "#hex:015e0118018d0143000301c901d6011801d6016b01c901d6016b013401c90629060800030086018f000301430118013401660003019b015d000301fc019b01de01c1000301d601de01c1018f01c905fc000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:01340118018f000301de01c901430003011800030133019b018f01de01c900030118013401d6016b019b018f000301d6019b0003018d0143018f01d601180184018401fc00030134019b018d018d0118018f013b Tj" + "0.00 -8.80 Td" + "#hex:0118018f01fc0003013401c10143011801d601de01c10143000301fc019b01de0003018d0118013b0143000301f6016b01d60166000301d60166016b01c9000301c901be0143018401840003016b015d000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:013401c10143011801d601de01c101430003016b01c9000301f6016b01d60166016b018f0003056f05690003015d0143014301d60003019b015d000301fc019b01de00030628016b015d000301fc019b01de00030134019b018f01d601c1019b0184 Tj" + "0.00 -8.80 Td" + "#hex:018d01de018401d6016b01be018401430003013401c10143011801d601de01c1014301c905fc000301fc019b01de000301340118018f00030134019b018d018d0118018f013b00030118018f01fc0003019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:0118018401840003019b015d000301d601660143018d0003011801d6000301d601660143000301c90118018d0143000301d6016b018d014305fc0003016b01c901c901de016b018f015e000301d601660143000301c90118018d0143 Tj" + "0.00 -8.80 Td" + "#hex:0134019b018d018d0118018f013b000301d6019b000301430118013401660003019b018f014306290608000300e6019b01de0003013b01430134016b013b0143000301f60166011801d600030118013401d6016b019b018f Tj" + "0.00 -8.80 Td" + "#hex:01d6016601430003013401c10143011801d601de01c10143000301f6016b01840184000301d601180181014300030118018f013b000301f60166014301c101430003016b01d6000301f6016b018401840003018d019b01f50143 Tj" + "0.00 -8.80 Td" + "#hex:013b01de01c1016b018f015e0003016b01d601c90003018f014301fb01d6000301d601de01c1018f05fc0003019b01c1000301fc019b01de000301340118018f0003016b01c901c901de0143000301180003015e0143018f014301c101180184 Tj" + "0.00 -8.80 Td" + "#hex:0134019b018d018d0118018f013b05fc000301c901de013401660003011801c9000301d6019b0003015e01de011801c1013b00030118000301be011801c101d6016b013401de0184011801c1 Tj" + "0.00 -8.80 Td" + "#hex:013401660118018d0133014301c10003019b01c100030134019b01c101c1016b013b019b01c1060800030058015d000301fc019b01de0003016b01c901c901de01430003018f019b Tj" + "0.00 -8.80 Td" + "#hex:0134019b018d018d0118018f013b01c905fc000301d6016601430003013401c10143011801d601de01c101430003019b018f018401fc0003013b0143015d0143018f013b01c90003016b01d601c901430184015d Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "36.28 507.35 Td" + "0.00 -8.80 Td" + "#hex:00040003017001f601d001f3000301d001920003016801b901d001d0017004760003014d000301f301a0017801690178000301d001920003027f017801fe019b04760003014d01c401700003014d000301f301a001c40169019b000301d001920003016801d001c40178 Tj" + "0.00 -8.80 Td" + "#hex:0170021301fe020b Tj" + "ET" + "q" + "/gs27 gs" + "q" + "13.20 0.00 0.00 18.00 193.84 527.51 cm" + "/Im1 Do" + "Q" + "Q" + "BT" + "/F3 10.00 Tf" + "36.28 546.95 Td" + "0.00 -11.00 Td" + "#hex:0004018f016b018d011801d601430003002701430118013b Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "103.79 546.95 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "36.28 533.27 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303fc0003007a0178016901f601d001c2014d01c401690231 Tj" + "ET" + "q" + "/gs28 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 36.28 505.18 cm" + "/Form2 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "36.28 509.50 Td" + "\"1 min\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs29 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 72.28 505.18 cm" + "/Form3 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "72.28 509.50 Td" + "\"10 ft\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs30 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 108.28 505.18 cm" + "/Form4 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "108.28 509.50 Td" + "\"V,S,M\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs31 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 144.28 505.18 cm" + "/Form5 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "144.28 509.50 Td" + "\"Inst\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs32 gs" + "0.00 0.00 0.00 rg" + "0.02 0.00 0.00 0.02 193.24 298.55 cm" + "/Form6 Do" + "Q" + "BT" + "/F2 8.00 Tf" + "396.28 217.18 Td" + "0.00 -8.80 Td" + "#hex:00200166019b019b01c9014300030118018f0003011801c1014301180003019b015d000301d6014301c101c10118016b018f0003018f019b00030184011801c1015e014301c1000301d601660118018f0003056d0569 Tj" + "0.00 -8.80 Td" + "#hex:015d0143014301d60003019b018f00030118000301c9016b013b0143000301f6016b01d60166016b018f000301c10118018f015e01430608000300e6019b01de000301340118018f000301c1014301c90166011801be0143 Tj" + "0.00 -8.80 Td" + "#hex:013b016b01c101d605fc000301c90118018f013b05fc0003019b01c1000301340184011801fc0003016b018f000301d6016601430003011801c1014301180003016b018f00030118018f01fc0003018d0118018f018f014301c1 Tj" + "0.00 -8.80 Td" + "#hex:01fc019b01de000301340166019b019b01c901430003015d019b01c1000301d6016601430003013b01de01c1011801d6016b019b018f0608000300e6019b01de000301340118018f000301c10118016b01c901430003019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:0184019b01f6014301c1000301d6016601430003011801c101430118060c01c9000301430184014301f5011801d6016b019b018f05fc0003013401c10143011801d601430003019b01c10003025b018401840003016b018f00030118 Tj" + "0.00 -8.80 Td" + "#hex:01d601c10143018f0134016605fc0003014301c10143013401d60003019b01c10003025d011801d601d60143018f00030118000301f601180184018405fc0003019b01c10003015d019b01c1018d00030118000301be016b01840184011801c10608 Tj" + "0.00 -8.80 Td" + "#hex:00c1016601430003014301fb01d60143018f01d60003019b015d00030118018f01fc000301c901de013401660003013401660118018f015e014301c9000301340118018f060c01d60003014301fb013401430143013b Tj" + "0.00 -8.80 Td" + "#hex:016601180184015d000301d6016601430003011801c101430118060c01c900030184011801c1015e014301c901d60003013b016b018d0143018f01c9016b019b018f0608000300b4019b05fc0003016b015d000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:011802480143013401d6000301180003056d05690640015d019b019b01d6000301c901c001de011801c1014305fc000301fc019b01de000301340118018f0003013401c10143011801d6014300030118000301be016b01840184011801c1 Tj" + "0.00 -8.80 Td" + "#hex:01de01be000301d6019b0003056b05690003015d0143014301d600030166016b015e016605fc000301c10118016b01c901430003019b01c100030184019b01f6014301c1000301d601660143000301c901c001de011801c10143060c01c9 Tj" + "0.00 -8.80 Td" + "#hex:01430184014301f5011801d6016b019b018f0003013301fc000301de01be000301d6019b0003056b05690003015d0143014301d605fc0003013b016b015e00030118000301d601c10143018f01340166000301de01be000301d6019b0003056b0569 Tj" + "0.00 -8.80 Td" + "#hex:015d0143014301d60003013b0143014301be05fc00030118018f013b000301c9019b0003019b018f06080003005801d6000301d601180181014301c90003056a05690003018d016b018f01de01d6014301c90003015d019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:01d60166014301c901430003013401660118018f015e014301c9000301d6019b00030134019b018d01be0184014301d6014306080003000401d6000301d60166014300030143018f013b0003019b015d0003014301f5014301c101fc Tj" + "0.00 -8.80 Td" + "#hex:056a05690003018d016b018f01de01d6014301c9000301fc019b01de000301c901be0143018f013b00030134019b018f01340143018f01d601c1011801d6016b018f015e0003019b018f000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01c901be01430184018405fc000301fc019b01de000301340118018f000301340166019b019b01c90143000301180003018f014301f60003011801c1014301180003019b015d000301d6014301c101c10118016b018f000301d6019b Tj" + "0.00 -8.80 Td" + "#hex:011802480143013401d606080003001f01430134011801de01c90143000301d601660143000301d6014301c101c10118016b018f060c01c9000301d601c10118018f01c9015d019b01c1018d011801d6016b019b018f Tj" + "0.00 -8.80 Td" + "#hex:019b0134013401de01c101c9000301c90184019b01f6018401fc05fc0003013401c10143011801d601de01c1014301c90003016b018f000301d6016601430003011801c101430118000301340118018f060c01d6 Tj" + "0.00 -8.80 Td" + "#hex:01de01c901de01180184018401fc000301330143000301d601c1011801be01be0143013b0003019b01c10003016b018f017d01de01c10143013b0003013301fc000301d6016601430003015e01c1019b01de018f013b060c01c9 Tj" + "0.00 -8.80 Td" + "#hex:018d019b01f50143018d0143018f01d60608000300c10166016b01c9000301c901be014301840184000301340118018f060c01d60003018d0118018f016b01be01de0184011801d601430003018f011801d601de01c101180184 Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "396.28 255.35 Td" + "0.00 -8.80 Td" + "#hex:000401c4000301a001f601d001c40003016801b9014d017001780003014d01c401700003014d000301fe01c2014d01b901b900030168014d01930003016901d001c4020b014d01a001c401a001c401930003014d000301c201a00230020b021301f60178 Tj" + "0.00 -8.80 Td" + "#hex:01d00192000301fe01d001a001b901fe04b6016901b9014d02310476000301b901d0014d01c204760003014d01c40170000301fe014d01c40170 Tj" + "ET" + "q" + "/gs33 gs" + "q" + "13.20 0.00 0.00 18.00 553.84 275.51 cm" + "/Im1 Do" + "Q" + "Q" + "BT" + "/F3 10.00 Tf" + "396.28 294.95 Td" + "0.00 -11.00 Td" + "#hex:0078019b01f5014300030031011801c101d60166 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "451.29 294.95 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "396.28 281.27 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303ff000300c101f6014d01c401fe01c20213020b014d020b01a001d001c4 Tj" + "ET" + "q" + "/gs34 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 396.28 253.19 cm" + "/Form2 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "396.28 257.51 Td" + "\"1 Act.\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs35 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 432.28 253.19 cm" + "/Form3 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "432.28 257.51 Td" + "\"120 ft\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs36 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 468.28 253.19 cm" + "/Form4 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "468.28 257.51 Td" + "\"V,S,M\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs37 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 504.28 253.19 cm" + "/Form5 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "504.28 257.51 Td" + "\"Conc, 2 hrs\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs38 gs" + "0.00 0.00 0.00 rg" + "0.02 0.00 0.00 0.02 553.24 46.54 cm" + "/Form6 Do" + "Q" + "BT" + "/F2 8.00 Tf" + "216.28 217.18 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de0003016b018d013301de0143000301180003013401c10143011801d601de01c10143000301fc019b01de000301d6019b01de01340166000301f6016b01d60166000301be019b01c9016b01d6016b01f50143 Tj" + "0.00 -8.80 Td" + "#hex:0143018f014301c1015e01fc000301d6019b000301de018f013b019b000301180003013b01430133016b0184016b01d6011801d6016b018f015e0003014302480143013401d60608000300e6019b01de000301340118018f Tj" + "0.00 -8.80 Td" + "#hex:01c10143013b01de01340143000301d601660143000301d6011801c1015e014301d6060c01c90003014301fb0166011801de01c901d6016b019b018f00030184014301f5014301840003013301fc0003019b018f014305fc0003019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:0143018f013b0003019b018f01430003019b015d000301d6016601430003015d019b01840184019b01f6016b018f015e0003014302480143013401d601c90003019b018f000301d601660143000301d6011801c1015e014301d605fb000305f8 Tj" + "0.00 -8.80 Td" + "#hex:0086018f01430003014302480143013401d6000301d60166011801d6000301340166011801c1018d0143013b0003019b01c1000301be014301d601c1016b025b0143013b000301d601660143000301d6011801c1015e014301d6 Tj" + "0.00 -8.80 Td" + "#hex:05f800030086018f01430003013401de01c101c9014305fc0003016b018f0134018401de013b016b018f015e000301d601660143000301d6011801c1015e014301d6060c01c90003011801d601d601de018f0143018d0143018f01d6 Tj" + "0.00 -8.80 Td" + "#hex:01d6019b000301180003013401de01c101c90143013b0003018d0118015e016b01340003016b01d60143018d000305f800030004018f01fc000301c10143013b01de013401d6016b019b018f000301d6019b0003019b018f0143 Tj" + "0.00 -8.80 Td" + "#hex:019b015d000301d601660143000301d6011801c1015e014301d6060c01c9000301180133016b0184016b01d601fc000301c90134019b01c1014301c9000305f800030086018f01430003014302480143013401d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10143013b01de0134016b018f015e000301d601660143000301d6011801c1015e014301d6060c01c900030166016b01d6000301be019b016b018f01d60003018d011801fb016b018d01de018d Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "216.28 255.35 Td" + "0.00 -8.80 Td" + "#hex:002701a0014d01c201d001c4017000030170021301fe020b0003022b01d001f6020b019b0003014d020b000301b90178014d01fe020b000303fa03f903f90003019301f304760003022b019b01a00169019b0003020b019b0178000301fe01f3017801b901b9 Tj" + "0.00 -8.80 Td" + "#hex:016901d001c401fe021301c2017801fe Tj" + "ET" + "q" + "/gs39 gs" + "q" + "13.20 0.00 0.00 18.00 373.84 275.51 cm" + "/Im1 Do" + "Q" + "Q" + "BT" + "/F3 10.00 Tf" + "216.28 294.95 Td" + "0.00 -11.00 Td" + "#hex:004b01c10143011801d6014301c1000300ac014301c901d6019b01c1011801d6016b019b018f Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "310.80 294.95 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "216.28 281.27 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303fe00030004016801b2021301f6014d020b01a001d001c4 Tj" + "ET" + "q" + "/gs40 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 216.28 253.19 cm" + "/Form2 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "216.28 257.51 Td" + "\"1 Act.\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs41 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 252.28 253.19 cm" + "/Form3 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "252.28 257.51 Td" + "\"Touch\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs42 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 288.28 253.19 cm" + "/Form4 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "288.28 257.51 Td" + "\"V,S,M\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs43 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 324.28 253.19 cm" + "/Form5 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "324.28 257.51 Td" + "\"Inst\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "BT" + "/F2 8.00 Tf" + "36.28 217.18 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de000301be01de01840184000301f6016b01c901be01c90003019b015d000301c901660118013b019b01f60003018d011801d6014301c1016b011801840003015d01c1019b018d000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:00b401660118013b019b01f6015d014301840184000301d6019b0003013401c10143011801d60143000301180003018f019b018f0184016b01f5016b018f015e0003019b0133017d0143013401d60003019b015d Tj" + "0.00 -8.80 Td" + "#hex:01f50143015e014301d601180133018401430003018d011801d601d6014301c1000301f6016b01d60166016b018f000301c10118018f015e014305fb000301c9019b025e0003015e019b019b013b01c905fc Tj" + "0.00 -8.80 Td" + "#hex:01c1019b01be014305fc000301f6019b019b013b05fc0003019b01c1000301c9019b018d014301d60166016b018f015e000301c9016b018d016b0184011801c10608000300e6019b01de000301340118018f00030118018401c9019b Tj" + "0.00 -8.80 Td" + "#hex:01de01c90143000301d60166016b01c9000301c901be014301840184000301d6019b0003013401c10143011801d601430003018d016b018f014301c1011801840003019b0133017d0143013401d601c9000301c901de013401660003011801c9 Tj" + "0.00 -8.80 Td" + "#hex:01c901d6019b018f014305fc0003013401c101fc01c901d60118018405fc0003019b01c10003018d014301d6011801840608000300c1016601430003019b0133017d0143013401d60003013401c10143011801d60143013b Tj" + "0.00 -8.80 Td" + "#hex:018d01de01c901d60003013301430003018f019b00030184011801c1015e014301c1000301d601660118018f000301180003056e06400003015d019b019b01d60003013401de0133014305fc00030118018f013b000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:019b0133017d0143013401d60003018d01de01c901d60003013301430003019b015d000301180003015d019b01c1018d00030118018f013b0003018d011801d6014301c1016b01180184000301d60166011801d6000301fc019b01de Tj" + "0.00 -8.80 Td" + "#hex:0166011801f50143000301c901430143018f000301330143015d019b01c101430608000300c1016601430003013b01de01c1011801d6016b019b018f0003013b014301be0143018f013b01c90003019b018f000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:019b0133017d0143013401d6060c01c90003018d011801d6014301c1016b01180184060800030058015d000301d6016601430003019b0133017d0143013401d60003016b01c900030134019b018d01be019b01c90143013b0003019b015d Tj" + "0.00 -8.80 Td" + "#hex:018d01de018401d6016b01be018401430003018d011801d6014301c1016b0118018401c905fc000301de01c90143000301d601660143000301c90166019b01c101d6014301c901d60003013b01de01c1011801d6016b019b018f0608 Tj" + "0.00 -8.80 Td" + "#hex:0078011801d6014301c1016b011801840003002701de01c1011801d6016b019b018f000300df0143015e014301d601180133018401430003018d011801d601d6014301c10003056a0003013b011801fc Tj" + "0.00 -8.80 Td" + "#hex:00b401d6019b018f01430003019b01c10003013401c101fc01c901d6011801840003056a056b00030166019b01de01c101c9000300a901c101430134016b019b01de01c90003018d014301d60118018401c90003056a Tj" + "0.00 -8.80 Td" + "#hex:0166019b01de01c10003004b0143018d01c90003056a05690003018d016b018f01de01d6014301c900030004013b0118018d0118018f01d6016b018f01430003019b01c10003018d016b01d6016601c101180184 Tj" + "0.00 -8.80 Td" + "#hex:056a0003018d016b018f01de01d60143000300c801c9016b018f015e00030118018f01fc0003018d011801d6014301c1016b011801840003013401c10143011801d60143013b0003013301fc000301d60166016b01c9 Tj" + "0.00 -8.80 Td" + "#hex:01c901be0143018401840003011801c900030118018f019b01d60166014301c1000301c901be014301840184060c01c90003018d011801d6014301c1016b0118018400030134019b018d01be019b018f0143018f01d6 Tj" + "0.00 -8.80 Td" + "#hex:0134011801de01c9014301c9000301d60166011801d6000301c901be014301840184000301d6019b0003015d0118016b018406080003000401d600030053016b015e0166014301c10003006e014301f50143018401c90608 Tj" + "0.00 -8.80 Td" + "#hex:00e001660143018f000301fc019b01de00030134011801c901d6000301d60166016b01c9000301c901be014301840184000301de01c9016b018f015e00030118000301c901be014301840184000301c90184019b01d60003019b015d Tj" + "0.00 -8.80 Td" + "#hex:056f01d6016600030184014301f5014301840003019b01c100030166016b015e0166014301c105fc000301d6016601430003013401de013301430003016b018f013401c10143011801c9014301c90003013301fc0003056e0003015d0143014301d6 Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "36.28 255.35 Td" + "0.00 -8.80 Td" + "#hex:00040003020b01a001c40231000301f301a0017801690178000301d00192000301c2014d020b020b017801f6000301d001920003020b019b0178000301fe014d01c201780003020b023101f30178000301d001920003020b019b0178000301a0020b017801c20003023101d00213 Tj" + "0.00 -8.80 Td" + "#hex:01f301b9014d01c40003020b01d00003016901f60178014d020b0178 Tj" + "ET" + "q" + "/gs44 gs" + "q" + "13.20 0.00 0.00 18.00 193.84 275.51 cm" + "/Im1 Do" + "Q" + "Q" + "BT" + "/F3 10.00 Tf" + "36.28 294.95 Td" + "0.00 -11.00 Td" + "#hex:002001c10143011801d6016b019b018f Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "77.81 294.95 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "36.28 281.27 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303fe0003005801b901b9021301fe01a001d001c4 Tj" + "ET" + "q" + "/gs45 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 36.28 253.19 cm" + "/Form2 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "36.28 257.51 Td" + "\"1 min\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs46 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 72.28 253.19 cm" + "/Form3 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "72.28 257.51 Td" + "\"30 ft\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs47 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 108.28 253.19 cm" + "/Form4 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "108.28 257.51 Td" + "\"V,S,M\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs48 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 144.28 253.19 cm" + "/Form5 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "144.28 257.51 Td" + "\"Special\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs49 gs" + "0.00 0.00 0.00 rg" + "0.02 0.00 0.00 0.02 193.24 46.54 cm" + "/Form6 Do" + "Q"] + ["0.88 0.88 0.88 RG" + "27.64 42.94 m" + "27.64 798.95 l" + "S" + "207.64 42.94 m" + "207.64 798.95 l" + "S" + "387.64 42.94 m" + "387.64 798.95 l" + "S" + "567.64 42.94 m" + "567.64 798.95 l" + "S" + "27.64 42.94 m" + "567.64 42.94 l" + "S" + "27.64 294.95 m" + "567.64 294.95 l" + "S" + "27.64 546.95 m" + "567.64 546.95 l" + "S" + "27.64 798.95 m" + "567.64 798.95 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 831.09 Td" + "#hex:00a9014d01930178000303fa000304a201f60178022a017801f601fe017804a3 Tj" + "ET" + "BT" + "/F2 10.00 Tf" + "36.28 793.18 Td" + "0.00 -11.00 Td" + "#hex:00780118015e016b013400030078019b01de01d60166 Tj" + "ET" + "BT" + "/F3 8.00 Tf" + "36.28 781.66 Td" + "0.00 -8.80 Td" + "#hex:01c1014301be0143011801d60003016b01d601c90003018d014301c901c90118015e0143000301f601660143018f014301f5014301c1000301d601660143000301d601c1016b015e015e014301c1 Tj" + "0.00 -8.80 Td" + "#hex:019b0134013401de01c101c90608000300c101660143000301d601c1016b015e015e014301c1016b018f015e00030134016b01c1013401de018d01c901d60118018f01340143000301340118018f0003013301430003011801c9 Tj" + "0.00 -8.80 Td" + "#hex:015e0143018f014301c1011801840003019b01c10003011801c90003013b014301d60118016b01840143013b0003011801c9000301fc019b01de00030184016b0181014305fc000301d60166019b01de015e01660003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:018d01de01c901d600030133014300030133011801c90143013b0003019b018f000301f5016b01c901de011801840003019b01c10003011801de013b016b01330184014300030134019b018f013b016b01d6016b019b018f01c9 Tj" + "0.00 -8.80 Td" + "#hex:01d60166011801d60003019b0134013401de01c1000301f6016b01d60166016b018f0003056c05690003015d0143014301d60003019b015d000301d6016601430003019b0133017d0143013401d606080003004a019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:014301fb0118018d01be0184014305fc000301fc019b01de00030134019b01de0184013b0003016b018f01c901d601c101de013401d6000301d6016601430003018d019b01de01d60166000301d6019b Tj" + "0.00 -8.80 Td" + "#hex:01c901be014301180181000301f601660143018f00030118018f01fc0003013401c10143011801d601de01c101430003018d019b01f5014301c9000301f6016b01d60166016b018f0003056c05690003015d0143014301d6 Tj" + "0.00 -8.80 Td" + "#hex:019b015d000301d6016601430003019b0133017d0143013401d60003019b01c1000301f601660143018f00030118000301c9016b018401f5014301c100030133014301840184000301c1016b018f015e01c9000301f6016b01d60166016b018f Tj" + "0.00 -8.80 Td" + "#hex:056c05690003015d0143014301d60003019b015d0003016b01d60608 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "101.26 793.18 Td" + "0.00 -11.00 Td" + "#hex:04a201f60178022a017801f601fe017804a3 Tj" + "ET" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "82.65 558.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 45.64 348.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "82.65 306.46 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F2 10.00 Tf" + "36.28 289.18 Td" + "0.00 -11.00 Td" + "#hex:0078019b01f5014300030031011801c101d60166 Tj" + "ET" + "BT" + "/F3 8.00 Tf" + "36.28 277.67 Td" + "0.00 -8.80 Td" + "#hex:01c901d6019b018f01430003019b01c1000301c901d6019b018f014300030134019b018f01c901d601c101de013401d6016b019b018f0608000300ac019b0134018101c900030118018f013b Tj" + "0.00 -8.80 Td" + "#hex:01c901d601c101de013401d601de01c1014301c9000301c90166016b025e000301d6019b0003011801340134019b018d018d019b013b011801d60143000301d6016601430003018f014301f6 Tj" + "0.00 -8.80 Td" + "#hex:01d6014301c101c10118016b018f060800030058015d000301d601660143000301f6011801fc000301fc019b01de000301c90166011801be0143000301d601660143000301d6014301c101c10118016b018f000301f6019b01de0184013b Tj" + "0.00 -8.80 Td" + "#hex:018d01180181014300030118000301c901d601c101de013401d601de01c10143000301de018f01c901d6011801330184014305fc0003016b01d60003018d016b015e016601d600030134019b01840184011801be01c901430608 Tj" + "0.00 -8.80 Td" + "#hex:00b4016b018d016b0184011801c1018401fc05fc000301d60166016b01c9000301c901be0143018401840003013b019b014301c9018f060c01d60003013b016b01c10143013401d6018401fc0003011802480143013401d6 Tj" + "0.00 -8.80 Td" + "#hex:01be01840118018f01d60003015e01c1019b01f601d601660608000300c1016601430003018d019b01f50143013b00030143011801c101d6016600030134011801c101c1016b014301c900030118018f01fc Tj" + "0.00 -8.80 Td" + "#hex:01be01840118018f01d601c9000301180184019b018f015e000301f6016b01d601660003016b01d60608 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "93.45 289.18 Td" + "0.00 -11.00 Td" + "#hex:04a201f60178022a017801f601fe017804a3 Tj" + "ET" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "82.65 54.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 225.64 600.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "262.65 558.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 225.64 348.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "262.65 306.46 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 225.64 96.94 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "262.65 54.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 405.64 600.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "442.65 558.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F2 10.00 Tf" + "396.28 541.18 Td" + "0.00 -11.00 Td" + "#hex:0004018f016b018d011801d601430003002701430118013b Tj" + "ET" + "BT" + "/F3 8.00 Tf" + "396.28 529.66 Td" + "0.00 -8.80 Td" + "#hex:0118015e0118016b018f01c901d600030166019b01c901d6016b018401430003013401c10143011801d601de01c1014301c9060800030086018f013401430003015e016b01f50143018f00030118018f0003019b01c1013b014301c105fc Tj" + "0.00 -8.80 Td" + "#hex:01d6016601430003013401c10143011801d601de01c1014300030134019b018f01d6016b018f01de014301c9000301d6019b0003015d019b01840184019b01f60003016b01d6000301de018f01d6016b01840003016b01d601c9000301d6011801c90181 Tj" + "0.00 -8.80 Td" + "#hex:016b01c900030134019b018d01be0184014301d601430608000300c1016601430003013401c10143011801d601de01c101430003016b01c9000301de018f013b014301c1000301fc019b01de01c100030134019b018f01d601c1019b0184 Tj" + "0.00 -8.80 Td" + "#hex:015d019b01c10003056b056d00030166019b01de01c101c905fc00030118025e014301c1000301f60166016b013401660003016b01d6000301c901d6019b01be01c90003019b0133014301fc016b018f015e00030118018f01fc Tj" + "0.00 -8.80 Td" + "#hex:0134019b018d018d0118018f013b000301fc019b01de060c01f501430003015e016b01f50143018f0003016b01d60608000300c1019b0003018d0118016b018f01d60118016b018f00030134019b018f01d601c1019b0184 Tj" + "0.00 -8.80 Td" + "#hex:019b015d000301d6016601430003013401c10143011801d601de01c101430003015d019b01c100030118018f019b01d60166014301c10003056b056d00030166019b01de01c101c905fc000301fc019b01de0003018d01de01c901d6 Tj" + "0.00 -8.80 Td" + "#hex:0134011801c901d6000301d60166016b01c9000301c901be0143018401840003019b018f000301d6016601430003013401c10143011801d601de01c1014300030118015e0118016b018f000301330143015d019b01c10143000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:013401de01c101c10143018f01d60003056b056d06400166019b01de01c1000301be014301c1016b019b013b00030143018f013b01c90608000300c10166016b01c9000301de01c901430003019b015d000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01c901be014301840184000301c10143011801c901c9014301c101d601c9000301fc019b01de01c100030134019b018f01d601c1019b01840003019b01f5014301c1000301de01be000301d6019b0003015d019b01de01c1 Tj" + "0.00 -8.80 Td" + "#hex:013401c10143011801d601de01c1014301c9000301fc019b01de00030166011801f5014300030118018f016b018d011801d60143013b000301f6016b01d60166000301d60166016b01c9000301c901be01430184018405fc Tj" + "0.00 -8.80 Td" + "#hex:01c1011801d60166014301c1000301d601660118018f00030118018f016b018d011801d6016b018f015e000301180003018f014301f60003019b018f014306080003000401d600030053016b015e0166014301c1 Tj" + "0.00 -8.80 Td" + "#hex:006e014301f50143018401c90608000300e001660143018f000301fc019b01de00030134011801c901d6000301d60166016b01c9000301c901be014301840184000301de01c9016b018f015e00030118000301c901be014301840184 Tj" + "0.00 -8.80 Td" + "#hex:01c90184019b01d60003019b015d0003056d01d6016600030184014301f5014301840003019b01c100030166016b015e0166014301c105fc000301fc019b01de00030118018f016b018d011801d601430003019b01c1 Tj" + "0.00 -8.80 Td" + "#hex:01c10143011801c901c9014301c101d600030134019b018f01d601c1019b01840003019b01f5014301c1000301d601f6019b00030118013b013b016b01d6016b019b018f01180184000301de018f013b01430118013b Tj" + "0.00 -8.80 Td" + "#hex:013401c10143011801d601de01c1014301c90003015d019b01c100030143011801340166000301c90184019b01d600030184014301f501430184000301180133019b01f501430003056c01c1013b0608000300310118013401660003019b015d Tj" + "0.00 -8.80 Td" + "#hex:01d6016601430003013401c10143011801d601de01c1014301c90003018d01de01c901d600030134019b018d01430003015d01c1019b018d000301180003013b016b0248014301c10143018f01d6 Tj" + "0.00 -8.80 Td" + "#hex:0134019b01c101be01c901430003019b01c1000301be016b018401430003019b015d00030133019b018f014301c90608 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "465.95 541.18 Td" + "0.00 -11.00 Td" + "#hex:04a201f60178022a017801f601fe017804a3 Tj" + "ET" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "442.65 306.46 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "BT" + "/F2 10.00 Tf" + "396.28 289.18 Td" + "0.00 -11.00 Td" + "#hex:002001c10143011801d6016b019b018f Tj" + "ET" + "BT" + "/F3 8.00 Tf" + "396.28 277.67 Td" + "0.00 -8.80 Td" + "#hex:015d019b01c100030143011801340166000301c90184019b01d600030184014301f501430184000301180133019b01f501430003056e01d601660608 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "439.97 289.18 Td" + "0.00 -11.00 Td" + "#hex:04a201f60178022a017801f601fe017804a3 Tj" + "ET" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "442.65 54.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET"] + ["0.88 0.88 0.88 RG" + "27.64 42.94 m" + "27.64 798.95 l" + "S" + "207.64 42.94 m" + "207.64 798.95 l" + "S" + "387.64 42.94 m" + "387.64 798.95 l" + "S" + "567.64 42.94 m" + "567.64 798.95 l" + "S" + "27.64 42.94 m" + "567.64 42.94 l" + "S" + "27.64 294.95 m" + "567.64 294.95 l" + "S" + "27.64 546.95 m" + "567.64 546.95 l" + "S" + "27.64 798.95 m" + "567.64 798.95 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 831.09 Td" + "#hex:00a9014d01930178000303fb Tj" + "ET" + "BT" + "/F2 8.00 Tf" + "396.28 721.18 Td" + "0.00 -8.80 Td" + "#hex:000400030134016601de01c1018f016b018f015e000301c901d6019b01c1018d000301340184019b01de013b0003015d019b01c1018d01c905fc000301340143018f01d6014301c10143013b0003019b018f00030118 Tj" + "0.00 -8.80 Td" + "#hex:01be019b016b018f01d6000301fc019b01de000301340118018f000301c90143014300030118018f013b000301c901be01c101430118013b016b018f015e000301d6019b00030118000301c10118013b016b01de01c90003019b015d Tj" + "0.00 -8.80 Td" + "#hex:056c056f05690003015d0143014301d606080003006e016b015e016601d6018f016b018f015e0003025d011801c90166014301c90003016b018f000301d6016601430003011801c10143011805fc000301d6016601de018f013b014301c1 Tj" + "0.00 -8.80 Td" + "#hex:0133019b019b018d01c905fc00030118018f013b000301c901d601c1019b018f015e000301f6016b018f013b01c9000301c1019b011801c10608000300310118013401660003013401c10143011801d601de01c10143 Tj" + "0.00 -8.80 Td" + "#hex:01de018f013b014301c1000301d601660143000301340184019b01de013b00030628018f019b0003018d019b01c10143000301d601660118018f0003056e05fc0569056905690003015d0143014301d6 Tj" + "0.00 -8.80 Td" + "#hex:01330143018f0143011801d60166000301d601660143000301340184019b01de013b0629000301f601660143018f0003016b01d60003011801be01be0143011801c101c90003018d01de01c901d60003018d011801810143 Tj" + "0.00 -8.80 Td" + "#hex:011800030020019b018f01c901d6016b01d601de01d6016b019b018f000301c9011801f5016b018f015e000301d6016601c1019b01f6060800030086018f000301180003015d0118016b01840143013b000301c9011801f5014305fc Tj" + "0.00 -8.80 Td" + "#hex:01180003013401c10143011801d601de01c10143000301d601180181014301c90003056b013b056f000301d6016601de018f013b014301c10003013b0118018d0118015e014300030118018f013b Tj" + "0.00 -8.80 Td" + "#hex:013301430134019b018d014301c90003013b01430118015d0143018f0143013b0003015d019b01c10003056e0003018d016b018f01de01d6014301c9060800030031011801340166000301c1019b01de018f013b Tj" + "0.00 -8.80 Td" + "#hex:01fc019b01de0003018d0118016b018f01d60118016b018f00030134019b018f01340143018f01d601c1011801d6016b019b018f0003019b018f000301d60166016b01c9000301c901be01430184018405fc000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01c901d6019b01c1018d000301be01c1019b013b01de0134014301c900030118013b013b016b01d6016b019b018f011801840003014302480143013401d601c90003019b018f000301fc019b01de01c1 Tj" + "0.00 -8.80 Td" + "#hex:01d601de01c1018f0608000300ac019b01de018f013b0003056b0608000300040134016b013b016b0134000301c10118016b018f0003015d01180184018401c90003015d01c1019b018d000301d601660143000301340184019b01de013b0608 Tj" + "0.00 -8.80 Td" + "#hex:00310118013401660003013401c10143011801d601de01c1014300030118018f013b0003019b0133017d0143013401d6000301de018f013b014301c1000301d601660143000301340184019b01de013b000301d601180181014301c9 Tj" + "0.00 -8.80 Td" + "#hex:056a013b056f000301180134016b013b0003013b0118018d0118015e01430608000300ac019b01de018f013b0003056c0608000300e6019b01de00030134011801840184000301c9016b01fb00030133019b018401d601c90003019b015d Tj" + "0.00 -8.80 Td" + "#hex:0184016b015e016601d6018f016b018f015e0003015d01c1019b018d000301d601660143000301340184019b01de013b000301d6019b000301c901d601c1016b01810143000301c9016b01fb0003013401c10143011801d601de01c1014301c9 Tj" + "0.00 -8.80 Td" + "#hex:019b01c10003019b0133017d0143013401d601c90003019b015d000301fc019b01de01c1000301340166019b016b01340143000301330143018f0143011801d60166000301d601660143000301340184019b01de013b060800030004 Tj" + "0.00 -8.80 Td" + "#hex:015e016b01f50143018f0003013401c10143011801d601de01c101430003019b01c10003019b0133017d0143013401d6000301340118018f060c01d6000301330143000301c901d601c101de013401810003013301fc Tj" + "0.00 -8.80 Td" + "#hex:018d019b01c10143000301d601660118018f0003019b018f014300030133019b018401d6060800030004000301c901d601c101de013401810003013401c10143011801d601de01c101430003018d01de01c901d6 Tj" + "0.00 -8.80 Td" + "#hex:018d0118018101430003011800030027014301fb01d6014301c1016b01d601fc000301c9011801f5016b018f015e000301d6016601c1019b01f60608000300c1016601430003013401c10143011801d601de01c10143 Tj" + "ET" + "q" + "/gs1 gs" + "q" + "13.20 0.00 0.00 18.00 553.84 779.51 cm" + "/Im1 Do" + "Q" + "Q" + "BT" + "/F3 10.00 Tf" + "396.28 798.95 Td" + "0.00 -11.00 Td" + "#hex:00b401d6019b01c1018d0003019b015d000300df0143018f015e01430118018f01340143 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "490.91 798.95 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "396.28 785.27 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000304020003002001d001c401b2021301f6014d020b01a001d001c4 Tj" + "ET" + "q" + "/gs2 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 396.28 757.18 cm" + "/Form2 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "396.28 761.51 Td" + "\"1 Act.\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs3 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 432.28 757.18 cm" + "/Form3 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "432.28 761.51 Td" + "\"Sight\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs4 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 468.28 757.18 cm" + "/Form4 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "468.28 761.51 Td" + "\"V,S\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs5 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 504.28 757.18 cm" + "/Form5 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "504.28 761.51 Td" + "\"Conc, 1 min\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs6 gs" + "0.00 0.00 0.00 rg" + "0.02 0.00 0.00 0.02 553.24 550.54 cm" + "/Form6 Do" + "Q" + "BT" + "/F2 8.00 Tf" + "216.28 721.18 Td" + "0.00 -8.80 Td" + "#hex:00c8018f01d6016b0184000301d601660143000301c901be01430184018400030143018f013b01c905fc000301f601660143018f000301fc019b01de0003018d01180181014300030118 Tj" + "0.00 -8.80 Td" + "#hex:00200166011801c1016b01c9018d011800030134016601430134018105fc000301fc019b01de000301340118018f000301c1014301be0184011801340143000301d6016601430003018f01de018d0133014301c1 Tj" + "0.00 -8.80 Td" + "#hex:01fc019b01de000301c1019b01840184000301f6016b01d60166000301180003056a056e060800030004013b013b016b01d6016b019b018f01180184018401fc05fc0003018f019b0003018d011801d601d6014301c1 Tj" + "0.00 -8.80 Td" + "#hex:01f60166011801d6000301fc019b01de000301c9011801fc05fc0003018d0118015e016b0134000301d60166011801d6000301f6019b01de0184013b0003013b014301d6014301c1018d016b018f01430003016b015d Tj" + "0.00 -8.80 Td" + "#hex:01fc019b01de0003011801c10143000301d6014301840184016b018f015e000301d601660143000301d601c101de01d601660003016b018f013b016b0134011801d6014301c9000301d60166011801d6000301fc019b01de0003011801c10143 Tj" + "0.00 -8.80 Td" + "#hex:01330143016b018f015e000301d601c101de01d60166015d01de01840608 Tj" + "ET" + "q" + "/gs7 gs" + "q" + "13.20 0.00 0.00 18.00 373.84 779.51 cm" + "/Im1 Do" + "Q" + "Q" + "BT" + "/F3 10.00 Tf" + "216.28 798.95 Td" + "0.00 -11.00 Td" + "#hex:004b0184016b0133018f014301c901c9 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "257.47 798.95 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "216.28 785.27 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b900030401000300c101f6014d01c401fe01c20213020b014d020b01a001d001c4 Tj" + "ET" + "q" + "/gs8 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 216.28 757.18 cm" + "/Form2 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "216.28 761.51 Td" + "\"1 Act.\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs9 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 252.28 757.18 cm" + "/Form3 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "252.28 761.51 Td" + "\"Self\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs10 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 288.28 757.18 cm" + "/Form4 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "288.28 761.51 Td" + "\"V\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs11 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 324.28 757.18 cm" + "/Form5 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "324.28 761.51 Td" + "\"1 hr\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "BT" + "/F2 8.00 Tf" + "36.28 721.18 Td" + "0.00 -8.80 Td" + "#hex:00c10166016b01c9000301c901be0143018401840003013401c10143011801d6014301c9000301180003018d0118015e016b01340118018400030184016b018f018100030133014301d601f601430143018f00030118 Tj" + "0.00 -8.80 Td" + "#hex:006e011801c1015e01430003019b01c100030184011801c1015e014301c10003016b018f0118018f016b018d011801d60143000301be01840118018f01d6000301f6016b01d60166016b018f000301c10118018f015e0143 Tj" + "0.00 -8.80 Td" + "#hex:0118018f013b00030118018f019b01d60166014301c1000301be01840118018f01d605fc0003011801d600030118018f01fc0003013b016b01c901d60118018f0134014305fc0003019b018f000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01c90118018d0143000301be01840118018f01430003019b015d0003014301fb016b01c901d60143018f013401430608000300e6019b01de0003018d01de01c901d600030166011801f50143000301c901430143018f Tj" + "0.00 -8.80 Td" + "#hex:019b01c1000301d6019b01de013401660143013b000301d6016601430003013b014301c901d6016b018f011801d6016b019b018f000301be01840118018f01d60003011801d6000301840143011801c901d60003019b018f01340143 Tj" + "0.00 -8.80 Td" + "#hex:01330143015d019b01c1014306080003004a019b01c1000301d6016601430003013b01de01c1011801d6016b019b018f05fc00030118018f01fc0003013401c10143011801d601de01c10143000301340118018f000301c901d6014301be Tj" + "0.00 -8.80 Td" + "#hex:016b018f01d6019b000301d601660143000301d6011801c1015e014301d6000301be01840118018f01d600030118018f013b0003014301fb016b01d60003015d01c1019b018d000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:013b014301c901d6016b018f011801d6016b019b018f000301be01840118018f01d60003013301fc000301de01c9016b018f015e0003056e0003015d0143014301d60003019b015d0003018d019b01f50143018d0143018f01d60608 Tj" + "ET" + "q" + "/gs12 gs" + "q" + "13.20 0.00 0.00 18.00 193.84 779.51 cm" + "/Im1 Do" + "Q" + "Q" + "BT" + "/F3 10.00 Tf" + "36.28 798.95 Td" + "0.00 -11.00 Td" + "#hex:00c101c10118018f01c901be019b01c101d6000301f5016b0118000300a901840118018f01d601c9 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "134.10 798.95 Td" + "0.00 -11.00 Td" + "\"\" Tj" + "ET" + "BT" + "/F1 8.00 Tf" + "36.28 785.27 Td" + "0.00 -8.80 Td" + "#hex:00e001a0023b014d01f601700003006e0178022a017801b9000303ff0003002001d001c401b2021301f6014d020b01a001d001c4 Tj" + "ET" + "q" + "/gs13 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 36.28 757.18 cm" + "/Form2 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "36.28 761.51 Td" + "\"1 Act.\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs14 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 72.28 757.18 cm" + "/Form3 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "72.28 761.51 Td" + "\"10 ft\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs15 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 108.28 757.18 cm" + "/Form4 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "108.28 761.51 Td" + "\"V,S\" Tj" + "ET" + "0.00 0.00 0.00 rg" + "q" + "/gs16 gs" + "0.00 0.00 0.00 rg" + "0.04 0.00 0.00 0.04 144.28 757.18 cm" + "/Form5 Do" + "Q" + "0.00 0.00 0.00 rg" + "BT" + "/F4 8.00 Tf" + "144.28 761.51 Td" + "\"1 Rnd\" Tj" + "ET" + "0.00 0.00 0.00 rg"] + ["0.88 0.88 0.88 RG" + "27.64 42.94 m" + "27.64 798.95 l" + "S" + "207.64 42.94 m" + "207.64 798.95 l" + "S" + "387.64 42.94 m" + "387.64 798.95 l" + "S" + "567.64 42.94 m" + "567.64 798.95 l" + "S" + "27.64 42.94 m" + "567.64 42.94 l" + "S" + "27.64 294.95 m" + "567.64 294.95 l" + "S" + "27.64 546.95 m" + "567.64 546.95 l" + "S" + "27.64 798.95 m" + "567.64 798.95 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 831.09 Td" + "#hex:00a9014d01930178000303fb000304a201f60178022a017801f601fe017804a3 Tj" + "ET" + "BT" + "/F2 10.00 Tf" + "36.28 793.18 Td" + "0.00 -11.00 Td" + "#hex:00b401d6019b01c1018d0003019b015d000300df0143018f015e01430118018f01340143 Tj" + "ET" + "BT" + "/F3 8.00 Tf" + "36.28 781.66 Td" + "0.00 -8.80 Td" + "#hex:01d601180181014301c90003056a0569013b056f00030184016b015e016601d6018f016b018f015e0003013b0118018d0118015e01430003019b018f000301180003015d0118016b01840143013b000301c9011801f5014305fc Tj" + "0.00 -8.80 Td" + "#hex:019b01c10003016601180184015d0003011801c90003018d01de013401660003013b0118018d0118015e01430003019b018f00030118000301c901de01340134014301c901c9015d01de01840003019b018f01430608 Tj" + "0.00 -8.80 Td" + "#hex:00ac019b01de018f013b0003056d0608000300530118016b018401c901d6019b018f014301c9000301c10118016b018f0003013b019b01f6018f0003015d01c1019b018d000301d601660143 Tj" + "0.00 -8.80 Td" + "#hex:01340184019b01de013b0608000300310118013401660003013401c10143011801d601de01c10143000301de018f013b014301c1000301d601660143000301340184019b01de013b000301d601180181014301c90003056b013b056f Tj" + "0.00 -8.80 Td" + "#hex:0133018401de013b015e0143019b018f016b018f015e0003013b0118018d0118015e01430608000300ac019b01de018f013b0003056e063d056a056906080003004b01de01c901d601c900030118018f013b Tj" + "0.00 -8.80 Td" + "#hex:015d01c1014301430206016b018f015e000301c10118016b018f0003011801c901c90118016b0184000301d6016601430003011801c101430118000301de018f013b014301c1000301d601660143000301340184019b01de013b0608 Tj" + "0.00 -8.80 Td" + "#hex:00c1016601430003011801c1014301180003013301430134019b018d014301c90003013b016b0249013401de018401d6000301d6014301c101c10118016b018f00030118018f013b0003016b01c9 Tj" + "0.00 -8.80 Td" + "#hex:01660143011801f5016b018401fc0003019b013301c9013401de01c10143013b0608000300310118013401660003013401c10143011801d601de01c10143000301d60166014301c10143000301d601180181014301c9 Tj" + "0.00 -8.80 Td" + "#hex:056a013b056f00030134019b0184013b0003013b0118018d0118015e01430608000300ac0118018f015e0143013b000301f60143011801be019b018f0003011801d601d601180134018101c90003016b018f Tj" + "0.00 -8.80 Td" + "#hex:01d6016601430003011801c1014301180003011801c101430003016b018d01be019b01c901c9016b0133018401430608000300c101660143000301f6016b018f013b00030118018f013b000301c10118016b018f Tj" + "0.00 -8.80 Td" + "#hex:0134019b01de018f01d60003011801c900030118000301c9014301f5014301c101430003013b016b01c901d601c10118013401d6016b019b018f0003015d019b01c1000301d601660143000301be01de01c101be019b01c9014301c9 Tj" + "0.00 -8.80 Td" + "#hex:019b015d0003018d0118016b018f01d60118016b018f016b018f015e00030134019b018f01340143018f01d601c1011801d6016b019b018f0003019b018f000301c901be01430184018401c90608 Tj" + "0.00 -8.80 Td" + "#hex:004a016b018f01180184018401fc05fc0003015e01de01c901d601c90003019b015d000301c901d601c1019b018f015e000301f6016b018f013b0003062801c10118018f015e016b018f015e0003015d01c1019b018d0003056b0569 Tj" + "0.00 -8.80 Td" + "#hex:01d6019b0003056e05690003018d016b0184014301c9000301be014301c100030166019b01de01c106290003011801de01d6019b018d011801d6016b013401180184018401fc0003013b016b01c901be014301c101c90143 Tj" + "0.00 -8.80 Td" + "#hex:015d019b015e05fc0003018d016b01c901d601c905fc00030118018f013b000301c9016b018d016b0184011801c1000301be01660143018f019b018d0143018f01180003016b018f000301d6016601430003011801c10143011805fc Tj" + "0.00 -8.80 Td" + "#hex:01f60166014301d60166014301c10003018d01de018f013b0118018f01430003019b01c10003018d0118015e016b0134011801840608 Tj" + "ET" + "BT" + "/F1 10.00 Tf" + "133.07 793.18 Td" + "0.00 -11.00 Td" + "#hex:04a201f60178022a017801f601fe017804a3 Tj" + "ET" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "82.65 558.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 45.64 348.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "82.65 306.46 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 45.64 96.94 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "82.65 54.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 225.64 600.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "262.65 558.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 225.64 348.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "262.65 306.46 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 225.64 96.94 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "262.65 54.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 405.64 600.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "442.65 558.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 405.64 348.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "442.65 306.46 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 405.64 96.94 cm" + "/Im1 Do" + "Q" + "BT" + "/F3 6.00 Tf" + "0.45 0.45 0.45 rg" + "442.65 54.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET"] + ["0.88 0.88 0.88 RG" + "27.64 42.94 m" + "27.64 798.95 l" + "S" + "207.64 42.94 m" + "207.64 798.95 l" + "S" + "387.64 42.94 m" + "387.64 798.95 l" + "S" + "567.64 42.94 m" + "567.64 798.95 l" + "S" + "27.64 42.94 m" + "567.64 42.94 l" + "S" + "27.64 294.95 m" + "567.64 294.95 l" + "S" + "27.64 546.95 m" + "567.64 546.95 l" + "S" + "27.64 798.95 m" + "567.64 798.95 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 831.09 Td" + "#hex:00a9014d01930178000303fa Tj" + "ET" + "1.10 w" + "406.36 792.47 m" + "548.92 792.47 l" + "561.16 780.22 l" + "561.16 565.66 l" + "548.92 553.42 l" + "406.36 553.42 l" + "394.12 565.66 l" + "394.12 780.22 l" + "s" + "0.45 w" + "406.36 789.44 m" + "548.92 789.44 l" + "558.14 780.22 l" + "558.14 565.66 l" + "548.92 556.45 l" + "406.36 556.45 l" + "397.14 565.66 l" + "397.14 780.22 l" + "s" + "0.70 w" + "401.68 787.50 m" + "404.27 784.91 l" + "401.68 782.31 l" + "399.09 784.91 l" + "h" + "S" + "553.60 787.50 m" + "556.19 784.91 l" + "553.60 782.31 l" + "551.01 784.91 l" + "h" + "S" + "401.68 563.58 m" + "404.27 560.98 l" + "401.68 558.39 l" + "399.09 560.98 l" + "h" + "S" + "553.60 563.58 m" + "556.19 560.98 l" + "553.60 558.39 l" + "551.01 560.98 l" + "h" + "S" + "1.00 w" + "0.50 w" + "407.80 781.30 m" + "454.60 781.30 l" + "S" + "500.68 781.30 m" + "547.48 781.30 l" + "S" + "0.60 w" + "461.08 784.04 m" + "463.82 781.30 l" + "461.08 778.57 l" + "458.34 781.30 l" + "h" + "f" + "469.36 784.04 m" + "472.10 781.30 l" + "469.36 778.57 l" + "466.62 781.30 l" + "h" + "f" + "477.64 784.04 m" + "480.38 781.30 l" + "477.64 778.57 l" + "474.90 781.30 l" + "h" + "f" + "485.92 784.04 m" + "488.66 781.30 l" + "485.92 778.57 l" + "483.18 781.30 l" + "h" + "S" + "494.20 784.04 m" + "496.94 781.30 l" + "494.20 778.57 l" + "491.46 781.30 l" + "h" + "S" + "1.00 w" + "0.50 w" + "423.64 560.27 m" + "471.52 560.27 l" + "S" + "483.76 560.27 m" + "531.64 560.27 l" + "S" + "477.64 562.57 m" + "479.94 560.27 l" + "477.64 557.96 l" + "475.34 560.27 l" + "h" + "S" + "1.00 w" + "0.70 w" + "538.84 728.03 m" + "544.96 728.03 l" + "547.48 725.51 l" + "547.48 720.10 l" + "544.96 717.59 l" + "538.84 717.59 l" + "536.32 720.10 l" + "536.32 725.51 l" + "s" + "BT" + "/F2 7.00 Tf" + "539.37 720.18 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "407.80 773.03 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc000300b401d601de013b013b0143013b Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "402.04 726.95 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "402.04 711.10 m" + "553.24 711.10 l" + "S" + "0.35 w" + "402.04 708.59 m" + "553.24 708.59 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "402.04 703.91 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "449.36 582.67 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "226.36 792.47 m" + "368.92 792.47 l" + "381.16 780.22 l" + "381.16 565.66 l" + "368.92 553.42 l" + "226.36 553.42 l" + "214.12 565.66 l" + "214.12 780.22 l" + "s" + "0.45 w" + "226.36 789.44 m" + "368.92 789.44 l" + "378.14 780.22 l" + "378.14 565.66 l" + "368.92 556.45 l" + "226.36 556.45 l" + "217.14 565.66 l" + "217.14 780.22 l" + "s" + "0.70 w" + "221.68 787.50 m" + "224.27 784.91 l" + "221.68 782.31 l" + "219.09 784.91 l" + "h" + "S" + "373.60 787.50 m" + "376.19 784.91 l" + "373.60 782.31 l" + "371.01 784.91 l" + "h" + "S" + "221.68 563.58 m" + "224.27 560.98 l" + "221.68 558.39 l" + "219.09 560.98 l" + "h" + "S" + "373.60 563.58 m" + "376.19 560.98 l" + "373.60 558.39 l" + "371.01 560.98 l" + "h" + "S" + "1.00 w" + "0.50 w" + "227.80 781.30 m" + "274.60 781.30 l" + "S" + "320.68 781.30 m" + "367.48 781.30 l" + "S" + "0.60 w" + "281.08 784.04 m" + "283.82 781.30 l" + "281.08 778.57 l" + "278.34 781.30 l" + "h" + "f" + "289.36 784.04 m" + "292.10 781.30 l" + "289.36 778.57 l" + "286.62 781.30 l" + "h" + "f" + "297.64 784.04 m" + "300.38 781.30 l" + "297.64 778.57 l" + "294.90 781.30 l" + "h" + "f" + "305.92 784.04 m" + "308.66 781.30 l" + "305.92 778.57 l" + "303.18 781.30 l" + "h" + "S" + "314.20 784.04 m" + "316.94 781.30 l" + "314.20 778.57 l" + "311.46 781.30 l" + "h" + "S" + "1.00 w" + "0.50 w" + "243.64 560.27 m" + "291.52 560.27 l" + "S" + "303.76 560.27 m" + "351.64 560.27 l" + "S" + "297.64 562.57 m" + "299.94 560.27 l" + "297.64 557.96 l" + "295.34 560.27 l" + "h" + "S" + "1.00 w" + "0.70 w" + "358.84 728.03 m" + "364.96 728.03 l" + "367.48 725.51 l" + "367.48 720.10 l" + "364.96 717.59 l" + "358.84 717.59 l" + "356.32 720.10 l" + "356.32 725.51 l" + "s" + "BT" + "/F2 7.00 Tf" + "359.37 720.18 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "227.80 773.03 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc0003006e0143011801d60166014301c1 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "222.04 726.95 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "222.04 711.10 m" + "373.24 711.10 l" + "S" + "0.35 w" + "222.04 708.59 m" + "373.24 708.59 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "222.04 703.91 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "269.36 582.67 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "46.36 792.47 m" + "188.92 792.47 l" + "201.16 780.22 l" + "201.16 565.66 l" + "188.92 553.42 l" + "46.36 553.42 l" + "34.12 565.66 l" + "34.12 780.22 l" + "s" + "0.45 w" + "46.36 789.44 m" + "188.92 789.44 l" + "198.14 780.22 l" + "198.14 565.66 l" + "188.92 556.45 l" + "46.36 556.45 l" + "37.14 565.66 l" + "37.14 780.22 l" + "s" + "0.70 w" + "41.68 787.50 m" + "44.27 784.91 l" + "41.68 782.31 l" + "39.09 784.91 l" + "h" + "S" + "193.60 787.50 m" + "196.19 784.91 l" + "193.60 782.31 l" + "191.01 784.91 l" + "h" + "S" + "41.68 563.58 m" + "44.27 560.98 l" + "41.68 558.39 l" + "39.09 560.98 l" + "h" + "S" + "193.60 563.58 m" + "196.19 560.98 l" + "193.60 558.39 l" + "191.01 560.98 l" + "h" + "S" + "1.00 w" + "0.50 w" + "47.80 781.30 m" + "94.60 781.30 l" + "S" + "140.68 781.30 m" + "187.48 781.30 l" + "S" + "0.60 w" + "101.08 784.04 m" + "103.82 781.30 l" + "101.08 778.57 l" + "98.34 781.30 l" + "h" + "f" + "109.36 784.04 m" + "112.10 781.30 l" + "109.36 778.57 l" + "106.62 781.30 l" + "h" + "f" + "117.64 784.04 m" + "120.38 781.30 l" + "117.64 778.57 l" + "114.90 781.30 l" + "h" + "f" + "125.92 784.04 m" + "128.66 781.30 l" + "125.92 778.57 l" + "123.18 781.30 l" + "h" + "S" + "134.20 784.04 m" + "136.94 781.30 l" + "134.20 778.57 l" + "131.46 781.30 l" + "h" + "S" + "1.00 w" + "0.50 w" + "63.64 560.27 m" + "111.52 560.27 l" + "S" + "123.76 560.27 m" + "171.64 560.27 l" + "S" + "117.64 562.57 m" + "119.94 560.27 l" + "117.64 557.96 l" + "115.34 560.27 l" + "h" + "S" + "1.00 w" + "0.70 w" + "178.84 728.03 m" + "184.96 728.03 l" + "187.48 725.51 l" + "187.48 720.10 l" + "184.96 717.59 l" + "178.84 717.59 l" + "176.32 720.10 l" + "176.32 725.51 l" + "s" + "BT" + "/F2 7.00 Tf" + "179.37 720.18 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "47.80 773.03 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc000300a90118013b013b0143013b Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "42.04 726.95 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "42.04 711.10 m" + "193.24 711.10 l" + "S" + "0.35 w" + "42.04 708.59 m" + "193.24 708.59 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "42.04 703.91 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "89.36 582.67 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "406.36 540.47 m" + "548.92 540.47 l" + "561.16 528.22 l" + "561.16 313.67 l" + "548.92 301.42 l" + "406.36 301.42 l" + "394.12 313.67 l" + "394.12 528.22 l" + "s" + "0.45 w" + "406.36 537.44 m" + "548.92 537.44 l" + "558.14 528.22 l" + "558.14 313.67 l" + "548.92 304.45 l" + "406.36 304.45 l" + "397.14 313.67 l" + "397.14 528.22 l" + "s" + "0.70 w" + "401.68 535.50 m" + "404.27 532.91 l" + "401.68 530.31 l" + "399.09 532.91 l" + "h" + "S" + "553.60 535.50 m" + "556.19 532.91 l" + "553.60 530.31 l" + "551.01 532.91 l" + "h" + "S" + "401.68 311.58 m" + "404.27 308.98 l" + "401.68 306.39 l" + "399.09 308.98 l" + "h" + "S" + "553.60 311.58 m" + "556.19 308.98 l" + "553.60 306.39 l" + "551.01 308.98 l" + "h" + "S" + "1.00 w" + "0.50 w" + "407.80 529.30 m" + "454.60 529.30 l" + "S" + "500.68 529.30 m" + "547.48 529.30 l" + "S" + "0.60 w" + "461.08 532.04 m" + "463.82 529.30 l" + "461.08 526.57 l" + "458.34 529.30 l" + "h" + "f" + "469.36 532.04 m" + "472.10 529.30 l" + "469.36 526.57 l" + "466.62 529.30 l" + "h" + "f" + "477.64 532.04 m" + "480.38 529.30 l" + "477.64 526.57 l" + "474.90 529.30 l" + "h" + "f" + "485.92 532.04 m" + "488.66 529.30 l" + "485.92 526.57 l" + "483.18 529.30 l" + "h" + "S" + "494.20 532.04 m" + "496.94 529.30 l" + "494.20 526.57 l" + "491.46 529.30 l" + "h" + "S" + "1.00 w" + "0.50 w" + "423.64 308.27 m" + "471.52 308.27 l" + "S" + "483.76 308.27 m" + "531.64 308.27 l" + "S" + "477.64 310.57 m" + "479.94 308.27 l" + "477.64 305.96 l" + "475.34 308.27 l" + "h" + "S" + "1.00 w" + "0.70 w" + "538.84 476.02 m" + "544.96 476.02 l" + "547.48 473.51 l" + "547.48 468.11 l" + "544.96 465.58 l" + "538.84 465.58 l" + "536.32 468.11 l" + "536.32 473.51 l" + "s" + "BT" + "/F2 7.00 Tf" + "539.37 468.18 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "407.80 521.03 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc000300b401340118018401430003018d0118016b0184 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "402.04 474.95 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "402.04 459.11 m" + "553.24 459.11 l" + "S" + "0.35 w" + "402.04 456.58 m" + "553.24 456.58 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "402.04 451.90 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "449.36 330.66 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "226.36 540.47 m" + "368.92 540.47 l" + "381.16 528.22 l" + "381.16 313.67 l" + "368.92 301.42 l" + "226.36 301.42 l" + "214.12 313.67 l" + "214.12 528.22 l" + "s" + "0.45 w" + "226.36 537.44 m" + "368.92 537.44 l" + "378.14 528.22 l" + "378.14 313.67 l" + "368.92 304.45 l" + "226.36 304.45 l" + "217.14 313.67 l" + "217.14 528.22 l" + "s" + "0.70 w" + "221.68 535.50 m" + "224.27 532.91 l" + "221.68 530.31 l" + "219.09 532.91 l" + "h" + "S" + "373.60 535.50 m" + "376.19 532.91 l" + "373.60 530.31 l" + "371.01 532.91 l" + "h" + "S" + "221.68 311.58 m" + "224.27 308.98 l" + "221.68 306.39 l" + "219.09 308.98 l" + "h" + "S" + "373.60 311.58 m" + "376.19 308.98 l" + "373.60 306.39 l" + "371.01 308.98 l" + "h" + "S" + "1.00 w" + "0.50 w" + "227.80 529.30 m" + "274.60 529.30 l" + "S" + "320.68 529.30 m" + "367.48 529.30 l" + "S" + "0.60 w" + "281.08 532.04 m" + "283.82 529.30 l" + "281.08 526.57 l" + "278.34 529.30 l" + "h" + "f" + "289.36 532.04 m" + "292.10 529.30 l" + "289.36 526.57 l" + "286.62 529.30 l" + "h" + "f" + "297.64 532.04 m" + "300.38 529.30 l" + "297.64 526.57 l" + "294.90 529.30 l" + "h" + "f" + "305.92 532.04 m" + "308.66 529.30 l" + "305.92 526.57 l" + "303.18 529.30 l" + "h" + "S" + "314.20 532.04 m" + "316.94 529.30 l" + "314.20 526.57 l" + "311.46 529.30 l" + "h" + "S" + "1.00 w" + "0.50 w" + "243.64 308.27 m" + "291.52 308.27 l" + "S" + "303.76 308.27 m" + "351.64 308.27 l" + "S" + "297.64 310.57 m" + "299.94 308.27 l" + "297.64 305.96 l" + "295.34 308.27 l" + "h" + "S" + "1.00 w" + "0.70 w" + "358.84 476.02 m" + "364.96 476.02 l" + "367.48 473.51 l" + "367.48 468.11 l" + "364.96 465.58 l" + "358.84 465.58 l" + "356.32 468.11 l" + "356.32 473.51 l" + "s" + "BT" + "/F2 7.00 Tf" + "359.37 468.18 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "227.80 521.03 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc0003002001660118016b018f000300b40166016b01c101d6 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "222.04 474.95 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "222.04 459.11 m" + "373.24 459.11 l" + "S" + "0.35 w" + "222.04 456.58 m" + "373.24 456.58 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "222.04 451.90 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "269.36 330.66 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "46.36 540.47 m" + "188.92 540.47 l" + "201.16 528.22 l" + "201.16 313.67 l" + "188.92 301.42 l" + "46.36 301.42 l" + "34.12 313.67 l" + "34.12 528.22 l" + "s" + "0.45 w" + "46.36 537.44 m" + "188.92 537.44 l" + "198.14 528.22 l" + "198.14 313.67 l" + "188.92 304.45 l" + "46.36 304.45 l" + "37.14 313.67 l" + "37.14 528.22 l" + "s" + "0.70 w" + "41.68 535.50 m" + "44.27 532.91 l" + "41.68 530.31 l" + "39.09 532.91 l" + "h" + "S" + "193.60 535.50 m" + "196.19 532.91 l" + "193.60 530.31 l" + "191.01 532.91 l" + "h" + "S" + "41.68 311.58 m" + "44.27 308.98 l" + "41.68 306.39 l" + "39.09 308.98 l" + "h" + "S" + "193.60 311.58 m" + "196.19 308.98 l" + "193.60 306.39 l" + "191.01 308.98 l" + "h" + "S" + "1.00 w" + "0.50 w" + "47.80 529.30 m" + "94.60 529.30 l" + "S" + "140.68 529.30 m" + "187.48 529.30 l" + "S" + "0.60 w" + "101.08 532.04 m" + "103.82 529.30 l" + "101.08 526.57 l" + "98.34 529.30 l" + "h" + "f" + "109.36 532.04 m" + "112.10 529.30 l" + "109.36 526.57 l" + "106.62 529.30 l" + "h" + "f" + "117.64 532.04 m" + "120.38 529.30 l" + "117.64 526.57 l" + "114.90 529.30 l" + "h" + "f" + "125.92 532.04 m" + "128.66 529.30 l" + "125.92 526.57 l" + "123.18 529.30 l" + "h" + "S" + "134.20 532.04 m" + "136.94 529.30 l" + "134.20 526.57 l" + "131.46 529.30 l" + "h" + "S" + "1.00 w" + "0.50 w" + "63.64 308.27 m" + "111.52 308.27 l" + "S" + "123.76 308.27 m" + "171.64 308.27 l" + "S" + "117.64 310.57 m" + "119.94 308.27 l" + "117.64 305.96 l" + "115.34 308.27 l" + "h" + "S" + "1.00 w" + "0.70 w" + "178.84 476.02 m" + "184.96 476.02 l" + "187.48 473.51 l" + "187.48 468.11 l" + "184.96 465.58 l" + "178.84 465.58 l" + "176.32 468.11 l" + "176.32 473.51 l" + "s" + "BT" + "/F2 7.00 Tf" + "179.37 468.18 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "47.80 521.03 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc00030053016b013b0143 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "42.04 474.95 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "42.04 459.11 m" + "193.24 459.11 l" + "S" + "0.35 w" + "42.04 456.58 m" + "193.24 456.58 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "42.04 451.90 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "89.36 330.66 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "406.36 288.46 m" + "548.92 288.46 l" + "561.16 276.23 l" + "561.16 61.67 l" + "548.92 49.42 l" + "406.36 49.42 l" + "394.12 61.67 l" + "394.12 276.23 l" + "s" + "0.45 w" + "406.36 285.44 m" + "548.92 285.44 l" + "558.14 276.23 l" + "558.14 61.67 l" + "548.92 52.45 l" + "406.36 52.45 l" + "397.14 61.67 l" + "397.14 276.23 l" + "s" + "0.70 w" + "401.68 283.50 m" + "404.27 280.90 l" + "401.68 278.31 l" + "399.09 280.90 l" + "h" + "S" + "553.60 283.50 m" + "556.19 280.90 l" + "553.60 278.31 l" + "551.01 280.90 l" + "h" + "S" + "401.68 59.58 m" + "404.27 56.99 l" + "401.68 54.39 l" + "399.09 56.99 l" + "h" + "S" + "553.60 59.58 m" + "556.19 56.99 l" + "553.60 54.39 l" + "551.01 56.99 l" + "h" + "S" + "1.00 w" + "0.50 w" + "407.80 277.30 m" + "454.60 277.30 l" + "S" + "500.68 277.30 m" + "547.48 277.30 l" + "S" + "0.60 w" + "461.08 280.04 m" + "463.82 277.30 l" + "461.08 274.57 l" + "458.34 277.30 l" + "h" + "f" + "469.36 280.04 m" + "472.10 277.30 l" + "469.36 274.57 l" + "466.62 277.30 l" + "h" + "f" + "477.64 280.04 m" + "480.38 277.30 l" + "477.64 274.57 l" + "474.90 277.30 l" + "h" + "f" + "485.92 280.04 m" + "488.66 277.30 l" + "485.92 274.57 l" + "483.18 277.30 l" + "h" + "S" + "494.20 280.04 m" + "496.94 277.30 l" + "494.20 274.57 l" + "491.46 277.30 l" + "h" + "S" + "1.00 w" + "0.50 w" + "423.64 56.26 m" + "471.52 56.26 l" + "S" + "483.76 56.26 m" + "531.64 56.26 l" + "S" + "477.64 58.57 m" + "479.94 56.26 l" + "477.64 53.96 l" + "475.34 56.26 l" + "h" + "S" + "1.00 w" + "0.70 w" + "538.84 224.02 m" + "544.96 224.02 l" + "547.48 221.51 l" + "547.48 216.10 l" + "544.96 213.59 l" + "538.84 213.59 l" + "536.32 216.10 l" + "536.32 221.51 l" + "s" + "BT" + "/F2 7.00 Tf" + "539.37 216.18 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "407.80 269.02 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc000300ac016b018f015e0003018d0118016b0184 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "402.04 222.95 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "402.04 207.10 m" + "553.24 207.10 l" + "S" + "0.35 w" + "402.04 204.59 m" + "553.24 204.59 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "402.04 199.90 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "449.36 78.66 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "226.36 288.46 m" + "368.92 288.46 l" + "381.16 276.23 l" + "381.16 61.67 l" + "368.92 49.42 l" + "226.36 49.42 l" + "214.12 61.67 l" + "214.12 276.23 l" + "s" + "0.45 w" + "226.36 285.44 m" + "368.92 285.44 l" + "378.14 276.23 l" + "378.14 61.67 l" + "368.92 52.45 l" + "226.36 52.45 l" + "217.14 61.67 l" + "217.14 276.23 l" + "s" + "0.70 w" + "221.68 283.50 m" + "224.27 280.90 l" + "221.68 278.31 l" + "219.09 280.90 l" + "h" + "S" + "373.60 283.50 m" + "376.19 280.90 l" + "373.60 278.31 l" + "371.01 280.90 l" + "h" + "S" + "221.68 59.58 m" + "224.27 56.99 l" + "221.68 54.39 l" + "219.09 56.99 l" + "h" + "S" + "373.60 59.58 m" + "376.19 56.99 l" + "373.60 54.39 l" + "371.01 56.99 l" + "h" + "S" + "1.00 w" + "0.50 w" + "227.80 277.30 m" + "274.60 277.30 l" + "S" + "320.68 277.30 m" + "367.48 277.30 l" + "S" + "0.60 w" + "281.08 280.04 m" + "283.82 277.30 l" + "281.08 274.57 l" + "278.34 277.30 l" + "h" + "f" + "289.36 280.04 m" + "292.10 277.30 l" + "289.36 274.57 l" + "286.62 277.30 l" + "h" + "f" + "297.64 280.04 m" + "300.38 277.30 l" + "297.64 274.57 l" + "294.90 277.30 l" + "h" + "f" + "305.92 280.04 m" + "308.66 277.30 l" + "305.92 274.57 l" + "303.18 277.30 l" + "h" + "S" + "314.20 280.04 m" + "316.94 277.30 l" + "314.20 274.57 l" + "311.46 277.30 l" + "h" + "S" + "1.00 w" + "0.50 w" + "243.64 56.26 m" + "291.52 56.26 l" + "S" + "303.76 56.26 m" + "351.64 56.26 l" + "S" + "297.64 58.57 m" + "299.94 56.26 l" + "297.64 53.96 l" + "295.34 56.26 l" + "h" + "S" + "1.00 w" + "0.70 w" + "358.84 224.02 m" + "364.96 224.02 l" + "367.48 221.51 l" + "367.48 216.10 l" + "364.96 213.59 l" + "358.84 213.59 l" + "356.32 216.10 l" + "356.32 221.51 l" + "s" + "BT" + "/F2 7.00 Tf" + "359.37 216.18 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "227.80 269.02 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc0003005301180184015d000301be0184011801d60143 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "222.04 222.95 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "222.04 207.10 m" + "373.24 207.10 l" + "S" + "0.35 w" + "222.04 204.59 m" + "373.24 204.59 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "222.04 199.90 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "269.36 78.66 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "46.36 288.46 m" + "188.92 288.46 l" + "201.16 276.23 l" + "201.16 61.67 l" + "188.92 49.42 l" + "46.36 49.42 l" + "34.12 61.67 l" + "34.12 276.23 l" + "s" + "0.45 w" + "46.36 285.44 m" + "188.92 285.44 l" + "198.14 276.23 l" + "198.14 61.67 l" + "188.92 52.45 l" + "46.36 52.45 l" + "37.14 61.67 l" + "37.14 276.23 l" + "s" + "0.70 w" + "41.68 283.50 m" + "44.27 280.90 l" + "41.68 278.31 l" + "39.09 280.90 l" + "h" + "S" + "193.60 283.50 m" + "196.19 280.90 l" + "193.60 278.31 l" + "191.01 280.90 l" + "h" + "S" + "41.68 59.58 m" + "44.27 56.99 l" + "41.68 54.39 l" + "39.09 56.99 l" + "h" + "S" + "193.60 59.58 m" + "196.19 56.99 l" + "193.60 54.39 l" + "191.01 56.99 l" + "h" + "S" + "1.00 w" + "0.50 w" + "47.80 277.30 m" + "94.60 277.30 l" + "S" + "140.68 277.30 m" + "187.48 277.30 l" + "S" + "0.60 w" + "101.08 280.04 m" + "103.82 277.30 l" + "101.08 274.57 l" + "98.34 277.30 l" + "h" + "f" + "109.36 280.04 m" + "112.10 277.30 l" + "109.36 274.57 l" + "106.62 277.30 l" + "h" + "f" + "117.64 280.04 m" + "120.38 277.30 l" + "117.64 274.57 l" + "114.90 277.30 l" + "h" + "f" + "125.92 280.04 m" + "128.66 277.30 l" + "125.92 274.57 l" + "123.18 277.30 l" + "h" + "S" + "134.20 280.04 m" + "136.94 277.30 l" + "134.20 274.57 l" + "131.46 277.30 l" + "h" + "S" + "1.00 w" + "0.50 w" + "63.64 56.26 m" + "111.52 56.26 l" + "S" + "123.76 56.26 m" + "171.64 56.26 l" + "S" + "117.64 58.57 m" + "119.94 56.26 l" + "117.64 53.96 l" + "115.34 56.26 l" + "h" + "S" + "1.00 w" + "0.70 w" + "178.84 224.02 m" + "184.96 224.02 l" + "187.48 221.51 l" + "187.48 216.10 l" + "184.96 213.59 l" + "178.84 213.59 l" + "176.32 216.10 l" + "176.32 221.51 l" + "s" + "BT" + "/F2 7.00 Tf" + "179.37 216.18 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "47.80 269.02 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc0003001f01c10143011801c901d601be0184011801d60143 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "42.04 222.95 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "42.04 207.10 m" + "193.24 207.10 l" + "S" + "0.35 w" + "42.04 204.59 m" + "193.24 204.59 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "42.04 199.90 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "89.36 78.66 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET"] + ["0.88 0.88 0.88 RG" + "27.64 42.94 m" + "27.64 798.95 l" + "S" + "207.64 42.94 m" + "207.64 798.95 l" + "S" + "387.64 42.94 m" + "387.64 798.95 l" + "S" + "567.64 42.94 m" + "567.64 798.95 l" + "S" + "27.64 42.94 m" + "567.64 42.94 l" + "S" + "27.64 294.95 m" + "567.64 294.95 l" + "S" + "27.64 546.95 m" + "567.64 546.95 l" + "S" + "27.64 798.95 m" + "567.64 798.95 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 831.09 Td" + "#hex:00a9014d01930178000303fa000304a201f60178022a017801f601fe017804a3 Tj" + "ET" + "q" + "144.00 0.00 0.00 144.00 45.64 600.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "82.65 558.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 45.64 348.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "82.65 306.46 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 45.64 96.94 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "82.65 54.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 225.64 600.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "262.65 558.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 225.64 348.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "262.65 306.46 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 225.64 96.94 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "262.65 54.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 405.64 600.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "442.65 558.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 405.64 348.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "442.65 306.46 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 405.64 96.94 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "442.65 54.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET"] + ["0.88 0.88 0.88 RG" + "27.64 42.94 m" + "27.64 798.95 l" + "S" + "207.64 42.94 m" + "207.64 798.95 l" + "S" + "387.64 42.94 m" + "387.64 798.95 l" + "S" + "567.64 42.94 m" + "567.64 798.95 l" + "S" + "27.64 42.94 m" + "567.64 42.94 l" + "S" + "27.64 294.95 m" + "567.64 294.95 l" + "S" + "27.64 546.95 m" + "567.64 546.95 l" + "S" + "27.64 798.95 m" + "567.64 798.95 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 831.09 Td" + "#hex:00a9014d01930178000303fb Tj" + "ET" + "1.10 w" + "406.36 792.47 m" + "548.92 792.47 l" + "561.16 780.22 l" + "561.16 565.66 l" + "548.92 553.42 l" + "406.36 553.42 l" + "394.12 565.66 l" + "394.12 780.22 l" + "s" + "0.45 w" + "406.36 789.44 m" + "548.92 789.44 l" + "558.14 780.22 l" + "558.14 565.66 l" + "548.92 556.45 l" + "406.36 556.45 l" + "397.14 565.66 l" + "397.14 780.22 l" + "s" + "0.70 w" + "401.68 787.50 m" + "404.27 784.91 l" + "401.68 782.31 l" + "399.09 784.91 l" + "h" + "S" + "553.60 787.50 m" + "556.19 784.91 l" + "553.60 782.31 l" + "551.01 784.91 l" + "h" + "S" + "401.68 563.58 m" + "404.27 560.98 l" + "401.68 558.39 l" + "399.09 560.98 l" + "h" + "S" + "553.60 563.58 m" + "556.19 560.98 l" + "553.60 558.39 l" + "551.01 560.98 l" + "h" + "S" + "1.00 w" + "0.50 w" + "407.80 781.30 m" + "454.60 781.30 l" + "S" + "500.68 781.30 m" + "547.48 781.30 l" + "S" + "0.60 w" + "461.08 784.04 m" + "463.82 781.30 l" + "461.08 778.57 l" + "458.34 781.30 l" + "h" + "f" + "469.36 784.04 m" + "472.10 781.30 l" + "469.36 778.57 l" + "466.62 781.30 l" + "h" + "f" + "477.64 784.04 m" + "480.38 781.30 l" + "477.64 778.57 l" + "474.90 781.30 l" + "h" + "f" + "485.92 784.04 m" + "488.66 781.30 l" + "485.92 778.57 l" + "483.18 781.30 l" + "h" + "S" + "494.20 784.04 m" + "496.94 781.30 l" + "494.20 778.57 l" + "491.46 781.30 l" + "h" + "S" + "1.00 w" + "0.50 w" + "423.64 560.27 m" + "471.52 560.27 l" + "S" + "483.76 560.27 m" + "531.64 560.27 l" + "S" + "477.64 562.57 m" + "479.94 560.27 l" + "477.64 557.96 l" + "475.34 560.27 l" + "h" + "S" + "1.00 w" + "0.70 w" + "538.84 728.03 m" + "544.96 728.03 l" + "547.48 725.51 l" + "547.48 720.10 l" + "544.96 717.59 l" + "538.84 717.59 l" + "536.32 720.10 l" + "536.32 725.51 l" + "s" + "BT" + "/F2 7.00 Tf" + "539.37 720.18 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "407.80 773.03 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc000300a90184011801d60143 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "402.04 726.95 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "402.04 711.10 m" + "553.24 711.10 l" + "S" + "0.35 w" + "402.04 708.59 m" + "553.24 708.59 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "402.04 703.91 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "449.36 582.67 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "226.36 792.47 m" + "368.92 792.47 l" + "381.16 780.22 l" + "381.16 565.66 l" + "368.92 553.42 l" + "226.36 553.42 l" + "214.12 565.66 l" + "214.12 780.22 l" + "s" + "0.45 w" + "226.36 789.44 m" + "368.92 789.44 l" + "378.14 780.22 l" + "378.14 565.66 l" + "368.92 556.45 l" + "226.36 556.45 l" + "217.14 565.66 l" + "217.14 780.22 l" + "s" + "0.70 w" + "221.68 787.50 m" + "224.27 784.91 l" + "221.68 782.31 l" + "219.09 784.91 l" + "h" + "S" + "373.60 787.50 m" + "376.19 784.91 l" + "373.60 782.31 l" + "371.01 784.91 l" + "h" + "S" + "221.68 563.58 m" + "224.27 560.98 l" + "221.68 558.39 l" + "219.09 560.98 l" + "h" + "S" + "373.60 563.58 m" + "376.19 560.98 l" + "373.60 558.39 l" + "371.01 560.98 l" + "h" + "S" + "1.00 w" + "0.50 w" + "227.80 781.30 m" + "274.60 781.30 l" + "S" + "320.68 781.30 m" + "367.48 781.30 l" + "S" + "0.60 w" + "281.08 784.04 m" + "283.82 781.30 l" + "281.08 778.57 l" + "278.34 781.30 l" + "h" + "f" + "289.36 784.04 m" + "292.10 781.30 l" + "289.36 778.57 l" + "286.62 781.30 l" + "h" + "f" + "297.64 784.04 m" + "300.38 781.30 l" + "297.64 778.57 l" + "294.90 781.30 l" + "h" + "f" + "305.92 784.04 m" + "308.66 781.30 l" + "305.92 778.57 l" + "303.18 781.30 l" + "h" + "S" + "314.20 784.04 m" + "316.94 781.30 l" + "314.20 778.57 l" + "311.46 781.30 l" + "h" + "S" + "1.00 w" + "0.50 w" + "243.64 560.27 m" + "291.52 560.27 l" + "S" + "303.76 560.27 m" + "351.64 560.27 l" + "S" + "297.64 562.57 m" + "299.94 560.27 l" + "297.64 557.96 l" + "295.34 560.27 l" + "h" + "S" + "1.00 w" + "0.70 w" + "358.84 728.03 m" + "364.96 728.03 l" + "367.48 725.51 l" + "367.48 720.10 l" + "364.96 717.59 l" + "358.84 717.59 l" + "356.32 720.10 l" + "356.32 725.51 l" + "s" + "BT" + "/F2 7.00 Tf" + "359.37 720.18 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "227.80 773.03 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc000300b401be0184016b018f01d6 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "222.04 726.95 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "222.04 711.10 m" + "373.24 711.10 l" + "S" + "0.35 w" + "222.04 708.59 m" + "373.24 708.59 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "222.04 703.91 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "269.36 582.67 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET" + "1.10 w" + "46.36 792.47 m" + "188.92 792.47 l" + "201.16 780.22 l" + "201.16 565.66 l" + "188.92 553.42 l" + "46.36 553.42 l" + "34.12 565.66 l" + "34.12 780.22 l" + "s" + "0.45 w" + "46.36 789.44 m" + "188.92 789.44 l" + "198.14 780.22 l" + "198.14 565.66 l" + "188.92 556.45 l" + "46.36 556.45 l" + "37.14 565.66 l" + "37.14 780.22 l" + "s" + "0.70 w" + "41.68 787.50 m" + "44.27 784.91 l" + "41.68 782.31 l" + "39.09 784.91 l" + "h" + "S" + "193.60 787.50 m" + "196.19 784.91 l" + "193.60 782.31 l" + "191.01 784.91 l" + "h" + "S" + "41.68 563.58 m" + "44.27 560.98 l" + "41.68 558.39 l" + "39.09 560.98 l" + "h" + "S" + "193.60 563.58 m" + "196.19 560.98 l" + "193.60 558.39 l" + "191.01 560.98 l" + "h" + "S" + "1.00 w" + "0.50 w" + "47.80 781.30 m" + "94.60 781.30 l" + "S" + "140.68 781.30 m" + "187.48 781.30 l" + "S" + "0.60 w" + "101.08 784.04 m" + "103.82 781.30 l" + "101.08 778.57 l" + "98.34 781.30 l" + "h" + "f" + "109.36 784.04 m" + "112.10 781.30 l" + "109.36 778.57 l" + "106.62 781.30 l" + "h" + "f" + "117.64 784.04 m" + "120.38 781.30 l" + "117.64 778.57 l" + "114.90 781.30 l" + "h" + "f" + "125.92 784.04 m" + "128.66 781.30 l" + "125.92 778.57 l" + "123.18 781.30 l" + "h" + "S" + "134.20 784.04 m" + "136.94 781.30 l" + "134.20 778.57 l" + "131.46 781.30 l" + "h" + "S" + "1.00 w" + "0.50 w" + "63.64 560.27 m" + "111.52 560.27 l" + "S" + "123.76 560.27 m" + "171.64 560.27 l" + "S" + "117.64 562.57 m" + "119.94 560.27 l" + "117.64 557.96 l" + "115.34 560.27 l" + "h" + "S" + "1.00 w" + "0.70 w" + "178.84 728.03 m" + "184.96 728.03 l" + "187.48 725.51 l" + "187.48 720.10 l" + "184.96 717.59 l" + "178.84 717.59 l" + "176.32 720.10 l" + "176.32 725.51 l" + "s" + "BT" + "/F2 7.00 Tf" + "179.37 720.18 Td" + "\"A\" Tj" + "ET" + "1.00 w" + "0.15 Tc" + "BT" + "/F3 13.00 Tf" + "47.80 773.03 Td" + "0.00 -14.30 Td" + "#hex:000401c1018d019b01c10003019b015d000300ac014301c9016b01c901d60118018f01340143 Tj" + "0.00 -14.30 Td" + "#hex:062800040134016b013b062905fc0003002001660118016b018f0003018d0118016b0184 Tj" + "ET" + "0.00 Tc" + "BT" + "/F1 7.50 Tf" + "42.04 726.95 Td" + "0.00 -8.25 Td" + "#hex:000401f601c201d001f60476000301f6014d01f60178 Tj" + "ET" + "0.90 w" + "42.04 711.10 m" + "193.24 711.10 l" + "S" + "0.35 w" + "42.04 708.59 m" + "193.24 708.59 l" + "S" + "1.00 w" + "BT" + "/F4 8.00 Tf" + "42.04 703.91 Td" + "0.00 -8.80 Td" + "#hex:00e6019b01de00030166011801f50143000301c1014301c9016b01c901d60118018f01340143000301d6019b0003019b018f0143000301d601fc01be01430003019b015d0003013b0118018d0118015e0143 Tj" + "0.00 -8.80 Td" + "#hex:01f60166016b01840143000301fc019b01de000301f60143011801c1000301d60166016b01c90003011801c1018d019b01c10608000300c1016601430003004b0078 Tj" + "0.00 -8.80 Td" + "#hex:01340166019b019b01c9014301c9000301d601660143000301d601fc01be01430003019b01c10003013b014301d6014301c1018d016b018f014301c90003016b01d6 Tj" + "0.00 -8.80 Td" + "#hex:01c10118018f013b019b018d018401fc0003015d01c1019b018d000301d6016601430003019b01be01d6016b019b018f01c90003013301430184019b01f60608 Tj" + "ET" + "BT" + "/F1 6.80 Tf" + "89.36 582.67 Td" + "#hex:04a201f6017801f5021301a001f6017801fe0003014d020b020b021301c4017801c2017801c4020b04a3 Tj" + "ET"] + ["0.88 0.88 0.88 RG" + "27.64 42.94 m" + "27.64 798.95 l" + "S" + "207.64 42.94 m" + "207.64 798.95 l" + "S" + "387.64 42.94 m" + "387.64 798.95 l" + "S" + "567.64 42.94 m" + "567.64 798.95 l" + "S" + "27.64 42.94 m" + "567.64 42.94 l" + "S" + "27.64 294.95 m" + "567.64 294.95 l" + "S" + "27.64 546.95 m" + "567.64 546.95 l" + "S" + "27.64 798.95 m" + "567.64 798.95 l" + "S" + "0.00 0.00 0.00 RG" + "BT" + "/F1 8.00 Tf" + "8.64 831.09 Td" + "#hex:00a9014d01930178000303fb000304a201f60178022a017801f601fe017804a3 Tj" + "ET" + "q" + "144.00 0.00 0.00 144.00 45.64 600.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "82.65 558.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 45.64 348.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "82.65 306.46 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 45.64 96.94 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "82.65 54.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 225.64 600.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "262.65 558.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 225.64 348.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "262.65 306.46 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 225.64 96.94 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "262.65 54.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 405.64 600.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "442.65 558.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 405.64 348.95 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "442.65 306.46 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET" + "q" + "144.00 0.00 0.00 144.00 405.64 96.94 cm" + "/Im1 Do" + "Q" + "BT" + "/F2 6.00 Tf" + "0.45 0.45 0.45 rg" + "442.65 54.47 Td" + "#hex:013b01de018f015e0143019b018f018d011801c901d6014301c101c901f5011801de018401d606080134019b018d Tj" + "0.00 0.00 0.00 rg" + "ET"]] diff --git a/test/card-geometry-baseline.edn b/test/card-geometry-baseline.edn index 64ecfd7a2..75c668f4a 100644 --- a/test/card-geometry-baseline.edn +++ b/test/card-geometry-baseline.edn @@ -1,5 +1,5 @@ -;; Written by orcpub.card-geometry-test. Drawing operators per card page. -;; A diff here is a card moving. Read it before committing it. +;; Written by orcpub's geometry characterization tests: Card sheet +;; A diff here is drawing moving. Read it before committing it. [["0.88 0.88 0.88 RG" "36.00 18.00 m" "36.00 774.00 l" diff --git a/test/card-ornament-baseline.edn b/test/card-ornament-baseline.edn index 2b27b699e..4d0122c3b 100644 --- a/test/card-ornament-baseline.edn +++ b/test/card-ornament-baseline.edn @@ -1,5 +1,5 @@ -;; Written by orcpub.card-geometry-test. Flourish family x printing mode. -;; A diff here is an ornament moving. Read it before committing it. +;; Written by orcpub's geometry characterization tests: Ornament +;; A diff here is drawing moving. Read it before committing it. [["0.88 0.88 0.88 RG" "36.00 18.00 m" "36.00 774.00 l" diff --git a/test/clj/orcpub/card_geometry_test.clj b/test/clj/orcpub/card_geometry_test.clj index d7bf840b1..3d80c50b3 100644 --- a/test/clj/orcpub/card_geometry_test.clj +++ b/test/clj/orcpub/card_geometry_test.clj @@ -60,6 +60,16 @@ (deftest card-geometry-is-unchanged (ops/check-baseline! sheet-baseline-file (sheet-pages-ops) sheet-labels "Card sheet")) +(deftest card-geometry-on-a4-is-unchanged + (testing "A4 is a designed-for layout, so it is pinned like Letter. + + Without this every baseline is Letter and A4 could break with the whole + suite green. The grid differs -- A4 fits the same 3x3 at 28/43pt margins + against Letter's 36/18 -- so this file is genuinely different, not a copy." + (binding [draw/*page* :a4] + (ops/check-baseline! "test/card-geometry-a4-baseline.edn" + (sheet-pages-ops) sheet-labels "Card sheet A4")))) + (deftest the-pages-are-what-we-think-they-are (testing "the baseline covers real output, not an empty document" (let [pages (sheet-pages-ops)] diff --git a/test/clj/orcpub/image_retry_test.clj b/test/clj/orcpub/image_retry_test.clj new file mode 100644 index 000000000..e086a2a62 --- /dev/null +++ b/test/clj/orcpub/image_retry_test.clj @@ -0,0 +1,45 @@ +(ns orcpub.image-retry-test + "One retry, for the two failures where a second go is both plausible and cheap. + + An image fetch holds an export slot and has a 20s transfer deadline, so retrying is + not free: it is slot time taken from everyone else. That budget, not the taxonomy, + is what decides which reasons are worth a second attempt." + (:require [clojure.test :refer [deftest testing is]] + [orcpub.pdf :as pdf])) + +(defn- attempts-for + "How many times a fetch is tried when every attempt fails with `ex`, and the outcome." + [ex] + (let [n (atom 0)] + (with-redefs [pdf/safe-image-bytes (fn [_] (swap! n inc) (throw ex))] + (let [out (pdf/fetch-image-outcome "https://example.test/x.png")] + [@n (:reason out)])))) + +(deftest transient-failures-are-retried-once + (testing "a connect blip and a 5xx fail fast, so a second attempt is cheap" + (is (= [2 :unreachable] (attempts-for (java.net.ConnectException. "refused")))) + (is (= [2 :unreachable] (attempts-for (java.net.UnknownHostException. "no dns")))))) + +(deftest a-timeout-is-not-retried + (testing "it already spent the whole transfer deadline holding an export slot. + + Retrying doubles the worst case for a case that usually fails the same way + twice -- the budget is the reason, not the taxonomy." + (is (= [1 :timeout] (attempts-for (java.net.SocketTimeoutException. "slow")))))) + +(deftest permanent-failures-are-not-retried + (testing "a 404 is a 404 twice, and a refusal is not reconsidered" + (is (= [1 :unknown] (attempts-for (IllegalStateException. "broken")))))) + +(deftest a-retry-that-succeeds-returns-the-image + (testing "the first attempt fails transiently, the second works" + (let [n (atom 0)] + (with-redefs [pdf/safe-image-bytes + (fn [_] (if (zero? (first (swap-vals! n inc))) + (throw (java.net.ConnectException. "refused")) + {:data (byte-array 10) :jpg? false})) + pdf/fit-for-sheet identity] + (let [out (pdf/fetch-image-outcome "https://example.test/x.png")] + (is (= 2 @n) "tried twice") + (is (some? (:image out)) "and the second attempt's image is returned") + (is (nil? (:reason out)))))))) diff --git a/test/clj/orcpub/page_size_test.clj b/test/clj/orcpub/page_size_test.clj index 2c6759ac1..68b41e5d1 100644 --- a/test/clj/orcpub/page_size_test.clj +++ b/test/clj/orcpub/page_size_test.clj @@ -5,6 +5,7 @@ returned 11, and every baseline stayed byte-identical -- correctly, because nothing had changed. Nothing tested a non-Letter page, so nothing caught it. This does." (:require [clojure.test :refer [deftest testing is]] + [orcpub.routes :as routes] [orcpub.pdf-ops :as ops] [orcpub.pdf.draw :as draw] [orcpub.pdf.cards :as cards] @@ -95,3 +96,25 @@ (ops/page-ops pg)))))] (is (not= (sheet :letter) (sheet :a4)) "if these match, the page is being consulted and discarded again")))) + +(deftest the-request-option-is-validated + (testing "the three we design for are accepted" + (doseq [p [:letter :a4 :a5]] + (is (= p (#'routes/one-of routes/valid-page-sizes p :letter))))) + (testing "a string names the same page, as the client sends it" + (is (= :a4 (#'routes/one-of routes/valid-page-sizes "a4" :letter)))) + (testing "anything else falls back to Letter rather than throwing. + + A typo in an option must not cost someone their sheet -- the same rule + valid-sheet-styles follows for an unknown style id." + (doseq [v [:a3 :tabloid "nonsense" nil 7 {:a 1}]] + (is (= :letter (#'routes/one-of routes/valid-page-sizes v :letter)) + (str "unexpected acceptance of " (pr-str v)))))) + +(deftest page-size-is-stripped-before-the-fields-are-written + (testing "it names no box, so it must be in pdf-option-keys. + + Without it write-fields! reports it unplaceable on EVERY request -- and + those reports now reach the user on the notice page, so every single + export would carry a spurious warning." + (is (contains? @#'routes/pdf-option-keys :page-size)))) diff --git a/test/clj/orcpub/spellbook_geometry_test.clj b/test/clj/orcpub/spellbook_geometry_test.clj index e172cea9f..44a69f461 100644 --- a/test/clj/orcpub/spellbook_geometry_test.clj +++ b/test/clj/orcpub/spellbook_geometry_test.clj @@ -74,6 +74,17 @@ (let [[labels pages] (all-pages)] (ops/check-baseline! baseline-file pages labels "Spellbook"))) +(deftest spellbook-geometry-on-a4-is-unchanged + (testing "A4 is a designed-for layout, so it is pinned like Letter. + + The spellbook is where A4's dimensions actually buy something: its body is + 740pt tall against Letter's 690, so a page carries about 7% more. That makes + this a different pagination, not the same pages on bigger paper." + (binding [draw/*page* :a4] + (let [[labels pages] (all-pages)] + (ops/check-baseline! "test/spellbook-geometry-a4-baseline.edn" + pages labels "Spellbook A4"))))) + (deftest the-cases-cover-what-they-claim (testing "every layout, order and tab placement" (is (= 18 (count cases))) diff --git a/test/spellbook-geometry-a4-baseline.edn b/test/spellbook-geometry-a4-baseline.edn new file mode 100644 index 000000000..e9ac5a61b --- /dev/null +++ b/test/spellbook-geometry-a4-baseline.edn @@ -0,0 +1,644 @@ +;; Written by orcpub's geometry characterization tests: Spellbook A4 +;; A diff here is drawing moving. Read it before committing it. +[{:ops 12325, + :kinds + {"BT" 95, + "Do" 2, + "ET" 95, + "Q" 2, + "RG" 192, + "S" 115, + "Tc" 2, + "Td" 95, + "Tf" 95, + "Tj" 95, + "c" 8116, + "cm" 2, + "d" 4, + "f" 389, + "h" 472, + "l" 1632, + "m" 568, + "q" 2, + "re" 10, + "rg" 194, + "w" 148}, + :sha "967fc295b2b9", + :geom "1eb4ac7447a0", + :colour "f6968c7bd2d8", + :text "b7db6964009e"} + {:ops 6587, + :kinds + {"BT" 80, + "Do" 1, + "ET" 80, + "Q" 1, + "RG" 135, + "S" 49, + "Tc" 2, + "Td" 80, + "Tf" 80, + "Tj" 80, + "c" 4237, + "cm" 1, + "d" 4, + "f" 193, + "h" 239, + "l" 852, + "m" 273, + "q" 1, + "re" 10, + "rg" 136, + "w" 53}, + :sha "4b9f8be985ae", + :geom "75303be50a86", + :colour "8863d2699317", + :text "0dd91271f791"} + {:ops 12339, + :kinds + {"BT" 97, + "Do" 2, + "ET" 97, + "Q" 2, + "RG" 194, + "S" 115, + "Tc" 2, + "Td" 97, + "Tf" 97, + "Tj" 97, + "c" 8116, + "cm" 2, + "d" 4, + "f" 389, + "h" 472, + "l" 1632, + "m" 568, + "q" 2, + "re" 10, + "rg" 196, + "w" 148}, + :sha "98f007fbfe06", + :geom "ff5a3365f035", + :colour "c648c3dc74fa", + :text "af9e612ef14e"} + {:ops 6608, + :kinds + {"BT" 83, + "Do" 1, + "ET" 83, + "Q" 1, + "RG" 138, + "S" 49, + "Tc" 2, + "Td" 83, + "Tf" 83, + "Tj" 83, + "c" 4237, + "cm" 1, + "d" 4, + "f" 193, + "h" 239, + "l" 852, + "m" 273, + "q" 1, + "re" 10, + "rg" 139, + "w" 53}, + :sha "01d3e5814cc1", + :geom "df67bdb30ef0", + :colour "c9b71803f031", + :text "c52bcb878230"} + {:ops 11969, + :kinds + {"BT" 95, + "Do" 2, + "ET" 95, + "Q" 2, + "RG" 172, + "S" 109, + "Tc" 2, + "Td" 95, + "Tf" 95, + "Tj" 95, + "c" 7890, + "cm" 2, + "d" 4, + "f" 375, + "h" 457, + "l" 1612, + "m" 553, + "q" 2, + "rg" 174, + "w" 138}, + :sha "6289233b6a85", + :geom "c20a139c596b", + :colour "1b361cc43dbf", + :text "b7db6964009e"} + {:ops 6231, + :kinds + {"BT" 80, + "Do" 1, + "ET" 80, + "Q" 1, + "RG" 115, + "S" 43, + "Tc" 2, + "Td" 80, + "Tf" 80, + "Tj" 80, + "c" 4011, + "cm" 1, + "d" 4, + "f" 179, + "h" 224, + "l" 832, + "m" 258, + "q" 1, + "rg" 116, + "w" 43}, + :sha "e16d4218930e", + :geom "e3055e550cfb", + :colour "723b44b1b2c1", + :text "0dd91271f791"} + {:ops 9267, + :kinds + {"BT" 99, + "Do" 2, + "ET" 99, + "Q" 2, + "RG" 182, + "S" 95, + "Tc" 2, + "Td" 99, + "Tf" 99, + "Tj" 99, + "c" 6031, + "cm" 2, + "d" 4, + "f" 297, + "h" 382, + "l" 999, + "m" 450, + "q" 2, + "re" 10, + "rg" 184, + "w" 128}, + :sha "82a45f67fc54", + :geom "347a22aefa90", + :colour "cba082e4c95d", + :text "1cb69ce01d35"} + {:ops 4852, + :kinds + {"BT" 76, + "Do" 1, + "ET" 76, + "Q" 1, + "RG" 124, + "S" 41, + "Tc" 2, + "Td" 76, + "Tf" 76, + "Tj" 76, + "c" 3027, + "cm" 1, + "d" 4, + "f" 140, + "h" 188, + "l" 554, + "m" 209, + "q" 1, + "re" 10, + "rg" 125, + "w" 44}, + :sha "7d51bf75adec", + :geom "72ae09564a9c", + :colour "73a961d6887f", + :text "2e6b2b9721bd"} + {:ops 9274, + :kinds + {"BT" 100, + "Do" 2, + "ET" 100, + "Q" 2, + "RG" 183, + "S" 95, + "Tc" 2, + "Td" 100, + "Tf" 100, + "Tj" 100, + "c" 6031, + "cm" 2, + "d" 4, + "f" 297, + "h" 382, + "l" 999, + "m" 450, + "q" 2, + "re" 10, + "rg" 185, + "w" 128}, + :sha "134501a1c2be", + :geom "58699bfb2048", + :colour "779cfeac6415", + :text "db06c1946133"} + {:ops 4880, + :kinds + {"BT" 80, + "Do" 1, + "ET" 80, + "Q" 1, + "RG" 128, + "S" 41, + "Tc" 2, + "Td" 80, + "Tf" 80, + "Tj" 80, + "c" 3027, + "cm" 1, + "d" 4, + "f" 140, + "h" 188, + "l" 554, + "m" 209, + "q" 1, + "re" 10, + "rg" 129, + "w" 44}, + :sha "861760d02ee0", + :geom "e75bced88402", + :colour "9055a54e3262", + :text "bc6d247436fb"} + {:ops 8911, + :kinds + {"BT" 99, + "Do" 2, + "ET" 99, + "Q" 2, + "RG" 162, + "S" 89, + "Tc" 2, + "Td" 99, + "Tf" 99, + "Tj" 99, + "c" 5805, + "cm" 2, + "d" 4, + "f" 283, + "h" 367, + "l" 979, + "m" 435, + "q" 2, + "rg" 164, + "w" 118}, + :sha "634ed89f75df", + :geom "5450b947be1f", + :colour "81b6658408a8", + :text "1cb69ce01d35"} + {:ops 4496, + :kinds + {"BT" 76, + "Do" 1, + "ET" 76, + "Q" 1, + "RG" 104, + "S" 34, + "Tc" 2, + "Td" 76, + "Tf" 76, + "Tj" 76, + "c" 2801, + "cm" 1, + "d" 4, + "f" 127, + "h" 173, + "l" 534, + "m" 194, + "q" 1, + "rg" 105, + "w" 34}, + :sha "9a60db1314ef", + :geom "7687de18d8bf", + :colour "4518b1f45239", + :text "2e6b2b9721bd"} + {:ops 11715, + :kinds + {"BT" 106, + "Do" 2, + "ET" 106, + "Q" 2, + "RG" 230, + "S" 144, + "Tc" 30, + "Td" 106, + "Tf" 106, + "Tj" 106, + "c" 7160, + "cm" 2, + "d" 4, + "f" 343, + "h" 397, + "l" 1931, + "m" 518, + "q" 2, + "re" 10, + "rg" 232, + "w" 178}, + :sha "45bffcfa559b", + :geom "ca0a8ac3e107", + :colour "cffb1a2dbef4", + :text "fc0e90691319"} + {:ops 11715, + :kinds + {"BT" 106, + "Do" 2, + "ET" 106, + "Q" 2, + "RG" 230, + "S" 144, + "Tc" 30, + "Td" 106, + "Tf" 106, + "Tj" 106, + "c" 7160, + "cm" 2, + "d" 4, + "f" 343, + "h" 397, + "l" 1931, + "m" 518, + "q" 2, + "re" 10, + "rg" 232, + "w" 178}, + :sha "5f85d5e0b079", + :geom "01c6085a1821", + :colour "7ac0c9600e0c", + :text "bfdc5835691b"} + {:ops 11359, + :kinds + {"BT" 106, + "Do" 2, + "ET" 106, + "Q" 2, + "RG" 210, + "S" 139, + "Tc" 30, + "Td" 106, + "Tf" 106, + "Tj" 106, + "c" 6934, + "cm" 2, + "d" 4, + "f" 328, + "h" 382, + "l" 1911, + "m" 503, + "q" 2, + "rg" 212, + "w" 168}, + :sha "f8111195441c", + :geom "011323cd7bb1", + :colour "fa726c9a6ad7", + :text "fc0e90691319"} + {:ops 6459, + :kinds + {"BT" 106, + "Do" 2, + "ET" 106, + "Q" 2, + "RG" 185, + "S" 103, + "Tc" 30, + "Td" 106, + "Tf" 106, + "Tj" 106, + "c" 3552, + "cm" 2, + "d" 4, + "f" 187, + "h" 231, + "l" 984, + "m" 311, + "q" 2, + "re" 10, + "rg" 187, + "w" 137}, + :sha "3f30a9c84892", + :geom "4a8690fb02a2", + :colour "7325a842bce2", + :text "b2eaf3c14a47"} + {:ops 6459, + :kinds + {"BT" 106, + "Do" 2, + "ET" 106, + "Q" 2, + "RG" 185, + "S" 103, + "Tc" 30, + "Td" 106, + "Tf" 106, + "Tj" 106, + "c" 3552, + "cm" 2, + "d" 4, + "f" 187, + "h" 231, + "l" 984, + "m" 311, + "q" 2, + "re" 10, + "rg" 187, + "w" 137}, + :sha "5fd680704705", + :geom "1c4e2466dbd8", + :colour "0f8bda4a416e", + :text "e9c426fb66f6"} + {:ops 6103, + :kinds + {"BT" 106, + "Do" 2, + "ET" 106, + "Q" 2, + "RG" 165, + "S" 98, + "Tc" 30, + "Td" 106, + "Tf" 106, + "Tj" 106, + "c" 3326, + "cm" 2, + "d" 4, + "f" 172, + "h" 216, + "l" 964, + "m" 296, + "q" 2, + "rg" 167, + "w" 127}, + :sha "b459e9c5e350", + :geom "6d3c7a7654b4", + :colour "d66d5513e4b8", + :text "b2eaf3c14a47"} + {:ops 10663, + :kinds + {"BT" 47, + "Do" 2, + "ET" 47, + "Q" 2, + "RG" 174, + "S" 162, + "Tc" 2, + "Td" 47, + "Tf" 47, + "Tj" 47, + "c" 6668, + "cm" 2, + "d" 4, + "f" 323, + "h" 377, + "l" 1822, + "m" 496, + "q" 2, + "re" 20, + "rg" 176, + "w" 196}, + :sha "0ad27c9ec2ff", + :geom "1387ba6afc6b", + :colour "b4cbc87a8f5c", + :text "7ddd1c499356"} + {:ops 10663, + :kinds + {"BT" 47, + "Do" 2, + "ET" 47, + "Q" 2, + "RG" 174, + "S" 162, + "Tc" 2, + "Td" 47, + "Tf" 47, + "Tj" 47, + "c" 6668, + "cm" 2, + "d" 4, + "f" 323, + "h" 377, + "l" 1822, + "m" 496, + "q" 2, + "re" 20, + "rg" 176, + "w" 196}, + :sha "76dd1e06c249", + :geom "a7f6bc13d363", + :colour "19d5f979ed62", + :text "a5decca0934b"} + {:ops 10307, + :kinds + {"BT" 47, + "Do" 2, + "ET" 47, + "Q" 2, + "RG" 154, + "S" 157, + "Tc" 2, + "Td" 47, + "Tf" 47, + "Tj" 47, + "c" 6442, + "cm" 2, + "d" 4, + "f" 308, + "h" 362, + "l" 1802, + "m" 481, + "q" 2, + "re" 10, + "rg" 156, + "w" 186}, + :sha "850d88d323d2", + :geom "f7d6dbf8ca56", + :colour "ca076ea412ae", + :text "7ddd1c499356"} + {:ops 5870, + :kinds + {"BT" 47, + "Do" 2, + "ET" 47, + "Q" 2, + "RG" 153, + "S" 133, + "Tc" 2, + "Td" 47, + "Tf" 47, + "Tj" 47, + "c" 3373, + "cm" 2, + "d" 4, + "f" 179, + "h" 236, + "l" 891, + "m" 314, + "q" 2, + "re" 20, + "rg" 155, + "w" 167}, + :sha "8642ea235b94", + :geom "1aabc8696aae", + :colour "e7ac000d13fe", + :text "7b0644b64146"} + {:ops 5870, + :kinds + {"BT" 47, + "Do" 2, + "ET" 47, + "Q" 2, + "RG" 153, + "S" 133, + "Tc" 2, + "Td" 47, + "Tf" 47, + "Tj" 47, + "c" 3373, + "cm" 2, + "d" 4, + "f" 179, + "h" 236, + "l" 891, + "m" 314, + "q" 2, + "re" 20, + "rg" 155, + "w" 167}, + :sha "047c959ac2b5", + :geom "d7680a90ecf6", + :colour "687cf3c39ee3", + :text "348d3573531b"} + {:ops 5514, + :kinds + {"BT" 47, + "Do" 2, + "ET" 47, + "Q" 2, + "RG" 133, + "S" 128, + "Tc" 2, + "Td" 47, + "Tf" 47, + "Tj" 47, + "c" 3147, + "cm" 2, + "d" 4, + "f" 164, + "h" 221, + "l" 871, + "m" 299, + "q" 2, + "re" 10, + "rg" 135, + "w" 157}, + :sha "40386a5d12f1", + :geom "6e63495af465", + :colour "d3e7856ddb1e", + :text "7b0644b64146"}] From 7ba3ec058b335283ef8abb414a3c1ae7f1767341 Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Sat, 17 Oct 2026 02:48:35 +0000 Subject: [PATCH 21/40] The character sheet re-papers onto A4, by moving the window not the content The 8 templates are 612x792 with fixed artwork, so A4 is a framing change rather than a redraw. fit-sheet-to-page! sets each page's MediaBox and CropBox to the bound page, centred on the existing content: (8.36, -24.94, 595.28, 841.89) for A4. A no-op on :letter, which is what the templates already are. FOUR LINES, not the widget translation I have been describing all session. I kept saying this needed the content AND every widget rect moved by (-8.36, +24.94) -- 549 rects on style 1 alone. That was never necessary. Page content and annotation rectangles live in the SAME coordinate space and the MediaBox only selects which part of it is paper, so moving the box slides the paper over artwork and fields together. No widget loop, no appearance streams regenerated, and structurally no way for the artwork and the fields to end up disagreeing -- which is the exact failure the widgets pin was built to catch. The surest way not to get 549 translations wrong is not to do 549 translations. What it costs, measured per page at a strict ink threshold rather than per document: pages 1-3 18-31pt of clear margin 8.36pt comes off empty white page 4 3pt at the corner curls the outer tip of a decorative scroll curl Page 4's frame is the only thing that visibly changes, and the render shows all four curls still present and reading as curls. The straight sides sit at 11pt and 10pt and clear the crop entirely -- the 3pt I reported earlier was the whole-document minimum, which is those curls, not the frame edge. letter-is-a-no-op asserts the media boxes AND every widget are untouched, so the opt-in guard is pinned rather than incidentally true. That is a different claim from the baseline's: the test checks boxes and widget positions, the sheet baseline checks every operator on every page. Both pass. A5 is covered too. An A5 character sheet is a postcard and nobody should want one, but the shim should not special-case A4. lein test 738/5558 green, lein lint 0 errors, and ALL EIGHT baselines UNCHANGED -- including sheet-geometry and sheet-widgets, which is the evidence this does nothing to the live Letter export. --- src/clj/orcpub/pdf.clj | 22 +++++++++++ src/clj/orcpub/routes.clj | 3 ++ test/clj/orcpub/sheet_shim_test.clj | 59 +++++++++++++++++++++++++++++ 3 files changed, 84 insertions(+) create mode 100644 test/clj/orcpub/sheet_shim_test.clj diff --git a/src/clj/orcpub/pdf.clj b/src/clj/orcpub/pdf.clj index af2307424..03b25fc22 100644 --- a/src/clj/orcpub/pdf.clj +++ b/src/clj/orcpub/pdf.clj @@ -2072,6 +2072,28 @@ {:head "Some of this export did not fit." :sub "Your sheet is below and is complete. These parts were left out:"}) +(defn fit-sheet-to-page! + "Re-papers the AcroForm sheet onto `draw/*page*`, centred. A NO-OP on :letter, which + is what the templates already are. + + Moves the MEDIABOX, not the content: the window shifts over the page's coordinate + space, so artwork and widgets move together and no appearance stream is touched. + Translating 549 widget rects by hand would do the same thing and get it wrong once." + [doc] + (let [[pw ph] (draw/page-size draw/*page*)] + (doseq [page (.getPages doc) + :let [mb (.getMediaBox page) + tw (.getWidth mb) th (.getHeight mb)] + :when (or (not= pw tw) (not= ph th))] + ;; A4 is 16.72pt narrower, so 8.36 goes off each side. It lands in the margin on + ;; every page but the spell page, whose scroll frame loses the outer tip of its + ;; corner curls -- measured, and the straight sides sit at 11pt and clear it. + (let [box (PDRectangle. (float (/ (- tw pw) 2.0)) + (float (/ (- th ph) 2.0)) + (float pw) (float ph))] + (.setMediaBox page box) + (.setCropBox page box))))) + (defn add-notice-page! "Prepends a page naming what the export dropped. Adds NO page on a clean export. diff --git a/src/clj/orcpub/routes.clj b/src/clj/orcpub/routes.clj index 58df5e1bf..d2bf3abd4 100644 --- a/src/clj/orcpub/routes.clj +++ b/src/clj/orcpub/routes.clj @@ -1530,6 +1530,9 @@ ;; After the pages exist, so clones are stamped too, and before the card ;; pages are appended -- those carry the line on their backs already. (pdf/stamp-site-line! doc site-line (boolean prints-site-line?)) + ;; Before the card and spellbook pages, which are already drawn at the right size: + ;; this re-papers the TEMPLATE pages only, and is a no-op on Letter. + (pdf/fit-sheet-to-page! doc) ;; One set of fonts and one image embedder for the whole document. Both are ;; per-document: a second load-fonts embeds a second subset of every face, ;; and a second loader re-embeds the 998x998 card-back mark. Built only when diff --git a/test/clj/orcpub/sheet_shim_test.clj b/test/clj/orcpub/sheet_shim_test.clj new file mode 100644 index 000000000..fd699f862 --- /dev/null +++ b/test/clj/orcpub/sheet_shim_test.clj @@ -0,0 +1,59 @@ +(ns orcpub.sheet-shim-test + "Re-papering the AcroForm templates onto another sheet. + + The templates are 612x792 with fixed artwork, so A4 is a framing change, not a + redraw. This is the first thing in the page-size work that touches the character + sheet -- the live export path for every user -- so what it must NOT do matters as + much as what it does." + (:require [clojure.test :refer [deftest testing is]] + [clojure.java.io :as io] + [orcpub.pdf :as pdf] + [orcpub.pdf.draw :as draw]) + (:import (org.apache.pdfbox Loader))) + +(defn- template [] + (with-open [in (.openStream (io/resource "fillable-char-sheetstyle-1-1-spells.pdf"))] + (Loader/loadPDF (.readAllBytes in)))) + +(defn- boxes [doc] + (vec (for [p (.getPages doc) + :let [m (.getMediaBox p)]] + [(Math/round (.getLowerLeftX m)) (Math/round (.getLowerLeftY m)) + (Math/round (.getWidth m)) (Math/round (.getHeight m))]))) + +(defn- widget-xs [doc] + (vec (for [p (.getPages doc), a (.getAnnotations p) :let [r (.getRectangle a)] :when r] + (Math/round (.getLowerLeftX r))))) + +(deftest letter-is-a-no-op + (testing "the templates ARE Letter, so nothing may change -- not the boxes, not one + widget. This pins the opt-in guard rather than trusting that it holds." + (with-open [doc (template)] + (let [before (boxes doc) ws (widget-xs doc)] + (binding [draw/*page* :letter] (pdf/fit-sheet-to-page! doc)) + (is (= before (boxes doc)) "media boxes untouched") + (is (= ws (widget-xs doc)) "widgets untouched") + (is (every? #(= [0 0 612 792] %) (boxes doc))))))) + +(deftest a4-re-papers-every-page + (testing "the window moves over the content: 8pt off each side, 25pt gained each end" + (with-open [doc (template)] + (binding [draw/*page* :a4] (pdf/fit-sheet-to-page! doc)) + (is (every? #(= [8 -25 595 842] %) (boxes doc)) + (str "got " (pr-str (distinct (boxes doc))))))) + (testing "and the WIDGETS are not rewritten -- the box moved, so they move with it. + + Translating 549 rects by hand would reach the same place and get it wrong + once; this is why no appearance stream is regenerated." + (with-open [doc (template)] + (let [ws (widget-xs doc)] + (binding [draw/*page* :a4] (pdf/fit-sheet-to-page! doc)) + (is (= ws (widget-xs doc))))))) + +(deftest a5-also-works-though-nobody-should + (testing "the shim is general. An A5 character sheet is a postcard, but the code + should not special-case A4." + (with-open [doc (template)] + (binding [draw/*page* :a5] (pdf/fit-sheet-to-page! doc)) + (is (every? #(= [96 98 420 595] %) (boxes doc)) + (str "got " (pr-str (distinct (boxes doc)))))))) From 605714d1f5ed6a49d9e7bc4d1792fe2e3a2b61a2 Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Sat, 17 Oct 2026 23:40:31 +0000 Subject: [PATCH 22/40] Branch changelog Four lines for the whole branch, per the house style: one outcome a user would notice per line, and no internal work. Most of this branch is therefore absent from it. The namespace split, the baselines, the lint path, the docstrings and the grid de-duplication are refactors and tooling, which the template excludes. The partition, page-creation and cut-grid fixes are also absent: they are faults in A4 and A5 support, which this same branch built, and the template says a fix to what the branch built is part of building it rather than a line of its own. What survives as Fixed is the one bug that predates the branch and that a user could hit on Letter today: an unrenderable name costing the card sheet it sits on and every sheet after it. --- docs/branch-changelog.md | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 docs/branch-changelog.md diff --git a/docs/branch-changelog.md b/docs/branch-changelog.md new file mode 100644 index 000000000..38e360f93 --- /dev/null +++ b/docs/branch-changelog.md @@ -0,0 +1,40 @@ +# Branch changelog — `refactor/pdf-canvas` + +## Why this branch exists + +`orcpub.pdf` was a 3,272-line file holding the character sheet, the cards and the shared +drawing code, with the page height typed in as a literal `11` at 39 sites. That made any +paper but US Letter impossible, so this branch separated the drawing layer from the two +things that use it and made the page a parameter. + +Three faults turned up on the way, each invisible on Letter and each found by generating +a PDF and counting what was on it rather than by reading the code: cards past the ninth +were silently dropped on any sheet that holds fewer, a short overflow vector threw an +exception that the enclosing `try` swallowed along with every card, and every page was +created at PDFBox's Letter default whatever size had been asked for. The suite, the +pinned baselines and the linter all passed with every one of them present. + +Scope a reviewer needs: the character-sheet templates are 612x792 with fixed artwork, so +A4 for the sheet is a re-papering (the page window moves over the content), not a redraw. +Everything we draw ourselves — cards, backs, spellbook, overflow pages — genuinely lays +out to the chosen paper. + +## Added + +- **Printing:** A4 and A5 as well as US Letter, for spell cards, magic item cards, the + spellbook and the character sheet. An A4 spellbook page carries about 7% more than a + Letter one; A5 fits four cards to a sheet instead of nine. +- **Printing:** when part of an export cannot be produced, the PDF now opens with a page + naming what was left out and why. A clean export is unchanged and gains no page. + +## Changed + +- **Printing:** a character portrait whose host is briefly unreachable is fetched a second + time before the export gives up on it. + +## Fixed + +- **Printing:** a magic item or spell whose name the embedded font cannot draw no longer + costs the card sheet it is on, and every sheet after it. + +## Security From 969c07fca647d6eb36d29a9001187d5bd8b35d70 Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Sun, 18 Oct 2026 05:11:37 +0000 Subject: [PATCH 23/40] Pin the locale everywhere the PDF path formats or folds a token The locale CI job was red on this branch and green on integration: 127 failures and 6 errors under tr_TR, none under en_US. Two causes, both the bug docs/kb/locale-safety.md section 3 already names. Formatting. The evocation sigil built its SVG path with an unqualified (format "%.2f"), which writes "5,00" under tr_TR and es_ES. svg-path-ops tokenizes dot-decimals only, so one coordinate became two: measured, 2 path ops became 4 and a point landed at 30.0 in a 10-unit box. The sigil drew as a scribble. The same fault in the test harness made every recorded baseline read as moved, which is why the failure count was large and uninformative. Case folding. s/capitalize on a school name turned "illusion" into "Illusion" with a dotted capital I, outside WinAnsi, so normalize-text substituted it and the heading drew a different glyph; s/upper-case did the same to "Wizard". A URL lowercased for host matching had the same exposure. common gains ascii-capitalize and decimal-str next to the existing ascii-lower-case and ascii-upper-case, and the 13 sites in the PDF path use them. The KB's survey grep covers case folding only, so no grep would have caught the sigil; the new test greps for an unlocalised float conversion across src and test, and pins the tokenizer consequence directly. 742 tests, 5603 assertions green under tr_TR, es_ES and the default locale. No baseline file changed, so en_US output is byte-identical. --- docs/branch-changelog.md | 4 + src/clj/orcpub/pdf.clj | 6 +- src/clj/orcpub/pdf/cards.clj | 10 +-- src/clj/orcpub/pdf/draw.clj | 2 +- src/clj/orcpub/spellbook.clj | 16 ++-- src/cljc/orcpub/common.cljc | 19 +++++ src/cljc/orcpub/dnd/e5/spell_print.cljc | 5 +- test/clj/orcpub/notice_page_test.clj | 3 +- test/clj/orcpub/pdf_locale_test.clj | 98 +++++++++++++++++++++++++ test/clj/orcpub/pdf_ops.clj | 3 +- test/clj/orcpub/sheet_geometry_test.clj | 15 ++-- 11 files changed, 156 insertions(+), 25 deletions(-) create mode 100644 test/clj/orcpub/pdf_locale_test.clj diff --git a/docs/branch-changelog.md b/docs/branch-changelog.md index 38e360f93..3a0c991b4 100644 --- a/docs/branch-changelog.md +++ b/docs/branch-changelog.md @@ -36,5 +36,9 @@ out to the chosen paper. - **Printing:** a magic item or spell whose name the embedded font cannot draw no longer costs the card sheet it is on, and every sheet after it. +- **Printing:** on a server whose JVM runs a non-English locale, the evocation sigil drew + as a scribble and school and class headings drew the wrong glyph. The PDF path now pins + the locale wherever it formats or case-folds a machine token, as + `docs/kb/locale-safety.md` already required. ## Security diff --git a/src/clj/orcpub/pdf.clj b/src/clj/orcpub/pdf.clj index 03b25fc22..59c638c3f 100644 --- a/src/clj/orcpub/pdf.clj +++ b/src/clj/orcpub/pdf.clj @@ -1328,7 +1328,7 @@ (defn jpeg-url? "Whether `url` names a JPEG, and so whether its bytes embed without re-encoding." [url] - (let [lower (s/lower-case (str url))] + (let [lower (common/ascii-lower-case (str url))] (or (s/ends-with? lower "jpg") (s/ends-with? lower "jpeg")))) (defn- failure-reason @@ -1437,7 +1437,7 @@ SWALLOWS every failure: logs and returns nil, so one unreachable portrait URL cannot fail an export. Callers get no signal that nothing was drawn." [doc page url x y width height] - (let [lower-case-url (s/lower-case url) + (let [lower-case-url (common/ascii-lower-case url) jpg? (or (s/ends-with? lower-case-url "jpg") (s/ends-with? lower-case-url "jpeg")) draw-fn (if jpg? draw-jpg draw-non-jpg)] @@ -2021,7 +2021,7 @@ ;; The class name and, beside it, the numbers the section's own ;; ability/DC/attack boxes cannot carry once a page holds more than ;; one class. Centred together so the pair reads as one heading. - (let [stats (->> [(when ability (s/upper-case (str ability))) + (let [stats (->> [(when ability (common/ascii-upper-case (str ability))) (when dc (str "DC " dc)) (when attack (str attack))] (remove nil?) diff --git a/src/clj/orcpub/pdf/cards.clj b/src/clj/orcpub/pdf/cards.clj index c8caac7be..8c6e92c50 100644 --- a/src/clj/orcpub/pdf/cards.clj +++ b/src/clj/orcpub/pdf/cards.clj @@ -170,7 +170,7 @@ (str summary " (see " (if source - (s/upper-case (name source)) + (common/ascii-upper-case (name source)) "PHB") " " page @@ -184,7 +184,7 @@ (- box-height 1.13))] (when (:material-component components) (draw/draw-text-to-box cs - (str (s/capitalize (:material-component components))) + (str (common/ascii-capitalize (:material-component components))) (:italic fonts) 8 (+ x 0.12) @@ -367,13 +367,13 @@ (let [kind (when type ;; Capitalised, and only the first word: the books write "Wondrous ;; item, rare", not "Wondrous Item". - (s/capitalize + (common/ascii-capitalize (str (common/kw-to-name type) (when subtype (str " (" (common/kw-to-name subtype) ")"))))) rare (when rarity (if (= :varies rarity) "rarity varies" - (s/lower-case (common/kw-to-name rarity)))) + (common/ascii-lower-case (common/kw-to-name rarity)))) ] (s/join ", " (remove s/blank? [kind rare])))) @@ -648,7 +648,7 @@ body (or description (when summary (str summary " (see " - (if source (s/upper-case (name source)) "DMG") + (if source (common/ascii-upper-case (name source)) "DMG") " " page " for more details)")) "") clause (attunement-phrase attunement attunement-details) diff --git a/src/clj/orcpub/pdf/draw.clj b/src/clj/orcpub/pdf/draw.clj index 30cb2eed8..85b1fb58d 100644 --- a/src/clj/orcpub/pdf/draw.clj +++ b/src/clj/orcpub/pdf/draw.clj @@ -445,7 +445,7 @@ n (fn [i] (nth ts i)) ax (fn [v] (if rel? (+ cx v) v)) ay (fn [v] (if rel? (+ cy v) v))] - (case (if cmd (keyword (s/upper-case (name cmd))) :none) + (case (if cmd (keyword (common/ascii-upper-case (name cmd))) :none) :M (let [x (ax (n 0)) y (ay (n 1))] (recur (drop 2 ts) (if rel? :l :L) x y x y nil nil (conj out [:move x y]))) diff --git a/src/clj/orcpub/spellbook.clj b/src/clj/orcpub/spellbook.clj index bf9be4455..f6efb9164 100644 --- a/src/clj/orcpub/spellbook.clj +++ b/src/clj/orcpub/spellbook.clj @@ -321,9 +321,13 @@ "enchantment" ["M5 5 m0 -.8 a.8 .8 0 1 1 -.8 .8 a1.8 1.8 0 1 1 1.8 1.8 a2.9 2.9 0 1 1 2.9 -2.9"] "evocation" (vec (for [t (range 8) :let [a (* t (/ Math/PI 4)) - r1 (if (odd? t) 1.6 1.1) r2 (if (odd? t) 3.4 4.3)]] - (format "M%.2f %.2f L%.2f %.2f" (+ 5 (* r1 (Math/cos a))) (+ 5 (* r1 (Math/sin a))) - (+ 5 (* r2 (Math/cos a))) (+ 5 (* r2 (Math/sin a)))))) + r1 (if (odd? t) 1.6 1.1) r2 (if (odd? t) 3.4 4.3) + ;; decimal-str, not format: a Turkish or Spanish JVM writes + ;; "5,00" here, and svg-path-ops reads that comma as a second + ;; coordinate -- 2 path ops became 4, outside the 10-unit box. + d2 #(common/decimal-str 2 %)]] + (str "M" (d2 (+ 5 (* r1 (Math/cos a)))) " " (d2 (+ 5 (* r1 (Math/sin a)))) + " L" (d2 (+ 5 (* r2 (Math/cos a)))) " " (d2 (+ 5 (* r2 (Math/sin a))))))) "illusion" ["M3.6 1.5 L6 5 L3.6 8.5 L1.2 5 Z" "M6.4 1.5 L8.8 5 L6.4 8.5 L4 5 Z"] "necromancy" ["M6.5 1.4 A3.8 3.8 0 1 0 6.5 8.6 A2.9 2.9 0 1 1 6.5 1.4 Z"] "transmutation" ["M1 5 A4 4 0 1 0 9 5 A4 4 0 1 0 1 5 Z" "M5 1.6 L8 6.8 L2 6.8 Z"]}) @@ -392,7 +396,7 @@ (defn- school-line "The line under a spell's name: \"Evocation cantrip\" or \"3rd-level evocation\"." [{:keys [level school]}] - (let [school (s/capitalize (str (or school "")))] + (let [school (common/ascii-capitalize (str (or school "")))] (if (zero? (or level 0)) (str school " cantrip") (str (common/ordinal level) "-level " (common/ascii-lower-case school))))) @@ -605,7 +609,7 @@ [fonts level slots pact-level] {:kind :lvh :keep 2 :h 22 :level level :slots slots :pact-level pact-level :draw (fn [cs fonts x ty w] - (let [label (if (zero? level) "CANTRIPS" (s/upper-case (str (common/ordinal level) " level"))) + (let [label (if (zero? level) "CANTRIPS" (common/ascii-upper-case (str (common/ordinal level) " level"))) n-slots (str slots (when pact-level " pact") (if (= 1 slots) " slot" " slots")) sub (cond (zero? level) "at will" (not (pos? (or slots 0))) "no slots yet" @@ -847,7 +851,7 @@ [cs fonts page {:keys [classes tabs]} max-level w] (let [x margin ty 30 stats (for [ci (sort (:classes page)) :let [k (get classes ci)] :when (:dc k)] - (str (s/upper-case (:class k)) " DC " (:dc k) " ATTACK " (:attack k))) + (str (common/ascii-upper-case (:class k)) " DC " (:dc k) " ATTACK " (:attack k))) names (:names page) guide (cond (empty? names) "" (= (first names) (peek names)) (first names) diff --git a/src/cljc/orcpub/common.cljc b/src/cljc/orcpub/common.cljc index 23f4efdcf..e95739bef 100644 --- a/src/cljc/orcpub/common.cljc +++ b/src/cljc/orcpub/common.cljc @@ -48,6 +48,25 @@ #?(:clj (.toUpperCase ^String t java.util.Locale/ROOT) :cljs (.toUpperCase t)))) +(defn ascii-capitalize + "clojure.string/capitalize without the machine's locale. A Turkish JVM upper-cases the + \"i\" of \"illusion\" to the dotted \"\u0130\", which is outside WinAnsi, so the PDF fonts + substituted it and the school heading drew a different glyph." + [x] + (let [t (str x)] + (if (< (count t) 2) + (ascii-upper-case t) + (str (ascii-upper-case (subs t 0 1)) (ascii-lower-case (subs t 1)))))) + +(defn decimal-str + "`x` to `places` decimals with a dot, whatever the machine's locale. A default locale + writes \"5,00\"; SVG path data and PDF operands are machine tokens, so a comma there + is not a different spelling but a second number. docs/kb/locale-safety.md." + [places x] + #?(:clj (String/format java.util.Locale/ROOT (str "%." places "f") + (object-array [(double x)])) + :cljs (.toFixed (double x) places))) + (defn- name-to-kw-aux [name ns] (when (string? name) (as-> name $ diff --git a/src/cljc/orcpub/dnd/e5/spell_print.cljc b/src/cljc/orcpub/dnd/e5/spell_print.cljc index db703e581..14a6c069a 100644 --- a/src/cljc/orcpub/dnd/e5/spell_print.cljc +++ b/src/cljc/orcpub/dnd/e5/spell_print.cljc @@ -5,7 +5,8 @@ Pure string work, no PDFBox. These were in pdf.clj, so spellbook.clj depended on a 3,200-line clj file for six functions that never touch a PDF, beside spell-annotations, which was lifted out of the print path on the same grounds." - (:require [clojure.string :as s])) + (:require [clojure.string :as s] + [orcpub.common :as common])) (defn spell-school-level "The subtitle line of a spell card: \"Wizard Cantrip Evocation\" at level 0, @@ -13,7 +14,7 @@ missing level \"?\" rather than throwing, since homebrew spells reach here unvalidated." [{:keys [level school]} class-nm] - (let [school-str (if school (s/capitalize school) "Unknown")] + (let [school-str (if school (common/ascii-capitalize school) "Unknown")] (if (and level (zero? level)) (str class-nm " Cantrip " school-str) (str class-nm " Level " (or level "?") " " school-str)))) diff --git a/test/clj/orcpub/notice_page_test.clj b/test/clj/orcpub/notice_page_test.clj index 0f6002c82..bce84b75f 100644 --- a/test/clj/orcpub/notice_page_test.clj +++ b/test/clj/orcpub/notice_page_test.clj @@ -7,6 +7,7 @@ when there is nothing to say." (:require [clojure.test :refer [deftest testing is]] [clojure.string :as str] + [orcpub.common :as common] [orcpub.errors :as errors] [orcpub.pdf-ops :as ops] [orcpub.pdf :as pdf]) @@ -72,7 +73,7 @@ (re-matches #"[0-9.-]+ [0-9.-]+ Td" op) (let [dy (Double/parseDouble (second (str/split op #" ")))] (assoc st :y (if y (+ y dy) dy))) - (re-find #" Tj$" op) (assoc st :out (conj out (format "%.2f" y))) + (re-find #" Tj$" op) (assoc st :out (conj out (common/decimal-str 2 y))) :else st)) {:y nil :out []} (ops/page-ops page))] diff --git a/test/clj/orcpub/pdf_locale_test.clj b/test/clj/orcpub/pdf_locale_test.clj new file mode 100644 index 000000000..39f11642b --- /dev/null +++ b/test/clj/orcpub/pdf_locale_test.clj @@ -0,0 +1,98 @@ +(ns orcpub.pdf-locale-test + "PDF geometry must not depend on the JVM's default locale. + + docs/kb/locale-safety.md section 3 already states the rule -- pin the locale whenever + you parse or format a machine-readable string -- and the PDF work broke it anyway: + an unqualified (format \"%.2f\") writes \"5,00\" under tr_TR/es_ES, and + draw/svg-path-ops tokenizes dot-decimals only, so one coordinate became two." + (:require [clojure.test :refer [deftest testing is]] + [clojure.string :as str] + [clojure.java.io :as io] + [orcpub.pdf-ops :as ops] + [orcpub.pdf.draw :as draw]) + (:import (java.util Locale) + (org.apache.pdfbox.pdmodel PDDocument PDPage PDPageContentStream))) + +(defn- under-locale + "`f` with the JVM default locale set to `tag`, restored afterwards." + [tag f] + (let [saved (Locale/getDefault)] + (try + (Locale/setDefault (Locale/forLanguageTag tag)) + (f) + (finally (Locale/setDefault saved))))) + +(defn- sigil-paths + "The spellbook's school sigils, re-read with the ns reloaded under the current locale. + `sigils` is a load-time def, so the locale in force at load bakes into its strings -- + the same trap page-w/page-h hit, in a different guise." + [] + (require 'orcpub.spellbook :reload) + (->> @(resolve 'orcpub.spellbook/sigils) + vals + (mapcat identity) + (filter string?) + vec)) + +(deftest sigil-paths-do-not-depend-on-the-jvm-locale + (let [en (under-locale "en-US" sigil-paths) + tr (under-locale "tr-TR" sigil-paths) + es (under-locale "es-ES" sigil-paths)] + (testing "no sigil path carries a decimal comma" + (doseq [[tag paths] [["tr-TR" tr] ["es-ES" es]] + p paths] + (is (not (str/includes? p ",")) (str tag ": " p)))) + (testing "and the paths are identical across locales" + (is (= en tr) "tr-TR") + (is (= en es) "es-ES")) + ;; Guards the guard: if sigil-paths ever stops reaching the generated entry, the + ;; comparisons above pass vacuously. + (is (some #(str/starts-with? % "M5") en) "the evocation sigils are in what we read") + ;; Restore the ns to the ambient locale for the rest of the suite. + (require 'orcpub.spellbook :reload))) + +(deftest a-decimal-comma-is-read-as-a-second-coordinate + (testing "why the above matters: the tokenizer does not mis-read, it mis-counts" + ;; Measured: 2 ops become 4, and 30.0 is off a 10-unit box -- the sigil draws as a + ;; scribble rather than a star. This is the damage, not the string difference. + (is (= [[:move 6.1 5.0] [:line 9.3 5.0]] + (draw/svg-path-ops "M6.10 5.00 L9.30 5.00"))) + (is (= [[:move 6.0 10.0] [:line 5.0 0.0] [:line 9.0 30.0] [:line 5.0 0.0]] + (draw/svg-path-ops "M6,10 5,00 L9,30 5,00"))))) + +(defn- line-ops + "One drawn line as baseline operators, under the current locale." + [] + (with-open [doc (PDDocument.)] + (let [pg (PDPage.)] + (.addPage doc pg) + (with-open [cs (PDPageContentStream. doc pg)] + ;; Non-integral coordinates, or %.2f and %,.2f render alike. + (draw/draw-line cs 90.25 180.5 486.75 180.5)) + (ops/page-ops pg)))) + +(deftest baseline-operators-do-not-depend-on-the-jvm-locale + (testing "pdf-ops renders operands the same in any locale, or every baseline flaps" + (let [en (under-locale "en-US" line-ops)] + (is (= en (under-locale "tr-TR" line-ops)) "tr-TR") + (is (= en (under-locale "es-ES" line-ops)) "es-ES") + (is (every? #(not (str/includes? % ",")) en) "no operand carries a decimal comma")))) + +(def ^:private decimal-format-re + "A `format` call with a float conversion and no explicit locale. String/format with + Locale/ROOT does not match: its first argument is the locale, not the pattern." + #"\(format\s+\"[^\"]*%[-+ 0,(#]*[0-9]*(?:\.[0-9]+)?[feEgGa]") + +(deftest no-unlocalised-decimal-format-in-the-pdf-path + (testing "the KB rule, as a check that fires at write time rather than in CI" + ;; The KB's own survey grep covers only case-folding, so no grep would have caught + ;; the sigil bug. This one covers formatting, which the rule also names. + (let [offenders (for [root ["src" "test"] + f (file-seq (io/file root)) + :when (and (.isFile f) (re-find #"\.cljc?$" (.getName f))) + :let [src (slurp f)] + [i line] (map-indexed vector (str/split-lines src)) + :when (re-find decimal-format-re line)] + (str (.getPath f) ":" (inc i) " " (str/trim line)))] + (is (empty? offenders) + (str "use String/format with Locale/ROOT:\n" (str/join "\n" offenders)))))) diff --git a/test/clj/orcpub/pdf_ops.clj b/test/clj/orcpub/pdf_ops.clj index ac56aeda3..dc6df3cc7 100644 --- a/test/clj/orcpub/pdf_ops.clj +++ b/test/clj/orcpub/pdf_ops.clj @@ -3,6 +3,7 @@ recorded baseline. Shared by the geometry characterization tests: card_geometry_test pins the card sheets, spellbook_geometry_test pins the spellbook." (:require [clojure.string :as str] + [orcpub.common :as common] [clojure.edn :as edn] [clojure.java.io :as io] [clojure.pprint :as pprint] @@ -27,7 +28,7 @@ (cond ;; 2dp of a point is 1/3600 inch: finer than any hand tweak, coarse enough that ;; re-associating the same arithmetic does not flap the baseline. - (instance? COSNumber t) (format "%.2f" (.floatValue ^COSNumber t)) + (instance? COSNumber t) (common/decimal-str 2 (.floatValue ^COSNumber t)) (instance? COSString t) (show-string t) (instance? COSName t) (str "/" (.getName ^COSName t)) :else (str t))) diff --git a/test/clj/orcpub/sheet_geometry_test.clj b/test/clj/orcpub/sheet_geometry_test.clj index ec4d3aaa8..c9b9f1303 100644 --- a/test/clj/orcpub/sheet_geometry_test.clj +++ b/test/clj/orcpub/sheet_geometry_test.clj @@ -7,6 +7,7 @@ (:require [clojure.test :refer [deftest testing]] [clojure.java.io :as io] [clojure.string :as str] + [orcpub.common :as common] [orcpub.pdf-ops :as ops] [orcpub.pdf :as pdf]) (:import (org.apache.pdfbox Loader) @@ -40,7 +41,8 @@ (for [section (range 1 (inc casters)) level [1 3] [prefix v] [["spell-slots" "4"] ["slots-expended" "2"]]] - [(keyword (format "%s-%d-%d" prefix level section)) v]))) + ;; str, not format: %d takes the locale's digits, and these are keywords. + [(keyword (str prefix "-" level "-" section)) v]))) (def ^:private fields (merge @@ -104,11 +106,12 @@ a (.getAnnotations (.getPage doc i)) :let [r (.getRectangle a)] :when r] - (format "%d %s %.2f %.2f %.2f %.2f" - i - (or (some-> a .getCOSObject (.getNameAsString "T")) "-") - (.getLowerLeftX r) (.getLowerLeftY r) - (.getWidth r) (.getHeight r))) + ;; A widget rect is a machine token: under tr_TR an unqualified format wrote + ;; "705,60" and every box in this baseline read as moved. + (let [d2 #(common/decimal-str 2 %)] + (str i " " (or (some-> a .getCOSObject (.getNameAsString "T")) "-") " " + (d2 (.getLowerLeftX r)) " " (d2 (.getLowerLeftY r)) " " + (d2 (.getWidth r)) " " (d2 (.getHeight r))))) sort vec)) From 9559f3ef8ecdf4c356e77a6b478943ccc243f499 Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Sun, 18 Oct 2026 05:17:16 +0000 Subject: [PATCH 24/40] Place template-page images in template space, not the requested page fit-sheet-to-page! re-papers the sheet by moving the MediaBox, so the template content keeps its Letter 612x792. The portrait and faction draws run after it and reach pt-from-top, which reads draw/*page* -- the requested paper. Measured, for the style 1 portrait box: Letter 169.20 0.00 0.00 169.20 32.40 468.00 cm A4 169.20 0.00 0.00 169.20 32.40 517.89 cm +49.89pt A5 169.20 0.00 0.00 169.20 32.40 271.28 cm -196.72pt Both land off the artwork frame. The eight geometry baselines could not catch it: they pin Letter, where the bug is a no-op, and the A4 sheet case draws no portrait. Fixed in the two image entry points rather than at the seven call sites, so a later draw onto a template page cannot re-spring the trap. Cards, spellbook and overflow pages are ours to lay out and still follow *page*. 744 tests, 5609 assertions green; no baseline moved. --- docs/branch-changelog.md | 4 ++ src/clj/orcpub/pdf.clj | 21 +++++++--- test/clj/orcpub/sheet_image_test.clj | 59 ++++++++++++++++++++++++++++ 3 files changed, 79 insertions(+), 5 deletions(-) create mode 100644 test/clj/orcpub/sheet_image_test.clj diff --git a/docs/branch-changelog.md b/docs/branch-changelog.md index 3a0c991b4..af00f2005 100644 --- a/docs/branch-changelog.md +++ b/docs/branch-changelog.md @@ -36,6 +36,10 @@ out to the chosen paper. - **Printing:** a magic item or spell whose name the embedded font cannot draw no longer costs the card sheet it is on, and every sheet after it. +- **Printing:** on A4 and A5 the character portrait and faction badge were drawn against + the requested paper instead of the template's own Letter space, putting them 49.89pt + high on A4 and 196.72pt low on A5 -- off their artwork frames. The sheet templates are + re-papered, so anything drawn onto one is placed in template space. - **Printing:** on a server whose JVM runs a non-English locale, the evocation sigil drew as a scribble and school and class headings drew the wrong glyph. The PDF path now pins the locale wherever it formats or case-folds a machine token, as diff --git a/src/clj/orcpub/pdf.clj b/src/clj/orcpub/pdf.clj index 59c638c3f..3daf6e3bb 100644 --- a/src/clj/orcpub/pdf.clj +++ b/src/clj/orcpub/pdf.clj @@ -1170,6 +1170,14 @@ {:error :image-too-large-dimensions :url url}))) data)) +(defmacro ^:private in-template-space + "`body` with the page fixed to Letter, which is the AcroForm templates' coordinate + space on every paper: fit-sheet-to-page! re-papers the sheet by moving the MediaBox, + so the content it moves over keeps its original 612x792. Measured against the + REQUESTED page instead, the portrait sat 49.89pt high on A4 and 196.72pt low on A5." + [& body] + `(binding [draw/*page* :letter] ~@body)) + (defn draw-non-jpg "Fetches a non-JPEG image from `url` and draws it, re-encoded losslessly (PNG and anything else ImageIO reads). Box arguments are `draw-imagex`'s. Opens its own @@ -1233,9 +1241,11 @@ "Draws already-fetched image `data` at `x`,`y`, so an export can fetch all its images before drawing any. `jpg?` true embeds the bytes as they are; anything else is decoded and re-encoded losslessly, the only way PDFBox takes it. Logs a - failure and returns nil rather than throwing." + failure and returns nil rather than throwing. Places in template space -- these are + the sheet's portrait and faction boxes, fixed to the artwork, not to the paper." [doc page data jpg? x y width height] - (try + (in-template-space + (try (with-open [c-stream (draw/content-stream doc page)] (if jpg? (with-open [in (java.io.ByteArrayInputStream. data)] @@ -1247,7 +1257,7 @@ x y width height)))) (catch Exception e (println "ERROR: Failed to draw image for PDF:" (.getMessage e)) - nil))) + nil)))) (defn- jpeg-bytes? "Whether `data` opens with the JPEG start-of-image marker. @@ -1441,7 +1451,8 @@ jpg? (or (s/ends-with? lower-case-url "jpg") (s/ends-with? lower-case-url "jpeg")) draw-fn (if jpg? draw-jpg draw-non-jpg)] - (try + (in-template-space + (try (draw-fn doc page url x y width height) (catch clojure.lang.ExceptionInfo e (println "ERROR: Failed to load image for PDF:" (.getMessage e)) @@ -1452,7 +1463,7 @@ (println "ERROR: Unexpected error loading image for PDF:" (.getMessage e)) (println " URL:" url) (clojure.stacktrace/print-stack-trace e) - nil)))) + nil))))) (defn get-page "The document's `index`th page, zero-based. Thin wrapper over diff --git a/test/clj/orcpub/sheet_image_test.clj b/test/clj/orcpub/sheet_image_test.clj new file mode 100644 index 000000000..bef54c8c9 --- /dev/null +++ b/test/clj/orcpub/sheet_image_test.clj @@ -0,0 +1,59 @@ +(ns orcpub.sheet-image-test + "Portrait and faction images must land on the template artwork on any paper. + + fit-sheet-to-page! re-papers the sheet by moving the MEDIABOX, so the template's + content keeps its Letter coordinate space. Anything drawn onto a template page after + that must measure against Letter; measuring against the requested page instead puts + the image 49.89pt off on A4 and about 197pt off on A5." + (:require [clojure.test :refer [deftest testing is]] + [clojure.string :as str] + [orcpub.pdf-ops :as ops] + [orcpub.pdf :as pdf] + [orcpub.pdf.draw :as draw]) + (:import (java.awt.image BufferedImage) + (java.io ByteArrayOutputStream) + (javax.imageio ImageIO) + (org.apache.pdfbox.pdmodel PDDocument PDPage))) + +(def ^:private png + "A 4x4 PNG. Only its placement matters here, not its content." + (delay + (let [img (BufferedImage. 4 4 BufferedImage/TYPE_INT_RGB) + out (ByteArrayOutputStream.)] + (ImageIO/write img "png" out) + (.toByteArray out)))) + +(defn- portrait-cm + "The image placement matrices on a Letter template page, with `*page*` bound to `page`. + `cm` carries the scale and translate PDFBox writes for a drawn image." + [page] + (binding [draw/*page* page] + (with-open [doc (PDDocument.)] + (let [pg (PDPage.)] ; a bare PDPage is Letter, like the templates + (.addPage doc pg) + ;; The style 1 portrait box, as routes.clj passes it. + (pdf/draw-image-bytes! doc pg @png false 0.45 1.75 2.35 3.15) + (vec (filter #(str/ends-with? % " cm") (ops/page-ops pg))))))) + +(deftest template-images-ignore-the-requested-page-size + (let [letter (portrait-cm :letter)] + (testing "the placement is the template's, so it is the same on every paper" + (is (seq letter) "an image was drawn") + (is (= letter (portrait-cm :a4)) "A4") + (is (= letter (portrait-cm :a5)) "A5")))) + +(deftest the-shim-moves-the-window-not-the-content + (testing "fit-sheet-to-page! leaves content coordinates alone" + (binding [draw/*page* :a4] + (with-open [doc (PDDocument.)] + (let [pg (PDPage.)] + (.addPage doc pg) + (pdf/draw-image-bytes! doc pg @png false 0.45 1.75 2.35 3.15) + (let [before (vec (filter #(str/ends-with? % " cm") (ops/page-ops pg)))] + (pdf/fit-sheet-to-page! doc) + (is (= before (vec (filter #(str/ends-with? % " cm") (ops/page-ops pg)))) + "re-papering must not rewrite the content stream") + ;; The window moved instead: A4 is taller than Letter, so the box starts below 0. + (let [mb (.getMediaBox pg)] + (is (> 0.01 (Math/abs (- 595.28 (.getWidth mb)))) "A4 width") + (is (neg? (.getLowerLeftY mb)) "the A4 window extends below the Letter origin")))))))) From e3a0ed535010b7c1f9a45232e2a3c2204149833f Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Sun, 18 Oct 2026 05:26:49 +0000 Subject: [PATCH 25/40] Do not report a style's declared omission as a degraded export write-fields! noted every unplaceable field, including the ones unsupported-fields declares for a style. Style 4 has no inspiration box by design -- the guard test asserts exactly that -- so a style 4 export with an inspiration value got "Some of this export did not fit" prepended to a sheet that had lost nothing. The notice page only means something if it is silent on a clean export, so this is a false alarm rather than a cosmetic slip. write-fields! takes the declared set and reports only what is left. Those fields are still dropped and still logged; the filter governs the notice, not the placement. Passing nothing keeps the old behaviour, so a caller that forgets gets a false alarm rather than silence. 745 tests, 5612 assertions green; no baseline moved. --- docs/branch-changelog.md | 3 +++ src/clj/orcpub/pdf.clj | 23 ++++++++++++++--------- src/clj/orcpub/routes.clj | 4 +++- test/clj/orcpub/pdf_test.clj | 24 ++++++++++++++++++++++++ 4 files changed, 44 insertions(+), 10 deletions(-) diff --git a/docs/branch-changelog.md b/docs/branch-changelog.md index af00f2005..d9a88d84f 100644 --- a/docs/branch-changelog.md +++ b/docs/branch-changelog.md @@ -36,6 +36,9 @@ out to the chosen paper. - **Printing:** a magic item or spell whose name the embedded font cannot draw no longer costs the card sheet it is on, and every sheet after it. +- **Printing:** a style 4 (Cthulhu Mythos) sheet no longer opens with a page saying the + export lost something. Style 4 has no inspiration box by design, and the new notice + reported that declared omission as a loss on every such export. - **Printing:** on A4 and A5 the character portrait and faction badge were drawn against the requested paper instead of the template's own Letter space, putting them 49.89pt high on A4 and 196.72pt low on A5 -- off their artwork frames. The sheet templates are diff --git a/src/clj/orcpub/pdf.clj b/src/clj/orcpub/pdf.clj index 3daf6e3bb..f92232b36 100644 --- a/src/clj/orcpub/pdf.clj +++ b/src/clj/orcpub/pdf.clj @@ -800,12 +800,12 @@ (defn write-fields! "Populates the AcroForm in `doc` from `fields` {field-name-keyword value}: checkboxes - take truthy/falsey, text is normalized to WinAnsi. Truthy `flatten?` bakes the values - into page content and removes the form; `font-sizes` {field-name-keyword pt} applies - ONLY then. Bakes real appearance streams, as Firefox's print path ignores - NeedAppearances. Returns the sorted names the template has no field for, and logs - them; those values are dropped rather than thrown." - [doc fields flatten? font-sizes] + take truthy/falsey, text is normalized to WinAnsi. Truthy `flatten?` bakes values into + page content and removes the form; `font-sizes` {field-name-keyword pt} applies ONLY + then. Bakes real appearance streams, as Firefox's print path ignores NeedAppearances. + Returns the sorted names the template has no field for; they are logged and dropped, + and those in `expected-missing` (unsupported-fields) are not reported as degradation." + [doc fields flatten? font-sizes & [expected-missing]] (let [catalog (.getDocumentCatalog doc) form (.getAcroForm catalog) res (or (.getDefaultResources form) (PDResources.))] @@ -828,11 +828,16 @@ (assoc! m (.getFullyQualifiedName field) field)) (transient {}) (iterator-seq (.iterator (.getFieldTree form))))) - unplaceable (sort (map name (remove #(contains? by-name (name %)) (keys fields))))] - (when (seq unplaceable) + unplaceable (sort (map name (remove #(contains? by-name (name %)) (keys fields)))) + ;; A style's declared drops are not a degraded export: style 4 has no + ;; inspiration box by design, so noting it put the notice page in front of + ;; every style 4 sheet. + surprising (remove (set expected-missing) unplaceable)] + (when (seq surprising) (errors/note! "Sheet fields" (format "%d value(s) have no box on this sheet style and were left blank: %s" - (count unplaceable) (s/join ", " unplaceable))) + (count surprising) (s/join ", " surprising)))) + (when (seq unplaceable) (println (format "pdf/write-fields!: %d value(s) had no field in this template and were dropped: %s" (count unplaceable) (s/join ", " unplaceable)))) (doseq [[k v] fields] diff --git a/src/clj/orcpub/routes.clj b/src/clj/orcpub/routes.clj index d2bf3abd4..ba09eb1bd 100644 --- a/src/clj/orcpub/routes.clj +++ b/src/clj/orcpub/routes.clj @@ -1515,7 +1515,9 @@ refused (+ applied refused)))))) (when print-spell-annotations? (pdf/reserve-annotation-columns! doc)) - (pdf/write-fields! doc (pdf/spill-overflow! doc fields) (true? flatten?) font-sizes) + ;; The style's declared drops are not degradation -- see unsupported-fields. + (pdf/write-fields! doc (pdf/spill-overflow! doc fields) (true? flatten?) font-sizes + (get pdf/unsupported-fields print-character-sheet-style?)) (when print-spell-annotations? (pdf/annotate-spell-rows! doc spell-annotation)) ;; After the values, so a heading is drawn over a finished bar. Names diff --git a/test/clj/orcpub/pdf_test.clj b/test/clj/orcpub/pdf_test.clj index b0f780106..75bc396ea 100644 --- a/test/clj/orcpub/pdf_test.clj +++ b/test/clj/orcpub/pdf_test.clj @@ -3,6 +3,7 @@ (:require [clojure.test :refer [deftest is testing]] [clojure.java.io :as io] [clojure.string :as str] + [orcpub.errors :as errors] [orcpub.pdf :as pdf] [orcpub.pdf.draw :as draw] [orcpub.pdf.cards :as cards] @@ -945,6 +946,29 @@ "\n declared unsupported: " (pr-str (sort declared)) "\n actually dropped: " (pr-str (sort dropped)))))))))) +(deftest a-declared-unsupported-field-is-not-a-degraded-export + ;; The notice page exists to say an export lost something. Style 4 has no inspiration + ;; box BY DESIGN -- unsupported-fields declares it, and the guard above asserts it -- + ;; so noting it put "Some of this export did not fit" in front of every style 4 sheet. + (testing "style 4's declared drop raises no notice" + (let [{:keys [file]} (get pdf/sheet-masters 4)] + (with-open [in (.openStream (io/resource file)) + doc (Loader/loadPDF (.readAllBytes in))] + (binding [errors/*notices* (atom [])] + (let [fields (pdf/merge-style-fields 4 (filled-to-capacity 4)) + dropped (set (pdf/write-fields! doc fields false {} + (get pdf/unsupported-fields 4)))] + (is (= #{"inspiration"} dropped) "it is still dropped, and still logged") + (is (empty? (errors/notices)) "but it is not reported as a loss")))))) + (testing "an undeclared drop still raises one, so the guard is not vacuous" + (let [{:keys [file]} (get pdf/sheet-masters 4)] + (with-open [in (.openStream (io/resource file)) + doc (Loader/loadPDF (.readAllBytes in))] + (binding [errors/*notices* (atom [])] + (pdf/write-fields! doc {:no-such-field-at-all "x"} false {} + (get pdf/unsupported-fields 4)) + (is (= ["Sheet fields"] (mapv :what (errors/notices))))))))) + (deftest merge-style-fields-folds-sections-into-one-box (testing "a style with no shared box passes its fields through untouched" (let [fields {:backstory "b" :allies "a" :character-name "n"}] From f0269cba84a0320a4ec6846fd676769117d8e4b8 Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Sun, 18 Oct 2026 05:56:37 +0000 Subject: [PATCH 26/40] Fold the branch changelog into Summer Patch scripts/fold-branch-changelog.sh "Summer Patch", then three corrections by hand. Two of the folded lines sat under Fixed but should not have been there at all: the style 4 false notice and the A4 portrait placement are both fixes to this release's own new work, and CHANGELOG.md's own rule reserves Fixed for bugs that existed before. Dropped. The locale line said the evocation sigil drew as a scribble, which is also new work. What a reader of this release actually gains is the pre-existing half: on a non-English server, spell-card school names and the sheet's ability labels have always drawn a dotted I. Rewritten to that. Unwrapped the rest to one line a bullet, which is the surrounding style. scripts/lint-changelog.py passes; 1102 tests, 7349 assertions green. --- CHANGELOG.md | 5 ++++ docs/branch-changelog.md | 51 ---------------------------------------- 2 files changed, 5 insertions(+), 51 deletions(-) delete mode 100644 docs/branch-changelog.md diff --git a/CHANGELOG.md b/CHANGELOG.md index b8a404724..1b0c6d2a7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -78,6 +78,8 @@ Homebrew can be moved, switched off and repaired instead of lost, and a characte - **Characters:** a Choices list in the builder shows every choice a character stores, including ones whose homebrew isn't loaded in this browser, and lets those be cleared. - **Characters:** the character builder's Back and Next repeat at the bottom of each page, and open the next page at its top. - **Homebrew:** the add buttons on homebrew builders repeat below a long list of traits or options. +- **Printing:** A4 and A5 as well as US Letter, for spell cards, magic item cards, the spellbook and the character sheet. An A4 spellbook page carries about 7% more than a Letter one; A5 fits four cards to a sheet instead of nine. +- **Printing:** when part of an export cannot be produced, the PDF opens with a page naming what was left out and why. A clean export is unchanged and gains no page. ### Changed @@ -93,6 +95,7 @@ Homebrew can be moved, switched off and repaired instead of lost, and a characte not set one, instead of "Hi there". - **Characters:** the builder's tab bar wraps on narrow screens. - **Characters:** opening a character whose choices no longer apply sets them aside and lists them in a notice; the saved copy changes only when you save. +- **Printing:** a character portrait whose host is briefly unreachable is fetched a second time before the export gives up on it. ### Fixed @@ -151,6 +154,8 @@ Homebrew can be moved, switched off and repaired instead of lost, and a characte - **Characters:** a choice that no longer applied, such as a skill picked for a level since lowered, stayed hidden on the character and still counted on its sheet. - **Characters:** deleting or changing a character's first class no longer wipes the other classes' choices. - **Homebrew:** a homebrew class's choices that share a name show in level order; levels 10 and 17 came before level 3. +- **Printing:** a magic item or spell whose name the embedded font cannot draw no longer costs the card sheet it is on, and every sheet after it. +- **Printing:** on a server whose JVM runs a non-English locale, spell-card school names and the sheet's ability labels drew the wrong letter: a Turkish server printed "İllusion" and "İNT". ### Security diff --git a/docs/branch-changelog.md b/docs/branch-changelog.md deleted file mode 100644 index d9a88d84f..000000000 --- a/docs/branch-changelog.md +++ /dev/null @@ -1,51 +0,0 @@ -# Branch changelog — `refactor/pdf-canvas` - -## Why this branch exists - -`orcpub.pdf` was a 3,272-line file holding the character sheet, the cards and the shared -drawing code, with the page height typed in as a literal `11` at 39 sites. That made any -paper but US Letter impossible, so this branch separated the drawing layer from the two -things that use it and made the page a parameter. - -Three faults turned up on the way, each invisible on Letter and each found by generating -a PDF and counting what was on it rather than by reading the code: cards past the ninth -were silently dropped on any sheet that holds fewer, a short overflow vector threw an -exception that the enclosing `try` swallowed along with every card, and every page was -created at PDFBox's Letter default whatever size had been asked for. The suite, the -pinned baselines and the linter all passed with every one of them present. - -Scope a reviewer needs: the character-sheet templates are 612x792 with fixed artwork, so -A4 for the sheet is a re-papering (the page window moves over the content), not a redraw. -Everything we draw ourselves — cards, backs, spellbook, overflow pages — genuinely lays -out to the chosen paper. - -## Added - -- **Printing:** A4 and A5 as well as US Letter, for spell cards, magic item cards, the - spellbook and the character sheet. An A4 spellbook page carries about 7% more than a - Letter one; A5 fits four cards to a sheet instead of nine. -- **Printing:** when part of an export cannot be produced, the PDF now opens with a page - naming what was left out and why. A clean export is unchanged and gains no page. - -## Changed - -- **Printing:** a character portrait whose host is briefly unreachable is fetched a second - time before the export gives up on it. - -## Fixed - -- **Printing:** a magic item or spell whose name the embedded font cannot draw no longer - costs the card sheet it is on, and every sheet after it. -- **Printing:** a style 4 (Cthulhu Mythos) sheet no longer opens with a page saying the - export lost something. Style 4 has no inspiration box by design, and the new notice - reported that declared omission as a loss on every such export. -- **Printing:** on A4 and A5 the character portrait and faction badge were drawn against - the requested paper instead of the template's own Letter space, putting them 49.89pt - high on A4 and 196.72pt low on A5 -- off their artwork frames. The sheet templates are - re-papered, so anything drawn onto one is placed in template space. -- **Printing:** on a server whose JVM runs a non-English locale, the evocation sigil drew - as a scribble and school and class headings drew the wrong glyph. The PDF path now pins - the locale wherever it formats or case-folds a machine token, as - `docs/kb/locale-safety.md` already required. - -## Security From 9130242d8bc5a5234d5c1ada4c662cb032b1f6a3 Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Sun, 18 Oct 2026 06:32:35 +0000 Subject: [PATCH 27/40] Keep the character sheet on Letter at A5, and strip the portrait options Two findings from the second review, both measured before fixing. A5 cut the sheet in half. Re-papering moves a window over fixed 612x792 artwork, and A5's window is 192pt narrower and 197pt shorter than the templates. Counted, on style 1: letter crop=[0 0 .. 612 792] 0 of 335 widgets outside a4 crop=[8.36 -24.94 .. 603.64 816.95] 0 of 335 a5 crop=[96.24 98.36 .. 515.77 693.64] 159 of 335 So nearly half the fields were off the printed page. sheet-page-sizes is now #{:letter :a4}; an A5 export keeps its sheet pages on Letter and draws the cards and spellbook after them at A5, which is what A5 was ever for. The changelog claimed A5 character sheets; corrected. The old test asserted the crop box held what the shim was told to put there, and passed throughout. It is replaced by one that asserts no field falls outside the printed window, for every size in sheet-page-sizes. Portrait options reached write-fields!. The layered-portrait merge brought :portrait-png and :portrait-credit, which the export reads itself and pdf-option-keys never stripped, so write-fields! reported two unplaceable values and the notice page claimed a loss on every composed-portrait export. Added to the set, with a test that fails when either is missing. 1104 tests, 7359 assertions green under the default locale, tr_TR and es_ES. Lint 0 errors. The eight PDF baselines are byte-identical. --- CHANGELOG.md | 2 +- src/clj/orcpub/pdf.clj | 20 +++++++++++----- src/clj/orcpub/routes.clj | 4 ++++ test/clj/orcpub/page_size_test.clj | 25 ++++++++++++++++++- test/clj/orcpub/sheet_shim_test.clj | 37 +++++++++++++++++++++++++---- 5 files changed, 75 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1b0c6d2a7..1cfb20fcc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -78,7 +78,7 @@ Homebrew can be moved, switched off and repaired instead of lost, and a characte - **Characters:** a Choices list in the builder shows every choice a character stores, including ones whose homebrew isn't loaded in this browser, and lets those be cleared. - **Characters:** the character builder's Back and Next repeat at the bottom of each page, and open the next page at its top. - **Homebrew:** the add buttons on homebrew builders repeat below a long list of traits or options. -- **Printing:** A4 and A5 as well as US Letter, for spell cards, magic item cards, the spellbook and the character sheet. An A4 spellbook page carries about 7% more than a Letter one; A5 fits four cards to a sheet instead of nine. +- **Printing:** A4 as well as US Letter for the character sheet, and A4 or A5 for spell cards, magic item cards and the spellbook. An A4 spellbook page carries about 7% more than a Letter one; A5 fits four cards to a sheet instead of nine. An A5 export keeps the sheet itself on Letter. - **Printing:** when part of an export cannot be produced, the PDF opens with a page naming what was left out and why. A clean export is unchanged and gains no page. ### Changed diff --git a/src/clj/orcpub/pdf.clj b/src/clj/orcpub/pdf.clj index 6de31f107..73ec77e74 100644 --- a/src/clj/orcpub/pdf.clj +++ b/src/clj/orcpub/pdf.clj @@ -2184,15 +2184,23 @@ {:head "Some of this export did not fit." :sub "Your sheet is below and is complete. These parts were left out:"}) +(def sheet-page-sizes + "Papers the character sheet is re-framed onto. Re-papering MOVES a window over fixed + 612x792 artwork, so it only works where the window still contains the sheet: on A4, + 0 of 335 widgets fall outside it; on A5, 159 do -- half the fields cut off. A5 holds + the cards and the spellbook, which are laid out to the paper rather than framed." + #{:letter :a4}) + (defn fit-sheet-to-page! "Re-papers the AcroForm sheet onto `draw/*page*`, centred. A NO-OP on :letter, which - is what the templates already are. - + the templates already are, and outside sheet-page-sizes, whose sheet pages stay + Letter while the drawn pages after them use the requested size. Moves the MEDIABOX, not the content: the window shifts over the page's coordinate - space, so artwork and widgets move together and no appearance stream is touched. - Translating 549 widget rects by hand would do the same thing and get it wrong once." + space, so artwork and widgets move together and no appearance stream is touched -- + translating 549 widget rects by hand would reach the same place and get it wrong." [doc] - (let [[pw ph] (draw/page-size draw/*page*)] + (when (contains? sheet-page-sizes draw/*page*) + (let [[pw ph] (draw/page-size draw/*page*)] (doseq [page (.getPages doc) :let [mb (.getMediaBox page) tw (.getWidth mb) th (.getHeight mb)] @@ -2204,7 +2212,7 @@ (float (/ (- th ph) 2.0)) (float pw) (float ph))] (.setMediaBox page box) - (.setCropBox page box))))) + (.setCropBox page box)))))) (defn add-notice-page! "Prepends a page naming what the export dropped. Adds NO page on a clean export. diff --git a/src/clj/orcpub/routes.clj b/src/clj/orcpub/routes.clj index ee83928c9..0da258bf2 100644 --- a/src/clj/orcpub/routes.clj +++ b/src/clj/orcpub/routes.clj @@ -1339,6 +1339,10 @@ :magic-items-known :print-magic-item-cards? :spellbook :spell-order :page-size + ;; The composed portrait's bytes and its credit line. They are drawn, not written + ;; into a field, so leaving them here made write-fields! report two unplaceable + ;; values -- a notice page on every composed-portrait export. + :portrait-png :portrait-credit :flatten?}) (def ^:private image-url-shape diff --git a/test/clj/orcpub/page_size_test.clj b/test/clj/orcpub/page_size_test.clj index 68b41e5d1..8c575824f 100644 --- a/test/clj/orcpub/page_size_test.clj +++ b/test/clj/orcpub/page_size_test.clj @@ -5,12 +5,16 @@ returned 11, and every baseline stayed byte-identical -- correctly, because nothing had changed. Nothing tested a non-Letter page, so nothing caught it. This does." (:require [clojure.test :refer [deftest testing is]] + [clojure.java.io :as io] + [orcpub.errors :as errors] + [orcpub.pdf :as pdf] [orcpub.routes :as routes] [orcpub.pdf-ops :as ops] [orcpub.pdf.draw :as draw] [orcpub.pdf.cards :as cards] [orcpub.spellbook :as spellbook]) - (:import (org.apache.pdfbox.pdmodel PDDocument PDPage PDPageContentStream) + (:import (org.apache.pdfbox Loader) + (org.apache.pdfbox.pdmodel PDDocument PDPage PDPageContentStream) (org.apache.pdfbox.pdmodel.common PDRectangle))) (deftest page-sizes-are-iso-216 @@ -118,3 +122,22 @@ those reports now reach the user on the notice page, so every single export would carry a spurious warning." (is (contains? @#'routes/pdf-option-keys :page-size)))) + +(deftest an-export-option-never-reaches-the-form + ;; pdf-option-keys exists because write-fields! reports whatever it cannot place, and + ;; an option is not a field. The portrait pair arrived with the layered-portrait work + ;; and was not added, so every composed-portrait export drew a notice page saying two + ;; values had been left out -- of a sheet that had lost nothing. + (let [option-keys @#'routes/pdf-option-keys] + (testing "the keys the export reads for itself are all declared" + (doseq [k [:portrait-png :portrait-credit :page-size :spellbook :flatten?]] + (is (contains? option-keys k) (str k " is read by the export but not declared")))) + (testing "and stripping them leaves write-fields! nothing to complain about" + (let [{:keys [file]} (get pdf/sheet-masters 1) + fields (zipmap option-keys (repeat "x"))] + (with-open [in (.openStream (io/resource file)) + doc (Loader/loadPDF (.readAllBytes in))] + (binding [errors/*notices* (atom [])] + (is (empty? (pdf/write-fields! doc (apply dissoc fields option-keys) false {})) + "no option is mistaken for a field") + (is (empty? (errors/notices)) "so no notice page"))))))) diff --git a/test/clj/orcpub/sheet_shim_test.clj b/test/clj/orcpub/sheet_shim_test.clj index fd699f862..55ad89e96 100644 --- a/test/clj/orcpub/sheet_shim_test.clj +++ b/test/clj/orcpub/sheet_shim_test.clj @@ -50,10 +50,37 @@ (binding [draw/*page* :a4] (pdf/fit-sheet-to-page! doc)) (is (= ws (widget-xs doc))))))) -(deftest a5-also-works-though-nobody-should - (testing "the shim is general. An A5 character sheet is a postcard, but the code - should not special-case A4." +(defn- widgets-outside-crop + "Widget rects that fall outside their page's crop window -- fields a reader will not + show and a printer will not print." + [doc] + (for [p (.getPages doc) + :let [cb (.getCropBox p)] + a (.getAnnotations p) + :let [r (.getRectangle a)] + :when (and r (or (< (.getLowerLeftX r) (.getLowerLeftX cb)) + (< (.getLowerLeftY r) (.getLowerLeftY cb)) + (> (.getUpperRightX r) (.getUpperRightX cb)) + (> (.getUpperRightY r) (.getUpperRightY cb))))] + r)) + +(deftest no-supported-sheet-size-cuts-a-field-off + ;; The real check. The earlier A5 test asserted the crop box held what the shim was + ;; told to put there, which is not the same as the sheet still being readable: it + ;; passed while 159 of 335 widgets sat outside the window. + (doseq [size pdf/sheet-page-sizes] + (testing (str "every field is inside the printed window on " (name size)) + (with-open [doc (template)] + (binding [draw/*page* size] (pdf/fit-sheet-to-page! doc)) + (let [out (widgets-outside-crop doc)] + (is (empty? out) (str (count out) " widget(s) clipped on " (name size)))))))) + +(deftest a5-leaves-the-sheet-on-letter + (testing "A5 is 192pt narrower and 197pt shorter than the templates, so re-papering + would cut off half the fields. The sheet stays Letter; the cards and the + spellbook after it are drawn to A5." (with-open [doc (template)] (binding [draw/*page* :a5] (pdf/fit-sheet-to-page! doc)) - (is (every? #(= [96 98 420 595] %) (boxes doc)) - (str "got " (pr-str (distinct (boxes doc)))))))) + (is (every? #(= [0 0 612 792] %) (boxes doc)) + (str "got " (pr-str (distinct (boxes doc))))) + (is (empty? (widgets-outside-crop doc)) "and nothing is clipped")))) From 4525d56952af48e9c6f4851fbee7e5631bdfae5d Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Sun, 18 Oct 2026 07:13:50 +0000 Subject: [PATCH 28/40] Keep the spellbook's level tabs on the paper The tabs are placed after the class statistics, and nothing bounded the pair. Measured, with the statistics line unbounded: 3 classes 60-char class label letter ok overflows by 75.14pt a4 ok overflows by 91.86pt a5 overflows 78.64 overflows by 267.61pt The A5 three-class case is this branch's: A5 spellbooks are new here and 347.53pt of body is all a three-class head gets, of which the statistics alone want 344.17. The long-label case predates the branch and the same bound covers it. running-head! now reserves the tab strip before drawing the statistics and clips each entry to what is left, dropping any that no longer fit. clip gained a character-level fallback. It only ever cut at word boundaries, so a single 60-character word came back whole and the caller's budget meant nothing. Threaded through a measure fn as well, because the running head is drawn from lining outlines with letter spacing, which the plain font metrics clip used do not account for. Not fixed here, and worth knowing: chap-unit draws the class chapter heading at 20pt with no bound, so a 60-character class name runs to 1282pt on any paper. That is unchanged by this branch and wants its own fix; the new test is scoped to the tabs so it does not silently cover it. 1105 tests, 7368 assertions green under the default locale, tr_TR and es_ES. Lint 0 errors. The eight PDF baselines are byte-identical. --- CHANGELOG.md | 1 + src/clj/orcpub/spellbook.clj | 43 ++++++++++---- test/clj/orcpub/running_head_test.clj | 83 +++++++++++++++++++++++++++ 3 files changed, 117 insertions(+), 10 deletions(-) create mode 100644 test/clj/orcpub/running_head_test.clj diff --git a/CHANGELOG.md b/CHANGELOG.md index 1cfb20fcc..7b7b307f6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -155,6 +155,7 @@ Homebrew can be moved, switched off and repaired instead of lost, and a characte - **Characters:** deleting or changing a character's first class no longer wipes the other classes' choices. - **Homebrew:** a homebrew class's choices that share a name show in level order; levels 10 and 17 came before level 3. - **Printing:** a magic item or spell whose name the embedded font cannot draw no longer costs the card sheet it is on, and every sheet after it. +- **Printing:** a spellbook page's level tabs no longer print off the edge of the paper when a character has three casting classes or a very long class name. - **Printing:** on a server whose JVM runs a non-English locale, spell-card school names and the sheet's ability labels drew the wrong letter: a Turkish server printed "İllusion" and "İNT". ### Security diff --git a/src/clj/orcpub/spellbook.clj b/src/clj/orcpub/spellbook.clj index f6efb9164..d894d297d 100644 --- a/src/clj/orcpub/spellbook.clj +++ b/src/clj/orcpub/spellbook.clj @@ -66,17 +66,29 @@ (mapcat #(if (s/blank? %) [] (draw/split-lines (s/trim %) font size (/ w 72.0)))) (s/split-lines (clean text)))) -(defn- clip - "`text` cut at a word boundary to fit `w` points, with an ellipsis when cut." - [font size text w] +(defn- clip* + "`text` cut at a word boundary to fit `w` points by `measure`, ellipsised when cut. + Takes the measure because the running head is drawn from lining outlines, which are + wider than the plain metrics and carry letter spacing the font does not know about." + [measure text w] (let [t (clean text)] - (if (<= (width font size t) w) + (if (<= (measure t) w) t (loop [words (s/split t #"\s+")] (let [c (str (s/join " " words) "...")] - (if (or (<= (width font size c) w) (<= (count words) 1)) - c - (recur (butlast words)))))))) + (cond + (<= (measure c) w) c + (> (count words) 1) (recur (butlast words)) + ;; A single word still too wide: cut inside it. Returning it whole keeps a + ;; 60-character class name at full width and pushes the level tabs off. + :else (loop [n (count (first words))] + (let [c (str (subs (first words) 0 n) "...")] + (if (or (<= (measure c) w) (<= n 1)) c (recur (dec n))))))))))) + +(defn- clip + "`text` cut at a word boundary to fit `w` points, with an ellipsis when cut." + [font size text w] + (clip* #(width font size %) text w)) ;; GOTCHA: Vollkorn's default digits are old-style ("15" reads "I5"). Headings and numbers are ;; drawn from the lining glyph outlines (`one.lf`), which showText cannot select; see spellbook-print.md. @@ -856,10 +868,21 @@ guide (cond (empty? names) "" (= (first names) (peek names)) (first names) :else (str (first names) " to " (peek names)))] - (let [stats-end (reduce (fn [px t] (text! cs (:plain fonts) 6.4 px ty t {:spacing 0.6 :lining true}) - (+ px (lining-width (:plain fonts) 6.4 t 0.6) 14)) + (let [n (inc max-level) bw 10 gap 2 total (- (* n (+ bw gap)) gap) + ;; Reserve the tab strip first: the tabs follow the stats, so an unbounded + ;; stats line pushes them off the paper. Three classes reach 344pt of A5's + ;; 347pt body. Each entry is clipped to what is left; the rest are dropped. + stats-room (- (+ x w) (if (= :head tabs) (+ total 10) 0)) + fit (fn [t room] (clip* #(lining-width (:plain fonts) 6.4 % 0.6) t room)) + stats-end (reduce (fn [px t] + ;; less the 14pt gap this entry adds after itself + (let [room (- stats-room px 14)] + (if (< room 24) + px + (let [t (fit t room)] + (text! cs (:plain fonts) 6.4 px ty t {:spacing 0.6 :lining true}) + (+ px (lining-width (:plain fonts) 6.4 t 0.6) 14))))) x stats) - n (inc max-level) bw 10 gap 2 total (- (* n (+ bw gap)) gap) ;; Centred unless the classes' numbers reach that far; then just past them. x0 (max (- (+ x (/ w 2)) (/ total 2)) stats-end) free-from (if (= :head tabs) (+ x0 total 10) stats-end) diff --git a/test/clj/orcpub/running_head_test.clj b/test/clj/orcpub/running_head_test.clj new file mode 100644 index 000000000..a2ff4b7c3 --- /dev/null +++ b/test/clj/orcpub/running_head_test.clj @@ -0,0 +1,83 @@ +(ns orcpub.running-head-test + "The spellbook's running head must stay on the paper. + + The level tabs are placed AFTER the class statistics, so nothing bounded the pair: + measured, three classes run to 344pt of A5's 347pt body, and a 60-character class + label overruns Letter by 75pt. The tabs then print off the edge. + + Scoped to the tabs: chap-unit draws a class heading at 20pt with no bound, which + overflows on Letter today and is not this work's to fix." + (:require [clojure.test :refer [deftest testing is]] + [clojure.string :as str] + [orcpub.common :as common] + [orcpub.pdf-ops :as ops] + [orcpub.pdf.draw :as draw] + [orcpub.spellbook :as sb] + [orcpub.dnd.e5.spells :as spells]) + (:import (java.io ByteArrayOutputStream) + (org.apache.pdfbox Loader) + (org.apache.pdfbox.pdmodel PDDocument))) + +(def ^:private spells-by-class + {"Cleric" ["Guidance" "Bless" "Spirit Guardians"] + "Wizard" ["Fire Bolt" "Shield" "Fireball"] + "Druid" ["Druidcraft" "Entangle" "Call Lightning"]}) + +(defn- caster [nm dc atk icon] + {:class nm :class-kw (common/name-to-kw nm) :level 5 :ability "Wisdom" + :dc dc :attack atk :icon icon}) + +(defn- render + "Spellbook pages for `classes`, as drawing operators per page." + [page classes] + (binding [draw/*page* page] + (let [known (->> (for [{:keys [class]} classes + ;; Any class name gets spells, including the 60-character one: + ;; an empty book draws no pages and the assertion goes vacuous. + n (get spells-by-class class (get spells-by-class "Cleric"))] + {:key (common/name-to-kw n) :class class + :level (:level (get spells/spell-map (common/name-to-kw n)))}) + (group-by :level)) + out (ByteArrayOutputStream.)] + (with-open [doc (PDDocument.)] + (sb/add-spellbook! doc (draw/load-fonts doc) (draw/make-image-loader doc) + {:layout :book :order :level :class-break :runon :tabs :head + :classes classes :slots {1 4} :pact-slots {} + :character-name "Aldric"} + known spells/spell-map) + (.save doc out)) + (with-open [doc (Loader/loadPDF (.toByteArray out))] + (ops/doc-ops doc))))) + +(defn- tabs-right + "The right edge of the rightmost level tab. The tabs are the 10x10 `re` squares + running-head! draws; scanning every operator instead would also catch chap-unit's + unbounded class heading, which is a separate, pre-existing overflow." + [pages] + (apply max 0.0 + (for [page pages + op page + :let [ts (str/split op #" ")] + :when (and (= 5 (count ts)) (= "re" (last ts)) + (= "10.00" (nth ts 2)) (= "10.00" (nth ts 3)))] + (+ (Double/parseDouble (first ts)) 10.0)))) + +(deftest the-running-head-stays-on-the-paper + (doseq [[page-kw label] [[:letter "Letter"] [:a4 "A4"] [:a5 "A5"]]] + (let [limit (first (draw/page-size page-kw))] + ;; Guards the guard: 0.0 above means a book with no tabs would pass silently. + (is (pos? (tabs-right (render page-kw [(caster "Cleric" 15 "+7" "holy-symbol")]))) + "tabs were drawn") + (testing (str label ": three classes fit") + ;; A5's body is 347.53pt and three classes' statistics alone reach 344.17pt, + ;; so before the fix the tab strip started past the page edge. + (is (<= (tabs-right (render page-kw [(caster "Cleric" 15 "+7" "holy-symbol") + (caster "Wizard" 16 "+8" "spell-book") + (caster "Druid" 14 "+6" "holy-symbol")])) + limit) + (str "the level tabs ran past " limit "pt on " label))) + (testing (str label ": an over-long class label does not push the tabs off") + (is (<= (tabs-right (render page-kw [(caster (apply str (repeat 60 "W")) + 15 "+7" "spell-book")])) + limit) + (str "the level tabs ran past " limit "pt on " label)))))) From 18a95fc8ad8635e4805e8fd39717fcd4e8f89c21 Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Mon, 19 Oct 2026 08:06:47 +0000 Subject: [PATCH 29/40] Bound the chapter heading and spell name, and fix locale-folded identities MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixing the chapter heading I had reported and left, which found two more. chap-unit drew the class name at 20pt with no bound and placed the LEVEL text at the end of it, so a 60-character name put that text at 1282pt -- off every paper, Letter included. The name is now clipped to what is left after the crest and the LEVEL text. name-line! had the same shape for a spell: the marks are drawn at the end of the name, and neither was bounded. Measured, 0 of 319 SRD names overflow the column even on A5, so this needs a CUSTOM spell name -- and bound-request caps collection sizes, not string lengths, so one is bounded only by the request body. A 55-character name ran 284pt past a Letter column. The ledger layout already clipped; the book layout now does too. Then the sweep that found those two was run over the identity code, where it mattered more. clojure.string/lower-case folds with the JVM's locale, so on a Turkish server "IVAN@example.com" becomes "ıvan@example.com". Twelve sites: sign-in, password reset, the unsubscribe token, email change, the email existence check and artist account linking. Four of them are inside Datomic query clauses and fold the STORED address. That matters more than it looks: before this, both sides folded the same wrong way and still matched each other, so pinning only the input half would have broken sign-in on those servers outright. The new guard test caught that mid-change. Not audited, and not claimed correct: 36 further case-folding sites across 19 files, almost all game content and prose. identity-files in the new test names the two files held to the rule and says why the rest are open. 1109 tests, 7381 assertions green under the default locale, tr_TR and es_ES. Lint 0 errors. The eight PDF baselines are byte-identical. --- CHANGELOG.md | 3 + src/clj/orcpub/artist_accounts.clj | 7 +- src/clj/orcpub/routes.clj | 22 +++---- src/clj/orcpub/spellbook.clj | 27 ++++++-- test/clj/orcpub/identity_locale_test.clj | 42 ++++++++++++ test/clj/orcpub/running_head_test.clj | 82 ++++++++++++++++++++++-- 6 files changed, 159 insertions(+), 24 deletions(-) create mode 100644 test/clj/orcpub/identity_locale_test.clj diff --git a/CHANGELOG.md b/CHANGELOG.md index 7b7b307f6..f5d0b8c4f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -156,10 +156,13 @@ Homebrew can be moved, switched off and repaired instead of lost, and a characte - **Homebrew:** a homebrew class's choices that share a name show in level order; levels 10 and 17 came before level 3. - **Printing:** a magic item or spell whose name the embedded font cannot draw no longer costs the card sheet it is on, and every sheet after it. - **Printing:** a spellbook page's level tabs no longer print off the edge of the paper when a character has three casting classes or a very long class name. +- **Printing:** a long class name in a spellbook chapter heading, or a long custom spell name, is now shortened to fit instead of running off the page. - **Printing:** on a server whose JVM runs a non-English locale, spell-card school names and the sheet's ability labels drew the wrong letter: a Turkish server printed "İllusion" and "İNT". ### Security +- **Accounts:** on a server whose JVM runs a non-English locale, an email address containing a capital I folded to a different account key, so sign-in, password reset, the unsubscribe link and email change could all miss the account. + - Sign-in, password reset, share links, image fetching and PDF export are hardened against misuse, and secrets are no longer printed at startup. ## [breaking/2026-stack-modernization] diff --git a/src/clj/orcpub/artist_accounts.clj b/src/clj/orcpub/artist_accounts.clj index c52544103..9c87a0a7d 100644 --- a/src/clj/orcpub/artist_accounts.clj +++ b/src/clj/orcpub/artist_accounts.clj @@ -5,6 +5,7 @@ credited; which art is whose stays in the registry. Nothing here faces the web." (:require [orcpub.reset-key :as reset-key] [clojure.string :as s] + [orcpub.common :as common] [datomic.api :as d] [orcpub.env :as env] [cheshire.core :as cheshire] @@ -45,7 +46,7 @@ :let [acct (:account fields)]] [(keyword (name id)) (cond-> {:account (if (string? acct) - (s/lower-case (s/trim acct)) + (common/ascii-lower-case (s/trim acct)) :revoke)} (string? (:username fields)) (assoc :username (s/trim (:username fields))) (string? (:preferred_name fields)) (assoc :preferred-name (s/trim (:preferred_name fields))) @@ -68,7 +69,7 @@ (d/q '[:find [(pull ?e pattern) ...] :in $ pattern ?email :where [?e :orcpub.user/email ?e-mail] - [(clojure.string/lower-case ?e-mail) ?email]] + [(orcpub.common/ascii-lower-case ?e-mail) ?email]] db user-pull email)) (defn- accounts-for-artist [db artist-id] @@ -311,7 +312,7 @@ (let [user (d/pull (d/db conn) [:db/id :orcpub.user/username :orcpub.user/email :orcpub.user/verified? :orcpub.user/artist :orcpub.user/preferred-name] user-id) - email (some-> (:orcpub.user/email user) s/lower-case)] + email (some-> (:orcpub.user/email user) common/ascii-lower-case)] (when (and email (:orcpub.user/verified? user)) (some (fn [[artist-id spec]] (when (and (= email (:account spec)) (pa/artist-info artist-id)) diff --git a/src/clj/orcpub/routes.clj b/src/clj/orcpub/routes.clj index 0da258bf2..dbe2c6687 100644 --- a/src/clj/orcpub/routes.clj +++ b/src/clj/orcpub/routes.clj @@ -159,7 +159,7 @@ '[:find ?e :in $ ?email :where [?e :orcpub.user/email ?stored] - [(clojure.string/lower-case ?stored) ?email]]) + [(orcpub.common/ascii-lower-case ?stored) ?email]]) (defn find-user-by-username-or-email [db username-or-email] (d/q @@ -193,11 +193,11 @@ '{:find [?e] :in [$ [?email ?password]] :where [[?e :orcpub.user/email ?email-2] - [(clojure.string/lower-case ?email-2) + [(orcpub.common/ascii-lower-case ?email-2) ?email] [?e :orcpub.user/password ?enc] [(buddy.hashers/check ?password ?enc)]]} - [(s/lower-case email) password])] + [(common/ascii-lower-case email) password])] user)) (defn lookup-user [db username password] @@ -493,9 +493,9 @@ '{:find [?e] :in [$ ?email] :where [[?e :orcpub.user/email ?email-2] - [(clojure.string/lower-case ?email-2) + [(orcpub.common/ascii-lower-case ?email-2) ?email]]} - (s/lower-case email))] + (common/ascii-lower-case email))] user)) (defn preferred-name-of @@ -655,7 +655,7 @@ (defn register [{:keys [json-params db conn remote-addr] :as request}] (let [{:keys [username email password send-updates?]} json-params username (when username (s/trim username)) - email (when email (s/lower-case (s/trim email))) + email (when email (common/ascii-lower-case (s/trim email))) password (when password (s/trim password)) validation (registration/validate-registration json-params @@ -791,7 +791,7 @@ "Create a JWT-signed unsubscribe token for embedding in email links. Stateless — no DB storage needed. Verified by checking JWT signature." [email] - (jwt/sign {:email (s/lower-case email) :action "unsubscribe"} + (jwt/sign {:email (common/ascii-lower-case email) :action "unsubscribe"} (signature-or-throw))) (defn unsubscribe @@ -1103,7 +1103,7 @@ (let [limit (config/get-pdf-max-cards) n (count cards)] (when (> n limit) - (errors/note! (str (s/capitalize kind) " cards") + (errors/note! (str (common/ascii-capitalize kind) " cards") (format "%d requested, %d printed -- the export is capped at %d" n limit limit)) (println (format "pdf: %d %s cards requested, printing the first %d" @@ -1829,7 +1829,7 @@ (check-field username-query (:username query-params) db)) (defn check-email [{:keys [db query-params]}] - (check-field email-query (some-> (:email query-params) s/lower-case) db)) + (check-field email-query (some-> (:email query-params) common/ascii-lower-case) db)) (defn character-for-id [db id] (d/pull db '[*] id)) @@ -2309,7 +2309,7 @@ (defn request-email-change [{:keys [transit-params db conn identity] :as request}] (try ;; Client sends {:new-email "..."} (confirm-email is validated client-side only) - (let [new-email (s/lower-case (s/trim (str (:new-email transit-params)))) + (let [new-email (common/ascii-lower-case (s/trim (str (:new-email transit-params)))) current-password (:current-password transit-params) username (:user identity)] (if (nil? username) @@ -2332,7 +2332,7 @@ (registration/bad-email? new-email) {:status 400 :body {:error :invalid-email}} - (= new-email (some-> email s/lower-case)) + (= new-email (some-> email common/ascii-lower-case)) {:status 400 :body {:error :same-as-current}} (email-change-rate-limited? verification-sent pending-email new-email) diff --git a/src/clj/orcpub/spellbook.clj b/src/clj/orcpub/spellbook.clj index d894d297d..58d11ff0f 100644 --- a/src/clj/orcpub/spellbook.clj +++ b/src/clj/orcpub/spellbook.clj @@ -470,15 +470,20 @@ "Draws a spell's name in bold with its `marks` in small italics after it, baseline `ty`. With `order` :alpha a small ringed level number leads, since no level heading is printed." [cs fonts img spell order x ty w size] - (let [x (if (= :alpha order) + (let [x0 x + x (if (= :alpha order) (do (gray! cs ink) (circle! cs (+ x 3.8) (- ty 3.3) 3.6 0.4) (centred! cs (:bold fonts) 4.6 (+ x 3.8) (- ty 1.7) (if (zero? (:level spell 0)) "c" (str (:level spell)))) (+ x 10)) x) - nm (clean (:name spell)) - nm-w (width (:bold fonts) size nm) - notes (s/join " " (marks spell))] + notes (s/join " " (marks spell)) + notes-w (if (seq notes) (+ (width (:italic fonts) (* size 0.62) notes) 3) 0) + ;; The marks are placed at the end of the name, so the name has to leave room + ;; for them. No SRD name is long enough to matter, but a custom spell's is + ;; bounded only by the request body, and then both run out of the column. + nm (clip (:bold fonts) size (:name spell) (- (+ x0 w) x notes-w)) + nm-w (width (:bold fonts) size nm)] (text! cs (:bold fonts) size x ty nm) (when (seq notes) (text! cs (:italic fonts) (* size 0.62) (+ x nm-w 3) ty notes {:color ink-2})))) @@ -648,12 +653,22 @@ nm-size (if cont? 13 20) nm-x (+ x e 7) nm-base (+ ty (if cont? 15 22)) + lvl-size (if cont? 6.4 8) + lvl-text (str (when level (str "LEVEL " level)) + (when cont? (if level ", CONTINUED" "CONTINUED"))) + lvl-w (if (seq lvl-text) + (+ (lining-width (:plain fonts) lvl-size lvl-text 0.9) 5) + 0) + ;; The crest takes the last 76pt, so the name and the LEVEL text beside + ;; it share what is left. Unbounded, a 60-character class name put that + ;; text at 1282pt -- off every paper, Letter included. + room (- (if (and dc (not cont?)) (- (+ x w) 82) (+ x w)) nm-x lvl-w) + class (clip (:bold-italic fonts) nm-size class room) nm-w (width (:bold-italic fonts) nm-size class) rule-y (+ ty (if cont? 26 45))] (emblem! cs img class-kw icon level x (+ ty 1) e) (text! cs (:bold-italic fonts) nm-size nm-x nm-base class) - (text! cs (:plain fonts) (if cont? 6.4 8) (+ nm-x nm-w 5) nm-base - (str (when level (str "LEVEL " level)) (when cont? (if level ", CONTINUED" "CONTINUED"))) + (text! cs (:plain fonts) lvl-size (+ nm-x nm-w 5) nm-base lvl-text {:spacing 0.9 :lining true}) (when (and ability (not cont?)) (text! cs (:plain fonts) 7.2 nm-x (+ nm-base 12) (str "Spellcasting ability " ability) {:color ink-2})) diff --git a/test/clj/orcpub/identity_locale_test.clj b/test/clj/orcpub/identity_locale_test.clj new file mode 100644 index 000000000..9de61c975 --- /dev/null +++ b/test/clj/orcpub/identity_locale_test.clj @@ -0,0 +1,42 @@ +(ns orcpub.identity-locale-test + "An account identifier must fold the same on every machine. + + clojure.string/lower-case uses the JVM's default locale, so on a Turkish or + Azerbaijani server \"IVAN@example.com\" becomes \"ıvan@example.com\" -- a different + account key for sign-in, password reset, the unsubscribe token and email change. + docs/kb/locale-safety.md section 3 names exactly this; these files are held to it." + (:require [clojure.test :refer [deftest testing is]] + [clojure.string :as str] + [clojure.java.io :as io] + [orcpub.common :as common]) + (:import (java.util Locale))) + +(def ^:private identity-files + "Files that fold an email, an account handle or another identifier. Not the whole + tree: content and prose elsewhere still case-fold with the machine's locale, which + is an open audit rather than a claim that it is correct." + ["src/clj/orcpub/routes.clj" + "src/clj/orcpub/artist_accounts.clj"]) + +(def ^:private bare-fold-re + #"\((?:s|str|string|clojure\.string)/(?:lower-case|upper-case|capitalize)\s") + +(deftest identity-files-do-not-fold-with-the-machine-locale + (testing "ascii-lower-case / ascii-upper-case / ascii-capitalize, not the locale ones" + (let [offenders (for [f identity-files + [i line] (map-indexed vector (str/split-lines (slurp (io/file f)))) + :when (re-find bare-fold-re line)] + (str f ":" (inc i) " " (str/trim line)))] + (is (empty? offenders) + (str "use orcpub.common/ascii-*:\n" (str/join "\n" offenders)))))) + +(deftest an-email-folds-the-same-under-any-locale + (testing "the Turkish dotless i is the whole problem" + (let [saved (Locale/getDefault)] + (try + (Locale/setDefault (Locale/forLanguageTag "tr-TR")) + (is (= "ivan@example.com" (common/ascii-lower-case "IVAN@example.com"))) + (is (not= (str/lower-case "IVAN@example.com") + (common/ascii-lower-case "IVAN@example.com")) + "if these ever agree under tr_TR the guard above has stopped meaning anything") + (finally (Locale/setDefault saved)))))) diff --git a/test/clj/orcpub/running_head_test.clj b/test/clj/orcpub/running_head_test.clj index a2ff4b7c3..0a2d26c66 100644 --- a/test/clj/orcpub/running_head_test.clj +++ b/test/clj/orcpub/running_head_test.clj @@ -1,12 +1,12 @@ (ns orcpub.running-head-test - "The spellbook's running head must stay on the paper. + "The spellbook's page furniture must stay on the paper. The level tabs are placed AFTER the class statistics, so nothing bounded the pair: measured, three classes run to 344pt of A5's 347pt body, and a 60-character class label overruns Letter by 75pt. The tabs then print off the edge. - Scoped to the tabs: chap-unit draws a class heading at 20pt with no bound, which - overflows on Letter today and is not this work's to fix." + chap-unit had the same shape: it drew the class name at 20pt with no bound, so a + 60-character name put the LEVEL text beside it at 1282pt on any paper." (:require [clojure.test :refer [deftest testing is]] [clojure.string :as str] [orcpub.common :as common] @@ -16,7 +16,7 @@ [orcpub.dnd.e5.spells :as spells]) (:import (java.io ByteArrayOutputStream) (org.apache.pdfbox Loader) - (org.apache.pdfbox.pdmodel PDDocument))) + (org.apache.pdfbox.pdmodel PDDocument PDPage PDPageContentStream))) (def ^:private spells-by-class {"Cleric" ["Guidance" "Bless" "Spirit Guardians"] @@ -81,3 +81,77 @@ 15 "+7" "spell-book")])) limit) (str "the level tabs ran past " limit "pt on " label)))))) + +(defn- path-right + "The largest x any PATH operator reaches. The chapter heading's class name is drawn + with showText, but the LEVEL text beside it comes from lining outlines, so an + unbounded name shows up here as paths far off the page." + [pages] + (apply max 0.0 + (for [page pages + op page + :let [ts (str/split op #" ") + k (last ts)] + :when (and (#{"re" "m" "l" "c"} k) (> (count ts) 2)) + ;; a curve carries three points; the last pair is its end + t (if (= "c" k) [(nth ts 4)] [(first ts)]) + :let [x (Double/parseDouble t)]] + (if (= "re" k) (+ x (Double/parseDouble (nth ts 2))) x)))) + +(deftest nothing-in-the-chapter-head-runs-past-the-paper + (doseq [[page-kw label] [[:letter "Letter"] [:a4 "A4"] [:a5 "A5"]]] + (let [limit (first (draw/page-size page-kw)) + long-name (apply str (repeat 60 "W"))] + (testing (str label ": a 60-character class name is clipped, not drawn off-page") + ;; chap-unit placed "LEVEL 5" at nm-x + the name's full width, which reached + ;; 1282pt -- the same unbounded-then-offset shape as the level tabs. + (is (<= (path-right (render page-kw [(caster long-name 15 "+7" "spell-book")])) + limit) + (str "drawing ran past " limit "pt on " label))) + (testing (str label ": and an ordinary class name still fits") + (is (<= (path-right (render page-kw [(caster "Cleric" 15 "+7" "holy-symbol")])) + limit)))))) + +(defn- name-line-ops + "name-line! alone on a blank page, as operators. Isolated because the running head + spans the full width and would mask a name that only overruns its column." + [spell col-w] + (with-open [doc (PDDocument.)] + (let [pg (PDPage.) fonts (draw/load-fonts doc)] + (.addPage doc pg) + (with-open [cs (PDPageContentStream. doc pg)] + (#'sb/name-line! cs fonts (draw/make-image-loader doc) spell :level 36.0 700.0 col-w 10.0)) + (ops/page-ops pg)))) + +(defn- last-text-x + "The furthest right a text run starts. The marks are drawn at the end of the name, so + this is where the name actually ended." + [page-ops] + (apply max 0.0 + (let [{:keys [out]} + (reduce (fn [{:keys [x out] :as st} op] + (let [ts (str/split op #" ")] + (cond + (= "BT" op) (assoc st :x 0.0) + (and (= 3 (count ts)) (= "Td" (last ts))) + (let [nx (+ x (Double/parseDouble (first ts)))] + {:x nx :out (conj out nx)}) + :else st))) + {:x 0.0 :out []} page-ops)] + out))) + +(deftest a-long-spell-name-stays-in-its-column + ;; No SRD name is long enough -- 0 of 319 overflow even on A5 -- but a custom spell's + ;; name is bounded only by the request body, and the marks are placed after it. + (let [long-spell {:key :probe-long :level 1 :school "evocation" :ritual true + :name (apply str (repeat 55 "W")) + :casting-time "1 action" :range "60 feet" + :components {:verbal true} :duration "Instantaneous" + :description "Short."} + short-spell (assoc long-spell :name "Fire Bolt")] + (doseq [col-w [262.0 165.77]] + (testing (str "a 55-character name is clipped to a " col-w "pt column") + (is (<= (last-text-x (name-line-ops long-spell col-w)) (+ 36.0 col-w)) + (str "text started past the column edge at " (+ 36.0 col-w) "pt"))) + (testing "and an ordinary name is untouched" + (is (<= (last-text-x (name-line-ops short-spell col-w)) (+ 36.0 col-w))))))) From d5e38d8fb6234ca82ce36a0dc5e62432f5f5ba88 Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Mon, 19 Oct 2026 08:31:40 +0000 Subject: [PATCH 30/40] Report a truncated request instead of dropping the extras in silence bound-request caps every collection at ORCPUB_PDF_MAX_CARDS during the parse. bound-cards then checks `n > limit` to decide whether to raise a notice -- but it is counting a list bound-request already capped, so the check is never true and the dropped entries were never reported. That is the failure the notice page exists to prevent, defeated by the order the two bounds run in. Reported from bound-request now, which is where the entries are actually lost and the only place that still knows how many there were. The collector also has to open before the parse. errors/note! logs and returns when *notices* is unbound, so a notice raised during bound-request was written to the log and then dropped -- the binding started after the parse had already finished. bound-cards keeps its own cap and check as a guard for anything that does not come through bound-request; in the request path it is now a no-op. 1110 tests, 7385 assertions green under the default locale, tr_TR and es_ES. Lint 0 errors. The eight PDF baselines are byte-identical. --- CHANGELOG.md | 1 + src/clj/orcpub/routes.clj | 40 ++++++++++++++++++------ test/clj/orcpub/export_capacity_test.clj | 21 +++++++++++++ 3 files changed, 52 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f5d0b8c4f..f2364494e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -157,6 +157,7 @@ Homebrew can be moved, switched off and repaired instead of lost, and a characte - **Printing:** a magic item or spell whose name the embedded font cannot draw no longer costs the card sheet it is on, and every sheet after it. - **Printing:** a spellbook page's level tabs no longer print off the edge of the paper when a character has three casting classes or a very long class name. - **Printing:** a long class name in a spellbook chapter heading, or a long custom spell name, is now shortened to fit instead of running off the page. +- **Printing:** an export with more spells or magic items than the cap allows now says so on the notice page; the extras were dropped in silence. - **Printing:** on a server whose JVM runs a non-English locale, spell-card school names and the sheet's ability labels drew the wrong letter: a Turkish server printed "İllusion" and "İNT". ### Security diff --git a/src/clj/orcpub/routes.clj b/src/clj/orcpub/routes.clj index dbe2c6687..c82e3238d 100644 --- a/src/clj/orcpub/routes.clj +++ b/src/clj/orcpub/routes.clj @@ -1070,6 +1070,14 @@ (sequential? v) (take n v) :else v)) +(defn- collection-size + "Entries in `v`, counted the way bound-collection caps them; nil if it caps nothing." + [v] + (cond + (map? v) (reduce + 0 (map #(if (sequential? %) (count %) 0) (vals v))) + (sequential? v) (count v) + :else nil)) + (defn bound-request "Returns `fields` with everything caller-supplied capped, before any part of the export sees it. Acts on the REQUEST, so a feature added later that reads the body is bounded @@ -1089,7 +1097,17 @@ (reduce-kv (fn [m k v] (if (past-ceiling? k) m - (assoc m k (bound-collection max-cards v)))) + (let [bounded (bound-collection max-cards v) + before (collection-size v) + after (collection-size bounded)] + ;; Reported HERE, not in bound-cards: this runs first, so by the + ;; time bound-cards counts, the list is already the cap and its + ;; own check can never be true. The entries went in silence. + (when (and before after (> before after)) + (errors/note! "Export size" + (format "%s: %d requested, %d printed -- the export is capped at %d" + (name k) before after max-cards))) + (assoc m k bounded)))) {} fields))) (defn- bound-cards @@ -1729,15 +1747,17 @@ call agrees on the paper. An unknown :page-size falls back to :letter rather than throwing -- a bad option must not cost someone their sheet." [req] - (let [fields (try - (-> req :form-params :body edn/read-string bound-request) - (catch Exception e - (throw (ex-info "Invalid character data format. Unable to parse PDF request." - {:error :invalid-pdf-data} - e))))] - (binding [errors/*notices* (atom []) - draw/*page* (one-of valid-page-sizes (:page-size fields) :letter)] - (generate-character-pdf* req fields)))) + ;; The collector opens BEFORE the parse: bound-request truncates an oversized + ;; request, and a notice raised outside this binding is logged and then dropped. + (binding [errors/*notices* (atom [])] + (let [fields (try + (-> req :form-params :body edn/read-string bound-request) + (catch Exception e + (throw (ex-info "Invalid character data format. Unable to parse PDF request." + {:error :invalid-pdf-data} + e))))] + (binding [draw/*page* (one-of valid-page-sizes (:page-size fields) :letter)] + (generate-character-pdf* req fields))))) (defn character-pdf-2 [req] (with-export-slot req #(generate-character-pdf req))) diff --git a/test/clj/orcpub/export_capacity_test.clj b/test/clj/orcpub/export_capacity_test.clj index 38310ceed..0dea48415 100644 --- a/test/clj/orcpub/export_capacity_test.clj +++ b/test/clj/orcpub/export_capacity_test.clj @@ -3,6 +3,7 @@ ;; explicit :refer to avoid namespace pollution from :refer :all (:require [clojure.test :refer [deftest is testing]] [orcpub.config :as config] + [orcpub.errors :as errors] [orcpub.routes :as routes] [orcpub.work-pool :as work-pool]) (:import (java.util.concurrent Semaphore))) @@ -170,3 +171,23 @@ (is (= 6 (count (filter #(re-matches #"spellcasting-class-\d+" (name %)) (keys bounded)))) "only the sections within the ceiling survive parsing"))))) + +(deftest truncating-a-request-says-so + ;; bound-request caps collections before anything else sees them, so bound-cards' + ;; own "n requested, m printed" check compares a capped count against the cap and is + ;; never true. The cards went missing in silence -- the exact failure the notice page + ;; was added for, defeated by the order the two bounds run in. + (let [limit (config/get-pdf-max-cards) + over (+ limit 7)] + (testing "a request over the cap records what it lost" + (binding [errors/*notices* (atom [])] + (let [bounded (bound-request {:spells-known {:wizard (repeat over {:key :acid-arrow})}})] + (is (= limit (count (:wizard (:spells-known bounded)))) "still capped") + (let [n (errors/notices)] + (is (seq n) "the truncation is reported") + (is (some #(re-find (re-pattern (str over)) (:detail %)) n) + (str "the notice names the " over " requested: " (pr-str n))))))) + (testing "a request within the cap stays silent" + (binding [errors/*notices* (atom [])] + (bound-request {:spells-known {:wizard (repeat 3 {:key :acid-arrow})}}) + (is (empty? (errors/notices)) "nothing was lost, so nothing is claimed"))))) From 54700fff4ae61bcfaa955da8669ca1e6b7cafce4 Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Tue, 20 Oct 2026 00:18:29 +0000 Subject: [PATCH 31/40] Pin the JVM locale to ROOT at both server entry points MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The JVM folds case and formats numbers with the machine's default locale, which is where every locale bug on this branch came from: a Turkish server filed IVAN@x.com under ıvan@x.com and wrote 5,00 into SVG paths. Each was fixed at its call site; this stops the next one. pin-locale! runs first in -main, which is what the Docker image starts (java -jar), and in dev/user.clj start-server, which is what scripts/start.sh starts -- the path self-hosters run, and the one the original Spanish-Windows report came through. -main alone would have missed it. Not in orcpub.system/system, which both call, because a test builds a system and pinning there would silence the locale CI job for the rest of the run. Not in :jvm-opts for the same reason. The test shows the leak first under tr-TR, then the pin closing it, and checks both entry points pin before the system starts. That test has to use a bare format to show the leak, so the decimal-format guard gains a narrow, visible opt-out marker rather than a file exemption. --- dev/user.clj | 4 +++ src/clj/orcpub/server.clj | 10 +++++++ test/clj/orcpub/pdf_locale_test.clj | 4 ++- test/clj/orcpub/server_locale_test.clj | 37 ++++++++++++++++++++++++++ 4 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 test/clj/orcpub/server_locale_test.clj diff --git a/dev/user.clj b/dev/user.clj index 2fba3ceb2..756b35d7a 100644 --- a/dev/user.clj +++ b/dev/user.clj @@ -6,6 +6,7 @@ [buddy.hashers :as hashers] [orcpub.routes :as r] [orcpub.system :as s] + [orcpub.server :as server] [orcpub.db.schema :as schema] [orcpub.config :as config]) (:gen-class)) @@ -110,6 +111,9 @@ (defn start-server [] + ;; scripts/start.sh starts the server here, not through -main, so the pin is needed + ;; on this path too -- it is the one self-hosters run. + (server/pin-locale!) ; restart (stop-server) (reset! -server (component/start (s/system :dev)))) diff --git a/src/clj/orcpub/server.clj b/src/clj/orcpub/server.clj index b2897ade8..37a75ed4b 100644 --- a/src/clj/orcpub/server.clj +++ b/src/clj/orcpub/server.clj @@ -1,9 +1,19 @@ (ns orcpub.server (:require [orcpub.system :as s] [com.stuartsierra.component :as component]) + (:import (java.util Locale)) (:gen-class)) +(defn pin-locale! + "Fixes the JVM default locale to Locale/ROOT. Case folding and number formatting + otherwise follow the operator's machine: a Turkish server filed IVAN@x.com under + ıvan@x.com and wrote 5,00 into PDF paths. Text shown to a user takes its locale + explicitly; nothing should inherit the machine's. docs/kb/locale-safety.md." + [] + (Locale/setDefault Locale/ROOT)) + (defn -main [] + (pin-locale!) ;; The banner prints from the Pedestal component, between create-server and start: ;; http/start blocks in prod, so nothing after this line would ever run. (component/start (s/system :prod))) diff --git a/test/clj/orcpub/pdf_locale_test.clj b/test/clj/orcpub/pdf_locale_test.clj index fa09b3ea8..f2f6226fc 100644 --- a/test/clj/orcpub/pdf_locale_test.clj +++ b/test/clj/orcpub/pdf_locale_test.clj @@ -98,7 +98,9 @@ :let [src (slurp f)] [i line] (map-indexed vector (str/split-lines src)) :when (and (re-find decimal-format-re line) - (not (re-find console-re line)))] + (not (re-find console-re line)) + ;; a test that shows the leak has to use it + (not (str/includes? line "locale-leak on purpose")))] (str (.getPath f) ":" (inc i) " " (str/trim line)))] (is (empty? offenders) (str "use String/format with Locale/ROOT:\n" (str/join "\n" offenders)))))) diff --git a/test/clj/orcpub/server_locale_test.clj b/test/clj/orcpub/server_locale_test.clj new file mode 100644 index 000000000..1481803c8 --- /dev/null +++ b/test/clj/orcpub/server_locale_test.clj @@ -0,0 +1,37 @@ +(ns orcpub.server-locale-test + "The server must not take its behaviour from the operator's machine language. + + The JVM folds case and formats numbers with its default locale, so a Turkish server + filed IVAN@x.com under ıvan@x.com and wrote 5,00 into PDF paths. -main pins it to + Locale/ROOT before anything else runs. Not pinned in :jvm-opts on purpose: the + locale CI job runs the suite under tr_TR and es_ES, and that would silence it." + (:require [clojure.test :refer [deftest testing is]] + [clojure.string :as str] + [orcpub.server :as server]) + (:import (java.util Locale))) + +(deftest pinning-overrides-a-foreign-machine-locale + (let [saved (Locale/getDefault)] + (try + (Locale/setDefault (Locale/forLanguageTag "tr-TR")) + (testing "the machine's locale does leak in before the pin -- or this proves nothing" + (is (not= "ivan@x.com" (str/lower-case "IVAN@x.com"))) + (is (= "5,00" (format "%.2f" 5.0)))) ; locale-leak on purpose + (server/pin-locale!) + (testing "and after it, folding and formatting are the same on every machine" + (is (= Locale/ROOT (Locale/getDefault))) + (is (= "ivan@x.com" (str/lower-case "IVAN@x.com"))) + (is (= "5.00" (format "%.2f" 5.0)))) ; locale-leak on purpose + (finally (Locale/setDefault saved))))) + +(deftest every-entry-point-pins-before-it-starts-anything + ;; Checked in the source: running either would start the whole system. Both matter: + ;; Docker runs -main, scripts/start.sh -- what self-hosters use -- runs start-server. + (doseq [[file start pin] [["src/clj/orcpub/server.clj" "(defn -main" "(pin-locale!)"] + ["dev/user.clj" "(defn start-server" "(server/pin-locale!)"]]] + (testing (str file " pins ahead of the system start") + (let [src (slurp file) + body (subs src (str/index-of src start)) + p (str/index-of body pin)] + (is (some? p) "the pin is there") + (is (and p (< p (str/index-of body "component/start"))) "and runs first"))))) From 58f7d9a8f9cc294610bd62c43db5b69f7d0995f8 Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Tue, 20 Oct 2026 00:18:43 +0000 Subject: [PATCH 32/40] Print what Vollkorn can draw, not just what WinAnsi allows MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The cards always printed Łukasz: they sanitise with font-safe against the embedded Vollkorn. Three paths sanitised with normalize-text, which keeps WinAnsi and turns everything past U+00FF into `?` -- correct for Helvetica, which can draw nothing else, and wrong for the spellbook, which is drawn in Vollkorn throughout: spellbook ?ukasz (clean -> normalize-text) sheet form fields ?ukasz (Helvetica) overflow pages ?ukasz (Helvetica) So a character named Łukasz, Şahin or Дмитрий printed wrong for every user. normalize-text gains a keep? predicate for code points past U+00FF; vollkorn-covers? answers it from the four embedded font files' own cmaps, requiring every face so a bold or italic draw cannot throw. Its substitutions are unchanged, so SRD text renders exactly as before -- the spellbook baselines did not move. The sheet switches font per field, and only when Helvetica would have printed `?`: such a field gets Vollkorn Regular as /VkR, its DA rewritten, and the single-line fitting measures in that font. Every Latin-1 sheet keeps today's path, measured byte for byte: latin sheet before 284,020 after 284,020 bytes Łukasz sheet before 284,025 after 504,715 bytes The +216 KB is Vollkorn embedded in full, on exports that need it. Full, because the sheet is fillable by default and a subset holds only the glyphs written at export: a user editing the field in a viewer would type into missing glyphs. Visible consequence: a switched field prints in Vollkorn beside Helvetica neighbours. Keeping every existing export identical is what that buys. Not covered: scripts Vollkorn lacks (Arabic, Hebrew, Devanagari, CJK) still print `?`, and Arabic and Hebrew would need shaping as well as a font. 1118 tests, 7404 assertions green under the default locale, tr_TR and es_ES. Lint 0 errors. The eight PDF baselines are byte-identical. --- CHANGELOG.md | 1 + src/clj/orcpub/pdf.clj | 63 +++++++++++++++++----- src/clj/orcpub/pdf/draw.clj | 58 +++++++++++++------- src/clj/orcpub/spellbook.clj | 5 +- test/clj/orcpub/non_latin_print_test.clj | 69 ++++++++++++++++++++++++ 5 files changed, 162 insertions(+), 34 deletions(-) create mode 100644 test/clj/orcpub/non_latin_print_test.clj diff --git a/CHANGELOG.md b/CHANGELOG.md index f2364494e..4eab4d173 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -155,6 +155,7 @@ Homebrew can be moved, switched off and repaired instead of lost, and a characte - **Characters:** deleting or changing a character's first class no longer wipes the other classes' choices. - **Homebrew:** a homebrew class's choices that share a name show in level order; levels 10 and 17 came before level 3. - **Printing:** a magic item or spell whose name the embedded font cannot draw no longer costs the card sheet it is on, and every sheet after it. +- **Printing:** names and notes written in Polish, Turkish, Czech, Russian, Greek and other scripts beyond Western European print on the character sheet and in the spellbook, instead of as question marks. - **Printing:** a spellbook page's level tabs no longer print off the edge of the paper when a character has three casting classes or a very long class name. - **Printing:** a long class name in a spellbook chapter heading, or a long custom spell name, is now shortened to fit instead of running off the page. - **Printing:** an export with more spells or magic items than the cap allows now says so on the notice page; the extras were dropped in silence. diff --git a/src/clj/orcpub/pdf.clj b/src/clj/orcpub/pdf.clj index 73ec77e74..236190ebd 100644 --- a/src/clj/orcpub/pdf.clj +++ b/src/clj/orcpub/pdf.clj @@ -34,7 +34,7 @@ (org.apache.http.conn.socket PlainConnectionSocketFactory) (org.apache.http.conn.ssl SSLConnectionSocketFactory) (java.net UnknownHostException) - (org.apache.pdfbox.pdmodel.font PDType1Font Standard14Fonts$FontName) + (org.apache.pdfbox.pdmodel.font PDType1Font PDType0Font Standard14Fonts$FontName) (org.apache.pdfbox.text PDFTextStripper) (javax.imageio ImageIO IIOImage ImageWriteParam) (javax.imageio.stream MemoryCacheImageOutputStream) @@ -778,22 +778,50 @@ (when-let [m (re-find #"/\S+ ([\d.]+) Tf" text)] (Double/parseDouble (second m)))))))) +(defn- field-text + "`v` as a form field prints it, and the font resource to print it in. A value + Helvetica can draw keeps today's path exactly; one it cannot switches that one + field to Vollkorn, where WinAnsi-only Helvetica had printed Łukasz as ?ukasz." + [v] + (let [latin (draw/normalize-text v) + wide (draw/normalize-text v draw/vollkorn-covers?)] + (if (= latin wide) [latin "Helv"] [wide "VkR"]))) + +(defn- vollkorn-field-font! + "Vollkorn Regular in `form`'s default resources as /VkR, added on first use. Embedded + in FULL, not subset: the sheet stays fillable, and a subset holds only the glyphs + written now, so editing the field in a viewer would type into missing glyphs." + [doc form] + (let [res (or (.getDefaultResources form) (PDResources.)) + nm (COSName/getPDFName "VkR")] + (or (.getFont res nm) + (let [f (with-open [in (.openStream (io/resource (:plain draw/vollkorn-files)))] + (PDType0Font/load doc in false))] + (.put res nm f) + (.setDefaultResources form res) + f)))) + +(defn- with-da-font + "`da` with its font resource replaced by `font-name`, keeping the size and colour." + [da font-name] + (s/replace (or da "/Helv 0 Tf 0 g") #"/[^\s/]+(\s+[\d.]+\s+Tf)" (str "/" font-name "$1"))) + (defn- shrink-single-line-to-fit! "Rewrites a single-line field at a smaller size when its value is wider than its box, and returns the size used, or nil when nothing was needed. GOTCHA: PDFBox sizes a single-line field by HEIGHT alone (8pt on the skill and save boxes), so without this a modifier of +10 or worse loses its last character." - [field widget value] + [field widget value font font-name] (let [rect (.getRectangle widget) ;; The generated appearance clips at "1 1 w h re", so 1pt each side. available (- (.getWidth rect) 2.0) size (baked-font-size widget) - width (when size (* 72.0 (draw/string-width value draw/HELVETICA size)))] + width (when size (* 72.0 (draw/string-width value font size)))] (when (and size width (> width available)) ;; 2% under the exact fit: sizing to the millimetre lands a hair over once ;; the size is rounded into the appearance stream. (let [fitted (max min-single-line-size (* size 0.98 (/ available width)))] - (.setDefaultAppearance field (str "/Helv " fitted " Tf 0 g")) + (.setDefaultAppearance field (str "/" font-name " " fitted " Tf 0 g")) (.setValue field value) fitted)))) @@ -822,7 +850,8 @@ (.setNeedAppearances form false) ;; One index rather than a lookup per value: PDAcroForm.getField walks the ;; field tree on every call, which dominated the export's allocation. - (let [by-name (persistent! + (let [vollkorn (delay (vollkorn-field-font! doc form)) + by-name (persistent! (reduce (fn [m field] (assoc! m (.getFullyQualifiedName field) field)) (transient {}) @@ -843,12 +872,16 @@ (try (let [field (get by-name (name k))] (when field - ;; font-sizes gated on flatten?: interactive forms keep the template's - ;; `/Helv 0 Tf` auto-sizing; flattening bakes a concrete size, so we - ;; rewrite the DA to the caller's size first. - (when (and flatten? (font-sizes k) (instance? PDTextField field)) - (.setDefaultAppearance field (str "/Helv " " " (font-sizes k) " Tf 0 0 0 rg"))) - (let [text (when (instance? PDTextField field) (draw/normalize-text v))] + (let [text-field? (instance? PDTextField field) + [text font-name] (if text-field? (field-text v) [nil "Helv"]) + font (if (= "Helv" font-name) draw/HELVETICA @vollkorn)] + (when (and text-field? (not= "Helv" font-name)) + (.setDefaultAppearance field (with-da-font (.getDefaultAppearance field) font-name))) + ;; font-sizes gated on flatten?: interactive forms keep the template's + ;; `/Helv 0 Tf` auto-sizing; flattening bakes a concrete size, so we + ;; rewrite the DA to the caller's size first. + (when (and flatten? (font-sizes k) text-field?) + (.setDefaultAppearance field (str "/" font-name " " (font-sizes k) " Tf 0 0 0 rg"))) (.setValue field (cond @@ -862,7 +895,7 @@ (not (.isMultiline field)) (not (s/blank? text))) (doseq [widget (.getWidgets field)] - (shrink-single-line-to-fit! field widget text)))))) + (shrink-single-line-to-fit! field widget text font font-name)))))) (catch Exception e (prn "failed writing field: " k v (strace/print-stack-trace e))))) (when flatten? (fix-widget-page-refs! doc) @@ -1750,7 +1783,11 @@ (.setWidgets field (java.util.ArrayList. [widget])) (.setAnnotations page (java.util.ArrayList. [widget])) (.setFields form (java.util.ArrayList. (conj (vec (.getFields form)) field))) - (.setValue field (draw/normalize-text text)) + (let [[text font-name] (field-text text)] + (when (not= "Helv" font-name) + (vollkorn-field-font! doc form) + (.setDefaultAppearance field (with-da-font (.getDefaultAppearance field) font-name))) + (.setValue field text)) page)) (defn spill-overflow! diff --git a/src/clj/orcpub/pdf/draw.clj b/src/clj/orcpub/pdf/draw.clj index 7a9aa251e..408fb1236 100644 --- a/src/clj/orcpub/pdf/draw.clj +++ b/src/clj/orcpub/pdf/draw.clj @@ -17,6 +17,8 @@ (org.apache.pdfbox.pdmodel.interactive.annotation PDAppearanceStream) (org.apache.pdfbox.pdmodel.graphics.image LosslessFactory) (org.apache.pdfbox.util Matrix) + (org.apache.pdfbox.io RandomAccessReadBuffer) + (org.apache.fontbox.ttf TTFParser) (javax.imageio ImageIO))) (def page-sizes @@ -138,6 +140,16 @@ "Point size of `site-stamp`. The spellbook sets its own, 6.6 with letter-spacing." 6) +(def vollkorn-files + "The embedded faces, by role. Under public/ so the same single copy is both on the + classpath for PDFBox and served over HTTP: the browser bakes the portrait credit + into a PNG that ends up inside this very document, and it should be set in the + document's own face rather than whatever the viewer's OS offers." + {:plain "public/fonts/Vollkorn-Regular.ttf" + :italic "public/fonts/Vollkorn-Italic.ttf" + :bold "public/fonts/Vollkorn-Bold.ttf" + :bold-italic "public/fonts/Vollkorn-BoldItalic.ttf"}) + (defn load-fonts "Loads the fonts for the document. Will contain :plain, :italic, :bold and :bold-italic fonts." @@ -148,31 +160,39 @@ (with-open [stream (.openStream (io/resource file))] (PDType0Font/load doc stream)))) {} - ;; Under public/ so the same single copy is both on the classpath for - ;; PDFBox and served over HTTP: the browser bakes the portrait credit into - ;; a PNG that ends up inside this very document, and it should be set in - ;; the document's own face rather than whatever the viewer's OS offers. - {:plain "public/fonts/Vollkorn-Regular.ttf" - :italic "public/fonts/Vollkorn-Italic.ttf" - :bold "public/fonts/Vollkorn-Bold.ttf" - :bold-italic "public/fonts/Vollkorn-BoldItalic.ttf"})) + vollkorn-files)) + +(def ^:private vollkorn-cmaps + (delay (mapv (fn [file] + (with-open [in (.openStream (io/resource file))] + (.getUnicodeCmapLookup + (.parse (TTFParser.) (RandomAccessReadBuffer. in))))) + (vals vollkorn-files)))) + +(defn vollkorn-covers? + "Whether EVERY embedded Vollkorn face has a glyph for code point `cp`. All four, not + just the regular: a heading drawn in bold-italic throws on a glyph only the regular + has. Read from the font files, so it cannot drift from what is embedded." + [cp] + (every? #(pos? (.getGlyphId % (int cp))) @vollkorn-cmaps)) (defn normalize-text "Coerces a value into the WinAnsiEncoding 0x20-0xFF subset PDFBox can render (PDType1Font throws on anything else, blanking the field). nil -> nil; non-strings stringified. \\t -> space; other 0x00-0x1F dropped except \\n and \\r; curly quotes -> straight; U+2013 / U+2014 -> - / --; U+2026 -> ...; anything else - above U+00FF -> '?'." - [s] - (when (some? s) - (-> (str s) - (s/replace "\t" " ") - (s/replace #"[\u0000-\u0008\u000B\u000C\u000E-\u001F]" "") - (s/replace "\u2018" "'") (s/replace "\u2019" "'") - (s/replace "\u201C" "\"") (s/replace "\u201D" "\"") - (s/replace "\u2013" "-") (s/replace "\u2014" "--") - (s/replace "\u2026" "...") - (s/replace #"[^\u0000-\u00FF]" "?")))) + above U+00FF -> '?', unless `keep?` (a code point predicate) says the font draws it." + ([s] (normalize-text s (constantly false))) + ([s keep?] + (when (some? s) + (-> (str s) + (s/replace "\t" " ") + (s/replace #"[\u0000-\u0008\u000B\u000C\u000E-\u001F]" "") + (s/replace "\u2018" "'") (s/replace "\u2019" "'") + (s/replace "\u201C" "\"") (s/replace "\u201D" "\"") + (s/replace "\u2013" "-") (s/replace "\u2014" "--") + (s/replace "\u2026" "...") + (s/replace #"[^\u0000-\u00FF]" #(if (keep? (.codePointAt ^String % 0)) % "?")))))) (defn font-safe "`text` with whatever `font` has no glyph for made drawable: characters below 0x20 diff --git a/src/clj/orcpub/spellbook.clj b/src/clj/orcpub/spellbook.clj index 58d11ff0f..88a4e70ad 100644 --- a/src/clj/orcpub/spellbook.clj +++ b/src/clj/orcpub/spellbook.clj @@ -51,9 +51,10 @@ (defn- clean "`v` as a string the embedded fonts can show (draw/normalize-text), with list bullets turned - into middle dots; \"\" for nil." + into middle dots; \"\" for nil. Keeps what every Vollkorn face draws: the one-argument + form is WinAnsi's limit, which printed Łukasz as ?ukasz." [v] - (or (draw/normalize-text (some-> v str (s/replace "\u2022" "\u00B7"))) "")) + (or (draw/normalize-text (some-> v str (s/replace "\u2022" "\u00B7")) draw/vollkorn-covers?) "")) (defn- width "Width of `text` in points at `size` in `font`, after `clean`." diff --git a/test/clj/orcpub/non_latin_print_test.clj b/test/clj/orcpub/non_latin_print_test.clj new file mode 100644 index 000000000..265a150ec --- /dev/null +++ b/test/clj/orcpub/non_latin_print_test.clj @@ -0,0 +1,69 @@ +(ns orcpub.non-latin-print-test + "A value the embedded Vollkorn can draw must print as itself, not as `?`. + + The cards always did, through font-safe. Three paths did not: the character sheet's + form fields (Helvetica, a WinAnsi-only font), the overflow pages behind them, and + the spellbook -- all through normalize-text, which turned anything past U+00FF into + `?`. So a character named Łukasz printed as ?ukasz, for English-speaking users too." + (:require [clojure.test :refer [deftest testing is]] + [clojure.string :as str] + [clojure.java.io :as io] + [orcpub.pdf :as pdf] + [orcpub.pdf.draw :as draw] + [orcpub.spellbook :as sb]) + (:import (org.apache.pdfbox Loader) + (org.apache.pdfbox.pdmodel PDDocument) + (org.apache.pdfbox.text PDFTextStripper))) + +(def ^:private wide + "Polish, Turkish, Russian, Greek: all four Vollkorn faces draw every one of these." + "Łukasz Şahin Дмитрий Ζωή") + +(def ^:private latin "Zoë Muñoz") + +(defn- template [style] + (let [{:keys [file]} (get pdf/sheet-masters style)] + (with-open [in (.openStream (io/resource file))] + (Loader/loadPDF (.readAllBytes in))))) + +(defn- field-of [doc nm] + (.getField (.getAcroForm (.getDocumentCatalog doc)) nm)) + +(deftest the-spellbook-keeps-what-vollkorn-can-draw + (is (= wide (#'sb/clean wide))) + (testing "and still makes the substitutions it always did" + (is (= "· a -- b" (#'sb/clean "• a — b"))))) + +(deftest a-sheet-field-prints-a-non-latin-value + (with-open [doc (template 1)] + (pdf/write-fields! doc {:character-name wide} false {}) + (is (= wide (.getValueAsString (field-of doc "character-name")))))) + +(deftest a-latin-1-sheet-is-unchanged + ;; The switch is per field and only when Helvetica would have printed `?`, so every + ;; export that works today keeps its font, its appearance streams and its file size. + (with-open [doc (template 1)] + (pdf/write-fields! doc {:character-name latin} false {}) + (let [f (field-of doc "character-name")] + (is (= latin (.getValueAsString f))) + (is (str/starts-with? (.getDefaultAppearance f) "/Helv"))))) + +(deftest a-flattened-sheet-draws-a-non-latin-value + ;; End to end: the value has to survive into the page content, not just the field. + (with-open [doc (template 1)] + (pdf/write-fields! doc {:character-name wide} true {}) + (let [text (.getText (doto (PDFTextStripper.) (.setStartPage 1) (.setEndPage 1)) doc)] + (is (str/includes? text "Łukasz")) + (is (str/includes? text "Дмитрий"))))) + +(deftest an-overflow-page-keeps-a-non-latin-value + (with-open [doc (template 1)] + (let [backstory (str/join " " (repeat 400 wide))] + (pdf/spill-overflow! doc {:backstory backstory}) + (let [over (field-of doc "overflow-1")] + (is (some? over) "the value spilled, so the guard below is not vacuous") + (is (and over (str/includes? (.getValueAsString over) "Łukasz"))))))) + +(deftest the-cards-already-did + (with-open [doc (PDDocument.)] + (is (= wide (draw/font-safe (:plain (draw/load-fonts doc)) wide))))) From 929b60cc2ddcf7ad3e84b9e7984003869da5dec7 Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Wed, 21 Oct 2026 15:05:56 +0000 Subject: [PATCH 33/40] Remove A5: design for Letter and A4 A5 was added because of a misreading: the question was which A size is closest to Letter, and the answer is A4. Letter is the default and A4 the second layout to design around; a half sheet is a pamphlet format nobody asked for. It cost more than it was worth. It needed sheet-page-sizes and a gate in fit-sheet-to-page!, because re-papering a 612x792 template onto A5 cut off 159 of its 335 fields. It produced the A5-only running-head overflow. And an A5 export mixed paper sizes in one file. valid-page-sizes is #{:letter :a4}. A request for :a5 now falls back to Letter like any unknown option, rather than erroring. sheet-page-sizes and its gate go: every offered paper now fits the sheet. The clipping test iterates draw/page-sizes, so a paper added later that cuts the sheet fails it. No baseline moved; there was never an A5 baseline. --- CHANGELOG.md | 4 ++-- src/clj/orcpub/pdf.clj | 17 ++++---------- src/clj/orcpub/pdf/draw.clj | 9 ++++--- src/clj/orcpub/routes.clj | 14 +++++------ src/clj/orcpub/spellbook.clj | 4 ++-- test/clj/orcpub/page_size_test.clj | 34 ++++++++++----------------- test/clj/orcpub/running_head_test.clj | 12 ++++------ test/clj/orcpub/sheet_image_test.clj | 5 ++-- test/clj/orcpub/sheet_shim_test.clj | 20 ++++------------ 9 files changed, 42 insertions(+), 77 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4eab4d173..74ee68695 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -78,7 +78,7 @@ Homebrew can be moved, switched off and repaired instead of lost, and a characte - **Characters:** a Choices list in the builder shows every choice a character stores, including ones whose homebrew isn't loaded in this browser, and lets those be cleared. - **Characters:** the character builder's Back and Next repeat at the bottom of each page, and open the next page at its top. - **Homebrew:** the add buttons on homebrew builders repeat below a long list of traits or options. -- **Printing:** A4 as well as US Letter for the character sheet, and A4 or A5 for spell cards, magic item cards and the spellbook. An A4 spellbook page carries about 7% more than a Letter one; A5 fits four cards to a sheet instead of nine. An A5 export keeps the sheet itself on Letter. +- **Printing:** A4 as well as US Letter, for the character sheet, spell cards, magic item cards and the spellbook. An A4 spellbook page carries about 7% more than a Letter one. - **Printing:** when part of an export cannot be produced, the PDF opens with a page naming what was left out and why. A clean export is unchanged and gains no page. ### Changed @@ -156,7 +156,7 @@ Homebrew can be moved, switched off and repaired instead of lost, and a characte - **Homebrew:** a homebrew class's choices that share a name show in level order; levels 10 and 17 came before level 3. - **Printing:** a magic item or spell whose name the embedded font cannot draw no longer costs the card sheet it is on, and every sheet after it. - **Printing:** names and notes written in Polish, Turkish, Czech, Russian, Greek and other scripts beyond Western European print on the character sheet and in the spellbook, instead of as question marks. -- **Printing:** a spellbook page's level tabs no longer print off the edge of the paper when a character has three casting classes or a very long class name. +- **Printing:** a spellbook page's level tabs no longer print off the edge of the paper when a character has a very long class name. - **Printing:** a long class name in a spellbook chapter heading, or a long custom spell name, is now shortened to fit instead of running off the page. - **Printing:** an export with more spells or magic items than the cap allows now says so on the notice page; the extras were dropped in silence. - **Printing:** on a server whose JVM runs a non-English locale, spell-card school names and the sheet's ability labels drew the wrong letter: a Turkish server printed "İllusion" and "İNT". diff --git a/src/clj/orcpub/pdf.clj b/src/clj/orcpub/pdf.clj index 236190ebd..0bec39e13 100644 --- a/src/clj/orcpub/pdf.clj +++ b/src/clj/orcpub/pdf.clj @@ -1211,7 +1211,7 @@ "`body` with the page fixed to Letter, which is the AcroForm templates' coordinate space on every paper: fit-sheet-to-page! re-papers the sheet by moving the MediaBox, so the content it moves over keeps its original 612x792. Measured against the - REQUESTED page instead, the portrait sat 49.89pt high on A4 and 196.72pt low on A5." + REQUESTED page instead, the portrait sat 49.89pt high on A4." [& body] `(binding [draw/*page* :letter] ~@body)) @@ -2221,23 +2221,14 @@ {:head "Some of this export did not fit." :sub "Your sheet is below and is complete. These parts were left out:"}) -(def sheet-page-sizes - "Papers the character sheet is re-framed onto. Re-papering MOVES a window over fixed - 612x792 artwork, so it only works where the window still contains the sheet: on A4, - 0 of 335 widgets fall outside it; on A5, 159 do -- half the fields cut off. A5 holds - the cards and the spellbook, which are laid out to the paper rather than framed." - #{:letter :a4}) - (defn fit-sheet-to-page! "Re-papers the AcroForm sheet onto `draw/*page*`, centred. A NO-OP on :letter, which - the templates already are, and outside sheet-page-sizes, whose sheet pages stay - Letter while the drawn pages after them use the requested size. + the templates already are. On A4, 0 of 335 widgets fall outside the new window. Moves the MEDIABOX, not the content: the window shifts over the page's coordinate space, so artwork and widgets move together and no appearance stream is touched -- translating 549 widget rects by hand would reach the same place and get it wrong." [doc] - (when (contains? sheet-page-sizes draw/*page*) - (let [[pw ph] (draw/page-size draw/*page*)] + (let [[pw ph] (draw/page-size draw/*page*)] (doseq [page (.getPages doc) :let [mb (.getMediaBox page) tw (.getWidth mb) th (.getHeight mb)] @@ -2249,7 +2240,7 @@ (float (/ (- th ph) 2.0)) (float pw) (float ph))] (.setMediaBox page box) - (.setCropBox page box)))))) + (.setCropBox page box))))) (defn add-notice-page! "Prepends a page naming what the export dropped. Adds NO page on a clean export. diff --git a/src/clj/orcpub/pdf/draw.clj b/src/clj/orcpub/pdf/draw.clj index 408fb1236..bcaaa7113 100644 --- a/src/clj/orcpub/pdf/draw.clj +++ b/src/clj/orcpub/pdf/draw.clj @@ -25,8 +25,7 @@ "Page dimensions in POINTS, [width height]. ISO 216 for the A series; US Letter is 612x792, which is exactly 8.5x11 inches." {:letter [612.0 792.0] - :a4 [595.28 841.89] - :a5 [419.53 595.28]}) + :a4 [595.28 841.89]}) (def ^:dynamic *page* "The page every drawing call measures against, a key of `page-sizes`. Bind it once per @@ -382,15 +381,15 @@ (defn cards-per-page "How many `box-width` x `box-height` inch cards fit the bound page. What a caller must - partition by -- 9 on Letter and A4, 4 on A5, and a literal 9 drops the rest." + partition by: a literal 9 drops whatever the page holds beyond its cells." [box-width box-height] (let [{:keys [cols rows]} (grid-layout box-width box-height)] (* cols rows))) (defn draw-grid "The cut grid for cards `box-width` x `box-height` inches, as many as fit the bound - page, centred. Light grey lines. Takes its page from `*page*`, so a 2-up A5 grid on - A4 is the same call with a different binding." + page, centred. Light grey lines. Takes its page from `*page*`, so an A4 grid is the + same call with a different binding." [cs box-width box-height] (let [{:keys [cols rows margin-x margin-y width height]} (grid-layout box-width box-height) ;; PDFBox 3.x: setStrokingColor(float,float,float) requires 0.0-1.0 range diff --git a/src/clj/orcpub/routes.clj b/src/clj/orcpub/routes.clj index c82e3238d..57d447002 100644 --- a/src/clj/orcpub/routes.clj +++ b/src/clj/orcpub/routes.clj @@ -1188,8 +1188,8 @@ (str class))] (spellbook/spell-sort-key spell-order (spells-map key)))) flat-spells) - ;; Capacity, not 9: a page holds 9 on Letter and A4 but 4 on A5, and - ;; print-spells draws only as many as there are cells -- the rest vanished. + ;; Capacity, not 9: print-spells draws only as many as the page has cells, + ;; so a literal 9 drops the rest on any paper that holds fewer. parts (vec (partition-all (draw/cards-per-page 2.5 3.5) sorted-spells))] (doseq [i (range (count parts)) :let [part (parts i)]] @@ -1334,12 +1334,10 @@ #{1 2 3 4}) (def valid-page-sizes - "Paper the export draws on. Letter and A4 are both designed for; A5 fits 4 cards a - page instead of 9 and suits a pocket spellbook, not a character sheet. - - The character-sheet TEMPLATES are 612x792 whatever this says -- their artwork is - fixed, and fitting them to A4 is a separate shim." - #{:letter :a4 :a5}) + "Paper the export draws on: Letter, the default, and A4. Anything else falls back to + Letter. The character-sheet TEMPLATES are 612x792 whatever this says -- their + artwork is fixed, and fit-sheet-to-page! re-papers them onto A4." + #{:letter :a4}) (def default-sheet-style 1) diff --git a/src/clj/orcpub/spellbook.clj b/src/clj/orcpub/spellbook.clj index 88a4e70ad..8c9fe531b 100644 --- a/src/clj/orcpub/spellbook.clj +++ b/src/clj/orcpub/spellbook.clj @@ -886,8 +886,8 @@ :else (str (first names) " to " (peek names)))] (let [n (inc max-level) bw 10 gap 2 total (- (* n (+ bw gap)) gap) ;; Reserve the tab strip first: the tabs follow the stats, so an unbounded - ;; stats line pushes them off the paper. Three classes reach 344pt of A5's - ;; 347pt body. Each entry is clipped to what is left; the rest are dropped. + ;; stats line pushes them off the paper: a 60-character class label overran + ;; Letter by 75pt. Each entry is clipped to what is left; the rest dropped. stats-room (- (+ x w) (if (= :head tabs) (+ total 10) 0)) fit (fn [t room] (clip* #(lining-width (:plain fonts) 6.4 % 0.6) t room)) stats-end (reduce (fn [px t] diff --git a/test/clj/orcpub/page_size_test.clj b/test/clj/orcpub/page_size_test.clj index 8c575824f..00721160a 100644 --- a/test/clj/orcpub/page_size_test.clj +++ b/test/clj/orcpub/page_size_test.clj @@ -19,18 +19,11 @@ (deftest page-sizes-are-iso-216 (testing "to the hundredth of a point, not rounded to the nearest point" - ;; 210x297mm and 148x210mm at 72pt/inch over 25.4mm/inch. + ;; 210x297mm at 72pt/inch over 25.4mm/inch. (is (= [595.28 841.89] (draw/page-size :a4))) - (is (= [419.53 595.28] (draw/page-size :a5))) (is (= [612.0 792.0] (draw/page-size :letter)))) - (testing "A5 is half an A4 only to the millimetre, NOT exactly" - ;; ISO 216 halves the previous size and rounds DOWN to a whole mm: half of A4's - ;; 297mm is 148.5, but A5 is 148. So 2-up A5 on A4 leaves a 0.5mm = 1.4175pt - ;; sliver. Fine to print; not fine to assert as exact, which this test caught. - (let [gap (- (/ (second (draw/page-size :a4)) 2) - (first (draw/page-size :a5)))] - (is (< 1.41 gap 1.42) "half of 297mm less 148mm, in points") - (is (pos? gap) "A5 is the narrower of the two, never wider")))) + (testing "Letter and A4 are the two papers designed for; nothing else is offered" + (is (= #{:letter :a4} (set (keys draw/page-sizes)))))) (deftest accessors-follow-the-binding (testing "page-width and page-height read *page*, in the caller's unit" @@ -38,9 +31,7 @@ (is (= 11.0 (draw/page-height 72))) (binding [draw/*page* :a4] (is (= 595.28 (draw/page-width 1))) - (is (= 841.89 (draw/page-height 1)))) - (binding [draw/*page* :a5] - (is (= 419.53 (draw/page-width 1)))))) + (is (= 841.89 (draw/page-height 1)))))) (deftest the-flip-follows-the-binding (testing "pt-from-top is the choke point every y conversion goes through" @@ -48,9 +39,7 @@ (binding [draw/*page* :a4] (is (= (float 841.89) (draw/pt-from-top 72 0))) ;; An inch down from the top of a taller page is lower in PDF space. - (is (= (float (- 841.89 72)) (draw/pt-from-top 72 1)))) - (binding [draw/*page* :a5] - (is (= (float 595.28) (draw/pt-from-top 1 0)))))) + (is (= (float (- 841.89 72)) (draw/pt-from-top 72 1)))))) (deftest the-spellbook-follows-the-binding (testing "page-w/page-h were load-time defs, which no binding could reach" @@ -71,13 +60,12 @@ (ops/page-ops pg))))) (deftest the-card-grid-resizes - (testing "9 up on Letter and A4, 4 up on A5 -- the grid is computed, not assumed" - ;; floor(8.5/2.5)=3 x floor(11/3.5)=3; A4 3.30x3.34 -> 3x3; A5 2.33x2.36 -> 2x2. + (testing "9 up on Letter and A4 -- the grid is computed, not assumed" + ;; floor(8.5/2.5)=3 x floor(11/3.5)=3; A4 3.30x3.34 -> 3x3. ;; Each boundary line is moveTo + lineTo + stroke, so 3 ops a line. (let [lines #(/ (count (filter (fn [o] (re-find #" l$" o)) %)) 1)] (is (= 8 (lines (grid-ops :letter))) "4 vertical + 4 horizontal for 3x3") - (is (= 8 (lines (grid-ops :a4))) "A4 also fits 3x3, at different margins") - (is (= 6 (lines (grid-ops :a5))) "3 + 3 for 2x2"))) + (is (= 8 (lines (grid-ops :a4))) "A4 also fits 3x3, at different margins"))) (testing "and A4's grid is not Letter's grid: same box count, different margins" (is (not= (grid-ops :letter) (grid-ops :a4))))) @@ -102,9 +90,11 @@ "if these match, the page is being consulted and discarded again")))) (deftest the-request-option-is-validated - (testing "the three we design for are accepted" - (doseq [p [:letter :a4 :a5]] + (testing "the two we design for are accepted" + (doseq [p [:letter :a4]] (is (= p (#'routes/one-of routes/valid-page-sizes p :letter))))) + (testing "A5 is no longer offered: a request for it gets Letter, not an error" + (is (= :letter (#'routes/one-of routes/valid-page-sizes :a5 :letter)))) (testing "a string names the same page, as the client sends it" (is (= :a4 (#'routes/one-of routes/valid-page-sizes "a4" :letter)))) (testing "anything else falls back to Letter rather than throwing. diff --git a/test/clj/orcpub/running_head_test.clj b/test/clj/orcpub/running_head_test.clj index 0a2d26c66..b06bc6677 100644 --- a/test/clj/orcpub/running_head_test.clj +++ b/test/clj/orcpub/running_head_test.clj @@ -2,8 +2,8 @@ "The spellbook's page furniture must stay on the paper. The level tabs are placed AFTER the class statistics, so nothing bounded the pair: - measured, three classes run to 344pt of A5's 347pt body, and a 60-character class - label overruns Letter by 75pt. The tabs then print off the edge. + measured, a 60-character class label overran Letter by 75pt and the tabs printed off + the edge. chap-unit had the same shape: it drew the class name at 20pt with no bound, so a 60-character name put the LEVEL text beside it at 1282pt on any paper." @@ -63,14 +63,12 @@ (+ (Double/parseDouble (first ts)) 10.0)))) (deftest the-running-head-stays-on-the-paper - (doseq [[page-kw label] [[:letter "Letter"] [:a4 "A4"] [:a5 "A5"]]] + (doseq [[page-kw label] [[:letter "Letter"] [:a4 "A4"]]] (let [limit (first (draw/page-size page-kw))] ;; Guards the guard: 0.0 above means a book with no tabs would pass silently. (is (pos? (tabs-right (render page-kw [(caster "Cleric" 15 "+7" "holy-symbol")]))) "tabs were drawn") (testing (str label ": three classes fit") - ;; A5's body is 347.53pt and three classes' statistics alone reach 344.17pt, - ;; so before the fix the tab strip started past the page edge. (is (<= (tabs-right (render page-kw [(caster "Cleric" 15 "+7" "holy-symbol") (caster "Wizard" 16 "+8" "spell-book") (caster "Druid" 14 "+6" "holy-symbol")])) @@ -99,7 +97,7 @@ (if (= "re" k) (+ x (Double/parseDouble (nth ts 2))) x)))) (deftest nothing-in-the-chapter-head-runs-past-the-paper - (doseq [[page-kw label] [[:letter "Letter"] [:a4 "A4"] [:a5 "A5"]]] + (doseq [[page-kw label] [[:letter "Letter"] [:a4 "A4"]]] (let [limit (first (draw/page-size page-kw)) long-name (apply str (repeat 60 "W"))] (testing (str label ": a 60-character class name is clipped, not drawn off-page") @@ -141,7 +139,7 @@ out))) (deftest a-long-spell-name-stays-in-its-column - ;; No SRD name is long enough -- 0 of 319 overflow even on A5 -- but a custom spell's + ;; No SRD name is long enough -- 0 of 319 overflow a column -- but a custom spell's ;; name is bounded only by the request body, and the marks are placed after it. (let [long-spell {:key :probe-long :level 1 :school "evocation" :ritual true :name (apply str (repeat 55 "W")) diff --git a/test/clj/orcpub/sheet_image_test.clj b/test/clj/orcpub/sheet_image_test.clj index bef54c8c9..9684e97fe 100644 --- a/test/clj/orcpub/sheet_image_test.clj +++ b/test/clj/orcpub/sheet_image_test.clj @@ -4,7 +4,7 @@ fit-sheet-to-page! re-papers the sheet by moving the MEDIABOX, so the template's content keeps its Letter coordinate space. Anything drawn onto a template page after that must measure against Letter; measuring against the requested page instead puts - the image 49.89pt off on A4 and about 197pt off on A5." + the image 49.89pt off on A4." (:require [clojure.test :refer [deftest testing is]] [clojure.string :as str] [orcpub.pdf-ops :as ops] @@ -39,8 +39,7 @@ (let [letter (portrait-cm :letter)] (testing "the placement is the template's, so it is the same on every paper" (is (seq letter) "an image was drawn") - (is (= letter (portrait-cm :a4)) "A4") - (is (= letter (portrait-cm :a5)) "A5")))) + (is (= letter (portrait-cm :a4)) "A4")))) (deftest the-shim-moves-the-window-not-the-content (testing "fit-sheet-to-page! leaves content coordinates alone" diff --git a/test/clj/orcpub/sheet_shim_test.clj b/test/clj/orcpub/sheet_shim_test.clj index 55ad89e96..03667f8fb 100644 --- a/test/clj/orcpub/sheet_shim_test.clj +++ b/test/clj/orcpub/sheet_shim_test.clj @@ -64,23 +64,13 @@ (> (.getUpperRightY r) (.getUpperRightY cb))))] r)) -(deftest no-supported-sheet-size-cuts-a-field-off - ;; The real check. The earlier A5 test asserted the crop box held what the shim was - ;; told to put there, which is not the same as the sheet still being readable: it - ;; passed while 159 of 335 widgets sat outside the window. - (doseq [size pdf/sheet-page-sizes] +(deftest no-supported-paper-cuts-a-field-off + ;; The real check, over every paper the export offers, so adding one that is too small + ;; fails here. A test that only asserted the crop box held what the shim was told to put + ;; there passed while A5 -- since removed -- cut 159 of 335 widgets off the page. + (doseq [size (keys draw/page-sizes)] (testing (str "every field is inside the printed window on " (name size)) (with-open [doc (template)] (binding [draw/*page* size] (pdf/fit-sheet-to-page! doc)) (let [out (widgets-outside-crop doc)] (is (empty? out) (str (count out) " widget(s) clipped on " (name size)))))))) - -(deftest a5-leaves-the-sheet-on-letter - (testing "A5 is 192pt narrower and 197pt shorter than the templates, so re-papering - would cut off half the fields. The sheet stays Letter; the cards and the - spellbook after it are drawn to A5." - (with-open [doc (template)] - (binding [draw/*page* :a5] (pdf/fit-sheet-to-page! doc)) - (is (every? #(= [0 0 612 792] %) (boxes doc)) - (str "got " (pr-str (distinct (boxes doc))))) - (is (empty? (widgets-outside-crop doc)) "and nothing is clipped")))) From 188d0e9b4e92bb57870883424f4a5e7f2bc25021 Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Wed, 21 Oct 2026 15:30:37 +0000 Subject: [PATCH 34/40] Keep what WinAnsi can draw: curly quotes, dashes, oe, euro normalize-text treated WinAnsi as Unicode U+0000-U+00FF and refused the rest. WinAnsi is a byte encoding: its 0x80-0x9F slots hold the curly quotes, en and em dash, ellipsis, bullet, oe, OE and the euro sign, and Helvetica draws all of them (asserted in winansi_test, not assumed). So the sheet flattened punctuation and printed French oe as `?`, and the spellbook did the same to 135 characters of SRD text in a font that draws them. The earlier coverage table blamed Helvetica for the French loss; it was this. winansi? reads PDFBox's own WinAnsiEncoding table, so it is not a hand-maintained list. normalize-text keeps a character when keep? says the font draws it, falls back to the old ASCII substitutions only when it cannot, and prints `?` last. C1 controls (U+0080-U+009F), which it used to pass through to a font with no glyph for them, are now refused. The sheet's per-field switch now changes font only when the other font refuses FEWER characters. Before, a value whose one odd character neither font has -- CJK beside Latin text -- switched font and gained nothing. Two tests pinned the bug ("smart quotes/dash downgraded"); reversed, with the reason recorded in place. Spellbook baselines re-seeded: 6 pages per paper moved, ONLY their :sha and :text -- operator counts, geometry and colour are unchanged, so characters changed and layout did not. 1121 tests, 7413 assertions green under the default locale, tr_TR and es_ES. Lint 0 errors. --- CHANGELOG.md | 1 + src/clj/orcpub/pdf.clj | 8 +++-- src/clj/orcpub/pdf/draw.clj | 43 ++++++++++++++++++------ test/clj/orcpub/non_latin_print_test.clj | 4 +-- test/clj/orcpub/pdf_test.clj | 17 ++++++---- test/clj/orcpub/winansi_test.clj | 33 ++++++++++++++++++ test/spellbook-geometry-a4-baseline.edn | 24 ++++++------- test/spellbook-geometry-baseline.edn | 24 ++++++------- 8 files changed, 107 insertions(+), 47 deletions(-) create mode 100644 test/clj/orcpub/winansi_test.clj diff --git a/CHANGELOG.md b/CHANGELOG.md index 74ee68695..5ac339412 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -156,6 +156,7 @@ Homebrew can be moved, switched off and repaired instead of lost, and a characte - **Homebrew:** a homebrew class's choices that share a name show in level order; levels 10 and 17 came before level 3. - **Printing:** a magic item or spell whose name the embedded font cannot draw no longer costs the card sheet it is on, and every sheet after it. - **Printing:** names and notes written in Polish, Turkish, Czech, Russian, Greek and other scripts beyond Western European print on the character sheet and in the spellbook, instead of as question marks. +- **Printing:** curly quotes, dashes, ellipses, bullets, œ and € print as themselves on the character sheet and in spell text; they were flattened to straight quotes and hyphens or dropped. - **Printing:** a spellbook page's level tabs no longer print off the edge of the paper when a character has a very long class name. - **Printing:** a long class name in a spellbook chapter heading, or a long custom spell name, is now shortened to fit instead of running off the page. - **Printing:** an export with more spells or magic items than the cap allows now says so on the notice page; the extras were dropped in silence. diff --git a/src/clj/orcpub/pdf.clj b/src/clj/orcpub/pdf.clj index 0bec39e13..bed121b99 100644 --- a/src/clj/orcpub/pdf.clj +++ b/src/clj/orcpub/pdf.clj @@ -783,9 +783,11 @@ Helvetica can draw keeps today's path exactly; one it cannot switches that one field to Vollkorn, where WinAnsi-only Helvetica had printed Łukasz as ?ukasz." [v] - (let [latin (draw/normalize-text v) - wide (draw/normalize-text v draw/vollkorn-covers?)] - (if (= latin wide) [latin "Helv"] [wide "VkR"]))) + ;; Only when the other font refuses FEWER: a value whose one odd character neither + ;; font has would otherwise change font, and weight, for nothing. + (if (< (draw/refused v draw/vollkorn-covers?) (draw/refused v draw/winansi?)) + [(draw/normalize-text v draw/vollkorn-covers?) "VkR"] + [(draw/normalize-text v) "Helv"])) (defn- vollkorn-field-font! "Vollkorn Regular in `form`'s default resources as /VkR, added on first use. Embedded diff --git a/src/clj/orcpub/pdf/draw.clj b/src/clj/orcpub/pdf/draw.clj index bcaaa7113..b4694ce9a 100644 --- a/src/clj/orcpub/pdf/draw.clj +++ b/src/clj/orcpub/pdf/draw.clj @@ -19,6 +19,7 @@ (org.apache.pdfbox.util Matrix) (org.apache.pdfbox.io RandomAccessReadBuffer) (org.apache.fontbox.ttf TTFParser) + (org.apache.pdfbox.pdmodel.font.encoding WinAnsiEncoding GlyphList) (javax.imageio ImageIO))) (def page-sizes @@ -175,23 +176,43 @@ [cp] (every? #(pos? (.getGlyphId % (int cp))) @vollkorn-cmaps)) +(def ^:private winansi-code-points + (delay (into #{} (keep #(some-> (.toUnicode (GlyphList/getAdobeGlyphList) %) + (.codePointAt 0))) + (vals (.getCodeToNameMap WinAnsiEncoding/INSTANCE))))) + +(defn winansi? + "Whether code point `cp` is in WinAnsiEncoding, so Helvetica can draw it. Read from + PDFBox's own table: WinAnsi is a BYTE encoding, not Unicode U+0000-U+00FF, and its + 0x80-0x9F slots hold the curly quotes, dashes, ellipsis, bullet, oe and euro sign." + [cp] + (contains? @winansi-code-points (int cp))) + +(def ^:private ascii-fallback + "What to print for these when the font has no glyph, rather than `?`." + {"\u2018" "'" "\u2019" "'" "\u201C" "\"" "\u201D" "\"" "\u2013" "-" "\u2014" "--" "\u2026" "..."}) + (defn normalize-text - "Coerces a value into the WinAnsiEncoding 0x20-0xFF subset PDFBox can render - (PDType1Font throws on anything else, blanking the field). nil -> nil; non-strings - stringified. \\t -> space; other 0x00-0x1F dropped except \\n and \\r; curly - quotes -> straight; U+2013 / U+2014 -> - / --; U+2026 -> ...; anything else - above U+00FF -> '?', unless `keep?` (a code point predicate) says the font draws it." - ([s] (normalize-text s (constantly false))) + "A value as text the target font can draw. nil -> nil; non-strings stringified; tab -> + space; other controls dropped except newlines. Past ASCII and Latin-1, a character is + kept when `keep?` (a code point predicate, default winansi?, i.e. Helvetica) says the + font draws it, else given its ASCII fallback (curly quote -> straight, dash -> -), + else `?`." + ([s] (normalize-text s winansi?)) ([s keep?] (when (some? s) (-> (str s) (s/replace "\t" " ") (s/replace #"[\u0000-\u0008\u000B\u000C\u000E-\u001F]" "") - (s/replace "\u2018" "'") (s/replace "\u2019" "'") - (s/replace "\u201C" "\"") (s/replace "\u201D" "\"") - (s/replace "\u2013" "-") (s/replace "\u2014" "--") - (s/replace "\u2026" "...") - (s/replace #"[^\u0000-\u00FF]" #(if (keep? (.codePointAt ^String % 0)) % "?")))))) + (s/replace #"[^\u0000-\u007F\u00A0-\u00FF]" + #(cond (keep? (.codePointAt ^String % 0)) % + (ascii-fallback %) (ascii-fallback %) + :else "?")))))) + +(defn refused + "How many characters of `s` normalize-text would not print as themselves under `keep?`." + [s keep?] + (count (filter #(and (> (int %) 0xFF) (not (keep? (int %)))) (str s)))) (defn font-safe "`text` with whatever `font` has no glyph for made drawable: characters below 0x20 diff --git a/test/clj/orcpub/non_latin_print_test.clj b/test/clj/orcpub/non_latin_print_test.clj index 265a150ec..eab1499c6 100644 --- a/test/clj/orcpub/non_latin_print_test.clj +++ b/test/clj/orcpub/non_latin_print_test.clj @@ -31,8 +31,8 @@ (deftest the-spellbook-keeps-what-vollkorn-can-draw (is (= wide (#'sb/clean wide))) - (testing "and still makes the substitutions it always did" - (is (= "· a -- b" (#'sb/clean "• a — b"))))) + (testing "bullets still become middle dots; the em dash is no longer flattened to --" + (is (= "· a — b" (#'sb/clean "• a — b"))))) (deftest a-sheet-field-prints-a-non-latin-value (with-open [doc (template 1)] diff --git a/test/clj/orcpub/pdf_test.clj b/test/clj/orcpub/pdf_test.clj index 75bc396ea..8e1b8c350 100644 --- a/test/clj/orcpub/pdf_test.clj +++ b/test/clj/orcpub/pdf_test.clj @@ -62,15 +62,17 @@ "flattened form has no interactive fields left"))))) (deftest write-fields-handles-non-winansi-without-blanking - (testing "a field value with smart quotes / CJK is coerced (not thrown on), so the - field still gets written — regression for PDFBox 3's WinAnsi encoder" + (testing "a field value with CJK is coerced (not thrown on), so the field still gets + written -- regression for PDFBox 3's WinAnsi encoder. Smart quotes and the + dash were once downgraded too; they are WinAnsi, and Helvetica draws them." (with-open [doc (load-template)] (let [form (.getAcroForm (.getDocumentCatalog doc)) fname (.getFullyQualifiedName (->> (all-fields form) (filter #(instance? PDTextField %)) first))] (pdf/write-fields! doc {(keyword fname) "“René” — 日"} false {}) - (is (= "\"René\" -- ?" (.getValueAsString (.getField form fname))) - "smart quotes/dash downgraded, CJK -> '?', Latin-1 kept"))))) + (is (= "“René” — ?" (.getValueAsString (.getField form fname))) + "punctuation kept, CJK -> '?', and the field stays on Helvetica: Vollkorn + cannot draw the CJK either, so switching would gain nothing"))))) (deftest make-image-loader-embeds-once (testing "the per-document loader memoizes: the same icon path returns the SAME @@ -122,10 +124,11 @@ "logo off")))))) (deftest normalize-text-coerces-to-winansi - (testing "unit: smart punctuation downgraded, controls dropped, non-Latin-1 -> '?'" + (testing "unit: WinAnsi punctuation kept, controls dropped, the rest -> '?'" + ;; Reversed 2026-10-21: this asserted the punctuation was downgraded, on the belief + ;; that WinAnsi meant U+0000-U+00FF. See winansi_test. (let [nt #'orcpub.pdf.draw/normalize-text] - (is (= "'q' \"d\" - -- ..." - (nt "‘q’ “d” – — …"))) + (is (= "‘q’ “d” – — …" (nt "‘q’ “d” – — …"))) (is (= "ab c" (nt "ab\tc")) "BEL dropped, tab -> space") (is (= "??" (nt "日本")) "CJK -> placeholders, no throw") (is (nil? (nt nil)))))) diff --git a/test/clj/orcpub/winansi_test.clj b/test/clj/orcpub/winansi_test.clj new file mode 100644 index 000000000..fc5c20786 --- /dev/null +++ b/test/clj/orcpub/winansi_test.clj @@ -0,0 +1,33 @@ +(ns orcpub.winansi-test + "normalize-text must keep every character WinAnsi -- and so Helvetica -- can draw. + + It treated WinAnsi as Unicode U+0000-U+00FF. It is not: WinAnsi is a byte encoding, + and its 0x80-0x9F slots hold curly quotes, dashes, the ellipsis, the bullet, oe and + the euro sign. Helvetica draws all of them; normalize-text replaced or dropped them." + (:require [clojure.test :refer [deftest testing is]] + [orcpub.pdf.draw :as draw] + [orcpub.spellbook :as sb])) + +(def ^:private winansi-extras + "‘’“”–—…•œŒ€™ŠšŽžŸ") + +(deftest helvetica-draws-everything-in-winansi + (testing "the premise, measured rather than assumed" + (doseq [c winansi-extras] + (is (try (.getStringWidth draw/HELVETICA (str c)) true (catch Exception _ false)) + (format "U+%04X" (int c)))))) + +(deftest normalize-text-keeps-what-helvetica-draws + (is (= winansi-extras (draw/normalize-text winansi-extras))) + (testing "and still refuses what it cannot" + (is (= "?ukasz" (draw/normalize-text "Łukasz"))) + (is (= "a?b" (draw/normalize-text "a\u0085b")) "C1 controls are not WinAnsi"))) + +(deftest the-spellbook-keeps-the-srd-punctuation + ;; 135 such characters across the SRD's spells were printed as straight quotes and + ;; hyphens, in a font that draws the real ones. + (is (= "“No,” she said — twice." (#'sb/clean "“No,” she said — twice.")))) + +(deftest a-font-that-lacks-a-dash-still-gets-a-readable-one + ;; The old substitutions are now a fallback, used only where the font has no glyph. + (is (= "a -- b" (draw/normalize-text "a — b" (constantly false))))) diff --git a/test/spellbook-geometry-a4-baseline.edn b/test/spellbook-geometry-a4-baseline.edn index e9ac5a61b..2f1a5c3df 100644 --- a/test/spellbook-geometry-a4-baseline.edn +++ b/test/spellbook-geometry-a4-baseline.edn @@ -23,10 +23,10 @@ "re" 10, "rg" 194, "w" 148}, - :sha "967fc295b2b9", + :sha "cb3bc35e4e99", :geom "1eb4ac7447a0", :colour "f6968c7bd2d8", - :text "b7db6964009e"} + :text "a73bce33ecc8"} {:ops 6587, :kinds {"BT" 80, @@ -77,10 +77,10 @@ "re" 10, "rg" 196, "w" 148}, - :sha "98f007fbfe06", + :sha "1335ed42f25c", :geom "ff5a3365f035", :colour "c648c3dc74fa", - :text "af9e612ef14e"} + :text "7b9b6ccda8f7"} {:ops 6608, :kinds {"BT" 83, @@ -130,10 +130,10 @@ "q" 2, "rg" 174, "w" 138}, - :sha "6289233b6a85", + :sha "f70a4a8557c0", :geom "c20a139c596b", :colour "1b361cc43dbf", - :text "b7db6964009e"} + :text "a73bce33ecc8"} {:ops 6231, :kinds {"BT" 80, @@ -183,10 +183,10 @@ "re" 10, "rg" 184, "w" 128}, - :sha "82a45f67fc54", + :sha "9dd0a1cb16e0", :geom "347a22aefa90", :colour "cba082e4c95d", - :text "1cb69ce01d35"} + :text "dce526688001"} {:ops 4852, :kinds {"BT" 76, @@ -237,10 +237,10 @@ "re" 10, "rg" 185, "w" 128}, - :sha "134501a1c2be", + :sha "141c39440c2f", :geom "58699bfb2048", :colour "779cfeac6415", - :text "db06c1946133"} + :text "5829e6926437"} {:ops 4880, :kinds {"BT" 80, @@ -290,10 +290,10 @@ "q" 2, "rg" 164, "w" 118}, - :sha "634ed89f75df", + :sha "4c3eb3f847fe", :geom "5450b947be1f", :colour "81b6658408a8", - :text "1cb69ce01d35"} + :text "dce526688001"} {:ops 4496, :kinds {"BT" 76, diff --git a/test/spellbook-geometry-baseline.edn b/test/spellbook-geometry-baseline.edn index 29da7b057..1747bed0f 100644 --- a/test/spellbook-geometry-baseline.edn +++ b/test/spellbook-geometry-baseline.edn @@ -23,10 +23,10 @@ "re" 10, "rg" 191, "w" 148}, - :sha "ffbfd39b6560", + :sha "a2f0f29f883e", :geom "ade4a91576e4", :colour "9d71a4b7b5c9", - :text "f5b47e5f3212"} + :text "146f6346a1b5"} {:ops 6545, :kinds {"BT" 74, @@ -77,10 +77,10 @@ "re" 10, "rg" 196, "w" 148}, - :sha "79605288e13b", + :sha "87544c2a7af2", :geom "3dfeab16758f", :colour "c648c3dc74fa", - :text "c292ce1a89dc"} + :text "b91ccf55bdcf"} {:ops 6594, :kinds {"BT" 81, @@ -130,10 +130,10 @@ "q" 2, "rg" 171, "w" 138}, - :sha "956de3ea64a0", + :sha "ff5d0a1bbd91", :geom "cd8d26276450", :colour "ccf185202a88", - :text "f5b47e5f3212"} + :text "146f6346a1b5"} {:ops 6189, :kinds {"BT" 74, @@ -183,10 +183,10 @@ "re" 10, "rg" 180, "w" 128}, - :sha "b674e3cd644d", + :sha "4aadab8dbbf4", :geom "30a108936caf", :colour "55a93747a290", - :text "a825fdd852dd"} + :text "8d5580c3f783"} {:ops 4817, :kinds {"BT" 71, @@ -237,10 +237,10 @@ "re" 10, "rg" 185, "w" 128}, - :sha "ab45e10a5213", + :sha "c6d8f9b70527", :geom "5472dff12734", :colour "779cfeac6415", - :text "49a8b79bc3e3"} + :text "1081bf0f270f"} {:ops 4866, :kinds {"BT" 78, @@ -290,10 +290,10 @@ "q" 2, "rg" 160, "w" 118}, - :sha "689901ab1a8d", + :sha "a134d4d8058b", :geom "9c6b55699427", :colour "e24b633981cf", - :text "a825fdd852dd"} + :text "8d5580c3f783"} {:ops 4461, :kinds {"BT" 71, From aef07d04adf5e8b639dfc06c57026717f1e68e64 Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Wed, 21 Oct 2026 15:53:19 +0000 Subject: [PATCH 35/40] Use Nimbus Sans, not Vollkorn, for sheet fields Helvetica cannot draw The per-field switch printed those fields in Vollkorn, a serif, beside Helvetica neighbours. Compared side by side, rendered from the sheet: Vollkorn prints, but serif among sans 505,744 bytes Nimbus Sans indistinguishable from Helvetica 388,172 bytes FreeSans close, looser leading 1,104,746 bytes TeX Gyre Heros PDFBox cannot embed CFF outlines Nimbus Sans is URW's metric clone of Helvetica: all 190 Latin-1 advance widths are identical to the AFM's, so a switched field fits exactly as it would have in Helvetica. It covers Polish, Turkish, Czech, Cyrillic and Greek. It has no Vietnamese, which prints `?` on the sheet; the spellbook and cards still print it, in Vollkorn. It lives in resources/fonts, not resources/public. Its licence is AGPL-3.0 with an exception for embedding in a PDF, which does not extend to serving the file. Licence text and provenance (source URL, SHA-256) are alongside it in resources/fonts/README.md. A test pins the width match, so swapping in a lookalike that is not metric-compatible fails rather than silently changing how fields fit. Latin-1 sheets keep Helvetica; no baseline moved. 1123 tests, 7416 assertions green under the default locale, tr_TR and es_ES. Lint 0 errors. --- resources/fonts/NimbusSans-COPYING.txt | 661 +++++++++++++++++++++++ resources/fonts/NimbusSans-LICENSE.txt | 9 + resources/fonts/NimbusSans-Regular.ttf | Bin 0 -> 181776 bytes resources/fonts/README.md | 19 + src/clj/orcpub/pdf.clj | 26 +- src/clj/orcpub/pdf/draw.clj | 15 + test/clj/orcpub/non_latin_print_test.clj | 24 + 7 files changed, 741 insertions(+), 13 deletions(-) create mode 100644 resources/fonts/NimbusSans-COPYING.txt create mode 100644 resources/fonts/NimbusSans-LICENSE.txt create mode 100644 resources/fonts/NimbusSans-Regular.ttf create mode 100644 resources/fonts/README.md diff --git a/resources/fonts/NimbusSans-COPYING.txt b/resources/fonts/NimbusSans-COPYING.txt new file mode 100644 index 000000000..dba13ed2d --- /dev/null +++ b/resources/fonts/NimbusSans-COPYING.txt @@ -0,0 +1,661 @@ + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU Affero General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU AGPL, see +. diff --git a/resources/fonts/NimbusSans-LICENSE.txt b/resources/fonts/NimbusSans-LICENSE.txt new file mode 100644 index 000000000..be2a63ec4 --- /dev/null +++ b/resources/fonts/NimbusSans-LICENSE.txt @@ -0,0 +1,9 @@ +The font and related files in this directory are distributed under the +GNU AFFERO GENERAL PUBLIC LICENSE Version 3 (see the file COPYING), with +the following exemption: + +As a special exception, permission is granted to include these font +programs in a Postscript or PDF file that consists of a document that +contains text to be displayed or printed using this font, regardless +of the conditions or license applying to the document itself. + diff --git a/resources/fonts/NimbusSans-Regular.ttf b/resources/fonts/NimbusSans-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..34945b7a01f5eccf7d750753a52f6b4e834765d9 GIT binary patch literal 181776 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 CZGjvB literal 0 HcmV?d00001 diff --git a/resources/fonts/README.md b/resources/fonts/README.md new file mode 100644 index 000000000..a7df7b823 --- /dev/null +++ b/resources/fonts/README.md @@ -0,0 +1,19 @@ +# Fonts embedded in exported PDFs only + +Not under `public/`: nothing here is served over HTTP. + +| File | Font | Licence | +|---|---|---| +| `NimbusSans-Regular.ttf` | Nimbus Sans, URW++ | AGPL-3.0 with a PDF-embedding exception (`NimbusSans-LICENSE.txt`, `NimbusSans-COPYING.txt`) | + +**Why Nimbus Sans.** It is URW's metric clone of Helvetica: all 190 Latin-1 advance +widths are identical to Helvetica's, so a character-sheet field sized for Helvetica +fits the same way. It fills the fields Helvetica cannot draw (Polish, Turkish, Czech, +Cyrillic, Greek). It has no Vietnamese. + +**Why the exception matters.** It permits embedding the font in a PDF whatever the +PDF's own licence. It does not cover serving the font file, which is why it is not in +`public/`. + +**Source.** `https://github.com/ArtifexSoftware/urw-base35-fonts`, `fonts/NimbusSans-Regular.ttf`, +fetched 2026-10-21, SHA-256 `df5d1ce7b86c2e74974008623612bae136123a35ba7885de8a0721b68258edbc`. diff --git a/src/clj/orcpub/pdf.clj b/src/clj/orcpub/pdf.clj index bed121b99..c8ca814f2 100644 --- a/src/clj/orcpub/pdf.clj +++ b/src/clj/orcpub/pdf.clj @@ -781,23 +781,23 @@ (defn- field-text "`v` as a form field prints it, and the font resource to print it in. A value Helvetica can draw keeps today's path exactly; one it cannot switches that one - field to Vollkorn, where WinAnsi-only Helvetica had printed Łukasz as ?ukasz." + field to Nimbus Sans, where WinAnsi-only Helvetica had printed Łukasz as ?ukasz." [v] - ;; Only when the other font refuses FEWER: a value whose one odd character neither - ;; font has would otherwise change font, and weight, for nothing. - (if (< (draw/refused v draw/vollkorn-covers?) (draw/refused v draw/winansi?)) - [(draw/normalize-text v draw/vollkorn-covers?) "VkR"] + ;; Only when Nimbus refuses FEWER: a value whose one odd character neither font has + ;; would otherwise change font, and weight, for nothing. + (if (< (draw/refused v draw/nimbus-covers?) (draw/refused v draw/winansi?)) + [(draw/normalize-text v draw/nimbus-covers?) "NmS"] [(draw/normalize-text v) "Helv"])) -(defn- vollkorn-field-font! - "Vollkorn Regular in `form`'s default resources as /VkR, added on first use. Embedded - in FULL, not subset: the sheet stays fillable, and a subset holds only the glyphs +(defn- field-font! + "Nimbus Sans in `form`'s default resources as /NmS, added on first use. Embedded in + FULL, not subset: the sheet stays fillable, and a subset holds only the glyphs written now, so editing the field in a viewer would type into missing glyphs." [doc form] (let [res (or (.getDefaultResources form) (PDResources.)) - nm (COSName/getPDFName "VkR")] + nm (COSName/getPDFName "NmS")] (or (.getFont res nm) - (let [f (with-open [in (.openStream (io/resource (:plain draw/vollkorn-files)))] + (let [f (with-open [in (.openStream (io/resource draw/nimbus-file))] (PDType0Font/load doc in false))] (.put res nm f) (.setDefaultResources form res) @@ -852,7 +852,7 @@ (.setNeedAppearances form false) ;; One index rather than a lookup per value: PDAcroForm.getField walks the ;; field tree on every call, which dominated the export's allocation. - (let [vollkorn (delay (vollkorn-field-font! doc form)) + (let [field-font (delay (field-font! doc form)) by-name (persistent! (reduce (fn [m field] (assoc! m (.getFullyQualifiedName field) field)) @@ -876,7 +876,7 @@ (when field (let [text-field? (instance? PDTextField field) [text font-name] (if text-field? (field-text v) [nil "Helv"]) - font (if (= "Helv" font-name) draw/HELVETICA @vollkorn)] + font (if (= "Helv" font-name) draw/HELVETICA @field-font)] (when (and text-field? (not= "Helv" font-name)) (.setDefaultAppearance field (with-da-font (.getDefaultAppearance field) font-name))) ;; font-sizes gated on flatten?: interactive forms keep the template's @@ -1787,7 +1787,7 @@ (.setFields form (java.util.ArrayList. (conj (vec (.getFields form)) field))) (let [[text font-name] (field-text text)] (when (not= "Helv" font-name) - (vollkorn-field-font! doc form) + (field-font! doc form) (.setDefaultAppearance field (with-da-font (.getDefaultAppearance field) font-name))) (.setValue field text)) page)) diff --git a/src/clj/orcpub/pdf/draw.clj b/src/clj/orcpub/pdf/draw.clj index b4694ce9a..09f6a5339 100644 --- a/src/clj/orcpub/pdf/draw.clj +++ b/src/clj/orcpub/pdf/draw.clj @@ -176,6 +176,21 @@ [cp] (every? #(pos? (.getGlyphId % (int cp))) @vollkorn-cmaps)) +(def nimbus-file + "Nimbus Sans, URW's metric clone of Helvetica, for the form fields Helvetica cannot draw. + Under resources/fonts, NOT public/: its licence covers embedding in a PDF, not serving + the file. See resources/fonts/README.md." + "fonts/NimbusSans-Regular.ttf") + +(def ^:private nimbus-cmap + (delay (with-open [in (.openStream (io/resource nimbus-file))] + (.getUnicodeCmapLookup (.parse (TTFParser.) (RandomAccessReadBuffer. in)))))) + +(defn nimbus-covers? + "Whether Nimbus Sans has a glyph for code point `cp`." + [cp] + (pos? (.getGlyphId @nimbus-cmap (int cp)))) + (def ^:private winansi-code-points (delay (into #{} (keep #(some-> (.toUnicode (GlyphList/getAdobeGlyphList) %) (.codePointAt 0))) diff --git a/test/clj/orcpub/non_latin_print_test.clj b/test/clj/orcpub/non_latin_print_test.clj index eab1499c6..e041b3d1e 100644 --- a/test/clj/orcpub/non_latin_print_test.clj +++ b/test/clj/orcpub/non_latin_print_test.clj @@ -39,6 +39,30 @@ (pdf/write-fields! doc {:character-name wide} false {}) (is (= wide (.getValueAsString (field-of doc "character-name")))))) +(deftest a-switched-field-uses-the-helvetica-clone + ;; Nimbus Sans, not Vollkorn: a serif among sans fields stood out, and Nimbus's widths + ;; are Helvetica's, so the field looks and fits like its neighbours. + (with-open [doc (template 1)] + (pdf/write-fields! doc {:character-name wide} false {}) + (let [f (field-of doc "character-name") + dr (.getDefaultResources (.getAcroForm (.getDocumentCatalog doc)))] + (is (str/starts-with? (.getDefaultAppearance f) "/NmS")) + (is (str/includes? (.getName (.getFont dr (org.apache.pdfbox.cos.COSName/getPDFName "NmS"))) + "NimbusSans"))))) + +(deftest nimbus-sans-is-helvetica-width + ;; The reason it was chosen, pinned: replacing it with a "lookalike" that is not + ;; metric-compatible would change how every switched field fits. + (with-open [doc (PDDocument.)] + (let [nimbus (with-open [in (.openStream (io/resource draw/nimbus-file))] + (org.apache.pdfbox.pdmodel.font.PDType0Font/load doc in)) + off (for [cp (concat (range 0x20 0x7F) (range 0xA1 0x100)) + :let [c (str (char cp)) + d (Math/abs (- (.getStringWidth draw/HELVETICA c) (.getStringWidth nimbus c)))] + :when (> d 0.5)] + (str (format "U+%04X" cp) " off by " (Math/round (double d))))] + (is (empty? off) (str/join ", " off))))) + (deftest a-latin-1-sheet-is-unchanged ;; The switch is per field and only when Helvetica would have printed `?`, so every ;; export that works today keeps its font, its appearance streams and its file size. From e08522e43fd1b475b491a9318cf05f1b056d3d74 Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Wed, 21 Oct 2026 20:55:09 +0000 Subject: [PATCH 36/40] Guard degenerate SVG arcs; fold CLI emails without the machine locale MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two findings from review, both measured before fixing. svg-path-ops passed every arc to arc-points, which divides by the radius and by the chord. A zero radius or an arc ending where it starts came back as 6 NaN ops of 7, written straight into the PDF content stream. SVG 1.1 appendix F.6.2 says: a zero radius is a straight line to the endpoint, and an arc to its own start draws nothing. Both handled before sampling. No vendored icon has one, but the function takes arbitrary path data. dev/user.clj create-user! and email-exists? lowercased email with str/lower-case. They serve the CLI and REPL, which never start the server, so pin-locale! never runs there: on a Turkish machine IVAN@x.com would be stored and looked up as ıvan@x.com. Now ascii-lower-case, and dev/user.clj joins identity-files, so the guard covers it. One new lint warning, accepted: dev/style_gallery.clj re-requires orcpub.common, now also required by user.clj, the namespace the script runs in. It re-requires orcpub.pdf and clojure.java.io for the same reason, so it still runs without the dev profile. Removing the line would break that to save a warning. 1124 tests, 7421 assertions green under the default locale, tr_TR and es_ES. Lint 0 errors. No baseline moved. --- dev/user.clj | 7 +++++-- src/clj/orcpub/pdf/draw.clj | 18 +++++++++++++----- test/clj/orcpub/identity_locale_test.clj | 5 ++++- test/clj/orcpub/svg_path_test.clj | 18 ++++++++++++++++++ 4 files changed, 40 insertions(+), 8 deletions(-) diff --git a/dev/user.clj b/dev/user.clj index 756b35d7a..21d3a3154 100644 --- a/dev/user.clj +++ b/dev/user.clj @@ -6,6 +6,7 @@ [buddy.hashers :as hashers] [orcpub.routes :as r] [orcpub.system :as s] + [orcpub.common :as common] [orcpub.server :as server] [orcpub.db.schema :as schema] [orcpub.config :as config]) @@ -187,7 +188,7 @@ (defn email-exists? [db email] (boolean (datomic/q '[:find ?e . :in $ ?email :where [?e :orcpub.user/email ?email]] - db (str/lower-case email)))) + db (common/ascii-lower-case email)))) (defn username-exists? [db username] (boolean (datomic/q '[:find ?e . :in $ ?username :where [?e :orcpub.user/username ?username]] @@ -203,7 +204,9 @@ lein with-profile init-db run -m user create-user bob bob@example.com pass verify" [conn {:keys [username email password verify? send-updates?] :or {verify? false send-updates? false}}] (let [db (datomic/db conn) - email (when email (str/lower-case (str/trim email))) + ;; ascii, not str/lower-case: the CLI never starts the server, so pin-locale! + ;; has not run, and a Turkish machine would store IVAN@ as ıvan@. + email (when email (common/ascii-lower-case (str/trim email))) username (when username (str/trim username))] (cond (and email (email-exists? db email)) diff --git a/src/clj/orcpub/pdf/draw.clj b/src/clj/orcpub/pdf/draw.clj index 09f6a5339..bbf22c30e 100644 --- a/src/clj/orcpub/pdf/draw.clj +++ b/src/clj/orcpub/pdf/draw.clj @@ -537,11 +537,19 @@ (recur (drop 2 ts) cmd x y sx sy nil [qx qy] (conj out [:curve (+ cx (* 2/3 (- qx cx))) (+ cy (* 2/3 (- qy cy))) (+ x (* 2/3 (- qx x))) (+ y (* 2/3 (- qy y))) x y]))) - :A (let [x (ax (n 5)) y (ay (n 6)) - pts (arc-points cx cy (n 0) (n 1) (n 2) - (not (zero? (n 3))) (not (zero? (n 4))) x y)] - (recur (drop 7 ts) cmd x y sx sy nil nil - (into out (map (fn [[px py]] [:line px py]) pts)))) + ;; SVG 1.1 F.6.2: an arc to its own start draws nothing, and a zero radius is a + ;; straight line. arc-points divides by both, so without this they came out NaN. + :A (let [x (ax (n 5)) y (ay (n 6))] + (cond + (and (== x cx) (== y cy)) + (recur (drop 7 ts) cmd x y sx sy nil nil out) + (or (zero? (n 0)) (zero? (n 1))) + (recur (drop 7 ts) cmd x y sx sy nil nil (conj out [:line x y])) + :else + (let [pts (arc-points cx cy (n 0) (n 1) (n 2) + (not (zero? (n 3))) (not (zero? (n 4))) x y)] + (recur (drop 7 ts) cmd x y sx sy nil nil + (into out (map (fn [[px py]] [:line px py]) pts)))))) :Z (recur ts cmd sx sy sx sy nil nil (conj out [:close])) (recur more cmd cx cy sx sy prev-c prev-q out)))))) diff --git a/test/clj/orcpub/identity_locale_test.clj b/test/clj/orcpub/identity_locale_test.clj index 9de61c975..e25d309a3 100644 --- a/test/clj/orcpub/identity_locale_test.clj +++ b/test/clj/orcpub/identity_locale_test.clj @@ -16,7 +16,10 @@ tree: content and prose elsewhere still case-fold with the machine's locale, which is an open audit rather than a claim that it is correct." ["src/clj/orcpub/routes.clj" - "src/clj/orcpub/artist_accounts.clj"]) + "src/clj/orcpub/artist_accounts.clj" + ;; create-user! and email-exists?: the CLI and REPL path, which never starts the + ;; server and so never reaches pin-locale!. + "dev/user.clj"]) (def ^:private bare-fold-re #"\((?:s|str|string|clojure\.string)/(?:lower-case|upper-case|capitalize)\s") diff --git a/test/clj/orcpub/svg_path_test.clj b/test/clj/orcpub/svg_path_test.clj index e3a3c4aa2..d681fa4ba 100644 --- a/test/clj/orcpub/svg_path_test.clj +++ b/test/clj/orcpub/svg_path_test.clj @@ -114,3 +114,21 @@ (is (seq svgs) "the icons should be on the classpath") (is (empty? broken) (str "unparsed: " (mapv #(.getName %) broken))))) + +(defn- finite? [ops] + (every? #(or (not (number? %)) (Double/isFinite %)) (mapcat rest ops))) + +(deftest degenerate-arcs-follow-the-svg-rules + ;; svg-path-ops takes arbitrary path data, and arc-points divided by a zero radius or a + ;; zero chord: measured, 6 of 7 ops came back NaN, straight into the PDF. SVG 1.1 + ;; appendix F.6.2: a zero radius is a line to the endpoint; an endpoint equal to the + ;; current point draws nothing. + (testing "a zero radius draws a straight line" + (is (= [[:move 10.0 10.0] [:line 20.0 10.0]] (draw/svg-path-ops "M10 10 A0 5 0 0 1 20 10"))) + (is (= [[:move 10.0 10.0] [:line 20.0 10.0]] (draw/svg-path-ops "M10 10 A5 0 0 0 1 20 10")))) + (testing "an arc to the point it starts from draws nothing" + (is (= [[:move 10.0 10.0]] (draw/svg-path-ops "M10 10 A5 5 0 0 1 10 10")))) + (testing "and an ordinary arc is still sampled, finitely" + (let [ops (draw/svg-path-ops "M10 10 A5 5 0 0 1 20 10")] + (is (< 2 (count ops))) + (is (finite? ops))))) From c843de2c2862855e8d465918e008fe9f18eebf66 Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Wed, 21 Oct 2026 21:40:57 +0000 Subject: [PATCH 37/40] Set every sheet field in Nimbus Sans; keep the templates' own sizes The sheet mixed two fonts: Helvetica for fields it could draw, Nimbus Sans for the rest. That split existed only to keep Latin-1 exports byte-identical. It is not worth two fonts on one form, so the switch is reversed. Every text field, filled or blank, names /NmS -- a blank field typed into in a viewer gets Nimbus's glyphs too. Embedding also ends the viewer lottery: standard-14 Helvetica is never embedded, so each viewer drew its own substitute. Cost, measured on a Latin-only sheet: 290,018 -> 393,146 bytes, +101 KB, the full embed a fillable form needs. The trap, found by an existing test. PDVariableText.setDefaultAppearance copies the field's DA over every kid widget's own DA (PDFBOX-5797). Style 1 sets fixed sizes on 25 widgets -- 24 at 8pt, one at 10pt -- and swapping the font through it turned them into auto-size: a save box holding +7 went from 8pt to 4.89pt. The previous commit had the same fault for any non-Latin value in one of those 25. use-font! now rewrites each dictionary's DA directly, changing only the font name. 112 merged field/widget dictionaries that only inherited a DA now carry their own, still auto-size. The sheet baselines could not catch this: they pin page artwork and widget rectangles, not field appearances. A new test pins every widget's template size. drawn-text in pdf_test read appearance bytes as text. With a Type0 font those are glyph codes, so a drawn "4" read as nothing; it now decodes through the font. The refused-count helper is gone with the switch it served. 1125 tests, 7425 assertions green under the default locale, tr_TR and es_ES. Lint 0 errors. No baseline moved. --- CHANGELOG.md | 1 + src/clj/orcpub/pdf.clj | 66 +++++++++++++----------- src/clj/orcpub/pdf/draw.clj | 5 -- test/clj/orcpub/non_latin_print_test.clj | 41 ++++++++++++--- test/clj/orcpub/pdf_test.clj | 30 ++++++++--- 5 files changed, 95 insertions(+), 48 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5ac339412..57e0d9112 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -96,6 +96,7 @@ Homebrew can be moved, switched off and repaired instead of lost, and a characte - **Characters:** the builder's tab bar wraps on narrow screens. - **Characters:** opening a character whose choices no longer apply sets them aside and lists them in a notice; the saved copy changes only when you save. - **Printing:** a character portrait whose host is briefly unreachable is fetched a second time before the export gives up on it. +- **Printing:** the character sheet's fields are set in an embedded font with Helvetica's exact widths, so a sheet looks the same in every PDF viewer instead of in whatever font the viewer substitutes. ### Fixed diff --git a/src/clj/orcpub/pdf.clj b/src/clj/orcpub/pdf.clj index c8ca814f2..055435ed2 100644 --- a/src/clj/orcpub/pdf.clj +++ b/src/clj/orcpub/pdf.clj @@ -2,9 +2,9 @@ "Fills the AcroForm character sheet templates in resources/. Cards live in orcpub.pdf.cards, shared drawing in orcpub.pdf.draw. - Text fields auto-size (`/Helv 0 Tf`): PDFBox shrinks text to 4pt, then clips; - `fit-text` splits text at `min-font-size` instead. Fields sharing a name share - one value, so repeated pages need unique names." + Text fields are set in Nimbus Sans; an auto-sized one (`0 Tf`) shrinks to 4pt, then + clips, so `fit-text` splits text at `min-font-size` instead. Fields sharing a name + share one value, so repeated pages need unique names." (:require [clojure.string :as s] [clojure.stacktrace :as strace] [clojure.java.io :as io] @@ -779,15 +779,10 @@ (Double/parseDouble (second m)))))))) (defn- field-text - "`v` as a form field prints it, and the font resource to print it in. A value - Helvetica can draw keeps today's path exactly; one it cannot switches that one - field to Nimbus Sans, where WinAnsi-only Helvetica had printed Łukasz as ?ukasz." + "`v` as a form field prints it: whatever Nimbus Sans, the form's one font, can draw. + Helvetica, the templates' own, is WinAnsi-only and printed Łukasz as ?ukasz." [v] - ;; Only when Nimbus refuses FEWER: a value whose one odd character neither font has - ;; would otherwise change font, and weight, for nothing. - (if (< (draw/refused v draw/nimbus-covers?) (draw/refused v draw/winansi?)) - [(draw/normalize-text v draw/nimbus-covers?) "NmS"] - [(draw/normalize-text v) "Helv"])) + (draw/normalize-text v draw/nimbus-covers?)) (defn- field-font! "Nimbus Sans in `form`'s default resources as /NmS, added on first use. Embedded in @@ -808,6 +803,19 @@ [da font-name] (s/replace (or da "/Helv 0 Tf 0 g") #"/[^\s/]+(\s+[\d.]+\s+Tf)" (str "/" font-name "$1"))) +(defn- use-font! + "Points `field` and each of its widgets at font resource `font-name`, each keeping its + own size. Written to the dictionaries directly: setDefaultAppearance copies the + FIELD's DA over every kid widget's (PDFBOX-5797), and that wiped the templates' + fixed sizes -- 25 widgets in style 1 -- turning an 8pt save box into a 4.89pt one." + [field font-name] + (let [own (.getCOSObject field)] + (.setString own COSName/DA (with-da-font (.getDefaultAppearance field) font-name)) + (doseq [w (.getWidgets field) + :let [wd (.getCOSObject w) da (.getString wd COSName/DA)] + :when (and da (not (identical? wd own)))] + (.setString wd COSName/DA (with-da-font da font-name))))) + (defn- shrink-single-line-to-fit! "Rewrites a single-line field at a smaller size when its value is wider than its box, and returns the size used, or nil when nothing was needed. @@ -829,7 +837,7 @@ (defn write-fields! "Populates the AcroForm in `doc` from `fields` {field-name-keyword value}: checkboxes - take truthy/falsey, text is normalized to WinAnsi. Truthy `flatten?` bakes values into + take truthy/falsey, text is set in Nimbus Sans. Truthy `flatten?` bakes values into page content and removes the form; `font-sizes` {field-name-keyword pt} applies ONLY then. Bakes real appearance streams, as Firefox's print path ignores NeedAppearances. Returns the sorted names the template has no field for; they are logged and dropped, @@ -838,10 +846,9 @@ (let [catalog (.getDocumentCatalog doc) form (.getAcroForm catalog) res (or (.getDefaultResources form) (PDResources.))] - ;; The templates' field default appearances reference "/Helv"; ensure it's in - ;; the form default resources so PDFBox can GENERATE appearance streams (missing - ;; it -> generation silently fails -> blank in viewers/print paths that don't - ;; honor NeedAppearances). + ;; /Helv in the form resources, or appearance generation fails silently and the + ;; field prints blank. Text fields move to /NmS below; the form's own /DA and + ;; non-text fields can still name /Helv. (when (nil? (.getFont res (COSName/getPDFName "Helv"))) ;; Fresh instance (not the shared module-level HELVETICA): this COS object is ;; added to THIS document's resource tree, and sharing one across documents @@ -852,7 +859,7 @@ (.setNeedAppearances form false) ;; One index rather than a lookup per value: PDAcroForm.getField walks the ;; field tree on every call, which dominated the export's allocation. - (let [field-font (delay (field-font! doc form)) + (let [field-font (field-font! doc form) by-name (persistent! (reduce (fn [m field] (assoc! m (.getFullyQualifiedName field) field)) @@ -870,20 +877,21 @@ (when (seq unplaceable) (println (format "pdf/write-fields!: %d value(s) had no field in this template and were dropped: %s" (count unplaceable) (s/join ", " unplaceable)))) + ;; Every text field, filled or blank: a player typing into a blank one in their + ;; viewer gets Nimbus's glyphs, not WinAnsi-only Helvetica's. + (doseq [f (vals by-name) :when (instance? PDTextField f)] + (use-font! f "NmS")) (doseq [[k v] fields] (try (let [field (get by-name (name k))] (when field (let [text-field? (instance? PDTextField field) - [text font-name] (if text-field? (field-text v) [nil "Helv"]) - font (if (= "Helv" font-name) draw/HELVETICA @field-font)] - (when (and text-field? (not= "Helv" font-name)) - (.setDefaultAppearance field (with-da-font (.getDefaultAppearance field) font-name))) + text (when text-field? (field-text v))] ;; font-sizes gated on flatten?: interactive forms keep the template's - ;; `/Helv 0 Tf` auto-sizing; flattening bakes a concrete size, so we - ;; rewrite the DA to the caller's size first. + ;; `0 Tf` auto-sizing; flattening bakes a concrete size, so we rewrite + ;; the DA to the caller's size first. (when (and flatten? (font-sizes k) text-field?) - (.setDefaultAppearance field (str "/" font-name " " (font-sizes k) " Tf 0 0 0 rg"))) + (.setDefaultAppearance field (str "/NmS " (font-sizes k) " Tf 0 0 0 rg"))) (.setValue field (cond @@ -897,7 +905,7 @@ (not (.isMultiline field)) (not (s/blank? text))) (doseq [widget (.getWidgets field)] - (shrink-single-line-to-fit! field widget text font font-name)))))) + (shrink-single-line-to-fit! field widget text field-font "NmS")))))) (catch Exception e (prn "failed writing field: " k v (strace/print-stack-trace e))))) (when flatten? (fix-widget-page-refs! doc) @@ -1785,11 +1793,9 @@ (.setWidgets field (java.util.ArrayList. [widget])) (.setAnnotations page (java.util.ArrayList. [widget])) (.setFields form (java.util.ArrayList. (conj (vec (.getFields form)) field))) - (let [[text font-name] (field-text text)] - (when (not= "Helv" font-name) - (field-font! doc form) - (.setDefaultAppearance field (with-da-font (.getDefaultAppearance field) font-name))) - (.setValue field text)) + (field-font! doc form) + (use-font! field "NmS") + (.setValue field (field-text text)) page)) (defn spill-overflow! diff --git a/src/clj/orcpub/pdf/draw.clj b/src/clj/orcpub/pdf/draw.clj index bbf22c30e..f9d83d937 100644 --- a/src/clj/orcpub/pdf/draw.clj +++ b/src/clj/orcpub/pdf/draw.clj @@ -224,11 +224,6 @@ (ascii-fallback %) (ascii-fallback %) :else "?")))))) -(defn refused - "How many characters of `s` normalize-text would not print as themselves under `keep?`." - [s keep?] - (count (filter #(and (> (int %) 0xFF) (not (keep? (int %)))) (str s)))) - (defn font-safe "`text` with whatever `font` has no glyph for made drawable: characters below 0x20 dropped, anything else replaced by `?`. Returns `text` itself when the whole string diff --git a/test/clj/orcpub/non_latin_print_test.clj b/test/clj/orcpub/non_latin_print_test.clj index e041b3d1e..c32e28945 100644 --- a/test/clj/orcpub/non_latin_print_test.clj +++ b/test/clj/orcpub/non_latin_print_test.clj @@ -50,6 +50,28 @@ (is (str/includes? (.getName (.getFont dr (org.apache.pdfbox.cos.COSName/getPDFName "NmS"))) "NimbusSans"))))) +(deftest the-templates-own-sizes-survive-the-font-swap + ;; 25 widgets in style 1 carry their own DA with a fixed size (24 at 8pt, one at 10). + ;; PDVariableText.setDefaultAppearance copies the FIELD's DA over every kid widget's + ;; (PDFBOX-5797), so swapping the font through it turned those into auto-size: a save + ;; box holding +7 printed at 4.89pt instead of 8. + (let [sizes (fn [doc] + (into {} (for [f (iterator-seq (.iterator (.getFieldTree (.getAcroForm (.getDocumentCatalog doc))))) + :when (instance? org.apache.pdfbox.pdmodel.interactive.form.PDTextField f) + [i w] (map-indexed vector (.getWidgets f)) + :let [da (.getString (.getCOSObject w) org.apache.pdfbox.cos.COSName/DA)] + :when da] + [[(.getFullyQualifiedName f) i] (second (re-find #"/\S+ ([\d.]+) Tf" da))])))] + (with-open [before (template 1) after (template 1)] + (pdf/write-fields! after {:int-save "+7" :character-name wide} false {}) + (let [b (sizes before) a (sizes after) + fixed (filter (fn [[_ sz]] (not= "0" sz)) b)] + (is (= 25 (count fixed)) "the premise: what the template sets") + (is (= b (select-keys a (keys b))) "every widget keeps the size it came with") + ;; Merged field/widget dictionaries that only INHERITED a DA now carry their + ;; own, naming Nimbus. Still auto-size, which is what they inherited. + (is (every? #{"0"} (vals (apply dissoc a (keys b))))))))) + (deftest nimbus-sans-is-helvetica-width ;; The reason it was chosen, pinned: replacing it with a "lookalike" that is not ;; metric-compatible would change how every switched field fits. @@ -63,14 +85,21 @@ (str (format "U+%04X" cp) " off by " (Math/round (double d))))] (is (empty? off) (str/join ", " off))))) -(deftest a-latin-1-sheet-is-unchanged - ;; The switch is per field and only when Helvetica would have printed `?`, so every - ;; export that works today keeps its font, its appearance streams and its file size. +(deftest every-sheet-field-uses-nimbus-sans + ;; One font for the whole form, not Helvetica with Nimbus where Helvetica fails. The + ;; widths are identical either way; embedding also means every viewer draws the same + ;; glyphs, where standard-14 Helvetica is whatever lookalike the viewer substitutes. + ;; BLANK fields too: a player filling the PDF in their viewer gets Nimbus's glyphs. (with-open [doc (template 1)] (pdf/write-fields! doc {:character-name latin} false {}) - (let [f (field-of doc "character-name")] - (is (= latin (.getValueAsString f))) - (is (str/starts-with? (.getDefaultAppearance f) "/Helv"))))) + (let [form (.getAcroForm (.getDocumentCatalog doc)) + texts (filter #(instance? org.apache.pdfbox.pdmodel.interactive.form.PDTextField %) + (iterator-seq (.iterator (.getFieldTree form)))) + off (remove #(str/starts-with? (str (.getDefaultAppearance %)) "/NmS") texts)] + (is (= latin (.getValueAsString (field-of doc "character-name")))) + (is (< 100 (count texts)) "the guard reaches the whole form, not one field") + (is (empty? off) (str (count off) " field(s) not on Nimbus, e.g. " + (some-> (first off) .getFullyQualifiedName)))))) (deftest a-flattened-sheet-draws-a-non-latin-value ;; End to end: the value has to survive into the page content, not just the field. diff --git a/test/clj/orcpub/pdf_test.clj b/test/clj/orcpub/pdf_test.clj index 8e1b8c350..179e44229 100644 --- a/test/clj/orcpub/pdf_test.clj +++ b/test/clj/orcpub/pdf_test.clj @@ -9,7 +9,9 @@ [orcpub.pdf.cards :as cards] [orcpub.dnd.e5.spell-packing :as packing]) (:import (org.apache.pdfbox Loader) - (org.apache.pdfbox.cos COSName) + (org.apache.pdfbox.cos COSName COSString) + (org.apache.pdfbox.pdfparser PDFStreamParser) + (org.apache.pdfbox.contentstream.operator Operator) (org.apache.pdfbox.pdmodel PDDocument PDPage PDPageContentStream PDResources) (org.apache.pdfbox.pdmodel.common PDRectangle) (org.apache.pdfbox.pdmodel.font PDType1Font Standard14Fonts$FontName) @@ -71,8 +73,7 @@ (->> (all-fields form) (filter #(instance? PDTextField %)) first))] (pdf/write-fields! doc {(keyword fname) "“René” — 日"} false {}) (is (= "“René” — ?" (.getValueAsString (.getField form fname))) - "punctuation kept, CJK -> '?', and the field stays on Helvetica: Vollkorn - cannot draw the CJK either, so switching would gain nothing"))))) + "punctuation kept, CJK -> '?': Nimbus Sans has no CJK either"))))) (deftest make-image-loader-embeds-once (testing "the per-document loader memoizes: the same icon path returns the SAME @@ -558,12 +559,27 @@ (is (nil? (pdf/spell-level-numeral-box doc 12 1)))))))) (defn- drawn-text - "The strings a field's generated appearance actually shows." + "The strings a field's generated appearance actually shows, decoded through the font + it sets. The form is in embedded Nimbus Sans, a Type0 font, so a shown string's bytes + are glyph codes: read as text, a drawn \"4\" looked like nothing was drawn." [form field-name] (let [widget (first (.getWidgets (.getField form field-name))) - stream (.getAppearanceStream (.getNormalAppearance (.getAppearance widget)))] - (with-open [in (.createInputStream (.getCOSObject stream))] - (map second (re-seq #"\(([^)]*)\)\s*Tj" (String. (.readAllBytes in) "ISO-8859-1")))))) + stream (.getAppearanceStream (.getNormalAppearance (.getAppearance widget))) + res (or (.getResources stream) (.getDefaultResources form))] + (loop [[t & more] (seq (.parse (PDFStreamParser. stream))), args [], font nil, out []] + (cond + (nil? t) out + (not (instance? Operator t)) (recur more (conj args t) font out) + (= "Tf" (.getName ^Operator t)) + (recur more [] (or (.getFont res (first args)) (.getFont (.getDefaultResources form) (first args))) out) + (and (= "Tj" (.getName ^Operator t)) font (instance? COSString (last args))) + (let [in (java.io.ByteArrayInputStream. (.getBytes ^COSString (last args))) + text (apply str (loop [acc []] + (if (pos? (.available in)) + (recur (conj acc (.toUnicode font (.readCode font in)))) + acc)))] + (recur more [] font (conj out text))) + :else (recur more [] font out))))) (deftest slot-totals-and-expended-reach-the-page (testing "SLOTS TOTAL is spell-slots-- and SLOTS EXPENDED is a From e6958cc50a23758b8abcb1f4032f6e4c8c2ac676 Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Thu, 22 Oct 2026 07:47:56 +0000 Subject: [PATCH 38/40] Pin the fonts the export's drawing uses Characterization: the export's own drawing (headings, annotations, relabels, site line, notice page, cards) uses three Standard 14 Helvetica faces, none embedded. Read from a real export through generate-character-pdf. --- test/clj/orcpub/drawn_fonts_test.clj | 61 ++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 test/clj/orcpub/drawn_fonts_test.clj diff --git a/test/clj/orcpub/drawn_fonts_test.clj b/test/clj/orcpub/drawn_fonts_test.clj new file mode 100644 index 000000000..8f255e75f --- /dev/null +++ b/test/clj/orcpub/drawn_fonts_test.clj @@ -0,0 +1,61 @@ +(ns orcpub.drawn-fonts-test + "Which fonts the export's own drawing uses, read from a real export's pages. + + A Standard 14 font is not embedded: the viewer substitutes its own, and it is + WinAnsi-only, so a heading of Łukasz's class printed as ?ukasz." + (:require [clojure.test :refer [deftest is]] + [clojure.string :as str] + [orcpub.routes :as routes] + [orcpub.dnd.e5.spells :as spells] + [orcpub.dnd.e5.magic-items :as magic-items]) + (:import (org.apache.pdfbox Loader) + (org.apache.pdfbox.pdmodel.font PDType0Font))) + +(def ^:private request + "Every drawn path at once: spell annotations, a relabel, column headings, the site + line, a notice (an unknown field), the spellbook, spell cards, and item cards + with charges and attunement." + {:character-name "Łukasz" + :no-such-field "dropped, so the notice page prints" + :print-character-sheet-style? 1 + :spellcasting-class-1 "Wizard" + :spells-1-1-1 "Bless" + :spells-1-2-1 "Identify" + :print-spell-annotations? true + :spell-relabels [{:section 1 :box 3 :label "4"}] + :spell-headings [{:box 0 :section 1 :class "Czarodziej Łódź" :ability "INT" :dc "15" :attack "+7"} + {:box 2 :section 1 :class "Wizard" :cantrips? false}] + :spells-known {:wizard (vec (for [k (take 6 (keys spells/spell-map))] + {:key k :class "Wizard"}))} + :spell-save-dcs {"Wizard" 15} + :spell-attack-mods {"Wizard" 7} + :print-spell-cards? true + :spellbook {:classes [{:class "Wizard" :level 5 :ability "INT" :dc 15 :attack 7}]} + :magic-items-known (vec (take 3 (filter :magic-item/attunement magic-items/magic-items))) + :print-magic-item-cards? true}) + +(defn- export + "`request` through generate-character-pdf, reloaded from the response bytes." + [] + (let [resp (#'routes/generate-character-pdf {:form-params {:body (pr-str request)}})] + (Loader/loadPDF (.readAllBytes (:body resp))))) + +(defn- page-fonts + "Base name of every font a page's own resources name, subset prefix stripped, with + whether it is embedded. Page resources only: the AcroForm's /Helv is the form's + fallback for non-text fields, not drawing." + [doc] + (set (for [page (.getPages doc) + :let [res (.getResources page)] + :when res + n (.getFontNames res) + :let [f (.getFont res n)]] + [(str/replace (.getName f) #"^[A-Z]{6}\+" "") + (or (instance? PDType0Font f) (.isEmbedded f))]))) + +(deftest the-exports-drawing-embeds-every-font-it-uses + (with-open [doc (export)] + (let [fonts (page-fonts doc)] + (is (= #{"Helvetica" "Helvetica-Bold" "Helvetica-BoldOblique"} + (set (map first (remove second fonts)))) + "not embedded: the viewer's own Helvetica, WinAnsi-only")))) From 26aae0bb3e85b0a8c7aa39d032a084bde3515a0f Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Thu, 22 Oct 2026 08:57:13 +0000 Subject: [PATCH 39/40] Set all drawn PDF text in embedded Nimbus Sans The export's own drawing (spell-column headings, relabelled numerals, annotations, site line, notice page, card captions) used three Standard 14 Helvetica faces, none embedded: the viewer substituted its own, and they are WinAnsi-only, so a heading for "Czarodziej Lodz" with Polish letters printed "Czarodziej ?od?". Now Nimbus Sans Regular, Bold and Bold Italic (URW, OFL- compatible AGPL + PDF-embedding exception), the face the form fields already use. - draw/load-sans: per-document map of lazily embedded faces; load-fonts includes it. The export makes one and passes it everywhere. - Each face's 224 WinAnsi widths equal its Helvetica's (pinned by nimbus-sans-is-helvetica-width), so no position moved: the card and sheet baselines differ only in text strings (564+564+63 lines) and text hashes. - fit-text measures in the fields' own font; it measured Helvetica, which counts L-stroke as "?". - site-line-pages scans for artwork site lines before anything is drawn. Scanning after drawing read not-yet-embedded fonts and logged a fallback warning on style 4 exports. A saved export now renders with none. - Tests that read or render text use a saved copy (pdf-ops/reloaded). Size: plain sheet +3.2 KB (0.9%), sheet with cards +15.2 KB (3.5%). --- CHANGELOG.md | 2 +- dev/scan_site_line.clj | 3 +- dev/stress_packing.clj | 13 +- dev/stress_spell_sheets.clj | 2 +- dev/style_gallery.clj | 7 +- dev/svg_icon_proof.clj | 3 +- resources/fonts/NimbusSans-Bold.ttf | Bin 0 -> 158732 bytes resources/fonts/NimbusSans-BoldItalic.ttf | Bin 0 -> 190792 bytes resources/fonts/README.md | 27 +- src/clj/orcpub/pdf.clj | 133 +-- src/clj/orcpub/pdf/cards.clj | 42 +- src/clj/orcpub/pdf/draw.clj | 82 +- src/clj/orcpub/routes.clj | 206 ++-- test/card-geometry-a4-baseline.edn | 1128 ++++++++++----------- test/card-geometry-baseline.edn | 1128 ++++++++++----------- test/card-ornament-baseline.edn | 126 +-- test/clj/orcpub/card_export_test.clj | 8 +- test/clj/orcpub/drawn_fonts_test.clj | 2 +- test/clj/orcpub/non_latin_print_test.clj | 27 +- test/clj/orcpub/notice_page_test.clj | 13 +- test/clj/orcpub/pdf_ops.clj | 10 + test/clj/orcpub/pdf_test.clj | 85 +- test/clj/orcpub/sheet_geometry_test.clj | 17 +- test/clj/orcpub/winansi_test.clj | 5 +- test/sheet-geometry-baseline.edn | 72 +- 25 files changed, 1625 insertions(+), 1516 deletions(-) create mode 100644 resources/fonts/NimbusSans-Bold.ttf create mode 100644 resources/fonts/NimbusSans-BoldItalic.ttf diff --git a/CHANGELOG.md b/CHANGELOG.md index 57e0d9112..2f6ddb4a8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -96,7 +96,7 @@ Homebrew can be moved, switched off and repaired instead of lost, and a characte - **Characters:** the builder's tab bar wraps on narrow screens. - **Characters:** opening a character whose choices no longer apply sets them aside and lists them in a notice; the saved copy changes only when you save. - **Printing:** a character portrait whose host is briefly unreachable is fetched a second time before the export gives up on it. -- **Printing:** the character sheet's fields are set in an embedded font with Helvetica's exact widths, so a sheet looks the same in every PDF viewer instead of in whatever font the viewer substitutes. +- **Printing:** every sans-serif line in an export -- sheet fields, spell-column headings, the site line, the notice page and card captions -- is set in one embedded font with Helvetica's exact widths, so it looks the same in every PDF viewer and prints names such as Łukasz. ### Fixed diff --git a/dev/scan_site_line.clj b/dev/scan_site_line.clj index 697e47485..0699e8fa6 100644 --- a/dev/scan_site_line.clj +++ b/dev/scan_site_line.clj @@ -20,12 +20,13 @@ '[orcpub.pdf.draw :as draw] '[clojure.java.io :as io]) (import '[org.apache.pdfbox Loader] + '[org.apache.pdfbox.pdmodel PDDocument] '[org.apache.pdfbox.rendering PDFRenderer] '[java.awt.image BufferedImage] '[java.io ByteArrayOutputStream]) (def dpi 150.0) -(def stamp-width (draw/string-width draw/site-stamp draw/HELVETICA 6)) +(def stamp-width (draw/string-width draw/site-stamp (draw/sans (draw/load-sans (PDDocument.)) :plain) 6)) (def stamp-height "6pt of cap height plus room for a descender, in inches." (/ 8.0 72)) diff --git a/dev/stress_packing.clj b/dev/stress_packing.clj index 5804070a8..1dbf4b0a4 100644 --- a/dev/stress_packing.clj +++ b/dev/stress_packing.clj @@ -25,7 +25,8 @@ [orcpub.dnd.e5.spell-annotations :as ann] [orcpub.dnd.e5.spell-packing :as packing] [orcpub.dnd.e5.spells :as spells] - [orcpub.pdf :as pdf]) + [orcpub.pdf :as pdf] + [orcpub.pdf.draw :as draw]) (:import [java.io File FileOutputStream] [javax.imageio ImageIO] [org.apache.pdfbox Loader] @@ -103,14 +104,16 @@ {:keys [fields relabels headings pages unplaced]} (packing/packed-fields style classes)] (with-open [doc (Loader/loadPDF (.readAllBytes (.openStream (io/resource file))))] (pdf/grow-spell-sections! doc pages :all) - (let [[ok refused] (pdf/apply-relabel-instructions! doc relabels pages style)] + (let [sans (draw/load-sans doc) + printed (pdf/site-line-pages doc (boolean prints-site-line?)) + [ok refused] (pdf/apply-relabel-instructions! doc sans relabels pages style)] (pdf/reserve-annotation-columns! doc) (let [dropped (pdf/write-fields! doc fields false {})] - (pdf/annotate-spell-rows! doc #(some-> (get spells/spell-map (common/name-to-kw %)) + (pdf/annotate-spell-rows! doc sans #(some-> (get spells/spell-map (common/name-to-kw %)) ann/annotation)) (doseq [{:keys [class box section] :as h} headings] - (pdf/draw-column-heading! doc style box (or section 1) class h)) - (pdf/stamp-site-line! doc site-line (boolean prints-site-line?)) + (pdf/draw-column-heading! doc sans style box (or section 1) class h)) + (pdf/stamp-site-line! doc sans site-line printed) (when out (with-open [o (FileOutputStream. (File. (str out ".pdf")))] (.save doc o)) (let [idx (.indexOf (vec (.getPages doc)) diff --git a/dev/stress_spell_sheets.clj b/dev/stress_spell_sheets.clj index 850be0869..271d4fd7d 100644 --- a/dev/stress_spell_sheets.clj +++ b/dev/stress_spell_sheets.clj @@ -78,7 +78,7 @@ ;; Render the page section 1's rows actually live on. Style 4's master has ;; TWO spell pages, so the last page belongs to section 2 and is empty here. ;; Rendering it looked exactly like a total failure to fill anything. - (let [helv draw/HELVETICA + (let [helv (draw/sans (draw/load-sans doc) :plain) per-level (for [[lvl rs] (sort (group-by :level rows))] (let [sizes (keep #(baked-size doc (:name %)) rs) widest (apply max diff --git a/dev/style_gallery.clj b/dev/style_gallery.clj index d1865c1be..fc094ea02 100644 --- a/dev/style_gallery.clj +++ b/dev/style_gallery.clj @@ -17,6 +17,7 @@ (load-file "dev/sample_character.clj") (require '[orcpub.pdf :as pdf] + '[orcpub.pdf.draw :as draw] '[orcpub.dnd.e5.spells :as spells] '[orcpub.dnd.e5.spell-lists :as sl] '[orcpub.dnd.e5.spell-packing :as pk] @@ -61,12 +62,14 @@ (pdf/grow-spell-sections! doc 1 :all) (pdf/add-missing-spell-pages! doc all) (let [all (pdf/merge-style-fields style all) + sans (draw/load-sans doc) + printed (pdf/site-line-pages doc (boolean prints-site-line?)) _ (pdf/reserve-annotation-columns! doc) dropped (pdf/write-fields! doc (pdf/spill-overflow! doc all) false {}) _ (pdf/annotate-spell-rows! - doc #(some-> (get spells/spell-map (common/name-to-kw %)) + doc sans #(some-> (get spells/spell-map (common/name-to-kw %)) spell-annotations/annotation))] - (pdf/stamp-site-line! doc site-line (boolean prints-site-line?)) + (pdf/stamp-site-line! doc sans site-line printed) (with-open [o (FileOutputStream. out)] (.save doc o)) (printf "style %d: %d pages, %d fields, %d KB%s%n" style (.getNumberOfPages doc) (count all) (quot (.length out) 1024) diff --git a/dev/svg_icon_proof.clj b/dev/svg_icon_proof.clj index 178a685b8..b6039ce67 100644 --- a/dev/svg_icon_proof.clj +++ b/dev/svg_icon_proof.clj @@ -13,7 +13,6 @@ (require '[orcpub.pdf.draw :as draw] '[clojure.string :as str] '[clojure.java.io :as io]) (import '[org.apache.pdfbox.pdmodel PDDocument PDPage PDPageContentStream] - '[org.apache.pdfbox.pdmodel.font PDType1Font Standard14Fonts$FontName] '[org.apache.pdfbox.rendering PDFRenderer] '[javax.imageio ImageIO] '[java.io File]) @@ -21,7 +20,7 @@ (def sizes "Inches. 0.25 is what a spell card actually draws." [0.15 0.25 0.4 0.7 1.1]) (let [doc (PDDocument.) page (PDPage.) img (draw/make-image-loader doc) - helv (PDType1Font. Standard14Fonts$FontName/HELVETICA) + helv (draw/sans (draw/load-sans doc) :plain) label (fn [cs t x y] (draw/draw-text cs t helv 7 x y))] (.addPage doc page) (with-open [cs (PDPageContentStream. doc page)] diff --git a/resources/fonts/NimbusSans-Bold.ttf b/resources/fonts/NimbusSans-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d364537612f94a76bdafeea03c46dc76a31c5a74 GIT binary patch literal 158732 zcmeFad0gy*Ej>q)C%D-P#Ac6}b`>u$B zxNo?j;x>qgj3VPQqEu&OT*q+(r3u1d)97ejE}+J#gnE@n0ahn@2BwhM!czb z(sgrF%QkqYGiH2?-cvtw^0aN4kBnl>^alQJm^@+5Os2y(i^|8}5tFAbtS|3<_8|VQ zU_$EDhPny0#`|q=F`@7PUB3ZO7*>U@#ouS~cUr@=xeFc~w{t%eJQ8F2sZ(c6njqf) z-XSLVX5#Oe(o;EOq0Wc5Eq^%tgq2XsqRuc33{FI+7on@PGb%rqH)=vXpa%9rswd5e%B z92JfUXT-JQt>WF{+u}RoU!-x;Bx#-o5mJtGuvWpv9?58 zvMtqSx4CTTwme&jt;V*^cEI+O?KRteoXP;tUZQo|U*Z#aia2OpnN2ZfG1!siQ=(IRvor%sgXSTD*S>c@N zT<%=yyxDoHbA$74=Y!72oliNRa~^iS`g|a+1buE7?*V;IOH7(5&6e(vHcNL&2c?IlL!i%b z(B}i`GwC1Fcgf3>e*k^Vsa9+h(WfxAtd%}c%L)YVriMzGL|v2f$f9rqE z|BC-f|91aY|7QOk{@eYx`fv6x^)L3%^-uLT_-j9Z@AHPwaMJ1P?5eYyKg&J4>ND48 z&a(@e&o}?8`J3ir%}39gnvXPZXr9_Usd-}a_~voVW12@dkNULf(}m50oBKESYIdLf z@$5gð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∋_eGQKx`k(=zcAHeT3IX-nwyhO`!!Q#9G^T7bM(YU`8_XIV@S zGs;KgPldiWmn_+A4y&mC%kwXPQ{V8Hm(a;cv&xw@Z$LiJK4Wr(x_iO=S3lek7JThG z`EB|2O`Dj5y7v_}@62%|Bg>yGTbQ-cHNl#i#DaWhURGv?Hm6WbBfCYdOAH3`p2@P^>6xrhkQ~_z zp=&~lhqocXO>WhAAsw2L-3Q(ITtl+w$cEu(*`DHJP7|^OK^g$ej8|8$u&bo0YU0Aq z+~Qf&7fZc?hJ;#YO=-`%r1Y!iTw7ki1pD2K=H1<^T{-{SfL`&l4FzfTG-FsrMT5gV zeL`+%a$ZVwLRf5^t-gDzr=XVIO@R5}okIHHTl9fQ#d&#wbV9vZHAS`1Q#skGuCD7Y zofMrsJ~vuqT}}0Mg&FAyh@J%Ly4!QrsKl+(_mu^D%ED47WhExKyE!yU(lceD|MM*C}nWJF&HHRKtwybS_ z=GsZN=B-8b&eZhYvTJ6o**rEi7gq7IOLNp6>RTZF8J>JkU30;tp2SJvn$rF$ll%L6 znro_aVq?Og4~xq>QaVH9Cr1TkO_|)+f&b5njfo27@>UFJ<#yrs2rkzl`;M;z3EV4m zE$u-+TN*o0kvHrQlI@WE_*Uhmmhk0hxa;S9a&u7mE;0|j?ums~z~WN3z7rl;I6BeR z8c~?&?&_}Y8n<#~Pp7pyVR?H)c6w=GcV&^YA#_x(+d5}lc|&v4O&bn9b*;0#AiXlT z@0!`OkKcJ;PwQq^-?*7Y(FcMQGHeN`NJQad~{s<^4!IiiL;!2Iq7p3y?W{m=J;}w zr!2E^x;ZbF^xXn*q^qP_l@++;SWi)EP^2cv7|DzR%d`nB5hxSYHYfK5x-Tn{A>)$6 zqKF_RW@RFxp))69n<1tEy+*+}V09y#4O_h&a2H%#+Syj}ZXq$RM`8)H7bpvYPim#A zK{R^EYTUH=XjuOQ9%R9{?w&UPzq0y5bu;hDh%YN>O=`S{W_j|`d*WN-i?Hf4Rc=pwTAwb) ziH4gj0UHY?PcWmDF@}hQfCLl|@ogyDEd<#NS*+v(_+0ZOZj{h;l*^Nj9P_vI#mRAN zUYdD*YxA{}Soo^$DLHfhQob>wth8h79H+c=)0)DZ@{EM3>#9FVUOB(BeaG1+wm&wm zrM`B*#}L(D(BX2mrLgGavI57|SqWK>O(DFx2u{#TU{iaLUteF6n_~-8X;`-C2@rI; z#BAy?%ku${egaL589CkQCAlb>X$cRbC=^bREwi@f;p`1x$9VPa)$CB#x_R^x|+l%6bajYsPef(7uP5NAWd{X<^zFPKf zXO6S8VMcdR$!L*{%k5mZcxu_S1oP^m&{)s(l9IV^pR6mW@IWT@2ygF_Dv>){>&aqB zydlO_7c(IGt?EKGXiB_7H3>*VtU;@YaI=Y5#^Q7uML%#KkWU}G7WR=+fA=&Fg6@&$G(w@BQ7!q|tC_ z=1NtFfz)`?88IDTOeA5qCGnHg#ei`G=f3z|JKYj|8TcxYX^c;3t*2O4a%@6#MS&$bJ+iL7KR!tlV2LtC>Y`Hm+8NtfQ%tOMGQ=oaPQ0smU>ndG*G z<~cG`vf@JpO@JiC$4h}iCd-UOTY1>4z>i@CK`}r{z&e5@RI*rKusGaNVoNKDMgj^- zJV(M^fXQHs4%bV;NI@8&s!xbcd-;~wf{3OlzZHHeq0P#_2>=1gg@Q;fm<8T?ReXK; zrKczoNZ}vFxugvzE*?5zegA9wb>ZT>#?E?et-31>N*EbZq8|q6C z?J6JL)Tn;qe7tmajd0-N{`t+jZ)mHiXuF|hPFm@T1yyBbRr5Wa-<0R&dn)prgtbaD~)N&U#!hu9FkfRlUNegf{c7fQLAffib3yQ zO|Yv6IFh7ufp5)Yx^#|*f0L<6ffEPtMz1LS18z0jP= zp3<&y*Y}P!(2@vZ>f9FZYRpX?u^LYFEzR>=4IyV8yDG1=YV78U=_Q`!ORB1NUEA8R zwrV)cKR!u8ahm|UF zmw-$ojdiik4hmWg?fRC*9{=S+8YS))4=t5C*fqAZqrR>faj{WXUN7b5q{YhcUoBn(E7Xj;=i<9MdeN!2g)o11*;?i{Bv```7Zk%a=te+W%PoxQ^?VbzF7x()m3t zZM~K3W30vkti~e0)u>jj^Gx(x2e+zHh=`~x5t12}KrF!$R8{gNsCKc^lHn8MFZ{~V z5>ZgQszhZKXc44fIw;juM@|kC9|NEM=(CgRmM*c)`OZbJdb^b0)So@jBarpZ+^n*dO^KHZR`2R zlE;UKgeI+g!L5(lw6nn!mXsJ0m!obH%CjGd)tS<^&5sL1I%&(&9!p|ScbvNdkJx=F zMXXl8fX8Kd;*f-|8-BW;h87!>jpIXEG2AmoOr5}QRC+*>ZXXheU5x9F-*~i-Q|v}| zJnK<<;`Vv`iOoxU@x-23SLJ)^rsVNvLuk_K=V*}IoA@AObI(792ONi7S|FDg8p|ja zjyDZMIcYJdksE2yLNa_Tv_E`;G4Z0f5DA?o@5M`clMCs%x+&il9Fr7gYTC6c(*4tG zZ6YfQgy4GPh6%lJxlpzShD7UP4jUef*A1dQ zV;xFCp*sRY=A-8O$|W=v#|6hG=?&3kyH};Uo?T-LHJE$S#JS16e4x*`^idmj&_EN6 z(N3YPr4*vH23s4J)P-A2adUT)EFW@apNP?$(ss^`GldxRjZ6D1iNT!-`DjW=GCnKT zVBZz0(mklql#Y_9;pDd$=GbDQQQC^2NczYao)@O`1AC4t6hZuSWAcfRHO5nH!Y%Ch zi2bkZ#_qV{a@J63p)Jt2tV17eikr8chW)TZ8c^0_)$>Dp)M|)#Ts&Nu7!-?*)O^eK zNcXdAk|2{_JJ5;GF6~wyS2qBa&i0tSXZHQw@Za-neybwvC?Dmv@~J-0{K$kqmb97Z}E&X|IRbekH?Nmymk`{l+MVLGll6( z(D%t|wjv#XD;FQ8;II0AU>klb#0>uai7Rf!lF_WbO4*9b$Iw=syF=NE zH}$BWSF}3cjMwiVg=sY;WM4d7kcbl+W@_29RoRRo;p5S|fT12(uGS>E;T=?Y3Q#)3Nkf~i=k8+rMsYEC(Hq?08hgt5||V6Hsg@P zz@@rf3QCFNUV!@$0LGuCPo}lE-*{;Hl+_Qlx6Hf{r3twZHM6BHGWgz#yp|caZEI_u zB?ZiRe#^Ro(V5d9JUw5YIcxsuh~RtRiH|N^x%J5yOo1~5F%D0Y;}v!ziZswtJq8I#jECyqn!x& zN_s%;P)0EHwdZGC%LGZ>y95uV*AQjY183jgQM`Z(h0b>QQAg$`8 z`!4K}w8}#-{9T$S^wW^!BH2ws@RvcSXEa0a1~}Pj7|7_N1Tx65ph*({WOT!l@Mheh zP+1*u*F`8cXoNlLXZVgVp(bWyXh@JG=?y&5 z92K*9^-djl$&I86aPj~m;T_1CSSN%_uscw87Hp)T0PGS@$Y^!31`0y%fm4$f>As85=-}URe zhO@JA5vL@(!Y%0FXHRm4tF^FT3tbi|nbHHmnAd294-U%5;_Dtc+#S!l?l{RR<9iPs zZ=f2gpO>WAOA0eH3kIIJlpa4(jOb2Dzx2e|;yiSN4lZ?3xSHq=WJecgrZv%v7_1Nea>-tbGY}UQT9!dXga+mW&&Z zdK^MJxDfC}+!R8j2yFn3K$HS(RGfc>y@6`-RJ4_U%w}K8q4Xi_e~`7%p9@nd`{UV5 zA8Yf~H^FF6R^@=(keA^IPjCbP^|YrTyFCg)&>%!;NRgu3t=#|UMnE+nGL+x5SV<}3k6r~cB95h6jpISO+_KCgs z@Az`*?>m0CVfLI8`|khr$-KP3cCZQJ`jfx?>e&5K(#30CCh!_|T3zkOZ2i}dEN zkw;^L{<0uL+Yx4JU`9)L12H}tz_cMg7=ARC4Qm!2X4Hr{mcc3u(JbMs6UvWA&>0L( zhLR@1a4;W@WzE(k(WQ1K)?BLmV&&Kg+u zbC!KwO7t47{3O~K3j75A3CIGWxYEse3Xa`MfMtN&bRgJqe%JH+JP3u_FH#(NbmXuX2*~@2qf9^GFU2m2$81NeMuAmO;{?G$g|~&CEr=@@ zpn)*^wRplPpBQ{dC_CA`pbo3CY2Dy+LMLlAvNNk$Enkckr{(9b$6^F9s&#;#eUe_h z7aluyhaqGPLn3?$t`jzfPBeB0G&aBkj3+iU1YAUo&H|blr4SFv7Q}B11r8HkVUQ?- z*!VY%OgT+QS-@@E3wt95(}cI97dp0Xk-uYxM}JiJVCUppdmi5&pV=_=_9e{;k=xUY zxBhP5ip?qE7*_|IER7e&;v__SOt|0}2?}12?;MZ~ht(tw*!TeDG%2s5VwecB zmyt)0zrk)tDou-cQa<#Re27i`icOVjzPh;5`(8c-pC{zf+oFx5>EMO=hKiab%6a7@ zhO!la6dgK2xDU>!@V@F*b&{xug@u>~Du;X7x%5qXUM znQvrIvh~6#NH4*I+LE}caedG*U`t>!kPpE&T<|6wmW{G3oVo}@W4G!p^-{D@0Rjc7 zr=&N8*&1TB4MJQ@7*sLkPb1#e6cJ}2QfdS$^bwhc2M`gpRg&_^IUho+;dndE(7ilB zZr0$&CwO=F6yaN$lX$K`1^|c}?xu#f{G&PY+pt?An&<-qv}is>8w>y9;XC z9Cqiz<%0XQHLQM2UjA(iw_Dj}7UKmsI`&^uB?3%&Q=rKunwq9P(90xF^+f+8p= zprTZ}i2Y&b0g~k8|Cv4aCIR)m_y7LT$tm~j?#%4$?C$LBtge+X)et*&^1{?Zs%KOP zUe|SIEExX7mRlEFZ~S@xa@M%dLF0DTdLftiLY&}@xLYi5P_mFj4|JB`g4)3gOAnZ- z2BHB1n#U500596n%0XJM*43?hp^(Q6(h{uPAF4f-s1Qa3drBNtgX-XB01?#^R$A#6 zHpX!~(5r7?r(FZ2Q@bj;V8;eZ53IRzkBups+G5EozDnMa4c1#2q&{t$XfJT!yJ3j~r`ZjI-2m3Hep;K{^L|8;JmkIdcu^xQ{6-DJwKojFAbsRKJUd1i0*IT?So+wrkIdyYNc z?P@)o8e;W1DPX(}`ZN@~%Xx1mHS|P8QmE5VNE74bjzh6kYqXfuPEU6p-6B1smDL)Y+q2EWUJq=0Eo<162aNAiyeejF6-|wXk957KtVKr4 z=EKH05#Mqyr(S3m>jp!)|jGg<_;nf~m8Q*x2< z)Yq|zj}4u;tNQ8h#hlnjhE3hWBbfy?e_E%bZ+63qbPVb`EC|u&eSFEs>MPM-g`;tV zc8v1s*g)&(64k&3_Eb~Jv7do&otK_a9*^cSJT`?e)ru9_jvts&mS1x_m1Va`h%T!t z7ZOc3D|&URh_0 z=#-P&sZ(A~nd4ezaol0sJo9oIcxmF8hTbqP#wV#3(In|WHNIm?Ew(8px^}jj4jgry zRsN;_1Jd=0vHWgFx2m(906hvfIUu0+jf0Zhjt>0mC{b^~0JJq9dfReMo2|5PL&Rsy z4as!%&V=_MpUfBFiW87JuqIZfA2pt3<*t5(o~W<0xtma4c3cx^Quf{NLhXp)0T;T; zT1QXIwW>JnW5B|8y|URc(^0047*RtbM#v5YkGn_5xhJ9*ji#*Xiav(aKS{NAM<(Z;+hhT1( zqQU7}iWE)bSbo^e92|s5bZpDR_{<|Hkex2gF!79u7Xn|X$$_-MLC)l8ASs{8aEmiyQ*Q;bK%3sb8v%jpA#H-F!_G6gYC|2(ti z(fsl?XV$#C=E?lg_=_G^^s9N=x>?_i{?HBWDf*6a8G_e=Ahv@l(<59|RFvtv%mrMJ zuzkTA>Tj|53+v{}7xnhHk6W4}lI2HLXZ77%j36U;i|pPgRPWg$ zz7^liH#Qp&Z9RPk0^pcO268{^Pk^&eu0RqC=p*l1crwA`V?z!@Wd*XfowH` z$2QI_MeB~}V#A755G+q>G|!`JFLxW{o(~YR4~c6nbKsgeOXX<3m~oqPRMA*XU
zV-GEDcv-jn7LE6-$!Y)IJ@UrBY_xI>;F)Ww=x1C8KP$%SOS6ai#jg+vA_Wui2Q!Dv ztG3P4rh~B$zsP=p^=OJ=nnL0B6NmvK8|7f-4GxkqA;BrO_&bls33hyPASh^16+-w zgJbi0^cMY>wz{`}|Bb8jyBQJU#Wra}hV+|HF^M+(T=ovm|&Y9P1Qif)0x2hZX zCiS^=8S({ zo;MUUv@?9(I4&O;Y_`cd8=T!b7vRli1%$Z8Kv8%{!aRT|qfl>7$M+u^*nar1=bn1) z30?l@`mD-ZumCI@faBHCA%*2;D#pF}@U9cjJv*r1 zurY5v{LDu$?!KpNO7*!f9(tsDdi5#4N1rgBk=frHZ_5obC2-4T9^nPooUwjtxgXR= zVt*)Ny(N}Xc&QsjxdjFVriv(`vp1|qbW~7az4&zOVqx#A|A8jBUzo#r5Ch_P{sAM` ziGw@)^(`NDXy;2Gy!c%Ij$=o@^0*dMnc*|I$Gnvf{UQccw$tD98QE?6y$}CnJZ`yv z@`yc89X$Tbi{*VLjeGUs-5(ryW^nhaE4!CWZdD?hixK;mR}_>Q$54k+HSb%$u&lG! zVIrlWjprnkx&@bFZ?3@U9Z9gGMIhWG)-5#DY$%Lyn8tXdw)cr@Z>{?|w3bLmm%>z< zUbAZVi5e^Zb4@CXsx!g>G{I6G<}$G`>-hWWPA3lT=-;P&)GJTEboRx4_jDLL^58a^ zweQkLd&P2b$(SuxuDxQ+Fs8n6`P1sQVwEv-t!3Th;m0}w^D1w zpOr8zz>=`MAF;+_o$M%QhVtE6L98fmA-jD)aWDixS=F&XwPdDa>l)mjL!gmKYNABaOImaSY_Ig4}T6TgP( z@0d9_=z%j?Lddh=pHt?`HMnntVwRmW~ zcv|e+WY8+Z1qY`;RpqVyQrXA2ykZ6VI5-%Q{wSheAl3?O%&Bk_K)zTQMk(MnM_)mF zdN%*qteIF;wq&wl3V7gG#d8$MCbCQ{RCvdtB1MkOlufFHw#jH>WNBG)TlJu-(<9|J z4xfhHhSPI;TP@zS;oeb*>h(VlbS;9#uUOsh}4c71& z@cQ`6a~r*bQdefT%S%iQ3-XL{3q!P^PlUIy4SlI)YNMtNgYu$h8XwH%+Mj5&lpiV# zaN?T6psswd>7U9+=gQN>Oa!uF3lduo*qM!;dE;f4Y_`!S@D2pv?H6PGV*EMeWjg{f zGepL0kU71EWTt)=*7V>)EVe;7uwILLV_*6-wc{oY>-c=yA8h^5bnF}!KV1w9jRdF%DQ7&HX*?Vf8REjx|6M|2 zka2ZMdXRsRd|W=RG8V}CFv4>cVb~9QY5fResC`qOAWa$R-jG^EhC94`IdsQigY+VY zja4;$ZmM=;FW0rh#+vD^9bRt0!g>ofR+UbbrEJ9(4q4~WNcQCQ+Nq;aqKQX)J5g29 za#^&zsu+6)fHTT32F@y&S=oPqcQVsz@(h4l*i_Fg{E>=ur7! zs|1^fYvtaa4>Gw^?tu`Ds@jpt!;Fz$%=n1Ida)xPI}eel&IWF_Cr9&SB@2GSK&c&J zTsSWWcaV$Hgm!Gqg%`#Nst}XY65b^Vlvw4~k*0X0kOG@bKEbGM=aVDHJ8bcsZ@nBj zySteMt2VO>D4IB;3RRA(2JPBfS@#()78cauU$J(u-|PYWb*@8}qpD&^24snOr|LlE z_!kl#LIn5fo+|&9Q`c)q>lS*E?(F2nq{A#Q$ko%U9SN znrdv0wssmlNRz@wyeRQ`-0`Ul{~2bv%&$byrN@kPi&xIaL?P#~H_9go$KS1h;?iRJp~s#B0M zZr+N!_S{dSWxC=7%S;z%FhDg(_)Fo?Wj?JEV*wUnYY9#aG&W(6XT+peZ0}r)@7Z6)Xa16=;c$RslIig@Jdxdd#g7Eyz(PphO8* z7F2QNVJ1bM*0N9-bBpz-(i@6fW-jP$R3n58p&hCwXf{Uf6j36$Sl2#SdvL9T0+v=( zF|!Mun|8$1aw_+~Z-;dpxw{?K$=n@Ou)1P9w?me=-(;?NYFSmqT=y7R*mZYaVLG?N zzepClOPcx{gz=zM*|*_ARmZSe@nZE2I!x`g+%92IUrO8BdmUGd=+o_O66a-TnvGBa zrgCvbvqX?$RWp)(wanI3$2_PNE)3(=O#ReymNs;1+&I;Mg)eZ@QJPX|c4v$VTNgI- za4+FgWJ}PK>(~vC0#t$UM#Rj411dU0DPzdb`V&?|jPu>yFa>~|*DD!=dnI_@rfRDd zJF}N@w8%!DzfJisouXeNj}Z2)d5P z1tw!z8gG&6fgHLB<=D)U?4u5NCn0;{!yD8Yd)#`}c~Kb9C>L06*?;YVqal~*+dzZa zQ>q@Adrlrt!thYrXWBXI?uKlcE^wB;=-7h*y^%7lgEoZq1!u9!s5tB44qP}MIQo%# zoV5p+f%#7XO`czv6Dys4@>;P(NSEpT_ zp~h?LlzUt*6Y3D43f$&?muXi0t}4mSU9-;YOG{?YYf)9KW`$raHxGtnHH3D1bGmYNfo>7Ohlq&t7>GVyneLha?KzUxlqVrn?0l1$mckN`Y|0&;NG9MUU&>aSV@_hfbIhk05{Ppu|^ ztRRlGDUeDQSw>BPgzM6Ol4b`_nL4EjOy$aTStp$)nNS4wm$edv7V3*g?Jar1utd{* zv3yv9VC+0nQ*2csRr!zxv>Iq6pvmmuWkR^$vxczv`k-ai3a?PZpL&`XdcNM+S#`iw z#R7ed;yI5Z!6Sz}JFqd;jVekt99{-eMIrJgs@cnvMbO#D8~U1q&BD;H4iWXWkKk*o zLa=z5BV*N^9D;7I7KgOgb`5r^*Ui=iY`DMkhN+@wVMl*IxSa5LxR87<6rR{_I9^+= ztfHzg993Go0X7~%w{UoH^;v)qw2PlFmV7uiE;KkIir2%B#|&nLnPbyP)gbhGRd-jz zsI5Yy0<2Rl6{7#DLAFX+h`P)zOo4N|CR{aNUSm|VMDPa#0AG$ii?ar?#RRdCAhF=7 z>MZSMDgS5;+-=y;VMBmz6{jQ8RyoR;`s$&4cdJcXkk{+vcj6&gxWH-k(rZncZErbp zq-eV3yTuQ|d#@52xGBo_!Cb46vsHR?H&qPFjNK0s#UsSF6VD2Y;LXl61V?yavve&J zr_uO$qhu_~$IDp6^0bT+AN{^@+5*kV#c!DL>a!O{$-)m88P6CWj2v0GyIU(!Se^wr zuBjA9^`=U4?6j+60gJgwf^arAnY3d`(@r}G$FKEh*RnEW*wCDvlY`i-UN!_3<>J@8 z@=8-aKX*a?V&kDBH^k8ePOFxI^d|~Ojx^qS$k;wMk9jYS+A2}L5A)vB*{a#Rani3U z9}@&skOz(w(6BmYryit(0rkokeEyE~M%e+phY6>jXEN*K9psn1^^zDpN*w)Qk?0}P znf&f8znM7|j%3{J*mYxIAwrR$7^c@$Nhm?tY~Y9q9S$>MRc*V+WI?0nrb2Ag%JMURZ&jlDDBG@;g&p;_1$0km8{}#t=!_?O3WDZo4RzSl$&hex2&-j zpkwWUbq%E*KqRCHI?JKFl+I!d7g#RbZp6S!t~b^~=IilDV}pNHq7~{{*z{36HF6|` zeQXp@6xGXG4QLwNFe34e2lUqCE2{SD@s%G{Xx*yzvOX+_AL&Fb7&*gtTZ*ng2;&IY z>ouwF@yv#7)}+43pO`BN6uhovIA+y@^dmZ)U(Ec>i|9AzG>dsa2q+E*Wv zZ9u&a>R+={kKF9k!^Wa(igvCL(2hV74sSB7;p2E1{k5t#+M#*X2MWYb;#$>hS-^+X z3oN|{TD|`>^hI$FpQ*DoMz4mvG$_O%RSB?t_XHQ1kq%D(EPZ55^$&6< z-1eTV-UqCg*8FIlV;QO1Rcc`n1}5yAj?g(km(92QTqgyPBy%HJ5rZ^NdFhglW%y>+-!Ht(m!X`HSzZn}wQi=o5ePd6^KR z)x+xJgF{siN{LTR_}jI7Id%EWIc@Q8&g`}8X5;R;je30B(pj_Csi(Fjv*$eU&EqT4 z5^8>hw)$4T0j?rSeqlp>tneJmE!P~K`Hz(@W7S%N8igwN2o;bBp~|>LgIbebtUH?i z5Akqw@zQTpFYa8F86Ms^W=w9s(u}b1wAlQn*mdusEzF2(+O%c2;p3&xM2XHD{ z1j|rRnv-`LM!g;l+w1=A|Jyl67}m23h8afM6d!T>@ktXWP1^R*_<7BnOx-rSb8&Xp zm1D~~b?U4gm^5Mg_DK_mPkpZRzRXF}`*s{OsANp1vWb&AbOI{{f;%IQ!zC4?KZn{; zPwHHl(!NXc*fzD9eeZWhZs$J5{{M;PCC z(VA-GT)xY%z-LT^>LMAlqd$v4K!lQsI_@K)KODR2`JZs?Kvgx_IoKx~i3!CWKkNRY z!eQLEf_k` zIDd3!&t980?h_5)yeBcj*xx)Uv3ZN6gyx?OOrJDuXKK%mk90KNIo|p~G1&178jENT z&PFNDMp6?hq@u$3rX$niMz}O6$Du-^QIvGgN)I)8+G3ad9^-~5j^qZnJ%spa({BM`uT4;Wb|&8l3HApl3Mhgoe4_@WPmAYJw%hDWb+ru`y(}}+*`xfr+{`>$hquN(mo|`;m-njLfDTF=GLgM4pS`r*6hXKkFlY3Ba! z`v-YfRe24@&9p7EH}0Q5=DvLshs+zhe%F*CJnC3XBXyj?gHd%N^(!n69_54{-95_5 zD=5(0D_O&NKYT>HW~#cl?rve-bvHL}>~zv8K(aS+CbTl!DKKZkN!kG>2M}D08!32D z>y?5AXKtipmV$EAqy&SF@7+{?uzFD6DPtbkG4t^ zU-_fonBhwwn=*Fdm`!Ug`Cja8>=E62Yu$RcFQ37`51-l@(Rn0&D2gp9psg{rqE>~G zO@}6C4$a6&jE)NPamV3=9tD}PIhiRbvC&bXfp8;X?-EnNn8@Gxh-wrtu5h>^)29V` z#SGNL%27F>#Kp5Gin({nq}6s8Z5XiRXD^8e@d$Mf>Cw5gBr(Fn&&AKj8Wa@Ltby_F zmdM<5JvZ`WI-rRYUcZ^%G=|Jl_ zo@r^q`n`AP;Iu(y-KUT2JbW-lfuiOBx{6h(wE|d#q6%^oLR_)=H?vVxptr@0n&nZD zo0bq4hBI(rcIELoqYXU<8i2fVzKc|wyHtM#R2|5oz8VBL!a_6U_Jf@qbru(|2yPId zZ?DqVPe|{Zm8!)h=9l#v^iX;Cy^}M#wrdhGc+k3g2aV|5w^_=fo?XWbTrg!~lUCV! zNaFM+vzI1?C&ZV|9zE1Evn-=cqx4CG7A<`{D7I^l?9~GY^c}Qn^t2Se5rdaJJgj$F zZ0CD6^jSJEDJ2+V)tb{aC-fVZi&*Pbc zXBW*H(`(YK-wqqSxb$C9`asBt2akMRZBTvuhs8k+wOJAJ2?#&*eMfmlDu_W5$S z8h8RpxZSb%sm6o9z|&&K3$?_R;~jhFGp2}c`AN%4i^?{Z=Vn#!%Wt%_q^Rsc+*=YR zS4~*ety!C*yn$;23Iif6QF2>cRJ1@hdblA<=a#C+OBQgu6z!wxN2f9}M+KCgg zRRzjIDHCs9w7&9ZTX5gFOg77H8-i-U$0knH-)HW|0h6)D=Z-}=ER>-_oJ{vkv~tXX zFmEe3d%TbK&F56(#EoCyn+yhh6t&J@l)1%Z*6 zVIaUPbl#viiU7SDGN4-5QS1Q(2xv#NIT(joZgSOEOwWZXc6t!N+d`kJtI$nyv z8aMWX|HC>S76rg5#Vvo&iZ$9FYbp%u8rzs#8yMDL#$9Dhw;We>0gDt`k0G^qH6o{?VOp@7Osa|PTN)9laV*qLv7w>J#d{cpO78ritXRv zQe7q3^L8wEi7M@+p>JPqOm=$g39f@%SlklS54AATQUhywv%+Nm5*uVc80TEWRS{Fx z5HC;sMbreui4F;d-!*$5@Bz(eF+3zRcb%}GtnVE=zIg{YpTdTz3U-6{Ynb!U%Riso zw!C%8n$^p%8W)$Qg&S7=_JxTTM$Q@7X~mjn4_0PaT8f}m%RcF__oYgX=m5NIcD$Mt z#yFP*czYm#iF*JJ-e&6({0gO~M~cANdl;~SY{rKTDvmAbzThaPNIXS_N>y9GRo{up zkk)U_g6xuMOLza4(s)f+&I6BE8RwqcEkr+k$L)8Fx92ozm^OdX++Qpnw_o2s;>hS} z&pjg|c?9O*)ZhE#rEn8a95QP_F-RE-P08uUVq;isf8Me&Kr>aLeR2Ec{E`YIl(4Y; zo1!lfa+Dd(0T1l_=60*P4<#*1R#2Ib-W!7GmXHR$G?YIbh@*lk(p?j3qqp%#kU1&KfmOk)+$VQAQ%%O~V zmKtbKPiUP8-VA5AI(fj@joqx$6RWGbyToEEdS2F@2(H8ZyZs;dBQli&RiT=3LabgK(mm4uZZ zow4AIEs1t1;~+S1Le3loqN9X*$jam)CU@!n(FwV6mZhbdCUWDf%k#S4>Nm`0_4V=S z!cr}vC;Eyhpe_mVRH2`tK;uxoXjb5*hbQZ7gsaCJrp<0?1+&z|G$#N97i)B+6u*hs zX9{PAq^}=}DE70BKcTsoXTI2dbHnO=?ZVB1JnY0c=vxq|CY|0;Rz;G~5nXxm{ZKmKs-=5V(AaOGxAsGfkT{Hj)8fLh zK#FjAFhjVzu~UXe^gvt4Kp&g*p}25H%A5OHUPXn&hJ75YCen~>Q;nHT#>xQ%)m$Lk z7a@#I1D%DnHU`IX;o1A{S>9{Vk+bW1uYPBDZeje==`BUG@|Fu8U!tAovuMKlFFUqn z-kL_$Z^~xjeb$`X{qL%;<sw}y&&+Gr)vMhHiGJ3RG5w>1jBDEsSM7T1_u{(7h9~y!>Kfou z+Syo*Q{)2!o9hWxpQ7!blM}5wElbcBG@!wSJ$QW&)vLK;XAyS_#XR=n*nW^o*f2aj zFj(eLo-8sj=-52{HSGEq?hX9yV;QT)d&(iVs3EgQvZyYbyKOc0Qv)XqJ?bAEbWXPZ ze1&-5*tDT)h3D%tU-z~KZ16k@$=O()3yA(6cL+|o+2`( z9v3T`WQxXVsWI%^l+z+9RL^UYo|c*tXLC=|GyHtrV)8Q^XQc2hU_J|j=a$?ZVR{K> zVZ7If_W(2N{x`N^{$!tX`$pr~C~sv6jgJ0%hP{jUgyHAkzHrL;+PHM?lz2^qJ=vyN zn~qzzEP7_ipl*v^{98s{_hd$0JdK6C#Pjc5I91(8^J~+rqU-Q*<5}!6JtJPt$Q#L{ zt8^J>d)v|*s}lvZs&H0|yxgoN8Hlc!h*2a~#1XvJ%Uw+mu-hEQ$td)KmV%t@^fc_4 z=Y~+wA}2c|JtjKJxk;{u2t0uZKZ!t&p*AfoH7-_nPefD<=plFCtR_JsQAKvo6;>x( zknrU#)rm4MmrsONvlqK30#-cGQhXzQqhYKtLkGcT#F2xbrG&bHhJw-0Hxj{b8%o3x zu>X!defICu!{m3K**QZ;+B}0M7-2)252?u3g1TmNb2K7ret~WNW zTRa-{(<4N#@%EM>dbQCv-7C~NFV`ufoh)!3wbroaxn{H!SMuXUUiH^9G*62!JpRMP zG?%6?JmcO>Db+!_sRcs6fgYZMl z7Xl}2#K+aP)QsjWLUlbhCmxO0;@-k7Ha9NTJo*Mgr^L-{um2CN7Snbc^gcJ-+NPT+ z>l$u@0Gz=3_riEr>(yRON=nU2Zr3^`+%vIrW``|_`4KnoA3AmE;DzC-2z2fHx3YP6 zBVKEK=zMPhPMd8sY4ID~v(6g-9z5yg6AK2qMc>tu+fy%ET-d+3Us-NqbLMCFekt6f z%X*b{XxFw))BMJ8Y>D;r^-PJ;nv3Q!*z}p2BHD9=Mvtz|(?j+4?eI;i)jeHrlakEp z5%D4udUa^qCP+&VdSZgvw83ac%f=3Wn4wkch83RK|G%ondU6_p@hL2yYS}Im3Nj8y zjx+Z;0EWK?UUQd=zRmxC;<*^tK03O+*e3kHXo4VD?qR8VzVn0mJ-oxbvvQpS!a9!& z@*bO%vbaUc|HS<2srfFAx`}%`C)n~&?uZG?OPvrs^5e4BQ(C5pjRO+g^2OGu=&qYv z_CZg5z!<4D#>~kHsc$$Ftsq9{jITR~P9#Er6=j8B= zJ6hNdJRx$Q*kBB5dUB+ZZQFCRmmC;|(IDm^R;`PTr@kSDJ}`Kg^Cb;V5hxrv)lI}O zJTa`!&Npsi9@L0aVJ7Xy9t1o}#gIY}L>uuR%@HI}sJG^inn7=t<(Pf@JG*&Q!Xh81H#_C7`M6Ez!# zt0T`Lxuds_wD@3(*cenc&x3s|{=f;-a=9=uYre=dPR%HYJ}br0w>qar8CG#_)x!nr zlakl8+x4B8SbfTPG<#I^(7YWx4V)Wgr_lh7@rA+I>I@z`sj)H4^DfTVeyg@ZF|XBJ zoX2@t80BGX%NBt+(P+!e9eLSjH(1`x7uls7R{U{$6JnJIU9)pte+v9_XAczUdQ_`2 zm|=?K%~K?1zN$oX(15IS>`GRVhN?(R@3hbOW^KDniy>}5`@z*_LxP(*Z|U;E6<{8! zYRAA>1w8cjfbE2*K+f)-+%0%G!xo4Em*&k&U=Ant`aH~vLHFqG2T2OR#FB}@i4()l z8aIsJgww(f#b?FI(Mh60=2m}p>ZgQ=2`!(VV~{KoZR#j9FuzPF3m@6$Nr?#&ALbBi=a=vYxKMXeWR%|L>a=*-v-&pp-Z?}I#89cMpGSMc~ z&Q<%Q5)@(xjuuhZ3{Z+`nPAg|G5|`s_6cSAGp&9SR*6i^QdB;$`Q5Q2*P<(nABL27 z=Yz=KTE-K03m?;bA7(pj5mWi_R0bp>Ssgxjt}|`a+QB0I<$X_ZVzz+6`h{E5`c<2c zY5OwsVSJF!UHGtBIMQ3*r)5@8uv@znhh((nxZHwPt>QqY*3M9ClbfDhFil9y8!~!2 z?_Y;eZ9M4MfSF-RVKf`roK2npcaQ_#VpfQ-op9*2^8}fwaRY~O&4lRtOTDaL$%cx- zFM~UIr7fF5&Mg+YM`Q*6WP030YHQv4#c6!RTcOln8w=xAV^t~<~V>xSmA znwz!ReX9scSOSj24aczM;kRP|o-O7!Yg{(wvl$0d(mW5lL}e@-HNJV;(a<@o9~AoZ z*^Qry%FpRGaqc(EI!~5)32oELJC149w8hl8Uh%ob1<3^#|G853?fGoCNeSZ%nnkBC zDw{cWFEg0-5rU@(Kw;!v7(=QAU&*Gd2RQ+7Nx?}eLH zVvz8BV8qM;lO`G`Hx541quYWm!&|2}6N6T^=`ys<+>o4P?=YD@wB-wPC(Yk4!bJBQ zx3`R0`{c;Zv9a>`;xUkx_cyH{+UcHG7HnIz(C8GK+iK%0!%Ot3gR(kugykritzEMG z1c{77to8E3(vZF`K7ENOEjd0;kBQb?qA@0n(bD<6;An)L@(3TKHyGrRnvxJ77i(>l zrs;_u(aDX5h{W`?AtG8L0+fh}R@$0Z5bb^#xZ&BcIs8+Tx4O2LV|Q;t%QVMwa0|lx z9{-`g(xS0mfBX3AwTp`S^&fI+#f)`pjy*MfMnTTRXP=!gamI9G-l`7nWh+bjPVH;? z>E6|+-&$N08@Flcu@kFSluV!gY{$*n6DCa9{o>Rq)$_!k#w4-Uu!)mKo_NQ=qB&N3 z$pXhNEG)f8z)ZnfUMUSppZ34n@$%)4|Nl9t}qLv>pX<#J?R!f)( zuwcpIkNy35h3Kzu<-%RYl}8?FU9`T{;H3C6t?Sdqm91OxScJz;dehgc7He}~Te_m8 zwe^y<*Oq2@@u?|H zKI9=Y9ik#UGBN#k(hw~wD9}j@w(~;MVIfFnH$56I)2p(3Dz#^v8kSn z)Uqip83z@lI&rwIJ2{k+EdD3{C^r3HnDf6e=D#sTY+(;b?v)i(?)-S>K+k6X#?F7d zAiB`UxzH+uo%dl$8b81?UTS)Y6l->sM*BHII7Yc@@e+ zOexC1{bs!1Vckv3`8|H`if^~#+8fV1aNi2QH^lu`+-KOJUj`Ekwyc)(M z7Uj>?C)b?AeKhjs-#PMC8(f*5WV~;P`|g01D4)Rz?`QHo_%j>t7XnHE(*b$l598R> zo^Cqs8v-vETq6NKSW9h$Z#u~4^e(RJQT}Y;$#gUH1&-TsHE9C=NW(n*J7|OV$@Rg+ zujU$P`v~xJJ=_?-`oOr>!DK3cH~bLf)d5fdD3V%^FKd;9oYr z3jmBnp39Xil#@ToZ-jhW>E9?`AHeeglyw+aa`1}l9Pjc_w`r)qpPi`YckuRpz(#vL zael*rLmbliaNUC^p15~MS-Sx{P%hVPL%hpFn#F+SNWUKW2B>n(y2w&>f_wbF(7{_= zuQ3h`cu#yqnyn7NyOk)zOYW}u8P`Za3E&&RqktT|--&B~fDfk!4p}S{c+LWN0Nelt z);*MJhZy8dplLhP0@w=NOPDrXr!&5|S8eF7YhOIK!SDZcebn+h6{@@;^GqwgPyUB1 zw;}aA=vM%jA+8Tj@h z(r(5*x5x3wV+X!jS^o-|RnItM@o~IYI?ODW7XIbBo5C&cpnlO_xvp?6x%-MVJJ2RM zZT;&w(5!UWKV6YmL)4XpuSlbvmgWQggt^nT!IB>*0lRp^D(Erm0hYs> zpZOcWF8zJlYsL@mlPOgHh}voIQjE5b()k;` zJ4LJSrqe9^9tqvB1lMS7o#J;V{W>kx6Uo~$lh$hYQv=S=au7V(N)4=5nq)mr>$z-I z&Q2u+XearY0d!0IHv*{gZmM{ zFGv3!>95fX8p^f!5$n6AmOVAUXt&X)U88jhh}z<}4wh@QQ@;Q{GCwZRMqFp(`%>+i z>Z@Ww<3K#eAA@Dj_BOO@GbX8O_5JKE+4;f zpWl@0O%~MrhO3M14Jv}{-3Q(90c5+a!e=u2lMD2)^*UvO&MDwW7vxcDU5YwsM02%o zXuGx^G{LJ`YfPz51}(QWq6+3I(`7janYm1hEn}e%Wq*~&I^jA8FV!>i4s``OV;$}H z?knohY|j{LseY=W=6&S%sJMnc@&d*}7wAp7+xP|Tly$xZ-~vG3p`LZVYK>5@7?S}C zAcL>kx=}~;t&xz`9{PH^$8wbJxBg5EwI6D3I$fjtEwgDa@Y`VZp|$##=x0B#xozo0 zQ_wcY>SO5z@IFtw7k$z$@Oux%0Jxut2aJVIdDh+!?z3Mj`D!^@^8?_99eyx>6CKdM z|Hc45ds|Kl)_abtEAYCezlL#RIgLcV$1Fe78iX(V%mG>zWDsLP+f5mT_UVaT=btdI z@%wtn_%K|bvz(NVS&m8__rEcK|Nmw{nmjx&03Q?}tq;o~-uvTSKL-3>TNa*c@9{ny z&%wAx;o1-o0+?inlX$-s_lHn7IXsTgFUaQl1u+qIF`WUlpe{8;pkr{{*T3?8eb5j> zM19X!z#YGFKL0=7*H8QR_qLnbtG1gpl_qGf-dP@}(Ft`{==eszP_qEE_LgYN44}V( z?V4BzKHs*yAvD~7Y=8a}&pPf`fj>V3mLgpmr$rvW0_JO#G{vcrNOGzW?QK2j5d5mQ`{7%nk$C@<<*0bW1miN~MVL_Y8{`Zis!X7Mcy9-OM>Xbm zav{FsbQ0H7<~zRDdy8B)D5(rbI2*K>5hARe*m(DJVc|ruA$~L=gT1PGr{p} zUeWdzfd?_Q@ViK|Hm0%QL6oICHMHSWJqA=a|AQOZ9qC|nP5b6a{=JleF!Xm-x~8QB7`0dR^a3cp8<0c;1HCyE9> zF~~PI81N}k+-jouFroxMzz)I|4#2%cNfLm38hHRV5+yeV+=6e!OGK%lEfwXZEh0*H z0rUkR?~D$Bj|tAOM48}!W_O|{$$&jXSrtUtZQys(74SV#?qR4y;FLdzsOdPOX0wQz zZzgK-CQ%`9YdM9e73eBzMN|wNihm|*{S{FgJh$0~ZVdRg1sx>|h)RKHX%(vZ3{m^t zL>&$gbws{pZUDUNv>I@os5A2HQbN>q5mC22fEz^J=MnWNC+hh&QE$-F`w#&2*$3tH z0WbS5A?k;3`i}wpNOTYIzXv=RFb!RGGonF00F*hn5P&>~%)!tGc$dckekU4^d`6@K zQ2xk~fai!tSplH4Vkh7>(P-c`8fA_dVh8YfEXp4DCDHg#i6#QCiO7E<%AC{yaF}Rv z1OW6;#<#r1YHBv%bE0X$XL<|(_)b4SGz0k0Yz#noGpmSZ4FKRe2mGFk@8-ToG!J;q zN4oi-V*$!q0D2evPPDKyhFmCb5pZKz{1VX;q+c2aI6)Xj0!jdH0}P_&{Q(<^Rv?cR zs{x-At?UliYQnv1iSEU_RmgMIVWQQ*fAz;iYxWVX1@G=7z$r{ALF@fzh#mk9>&Fpo z2nKvb^x!;9H6I|_)SGBCWaXg&L|c&e!=QhwAK)6%BhL{%itirFCEDf%I8XFAzTJ-R zo)}KF1NiLtn&`=cL^~Hj6#{l4?XK^Mo<`c;!0Q=&w+D3X?M$?93cBV;iJk+V&m*t> zDB}R=d$A4RI?+q`{$=2KFbQy$=#@Eu%S4B=0pR(oT>+nCD!l;!o*n@YUMnMd9eKQt z@{Ud-dZRI5JGyG{<=8Z$<5mE8^JXAm3(;G6eybetCD93_J%RjBE+cvyWxS&Ub`YH! zPIMaioW4PH2DH7qgy=oc@P01Q*#x2wP~Hb$qf7Xf=p1N1zXukra-xf~h%O})T?UUY z-zNG9@bS+?pGFaVHi+nRz!%+#zQpfWkk1v+`xR)pis!2riM~EX^vyA%Z$}b+=K(+& z-@ium!#<)Pw-NmdWn2SZKluTG+t1sHegO@?{7Cfc4x--~xTjk0fiN^}!>{fY8!gO$=Sf5WzsLl@w-`R{1fZ?^^+{BH&mA9u^M){79m8f55jS+5n%nWdOV@ zd5%Qsy(HQJul6XTLmLtuB>-pUbOayDc9Q4>8alTF93;^N<#$2;(DR}zuHD9v=?ScT2C$XHc<^jOGZGUwlbG}^iOI-sN-*FUiKzns*GNnQuG5jv^m|Fn z0FEvHgW#RDW(f)^`Kkhm9Ru0r}%7fGxJjtY>DryOgL z|C((8@MP_Fz-1EadIRw7eTzuk5Bly0pC6clsYe6=v~DON@gTn4luBarG7=BvlGxIj z1a!RE3OXL`O5(A`B(~wZ$LEoFBAdhx4-!u%k=VJ5#4gbAv>O25?goFKnMGm`zS#?Y zJ`4Umhi{(0MPmOF5-)fGQ04*f{6H0n7vCoF66kvAKEQPnFZU&JuqWU{60d9}acBVG zOA@aFmsgSZ;Rz&;gaPpFYvq9VNWA_giKBsl-6Y=FN#YpFK8E+lb-)t9K@xAa0sybK ziUIcm&XYI+oKGPC6Z-(b@8oI{Z-bV1z?)N{fTJW%gYRdM_6+iV7xcXQEs6IA0lp^j zeg%oMEl7Oe2RK0D!`>v$0r&Grdm#pJo5aP>NnAZa}{`fjdx#PBk>K&{swe@i*mjN4c`Ix@3xWn9(jEa zJibTzA5i9xK7eB+{smtA>opSBK=-x7fS*bH6afG&KjFKdfcMYH?^opi8`A%_17MK& zJs$vkeg|&9-y-n`%KKw80MCEm`Fa}we!qSKP(|Y3{Q=iW+(5oJJ|=M!INeGj@h8f- zeIJQR;7|pctG8ljUT5rC0A4ki!4OB;IR%I0v`^#sKh6&joA%{Epep zy(F!n0Q_csjijwH05NcEH%K}S0=x|$mnMLXfLkP8`jd1G2Ea?*Z5B!QRFWQ@vHc47 zUS}{h$8Wwnadejz&*>o zx$Rpo; z#cxvhRX(!GuJ>64zw9||(&SO&$3I$#cM4af;h?1#@#?u7QJc&lp z2pUOKD1sWpuOR~wIU;BXeu=m%O#~IwFq*8sABSJ#0Q_beV2sLbEbhi3r!ssq7I{p? z*Adi>2IDPO6YaeaCloxkc1|*%PHsQh1F=IT4^B6?CNE zk?ybgvt+4%#+!Ve{9pe;2F-uil}Hw{V&8@nWYPsv<_5P14@is`dnX~@jvu@tuPP({ z;{#|Q4Fczf&`|Jv7!6moJc=r4G-_ciIK}lpQE_exYHAuyrx~dASu~sG&|I2F^JxJs zq(!utme5jKM$6GER?@w+idKVTYiS)OTKCffv>s#S2Wca1qRsRWZJ~#0D?LJw(qpuZ z9;fZ}1nrdW%lbNqU>!p;L4k zcu@`fQM`o@b`SUof6+h$h(Hk}g0asbR5XP9P`HRdEaN{#q=*vHB1XiDI1w)ru=OBG zG!n@oMWl)}kxsWohG>jafSTY8%WRP&aqGHin zv=MC)8@N=o6YX*6X-82eI*HEMZ`oCJ6Wuw!py(xfQzcc=*Yu6(Bl?PdqQAID3=jjw zATd}B5kp0}7$$~`5n`kmB`Ri2xHKr9rC#A2~TEEUUeve*i-QrwFOWvj&+u~w`T_lf((132(=gLqJE6r03m z@sQXe9u`~0BjQo=aLlT{!k=w|GYE5qrfx@vL}GJTLZ(7sLVa zqIgNXEDnlSaH9IF;;=Y^Ehn#wqv8#5OdJ<)inqiGaZmrpE8Y|Di?iYb z@u4^;&Wj7;qPQe3i;oaJ?i2B;_)L5*z7SuEE8;70ReUYJ;j=jrz3vC`qxhG&hLCGN zi(kaA*j)L$_(NP5{}wmIO>s;7DQ=5OQ6;K{A!^WxVVgMo%5|LBYLzzWB%P&;bj40l zY)X}$(o1?HvYM~-lm4;+I=w&{B!gv$43!OWz+bqGkdd&6N6Q!)E8}FmOpu8(Nj8$n zGDW7!G?^|lWMe*@31>xYJGTBLXmR)35*-dtrJrH-Tm+US3$iA|l>@V+;1LQzCNDh`m%i*zM7xr zuQkvDv_LIL3)VukP_3aBriE(}TBH`GMQbryEP@5ZYYAGSmZUY(lC=~qRZG*-wG6GX zmZ>$-vb1b1N6STsjC`%B)=X=zwa^N*Lan9NN-NTewboi2tt~=Kmul^__F4z6qgJMM z(mHEhw60n=t-IDk>#6n9dTV{OzFI%0;gbdroq}P2-g@e!@g5U~O&T@6d?*GL!zK+Y zw@eu|rhJ%f>bOzq=`D+GEyoTXI%)hk+hFr*Z8>BT1|inL>SAj-e#H23!$#W%n^)JO zp`#`ZojP{-m|-(qht}P@6qS#kGI%H#;WD)L)>=GtFtWCmo0npgGk6M~_+o2qFL#)| z+}38f!_>v4b!{dt!)kABt?k$hGq2XxX2!$R#kFl6KCUC`?p@l}X5ccS_SUWK(D7r( z4mNRi8&U7UwWKbs>&Uu$y=2JXN%~0qv6dbMy zgSCUnpfT#AcL4SJ82qu8nd!%w>C5URaU1vlb#-mai6cpL!yqsqdSWB?VLwAET|ke3 z#BRsLj5~aZ-sv|10u&aKMi<-N@B26(vwyf*nOO-l9bso?RaTypbuT(>-x#A`seMTu zT&8u^c1=~Evq4gx23dI;KXCFDC;vdnS19HW=e|6pO@ArUzMEIK*65Kqz)Xcy?8h5e zySXt&kHn!N@kFg!6tkym*Uj3iZa?1yu)7;$^h{wo6vJmdq@5np7aG!@hV+HA>N%?y z%Bn|Uy)=1wvU>e}{&JhsyuY=^FFf=;$=TN{!`b_d{@acI{i=_?QLaBwOuxz8o&FHj zDys6-PFI=>xuv3xR|yu4(+uV8p)Jz(OnPT`-Jx_Qfmoz!g(1hMcw>8N({8MX>6vL7zF-h0S+xpAI8T(T26{XGZw zKOtF&G+bw0YW*vPMND{+KW4n)H>er_p7neNZKwgQpVPWdVc}eMhxG23{_fZQ?msz9 zUu1CiB_BMVE9)sgUDCmG+K-vd;LAB5Y~brln-k0`vUNPe=qGkG_B54lu(O+t?tuvA zInnu`_K%+GO;aqiu>Eic?$${sXC1PlOUE2*_yZ~iy0XL6bTI1`Q!6kvBDvn&mHpjE zKCURgL36ICW}_^4YeJG8B*_E@H6*x)FW_TUy60^j*YNu3FFb7yO2fvLXiTv&sw3p* z4k5HV!eSQ*_>MD4k9qDoj`EBaxS}c1uC>0D1)_zbEks+278xxRw9w$kQfIJSU*ftF z&6Q}bL{kz?31elVI7)abiKm38lE_LTD~aq$WKSY{64{f!@C3sX3{NmT!SDpb6AWK4 ze8KPq!xs!+Fs}XL3x+QkzF_!*5elnNT7=Rflop}1SO}|ya9IeKg>YF&P& z!Uzd7PPU`3rzVAq`8$cPc#MzUQB1y?y?XL)w9#+m_#K7LSHYHxqYBbl&inEJpB3&a zcoOW2`R{$DUk7hclpRKwywvy0HrrR_VUm69;cx*jisB{qkF2TM9^Vy>eXRQCYUFR3 zF=lQ4Vf1+mu}iTs{W++y>@qK<(L|hvMc$;NI&0y$BjgqKqjF-Jr=hES>@Vdy+xyS( z=y~n>23=j3QUw=YtfA`#YWAMNodxc&Y1`gE{<#76v~m@WAxMs_;z`zaaJTQW1BF&w zIHa@sOqPcusa)85;iZImo$c-nmvz$H*%7*gbsKwujY--x)q9a0yD@5gJw=J15mV)% zdM`=aRo$7izCM%$P0L5Qw0(eN%28xZSwR4!wcQRZ8x}FmAeVa7e-ez zAqHUd^&De>ihRUNQxZe7A}(<-fhne^Pg=~f54aS*p`bXx-iduJGp7i$bYn0(X@rJHkq!5|10hkiz^wH9fGM zWxx0N8;pCoXD`|il?rha0J%njfYC#zcb_y{ZRl@VH-T)af-shW4Uq7RW^ZGVH~B=& zBMLw1R{``@Uvzn0eCKK!ZWZBPp%m?YAh{1#{v4v!nSL?$MM?`pt=HDM>f3A%i@m5$ z`93Xx+En)rj8M_lqVBp0_AJc{-N!f+?w_`B6v02OpazN~ipN#3$B>T$S3Y!hmPUz; z5*lS;lz?3p;ql)y&7txO!0I*xCgJwro@V$hZ0pq^FR`mI9P&%9E7wMf{?bSAfzoYSim+_?}}>wI)+8A zrA1b8B-wOqcktvpWEOrOA6`*TjyWv%!>;-ul$AUBw+p|E$3qdgQ>t%ZwTwHxcl0$m zu4zgJZ~|g^!}Yu+1#70a@u6h*^SiWy!4BEaN9pRIsA{**&R$D`g!+p{3taFwEsY9M#;OLrN`j%&S_UT6Fv&?ho zZ3_}l>|{&)lP#U(An|4Z63=OnxVAvz_6ZXE10?1L689UBxHduJ+60N41W3l&;LQMR z9A1z(ydbgvl5LEq5J<+489!$HnDJxAj~PE^{Fw1$#*Z04X8f4(W5$meKW6-d@e{_U zdrGpUdkRR#PZ&R8{Dkr89s_=ipD=#H_zB~0xqQpzTT{-ww#;k0y*nNU$72p(#ozwt Q!2cM0{^x)HfS*YIKN>DYI{*Lx literal 0 HcmV?d00001 diff --git a/resources/fonts/NimbusSans-BoldItalic.ttf b/resources/fonts/NimbusSans-BoldItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..1058bee50a7ad8dd0f7f0c04a1ec89b7e1bb228d GIT binary patch literal 190792 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 literal 0 HcmV?d00001 diff --git a/resources/fonts/README.md b/resources/fonts/README.md index a7df7b823..f4f3c4f2f 100644 --- a/resources/fonts/README.md +++ b/resources/fonts/README.md @@ -2,18 +2,29 @@ Not under `public/`: nothing here is served over HTTP. -| File | Font | Licence | +| File | Face | Used for | |---|---|---| -| `NimbusSans-Regular.ttf` | Nimbus Sans, URW++ | AGPL-3.0 with a PDF-embedding exception (`NimbusSans-LICENSE.txt`, `NimbusSans-COPYING.txt`) | +| `NimbusSans-Regular.ttf` | Nimbus Sans Regular | form fields (embedded in full), site line, notice page, card captions | +| `NimbusSans-Bold.ttf` | Nimbus Sans Bold | spell-column headings, relabelled numerals, notice headings, attunement badge | +| `NimbusSans-BoldItalic.ttf` | Nimbus Sans Bold Italic | spell-card casting time, range, components, duration | -**Why Nimbus Sans.** It is URW's metric clone of Helvetica: all 190 Latin-1 advance -widths are identical to Helvetica's, so a character-sheet field sized for Helvetica -fits the same way. It fills the fields Helvetica cannot draw (Polish, Turkish, Czech, -Cyrillic, Greek). It has no Vietnamese. +All three: URW++, AGPL-3.0 with a PDF-embedding exception (`NimbusSans-LICENSE.txt`, +`NimbusSans-COPYING.txt`). + +**Why Nimbus Sans.** It is URW's metric clone of Helvetica: all 224 WinAnsi advance +widths of each face are identical to the matching Helvetica's (pinned by +`nimbus-sans-is-helvetica-width`), so a box sized for Helvetica fits the same way. It +is the export's only sans, embedded, so every viewer draws the same glyphs and text +prints past Latin-1 (Polish, Turkish, Czech, Cyrillic, Greek). It has no Vietnamese. **Why the exception matters.** It permits embedding the font in a PDF whatever the PDF's own licence. It does not cover serving the font file, which is why it is not in `public/`. -**Source.** `https://github.com/ArtifexSoftware/urw-base35-fonts`, `fonts/NimbusSans-Regular.ttf`, -fetched 2026-10-21, SHA-256 `df5d1ce7b86c2e74974008623612bae136123a35ba7885de8a0721b68258edbc`. +**Source.** `https://github.com/ArtifexSoftware/urw-base35-fonts`, `fonts/`. + +| File | Fetched | SHA-256 | +|---|---|---| +| `NimbusSans-Regular.ttf` | 2026-10-21 | `df5d1ce7b86c2e74974008623612bae136123a35ba7885de8a0721b68258edbc` | +| `NimbusSans-Bold.ttf` | 2026-10-22 | `148726be75d2060a38dfd2e2637569f56c82af9f671e97131023b47add06f2cb` | +| `NimbusSans-BoldItalic.ttf` | 2026-10-22 | `f02dd8d808c9bf70323810c3f3f4ebfd4bb0d6da97b28e584869d26815afe7eb` | diff --git a/src/clj/orcpub/pdf.clj b/src/clj/orcpub/pdf.clj index 055435ed2..ef598f331 100644 --- a/src/clj/orcpub/pdf.clj +++ b/src/clj/orcpub/pdf.clj @@ -289,8 +289,8 @@ a page's content stream spreads by cloning and cannot be removed. :without-casters is the no-spell-page file for non-casters, so pages are only ever added (and style 4's licence line, on its spell page, is kept). :prints-site-line? = the artwork names - the site (style 4), so stamp-site-line! skips it. :site-line is where that line goes, - [x y] inches from bottom-left, MEASURED by dev/scan_site_line.clj and held by a test." + the site (style 4), so site-line-pages lists its pages. :site-line is where that line + goes, [x y] inches from bottom-left, MEASURED by dev/scan_site_line.clj, held by a test." {1 {:file "fillable-char-sheetstyle-1-1-spells.pdf" :marks :all :without-casters "fillable-char-sheetstyle-1-0-spells.pdf" :site-line [0.95 0.13]} @@ -850,7 +850,7 @@ ;; field prints blank. Text fields move to /NmS below; the form's own /DA and ;; non-text fields can still name /Helv. (when (nil? (.getFont res (COSName/getPDFName "Helv"))) - ;; Fresh instance (not the shared module-level HELVETICA): this COS object is + ;; A fresh instance per document, never a shared one: this COS object is ;; added to THIS document's resource tree, and sharing one across documents ;; risks aliasing during concurrent saves. (.put res (COSName/getPDFName "Helv") (PDType1Font. Standard14Fonts$FontName/HELVETICA))) @@ -1644,17 +1644,17 @@ (defn fit-text "Splits `text` at the last line fitting a `width` x `height` point box at `size` - (default `min-font-size`). Returns {:head fitting-text :tail remainder-or-nil - :lines line-count}; callers place :head in the field and :tail on a continuation - page. Line breaks are hard breaks, kept on both sides of the split (pdf_spec's - traits-fields separates sections with them). A word too wide for the box still - takes its own line, so callers cannot loop forever." - ([text width height] (fit-text text width height min-font-size)) - ([text width height size] + (default `min-font-size`), measured in `font`, the box's own. Returns {:head :tail + :lines}; :head goes in the field, :tail (or nil) on a continuation page. Line breaks + are hard breaks, kept on both sides of the split (pdf_spec's traits-fields separates + sections with them). A word too wide for the box still takes its own line, so callers + cannot loop forever." + ([font text width height] (fit-text font text width height min-font-size)) + ([font text width height size] (let [paragraphs (s/split-lines (str text)) wrap (fn [p] (if (s/blank? p) [""] - (vec (draw/split-lines p draw/HELVETICA size (/ width 72.0))))) + (vec (draw/split-lines p font size (/ width 72.0))))) per-box (max 1 (int (Math/floor (/ height (* size line-height-factor)))))] (if (s/blank? (str text)) {:head "" :tail nil :lines 0} @@ -1805,6 +1805,8 @@ share one paginated stream, so a few overflowing boxes cost one page, not one each." [doc fields] (let [form (.getAcroForm (.getDocumentCatalog doc)) + ;; The font the fields print in, so wrapping measures what prints. + font (field-font! doc form) [trimmed sections] ;; (2026-09) The blank test comes first: getField walks the field tree and ;; widget-box walks the pages, and a sheet leaves most of these empty. Doing @@ -1814,7 +1816,7 @@ (if (s/blank? value) [acc sections] (let [box (some->> (.getField form (name k)) (widget-box doc)) - {:keys [head tail]} (when box (apply fit-text value box))] + {:keys [head tail]} (when box (apply fit-text font value box))] (if tail [(assoc acc k head) (conj sections (str label "\n" tail))] [acc sections]))))) @@ -1826,7 +1828,7 @@ [(- (.getWidth r) 4.0) (- (.getHeight r) 4.0)])] (loop [remaining (s/join "\n\n" sections), n 1] (when-not (s/blank? remaining) - (let [{:keys [head tail]} (apply fit-text remaining box)] + (let [{:keys [head tail]} (apply fit-text font remaining box)] (add-overflow-page! doc template (str "overflow-" n) head) (recur (or tail "") (inc n))))))) trimmed)) @@ -1911,8 +1913,8 @@ row's printed value (the spell name) and returns {:concentration? :tag :material} or nil, so the server needs no spell data; a name it cannot place (renamed or homebrew) gets no marks. Drawn rather than written as form fields, which cost far - more bytes per row." - [doc annotate] + more bytes per row. `fonts` is the document's load-sans map." + [doc fonts annotate] (let [rows (->> (spell-row-widgets doc) (keep (fn [{:keys [field widget rect page]}] (let [v (str (.getValueAsString field))] @@ -1932,7 +1934,7 @@ :when text] (let [{:keys [dx size bold? grey]} (get annotation-columns k)] (draw/draw-text cs text - (if bold? draw/HELVETICA_BOLD draw/HELVETICA) + (draw/sans fonts (if bold? :bold :plain)) size (/ (- right dx) 72.0) base-y @@ -1966,8 +1968,8 @@ Works on any style with a measured numeral box, because it hides the digit rather than repainting the badge -- see numeral-boxes. `label` may be blank, to clear a box nothing uses rather than leave it reading as a level the character - does not have." - [doc style level suffix label] + does not have. Drawn in `fonts`' Nimbus bold." + [doc fonts style level suffix label] (when-let [{:keys [dx dy w h size]} (get numeral-boxes style)] (when-let [slots (some-> (.getAcroForm (.getDocumentCatalog doc)) (.getField (str "spell-slots-" level "-" suffix)))] @@ -1983,8 +1985,9 @@ (.fill cs) (.setNonStrokingColor cs (float 0) (float 0) (float 0)) (when-not (s/blank? (str label)) - (let [lw (* 72 (draw/string-width (str label) draw/HELVETICA_BOLD size))] - (draw/draw-text cs (str label) draw/HELVETICA_BOLD size + (let [font (draw/sans fonts :bold) + lw (* 72 (draw/string-width (str label) font size))] + (draw/draw-text cs (str label) font size (/ (+ x (/ (- w lw) 2.0)) 72.0) (/ (+ y (* 0.22 h)) 72.0) [0 0 0]))))))))) @@ -2000,9 +2003,9 @@ rather than throwing on a malformed list so it cannot cost the character their sheet. At most ten apply per section, and none on a style packing-supported? rejects. Box 0 takes no label (valid-relabel?); a blank for it is a no-op, having - no slots field to place a patch by." - ([doc instructions sections] (apply-relabel-instructions! doc instructions sections 1)) - ([doc instructions sections style] + no slots field to place a patch by. `fonts` is the document's load-sans map." + ([doc fonts instructions sections] (apply-relabel-instructions! doc fonts instructions sections 1)) + ([doc fonts instructions sections style] (let [wanted (if (packing-supported? style) (take (* sections max-relabels-per-section) (filter map? instructions)) ;; An unmeasured style would print the new number beside the old. @@ -2010,7 +2013,7 @@ {ok true bad false} (group-by #(valid-relabel? % sections) wanted)] (doseq [{:keys [section box label]} ok] (try - (relabel-numeral! doc style box section (or label "")) + (relabel-numeral! doc fonts style box section (or label "")) (catch Exception e (println "pdf: relabel failed for box" box "section" section "-" (.getMessage e))))) [(count ok) (+ (count bad) (max 0 (- (count (filter map? instructions)) (count wanted))))]))) @@ -2042,9 +2045,9 @@ (defn- heading-size "The largest size at or below heading-target-size that fits `label` in `width`, - floored at heading-floor-size." - [label width] - (let [natural (* 72 (draw/string-width label draw/HELVETICA_BOLD heading-target-size))] + floored at heading-floor-size, measured in `font`." + [font label width] + (let [natural (* 72 (draw/string-width label font heading-target-size))] (if (<= natural width) heading-target-size (max heading-floor-size (* heading-target-size (/ width natural)))))) @@ -2052,16 +2055,16 @@ (defn- fit-heading "`label` and the size to draw it at, both trimmed to `width`: shrunk toward heading-floor-size, then shortened with an ellipsis if even the floor does not - fit (\"Eldritch Knight\" at 6pt would print through the bar's rules)." - [label width] - (let [size (heading-size label width)] - (if (<= (* 72 (draw/string-width label draw/HELVETICA_BOLD size)) width) + fit (\"Eldritch Knight\" at 6pt would print through the bar's rules). In `font`." + [font label width] + (let [size (heading-size font label width)] + (if (<= (* 72 (draw/string-width label font size)) width) {:label label :size size} (loop [n (dec (count label))] (let [candidate (str (s/trimr (subs label 0 (max 0 n))) "\u2026")] (cond (<= n 1) {:label "\u2026" :size size} - (<= (* 72 (draw/string-width candidate draw/HELVETICA_BOLD size)) width) + (<= (* 72 (draw/string-width candidate font size)) width) {:label candidate :size size} :else (recur (dec n)))))))) @@ -2127,10 +2130,10 @@ bar. Only a cantrips bar has room, as its slot compartments are free. With `cantrips?` false the name shares the wide compartment with the SLOTS EXPENDED input. Box 0 prints CANTRIPS in its artwork where the name goes, so that word is - covered first." - ([doc style box suffix label] (draw-column-heading! doc style box suffix label nil)) - ([doc style box suffix label {:keys [ability dc attack cantrips?] - :or {cantrips? true}}] + covered first. Set in `fonts`' Nimbus bold." + ([doc fonts style box suffix label] (draw-column-heading! doc fonts style box suffix label nil)) + ([doc fonts style box suffix label {:keys [ability dc attack cantrips?] + :or {cantrips? true}}] (when-let [{:keys [narrow wide]} (bar-compartments doc box suffix)] (when-let [[hx hy hw hh] (if (zero? box) (cantrips-hexagon-box doc suffix) @@ -2140,7 +2143,8 @@ .getWidgets first .getPage) [nx nw] narrow [wx ww] wide - middle (+ hy (/ hh 2.0))] + middle (+ hy (/ hh 2.0)) + bold (draw/sans fonts :bold)] (when page (with-open [cs (PDPageContentStream. doc page PDPageContentStream$AppendMode/APPEND true true)] @@ -2159,13 +2163,13 @@ ;; word at its padded position. {csize :size ctext :label} (let [room (- nw cantrips-label-pad 2.0) - natural (* 72 (draw/string-width cantrips-label draw/HELVETICA_BOLD + natural (* 72 (draw/string-width cantrips-label bold cantrips-label-size))] (if (<= natural room) {:size cantrips-label-size :label cantrips-label} {:size (max 4.5 (* cantrips-label-size (/ room natural))) :label cantrips-label}))] - (draw/draw-text cs ctext draw/HELVETICA_BOLD csize + (draw/draw-text cs ctext bold csize (/ (+ (if (zero? box) ;; Past box 0's own divider, which ends about ;; nine points beyond the hexagon. @@ -2192,12 +2196,12 @@ ;; A level bar keeps its SLOTS EXPENDED input, so the name takes ;; the left half and the input moves to the right of it. room (if cantrips? (- ww 6.0) (* ww 0.5)) - {label :label size :size} (fit-heading label room) - lw (* 72 (draw/string-width label draw/HELVETICA_BOLD size)) + {label :label size :size} (fit-heading bold label room) + lw (* 72 (draw/string-width label bold size)) start (if cantrips? (+ wx (/ (- ww lw) 2.0)) (+ wx 4.0))] (when-not cantrips? (shrink-slots-expended! doc box suffix (+ wx lw 10.0))) - (draw/draw-text cs label draw/HELVETICA_BOLD size + (draw/draw-text cs label bold size (/ start 72.0) (/ (+ middle (* -0.36 size)) 72.0) [0.15 0.15 0.15]) @@ -2206,7 +2210,7 @@ ;; -- the save DC of the spell they are casting and what they add ;; to hit -- so they are set like the class name rather than like ;; the CANTRIPS caption, which is a label nobody needs to find. - (let [sw (* 72 (draw/string-width stats draw/HELVETICA_BOLD small)) + (let [sw (* 72 (draw/string-width stats bold small)) sx (+ wx (/ (- ww sw) 2.0)) ;; Clear of the bar's upper rule, which sits 9.75 above its ;; middle. @@ -2219,7 +2223,7 @@ (float (+ sw 4.0)) (float (+ small 1.5))) (.fill cs) (.setNonStrokingColor cs (float 0) (float 0) (float 0)) - (draw/draw-text cs stats draw/HELVETICA_BOLD small + (draw/draw-text cs stats bold small (/ sx 72.0) (/ sy 72.0) [0.1 0.1 0.1]))))))))))) @@ -2255,8 +2259,8 @@ In the document, not the response: the PDF is what gets saved and printed, and a browser banner is gone on the next click. First so it is read before the printing. - Helvetica, not Vollkorn -- a second load-fonts embeds a second subset of every face." - [doc] + Set in Nimbus Sans from `fonts`, the document's one load-sans map." + [doc fonts] (when-let [items (seq (errors/notices))] (let [page (PDPage. (draw/page-rect)) tree (.getPages doc) @@ -2265,29 +2269,40 @@ (.insertBefore tree page (.get tree 0)) (.addPage doc page)) (with-open [cs (PDPageContentStream. doc page)] - (draw/draw-text cs (:head notice-titles) draw/HELVETICA_BOLD 16 1.0 (- h 1.2)) - (draw/draw-text cs (:sub notice-titles) draw/HELVETICA 10 1.0 (- h 1.5)) + (draw/draw-text cs (:head notice-titles) (draw/sans fonts :bold) 16 1.0 (- h 1.2)) + (draw/draw-text cs (:sub notice-titles) (draw/sans fonts :plain) 10 1.0 (- h 1.5)) ;; draw-text-to-box takes the box TOP and puts its first baseline one leading ;; below it, so a detail at (- y 0.32) landed at (- y 0.46) -- exactly the row ;; pitch, printing every detail on top of the next heading. (doseq [[i {:keys [what detail]}] (map-indexed vector items) :let [y (- h 1.95 (* 0.62 i))] :while (> y 1.1)] - (draw/draw-text cs (str "- " what) draw/HELVETICA_BOLD 11 1.1 y) - (draw/draw-text-to-box cs detail draw/HELVETICA 9.5 1.25 (- y 0.16) + (draw/draw-text cs (str "- " what) (draw/sans fonts :bold) 11 1.1 y) + (draw/draw-text-to-box cs detail (draw/sans fonts :plain) 9.5 1.25 (- y 0.16) (- (draw/page-width 72) 2.4) 0.32)) - (draw/draw-text cs draw/site-stamp draw/HELVETICA 8 1.0 0.6 [0.45 0.45 0.45])) + (draw/draw-text cs draw/site-stamp (draw/sans fonts :plain) 8 1.0 0.6 [0.45 0.45 0.45])) page))) +(defn site-line-pages + "The pages whose artwork already prints the site line, as a set of their COS + dictionaries; empty unless `prints-own?` (the style's :prints-site-line?). Call it + BEFORE drawing anything: the scan reads page text, and a font this export added is + not embedded until save, so reading it logs a fallback-font warning per face." + [doc prints-own?] + (if prints-own? + (set (keep-indexed (fn [i page] (when (page-prints-site-line? doc i) (.getCOSObject page))) + (vec (.getPages doc)))) + #{})) + (defn stamp-site-line! "Prints the site line at `position` (the style's :site-line from sheet-masters, - chosen per style to clear its corner artwork) on every page that lacks one. - `prints-own?` means the artwork carries it on SOME pages (style 4's spell pages) - and gates the per-page text scan. Appends a stream per page: cloned spell pages - SHARE the master's content stream, so writing into it would print once per clone." - [doc [x y] prints-own?] - (doseq [[index page] (map-indexed vector (vec (.getPages doc))) - :when (not (and prints-own? (page-prints-site-line? doc index)))] + chosen per style to clear its corner artwork) on every page not in `printed`, a + site-line-pages set; pages added since that scan are stamped. Appends a stream per + page: cloned spell pages SHARE the master's content stream, so writing into it would + print once per clone. In `fonts`' Nimbus regular." + [doc fonts [x y] printed] + (doseq [page (vec (.getPages doc)) + :when (not (contains? printed (.getCOSObject page)))] (with-open [cs (PDPageContentStream. doc page PDPageContentStream$AppendMode/APPEND true true)] - (draw/draw-text cs draw/site-stamp draw/HELVETICA draw/site-stamp-size x y [0.45 0.45 0.45])))) + (draw/draw-text cs draw/site-stamp (draw/sans fonts :plain) draw/site-stamp-size x y [0.45 0.45 0.45])))) diff --git a/src/clj/orcpub/pdf/cards.clj b/src/clj/orcpub/pdf/cards.clj index 8c6e92c50..9e48295b3 100644 --- a/src/clj/orcpub/pdf/cards.clj +++ b/src/clj/orcpub/pdf/cards.clj @@ -17,9 +17,10 @@ (defn- draw-spell-field "One icon-and-value field on a spell card (casting time, range, duration, components): the `title` icon at [`x` `y`] with `value` printed over it. - Inches, `y` from the page TOP. `img` is the document's memoized image loader, and - both printer-friendly modes are handled here (see the note below)." - [cs img title value x y bw? bw-faded?] + Inches, `y` from the page TOP. `fonts` must carry draw/load-sans; `img` is the + document's memoized image loader. Both printer-friendly modes are handled here (see + the note below)." + [cs fonts img title value x y bw? bw-faded?] ;; The label overprints the icon; this is the one choke point for all four ;; per-spell icons. Colour: icon-red icon, black text. B&W solid: black icon, ;; WHITE-HALO text. B&W faded: black icon at 40%, black text. One SVG serves all. @@ -29,9 +30,9 @@ :else [(vec (take 3 draw/icon-red)) (last draw/icon-red)])] (draw/draw-svg-icon! cs img title x iy 0.25 color alpha) (if (and bw? (not bw-faded?)) - (draw/draw-halo-text cs value draw/HELVETICA_BOLD_OBLIQUE 8 x (- y 0.07)) + (draw/draw-halo-text cs value (draw/sans fonts :bold-italic) 8 x (- y 0.07)) (do (.setNonStrokingColor cs (float 0) (float 0) (float 0)) - (draw/draw-text cs value draw/HELVETICA_BOLD_OBLIQUE 8 x (- y 0.07)) + (draw/draw-text cs value (draw/sans fonts :bold-italic) 8 x (- y 0.07)) (.setNonStrokingColor cs (float 0) (float 0) (float 0)))))) (def ^:private site-stamp-strip @@ -222,7 +223,7 @@ (- box-width 0.24) 0.25) (when casting-time - (draw-spell-field cs + (draw-spell-field cs fonts img "magic-swirl" (str (sp/abbreviate-casting-time @@ -234,14 +235,14 @@ (draw/in-from-top (+ y 0.45)) bw? bw-faded?)) (when range - (draw-spell-field cs + (draw-spell-field cs fonts img "arrow-dunk" (sp/abbreviate-range range) (+ x 0.62) (draw/in-from-top (+ y 0.45)) bw? bw-faded?)) - (draw-spell-field cs + (draw-spell-field cs fonts img "shiny-purse" (s/join @@ -259,7 +260,7 @@ (draw/in-from-top (+ y 0.45)) bw? bw-faded?) (when duration - (draw-spell-field cs + (draw-spell-field cs fonts img "sands-of-time" (sp/abbreviate-duration duration) @@ -546,8 +547,8 @@ The foot says who may attune; this says THAT it must be, at the top where the rarity is, because that is the pair of facts anyone sorting a handful of cards is actually looking for. A letter rather than an invented glyph: there is no - artwork for it, and a letter cannot be misread as decoration." - [cs x y w dy] + artwork for it, and a letter cannot be misread as decoration. In `fonts`' Nimbus bold." + [cs fonts x y w dy] (let [bw 0.155 bh 0.145 left (- w 0.28 bw) c 0.035] @@ -557,7 +558,7 @@ [(- (+ left bw) c) (+ dy bh)] [(+ left c) (+ dy bh)] [left (- (+ dy bh) c)] [left (+ dy c)]] true) - (draw-centred-text! cs "A" draw/HELVETICA_BOLD 7 + (draw-centred-text! cs "A" (draw/sans fonts :bold) 7 (+ x left (/ bw 2)) (draw/in-from-top (+ y dy bh -0.036))) (.setLineWidth cs (float 1)))) @@ -595,14 +596,15 @@ (defn- draw-charge-track! "Somewhere to track `n` charges, drawn at `cy` in its own band under the header. Up to `tickable-charges` it is a circle each; past it (a Staff of the Magi has - fifty) a rule to write the remaining count on, over the total." - [cs x y w n cy label-y] + fifty) a rule to write the remaining count on, over the total. Labels in `fonts`' + Nimbus regular." + [cs fonts x y w n cy label-y] (.setLineWidth cs (float 0.8)) (if (<= n tickable-charges) (let [r 0.052 gap 0.145 cx (- (/ w 2) (/ (* gap (dec n)) 2))] - (draw-centred-text! cs "CHARGES" draw/HELVETICA 5.5 (+ x (/ w 2)) (draw/in-from-top (+ y label-y))) + (draw-centred-text! cs "CHARGES" (draw/sans fonts :plain) 5.5 (+ x (/ w 2)) (draw/in-from-top (+ y label-y))) (doseq [i (range n)] (circle! cs x y (+ cx (* gap i)) cy r))) ;; The rule and the total are centred as one group, not the rule alone: the @@ -610,11 +612,11 @@ (let [total (str "/ " n) rule-w 0.62 gap 0.05 - group (+ rule-w gap (draw/string-width total draw/HELVETICA 7)) + group (+ rule-w gap (draw/string-width total (draw/sans fonts :plain) 7)) left (- (/ w 2) (/ group 2))] - (draw-centred-text! cs "CHARGES" draw/HELVETICA 5.5 (+ x (/ w 2)) (draw/in-from-top (+ y label-y))) + (draw-centred-text! cs "CHARGES" (draw/sans fonts :plain) 5.5 (+ x (/ w 2)) (draw/in-from-top (+ y label-y))) (polyline! cs x y [[left cy] [(+ left rule-w) cy]] false) - (draw/draw-text cs total draw/HELVETICA 7 (+ x left rule-w gap) (draw/in-from-top (+ y cy -0.015))))) + (draw/draw-text cs total (draw/sans fonts :plain) 7 (+ x left rule-w gap) (draw/in-from-top (+ y cy -0.015))))) (.setLineWidth cs (float 1))) (defn print-items @@ -671,7 +673,7 @@ (draw-rarity-rail! cs x y box-width rarity (:rail down)) (draw-foot-ornament! cs x y box-width (- box-height (:ornament up))) (when clause - (draw-attunement-badge! cs x y box-width (:badge down))) + (draw-attunement-badge! cs fonts x y box-width (:badge down))) ;; The name is indented further and set larger, so it reads as a title. ;; It shrinks to fit two lines, but not below :name-floor, where it takes ;; a third instead. The block's height is fixed so header rules fall level @@ -706,7 +708,7 @@ (polyline! cs x y [[0.2 (:rule-under down)] [(- box-width 0.2) (:rule-under down)]] false) (.setLineWidth cs (float 1)) (when charges - (draw-charge-track! cs x y box-width charges (:charge-marks down) (:charge-label down)) + (draw-charge-track! cs fonts x y box-width charges (:charge-marks down) (:charge-label down)) (.setLineWidth cs (float 0.35)) (polyline! cs x y [[0.2 (:charge-under down)] [(- box-width 0.2) (:charge-under down)]] false) (.setLineWidth cs (float 1))) diff --git a/src/clj/orcpub/pdf/draw.clj b/src/clj/orcpub/pdf/draw.clj index f9d83d937..3a04c4a83 100644 --- a/src/clj/orcpub/pdf/draw.clj +++ b/src/clj/orcpub/pdf/draw.clj @@ -11,8 +11,7 @@ (:import (org.apache.pdfbox.pdmodel PDPageContentStream PDPageContentStream$AppendMode PDResources) (org.apache.pdfbox.pdmodel.common PDRectangle) - (org.apache.pdfbox.pdmodel.font PDType1Font PDType0Font PDFont - Standard14Fonts$FontName) + (org.apache.pdfbox.pdmodel.font PDType0Font PDFont) (org.apache.pdfbox.pdmodel.graphics.state PDExtendedGraphicsState) (org.apache.pdfbox.pdmodel.interactive.annotation PDAppearanceStream) (org.apache.pdfbox.pdmodel.graphics.image LosslessFactory) @@ -118,19 +117,6 @@ (curve (pt (- cx r) (+ cy k)) (pt (- cx k) (+ cy r)) (pt cx (+ cy r))) (curve (pt (+ cx k) (+ cy r)) (pt (+ cx r) (+ cy k)) (pt (+ cx r) cy)))) -;; The Base 14 fonts, present in every PDF reader. Constructed once at load time. -(def HELVETICA - "Standard Helvetica font (regular weight, upright)" - (PDType1Font. Standard14Fonts$FontName/HELVETICA)) - -(def HELVETICA_BOLD - "Standard Helvetica font (bold weight, upright)" - (PDType1Font. Standard14Fonts$FontName/HELVETICA_BOLD)) - -(def HELVETICA_BOLD_OBLIQUE - "Standard Helvetica font (bold weight, italic/oblique)" - (PDType1Font. Standard14Fonts$FontName/HELVETICA_BOLD_OBLIQUE)) - (def site-stamp "The site line printed on card backs, the spellbook foot and every character-sheet page. Here because all three draw it; the placement is each one's own." @@ -150,18 +136,6 @@ :bold "public/fonts/Vollkorn-Bold.ttf" :bold-italic "public/fonts/Vollkorn-BoldItalic.ttf"}) -(defn load-fonts - "Loads the fonts for the document. Will contain - :plain, :italic, :bold and :bold-italic fonts." - [doc] - (reduce-kv - (fn [m type file] - (assoc m type - (with-open [stream (.openStream (io/resource file))] - (PDType0Font/load doc stream)))) - {} - vollkorn-files)) - (def ^:private vollkorn-cmaps (delay (mapv (fn [file] (with-open [in (.openStream (io/resource file))] @@ -176,11 +150,53 @@ [cp] (every? #(pos? (.getGlyphId % (int cp))) @vollkorn-cmaps)) +(def sans-files + "Nimbus Sans, URW's metric clone of Helvetica, by face: every WinAnsi advance width + is Helvetica's. The export's one sans, embedded, so drawn text and form fields set + the same glyphs and print past Latin-1. Under resources/fonts, NOT public/: its + licence covers embedding in a PDF, not serving the file. See resources/fonts/README.md." + {:plain "fonts/NimbusSans-Regular.ttf" + :bold "fonts/NimbusSans-Bold.ttf" + :bold-italic "fonts/NimbusSans-BoldItalic.ttf"}) + (def nimbus-file - "Nimbus Sans, URW's metric clone of Helvetica, for the form fields Helvetica cannot draw. - Under resources/fonts, NOT public/: its licence covers embedding in a PDF, not serving - the file. See resources/fonts/README.md." - "fonts/NimbusSans-Regular.ttf") + "The face form fields are set in, embedded in full by pdf/field-font!." + (:plain sans-files)) + +(defn load-sans + "`sans-files` for `doc`, as {::sans {face (delay PDType0Font)}}, for load-fonts or + to pass on alone. Each face is embedded, as a subset, only when first drawn. Once per + document: every load embeds its own subset. And never across documents: drawing a + face registers it with that document, whose save subsets and closes it, so a second + document drawn with it throws on save (\"does not contain a 'cmap' table\")." + [doc] + {::sans (into {} + (for [[face file] sans-files] + [face (delay (with-open [in (.openStream (io/resource file))] + (PDType0Font/load doc in)))]))}) + +(defn sans + "Nimbus Sans `face` (:plain, :bold or :bold-italic) from `fonts`, a load-sans map." + [fonts face] + (if-let [d (get-in fonts [::sans face])] + @d + (throw (ex-info "no Nimbus Sans in this fonts map; merge in draw/load-sans" + {:face face :keys (keys fonts)})))) + +(defn load-fonts + "The fonts for `doc`: Vollkorn as :plain, :italic, :bold and :bold-italic, and + Nimbus Sans from `sans-map`, a load-sans map (a fresh one by default). Pass the + document's own: a second load-sans embeds every face it draws a second time." + ([doc] (load-fonts doc (load-sans doc))) + ([doc sans-map] + (merge (reduce-kv + (fn [m type file] + (assoc m type + (with-open [stream (.openStream (io/resource file))] + (PDType0Font/load doc stream)))) + {} + vollkorn-files) + sans-map))) (def ^:private nimbus-cmap (delay (with-open [in (.openStream (io/resource nimbus-file))] @@ -197,7 +213,7 @@ (vals (.getCodeToNameMap WinAnsiEncoding/INSTANCE))))) (defn winansi? - "Whether code point `cp` is in WinAnsiEncoding, so Helvetica can draw it. Read from + "Whether code point `cp` is in WinAnsiEncoding, so a Standard 14 font can draw it. Read from PDFBox's own table: WinAnsi is a BYTE encoding, not Unicode U+0000-U+00FF, and its 0x80-0x9F slots hold the curly quotes, dashes, ellipsis, bullet, oe and euro sign." [cp] @@ -210,7 +226,7 @@ (defn normalize-text "A value as text the target font can draw. nil -> nil; non-strings stringified; tab -> space; other controls dropped except newlines. Past ASCII and Latin-1, a character is - kept when `keep?` (a code point predicate, default winansi?, i.e. Helvetica) says the + kept when `keep?` (a code point predicate, default winansi?, i.e. a Standard 14 font) says the font draws it, else given its ASCII fallback (curly quote -> straight, dash -> -), else `?`." ([s] (normalize-text s winansi?)) diff --git a/src/clj/orcpub/routes.clj b/src/clj/orcpub/routes.clj index 57d447002..3bb8e8ca8 100644 --- a/src/clj/orcpub/routes.clj +++ b/src/clj/orcpub/routes.clj @@ -1604,14 +1604,18 @@ ;; PDFBox 3.x: Loader/loadPDF accepts byte[], File, or RandomAccessRead — ;; NOT InputStream. Read the resource stream into a byte array first. (with-open [doc (Loader/loadPDF (.readAllBytes input))] - ;; Fillable in every browser by default: write-fields! bakes real appearance streams, so - ;; values render everywhere and the form stays editable. `:flatten? true` gives a static PDF. - (let [fields (apply dissoc fields pdf-option-keys)] - ;; No prune: the masters are pruned by dev/prepare_templates.clj and growing only adds - ;; pages. add-missing-spell-pages! still prunes where it generates pages. - ;; Both run before write-fields!, so the fields they create or trim exist by then. - (pdf/grow-spell-sections! doc casters (if no-casters? :all marks)) - (pdf/add-missing-spell-pages! doc fields (config/get-pdf-max-caster-sections)) + ;; The document's one Nimbus Sans: every face loads once, when first drawn. + (let [sans (draw/load-sans doc) + ;; Fillable in every browser by default: write-fields! bakes real appearance streams, so + ;; values render everywhere and the form stays editable. `:flatten? true` gives a static PDF. + fields (apply dissoc fields pdf-option-keys) + ;; No prune: the masters are pruned by dev/prepare_templates.clj and growing only adds + ;; pages. add-missing-spell-pages! still prunes where it generates pages. + ;; Both run before write-fields!, so the fields they create or trim exist by then. + _ (pdf/grow-spell-sections! doc casters (if no-casters? :all marks)) + _ (pdf/add-missing-spell-pages! doc fields (config/get-pdf-max-caster-sections)) + ;; Once the template pages exist and before anything is drawn on them. + printed (pdf/site-line-pages doc (boolean prints-site-line?))] ;; Merge before spilling, so a style's shared box is measured as the one ;; value it prints rather than as its parts. (let [fields (pdf/merge-style-fields print-character-sheet-style? fields)] @@ -1621,7 +1625,7 @@ ;; bounds-checked against the sections this document actually grew. (when (seq spell-relabels) (let [[applied refused] - (pdf/apply-relabel-instructions! doc spell-relabels casters + (pdf/apply-relabel-instructions! doc sans spell-relabels casters print-character-sheet-style?)] (when (pos? refused) (errors/note! "Spell slot renumbering" @@ -1635,7 +1639,7 @@ (pdf/write-fields! doc (pdf/spill-overflow! doc fields) (true? flatten?) font-sizes (get pdf/unsupported-fields print-character-sheet-style?)) (when print-spell-annotations? - (pdf/annotate-spell-rows! doc spell-annotation)) + (pdf/annotate-spell-rows! doc sans spell-annotation)) ;; After the values, so a heading is drawn over a finished bar. Names ;; each packed column with the class holding it; caller-supplied, so the ;; box and section are checked the way the relabels are. @@ -1643,97 +1647,97 @@ :when (and (integer? box) (<= 0 box 9) (integer? section) (<= 1 section casters) (string? class) (<= 1 (count class) 60))] - (pdf/draw-column-heading! doc print-character-sheet-style? - box section class heading)))) - ;; After the pages exist, so clones are stamped too, and before the card - ;; pages are appended -- those carry the line on their backs already. - (pdf/stamp-site-line! doc site-line (boolean prints-site-line?)) - ;; Before the card and spellbook pages, which are already drawn at the right size: - ;; this re-papers the TEMPLATE pages only, and is a no-op on Letter. - (pdf/fit-sheet-to-page! doc) - ;; One set of fonts and one image embedder for the whole document. Both are - ;; per-document: a second load-fonts embeds a second subset of every face, - ;; and a second loader re-embeds the 998x998 card-back mark. Built only when - ;; a card page is actually coming, since a plain sheet needs neither. - (let [spell-cards? (and print-spell-cards? (seq spells-known)) - item-cards? (and print-magic-item-cards? (seq magic-items-known)) - book (when (seq spells-known) (spellbook-options spellbook character-name)) - spell-order (one-of #{:level :alpha} spell-order :level) - fonts (when (or spell-cards? item-cards? book) (draw/load-fonts doc)) - img (when (or spell-cards? item-cards? book) (draw/make-image-loader doc))] - ;; Order: sheet, spellbook, then cards. - (when book - (add-spellbook! doc fonts img book spells-known custom-spells)) - (when spell-cards? - (add-spell-cards! doc fonts img spells-known spell-save-dcs spell-attack-mods - custom-spells print-spell-card-dc-mod? card-back-logo-img - bw? bw-faded? spell-order)) - (when item-cards? - (add-magic-item-cards! doc fonts img magic-items-known card-back-logo-img - bw? bw-faded?))) - - ;; Both images are resolved BEFORE either is drawn, fetched concurrently: a fetch holds an - ;; export slot, so in sequence two slow images would cost two worst cases. - ;; No pdf/safe-image-url? here: pdf/fetch-image validates through safe-image-bytes, pinned to - ;; the addresses it resolved. The regex stays; it refuses file:// and ftp:// without a lookup. - (let [wanted (fn [url failed?] - (and url (not failed?) (well-formed-image-url? url) url)) - ;; Bytes the browser read beat the URL and skip the fetch entirely. - ;; Both arms deref, so nothing below has to know which it got. - image (fn [supplied url failed?] - (if-let [bytes (pdf/decode-image-bytes supplied)] - (delay bytes) - ;; probed-outcome, not fetch-image: the builder usually - ;; asked about this URL a moment ago, and that answer is - ;; cached. - (some-> (wanted url failed?) - (as-> u (future (:image (probed-outcome u))))))) - ;; A composed (paper-doll) portrait has no URL that could produce - ;; it -- the client bakes its CSS-mask layers -- and it arrives - ;; larger than an uploaded picture may be, so it goes through - ;; decode-artwork-bytes, which fits it instead of refusing it. - ;; - ;; Decoded eagerly rather than in a delay: it is local CPU with no - ;; network in it, and a delay that derefs to nil would be truthy - ;; here, so a portrait that failed to decode would suppress the - ;; pasted image-url that should have taken over. - composed (pdf/decode-artwork-bytes portrait-png) - portrait (if composed - (delay composed) - (image image-data image-url image-url-failed)) - faction (image faction-image-data faction-image-url faction-image-url-failed)] - (when-let [{:keys [data jpg?]} (some-> portrait deref)] - (case print-character-sheet-style? - 1 (pdf/draw-image-bytes! doc (pdf/get-page doc 1) data jpg? 0.45 1.75 2.35 3.15) - 2 (pdf/draw-image-bytes! doc (pdf/get-page doc 1) data jpg? 0.45 1.75 2.35 3.15) - 3 (pdf/draw-image-bytes! doc (pdf/get-page doc 1) data jpg? 0.45 1.75 2.35 3.15) - 4 (pdf/draw-image-bytes! doc (pdf/get-page doc 0) data jpg? 0.50 0.85 2.35 3.15)) - ;; The credit is baked into the composed PNG itself now (see - ;; portrait/draw-credit!), so there is nothing to print here: a - ;; second drawn line landed 0.12in under the first and said the - ;; same thing. - ) - (when-let [{:keys [data jpg?]} (some-> faction deref)] - (case print-character-sheet-style? - 1 (pdf/draw-image-bytes! doc (pdf/get-page doc 1) data jpg? 5.88 2.4 1.905 1.52) - 2 (pdf/draw-image-bytes! doc (pdf/get-page doc 1) data jpg? 5.88 2.4 1.905 1.52) - 3 (pdf/draw-image-bytes! doc (pdf/get-page doc 1) data jpg? 5.88 2.0 1.905 1.52) - 4 nil)) - ;; Inside this let, so it can see whether the composed portrait was - ;; actually used. Keyed on the decode, not on the field being present: - ;; a portrait-png that fails to decode falls back to the pasted - ;; image-url above, and crediting the illustrator for somebody else's - ;; photograph is the one thing this feature must not do. - (stamp-document-info! doc {:character-name character-name - :credit (when composed portrait-credit) - :art-mark (when composed - (some-> (try (.decode (java.util.Base64/getDecoder) ^String portrait-png) - (catch Exception _ nil)) - art-mark/mark-of))})) - ;; Last, so every notice is in: it prepends a page naming what was left out, and - ;; adds nothing at all when nothing was. - (pdf/add-notice-page! doc) - (.save doc output)) + (pdf/draw-column-heading! doc sans print-character-sheet-style? + box section class heading))) + ;; After the overflow pages exist, so they are stamped too, and before the + ;; card pages are appended -- those carry the line on their backs already. + (pdf/stamp-site-line! doc sans site-line printed) + ;; Before the card and spellbook pages, which are already drawn at the right size: + ;; this re-papers the TEMPLATE pages only, and is a no-op on Letter. + (pdf/fit-sheet-to-page! doc) + ;; One set of fonts and one image embedder for the whole document. Both are + ;; per-document: a second load-fonts embeds a second subset of every face, + ;; and a second loader re-embeds the 998x998 card-back mark. Built only when + ;; a card page is actually coming, since a plain sheet needs neither. + (let [spell-cards? (and print-spell-cards? (seq spells-known)) + item-cards? (and print-magic-item-cards? (seq magic-items-known)) + book (when (seq spells-known) (spellbook-options spellbook character-name)) + spell-order (one-of #{:level :alpha} spell-order :level) + fonts (when (or spell-cards? item-cards? book) (draw/load-fonts doc sans)) + img (when (or spell-cards? item-cards? book) (draw/make-image-loader doc))] + ;; Order: sheet, spellbook, then cards. + (when book + (add-spellbook! doc fonts img book spells-known custom-spells)) + (when spell-cards? + (add-spell-cards! doc fonts img spells-known spell-save-dcs spell-attack-mods + custom-spells print-spell-card-dc-mod? card-back-logo-img + bw? bw-faded? spell-order)) + (when item-cards? + (add-magic-item-cards! doc fonts img magic-items-known card-back-logo-img + bw? bw-faded?))) + + ;; Both images are resolved BEFORE either is drawn, fetched concurrently: a fetch holds an + ;; export slot, so in sequence two slow images would cost two worst cases. + ;; No pdf/safe-image-url? here: pdf/fetch-image validates through safe-image-bytes, pinned to + ;; the addresses it resolved. The regex stays; it refuses file:// and ftp:// without a lookup. + (let [wanted (fn [url failed?] + (and url (not failed?) (well-formed-image-url? url) url)) + ;; Bytes the browser read beat the URL and skip the fetch entirely. + ;; Both arms deref, so nothing below has to know which it got. + image (fn [supplied url failed?] + (if-let [bytes (pdf/decode-image-bytes supplied)] + (delay bytes) + ;; probed-outcome, not fetch-image: the builder usually + ;; asked about this URL a moment ago, and that answer is + ;; cached. + (some-> (wanted url failed?) + (as-> u (future (:image (probed-outcome u))))))) + ;; A composed (paper-doll) portrait has no URL that could produce + ;; it -- the client bakes its CSS-mask layers -- and it arrives + ;; larger than an uploaded picture may be, so it goes through + ;; decode-artwork-bytes, which fits it instead of refusing it. + ;; + ;; Decoded eagerly rather than in a delay: it is local CPU with no + ;; network in it, and a delay that derefs to nil would be truthy + ;; here, so a portrait that failed to decode would suppress the + ;; pasted image-url that should have taken over. + composed (pdf/decode-artwork-bytes portrait-png) + portrait (if composed + (delay composed) + (image image-data image-url image-url-failed)) + faction (image faction-image-data faction-image-url faction-image-url-failed)] + (when-let [{:keys [data jpg?]} (some-> portrait deref)] + (case print-character-sheet-style? + 1 (pdf/draw-image-bytes! doc (pdf/get-page doc 1) data jpg? 0.45 1.75 2.35 3.15) + 2 (pdf/draw-image-bytes! doc (pdf/get-page doc 1) data jpg? 0.45 1.75 2.35 3.15) + 3 (pdf/draw-image-bytes! doc (pdf/get-page doc 1) data jpg? 0.45 1.75 2.35 3.15) + 4 (pdf/draw-image-bytes! doc (pdf/get-page doc 0) data jpg? 0.50 0.85 2.35 3.15)) + ;; The credit is baked into the composed PNG itself now (see + ;; portrait/draw-credit!), so there is nothing to print here: a + ;; second drawn line landed 0.12in under the first and said the + ;; same thing. + ) + (when-let [{:keys [data jpg?]} (some-> faction deref)] + (case print-character-sheet-style? + 1 (pdf/draw-image-bytes! doc (pdf/get-page doc 1) data jpg? 5.88 2.4 1.905 1.52) + 2 (pdf/draw-image-bytes! doc (pdf/get-page doc 1) data jpg? 5.88 2.4 1.905 1.52) + 3 (pdf/draw-image-bytes! doc (pdf/get-page doc 1) data jpg? 5.88 2.0 1.905 1.52) + 4 nil)) + ;; Inside this let, so it can see whether the composed portrait was + ;; actually used. Keyed on the decode, not on the field being present: + ;; a portrait-png that fails to decode falls back to the pasted + ;; image-url above, and crediting the illustrator for somebody else's + ;; photograph is the one thing this feature must not do. + (stamp-document-info! doc {:character-name character-name + :credit (when composed portrait-credit) + :art-mark (when composed + (some-> (try (.decode (java.util.Base64/getDecoder) ^String portrait-png) + (catch Exception _ nil)) + art-mark/mark-of))})) + ;; Last, so every notice is in: it prepends a page naming what was left out, and + ;; adds nothing at all when nothing was. + (pdf/add-notice-page! doc sans) + (.save doc output))) (let [a (.toByteArray output)] {:status 200 :headers {"Content-Disposition" (str "inline; filename=\"" filename "\"")} diff --git a/test/card-geometry-a4-baseline.edn b/test/card-geometry-a4-baseline.edn index 16188db2f..6c8e6004b 100644 --- a/test/card-geometry-a4-baseline.edn +++ b/test/card-geometry-a4-baseline.edn @@ -113,7 +113,7 @@ "BT" "/F4 8.00 Tf" "396.28 761.51 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -126,7 +126,7 @@ "BT" "/F4 8.00 Tf" "432.28 761.51 Td" - "\"30 ft\" Tj" + "#hex:00160013000300490057 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -139,7 +139,7 @@ "BT" "/F4 8.00 Tf" "468.28 761.51 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -152,7 +152,7 @@ "BT" "/F4 8.00 Tf" "504.28 761.51 Td" - "\"Until dispelled\" Tj" + "#hex:003800510057004c004f00030047004c005600530048004f004f00480047 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -242,7 +242,7 @@ "BT" "/F4 8.00 Tf" "216.28 761.51 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -255,7 +255,7 @@ "BT" "/F4 8.00 Tf" "252.28 761.51 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -268,7 +268,7 @@ "BT" "/F4 8.00 Tf" "288.28 761.51 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -281,7 +281,7 @@ "BT" "/F4 8.00 Tf" "324.28 761.51 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "ET" "0.00 0.00 0.00 rg" "BT" @@ -352,7 +352,7 @@ "BT" "/F4 8.00 Tf" "36.28 761.51 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -365,7 +365,7 @@ "BT" "/F4 8.00 Tf" "72.28 761.51 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -378,7 +378,7 @@ "BT" "/F4 8.00 Tf" "108.28 761.51 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -391,7 +391,7 @@ "BT" "/F4 8.00 Tf" "144.28 761.51 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "ET" "0.00 0.00 0.00 rg" "BT" @@ -466,7 +466,7 @@ "BT" "/F4 8.00 Tf" "396.28 509.50 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -479,7 +479,7 @@ "BT" "/F4 8.00 Tf" "432.28 509.50 Td" - "\"500 ft\" Tj" + "#hex:001800130013000300490057 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -492,7 +492,7 @@ "BT" "/F4 8.00 Tf" "468.28 509.50 Td" - "\"V\" Tj" + "#hex:0039 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -505,7 +505,7 @@ "BT" "/F4 8.00 Tf" "504.28 509.50 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "ET" "0.00 0.00 0.00 rg" "BT" @@ -588,7 +588,7 @@ "BT" "/F4 8.00 Tf" "216.28 509.50 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -601,7 +601,7 @@ "BT" "/F4 8.00 Tf" "252.28 509.50 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -614,7 +614,7 @@ "BT" "/F4 8.00 Tf" "288.28 509.50 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -627,7 +627,7 @@ "BT" "/F4 8.00 Tf" "324.28 509.50 Td" - "\"8 hrs\" Tj" + "#hex:001b0003004b00550056 Tj" "ET" "0.00 0.00 0.00 rg" "BT" @@ -712,7 +712,7 @@ "BT" "/F4 8.00 Tf" "36.28 509.50 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -725,7 +725,7 @@ "BT" "/F4 8.00 Tf" "72.28 509.50 Td" - "\"10 ft\" Tj" + "#hex:00140013000300490057 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -738,7 +738,7 @@ "BT" "/F4 8.00 Tf" "108.28 509.50 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -751,7 +751,7 @@ "BT" "/F4 8.00 Tf" "144.28 509.50 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -841,7 +841,7 @@ "BT" "/F4 8.00 Tf" "396.28 257.51 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -854,7 +854,7 @@ "BT" "/F4 8.00 Tf" "432.28 257.51 Td" - "\"120 ft\" Tj" + "#hex:001400150013000300490057 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -867,7 +867,7 @@ "BT" "/F4 8.00 Tf" "468.28 257.51 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -880,7 +880,7 @@ "BT" "/F4 8.00 Tf" "504.28 257.51 Td" - "\"Conc, 2 hrs\" Tj" + "#hex:0026005200510046000f000300150003004b00550056 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -950,7 +950,7 @@ "BT" "/F4 8.00 Tf" "216.28 257.51 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -963,7 +963,7 @@ "BT" "/F4 8.00 Tf" "252.28 257.51 Td" - "\"Touch\" Tj" + "#hex:0037005200580046004b Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -976,7 +976,7 @@ "BT" "/F4 8.00 Tf" "288.28 257.51 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -989,7 +989,7 @@ "BT" "/F4 8.00 Tf" "324.28 257.51 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "ET" "0.00 0.00 0.00 rg" "BT" @@ -1074,7 +1074,7 @@ "BT" "/F4 8.00 Tf" "36.28 257.51 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -1087,7 +1087,7 @@ "BT" "/F4 8.00 Tf" "72.28 257.51 Td" - "\"30 ft\" Tj" + "#hex:00160013000300490057 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -1100,7 +1100,7 @@ "BT" "/F4 8.00 Tf" "108.28 257.51 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -1113,7 +1113,7 @@ "BT" "/F4 8.00 Tf" "144.28 257.51 Td" - "\"Special\" Tj" + "#hex:0036005300480046004c0044004f Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -1472,7 +1472,7 @@ "BT" "/F4 8.00 Tf" "396.28 761.51 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -1485,7 +1485,7 @@ "BT" "/F4 8.00 Tf" "432.28 761.51 Td" - "\"Sight\" Tj" + "#hex:0036004c004a004b0057 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -1498,7 +1498,7 @@ "BT" "/F4 8.00 Tf" "468.28 761.51 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -1511,7 +1511,7 @@ "BT" "/F4 8.00 Tf" "504.28 761.51 Td" - "\"Conc, 1 min\" Tj" + "#hex:0026005200510046000f0003001400030050004c0051 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -1567,7 +1567,7 @@ "BT" "/F4 8.00 Tf" "216.28 761.51 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -1580,7 +1580,7 @@ "BT" "/F4 8.00 Tf" "252.28 761.51 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -1593,7 +1593,7 @@ "BT" "/F4 8.00 Tf" "288.28 761.51 Td" - "\"V\" Tj" + "#hex:0039 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -1606,7 +1606,7 @@ "BT" "/F4 8.00 Tf" "324.28 761.51 Td" - "\"1 hr\" Tj" + "#hex:00140003004b0055 Tj" "ET" "0.00 0.00 0.00 rg" "BT" @@ -1661,7 +1661,7 @@ "BT" "/F4 8.00 Tf" "36.28 761.51 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -1674,7 +1674,7 @@ "BT" "/F4 8.00 Tf" "72.28 761.51 Td" - "\"10 ft\" Tj" + "#hex:00140013000300490057 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -1687,7 +1687,7 @@ "BT" "/F4 8.00 Tf" "108.28 761.51 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -1700,7 +1700,7 @@ "BT" "/F4 8.00 Tf" "144.28 761.51 Td" - "\"1 Rnd\" Tj" + "#hex:00140003003500510047 Tj" "ET" "0.00 0.00 0.00 rg"] ["0.88 0.88 0.88 RG" @@ -2020,7 +2020,7 @@ "BT" "/F2 7.00 Tf" "539.37 720.18 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -2177,7 +2177,7 @@ "BT" "/F2 7.00 Tf" "359.37 720.18 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -2334,7 +2334,7 @@ "BT" "/F2 7.00 Tf" "179.37 720.18 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -2491,7 +2491,7 @@ "BT" "/F2 7.00 Tf" "539.37 468.18 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -2648,7 +2648,7 @@ "BT" "/F2 7.00 Tf" "359.37 468.18 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -2805,7 +2805,7 @@ "BT" "/F2 7.00 Tf" "179.37 468.18 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -2962,7 +2962,7 @@ "BT" "/F2 7.00 Tf" "539.37 216.18 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -3119,7 +3119,7 @@ "BT" "/F2 7.00 Tf" "359.37 216.18 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -3276,7 +3276,7 @@ "BT" "/F2 7.00 Tf" "179.37 216.18 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -3594,7 +3594,7 @@ "BT" "/F2 7.00 Tf" "539.37 720.18 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -3751,7 +3751,7 @@ "BT" "/F2 7.00 Tf" "359.37 720.18 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -3908,7 +3908,7 @@ "BT" "/F2 7.00 Tf" "179.37 720.18 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -4195,63 +4195,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "395.63 760.86 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "395.63 761.51 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "395.63 762.15 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "396.28 760.86 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "396.28 762.15 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "396.93 760.86 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "396.93 761.51 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "396.93 762.15 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "396.28 761.51 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -4263,63 +4263,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "431.63 760.86 Td" - "\"30 ft\" Tj" + "#hex:00160013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "431.63 761.51 Td" - "\"30 ft\" Tj" + "#hex:00160013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "431.63 762.15 Td" - "\"30 ft\" Tj" + "#hex:00160013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "432.28 760.86 Td" - "\"30 ft\" Tj" + "#hex:00160013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "432.28 762.15 Td" - "\"30 ft\" Tj" + "#hex:00160013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "432.93 760.86 Td" - "\"30 ft\" Tj" + "#hex:00160013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "432.93 761.51 Td" - "\"30 ft\" Tj" + "#hex:00160013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "432.93 762.15 Td" - "\"30 ft\" Tj" + "#hex:00160013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "432.28 761.51 Td" - "\"30 ft\" Tj" + "#hex:00160013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -4331,63 +4331,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "467.63 760.86 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "467.63 761.51 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "467.63 762.15 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "468.28 760.86 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "468.28 762.15 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "468.93 760.86 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "468.93 761.51 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "468.93 762.15 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "468.28 761.51 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -4399,63 +4399,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "503.63 760.86 Td" - "\"Until dispelled\" Tj" + "#hex:003800510057004c004f00030047004c005600530048004f004f00480047 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "503.63 761.51 Td" - "\"Until dispelled\" Tj" + "#hex:003800510057004c004f00030047004c005600530048004f004f00480047 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "503.63 762.15 Td" - "\"Until dispelled\" Tj" + "#hex:003800510057004c004f00030047004c005600530048004f004f00480047 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "504.28 760.86 Td" - "\"Until dispelled\" Tj" + "#hex:003800510057004c004f00030047004c005600530048004f004f00480047 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "504.28 762.15 Td" - "\"Until dispelled\" Tj" + "#hex:003800510057004c004f00030047004c005600530048004f004f00480047 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "504.93 760.86 Td" - "\"Until dispelled\" Tj" + "#hex:003800510057004c004f00030047004c005600530048004f004f00480047 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "504.93 761.51 Td" - "\"Until dispelled\" Tj" + "#hex:003800510057004c004f00030047004c005600530048004f004f00480047 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "504.93 762.15 Td" - "\"Until dispelled\" Tj" + "#hex:003800510057004c004f00030047004c005600530048004f004f00480047 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "504.28 761.51 Td" - "\"Until dispelled\" Tj" + "#hex:003800510057004c004f00030047004c005600530048004f004f00480047 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -4544,63 +4544,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "215.63 760.86 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "215.63 761.51 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "215.63 762.15 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "216.28 760.86 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "216.28 762.15 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "216.93 760.86 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "216.93 761.51 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "216.93 762.15 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "216.28 761.51 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -4612,63 +4612,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "251.63 760.86 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "251.63 761.51 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "251.63 762.15 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "252.28 760.86 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "252.28 762.15 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "252.93 760.86 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "252.93 761.51 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "252.93 762.15 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "252.28 761.51 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -4680,63 +4680,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "287.63 760.86 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "287.63 761.51 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "287.63 762.15 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "288.28 760.86 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "288.28 762.15 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "288.93 760.86 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "288.93 761.51 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "288.93 762.15 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "288.28 761.51 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -4748,63 +4748,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "323.63 760.86 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "323.63 761.51 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "323.63 762.15 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "324.28 760.86 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "324.28 762.15 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "324.93 760.86 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "324.93 761.51 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "324.93 762.15 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "324.28 761.51 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" @@ -4874,63 +4874,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "35.63 760.86 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "35.63 761.51 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "35.63 762.15 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "36.28 760.86 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "36.28 762.15 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "36.93 760.86 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "36.93 761.51 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "36.93 762.15 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "36.28 761.51 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -4942,63 +4942,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "71.63 760.86 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "71.63 761.51 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "71.63 762.15 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "72.28 760.86 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "72.28 762.15 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "72.93 760.86 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "72.93 761.51 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "72.93 762.15 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "72.28 761.51 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -5010,63 +5010,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "107.63 760.86 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "107.63 761.51 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "107.63 762.15 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "108.28 760.86 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "108.28 762.15 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "108.93 760.86 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "108.93 761.51 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "108.93 762.15 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "108.28 761.51 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -5078,63 +5078,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "143.63 760.86 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "143.63 761.51 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "143.63 762.15 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "144.28 760.86 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "144.28 762.15 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "144.93 760.86 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "144.93 761.51 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "144.93 762.15 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "144.28 761.51 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" @@ -5208,63 +5208,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "395.63 508.86 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "395.63 509.50 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "395.63 510.15 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "396.28 508.86 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "396.28 510.15 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "396.93 508.86 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "396.93 509.50 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "396.93 510.15 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "396.28 509.50 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -5276,63 +5276,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "431.63 508.86 Td" - "\"500 ft\" Tj" + "#hex:001800130013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "431.63 509.50 Td" - "\"500 ft\" Tj" + "#hex:001800130013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "431.63 510.15 Td" - "\"500 ft\" Tj" + "#hex:001800130013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "432.28 508.86 Td" - "\"500 ft\" Tj" + "#hex:001800130013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "432.28 510.15 Td" - "\"500 ft\" Tj" + "#hex:001800130013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "432.93 508.86 Td" - "\"500 ft\" Tj" + "#hex:001800130013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "432.93 509.50 Td" - "\"500 ft\" Tj" + "#hex:001800130013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "432.93 510.15 Td" - "\"500 ft\" Tj" + "#hex:001800130013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "432.28 509.50 Td" - "\"500 ft\" Tj" + "#hex:001800130013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -5344,63 +5344,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "467.63 508.86 Td" - "\"V\" Tj" + "#hex:0039 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "467.63 509.50 Td" - "\"V\" Tj" + "#hex:0039 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "467.63 510.15 Td" - "\"V\" Tj" + "#hex:0039 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "468.28 508.86 Td" - "\"V\" Tj" + "#hex:0039 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "468.28 510.15 Td" - "\"V\" Tj" + "#hex:0039 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "468.93 508.86 Td" - "\"V\" Tj" + "#hex:0039 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "468.93 509.50 Td" - "\"V\" Tj" + "#hex:0039 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "468.93 510.15 Td" - "\"V\" Tj" + "#hex:0039 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "468.28 509.50 Td" - "\"V\" Tj" + "#hex:0039 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -5412,63 +5412,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "503.63 508.86 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "503.63 509.50 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "503.63 510.15 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "504.28 508.86 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "504.28 510.15 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "504.93 508.86 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "504.93 509.50 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "504.93 510.15 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "504.28 509.50 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" @@ -5550,63 +5550,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "215.63 508.86 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "215.63 509.50 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "215.63 510.15 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "216.28 508.86 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "216.28 510.15 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "216.93 508.86 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "216.93 509.50 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "216.93 510.15 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "216.28 509.50 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -5618,63 +5618,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "251.63 508.86 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "251.63 509.50 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "251.63 510.15 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "252.28 508.86 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "252.28 510.15 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "252.93 508.86 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "252.93 509.50 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "252.93 510.15 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "252.28 509.50 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -5686,63 +5686,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "287.63 508.86 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "287.63 509.50 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "287.63 510.15 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "288.28 508.86 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "288.28 510.15 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "288.93 508.86 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "288.93 509.50 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "288.93 510.15 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "288.28 509.50 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -5754,63 +5754,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "323.63 508.86 Td" - "\"8 hrs\" Tj" + "#hex:001b0003004b00550056 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "323.63 509.50 Td" - "\"8 hrs\" Tj" + "#hex:001b0003004b00550056 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "323.63 510.15 Td" - "\"8 hrs\" Tj" + "#hex:001b0003004b00550056 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "324.28 508.86 Td" - "\"8 hrs\" Tj" + "#hex:001b0003004b00550056 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "324.28 510.15 Td" - "\"8 hrs\" Tj" + "#hex:001b0003004b00550056 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "324.93 508.86 Td" - "\"8 hrs\" Tj" + "#hex:001b0003004b00550056 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "324.93 509.50 Td" - "\"8 hrs\" Tj" + "#hex:001b0003004b00550056 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "324.93 510.15 Td" - "\"8 hrs\" Tj" + "#hex:001b0003004b00550056 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "324.28 509.50 Td" - "\"8 hrs\" Tj" + "#hex:001b0003004b00550056 Tj" "0.00 0.00 0.00 rg" "ET" "BT" @@ -5894,63 +5894,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "35.63 508.86 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "35.63 509.50 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "35.63 510.15 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "36.28 508.86 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "36.28 510.15 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "36.93 508.86 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "36.93 509.50 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "36.93 510.15 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "36.28 509.50 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -5962,63 +5962,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "71.63 508.86 Td" - "\"10 ft\" Tj" + "#hex:00140013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "71.63 509.50 Td" - "\"10 ft\" Tj" + "#hex:00140013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "71.63 510.15 Td" - "\"10 ft\" Tj" + "#hex:00140013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "72.28 508.86 Td" - "\"10 ft\" Tj" + "#hex:00140013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "72.28 510.15 Td" - "\"10 ft\" Tj" + "#hex:00140013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "72.93 508.86 Td" - "\"10 ft\" Tj" + "#hex:00140013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "72.93 509.50 Td" - "\"10 ft\" Tj" + "#hex:00140013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "72.93 510.15 Td" - "\"10 ft\" Tj" + "#hex:00140013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "72.28 509.50 Td" - "\"10 ft\" Tj" + "#hex:00140013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -6030,63 +6030,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "107.63 508.86 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "107.63 509.50 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "107.63 510.15 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "108.28 508.86 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "108.28 510.15 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "108.93 508.86 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "108.93 509.50 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "108.93 510.15 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "108.28 509.50 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -6098,63 +6098,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "143.63 508.86 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "143.63 509.50 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "143.63 510.15 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "144.28 508.86 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "144.28 510.15 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "144.93 508.86 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "144.93 509.50 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "144.93 510.15 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "144.28 509.50 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -6243,63 +6243,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "395.63 256.86 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "395.63 257.51 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "395.63 258.15 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "396.28 256.86 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "396.28 258.15 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "396.93 256.86 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "396.93 257.51 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "396.93 258.15 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "396.28 257.51 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -6311,63 +6311,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "431.63 256.86 Td" - "\"120 ft\" Tj" + "#hex:001400150013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "431.63 257.51 Td" - "\"120 ft\" Tj" + "#hex:001400150013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "431.63 258.15 Td" - "\"120 ft\" Tj" + "#hex:001400150013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "432.28 256.86 Td" - "\"120 ft\" Tj" + "#hex:001400150013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "432.28 258.15 Td" - "\"120 ft\" Tj" + "#hex:001400150013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "432.93 256.86 Td" - "\"120 ft\" Tj" + "#hex:001400150013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "432.93 257.51 Td" - "\"120 ft\" Tj" + "#hex:001400150013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "432.93 258.15 Td" - "\"120 ft\" Tj" + "#hex:001400150013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "432.28 257.51 Td" - "\"120 ft\" Tj" + "#hex:001400150013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -6379,63 +6379,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "467.63 256.86 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "467.63 257.51 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "467.63 258.15 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "468.28 256.86 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "468.28 258.15 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "468.93 256.86 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "468.93 257.51 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "468.93 258.15 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "468.28 257.51 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -6447,63 +6447,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "503.63 256.86 Td" - "\"Conc, 2 hrs\" Tj" + "#hex:0026005200510046000f000300150003004b00550056 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "503.63 257.51 Td" - "\"Conc, 2 hrs\" Tj" + "#hex:0026005200510046000f000300150003004b00550056 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "503.63 258.15 Td" - "\"Conc, 2 hrs\" Tj" + "#hex:0026005200510046000f000300150003004b00550056 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "504.28 256.86 Td" - "\"Conc, 2 hrs\" Tj" + "#hex:0026005200510046000f000300150003004b00550056 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "504.28 258.15 Td" - "\"Conc, 2 hrs\" Tj" + "#hex:0026005200510046000f000300150003004b00550056 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "504.93 256.86 Td" - "\"Conc, 2 hrs\" Tj" + "#hex:0026005200510046000f000300150003004b00550056 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "504.93 257.51 Td" - "\"Conc, 2 hrs\" Tj" + "#hex:0026005200510046000f000300150003004b00550056 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "504.93 258.15 Td" - "\"Conc, 2 hrs\" Tj" + "#hex:0026005200510046000f000300150003004b00550056 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "504.28 257.51 Td" - "\"Conc, 2 hrs\" Tj" + "#hex:0026005200510046000f000300150003004b00550056 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -6572,63 +6572,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "215.63 256.86 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "215.63 257.51 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "215.63 258.15 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "216.28 256.86 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "216.28 258.15 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "216.93 256.86 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "216.93 257.51 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "216.93 258.15 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "216.28 257.51 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -6640,63 +6640,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "251.63 256.86 Td" - "\"Touch\" Tj" + "#hex:0037005200580046004b Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "251.63 257.51 Td" - "\"Touch\" Tj" + "#hex:0037005200580046004b Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "251.63 258.15 Td" - "\"Touch\" Tj" + "#hex:0037005200580046004b Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "252.28 256.86 Td" - "\"Touch\" Tj" + "#hex:0037005200580046004b Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "252.28 258.15 Td" - "\"Touch\" Tj" + "#hex:0037005200580046004b Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "252.93 256.86 Td" - "\"Touch\" Tj" + "#hex:0037005200580046004b Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "252.93 257.51 Td" - "\"Touch\" Tj" + "#hex:0037005200580046004b Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "252.93 258.15 Td" - "\"Touch\" Tj" + "#hex:0037005200580046004b Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "252.28 257.51 Td" - "\"Touch\" Tj" + "#hex:0037005200580046004b Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -6708,63 +6708,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "287.63 256.86 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "287.63 257.51 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "287.63 258.15 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "288.28 256.86 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "288.28 258.15 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "288.93 256.86 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "288.93 257.51 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "288.93 258.15 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "288.28 257.51 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -6776,63 +6776,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "323.63 256.86 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "323.63 257.51 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "323.63 258.15 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "324.28 256.86 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "324.28 258.15 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "324.93 256.86 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "324.93 257.51 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "324.93 258.15 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "324.28 257.51 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" @@ -6916,63 +6916,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "35.63 256.86 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "35.63 257.51 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "35.63 258.15 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "36.28 256.86 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "36.28 258.15 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "36.93 256.86 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "36.93 257.51 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "36.93 258.15 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "36.28 257.51 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -6984,63 +6984,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "71.63 256.86 Td" - "\"30 ft\" Tj" + "#hex:00160013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "71.63 257.51 Td" - "\"30 ft\" Tj" + "#hex:00160013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "71.63 258.15 Td" - "\"30 ft\" Tj" + "#hex:00160013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "72.28 256.86 Td" - "\"30 ft\" Tj" + "#hex:00160013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "72.28 258.15 Td" - "\"30 ft\" Tj" + "#hex:00160013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "72.93 256.86 Td" - "\"30 ft\" Tj" + "#hex:00160013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "72.93 257.51 Td" - "\"30 ft\" Tj" + "#hex:00160013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "72.93 258.15 Td" - "\"30 ft\" Tj" + "#hex:00160013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "72.28 257.51 Td" - "\"30 ft\" Tj" + "#hex:00160013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -7052,63 +7052,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "107.63 256.86 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "107.63 257.51 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "107.63 258.15 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "108.28 256.86 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "108.28 258.15 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "108.93 256.86 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "108.93 257.51 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "108.93 258.15 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "108.28 257.51 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -7120,63 +7120,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "143.63 256.86 Td" - "\"Special\" Tj" + "#hex:0036005300480046004c0044004f Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "143.63 257.51 Td" - "\"Special\" Tj" + "#hex:0036005300480046004c0044004f Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "143.63 258.15 Td" - "\"Special\" Tj" + "#hex:0036005300480046004c0044004f Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "144.28 256.86 Td" - "\"Special\" Tj" + "#hex:0036005300480046004c0044004f Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "144.28 258.15 Td" - "\"Special\" Tj" + "#hex:0036005300480046004c0044004f Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "144.93 256.86 Td" - "\"Special\" Tj" + "#hex:0036005300480046004c0044004f Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "144.93 257.51 Td" - "\"Special\" Tj" + "#hex:0036005300480046004c0044004f Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "144.93 258.15 Td" - "\"Special\" Tj" + "#hex:0036005300480046004c0044004f Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "144.28 257.51 Td" - "\"Special\" Tj" + "#hex:0036005300480046004c0044004f Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -7534,63 +7534,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "395.63 760.86 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "395.63 761.51 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "395.63 762.15 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "396.28 760.86 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "396.28 762.15 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "396.93 760.86 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "396.93 761.51 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "396.93 762.15 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "396.28 761.51 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -7602,63 +7602,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "431.63 760.86 Td" - "\"Sight\" Tj" + "#hex:0036004c004a004b0057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "431.63 761.51 Td" - "\"Sight\" Tj" + "#hex:0036004c004a004b0057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "431.63 762.15 Td" - "\"Sight\" Tj" + "#hex:0036004c004a004b0057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "432.28 760.86 Td" - "\"Sight\" Tj" + "#hex:0036004c004a004b0057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "432.28 762.15 Td" - "\"Sight\" Tj" + "#hex:0036004c004a004b0057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "432.93 760.86 Td" - "\"Sight\" Tj" + "#hex:0036004c004a004b0057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "432.93 761.51 Td" - "\"Sight\" Tj" + "#hex:0036004c004a004b0057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "432.93 762.15 Td" - "\"Sight\" Tj" + "#hex:0036004c004a004b0057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "432.28 761.51 Td" - "\"Sight\" Tj" + "#hex:0036004c004a004b0057 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -7670,63 +7670,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "467.63 760.86 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "467.63 761.51 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "467.63 762.15 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "468.28 760.86 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "468.28 762.15 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "468.93 760.86 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "468.93 761.51 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "468.93 762.15 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "468.28 761.51 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -7738,63 +7738,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "503.63 760.86 Td" - "\"Conc, 1 min\" Tj" + "#hex:0026005200510046000f0003001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "503.63 761.51 Td" - "\"Conc, 1 min\" Tj" + "#hex:0026005200510046000f0003001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "503.63 762.15 Td" - "\"Conc, 1 min\" Tj" + "#hex:0026005200510046000f0003001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "504.28 760.86 Td" - "\"Conc, 1 min\" Tj" + "#hex:0026005200510046000f0003001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "504.28 762.15 Td" - "\"Conc, 1 min\" Tj" + "#hex:0026005200510046000f0003001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "504.93 760.86 Td" - "\"Conc, 1 min\" Tj" + "#hex:0026005200510046000f0003001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "504.93 761.51 Td" - "\"Conc, 1 min\" Tj" + "#hex:0026005200510046000f0003001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "504.93 762.15 Td" - "\"Conc, 1 min\" Tj" + "#hex:0026005200510046000f0003001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "504.28 761.51 Td" - "\"Conc, 1 min\" Tj" + "#hex:0026005200510046000f0003001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -7849,63 +7849,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "215.63 760.86 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "215.63 761.51 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "215.63 762.15 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "216.28 760.86 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "216.28 762.15 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "216.93 760.86 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "216.93 761.51 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "216.93 762.15 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "216.28 761.51 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -7917,63 +7917,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "251.63 760.86 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "251.63 761.51 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "251.63 762.15 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "252.28 760.86 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "252.28 762.15 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "252.93 760.86 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "252.93 761.51 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "252.93 762.15 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "252.28 761.51 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -7985,63 +7985,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "287.63 760.86 Td" - "\"V\" Tj" + "#hex:0039 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "287.63 761.51 Td" - "\"V\" Tj" + "#hex:0039 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "287.63 762.15 Td" - "\"V\" Tj" + "#hex:0039 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "288.28 760.86 Td" - "\"V\" Tj" + "#hex:0039 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "288.28 762.15 Td" - "\"V\" Tj" + "#hex:0039 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "288.93 760.86 Td" - "\"V\" Tj" + "#hex:0039 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "288.93 761.51 Td" - "\"V\" Tj" + "#hex:0039 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "288.93 762.15 Td" - "\"V\" Tj" + "#hex:0039 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "288.28 761.51 Td" - "\"V\" Tj" + "#hex:0039 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -8053,63 +8053,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "323.63 760.86 Td" - "\"1 hr\" Tj" + "#hex:00140003004b0055 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "323.63 761.51 Td" - "\"1 hr\" Tj" + "#hex:00140003004b0055 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "323.63 762.15 Td" - "\"1 hr\" Tj" + "#hex:00140003004b0055 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "324.28 760.86 Td" - "\"1 hr\" Tj" + "#hex:00140003004b0055 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "324.28 762.15 Td" - "\"1 hr\" Tj" + "#hex:00140003004b0055 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "324.93 760.86 Td" - "\"1 hr\" Tj" + "#hex:00140003004b0055 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "324.93 761.51 Td" - "\"1 hr\" Tj" + "#hex:00140003004b0055 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "324.93 762.15 Td" - "\"1 hr\" Tj" + "#hex:00140003004b0055 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "324.28 761.51 Td" - "\"1 hr\" Tj" + "#hex:00140003004b0055 Tj" "0.00 0.00 0.00 rg" "ET" "BT" @@ -8163,63 +8163,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "35.63 760.86 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "35.63 761.51 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "35.63 762.15 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "36.28 760.86 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "36.28 762.15 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "36.93 760.86 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "36.93 761.51 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "36.93 762.15 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "36.28 761.51 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -8231,63 +8231,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "71.63 760.86 Td" - "\"10 ft\" Tj" + "#hex:00140013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "71.63 761.51 Td" - "\"10 ft\" Tj" + "#hex:00140013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "71.63 762.15 Td" - "\"10 ft\" Tj" + "#hex:00140013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "72.28 760.86 Td" - "\"10 ft\" Tj" + "#hex:00140013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "72.28 762.15 Td" - "\"10 ft\" Tj" + "#hex:00140013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "72.93 760.86 Td" - "\"10 ft\" Tj" + "#hex:00140013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "72.93 761.51 Td" - "\"10 ft\" Tj" + "#hex:00140013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "72.93 762.15 Td" - "\"10 ft\" Tj" + "#hex:00140013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "72.28 761.51 Td" - "\"10 ft\" Tj" + "#hex:00140013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -8299,63 +8299,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "107.63 760.86 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "107.63 761.51 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "107.63 762.15 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "108.28 760.86 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "108.28 762.15 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "108.93 760.86 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "108.93 761.51 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "108.93 762.15 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "108.28 761.51 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -8367,63 +8367,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "143.63 760.86 Td" - "\"1 Rnd\" Tj" + "#hex:00140003003500510047 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "143.63 761.51 Td" - "\"1 Rnd\" Tj" + "#hex:00140003003500510047 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "143.63 762.15 Td" - "\"1 Rnd\" Tj" + "#hex:00140003003500510047 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "144.28 760.86 Td" - "\"1 Rnd\" Tj" + "#hex:00140003003500510047 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "144.28 762.15 Td" - "\"1 Rnd\" Tj" + "#hex:00140003003500510047 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "144.93 760.86 Td" - "\"1 Rnd\" Tj" + "#hex:00140003003500510047 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "144.93 761.51 Td" - "\"1 Rnd\" Tj" + "#hex:00140003003500510047 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "144.93 762.15 Td" - "\"1 Rnd\" Tj" + "#hex:00140003003500510047 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "144.28 761.51 Td" - "\"1 Rnd\" Tj" + "#hex:00140003003500510047 Tj" "0.00 0.00 0.00 rg" "ET"] ["0.88 0.88 0.88 RG" @@ -8743,7 +8743,7 @@ "BT" "/F2 7.00 Tf" "539.37 720.18 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -8900,7 +8900,7 @@ "BT" "/F2 7.00 Tf" "359.37 720.18 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -9057,7 +9057,7 @@ "BT" "/F2 7.00 Tf" "179.37 720.18 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -9214,7 +9214,7 @@ "BT" "/F2 7.00 Tf" "539.37 468.18 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -9371,7 +9371,7 @@ "BT" "/F2 7.00 Tf" "359.37 468.18 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -9528,7 +9528,7 @@ "BT" "/F2 7.00 Tf" "179.37 468.18 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -9685,7 +9685,7 @@ "BT" "/F2 7.00 Tf" "539.37 216.18 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -9842,7 +9842,7 @@ "BT" "/F2 7.00 Tf" "359.37 216.18 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -9999,7 +9999,7 @@ "BT" "/F2 7.00 Tf" "179.37 216.18 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -10317,7 +10317,7 @@ "BT" "/F2 7.00 Tf" "539.37 720.18 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -10474,7 +10474,7 @@ "BT" "/F2 7.00 Tf" "359.37 720.18 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -10631,7 +10631,7 @@ "BT" "/F2 7.00 Tf" "179.37 720.18 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -10922,7 +10922,7 @@ "BT" "/F4 8.00 Tf" "396.28 761.51 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -10935,7 +10935,7 @@ "BT" "/F4 8.00 Tf" "432.28 761.51 Td" - "\"30 ft\" Tj" + "#hex:00160013000300490057 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -10948,7 +10948,7 @@ "BT" "/F4 8.00 Tf" "468.28 761.51 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -10961,7 +10961,7 @@ "BT" "/F4 8.00 Tf" "504.28 761.51 Td" - "\"Until dispelled\" Tj" + "#hex:003800510057004c004f00030047004c005600530048004f004f00480047 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11055,7 +11055,7 @@ "BT" "/F4 8.00 Tf" "216.28 761.51 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11068,7 +11068,7 @@ "BT" "/F4 8.00 Tf" "252.28 761.51 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11081,7 +11081,7 @@ "BT" "/F4 8.00 Tf" "288.28 761.51 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11094,7 +11094,7 @@ "BT" "/F4 8.00 Tf" "324.28 761.51 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "ET" "0.00 0.00 0.00 rg" "BT" @@ -11168,7 +11168,7 @@ "BT" "/F4 8.00 Tf" "36.28 761.51 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11181,7 +11181,7 @@ "BT" "/F4 8.00 Tf" "72.28 761.51 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11194,7 +11194,7 @@ "BT" "/F4 8.00 Tf" "108.28 761.51 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11207,7 +11207,7 @@ "BT" "/F4 8.00 Tf" "144.28 761.51 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "ET" "0.00 0.00 0.00 rg" "BT" @@ -11285,7 +11285,7 @@ "BT" "/F4 8.00 Tf" "396.28 509.50 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11298,7 +11298,7 @@ "BT" "/F4 8.00 Tf" "432.28 509.50 Td" - "\"500 ft\" Tj" + "#hex:001800130013000300490057 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11311,7 +11311,7 @@ "BT" "/F4 8.00 Tf" "468.28 509.50 Td" - "\"V\" Tj" + "#hex:0039 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11324,7 +11324,7 @@ "BT" "/F4 8.00 Tf" "504.28 509.50 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "ET" "0.00 0.00 0.00 rg" "BT" @@ -11410,7 +11410,7 @@ "BT" "/F4 8.00 Tf" "216.28 509.50 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11423,7 +11423,7 @@ "BT" "/F4 8.00 Tf" "252.28 509.50 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11436,7 +11436,7 @@ "BT" "/F4 8.00 Tf" "288.28 509.50 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11449,7 +11449,7 @@ "BT" "/F4 8.00 Tf" "324.28 509.50 Td" - "\"8 hrs\" Tj" + "#hex:001b0003004b00550056 Tj" "ET" "0.00 0.00 0.00 rg" "BT" @@ -11537,7 +11537,7 @@ "BT" "/F4 8.00 Tf" "36.28 509.50 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11550,7 +11550,7 @@ "BT" "/F4 8.00 Tf" "72.28 509.50 Td" - "\"10 ft\" Tj" + "#hex:00140013000300490057 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11563,7 +11563,7 @@ "BT" "/F4 8.00 Tf" "108.28 509.50 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11576,7 +11576,7 @@ "BT" "/F4 8.00 Tf" "144.28 509.50 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11670,7 +11670,7 @@ "BT" "/F4 8.00 Tf" "396.28 257.51 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11683,7 +11683,7 @@ "BT" "/F4 8.00 Tf" "432.28 257.51 Td" - "\"120 ft\" Tj" + "#hex:001400150013000300490057 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11696,7 +11696,7 @@ "BT" "/F4 8.00 Tf" "468.28 257.51 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11709,7 +11709,7 @@ "BT" "/F4 8.00 Tf" "504.28 257.51 Td" - "\"Conc, 2 hrs\" Tj" + "#hex:0026005200510046000f000300150003004b00550056 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11783,7 +11783,7 @@ "BT" "/F4 8.00 Tf" "216.28 257.51 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11796,7 +11796,7 @@ "BT" "/F4 8.00 Tf" "252.28 257.51 Td" - "\"Touch\" Tj" + "#hex:0037005200580046004b Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11809,7 +11809,7 @@ "BT" "/F4 8.00 Tf" "288.28 257.51 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11822,7 +11822,7 @@ "BT" "/F4 8.00 Tf" "324.28 257.51 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "ET" "0.00 0.00 0.00 rg" "BT" @@ -11910,7 +11910,7 @@ "BT" "/F4 8.00 Tf" "36.28 257.51 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11923,7 +11923,7 @@ "BT" "/F4 8.00 Tf" "72.28 257.51 Td" - "\"30 ft\" Tj" + "#hex:00160013000300490057 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11936,7 +11936,7 @@ "BT" "/F4 8.00 Tf" "108.28 257.51 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11949,7 +11949,7 @@ "BT" "/F4 8.00 Tf" "144.28 257.51 Td" - "\"Special\" Tj" + "#hex:0036005300480046004c0044004f Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -12312,7 +12312,7 @@ "BT" "/F4 8.00 Tf" "396.28 761.51 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -12325,7 +12325,7 @@ "BT" "/F4 8.00 Tf" "432.28 761.51 Td" - "\"Sight\" Tj" + "#hex:0036004c004a004b0057 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -12338,7 +12338,7 @@ "BT" "/F4 8.00 Tf" "468.28 761.51 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -12351,7 +12351,7 @@ "BT" "/F4 8.00 Tf" "504.28 761.51 Td" - "\"Conc, 1 min\" Tj" + "#hex:0026005200510046000f0003001400030050004c0051 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -12411,7 +12411,7 @@ "BT" "/F4 8.00 Tf" "216.28 761.51 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -12424,7 +12424,7 @@ "BT" "/F4 8.00 Tf" "252.28 761.51 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -12437,7 +12437,7 @@ "BT" "/F4 8.00 Tf" "288.28 761.51 Td" - "\"V\" Tj" + "#hex:0039 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -12450,7 +12450,7 @@ "BT" "/F4 8.00 Tf" "324.28 761.51 Td" - "\"1 hr\" Tj" + "#hex:00140003004b0055 Tj" "ET" "0.00 0.00 0.00 rg" "BT" @@ -12508,7 +12508,7 @@ "BT" "/F4 8.00 Tf" "36.28 761.51 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -12521,7 +12521,7 @@ "BT" "/F4 8.00 Tf" "72.28 761.51 Td" - "\"10 ft\" Tj" + "#hex:00140013000300490057 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -12534,7 +12534,7 @@ "BT" "/F4 8.00 Tf" "108.28 761.51 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -12547,7 +12547,7 @@ "BT" "/F4 8.00 Tf" "144.28 761.51 Td" - "\"1 Rnd\" Tj" + "#hex:00140003003500510047 Tj" "ET" "0.00 0.00 0.00 rg"] ["0.88 0.88 0.88 RG" @@ -12867,7 +12867,7 @@ "BT" "/F2 7.00 Tf" "539.37 720.18 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -13024,7 +13024,7 @@ "BT" "/F2 7.00 Tf" "359.37 720.18 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -13181,7 +13181,7 @@ "BT" "/F2 7.00 Tf" "179.37 720.18 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -13338,7 +13338,7 @@ "BT" "/F2 7.00 Tf" "539.37 468.18 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -13495,7 +13495,7 @@ "BT" "/F2 7.00 Tf" "359.37 468.18 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -13652,7 +13652,7 @@ "BT" "/F2 7.00 Tf" "179.37 468.18 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -13809,7 +13809,7 @@ "BT" "/F2 7.00 Tf" "539.37 216.18 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -13966,7 +13966,7 @@ "BT" "/F2 7.00 Tf" "359.37 216.18 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -14123,7 +14123,7 @@ "BT" "/F2 7.00 Tf" "179.37 216.18 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -14441,7 +14441,7 @@ "BT" "/F2 7.00 Tf" "539.37 720.18 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -14598,7 +14598,7 @@ "BT" "/F2 7.00 Tf" "359.37 720.18 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -14755,7 +14755,7 @@ "BT" "/F2 7.00 Tf" "179.37 720.18 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" diff --git a/test/card-geometry-baseline.edn b/test/card-geometry-baseline.edn index 75c668f4a..1dc03068c 100644 --- a/test/card-geometry-baseline.edn +++ b/test/card-geometry-baseline.edn @@ -113,7 +113,7 @@ "BT" "/F4 8.00 Tf" "404.64 736.56 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -126,7 +126,7 @@ "BT" "/F4 8.00 Tf" "440.64 736.56 Td" - "\"30 ft\" Tj" + "#hex:00160013000300490057 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -139,7 +139,7 @@ "BT" "/F4 8.00 Tf" "476.64 736.56 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -152,7 +152,7 @@ "BT" "/F4 8.00 Tf" "512.64 736.56 Td" - "\"Until dispelled\" Tj" + "#hex:003800510057004c004f00030047004c005600530048004f004f00480047 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -242,7 +242,7 @@ "BT" "/F4 8.00 Tf" "224.64 736.56 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -255,7 +255,7 @@ "BT" "/F4 8.00 Tf" "260.64 736.56 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -268,7 +268,7 @@ "BT" "/F4 8.00 Tf" "296.64 736.56 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -281,7 +281,7 @@ "BT" "/F4 8.00 Tf" "332.64 736.56 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "ET" "0.00 0.00 0.00 rg" "BT" @@ -352,7 +352,7 @@ "BT" "/F4 8.00 Tf" "44.64 736.56 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -365,7 +365,7 @@ "BT" "/F4 8.00 Tf" "80.64 736.56 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -378,7 +378,7 @@ "BT" "/F4 8.00 Tf" "116.64 736.56 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -391,7 +391,7 @@ "BT" "/F4 8.00 Tf" "152.64 736.56 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "ET" "0.00 0.00 0.00 rg" "BT" @@ -466,7 +466,7 @@ "BT" "/F4 8.00 Tf" "404.64 484.56 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -479,7 +479,7 @@ "BT" "/F4 8.00 Tf" "440.64 484.56 Td" - "\"500 ft\" Tj" + "#hex:001800130013000300490057 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -492,7 +492,7 @@ "BT" "/F4 8.00 Tf" "476.64 484.56 Td" - "\"V\" Tj" + "#hex:0039 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -505,7 +505,7 @@ "BT" "/F4 8.00 Tf" "512.64 484.56 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "ET" "0.00 0.00 0.00 rg" "BT" @@ -588,7 +588,7 @@ "BT" "/F4 8.00 Tf" "224.64 484.56 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -601,7 +601,7 @@ "BT" "/F4 8.00 Tf" "260.64 484.56 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -614,7 +614,7 @@ "BT" "/F4 8.00 Tf" "296.64 484.56 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -627,7 +627,7 @@ "BT" "/F4 8.00 Tf" "332.64 484.56 Td" - "\"8 hrs\" Tj" + "#hex:001b0003004b00550056 Tj" "ET" "0.00 0.00 0.00 rg" "BT" @@ -712,7 +712,7 @@ "BT" "/F4 8.00 Tf" "44.64 484.56 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -725,7 +725,7 @@ "BT" "/F4 8.00 Tf" "80.64 484.56 Td" - "\"10 ft\" Tj" + "#hex:00140013000300490057 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -738,7 +738,7 @@ "BT" "/F4 8.00 Tf" "116.64 484.56 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -751,7 +751,7 @@ "BT" "/F4 8.00 Tf" "152.64 484.56 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -841,7 +841,7 @@ "BT" "/F4 8.00 Tf" "404.64 232.56 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -854,7 +854,7 @@ "BT" "/F4 8.00 Tf" "440.64 232.56 Td" - "\"120 ft\" Tj" + "#hex:001400150013000300490057 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -867,7 +867,7 @@ "BT" "/F4 8.00 Tf" "476.64 232.56 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -880,7 +880,7 @@ "BT" "/F4 8.00 Tf" "512.64 232.56 Td" - "\"Conc, 2 hrs\" Tj" + "#hex:0026005200510046000f000300150003004b00550056 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -950,7 +950,7 @@ "BT" "/F4 8.00 Tf" "224.64 232.56 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -963,7 +963,7 @@ "BT" "/F4 8.00 Tf" "260.64 232.56 Td" - "\"Touch\" Tj" + "#hex:0037005200580046004b Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -976,7 +976,7 @@ "BT" "/F4 8.00 Tf" "296.64 232.56 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -989,7 +989,7 @@ "BT" "/F4 8.00 Tf" "332.64 232.56 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "ET" "0.00 0.00 0.00 rg" "BT" @@ -1074,7 +1074,7 @@ "BT" "/F4 8.00 Tf" "44.64 232.56 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -1087,7 +1087,7 @@ "BT" "/F4 8.00 Tf" "80.64 232.56 Td" - "\"30 ft\" Tj" + "#hex:00160013000300490057 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -1100,7 +1100,7 @@ "BT" "/F4 8.00 Tf" "116.64 232.56 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -1113,7 +1113,7 @@ "BT" "/F4 8.00 Tf" "152.64 232.56 Td" - "\"Special\" Tj" + "#hex:0036005300480046004c0044004f Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -1472,7 +1472,7 @@ "BT" "/F4 8.00 Tf" "404.64 736.56 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -1485,7 +1485,7 @@ "BT" "/F4 8.00 Tf" "440.64 736.56 Td" - "\"Sight\" Tj" + "#hex:0036004c004a004b0057 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -1498,7 +1498,7 @@ "BT" "/F4 8.00 Tf" "476.64 736.56 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -1511,7 +1511,7 @@ "BT" "/F4 8.00 Tf" "512.64 736.56 Td" - "\"Conc, 1 min\" Tj" + "#hex:0026005200510046000f0003001400030050004c0051 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -1567,7 +1567,7 @@ "BT" "/F4 8.00 Tf" "224.64 736.56 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -1580,7 +1580,7 @@ "BT" "/F4 8.00 Tf" "260.64 736.56 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -1593,7 +1593,7 @@ "BT" "/F4 8.00 Tf" "296.64 736.56 Td" - "\"V\" Tj" + "#hex:0039 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -1606,7 +1606,7 @@ "BT" "/F4 8.00 Tf" "332.64 736.56 Td" - "\"1 hr\" Tj" + "#hex:00140003004b0055 Tj" "ET" "0.00 0.00 0.00 rg" "BT" @@ -1661,7 +1661,7 @@ "BT" "/F4 8.00 Tf" "44.64 736.56 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -1674,7 +1674,7 @@ "BT" "/F4 8.00 Tf" "80.64 736.56 Td" - "\"10 ft\" Tj" + "#hex:00140013000300490057 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -1687,7 +1687,7 @@ "BT" "/F4 8.00 Tf" "116.64 736.56 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -1700,7 +1700,7 @@ "BT" "/F4 8.00 Tf" "152.64 736.56 Td" - "\"1 Rnd\" Tj" + "#hex:00140003003500510047 Tj" "ET" "0.00 0.00 0.00 rg"] ["0.88 0.88 0.88 RG" @@ -2020,7 +2020,7 @@ "BT" "/F2 7.00 Tf" "547.73 695.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -2177,7 +2177,7 @@ "BT" "/F2 7.00 Tf" "367.73 695.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -2334,7 +2334,7 @@ "BT" "/F2 7.00 Tf" "187.73 695.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -2491,7 +2491,7 @@ "BT" "/F2 7.00 Tf" "547.73 443.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -2648,7 +2648,7 @@ "BT" "/F2 7.00 Tf" "367.73 443.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -2805,7 +2805,7 @@ "BT" "/F2 7.00 Tf" "187.73 443.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -2962,7 +2962,7 @@ "BT" "/F2 7.00 Tf" "547.73 191.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -3119,7 +3119,7 @@ "BT" "/F2 7.00 Tf" "367.73 191.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -3276,7 +3276,7 @@ "BT" "/F2 7.00 Tf" "187.73 191.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -3594,7 +3594,7 @@ "BT" "/F2 7.00 Tf" "547.73 695.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -3751,7 +3751,7 @@ "BT" "/F2 7.00 Tf" "367.73 695.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -3908,7 +3908,7 @@ "BT" "/F2 7.00 Tf" "187.73 695.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -4195,63 +4195,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "403.99 735.91 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "403.99 736.56 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "403.99 737.21 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "404.64 735.91 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "404.64 737.21 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "405.29 735.91 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "405.29 736.56 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "405.29 737.21 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "404.64 736.56 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -4263,63 +4263,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "439.99 735.91 Td" - "\"30 ft\" Tj" + "#hex:00160013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "439.99 736.56 Td" - "\"30 ft\" Tj" + "#hex:00160013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "439.99 737.21 Td" - "\"30 ft\" Tj" + "#hex:00160013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "440.64 735.91 Td" - "\"30 ft\" Tj" + "#hex:00160013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "440.64 737.21 Td" - "\"30 ft\" Tj" + "#hex:00160013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "441.29 735.91 Td" - "\"30 ft\" Tj" + "#hex:00160013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "441.29 736.56 Td" - "\"30 ft\" Tj" + "#hex:00160013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "441.29 737.21 Td" - "\"30 ft\" Tj" + "#hex:00160013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "440.64 736.56 Td" - "\"30 ft\" Tj" + "#hex:00160013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -4331,63 +4331,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "475.99 735.91 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "475.99 736.56 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "475.99 737.21 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "476.64 735.91 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "476.64 737.21 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "477.29 735.91 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "477.29 736.56 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "477.29 737.21 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "476.64 736.56 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -4399,63 +4399,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "511.99 735.91 Td" - "\"Until dispelled\" Tj" + "#hex:003800510057004c004f00030047004c005600530048004f004f00480047 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "511.99 736.56 Td" - "\"Until dispelled\" Tj" + "#hex:003800510057004c004f00030047004c005600530048004f004f00480047 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "511.99 737.21 Td" - "\"Until dispelled\" Tj" + "#hex:003800510057004c004f00030047004c005600530048004f004f00480047 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "512.64 735.91 Td" - "\"Until dispelled\" Tj" + "#hex:003800510057004c004f00030047004c005600530048004f004f00480047 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "512.64 737.21 Td" - "\"Until dispelled\" Tj" + "#hex:003800510057004c004f00030047004c005600530048004f004f00480047 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "513.29 735.91 Td" - "\"Until dispelled\" Tj" + "#hex:003800510057004c004f00030047004c005600530048004f004f00480047 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "513.29 736.56 Td" - "\"Until dispelled\" Tj" + "#hex:003800510057004c004f00030047004c005600530048004f004f00480047 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "513.29 737.21 Td" - "\"Until dispelled\" Tj" + "#hex:003800510057004c004f00030047004c005600530048004f004f00480047 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "512.64 736.56 Td" - "\"Until dispelled\" Tj" + "#hex:003800510057004c004f00030047004c005600530048004f004f00480047 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -4544,63 +4544,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "223.99 735.91 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "223.99 736.56 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "223.99 737.21 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "224.64 735.91 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "224.64 737.21 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "225.29 735.91 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "225.29 736.56 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "225.29 737.21 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "224.64 736.56 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -4612,63 +4612,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "259.99 735.91 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "259.99 736.56 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "259.99 737.21 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "260.64 735.91 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "260.64 737.21 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "261.29 735.91 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "261.29 736.56 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "261.29 737.21 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "260.64 736.56 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -4680,63 +4680,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "295.99 735.91 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "295.99 736.56 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "295.99 737.21 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "296.64 735.91 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "296.64 737.21 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "297.29 735.91 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "297.29 736.56 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "297.29 737.21 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "296.64 736.56 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -4748,63 +4748,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "331.99 735.91 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "331.99 736.56 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "331.99 737.21 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "332.64 735.91 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "332.64 737.21 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "333.29 735.91 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "333.29 736.56 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "333.29 737.21 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "332.64 736.56 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" @@ -4874,63 +4874,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "43.99 735.91 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "43.99 736.56 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "43.99 737.21 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "44.64 735.91 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "44.64 737.21 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "45.29 735.91 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "45.29 736.56 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "45.29 737.21 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "44.64 736.56 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -4942,63 +4942,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "79.99 735.91 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "79.99 736.56 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "79.99 737.21 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "80.64 735.91 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "80.64 737.21 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "81.29 735.91 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "81.29 736.56 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "81.29 737.21 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "80.64 736.56 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -5010,63 +5010,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "115.99 735.91 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "115.99 736.56 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "115.99 737.21 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "116.64 735.91 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "116.64 737.21 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "117.29 735.91 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "117.29 736.56 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "117.29 737.21 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "116.64 736.56 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -5078,63 +5078,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "151.99 735.91 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "151.99 736.56 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "151.99 737.21 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "152.64 735.91 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "152.64 737.21 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "153.29 735.91 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "153.29 736.56 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "153.29 737.21 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "152.64 736.56 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" @@ -5208,63 +5208,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "403.99 483.91 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "403.99 484.56 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "403.99 485.21 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "404.64 483.91 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "404.64 485.21 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "405.29 483.91 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "405.29 484.56 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "405.29 485.21 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "404.64 484.56 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -5276,63 +5276,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "439.99 483.91 Td" - "\"500 ft\" Tj" + "#hex:001800130013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "439.99 484.56 Td" - "\"500 ft\" Tj" + "#hex:001800130013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "439.99 485.21 Td" - "\"500 ft\" Tj" + "#hex:001800130013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "440.64 483.91 Td" - "\"500 ft\" Tj" + "#hex:001800130013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "440.64 485.21 Td" - "\"500 ft\" Tj" + "#hex:001800130013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "441.29 483.91 Td" - "\"500 ft\" Tj" + "#hex:001800130013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "441.29 484.56 Td" - "\"500 ft\" Tj" + "#hex:001800130013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "441.29 485.21 Td" - "\"500 ft\" Tj" + "#hex:001800130013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "440.64 484.56 Td" - "\"500 ft\" Tj" + "#hex:001800130013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -5344,63 +5344,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "475.99 483.91 Td" - "\"V\" Tj" + "#hex:0039 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "475.99 484.56 Td" - "\"V\" Tj" + "#hex:0039 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "475.99 485.21 Td" - "\"V\" Tj" + "#hex:0039 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "476.64 483.91 Td" - "\"V\" Tj" + "#hex:0039 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "476.64 485.21 Td" - "\"V\" Tj" + "#hex:0039 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "477.29 483.91 Td" - "\"V\" Tj" + "#hex:0039 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "477.29 484.56 Td" - "\"V\" Tj" + "#hex:0039 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "477.29 485.21 Td" - "\"V\" Tj" + "#hex:0039 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "476.64 484.56 Td" - "\"V\" Tj" + "#hex:0039 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -5412,63 +5412,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "511.99 483.91 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "511.99 484.56 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "511.99 485.21 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "512.64 483.91 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "512.64 485.21 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "513.29 483.91 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "513.29 484.56 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "513.29 485.21 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "512.64 484.56 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" @@ -5550,63 +5550,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "223.99 483.91 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "223.99 484.56 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "223.99 485.21 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "224.64 483.91 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "224.64 485.21 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "225.29 483.91 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "225.29 484.56 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "225.29 485.21 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "224.64 484.56 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -5618,63 +5618,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "259.99 483.91 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "259.99 484.56 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "259.99 485.21 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "260.64 483.91 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "260.64 485.21 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "261.29 483.91 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "261.29 484.56 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "261.29 485.21 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "260.64 484.56 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -5686,63 +5686,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "295.99 483.91 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "295.99 484.56 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "295.99 485.21 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "296.64 483.91 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "296.64 485.21 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "297.29 483.91 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "297.29 484.56 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "297.29 485.21 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "296.64 484.56 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -5754,63 +5754,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "331.99 483.91 Td" - "\"8 hrs\" Tj" + "#hex:001b0003004b00550056 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "331.99 484.56 Td" - "\"8 hrs\" Tj" + "#hex:001b0003004b00550056 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "331.99 485.21 Td" - "\"8 hrs\" Tj" + "#hex:001b0003004b00550056 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "332.64 483.91 Td" - "\"8 hrs\" Tj" + "#hex:001b0003004b00550056 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "332.64 485.21 Td" - "\"8 hrs\" Tj" + "#hex:001b0003004b00550056 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "333.29 483.91 Td" - "\"8 hrs\" Tj" + "#hex:001b0003004b00550056 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "333.29 484.56 Td" - "\"8 hrs\" Tj" + "#hex:001b0003004b00550056 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "333.29 485.21 Td" - "\"8 hrs\" Tj" + "#hex:001b0003004b00550056 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "332.64 484.56 Td" - "\"8 hrs\" Tj" + "#hex:001b0003004b00550056 Tj" "0.00 0.00 0.00 rg" "ET" "BT" @@ -5894,63 +5894,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "43.99 483.91 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "43.99 484.56 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "43.99 485.21 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "44.64 483.91 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "44.64 485.21 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "45.29 483.91 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "45.29 484.56 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "45.29 485.21 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "44.64 484.56 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -5962,63 +5962,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "79.99 483.91 Td" - "\"10 ft\" Tj" + "#hex:00140013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "79.99 484.56 Td" - "\"10 ft\" Tj" + "#hex:00140013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "79.99 485.21 Td" - "\"10 ft\" Tj" + "#hex:00140013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "80.64 483.91 Td" - "\"10 ft\" Tj" + "#hex:00140013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "80.64 485.21 Td" - "\"10 ft\" Tj" + "#hex:00140013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "81.29 483.91 Td" - "\"10 ft\" Tj" + "#hex:00140013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "81.29 484.56 Td" - "\"10 ft\" Tj" + "#hex:00140013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "81.29 485.21 Td" - "\"10 ft\" Tj" + "#hex:00140013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "80.64 484.56 Td" - "\"10 ft\" Tj" + "#hex:00140013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -6030,63 +6030,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "115.99 483.91 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "115.99 484.56 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "115.99 485.21 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "116.64 483.91 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "116.64 485.21 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "117.29 483.91 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "117.29 484.56 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "117.29 485.21 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "116.64 484.56 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -6098,63 +6098,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "151.99 483.91 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "151.99 484.56 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "151.99 485.21 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "152.64 483.91 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "152.64 485.21 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "153.29 483.91 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "153.29 484.56 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "153.29 485.21 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "152.64 484.56 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -6243,63 +6243,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "403.99 231.91 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "403.99 232.56 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "403.99 233.21 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "404.64 231.91 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "404.64 233.21 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "405.29 231.91 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "405.29 232.56 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "405.29 233.21 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "404.64 232.56 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -6311,63 +6311,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "439.99 231.91 Td" - "\"120 ft\" Tj" + "#hex:001400150013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "439.99 232.56 Td" - "\"120 ft\" Tj" + "#hex:001400150013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "439.99 233.21 Td" - "\"120 ft\" Tj" + "#hex:001400150013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "440.64 231.91 Td" - "\"120 ft\" Tj" + "#hex:001400150013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "440.64 233.21 Td" - "\"120 ft\" Tj" + "#hex:001400150013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "441.29 231.91 Td" - "\"120 ft\" Tj" + "#hex:001400150013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "441.29 232.56 Td" - "\"120 ft\" Tj" + "#hex:001400150013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "441.29 233.21 Td" - "\"120 ft\" Tj" + "#hex:001400150013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "440.64 232.56 Td" - "\"120 ft\" Tj" + "#hex:001400150013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -6379,63 +6379,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "475.99 231.91 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "475.99 232.56 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "475.99 233.21 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "476.64 231.91 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "476.64 233.21 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "477.29 231.91 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "477.29 232.56 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "477.29 233.21 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "476.64 232.56 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -6447,63 +6447,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "511.99 231.91 Td" - "\"Conc, 2 hrs\" Tj" + "#hex:0026005200510046000f000300150003004b00550056 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "511.99 232.56 Td" - "\"Conc, 2 hrs\" Tj" + "#hex:0026005200510046000f000300150003004b00550056 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "511.99 233.21 Td" - "\"Conc, 2 hrs\" Tj" + "#hex:0026005200510046000f000300150003004b00550056 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "512.64 231.91 Td" - "\"Conc, 2 hrs\" Tj" + "#hex:0026005200510046000f000300150003004b00550056 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "512.64 233.21 Td" - "\"Conc, 2 hrs\" Tj" + "#hex:0026005200510046000f000300150003004b00550056 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "513.29 231.91 Td" - "\"Conc, 2 hrs\" Tj" + "#hex:0026005200510046000f000300150003004b00550056 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "513.29 232.56 Td" - "\"Conc, 2 hrs\" Tj" + "#hex:0026005200510046000f000300150003004b00550056 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "513.29 233.21 Td" - "\"Conc, 2 hrs\" Tj" + "#hex:0026005200510046000f000300150003004b00550056 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "512.64 232.56 Td" - "\"Conc, 2 hrs\" Tj" + "#hex:0026005200510046000f000300150003004b00550056 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -6572,63 +6572,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "223.99 231.91 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "223.99 232.56 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "223.99 233.21 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "224.64 231.91 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "224.64 233.21 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "225.29 231.91 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "225.29 232.56 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "225.29 233.21 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "224.64 232.56 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -6640,63 +6640,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "259.99 231.91 Td" - "\"Touch\" Tj" + "#hex:0037005200580046004b Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "259.99 232.56 Td" - "\"Touch\" Tj" + "#hex:0037005200580046004b Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "259.99 233.21 Td" - "\"Touch\" Tj" + "#hex:0037005200580046004b Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "260.64 231.91 Td" - "\"Touch\" Tj" + "#hex:0037005200580046004b Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "260.64 233.21 Td" - "\"Touch\" Tj" + "#hex:0037005200580046004b Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "261.29 231.91 Td" - "\"Touch\" Tj" + "#hex:0037005200580046004b Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "261.29 232.56 Td" - "\"Touch\" Tj" + "#hex:0037005200580046004b Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "261.29 233.21 Td" - "\"Touch\" Tj" + "#hex:0037005200580046004b Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "260.64 232.56 Td" - "\"Touch\" Tj" + "#hex:0037005200580046004b Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -6708,63 +6708,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "295.99 231.91 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "295.99 232.56 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "295.99 233.21 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "296.64 231.91 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "296.64 233.21 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "297.29 231.91 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "297.29 232.56 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "297.29 233.21 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "296.64 232.56 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -6776,63 +6776,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "331.99 231.91 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "331.99 232.56 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "331.99 233.21 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "332.64 231.91 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "332.64 233.21 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "333.29 231.91 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "333.29 232.56 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "333.29 233.21 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "332.64 232.56 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" @@ -6916,63 +6916,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "43.99 231.91 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "43.99 232.56 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "43.99 233.21 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "44.64 231.91 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "44.64 233.21 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "45.29 231.91 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "45.29 232.56 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "45.29 233.21 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "44.64 232.56 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -6984,63 +6984,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "79.99 231.91 Td" - "\"30 ft\" Tj" + "#hex:00160013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "79.99 232.56 Td" - "\"30 ft\" Tj" + "#hex:00160013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "79.99 233.21 Td" - "\"30 ft\" Tj" + "#hex:00160013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "80.64 231.91 Td" - "\"30 ft\" Tj" + "#hex:00160013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "80.64 233.21 Td" - "\"30 ft\" Tj" + "#hex:00160013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "81.29 231.91 Td" - "\"30 ft\" Tj" + "#hex:00160013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "81.29 232.56 Td" - "\"30 ft\" Tj" + "#hex:00160013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "81.29 233.21 Td" - "\"30 ft\" Tj" + "#hex:00160013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "80.64 232.56 Td" - "\"30 ft\" Tj" + "#hex:00160013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -7052,63 +7052,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "115.99 231.91 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "115.99 232.56 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "115.99 233.21 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "116.64 231.91 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "116.64 233.21 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "117.29 231.91 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "117.29 232.56 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "117.29 233.21 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "116.64 232.56 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -7120,63 +7120,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "151.99 231.91 Td" - "\"Special\" Tj" + "#hex:0036005300480046004c0044004f Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "151.99 232.56 Td" - "\"Special\" Tj" + "#hex:0036005300480046004c0044004f Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "151.99 233.21 Td" - "\"Special\" Tj" + "#hex:0036005300480046004c0044004f Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "152.64 231.91 Td" - "\"Special\" Tj" + "#hex:0036005300480046004c0044004f Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "152.64 233.21 Td" - "\"Special\" Tj" + "#hex:0036005300480046004c0044004f Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "153.29 231.91 Td" - "\"Special\" Tj" + "#hex:0036005300480046004c0044004f Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "153.29 232.56 Td" - "\"Special\" Tj" + "#hex:0036005300480046004c0044004f Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "153.29 233.21 Td" - "\"Special\" Tj" + "#hex:0036005300480046004c0044004f Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "152.64 232.56 Td" - "\"Special\" Tj" + "#hex:0036005300480046004c0044004f Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -7534,63 +7534,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "403.99 735.91 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "403.99 736.56 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "403.99 737.21 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "404.64 735.91 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "404.64 737.21 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "405.29 735.91 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "405.29 736.56 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "405.29 737.21 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "404.64 736.56 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -7602,63 +7602,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "439.99 735.91 Td" - "\"Sight\" Tj" + "#hex:0036004c004a004b0057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "439.99 736.56 Td" - "\"Sight\" Tj" + "#hex:0036004c004a004b0057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "439.99 737.21 Td" - "\"Sight\" Tj" + "#hex:0036004c004a004b0057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "440.64 735.91 Td" - "\"Sight\" Tj" + "#hex:0036004c004a004b0057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "440.64 737.21 Td" - "\"Sight\" Tj" + "#hex:0036004c004a004b0057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "441.29 735.91 Td" - "\"Sight\" Tj" + "#hex:0036004c004a004b0057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "441.29 736.56 Td" - "\"Sight\" Tj" + "#hex:0036004c004a004b0057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "441.29 737.21 Td" - "\"Sight\" Tj" + "#hex:0036004c004a004b0057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "440.64 736.56 Td" - "\"Sight\" Tj" + "#hex:0036004c004a004b0057 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -7670,63 +7670,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "475.99 735.91 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "475.99 736.56 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "475.99 737.21 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "476.64 735.91 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "476.64 737.21 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "477.29 735.91 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "477.29 736.56 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "477.29 737.21 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "476.64 736.56 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -7738,63 +7738,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "511.99 735.91 Td" - "\"Conc, 1 min\" Tj" + "#hex:0026005200510046000f0003001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "511.99 736.56 Td" - "\"Conc, 1 min\" Tj" + "#hex:0026005200510046000f0003001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "511.99 737.21 Td" - "\"Conc, 1 min\" Tj" + "#hex:0026005200510046000f0003001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "512.64 735.91 Td" - "\"Conc, 1 min\" Tj" + "#hex:0026005200510046000f0003001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "512.64 737.21 Td" - "\"Conc, 1 min\" Tj" + "#hex:0026005200510046000f0003001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "513.29 735.91 Td" - "\"Conc, 1 min\" Tj" + "#hex:0026005200510046000f0003001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "513.29 736.56 Td" - "\"Conc, 1 min\" Tj" + "#hex:0026005200510046000f0003001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "513.29 737.21 Td" - "\"Conc, 1 min\" Tj" + "#hex:0026005200510046000f0003001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "512.64 736.56 Td" - "\"Conc, 1 min\" Tj" + "#hex:0026005200510046000f0003001400030050004c0051 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -7849,63 +7849,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "223.99 735.91 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "223.99 736.56 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "223.99 737.21 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "224.64 735.91 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "224.64 737.21 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "225.29 735.91 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "225.29 736.56 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "225.29 737.21 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "224.64 736.56 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -7917,63 +7917,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "259.99 735.91 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "259.99 736.56 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "259.99 737.21 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "260.64 735.91 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "260.64 737.21 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "261.29 735.91 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "261.29 736.56 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "261.29 737.21 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "260.64 736.56 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -7985,63 +7985,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "295.99 735.91 Td" - "\"V\" Tj" + "#hex:0039 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "295.99 736.56 Td" - "\"V\" Tj" + "#hex:0039 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "295.99 737.21 Td" - "\"V\" Tj" + "#hex:0039 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "296.64 735.91 Td" - "\"V\" Tj" + "#hex:0039 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "296.64 737.21 Td" - "\"V\" Tj" + "#hex:0039 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "297.29 735.91 Td" - "\"V\" Tj" + "#hex:0039 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "297.29 736.56 Td" - "\"V\" Tj" + "#hex:0039 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "297.29 737.21 Td" - "\"V\" Tj" + "#hex:0039 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "296.64 736.56 Td" - "\"V\" Tj" + "#hex:0039 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -8053,63 +8053,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "331.99 735.91 Td" - "\"1 hr\" Tj" + "#hex:00140003004b0055 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "331.99 736.56 Td" - "\"1 hr\" Tj" + "#hex:00140003004b0055 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "331.99 737.21 Td" - "\"1 hr\" Tj" + "#hex:00140003004b0055 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "332.64 735.91 Td" - "\"1 hr\" Tj" + "#hex:00140003004b0055 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "332.64 737.21 Td" - "\"1 hr\" Tj" + "#hex:00140003004b0055 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "333.29 735.91 Td" - "\"1 hr\" Tj" + "#hex:00140003004b0055 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "333.29 736.56 Td" - "\"1 hr\" Tj" + "#hex:00140003004b0055 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "333.29 737.21 Td" - "\"1 hr\" Tj" + "#hex:00140003004b0055 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "332.64 736.56 Td" - "\"1 hr\" Tj" + "#hex:00140003004b0055 Tj" "0.00 0.00 0.00 rg" "ET" "BT" @@ -8163,63 +8163,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "43.99 735.91 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "43.99 736.56 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "43.99 737.21 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "44.64 735.91 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "44.64 737.21 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "45.29 735.91 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "45.29 736.56 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "45.29 737.21 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "44.64 736.56 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -8231,63 +8231,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "79.99 735.91 Td" - "\"10 ft\" Tj" + "#hex:00140013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "79.99 736.56 Td" - "\"10 ft\" Tj" + "#hex:00140013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "79.99 737.21 Td" - "\"10 ft\" Tj" + "#hex:00140013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "80.64 735.91 Td" - "\"10 ft\" Tj" + "#hex:00140013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "80.64 737.21 Td" - "\"10 ft\" Tj" + "#hex:00140013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "81.29 735.91 Td" - "\"10 ft\" Tj" + "#hex:00140013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "81.29 736.56 Td" - "\"10 ft\" Tj" + "#hex:00140013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "81.29 737.21 Td" - "\"10 ft\" Tj" + "#hex:00140013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "80.64 736.56 Td" - "\"10 ft\" Tj" + "#hex:00140013000300490057 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -8299,63 +8299,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "115.99 735.91 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "115.99 736.56 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "115.99 737.21 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "116.64 735.91 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "116.64 737.21 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "117.29 735.91 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "117.29 736.56 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "117.29 737.21 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "116.64 736.56 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "0.00 0.00 0.00 rg" "ET" "q" @@ -8367,63 +8367,63 @@ "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "151.99 735.91 Td" - "\"1 Rnd\" Tj" + "#hex:00140003003500510047 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "151.99 736.56 Td" - "\"1 Rnd\" Tj" + "#hex:00140003003500510047 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "151.99 737.21 Td" - "\"1 Rnd\" Tj" + "#hex:00140003003500510047 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "152.64 735.91 Td" - "\"1 Rnd\" Tj" + "#hex:00140003003500510047 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "152.64 737.21 Td" - "\"1 Rnd\" Tj" + "#hex:00140003003500510047 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "153.29 735.91 Td" - "\"1 Rnd\" Tj" + "#hex:00140003003500510047 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "153.29 736.56 Td" - "\"1 Rnd\" Tj" + "#hex:00140003003500510047 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "1.00 1.00 1.00 rg" "153.29 737.21 Td" - "\"1 Rnd\" Tj" + "#hex:00140003003500510047 Tj" "0.00 0.00 0.00 rg" "ET" "BT" "/F4 8.00 Tf" "0.00 0.00 0.00 rg" "152.64 736.56 Td" - "\"1 Rnd\" Tj" + "#hex:00140003003500510047 Tj" "0.00 0.00 0.00 rg" "ET"] ["0.88 0.88 0.88 RG" @@ -8743,7 +8743,7 @@ "BT" "/F2 7.00 Tf" "547.73 695.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -8900,7 +8900,7 @@ "BT" "/F2 7.00 Tf" "367.73 695.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -9057,7 +9057,7 @@ "BT" "/F2 7.00 Tf" "187.73 695.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -9214,7 +9214,7 @@ "BT" "/F2 7.00 Tf" "547.73 443.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -9371,7 +9371,7 @@ "BT" "/F2 7.00 Tf" "367.73 443.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -9528,7 +9528,7 @@ "BT" "/F2 7.00 Tf" "187.73 443.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -9685,7 +9685,7 @@ "BT" "/F2 7.00 Tf" "547.73 191.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -9842,7 +9842,7 @@ "BT" "/F2 7.00 Tf" "367.73 191.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -9999,7 +9999,7 @@ "BT" "/F2 7.00 Tf" "187.73 191.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -10317,7 +10317,7 @@ "BT" "/F2 7.00 Tf" "547.73 695.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -10474,7 +10474,7 @@ "BT" "/F2 7.00 Tf" "367.73 695.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -10631,7 +10631,7 @@ "BT" "/F2 7.00 Tf" "187.73 695.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -10922,7 +10922,7 @@ "BT" "/F4 8.00 Tf" "404.64 736.56 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -10935,7 +10935,7 @@ "BT" "/F4 8.00 Tf" "440.64 736.56 Td" - "\"30 ft\" Tj" + "#hex:00160013000300490057 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -10948,7 +10948,7 @@ "BT" "/F4 8.00 Tf" "476.64 736.56 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -10961,7 +10961,7 @@ "BT" "/F4 8.00 Tf" "512.64 736.56 Td" - "\"Until dispelled\" Tj" + "#hex:003800510057004c004f00030047004c005600530048004f004f00480047 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11055,7 +11055,7 @@ "BT" "/F4 8.00 Tf" "224.64 736.56 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11068,7 +11068,7 @@ "BT" "/F4 8.00 Tf" "260.64 736.56 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11081,7 +11081,7 @@ "BT" "/F4 8.00 Tf" "296.64 736.56 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11094,7 +11094,7 @@ "BT" "/F4 8.00 Tf" "332.64 736.56 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "ET" "0.00 0.00 0.00 rg" "BT" @@ -11168,7 +11168,7 @@ "BT" "/F4 8.00 Tf" "44.64 736.56 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11181,7 +11181,7 @@ "BT" "/F4 8.00 Tf" "80.64 736.56 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11194,7 +11194,7 @@ "BT" "/F4 8.00 Tf" "116.64 736.56 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11207,7 +11207,7 @@ "BT" "/F4 8.00 Tf" "152.64 736.56 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "ET" "0.00 0.00 0.00 rg" "BT" @@ -11285,7 +11285,7 @@ "BT" "/F4 8.00 Tf" "404.64 484.56 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11298,7 +11298,7 @@ "BT" "/F4 8.00 Tf" "440.64 484.56 Td" - "\"500 ft\" Tj" + "#hex:001800130013000300490057 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11311,7 +11311,7 @@ "BT" "/F4 8.00 Tf" "476.64 484.56 Td" - "\"V\" Tj" + "#hex:0039 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11324,7 +11324,7 @@ "BT" "/F4 8.00 Tf" "512.64 484.56 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "ET" "0.00 0.00 0.00 rg" "BT" @@ -11410,7 +11410,7 @@ "BT" "/F4 8.00 Tf" "224.64 484.56 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11423,7 +11423,7 @@ "BT" "/F4 8.00 Tf" "260.64 484.56 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11436,7 +11436,7 @@ "BT" "/F4 8.00 Tf" "296.64 484.56 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11449,7 +11449,7 @@ "BT" "/F4 8.00 Tf" "332.64 484.56 Td" - "\"8 hrs\" Tj" + "#hex:001b0003004b00550056 Tj" "ET" "0.00 0.00 0.00 rg" "BT" @@ -11537,7 +11537,7 @@ "BT" "/F4 8.00 Tf" "44.64 484.56 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11550,7 +11550,7 @@ "BT" "/F4 8.00 Tf" "80.64 484.56 Td" - "\"10 ft\" Tj" + "#hex:00140013000300490057 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11563,7 +11563,7 @@ "BT" "/F4 8.00 Tf" "116.64 484.56 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11576,7 +11576,7 @@ "BT" "/F4 8.00 Tf" "152.64 484.56 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11670,7 +11670,7 @@ "BT" "/F4 8.00 Tf" "404.64 232.56 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11683,7 +11683,7 @@ "BT" "/F4 8.00 Tf" "440.64 232.56 Td" - "\"120 ft\" Tj" + "#hex:001400150013000300490057 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11696,7 +11696,7 @@ "BT" "/F4 8.00 Tf" "476.64 232.56 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11709,7 +11709,7 @@ "BT" "/F4 8.00 Tf" "512.64 232.56 Td" - "\"Conc, 2 hrs\" Tj" + "#hex:0026005200510046000f000300150003004b00550056 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11783,7 +11783,7 @@ "BT" "/F4 8.00 Tf" "224.64 232.56 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11796,7 +11796,7 @@ "BT" "/F4 8.00 Tf" "260.64 232.56 Td" - "\"Touch\" Tj" + "#hex:0037005200580046004b Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11809,7 +11809,7 @@ "BT" "/F4 8.00 Tf" "296.64 232.56 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11822,7 +11822,7 @@ "BT" "/F4 8.00 Tf" "332.64 232.56 Td" - "\"Inst\" Tj" + "#hex:002c005100560057 Tj" "ET" "0.00 0.00 0.00 rg" "BT" @@ -11910,7 +11910,7 @@ "BT" "/F4 8.00 Tf" "44.64 232.56 Td" - "\"1 min\" Tj" + "#hex:001400030050004c0051 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11923,7 +11923,7 @@ "BT" "/F4 8.00 Tf" "80.64 232.56 Td" - "\"30 ft\" Tj" + "#hex:00160013000300490057 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11936,7 +11936,7 @@ "BT" "/F4 8.00 Tf" "116.64 232.56 Td" - "\"V,S,M\" Tj" + "#hex:0039000f0036000f0030 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -11949,7 +11949,7 @@ "BT" "/F4 8.00 Tf" "152.64 232.56 Td" - "\"Special\" Tj" + "#hex:0036005300480046004c0044004f Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -12312,7 +12312,7 @@ "BT" "/F4 8.00 Tf" "404.64 736.56 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -12325,7 +12325,7 @@ "BT" "/F4 8.00 Tf" "440.64 736.56 Td" - "\"Sight\" Tj" + "#hex:0036004c004a004b0057 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -12338,7 +12338,7 @@ "BT" "/F4 8.00 Tf" "476.64 736.56 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -12351,7 +12351,7 @@ "BT" "/F4 8.00 Tf" "512.64 736.56 Td" - "\"Conc, 1 min\" Tj" + "#hex:0026005200510046000f0003001400030050004c0051 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -12411,7 +12411,7 @@ "BT" "/F4 8.00 Tf" "224.64 736.56 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -12424,7 +12424,7 @@ "BT" "/F4 8.00 Tf" "260.64 736.56 Td" - "\"Self\" Tj" + "#hex:00360048004f0049 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -12437,7 +12437,7 @@ "BT" "/F4 8.00 Tf" "296.64 736.56 Td" - "\"V\" Tj" + "#hex:0039 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -12450,7 +12450,7 @@ "BT" "/F4 8.00 Tf" "332.64 736.56 Td" - "\"1 hr\" Tj" + "#hex:00140003004b0055 Tj" "ET" "0.00 0.00 0.00 rg" "BT" @@ -12508,7 +12508,7 @@ "BT" "/F4 8.00 Tf" "44.64 736.56 Td" - "\"1 Act.\" Tj" + "#hex:001400030024004600570011 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -12521,7 +12521,7 @@ "BT" "/F4 8.00 Tf" "80.64 736.56 Td" - "\"10 ft\" Tj" + "#hex:00140013000300490057 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -12534,7 +12534,7 @@ "BT" "/F4 8.00 Tf" "116.64 736.56 Td" - "\"V,S\" Tj" + "#hex:0039000f0036 Tj" "ET" "0.00 0.00 0.00 rg" "q" @@ -12547,7 +12547,7 @@ "BT" "/F4 8.00 Tf" "152.64 736.56 Td" - "\"1 Rnd\" Tj" + "#hex:00140003003500510047 Tj" "ET" "0.00 0.00 0.00 rg"] ["0.88 0.88 0.88 RG" @@ -12867,7 +12867,7 @@ "BT" "/F2 7.00 Tf" "547.73 695.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -13024,7 +13024,7 @@ "BT" "/F2 7.00 Tf" "367.73 695.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -13181,7 +13181,7 @@ "BT" "/F2 7.00 Tf" "187.73 695.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -13338,7 +13338,7 @@ "BT" "/F2 7.00 Tf" "547.73 443.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -13495,7 +13495,7 @@ "BT" "/F2 7.00 Tf" "367.73 443.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -13652,7 +13652,7 @@ "BT" "/F2 7.00 Tf" "187.73 443.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -13809,7 +13809,7 @@ "BT" "/F2 7.00 Tf" "547.73 191.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -13966,7 +13966,7 @@ "BT" "/F2 7.00 Tf" "367.73 191.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -14123,7 +14123,7 @@ "BT" "/F2 7.00 Tf" "187.73 191.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -14441,7 +14441,7 @@ "BT" "/F2 7.00 Tf" "547.73 695.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -14598,7 +14598,7 @@ "BT" "/F2 7.00 Tf" "367.73 695.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -14755,7 +14755,7 @@ "BT" "/F2 7.00 Tf" "187.73 695.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" diff --git a/test/card-ornament-baseline.edn b/test/card-ornament-baseline.edn index 4d0122c3b..3afd5cebc 100644 --- a/test/card-ornament-baseline.edn +++ b/test/card-ornament-baseline.edn @@ -118,7 +118,7 @@ "BT" "/F2 7.00 Tf" "547.73 695.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -460,7 +460,7 @@ "BT" "/F2 7.00 Tf" "547.73 443.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -1019,7 +1019,7 @@ "BT" "/F2 7.00 Tf" "367.73 191.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -1049,7 +1049,7 @@ "BT" "/F5 5.50 Tf" "292.40 169.92 Td" - "\"CHARGES\" Tj" + "#hex:0026002b00240035002a00280036 Tj" "ET" "299.30 158.40 m" "299.30 160.47 297.63 162.14 295.56 162.14 c" @@ -1190,7 +1190,7 @@ "BT" "/F2 7.00 Tf" "187.73 191.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -1220,7 +1220,7 @@ "BT" "/F5 5.50 Tf" "112.40 169.92 Td" - "\"CHARGES\" Tj" + "#hex:0026002b00240035002a00280036 Tj" "ET" "96.04 158.40 m" "140.68 158.40 l" @@ -1228,7 +1228,7 @@ "BT" "/F5 7.00 Tf" "144.28 159.48 Td" - "\"/ 36\" Tj" + "#hex:0012000300160019 Tj" "ET" "1.00 w" "0.35 w" @@ -1382,7 +1382,7 @@ "BT" "/F2 7.00 Tf" "547.73 695.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -1724,7 +1724,7 @@ "BT" "/F2 7.00 Tf" "547.73 443.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -2283,7 +2283,7 @@ "BT" "/F2 7.00 Tf" "367.73 191.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -2313,7 +2313,7 @@ "BT" "/F5 5.50 Tf" "292.40 169.92 Td" - "\"CHARGES\" Tj" + "#hex:0026002b00240035002a00280036 Tj" "ET" "299.30 158.40 m" "299.30 160.47 297.63 162.14 295.56 162.14 c" @@ -2454,7 +2454,7 @@ "BT" "/F2 7.00 Tf" "187.73 191.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -2484,7 +2484,7 @@ "BT" "/F5 5.50 Tf" "112.40 169.92 Td" - "\"CHARGES\" Tj" + "#hex:0026002b00240035002a00280036 Tj" "ET" "96.04 158.40 m" "140.68 158.40 l" @@ -2492,7 +2492,7 @@ "BT" "/F5 7.00 Tf" "144.28 159.48 Td" - "\"/ 36\" Tj" + "#hex:0012000300160019 Tj" "ET" "1.00 w" "0.35 w" @@ -2646,7 +2646,7 @@ "BT" "/F2 7.00 Tf" "547.73 695.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -2988,7 +2988,7 @@ "BT" "/F2 7.00 Tf" "547.73 443.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -3547,7 +3547,7 @@ "BT" "/F2 7.00 Tf" "367.73 191.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -3577,7 +3577,7 @@ "BT" "/F5 5.50 Tf" "292.40 169.92 Td" - "\"CHARGES\" Tj" + "#hex:0026002b00240035002a00280036 Tj" "ET" "299.30 158.40 m" "299.30 160.47 297.63 162.14 295.56 162.14 c" @@ -3718,7 +3718,7 @@ "BT" "/F2 7.00 Tf" "187.73 191.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -3748,7 +3748,7 @@ "BT" "/F5 5.50 Tf" "112.40 169.92 Td" - "\"CHARGES\" Tj" + "#hex:0026002b00240035002a00280036 Tj" "ET" "96.04 158.40 m" "140.68 158.40 l" @@ -3756,7 +3756,7 @@ "BT" "/F5 7.00 Tf" "144.28 159.48 Td" - "\"/ 36\" Tj" + "#hex:0012000300160019 Tj" "ET" "1.00 w" "0.35 w" @@ -3927,7 +3927,7 @@ "BT" "/F2 7.00 Tf" "547.73 695.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -4269,7 +4269,7 @@ "BT" "/F2 7.00 Tf" "547.73 443.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -4856,7 +4856,7 @@ "BT" "/F2 7.00 Tf" "367.73 191.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -4886,7 +4886,7 @@ "BT" "/F5 5.50 Tf" "292.40 169.92 Td" - "\"CHARGES\" Tj" + "#hex:0026002b00240035002a00280036 Tj" "ET" "299.30 158.40 m" "299.30 160.47 297.63 162.14 295.56 162.14 c" @@ -5044,7 +5044,7 @@ "BT" "/F2 7.00 Tf" "187.73 191.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -5074,7 +5074,7 @@ "BT" "/F5 5.50 Tf" "112.40 169.92 Td" - "\"CHARGES\" Tj" + "#hex:0026002b00240035002a00280036 Tj" "ET" "96.04 158.40 m" "140.68 158.40 l" @@ -5082,7 +5082,7 @@ "BT" "/F5 7.00 Tf" "144.28 159.48 Td" - "\"/ 36\" Tj" + "#hex:0012000300160019 Tj" "ET" "1.00 w" "0.35 w" @@ -5253,7 +5253,7 @@ "BT" "/F2 7.00 Tf" "547.73 695.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -5595,7 +5595,7 @@ "BT" "/F2 7.00 Tf" "547.73 443.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -6182,7 +6182,7 @@ "BT" "/F2 7.00 Tf" "367.73 191.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -6212,7 +6212,7 @@ "BT" "/F5 5.50 Tf" "292.40 169.92 Td" - "\"CHARGES\" Tj" + "#hex:0026002b00240035002a00280036 Tj" "ET" "299.30 158.40 m" "299.30 160.47 297.63 162.14 295.56 162.14 c" @@ -6370,7 +6370,7 @@ "BT" "/F2 7.00 Tf" "187.73 191.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -6400,7 +6400,7 @@ "BT" "/F5 5.50 Tf" "112.40 169.92 Td" - "\"CHARGES\" Tj" + "#hex:0026002b00240035002a00280036 Tj" "ET" "96.04 158.40 m" "140.68 158.40 l" @@ -6408,7 +6408,7 @@ "BT" "/F5 7.00 Tf" "144.28 159.48 Td" - "\"/ 36\" Tj" + "#hex:0012000300160019 Tj" "ET" "1.00 w" "0.35 w" @@ -6579,7 +6579,7 @@ "BT" "/F2 7.00 Tf" "547.73 695.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -6921,7 +6921,7 @@ "BT" "/F2 7.00 Tf" "547.73 443.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -7508,7 +7508,7 @@ "BT" "/F2 7.00 Tf" "367.73 191.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -7538,7 +7538,7 @@ "BT" "/F5 5.50 Tf" "292.40 169.92 Td" - "\"CHARGES\" Tj" + "#hex:0026002b00240035002a00280036 Tj" "ET" "299.30 158.40 m" "299.30 160.47 297.63 162.14 295.56 162.14 c" @@ -7696,7 +7696,7 @@ "BT" "/F2 7.00 Tf" "187.73 191.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -7726,7 +7726,7 @@ "BT" "/F5 5.50 Tf" "112.40 169.92 Td" - "\"CHARGES\" Tj" + "#hex:0026002b00240035002a00280036 Tj" "ET" "96.04 158.40 m" "140.68 158.40 l" @@ -7734,7 +7734,7 @@ "BT" "/F5 7.00 Tf" "144.28 159.48 Td" - "\"/ 36\" Tj" + "#hex:0012000300160019 Tj" "ET" "1.00 w" "0.35 w" @@ -7913,7 +7913,7 @@ "BT" "/F2 7.00 Tf" "547.73 695.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -8255,7 +8255,7 @@ "BT" "/F2 7.00 Tf" "547.73 443.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -8938,7 +8938,7 @@ "BT" "/F2 7.00 Tf" "367.73 191.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -8968,7 +8968,7 @@ "BT" "/F5 5.50 Tf" "292.40 169.92 Td" - "\"CHARGES\" Tj" + "#hex:0026002b00240035002a00280036 Tj" "ET" "299.30 158.40 m" "299.30 160.47 297.63 162.14 295.56 162.14 c" @@ -9134,7 +9134,7 @@ "BT" "/F2 7.00 Tf" "187.73 191.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -9164,7 +9164,7 @@ "BT" "/F5 5.50 Tf" "112.40 169.92 Td" - "\"CHARGES\" Tj" + "#hex:0026002b00240035002a00280036 Tj" "ET" "96.04 158.40 m" "140.68 158.40 l" @@ -9172,7 +9172,7 @@ "BT" "/F5 7.00 Tf" "144.28 159.48 Td" - "\"/ 36\" Tj" + "#hex:0012000300160019 Tj" "ET" "1.00 w" "0.35 w" @@ -9351,7 +9351,7 @@ "BT" "/F2 7.00 Tf" "547.73 695.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -9693,7 +9693,7 @@ "BT" "/F2 7.00 Tf" "547.73 443.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -10376,7 +10376,7 @@ "BT" "/F2 7.00 Tf" "367.73 191.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -10406,7 +10406,7 @@ "BT" "/F5 5.50 Tf" "292.40 169.92 Td" - "\"CHARGES\" Tj" + "#hex:0026002b00240035002a00280036 Tj" "ET" "299.30 158.40 m" "299.30 160.47 297.63 162.14 295.56 162.14 c" @@ -10572,7 +10572,7 @@ "BT" "/F2 7.00 Tf" "187.73 191.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -10602,7 +10602,7 @@ "BT" "/F5 5.50 Tf" "112.40 169.92 Td" - "\"CHARGES\" Tj" + "#hex:0026002b00240035002a00280036 Tj" "ET" "96.04 158.40 m" "140.68 158.40 l" @@ -10610,7 +10610,7 @@ "BT" "/F5 7.00 Tf" "144.28 159.48 Td" - "\"/ 36\" Tj" + "#hex:0012000300160019 Tj" "ET" "1.00 w" "0.35 w" @@ -10789,7 +10789,7 @@ "BT" "/F2 7.00 Tf" "547.73 695.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -11131,7 +11131,7 @@ "BT" "/F2 7.00 Tf" "547.73 443.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -11814,7 +11814,7 @@ "BT" "/F2 7.00 Tf" "367.73 191.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -11844,7 +11844,7 @@ "BT" "/F5 5.50 Tf" "292.40 169.92 Td" - "\"CHARGES\" Tj" + "#hex:0026002b00240035002a00280036 Tj" "ET" "299.30 158.40 m" "299.30 160.47 297.63 162.14 295.56 162.14 c" @@ -12010,7 +12010,7 @@ "BT" "/F2 7.00 Tf" "187.73 191.23 Td" - "\"A\" Tj" + "#hex:0024 Tj" "ET" "1.00 w" "0.15 Tc" @@ -12040,7 +12040,7 @@ "BT" "/F5 5.50 Tf" "112.40 169.92 Td" - "\"CHARGES\" Tj" + "#hex:0026002b00240035002a00280036 Tj" "ET" "96.04 158.40 m" "140.68 158.40 l" @@ -12048,7 +12048,7 @@ "BT" "/F5 7.00 Tf" "144.28 159.48 Td" - "\"/ 36\" Tj" + "#hex:0012000300160019 Tj" "ET" "1.00 w" "0.35 w" diff --git a/test/clj/orcpub/card_export_test.clj b/test/clj/orcpub/card_export_test.clj index 0addb5877..cda14f2dd 100644 --- a/test/clj/orcpub/card_export_test.clj +++ b/test/clj/orcpub/card_export_test.clj @@ -90,12 +90,14 @@ (let [faces (embedded-faces doc)] (is (= (count faces) (count (distinct faces))) (str "a face was embedded more than once: " (sort faces)))))) - (testing "and each kind alone embeds no more than the four faces exist" + (testing "and each kind alone embeds no more faces than exist: four Vollkorn, three Nimbus" (doseq [kinds [#{:spells} #{:items}]] (with-open [doc (render-cards kinds)] - (let [faces (embedded-faces doc)] + (let [faces (embedded-faces doc) + family (frequencies (map #(first (str/split % #"-")) faces))] (is (= (count faces) (count (distinct faces))) (str kinds " " (sort faces))) - (is (<= (count faces) 4))))))) + (is (<= (get family "Vollkorn" 0) 4) (str kinds " " (sort faces))) + (is (<= (get family "NimbusSans" 0) 3) (str kinds " " (sort faces)))))))) (deftest one-copy-of-the-card-back-logo ;; Same cause: a second make-image-loader has its own memo, so it re-embedded the diff --git a/test/clj/orcpub/drawn_fonts_test.clj b/test/clj/orcpub/drawn_fonts_test.clj index 8f255e75f..6e50b8323 100644 --- a/test/clj/orcpub/drawn_fonts_test.clj +++ b/test/clj/orcpub/drawn_fonts_test.clj @@ -56,6 +56,6 @@ (deftest the-exports-drawing-embeds-every-font-it-uses (with-open [doc (export)] (let [fonts (page-fonts doc)] - (is (= #{"Helvetica" "Helvetica-Bold" "Helvetica-BoldOblique"} + (is (= #{} (set (map first (remove second fonts)))) "not embedded: the viewer's own Helvetica, WinAnsi-only")))) diff --git a/test/clj/orcpub/non_latin_print_test.clj b/test/clj/orcpub/non_latin_print_test.clj index c32e28945..90cbae65d 100644 --- a/test/clj/orcpub/non_latin_print_test.clj +++ b/test/clj/orcpub/non_latin_print_test.clj @@ -13,6 +13,7 @@ [orcpub.spellbook :as sb]) (:import (org.apache.pdfbox Loader) (org.apache.pdfbox.pdmodel PDDocument) + (org.apache.pdfbox.pdmodel.font PDType1Font Standard14Fonts$FontName) (org.apache.pdfbox.text PDFTextStripper))) (def ^:private wide @@ -73,17 +74,23 @@ (is (every? #{"0"} (vals (apply dissoc a (keys b))))))))) (deftest nimbus-sans-is-helvetica-width - ;; The reason it was chosen, pinned: replacing it with a "lookalike" that is not - ;; metric-compatible would change how every switched field fits. + ;; The reason it was chosen, pinned for every face drawn: replacing one with a + ;; "lookalike" that is not metric-compatible would change how every field and + ;; heading fits. (with-open [doc (PDDocument.)] - (let [nimbus (with-open [in (.openStream (io/resource draw/nimbus-file))] - (org.apache.pdfbox.pdmodel.font.PDType0Font/load doc in)) - off (for [cp (concat (range 0x20 0x7F) (range 0xA1 0x100)) - :let [c (str (char cp)) - d (Math/abs (- (.getStringWidth draw/HELVETICA c) (.getStringWidth nimbus c)))] - :when (> d 0.5)] - (str (format "U+%04X" cp) " off by " (Math/round (double d))))] - (is (empty? off) (str/join ", " off))))) + (let [sans (draw/load-sans doc)] + (doseq [[face std] {:plain Standard14Fonts$FontName/HELVETICA + :bold Standard14Fonts$FontName/HELVETICA_BOLD + :bold-italic Standard14Fonts$FontName/HELVETICA_BOLD_OBLIQUE} + :let [helvetica (PDType1Font. std) + nimbus (draw/sans sans face) + off (for [cp (concat (range 0x20 0x7F) (range 0xA1 0x100)) + :let [c (str (char cp)) + d (Math/abs (- (.getStringWidth helvetica c) + (.getStringWidth nimbus c)))] + :when (> d 0.5)] + (str (format "U+%04X" cp) " off by " (Math/round (double d))))]] + (is (empty? off) (str face ": " (str/join ", " off))))))) (deftest every-sheet-field-uses-nimbus-sans ;; One font for the whole form, not Helvetica with Nimbus where Helvetica fails. The diff --git a/test/clj/orcpub/notice_page_test.clj b/test/clj/orcpub/notice_page_test.clj index bce84b75f..8595ab15a 100644 --- a/test/clj/orcpub/notice_page_test.clj +++ b/test/clj/orcpub/notice_page_test.clj @@ -10,7 +10,8 @@ [orcpub.common :as common] [orcpub.errors :as errors] [orcpub.pdf-ops :as ops] - [orcpub.pdf :as pdf]) + [orcpub.pdf :as pdf] + [orcpub.pdf.draw :as draw]) (:import (org.apache.pdfbox.pdmodel PDDocument PDPage) (org.apache.pdfbox.text PDFTextStripper))) @@ -27,11 +28,11 @@ (testing "nothing recorded, nothing added -- the happy path pays nothing" (binding [errors/*notices* (atom [])] (with-open [doc (doc-with 3)] - (is (nil? (pdf/add-notice-page! doc))) + (is (nil? (pdf/add-notice-page! doc (draw/load-sans doc)))) (is (= 3 (.getNumberOfPages doc)))))) (testing "and with no collector bound at all it still does not throw" (with-open [doc (doc-with 2)] - (is (nil? (pdf/add-notice-page! doc))) + (is (nil? (pdf/add-notice-page! doc (draw/load-sans doc)))) (is (= 2 (.getNumberOfPages doc)))))) (deftest what-was-dropped-is-named-on-page-one @@ -40,9 +41,9 @@ (errors/note! "Spell cards" "could not be drawn and were left out (boom)") (errors/note! "Spellbook" "could not be drawn and was left out (kaput)") (with-open [doc (doc-with 3)] - (is (some? (pdf/add-notice-page! doc))) + (is (some? (pdf/add-notice-page! doc (draw/load-sans doc)))) (is (= 4 (.getNumberOfPages doc)) "one page added, not replacing a sheet page") - (let [t (page-text doc 0)] + (let [t (with-open [saved (ops/reloaded doc)] (page-text saved 0))] (is (str/includes? t "did not fit")) (is (str/includes? t "Spell cards")) (is (str/includes? t "Spellbook")) @@ -90,7 +91,7 @@ (doseq [n ["Spell cards" "Spellbook" "Magic item cards" "Sheet fields"]] (errors/note! n (str n " was left out because of a reason that wraps a little"))) (with-open [doc (doc-with 1)] - (pdf/add-notice-page! doc) + (pdf/add-notice-page! doc (draw/load-sans doc)) (let [ys (sort (map #(Double/parseDouble %) (text-baselines (.getPage doc 0)))) gaps (map - (rest ys) ys)] (is (seq ys) "something was drawn") diff --git a/test/clj/orcpub/pdf_ops.clj b/test/clj/orcpub/pdf_ops.clj index dc6df3cc7..32edbcb6e 100644 --- a/test/clj/orcpub/pdf_ops.clj +++ b/test/clj/orcpub/pdf_ops.clj @@ -9,10 +9,20 @@ [clojure.pprint :as pprint] [clojure.test :refer [is testing]]) (:import (java.security MessageDigest) + (java.io ByteArrayOutputStream) + (org.apache.pdfbox Loader) (org.apache.pdfbox.pdfparser PDFStreamParser) (org.apache.pdfbox.contentstream.operator Operator) (org.apache.pdfbox.cos COSNumber COSString COSName))) +(defn reloaded + "`doc` saved and loaded back. A subset font is embedded only at save, so text read or + rendered before then comes from PDFBox's fallback font, not the one that ships." + [doc] + (let [out (ByteArrayOutputStream.)] + (.save doc out) + (Loader/loadPDF (.toByteArray out)))) + (defn- show-string "A drawn string as ASCII. Card and spellbook text go through an embedded Type0 font, so the bytes are 2-byte CIDs, not characters: decoding them gives control bytes that diff --git a/test/clj/orcpub/pdf_test.clj b/test/clj/orcpub/pdf_test.clj index 179e44229..9495120c0 100644 --- a/test/clj/orcpub/pdf_test.clj +++ b/test/clj/orcpub/pdf_test.clj @@ -7,6 +7,7 @@ [orcpub.pdf :as pdf] [orcpub.pdf.draw :as draw] [orcpub.pdf.cards :as cards] + [orcpub.pdf-ops :as ops] [orcpub.dnd.e5.spell-packing :as packing]) (:import (org.apache.pdfbox Loader) (org.apache.pdfbox.cos COSName COSString) @@ -18,6 +19,17 @@ (org.apache.pdfbox.pdmodel.interactive.annotation PDAnnotationWidget) (org.apache.pdfbox.pdmodel.interactive.form PDAcroForm PDTextField))) +(def ^:private sans + "A Nimbus Sans map for MEASURING only. Drawing with it would register its faces with + the drawn document, and a second document's save then throws (see draw/load-sans); + a test that draws loads its own." + (delay (draw/load-sans (PDDocument.)))) + +(defn- face + "Nimbus Sans `f` (:plain, :bold or :bold-italic) from `sans`, to measure with." + [f] + (draw/sans @sans f)) + (defn- all-fields [form] (iterator-seq (.iterator (.getFieldTree form)))) @@ -268,22 +280,22 @@ (let [;; roughly the bonds/ideals/flaws box w 149.0 h 31.0] (testing "short text fits whole" - (let [{:keys [head tail]} (pdf/fit-text "Owes a patron he has never seen." w h)] + (let [{:keys [head tail]} (pdf/fit-text (face :plain) "Owes a patron he has never seen." w h)] (is (nil? tail)) (is (= "Owes a patron he has never seen." head)))) (testing "long text splits, and nothing is lost between head and tail" (let [words (str/join " " (map #(str "w" %) (range 200))) - {:keys [head tail]} (pdf/fit-text words w h)] + {:keys [head tail]} (pdf/fit-text (face :plain) words w h)] (is (some? tail) "200 words cannot fit a three-line box at 7pt") (is (= words (str/join " " [head tail])) "head and tail together reproduce the input exactly"))) (testing "blank and nil are handled without blowing up" - (is (= {:head "" :tail nil :lines 0} (pdf/fit-text "" w h))) - (is (= {:head "" :tail nil :lines 0} (pdf/fit-text nil w h)))) + (is (= {:head "" :tail nil :lines 0} (pdf/fit-text (face :plain) "" w h))) + (is (= {:head "" :tail nil :lines 0} (pdf/fit-text (face :plain) nil w h)))) (testing "a bigger box holds more of the same text" (let [words (str/join " " (map #(str "w" %) (range 200))) - small (pdf/fit-text words w h) - large (pdf/fit-text words 350.0 300.0)] + small (pdf/fit-text (face :plain) words w h) + large (pdf/fit-text (face :plain) words 350.0 300.0)] (is (> (count (:head large)) (count (:head small))))))))) (deftest widget-box-measures-the-on-page-widget @@ -310,7 +322,7 @@ (if (>= (inc lo) hi) lo (let [mid (quot (+ lo hi) 2)] - (if (nil? (:tail (apply pdf/fit-text (lines-of mid) box))) + (if (nil? (:tail (apply pdf/fit-text (face :plain) (lines-of mid) box))) (recur mid hi) (recur lo mid)))))))] (doseq [[field-name expected] {"ideals" 3 @@ -332,7 +344,7 @@ unauthenticated: draw-text-to-box renders custom spell names into a roughly two-inch card box." (let [result (future (draw/split-lines "supercalifragilisticexpialidocious tail" - draw/HELVETICA 8.0 0.2)) + (face :plain) 8.0 0.2)) value (deref result 5000 ::timed-out)] (when (= ::timed-out value) (future-cancel result)) (is (not= ::timed-out value) "split-lines must terminate") @@ -345,9 +357,9 @@ own line. Wrapping must not flatten them." (let [text "FIRST\nalpha beta\n\nSECOND\ndelta"] (testing "kept intact when everything fits" - (is (= text (:head (pdf/fit-text text 300.0 60.0))))) + (is (= text (:head (pdf/fit-text (face :plain) text 300.0 60.0))))) (testing "kept on both sides of a split" - (let [{:keys [head tail]} (pdf/fit-text text 300.0 12.0)] + (let [{:keys [head tail]} (pdf/fit-text (face :plain) text 300.0 12.0)] (is (some? tail)) (is (str/includes? (str head tail) "\n") "breaks survive rather than being joined with spaces")))))) @@ -518,7 +530,7 @@ (let [size (baked-size form nm) widget (first (.getWidgets (.getField form nm))) available (- (.getWidth (.getRectangle widget)) 2.0)] - (<= (* 72.0 (draw/string-width value draw/HELVETICA size)) available)))] + (<= (* 72.0 (draw/string-width value (face :plain) size)) available)))] (is (= 8.0 (baked-size form "int-save")) "a value that already fits is left at the size PDFBox chose") (is (< (baked-size form "wis-save") 8.0) "a wide value is shrunk") @@ -769,10 +781,29 @@ (with-open [in (.openStream (io/resource source)) doc (Loader/loadPDF (.readAllBytes in))] (pdf/grow-spell-sections! doc casters (if (zero? casters) :all marks)) - (pdf/stamp-site-line! doc site-line (boolean prints-site-line?)) - (doseq [i (range (.getNumberOfPages doc))] - (is (= 1 (count (re-seq (re-pattern draw/site-stamp) (page-text doc i)))) - (str "style " style ", " casters " caster(s), page " (inc i))))))))) + (pdf/stamp-site-line! doc (draw/load-sans doc) site-line + (pdf/site-line-pages doc (boolean prints-site-line?))) + (with-open [saved (ops/reloaded doc)] + (doseq [i (range (.getNumberOfPages saved))] + (is (= 1 (count (re-seq (re-pattern draw/site-stamp) (page-text saved i)))) + (str "style " style ", " casters " caster(s), page " (inc i)))))))))) + +(deftest a-page-added-after-the-scan-is-stamped + ;; The scan runs before anything is drawn (reading text drawn in a not-yet-embedded + ;; font logs a fallback warning per face), so pages the export adds later -- the + ;; overflow pages -- are absent from it and must still get the line. + (let [{:keys [file marks site-line]} (get pdf/sheet-masters 4)] + (with-open [in (.openStream (io/resource file)) + doc (Loader/loadPDF (.readAllBytes in))] + (pdf/grow-spell-sections! doc 1 marks) + (let [printed (pdf/site-line-pages doc true)] + (is (seq printed) "style 4's spell pages print their own") + (.addPage doc (PDPage.)) + (pdf/stamp-site-line! doc (draw/load-sans doc) site-line printed) + (with-open [saved (ops/reloaded doc)] + (doseq [i (range (.getNumberOfPages saved))] + (is (= 1 (count (re-seq (re-pattern draw/site-stamp) (page-text saved i)))) + (str "page " (inc i))))))))) (defn- ink-free? "Whether the stamp-sized box at `x`,`y` inches from the page's bottom-left is @@ -783,7 +814,7 @@ (let [dpi 300.0 img (.renderImageWithDPI (org.apache.pdfbox.rendering.PDFRenderer. doc) index (float dpi)) - w (draw/string-width draw/site-stamp draw/HELVETICA 6) + w (draw/string-width draw/site-stamp (face :plain) 6) h (/ 8.0 72) height (.getHeight img) x0 (int (* x dpi)) @@ -1086,7 +1117,7 @@ (pdf/reserve-annotation-columns! doc) (is (< (Math/abs (- before (wide))) 0.01) (str "style " style " keeps its compartment")) - (is (= "Warlock" (:label (@#'pdf/fit-heading "Warlock" (- (wide) 6.0)))) + (is (= "Warlock" (:label (@#'pdf/fit-heading (face :bold) "Warlock" (- (wide) 6.0)))) (str "style " style " fits a class name"))))))) (deftest a-filled-row-keeps-its-name-clear-of-the-columns @@ -1118,7 +1149,7 @@ size (some-> (re-find #"/\S+\s+([0-9.]+)\s+Tf" (String. (.toByteArray b))) second Double/parseDouble)] (when size - (is (<= (* 72 (draw/string-width v draw/HELVETICA size)) + (is (<= (* 72 (draw/string-width v (face :plain) size)) (.getWidth r)) (str "style " style " " n " \"" v "\" at " size "pt")))))))))))) @@ -1158,7 +1189,7 @@ (pdf/grow-spell-sections! doc 2 :all) (let [[applied refused] (pdf/apply-relabel-instructions! - doc + doc (draw/load-sans doc) [{:section 1 :box 5 :label "2"} {:section 9 :box 1 :label "1"} {:section 1 :box 99 :label "1"} @@ -1175,7 +1206,7 @@ doc (Loader/loadPDF (.readAllBytes in))] (pdf/grow-spell-sections! doc 1 :all) (let [flood (repeat 5000 {:section 1 :box 5 :label "2"}) - [applied refused] (pdf/apply-relabel-instructions! doc flood 1)] + [applied refused] (pdf/apply-relabel-instructions! doc (draw/load-sans doc) flood 1)] (is (= 10 applied) "capped at the ten level boxes a page has") (is (= 4990 refused)))))) @@ -1183,14 +1214,14 @@ ;; Class names are not a fixed length -- Bard against Eldritch Knight -- and the ;; compartment is. A single size either wastes the room or runs the name through ;; the bar's divider, which is what 9.5pt in a level box's 35pt compartment did. - (let [size #'pdf/heading-size] + (let [size (partial #'pdf/heading-size (face :bold))] (testing "a name that fits is drawn at the target size" (is (= @#'pdf/heading-target-size (size "Bard" 60.0)))) (testing "a name too wide is scaled down" (is (< (size "Eldritch Knight" 35.0) @#'pdf/heading-target-size))) (testing "and never below the floor, where it stops reading as a heading" (is (= 6.0 (size "A Very Long Homebrew Class Name Indeed" 10.0))))) - (let [fit #'pdf/fit-heading] + (let [fit (partial #'pdf/fit-heading (face :bold))] (testing "a name that fits is left alone" (is (= {:label "Bard" :size @#'pdf/heading-target-size} (fit "Bard" 60.0)))) (testing "a name too long even at the floor is shortened, not overflowed" @@ -1199,12 +1230,12 @@ (let [{:keys [label size]} (fit "Eldritch Knight" 35.0)] (is (not= "Eldritch Knight" label)) (is (clojure.string/ends-with? label "\u2026")) - (is (<= (* 72 (draw/string-width label draw/HELVETICA_BOLD size)) 35.0)))) + (is (<= (* 72 (draw/string-width label (face :bold) size)) 35.0)))) (testing "every real class name fits a level box's compartment" (doseq [nm ["Bard" "Cleric" "Druid" "Paladin" "Ranger" "Sorcerer" "Warlock" "Wizard" "Arcane Trickster" "Eldritch Knight"]] (let [{:keys [label size]} (fit nm 35.0)] - (is (<= (* 72 (draw/string-width label draw/HELVETICA_BOLD size)) 35.0) + (is (<= (* 72 (draw/string-width label (face :bold) size)) 35.0) (str nm " -> " label))))))) (deftest a-label-on-box-0-is-refused @@ -1219,7 +1250,7 @@ doc (Loader/loadPDF (.readAllBytes in))] (pdf/grow-spell-sections! doc 1 marks) (let [[applied refused] (pdf/apply-relabel-instructions! - doc [{:section 1 :box 0 :label "1"} + doc (draw/load-sans doc) [{:section 1 :box 0 :label "1"} {:section 1 :box 0 :label nil}] 1 3)] (is (= 1 applied) "the blank is applied") (is (= 1 refused) "the label is refused"))))) @@ -1241,7 +1272,7 @@ (pdf/grow-spell-sections! doc 1 marks) (let [[applied refused] (pdf/apply-relabel-instructions! - doc [{:section 1 :box 5 :label "2"}] 1 style)] + doc (draw/load-sans doc) [{:section 1 :box 5 :label "2"}] 1 style)] (is (= 1 applied) (str "style " style)) (is (zero? refused) (str "style " style))))))) (testing "an unmeasured style applies no relabel rather than printing a lie" @@ -1251,7 +1282,7 @@ doc (Loader/loadPDF (.readAllBytes in))] (pdf/grow-spell-sections! doc 1 marks) (let [[applied refused] (pdf/apply-relabel-instructions! - doc [{:section 1 :box 5 :label "2"}] 1 5)] + doc (draw/load-sans doc) [{:section 1 :box 5 :label "2"}] 1 5)] (is (zero? applied)) (is (= 1 refused))))))) diff --git a/test/clj/orcpub/sheet_geometry_test.clj b/test/clj/orcpub/sheet_geometry_test.clj index c9b9f1303..60cf22a28 100644 --- a/test/clj/orcpub/sheet_geometry_test.clj +++ b/test/clj/orcpub/sheet_geometry_test.clj @@ -9,7 +9,8 @@ [clojure.string :as str] [orcpub.common :as common] [orcpub.pdf-ops :as ops] - [orcpub.pdf :as pdf]) + [orcpub.pdf :as pdf] + [orcpub.pdf.draw :as draw]) (:import (org.apache.pdfbox Loader) (java.security MessageDigest))) @@ -84,17 +85,19 @@ [style] (let [{:keys [file marks site-line prints-site-line?]} (get pdf/sheet-masters style) doc (with-open [in (.openStream (io/resource file))] - (Loader/loadPDF (.readAllBytes in)))] + (Loader/loadPDF (.readAllBytes in))) + sans (draw/load-sans doc)] (pdf/grow-spell-sections! doc casters marks) (pdf/add-missing-spell-pages! doc fields 9) - (let [merged (pdf/merge-style-fields style fields)] - (pdf/apply-relabel-instructions! doc relabels casters style) + (let [printed (pdf/site-line-pages doc (boolean prints-site-line?)) + merged (pdf/merge-style-fields style fields)] + (pdf/apply-relabel-instructions! doc sans relabels casters style) (pdf/reserve-annotation-columns! doc) (pdf/write-fields! doc (pdf/spill-overflow! doc merged) false {}) - (pdf/annotate-spell-rows! doc annotate) + (pdf/annotate-spell-rows! doc sans annotate) (doseq [{:keys [box section class] :as h} headings] - (pdf/draw-column-heading! doc style box section class h))) - (pdf/stamp-site-line! doc site-line (boolean prints-site-line?)) + (pdf/draw-column-heading! doc sans style box section class h)) + (pdf/stamp-site-line! doc sans site-line printed)) doc)) (defn- widget-geometry diff --git a/test/clj/orcpub/winansi_test.clj b/test/clj/orcpub/winansi_test.clj index fc5c20786..37b1d8d5d 100644 --- a/test/clj/orcpub/winansi_test.clj +++ b/test/clj/orcpub/winansi_test.clj @@ -6,7 +6,8 @@ the euro sign. Helvetica draws all of them; normalize-text replaced or dropped them." (:require [clojure.test :refer [deftest testing is]] [orcpub.pdf.draw :as draw] - [orcpub.spellbook :as sb])) + [orcpub.spellbook :as sb]) + (:import (org.apache.pdfbox.pdmodel.font PDType1Font Standard14Fonts$FontName))) (def ^:private winansi-extras "‘’“”–—…•œŒ€™ŠšŽžŸ") @@ -14,7 +15,7 @@ (deftest helvetica-draws-everything-in-winansi (testing "the premise, measured rather than assumed" (doseq [c winansi-extras] - (is (try (.getStringWidth draw/HELVETICA (str c)) true (catch Exception _ false)) + (is (try (.getStringWidth (PDType1Font. Standard14Fonts$FontName/HELVETICA) (str c)) true (catch Exception _ false)) (format "U+%04X" (int c)))))) (deftest normalize-text-keeps-what-helvetica-draws diff --git a/test/sheet-geometry-baseline.edn b/test/sheet-geometry-baseline.edn index f5472a193..65147e569 100644 --- a/test/sheet-geometry-baseline.edn +++ b/test/sheet-geometry-baseline.edn @@ -39,10 +39,10 @@ "v" 181, "w" 37, "y" 172}, - :sha "3472e3db462c", + :sha "dad2c0c516ed", :geom "4bc651ad8d9c", :colour "2570ea8c830f", - :text "b432a8cccf56", + :text "f1ee8009e3b3", :style 1} {:ops 4278, :kinds @@ -84,10 +84,10 @@ "v" 36, "w" 16, "y" 29}, - :sha "77141d0f8e47", + :sha "657d2349c190", :geom "d664b06f5050", :colour "67750848e040", - :text "3c3e93ef0e13", + :text "3b5a5aea69b2", :style 1} {:ops 7394, :kinds @@ -117,10 +117,10 @@ "re" 7, "rg" 224, "w" 120}, - :sha "b43c05268c95", + :sha "26b9ccf5ca6b", :geom "2f70b6c9697c", :colour "8595b4602a89", - :text "a6cb148f47d5", + :text "c1e98098051b", :style 1} {:ops 7363, :kinds @@ -150,10 +150,10 @@ "re" 5, "rg" 214, "w" 120}, - :sha "26a95090c6e0", + :sha "6b6087170b67", :geom "4cfb5fadfe6b", :colour "a062bd34a4c1", - :text "e5e91d1d2715", + :text "0c4339b78e7a", :style 1} {:ops 107, :kinds @@ -179,10 +179,10 @@ "re" 1, "rg" 2, "scn" 2}, - :sha "f4c975a741ca", + :sha "f40f86372824", :geom "fd97c4a603ff", :colour "f300674bc4e9", - :text "2b93351f9e47", + :text "94a422101135", :style 1} {:ops 8817, :kinds @@ -226,10 +226,10 @@ "rg" 26, "scn" 1, "w" 36}, - :sha "e6a0cf8fe64f", + :sha "c446f3462839", :geom "27f513286a38", :colour "6c3c1042e999", - :text "1e8641967ae1", + :text "711b9d801f93", :style 2} {:ops 2089, :kinds @@ -265,10 +265,10 @@ "re" 35, "rg" 7, "w" 10}, - :sha "4bc020d8e5e4", + :sha "35726f66f321", :geom "ba87e97e0b80", :colour "86575d10d1f1", - :text "fbdaedcd21c0", + :text "f77be3afa771", :style 2} {:ops 6304, :kinds @@ -309,10 +309,10 @@ "re" 20, "rg" 55, "w" 13}, - :sha "8b81b8b12d21", + :sha "a6c7d3e53824", :geom "65c59499d6dd", :colour "eafaa24af1a0", - :text "25fb84043ffd", + :text "da59448d8053", :style 2} {:ops 6273, :kinds @@ -353,10 +353,10 @@ "re" 18, "rg" 45, "w" 13}, - :sha "bc4337bc7943", + :sha "886d35eeead0", :geom "8a0753cbe921", :colour "1dacb4d495b2", - :text "a315ce7dfd04", + :text "7b204be0b497", :style 2} {:ops 313, :kinds @@ -382,10 +382,10 @@ "q" 4, "re" 2, "rg" 2}, - :sha "70ee1fe07cca", + :sha "dffd762f3bff", :geom "a5ded91e5ba9", :colour "5dc9060a4fb6", - :text "b68a534826d1", + :text "afeb0d565cc2", :style 2} {:ops 2620, :kinds @@ -421,10 +421,10 @@ "v" 18, "w" 24, "y" 14}, - :sha "6269538e3500", + :sha "53c47c3a6c0d", :geom "90f8682f24db", :colour "959762e87bc2", - :text "0945c624ab77", + :text "e8058588a8fa", :style 3} {:ops 637, :kinds @@ -456,10 +456,10 @@ "rg" 2, "v" 18, "y" 14}, - :sha "945b871c840e", + :sha "cb58e38c9971", :geom "c6065017ee30", :colour "03c4dbcadaff", - :text "ce4c387a5537", + :text "f76cfe1f65d6", :style 3} {:ops 7768, :kinds @@ -497,10 +497,10 @@ "v" 18, "w" 206, "y" 14}, - :sha "e808ccea0d9d", + :sha "70320568c345", :geom "50f16a3f1158", :colour "fb45165ff2ee", - :text "6e698eb0b25c", + :text "07312416ac0b", :style 3} {:ops 7737, :kinds @@ -538,10 +538,10 @@ "v" 18, "w" 206, "y" 14}, - :sha "90aaf53ee899", + :sha "9865e595dda5", :geom "4c66f64e21de", :colour "69ac3f52bc8b", - :text "cd6676e06472", + :text "1d871e220277", :style 3} {:ops 552, :kinds @@ -566,10 +566,10 @@ "k" 1, "q" 2, "rg" 2}, - :sha "e54e76da2593", + :sha "5baef3a0dccc", :geom "e3b0c44298fc", :colour "5c4d7a30a286", - :text "a1de20f28a33", + :text "16bc481183e1", :style 4} {:ops 122, :kinds @@ -591,10 +591,10 @@ "k" 1, "q" 2, "rg" 2}, - :sha "0460919acf56", + :sha "28920cb794da", :geom "e3b0c44298fc", :colour "5c4d7a30a286", - :text "0543417aee22", + :text "fc2463ab587a", :style 4} {:ops 220, :kinds @@ -617,10 +617,10 @@ "q" 4, "re" 3, "rg" 33}, - :sha "16360a6f97ff", + :sha "38f8a9c194bb", :geom "8f12ae50fb9e", :colour "8a2c77575500", - :text "08364ed04e7f", + :text "06fabe495896", :style 4} {:ops 189, :kinds @@ -643,8 +643,8 @@ "q" 3, "re" 1, "rg" 23}, - :sha "c33d286b5bc8", + :sha "e1d4e6a34e0d", :geom "dd46d244d113", :colour "3d3fb74c1692", - :text "538e27be77be", + :text "b46915564c5d", :style 4}] From 6214259fe8ae36df98b39d28ba93361db99adb07 Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Fri, 23 Oct 2026 12:37:06 +0000 Subject: [PATCH 40/40] Fix review findings: overflow site line, dropped-picture notice, tests - Style 4 printed the site line twice on every overflow page of a sheet with no caster. site-line-pages recorded pages; spill-overflow!'s copies are made after the scan, so they were missed. It now records the pages' artwork content streams, which clone-page copies share. - A portrait or faction image that was asked for and could not be printed is named on the notice page, with the reason. Style 4's missing faction box stays silent; so does no picture at all. - drawn-fonts-test filtered items on a key no item has, so no item card was drawn; it sends the client's card fields and asserts the cards print. - sheet-geometry fixture names use str, not locale-sensitive format. - fonts README names NimbusSans-COPYING.txt as the COPYING that the upstream LICENSE text refers to; both files are upstream's, verbatim. --- resources/fonts/README.md | 3 ++- src/clj/orcpub/pdf.clj | 25 +++++++++++------- src/clj/orcpub/routes.clj | 34 +++++++++++++++++-------- test/clj/orcpub/drawn_fonts_test.clj | 18 ++++++++++--- test/clj/orcpub/notice_page_test.clj | 26 ++++++++++++++++++- test/clj/orcpub/pdf_test.clj | 18 +++++++++++++ test/clj/orcpub/sheet_geometry_test.clj | 4 +-- 7 files changed, 101 insertions(+), 27 deletions(-) diff --git a/resources/fonts/README.md b/resources/fonts/README.md index f4f3c4f2f..7e3e9bf87 100644 --- a/resources/fonts/README.md +++ b/resources/fonts/README.md @@ -9,7 +9,8 @@ Not under `public/`: nothing here is served over HTTP. | `NimbusSans-BoldItalic.ttf` | Nimbus Sans Bold Italic | spell-card casting time, range, components, duration | All three: URW++, AGPL-3.0 with a PDF-embedding exception (`NimbusSans-LICENSE.txt`, -`NimbusSans-COPYING.txt`). +`NimbusSans-COPYING.txt`). Both are upstream's `LICENSE` and `COPYING`, renamed and +otherwise verbatim, so the `COPYING` that `LICENSE` names is `NimbusSans-COPYING.txt`. **Why Nimbus Sans.** It is URW's metric clone of Helvetica: all 224 WinAnsi advance widths of each face are identical to the matching Helvetica's (pinned by diff --git a/src/clj/orcpub/pdf.clj b/src/clj/orcpub/pdf.clj index ef598f331..a7a75eebc 100644 --- a/src/clj/orcpub/pdf.clj +++ b/src/clj/orcpub/pdf.clj @@ -2283,26 +2283,33 @@ (draw/draw-text cs draw/site-stamp (draw/sans fonts :plain) 8 1.0 0.6 [0.45 0.45 0.45])) page))) +(defn- page-streams + "The COS streams `page`'s content is made of, as a set." + [page] + (set (map #(.getCOSObject %) (iterator-seq (.getContentStreams page))))) + (defn site-line-pages - "The pages whose artwork already prints the site line, as a set of their COS - dictionaries; empty unless `prints-own?` (the style's :prints-site-line?). Call it + "The artwork of pages that already print the site line, as a set of their content + streams; empty unless `prints-own?` (the style's :prints-site-line?). Streams, not + pages: spill-overflow!'s copies share them, so pages copied later count too. Call it BEFORE drawing anything: the scan reads page text, and a font this export added is not embedded until save, so reading it logs a fallback-font warning per face." [doc prints-own?] (if prints-own? - (set (keep-indexed (fn [i page] (when (page-prints-site-line? doc i) (.getCOSObject page))) - (vec (.getPages doc)))) + (into #{} (comp (keep-indexed (fn [i page] (when (page-prints-site-line? doc i) page))) + (mapcat page-streams)) + (vec (.getPages doc))) #{})) (defn stamp-site-line! "Prints the site line at `position` (the style's :site-line from sheet-masters, - chosen per style to clear its corner artwork) on every page not in `printed`, a - site-line-pages set; pages added since that scan are stamped. Appends a stream per - page: cloned spell pages SHARE the master's content stream, so writing into it would - print once per clone. In `fonts`' Nimbus regular." + chosen per style to clear its corner artwork) on every page showing none of the + `printed` artwork (a site-line-pages set). Appends a stream per page: cloned pages + SHARE their source's content stream, so writing into it would print once per clone. + In `fonts`' Nimbus regular." [doc fonts [x y] printed] (doseq [page (vec (.getPages doc)) - :when (not (contains? printed (.getCOSObject page)))] + :when (not-any? printed (page-streams page))] (with-open [cs (PDPageContentStream. doc page PDPageContentStream$AppendMode/APPEND true true)] (draw/draw-text cs draw/site-stamp (draw/sans fonts :plain) draw/site-stamp-size x y [0.45 0.45 0.45])))) diff --git a/src/clj/orcpub/routes.clj b/src/clj/orcpub/routes.clj index 3bb8e8ca8..648f0a5ad 100644 --- a/src/clj/orcpub/routes.clj +++ b/src/clj/orcpub/routes.clj @@ -1683,15 +1683,20 @@ (let [wanted (fn [url failed?] (and url (not failed?) (well-formed-image-url? url) url)) ;; Bytes the browser read beat the URL and skip the fetch entirely. - ;; Both arms deref, so nothing below has to know which it got. + ;; Every arm derefs to {:image} or {:reason}, so nothing below has to + ;; know which it got; nil when no picture was asked for. image (fn [supplied url failed?] - (if-let [bytes (pdf/decode-image-bytes supplied)] - (delay bytes) - ;; probed-outcome, not fetch-image: the builder usually - ;; asked about this URL a moment ago, and that answer is - ;; cached. - (some-> (wanted url failed?) - (as-> u (future (:image (probed-outcome u))))))) + (when-not (and (s/blank? (str supplied)) (s/blank? (str url))) + (if-let [bytes (pdf/decode-image-bytes supplied)] + (delay {:image bytes}) + ;; probed-outcome, not fetch-image: the builder usually + ;; asked about this URL a moment ago, and that answer is + ;; cached. + (if-let [u (wanted url failed?)] + (future (probed-outcome u)) + (delay {:reason (cond failed? :failed-in-builder + (s/blank? (str url)) :unreadable + :else :not-an-image-address)}))))) ;; A composed (paper-doll) portrait has no URL that could produce ;; it -- the client bakes its CSS-mask layers -- and it arrives ;; larger than an uploaded picture may be, so it goes through @@ -1703,10 +1708,10 @@ ;; pasted image-url that should have taken over. composed (pdf/decode-artwork-bytes portrait-png) portrait (if composed - (delay composed) + (delay {:image composed}) (image image-data image-url image-url-failed)) faction (image faction-image-data faction-image-url faction-image-url-failed)] - (when-let [{:keys [data jpg?]} (some-> portrait deref)] + (when-let [{:keys [data jpg?]} (some-> portrait deref :image)] (case print-character-sheet-style? 1 (pdf/draw-image-bytes! doc (pdf/get-page doc 1) data jpg? 0.45 1.75 2.35 3.15) 2 (pdf/draw-image-bytes! doc (pdf/get-page doc 1) data jpg? 0.45 1.75 2.35 3.15) @@ -1717,12 +1722,19 @@ ;; second drawn line landed 0.12in under the first and said the ;; same thing. ) - (when-let [{:keys [data jpg?]} (some-> faction deref)] + (when-let [{:keys [data jpg?]} (some-> faction deref :image)] (case print-character-sheet-style? 1 (pdf/draw-image-bytes! doc (pdf/get-page doc 1) data jpg? 5.88 2.4 1.905 1.52) 2 (pdf/draw-image-bytes! doc (pdf/get-page doc 1) data jpg? 5.88 2.4 1.905 1.52) 3 (pdf/draw-image-bytes! doc (pdf/get-page doc 1) data jpg? 5.88 2.0 1.905 1.52) 4 nil)) + ;; A picture asked for and not printed is named on the notice page. Style 4 + ;; has no faction box, so a faction image there is left out by design. + (doseq [[what outcome] [["Portrait" portrait] + ["Faction image" (when (not= 4 print-character-sheet-style?) faction)]] + :let [{:keys [image reason]} (some-> outcome deref)] + :when (and outcome (nil? image))] + (errors/note! what (str "was left out (" (s/replace (name (or reason :unknown)) "-" " ") ")"))) ;; Inside this let, so it can see whether the composed portrait was ;; actually used. Keyed on the decode, not on the field being present: ;; a portrait-png that fails to decode falls back to the pasted diff --git a/test/clj/orcpub/drawn_fonts_test.clj b/test/clj/orcpub/drawn_fonts_test.clj index 6e50b8323..eb0afab2e 100644 --- a/test/clj/orcpub/drawn_fonts_test.clj +++ b/test/clj/orcpub/drawn_fonts_test.clj @@ -9,7 +9,8 @@ [orcpub.dnd.e5.spells :as spells] [orcpub.dnd.e5.magic-items :as magic-items]) (:import (org.apache.pdfbox Loader) - (org.apache.pdfbox.pdmodel.font PDType0Font))) + (org.apache.pdfbox.pdmodel.font PDType0Font) + (org.apache.pdfbox.text PDFTextStripper))) (def ^:private request "Every drawn path at once: spell annotations, a relabel, column headings, the site @@ -31,7 +32,14 @@ :spell-attack-mods {"Wizard" 7} :print-spell-cards? true :spellbook {:classes [{:class "Wizard" :level 5 :ability "INT" :dc 15 :attack 7}]} - :magic-items-known (vec (take 3 (filter :magic-item/attunement magic-items/magic-items))) + ;; The fields pdf-spec/magic-item-card-info sends: full entries carry functions. + :magic-items-known (vec (for [item (take 3 (filter magic-items/attunement-key magic-items/magic-items))] + (select-keys item [:name ::magic-items/name ::magic-items/type + ::magic-items/subtype ::magic-items/rarity + ::magic-items/attunement + ::magic-items/attunement-details + ::magic-items/description ::magic-items/summary + ::magic-items/page ::magic-items/source]))) :print-magic-item-cards? true}) (defn- export @@ -55,7 +63,11 @@ (deftest the-exports-drawing-embeds-every-font-it-uses (with-open [doc (export)] - (let [fonts (page-fonts doc)] + (let [fonts (page-fonts doc) + text (str/replace (.getText (PDFTextStripper.) doc) #"\s+" " ")] + (is (= 3 (count (:magic-items-known request))) "the request asks for item cards") + (is (some->> (first (:magic-items-known request)) magic-items/name-key (str/includes? text)) + "and the export draws them, so their fonts are among those checked") (is (= #{} (set (map first (remove second fonts)))) "not embedded: the viewer's own Helvetica, WinAnsi-only")))) diff --git a/test/clj/orcpub/notice_page_test.clj b/test/clj/orcpub/notice_page_test.clj index 8595ab15a..cf2a22f9a 100644 --- a/test/clj/orcpub/notice_page_test.clj +++ b/test/clj/orcpub/notice_page_test.clj @@ -11,7 +11,8 @@ [orcpub.errors :as errors] [orcpub.pdf-ops :as ops] [orcpub.pdf :as pdf] - [orcpub.pdf.draw :as draw]) + [orcpub.pdf.draw :as draw] + [orcpub.routes :as routes]) (:import (org.apache.pdfbox.pdmodel PDDocument PDPage) (org.apache.pdfbox.text PDFTextStripper))) @@ -101,3 +102,26 @@ (is (every? #(>= % 9.0) gaps) (str "lines closer than 9pt overprint; baselines " (pr-str (vec ys)) " gaps " (pr-str (vec gaps))))))))) + +(defn- first-page-text + "Page one's text of the export `req` makes, through generate-character-pdf." + [req] + (let [resp (#'routes/generate-character-pdf {:form-params {:body (pr-str req)}})] + (with-open [doc (org.apache.pdfbox.Loader/loadPDF (.readAllBytes (:body resp)))] + (page-text doc 0)))) + +(deftest a-requested-picture-that-cannot-print-is-named + (testing "an uploaded picture that does not decode" + (is (str/includes? (first-page-text {:print-character-sheet-style? 1 :image-data "not an image"}) + "Portrait was left out (unreadable)"))) + (testing "an address the builder already failed to load, without fetching it" + (is (str/includes? (first-page-text {:print-character-sheet-style? 1 + :faction-image-url "https://example.invalid/a.png" + :faction-image-url-failed true}) + "Faction image was left out (failed in builder)"))) + (testing "no picture asked for, or a faction image on style 4 (no box), says nothing" + (doseq [req [{:print-character-sheet-style? 1} + {:print-character-sheet-style? 4 :faction-image-data "not an image"}]] + (let [t (first-page-text req)] + (is (not (str/includes? t "Portrait")) (pr-str req)) + (is (not (str/includes? t "Faction image")) (pr-str req)))))) diff --git a/test/clj/orcpub/pdf_test.clj b/test/clj/orcpub/pdf_test.clj index 9495120c0..2c049e5d4 100644 --- a/test/clj/orcpub/pdf_test.clj +++ b/test/clj/orcpub/pdf_test.clj @@ -805,6 +805,24 @@ (is (= 1 (count (re-seq (re-pattern draw/site-stamp) (page-text saved i)))) (str "page " (inc i))))))))) +(deftest an-overflow-copy-of-an-artwork-page-is-not-stamped-again + ;; spill-overflow! copies style 4's continuation page, which prints its own site line, + ;; after the scan: each copy shares that page's artwork, so it counts as printed too. + (let [{:keys [without-casters site-line]} (get pdf/sheet-masters 4)] + (with-open [in (.openStream (io/resource without-casters)) + doc (Loader/loadPDF (.readAllBytes in))] + (pdf/grow-spell-sections! doc 0 :all) + (let [printed (pdf/site-line-pages doc true) + before (.getNumberOfPages doc)] + (pdf/spill-overflow! doc {:features-and-traits + (str/join " " (repeat 300 "Overflowing feature text."))}) + (is (> (.getNumberOfPages doc) before) "the text spilled onto added pages") + (pdf/stamp-site-line! doc (draw/load-sans doc) site-line printed) + (with-open [saved (ops/reloaded doc)] + (doseq [i (range (.getNumberOfPages saved))] + (is (= 1 (count (re-seq (re-pattern draw/site-stamp) (page-text saved i)))) + (str "page " (inc i))))))))) + (defn- ink-free? "Whether the stamp-sized box at `x`,`y` inches from the page's bottom-left is free of ink on `index`, rendered at 150 dpi." diff --git a/test/clj/orcpub/sheet_geometry_test.clj b/test/clj/orcpub/sheet_geometry_test.clj index 60cf22a28..124dc34e1 100644 --- a/test/clj/orcpub/sheet_geometry_test.clj +++ b/test/clj/orcpub/sheet_geometry_test.clj @@ -28,8 +28,8 @@ (for [section (range 1 (inc casters)) level [0 1 3] row [1 2 5]] - [(keyword (format "spells-%d-%d-%d" level row section)) - (format "Spell L%dR%dS%d" level row section)]))) + [(keyword (str "spells-" level "-" row "-" section)) + (str "Spell L" level "R" row "S" section)]))) (defn- slot-fields "`spell-slots--
` is what bar-compartments reads to find a bar at all,