summaryrefslogtreecommitdiff
path: root/Master
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2016-05-10 21:28:54 +0000
committerKarl Berry <karl@freefriends.org>2016-05-10 21:28:54 +0000
commit9edaf8cb54cb95b68a38e1242c116c0ca0985195 (patch)
tree2a09230764d798a860a2ac1fec37d0d67b471eb0 /Master
parent55d9827b710e8c945cd35bd1efec973bf7d53698 (diff)
acmart (10may16)
git-svn-id: svn://tug.org/texlive/trunk@41010 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r--Master/texmf-dist/bibtex/bst/acmart/ACM-Reference-Format-Journals.bst3349
-rw-r--r--Master/texmf-dist/bibtex/bst/acmart/SIGCHI-Reference-Format.bst3352
-rw-r--r--Master/texmf-dist/bibtex/bst/acmart/acm-abbrv.bst3311
-rw-r--r--Master/texmf-dist/bibtex/bst/acmart/acm-alpha.bst3339
-rw-r--r--Master/texmf-dist/bibtex/bst/acmart/acm-plain.bst3311
-rw-r--r--Master/texmf-dist/bibtex/bst/acmart/acm-unsrt.bst3142
-rw-r--r--Master/texmf-dist/bibtex/bst/acmart/acmsiggraph.bst1384
-rw-r--r--Master/texmf-dist/doc/latex/acmart/Makefile80
-rw-r--r--Master/texmf-dist/doc/latex/acmart/README2
-rw-r--r--Master/texmf-dist/doc/latex/acmart/acmart.bib65
-rw-r--r--Master/texmf-dist/doc/latex/acmart/acmart.pdfbin0 -> 624016 bytes
-rw-r--r--Master/texmf-dist/doc/latex/acmart/ae-logo.pdfbin0 -> 19923 bytes
-rw-r--r--Master/texmf-dist/doc/latex/acmart/cats.pngbin0 -> 621785 bytes
-rw-r--r--Master/texmf-dist/doc/latex/acmart/flies-eps-converted-to.pdfbin0 -> 9666 bytes
-rw-r--r--Master/texmf-dist/doc/latex/acmart/flies.eps8871
-rw-r--r--Master/texmf-dist/doc/latex/acmart/fly-eps-converted-to.pdfbin0 -> 4222 bytes
-rw-r--r--Master/texmf-dist/doc/latex/acmart/fly.eps5827
-rw-r--r--Master/texmf-dist/doc/latex/acmart/map.pngbin0 -> 411402 bytes
-rw-r--r--Master/texmf-dist/doc/latex/acmart/mouse-eps-converted-to.pdf86
-rw-r--r--Master/texmf-dist/doc/latex/acmart/mouse.eps145
-rw-r--r--Master/texmf-dist/doc/latex/acmart/rosette-eps-converted-to.pdf82
-rw-r--r--Master/texmf-dist/doc/latex/acmart/rosette.eps76
-rw-r--r--Master/texmf-dist/doc/latex/acmart/sample-acmlarge.pdfbin0 -> 634036 bytes
-rw-r--r--Master/texmf-dist/doc/latex/acmart/sample-acmlarge.tex152
-rw-r--r--Master/texmf-dist/doc/latex/acmart/sample-acmsmall.pdfbin0 -> 628191 bytes
-rw-r--r--Master/texmf-dist/doc/latex/acmart/sample-acmsmall.tex147
-rw-r--r--Master/texmf-dist/doc/latex/acmart/sample-acmtog.pdfbin0 -> 583377 bytes
-rw-r--r--Master/texmf-dist/doc/latex/acmart/sample-acmtog.tex147
-rw-r--r--Master/texmf-dist/doc/latex/acmart/sample-bibliography.bib1550
-rw-r--r--Master/texmf-dist/doc/latex/acmart/sample-colort.pdfbin0 -> 177150 bytes
-rw-r--r--Master/texmf-dist/doc/latex/acmart/sample-manuscript.pdfbin0 -> 650199 bytes
-rw-r--r--Master/texmf-dist/doc/latex/acmart/sample-manuscript.tex143
-rw-r--r--Master/texmf-dist/doc/latex/acmart/sample-sigchi-a.pdfbin0 -> 1284470 bytes
-rw-r--r--Master/texmf-dist/doc/latex/acmart/sample-sigchi-a.tex430
-rw-r--r--Master/texmf-dist/doc/latex/acmart/sample-sigchi.pdfbin0 -> 1054299 bytes
-rw-r--r--Master/texmf-dist/doc/latex/acmart/sample-sigchi.tex147
-rw-r--r--Master/texmf-dist/doc/latex/acmart/sample-sigconf.pdfbin0 -> 592937 bytes
-rw-r--r--Master/texmf-dist/doc/latex/acmart/sample-sigconf.tex141
-rw-r--r--Master/texmf-dist/doc/latex/acmart/sample-siggraph.pdfbin0 -> 1028102 bytes
-rw-r--r--Master/texmf-dist/doc/latex/acmart/sample-siggraph.tex147
-rw-r--r--Master/texmf-dist/doc/latex/acmart/sample-sigplan.pdfbin0 -> 1053785 bytes
-rw-r--r--Master/texmf-dist/doc/latex/acmart/sample-sigplan.tex150
-rw-r--r--Master/texmf-dist/doc/latex/acmart/samplebody-conf.tex364
-rw-r--r--Master/texmf-dist/doc/latex/acmart/samplebody-journals.tex370
-rw-r--r--Master/texmf-dist/doc/latex/acmart/sampleteaser.pdfbin0 -> 439021 bytes
-rw-r--r--Master/texmf-dist/doc/latex/acmart/sigchi-a.bib164
-rw-r--r--Master/texmf-dist/doc/latex/acmart/sigchi-logo.pngbin0 -> 27187 bytes
-rw-r--r--Master/texmf-dist/doc/latex/acmart/sigproc.bib74
-rw-r--r--Master/texmf-dist/source/latex/acmart/acmart.dtx4097
-rw-r--r--Master/texmf-dist/source/latex/acmart/acmart.ins29
-rw-r--r--Master/texmf-dist/tex/latex/acmart/acmart.cls1932
-rwxr-xr-xMaster/tlpkg/bin/tlpkg-ctan-check2
-rw-r--r--Master/tlpkg/tlpsrc/acmart.tlpsrc0
-rw-r--r--Master/tlpkg/tlpsrc/collection-publishers.tlpsrc1
54 files changed, 46608 insertions, 1 deletions
diff --git a/Master/texmf-dist/bibtex/bst/acmart/ACM-Reference-Format-Journals.bst b/Master/texmf-dist/bibtex/bst/acmart/ACM-Reference-Format-Journals.bst
new file mode 100644
index 00000000000..694bee7078e
--- /dev/null
+++ b/Master/texmf-dist/bibtex/bst/acmart/ACM-Reference-Format-Journals.bst
@@ -0,0 +1,3349 @@
+%%% -*-BibTeX-*-
+%%% ====================================================================
+%%% @BibTeX-style-file{
+%%% author = "Nelson H. F. Beebe, Boris Veytsman and Gerald Murray",
+%%% version = "1.00",
+%%% date = "18 January 2012",
+%%% time = "11:48 EST",
+%%% filename = "ACM-Reference-Format-Journals.bst",
+%%% address = "University of Utah
+%%% Department of Mathematics, 110 LCB
+%%% 155 S 1400 E RM 233
+%%% Salt Lake City, UT 84112-0090
+%%% USA",
+%%% telephone = "+1 801 581 5254",
+%%% FAX = "+1 801 581 4148",
+%%% URL = "http://www.math.utah.edu/~beebe",
+%%% checksum = "available here: http://www.acm.org/publications/latex_style/CRC-journals.txt"
+%%% email = "beebe@math.utah.edu, beebe@acm.org,
+%%% beebe@computer.org, borisv@lk.net, murray@hq.acm.org",
+%%% codetable = "ISO/ASCII",
+%%% keywords = "ACM Transactions bibliography style; BibTeX",
+%%% license = "public domain",
+%%% supported = "yes",
+%%% abstract = "",
+%%% docstring = "The checksum field, above, is produced by WinMD5Free (v1.20)
+%%% available from http://www.winmd5.com/?rid=winmd5,"
+%%% }
+%%% ====================================================================
+
+% "ACM Transactions" BibTeX style, ACM-Reference-Format-Journals.bst
+% for BibTeX version 0.99c, LaTeX version 3.141
+% ACM extensions with code cleaned up, extended, and debugged 10--15-Nov-2008
+% Revised 17-APRIL-2008 (Nelson)
+% Revised 13-MARCH-2011 (Boris/Gerry)
+% Revised 23-MARCH-2011 (Boris/Gerry)
+% Revised 27-MARCH-2011 (Boris/Gerry)
+% Revised 15-APRIL-2011 (Boris/Gerry)
+% Revised 27-SEPTEMBER-2011 (Boris)
+%
+%
+% History (by Nelson)
+%
+% Based on 'acmtrans' (for ACM Journals)
+% Date: 28th April 2008
+%
+% 1. Avoid 'repeating' the 'month' values.
+% 2. Avoid incorrectly italicizing the volume number.
+% 3. Avoid non italicizing certain titles (book, inproceedings etc).
+% 4. NO series if there is NO volume.
+% 5. Sorting of reference with first surname.
+% 6. Article no added for Inproceedings.
+%
+% Date: 07th May 2008
+%
+% 1. Abbreviation list added
+%
+% Citation format: [author-last-name year]
+% [author-last-name and author-last-name year]
+% [author-last-name, author-last-name, and author-last-name year]
+% [author-last-name et al. year]
+% [author-last-name]
+% author-last-name [year]
+% [author-last-name and author-last-name]
+% [author-last-name et al.]
+% [year] or [year,year]
+% year or year,year
+%
+% Reference list ordering: alphabetical by author or whatever passes
+% for author in the absence of one.
+%
+% Features of the old acmtrans.bst:
+% =================================
+%
+% - all authors appear last name first.
+% - all pages are listed xx-xx, (no pp.) and are at the end of the reference
+% - publishers are identified as publisher, address
+% - conferences papers (inproceedings) may give city of conference,
+% date of conference, and journal that the proceedings appear in.
+% - months abbreviated to max four letters (eg. Mar.)
+% - volume of a series indicated after the title of the series
+% - editors appear after edited title and are identified by a trailing "Eds."
+% not in parentheses. Editor names are not given in small caps.
+% (unless there is no author line)
+% - names terminated with a period even if there is no first name.
+% - editions are indicated trailing after the work, not in parentheses.
+% - "et al." citations have a protected period to avoid bad spacing (jrh)
+% - "address" required when publisher given
+% - series (roman) and volume are in a sentence separate from (book-)title
+%
+%
+% Features of chicago.bst:
+% =======================
+%
+% - full names used in citations, but abbreviated citations are available
+% (see above)
+% - if an entry has a "month", then the month and year are also printed
+% as part of that bibitem.
+% - all conjunctions use "and" instead of "\&"
+% - major modification from Chicago Manual of Style (13th ed.) is that
+% only the first author in a reference appears last name first-
+% additional authors appear as J. Q. Public.
+% - pages are listed as "pp. xx-xx" in all entry types except
+% article entries.
+% - book, inbook, and manual use "location: publisher" (or organization)
+% for address and publisher. All other types list publishers separately.
+% - "pp." are used to identify page numbers for all entry types except
+% articles.
+% - organization is used as a citation label if neither author nor editor
+% is present (for manuals).
+% - "et al." is used for long author and editor lists, or when "others"
+% is used.
+%
+% Modifications and bug fixes from newapa.bst:
+% ===========================================
+%
+% - added month, year to bib entries if month is present
+% - fixed bug with In proceedings, added necessary comma after title
+% - all conjunctions changed to "and" from "\&"
+% - fixed bug with author labels in my.full.label: "et al." now is
+% generated when "others" is an author name
+% - major modification from Chicago Manual of Style (13th ed.) is that
+% only the first author in a reference appears last name first-
+% additional authors appear as J. Q. Public.
+% - pages are listed as "pp. xx-xx" in all entry types except
+% article entries. Unnecessary (IMHO) "()" around page numbers
+% were removed, and page numbers now don't end with a period.
+% - created chicago.sty for use with this bibstyle (required).
+% - fixed bugs in FUNCTION {format.vol.num.pages} for missing volume,
+% number, and /or pages. Renamed to format.journal.volume.number.
+% - fixed bug in formatting booktitles: additional period an error if
+% book has a volume.
+% - fixed bug: editors usually given redundant period before next clause
+% (format.editors.dot) removed.
+% - added label support for organizations, if both author and editor
+% are missing (from alpha.bst). If organization is too long, then
+% the key field is used for abbreviated citations.
+% - In proceedings or books of several volumes, no comma was written
+% between the "Volume x" and the page numbers (this was intentional
+% in newapa.bst). Fixed.
+% - Some journals may not have volumes/numbers, only month/year (eg.
+% IEEE Computer). Fixed bug in article style that assumed volume/number
+% was always present.
+%
+% Original documentation for newapa.sty:
+% =====================================
+%
+% This version was made by modifying the master file made by
+% Oren Patashnik (PATASHNIK@SCORE.STANFORD.EDU), and the 'named' BibTeX
+% style of Peter F. Patel-Schneider.
+%
+% Copyright (C) 1985, all rights reserved.
+% Copying of this file is authorized only if either
+% (1) you make absolutely no changes to your copy, including name, or
+% (2) if you do make changes, you name it something other than 'newapa.bst'.
+% There are undoubtably bugs in this style. If you make bug fixes,
+% improvements, etc. please let me know. My e-mail address is:
+% spencer@cgrg.ohio.state.edu or 71160.3141@compuserve.com
+%
+% This style was made from 'plain.bst', 'named.bst', and 'apalike.bst',
+% with lots of tweaking to make it look like APA style, along with tips
+% from Young Ryu and Brian Reiser's modifications of 'apalike.bst'.
+%
+%
+% Start of ACM-Reference-Format-Journals.bst
+%
+% Note: Many of the new bibentry 'fields' will only work with the
+% 'ACM-Reference-Format-Journals.bst' file. Legacy .bib files (which will, in all probability,
+% NOT contain these new fields) will _still_ work with the ACM-Reference-Format-Journals.bst.
+%
+%
+ENTRY
+ { address
+ advisor
+ author
+ booktitle
+ chapter
+ city % jtb: added
+ date % jtb: added
+ edition
+ editor
+ howpublished
+ institution
+ journal
+ key
+ month
+ note
+ number
+ organization
+ pages
+ publisher
+ school
+ series
+ title
+ type
+ volume
+ year
+ % New keys recognized
+ issue % UTAH: used in, e.g., ACM SIGSAM Bulletin and ACM Communications in Computer Algebra
+ articleno
+ day % UTAH: needed for newspapers, weeklies, bi-weeklies
+ doi % UTAH
+ url % UTAH
+ bookpages % UTAH
+ numpages
+ lastaccessed % UTAH: used only for @Misc{...}
+ coden % UTAH
+ isbn % UTAH
+ isbn-13 % UTAH
+ issn % UTAH
+ lccn % UTAH
+ }
+ {}
+ { label.year extra.label sort.year sort.label }
+
+INTEGERS { output.state before.all mid.sentence after.sentence after.block }
+
+INTEGERS { show-isbn-10-and-13 } % initialized below in begin.bib
+
+INTEGERS { nameptr namesleft numnames }
+
+INTEGERS { multiresult }
+
+INTEGERS { len }
+
+INTEGERS { last.extra.num }
+
+STRINGS { s t t.org u }
+
+STRINGS { last.label next.extra }
+
+STRINGS { p1 p2 p3 page.count }
+
+FUNCTION { dump.stack.1 }
+{
+ duplicate$ "STACK[top] = [" swap$ * "]" * warning$
+}
+
+FUNCTION { dump.stack.2 }
+{
+ duplicate$ "STACK[top ] = [" swap$ * "]" * warning$
+ swap$
+ duplicate$ "STACK[top-1] = [" swap$ * "]" * warning$
+ swap$
+}
+
+FUNCTION { empty.or.unknown }
+{
+ %% Examine the top stack entry, and push 1 if it is empty, or
+ %% consists only of whitespace, or is a string beginning with two
+ %% queries (??), and otherwise, push 0.
+ %%
+ %% This function provides a replacement for empty$, with the
+ %% convenient feature that unknown values marked by two leading
+ %% queries are treated the same as missing values, and thus, do not
+ %% appear in the output .bbl file, and yet, their presence in .bib
+ %% file(s) serves to mark values which are temporarily missing, but
+ %% are expected to be filled in eventually once more data is
+ %% obtained. The TeX User Group and BibNet bibliography archives
+ %% make extensive use of this practice.
+ %%
+ %% An empty string cannot serve the same purpose, because just as in
+ %% statistics data processing, an unknown value is not the same as an
+ %% empty value.
+ %%
+ %% At entry: stack = ... top:[string]
+ %% At exit: stack = ... top:[0 or 1]
+
+ duplicate$ empty$
+ { pop$ #1 }
+ { #1 #2 substring$ "??" = }
+ if$
+}
+
+FUNCTION { writeln }
+{
+ %% In BibTeX style files, the sequences
+ %%
+ %% ... "one" "two" output
+ %% ... "one" "two" output.xxx
+ %%
+ %% ship "one" to the output file, possibly following by punctuation,
+ %% leaving the stack with
+ %%
+ %% ... "two"
+ %%
+ %% There is thus a one-string lag in output processing that must be
+ %% carefully handled to avoid duplicating a string in the output
+ %% file. Unless otherwise noted, all output.xxx functions leave
+ %% just one new string on the stack, and that model should be born
+ %% in mind when reading or writing function code.
+ %%
+ %% BibTeX's asynchronous buffering of output from strings from the
+ %% stack is confusing because newline$ bypasses the buffer. It
+ %% would have been so much easier for newline to be a character
+ %% rather than a state of the output-in-progress.
+ %%
+ %% The documentation in btxhak.dvi is WRONG: it says
+ %%
+ %% newline$ Writes onto the bbl file what's accumulated in the
+ %% output buffer. It writes a blank line if and only
+ %% if the output buffer is empty. Since write$ does
+ %% reasonable line breaking, you should use this
+ %% function only when you want a blank line or an
+ %% explicit line break.
+ %%
+ %% write$ Pops the top (string) literal and writes it on the
+ %% output buffer (which will result in stuff being
+ %% written onto the bbl file when the buffer fills
+ %% up).
+ %%
+ %% Examination of the BibTeX source code shows that write$ does
+ %% indeed behave as claimed, but newline$ sends a newline character
+ %% directly to the output file, leaving the stack unchanged. The
+ %% first line "Writes onto ... buffer." is therefore wrong.
+ %%
+ %% The original BibTeX style files almost always use "write$ newline$"
+ %% in that order, so it makes sense to hide that pair in a private
+ %% function like this one, named after a statement in Pascal,
+ %% the programming language embedded in the BibTeX Web program.
+
+ write$ % output top-of-stack string
+ newline$ % immediate write of newline (not via stack)
+}
+
+FUNCTION { init.state.consts }
+{
+ #0 'before.all :=
+ #1 'mid.sentence :=
+ #2 'after.sentence :=
+ #3 'after.block :=
+}
+
+FUNCTION { output.nonnull }
+{ % Stack in: ... R S T Stack out: ... R T File out: S<comma><space>
+ 's :=
+ output.state mid.sentence =
+ {
+ ", " * write$
+ }
+ {
+ output.state after.block =
+ {
+ add.period$ writeln
+ "\newblock " write$
+ }
+ {
+ output.state before.all =
+ {
+ write$
+ }
+ {
+ add.period$ " " * write$
+ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+FUNCTION { output.nonnull.dot.space }
+{ % Stack in: ... R S T Stack out: ... R T File out: S<dot><space>
+ 's :=
+ output.state mid.sentence = % { "<DEBUG output.nonnull.dot.space>. " * write$ }
+ {
+ ". " * write$
+ }
+ {
+ output.state after.block =
+ {
+ add.period$ writeln "\newblock " write$
+ }
+ {
+ output.state before.all =
+ {
+ write$
+ }
+ {
+ add.period$ " " * write$
+ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+FUNCTION { output.nonnull.remove }
+{ % Stack in: ... R S T Stack out: ... R T File out: S<space>
+ 's :=
+ output.state mid.sentence =
+ {
+ " " * write$
+ }
+ {
+ output.state after.block =
+ {
+ add.period$ writeln "\newblock " write$
+ }
+ {
+ output.state before.all =
+ {
+ write$
+ }
+ {
+ add.period$ " " * write$
+ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+FUNCTION { output.nonnull.removenospace }
+{ % Stack in: ... R S T Stack out: ... R T File out: S
+ 's :=
+ output.state mid.sentence =
+ {
+ "" * write$
+ }
+ {
+ output.state after.block =
+ {
+ add.period$ writeln "\newblock " write$
+ }
+ {
+ output.state before.all =
+ {
+ write$
+ }
+ {
+ add.period$ " " * write$
+ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+FUNCTION { output }
+{ % discard top token if empty, else like output.nonnull
+ duplicate$ empty.or.unknown
+ 'pop$
+ 'output.nonnull
+ if$
+}
+
+FUNCTION { output.dot.space }
+{ % discard top token if empty, else like output.nonnull.dot.space
+ duplicate$ empty.or.unknown
+ 'pop$
+ 'output.nonnull.dot.space
+ if$
+}
+
+FUNCTION { output.removenospace }
+{ % discard top token if empty, else like output.nonnull.removenospace
+ duplicate$ empty.or.unknown
+ 'pop$
+ 'output.nonnull.removenospace
+ if$
+}
+
+FUNCTION { output.check }
+{ % like output, but warn if key name on top-of-stack is not set
+ 't :=
+ duplicate$ empty.or.unknown
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull
+ if$
+}
+
+FUNCTION { output.check.dot.space }
+{ % like output.dot.space, but warn if key name on top-of-stack is not set
+ 't :=
+ duplicate$ empty.or.unknown
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull.dot.space
+ if$
+}
+
+FUNCTION { fin.block }
+{ % functionally, but not logically, identical to fin.entry
+ add.period$
+ writeln
+}
+
+FUNCTION { fin.entry }
+{
+ add.period$
+ writeln
+}
+
+FUNCTION { new.sentence }
+{ % update sentence state, with neither output nor stack change
+ output.state after.block =
+ 'skip$
+ {
+ output.state before.all =
+ 'skip$
+ { after.sentence 'output.state := }
+ if$
+ }
+ if$
+}
+
+FUNCTION { fin.sentence }
+{
+ add.period$
+ write$
+ new.sentence
+ ""
+}
+
+FUNCTION { new.block }
+{
+ output.state before.all =
+ 'skip$
+ { after.block 'output.state := }
+ if$
+}
+
+FUNCTION { output.coden } % UTAH
+{ % output non-empty CODEN as one-line sentence (stack untouched)
+ coden empty.or.unknown
+ { }
+ { "\showCODEN{" coden * "}" * writeln }
+ if$
+}
+
+FUNCTION { format.articleno }
+{
+ articleno empty.or.unknown
+ { "" }
+ {
+ numpages empty.or.unknown
+ { "articleno field, but no numpages field, in " cite$ * warning$ }
+ { }
+ if$
+ "Article " articleno *
+ }
+ if$
+}
+
+FUNCTION { format.year }
+{ % push year string or "????" onto output stack
+ %% Because year is a mandatory field, we always force SOMETHING
+ %% to be output
+ year empty.or.unknown
+ { "????" }
+ { year }
+ if$
+}
+
+FUNCTION { format.day.month }
+{ % push "day month " or "month " or "" onto output stack
+ day empty.or.unknown
+ {
+ month empty.or.unknown
+ { "" }
+ { month " " *}
+ if$
+ }
+ {
+ month empty.or.unknown
+ { "" }
+ { day " " * month * " " *}
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.day.month.year } % UTAH
+{ % if month is empty, push "" else push "(MON.)" or "(DD MON.)"
+ % Needed for frequent periodicals: 2008. ... New York Times C-1, C-2, C-17 (23 Oct.)
+ % acm-*.bst addition: prefix parenthesized date string with
+ % ", Article nnn "
+ articleno empty.or.unknown
+ { "" }
+ { ", " format.articleno * }
+ if$
+ " (" * format.day.month * format.year * ")" *
+}
+
+FUNCTION { output.day.month.year } % UTAH
+{ % if month is empty value, do nothing; else output stack top and
+ % leave with new top string "(MON.)" or "(DD MON.)"
+ % Needed for frequent periodicals: 2008. ... New York Times C-1, C-2, C-17 (23 Oct.)
+ format.day.month.year
+ output.nonnull.remove
+}
+
+FUNCTION { strip.doi } % UTAH
+{ % Strip any Web address prefix to recover the bare DOI, leaving the
+ % result on the output stack, as recommended by CrossRef DOI
+ % documentation.
+ % For example, reduce "http://doi.acm.org/10.1145/1534530.1534545" to
+ % "10.1145/1534530.1534545". That is later typeset and displayed as
+ % doi:10.1145/1534530.1534545 as the LAST item in the reference list
+ % entry. Publisher Web sites wrap this with a suitable link to a real
+ % URL to resolve the DOI, and the master http://dx.doi.org/ address is
+ % preferred, since publisher-specific URLs can disappear in response
+ % to economic events. All journals are encouraged by the DOI
+ % authorities to use that typeset format and link procedures for
+ % uniformity across all publications that include DOIs in reference
+ % lists.
+ % The numeric prefix is guaranteed to start with "10.", so we use
+ % that as a test.
+ doi #1 #3 substring$ "10." =
+ { doi }
+ {
+ doi #1 #7 substring$ "http://" =
+ {
+ doi #8 doi text.length$ #7 - substring$ 't := % get modifiable copy of rest of DOI
+
+ "INTERNAL STYLE-FILE ERROR" 's :=
+
+ % search for next "/" and assign its suffix to s
+
+ { t text.length$ }
+ {
+ t #1 #1 substring$ "/" =
+ {
+ % save rest of string as true DOI (should be 10.xxxx/yyyy)
+ t #2 t text.length$ #1 - substring$ 's :=
+ "" 't := % empty string t terminates the loop
+ }
+ {
+ % discard first character and continue loop: t <= substring(t,2,last)
+ t #2 t text.length$ #1 - substring$ 't :=
+ }
+ if$
+ }
+ while$
+
+ % check for valid DOI (should be 10.xxxx/yyyy)
+ s #1 #3 substring$ "10." =
+ { }
+ { "unrecognized DOI substring " s * " in DOI value [" * doi * "]" * warning$ }
+ if$
+
+ s % push the stripped DOI on the output stack
+
+ }
+ {
+ "unrecognized DOI value [" doi * "]" * warning$
+ doi % push the unrecognized original DOI on the output stack
+ }
+ if$
+ }
+ if$
+}
+
+%
+% Change by BV: added standard prefix to URL
+%
+FUNCTION { output.doi } % UTAH
+{ % output non-empty DOI as one-line sentence (stack untouched)
+ doi empty.or.unknown
+ { }
+ {
+ %% NB: We want URLs at beginning of line to reduce likelihood of
+ %% BibTeX's nasty line wrapping after column 79, which then requires
+ %% manual (or automated) editing of the .bbl file to repair.
+ %% The \url{} macro strips percent-newlines, and is thus safe in
+ %% the presence of the line wrapping, but \path|...| and
+ %% \verb|...| do not.
+ "\showDOI{%" writeln
+ "\url{http://dx.doi.org/" strip.doi * "}}" * writeln
+ }
+ if$
+}
+
+FUNCTION { output.isbn } % UTAH
+{ % output non-empty ISBN-10 and/or ISBN-13 as one-line sentences (stack untouched)
+ show-isbn-10-and-13
+ {
+ %% show both 10- and 13-digit ISBNs
+ isbn empty.or.unknown
+ { }
+ {
+ "\showISBNx{" isbn * "}" * writeln
+ }
+ if$
+ isbn-13 empty.or.unknown
+ { }
+ {
+ "\showISBNxiii{" isbn-13 * "}" * writeln
+ }
+ if$
+ }
+ {
+ %% show 10-digit ISBNs only if 13-digit ISBNs not available
+ isbn-13 empty.or.unknown
+ {
+ isbn empty.or.unknown
+ { }
+ {
+ "\showISBNx{" isbn * "}" * writeln
+ }
+ if$
+ }
+ {
+ "\showISBNxiii{" isbn-13 * "}" * writeln
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION { output.issn } % UTAH
+{ % output non-empty ISSN as one-line sentence (stack untouched)
+ issn empty.or.unknown
+ { }
+ { "\showISSN{" issn * "}" * writeln }
+ if$
+}
+
+FUNCTION { output.issue }
+{ % output non-empty issue number as a one-line sentence (stack untouched)
+ issue empty.or.unknown
+ { }
+ { "Issue " issue * "." * writeln }
+ if$
+}
+
+FUNCTION { output.lccn } % UTAH
+{ % return with stack untouched
+ lccn empty.or.unknown
+ { }
+ { "\showLCCN{" lccn * "}" * writeln }
+ if$
+}
+
+FUNCTION { output.note } % UTAH
+{ % return with stack empty
+ note empty.or.unknown
+ { }
+ { "\shownote{" note add.period$ * "}" * writeln }
+ if$
+}
+
+FUNCTION { output.note.check } % UTAH
+{ % return with stack empty
+ note empty.or.unknown
+ { "empty note in " cite$ * warning$ }
+ { "\shownote{" note add.period$ * "}" * writeln }
+ if$
+}
+
+%
+% Changes by BV 2011/04/15. Do not output
+% url if doi is defined
+%
+FUNCTION { output.url } % UTAH
+{ % return with stack untouched
+ % output URL and associated lastaccessed fields
+ doi empty.or.unknown
+ {
+ url empty.or.unknown
+ { }
+ {
+ %% NB: We want URLs at beginning of line to reduce likelihood of
+ %% BibTeX's nasty line wrapping after column 79, which would require
+ %% manual (or automated) editing of the .bbl file to repair. However,
+ %% the \url{} macro handles the unwrapping job automatically.
+ "\showURL{%" writeln
+ lastaccessed empty.or.unknown
+ { "" }
+ { "Retrieved " lastaccessed * " from " * }
+ if$
+
+ %% The URL field may contain a semicolon-separated list of Web
+ %% addresses, and we locate and wrap each of them in \url{...}.
+ %% The simplistic approach of putting the entire list into the
+ %% macro argument is that the semicolons are typeset in a
+ %% typewriter font, and no space follows them.
+ %%
+ %% We therefore replace the original code
+ %% "\url{" * url * "}}" * writeln
+ %% with this character-at-a-time loop:
+
+ "\url{" *
+
+ url 't := % get modifiable copy of URL list
+
+ { t text.length$ }
+ {
+ t #1 #1 substring$ ";" =
+ { % then split argument at separator
+ "};" * writeln
+ "\url{"
+ }
+ { % else concatenate nonblank character to argument
+ t #1 #1 substring$ " " =
+ { }
+ { t #1 #1 substring$ * }
+ if$
+ }
+ if$
+
+ t #2 t text.length$ #1 - substring$ 't :=
+ }
+ while$
+
+ "}}" * writeln
+ }
+ if$
+ }
+ { }
+ if$
+}
+
+FUNCTION { output.year.check }
+{ % warn if year empty, else output top string and leave " YEAR<label>" on stack in mid-sentence
+ year empty.or.unknown
+ { "empty year in " cite$ * warning$ }
+ { write$
+ " " year * extra.label *
+ mid.sentence 'output.state :=
+ }
+ if$
+}
+
+FUNCTION { not }
+{
+ { #0 }
+ { #1 }
+ if$
+}
+
+FUNCTION { and }
+{
+ 'skip$
+ { pop$ #0 }
+ if$
+}
+
+FUNCTION { or }
+{
+ { pop$ #1 }
+ 'skip$
+ if$
+}
+
+FUNCTION { le }
+{
+ %% test whether first number is less than or equal to second number
+ %% stack in: n1 n2
+ %% stack out: if n1 <= n2 then 1 else 0
+
+ %% "DEBUG: le " cite$ * warning$
+ > { #0 } { #1 } if$
+}
+
+FUNCTION { ge }
+{
+ %% test whether first number is greater than or equal to second number
+ %% stack in: n1 n2
+ %% stack out: if n1 >= n2 then 1 else 0
+
+ %% "DEBUG: ge " cite$ * warning$
+ < { #0 } { #1 } if$
+}
+
+FUNCTION { is.leading.digit }
+{
+ %% test whether first character of string is a digit
+ %% stack in: string
+ %% stack out: if first-char-is-digit then 1 else 0
+
+ #1 #1 substring$ % replace string by string[1:1]
+ duplicate$ % string[1:1] string[1:1]
+ chr.to.int$
+ "0" chr.to.int$ swap$ le % "0" <= string[1:1] --> 0-or-1
+ swap$ % 0-or-1 string[1:1]
+ chr.to.int$
+ "9" chr.to.int$ le % string[1:1} <= "9" --> 0-or-1
+ and
+}
+
+FUNCTION { skip.digits }
+{
+ %% skip over leading digits in string
+ %% stack in: string
+ %% stack out: rest-of-string leading-digits
+
+ %% "DEBUG: enter skip.digits " cite$ * warning$
+
+ %% dump.stack.1
+
+ duplicate$
+ 't :=
+ 't.org :=
+ "" 'u :=
+
+ { t text.length$ }
+ {
+ %% "=================DEBUG: skip.digits t = [" t * "]" * warning$
+ t is.leading.digit
+ { t #2 t text.length$ #1 - substring$ }
+ {
+ t 'u :=
+ ""
+ }
+ if$
+ 't :=
+ }
+ while$
+
+ u % rest of string
+ t.org #1 t.org text.length$ u text.length$ - substring$ % leading digits
+
+ %% "DEBUG: t.org = [" t.org * "]" * warning$
+ %% "DEBUG: u = [" u * "]" * warning$
+
+ %% dump.stack.2
+
+ %% "DEBUG: leave skip.digits " cite$ * warning$
+}
+
+FUNCTION { skip.nondigits }
+{
+ %% skip over leading nondigits in string
+ %% stack in: string
+ %% stack out: rest-of-string
+
+ %% "DEBUG: enter skip.nondigits " cite$ * warning$
+
+ 't :=
+ "" 'u :=
+
+ { t text.length$ }
+ {
+ %% "=================DEBUG: skip.nondigits t = [" t * "]" * warning$
+ t is.leading.digit
+ {
+ t 'u :=
+ ""
+ }
+ { t #2 t text.length$ #1 - substring$ }
+ if$
+ 't :=
+ }
+ while$
+
+ u % rest of string
+
+ %% dump.stack.1
+ %% "DEBUG: leave skip.nondigits " cite$ * warning$
+}
+
+FUNCTION { parse.next.number }
+{
+ %% stack in: string
+ %% stack out: rest-of-string next-numeric-part-of-string
+ %% Example:
+ %% stack in: "123:1--123:59"
+ %% stack out: ":1--123:59" "123"
+
+ 's :=
+ s skip.nondigits 's :=
+ s skip.digits
+}
+
+FUNCTION { reduce.pages.to.page.count }
+{
+ %% Stack in: arbitrary-and-unused
+ %% Stack out: unchanged
+ %%
+ %% For the new-style pagination with article number and numpages or
+ %% pages, we expect to have BibTeX entries containing something like
+ %% articleno = "17",
+ %% pages = "1--23",
+ %% with output "Article 17, 23 pages",
+ %% or
+ %% articleno = "17",
+ %% numpages = "23",
+ %% with output "Article 17, 23 pages",
+ %% or
+ %% articleno = "17",
+ %% pages = "17:1--17:23",
+ %% with output "Article 17, 23 pages",
+ %%
+ %% If articleno is missing or empty, then we should output "1--23",
+ %% "23" (with a warning of a missing articleno), or "17:1--17:23",
+ %% respectively.
+
+ %% "DEBUG: enter reduce.pages.to.page.count " cite$ * warning$
+
+ %% "DEBUG: pages = [" pages * "]" * warning$
+
+ pages
+ parse.next.number 'p1 :=
+ parse.next.number 'p2 :=
+ parse.next.number 'p3 :=
+ parse.next.number 'page.count :=
+
+ duplicate$
+ empty.or.unknown
+ { }
+ {
+ duplicate$ "unexpected trailing garbage [" swap$ *
+ "] after n:p1--n:p2 in pages = [" *
+ pages *
+ "] in " *
+ cite$ *
+ warning$
+ }
+ if$
+
+ pop$
+
+ %% "DEBUG: reduce.pages.to.page.count: "
+ %% " p1 = " p1 * *
+ %% " p2 = " p2 * *
+ %% " p3 = " p3 * *
+ %% " p4 = " page.count * *
+ %% " in " cite$ * * warning$
+
+ p1 p3 = p2 "1" = and numpages empty.or.unknown and
+ { "INFO: reduced pages = [" pages * "] to numpages = [" * page.count * "]" * warning$ }
+ {
+ numpages empty.or.unknown
+ { pages }
+ { numpages }
+ if$
+ 'page.count :=
+ }
+ if$
+
+ p1 "1" = p3 empty.or.unknown and numpages empty.or.unknown and
+ {
+ p2 'page.count :=
+ "INFO: reduced pages = [" pages * "] to numpages = [" * page.count * "]" * warning$
+ }
+ {
+ numpages empty.or.unknown
+ { pages }
+ { numpages }
+ if$
+ 'page.count :=
+ }
+ if$
+
+ %% "DEBUG: leave reduce.pages.to.page.count " cite$ * warning$
+}
+
+FUNCTION { new.block.checkb }
+{ % issue a new.block only if at least one of top two stack strings is not empty
+ empty.or.unknown
+ swap$ empty.or.unknown
+ and
+ 'skip$
+ 'new.block
+ if$
+}
+
+FUNCTION { field.or.null }
+{ % convert empty value to null string, else return value
+ duplicate$ empty.or.unknown
+ { pop$ "" }
+ 'skip$
+ if$
+}
+
+FUNCTION { emphasize }
+{ % emphasize a non-empty top string on the stack (WITHOUT italic correction)
+ duplicate$ empty.or.unknown
+ { pop$ "" }
+ { "{\em " swap$ * "}" * }
+ if$
+}
+
+FUNCTION { emphasize.with.italic.correction }
+{ % convert empty string to null string, or emphasize with a trailing italic correction
+ duplicate$ empty.or.unknown
+ { pop$ "" }
+ { "{\em " swap$ * "\/}" * }
+ if$
+}
+
+FUNCTION { comma }
+{ % convert empty string to null string, or brace string and add trailing comma
+ duplicate$ empty.or.unknown
+ { pop$ "" }
+ { "{" swap$ * "}," * }
+ if$
+}
+
+FUNCTION { format.names }
+{
+ % Format bibliographical entries with the first author last name first,
+ % and subsequent authors with initials followed by last name.
+ % All names are formatted in this routine.
+
+ 's :=
+ #1 'nameptr := % nameptr = 1;
+ s num.names$ 'numnames := % numnames = num.name$(s);
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { nameptr #1 =
+ %NO: BAD ORDER: {"{" s nameptr "{ff~}{ll}{, jj}{, vv}" format.name$ * "}" * 't := }
+ %NO: BAD ORDER: {"{" s nameptr "{ff~}{ll}{, jj}{, vv}" format.name$ * "}" * 't := }
+ {"{" s nameptr "{ff }{vv }{ll}{, jj}" format.name$ * "}" * 't := }
+ {"{" s nameptr "{ff }{vv }{ll}{, jj}" format.name$ * "}" * 't := }
+ if$
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "{\sc others}" =
+ { " {et~al\mbox{.}}" * } % jrh: avoid spacing problems
+ { " {and} " * t * } % from Chicago Manual of Style
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr := % nameptr += 1;
+ namesleft #1 - 'namesleft := % namesleft =- 1;
+ }
+ while$
+}
+
+FUNCTION { my.full.label }
+{
+ 's :=
+ #1 'nameptr := % nameptr = 1;
+ s num.names$ 'numnames := % numnames = num.name$(s);
+ numnames 'namesleft :=
+ { namesleft #0 > }
+
+ { s nameptr "{vv~}{ll}" format.name$ 't := % get the next name
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "others" =
+ { " et~al\mbox{.}" * } % jrh: avoid spacing problems
+ { " and " * t * } % from Chicago Manual of Style
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr := % nameptr += 1;
+ namesleft #1 - 'namesleft := % namesleft =- 1;
+ }
+ while$
+
+}
+
+FUNCTION { format.names.fml }
+{
+ % Format names in "familiar" format, with first initial followed by
+ % last name. Like format.names, ALL names are formatted.
+ % jtb: The names are NOT put in small caps
+
+ 's :=
+ #1 'nameptr := % nameptr = 1;
+ s num.names$ 'numnames := % numnames = num.name$(s);
+ numnames 'namesleft :=
+ { namesleft #0 > }
+
+ {
+ "{" s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ * "}" * 't :=
+
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "{others}" =
+ { " {et~al\mbox{.}}" * }
+ { " {and} " * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr := % nameptr += 1;
+ namesleft #1 - 'namesleft := % namesleft =- 1;
+ }
+ while$
+}
+
+FUNCTION { format.authors }
+{
+ author empty.or.unknown
+ { "" }
+ { author format.names add.period$} % jtb: add period if none before
+ if$
+}
+
+FUNCTION { format.key }
+{
+ empty.or.unknown
+ { key field.or.null }
+ { "" }
+ if$
+}
+
+FUNCTION { format.no.key }
+{
+ empty.or.unknown
+ { "" }
+ { "" }
+ if$
+}
+
+FUNCTION { format.editors.fml }
+{
+ % Format editor names for use in the "in" types: inbook, incollection,
+ % inproceedings: first initial, then last names. When editors are the
+ % LABEL for an entry, then format.editor is used which lists editors
+ % by last name first.
+
+ editor empty.or.unknown
+ { "" }
+ {
+ editor format.names.fml editor num.names$ #1 >
+ { " (Eds.)" * }
+ { " (Ed.)" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.editors }
+{ % format editor names for use in labels, last names first.
+ editor empty.or.unknown
+ { "" }
+ {
+ editor format.names
+ editor num.names$ #1 >
+ { " (Eds.)." * }
+ { " (Ed.)." * }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.articletitle }
+{
+ title empty.or.unknown
+ { "" }
+ % Use this to preserve lettercase in titles:
+ { "\showarticletitle{" title * "}" * }
+ % Use this for downcase title style:
+ % { \showarticletitle{" title "t" change.case$ * "}" * }
+ if$
+}
+
+FUNCTION { format.title }
+{
+ title empty.or.unknown
+ { "" }
+ % Use this to preserve lettercase in titles:
+ { title }
+ % Use this for downcase title style:
+ % { title "t" change.case$ }
+ if$
+}
+
+FUNCTION { n.dashify }
+{
+ 't :=
+ ""
+ { t empty.or.unknown not }
+ {
+ t #1 #1 substring$ "-" =
+ {
+ t #1 #2 substring$ "--" = not
+ { "--" *
+ t #2 global.max$ substring$ 't :=
+ }
+ {
+ { t #1 #1 substring$ "-" = }
+ {
+ "-" *
+ t #2 global.max$ substring$ 't :=
+ }
+ while$
+ }
+ if$
+ }
+ {
+ t #1 #1 substring$ *
+ t #2 global.max$ substring$ 't :=
+ }
+ if$
+ }
+ while$
+}
+
+FUNCTION { format.btitle }
+{
+ edition empty.or.unknown
+ { title emphasize }
+ { title empty.or.unknown
+ { title emphasize } % jtb: what is this supposed to do ?!?
+ { "{\em " title * "\/} (" * edition "l" change.case$ * " ed.)" * } % jtb: no parens for ed.
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.emphasize.booktitle }
+{ % push "" or "{\em booktitle}" or "{\em booktitle}, (second ed.)" on stack
+ edition empty.or.unknown
+ { booktitle emphasize }
+ { booktitle empty.or.unknown
+ { "" }
+ { "{\em " booktitle * "} (" * edition "l" change.case$ * " ed.)" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.city }
+{
+ % jtb: if the preceding string (the title of the conference) is non-empty,
+ % jtb: append the location, otherwise leave empty (so as to trigger the
+ % jtb: error message in output.check
+
+ duplicate$ empty.or.unknown
+ { }
+ {
+ city empty.or.unknown
+ {
+ date empty.or.unknown
+ { }
+ { " (" * date * ")" * }
+ if$
+ }
+ {
+ date empty.or.unknown
+ { " (" * city * ")" * }
+ { " (" * city * ", " * date * ")" * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION { tie.or.space.connect }
+{
+ duplicate$ text.length$ #3 <
+ { "~" }
+ { " " }
+ if$
+ swap$ * *
+}
+
+FUNCTION { either.or.check }
+{
+ empty.or.unknown
+ 'pop$
+ { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+ if$
+}
+
+FUNCTION { format.bvolume }
+{
+ % jtb: If there is a series, this is added and the volume trails after it.
+ % jtb: Otherwise, "Vol" is Capitalized.
+
+ volume empty.or.unknown
+ { "" }
+ {
+ series empty.or.unknown
+ { "Vol." volume tie.or.space.connect}
+ { series ", " * "Vol." volume tie.or.space.connect *}
+ if$
+ "volume and number" number either.or.check
+ }
+ if$
+}
+
+FUNCTION { format.bvolume.noseries }
+{
+ volume empty.or.unknown
+ { "" }
+ {
+ series empty.or.unknown
+ { "Vol." volume tie.or.space.connect}
+ { "Vol." volume tie.or.space.connect}
+% { series ", " * "Vol." volume tie.or.space.connect *}
+ if$
+ "volume and number" number either.or.check
+ }
+ if$
+}
+
+FUNCTION { format.series }
+{
+ series empty.or.unknown
+ {""}
+ {" {\em (" * series ")}" *}
+ if$
+}
+
+FUNCTION { format.number.series }
+{
+ volume empty.or.unknown
+ {
+ number empty.or.unknown
+ {
+ volume empty.or.unknown
+ { "" }
+ {
+ series empty.or.unknown
+ { "" }
+ { " (" series * ")" * }
+ if$
+ }
+ if$
+ } % { series field.or.null }
+ {
+ output.state mid.sentence =
+ { "Number" } % gnp - changed to mixed case always
+ { "Number" }
+ if$
+ number tie.or.space.connect series empty.or.unknown
+ { "there's a number but no series in " cite$ * warning$ }
+ { " in " * series * }
+ if$
+ }
+ if$
+ }
+ {
+ ""
+ }
+ if$
+}
+
+FUNCTION { multi.page.check }
+{
+ 't :=
+ #0 'multiresult :=
+ { multiresult not
+ t empty.or.unknown not
+ and
+ }
+ { t #1 #1 substring$
+ duplicate$ "-" =
+ swap$ duplicate$ "," =
+ swap$ "+" =
+ or or
+ { #1 'multiresult := }
+ { t #2 global.max$ substring$ 't := }
+ if$
+ }
+ while$
+ multiresult
+}
+
+FUNCTION { format.pages }
+{
+ pages empty.or.unknown
+ { "" }
+ {
+ pages multi.page.check
+ { pages n.dashify } % gnp - removed () % jtb: removed pp.
+ { pages }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.pages.check.without.articleno }
+{ %% format pages field only if articleno is absent
+ %% Stack out: pages-specification
+ numpages missing$ pages missing$ and
+ { "page numbers missing in both pages and numpages fields in " cite$ * warning$ }
+ { }
+ if$
+
+ articleno empty.or.unknown
+ {
+ pages missing$
+ { numpages }
+ { format.pages }
+ if$
+ }
+ { "" }
+ if$
+}
+
+FUNCTION { format.pages.check }
+{
+ pages empty.or.unknown
+ { "page numbers missing in " cite$ * warning$ "" }
+ { pages n.dashify }
+ if$
+}
+
+FUNCTION { format.bookpages }
+{
+ bookpages empty.or.unknown
+ { "" }
+ { bookpages "book pages" tie.or.space.connect }
+ if$
+}
+
+FUNCTION { format.named.pages }
+{
+ pages empty.or.unknown
+ { "" }
+ { format.pages "pages" tie.or.space.connect }
+ if$
+}
+
+%
+% Changed by Boris Veytsman, 2011-03-13
+% Now the word "pages" is printed even if
+% there field pages is not empty.
+%
+
+FUNCTION { format.page.count }
+{
+ page.count empty.or.unknown
+ { "" }
+ {
+ articleno empty.or.unknown
+ { "numpages field, but no articleno field, in " cite$ * warning$ }
+ { }
+ if$
+ page.count "pages" tie.or.space.connect
+ }
+ if$
+}
+
+FUNCTION { format.articleno.numpages }
+{
+ %% There are seven possible outputs, depending on which fields are set.
+ %%
+ %% These four are handled here:
+ %%
+ %% articleno, numpages, pages -> "Article articleno-value, numpages-value pages"
+ %% articleno, numpages -> "Article articleno-value, numpages-value pages"
+ %% articleno, pages -> "Article articleno-value, reduced-pages-value pages"
+ %% articleno -> "Article articleno-value" and warn about missing numpages
+ %%
+ %% The remaining three have already been handled by
+ %% format.pages.check.without.articleno:
+ %%
+ %% numpages, pages -> "pages-value"
+ %% numpages -> "numpages-value"
+ %% pages -> "pages-value"
+
+ articleno empty.or.unknown
+ {
+ numpages empty.or.unknown
+ { }
+ { "require articleno with numpages field in " cite$ * warning$ }
+ if$
+ ""
+ }
+ {
+ numpages empty.or.unknown
+ {
+ pages empty.or.unknown
+ {
+ "require pages or numpages fields with articleno field in " cite$ * warning$
+ "" 'page.count :=
+ }
+ { reduce.pages.to.page.count }
+ if$
+ }
+ { numpages 'page.count := }
+ if$
+
+ %% The Article number is now handled in format.day.month.year because
+ %% ACM prefers the style "Digital Libraries 12, 3, Article 5 (July 2008)"
+ %% over "Digital Libraries 12, 3 (July 2008), Article 5"
+ %% format.articleno output
+ format.page.count
+ }
+ if$
+}
+
+FUNCTION { format.journal.volume.number.day.month.year }
+{
+ % By Young (and Spencer)
+ % GNP - fixed bugs with missing volume, number, and/or pages
+ %
+ % Format journal, volume, number, pages for article types.
+ %
+ journal empty.or.unknown
+ { "no journal in " cite$ * warning$
+ "" }
+% { journal emphasize.with.italic.correction }
+ {
+ journal "Journal of the ACM" =
+ { "{\it J. ACM}" }
+ {
+ journal "American Mathematical Society Translations" =
+ { "{\it Amer. Math. Soc. Transl.}" }
+ {
+ journal "Bulletin of the American Mathematical Society" =
+ { "{\it Bull. Amer. Math. Soc.}" }
+ {
+ journal "Proceedings of the American Mathematical Society" =
+ { "{\it Proc. Amer. Math. Soc.}" }
+ {
+ journal "Transactions of the American Mathematical Society" =
+ { "{\it Trans. Amer. Math. Soc.}" }
+ {
+ journal "Communications of the {ACM}" =
+ { "{\it Commun. {ACM}}" }
+ {
+ journal "{ACM} Computing Surveys" =
+ { "{\it Comput. Surveys}" }
+ {
+ journal "{ACM} Transactions on Mathematical Software" =
+ { "{\it {ACM} Trans. Math. Software}" }
+ {
+ journal "{ACM} {SIGNUM} Newsletter" =
+ { "{\it {ACM} {SIGNUM} Newslett.}" }
+ {
+ journal "American Journal of Sociology" =
+ { "{\it Amer. J. Sociology}" }
+ {
+ journal "Journal of the American Statistical Association" =
+ { "{\it J. Amer. Statist. Assoc.}" }
+ {
+ journal "Applied Mathematics and Computation" =
+ { "{\it Appl. Math. Comput.}" }
+ {
+ journal "American Mathematical Monthly" =
+ { "{\it Amer. Math. Monthly}" }
+ {
+ journal "British Journal of Mathematical and Statistical Psychology" =
+ { "{\it Brit. J. Math. Statist. Psych.}" }
+ {
+ journal "Canadian Mathematical Bulletin" =
+ { "{\it Canad. Math. Bull.}" }
+ {
+ journal "Journal of Computational and Applied Mathematics" =
+ { "{\it J. Comput. Appl. Math.}" }
+ {
+ journal "Journal of Computational Physics" =
+ { "{\it J. Comput. Phys.}" }
+ {
+ journal "Computers and Structures" =
+ { "{\it Comput. \& Structures}" }
+ {
+ journal "The Computer Journal" =
+ { "{\it Comput. J.}" }
+ {
+ journal "Journal of Computer and System Sciences" =
+ { "{\it J. Comput. System Sci.}" }
+ {
+ journal "Contemporary Mathematics" =
+ { "{\it Contemp. Math.}" }
+ {
+ journal "Crelle's Journal" =
+ { "{\it Crelle's J.}" }
+ {
+ journal "Giornale di Mathematiche" =
+ { "{\it Giorn. Mat.}" }
+ {
+ journal "{IEEE} Transactions on Computers" =
+ { "{\it {IEEE} Trans. Comput.}" }
+ {
+ journal "{IEEE} Transactions on Automatic Control" =
+ { "{\it {IEEE} Trans. Automat. Control}" }
+ {
+ journal "Proceedings of the {IEEE}" =
+ { "{\it Proc. {IEEE}}" }
+ {
+ journal "{IEEE} Transactions on Aerospace and Electronic Systems" =
+ { "{\it {IEEE} Trans. Aerospace Electron. Systems}" }
+ {
+ journal "{IMA} Journal of Numerical Analysis" =
+ { "{\it {IMA} J. Numer. Anal.}" }
+ {
+ journal "Information Processing Letters" =
+ { "{\it Inform. Process. Lett.}" }
+ {
+ journal "Journal of the Institute of Mathematics and its Applications" =
+ { "{\it J. Inst. Math. Appl.}" }
+ {
+ journal "International Journal of Control" =
+ { "{\it Internat. J. Control}" }
+ {
+ journal "International Journal for Numerical Methods in Engineering" =
+ { "{\it Internat. J. Numer. Methods Engrg.}" }
+ {
+ journal "International Journal of Supercomputing Applications" =
+ { "{\it Internat. J. Supercomputing Applic.}" }
+ {
+ journal "Journal of Research of the National Bureau of Standards" =
+ { "{\it J. Res. Nat. Bur. Standards}" }
+ {
+ journal "Linear Algebra and its Applications" =
+ { "{\it Linear Algebra Appl.}" }
+ {
+ journal "Journal of Mathematical Analysis and Applications" =
+ { "{\it J. Math. Anal. Appl.}" }
+ {
+ journal "Mathematische Annalen" =
+ { "{\it Math. Ann.}" }
+ {
+ journal "Journal of Mathematical Physics" =
+ { "{\it J. Math. Phys.}" }
+ {
+ journal "Mathematics of Computation" =
+ { "{\it Math. Comp.}" }
+ {
+ journal "Mathematica Scandinavica" =
+ { "{\it Math. Scand.}" }
+ {
+ journal "Mathematical Tables and Other Aids to Computation" =
+ { "{\it Math. Tables Aids Comput.}" }
+ {
+ journal "Numerische Mathematik" =
+ { "{\it Numer. Math.}" }
+ {
+ journal "Pacific Journal of Mathematics" =
+ { "{\it Pacific J. Math.}" }
+ {
+ journal "Journal of Parallel and Distributed Computing" =
+ { "{\it J. Parallel and Distrib. Comput.}" }
+ {
+ journal "Parallel Computing" =
+ { "{\it Parallel Comput.}" }
+ {
+ journal "Philosophical Magazine" =
+ { "{\it Philos. Mag.}" }
+ {
+ journal "Proceedings of the National Academy of Sciences of the USA" =
+ { "{\it Proc. Nat. Acad. Sci. U. S. A.}" }
+ {
+ journal "Quarterly Journal of Mathematics, Oxford, Series (2)" =
+ { "{\it Quart. J. Math. Oxford Ser. (2)}" }
+ {
+ journal "Quarterly of Applied Mathematics" =
+ { "{\it Quart. Appl. Math.}" }
+ {
+ journal "Review of the International Statisical Institute" =
+ { "{\it Rev. Inst. Internat. Statist.}" }
+ {
+ journal "Journal of the Society for Industrial and Applied Mathematics" =
+ { "{\it J. Soc. Indust. Appl. Math.}" }
+ {
+ journal "Journal of the Society for Industrial and Applied Mathematics, Series B, Numerical Analysis" =
+ { "{\it J. Soc. Indust. Appl. Math. Ser. B Numer. Anal.}" }
+ {
+ journal "{SIAM} Journal on Algebraic and Discrete Methods" =
+ { "{\it {SIAM} J. Algebraic Discrete Methods}" }
+ {
+ journal "{SIAM} Journal on Applied Mathematics" =
+ { "{\it {SIAM} J. Appl. Math.}" }
+ {
+ journal "{SIAM} Journal on Computing" =
+ { "{\it {SIAM} J. Comput.}" }
+ {
+ journal "{SIAM} Journal on Matrix Analysis and Applications" =
+ { "{\it {SIAM} J. Matrix Anal. Appl.}" }
+ {
+ journal "{SIAM} Journal on Numerical Analysis" =
+ { "{\it {SIAM} J. Numer. Anal.}" }
+ {
+ journal "{SIAM} Review" =
+ { "{\it {SIAM} Rev.}" }
+ {
+ journal "{SIAM} Journal on Scientific and Statistical Computing" =
+ { "{\it {SIAM} J. Sci. Statist. Comput.}" }
+ {
+ journal "Software Practice and Experience" =
+ { "{\it Software Prac. Experience}" }
+ {
+ journal "Statistical Science" =
+ { "{\it Statist. Sci.}" }
+ {
+ journal "{USSR} Computational Mathematics and Mathematical Physics" =
+ { "{\it {U. S. S. R.} Comput. Math. and Math. Phys.}" }
+ {
+ journal "Journal of {VLSI} and Computer Systems" =
+ { "{\it J. {VLSI} Comput. Syst.}" }
+ {
+ journal "Zeitschrift fur Angewandte Mathematik und Mechanik" =
+ { "{\it Z. Angew. Math. Mech.}" }
+ {
+ journal "Zeitschrift fur Angewandte Mathematik und Physik" =
+ { "{\it Z. Angew. Math. Phys.}" }
+ {
+ journal "ACM Computing Surveys" =
+ { "{\it Comput. Surveys}" }
+ {
+ journal "ACM Transactions on Mathematical Software" =
+ { "{\it ACM Trans. Math. Software}" }
+ {
+ journal "ACM {SIGNUM} Newsletter" =
+ { "{\it ACM {SIGNUM} Newslett.}" }
+ {
+ journal "IEEE Transactions on Computers" =
+ { "{\it IEEE Trans. Comput.}" }
+ {
+ journal "IEEE Transactions on Automatic Control" =
+ { "{\it IEEE Trans. Automat. Control}" }
+ {
+ journal "Proceedings of the IEEE" =
+ { "{\it Proc. IEEE}" }
+ {
+ journal "IEEE Transactions on Aerospace and Electronic Systems" =
+ { "{\it IEEE Trans. Aerospace Electron. Systems}" }
+ {
+ journal "IMA Journal of Numerical Analysis" =
+ { "{\it IMA J. Numer. Anal.}" }
+ {
+ journal "SIAM Journal on Algebraic and Discrete Methods" =
+ { "{\it SIAM J. Algebraic Discrete Methods}" }
+ {
+ journal "SIAM Journal on Applied Mathematics" =
+ { "{\it SIAM J. Appl. Math.}" }
+ {
+ journal "SIAM Journal on Computing" =
+ { "{\it SIAM J. Comput.}" }
+ {
+ journal "SIAM Journal on Matrix Analysis and Applications" =
+ { "{\it SIAM J. Matrix Anal. Appl.}" }
+ {
+ journal "SIAM Journal on Numerical Analysis" =
+ { "{\it SIAM J. Numer. Anal.}" }
+ {
+ journal "SIAM Review" =
+ { "{\it SIAM Rev.}" }
+ {
+ journal "SIAM Journal on Scientific and Statistical Computing" =
+ { "{\it SIAM J. Sci. Statist. Comput.}" }
+ {
+ journal "USSR Computational Mathematics and Mathematical Physics" =
+ { "{\it U. S. S. R. Comput. Math. and Math. Phys.}" }
+ {
+ journal "Journal of VLSI and Computer Systems" =
+ { "{\it J. VLSI Comput. Syst.}" }
+ {
+ journal "Communications of the ACM" =
+ { "{\it Commun. ACM}" }
+ %% If no match with cases needing special handling, just output journal name
+ { journal emphasize.with.italic.correction }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+
+ number empty.or.unknown
+ {
+ volume empty.or.unknown
+ { "no number and no volume in " cite$ * warning$ "" * }
+ { " " * " {" * volume * "}" * }
+ if$
+ }
+ {
+ volume empty.or.unknown
+ {
+ "unusual to have number, but no volume, for " cite$ * warning$
+ " " * number *
+ }
+ { " " * volume comma " " * number * * }
+ if$
+ }
+ if$
+
+ format.day.month.year *
+}
+
+FUNCTION { format.chapter.pages }
+{
+ chapter empty.or.unknown
+ 'format.pages
+ { type empty.or.unknown
+ { "Chapter" } % gnp - changed to mixed case
+ { type "t" change.case$ }
+ if$
+ chapter tie.or.space.connect
+ pages empty.or.unknown
+ {"page numbers missing in " cite$ * warning$} % gnp - added check
+ { ", " * format.pages * }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.in.emphasize.booktitle }
+{ % jtb: format for collections or proceedings not appearing in a journal
+ booktitle empty.or.unknown
+ { "" }
+ { "In " format.emphasize.booktitle * }
+ if$
+}
+
+FUNCTION { format.in.booktitle }
+{ % jtb: format for proceedings appearing in a journal
+ booktitle empty.or.unknown
+ { "" }
+ { "In " booktitle * }
+ if$
+}
+
+FUNCTION { format.in.ed.booktitle }
+{
+ booktitle empty.or.unknown
+ { "" }
+ { editor empty.or.unknown
+ { "In " format.emphasize.booktitle * }
+ % jtb: swapped editor location
+ { "In " format.emphasize.booktitle * ", " * format.editors.fml * }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.thesis.type }
+{ % call with default type on stack top
+ type empty.or.unknown
+ 'skip$ % use default type
+ {
+ pop$ % discard default type
+ % NO: it is silly to have to brace protect every degree type!: type "t" change.case$
+ type
+ }
+ if$
+}
+
+FUNCTION { format.tr.number }
+{
+ type empty.or.unknown
+% { "Tech. Rep." }
+ { "{T}echnical {R}eport" } % ACM wants it explicit (Gerry 9/28)
+ 'type
+ if$
+ number empty.or.unknown
+ { "t" change.case$ }
+ %% LOOKS BAD: { "." * number tie.or.space.connect }
+ %% Prefer "Research report RJ687." to "Research report. RJ687."
+ { number tie.or.space.connect }
+ if$
+}
+
+FUNCTION { format.advisor }
+{
+ advisor empty.or.unknown
+ { "" }
+ { "Advisor(s) " advisor * }
+ if$
+}
+
+FUNCTION { format.article.crossref }
+{ "See"
+ "\citeN{" * crossref * "}" *
+}
+
+FUNCTION { format.crossref.editor }
+{
+ editor #1 "{vv~}{ll}" format.name$
+ editor num.names$ duplicate$
+ #2 >
+ { pop$ " et~al\mbox{.}" * } % jrh: avoid spacing problems
+ { #2 <
+ 'skip$
+ { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { " et~al\mbox{.}" * } % jrh: avoid spacing problems
+ { " and " * editor #2 "{vv~}{ll}" format.name$ * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.book.crossref }
+{
+ volume empty.or.unknown
+ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+ "In "
+ }
+ { "Volume" volume tie.or.space.connect % gnp - changed to mixed case
+ " of " *
+ }
+ if$
+ editor empty.or.unknown
+ editor field.or.null author field.or.null =
+ or
+ { key empty.or.unknown
+ { series empty.or.unknown
+ { "need editor, key, or series for " cite$ * " to crossref " *
+ crossref * warning$
+ "" *
+ }
+ { "{\em " * series * "\/}" * }
+ if$
+ }
+ { key * }
+ if$
+ }
+ { format.crossref.editor * }
+ if$
+ " \citeN{" * crossref * "}" *
+}
+
+FUNCTION { format.incoll.inproc.crossref }
+{ "See"
+ " \citeN{" * crossref * "}" *
+}
+
+FUNCTION { format.lab.names }
+{
+ % format.lab.names:
+ %
+ % determines "short" names for the abbreviated author information.
+ % "Long" labels are created in calc.label, using the routine my.full.label
+ % to format author and editor fields.
+ %
+ % There are 4 cases for labels. (n=3 in the example)
+ % a) one author Foo
+ % b) one to n Foo, Bar and Baz
+ % c) use of "and others" Foo, Bar et al.
+ % d) more than n Foo et al.
+
+ 's :=
+ s num.names$ 'numnames :=
+ numnames #2 > % change number to number of others allowed before
+ % forcing "et al".
+ { s #1 "{vv~}{ll}" format.name$ " et~al\mbox{.}" * } % jrh: \mbox{} added
+ {
+ numnames #1 - 'namesleft :=
+ #2 'nameptr :=
+ s #1 "{vv~}{ll}" format.name$
+ { namesleft #0 > }
+ { nameptr numnames =
+ { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { " et~al\mbox{.}" * } % jrh: avoid spacing problems
+ { " and " * s nameptr "{vv~}{ll}" format.name$ * }
+ if$
+ }
+ { ", " * s nameptr "{vv~}{ll}" format.name$ * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+ }
+ if$
+}
+
+FUNCTION { author.key.label }
+{
+ author empty.or.unknown
+ { key empty.or.unknown
+ { "no key, author in " cite$ * warning$
+ cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION { author.key.organization.label }
+{ % added - gnp. Provide label formatting by organization if author is null.
+ author empty.or.unknown
+ { organization empty.or.unknown
+ { key empty.or.unknown
+ { "no key, author or organization in " cite$ * warning$
+ cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { organization }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION { editor.key.organization.label }
+{ % added - gnp. Provide label formatting by organization if editor is null.
+ editor empty.or.unknown
+ { organization empty.or.unknown
+ { key empty.or.unknown
+ { "no key, editor or organization in " cite$ * warning$
+ cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { organization }
+ if$
+ }
+ { editor format.lab.names }
+ if$
+}
+
+FUNCTION { author.editor.key.label }
+{
+ author empty.or.unknown
+ { editor empty.or.unknown
+ { key empty.or.unknown
+ { "no key, author, or editor in " cite$ * warning$
+ cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.lab.names }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION { calc.label }
+{
+ % Changed - GNP. See also author.organization.sort, editor.organization.sort
+ % Form label for BibTeX entry. The classification of which fields are used
+ % for which type of entry (book, inbook, etc.) are taken from alpha.bst.
+ % The change here from newapa is to also include organization as a
+ % citation label if author or editor is missing.
+
+ type$ "book" =
+ type$ "inbook" =
+ or
+ type$ "periodical" =
+ or
+ 'author.editor.key.label
+ { type$ "proceedings" =
+ 'editor.key.organization.label
+ { type$ "manual" =
+ 'author.key.organization.label
+ 'author.key.label
+ if$
+ }
+ if$
+ }
+ if$
+
+ author empty.or.unknown % generate the full label citation information.
+ {
+ editor empty.or.unknown
+ {
+ organization empty.or.unknown
+ {
+ key empty.or.unknown
+ {
+ "no author, editor, organization, or key in " cite$ * warning$
+ "??"
+ }
+ { key }
+ if$
+ }
+ { organization }
+ if$
+ }
+ { editor my.full.label }
+ if$
+ }
+ { author my.full.label }
+ if$
+
+ % leave label on the stack, to be popped when required.
+
+ "}{" * swap$ * "}{" *
+ % year field.or.null purify$ #-1 #4 substring$ *
+ %
+ % save the year for sort processing afterwards (adding a, b, c, etc.)
+ %
+ year field.or.null purify$ #-1 #4 substring$
+ 'label.year :=
+}
+
+%
+% Change by Gerry: use number-like citations for transactions
+% 2011/03/23
+%
+%FUNCTION {output.bibitem}
+%{ newline$
+% "\bibitem{" write$
+% cite$ write$
+% "}" write$
+% newline$
+% ""
+% before.all 'output.state :=
+%}
+
+FUNCTION { output.bibitem }
+{
+ newline$
+ "\bibitem[\protect\citeauthoryear{" write$
+ calc.label write$
+ sort.year write$
+ "}]%" writeln
+ " {" write$
+ cite$ write$
+ "}" writeln
+ ""
+ before.all 'output.state :=
+}
+
+
+FUNCTION { output.issue.doi.coden.isxn.lccn.url }
+{ % enter and return with stack empty
+ %% We switch now from buffered output to output of complete lines, so
+ %% that the Issue .. URL data have their own lines, and are less likely
+ %% to be line-wrapped by BibTeX's short-sighted algorithm, which wraps
+ %% lines longer than 79 characters, backtracking to what it thinks is
+ %% a break point in the string. Any such wrapping MUST be undone to
+ %% prevent percent-newline from appearing in DOIs and URLs. The
+ %% output data are intentionally wrapped in \showxxx{} macros at
+ %% beginning of line, and that supply their own punctuation (if they
+ %% are not defined to suppress output entirely), to make it easier for
+ %% other software to recover them from .bbl files.
+ %%
+ %% It also makes it possible to later change the macro definitions
+ %% to suppress particular output values, or alter their appearance.
+ %%
+ %% Note that it is possible for theses, technical reports, and
+ %% manuals to have ISBNs, and anything that has an ISBN may also
+ %% have an ISSN. When there are no values for these keys, there
+ %% is no output generated for them here.
+
+ "\newblock" writeln
+ after.block 'output.state :=
+
+ output.issue
+ output.isbn
+ output.coden % CODEN is functionally like ISSN, so output them sequentially
+ output.issn
+ output.lccn
+ output.doi % DOI is ALWAYS last according to CrossRef DOI documentation
+ output.url % but ACM wants URL last
+}
+
+FUNCTION { output.issue.doi.coden.isxn.lccn.url.note }
+{ % enter with stack empty, return with empty string on stack
+ output.issue.doi.coden.isxn.lccn.url
+ note empty.or.unknown
+ { }
+ {
+ "\newblock" writeln
+ output.note
+ }
+ if$
+ ""
+}
+
+FUNCTION { output.issue.doi.coden.isxn.lccn.url.note.check }
+{ % enter with stack empty, return with empty string on stack
+ output.issue.doi.coden.isxn.lccn.url
+ note empty.or.unknown
+ { }
+ {
+ "\newblock" writeln
+ output.note.check
+ }
+ if$
+ ""
+}
+
+FUNCTION { article }
+{
+ output.bibitem
+
+ author empty.or.unknown
+ {
+ editor empty.or.unknown
+ { "neither author and editor supplied for " cite$ * warning$ }
+ { format.editors "editor" output.check }
+ if$
+ }
+ { format.authors "author" output.check }
+ if$
+
+ author format.no.key output % added
+ output.year.check % added
+ new.block
+ format.articletitle "title" output.check
+ new.block
+ howpublished output
+
+ crossref missing$
+ { format.journal.volume.number.day.month.year }
+ {
+ "cross reference in @Article{...} is unusual" warning$
+ format.article.crossref output.nonnull
+ }
+ if$
+ output
+
+ format.pages.check.without.articleno output
+ format.articleno.numpages output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { book }
+{
+ output.bibitem
+ author empty.or.unknown
+ { format.editors "author and editor" output.check }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ output.year.check % added
+ new.block
+ format.btitle "title" output.check
+ crossref missing$
+ { new.sentence % jtb: start a new sentence for series/volume
+ format.bvolume output
+ new.block
+ format.number.series output
+ new.sentence
+ publisher "publisher" output.check
+ address "address" output.check % jtb: require address
+ fin.sentence
+ pages empty.or.unknown
+ { format.bookpages } % use bookpages when pages empty
+ { format.pages.check "pages" tie.or.space.connect }
+ if$
+ output
+ }
+ { new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { booklet }
+{
+ output.bibitem
+ format.authors output
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.title "title" output.check
+ new.block
+ howpublished output
+ address output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { inbook }
+{
+ output.bibitem
+ author empty.or.unknown
+ { format.editors
+ "author and editor" output.check
+ }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ output.year.check % added
+ new.block
+ format.btitle "title" output.check
+ crossref missing$
+ { new.sentence % jtb: start a new sentence for series/volume
+ format.bvolume output
+ new.block
+ format.number.series output
+ new.sentence
+ publisher "publisher" output.check
+ address "address" output.check % jtb: require address
+ format.bookpages output
+ format.chapter.pages
+ "chapter and pages" output.check % jtb: moved from before publisher
+ }
+ {
+ format.bookpages output
+ format.chapter.pages "chapter and pages" output.check
+ new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { incollection }
+{
+ output.bibitem
+ format.authors "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.articletitle "title" output.check
+ new.block
+ crossref missing$
+ { format.in.ed.booktitle "booktitle" output.check
+ new.sentence % jtb: start a new sentence for series/volume
+ format.bvolume output
+ format.number.series output
+ new.sentence
+ publisher "publisher" output.check
+ address "address" output.check % jtb: require address
+ format.bookpages output
+ format.chapter.pages output % gnp - was special.output.nonnull
+ % left out comma before page numbers
+ % jtb: moved from before publisher
+ }
+ {
+ format.incoll.inproc.crossref output.nonnull
+ format.chapter.pages output
+ }
+ if$
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { inproceedings }
+{
+ output.bibitem
+ format.authors "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.articletitle "title" output.check
+ howpublished output.dot.space
+ crossref missing$
+ {
+ journal missing$ % jtb: proceedings appearing in journals
+ { format.in.emphasize.booktitle format.city "booktitle" output.check.dot.space
+ format.series output.removenospace
+ format.editors.fml output % BV 2011/09/27 Moved dot to comma
+ format.bvolume.noseries output
+ new.sentence
+ organization output
+ publisher "publisher" output.check % jtb: require publisher (?)
+ address "address" output.check % jtb: require address
+ format.bookpages output
+ }
+ {
+ format.in.booktitle format.city "booktitle" output.check
+ format.editors.fml output
+ new.sentence
+ format.journal.volume.number.day.month.year output
+ }
+ if$
+ format.articleno output
+ format.pages.check.without.articleno output
+ }
+ {
+ format.incoll.inproc.crossref output.nonnull
+ format.articleno output
+ format.pages.check.without.articleno output
+ }
+ if$
+ format.articleno.numpages output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { conference } { inproceedings }
+
+FUNCTION { manual }
+{
+ output.bibitem
+ author empty.or.unknown
+ { editor empty.or.unknown
+ { organization "organization" output.check
+ organization format.key output } % if all else fails, use key
+ { format.editors "author and editor" output.check }
+ if$
+ }
+ { format.authors output.nonnull }
+ if$
+ output.year.check % added
+ new.block
+ format.btitle "title" output.check
+ organization address new.block.checkb
+ % jtb: back to normal style: organization, address
+ organization "organization" output.check
+ address output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { mastersthesis }
+{
+ output.bibitem
+ format.authors "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.title emphasize "title" output.check % NB: ACM style requires emphasized thesis title
+ new.block
+ "Master's\ thesis" format.thesis.type output new.sentence % Added dot. BV 2011/09/27
+ school "school" output.check
+ address output
+ new.block
+ format.advisor output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { misc }
+{
+ output.bibitem
+ format.authors output
+ author format.key output % added
+ output.year.check % added
+ title howpublished new.block.checkb
+ format.title output
+ new.block
+ howpublished output
+ "" output.nonnull.dot.space
+ output.day.month.year % Gerry - appears odd if (only) the year is 'repeated' but (appears) 'valuable' if the month/day is _also_ included - 2011/09/28
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { phdthesis }
+{
+ output.bibitem
+ format.authors "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.title emphasize "title" output.check % NB: ACM style requires emphasized thesis title
+ new.block
+ "Ph.D. Dissertation" format.thesis.type output new.sentence % Added dot. BV 2011/09/27
+ school "school" output.check
+ address output
+ new.block
+ format.advisor output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION {format.date}
+{ year empty.or.unknown
+ { month empty.or.unknown
+ {
+ "" % output empty date if year/month both empty
+ day empty.or.unknown
+ { }
+ { "there's a day but no month or year in " cite$ * warning$ }
+ if$
+ }
+ { "there's a month but no year in " cite$ * warning$
+ month
+ day empty.or.unknown
+ { }
+ { " " * day * }
+ if$
+ }
+ if$
+ }
+ { month empty.or.unknown
+ {
+ year % output only year if month empty
+ day empty.or.unknown
+ { }
+ { "there's a day and year but no month in " cite$ * warning$ }
+ if$
+ }
+ {
+ month " " *
+ day empty.or.unknown
+ { }
+ { day * ", " * }
+ if$
+ year *
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {new.block.checka}
+{
+ empty.or.unknown
+ 'skip$
+ 'new.block
+ if$
+}
+
+FUNCTION { periodical }
+{
+ output.bibitem
+ editor empty.or.unknown
+ { organization output }
+ { format.editors output.nonnull }
+ if$
+ new.block
+ title emphasize "title" output.check
+ format.date output
+ new.sentence
+ publisher output
+ address output
+ howpublished new.block.checka
+ howpublished output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { proceedings }
+{
+ output.bibitem
+ editor empty.or.unknown
+ { organization output
+ organization format.key output } % gnp - changed from author format.key
+ { format.editors output.nonnull }
+ if$
+ % author format.key output % gnp - removed (should be either
+ % editor or organization
+ output.year.check % added (newapa)
+ new.block
+ format.btitle format.city "title" output.check % jtb: added city
+ new.sentence
+ format.bvolume output
+ format.number.series output
+ new.sentence
+ organization output
+ % jtb: normal order: publisher, address
+ publisher output
+ address output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { techreport }
+{
+ output.bibitem
+ format.authors "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.btitle "title" output.check
+ new.block
+% format.tr.number output % jtb: moved month ...
+ format.tr.number output new.sentence % Gerry - need dot 2011/09/28
+ institution "institution" output.check
+ address output
+ new.sentence
+ format.named.pages output
+ % ACM omits year at end in transactions style
+ % format.day.month.year output.nonnull.dot.space % jtb: ... to here (no parens)
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { unpublished }
+{
+ output.bibitem
+ format.authors
+ "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.title "title" output.check
+ fin.sentence
+ output.day.month.year % UTAH
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note.check
+ fin.entry
+}
+
+FUNCTION { default.type } { misc }
+
+%%% ACM journal-style month definitions: full name if 1--5 letters, else
+%%% abbreviation of 3 or 4 characters and a dot
+
+MACRO {jan} {"Jan."}
+
+MACRO {feb} {"Feb."}
+
+MACRO {mar} {"March"}
+
+MACRO {apr} {"April"}
+
+MACRO {may} {"May"}
+
+MACRO {jun} {"June"}
+
+MACRO {jul} {"July"}
+
+MACRO {aug} {"Aug."}
+
+MACRO {sep} {"Sept."}
+
+MACRO {oct} {"Oct."}
+
+MACRO {nov} {"Nov."}
+
+MACRO {dec} {"Dec."}
+
+
+%%% ====================================================================
+%%% I M P O R T A N T C H A N G E
+%%%
+%%% For the 2009 release of the official acm-*.bst files, there are to
+%%% be NO predefined journal abbreviations in those style files.
+%%%
+%%% ACM may later develop an official list of mappings of full journal
+%%% names of commonly-cited journals to ACM-preferred abbreviations, but
+%%% authors should consider that use of any of these commented-out
+%%% abbreviations is DEPRECATED unless the BibTeX file itself provides
+%%% its own @String{name = "value"} definitions.
+%%%
+%%% Use of journal (and publisher and address) @String{...}
+%%% abbreviations, as opposed to explicit value assignments such as
+%%% journal = "J. ACM" and publisher = "IEEE", is preferred in
+%%% bibliographic databases, because it makes it easier for journal
+%%% production staff to replace those definitions by publisher-preferred
+%%% abbreviations when articles are typeset for publication.
+%%%
+%%% For historical reasons, and because some of these abbreviations are
+%%% used in other (non-ACM) bibliography style files, they are preserved
+%%% here in comments. Future releases of the acm*-.bst files are likely
+%%% to remove them entirely.
+%%% ====================================================================
+%%%
+%%% DEPRECATED: MACRO {acmcs} {"ACM Comput. Surv."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {acmlett} {"ACM Lett. Program. Lang. Syst."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {acta} {"Acta Inf."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ai} {"Artificial Intelligence"}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {al} {"Ada Lett."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {acr} {"Adv. Comput. Res."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {bit} {"Bit"}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {cacm} {"Commun. ACM"} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {cj} {"Comput. J."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {cn} {"Comput. Netw."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {cl} {"Comput. Lang."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ibmjrd} {"IBM J. Res. and Development"} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ibmsj} {"IBM Systems Journal"} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ict} {"Inf. Contr."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieebcs} {"IEE/BCS Softw. Eng. J."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieees} {"IEEE Softw."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieeese} {"IEEE Trans. Softw. Eng."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieeetc} {"IEEE Trans. Comput."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieeetcad} {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieeetpds} {"IEEE Trans. Parall. Distrib. Syst."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieeetit} {"IEEE Trans. Inf. Theory"}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ipl} {"Inf. Process. Lett."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {icp} {"Inf. Comput."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ist} {"Inf. Softw. Tech."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ijsa} {"Int. J. Supercomput. Appl."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ijpp} {"Int. J. Parallel Program."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jacm} {"J. ACM"} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: % MACRO {jcss} {"Journal of Computer and System Sciences"} % original BibTeX
+%%% DEPRECATED: MACRO {jcss} {"J. Comput. Syst. Sci."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jlp} {"J. Logic Program."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jfp} {"J. Funct. Program."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jsmrp} {"J. Softw. Maint. Res. Pract."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jss} {"J. Syst. Softw."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jlc} {"J. Logic and Comput."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jlsc} {"J. Lisp Symb. Comput."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {lpls} {"Lett. Program. Lang. Syst."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {mor} {"Math. Oper. Res."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {mscs} {"Math. Struct. Comput. Sci."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {mst} {"Math. Syst. Theor."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ngc} {"New Gen. Comput."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {scp} {"Sci. Comput. Program."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {sicomp} {"SIAM J. Comput."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {spe} {"Softw. Pract. Exper."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {tocs} {"ACM Trans. Comput. Syst."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {tods} {"ACM Trans. Database Syst."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {tog} {"ACM Trans. Graphics"} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {toms} {"ACM Trans. Math. Softw."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {toois} {"ACM Trans. Office Inf. Syst."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {toplas} {"ACM Trans. Program. Lang. Syst."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {tcs} {"Theor. Comput. Sci."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {tr} {"Tech. Rep."}
+%%% ====================================================================
+
+READ
+
+FUNCTION { sortify }
+{
+ purify$
+ "l" change.case$
+}
+
+FUNCTION { chop.word }
+{
+ 's :=
+ 'len :=
+ s #1 len substring$ =
+ { s len #1 + global.max$ substring$ }
+ 's
+ if$
+}
+
+FUNCTION { sort.format.names }
+{
+ 's :=
+ #1 'nameptr :=
+ ""
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { nameptr #1 >
+ { " " * }
+ 'skip$
+ if$
+ % s nameptr "{ff{ } }{ll{ }}{ vv{ }}{ jj{ }}" format.name$ 't :=
+ s nameptr "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}" format.name$ 't :=
+ nameptr numnames = t "others" = and
+ { " et~al" * }
+ { t sortify * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION { sort.format.title }
+{
+ 't :=
+ "A " #2
+ "An " #3
+ "The " #4 t chop.word
+ chop.word
+ chop.word
+ sortify
+ #1 global.max$ substring$
+}
+
+FUNCTION { author.sort }
+{
+ author empty.or.unknown
+ { key empty.or.unknown
+ { "to sort, need author or key in " cite$ * warning$
+ "" }
+ { key sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION { author.editor.sort }
+{
+ author empty.or.unknown
+ {
+ editor empty.or.unknown
+ {
+ key empty.or.unknown
+ { "to sort, need author, editor, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION { author.organization.sort }
+{
+ % added - GNP. Stack author or organization for sorting (from alpha.bst).
+ % Unlike alpha.bst, we need entire names, not abbreviations
+
+ author empty.or.unknown
+ { organization empty.or.unknown
+ { key empty.or.unknown
+ { "to sort, need author, organization, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { organization sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION { editor.organization.sort }
+{
+ % added - GNP. Stack editor or organization for sorting (from alpha.bst).
+ % Unlike alpha.bst, we need entire names, not abbreviations
+
+ editor empty.or.unknown
+ { organization empty.or.unknown
+ { key empty.or.unknown
+ { "to sort, need editor, organization, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { organization sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+}
+
+FUNCTION { presort }
+{
+ % Presort creates the bibentry's label via a call to calc.label, and then
+ % sorts the entries based on entry type. Chicago.bst adds support for
+ % including organizations as the sort key; the following is stolen from
+ % alpha.bst.
+
+ calc.label sortify % recalculate bibitem label
+ year field.or.null purify$ #-1 #4 substring$ * % add year
+ " "
+ *
+ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.sort
+ { type$ "proceedings" =
+ 'editor.organization.sort
+ { type$ "manual" =
+ 'author.organization.sort
+ 'author.sort
+ if$
+ }
+ if$
+ }
+ if$
+ #1 entry.max$ substring$ % added for newapa
+ 'sort.label := % added for newapa
+ sort.label % added for newapa
+ *
+ " "
+ *
+ title field.or.null
+ sort.format.title
+ *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+ITERATE { presort }
+
+SORT % by label, year, author/editor, title
+
+FUNCTION { initialize.extra.label.stuff }
+{ #0 int.to.chr$ 'last.label :=
+ "" 'next.extra :=
+ #0 'last.extra.num :=
+}
+
+FUNCTION { forward.pass }
+{
+ % Pass through all entries, comparing current entry to last one.
+ % Need to concatenate year to the stack (done by calc.label) to determine
+ % if two entries are the same (see presort)
+
+ last.label
+ % OLD:calc.label year field.or.null purify$ #-1 #4 substring$ * % add year
+ % NEW:
+ author.key.label year field.or.null purify$ #-1 #4 substring$ * % add year
+ #1 entry.max$ substring$ = % are they equal?
+ { last.extra.num #1 + 'last.extra.num :=
+ last.extra.num int.to.chr$ 'extra.label :=
+ }
+ { "a" chr.to.int$ 'last.extra.num :=
+ "" 'extra.label :=
+ % OLD: calc.label year field.or.null purify$ #-1 #4 substring$ * % add year
+ % NEW:
+ author.key.label year field.or.null purify$ #-1 #4 substring$ * % add year
+ #1 entry.max$ substring$ 'last.label := % assign to last.label
+ }
+ if$
+}
+
+FUNCTION { reverse.pass }
+{
+ next.extra "b" =
+ { "a" 'extra.label := }
+ 'skip$
+ if$
+ label.year extra.label * 'sort.year :=
+ extra.label 'next.extra :=
+}
+
+EXECUTE {initialize.extra.label.stuff}
+
+ITERATE {forward.pass}
+
+REVERSE {reverse.pass}
+
+FUNCTION { bib.sort.order }
+{
+ sort.label
+ " "
+ *
+ year field.or.null sortify
+ *
+ " "
+ *
+ title field.or.null
+ sort.format.title
+ *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+ITERATE { bib.sort.order }
+
+SORT % by sort.label, year, title --- giving final bib. order.
+
+FUNCTION { begin.bib }
+{
+ %% Set to #0 show 13-digit ISBN in preference to 10-digit ISBN.
+ %% Set to #1 to show both 10-digit and 13-digit ISBNs.
+ #1 'show-isbn-10-and-13 :=
+
+ "%%% -*-BibTeX-*-" writeln
+ "%%% Do NOT edit. File created by BibTeX with style" writeln
+ "%%% ACM-Reference-Format-Journals [18-Jan-2012]." writeln
+ "" writeln
+
+ preamble$ empty.or.unknown
+ 'skip$
+ { preamble$ writeln }
+ if$
+ "\begin{thebibliography}{00}" writeln
+ "" writeln
+ "%%% ====================================================================" writeln
+ "%%% NOTE TO THE USER: you can override these defaults by providing" writeln
+ "%%% customized versions of any of these macros before the \bibliography" writeln
+ "%%% command. Each of them MUST provide its own final punctuation," writeln
+ "%%% except for \shownote{}, \showDOI{}, and \showURL{}. The latter two" writeln
+ "%%% do not use final punctuation, in order to avoid confusing it with" writeln
+ "%%% the Web address." writeln
+ "%%%" writeln
+ "%%% To suppress output of a particular field, define its macro to expand" writeln
+ "%%% to an empty string, or better, \unskip, like this:" writeln
+ "%%%" writeln
+ "%%% \newcommand{\showDOI}[1]{\unskip} % LaTeX syntax" writeln
+ "%%%" writeln
+ "%%% \def \showDOI #1{\unskip} % plain TeX syntax" writeln
+ "%%%" writeln
+ "%%% ====================================================================" writeln
+ "" writeln
+
+ %% ACM publications do not use CODEN, ISSN, and LCCN data, so their default
+ %% macro wrappers expand to \unskip, discarding their values and unwanted
+ %% space.
+ %%
+ %% For other publications, prior definitions like these may be useful:
+ %%
+ %% Plain TeX:
+ %% \def \showCODEN #1{CODEN #1.}
+ %% \def \showISSN #1{ISSN #1.}
+ %% \def \showLCCN #1{LCCN #1.}
+ %%
+ %% LaTeX:
+ %% \newcommand{\showCODEN}[1]{CODEN #1.}
+ %% \newcommand{\showISSN}[1]#1{ISSN #1.}
+ %% \newcommand{\showLCCN}[1]{LCCN #1.}
+
+ "\ifx \showCODEN \undefined \def \showCODEN #1{\unskip} \fi" writeln
+ "\ifx \showDOI \undefined \def \showDOI #1{{\tt DOI:}\penalty0{#1}\ } \fi" writeln
+ % ACM styles omit ISBNs, but they can be included by suitable definitions of
+ % \showISBNx and \showISBNxiii before the .bbl file is read
+ "\ifx \showISBNx \undefined \def \showISBNx #1{\unskip} \fi" writeln
+ "\ifx \showISBNxiii \undefined \def \showISBNxiii #1{\unskip} \fi" writeln
+ "\ifx \showISSN \undefined \def \showISSN #1{\unskip} \fi" writeln
+ "\ifx \showLCCN \undefined \def \showLCCN #1{\unskip} \fi" writeln
+ "\ifx \shownote \undefined \def \shownote #1{#1} \fi" writeln % NB: final period supplied by add.period$ above
+ "\ifx \showarticletitle \undefined \def \showarticletitle #1{#1} \fi" writeln
+ "\ifx \showURL \undefined \def \showURL #1{#1} \fi" writeln
+}
+
+EXECUTE {begin.bib}
+
+EXECUTE {init.state.consts}
+
+ITERATE {call.type$}
+
+FUNCTION { end.bib }
+{
+ newline$
+ "\end{thebibliography}"
+ writeln
+}
+
+EXECUTE {end.bib}
+
+%%% End of ACM-Reference-Format-Journals.bst V1.00 - 18 January 2012
+
diff --git a/Master/texmf-dist/bibtex/bst/acmart/SIGCHI-Reference-Format.bst b/Master/texmf-dist/bibtex/bst/acmart/SIGCHI-Reference-Format.bst
new file mode 100644
index 00000000000..6fc5574d2cd
--- /dev/null
+++ b/Master/texmf-dist/bibtex/bst/acmart/SIGCHI-Reference-Format.bst
@@ -0,0 +1,3352 @@
+%%% -*-BibTeX-*-
+%%% ====================================================================
+%%% @BibTeX-style-file{
+%%% author = "Nelson H. F. Beebe, Boris Veytsman and Gerald Murray",
+%%% version = "1.00",
+%%% date = "18 January 2012",
+%%% time = "11:48 EST",
+%%% filename = "ACM-Reference-Format-Journals.bst",
+%%% address = "University of Utah
+%%% Department of Mathematics, 110 LCB
+%%% 155 S 1400 E RM 233
+%%% Salt Lake City, UT 84112-0090
+%%% USA",
+%%% telephone = "+1 801 581 5254",
+%%% FAX = "+1 801 581 4148",
+%%% URL = "http://www.math.utah.edu/~beebe",
+%%% checksum = "available here: http://www.acm.org/publications/latex_style/CRC-journals.txt"
+%%% email = "beebe@math.utah.edu, beebe@acm.org,
+%%% beebe@computer.org, borisv@lk.net, murray@hq.acm.org",
+%%% codetable = "ISO/ASCII",
+%%% keywords = "ACM Transactions bibliography style; BibTeX",
+%%% license = "public domain",
+%%% supported = "yes",
+%%% abstract = "",
+%%% docstring = "The checksum field, above, is produced by WinMD5Free (v1.20)
+%%% available from http://www.winmd5.com/?rid=winmd5,"
+%%% }
+%%% ====================================================================
+
+% "SIGCHI Format" BibTeX style, Forked from ACM-Reference-Format-Journals.bst
+% Modifications 13-FEBURARY-2015 (David Ayman Shamma)
+
+% "ACM Transactions" BibTeX style, ACM-Reference-Format-Journals.bst
+% for BibTeX version 0.99c, LaTeX version 3.141
+% ACM extensions with code cleaned up, extended, and debugged 10--15-Nov-2008
+% Revised 17-APRIL-2008 (Nelson)
+% Revised 13-MARCH-2011 (Boris/Gerry)
+% Revised 23-MARCH-2011 (Boris/Gerry)
+% Revised 27-MARCH-2011 (Boris/Gerry)
+% Revised 15-APRIL-2011 (Boris/Gerry)
+% Revised 27-SEPTEMBER-2011 (Boris)
+%
+%
+% History (by Nelson)
+%
+% Based on 'acmtrans' (for ACM Journals)
+% Date: 28th April 2008
+%
+% 1. Avoid 'repeating' the 'month' values.
+% 2. Avoid incorrectly italicizing the volume number.
+% 3. Avoid non italicizing certain titles (book, inproceedings etc).
+% 4. NO series if there is NO volume.
+% 5. Sorting of reference with first surname.
+% 6. Article no added for Inproceedings.
+%
+% Date: 07th May 2008
+%
+% 1. Abbreviation list added
+%
+% Citation format: [author-last-name year]
+% [author-last-name and author-last-name year]
+% [author-last-name, author-last-name, and author-last-name year]
+% [author-last-name et al. year]
+% [author-last-name]
+% author-last-name [year]
+% [author-last-name and author-last-name]
+% [author-last-name et al.]
+% [year] or [year,year]
+% year or year,year
+%
+% Reference list ordering: alphabetical by author or whatever passes
+% for author in the absence of one.
+%
+% Features of the old acmtrans.bst:
+% =================================
+%
+% - all authors appear last name first.
+% - all pages are listed xx-xx, (no pp.) and are at the end of the reference
+% - publishers are identified as publisher, address
+% - conferences papers (inproceedings) may give city of conference,
+% date of conference, and journal that the proceedings appear in.
+% - months abbreviated to max four letters (eg. Mar.)
+% - volume of a series indicated after the title of the series
+% - editors appear after edited title and are identified by a trailing "Eds."
+% not in parentheses. Editor names are not given in small caps.
+% (unless there is no author line)
+% - names terminated with a period even if there is no first name.
+% - editions are indicated trailing after the work, not in parentheses.
+% - "et al." citations have a protected period to avoid bad spacing (jrh)
+% - "address" required when publisher given
+% - series (roman) and volume are in a sentence separate from (book-)title
+%
+%
+% Features of chicago.bst:
+% =======================
+%
+% - full names used in citations, but abbreviated citations are available
+% (see above)
+% - if an entry has a "month", then the month and year are also printed
+% as part of that bibitem.
+% - all conjunctions use "and" instead of "\&"
+% - major modification from Chicago Manual of Style (13th ed.) is that
+% only the first author in a reference appears last name first-
+% additional authors appear as J. Q. Public.
+% - pages are listed as "pp. xx-xx" in all entry types except
+% article entries.
+% - book, inbook, and manual use "location: publisher" (or organization)
+% for address and publisher. All other types list publishers separately.
+% - "pp." are used to identify page numbers for all entry types except
+% articles.
+% - organization is used as a citation label if neither author nor editor
+% is present (for manuals).
+% - "et al." is used for long author and editor lists, or when "others"
+% is used.
+%
+% Modifications and bug fixes from newapa.bst:
+% ===========================================
+%
+% - added month, year to bib entries if month is present
+% - fixed bug with In proceedings, added necessary comma after title
+% - all conjunctions changed to "and" from "\&"
+% - fixed bug with author labels in my.full.label: "et al." now is
+% generated when "others" is an author name
+% - major modification from Chicago Manual of Style (13th ed.) is that
+% only the first author in a reference appears last name first-
+% additional authors appear as J. Q. Public.
+% - pages are listed as "pp. xx-xx" in all entry types except
+% article entries. Unnecessary (IMHO) "()" around page numbers
+% were removed, and page numbers now don't end with a period.
+% - created chicago.sty for use with this bibstyle (required).
+% - fixed bugs in FUNCTION {format.vol.num.pages} for missing volume,
+% number, and /or pages. Renamed to format.journal.volume.number.
+% - fixed bug in formatting booktitles: additional period an error if
+% book has a volume.
+% - fixed bug: editors usually given redundant period before next clause
+% (format.editors.dot) removed.
+% - added label support for organizations, if both author and editor
+% are missing (from alpha.bst). If organization is too long, then
+% the key field is used for abbreviated citations.
+% - In proceedings or books of several volumes, no comma was written
+% between the "Volume x" and the page numbers (this was intentional
+% in newapa.bst). Fixed.
+% - Some journals may not have volumes/numbers, only month/year (eg.
+% IEEE Computer). Fixed bug in article style that assumed volume/number
+% was always present.
+%
+% Original documentation for newapa.sty:
+% =====================================
+%
+% This version was made by modifying the master file made by
+% Oren Patashnik (PATASHNIK@SCORE.STANFORD.EDU), and the 'named' BibTeX
+% style of Peter F. Patel-Schneider.
+%
+% Copyright (C) 1985, all rights reserved.
+% Copying of this file is authorized only if either
+% (1) you make absolutely no changes to your copy, including name, or
+% (2) if you do make changes, you name it something other than 'newapa.bst'.
+% There are undoubtably bugs in this style. If you make bug fixes,
+% improvements, etc. please let me know. My e-mail address is:
+% spencer@cgrg.ohio.state.edu or 71160.3141@compuserve.com
+%
+% This style was made from 'plain.bst', 'named.bst', and 'apalike.bst',
+% with lots of tweaking to make it look like APA style, along with tips
+% from Young Ryu and Brian Reiser's modifications of 'apalike.bst'.
+%
+%
+% Start of ACM-Reference-Format-Journals.bst
+%
+% Note: Many of the new bibentry 'fields' will only work with the
+% 'ACM-Reference-Format-Journals.bst' file. Legacy .bib files (which will, in all probability,
+% NOT contain these new fields) will _still_ work with the ACM-Reference-Format-Journals.bst.
+%
+%
+ENTRY
+ { address
+ advisor
+ author
+ booktitle
+ chapter
+ city % jtb: added
+ date % jtb: added
+ edition
+ editor
+ howpublished
+ institution
+ journal
+ key
+ month
+ note
+ number
+ organization
+ pages
+ publisher
+ school
+ series
+ title
+ type
+ volume
+ year
+ % New keys recognized
+ issue % UTAH: used in, e.g., ACM SIGSAM Bulletin and ACM Communications in Computer Algebra
+ articleno
+ day % UTAH: needed for newspapers, weeklies, bi-weeklies
+ doi % UTAH
+ url % UTAH
+ bookpages % UTAH
+ numpages
+ lastaccessed % UTAH: used only for @Misc{...}
+ coden % UTAH
+ isbn % UTAH
+ isbn-13 % UTAH
+ issn % UTAH
+ lccn % UTAH
+ }
+ {}
+ { label.year extra.label sort.year sort.label }
+
+INTEGERS { output.state before.all mid.sentence after.sentence after.block }
+
+INTEGERS { show-isbn-10-and-13 } % initialized below in begin.bib
+
+INTEGERS { nameptr namesleft numnames }
+
+INTEGERS { multiresult }
+
+INTEGERS { len }
+
+INTEGERS { last.extra.num }
+
+STRINGS { s t t.org u }
+
+STRINGS { last.label next.extra }
+
+STRINGS { p1 p2 p3 page.count }
+
+FUNCTION { dump.stack.1 }
+{
+ duplicate$ "STACK[top] = [" swap$ * "]" * warning$
+}
+
+FUNCTION { dump.stack.2 }
+{
+ duplicate$ "STACK[top ] = [" swap$ * "]" * warning$
+ swap$
+ duplicate$ "STACK[top-1] = [" swap$ * "]" * warning$
+ swap$
+}
+
+FUNCTION { empty.or.unknown }
+{
+ %% Examine the top stack entry, and push 1 if it is empty, or
+ %% consists only of whitespace, or is a string beginning with two
+ %% queries (??), and otherwise, push 0.
+ %%
+ %% This function provides a replacement for empty$, with the
+ %% convenient feature that unknown values marked by two leading
+ %% queries are treated the same as missing values, and thus, do not
+ %% appear in the output .bbl file, and yet, their presence in .bib
+ %% file(s) serves to mark values which are temporarily missing, but
+ %% are expected to be filled in eventually once more data is
+ %% obtained. The TeX User Group and BibNet bibliography archives
+ %% make extensive use of this practice.
+ %%
+ %% An empty string cannot serve the same purpose, because just as in
+ %% statistics data processing, an unknown value is not the same as an
+ %% empty value.
+ %%
+ %% At entry: stack = ... top:[string]
+ %% At exit: stack = ... top:[0 or 1]
+
+ duplicate$ empty$
+ { pop$ #1 }
+ { #1 #2 substring$ "??" = }
+ if$
+}
+
+FUNCTION { writeln }
+{
+ %% In BibTeX style files, the sequences
+ %%
+ %% ... "one" "two" output
+ %% ... "one" "two" output.xxx
+ %%
+ %% ship "one" to the output file, possibly following by punctuation,
+ %% leaving the stack with
+ %%
+ %% ... "two"
+ %%
+ %% There is thus a one-string lag in output processing that must be
+ %% carefully handled to avoid duplicating a string in the output
+ %% file. Unless otherwise noted, all output.xxx functions leave
+ %% just one new string on the stack, and that model should be born
+ %% in mind when reading or writing function code.
+ %%
+ %% BibTeX's asynchronous buffering of output from strings from the
+ %% stack is confusing because newline$ bypasses the buffer. It
+ %% would have been so much easier for newline to be a character
+ %% rather than a state of the output-in-progress.
+ %%
+ %% The documentation in btxhak.dvi is WRONG: it says
+ %%
+ %% newline$ Writes onto the bbl file what's accumulated in the
+ %% output buffer. It writes a blank line if and only
+ %% if the output buffer is empty. Since write$ does
+ %% reasonable line breaking, you should use this
+ %% function only when you want a blank line or an
+ %% explicit line break.
+ %%
+ %% write$ Pops the top (string) literal and writes it on the
+ %% output buffer (which will result in stuff being
+ %% written onto the bbl file when the buffer fills
+ %% up).
+ %%
+ %% Examination of the BibTeX source code shows that write$ does
+ %% indeed behave as claimed, but newline$ sends a newline character
+ %% directly to the output file, leaving the stack unchanged. The
+ %% first line "Writes onto ... buffer." is therefore wrong.
+ %%
+ %% The original BibTeX style files almost always use "write$ newline$"
+ %% in that order, so it makes sense to hide that pair in a private
+ %% function like this one, named after a statement in Pascal,
+ %% the programming language embedded in the BibTeX Web program.
+
+ write$ % output top-of-stack string
+ newline$ % immediate write of newline (not via stack)
+}
+
+FUNCTION { init.state.consts }
+{
+ #0 'before.all :=
+ #1 'mid.sentence :=
+ #2 'after.sentence :=
+ #3 'after.block :=
+}
+
+FUNCTION { output.nonnull }
+{ % Stack in: ... R S T Stack out: ... R T File out: S<comma><space>
+ 's :=
+ output.state mid.sentence =
+ {
+ ", " * write$
+ }
+ {
+ output.state after.block =
+ {
+ add.period$ writeln
+ "\newblock " write$
+ }
+ {
+ output.state before.all =
+ {
+ write$
+ }
+ {
+ add.period$ " " * write$
+ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+FUNCTION { output.nonnull.dot.space }
+{ % Stack in: ... R S T Stack out: ... R T File out: S<dot><space>
+ 's :=
+ output.state mid.sentence = % { "<DEBUG output.nonnull.dot.space>. " * write$ }
+ {
+ ". " * write$
+ }
+ {
+ output.state after.block =
+ {
+ add.period$ writeln "\newblock " write$
+ }
+ {
+ output.state before.all =
+ {
+ write$
+ }
+ {
+ add.period$ " " * write$
+ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+FUNCTION { output.nonnull.remove }
+{ % Stack in: ... R S T Stack out: ... R T File out: S<space>
+ 's :=
+ output.state mid.sentence =
+ {
+ " " * write$
+ }
+ {
+ output.state after.block =
+ {
+ add.period$ writeln "\newblock " write$
+ }
+ {
+ output.state before.all =
+ {
+ write$
+ }
+ {
+ add.period$ " " * write$
+ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+FUNCTION { output.nonnull.removenospace }
+{ % Stack in: ... R S T Stack out: ... R T File out: S
+ 's :=
+ output.state mid.sentence =
+ {
+ "" * write$
+ }
+ {
+ output.state after.block =
+ {
+ add.period$ writeln "\newblock " write$
+ }
+ {
+ output.state before.all =
+ {
+ write$
+ }
+ {
+ add.period$ " " * write$
+ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+FUNCTION { output }
+{ % discard top token if empty, else like output.nonnull
+ duplicate$ empty.or.unknown
+ 'pop$
+ 'output.nonnull
+ if$
+}
+
+FUNCTION { output.dot.space }
+{ % discard top token if empty, else like output.nonnull.dot.space
+ duplicate$ empty.or.unknown
+ 'pop$
+ 'output.nonnull.dot.space
+ if$
+}
+
+FUNCTION { output.removenospace }
+{ % discard top token if empty, else like output.nonnull.removenospace
+ duplicate$ empty.or.unknown
+ 'pop$
+ 'output.nonnull.removenospace
+ if$
+}
+
+FUNCTION { output.check }
+{ % like output, but warn if key name on top-of-stack is not set
+ 't :=
+ duplicate$ empty.or.unknown
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull
+ if$
+}
+
+FUNCTION { output.check.dot.space }
+{ % like output.dot.space, but warn if key name on top-of-stack is not set
+ 't :=
+ duplicate$ empty.or.unknown
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull.dot.space
+ if$
+}
+
+FUNCTION { fin.block }
+{ % functionally, but not logically, identical to fin.entry
+ add.period$
+ writeln
+}
+
+FUNCTION { fin.entry }
+{
+ add.period$
+ writeln
+}
+
+FUNCTION { new.sentence }
+{ % update sentence state, with neither output nor stack change
+ output.state after.block =
+ 'skip$
+ {
+ output.state before.all =
+ 'skip$
+ { after.sentence 'output.state := }
+ if$
+ }
+ if$
+}
+
+FUNCTION { fin.sentence }
+{
+ add.period$
+ write$
+ new.sentence
+ ""
+}
+
+FUNCTION { new.block }
+{
+ output.state before.all =
+ 'skip$
+ { after.block 'output.state := }
+ if$
+}
+
+FUNCTION { output.coden } % UTAH
+{ % output non-empty CODEN as one-line sentence (stack untouched)
+ coden empty.or.unknown
+ { }
+ { "\showCODEN{" coden * "}" * writeln }
+ if$
+}
+
+FUNCTION { format.articleno }
+{
+ articleno empty.or.unknown
+ { "" }
+ {
+ numpages empty.or.unknown
+ { "articleno field, but no numpages field, in " cite$ * warning$ }
+ { }
+ if$
+ "Article " articleno *
+ }
+ if$
+}
+
+FUNCTION { format.year }
+{ % push year string or "????" onto output stack
+ %% Because year is a mandatory field, we always force SOMETHING
+ %% to be output
+ year empty.or.unknown
+ { "????" }
+ { year }
+ if$
+}
+
+FUNCTION { format.day.month }
+{ % push "day month " or "month " or "" onto output stack
+ day empty.or.unknown
+ {
+ month empty.or.unknown
+ { "" }
+ { month " " *}
+ if$
+ }
+ {
+ month empty.or.unknown
+ { "" }
+ { day " " * month * " " *}
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.day.month.year } % UTAH
+{ % if month is empty, push "" else push "(MON.)" or "(DD MON.)"
+ % Needed for frequent periodicals: 2008. ... New York Times C-1, C-2, C-17 (23 Oct.)
+ % acm-*.bst addition: prefix parenthesized date string with
+ % ", Article nnn "
+ articleno empty.or.unknown
+ { "" }
+ { ", " format.articleno * }
+ if$
+ " (" * format.day.month * format.year * ")" *
+}
+
+FUNCTION { output.day.month.year } % UTAH
+{ % if month is empty value, do nothing; else output stack top and
+ % leave with new top string "(MON.)" or "(DD MON.)"
+ % Needed for frequent periodicals: 2008. ... New York Times C-1, C-2, C-17 (23 Oct.)
+ format.day.month.year
+ output.nonnull.remove
+}
+
+FUNCTION { strip.doi } % UTAH
+{ % Strip any Web address prefix to recover the bare DOI, leaving the
+ % result on the output stack, as recommended by CrossRef DOI
+ % documentation.
+ % For example, reduce "http://doi.acm.org/10.1145/1534530.1534545" to
+ % "10.1145/1534530.1534545". That is later typeset and displayed as
+ % doi:10.1145/1534530.1534545 as the LAST item in the reference list
+ % entry. Publisher Web sites wrap this with a suitable link to a real
+ % URL to resolve the DOI, and the master http://dx.doi.org/ address is
+ % preferred, since publisher-specific URLs can disappear in response
+ % to economic events. All journals are encouraged by the DOI
+ % authorities to use that typeset format and link procedures for
+ % uniformity across all publications that include DOIs in reference
+ % lists.
+ % The numeric prefix is guaranteed to start with "10.", so we use
+ % that as a test.
+ doi #1 #3 substring$ "10." =
+ { doi }
+ {
+ doi #1 #7 substring$ "http://" =
+ {
+ doi #8 doi text.length$ #7 - substring$ 't := % get modifiable copy of rest of DOI
+
+ "INTERNAL STYLE-FILE ERROR" 's :=
+
+ % search for next "/" and assign its suffix to s
+
+ { t text.length$ }
+ {
+ t #1 #1 substring$ "/" =
+ {
+ % save rest of string as true DOI (should be 10.xxxx/yyyy)
+ t #2 t text.length$ #1 - substring$ 's :=
+ "" 't := % empty string t terminates the loop
+ }
+ {
+ % discard first character and continue loop: t <= substring(t,2,last)
+ t #2 t text.length$ #1 - substring$ 't :=
+ }
+ if$
+ }
+ while$
+
+ % check for valid DOI (should be 10.xxxx/yyyy)
+ s #1 #3 substring$ "10." =
+ { }
+ { "unrecognized DOI substring " s * " in DOI value [" * doi * "]" * warning$ }
+ if$
+
+ s % push the stripped DOI on the output stack
+
+ }
+ {
+ "unrecognized DOI value [" doi * "]" * warning$
+ doi % push the unrecognized original DOI on the output stack
+ }
+ if$
+ }
+ if$
+}
+
+%
+% Change by BV: added standard prefix to URL
+%
+FUNCTION { output.doi } % UTAH
+{ % output non-empty DOI as one-line sentence (stack untouched)
+ doi empty.or.unknown
+ { }
+ {
+ %% NB: We want URLs at beginning of line to reduce likelihood of
+ %% BibTeX's nasty line wrapping after column 79, which then requires
+ %% manual (or automated) editing of the .bbl file to repair.
+ %% The \url{} macro strips percent-newlines, and is thus safe in
+ %% the presence of the line wrapping, but \path|...| and
+ %% \verb|...| do not.
+ "\showDOI{%" writeln
+ "\url{http://dx.doi.org/" strip.doi * "}}" * writeln
+ }
+ if$
+}
+
+FUNCTION { output.isbn } % UTAH
+{ % output non-empty ISBN-10 and/or ISBN-13 as one-line sentences (stack untouched)
+ show-isbn-10-and-13
+ {
+ %% show both 10- and 13-digit ISBNs
+ isbn empty.or.unknown
+ { }
+ {
+ "\showISBNx{" isbn * "}" * writeln
+ }
+ if$
+ isbn-13 empty.or.unknown
+ { }
+ {
+ "\showISBNxiii{" isbn-13 * "}" * writeln
+ }
+ if$
+ }
+ {
+ %% show 10-digit ISBNs only if 13-digit ISBNs not available
+ isbn-13 empty.or.unknown
+ {
+ isbn empty.or.unknown
+ { }
+ {
+ "\showISBNx{" isbn * "}" * writeln
+ }
+ if$
+ }
+ {
+ "\showISBNxiii{" isbn-13 * "}" * writeln
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION { output.issn } % UTAH
+{ % output non-empty ISSN as one-line sentence (stack untouched)
+ issn empty.or.unknown
+ { }
+ { "\showISSN{" issn * "}" * writeln }
+ if$
+}
+
+FUNCTION { output.issue }
+{ % output non-empty issue number as a one-line sentence (stack untouched)
+ issue empty.or.unknown
+ { }
+ { "Issue " issue * "." * writeln }
+ if$
+}
+
+FUNCTION { output.lccn } % UTAH
+{ % return with stack untouched
+ lccn empty.or.unknown
+ { }
+ { "\showLCCN{" lccn * "}" * writeln }
+ if$
+}
+
+FUNCTION { output.note } % UTAH
+{ % return with stack empty
+ note empty.or.unknown
+ { }
+ { "\shownote{" note add.period$ * "}" * writeln }
+ if$
+}
+
+FUNCTION { output.note.check } % UTAH
+{ % return with stack empty
+ note empty.or.unknown
+ { "empty note in " cite$ * warning$ }
+ { "\shownote{" note add.period$ * "}" * writeln }
+ if$
+}
+
+%
+% Changes by BV 2011/04/15. Do not output
+% url if doi is defined
+%
+FUNCTION { output.url } % UTAH
+{ % return with stack untouched
+ % output URL and associated lastaccessed fields
+ doi empty.or.unknown
+ {
+ url empty.or.unknown
+ { }
+ {
+ %% NB: We want URLs at beginning of line to reduce likelihood of
+ %% BibTeX's nasty line wrapping after column 79, which would require
+ %% manual (or automated) editing of the .bbl file to repair. However,
+ %% the \url{} macro handles the unwrapping job automatically.
+ "\showURL{%" writeln
+ lastaccessed empty.or.unknown
+ { "" }
+ { "Retrieved " lastaccessed * " from " * }
+ if$
+
+ %% The URL field may contain a semicolon-separated list of Web
+ %% addresses, and we locate and wrap each of them in \url{...}.
+ %% The simplistic approach of putting the entire list into the
+ %% macro argument is that the semicolons are typeset in a
+ %% typewriter font, and no space follows them.
+ %%
+ %% We therefore replace the original code
+ %% "\url{" * url * "}}" * writeln
+ %% with this character-at-a-time loop:
+
+ "\url{" *
+
+ url 't := % get modifiable copy of URL list
+
+ { t text.length$ }
+ {
+ t #1 #1 substring$ ";" =
+ { % then split argument at separator
+ "};" * writeln
+ "\url{"
+ }
+ { % else concatenate nonblank character to argument
+ t #1 #1 substring$ " " =
+ { }
+ { t #1 #1 substring$ * }
+ if$
+ }
+ if$
+
+ t #2 t text.length$ #1 - substring$ 't :=
+ }
+ while$
+
+ "}}" * writeln
+ }
+ if$
+ }
+ { }
+ if$
+}
+
+FUNCTION { output.year.check }
+{ % warn if year empty, else output top string and leave " YEAR<label>" on stack in mid-sentence
+ year empty.or.unknown
+ { "empty year in " cite$ * warning$ }
+ { write$
+ " " year * extra.label *
+ mid.sentence 'output.state :=
+ }
+ if$
+}
+
+FUNCTION { not }
+{
+ { #0 }
+ { #1 }
+ if$
+}
+
+FUNCTION { and }
+{
+ 'skip$
+ { pop$ #0 }
+ if$
+}
+
+FUNCTION { or }
+{
+ { pop$ #1 }
+ 'skip$
+ if$
+}
+
+FUNCTION { le }
+{
+ %% test whether first number is less than or equal to second number
+ %% stack in: n1 n2
+ %% stack out: if n1 <= n2 then 1 else 0
+
+ %% "DEBUG: le " cite$ * warning$
+ > { #0 } { #1 } if$
+}
+
+FUNCTION { ge }
+{
+ %% test whether first number is greater than or equal to second number
+ %% stack in: n1 n2
+ %% stack out: if n1 >= n2 then 1 else 0
+
+ %% "DEBUG: ge " cite$ * warning$
+ < { #0 } { #1 } if$
+}
+
+FUNCTION { is.leading.digit }
+{
+ %% test whether first character of string is a digit
+ %% stack in: string
+ %% stack out: if first-char-is-digit then 1 else 0
+
+ #1 #1 substring$ % replace string by string[1:1]
+ duplicate$ % string[1:1] string[1:1]
+ chr.to.int$
+ "0" chr.to.int$ swap$ le % "0" <= string[1:1] --> 0-or-1
+ swap$ % 0-or-1 string[1:1]
+ chr.to.int$
+ "9" chr.to.int$ le % string[1:1} <= "9" --> 0-or-1
+ and
+}
+
+FUNCTION { skip.digits }
+{
+ %% skip over leading digits in string
+ %% stack in: string
+ %% stack out: rest-of-string leading-digits
+
+ %% "DEBUG: enter skip.digits " cite$ * warning$
+
+ %% dump.stack.1
+
+ duplicate$
+ 't :=
+ 't.org :=
+ "" 'u :=
+
+ { t text.length$ }
+ {
+ %% "=================DEBUG: skip.digits t = [" t * "]" * warning$
+ t is.leading.digit
+ { t #2 t text.length$ #1 - substring$ }
+ {
+ t 'u :=
+ ""
+ }
+ if$
+ 't :=
+ }
+ while$
+
+ u % rest of string
+ t.org #1 t.org text.length$ u text.length$ - substring$ % leading digits
+
+ %% "DEBUG: t.org = [" t.org * "]" * warning$
+ %% "DEBUG: u = [" u * "]" * warning$
+
+ %% dump.stack.2
+
+ %% "DEBUG: leave skip.digits " cite$ * warning$
+}
+
+FUNCTION { skip.nondigits }
+{
+ %% skip over leading nondigits in string
+ %% stack in: string
+ %% stack out: rest-of-string
+
+ %% "DEBUG: enter skip.nondigits " cite$ * warning$
+
+ 't :=
+ "" 'u :=
+
+ { t text.length$ }
+ {
+ %% "=================DEBUG: skip.nondigits t = [" t * "]" * warning$
+ t is.leading.digit
+ {
+ t 'u :=
+ ""
+ }
+ { t #2 t text.length$ #1 - substring$ }
+ if$
+ 't :=
+ }
+ while$
+
+ u % rest of string
+
+ %% dump.stack.1
+ %% "DEBUG: leave skip.nondigits " cite$ * warning$
+}
+
+FUNCTION { parse.next.number }
+{
+ %% stack in: string
+ %% stack out: rest-of-string next-numeric-part-of-string
+ %% Example:
+ %% stack in: "123:1--123:59"
+ %% stack out: ":1--123:59" "123"
+
+ 's :=
+ s skip.nondigits 's :=
+ s skip.digits
+}
+
+FUNCTION { reduce.pages.to.page.count }
+{
+ %% Stack in: arbitrary-and-unused
+ %% Stack out: unchanged
+ %%
+ %% For the new-style pagination with article number and numpages or
+ %% pages, we expect to have BibTeX entries containing something like
+ %% articleno = "17",
+ %% pages = "1--23",
+ %% with output "Article 17, 23 pages",
+ %% or
+ %% articleno = "17",
+ %% numpages = "23",
+ %% with output "Article 17, 23 pages",
+ %% or
+ %% articleno = "17",
+ %% pages = "17:1--17:23",
+ %% with output "Article 17, 23 pages",
+ %%
+ %% If articleno is missing or empty, then we should output "1--23",
+ %% "23" (with a warning of a missing articleno), or "17:1--17:23",
+ %% respectively.
+
+ %% "DEBUG: enter reduce.pages.to.page.count " cite$ * warning$
+
+ %% "DEBUG: pages = [" pages * "]" * warning$
+
+ pages
+ parse.next.number 'p1 :=
+ parse.next.number 'p2 :=
+ parse.next.number 'p3 :=
+ parse.next.number 'page.count :=
+
+ duplicate$
+ empty.or.unknown
+ { }
+ {
+ duplicate$ "unexpected trailing garbage [" swap$ *
+ "] after n:p1--n:p2 in pages = [" *
+ pages *
+ "] in " *
+ cite$ *
+ warning$
+ }
+ if$
+
+ pop$
+
+ %% "DEBUG: reduce.pages.to.page.count: "
+ %% " p1 = " p1 * *
+ %% " p2 = " p2 * *
+ %% " p3 = " p3 * *
+ %% " p4 = " page.count * *
+ %% " in " cite$ * * warning$
+
+ p1 p3 = p2 "1" = and numpages empty.or.unknown and
+ { "INFO: reduced pages = [" pages * "] to numpages = [" * page.count * "]" * warning$ }
+ {
+ numpages empty.or.unknown
+ { pages }
+ { numpages }
+ if$
+ 'page.count :=
+ }
+ if$
+
+ p1 "1" = p3 empty.or.unknown and numpages empty.or.unknown and
+ {
+ p2 'page.count :=
+ "INFO: reduced pages = [" pages * "] to numpages = [" * page.count * "]" * warning$
+ }
+ {
+ numpages empty.or.unknown
+ { pages }
+ { numpages }
+ if$
+ 'page.count :=
+ }
+ if$
+
+ %% "DEBUG: leave reduce.pages.to.page.count " cite$ * warning$
+}
+
+FUNCTION { new.block.checkb }
+{ % issue a new.block only if at least one of top two stack strings is not empty
+ empty.or.unknown
+ swap$ empty.or.unknown
+ and
+ 'skip$
+ 'new.block
+ if$
+}
+
+FUNCTION { field.or.null }
+{ % convert empty value to null string, else return value
+ duplicate$ empty.or.unknown
+ { pop$ "" }
+ 'skip$
+ if$
+}
+
+FUNCTION { emphasize }
+{ % emphasize a non-empty top string on the stack (WITHOUT italic correction)
+ duplicate$ empty.or.unknown
+ { pop$ "" }
+ { "{\em " swap$ * "}" * }
+ if$
+}
+
+FUNCTION { emphasize.with.italic.correction }
+{ % convert empty string to null string, or emphasize with a trailing italic correction
+ duplicate$ empty.or.unknown
+ { pop$ "" }
+ { "{\em " swap$ * "\/}" * }
+ if$
+}
+
+FUNCTION { comma }
+{ % convert empty string to null string, or brace string and add trailing comma
+ duplicate$ empty.or.unknown
+ { pop$ "" }
+ { "{" swap$ * "}," * }
+ if$
+}
+
+FUNCTION { format.names }
+{
+ % Format bibliographical entries with the first author last name first,
+ % and subsequent authors with initials followed by last name.
+ % All names are formatted in this routine.
+
+ 's :=
+ #1 'nameptr := % nameptr = 1;
+ s num.names$ 'numnames := % numnames = num.name$(s);
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { nameptr #1 =
+ %NO: BAD ORDER: {"{" s nameptr "{ff~}{ll}{, jj}{, vv}" format.name$ * "}" * 't := }
+ %NO: BAD ORDER: {"{" s nameptr "{ff~}{ll}{, jj}{, vv}" format.name$ * "}" * 't := }
+ {"{" s nameptr "{ff }{vv }{ll}{, jj}" format.name$ * "}" * 't := }
+ {"{" s nameptr "{ff }{vv }{ll}{, jj}" format.name$ * "}" * 't := }
+ if$
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "{\sc others}" =
+ { " {et~al\mbox{.}}" * } % jrh: avoid spacing problems
+ { " {and} " * t * } % from Chicago Manual of Style
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr := % nameptr += 1;
+ namesleft #1 - 'namesleft := % namesleft =- 1;
+ }
+ while$
+}
+
+FUNCTION { my.full.label }
+{
+ 's :=
+ #1 'nameptr := % nameptr = 1;
+ s num.names$ 'numnames := % numnames = num.name$(s);
+ numnames 'namesleft :=
+ { namesleft #0 > }
+
+ { s nameptr "{vv~}{ll}" format.name$ 't := % get the next name
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "others" =
+ { " et~al\mbox{.}" * } % jrh: avoid spacing problems
+ { " and " * t * } % from Chicago Manual of Style
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr := % nameptr += 1;
+ namesleft #1 - 'namesleft := % namesleft =- 1;
+ }
+ while$
+
+}
+
+FUNCTION { format.names.fml }
+{
+ % Format names in "familiar" format, with first initial followed by
+ % last name. Like format.names, ALL names are formatted.
+ % jtb: The names are NOT put in small caps
+
+ 's :=
+ #1 'nameptr := % nameptr = 1;
+ s num.names$ 'numnames := % numnames = num.name$(s);
+ numnames 'namesleft :=
+ { namesleft #0 > }
+
+ {
+ "{" s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ * "}" * 't :=
+
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "{others}" =
+ { " {et~al\mbox{.}}" * }
+ { " {and} " * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr := % nameptr += 1;
+ namesleft #1 - 'namesleft := % namesleft =- 1;
+ }
+ while$
+}
+
+FUNCTION { format.authors }
+{
+ author empty.or.unknown
+ { "" }
+ { author format.names add.period$} % jtb: add period if none before
+ if$
+}
+
+FUNCTION { format.key }
+{
+ empty.or.unknown
+ { key field.or.null }
+ { "" }
+ if$
+}
+
+FUNCTION { format.no.key }
+{
+ empty.or.unknown
+ { "" }
+ { "" }
+ if$
+}
+
+FUNCTION { format.editors.fml }
+{
+ % Format editor names for use in the "in" types: inbook, incollection,
+ % inproceedings: first initial, then last names. When editors are the
+ % LABEL for an entry, then format.editor is used which lists editors
+ % by last name first.
+
+ editor empty.or.unknown
+ { "" }
+ {
+ editor format.names.fml editor num.names$ #1 >
+ { " (Eds.)" * }
+ { " (Ed.)" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.editors }
+{ % format editor names for use in labels, last names first.
+ editor empty.or.unknown
+ { "" }
+ {
+ editor format.names
+ editor num.names$ #1 >
+ { " (Eds.)." * }
+ { " (Ed.)." * }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.articletitle }
+{
+ title empty.or.unknown
+ { "" }
+ % Use this to preserve lettercase in titles:
+ { "\showarticletitle{" title * "}" * }
+ % Use this for downcase title style:
+ % { \showarticletitle{" title "t" change.case$ * "}" * }
+ if$
+}
+
+FUNCTION { format.title }
+{
+ title empty.or.unknown
+ { "" }
+ % Use this to preserve lettercase in titles:
+ { title }
+ % Use this for downcase title style:
+ % { title "t" change.case$ }
+ if$
+}
+
+FUNCTION { n.dashify }
+{
+ 't :=
+ ""
+ { t empty.or.unknown not }
+ {
+ t #1 #1 substring$ "-" =
+ {
+ t #1 #2 substring$ "--" = not
+ { "--" *
+ t #2 global.max$ substring$ 't :=
+ }
+ {
+ { t #1 #1 substring$ "-" = }
+ {
+ "-" *
+ t #2 global.max$ substring$ 't :=
+ }
+ while$
+ }
+ if$
+ }
+ {
+ t #1 #1 substring$ *
+ t #2 global.max$ substring$ 't :=
+ }
+ if$
+ }
+ while$
+}
+
+FUNCTION { format.btitle }
+{
+ edition empty.or.unknown
+ { title emphasize }
+ { title empty.or.unknown
+ { title emphasize } % jtb: what is this supposed to do ?!?
+ { "{\em " title * "\/} (" * edition "l" change.case$ * " ed.)" * } % jtb: no parens for ed.
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.emphasize.booktitle }
+{ % push "" or "{\em booktitle}" or "{\em booktitle}, (second ed.)" on stack
+ edition empty.or.unknown
+ { booktitle emphasize }
+ { booktitle empty.or.unknown
+ { "" }
+ { "{\em " booktitle * "} (" * edition "l" change.case$ * " ed.)" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.city }
+{
+ % jtb: if the preceding string (the title of the conference) is non-empty,
+ % jtb: append the location, otherwise leave empty (so as to trigger the
+ % jtb: error message in output.check
+
+ duplicate$ empty.or.unknown
+ { }
+ {
+ city empty.or.unknown
+ {
+ date empty.or.unknown
+ { }
+ { " (" * date * ")" * }
+ if$
+ }
+ {
+ date empty.or.unknown
+ { " (" * city * ")" * }
+ { " (" * city * ", " * date * ")" * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION { tie.or.space.connect }
+{
+ duplicate$ text.length$ #3 <
+ { "~" }
+ { " " }
+ if$
+ swap$ * *
+}
+
+FUNCTION { either.or.check }
+{
+ empty.or.unknown
+ 'pop$
+ { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+ if$
+}
+
+FUNCTION { format.bvolume }
+{
+ % jtb: If there is a series, this is added and the volume trails after it.
+ % jtb: Otherwise, "Vol" is Capitalized.
+
+ volume empty.or.unknown
+ { "" }
+ {
+ series empty.or.unknown
+ { "Vol." volume tie.or.space.connect}
+ { series ", " * "Vol." volume tie.or.space.connect *}
+ if$
+ "volume and number" number either.or.check
+ }
+ if$
+}
+
+FUNCTION { format.bvolume.noseries }
+{
+ volume empty.or.unknown
+ { "" }
+ {
+ series empty.or.unknown
+ { "Vol." volume tie.or.space.connect}
+ { "Vol." volume tie.or.space.connect}
+% { series ", " * "Vol." volume tie.or.space.connect *}
+ if$
+ "volume and number" number either.or.check
+ }
+ if$
+}
+
+FUNCTION { format.series }
+{
+ series empty.or.unknown
+ {""}
+ {" {\em (" * series ")}" *}
+ if$
+}
+
+FUNCTION { format.number.series }
+{
+ volume empty.or.unknown
+ {
+ number empty.or.unknown
+ {
+ volume empty.or.unknown
+ { "" }
+ {
+ series empty.or.unknown
+ { "" }
+ { " (" series * ")" * }
+ if$
+ }
+ if$
+ } % { series field.or.null }
+ {
+ output.state mid.sentence =
+ { "Number" } % gnp - changed to mixed case always
+ { "Number" }
+ if$
+ number tie.or.space.connect series empty.or.unknown
+ { "there's a number but no series in " cite$ * warning$ }
+ { " in " * series * }
+ if$
+ }
+ if$
+ }
+ {
+ ""
+ }
+ if$
+}
+
+FUNCTION { multi.page.check }
+{
+ 't :=
+ #0 'multiresult :=
+ { multiresult not
+ t empty.or.unknown not
+ and
+ }
+ { t #1 #1 substring$
+ duplicate$ "-" =
+ swap$ duplicate$ "," =
+ swap$ "+" =
+ or or
+ { #1 'multiresult := }
+ { t #2 global.max$ substring$ 't := }
+ if$
+ }
+ while$
+ multiresult
+}
+
+FUNCTION { format.pages }
+{
+ pages empty.or.unknown
+ { "" }
+ {
+ pages multi.page.check
+ { pages n.dashify } % gnp - removed () % jtb: removed pp.
+ { pages }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.pages.check.without.articleno }
+{ %% format pages field only if articleno is absent
+ %% Stack out: pages-specification
+ numpages missing$ pages missing$ and
+ { "page numbers missing in both pages and numpages fields in " cite$ * warning$ }
+ { }
+ if$
+
+ articleno empty.or.unknown
+ {
+ pages missing$
+ { numpages }
+ { format.pages }
+ if$
+ }
+ { "" }
+ if$
+}
+
+FUNCTION { format.pages.check }
+{
+ pages empty.or.unknown
+ { "page numbers missing in " cite$ * warning$ "" }
+ { pages n.dashify }
+ if$
+}
+
+FUNCTION { format.bookpages }
+{
+ bookpages empty.or.unknown
+ { "" }
+ { bookpages "book pages" tie.or.space.connect }
+ if$
+}
+
+FUNCTION { format.named.pages }
+{
+ pages empty.or.unknown
+ { "" }
+ { format.pages "pages" tie.or.space.connect }
+ if$
+}
+
+%
+% Changed by Boris Veytsman, 2011-03-13
+% Now the word "pages" is printed even if
+% there field pages is not empty.
+%
+
+FUNCTION { format.page.count }
+{
+ page.count empty.or.unknown
+ { "" }
+ {
+ articleno empty.or.unknown
+ { "numpages field, but no articleno field, in " cite$ * warning$ }
+ { }
+ if$
+ page.count "pages" tie.or.space.connect
+ }
+ if$
+}
+
+FUNCTION { format.articleno.numpages }
+{
+ %% There are seven possible outputs, depending on which fields are set.
+ %%
+ %% These four are handled here:
+ %%
+ %% articleno, numpages, pages -> "Article articleno-value, numpages-value pages"
+ %% articleno, numpages -> "Article articleno-value, numpages-value pages"
+ %% articleno, pages -> "Article articleno-value, reduced-pages-value pages"
+ %% articleno -> "Article articleno-value" and warn about missing numpages
+ %%
+ %% The remaining three have already been handled by
+ %% format.pages.check.without.articleno:
+ %%
+ %% numpages, pages -> "pages-value"
+ %% numpages -> "numpages-value"
+ %% pages -> "pages-value"
+
+ articleno empty.or.unknown
+ {
+ numpages empty.or.unknown
+ { }
+ { "require articleno with numpages field in " cite$ * warning$ }
+ if$
+ ""
+ }
+ {
+ numpages empty.or.unknown
+ {
+ pages empty.or.unknown
+ {
+ "require pages or numpages fields with articleno field in " cite$ * warning$
+ "" 'page.count :=
+ }
+ { reduce.pages.to.page.count }
+ if$
+ }
+ { numpages 'page.count := }
+ if$
+
+ %% The Article number is now handled in format.day.month.year because
+ %% ACM prefers the style "Digital Libraries 12, 3, Article 5 (July 2008)"
+ %% over "Digital Libraries 12, 3 (July 2008), Article 5"
+ %% format.articleno output
+ format.page.count
+ }
+ if$
+}
+
+FUNCTION { format.journal.volume.number.day.month.year }
+{
+ % By Young (and Spencer)
+ % GNP - fixed bugs with missing volume, number, and/or pages
+ %
+ % Format journal, volume, number, pages for article types.
+ %
+ journal empty.or.unknown
+ { "no journal in " cite$ * warning$
+ "" }
+% { journal emphasize.with.italic.correction }
+ {
+ journal "Journal of the ACM" =
+ { "{\it J. ACM}" }
+ {
+ journal "American Mathematical Society Translations" =
+ { "{\it Amer. Math. Soc. Transl.}" }
+ {
+ journal "Bulletin of the American Mathematical Society" =
+ { "{\it Bull. Amer. Math. Soc.}" }
+ {
+ journal "Proceedings of the American Mathematical Society" =
+ { "{\it Proc. Amer. Math. Soc.}" }
+ {
+ journal "Transactions of the American Mathematical Society" =
+ { "{\it Trans. Amer. Math. Soc.}" }
+ {
+ journal "Communications of the {ACM}" =
+ { "{\it Commun. {ACM}}" }
+ {
+ journal "{ACM} Computing Surveys" =
+ { "{\it Comput. Surveys}" }
+ {
+ journal "{ACM} Transactions on Mathematical Software" =
+ { "{\it {ACM} Trans. Math. Software}" }
+ {
+ journal "{ACM} {SIGNUM} Newsletter" =
+ { "{\it {ACM} {SIGNUM} Newslett.}" }
+ {
+ journal "American Journal of Sociology" =
+ { "{\it Amer. J. Sociology}" }
+ {
+ journal "Journal of the American Statistical Association" =
+ { "{\it J. Amer. Statist. Assoc.}" }
+ {
+ journal "Applied Mathematics and Computation" =
+ { "{\it Appl. Math. Comput.}" }
+ {
+ journal "American Mathematical Monthly" =
+ { "{\it Amer. Math. Monthly}" }
+ {
+ journal "British Journal of Mathematical and Statistical Psychology" =
+ { "{\it Brit. J. Math. Statist. Psych.}" }
+ {
+ journal "Canadian Mathematical Bulletin" =
+ { "{\it Canad. Math. Bull.}" }
+ {
+ journal "Journal of Computational and Applied Mathematics" =
+ { "{\it J. Comput. Appl. Math.}" }
+ {
+ journal "Journal of Computational Physics" =
+ { "{\it J. Comput. Phys.}" }
+ {
+ journal "Computers and Structures" =
+ { "{\it Comput. \& Structures}" }
+ {
+ journal "The Computer Journal" =
+ { "{\it Comput. J.}" }
+ {
+ journal "Journal of Computer and System Sciences" =
+ { "{\it J. Comput. System Sci.}" }
+ {
+ journal "Contemporary Mathematics" =
+ { "{\it Contemp. Math.}" }
+ {
+ journal "Crelle's Journal" =
+ { "{\it Crelle's J.}" }
+ {
+ journal "Giornale di Mathematiche" =
+ { "{\it Giorn. Mat.}" }
+ {
+ journal "{IEEE} Transactions on Computers" =
+ { "{\it {IEEE} Trans. Comput.}" }
+ {
+ journal "{IEEE} Transactions on Automatic Control" =
+ { "{\it {IEEE} Trans. Automat. Control}" }
+ {
+ journal "Proceedings of the {IEEE}" =
+ { "{\it Proc. {IEEE}}" }
+ {
+ journal "{IEEE} Transactions on Aerospace and Electronic Systems" =
+ { "{\it {IEEE} Trans. Aerospace Electron. Systems}" }
+ {
+ journal "{IMA} Journal of Numerical Analysis" =
+ { "{\it {IMA} J. Numer. Anal.}" }
+ {
+ journal "Information Processing Letters" =
+ { "{\it Inform. Process. Lett.}" }
+ {
+ journal "Journal of the Institute of Mathematics and its Applications" =
+ { "{\it J. Inst. Math. Appl.}" }
+ {
+ journal "International Journal of Control" =
+ { "{\it Internat. J. Control}" }
+ {
+ journal "International Journal for Numerical Methods in Engineering" =
+ { "{\it Internat. J. Numer. Methods Engrg.}" }
+ {
+ journal "International Journal of Supercomputing Applications" =
+ { "{\it Internat. J. Supercomputing Applic.}" }
+ {
+ journal "Journal of Research of the National Bureau of Standards" =
+ { "{\it J. Res. Nat. Bur. Standards}" }
+ {
+ journal "Linear Algebra and its Applications" =
+ { "{\it Linear Algebra Appl.}" }
+ {
+ journal "Journal of Mathematical Analysis and Applications" =
+ { "{\it J. Math. Anal. Appl.}" }
+ {
+ journal "Mathematische Annalen" =
+ { "{\it Math. Ann.}" }
+ {
+ journal "Journal of Mathematical Physics" =
+ { "{\it J. Math. Phys.}" }
+ {
+ journal "Mathematics of Computation" =
+ { "{\it Math. Comp.}" }
+ {
+ journal "Mathematica Scandinavica" =
+ { "{\it Math. Scand.}" }
+ {
+ journal "Mathematical Tables and Other Aids to Computation" =
+ { "{\it Math. Tables Aids Comput.}" }
+ {
+ journal "Numerische Mathematik" =
+ { "{\it Numer. Math.}" }
+ {
+ journal "Pacific Journal of Mathematics" =
+ { "{\it Pacific J. Math.}" }
+ {
+ journal "Journal of Parallel and Distributed Computing" =
+ { "{\it J. Parallel and Distrib. Comput.}" }
+ {
+ journal "Parallel Computing" =
+ { "{\it Parallel Comput.}" }
+ {
+ journal "Philosophical Magazine" =
+ { "{\it Philos. Mag.}" }
+ {
+ journal "Proceedings of the National Academy of Sciences of the USA" =
+ { "{\it Proc. Nat. Acad. Sci. U. S. A.}" }
+ {
+ journal "Quarterly Journal of Mathematics, Oxford, Series (2)" =
+ { "{\it Quart. J. Math. Oxford Ser. (2)}" }
+ {
+ journal "Quarterly of Applied Mathematics" =
+ { "{\it Quart. Appl. Math.}" }
+ {
+ journal "Review of the International Statisical Institute" =
+ { "{\it Rev. Inst. Internat. Statist.}" }
+ {
+ journal "Journal of the Society for Industrial and Applied Mathematics" =
+ { "{\it J. Soc. Indust. Appl. Math.}" }
+ {
+ journal "Journal of the Society for Industrial and Applied Mathematics, Series B, Numerical Analysis" =
+ { "{\it J. Soc. Indust. Appl. Math. Ser. B Numer. Anal.}" }
+ {
+ journal "{SIAM} Journal on Algebraic and Discrete Methods" =
+ { "{\it {SIAM} J. Algebraic Discrete Methods}" }
+ {
+ journal "{SIAM} Journal on Applied Mathematics" =
+ { "{\it {SIAM} J. Appl. Math.}" }
+ {
+ journal "{SIAM} Journal on Computing" =
+ { "{\it {SIAM} J. Comput.}" }
+ {
+ journal "{SIAM} Journal on Matrix Analysis and Applications" =
+ { "{\it {SIAM} J. Matrix Anal. Appl.}" }
+ {
+ journal "{SIAM} Journal on Numerical Analysis" =
+ { "{\it {SIAM} J. Numer. Anal.}" }
+ {
+ journal "{SIAM} Review" =
+ { "{\it {SIAM} Rev.}" }
+ {
+ journal "{SIAM} Journal on Scientific and Statistical Computing" =
+ { "{\it {SIAM} J. Sci. Statist. Comput.}" }
+ {
+ journal "Software Practice and Experience" =
+ { "{\it Software Prac. Experience}" }
+ {
+ journal "Statistical Science" =
+ { "{\it Statist. Sci.}" }
+ {
+ journal "{USSR} Computational Mathematics and Mathematical Physics" =
+ { "{\it {U. S. S. R.} Comput. Math. and Math. Phys.}" }
+ {
+ journal "Journal of {VLSI} and Computer Systems" =
+ { "{\it J. {VLSI} Comput. Syst.}" }
+ {
+ journal "Zeitschrift fur Angewandte Mathematik und Mechanik" =
+ { "{\it Z. Angew. Math. Mech.}" }
+ {
+ journal "Zeitschrift fur Angewandte Mathematik und Physik" =
+ { "{\it Z. Angew. Math. Phys.}" }
+ {
+ journal "ACM Computing Surveys" =
+ { "{\it Comput. Surveys}" }
+ {
+ journal "ACM Transactions on Mathematical Software" =
+ { "{\it ACM Trans. Math. Software}" }
+ {
+ journal "ACM {SIGNUM} Newsletter" =
+ { "{\it ACM {SIGNUM} Newslett.}" }
+ {
+ journal "IEEE Transactions on Computers" =
+ { "{\it IEEE Trans. Comput.}" }
+ {
+ journal "IEEE Transactions on Automatic Control" =
+ { "{\it IEEE Trans. Automat. Control}" }
+ {
+ journal "Proceedings of the IEEE" =
+ { "{\it Proc. IEEE}" }
+ {
+ journal "IEEE Transactions on Aerospace and Electronic Systems" =
+ { "{\it IEEE Trans. Aerospace Electron. Systems}" }
+ {
+ journal "IMA Journal of Numerical Analysis" =
+ { "{\it IMA J. Numer. Anal.}" }
+ {
+ journal "SIAM Journal on Algebraic and Discrete Methods" =
+ { "{\it SIAM J. Algebraic Discrete Methods}" }
+ {
+ journal "SIAM Journal on Applied Mathematics" =
+ { "{\it SIAM J. Appl. Math.}" }
+ {
+ journal "SIAM Journal on Computing" =
+ { "{\it SIAM J. Comput.}" }
+ {
+ journal "SIAM Journal on Matrix Analysis and Applications" =
+ { "{\it SIAM J. Matrix Anal. Appl.}" }
+ {
+ journal "SIAM Journal on Numerical Analysis" =
+ { "{\it SIAM J. Numer. Anal.}" }
+ {
+ journal "SIAM Review" =
+ { "{\it SIAM Rev.}" }
+ {
+ journal "SIAM Journal on Scientific and Statistical Computing" =
+ { "{\it SIAM J. Sci. Statist. Comput.}" }
+ {
+ journal "USSR Computational Mathematics and Mathematical Physics" =
+ { "{\it U. S. S. R. Comput. Math. and Math. Phys.}" }
+ {
+ journal "Journal of VLSI and Computer Systems" =
+ { "{\it J. VLSI Comput. Syst.}" }
+ {
+ journal "Communications of the ACM" =
+ { "{\it Commun. ACM}" }
+ %% If no match with cases needing special handling, just output journal name
+ { journal emphasize.with.italic.correction }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+
+ number empty.or.unknown
+ {
+ volume empty.or.unknown
+ { "no number and no volume in " cite$ * warning$ "" * }
+ { " " * " {" * volume * "}" * }
+ if$
+ }
+ {
+ volume empty.or.unknown
+ {
+ "unusual to have number, but no volume, for " cite$ * warning$
+ " " * number *
+ }
+ { " " * volume comma " " * number * * }
+ if$
+ }
+ if$
+
+ format.day.month.year *
+}
+
+FUNCTION { format.chapter.pages }
+{
+ chapter empty.or.unknown
+ 'format.pages
+ { type empty.or.unknown
+ { "Chapter" } % gnp - changed to mixed case
+ { type "t" change.case$ }
+ if$
+ chapter tie.or.space.connect
+ pages empty.or.unknown
+ {"page numbers missing in " cite$ * warning$} % gnp - added check
+ { ", " * format.pages * }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.in.emphasize.booktitle }
+{ % jtb: format for collections or proceedings not appearing in a journal
+ booktitle empty.or.unknown
+ { "" }
+ { "In " format.emphasize.booktitle * }
+ if$
+}
+
+FUNCTION { format.in.booktitle }
+{ % jtb: format for proceedings appearing in a journal
+ booktitle empty.or.unknown
+ { "" }
+ { "In " booktitle * }
+ if$
+}
+
+FUNCTION { format.in.ed.booktitle }
+{
+ booktitle empty.or.unknown
+ { "" }
+ { editor empty.or.unknown
+ { "In " format.emphasize.booktitle * }
+ % jtb: swapped editor location
+ { "In " format.emphasize.booktitle * ", " * format.editors.fml * }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.thesis.type }
+{ % call with default type on stack top
+ type empty.or.unknown
+ 'skip$ % use default type
+ {
+ pop$ % discard default type
+ % NO: it is silly to have to brace protect every degree type!: type "t" change.case$
+ type
+ }
+ if$
+}
+
+FUNCTION { format.tr.number }
+{
+ type empty.or.unknown
+% { "Tech. Rep." }
+ { "{T}echnical {R}eport" } % ACM wants it explicit (Gerry 9/28)
+ 'type
+ if$
+ number empty.or.unknown
+ { "t" change.case$ }
+ %% LOOKS BAD: { "." * number tie.or.space.connect }
+ %% Prefer "Research report RJ687." to "Research report. RJ687."
+ { number tie.or.space.connect }
+ if$
+}
+
+FUNCTION { format.advisor }
+{
+ advisor empty.or.unknown
+ { "" }
+ { "Advisor(s) " advisor * }
+ if$
+}
+
+FUNCTION { format.article.crossref }
+{ "See"
+ "\citeN{" * crossref * "}" *
+}
+
+FUNCTION { format.crossref.editor }
+{
+ editor #1 "{vv~}{ll}" format.name$
+ editor num.names$ duplicate$
+ #2 >
+ { pop$ " et~al\mbox{.}" * } % jrh: avoid spacing problems
+ { #2 <
+ 'skip$
+ { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { " et~al\mbox{.}" * } % jrh: avoid spacing problems
+ { " and " * editor #2 "{vv~}{ll}" format.name$ * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.book.crossref }
+{
+ volume empty.or.unknown
+ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+ "In "
+ }
+ { "Volume" volume tie.or.space.connect % gnp - changed to mixed case
+ " of " *
+ }
+ if$
+ editor empty.or.unknown
+ editor field.or.null author field.or.null =
+ or
+ { key empty.or.unknown
+ { series empty.or.unknown
+ { "need editor, key, or series for " cite$ * " to crossref " *
+ crossref * warning$
+ "" *
+ }
+ { "{\em " * series * "\/}" * }
+ if$
+ }
+ { key * }
+ if$
+ }
+ { format.crossref.editor * }
+ if$
+ " \citeN{" * crossref * "}" *
+}
+
+FUNCTION { format.incoll.inproc.crossref }
+{ "See"
+ " \citeN{" * crossref * "}" *
+}
+
+FUNCTION { format.lab.names }
+{
+ % format.lab.names:
+ %
+ % determines "short" names for the abbreviated author information.
+ % "Long" labels are created in calc.label, using the routine my.full.label
+ % to format author and editor fields.
+ %
+ % There are 4 cases for labels. (n=3 in the example)
+ % a) one author Foo
+ % b) one to n Foo, Bar and Baz
+ % c) use of "and others" Foo, Bar et al.
+ % d) more than n Foo et al.
+
+ 's :=
+ s num.names$ 'numnames :=
+ numnames #2 > % change number to number of others allowed before
+ % forcing "et al".
+ { s #1 "{vv~}{ll}" format.name$ " et~al\mbox{.}" * } % jrh: \mbox{} added
+ {
+ numnames #1 - 'namesleft :=
+ #2 'nameptr :=
+ s #1 "{vv~}{ll}" format.name$
+ { namesleft #0 > }
+ { nameptr numnames =
+ { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { " et~al\mbox{.}" * } % jrh: avoid spacing problems
+ { " and " * s nameptr "{vv~}{ll}" format.name$ * }
+ if$
+ }
+ { ", " * s nameptr "{vv~}{ll}" format.name$ * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+ }
+ if$
+}
+
+FUNCTION { author.key.label }
+{
+ author empty.or.unknown
+ { key empty.or.unknown
+ { "no key, author in " cite$ * warning$
+ cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION { author.key.organization.label }
+{ % added - gnp. Provide label formatting by organization if author is null.
+ author empty.or.unknown
+ { organization empty.or.unknown
+ { key empty.or.unknown
+ { "no key, author or organization in " cite$ * warning$
+ cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { organization }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION { editor.key.organization.label }
+{ % added - gnp. Provide label formatting by organization if editor is null.
+ editor empty.or.unknown
+ { organization empty.or.unknown
+ { key empty.or.unknown
+ { "no key, editor or organization in " cite$ * warning$
+ cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { organization }
+ if$
+ }
+ { editor format.lab.names }
+ if$
+}
+
+FUNCTION { author.editor.key.label }
+{
+ author empty.or.unknown
+ { editor empty.or.unknown
+ { key empty.or.unknown
+ { "no key, author, or editor in " cite$ * warning$
+ cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.lab.names }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION { calc.label }
+{
+ % Changed - GNP. See also author.organization.sort, editor.organization.sort
+ % Form label for BibTeX entry. The classification of which fields are used
+ % for which type of entry (book, inbook, etc.) are taken from alpha.bst.
+ % The change here from newapa is to also include organization as a
+ % citation label if author or editor is missing.
+
+ type$ "book" =
+ type$ "inbook" =
+ or
+ type$ "periodical" =
+ or
+ 'author.editor.key.label
+ { type$ "proceedings" =
+ 'editor.key.organization.label
+ { type$ "manual" =
+ 'author.key.organization.label
+ 'author.key.label
+ if$
+ }
+ if$
+ }
+ if$
+
+ author empty.or.unknown % generate the full label citation information.
+ {
+ editor empty.or.unknown
+ {
+ organization empty.or.unknown
+ {
+ key empty.or.unknown
+ {
+ "no author, editor, organization, or key in " cite$ * warning$
+ "??"
+ }
+ { key }
+ if$
+ }
+ { organization }
+ if$
+ }
+ { editor my.full.label }
+ if$
+ }
+ { author my.full.label }
+ if$
+
+ % leave label on the stack, to be popped when required.
+
+ "}{" * swap$ * "}{" *
+ % year field.or.null purify$ #-1 #4 substring$ *
+ %
+ % save the year for sort processing afterwards (adding a, b, c, etc.)
+ %
+ year field.or.null purify$ #-1 #4 substring$
+ 'label.year :=
+}
+
+%
+% Change by Gerry: use number-like citations for transactions
+% 2011/03/23
+% Reverting: Ayman
+FUNCTION {output.bibitem}
+{ newline$
+ "\bibitem{" write$
+ cite$ write$
+ "}" write$
+ newline$
+ ""
+ before.all 'output.state :=
+}
+
+% FUNCTION { output.bibitem }
+% {
+% newline$
+% "\bibitem[\protect\citeauthoryear{" write$
+% calc.label write$
+% sort.year write$
+% "}]%" writeln
+% " {" write$
+% cite$ write$
+% "}" writeln
+% ""
+% before.all 'output.state :=
+% }
+
+
+FUNCTION { output.issue.doi.coden.isxn.lccn.url }
+{ % enter and return with stack empty
+ %% We switch now from buffered output to output of complete lines, so
+ %% that the Issue .. URL data have their own lines, and are less likely
+ %% to be line-wrapped by BibTeX's short-sighted algorithm, which wraps
+ %% lines longer than 79 characters, backtracking to what it thinks is
+ %% a break point in the string. Any such wrapping MUST be undone to
+ %% prevent percent-newline from appearing in DOIs and URLs. The
+ %% output data are intentionally wrapped in \showxxx{} macros at
+ %% beginning of line, and that supply their own punctuation (if they
+ %% are not defined to suppress output entirely), to make it easier for
+ %% other software to recover them from .bbl files.
+ %%
+ %% It also makes it possible to later change the macro definitions
+ %% to suppress particular output values, or alter their appearance.
+ %%
+ %% Note that it is possible for theses, technical reports, and
+ %% manuals to have ISBNs, and anything that has an ISBN may also
+ %% have an ISSN. When there are no values for these keys, there
+ %% is no output generated for them here.
+
+ "\newblock" writeln
+ after.block 'output.state :=
+
+ output.issue
+ output.isbn
+ output.coden % CODEN is functionally like ISSN, so output them sequentially
+ output.issn
+ output.lccn
+ output.doi % DOI is ALWAYS last according to CrossRef DOI documentation
+ output.url % but ACM wants URL last
+}
+
+FUNCTION { output.issue.doi.coden.isxn.lccn.url.note }
+{ % enter with stack empty, return with empty string on stack
+ output.issue.doi.coden.isxn.lccn.url
+ note empty.or.unknown
+ { }
+ {
+ "\newblock" writeln
+ output.note
+ }
+ if$
+ ""
+}
+
+FUNCTION { output.issue.doi.coden.isxn.lccn.url.note.check }
+{ % enter with stack empty, return with empty string on stack
+ output.issue.doi.coden.isxn.lccn.url
+ note empty.or.unknown
+ { }
+ {
+ "\newblock" writeln
+ output.note.check
+ }
+ if$
+ ""
+}
+
+FUNCTION { article }
+{
+ output.bibitem
+
+ author empty.or.unknown
+ {
+ editor empty.or.unknown
+ { "neither author and editor supplied for " cite$ * warning$ }
+ { format.editors "editor" output.check }
+ if$
+ }
+ { format.authors "author" output.check }
+ if$
+
+ author format.no.key output % added
+ output.year.check % added
+ new.block
+ format.articletitle "title" output.check
+ new.block
+ howpublished output
+
+ crossref missing$
+ { format.journal.volume.number.day.month.year }
+ {
+ "cross reference in @Article{...} is unusual" warning$
+ format.article.crossref output.nonnull
+ }
+ if$
+ output
+
+ format.pages.check.without.articleno output
+ format.articleno.numpages output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { book }
+{
+ output.bibitem
+ author empty.or.unknown
+ { format.editors "author and editor" output.check }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ output.year.check % added
+ new.block
+ format.btitle "title" output.check
+ crossref missing$
+ { new.sentence % jtb: start a new sentence for series/volume
+ format.bvolume output
+ new.block
+ format.number.series output
+ new.sentence
+ publisher "publisher" output.check
+ address "address" output.check % jtb: require address
+ fin.sentence
+ pages empty.or.unknown
+ { format.bookpages } % use bookpages when pages empty
+ { format.pages.check "pages" tie.or.space.connect }
+ if$
+ output
+ }
+ { new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { booklet }
+{
+ output.bibitem
+ format.authors output
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.title "title" output.check
+ new.block
+ howpublished output
+ address output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { inbook }
+{
+ output.bibitem
+ author empty.or.unknown
+ { format.editors
+ "author and editor" output.check
+ }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ output.year.check % added
+ new.block
+ format.btitle "title" output.check
+ crossref missing$
+ { new.sentence % jtb: start a new sentence for series/volume
+ format.bvolume output
+ new.block
+ format.number.series output
+ new.sentence
+ publisher "publisher" output.check
+ address "address" output.check % jtb: require address
+ format.bookpages output
+ format.chapter.pages
+ "chapter and pages" output.check % jtb: moved from before publisher
+ }
+ {
+ format.bookpages output
+ format.chapter.pages "chapter and pages" output.check
+ new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { incollection }
+{
+ output.bibitem
+ format.authors "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.articletitle "title" output.check
+ new.block
+ crossref missing$
+ { format.in.ed.booktitle "booktitle" output.check
+ new.sentence % jtb: start a new sentence for series/volume
+ format.bvolume output
+ format.number.series output
+ new.sentence
+ publisher "publisher" output.check
+ address "address" output.check % jtb: require address
+ format.bookpages output
+ format.chapter.pages output % gnp - was special.output.nonnull
+ % left out comma before page numbers
+ % jtb: moved from before publisher
+ }
+ {
+ format.incoll.inproc.crossref output.nonnull
+ format.chapter.pages output
+ }
+ if$
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { inproceedings }
+{
+ output.bibitem
+ format.authors "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.articletitle "title" output.check
+ howpublished output.dot.space
+ crossref missing$
+ {
+ journal missing$ % jtb: proceedings appearing in journals
+ { format.in.emphasize.booktitle format.city "booktitle" output.check.dot.space
+ format.series output.removenospace
+ format.editors.fml output % BV 2011/09/27 Moved dot to comma
+ format.bvolume.noseries output
+ new.sentence
+ organization output
+ publisher "publisher" output.check % jtb: require publisher (?)
+ address "address" output.check % jtb: require address
+ format.bookpages output
+ }
+ {
+ format.in.booktitle format.city "booktitle" output.check
+ format.editors.fml output
+ new.sentence
+ format.journal.volume.number.day.month.year output
+ }
+ if$
+ format.articleno output
+ format.pages.check.without.articleno output
+ }
+ {
+ format.incoll.inproc.crossref output.nonnull
+ format.articleno output
+ format.pages.check.without.articleno output
+ }
+ if$
+ format.articleno.numpages output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { conference } { inproceedings }
+
+FUNCTION { manual }
+{
+ output.bibitem
+ author empty.or.unknown
+ { editor empty.or.unknown
+ { organization "organization" output.check
+ organization format.key output } % if all else fails, use key
+ { format.editors "author and editor" output.check }
+ if$
+ }
+ { format.authors output.nonnull }
+ if$
+ output.year.check % added
+ new.block
+ format.btitle "title" output.check
+ organization address new.block.checkb
+ % jtb: back to normal style: organization, address
+ organization "organization" output.check
+ address output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { mastersthesis }
+{
+ output.bibitem
+ format.authors "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.title emphasize "title" output.check % NB: ACM style requires emphasized thesis title
+ new.block
+ "Master's\ thesis" format.thesis.type output new.sentence % Added dot. BV 2011/09/27
+ school "school" output.check
+ address output
+ new.block
+ format.advisor output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { misc }
+{
+ output.bibitem
+ format.authors output
+ author format.key output % added
+ output.year.check % added
+ title howpublished new.block.checkb
+ format.title output
+ new.block
+ howpublished output
+ "" output.nonnull.dot.space
+ output.day.month.year % Gerry - appears odd if (only) the year is 'repeated' but (appears) 'valuable' if the month/day is _also_ included - 2011/09/28
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { phdthesis }
+{
+ output.bibitem
+ format.authors "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.title emphasize "title" output.check % NB: ACM style requires emphasized thesis title
+ new.block
+ "Ph.D. Dissertation" format.thesis.type output new.sentence % Added dot. BV 2011/09/27
+ school "school" output.check
+ address output
+ new.block
+ format.advisor output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION {format.date}
+{ year empty.or.unknown
+ { month empty.or.unknown
+ {
+ "" % output empty date if year/month both empty
+ day empty.or.unknown
+ { }
+ { "there's a day but no month or year in " cite$ * warning$ }
+ if$
+ }
+ { "there's a month but no year in " cite$ * warning$
+ month
+ day empty.or.unknown
+ { }
+ { " " * day * }
+ if$
+ }
+ if$
+ }
+ { month empty.or.unknown
+ {
+ year % output only year if month empty
+ day empty.or.unknown
+ { }
+ { "there's a day and year but no month in " cite$ * warning$ }
+ if$
+ }
+ {
+ month " " *
+ day empty.or.unknown
+ { }
+ { day * ", " * }
+ if$
+ year *
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {new.block.checka}
+{
+ empty.or.unknown
+ 'skip$
+ 'new.block
+ if$
+}
+
+FUNCTION { periodical }
+{
+ output.bibitem
+ editor empty.or.unknown
+ { organization output }
+ { format.editors output.nonnull }
+ if$
+ new.block
+ title emphasize "title" output.check
+ format.date output
+ new.sentence
+ publisher output
+ address output
+ howpublished new.block.checka
+ howpublished output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { proceedings }
+{
+ output.bibitem
+ editor empty.or.unknown
+ { organization output
+ organization format.key output } % gnp - changed from author format.key
+ { format.editors output.nonnull }
+ if$
+ % author format.key output % gnp - removed (should be either
+ % editor or organization
+ output.year.check % added (newapa)
+ new.block
+ format.btitle format.city "title" output.check % jtb: added city
+ new.sentence
+ format.bvolume output
+ format.number.series output
+ new.sentence
+ organization output
+ % jtb: normal order: publisher, address
+ publisher output
+ address output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { techreport }
+{
+ output.bibitem
+ format.authors "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.btitle "title" output.check
+ new.block
+% format.tr.number output % jtb: moved month ...
+ format.tr.number output new.sentence % Gerry - need dot 2011/09/28
+ institution "institution" output.check
+ address output
+ new.sentence
+ format.named.pages output
+ % ACM omits year at end in transactions style
+ % format.day.month.year output.nonnull.dot.space % jtb: ... to here (no parens)
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { unpublished }
+{
+ output.bibitem
+ format.authors
+ "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.title "title" output.check
+ fin.sentence
+ output.day.month.year % UTAH
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note.check
+ fin.entry
+}
+
+FUNCTION { default.type } { misc }
+
+%%% ACM journal-style month definitions: full name if 1--5 letters, else
+%%% abbreviation of 3 or 4 characters and a dot
+
+MACRO {jan} {"Jan."}
+
+MACRO {feb} {"Feb."}
+
+MACRO {mar} {"March"}
+
+MACRO {apr} {"April"}
+
+MACRO {may} {"May"}
+
+MACRO {jun} {"June"}
+
+MACRO {jul} {"July"}
+
+MACRO {aug} {"Aug."}
+
+MACRO {sep} {"Sept."}
+
+MACRO {oct} {"Oct."}
+
+MACRO {nov} {"Nov."}
+
+MACRO {dec} {"Dec."}
+
+
+%%% ====================================================================
+%%% I M P O R T A N T C H A N G E
+%%%
+%%% For the 2009 release of the official acm-*.bst files, there are to
+%%% be NO predefined journal abbreviations in those style files.
+%%%
+%%% ACM may later develop an official list of mappings of full journal
+%%% names of commonly-cited journals to ACM-preferred abbreviations, but
+%%% authors should consider that use of any of these commented-out
+%%% abbreviations is DEPRECATED unless the BibTeX file itself provides
+%%% its own @String{name = "value"} definitions.
+%%%
+%%% Use of journal (and publisher and address) @String{...}
+%%% abbreviations, as opposed to explicit value assignments such as
+%%% journal = "J. ACM" and publisher = "IEEE", is preferred in
+%%% bibliographic databases, because it makes it easier for journal
+%%% production staff to replace those definitions by publisher-preferred
+%%% abbreviations when articles are typeset for publication.
+%%%
+%%% For historical reasons, and because some of these abbreviations are
+%%% used in other (non-ACM) bibliography style files, they are preserved
+%%% here in comments. Future releases of the acm*-.bst files are likely
+%%% to remove them entirely.
+%%% ====================================================================
+%%%
+%%% DEPRECATED: MACRO {acmcs} {"ACM Comput. Surv."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {acmlett} {"ACM Lett. Program. Lang. Syst."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {acta} {"Acta Inf."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ai} {"Artificial Intelligence"}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {al} {"Ada Lett."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {acr} {"Adv. Comput. Res."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {bit} {"Bit"}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {cacm} {"Commun. ACM"} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {cj} {"Comput. J."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {cn} {"Comput. Netw."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {cl} {"Comput. Lang."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ibmjrd} {"IBM J. Res. and Development"} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ibmsj} {"IBM Systems Journal"} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ict} {"Inf. Contr."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieebcs} {"IEE/BCS Softw. Eng. J."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieees} {"IEEE Softw."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieeese} {"IEEE Trans. Softw. Eng."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieeetc} {"IEEE Trans. Comput."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieeetcad} {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieeetpds} {"IEEE Trans. Parall. Distrib. Syst."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieeetit} {"IEEE Trans. Inf. Theory"}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ipl} {"Inf. Process. Lett."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {icp} {"Inf. Comput."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ist} {"Inf. Softw. Tech."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ijsa} {"Int. J. Supercomput. Appl."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ijpp} {"Int. J. Parallel Program."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jacm} {"J. ACM"} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: % MACRO {jcss} {"Journal of Computer and System Sciences"} % original BibTeX
+%%% DEPRECATED: MACRO {jcss} {"J. Comput. Syst. Sci."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jlp} {"J. Logic Program."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jfp} {"J. Funct. Program."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jsmrp} {"J. Softw. Maint. Res. Pract."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jss} {"J. Syst. Softw."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jlc} {"J. Logic and Comput."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jlsc} {"J. Lisp Symb. Comput."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {lpls} {"Lett. Program. Lang. Syst."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {mor} {"Math. Oper. Res."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {mscs} {"Math. Struct. Comput. Sci."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {mst} {"Math. Syst. Theor."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ngc} {"New Gen. Comput."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {scp} {"Sci. Comput. Program."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {sicomp} {"SIAM J. Comput."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {spe} {"Softw. Pract. Exper."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {tocs} {"ACM Trans. Comput. Syst."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {tods} {"ACM Trans. Database Syst."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {tog} {"ACM Trans. Graphics"} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {toms} {"ACM Trans. Math. Softw."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {toois} {"ACM Trans. Office Inf. Syst."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {toplas} {"ACM Trans. Program. Lang. Syst."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {tcs} {"Theor. Comput. Sci."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {tr} {"Tech. Rep."}
+%%% ====================================================================
+
+READ
+
+FUNCTION { sortify }
+{
+ purify$
+ "l" change.case$
+}
+
+FUNCTION { chop.word }
+{
+ 's :=
+ 'len :=
+ s #1 len substring$ =
+ { s len #1 + global.max$ substring$ }
+ 's
+ if$
+}
+
+FUNCTION { sort.format.names }
+{
+ 's :=
+ #1 'nameptr :=
+ ""
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { nameptr #1 >
+ { " " * }
+ 'skip$
+ if$
+ % s nameptr "{ff{ } }{ll{ }}{ vv{ }}{ jj{ }}" format.name$ 't :=
+ s nameptr "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}" format.name$ 't :=
+ nameptr numnames = t "others" = and
+ { " et~al" * }
+ { t sortify * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION { sort.format.title }
+{
+ 't :=
+ "A " #2
+ "An " #3
+ "The " #4 t chop.word
+ chop.word
+ chop.word
+ sortify
+ #1 global.max$ substring$
+}
+
+FUNCTION { author.sort }
+{
+ author empty.or.unknown
+ { key empty.or.unknown
+ { "to sort, need author or key in " cite$ * warning$
+ "" }
+ { key sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION { author.editor.sort }
+{
+ author empty.or.unknown
+ {
+ editor empty.or.unknown
+ {
+ key empty.or.unknown
+ { "to sort, need author, editor, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION { author.organization.sort }
+{
+ % added - GNP. Stack author or organization for sorting (from alpha.bst).
+ % Unlike alpha.bst, we need entire names, not abbreviations
+
+ author empty.or.unknown
+ { organization empty.or.unknown
+ { key empty.or.unknown
+ { "to sort, need author, organization, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { organization sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION { editor.organization.sort }
+{
+ % added - GNP. Stack editor or organization for sorting (from alpha.bst).
+ % Unlike alpha.bst, we need entire names, not abbreviations
+
+ editor empty.or.unknown
+ { organization empty.or.unknown
+ { key empty.or.unknown
+ { "to sort, need editor, organization, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { organization sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+}
+
+FUNCTION { presort }
+{
+ % Presort creates the bibentry's label via a call to calc.label, and then
+ % sorts the entries based on entry type. Chicago.bst adds support for
+ % including organizations as the sort key; the following is stolen from
+ % alpha.bst.
+
+ calc.label sortify % recalculate bibitem label
+ year field.or.null purify$ #-1 #4 substring$ * % add year
+ " "
+ *
+ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.sort
+ { type$ "proceedings" =
+ 'editor.organization.sort
+ { type$ "manual" =
+ 'author.organization.sort
+ 'author.sort
+ if$
+ }
+ if$
+ }
+ if$
+ #1 entry.max$ substring$ % added for newapa
+ 'sort.label := % added for newapa
+ sort.label % added for newapa
+ *
+ " "
+ *
+ title field.or.null
+ sort.format.title
+ *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+ITERATE { presort }
+
+SORT % by label, year, author/editor, title
+
+FUNCTION { initialize.extra.label.stuff }
+{ #0 int.to.chr$ 'last.label :=
+ "" 'next.extra :=
+ #0 'last.extra.num :=
+}
+
+FUNCTION { forward.pass }
+{
+ % Pass through all entries, comparing current entry to last one.
+ % Need to concatenate year to the stack (done by calc.label) to determine
+ % if two entries are the same (see presort)
+
+ last.label
+ % OLD:calc.label year field.or.null purify$ #-1 #4 substring$ * % add year
+ % NEW:
+ author.key.label year field.or.null purify$ #-1 #4 substring$ * % add year
+ #1 entry.max$ substring$ = % are they equal?
+ { last.extra.num #1 + 'last.extra.num :=
+ last.extra.num int.to.chr$ 'extra.label :=
+ }
+ { "a" chr.to.int$ 'last.extra.num :=
+ "" 'extra.label :=
+ % OLD: calc.label year field.or.null purify$ #-1 #4 substring$ * % add year
+ % NEW:
+ author.key.label year field.or.null purify$ #-1 #4 substring$ * % add year
+ #1 entry.max$ substring$ 'last.label := % assign to last.label
+ }
+ if$
+}
+
+FUNCTION { reverse.pass }
+{
+ next.extra "b" =
+ { "a" 'extra.label := }
+ 'skip$
+ if$
+ label.year extra.label * 'sort.year :=
+ extra.label 'next.extra :=
+}
+
+EXECUTE {initialize.extra.label.stuff}
+
+ITERATE {forward.pass}
+
+REVERSE {reverse.pass}
+
+FUNCTION { bib.sort.order }
+{
+ sort.label
+ " "
+ *
+ year field.or.null sortify
+ *
+ " "
+ *
+ title field.or.null
+ sort.format.title
+ *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+ITERATE { bib.sort.order }
+
+SORT % by sort.label, year, title --- giving final bib. order.
+
+FUNCTION { begin.bib }
+{
+ %% Set to #0 show 13-digit ISBN in preference to 10-digit ISBN.
+ %% Set to #1 to show both 10-digit and 13-digit ISBNs.
+ #1 'show-isbn-10-and-13 :=
+
+ "%%% -*-BibTeX-*-" writeln
+ "%%% Do NOT edit. File created by BibTeX with style" writeln
+ "%%% ACM-Reference-Format-Journals [18-Jan-2012]." writeln
+ "" writeln
+
+ preamble$ empty.or.unknown
+ 'skip$
+ { preamble$ writeln }
+ if$
+ "\begin{thebibliography}{00}" writeln
+ "" writeln
+ "%%% ====================================================================" writeln
+ "%%% NOTE TO THE USER: you can override these defaults by providing" writeln
+ "%%% customized versions of any of these macros before the \bibliography" writeln
+ "%%% command. Each of them MUST provide its own final punctuation," writeln
+ "%%% except for \shownote{}, \showDOI{}, and \showURL{}. The latter two" writeln
+ "%%% do not use final punctuation, in order to avoid confusing it with" writeln
+ "%%% the Web address." writeln
+ "%%%" writeln
+ "%%% To suppress output of a particular field, define its macro to expand" writeln
+ "%%% to an empty string, or better, \unskip, like this:" writeln
+ "%%%" writeln
+ "%%% \newcommand{\showDOI}[1]{\unskip} % LaTeX syntax" writeln
+ "%%%" writeln
+ "%%% \def \showDOI #1{\unskip} % plain TeX syntax" writeln
+ "%%%" writeln
+ "%%% ====================================================================" writeln
+ "" writeln
+
+ %% ACM publications do not use CODEN, ISSN, and LCCN data, so their default
+ %% macro wrappers expand to \unskip, discarding their values and unwanted
+ %% space.
+ %%
+ %% For other publications, prior definitions like these may be useful:
+ %%
+ %% Plain TeX:
+ %% \def \showCODEN #1{CODEN #1.}
+ %% \def \showISSN #1{ISSN #1.}
+ %% \def \showLCCN #1{LCCN #1.}
+ %%
+ %% LaTeX:
+ %% \newcommand{\showCODEN}[1]{CODEN #1.}
+ %% \newcommand{\showISSN}[1]#1{ISSN #1.}
+ %% \newcommand{\showLCCN}[1]{LCCN #1.}
+
+ "\ifx \showCODEN \undefined \def \showCODEN #1{\unskip} \fi" writeln
+ "\ifx \showDOI \undefined \def \showDOI #1{{\tt DOI:}\penalty0{#1}\ } \fi" writeln
+ % ACM styles omit ISBNs, but they can be included by suitable definitions of
+ % \showISBNx and \showISBNxiii before the .bbl file is read
+ "\ifx \showISBNx \undefined \def \showISBNx #1{\unskip} \fi" writeln
+ "\ifx \showISBNxiii \undefined \def \showISBNxiii #1{\unskip} \fi" writeln
+ "\ifx \showISSN \undefined \def \showISSN #1{\unskip} \fi" writeln
+ "\ifx \showLCCN \undefined \def \showLCCN #1{\unskip} \fi" writeln
+ "\ifx \shownote \undefined \def \shownote #1{#1} \fi" writeln % NB: final period supplied by add.period$ above
+ "\ifx \showarticletitle \undefined \def \showarticletitle #1{#1} \fi" writeln
+ "\ifx \showURL \undefined \def \showURL #1{#1} \fi" writeln
+}
+
+EXECUTE {begin.bib}
+
+EXECUTE {init.state.consts}
+
+ITERATE {call.type$}
+
+FUNCTION { end.bib }
+{
+ newline$
+ "\end{thebibliography}"
+ writeln
+}
+
+EXECUTE {end.bib}
+
+%%% End of ACM-Reference-Format-Journals.bst V1.00 - 18 January 2012
+
diff --git a/Master/texmf-dist/bibtex/bst/acmart/acm-abbrv.bst b/Master/texmf-dist/bibtex/bst/acmart/acm-abbrv.bst
new file mode 100644
index 00000000000..a6e37db0b0e
--- /dev/null
+++ b/Master/texmf-dist/bibtex/bst/acmart/acm-abbrv.bst
@@ -0,0 +1,3311 @@
+%%% -*-BibTeX-*-
+%%% ====================================================================
+%%% @BibTeX-style-file{
+%%% author = "Nelson H. F. Beebe and many others",
+%%% version = "1.03",
+%%% date = "15 April 2011",
+%%% time = "23:40:53 EDT",
+%%% filename = "acm-abbrv.bst",
+%%% address = "University of Utah
+%%% Department of Mathematics, 110 LCB
+%%% 155 S 1400 E RM 233
+%%% Salt Lake City, UT 84112-0090
+%%% USA",
+%%% telephone = "+1 801 581 5254",
+%%% FAX = "+1 801 581 4148",
+%%% URL = "http://www.math.utah.edu/~beebe",
+%%% checksum = "62819 3311 12013 90137",
+%%% email = "beebe@math.utah.edu, beebe@acm.org,
+%%% beebe@computer.org",
+%%% codetable = "ISO/ASCII",
+%%% keywords = "ACM abbrv bibliography style; BibTeX",
+%%% license = "public domain",
+%%% supported = "yes",
+%%% abstract = "",
+%%% docstring = "The checksum field above contains a CRC-16
+%%% checksum as the first value, followed by the
+%%% equivalent of the standard UNIX wc (word
+%%% count) utility output of lines, words, and
+%%% characters. This is produced by Robert
+%%% Solovay's checksum utility.",
+%%% }
+%%% ====================================================================
+
+% "ACM abbrv" BibTeX style, derived by minimal modifications from acm-plain.bst
+% "ACM Transactions" BibTeX style, acmtrans-v2.bst
+% for BibTeX version 0.99c, LaTeX version 3.141
+% ACM extensions with code cleaned up, extended, and debugged 10--15-Nov-2008
+% Revised 28-MARCH-1996
+% Revised 30-JUNE-1995
+% Revised 15-JAN-1996
+% Revised 17-APRIL-2008
+% Revised 13-MARCH-2011
+% Revised 27-MARCH-2011
+% Revised 15-APRIL-2011
+%
+% Hacked by John T. Boyland at University of California, Berkeley
+% (with assistance by John R. Hauser)
+% Hacked by Andrew W. Appel and Rebecca L. Davies at Princeton University,
+% based on a "chicago.bst" by Glenn Paulley at U. Waterloo,
+% which was based on "newapa.bst" found at ymir.claremont.edu.
+%
+% Version 2.2
+% Johny Sebatian and Sanjeev Sharma
+% Aptara corp (c) 2008
+%
+% History
+%
+% Date: 28th April 2008
+%
+% 1. Avoid 'repeating' the 'month' values.
+% 2. Avoid incorrectly italicizing the volume number.
+% 3. Avoid non italicizing certain titles (book, inproceedings etc).
+% 4. NO series if there is NO volume.
+% 5. Sorting of reference with first surname.
+% 6. Article no added for Inproceedings.
+%
+% Date: 07th May 2008
+%
+% 1. Abbreviation list added
+%
+% Citation format: [author-last-name year]
+% [author-last-name and author-last-name year]
+% [author-last-name, author-last-name, and author-last-name year]
+% [author-last-name et al. year]
+% [author-last-name]
+% author-last-name [year]
+% [author-last-name and author-last-name]
+% [author-last-name et al.]
+% [year] or [year,year]
+% year or year,year
+%
+% Reference list ordering: alphabetical by author or whatever passes
+% for author in the absence of one.
+%
+% This BibTeX style has support for abbreviated author lists and for
+% year-only citations. This is done by having the citations
+% actually look like
+%
+% \citeauthoryear{full-author-info}{abbrev-author-info}{year}
+%
+% The LaTeX style has to have the following (or similar)
+%
+% \let\@internalcite\cite
+% \def\fullcite{\def\citeauthoryear##1##2##3{##1, ##3}\@internalcite}
+% \def\fullciteA{\def\citeauthoryear##1##2##3{##1}\@internalcite}
+% \def\shortcite{\def\citeauthoryear##1##2##3{##2, ##3}\@internalcite}
+% \def\shortciteA{\def\citeauthoryear##1##2##3{##2}\@internalcite}
+% \def\citeyear{\def\citeauthoryear##1##2##3{##3}\@internalcite}
+%
+% These TeX macro definitions are found in acmtrans.sty. Additional
+% commands to manipulate different components of a citation can be defined
+% so that, for example, you can list author's names without parentheses
+% if using a citation as a noun or object in a sentence.
+%
+% Features of acmtrans.bst:
+% ========================
+%
+% - all authors appear last name first.
+% - all pages are listed xx-xx, (no pp.) and are at the end of the reference
+% - publishers are identified as publisher, address
+% - conferences papers (inproceedings) may give city of conference,
+% date of conference, and journal that the proceedings appear in.
+% - months abbreviated to max four letters (eg. Mar.)
+% - volume of a series indicated after the title of the series
+% - editors appear after edited title and are identified by a trailing "Eds."
+% not in parentheses. Editor names are not given in small caps.
+% (unless there is no author line)
+% - names terminated with a period even if there is no first name.
+% - editions are indicated trailing after the work, not in parentheses.
+% - "et al." citations have a protected period to avoid bad spacing (jrh)
+% - "address" required when publisher given
+% - series (roman) and volume are in a sentence separate from (book-)title
+%
+%
+% Features of chicago.bst:
+% =======================
+%
+% - full names used in citations, but abbreviated citations are available
+% (see above)
+% - if an entry has a "month", then the month and year are also printed
+% as part of that bibitem.
+% - all conjunctions use "and" instead of "\&"
+% - major modification from Chicago Manual of Style (13th ed.) is that
+% only the first author in a reference appears last name first-
+% additional authors appear as J. Q. Public.
+% - pages are listed as "pp. xx-xx" in all entry types except
+% article entries.
+% - book, inbook, and manual use "location: publisher" (or organization)
+% for address and publisher. All other types list publishers separately.
+% - "pp." are used to identify page numbers for all entry types except
+% articles.
+% - organization is used as a citation label if neither author nor editor
+% is present (for manuals).
+% - "et al." is used for long author and editor lists, or when "others"
+% is used.
+%
+% Modifications and bug fixes from newapa.bst:
+% ===========================================
+%
+% - added month, year to bib entries if month is present
+% - fixed bug with In proceedings, added necessary comma after title
+% - all conjunctions changed to "and" from "\&"
+% - fixed bug with author labels in my.full.label: "et al." now is
+% generated when "others" is an author name
+% - major modification from Chicago Manual of Style (13th ed.) is that
+% only the first author in a reference appears last name first-
+% additional authors appear as J. Q. Public.
+% - pages are listed as "pp. xx-xx" in all entry types except
+% article entries. Unnecessary (IMHO) "()" around page numbers
+% were removed, and page numbers now don't end with a period.
+% - created chicago.sty for use with this bibstyle (required).
+% - fixed bugs in FUNCTION {format.vol.num.pages} for missing volume,
+% number, and /or pages. Renamed to format.journal.volume.number.
+% - fixed bug in formatting booktitles: additional period an error if
+% book has a volume.
+% - fixed bug: editors usually given redundant period before next clause
+% (format.editors.dot) removed.
+% - added label support for organizations, if both author and editor
+% are missing (from alpha.bst). If organization is too long, then
+% the key field is used for abbreviated citations.
+% - In proceedings or books of several volumes, no comma was written
+% between the "Volume x" and the page numbers (this was intentional
+% in newapa.bst). Fixed.
+% - Some journals may not have volumes/numbers, only month/year (eg.
+% IEEE Computer). Fixed bug in article style that assumed volume/number
+% was always present.
+%
+% Original documentation for newapa.sty:
+% =====================================
+%
+% This version was made by modifying the master file made by
+% Oren Patashnik (PATASHNIK@SCORE.STANFORD.EDU), and the 'named' BibTeX
+% style of Peter F. Patel-Schneider.
+%
+% Copyright (C) 1985, all rights reserved.
+% Copying of this file is authorized only if either
+% (1) you make absolutely no changes to your copy, including name, or
+% (2) if you do make changes, you name it something other than 'newapa.bst'.
+% There are undoubtably bugs in this style. If you make bug fixes,
+% improvements, etc. please let me know. My e-mail address is:
+% spencer@cgrg.ohio.state.edu or 71160.3141@compuserve.com
+%
+% This style was made from 'plain.bst', 'named.bst', and 'apalike.bst',
+% with lots of tweaking to make it look like APA style, along with tips
+% from Young Ryu and Brian Reiser's modifications of 'apalike.bst'.
+
+ENTRY
+ { address
+ advisor
+ author
+ booktitle
+ chapter
+ city % jtb: added
+ date % jtb: added
+ edition
+ editor
+ howpublished
+ institution
+ journal
+ key
+ month
+ note
+ number
+ organization
+ pages
+ publisher
+ school
+ series
+ title
+ type
+ volume
+ year
+ % New keys recognized for acmtrans-v2.bst
+ issue % UTAH: used in, e.g., ACM SIGSAM Bulletin and ACM Communications in Computer Algebra
+ articleno
+ day % UTAH: needed for newspapers, weeklies, bi-weeklies
+ doi % UTAH
+ url % UTAH
+ bookpages % UTAH
+ numpages
+ lastaccessed % UTAH: used only for @Misc{...}
+ coden % UTAH
+ isbn % UTAH
+ isbn-13 % UTAH
+ issn % UTAH
+ lccn % UTAH
+ }
+ {}
+ { label label.year extra.label sort.year sort.label }
+
+INTEGERS { output.state before.all mid.sentence after.sentence after.block }
+
+INTEGERS { show-isbn-10-and-13 } % initialized below in begin.bib
+
+INTEGERS { nameptr namesleft numnames }
+
+INTEGERS { multiresult }
+
+INTEGERS { len }
+
+INTEGERS { last.extra.num }
+
+STRINGS { s t t.org u }
+
+STRINGS { last.label next.extra }
+
+STRINGS { p1 p2 p3 page.count }
+
+FUNCTION { dump.stack.1 }
+{
+ duplicate$ "STACK[top] = [" swap$ * "]" * warning$
+}
+
+FUNCTION { dump.stack.2 }
+{
+ duplicate$ "STACK[top ] = [" swap$ * "]" * warning$
+ swap$
+ duplicate$ "STACK[top-1] = [" swap$ * "]" * warning$
+ swap$
+}
+
+FUNCTION { empty.or.unknown }
+{
+ %% Examine the top stack entry, and push 1 if it is empty, or
+ %% consists only of whitespace, or is a string beginning with two
+ %% queries (??), and otherwise, push 0.
+ %%
+ %% This function provides a replacement for empty$, with the
+ %% convenient feature that unknown values marked by two leading
+ %% queries are treated the same as missing values, and thus, do not
+ %% appear in the output .bbl file, and yet, their presence in .bib
+ %% file(s) serves to mark values which are temporarily missing, but
+ %% are expected to be filled in eventually once more data is
+ %% obtained. The TeX User Group and BibNet bibliography archives
+ %% make extensive use of this practice.
+ %%
+ %% An empty string cannot serve the same purpose, because just as in
+ %% statistics data processing, an unknown value is not the same as an
+ %% empty value.
+ %%
+ %% At entry: stack = ... top:[string]
+ %% At exit: stack = ... top:[0 or 1]
+
+ duplicate$ empty$
+ { pop$ #1 }
+ { #1 #2 substring$ "??" = }
+ if$
+}
+
+FUNCTION { writeln }
+{
+ %% In BibTeX style files, the sequences
+ %%
+ %% ... "one" "two" output
+ %% ... "one" "two" output.xxx
+ %%
+ %% ship "one" to the output file, possibly following by punctuation,
+ %% leaving the stack with
+ %%
+ %% ... "two"
+ %%
+ %% There is thus a one-string lag in output processing that must be
+ %% carefully handled to avoid duplicating a string in the output
+ %% file. Unless otherwise noted, all output.xxx functions leave
+ %% just one new string on the stack, and that model should be born
+ %% in mind when reading or writing function code.
+ %%
+ %% BibTeX's asynchronous buffering of output from strings from the
+ %% stack is confusing because newline$ bypasses the buffer. It
+ %% would have been so much easier for newline to be a character
+ %% rather than a state of the output-in-progress.
+ %%
+ %% The documentation in btxhak.dvi is WRONG: it says
+ %%
+ %% newline$ Writes onto the bbl file what's accumulated in the
+ %% output buffer. It writes a blank line if and only
+ %% if the output buffer is empty. Since write$ does
+ %% reasonable line breaking, you should use this
+ %% function only when you want a blank line or an
+ %% explicit line break.
+ %%
+ %% write$ Pops the top (string) literal and writes it on the
+ %% output buffer (which will result in stuff being
+ %% written onto the bbl file when the buffer fills
+ %% up).
+ %%
+ %% Examination of the BibTeX source code shows that write$ does
+ %% indeed behave as claimed, but newline$ sends a newline character
+ %% directly to the output file, leaving the stack unchanged. The
+ %% first line "Writes onto ... buffer." is therefore wrong.
+ %%
+ %% The original BibTeX style files almost always use "write$ newline$"
+ %% in that order, so it makes sense to hide that pair in a private
+ %% function like this one, named after a statement in Pascal,
+ %% the programming language embedded in the BibTeX Web program.
+
+ write$ % output top-of-stack string
+ newline$ % immediate write of newline (not via stack)
+}
+
+FUNCTION { init.state.consts }
+{
+ #0 'before.all :=
+ #1 'mid.sentence :=
+ #2 'after.sentence :=
+ #3 'after.block :=
+}
+
+FUNCTION { output.nonnull }
+{ % Stack in: ... R S T Stack out: ... R T File out: S<comma><space>
+ 's :=
+ output.state mid.sentence =
+ {
+ ", " * write$
+ }
+ {
+ output.state after.block =
+ {
+ add.period$ writeln
+ "\newblock " write$
+ }
+ {
+ output.state before.all =
+ {
+ write$
+ }
+ {
+ add.period$ " " * write$
+ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+FUNCTION { output.nonnull.dot.space }
+{ % Stack in: ... R S T Stack out: ... R T File out: S<dot><space>
+ 's :=
+ output.state mid.sentence = % { "<DEBUG output.nonnull.dot.space>. " * write$ }
+ {
+ ". " * write$
+ }
+ {
+ output.state after.block =
+ {
+ add.period$ writeln "\newblock " write$
+ }
+ {
+ output.state before.all =
+ {
+ write$
+ }
+ {
+ add.period$ " " * write$
+ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+FUNCTION { output.nonnull.remove }
+{ % Stack in: ... R S T Stack out: ... R T File out: S<space>
+ 's :=
+ output.state mid.sentence =
+ {
+ " " * write$
+ }
+ {
+ output.state after.block =
+ {
+ add.period$ writeln "\newblock " write$
+ }
+ {
+ output.state before.all =
+ {
+ write$
+ }
+ {
+ add.period$ " " * write$
+ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+FUNCTION { output.nonnull.removenospace }
+{ % Stack in: ... R S T Stack out: ... R T File out: S
+ 's :=
+ output.state mid.sentence =
+ {
+ "" * write$
+ }
+ {
+ output.state after.block =
+ {
+ add.period$ writeln "\newblock " write$
+ }
+ {
+ output.state before.all =
+ {
+ write$
+ }
+ {
+ add.period$ " " * write$
+ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+FUNCTION { output }
+{ % discard top token if empty, else like output.nonnull
+ duplicate$ empty.or.unknown
+ 'pop$
+ 'output.nonnull
+ if$
+}
+
+FUNCTION { output.dot.space }
+{ % discard top token if empty, else like output.nonnull.dot.space
+ duplicate$ empty.or.unknown
+ 'pop$
+ 'output.nonnull.dot.space
+ if$
+}
+
+FUNCTION { output.removenospace }
+{ % discard top token if empty, else like output.nonnull.removenospace
+ duplicate$ empty.or.unknown
+ 'pop$
+ 'output.nonnull.removenospace
+ if$
+}
+
+FUNCTION { output.check }
+{ % like output, but warn if key name on top-of-stack is not set
+ 't :=
+ duplicate$ empty.or.unknown
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull
+ if$
+}
+
+FUNCTION { output.check.dot.space }
+{ % like output.dot.space, but warn if key name on top-of-stack is not set
+ 't :=
+ duplicate$ empty.or.unknown
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull.dot.space
+ if$
+}
+
+FUNCTION { fin.block }
+{ % functionally, but not logically, identical to fin.entry
+ add.period$
+ writeln
+}
+
+FUNCTION { fin.entry }
+{
+ add.period$
+ writeln
+}
+
+FUNCTION { new.sentence }
+{ % update sentence state, with neither output nor stack change
+ output.state after.block =
+ 'skip$
+ {
+ output.state before.all =
+ 'skip$
+ { after.sentence 'output.state := }
+ if$
+ }
+ if$
+}
+
+FUNCTION { fin.sentence }
+{
+ add.period$
+ write$
+ new.sentence
+ ""
+}
+
+FUNCTION { new.block }
+{
+ output.state before.all =
+ 'skip$
+ { after.block 'output.state := }
+ if$
+}
+
+FUNCTION { output.coden } % UTAH
+{ % output non-empty CODEN as one-line sentence (stack untouched)
+ coden empty.or.unknown
+ { }
+ { "\showCODEN{" coden * "}" * writeln }
+ if$
+}
+
+FUNCTION { format.articleno }
+{
+ articleno empty.or.unknown
+ { "" }
+ {
+ numpages empty.or.unknown
+ { "articleno field, but no numpages field, in " cite$ * warning$ }
+ { }
+ if$
+ "Article " articleno *
+ }
+ if$
+}
+
+FUNCTION { format.year }
+{ % push year string or "????" onto output stack
+ %% Because year is a mandatory field, we always force SOMETHING
+ %% to be output
+ year empty.or.unknown
+ { "????" }
+ { year }
+ if$
+}
+
+FUNCTION { format.day.month }
+{ % push "day month " or "month " or "" onto output stack
+ day empty.or.unknown
+ {
+ month empty.or.unknown
+ { "" }
+ { month " " *}
+ if$
+ }
+ {
+ month empty.or.unknown
+ { "" }
+ { day " " * month * " " *}
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.day.month.year } % UTAH
+{ % if month is empty, push "" else push "(MON.)" or "(DD MON.)"
+ % Needed for frequent periodicals: 2008. ... New York Times C-1, C-2, C-17 (23 Oct.)
+ % acm-*.bst addition: prefix parenthesized date string with
+ % ", Article nnn "
+ articleno empty.or.unknown
+ { "" }
+ { ", " format.articleno * }
+ if$
+ " (" * format.day.month * format.year * ")" *
+}
+
+FUNCTION { output.day.month.year } % UTAH
+{ % if month is empty value, do nothing; else output stack top and
+ % leave with new top string "(MON.)" or "(DD MON.)"
+ % Needed for frequent periodicals: 2008. ... New York Times C-1, C-2, C-17 (23 Oct.)
+ format.day.month.year
+ output.nonnull.remove
+}
+
+FUNCTION { strip.doi } % UTAH
+{ % Strip any Web address prefix to recover the bare DOI, leaving the
+ % result on the output stack, as recommended by CrossRef DOI
+ % documentation.
+ % For example, reduce "http://doi.acm.org/10.1145/1534530.1534545" to
+ % "10.1145/1534530.1534545". That is later typeset and displayed as
+ % doi:10.1145/1534530.1534545 as the LAST item in the reference list
+ % entry. Publisher Web sites wrap this with a suitable link to a real
+ % URL to resolve the DOI, and the master http://dx.doi.org/ address is
+ % preferred, since publisher-specific URLs can disappear in response
+ % to economic events. All journals are encouraged by the DOI
+ % authorities to use that typeset format and link procedures for
+ % uniformity across all publications that include DOIs in reference
+ % lists.
+ % The numeric prefix is guaranteed to start with "10.", so we use
+ % that as a test.
+ doi #1 #3 substring$ "10." =
+ { doi }
+ {
+ doi #1 #7 substring$ "http://" =
+ {
+ doi #8 doi text.length$ #7 - substring$ 't := % get modifiable copy of rest of DOI
+
+ "INTERNAL STYLE-FILE ERROR" 's :=
+
+ % search for next "/" and assign its suffix to s
+
+ { t text.length$ }
+ {
+ t #1 #1 substring$ "/" =
+ {
+ % save rest of string as true DOI (should be 10.xxxx/yyyy)
+ t #2 t text.length$ #1 - substring$ 's :=
+ "" 't := % empty string t terminates the loop
+ }
+ {
+ % discard first character and continue loop: t <= substring(t,2,last)
+ t #2 t text.length$ #1 - substring$ 't :=
+ }
+ if$
+ }
+ while$
+
+ % check for valid DOI (should be 10.xxxx/yyyy)
+ s #1 #3 substring$ "10." =
+ { }
+ { "unrecognized DOI substring " s * " in DOI value [" * doi * "]" * warning$ }
+ if$
+
+ s % push the stripped DOI on the output stack
+
+ }
+ {
+ "unrecognized DOI value [" doi * "]" * warning$
+ doi % push the unrecognized original DOI on the output stack
+ }
+ if$
+ }
+ if$
+}
+
+%
+% Change by BV: added standard prefix to URL
+%
+FUNCTION { output.doi } % UTAH
+{ % output non-empty DOI as one-line sentence (stack untouched)
+ doi empty.or.unknown
+ { }
+ {
+ %% NB: We want URLs at beginning of line to reduce likelihood of
+ %% BibTeX's nasty line wrapping after column 79, which then requires
+ %% manual (or automated) editing of the .bbl file to repair.
+ %% The \url{} macro strips percent-newlines, and is thus safe in
+ %% the presence of the line wrapping, but \path|...| and
+ %% \verb|...| do not.
+ "\showDOI{%" writeln
+ "\url{http://dx.doi.org/" strip.doi * "}}" * writeln
+ }
+ if$
+}
+
+FUNCTION { output.isbn } % UTAH
+{ % output non-empty ISBN-10 and/or ISBN-13 as one-line sentences (stack untouched)
+ show-isbn-10-and-13
+ {
+ %% show both 10- and 13-digit ISBNs
+ isbn empty.or.unknown
+ { }
+ {
+ "\showISBNx{" isbn * "}" * writeln
+ }
+ if$
+ isbn-13 empty.or.unknown
+ { }
+ {
+ "\showISBNxiii{" isbn-13 * "}" * writeln
+ }
+ if$
+ }
+ {
+ %% show 10-digit ISBNs only if 13-digit ISBNs not available
+ isbn-13 empty.or.unknown
+ {
+ isbn empty.or.unknown
+ { }
+ {
+ "\showISBNx{" isbn * "}" * writeln
+ }
+ if$
+ }
+ {
+ "\showISBNxiii{" isbn-13 * "}" * writeln
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION { output.issn } % UTAH
+{ % output non-empty ISSN as one-line sentence (stack untouched)
+ issn empty.or.unknown
+ { }
+ { "\showISSN{" issn * "}" * writeln }
+ if$
+}
+
+FUNCTION { output.issue }
+{ % output non-empty issue number as a one-line sentence (stack untouched)
+ issue empty.or.unknown
+ { }
+ { "Issue " issue * "." * writeln }
+ if$
+}
+
+FUNCTION { output.lccn } % UTAH
+{ % return with stack untouched
+ lccn empty.or.unknown
+ { }
+ { "\showLCCN{" lccn * "}" * writeln }
+ if$
+}
+
+FUNCTION { output.note } % UTAH
+{ % return with stack empty
+ note empty.or.unknown
+ { }
+ { "\shownote{" note add.period$ * "}" * writeln }
+ if$
+}
+
+FUNCTION { output.note.check } % UTAH
+{ % return with stack empty
+ note empty.or.unknown
+ { "empty note in " cite$ * warning$ }
+ { "\shownote{" note add.period$ * "}" * writeln }
+ if$
+}
+
+
+%
+% Changes by BV 2011/04/15. Do not output
+% url if doi is defined
+%
+FUNCTION { output.url } % UTAH
+{ % return with stack untouched
+ % output URL and associated lastaccessed fields
+ doi empty.or.unknown
+ {
+ url empty.or.unknown
+ { }
+ {
+ %% NB: We want URLs at beginning of line to reduce likelihood of
+ %% BibTeX's nasty line wrapping after column 79, which would require
+ %% manual (or automated) editing of the .bbl file to repair. However,
+ %% the \url{} macro handles the unwrapping job automatically.
+ "\showURL{%" writeln
+ lastaccessed empty.or.unknown
+ { "" }
+ { "Retrieved " lastaccessed * " from " * }
+ if$
+
+ %% The URL field may contain a semicolon-separated list of Web
+ %% addresses, and we locate and wrap each of them in \url{...}.
+ %% The simplistic approach of putting the entire list into the
+ %% macro argument is that the semicolons are typeset in a
+ %% typewriter font, and no space follows them.
+ %%
+ %% We therefore replace the original code
+ %% "\url{" * url * "}}" * writeln
+ %% with this character-at-a-time loop:
+
+ "\url{" *
+
+ url 't := % get modifiable copy of URL list
+
+ { t text.length$ }
+ {
+ t #1 #1 substring$ ";" =
+ { % then split argument at separator
+ "};" * writeln
+ "\url{"
+ }
+ { % else concatenate nonblank character to argument
+ t #1 #1 substring$ " " =
+ { }
+ { t #1 #1 substring$ * }
+ if$
+ }
+ if$
+
+ t #2 t text.length$ #1 - substring$ 't :=
+ }
+ while$
+
+ "}}" * writeln
+ }
+ if$
+ }
+ { }
+ if$
+}
+
+FUNCTION { output.year.check }
+{ % warn if year empty, else output top string and leave " YEAR<label>" on stack in mid-sentence
+ year empty.or.unknown
+ { "empty year in " cite$ * warning$ }
+ { write$
+ " " year * extra.label *
+ mid.sentence 'output.state :=
+ }
+ if$
+}
+
+FUNCTION { not }
+{
+ { #0 }
+ { #1 }
+ if$
+}
+
+FUNCTION { and }
+{
+ 'skip$
+ { pop$ #0 }
+ if$
+}
+
+FUNCTION { or }
+{
+ { pop$ #1 }
+ 'skip$
+ if$
+}
+
+FUNCTION { le }
+{
+ %% test whether first number is less than or equal to second number
+ %% stack in: n1 n2
+ %% stack out: if n1 <= n2 then 1 else 0
+
+ %% "DEBUG: le " cite$ * warning$
+ > { #0 } { #1 } if$
+}
+
+FUNCTION { ge }
+{
+ %% test whether first number is greater than or equal to second number
+ %% stack in: n1 n2
+ %% stack out: if n1 >= n2 then 1 else 0
+
+ %% "DEBUG: ge " cite$ * warning$
+ < { #0 } { #1 } if$
+}
+
+FUNCTION { is.leading.digit }
+{
+ %% test whether first character of string is a digit
+ %% stack in: string
+ %% stack out: if first-char-is-digit then 1 else 0
+
+ #1 #1 substring$ % replace string by string[1:1]
+ duplicate$ % string[1:1] string[1:1]
+ chr.to.int$
+ "0" chr.to.int$ swap$ le % "0" <= string[1:1] --> 0-or-1
+ swap$ % 0-or-1 string[1:1]
+ chr.to.int$
+ "9" chr.to.int$ le % string[1:1} <= "9" --> 0-or-1
+ and
+}
+
+FUNCTION { skip.digits }
+{
+ %% skip over leading digits in string
+ %% stack in: string
+ %% stack out: rest-of-string leading-digits
+
+ duplicate$
+ 't :=
+ 't.org :=
+ "" 'u :=
+
+ { t text.length$ }
+ {
+ %% "=================DEBUG: skip.digits t = [" t * "]" * warning$
+ t is.leading.digit
+ { t #2 t text.length$ #1 - substring$ }
+ {
+ t 'u :=
+ ""
+ }
+ if$
+ 't :=
+ }
+ while$
+
+ u % rest of string
+ t.org #1 t.org text.length$ u text.length$ - substring$ % leading digits
+}
+
+FUNCTION { skip.nondigits }
+{
+ %% skip over leading nondigits in string
+ %% stack in: string
+ %% stack out: rest-of-string
+
+ 't :=
+ "" 'u :=
+
+ { t text.length$ }
+ {
+ t is.leading.digit
+ {
+ t 'u :=
+ ""
+ }
+ { t #2 t text.length$ #1 - substring$ }
+ if$
+ 't :=
+ }
+ while$
+
+ u % rest of string
+}
+
+FUNCTION { parse.next.number }
+{
+ %% stack in: string
+ %% stack out: rest-of-string next-numeric-part-of-string
+ %% Example:
+ %% stack in: "123:1--123:59"
+ %% stack out: ":1--123:59" "123"
+
+ 's :=
+ s skip.nondigits 's :=
+ s skip.digits
+}
+
+FUNCTION { reduce.pages.to.page.count }
+{
+ %% Stack in: arbitrary-and-unused
+ %% Stack out: unchanged
+ %%
+ %% For the new-style pagination with article number and numpages or
+ %% pages, we expect to have BibTeX entries containing something like
+ %% articleno = "17",
+ %% pages = "1--23",
+ %% with output "Article 17, 23 pages",
+ %% or
+ %% articleno = "17",
+ %% numpages = "23",
+ %% with output "Article 17, 23 pages",
+ %% or
+ %% articleno = "17",
+ %% pages = "17:1--17:23",
+ %% with output "Article 17, 23 pages",
+ %%
+ %% If articleno is missing or empty, then we should output "1--23",
+ %% "23" (with a warning of a missing articleno), or "17:1--17:23",
+ %% respectively.
+
+ %% "DEBUG: enter reduce.pages.to.page.count " cite$ * warning$
+
+ %% "DEBUG: pages = [" pages * "]" * warning$
+
+ pages
+ parse.next.number 'p1 :=
+ parse.next.number 'p2 :=
+ parse.next.number 'p3 :=
+ parse.next.number 'page.count :=
+
+ duplicate$
+ empty.or.unknown
+ { }
+ {
+ duplicate$ "unexpected trailing garbage [" swap$ *
+ "] after n:p1--n:p2 in pages = [" *
+ pages *
+ "] in " *
+ cite$ *
+ warning$
+ }
+ if$
+
+ pop$
+
+ %% "DEBUG: reduce.pages.to.page.count: "
+ %% " p1 = " p1 * *
+ %% " p2 = " p2 * *
+ %% " p3 = " p3 * *
+ %% " p4 = " page.count * *
+ %% " in " cite$ * * warning$
+
+ p1 p3 = p2 "1" = and numpages empty.or.unknown and
+ { "INFO: reduced pages = [" pages * "] to numpages = [" * page.count * "]" * warning$ }
+ {
+ numpages empty.or.unknown
+ { pages }
+ { numpages }
+ if$
+ 'page.count :=
+ }
+ if$
+
+ p1 "1" = p3 empty.or.unknown and numpages empty.or.unknown and
+ {
+ p2 'page.count :=
+ "INFO: reduced pages = [" pages * "] to numpages = [" * page.count * "]" * warning$
+ }
+ {
+ numpages empty.or.unknown
+ { pages }
+ { numpages }
+ if$
+ 'page.count :=
+ }
+ if$
+
+ %% "DEBUG: leave reduce.pages.to.page.count " cite$ * warning$
+}
+
+FUNCTION { new.block.checkb }
+{ % issue a new.block only if at least one of top two stack strings is not empty
+ empty.or.unknown
+ swap$ empty.or.unknown
+ and
+ 'skip$
+ 'new.block
+ if$
+}
+
+FUNCTION { field.or.null }
+{ % convert empty value to null string, else return value
+ duplicate$ empty.or.unknown
+ { pop$ "" }
+ 'skip$
+ if$
+}
+
+FUNCTION { emphasize }
+{ % emphasize a non-empty top string on the stack (WITHOUT italic correction)
+ duplicate$ empty.or.unknown
+ { pop$ "" }
+ { "{\em " swap$ * "}" * }
+ if$
+}
+
+FUNCTION { emphasize.with.italic.correction }
+{ % convert empty string to null string, or emphasize with a trailing italic correction
+ duplicate$ empty.or.unknown
+ { pop$ "" }
+ { "{\em " swap$ * "\/}" * }
+ if$
+}
+
+FUNCTION { comma }
+{ % convert empty string to null string, or brace string and add trailing comma
+ duplicate$ empty.or.unknown
+ { pop$ "" }
+ { "{" swap$ * "}," * }
+ if$
+}
+
+FUNCTION { format.names }
+{
+ % Format bibliographical entries with the first author last name first,
+ % and subsequent authors with initials followed by last name.
+ % All names are formatted in this routine.
+
+ 's :=
+ #1 'nameptr := % nameptr = 1;
+ s num.names$ 'numnames := % numnames = num.name$(s);
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { nameptr #1 =
+ %NO: BAD ORDER: {"{" s nameptr "{ff~}{ll}{, jj}{, vv}" format.name$ * "}" * 't := }
+ %NO: BAD ORDER: {"{" s nameptr "{ff~}{ll}{, jj}{, vv}" format.name$ * "}" * 't := }
+ {"{" s nameptr "{f. }{vv }{ll}{, jj}" format.name$ * "}" * 't := }
+ {"{" s nameptr "{f. }{vv }{ll}{, jj}" format.name$ * "}" * 't := }
+ if$
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "others" =
+ { " {et~al\mbox{.}}" * } % jrh: avoid spacing problems
+ { " {and} " * t * } % from Chicago Manual of Style
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr := % nameptr += 1;
+ namesleft #1 - 'namesleft := % namesleft =- 1;
+ }
+ while$
+}
+
+FUNCTION { my.full.label }
+{
+ 's :=
+ #1 'nameptr := % nameptr = 1;
+ s num.names$ 'numnames := % numnames = num.name$(s);
+ numnames 'namesleft :=
+ { namesleft #0 > }
+
+ { s nameptr "{vv~}{ll}" format.name$ 't := % get the next name
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "others" =
+ { " et~al\mbox{.}" * } % jrh: avoid spacing problems
+ { " and " * t * } % from Chicago Manual of Style
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr := % nameptr += 1;
+ namesleft #1 - 'namesleft := % namesleft =- 1;
+ }
+ while$
+
+}
+
+FUNCTION { format.names.fml }
+{
+ % Format names in "familiar" format, with first initial followed by
+ % last name. Like format.names, ALL names are formatted.
+ % jtb: The names are NOT put in small caps
+
+ 's :=
+ #1 'nameptr := % nameptr = 1;
+ s num.names$ 'numnames := % numnames = num.name$(s);
+ numnames 'namesleft :=
+ { namesleft #0 > }
+
+ {
+ "{" s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ * "}" * 't :=
+
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "{others}" =
+ { " {et~al\mbox{.}}" * }
+ { " {and} " * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr := % nameptr += 1;
+ namesleft #1 - 'namesleft := % namesleft =- 1;
+ }
+ while$
+}
+
+FUNCTION { format.authors }
+{
+ author empty.or.unknown
+ { "" }
+ { author format.names add.period$} % jtb: add period if none before
+ if$
+}
+
+FUNCTION { format.key }
+{
+ empty.or.unknown
+ { key field.or.null }
+ { "" }
+ if$
+}
+
+FUNCTION { format.no.key }
+{
+ empty.or.unknown
+ { "" }
+ { "" }
+ if$
+}
+
+FUNCTION { format.editors.fml }
+{
+ % Format editor names for use in the "in" types: inbook, incollection,
+ % inproceedings: first initial, then last names. When editors are the
+ % LABEL for an entry, then format.editor is used which lists editors
+ % by last name first.
+
+ editor empty.or.unknown
+ { "" }
+ {
+ editor format.names.fml editor num.names$ #1 >
+ { " (Eds.)" * }
+ { " (Ed.)" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.editors }
+{ % format editor names for use in labels, last names first.
+ editor empty.or.unknown
+ { "" }
+ {
+ editor format.names
+ editor num.names$ #1 >
+ { " (Eds.)." * }
+ { " (Ed.)." * }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.articletitle }
+{
+ title empty.or.unknown
+ { "" }
+ % Use this to preserve lettercase in titles:
+ { "\showarticletitle{" title * "}" * }
+ % Use this for downcase title style:
+ % { \showarticletitle{" title "t" change.case$ * "}" * }
+ if$
+}
+
+FUNCTION { format.title }
+{
+ title empty.or.unknown
+ { "" }
+ % Use this to preserve lettercase in titles:
+ { title }
+ % Use this for downcase title style:
+ % { title "t" change.case$ }
+ if$
+}
+
+FUNCTION { n.dashify }
+{
+ 't :=
+ ""
+ { t empty.or.unknown not }
+ {
+ t #1 #1 substring$ "-" =
+ {
+ t #1 #2 substring$ "--" = not
+ { "--" *
+ t #2 global.max$ substring$ 't :=
+ }
+ {
+ { t #1 #1 substring$ "-" = }
+ {
+ "-" *
+ t #2 global.max$ substring$ 't :=
+ }
+ while$
+ }
+ if$
+ }
+ {
+ t #1 #1 substring$ *
+ t #2 global.max$ substring$ 't :=
+ }
+ if$
+ }
+ while$
+}
+
+FUNCTION { format.btitle }
+{
+ edition empty.or.unknown
+ { title emphasize }
+ { title empty.or.unknown
+ { title emphasize } % jtb: what is this supposed to do ?!?
+ { "{\em " title * "\/} (" * edition "l" change.case$ * " ed.)" * } % jtb: no parens for ed.
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.emphasize.booktitle }
+{ % push "" or "{\em booktitle}" or "{\em booktitle}, (second ed.)" on stack
+ edition empty.or.unknown
+ { booktitle emphasize }
+ { booktitle empty.or.unknown
+ { "" }
+ { "{\em " booktitle * "} (" * edition "l" change.case$ * " ed.)" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.city }
+{
+ % jtb: if the preceding string (the title of the conference) is non-empty,
+ % jtb: append the location, otherwise leave empty (so as to trigger the
+ % jtb: error message in output.check
+
+ duplicate$ empty.or.unknown
+ { }
+ {
+ city empty.or.unknown
+ {
+ date empty.or.unknown
+ { }
+ { " (" * date * ")" * }
+ if$
+ }
+ {
+ date empty.or.unknown
+ { " (" * city * ")" * }
+ { " (" * city * ", " * date * ")" * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION { tie.or.space.connect }
+{
+ duplicate$ text.length$ #3 <
+ { "~" }
+ { " " }
+ if$
+ swap$ * *
+}
+
+FUNCTION { either.or.check }
+{
+ empty.or.unknown
+ 'pop$
+ { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+ if$
+}
+
+FUNCTION { format.bvolume }
+{
+ % jtb: If there is a series, this is added and the volume trails after it.
+ % jtb: Otherwise, "Vol" is Capitalized.
+
+ volume empty.or.unknown
+ { "" }
+ {
+ series empty.or.unknown
+ { "Vol." volume tie.or.space.connect}
+ { series ", " * "Vol." volume tie.or.space.connect *}
+ if$
+ "volume and number" number either.or.check
+ }
+ if$
+}
+
+FUNCTION { format.bvolume.noseries }
+{
+ volume empty.or.unknown
+ { "" }
+ {
+ series empty.or.unknown
+ { "Vol." volume tie.or.space.connect}
+ { "Vol." volume tie.or.space.connect}
+% { series ", " * "Vol." volume tie.or.space.connect *}
+ if$
+ "volume and number" number either.or.check
+ }
+ if$
+}
+
+FUNCTION { format.series }
+{
+ series empty.or.unknown
+ {""}
+ {" {\em (" * series ")}" *}
+ if$
+}
+
+FUNCTION { format.number.series }
+{
+ volume empty.or.unknown
+ {
+ number empty.or.unknown
+ {
+ volume empty.or.unknown
+ { "" }
+ {
+ series empty.or.unknown
+ { "" }
+ { " (" series * ")" * }
+ if$
+ }
+ if$
+ } % { series field.or.null }
+ {
+ output.state mid.sentence =
+ { "Number" } % gnp - changed to mixed case always
+ { "Number" }
+ if$
+ number tie.or.space.connect series empty.or.unknown
+ { "there's a number but no series in " cite$ * warning$ }
+ { " in " * series * }
+ if$
+ }
+ if$
+ }
+ {
+ ""
+ }
+ if$
+}
+
+FUNCTION { multi.page.check }
+{
+ 't :=
+ #0 'multiresult :=
+ { multiresult not
+ t empty.or.unknown not
+ and
+ }
+ { t #1 #1 substring$
+ duplicate$ "-" =
+ swap$ duplicate$ "," =
+ swap$ "+" =
+ or or
+ { #1 'multiresult := }
+ { t #2 global.max$ substring$ 't := }
+ if$
+ }
+ while$
+ multiresult
+}
+
+FUNCTION { format.pages }
+{
+ pages empty.or.unknown
+ { "" }
+ {
+ pages multi.page.check
+ { pages n.dashify } % gnp - removed () % jtb: removed pp.
+ { pages }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.pages.check.without.articleno }
+{ %% format pages field only if articleno is absent
+ %% Stack out: pages-specification
+ numpages missing$ pages missing$ and
+ { "page numbers missing in both pages and numpages fields in " cite$ * warning$ }
+ { }
+ if$
+
+ articleno empty.or.unknown
+ {
+ pages missing$
+ { numpages }
+ { format.pages }
+ if$
+ }
+ { "" }
+ if$
+}
+
+FUNCTION { format.pages.check }
+{
+ pages empty.or.unknown
+ { "page numbers missing in " cite$ * warning$ "" }
+ { pages n.dashify }
+ if$
+}
+
+FUNCTION { format.bookpages }
+{
+ bookpages empty.or.unknown
+ { "" }
+ { bookpages "book pages" tie.or.space.connect }
+ if$
+}
+
+FUNCTION { format.named.pages }
+{
+ pages empty.or.unknown
+ { "" }
+ { format.pages "pages" tie.or.space.connect }
+ if$
+}
+
+%
+% Changed by Boris Veytsman, 2011-03-13
+% Now the word "pages" is printed even if
+% there field pages is not empty.
+%
+
+FUNCTION { format.page.count }
+{
+ page.count empty.or.unknown
+ { "" }
+ {
+ articleno empty.or.unknown
+ { "numpages field, but no articleno field, in " cite$ * warning$ }
+ { }
+ if$
+ page.count "pages" tie.or.space.connect
+ }
+ if$
+}
+
+FUNCTION { format.articleno.numpages }
+{
+ %% There are seven possible outputs, depending on which fields are set.
+ %%
+ %% These four are handled here:
+ %%
+ %% articleno, numpages, pages -> "Article articleno-value, numpages-value pages"
+ %% articleno, numpages -> "Article articleno-value, numpages-value pages"
+ %% articleno, pages -> "Article articleno-value, reduced-pages-value pages"
+ %% articleno -> "Article articleno-value" and warn about missing numpages
+ %%
+ %% The remaining three have already been handled by
+ %% format.pages.check.without.articleno:
+ %%
+ %% numpages, pages -> "pages-value"
+ %% numpages -> "numpages-value"
+ %% pages -> "pages-value"
+
+ articleno empty.or.unknown
+ {
+ numpages empty.or.unknown
+ { }
+ { "require articleno with numpages field in " cite$ * warning$ }
+ if$
+ ""
+ }
+ {
+ numpages empty.or.unknown
+ {
+ pages empty.or.unknown
+ {
+ "require pages or numpages fields with articleno field in " cite$ * warning$
+ "" 'page.count :=
+ }
+ { reduce.pages.to.page.count }
+ if$
+ }
+ { numpages 'page.count := }
+ if$
+
+ %% The Article number is now handled in format.day.month.year because
+ %% ACM prefers the style "Digital Libraries 12, 3, Article 5 (July 2008)"
+ %% over "Digital Libraries 12, 3 (July 2008), Article 5"
+ %% format.articleno output
+ format.page.count
+ }
+ if$
+}
+
+FUNCTION { format.journal.volume.number.day.month.year }
+{
+ % By Young (and Spencer)
+ % GNP - fixed bugs with missing volume, number, and/or pages
+ %
+ % Format journal, volume, number, pages for article types.
+ %
+ journal empty.or.unknown
+ { "no journal in " cite$ * warning$
+ "" }
+% { journal emphasize.with.italic.correction }
+ {
+ journal "Journal of the ACM" =
+ { "{\it J. ACM}" }
+ {
+ journal "American Mathematical Society Translations" =
+ { "{\it Amer. Math. Soc. Transl.}" }
+ {
+ journal "Bulletin of the American Mathematical Society" =
+ { "{\it Bull. Amer. Math. Soc.}" }
+ {
+ journal "Proceedings of the American Mathematical Society" =
+ { "{\it Proc. Amer. Math. Soc.}" }
+ {
+ journal "Transactions of the American Mathematical Society" =
+ { "{\it Trans. Amer. Math. Soc.}" }
+ {
+ journal "Communications of the {ACM}" =
+ { "{\it Commun. {ACM}}" }
+ {
+ journal "{ACM} Computing Surveys" =
+ { "{\it Comput. Surveys}" }
+ {
+ journal "{ACM} Transactions on Mathematical Software" =
+ { "{\it {ACM} Trans. Math. Software}" }
+ {
+ journal "{ACM} {SIGNUM} Newsletter" =
+ { "{\it {ACM} {SIGNUM} Newslett.}" }
+ {
+ journal "American Journal of Sociology" =
+ { "{\it Amer. J. Sociology}" }
+ {
+ journal "Journal of the American Statistical Association" =
+ { "{\it J. Amer. Statist. Assoc.}" }
+ {
+ journal "Applied Mathematics and Computation" =
+ { "{\it Appl. Math. Comput.}" }
+ {
+ journal "American Mathematical Monthly" =
+ { "{\it Amer. Math. Monthly}" }
+ {
+ journal "British Journal of Mathematical and Statistical Psychology" =
+ { "{\it Brit. J. Math. Statist. Psych.}" }
+ {
+ journal "Canadian Mathematical Bulletin" =
+ { "{\it Canad. Math. Bull.}" }
+ {
+ journal "Journal of Computational and Applied Mathematics" =
+ { "{\it J. Comput. Appl. Math.}" }
+ {
+ journal "Journal of Computational Physics" =
+ { "{\it J. Comput. Phys.}" }
+ {
+ journal "Computers and Structures" =
+ { "{\it Comput. \& Structures}" }
+ {
+ journal "The Computer Journal" =
+ { "{\it Comput. J.}" }
+ {
+ journal "Journal of Computer and System Sciences" =
+ { "{\it J. Comput. System Sci.}" }
+ {
+ journal "Contemporary Mathematics" =
+ { "{\it Contemp. Math.}" }
+ {
+ journal "Crelle's Journal" =
+ { "{\it Crelle's J.}" }
+ {
+ journal "Giornale di Mathematiche" =
+ { "{\it Giorn. Mat.}" }
+ {
+ journal "{IEEE} Transactions on Computers" =
+ { "{\it {IEEE} Trans. Comput.}" }
+ {
+ journal "{IEEE} Transactions on Automatic Control" =
+ { "{\it {IEEE} Trans. Automat. Control}" }
+ {
+ journal "Proceedings of the {IEEE}" =
+ { "{\it Proc. {IEEE}}" }
+ {
+ journal "{IEEE} Transactions on Aerospace and Electronic Systems" =
+ { "{\it {IEEE} Trans. Aerospace Electron. Systems}" }
+ {
+ journal "{IMA} Journal of Numerical Analysis" =
+ { "{\it {IMA} J. Numer. Anal.}" }
+ {
+ journal "Information Processing Letters" =
+ { "{\it Inform. Process. Lett.}" }
+ {
+ journal "Journal of the Institute of Mathematics and its Applications" =
+ { "{\it J. Inst. Math. Appl.}" }
+ {
+ journal "International Journal of Control" =
+ { "{\it Internat. J. Control}" }
+ {
+ journal "International Journal for Numerical Methods in Engineering" =
+ { "{\it Internat. J. Numer. Methods Engrg.}" }
+ {
+ journal "International Journal of Supercomputing Applications" =
+ { "{\it Internat. J. Supercomputing Applic.}" }
+ {
+ journal "Journal of Research of the National Bureau of Standards" =
+ { "{\it J. Res. Nat. Bur. Standards}" }
+ {
+ journal "Linear Algebra and its Applications" =
+ { "{\it Linear Algebra Appl.}" }
+ {
+ journal "Journal of Mathematical Analysis and Applications" =
+ { "{\it J. Math. Anal. Appl.}" }
+ {
+ journal "Mathematische Annalen" =
+ { "{\it Math. Ann.}" }
+ {
+ journal "Journal of Mathematical Physics" =
+ { "{\it J. Math. Phys.}" }
+ {
+ journal "Mathematics of Computation" =
+ { "{\it Math. Comp.}" }
+ {
+ journal "Mathematica Scandinavica" =
+ { "{\it Math. Scand.}" }
+ {
+ journal "Mathematical Tables and Other Aids to Computation" =
+ { "{\it Math. Tables Aids Comput.}" }
+ {
+ journal "Numerische Mathematik" =
+ { "{\it Numer. Math.}" }
+ {
+ journal "Pacific Journal of Mathematics" =
+ { "{\it Pacific J. Math.}" }
+ {
+ journal "Journal of Parallel and Distributed Computing" =
+ { "{\it J. Parallel and Distrib. Comput.}" }
+ {
+ journal "Parallel Computing" =
+ { "{\it Parallel Comput.}" }
+ {
+ journal "Philosophical Magazine" =
+ { "{\it Philos. Mag.}" }
+ {
+ journal "Proceedings of the National Academy of Sciences of the USA" =
+ { "{\it Proc. Nat. Acad. Sci. U. S. A.}" }
+ {
+ journal "Quarterly Journal of Mathematics, Oxford, Series (2)" =
+ { "{\it Quart. J. Math. Oxford Ser. (2)}" }
+ {
+ journal "Quarterly of Applied Mathematics" =
+ { "{\it Quart. Appl. Math.}" }
+ {
+ journal "Review of the International Statisical Institute" =
+ { "{\it Rev. Inst. Internat. Statist.}" }
+ {
+ journal "Journal of the Society for Industrial and Applied Mathematics" =
+ { "{\it J. Soc. Indust. Appl. Math.}" }
+ {
+ journal "Journal of the Society for Industrial and Applied Mathematics, Series B, Numerical Analysis" =
+ { "{\it J. Soc. Indust. Appl. Math. Ser. B Numer. Anal.}" }
+ {
+ journal "{SIAM} Journal on Algebraic and Discrete Methods" =
+ { "{\it {SIAM} J. Algebraic Discrete Methods}" }
+ {
+ journal "{SIAM} Journal on Applied Mathematics" =
+ { "{\it {SIAM} J. Appl. Math.}" }
+ {
+ journal "{SIAM} Journal on Computing" =
+ { "{\it {SIAM} J. Comput.}" }
+ {
+ journal "{SIAM} Journal on Matrix Analysis and Applications" =
+ { "{\it {SIAM} J. Matrix Anal. Appl.}" }
+ {
+ journal "{SIAM} Journal on Numerical Analysis" =
+ { "{\it {SIAM} J. Numer. Anal.}" }
+ {
+ journal "{SIAM} Review" =
+ { "{\it {SIAM} Rev.}" }
+ {
+ journal "{SIAM} Journal on Scientific and Statistical Computing" =
+ { "{\it {SIAM} J. Sci. Statist. Comput.}" }
+ {
+ journal "Software Practice and Experience" =
+ { "{\it Software Prac. Experience}" }
+ {
+ journal "Statistical Science" =
+ { "{\it Statist. Sci.}" }
+ {
+ journal "{USSR} Computational Mathematics and Mathematical Physics" =
+ { "{\it {U. S. S. R.} Comput. Math. and Math. Phys.}" }
+ {
+ journal "Journal of {VLSI} and Computer Systems" =
+ { "{\it J. {VLSI} Comput. Syst.}" }
+ {
+ journal "Zeitschrift fur Angewandte Mathematik und Mechanik" =
+ { "{\it Z. Angew. Math. Mech.}" }
+ {
+ journal "Zeitschrift fur Angewandte Mathematik und Physik" =
+ { "{\it Z. Angew. Math. Phys.}" }
+ {
+ journal "ACM Computing Surveys" =
+ { "{\it Comput. Surveys}" }
+ {
+ journal "ACM Transactions on Mathematical Software" =
+ { "{\it ACM Trans. Math. Software}" }
+ {
+ journal "ACM {SIGNUM} Newsletter" =
+ { "{\it ACM {SIGNUM} Newslett.}" }
+ {
+ journal "IEEE Transactions on Computers" =
+ { "{\it IEEE Trans. Comput.}" }
+ {
+ journal "IEEE Transactions on Automatic Control" =
+ { "{\it IEEE Trans. Automat. Control}" }
+ {
+ journal "Proceedings of the IEEE" =
+ { "{\it Proc. IEEE}" }
+ {
+ journal "IEEE Transactions on Aerospace and Electronic Systems" =
+ { "{\it IEEE Trans. Aerospace Electron. Systems}" }
+ {
+ journal "IMA Journal of Numerical Analysis" =
+ { "{\it IMA J. Numer. Anal.}" }
+ {
+ journal "SIAM Journal on Algebraic and Discrete Methods" =
+ { "{\it SIAM J. Algebraic Discrete Methods}" }
+ {
+ journal "SIAM Journal on Applied Mathematics" =
+ { "{\it SIAM J. Appl. Math.}" }
+ {
+ journal "SIAM Journal on Computing" =
+ { "{\it SIAM J. Comput.}" }
+ {
+ journal "SIAM Journal on Matrix Analysis and Applications" =
+ { "{\it SIAM J. Matrix Anal. Appl.}" }
+ {
+ journal "SIAM Journal on Numerical Analysis" =
+ { "{\it SIAM J. Numer. Anal.}" }
+ {
+ journal "SIAM Review" =
+ { "{\it SIAM Rev.}" }
+ {
+ journal "SIAM Journal on Scientific and Statistical Computing" =
+ { "{\it SIAM J. Sci. Statist. Comput.}" }
+ {
+ journal "USSR Computational Mathematics and Mathematical Physics" =
+ { "{\it U. S. S. R. Comput. Math. and Math. Phys.}" }
+ {
+ journal "Journal of VLSI and Computer Systems" =
+ { "{\it J. VLSI Comput. Syst.}" }
+ {
+ journal "Communications of the ACM" =
+ { "{\it Commun. ACM}" }
+ %% If no match with cases needing special handling, just output journal name
+ { journal emphasize.with.italic.correction }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+
+ number empty.or.unknown
+ {
+ volume empty.or.unknown
+ { "no number and no volume in " cite$ * warning$ "" * }
+ { " " * " {" * volume * "}" * }
+ if$
+ }
+ {
+ volume empty.or.unknown
+ {
+ "unusual to have number, but no volume, for " cite$ * warning$
+ " " * number *
+ }
+ { " " * volume comma " " * number * * }
+ if$
+ }
+ if$
+
+ format.day.month.year *
+}
+
+FUNCTION { format.chapter.pages }
+{
+ chapter empty.or.unknown
+ 'format.pages
+ { type empty.or.unknown
+ { "Chapter" } % gnp - changed to mixed case
+ { type "t" change.case$ }
+ if$
+ chapter tie.or.space.connect
+ pages empty.or.unknown
+ {"page numbers missing in " cite$ * warning$} % gnp - added check
+ { ", " * format.pages * }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.in.emphasize.booktitle }
+{ % jtb: format for collections or proceedings not appearing in a journal
+ booktitle empty.or.unknown
+ { "" }
+ { "In " format.emphasize.booktitle * }
+ if$
+}
+
+FUNCTION { format.in.booktitle }
+{ % jtb: format for proceedings appearing in a journal
+ booktitle empty.or.unknown
+ { "" }
+ { "In " booktitle * }
+ if$
+}
+
+FUNCTION { format.in.ed.booktitle }
+{
+ booktitle empty.or.unknown
+ { "" }
+ { editor empty.or.unknown
+ { "In " format.emphasize.booktitle * }
+ % jtb: swapped editor location
+ { "In " format.emphasize.booktitle * ", " * format.editors.fml * }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.thesis.type }
+{ % call with default type on stack top
+ type empty.or.unknown
+ 'skip$ % use default type
+ {
+ pop$ % discard default type
+ % NO: it is silly to have to brace protect every degree type!: type "t" change.case$
+ type
+ }
+ if$
+}
+
+FUNCTION { format.tr.number }
+{
+ type empty.or.unknown
+ { "Tech. Rep." }
+ 'type
+ if$
+ number empty.or.unknown
+ { "t" change.case$ }
+ %% LOOKS BAD: { "." * number tie.or.space.connect }
+ %% Prefer "Research report RJ687." to "Research report. RJ687."
+ { number tie.or.space.connect }
+ if$
+}
+
+FUNCTION { format.advisor }
+{
+ advisor empty.or.unknown
+ { "" }
+ { "Advisor(s) " advisor * }
+ if$
+}
+
+FUNCTION { format.article.crossref }
+{ "See"
+ "\cite{" * crossref * "}" *
+}
+
+FUNCTION { format.crossref.editor }
+{
+ editor #1 "{vv~}{ll}" format.name$
+ editor num.names$ duplicate$
+ #2 >
+ { pop$ " et~al\mbox{.}" * } % jrh: avoid spacing problems
+ { #2 <
+ 'skip$
+ { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { " et~al\mbox{.}" * } % jrh: avoid spacing problems
+ { " and " * editor #2 "{vv~}{ll}" format.name$ * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.book.crossref }
+{
+ volume empty.or.unknown
+ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+ "In "
+ }
+ { "Volume" volume tie.or.space.connect % gnp - changed to mixed case
+ " of " *
+ }
+ if$
+ editor empty.or.unknown
+ editor field.or.null author field.or.null =
+ or
+ { key empty.or.unknown
+ { series empty.or.unknown
+ { "need editor, key, or series for " cite$ * " to crossref " *
+ crossref * warning$
+ "" *
+ }
+ { "{\em " * series * "\/}" * }
+ if$
+ }
+ { key * }
+ if$
+ }
+ { format.crossref.editor * }
+ if$
+ " \cite{" * crossref * "}" *
+}
+
+FUNCTION { format.incoll.inproc.crossref }
+{ "See"
+ " \cite{" * crossref * "}" *
+}
+
+FUNCTION { format.lab.names }
+{
+ % format.lab.names:
+ %
+ % determines "short" names for the abbreviated author information.
+ % "Long" labels are created in calc.label, using the routine my.full.label
+ % to format author and editor fields.
+ %
+ % There are 4 cases for labels. (n=3 in the example)
+ % a) one author Foo
+ % b) one to n Foo, Bar and Baz
+ % c) use of "and others" Foo, Bar et al.
+ % d) more than n Foo et al.
+
+ 's :=
+ s num.names$ 'numnames :=
+ numnames #2 > % change number to number of others allowed before
+ % forcing "et al".
+ { s #1 "{vv~}{ll}" format.name$ " et~al\mbox{.}" * } % jrh: \mbox{} added
+ {
+ numnames #1 - 'namesleft :=
+ #2 'nameptr :=
+ s #1 "{vv~}{ll}" format.name$
+ { namesleft #0 > }
+ { nameptr numnames =
+ { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { " et~al\mbox{.}" * } % jrh: avoid spacing problems
+ { " and " * s nameptr "{vv~}{ll}" format.name$ * }
+ if$
+ }
+ { ", " * s nameptr "{vv~}{ll}" format.name$ * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+ }
+ if$
+}
+
+FUNCTION { author.key.label }
+{
+ author empty.or.unknown
+ { key empty.or.unknown
+ { "no key, author in " cite$ * warning$
+ cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION { author.key.organization.label }
+{ % added - gnp. Provide label formatting by organization if author is null.
+ author empty.or.unknown
+ { organization empty.or.unknown
+ { key empty.or.unknown
+ { "no key, author or organization in " cite$ * warning$
+ cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { organization }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION { editor.key.organization.label }
+{ % added - gnp. Provide label formatting by organization if editor is null.
+ editor empty.or.unknown
+ { organization empty.or.unknown
+ { key empty.or.unknown
+ { "no key, editor or organization in " cite$ * warning$
+ cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { organization }
+ if$
+ }
+ { editor format.lab.names }
+ if$
+}
+
+FUNCTION { author.editor.key.label }
+{
+ author empty.or.unknown
+ { editor empty.or.unknown
+ { key empty.or.unknown
+ { "no key, author, or editor in " cite$ * warning$
+ cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.lab.names }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION { calc.label }
+{
+ % Changed - GNP. See also author.organization.sort, editor.organization.sort
+ % Form label for BibTeX entry. The classification of which fields are used
+ % for which type of entry (book, inbook, etc.) are taken from alpha.bst.
+ % The change here from newapa is to also include organization as a
+ % citation label if author or editor is missing.
+
+ type$ "book" =
+ type$ "inbook" =
+ or
+ type$ "periodical" =
+ or
+ 'author.editor.key.label
+ { type$ "proceedings" =
+ 'editor.key.organization.label
+ { type$ "manual" =
+ 'author.key.organization.label
+ 'author.key.label
+ if$
+ }
+ if$
+ }
+ if$
+
+ author empty.or.unknown % generate the full label citation information.
+ {
+ editor empty.or.unknown
+ {
+ organization empty.or.unknown
+ {
+ key empty.or.unknown
+ {
+ "no author, editor, organization, or key in " cite$ * warning$
+ "??"
+ }
+ { key }
+ if$
+ }
+ { organization }
+ if$
+ }
+ { editor my.full.label }
+ if$
+ }
+ { author my.full.label }
+ if$
+
+ % leave label on the stack, to be popped when required.
+
+ "}{" * swap$ * "}{" *
+ % year field.or.null purify$ #-1 #4 substring$ *
+ %
+ % save the year for sort processing afterwards (adding a, b, c, etc.)
+ %
+ year field.or.null purify$ #-1 #4 substring$
+ 'label.year :=
+}
+
+FUNCTION { output.bibitem }
+{
+ newline$
+ %% acmtrans.bst alphanumeric style:
+ %%: "\bibitem[\protect\citeauthoryear{" write$
+ %%: calc.label write$
+ %%: sort.year write$
+ %%: "}]%" writeln
+ %%: " {" write$
+ %%: cite$ write$
+ %%: "}" writeln
+ %% acm-plain.bst numeric style:
+ newline$
+ "\bibitem{" write$
+ cite$ write$
+ "}" write$
+ newline$
+ ""
+ before.all 'output.state :=
+}
+
+FUNCTION { output.issue.doi.coden.isxn.lccn.url }
+{ % enter and return with stack empty
+ %% We switch now from buffered output to output of complete lines, so
+ %% that the Issue .. URL data have their own lines, and are less likely
+ %% to be line-wrapped by BibTeX's short-sighted algorithm, which wraps
+ %% lines longer than 79 characters, backtracking to what it thinks is
+ %% a break point in the string. Any such wrapping MUST be undone to
+ %% prevent percent-newline from appearing in DOIs and URLs. The
+ %% output data are intentionally wrapped in \showxxx{} macros at
+ %% beginning of line, and that supply their own punctuation (if they
+ %% are not defined to suppress output entirely), to make it easier for
+ %% other software to recover them from .bbl files.
+ %%
+ %% It also makes it possible to later change the macro definitions
+ %% to suppress particular output values, or alter their appearance.
+ %%
+ %% Note that it is possible for theses, technical reports, and
+ %% manuals to have ISBNs, and anything that has an ISBN may also
+ %% have an ISSN. When there are no values for these keys, there
+ %% is no output generated for them here.
+
+ "\newblock" writeln
+ after.block 'output.state :=
+
+ output.issue
+ output.isbn
+ output.coden % CODEN is functionally like ISSN, so output them sequentially
+ output.issn
+ output.lccn
+ output.doi % DOI is ALWAYS last according to CrossRef DOI documentation
+ output.url % but ACM wants URL last
+}
+
+FUNCTION { output.issue.doi.coden.isxn.lccn.url.note }
+{ % enter with stack empty, return with empty string on stack
+ output.issue.doi.coden.isxn.lccn.url
+ note empty.or.unknown
+ { }
+ {
+ "\newblock" writeln
+ output.note
+ }
+ if$
+ ""
+}
+
+FUNCTION { output.issue.doi.coden.isxn.lccn.url.note.check }
+{ % enter with stack empty, return with empty string on stack
+ output.issue.doi.coden.isxn.lccn.url
+ note empty.or.unknown
+ { }
+ {
+ "\newblock" writeln
+ output.note.check
+ }
+ if$
+ ""
+}
+
+FUNCTION { article }
+{
+ output.bibitem
+
+ author empty.or.unknown
+ {
+ editor empty.or.unknown
+ { "neither author and editor supplied for " cite$ * warning$ }
+ { format.editors "editor" output.check }
+ if$
+ }
+ { format.authors "author" output.check }
+ if$
+
+ author format.no.key output % added
+ output.year.check % added
+ new.block
+ format.articletitle "title" output.check
+ new.block
+ howpublished output
+
+ crossref missing$
+ { format.journal.volume.number.day.month.year }
+ {
+ "cross reference in @Article{...} is unusual" warning$
+ format.article.crossref output.nonnull
+ }
+ if$
+ output
+
+ format.pages.check.without.articleno output
+ format.articleno.numpages output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { book }
+{
+ output.bibitem
+ author empty.or.unknown
+ { format.editors "author and editor" output.check }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ output.year.check % added
+ new.block
+ format.btitle "title" output.check
+ crossref missing$
+ { new.sentence % jtb: start a new sentence for series/volume
+ format.bvolume output
+ new.block
+ format.number.series output
+ new.sentence
+ publisher "publisher" output.check
+ address "address" output.check % jtb: require address
+ fin.sentence
+ pages empty.or.unknown
+ { format.bookpages } % use bookpages when pages empty
+ { format.pages.check "pages" tie.or.space.connect }
+ if$
+ output
+ }
+ { new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { booklet }
+{
+ output.bibitem
+ format.authors output
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.title "title" output.check
+ new.block
+ howpublished output
+ address output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { inbook }
+{
+ output.bibitem
+ author empty.or.unknown
+ { format.editors
+ "author and editor" output.check
+ }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ output.year.check % added
+ new.block
+ format.btitle "title" output.check
+ crossref missing$
+ { new.sentence % jtb: start a new sentence for series/volume
+ format.bvolume output
+ new.block
+ format.number.series output
+ new.sentence
+ publisher "publisher" output.check
+ address "address" output.check % jtb: require address
+ format.bookpages output
+ format.chapter.pages
+ "chapter and pages" output.check % jtb: moved from before publisher
+ }
+ {
+ format.bookpages output
+ format.chapter.pages "chapter and pages" output.check
+ new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { incollection }
+{
+ output.bibitem
+ format.authors "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.articletitle "title" output.check
+ new.block
+ crossref missing$
+ { format.in.ed.booktitle "booktitle" output.check
+ new.sentence % jtb: start a new sentence for series/volume
+ format.bvolume output
+ format.number.series output
+ new.sentence
+ publisher "publisher" output.check
+ address "address" output.check % jtb: require address
+ format.bookpages output
+ format.chapter.pages output % gnp - was special.output.nonnull
+ % left out comma before page numbers
+ % jtb: moved from before publisher
+ }
+ {
+ format.incoll.inproc.crossref output.nonnull
+ format.chapter.pages output
+ }
+ if$
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { inproceedings }
+{
+ output.bibitem
+ format.authors "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.articletitle "title" output.check
+ howpublished output.dot.space
+ crossref missing$
+ {
+ journal missing$ % jtb: proceedings appearing in journals
+ { format.in.emphasize.booktitle format.city "booktitle" output.check.dot.space
+ format.series output.removenospace
+ format.editors.fml output.dot.space
+ format.bvolume.noseries output
+ new.sentence
+ organization output
+ publisher "publisher" output.check % jtb: require publisher (?)
+ address "address" output.check % jtb: require address
+ format.bookpages output
+ }
+ {
+ format.in.booktitle format.city "booktitle" output.check
+ format.editors.fml output
+ new.sentence
+ format.journal.volume.number.day.month.year output
+ }
+ if$
+ format.articleno output
+ format.pages.check.without.articleno output
+ }
+ {
+ format.incoll.inproc.crossref output.nonnull
+ format.articleno output
+ format.pages.check.without.articleno output
+ }
+ if$
+ format.articleno.numpages output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { conference } { inproceedings }
+
+FUNCTION { manual }
+{
+ output.bibitem
+ author empty.or.unknown
+ { editor empty.or.unknown
+ { organization "organization" output.check
+ organization format.key output } % if all else fails, use key
+ { format.editors "author and editor" output.check }
+ if$
+ }
+ { format.authors output.nonnull }
+ if$
+ output.year.check % added
+ new.block
+ format.btitle "title" output.check
+ organization address new.block.checkb
+ % jtb: back to normal style: organization, address
+ organization "organization" output.check
+ address output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { mastersthesis }
+{
+ output.bibitem
+ format.authors "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.title emphasize "title" output.check % NB: ACM style requires emphasized thesis title
+ new.block
+ "M.S.\ thesis" format.thesis.type output.nonnull
+ school "school" output.check
+ address output
+ new.block
+ format.advisor output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { misc }
+{
+ output.bibitem
+ format.authors output
+ author format.key output % added
+ output.year.check % added
+ title howpublished new.block.checkb
+ format.title output
+ new.block
+ howpublished output
+ "" output.nonnull.dot.space
+ output.day.month.year
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { phdthesis }
+{
+ output.bibitem
+ format.authors "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.title emphasize "title" output.check % NB: ACM style requires emphasized thesis title
+ new.block
+ "Ph.D. thesis" format.thesis.type output.nonnull
+ school "school" output.check
+ address output
+ new.block
+ format.advisor output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION {format.date}
+{ year empty.or.unknown
+ { month empty.or.unknown
+ {
+ "" % output empty date if year/month both empty
+ day empty.or.unknown
+ { }
+ { "there's a day but no month or year in " cite$ * warning$ }
+ if$
+ }
+ { "there's a month but no year in " cite$ * warning$
+ month
+ day empty.or.unknown
+ { }
+ { " " * day * }
+ if$
+ }
+ if$
+ }
+ { month empty.or.unknown
+ {
+ year % output only year if month empty
+ day empty.or.unknown
+ { }
+ { "there's a day and year but no month in " cite$ * warning$ }
+ if$
+ }
+ {
+ month " " *
+ day empty.or.unknown
+ { }
+ { day * ", " * }
+ if$
+ year *
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {new.block.checka}
+{
+ empty.or.unknown
+ 'skip$
+ 'new.block
+ if$
+}
+
+FUNCTION { periodical }
+{
+ output.bibitem
+ editor empty.or.unknown
+ { organization output }
+ { format.editors output.nonnull }
+ if$
+ new.block
+ title emphasize "title" output.check
+ format.date output
+ new.sentence
+ publisher output
+ address output
+ howpublished new.block.checka
+ howpublished output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { proceedings }
+{
+ output.bibitem
+ editor empty.or.unknown
+ { organization output
+ organization format.key output } % gnp - changed from author format.key
+ { format.editors output.nonnull }
+ if$
+ % author format.key output % gnp - removed (should be either
+ % editor or organization
+ output.year.check % added (newapa)
+ new.block
+ format.btitle format.city "title" output.check % jtb: added city
+ new.sentence
+ format.bvolume output
+ format.number.series output
+ new.sentence
+ organization output
+ % jtb: normal order: publisher, address
+ publisher output
+ address output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { techreport }
+{
+ output.bibitem
+ format.authors "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.btitle "title" output.check
+ new.block
+ format.tr.number output % jtb: moved month ...
+ institution "institution" output.check
+ address output
+ new.sentence
+ format.named.pages output
+ % ACM omits year at end in transactions style
+ % format.day.month.year output.nonnull.dot.space % jtb: ... to here (no parens)
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { unpublished }
+{
+ output.bibitem
+ format.authors
+ "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.title "title" output.check
+ fin.sentence
+ output.day.month.year % UTAH
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note.check
+ fin.entry
+}
+
+FUNCTION { default.type } { misc }
+
+%%% ACM journal-style month definitions: full name if 1--5 letters, else
+%%% abbreviation of 3 or 4 characters and a dot
+
+MACRO {jan} {"Jan."}
+
+MACRO {feb} {"Feb."}
+
+MACRO {mar} {"Mar."}
+
+MACRO {apr} {"Apr."}
+
+MACRO {may} {"May"}
+
+MACRO {jun} {"June"}
+
+MACRO {jul} {"July"}
+
+MACRO {aug} {"Aug."}
+
+MACRO {sep} {"Sept."}
+
+MACRO {oct} {"Oct."}
+
+MACRO {nov} {"Nov."}
+
+MACRO {dec} {"Dec."}
+
+%%% ====================================================================
+%%% I M P O R T A N T C H A N G E
+%%%
+%%% For the 2009 release of the official acm-*.bst files, there are to
+%%% be NO predefined journal abbreviations in those style files.
+%%%
+%%% ACM may later develop an official list of mappings of full journal
+%%% names of commonly-cited journals to ACM-preferred abbreviations, but
+%%% authors should consider that use of any of these commented-out
+%%% abbreviations is DEPRECATED unless the BibTeX file itself provides
+%%% its own @String{name = "value"} definitions.
+%%%
+%%% Use of journal (and publisher and address) @String{...}
+%%% abbreviations, as opposed to explicit value assignments such as
+%%% journal = "J. ACM" and publisher = "IEEE", is preferred in
+%%% bibliographic databases, because it makes it easier for journal
+%%% production staff to replace those definitions by publisher-preferred
+%%% abbreviations when articles are typeset for publication.
+%%%
+%%% For historical reasons, and because some of these abbreviations are
+%%% used in other (non-ACM) bibliography style files, they are preserved
+%%% here in comments. Future releases of the acm*-.bst files are likely
+%%% to remove them entirely.
+%%% ====================================================================
+%%%
+%%% DEPRECATED: MACRO {acmcs} {"ACM Comput. Surv."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {acmlett} {"ACM Lett. Program. Lang. Syst."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {acta} {"Acta Inf."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ai} {"Artificial Intelligence"}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {al} {"Ada Lett."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {acr} {"Adv. Comput. Res."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {bit} {"Bit"}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {cacm} {"Commun. ACM"} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {cj} {"Comput. J."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {cn} {"Comput. Netw."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {cl} {"Comput. Lang."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ibmjrd} {"IBM J. Res. and Development"} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ibmsj} {"IBM Systems Journal"} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ict} {"Inf. Contr."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieebcs} {"IEE/BCS Softw. Eng. J."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieees} {"IEEE Softw."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieeese} {"IEEE Trans. Softw. Eng."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieeetc} {"IEEE Trans. Comput."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieeetcad} {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieeetpds} {"IEEE Trans. Parall. Distrib. Syst."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieeetit} {"IEEE Trans. Inf. Theory"}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ipl} {"Inf. Process. Lett."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {icp} {"Inf. Comput."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ist} {"Inf. Softw. Tech."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ijsa} {"Int. J. Supercomput. Appl."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ijpp} {"Int. J. Parallel Program."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jacm} {"J. ACM"} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: % MACRO {jcss} {"Journal of Computer and System Sciences"} % original BibTeX
+%%% DEPRECATED: MACRO {jcss} {"J. Comput. Syst. Sci."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jlp} {"J. Logic Program."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jfp} {"J. Funct. Program."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jsmrp} {"J. Softw. Maint. Res. Pract."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jss} {"J. Syst. Softw."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jlc} {"J. Logic and Comput."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jlsc} {"J. Lisp Symb. Comput."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {lpls} {"Lett. Program. Lang. Syst."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {mor} {"Math. Oper. Res."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {mscs} {"Math. Struct. Comput. Sci."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {mst} {"Math. Syst. Theor."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ngc} {"New Gen. Comput."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {scp} {"Sci. Comput. Program."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {sicomp} {"SIAM J. Comput."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {spe} {"Softw. Pract. Exper."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {tocs} {"ACM Trans. Comput. Syst."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {tods} {"ACM Trans. Database Syst."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {tog} {"ACM Trans. Graphics"} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {toms} {"ACM Trans. Math. Softw."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {toois} {"ACM Trans. Office Inf. Syst."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {toplas} {"ACM Trans. Program. Lang. Syst."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {tcs} {"Theor. Comput. Sci."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {tr} {"Tech. Rep."}
+%%% ====================================================================
+
+READ
+
+FUNCTION { sortify }
+{
+ purify$
+ "l" change.case$
+}
+
+FUNCTION { chop.word }
+{
+ 's :=
+ 'len :=
+ s #1 len substring$ =
+ { s len #1 + global.max$ substring$ }
+ 's
+ if$
+}
+
+FUNCTION { sort.format.names }
+{
+ 's :=
+ #1 'nameptr :=
+ ""
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { nameptr #1 >
+ { " " * }
+ 'skip$
+ if$
+ % s nameptr "{ff{ } }{ll{ }}{ vv{ }}{ jj{ }}" format.name$ 't :=
+ s nameptr "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}" format.name$ 't :=
+ nameptr numnames = t "others" = and
+ { " et~al" * }
+ { t sortify * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION { sort.format.title }
+{
+ 't :=
+ "A " #2
+ "An " #3
+ "The " #4 t chop.word
+ chop.word
+ chop.word
+ sortify
+ #1 global.max$ substring$
+}
+
+FUNCTION { author.sort }
+{
+ author empty.or.unknown
+ { key empty.or.unknown
+ { "to sort, need author or key in " cite$ * warning$
+ "" }
+ { key sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION { author.editor.sort }
+{
+ author empty.or.unknown
+ {
+ editor empty.or.unknown
+ {
+ key empty.or.unknown
+ { "to sort, need author, editor, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION { author.organization.sort }
+{
+ % added - GNP. Stack author or organization for sorting (from alpha.bst).
+ % Unlike alpha.bst, we need entire names, not abbreviations
+
+ author empty.or.unknown
+ { organization empty.or.unknown
+ { key empty.or.unknown
+ { "to sort, need author, organization, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { organization sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION { editor.organization.sort }
+{
+ % added - GNP. Stack editor or organization for sorting (from alpha.bst).
+ % Unlike alpha.bst, we need entire names, not abbreviations
+
+ editor empty.or.unknown
+ { organization empty.or.unknown
+ { key empty.or.unknown
+ { "to sort, need editor, organization, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { organization sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+}
+
+FUNCTION { presort }
+{
+ % Presort creates the bibentry's label via a call to calc.label, and then
+ % sorts the entries based on entry type. Chicago.bst adds support for
+ % including organizations as the sort key; the following is stolen from
+ % alpha.bst.
+
+ %%: calc.label sortify % recalculate bibitem label
+ %%: year field.or.null purify$ #-1 #4 substring$ * % add year
+ %% " "
+ %% *
+ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.sort
+ { type$ "proceedings" =
+ 'editor.organization.sort
+ { type$ "manual" =
+ 'author.organization.sort
+ 'author.sort
+ if$
+ }
+ if$
+ }
+ if$
+ " "
+ *
+ year field.or.null sortify
+ *
+ " "
+ *
+ title field.or.null
+ sort.format.title
+ *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+ITERATE { presort }
+
+SORT % by label, year, author/editor, title
+
+STRINGS { longest.label }
+
+INTEGERS { number.label longest.label.width }
+
+FUNCTION {initialize.longest.label}
+{ "" 'longest.label :=
+ #1 'number.label :=
+ #0 'longest.label.width :=
+}
+
+FUNCTION {longest.label.pass}
+{ number.label int.to.str$ 'label :=
+ number.label #1 + 'number.label :=
+ label width$ longest.label.width >
+ { label 'longest.label :=
+ label width$ 'longest.label.width :=
+ }
+ 'skip$
+ if$
+}
+
+EXECUTE {initialize.longest.label}
+
+ITERATE {longest.label.pass}
+
+FUNCTION { initialize.extra.label.stuff }
+{ #0 int.to.chr$ 'last.label :=
+ "" 'next.extra :=
+ #0 'last.extra.num :=
+}
+
+EXECUTE {initialize.extra.label.stuff}
+
+FUNCTION { begin.bib }
+{
+ %% Set to #0 show 13-digit ISBN in preference to 10-digit ISBN.
+ %% Set to #1 to show both 10-digit and 13-digit ISBNs.
+ #1 'show-isbn-10-and-13 :=
+
+ "%%% -*-BibTeX-*-" writeln
+ "%%% Do NOT edit. File created by BibTeX with style acmtrans-v2 [15-Nov-2008]." writeln
+ "" writeln
+
+ preamble$ empty.or.unknown
+ 'skip$
+ { preamble$ writeln }
+ if$
+ "\begin{thebibliography}{" longest.label * "}" * writeln
+ "" writeln
+ "%%% ====================================================================" writeln
+ "%%% NOTE TO THE USER: you can override these defaults by providing" writeln
+ "%%% customized versions of any of these macros before the \bibliography" writeln
+ "%%% command. Each of them MUST provide its own final punctuation," writeln
+ "%%% except for \shownote{}, \showDOI{}, and \showURL{}. The latter two" writeln
+ "%%% do not use final punctuation, in order to avoid confusing it with" writeln
+ "%%% the Web address." writeln
+ "%%%" writeln
+ "%%% To suppress output of a particular field, define its macro to expand" writeln
+ "%%% to an empty string, or better, \unskip, like this:" writeln
+ "%%%" writeln
+ "%%% \newcommand{\showDOI}[1]{\unskip} % LaTeX syntax" writeln
+ "%%%" writeln
+ "%%% \def \showDOI #1{\unskip} % plain TeX syntax" writeln
+ "%%%" writeln
+ "%%% ====================================================================" writeln
+ "" writeln
+
+ %% ACM publications do not use CODEN, ISSN, and LCCN data, so their default
+ %% macro wrappers expand to \unskip, discarding their values and unwanted
+ %% space.
+ %%
+ %% For other publications, prior definitions like these may be useful:
+ %%
+ %% Plain TeX:
+ %% \def \showCODEN #1{CODEN #1.}
+ %% \def \showISSN #1{ISSN #1.}
+ %% \def \showLCCN #1{LCCN #1.}
+ %%
+ %% LaTeX:
+ %% \newcommand{\showCODEN}[1]{CODEN #1.}
+ %% \newcommand{\showISSN}[1]#1{ISSN #1.}
+ %% \newcommand{\showLCCN}[1]{LCCN #1.}
+
+ "\ifx \showCODEN \undefined \def \showCODEN #1{\unskip} \fi" writeln
+ "\ifx \showDOI \undefined \def \showDOI #1{{\tt DOI:}\penalty0{#1}\ } \fi" writeln
+ % ACM styles omit ISBNs, but they can be included by suitable definitions of
+ % \showISBNx and \showISBNxiii before the .bbl file is read
+ "\ifx \showISBNx \undefined \def \showISBNx #1{\unskip} \fi" writeln
+ "\ifx \showISBNxiii \undefined \def \showISBNxiii #1{\unskip} \fi" writeln
+ "\ifx \showISSN \undefined \def \showISSN #1{\unskip} \fi" writeln
+ "\ifx \showLCCN \undefined \def \showLCCN #1{\unskip} \fi" writeln
+ "\ifx \shownote \undefined \def \shownote #1{#1} \fi" writeln % NB: final period supplied by add.period$ above
+ "\ifx \showarticletitle \undefined \def \showarticletitle #1{#1} \fi" writeln
+ "\ifx \showURL \undefined \def \showURL #1{#1} \fi" writeln
+}
+
+EXECUTE {begin.bib}
+
+EXECUTE {init.state.consts}
+
+ITERATE {call.type$}
+
+FUNCTION { end.bib }
+{
+ newline$
+ "\end{thebibliography}"
+ writeln
+}
+
+EXECUTE {end.bib}
diff --git a/Master/texmf-dist/bibtex/bst/acmart/acm-alpha.bst b/Master/texmf-dist/bibtex/bst/acmart/acm-alpha.bst
new file mode 100644
index 00000000000..5750ca02831
--- /dev/null
+++ b/Master/texmf-dist/bibtex/bst/acmart/acm-alpha.bst
@@ -0,0 +1,3339 @@
+%%% -*-BibTeX-*-
+%%% ====================================================================
+%%% @BibTeX-style-file{
+%%% author = "Nelson H. F. Beebe and many others",
+%%% version = "1.03",
+%%% date = "15 April 2011",
+%%% time = "23:52:46 EDT",
+%%% filename = "acm-alpha.bst",
+%%% address = "University of Utah
+%%% Department of Mathematics, 110 LCB
+%%% 155 S 1400 E RM 233
+%%% Salt Lake City, UT 84112-0090
+%%% USA",
+%%% telephone = "+1 801 581 5254",
+%%% FAX = "+1 801 581 4148",
+%%% URL = "http://www.math.utah.edu/~beebe",
+%%% checksum = "47407 3339 11966 90008",
+%%% email = "beebe@math.utah.edu, beebe@acm.org,
+%%% beebe@computer.org",
+%%% codetable = "ISO/ASCII",
+%%% keywords = "ACM alpha bibliography style; BibTeX",
+%%% license = "public domain",
+%%% supported = "yes",
+%%% abstract = "",
+%%% docstring = "The checksum field above contains a CRC-16
+%%% checksum as the first value, followed by the
+%%% equivalent of the standard UNIX wc (word
+%%% count) utility output of lines, words, and
+%%% characters. This is produced by Robert
+%%% Solovay's checksum utility.",
+%%% }
+%%% ====================================================================
+
+% "ACM alpha" BibTeX style, derived by minimal modifications from acm-trans.bst
+% "ACM Transactions" BibTeX style, acmtrans-v2.bst
+% for BibTeX version 0.99c, LaTeX version 3.141
+% ACM extensions with code cleaned up, extended, and debugged 10--15-Nov-2008
+% Revised 28-MARCH-1996
+% Revised 30-JUNE-1995
+% Revised 15-JAN-1996
+% Revised 17-APRIL-2008
+% Revised 13-MARCH-2011
+% Revised 15-APRIL-2011
+%
+% Hacked by John T. Boyland at University of California, Berkeley
+% (with assistance by John R. Hauser)
+% Hacked by Andrew W. Appel and Rebecca L. Davies at Princeton University,
+% based on a "chicago.bst" by Glenn Paulley at U. Waterloo,
+% which was based on "newapa.bst" found at ymir.claremont.edu.
+%
+% Version 2.2
+% Johny Sebatian and Sanjeev Sharma
+% Aptara corp (c) 2008
+%
+% History
+%
+% Date: 28th April 2008
+%
+% 1. Avoid 'repeating' the 'month' values.
+% 2. Avoid incorrectly italicizing the volume number.
+% 3. Avoid non italicizing certain titles (book, inproceedings etc).
+% 4. NO series if there is NO volume.
+% 5. Sorting of reference with first surname.
+% 6. Article no added for Inproceedings.
+%
+% Date: 07th May 2008
+%
+% 1. Abbreviation list added
+%
+% Citation format: [author-last-name year]
+% [author-last-name and author-last-name year]
+% [author-last-name, author-last-name, and author-last-name year]
+% [author-last-name et al. year]
+% [author-last-name]
+% author-last-name [year]
+% [author-last-name and author-last-name]
+% [author-last-name et al.]
+% [year] or [year,year]
+% year or year,year
+%
+% Reference list ordering: alphabetical by author or whatever passes
+% for author in the absence of one.
+%
+% This BibTeX style has support for abbreviated author lists and for
+% year-only citations. This is done by having the citations
+% actually look like
+%
+% \citeauthoryear{full-author-info}{abbrev-author-info}{year}
+%
+% The LaTeX style has to have the following (or similar)
+%
+% \let\@internalcite\cite
+% \def\fullcite{\def\citeauthoryear##1##2##3{##1, ##3}\@internalcite}
+% \def\fullciteA{\def\citeauthoryear##1##2##3{##1}\@internalcite}
+% \def\shortcite{\def\citeauthoryear##1##2##3{##2, ##3}\@internalcite}
+% \def\shortciteA{\def\citeauthoryear##1##2##3{##2}\@internalcite}
+% \def\citeyear{\def\citeauthoryear##1##2##3{##3}\@internalcite}
+%
+% These TeX macro definitions are found in acmtrans.sty. Additional
+% commands to manipulate different components of a citation can be defined
+% so that, for example, you can list author's names without parentheses
+% if using a citation as a noun or object in a sentence.
+%
+% Features of acmtrans.bst:
+% ========================
+%
+% - all authors appear last name first.
+% - all pages are listed xx-xx, (no pp.) and are at the end of the reference
+% - publishers are identified as publisher, address
+% - conferences papers (inproceedings) may give city of conference,
+% date of conference, and journal that the proceedings appear in.
+% - months abbreviated to max four letters (eg. Mar.)
+% - volume of a series indicated after the title of the series
+% - editors appear after edited title and are identified by a trailing "Eds."
+% not in parentheses. Editor names are not given in small caps.
+% (unless there is no author line)
+% - names terminated with a period even if there is no first name.
+% - editions are indicated trailing after the work, not in parentheses.
+% - "et al." citations have a protected period to avoid bad spacing (jrh)
+% - "address" required when publisher given
+% - series (roman) and volume are in a sentence separate from (book-)title
+%
+%
+% Features of chicago.bst:
+% =======================
+%
+% - full names used in citations, but abbreviated citations are available
+% (see above)
+% - if an entry has a "month", then the month and year are also printed
+% as part of that bibitem.
+% - all conjunctions use "and" instead of "\&"
+% - major modification from Chicago Manual of Style (13th ed.) is that
+% only the first author in a reference appears last name first-
+% additional authors appear as J. Q. Public.
+% - pages are listed as "pp. xx-xx" in all entry types except
+% article entries.
+% - book, inbook, and manual use "location: publisher" (or organization)
+% for address and publisher. All other types list publishers separately.
+% - "pp." are used to identify page numbers for all entry types except
+% articles.
+% - organization is used as a citation label if neither author nor editor
+% is present (for manuals).
+% - "et al." is used for long author and editor lists, or when "others"
+% is used.
+%
+% Modifications and bug fixes from newapa.bst:
+% ===========================================
+%
+% - added month, year to bib entries if month is present
+% - fixed bug with In proceedings, added necessary comma after title
+% - all conjunctions changed to "and" from "\&"
+% - fixed bug with author labels in my.full.label: "et al." now is
+% generated when "others" is an author name
+% - major modification from Chicago Manual of Style (13th ed.) is that
+% only the first author in a reference appears last name first-
+% additional authors appear as J. Q. Public.
+% - pages are listed as "pp. xx-xx" in all entry types except
+% article entries. Unnecessary (IMHO) "()" around page numbers
+% were removed, and page numbers now don't end with a period.
+% - created chicago.sty for use with this bibstyle (required).
+% - fixed bugs in FUNCTION {format.vol.num.pages} for missing volume,
+% number, and /or pages. Renamed to format.journal.volume.number.
+% - fixed bug in formatting booktitles: additional period an error if
+% book has a volume.
+% - fixed bug: editors usually given redundant period before next clause
+% (format.editors.dot) removed.
+% - added label support for organizations, if both author and editor
+% are missing (from alpha.bst). If organization is too long, then
+% the key field is used for abbreviated citations.
+% - In proceedings or books of several volumes, no comma was written
+% between the "Volume x" and the page numbers (this was intentional
+% in newapa.bst). Fixed.
+% - Some journals may not have volumes/numbers, only month/year (eg.
+% IEEE Computer). Fixed bug in article style that assumed volume/number
+% was always present.
+%
+% Original documentation for newapa.sty:
+% =====================================
+%
+% This version was made by modifying the master file made by
+% Oren Patashnik (PATASHNIK@SCORE.STANFORD.EDU), and the 'named' BibTeX
+% style of Peter F. Patel-Schneider.
+%
+% Copyright (C) 1985, all rights reserved.
+% Copying of this file is authorized only if either
+% (1) you make absolutely no changes to your copy, including name, or
+% (2) if you do make changes, you name it something other than 'newapa.bst'.
+% There are undoubtably bugs in this style. If you make bug fixes,
+% improvements, etc. please let me know. My e-mail address is:
+% spencer@cgrg.ohio.state.edu or 71160.3141@compuserve.com
+%
+% This style was made from 'plain.bst', 'named.bst', and 'apalike.bst',
+% with lots of tweaking to make it look like APA style, along with tips
+% from Young Ryu and Brian Reiser's modifications of 'apalike.bst'.
+
+ENTRY
+ { address
+ advisor
+ author
+ booktitle
+ chapter
+ city % jtb: added
+ date % jtb: added
+ edition
+ editor
+ howpublished
+ institution
+ journal
+ key
+ month
+ note
+ number
+ organization
+ pages
+ publisher
+ school
+ series
+ title
+ type
+ volume
+ year
+ % New keys recognized for acmtrans-v2.bst
+ issue % UTAH: used in, e.g., ACM SIGSAM Bulletin and ACM Communications in Computer Algebra
+ articleno
+ day % UTAH: needed for newspapers, weeklies, bi-weeklies
+ doi % UTAH
+ url % UTAH
+ bookpages % UTAH
+ numpages
+ lastaccessed % UTAH: used only for @Misc{...}
+ coden % UTAH
+ isbn % UTAH
+ isbn-13 % UTAH
+ issn % UTAH
+ lccn % UTAH
+ }
+ {}
+ { label label.year extra.label sort.year sort.label }
+
+INTEGERS { output.state before.all mid.sentence after.sentence after.block }
+
+INTEGERS { show-isbn-10-and-13 } % initialized below in begin.bib
+
+INTEGERS { nameptr namesleft numnames }
+
+INTEGERS { multiresult }
+
+INTEGERS { len }
+
+STRINGS { s t t.org u }
+
+STRINGS { last.label }
+
+STRINGS { p1 p2 p3 page.count }
+
+FUNCTION { dump.stack.1 }
+{
+ duplicate$ "STACK[top] = [" swap$ * "]" * warning$
+}
+
+FUNCTION { dump.stack.2 }
+{
+ duplicate$ "STACK[top ] = [" swap$ * "]" * warning$
+ swap$
+ duplicate$ "STACK[top-1] = [" swap$ * "]" * warning$
+ swap$
+}
+
+FUNCTION { empty.or.unknown }
+{
+ %% Examine the top stack entry, and push 1 if it is empty, or
+ %% consists only of whitespace, or is a string beginning with two
+ %% queries (??), and otherwise, push 0.
+ %%
+ %% This function provides a replacement for empty$, with the
+ %% convenient feature that unknown values marked by two leading
+ %% queries are treated the same as missing values, and thus, do not
+ %% appear in the output .bbl file, and yet, their presence in .bib
+ %% file(s) serves to mark values which are temporarily missing, but
+ %% are expected to be filled in eventually once more data is
+ %% obtained. The TeX User Group and BibNet bibliography archives
+ %% make extensive use of this practice.
+ %%
+ %% An empty string cannot serve the same purpose, because just as in
+ %% statistics data processing, an unknown value is not the same as an
+ %% empty value.
+ %%
+ %% At entry: stack = ... top:[string]
+ %% At exit: stack = ... top:[0 or 1]
+
+ duplicate$ empty$
+ { pop$ #1 }
+ { #1 #2 substring$ "??" = }
+ if$
+}
+
+FUNCTION { writeln }
+{
+ %% In BibTeX style files, the sequences
+ %%
+ %% ... "one" "two" output
+ %% ... "one" "two" output.xxx
+ %%
+ %% ship "one" to the output file, possibly following by punctuation,
+ %% leaving the stack with
+ %%
+ %% ... "two"
+ %%
+ %% There is thus a one-string lag in output processing that must be
+ %% carefully handled to avoid duplicating a string in the output
+ %% file. Unless otherwise noted, all output.xxx functions leave
+ %% just one new string on the stack, and that model should be born
+ %% in mind when reading or writing function code.
+ %%
+ %% BibTeX's asynchronous buffering of output from strings from the
+ %% stack is confusing because newline$ bypasses the buffer. It
+ %% would have been so much easier for newline to be a character
+ %% rather than a state of the output-in-progress.
+ %%
+ %% The documentation in btxhak.dvi is WRONG: it says
+ %%
+ %% newline$ Writes onto the bbl file what's accumulated in the
+ %% output buffer. It writes a blank line if and only
+ %% if the output buffer is empty. Since write$ does
+ %% reasonable line breaking, you should use this
+ %% function only when you want a blank line or an
+ %% explicit line break.
+ %%
+ %% write$ Pops the top (string) literal and writes it on the
+ %% output buffer (which will result in stuff being
+ %% written onto the bbl file when the buffer fills
+ %% up).
+ %%
+ %% Examination of the BibTeX source code shows that write$ does
+ %% indeed behave as claimed, but newline$ sends a newline character
+ %% directly to the output file, leaving the stack unchanged. The
+ %% first line "Writes onto ... buffer." is therefore wrong.
+ %%
+ %% The original BibTeX style files almost always use "write$ newline$"
+ %% in that order, so it makes sense to hide that pair in a private
+ %% function like this one, named after a statement in Pascal,
+ %% the programming language embedded in the BibTeX Web program.
+
+ write$ % output top-of-stack string
+ newline$ % immediate write of newline (not via stack)
+}
+
+FUNCTION { init.state.consts }
+{
+ #0 'before.all :=
+ #1 'mid.sentence :=
+ #2 'after.sentence :=
+ #3 'after.block :=
+}
+
+FUNCTION { output.nonnull }
+{ % Stack in: ... R S T Stack out: ... R T File out: S<comma><space>
+ 's :=
+ output.state mid.sentence =
+ {
+ ", " * write$
+ }
+ {
+ output.state after.block =
+ {
+ add.period$ writeln
+ "\newblock " write$
+ }
+ {
+ output.state before.all =
+ {
+ write$
+ }
+ {
+ add.period$ " " * write$
+ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+FUNCTION { output.nonnull.dot.space }
+{ % Stack in: ... R S T Stack out: ... R T File out: S<dot><space>
+ 's :=
+ output.state mid.sentence = % { "<DEBUG output.nonnull.dot.space>. " * write$ }
+ {
+ ". " * write$
+ }
+ {
+ output.state after.block =
+ {
+ add.period$ writeln "\newblock " write$
+ }
+ {
+ output.state before.all =
+ {
+ write$
+ }
+ {
+ add.period$ " " * write$
+ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+FUNCTION { output.nonnull.remove }
+{ % Stack in: ... R S T Stack out: ... R T File out: S<space>
+ 's :=
+ output.state mid.sentence =
+ {
+ " " * write$
+ }
+ {
+ output.state after.block =
+ {
+ add.period$ writeln "\newblock " write$
+ }
+ {
+ output.state before.all =
+ {
+ write$
+ }
+ {
+ add.period$ " " * write$
+ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+FUNCTION { output.nonnull.removenospace }
+{ % Stack in: ... R S T Stack out: ... R T File out: S
+ 's :=
+ output.state mid.sentence =
+ {
+ "" * write$
+ }
+ {
+ output.state after.block =
+ {
+ add.period$ writeln "\newblock " write$
+ }
+ {
+ output.state before.all =
+ {
+ write$
+ }
+ {
+ add.period$ " " * write$
+ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+FUNCTION { output }
+{ % discard top token if empty, else like output.nonnull
+ duplicate$ empty.or.unknown
+ 'pop$
+ 'output.nonnull
+ if$
+}
+
+FUNCTION { output.dot.space }
+{ % discard top token if empty, else like output.nonnull.dot.space
+ duplicate$ empty.or.unknown
+ 'pop$
+ 'output.nonnull.dot.space
+ if$
+}
+
+FUNCTION { output.removenospace }
+{ % discard top token if empty, else like output.nonnull.removenospace
+ duplicate$ empty.or.unknown
+ 'pop$
+ 'output.nonnull.removenospace
+ if$
+}
+
+FUNCTION { output.check }
+{ % like output, but warn if key name on top-of-stack is not set
+ 't :=
+ duplicate$ empty.or.unknown
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull
+ if$
+}
+
+FUNCTION { output.check.dot.space }
+{ % like output.dot.space, but warn if key name on top-of-stack is not set
+ 't :=
+ duplicate$ empty.or.unknown
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull.dot.space
+ if$
+}
+
+FUNCTION { fin.block }
+{ % functionally, but not logically, identical to fin.entry
+ add.period$
+ writeln
+}
+
+FUNCTION { fin.entry }
+{
+ add.period$
+ writeln
+}
+
+FUNCTION { new.sentence }
+{ % update sentence state, with neither output nor stack change
+ output.state after.block =
+ 'skip$
+ {
+ output.state before.all =
+ 'skip$
+ { after.sentence 'output.state := }
+ if$
+ }
+ if$
+}
+
+FUNCTION { fin.sentence }
+{
+ add.period$
+ write$
+ new.sentence
+ ""
+}
+
+FUNCTION { new.block }
+{
+ output.state before.all =
+ 'skip$
+ { after.block 'output.state := }
+ if$
+}
+
+FUNCTION { output.coden } % UTAH
+{ % output non-empty CODEN as one-line sentence (stack untouched)
+ coden empty.or.unknown
+ { }
+ { "\showCODEN{" coden * "}" * writeln }
+ if$
+}
+
+FUNCTION { format.articleno }
+{
+ articleno empty.or.unknown
+ { "" }
+ {
+ numpages empty.or.unknown
+ { "articleno field, but no numpages field, in " cite$ * warning$ }
+ { }
+ if$
+ "Article " articleno *
+ }
+ if$
+}
+
+FUNCTION { format.year }
+{ % push year string or "????" onto output stack
+ %% Because year is a mandatory field, we always force SOMETHING
+ %% to be output
+ year empty.or.unknown
+ { "????" }
+ { year }
+ if$
+}
+
+FUNCTION { format.day.month }
+{ % push "day month " or "month " or "" onto output stack
+ day empty.or.unknown
+ {
+ month empty.or.unknown
+ { "" }
+ { month " " *}
+ if$
+ }
+ {
+ month empty.or.unknown
+ { "" }
+ { day " " * month * " " *}
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.day.month.year } % UTAH
+{ % if month is empty, push "" else push "(MON.)" or "(DD MON.)"
+ % Needed for frequent periodicals: 2008. ... New York Times C-1, C-2, C-17 (23 Oct.)
+ % acm-*.bst addition: prefix parenthesized date string with
+ % ", Article nnn "
+ articleno empty.or.unknown
+ { "" }
+ { ", " format.articleno * }
+ if$
+ " (" * format.day.month * format.year * ")" *
+}
+
+FUNCTION { output.day.month.year } % UTAH
+{ % if month is empty value, do nothing; else output stack top and
+ % leave with new top string "(MON.)" or "(DD MON.)"
+ % Needed for frequent periodicals: 2008. ... New York Times C-1, C-2, C-17 (23 Oct.)
+ format.day.month.year
+ output.nonnull.remove
+}
+
+FUNCTION { strip.doi } % UTAH
+{ % Strip any Web address prefix to recover the bare DOI, leaving the
+ % result on the output stack, as recommended by CrossRef DOI
+ % documentation.
+ % For example, reduce "http://doi.acm.org/10.1145/1534530.1534545" to
+ % "10.1145/1534530.1534545". That is later typeset and displayed as
+ % doi:10.1145/1534530.1534545 as the LAST item in the reference list
+ % entry. Publisher Web sites wrap this with a suitable link to a real
+ % URL to resolve the DOI, and the master http://dx.doi.org/ address is
+ % preferred, since publisher-specific URLs can disappear in response
+ % to economic events. All journals are encouraged by the DOI
+ % authorities to use that typeset format and link procedures for
+ % uniformity across all publications that include DOIs in reference
+ % lists.
+ % The numeric prefix is guaranteed to start with "10.", so we use
+ % that as a test.
+ doi #1 #3 substring$ "10." =
+ { doi }
+ {
+ doi #1 #7 substring$ "http://" =
+ {
+ doi #8 doi text.length$ #7 - substring$ 't := % get modifiable copy of rest of DOI
+
+ "INTERNAL STYLE-FILE ERROR" 's :=
+
+ % search for next "/" and assign its suffix to s
+
+ { t text.length$ }
+ {
+ t #1 #1 substring$ "/" =
+ {
+ % save rest of string as true DOI (should be 10.xxxx/yyyy)
+ t #2 t text.length$ #1 - substring$ 's :=
+ "" 't := % empty string t terminates the loop
+ }
+ {
+ % discard first character and continue loop: t <= substring(t,2,last)
+ t #2 t text.length$ #1 - substring$ 't :=
+ }
+ if$
+ }
+ while$
+
+ % check for valid DOI (should be 10.xxxx/yyyy)
+ s #1 #3 substring$ "10." =
+ { }
+ { "unrecognized DOI substring " s * " in DOI value [" * doi * "]" * warning$ }
+ if$
+
+ s % push the stripped DOI on the output stack
+
+ }
+ {
+ "unrecognized DOI value [" doi * "]" * warning$
+ doi % push the unrecognized original DOI on the output stack
+ }
+ if$
+ }
+ if$
+}
+
+%
+% Change by BV: added standard prefix to URL
+%
+FUNCTION { output.doi } % UTAH
+{ % output non-empty DOI as one-line sentence (stack untouched)
+ doi empty.or.unknown
+ { }
+ {
+ %% NB: We want URLs at beginning of line to reduce likelihood of
+ %% BibTeX's nasty line wrapping after column 79, which then requires
+ %% manual (or automated) editing of the .bbl file to repair.
+ %% The \url{} macro strips percent-newlines, and is thus safe in
+ %% the presence of the line wrapping, but \path|...| and
+ %% \verb|...| do not.
+ "\showDOI{%" writeln
+ "\url{http://dx.doi.org/" strip.doi * "}}" * writeln
+ }
+ if$
+}
+
+FUNCTION { output.isbn } % UTAH
+{ % output non-empty ISBN-10 and/or ISBN-13 as one-line sentences (stack untouched)
+ show-isbn-10-and-13
+ {
+ %% show both 10- and 13-digit ISBNs
+ isbn empty.or.unknown
+ { }
+ {
+ "\showISBNx{" isbn * "}" * writeln
+ }
+ if$
+ isbn-13 empty.or.unknown
+ { }
+ {
+ "\showISBNxiii{" isbn-13 * "}" * writeln
+ }
+ if$
+ }
+ {
+ %% show 10-digit ISBNs only if 13-digit ISBNs not available
+ isbn-13 empty.or.unknown
+ {
+ isbn empty.or.unknown
+ { }
+ {
+ "\showISBNx{" isbn * "}" * writeln
+ }
+ if$
+ }
+ {
+ "\showISBNxiii{" isbn-13 * "}" * writeln
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION { output.issn } % UTAH
+{ % output non-empty ISSN as one-line sentence (stack untouched)
+ issn empty.or.unknown
+ { }
+ { "\showISSN{" issn * "}" * writeln }
+ if$
+}
+
+FUNCTION { output.issue }
+{ % output non-empty issue number as a one-line sentence (stack untouched)
+ issue empty.or.unknown
+ { }
+ { "Issue " issue * "." * writeln }
+ if$
+}
+
+FUNCTION { output.lccn } % UTAH
+{ % return with stack untouched
+ lccn empty.or.unknown
+ { }
+ { "\showLCCN{" lccn * "}" * writeln }
+ if$
+}
+
+FUNCTION { output.note } % UTAH
+{ % return with stack empty
+ note empty.or.unknown
+ { }
+ { "\shownote{" note add.period$ * "}" * writeln }
+ if$
+}
+
+FUNCTION { output.note.check } % UTAH
+{ % return with stack empty
+ note empty.or.unknown
+ { "empty note in " cite$ * warning$ }
+ { "\shownote{" note add.period$ * "}" * writeln }
+ if$
+}
+
+%
+% Changes by BV 2011/04/15. Do not output
+% url if doi is defined
+%
+FUNCTION { output.url } % UTAH
+{ % return with stack untouched
+ % output URL and associated lastaccessed fields
+ doi empty.or.unknown
+ {
+ url empty.or.unknown
+ { }
+ {
+ %% NB: We want URLs at beginning of line to reduce likelihood of
+ %% BibTeX's nasty line wrapping after column 79, which would require
+ %% manual (or automated) editing of the .bbl file to repair. However,
+ %% the \url{} macro handles the unwrapping job automatically.
+ "\showURL{%" writeln
+ lastaccessed empty.or.unknown
+ { "" }
+ { "Retrieved " lastaccessed * " from " * }
+ if$
+
+ %% The URL field may contain a semicolon-separated list of Web
+ %% addresses, and we locate and wrap each of them in \url{...}.
+ %% The simplistic approach of putting the entire list into the
+ %% macro argument is that the semicolons are typeset in a
+ %% typewriter font, and no space follows them.
+ %%
+ %% We therefore replace the original code
+ %% "\url{" * url * "}}" * writeln
+ %% with this character-at-a-time loop:
+
+ "\url{" *
+
+ url 't := % get modifiable copy of URL list
+
+ { t text.length$ }
+ {
+ t #1 #1 substring$ ";" =
+ { % then split argument at separator
+ "};" * writeln
+ "\url{"
+ }
+ { % else concatenate nonblank character to argument
+ t #1 #1 substring$ " " =
+ { }
+ { t #1 #1 substring$ * }
+ if$
+ }
+ if$
+
+ t #2 t text.length$ #1 - substring$ 't :=
+ }
+ while$
+
+ "}}" * writeln
+ }
+ if$
+ }
+ { }
+ if$
+}
+
+FUNCTION { output.year.check }
+{ % warn if year empty, else output top string and leave " YEAR<label>" on stack in mid-sentence
+ year empty.or.unknown
+ { "empty year in " cite$ * warning$ }
+ { write$
+ " " year * extra.label *
+ mid.sentence 'output.state :=
+ }
+ if$
+}
+
+FUNCTION { not }
+{
+ { #0 }
+ { #1 }
+ if$
+}
+
+FUNCTION { and }
+{
+ 'skip$
+ { pop$ #0 }
+ if$
+}
+
+FUNCTION { or }
+{
+ { pop$ #1 }
+ 'skip$
+ if$
+}
+
+FUNCTION { le }
+{
+ %% test whether first number is less than or equal to second number
+ %% stack in: n1 n2
+ %% stack out: if n1 <= n2 then 1 else 0
+
+ %% "DEBUG: le " cite$ * warning$
+ > { #0 } { #1 } if$
+}
+
+FUNCTION { ge }
+{
+ %% test whether first number is greater than or equal to second number
+ %% stack in: n1 n2
+ %% stack out: if n1 >= n2 then 1 else 0
+
+ %% "DEBUG: ge " cite$ * warning$
+ < { #0 } { #1 } if$
+}
+
+FUNCTION { is.leading.digit }
+{
+ %% test whether first character of string is a digit
+ %% stack in: string
+ %% stack out: if first-char-is-digit then 1 else 0
+
+ #1 #1 substring$ % replace string by string[1:1]
+ duplicate$ % string[1:1] string[1:1]
+ chr.to.int$
+ "0" chr.to.int$ swap$ le % "0" <= string[1:1] --> 0-or-1
+ swap$ % 0-or-1 string[1:1]
+ chr.to.int$
+ "9" chr.to.int$ le % string[1:1} <= "9" --> 0-or-1
+ and
+}
+
+FUNCTION { skip.digits }
+{
+ %% skip over leading digits in string
+ %% stack in: string
+ %% stack out: rest-of-string leading-digits
+
+ %% "DEBUG: enter skip.digits " cite$ * warning$
+
+ %% dump.stack.1
+
+ duplicate$
+ 't :=
+ 't.org :=
+ "" 'u :=
+
+ { t text.length$ }
+ {
+ %% "=================DEBUG: skip.digits t = [" t * "]" * warning$
+ t is.leading.digit
+ { t #2 t text.length$ #1 - substring$ }
+ {
+ t 'u :=
+ ""
+ }
+ if$
+ 't :=
+ }
+ while$
+
+ u % rest of string
+ t.org #1 t.org text.length$ u text.length$ - substring$ % leading digits
+
+ %% "DEBUG: t.org = [" t.org * "]" * warning$
+ %% "DEBUG: u = [" u * "]" * warning$
+
+ %% dump.stack.2
+
+ %% "DEBUG: leave skip.digits " cite$ * warning$
+}
+
+FUNCTION { skip.nondigits }
+{
+ %% skip over leading nondigits in string
+ %% stack in: string
+ %% stack out: rest-of-string
+
+ %% "DEBUG: enter skip.nondigits " cite$ * warning$
+
+ 't :=
+ "" 'u :=
+
+ { t text.length$ }
+ {
+ %% "=================DEBUG: skip.nondigits t = [" t * "]" * warning$
+ t is.leading.digit
+ {
+ t 'u :=
+ ""
+ }
+ { t #2 t text.length$ #1 - substring$ }
+ if$
+ 't :=
+ }
+ while$
+
+ u % rest of string
+
+ %% dump.stack.1
+ %% "DEBUG: leave skip.nondigits " cite$ * warning$
+}
+
+FUNCTION { parse.next.number }
+{
+ %% stack in: string
+ %% stack out: rest-of-string next-numeric-part-of-string
+ %% Example:
+ %% stack in: "123:1--123:59"
+ %% stack out: ":1--123:59" "123"
+
+ 's :=
+ s skip.nondigits 's :=
+ s skip.digits
+}
+
+FUNCTION { reduce.pages.to.page.count }
+{
+ %% Stack in: arbitrary-and-unused
+ %% Stack out: unchanged
+ %%
+ %% For the new-style pagination with article number and numpages or
+ %% pages, we expect to have BibTeX entries containing something like
+ %% articleno = "17",
+ %% pages = "1--23",
+ %% with output "Article 17, 23 pages",
+ %% or
+ %% articleno = "17",
+ %% numpages = "23",
+ %% with output "Article 17, 23 pages",
+ %% or
+ %% articleno = "17",
+ %% pages = "17:1--17:23",
+ %% with output "Article 17, 23 pages",
+ %%
+ %% If articleno is missing or empty, then we should output "1--23",
+ %% "23" (with a warning of a missing articleno), or "17:1--17:23",
+ %% respectively.
+
+ %% "DEBUG: enter reduce.pages.to.page.count " cite$ * warning$
+
+ %% "DEBUG: pages = [" pages * "]" * warning$
+
+ pages
+ parse.next.number 'p1 :=
+ parse.next.number 'p2 :=
+ parse.next.number 'p3 :=
+ parse.next.number 'page.count :=
+
+ duplicate$
+ empty.or.unknown
+ { }
+ {
+ duplicate$ "unexpected trailing garbage [" swap$ *
+ "] after n:p1--n:p2 in pages = [" *
+ pages *
+ "] in " *
+ cite$ *
+ warning$
+ }
+ if$
+
+ pop$
+
+ %% "DEBUG: reduce.pages.to.page.count: "
+ %% " p1 = " p1 * *
+ %% " p2 = " p2 * *
+ %% " p3 = " p3 * *
+ %% " p4 = " page.count * *
+ %% " in " cite$ * * warning$
+
+ p1 p3 = p2 "1" = and numpages empty.or.unknown and
+ { "INFO: reduced pages = [" pages * "] to numpages = [" * page.count * "]" * warning$ }
+ {
+ numpages empty.or.unknown
+ { pages }
+ { numpages }
+ if$
+ 'page.count :=
+ }
+ if$
+
+ p1 "1" = p3 empty.or.unknown and numpages empty.or.unknown and
+ {
+ p2 'page.count :=
+ "INFO: reduced pages = [" pages * "] to numpages = [" * page.count * "]" * warning$
+ }
+ {
+ numpages empty.or.unknown
+ { pages }
+ { numpages }
+ if$
+ 'page.count :=
+ }
+ if$
+
+ %% "DEBUG: leave reduce.pages.to.page.count " cite$ * warning$
+}
+
+FUNCTION { new.block.checkb }
+{ % issue a new.block only if at least one of top two stack strings is not empty
+ empty.or.unknown
+ swap$ empty.or.unknown
+ and
+ 'skip$
+ 'new.block
+ if$
+}
+
+FUNCTION { field.or.null }
+{ % convert empty value to null string, else return value
+ duplicate$ empty.or.unknown
+ { pop$ "" }
+ 'skip$
+ if$
+}
+
+FUNCTION { emphasize }
+{ % emphasize a non-empty top string on the stack (WITHOUT italic correction)
+ duplicate$ empty.or.unknown
+ { pop$ "" }
+ { "{\em " swap$ * "}" * }
+ if$
+}
+
+FUNCTION { emphasize.with.italic.correction }
+{ % convert empty string to null string, or emphasize with a trailing italic correction
+ duplicate$ empty.or.unknown
+ { pop$ "" }
+ { "{\em " swap$ * "\/}" * }
+ if$
+}
+
+FUNCTION { comma }
+{ % convert empty string to null string, or brace string and add trailing comma
+ duplicate$ empty.or.unknown
+ { pop$ "" }
+ { "{" swap$ * "}," * }
+ if$
+}
+
+FUNCTION { format.names }
+{
+ % Format bibliographical entries with the first author last name first,
+ % and subsequent authors with initials followed by last name.
+ % All names are formatted in this routine.
+
+ 's :=
+ #1 'nameptr := % nameptr = 1;
+ s num.names$ 'numnames := % numnames = num.name$(s);
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { nameptr #1 =
+ %NO: BAD ORDER: {"{" s nameptr "{ff~}{ll}{, jj}{, vv}" format.name$ * "}" * 't := }
+ %NO: BAD ORDER: {"{" s nameptr "{ff~}{ll}{, jj}{, vv}" format.name$ * "}" * 't := }
+ {"{" s nameptr "{ff }{vv }{ll}{, jj}" format.name$ * "}" * 't := }
+ {"{" s nameptr "{ff }{vv }{ll}{, jj}" format.name$ * "}" * 't := }
+ if$
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "{\sc others}" =
+ { " {et~al\mbox{.}}" * } % jrh: avoid spacing problems
+ { " {and} " * t * } % from Chicago Manual of Style
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr := % nameptr += 1;
+ namesleft #1 - 'namesleft := % namesleft =- 1;
+ }
+ while$
+}
+
+FUNCTION { my.full.label }
+{
+ 's :=
+ #1 'nameptr := % nameptr = 1;
+ s num.names$ 'numnames := % numnames = num.name$(s);
+ numnames 'namesleft :=
+ { namesleft #0 > }
+
+ { s nameptr "{vv~}{ll}" format.name$ 't := % get the next name
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "others" =
+ { " et~al\mbox{.}" * } % jrh: avoid spacing problems
+ { " and " * t * } % from Chicago Manual of Style
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr := % nameptr += 1;
+ namesleft #1 - 'namesleft := % namesleft =- 1;
+ }
+ while$
+
+}
+
+FUNCTION { format.names.fml }
+{
+ % Format names in "familiar" format, with first initial followed by
+ % last name. Like format.names, ALL names are formatted.
+ % jtb: The names are NOT put in small caps
+
+ 's :=
+ #1 'nameptr := % nameptr = 1;
+ s num.names$ 'numnames := % numnames = num.name$(s);
+ numnames 'namesleft :=
+ { namesleft #0 > }
+
+ {
+ "{" s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ * "}" * 't :=
+
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "{others}" =
+ { " {et~al\mbox{.}}" * }
+ { " {and} " * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr := % nameptr += 1;
+ namesleft #1 - 'namesleft := % namesleft =- 1;
+ }
+ while$
+}
+
+FUNCTION { format.authors }
+{
+ author empty.or.unknown
+ { "" }
+ { author format.names add.period$} % jtb: add period if none before
+ if$
+}
+
+FUNCTION { format.key }
+{
+ empty.or.unknown
+ { key field.or.null }
+ { "" }
+ if$
+}
+
+FUNCTION { format.no.key }
+{
+ empty.or.unknown
+ { "" }
+ { "" }
+ if$
+}
+
+FUNCTION { format.editors.fml }
+{
+ % Format editor names for use in the "in" types: inbook, incollection,
+ % inproceedings: first initial, then last names. When editors are the
+ % LABEL for an entry, then format.editor is used which lists editors
+ % by last name first.
+
+ editor empty.or.unknown
+ { "" }
+ {
+ editor format.names.fml editor num.names$ #1 >
+ { " (Eds.)" * }
+ { " (Ed.)" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.editors }
+{ % format editor names for use in labels, last names first.
+ editor empty.or.unknown
+ { "" }
+ {
+ editor format.names
+ editor num.names$ #1 >
+ { " (Eds.)." * }
+ { " (Ed.)." * }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.articletitle }
+{
+ title empty.or.unknown
+ { "" }
+ % Use this to preserve lettercase in titles:
+ { "\showarticletitle{" title * "}" * }
+ % Use this for downcase title style:
+ % { \showarticletitle{" title "t" change.case$ * "}" * }
+ if$
+}
+
+FUNCTION { format.title }
+{
+ title empty.or.unknown
+ { "" }
+ % Use this to preserve lettercase in titles:
+ { title }
+ % Use this for downcase title style:
+ % { title "t" change.case$ }
+ if$
+}
+
+FUNCTION { n.dashify }
+{
+ 't :=
+ ""
+ { t empty.or.unknown not }
+ {
+ t #1 #1 substring$ "-" =
+ {
+ t #1 #2 substring$ "--" = not
+ { "--" *
+ t #2 global.max$ substring$ 't :=
+ }
+ {
+ { t #1 #1 substring$ "-" = }
+ {
+ "-" *
+ t #2 global.max$ substring$ 't :=
+ }
+ while$
+ }
+ if$
+ }
+ {
+ t #1 #1 substring$ *
+ t #2 global.max$ substring$ 't :=
+ }
+ if$
+ }
+ while$
+}
+
+FUNCTION { format.btitle }
+{
+ edition empty.or.unknown
+ { title emphasize }
+ { title empty.or.unknown
+ { title emphasize } % jtb: what is this supposed to do ?!?
+ { "{\em " title * "\/} (" * edition "l" change.case$ * " ed.)" * } % jtb: no parens for ed.
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.emphasize.booktitle }
+{ % push "" or "{\em booktitle}" or "{\em booktitle}, (second ed.)" on stack
+ edition empty.or.unknown
+ { booktitle emphasize }
+ { booktitle empty.or.unknown
+ { "" }
+ { "{\em " booktitle * "} (" * edition "l" change.case$ * " ed.)" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.city }
+{
+ % jtb: if the preceding string (the title of the conference) is non-empty,
+ % jtb: append the location, otherwise leave empty (so as to trigger the
+ % jtb: error message in output.check
+
+ duplicate$ empty.or.unknown
+ { }
+ {
+ city empty.or.unknown
+ {
+ date empty.or.unknown
+ { }
+ { " (" * date * ")" * }
+ if$
+ }
+ {
+ date empty.or.unknown
+ { " (" * city * ")" * }
+ { " (" * city * ", " * date * ")" * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION { tie.or.space.connect }
+{
+ duplicate$ text.length$ #3 <
+ { "~" }
+ { " " }
+ if$
+ swap$ * *
+}
+
+FUNCTION { either.or.check }
+{
+ empty.or.unknown
+ 'pop$
+ { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+ if$
+}
+
+FUNCTION { format.bvolume }
+{
+ % jtb: If there is a series, this is added and the volume trails after it.
+ % jtb: Otherwise, "Vol" is Capitalized.
+
+ volume empty.or.unknown
+ { "" }
+ {
+ series empty.or.unknown
+ { "Vol." volume tie.or.space.connect}
+ { series ", " * "Vol." volume tie.or.space.connect *}
+ if$
+ "volume and number" number either.or.check
+ }
+ if$
+}
+
+FUNCTION { format.bvolume.noseries }
+{
+ volume empty.or.unknown
+ { "" }
+ {
+ series empty.or.unknown
+ { "Vol." volume tie.or.space.connect}
+ { "Vol." volume tie.or.space.connect}
+% { series ", " * "Vol." volume tie.or.space.connect *}
+ if$
+ "volume and number" number either.or.check
+ }
+ if$
+}
+
+FUNCTION { format.series }
+{
+ series empty.or.unknown
+ {""}
+ {" {\em (" * series ")}" *}
+ if$
+}
+
+FUNCTION { format.number.series }
+{
+ volume empty.or.unknown
+ {
+ number empty.or.unknown
+ {
+ volume empty.or.unknown
+ { "" }
+ {
+ series empty.or.unknown
+ { "" }
+ { " (" series * ")" * }
+ if$
+ }
+ if$
+ } % { series field.or.null }
+ {
+ output.state mid.sentence =
+ { "Number" } % gnp - changed to mixed case always
+ { "Number" }
+ if$
+ number tie.or.space.connect series empty.or.unknown
+ { "there's a number but no series in " cite$ * warning$ }
+ { " in " * series * }
+ if$
+ }
+ if$
+ }
+ {
+ ""
+ }
+ if$
+}
+
+FUNCTION { multi.page.check }
+{
+ 't :=
+ #0 'multiresult :=
+ { multiresult not
+ t empty.or.unknown not
+ and
+ }
+ { t #1 #1 substring$
+ duplicate$ "-" =
+ swap$ duplicate$ "," =
+ swap$ "+" =
+ or or
+ { #1 'multiresult := }
+ { t #2 global.max$ substring$ 't := }
+ if$
+ }
+ while$
+ multiresult
+}
+
+FUNCTION { format.pages }
+{
+ pages empty.or.unknown
+ { "" }
+ {
+ pages multi.page.check
+ { pages n.dashify } % gnp - removed () % jtb: removed pp.
+ { pages }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.pages.check.without.articleno }
+{ %% format pages field only if articleno is absent
+ %% Stack out: pages-specification
+ numpages missing$ pages missing$ and
+ { "page numbers missing in both pages and numpages fields in " cite$ * warning$ }
+ { }
+ if$
+
+ articleno empty.or.unknown
+ {
+ pages missing$
+ { numpages }
+ { format.pages }
+ if$
+ }
+ { "" }
+ if$
+}
+
+FUNCTION { format.pages.check }
+{
+ pages empty.or.unknown
+ { "page numbers missing in " cite$ * warning$ "" }
+ { pages n.dashify }
+ if$
+}
+
+FUNCTION { format.bookpages }
+{
+ bookpages empty.or.unknown
+ { "" }
+ { bookpages "book pages" tie.or.space.connect }
+ if$
+}
+
+FUNCTION { format.named.pages }
+{
+ pages empty.or.unknown
+ { "" }
+ { format.pages "pages" tie.or.space.connect }
+ if$
+}
+
+%
+% Changed by Boris Veytsman, 2011-03-13
+% Now the word "pages" is printed even if
+% there field pages is not empty.
+%
+
+FUNCTION { format.page.count }
+{
+ page.count empty.or.unknown
+ { "" }
+ {
+ articleno empty.or.unknown
+ { "numpages field, but no articleno field, in " cite$ * warning$ }
+ { }
+ if$
+ page.count "pages" tie.or.space.connect
+ }
+ if$
+}
+
+FUNCTION { format.articleno.numpages }
+{
+ %% There are seven possible outputs, depending on which fields are set.
+ %%
+ %% These four are handled here:
+ %%
+ %% articleno, numpages, pages -> "Article articleno-value, numpages-value pages"
+ %% articleno, numpages -> "Article articleno-value, numpages-value pages"
+ %% articleno, pages -> "Article articleno-value, reduced-pages-value pages"
+ %% articleno -> "Article articleno-value" and warn about missing numpages
+ %%
+ %% The remaining three have already been handled by
+ %% format.pages.check.without.articleno:
+ %%
+ %% numpages, pages -> "pages-value"
+ %% numpages -> "numpages-value"
+ %% pages -> "pages-value"
+
+ articleno empty.or.unknown
+ {
+ numpages empty.or.unknown
+ { }
+ { "require articleno with numpages field in " cite$ * warning$ }
+ if$
+ ""
+ }
+ {
+ numpages empty.or.unknown
+ {
+ pages empty.or.unknown
+ {
+ "require pages or numpages fields with articleno field in " cite$ * warning$
+ "" 'page.count :=
+ }
+ { reduce.pages.to.page.count }
+ if$
+ }
+ { numpages 'page.count := }
+ if$
+
+ %% The Article number is now handled in format.day.month.year because
+ %% ACM prefers the style "Digital Libraries 12, 3, Article 5 (July 2008)"
+ %% over "Digital Libraries 12, 3 (July 2008), Article 5"
+ %% format.articleno output
+ format.page.count
+ }
+ if$
+}
+
+FUNCTION { format.journal.volume.number.day.month.year }
+{
+ % By Young (and Spencer)
+ % GNP - fixed bugs with missing volume, number, and/or pages
+ %
+ % Format journal, volume, number, pages for article types.
+ %
+ journal empty.or.unknown
+ { "no journal in " cite$ * warning$
+ "" }
+% { journal emphasize.with.italic.correction }
+ {
+ journal "Journal of the ACM" =
+ { "{\it J. ACM}" }
+ {
+ journal "American Mathematical Society Translations" =
+ { "{\it Amer. Math. Soc. Transl.}" }
+ {
+ journal "Bulletin of the American Mathematical Society" =
+ { "{\it Bull. Amer. Math. Soc.}" }
+ {
+ journal "Proceedings of the American Mathematical Society" =
+ { "{\it Proc. Amer. Math. Soc.}" }
+ {
+ journal "Transactions of the American Mathematical Society" =
+ { "{\it Trans. Amer. Math. Soc.}" }
+ {
+ journal "Communications of the {ACM}" =
+ { "{\it Commun. {ACM}}" }
+ {
+ journal "{ACM} Computing Surveys" =
+ { "{\it Comput. Surveys}" }
+ {
+ journal "{ACM} Transactions on Mathematical Software" =
+ { "{\it {ACM} Trans. Math. Software}" }
+ {
+ journal "{ACM} {SIGNUM} Newsletter" =
+ { "{\it {ACM} {SIGNUM} Newslett.}" }
+ {
+ journal "American Journal of Sociology" =
+ { "{\it Amer. J. Sociology}" }
+ {
+ journal "Journal of the American Statistical Association" =
+ { "{\it J. Amer. Statist. Assoc.}" }
+ {
+ journal "Applied Mathematics and Computation" =
+ { "{\it Appl. Math. Comput.}" }
+ {
+ journal "American Mathematical Monthly" =
+ { "{\it Amer. Math. Monthly}" }
+ {
+ journal "British Journal of Mathematical and Statistical Psychology" =
+ { "{\it Brit. J. Math. Statist. Psych.}" }
+ {
+ journal "Canadian Mathematical Bulletin" =
+ { "{\it Canad. Math. Bull.}" }
+ {
+ journal "Journal of Computational and Applied Mathematics" =
+ { "{\it J. Comput. Appl. Math.}" }
+ {
+ journal "Journal of Computational Physics" =
+ { "{\it J. Comput. Phys.}" }
+ {
+ journal "Computers and Structures" =
+ { "{\it Comput. \& Structures}" }
+ {
+ journal "The Computer Journal" =
+ { "{\it Comput. J.}" }
+ {
+ journal "Journal of Computer and System Sciences" =
+ { "{\it J. Comput. System Sci.}" }
+ {
+ journal "Contemporary Mathematics" =
+ { "{\it Contemp. Math.}" }
+ {
+ journal "Crelle's Journal" =
+ { "{\it Crelle's J.}" }
+ {
+ journal "Giornale di Mathematiche" =
+ { "{\it Giorn. Mat.}" }
+ {
+ journal "{IEEE} Transactions on Computers" =
+ { "{\it {IEEE} Trans. Comput.}" }
+ {
+ journal "{IEEE} Transactions on Automatic Control" =
+ { "{\it {IEEE} Trans. Automat. Control}" }
+ {
+ journal "Proceedings of the {IEEE}" =
+ { "{\it Proc. {IEEE}}" }
+ {
+ journal "{IEEE} Transactions on Aerospace and Electronic Systems" =
+ { "{\it {IEEE} Trans. Aerospace Electron. Systems}" }
+ {
+ journal "{IMA} Journal of Numerical Analysis" =
+ { "{\it {IMA} J. Numer. Anal.}" }
+ {
+ journal "Information Processing Letters" =
+ { "{\it Inform. Process. Lett.}" }
+ {
+ journal "Journal of the Institute of Mathematics and its Applications" =
+ { "{\it J. Inst. Math. Appl.}" }
+ {
+ journal "International Journal of Control" =
+ { "{\it Internat. J. Control}" }
+ {
+ journal "International Journal for Numerical Methods in Engineering" =
+ { "{\it Internat. J. Numer. Methods Engrg.}" }
+ {
+ journal "International Journal of Supercomputing Applications" =
+ { "{\it Internat. J. Supercomputing Applic.}" }
+ {
+ journal "Journal of Research of the National Bureau of Standards" =
+ { "{\it J. Res. Nat. Bur. Standards}" }
+ {
+ journal "Linear Algebra and its Applications" =
+ { "{\it Linear Algebra Appl.}" }
+ {
+ journal "Journal of Mathematical Analysis and Applications" =
+ { "{\it J. Math. Anal. Appl.}" }
+ {
+ journal "Mathematische Annalen" =
+ { "{\it Math. Ann.}" }
+ {
+ journal "Journal of Mathematical Physics" =
+ { "{\it J. Math. Phys.}" }
+ {
+ journal "Mathematics of Computation" =
+ { "{\it Math. Comp.}" }
+ {
+ journal "Mathematica Scandinavica" =
+ { "{\it Math. Scand.}" }
+ {
+ journal "Mathematical Tables and Other Aids to Computation" =
+ { "{\it Math. Tables Aids Comput.}" }
+ {
+ journal "Numerische Mathematik" =
+ { "{\it Numer. Math.}" }
+ {
+ journal "Pacific Journal of Mathematics" =
+ { "{\it Pacific J. Math.}" }
+ {
+ journal "Journal of Parallel and Distributed Computing" =
+ { "{\it J. Parallel and Distrib. Comput.}" }
+ {
+ journal "Parallel Computing" =
+ { "{\it Parallel Comput.}" }
+ {
+ journal "Philosophical Magazine" =
+ { "{\it Philos. Mag.}" }
+ {
+ journal "Proceedings of the National Academy of Sciences of the USA" =
+ { "{\it Proc. Nat. Acad. Sci. U. S. A.}" }
+ {
+ journal "Quarterly Journal of Mathematics, Oxford, Series (2)" =
+ { "{\it Quart. J. Math. Oxford Ser. (2)}" }
+ {
+ journal "Quarterly of Applied Mathematics" =
+ { "{\it Quart. Appl. Math.}" }
+ {
+ journal "Review of the International Statisical Institute" =
+ { "{\it Rev. Inst. Internat. Statist.}" }
+ {
+ journal "Journal of the Society for Industrial and Applied Mathematics" =
+ { "{\it J. Soc. Indust. Appl. Math.}" }
+ {
+ journal "Journal of the Society for Industrial and Applied Mathematics, Series B, Numerical Analysis" =
+ { "{\it J. Soc. Indust. Appl. Math. Ser. B Numer. Anal.}" }
+ {
+ journal "{SIAM} Journal on Algebraic and Discrete Methods" =
+ { "{\it {SIAM} J. Algebraic Discrete Methods}" }
+ {
+ journal "{SIAM} Journal on Applied Mathematics" =
+ { "{\it {SIAM} J. Appl. Math.}" }
+ {
+ journal "{SIAM} Journal on Computing" =
+ { "{\it {SIAM} J. Comput.}" }
+ {
+ journal "{SIAM} Journal on Matrix Analysis and Applications" =
+ { "{\it {SIAM} J. Matrix Anal. Appl.}" }
+ {
+ journal "{SIAM} Journal on Numerical Analysis" =
+ { "{\it {SIAM} J. Numer. Anal.}" }
+ {
+ journal "{SIAM} Review" =
+ { "{\it {SIAM} Rev.}" }
+ {
+ journal "{SIAM} Journal on Scientific and Statistical Computing" =
+ { "{\it {SIAM} J. Sci. Statist. Comput.}" }
+ {
+ journal "Software Practice and Experience" =
+ { "{\it Software Prac. Experience}" }
+ {
+ journal "Statistical Science" =
+ { "{\it Statist. Sci.}" }
+ {
+ journal "{USSR} Computational Mathematics and Mathematical Physics" =
+ { "{\it {U. S. S. R.} Comput. Math. and Math. Phys.}" }
+ {
+ journal "Journal of {VLSI} and Computer Systems" =
+ { "{\it J. {VLSI} Comput. Syst.}" }
+ {
+ journal "Zeitschrift fur Angewandte Mathematik und Mechanik" =
+ { "{\it Z. Angew. Math. Mech.}" }
+ {
+ journal "Zeitschrift fur Angewandte Mathematik und Physik" =
+ { "{\it Z. Angew. Math. Phys.}" }
+ {
+ journal "ACM Computing Surveys" =
+ { "{\it Comput. Surveys}" }
+ {
+ journal "ACM Transactions on Mathematical Software" =
+ { "{\it ACM Trans. Math. Software}" }
+ {
+ journal "ACM {SIGNUM} Newsletter" =
+ { "{\it ACM {SIGNUM} Newslett.}" }
+ {
+ journal "IEEE Transactions on Computers" =
+ { "{\it IEEE Trans. Comput.}" }
+ {
+ journal "IEEE Transactions on Automatic Control" =
+ { "{\it IEEE Trans. Automat. Control}" }
+ {
+ journal "Proceedings of the IEEE" =
+ { "{\it Proc. IEEE}" }
+ {
+ journal "IEEE Transactions on Aerospace and Electronic Systems" =
+ { "{\it IEEE Trans. Aerospace Electron. Systems}" }
+ {
+ journal "IMA Journal of Numerical Analysis" =
+ { "{\it IMA J. Numer. Anal.}" }
+ {
+ journal "SIAM Journal on Algebraic and Discrete Methods" =
+ { "{\it SIAM J. Algebraic Discrete Methods}" }
+ {
+ journal "SIAM Journal on Applied Mathematics" =
+ { "{\it SIAM J. Appl. Math.}" }
+ {
+ journal "SIAM Journal on Computing" =
+ { "{\it SIAM J. Comput.}" }
+ {
+ journal "SIAM Journal on Matrix Analysis and Applications" =
+ { "{\it SIAM J. Matrix Anal. Appl.}" }
+ {
+ journal "SIAM Journal on Numerical Analysis" =
+ { "{\it SIAM J. Numer. Anal.}" }
+ {
+ journal "SIAM Review" =
+ { "{\it SIAM Rev.}" }
+ {
+ journal "SIAM Journal on Scientific and Statistical Computing" =
+ { "{\it SIAM J. Sci. Statist. Comput.}" }
+ {
+ journal "USSR Computational Mathematics and Mathematical Physics" =
+ { "{\it U. S. S. R. Comput. Math. and Math. Phys.}" }
+ {
+ journal "Journal of VLSI and Computer Systems" =
+ { "{\it J. VLSI Comput. Syst.}" }
+ {
+ journal "Communications of the ACM" =
+ { "{\it Commun. ACM}" }
+ %% If no match with cases needing special handling, just output journal name
+ { journal emphasize.with.italic.correction }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+
+ number empty.or.unknown
+ {
+ volume empty.or.unknown
+ { "no number and no volume in " cite$ * warning$ "" * }
+ { " " * " {" * volume * "}" * }
+ if$
+ }
+ {
+ volume empty.or.unknown
+ {
+ "unusual to have number, but no volume, for " cite$ * warning$
+ " " * number *
+ }
+ { " " * volume comma " " * number * * }
+ if$
+ }
+ if$
+
+ format.day.month.year *
+}
+
+FUNCTION { format.chapter.pages }
+{
+ chapter empty.or.unknown
+ 'format.pages
+ { type empty.or.unknown
+ { "Chapter" } % gnp - changed to mixed case
+ { type "t" change.case$ }
+ if$
+ chapter tie.or.space.connect
+ pages empty.or.unknown
+ {"page numbers missing in " cite$ * warning$} % gnp - added check
+ { ", " * format.pages * }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.in.emphasize.booktitle }
+{ % jtb: format for collections or proceedings not appearing in a journal
+ booktitle empty.or.unknown
+ { "" }
+ { "In " format.emphasize.booktitle * }
+ if$
+}
+
+FUNCTION { format.in.booktitle }
+{ % jtb: format for proceedings appearing in a journal
+ booktitle empty.or.unknown
+ { "" }
+ { "In " booktitle * }
+ if$
+}
+
+FUNCTION { format.in.ed.booktitle }
+{
+ booktitle empty.or.unknown
+ { "" }
+ { editor empty.or.unknown
+ { "In " format.emphasize.booktitle * }
+ % jtb: swapped editor location
+ { "In " format.emphasize.booktitle * ", " * format.editors.fml * }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.thesis.type }
+{ % call with default type on stack top
+ type empty.or.unknown
+ 'skip$ % use default type
+ {
+ pop$ % discard default type
+ % NO: it is silly to have to brace protect every degree type!: type "t" change.case$
+ type
+ }
+ if$
+}
+
+FUNCTION { format.tr.number }
+{
+ type empty.or.unknown
+ { "Tech. Rep." }
+ 'type
+ if$
+ number empty.or.unknown
+ { "t" change.case$ }
+ %% LOOKS BAD: { "." * number tie.or.space.connect }
+ %% Prefer "Research report RJ687." to "Research report. RJ687."
+ { number tie.or.space.connect }
+ if$
+}
+
+FUNCTION { format.advisor }
+{
+ advisor empty.or.unknown
+ { "" }
+ { "Advisor(s) " advisor * }
+ if$
+}
+
+FUNCTION { format.article.crossref }
+{ "See"
+ "\cite{" * crossref * "}" *
+}
+
+FUNCTION { format.crossref.editor }
+{
+ editor #1 "{vv~}{ll}" format.name$
+ editor num.names$ duplicate$
+ #2 >
+ { pop$ " et~al\mbox{.}" * } % jrh: avoid spacing problems
+ { #2 <
+ 'skip$
+ { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { " et~al\mbox{.}" * } % jrh: avoid spacing problems
+ { " and " * editor #2 "{vv~}{ll}" format.name$ * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.book.crossref }
+{
+ volume empty.or.unknown
+ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+ "In "
+ }
+ { "Volume" volume tie.or.space.connect % gnp - changed to mixed case
+ " of " *
+ }
+ if$
+ editor empty.or.unknown
+ editor field.or.null author field.or.null =
+ or
+ { key empty.or.unknown
+ { series empty.or.unknown
+ { "need editor, key, or series for " cite$ * " to crossref " *
+ crossref * warning$
+ "" *
+ }
+ { "{\em " * series * "\/}" * }
+ if$
+ }
+ { key * }
+ if$
+ }
+ { format.crossref.editor * }
+ if$
+ " \cite{" * crossref * "}" *
+}
+
+FUNCTION { format.incoll.inproc.crossref }
+{ "See"
+ " \cite{" * crossref * "}" *
+}
+
+FUNCTION { output.bibitem }
+{
+ newline$
+ "\bibitem[" write$
+ label write$
+ "]%" writeln
+ " {" write$
+ cite$ write$
+ "}" writeln
+ ""
+ before.all 'output.state :=
+}
+
+FUNCTION { output.issue.doi.coden.isxn.lccn.url }
+{ % enter and return with stack empty
+ %% We switch now from buffered output to output of complete lines, so
+ %% that the Issue .. URL data have their own lines, and are less likely
+ %% to be line-wrapped by BibTeX's short-sighted algorithm, which wraps
+ %% lines longer than 79 characters, backtracking to what it thinks is
+ %% a break point in the string. Any such wrapping MUST be undone to
+ %% prevent percent-newline from appearing in DOIs and URLs. The
+ %% output data are intentionally wrapped in \showxxx{} macros at
+ %% beginning of line, and that supply their own punctuation (if they
+ %% are not defined to suppress output entirely), to make it easier for
+ %% other software to recover them from .bbl files.
+ %%
+ %% It also makes it possible to later change the macro definitions
+ %% to suppress particular output values, or alter their appearance.
+ %%
+ %% Note that it is possible for theses, technical reports, and
+ %% manuals to have ISBNs, and anything that has an ISBN may also
+ %% have an ISSN. When there are no values for these keys, there
+ %% is no output generated for them here.
+
+ "\newblock" writeln
+ after.block 'output.state :=
+
+ output.issue
+ output.isbn
+ output.coden % CODEN is functionally like ISSN, so output them sequentially
+ output.issn
+ output.lccn
+ output.doi % DOI is ALWAYS last according to CrossRef DOI documentation
+ output.url % but ACM wants URL last
+}
+
+FUNCTION { output.issue.doi.coden.isxn.lccn.url.note }
+{ % enter with stack empty, return with empty string on stack
+ output.issue.doi.coden.isxn.lccn.url
+ note empty.or.unknown
+ { }
+ {
+ "\newblock" writeln
+ output.note
+ }
+ if$
+ ""
+}
+
+FUNCTION { output.issue.doi.coden.isxn.lccn.url.note.check }
+{ % enter with stack empty, return with empty string on stack
+ output.issue.doi.coden.isxn.lccn.url
+ note empty.or.unknown
+ { }
+ {
+ "\newblock" writeln
+ output.note.check
+ }
+ if$
+ ""
+}
+
+FUNCTION { article }
+{
+ output.bibitem
+
+ author empty.or.unknown
+ {
+ editor empty.or.unknown
+ { "neither author and editor supplied for " cite$ * warning$ }
+ { format.editors "editor" output.check }
+ if$
+ }
+ { format.authors "author" output.check }
+ if$
+
+ author format.no.key output % added
+ output.year.check % added
+ new.block
+ format.articletitle "title" output.check
+ new.block
+ howpublished output
+
+ crossref missing$
+ { format.journal.volume.number.day.month.year }
+ {
+ "cross reference in @Article{...} is unusual" warning$
+ format.article.crossref output.nonnull
+ }
+ if$
+ output
+
+ format.pages.check.without.articleno output
+ format.articleno.numpages output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { book }
+{
+ output.bibitem
+ author empty.or.unknown
+ { format.editors "author and editor" output.check }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ output.year.check % added
+ new.block
+ format.btitle "title" output.check
+ crossref missing$
+ { new.sentence % jtb: start a new sentence for series/volume
+ format.bvolume output
+ new.block
+ format.number.series output
+ new.sentence
+ publisher "publisher" output.check
+ address "address" output.check % jtb: require address
+ fin.sentence
+ pages empty.or.unknown
+ { format.bookpages } % use bookpages when pages empty
+ { format.pages.check "pages" tie.or.space.connect }
+ if$
+ output
+ }
+ { new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { booklet }
+{
+ output.bibitem
+ format.authors output
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.title "title" output.check
+ new.block
+ howpublished output
+ address output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { inbook }
+{
+ output.bibitem
+ author empty.or.unknown
+ { format.editors
+ "author and editor" output.check
+ }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ output.year.check % added
+ new.block
+ format.btitle "title" output.check
+ crossref missing$
+ { new.sentence % jtb: start a new sentence for series/volume
+ format.bvolume output
+ new.block
+ format.number.series output
+ new.sentence
+ publisher "publisher" output.check
+ address "address" output.check % jtb: require address
+ format.bookpages output
+ format.chapter.pages
+ "chapter and pages" output.check % jtb: moved from before publisher
+ }
+ {
+ format.bookpages output
+ format.chapter.pages "chapter and pages" output.check
+ new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { incollection }
+{
+ output.bibitem
+ format.authors "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.articletitle "title" output.check
+ new.block
+ crossref missing$
+ { format.in.ed.booktitle "booktitle" output.check
+ new.sentence % jtb: start a new sentence for series/volume
+ format.bvolume output
+ format.number.series output
+ new.sentence
+ publisher "publisher" output.check
+ address "address" output.check % jtb: require address
+ format.bookpages output
+ format.chapter.pages output % gnp - was special.output.nonnull
+ % left out comma before page numbers
+ % jtb: moved from before publisher
+ }
+ {
+ format.incoll.inproc.crossref output.nonnull
+ format.chapter.pages output
+ }
+ if$
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { inproceedings }
+{
+ output.bibitem
+ format.authors "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.articletitle "title" output.check
+ howpublished output.dot.space
+ crossref missing$
+ {
+ journal missing$ % jtb: proceedings appearing in journals
+ { format.in.emphasize.booktitle format.city "booktitle" output.check.dot.space
+ format.series output.removenospace
+ format.editors.fml output.dot.space
+ format.bvolume.noseries output
+ new.sentence
+ organization output
+ publisher "publisher" output.check % jtb: require publisher (?)
+ address "address" output.check % jtb: require address
+ format.bookpages output
+ }
+ {
+ format.in.booktitle format.city "booktitle" output.check
+ format.editors.fml output
+ new.sentence
+ format.journal.volume.number.day.month.year output
+ }
+ if$
+ format.articleno output
+ format.pages.check.without.articleno output
+ }
+ {
+ format.incoll.inproc.crossref output.nonnull
+ format.articleno output
+ format.pages.check.without.articleno output
+ }
+ if$
+ format.articleno.numpages output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { conference } { inproceedings }
+
+FUNCTION { manual }
+{
+ output.bibitem
+ author empty.or.unknown
+ { editor empty.or.unknown
+ { organization "organization" output.check
+ organization format.key output } % if all else fails, use key
+ { format.editors "author and editor" output.check }
+ if$
+ }
+ { format.authors output.nonnull }
+ if$
+ output.year.check % added
+ new.block
+ format.btitle "title" output.check
+ organization address new.block.checkb
+ % jtb: back to normal style: organization, address
+ organization "organization" output.check
+ address output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { mastersthesis }
+{
+ output.bibitem
+ format.authors "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.title emphasize "title" output.check % NB: ACM style requires emphasized thesis title
+ new.block
+ "M.S.\ thesis" format.thesis.type output.nonnull
+ school "school" output.check
+ address output
+ new.block
+ format.advisor output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { misc }
+{
+ output.bibitem
+ format.authors output
+ author format.key output % added
+ output.year.check % added
+ title howpublished new.block.checkb
+ format.title output
+ new.block
+ howpublished output
+ "" output.nonnull.dot.space
+ output.day.month.year
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { phdthesis }
+{
+ output.bibitem
+ format.authors "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.title emphasize "title" output.check % NB: ACM style requires emphasized thesis title
+ new.block
+ "Ph.D. thesis" format.thesis.type output.nonnull
+ school "school" output.check
+ address output
+ new.block
+ format.advisor output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION {format.date}
+{ year empty.or.unknown
+ { month empty.or.unknown
+ {
+ "" % output empty date if year/month both empty
+ day empty.or.unknown
+ { }
+ { "there's a day but no month or year in " cite$ * warning$ }
+ if$
+ }
+ { "there's a month but no year in " cite$ * warning$
+ month
+ day empty.or.unknown
+ { }
+ { " " * day * }
+ if$
+ }
+ if$
+ }
+ { month empty.or.unknown
+ {
+ year % output only year if month empty
+ day empty.or.unknown
+ { }
+ { "there's a day and year but no month in " cite$ * warning$ }
+ if$
+ }
+ {
+ month " " *
+ day empty.or.unknown
+ { }
+ { day * ", " * }
+ if$
+ year *
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {new.block.checka}
+{
+ empty.or.unknown
+ 'skip$
+ 'new.block
+ if$
+}
+
+FUNCTION { periodical }
+{
+ output.bibitem
+ editor empty.or.unknown
+ { organization output }
+ { format.editors output.nonnull }
+ if$
+ new.block
+ title emphasize "title" output.check
+ format.date output
+ new.sentence
+ publisher output
+ address output
+ howpublished new.block.checka
+ howpublished output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { proceedings }
+{
+ output.bibitem
+ editor empty.or.unknown
+ { organization output
+ organization format.key output } % gnp - changed from author format.key
+ { format.editors output.nonnull }
+ if$
+ % author format.key output % gnp - removed (should be either
+ % editor or organization
+ output.year.check % added (newapa)
+ new.block
+ format.btitle format.city "title" output.check % jtb: added city
+ new.sentence
+ format.bvolume output
+ format.number.series output
+ new.sentence
+ organization output
+ % jtb: normal order: publisher, address
+ publisher output
+ address output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { techreport }
+{
+ output.bibitem
+ format.authors "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.btitle "title" output.check
+ new.block
+ format.tr.number output % jtb: moved month ...
+ institution "institution" output.check
+ address output
+ new.sentence
+ format.named.pages output
+ % ACM omits year at end in transactions style
+ % format.day.month.year output.nonnull.dot.space % jtb: ... to here (no parens)
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { unpublished }
+{
+ output.bibitem
+ format.authors
+ "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.title "title" output.check
+ fin.sentence
+ output.day.month.year % UTAH
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note.check
+ fin.entry
+}
+
+FUNCTION { default.type } { misc }
+
+MACRO {jan} {"January"}
+
+MACRO {feb} {"February"}
+
+MACRO {mar} {"March"}
+
+MACRO {apr} {"April"}
+
+MACRO {may} {"May"}
+
+MACRO {jun} {"June"}
+
+MACRO {jul} {"July"}
+
+MACRO {aug} {"August"}
+
+MACRO {sep} {"September"}
+
+MACRO {oct} {"October"}
+
+MACRO {nov} {"November"}
+
+MACRO {dec} {"December"}
+
+%%% ====================================================================
+%%% I M P O R T A N T C H A N G E
+%%%
+%%% For the 2009 release of the official acm-*.bst files, there are to
+%%% be NO predefined journal abbreviations in those style files.
+%%%
+%%% ACM may later develop an official list of mappings of full journal
+%%% names of commonly-cited journals to ACM-preferred abbreviations, but
+%%% authors should consider that use of any of these commented-out
+%%% abbreviations is DEPRECATED unless the BibTeX file itself provides
+%%% its own @String{name = "value"} definitions.
+%%%
+%%% Use of journal (and publisher and address) @String{...}
+%%% abbreviations, as opposed to explicit value assignments such as
+%%% journal = "J. ACM" and publisher = "IEEE", is preferred in
+%%% bibliographic databases, because it makes it easier for journal
+%%% production staff to replace those definitions by publisher-preferred
+%%% abbreviations when articles are typeset for publication.
+%%%
+%%% For historical reasons, and because some of these abbreviations are
+%%% used in other (non-ACM) bibliography style files, they are preserved
+%%% here in comments. Future releases of the acm*-.bst files are likely
+%%% to remove them entirely.
+%%% ====================================================================
+%%%
+%%% DEPRECATED: MACRO {acmcs} {"ACM Comput. Surv."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {acmlett} {"ACM Lett. Program. Lang. Syst."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {acta} {"Acta Inf."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ai} {"Artificial Intelligence"}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {al} {"Ada Lett."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {acr} {"Adv. Comput. Res."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {bit} {"Bit"}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {cacm} {"Commun. ACM"} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {cj} {"Comput. J."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {cn} {"Comput. Netw."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {cl} {"Comput. Lang."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ibmjrd} {"IBM J. Res. and Development"} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ibmsj} {"IBM Systems Journal"} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ict} {"Inf. Contr."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieebcs} {"IEE/BCS Softw. Eng. J."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieees} {"IEEE Softw."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieeese} {"IEEE Trans. Softw. Eng."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieeetc} {"IEEE Trans. Comput."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieeetcad} {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieeetpds} {"IEEE Trans. Parall. Distrib. Syst."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieeetit} {"IEEE Trans. Inf. Theory"}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ipl} {"Inf. Process. Lett."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {icp} {"Inf. Comput."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ist} {"Inf. Softw. Tech."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ijsa} {"Int. J. Supercomput. Appl."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ijpp} {"Int. J. Parallel Program."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jacm} {"J. ACM"} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: % MACRO {jcss} {"Journal of Computer and System Sciences"} % original BibTeX
+%%% DEPRECATED: MACRO {jcss} {"J. Comput. Syst. Sci."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jlp} {"J. Logic Program."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jfp} {"J. Funct. Program."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jsmrp} {"J. Softw. Maint. Res. Pract."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jss} {"J. Syst. Softw."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jlc} {"J. Logic and Comput."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jlsc} {"J. Lisp Symb. Comput."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {lpls} {"Lett. Program. Lang. Syst."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {mor} {"Math. Oper. Res."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {mscs} {"Math. Struct. Comput. Sci."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {mst} {"Math. Syst. Theor."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ngc} {"New Gen. Comput."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {scp} {"Sci. Comput. Program."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {sicomp} {"SIAM J. Comput."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {spe} {"Softw. Pract. Exper."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {tocs} {"ACM Trans. Comput. Syst."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {tods} {"ACM Trans. Database Syst."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {tog} {"ACM Trans. Graphics"} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {toms} {"ACM Trans. Math. Softw."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {toois} {"ACM Trans. Office Inf. Syst."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {toplas} {"ACM Trans. Program. Lang. Syst."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {tcs} {"Theor. Comput. Sci."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {tr} {"Tech. Rep."}
+%%% ====================================================================
+
+READ
+
+INTEGERS { et.al.char.used }
+
+FUNCTION {initialize.et.al.char.used}
+{ #0 'et.al.char.used :=
+}
+
+EXECUTE {initialize.et.al.char.used}
+
+FUNCTION {format.lab.names}
+{ 's :=
+ s num.names$ 'numnames :=
+ numnames #1 >
+ { numnames #4 >
+ { #3 'namesleft := }
+ { numnames 'namesleft := }
+ if$
+ #1 'nameptr :=
+ ""
+ { namesleft #0 > }
+ { nameptr numnames =
+ { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { "{\etalchar{+}}" *
+ #1 'et.al.char.used :=
+ }
+ { s nameptr "{v{}}{l{}}" format.name$ * }
+ if$
+ }
+ { s nameptr "{v{}}{l{}}" format.name$ * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+ numnames #4 >
+ { "{\etalchar{+}}" *
+ #1 'et.al.char.used :=
+ }
+ 'skip$
+ if$
+ }
+ { s #1 "{v{}}{l{}}" format.name$
+ duplicate$ text.length$ #2 <
+ { pop$ s #1 "{ll}" format.name$ #3 text.prefix$ }
+ 'skip$
+ if$
+ }
+ if$
+}
+
+FUNCTION { author.key.label }
+{
+ author empty.or.unknown
+ { key empty.or.unknown
+ { "no key, author in " cite$ * warning$
+ cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION { author.key.organization.label }
+{ % added - gnp. Provide label formatting by organization if author is null.
+ author empty.or.unknown
+ { organization empty.or.unknown
+ { key empty.or.unknown
+ { "no key, author or organization in " cite$ * warning$
+ cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { organization }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION { editor.key.organization.label }
+{ % added - gnp. Provide label formatting by organization if editor is null.
+ editor empty.or.unknown
+ { organization empty.or.unknown
+ { key empty.or.unknown
+ { "no key, editor or organization in " cite$ * warning$
+ cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { organization }
+ if$
+ }
+ { editor format.lab.names }
+ if$
+}
+
+FUNCTION { author.editor.key.label }
+{
+ author empty.or.unknown
+ { editor empty.or.unknown
+ { key empty.or.unknown
+ { "no key, author, or editor in " cite$ * warning$
+ cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.lab.names }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION { sortify }
+{
+ purify$
+ "l" change.case$
+}
+
+FUNCTION { calc.label }
+{
+ type$ "book" =
+ type$ "inbook" =
+ or
+ type$ "periodical" =
+ or
+ 'author.editor.key.label
+ { type$ "proceedings" =
+ 'editor.key.organization.label
+ { type$ "manual" =
+ 'author.key.organization.label
+ 'author.key.label
+ if$
+ }
+ if$
+ }
+ if$
+ duplicate$
+ year field.or.null purify$ #-1 #2 substring$
+ *
+ 'label :=
+ year field.or.null purify$ #-1 #4 substring$
+ *
+ sortify 'sort.label :=
+}
+
+FUNCTION { chop.word }
+{
+ 's :=
+ 'len :=
+ s #1 len substring$ =
+ { s len #1 + global.max$ substring$ }
+ 's
+ if$
+}
+
+FUNCTION { sort.format.names }
+{
+ 's :=
+ #1 'nameptr :=
+ ""
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { nameptr #1 >
+ { " " * }
+ 'skip$
+ if$
+ % s nameptr "{ff{ } }{ll{ }}{ vv{ }}{ jj{ }}" format.name$ 't :=
+ s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't :=
+ nameptr numnames = t "others" = and
+ { " et~al" * }
+ { t sortify * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION { sort.format.title }
+{
+ 't :=
+ "A " #2
+ "An " #3
+ "The " #4 t chop.word
+ chop.word
+ chop.word
+ sortify
+ #1 global.max$ substring$
+}
+
+FUNCTION { author.sort }
+{
+ author empty.or.unknown
+ { key empty.or.unknown
+ { "to sort, need author or key in " cite$ * warning$
+ "" }
+ { key sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION { author.editor.sort }
+{
+ author empty.or.unknown
+ {
+ editor empty.or.unknown
+ {
+ key empty.or.unknown
+ { "to sort, need author, editor, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION { author.organization.sort }
+{
+ % added - GNP. Stack author or organization for sorting (from alpha.bst).
+ % Unlike alpha.bst, we need entire names, not abbreviations
+
+ author empty.or.unknown
+ { organization empty.or.unknown
+ { key empty.or.unknown
+ { "to sort, need author, organization, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { organization sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION { editor.organization.sort }
+{
+ % added - GNP. Stack editor or organization for sorting (from alpha.bst).
+ % Unlike alpha.bst, we need entire names, not abbreviations
+
+ editor empty.or.unknown
+ { organization empty.or.unknown
+ { key empty.or.unknown
+ { "to sort, need editor, organization, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { organization sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+}
+
+FUNCTION {presort}
+{ calc.label
+ sort.label
+ " "
+ *
+ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.sort
+ { type$ "proceedings" =
+ 'editor.organization.sort
+ { type$ "manual" =
+ 'author.organization.sort
+ 'author.sort
+ if$
+ }
+ if$
+ }
+ if$
+ *
+ " "
+ *
+ year field.or.null sortify
+ *
+ " "
+ *
+ title field.or.null
+ sort.format.title
+ *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+ITERATE { presort }
+
+SORT % by label, year, author/editor, title
+
+STRINGS { longest.label last.sort.label next.extra }
+
+INTEGERS { longest.label.width last.extra.num }
+
+FUNCTION {initialize.longest.label}
+{ "" 'longest.label :=
+ #0 int.to.chr$ 'last.sort.label :=
+ "" 'next.extra :=
+ #0 'longest.label.width :=
+ #0 'last.extra.num :=
+ "NOT-YET-SET" 'last.label :=
+}
+
+FUNCTION { forward.pass }
+{ % Pass through all entries, comparing current entry to last one.
+ % Need to concatenate year to the stack (done by calc.label) to determine
+ % if two entries are the same (see presort)
+ last.label % push last.label on stack
+ calc.label % set label and sort.label
+ label % push \bibitem label on stack
+ year field.or.null purify$
+ #-1 #4 substring$ * % add year to \bibitem label on stack
+ #1 entry.max$ substring$ = % are last.label and modified \bibitem label equal?
+ {
+ last.extra.num #1 +
+ 'last.extra.num :=
+ last.extra.num int.to.chr$ 'extra.label :=
+ }
+ {
+ "a" chr.to.int$
+ 'last.extra.num :=
+ "" 'extra.label :=
+ calc.label
+ label % push \bibitem label on stack
+ year field.or.null purify$
+ #-1 #4 substring$ * % add year to \bibitem label on stack
+ #1 entry.max$ substring$ 'last.label :=
+ }
+ if$
+}
+
+FUNCTION {reverse.pass}
+{ next.extra "b" =
+ { "a" 'extra.label := }
+ 'skip$
+ if$
+ label extra.label * 'label :=
+ label width$ longest.label.width >
+ { label 'longest.label :=
+ label width$ 'longest.label.width :=
+ }
+ 'skip$
+ if$
+ extra.label 'next.extra :=
+}
+
+EXECUTE {initialize.longest.label}
+
+ITERATE {forward.pass}
+
+REVERSE {reverse.pass}
+
+FUNCTION { bib.sort.order }
+{
+ sort.label
+ " "
+ *
+ year field.or.null sortify
+ *
+ " "
+ *
+ title field.or.null
+ sort.format.title
+ *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+ITERATE { bib.sort.order }
+
+SORT % by sort.label, year, title --- giving final bib. order.
+
+FUNCTION { begin.bib }
+{
+ %% Set to #0 show 13-digit ISBN in preference to 10-digit ISBN.
+ %% Set to #1 to show both 10-digit and 13-digit ISBNs.
+ #1 'show-isbn-10-and-13 :=
+
+ "%%% -*-BibTeX-*-" writeln
+ "%%% Do NOT edit. File created by BibTeX with style acmtrans-v2 [15-Nov-2008]." writeln
+ "" writeln
+
+ et.al.char.used
+ { "\ifx \etalchar \undefined \newcommand{\etalchar}[1]{$^{#1}$} \fi" write$ newline$ }
+ 'skip$
+ if$
+
+ preamble$ empty.or.unknown
+ 'skip$
+ { preamble$ writeln }
+ if$
+ "\begin{thebibliography}{" longest.label * "}" * writeln
+ "" writeln
+ "%%% ====================================================================" writeln
+ "%%% NOTE TO THE USER: you can override these defaults by providing" writeln
+ "%%% customized versions of any of these macros before the \bibliography" writeln
+ "%%% command. Each of them MUST provide its own final punctuation," writeln
+ "%%% except for \shownote{}, \showDOI{}, and \showURL{}. The latter two" writeln
+ "%%% do not use final punctuation, in order to avoid confusing it with" writeln
+ "%%% the Web address." writeln
+ "%%%" writeln
+ "%%% To suppress output of a particular field, define its macro to expand" writeln
+ "%%% to an empty string, or better, \unskip, like this:" writeln
+ "%%%" writeln
+ "%%% \newcommand{\showDOI}[1]{\unskip} % LaTeX syntax" writeln
+ "%%%" writeln
+ "%%% \def \showDOI #1{\unskip} % plain TeX syntax" writeln
+ "%%%" writeln
+ "%%% ====================================================================" writeln
+ "" writeln
+
+ %% ACM publications do not use CODEN, ISSN, and LCCN data, so their default
+ %% macro wrappers expand to \unskip, discarding their values and unwanted
+ %% space.
+ %%
+ %% For other publications, prior definitions like these may be useful:
+ %%
+ %% Plain TeX:
+ %% \def \showCODEN #1{CODEN #1.}
+ %% \def \showISSN #1{ISSN #1.}
+ %% \def \showLCCN #1{LCCN #1.}
+ %%
+ %% LaTeX:
+ %% \newcommand{\showCODEN}[1]{CODEN #1.}
+ %% \newcommand{\showISSN}[1]#1{ISSN #1.}
+ %% \newcommand{\showLCCN}[1]{LCCN #1.}
+
+ "\ifx \showCODEN \undefined \def \showCODEN #1{\unskip} \fi" writeln
+ "\ifx \showDOI \undefined \def \showDOI #1{{\tt DOI:}\penalty0{#1}\ } \fi" writeln
+ % ACM styles omit ISBNs, but they can be included by suitable definitions of
+ % \showISBNx and \showISBNxiii before the .bbl file is read
+ "\ifx \showISBNx \undefined \def \showISBNx #1{\unskip} \fi" writeln
+ "\ifx \showISBNxiii \undefined \def \showISBNxiii #1{\unskip} \fi" writeln
+ "\ifx \showISSN \undefined \def \showISSN #1{\unskip} \fi" writeln
+ "\ifx \showLCCN \undefined \def \showLCCN #1{\unskip} \fi" writeln
+ "\ifx \shownote \undefined \def \shownote #1{#1} \fi" writeln % NB: final period supplied by add.period$ above
+ "\ifx \showarticletitle \undefined \def \showarticletitle #1{#1} \fi" writeln
+ "\ifx \showURL \undefined \def \showURL #1{#1} \fi" writeln
+}
+
+EXECUTE {begin.bib}
+
+EXECUTE {init.state.consts}
+
+ITERATE {call.type$}
+
+FUNCTION { end.bib }
+{
+ newline$
+ "\end{thebibliography}"
+ writeln
+}
+
+EXECUTE {end.bib}
diff --git a/Master/texmf-dist/bibtex/bst/acmart/acm-plain.bst b/Master/texmf-dist/bibtex/bst/acmart/acm-plain.bst
new file mode 100644
index 00000000000..43121f83a3c
--- /dev/null
+++ b/Master/texmf-dist/bibtex/bst/acmart/acm-plain.bst
@@ -0,0 +1,3311 @@
+%%% -*-BibTeX-*-
+%%% ====================================================================
+%%% @BibTeX-style-file{
+%%% author = "Nelson H. F. Beebe and many others",
+%%% version = "1.03",
+%%% date = "15 April 2011",
+%%% time = "23:53:39 EDT",
+%%% filename = "acm-plain.bst",
+%%% address = "University of Utah
+%%% Department of Mathematics, 110 LCB
+%%% 155 S 1400 E RM 233
+%%% Salt Lake City, UT 84112-0090
+%%% USA",
+%%% telephone = "+1 801 581 5254",
+%%% FAX = "+1 801 581 4148",
+%%% URL = "http://www.math.utah.edu/~beebe",
+%%% checksum = "43736 3311 12014 90145",
+%%% email = "beebe@math.utah.edu, beebe@acm.org,
+%%% beebe@computer.org",
+%%% codetable = "ISO/ASCII",
+%%% keywords = "ACM plain bibliography style; BibTeX",
+%%% license = "public domain",
+%%% supported = "yes",
+%%% abstract = "",
+%%% docstring = "The checksum field above contains a CRC-16
+%%% checksum as the first value, followed by the
+%%% equivalent of the standard UNIX wc (word
+%%% count) utility output of lines, words, and
+%%% characters. This is produced by Robert
+%%% Solovay's checksum utility.",
+%%% }
+%%% ====================================================================
+
+% "ACM plain" BibTeX style, derived by minimal modifications from acm-trans.bst
+% "ACM Transactions" BibTeX style, acmtrans-v2.bst
+% for BibTeX version 0.99c, LaTeX version 3.141
+% ACM extensions with code cleaned up, extended, and debugged 10--15-Nov-2008
+% Revised 28-MARCH-1996
+% Revised 30-JUNE-1995
+% Revised 15-JAN-1996
+% Revised 17-APRIL-2008
+% Revised 13-MARCH-2011
+% Revised 27-MARCH-2011
+% Revised 15-APRIL-2011
+%
+% Hacked by John T. Boyland at University of California, Berkeley
+% (with assistance by John R. Hauser)
+% Hacked by Andrew W. Appel and Rebecca L. Davies at Princeton University,
+% based on a "chicago.bst" by Glenn Paulley at U. Waterloo,
+% which was based on "newapa.bst" found at ymir.claremont.edu.
+%
+% Version 2.2
+% Johny Sebatian and Sanjeev Sharma
+% Aptara corp (c) 2008
+%
+% History
+%
+% Date: 28th April 2008
+%
+% 1. Avoid 'repeating' the 'month' values.
+% 2. Avoid incorrectly italicizing the volume number.
+% 3. Avoid non italicizing certain titles (book, inproceedings etc).
+% 4. NO series if there is NO volume.
+% 5. Sorting of reference with first surname.
+% 6. Article no added for Inproceedings.
+%
+% Date: 07th May 2008
+%
+% 1. Abbreviation list added
+%
+% Citation format: [author-last-name year]
+% [author-last-name and author-last-name year]
+% [author-last-name, author-last-name, and author-last-name year]
+% [author-last-name et al. year]
+% [author-last-name]
+% author-last-name [year]
+% [author-last-name and author-last-name]
+% [author-last-name et al.]
+% [year] or [year,year]
+% year or year,year
+%
+% Reference list ordering: alphabetical by author or whatever passes
+% for author in the absence of one.
+%
+% This BibTeX style has support for abbreviated author lists and for
+% year-only citations. This is done by having the citations
+% actually look like
+%
+% \citeauthoryear{full-author-info}{abbrev-author-info}{year}
+%
+% The LaTeX style has to have the following (or similar)
+%
+% \let\@internalcite\cite
+% \def\fullcite{\def\citeauthoryear##1##2##3{##1, ##3}\@internalcite}
+% \def\fullciteA{\def\citeauthoryear##1##2##3{##1}\@internalcite}
+% \def\shortcite{\def\citeauthoryear##1##2##3{##2, ##3}\@internalcite}
+% \def\shortciteA{\def\citeauthoryear##1##2##3{##2}\@internalcite}
+% \def\citeyear{\def\citeauthoryear##1##2##3{##3}\@internalcite}
+%
+% These TeX macro definitions are found in acmtrans.sty. Additional
+% commands to manipulate different components of a citation can be defined
+% so that, for example, you can list author's names without parentheses
+% if using a citation as a noun or object in a sentence.
+%
+% Features of acmtrans.bst:
+% ========================
+%
+% - all authors appear last name first.
+% - all pages are listed xx-xx, (no pp.) and are at the end of the reference
+% - publishers are identified as publisher, address
+% - conferences papers (inproceedings) may give city of conference,
+% date of conference, and journal that the proceedings appear in.
+% - months abbreviated to max four letters (eg. Mar.)
+% - volume of a series indicated after the title of the series
+% - editors appear after edited title and are identified by a trailing "Eds."
+% not in parentheses. Editor names are not given in small caps.
+% (unless there is no author line)
+% - names terminated with a period even if there is no first name.
+% - editions are indicated trailing after the work, not in parentheses.
+% - "et al." citations have a protected period to avoid bad spacing (jrh)
+% - "address" required when publisher given
+% - series (roman) and volume are in a sentence separate from (book-)title
+%
+%
+% Features of chicago.bst:
+% =======================
+%
+% - full names used in citations, but abbreviated citations are available
+% (see above)
+% - if an entry has a "month", then the month and year are also printed
+% as part of that bibitem.
+% - all conjunctions use "and" instead of "\&"
+% - major modification from Chicago Manual of Style (13th ed.) is that
+% only the first author in a reference appears last name first-
+% additional authors appear as J. Q. Public.
+% - pages are listed as "pp. xx-xx" in all entry types except
+% article entries.
+% - book, inbook, and manual use "location: publisher" (or organization)
+% for address and publisher. All other types list publishers separately.
+% - "pp." are used to identify page numbers for all entry types except
+% articles.
+% - organization is used as a citation label if neither author nor editor
+% is present (for manuals).
+% - "et al." is used for long author and editor lists, or when "others"
+% is used.
+%
+% Modifications and bug fixes from newapa.bst:
+% ===========================================
+%
+% - added month, year to bib entries if month is present
+% - fixed bug with In proceedings, added necessary comma after title
+% - all conjunctions changed to "and" from "\&"
+% - fixed bug with author labels in my.full.label: "et al." now is
+% generated when "others" is an author name
+% - major modification from Chicago Manual of Style (13th ed.) is that
+% only the first author in a reference appears last name first-
+% additional authors appear as J. Q. Public.
+% - pages are listed as "pp. xx-xx" in all entry types except
+% article entries. Unnecessary (IMHO) "()" around page numbers
+% were removed, and page numbers now don't end with a period.
+% - created chicago.sty for use with this bibstyle (required).
+% - fixed bugs in FUNCTION {format.vol.num.pages} for missing volume,
+% number, and /or pages. Renamed to format.journal.volume.number.
+% - fixed bug in formatting booktitles: additional period an error if
+% book has a volume.
+% - fixed bug: editors usually given redundant period before next clause
+% (format.editors.dot) removed.
+% - added label support for organizations, if both author and editor
+% are missing (from alpha.bst). If organization is too long, then
+% the key field is used for abbreviated citations.
+% - In proceedings or books of several volumes, no comma was written
+% between the "Volume x" and the page numbers (this was intentional
+% in newapa.bst). Fixed.
+% - Some journals may not have volumes/numbers, only month/year (eg.
+% IEEE Computer). Fixed bug in article style that assumed volume/number
+% was always present.
+%
+% Original documentation for newapa.sty:
+% =====================================
+%
+% This version was made by modifying the master file made by
+% Oren Patashnik (PATASHNIK@SCORE.STANFORD.EDU), and the 'named' BibTeX
+% style of Peter F. Patel-Schneider.
+%
+% Copyright (C) 1985, all rights reserved.
+% Copying of this file is authorized only if either
+% (1) you make absolutely no changes to your copy, including name, or
+% (2) if you do make changes, you name it something other than 'newapa.bst'.
+% There are undoubtably bugs in this style. If you make bug fixes,
+% improvements, etc. please let me know. My e-mail address is:
+% spencer@cgrg.ohio.state.edu or 71160.3141@compuserve.com
+%
+% This style was made from 'plain.bst', 'named.bst', and 'apalike.bst',
+% with lots of tweaking to make it look like APA style, along with tips
+% from Young Ryu and Brian Reiser's modifications of 'apalike.bst'.
+
+ENTRY
+ { address
+ advisor
+ author
+ booktitle
+ chapter
+ city % jtb: added
+ date % jtb: added
+ edition
+ editor
+ howpublished
+ institution
+ journal
+ key
+ month
+ note
+ number
+ organization
+ pages
+ publisher
+ school
+ series
+ title
+ type
+ volume
+ year
+ % New keys recognized for acmtrans-v2.bst
+ issue % UTAH: used in, e.g., ACM SIGSAM Bulletin and ACM Communications in Computer Algebra
+ articleno
+ day % UTAH: needed for newspapers, weeklies, bi-weeklies
+ doi % UTAH
+ url % UTAH
+ bookpages % UTAH
+ numpages
+ lastaccessed % UTAH: used only for @Misc{...}
+ coden % UTAH
+ isbn % UTAH
+ isbn-13 % UTAH
+ issn % UTAH
+ lccn % UTAH
+ }
+ {}
+ { label label.year extra.label sort.year sort.label }
+
+INTEGERS { output.state before.all mid.sentence after.sentence after.block }
+
+INTEGERS { show-isbn-10-and-13 } % initialized below in begin.bib
+
+INTEGERS { nameptr namesleft numnames }
+
+INTEGERS { multiresult }
+
+INTEGERS { len }
+
+INTEGERS { last.extra.num }
+
+STRINGS { s t t.org u }
+
+STRINGS { last.label next.extra }
+
+STRINGS { p1 p2 p3 page.count }
+
+FUNCTION { dump.stack.1 }
+{
+ duplicate$ "STACK[top] = [" swap$ * "]" * warning$
+}
+
+FUNCTION { dump.stack.2 }
+{
+ duplicate$ "STACK[top ] = [" swap$ * "]" * warning$
+ swap$
+ duplicate$ "STACK[top-1] = [" swap$ * "]" * warning$
+ swap$
+}
+
+FUNCTION { empty.or.unknown }
+{
+ %% Examine the top stack entry, and push 1 if it is empty, or
+ %% consists only of whitespace, or is a string beginning with two
+ %% queries (??), and otherwise, push 0.
+ %%
+ %% This function provides a replacement for empty$, with the
+ %% convenient feature that unknown values marked by two leading
+ %% queries are treated the same as missing values, and thus, do not
+ %% appear in the output .bbl file, and yet, their presence in .bib
+ %% file(s) serves to mark values which are temporarily missing, but
+ %% are expected to be filled in eventually once more data is
+ %% obtained. The TeX User Group and BibNet bibliography archives
+ %% make extensive use of this practice.
+ %%
+ %% An empty string cannot serve the same purpose, because just as in
+ %% statistics data processing, an unknown value is not the same as an
+ %% empty value.
+ %%
+ %% At entry: stack = ... top:[string]
+ %% At exit: stack = ... top:[0 or 1]
+
+ duplicate$ empty$
+ { pop$ #1 }
+ { #1 #2 substring$ "??" = }
+ if$
+}
+
+FUNCTION { writeln }
+{
+ %% In BibTeX style files, the sequences
+ %%
+ %% ... "one" "two" output
+ %% ... "one" "two" output.xxx
+ %%
+ %% ship "one" to the output file, possibly following by punctuation,
+ %% leaving the stack with
+ %%
+ %% ... "two"
+ %%
+ %% There is thus a one-string lag in output processing that must be
+ %% carefully handled to avoid duplicating a string in the output
+ %% file. Unless otherwise noted, all output.xxx functions leave
+ %% just one new string on the stack, and that model should be born
+ %% in mind when reading or writing function code.
+ %%
+ %% BibTeX's asynchronous buffering of output from strings from the
+ %% stack is confusing because newline$ bypasses the buffer. It
+ %% would have been so much easier for newline to be a character
+ %% rather than a state of the output-in-progress.
+ %%
+ %% The documentation in btxhak.dvi is WRONG: it says
+ %%
+ %% newline$ Writes onto the bbl file what's accumulated in the
+ %% output buffer. It writes a blank line if and only
+ %% if the output buffer is empty. Since write$ does
+ %% reasonable line breaking, you should use this
+ %% function only when you want a blank line or an
+ %% explicit line break.
+ %%
+ %% write$ Pops the top (string) literal and writes it on the
+ %% output buffer (which will result in stuff being
+ %% written onto the bbl file when the buffer fills
+ %% up).
+ %%
+ %% Examination of the BibTeX source code shows that write$ does
+ %% indeed behave as claimed, but newline$ sends a newline character
+ %% directly to the output file, leaving the stack unchanged. The
+ %% first line "Writes onto ... buffer." is therefore wrong.
+ %%
+ %% The original BibTeX style files almost always use "write$ newline$"
+ %% in that order, so it makes sense to hide that pair in a private
+ %% function like this one, named after a statement in Pascal,
+ %% the programming language embedded in the BibTeX Web program.
+
+ write$ % output top-of-stack string
+ newline$ % immediate write of newline (not via stack)
+}
+
+FUNCTION { init.state.consts }
+{
+ #0 'before.all :=
+ #1 'mid.sentence :=
+ #2 'after.sentence :=
+ #3 'after.block :=
+}
+
+FUNCTION { output.nonnull }
+{ % Stack in: ... R S T Stack out: ... R T File out: S<comma><space>
+ 's :=
+ output.state mid.sentence =
+ {
+ ", " * write$
+ }
+ {
+ output.state after.block =
+ {
+ add.period$ writeln
+ "\newblock " write$
+ }
+ {
+ output.state before.all =
+ {
+ write$
+ }
+ {
+ add.period$ " " * write$
+ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+FUNCTION { output.nonnull.dot.space }
+{ % Stack in: ... R S T Stack out: ... R T File out: S<dot><space>
+ 's :=
+ output.state mid.sentence = % { "<DEBUG output.nonnull.dot.space>. " * write$ }
+ {
+ ". " * write$
+ }
+ {
+ output.state after.block =
+ {
+ add.period$ writeln "\newblock " write$
+ }
+ {
+ output.state before.all =
+ {
+ write$
+ }
+ {
+ add.period$ " " * write$
+ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+FUNCTION { output.nonnull.remove }
+{ % Stack in: ... R S T Stack out: ... R T File out: S<space>
+ 's :=
+ output.state mid.sentence =
+ {
+ " " * write$
+ }
+ {
+ output.state after.block =
+ {
+ add.period$ writeln "\newblock " write$
+ }
+ {
+ output.state before.all =
+ {
+ write$
+ }
+ {
+ add.period$ " " * write$
+ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+FUNCTION { output.nonnull.removenospace }
+{ % Stack in: ... R S T Stack out: ... R T File out: S
+ 's :=
+ output.state mid.sentence =
+ {
+ "" * write$
+ }
+ {
+ output.state after.block =
+ {
+ add.period$ writeln "\newblock " write$
+ }
+ {
+ output.state before.all =
+ {
+ write$
+ }
+ {
+ add.period$ " " * write$
+ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+FUNCTION { output }
+{ % discard top token if empty, else like output.nonnull
+ duplicate$ empty.or.unknown
+ 'pop$
+ 'output.nonnull
+ if$
+}
+
+FUNCTION { output.dot.space }
+{ % discard top token if empty, else like output.nonnull.dot.space
+ duplicate$ empty.or.unknown
+ 'pop$
+ 'output.nonnull.dot.space
+ if$
+}
+
+FUNCTION { output.removenospace }
+{ % discard top token if empty, else like output.nonnull.removenospace
+ duplicate$ empty.or.unknown
+ 'pop$
+ 'output.nonnull.removenospace
+ if$
+}
+
+FUNCTION { output.check }
+{ % like output, but warn if key name on top-of-stack is not set
+ 't :=
+ duplicate$ empty.or.unknown
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull
+ if$
+}
+
+FUNCTION { output.check.dot.space }
+{ % like output.dot.space, but warn if key name on top-of-stack is not set
+ 't :=
+ duplicate$ empty.or.unknown
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull.dot.space
+ if$
+}
+
+FUNCTION { fin.block }
+{ % functionally, but not logically, identical to fin.entry
+ add.period$
+ writeln
+}
+
+FUNCTION { fin.entry }
+{
+ add.period$
+ writeln
+}
+
+FUNCTION { new.sentence }
+{ % update sentence state, with neither output nor stack change
+ output.state after.block =
+ 'skip$
+ {
+ output.state before.all =
+ 'skip$
+ { after.sentence 'output.state := }
+ if$
+ }
+ if$
+}
+
+FUNCTION { fin.sentence }
+{
+ add.period$
+ write$
+ new.sentence
+ ""
+}
+
+FUNCTION { new.block }
+{
+ output.state before.all =
+ 'skip$
+ { after.block 'output.state := }
+ if$
+}
+
+FUNCTION { output.coden } % UTAH
+{ % output non-empty CODEN as one-line sentence (stack untouched)
+ coden empty.or.unknown
+ { }
+ { "\showCODEN{" coden * "}" * writeln }
+ if$
+}
+
+FUNCTION { format.articleno }
+{
+ articleno empty.or.unknown
+ { "" }
+ {
+ numpages empty.or.unknown
+ { "articleno field, but no numpages field, in " cite$ * warning$ }
+ { }
+ if$
+ "Article " articleno *
+ }
+ if$
+}
+
+FUNCTION { format.year }
+{ % push year string or "????" onto output stack
+ %% Because year is a mandatory field, we always force SOMETHING
+ %% to be output
+ year empty.or.unknown
+ { "????" }
+ { year }
+ if$
+}
+
+FUNCTION { format.day.month }
+{ % push "day month " or "month " or "" onto output stack
+ day empty.or.unknown
+ {
+ month empty.or.unknown
+ { "" }
+ { month " " *}
+ if$
+ }
+ {
+ month empty.or.unknown
+ { "" }
+ { day " " * month * " " *}
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.day.month.year } % UTAH
+{ % if month is empty, push "" else push "(MON.)" or "(DD MON.)"
+ % Needed for frequent periodicals: 2008. ... New York Times C-1, C-2, C-17 (23 Oct.)
+ % acm-*.bst addition: prefix parenthesized date string with
+ % ", Article nnn "
+ articleno empty.or.unknown
+ { "" }
+ { ", " format.articleno * }
+ if$
+ " (" * format.day.month * format.year * ")" *
+}
+
+FUNCTION { output.day.month.year } % UTAH
+{ % if month is empty value, do nothing; else output stack top and
+ % leave with new top string "(MON.)" or "(DD MON.)"
+ % Needed for frequent periodicals: 2008. ... New York Times C-1, C-2, C-17 (23 Oct.)
+ format.day.month.year
+ output.nonnull.remove
+}
+
+FUNCTION { strip.doi } % UTAH
+{ % Strip any Web address prefix to recover the bare DOI, leaving the
+ % result on the output stack, as recommended by CrossRef DOI
+ % documentation.
+ % For example, reduce "http://doi.acm.org/10.1145/1534530.1534545" to
+ % "10.1145/1534530.1534545". That is later typeset and displayed as
+ % doi:10.1145/1534530.1534545 as the LAST item in the reference list
+ % entry. Publisher Web sites wrap this with a suitable link to a real
+ % URL to resolve the DOI, and the master http://dx.doi.org/ address is
+ % preferred, since publisher-specific URLs can disappear in response
+ % to economic events. All journals are encouraged by the DOI
+ % authorities to use that typeset format and link procedures for
+ % uniformity across all publications that include DOIs in reference
+ % lists.
+ % The numeric prefix is guaranteed to start with "10.", so we use
+ % that as a test.
+ doi #1 #3 substring$ "10." =
+ { doi }
+ {
+ doi #1 #7 substring$ "http://" =
+ {
+ doi #8 doi text.length$ #7 - substring$ 't := % get modifiable copy of rest of DOI
+
+ "INTERNAL STYLE-FILE ERROR" 's :=
+
+ % search for next "/" and assign its suffix to s
+
+ { t text.length$ }
+ {
+ t #1 #1 substring$ "/" =
+ {
+ % save rest of string as true DOI (should be 10.xxxx/yyyy)
+ t #2 t text.length$ #1 - substring$ 's :=
+ "" 't := % empty string t terminates the loop
+ }
+ {
+ % discard first character and continue loop: t <= substring(t,2,last)
+ t #2 t text.length$ #1 - substring$ 't :=
+ }
+ if$
+ }
+ while$
+
+ % check for valid DOI (should be 10.xxxx/yyyy)
+ s #1 #3 substring$ "10." =
+ { }
+ { "unrecognized DOI substring " s * " in DOI value [" * doi * "]" * warning$ }
+ if$
+
+ s % push the stripped DOI on the output stack
+
+ }
+ {
+ "unrecognized DOI value [" doi * "]" * warning$
+ doi % push the unrecognized original DOI on the output stack
+ }
+ if$
+ }
+ if$
+}
+
+%
+% Change by BV: added standard prefix to URL
+%
+FUNCTION { output.doi } % UTAH
+{ % output non-empty DOI as one-line sentence (stack untouched)
+ doi empty.or.unknown
+ { }
+ {
+ %% NB: We want URLs at beginning of line to reduce likelihood of
+ %% BibTeX's nasty line wrapping after column 79, which then requires
+ %% manual (or automated) editing of the .bbl file to repair.
+ %% The \url{} macro strips percent-newlines, and is thus safe in
+ %% the presence of the line wrapping, but \path|...| and
+ %% \verb|...| do not.
+ "\showDOI{%" writeln
+ "\url{http://dx.doi.org/" strip.doi * "}}" * writeln
+ }
+ if$
+}
+
+FUNCTION { output.isbn } % UTAH
+{ % output non-empty ISBN-10 and/or ISBN-13 as one-line sentences (stack untouched)
+ show-isbn-10-and-13
+ {
+ %% show both 10- and 13-digit ISBNs
+ isbn empty.or.unknown
+ { }
+ {
+ "\showISBNx{" isbn * "}" * writeln
+ }
+ if$
+ isbn-13 empty.or.unknown
+ { }
+ {
+ "\showISBNxiii{" isbn-13 * "}" * writeln
+ }
+ if$
+ }
+ {
+ %% show 10-digit ISBNs only if 13-digit ISBNs not available
+ isbn-13 empty.or.unknown
+ {
+ isbn empty.or.unknown
+ { }
+ {
+ "\showISBNx{" isbn * "}" * writeln
+ }
+ if$
+ }
+ {
+ "\showISBNxiii{" isbn-13 * "}" * writeln
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION { output.issn } % UTAH
+{ % output non-empty ISSN as one-line sentence (stack untouched)
+ issn empty.or.unknown
+ { }
+ { "\showISSN{" issn * "}" * writeln }
+ if$
+}
+
+FUNCTION { output.issue }
+{ % output non-empty issue number as a one-line sentence (stack untouched)
+ issue empty.or.unknown
+ { }
+ { "Issue " issue * "." * writeln }
+ if$
+}
+
+FUNCTION { output.lccn } % UTAH
+{ % return with stack untouched
+ lccn empty.or.unknown
+ { }
+ { "\showLCCN{" lccn * "}" * writeln }
+ if$
+}
+
+FUNCTION { output.note } % UTAH
+{ % return with stack empty
+ note empty.or.unknown
+ { }
+ { "\shownote{" note add.period$ * "}" * writeln }
+ if$
+}
+
+FUNCTION { output.note.check } % UTAH
+{ % return with stack empty
+ note empty.or.unknown
+ { "empty note in " cite$ * warning$ }
+ { "\shownote{" note add.period$ * "}" * writeln }
+ if$
+}
+
+%
+% Changes by BV 2011/04/15. Do not output
+% url if doi is defined
+%
+FUNCTION { output.url } % UTAH
+{ % return with stack untouched
+ % output URL and associated lastaccessed fields
+ doi empty.or.unknown
+ {
+ url empty.or.unknown
+ { }
+ {
+ %% NB: We want URLs at beginning of line to reduce likelihood of
+ %% BibTeX's nasty line wrapping after column 79, which would require
+ %% manual (or automated) editing of the .bbl file to repair. However,
+ %% the \url{} macro handles the unwrapping job automatically.
+ "\showURL{%" writeln
+ lastaccessed empty.or.unknown
+ { "" }
+ { "Retrieved " lastaccessed * " from " * }
+ if$
+
+ %% The URL field may contain a semicolon-separated list of Web
+ %% addresses, and we locate and wrap each of them in \url{...}.
+ %% The simplistic approach of putting the entire list into the
+ %% macro argument is that the semicolons are typeset in a
+ %% typewriter font, and no space follows them.
+ %%
+ %% We therefore replace the original code
+ %% "\url{" * url * "}}" * writeln
+ %% with this character-at-a-time loop:
+
+ "\url{" *
+
+ url 't := % get modifiable copy of URL list
+
+ { t text.length$ }
+ {
+ t #1 #1 substring$ ";" =
+ { % then split argument at separator
+ "};" * writeln
+ "\url{"
+ }
+ { % else concatenate nonblank character to argument
+ t #1 #1 substring$ " " =
+ { }
+ { t #1 #1 substring$ * }
+ if$
+ }
+ if$
+
+ t #2 t text.length$ #1 - substring$ 't :=
+ }
+ while$
+
+ "}}" * writeln
+ }
+ if$
+ }
+ { }
+ if$
+}
+
+FUNCTION { output.year.check }
+{ % warn if year empty, else output top string and leave " YEAR<label>" on stack in mid-sentence
+ year empty.or.unknown
+ { "empty year in " cite$ * warning$ }
+ { write$
+ " " year * extra.label *
+ mid.sentence 'output.state :=
+ }
+ if$
+}
+
+FUNCTION { not }
+{
+ { #0 }
+ { #1 }
+ if$
+}
+
+FUNCTION { and }
+{
+ 'skip$
+ { pop$ #0 }
+ if$
+}
+
+FUNCTION { or }
+{
+ { pop$ #1 }
+ 'skip$
+ if$
+}
+
+FUNCTION { le }
+{
+ %% test whether first number is less than or equal to second number
+ %% stack in: n1 n2
+ %% stack out: if n1 <= n2 then 1 else 0
+
+ %% "DEBUG: le " cite$ * warning$
+ > { #0 } { #1 } if$
+}
+
+FUNCTION { ge }
+{
+ %% test whether first number is greater than or equal to second number
+ %% stack in: n1 n2
+ %% stack out: if n1 >= n2 then 1 else 0
+
+ %% "DEBUG: ge " cite$ * warning$
+ < { #0 } { #1 } if$
+}
+
+FUNCTION { is.leading.digit }
+{
+ %% test whether first character of string is a digit
+ %% stack in: string
+ %% stack out: if first-char-is-digit then 1 else 0
+
+ #1 #1 substring$ % replace string by string[1:1]
+ duplicate$ % string[1:1] string[1:1]
+ chr.to.int$
+ "0" chr.to.int$ swap$ le % "0" <= string[1:1] --> 0-or-1
+ swap$ % 0-or-1 string[1:1]
+ chr.to.int$
+ "9" chr.to.int$ le % string[1:1} <= "9" --> 0-or-1
+ and
+}
+
+FUNCTION { skip.digits }
+{
+ %% skip over leading digits in string
+ %% stack in: string
+ %% stack out: rest-of-string leading-digits
+
+ duplicate$
+ 't :=
+ 't.org :=
+ "" 'u :=
+
+ { t text.length$ }
+ {
+ %% "=================DEBUG: skip.digits t = [" t * "]" * warning$
+ t is.leading.digit
+ { t #2 t text.length$ #1 - substring$ }
+ {
+ t 'u :=
+ ""
+ }
+ if$
+ 't :=
+ }
+ while$
+
+ u % rest of string
+ t.org #1 t.org text.length$ u text.length$ - substring$ % leading digits
+}
+
+FUNCTION { skip.nondigits }
+{
+ %% skip over leading nondigits in string
+ %% stack in: string
+ %% stack out: rest-of-string
+
+ 't :=
+ "" 'u :=
+
+ { t text.length$ }
+ {
+ t is.leading.digit
+ {
+ t 'u :=
+ ""
+ }
+ { t #2 t text.length$ #1 - substring$ }
+ if$
+ 't :=
+ }
+ while$
+
+ u % rest of string
+}
+
+FUNCTION { parse.next.number }
+{
+ %% stack in: string
+ %% stack out: rest-of-string next-numeric-part-of-string
+ %% Example:
+ %% stack in: "123:1--123:59"
+ %% stack out: ":1--123:59" "123"
+
+ 's :=
+ s skip.nondigits 's :=
+ s skip.digits
+}
+
+FUNCTION { reduce.pages.to.page.count }
+{
+ %% Stack in: arbitrary-and-unused
+ %% Stack out: unchanged
+ %%
+ %% For the new-style pagination with article number and numpages or
+ %% pages, we expect to have BibTeX entries containing something like
+ %% articleno = "17",
+ %% pages = "1--23",
+ %% with output "Article 17, 23 pages",
+ %% or
+ %% articleno = "17",
+ %% numpages = "23",
+ %% with output "Article 17, 23 pages",
+ %% or
+ %% articleno = "17",
+ %% pages = "17:1--17:23",
+ %% with output "Article 17, 23 pages",
+ %%
+ %% If articleno is missing or empty, then we should output "1--23",
+ %% "23" (with a warning of a missing articleno), or "17:1--17:23",
+ %% respectively.
+
+ %% "DEBUG: enter reduce.pages.to.page.count " cite$ * warning$
+
+ %% "DEBUG: pages = [" pages * "]" * warning$
+
+ pages
+ parse.next.number 'p1 :=
+ parse.next.number 'p2 :=
+ parse.next.number 'p3 :=
+ parse.next.number 'page.count :=
+
+ duplicate$
+ empty.or.unknown
+ { }
+ {
+ duplicate$ "unexpected trailing garbage [" swap$ *
+ "] after n:p1--n:p2 in pages = [" *
+ pages *
+ "] in " *
+ cite$ *
+ warning$
+ }
+ if$
+
+ pop$
+
+ %% "DEBUG: reduce.pages.to.page.count: "
+ %% " p1 = " p1 * *
+ %% " p2 = " p2 * *
+ %% " p3 = " p3 * *
+ %% " p4 = " page.count * *
+ %% " in " cite$ * * warning$
+
+ p1 p3 = p2 "1" = and numpages empty.or.unknown and
+ { "INFO: reduced pages = [" pages * "] to numpages = [" * page.count * "]" * warning$ }
+ {
+ numpages empty.or.unknown
+ { pages }
+ { numpages }
+ if$
+ 'page.count :=
+ }
+ if$
+
+ p1 "1" = p3 empty.or.unknown and numpages empty.or.unknown and
+ {
+ p2 'page.count :=
+ "INFO: reduced pages = [" pages * "] to numpages = [" * page.count * "]" * warning$
+ }
+ {
+ numpages empty.or.unknown
+ { pages }
+ { numpages }
+ if$
+ 'page.count :=
+ }
+ if$
+
+ %% "DEBUG: leave reduce.pages.to.page.count " cite$ * warning$
+}
+
+FUNCTION { new.block.checkb }
+{ % issue a new.block only if at least one of top two stack strings is not empty
+ empty.or.unknown
+ swap$ empty.or.unknown
+ and
+ 'skip$
+ 'new.block
+ if$
+}
+
+FUNCTION { field.or.null }
+{ % convert empty value to null string, else return value
+ duplicate$ empty.or.unknown
+ { pop$ "" }
+ 'skip$
+ if$
+}
+
+FUNCTION { emphasize }
+{ % emphasize a non-empty top string on the stack (WITHOUT italic correction)
+ duplicate$ empty.or.unknown
+ { pop$ "" }
+ { "{\em " swap$ * "}" * }
+ if$
+}
+
+FUNCTION { emphasize.with.italic.correction }
+{ % convert empty string to null string, or emphasize with a trailing italic correction
+ duplicate$ empty.or.unknown
+ { pop$ "" }
+ { "{\em " swap$ * "\/}" * }
+ if$
+}
+
+FUNCTION { comma }
+{ % convert empty string to null string, or brace string and add trailing comma
+ duplicate$ empty.or.unknown
+ { pop$ "" }
+ { "{" swap$ * "}," * }
+ if$
+}
+
+FUNCTION { format.names }
+{
+ % Format bibliographical entries with the first author last name first,
+ % and subsequent authors with initials followed by last name.
+ % All names are formatted in this routine.
+
+ 's :=
+ #1 'nameptr := % nameptr = 1;
+ s num.names$ 'numnames := % numnames = num.name$(s);
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { nameptr #1 =
+ %NO: BAD ORDER: {"{" s nameptr "{ff~}{ll}{, jj}{, vv}" format.name$ * "}" * 't := }
+ %NO: BAD ORDER: {"{" s nameptr "{ff~}{ll}{, jj}{, vv}" format.name$ * "}" * 't := }
+ {"{" s nameptr "{ff }{vv }{ll}{, jj}" format.name$ * "}" * 't := }
+ {"{" s nameptr "{ff }{vv }{ll}{, jj}" format.name$ * "}" * 't := }
+ if$
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "{\sc others}" =
+ { " {et~al\mbox{.}}" * } % jrh: avoid spacing problems
+ { " {and} " * t * } % from Chicago Manual of Style
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr := % nameptr += 1;
+ namesleft #1 - 'namesleft := % namesleft =- 1;
+ }
+ while$
+}
+
+FUNCTION { my.full.label }
+{
+ 's :=
+ #1 'nameptr := % nameptr = 1;
+ s num.names$ 'numnames := % numnames = num.name$(s);
+ numnames 'namesleft :=
+ { namesleft #0 > }
+
+ { s nameptr "{vv~}{ll}" format.name$ 't := % get the next name
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "others" =
+ { " et~al\mbox{.}" * } % jrh: avoid spacing problems
+ { " and " * t * } % from Chicago Manual of Style
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr := % nameptr += 1;
+ namesleft #1 - 'namesleft := % namesleft =- 1;
+ }
+ while$
+
+}
+
+FUNCTION { format.names.fml }
+{
+ % Format names in "familiar" format, with first initial followed by
+ % last name. Like format.names, ALL names are formatted.
+ % jtb: The names are NOT put in small caps
+
+ 's :=
+ #1 'nameptr := % nameptr = 1;
+ s num.names$ 'numnames := % numnames = num.name$(s);
+ numnames 'namesleft :=
+ { namesleft #0 > }
+
+ {
+ "{" s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ * "}" * 't :=
+
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "{others}" =
+ { " {et~al\mbox{.}}" * }
+ { " {and} " * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr := % nameptr += 1;
+ namesleft #1 - 'namesleft := % namesleft =- 1;
+ }
+ while$
+}
+
+FUNCTION { format.authors }
+{
+ author empty.or.unknown
+ { "" }
+ { author format.names add.period$} % jtb: add period if none before
+ if$
+}
+
+FUNCTION { format.key }
+{
+ empty.or.unknown
+ { key field.or.null }
+ { "" }
+ if$
+}
+
+FUNCTION { format.no.key }
+{
+ empty.or.unknown
+ { "" }
+ { "" }
+ if$
+}
+
+FUNCTION { format.editors.fml }
+{
+ % Format editor names for use in the "in" types: inbook, incollection,
+ % inproceedings: first initial, then last names. When editors are the
+ % LABEL for an entry, then format.editor is used which lists editors
+ % by last name first.
+
+ editor empty.or.unknown
+ { "" }
+ {
+ editor format.names.fml editor num.names$ #1 >
+ { " (Eds.)" * }
+ { " (Ed.)" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.editors }
+{ % format editor names for use in labels, last names first.
+ editor empty.or.unknown
+ { "" }
+ {
+ editor format.names
+ editor num.names$ #1 >
+ { " (Eds.)." * }
+ { " (Ed.)." * }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.articletitle }
+{
+ title empty.or.unknown
+ { "" }
+ % Use this to preserve lettercase in titles:
+ { "\showarticletitle{" title * "}" * }
+ % Use this for downcase title style:
+ % { \showarticletitle{" title "t" change.case$ * "}" * }
+ if$
+}
+
+FUNCTION { format.title }
+{
+ title empty.or.unknown
+ { "" }
+ % Use this to preserve lettercase in titles:
+ { title }
+ % Use this for downcase title style:
+ % { title "t" change.case$ }
+ if$
+}
+
+FUNCTION { n.dashify }
+{
+ 't :=
+ ""
+ { t empty.or.unknown not }
+ {
+ t #1 #1 substring$ "-" =
+ {
+ t #1 #2 substring$ "--" = not
+ { "--" *
+ t #2 global.max$ substring$ 't :=
+ }
+ {
+ { t #1 #1 substring$ "-" = }
+ {
+ "-" *
+ t #2 global.max$ substring$ 't :=
+ }
+ while$
+ }
+ if$
+ }
+ {
+ t #1 #1 substring$ *
+ t #2 global.max$ substring$ 't :=
+ }
+ if$
+ }
+ while$
+}
+
+FUNCTION { format.btitle }
+{
+ edition empty.or.unknown
+ { title emphasize }
+ { title empty.or.unknown
+ { title emphasize } % jtb: what is this supposed to do ?!?
+ { "{\em " title * "\/} (" * edition "l" change.case$ * " ed.)" * } % jtb: no parens for ed.
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.emphasize.booktitle }
+{ % push "" or "{\em booktitle}" or "{\em booktitle}, (second ed.)" on stack
+ edition empty.or.unknown
+ { booktitle emphasize }
+ { booktitle empty.or.unknown
+ { "" }
+ { "{\em " booktitle * "} (" * edition "l" change.case$ * " ed.)" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.city }
+{
+ % jtb: if the preceding string (the title of the conference) is non-empty,
+ % jtb: append the location, otherwise leave empty (so as to trigger the
+ % jtb: error message in output.check
+
+ duplicate$ empty.or.unknown
+ { }
+ {
+ city empty.or.unknown
+ {
+ date empty.or.unknown
+ { }
+ { " (" * date * ")" * }
+ if$
+ }
+ {
+ date empty.or.unknown
+ { " (" * city * ")" * }
+ { " (" * city * ", " * date * ")" * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION { tie.or.space.connect }
+{
+ duplicate$ text.length$ #3 <
+ { "~" }
+ { " " }
+ if$
+ swap$ * *
+}
+
+FUNCTION { either.or.check }
+{
+ empty.or.unknown
+ 'pop$
+ { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+ if$
+}
+
+FUNCTION { format.bvolume }
+{
+ % jtb: If there is a series, this is added and the volume trails after it.
+ % jtb: Otherwise, "Vol" is Capitalized.
+
+ volume empty.or.unknown
+ { "" }
+ {
+ series empty.or.unknown
+ { "Vol." volume tie.or.space.connect}
+ { series ", " * "Vol." volume tie.or.space.connect *}
+ if$
+ "volume and number" number either.or.check
+ }
+ if$
+}
+
+FUNCTION { format.bvolume.noseries }
+{
+ volume empty.or.unknown
+ { "" }
+ {
+ series empty.or.unknown
+ { "Vol." volume tie.or.space.connect}
+ { "Vol." volume tie.or.space.connect}
+% { series ", " * "Vol." volume tie.or.space.connect *}
+ if$
+ "volume and number" number either.or.check
+ }
+ if$
+}
+
+FUNCTION { format.series }
+{
+ series empty.or.unknown
+ {""}
+ {" {\em (" * series ")}" *}
+ if$
+}
+
+FUNCTION { format.number.series }
+{
+ volume empty.or.unknown
+ {
+ number empty.or.unknown
+ {
+ volume empty.or.unknown
+ { "" }
+ {
+ series empty.or.unknown
+ { "" }
+ { " (" series * ")" * }
+ if$
+ }
+ if$
+ } % { series field.or.null }
+ {
+ output.state mid.sentence =
+ { "Number" } % gnp - changed to mixed case always
+ { "Number" }
+ if$
+ number tie.or.space.connect series empty.or.unknown
+ { "there's a number but no series in " cite$ * warning$ }
+ { " in " * series * }
+ if$
+ }
+ if$
+ }
+ {
+ ""
+ }
+ if$
+}
+
+FUNCTION { multi.page.check }
+{
+ 't :=
+ #0 'multiresult :=
+ { multiresult not
+ t empty.or.unknown not
+ and
+ }
+ { t #1 #1 substring$
+ duplicate$ "-" =
+ swap$ duplicate$ "," =
+ swap$ "+" =
+ or or
+ { #1 'multiresult := }
+ { t #2 global.max$ substring$ 't := }
+ if$
+ }
+ while$
+ multiresult
+}
+
+FUNCTION { format.pages }
+{
+ pages empty.or.unknown
+ { "" }
+ {
+ pages multi.page.check
+ { pages n.dashify } % gnp - removed () % jtb: removed pp.
+ { pages }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.pages.check.without.articleno }
+{ %% format pages field only if articleno is absent
+ %% Stack out: pages-specification
+ numpages missing$ pages missing$ and
+ { "page numbers missing in both pages and numpages fields in " cite$ * warning$ }
+ { }
+ if$
+
+ articleno empty.or.unknown
+ {
+ pages missing$
+ { numpages }
+ { format.pages }
+ if$
+ }
+ { "" }
+ if$
+}
+
+FUNCTION { format.pages.check }
+{
+ pages empty.or.unknown
+ { "page numbers missing in " cite$ * warning$ "" }
+ { pages n.dashify }
+ if$
+}
+
+FUNCTION { format.bookpages }
+{
+ bookpages empty.or.unknown
+ { "" }
+ { bookpages "book pages" tie.or.space.connect }
+ if$
+}
+
+FUNCTION { format.named.pages }
+{
+ pages empty.or.unknown
+ { "" }
+ { format.pages "pages" tie.or.space.connect }
+ if$
+}
+
+%
+% Changed by Boris Veytsman, 2011-03-13
+% Now the word "pages" is printed even if
+% there field pages is not empty.
+%
+
+FUNCTION { format.page.count }
+{
+ page.count empty.or.unknown
+ { "" }
+ {
+ articleno empty.or.unknown
+ { "numpages field, but no articleno field, in " cite$ * warning$ }
+ { }
+ if$
+ page.count "pages" tie.or.space.connect
+ }
+ if$
+}
+
+FUNCTION { format.articleno.numpages }
+{
+ %% There are seven possible outputs, depending on which fields are set.
+ %%
+ %% These four are handled here:
+ %%
+ %% articleno, numpages, pages -> "Article articleno-value, numpages-value pages"
+ %% articleno, numpages -> "Article articleno-value, numpages-value pages"
+ %% articleno, pages -> "Article articleno-value, reduced-pages-value pages"
+ %% articleno -> "Article articleno-value" and warn about missing numpages
+ %%
+ %% The remaining three have already been handled by
+ %% format.pages.check.without.articleno:
+ %%
+ %% numpages, pages -> "pages-value"
+ %% numpages -> "numpages-value"
+ %% pages -> "pages-value"
+
+ articleno empty.or.unknown
+ {
+ numpages empty.or.unknown
+ { }
+ { "require articleno with numpages field in " cite$ * warning$ }
+ if$
+ ""
+ }
+ {
+ numpages empty.or.unknown
+ {
+ pages empty.or.unknown
+ {
+ "require pages or numpages fields with articleno field in " cite$ * warning$
+ "" 'page.count :=
+ }
+ { reduce.pages.to.page.count }
+ if$
+ }
+ { numpages 'page.count := }
+ if$
+
+ %% The Article number is now handled in format.day.month.year because
+ %% ACM prefers the style "Digital Libraries 12, 3, Article 5 (July 2008)"
+ %% over "Digital Libraries 12, 3 (July 2008), Article 5"
+ %% format.articleno output
+ format.page.count
+ }
+ if$
+}
+
+FUNCTION { format.journal.volume.number.day.month.year }
+{
+ % By Young (and Spencer)
+ % GNP - fixed bugs with missing volume, number, and/or pages
+ %
+ % Format journal, volume, number, pages for article types.
+ %
+ journal empty.or.unknown
+ { "no journal in " cite$ * warning$
+ "" }
+% { journal emphasize.with.italic.correction }
+ {
+ journal "Journal of the ACM" =
+ { "{\it J. ACM}" }
+ {
+ journal "American Mathematical Society Translations" =
+ { "{\it Amer. Math. Soc. Transl.}" }
+ {
+ journal "Bulletin of the American Mathematical Society" =
+ { "{\it Bull. Amer. Math. Soc.}" }
+ {
+ journal "Proceedings of the American Mathematical Society" =
+ { "{\it Proc. Amer. Math. Soc.}" }
+ {
+ journal "Transactions of the American Mathematical Society" =
+ { "{\it Trans. Amer. Math. Soc.}" }
+ {
+ journal "Communications of the {ACM}" =
+ { "{\it Commun. {ACM}}" }
+ {
+ journal "{ACM} Computing Surveys" =
+ { "{\it Comput. Surveys}" }
+ {
+ journal "{ACM} Transactions on Mathematical Software" =
+ { "{\it {ACM} Trans. Math. Software}" }
+ {
+ journal "{ACM} {SIGNUM} Newsletter" =
+ { "{\it {ACM} {SIGNUM} Newslett.}" }
+ {
+ journal "American Journal of Sociology" =
+ { "{\it Amer. J. Sociology}" }
+ {
+ journal "Journal of the American Statistical Association" =
+ { "{\it J. Amer. Statist. Assoc.}" }
+ {
+ journal "Applied Mathematics and Computation" =
+ { "{\it Appl. Math. Comput.}" }
+ {
+ journal "American Mathematical Monthly" =
+ { "{\it Amer. Math. Monthly}" }
+ {
+ journal "British Journal of Mathematical and Statistical Psychology" =
+ { "{\it Brit. J. Math. Statist. Psych.}" }
+ {
+ journal "Canadian Mathematical Bulletin" =
+ { "{\it Canad. Math. Bull.}" }
+ {
+ journal "Journal of Computational and Applied Mathematics" =
+ { "{\it J. Comput. Appl. Math.}" }
+ {
+ journal "Journal of Computational Physics" =
+ { "{\it J. Comput. Phys.}" }
+ {
+ journal "Computers and Structures" =
+ { "{\it Comput. \& Structures}" }
+ {
+ journal "The Computer Journal" =
+ { "{\it Comput. J.}" }
+ {
+ journal "Journal of Computer and System Sciences" =
+ { "{\it J. Comput. System Sci.}" }
+ {
+ journal "Contemporary Mathematics" =
+ { "{\it Contemp. Math.}" }
+ {
+ journal "Crelle's Journal" =
+ { "{\it Crelle's J.}" }
+ {
+ journal "Giornale di Mathematiche" =
+ { "{\it Giorn. Mat.}" }
+ {
+ journal "{IEEE} Transactions on Computers" =
+ { "{\it {IEEE} Trans. Comput.}" }
+ {
+ journal "{IEEE} Transactions on Automatic Control" =
+ { "{\it {IEEE} Trans. Automat. Control}" }
+ {
+ journal "Proceedings of the {IEEE}" =
+ { "{\it Proc. {IEEE}}" }
+ {
+ journal "{IEEE} Transactions on Aerospace and Electronic Systems" =
+ { "{\it {IEEE} Trans. Aerospace Electron. Systems}" }
+ {
+ journal "{IMA} Journal of Numerical Analysis" =
+ { "{\it {IMA} J. Numer. Anal.}" }
+ {
+ journal "Information Processing Letters" =
+ { "{\it Inform. Process. Lett.}" }
+ {
+ journal "Journal of the Institute of Mathematics and its Applications" =
+ { "{\it J. Inst. Math. Appl.}" }
+ {
+ journal "International Journal of Control" =
+ { "{\it Internat. J. Control}" }
+ {
+ journal "International Journal for Numerical Methods in Engineering" =
+ { "{\it Internat. J. Numer. Methods Engrg.}" }
+ {
+ journal "International Journal of Supercomputing Applications" =
+ { "{\it Internat. J. Supercomputing Applic.}" }
+ {
+ journal "Journal of Research of the National Bureau of Standards" =
+ { "{\it J. Res. Nat. Bur. Standards}" }
+ {
+ journal "Linear Algebra and its Applications" =
+ { "{\it Linear Algebra Appl.}" }
+ {
+ journal "Journal of Mathematical Analysis and Applications" =
+ { "{\it J. Math. Anal. Appl.}" }
+ {
+ journal "Mathematische Annalen" =
+ { "{\it Math. Ann.}" }
+ {
+ journal "Journal of Mathematical Physics" =
+ { "{\it J. Math. Phys.}" }
+ {
+ journal "Mathematics of Computation" =
+ { "{\it Math. Comp.}" }
+ {
+ journal "Mathematica Scandinavica" =
+ { "{\it Math. Scand.}" }
+ {
+ journal "Mathematical Tables and Other Aids to Computation" =
+ { "{\it Math. Tables Aids Comput.}" }
+ {
+ journal "Numerische Mathematik" =
+ { "{\it Numer. Math.}" }
+ {
+ journal "Pacific Journal of Mathematics" =
+ { "{\it Pacific J. Math.}" }
+ {
+ journal "Journal of Parallel and Distributed Computing" =
+ { "{\it J. Parallel and Distrib. Comput.}" }
+ {
+ journal "Parallel Computing" =
+ { "{\it Parallel Comput.}" }
+ {
+ journal "Philosophical Magazine" =
+ { "{\it Philos. Mag.}" }
+ {
+ journal "Proceedings of the National Academy of Sciences of the USA" =
+ { "{\it Proc. Nat. Acad. Sci. U. S. A.}" }
+ {
+ journal "Quarterly Journal of Mathematics, Oxford, Series (2)" =
+ { "{\it Quart. J. Math. Oxford Ser. (2)}" }
+ {
+ journal "Quarterly of Applied Mathematics" =
+ { "{\it Quart. Appl. Math.}" }
+ {
+ journal "Review of the International Statisical Institute" =
+ { "{\it Rev. Inst. Internat. Statist.}" }
+ {
+ journal "Journal of the Society for Industrial and Applied Mathematics" =
+ { "{\it J. Soc. Indust. Appl. Math.}" }
+ {
+ journal "Journal of the Society for Industrial and Applied Mathematics, Series B, Numerical Analysis" =
+ { "{\it J. Soc. Indust. Appl. Math. Ser. B Numer. Anal.}" }
+ {
+ journal "{SIAM} Journal on Algebraic and Discrete Methods" =
+ { "{\it {SIAM} J. Algebraic Discrete Methods}" }
+ {
+ journal "{SIAM} Journal on Applied Mathematics" =
+ { "{\it {SIAM} J. Appl. Math.}" }
+ {
+ journal "{SIAM} Journal on Computing" =
+ { "{\it {SIAM} J. Comput.}" }
+ {
+ journal "{SIAM} Journal on Matrix Analysis and Applications" =
+ { "{\it {SIAM} J. Matrix Anal. Appl.}" }
+ {
+ journal "{SIAM} Journal on Numerical Analysis" =
+ { "{\it {SIAM} J. Numer. Anal.}" }
+ {
+ journal "{SIAM} Review" =
+ { "{\it {SIAM} Rev.}" }
+ {
+ journal "{SIAM} Journal on Scientific and Statistical Computing" =
+ { "{\it {SIAM} J. Sci. Statist. Comput.}" }
+ {
+ journal "Software Practice and Experience" =
+ { "{\it Software Prac. Experience}" }
+ {
+ journal "Statistical Science" =
+ { "{\it Statist. Sci.}" }
+ {
+ journal "{USSR} Computational Mathematics and Mathematical Physics" =
+ { "{\it {U. S. S. R.} Comput. Math. and Math. Phys.}" }
+ {
+ journal "Journal of {VLSI} and Computer Systems" =
+ { "{\it J. {VLSI} Comput. Syst.}" }
+ {
+ journal "Zeitschrift fur Angewandte Mathematik und Mechanik" =
+ { "{\it Z. Angew. Math. Mech.}" }
+ {
+ journal "Zeitschrift fur Angewandte Mathematik und Physik" =
+ { "{\it Z. Angew. Math. Phys.}" }
+ {
+ journal "ACM Computing Surveys" =
+ { "{\it Comput. Surveys}" }
+ {
+ journal "ACM Transactions on Mathematical Software" =
+ { "{\it ACM Trans. Math. Software}" }
+ {
+ journal "ACM {SIGNUM} Newsletter" =
+ { "{\it ACM {SIGNUM} Newslett.}" }
+ {
+ journal "IEEE Transactions on Computers" =
+ { "{\it IEEE Trans. Comput.}" }
+ {
+ journal "IEEE Transactions on Automatic Control" =
+ { "{\it IEEE Trans. Automat. Control}" }
+ {
+ journal "Proceedings of the IEEE" =
+ { "{\it Proc. IEEE}" }
+ {
+ journal "IEEE Transactions on Aerospace and Electronic Systems" =
+ { "{\it IEEE Trans. Aerospace Electron. Systems}" }
+ {
+ journal "IMA Journal of Numerical Analysis" =
+ { "{\it IMA J. Numer. Anal.}" }
+ {
+ journal "SIAM Journal on Algebraic and Discrete Methods" =
+ { "{\it SIAM J. Algebraic Discrete Methods}" }
+ {
+ journal "SIAM Journal on Applied Mathematics" =
+ { "{\it SIAM J. Appl. Math.}" }
+ {
+ journal "SIAM Journal on Computing" =
+ { "{\it SIAM J. Comput.}" }
+ {
+ journal "SIAM Journal on Matrix Analysis and Applications" =
+ { "{\it SIAM J. Matrix Anal. Appl.}" }
+ {
+ journal "SIAM Journal on Numerical Analysis" =
+ { "{\it SIAM J. Numer. Anal.}" }
+ {
+ journal "SIAM Review" =
+ { "{\it SIAM Rev.}" }
+ {
+ journal "SIAM Journal on Scientific and Statistical Computing" =
+ { "{\it SIAM J. Sci. Statist. Comput.}" }
+ {
+ journal "USSR Computational Mathematics and Mathematical Physics" =
+ { "{\it U. S. S. R. Comput. Math. and Math. Phys.}" }
+ {
+ journal "Journal of VLSI and Computer Systems" =
+ { "{\it J. VLSI Comput. Syst.}" }
+ {
+ journal "Communications of the ACM" =
+ { "{\it Commun. ACM}" }
+ %% If no match with cases needing special handling, just output journal name
+ { journal emphasize.with.italic.correction }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+
+ number empty.or.unknown
+ {
+ volume empty.or.unknown
+ { "no number and no volume in " cite$ * warning$ "" * }
+ { " " * " {" * volume * "}" * }
+ if$
+ }
+ {
+ volume empty.or.unknown
+ {
+ "unusual to have number, but no volume, for " cite$ * warning$
+ " " * number *
+ }
+ { " " * volume comma " " * number * * }
+ if$
+ }
+ if$
+
+ format.day.month.year *
+}
+
+FUNCTION { format.chapter.pages }
+{
+ chapter empty.or.unknown
+ 'format.pages
+ { type empty.or.unknown
+ { "Chapter" } % gnp - changed to mixed case
+ { type "t" change.case$ }
+ if$
+ chapter tie.or.space.connect
+ pages empty.or.unknown
+ {"page numbers missing in " cite$ * warning$} % gnp - added check
+ { ", " * format.pages * }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.in.emphasize.booktitle }
+{ % jtb: format for collections or proceedings not appearing in a journal
+ booktitle empty.or.unknown
+ { "" }
+ { "In " format.emphasize.booktitle * }
+ if$
+}
+
+FUNCTION { format.in.booktitle }
+{ % jtb: format for proceedings appearing in a journal
+ booktitle empty.or.unknown
+ { "" }
+ { "In " booktitle * }
+ if$
+}
+
+FUNCTION { format.in.ed.booktitle }
+{
+ booktitle empty.or.unknown
+ { "" }
+ { editor empty.or.unknown
+ { "In " format.emphasize.booktitle * }
+ % jtb: swapped editor location
+ { "In " format.emphasize.booktitle * ", " * format.editors.fml * }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.thesis.type }
+{ % call with default type on stack top
+ type empty.or.unknown
+ 'skip$ % use default type
+ {
+ pop$ % discard default type
+ % NO: it is silly to have to brace protect every degree type!: type "t" change.case$
+ type
+ }
+ if$
+}
+
+FUNCTION { format.tr.number }
+{
+ type empty.or.unknown
+ { "Tech. Rep." }
+ 'type
+ if$
+ number empty.or.unknown
+ { "t" change.case$ }
+ %% LOOKS BAD: { "." * number tie.or.space.connect }
+ %% Prefer "Research report RJ687." to "Research report. RJ687."
+ { number tie.or.space.connect }
+ if$
+}
+
+FUNCTION { format.advisor }
+{
+ advisor empty.or.unknown
+ { "" }
+ { "Advisor(s) " advisor * }
+ if$
+}
+
+FUNCTION { format.article.crossref }
+{ "See"
+ "\cite{" * crossref * "}" *
+}
+
+FUNCTION { format.crossref.editor }
+{
+ editor #1 "{vv~}{ll}" format.name$
+ editor num.names$ duplicate$
+ #2 >
+ { pop$ " et~al\mbox{.}" * } % jrh: avoid spacing problems
+ { #2 <
+ 'skip$
+ { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { " et~al\mbox{.}" * } % jrh: avoid spacing problems
+ { " and " * editor #2 "{vv~}{ll}" format.name$ * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.book.crossref }
+{
+ volume empty.or.unknown
+ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+ "In "
+ }
+ { "Volume" volume tie.or.space.connect % gnp - changed to mixed case
+ " of " *
+ }
+ if$
+ editor empty.or.unknown
+ editor field.or.null author field.or.null =
+ or
+ { key empty.or.unknown
+ { series empty.or.unknown
+ { "need editor, key, or series for " cite$ * " to crossref " *
+ crossref * warning$
+ "" *
+ }
+ { "{\em " * series * "\/}" * }
+ if$
+ }
+ { key * }
+ if$
+ }
+ { format.crossref.editor * }
+ if$
+ " \cite{" * crossref * "}" *
+}
+
+FUNCTION { format.incoll.inproc.crossref }
+{ "See"
+ " \cite{" * crossref * "}" *
+}
+
+FUNCTION { format.lab.names }
+{
+ % format.lab.names:
+ %
+ % determines "short" names for the abbreviated author information.
+ % "Long" labels are created in calc.label, using the routine my.full.label
+ % to format author and editor fields.
+ %
+ % There are 4 cases for labels. (n=3 in the example)
+ % a) one author Foo
+ % b) one to n Foo, Bar and Baz
+ % c) use of "and others" Foo, Bar et al.
+ % d) more than n Foo et al.
+
+ 's :=
+ s num.names$ 'numnames :=
+ numnames #2 > % change number to number of others allowed before
+ % forcing "et al".
+ { s #1 "{vv~}{ll}" format.name$ " et~al\mbox{.}" * } % jrh: \mbox{} added
+ {
+ numnames #1 - 'namesleft :=
+ #2 'nameptr :=
+ s #1 "{vv~}{ll}" format.name$
+ { namesleft #0 > }
+ { nameptr numnames =
+ { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { " et~al\mbox{.}" * } % jrh: avoid spacing problems
+ { " and " * s nameptr "{vv~}{ll}" format.name$ * }
+ if$
+ }
+ { ", " * s nameptr "{vv~}{ll}" format.name$ * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+ }
+ if$
+}
+
+FUNCTION { author.key.label }
+{
+ author empty.or.unknown
+ { key empty.or.unknown
+ { "no key, author in " cite$ * warning$
+ cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION { author.key.organization.label }
+{ % added - gnp. Provide label formatting by organization if author is null.
+ author empty.or.unknown
+ { organization empty.or.unknown
+ { key empty.or.unknown
+ { "no key, author or organization in " cite$ * warning$
+ cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { organization }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION { editor.key.organization.label }
+{ % added - gnp. Provide label formatting by organization if editor is null.
+ editor empty.or.unknown
+ { organization empty.or.unknown
+ { key empty.or.unknown
+ { "no key, editor or organization in " cite$ * warning$
+ cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { organization }
+ if$
+ }
+ { editor format.lab.names }
+ if$
+}
+
+FUNCTION { author.editor.key.label }
+{
+ author empty.or.unknown
+ { editor empty.or.unknown
+ { key empty.or.unknown
+ { "no key, author, or editor in " cite$ * warning$
+ cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.lab.names }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION { calc.label }
+{
+ % Changed - GNP. See also author.organization.sort, editor.organization.sort
+ % Form label for BibTeX entry. The classification of which fields are used
+ % for which type of entry (book, inbook, etc.) are taken from alpha.bst.
+ % The change here from newapa is to also include organization as a
+ % citation label if author or editor is missing.
+
+ type$ "book" =
+ type$ "inbook" =
+ or
+ type$ "periodical" =
+ or
+ 'author.editor.key.label
+ { type$ "proceedings" =
+ 'editor.key.organization.label
+ { type$ "manual" =
+ 'author.key.organization.label
+ 'author.key.label
+ if$
+ }
+ if$
+ }
+ if$
+
+ author empty.or.unknown % generate the full label citation information.
+ {
+ editor empty.or.unknown
+ {
+ organization empty.or.unknown
+ {
+ key empty.or.unknown
+ {
+ "no author, editor, organization, or key in " cite$ * warning$
+ "??"
+ }
+ { key }
+ if$
+ }
+ { organization }
+ if$
+ }
+ { editor my.full.label }
+ if$
+ }
+ { author my.full.label }
+ if$
+
+ % leave label on the stack, to be popped when required.
+
+ "}{" * swap$ * "}{" *
+ % year field.or.null purify$ #-1 #4 substring$ *
+ %
+ % save the year for sort processing afterwards (adding a, b, c, etc.)
+ %
+ year field.or.null purify$ #-1 #4 substring$
+ 'label.year :=
+}
+
+FUNCTION { output.bibitem }
+{
+ newline$
+ %% acmtrans.bst alphanumeric style:
+ %%: "\bibitem[\protect\citeauthoryear{" write$
+ %%: calc.label write$
+ %%: sort.year write$
+ %%: "}]%" writeln
+ %%: " {" write$
+ %%: cite$ write$
+ %%: "}" writeln
+ %% acm-plain.bst numeric style:
+ newline$
+ "\bibitem{" write$
+ cite$ write$
+ "}" write$
+ newline$
+ ""
+ before.all 'output.state :=
+}
+
+FUNCTION { output.issue.doi.coden.isxn.lccn.url }
+{ % enter and return with stack empty
+ %% We switch now from buffered output to output of complete lines, so
+ %% that the Issue .. URL data have their own lines, and are less likely
+ %% to be line-wrapped by BibTeX's short-sighted algorithm, which wraps
+ %% lines longer than 79 characters, backtracking to what it thinks is
+ %% a break point in the string. Any such wrapping MUST be undone to
+ %% prevent percent-newline from appearing in DOIs and URLs. The
+ %% output data are intentionally wrapped in \showxxx{} macros at
+ %% beginning of line, and that supply their own punctuation (if they
+ %% are not defined to suppress output entirely), to make it easier for
+ %% other software to recover them from .bbl files.
+ %%
+ %% It also makes it possible to later change the macro definitions
+ %% to suppress particular output values, or alter their appearance.
+ %%
+ %% Note that it is possible for theses, technical reports, and
+ %% manuals to have ISBNs, and anything that has an ISBN may also
+ %% have an ISSN. When there are no values for these keys, there
+ %% is no output generated for them here.
+
+ "\newblock" writeln
+ after.block 'output.state :=
+
+ output.issue
+ output.isbn
+ output.coden % CODEN is functionally like ISSN, so output them sequentially
+ output.issn
+ output.lccn
+ output.doi % DOI is ALWAYS last according to CrossRef DOI documentation
+ output.url % but ACM wants URL last
+}
+
+FUNCTION { output.issue.doi.coden.isxn.lccn.url.note }
+{ % enter with stack empty, return with empty string on stack
+ output.issue.doi.coden.isxn.lccn.url
+ note empty.or.unknown
+ { }
+ {
+ "\newblock" writeln
+ output.note
+ }
+ if$
+ ""
+}
+
+FUNCTION { output.issue.doi.coden.isxn.lccn.url.note.check }
+{ % enter with stack empty, return with empty string on stack
+ output.issue.doi.coden.isxn.lccn.url
+ note empty.or.unknown
+ { }
+ {
+ "\newblock" writeln
+ output.note.check
+ }
+ if$
+ ""
+}
+
+FUNCTION { article }
+{
+ output.bibitem
+
+ author empty.or.unknown
+ {
+ editor empty.or.unknown
+ { "neither author and editor supplied for " cite$ * warning$ }
+ { format.editors "editor" output.check }
+ if$
+ }
+ { format.authors "author" output.check }
+ if$
+
+ author format.no.key output % added
+ output.year.check % added
+ new.block
+ format.articletitle "title" output.check
+ new.block
+ howpublished output
+
+ crossref missing$
+ { format.journal.volume.number.day.month.year }
+ {
+ "cross reference in @Article{...} is unusual" warning$
+ format.article.crossref output.nonnull
+ }
+ if$
+ output
+
+ format.pages.check.without.articleno output
+ format.articleno.numpages output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { book }
+{
+ output.bibitem
+ author empty.or.unknown
+ { format.editors "author and editor" output.check }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ output.year.check % added
+ new.block
+ format.btitle "title" output.check
+ crossref missing$
+ { new.sentence % jtb: start a new sentence for series/volume
+ format.bvolume output
+ new.block
+ format.number.series output
+ new.sentence
+ publisher "publisher" output.check
+ address "address" output.check % jtb: require address
+ fin.sentence
+ pages empty.or.unknown
+ { format.bookpages } % use bookpages when pages empty
+ { format.pages.check "pages" tie.or.space.connect }
+ if$
+ output
+ }
+ { new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { booklet }
+{
+ output.bibitem
+ format.authors output
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.title "title" output.check
+ new.block
+ howpublished output
+ address output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { inbook }
+{
+ output.bibitem
+ author empty.or.unknown
+ { format.editors
+ "author and editor" output.check
+ }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ output.year.check % added
+ new.block
+ format.btitle "title" output.check
+ crossref missing$
+ { new.sentence % jtb: start a new sentence for series/volume
+ format.bvolume output
+ new.block
+ format.number.series output
+ new.sentence
+ publisher "publisher" output.check
+ address "address" output.check % jtb: require address
+ format.bookpages output
+ format.chapter.pages
+ "chapter and pages" output.check % jtb: moved from before publisher
+ }
+ {
+ format.bookpages output
+ format.chapter.pages "chapter and pages" output.check
+ new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { incollection }
+{
+ output.bibitem
+ format.authors "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.articletitle "title" output.check
+ new.block
+ crossref missing$
+ { format.in.ed.booktitle "booktitle" output.check
+ new.sentence % jtb: start a new sentence for series/volume
+ format.bvolume output
+ format.number.series output
+ new.sentence
+ publisher "publisher" output.check
+ address "address" output.check % jtb: require address
+ format.bookpages output
+ format.chapter.pages output % gnp - was special.output.nonnull
+ % left out comma before page numbers
+ % jtb: moved from before publisher
+ }
+ {
+ format.incoll.inproc.crossref output.nonnull
+ format.chapter.pages output
+ }
+ if$
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { inproceedings }
+{
+ output.bibitem
+ format.authors "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.articletitle "title" output.check
+ howpublished output.dot.space
+ crossref missing$
+ {
+ journal missing$ % jtb: proceedings appearing in journals
+ { format.in.emphasize.booktitle format.city "booktitle" output.check.dot.space
+ format.series output.removenospace
+ format.editors.fml output.dot.space
+ format.bvolume.noseries output
+ new.sentence
+ organization output
+ publisher "publisher" output.check % jtb: require publisher (?)
+ address "address" output.check % jtb: require address
+ format.bookpages output
+ }
+ {
+ format.in.booktitle format.city "booktitle" output.check
+ format.editors.fml output
+ new.sentence
+ format.journal.volume.number.day.month.year output
+ }
+ if$
+ format.articleno output
+ format.pages.check.without.articleno output
+ }
+ {
+ format.incoll.inproc.crossref output.nonnull
+ format.articleno output
+ format.pages.check.without.articleno output
+ }
+ if$
+ format.articleno.numpages output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { conference } { inproceedings }
+
+FUNCTION { manual }
+{
+ output.bibitem
+ author empty.or.unknown
+ { editor empty.or.unknown
+ { organization "organization" output.check
+ organization format.key output } % if all else fails, use key
+ { format.editors "author and editor" output.check }
+ if$
+ }
+ { format.authors output.nonnull }
+ if$
+ output.year.check % added
+ new.block
+ format.btitle "title" output.check
+ organization address new.block.checkb
+ % jtb: back to normal style: organization, address
+ organization "organization" output.check
+ address output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { mastersthesis }
+{
+ output.bibitem
+ format.authors "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.title emphasize "title" output.check % NB: ACM style requires emphasized thesis title
+ new.block
+ "M.S.\ thesis" format.thesis.type output.nonnull
+ school "school" output.check
+ address output
+ new.block
+ format.advisor output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { misc }
+{
+ output.bibitem
+ format.authors output
+ author format.key output % added
+ output.year.check % added
+ title howpublished new.block.checkb
+ format.title output
+ new.block
+ howpublished output
+ "" output.nonnull.dot.space
+ output.day.month.year
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { phdthesis }
+{
+ output.bibitem
+ format.authors "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.title emphasize "title" output.check % NB: ACM style requires emphasized thesis title
+ new.block
+ "Ph.D. thesis" format.thesis.type output.nonnull
+ school "school" output.check
+ address output
+ new.block
+ format.advisor output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION {format.date}
+{ year empty.or.unknown
+ { month empty.or.unknown
+ {
+ "" % output empty date if year/month both empty
+ day empty.or.unknown
+ { }
+ { "there's a day but no month or year in " cite$ * warning$ }
+ if$
+ }
+ { "there's a month but no year in " cite$ * warning$
+ month
+ day empty.or.unknown
+ { }
+ { " " * day * }
+ if$
+ }
+ if$
+ }
+ { month empty.or.unknown
+ {
+ year % output only year if month empty
+ day empty.or.unknown
+ { }
+ { "there's a day and year but no month in " cite$ * warning$ }
+ if$
+ }
+ {
+ month " " *
+ day empty.or.unknown
+ { }
+ { day * ", " * }
+ if$
+ year *
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {new.block.checka}
+{
+ empty.or.unknown
+ 'skip$
+ 'new.block
+ if$
+}
+
+FUNCTION { periodical }
+{
+ output.bibitem
+ editor empty.or.unknown
+ { organization output }
+ { format.editors output.nonnull }
+ if$
+ new.block
+ title emphasize "title" output.check
+ format.date output
+ new.sentence
+ publisher output
+ address output
+ howpublished new.block.checka
+ howpublished output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { proceedings }
+{
+ output.bibitem
+ editor empty.or.unknown
+ { organization output
+ organization format.key output } % gnp - changed from author format.key
+ { format.editors output.nonnull }
+ if$
+ % author format.key output % gnp - removed (should be either
+ % editor or organization
+ output.year.check % added (newapa)
+ new.block
+ format.btitle format.city "title" output.check % jtb: added city
+ new.sentence
+ format.bvolume output
+ format.number.series output
+ new.sentence
+ organization output
+ % jtb: normal order: publisher, address
+ publisher output
+ address output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { techreport }
+{
+ output.bibitem
+ format.authors "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.btitle "title" output.check
+ new.block
+ format.tr.number output % jtb: moved month ...
+ institution "institution" output.check
+ address output
+ new.sentence
+ format.named.pages output
+ % ACM omits year at end in transactions style
+ % format.day.month.year output.nonnull.dot.space % jtb: ... to here (no parens)
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { unpublished }
+{
+ output.bibitem
+ format.authors
+ "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.title "title" output.check
+ fin.sentence
+ output.day.month.year % UTAH
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note.check
+ fin.entry
+}
+
+FUNCTION { default.type } { misc }
+
+%%% ACM journal-style month definitions: full name if 1--5 letters, else
+%%% abbreviation of 3 or 4 characters and a dot
+
+MACRO {jan} {"Jan."}
+
+MACRO {feb} {"Feb."}
+
+MACRO {mar} {"March"}
+
+MACRO {apr} {"April"}
+
+MACRO {may} {"May"}
+
+MACRO {jun} {"June"}
+
+MACRO {jul} {"July"}
+
+MACRO {aug} {"Aug."}
+
+MACRO {sep} {"Sept."}
+
+MACRO {oct} {"Oct."}
+
+MACRO {nov} {"Nov."}
+
+MACRO {dec} {"Dec."}
+
+
+%%% ====================================================================
+%%% I M P O R T A N T C H A N G E
+%%%
+%%% For the 2009 release of the official acm-*.bst files, there are to
+%%% be NO predefined journal abbreviations in those style files.
+%%%
+%%% ACM may later develop an official list of mappings of full journal
+%%% names of commonly-cited journals to ACM-preferred abbreviations, but
+%%% authors should consider that use of any of these commented-out
+%%% abbreviations is DEPRECATED unless the BibTeX file itself provides
+%%% its own @String{name = "value"} definitions.
+%%%
+%%% Use of journal (and publisher and address) @String{...}
+%%% abbreviations, as opposed to explicit value assignments such as
+%%% journal = "J. ACM" and publisher = "IEEE", is preferred in
+%%% bibliographic databases, because it makes it easier for journal
+%%% production staff to replace those definitions by publisher-preferred
+%%% abbreviations when articles are typeset for publication.
+%%%
+%%% For historical reasons, and because some of these abbreviations are
+%%% used in other (non-ACM) bibliography style files, they are preserved
+%%% here in comments. Future releases of the acm*-.bst files are likely
+%%% to remove them entirely.
+%%% ====================================================================
+%%%
+%%% DEPRECATED: MACRO {acmcs} {"ACM Comput. Surv."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {acmlett} {"ACM Lett. Program. Lang. Syst."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {acta} {"Acta Inf."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ai} {"Artificial Intelligence"}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {al} {"Ada Lett."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {acr} {"Adv. Comput. Res."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {bit} {"Bit"}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {cacm} {"Commun. ACM"} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {cj} {"Comput. J."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {cn} {"Comput. Netw."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {cl} {"Comput. Lang."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ibmjrd} {"IBM J. Res. and Development"} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ibmsj} {"IBM Systems Journal"} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ict} {"Inf. Contr."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieebcs} {"IEE/BCS Softw. Eng. J."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieees} {"IEEE Softw."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieeese} {"IEEE Trans. Softw. Eng."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieeetc} {"IEEE Trans. Comput."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieeetcad} {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieeetpds} {"IEEE Trans. Parall. Distrib. Syst."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieeetit} {"IEEE Trans. Inf. Theory"}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ipl} {"Inf. Process. Lett."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {icp} {"Inf. Comput."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ist} {"Inf. Softw. Tech."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ijsa} {"Int. J. Supercomput. Appl."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ijpp} {"Int. J. Parallel Program."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jacm} {"J. ACM"} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: % MACRO {jcss} {"Journal of Computer and System Sciences"} % original BibTeX
+%%% DEPRECATED: MACRO {jcss} {"J. Comput. Syst. Sci."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jlp} {"J. Logic Program."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jfp} {"J. Funct. Program."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jsmrp} {"J. Softw. Maint. Res. Pract."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jss} {"J. Syst. Softw."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jlc} {"J. Logic and Comput."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jlsc} {"J. Lisp Symb. Comput."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {lpls} {"Lett. Program. Lang. Syst."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {mor} {"Math. Oper. Res."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {mscs} {"Math. Struct. Comput. Sci."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {mst} {"Math. Syst. Theor."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ngc} {"New Gen. Comput."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {scp} {"Sci. Comput. Program."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {sicomp} {"SIAM J. Comput."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {spe} {"Softw. Pract. Exper."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {tocs} {"ACM Trans. Comput. Syst."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {tods} {"ACM Trans. Database Syst."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {tog} {"ACM Trans. Graphics"} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {toms} {"ACM Trans. Math. Softw."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {toois} {"ACM Trans. Office Inf. Syst."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {toplas} {"ACM Trans. Program. Lang. Syst."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {tcs} {"Theor. Comput. Sci."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {tr} {"Tech. Rep."}
+%%% ====================================================================
+
+READ
+
+FUNCTION { sortify }
+{
+ purify$
+ "l" change.case$
+}
+
+FUNCTION { chop.word }
+{
+ 's :=
+ 'len :=
+ s #1 len substring$ =
+ { s len #1 + global.max$ substring$ }
+ 's
+ if$
+}
+
+FUNCTION { sort.format.names }
+{
+ 's :=
+ #1 'nameptr :=
+ ""
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { nameptr #1 >
+ { " " * }
+ 'skip$
+ if$
+ % s nameptr "{ff{ } }{ll{ }}{ vv{ }}{ jj{ }}" format.name$ 't :=
+ s nameptr "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}" format.name$ 't :=
+ nameptr numnames = t "others" = and
+ { " et~al" * }
+ { t sortify * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION { sort.format.title }
+{
+ 't :=
+ "A " #2
+ "An " #3
+ "The " #4 t chop.word
+ chop.word
+ chop.word
+ sortify
+ #1 global.max$ substring$
+}
+
+FUNCTION { author.sort }
+{
+ author empty.or.unknown
+ { key empty.or.unknown
+ { "to sort, need author or key in " cite$ * warning$
+ "" }
+ { key sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION { author.editor.sort }
+{
+ author empty.or.unknown
+ {
+ editor empty.or.unknown
+ {
+ key empty.or.unknown
+ { "to sort, need author, editor, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION { author.organization.sort }
+{
+ % added - GNP. Stack author or organization for sorting (from alpha.bst).
+ % Unlike alpha.bst, we need entire names, not abbreviations
+
+ author empty.or.unknown
+ { organization empty.or.unknown
+ { key empty.or.unknown
+ { "to sort, need author, organization, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { organization sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION { editor.organization.sort }
+{
+ % added - GNP. Stack editor or organization for sorting (from alpha.bst).
+ % Unlike alpha.bst, we need entire names, not abbreviations
+
+ editor empty.or.unknown
+ { organization empty.or.unknown
+ { key empty.or.unknown
+ { "to sort, need editor, organization, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { organization sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+}
+
+FUNCTION { presort }
+{
+ % Presort creates the bibentry's label via a call to calc.label, and then
+ % sorts the entries based on entry type. Chicago.bst adds support for
+ % including organizations as the sort key; the following is stolen from
+ % alpha.bst.
+
+ %%: calc.label sortify % recalculate bibitem label
+ %%: year field.or.null purify$ #-1 #4 substring$ * % add year
+ %% " "
+ %% *
+ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.sort
+ { type$ "proceedings" =
+ 'editor.organization.sort
+ { type$ "manual" =
+ 'author.organization.sort
+ 'author.sort
+ if$
+ }
+ if$
+ }
+ if$
+ " "
+ *
+ year field.or.null sortify
+ *
+ " "
+ *
+ title field.or.null
+ sort.format.title
+ *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+ITERATE { presort }
+
+SORT % by label, year, author/editor, title
+
+STRINGS { longest.label }
+
+INTEGERS { number.label longest.label.width }
+
+FUNCTION {initialize.longest.label}
+{ "" 'longest.label :=
+ #1 'number.label :=
+ #0 'longest.label.width :=
+}
+
+FUNCTION {longest.label.pass}
+{ number.label int.to.str$ 'label :=
+ number.label #1 + 'number.label :=
+ label width$ longest.label.width >
+ { label 'longest.label :=
+ label width$ 'longest.label.width :=
+ }
+ 'skip$
+ if$
+}
+
+EXECUTE {initialize.longest.label}
+
+ITERATE {longest.label.pass}
+
+FUNCTION { initialize.extra.label.stuff }
+{ #0 int.to.chr$ 'last.label :=
+ "" 'next.extra :=
+ #0 'last.extra.num :=
+}
+
+EXECUTE {initialize.extra.label.stuff}
+
+FUNCTION { begin.bib }
+{
+ %% Set to #0 show 13-digit ISBN in preference to 10-digit ISBN.
+ %% Set to #1 to show both 10-digit and 13-digit ISBNs.
+ #1 'show-isbn-10-and-13 :=
+
+ "%%% -*-BibTeX-*-" writeln
+ "%%% Do NOT edit. File created by BibTeX with style acmtrans-v2 [15-Nov-2008]." writeln
+ "" writeln
+
+ preamble$ empty.or.unknown
+ 'skip$
+ { preamble$ writeln }
+ if$
+ "\begin{thebibliography}{" longest.label * "}" * writeln
+ "" writeln
+ "%%% ====================================================================" writeln
+ "%%% NOTE TO THE USER: you can override these defaults by providing" writeln
+ "%%% customized versions of any of these macros before the \bibliography" writeln
+ "%%% command. Each of them MUST provide its own final punctuation," writeln
+ "%%% except for \shownote{}, \showDOI{}, and \showURL{}. The latter two" writeln
+ "%%% do not use final punctuation, in order to avoid confusing it with" writeln
+ "%%% the Web address." writeln
+ "%%%" writeln
+ "%%% To suppress output of a particular field, define its macro to expand" writeln
+ "%%% to an empty string, or better, \unskip, like this:" writeln
+ "%%%" writeln
+ "%%% \newcommand{\showDOI}[1]{\unskip} % LaTeX syntax" writeln
+ "%%%" writeln
+ "%%% \def \showDOI #1{\unskip} % plain TeX syntax" writeln
+ "%%%" writeln
+ "%%% ====================================================================" writeln
+ "" writeln
+
+ %% ACM publications do not use CODEN, ISSN, and LCCN data, so their default
+ %% macro wrappers expand to \unskip, discarding their values and unwanted
+ %% space.
+ %%
+ %% For other publications, prior definitions like these may be useful:
+ %%
+ %% Plain TeX:
+ %% \def \showCODEN #1{CODEN #1.}
+ %% \def \showISSN #1{ISSN #1.}
+ %% \def \showLCCN #1{LCCN #1.}
+ %%
+ %% LaTeX:
+ %% \newcommand{\showCODEN}[1]{CODEN #1.}
+ %% \newcommand{\showISSN}[1]#1{ISSN #1.}
+ %% \newcommand{\showLCCN}[1]{LCCN #1.}
+
+ "\ifx \showCODEN \undefined \def \showCODEN #1{\unskip} \fi" writeln
+ "\ifx \showDOI \undefined \def \showDOI #1{{\tt DOI:}\penalty0{#1}\ } \fi" writeln
+ % ACM styles omit ISBNs, but they can be included by suitable definitions of
+ % \showISBNx and \showISBNxiii before the .bbl file is read
+ "\ifx \showISBNx \undefined \def \showISBNx #1{\unskip} \fi" writeln
+ "\ifx \showISBNxiii \undefined \def \showISBNxiii #1{\unskip} \fi" writeln
+ "\ifx \showISSN \undefined \def \showISSN #1{\unskip} \fi" writeln
+ "\ifx \showLCCN \undefined \def \showLCCN #1{\unskip} \fi" writeln
+ "\ifx \shownote \undefined \def \shownote #1{#1} \fi" writeln % NB: final period supplied by add.period$ above
+ "\ifx \showarticletitle \undefined \def \showarticletitle #1{#1} \fi" writeln
+ "\ifx \showURL \undefined \def \showURL #1{#1} \fi" writeln
+}
+
+EXECUTE {begin.bib}
+
+EXECUTE {init.state.consts}
+
+ITERATE {call.type$}
+
+FUNCTION { end.bib }
+{
+ newline$
+ "\end{thebibliography}"
+ writeln
+}
+
+EXECUTE {end.bib}
diff --git a/Master/texmf-dist/bibtex/bst/acmart/acm-unsrt.bst b/Master/texmf-dist/bibtex/bst/acmart/acm-unsrt.bst
new file mode 100644
index 00000000000..0994f2c2412
--- /dev/null
+++ b/Master/texmf-dist/bibtex/bst/acmart/acm-unsrt.bst
@@ -0,0 +1,3142 @@
+%%% -*-BibTeX-*-
+%%% ====================================================================
+%%% @BibTeX-style-file{
+%%% author = "Nelson H. F. Beebe and many others",
+%%% version = "1.03",
+%%% date = "15 April 2011",
+%%% time = "23:55:02 EDT",
+%%% filename = "acm-unsrt.bst",
+%%% address = "University of Utah
+%%% Department of Mathematics, 110 LCB
+%%% 155 S 1400 E RM 233
+%%% Salt Lake City, UT 84112-0090
+%%% USA",
+%%% telephone = "+1 801 581 5254",
+%%% FAX = "+1 801 581 4148",
+%%% URL = "http://www.math.utah.edu/~beebe",
+%%% checksum = "18030 3142 11525 86689",
+%%% email = "beebe@math.utah.edu, beebe@acm.org,
+%%% beebe@computer.org",
+%%% codetable = "ISO/ASCII",
+%%% keywords = "ACM unsrt bibliography style; BibTeX",
+%%% license = "public domain",
+%%% supported = "yes",
+%%% abstract = "",
+%%% docstring = "The checksum field above contains a CRC-16
+%%% checksum as the first value, followed by the
+%%% equivalent of the standard UNIX wc (word
+%%% count) utility output of lines, words, and
+%%% characters. This is produced by Robert
+%%% Solovay's checksum utility.",
+%%% }
+%%% ====================================================================
+
+% "ACM unsrt" BibTeX style, derived by minimal modifications from acm-plain.bst
+% "ACM Transactions" BibTeX style, acmtrans-v2.bst
+% for BibTeX version 0.99c, LaTeX version 3.141
+% ACM extensions with code cleaned up, extended, and debugged 10--15-Nov-2008
+% Revised 28-MARCH-1996
+% Revised 30-JUNE-1995
+% Revised 15-JAN-1996
+% Revised 17-APRIL-2008
+% Revised 13-MARCH-2011
+% Revised 27-MARCH-2011
+% Revised 15-APRIL-2011
+%
+% Hacked by John T. Boyland at University of California, Berkeley
+% (with assistance by John R. Hauser)
+% Hacked by Andrew W. Appel and Rebecca L. Davies at Princeton University,
+% based on a "chicago.bst" by Glenn Paulley at U. Waterloo,
+% which was based on "newapa.bst" found at ymir.claremont.edu.
+%
+% Version 2.2
+% Johny Sebatian and Sanjeev Sharma
+% Aptara corp (c) 2008
+%
+% History
+%
+% Date: 28th April 2008
+%
+% 1. Avoid 'repeating' the 'month' values.
+% 2. Avoid incorrectly italicizing the volume number.
+% 3. Avoid non italicizing certain titles (book, inproceedings etc).
+% 4. NO series if there is NO volume.
+% 5. Sorting of reference with first surname.
+% 6. Article no added for Inproceedings.
+%
+% Date: 07th May 2008
+%
+% 1. Abbreviation list added
+%
+% Citation format: [author-last-name year]
+% [author-last-name and author-last-name year]
+% [author-last-name, author-last-name, and author-last-name year]
+% [author-last-name et al. year]
+% [author-last-name]
+% author-last-name [year]
+% [author-last-name and author-last-name]
+% [author-last-name et al.]
+% [year] or [year,year]
+% year or year,year
+%
+% Reference list ordering: alphabetical by author or whatever passes
+% for author in the absence of one.
+%
+% This BibTeX style has support for abbreviated author lists and for
+% year-only citations. This is done by having the citations
+% actually look like
+%
+% \citeauthoryear{full-author-info}{abbrev-author-info}{year}
+%
+% The LaTeX style has to have the following (or similar)
+%
+% \let\@internalcite\cite
+% \def\fullcite{\def\citeauthoryear##1##2##3{##1, ##3}\@internalcite}
+% \def\fullciteA{\def\citeauthoryear##1##2##3{##1}\@internalcite}
+% \def\shortcite{\def\citeauthoryear##1##2##3{##2, ##3}\@internalcite}
+% \def\shortciteA{\def\citeauthoryear##1##2##3{##2}\@internalcite}
+% \def\citeyear{\def\citeauthoryear##1##2##3{##3}\@internalcite}
+%
+% These TeX macro definitions are found in acmtrans.sty. Additional
+% commands to manipulate different components of a citation can be defined
+% so that, for example, you can list author's names without parentheses
+% if using a citation as a noun or object in a sentence.
+%
+% Features of acmtrans.bst:
+% ========================
+%
+% - all authors appear last name first.
+% - all pages are listed xx-xx, (no pp.) and are at the end of the reference
+% - publishers are identified as publisher, address
+% - conferences papers (inproceedings) may give city of conference,
+% date of conference, and journal that the proceedings appear in.
+% - months abbreviated to max four letters (eg. Mar.)
+% - volume of a series indicated after the title of the series
+% - editors appear after edited title and are identified by a trailing "Eds."
+% not in parentheses. Editor names are not given in small caps.
+% (unless there is no author line)
+% - names terminated with a period even if there is no first name.
+% - editions are indicated trailing after the work, not in parentheses.
+% - "et al." citations have a protected period to avoid bad spacing (jrh)
+% - "address" required when publisher given
+% - series (roman) and volume are in a sentence separate from (book-)title
+%
+%
+% Features of chicago.bst:
+% =======================
+%
+% - full names used in citations, but abbreviated citations are available
+% (see above)
+% - if an entry has a "month", then the month and year are also printed
+% as part of that bibitem.
+% - all conjunctions use "and" instead of "\&"
+% - major modification from Chicago Manual of Style (13th ed.) is that
+% only the first author in a reference appears last name first-
+% additional authors appear as J. Q. Public.
+% - pages are listed as "pp. xx-xx" in all entry types except
+% article entries.
+% - book, inbook, and manual use "location: publisher" (or organization)
+% for address and publisher. All other types list publishers separately.
+% - "pp." are used to identify page numbers for all entry types except
+% articles.
+% - organization is used as a citation label if neither author nor editor
+% is present (for manuals).
+% - "et al." is used for long author and editor lists, or when "others"
+% is used.
+%
+% Modifications and bug fixes from newapa.bst:
+% ===========================================
+%
+% - added month, year to bib entries if month is present
+% - fixed bug with In proceedings, added necessary comma after title
+% - all conjunctions changed to "and" from "\&"
+% - fixed bug with author labels in my.full.label: "et al." now is
+% generated when "others" is an author name
+% - major modification from Chicago Manual of Style (13th ed.) is that
+% only the first author in a reference appears last name first-
+% additional authors appear as J. Q. Public.
+% - pages are listed as "pp. xx-xx" in all entry types except
+% article entries. Unnecessary (IMHO) "()" around page numbers
+% were removed, and page numbers now don't end with a period.
+% - created chicago.sty for use with this bibstyle (required).
+% - fixed bugs in FUNCTION {format.vol.num.pages} for missing volume,
+% number, and /or pages. Renamed to format.journal.volume.number.
+% - fixed bug in formatting booktitles: additional period an error if
+% book has a volume.
+% - fixed bug: editors usually given redundant period before next clause
+% (format.editors.dot) removed.
+% - added label support for organizations, if both author and editor
+% are missing (from alpha.bst). If organization is too long, then
+% the key field is used for abbreviated citations.
+% - In proceedings or books of several volumes, no comma was written
+% between the "Volume x" and the page numbers (this was intentional
+% in newapa.bst). Fixed.
+% - Some journals may not have volumes/numbers, only month/year (eg.
+% IEEE Computer). Fixed bug in article style that assumed volume/number
+% was always present.
+%
+% Original documentation for newapa.sty:
+% =====================================
+%
+% This version was made by modifying the master file made by
+% Oren Patashnik (PATASHNIK@SCORE.STANFORD.EDU), and the 'named' BibTeX
+% style of Peter F. Patel-Schneider.
+%
+% Copyright (C) 1985, all rights reserved.
+% Copying of this file is authorized only if either
+% (1) you make absolutely no changes to your copy, including name, or
+% (2) if you do make changes, you name it something other than 'newapa.bst'.
+% There are undoubtably bugs in this style. If you make bug fixes,
+% improvements, etc. please let me know. My e-mail address is:
+% spencer@cgrg.ohio.state.edu or 71160.3141@compuserve.com
+%
+% This style was made from 'plain.bst', 'named.bst', and 'apalike.bst',
+% with lots of tweaking to make it look like APA style, along with tips
+% from Young Ryu and Brian Reiser's modifications of 'apalike.bst'.
+
+ENTRY
+ { address
+ advisor
+ author
+ booktitle
+ chapter
+ city % jtb: added
+ date % jtb: added
+ edition
+ editor
+ howpublished
+ institution
+ journal
+ key
+ month
+ note
+ number
+ organization
+ pages
+ publisher
+ school
+ series
+ title
+ type
+ volume
+ year
+ % New keys recognized for acmtrans-v2.bst
+ issue % UTAH: used in, e.g., ACM SIGSAM Bulletin and ACM Communications in Computer Algebra
+ articleno
+ day % UTAH: needed for newspapers, weeklies, bi-weeklies
+ doi % UTAH
+ url % UTAH
+ bookpages % UTAH
+ numpages
+ lastaccessed % UTAH: used only for @Misc{...}
+ coden % UTAH
+ isbn % UTAH
+ isbn-13 % UTAH
+ issn % UTAH
+ lccn % UTAH
+ }
+ {}
+ { label label.year extra.label sort.year sort.label }
+
+INTEGERS { output.state before.all mid.sentence after.sentence after.block }
+
+INTEGERS { show-isbn-10-and-13 } % initialized below in begin.bib
+
+INTEGERS { nameptr namesleft numnames }
+
+INTEGERS { multiresult }
+
+INTEGERS { len }
+
+INTEGERS { last.extra.num }
+
+STRINGS { s t t.org u }
+
+STRINGS { last.label next.extra }
+
+STRINGS { p1 p2 p3 page.count }
+
+FUNCTION { dump.stack.1 }
+{
+ duplicate$ "STACK[top] = [" swap$ * "]" * warning$
+}
+
+FUNCTION { dump.stack.2 }
+{
+ duplicate$ "STACK[top ] = [" swap$ * "]" * warning$
+ swap$
+ duplicate$ "STACK[top-1] = [" swap$ * "]" * warning$
+ swap$
+}
+
+FUNCTION { empty.or.unknown }
+{
+ %% Examine the top stack entry, and push 1 if it is empty, or
+ %% consists only of whitespace, or is a string beginning with two
+ %% queries (??), and otherwise, push 0.
+ %%
+ %% This function provides a replacement for empty$, with the
+ %% convenient feature that unknown values marked by two leading
+ %% queries are treated the same as missing values, and thus, do not
+ %% appear in the output .bbl file, and yet, their presence in .bib
+ %% file(s) serves to mark values which are temporarily missing, but
+ %% are expected to be filled in eventually once more data is
+ %% obtained. The TeX User Group and BibNet bibliography archives
+ %% make extensive use of this practice.
+ %%
+ %% An empty string cannot serve the same purpose, because just as in
+ %% statistics data processing, an unknown value is not the same as an
+ %% empty value.
+ %%
+ %% At entry: stack = ... top:[string]
+ %% At exit: stack = ... top:[0 or 1]
+
+ duplicate$ empty$
+ { pop$ #1 }
+ { #1 #2 substring$ "??" = }
+ if$
+}
+
+FUNCTION { writeln }
+{
+ %% In BibTeX style files, the sequences
+ %%
+ %% ... "one" "two" output
+ %% ... "one" "two" output.xxx
+ %%
+ %% ship "one" to the output file, possibly following by punctuation,
+ %% leaving the stack with
+ %%
+ %% ... "two"
+ %%
+ %% There is thus a one-string lag in output processing that must be
+ %% carefully handled to avoid duplicating a string in the output
+ %% file. Unless otherwise noted, all output.xxx functions leave
+ %% just one new string on the stack, and that model should be born
+ %% in mind when reading or writing function code.
+ %%
+ %% BibTeX's asynchronous buffering of output from strings from the
+ %% stack is confusing because newline$ bypasses the buffer. It
+ %% would have been so much easier for newline to be a character
+ %% rather than a state of the output-in-progress.
+ %%
+ %% The documentation in btxhak.dvi is WRONG: it says
+ %%
+ %% newline$ Writes onto the bbl file what's accumulated in the
+ %% output buffer. It writes a blank line if and only
+ %% if the output buffer is empty. Since write$ does
+ %% reasonable line breaking, you should use this
+ %% function only when you want a blank line or an
+ %% explicit line break.
+ %%
+ %% write$ Pops the top (string) literal and writes it on the
+ %% output buffer (which will result in stuff being
+ %% written onto the bbl file when the buffer fills
+ %% up).
+ %%
+ %% Examination of the BibTeX source code shows that write$ does
+ %% indeed behave as claimed, but newline$ sends a newline character
+ %% directly to the output file, leaving the stack unchanged. The
+ %% first line "Writes onto ... buffer." is therefore wrong.
+ %%
+ %% The original BibTeX style files almost always use "write$ newline$"
+ %% in that order, so it makes sense to hide that pair in a private
+ %% function like this one, named after a statement in Pascal,
+ %% the programming language embedded in the BibTeX Web program.
+
+ write$ % output top-of-stack string
+ newline$ % immediate write of newline (not via stack)
+}
+
+FUNCTION { init.state.consts }
+{
+ #0 'before.all :=
+ #1 'mid.sentence :=
+ #2 'after.sentence :=
+ #3 'after.block :=
+}
+
+FUNCTION { output.nonnull }
+{ % Stack in: ... R S T Stack out: ... R T File out: S<comma><space>
+ 's :=
+ output.state mid.sentence =
+ {
+ ", " * write$
+ }
+ {
+ output.state after.block =
+ {
+ add.period$ writeln
+ "\newblock " write$
+ }
+ {
+ output.state before.all =
+ {
+ write$
+ }
+ {
+ add.period$ " " * write$
+ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+FUNCTION { output.nonnull.dot.space }
+{ % Stack in: ... R S T Stack out: ... R T File out: S<dot><space>
+ 's :=
+ output.state mid.sentence = % { "<DEBUG output.nonnull.dot.space>. " * write$ }
+ {
+ ". " * write$
+ }
+ {
+ output.state after.block =
+ {
+ add.period$ writeln "\newblock " write$
+ }
+ {
+ output.state before.all =
+ {
+ write$
+ }
+ {
+ add.period$ " " * write$
+ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+FUNCTION { output.nonnull.remove }
+{ % Stack in: ... R S T Stack out: ... R T File out: S<space>
+ 's :=
+ output.state mid.sentence =
+ {
+ " " * write$
+ }
+ {
+ output.state after.block =
+ {
+ add.period$ writeln "\newblock " write$
+ }
+ {
+ output.state before.all =
+ {
+ write$
+ }
+ {
+ add.period$ " " * write$
+ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+FUNCTION { output.nonnull.removenospace }
+{ % Stack in: ... R S T Stack out: ... R T File out: S
+ 's :=
+ output.state mid.sentence =
+ {
+ "" * write$
+ }
+ {
+ output.state after.block =
+ {
+ add.period$ writeln "\newblock " write$
+ }
+ {
+ output.state before.all =
+ {
+ write$
+ }
+ {
+ add.period$ " " * write$
+ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+FUNCTION { output }
+{ % discard top token if empty, else like output.nonnull
+ duplicate$ empty.or.unknown
+ 'pop$
+ 'output.nonnull
+ if$
+}
+
+FUNCTION { output.dot.space }
+{ % discard top token if empty, else like output.nonnull.dot.space
+ duplicate$ empty.or.unknown
+ 'pop$
+ 'output.nonnull.dot.space
+ if$
+}
+
+FUNCTION { output.removenospace }
+{ % discard top token if empty, else like output.nonnull.removenospace
+ duplicate$ empty.or.unknown
+ 'pop$
+ 'output.nonnull.removenospace
+ if$
+}
+
+FUNCTION { output.check }
+{ % like output, but warn if key name on top-of-stack is not set
+ 't :=
+ duplicate$ empty.or.unknown
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull
+ if$
+}
+
+FUNCTION { output.check.dot.space }
+{ % like output.dot.space, but warn if key name on top-of-stack is not set
+ 't :=
+ duplicate$ empty.or.unknown
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull.dot.space
+ if$
+}
+
+FUNCTION { fin.block }
+{ % functionally, but not logically, identical to fin.entry
+ add.period$
+ writeln
+}
+
+FUNCTION { fin.entry }
+{
+ add.period$
+ writeln
+}
+
+FUNCTION { new.sentence }
+{ % update sentence state, with neither output nor stack change
+ output.state after.block =
+ 'skip$
+ {
+ output.state before.all =
+ 'skip$
+ { after.sentence 'output.state := }
+ if$
+ }
+ if$
+}
+
+FUNCTION { fin.sentence }
+{
+ add.period$
+ write$
+ new.sentence
+ ""
+}
+
+FUNCTION { new.block }
+{
+ output.state before.all =
+ 'skip$
+ { after.block 'output.state := }
+ if$
+}
+
+FUNCTION { output.coden } % UTAH
+{ % output non-empty CODEN as one-line sentence (stack untouched)
+ coden empty.or.unknown
+ { }
+ { "\showCODEN{" coden * "}" * writeln }
+ if$
+}
+
+FUNCTION { format.articleno }
+{
+ articleno empty.or.unknown
+ { "" }
+ {
+ numpages empty.or.unknown
+ { "articleno field, but no numpages field, in " cite$ * warning$ }
+ { }
+ if$
+ "Article " articleno *
+ }
+ if$
+}
+
+FUNCTION { format.year }
+{ % push year string or "????" onto output stack
+ %% Because year is a mandatory field, we always force SOMETHING
+ %% to be output
+ year empty.or.unknown
+ { "????" }
+ { year }
+ if$
+}
+
+FUNCTION { format.day.month }
+{ % push "day month " or "month " or "" onto output stack
+ day empty.or.unknown
+ {
+ month empty.or.unknown
+ { "" }
+ { month " " *}
+ if$
+ }
+ {
+ month empty.or.unknown
+ { "" }
+ { day " " * month * " " *}
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.day.month.year } % UTAH
+{ % if month is empty, push "" else push "(MON.)" or "(DD MON.)"
+ % Needed for frequent periodicals: 2008. ... New York Times C-1, C-2, C-17 (23 Oct.)
+ % acm-*.bst addition: prefix parenthesized date string with
+ % ", Article nnn "
+ articleno empty.or.unknown
+ { "" }
+ { ", " format.articleno * }
+ if$
+ " (" * format.day.month * format.year * ")" *
+}
+
+FUNCTION { output.day.month.year } % UTAH
+{ % if month is empty value, do nothing; else output stack top and
+ % leave with new top string "(MON.)" or "(DD MON.)"
+ % Needed for frequent periodicals: 2008. ... New York Times C-1, C-2, C-17 (23 Oct.)
+ format.day.month.year
+ output.nonnull.remove
+}
+
+FUNCTION { strip.doi } % UTAH
+{ % Strip any Web address prefix to recover the bare DOI, leaving the
+ % result on the output stack, as recommended by CrossRef DOI
+ % documentation.
+ % For example, reduce "http://doi.acm.org/10.1145/1534530.1534545" to
+ % "10.1145/1534530.1534545". That is later typeset and displayed as
+ % doi:10.1145/1534530.1534545 as the LAST item in the reference list
+ % entry. Publisher Web sites wrap this with a suitable link to a real
+ % URL to resolve the DOI, and the master http://dx.doi.org/ address is
+ % preferred, since publisher-specific URLs can disappear in response
+ % to economic events. All journals are encouraged by the DOI
+ % authorities to use that typeset format and link procedures for
+ % uniformity across all publications that include DOIs in reference
+ % lists.
+ % The numeric prefix is guaranteed to start with "10.", so we use
+ % that as a test.
+ doi #1 #3 substring$ "10." =
+ { doi }
+ {
+ doi #1 #7 substring$ "http://" =
+ {
+ doi #8 doi text.length$ #7 - substring$ 't := % get modifiable copy of rest of DOI
+
+ "INTERNAL STYLE-FILE ERROR" 's :=
+
+ % search for next "/" and assign its suffix to s
+
+ { t text.length$ }
+ {
+ t #1 #1 substring$ "/" =
+ {
+ % save rest of string as true DOI (should be 10.xxxx/yyyy)
+ t #2 t text.length$ #1 - substring$ 's :=
+ "" 't := % empty string t terminates the loop
+ }
+ {
+ % discard first character and continue loop: t <= substring(t,2,last)
+ t #2 t text.length$ #1 - substring$ 't :=
+ }
+ if$
+ }
+ while$
+
+ % check for valid DOI (should be 10.xxxx/yyyy)
+ s #1 #3 substring$ "10." =
+ { }
+ { "unrecognized DOI substring " s * " in DOI value [" * doi * "]" * warning$ }
+ if$
+
+ s % push the stripped DOI on the output stack
+
+ }
+ {
+ "unrecognized DOI value [" doi * "]" * warning$
+ doi % push the unrecognized original DOI on the output stack
+ }
+ if$
+ }
+ if$
+}
+
+%
+% Change by BV: added standard prefix to URL
+%
+FUNCTION { output.doi } % UTAH
+{ % output non-empty DOI as one-line sentence (stack untouched)
+ doi empty.or.unknown
+ { }
+ {
+ %% NB: We want URLs at beginning of line to reduce likelihood of
+ %% BibTeX's nasty line wrapping after column 79, which then requires
+ %% manual (or automated) editing of the .bbl file to repair.
+ %% The \url{} macro strips percent-newlines, and is thus safe in
+ %% the presence of the line wrapping, but \path|...| and
+ %% \verb|...| do not.
+ "\showDOI{%" writeln
+ "\url{http://dx.doi.org/" strip.doi * "}}" * writeln
+ }
+ if$
+}
+
+FUNCTION { output.isbn } % UTAH
+{ % output non-empty ISBN-10 and/or ISBN-13 as one-line sentences (stack untouched)
+ show-isbn-10-and-13
+ {
+ %% show both 10- and 13-digit ISBNs
+ isbn empty.or.unknown
+ { }
+ {
+ "\showISBNx{" isbn * "}" * writeln
+ }
+ if$
+ isbn-13 empty.or.unknown
+ { }
+ {
+ "\showISBNxiii{" isbn-13 * "}" * writeln
+ }
+ if$
+ }
+ {
+ %% show 10-digit ISBNs only if 13-digit ISBNs not available
+ isbn-13 empty.or.unknown
+ {
+ isbn empty.or.unknown
+ { }
+ {
+ "\showISBNx{" isbn * "}" * writeln
+ }
+ if$
+ }
+ {
+ "\showISBNxiii{" isbn-13 * "}" * writeln
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION { output.issn } % UTAH
+{ % output non-empty ISSN as one-line sentence (stack untouched)
+ issn empty.or.unknown
+ { }
+ { "\showISSN{" issn * "}" * writeln }
+ if$
+}
+
+FUNCTION { output.issue }
+{ % output non-empty issue number as a one-line sentence (stack untouched)
+ issue empty.or.unknown
+ { }
+ { "Issue " issue * "." * writeln }
+ if$
+}
+
+FUNCTION { output.lccn } % UTAH
+{ % return with stack untouched
+ lccn empty.or.unknown
+ { }
+ { "\showLCCN{" lccn * "}" * writeln }
+ if$
+}
+
+FUNCTION { output.note } % UTAH
+{ % return with stack empty
+ note empty.or.unknown
+ { }
+ { "\shownote{" note add.period$ * "}" * writeln }
+ if$
+}
+
+FUNCTION { output.note.check } % UTAH
+{ % return with stack empty
+ note empty.or.unknown
+ { "empty note in " cite$ * warning$ }
+ { "\shownote{" note add.period$ * "}" * writeln }
+ if$
+}
+
+%
+% Changes by BV 2011/04/15. Do not output
+% url if doi is defined
+%
+FUNCTION { output.url } % UTAH
+{ % return with stack untouched
+ % output URL and associated lastaccessed fields
+ doi empty.or.unknown
+ {
+ url empty.or.unknown
+ { }
+ {
+ %% NB: We want URLs at beginning of line to reduce likelihood of
+ %% BibTeX's nasty line wrapping after column 79, which would require
+ %% manual (or automated) editing of the .bbl file to repair. However,
+ %% the \url{} macro handles the unwrapping job automatically.
+ "\showURL{%" writeln
+ lastaccessed empty.or.unknown
+ { "" }
+ { "Retrieved " lastaccessed * " from " * }
+ if$
+
+ %% The URL field may contain a semicolon-separated list of Web
+ %% addresses, and we locate and wrap each of them in \url{...}.
+ %% The simplistic approach of putting the entire list into the
+ %% macro argument is that the semicolons are typeset in a
+ %% typewriter font, and no space follows them.
+ %%
+ %% We therefore replace the original code
+ %% "\url{" * url * "}}" * writeln
+ %% with this character-at-a-time loop:
+
+ "\url{" *
+
+ url 't := % get modifiable copy of URL list
+
+ { t text.length$ }
+ {
+ t #1 #1 substring$ ";" =
+ { % then split argument at separator
+ "};" * writeln
+ "\url{"
+ }
+ { % else concatenate nonblank character to argument
+ t #1 #1 substring$ " " =
+ { }
+ { t #1 #1 substring$ * }
+ if$
+ }
+ if$
+
+ t #2 t text.length$ #1 - substring$ 't :=
+ }
+ while$
+
+ "}}" * writeln
+ }
+ if$
+ }
+ { }
+ if$
+}
+
+FUNCTION { output.year.check }
+{ % warn if year empty, else output top string and leave " YEAR<label>" on stack in mid-sentence
+ year empty.or.unknown
+ { "empty year in " cite$ * warning$ }
+ { write$
+ " " year * extra.label *
+ mid.sentence 'output.state :=
+ }
+ if$
+}
+
+FUNCTION { not }
+{
+ { #0 }
+ { #1 }
+ if$
+}
+
+FUNCTION { and }
+{
+ 'skip$
+ { pop$ #0 }
+ if$
+}
+
+FUNCTION { or }
+{
+ { pop$ #1 }
+ 'skip$
+ if$
+}
+
+FUNCTION { le }
+{
+ %% test whether first number is less than or equal to second number
+ %% stack in: n1 n2
+ %% stack out: if n1 <= n2 then 1 else 0
+
+ %% "DEBUG: le " cite$ * warning$
+ > { #0 } { #1 } if$
+}
+
+FUNCTION { ge }
+{
+ %% test whether first number is greater than or equal to second number
+ %% stack in: n1 n2
+ %% stack out: if n1 >= n2 then 1 else 0
+
+ %% "DEBUG: ge " cite$ * warning$
+ < { #0 } { #1 } if$
+}
+
+FUNCTION { is.leading.digit }
+{
+ %% test whether first character of string is a digit
+ %% stack in: string
+ %% stack out: if first-char-is-digit then 1 else 0
+
+ #1 #1 substring$ % replace string by string[1:1]
+ duplicate$ % string[1:1] string[1:1]
+ chr.to.int$
+ "0" chr.to.int$ swap$ le % "0" <= string[1:1] --> 0-or-1
+ swap$ % 0-or-1 string[1:1]
+ chr.to.int$
+ "9" chr.to.int$ le % string[1:1} <= "9" --> 0-or-1
+ and
+}
+
+FUNCTION { skip.digits }
+{
+ %% skip over leading digits in string
+ %% stack in: string
+ %% stack out: rest-of-string leading-digits
+
+ duplicate$
+ 't :=
+ 't.org :=
+ "" 'u :=
+
+ { t text.length$ }
+ {
+ %% "=================DEBUG: skip.digits t = [" t * "]" * warning$
+ t is.leading.digit
+ { t #2 t text.length$ #1 - substring$ }
+ {
+ t 'u :=
+ ""
+ }
+ if$
+ 't :=
+ }
+ while$
+
+ u % rest of string
+ t.org #1 t.org text.length$ u text.length$ - substring$ % leading digits
+}
+
+FUNCTION { skip.nondigits }
+{
+ %% skip over leading nondigits in string
+ %% stack in: string
+ %% stack out: rest-of-string
+
+ 't :=
+ "" 'u :=
+
+ { t text.length$ }
+ {
+ t is.leading.digit
+ {
+ t 'u :=
+ ""
+ }
+ { t #2 t text.length$ #1 - substring$ }
+ if$
+ 't :=
+ }
+ while$
+
+ u % rest of string
+}
+
+FUNCTION { parse.next.number }
+{
+ %% stack in: string
+ %% stack out: rest-of-string next-numeric-part-of-string
+ %% Example:
+ %% stack in: "123:1--123:59"
+ %% stack out: ":1--123:59" "123"
+
+ 's :=
+ s skip.nondigits 's :=
+ s skip.digits
+}
+
+FUNCTION { reduce.pages.to.page.count }
+{
+ %% Stack in: arbitrary-and-unused
+ %% Stack out: unchanged
+ %%
+ %% For the new-style pagination with article number and numpages or
+ %% pages, we expect to have BibTeX entries containing something like
+ %% articleno = "17",
+ %% pages = "1--23",
+ %% with output "Article 17, 23 pages",
+ %% or
+ %% articleno = "17",
+ %% numpages = "23",
+ %% with output "Article 17, 23 pages",
+ %% or
+ %% articleno = "17",
+ %% pages = "17:1--17:23",
+ %% with output "Article 17, 23 pages",
+ %%
+ %% If articleno is missing or empty, then we should output "1--23",
+ %% "23" (with a warning of a missing articleno), or "17:1--17:23",
+ %% respectively.
+
+ %% "DEBUG: enter reduce.pages.to.page.count " cite$ * warning$
+
+ %% "DEBUG: pages = [" pages * "]" * warning$
+
+ pages
+ parse.next.number 'p1 :=
+ parse.next.number 'p2 :=
+ parse.next.number 'p3 :=
+ parse.next.number 'page.count :=
+
+ duplicate$
+ empty.or.unknown
+ { }
+ {
+ duplicate$ "unexpected trailing garbage [" swap$ *
+ "] after n:p1--n:p2 in pages = [" *
+ pages *
+ "] in " *
+ cite$ *
+ warning$
+ }
+ if$
+
+ pop$
+
+ %% "DEBUG: reduce.pages.to.page.count: "
+ %% " p1 = " p1 * *
+ %% " p2 = " p2 * *
+ %% " p3 = " p3 * *
+ %% " p4 = " page.count * *
+ %% " in " cite$ * * warning$
+
+ p1 p3 = p2 "1" = and numpages empty.or.unknown and
+ { "INFO: reduced pages = [" pages * "] to numpages = [" * page.count * "]" * warning$ }
+ {
+ numpages empty.or.unknown
+ { pages }
+ { numpages }
+ if$
+ 'page.count :=
+ }
+ if$
+
+ p1 "1" = p3 empty.or.unknown and numpages empty.or.unknown and
+ {
+ p2 'page.count :=
+ "INFO: reduced pages = [" pages * "] to numpages = [" * page.count * "]" * warning$
+ }
+ {
+ numpages empty.or.unknown
+ { pages }
+ { numpages }
+ if$
+ 'page.count :=
+ }
+ if$
+
+ %% "DEBUG: leave reduce.pages.to.page.count " cite$ * warning$
+}
+
+FUNCTION { new.block.checkb }
+{ % issue a new.block only if at least one of top two stack strings is not empty
+ empty.or.unknown
+ swap$ empty.or.unknown
+ and
+ 'skip$
+ 'new.block
+ if$
+}
+
+FUNCTION { field.or.null }
+{ % convert empty value to null string, else return value
+ duplicate$ empty.or.unknown
+ { pop$ "" }
+ 'skip$
+ if$
+}
+
+FUNCTION { emphasize }
+{ % emphasize a non-empty top string on the stack (WITHOUT italic correction)
+ duplicate$ empty.or.unknown
+ { pop$ "" }
+ { "{\em " swap$ * "}" * }
+ if$
+}
+
+FUNCTION { emphasize.with.italic.correction }
+{ % convert empty string to null string, or emphasize with a trailing italic correction
+ duplicate$ empty.or.unknown
+ { pop$ "" }
+ { "{\em " swap$ * "\/}" * }
+ if$
+}
+
+FUNCTION { comma }
+{ % convert empty string to null string, or brace string and add trailing comma
+ duplicate$ empty.or.unknown
+ { pop$ "" }
+ { "{" swap$ * "}," * }
+ if$
+}
+
+FUNCTION { format.names }
+{
+ % Format bibliographical entries with the first author last name first,
+ % and subsequent authors with initials followed by last name.
+ % All names are formatted in this routine.
+
+ 's :=
+ #1 'nameptr := % nameptr = 1;
+ s num.names$ 'numnames := % numnames = num.name$(s);
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { nameptr #1 =
+ %NO: BAD ORDER: {"{" s nameptr "{ff~}{ll}{, jj}{, vv}" format.name$ * "}" * 't := }
+ %NO: BAD ORDER: {"{" s nameptr "{ff~}{ll}{, jj}{, vv}" format.name$ * "}" * 't := }
+ {"{" s nameptr "{ff }{vv }{ll}{, jj}" format.name$ * "}" * 't := }
+ {"{" s nameptr "{ff }{vv }{ll}{, jj}" format.name$ * "}" * 't := }
+ if$
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "{\sc others}" =
+ { " {et~al\mbox{.}}" * } % jrh: avoid spacing problems
+ { " {and} " * t * } % from Chicago Manual of Style
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr := % nameptr += 1;
+ namesleft #1 - 'namesleft := % namesleft =- 1;
+ }
+ while$
+}
+
+FUNCTION { my.full.label }
+{
+ 's :=
+ #1 'nameptr := % nameptr = 1;
+ s num.names$ 'numnames := % numnames = num.name$(s);
+ numnames 'namesleft :=
+ { namesleft #0 > }
+
+ { s nameptr "{vv~}{ll}" format.name$ 't := % get the next name
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "others" =
+ { " et~al\mbox{.}" * } % jrh: avoid spacing problems
+ { " and " * t * } % from Chicago Manual of Style
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr := % nameptr += 1;
+ namesleft #1 - 'namesleft := % namesleft =- 1;
+ }
+ while$
+
+}
+
+FUNCTION { format.names.fml }
+{
+ % Format names in "familiar" format, with first initial followed by
+ % last name. Like format.names, ALL names are formatted.
+ % jtb: The names are NOT put in small caps
+
+ 's :=
+ #1 'nameptr := % nameptr = 1;
+ s num.names$ 'numnames := % numnames = num.name$(s);
+ numnames 'namesleft :=
+ { namesleft #0 > }
+
+ {
+ "{" s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ * "}" * 't :=
+
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "{others}" =
+ { " {et~al\mbox{.}}" * }
+ { " {and} " * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr := % nameptr += 1;
+ namesleft #1 - 'namesleft := % namesleft =- 1;
+ }
+ while$
+}
+
+FUNCTION { format.authors }
+{
+ author empty.or.unknown
+ { "" }
+ { author format.names add.period$} % jtb: add period if none before
+ if$
+}
+
+FUNCTION { format.key }
+{
+ empty.or.unknown
+ { key field.or.null }
+ { "" }
+ if$
+}
+
+FUNCTION { format.no.key }
+{
+ empty.or.unknown
+ { "" }
+ { "" }
+ if$
+}
+
+FUNCTION { format.editors.fml }
+{
+ % Format editor names for use in the "in" types: inbook, incollection,
+ % inproceedings: first initial, then last names. When editors are the
+ % LABEL for an entry, then format.editor is used which lists editors
+ % by last name first.
+
+ editor empty.or.unknown
+ { "" }
+ {
+ editor format.names.fml editor num.names$ #1 >
+ { " (Eds.)" * }
+ { " (Ed.)" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.editors }
+{ % format editor names for use in labels, last names first.
+ editor empty.or.unknown
+ { "" }
+ {
+ editor format.names
+ editor num.names$ #1 >
+ { " (Eds.)." * }
+ { " (Ed.)." * }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.articletitle }
+{
+ title empty.or.unknown
+ { "" }
+ % Use this to preserve lettercase in titles:
+ { "\showarticletitle{" title * "}" * }
+ % Use this for downcase title style:
+ % { \showarticletitle{" title "t" change.case$ * "}" * }
+ if$
+}
+
+FUNCTION { format.title }
+{
+ title empty.or.unknown
+ { "" }
+ % Use this to preserve lettercase in titles:
+ { title }
+ % Use this for downcase title style:
+ % { title "t" change.case$ }
+ if$
+}
+
+FUNCTION { n.dashify }
+{
+ 't :=
+ ""
+ { t empty.or.unknown not }
+ {
+ t #1 #1 substring$ "-" =
+ {
+ t #1 #2 substring$ "--" = not
+ { "--" *
+ t #2 global.max$ substring$ 't :=
+ }
+ {
+ { t #1 #1 substring$ "-" = }
+ {
+ "-" *
+ t #2 global.max$ substring$ 't :=
+ }
+ while$
+ }
+ if$
+ }
+ {
+ t #1 #1 substring$ *
+ t #2 global.max$ substring$ 't :=
+ }
+ if$
+ }
+ while$
+}
+
+FUNCTION { format.btitle }
+{
+ edition empty.or.unknown
+ { title emphasize }
+ { title empty.or.unknown
+ { title emphasize } % jtb: what is this supposed to do ?!?
+ { "{\em " title * "\/} (" * edition "l" change.case$ * " ed.)" * } % jtb: no parens for ed.
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.emphasize.booktitle }
+{ % push "" or "{\em booktitle}" or "{\em booktitle}, (second ed.)" on stack
+ edition empty.or.unknown
+ { booktitle emphasize }
+ { booktitle empty.or.unknown
+ { "" }
+ { "{\em " booktitle * "} (" * edition "l" change.case$ * " ed.)" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.city }
+{
+ % jtb: if the preceding string (the title of the conference) is non-empty,
+ % jtb: append the location, otherwise leave empty (so as to trigger the
+ % jtb: error message in output.check
+
+ duplicate$ empty.or.unknown
+ { }
+ {
+ city empty.or.unknown
+ {
+ date empty.or.unknown
+ { }
+ { " (" * date * ")" * }
+ if$
+ }
+ {
+ date empty.or.unknown
+ { " (" * city * ")" * }
+ { " (" * city * ", " * date * ")" * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION { tie.or.space.connect }
+{
+ duplicate$ text.length$ #3 <
+ { "~" }
+ { " " }
+ if$
+ swap$ * *
+}
+
+FUNCTION { either.or.check }
+{
+ empty.or.unknown
+ 'pop$
+ { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+ if$
+}
+
+FUNCTION { format.bvolume }
+{
+ % jtb: If there is a series, this is added and the volume trails after it.
+ % jtb: Otherwise, "Vol" is Capitalized.
+
+ volume empty.or.unknown
+ { "" }
+ {
+ series empty.or.unknown
+ { "Vol." volume tie.or.space.connect}
+ { series ", " * "Vol." volume tie.or.space.connect *}
+ if$
+ "volume and number" number either.or.check
+ }
+ if$
+}
+
+FUNCTION { format.bvolume.noseries }
+{
+ volume empty.or.unknown
+ { "" }
+ {
+ series empty.or.unknown
+ { "Vol." volume tie.or.space.connect}
+ { "Vol." volume tie.or.space.connect}
+% { series ", " * "Vol." volume tie.or.space.connect *}
+ if$
+ "volume and number" number either.or.check
+ }
+ if$
+}
+
+FUNCTION { format.series }
+{
+ series empty.or.unknown
+ {""}
+ {" {\em (" * series ")}" *}
+ if$
+}
+
+FUNCTION { format.number.series }
+{
+ volume empty.or.unknown
+ {
+ number empty.or.unknown
+ {
+ volume empty.or.unknown
+ { "" }
+ {
+ series empty.or.unknown
+ { "" }
+ { " (" series * ")" * }
+ if$
+ }
+ if$
+ } % { series field.or.null }
+ {
+ output.state mid.sentence =
+ { "Number" } % gnp - changed to mixed case always
+ { "Number" }
+ if$
+ number tie.or.space.connect series empty.or.unknown
+ { "there's a number but no series in " cite$ * warning$ }
+ { " in " * series * }
+ if$
+ }
+ if$
+ }
+ {
+ ""
+ }
+ if$
+}
+
+FUNCTION { multi.page.check }
+{
+ 't :=
+ #0 'multiresult :=
+ { multiresult not
+ t empty.or.unknown not
+ and
+ }
+ { t #1 #1 substring$
+ duplicate$ "-" =
+ swap$ duplicate$ "," =
+ swap$ "+" =
+ or or
+ { #1 'multiresult := }
+ { t #2 global.max$ substring$ 't := }
+ if$
+ }
+ while$
+ multiresult
+}
+
+FUNCTION { format.pages }
+{
+ pages empty.or.unknown
+ { "" }
+ {
+ pages multi.page.check
+ { pages n.dashify } % gnp - removed () % jtb: removed pp.
+ { pages }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.pages.check.without.articleno }
+{ %% format pages field only if articleno is absent
+ %% Stack out: pages-specification
+ numpages missing$ pages missing$ and
+ { "page numbers missing in both pages and numpages fields in " cite$ * warning$ }
+ { }
+ if$
+
+ articleno empty.or.unknown
+ {
+ pages missing$
+ { numpages }
+ { format.pages }
+ if$
+ }
+ { "" }
+ if$
+}
+
+FUNCTION { format.pages.check }
+{
+ pages empty.or.unknown
+ { "page numbers missing in " cite$ * warning$ "" }
+ { pages n.dashify }
+ if$
+}
+
+FUNCTION { format.bookpages }
+{
+ bookpages empty.or.unknown
+ { "" }
+ { bookpages "book pages" tie.or.space.connect }
+ if$
+}
+
+FUNCTION { format.named.pages }
+{
+ pages empty.or.unknown
+ { "" }
+ { format.pages "pages" tie.or.space.connect }
+ if$
+}
+
+%
+% Changed by Boris Veytsman, 2011-03-13
+% Now the word "pages" is printed even if
+% there field pages is not empty.
+%
+
+FUNCTION { format.page.count }
+{
+ page.count empty.or.unknown
+ { "" }
+ {
+ articleno empty.or.unknown
+ { "numpages field, but no articleno field, in " cite$ * warning$ }
+ { }
+ if$
+ page.count "pages" tie.or.space.connect
+ }
+ if$
+}
+
+FUNCTION { format.articleno.numpages }
+{
+ %% There are seven possible outputs, depending on which fields are set.
+ %%
+ %% These four are handled here:
+ %%
+ %% articleno, numpages, pages -> "Article articleno-value, numpages-value pages"
+ %% articleno, numpages -> "Article articleno-value, numpages-value pages"
+ %% articleno, pages -> "Article articleno-value, reduced-pages-value pages"
+ %% articleno -> "Article articleno-value" and warn about missing numpages
+ %%
+ %% The remaining three have already been handled by
+ %% format.pages.check.without.articleno:
+ %%
+ %% numpages, pages -> "pages-value"
+ %% numpages -> "numpages-value"
+ %% pages -> "pages-value"
+
+ articleno empty.or.unknown
+ {
+ numpages empty.or.unknown
+ { }
+ { "require articleno with numpages field in " cite$ * warning$ }
+ if$
+ ""
+ }
+ {
+ numpages empty.or.unknown
+ {
+ pages empty.or.unknown
+ {
+ "require pages or numpages fields with articleno field in " cite$ * warning$
+ "" 'page.count :=
+ }
+ { reduce.pages.to.page.count }
+ if$
+ }
+ { numpages 'page.count := }
+ if$
+
+ %% The Article number is now handled in format.day.month.year because
+ %% ACM prefers the style "Digital Libraries 12, 3, Article 5 (July 2008)"
+ %% over "Digital Libraries 12, 3 (July 2008), Article 5"
+ %% format.articleno output
+ format.page.count
+ }
+ if$
+}
+
+FUNCTION { format.journal.volume.number.day.month.year }
+{
+ % By Young (and Spencer)
+ % GNP - fixed bugs with missing volume, number, and/or pages
+ %
+ % Format journal, volume, number, pages for article types.
+ %
+ journal empty.or.unknown
+ { "no journal in " cite$ * warning$
+ "" }
+% { journal emphasize.with.italic.correction }
+ {
+ journal "Journal of the ACM" =
+ { "{\it J. ACM}" }
+ {
+ journal "American Mathematical Society Translations" =
+ { "{\it Amer. Math. Soc. Transl.}" }
+ {
+ journal "Bulletin of the American Mathematical Society" =
+ { "{\it Bull. Amer. Math. Soc.}" }
+ {
+ journal "Proceedings of the American Mathematical Society" =
+ { "{\it Proc. Amer. Math. Soc.}" }
+ {
+ journal "Transactions of the American Mathematical Society" =
+ { "{\it Trans. Amer. Math. Soc.}" }
+ {
+ journal "Communications of the {ACM}" =
+ { "{\it Commun. {ACM}}" }
+ {
+ journal "{ACM} Computing Surveys" =
+ { "{\it Comput. Surveys}" }
+ {
+ journal "{ACM} Transactions on Mathematical Software" =
+ { "{\it {ACM} Trans. Math. Software}" }
+ {
+ journal "{ACM} {SIGNUM} Newsletter" =
+ { "{\it {ACM} {SIGNUM} Newslett.}" }
+ {
+ journal "American Journal of Sociology" =
+ { "{\it Amer. J. Sociology}" }
+ {
+ journal "Journal of the American Statistical Association" =
+ { "{\it J. Amer. Statist. Assoc.}" }
+ {
+ journal "Applied Mathematics and Computation" =
+ { "{\it Appl. Math. Comput.}" }
+ {
+ journal "American Mathematical Monthly" =
+ { "{\it Amer. Math. Monthly}" }
+ {
+ journal "British Journal of Mathematical and Statistical Psychology" =
+ { "{\it Brit. J. Math. Statist. Psych.}" }
+ {
+ journal "Canadian Mathematical Bulletin" =
+ { "{\it Canad. Math. Bull.}" }
+ {
+ journal "Journal of Computational and Applied Mathematics" =
+ { "{\it J. Comput. Appl. Math.}" }
+ {
+ journal "Journal of Computational Physics" =
+ { "{\it J. Comput. Phys.}" }
+ {
+ journal "Computers and Structures" =
+ { "{\it Comput. \& Structures}" }
+ {
+ journal "The Computer Journal" =
+ { "{\it Comput. J.}" }
+ {
+ journal "Journal of Computer and System Sciences" =
+ { "{\it J. Comput. System Sci.}" }
+ {
+ journal "Contemporary Mathematics" =
+ { "{\it Contemp. Math.}" }
+ {
+ journal "Crelle's Journal" =
+ { "{\it Crelle's J.}" }
+ {
+ journal "Giornale di Mathematiche" =
+ { "{\it Giorn. Mat.}" }
+ {
+ journal "{IEEE} Transactions on Computers" =
+ { "{\it {IEEE} Trans. Comput.}" }
+ {
+ journal "{IEEE} Transactions on Automatic Control" =
+ { "{\it {IEEE} Trans. Automat. Control}" }
+ {
+ journal "Proceedings of the {IEEE}" =
+ { "{\it Proc. {IEEE}}" }
+ {
+ journal "{IEEE} Transactions on Aerospace and Electronic Systems" =
+ { "{\it {IEEE} Trans. Aerospace Electron. Systems}" }
+ {
+ journal "{IMA} Journal of Numerical Analysis" =
+ { "{\it {IMA} J. Numer. Anal.}" }
+ {
+ journal "Information Processing Letters" =
+ { "{\it Inform. Process. Lett.}" }
+ {
+ journal "Journal of the Institute of Mathematics and its Applications" =
+ { "{\it J. Inst. Math. Appl.}" }
+ {
+ journal "International Journal of Control" =
+ { "{\it Internat. J. Control}" }
+ {
+ journal "International Journal for Numerical Methods in Engineering" =
+ { "{\it Internat. J. Numer. Methods Engrg.}" }
+ {
+ journal "International Journal of Supercomputing Applications" =
+ { "{\it Internat. J. Supercomputing Applic.}" }
+ {
+ journal "Journal of Research of the National Bureau of Standards" =
+ { "{\it J. Res. Nat. Bur. Standards}" }
+ {
+ journal "Linear Algebra and its Applications" =
+ { "{\it Linear Algebra Appl.}" }
+ {
+ journal "Journal of Mathematical Analysis and Applications" =
+ { "{\it J. Math. Anal. Appl.}" }
+ {
+ journal "Mathematische Annalen" =
+ { "{\it Math. Ann.}" }
+ {
+ journal "Journal of Mathematical Physics" =
+ { "{\it J. Math. Phys.}" }
+ {
+ journal "Mathematics of Computation" =
+ { "{\it Math. Comp.}" }
+ {
+ journal "Mathematica Scandinavica" =
+ { "{\it Math. Scand.}" }
+ {
+ journal "Mathematical Tables and Other Aids to Computation" =
+ { "{\it Math. Tables Aids Comput.}" }
+ {
+ journal "Numerische Mathematik" =
+ { "{\it Numer. Math.}" }
+ {
+ journal "Pacific Journal of Mathematics" =
+ { "{\it Pacific J. Math.}" }
+ {
+ journal "Journal of Parallel and Distributed Computing" =
+ { "{\it J. Parallel and Distrib. Comput.}" }
+ {
+ journal "Parallel Computing" =
+ { "{\it Parallel Comput.}" }
+ {
+ journal "Philosophical Magazine" =
+ { "{\it Philos. Mag.}" }
+ {
+ journal "Proceedings of the National Academy of Sciences of the USA" =
+ { "{\it Proc. Nat. Acad. Sci. U. S. A.}" }
+ {
+ journal "Quarterly Journal of Mathematics, Oxford, Series (2)" =
+ { "{\it Quart. J. Math. Oxford Ser. (2)}" }
+ {
+ journal "Quarterly of Applied Mathematics" =
+ { "{\it Quart. Appl. Math.}" }
+ {
+ journal "Review of the International Statisical Institute" =
+ { "{\it Rev. Inst. Internat. Statist.}" }
+ {
+ journal "Journal of the Society for Industrial and Applied Mathematics" =
+ { "{\it J. Soc. Indust. Appl. Math.}" }
+ {
+ journal "Journal of the Society for Industrial and Applied Mathematics, Series B, Numerical Analysis" =
+ { "{\it J. Soc. Indust. Appl. Math. Ser. B Numer. Anal.}" }
+ {
+ journal "{SIAM} Journal on Algebraic and Discrete Methods" =
+ { "{\it {SIAM} J. Algebraic Discrete Methods}" }
+ {
+ journal "{SIAM} Journal on Applied Mathematics" =
+ { "{\it {SIAM} J. Appl. Math.}" }
+ {
+ journal "{SIAM} Journal on Computing" =
+ { "{\it {SIAM} J. Comput.}" }
+ {
+ journal "{SIAM} Journal on Matrix Analysis and Applications" =
+ { "{\it {SIAM} J. Matrix Anal. Appl.}" }
+ {
+ journal "{SIAM} Journal on Numerical Analysis" =
+ { "{\it {SIAM} J. Numer. Anal.}" }
+ {
+ journal "{SIAM} Review" =
+ { "{\it {SIAM} Rev.}" }
+ {
+ journal "{SIAM} Journal on Scientific and Statistical Computing" =
+ { "{\it {SIAM} J. Sci. Statist. Comput.}" }
+ {
+ journal "Software Practice and Experience" =
+ { "{\it Software Prac. Experience}" }
+ {
+ journal "Statistical Science" =
+ { "{\it Statist. Sci.}" }
+ {
+ journal "{USSR} Computational Mathematics and Mathematical Physics" =
+ { "{\it {U. S. S. R.} Comput. Math. and Math. Phys.}" }
+ {
+ journal "Journal of {VLSI} and Computer Systems" =
+ { "{\it J. {VLSI} Comput. Syst.}" }
+ {
+ journal "Zeitschrift fur Angewandte Mathematik und Mechanik" =
+ { "{\it Z. Angew. Math. Mech.}" }
+ {
+ journal "Zeitschrift fur Angewandte Mathematik und Physik" =
+ { "{\it Z. Angew. Math. Phys.}" }
+ {
+ journal "ACM Computing Surveys" =
+ { "{\it Comput. Surveys}" }
+ {
+ journal "ACM Transactions on Mathematical Software" =
+ { "{\it ACM Trans. Math. Software}" }
+ {
+ journal "ACM {SIGNUM} Newsletter" =
+ { "{\it ACM {SIGNUM} Newslett.}" }
+ {
+ journal "IEEE Transactions on Computers" =
+ { "{\it IEEE Trans. Comput.}" }
+ {
+ journal "IEEE Transactions on Automatic Control" =
+ { "{\it IEEE Trans. Automat. Control}" }
+ {
+ journal "Proceedings of the IEEE" =
+ { "{\it Proc. IEEE}" }
+ {
+ journal "IEEE Transactions on Aerospace and Electronic Systems" =
+ { "{\it IEEE Trans. Aerospace Electron. Systems}" }
+ {
+ journal "IMA Journal of Numerical Analysis" =
+ { "{\it IMA J. Numer. Anal.}" }
+ {
+ journal "SIAM Journal on Algebraic and Discrete Methods" =
+ { "{\it SIAM J. Algebraic Discrete Methods}" }
+ {
+ journal "SIAM Journal on Applied Mathematics" =
+ { "{\it SIAM J. Appl. Math.}" }
+ {
+ journal "SIAM Journal on Computing" =
+ { "{\it SIAM J. Comput.}" }
+ {
+ journal "SIAM Journal on Matrix Analysis and Applications" =
+ { "{\it SIAM J. Matrix Anal. Appl.}" }
+ {
+ journal "SIAM Journal on Numerical Analysis" =
+ { "{\it SIAM J. Numer. Anal.}" }
+ {
+ journal "SIAM Review" =
+ { "{\it SIAM Rev.}" }
+ {
+ journal "SIAM Journal on Scientific and Statistical Computing" =
+ { "{\it SIAM J. Sci. Statist. Comput.}" }
+ {
+ journal "USSR Computational Mathematics and Mathematical Physics" =
+ { "{\it U. S. S. R. Comput. Math. and Math. Phys.}" }
+ {
+ journal "Journal of VLSI and Computer Systems" =
+ { "{\it J. VLSI Comput. Syst.}" }
+ {
+ journal "Communications of the ACM" =
+ { "{\it Commun. ACM}" }
+ %% If no match with cases needing special handling, just output journal name
+ { journal emphasize.with.italic.correction }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+
+ number empty.or.unknown
+ {
+ volume empty.or.unknown
+ { "no number and no volume in " cite$ * warning$ "" * }
+ { " " * " {" * volume * "}" * }
+ if$
+ }
+ {
+ volume empty.or.unknown
+ {
+ "unusual to have number, but no volume, for " cite$ * warning$
+ " " * number *
+ }
+ { " " * volume comma " " * number * * }
+ if$
+ }
+ if$
+
+ format.day.month.year *
+}
+
+FUNCTION { format.chapter.pages }
+{
+ chapter empty.or.unknown
+ 'format.pages
+ { type empty.or.unknown
+ { "Chapter" } % gnp - changed to mixed case
+ { type "t" change.case$ }
+ if$
+ chapter tie.or.space.connect
+ pages empty.or.unknown
+ {"page numbers missing in " cite$ * warning$} % gnp - added check
+ { ", " * format.pages * }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.in.emphasize.booktitle }
+{ % jtb: format for collections or proceedings not appearing in a journal
+ booktitle empty.or.unknown
+ { "" }
+ { "In " format.emphasize.booktitle * }
+ if$
+}
+
+FUNCTION { format.in.booktitle }
+{ % jtb: format for proceedings appearing in a journal
+ booktitle empty.or.unknown
+ { "" }
+ { "In " booktitle * }
+ if$
+}
+
+FUNCTION { format.in.ed.booktitle }
+{
+ booktitle empty.or.unknown
+ { "" }
+ { editor empty.or.unknown
+ { "In " format.emphasize.booktitle * }
+ % jtb: swapped editor location
+ { "In " format.emphasize.booktitle * ", " * format.editors.fml * }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.thesis.type }
+{ % call with default type on stack top
+ type empty.or.unknown
+ 'skip$ % use default type
+ {
+ pop$ % discard default type
+ % NO: it is silly to have to brace protect every degree type!: type "t" change.case$
+ type
+ }
+ if$
+}
+
+FUNCTION { format.tr.number }
+{
+ type empty.or.unknown
+ { "Tech. Rep." }
+ 'type
+ if$
+ number empty.or.unknown
+ { "t" change.case$ }
+ %% LOOKS BAD: { "." * number tie.or.space.connect }
+ %% Prefer "Research report RJ687." to "Research report. RJ687."
+ { number tie.or.space.connect }
+ if$
+}
+
+FUNCTION { format.advisor }
+{
+ advisor empty.or.unknown
+ { "" }
+ { "Advisor(s) " advisor * }
+ if$
+}
+
+FUNCTION { format.article.crossref }
+{ "See"
+ "\cite{" * crossref * "}" *
+}
+
+FUNCTION { format.crossref.editor }
+{
+ editor #1 "{vv~}{ll}" format.name$
+ editor num.names$ duplicate$
+ #2 >
+ { pop$ " et~al\mbox{.}" * } % jrh: avoid spacing problems
+ { #2 <
+ 'skip$
+ { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { " et~al\mbox{.}" * } % jrh: avoid spacing problems
+ { " and " * editor #2 "{vv~}{ll}" format.name$ * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.book.crossref }
+{
+ volume empty.or.unknown
+ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+ "In "
+ }
+ { "Volume" volume tie.or.space.connect % gnp - changed to mixed case
+ " of " *
+ }
+ if$
+ editor empty.or.unknown
+ editor field.or.null author field.or.null =
+ or
+ { key empty.or.unknown
+ { series empty.or.unknown
+ { "need editor, key, or series for " cite$ * " to crossref " *
+ crossref * warning$
+ "" *
+ }
+ { "{\em " * series * "\/}" * }
+ if$
+ }
+ { key * }
+ if$
+ }
+ { format.crossref.editor * }
+ if$
+ " \cite{" * crossref * "}" *
+}
+
+FUNCTION { format.incoll.inproc.crossref }
+{ "See"
+ " \cite{" * crossref * "}" *
+}
+
+FUNCTION { format.lab.names }
+{
+ % format.lab.names:
+ %
+ % determines "short" names for the abbreviated author information.
+ % "Long" labels are created in calc.label, using the routine my.full.label
+ % to format author and editor fields.
+ %
+ % There are 4 cases for labels. (n=3 in the example)
+ % a) one author Foo
+ % b) one to n Foo, Bar and Baz
+ % c) use of "and others" Foo, Bar et al.
+ % d) more than n Foo et al.
+
+ 's :=
+ s num.names$ 'numnames :=
+ numnames #2 > % change number to number of others allowed before
+ % forcing "et al".
+ { s #1 "{vv~}{ll}" format.name$ " et~al\mbox{.}" * } % jrh: \mbox{} added
+ {
+ numnames #1 - 'namesleft :=
+ #2 'nameptr :=
+ s #1 "{vv~}{ll}" format.name$
+ { namesleft #0 > }
+ { nameptr numnames =
+ { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { " et~al\mbox{.}" * } % jrh: avoid spacing problems
+ { " and " * s nameptr "{vv~}{ll}" format.name$ * }
+ if$
+ }
+ { ", " * s nameptr "{vv~}{ll}" format.name$ * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+ }
+ if$
+}
+
+FUNCTION { author.key.label }
+{
+ author empty.or.unknown
+ { key empty.or.unknown
+ { "no key, author in " cite$ * warning$
+ cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION { author.key.organization.label }
+{ % added - gnp. Provide label formatting by organization if author is null.
+ author empty.or.unknown
+ { organization empty.or.unknown
+ { key empty.or.unknown
+ { "no key, author or organization in " cite$ * warning$
+ cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { organization }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION { editor.key.organization.label }
+{ % added - gnp. Provide label formatting by organization if editor is null.
+ editor empty.or.unknown
+ { organization empty.or.unknown
+ { key empty.or.unknown
+ { "no key, editor or organization in " cite$ * warning$
+ cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { organization }
+ if$
+ }
+ { editor format.lab.names }
+ if$
+}
+
+FUNCTION { author.editor.key.label }
+{
+ author empty.or.unknown
+ { editor empty.or.unknown
+ { key empty.or.unknown
+ { "no key, author, or editor in " cite$ * warning$
+ cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.lab.names }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION { calc.label }
+{
+ % Changed - GNP. See also author.organization.sort, editor.organization.sort
+ % Form label for BibTeX entry. The classification of which fields are used
+ % for which type of entry (book, inbook, etc.) are taken from alpha.bst.
+ % The change here from newapa is to also include organization as a
+ % citation label if author or editor is missing.
+
+ type$ "book" =
+ type$ "inbook" =
+ or
+ type$ "periodical" =
+ or
+ 'author.editor.key.label
+ { type$ "proceedings" =
+ 'editor.key.organization.label
+ { type$ "manual" =
+ 'author.key.organization.label
+ 'author.key.label
+ if$
+ }
+ if$
+ }
+ if$
+
+ author empty.or.unknown % generate the full label citation information.
+ {
+ editor empty.or.unknown
+ {
+ organization empty.or.unknown
+ {
+ key empty.or.unknown
+ {
+ "no author, editor, organization, or key in " cite$ * warning$
+ "??"
+ }
+ { key }
+ if$
+ }
+ { organization }
+ if$
+ }
+ { editor my.full.label }
+ if$
+ }
+ { author my.full.label }
+ if$
+
+ % leave label on the stack, to be popped when required.
+
+ "}{" * swap$ * "}{" *
+ % year field.or.null purify$ #-1 #4 substring$ *
+ %
+ % save the year for sort processing afterwards (adding a, b, c, etc.)
+ %
+ year field.or.null purify$ #-1 #4 substring$
+ 'label.year :=
+}
+
+FUNCTION { output.bibitem }
+{
+ newline$
+ %% acmtrans.bst alphanumeric style:
+ %%: "\bibitem[\protect\citeauthoryear{" write$
+ %%: calc.label write$
+ %%: sort.year write$
+ %%: "}]%" writeln
+ %%: " {" write$
+ %%: cite$ write$
+ %%: "}" writeln
+ %% acm-plain.bst numeric style:
+ newline$
+ "\bibitem{" write$
+ cite$ write$
+ "}" write$
+ newline$
+ ""
+ before.all 'output.state :=
+}
+
+FUNCTION { output.issue.doi.coden.isxn.lccn.url }
+{ % enter and return with stack empty
+ %% We switch now from buffered output to output of complete lines, so
+ %% that the Issue .. URL data have their own lines, and are less likely
+ %% to be line-wrapped by BibTeX's short-sighted algorithm, which wraps
+ %% lines longer than 79 characters, backtracking to what it thinks is
+ %% a break point in the string. Any such wrapping MUST be undone to
+ %% prevent percent-newline from appearing in DOIs and URLs. The
+ %% output data are intentionally wrapped in \showxxx{} macros at
+ %% beginning of line, and that supply their own punctuation (if they
+ %% are not defined to suppress output entirely), to make it easier for
+ %% other software to recover them from .bbl files.
+ %%
+ %% It also makes it possible to later change the macro definitions
+ %% to suppress particular output values, or alter their appearance.
+ %%
+ %% Note that it is possible for theses, technical reports, and
+ %% manuals to have ISBNs, and anything that has an ISBN may also
+ %% have an ISSN. When there are no values for these keys, there
+ %% is no output generated for them here.
+
+ "\newblock" writeln
+ after.block 'output.state :=
+
+ output.issue
+ output.isbn
+ output.coden % CODEN is functionally like ISSN, so output them sequentially
+ output.issn
+ output.lccn
+ output.doi % DOI is ALWAYS last according to CrossRef DOI documentation
+ output.url % but ACM wants URL last
+}
+
+FUNCTION { output.issue.doi.coden.isxn.lccn.url.note }
+{ % enter with stack empty, return with empty string on stack
+ output.issue.doi.coden.isxn.lccn.url
+ note empty.or.unknown
+ { }
+ {
+ "\newblock" writeln
+ output.note
+ }
+ if$
+ ""
+}
+
+FUNCTION { output.issue.doi.coden.isxn.lccn.url.note.check }
+{ % enter with stack empty, return with empty string on stack
+ output.issue.doi.coden.isxn.lccn.url
+ note empty.or.unknown
+ { }
+ {
+ "\newblock" writeln
+ output.note.check
+ }
+ if$
+ ""
+}
+
+FUNCTION { article }
+{
+ output.bibitem
+
+ author empty.or.unknown
+ {
+ editor empty.or.unknown
+ { "neither author and editor supplied for " cite$ * warning$ }
+ { format.editors "editor" output.check }
+ if$
+ }
+ { format.authors "author" output.check }
+ if$
+
+ author format.no.key output % added
+ output.year.check % added
+ new.block
+ format.articletitle "title" output.check
+ new.block
+ howpublished output
+
+ crossref missing$
+ { format.journal.volume.number.day.month.year }
+ {
+ "cross reference in @Article{...} is unusual" warning$
+ format.article.crossref output.nonnull
+ }
+ if$
+ output
+
+ format.pages.check.without.articleno output
+ format.articleno.numpages output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { book }
+{
+ output.bibitem
+ author empty.or.unknown
+ { format.editors "author and editor" output.check }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ output.year.check % added
+ new.block
+ format.btitle "title" output.check
+ crossref missing$
+ { new.sentence % jtb: start a new sentence for series/volume
+ format.bvolume output
+ new.block
+ format.number.series output
+ new.sentence
+ publisher "publisher" output.check
+ address "address" output.check % jtb: require address
+ fin.sentence
+ pages empty.or.unknown
+ { format.bookpages } % use bookpages when pages empty
+ { format.pages.check "pages" tie.or.space.connect }
+ if$
+ output
+ }
+ { new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { booklet }
+{
+ output.bibitem
+ format.authors output
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.title "title" output.check
+ new.block
+ howpublished output
+ address output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { inbook }
+{
+ output.bibitem
+ author empty.or.unknown
+ { format.editors
+ "author and editor" output.check
+ }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ output.year.check % added
+ new.block
+ format.btitle "title" output.check
+ crossref missing$
+ { new.sentence % jtb: start a new sentence for series/volume
+ format.bvolume output
+ new.block
+ format.number.series output
+ new.sentence
+ publisher "publisher" output.check
+ address "address" output.check % jtb: require address
+ format.bookpages output
+ format.chapter.pages
+ "chapter and pages" output.check % jtb: moved from before publisher
+ }
+ {
+ format.bookpages output
+ format.chapter.pages "chapter and pages" output.check
+ new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { incollection }
+{
+ output.bibitem
+ format.authors "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.articletitle "title" output.check
+ new.block
+ crossref missing$
+ { format.in.ed.booktitle "booktitle" output.check
+ new.sentence % jtb: start a new sentence for series/volume
+ format.bvolume output
+ format.number.series output
+ new.sentence
+ publisher "publisher" output.check
+ address "address" output.check % jtb: require address
+ format.bookpages output
+ format.chapter.pages output % gnp - was special.output.nonnull
+ % left out comma before page numbers
+ % jtb: moved from before publisher
+ }
+ {
+ format.incoll.inproc.crossref output.nonnull
+ format.chapter.pages output
+ }
+ if$
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { inproceedings }
+{
+ output.bibitem
+ format.authors "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.articletitle "title" output.check
+ howpublished output.dot.space
+ crossref missing$
+ {
+ journal missing$ % jtb: proceedings appearing in journals
+ { format.in.emphasize.booktitle format.city "booktitle" output.check.dot.space
+ format.series output.removenospace
+ format.editors.fml output.dot.space
+ format.bvolume.noseries output
+ new.sentence
+ organization output
+ publisher "publisher" output.check % jtb: require publisher (?)
+ address "address" output.check % jtb: require address
+ format.bookpages output
+ }
+ {
+ format.in.booktitle format.city "booktitle" output.check
+ format.editors.fml output
+ new.sentence
+ format.journal.volume.number.day.month.year output
+ }
+ if$
+ format.articleno output
+ format.pages.check.without.articleno output
+ }
+ {
+ format.incoll.inproc.crossref output.nonnull
+ format.articleno output
+ format.pages.check.without.articleno output
+ }
+ if$
+ format.articleno.numpages output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { conference } { inproceedings }
+
+FUNCTION { manual }
+{
+ output.bibitem
+ author empty.or.unknown
+ { editor empty.or.unknown
+ { organization "organization" output.check
+ organization format.key output } % if all else fails, use key
+ { format.editors "author and editor" output.check }
+ if$
+ }
+ { format.authors output.nonnull }
+ if$
+ output.year.check % added
+ new.block
+ format.btitle "title" output.check
+ organization address new.block.checkb
+ % jtb: back to normal style: organization, address
+ organization "organization" output.check
+ address output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { mastersthesis }
+{
+ output.bibitem
+ format.authors "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.title emphasize "title" output.check % NB: ACM style requires emphasized thesis title
+ new.block
+ "M.S.\ thesis" format.thesis.type output.nonnull
+ school "school" output.check
+ address output
+ new.block
+ format.advisor output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { misc }
+{
+ output.bibitem
+ format.authors output
+ author format.key output % added
+ output.year.check % added
+ title howpublished new.block.checkb
+ format.title output
+ new.block
+ howpublished output
+ "" output.nonnull.dot.space
+ output.day.month.year
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { phdthesis }
+{
+ output.bibitem
+ format.authors "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.title emphasize "title" output.check % NB: ACM style requires emphasized thesis title
+ new.block
+ "Ph.D. thesis" format.thesis.type output.nonnull
+ school "school" output.check
+ address output
+ new.block
+ format.advisor output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION {format.date}
+{ year empty.or.unknown
+ { month empty.or.unknown
+ {
+ "" % output empty date if year/month both empty
+ day empty.or.unknown
+ { }
+ { "there's a day but no month or year in " cite$ * warning$ }
+ if$
+ }
+ { "there's a month but no year in " cite$ * warning$
+ month
+ day empty.or.unknown
+ { }
+ { " " * day * }
+ if$
+ }
+ if$
+ }
+ { month empty.or.unknown
+ {
+ year % output only year if month empty
+ day empty.or.unknown
+ { }
+ { "there's a day and year but no month in " cite$ * warning$ }
+ if$
+ }
+ {
+ month " " *
+ day empty.or.unknown
+ { }
+ { day * ", " * }
+ if$
+ year *
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {new.block.checka}
+{
+ empty.or.unknown
+ 'skip$
+ 'new.block
+ if$
+}
+
+FUNCTION { periodical }
+{
+ output.bibitem
+ editor empty.or.unknown
+ { organization output }
+ { format.editors output.nonnull }
+ if$
+ new.block
+ title emphasize "title" output.check
+ format.date output
+ new.sentence
+ publisher output
+ address output
+ howpublished new.block.checka
+ howpublished output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { proceedings }
+{
+ output.bibitem
+ editor empty.or.unknown
+ { organization output
+ organization format.key output } % gnp - changed from author format.key
+ { format.editors output.nonnull }
+ if$
+ % author format.key output % gnp - removed (should be either
+ % editor or organization
+ output.year.check % added (newapa)
+ new.block
+ format.btitle format.city "title" output.check % jtb: added city
+ new.sentence
+ format.bvolume output
+ format.number.series output
+ new.sentence
+ organization output
+ % jtb: normal order: publisher, address
+ publisher output
+ address output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { techreport }
+{
+ output.bibitem
+ format.authors "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.btitle "title" output.check
+ new.block
+ format.tr.number output % jtb: moved month ...
+ institution "institution" output.check
+ address output
+ new.sentence
+ format.named.pages output
+ % ACM omits year at end in transactions style
+ % format.day.month.year output.nonnull.dot.space % jtb: ... to here (no parens)
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { unpublished }
+{
+ output.bibitem
+ format.authors
+ "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.title "title" output.check
+ fin.sentence
+ output.day.month.year % UTAH
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note.check
+ fin.entry
+}
+
+FUNCTION { default.type } { misc }
+
+%%% ACM journal-style month definitions: full name if 1--5 letters, else
+%%% abbreviation of 3 or 4 characters and a dot
+
+MACRO {jan} {"Jan."}
+
+MACRO {feb} {"Feb."}
+
+MACRO {mar} {"March"}
+
+MACRO {apr} {"April"}
+
+MACRO {may} {"May"}
+
+MACRO {jun} {"June"}
+
+MACRO {jul} {"July"}
+
+MACRO {aug} {"Aug."}
+
+MACRO {sep} {"Sept."}
+
+MACRO {oct} {"Oct."}
+
+MACRO {nov} {"Nov."}
+
+MACRO {dec} {"Dec."}
+
+
+%%% ====================================================================
+%%% I M P O R T A N T C H A N G E
+%%%
+%%% For the 2009 release of the official acm-*.bst files, there are to
+%%% be NO predefined journal abbreviations in those style files.
+%%%
+%%% ACM may later develop an official list of mappings of full journal
+%%% names of commonly-cited journals to ACM-preferred abbreviations, but
+%%% authors should consider that use of any of these commented-out
+%%% abbreviations is DEPRECATED unless the BibTeX file itself provides
+%%% its own @String{name = "value"} definitions.
+%%%
+%%% Use of journal (and publisher and address) @String{...}
+%%% abbreviations, as opposed to explicit value assignments such as
+%%% journal = "J. ACM" and publisher = "IEEE", is preferred in
+%%% bibliographic databases, because it makes it easier for journal
+%%% production staff to replace those definitions by publisher-preferred
+%%% abbreviations when articles are typeset for publication.
+%%%
+%%% For historical reasons, and because some of these abbreviations are
+%%% used in other (non-ACM) bibliography style files, they are preserved
+%%% here in comments. Future releases of the acm*-.bst files are likely
+%%% to remove them entirely.
+%%% ====================================================================
+%%%
+%%% DEPRECATED: MACRO {acmcs} {"ACM Comput. Surv."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {acmlett} {"ACM Lett. Program. Lang. Syst."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {acta} {"Acta Inf."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ai} {"Artificial Intelligence"}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {al} {"Ada Lett."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {acr} {"Adv. Comput. Res."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {bit} {"Bit"}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {cacm} {"Commun. ACM"} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {cj} {"Comput. J."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {cn} {"Comput. Netw."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {cl} {"Comput. Lang."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ibmjrd} {"IBM J. Res. and Development"} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ibmsj} {"IBM Systems Journal"} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ict} {"Inf. Contr."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieebcs} {"IEE/BCS Softw. Eng. J."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieees} {"IEEE Softw."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieeese} {"IEEE Trans. Softw. Eng."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieeetc} {"IEEE Trans. Comput."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieeetcad} {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieeetpds} {"IEEE Trans. Parall. Distrib. Syst."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieeetit} {"IEEE Trans. Inf. Theory"}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ipl} {"Inf. Process. Lett."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {icp} {"Inf. Comput."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ist} {"Inf. Softw. Tech."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ijsa} {"Int. J. Supercomput. Appl."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ijpp} {"Int. J. Parallel Program."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jacm} {"J. ACM"} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: % MACRO {jcss} {"Journal of Computer and System Sciences"} % original BibTeX
+%%% DEPRECATED: MACRO {jcss} {"J. Comput. Syst. Sci."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jlp} {"J. Logic Program."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jfp} {"J. Funct. Program."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jsmrp} {"J. Softw. Maint. Res. Pract."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jss} {"J. Syst. Softw."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jlc} {"J. Logic and Comput."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jlsc} {"J. Lisp Symb. Comput."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {lpls} {"Lett. Program. Lang. Syst."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {mor} {"Math. Oper. Res."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {mscs} {"Math. Struct. Comput. Sci."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {mst} {"Math. Syst. Theor."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ngc} {"New Gen. Comput."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {scp} {"Sci. Comput. Program."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {sicomp} {"SIAM J. Comput."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {spe} {"Softw. Pract. Exper."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {tocs} {"ACM Trans. Comput. Syst."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {tods} {"ACM Trans. Database Syst."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {tog} {"ACM Trans. Graphics"} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {toms} {"ACM Trans. Math. Softw."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {toois} {"ACM Trans. Office Inf. Syst."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {toplas} {"ACM Trans. Program. Lang. Syst."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {tcs} {"Theor. Comput. Sci."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {tr} {"Tech. Rep."}
+%%% ====================================================================
+
+READ
+
+STRINGS { longest.label }
+
+INTEGERS { number.label longest.label.width }
+
+FUNCTION {initialize.longest.label}
+{ "" 'longest.label :=
+ #1 'number.label :=
+ #0 'longest.label.width :=
+}
+
+FUNCTION {longest.label.pass}
+{ number.label int.to.str$ 'label :=
+ number.label #1 + 'number.label :=
+ label width$ longest.label.width >
+ { label 'longest.label :=
+ label width$ 'longest.label.width :=
+ }
+ 'skip$
+ if$
+}
+
+EXECUTE {initialize.longest.label}
+
+ITERATE {longest.label.pass}
+
+FUNCTION { initialize.extra.label.stuff }
+{ #0 int.to.chr$ 'last.label :=
+ "" 'next.extra :=
+ #0 'last.extra.num :=
+}
+
+EXECUTE {initialize.extra.label.stuff}
+
+FUNCTION { begin.bib }
+{
+ %% Set to #0 show 13-digit ISBN in preference to 10-digit ISBN.
+ %% Set to #1 to show both 10-digit and 13-digit ISBNs.
+ #1 'show-isbn-10-and-13 :=
+
+ "%%% -*-BibTeX-*-" writeln
+ "%%% Do NOT edit. File created by BibTeX with style acmtrans-v2 [15-Nov-2008]." writeln
+ "" writeln
+
+ preamble$ empty.or.unknown
+ 'skip$
+ { preamble$ writeln }
+ if$
+ "\begin{thebibliography}{" longest.label * "}" * writeln
+ "" writeln
+ "%%% ====================================================================" writeln
+ "%%% NOTE TO THE USER: you can override these defaults by providing" writeln
+ "%%% customized versions of any of these macros before the \bibliography" writeln
+ "%%% command. Each of them MUST provide its own final punctuation," writeln
+ "%%% except for \shownote{}, \showDOI{}, and \showURL{}. The latter two" writeln
+ "%%% do not use final punctuation, in order to avoid confusing it with" writeln
+ "%%% the Web address." writeln
+ "%%%" writeln
+ "%%% To suppress output of a particular field, define its macro to expand" writeln
+ "%%% to an empty string, or better, \unskip, like this:" writeln
+ "%%%" writeln
+ "%%% \newcommand{\showDOI}[1]{\unskip} % LaTeX syntax" writeln
+ "%%%" writeln
+ "%%% \def \showDOI #1{\unskip} % plain TeX syntax" writeln
+ "%%%" writeln
+ "%%% ====================================================================" writeln
+ "" writeln
+
+ %% ACM publications do not use CODEN, ISSN, and LCCN data, so their default
+ %% macro wrappers expand to \unskip, discarding their values and unwanted
+ %% space.
+ %%
+ %% For other publications, prior definitions like these may be useful:
+ %%
+ %% Plain TeX:
+ %% \def \showCODEN #1{CODEN #1.}
+ %% \def \showISSN #1{ISSN #1.}
+ %% \def \showLCCN #1{LCCN #1.}
+ %%
+ %% LaTeX:
+ %% \newcommand{\showCODEN}[1]{CODEN #1.}
+ %% \newcommand{\showISSN}[1]#1{ISSN #1.}
+ %% \newcommand{\showLCCN}[1]{LCCN #1.}
+
+ "\ifx \showCODEN \undefined \def \showCODEN #1{\unskip} \fi" writeln
+ "\ifx \showDOI \undefined \def \showDOI #1{{\tt DOI:}\penalty0{#1}\ } \fi" writeln
+ % ACM styles omit ISBNs, but they can be included by suitable definitions of
+ % \showISBNx and \showISBNxiii before the .bbl file is read
+ "\ifx \showISBNx \undefined \def \showISBNx #1{\unskip} \fi" writeln
+ "\ifx \showISBNxiii \undefined \def \showISBNxiii #1{\unskip} \fi" writeln
+ "\ifx \showISSN \undefined \def \showISSN #1{\unskip} \fi" writeln
+ "\ifx \showLCCN \undefined \def \showLCCN #1{\unskip} \fi" writeln
+ "\ifx \shownote \undefined \def \shownote #1{#1} \fi" writeln % NB: final period supplied by add.period$ above
+ "\ifx \showarticletitle \undefined \def \showarticletitle #1{#1} \fi" writeln
+ "\ifx \showURL \undefined \def \showURL #1{#1} \fi" writeln
+}
+
+EXECUTE {begin.bib}
+
+EXECUTE {init.state.consts}
+
+ITERATE {call.type$}
+
+FUNCTION { end.bib }
+{
+ newline$
+ "\end{thebibliography}"
+ writeln
+}
+
+EXECUTE {end.bib}
diff --git a/Master/texmf-dist/bibtex/bst/acmart/acmsiggraph.bst b/Master/texmf-dist/bibtex/bst/acmart/acmsiggraph.bst
new file mode 100644
index 00000000000..be38c028f28
--- /dev/null
+++ b/Master/texmf-dist/bibtex/bst/acmart/acmsiggraph.bst
@@ -0,0 +1,1384 @@
+% 'acmsiggraph.bst'
+% ACM SIGGRAPH bibliography style
+% * based on "ACM Transactions bibliography style (24-Jan-88 version)"
+% A lot like abbrv.bst, but names come out "Last, initials", and in \sc.
+% Some dates are parenthesized.
+% * the citation format -- [Jones 2001] -- is pulled from 'alpha.bst'
+%
+% Version History
+% * 07 Sept 2001: original version - Stephen Spencer (spencer@acm.org)
+% * 22 Dec 2003: tweaked file for entry w/out year, removed "n. d."
+% * 28 Apr 2016: added doi
+%
+%
+ENTRY
+ { address
+ author
+ booktitle
+ chapter
+ doi
+ edition
+ editor
+ howpublished
+ institution
+ journal
+ key
+ month
+ note
+ number
+ organization
+ pages
+ publisher
+ school
+ series
+ title
+ type
+ volume
+ year
+ }
+ {}
+ { label extra.label sort.label}
+
+INTEGERS { output.state before.all mid.sentence after.sentence after.block }
+
+FUNCTION {init.state.consts}
+{ #0 'before.all :=
+ #1 'mid.sentence :=
+ #2 'after.sentence :=
+ #3 'after.block :=
+}
+
+STRINGS { s t }
+
+FUNCTION {output.nonnull}
+{ 's :=
+ output.state mid.sentence =
+ { ", " * write$ }
+ { output.state after.block =
+ { add.period$ write$
+ newline$
+ "\newblock " write$
+ }
+ { output.state before.all =
+ 'write$
+ { add.period$ " " * write$ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+FUNCTION {output}
+{ duplicate$ empty$
+ 'pop$
+ 'output.nonnull
+ if$
+}
+
+FUNCTION {output.check}
+{ 't :=
+ duplicate$ empty$
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull
+ if$
+}
+
+FUNCTION {output.bibitem}
+{ newline$
+ "\bibitem[" write$
+ label write$
+ "]{" write$
+ cite$ write$
+ "}" write$
+ newline$
+ ""
+ before.all 'output.state :=
+}
+
+FUNCTION {fin.entry}
+{ add.period$
+ write$
+ newline$
+}
+
+FUNCTION {new.block}
+{ output.state before.all =
+ 'skip$
+ { after.block 'output.state := }
+ if$
+}
+
+FUNCTION {new.sentence}
+{ output.state after.block =
+ 'skip$
+ { output.state before.all =
+ 'skip$
+ { after.sentence 'output.state := }
+ if$
+ }
+ if$
+}
+
+FUNCTION {not}
+{ { #0 }
+ { #1 }
+ if$
+}
+
+FUNCTION {and}
+{ 'skip$
+ { pop$ #0 }
+ if$
+}
+
+FUNCTION {or}
+{ { pop$ #1 }
+ 'skip$
+ if$
+}
+
+FUNCTION {new.block.checka}
+{ empty$
+ 'skip$
+ 'new.block
+ if$
+}
+
+FUNCTION {new.block.checkb}
+{ empty$
+ swap$ empty$
+ and
+ 'skip$
+ 'new.block
+ if$
+}
+
+FUNCTION {field.or.null}
+{ duplicate$ empty$
+ { pop$ "" }
+ 'skip$
+ if$
+}
+
+FUNCTION {emphasize}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "{\em " swap$ * "}" * }
+ if$
+}
+
+FUNCTION {emphasizeic}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "{\em " swap$ * "\/}" * }
+ if$
+}
+
+FUNCTION {scapify}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "{\sc " swap$ * "}" * }
+ if$
+}
+
+INTEGERS { nameptr namesleft numnames }
+
+FUNCTION {format.names}
+{ 's :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr "{vv~}{ll}{, jj}{, f.}" format.name$ 't :=
+ nameptr #1 >
+ { namesleft #1 >
+ { ", " * t * }
+ { t "others" =
+ { ", et~al." * }
+ { ", and " * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+% For names inside entries (e.g., editors of an "In ...");
+% this is exactly ABBRV.BST's `format.names' function.
+FUNCTION {format.innames}
+{ 's :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't :=
+ nameptr #1 >
+ { namesleft #1 >
+ { ", " * t * }
+ { numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "others" =
+ { " et~al." * }
+ { " and " * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {format.authors}
+{ author empty$
+ { "" }
+ { author format.names scapify }
+ if$
+}
+
+FUNCTION {format.editors}
+{ editor empty$
+ { "" }
+ { editor format.names scapify
+ editor num.names$ #1 >
+ { ", Eds." * }
+ { ", Ed." * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.publisher.address}
+{ address empty$
+ { publisher empty$
+ 'skip$
+ { publisher "publisher" output.check
+ }
+ if$
+ }
+ { publisher empty$
+ 'skip$
+ { publisher "publisher" output.check
+ address "address" output.check
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.ineditors}
+{ editor empty$
+ { "" }
+ { editor format.innames
+ editor num.names$ #1 >
+ { ", Eds." * }
+ { ", Ed." * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.title}
+{ title empty$
+ { "" }
+ { title "t" change.case$ }
+ if$
+}
+
+FUNCTION {format.doi}
+{ doi empty$
+ { "" }
+ { new.block "\doi{" doi * "}" * }
+ if$
+}
+
+
+FUNCTION {n.dashify}
+{ 't :=
+ ""
+ { t empty$ not }
+ { t #1 #1 substring$ "-" =
+ { t #1 #2 substring$ "--" = not
+ { "--" *
+ t #2 global.max$ substring$ 't :=
+ }
+ { { t #1 #1 substring$ "-" = }
+ { "-" *
+ t #2 global.max$ substring$ 't :=
+ }
+ while$
+ }
+ if$
+ }
+ { t #1 #1 substring$ *
+ t #2 global.max$ substring$ 't :=
+ }
+ if$
+ }
+ while$
+}
+
+FUNCTION {format.year}
+{ year empty$
+ { "" }
+ { year }
+ if$
+}
+
+FUNCTION {format.month}
+{ month empty$
+ { "" }
+ { month }
+ if$
+}
+
+FUNCTION {format.date}
+{ year empty$
+ { month empty$
+ { "" }
+ { "there's a month but no year in " cite$ * warning$
+ month
+ }
+ if$
+ }
+ { month empty$
+ 'year
+ { month " " * year * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.btitle}
+{ title emphasize
+}
+
+FUNCTION {tie.or.space.connect}
+{ duplicate$ text.length$ #3 <
+ { "~" }
+ { " " }
+ if$
+ swap$ * *
+}
+
+FUNCTION {either.or.check}
+{ empty$
+ 'pop$
+ { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+ if$
+}
+
+FUNCTION {format.bvolume}
+{ volume empty$
+ { "" }
+ { "vol.~" volume *
+ series empty$
+ 'skip$
+ { " of " * series emphasize * }
+ if$
+ "volume and number" number either.or.check
+ }
+ if$
+}
+
+FUNCTION {format.number.series}
+{ volume empty$
+ { number empty$
+ { series field.or.null }
+ { output.state mid.sentence =
+ { "no.~" }
+ { "No.~" }
+ if$
+ number *
+ series empty$
+ { "there's a number but no series in " cite$ * warning$ }
+ { " in " * series * }
+ if$
+ }
+ if$
+ }
+ { "" }
+ if$
+}
+
+FUNCTION {format.edition}
+{ edition empty$
+ { "" }
+ { output.state mid.sentence =
+ { edition "l" change.case$ "~ed." * }
+ { edition "t" change.case$ "~ed." * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.pages}
+{ pages empty$
+ { "" }
+ { pages n.dashify }
+ if$
+}
+
+INTEGERS { multiresult }
+
+FUNCTION {multi.page.check}
+{ 't :=
+ #0 'multiresult :=
+ { multiresult not
+ t empty$ not
+ and
+ }
+ { t #1 #1 substring$
+ duplicate$ "-" =
+ swap$ duplicate$ "," =
+ swap$ "+" =
+ or or
+ { #1 'multiresult := }
+ { t #2 global.max$ substring$ 't := }
+ if$
+ }
+ while$
+ multiresult
+}
+
+FUNCTION {format.pp.pages}
+{ pages empty$
+ { "" }
+ { pages multi.page.check
+ { "pp.~" pages n.dashify * }
+ { "p.~" pages * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.journal.vol.num.date}
+{ journal empty$
+ { "empty journal in " cite$ * warning$
+ ""
+ }
+ { journal
+ volume empty$
+ 'skip$
+ { " " * volume * }
+ if$
+ number empty$
+ 'emphasizeic
+ { emphasize ", " * number * }
+ if$
+ month empty$
+ 'skip$
+ { " (" * format.month * ")" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.chapter.pages}
+{ chapter empty$
+ 'format.pages
+ { type empty$
+ { "ch.~" chapter * }
+ { type "l" change.case$ chapter tie.or.space.connect }
+ if$
+ pages empty$
+ 'skip$
+ { ", " * format.pages * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.in.ed.booktitle}
+{ booktitle empty$
+ { "" }
+ { "In " booktitle emphasize *
+ editor empty$
+ 'skip$
+ { ", " * format.ineditors * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.in.proc.date}
+{ booktitle empty$
+ { "" }
+ { "In " booktitle emphasize * }
+ if$
+}
+
+FUNCTION {empty.misc.check}
+{ author empty$ title empty$ howpublished empty$
+ month empty$ year empty$ note empty$
+ and and and and and
+ key empty$ not and
+ { "all relevant fields are empty in " cite$ * warning$ }
+ 'skip$
+ if$
+}
+
+FUNCTION {format.thesis.type}
+{ type empty$
+ 'skip$
+ { pop$
+ type "t" change.case$
+ }
+ if$
+}
+
+FUNCTION {format.tr.number}
+{ type empty$
+ { "Tech. Rep." }
+ 'type
+ if$
+ number empty$
+ { "t" change.case$ }
+ { number tie.or.space.connect }
+ if$
+}
+
+FUNCTION {format.article.crossref}
+{ key empty$
+ { journal empty$
+ { "need key or journal for " cite$ * " to crossref " * crossref *
+ warning$
+ ""
+ }
+ { "In {\em " journal * "\/}" * }
+ if$
+ }
+ { "In " key * }
+ if$
+ " \cite{" * crossref * "}" *
+}
+
+FUNCTION {format.crossref.editor}
+{ editor #1 "{vv~}{ll}" format.name$
+ editor num.names$ duplicate$
+ #2 >
+ { pop$ " et~al." * }
+ { #2 <
+ 'skip$
+ { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { " et~al." * }
+ { " and " * editor #2 "{vv~}{ll}" format.name$ * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.book.crossref}
+{ volume empty$
+ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+ "In "
+ }
+ { "Vol.~" volume *
+ " of " *
+ }
+ if$
+ editor empty$
+ editor field.or.null author field.or.null =
+ or
+ { key empty$
+ { series empty$
+ { "need editor, key, or series for " cite$ * " to crossref " *
+ crossref * warning$
+ "" *
+ }
+ { "{\em " * series * "\/}" * }
+ if$
+ }
+ { key * }
+ if$
+ }
+ { format.crossref.editor * }
+ if$
+ " \cite{" * crossref * "}" *
+}
+
+FUNCTION {format.incoll.inproc.crossref}
+{ editor empty$
+ editor field.or.null author field.or.null =
+ or
+ { key empty$
+ { booktitle empty$
+ { "need editor, key, or booktitle for " cite$ * " to crossref " *
+ crossref * warning$
+ ""
+ }
+ { "In {\em " booktitle * "\/}" * }
+ if$
+ }
+ { "In " key * }
+ if$
+ }
+ { "In " format.crossref.editor * }
+ if$
+ " \cite{" * crossref * "}" *
+}
+
+FUNCTION {article}
+{ output.bibitem
+ format.authors "author" output.check
+ new.block
+ format.year output
+ new.block
+ format.title "title" output.check
+ new.block
+ crossref missing$
+ { format.journal.vol.num.date output
+ format.pages output
+ }
+ { format.article.crossref output.nonnull
+ format.pages output
+ }
+ if$
+ format.doi output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {book}
+{ output.bibitem
+ author empty$
+ { format.editors "author and editor" output.check }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ new.block
+ format.year "year" output.check
+ new.block
+ format.btitle "title" output.check
+ format.edition output
+ crossref missing$
+ { format.bvolume output
+ new.block
+ format.number.series output
+ new.sentence
+ publisher "publisher" output.check
+ address output
+ }
+ { new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+ format.month output
+ format.doi output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {booklet}
+{ output.bibitem
+ format.authors output
+ new.block
+ format.year output
+ new.block
+ format.title "title" output.check
+ howpublished address new.block.checkb
+ howpublished output
+ address output
+ format.month output
+ format.doi output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {inbook}
+{ output.bibitem
+ author empty$
+ { format.editors "author and editor" output.check }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ new.block
+ format.year "year" output.check
+ new.block
+ format.btitle "title" output.check
+ format.edition output
+ crossref missing$
+ { format.bvolume output
+ new.block
+ format.number.series output
+ new.sentence
+ publisher "publisher" output.check
+ address output
+ }
+ { new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+ format.month output
+ format.chapter.pages "chapter and pages" output.check
+ format.doi output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {incollection}
+{ output.bibitem
+ format.authors "author" output.check
+ new.block
+ format.year "year" output.check
+ new.block
+ format.title "title" output.check
+ new.block
+ crossref missing$
+ { format.in.ed.booktitle "booktitle" output.check
+ format.edition output
+ format.bvolume output
+ format.number.series output
+ new.sentence
+ publisher "publisher" output.check
+ address output
+ format.month output
+ }
+ { format.incoll.inproc.crossref output.nonnull }
+ if$
+ format.chapter.pages output
+ format.doi output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {inproceedings}
+{ output.bibitem
+ format.authors "author" output.check
+ new.block
+ format.year "year" output.check
+ new.block
+ format.title "title" output.check
+ new.block
+ crossref missing$
+ { format.in.proc.date "booktitle" output.check
+ address empty$
+ { publisher empty$
+ 'skip$
+ { publisher "publisher" output.check
+ }
+ if$
+ }
+ { publisher empty$
+ 'skip$
+ { publisher "publisher" output.check
+ address "address" output.check
+ }
+ if$
+ }
+ if$
+ format.ineditors output
+ format.bvolume output
+ format.number.series output
+ organization "organization" output.check
+ }
+ { format.incoll.inproc.crossref output.nonnull }
+ if$
+ format.pages output
+ format.doi output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {conference} { inproceedings }
+
+FUNCTION {manual}
+{ output.bibitem
+ author empty$
+ { organization scapify output }
+ { format.authors output.nonnull }
+ if$
+ new.block
+ format.year output
+ new.block
+ format.btitle "title" output.check
+ format.edition output
+ author empty$
+ { address new.block.checka }
+ { organization address new.block.checkb
+ organization output
+ }
+ if$
+ address output
+ format.month output
+ format.doi output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {mastersthesis}
+{ output.bibitem
+ format.authors "author" output.check
+ new.block
+ format.year "year" output.check
+ new.block
+ format.btitle "title" output.check
+ new.block
+ "Master's thesis" format.thesis.type output.nonnull
+ school "school" output.check
+ address output
+ format.doi output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {misc}
+{ output.bibitem
+ format.authors output
+ format.year output
+ title howpublished new.block.checkb
+ format.title output
+ howpublished new.block.checka
+ howpublished output
+ format.month output
+ format.doi output
+ new.block
+ note output
+ fin.entry
+ empty.misc.check
+}
+
+FUNCTION {phdthesis}
+{ output.bibitem
+ format.authors "author" output.check
+ new.block
+ format.year "year" output.check
+ new.block
+ format.btitle "title" output.check
+ new.block
+ "PhD thesis" format.thesis.type output.nonnull
+ school "school" output.check
+ address output
+ format.doi output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {proceedings}
+{ output.bibitem
+ editor empty$
+ { organization scapify output }
+ { format.editors output.nonnull }
+ if$
+ new.block
+ format.year output
+ new.block
+ title "title" output.check
+ format.bvolume output
+ format.number.series output
+ editor empty$
+ 'skip$
+ { organization output }
+ if$
+ address empty$
+ { publisher empty$
+ 'skip$
+ { publisher "publisher" output.check
+ }
+ if$
+ }
+ { publisher empty$
+ 'skip$
+ { publisher "publisher" output.check
+ address "address" output.check
+ }
+ if$
+ }
+ if$
+ format.doi output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {techreport}
+{ output.bibitem
+ format.authors "author" output.check
+ new.block
+ format.year "year" output.check
+ new.block
+ format.title "title" output.check
+ new.block
+ format.tr.number output.nonnull
+ institution "institution" output.check
+ address output
+ format.month output
+ format.doi output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {unpublished}
+{ output.bibitem
+ format.authors "author" output.check
+ new.block
+ format.year output
+ new.block
+ format.title "title" output.check
+ new.block
+ note "note" output.check
+ format.month output
+ fin.entry
+}
+
+FUNCTION {default.type} { misc }
+
+MACRO {jan} {"Jan."}
+
+MACRO {feb} {"Feb."}
+
+MACRO {mar} {"Mar."}
+
+MACRO {apr} {"Apr."}
+
+MACRO {may} {"May"}
+
+MACRO {jun} {"June"}
+
+MACRO {jul} {"July"}
+
+MACRO {aug} {"Aug."}
+
+MACRO {sep} {"Sept."}
+
+MACRO {oct} {"Oct."}
+
+MACRO {nov} {"Nov."}
+
+MACRO {dec} {"Dec."}
+
+MACRO {acmcs} {"ACM Comput. Surv."}
+
+MACRO {acta} {"Acta Inf."}
+
+MACRO {cacm} {"Commun. ACM"}
+
+MACRO {ibmjrd} {"IBM J. Res. Dev."}
+
+MACRO {ibmsj} {"IBM Syst.~J."}
+
+MACRO {ieeese} {"IEEE Trans. Softw. Eng."}
+
+MACRO {ieeetc} {"IEEE Trans. Comput."}
+
+MACRO {ieeetcad}
+ {"IEEE Trans. Comput.-Aided Design Integrated Circuits"}
+
+MACRO {ipl} {"Inf. Process. Lett."}
+
+MACRO {jacm} {"J.~ACM"}
+
+MACRO {jcss} {"J.~Comput. Syst. Sci."}
+
+MACRO {scp} {"Sci. Comput. Programming"}
+
+MACRO {sicomp} {"SIAM J. Comput."}
+
+MACRO {tocs} {"ACM Trans. Comput. Syst."}
+
+MACRO {tods} {"ACM Trans. Database Syst."}
+
+MACRO {tog} {"ACM Trans. Gr."}
+
+MACRO {toms} {"ACM Trans. Math. Softw."}
+
+MACRO {toois} {"ACM Trans. Office Inf. Syst."}
+
+MACRO {toplas} {"ACM Trans. Program. Lang. Syst."}
+
+MACRO {tcs} {"Theoretical Comput. Sci."}
+
+READ
+
+FUNCTION {sortify}
+{ purify$
+ "l" change.case$
+}
+
+INTEGERS { len }
+
+FUNCTION {chop.word}
+{ 's :=
+ 'len :=
+ s #1 len substring$ =
+ { s len #1 + global.max$ substring$ }
+ 's
+ if$
+}
+
+INTEGERS { et.al.char.used }
+
+FUNCTION {initialize.et.al.char.used}
+{ #0 'et.al.char.used :=
+}
+
+EXECUTE {initialize.et.al.char.used}
+
+FUNCTION {format.lab.names}
+{
+ 's :=
+ s num.names$ 'numnames :=
+ numnames #2 > % change number to number of others allowed before
+ % forcing "et al".
+ { s #1 "{vv~}{ll}" format.name$ " et~al\mbox{.}" * }
+ {
+ numnames #1 - 'namesleft :=
+ #2 'nameptr :=
+ s #1 "{vv~}{ll}" format.name$
+ { namesleft #0 > }
+ { nameptr numnames =
+ { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { " et~al\mbox{.}" * }
+ { " and " * s nameptr "{vv~}{ll}" format.name$ * }
+ if$
+ }
+ { ", " * s nameptr "{vv~}{ll}" format.name$ * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+ }
+ if$
+}
+
+
+FUNCTION {author.key.label}
+{ author empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ { key #3 text.prefix$ }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.editor.key.label}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ { key #3 text.prefix$ }
+ if$
+ }
+ { editor format.lab.names }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.key.organization.label}
+{ author empty$
+ { key empty$
+ { organization empty$
+ { cite$ #1 #3 substring$ }
+ { "The " #4 organization chop.word #3 text.prefix$ }
+ if$
+ }
+ { key #3 text.prefix$ }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {editor.key.organization.label}
+{ editor empty$
+ { key empty$
+ { organization empty$
+ { cite$ #1 #3 substring$ }
+ { "The " #4 organization chop.word #3 text.prefix$ }
+ if$
+ }
+ { key #3 text.prefix$ }
+ if$
+ }
+ { editor format.lab.names }
+ if$
+}
+
+FUNCTION {calc.label}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.key.label
+ { type$ "proceedings" =
+ 'editor.key.organization.label
+ { type$ "manual" =
+ 'author.key.organization.label
+ 'author.key.label
+ if$
+ }
+ if$
+ }
+ if$
+
+ duplicate$
+ year empty$
+ {
+ "\protect\citename{" swap$ * " }" *
+ "" * 'label :=
+ }
+ {
+ "\protect\citename{" swap$ * " }" *
+ year
+ *
+ 'label :=
+ }
+ if$
+
+ year field.or.null *
+ sortify 'sort.label :=
+}
+
+FUNCTION {sort.format.names}
+{ 's :=
+ #1 'nameptr :=
+ ""
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { nameptr #1 >
+ { " " * }
+ 'skip$
+ if$
+ s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't :=
+ nameptr numnames = t "others" = and
+ { "et al" * }
+ { t sortify * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {sort.format.title}
+{ 't :=
+ "A " #2
+ "An " #3
+ "The " #4 t chop.word
+ chop.word
+ chop.word
+ sortify
+ #1 global.max$ substring$
+}
+
+FUNCTION {author.sort}
+{ author empty$
+ { key empty$
+ { "to sort, need author or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {author.editor.sort}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { "to sort, need author, editor, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {author.organization.sort}
+{ author empty$
+ { organization empty$
+ { key empty$
+ { "to sort, need author, organization, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { "The " #4 organization chop.word sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {editor.organization.sort}
+{ editor empty$
+ { organization empty$
+ { key empty$
+ { "to sort, need editor, organization, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { "The " #4 organization chop.word sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+}
+
+FUNCTION {presort}
+{ calc.label
+ sort.label
+ " "
+ *
+ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.sort
+ { type$ "proceedings" =
+ 'editor.organization.sort
+ { type$ "manual" =
+ 'author.organization.sort
+ 'author.sort
+ if$
+ }
+ if$
+ }
+ if$
+ *
+ " "
+ *
+ year field.or.null sortify
+ *
+ " "
+ *
+ title field.or.null
+ sort.format.title
+ *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+ITERATE {presort}
+
+SORT
+
+STRINGS { longest.label last.sort.label next.extra }
+
+INTEGERS { longest.label.width last.extra.num }
+
+FUNCTION {initialize.longest.label}
+{ "" 'longest.label :=
+ #0 int.to.chr$ 'last.sort.label :=
+ "" 'next.extra :=
+ #0 'longest.label.width :=
+ #0 'last.extra.num :=
+}
+
+FUNCTION {forward.pass}
+{ last.sort.label sort.label =
+ { last.extra.num #1 + 'last.extra.num :=
+ last.extra.num int.to.chr$ 'extra.label :=
+ }
+ { "a" chr.to.int$ 'last.extra.num :=
+ "" 'extra.label :=
+ sort.label 'last.sort.label :=
+ }
+ if$
+}
+
+FUNCTION {reverse.pass}
+{ next.extra "b" =
+ { "a" 'extra.label := }
+ 'skip$
+ if$
+ label extra.label * 'label :=
+ label width$ longest.label.width >
+ { label 'longest.label :=
+ label width$ 'longest.label.width :=
+ }
+ 'skip$
+ if$
+ extra.label 'next.extra :=
+}
+
+EXECUTE {initialize.longest.label}
+
+ITERATE {forward.pass}
+
+REVERSE {reverse.pass}
+
+FUNCTION {begin.bib}
+{ et.al.char.used
+ { "\providecommand{\etalchar}[1]{$^{#1}$}" write$ newline$ }
+ 'skip$
+ if$
+ preamble$ empty$
+ 'skip$
+ { preamble$ write$ newline$ }
+ if$
+ "\begin{thebibliography}{" longest.label * "}" * write$ newline$
+ "\providecommand{\url}[1]{\texttt{#1}}"
+ write$ newline$
+ "\expandafter\ifx\csname urlstyle\endcsname\relax"
+ write$ newline$
+ " \providecommand{\doi}[1]{doi: #1}\else"
+ write$ newline$
+ " \expandafter\ifx\csname href\endcsname\relax"
+ write$ newline$
+ " \providecommand{\doi}[1]{doi: \url{#1}}\else"
+ write$ newline$
+ " \providecommand{\doi}[1]{doi: \href{http://dx.doi.org/#1}{\nolinkurl{#1}}}\fi\fi"
+ write$ newline$
+}
+
+EXECUTE {begin.bib}
+
+EXECUTE {init.state.consts}
+
+ITERATE {call.type$}
+
+FUNCTION {end.bib}
+{ newline$
+ "\end{thebibliography}" write$ newline$
+}
+
+EXECUTE {end.bib}
+
diff --git a/Master/texmf-dist/doc/latex/acmart/Makefile b/Master/texmf-dist/doc/latex/acmart/Makefile
new file mode 100644
index 00000000000..a73c07e30e6
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/acmart/Makefile
@@ -0,0 +1,80 @@
+#
+# Makefile for acmart package
+#
+# This file is in public domain
+#
+# $Id: Makefile,v 1.10 2016/04/14 21:55:57 boris Exp $
+#
+
+PACKAGE=acmart
+
+SAMPLES = \
+ sample-manuscript.tex \
+ sample-acmsmall.tex \
+ sample-acmlarge.tex \
+ sample-acmtog.tex \
+ sample-sigconf.tex \
+ sample-siggraph.tex \
+ sample-sigplan.tex \
+ sample-sigchi.tex \
+ sample-sigchi-a.tex
+
+
+PDF = $(PACKAGE).pdf ${SAMPLES:%.tex=%.pdf}
+
+all: ${PDF}
+
+
+%.pdf: %.dtx $(PACKAGE).cls
+ pdflatex $<
+ - bibtex $*
+ pdflatex $<
+ - makeindex -s gind.ist -o $*.ind $*.idx
+ - makeindex -s gglo.ist -o $*.gls $*.glo
+ pdflatex $<
+ while ( grep -q '^LaTeX Warning: Label(s) may have changed' $*.log) \
+ do pdflatex $<; done
+
+
+%.cls: %.ins %.dtx
+ pdflatex $<
+
+%.pdf: %.tex $(PACKAGE).cls
+ pdflatex $<
+ - bibtex $*
+ pdflatex $<
+ while ( grep -q '^LaTeX Warning: Label(s) may have changed' $*.log) \
+ do pdflatex $<; done
+
+sample-manuscript.pdf \
+sample-acmsmall.pdf \
+sample-acmlarge.pdf \
+sample-acmtog.pdf: samplebody-journals.tex
+
+sample-sigconf.pdf \
+sample-siggraph.pdf \
+sample-sigplan.pdf \
+sample-sigchi.pdf: samplebody-conf.tex
+
+
+.PRECIOUS: $(PACKAGE).cfg $(PACKAGE).cls
+
+
+clean:
+ $(RM) $(PACKAGE).cls *.log *.aux \
+ *.cfg *.glo *.idx *.toc \
+ *.ilg *.ind *.out *.lof \
+ *.lot *.bbl *.blg *.gls *.cut *.hd \
+ *.dvi *.ps *.thm *.tgz *.zip *.rpi
+
+distclean: clean
+ $(RM) $(PDF) *-converted-to.pdf
+
+#
+# Archive for the distribution. Includes typeset documentation
+#
+archive: all clean
+ tar -C .. -czvf $(PACKAGE).tgz --exclude '*~' --exclude '*.tgz' --exclude '*.zip' --exclude CVS --exclude '.git*' $(PACKAGE)
+
+zip: all clean
+ zip -r $(PACKAGE).zip * -x '*~' -x '*.tgz' -x '*.zip' -x CVS -x 'CVS/*' \ No newline at end of file
diff --git a/Master/texmf-dist/doc/latex/acmart/README b/Master/texmf-dist/doc/latex/acmart/README
new file mode 100644
index 00000000000..5d4477a9af0
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/acmart/README
@@ -0,0 +1,2 @@
+This package provides a class for typesetting publications of
+Association for Computing Machinery.
diff --git a/Master/texmf-dist/doc/latex/acmart/acmart.bib b/Master/texmf-dist/doc/latex/acmart/acmart.bib
new file mode 100644
index 00000000000..06f4ce82760
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/acmart/acmart.bib
@@ -0,0 +1,65 @@
+@misc{TeXFAQ,
+ author = {{UK \TeX{} Users Group}},
+ howpublished = {\url{http://www.tex.ac.uk}},
+ title = {{UK} List of {\TeX} Frequently Asked Questions},
+ year = {2016},
+}
+
+@Manual{Downes04:amsart,
+ title = {The \textsf{amsart}, \textsf{amsproc}, and
+ \textsf{amsbook} document~classes},
+ author = {Michael Downes and Barbara Beeton},
+ organization = {American Mathematical Society},
+ year = 2004,
+ month = {August},
+ note = {\url{http://www.ctan.org/pkg/amslatex}}
+}
+
+@Manual{instr-l,
+ title = {Instructions for Preparation of Papers and
+ Monographs, {AMS\LaTeX}},
+ organization = {American Mathematical Society},
+ month = {August},
+ year = 2004,
+ note = {\url{http://www.ctan.org/pkg/amslatex}}
+}
+
+@Manual{Fiorio15,
+ title = {{a}lgorithm2e.sty---package for algorithms},
+ author = {Cristophe Fiorio},
+ month = {October},
+ year = 2015,
+ annote = {\url{http://www.ctan.org/pkg/algorithm2e}}
+}
+
+@Manual{Brito09,
+ title = {The algorithms bundle},
+ author = {Rog\'erio Brito},
+ month = {August},
+ year = 2009,
+ annote = {\url{http://www.ctan.org/pkg/algorithms}}
+}
+
+
+@Manual{Heinz15,
+ title = {The Listings Package},
+ author = {Carsten Heinz and Brooks Moses and Jobst Hoffmann},
+ month = {June},
+ year = 2015,
+ note = {\url{http://www.ctan.org/pkg/listings}}
+}
+
+@Manual{Fear05,
+ title = {Publication quality tables in {\LaTeX}},
+ author = {Simon Fear},
+ month = {April},
+ year = 2005,
+ note = {\url{http://www.ctan.org/pkg/booktabs}}
+}
+
+@Manual{ACMIdentityStandards,
+ title = {{ACM} Visual Identity Standards},
+ organization = {Association for Computing Machinery},
+ year = 2007
+}
+
diff --git a/Master/texmf-dist/doc/latex/acmart/acmart.pdf b/Master/texmf-dist/doc/latex/acmart/acmart.pdf
new file mode 100644
index 00000000000..5e452332c3d
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/acmart/acmart.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/acmart/ae-logo.pdf b/Master/texmf-dist/doc/latex/acmart/ae-logo.pdf
new file mode 100644
index 00000000000..704f7b1bf28
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/acmart/ae-logo.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/acmart/cats.png b/Master/texmf-dist/doc/latex/acmart/cats.png
new file mode 100644
index 00000000000..4e235ae1471
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/acmart/cats.png
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/acmart/flies-eps-converted-to.pdf b/Master/texmf-dist/doc/latex/acmart/flies-eps-converted-to.pdf
new file mode 100644
index 00000000000..dab14238d1d
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/acmart/flies-eps-converted-to.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/acmart/flies.eps b/Master/texmf-dist/doc/latex/acmart/flies.eps
new file mode 100644
index 00000000000..29e33dbafa1
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/acmart/flies.eps
@@ -0,0 +1,8871 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Adobe Illustrator(R) 8.0
+%%AI8_CreatorVersion: 8.0.1
+%%For: (Mark W Richards) (Association for Computing Machinery)
+%%Title: (newflies.eps)
+%%CreationDate: (2/9/00) (11:16 AM)
+%%BoundingBox: 153 339 459 453
+%%HiResBoundingBox: 153 339.2998 459 452.6997
+%%DocumentProcessColors: Black
+%%DocumentSuppliedResources: procset Adobe_level2_AI5 1.2 0
+%%+ procset Adobe_ColorImage_AI6 1.3 0
+%%+ procset Adobe_Illustrator_AI5 1.3 0
+%%+ procset Adobe_cshow 2.0 8
+%%+ procset Adobe_shading_AI8 1.0 0
+%AI5_FileFormat 4.0
+%AI3_ColorUsage: Black&White
+%AI3_IncludePlacedImages
+%AI7_ImageSettings: 1
+%%CMYKProcessColor: 1 1 1 1 ([Registration])
+%%AI6_ColorSeparationSet: 1 1 (AI6 Default Color Separation Set)
+%%+ Options: 1 16 0 1 0 1 1 1 0 1 1 1 1 18 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 2 3 4
+%%+ PPD: 1 21 0 0 60 45 2 2 1 0 0 1 0 0 0 0 0 0 0 0 0 0 ()
+%AI3_TemplateBox: 306.5 395.5 306.5 395.5
+%AI3_TileBox: 13 13 599 779
+%AI3_DocumentPreview: Header
+%AI5_ArtSize: 612 792
+%AI5_RulerUnits: 0
+%AI5_ArtFlags: 1 0 0 1 0 0 1 0 0
+%AI5_TargetResolution: 800
+%AI5_NumLayers: 1
+%AI8_OpenToView: 83 583 2 1016 675 18 0 1 8 65 0 0
+%AI5_OpenViewLayers: 7
+%%PageOrigin:13 13
+%%AI3_PaperRect:-13 779 599 -13
+%%AI3_Margin:13 -13 -13 13
+%AI7_GridSettings: 7.2 8 7.2 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9
+%AI7_Thumbnail: 128 48 8
+%%BeginBinary
+%0000330000660000990000CC0033000033330033660033990033CC0033FF
+%0066000066330066660066990066CC0066FF009900009933009966009999
+%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66
+%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333
+%3333663333993333CC3333FF3366003366333366663366993366CC3366FF
+%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99
+%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033
+%6600666600996600CC6600FF6633006633336633666633996633CC6633FF
+%6666006666336666666666996666CC6666FF669900669933669966669999
+%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33
+%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF
+%9933009933339933669933999933CC9933FF996600996633996666996699
+%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33
+%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF
+%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399
+%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933
+%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF
+%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC
+%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699
+%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33
+%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100
+%000011111111220000002200000022222222440000004400000044444444
+%550000005500000055555555770000007700000077777777880000008800
+%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB
+%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF
+%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF
+%524C45FDFCFFFD2BFF5227527D52FD7BFFF85227FF7D527D52FD78FFF852
+%52FD04FF7D52A8FD76FF7D527DFFA827FFFFFF7DF8FD3AFF7DF87DFD1DFF
+%7D52FD1AFF7D527D52FFA8FF52A8277D7DFD38FFF8527DFD0AFF527D52FD
+%11FFA852FD06FF27F8A8FD10FF277D7DFFFFFF527D52F87DFF52FD29FF7D
+%FD0427F8FD07FF7D277D277DFD06FF5227277D527DFD12FFF8FD05FFA8F8
+%FD12FFA85252FD04FF527DFFFF27FF27FD28FF52277DA87DA87D527DFD04
+%FF27525252F8FD05FF277D527D275227FD12FF52FD05FFF8A8FD13FF27FF
+%7D7DA8FF7D52FF52FF7DFF52FD27FF27A8527D7DA8FF7DFFA827FFFF2752
+%7D527D7DFF7DA8FF277DFFFF7D52F8FD13FFF8FD04FFF8FD16FFA8A8277D
+%277DFFA8A87D527D52FD0AFFA8FD1CFF522752FFA8A87DFFA8FF7DF8277D
+%525227F827FFA87D7DFF52FFFFFF27FD13FF27F8FFFFF87DFD15FF52FF52
+%7D7DA8FFFF7DA852275227FD0AFFF8FD1CFF27FF7DFF7DFF7D52A87D7D27
+%27277D522752FF52A8FFFD047DFF527DFD14FFA8F8F852FD17FFA8A827FF
+%527D52A8275227F85252FD07FF52F8A8FD1CFFA87DFF7D52A8A8FFFFA852
+%52F87D527D277D52FF52FF527D527DFF7DFD14FFA8FD04F827FD16FFFD04
+%27F8F8FD04277D272727F8FD04FFF827FD20FF52FF52A852FFFFA8FFA8F8
+%27527D7D7D27FFFFA8FFA87D7DFFFF52FD15FFFD04F87DFD13FFA8272752
+%52277D277D5227525227F827FD04F87DF8A8FD22FF52A87D5252A852A8A8
+%F8525252277D52A8A8527DFFA852FF52A8FD14FF27277D527D2727FD11FF
+%F827277D27527D527D27F8527D522752FF7D27F8F8F87DFD19FF7D277DFD
+%07FFA87D7DFF7D277D7DA82727527D277DF87D7D7D527D27277D27FD14FF
+%F8525227A852F852F8FD0FFF52FF52527D52A8527D52A8A8FD04527D277D
+%52F8F8F8FD18FF52A852A852A8FD07FFF8FFFF52A8A87D525252F852F852
+%F8FFA8A8A8527D527DFD13FF5227522752FF522727F87D27FD0EFFF8F852
+%27FF7D2727277D277D52A827277D7DFF7DFD04F8FD15FFA852A8FF7D7D7D
+%52FD08FF2752FF7D2752F8272727F8522727A8FF7DFFFF27A852FD12FF52
+%7D7D52F827277D5227F852A827FD0EFFA8F8277D527D277D5227F87DFD09
+%F8A87DF8F8FD12FFF8A8FF7DFF527D52A8FD09FF7DFF52A87D277D277D27
+%7D52277D7D527D7D7DF8FD12FF27FF277DF87DF87D522727F827FF7D27FD
+%10FF27F827F8F827527DF82727F827F82727FD05FF7DF827FD0EFF52277D
+%A852FFFFFF527DFD0BFF7DFFFF527D52F8F827F8F8277D7D7DFF2727FD12
+%FF27FFA87D5252527D27F827F82752277DA87DFD10FF52FF52FFFFA8A8F8
+%527D27F85252A8FD07FF27A8FD0CFF527DFF7D52FFA8FFA8A8A8FD0BFFA8
+%7DA8A827F827525252277DF8A8A8A827FD12FF7DFF52FF52FF522727277D
+%27F82727FF7DA8527DFD0EFF52FF7DA8FFA8FF7D52A8FD057DFD15FF527D
+%FFFF7D7DFF7D7DA8527DFD0CFF7D277DF827F8FF27FFF8272727FF52FD13
+%FFA852FF527DFF7D5252522752F852F8527D52FF527DFD0DFF7D527DFFFF
+%5252A87D52FF52277DFD15FF527DFFA8A87D7DFFA87D527D52FD0EFF7DA8
+%27277DA8A8525252A827FD13FF272727FF7D52A8FF7D52277D27277D527D
+%FFFF7DFF527DFD0BFF27FFFF52FFFF7D52A8FF27FF7D7DFD15FF27A87D7D
+%FF7D52FFFF7D7DFF52FD0FFF7D27F8F8277DFFF8F8F827FD13FFA8277DA8
+%52527DA8A8F85252FF527D527D527D52A8FFFF27FD0BFF5252A87D52FFFF
+%5252FFFF7DA8FD15FF27A852A852FF527D52FD04A852FD10FFA852F85252
+%F8275252FD14FF7DFF52277D7D277D52F85227522752F852A8527D52A852
+%A8F8FD09FF52A8FFA852277D7D52FFFF7D7DFD0BFF7DFD09FF27A8FF27FF
+%7D527D7DFF7DA8FFA8FD13FFF8F8F827F87DFD14FF277DFF7DFFA8FFA8FF
+%FF277D52A8F8A8F87DFF7DFFA8527D7DA8A8FD08FF7D7DA852FF7D7DFF7D
+%FF7DFD0DFFF8FD08FFF8A827272752F87D527D5227527D27FD13FFFD05F8
+%7DFD14FFA8FFA87D7D52FF52FF522727FF527D27F827A87DFD04FF7DFF7D
+%FD08FF527D52FFFFA827FF7D27FD0EFF27F87DFD05FF277DF8F8F827277D
+%527DF8F8F827F87DFD13FFA8FD04F8FD14FFA827FF527D52A8FF7D52A827
+%5252F8F87D277DA8A852A852A8FFA8A87DFD07FF7DA87D52A8FFA8527DFD
+%10FFA8F8F8A8FF525252F8522752F8F8F852527DA852527D525227FD12FF
+%F8A852F8FD14FF52A8FFFF27FF52A827FF7D27277D527D52F852FF7DA852
+%A8FD04FF7DFD07FF527D7D7DFF7D52FD15FFF87DF8F8527D277D2727277D
+%277D27F852F8527D5227F827FD0FFFF827FFFFA8F8FD13FF52A8FFFFA8FF
+%FF7DFFA8FF527D5227527D52277DA8FF7D7DA8FF7D527D52FD06FF7D527D
+%7D7DA8FD17FFF8F8F87DA87D527DF8A827A8FF7D7D7DF87D277D277D27FD
+%0FFFF8FD04FF5252FD12FFF827277D7D7D52277DFFFFFF277D527D27FFFF
+%FF277D527D7D7D52A87D27FD06FFF87D27A8FD19FFF8F8F85227FF275227
+%277D277D277DFF7D527D527D7D27FD0EFF2727FD05FFF8FD12FF52527D52
+%7D527DFD05FF5252522752FD05FF7D52A8527D527D52FD22FFF8A8F8F852
+%277D27F85252277D277D52522752525227FD10FFF8FD06FFF8FD12FFF827
+%52F852FD08FFA852F8FD0AFF7D7D7DFD22FFF827FF7DFF277D27F8527D27
+%7D52F8F8FD04277DFD11FF27FD08FFF8FD1EFF275227FD2CFF7DF87DFD06
+%FFF87D27F8277D52FF7D7DFF7D7DA8FD68FF7D7DFD09FF27A8527DFFFF7D
+%A852FFFF7DFFA8FD67FF52FD0AFF7D5252527D527D5252A87D5252FFA8FD
+%72FF7DFFA8FF7D527D52FFFFFF7DA827FD73FF52FF7DFFFF27A87D7DA87D
+%FF7D52FD73FF27FF7D27A827FF527DFFFF527DFD74FFA8A852527D52A852
+%52A8A8527DFD75FF2727FFFF7D7DFFFF527DF8FD76FF7DA852FD04FF2752
+%7DFD78FF277D277DA8277D27FD7AFFA87D27F827F8FDFCFFFDA8FFFF
+%%EndBinary
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset Adobe_level2_AI5 1.2 0
+%%Title: (Adobe Illustrator (R) Version 5.0 Level 2 Emulation)
+%%Version: 1.2 0
+%%CreationDate: (04/10/93) ()
+%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved)
+userdict /Adobe_level2_AI5 26 dict dup begin
+ put
+ /packedarray where not
+ {
+ userdict begin
+ /packedarray
+ {
+ array astore readonly
+ } bind def
+ /setpacking /pop load def
+ /currentpacking false def
+ end
+ 0
+ } if
+ pop
+ userdict /defaultpacking currentpacking put true setpacking
+ /initialize
+ {
+ Adobe_level2_AI5 begin
+ } bind def
+ /terminate
+ {
+ currentdict Adobe_level2_AI5 eq
+ {
+ end
+ } if
+ } bind def
+ mark
+ /setcustomcolor where not
+ {
+ /findcmykcustomcolor
+ {
+ (AI8_CMYK_CustomColor)
+ 6 packedarray
+ } bind def
+ /findrgbcustomcolor
+ {
+ (AI8_RGB_CustomColor)
+ 5 packedarray
+ } bind def
+ /setcustomcolor
+ {
+ exch
+ aload pop dup
+ (AI8_CMYK_CustomColor) eq
+ {
+ pop pop
+ 4
+ {
+ 4 index mul
+ 4 1 roll
+ } repeat
+ 5 -1 roll pop
+ setcmykcolor
+ }
+ {
+ dup (AI8_RGB_CustomColor) eq
+ {
+ pop pop
+ 3
+ {
+ 1 exch sub
+ 3 index mul
+ 1 exch sub
+ 3 1 roll
+ } repeat
+ 4 -1 roll pop
+ setrgbcolor
+ }
+ {
+ pop
+ 4
+ {
+ 4 index mul 4 1 roll
+ } repeat
+ 5 -1 roll pop
+ setcmykcolor
+ } ifelse
+ } ifelse
+ }
+ def
+ } if
+ /setAIseparationgray
+ {
+ false setoverprint
+ 0 setgray
+ /setseparationgray where{
+ pop setseparationgray
+ }{
+ /setcolorspace where{
+ pop
+ [/Separation (All) /DeviceCMYK {dup dup dup}] setcolorspace
+ 1 exch sub setcolor
+ }{
+ setgray
+ }ifelse
+ }ifelse
+ } def
+
+ /gt38? mark {version cvr cvx exec} stopped {cleartomark true} {38 gt exch pop} ifelse def
+ userdict /deviceDPI 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt put
+ userdict /level2?
+ systemdict /languagelevel known dup
+ {
+ pop systemdict /languagelevel get 2 ge
+ } if
+ put
+/level2ScreenFreq
+{
+ begin
+ 60
+ HalftoneType 1 eq
+ {
+ pop Frequency
+ } if
+ HalftoneType 2 eq
+ {
+ pop GrayFrequency
+ } if
+ HalftoneType 5 eq
+ {
+ pop Default level2ScreenFreq
+ } if
+ end
+} bind def
+userdict /currentScreenFreq
+ level2? {currenthalftone level2ScreenFreq} {currentscreen pop pop} ifelse put
+level2? not
+ {
+ /setcmykcolor where not
+ {
+ /setcmykcolor
+ {
+ exch .11 mul add exch .59 mul add exch .3 mul add
+ 1 exch sub setgray
+ } def
+ } if
+ /currentcmykcolor where not
+ {
+ /currentcmykcolor
+ {
+ 0 0 0 1 currentgray sub
+ } def
+ } if
+ /setoverprint where not
+ {
+ /setoverprint /pop load def
+ } if
+ /selectfont where not
+ {
+ /selectfont
+ {
+ exch findfont exch
+ dup type /arraytype eq
+ {
+ makefont
+ }
+ {
+ scalefont
+ } ifelse
+ setfont
+ } bind def
+ } if
+ /cshow where not
+ {
+ /cshow
+ {
+ [
+ 0 0 5 -1 roll aload pop
+ ] cvx bind forall
+ } bind def
+ } if
+ } if
+ cleartomark
+ /anyColor?
+ {
+ add add add 0 ne
+ } bind def
+ /testColor
+ {
+ gsave
+ setcmykcolor currentcmykcolor
+ grestore
+ } bind def
+ /testCMYKColorThrough
+ {
+ testColor anyColor?
+ } bind def
+ userdict /composite?
+ 1 0 0 0 testCMYKColorThrough
+ 0 1 0 0 testCMYKColorThrough
+ 0 0 1 0 testCMYKColorThrough
+ 0 0 0 1 testCMYKColorThrough
+ and and and
+ put
+ composite? not
+ {
+ userdict begin
+ gsave
+ /cyan? 1 0 0 0 testCMYKColorThrough def
+ /magenta? 0 1 0 0 testCMYKColorThrough def
+ /yellow? 0 0 1 0 testCMYKColorThrough def
+ /black? 0 0 0 1 testCMYKColorThrough def
+ grestore
+ /isCMYKSep? cyan? magenta? yellow? black? or or or def
+ /customColor? isCMYKSep? not def
+ end
+ } if
+ end defaultpacking setpacking
+%%EndResource
+%%BeginProcSet: Adobe_ColorImage_AI6 1.3 0
+userdict /Adobe_ColorImage_AI6 known not
+{
+ userdict /Adobe_ColorImage_AI6 53 dict put
+} if
+userdict /Adobe_ColorImage_AI6 get begin
+/initialize {
+ Adobe_ColorImage_AI6 begin
+ Adobe_ColorImage_AI6 {
+ dup type /arraytype eq {
+ dup xcheck {
+ bind
+ } if
+ } if
+ pop pop
+ } forall
+} def
+/terminate { end } def
+currentdict /Adobe_ColorImage_AI6_Vars known not {
+ /Adobe_ColorImage_AI6_Vars 41 dict def
+} if
+Adobe_ColorImage_AI6_Vars begin
+ /plateindex -1 def
+ /_newproc null def
+ /_proc1 null def
+ /_proc2 null def
+ /sourcearray 4 array def
+ /_ptispace null def
+ /_ptiname null def
+ /_pti0 0 def
+ /_pti1 0 def
+ /_ptiproc null def
+ /_ptiscale 0 def
+ /_pticomps 0 def
+ /_ptibuf 0 string def
+ /_gtigray 0 def
+ /_cticmyk null def
+ /_rtirgb null def
+ /XIEnable true def
+ /XIType 0 def
+ /XIEncoding 0 def
+ /XICompression 0 def
+ /XIChannelCount 0 def
+ /XIBitsPerPixel 0 def
+ /XIImageHeight 0 def
+ /XIImageWidth 0 def
+ /XIImageMatrix null def
+ /XIRowBytes 0 def
+ /XIFile null def
+ /XIBuffer1 null def
+ /XIBuffer2 null def
+ /XIBuffer3 null def
+ /XIDataProc null def
+ /XIColorSpace /DeviceGray def
+ /XIColorValues 0 def
+ /XIPlateList false def
+end
+/ci6colorimage /colorimage where {/colorimage get}{null} ifelse def
+/ci6image systemdict /image get def
+/ci6curtransfer systemdict /currenttransfer get def
+/ci6curoverprint /currentoverprint where {/currentoverprint get}{{_of}} ifelse def
+/ci6foureq {
+ 4 index ne {
+ pop pop pop false
+ }{
+ 4 index ne {
+ pop pop false
+ }{
+ 4 index ne {
+ pop false
+ }{
+ 4 index eq
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6testplate {
+ Adobe_ColorImage_AI6_Vars begin
+ /plateindex -1 def
+ /setcmykcolor where {
+ pop
+ gsave
+ 1 0 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub
+ 0 1 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub
+ 0 0 1 0 setcmykcolor systemdict /currentgray get exec 1 exch sub
+ 0 0 0 1 setcmykcolor systemdict /currentgray get exec 1 exch sub
+ grestore
+ 1 0 0 0 ci6foureq {
+ /plateindex 0 def
+ }{
+ 0 1 0 0 ci6foureq {
+ /plateindex 1 def
+ }{
+ 0 0 1 0 ci6foureq {
+ /plateindex 2 def
+ }{
+ 0 0 0 1 ci6foureq {
+ /plateindex 3 def
+ }{
+ 0 0 0 0 ci6foureq {
+ /plateindex 5 def
+ } if
+ } ifelse
+ } ifelse
+ } ifelse
+ } ifelse
+ pop pop pop pop
+ } if
+ plateindex
+ end
+} def
+/ci6concatprocs {
+ /packedarray where {
+ pop dup type /packedarraytype eq 2 index type
+ /packedarraytype eq or
+ }{
+ false
+ } ifelse
+ {
+ /_proc2 exch cvlit def
+ /_proc1 exch cvlit def
+ _proc1 aload pop
+ _proc2 aload pop
+ _proc1 length
+ _proc2 length add
+ packedarray cvx
+ }{
+ /_proc2 exch cvlit def
+ /_proc1 exch cvlit def
+ /_newproc _proc1 length _proc2 length add array def
+ _newproc 0 _proc1 putinterval
+ _newproc _proc1 length _proc2 putinterval
+ _newproc cvx
+ } ifelse
+} def
+/ci6istint {
+ type /arraytype eq
+} def
+/ci6isspot {
+ dup type /arraytype eq {
+ dup length 1 sub get /Separation eq
+ }{
+ pop false
+ } ifelse
+} def
+/ci6spotname {
+ dup ci6isspot {dup length 2 sub get}{pop ()} ifelse
+} def
+/ci6altspace {
+ aload pop pop pop ci6colormake
+} def
+/ci6numcomps {
+ dup /DeviceGray eq {
+ pop 1
+ }{
+ dup /DeviceRGB eq {
+ pop 3
+ }{
+ /DeviceCMYK eq {
+ 4
+ }{
+ 1
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6marksplate {
+ dup /DeviceGray eq {
+ pop plateindex 3 eq
+ }{
+ dup /DeviceRGB eq {
+ pop plateindex 5 ne
+ }{
+ dup /DeviceCMYK eq {
+ pop plateindex 5 ne
+ }{
+ dup ci6isspot {
+ /findcmykcustomcolor where {
+ pop
+ dup length 2 sub get
+ 0.1 0.1 0.1 0.1 5 -1 roll
+ findcmykcustomcolor 1 setcustomcolor
+ systemdict /currentgray get exec
+ 1 ne
+ }{
+ pop plateindex 5 ne
+ } ifelse
+ }{
+ pop plateindex 5 ne
+ } ifelse
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6colormake {
+ dup ci6numcomps
+ exch 1 index 2 add 1 roll
+ dup 1 eq {pop}{array astore} ifelse
+ exch
+} def
+/ci6colorexpand {
+ dup ci6spotname exch
+ dup ci6istint {
+ ci6altspace
+ exch 4 1 roll
+ }{
+ 1 3 1 roll
+ } ifelse
+} def
+/ci6colortint {
+ dup /DeviceGray eq {
+ 3 1 roll 1 exch sub mul 1 exch sub exch
+ }{
+ dup /DeviceRGB eq {
+ 3 1 roll {1 exch sub 1 index mul 1 exch sub exch} forall pop 3 array astore exch
+ }{
+ dup /DeviceCMYK eq {
+ 3 1 roll {1 index mul exch} forall pop 4 array astore exch
+ }{
+ 3 1 roll mul exch
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6colortocmyk {
+ dup /DeviceGray eq {
+ pop 1 exch sub 0 0 0 4 -1 roll 4 array astore
+ }{
+ dup /DeviceRGB eq {
+ pop aload pop _rgbtocmyk 4 array astore
+ }{
+ dup /DeviceCMYK eq {
+ pop
+ }{
+ ci6altspace ci6colortint ci6colortocmyk
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6makeimagedict {
+ 7 dict begin
+ /ImageType 1 def
+ /Decode exch def
+ /DataSource exch def
+ /ImageMatrix exch def
+ /BitsPerComponent exch def
+ /Height exch def
+ /Width exch def
+ currentdict end
+} def
+/ci6stringinvert {
+ 0 1 2 index length 1 sub {
+ dup 2 index exch get 255 exch sub 2 index 3 1 roll put
+ } for
+} def
+/ci6stringknockout {
+ 0 1 2 index length 1 sub {
+ 255 2 index 3 1 roll put
+ } for
+} def
+/ci6stringapply {
+ 0 1 4 index length 1 sub {
+ dup
+ 4 index exch get
+ 3 index 3 1 roll
+ 3 index exec
+ } for
+ pop exch pop
+} def
+/ci6walkrgbstring {
+ 0 3 index
+ dup length 1 sub 0 3 3 -1 roll {
+ 3 getinterval {} forall
+ 5 index exec
+ 3 index
+ } for
+
+ 5 {pop} repeat
+} def
+/ci6walkcmykstring
+{
+ 0 3 index
+ dup length 1 sub 0 4 3 -1 roll {
+ 4 getinterval {} forall
+
+ 6 index exec
+
+ 3 index
+
+ } for
+
+ 5 { pop } repeat
+
+} def
+/ci6putrgbtograystr
+{
+ .11 mul exch
+
+ .59 mul add exch
+
+ .3 mul add
+
+ cvi 3 copy put
+
+ pop 1 add
+} def
+/ci6putcmyktograystr
+{
+ exch .11 mul add
+
+ exch .59 mul add
+
+ exch .3 mul add
+
+ dup 255 gt { pop 255 } if
+
+ 255 exch sub cvi 3 copy put
+
+ pop 1 add
+} def
+/ci6rgbtograyproc {
+ Adobe_ColorImage_AI6_Vars begin
+ sourcearray 0 get exec
+ XIBuffer3
+ dup 3 1 roll
+
+ /ci6putrgbtograystr load exch
+ ci6walkrgbstring
+ end
+} def
+/ci6cmyktograyproc {
+ Adobe_ColorImage_AI6_Vars begin
+ sourcearray 0 get exec
+ XIBuffer3
+ dup 3 1 roll
+
+ /ci6putcmyktograystr load exch
+ ci6walkcmykstring
+ end
+} def
+/ci6separatecmykproc {
+ Adobe_ColorImage_AI6_Vars begin
+ sourcearray 0 get exec
+
+ XIBuffer3
+
+ 0 2 index
+
+ plateindex 4 2 index length 1 sub {
+ get 255 exch sub
+
+ 3 copy put pop 1 add
+
+ 2 index
+ } for
+ pop pop exch pop
+ end
+} def
+
+/ci6compositeimage {
+ dup 1 eq {
+ pop pop image
+ }{
+ /ci6colorimage load null ne {
+ ci6colorimage
+ }{
+ 3 1 roll pop
+ sourcearray 0 3 -1 roll put
+ 3 eq {/ci6rgbtograyproc}{/ci6cmyktograyproc} ifelse load
+ image
+ } ifelse
+ } ifelse
+} def
+/ci6knockoutimage {
+ gsave
+ 0 ci6curtransfer exec 1 ci6curtransfer exec
+ eq {
+ 0 ci6curtransfer exec 0.5 lt
+ }{
+ 0 ci6curtransfer exec 1 ci6curtransfer exec gt
+ } ifelse
+ {{pop 0}}{{pop 1}} ifelse
+ systemdict /settransfer get exec
+ ci6compositeimage
+ grestore
+} def
+/ci6drawimage {
+ ci6testplate -1 eq {
+ pop ci6compositeimage
+ }{
+ dup type /arraytype eq {
+ dup length plateindex gt {plateindex get}{pop false} ifelse
+ }{
+ {
+ true
+ }{
+ dup 1 eq {plateindex 3 eq}{plateindex 3 le} ifelse
+ } ifelse
+ } ifelse
+ {
+ dup 1 eq {
+ pop pop ci6image
+ }{
+ dup 3 eq {
+ ci6compositeimage
+ }{
+ pop pop
+ sourcearray 0 3 -1 roll put
+ /ci6separatecmykproc load
+ ci6image
+ } ifelse
+ } ifelse
+ }{
+ ci6curoverprint {
+ 7 {pop} repeat
+ }{
+ ci6knockoutimage
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6proctintimage {
+ /_ptispace exch store /_ptiname exch store /_pti1 exch store /_pti0 exch store /_ptiproc exch store
+ /_pticomps _ptispace ci6numcomps store
+ /_ptiscale _pti1 _pti0 sub store
+ level2? {
+ _ptiname length 0 gt version cvr 2012 ge and {
+ [/Separation _ptiname _ptispace {_ptiproc}] setcolorspace
+ [_pti0 _pti1] ci6makeimagedict ci6image
+ }{
+ [/Indexed _ptispace 255 {255 div _ptiscale mul _pti0 add _ptiproc}] setcolorspace
+ [0 255] ci6makeimagedict ci6image
+ } ifelse
+ }{
+ _pticomps 1 eq {
+ {
+ dup
+ {
+ 255 div _ptiscale mul _pti0 add _ptiproc 255 mul cvi put
+ } ci6stringapply
+ } ci6concatprocs ci6image
+ }{
+ {
+ dup length _pticomps mul dup _ptibuf length ne {/_ptibuf exch string store}{pop} ifelse
+ _ptibuf {
+ exch _pticomps mul exch 255 div _ptiscale mul _pti0 add _ptiproc
+ _pticomps 2 add -2 roll
+ _pticomps 1 sub -1 0 {
+ 1 index add 2 index exch
+ 5 -1 roll
+ 255 mul cvi put
+ } for
+ pop pop
+ } ci6stringapply
+ } ci6concatprocs false _pticomps
+ /ci6colorimage load null eq {7 {pop} repeat}{ci6colorimage} ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6graytintimage {
+ /_gtigray 5 -1 roll store
+ {1 _gtigray sub mul 1 exch sub} 4 1 roll
+ /DeviceGray ci6proctintimage
+} def
+/ci6cmyktintimage {
+ /_cticmyk 5 -1 roll store
+ {_cticmyk {1 index mul exch} forall pop} 4 1 roll
+ /DeviceCMYK ci6proctintimage
+} def
+/ci6rgbtintimage {
+ /_rtirgb 5 -1 roll store
+ {_rtirgb {1 exch sub 1 index mul 1 exch sub exch} forall pop} 4 1 roll
+ /DeviceRGB ci6proctintimage
+} def
+/ci6tintimage {
+ ci6testplate -1 eq {
+ ci6colorexpand
+ 3 -1 roll 5 -1 roll {0}{0 exch} ifelse 4 2 roll
+ dup /DeviceGray eq {
+ pop ci6graytintimage
+ }{
+ dup /DeviceRGB eq {
+ pop ci6rgbtintimage
+ }{
+ pop ci6cmyktintimage
+ } ifelse
+ } ifelse
+ }{
+ dup ci6marksplate {
+ plateindex 5 lt {
+ ci6colortocmyk plateindex get
+ dup 0 eq ci6curoverprint and {
+ 7 {pop} repeat
+ }{
+ 1 exch sub
+ exch {1 0}{0 1} ifelse () ci6graytintimage
+ } ifelse
+ }{
+ pop exch {0}{0 exch} ifelse 0 3 1 roll () ci6graytintimage
+ } ifelse
+ }{
+ ci6curoverprint {
+ 8 {pop} repeat
+ }{
+ pop pop pop
+ {pop 1} 0 1 () /DeviceGray ci6proctintimage
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/XINullImage {
+} def
+/XIImageMask {
+ XIImageWidth XIImageHeight false
+ [XIImageWidth 0 0 XIImageHeight neg 0 0]
+ /XIDataProc load
+ imagemask
+} def
+/XIImageTint {
+ XIImageWidth XIImageHeight XIBitsPerPixel
+ [XIImageWidth 0 0 XIImageHeight neg 0 0]
+ /XIDataProc load
+ XIType 3 eq XIColorValues XIColorSpace ci6tintimage
+} def
+/XIImage {
+ XIImageWidth XIImageHeight XIBitsPerPixel
+ [XIImageWidth 0 0 XIImageHeight neg 0 0]
+ /XIDataProc load
+ false XIChannelCount XIPlateList ci6drawimage
+} def
+/XG {
+ pop pop
+} def
+/XF {
+ 13 {pop} repeat
+} def
+/Xh {
+ Adobe_ColorImage_AI6_Vars begin
+ gsave
+ /XIType exch def
+ /XIImageHeight exch def
+ /XIImageWidth exch def
+ /XIImageMatrix exch def
+ 0 0 moveto
+ XIImageMatrix concat
+ XIImageWidth XIImageHeight scale
+
+ /_lp /null ddef
+ _fc
+ /_lp /imagemask ddef
+ end
+} def
+/XH {
+ Adobe_ColorImage_AI6_Vars begin
+ grestore
+ end
+} def
+/XIEnable {
+ Adobe_ColorImage_AI6_Vars /XIEnable 3 -1 roll put
+} def
+/XC {
+ Adobe_ColorImage_AI6_Vars begin
+ ci6colormake
+ /XIColorSpace exch def
+ /XIColorValues exch def
+ end
+} def
+/XIPlates {
+ Adobe_ColorImage_AI6_Vars begin
+ /XIPlateList exch def
+ end
+} def
+/XI
+{
+ Adobe_ColorImage_AI6_Vars begin
+ gsave
+ /XIType exch def
+ cvi dup
+ 256 idiv /XICompression exch store
+ 256 mod /XIEncoding exch store
+ pop pop
+ /XIChannelCount exch def
+ /XIBitsPerPixel exch def
+ /XIImageHeight exch def
+ /XIImageWidth exch def
+ pop pop pop pop
+ /XIImageMatrix exch def
+ XIBitsPerPixel 1 eq {
+ XIImageWidth 8 div ceiling cvi
+ }{
+ XIImageWidth XIChannelCount mul
+ } ifelse
+ /XIRowBytes exch def
+ XIEnable {
+ /XIBuffer3 XIImageWidth string def
+ XICompression 0 eq {
+ /XIBuffer1 XIRowBytes string def
+ XIEncoding 0 eq {
+ {currentfile XIBuffer1 readhexstring pop}
+ }{
+ {currentfile XIBuffer1 readstring pop}
+ } ifelse
+ }{
+ /XIBuffer1 256 string def
+ /XIBuffer2 XIRowBytes string def
+ {currentfile XIBuffer1 readline pop (%) anchorsearch {pop} if}
+ /ASCII85Decode filter /DCTDecode filter
+ /XIFile exch def
+ {XIFile XIBuffer2 readstring pop}
+ } ifelse
+ /XIDataProc exch def
+
+ XIType 1 ne {
+ 0 setgray
+ } if
+ XIType 1 eq {
+ XIImageMask
+ }{
+ XIType 2 eq XIType 3 eq or {
+ XIImageTint
+ }{
+ XIImage
+ } ifelse
+ } ifelse
+ }{
+ XINullImage
+ } ifelse
+ /XIPlateList false def
+ grestore
+ end
+} def
+end
+%%EndProcSet
+%%BeginResource: procset Adobe_Illustrator_AI5 1.3 0
+%%Title: (Adobe Illustrator (R) Version 8.0 Full Prolog)
+%%Version: 1.3 0
+%%CreationDate: (3/7/1994) ()
+%%Copyright: ((C) 1987-1998 Adobe Systems Incorporated All Rights Reserved)
+currentpacking true setpacking
+userdict /Adobe_Illustrator_AI5_vars 112 dict dup begin
+put
+/_?cmyk false def
+/_eo false def
+/_lp /none def
+/_pf
+{
+} def
+/_ps
+{
+} def
+/_psf
+{
+} def
+/_pss
+{
+} def
+/_pjsf
+{
+} def
+/_pjss
+{
+} def
+/_pola 0 def
+/_doClip 0 def
+/cf currentflat def
+/_lineorientation 0 def
+/_charorientation 0 def
+/_yokoorientation 0 def
+/_tm matrix def
+/_renderStart
+[
+/e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0
+] def
+/_renderEnd
+[
+null null null null /i1 /i1 /i1 /i1
+] def
+/_render -1 def
+/_shift [0 0] def
+/_ax 0 def
+/_ay 0 def
+/_cx 0 def
+/_cy 0 def
+/_leading
+[
+0 0
+] def
+/_ctm matrix def
+/_mtx matrix def
+/_sp 16#020 def
+/_hyphen (-) def
+/_fontSize 0 def
+/_fontAscent 0 def
+/_fontDescent 0 def
+/_fontHeight 0 def
+/_fontRotateAdjust 0 def
+/Ss 256 string def
+Ss 0 (fonts/) putinterval
+/_cnt 0 def
+/_scale [1 1] def
+/_nativeEncoding 0 def
+/_useNativeEncoding 0 def
+/_tempEncode 0 def
+/_pntr 0 def
+/_tDict 2 dict def
+/_hfname 100 string def
+/_hffound false def
+/Tx
+{
+} def
+/Tj
+{
+} def
+/CRender
+{
+} def
+/_AI3_savepage
+{
+} def
+/_gf null def
+/_cf 4 array def
+/_rgbf 3 array def
+/_if null def
+/_of false def
+/_fc
+{
+} def
+/_gs null def
+/_cs 4 array def
+/_rgbs 3 array def
+/_is null def
+/_os false def
+/_sc
+{
+} def
+/_pd 1 dict def
+/_ed 15 dict def
+/_pm matrix def
+/_fm null def
+/_fd null def
+/_fdd null def
+/_sm null def
+/_sd null def
+/_sdd null def
+/_i null def
+/_lobyte 0 def
+/_hibyte 0 def
+/_cproc null def
+/_cscript 0 def
+/_hvax 0 def
+/_hvay 0 def
+/_hvwb 0 def
+/_hvcx 0 def
+/_hvcy 0 def
+/_bitfont null def
+/_bitlobyte 0 def
+/_bithibyte 0 def
+/_bitkey null def
+/_bitdata null def
+/_bitindex 0 def
+/discardSave null def
+/buffer 256 string def
+/beginString null def
+/endString null def
+/endStringLength null def
+/layerCnt 1 def
+/layerCount 1 def
+/perCent (%) 0 get def
+/perCentSeen? false def
+/newBuff null def
+/newBuffButFirst null def
+/newBuffLast null def
+/clipForward? false def
+end
+userdict /Adobe_Illustrator_AI5 known not {
+ userdict /Adobe_Illustrator_AI5 100 dict put
+} if
+userdict /Adobe_Illustrator_AI5 get begin
+/initialize
+{
+ Adobe_Illustrator_AI5 dup begin
+ Adobe_Illustrator_AI5_vars begin
+ /_aicmykps where {pop /_?cmyk _aicmykps def}if
+ discardDict
+ {
+ bind pop pop
+ } forall
+ dup /nc get begin
+ {
+ dup xcheck 1 index type /operatortype ne and
+ {
+ bind
+ } if
+ pop pop
+ } forall
+ end
+ newpath
+} def
+/terminate
+{
+ end
+ end
+} def
+/_
+null def
+/ddef
+{
+ Adobe_Illustrator_AI5_vars 3 1 roll put
+} def
+/xput
+{
+ dup load dup length exch maxlength eq
+ {
+ dup dup load dup
+ length 2 mul dict copy def
+ } if
+ load begin
+ def
+ end
+} def
+/npop
+{
+ {
+ pop
+ } repeat
+} def
+/hswj
+{
+ dup stringwidth 3 2 roll
+ {
+ _hvwb eq { exch _hvcx add exch _hvcy add } if
+ exch _hvax add exch _hvay add
+ } cforall
+} def
+/vswj
+{
+ 0 0 3 -1 roll
+ {
+ dup 255 le
+ _charorientation 1 eq
+ and
+ {
+ dup cstring stringwidth 5 2 roll
+ _hvwb eq { exch _hvcy sub exch _hvcx sub } if
+ exch _hvay sub exch _hvax sub
+ 4 -1 roll sub exch
+ 3 -1 roll sub exch
+ }
+ {
+ _hvwb eq { exch _hvcy sub exch _hvcx sub } if
+ exch _hvay sub exch _hvax sub
+ _fontHeight sub
+ } ifelse
+ } cforall
+} def
+/swj
+{
+ 6 1 roll
+ /_hvay exch ddef
+ /_hvax exch ddef
+ /_hvwb exch ddef
+ /_hvcy exch ddef
+ /_hvcx exch ddef
+ _lineorientation 0 eq { hswj } { vswj } ifelse
+} def
+/sw
+{
+ 0 0 0 6 3 roll swj
+} def
+/vjss
+{
+ 4 1 roll
+ {
+ dup cstring
+ dup length 1 eq
+ _charorientation 1 eq
+ and
+ {
+ -90 rotate
+ currentpoint
+ _fontRotateAdjust add
+ moveto
+ gsave
+ false charpath currentpoint
+ 5 index setmatrix stroke
+ grestore
+ _fontRotateAdjust sub
+ moveto
+ _sp eq
+ {
+ 5 index 5 index rmoveto
+ } if
+ 2 copy rmoveto
+ 90 rotate
+ }
+ {
+ currentpoint
+ _fontHeight sub
+ 5 index sub
+ 3 index _sp eq
+ {
+ 9 index sub
+ } if
+
+ currentpoint
+ exch 4 index stringwidth pop 2 div sub
+ exch _fontAscent sub
+ moveto
+
+ gsave
+ 2 index false charpath
+ 6 index setmatrix stroke
+ grestore
+
+ moveto pop pop
+ } ifelse
+ } cforall
+ 6 npop
+} def
+/hjss
+{
+ 4 1 roll
+ {
+ dup cstring
+ gsave
+ false charpath currentpoint
+ 5 index setmatrix stroke
+ grestore
+ moveto
+ _sp eq
+ {
+ 5 index 5 index rmoveto
+ } if
+ 2 copy rmoveto
+ } cforall
+ 6 npop
+} def
+/jss
+{
+ _lineorientation 0 eq { hjss } { vjss } ifelse
+} def
+/ss
+{
+ 0 0 0 7 3 roll jss
+} def
+/vjsp
+{
+ 4 1 roll
+ {
+ dup cstring
+ dup length 1 eq
+ _charorientation 1 eq
+ and
+ {
+ -90 rotate
+ currentpoint
+ _fontRotateAdjust add
+ moveto
+ false charpath
+ currentpoint
+ _fontRotateAdjust sub
+ moveto
+ _sp eq
+ {
+ 5 index 5 index rmoveto
+ } if
+ 2 copy rmoveto
+ 90 rotate
+ }
+ {
+ currentpoint
+ _fontHeight sub
+ 5 index sub
+ 3 index _sp eq
+ {
+ 9 index sub
+ } if
+
+ currentpoint
+ exch 4 index stringwidth pop 2 div sub
+ exch _fontAscent sub
+ moveto
+
+ 2 index false charpath
+
+ moveto pop pop
+ } ifelse
+ } cforall
+ 6 npop
+} def
+/hjsp
+{
+ 4 1 roll
+ {
+ dup cstring
+ false charpath
+ _sp eq
+ {
+ 5 index 5 index rmoveto
+ } if
+ 2 copy rmoveto
+ } cforall
+ 6 npop
+} def
+/jsp
+{
+ matrix currentmatrix
+ _lineorientation 0 eq {hjsp} {vjsp} ifelse
+} def
+/sp
+{
+ matrix currentmatrix
+ 0 0 0 7 3 roll
+ _lineorientation 0 eq {hjsp} {vjsp} ifelse
+} def
+/pl
+{
+ transform
+ 0.25 sub round 0.25 add exch
+ 0.25 sub round 0.25 add exch
+ itransform
+} def
+/setstrokeadjust where
+{
+ pop true setstrokeadjust
+ /c
+ {
+ curveto
+ } def
+ /C
+ /c load def
+ /v
+ {
+ currentpoint 6 2 roll curveto
+ } def
+ /V
+ /v load def
+ /y
+ {
+ 2 copy curveto
+ } def
+ /Y
+ /y load def
+ /l
+ {
+ lineto
+ } def
+ /L
+ /l load def
+ /m
+ {
+ moveto
+ } def
+}
+{
+ /c
+ {
+ pl curveto
+ } def
+ /C
+ /c load def
+ /v
+ {
+ currentpoint 6 2 roll pl curveto
+ } def
+ /V
+ /v load def
+ /y
+ {
+ pl 2 copy curveto
+ } def
+ /Y
+ /y load def
+ /l
+ {
+ pl lineto
+ } def
+ /L
+ /l load def
+ /m
+ {
+ pl moveto
+ } def
+} ifelse
+/d
+{
+ setdash
+} def
+/cf
+{
+} def
+/i
+{
+ dup 0 eq
+ {
+ pop cf
+ } if
+ setflat
+} def
+/j
+{
+ setlinejoin
+} def
+/J
+{
+ setlinecap
+} def
+/M
+{
+ setmiterlimit
+} def
+/w
+{
+ setlinewidth
+} def
+/XR
+{
+ 0 ne
+ /_eo exch ddef
+} def
+/H
+{
+} def
+/h
+{
+ closepath
+} def
+/N
+{
+ _pola 0 eq
+ {
+ _doClip 1 eq
+ {
+ _eo {eoclip} {clip} ifelse /_doClip 0 ddef
+ } if
+ newpath
+ }
+ {
+ /CRender
+ {
+ N
+ } ddef
+ } ifelse
+} def
+/n
+{
+ N
+} def
+/F
+{
+ _pola 0 eq
+ {
+ _doClip 1 eq
+ {
+ gsave _pf grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _fc
+ /_doClip 0 ddef
+ }
+ {
+ _pf
+ } ifelse
+ }
+ {
+ /CRender
+ {
+ F
+ } ddef
+ } ifelse
+} def
+/f
+{
+ closepath
+ F
+} def
+/S
+{
+ _pola 0 eq
+ {
+ _doClip 1 eq
+ {
+ gsave _ps grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc
+ /_doClip 0 ddef
+ }
+ {
+ _ps
+ } ifelse
+ }
+ {
+ /CRender
+ {
+ S
+ } ddef
+ } ifelse
+} def
+/s
+{
+ closepath
+ S
+} def
+/B
+{
+ _pola 0 eq
+ {
+ _doClip 1 eq
+ gsave F grestore
+ {
+ gsave S grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc
+ /_doClip 0 ddef
+ }
+ {
+ S
+ } ifelse
+ }
+ {
+ /CRender
+ {
+ B
+ } ddef
+ } ifelse
+} def
+/b
+{
+ closepath
+ B
+} def
+/W
+{
+ /_doClip 1 ddef
+} def
+/*
+{
+ count 0 ne
+ {
+ dup type /stringtype eq
+ {
+ pop
+ } if
+ } if
+ newpath
+} def
+/u
+{
+} def
+/U
+{
+} def
+/q
+{
+ _pola 0 eq
+ {
+ gsave
+ } if
+} def
+/Q
+{
+ _pola 0 eq
+ {
+ grestore
+ } if
+} def
+/*u
+{
+ _pola 1 add /_pola exch ddef
+} def
+/*U
+{
+ _pola 1 sub /_pola exch ddef
+ _pola 0 eq
+ {
+ CRender
+ } if
+} def
+/D
+{
+ pop
+} def
+/*w
+{
+} def
+/*W
+{
+} def
+/`
+{
+ /_i save ddef
+ clipForward?
+ {
+ nulldevice
+ } if
+ 6 1 roll 4 npop
+ concat pop
+ userdict begin
+ /showpage
+ {
+ } def
+ 0 setgray
+ 0 setlinecap
+ 1 setlinewidth
+ 0 setlinejoin
+ 10 setmiterlimit
+ [] 0 setdash
+ /setstrokeadjust where {pop false setstrokeadjust} if
+ newpath
+ 0 setgray
+ false setoverprint
+} def
+/~
+{
+ end
+ _i restore
+} def
+/_rgbtocmyk
+{
+ 3
+ {
+ 1 exch sub 3 1 roll
+ } repeat
+ 3 copy 1 4 1 roll
+ 3
+ {
+ 3 index 2 copy gt
+ {
+ exch
+ } if
+ pop 4 1 roll
+ } repeat
+ pop pop pop
+ 4 1 roll
+ 3
+ {
+ 3 index sub
+ 3 1 roll
+ } repeat
+ 4 -1 roll
+} def
+/setrgbfill
+{
+ _rgbf astore pop
+ /_fc
+ {
+ _lp /fill ne
+ {
+ _of setoverprint
+ _rgbf aload pop setrgbcolor
+ /_lp /fill ddef
+ } if
+ } ddef
+ /_pf
+ {
+ _fc
+ _eo {eofill} {fill} ifelse
+ } ddef
+ /_psf
+ {
+ _fc
+ hvashow
+ } ddef
+ /_pjsf
+ {
+ _fc
+ hvawidthshow
+ } ddef
+ /_lp /none ddef
+} def
+/setrgbstroke
+{
+ _rgbs astore pop
+ /_sc
+ {
+ _lp /stroke ne
+ {
+ _os setoverprint
+ _rgbs aload pop setrgbcolor
+ /_lp /stroke ddef
+ } if
+ } ddef
+ /_ps
+ {
+ _sc
+ stroke
+ } ddef
+ /_pss
+ {
+ _sc
+ ss
+ } ddef
+ /_pjss
+ {
+ _sc
+ jss
+ } ddef
+ /_lp /none ddef
+} def
+/O
+{
+ 0 ne
+ /_of exch ddef
+ /_lp /none ddef
+} def
+/R
+{
+ 0 ne
+ /_os exch ddef
+ /_lp /none ddef
+} def
+/g
+{
+ /_gf exch ddef
+ /_fc
+ {
+ _lp /fill ne
+ {
+ _of setoverprint
+ _gf setgray
+ /_lp /fill ddef
+ } if
+ } ddef
+ /_pf
+ {
+ _fc
+ _eo {eofill} {fill} ifelse
+ } ddef
+ /_psf
+ {
+ _fc
+ hvashow
+ } ddef
+ /_pjsf
+ {
+ _fc
+ hvawidthshow
+ } ddef
+ /_lp /none ddef
+} def
+/G
+{
+ /_gs exch ddef
+ /_sc
+ {
+ _lp /stroke ne
+ {
+ _os setoverprint
+ _gs setgray
+ /_lp /stroke ddef
+ } if
+ } ddef
+ /_ps
+ {
+ _sc
+ stroke
+ } ddef
+ /_pss
+ {
+ _sc
+ ss
+ } ddef
+ /_pjss
+ {
+ _sc
+ jss
+ } ddef
+ /_lp /none ddef
+} def
+/k
+{
+ _cf astore pop
+ /_fc
+ {
+ _lp /fill ne
+ {
+ _of setoverprint
+ _cf aload pop setcmykcolor
+ /_lp /fill ddef
+ } if
+ } ddef
+ /_pf
+ {
+ _fc
+ _eo {eofill} {fill} ifelse
+ } ddef
+ /_psf
+ {
+ _fc
+ hvashow
+ } ddef
+ /_pjsf
+ {
+ _fc
+ hvawidthshow
+ } ddef
+ /_lp /none ddef
+} def
+/K
+{
+ _cs astore pop
+ /_sc
+ {
+ _lp /stroke ne
+ {
+ _os setoverprint
+ _cs aload pop setcmykcolor
+ /_lp /stroke ddef
+ } if
+ } ddef
+ /_ps
+ {
+ _sc
+ stroke
+ } ddef
+ /_pss
+ {
+ _sc
+ ss
+ } ddef
+ /_pjss
+ {
+ _sc
+ jss
+ } ddef
+ /_lp /none ddef
+} def
+/Xa
+{
+ _?cmyk {
+ 3 npop k
+ }{
+ setrgbfill 4 npop
+ } ifelse
+} def
+/XA
+{
+ _?cmyk {
+ 3 npop K
+ }{
+ setrgbstroke 4 npop
+ } ifelse
+} def
+/Xs
+{
+ /_gf exch ddef
+ 5 npop
+ /_fc
+ {
+ _lp /fill ne
+ {
+ _of setoverprint
+ _gf setAIseparationgray
+ /_lp /fill ddef
+ } if
+ } ddef
+ /_pf
+ {
+ _fc
+ _eo {eofill} {fill} ifelse
+ } ddef
+ /_psf
+ {
+ _fc
+ hvashow
+ } ddef
+ /_pjsf
+ {
+ _fc
+ hvawidthshow
+ } ddef
+ /_lp /none ddef
+} def
+/XS
+{
+ /_gs exch ddef
+ 5 npop
+ /_sc
+ {
+ _lp /stroke ne
+ {
+ _os setoverprint
+ _gs setAIseparationgray
+ /_lp /stroke ddef
+ } if
+ } ddef
+ /_ps
+ {
+ _sc
+ stroke
+ } ddef
+ /_pss
+ {
+ _sc
+ ss
+ } ddef
+ /_pjss
+ {
+ _sc
+ jss
+ } ddef
+ /_lp /none ddef
+} def
+/Xx
+{
+ exch
+ /_gf exch ddef
+ 0 eq {
+ findcmykcustomcolor
+ }{
+ _?cmyk {true}{/findrgbcustomcolor where{pop false}{true}ifelse}ifelse
+ {
+ 4 1 roll 3 npop
+ findcmykcustomcolor
+ }{
+ 8 -4 roll 4 npop
+ findrgbcustomcolor
+ } ifelse
+ } ifelse
+ /_if exch ddef
+ /_fc
+ {
+ _lp /fill ne
+ {
+ _of setoverprint
+ _if _gf 1 exch sub setcustomcolor
+ /_lp /fill ddef
+ } if
+ } ddef
+ /_pf
+ {
+ _fc
+ _eo {eofill} {fill} ifelse
+ } ddef
+ /_psf
+ {
+ _fc
+ hvashow
+ } ddef
+ /_pjsf
+ {
+ _fc
+ hvawidthshow
+ } ddef
+ /_lp /none ddef
+} def
+/XX
+{
+ exch
+ /_gs exch ddef
+ 0 eq {
+ findcmykcustomcolor
+ }{
+ _?cmyk {true}{/findrgbcustomcolor where{pop false}{true}ifelse}ifelse
+ {
+ 4 1 roll 3 npop
+ findcmykcustomcolor
+ }{
+ 8 -4 roll 4 npop
+ findrgbcustomcolor
+ } ifelse
+ } ifelse
+ /_is exch ddef
+ /_sc
+ {
+ _lp /stroke ne
+ {
+ _os setoverprint
+ _is _gs 1 exch sub setcustomcolor
+ /_lp /stroke ddef
+ } if
+ } ddef
+ /_ps
+ {
+ _sc
+ stroke
+ } ddef
+ /_pss
+ {
+ _sc
+ ss
+ } ddef
+ /_pjss
+ {
+ _sc
+ jss
+ } ddef
+ /_lp /none ddef
+} def
+/x
+{
+ /_gf exch ddef
+ findcmykcustomcolor
+ /_if exch ddef
+ /_fc
+ {
+ _lp /fill ne
+ {
+ _of setoverprint
+ _if _gf 1 exch sub setcustomcolor
+ /_lp /fill ddef
+ } if
+ } ddef
+ /_pf
+ {
+ _fc
+ _eo {eofill} {fill} ifelse
+ } ddef
+ /_psf
+ {
+ _fc
+ hvashow
+ } ddef
+ /_pjsf
+ {
+ _fc
+ hvawidthshow
+ } ddef
+ /_lp /none ddef
+} def
+/X
+{
+ /_gs exch ddef
+ findcmykcustomcolor
+ /_is exch ddef
+ /_sc
+ {
+ _lp /stroke ne
+ {
+ _os setoverprint
+ _is _gs 1 exch sub setcustomcolor
+ /_lp /stroke ddef
+ } if
+ } ddef
+ /_ps
+ {
+ _sc
+ stroke
+ } ddef
+ /_pss
+ {
+ _sc
+ ss
+ } ddef
+ /_pjss
+ {
+ _sc
+ jss
+ } ddef
+ /_lp /none ddef
+} def
+/XK
+{
+ 3 -1 roll pop
+ 0 eq
+ {
+ 1 exch sub
+ 3 {dup 3 1 roll mul 5 1 roll} repeat
+ mul 4 1 roll
+ K
+ }
+ {
+ 1 exch sub 4 1 roll
+ 3 {1 exch sub 3 index mul 1 exch sub 3 1 roll} repeat
+ 4 -1 roll pop
+ XA
+ } ifelse
+} def
+/Xk
+{
+ 3 -1 roll pop
+ 0 eq
+ {
+ 1 exch sub
+ 3 {dup 3 1 roll mul 5 1 roll} repeat
+ mul 4 1 roll
+ k
+ }
+ {
+ 1 exch sub 4 1 roll
+ 3 {1 exch sub 3 index mul 1 exch sub 3 1 roll} repeat
+ 4 -1 roll pop
+ Xa
+ } ifelse
+} def
+/A
+{
+ pop
+} def
+/annotatepage
+{
+userdict /annotatepage 2 copy known {get exec} {pop pop} ifelse
+} def
+/XT {
+ pop pop
+} def
+/Xt {
+ pop
+} def
+/discard
+{
+ save /discardSave exch store
+ discardDict begin
+ /endString exch store
+ gt38?
+ {
+ 2 add
+ } if
+ load
+ stopped
+ pop
+ end
+ discardSave restore
+} bind def
+userdict /discardDict 7 dict dup begin
+put
+/pre38Initialize
+{
+ /endStringLength endString length store
+ /newBuff buffer 0 endStringLength getinterval store
+ /newBuffButFirst newBuff 1 endStringLength 1 sub getinterval store
+ /newBuffLast newBuff endStringLength 1 sub 1 getinterval store
+} def
+/shiftBuffer
+{
+ newBuff 0 newBuffButFirst putinterval
+ newBuffLast 0
+ currentfile read not
+ {
+ stop
+ } if
+ put
+} def
+0
+{
+ pre38Initialize
+ mark
+ currentfile newBuff readstring exch pop
+ {
+ {
+ newBuff endString eq
+ {
+ cleartomark stop
+ } if
+ shiftBuffer
+ } loop
+ }
+ {
+ stop
+ } ifelse
+} def
+1
+{
+ pre38Initialize
+ /beginString exch store
+ mark
+ currentfile newBuff readstring exch pop
+ {
+ {
+ newBuff beginString eq
+ {
+ /layerCount dup load 1 add store
+ }
+ {
+ newBuff endString eq
+ {
+ /layerCount dup load 1 sub store
+ layerCount 0 eq
+ {
+ cleartomark stop
+ } if
+ } if
+ } ifelse
+ shiftBuffer
+ } loop
+ } if
+} def
+2
+{
+ mark
+ {
+ currentfile buffer {readline} stopped {
+ % assume error was due to overfilling the buffer
+ }{
+ not
+ {
+ stop
+ } if
+ endString eq {
+ cleartomark stop
+ } if
+ }ifelse
+ } loop
+} def
+3
+{
+ /beginString exch store
+ /layerCnt 1 store
+ mark
+ {
+ currentfile buffer {readline} stopped {
+ % assume error was due to overfilling the buffer
+ }{
+ not
+ {
+ stop
+ } if
+ dup beginString eq
+ {
+ pop /layerCnt dup load 1 add store
+ }
+ {
+ endString eq
+ {
+ layerCnt 1 eq
+ {
+ cleartomark stop
+ }
+ {
+ /layerCnt dup load 1 sub store
+ } ifelse
+ } if
+ } ifelse
+ }ifelse
+ } loop
+} def
+end
+userdict /clipRenderOff 15 dict dup begin
+put
+{
+ /n /N /s /S /f /F /b /B
+}
+{
+ {
+ _doClip 1 eq
+ {
+ /_doClip 0 ddef _eo {eoclip} {clip} ifelse
+ } if
+ newpath
+ } def
+} forall
+/Tr /pop load def
+/Bb {} def
+/BB /pop load def
+/Bg {12 npop} def
+/Bm {6 npop} def
+/Bc /Bm load def
+/Bh {4 npop} def
+end
+/Lb
+{
+ 6 npop
+ 7 2 roll
+ 5 npop
+ 0 eq
+ {
+ 0 eq
+ {
+ (%AI5_BeginLayer) 1 (%AI5_EndLayer--) discard
+ }
+ {
+
+ /clipForward? true def
+
+ /Tx /pop load def
+ /Tj /pop load def
+
+ currentdict end clipRenderOff begin begin
+ } ifelse
+ }
+ {
+ 0 eq
+ {
+ save /discardSave exch store
+ } if
+ } ifelse
+} bind def
+/LB
+{
+ discardSave dup null ne
+ {
+ restore
+ }
+ {
+ pop
+ clipForward?
+ {
+ currentdict
+ end
+ end
+ begin
+
+ /clipForward? false ddef
+ } if
+ } ifelse
+} bind def
+/Pb
+{
+ pop pop
+ 0 (%AI5_EndPalette) discard
+} bind def
+/Np
+{
+ 0 (%AI5_End_NonPrinting--) discard
+} bind def
+/Ln /pop load def
+/Ap
+/pop load def
+/Ar
+{
+ 72 exch div
+ 0 dtransform dup mul exch dup mul add sqrt
+ dup 1 lt
+ {
+ pop 1
+ } if
+ setflat
+} def
+/Mb
+{
+ q
+} def
+/Md
+{
+} def
+/MB
+{
+ Q
+} def
+/nc 4 dict def
+nc begin
+/setgray
+{
+ pop
+} bind def
+/setcmykcolor
+{
+ 4 npop
+} bind def
+/setrgbcolor
+{
+ 3 npop
+} bind def
+/setcustomcolor
+{
+ 2 npop
+} bind def
+currentdict readonly pop
+end
+/XP
+{
+ 4 npop
+} bind def
+/XD
+{
+ pop
+} bind def
+end
+setpacking
+%%EndResource
+%%BeginResource: procset Adobe_cshow 2.0 8
+%%Title: (Writing System Operators)
+%%Version: 2.0 8
+%%CreationDate: (1/23/89) ()
+%%Copyright: ((C) 1992-1996 Adobe Systems Incorporated All Rights Reserved)
+currentpacking true setpacking
+userdict /Adobe_cshow 14 dict dup begin put
+/initialize
+{
+ Adobe_cshow begin
+ Adobe_cshow
+ {
+ dup xcheck
+ {
+ bind
+ } if
+ pop pop
+ } forall
+ end
+ Adobe_cshow begin
+} def
+/terminate
+{
+currentdict Adobe_cshow eq
+ {
+ end
+ } if
+} def
+/cforall
+{
+ /_lobyte 0 ddef
+ /_hibyte 0 ddef
+ /_cproc exch ddef
+ /_cscript currentfont /FontScript known { currentfont /FontScript get } { -1 } ifelse ddef
+ {
+ /_lobyte exch ddef
+ _hibyte 0 eq
+ _cscript 1 eq
+ _lobyte 129 ge _lobyte 159 le and
+ _lobyte 224 ge _lobyte 252 le and or and
+ _cscript 2 eq
+ _lobyte 161 ge _lobyte 254 le and and
+ _cscript 3 eq
+ _lobyte 161 ge _lobyte 254 le and and
+ _cscript 25 eq
+ _lobyte 161 ge _lobyte 254 le and and
+ _cscript -1 eq
+ or or or or and
+ {
+ /_hibyte _lobyte ddef
+ }
+ {
+ _hibyte 256 mul _lobyte add
+ _cproc
+ /_hibyte 0 ddef
+ } ifelse
+ } forall
+} def
+/cstring
+{
+ dup 256 lt
+ {
+ (s) dup 0 4 3 roll put
+ }
+ {
+ dup 256 idiv exch 256 mod
+ (hl) dup dup 0 6 5 roll put 1 4 3 roll put
+ } ifelse
+} def
+/clength
+{
+ 0 exch
+ { 256 lt { 1 } { 2 } ifelse add } cforall
+} def
+/hawidthshow
+{
+ {
+ dup cstring
+ show
+ _hvax _hvay rmoveto
+ _hvwb eq { _hvcx _hvcy rmoveto } if
+ } cforall
+} def
+/vawidthshow
+{
+ {
+ dup 255 le
+ _charorientation 1 eq
+ and
+ {
+ -90 rotate
+ 0 _fontRotateAdjust rmoveto
+ cstring
+ _hvcx _hvcy _hvwb _hvax _hvay 6 -1 roll awidthshow
+ 0 _fontRotateAdjust neg rmoveto
+ 90 rotate
+ }
+ {
+ currentpoint
+ _fontHeight sub
+ exch _hvay sub exch _hvax sub
+ 2 index _hvwb eq { exch _hvcy sub exch _hvcx sub } if
+ 3 2 roll
+ cstring
+ dup stringwidth pop 2 div neg _fontAscent neg rmoveto
+ show
+ moveto
+ } ifelse
+ } cforall
+} def
+/hvawidthshow
+{
+ 6 1 roll
+ /_hvay exch ddef
+ /_hvax exch ddef
+ /_hvwb exch ddef
+ /_hvcy exch ddef
+ /_hvcx exch ddef
+ _lineorientation 0 eq { hawidthshow } { vawidthshow } ifelse
+} def
+/hvwidthshow
+{
+ 0 0 3 -1 roll hvawidthshow
+} def
+/hvashow
+{
+ 0 0 0 6 -3 roll hvawidthshow
+} def
+/hvshow
+{
+ 0 0 0 0 0 6 -1 roll hvawidthshow
+} def
+currentdict readonly pop end
+setpacking
+%%EndResource
+%%BeginResource: procset Adobe_shading_AI8 1.0 0
+%%Title: (Adobe Illustrator 8 Shading Procset)
+%%Version: 1.0 0
+%%CreationDate: (12/17/97) ()
+%%Copyright: ((C) 1987-1997 Adobe Systems Incorporated All Rights Reserved)
+userdict /defaultpacking currentpacking put true setpacking
+userdict /Adobe_shading_AI8 10 dict dup begin put
+/initialize {
+ Adobe_shading_AI8 begin
+ Adobe_shading_AI8 bdprocs
+ Mesh /initialize get exec
+} def
+/terminate {
+ currentdict Adobe_shading_AI8 eq {
+ end
+ } if
+} def
+/bdprocs {
+ {
+ dup xcheck 1 index type /arraytype eq and {
+ bind
+ } if
+ pop pop
+ } forall
+} def
+/X! {pop} def
+/X# {pop pop} def
+/Mesh 40 dict def
+Mesh begin
+/initialize {
+ Mesh bdprocs
+ Mesh begin
+ /emulate? /AI8MeshEmulation where {
+ pop AI8MeshEmulation
+ }{
+ systemdict /shfill known not
+ } ifelse def
+ end
+} def
+/bd {
+ shadingdict begin
+} def
+/paint {
+ emulate? {
+ end
+ }{
+ /_lp /none ddef _fc /_lp /none ddef
+
+ /AIColorSpace AIColorSpace tocolorspace store
+ /ColorSpace AIColorSpace topsspace store
+
+ version_ge_3010.106 not systemdict /setsmoothness known and {
+ 0.0001 setsmoothness
+ } if
+
+ composite? {
+ /DataSource getdatasrc def
+ Matrix concat
+ currentdict end
+ shfill
+ }{
+ AIColorSpace makesmarks AIPlateList markingplate and not isoverprint and {
+ end
+ }{
+ /ColorSpace /DeviceGray store
+ /Decode [0 1 0 1 0 1] store
+ /DataSource getplatesrc def
+ Matrix concat
+ currentdict end
+ shfill
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/shadingdict 12 dict def
+shadingdict begin
+ /ShadingType 6 def
+ /BitsPerCoordinate 16 def
+ /BitsPerComponent 8 def
+ /BitsPerFlag 8 def
+end
+/datafile null def
+/databuf 256 string def
+/dataptr 0 def
+/srcspace null def
+/srcchannels 0 def
+/dstchannels 0 def
+/dstplate 0 def
+/srctodstcolor null def
+/getplatesrc {
+ /srcspace AIColorSpace store
+ /srcchannels AIColorSpace getnchannels store
+ /dstchannels 1 store
+ /dstplate getplateindex store
+ /srctodstcolor srcspace makesmarks {
+ dstplate 4 eq {
+ {1 exch sub}
+ }{
+ {srcspace tocmyk 3 dstplate sub index 1 exch sub 5 1 roll 4 {pop} repeat}
+ } ifelse
+ }{
+ {srcchannels {pop} repeat 1}
+ } ifelse store
+ /datafile getdatasrc store
+ /rdpatch168 load DataLength () /SubFileDecode filter
+} def
+/getdatasrc {
+ /rdcmntline load /ASCII85Decode filter
+} def
+/rdpatch168 {
+ /dataptr 0 store
+ 49 rdcount
+ 4 {
+ dup {pop srcchannels getint8} if
+ dup {pop srctodstcolor dstchannels putint8 true} if
+ } repeat
+ {databuf 0 dataptr getinterval}{()} ifelse
+} def
+/rdpatch3216 {
+ /dataptr 0 store
+ 97 rdcount
+ 4 {
+ dup {pop srcchannels getint16} if
+ dup {pop srctodstcolor dstchannels putint16 true} if
+ } repeat
+ {databuf 0 dataptr getinterval}{()} ifelse
+} def
+/rdcount {
+ dup 0 gt {
+ datafile databuf dataptr 4 -1 roll getinterval readstring
+ exch length dataptr add /dataptr exch store
+ }{
+ true
+ } ifelse
+} def
+/getint8 {
+ mark true 3 -1 roll
+ {
+ dup {pop datafile read} if
+ dup {pop 255 div true} if
+ } repeat
+ {
+ counttomark 1 add -1 roll pop true
+ }{
+ cleartomark false
+ } ifelse
+} def
+/putint8 {
+ dup dataptr add /dataptr exch store
+ dataptr exch
+ {
+ 1 sub exch
+ 255 mul cvi
+ databuf 2 index
+ 3 -1 roll put
+ } repeat
+ pop
+} def
+/getint16 {
+ mark true 3 -1 roll
+ {
+ dup {pop datafile read} if
+ dup {pop 256 mul datafile read} if
+ dup {pop add 65535 div true} if
+ } repeat
+ {
+ counttomark 1 add -1 roll pop true
+ }{
+ cleartomark false
+ } ifelse
+} def
+/putint16 {
+ dup 2 mul dataptr add /dataptr exch store
+ dataptr exch
+ {
+ 2 sub exch
+ 65535 mul cvi dup
+ 256 idiv databuf 3 index 3 -1 roll put
+ 256 mod databuf 2 index 1 add 3 -1 roll put
+ } repeat
+ pop
+} def
+/srcbuf 256 string def
+/rdcmntline {
+ currentfile srcbuf readline pop
+ (%) anchorsearch {pop} if
+} def
+/getplateindex {
+ 0 [cyan? magenta? yellow? black? customColor?] {{exit} if 1 add} forall
+} def
+/aicsarray 4 array def
+/aicsaltvals 4 array def
+/aicsaltcolr aicsaltvals def
+/tocolorspace {
+ dup type /arraytype eq {
+ mark exch aload pop
+ aicsarray 0 3 -1 roll put
+ aicsarray 1 3 -1 roll put
+ dup aicsarray 2 3 -1 roll put
+ gettintxform aicsarray 3 3 -1 roll put
+ counttomark aicsaltvals 0 3 -1 roll getinterval /aicsaltcolr exch store
+ aicsaltcolr astore pop pop
+ aicsarray
+ } if
+} def
+/subtintxform {aicsaltcolr {1 index mul exch} forall pop} def
+/addtintxform {aicsaltcolr {1 sub 1 index mul 1 add exch} forall pop} def
+/gettintxform {
+ /DeviceRGB eq {/addtintxform}{/subtintxform} ifelse load
+} def
+/getnchannels {
+ dup type /arraytype eq {0 get} if
+ colorspacedict exch get begin Channels end
+} def
+/makesmarks {
+ composite? {
+ pop true
+ }{
+ dup dup type /arraytype eq {0 get} if
+ colorspacedict exch get begin MarksPlate end
+ } ifelse
+} def
+/markingplate {
+ composite? {
+ pop true
+ }{
+ dup type /arraytype eq {
+ dup length getplateindex gt {getplateindex get}{pop false} ifelse
+ } if
+ } ifelse
+} def
+/tocmyk {
+ dup dup type /arraytype eq {0 get} if
+ colorspacedict exch get begin ToCMYK end
+} def
+/topsspace {
+ dup dup type /arraytype eq {0 get} if
+ colorspacedict exch get begin ToPSSpace end
+} def
+/colorspacedict 5 dict dup begin
+ /DeviceGray 4 dict dup begin
+ /Channels 1 def
+ /MarksPlate {pop black?} def
+ /ToCMYK {pop 1 exch sub 0 0 0 4 -1 roll} def
+ /ToPSSpace {} def
+ end def
+ /DeviceRGB 4 dict dup begin
+ /Channels 3 def
+ /MarksPlate {pop isCMYKSep?} def
+ /ToCMYK {pop _rgbtocmyk} def
+ /ToPSSpace {} def
+ end def
+ /DeviceCMYK 4 dict dup begin
+ /Channels 4 def
+ /MarksPlate {pop isCMYKSep?} def
+ /ToCMYK {pop} def
+ /ToPSSpace {} def
+ end def
+ /Separation 4 dict dup begin
+ /Channels 1 def
+ /MarksPlate {
+ /findcmykcustomcolor where {
+ pop dup 1 exch ToCMYK 5 -1 roll 1 get
+ findcmykcustomcolor 1 setcustomcolor
+ systemdict /currentgray get exec
+ 1 ne
+ }{
+ pop false
+ } ifelse
+ } def
+ /ToCMYK {
+ dup 2 get mark exch 4 2 roll
+ 3 get exec
+ counttomark -1 roll tocmyk
+ 5 -1 roll pop
+ } def
+ /ToPSSpace {} def
+ end def
+ /Process 4 dict dup begin
+ /Channels 1 def
+ /MarksPlate {
+ isCMYKSep? {
+ 1 exch ToCMYK 4 array astore getplateindex get 0 ne
+ }{
+ pop false
+ } ifelse
+ } def
+ /ToCMYK {
+ dup 2 get mark exch 4 2 roll
+ 3 get exec
+ counttomark -1 roll tocmyk
+ 5 -1 roll pop
+ } def
+ /ToPSSpace {
+ 4 array copy dup 0 /Separation put
+ } def
+ end def
+end def
+/isoverprint {
+ /currentoverprint where {pop currentoverprint}{_of} ifelse
+} def
+/version_ge_3010.106 {
+ version {cvr} stopped {
+ pop
+ false
+ }{
+ 3010.106 ge
+ } ifelse
+} def
+end
+end
+defaultpacking setpacking
+%%EndResource
+%%EndProlog
+%%BeginSetup
+userdict /_useSmoothShade false put
+userdict /_aicmykps false put
+userdict /_forceToCMYK false put
+Adobe_level2_AI5 /initialize get exec
+Adobe_cshow /initialize get exec
+Adobe_ColorImage_AI6 /initialize get exec
+Adobe_shading_AI8 /initialize get exec
+Adobe_Illustrator_AI5 /initialize get exec
+%AI5_Begin_NonPrinting
+Np
+%AI3_BeginPattern: (Brick)
+(Brick) 0 0 72 72 [
+%AI3_Tile
+(0 O 0 R 0.3 0.85 0.85 0 k
+ 0.3 0.85 0.85 0 K
+) @
+(
+%AI6_BeginPatternLayer
+800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+0 0 m
+0 72 L
+72 72 L
+72 0 L
+0 0 L
+f %AI6_EndPatternLayer
+) &
+(0 O 0 R 1 g
+ 1 G
+) @
+(
+%AI6_BeginPatternLayer
+800 Ar
+0 J 0 j 0.3 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+0 68.4097 m
+72 68.4097 l
+S 0 61.209 m
+72 61.209 L
+S 0 54.0088 m
+72 54.0088 L
+S 0 46.8076 m
+72 46.8076 L
+S 0 39.6084 m
+72 39.6084 L
+S 0 32.4072 m
+72 32.4072 L
+S 0 25.207 m
+72 25.207 L
+S 0 18.0059 m
+72 18.0059 L
+S 0 10.8057 m
+72 10.8057 L
+S 0 3.6064 m
+72 3.6064 L
+S 68.4102 68.4097 m
+68.4102 61.2217 l
+S 54.0098 68.4097 m
+54.0098 61.2217 L
+S 39.6094 68.4097 m
+39.6094 61.2217 L
+S 25.21 68.4097 m
+25.21 61.2217 L
+S 10.8105 68.4097 m
+10.8105 61.2217 L
+S 68.4102 53.9717 m
+68.4102 46.7842 l
+S 54.0098 53.9717 m
+54.0098 46.7842 L
+S 39.6094 53.9717 m
+39.6094 46.7842 L
+S 25.21 53.9717 m
+25.21 46.7842 L
+S 10.8105 53.9717 m
+10.8105 46.7842 L
+S 68.4102 39.5967 m
+68.4102 32.4092 l
+S 54.0098 39.5967 m
+54.0098 32.4092 L
+S 39.6094 39.5967 m
+39.6094 32.4092 L
+S 25.21 39.5967 m
+25.21 32.4092 L
+S 10.8105 39.5967 m
+10.8105 32.4092 L
+S 68.4102 25.2217 m
+68.4102 18.0342 l
+S 54.0098 25.2217 m
+54.0098 18.0342 L
+S 39.6094 25.2217 m
+39.6094 18.0342 L
+S 25.21 25.2217 m
+25.21 18.0342 L
+S 10.8105 25.2217 m
+10.8105 18.0342 L
+S 68.4102 10.7842 m
+68.4102 3.5967 l
+S 54.0098 10.7842 m
+54.0098 3.5967 L
+S 39.6094 10.7842 m
+39.6094 3.5967 L
+S 25.21 10.7842 m
+25.21 3.5967 L
+S 10.8105 10.7842 m
+10.8105 3.5967 L
+S 61.1973 3.5967 m
+61.1973 0 L
+S 46.7969 3.5967 m
+46.7969 0 L
+S 32.3965 3.5967 m
+32.3965 0 L
+S 17.9971 3.5967 m
+17.9971 0 L
+S 3.5967 3.5967 m
+3.5967 0 l
+S 61.1973 18.0342 m
+61.1973 10.8467 L
+S 46.7969 18.0342 m
+46.7969 10.8467 L
+S 32.3965 18.0342 m
+32.3965 10.8467 L
+S 17.9971 18.0342 m
+17.9971 10.8467 L
+S 3.5967 18.0342 m
+3.5967 10.8467 l
+S 61.1973 32.4092 m
+61.1973 25.2217 L
+S 46.7969 32.4092 m
+46.7969 25.2217 L
+S 17.9971 32.4092 m
+17.9971 25.2217 L
+S 3.5967 32.4092 m
+3.5967 25.2217 l
+S 61.1973 46.7842 m
+61.1973 39.5967 L
+S 46.7969 46.7842 m
+46.7969 39.5967 L
+S 32.3965 46.7842 m
+32.3965 39.5967 L
+S 17.9971 46.7842 m
+17.9971 39.5967 L
+S 3.5967 46.7842 m
+3.5967 39.5967 l
+S 61.1973 61.2217 m
+61.1973 54.0347 L
+S 46.7969 61.2217 m
+46.7969 54.0347 L
+S 32.3965 61.2217 m
+32.3965 54.0347 L
+S 17.9971 61.2217 m
+17.9971 54.0347 L
+S 3.5967 61.2217 m
+3.5967 54.0347 l
+S 61.1973 71.959 m
+61.1973 68.4717 L
+S 46.7969 71.959 m
+46.7969 68.4717 L
+S 32.3965 71.959 m
+32.3965 68.4717 L
+S 17.9971 71.959 m
+17.9971 68.4717 L
+S 3.5967 71.959 m
+3.5967 68.4717 l
+S 32.3965 32.4092 m
+32.3965 25.2217 L
+S %AI6_EndPatternLayer
+) &
+] E
+%AI3_EndPattern
+%AI3_BeginPattern: (Confetti)
+(Confetti) 4.85 3.617 76.85 75.617 [
+%AI3_Tile
+(0 O 0 R 1 g
+ 1 G
+) @
+(
+%AI6_BeginPatternLayer
+800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+4.85 3.617 m
+4.85 75.617 L
+76.85 75.617 L
+76.85 3.617 L
+4.85 3.617 L
+f %AI6_EndPatternLayer
+) &
+(0 O 0 R 0 g
+ 0 G
+) @
+(
+%AI6_BeginPatternLayer
+800 Ar
+0 J 0 j 0.3 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+10.6 64.867 m
+7.85 62.867 l
+S 9.1 8.617 m
+6.85 6.867 l
+S 78.1 68.617 m
+74.85 67.867 l
+S 76.85 56.867 m
+74.35 55.117 l
+S 79.6 51.617 m
+76.6 51.617 l
+S 76.35 44.117 m
+73.6 45.867 l
+S 78.6 35.867 m
+76.6 34.367 l
+S 76.1 23.867 m
+73.35 26.117 l
+S 78.1 12.867 m
+73.85 13.617 l
+S 68.35 14.617 m
+66.1 12.867 l
+S 76.6 30.617 m
+73.6 30.617 l
+S 62.85 58.117 m
+60.956 60.941 l
+S 32.85 59.617 m
+31.196 62.181 l
+S 47.891 64.061 m
+49.744 66.742 l
+S 72.814 2.769 m
+73.928 5.729 l
+S 67.976 2.633 m
+67.35 5.909 l
+S 61.85 27.617 m
+59.956 30.441 l
+S 53.504 56.053 m
+51.85 58.617 l
+S 52.762 1.779 m
+52.876 4.776 l
+S 45.391 5.311 m
+47.244 7.992 l
+S 37.062 3.375 m
+35.639 5.43 l
+S 55.165 34.828 m
+57.518 37.491 l
+S 20.795 3.242 m
+22.12 5.193 l
+S 14.097 4.747 m
+15.008 8.965 l
+S 9.736 1.91 m
+8.073 4.225 l
+S 31.891 5.573 m
+32.005 8.571 l
+S 12.1 70.367 m
+15.6 68.867 l
+S 9.35 54.867 m
+9.6 58.117 l
+S 12.85 31.867 m
+14.35 28.117 l
+S 10.1 37.367 m
+12.35 41.117 l
+S 34.1 71.117 m
+31.85 68.617 l
+S 38.35 71.117 m
+41.6 68.367 l
+S 55.1 71.117 m
+58.35 69.117 l
+S 57.35 65.117 m
+55.35 61.867 l
+S 64.35 66.367 m
+69.35 68.617 l
+S 71.85 62.867 m
+69.35 61.117 l
+S 23.6 70.867 m
+23.6 67.867 l
+S 20.6 65.867 m
+17.35 65.367 l
+S 24.85 61.367 m
+25.35 58.117 l
+S 25.85 65.867 m
+29.35 66.617 l
+S 14.1 54.117 m
+16.85 56.117 l
+S 12.35 11.617 m
+12.6 15.617 l
+S 12.1 19.867 m
+14.35 22.367 l
+S 26.1 9.867 m
+23.6 13.367 l
+S 34.6 47.117 m
+32.1 45.367 l
+S 62.6 41.867 m
+59.85 43.367 l
+S 31.6 35.617 m
+27.85 36.367 l
+S 36.35 26.117 m
+34.35 24.617 l
+S 33.85 14.117 m
+31.1 16.367 l
+S 37.1 9.867 m
+35.1 11.117 l
+S 34.35 20.867 m
+31.35 20.867 l
+S 44.6 56.617 m
+42.1 54.867 l
+S 47.35 51.367 m
+44.35 51.367 l
+S 44.1 43.867 m
+41.35 45.617 l
+S 43.35 33.117 m
+42.6 30.617 l
+S 43.85 23.617 m
+41.1 25.867 l
+S 44.35 15.617 m
+42.35 16.867 l
+S 67.823 31.1 m
+64.823 31.1 l
+S 27.1 32.617 m
+29.6 30.867 l
+S 31.85 55.117 m
+34.85 55.117 l
+S 19.6 40.867 m
+22.1 39.117 l
+S 16.85 35.617 m
+19.85 35.617 l
+S 20.1 28.117 m
+22.85 29.867 l
+S 52.1 42.617 m
+54.484 44.178 l
+S 52.437 50.146 m
+54.821 48.325 l
+S 59.572 54.133 m
+59.35 51.117 l
+S 50.185 10.055 m
+53.234 9.928 l
+S 51.187 15.896 m
+53.571 14.075 l
+S 58.322 19.883 m
+59.445 16.823 l
+S 53.1 32.117 m
+50.6 30.367 l
+S 52.85 24.617 m
+49.6 25.617 l
+S 61.85 9.117 m
+59.1 10.867 l
+S 69.35 34.617 m
+66.6 36.367 l
+S 67.1 23.617 m
+65.1 22.117 l
+S 24.435 46.055 m
+27.484 45.928 l
+S 25.437 51.896 m
+27.821 50.075 l
+S 62.6 47.117 m
+65.321 46.575 l
+S 19.85 19.867 m
+20.35 16.617 l
+S 21.85 21.867 m
+25.35 22.617 l
+S 37.6 62.867 m
+41.6 62.117 l
+S 38.323 42.1 m
+38.823 38.6 l
+S 69.35 52.617 m
+66.85 53.867 l
+S 14.85 62.117 m
+18.1 59.367 l
+S 9.6 46.117 m
+7.1 44.367 l
+S 20.6 51.617 m
+18.6 50.117 l
+S 46.141 70.811 m
+47.994 73.492 l
+S 69.391 40.561 m
+71.244 43.242 l
+S 38.641 49.311 m
+39.35 52.117 l
+S 25.141 16.811 m
+25.85 19.617 l
+S 36.6 32.867 m
+34.6 31.367 l
+S 6.1 68.617 m
+2.85 67.867 l
+S 4.85 56.867 m
+2.35 55.117 l
+S 7.6 51.617 m
+4.6 51.617 l
+S 6.6 35.867 m
+4.6 34.367 l
+S 6.1 12.867 m
+1.85 13.617 l
+S 4.6 30.617 m
+1.6 30.617 l
+S 72.814 74.769 m
+73.928 77.729 l
+S 67.976 74.633 m
+67.35 77.909 l
+S 52.762 73.779 m
+52.876 76.776 l
+S 37.062 75.375 m
+35.639 77.43 l
+S 20.795 75.242 m
+22.12 77.193 l
+S 9.736 73.91 m
+8.073 76.225 l
+S 10.1 23.617 m
+6.35 24.367 l
+S 73.217 18.276 m
+71.323 21.1 l
+S 28.823 39.6 m
+29.505 42.389 l
+S 49.6 38.617 m
+47.6 37.117 l
+S 60.323 73.6 m
+62.323 76.6 l
+S 60.323 1.6 m
+62.323 4.6 l
+S %AI6_EndPatternLayer
+) &
+] E
+%AI3_EndPattern
+%AI3_BeginPattern: (Leaves - Fall )
+(Leaves - Fall ) 0 0 64.0781 78.9336 [
+%AI3_Tile
+(0 O 0 R 0.05 0.2 1 0 k
+ 0.05 0.2 1 0 K
+) @
+(
+%AI6_BeginPatternLayer
+800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+64.0781 78.9336 m
+64.0781 0 L
+0 0 L
+0 78.9336 L
+64.0781 78.9336 L
+f %AI6_EndPatternLayer
+) &
+(0 O 0 R 0.83 0 1 0 k
+ 0.83 0 1 0 K
+) @
+(
+%AI6_BeginPatternLayer
+800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 1 D
+0 XR
+29.7578 0.9902 m
+30.4346 1.1914 30.7246 1.3428 V
+29.2559 4.0547 33.707 8.3359 34.627 9.0762 C
+35.2275 8.8506 35.3477 6.3184 34.6699 4.9805 C
+35.5137 5.1035 37.7031 3.7256 38.4609 2.4365 C
+38.5254 3.125 40.0957 6.0664 40.9219 6.4434 C
+40.002 6.8408 39.3359 8.3135 38.5742 9.7617 C
+39.5957 9.9287 40.9961 9.0078 42.4668 8.1025 C
+42.9814 8.9043 44.3555 9.875 45.6143 10.3916 C
+44.5264 11.0781 44.0313 11.8203 43.5352 13.2793 C
+42.4922 12.7139 40.3057 12.5645 39.7764 12.8516 C
+40.291 13.9648 42.5371 14.5078 43.2676 14.4551 C
+43.0137 15.3164 42.8652 17.4697 43.0391 20.0625 C
+41.3789 18.7461 39.834 17.4297 38.1738 17.4883 C
+38.4434 16.0664 37.8076 14.2607 37.4307 13.7676 C
+36.8574 14.5117 36.4463 15.3389 36.8008 17.3164 C
+35.3486 17.8008 34.1113 18.3467 32.7373 19.6045 C
+32.7373 17.7734 32.166 16.5723 31.2969 15.2959 C
+32.5576 14.8076 33.8301 13.6045 33.8252 12.5664 C
+32.9775 12.7178 31.2852 13.4619 30.793 14.4551 C
+30.0742 13.707 28.3906 12.3984 26.7871 12.3945 C
+27.9746 11.5391 28.8945 10.5059 28.9893 8.5938 C
+30.2422 9.5645 32.6953 10.1797 34.0752 9.582 C
+29.2344 5.3457 29.7031 2.3125 29.7578 0.9902 C
+f 13.8525 29.9844 m
+13.3281 29.5127 13.1309 29.25 V
+15.623 27.4326 13.3691 21.6074 12.8555 20.5439 C
+12.2168 20.4883 10.8096 23.2285 10.8457 24.7266 C
+9.7129 23.9707 8.0488 24.0918 6.4463 24.3779 C
+7.0186 23.2891 6.6172 21.3447 5.8164 20.5439 C
+6.8184 20.5801 8.1699 19.8652 9.4785 18.8838 C
+8.6436 18.0645 6.8164 18.2246 4.9004 18.8838 C
+4.9004 17.5107 4.0781 15.7734 3.2412 14.5918 C
+4.5576 14.6484 5.7031 13.9629 6.5605 12.9316 C
+7.2256 14.5 9.2598 15.6133 10.166 15.5645 C
+10.1826 14.1992 8.6094 12.1094 7.5879 11.7109 C
+8.1875 11.041 9.207 9.5107 10.166 7.0947 C
+10.9648 9.0205 12.1348 10.2627 13.3672 11.1953 C
+12.2256 12.7578 12.3994 13.6289 12.7988 15.1074 C
+13.541 14.5664 14.5723 14.1338 14.7441 12.1309 C
+16.4609 12.416 17.5957 12.3447 19.0938 11.4434 C
+18.6387 13.1055 18.6348 14.707 18.9551 16.4063 C
+17.1055 16.2666 15.5449 16.4795 14.5156 17.9688 C
+15.3457 18.1953 17.6055 18.2549 18.4795 17.3223 C
+18.8066 18.3047 19.7012 19.7109 21.1475 20.4043 C
+19.707 20.6641 18.7227 21.7637 17.8135 23.4492 C
+17.1006 22.0332 14.873 20.3691 13.3711 20.3145 C
+15.373 24.3779 15.373 27.2959 13.8525 29.9844 C
+f 41.2324 26.0742 m
+41.5518 26.7021 41.7549 26.959 V
+44.1523 25.0176 48.958 28.3262 49.8535 29.0957 C
+49.7432 29.7266 47.6182 30.8643 45.9004 29.834 C
+46.3408 31.123 45.4395 33.084 44.2402 34.126 C
+45.9805 34.0254 48.126 35.3867 48.6484 36.1289 C
+48.8701 35.1514 50.0527 33.8809 51.3379 32.8672 C
+51.6895 33.8398 50.9941 35.958 50.0781 37.5605 C
+51.3125 38.0605 52.4248 38.9912 52.8828 40.25 C
+53.3398 38.9336 54.3428 38.2598 55.6875 37.5039 C
+54.5273 36.0762 53.7471 33.9023 54.0273 33.0391 C
+55.3496 33.374 56.9209 36.0918 57.0439 37.1816 C
+57.9189 36.415 59.4727 35.7285 62.0537 35.4219 C
+60.3535 34.3438 59.9902 32.3516 59.4063 30.9219 C
+58.2588 31.3682 56.0898 31.4277 55.1152 30.8643 C
+55.8281 30.2852 57.168 29.7344 59.1777 29.7207 C
+59.1777 28.1758 59.6406 27.043 60.8945 25.8281 C
+59.1719 25.8418 57.0723 25.3555 55.5762 24.9629 C
+55.3281 26.292 54.4844 27.8887 53.3398 28.2891 C
+53.334 27.4277 53.5996 25.1797 54.4844 24.5117 C
+53.6201 23.9443 52.3672 22.5674 51.9102 20.8496 C
+51.2881 22.1758 50.4268 23.4805 48.5645 23.9238 C
+49.749 24.9766 50.584 26.9941 50.25 28.4609 C
+45.1973 24.4785 42.5215 25.7773 41.2324 26.0742 C
+f 27.7578 38.7324 m
+28.4346 38.9316 28.7246 39.084 V
+27.2559 41.7969 31.707 46.0776 32.627 46.8169 C
+33.2275 46.5918 33.3477 44.0586 32.6699 42.7227 C
+33.5137 42.8457 35.7031 41.4678 36.4609 40.1787 C
+36.5254 40.8652 38.0957 43.8066 38.9219 44.1846 C
+38.002 44.582 37.3359 46.0547 36.5742 47.5039 C
+37.5957 47.6709 38.9961 46.7485 40.4668 45.8438 C
+40.9814 46.6445 42.3555 47.6177 43.6143 48.1328 C
+42.5264 48.8198 42.0313 49.5615 41.5352 51.0205 C
+40.4922 50.4556 38.3057 50.3057 37.7764 50.5938 C
+38.291 51.7056 40.5371 52.2485 41.2676 52.1958 C
+41.0137 53.0576 40.8652 55.2109 41.0391 57.8037 C
+39.3789 56.4878 37.834 55.1719 36.1738 55.2285 C
+36.4434 53.8076 35.8076 52.002 35.4307 51.5088 C
+34.8574 52.2529 34.4463 53.0796 34.8008 55.0576 C
+33.3486 55.5425 32.1113 56.0879 30.7373 57.3467 C
+30.7373 55.5146 30.166 54.314 29.2969 53.0366 C
+30.5576 52.5488 31.8301 51.3467 31.8252 50.3076 C
+30.9775 50.46 29.2852 51.2036 28.793 52.1958 C
+28.0742 51.4497 26.3906 50.1396 24.7871 50.1357 C
+25.9746 49.2817 26.8945 48.2466 26.9893 46.335 C
+28.2422 47.3057 30.6953 47.9209 32.0752 47.3237 C
+27.2344 43.0869 27.7031 40.0547 27.7578 38.7324 C
+f 13.5195 70.3916 m
+12.9941 69.9209 12.7988 69.6587 V
+15.2891 67.8418 13.0352 62.0146 12.5225 60.9517 C
+11.8828 60.8955 10.4766 63.6367 10.5117 65.1348 C
+9.3809 64.3789 7.7148 64.4995 6.1133 64.7856 C
+6.6855 63.6987 6.2842 61.7529 5.4834 60.9517 C
+6.4854 60.9878 7.8359 60.2729 9.1455 59.2925 C
+8.3105 58.4717 6.4834 58.6338 4.5674 59.2925 C
+4.5674 57.9189 3.7461 56.1816 2.9082 54.9995 C
+4.2246 55.0576 5.3691 54.3706 6.2275 53.3408 C
+6.8926 54.9097 8.9258 56.0215 9.832 55.9727 C
+9.8496 54.6079 8.2764 52.5176 7.2539 52.1187 C
+7.8545 51.4497 8.873 49.9189 9.832 47.5039 C
+10.6309 49.4297 11.8008 50.6719 13.0342 51.6045 C
+11.8926 53.1655 12.0664 54.0366 12.4648 55.5146 C
+13.209 54.9746 14.2393 54.5415 14.4102 52.5386 C
+16.127 52.8247 17.2637 52.7529 18.7598 51.8525 C
+18.3057 53.5137 18.3027 55.1147 18.623 56.8149 C
+16.7725 56.6748 15.2129 56.8887 14.1826 58.377 C
+15.0117 58.6035 17.2725 58.6626 18.1465 57.731 C
+18.4736 58.7129 19.3691 60.1187 20.8145 60.8125 C
+19.375 61.0728 18.3896 62.1719 17.4805 63.8579 C
+16.7676 62.4429 14.541 60.7769 13.0371 60.7227 C
+15.041 64.7856 15.041 67.7046 13.5195 70.3916 C
+f 41.2324 64.4824 m
+41.5518 65.1113 41.7549 65.3682 V
+44.1523 63.4272 48.958 66.7354 49.8535 67.5034 C
+49.7432 68.1362 47.6182 69.2725 45.9004 68.2422 C
+46.3408 69.5313 45.4395 71.4922 44.2402 72.5342 C
+45.9805 72.4341 48.126 73.7954 48.6484 74.5371 C
+48.8701 73.5601 50.0527 72.29 51.3379 71.2754 C
+51.6895 72.249 50.9941 74.3662 50.0781 75.9683 C
+51.3125 76.4692 52.4248 77.3994 52.8828 78.6582 C
+53.3398 77.3423 54.3428 76.667 55.6875 75.9111 C
+54.5273 74.4844 53.7471 72.3101 54.0273 71.4473 C
+55.3496 71.7822 56.9209 74.5 57.0439 75.5903 C
+57.9189 74.8232 59.4727 74.1372 62.0537 73.8311 C
+60.3535 72.7534 59.9902 70.7612 59.4063 69.3301 C
+58.2588 69.7773 56.0898 69.8364 55.1152 69.2725 C
+55.8281 68.6934 57.168 68.1431 59.1777 68.1284 C
+59.1777 66.583 59.6406 65.4512 60.8945 64.2373 C
+59.1719 64.249 57.0723 63.7632 55.5762 63.3721 C
+55.3281 64.7002 54.4844 66.2974 53.3398 66.6973 C
+53.334 65.8364 53.5996 63.5874 54.4844 62.9214 C
+53.6201 62.353 52.3672 60.9751 51.9102 59.2583 C
+51.2881 60.583 50.4268 61.8882 48.5645 62.333 C
+49.749 63.3862 50.584 65.4033 50.25 66.8691 C
+45.1973 62.8872 42.5215 64.1851 41.2324 64.4824 C
+f %AI6_EndPatternLayer
+) &
+] E
+%AI3_EndPattern
+%AI3_BeginPattern: (Stripes)
+(Stripes) 8.45 4.6001 80.45 76.6001 [
+%AI3_Tile
+(0 O 0 R 1 0.07 1 0 k
+ 1 0.07 1 0 K
+) @
+(
+%AI6_BeginPatternLayer
+800 Ar
+0 J 0 j 3.6 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+8.2 8.2 m
+80.7 8.2 L
+S 8.2 22.6001 m
+80.7 22.6001 L
+S 8.2 37.0002 m
+80.7 37.0002 L
+S 8.2 51.4 m
+80.7 51.4 L
+S 8.2 65.8001 m
+80.7 65.8001 L
+S 8.2 15.4 m
+80.7 15.4 L
+S 8.2 29.8001 m
+80.7 29.8001 L
+S 8.2 44.2 m
+80.7 44.2 L
+S 8.2 58.6001 m
+80.7 58.6001 L
+S 8.2 73.0002 m
+80.7 73.0002 L
+S %AI6_EndPatternLayer
+) &
+] E
+%AI3_EndPattern
+%AI5_End_NonPrinting--
+%AI5_Begin_NonPrinting
+Np
+%AI8_BeginBrushPattern
+(New Pattern 1)
+0 A
+u 1 Ap
+800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+-7834.75 8587 m
+-7834.75 8563 L
+-7884.75 8563 L
+-7884.75 8587 L
+-7834.75 8587 L
+n u 0 Ap
+0 O
+1 g
+-7854.75 8585 m
+-7866.96 8588.0527 -7875.4434 8578.0605 -7884.75 8570.9512 C
+F -7844.75 8585 m
+-7861.1279 8589.0947 -7870.8008 8569.7227 -7884.75 8565.3154 C
+F -7884.75 8565 m
+-7864.75 8560 -7854.75 8590 -7834.75 8585 C
+F -7874.75 8565 m
+-7858.3721 8560.9053 -7848.6992 8580.2773 -7834.75 8584.6846 C
+F -7864.75 8565 m
+-7852.54 8561.9473 -7844.0566 8571.9395 -7834.75 8579.0488 C
+F -7844.75 8565 m
+-7841.1279 8564.0947 -7837.835 8564.3408 -7834.75 8565.3154 C
+F -7874.75 8585 m
+-7878.3721 8585.9053 -7881.665 8585.6592 -7884.75 8584.6846 C
+F -7844.7817 8565.125 m
+-7850.9009 8563.6162 -7854.7817 8565.125 V
+-7858.877 8563.6484 -7864.7817 8565.125 V
+-7869.7446 8563.4492 -7874.7817 8565.125 V
+-7880.7969 8563.5742 -7884.7817 8565.125 V
+-7884.7817 8584.8096 L
+-7881.6958 8585.7842 -7878.2969 8585.9912 -7874.3799 8584.9082 C
+-7868.2134 8586.4912 -7864.4634 8584.9082 V
+-7859.4634 8586.4912 -7854.3799 8584.8242 V
+-7850.0474 8586.4082 -7844.3799 8584.9082 V
+-7838.8799 8586.3242 -7834.7817 8585.125 V
+-7834.7817 8565.4404 L
+-7837.5254 8564.4287 -7840.6514 8563.9287 -7844.7817 8565.125 C
+f 0 R
+0 G
+1 J 1 j 0.5 w -7864.75 8585 m
+-7872.54 8586.9473 -7878.813 8583.585 -7884.75 8579.0488 C
+S -7854.75 8585 m
+-7866.96 8588.0527 -7875.4434 8578.0605 -7884.75 8570.9512 C
+S -7844.75 8585 m
+-7861.1279 8589.0947 -7870.8008 8569.7227 -7884.75 8565.3154 C
+S -7884.75 8565 m
+-7864.75 8560 -7854.75 8590 -7834.75 8585 C
+S -7874.75 8565 m
+-7858.3721 8560.9053 -7848.6992 8580.2773 -7834.75 8584.6846 C
+S -7864.75 8565 m
+-7852.54 8561.9473 -7844.0566 8571.9395 -7834.75 8579.0488 C
+S -7854.75 8565 m
+-7846.96 8563.0527 -7840.687 8566.415 -7834.75 8570.9512 C
+S -7844.75 8565 m
+-7841.1279 8564.0947 -7837.835 8564.3408 -7834.75 8565.3154 C
+S -7874.75 8585 m
+-7878.3721 8585.9053 -7881.665 8585.6592 -7884.75 8584.6846 C
+S U U %AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 2)
+0 A
+u 800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+-7884 8586 m
+-7819.187 8586 L
+-7819.187 8521.9023 L
+-7884 8521.9023 L
+-7884 8586 L
+n u 0 O
+0 g
+-7849.6978 8544.4297 m
+-7851.6094 8521.9023 L
+-7853.5215 8544.4297 L
+-7852.9033 8544.3066 -7852.2642 8544.2402 -7851.6094 8544.2402 c
+-7850.9551 8544.2402 -7850.3159 8544.3066 -7849.6978 8544.4297 C
+f -7861.2402 8552.3975 m
+-7884 8554.3301 L
+-7861.1138 8556.2734 L
+-7861.2856 8555.5469 -7861.3848 8554.793 -7861.3848 8554.0156 c
+-7861.3848 8553.4629 -7861.3281 8552.9248 -7861.2402 8552.3975 C
+f -7856.519 8545.5723 m
+-7870.1626 8536.8047 L
+-7860.2153 8549.377 L
+-7859.3574 8547.791 -7858.0718 8546.4766 -7856.519 8545.5723 C
+f -7853.481 8563.6074 m
+-7851.5786 8586 L
+-7849.6768 8563.5967 L
+-7850.3018 8563.7227 -7850.9473 8563.791 -7851.6094 8563.791 c
+-7852.25 8563.791 -7852.873 8563.7246 -7853.481 8563.6074 C
+f -7841.9609 8555.5068 m
+-7819.187 8553.5732 L
+-7842.083 8551.6289 L
+-7842.083 8551.8506 L
+-7841.9258 8552.5488 -7841.834 8553.2695 -7841.834 8554.0156 c
+-7841.834 8554.5234 -7841.8848 8555.0195 -7841.9609 8555.5068 C
+f -7860.1138 8558.8262 m
+-7870.1641 8571.5293 L
+-7856.2778 8562.6055 L
+-7857.8823 8561.7305 -7859.2114 8560.416 -7860.1138 8558.8262 C
+f -7842.9961 8549.3945 m
+-7832.875 8536.6055 L
+-7846.7666 8545.5313 L
+-7845.1768 8546.4414 -7843.8633 8547.7793 -7842.9961 8549.3945 C
+f -7846.6895 8562.4512 m
+-7832.873 8571.3281 L
+-7842.9658 8558.5732 L
+-7843.8198 8560.1895 -7845.1152 8561.5313 -7846.6895 8562.4512 C
+f -7842.8887 8558.6133 m
+-7842.3862 8557.6641 -7842.043 8556.6211 -7841.875 8555.5195 c
+-7841.7993 8555.0293 -7841.748 8554.5273 -7841.748 8554.0156 c
+-7841.748 8553.2637 -7841.8398 8552.5352 -7841.998 8551.8311 c
+-7842.1958 8550.957 -7842.5049 8550.124 -7842.918 8549.3545 c
+-7843.7954 8547.7246 -7845.1191 8546.374 -7846.7241 8545.4561 c
+-7847.6294 8544.9375 -7848.6226 8544.5537 -7849.6802 8544.3457 c
+-7850.3047 8544.2207 -7850.9497 8544.1523 -7851.6094 8544.1523 c
+-7852.2695 8544.1523 -7852.915 8544.2207 -7853.5391 8544.3457 c
+-7854.623 8544.5605 -7855.6382 8544.957 -7856.5625 8545.4961 c
+-7858.1313 8546.4102 -7859.4282 8547.7363 -7860.291 8549.335 c
+-7860.7969 8550.2695 -7861.145 8551.2969 -7861.3262 8552.3828 c
+-7861.415 8552.916 -7861.4727 8553.459 -7861.4727 8554.0156 c
+-7861.4727 8554.8008 -7861.3711 8555.5605 -7861.1978 8556.293 c
+-7860.981 8557.207 -7860.6406 8558.0732 -7860.187 8558.8701 c
+-7859.2793 8560.4727 -7857.939 8561.8008 -7856.3174 8562.6826 c
+-7855.4487 8563.1553 -7854.5 8563.498 -7853.4961 8563.6934 c
+-7852.8848 8563.8115 -7852.2554 8563.8779 -7851.6094 8563.8779 c
+-7850.9414 8563.8779 -7850.29 8563.8086 -7849.6602 8563.6826 c
+-7848.5786 8563.4668 -7847.5664 8563.0654 -7846.6455 8562.5273 c
+-7845.0566 8561.5977 -7843.751 8560.2441 -7842.8887 8558.6133 c
+f U U %AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 3)
+0 A
+u 1 Ap
+800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+-7874.75 8587 m
+-7874.75 8563 L
+-7884.75 8563 L
+-7884.75 8587 L
+-7874.75 8587 L
+n u u 0 Ap
+0 O
+1 g
+-7875.4058 8578.5361 m
+-7874.9878 8577.4355 -7874.75 8576.2471 -7874.75 8575 c
+-7874.75 8573.1377 -7875.2681 8571.4004 -7876.1543 8569.9072 c
+-7877.897 8566.9736 -7881.0898 8565 -7884.75 8565 C
+-7884.75 8585 L
+-7884.4297 8585 -7884.1143 8584.9814 -7883.8018 8584.9521 c
+-7881.9121 8584.7754 -7880.1807 8584.0645 -7878.7441 8582.9824 c
+-7877.2471 8581.8545 -7876.0801 8580.3184 -7875.4058 8578.5361 c
+f 0 R
+0 G
+1 J 1 j 0.5 w -7884.75 8565.3174 m
+-7881.7207 8566.2744 -7878.8926 8567.9326 -7876.1543 8569.9072 C
+S -7884.75 8570.9512 m
+-7881.5991 8573.3564 -7878.543 8576.0869 -7875.4058 8578.5361 C
+S -7878.7441 8582.9824 m
+-7880.8105 8581.8916 -7882.7993 8580.5342 -7884.75 8579.043 C
+S -7883.8018 8584.9521 m
+-7884.1191 8584.8682 -7884.4375 8584.7852 -7884.75 8584.6865 C
+S -7878.7441 8582.9824 m
+-7880.1807 8584.0645 -7881.9121 8584.7744 -7883.8018 8584.9521 C
+S -7875.4058 8578.5361 m
+-7874.9878 8577.4355 -7874.75 8576.2471 -7874.75 8575 c
+-7874.75 8573.1377 -7875.2681 8571.4004 -7876.1543 8569.9072 C
+S -7884.75 8585 m
+-7884.4297 8585 -7884.1143 8584.9814 -7883.8018 8584.9521 C
+S -7878.7441 8582.9824 m
+-7877.2471 8581.8545 -7876.0801 8580.3184 -7875.4058 8578.5361 C
+S -7876.1543 8569.9072 m
+-7877.8975 8566.9736 -7881.0898 8565 -7884.75 8565 C
+S U U U %AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 5)
+0 A
+u 800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+-7726.3994 8587 m
+-7726.3994 8573.4199 L
+-7885 8573.4199 L
+-7885 8587 L
+-7726.3994 8587 L
+n u u 0 O
+0.285 0.228 0.171 0 k
+-7741.0786 8585.4844 m
+-7741.043 8586.6895 L
+-7727.5103 8587.5176 -7726.8418 8586.2822 v
+-7726.7441 8586.1016 -7726.647 8585.7148 -7726.561 8585.1934 C
+-7728.584 8585.8242 -7738.291 8585.5713 -7741.0786 8585.4844 C
+f 0.44 0.352 0.264 0 k
+-7741.4063 8574.0234 m
+-7741.3711 8575.2676 L
+-7738.4912 8575.0488 -7728.1914 8574.3164 -7726.543 8574.8652 C
+-7726.7031 8574.2188 -7726.9199 8573.7646 -7727.2046 8573.6152 c
+-7728.8306 8572.7656 -7741.4063 8574.0234 Y
+f 0.145 0.116 0.087 0 k
+-7741.3711 8575.2676 m
+-7741.0786 8585.4844 L
+-7738.291 8585.5713 -7728.584 8585.8242 -7726.561 8585.1934 C
+-7726.1519 8582.7773 -7725.9258 8577.3604 -7726.543 8574.8652 C
+-7728.1914 8574.3164 -7738.4912 8575.0488 -7741.3711 8575.2676 C
+f U u 0.155 0.124 0.093 0 k
+-7766.9375 8579.2734 m
+-7765.897 8579.6563 L
+-7747.0728 8575.1465 L
+-7747.481 8574.3145 L
+-7766.3633 8576.7246 L
+-7767.252 8577.0059 L
+-7767.6504 8576.8936 -7768.1934 8576.8242 V
+-7767.6094 8577.2373 -7767.1426 8578.1406 -7766.9375 8579.2734 C
+f u 0.085 0.068 0.051 0 k
+-7771.7993 8583.666 m
+-7772.5977 8583.7217 -7769.749 8583.6641 Y
+-7770.3481 8583.0176 -7770.771 8581.8203 -7770.8105 8580.4375 c
+-7770.8169 8580.2246 -7770.8105 8580.0176 -7770.7993 8579.8135 C
+-7771.041 8579.707 -7771.0918 8579.7734 -7771.6289 8579.5645 C
+-7771 8583.6113 -7771.7993 8583.666 v
+f 0.305 0.244 0.183 0 k
+-7770.3442 8576.8672 m
+-7770.5527 8576.8105 -7770.4937 8578.9307 Y
+-7769.4785 8579.7588 L
+-7767.8359 8578.9434 L
+-7766.9375 8579.2734 L
+-7767.1426 8578.1406 -7767.6094 8577.2373 -7768.1934 8576.8242 C
+-7768.6094 8576.7715 -7769.874 8576.7998 -7770.3442 8576.8672 C
+f U 0.115 0.092 0.069 0 k
+-7766.9375 8579.2734 m
+-7767.8359 8578.9434 L
+-7769.4785 8579.7588 L
+-7770.4937 8578.9307 L
+-7770.793 8579.708 -7770.7993 8579.8135 V
+-7769.5137 8580.3789 -7768.1831 8580.7402 -7766.8398 8580.9258 C
+-7766.79 8580.7275 -7766.7842 8580.543 -7766.79 8580.3369 c
+-7766.7998 8579.9717 -7766.8218 8579.6182 -7766.9375 8579.2734 C
+f 0.41 0.328 0.246 0 k
+-7747.4512 8575.3965 m
+-7749.377 8576.6426 -7758.3862 8582.0986 -7766.8398 8580.9258 C
+-7766.9038 8582.0928 -7767.248 8583.0908 -7767.75 8583.6631 C
+-7767.1895 8583.6621 L
+-7746.7402 8586.7559 L
+-7747.0366 8576.4258 L
+-7747.0728 8575.1465 L
+-7747.2046 8575.2373 -7747.4512 8575.3965 v
+f 0.395 0.316 0.237 0 k
+-7770.8105 8580.4375 m
+-7770.771 8581.8203 -7770.3481 8583.0176 -7769.749 8583.6641 C
+-7767.6807 8583.6631 L
+-7767.1782 8583.0908 -7766.8218 8582.0713 -7766.8398 8580.9258 C
+-7768.1831 8580.7402 -7769.5137 8580.3789 -7770.7993 8579.8135 C
+-7770.8105 8580.0176 -7770.8169 8580.2246 -7770.8105 8580.4375 c
+f U u 0 0 0 0.11 k
+-7741.2642 8574.2012 m
+-7740.2407 8574.0352 L
+-7741.2642 8574.2012 L
+-7741.2642 8574.2012 L
+f 0 0 0 0.34 k
+-7747.481 8574.3145 m
+-7747.0728 8575.1465 L
+-7745.6714 8574.918 L
+-7744.5234 8574.7314 L
+-7742.6758 8574.4307 L
+-7741.2642 8574.2012 L
+-7740.2407 8574.0352 L
+-7740.2954 8573.7168 -7740.3672 8573.498 -7740.4648 8573.4199 C
+-7747.481 8574.3145 L
+f 0 0 0 0.32 k
+-7745.8042 8579.207 m
+-7746.041 8586.8613 L
+-7740.7144 8587 L
+-7739.7266 8583.5146 -7740.1816 8579.1543 V
+-7745.8042 8579.207 L
+f U 0.025 0.02 0.015 0 k
+-7739.3223 8576.3848 m
+-7736.373 8576.9199 -7733.2402 8577.1602 -7730.3159 8576.3613 c
+-7730.2856 8576.3496 -7730.2754 8576.3184 -7730.2871 8576.2969 c
+-7730.2881 8576.2656 -7730.3198 8576.2559 -7730.3418 8576.2559 c
+-7733.2422 8577.0645 -7736.375 8576.8242 -7739.3042 8576.2783 c
+-7739.3262 8576.2793 -7739.3574 8576.291 -7739.3672 8576.3223 c
+-7739.3662 8576.3438 -7739.355 8576.375 -7739.3223 8576.3848 c
+-7739.3223 8576.3848 l
+f -7737.8374 8575.3076 m
+-7737.7295 8575.3789 -7737.6313 8575.4941 -7737.5234 8575.502 c
+-7733.7886 8575.832 -7730.1631 8575.7813 -7726.4746 8575.6641 c
+-7726.4526 8575.6641 -7726.4209 8575.6426 -7726.4214 8575.6211 c
+-7726.4214 8575.5879 -7726.4551 8575.5684 -7726.4766 8575.5684 c
+-7729.3223 8575.6816 -7732.1401 8575.6992 -7735.0039 8575.5352 c
+-7735.9336 8575.4766 -7736.9082 8575.7402 -7737.7778 8575.2207 c
+-7737.7993 8575.2109 -7737.8306 8575.2109 -7737.8506 8575.2334 c
+-7737.8618 8575.2559 -7737.8594 8575.2871 -7737.8374 8575.3076 c
+-7737.8374 8575.3076 l
+f -7733.373 8577.3672 m
+-7731.5098 8578.6797 -7729.3022 8579.374 -7727.1001 8579.8867 c
+-7727.0679 8579.8965 -7727.0474 8579.8848 -7727.0366 8579.8535 c
+-7727.0273 8579.8203 -7727.0488 8579.8008 -7727.0703 8579.79 c
+-7729.2617 8579.2656 -7731.459 8578.6035 -7733.3105 8577.2803 c
+-7733.3433 8577.2598 -7733.375 8577.2715 -7733.3848 8577.293 c
+-7733.4058 8577.3145 -7733.3945 8577.3457 -7733.373 8577.3672 c
+-7733.373 8577.3672 l
+f -7738.9321 8584.0566 m
+-7736.7295 8584.5703 -7734.5298 8585.0303 -7732.2798 8585.2754 c
+-7732.2598 8585.2852 -7732.229 8585.2637 -7732.229 8585.2422 c
+-7732.2183 8585.209 -7732.2407 8585.1777 -7732.2729 8585.1787 c
+-7734.5122 8584.8809 -7736.7305 8584.5176 -7738.9126 8583.9502 c
+-7738.9351 8583.9512 -7738.9673 8583.9629 -7738.9766 8583.9941 c
+-7738.9751 8584.0156 -7738.9648 8584.0479 -7738.9321 8584.0566 c
+-7738.9321 8584.0566 l
+f -7738.439 8583.3604 m
+-7736.3457 8584.1973 -7734.1016 8583.9297 -7731.9023 8583.9629 c
+-7731.8706 8583.9609 -7731.8496 8583.9395 -7731.8506 8583.9082 c
+-7731.8521 8583.875 -7731.873 8583.8555 -7731.8945 8583.8555 c
+-7734.0928 8583.8438 -7736.3374 8584.0996 -7738.4209 8583.2529 c
+-7738.4434 8583.2539 -7738.4746 8583.2656 -7738.4834 8583.2969 c
+-7738.4834 8583.3184 -7738.4722 8583.3506 -7738.439 8583.3604 c
+-7738.439 8583.3604 l
+f -7737.707 8584.7051 m
+-7736.3833 8584.752 -7735.1504 8584.5469 -7733.8271 8584.209 c
+-7733.3594 8584.0996 -7732.9199 8584.2266 -7732.4609 8584.2129 c
+-7731.897 8584.1973 l
+-7731.874 8584.1963 -7731.8633 8584.1855 -7731.8535 8584.1738 c
+-7731.834 8584.1523 -7731.8442 8584.1211 -7731.8662 8584.0996 c
+-7732.0625 8583.9453 l
+-7732.0742 8583.9453 -7732.085 8583.9355 -7732.0962 8583.9355 c
+-7732.5 8583.9473 l
+-7733.9551 8584.1914 -7735.457 8584.6719 -7736.8926 8584.0742 c
+-7736.9258 8584.0645 -7736.957 8584.0859 -7736.9673 8584.1074 c
+-7736.9673 8584.1396 -7736.9551 8584.1602 -7736.9336 8584.1709 c
+-7735.647 8584.6992 -7734.1714 8584.4756 -7732.8818 8584.0547 c
+-7732.0918 8584.043 L
+-7732.124 8584.0332 L
+-7731.9282 8584.1875 L
+-7731.8984 8584.0898 L
+-7732.4639 8584.1064 l
+-7732.9321 8584.1406 -7733.3848 8583.9834 -7733.8398 8584.1035 c
+-7735.1543 8584.4609 -7736.3975 8584.625 -7737.71 8584.5986 c
+-7737.7422 8584.5996 -7737.7642 8584.6211 -7737.7617 8584.6533 c
+-7737.7617 8584.6855 -7737.7402 8584.7061 -7737.707 8584.7051 c
+-7737.707 8584.7051 l
+f -7738.5718 8585.0605 m
+-7735.8711 8586.2207 -7732.9023 8585.5703 -7730.1279 8585.1816 c
+-7729.7832 8585.2891 l
+-7729.7617 8585.2988 -7729.7417 8585.2871 -7729.7207 8585.2656 c
+-7729.71 8585.2441 -7729.7217 8585.2129 -7729.7422 8585.2021 c
+-7730.0801 8585.0098 l
+-7732.7754 8584.3926 -7735.5391 8584.7813 -7738.271 8584.7852 c
+-7738.3022 8584.7871 -7738.3232 8584.8086 -7738.3223 8584.8398 c
+-7738.3198 8584.8721 -7738.2983 8584.8926 -7738.2681 8584.8926 c
+-7735.6738 8584.9355 -7733.0303 8584.4434 -7730.4727 8585.0742 c
+-7729.7954 8585.2891 L
+-7729.7534 8585.1914 L
+-7730.1406 8585.0859 l
+-7732.9058 8585.4424 -7735.8418 8586.1348 -7738.5313 8584.9746 c
+-7738.5537 8584.9648 -7738.585 8584.9648 -7738.5962 8584.998 c
+-7738.6055 8585.0195 -7738.605 8585.0508 -7738.5718 8585.0605 c
+-7738.5718 8585.0605 l
+f -7735.6895 8578.3945 m
+-7734.3945 8578.9004 -7732.9834 8578.6465 -7731.6802 8578.3438 c
+-7731.647 8578.3418 -7731.6367 8578.3203 -7731.6382 8578.2891 c
+-7731.6504 8578.2568 -7731.6714 8578.2461 -7731.7031 8578.248 c
+-7732.998 8578.5303 -7734.377 8578.8154 -7735.6504 8578.2969 c
+-7735.6826 8578.2871 -7735.7144 8578.2988 -7735.7246 8578.3311 c
+-7735.7222 8578.3525 -7735.7114 8578.3848 -7735.6895 8578.3945 c
+-7735.6895 8578.3945 l
+f -7736.1401 8580.2207 m
+-7734.2266 8580.6895 -7732.3145 8581.1035 -7730.355 8581.3242 c
+-7730.3242 8581.334 -7730.3022 8581.3125 -7730.293 8581.2803 c
+-7730.2954 8581.2598 -7730.3159 8581.2285 -7730.3374 8581.2285 c
+-7732.2959 8581.0078 -7734.209 8580.582 -7736.1206 8580.1133 c
+-7736.1426 8580.1152 -7736.1738 8580.126 -7736.1831 8580.1582 c
+-7736.1831 8580.1797 -7736.1719 8580.2109 -7736.1401 8580.2207 c
+-7736.1401 8580.2207 l
+f -7736.9336 8582.6348 m
+-7734.499 8583.4609 -7731.8647 8583.0547 -7729.3457 8583.0879 c
+-7729.313 8583.0879 -7729.293 8583.0664 -7729.293 8583.0332 c
+-7729.2954 8583.0117 -7729.3159 8582.9922 -7729.3481 8582.9922 c
+-7731.8574 8582.916 -7734.481 8583.3848 -7736.8945 8582.5264 c
+-7736.9282 8582.5273 -7736.959 8582.5391 -7736.9688 8582.5605 c
+-7736.9678 8582.5918 -7736.9561 8582.624 -7736.9336 8582.6348 c
+-7736.9336 8582.6348 l
+f -7732.0542 8583.8496 m
+-7730.6582 8584.5449 -7729.0503 8584.4033 -7727.5342 8584.4668 c
+-7727.502 8584.4648 -7727.4824 8584.4434 -7727.4824 8584.4121 c
+-7727.4834 8584.3906 -7727.5054 8584.3594 -7727.5366 8584.3594 c
+-7729.0137 8584.2207 -7730.6489 8584.5234 -7732.0039 8583.7617 c
+-7732.0366 8583.7529 -7732.0679 8583.7637 -7732.0786 8583.7861 c
+-7732.0879 8583.8076 -7732.0767 8583.8398 -7732.0542 8583.8496 c
+-7732.0542 8583.8496 l
+f -7731.3418 8580.4248 m
+-7730.3926 8580.3975 -7729.4336 8580.3701 -7728.4839 8580.3428 c
+-7728.4526 8580.3418 -7728.4312 8580.3203 -7728.4336 8580.2881 c
+-7728.4336 8580.2559 -7728.4551 8580.2354 -7728.4878 8580.2363 c
+-7729.437 8580.2637 -7730.397 8580.291 -7731.3457 8580.3184 c
+-7731.377 8580.3184 -7731.3975 8580.3418 -7731.3975 8580.373 c
+-7731.397 8580.4043 -7731.374 8580.4258 -7731.3418 8580.4248 c
+-7731.3418 8580.4248 l
+f -7729.1592 8578.0361 m
+-7728.6895 8578.0645 -7728.209 8578.0723 -7727.7383 8578.0918 c
+-7727.7168 8578.0908 -7727.6855 8578.0684 -7727.6865 8578.0371 c
+-7727.687 8578.0039 -7727.71 8577.9844 -7727.7417 8577.9844 c
+-7728.2114 8577.9873 -7728.6816 8577.9375 -7729.1514 8577.9395 c
+-7729.1831 8577.9297 -7729.2031 8577.9512 -7729.2134 8577.9844 c
+-7729.2129 8578.0156 -7729.1914 8578.0371 -7729.1592 8578.0361 c
+-7729.1592 8578.0361 l
+f -7736.9702 8580.2344 m
+-7736.5688 8580.5107 -7736.125 8580.6797 -7735.645 8580.751 c
+-7735.6113 8580.7607 -7735.5918 8580.7383 -7735.5806 8580.7168 c
+-7735.5703 8580.6855 -7735.5928 8580.6543 -7735.6152 8580.6543 c
+-7736.0854 8580.5723 -7736.5176 8580.4023 -7736.9209 8580.1475 c
+-7736.9521 8580.1377 -7736.9849 8580.1387 -7736.9946 8580.1709 c
+-7737.0039 8580.1934 -7736.9922 8580.2246 -7736.9702 8580.2344 c
+-7736.9702 8580.2344 l
+f -7738.1904 8586.085 m
+-7735.7344 8586.5273 -7733.2983 8587.001 -7730.7993 8586.7266 c
+-7730.7778 8586.7266 -7730.7568 8586.7041 -7730.7578 8586.6719 c
+-7730.7578 8586.6406 -7730.7798 8586.6191 -7730.8022 8586.6191 c
+-7733.291 8586.873 -7735.7344 8586.4844 -7738.1719 8585.9775 c
+-7738.1934 8585.9785 -7738.2256 8585.9902 -7738.2344 8586.0215 c
+-7738.2344 8586.043 -7738.2222 8586.0752 -7738.1904 8586.085 c
+-7738.1904 8586.085 l
+f 0.195 0.156 0.117 0 k
+-7738.166 8574.6445 m
+-7735.7969 8574.2676 -7733.4058 8574.3477 -7731.0298 8574.5898 c
+-7730.998 8574.5879 -7730.9766 8574.5664 -7730.9766 8574.5352 c
+-7730.9785 8574.5137 -7731 8574.4824 -7731.0215 8574.4824 c
+-7733.4082 8574.2422 -7735.791 8574.1602 -7738.1694 8574.5391 c
+-7738.2026 8574.5391 -7738.2222 8574.5605 -7738.2217 8574.5938 c
+-7738.2207 8574.625 -7738.1992 8574.6465 -7738.166 8574.6445 c
+-7738.166 8574.6445 l
+f 0.335 0.268 0.201 0 k
+-7737.4351 8574.1113 m
+-7734.9282 8574.1152 -7732.4146 8574.2773 -7729.918 8573.8965 c
+-7729.8862 8573.8945 -7729.8647 8573.873 -7729.8662 8573.8418 c
+-7729.8672 8573.8086 -7729.8896 8573.7891 -7729.9209 8573.7891 c
+-7732.418 8574.1699 -7734.9297 8574.0293 -7737.4375 8574.0059 c
+-7737.46 8574.0059 -7737.481 8574.0273 -7737.4785 8574.0596 c
+-7737.4785 8574.0918 -7737.457 8574.1123 -7737.4351 8574.1113 c
+-7737.4351 8574.1113 l
+f 0.205 0.164 0.123 0 k
+-7738.9766 8574.3262 m
+-7737.5039 8574.668 -7736.0078 8574.4023 -7734.5391 8574.2207 c
+-7734.5078 8574.2207 -7734.4873 8574.1973 -7734.499 8574.166 c
+-7734.5 8574.1348 -7734.5215 8574.1133 -7734.5537 8574.125 c
+-7736.0103 8574.2842 -7737.4961 8574.583 -7738.9473 8574.2188 c
+-7738.9785 8574.2207 -7739.0103 8574.2324 -7739.0098 8574.2637 c
+-7739.019 8574.2852 -7738.998 8574.3164 -7738.9766 8574.3262 c
+-7738.9766 8574.3262 l
+f -7732.3535 8573.7949 m
+-7731.1978 8573.9219 -7730.0273 8573.8145 -7728.8926 8573.5898 c
+-7728.8711 8573.5781 -7728.8506 8573.5566 -7728.8618 8573.5244 c
+-7728.8623 8573.5029 -7728.8945 8573.4824 -7728.916 8573.4941 c
+-7730.0503 8573.7402 -7731.1914 8573.7939 -7732.3462 8573.6885 c
+-7732.3794 8573.6895 -7732.3984 8573.7109 -7732.4087 8573.7324 c
+-7732.4082 8573.7646 -7732.3862 8573.7852 -7732.3535 8573.7949 c
+-7732.3535 8573.7949 l
+f 0.335 0.268 0.201 0 k
+-7739.2681 8576.4473 m
+-7737.9214 8577.1885 -7736.3066 8576.5977 -7734.855 8576.6416 c
+-7734.8223 8576.6406 -7734.8022 8576.6191 -7734.8022 8576.5859 c
+-7734.8042 8576.5654 -7734.8262 8576.5449 -7734.8574 8576.5449 c
+-7736.2886 8576.4902 -7737.8823 8577.0801 -7739.2168 8576.3506 c
+-7739.2383 8576.3398 -7739.2695 8576.3516 -7739.291 8576.374 c
+-7739.3008 8576.3955 -7739.2886 8576.4277 -7739.2681 8576.4473 c
+-7739.2681 8576.4473 l
+f -7737.8945 8578.5645 m
+-7735.6719 8579.0449 -7733.3896 8578.6162 -7731.1504 8578.5625 c
+-7731.1177 8578.5615 -7731.0977 8578.5391 -7731.0977 8578.5078 c
+-7731.1001 8578.4863 -7731.1318 8578.4668 -7731.1519 8578.4668 c
+-7733.3833 8578.4775 -7735.6519 8578.9805 -7737.875 8578.457 c
+-7737.8975 8578.457 -7737.9287 8578.4688 -7737.9375 8578.502 c
+-7737.9375 8578.5225 -7737.9258 8578.5547 -7737.8945 8578.5645 c
+-7737.8945 8578.5645 l
+f -7732.0273 8575.1406 m
+-7730.3496 8575.9688 -7728.499 8576.502 -7726.603 8576.3613 c
+-7726.5718 8576.3613 -7726.5513 8576.3389 -7726.5527 8576.3066 c
+-7726.5527 8576.2754 -7726.5742 8576.2539 -7726.6074 8576.2559 c
+-7728.481 8576.416 -7730.3198 8575.8604 -7731.9873 8575.0547 c
+-7732.0078 8575.0449 -7732.041 8575.0449 -7732.0503 8575.0781 c
+-7732.061 8575.0996 -7732.061 8575.1309 -7732.0273 8575.1406 c
+-7732.0273 8575.1406 l
+f u 0.5 0.85 1 0.45 k
+-7885 8581.9082 m
+-7885.0254 8582.4883 -7884.5664 8583.1875 -7883.167 8583.9902 C
+-7882.8521 8584.0029 -7881.3945 8584.0234 -7879.0889 8584.0488 C
+-7879.0889 8581.8223 L
+-7881.1382 8581.8457 -7883.1177 8581.8867 -7885 8581.9082 C
+f -7884.5088 8580.9688 m
+-7879.0889 8580.8447 L
+-7879.0889 8579.8145 L
+-7882.644 8579.959 L
+-7883.8145 8580.3301 -7884.5088 8580.9688 V
+f 0.5 0.85 1 0.32 k
+-7879.0889 8580.8252 m
+-7884.4746 8580.9434 L
+-7884.7695 8581.2148 -7884.9849 8581.5566 -7885 8581.9277 C
+-7883.1177 8581.9063 -7881.1382 8581.8848 -7879.0889 8581.8613 C
+-7879.0889 8580.8252 L
+f 0.5 0.85 1 0.45 k
+-7774.1504 8580.6172 m
+-7852.3584 8581.541 -7879.1079 8581.8418 V
+-7879.1079 8584.0488 L
+-7862.8145 8584.2324 -7803.9902 8584.707 Y
+-7769.749 8583.6641 L
+-7770.457 8580.5684 L
+-7774.1504 8580.6172 L
+f 0.5 0.85 1 0.12 k
+-7879.1079 8579.8145 m
+-7879.1079 8580.8447 L
+-7770.4258 8579 L
+-7770.3833 8576.8633 L
+-7803.6553 8576.7129 L
+-7879.1079 8579.8145 L
+f u 0.065 0.052 0.039 0 k
+-7747.0728 8575.1465 m
+-7747.0366 8576.4258 L
+-7747.2954 8575.1172 L
+-7765.897 8579.6563 L
+-7766.9375 8579.2734 L
+-7766.8794 8579.6055 -7766.8398 8579.957 -7766.8306 8580.3223 c
+-7766.8242 8580.5283 -7766.8281 8580.7285 -7766.8398 8580.9258 C
+-7758.3862 8582.0986 -7748.9634 8577.6719 -7747.0366 8576.4258 C
+-7746.7402 8586.7559 L
+-7746.041 8586.8613 L
+-7745.8042 8579.207 L
+-7740.1816 8579.1543 L
+-7740.0898 8577.0137 -7740.0718 8575.0215 -7740.2407 8574.0352 C
+-7747.0728 8575.1465 L
+f 0.4 0.7 1 0 k
+-7770.457 8580.5879 m
+-7770.4258 8578.9805 L
+-7879.1079 8580.8252 L
+-7879.1079 8581.8613 L
+-7852.3584 8581.5605 -7770.457 8580.5879 Y
+f U U 0.025 0.02 0.015 0 k
+-7734.7344 8583.0293 m
+-7734.7344 8583.0625 -7734.7129 8583.082 -7734.6802 8583.082 c
+-7731.6714 8583.1133 -7729.4214 8582.9453 -7726.415 8582.8594 C
+-7726.4087 8582.7656 L
+-7729.3262 8582.8701 -7731.7607 8583.0078 -7734.6841 8582.9746 C
+-7734.7168 8582.9766 -7734.7358 8582.998 -7734.7344 8583.0293 C
+f -7726.3994 8582.7656 m
+-7726.4082 8582.7441 L
+-7726.4087 8582.7656 L
+-7726.4063 8582.7656 -7726.4033 8582.7656 -7726.3994 8582.7656 C
+f -7730.4487 8581.4238 m
+-7731.4458 8581.292 -7732.3394 8581.7656 -7733.2114 8582.1973 C
+-7733.2441 8582.208 -7733.2534 8582.2402 -7733.2422 8582.2715 C
+-7733.2305 8582.293 -7733.1982 8582.3027 -7733.1777 8582.291 c
+-7732.3262 8581.8301 -7731.4312 8581.4199 -7730.4678 8581.5195 c
+-7729.1079 8581.6621 -7727.9038 8582.375 -7726.5254 8582.4531 C
+-7726.4463 8582.3594 L
+-7728.04 8582.2656 -7728.8647 8581.623 -7730.4487 8581.4238 c
+f U U %AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 6)
+0 A
+u 1 Ap
+800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+-7884.75 8563 m
+-7884.75 8587 L
+-7874.75 8587 L
+-7874.75 8563 L
+-7884.75 8563 L
+n 0 Ap
+0 O
+1 g
+-7874.75 8565 m
+-7875.0703 8565 -7875.3857 8565.0186 -7875.6982 8565.0479 c
+-7877.5879 8565.2256 -7879.3198 8565.9346 -7880.7559 8567.0176 c
+-7882.2529 8568.1465 -7883.4199 8569.6816 -7884.0942 8571.4639 c
+-7884.5122 8572.5645 -7884.75 8573.7529 -7884.75 8575 c
+-7884.75 8576.8623 -7884.2319 8578.5996 -7883.3457 8580.0918 c
+-7881.6025 8583.0273 -7878.4102 8585 -7874.75 8585 C
+-7874.75 8565 L
+f 0 R
+0 G
+1 J 1 j 0.5 w -7874.75 8584.6816 m
+-7877.7793 8583.7256 -7880.6074 8582.0674 -7883.3457 8580.0918 C
+S -7874.75 8579.0488 m
+-7877.8999 8576.6436 -7880.957 8573.9131 -7884.0942 8571.4639 C
+S -7880.7559 8567.0176 m
+-7878.6904 8568.1084 -7876.7017 8569.4668 -7874.75 8570.957 C
+S -7875.6982 8565.0479 m
+-7875.3809 8565.1309 -7875.063 8565.2148 -7874.75 8565.3145 C
+S -7880.7559 8567.0176 m
+-7879.3193 8565.9355 -7877.5879 8565.2256 -7875.6982 8565.0479 C
+S -7884.0942 8571.4639 m
+-7884.5122 8572.5645 -7884.75 8573.7529 -7884.75 8575 c
+-7884.75 8576.8623 -7884.231 8578.5996 -7883.3457 8580.0918 C
+S -7874.75 8565 m
+-7875.0703 8565 -7875.3857 8565.0186 -7875.6982 8565.0479 C
+S -7880.7559 8567.0176 m
+-7882.2529 8568.1465 -7883.4199 8569.6816 -7884.0942 8571.4639 C
+S -7883.3457 8580.0918 m
+-7881.6025 8583.0273 -7878.4102 8585 -7874.75 8585 C
+S U %AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 8)
+0 A
+u 800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+-7883.9521 8584.3125 m
+-7776.7954 8584.3125 L
+-7776.7954 8570.1855 L
+-7883.9521 8570.1855 L
+-7883.9521 8584.3125 L
+n u 0 O
+0 0 0 1 k
+-7882.2832 8583.623 m
+-7882.8535 8586 -7882.8184 8582.0039 V
+-7883.0479 8578.8027 L
+-7883.6167 8576.4551 L
+-7883.4502 8574.123 L
+-7881.9502 8573.4551 -7865.2832 8572.123 V
+-7858.6167 8570.7891 -7849.6167 8570.7891 V
+-7784.3936 8571.4766 -7779.4912 8572.8848 v
+-7820.3882 8570.875 -7822.9688 8571.5117 v
+-7783.8569 8573.1602 -7780.8545 8574.4316 v
+-7818.79 8572.5469 -7822.167 8574.1777 v
+-7787.249 8575.9102 -7783.021 8577.5313 v
+-7789.7217 8576.8828 -7791.5127 8577.082 v
+-7788.3896 8577.5703 l
+-7793.4194 8577.502 l
+-7796.3218 8577.1289 l
+-7788.4521 8578.2422 -7787.9033 8578.8086 v
+-7784.3154 8578.1309 -7798.5186 8578.3848 v
+-7832.1177 8574.4551 -7882.2832 8583.623 V
+f /BBAccumRotation (5.805971) XT
+0 R
+0 0 0 0.5 K
+0.025 w -7883.9502 8573.123 m
+-7863.667 8571.2949 -7843.9727 8570.2207 v
+-7801.1514 8570.502 -7796.5737 8570.9004 v
+-7784.1631 8571.0313 -7776.7959 8572.0273 v
+S /BBAccumRotation (5.805971) XT
+0 0 0 1 K
+-7821.8369 8570.4082 m
+-7825.2959 8570.0273 -7851.2607 8570.2793 Y
+-7861.627 8570.1602 -7883.9502 8573.123 Y
+S /BBAccumRotation (5.805971) XT
+-7820.9873 8573.6641 m
+-7790.3608 8574.582 -7783.6606 8575.2324 v
+S /BBAccumRotation (5.805971) XT
+0 0 0 0.5 K
+-7829.6201 8578.2051 m
+-7794.3706 8579.6172 -7791.4058 8580.1406 v
+S /BBAccumRotation (5.805971) XT
+U U %AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 10)
+0 A
+u 800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+-7884 8586 m
+-7833.8921 8586 L
+-7833.8921 8529.9756 L
+-7884 8529.9756 L
+-7884 8586 L
+n u 0 O
+0.1 1 1 0 k
+-7846.9014 8551.5752 m
+-7848.7178 8545.0957 -7858.8247 8548.4658 Y
+-7858.791 8548.5303 L
+-7868.8999 8545.1611 -7870.7144 8551.6396 V
+-7876.6758 8569.0068 -7871.4922 8575.7451 V
+-7864.7529 8585.3369 -7860.6055 8585.3369 V
+-7857.0103 8585.2705 L
+-7852.8638 8585.2705 -7846.125 8575.6816 Y
+-7840.9409 8568.9424 -7846.9014 8551.5752 Y
+f u 0 0 0 1 k
+-7851.3926 8529.9756 m
+-7852.1167 8531.4199 -7852.9238 8532.4756 V
+-7852.4058 8532.0635 -7851.5151 8531.1924 -7851.3926 8529.9756 C
+f -7865.064 8532.4854 m
+-7865.8711 8531.4307 -7866.5942 8529.9863 Y
+-7866.4727 8531.2021 -7865.582 8532.0732 -7865.064 8532.4854 C
+f U 0 0.61 0.74 0 k
+-7850.5977 8554.4609 m
+-7851.9038 8549.7959 -7859.1816 8552.2217 Y
+-7859.1567 8552.2686 L
+-7866.436 8549.8428 -7867.7417 8554.5078 V
+-7872.0337 8567.0117 -7868.3018 8571.8633 V
+-7863.4487 8578.7686 -7860.4634 8578.7686 V
+-7857.875 8578.7227 L
+-7854.8887 8578.7227 -7850.0366 8571.8174 Y
+-7846.3042 8566.9639 -7850.5977 8554.4609 Y
+f u 1 Ap
+0.73 0.43 1 0.22 k
+0 R
+0 0 0 1 K
+-7854.6226 8557.2754 m
+-7853.813 8557.2754 -7853.1558 8556.6182 -7853.1558 8555.8096 c
+-7853.1558 8555 -7853.813 8554.3428 -7854.6226 8554.3428 c
+-7855.4321 8554.3428 -7856.0889 8555 -7856.0889 8555.8096 c
+-7856.0889 8556.6182 -7855.4321 8557.2754 -7854.6226 8557.2754 c
+b -7854.3638 8568.9971 m
+-7853.0806 8568.9971 -7852.0415 8568.1201 -7852.0415 8567.042 c
+-7852.0415 8565.9619 -7853.0806 8565.0869 -7854.3638 8565.0869 c
+-7855.645 8565.0869 -7856.6846 8565.9619 -7856.6846 8567.042 c
+-7856.6846 8568.1201 -7855.645 8568.9971 -7854.3638 8568.9971 c
+b -7853.834 8580.7861 m
+-7852.2817 8580.7861 -7851.0239 8580.1299 -7851.0239 8579.3213 c
+-7851.0239 8578.5117 -7852.2817 8577.8545 -7853.834 8577.8545 c
+-7855.3862 8577.8545 -7856.645 8578.5117 -7856.645 8579.3213 c
+-7856.645 8580.1299 -7855.3862 8580.7861 -7853.834 8580.7861 c
+b -7849.6104 8552.5264 m
+-7848.8687 8552.5264 -7848.2671 8551.8154 -7848.2671 8550.9365 c
+-7848.2671 8550.0596 -7848.8687 8549.3477 -7849.6104 8549.3477 c
+-7850.353 8549.3477 -7850.9546 8550.0596 -7850.9546 8550.9365 c
+-7850.9546 8551.8154 -7850.353 8552.5264 -7849.6104 8552.5264 c
+b -7848.0034 8574.083 m
+-7848.8818 8573.7354 -7849.1494 8572.335 -7848.603 8570.9541 c
+-7848.0566 8569.5752 -7846.9014 8568.7363 -7846.0234 8569.085 c
+-7845.145 8569.4326 -7844.877 8570.833 -7845.4233 8572.2139 c
+-7845.9702 8573.5947 -7847.125 8574.4316 -7848.0034 8574.083 c
+b u -7863.0566 8557.1592 m
+-7863.8662 8557.1592 -7864.5239 8556.502 -7864.5239 8555.6934 c
+-7864.5239 8554.8828 -7863.8662 8554.2266 -7863.0566 8554.2266 c
+-7862.248 8554.2266 -7861.5913 8554.8828 -7861.5913 8555.6934 c
+-7861.5913 8556.502 -7862.248 8557.1592 -7863.0566 8557.1592 c
+b -7863.3159 8568.8799 m
+-7864.5991 8568.8799 -7865.6382 8568.0049 -7865.6382 8566.9248 c
+-7865.6382 8565.8447 -7864.5991 8564.9697 -7863.3159 8564.9697 c
+-7862.0342 8564.9697 -7860.9951 8565.8447 -7860.9951 8566.9248 c
+-7860.9951 8568.0049 -7862.0342 8568.8799 -7863.3159 8568.8799 c
+b -7863.8457 8580.6709 m
+-7865.3975 8580.6709 -7866.6558 8580.0146 -7866.6558 8579.2041 c
+-7866.6558 8578.3936 -7865.3975 8577.7383 -7863.8457 8577.7383 c
+-7862.293 8577.7383 -7861.0352 8578.3936 -7861.0352 8579.2041 c
+-7861.0352 8580.0146 -7862.293 8580.6709 -7863.8457 8580.6709 c
+b -7868.0679 8552.4092 m
+-7868.811 8552.4092 -7869.4121 8551.6982 -7869.4121 8550.8213 c
+-7869.4121 8549.9443 -7868.811 8549.2334 -7868.0679 8549.2334 c
+-7867.3262 8549.2334 -7866.7241 8549.9443 -7866.7241 8550.8213 c
+-7866.7241 8551.6982 -7867.3262 8552.4092 -7868.0679 8552.4092 c
+b -7869.6758 8573.9678 m
+-7868.7983 8573.6201 -7868.5298 8572.2188 -7869.0762 8570.8379 c
+-7869.6226 8569.457 -7870.7778 8568.6201 -7871.6558 8568.9678 c
+-7872.5342 8569.3164 -7872.8032 8570.7178 -7872.2568 8572.0967 c
+-7871.7104 8573.4775 -7870.5552 8574.3154 -7869.6758 8573.9678 c
+b U U 0 Ap
+0 0 0 1 k
+-7859.1318 8552.6553 m
+-7859.1318 8585.3145 l
+F u -7843.3906 8538.5303 m
+-7844.0815 8537.8369 -7847.019 8538.7021 Y
+-7848.229 8538.874 -7848.0562 8541.2939 Y
+-7847.019 8543.3682 -7847.7104 8543.1943 Y
+-7848.2998 8543.1943 -7849.855 8543.1143 -7850.7822 8543.0635 C
+-7851.1226 8541.6689 -7852.6128 8540.4756 -7854.7217 8539.7695 C
+-7852.7578 8536.4775 -7854.5176 8535.7949 -7856.2935 8535.79 C
+-7856.3096 8535.7021 -7856.332 8535.6162 -7856.3599 8535.5332 C
+-7854.1089 8535.5791 -7853.6392 8533.2588 Y
+-7853.4048 8533.0635 -7853.1606 8532.7861 -7852.9238 8532.4756 C
+-7853.1416 8532.6475 -7853.2944 8532.7393 Y
+-7854.2583 8532.7393 -7855.8774 8534.4941 -7856.4966 8535.207 C
+-7856.9194 8534.4434 -7857.853 8533.9111 -7858.9434 8533.9111 c
+-7860.0698 8533.9111 -7861.0322 8534.4795 -7861.4312 8535.2852 C
+-7861.9985 8534.624 -7863.6968 8532.751 -7864.6943 8532.751 C
+-7864.8462 8532.6572 -7865.064 8532.4854 V
+-7864.8281 8532.7939 -7864.583 8533.0732 -7864.3481 8533.2686 C
+-7863.8638 8535.6563 -7861.5254 8535.5342 V
+-7861.5449 8535.5889 -7861.5674 8535.6436 -7861.5806 8535.7021 C
+-7864.9238 8535.6924 -7863.937 8538.3174 -7863.2104 8539.6602 C
+-7865.5918 8540.376 -7867.2646 8541.7012 -7867.5239 8543.25 C
+-7868.4473 8543.2998 -7869.6729 8543.3584 -7870.1802 8543.3584 C
+-7870.8726 8543.5313 -7869.835 8541.458 V
+-7869.6626 8539.0391 -7870.8726 8538.8662 V
+-7873.8096 8538.002 -7874.501 8538.6934 V
+-7875.1919 8539.5566 -7876.0562 8538.3467 V
+-7875.1919 8540.0752 -7873.291 8539.5566 V
+-7870.6982 8538.8662 -7871.3906 8540.5938 V
+-7871.9087 8544.0498 -7870.1802 8544.7402 V
+-7868.0342 8545.8545 -7866.2822 8546.0889 V
+-7865.9087 8546.4141 -7865.4639 8546.7109 -7864.958 8546.9766 C
+-7867.5562 8547.0469 -7870.2246 8547.9209 -7871.0752 8550.9561 C
+-7871.5151 8552.2432 -7872.0518 8554.2432 V
+-7873.1025 8554.8252 -7874.3022 8556.0078 -7875.541 8558.2627 C
+-7876.394 8561.4502 -7877.167 8556.7129 V
+-7878.3975 8553.6494 -7879.6504 8553.5381 V
+-7878.4702 8555.2871 -7878.9038 8556.416 V
+-7877.2998 8560.917 -7875.6138 8559.8994 V
+-7874.0986 8559.2197 -7872.688 8556.8154 V
+-7873.0698 8558.4971 -7873.4326 8560.417 -7873.6743 8562.3906 C
+-7874.4888 8562.3975 L
+-7876.3506 8561.4795 -7876.3262 8564.959 V
+-7877.1226 8568.9453 -7876.3594 8571.6826 V
+-7875.647 8574.1504 -7878.1274 8572.9307 V
+-7879.2842 8573.3242 -7879.9839 8572.7881 V
+-7882.3882 8571.4131 -7884 8573.124 V
+-7882.147 8572.8799 -7881.4482 8573.417 V
+-7879.9785 8573.5615 -7879.897 8574.1787 V
+-7876.9561 8574.8555 -7876.188 8574.0771 V
+-7874.417 8573.2139 -7875.1304 8570.3604 V
+-7875.8799 8562.4814 -7874.3198 8564.4053 V
+-7874.1182 8564.4219 -7873.8784 8564.5176 V
+-7874.1519 8568.4326 -7873.8018 8572.3252 -7871.9961 8574.8516 C
+-7875.4536 8567.333 -7870.2974 8552.3037 Y
+-7868.9609 8547.5303 -7863.127 8548.1016 -7860.145 8548.7344 C
+-7860.0718 8550.1299 -7859.8374 8551.9492 -7859.1318 8552.6553 C
+-7858.2134 8550.6963 -7858.2358 8549.0732 V
+-7857.0762 8548.7217 -7850.2817 8546.8447 -7847.4487 8550.3369 C
+-7848.4312 8547.8135 -7850.8262 8547.0186 -7853.2007 8546.9189 C
+-7852.667 8546.6318 -7852.2041 8546.3047 -7851.8257 8545.9502 C
+-7850.041 8545.7861 -7847.7104 8544.5771 Y
+-7845.9814 8543.8857 -7846.5015 8540.4307 Y
+-7847.1919 8538.7021 -7844.5991 8539.3936 Y
+-7842.7002 8539.9111 -7841.835 8538.1836 Y
+-7842.7002 8539.3936 -7843.3906 8538.5303 Y
+f -7837.9082 8572.9521 m
+-7838.6074 8573.4893 -7839.7632 8573.0938 Y
+-7842.2446 8574.3135 -7841.5327 8571.8467 Y
+-7840.769 8569.1104 -7841.564 8565.1221 Y
+-7841.541 8561.6445 -7843.4014 8562.5596 Y
+-7844.0342 8562.5557 L
+-7844.3198 8560.6123 -7844.7046 8558.7549 -7845.0898 8557.1699 C
+-7843.7129 8559.4199 -7842.2778 8560.0635 Y
+-7840.5913 8561.082 -7838.9878 8556.5791 Y
+-7839.4214 8555.4502 -7838.2417 8553.7021 Y
+-7839.4937 8553.8125 -7840.7246 8556.876 Y
+-7841.4976 8561.6152 -7842.3511 8558.4268 Y
+-7843.5776 8556.1904 -7844.769 8555.0098 -7845.814 8554.4229 C
+-7846.2026 8553.0635 -7846.4858 8552.2393 Y
+-7846.7002 8551.4727 -7847.0337 8550.8486 -7847.4487 8550.3369 C
+-7847.3799 8550.5127 -7847.3174 8550.6982 -7847.2632 8550.8916 C
+-7841.3022 8568.2588 -7846.4858 8574.9971 V
+-7853.2246 8584.5869 -7857.3721 8584.5869 V
+-7860.9663 8584.6514 L
+-7865.1138 8584.6514 -7871.853 8575.0615 Y
+-7871.9038 8574.9961 -7871.9463 8574.9219 -7871.9961 8574.8516 C
+-7871.7378 8575.4141 -7871.437 8575.9404 -7871.0752 8576.4092 C
+-7864.3359 8586 -7860.189 8586 V
+-7856.5942 8585.9346 L
+-7852.4482 8585.9346 -7845.709 8576.3447 Y
+-7843.5801 8573.5771 -7843.3306 8569.0176 -7843.7769 8564.6055 C
+-7843.6553 8564.5752 -7843.5698 8564.5684 Y
+-7842.0112 8562.6475 -7842.7598 8570.5244 Y
+-7843.4746 8573.3789 -7841.7026 8574.2402 Y
+-7840.9351 8575.0186 -7837.9946 8574.3428 Y
+-7837.9136 8573.7256 -7836.4434 8573.5811 Y
+-7835.7446 8573.0449 -7833.8921 8573.2881 Y
+-7835.5024 8571.5771 -7837.9082 8572.9521 Y
+f U U U %AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 34)
+0 A
+u 800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+-7884.0254 8586.0264 m
+-7828.0542 8586.0264 L
+-7828.0542 8524.5342 L
+-7884.0254 8524.5342 L
+-7884.0254 8586.0264 L
+n u u 0 O
+0.0745 0.9 0.9019 0.18 k
+0 R
+0 0 0 1 K
+1 J 1 j 0.0518 w -7857.5991 8562.7217 m
+-7857.3594 8573.5215 -7862.8794 8583.8398 v
+-7862.4009 8586 -7860.959 8586 v
+-7861.2002 8582.6406 -7860.2393 8582.1611 v
+-7855.9199 8570.1602 -7856.6382 8562.2402 v
+-7857.5991 8562.7217 l
+b -7857.5991 8562.7217 m
+-7859.2793 8568 -7871.0391 8569.2012 v
+-7875.3594 8569.6807 -7875.5991 8571.1211 v
+-7869.1206 8561.5195 -7868.1602 8561.7607 v
+-7881.3594 8556.001 -7884 8550.7197 v
+-7878.959 8553.6006 -7875.5991 8551.4404 v
+-7867.6802 8551.2012 -7862.6406 8553.3613 v
+-7858.8008 8555.2813 -7866.7202 8539.2012 v
+-7862.8794 8550.9609 -7859.2793 8524.5605 v
+-7858.3198 8529.8408 -7856.8799 8531.2813 v
+-7850.8799 8538.9609 -7851.8398 8541.1211 v
+-7852.3198 8544.9609 -7847.7598 8538.7207 v
+-7848 8548.3213 -7850.4009 8551.6807 v
+-7852.5591 8555.2813 -7846.5591 8553.1211 v
+-7840.5591 8551.2012 -7835.2793 8552.8809 v
+-7829.7598 8554.3203 -7828.0801 8551.4404 v
+-7839.8398 8563.9209 -7845.5991 8563.6807 v
+-7843.9194 8567.2813 l
+-7841.519 8572.0811 -7842 8573.2813 v
+-7857.2681 8563.8828 -7857.5991 8562.7217 v
+b -7857.5991 8562.7217 m
+-7854.959 8544.2402 -7857.5991 8536.5605 v
+-7859.998 8526.001 -7859.2793 8524.5605 v
+S -7856.1602 8551.4404 m
+-7850.1602 8546.6406 -7848.959 8541.3604 v
+S -7856.1602 8550.7197 m
+-7865.0391 8543.041 -7866.7202 8539.2012 v
+S -7828.0801 8551.4404 m
+-7829.2793 8553.6006 -7857.3594 8561.7607 y
+-7862.4009 8556.2422 -7873.9199 8553.8408 v
+-7881.5986 8552.8809 -7884 8550.7197 v
+S -7874.6382 8569.6807 m
+-7863.1191 8560.5615 -7857.3594 8561.7607 y
+-7843.1992 8568 -7842 8573.2813 v
+S U U U %AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 36)
+0 A
+u 800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+-7883.8496 8585.9961 m
+-7833.96 8585.9961 L
+-7833.96 8534.9258 L
+-7883.8496 8534.9258 L
+-7883.8496 8585.9961 L
+n u 0 O
+0.025 0.1 0.475 0 k
+-7862.1504 8553.9043 m
+-7864.4766 8552.8125 -7866.6914 8552.4434 -7868.373 8552.9238 c
+-7869.0518 8553.1172 -7869.645 8553.4473 -7870.123 8553.9238 c
+-7870.6006 8554.4023 -7870.9297 8554.9951 -7871.123 8555.6729 c
+-7872.0088 8558.7715 -7870.0103 8563.6777 -7865.9233 8567.7666 c
+-7861.834 8571.8535 -7856.9297 8573.8516 -7853.8286 8572.9668 c
+-7853.1519 8572.7715 -7852.5586 8572.4424 -7852.0806 8571.9658 c
+-7851.603 8571.4883 -7851.2754 8570.8955 -7851.082 8570.2168 c
+-7850.5176 8568.2461 -7851.1226 8565.5449 -7852.6855 8562.7891 c
+-7853.582 8561.21 -7854.791 8559.6133 -7856.2793 8558.123 c
+-7858.1504 8556.2539 -7860.1914 8554.8242 -7862.1504 8553.9043 c
+f u 0.0035 0.014 0.0665 0 k
+-7861.2183 8552.9727 m
+-7863.8306 8552.0215 -7866.3975 8551.9688 -7868.373 8552.9238 C
+-7866.6914 8552.4434 -7864.4766 8552.8125 -7862.1504 8553.9043 c
+-7861.6191 8554.1543 -7861.0806 8554.4434 -7860.543 8554.7676 C
+-7858.8984 8554.0537 L
+-7859.667 8553.6172 -7860.4434 8553.2539 -7861.2183 8552.9727 c
+f 0.015 0.06 0.285 0 k
+-7858.8984 8554.0537 m
+-7860.543 8554.7676 L
+-7859.0962 8555.6348 -7857.6426 8556.7607 -7856.2793 8558.123 c
+-7856.1538 8558.25 -7856.0327 8558.3779 -7855.9102 8558.5059 C
+-7855.2153 8556.8633 L
+-7856.3706 8555.7236 -7857.6191 8554.7813 -7858.8984 8554.0537 C
+f U u 0.039 0.156 0.741 0 k
+-7849.687 8541.4043 m
+-7849.9746 8541.6914 -7861.2183 8552.9727 Y
+-7860.4434 8553.2539 -7859.667 8553.6172 -7858.8984 8554.0537 C
+-7845.4146 8540.5703 L
+-7847.061 8540.0996 -7848.6406 8540.3555 -7849.687 8541.4043 c
+f 0.025 0.1 0.475 0 k
+-7845.4146 8540.5703 m
+-7858.8984 8554.0537 L
+-7857.584 8554.8027 -7856.2969 8555.7754 -7855.1143 8556.957 c
+-7855.084 8556.9863 -7855.0586 8557.0156 -7855.0278 8557.0449 C
+-7841.3408 8543.3574 L
+-7841.5264 8543.1328 -7841.7202 8542.9141 -7841.9302 8542.7012 c
+-7843.0103 8541.623 -7844.2305 8540.9082 -7845.4146 8540.5703 C
+f U u 0.0115 0.046 0.2185 0 k
+-7835.9346 8550.3926 m
+-7833.5337 8547.9893 -7833.335 8544.0898 -7835.1382 8540.6973 C
+-7836.2954 8541.1182 L
+-7834.0938 8544.4961 -7833.8398 8548.2949 -7835.9346 8550.3926 c
+f 0.015 0.06 0.285 0 k
+-7843.5337 8535.5957 m
+-7842.582 8534.9258 L
+-7845.2046 8534.3516 -7847.8306 8534.9141 -7849.6206 8536.7061 c
+-7848.1719 8535.2578 -7845.9082 8534.9307 -7843.5337 8535.5957 C
+f 0.0295 0.118 0.5605 0 k
+-7843.5337 8535.5957 m
+-7845.9082 8534.9307 -7848.1719 8535.2578 -7849.6206 8536.7061 c
+-7851.019 8538.1055 -7851.3706 8540.2637 -7850.7954 8542.5469 C
+-7848.8672 8539.5449 -7845.4082 8540.5537 V
+-7843.585 8535.6309 L
+-7843.5337 8535.5957 L
+f *u
+0.048 0.192 0.912 0 k
+1 D
+-7835.9346 8550.3926 m
+-7837.2817 8551.7383 -7839.332 8552.1133 -7841.5234 8551.627 C
+-7851.6714 8561.7734 L
+-7851.7695 8561.5684 -7851.7695 8561.5684 -7851.6714 8561.7734 c
+-7850.2246 8564.8145 -7849.9702 8567.916 -7851.082 8570.2168 C
+-7850.5176 8568.2461 -7851.1226 8565.5449 -7852.6855 8562.7891 c
+-7853.5054 8561.3438 -7854.5918 8559.8848 -7855.9102 8558.5059 C
+-7855.2153 8556.8633 L
+-7855.1816 8556.8945 -7855.1465 8556.9238 -7855.1143 8556.957 c
+-7855.084 8556.9883 -7855.0566 8557.0176 -7855.0273 8557.0469 c
+-7855.0278 8557.0469 -7855.0278 8557.0469 -7855.0278 8557.0449 C
+-7841.3408 8543.3574 L
+-7836.3262 8541.1289 L
+-7836.2954 8541.1182 L
+-7834.0938 8544.4961 -7833.8398 8548.2949 -7835.9346 8550.3926 c
+f *U
+0.0215 0.086 0.4085 0 k
+0 D
+-7842.582 8534.9258 m
+-7843.5337 8535.5957 L
+-7841.6846 8536.1113 -7839.7656 8537.2285 -7838.1138 8538.8828 c
+-7837.4063 8539.5889 -7836.7998 8540.3418 -7836.2954 8541.1182 C
+-7835.1382 8540.6973 L
+-7835.6553 8539.7246 -7836.3374 8538.793 -7837.1802 8537.9512 c
+-7838.7695 8536.3594 -7840.6758 8535.3428 -7842.582 8534.9258 C
+f 0.0205 0.082 0.3895 0 k
+-7836.2954 8541.1182 m
+-7836.7998 8540.3418 -7837.4063 8539.5889 -7838.1138 8538.8828 c
+-7839.7656 8537.2285 -7841.6846 8536.1113 -7843.5337 8535.5957 C
+-7843.585 8535.6309 L
+-7845.4082 8540.5537 L
+-7844.2114 8540.9219 -7842.9878 8541.6436 -7841.9302 8542.7012 c
+-7841.7202 8542.9141 -7841.5264 8543.1328 -7841.3408 8543.3574 C
+-7836.3262 8541.1289 L
+-7836.2954 8541.1182 L
+f U u 0.445 0.356 0.267 0 k
+-7883.8496 8585.9961 m
+-7861.957 8562.9688 L
+-7862.2007 8562.6494 -7862.5752 8562.6133 -7862.8887 8562.6592 C
+-7867.1802 8567.2891 -7878.3145 8579.4561 -7882.7266 8584.2793 C
+-7883.5649 8585.3516 -7884 8585.9932 -7883.8496 8585.9961 C
+f 0.15 0.12 0.09 0 k
+-7883.834 8585.9961 m
+-7882.6606 8585.7031 -7861.6934 8564.0029 Y
+-7861.6934 8563.502 -7861.7993 8563.1758 -7861.957 8562.9688 C
+-7883.8496 8585.9961 L
+-7883.8442 8585.9961 -7883.8418 8586 -7883.834 8585.9961 c
+f 0.2 0.16 0.12 0 k
+-7882.7266 8584.2793 m
+-7878.3145 8579.4561 -7867.1802 8567.2891 -7862.8887 8562.6592 C
+-7863.2002 8562.7041 -7863.4526 8562.8301 Y
+-7864.603 8563.1328 -7878.5742 8578.9619 -7882.7266 8584.2793 C
+f U U U %AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 37)
+0 A
+u 800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+-7882.9502 8585.2324 m
+-7833.0391 8585.2324 L
+-7833.0391 8521.1152 L
+-7882.9502 8521.1152 L
+-7882.9502 8585.2324 L
+n u 0 O
+0 0 0 1 k
+0 R
+0 0 0 1 K
+0 w -7833.2358 8521.1152 m
+-7833.6064 8521.248 -7833.9858 8521.2832 -7834.3833 8521.2031 c
+-7834.4863 8521.168 l
+-7834.5254 8521.1602 -7834.5703 8521.1787 -7834.6025 8521.1992 c
+-7834.9434 8521.3926 l
+-7838.7129 8523.2959 -7842.0962 8525.8965 -7844.5 8529.4473 c
+-7845.9634 8531.5918 -7847.123 8533.8789 -7848.7993 8535.8564 c
+-7849.1729 8536.209 -7849.1758 8536.7725 -7848.834 8537.1309 c
+-7848.4951 8537.501 -7847.918 8537.5078 -7847.561 8537.165 c
+-7847.4038 8537.21 l
+-7847.2642 8537.1289 -7847.0742 8537.0703 -7847.0234 8536.957 c
+-7845.853 8534.2031 -7845.1895 8531.5137 -7843.4336 8529.1387 c
+-7841.1719 8526.0947 -7838.1777 8523.9941 -7835.0298 8522.0234 c
+-7834.3672 8521.6055 L
+-7834.4966 8521.6348 L
+-7833.7695 8521.6426 l
+-7833.791 8521.6113 -7833.8008 8521.5957 -7833.8223 8521.5645 C
+-7833.6064 8521.5234 -7833.377 8521.4746 -7833.1626 8521.4336 c
+-7833.0762 8521.4238 -7833.0186 8521.3389 -7833.0391 8521.2383 c
+-7833.0503 8521.1523 -7833.1382 8521.1084 -7833.2358 8521.1152 c
+-7833.2358 8521.1152 l
+b -7849.2222 8534.9951 m
+-7849.5742 8534.8066 -7849.9658 8534.6719 -7850.248 8534.3887 c
+-7856.4521 8528.1719 -7866.6802 8527.2734 -7874.0488 8533.6855 C
+-7874.1582 8533.7813 -7874.1582 8533.957 -7874.063 8534.0645 C
+-7871.0527 8532.9434 -7862.8838 8534.375 -7859.3223 8537.4121 C
+-7859.2534 8537.4668 -7859.1465 8537.4531 -7859.1055 8537.3711 C
+-7859.0503 8537.3047 -7859.0664 8537.1953 -7859.1328 8537.1563 C
+-7862.5625 8534.0859 -7867.0674 8532.29 -7871.6729 8532.748 C
+-7868.8535 8531.1855 -7865.6313 8530.4941 -7862.3984 8530.6885 c
+-7857.7144 8530.9717 -7853.4634 8533.1191 -7849.3711 8535.2793 c
+-7849.291 8535.3193 -7849.1978 8535.293 -7849.1553 8535.2109 C
+-7849.1016 8535.1309 -7849.1426 8535.0352 -7849.2222 8534.9951 c
+b -7858.647 8536.3359 m
+-7860.2266 8540.3613 -7862.3911 8544.3203 -7865.8018 8547.0762 c
+-7865.9648 8547.2119 -7865.9946 8547.4492 -7865.8711 8547.6055 c
+-7865.7344 8547.7676 -7865.5049 8547.7793 -7865.3481 8547.6563 c
+-7861.123 8545.5967 -7858.1904 8541.1309 -7858.1626 8536.4014 c
+-7858.1626 8536.4014 l
+-7858.1328 8536.2676 -7858.2354 8536.1348 -7858.3633 8536.1221 c
+-7858.5039 8536.1055 -7858.6318 8536.1973 -7858.647 8536.3359 c
+-7858.647 8536.3359 l
+b -7852.9414 8541.0176 m
+-7853.042 8541.1816 -7853.1152 8541.3838 -7853.2617 8541.4824 c
+-7856.0806 8543.3906 -7858.9785 8544.6309 -7861.8848 8546.1328 c
+-7862.0503 8546.209 -7862.1118 8546.418 -7862.0313 8546.5703 c
+-7861.9512 8546.7227 -7861.7559 8546.7793 -7861.5898 8546.7041 c
+-7858.439 8545.3232 -7854.313 8544.5 -7852.6729 8541.1797 c
+-7852.6289 8541.1113 -7852.6455 8541.0146 -7852.7266 8540.9648 c
+-7852.7959 8540.9199 -7852.897 8540.9492 -7852.9414 8541.0176 c
+-7852.9414 8541.0176 l
+b -7852.6602 8541.918 m
+-7852.4438 8542.4297 -7852.1431 8542.8896 -7852.0503 8543.4355 c
+-7851.2183 8548.2773 -7851.1152 8553.042 -7852.248 8557.6875 c
+-7852.248 8557.6875 l
+-7852.3418 8557.9531 -7852.2114 8558.2441 -7851.9438 8558.3389 c
+-7851.6777 8558.4336 -7851.3882 8558.3125 -7851.2935 8558.0479 c
+-7849.293 8552.8115 -7849.897 8546.7373 -7852.3711 8541.7832 c
+-7852.4063 8541.7002 -7852.498 8541.6689 -7852.582 8541.6914 c
+-7852.6641 8541.7275 -7852.6978 8541.835 -7852.6602 8541.918 c
+-7852.6602 8541.918 l
+b -7851.5352 8557.5938 m
+-7848.8984 8555.2275 -7846.6816 8552.252 -7845.853 8548.7363 c
+-7845.853 8548.7363 l
+-7845.7246 8548.1816 -7846.0742 8547.623 -7846.6416 8547.4902 c
+-7847.1992 8547.375 -7847.7578 8547.7246 -7847.8862 8548.2793 c
+-7848.5649 8551.5313 -7849.8711 8554.6729 -7851.7954 8557.3867 c
+-7851.7954 8557.3867 l
+-7851.8462 8557.4551 -7851.834 8557.5576 -7851.7695 8557.6201 c
+-7851.6992 8557.6699 -7851.5977 8557.6582 -7851.5352 8557.5938 c
+-7851.5352 8557.5938 l
+b -7836.3711 8550.1826 m
+-7837.7114 8545.8301 -7840.2598 8542.0693 -7843.689 8539.1533 C
+-7843.729 8539.0723 -7843.8242 8539.0322 -7843.9038 8539.0859 C
+-7843.9863 8539.127 -7844.0122 8539.2207 -7843.9722 8539.3018 C
+-7843.957 8539.7891 -7843.7144 8540.2334 -7843.4458 8540.5313 c
+-7838.4063 8546.1621 -7834.9902 8554.7197 -7837.3433 8561.9551 C
+-7837.0762 8556.4512 -7838.7241 8550.3008 -7842.1362 8545.6738 c
+-7843.1606 8544.2695 -7844.7422 8544.1211 -7846.3081 8544.2031 C
+-7846.4023 8544.1895 -7846.4834 8544.2432 -7846.4961 8544.3369 c
+-7846.5098 8544.4189 -7846.4551 8544.5137 -7846.3623 8544.5254 C
+-7843.1479 8545.7695 -7841.4878 8549.2246 -7840.084 8552.1943 c
+-7838.415 8555.7441 -7837.7017 8559.6387 -7838.0054 8563.5 C
+-7838.0454 8563.6777 -7838.1138 8565.3975 -7837.9775 8565.4102 C
+-7837.8306 8565.4395 -7837.709 8565.3438 -7837.6802 8565.1943 C
+-7837.645 8565.0449 -7834.6426 8555.7988 -7836.3711 8550.1826 c
+b -7844.4863 8537.4912 m
+-7843.3945 8533.6211 -7841.1094 8530.251 -7838.4824 8527.2383 c
+-7838.3306 8527.1045 -7838.3145 8526.8867 -7838.4502 8526.7354 c
+-7838.5752 8526.6006 -7838.8047 8526.582 -7838.957 8526.7178 c
+-7842.3306 8529.332 -7843.4487 8533.541 -7844.7954 8537.375 c
+-7844.7954 8537.375 l
+-7844.8262 8537.4648 -7844.7754 8537.5586 -7844.6982 8537.5869 c
+-7844.6094 8537.6191 -7844.5166 8537.5684 -7844.4863 8537.4912 c
+-7844.4863 8537.4912 l
+b -7838.5313 8562.1094 m
+-7838.5991 8562.0566 -7838.707 8562.083 -7838.748 8562.1504 C
+-7838.9634 8562.4746 -7840.6914 8564.5195 -7841.3926 8565.1406 c
+-7846.1719 8569.3945 -7849.5137 8573.9609 -7857.5391 8577.7227 c
+-7864.4512 8580.9639 -7867.1113 8583.5957 -7874.3862 8581.8262 c
+-7877.687 8581.0293 -7879.0313 8580.5313 -7880.4351 8575.4551 C
+-7881.9473 8569.2988 -7880.8672 8571.7832 -7881.084 8564.4385 c
+-7881.2222 8559.6973 -7884 8548.4551 -7871.5254 8534.2598 C
+-7871.4199 8534.1484 -7871.4336 8533.9961 -7871.5337 8533.9072 C
+-7871.6328 8533.8027 -7871.7959 8533.8164 -7871.8862 8533.916 C
+-7877.5786 8538.7168 -7881.0234 8545.6582 -7882.3145 8552.9424 c
+-7883.2871 8558.4668 -7882.9199 8563.25 -7882.666 8569.6367 c
+-7882.5688 8572.0938 -7883.6855 8579.0723 -7878.9102 8583.0625 c
+-7875.3926 8586 -7870.3911 8585.5469 -7866.3545 8584.1563 c
+-7860.6992 8582.2119 -7855.9727 8579.1465 -7850.8711 8575.6094 c
+-7847.2656 8573.125 -7839.2881 8563.2852 -7838.4785 8562.3262 C
+-7838.4351 8562.2588 -7838.4502 8562.1504 -7838.5313 8562.1094 C
+b -7873.0503 8549.3057 m
+-7872.168 8548.5029 -7871.7017 8549.8457 -7871.4297 8550.6016 c
+-7871.1626 8551.3574 -7870.189 8551.25 -7870.5127 8551.5732 c
+-7870.8369 8551.8975 -7870.8369 8551.9521 -7871.3232 8551.5195 c
+-7871.8086 8551.0879 -7871.8086 8551.7363 -7872.5649 8551.25 c
+-7873.3198 8550.7627 -7873.645 8549.8457 -7873.0503 8549.3057 c
+b -7865.6519 8553.9492 m
+-7865.3657 8553.5918 -7864.6802 8553.5723 -7864.4648 8553.8945 c
+-7864.25 8554.2197 -7863.3306 8554.2734 -7863.4937 8554.5967 c
+-7863.6543 8554.9219 -7863.6016 8555.1387 -7864.0874 8554.9219 c
+-7864.5737 8554.7051 -7864.4121 8555.2998 -7864.897 8555.084 c
+-7865.3833 8554.8672 -7865.8687 8554.2197 -7865.6519 8553.9492 c
+b -7857.6074 8559.0791 m
+-7857.1206 8558.7559 -7855.8794 8559.5117 -7856.4727 8559.5117 c
+-7857.0674 8559.5117 -7856.311 8560.2676 -7856.8521 8560.4834 c
+-7857.3906 8560.6992 -7857.2832 8560.4297 -7857.6074 8560.6445 c
+-7857.9297 8560.8613 -7858.3633 8561.2393 -7858.5239 8560.4297 c
+-7858.6855 8559.6191 -7858.3633 8559.6191 -7857.9849 8559.3496 c
+-7857.6074 8559.0791 -7857.6074 8559.0791 y
+b -7872.2402 8559.3496 m
+-7871.1074 8559.2422 -7871.8633 8559.998 -7871.269 8560.4834 c
+-7870.6738 8560.9697 -7869.918 8561.6172 -7870.729 8561.4004 c
+-7871.5391 8561.1855 -7872.9961 8561.6719 -7872.9434 8560.5381 c
+-7872.8887 8559.4033 -7872.6328 8559.3867 -7872.2402 8559.3496 c
+b -7866.5703 8567.6113 m
+-7866.1016 8567.3438 -7866.6802 8567.7197 -7866.0303 8567.6113 c
+-7865.3833 8567.5039 -7864.7886 8567.6113 -7865.2207 8567.8281 c
+-7865.6519 8568.0439 -7866.3008 8568.1523 -7866.4634 8567.9893 c
+-7866.625 8567.8281 -7866.9473 8567.8281 -7866.5703 8567.6113 c
+b -7857.0674 8567.1797 m
+-7857.4785 8566.1797 -7856.0962 8566.4238 -7855.4473 8566.7461 c
+-7854.7998 8567.0723 -7853.8262 8566.4775 -7854.4209 8566.9102 c
+-7855.0137 8567.3418 -7854.7998 8566.9102 -7855.3926 8567.2334 c
+-7855.9873 8567.5566 -7856.6895 8568.0977 -7857.0674 8567.1797 c
+b -7872.6738 8573.0664 m
+-7872.7222 8572.0752 -7871.8086 8572.957 -7871.269 8573.0117 c
+-7870.729 8573.0664 -7870.0801 8573.0664 -7870.2432 8573.2813 c
+-7870.4038 8573.498 -7870.459 8573.498 -7871.1626 8573.7129 c
+-7871.8633 8573.9297 -7872.6191 8574.1445 -7872.6738 8573.0664 c
+b -7873.1582 8567.6113 m
+-7874.0664 8567.9746 -7874.293 8567.8809 -7874.5625 8568.2051 c
+-7874.834 8568.5293 -7875.1558 8569.2314 -7875.5352 8568.0977 c
+-7875.9121 8566.9629 -7875.4282 8565.7764 -7875.0479 8565.9375 c
+-7874.6714 8566.0996 -7874.293 8566.7461 -7873.8618 8566.9629 c
+-7873.4297 8567.1797 -7872.6191 8567.3945 -7873.1582 8567.6113 c
+b U U %AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 41)
+0 A
+u 800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+-7884 8586 m
+-7803 8586 L
+-7803 8481 L
+-7884 8481 L
+-7884 8586 L
+n u u u 0 O
+0 0 0 1 k
+-7865.8057 8498.4258 m
+-7866.0742 8496.6621 -7867.1602 8495.291 -7868.5239 8495.3965 c
+-7869.8862 8495.502 -7870.707 8497.0234 -7870.7432 8498.8066 c
+-7870.748 8499.0693 -7870.6743 8500.2441 -7870.6304 8500.4775 C
+-7870.6382 8500.582 -7870.6191 8500.6738 -7870.6104 8500.7803 c
+-7870.5142 8502.0254 -7869.3574 8503.3604 -7867.9414 8503.25 c
+-7866.5249 8503.1406 -7865.4897 8501.8613 -7865.6367 8500.4727 c
+-7865.644 8500.4072 -7865.6958 8499.626 -7865.707 8499.5625 C
+-7865.6816 8499.2852 -7865.7598 8498.7256 -7865.8057 8498.4258 c
+f -7876.2646 8507.7334 m
+-7876.9946 8515.916 -7871.5015 8515.1191 v
+-7868.3682 8514.0186 -7869.4414 8511.1211 v
+-7869.6426 8509.752 -7871.7847 8508.498 v
+-7872.146 8508.25 -7872.7632 8507.1016 v
+-7873.1294 8505.5977 -7874.5186 8505.2979 v
+-7876.0762 8505.251 -7876.2646 8507.7334 v
+f -7850.7646 8516.4971 m
+F -7850.0762 8514.3408 m
+-7850.7847 8513.1934 -7853.8848 8513.6279 Y
+-7854.811 8513.6885 -7855.3799 8513.1113 Y
+-7857.8394 8509.0918 -7861.0386 8509.8857 -7861.4082 8509.9932 C
+-7861.4097 8509.9863 L
+-7864.999 8510.6045 -7865.2666 8515.6035 V
+-7865.4912 8516.3828 -7866.335 8516.7695 V
+-7869.2695 8517.8613 -7869.3481 8519.208 V
+-7869.8999 8521.1152 -7867.6006 8521.7422 V
+-7865.6792 8522.2568 -7863.7886 8519.8945 V
+-7862.6113 8518.6797 -7859.5762 8517.9395 V
+-7859.5728 8517.9531 L
+-7856.3594 8517.0459 -7854.6392 8517.5889 Y
+-7851.8521 8518.7676 -7850.4063 8517.4014 Y
+-7848.6826 8515.7559 -7850.0762 8514.3408 Y
+f -7863.9834 8497.8789 m
+-7864.5854 8496.2002 -7864.2822 8494.4775 -7863.0327 8493.9229 c
+-7861.7842 8493.3672 -7860.3384 8494.3164 -7859.4585 8495.8672 c
+-7859.3286 8496.0957 -7858.8359 8497.165 -7858.7632 8497.3906 C
+-7858.7065 8497.4785 -7858.6792 8497.5684 -7858.6362 8497.667 c
+-7858.1289 8498.8086 -7858.5122 8500.5303 -7859.8105 8501.1074 c
+-7861.1089 8501.6855 -7862.6279 8501.0527 -7863.1582 8499.7617 c
+-7863.1831 8499.7002 -7863.5078 8498.9883 -7863.5298 8498.9268 C
+-7863.6831 8498.6963 -7863.8809 8498.166 -7863.9834 8497.8789 c
+f -7849.7129 8500.9316 m
+-7845.1802 8507.7822 -7850.3911 8509.6943 v
+-7853.6714 8510.2168 -7854.103 8507.1572 v
+-7854.5786 8505.8564 -7853.29 8503.7354 v
+-7853.0903 8503.3447 -7853.0938 8502.04 v
+-7853.4858 8500.5449 -7852.4082 8499.6182 v
+-7851.0591 8498.8359 -7849.7129 8500.9316 v
+f U u -7824.7358 8550.1074 m
+-7824.3687 8548.3623 -7824.9048 8546.6963 -7826.2183 8546.3164 c
+-7827.5322 8545.9375 -7828.8345 8547.0752 -7829.4937 8548.7324 c
+-7829.5903 8548.9775 -7829.9326 8550.1025 -7829.9746 8550.3369 C
+-7830.0176 8550.4326 -7830.0322 8550.5244 -7830.0625 8550.6279 c
+-7830.4087 8551.8271 -7829.7935 8553.4805 -7828.4282 8553.875 c
+-7827.063 8554.2695 -7825.645 8553.4365 -7825.2969 8552.085 c
+-7825.2793 8552.0205 -7825.0552 8551.2705 -7825.0425 8551.207 C
+-7824.9214 8550.9551 -7824.7983 8550.4053 -7824.7358 8550.1074 c
+f -7838.2705 8554.6172 m
+-7841.8242 8562.0244 -7836.3999 8563.2061 v
+-7833.0801 8563.2754 -7833.0688 8560.1846 v
+-7832.7778 8558.8311 -7834.3433 8556.9072 v
+-7834.5942 8556.5459 -7834.7695 8555.2539 v
+-7834.5854 8553.7188 -7835.7793 8552.9492 v
+-7837.2222 8552.3594 -7838.2705 8554.6172 v
+f -7817.4648 8571.7695 m
+F -7816.063 8569.9912 m
+-7816.3247 8568.6689 -7819.3799 8567.9883 Y
+-7820.27 8567.7197 -7820.5986 8566.9795 Y
+-7821.4922 8562.3535 -7824.7666 8561.9746 -7825.1494 8561.9453 C
+-7825.1494 8561.9395 L
+-7828.7271 8561.2588 -7830.731 8565.8467 V
+-7831.2153 8566.4961 -7832.1416 8566.5625 V
+-7835.272 8566.5557 -7835.8169 8567.7891 V
+-7837.0039 8569.3809 -7835.0713 8570.7764 V
+-7833.4526 8571.9316 -7830.853 8570.3818 V
+-7829.3242 8569.6582 -7826.2222 8570.0293 V
+-7826.2231 8570.042 L
+-7822.896 8570.3213 -7821.4766 8571.4326 Y
+-7819.2793 8573.5146 -7817.4463 8572.7432 Y
+-7815.2554 8571.8057 -7816.063 8569.9912 Y
+f -7822.8374 8550.2354 m
+-7822.813 8548.4512 -7821.9258 8546.9453 -7820.5601 8546.8633 c
+-7819.1943 8546.7803 -7818.1743 8548.1768 -7817.895 8549.9385 c
+-7817.854 8550.1973 -7817.7666 8551.3711 -7817.7778 8551.6094 C
+-7817.7559 8551.7109 -7817.7617 8551.8037 -7817.7559 8551.9121 c
+-7817.6807 8553.1592 -7818.644 8554.6367 -7820.0625 8554.7217 c
+-7821.4814 8554.8066 -7822.6826 8553.6826 -7822.7246 8552.2871 c
+-7822.7271 8552.2217 -7822.7822 8551.4404 -7822.7798 8551.375 C
+-7822.8433 8551.1045 -7822.8423 8550.54 -7822.8374 8550.2354 c
+f -7811.0186 8557.5625 m
+-7809.1777 8565.5684 -7814.7271 8565.5303 v
+-7817.9834 8564.8691 -7817.3154 8561.8516 v
+-7817.3032 8560.4668 -7815.353 8558.9326 v
+-7815.0278 8558.6377 -7814.5742 8557.415 v
+-7814.417 8555.876 -7813.083 8555.3877 v
+-7811.5454 8555.1279 -7811.0186 8557.5625 v
+f U U 1 Ap
+-7884 8586 m
+-7884 8481 L
+-7803 8481 L
+-7803 8586 L
+-7884 8586 L
+n U U %AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 42)
+0 A
+u 0 Ap
+800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+-7857.4609 8559.085 m
+-7885 8559.085 L
+-7885 8586.624 L
+-7857.4609 8586.624 L
+-7857.4609 8559.085 L
+n 0 O
+0 0.55 1 0.12 k
+-7871.7598 8577.3623 m
+-7871.7598 8587 L
+-7870.6343 8587 L
+-7870.6343 8577.3623 L
+-7871.7598 8577.3623 L
+f 0 0.55 1 0.3 k
+-7875.4233 8572.876 m
+-7874.3096 8571.1553 -7870.8809 8569.457 -7866.4966 8569.457 c
+-7862.1152 8569.457 -7858.6138 8571.1064 -7857.5718 8572.874 C
+-7857.5718 8572.874 L
+-7858.6138 8574.6006 -7862.1152 8576.2979 -7866.4966 8576.2979 c
+-7870.875 8576.2979 -7874.3242 8574.5615 -7875.4233 8572.876 C
+f U %AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 45)
+0 A
+u 800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+-7885 8543.918 m
+-7885 8587 L
+-7798.2217 8587 L
+-7798.2217 8543.918 L
+-7885 8543.918 L
+n u u 0 O
+0 0 0 1 k
+-7825.2217 8573.2363 m
+-7825.2217 8581.0742 L
+-7813.2217 8574.1445 L
+-7801.2217 8567.2168 L
+-7813.2217 8560.2891 L
+-7825.2217 8553.3613 L
+-7825.2217 8561.4824 L
+-7883.9351 8547.7168 L
+-7870.9878 8566.8027 L
+-7885 8587 L
+-7825.2217 8573.2363 L
+f 0 1 1 0.1 k
+0 R
+0 0 0 1 K
+-7823.2217 8570.2363 m
+-7823.2217 8578.0742 L
+-7811.2217 8571.1445 L
+-7799.2217 8564.2168 L
+-7811.2217 8557.2891 L
+-7823.2217 8550.3613 L
+-7823.2217 8558.4824 L
+-7881.9351 8544.7168 L
+-7867.2754 8564.3594 L
+-7881.9351 8584 L
+-7823.2217 8570.2363 L
+b U U U %AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 50)
+0 A
+u 800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+-7884 8586 m
+-7756.877 8586 L
+-7756.877 8538.415 L
+-7884 8538.415 L
+-7884 8586 L
+n u *u
+0 O
+0.9529 0.949 0.1961 0.0745 k
+-7857.793 8570.417 m
+-7857.8232 8570.2676 L
+-7859.9849 8564.3643 -7860.9438 8561.6377 -7861.2754 8560.2891 c
+-7861.3657 8560.2891 L
+-7861.6953 8561.6074 -7862.7754 8564.335 -7864.9673 8570.2676 c
+-7864.9966 8570.417 L
+-7857.793 8570.417 l
+f 1 D
+-7868.1182 8578.9678 m
+-7869.6191 8582.5371 -7870.3994 8584.709 -7868.1182 8584.917 c
+-7868.1182 8585.9678 L
+-7870.6992 8585.9375 -7873.5806 8585.917 -7876.3418 8585.917 c
+-7880.0649 8585.917 -7882.5273 8585.9375 -7884 8585.9678 c
+-7884 8584.917 L
+-7882.1064 8584.709 -7881.0542 8582.5674 -7873.5513 8565.5029 c
+-7861.6953 8538.415 L
+-7859.8638 8538.415 L
+-7848.1582 8565.5029 L
+-7840.8047 8582.5078 -7839.7246 8584.709 -7837.8887 8584.917 c
+-7837.8887 8585.9678 L
+-7839.5142 8585.9375 -7841.916 8585.917 -7845.5767 8585.917 c
+-7848.5488 8585.917 -7851.6694 8585.9375 -7854.7026 8585.9678 c
+-7854.7026 8584.917 L
+-7852.481 8584.709 -7853.3218 8582.5078 -7854.7617 8578.9678 C
+-7868.1182 8578.9678 l
+f *U
+*u
+0 D
+-7813.0762 8554.0811 m
+-7813.0762 8550.4717 -7815.3535 8548.0947 -7819.1294 8548.0947 c
+-7820.2383 8548.0947 -7821.0767 8548.2158 -7821.5273 8548.2451 c
+-7821.5273 8560.5479 L
+-7820.8672 8560.6084 -7820.208 8560.6084 -7819.729 8560.6084 c
+-7818.2002 8560.6084 -7816.7026 8560.127 -7815.6841 8559.4053 c
+-7814.3945 8558.5332 -7813.0762 8556.7881 -7813.0762 8554.1416 C
+-7813.0762 8554.0811 l
+f 1 D
+-7832.0806 8558.3926 m
+-7832.0806 8542.6445 -7832.0806 8540.4287 -7834.542 8540.2783 c
+-7834.542 8539.3184 L
+-7833.042 8539.2588 -7830.3174 8539.1992 -7827.5664 8539.1689 c
+-7825.6538 8539.1084 -7822.3945 8539.0186 -7820.1479 8538.9775 c
+-7816.582 8538.9775 -7813.585 8539.4258 -7811.0049 8540.2627 c
+-7806.353 8541.8477 -7801.9702 8545.8525 -7801.9702 8553.6602 c
+-7801.9702 8558.7432 -7804.4014 8562.3193 -7806.5034 8564.0605 c
+-7807.583 8565.0215 -7808.8135 8565.832 -7809.7744 8566.3125 c
+-7809.7744 8566.4629 L
+-7807.5234 8569.4912 -7805.6025 8572.0625 -7799.3906 8580.6426 c
+-7797.5 8583.0645 -7795.9102 8584.7383 -7794.7402 8584.9775 c
+-7794.7402 8586 L
+-7796.6602 8586 -7799 8585.8848 -7801.1294 8585.8848 c
+-7803.3511 8585.8848 -7804.8521 8586 -7806.4424 8586 c
+-7807.6729 8586 -7808.7241 8585.9404 -7809.5039 8585.2725 c
+-7813.0151 8579.8477 -7816.9121 8573.7559 -7820.1182 8568.7139 c
+-7820.5078 8568.7139 -7820.957 8568.7139 -7821.5273 8568.7139 c
+-7821.5273 8571.2852 L
+-7821.5273 8582.5264 -7821.437 8584.7686 -7819.1895 8584.9775 c
+-7819.1895 8585.9697 L
+-7820.6279 8585.9404 -7823.9194 8585.915 -7826.6992 8585.915 c
+-7829.9287 8585.915 -7832.8921 8585.9404 -7834.5122 8585.9697 c
+-7834.5122 8584.9775 L
+-7832.0518 8584.7686 -7832.0806 8582.5264 -7832.0806 8565.5918 C
+-7832.0806 8558.3926 l
+f *U
+*u
+0 D
+-7781.4561 8565.5928 m
+-7781.4561 8582.4941 -7781.4561 8584.6484 -7784.2832 8584.9775 C
+-7784.2832 8585.9697 l
+-7782.3887 8585.9404 -7779.0542 8585.915 -7775.7822 8585.915 c
+-7772.6294 8585.915 -7769.5688 8585.9404 -7767.2881 8585.9697 C
+-7767.2881 8584.9775 l
+-7770.2578 8584.9775 -7770.2881 8582.5244 -7770.2881 8565.5928 C
+-7770.2881 8548.1514 L
+-7762.8193 8548.1514 l
+-7759.999 8548.1514 -7758.5298 8548.96 -7757.8994 8551.2627 C
+-7756.9072 8551.2627 l
+-7756.9072 8546.4697 -7756.877 8542.415 -7756.877 8539.1709 c
+-7761.3486 8539.2012 -7766.748 8539.2314 -7772.0601 8539.2314 C
+-7779.7446 8539.2314 l
+-7784.5537 8539.2314 -7789.9966 8539.2012 -7794.9614 8539.1709 c
+-7794.9614 8542.3848 -7794.9326 8546.4697 -7794.9326 8551.2627 C
+-7793.9072 8551.2627 l
+-7793.3657 8549.1094 -7791.771 8548.1514 -7788.9438 8548.1514 C
+-7781.4561 8548.1514 l
+-7781.4561 8565.5928 L
+f *U
+U U %AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 62)
+0 A
+u 800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+-7885 8587 m
+-7885 8548.7305 L
+-7846.7305 8548.7305 L
+-7846.7305 8587 L
+-7885 8587 L
+n 0 O
+1 0.14 0.09 0 k
+-7846.7305 8569.9043 m
+-7846.7305 8561.3408 L
+-7885 8561.3408 L
+-7885 8569.9043 L
+-7846.7305 8569.9043 L
+f -7846.7305 8573.0967 m
+-7846.7305 8572.4229 L
+-7885 8572.4229 L
+-7885 8573.0967 L
+-7846.7305 8573.0967 L
+f U %AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 63)
+0 A
+u 800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+-7885 8587 m
+-7885 8548.7305 L
+-7846.7305 8548.7305 L
+-7846.7305 8587 L
+-7885 8587 L
+n 0 O
+1 0.14 0.09 0 k
+-7846.7305 8565.8262 m
+-7846.7305 8574.3896 L
+-7859.3408 8574.3896 L
+-7859.3408 8587 L
+-7867.9038 8587 L
+-7867.9063 8565.8262 L
+-7867.9038 8565.8262 L
+-7867.9038 8565.8252 L
+-7846.7305 8565.8262 L
+f -7846.7305 8563.3076 m
+-7870.4233 8563.3076 L
+-7870.4233 8587 L
+-7871.0967 8587 L
+-7871.0977 8562.6328 L
+-7846.7305 8562.6328 L
+-7846.7305 8563.3076 L
+f U %AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 64)
+0 A
+u 800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+-7885 8586.999 m
+-7885 8548.7285 L
+-7846.7305 8548.7285 L
+-7846.7305 8586.999 L
+-7885 8586.999 L
+n 0 O
+1 0.14 0.09 0 k
+-7846.7305 8561.3389 m
+-7872.3896 8561.3389 L
+-7872.3896 8586.999 L
+-7863.8262 8587 L
+-7863.8262 8569.9033 L
+-7846.7305 8569.9033 L
+-7846.7305 8561.3389 L
+f -7846.7305 8572.4219 m
+-7861.3081 8572.4219 L
+-7861.3081 8587 L
+-7860.6338 8587 L
+-7860.6338 8573.0957 L
+-7846.7305 8573.0957 L
+-7846.7305 8572.4219 L
+f U %AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 65)
+0 A
+u 1 Ap
+800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+-7857.0625 8559.4609 m
+-7884.6025 8559.4609 L
+-7884.6025 8587 L
+-7857.0625 8587 L
+-7857.0625 8559.4609 L
+n 0 O
+0 0.55 1 0.12 k
+-7856.8418 8572.7002 m
+-7885 8572.7002 L
+-7885 8573.8252 L
+-7856.8418 8573.8252 L
+-7856.8418 8572.7002 L
+f u 0 0.55 1 0.3 k
+-7883.9814 8560.5215 m
+-7884.4102 8562.5254 -7883.1865 8566.1514 -7880.0874 8569.251 c
+-7876.9878 8572.3496 -7873.3457 8573.6602 -7871.3594 8573.1455 C
+-7871.3594 8573.1455 L
+-7870.875 8571.1895 -7872.1519 8567.5117 -7875.25 8564.4141 c
+-7878.3457 8561.3184 -7882.0122 8560.1064 -7883.9814 8560.5215 C
+f 0 0.39 0.7 0.12 k
+-7883.9814 8585.9912 m
+-7884.4102 8583.9883 -7883.1865 8580.3613 -7880.0874 8577.2617 c
+-7876.9878 8574.1641 -7873.3457 8572.8535 -7871.3594 8573.3672 C
+-7871.3594 8573.3672 L
+-7870.875 8575.3242 -7872.1519 8579.001 -7875.25 8582.0996 c
+-7878.3457 8585.1953 -7882.0122 8586.4063 -7883.9814 8585.9912 C
+f U u 0 0.55 1 0.3 k
+-7870.1782 8585.9912 m
+-7870.6074 8583.9883 -7869.3838 8580.3613 -7866.2842 8577.2617 c
+-7863.1855 8574.1641 -7859.543 8572.8535 -7857.5576 8573.3672 C
+-7857.5566 8573.3672 L
+-7857.0718 8575.3242 -7858.3496 8579.001 -7861.4473 8582.0996 c
+-7864.543 8585.1953 -7868.209 8586.4063 -7870.1782 8585.9912 C
+f 0 0.39 0.7 0.12 k
+-7870.1782 8560.5215 m
+-7870.6074 8562.5254 -7869.3838 8566.1514 -7866.2842 8569.251 c
+-7863.1855 8572.3496 -7859.543 8573.6602 -7857.5576 8573.1455 C
+-7857.5566 8573.1455 L
+-7857.0718 8571.1895 -7858.3496 8567.5117 -7861.4473 8564.4141 c
+-7864.543 8561.3184 -7868.209 8560.1064 -7870.1782 8560.5215 C
+f U U %AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 67)
+0 A
+u 0 Ap
+800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+-7857.4609 8559.085 m
+-7885 8559.085 L
+-7885 8586.624 L
+-7857.4609 8586.624 L
+-7857.4609 8559.085 L
+n 0 O
+0 0.55 1 0.12 k
+-7871.7598 8577.3623 m
+-7871.7598 8587 L
+-7870.6343 8587 L
+-7870.6343 8577.3623 L
+-7871.7598 8577.3623 L
+f 0 0.55 1 0.3 k
+-7875.4233 8572.876 m
+-7874.3096 8571.1553 -7870.8809 8569.457 -7866.4966 8569.457 c
+-7862.1152 8569.457 -7858.6138 8571.1064 -7857.5718 8572.874 C
+-7857.5718 8572.874 L
+-7858.6138 8574.6006 -7862.1152 8576.2979 -7866.4966 8576.2979 c
+-7870.875 8576.2979 -7874.3242 8574.5615 -7875.4233 8572.876 C
+f U %AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 69)
+0 A
+u 800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+-7857.4609 8559.4609 m
+-7885 8559.4609 L
+-7885 8587 L
+-7857.4609 8587 L
+-7857.4609 8559.4609 L
+n 0 O
+0 0.55 1 0.3 k
+-7875.4233 8573.252 m
+-7874.3096 8571.5313 -7870.8809 8569.833 -7866.4966 8569.833 c
+-7862.1152 8569.833 -7858.6138 8571.4824 -7857.5718 8573.25 C
+-7857.5718 8573.25 L
+-7858.6138 8574.9766 -7862.1152 8576.6738 -7866.4966 8576.6738 c
+-7870.875 8576.6738 -7874.3242 8574.9375 -7875.4233 8573.252 C
+f U %AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 83)
+0 A
+u 800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+-7884 8585.9355 m
+-7670.4009 8585.9355 L
+-7670.4009 8578.1348 L
+-7884 8578.1348 L
+-7884 8585.9355 L
+n 0 O
+0 0 0 1 k
+-7884 8582.0352 m
+-7873.9858 8584.5273 -7867.187 8585.875 -7855.2007 8585.9355 c
+-7842.2183 8586 -7777.2002 8585.9355 y
+-7712.1816 8586 -7699.2002 8585.9355 v
+-7687.2129 8585.875 -7680.415 8584.5273 -7670.4009 8582.0352 C
+-7680.415 8579.543 -7687.2129 8578.1953 -7699.2002 8578.1348 c
+-7712.1816 8578.0693 -7777.2002 8578.1348 y
+-7842.2183 8578.0693 -7855.2007 8578.1348 v
+-7867.187 8578.1953 -7873.9858 8579.543 -7884 8582.0352 C
+f U %AI8_EndBrushPattern
+%AI5_End_NonPrinting--
+%AI5_Begin_NonPrinting
+Np
+4 Bn
+%AI5_BeginGradient: (Black, White)
+(Black, White) 0 2 Bd
+[
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+0 %_Br
+[
+0 0 50 100 %_BS
+%_0 0 50 100 Bs
+1 0 50 0 %_BS
+%_1 0 50 0 Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (Chrome)
+(Chrome) 0 6 Bd
+[
+0
+<
+464646454545444444444343434342424241414141404040403F3F3F3E3E3E3E3D3D3D3C3C3C3C3B
+3B3B3B3A3A3A39393939383838383737373636363635353535343434333333333232323131313130
+3030302F2F2F2E2E2E2E2D2D2D2D2C2C2C2B2B2B2B2A2A2A2A292929282828282727272626262625
+2525252424242323232322222222212121202020201F1F1F1F1E1E1E1D1D1D1D1C1C1C1B1B1B1B1A
+1A1A1A1919191818181817171717161616151515151414141413131312121212111111101010100F
+0F0F0F0E0E0E0D0D0D0D0C0C0C0C0B0B0B0A0A0A0A09090909080808070707070606060505050504
+04040403030302020202010101010000
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+<
+1F1E1E1E1E1E1E1E1E1E1D1D1D1D1D1D1D1D1C1C1C1C1C1C1C1C1B1B1B1B1B1B1B1B1B1A1A1A1A1A
+1A1A1A19191919191919191818181818181818181717171717171717161616161616161615151515
+15151515151414141414141414131313131313131312121212121212121211111111111111111010
+1010101010100F0F0F0F0F0F0F0F0F0E0E0E0E0E0E0E0E0D0D0D0D0D0D0D0D0C0C0C0C0C0C0C0C0C
+0B0B0B0B0B0B0B0B0A0A0A0A0A0A0A0A090909090909090909080808080808080807070707070707
+07060606060606060606050505050505050504040404040404040303030303030303030202020202
+02020201010101010101010000000000
+>
+1 %_Br
+0
+0.275
+1
+<
+6B6A696867666564636261605F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544
+434241403F3E3D3C3B3A393837363534333231302F2E2D2C2B2A292827262524232221201F
+>
+1 %_Br
+0
+<
+00000101010102020202030303040404040505050606060607070707080808090909090A0A0A0A0B
+0B0B0C0C0C0C0D0D0D0D0E0E0E0F0F0F0F1010101111111112121212131313141414141515151516
+161617171717181818181919191A1A1A1A1B1B1B1C1C1C1C1D1D1D1D1E1E1E1F1F1F1F2020202021
+212122222222232323232424242525252526262627272727282828282929292A2A2A2A2B2B2B2B2C
+2C2C2D2D2D2D2E2E2E2E2F2F2F303030303131313232323233333333343434353535353636363637
+373738383838393939393A3A3A3B3B3B3B3C3C3C3D3D3D3D3E3E3E3E3F3F3F404040404141414142
+42424343434344444444454545464646
+>
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
+78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
+A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
+C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
+F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+<
+00000101020203030304040505050606070708080809090A0A0B0B0B0C0C0D0D0D0E0E0F0F101010
+1111121212131314141515151616171718181819191A1A1A1B1B1C1C1D1D1D1E1E1F1F1F20202121
+222222232324242525252626272727282829292A2A2A2B2B2C2C2D2D2D2E2E2F2F2F303031313232
+32333334343435353636373737383839393A3A3A3B3B3C3C3C3D3D3E3E3F3F3F4040414142424243
+4344444445454646474747484849494A4A4A4B4B4C4C4C4D4D4E4E4F4F4F50505151515252535354
+54545555565657575758585959595A5A5B5B5C5C5C5D5D5E5E5E5F5F606061616162626363646464
+6565666666676768686969696A6A6B6B
+>
+1 %_Br
+1
+0 %_Br
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+<
+4D4C4C4C4B4B4B4A4A4A4A4949494848484747474746464645454544444444434343424242414141
+414040403F3F3F3E3E3E3E3D3D3D3C3C3C3B3B3B3B3A3A3A39393938383838373737363636353535
+35343434333333323232323131313030302F2F2F2F2E2E2E2D2D2D2C2C2C2C2B2B2B2A2A2A292929
+2928282827272726262626252525242424232323232222222121212020201F1F1F1F1E1E1E1D1D1D
+1C1C1C1C1B1B1B1A1A1A191919191818181717171616161615151514141413131313121212111111
+101010100F0F0F0E0E0E0D0D0D0D0C0C0C0B0B0B0A0A0A0A09090908080807070707060606050505
+04040404030303020202010101010000
+>
+0
+0
+1 %_Br
+[
+1 0 50 92 %_BS
+%_1 0 50 92 Bs
+0 0.275 1 0.12 1 50 59 %_BS
+%_0 0.275 1 0.12 1 50 59 Bs
+0 0.275 1 0.42 1 50 50 %_BS
+%_0 0.275 1 0.42 1 50 50 Bs
+1 0 50 49 %_BS
+%_1 0 50 49 Bs
+1 0 50 41 %_BS
+%_1 0 50 41 Bs
+1 0.3 0 0 1 50 0 %_BS
+%_1 0.3 0 0 1 50 0 Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (Rainbow)
+(Rainbow) 0 6 Bd
+[
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+1
+0
+0
+1 %_Br
+1
+<
+0708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E
+2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F50515253545556
+5758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E
+7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6
+A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCE
+CFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6
+F7F8F9FAFBFCFDFEFF
+>
+0
+0
+1 %_Br
+1
+<
+00000000000000000000000000000000000001010101010101010101010101010101010101010101
+01010101010101010101010101010202020202020202020202020202020202020202020202020202
+02020202020202020202030303030303030303030303030303030303030303030303030303030303
+03030303030304040404040404040404040404040404040404040404040404040404040404040404
+04040505050505050505050505050505050505050505050505050505050505050505050505050606
+06060606060606060606060606060606060606060606060606060606060606060607070707070707
+07070707070707070707070707070707
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+0
+1 %_Br
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
+78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
+A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
+C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
+F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+0
+1
+0
+1 %_Br
+0
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+1
+0
+1 %_Br
+[
+0 1 0 0 1 50 100 %_BS
+%_0 1 0 0 1 50 100 Bs
+1 1 0 0 1 50 80 %_BS
+%_1 1 0 0 1 50 80 Bs
+1 0.0279 0 0 1 50 60 %_BS
+%_1 0.0279 0 0 1 50 60 Bs
+1 0 1 0 1 50 40 %_BS
+%_1 0 1 0 1 50 40 Bs
+0 0 1 0 1 50 20 %_BS
+%_0 0 1 0 1 50 20 Bs
+0 1 1 0 1 50 0 %_BS
+%_0 1 1 0 1 50 0 Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (Yellow & Orange Radial)
+(Yellow & Orange Radial) 1 2 Bd
+[
+0
+<
+0001010203040506060708090A0B0C0C0D0E0F10111213131415161718191A1B1C1D1D1E1F202122
+232425262728292A2B2B2C2D2E2F303132333435363738393A3B3C3D3E3E3F404142434445464748
+494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F60606162636465666768696A6B6C6D6E6F
+707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C
+>
+<
+FFFFFFFFFEFEFEFEFEFEFEFDFDFDFDFDFDFCFCFCFCFCFCFBFBFBFBFBFBFAFAFAFAFAFAF9F9F9F9F9
+F9F8F8F8F8F8F8F7F7F7F7F7F7F6F6F6F6F6F6F5F5F5F5F5F5F4F4F4F4F4F3F3F3F3F3F3F2F2F2F2
+F2F2F1F1F1F1F1F0F0F0F0F0F0EFEFEFEFEFEFEEEEEEEEEEEDEDEDEDEDEDECECECECECEBEBEBEBEB
+EBEAEAEAEAEAE9E9E9E9E9E9E8E8E8E8E8E8E7E7E7E7E7E6E6E6E6E6E6
+>
+0
+1 %_Br
+[
+0 0 1 0 1 52 19 %_BS
+%_0 0 1 0 1 52 19 Bs
+0 0.55 0.9 0 1 50 100 %_BS
+%_0 0.55 0.9 0 1 50 100 Bs
+BD
+%AI5_EndGradient
+%AI5_End_NonPrinting--
+%AI5_BeginPalette
+0 0 Pb
+1 1 1 1 ([Registration]) 0 Xs
+([Registration]) Pc
+0 0 0 0 k
+(C=0 M=0 Y=0 K=0) Pc
+0 0 0 1 k
+(C=0 M=0 Y=0 K=100) Pc
+0 0.1 1 0 k
+(C=0 M=10 Y=100 K=0) Pc
+0 0.5 0 0 k
+(C=0 M=50 Y=0 K=0) Pc
+0 0.5 1 0 k
+(C=0 M=50 Y=100 K=0) Pc
+1 0.55 1 0 k
+(C=100 M=55 Y=100 K=0) Pc
+1 0.9 0.1 0 k
+(C=100 M=90 Y=10 K=0) Pc
+0.15 1 1 0 k
+(C=15 M=100 Y=100 K=0) Pc
+0.45 0.9 0 0 k
+(C=45 M=90 Y=0 K=0) Pc
+0.5 0.4 0.3 0 k
+(C=50 M=40 Y=30 K=0) Pc
+0.5 0.85 1 0 k
+(C=50 M=85 Y=100 K=0) Pc
+0.75 0.05 1 0 k
+(C=75 M=5 Y=100 K=0) Pc
+0.75 0.9 0 0 k
+(C=75 M=90 Y=0 K=0) Pc
+0.8 0.05 0 0 k
+(C=80 M=5 Y=0 K=0) Pc
+Bb
+2 (Black, White) -7885 8587 0 0 1 0 0 1 0 0 Bg
+0 BB
+(Black, White) Pc
+Bb
+2 (Chrome) -7885 8587 0 0 1 0 0 1 0 0 Bg
+0 BB
+(Chrome) Pc
+Bb
+2 (Rainbow) -7885 8587 0 0 1 0 0 1 0 0 Bg
+0 BB
+(Rainbow) Pc
+Bb
+0 0 0 0 Bh
+2 (Yellow & Orange Radial) -7885 8587 0 0 1 0 0 1 0 0 Bg
+0 BB
+(Yellow & Orange Radial) Pc
+(Brick) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
+(Brick) Pc
+(Confetti) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
+(Confetti) Pc
+(Leaves - Fall ) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
+(Leaves - Fall ) Pc
+(Stripes) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
+(Stripes) Pc
+PB
+%AI5_EndPalette
+%AI5_Begin_NonPrinting
+Np
+%AI8_BeginPluginObject
+(Adobe Scatter Brush Tool)
+(Dog Tracks)
+(1 /New Pattern 41/ 1 0 0 0 1 / 0 1 1 0 1 1 0 0 0 0 -90 -90 0 1 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Scatter Brush Tool)
+(Fall Leaf)
+(1 /New Pattern 34/ 1 0.0745 0.9 0.9019 0.18 / 0 0.602793 1 1 0.1 1 1 -) -
+(1 1 1 -180 180 1 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Scatter Brush Tool)
+(Ladybug)
+(1 /New Pattern 10/ 5 0.898039 0 0 / 0 1 1 0 0.803911 1.2 1 -1.55 1.55 ) -
+(1 -180 180 1 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Scatter Brush Tool)
+(Push Pin)
+(1 /New Pattern 36/ 1 0.025 0.1 0.475 0 / 0 1 1 0 0.401676 1 1 -1.06145) -
+( 1.06 1 -180 180 1 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Scatter Brush Tool)
+(Strawberry)
+(1 /New Pattern 37/ 1 0 0 0 1 / 0 0.803911 1 1 0.803911 1 1 -0.5 0.5 1 ) -
+(-75 75.419 1 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Scatter Brush Tool)
+(Twinkle Star )
+(1 /New Pattern 2/ 0 1 / 1 0.5 1 1 0.25 1 1 -0.5 0.5 1 0 0 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe PatternOnPath Brush Tool)
+(Double Lines)
+(1 / New Pattern 62/ New Pattern 63/ New Pattern 64/ / / 1 1 0.14 0.09 ) -
+(0 / 1 0 1 0 1 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe PatternOnPath Brush Tool)
+(Laurel)
+(1 / New Pattern 65/ New Pattern 42/ New Pattern 67/ / New Pattern 69/ ) -
+(1 0 0.55 1 0.3 / 1 0 1 0 1 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe PatternOnPath Brush Tool)
+(Rope )
+(1 / New Pattern 1/ / / New Pattern 3/ New Pattern 6/ 5 0 0 0 / 1 0 1 ) -
+(0 1 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe ArtOnPath Brush Tool)
+(Arrow)
+(1 / New Pattern 45/ / / / / 5 0.898039 0 0 / 2 0 1 0 1 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe ArtOnPath Brush Tool)
+(Marker)
+(1 / New Pattern 8/ / / / / 0 0 / 1 1 1 0 1 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe ArtOnPath Brush Tool)
+(Paintbrush)
+(1 / New Pattern 5/ / / / / 1 0.5 0.85 1 0.45 / 0 0 1 0 1 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe ArtOnPath Brush Tool)
+(Tapered Stroke)
+(1 / New Pattern 83/ / / / / 1 0 0 0 1 / 1 1 1 0 1 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe ArtOnPath Brush Tool)
+(Type)
+(1 / New Pattern 50/ / / / / 1 0.952941 0.94902 0.196078 0.0745098 / 1) -
+( 0 1 0 1 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Calligraphic Brush Tool)
+(6 pt Flat )
+(1 4 8 10 10 90 90 2 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Calligraphic Brush Tool)
+(10 pt Oval)
+(1 1 19 15 15 130 130 2 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Calligraphic Brush Tool)
+(12 pt Oval )
+(1 7 17 45 45 0 0 2 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Calligraphic Brush Tool)
+(20 pt Oval)
+(1 20 20 20 100 40 80 0 2 1 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Calligraphic Brush Tool)
+(25 pt Round )
+(1 10 40 100 100 0 0 2 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Calligraphic Brush Tool)
+(50 pt Flat)
+(1 40 60 0 0 44 44 0 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Brush Manager Order)
+(Adobe Brush Manager Order)
+( Adobe Calligraphic Brush Tool/ 6 pt Flat / Adobe Calligraphic Brush T) -
+(ool/ 10 pt Oval/ Adobe Calligraphic Brush Tool/ 12 pt Oval / Adobe Cal) -
+(ligraphic Brush Tool/ 20 pt Oval/ Adobe Calligraphic Brush Tool/ 25 pt) -
+( Round / Adobe Calligraphic Brush Tool/ 50 pt Flat/ Adobe Scatter Brus) -
+(h Tool/ Dog Tracks/ Adobe Scatter Brush Tool/ Fall Leaf/ Adobe Scatter) -
+( Brush Tool/ Ladybug/ Adobe Scatter Brush Tool/ Push Pin/ Adobe Scatte) -
+(r Brush Tool/ Strawberry/ Adobe Scatter Brush Tool/ Twinkle Star / Ado) -
+(be ArtOnPath Brush Tool/ Marker/ Adobe ArtOnPath Brush Tool/ Tapered S) -
+(troke/ Adobe ArtOnPath Brush Tool/ Arrow/ Adobe ArtOnPath Brush Tool/ ) -
+(Paintbrush/ Adobe ArtOnPath Brush Tool/ Type/ Adobe PatternOnPath Brus) -
+(h Tool/ Double Lines/ Adobe PatternOnPath Brush Tool/ Laurel/ Adobe Pa) -
+(tternOnPath Brush Tool/ Rope /) .
+%AI8_EndPluginObject
+%AI5_End_NonPrinting--
+%AI5_Begin_NonPrinting
+Np
+%AI8_PluginGroupInfo
+(Adobe Path Blends) (Adobe Blends Plugin) (Live Blends.aip)
+%AI8_PluginGroupInfo
+(Adobe PatternOnPath Brush Tool) (Adobe Pattern Brush Plugin) (ArtOnPath.aip)
+%AI8_PluginGroupInfo
+(Adobe ArtOnPath Brush Tool) (Adobe Art Brush Plugin) (ArtOnPath.aip)
+%AI8_PluginGroupInfo
+(Adobe Calligraphic Brush Tool) (Adobe Calligraphic Brush Plugin) (Calligraphic Brush Tool.aip)
+%AI8_PluginGroupInfo
+(Adobe Scatter Brush Tool) (Adobe Scatter Brush Plugin) (Scatter Brush Tool.aip)
+%AI5_End_NonPrinting--
+%%EndSetup
+%AI5_BeginLayer
+1 1 1 1 0 0 1 0 79 128 255 0 50 Lb
+(Layer 1) Ln
+0 A
+u 0 O
+0 g
+0 R
+0 G
+800 Ar
+1 J 0 j 0.1 w 10 M [1 1 ]0 d %AI3_Note: 0 D
+0 XR
+%AI5_File:
+%AI5_BeginRaster
+() 1 XG
+[ 0.6 0 0 0.6 153 452.6997 ] 510 189 0 Xh
+[ 0.6 0 0 0.6 153 452.6997 ] 0 0 510 189 510 189 8 1 0 0 0 0
+%%BeginBinary
+XI
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFF0000FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFF000000FF0000000000000000000000000000FFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFF00000000FF00FF00FF00000000FF00FF00FF00000000FFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFF0000000000000000000000FF00000000000000FF00FF0000
+%00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFF0000000000FF00FF00FF00FFFFFFFF000000FF00FFFFFFFF
+%00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFF0000FF00FF00FF000000FF00FFFFFFFFFFFF00000000FFFF
+%FFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFF00000000FF00FF00FF0000FF0000FFFFFFFFFFFFFF000000
+%00FFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFF0000000000FF00FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%000000FFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFF0000FF00FF000000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFF0000FFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFF000000000000FF00FF00FF00FFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFF0000FFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFF00FFFFFFFFFF0000000000FF00FFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFF0000FFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFF00000000FF00FFFFFFFFFF000000000000FFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFF0000FFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFF00FF00FF000000FF00FFFFFFFFFF00FF00000000FFFFFF
+%FFFFFFFFFFFFFFFFFFFFFF00FFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFF0000FF00FF00FF00FFFFFFFFFFFFFFFFFFFFFF00000000
+%FFFFFFFFFFFFFFFFFFFFFFFF00FF00FF000000FFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFF0000000000FF00FF0000FFFFFFFFFFFFFFFFFFFFFFFFFF
+%0000FFFFFFFFFFFFFFFFFFFFFF0000FF00FF000000FFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FF0000FFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFF0000FF000000FF00FF00FFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFF000000FFFFFFFFFFFF00FF0000FF00FF000000FFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFF0000000000FF0000FF0000FFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF000000FFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFF00FF00FFFFFF00000000FF0000FFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFF0000FFFFFFFFFFFF00FF00FF00FF00000000FFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFF00000000000000FF00FF0000FFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF0000000000FFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFF000000FF0000FFFFFFFFFF00FF0000000000FFFFFFFF
+%FF00FFFFFFFFFFFF00000000FF00FF00000000FFFFFF000000FFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFF0000000000FFFFFF00FF0000FFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFF0000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFF0000FF00FFFF00FF00FFFFFFFFFFFFFF00FF00000000
+%00FFFF0000000000FFFFFF0000FF00FFFF00FF00FFFFFF000000FFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFF0000000000FFFFFFFFFFFF000000FFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%00000000FF000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000
+%00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFF0000FF00FF00FF00FFFFFFFFFFFFFFFFFFFFFFFFFF
+%000000FFFFFFFFFFFF0000FF00000000FFFFFF0000FFFFFF00000000FFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000FF00
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFF00000000FF0000000000FFFF0000FFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000
+%0000FF00FF00FF0000FF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000
+%000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFF000000FF0000FF00FF00FFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFF000000FFFFFFFFFF00FF00FF0000FFFFFF0000FFFFFF0000FFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000
+%0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFF00000000FF00FFFFFFFFFF0000000000FFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FF00
+%00FF0000FF0000000000000000FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFF00FF00FFFF00FF00FFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFF0000000000FFFF0000000000FFFF00FFFFFFFF000000
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FF00FFFF00FFFF00FF
+%00FF00FF00FF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFF0000000000FF000000FF00FF00FF0000FFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FF0000FF
+%0000FFFFFF00FF00FFFF0000FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFF0000FF0000FF00FFFFFFFFFFFFFFFF00FF000000
+%000000FF00FFFFFFFFFF00FF0000FFFFFFFF00000000FF0000FFFFFF0000
+%00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FF0000FF0000FF00
+%FF00FF00FF00FFFFFF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFF000000FF00FF000000000000000000000000FFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FF00FFFF00
+%00FF0000FF0000FF0000FF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFF0000FF0000FF00FFFFFF00000000FF00FFFFFF
+%FFFF0000000000FFFFFF00FF00FFFFFFFFFFFFFFFF0000FFFF00FFFFFFFF
+%0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF00FF00FF00FFFF00FFFF00FF
+%00FF00FFFFFF00FF00FFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFF0000000000FFFFFF00FF00FFFFFF00FF00FFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FF00FF00FF00FF00
+%FF0000FF00FF0000FFFF0000FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFF000000FF0000FF000000FFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFF0000FF00FFFFFFFFFFFFFFFFFFFFFF0000FF00FFFFFF
+%000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FFFFFF00FFFF00FFFF
+%FF00FF00FF00FF00FF00FF00FF00FF000000FFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFF00FFFFFFFF00000000000000000000FF0000FFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FF00FF00FFFF00FF00
+%00FF00FF000000FF0000FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFF000000FFFF0000FFFFFFFFFF00FFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFF00FF0000FFFFFFFFFFFFFFFFFFFF0000FF00FFFF
+%FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF00FF0000FFFF00FF00FF00FF
+%00FFFF00FFFFFFFF00FF00FFFF00FF00FF00000000FFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFF00000000000000FFFFFF00FF00FF0000000000FFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF00FF0000FF000000FF00FF
+%FF00FFFF00FFFF00FF000000FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFF0000FF000000FFFFFFFF0000FF000000FF00
+%000000FF00FF00FFFFFFFF00FF00000000FFFFFFFFFFFFFFFFFF000000FF
+%FFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF00FFFF00FFFF00FF0000FF
+%FFFF00FF00FF00FFFF00FF00FF00FF00FF00FFFF000000FFFFFFFFFFFFFF
+%FFFFFFFFFFFFFF000000FF00FF00FFFF00FF00FFFF0000FF00FF00FFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FF0000FF00FFFFFFFF0000
+%00FF00FF000000FF0000FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FF000000FFFF00FFFFFFFFFF
+%FFFFFF00FF00FF00000000FFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFF0000
+%FFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF00FFFF00FF00FFFF00FF00FF
+%00FFFF00FFFFFFFF00FF00FF00FF00FF00FF0000000000000000FFFFFFFF
+%FFFFFFFFFFFF00FF00FF00FF00FF0000FF00FF00FF00FF0000000000FFFF
+%FFFFFFFFFFFFFFFFFFFFFF000000000000FF00FF00FF00FF000000FF00FF
+%00FFFFFF00FF00FF00FF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFF00000000FF00FF
+%FF00FFFFFFFF00FF0000FF00FFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFF00
+%00FFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF00FF0000FF00FFFFFF00FF
+%FF00FFFF00FF00FFFF00FFFFFF00FFFF0000FFFFFFFFFFFF00FF0000FFFF
+%FFFFFFFFFFFF0000FF00FF00FF0000000000000000FF0000FF000000FFFF
+%FFFFFFFFFFFFFFFF000000FFFFFFFFFF00000000FF00FF00FFFFFFFF0000
+%FFFFFF00FF00FFFFFF00FFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFF00FF00FFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFF0000000000FFFFFFFFFFFF0000FFFFFFFFFFFFFF
+%00FFFFFFFF00FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF00FF00FF00FF00
+%FFFFFF00FFFFFFFFFF00FFFFFFFF000000FFFFFFFF00FF00FFFFFF000000
+%FFFFFFFFFFFF0000000000FF00FFFFFFFFFFFFFFFF00FF0000FF000000FF
+%FFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFFFF00FFFFFFFFFF
+%FFFFFF0000FFFFFF00FFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000
+%00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFF00FF00FFFFFFFFFFFF
+%FFFFFFFFFFFFFF000000FFFFFFFFFFFF000000FFFFFFFF0000FFFFFFFFFF
+%FF00FFFFFF00FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF00FF0000FF00FFFFFFFF00
+%FFFFFFFF00FFFF00FF00FFFFFFFF00FF00FFFFFFFFFF00FF000000FFFF00
+%00FFFFFFFF0000FF00FFFFFFFFFFFF00FF000000FFFFFFFF0000000000FF
+%FFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF00FFFF00FFFFFFFFFFFF0000FF
+%FFFFFF00FFFFFFFF00FFFF00FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000
+%0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFF00FFFF00FFFFFFFFFFFFFFFF000000FFFFFF0000FFFFFF
+%FFFF00FFFFFF00FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF00FFFFFF00FF00FFFF00
+%FFFFFFFF00FFFFFFFFFF00FFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFF00FF
+%0000FFFFFF00000000FF0000000000000000FF0000000000FFFFFFFF00FF
+%FFFFFFFF0000FFFFFF00FFFFFFFFFF00FF00FFFF00FFFFFFFFFFFFFF00FF
+%FFFFFF00FFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+%000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFF0000FFFFFFFF
+%FF00FF00FF00FFFF0000FF00FFFFFFFFFFFFFFFFFFFF000000FFFF0000FF
+%FFFFFF00FFFFFF00FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF00FF00FF0000FFFFFF00
+%FFFFFFFF00FFFF00FFFFFFFFFF00FF0000FFFFFFFFFF00FF00FFFFFFFFFF
+%FF0000FF00000000000000FF00FF00FFFFFF00FF0000FF00000000000000
+%FFFFFF0000FFFFFFFF00FFFFFFFF00FFFF00FFFFFF00FFFFFFFFFF00FFFF
+%FFFF0000FFFFFFFFFFFF0000FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+%000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFF00FF00FF000000
+%000000FF00FF0000FF00000000000000FFFFFFFFFF00FFFFFFFF00FFFF00
+%00FFFF0000FFFF00FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF00FFFFFF00FFFFFF00
+%FFFFFFFFFF00FFFF00FF00FFFF00FFFFFFFFFFFFFF00FFFF00FFFFFFFFFF
+%FFFF00FF000000FFFF00FF00FF00FF0000000000FF0000FF00FF00FF0000
+%FFFF0000FFFFFFFFFFFF00FFFFFFFF00FFFF00FFFF00FFFFFFFFFF00FFFF
+%FFFFFF00FFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+%00000000FFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFF000000FFFFFFFFFF
+%FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFF00000000FF00000000FF0000FF
+%FF00FFFF00FFFFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFF00FFFFFF
+%00FFFFFFFF00FFFF00FF00FF00FFFF00FFFFFFFFFFFF00FF00FFFFFFFFFF
+%FF00FF000000000000FF00FF00FF00FFFFFFFFFF00FF00000000FF000000
+%00FF00FFFFFFFFFFFFFF0000FFFF00FF00FF00FFFF00FFFFFFFFFF00FFFF
+%FFFF00FFFFFFFFFFFFFF0000FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+%0000000000FFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF0000FFFFFF000000FFFF
+%FFFF00FF00FF0000FF000000FFFFFFFFFFFFFFFFFFFFFF00FF0000FFFFFF
+%000000FFFF00FFFF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF00FFFFFFFF00FFFF
+%00FFFFFFFF00FFFFFFFFFFFF00FFFF00FF00FF00FF00FFFF00FFFFFFFFFF
+%00FFFFFF0000FF00FF00FF00FF00FF0000000000FF00FF00FF000000FF00
+%0000FFFFFFFFFFFF00FF00FF00FFFFFF0000FF00FF00FFFFFFFF0000FFFF
+%FFFF00FFFFFFFFFFFF00FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%000000000000FFFFFFFFFFFFFFFFFFFF0000000000FFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFF00FF00FF00FF
+%000000FF00FFFFFF00FF00FFFFFFFFFFFFFFFFFFFF00FFFF00FF0000FFFF
+%FFFF0000FFFF00FFFF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFF00FF
+%FFFFFFFFFFFF00FFFF00FFFF00FFFF00FF00FF00FF00FFFF00FFFFFFFFFF
+%FF00FF00FF0000FF00FF00FF000000FF0000FF0000FF00FF0000FFFF00FF
+%00FFFFFFFFFFFF00FF00FF0000FFFFFF00FF00FFFFFF00FFFFFFFF00FFFF
+%FFFF00FFFFFFFFFFFF0000FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FF000000000000FFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFF00FF00FFFF
+%FFFFFFFFFFFFFF00FFFF0000FFFFFFFFFFFFFFFFFFFFFF00FFFFFFFF0000
+%FFFFFF0000FF00FFFFFF00FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF00FF
+%FF00FFFFFFFF00FFFF00FFFF00FF00FF00FF00FF00FF00FF00FF00FFFFFF
+%00FFFF000000FF000000000000FF00FFFFFFFFFFFF000000FF000000FF00
+%00FFFFFF00FF00FF0000FFFFFFFFFFFF00FF00FFFF00FFFFFFFF00FFFFFF
+%FF0000FFFFFFFFFFFF00FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFF00000000000000FFFFFFFFFF0000000000FFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFF00FF00FF
+%FFFFFFFFFFFFFFFFFF00FFFFFF00FF00FF00FFFFFFFFFFFF00FFFFFFFFFF
+%0000FFFFFF000000FFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF00FFFFFFFFFFFF00
+%FF00FFFFFFFF00FFFFFF00FF0000FF00FF00FF00FF00FFFF00FFFFFF00FF
+%00FFFF00FF00000000FFFFFF000000000000FF00FFFFFFFF00FF000000FF
+%00FFFFFFFF00FF00FF00FF00FFFFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF
+%FF00FFFFFFFFFFFF0000FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFF00000000000000FFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF00FF00
+%FFFFFFFFFFFFFF0000FFFF00FFFFFFFFFFFF00FF00000000FF00FFFFFFFF
+%FFFF0000FF000000FFFF0000FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF00FFFFFFFFFF
+%00FFFFFFFFFFFFFFFFFF00FF0000FFFF00FFFF00FF00FF00FF00FF00FFFF
+%00FFFFFF000000FFFF000000000000FF0000FF00000000000000FFFF0000
+%00FFFF0000FF00FF00FFFF00FFFFFFFF00FFFFFFFFFF00FFFFFF00FFFFFF
+%FF00FFFFFFFFFFFF00FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFF000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFF00FF00FF
+%00FFFFFFFFFFFFFFFF000000FF00FF000000FF00FF00FF00000000000000
+%FFFF00FF00000000FF00FFFF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF00FFFFFFFFFF
+%FF0000FFFFFFFF00FFFFFFFF00FF00FFFF00FFFFFF00FFFF00FF00FF00FF
+%00FFFF0000FF0000000000FFFF00FF00FF0000FF00FF0000FF000000FF00
+%00FF00FFFF00FFFFFFFFFF00FFFFFFFFFFFF00FFFFFF00FFFFFF00FFFFFF
+%FF00FFFFFFFFFFFF00FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFF0000000000000000000000FF00FFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFF00FF
+%0000FFFFFFFFFFFF00FF00FF00FFFFFFFFFFFFFFFFFF0000FF00FFFF00FF
+%000000000000000000FF0000FF00000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF00FFFFFFFF
+%FFFF00FFFFFFFF00FFFFFF000000FFFF00FFFFFFFFFFFFFFFF00FFFF00FF
+%00FF0000000000000000000000FF00FF00FF00FFFF00FF000000FF0000FF
+%00FFFF0000FFFFFF00FFFF00FFFFFFFFFFFF00FFFFFF00FFFF0000FFFFFF
+%00FFFFFFFFFFFF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFF0000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFF00
+%FFFF00FFFFFFFFFFFF00FF00FF00FFFFFFFFFFFF0000FFFFFF00FFFF0000
+%0000000000FF00FF0000FFFF00000000000000FFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFF00000000000000000000FFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF00FFFFFFFF
+%FFFFFF00FFFFFFFFFFFFFFFF00FFFFFF00FFFFFFFF00FFFFFFFF00FFFF00
+%FF00FF00000000000000FFFFFF0000FFFF00FFFFFFFF0000FF0000FF0000
+%0000FF00FFFFFFFF00FFFF0000FFFFFF00FF00FFFFFF00FFFF00FF00FFFF
+%00FFFFFFFFFFFF00FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFF00000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFF
+%FF00FF0000000000000000000000FFFFFFFF0000FFFFFFFF0000FFFF0000
+%0000FF00FF00FF0000FF00000000000000000000FFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFF000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF00FFFFFF
+%FFFFFF00FFFFFFFF00FFFFFFFF00FFFF00FFFFFFFFFF00FFFF00FFFFFFFF
+%0000FF0000000000FF000000FF00FF00FF00FF00FFFFFFFF00000000FF00
+%00FF00FFFFFFFFFF0000FF00FFFFFFFFFFFF00FFFF0000FFFF00FFFFFFFF
+%FFFFFFFFFFFFFF00FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFF00000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000
+%000000FF00FF00000000FF00000000FFFF0000FF0000FF000000FF0000FF
+%00FF00FF00FFFF0000000000000000FF00000000FFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF00FFFFFF
+%FFFFFF00FF00FFFFFF00FFFFFF00FFFF00FFFFFFFF00FFFFFF00FFFFFF00
+%FFFFFF000000000000FF00FFFF0000FF0000FFFF00FF0000FF0000000000
+%FF00FFFFFFFFFFFFFFFFFFFF00FFFFFFFF00FFFFFF00FFFFFFFF00FFFF00
+%FFFFFFFFFFFF00FFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FF000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FF00FF0000
+%FF000000000000FF00000000000000000000FF00FF00FF00FF0000000000
+%FF00FF00FFFF00000000FF0000000000FFFF0000FFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFF00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF00FFFFFF
+%FF00FF0000FFFF00FFFF0000FF00FFFFFF00FFFFFFFF00FFFF00FFFFFFFF
+%00FFFF00000000000000FF00FF000000FFFF00FFFFFF00FF00FF0000FF00
+%0000FFFFFFFFFFFF0000FF00FFFFFFFFFFFF00FFFF0000FF00FF00FFFF00
+%FFFFFFFFFFFF00FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FF000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FF00FF0000FF
+%0000FF00FF00FF00000000000000000000FF000000FF00000000FF00FFFF
+%00FF00FF0000000000000000FF0000FF0000000000FF00FFFF000000FFFF
+%FFFFFFFFFF00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF00FFFF
+%00FF00FF0000FF00FF00FFFFFF00FFFFFFFFFFFFFFFF00FFFF00FFFFFF00
+%00FFFF0000000000FF00FFFF0000FFFFFFFF00FF00FF00FF00FF00000000
+%FF00FFFFFFFFFFFFFFFFFFFF00FFFFFFFF00FFFFFF00FFFF00FF00FFFF00
+%FFFFFFFFFF00FFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FF000000000000000000000000000000000000000000FFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FF00FF0000FF0000FF00
+%00FF0000000000000000000000000000000000FFFF0000000000FFFF00FF
+%FF00FF00FF0000000000FF00000000000000000000000000000000000000
+%FFFFFFFF00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF00FF
+%FF00FFFFFFFF00FFFF000000FF0000FFFF00FFFFFFFF00FFFF00FFFFFFFF
+%00FFFF000000FF00FFFF00FF0000FFFF00FFFF00FF00FFFFFF00FF00FF00
+%0000FFFFFFFFFFFFFF00FF00FFFFFFFF00FF00FFFF00FFFF00FF00FF00FF
+%FFFFFFFFFF00FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFF00000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FF0000FF00FF0000FF00
+%FF0000000000FF000000000000FF00FF00FF00FF000000FF00FF00FF0000
+%0000FF00000000000000000000FF00000000000000000000000000000000
+%00FFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF
+%00FF00FFFF00FFFF00FF00FFFFFF00FFFF00FFFFFFFF00FFFF00FFFFFF00
+%FFFFFF00000000FF00FF00FF0000FF00FF00FF0000FFFF00FFFF000000FF
+%0000FFFFFF00FF00FF00FF00FF0000FFFF00FFFFFFFFFFFFFFFF00FF00FF
+%FFFFFFFF00FFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFF00000000000000000000000000000000000000FFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFF00000000FF0000FF00FF00FF00000000FF0000
+%00000000FFFF00FFFF00FF00FF0000FF00FFFF0000FF0000FF00000000FF
+%00FF000000000000000000FFFF0000000000000000000000000000000000
+%00FFFF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF00
+%FF00FFFFFFFF00FFFFFF000000FF00FFFFFF00FF00FF00FF0000FF00FF00
+%00FFFF000000FF00FF00FF0000FF00FF00FFFF000000FFFF00FF00000000
+%0000FF00FF00FFFF00FF00FF00FF00FF0000FFFF00FFFF00FFFFFF00FFFF
+%FFFFFFFF00FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FF00000000000000000000000000000000000000000000FFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFF000000FF00000000FF0000FF000000FF00FF0000FF
+%00FF00FF0000FFFF00FF00FF0000FFFF00000000FF0000FF0000FF000000
+%FF00000000000000FFFFFF00000000FF00FF0000FF000000000000000000
+%00FF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+%FFFF00FFFFFF00FFFFFFFFFFFFFF00FFFFFF00FF00FF00FF0000FFFFFF00
+%FFFFFF0000000000FF00FF000000FF00FF000000FF00FF00FF0000000000
+%000000FF00FF00FFFF00000000FF00FF0000FFFF00FFFF00FF00FF00FFFF
+%FFFFFF00FFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFF00000000000000FF0000000000000000FF0000000000FFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFF000000000000FF00FF000000FF0000FF0000FF00FF0000
+%0000FF00FFFFFF00FF00FF0000FF00000000FF0000FF000000000000FFFF
+%000000FF000000FFFF00FFFFFFFFFF000000000000000000000000000000
+%000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+%00FFFFFFFFFFFF00FFFFFF00FFFF00FFFFFF00FF00FF00FF00FF00FF00FF
+%000000000000FF0000FFFF0000FF00FF00FFFF00000000FF00FF00000000
+%FF00FF0000FFFF000000FF00FF00FF00FF00FF00FF000000FF00FF00FFFF
+%FFFFFF00FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FF00000000FF0000FF0000FF00FF000000000000FF00000000FFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFF0000000000FF00FF000000FF00FFFF00FF0000FF0000FF0000
+%FF00FF000000FFFFFFFF0000FF0000000000000000000000FF00FF00FF00
+%0000FF0000FFFF0000FFFFFFFFFFFFFF00FF00FF00000000000000000000
+%0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+%0000FFFFFFFFFF00FFFFFFFF00FFFF00FF000000FFFFFF00FF00FFFFFF00
+%FFFFFF00FF0000FFFF000000FF00FF00FF00000000FF0000FF0000000000
+%000000FF0000FF00FF00FF0000FFFF0000FF00FF00FFFF00FFFF0000FFFF
+%FFFF00FFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+%00000000000000FF00FFFF00FF00FF00FFFF0000000000FF000000FFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFF00000000FF000000FF00FF0000FF00FF000000FF00FF00FF00FF
+%00FFFFFFFFFF00FF000000FF0000FF0000000000FFFF00FF00FF000000FF
+%00FF0000FFFFFF00FF00FFFFFFFFFF0000000000FF000000000000000000
+%0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FF00FF00FF0000FF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%00FF00FFFFFFFF00FFFFFFFF00FFFF0000FF00FF00FFFF0000FF00FFFF00
+%FF00FF000000FF0000000000FF00000000FF00FF0000FF0000FF00000000
+%0000FF00FFFFFFFFFFFFFF00FFFFFF00FFFFFF00FF000000000000FFFF00
+%FF00FFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000
+%0000000000000000000000FF00FF00FF0000FF000000000000FF0000FFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFF000000FFFFFFFF00FF00FF0000FFFF00FFFF0000FF00FF00FFFF0000
+%FFFFFF00FF00FF0000FF00000000FF0000FF0000FF00FF00FF0000000000
+%000000FF00FFFF0000FFFFFFFFFFFF00FF0000FF00FF0000000000000000
+%00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FF00FF00FF00000000
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%0000FF00FFFFFFFF00FFFFFF0000FF00FF00FF00FFFFFF00FFFF00FFFFFF
+%00FFFF00FFFF000000FF000000FF00FFFFFFFFFF000000FF0000FF000000
+%000000FF00FF00FFFFFFFF00FFFFFF00FFFF0000FFFF00FFFF00FF00FFFF
+%00FFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000
+%FF00000000FF00FF0000FF00FF00FF0000FF0000000000FF0000000000FF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FF000000FF0000FF00FF00000000FFFF0000FF0000FF00FF0000FF0000FF
+%FFFF00FFFFFF000000000000FFFFFF00FFFF0000FFFF00FF00FF00000000
+%FFFF000000FF00FFFF00FFFFFFFFFFFF00FF00FF00000000000000000000
+%000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFF00FF00FF00FF00FF000000
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FF000000FFFFFFFF00FFFFFFFF00FFFF0000FF0000FFFF00FFFF00FFFFFF
+%00FFFF00000000FFFF00FFFFFF00FFFFFFFFFFFFFFFF0000FF0000000000
+%00FFFFFFFFFFFFFFFFFFFF00FFFFFF00FFFF00FFFFFFFFFF000000FF0000
+%0000FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000
+%FF0000000000000000FF00FFFF00FF00FF00FF0000000000FF0000000000
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FF0000FF00FFFFFF00FFFF00FF000000FF00FF00FF0000FF00FFFFFFFF00
+%00FFFFFF0000FFFFFF00FF0000FFFF00FFFF000000FFFF00FF0000000000
+%FFFFFF000000FFFF00FF0000FF00FF00FF00FF00FF000000000000000000
+%000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFF0000FF00FFFF0000FFFFFFFFFF000000FF0000
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FF00000000FFFFFF00FFFFFFFF0000FF00FF00FF00FFFF00FFFFFF00FFFF
+%00FFFF00000000FFFF00FFFF00000000FF00000000000000FFFFFF000000
+%FFFFFFFF00FF00FFFFFFFF00FFFFFFFFFFFF00FFFFFFFF00FF00FF00FF00
+%FFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FF
+%00FF000000FF00FF0000FF00FFFFFFFFFF0000000000FF0000FF00000000
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FF0000000000FFFF00FF00000000FFFF0000FF0000FF00FF0000FF000000
+%FF000000FFFFFF00FF00FF00FFFFFF0000FFFF00000000FF00FF0000FF00
+%00FF00FF00000000FFFF00FF00FF00FFFFFF00FF00000000000000000000
+%000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFF0000FF0000FFFF00FFFF00FF0000FF00FFFF00FF00
+%00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFF0000FF00FFFFFFFFFFFFFFFF00FF0000FFFF00FFFFFF00FFFF00FFFF
+%00FFFF0000FFFF00FF0000000000FF00FF00FFFF00000000000000000000
+%FFFFFFFF00FFFFFFFFFFFFFFFFFF00FFFFFF00FFFFFFFF0000FFFF0000FF
+%000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF00000000
+%000000000000FFFFFFFFFFFF00FFFFFFFF00FF00000000FF00000000FF00
+%0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FF000000FF00FFFF00FF0000FF00FF00FF00FFFF00FF00FF0000FF0000FF
+%00FFFF00FFFF00FF00FF00FF00FFFFFFFFFF000000FF000000FFFF000000
+%0000FF00FF00FFFF00FFFFFF0000FFFF0000FF00FF000000000000000000
+%00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFF0000FF00FFFF00FFFF00FF00FF00FF00FFFF00FF0000
+%00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFF0000FF00FFFF00FFFFFFFFFFFF00FFFFFFFF00FFFFFFFFFF00FFFF
+%00FF0000FF0000FF000000000000FFFFFFFFFFFFFF00000000FFFF00FF00
+%00FFFFFF00FF00FFFFFF00FFFFFF00FFFF00FFFFFFFFFF0000FF0000FF00
+%FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000
+%000000FF0000FFFFFFFFFF00FF00FFFF000000FF00000000000000FF0000
+%FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FF000000000000FF00FF0000FF00FFFF0000FF0000FF00FF00FFFF00FF00
+%FFFF00FF00FFFF00FF00FF0000FFFF0000FF0000FF00FFFFFFFF00FFFF00
+%FFFFFF0000FFFFFFFF00FFFFFFFFFFFFFFFF00FF00000000000000000000
+%000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFF00FF00FFFFFFFF00FF00
+%00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFF000000FF00FF00FFFFFFFFFF00FF00FFFFFF00FFFF00FFFF00FF00
+%FF0000FF00FF000000FF000000FF000000FF0000000000FF00FF000000FF
+%0000FFFFFF00FFFFFFFF00FFFFFF00FFFF00FFFFFFFF0000FFFFFF0000FF
+%0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FF00FF000000
+%00FF0000FF00FFFFFFFFFFFF0000FFFF00FFFF000000000000000000FFFF
+%00FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FF00000000000000FF00FF00FF0000FF0000FFFF0000FF00FF00000000FF
+%0000FF0000FFFFFF00FF00FF0000FF00FFFF000000FF00FFFFFFFF0000FF
+%00FF0000FF00FF0000FF00FFFFFFFFFF0000FF0000000000000000000000
+%000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFF000000FFFF0000FFFFFFFFFFFF000000FF00FFFF0000FF00FF00
+%00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFF00FF00FF00FF00FFFFFFFFFF0000FFFFFFFF00FFFFFFFF00FFFF
+%000000000000FF00000000FF0000000000000000000000000000FFFF0000
+%FF00FFFF00FFFFFFFFFF00FFFF00FFFF00FFFFFFFFFF0000FF0000FFFF00
+%00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF0000FF00FF0000
+%00000000FF00FFFFFFFFFF00FFFFFFFF0000000000FF00000000FF0000FF
+%FF00FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFF00000000000000FF00FF00000000FF00FFFF00FF00FF0000FF000000
+%FF00000000000000FF00FF0000FF00000000FF00FF00FF00FF0000000000
+%FF00FF0000FFFFFF0000FF000000FFFFFF0000FF00000000000000000000
+%0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFF00FFFFFF0000FFFFFFFFFFFFFF0000FFFF00FFFF00FFFF00FF0000
+%00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFF000000FF0000FFFFFFFFFFFF0000FFFFFF0000FF0000FF00FF
+%000000FFFF000000FF00FF0000FF00FF000000FFFFFF0000FF0000FF00FF
+%00FF00FFFF00FFFFFFFF00FFFF00FFFF00FFFFFFFFFF00FFFF00FFFF0000
+%00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF0000FF00FF00FF0000
+%FF00FF0000FFFFFFFFFFFF0000FFFF00FFFFFF000000FF000000FFFFFF00
+%FFFF00FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFF000000000000000000FF00FF00FF00FF0000FF00FF00000000FF
+%00FFFFFFFF000000000000FFFF00FF000000000000FF00FF00FF00000000
+%00000000FFFFFF00FF00FF00FF00000000FF00FF00000000000000000000
+%00FFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFF00FF000000FFFFFFFFFFFFFFFF00FFFF00FFFFFF00FF00FFFF00FF00
+%00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFF00FF00FF00FFFFFFFFFFFFFF00FFFFFFFF00FFFFFF00FFFF
+%000000FFFF0000FF0000FF00FF00FF00FF00FFFF00FF00FF00FF0000FF00
+%00FF00FF0000FFFF00FFFF00FF00FF00FFFFFFFFFF0000FF00FFFFFF0000
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FFFFFF00FF00FF00
+%0000000000FF00FF00FF00FFFFFF00FF000000FF00FF000000FFFF00FFFF
+%00FFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFF00000000000000FF00FF0000FF00FFFF00FF00FF00FF00FF00FF
+%00FF00FF00FFFFFF000000000000FFFF000000FF00000000000000000000
+%00000000000000FFFF00FF00FF00FF00FF00FF0000FF0000000000000000
+%0000FF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%0000FF00FFFFFFFFFFFFFFFFFFFF00FFFFFFFFFF00FFFF00FF00FF00FF00
+%00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFF00FF00FF00FFFFFFFFFFFF00FFFFFFFF00FFFF00FF00FF
+%0000FF0000FFFF000000000000FF00FF0000FF00FF0000000000000000FF
+%FFFFFF00FF00FFFFFFFF00FF00FFFF00FFFFFFFFFF00FF0000FFFF0000FF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF0000FFFFFFFFFF00000000
+%0000000000FFFF00FF00FF00FF00FF0000FFFF0000000000000000000000
+%FF00FFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFF000000000000FF00FF00FF00FF0000FF00FF0000FF0000
+%00FF0000FFFF0000FFFFFF000000FFFF00000000FFFF0000000000000000
+%00000000FF00000000FF000000FF00000000000000000000000000000000
+%00FFFFFFFF000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+%FF0000FFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFF00000000FF00FF0000
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFF00FF00FF00FFFFFFFFFF0000FFFFFF0000FF00FF00FF
+%0000FF0000000000FF000000FF00FFFF00FF00FF00FF0000FF00FF000000
+%00FFFF000000FF00FF0000FF00FF00FFFFFFFFFF00FF00FFFFFF000000FF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FFFFFFFF00000000FF0000
+%000000000000FF000000FFFF00FFFF00FF00FF0000FF00000000FF0000FF
+%00FF00FFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFF00000000FF0000FF0000FFFF0000FF00FF00FF0000
+%000000FF0000FFFF0000FF0000FF00000000FF0000000000000000000000
+%0000000000000000000000000000000000000000FF000000000000000000
+%FFFFFFFFFFFF00000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000
+%00FFFFFFFFFFFFFFFFFFFF00FFFFFFFF0000000000FFFFFFFFFFFF00FF00
+%00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFF00FF00FF00FFFFFFFFFF00FFFFFFFF00FFFF00FF00
+%FF00FF00FFFF00000000000000FFFFFF0000FF00FF00FF0000FF000000FF
+%0000FFFF00FF00FF00FF00FF00FF00FFFFFFFF0000FF00FFFF000000FFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF00FFFFFFFF00000000000000FFFF
+%00000000000000FFFFFF00FF00FFFFFFFFFF0000000000FF000000000000
+%00FFFF00FFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFF00FF00000000FF00000000FF00FF000000FF00
+%0000FF0000FFFF00FFFF00FF0000FFFFFF000000FF0000FF000000000000
+%00FF00FF000000FF00FF00FF0000000000000000000000FFFF000000FFFF
+%FFFFFFFFFFFFFF0000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FF
+%FF00FF00FFFFFFFFFFFF00FFFFFF0000FFFFFFFFFFFF00FF00FF00FF0000
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFF00FF00FF00FFFFFFFF0000FFFF00FF00FFFFFF00
+%00FF00FF000000FF00000000FF00FFFFFFFF00FF00FF00000000FF000000
+%000000000000FFFFFF0000FFFF00FFFFFFFFFF00FF00FFFFFF0000FFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFF00FFFF00000000FF00FF
+%FF000000000000FFFFFFFF000000FF00FFFF00000000000000FF00000000
+%00FFFFFF00FF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF0000FF0000FF0000FF0000FF00
+%00000000000000FF000000FF0000FFFF00FF000000FF000000FF00000000
+%00000000FF0000000000FF00000000FF00000000000000FFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFF0000000000000000000000FFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF
+%00FF00FF00FFFFFFFF00FF0000FFFFFFFFFFFFFFFF00FFFFFF00FF00FF00
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFF00FF00FF00FFFFFFFF00FFFFFF0000FFFFFF00
+%0000FF00FF00FF00000000000000FF00FF0000000000FF00FF0000FFFF00
+%FFFFFFFF00FFFFFF0000FF00FF00FFFFFFFF00FF00FFFFFF0000FFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFF0000FFFF00FFFF000000FF00
+%FF00FF0000000000FF00000000FF00FF00FF00FF0000FF0000000000FF00
+%00FFFFFF00FFFF00FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FF00FF000000
+%000000000000FF00FF00FF00FF000000FF0000FF0000FF000000FF000000
+%000000000000FF00000000000000FF0000FF00FF0000FFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFF00000000000000000000FFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFF00
+%FF00FF00FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF00FF0000
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFF00FF00FF00FFFFFFFF00FFFFFF0000FFFFFF
+%0000000000FF000000000000000000FF00000000000000000000FFFF0000
+%00FFFFFF00FFFFFF00FF00FF00FFFFFFFFFF0000FFFFFF000000FFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFF000000FFFFFFFF0000FFFF0000FF00FF000000FF
+%00FF00000000FF0000FF0000FF0000000000000000FF0000000000000000
+%FF00FFFFFF00FFFF00FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000FF
+%00000000000000000000000000FF0000FF00FF000000FF00FF0000FFFF00
+%00000000000000000000000000000000FF00000000FFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFF
+%FFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFF00FF00FF0000FF00FF00
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFF0000FF00FF00FFFFFF00FFFFFFFF00FFFFFF
+%FFFF00FF00FF000000000000000000FF00FF00000000FFFF00000000FF00
+%0000000000FFFF00FFFF00FF00FFFFFFFF0000FFFFFF0000FFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFF000000FFFFFFFF00FFFFFF0000FFFF00000000FF00
+%FF00FFFF000000FF000000FF00FFFF00FF00000000000000000000FF0000
+%FF00FFFFFF00FFFFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FF00FF0000
+%0000000000000000000000FF00FF000000FF0000FFFF0000FF00FF0000FF
+%0000000000FF000000FF0000000000FF0000FF00FFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000FFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFFFFFFFFFF
+%FFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFF000000FF00FF00FFFFFFFF0000
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFF0000FF00FF00FFFFFF00FFFFFF0000FFFF
+%00FF0000FF000000000000000000FF000000000000FF00FF00FF00FFFF00
+%FF0000FF00FFFF00FFFFFF00FFFFFFFF0000FFFFFFFF0000FFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFF000000FFFFFFFF00FFFFFF0000FFFF00FFFF000000FF
+%00FF0000FF000000FF00FFFFFF00FFFF0000000000FF00000000FF0000FF
+%FF0000FFFFFF00FFFFFF00FF00FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF000000FF00
+%000000000000000000000000000000000000FF00FFFF000000FF0000FF00
+%FFFF0000000000FF00FFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF00FF00FFFFFFFFFFFFFF
+%FF00FF00FF00FFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFF00FF00FF00
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFF00FFFFFFFF00FFFF
+%000000FF000000000000000000FF00FF0000FFFF00000000FF0000FF00FF
+%00000000FFFF00FFFF00FF00FFFFFF0000FFFFFF000000FFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFF000000FFFFFF0000FFFFFF00FF00FFFF00FFFF00000000
+%FF00FF0000FF00000000FFFF0000FF00FF000000000000000000FF000000
+%FFFF00FFFFFFFF00FFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFF
+%00FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFF0000000000FFFFFF00FF000000
+%0000FF00000000000000FF0000FF0000000000FFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFFFFFFFFFFFF00
+%00FF00FFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFF00FF00FFFF00FF0000
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF00FF00FFFFFF00FFFFFF0000FF
+%FF0000FF00000000FF0000000000FFFF00FFFFFF00FF000000FF0000FF00
+%FF000000FFFF00FFFF0000FFFFFF00FFFFFFFF000000FFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFF0000FFFFFFFF0000FFFFFFFF00FFFFFF00FFFF00FF0000FF
+%00FFFF00FF00FF00FF000000000000FF000000000000000000FF0000FF00
+%FFFF0000FFFFFF00FFFFFF00FF00FF0000FFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF00FF00FFFFFFFF
+%FF0000FFFFFFFFFFFFFF00FF00FFFFFFFFFF00000000000000FF0000FFFF
+%00000000FF00000000FFFF00FF00FF000000FFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF00FF00FFFFFFFFFF000000FF
+%FFFFFF0000FFFFFF0000FFFFFFFFFFFFFF00FF00FFFFFFFFFF00FFFF0000
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFFFF00FFFFFF00FF
+%0000FF00000000000000000000FF00FFFF00FF000000FF000000FFFF00FF
+%00FF00000000FFFF0000FFFFFF00FFFFFFFF000000FFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFF0000FFFFFF0000FFFFFFFF00FF00FFFF00FFFF0000000000
+%00FF00000000FFFF00000000FF00FF000000000000000000FF00FF00FFFF
+%FFFFFF00FFFFFFFF00FFFFFF00FF00FF0000FFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFF00FF00000000
+%00FF00FF000000FF00FF00FFFF0000000000FF0000000000FF000000FF00
+%00FF0000000000FF00FF00FFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF00FF00FFFFFF000000FFFFFFFF
+%FF00FFFFFFFF00FFFFFFFFFFFFFFFF0000FFFFFFFFFF00FF00FF00FF00FF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF00FFFF00FFFFFF00FF
+%0000000000000000FF0000000000000000FF0000FF0000FF00000000FF00
+%FF000000FF00FF0000FFFF0000FFFFFFFF000000FFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFF000000FFFFFF0000FFFFFFFFFF00FF00FF00FFFFFF00FFFFFF00
+%0000FFFF00000000000000000000FF000000000000000000FF0000000000
+%FFFFFF0000FFFFFF00FFFFFFFF00FF00FF00FFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF
+%FF00FF00FF00FF000000FF0000FFFFFFFFFF00FFFFFFFFFF000000FFFFFF
+%FFFFFFFF00000000FF00FFFF00FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF00FF00FF0000FFFFFFFFFFFFFFFF
+%FFFF0000FF00FFFFFFFFFFFF0000FFFFFFFFFF000000FF00FF00FF0000FF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF00FFFF00FFFFFF00
+%00FF0000000000FF0000FF00FF00FF00FF00000000FF0000000000FF00FF
+%00FF000000FFFF00FFFF0000FFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFF0000FFFFFF00FF00FFFFFFFF00FF00FF0000FFFFFF00FFFFFFFF
+%00FFFF0000FF00FF0000000000FF00FF00000000000000FF00FF00FF0000
+%00FFFFFF0000FFFFFF00FFFFFFFF00FF00FF00FFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF00FFFFFFFFFFFF00FF00
+%00FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFF00FF0000FFFFFFFFFFFF
+%FF000000FFFFFFFF00FFFF00FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFF00FF00FF000000FFFFFFFFFFFFFFFFFFFF
+%000000FF00FFFFFFFFFF0000FFFFFF0000FF00FFFFFF00FF00FFFF00FFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FF00FFFFFF00
+%00000000FF00000000000000FFFF00FF000000FFFFFFFF000000000000FF
+%FF00FF00000000FFFF00FFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFF0000FFFFFF00FF00FFFFFFFFFF00FFFF0000FFFFFF000000000000
+%000000FF00000000FF00FF00FFFFFFFF00FF00000000FF000000FF00FF00
+%00FFFFFF00FF00FFFF0000FFFFFFFF00FF00FF00FFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFF00FF
+%FFFFFFFFFFFFFFFF00FFFFFFFFFFFF0000000000FF00FFFF00FFFFFFFF00
+%0000FFFFFFFFFF00FFFF00FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFF00FF00FF00FFFFFFFFFFFFFFFFFFFFFF00FF
+%00FF00FF00FFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF00FF00FFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFF00FFFF00
+%000000000000FF0000000000FFFFFFFFFF00FF00FFFFFF00000000000000
+%FFFF00000000000000FFFFFFFF00FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFF000000FFFF00FF0000FFFFFFFF00FF00FF00FF00FF00FF00FFFF0000
+%FF000000FF0000FF00FF00FF0000FFFFFF00000000000000FFFF00FF00FF
+%00FF00FFFF00FFFFFFFF00FFFFFFFFFF00FF00FF00FFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF00FFFFFFFFFFFF00FFFF00
+%FF00FFFFFFFFFFFFFFFF00FF000000FFFFFFFFFF00FF0000FFFFFF000000
+%FFFFFFFFFFFF00FFFF00FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFF0000FF00FF00FFFFFFFFFFFFFFFFFF000000FFFF
+%00FFFFFFFFFFFF000000000000000000FFFFFFFFFFFF00FFFFFF0000FFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFF00FF00
+%FF0000FF00000000FF0000FF00FF00FFFF00FFFF000000FF000000000000
+%0000FF00000000FFFFFFFF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FF000000FFFFFF00FF00FFFFFFFFFF00FF00FF0000FF00FF000000FFFF00
+%000000FF00FF0000FF00FF00FF00FFFF00FF000000FF0000000000FF0000
+%FF00FF00FF0000FFFFFF0000FFFFFFFFFF00FF00FF00FFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF00FFFFFFFFFFFFFFFF00FF
+%00FF0000000000000000FF00FFFFFFFFFFFFFFFF00FFFFFFFF000000FFFF
+%FFFFFFFF0000FFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFF0000FF00FF00FFFFFFFFFFFFFFFF000000FFFFFFFF
+%FFFF0000000000FF00FF0000FFFFFFFF0000FFFFFF00FF0000000000FFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFF00FF
+%0000000000000000000000FFFF0000FF00FF00FF00FF00FFFF0000000000
+%00000000FFFFFFFFFF0000FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FF0000FFFF0000FF00FFFFFFFFFF00FFFF00FF00FFFFFFFF00FF00FFFFFF
+%FF0000000000000000FF00FF0000FF00FF000000000000FFFF0000FF0000
+%FF00FF00FFFF00FFFFFFFF00FFFFFFFFFFFF00FF00FF00FFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF00FF00000000000000FF00
+%FFFFFFFFFFFFFFFF000000FF00FFFFFF00FF00FFFFFFFF0000FF00FFFFFF
+%FFFF0000FFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFF00FF00FF00FFFFFFFFFFFFFFFF0000FFFFFFFF0000
+%000000FFFFFFFFFFFF00FFFF00FFFFFFFFFF000000FF00FFFFFF00FFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFF00
+%FFFF00FFFF000000FF00FF000000FF00FFFFFF00FF00FF00FF0000000000
+%00FF00FF00FFFFFF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%0000FFFFFF00FF0000FFFFFFFFFF00FF00FF00FFFF00FFFF0000FF00FF00
+%00FF0000FF00FF00FF00FFFF00FF00FF00FF00FF0000FF0000FFFF000000
+%FFFF00FFFFFF00FFFFFFFF00FFFFFFFFFFFFFF00FF00FF00FFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF00FFFFFFFFFFFFFFFFFF00FF
+%FFFFFFFFFFFFFFFFFFFFFF0000000000FFFFFFFF00000000FF00FFFFFFFF
+%FF00FFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFF0000FF00FF00FFFFFFFFFFFFFF00FFFFFFFF000000FFFF
+%FFFFFFFFFFFFFFFFFFFFFF00FF000000FF00FFFF00FFFF00000000FFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF00FFFF
+%00FFFFFF000000FF000000FFFFFF00FFFF0000FFFFFFFFFFFF0000FF00FF
+%0000FF00FF00FF0000FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+%0000FFFF00FFFF00FFFFFFFFFF00FFFF00FFFF00FFFFFFFF00FFFF00FF00
+%FF00FF0000FF0000FFFFFF000000FF00FF0000FF00FF000000FFFF000000
+%FF00FF0000FF0000FFFFFF0000FFFFFFFFFFFF0000FF000000FFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF00FF00FF00FFFF00FFFFFF
+%FFFF00FF00000000000000FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFF00
+%00FFFFFF00FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFF00FF0000FF00FFFFFFFFFFFFFF00FF00000000FF00FFFFFF
+%FFFFFFFFFF00000000FF00FF00FFFFFFFF00FF00000000FFFF00FFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF00FF
+%FF0000FF00000000FF0000000000FFFFFFFF00FFFFFFFFFF00FF00000000
+%0000FF00FF0000FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+%00FFFF0000FF0000FFFFFFFFFF00FFFF00FFFF00FFFFFFFFFF00FFFF00FF
+%0000FFFF0000000000000000000000000000FF00000000FF000000000000
+%FFFF00FFFFFFFF00FFFFFFFF0000FFFFFFFFFF00FF00FF00FF00FFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF00FFFFFF00FF0000FF000000
+%FF00FF00FFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFF0000FF
+%FFFFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFF0000FFFF00FFFFFFFFFFFFFF000000FF00FF0000FF00FFFF
+%FF0000FF00FFFFFFFF00FF00FF0000FFFFFFFFFFFF00FF000000FFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF00
+%FFFF000000000000000000FFFF00FFFF0000FFFFFFFFFFFF00FF0000FF00
+%000000FF00FF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+%FF0000FFFFFF0000FFFFFFFF00FFFF00FFFFFF00FFFFFFFF00FFFFFF0000
+%FF000000FF00FF0000000000FF000000FF000000FF000000FF00FF0000FF
+%00FF00FFFF00FFFF00FFFFFF00FF00FFFFFFFFFF00FF00FF000000FFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFF00FFFFFF
+%FFFFFFFFFFFFFFFF000000FF00FF000000FFFFFFFFFFFFFFFF0000FFFFFF
+%FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFF0000FFFF00FFFFFFFFFF00000000FFFFFFFF00FFFF00000000
+%00FFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFF00FF00FFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF
+%0000FF00000000000000FF000000FFFF00FF00FFFFFFFFFF0000FF000000
+%000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF
+%00FF0000FF0000FFFFFFFFFF00FFFF00FFFFFF00FFFFFF00FF00FFFFFF00
+%00FF00FFFF00000000FFFFFFFFFFFFFF000000000000FF0000FF0000FF00
+%FFFF00FFFFFFFFFF00FFFFFFFF00FFFFFFFFFFFF00FFFF00FF0000FFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF00FFFFFFFFFFFFFF0000FF0000FF
+%FFFFFFFFFFFFFFFFFFFFFF00FF0000FFFFFFFFFFFFFFFF000000FFFFFFFF
+%FF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFF000000FF00FFFFFFFFFF000000FFFFFFFFFFFFFFFF0000FF00FFFF
+%FFFFFFFFFFFFFFFFFFFF0000FF0000FFFFFFFFFFFFFF00FF00FFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+%00FF00000000FF00000000FF00FFFFFFFF00FFFFFFFFFFFF000000000000
+%00000000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000
+%FF0000FFFF0000FFFFFFFF00FFFFFF00FFFFFFFFFFFFFFFFFF00FFFFFFFF
+%00000000000000000000FFFF00FF00FF0000000000FF00FFFF0000FFFF00
+%FFFF00FFFF00FFFFFF00FFFF0000FF00FFFFFFFFFFFFFFFF00FF0000FFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF00FFFFFFFFFFFFFFFFFF00FFFFFF
+%FFFFFFFFFFFFFFFF0000000000FFFF00FFFFFFFF00000000FFFFFFFFFF00
+%FFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFF000000FF00FFFFFFFFFF0000FFFFFFFFFFFFFFFF000000FF00FF0000
+%00FFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFF000000FFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%00000000FF0000FF0000000000FFFFFFFFFF00FF0000FF00FF000000FF00
+%FF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF
+%00FF00FF00FF00FFFFFFFF00FFFFFFFFFFFF00FFFFFFFF00FF00FFFFFFFF
+%000000FFFFFF00000000000000FF00000000FFFF00FFFF00000000FFFF00
+%FFFF00FFFFFF00FFFF00FF00FF00FF0000FFFFFFFF00FFFFFF00000000FF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FFFFFFFFFFFF0000FF00FF00
+%FFFFFFFF00FF0000FFFFFF00FF0000FF00FF000000FFFFFFFFFFFFFF00FF
+%FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FF000000FF00FFFFFFFF0000FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFF
+%FFFFFFFFFF00FF00FF000000FF0000FF00FFFFFF00FF0000FFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%0000000000FF0000000000FF00FF00FF00FFFF00FF0000000000000000FF
+%0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF0000
+%0000FF000000FFFFFFFFFF00FFFF00FFFFFF00FFFFFFFFFFFFFFFFFFFF00
+%0000000000FF0000FFFFFFFFFFFFFFFF00FFFFFF00FFFF00000000FFFF00
+%FFFFFF00FFFF00FFFF0000FF0000FFFF00FFFFFFFF00FFFFFFFF000000FF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF00000000FF00FFFFFFFF00FF00FF
+%00000000FFFFFFFFFFFFFFFF00FF00000000FF00FFFFFFFFFFFFFF00FF00
+%00FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FF0000FF00FFFFFF0000FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFF0000
+%0000000000FF00FFFFFFFFFF00FFFF00FF00FF00FFFF0000FFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FF0000000000FF0000000000FF0000FF00FF00FF0000FF00FF00000000FF
+%000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF00
+%FFFF00FF00FFFF00FFFF0000FFFF00FFFFFF00FFFFFFFF00FF00FF000000
+%000000FF0000FF000000FFFFFFFFFF00FF000000FF000000FFFF00FFFF00
+%FFFFFF00FFFF00FFFFFF00FF00FF00FF0000FFFFFF00FFFFFFFF00FF0000
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFF00000000FFFF00FFFF00FF000000FF00FFFF
+%FFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFF00FFFFFFFFFFFFFF00FF00FF
+%0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%00000000FFFFFF00FFFFFFFFFF00FF00000000FFFFFFFF0000000000FFFF
+%FFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFF00FF00FFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFF0000FF000000000000FF0000FF00FF00FF0000000000000000000000
+%000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF00FF
+%00FFFF000000000000FF00FFFFFF00FFFFFF00FFFFFFFFFFFFFF00FF0000
+%00000000FF0000FF0000FF00FF00000000FF0000000000FF000000FF00FF
+%00FFFF00FF0000FFFF00FF00FF0000FFFF00FFFFFFFF00FFFFFFFF00FF00
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFF00FFFFFF00FF000000FFFFFFFFFF00FFFF00
+%FFFFFFFFFFFF0000000000FFFFFFFF0000FFFFFFFFFFFFFFFF00FF00FF00
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+%0000FFFFFF0000FFFFFFFFFF00FF0000FFFFFFFF00FF00FFFFFF00FF0000
+%00FFFFFFFFFFFFFFFF00FF00000000000000FF00FF0000FFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFF000000FF0000000000FFFF00FF00FF00FFFF00FF00000000000000
+%0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF00FFFF
+%FFFF0000FFFF00FFFF00FF00FF0000FFFF0000FF00FF00FF0000FF000000
+%0000000000FF0000FF00000000FF00FF00FF000000FFFF0000FF00FFFFFF
+%00FFFFFF00FF00FFFFFF000000FF00FFFF00FFFFFFFF00FFFFFFFFFF0000
+%00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFF0000000000FF00FFFFFF0000FFFFFFFF0000FF
+%00FF0000000000FFFFFFFFFFFF000000FFFFFFFFFFFFFFFF00FF00FF0000
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000
+%00FFFF0000FFFFFFFFFFFF000000FFFFFFFF00FFFFFFFFFFFFFFFF00FF00
+%00000000000000FF00FF00FFFFFFFFFFFFFFFF00FFFF00FFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFF00000000FF000000000000FF00FF0000FF0000FF00000000FF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF00FFFFFF
+%FFFF00FF00FF000000FF00FF00FF00FF00FF00FF000000FFFF0000FF00FF
+%00000000FF00FF00000000FFFF00FF00FF0000FFFF0000FF000000000000
+%FF00FF00FF00FF00FF00FF00FFFFFF00FFFF00FFFFFF00FFFFFFFFFFFF00
+%0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFF0000FFFFFF00FFFFFFFFFFFF00000000000000
+%0000FFFFFFFFFFFF00FFFF000000FFFFFFFFFFFFFFFFFF00FF00FF0000FF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF00
+%FFFF00FFFFFFFFFFFF000000FFFFFF0000FF00FFFFFFFFFF000000FF00FF
+%FFFFFFFFFFFFFF00FF00FFFF00FFFFFFFFFFFF00FF00FFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFF0000000000FF0000000000000000FF00000000000000FFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF00FFFFFF
+%FFFF00FF00FF00FFFF00FFFF0000FF00FF00000000FFFF00FF00FF000000
+%0000000000FF00FF00FF000000FF00FF000000FF00FF0000000000FFFFFF
+%00FFFFFF0000FF00FF00FF00FFFFFF00FFFFFFFFFFFFFF00FFFFFF00FFFF
+%0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFF00FF00FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%00FFFFFF00FF00FF00FF00FFFFFFFFFFFFFFFFFFFFFF00FF00FF00FFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF00FF
+%FF00FFFFFFFFFF000000FFFFFFFF00FFFF00FF0000000000FFFFFFFFFFFF
+%00FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFF00000000000000000000000000000000000000000000FF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF00FFFFFFFF
+%FFFF00FFFFFF00FFFF00FFFF0000FF00FF00FF00FF00FFFF00FF00FF0000
+%00000000FF00FFFF000000FFFF00FF00FF0000FF00FF00FF000000FFFF00
+%00FF00FF0000FF00FF00FF00FFFFFF00FF000000FFFFFF00FFFFFFFF00FF
+%00FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFF00FFFF00FF00FFFFFF00FF0000FFFFFF0000FF
+%FFFFFFFF00FF000000FFFFFFFFFFFFFFFFFFFF000000FF00FF00FFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF00FFFF
+%00FFFFFFFF000000FFFFFFFFFFFFFF0000FF00FFFFFFFFFFFFFFFFFF00FF
+%FFFFFFFFFFFFFFFF0000FF00FFFFFFFFFFFF00FF00FFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000FFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF00FFFFFFFF
+%FF00FF00FFFFFFFFFFFFFFFF00FFFF0000FF00FF00FF00FF00FFFFFF0000
+%FF000000FFFF00FFFF0000FF00FF00FF0000FF00FF00FF00000000FFFFFF
+%00FFFFFF00FFFF00FFFFFFFF00FFFF00FFFFFF00FF00FFFF00FFFF00FF00
+%FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFF0000FF00FF00FF000000FFFFFFFFFF0000FFFFFF
+%FFFFFF00FF0000FFFFFFFFFFFFFFFFFFFF0000FF00FF00FF00FFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF00FFFF00
+%FF00000000FFFFFFFFFFFFFF000000FFFFFFFFFF00FFFFFFFFFF0000FF00
+%0000FF00FF00FF00FFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000FFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF00FFFFFFFFFF
+%FF00FF00FF00FFFF00FFFF00FF00FFFFFFFF00FF00FFFFFFFFFFFFFF0000
+%00FF00FF00FFFFFF00FF00FFFF00FFFF0000FF00FFFF00FF000000FFFF00
+%FFFFFFFF00FFFF00FFFFFFFF00FFFF0000FF000000FFFF00FFFFFFFF00FF
+%FF00FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFF00FF00FF00FF00FFFFFFFFFF0000FFFFFFFFFFFF
+%FFFF00FFFFFFFF00FFFFFFFFFF000000FFFFFF00FF00FF00FFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFF00FF
+%00FF0000000000FF0000FF000000FF0000000000FF0000000000FFFF00FF
+%00FF000000FF00FF0000000000FF00FFFFFF0000FFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFF000000000000000000000000000000000000000000FF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF00FFFFFFFFFF
+%00FFFF00FF00FFFF00FFFFFF00FFFFFFFF00FFFFFFFFFFFFFFFFFFFF00FF
+%00000000FF00FF00FF00FF00FFFFFFFF0000FFFF00FF0000000000FFFF00
+%00FFFFFF00FFFF00FFFFFFFFFFFFFFFF00FFFFFF00FF00FF0000FF00FF00
+%FFFF00FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFF0000FFFF00FFFFFFFFFF00FF00FFFFFFFFFFFFFF00
+%00FFFFFF0000FFFFFFFF000000FFFFFFFFFF00FF00FF00FFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FF00FFFF
+%00000000FF00000000FFFF0000FF00000000000000FFFFFFFFFF00FF00FF
+%FFFFFFFFFFFF0000FFFFFFFFFF00FF00FF0000FFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFF000000000000000000000000000000000000000000FF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF00FFFFFFFFFFFF
+%00FFFF00FF00FF0000FFFF00FFFFFFFFFFFF00FF0000FFFFFFFFFFFF0000
+%00FF0000FF00FF00FFFFFF00FFFF000000FF00FF00000000000000FFFF00
+%FFFFFFFF00FFFF00FFFFFFFF00FFFFFF00FF0000FFFF00FFFF0000FF00FF
+%FFFFFF00FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFF0000FF00FFFF00FF00FFFFFFFFFFFFFF000000FFFF
+%FFFFFFFFFFFF00FF0000FFFFFFFFFFFFFF00FF000000FFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FF0000FF00
+%000000000000FF0000000000FF00FFFFFF0000000000FFFFFFFFFFFF00FF
+%FFFFFFFFFFFFFFFF00FFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFF000000000000000000000000000000000000000000FF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF00FFFFFFFFFFFF
+%00FFFF00FFFFFFFF00FFFFFF00FFFFFFFF00FFFFFFFFFFFFFFFFFFFF00FF
+%0000000000FF0000FF00FFFF0000FF0000FFFF00FF000000000000FFFFFF
+%00FFFFFF00FFFFFF00FFFFFFFF00FFFF00FFFFFF00FFFFFF00FF00FFFFFF
+%FFFFFF00FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFF00FF00FF00FFFFFFFFFFFFFFFF000000FFFFFFFFFF
+%FFFFFF00FF00FF00FFFFFFFFFFFFFFFF00FF00FF00FFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFF
+%00FF0000000000FFFF00FF0000FF000000FFFF00FF000000000000000000
+%00000000000000000000FF000000FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000FFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF00FFFFFFFFFFFFFF
+%FFFFFFFF00FFFF0000FFFF00FFFFFFFFFFFF00FF0000FFFFFFFFFF00FF00
+%00FF00000000FFFFFFFF00FF00FF00FF00FF000000FF0000000000FF0000
+%FFFFFFFF00FFFF00FFFFFFFFFF00FFFF00FFFFFFFF00FFFFFFFF00FFFFFF
+%FFFFFF00FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFF0000FFFFFFFF00FF00FF000000FFFFFFFFFFFFFFFF
+%FFFFFFFF0000FFFFFFFFFFFFFFFFFF00FF000000FFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000FFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF0000FF0000000000FF
+%000000FF0000000000FF0000FF00FF0000FFFF0000FF000000FF00FF0000
+%0000000000000000000000FF00FF00000000FFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000FFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF00FFFFFFFFFFFF00
+%FFFF00FF00FFFF00FFFFFF00FF00FFFFFF0000FFFF00FFFFFFFF00FF0000
+%0000FF0000FF0000FFFFFFFF00FFFF0000FFFFFF00000000000000FF00FF
+%00FFFF00FFFFFFFF00FFFFFFFF00FFFFFF00FFFFFFFFFFFFFFFF00FFFFFF
+%FFFFFFFF00FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFF00FF00FF0000FF00FF00FFFFFFFFFFFFFFFFFFFFFF
+%FF00000000FFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FF00000000000000
+%00000000000000000000FFFF0000FF00FF000000FF00FF0000FF00000000
+%000000000000000000FF00000000000000000000FFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000FFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FFFFFFFFFFFF00
+%FFFFFF0000FFFF00FFFFFF00FFFFFFFFFFFF00FFFF00FFFFFF0000FFFF00
+%FF0000FF000000FF00FFFF00FF00FF00FF0000000000000000000000FF00
+%FF00FFFF00FFFFFFFFFFFFFFFF00FFFF000000FFFFFF00FFFFFFFF00FFFF
+%FFFFFFFF00FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFF0000FF00FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFF00
+%00FFFFFFFF00FF00FF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000FFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF00FF0000FF0000000000
+%0000FF000000000000000000FF000000FF0000FF0000FF000000FF00FF00
+%FF00FF000000000000000000FF00FF0000000000000000FFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFF00FF0000000000000000000000FFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF00FFFFFFFFFFFF00FF
+%FFFFFF00FFFFFF00FFFFFF00FFFFFFFFFFFF00FFFFFFFFFF00FFFF00FF00
+%00FF000000FF0000FF00FF0000FF00FF00FFFF0000000000FF0000FFFF00
+%FF00FF00FF00FFFF00FFFFFF00FFFF00FF00FFFFFFFF00FFFFFFFF0000FF
+%FFFFFFFFFF00FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFF00FF00FF00FFFFFF00FFFFFFFFFFFFFFFF0000FF00
+%FFFFFFFF00FF00FF00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000FF00000000FF00
+%00000000FF0000000000000000FF000000FF000000FF00FFFF0000FF0000
+%00FF0000000000000000FF0000FF0000FF0000FF0000FF00FFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000FFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF00FFFFFFFFFFFF00FF
+%FFFFFF00FFFFFF00FFFFFFFFFF00FFFFFFFF00FFFF00FF00FF0000FFFF00
+%0000FFFF00000000000000FF0000FF000000000000FFFF000000FFFFFF00
+%FFFF00FF00FF00FF00FF00FFFF00FFFF0000FF00FFFFFFFFFFFFFFFFFF00
+%FFFFFFFFFF00FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFF0000FF00FF00FF00FFFFFFFFFFFF0000FFFFFF00FF
+%FFFFFFFFFF00FF00FFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000
+%0000FFFFFFFFFFFFFFFFFF000000FFFF0000000000000000000000FF00FF
+%00FF000000FF00FF00000000000000FF0000FF000000FFFFFF0000FF00FF
+%FF00FFFF0000FF000000FF000000FF00FF00000000FF00000000FF00FFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFF00000000000000FFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF0000FFFFFFFFFFFF00FF
+%FFFFFF00FFFFFF00FFFFFF00FFFFFFFFFFFF00FF00FF00FF00FFFFFFFF00
+%FF000000FF00FFFFFFFF00FF000000000000FFFFFF00000000FF00FFFF00
+%FF00FFFFFF00FFFF00FF00FF00FF00FF0000FF00FFFFFF00FFFFFFFF00FF
+%00FFFFFFFFFFFF00FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFF0000FF00FFFFFFFFFFFF0000000000FFFFFFFF00FFFF
+%FFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000
+%000000FFFFFFFFFFFF000000000000000000FF0000000000000000000000
+%0000000000000000000000000000000000000000FF00000000FF0000FF00
+%00FFFF0000FF0000000000FF00FF00FF0000FFFF0000FF0000FF00000000
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFF0000000000FFFFFFFFFF00000000000000FFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF00FFFFFFFFFFFF0000FF
+%FFFFFF00FFFFFFFF00FFFF00FF00FFFFFFFFFFFF0000FF00FF00FFFFFF00
+%00FF000000FF000000FFFFFFFFFFFF00FF000000000000FF000000FFFF00
+%FFFFFF00FF00FF00FF00FF00FF00FF00FF00FFFF00FFFF00FFFFFFFF00FF
+%FF00FFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFF0000FF00FF00000000FFFFFFFFFFFFFF0000FFFFFF
+%FFFFFFFFFFFF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000
+%00000000FFFFFFFF0000000000000000000000000000000000FF000000FF
+%00000000FF000000000000000000000000FFFF00000000FFFF000000FFFF
+%FF0000FFFF0000FF000000FF0000FF00FF0000FF00FF00FF00FF00000000
+%0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFF000000000000FF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF0000FFFFFFFFFFFF00FFFF
+%FFFF00FFFFFFFF00FFFFFF00FF00FFFFFF0000FF00FF00FFFFFFFFFFFF00
+%FF00FFFF0000FF00FF0000FF0000FF000000FF00FF00FF0000FF00FF00FF
+%FFFFFFFFFF00FFFF00FF00FF00FF00FFFF00FFFF00FFFF00FFFFFFFFFFFF
+%FF00FFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFF0000FF00FF00FF00FFFF00FFFFFFFFFF00FFFFFFFFFF
+%FFFFFFFFFF00FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+%000000000000FF00000000000000000000FF0000FF00FF00FF00FF00FF00
+%FFFF0000000000000000000000000000000000FF000000FFFF0000000000
+%00FFFFFF00FF00FF00FF00FF00FF00FF00FF00FFFF00FF0000FF00FF0000
+%0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFF0000000000FFFFFFFFFFFFFFFFFFFF000000000000
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF00FFFFFFFFFFFF00FFFF
+%FFFF0000FFFFFFFF00FF00FF0000FFFFFF00FF00FF00FFFFFFFFFFFF0000
+%00FF000000FF00FF00FF0000000000FF00FF00FF00FF00FF0000FFFFFF00
+%FFFFFFFFFF00FFFF00FF00FF00FF00FFFF00FFFFFFFFFFFF00FFFFFFFF00
+%FFFF00FFFFFFFF00FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFF0000FF00FFFF00FF00FFFFFF00FFFF00FFFFFFFFFFFF
+%FFFF000000FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%000000000000FFFF0000000000000000000000FF00FF00000000FF00FF00
+%FF00FFFFFF0000000000000000FF00FF00FF000000000000FF00FFFF0000
+%00000000FFFFFFFF00FF00000000FF00FF0000FF00FF00FF00FF00000000
+%0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFF0000000000
+%00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF0000FFFFFFFFFFFFFF00FFFF
+%FFFF00FFFFFFFFFF00FFFF00FF00FF00FFFF0000FFFFFFFFFFFFFF00FF00
+%000000FF00000000FF00FFFFFFFFFF00FF00FF00FF000000000000FF00FF
+%FFFFFFFFFF00FF00FFFFFFFFFFFF00FFFF00FF00FF00FFFF00FFFFFFFF00
+%FFFFFF00FFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFF000000FF00FFFF00FFFF00FFFF0000FFFFFFFFFFFFFF
+%0000FFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FF000000000000000000000000000000000000FF0000FFFFFF000000FF00
+%00FFFFFF0000FF00FF0000000000FF00FF00FF00FF00000000FF0000FF00
+%FF00000000000000FF000000FF0000FF00FF00FFFF00FF00000000FF00FF
+%00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFF00000000
+%00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFF00FFFFFF
+%FFFF00FFFFFFFFFF00FFFF00FFFF00FFFFFFFF00FFFFFFFFFFFF0000FFFF
+%0000FF00FF00FF0000FF0000000000FF00FF00FF00FFFF000000FF00FFFF
+%FFFFFFFFFF00FFFF00FFFFFFFFFFFFFF00FFFF00FF00FFFF00FFFFFFFFFF
+%00FFFFFF00FFFFFF00FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFF0000FF00FF0000FFFF00FF000000FFFFFFFFFFFF0000
+%FFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFF0000000000000000000000000000000000FF0000FFFFFFFFFF00FF
+%0000FF00FF0000FF00FF0000FFFFFFFF00FF000000FFFF00FF0000FF00FF
+%00FFFFFF0000FF0000FF00000000FF00FF0000FFFF0000FF0000FF00FF00
+%FF00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000
+%0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF0000FFFFFFFFFFFF0000FFFF
+%FFFF00FFFFFFFFFF00FFFFFF00FFFF00FFFFFFFF00FFFFFFFF0000FFFFFF
+%00000000000000FF0000FF00FFFFFF00FF00FF00000000000000FF0000FF
+%FFFFFFFFFF00FF00FFFFFFFFFF0000FF00FFFFFFFFFF00FFFF00FFFFFFFF
+%00FFFFFF0000FF00FF00FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFF0000FF00FFFFFFFF00FF00FFFFFFFFFFFFFFFFFFFFFF
+%FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFF00000000000000000000000000000000FF00FFFFFFFFFFFFFFFF00
+%FFFFFFFF0000FFFFFF00FFFF00FFFFFFFF00FF0000FF0000FFFF0000FF00
+%FF00FFFF00FF00FFFF00FF00FFFF00FF00FF0000FF0000FFFF00FF0000FF
+%00FF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000
+%0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFF00FFFFFF
+%FF00FFFFFFFFFFFFFF00FFFF00FF00FFFFFFFFFF00FFFFFF0000FFFFFFFF
+%FF00FFFFFFFF0000000000FF0000000000000000FF00000000FFFFFF0000
+%FF00FFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFF00FFFFFFFFFF00FFFFFFFF
+%00FFFF00FF00FFFFFF00FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFF000000FF00FFFF00FF00FF00FF00FFFF00FFFF00FF00
+%00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFF00000000000000000000000000FF00FF0000FFFF0000FFFFFF
+%00FFFF00FF00FF0000000000FFFF000000FF000000FFFFFFFFFF00FF00FF
+%00FF00FFFF00FFFF00FF0000FF0000FF00FF00FFFF00FF00FF00FF0000FF
+%00FFFF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+%000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF00FFFF00FFFFFFFF00FFFFFF
+%FF0000FFFFFFFFFFFF00FFFF00FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFF
+%FF0000000000FFFFFFFF000000FF00FFFFFFFFFFFF00FF0000FFFFFFFF00
+%00FFFF000000FF00FFFFFFFFFF00FF00FFFFFFFF00FF00FFFF00FFFFFFFF
+%00FFFFFFFF00FF0000FF00FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFF0000FF00FFFF00FF0000FF00FFFF00FFFF0000FF0000
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFF00000000000000000000000000FF00FFFFFF00FF00FF00FF
+%FF00000000FF00FF0000FF0000FF00FF00000000FFFF0000FFFFFF00FF00
+%FF00FFFFFF000000FF000000FF0000FF00FF0000FF0000FFFF00000000FF
+%00FFFF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+%000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFF00FFFFFF0000FFFFFF
+%FFFFFFFFFF00FFFFFF0000FFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFF
+%FF000000FF0000FF00FFFFFFFFFFFFFFFF00FF0000000000FFFFFFFFFFFF
+%000000FFFFFF00FF00FFFFFFFF000000FFFFFFFF00FFFFFFFFFF00FFFFFF
+%00FF00FF00FF00FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFF0000FF000000FFFFFFFFFF0000FFFF00FF0000FFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFF000000000000000000000000FF00FF00FF00FF00FF0000FF
+%00FFFF000000FFFFFF0000000000FF00FFFF000000FFFF00FFFF0000FF00
+%FFFFFF0000FFFFFF0000FFFFFFFF00FF0000FF00FF00FF000000FF00FFFF
+%00FFFFFF00FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF00FFFFFF00FF00FFFFFF
+%0000FFFFFFFF00FF00FF00000000FFFFFFFFFF000000FFFFFFFFFFFFFFFF
+%FFFF000000FF0000FF0000000000000000FF00FF00FF0000FFFFFFFFFFFF
+%FFFF0000FF00FFFFFFFFFFFF0000FFFF00FFFFFF00FFFF00FF00FFFF00FF
+%FF00FFFFFF00FF0000FF00FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFF000000FF00FF00FF00FF00FFFF000000FFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFF00000000000000000000000000FF00FF00FFFFFFFFFFFF00
+%FFFF00FF000000FFFF00000000FF00FF00FFFF0000FFFF00FFFFFF000000
+%000000FFFFFF00FFFFFF0000FF0000FF00FF0000FF0000FFFF00000000FF
+%00FF0000FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FF00FF00FF00FFFFFF00
+%FF00FF000000FF00FF00FF00FF000000000000FFFFFFFFFFFFFFFFFFFFFF
+%FFFF0000000000FF00FF00FF00FF0000FF00FF00FF00FF00FFFFFFFFFFFF
+%FFFFFFFF0000000000000000FF00FF00FF00FF00FF00FFFFFFFF00FFFF00
+%FF00FF00FFFF00FF00FFFF00FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFF00000000FF00FF00FF00FF000000FFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFF000000000000000000000000FF00FF0000FF00FFFFFFFFFFFF
+%0000FFFF00FF0000000000000000FF00FF00FF0000FF0000FF00000000FF
+%0000FF00FF00FFFFFF0000FFFF00FF00FF0000FFFF00FFFF0000FF00FF00
+%FFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF0000FF000000FF00FF00
+%0000FFFFFFFF00FF0000FF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFF00FF00FF0000FFFF00FF00FFFF00FF00FF000000FFFFFFFFFFFFFF
+%FFFFFFFFFFFFFF000000FFFF00FF00FF00FF00FF00FFFF00FF00FF00FFFF
+%FF0000FF00FFFF00FFFF00FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFF0000FF00FF00FF00000000FFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFF0000000000000000000000000000FF0000000000FFFFFFFFFF00
+%FF00FFFFFF0000FF00FF000000FF00FF00FFFF0000000000FF0000FF0000
+%00FF00FFFFFFFFFF00FF00FF00FF00FF000000FF00FF0000FF00FF000000
+%FF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF000000FF00FFFF00FFFF00FF
+%FF00FF000000FF0000FF00FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFF0000000000FF00FF00FFFFFF00000000000000FFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFF00000000FF00FF00FFFF00FF00FFFFFFFF00FFFF00
+%FF00FF00FF00FFFF0000FF00FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFF000000000000000000000000000000FF00FF00FFFFFFFFFFFFFF
+%0000FFFF0000FF000000FF00FF00FF0000000000000000000000FF0000FF
+%FFFFFF000000FF00FF0000FF0000FF0000FF00FFFF00FF000000FF00FF00
+%00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF0000FF000000FF00FF00
+%00FF00FFFF00FF00FF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFF0000FF00000000000000000000FFFFFFFF00FFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFF000000FF00FF00FF00FF00FF00FF00FF00FF
+%FFFF00FFFF00FFFFFF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFF000000000000000000000000000000000000000000FFFFFFFFFF00
+%FFFF000000FF000000FFFF000000000000FF0000FF00000000FF0000FF00
+%FF00FFFFFF00FF00000000FF00FF0000FF0000FF000000FF00FF00000000
+%0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF0000FFFF0000FF00FF0000FF
+%00FF00FF00FF00FF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFF00FF00FFFFFF00FF00FFFFFF0000000000FFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFF00FF00FFFFFF00FF00
+%FF00FFFF00FFFF00FF00FF00FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFF0000000000FF00000000000000000000FF0000FF00FF00000000FFFF
+%FF00000000000000FF000000FF0000FF0000FF00000000FFFF0000FF00FF
+%00FFFF0000FF00FF00FF0000FF00FF000000FF0000FF00000000FF000000
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FF0000FF0000FF0000FF00
+%00FFFF00FF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFF000000000000000000000000FF00FF000000FFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FFFFFF00FF00FF00FF
+%00FF0000FF0000FF00FF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FF0000000000FFFF000000000000000000000000000000000000FFFF0000
+%00000000000000FF00FF00000000FF0000FF0000FFFF00FF0000FF00FF00
+%FFFF00FFFF000000000000FF00000000FF00FF00FF0000FF00000000FFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF0000FFFF00FF00FFFFFF0000
+%FF0000FF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFF0000FF00FF00FF000000FF0000000000FFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FF00FF00FF00
+%FF00FFFF00FFFF00FF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%000000000000FFFF0000000000000000000000000000000000FF00000000
+%000000000000FF00000000FF00FF00FF000000FF00FF00FF00FF00000000
+%0000FF0000000000FF00FF0000FF00FF0000FF000000000000FFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF0000000000000000FF0000FF00
+%00FF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFF0000000000FFFFFFFFFF00FF00000000FFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000
+%000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+%0000000000FFFFFFFF00000000000000000000000000000000000000FF00
+%00000000FF00FF00FFFF00FFFF0000000000FFFF00000000000000000000
+%00000000000000FF0000FF0000FF0000FF00FF00000000FFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000
+%0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000FF0000FF00FF00FF0000
+%00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFF0000FFFF0000000000FF00000000FFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%00FF00000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000
+%00000000FFFFFFFFFFFFFF000000FFFF00FF0000000000FF0000FF000000
+%0000000000FF00FF00FFFF00FF00000000FF000000FF0000000000000000
+%0000FF00FF00FF0000FF0000FF00FF000000000000FFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+%000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000FF00000000
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFF000000FFFFFFFFFFFF0000000000FFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000
+%000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFF0000000000FF00
+%000000FFFF00FF00FF0000000000FF00FF00FF00FF000000000000000000
+%00FF000000000000FF0000FF00FF00000000FFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000FFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFF0000FF00FFFFFF0000000000FFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000
+%0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FF000000000000
+%0000FFFF00FF00FF00FF0000FF000000FF0000FF0000FFFF00000000FF00
+%000000FF00FF00000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFF0000000000FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFF0000FF00FF00000000000000FFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000FF
+%0000FF00FF00FF00000000FFFF0000FFFFFFFF0000FFFFFFFF0000000000
+%000000000000FF00FFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFF000000FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFF0000FF0000FF0000000000FFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000FFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000FFFF00
+%00FF00FF00000000000000FFFF00FFFFFF0000FFFFFFFFFFFF00FF00FF00
+%FFFFFFFFFFFF00FFFF00FFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFF0000FF0000000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FF0000FF
+%000000000000000000FF00FFFF00FF0000FFFFFFFFFFFFFFFFFF00FF00FF
+%00FFFFFFFFFFFF0000FF00FFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF0000FFFF00
+%FF00000000FF00FFFF00000000000000FF00FF00FF000000FF00FF000000
+%FFFFFFFFFFFFFFFF00FF00FF00FFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF0000FF
+%FF000000FF0000FFFFFFFFFFFF00FF00000000FF00FFFFFFFFFFFF00FFFF
+%0000FFFFFFFFFFFFFF00FF00FFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFF
+%FF000000FFFFFF0000FFFFFFFFFF00FFFFFFFFFFFF00FF00FF00FFFFFF00
+%FFFFFFFFFFFFFFFFFFFF00FF00FFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF00FF
+%FFFF00FF0000FFFFFF0000FFFFFFFF00FFFFFFFFFFFFFFFFFFFFFF0000FF
+%FF00FFFFFFFFFFFFFFFFFF00FF00FFFFFFFFFFFF00FFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000
+%FFFF00FFFF0000FFFFFFFF0000FF00FFFF00FFFFFFFFFFFFFFFFFFFF00FF
+%00FFFFFF00FF000000FF00FF00FF00FFFFFFFFFF0000FFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF00
+%00FFFF00FFFF000000FFFFFF0000FF00FFFFFFFFFFFFFFFFFFFFFF000000
+%FF0000FF00FF00FFFFFFFF000000FFFFFF0000FFFF00FFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF
+%00FFFFFF00FFFF00FFFF0000FF00000000FF00000000FFFFFFFFFFFFFF00
+%00FFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFF00FFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+%FF00FFFF0000FFFF0000FFFF00FFFFFFFF00FFFFFFFFFF00000000000000
+%FF0000FF00FF000000000000FF00FF00FFFFFFFFFFFF00FFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000
+%FF00FFFFFF00FFFFFFFF0000FFFF000000FFFFFFFFFFFFFFFFFFFF00FF00
+%00FFFF00FF00FF00FFFFFFFFFF0000FFFFFFFFFFFFFF00FFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%00FF00FFFFFF00FFFFFFFFFF0000FFFFFF000000FFFFFFFFFFFFFFFF00FF
+%FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FF00FF00FFFFFF00FFFFFFFFFFFF0000FFFFFFFF000000FFFFFFFFFFFF00
+%0000FFFFFFFFFFFFFFFFFFFFFFFFFF00FF00FFFFFFFF00FFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FF00FF00FFFFFFFF00FFFFFFFFFFFFFF0000FFFFFFFFFFFF0000000000FF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF00FFFFFF0000FFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFF000000FFFFFF0000FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFF00FF00
+%00FF00FFFFFFFF00FFFF00FF00000000FFFFFFFFFF00000000FFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFF000000FFFFFF0000FFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFF0000
+%0000FF00FF00FFFFFFFFFFFFFFFF00FFFF000000FF00FF000000FFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFF000000FFFFFF000000FFFFFFFFFFFFFFFFFF00000000FF00FFFF
+%FFFF00FF00FF00000000FF000000FF0000FFFFFFFF000000FF0000FFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFF000000FFFFFF00FF0000FFFFFFFFFFFFFFFFFFFF0000FF00FF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFF0000FFFF000000FFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFF000000FFFFFF00FF0000FFFFFFFFFFFFFFFFFFFFFF00FF00
+%00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF0000FF000000FFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFF0000FFFFFFFF00FFFF0000FFFFFFFFFFFFFFFF00FF00FF
+%FFFF0000000000FFFFFFFFFF00FF00000000FFFFFF00FF0000FF0000FFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFF000000FFFFFF0000FF00000000FFFFFFFF0000FF00FF
+%FFFFFFFF00FF000000000000FF00FFFFFFFFFFFFFFFF00FF0000FF0000FF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFF000000FFFFFFFF00FFFF0000000000FFFF00000000
+%00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF00FFFF00FF00FF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFF0000FFFFFF0000FFFFFF0000FF00FF00FFFFFF
+%FFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF00FF0000FF000000
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFF00000000FFFFFF0000FFFFFF00000000FF0000
+%FFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFF00FF00FF00FF0000
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFF00FF00FFFF00FF0000FFFF
+%FF0000000000FFFF0000000000FF00FFFFFFFFFFFFFF00FF00FFFF00FF00
+%00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFF00000000FF00FF000000
+%00FFFFFFFFFFFF00FFFFFFFFFF0000000000FF00FFFFFFFFFF0000FF0000
+%00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FF00FF00FF00FFFFFFFFFF
+%FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF00000000FFFFFF00FF
+%00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FF0000FF00FFFFFF
+%FFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF00FF000000FF00
+%00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FF0000FFFFFFFF
+%FFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFF0000FF00FF000000
+%0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF00FF00FFFFFF
+%FFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFFFFFFFF00FF00FF00FF
+%0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFF00FFFF
+%FFFFFFFFFFFFFFFFFFFFFFFF00000000FF00FFFFFFFFFF00FF000000FF00
+%FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFF0000
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFFFFFF00FF00
+%000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFF
+%0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF0000000000FFFFFF
+%FFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FF
+%FFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF00FF00FF000000
+%000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000
+%00FFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000FF000000FF00
+%FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00
+%000000FFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF00FF0000
+%000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FF000000FFFFFFFF00000000FFFFFFFFFFFFFF0000FF0000FF00FF00FF00
+%000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFF00000000FFFFFFFF00000000FFFFFFFFFFFF00FF000000FF00FF00
+%FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFF00000000FFFFFFFF00FF000000FFFFFFFF00FF00FF00FF0000
+%000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFF000000FF00FF00000000000000FF0000000000000000
+%000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFF00000000FF00FF00FF00000000FF00FF00FF00
+%000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000FF
+%000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FF00
+%00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%%EndBinary
+XH
+%AI5_EndRaster
+B /BBAccumRotation (0.000000) XT
+U /BBAccumRotation (0.000000) XT
+LB
+%AI5_EndLayer--
+%%PageTrailer
+gsave annotatepage grestore showpage
+%%Trailer
+Adobe_Illustrator_AI5 /terminate get exec
+Adobe_shading_AI8 /terminate get exec
+Adobe_ColorImage_AI6 /terminate get exec
+Adobe_cshow /terminate get exec
+Adobe_level2_AI5 /terminate get exec
+%%EOF
diff --git a/Master/texmf-dist/doc/latex/acmart/fly-eps-converted-to.pdf b/Master/texmf-dist/doc/latex/acmart/fly-eps-converted-to.pdf
new file mode 100644
index 00000000000..b9cf9ab53c0
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/acmart/fly-eps-converted-to.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/acmart/fly.eps b/Master/texmf-dist/doc/latex/acmart/fly.eps
new file mode 100644
index 00000000000..4f6c7957523
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/acmart/fly.eps
@@ -0,0 +1,5827 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Adobe Illustrator(R) 8.0
+%%AI8_CreatorVersion: 8.0.1
+%%For: (Mark W Richards) (Association for Computing Machinery)
+%%Title: (newfly.eps)
+%%CreationDate: (2/9/00) (11:18 AM)
+%%BoundingBox: 289 380 323 412
+%%HiResBoundingBox: 289.4404 380.3994 322.5605 411.5996
+%%DocumentProcessColors: Black
+%%DocumentSuppliedResources: procset Adobe_level2_AI5 1.2 0
+%%+ procset Adobe_ColorImage_AI6 1.3 0
+%%+ procset Adobe_Illustrator_AI5 1.3 0
+%%+ procset Adobe_cshow 2.0 8
+%%+ procset Adobe_shading_AI8 1.0 0
+%AI5_FileFormat 4.0
+%AI3_ColorUsage: Black&White
+%AI3_IncludePlacedImages
+%AI7_ImageSettings: 1
+%%CMYKProcessColor: 1 1 1 1 ([Registration])
+%%AI6_ColorSeparationSet: 1 1 (AI6 Default Color Separation Set)
+%%+ Options: 1 16 0 1 0 1 1 1 0 1 1 1 1 18 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 2 3 4
+%%+ PPD: 1 21 0 0 60 45 2 2 1 0 0 1 0 0 0 0 0 0 0 0 0 0 ()
+%AI3_TemplateBox: 306.5 395.5 306.5 395.5
+%AI3_TileBox: 13 13 599 779
+%AI3_DocumentPreview: Header
+%AI5_ArtSize: 612 792
+%AI5_RulerUnits: 0
+%AI5_ArtFlags: 1 0 0 1 0 0 1 0 0
+%AI5_TargetResolution: 800
+%AI5_NumLayers: 1
+%AI8_OpenToView: 115 531 3 1016 675 18 0 1 8 65 0 0
+%AI5_OpenViewLayers: 7
+%%PageOrigin:13 13
+%%AI3_PaperRect:-13 779 599 -13
+%%AI3_Margin:13 -13 -13 13
+%AI7_GridSettings: 7.2 8 7.2 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9
+%AI7_Thumbnail: 128 124 8
+%%BeginBinary
+%0000330000660000990000CC0033000033330033660033990033CC0033FF
+%0066000066330066660066990066CC0066FF009900009933009966009999
+%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66
+%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333
+%3333663333993333CC3333FF3366003366333366663366993366CC3366FF
+%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99
+%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033
+%6600666600996600CC6600FF6633006633336633666633996633CC6633FF
+%6666006666336666666666996666CC6666FF669900669933669966669999
+%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33
+%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF
+%9933009933339933669933999933CC9933FF996600996633996666996699
+%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33
+%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF
+%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399
+%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933
+%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF
+%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC
+%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699
+%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33
+%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100
+%000011111111220000002200000022222222440000004400000044444444
+%550000005500000055555555770000007700000077777777880000008800
+%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB
+%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF
+%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF
+%524C45FDFCFFFDFCFFFDAEFFF8FFF8F8F8FD7EFFFD05F8FD1EFFF8FD5EFF
+%F8F8F8FD1DFFFD04F8FD5DFFF8F8F8FD1AFFFD08F8FD5CFFF8F8FD19FFFD
+%06F8FD5FFFF8F8F8FD17FFFD05F8FD61FFF8F8F8FD16FFFD06F8FD61FFF8
+%F8F8FD16FFFD05F8FD62FFFD04F8FD15FFFD04F8FD64FFF8F8F8FD15FFFD
+%04F8FD64FFF8F8F8FD14FFFD04F8FD66FFF8F8F8FD13FFFD04F8FD66FFF8
+%F8F8FD12FFFD04F8FD67FFFD04F8FD11FFFD04F8FD68FFFD05F8FD0EFFFD
+%04F8FD69FFFD05F8FD0EFFFD04F8FD6AFFFD05F8FD0CFFFD04F8FD6BFFFD
+%06F8FD0AFFFD05F8FD6CFFFD06F8FD09FFFD05F8FD6DFFFD06F8FD06FFFD
+%06F8FD6FFFFD06F8FD05FFFD05F8FD71FFFD06F8FFFFFFFD06F8FD73FFFD
+%0BF8FD76FFFD0AF8FFF8FD71FFFD10F8FD6FFFFD12F8FD6EFFFD12F8FD6D
+%FFFD13F8FD6DFFFD13F8FD6EFFFD12F8FD6EFFFD12F8FD6DFFFD14F8FD6D
+%FFFD06F8FFFD08F8FFFD04F8FD6BFFFD04F8FFFD04F8FFF8FFFD06F8FFF8
+%F8F8FD67FFFD09F8FFFFFFF8FFF8FFF8FFFFFD04F8FFF8F8F8FD64FFFD0D
+%F8FFF8FFF8FFF8F8FFFD05F8FFF8F8FD63FFF8F8F8FFFD04F8FFF8FFF8FF
+%F8FFF8FFF8F8FFFD04F8FFFD05F8FD60FFFD05F8FFFD07F8FFF8FFFFF8FF
+%F8FFF8FFFD04F8FFFD05F8FD5FFFFD04F8FFF8FFF8F8F8FFF8FFF8FFF8FD
+%05FFFD04F8FFF8F8FFFD04F8FD5EFFF8FFFD0AF8FD05FFF8FD04FFF8FFF8
+%F8F8FFFD04F8FFF8F8F8FD58FFFD06F8FFFD04F8FFF8F8FFF8FD05FFF8F8
+%FFFFF8FFFFFD08F8FFFFF8FFF8F8FD56FFF8F8F8FFF8FFF8FFFD06F8FFF8
+%FD04FFF8FD04FFFD09F8FFF8F8FFFFF8FFF8F8FD53FFF8F8F8FFF8F8FFFF
+%F8FFF8F8FFF8FFF8F8FD05FFF8F8FFFFF8FFFFFFF8F8FFF8F8F8FFFFFFF8
+%FFFFF8FFF8FD53FFF8F8FFF8F8FFFFF8FFF8FFFD06F8FFF8FFFFF8FFFFFF
+%F8FFF8F8F8FFFD04F8FFFFF8FFFFF8FFFFF8F8FD52FFF8FFFFF8F8FD04FF
+%FD09F8FFFFF8F8FFF8FFF8FFF8F8FFFFFD0AF8FFF8FFFFF8F8FD4FFFF8F8
+%FFF8F8FD04FFF8F8F8FFFD08F8FFF8F8FFFFF8FFFFF8FFF8FFFD06F8FFF8
+%F8FFF8FFF8FFFFF8F8F8FD4CFFF8FFFFF8FD04FFFD06F8FFFFFD07F8FFFF
+%F8FFF8FD05FFFD04F8FFFD07F8FFFFF8FFFD04F8FD4AFFFD04F8FD04FFF8
+%FFFFF8F8F8FFF8FFFFFD06F8FFFFFFF8F8F8FFF8FFFFFD06F8FFFD05F8FF
+%FFFFF8F8FFF8F8F8FD48FFF8F8F8FD04FFF8F8FFFFF8FFF8F8F8FFF8FFF8
+%FFFD09F8FFF8FFF8FFF8FFF8FFFD05F8FFF8F8FFFFFFF8FFF8FFF8F8FD48
+%FFF8F8FD04FFF8F8FFFFF8F8FFFFF8F8F8FFF8FFFD04F8FFF8FFF8F8FFFD
+%10F8FFF8FD05FFF8FFF8F8FD46FFF8F8FD04FFF8FFFFFFF8F8FFFFF8F8F8
+%FFF8FFF8FFFFF8F8F8FFF8F8FFF8FFFFF8FFFD09F8FFF8F8FFF8FD06FFF8
+%FFF8F8F8FD43FFF8F8FD04FFF8FFFFFFF8F8FFFFF8FFF8F8F8FFF8FFF8F8
+%FFFD04F8FFFFFFF8FFFFFD09F8FFF8F8FFFFF8F8FFFFF8FFFFFFF8FFF8FF
+%F8FD41FFF8F8F8FFFFF8F8FFFFFFF8FFF8FFFFF8FFFD04F8FFF8FFF8F8FF
+%F8F8F8FFFFF8F8FFF8FFFD08F8FFF8F8F8FFFFF8FFFFFFF8FD05FFF8F8FD
+%40FFF8F8FFFFF8F8FD04FFF8FFF8FFFFF8FFFD06F8FFFD04F8FFFFF8F8F8
+%FFF8FFFD08F8FFF8FFF8FD05FFF8FFFFFFF8FFFFFFF8FFF8FFF8F8FD3BFF
+%F8F8F8FFFFFFF8FD05FFF8FFF8FFF8FFFFF8FFFFFFF8F8F8FFFFFD09F8FF
+%FD08F8FFFD05F8FFFFFFF8F8FFFFF8FD04FFF8FFF8FFF8FD3BFFF8F8FFFF
+%FFF8F8FD04FFF8FFF8FFF8F8FFFFF8FD04FFF8FFFFF8F8FFF8FFFD04F8FF
+%F8FFFD06F8FFF8FFF8FFF8F8F8FFFFFFF8FFFFFFF8FD04FFF8FFF8FFF8FD
+%39FFF8F8FFFFFFF8FD06FFF8FFFFF8F8FFFFFFFD08F8FFFD05F8FFF8FD04
+%FFF8FFF8F8F8FFF8F8F8FFF8FFF8F8FFFFFFF8F8FFFFF8F8FD04FFF8FFF8
+%FD39FFF8F8F8FFFFF8FFF8FD04FFF8FFF8FFF8FFF8FFF8F8FFFFF8F8FFF8
+%F8F8FFF8F8FFFFF8FFF8F8FFFFFFFD06F8FFFFF8FFF8FFF8FFF8FD06FFF8
+%FD05FFF8FFF8F8FD36FFF8F8F8FFFFFFF8FFF8FD04FFF8FFF8FFF8F8FFF8
+%FFF8F8FFFFFD04F8FFF8FFF8F8F8FFF8FFF8FFFFF8FFFD08F8FFF8F8FFF8
+%FFF8FFF8FFFFFFF8F8FD05FFF8FFFFF8FD35FFF8F8FFFFF8F8FFF8FD04FF
+%F8FFFFF8FFF8FD05FFF8FD04FFFD07F8FFF8FFF8F8FFF8FFFD05F8FFFFF8
+%F8FFF8F8FFF8FFF8FFF8FD04FFF8FD06FFF8F8FFF8FD33FFF8F8FFFFFFF8
+%FFF8F8FD04FFF8FFF8FFF8FFFFF8FFFFF8FFF8FFF8F8FFF8F8FFF8FFF8F8
+%FFFFF8FFF8FFF8FFF8FFF8FFF8F8FFFFF8F8F8FFFFF8FFFFF8FD04FFF8FD
+%08FFF8FFF8FD31FFF8F8F8FFFFF8FFFFF8FD04FFF8FFFFF8FFFFF8FD06FF
+%F8FFF8FFF8FFF8F8FFF8F8FFFFF8F8F8FFF8FFF8F8FFFD04F8FFFFF8F8F8
+%FFF8FFFD04F8FFFFFFF8F8FD06FFF8FFF8F8F8FD30FFF8F8FFFFF8F8FFF8
+%F8FD04FFF8FFFFF8FFFFF8FD04FFF8FFFFF8FFF8F8FFFFFD0DF8FFF8F8F8
+%FFFD06F8FFFFF8FFFFFFF8FD04FFF8F8FD06FFF8FFF8FFF8FD2EFFF8F8FF
+%F8F8FFFFFFF8F8FFFFFFF8FFFFF8FFFFFFF8FD07FFF8F8FFF8F8F8FFF8FF
+%FD04F8FFF8F8F8FFF8F8F8FFF8F8FFF8FFF8F8FFF8FFF8FD04FFF8FFFFFF
+%F8FFF8FD04FFF8FFF8FFF8F8F8FD2CFFF8F8FFF8FFF8F8FFF8F8FD04FFF8
+%FFFFF8FFFFFFF8FFFFFFF8F8FFFFFFF8F8FFF8FFFFF8F8F8FD07FFFD05F8
+%FFF8F8FFF8F8FFF8FFFFF8FD04FFF8FD04FFF8FD05FFF8FFFFF8FFF8F8FD
+%2CFFF8FFFFF8FFF8FFF8FFF8FFFFFFF8FD06FFF8FD04FFF8F8FD04FFF8F8
+%F8FFFFFFFD06F8FFFD04F8FFFFF8FFFD04F8FFFFF8FFFFF8FFFFF8FFFFF8
+%FFF8FFF8FFF8F8FFFFFFF8FFFFFFFD04F8FD2BFFFD04F8FFF8F8F8FD04FF
+%F8FFFFF8FFFFFFF8FD09FFFD06F8FFF8F8FD07FFF8FFFFFFF8FFFD04F8FF
+%FFF8FFFFFFF8FFF8FFFFF8F8FFF8F8FFFFF8FFFFFFF8FD04FFF8F8F8FD29
+%FFF8FFFFF8FFFFF8FFF8FFFFF8FFFFF8FFFFF8FFFFFFF8FD04FFF8F8FFFD
+%06F8FFF8F8FFF8F8FD05FFF8FFF8F8F8FFF8F8FFFFF8FFFFF8FFFFFFF8FF
+%F8FFFFFFF8FFF8FFF8FFF8F8FFFFF8FD04FFF8FFF8F8FD27FFF8F8FFF8FF
+%F8FFFFFD06F8FD04FFF8FFFFFFF8FD06FFF8FFFD06F8FFF8F8FFF8FFF8FF
+%FD04F8FFFD04F8FFF8F8F8FFF8FFF8FFFFF8FFF8FFFFF8FFF8FFF8F8FFFF
+%F8FFFFFFF8FD04FFF8FFF8FD26FFF8F8FFF8FD04FFF8F8FFFFF8FFFFF8F8
+%FFF8F8FFFFF8F8FFF8FFF8FFF8FFFD08F8FFFD06F8FFF8FFF8FFF8F8F8FF
+%F8F8FFF8FFFFFFF8FFFFFFF8F8FFFFFFF8F8F8FFF8FFFFF8FFFFFFF8FD05
+%FFF8F8F8FD25FFF8F8FD06FFF8FFF8FFF8F8F8FFFFF8FFF8FFF8FFF8FFF8
+%F8F8FFF8F8FFF8FFFD04F8FFF8FFF8F8F8FFFFF8FFF8FFF8F8FFFFF8FFFD
+%06F8FFF8FFF8FFFFF8FFF8FFF8FFFFFFF8FFFFF8FFFFF8FD06FFF8F8F8FD
+%23FFF8F8FD07FFF8FFF8FFF8FFFFF8FFF8F8FFF8FFFD04F8FFFFF8F8FFFD
+%08F8FFF8FFFFF8F8F8FFF8FFF8F8F8FFFD06F8FFFFFFF8FFFFFFF8FFF8FF
+%F8FFF8FFFFFFF8FD06FFF8FFFFFFF8FFFFF8F8FD23FFF8F8FFF8FD05FFF8
+%FFFFFFF8FFFFF8FFF8F8FFF8FFF8FFF8FFF8FFFFFFF8FFFD06F8FFF8FFFF
+%F8F8FFFFF8FFF8FFF8F8FFF8F8FFF8F8F8FFFFF8F8FFF8FFF8FFF8FFF8FF
+%F8FFFFFFF8FFF8F8FFFFFFF8FD04FFF8FFF8FFF8FD21FFF8F8FFFFF8FD04
+%FFF8FFF8FD07FFF8FFFFF8F8FFF8FFF8FFF8FD04FFF8F8FFF8F8F8FFFFF8
+%FFF8F8FFF8FFF8FFF8F8FFF8FFFFFD04F8FFFFFFF8FFFFFFF8FFF8FD04FF
+%F8FFFFF8FD04FFF8FFFFF8FFFFF8FFF8FFF8F8FD21FFF8F8FFF8FD05FFF8
+%FFF8FFF8FFFFF8FFF8FFF8FD04FFF8FFF8FD06FFF8F8F8FFF8FFF8FD04FF
+%F8FFFFF8FFFFF8F8FFF8FFF8FFF8F8F8FFFFF8FD04FFF8FFF8FD04FFF8FF
+%FFF8F8FFF8F8FFFFF8FD04FFF8FFFFF8FD21FFF8F8FFFFF8FD04FFF8FFFF
+%F8FFF8FFFFF8FFFFF8FD04FFF8FD09FFF8FFFD04F8FFF8FFF8F8FFF8FD04
+%FFF8F8FFFFFD06F8FFFFF8F8FFFFFFF8FFF8FD08FFF8FFFFF8FFF8FFF8F8
+%FFF8FFF8FFFFF8F8FD1FFFF8FFFFF8FD05FFF8FFFFF8FFF8FFF8F8FFF8FD
+%06FFF8FFF8F8FD05FFF8F8F8FFF8F8FFF8FFF8FFFFF8FFFFF8F8F8FFF8FF
+%FD06F8FFFFF8FD04FFF8FFF8FD04FFF8FFFFFFF8FFF8FFFFF8FFFFF8F8FF
+%F8FD05FFF8FD1DFFF8F8FFFFF8FD05FFF8FFFFF8FD04FFF8FFFFF8FD04FF
+%F8FD09FFF8FFFD05F8FFF8F8F8FFFFF8F8FFF8F8FFFFF8FFFD05F8FFFFFF
+%F8FFFFFFF8FFFFF8FD04FFF8FFFFF8FFFFF8FFFFFFF8FFF8FD07FFF8FD1D
+%FFF8FFFFF8FD05FFF8FFFFF8FFF8FFFFF8FFFFF8FFF8FFFFFFF8F8FFFFF8
+%FFFFFFF8FFFD04F8FFF8F8FFF8F8FFFFFFF8FFFFF8F8FFFFFFFD06F8FFF8
+%FFF8FFFFF8FFFFFFF8FD04FFF8FFFFFFF8FD07FFF8FD06FFF8FFF8FD1BFF
+%F8F8FFF8F8FD05FFF8FFFFFFF8F8FFFFF8FFFFF8FD06FFF8FFFFF8FFFFF8
+%F8FFFFF8FFF8F8FFF8F8F8FFFFFFF8FFF8FFF8FFFD0AF8FFF8FFF8FFFFF8
+%FD07FFF8FFFFF8F8F8FFFFF8FD04FFF8FD05FFF8FFFFF8FD1AFFF8FFFFF8
+%FD05FFF8FD04FFF8FFFFFFF8FFFFF8FD06FFF8FD07FFF8FFF8F8FFF8F8F8
+%FFF8F8F8FFF8F8FFF8FFF8FFFFFD04F8FFF8F8FFFFF8FFF8FFF8FFFFFFF8
+%FFFFFFF8FFFFF8FFF8FFFFFFF8FD04FFF8F8FD05FFF8FFF8F8FD19FFF8FF
+%FFF8FD05FFF8FD04FFF8FFFFFFF8FD04FFF8FD04FFF8FFFFF8FFF8F8F8FF
+%FFF8F8F8FFFFFD06F8FFF8F8FFFD06F8FFF8F8F8FFFFFFF8FFFFF8FFF8F8
+%FFF8FFF8FFFFF8FFFFF8F8FD0AFFF8FD04FFF8FFFFF8FD18FFF8FFFFF8F8
+%FD05FFF8FD04FFF8FFFFFFF8FFFFF8FD06FFF8FFF8FFF8FD05FFF8FFF8F8
+%F8FFF8FFFFFFF8FFFD06F8FFFFFFF8F8F8FFF8FFFFF8FFF8FD05FFF8FFF8
+%FFF8FFF8FFF8F8FD04FFF8FD04FFF8FFF8FD05FFF8FFF8FD17FFF8F8FFF8
+%FD05FFF8F8FD04FFF8FD04FFF8FFF8FFF8FD06FFF8F8FFF8F8FFFFFFF8F8
+%FFF8F8F8FFF8F8FD06FFF8FFFD05F8FFF8F8F8FFFFF8FFFFFFF8FFFFF8FF
+%F8FFF8FFF8FFF8FFF8FFF8FFFFF8FD04FFF8FFFFF8FD05FFF8F8FD17FFF8
+%FFF8F8FD05FFF8FD04FFF8FD04FFF8FFFFF8FFF8FFFFFFF8F8FFF8FFF8FD
+%05FFF8FFF8FFFFF8F8FFF8F8F8FFF8F8FFF8F8F8FFF8FFFFF8F8FFF8FFF8
+%FD08FFF8FFF8FFF8FFF8FFFFF8FFF8FFFFF8FD07FFF8FD05FFF8FD18FFF8
+%F8FFF8FD05FFF8FD04FFF8F8FD04FFF8FFFFF8F8FFFFFFF8FFF8FFF8FD05
+%FFF8F8F8FFF8F8F8FFF8FFFFFD05F8FFF8FFF8FFF8F8FFF8F8FFFFFFF8FD
+%07FFF8FFF8FFF8FFF8FFFFF8FD05FFF8FD04FFF8FFFFF8FFFFFFF8FFF8F8
+%FD15FFF8FFF8F8FD06FFF8FD04FFF8FD05FFF8FFF8FFF8FFF8FFFFF8F8FD
+%06FFF8FFFD04F8FFFD05F8FD05FFF8FFF8FFF8FFFD05F8FFF8FD07FFF8FD
+%06FFF8FFFFF8FFFFF8FFFFF8FD04FFF8FD09FFF8FD15FFFD04F8FD0BFFF8
+%FD05FFF8FFF8FFFFF8FD04FFF8FD05FFF8F8FFFFF8F8FFF8FFF8FFF8FFFD
+%05F8FFF8FFF8FFF8FFF8F8F8FFF8FD09FFF8FD07FFF8FFFFFFF8FFFFF8FD
+%05FFF8FFFFF8FFFFFFF8FFF8F8FD14FFF8FFF8F8FD06FFF8FD04FFF8FD05
+%FFF8FFFFF8FFFFF8FD04FFF8FFFFFFF8F8FFFFFFFD07F8FFF8FFF8FFFFFF
+%F8FFF8FFFD06F8FFF8F8FD07FFF8FD05FFF8F8FFF8FD04FFF8FFFFF8FD04
+%FFF8FFFFF8F8FFF8FFF8FFF8FD14FFF8F8F8FD0BFFF8FD07FFF8FFF8FFF8
+%FD05FFF8FFFFFFF8FD05FFF8FD04FFFD04F8FFFD08F8FFF8F8F8FFFFFFF8
+%F8FFF8FD0CFFF8FD08FFF8FD04FFF8FFFFFFF8FFFFFFF8FFF8F8FD13FFF8
+%FFF8FFFFF8FD08FFF8F8FD06FFF8FFF8FD0AFFF8FD06FFFD05F8FFFFFFF8
+%F8F8FFF8FD07FFF8F8FD04FFF8F8FFFFF8F8FFF8FD05FFF8FFF8FFFFFFF8
+%FFF8FFFFF8FD04FFF8FFFFFFF8FFF8F8FFF8FFF8FD13FFF8F8FFFFF8FFFF
+%FFF8FD04FFF8F8FD04FFF8FFF8FFF8F8F8FD05FFF8F8F8FD09FFF8F8F8FF
+%FD0AF8FFF8FFF8F8F8FD08FFF8F8FD07FFF8F8FFFFF8FFFFF8FFFFF8FFF8
+%FFFFF8FFFFF8FFFFF8FFF8F8FFF8FFF8F8FD12FFFD04F8FFF8FFF8FFF8FF
+%FFF8FFF8FFF8F8F8FFF8FFF8F8FFFD06F8FD0CFFFD05F8FFFFF8FFF8FFF8
+%F8FFF8FFF8FFFFF8FD0AFFFD07F8FFF8FFF8FFF8FFFFF8FD04FFF8FFFFF8
+%FFF8FFFFFFF8FFF8FFFFF8FFF8FD12FFF8F8F8FFF8F8FFFD04F8FFF8F8F8
+%FD04FFF8FFFD06F8FD11FFF8FFF8FFF8FFFFF8FFF8FFFFF8FFF8FFF8F8FD
+%0DFFF8F8F8FFFFF8FFF8FFF8FFF8F8FFFFF8FFF8FFF8FFFFFFF8F8F8FFFF
+%F8FFFFF8FFF8F8FD12FFF8FFF8F8F8FFF8FFFFF8FFF8FFFFF8FFF8F8F8FF
+%F8F8FFFFF8F8FD12FFFD06F8FFF8FFFFFFFD06F8FD10FFFD04F8FFF8FFF8
+%FFFFFFF8FD04FFF8FFFFF8FFF8FFFFF8FFFFF8F8FFF8FFF8FD12FFF8F8F8
+%FFF8F8FFFD04F8FFF8F8FFF8FFFFF8FFF8FFF8F8F8FD14FFF8F8FFFD09F8
+%FD17FFF8F8F8FFF8FFF8F8FFF8FFF8FFF8FFF8FFFFFFF8FFF8FFFFFFF8F8
+%FFF8F8FD12FFF8FFF8F8FFFFF8F8FFF8F8F8FFF8FFF8FFF8FFF8FFF8F8F8
+%FD15FFF8FFF8FFFFF8FFF8FFFFFFFD05F8FD15FFFD04F8FFFFF8FFF8FFFF
+%FFF8FFF8FFF8FFF8FFFFF8FFF8FFF8FFF8FD11FFFD04F8FFF8F8FFF8F8FF
+%F8FFF8F8FFFFF8FFF8FFF8F8F8FD16FFFD0BF8FFF8FFF8F8FD17FFFD04F8
+%FFFFFFF8FFF8FFF8FFF8FFF8FFF8F8FFF8FFF8F8F8FD13FFF8FFF8F8FFFF
+%F8FFF8FFFFF8F8FFF8F8FFFD04F8FD19FFF8F8FFFFF8FFF8F8F8FFFD05F8
+%FD1AFFFD04F8FFF8FFF8FFF8FFF8FFF8FFFFF8FFFD04F8FD12FFF8FFFD08
+%F8FFF8FFF8F8FFFD04F8FD1BFFFD04F8FD05FFF8FFFD04F8FD1CFFFD13F8
+%FD13FFFD05F8FFF8F8FFF8FFFFFD06F8FD1EFFF8F8FFFD05F8FFFD04F8FD
+%25FFF8FFFD06F8FD17FFFD09F8FFF8F8F8FD22FFF8F8FD06FFFD05F8FD44
+%FFFD0AF8FD26FFF8FFF8FFFFFFFD05F8FD75FFF8FFF8FFFD07F8FD76FFF8
+%F8FFFD05F8FD78FFFD08F8FD79FFFD06F8FDFCFFFDFCFFFDFCFFFDFCFFFD
+%FCFFFDFCFFFD56FFFF
+%%EndBinary
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset Adobe_level2_AI5 1.2 0
+%%Title: (Adobe Illustrator (R) Version 5.0 Level 2 Emulation)
+%%Version: 1.2 0
+%%CreationDate: (04/10/93) ()
+%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved)
+userdict /Adobe_level2_AI5 26 dict dup begin
+ put
+ /packedarray where not
+ {
+ userdict begin
+ /packedarray
+ {
+ array astore readonly
+ } bind def
+ /setpacking /pop load def
+ /currentpacking false def
+ end
+ 0
+ } if
+ pop
+ userdict /defaultpacking currentpacking put true setpacking
+ /initialize
+ {
+ Adobe_level2_AI5 begin
+ } bind def
+ /terminate
+ {
+ currentdict Adobe_level2_AI5 eq
+ {
+ end
+ } if
+ } bind def
+ mark
+ /setcustomcolor where not
+ {
+ /findcmykcustomcolor
+ {
+ (AI8_CMYK_CustomColor)
+ 6 packedarray
+ } bind def
+ /findrgbcustomcolor
+ {
+ (AI8_RGB_CustomColor)
+ 5 packedarray
+ } bind def
+ /setcustomcolor
+ {
+ exch
+ aload pop dup
+ (AI8_CMYK_CustomColor) eq
+ {
+ pop pop
+ 4
+ {
+ 4 index mul
+ 4 1 roll
+ } repeat
+ 5 -1 roll pop
+ setcmykcolor
+ }
+ {
+ dup (AI8_RGB_CustomColor) eq
+ {
+ pop pop
+ 3
+ {
+ 1 exch sub
+ 3 index mul
+ 1 exch sub
+ 3 1 roll
+ } repeat
+ 4 -1 roll pop
+ setrgbcolor
+ }
+ {
+ pop
+ 4
+ {
+ 4 index mul 4 1 roll
+ } repeat
+ 5 -1 roll pop
+ setcmykcolor
+ } ifelse
+ } ifelse
+ }
+ def
+ } if
+ /setAIseparationgray
+ {
+ false setoverprint
+ 0 setgray
+ /setseparationgray where{
+ pop setseparationgray
+ }{
+ /setcolorspace where{
+ pop
+ [/Separation (All) /DeviceCMYK {dup dup dup}] setcolorspace
+ 1 exch sub setcolor
+ }{
+ setgray
+ }ifelse
+ }ifelse
+ } def
+
+ /gt38? mark {version cvr cvx exec} stopped {cleartomark true} {38 gt exch pop} ifelse def
+ userdict /deviceDPI 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt put
+ userdict /level2?
+ systemdict /languagelevel known dup
+ {
+ pop systemdict /languagelevel get 2 ge
+ } if
+ put
+/level2ScreenFreq
+{
+ begin
+ 60
+ HalftoneType 1 eq
+ {
+ pop Frequency
+ } if
+ HalftoneType 2 eq
+ {
+ pop GrayFrequency
+ } if
+ HalftoneType 5 eq
+ {
+ pop Default level2ScreenFreq
+ } if
+ end
+} bind def
+userdict /currentScreenFreq
+ level2? {currenthalftone level2ScreenFreq} {currentscreen pop pop} ifelse put
+level2? not
+ {
+ /setcmykcolor where not
+ {
+ /setcmykcolor
+ {
+ exch .11 mul add exch .59 mul add exch .3 mul add
+ 1 exch sub setgray
+ } def
+ } if
+ /currentcmykcolor where not
+ {
+ /currentcmykcolor
+ {
+ 0 0 0 1 currentgray sub
+ } def
+ } if
+ /setoverprint where not
+ {
+ /setoverprint /pop load def
+ } if
+ /selectfont where not
+ {
+ /selectfont
+ {
+ exch findfont exch
+ dup type /arraytype eq
+ {
+ makefont
+ }
+ {
+ scalefont
+ } ifelse
+ setfont
+ } bind def
+ } if
+ /cshow where not
+ {
+ /cshow
+ {
+ [
+ 0 0 5 -1 roll aload pop
+ ] cvx bind forall
+ } bind def
+ } if
+ } if
+ cleartomark
+ /anyColor?
+ {
+ add add add 0 ne
+ } bind def
+ /testColor
+ {
+ gsave
+ setcmykcolor currentcmykcolor
+ grestore
+ } bind def
+ /testCMYKColorThrough
+ {
+ testColor anyColor?
+ } bind def
+ userdict /composite?
+ 1 0 0 0 testCMYKColorThrough
+ 0 1 0 0 testCMYKColorThrough
+ 0 0 1 0 testCMYKColorThrough
+ 0 0 0 1 testCMYKColorThrough
+ and and and
+ put
+ composite? not
+ {
+ userdict begin
+ gsave
+ /cyan? 1 0 0 0 testCMYKColorThrough def
+ /magenta? 0 1 0 0 testCMYKColorThrough def
+ /yellow? 0 0 1 0 testCMYKColorThrough def
+ /black? 0 0 0 1 testCMYKColorThrough def
+ grestore
+ /isCMYKSep? cyan? magenta? yellow? black? or or or def
+ /customColor? isCMYKSep? not def
+ end
+ } if
+ end defaultpacking setpacking
+%%EndResource
+%%BeginProcSet: Adobe_ColorImage_AI6 1.3 0
+userdict /Adobe_ColorImage_AI6 known not
+{
+ userdict /Adobe_ColorImage_AI6 53 dict put
+} if
+userdict /Adobe_ColorImage_AI6 get begin
+/initialize {
+ Adobe_ColorImage_AI6 begin
+ Adobe_ColorImage_AI6 {
+ dup type /arraytype eq {
+ dup xcheck {
+ bind
+ } if
+ } if
+ pop pop
+ } forall
+} def
+/terminate { end } def
+currentdict /Adobe_ColorImage_AI6_Vars known not {
+ /Adobe_ColorImage_AI6_Vars 41 dict def
+} if
+Adobe_ColorImage_AI6_Vars begin
+ /plateindex -1 def
+ /_newproc null def
+ /_proc1 null def
+ /_proc2 null def
+ /sourcearray 4 array def
+ /_ptispace null def
+ /_ptiname null def
+ /_pti0 0 def
+ /_pti1 0 def
+ /_ptiproc null def
+ /_ptiscale 0 def
+ /_pticomps 0 def
+ /_ptibuf 0 string def
+ /_gtigray 0 def
+ /_cticmyk null def
+ /_rtirgb null def
+ /XIEnable true def
+ /XIType 0 def
+ /XIEncoding 0 def
+ /XICompression 0 def
+ /XIChannelCount 0 def
+ /XIBitsPerPixel 0 def
+ /XIImageHeight 0 def
+ /XIImageWidth 0 def
+ /XIImageMatrix null def
+ /XIRowBytes 0 def
+ /XIFile null def
+ /XIBuffer1 null def
+ /XIBuffer2 null def
+ /XIBuffer3 null def
+ /XIDataProc null def
+ /XIColorSpace /DeviceGray def
+ /XIColorValues 0 def
+ /XIPlateList false def
+end
+/ci6colorimage /colorimage where {/colorimage get}{null} ifelse def
+/ci6image systemdict /image get def
+/ci6curtransfer systemdict /currenttransfer get def
+/ci6curoverprint /currentoverprint where {/currentoverprint get}{{_of}} ifelse def
+/ci6foureq {
+ 4 index ne {
+ pop pop pop false
+ }{
+ 4 index ne {
+ pop pop false
+ }{
+ 4 index ne {
+ pop false
+ }{
+ 4 index eq
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6testplate {
+ Adobe_ColorImage_AI6_Vars begin
+ /plateindex -1 def
+ /setcmykcolor where {
+ pop
+ gsave
+ 1 0 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub
+ 0 1 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub
+ 0 0 1 0 setcmykcolor systemdict /currentgray get exec 1 exch sub
+ 0 0 0 1 setcmykcolor systemdict /currentgray get exec 1 exch sub
+ grestore
+ 1 0 0 0 ci6foureq {
+ /plateindex 0 def
+ }{
+ 0 1 0 0 ci6foureq {
+ /plateindex 1 def
+ }{
+ 0 0 1 0 ci6foureq {
+ /plateindex 2 def
+ }{
+ 0 0 0 1 ci6foureq {
+ /plateindex 3 def
+ }{
+ 0 0 0 0 ci6foureq {
+ /plateindex 5 def
+ } if
+ } ifelse
+ } ifelse
+ } ifelse
+ } ifelse
+ pop pop pop pop
+ } if
+ plateindex
+ end
+} def
+/ci6concatprocs {
+ /packedarray where {
+ pop dup type /packedarraytype eq 2 index type
+ /packedarraytype eq or
+ }{
+ false
+ } ifelse
+ {
+ /_proc2 exch cvlit def
+ /_proc1 exch cvlit def
+ _proc1 aload pop
+ _proc2 aload pop
+ _proc1 length
+ _proc2 length add
+ packedarray cvx
+ }{
+ /_proc2 exch cvlit def
+ /_proc1 exch cvlit def
+ /_newproc _proc1 length _proc2 length add array def
+ _newproc 0 _proc1 putinterval
+ _newproc _proc1 length _proc2 putinterval
+ _newproc cvx
+ } ifelse
+} def
+/ci6istint {
+ type /arraytype eq
+} def
+/ci6isspot {
+ dup type /arraytype eq {
+ dup length 1 sub get /Separation eq
+ }{
+ pop false
+ } ifelse
+} def
+/ci6spotname {
+ dup ci6isspot {dup length 2 sub get}{pop ()} ifelse
+} def
+/ci6altspace {
+ aload pop pop pop ci6colormake
+} def
+/ci6numcomps {
+ dup /DeviceGray eq {
+ pop 1
+ }{
+ dup /DeviceRGB eq {
+ pop 3
+ }{
+ /DeviceCMYK eq {
+ 4
+ }{
+ 1
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6marksplate {
+ dup /DeviceGray eq {
+ pop plateindex 3 eq
+ }{
+ dup /DeviceRGB eq {
+ pop plateindex 5 ne
+ }{
+ dup /DeviceCMYK eq {
+ pop plateindex 5 ne
+ }{
+ dup ci6isspot {
+ /findcmykcustomcolor where {
+ pop
+ dup length 2 sub get
+ 0.1 0.1 0.1 0.1 5 -1 roll
+ findcmykcustomcolor 1 setcustomcolor
+ systemdict /currentgray get exec
+ 1 ne
+ }{
+ pop plateindex 5 ne
+ } ifelse
+ }{
+ pop plateindex 5 ne
+ } ifelse
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6colormake {
+ dup ci6numcomps
+ exch 1 index 2 add 1 roll
+ dup 1 eq {pop}{array astore} ifelse
+ exch
+} def
+/ci6colorexpand {
+ dup ci6spotname exch
+ dup ci6istint {
+ ci6altspace
+ exch 4 1 roll
+ }{
+ 1 3 1 roll
+ } ifelse
+} def
+/ci6colortint {
+ dup /DeviceGray eq {
+ 3 1 roll 1 exch sub mul 1 exch sub exch
+ }{
+ dup /DeviceRGB eq {
+ 3 1 roll {1 exch sub 1 index mul 1 exch sub exch} forall pop 3 array astore exch
+ }{
+ dup /DeviceCMYK eq {
+ 3 1 roll {1 index mul exch} forall pop 4 array astore exch
+ }{
+ 3 1 roll mul exch
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6colortocmyk {
+ dup /DeviceGray eq {
+ pop 1 exch sub 0 0 0 4 -1 roll 4 array astore
+ }{
+ dup /DeviceRGB eq {
+ pop aload pop _rgbtocmyk 4 array astore
+ }{
+ dup /DeviceCMYK eq {
+ pop
+ }{
+ ci6altspace ci6colortint ci6colortocmyk
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6makeimagedict {
+ 7 dict begin
+ /ImageType 1 def
+ /Decode exch def
+ /DataSource exch def
+ /ImageMatrix exch def
+ /BitsPerComponent exch def
+ /Height exch def
+ /Width exch def
+ currentdict end
+} def
+/ci6stringinvert {
+ 0 1 2 index length 1 sub {
+ dup 2 index exch get 255 exch sub 2 index 3 1 roll put
+ } for
+} def
+/ci6stringknockout {
+ 0 1 2 index length 1 sub {
+ 255 2 index 3 1 roll put
+ } for
+} def
+/ci6stringapply {
+ 0 1 4 index length 1 sub {
+ dup
+ 4 index exch get
+ 3 index 3 1 roll
+ 3 index exec
+ } for
+ pop exch pop
+} def
+/ci6walkrgbstring {
+ 0 3 index
+ dup length 1 sub 0 3 3 -1 roll {
+ 3 getinterval {} forall
+ 5 index exec
+ 3 index
+ } for
+
+ 5 {pop} repeat
+} def
+/ci6walkcmykstring
+{
+ 0 3 index
+ dup length 1 sub 0 4 3 -1 roll {
+ 4 getinterval {} forall
+
+ 6 index exec
+
+ 3 index
+
+ } for
+
+ 5 { pop } repeat
+
+} def
+/ci6putrgbtograystr
+{
+ .11 mul exch
+
+ .59 mul add exch
+
+ .3 mul add
+
+ cvi 3 copy put
+
+ pop 1 add
+} def
+/ci6putcmyktograystr
+{
+ exch .11 mul add
+
+ exch .59 mul add
+
+ exch .3 mul add
+
+ dup 255 gt { pop 255 } if
+
+ 255 exch sub cvi 3 copy put
+
+ pop 1 add
+} def
+/ci6rgbtograyproc {
+ Adobe_ColorImage_AI6_Vars begin
+ sourcearray 0 get exec
+ XIBuffer3
+ dup 3 1 roll
+
+ /ci6putrgbtograystr load exch
+ ci6walkrgbstring
+ end
+} def
+/ci6cmyktograyproc {
+ Adobe_ColorImage_AI6_Vars begin
+ sourcearray 0 get exec
+ XIBuffer3
+ dup 3 1 roll
+
+ /ci6putcmyktograystr load exch
+ ci6walkcmykstring
+ end
+} def
+/ci6separatecmykproc {
+ Adobe_ColorImage_AI6_Vars begin
+ sourcearray 0 get exec
+
+ XIBuffer3
+
+ 0 2 index
+
+ plateindex 4 2 index length 1 sub {
+ get 255 exch sub
+
+ 3 copy put pop 1 add
+
+ 2 index
+ } for
+ pop pop exch pop
+ end
+} def
+
+/ci6compositeimage {
+ dup 1 eq {
+ pop pop image
+ }{
+ /ci6colorimage load null ne {
+ ci6colorimage
+ }{
+ 3 1 roll pop
+ sourcearray 0 3 -1 roll put
+ 3 eq {/ci6rgbtograyproc}{/ci6cmyktograyproc} ifelse load
+ image
+ } ifelse
+ } ifelse
+} def
+/ci6knockoutimage {
+ gsave
+ 0 ci6curtransfer exec 1 ci6curtransfer exec
+ eq {
+ 0 ci6curtransfer exec 0.5 lt
+ }{
+ 0 ci6curtransfer exec 1 ci6curtransfer exec gt
+ } ifelse
+ {{pop 0}}{{pop 1}} ifelse
+ systemdict /settransfer get exec
+ ci6compositeimage
+ grestore
+} def
+/ci6drawimage {
+ ci6testplate -1 eq {
+ pop ci6compositeimage
+ }{
+ dup type /arraytype eq {
+ dup length plateindex gt {plateindex get}{pop false} ifelse
+ }{
+ {
+ true
+ }{
+ dup 1 eq {plateindex 3 eq}{plateindex 3 le} ifelse
+ } ifelse
+ } ifelse
+ {
+ dup 1 eq {
+ pop pop ci6image
+ }{
+ dup 3 eq {
+ ci6compositeimage
+ }{
+ pop pop
+ sourcearray 0 3 -1 roll put
+ /ci6separatecmykproc load
+ ci6image
+ } ifelse
+ } ifelse
+ }{
+ ci6curoverprint {
+ 7 {pop} repeat
+ }{
+ ci6knockoutimage
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6proctintimage {
+ /_ptispace exch store /_ptiname exch store /_pti1 exch store /_pti0 exch store /_ptiproc exch store
+ /_pticomps _ptispace ci6numcomps store
+ /_ptiscale _pti1 _pti0 sub store
+ level2? {
+ _ptiname length 0 gt version cvr 2012 ge and {
+ [/Separation _ptiname _ptispace {_ptiproc}] setcolorspace
+ [_pti0 _pti1] ci6makeimagedict ci6image
+ }{
+ [/Indexed _ptispace 255 {255 div _ptiscale mul _pti0 add _ptiproc}] setcolorspace
+ [0 255] ci6makeimagedict ci6image
+ } ifelse
+ }{
+ _pticomps 1 eq {
+ {
+ dup
+ {
+ 255 div _ptiscale mul _pti0 add _ptiproc 255 mul cvi put
+ } ci6stringapply
+ } ci6concatprocs ci6image
+ }{
+ {
+ dup length _pticomps mul dup _ptibuf length ne {/_ptibuf exch string store}{pop} ifelse
+ _ptibuf {
+ exch _pticomps mul exch 255 div _ptiscale mul _pti0 add _ptiproc
+ _pticomps 2 add -2 roll
+ _pticomps 1 sub -1 0 {
+ 1 index add 2 index exch
+ 5 -1 roll
+ 255 mul cvi put
+ } for
+ pop pop
+ } ci6stringapply
+ } ci6concatprocs false _pticomps
+ /ci6colorimage load null eq {7 {pop} repeat}{ci6colorimage} ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6graytintimage {
+ /_gtigray 5 -1 roll store
+ {1 _gtigray sub mul 1 exch sub} 4 1 roll
+ /DeviceGray ci6proctintimage
+} def
+/ci6cmyktintimage {
+ /_cticmyk 5 -1 roll store
+ {_cticmyk {1 index mul exch} forall pop} 4 1 roll
+ /DeviceCMYK ci6proctintimage
+} def
+/ci6rgbtintimage {
+ /_rtirgb 5 -1 roll store
+ {_rtirgb {1 exch sub 1 index mul 1 exch sub exch} forall pop} 4 1 roll
+ /DeviceRGB ci6proctintimage
+} def
+/ci6tintimage {
+ ci6testplate -1 eq {
+ ci6colorexpand
+ 3 -1 roll 5 -1 roll {0}{0 exch} ifelse 4 2 roll
+ dup /DeviceGray eq {
+ pop ci6graytintimage
+ }{
+ dup /DeviceRGB eq {
+ pop ci6rgbtintimage
+ }{
+ pop ci6cmyktintimage
+ } ifelse
+ } ifelse
+ }{
+ dup ci6marksplate {
+ plateindex 5 lt {
+ ci6colortocmyk plateindex get
+ dup 0 eq ci6curoverprint and {
+ 7 {pop} repeat
+ }{
+ 1 exch sub
+ exch {1 0}{0 1} ifelse () ci6graytintimage
+ } ifelse
+ }{
+ pop exch {0}{0 exch} ifelse 0 3 1 roll () ci6graytintimage
+ } ifelse
+ }{
+ ci6curoverprint {
+ 8 {pop} repeat
+ }{
+ pop pop pop
+ {pop 1} 0 1 () /DeviceGray ci6proctintimage
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/XINullImage {
+} def
+/XIImageMask {
+ XIImageWidth XIImageHeight false
+ [XIImageWidth 0 0 XIImageHeight neg 0 0]
+ /XIDataProc load
+ imagemask
+} def
+/XIImageTint {
+ XIImageWidth XIImageHeight XIBitsPerPixel
+ [XIImageWidth 0 0 XIImageHeight neg 0 0]
+ /XIDataProc load
+ XIType 3 eq XIColorValues XIColorSpace ci6tintimage
+} def
+/XIImage {
+ XIImageWidth XIImageHeight XIBitsPerPixel
+ [XIImageWidth 0 0 XIImageHeight neg 0 0]
+ /XIDataProc load
+ false XIChannelCount XIPlateList ci6drawimage
+} def
+/XG {
+ pop pop
+} def
+/XF {
+ 13 {pop} repeat
+} def
+/Xh {
+ Adobe_ColorImage_AI6_Vars begin
+ gsave
+ /XIType exch def
+ /XIImageHeight exch def
+ /XIImageWidth exch def
+ /XIImageMatrix exch def
+ 0 0 moveto
+ XIImageMatrix concat
+ XIImageWidth XIImageHeight scale
+
+ /_lp /null ddef
+ _fc
+ /_lp /imagemask ddef
+ end
+} def
+/XH {
+ Adobe_ColorImage_AI6_Vars begin
+ grestore
+ end
+} def
+/XIEnable {
+ Adobe_ColorImage_AI6_Vars /XIEnable 3 -1 roll put
+} def
+/XC {
+ Adobe_ColorImage_AI6_Vars begin
+ ci6colormake
+ /XIColorSpace exch def
+ /XIColorValues exch def
+ end
+} def
+/XIPlates {
+ Adobe_ColorImage_AI6_Vars begin
+ /XIPlateList exch def
+ end
+} def
+/XI
+{
+ Adobe_ColorImage_AI6_Vars begin
+ gsave
+ /XIType exch def
+ cvi dup
+ 256 idiv /XICompression exch store
+ 256 mod /XIEncoding exch store
+ pop pop
+ /XIChannelCount exch def
+ /XIBitsPerPixel exch def
+ /XIImageHeight exch def
+ /XIImageWidth exch def
+ pop pop pop pop
+ /XIImageMatrix exch def
+ XIBitsPerPixel 1 eq {
+ XIImageWidth 8 div ceiling cvi
+ }{
+ XIImageWidth XIChannelCount mul
+ } ifelse
+ /XIRowBytes exch def
+ XIEnable {
+ /XIBuffer3 XIImageWidth string def
+ XICompression 0 eq {
+ /XIBuffer1 XIRowBytes string def
+ XIEncoding 0 eq {
+ {currentfile XIBuffer1 readhexstring pop}
+ }{
+ {currentfile XIBuffer1 readstring pop}
+ } ifelse
+ }{
+ /XIBuffer1 256 string def
+ /XIBuffer2 XIRowBytes string def
+ {currentfile XIBuffer1 readline pop (%) anchorsearch {pop} if}
+ /ASCII85Decode filter /DCTDecode filter
+ /XIFile exch def
+ {XIFile XIBuffer2 readstring pop}
+ } ifelse
+ /XIDataProc exch def
+
+ XIType 1 ne {
+ 0 setgray
+ } if
+ XIType 1 eq {
+ XIImageMask
+ }{
+ XIType 2 eq XIType 3 eq or {
+ XIImageTint
+ }{
+ XIImage
+ } ifelse
+ } ifelse
+ }{
+ XINullImage
+ } ifelse
+ /XIPlateList false def
+ grestore
+ end
+} def
+end
+%%EndProcSet
+%%BeginResource: procset Adobe_Illustrator_AI5 1.3 0
+%%Title: (Adobe Illustrator (R) Version 8.0 Full Prolog)
+%%Version: 1.3 0
+%%CreationDate: (3/7/1994) ()
+%%Copyright: ((C) 1987-1998 Adobe Systems Incorporated All Rights Reserved)
+currentpacking true setpacking
+userdict /Adobe_Illustrator_AI5_vars 112 dict dup begin
+put
+/_?cmyk false def
+/_eo false def
+/_lp /none def
+/_pf
+{
+} def
+/_ps
+{
+} def
+/_psf
+{
+} def
+/_pss
+{
+} def
+/_pjsf
+{
+} def
+/_pjss
+{
+} def
+/_pola 0 def
+/_doClip 0 def
+/cf currentflat def
+/_lineorientation 0 def
+/_charorientation 0 def
+/_yokoorientation 0 def
+/_tm matrix def
+/_renderStart
+[
+/e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0
+] def
+/_renderEnd
+[
+null null null null /i1 /i1 /i1 /i1
+] def
+/_render -1 def
+/_shift [0 0] def
+/_ax 0 def
+/_ay 0 def
+/_cx 0 def
+/_cy 0 def
+/_leading
+[
+0 0
+] def
+/_ctm matrix def
+/_mtx matrix def
+/_sp 16#020 def
+/_hyphen (-) def
+/_fontSize 0 def
+/_fontAscent 0 def
+/_fontDescent 0 def
+/_fontHeight 0 def
+/_fontRotateAdjust 0 def
+/Ss 256 string def
+Ss 0 (fonts/) putinterval
+/_cnt 0 def
+/_scale [1 1] def
+/_nativeEncoding 0 def
+/_useNativeEncoding 0 def
+/_tempEncode 0 def
+/_pntr 0 def
+/_tDict 2 dict def
+/_hfname 100 string def
+/_hffound false def
+/Tx
+{
+} def
+/Tj
+{
+} def
+/CRender
+{
+} def
+/_AI3_savepage
+{
+} def
+/_gf null def
+/_cf 4 array def
+/_rgbf 3 array def
+/_if null def
+/_of false def
+/_fc
+{
+} def
+/_gs null def
+/_cs 4 array def
+/_rgbs 3 array def
+/_is null def
+/_os false def
+/_sc
+{
+} def
+/_pd 1 dict def
+/_ed 15 dict def
+/_pm matrix def
+/_fm null def
+/_fd null def
+/_fdd null def
+/_sm null def
+/_sd null def
+/_sdd null def
+/_i null def
+/_lobyte 0 def
+/_hibyte 0 def
+/_cproc null def
+/_cscript 0 def
+/_hvax 0 def
+/_hvay 0 def
+/_hvwb 0 def
+/_hvcx 0 def
+/_hvcy 0 def
+/_bitfont null def
+/_bitlobyte 0 def
+/_bithibyte 0 def
+/_bitkey null def
+/_bitdata null def
+/_bitindex 0 def
+/discardSave null def
+/buffer 256 string def
+/beginString null def
+/endString null def
+/endStringLength null def
+/layerCnt 1 def
+/layerCount 1 def
+/perCent (%) 0 get def
+/perCentSeen? false def
+/newBuff null def
+/newBuffButFirst null def
+/newBuffLast null def
+/clipForward? false def
+end
+userdict /Adobe_Illustrator_AI5 known not {
+ userdict /Adobe_Illustrator_AI5 100 dict put
+} if
+userdict /Adobe_Illustrator_AI5 get begin
+/initialize
+{
+ Adobe_Illustrator_AI5 dup begin
+ Adobe_Illustrator_AI5_vars begin
+ /_aicmykps where {pop /_?cmyk _aicmykps def}if
+ discardDict
+ {
+ bind pop pop
+ } forall
+ dup /nc get begin
+ {
+ dup xcheck 1 index type /operatortype ne and
+ {
+ bind
+ } if
+ pop pop
+ } forall
+ end
+ newpath
+} def
+/terminate
+{
+ end
+ end
+} def
+/_
+null def
+/ddef
+{
+ Adobe_Illustrator_AI5_vars 3 1 roll put
+} def
+/xput
+{
+ dup load dup length exch maxlength eq
+ {
+ dup dup load dup
+ length 2 mul dict copy def
+ } if
+ load begin
+ def
+ end
+} def
+/npop
+{
+ {
+ pop
+ } repeat
+} def
+/hswj
+{
+ dup stringwidth 3 2 roll
+ {
+ _hvwb eq { exch _hvcx add exch _hvcy add } if
+ exch _hvax add exch _hvay add
+ } cforall
+} def
+/vswj
+{
+ 0 0 3 -1 roll
+ {
+ dup 255 le
+ _charorientation 1 eq
+ and
+ {
+ dup cstring stringwidth 5 2 roll
+ _hvwb eq { exch _hvcy sub exch _hvcx sub } if
+ exch _hvay sub exch _hvax sub
+ 4 -1 roll sub exch
+ 3 -1 roll sub exch
+ }
+ {
+ _hvwb eq { exch _hvcy sub exch _hvcx sub } if
+ exch _hvay sub exch _hvax sub
+ _fontHeight sub
+ } ifelse
+ } cforall
+} def
+/swj
+{
+ 6 1 roll
+ /_hvay exch ddef
+ /_hvax exch ddef
+ /_hvwb exch ddef
+ /_hvcy exch ddef
+ /_hvcx exch ddef
+ _lineorientation 0 eq { hswj } { vswj } ifelse
+} def
+/sw
+{
+ 0 0 0 6 3 roll swj
+} def
+/vjss
+{
+ 4 1 roll
+ {
+ dup cstring
+ dup length 1 eq
+ _charorientation 1 eq
+ and
+ {
+ -90 rotate
+ currentpoint
+ _fontRotateAdjust add
+ moveto
+ gsave
+ false charpath currentpoint
+ 5 index setmatrix stroke
+ grestore
+ _fontRotateAdjust sub
+ moveto
+ _sp eq
+ {
+ 5 index 5 index rmoveto
+ } if
+ 2 copy rmoveto
+ 90 rotate
+ }
+ {
+ currentpoint
+ _fontHeight sub
+ 5 index sub
+ 3 index _sp eq
+ {
+ 9 index sub
+ } if
+
+ currentpoint
+ exch 4 index stringwidth pop 2 div sub
+ exch _fontAscent sub
+ moveto
+
+ gsave
+ 2 index false charpath
+ 6 index setmatrix stroke
+ grestore
+
+ moveto pop pop
+ } ifelse
+ } cforall
+ 6 npop
+} def
+/hjss
+{
+ 4 1 roll
+ {
+ dup cstring
+ gsave
+ false charpath currentpoint
+ 5 index setmatrix stroke
+ grestore
+ moveto
+ _sp eq
+ {
+ 5 index 5 index rmoveto
+ } if
+ 2 copy rmoveto
+ } cforall
+ 6 npop
+} def
+/jss
+{
+ _lineorientation 0 eq { hjss } { vjss } ifelse
+} def
+/ss
+{
+ 0 0 0 7 3 roll jss
+} def
+/vjsp
+{
+ 4 1 roll
+ {
+ dup cstring
+ dup length 1 eq
+ _charorientation 1 eq
+ and
+ {
+ -90 rotate
+ currentpoint
+ _fontRotateAdjust add
+ moveto
+ false charpath
+ currentpoint
+ _fontRotateAdjust sub
+ moveto
+ _sp eq
+ {
+ 5 index 5 index rmoveto
+ } if
+ 2 copy rmoveto
+ 90 rotate
+ }
+ {
+ currentpoint
+ _fontHeight sub
+ 5 index sub
+ 3 index _sp eq
+ {
+ 9 index sub
+ } if
+
+ currentpoint
+ exch 4 index stringwidth pop 2 div sub
+ exch _fontAscent sub
+ moveto
+
+ 2 index false charpath
+
+ moveto pop pop
+ } ifelse
+ } cforall
+ 6 npop
+} def
+/hjsp
+{
+ 4 1 roll
+ {
+ dup cstring
+ false charpath
+ _sp eq
+ {
+ 5 index 5 index rmoveto
+ } if
+ 2 copy rmoveto
+ } cforall
+ 6 npop
+} def
+/jsp
+{
+ matrix currentmatrix
+ _lineorientation 0 eq {hjsp} {vjsp} ifelse
+} def
+/sp
+{
+ matrix currentmatrix
+ 0 0 0 7 3 roll
+ _lineorientation 0 eq {hjsp} {vjsp} ifelse
+} def
+/pl
+{
+ transform
+ 0.25 sub round 0.25 add exch
+ 0.25 sub round 0.25 add exch
+ itransform
+} def
+/setstrokeadjust where
+{
+ pop true setstrokeadjust
+ /c
+ {
+ curveto
+ } def
+ /C
+ /c load def
+ /v
+ {
+ currentpoint 6 2 roll curveto
+ } def
+ /V
+ /v load def
+ /y
+ {
+ 2 copy curveto
+ } def
+ /Y
+ /y load def
+ /l
+ {
+ lineto
+ } def
+ /L
+ /l load def
+ /m
+ {
+ moveto
+ } def
+}
+{
+ /c
+ {
+ pl curveto
+ } def
+ /C
+ /c load def
+ /v
+ {
+ currentpoint 6 2 roll pl curveto
+ } def
+ /V
+ /v load def
+ /y
+ {
+ pl 2 copy curveto
+ } def
+ /Y
+ /y load def
+ /l
+ {
+ pl lineto
+ } def
+ /L
+ /l load def
+ /m
+ {
+ pl moveto
+ } def
+} ifelse
+/d
+{
+ setdash
+} def
+/cf
+{
+} def
+/i
+{
+ dup 0 eq
+ {
+ pop cf
+ } if
+ setflat
+} def
+/j
+{
+ setlinejoin
+} def
+/J
+{
+ setlinecap
+} def
+/M
+{
+ setmiterlimit
+} def
+/w
+{
+ setlinewidth
+} def
+/XR
+{
+ 0 ne
+ /_eo exch ddef
+} def
+/H
+{
+} def
+/h
+{
+ closepath
+} def
+/N
+{
+ _pola 0 eq
+ {
+ _doClip 1 eq
+ {
+ _eo {eoclip} {clip} ifelse /_doClip 0 ddef
+ } if
+ newpath
+ }
+ {
+ /CRender
+ {
+ N
+ } ddef
+ } ifelse
+} def
+/n
+{
+ N
+} def
+/F
+{
+ _pola 0 eq
+ {
+ _doClip 1 eq
+ {
+ gsave _pf grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _fc
+ /_doClip 0 ddef
+ }
+ {
+ _pf
+ } ifelse
+ }
+ {
+ /CRender
+ {
+ F
+ } ddef
+ } ifelse
+} def
+/f
+{
+ closepath
+ F
+} def
+/S
+{
+ _pola 0 eq
+ {
+ _doClip 1 eq
+ {
+ gsave _ps grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc
+ /_doClip 0 ddef
+ }
+ {
+ _ps
+ } ifelse
+ }
+ {
+ /CRender
+ {
+ S
+ } ddef
+ } ifelse
+} def
+/s
+{
+ closepath
+ S
+} def
+/B
+{
+ _pola 0 eq
+ {
+ _doClip 1 eq
+ gsave F grestore
+ {
+ gsave S grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc
+ /_doClip 0 ddef
+ }
+ {
+ S
+ } ifelse
+ }
+ {
+ /CRender
+ {
+ B
+ } ddef
+ } ifelse
+} def
+/b
+{
+ closepath
+ B
+} def
+/W
+{
+ /_doClip 1 ddef
+} def
+/*
+{
+ count 0 ne
+ {
+ dup type /stringtype eq
+ {
+ pop
+ } if
+ } if
+ newpath
+} def
+/u
+{
+} def
+/U
+{
+} def
+/q
+{
+ _pola 0 eq
+ {
+ gsave
+ } if
+} def
+/Q
+{
+ _pola 0 eq
+ {
+ grestore
+ } if
+} def
+/*u
+{
+ _pola 1 add /_pola exch ddef
+} def
+/*U
+{
+ _pola 1 sub /_pola exch ddef
+ _pola 0 eq
+ {
+ CRender
+ } if
+} def
+/D
+{
+ pop
+} def
+/*w
+{
+} def
+/*W
+{
+} def
+/`
+{
+ /_i save ddef
+ clipForward?
+ {
+ nulldevice
+ } if
+ 6 1 roll 4 npop
+ concat pop
+ userdict begin
+ /showpage
+ {
+ } def
+ 0 setgray
+ 0 setlinecap
+ 1 setlinewidth
+ 0 setlinejoin
+ 10 setmiterlimit
+ [] 0 setdash
+ /setstrokeadjust where {pop false setstrokeadjust} if
+ newpath
+ 0 setgray
+ false setoverprint
+} def
+/~
+{
+ end
+ _i restore
+} def
+/_rgbtocmyk
+{
+ 3
+ {
+ 1 exch sub 3 1 roll
+ } repeat
+ 3 copy 1 4 1 roll
+ 3
+ {
+ 3 index 2 copy gt
+ {
+ exch
+ } if
+ pop 4 1 roll
+ } repeat
+ pop pop pop
+ 4 1 roll
+ 3
+ {
+ 3 index sub
+ 3 1 roll
+ } repeat
+ 4 -1 roll
+} def
+/setrgbfill
+{
+ _rgbf astore pop
+ /_fc
+ {
+ _lp /fill ne
+ {
+ _of setoverprint
+ _rgbf aload pop setrgbcolor
+ /_lp /fill ddef
+ } if
+ } ddef
+ /_pf
+ {
+ _fc
+ _eo {eofill} {fill} ifelse
+ } ddef
+ /_psf
+ {
+ _fc
+ hvashow
+ } ddef
+ /_pjsf
+ {
+ _fc
+ hvawidthshow
+ } ddef
+ /_lp /none ddef
+} def
+/setrgbstroke
+{
+ _rgbs astore pop
+ /_sc
+ {
+ _lp /stroke ne
+ {
+ _os setoverprint
+ _rgbs aload pop setrgbcolor
+ /_lp /stroke ddef
+ } if
+ } ddef
+ /_ps
+ {
+ _sc
+ stroke
+ } ddef
+ /_pss
+ {
+ _sc
+ ss
+ } ddef
+ /_pjss
+ {
+ _sc
+ jss
+ } ddef
+ /_lp /none ddef
+} def
+/O
+{
+ 0 ne
+ /_of exch ddef
+ /_lp /none ddef
+} def
+/R
+{
+ 0 ne
+ /_os exch ddef
+ /_lp /none ddef
+} def
+/g
+{
+ /_gf exch ddef
+ /_fc
+ {
+ _lp /fill ne
+ {
+ _of setoverprint
+ _gf setgray
+ /_lp /fill ddef
+ } if
+ } ddef
+ /_pf
+ {
+ _fc
+ _eo {eofill} {fill} ifelse
+ } ddef
+ /_psf
+ {
+ _fc
+ hvashow
+ } ddef
+ /_pjsf
+ {
+ _fc
+ hvawidthshow
+ } ddef
+ /_lp /none ddef
+} def
+/G
+{
+ /_gs exch ddef
+ /_sc
+ {
+ _lp /stroke ne
+ {
+ _os setoverprint
+ _gs setgray
+ /_lp /stroke ddef
+ } if
+ } ddef
+ /_ps
+ {
+ _sc
+ stroke
+ } ddef
+ /_pss
+ {
+ _sc
+ ss
+ } ddef
+ /_pjss
+ {
+ _sc
+ jss
+ } ddef
+ /_lp /none ddef
+} def
+/k
+{
+ _cf astore pop
+ /_fc
+ {
+ _lp /fill ne
+ {
+ _of setoverprint
+ _cf aload pop setcmykcolor
+ /_lp /fill ddef
+ } if
+ } ddef
+ /_pf
+ {
+ _fc
+ _eo {eofill} {fill} ifelse
+ } ddef
+ /_psf
+ {
+ _fc
+ hvashow
+ } ddef
+ /_pjsf
+ {
+ _fc
+ hvawidthshow
+ } ddef
+ /_lp /none ddef
+} def
+/K
+{
+ _cs astore pop
+ /_sc
+ {
+ _lp /stroke ne
+ {
+ _os setoverprint
+ _cs aload pop setcmykcolor
+ /_lp /stroke ddef
+ } if
+ } ddef
+ /_ps
+ {
+ _sc
+ stroke
+ } ddef
+ /_pss
+ {
+ _sc
+ ss
+ } ddef
+ /_pjss
+ {
+ _sc
+ jss
+ } ddef
+ /_lp /none ddef
+} def
+/Xa
+{
+ _?cmyk {
+ 3 npop k
+ }{
+ setrgbfill 4 npop
+ } ifelse
+} def
+/XA
+{
+ _?cmyk {
+ 3 npop K
+ }{
+ setrgbstroke 4 npop
+ } ifelse
+} def
+/Xs
+{
+ /_gf exch ddef
+ 5 npop
+ /_fc
+ {
+ _lp /fill ne
+ {
+ _of setoverprint
+ _gf setAIseparationgray
+ /_lp /fill ddef
+ } if
+ } ddef
+ /_pf
+ {
+ _fc
+ _eo {eofill} {fill} ifelse
+ } ddef
+ /_psf
+ {
+ _fc
+ hvashow
+ } ddef
+ /_pjsf
+ {
+ _fc
+ hvawidthshow
+ } ddef
+ /_lp /none ddef
+} def
+/XS
+{
+ /_gs exch ddef
+ 5 npop
+ /_sc
+ {
+ _lp /stroke ne
+ {
+ _os setoverprint
+ _gs setAIseparationgray
+ /_lp /stroke ddef
+ } if
+ } ddef
+ /_ps
+ {
+ _sc
+ stroke
+ } ddef
+ /_pss
+ {
+ _sc
+ ss
+ } ddef
+ /_pjss
+ {
+ _sc
+ jss
+ } ddef
+ /_lp /none ddef
+} def
+/Xx
+{
+ exch
+ /_gf exch ddef
+ 0 eq {
+ findcmykcustomcolor
+ }{
+ _?cmyk {true}{/findrgbcustomcolor where{pop false}{true}ifelse}ifelse
+ {
+ 4 1 roll 3 npop
+ findcmykcustomcolor
+ }{
+ 8 -4 roll 4 npop
+ findrgbcustomcolor
+ } ifelse
+ } ifelse
+ /_if exch ddef
+ /_fc
+ {
+ _lp /fill ne
+ {
+ _of setoverprint
+ _if _gf 1 exch sub setcustomcolor
+ /_lp /fill ddef
+ } if
+ } ddef
+ /_pf
+ {
+ _fc
+ _eo {eofill} {fill} ifelse
+ } ddef
+ /_psf
+ {
+ _fc
+ hvashow
+ } ddef
+ /_pjsf
+ {
+ _fc
+ hvawidthshow
+ } ddef
+ /_lp /none ddef
+} def
+/XX
+{
+ exch
+ /_gs exch ddef
+ 0 eq {
+ findcmykcustomcolor
+ }{
+ _?cmyk {true}{/findrgbcustomcolor where{pop false}{true}ifelse}ifelse
+ {
+ 4 1 roll 3 npop
+ findcmykcustomcolor
+ }{
+ 8 -4 roll 4 npop
+ findrgbcustomcolor
+ } ifelse
+ } ifelse
+ /_is exch ddef
+ /_sc
+ {
+ _lp /stroke ne
+ {
+ _os setoverprint
+ _is _gs 1 exch sub setcustomcolor
+ /_lp /stroke ddef
+ } if
+ } ddef
+ /_ps
+ {
+ _sc
+ stroke
+ } ddef
+ /_pss
+ {
+ _sc
+ ss
+ } ddef
+ /_pjss
+ {
+ _sc
+ jss
+ } ddef
+ /_lp /none ddef
+} def
+/x
+{
+ /_gf exch ddef
+ findcmykcustomcolor
+ /_if exch ddef
+ /_fc
+ {
+ _lp /fill ne
+ {
+ _of setoverprint
+ _if _gf 1 exch sub setcustomcolor
+ /_lp /fill ddef
+ } if
+ } ddef
+ /_pf
+ {
+ _fc
+ _eo {eofill} {fill} ifelse
+ } ddef
+ /_psf
+ {
+ _fc
+ hvashow
+ } ddef
+ /_pjsf
+ {
+ _fc
+ hvawidthshow
+ } ddef
+ /_lp /none ddef
+} def
+/X
+{
+ /_gs exch ddef
+ findcmykcustomcolor
+ /_is exch ddef
+ /_sc
+ {
+ _lp /stroke ne
+ {
+ _os setoverprint
+ _is _gs 1 exch sub setcustomcolor
+ /_lp /stroke ddef
+ } if
+ } ddef
+ /_ps
+ {
+ _sc
+ stroke
+ } ddef
+ /_pss
+ {
+ _sc
+ ss
+ } ddef
+ /_pjss
+ {
+ _sc
+ jss
+ } ddef
+ /_lp /none ddef
+} def
+/XK
+{
+ 3 -1 roll pop
+ 0 eq
+ {
+ 1 exch sub
+ 3 {dup 3 1 roll mul 5 1 roll} repeat
+ mul 4 1 roll
+ K
+ }
+ {
+ 1 exch sub 4 1 roll
+ 3 {1 exch sub 3 index mul 1 exch sub 3 1 roll} repeat
+ 4 -1 roll pop
+ XA
+ } ifelse
+} def
+/Xk
+{
+ 3 -1 roll pop
+ 0 eq
+ {
+ 1 exch sub
+ 3 {dup 3 1 roll mul 5 1 roll} repeat
+ mul 4 1 roll
+ k
+ }
+ {
+ 1 exch sub 4 1 roll
+ 3 {1 exch sub 3 index mul 1 exch sub 3 1 roll} repeat
+ 4 -1 roll pop
+ Xa
+ } ifelse
+} def
+/A
+{
+ pop
+} def
+/annotatepage
+{
+userdict /annotatepage 2 copy known {get exec} {pop pop} ifelse
+} def
+/XT {
+ pop pop
+} def
+/Xt {
+ pop
+} def
+/discard
+{
+ save /discardSave exch store
+ discardDict begin
+ /endString exch store
+ gt38?
+ {
+ 2 add
+ } if
+ load
+ stopped
+ pop
+ end
+ discardSave restore
+} bind def
+userdict /discardDict 7 dict dup begin
+put
+/pre38Initialize
+{
+ /endStringLength endString length store
+ /newBuff buffer 0 endStringLength getinterval store
+ /newBuffButFirst newBuff 1 endStringLength 1 sub getinterval store
+ /newBuffLast newBuff endStringLength 1 sub 1 getinterval store
+} def
+/shiftBuffer
+{
+ newBuff 0 newBuffButFirst putinterval
+ newBuffLast 0
+ currentfile read not
+ {
+ stop
+ } if
+ put
+} def
+0
+{
+ pre38Initialize
+ mark
+ currentfile newBuff readstring exch pop
+ {
+ {
+ newBuff endString eq
+ {
+ cleartomark stop
+ } if
+ shiftBuffer
+ } loop
+ }
+ {
+ stop
+ } ifelse
+} def
+1
+{
+ pre38Initialize
+ /beginString exch store
+ mark
+ currentfile newBuff readstring exch pop
+ {
+ {
+ newBuff beginString eq
+ {
+ /layerCount dup load 1 add store
+ }
+ {
+ newBuff endString eq
+ {
+ /layerCount dup load 1 sub store
+ layerCount 0 eq
+ {
+ cleartomark stop
+ } if
+ } if
+ } ifelse
+ shiftBuffer
+ } loop
+ } if
+} def
+2
+{
+ mark
+ {
+ currentfile buffer {readline} stopped {
+ % assume error was due to overfilling the buffer
+ }{
+ not
+ {
+ stop
+ } if
+ endString eq {
+ cleartomark stop
+ } if
+ }ifelse
+ } loop
+} def
+3
+{
+ /beginString exch store
+ /layerCnt 1 store
+ mark
+ {
+ currentfile buffer {readline} stopped {
+ % assume error was due to overfilling the buffer
+ }{
+ not
+ {
+ stop
+ } if
+ dup beginString eq
+ {
+ pop /layerCnt dup load 1 add store
+ }
+ {
+ endString eq
+ {
+ layerCnt 1 eq
+ {
+ cleartomark stop
+ }
+ {
+ /layerCnt dup load 1 sub store
+ } ifelse
+ } if
+ } ifelse
+ }ifelse
+ } loop
+} def
+end
+userdict /clipRenderOff 15 dict dup begin
+put
+{
+ /n /N /s /S /f /F /b /B
+}
+{
+ {
+ _doClip 1 eq
+ {
+ /_doClip 0 ddef _eo {eoclip} {clip} ifelse
+ } if
+ newpath
+ } def
+} forall
+/Tr /pop load def
+/Bb {} def
+/BB /pop load def
+/Bg {12 npop} def
+/Bm {6 npop} def
+/Bc /Bm load def
+/Bh {4 npop} def
+end
+/Lb
+{
+ 6 npop
+ 7 2 roll
+ 5 npop
+ 0 eq
+ {
+ 0 eq
+ {
+ (%AI5_BeginLayer) 1 (%AI5_EndLayer--) discard
+ }
+ {
+
+ /clipForward? true def
+
+ /Tx /pop load def
+ /Tj /pop load def
+
+ currentdict end clipRenderOff begin begin
+ } ifelse
+ }
+ {
+ 0 eq
+ {
+ save /discardSave exch store
+ } if
+ } ifelse
+} bind def
+/LB
+{
+ discardSave dup null ne
+ {
+ restore
+ }
+ {
+ pop
+ clipForward?
+ {
+ currentdict
+ end
+ end
+ begin
+
+ /clipForward? false ddef
+ } if
+ } ifelse
+} bind def
+/Pb
+{
+ pop pop
+ 0 (%AI5_EndPalette) discard
+} bind def
+/Np
+{
+ 0 (%AI5_End_NonPrinting--) discard
+} bind def
+/Ln /pop load def
+/Ap
+/pop load def
+/Ar
+{
+ 72 exch div
+ 0 dtransform dup mul exch dup mul add sqrt
+ dup 1 lt
+ {
+ pop 1
+ } if
+ setflat
+} def
+/Mb
+{
+ q
+} def
+/Md
+{
+} def
+/MB
+{
+ Q
+} def
+/nc 4 dict def
+nc begin
+/setgray
+{
+ pop
+} bind def
+/setcmykcolor
+{
+ 4 npop
+} bind def
+/setrgbcolor
+{
+ 3 npop
+} bind def
+/setcustomcolor
+{
+ 2 npop
+} bind def
+currentdict readonly pop
+end
+/XP
+{
+ 4 npop
+} bind def
+/XD
+{
+ pop
+} bind def
+end
+setpacking
+%%EndResource
+%%BeginResource: procset Adobe_cshow 2.0 8
+%%Title: (Writing System Operators)
+%%Version: 2.0 8
+%%CreationDate: (1/23/89) ()
+%%Copyright: ((C) 1992-1996 Adobe Systems Incorporated All Rights Reserved)
+currentpacking true setpacking
+userdict /Adobe_cshow 14 dict dup begin put
+/initialize
+{
+ Adobe_cshow begin
+ Adobe_cshow
+ {
+ dup xcheck
+ {
+ bind
+ } if
+ pop pop
+ } forall
+ end
+ Adobe_cshow begin
+} def
+/terminate
+{
+currentdict Adobe_cshow eq
+ {
+ end
+ } if
+} def
+/cforall
+{
+ /_lobyte 0 ddef
+ /_hibyte 0 ddef
+ /_cproc exch ddef
+ /_cscript currentfont /FontScript known { currentfont /FontScript get } { -1 } ifelse ddef
+ {
+ /_lobyte exch ddef
+ _hibyte 0 eq
+ _cscript 1 eq
+ _lobyte 129 ge _lobyte 159 le and
+ _lobyte 224 ge _lobyte 252 le and or and
+ _cscript 2 eq
+ _lobyte 161 ge _lobyte 254 le and and
+ _cscript 3 eq
+ _lobyte 161 ge _lobyte 254 le and and
+ _cscript 25 eq
+ _lobyte 161 ge _lobyte 254 le and and
+ _cscript -1 eq
+ or or or or and
+ {
+ /_hibyte _lobyte ddef
+ }
+ {
+ _hibyte 256 mul _lobyte add
+ _cproc
+ /_hibyte 0 ddef
+ } ifelse
+ } forall
+} def
+/cstring
+{
+ dup 256 lt
+ {
+ (s) dup 0 4 3 roll put
+ }
+ {
+ dup 256 idiv exch 256 mod
+ (hl) dup dup 0 6 5 roll put 1 4 3 roll put
+ } ifelse
+} def
+/clength
+{
+ 0 exch
+ { 256 lt { 1 } { 2 } ifelse add } cforall
+} def
+/hawidthshow
+{
+ {
+ dup cstring
+ show
+ _hvax _hvay rmoveto
+ _hvwb eq { _hvcx _hvcy rmoveto } if
+ } cforall
+} def
+/vawidthshow
+{
+ {
+ dup 255 le
+ _charorientation 1 eq
+ and
+ {
+ -90 rotate
+ 0 _fontRotateAdjust rmoveto
+ cstring
+ _hvcx _hvcy _hvwb _hvax _hvay 6 -1 roll awidthshow
+ 0 _fontRotateAdjust neg rmoveto
+ 90 rotate
+ }
+ {
+ currentpoint
+ _fontHeight sub
+ exch _hvay sub exch _hvax sub
+ 2 index _hvwb eq { exch _hvcy sub exch _hvcx sub } if
+ 3 2 roll
+ cstring
+ dup stringwidth pop 2 div neg _fontAscent neg rmoveto
+ show
+ moveto
+ } ifelse
+ } cforall
+} def
+/hvawidthshow
+{
+ 6 1 roll
+ /_hvay exch ddef
+ /_hvax exch ddef
+ /_hvwb exch ddef
+ /_hvcy exch ddef
+ /_hvcx exch ddef
+ _lineorientation 0 eq { hawidthshow } { vawidthshow } ifelse
+} def
+/hvwidthshow
+{
+ 0 0 3 -1 roll hvawidthshow
+} def
+/hvashow
+{
+ 0 0 0 6 -3 roll hvawidthshow
+} def
+/hvshow
+{
+ 0 0 0 0 0 6 -1 roll hvawidthshow
+} def
+currentdict readonly pop end
+setpacking
+%%EndResource
+%%BeginResource: procset Adobe_shading_AI8 1.0 0
+%%Title: (Adobe Illustrator 8 Shading Procset)
+%%Version: 1.0 0
+%%CreationDate: (12/17/97) ()
+%%Copyright: ((C) 1987-1997 Adobe Systems Incorporated All Rights Reserved)
+userdict /defaultpacking currentpacking put true setpacking
+userdict /Adobe_shading_AI8 10 dict dup begin put
+/initialize {
+ Adobe_shading_AI8 begin
+ Adobe_shading_AI8 bdprocs
+ Mesh /initialize get exec
+} def
+/terminate {
+ currentdict Adobe_shading_AI8 eq {
+ end
+ } if
+} def
+/bdprocs {
+ {
+ dup xcheck 1 index type /arraytype eq and {
+ bind
+ } if
+ pop pop
+ } forall
+} def
+/X! {pop} def
+/X# {pop pop} def
+/Mesh 40 dict def
+Mesh begin
+/initialize {
+ Mesh bdprocs
+ Mesh begin
+ /emulate? /AI8MeshEmulation where {
+ pop AI8MeshEmulation
+ }{
+ systemdict /shfill known not
+ } ifelse def
+ end
+} def
+/bd {
+ shadingdict begin
+} def
+/paint {
+ emulate? {
+ end
+ }{
+ /_lp /none ddef _fc /_lp /none ddef
+
+ /AIColorSpace AIColorSpace tocolorspace store
+ /ColorSpace AIColorSpace topsspace store
+
+ version_ge_3010.106 not systemdict /setsmoothness known and {
+ 0.0001 setsmoothness
+ } if
+
+ composite? {
+ /DataSource getdatasrc def
+ Matrix concat
+ currentdict end
+ shfill
+ }{
+ AIColorSpace makesmarks AIPlateList markingplate and not isoverprint and {
+ end
+ }{
+ /ColorSpace /DeviceGray store
+ /Decode [0 1 0 1 0 1] store
+ /DataSource getplatesrc def
+ Matrix concat
+ currentdict end
+ shfill
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/shadingdict 12 dict def
+shadingdict begin
+ /ShadingType 6 def
+ /BitsPerCoordinate 16 def
+ /BitsPerComponent 8 def
+ /BitsPerFlag 8 def
+end
+/datafile null def
+/databuf 256 string def
+/dataptr 0 def
+/srcspace null def
+/srcchannels 0 def
+/dstchannels 0 def
+/dstplate 0 def
+/srctodstcolor null def
+/getplatesrc {
+ /srcspace AIColorSpace store
+ /srcchannels AIColorSpace getnchannels store
+ /dstchannels 1 store
+ /dstplate getplateindex store
+ /srctodstcolor srcspace makesmarks {
+ dstplate 4 eq {
+ {1 exch sub}
+ }{
+ {srcspace tocmyk 3 dstplate sub index 1 exch sub 5 1 roll 4 {pop} repeat}
+ } ifelse
+ }{
+ {srcchannels {pop} repeat 1}
+ } ifelse store
+ /datafile getdatasrc store
+ /rdpatch168 load DataLength () /SubFileDecode filter
+} def
+/getdatasrc {
+ /rdcmntline load /ASCII85Decode filter
+} def
+/rdpatch168 {
+ /dataptr 0 store
+ 49 rdcount
+ 4 {
+ dup {pop srcchannels getint8} if
+ dup {pop srctodstcolor dstchannels putint8 true} if
+ } repeat
+ {databuf 0 dataptr getinterval}{()} ifelse
+} def
+/rdpatch3216 {
+ /dataptr 0 store
+ 97 rdcount
+ 4 {
+ dup {pop srcchannels getint16} if
+ dup {pop srctodstcolor dstchannels putint16 true} if
+ } repeat
+ {databuf 0 dataptr getinterval}{()} ifelse
+} def
+/rdcount {
+ dup 0 gt {
+ datafile databuf dataptr 4 -1 roll getinterval readstring
+ exch length dataptr add /dataptr exch store
+ }{
+ true
+ } ifelse
+} def
+/getint8 {
+ mark true 3 -1 roll
+ {
+ dup {pop datafile read} if
+ dup {pop 255 div true} if
+ } repeat
+ {
+ counttomark 1 add -1 roll pop true
+ }{
+ cleartomark false
+ } ifelse
+} def
+/putint8 {
+ dup dataptr add /dataptr exch store
+ dataptr exch
+ {
+ 1 sub exch
+ 255 mul cvi
+ databuf 2 index
+ 3 -1 roll put
+ } repeat
+ pop
+} def
+/getint16 {
+ mark true 3 -1 roll
+ {
+ dup {pop datafile read} if
+ dup {pop 256 mul datafile read} if
+ dup {pop add 65535 div true} if
+ } repeat
+ {
+ counttomark 1 add -1 roll pop true
+ }{
+ cleartomark false
+ } ifelse
+} def
+/putint16 {
+ dup 2 mul dataptr add /dataptr exch store
+ dataptr exch
+ {
+ 2 sub exch
+ 65535 mul cvi dup
+ 256 idiv databuf 3 index 3 -1 roll put
+ 256 mod databuf 2 index 1 add 3 -1 roll put
+ } repeat
+ pop
+} def
+/srcbuf 256 string def
+/rdcmntline {
+ currentfile srcbuf readline pop
+ (%) anchorsearch {pop} if
+} def
+/getplateindex {
+ 0 [cyan? magenta? yellow? black? customColor?] {{exit} if 1 add} forall
+} def
+/aicsarray 4 array def
+/aicsaltvals 4 array def
+/aicsaltcolr aicsaltvals def
+/tocolorspace {
+ dup type /arraytype eq {
+ mark exch aload pop
+ aicsarray 0 3 -1 roll put
+ aicsarray 1 3 -1 roll put
+ dup aicsarray 2 3 -1 roll put
+ gettintxform aicsarray 3 3 -1 roll put
+ counttomark aicsaltvals 0 3 -1 roll getinterval /aicsaltcolr exch store
+ aicsaltcolr astore pop pop
+ aicsarray
+ } if
+} def
+/subtintxform {aicsaltcolr {1 index mul exch} forall pop} def
+/addtintxform {aicsaltcolr {1 sub 1 index mul 1 add exch} forall pop} def
+/gettintxform {
+ /DeviceRGB eq {/addtintxform}{/subtintxform} ifelse load
+} def
+/getnchannels {
+ dup type /arraytype eq {0 get} if
+ colorspacedict exch get begin Channels end
+} def
+/makesmarks {
+ composite? {
+ pop true
+ }{
+ dup dup type /arraytype eq {0 get} if
+ colorspacedict exch get begin MarksPlate end
+ } ifelse
+} def
+/markingplate {
+ composite? {
+ pop true
+ }{
+ dup type /arraytype eq {
+ dup length getplateindex gt {getplateindex get}{pop false} ifelse
+ } if
+ } ifelse
+} def
+/tocmyk {
+ dup dup type /arraytype eq {0 get} if
+ colorspacedict exch get begin ToCMYK end
+} def
+/topsspace {
+ dup dup type /arraytype eq {0 get} if
+ colorspacedict exch get begin ToPSSpace end
+} def
+/colorspacedict 5 dict dup begin
+ /DeviceGray 4 dict dup begin
+ /Channels 1 def
+ /MarksPlate {pop black?} def
+ /ToCMYK {pop 1 exch sub 0 0 0 4 -1 roll} def
+ /ToPSSpace {} def
+ end def
+ /DeviceRGB 4 dict dup begin
+ /Channels 3 def
+ /MarksPlate {pop isCMYKSep?} def
+ /ToCMYK {pop _rgbtocmyk} def
+ /ToPSSpace {} def
+ end def
+ /DeviceCMYK 4 dict dup begin
+ /Channels 4 def
+ /MarksPlate {pop isCMYKSep?} def
+ /ToCMYK {pop} def
+ /ToPSSpace {} def
+ end def
+ /Separation 4 dict dup begin
+ /Channels 1 def
+ /MarksPlate {
+ /findcmykcustomcolor where {
+ pop dup 1 exch ToCMYK 5 -1 roll 1 get
+ findcmykcustomcolor 1 setcustomcolor
+ systemdict /currentgray get exec
+ 1 ne
+ }{
+ pop false
+ } ifelse
+ } def
+ /ToCMYK {
+ dup 2 get mark exch 4 2 roll
+ 3 get exec
+ counttomark -1 roll tocmyk
+ 5 -1 roll pop
+ } def
+ /ToPSSpace {} def
+ end def
+ /Process 4 dict dup begin
+ /Channels 1 def
+ /MarksPlate {
+ isCMYKSep? {
+ 1 exch ToCMYK 4 array astore getplateindex get 0 ne
+ }{
+ pop false
+ } ifelse
+ } def
+ /ToCMYK {
+ dup 2 get mark exch 4 2 roll
+ 3 get exec
+ counttomark -1 roll tocmyk
+ 5 -1 roll pop
+ } def
+ /ToPSSpace {
+ 4 array copy dup 0 /Separation put
+ } def
+ end def
+end def
+/isoverprint {
+ /currentoverprint where {pop currentoverprint}{_of} ifelse
+} def
+/version_ge_3010.106 {
+ version {cvr} stopped {
+ pop
+ false
+ }{
+ 3010.106 ge
+ } ifelse
+} def
+end
+end
+defaultpacking setpacking
+%%EndResource
+%%EndProlog
+%%BeginSetup
+userdict /_useSmoothShade false put
+userdict /_aicmykps false put
+userdict /_forceToCMYK false put
+Adobe_level2_AI5 /initialize get exec
+Adobe_cshow /initialize get exec
+Adobe_ColorImage_AI6 /initialize get exec
+Adobe_shading_AI8 /initialize get exec
+Adobe_Illustrator_AI5 /initialize get exec
+%AI5_Begin_NonPrinting
+Np
+%AI3_BeginPattern: (Brick)
+(Brick) 0 0 72 72 [
+%AI3_Tile
+(0 O 0 R 0.3 0.85 0.85 0 k
+ 0.3 0.85 0.85 0 K
+) @
+(
+%AI6_BeginPatternLayer
+800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+0 0 m
+0 72 L
+72 72 L
+72 0 L
+0 0 L
+f %AI6_EndPatternLayer
+) &
+(0 O 0 R 1 g
+ 1 G
+) @
+(
+%AI6_BeginPatternLayer
+800 Ar
+0 J 0 j 0.3 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+0 68.4097 m
+72 68.4097 l
+S 0 61.209 m
+72 61.209 L
+S 0 54.0088 m
+72 54.0088 L
+S 0 46.8076 m
+72 46.8076 L
+S 0 39.6084 m
+72 39.6084 L
+S 0 32.4072 m
+72 32.4072 L
+S 0 25.207 m
+72 25.207 L
+S 0 18.0059 m
+72 18.0059 L
+S 0 10.8057 m
+72 10.8057 L
+S 0 3.6064 m
+72 3.6064 L
+S 68.4102 68.4097 m
+68.4102 61.2217 l
+S 54.0098 68.4097 m
+54.0098 61.2217 L
+S 39.6094 68.4097 m
+39.6094 61.2217 L
+S 25.21 68.4097 m
+25.21 61.2217 L
+S 10.8105 68.4097 m
+10.8105 61.2217 L
+S 68.4102 53.9717 m
+68.4102 46.7842 l
+S 54.0098 53.9717 m
+54.0098 46.7842 L
+S 39.6094 53.9717 m
+39.6094 46.7842 L
+S 25.21 53.9717 m
+25.21 46.7842 L
+S 10.8105 53.9717 m
+10.8105 46.7842 L
+S 68.4102 39.5967 m
+68.4102 32.4092 l
+S 54.0098 39.5967 m
+54.0098 32.4092 L
+S 39.6094 39.5967 m
+39.6094 32.4092 L
+S 25.21 39.5967 m
+25.21 32.4092 L
+S 10.8105 39.5967 m
+10.8105 32.4092 L
+S 68.4102 25.2217 m
+68.4102 18.0342 l
+S 54.0098 25.2217 m
+54.0098 18.0342 L
+S 39.6094 25.2217 m
+39.6094 18.0342 L
+S 25.21 25.2217 m
+25.21 18.0342 L
+S 10.8105 25.2217 m
+10.8105 18.0342 L
+S 68.4102 10.7842 m
+68.4102 3.5967 l
+S 54.0098 10.7842 m
+54.0098 3.5967 L
+S 39.6094 10.7842 m
+39.6094 3.5967 L
+S 25.21 10.7842 m
+25.21 3.5967 L
+S 10.8105 10.7842 m
+10.8105 3.5967 L
+S 61.1973 3.5967 m
+61.1973 0 L
+S 46.7969 3.5967 m
+46.7969 0 L
+S 32.3965 3.5967 m
+32.3965 0 L
+S 17.9971 3.5967 m
+17.9971 0 L
+S 3.5967 3.5967 m
+3.5967 0 l
+S 61.1973 18.0342 m
+61.1973 10.8467 L
+S 46.7969 18.0342 m
+46.7969 10.8467 L
+S 32.3965 18.0342 m
+32.3965 10.8467 L
+S 17.9971 18.0342 m
+17.9971 10.8467 L
+S 3.5967 18.0342 m
+3.5967 10.8467 l
+S 61.1973 32.4092 m
+61.1973 25.2217 L
+S 46.7969 32.4092 m
+46.7969 25.2217 L
+S 17.9971 32.4092 m
+17.9971 25.2217 L
+S 3.5967 32.4092 m
+3.5967 25.2217 l
+S 61.1973 46.7842 m
+61.1973 39.5967 L
+S 46.7969 46.7842 m
+46.7969 39.5967 L
+S 32.3965 46.7842 m
+32.3965 39.5967 L
+S 17.9971 46.7842 m
+17.9971 39.5967 L
+S 3.5967 46.7842 m
+3.5967 39.5967 l
+S 61.1973 61.2217 m
+61.1973 54.0347 L
+S 46.7969 61.2217 m
+46.7969 54.0347 L
+S 32.3965 61.2217 m
+32.3965 54.0347 L
+S 17.9971 61.2217 m
+17.9971 54.0347 L
+S 3.5967 61.2217 m
+3.5967 54.0347 l
+S 61.1973 71.959 m
+61.1973 68.4717 L
+S 46.7969 71.959 m
+46.7969 68.4717 L
+S 32.3965 71.959 m
+32.3965 68.4717 L
+S 17.9971 71.959 m
+17.9971 68.4717 L
+S 3.5967 71.959 m
+3.5967 68.4717 l
+S 32.3965 32.4092 m
+32.3965 25.2217 L
+S %AI6_EndPatternLayer
+) &
+] E
+%AI3_EndPattern
+%AI3_BeginPattern: (Confetti)
+(Confetti) 4.85 3.617 76.85 75.617 [
+%AI3_Tile
+(0 O 0 R 1 g
+ 1 G
+) @
+(
+%AI6_BeginPatternLayer
+800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+4.85 3.617 m
+4.85 75.617 L
+76.85 75.617 L
+76.85 3.617 L
+4.85 3.617 L
+f %AI6_EndPatternLayer
+) &
+(0 O 0 R 0 g
+ 0 G
+) @
+(
+%AI6_BeginPatternLayer
+800 Ar
+0 J 0 j 0.3 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+10.6 64.867 m
+7.85 62.867 l
+S 9.1 8.617 m
+6.85 6.867 l
+S 78.1 68.617 m
+74.85 67.867 l
+S 76.85 56.867 m
+74.35 55.117 l
+S 79.6 51.617 m
+76.6 51.617 l
+S 76.35 44.117 m
+73.6 45.867 l
+S 78.6 35.867 m
+76.6 34.367 l
+S 76.1 23.867 m
+73.35 26.117 l
+S 78.1 12.867 m
+73.85 13.617 l
+S 68.35 14.617 m
+66.1 12.867 l
+S 76.6 30.617 m
+73.6 30.617 l
+S 62.85 58.117 m
+60.956 60.941 l
+S 32.85 59.617 m
+31.196 62.181 l
+S 47.891 64.061 m
+49.744 66.742 l
+S 72.814 2.769 m
+73.928 5.729 l
+S 67.976 2.633 m
+67.35 5.909 l
+S 61.85 27.617 m
+59.956 30.441 l
+S 53.504 56.053 m
+51.85 58.617 l
+S 52.762 1.779 m
+52.876 4.776 l
+S 45.391 5.311 m
+47.244 7.992 l
+S 37.062 3.375 m
+35.639 5.43 l
+S 55.165 34.828 m
+57.518 37.491 l
+S 20.795 3.242 m
+22.12 5.193 l
+S 14.097 4.747 m
+15.008 8.965 l
+S 9.736 1.91 m
+8.073 4.225 l
+S 31.891 5.573 m
+32.005 8.571 l
+S 12.1 70.367 m
+15.6 68.867 l
+S 9.35 54.867 m
+9.6 58.117 l
+S 12.85 31.867 m
+14.35 28.117 l
+S 10.1 37.367 m
+12.35 41.117 l
+S 34.1 71.117 m
+31.85 68.617 l
+S 38.35 71.117 m
+41.6 68.367 l
+S 55.1 71.117 m
+58.35 69.117 l
+S 57.35 65.117 m
+55.35 61.867 l
+S 64.35 66.367 m
+69.35 68.617 l
+S 71.85 62.867 m
+69.35 61.117 l
+S 23.6 70.867 m
+23.6 67.867 l
+S 20.6 65.867 m
+17.35 65.367 l
+S 24.85 61.367 m
+25.35 58.117 l
+S 25.85 65.867 m
+29.35 66.617 l
+S 14.1 54.117 m
+16.85 56.117 l
+S 12.35 11.617 m
+12.6 15.617 l
+S 12.1 19.867 m
+14.35 22.367 l
+S 26.1 9.867 m
+23.6 13.367 l
+S 34.6 47.117 m
+32.1 45.367 l
+S 62.6 41.867 m
+59.85 43.367 l
+S 31.6 35.617 m
+27.85 36.367 l
+S 36.35 26.117 m
+34.35 24.617 l
+S 33.85 14.117 m
+31.1 16.367 l
+S 37.1 9.867 m
+35.1 11.117 l
+S 34.35 20.867 m
+31.35 20.867 l
+S 44.6 56.617 m
+42.1 54.867 l
+S 47.35 51.367 m
+44.35 51.367 l
+S 44.1 43.867 m
+41.35 45.617 l
+S 43.35 33.117 m
+42.6 30.617 l
+S 43.85 23.617 m
+41.1 25.867 l
+S 44.35 15.617 m
+42.35 16.867 l
+S 67.823 31.1 m
+64.823 31.1 l
+S 27.1 32.617 m
+29.6 30.867 l
+S 31.85 55.117 m
+34.85 55.117 l
+S 19.6 40.867 m
+22.1 39.117 l
+S 16.85 35.617 m
+19.85 35.617 l
+S 20.1 28.117 m
+22.85 29.867 l
+S 52.1 42.617 m
+54.484 44.178 l
+S 52.437 50.146 m
+54.821 48.325 l
+S 59.572 54.133 m
+59.35 51.117 l
+S 50.185 10.055 m
+53.234 9.928 l
+S 51.187 15.896 m
+53.571 14.075 l
+S 58.322 19.883 m
+59.445 16.823 l
+S 53.1 32.117 m
+50.6 30.367 l
+S 52.85 24.617 m
+49.6 25.617 l
+S 61.85 9.117 m
+59.1 10.867 l
+S 69.35 34.617 m
+66.6 36.367 l
+S 67.1 23.617 m
+65.1 22.117 l
+S 24.435 46.055 m
+27.484 45.928 l
+S 25.437 51.896 m
+27.821 50.075 l
+S 62.6 47.117 m
+65.321 46.575 l
+S 19.85 19.867 m
+20.35 16.617 l
+S 21.85 21.867 m
+25.35 22.617 l
+S 37.6 62.867 m
+41.6 62.117 l
+S 38.323 42.1 m
+38.823 38.6 l
+S 69.35 52.617 m
+66.85 53.867 l
+S 14.85 62.117 m
+18.1 59.367 l
+S 9.6 46.117 m
+7.1 44.367 l
+S 20.6 51.617 m
+18.6 50.117 l
+S 46.141 70.811 m
+47.994 73.492 l
+S 69.391 40.561 m
+71.244 43.242 l
+S 38.641 49.311 m
+39.35 52.117 l
+S 25.141 16.811 m
+25.85 19.617 l
+S 36.6 32.867 m
+34.6 31.367 l
+S 6.1 68.617 m
+2.85 67.867 l
+S 4.85 56.867 m
+2.35 55.117 l
+S 7.6 51.617 m
+4.6 51.617 l
+S 6.6 35.867 m
+4.6 34.367 l
+S 6.1 12.867 m
+1.85 13.617 l
+S 4.6 30.617 m
+1.6 30.617 l
+S 72.814 74.769 m
+73.928 77.729 l
+S 67.976 74.633 m
+67.35 77.909 l
+S 52.762 73.779 m
+52.876 76.776 l
+S 37.062 75.375 m
+35.639 77.43 l
+S 20.795 75.242 m
+22.12 77.193 l
+S 9.736 73.91 m
+8.073 76.225 l
+S 10.1 23.617 m
+6.35 24.367 l
+S 73.217 18.276 m
+71.323 21.1 l
+S 28.823 39.6 m
+29.505 42.389 l
+S 49.6 38.617 m
+47.6 37.117 l
+S 60.323 73.6 m
+62.323 76.6 l
+S 60.323 1.6 m
+62.323 4.6 l
+S %AI6_EndPatternLayer
+) &
+] E
+%AI3_EndPattern
+%AI3_BeginPattern: (Leaves - Fall )
+(Leaves - Fall ) 0 0 64.0781 78.9336 [
+%AI3_Tile
+(0 O 0 R 0.05 0.2 1 0 k
+ 0.05 0.2 1 0 K
+) @
+(
+%AI6_BeginPatternLayer
+800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+64.0781 78.9336 m
+64.0781 0 L
+0 0 L
+0 78.9336 L
+64.0781 78.9336 L
+f %AI6_EndPatternLayer
+) &
+(0 O 0 R 0.83 0 1 0 k
+ 0.83 0 1 0 K
+) @
+(
+%AI6_BeginPatternLayer
+800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 1 D
+0 XR
+29.7578 0.9902 m
+30.4346 1.1914 30.7246 1.3428 V
+29.2559 4.0547 33.707 8.3359 34.627 9.0762 C
+35.2275 8.8506 35.3477 6.3184 34.6699 4.9805 C
+35.5137 5.1035 37.7031 3.7256 38.4609 2.4365 C
+38.5254 3.125 40.0957 6.0664 40.9219 6.4434 C
+40.002 6.8408 39.3359 8.3135 38.5742 9.7617 C
+39.5957 9.9287 40.9961 9.0078 42.4668 8.1025 C
+42.9814 8.9043 44.3555 9.875 45.6143 10.3916 C
+44.5264 11.0781 44.0313 11.8203 43.5352 13.2793 C
+42.4922 12.7139 40.3057 12.5645 39.7764 12.8516 C
+40.291 13.9648 42.5371 14.5078 43.2676 14.4551 C
+43.0137 15.3164 42.8652 17.4697 43.0391 20.0625 C
+41.3789 18.7461 39.834 17.4297 38.1738 17.4883 C
+38.4434 16.0664 37.8076 14.2607 37.4307 13.7676 C
+36.8574 14.5117 36.4463 15.3389 36.8008 17.3164 C
+35.3486 17.8008 34.1113 18.3467 32.7373 19.6045 C
+32.7373 17.7734 32.166 16.5723 31.2969 15.2959 C
+32.5576 14.8076 33.8301 13.6045 33.8252 12.5664 C
+32.9775 12.7178 31.2852 13.4619 30.793 14.4551 C
+30.0742 13.707 28.3906 12.3984 26.7871 12.3945 C
+27.9746 11.5391 28.8945 10.5059 28.9893 8.5938 C
+30.2422 9.5645 32.6953 10.1797 34.0752 9.582 C
+29.2344 5.3457 29.7031 2.3125 29.7578 0.9902 C
+f 13.8525 29.9844 m
+13.3281 29.5127 13.1309 29.25 V
+15.623 27.4326 13.3691 21.6074 12.8555 20.5439 C
+12.2168 20.4883 10.8096 23.2285 10.8457 24.7266 C
+9.7129 23.9707 8.0488 24.0918 6.4463 24.3779 C
+7.0186 23.2891 6.6172 21.3447 5.8164 20.5439 C
+6.8184 20.5801 8.1699 19.8652 9.4785 18.8838 C
+8.6436 18.0645 6.8164 18.2246 4.9004 18.8838 C
+4.9004 17.5107 4.0781 15.7734 3.2412 14.5918 C
+4.5576 14.6484 5.7031 13.9629 6.5605 12.9316 C
+7.2256 14.5 9.2598 15.6133 10.166 15.5645 C
+10.1826 14.1992 8.6094 12.1094 7.5879 11.7109 C
+8.1875 11.041 9.207 9.5107 10.166 7.0947 C
+10.9648 9.0205 12.1348 10.2627 13.3672 11.1953 C
+12.2256 12.7578 12.3994 13.6289 12.7988 15.1074 C
+13.541 14.5664 14.5723 14.1338 14.7441 12.1309 C
+16.4609 12.416 17.5957 12.3447 19.0938 11.4434 C
+18.6387 13.1055 18.6348 14.707 18.9551 16.4063 C
+17.1055 16.2666 15.5449 16.4795 14.5156 17.9688 C
+15.3457 18.1953 17.6055 18.2549 18.4795 17.3223 C
+18.8066 18.3047 19.7012 19.7109 21.1475 20.4043 C
+19.707 20.6641 18.7227 21.7637 17.8135 23.4492 C
+17.1006 22.0332 14.873 20.3691 13.3711 20.3145 C
+15.373 24.3779 15.373 27.2959 13.8525 29.9844 C
+f 41.2324 26.0742 m
+41.5518 26.7021 41.7549 26.959 V
+44.1523 25.0176 48.958 28.3262 49.8535 29.0957 C
+49.7432 29.7266 47.6182 30.8643 45.9004 29.834 C
+46.3408 31.123 45.4395 33.084 44.2402 34.126 C
+45.9805 34.0254 48.126 35.3867 48.6484 36.1289 C
+48.8701 35.1514 50.0527 33.8809 51.3379 32.8672 C
+51.6895 33.8398 50.9941 35.958 50.0781 37.5605 C
+51.3125 38.0605 52.4248 38.9912 52.8828 40.25 C
+53.3398 38.9336 54.3428 38.2598 55.6875 37.5039 C
+54.5273 36.0762 53.7471 33.9023 54.0273 33.0391 C
+55.3496 33.374 56.9209 36.0918 57.0439 37.1816 C
+57.9189 36.415 59.4727 35.7285 62.0537 35.4219 C
+60.3535 34.3438 59.9902 32.3516 59.4063 30.9219 C
+58.2588 31.3682 56.0898 31.4277 55.1152 30.8643 C
+55.8281 30.2852 57.168 29.7344 59.1777 29.7207 C
+59.1777 28.1758 59.6406 27.043 60.8945 25.8281 C
+59.1719 25.8418 57.0723 25.3555 55.5762 24.9629 C
+55.3281 26.292 54.4844 27.8887 53.3398 28.2891 C
+53.334 27.4277 53.5996 25.1797 54.4844 24.5117 C
+53.6201 23.9443 52.3672 22.5674 51.9102 20.8496 C
+51.2881 22.1758 50.4268 23.4805 48.5645 23.9238 C
+49.749 24.9766 50.584 26.9941 50.25 28.4609 C
+45.1973 24.4785 42.5215 25.7773 41.2324 26.0742 C
+f 27.7578 38.7324 m
+28.4346 38.9316 28.7246 39.084 V
+27.2559 41.7969 31.707 46.0776 32.627 46.8169 C
+33.2275 46.5918 33.3477 44.0586 32.6699 42.7227 C
+33.5137 42.8457 35.7031 41.4678 36.4609 40.1787 C
+36.5254 40.8652 38.0957 43.8066 38.9219 44.1846 C
+38.002 44.582 37.3359 46.0547 36.5742 47.5039 C
+37.5957 47.6709 38.9961 46.7485 40.4668 45.8438 C
+40.9814 46.6445 42.3555 47.6177 43.6143 48.1328 C
+42.5264 48.8198 42.0313 49.5615 41.5352 51.0205 C
+40.4922 50.4556 38.3057 50.3057 37.7764 50.5938 C
+38.291 51.7056 40.5371 52.2485 41.2676 52.1958 C
+41.0137 53.0576 40.8652 55.2109 41.0391 57.8037 C
+39.3789 56.4878 37.834 55.1719 36.1738 55.2285 C
+36.4434 53.8076 35.8076 52.002 35.4307 51.5088 C
+34.8574 52.2529 34.4463 53.0796 34.8008 55.0576 C
+33.3486 55.5425 32.1113 56.0879 30.7373 57.3467 C
+30.7373 55.5146 30.166 54.314 29.2969 53.0366 C
+30.5576 52.5488 31.8301 51.3467 31.8252 50.3076 C
+30.9775 50.46 29.2852 51.2036 28.793 52.1958 C
+28.0742 51.4497 26.3906 50.1396 24.7871 50.1357 C
+25.9746 49.2817 26.8945 48.2466 26.9893 46.335 C
+28.2422 47.3057 30.6953 47.9209 32.0752 47.3237 C
+27.2344 43.0869 27.7031 40.0547 27.7578 38.7324 C
+f 13.5195 70.3916 m
+12.9941 69.9209 12.7988 69.6587 V
+15.2891 67.8418 13.0352 62.0146 12.5225 60.9517 C
+11.8828 60.8955 10.4766 63.6367 10.5117 65.1348 C
+9.3809 64.3789 7.7148 64.4995 6.1133 64.7856 C
+6.6855 63.6987 6.2842 61.7529 5.4834 60.9517 C
+6.4854 60.9878 7.8359 60.2729 9.1455 59.2925 C
+8.3105 58.4717 6.4834 58.6338 4.5674 59.2925 C
+4.5674 57.9189 3.7461 56.1816 2.9082 54.9995 C
+4.2246 55.0576 5.3691 54.3706 6.2275 53.3408 C
+6.8926 54.9097 8.9258 56.0215 9.832 55.9727 C
+9.8496 54.6079 8.2764 52.5176 7.2539 52.1187 C
+7.8545 51.4497 8.873 49.9189 9.832 47.5039 C
+10.6309 49.4297 11.8008 50.6719 13.0342 51.6045 C
+11.8926 53.1655 12.0664 54.0366 12.4648 55.5146 C
+13.209 54.9746 14.2393 54.5415 14.4102 52.5386 C
+16.127 52.8247 17.2637 52.7529 18.7598 51.8525 C
+18.3057 53.5137 18.3027 55.1147 18.623 56.8149 C
+16.7725 56.6748 15.2129 56.8887 14.1826 58.377 C
+15.0117 58.6035 17.2725 58.6626 18.1465 57.731 C
+18.4736 58.7129 19.3691 60.1187 20.8145 60.8125 C
+19.375 61.0728 18.3896 62.1719 17.4805 63.8579 C
+16.7676 62.4429 14.541 60.7769 13.0371 60.7227 C
+15.041 64.7856 15.041 67.7046 13.5195 70.3916 C
+f 41.2324 64.4824 m
+41.5518 65.1113 41.7549 65.3682 V
+44.1523 63.4272 48.958 66.7354 49.8535 67.5034 C
+49.7432 68.1362 47.6182 69.2725 45.9004 68.2422 C
+46.3408 69.5313 45.4395 71.4922 44.2402 72.5342 C
+45.9805 72.4341 48.126 73.7954 48.6484 74.5371 C
+48.8701 73.5601 50.0527 72.29 51.3379 71.2754 C
+51.6895 72.249 50.9941 74.3662 50.0781 75.9683 C
+51.3125 76.4692 52.4248 77.3994 52.8828 78.6582 C
+53.3398 77.3423 54.3428 76.667 55.6875 75.9111 C
+54.5273 74.4844 53.7471 72.3101 54.0273 71.4473 C
+55.3496 71.7822 56.9209 74.5 57.0439 75.5903 C
+57.9189 74.8232 59.4727 74.1372 62.0537 73.8311 C
+60.3535 72.7534 59.9902 70.7612 59.4063 69.3301 C
+58.2588 69.7773 56.0898 69.8364 55.1152 69.2725 C
+55.8281 68.6934 57.168 68.1431 59.1777 68.1284 C
+59.1777 66.583 59.6406 65.4512 60.8945 64.2373 C
+59.1719 64.249 57.0723 63.7632 55.5762 63.3721 C
+55.3281 64.7002 54.4844 66.2974 53.3398 66.6973 C
+53.334 65.8364 53.5996 63.5874 54.4844 62.9214 C
+53.6201 62.353 52.3672 60.9751 51.9102 59.2583 C
+51.2881 60.583 50.4268 61.8882 48.5645 62.333 C
+49.749 63.3862 50.584 65.4033 50.25 66.8691 C
+45.1973 62.8872 42.5215 64.1851 41.2324 64.4824 C
+f %AI6_EndPatternLayer
+) &
+] E
+%AI3_EndPattern
+%AI3_BeginPattern: (Stripes)
+(Stripes) 8.45 4.6001 80.45 76.6001 [
+%AI3_Tile
+(0 O 0 R 1 0.07 1 0 k
+ 1 0.07 1 0 K
+) @
+(
+%AI6_BeginPatternLayer
+800 Ar
+0 J 0 j 3.6 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+8.2 8.2 m
+80.7 8.2 L
+S 8.2 22.6001 m
+80.7 22.6001 L
+S 8.2 37.0002 m
+80.7 37.0002 L
+S 8.2 51.4 m
+80.7 51.4 L
+S 8.2 65.8001 m
+80.7 65.8001 L
+S 8.2 15.4 m
+80.7 15.4 L
+S 8.2 29.8001 m
+80.7 29.8001 L
+S 8.2 44.2 m
+80.7 44.2 L
+S 8.2 58.6001 m
+80.7 58.6001 L
+S 8.2 73.0002 m
+80.7 73.0002 L
+S %AI6_EndPatternLayer
+) &
+] E
+%AI3_EndPattern
+%AI5_End_NonPrinting--
+%AI5_Begin_NonPrinting
+Np
+%AI8_BeginBrushPattern
+(New Pattern 1)
+0 A
+u 1 Ap
+800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+-7834.75 8587 m
+-7834.75 8563 L
+-7884.75 8563 L
+-7884.75 8587 L
+-7834.75 8587 L
+n u 0 Ap
+0 O
+1 g
+-7854.75 8585 m
+-7866.96 8588.0527 -7875.4434 8578.0605 -7884.75 8570.9512 C
+F -7844.75 8585 m
+-7861.1279 8589.0947 -7870.8008 8569.7227 -7884.75 8565.3154 C
+F -7884.75 8565 m
+-7864.75 8560 -7854.75 8590 -7834.75 8585 C
+F -7874.75 8565 m
+-7858.3721 8560.9053 -7848.6992 8580.2773 -7834.75 8584.6846 C
+F -7864.75 8565 m
+-7852.54 8561.9473 -7844.0566 8571.9395 -7834.75 8579.0488 C
+F -7844.75 8565 m
+-7841.1279 8564.0947 -7837.835 8564.3408 -7834.75 8565.3154 C
+F -7874.75 8585 m
+-7878.3721 8585.9053 -7881.665 8585.6592 -7884.75 8584.6846 C
+F -7844.7817 8565.125 m
+-7850.9009 8563.6162 -7854.7817 8565.125 V
+-7858.877 8563.6484 -7864.7817 8565.125 V
+-7869.7446 8563.4492 -7874.7817 8565.125 V
+-7880.7969 8563.5742 -7884.7817 8565.125 V
+-7884.7817 8584.8096 L
+-7881.6958 8585.7842 -7878.2969 8585.9912 -7874.3799 8584.9082 C
+-7868.2134 8586.4912 -7864.4634 8584.9082 V
+-7859.4634 8586.4912 -7854.3799 8584.8242 V
+-7850.0474 8586.4082 -7844.3799 8584.9082 V
+-7838.8799 8586.3242 -7834.7817 8585.125 V
+-7834.7817 8565.4404 L
+-7837.5254 8564.4287 -7840.6514 8563.9287 -7844.7817 8565.125 C
+f 0 R
+0 G
+1 J 1 j 0.5 w -7864.75 8585 m
+-7872.54 8586.9473 -7878.813 8583.585 -7884.75 8579.0488 C
+S -7854.75 8585 m
+-7866.96 8588.0527 -7875.4434 8578.0605 -7884.75 8570.9512 C
+S -7844.75 8585 m
+-7861.1279 8589.0947 -7870.8008 8569.7227 -7884.75 8565.3154 C
+S -7884.75 8565 m
+-7864.75 8560 -7854.75 8590 -7834.75 8585 C
+S -7874.75 8565 m
+-7858.3721 8560.9053 -7848.6992 8580.2773 -7834.75 8584.6846 C
+S -7864.75 8565 m
+-7852.54 8561.9473 -7844.0566 8571.9395 -7834.75 8579.0488 C
+S -7854.75 8565 m
+-7846.96 8563.0527 -7840.687 8566.415 -7834.75 8570.9512 C
+S -7844.75 8565 m
+-7841.1279 8564.0947 -7837.835 8564.3408 -7834.75 8565.3154 C
+S -7874.75 8585 m
+-7878.3721 8585.9053 -7881.665 8585.6592 -7884.75 8584.6846 C
+S U U %AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 2)
+0 A
+u 800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+-7884 8586 m
+-7819.187 8586 L
+-7819.187 8521.9023 L
+-7884 8521.9023 L
+-7884 8586 L
+n u 0 O
+0 g
+-7849.6978 8544.4297 m
+-7851.6094 8521.9023 L
+-7853.5215 8544.4297 L
+-7852.9033 8544.3066 -7852.2642 8544.2402 -7851.6094 8544.2402 c
+-7850.9551 8544.2402 -7850.3159 8544.3066 -7849.6978 8544.4297 C
+f -7861.2402 8552.3975 m
+-7884 8554.3301 L
+-7861.1138 8556.2734 L
+-7861.2856 8555.5469 -7861.3848 8554.793 -7861.3848 8554.0156 c
+-7861.3848 8553.4629 -7861.3281 8552.9248 -7861.2402 8552.3975 C
+f -7856.519 8545.5723 m
+-7870.1626 8536.8047 L
+-7860.2153 8549.377 L
+-7859.3574 8547.791 -7858.0718 8546.4766 -7856.519 8545.5723 C
+f -7853.481 8563.6074 m
+-7851.5786 8586 L
+-7849.6768 8563.5967 L
+-7850.3018 8563.7227 -7850.9473 8563.791 -7851.6094 8563.791 c
+-7852.25 8563.791 -7852.873 8563.7246 -7853.481 8563.6074 C
+f -7841.9609 8555.5068 m
+-7819.187 8553.5732 L
+-7842.083 8551.6289 L
+-7842.083 8551.8506 L
+-7841.9258 8552.5488 -7841.834 8553.2695 -7841.834 8554.0156 c
+-7841.834 8554.5234 -7841.8848 8555.0195 -7841.9609 8555.5068 C
+f -7860.1138 8558.8262 m
+-7870.1641 8571.5293 L
+-7856.2778 8562.6055 L
+-7857.8823 8561.7305 -7859.2114 8560.416 -7860.1138 8558.8262 C
+f -7842.9961 8549.3945 m
+-7832.875 8536.6055 L
+-7846.7666 8545.5313 L
+-7845.1768 8546.4414 -7843.8633 8547.7793 -7842.9961 8549.3945 C
+f -7846.6895 8562.4512 m
+-7832.873 8571.3281 L
+-7842.9658 8558.5732 L
+-7843.8198 8560.1895 -7845.1152 8561.5313 -7846.6895 8562.4512 C
+f -7842.8887 8558.6133 m
+-7842.3862 8557.6641 -7842.043 8556.6211 -7841.875 8555.5195 c
+-7841.7993 8555.0293 -7841.748 8554.5273 -7841.748 8554.0156 c
+-7841.748 8553.2637 -7841.8398 8552.5352 -7841.998 8551.8311 c
+-7842.1958 8550.957 -7842.5049 8550.124 -7842.918 8549.3545 c
+-7843.7954 8547.7246 -7845.1191 8546.374 -7846.7241 8545.4561 c
+-7847.6294 8544.9375 -7848.6226 8544.5537 -7849.6802 8544.3457 c
+-7850.3047 8544.2207 -7850.9497 8544.1523 -7851.6094 8544.1523 c
+-7852.2695 8544.1523 -7852.915 8544.2207 -7853.5391 8544.3457 c
+-7854.623 8544.5605 -7855.6382 8544.957 -7856.5625 8545.4961 c
+-7858.1313 8546.4102 -7859.4282 8547.7363 -7860.291 8549.335 c
+-7860.7969 8550.2695 -7861.145 8551.2969 -7861.3262 8552.3828 c
+-7861.415 8552.916 -7861.4727 8553.459 -7861.4727 8554.0156 c
+-7861.4727 8554.8008 -7861.3711 8555.5605 -7861.1978 8556.293 c
+-7860.981 8557.207 -7860.6406 8558.0732 -7860.187 8558.8701 c
+-7859.2793 8560.4727 -7857.939 8561.8008 -7856.3174 8562.6826 c
+-7855.4487 8563.1553 -7854.5 8563.498 -7853.4961 8563.6934 c
+-7852.8848 8563.8115 -7852.2554 8563.8779 -7851.6094 8563.8779 c
+-7850.9414 8563.8779 -7850.29 8563.8086 -7849.6602 8563.6826 c
+-7848.5786 8563.4668 -7847.5664 8563.0654 -7846.6455 8562.5273 c
+-7845.0566 8561.5977 -7843.751 8560.2441 -7842.8887 8558.6133 c
+f U U %AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 3)
+0 A
+u 1 Ap
+800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+-7874.75 8587 m
+-7874.75 8563 L
+-7884.75 8563 L
+-7884.75 8587 L
+-7874.75 8587 L
+n u u 0 Ap
+0 O
+1 g
+-7875.4058 8578.5361 m
+-7874.9878 8577.4355 -7874.75 8576.2471 -7874.75 8575 c
+-7874.75 8573.1377 -7875.2681 8571.4004 -7876.1543 8569.9072 c
+-7877.897 8566.9736 -7881.0898 8565 -7884.75 8565 C
+-7884.75 8585 L
+-7884.4297 8585 -7884.1143 8584.9814 -7883.8018 8584.9521 c
+-7881.9121 8584.7754 -7880.1807 8584.0645 -7878.7441 8582.9824 c
+-7877.2471 8581.8545 -7876.0801 8580.3184 -7875.4058 8578.5361 c
+f 0 R
+0 G
+1 J 1 j 0.5 w -7884.75 8565.3174 m
+-7881.7207 8566.2744 -7878.8926 8567.9326 -7876.1543 8569.9072 C
+S -7884.75 8570.9512 m
+-7881.5991 8573.3564 -7878.543 8576.0869 -7875.4058 8578.5361 C
+S -7878.7441 8582.9824 m
+-7880.8105 8581.8916 -7882.7993 8580.5342 -7884.75 8579.043 C
+S -7883.8018 8584.9521 m
+-7884.1191 8584.8682 -7884.4375 8584.7852 -7884.75 8584.6865 C
+S -7878.7441 8582.9824 m
+-7880.1807 8584.0645 -7881.9121 8584.7744 -7883.8018 8584.9521 C
+S -7875.4058 8578.5361 m
+-7874.9878 8577.4355 -7874.75 8576.2471 -7874.75 8575 c
+-7874.75 8573.1377 -7875.2681 8571.4004 -7876.1543 8569.9072 C
+S -7884.75 8585 m
+-7884.4297 8585 -7884.1143 8584.9814 -7883.8018 8584.9521 C
+S -7878.7441 8582.9824 m
+-7877.2471 8581.8545 -7876.0801 8580.3184 -7875.4058 8578.5361 C
+S -7876.1543 8569.9072 m
+-7877.8975 8566.9736 -7881.0898 8565 -7884.75 8565 C
+S U U U %AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 5)
+0 A
+u 800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+-7726.3994 8587 m
+-7726.3994 8573.4199 L
+-7885 8573.4199 L
+-7885 8587 L
+-7726.3994 8587 L
+n u u 0 O
+0.285 0.228 0.171 0 k
+-7741.0786 8585.4844 m
+-7741.043 8586.6895 L
+-7727.5103 8587.5176 -7726.8418 8586.2822 v
+-7726.7441 8586.1016 -7726.647 8585.7148 -7726.561 8585.1934 C
+-7728.584 8585.8242 -7738.291 8585.5713 -7741.0786 8585.4844 C
+f 0.44 0.352 0.264 0 k
+-7741.4063 8574.0234 m
+-7741.3711 8575.2676 L
+-7738.4912 8575.0488 -7728.1914 8574.3164 -7726.543 8574.8652 C
+-7726.7031 8574.2188 -7726.9199 8573.7646 -7727.2046 8573.6152 c
+-7728.8306 8572.7656 -7741.4063 8574.0234 Y
+f 0.145 0.116 0.087 0 k
+-7741.3711 8575.2676 m
+-7741.0786 8585.4844 L
+-7738.291 8585.5713 -7728.584 8585.8242 -7726.561 8585.1934 C
+-7726.1519 8582.7773 -7725.9258 8577.3604 -7726.543 8574.8652 C
+-7728.1914 8574.3164 -7738.4912 8575.0488 -7741.3711 8575.2676 C
+f U u 0.155 0.124 0.093 0 k
+-7766.9375 8579.2734 m
+-7765.897 8579.6563 L
+-7747.0728 8575.1465 L
+-7747.481 8574.3145 L
+-7766.3633 8576.7246 L
+-7767.252 8577.0059 L
+-7767.6504 8576.8936 -7768.1934 8576.8242 V
+-7767.6094 8577.2373 -7767.1426 8578.1406 -7766.9375 8579.2734 C
+f u 0.085 0.068 0.051 0 k
+-7771.7993 8583.666 m
+-7772.5977 8583.7217 -7769.749 8583.6641 Y
+-7770.3481 8583.0176 -7770.771 8581.8203 -7770.8105 8580.4375 c
+-7770.8169 8580.2246 -7770.8105 8580.0176 -7770.7993 8579.8135 C
+-7771.041 8579.707 -7771.0918 8579.7734 -7771.6289 8579.5645 C
+-7771 8583.6113 -7771.7993 8583.666 v
+f 0.305 0.244 0.183 0 k
+-7770.3442 8576.8672 m
+-7770.5527 8576.8105 -7770.4937 8578.9307 Y
+-7769.4785 8579.7588 L
+-7767.8359 8578.9434 L
+-7766.9375 8579.2734 L
+-7767.1426 8578.1406 -7767.6094 8577.2373 -7768.1934 8576.8242 C
+-7768.6094 8576.7715 -7769.874 8576.7998 -7770.3442 8576.8672 C
+f U 0.115 0.092 0.069 0 k
+-7766.9375 8579.2734 m
+-7767.8359 8578.9434 L
+-7769.4785 8579.7588 L
+-7770.4937 8578.9307 L
+-7770.793 8579.708 -7770.7993 8579.8135 V
+-7769.5137 8580.3789 -7768.1831 8580.7402 -7766.8398 8580.9258 C
+-7766.79 8580.7275 -7766.7842 8580.543 -7766.79 8580.3369 c
+-7766.7998 8579.9717 -7766.8218 8579.6182 -7766.9375 8579.2734 C
+f 0.41 0.328 0.246 0 k
+-7747.4512 8575.3965 m
+-7749.377 8576.6426 -7758.3862 8582.0986 -7766.8398 8580.9258 C
+-7766.9038 8582.0928 -7767.248 8583.0908 -7767.75 8583.6631 C
+-7767.1895 8583.6621 L
+-7746.7402 8586.7559 L
+-7747.0366 8576.4258 L
+-7747.0728 8575.1465 L
+-7747.2046 8575.2373 -7747.4512 8575.3965 v
+f 0.395 0.316 0.237 0 k
+-7770.8105 8580.4375 m
+-7770.771 8581.8203 -7770.3481 8583.0176 -7769.749 8583.6641 C
+-7767.6807 8583.6631 L
+-7767.1782 8583.0908 -7766.8218 8582.0713 -7766.8398 8580.9258 C
+-7768.1831 8580.7402 -7769.5137 8580.3789 -7770.7993 8579.8135 C
+-7770.8105 8580.0176 -7770.8169 8580.2246 -7770.8105 8580.4375 c
+f U u 0 0 0 0.11 k
+-7741.2642 8574.2012 m
+-7740.2407 8574.0352 L
+-7741.2642 8574.2012 L
+-7741.2642 8574.2012 L
+f 0 0 0 0.34 k
+-7747.481 8574.3145 m
+-7747.0728 8575.1465 L
+-7745.6714 8574.918 L
+-7744.5234 8574.7314 L
+-7742.6758 8574.4307 L
+-7741.2642 8574.2012 L
+-7740.2407 8574.0352 L
+-7740.2954 8573.7168 -7740.3672 8573.498 -7740.4648 8573.4199 C
+-7747.481 8574.3145 L
+f 0 0 0 0.32 k
+-7745.8042 8579.207 m
+-7746.041 8586.8613 L
+-7740.7144 8587 L
+-7739.7266 8583.5146 -7740.1816 8579.1543 V
+-7745.8042 8579.207 L
+f U 0.025 0.02 0.015 0 k
+-7739.3223 8576.3848 m
+-7736.373 8576.9199 -7733.2402 8577.1602 -7730.3159 8576.3613 c
+-7730.2856 8576.3496 -7730.2754 8576.3184 -7730.2871 8576.2969 c
+-7730.2881 8576.2656 -7730.3198 8576.2559 -7730.3418 8576.2559 c
+-7733.2422 8577.0645 -7736.375 8576.8242 -7739.3042 8576.2783 c
+-7739.3262 8576.2793 -7739.3574 8576.291 -7739.3672 8576.3223 c
+-7739.3662 8576.3438 -7739.355 8576.375 -7739.3223 8576.3848 c
+-7739.3223 8576.3848 l
+f -7737.8374 8575.3076 m
+-7737.7295 8575.3789 -7737.6313 8575.4941 -7737.5234 8575.502 c
+-7733.7886 8575.832 -7730.1631 8575.7813 -7726.4746 8575.6641 c
+-7726.4526 8575.6641 -7726.4209 8575.6426 -7726.4214 8575.6211 c
+-7726.4214 8575.5879 -7726.4551 8575.5684 -7726.4766 8575.5684 c
+-7729.3223 8575.6816 -7732.1401 8575.6992 -7735.0039 8575.5352 c
+-7735.9336 8575.4766 -7736.9082 8575.7402 -7737.7778 8575.2207 c
+-7737.7993 8575.2109 -7737.8306 8575.2109 -7737.8506 8575.2334 c
+-7737.8618 8575.2559 -7737.8594 8575.2871 -7737.8374 8575.3076 c
+-7737.8374 8575.3076 l
+f -7733.373 8577.3672 m
+-7731.5098 8578.6797 -7729.3022 8579.374 -7727.1001 8579.8867 c
+-7727.0679 8579.8965 -7727.0474 8579.8848 -7727.0366 8579.8535 c
+-7727.0273 8579.8203 -7727.0488 8579.8008 -7727.0703 8579.79 c
+-7729.2617 8579.2656 -7731.459 8578.6035 -7733.3105 8577.2803 c
+-7733.3433 8577.2598 -7733.375 8577.2715 -7733.3848 8577.293 c
+-7733.4058 8577.3145 -7733.3945 8577.3457 -7733.373 8577.3672 c
+-7733.373 8577.3672 l
+f -7738.9321 8584.0566 m
+-7736.7295 8584.5703 -7734.5298 8585.0303 -7732.2798 8585.2754 c
+-7732.2598 8585.2852 -7732.229 8585.2637 -7732.229 8585.2422 c
+-7732.2183 8585.209 -7732.2407 8585.1777 -7732.2729 8585.1787 c
+-7734.5122 8584.8809 -7736.7305 8584.5176 -7738.9126 8583.9502 c
+-7738.9351 8583.9512 -7738.9673 8583.9629 -7738.9766 8583.9941 c
+-7738.9751 8584.0156 -7738.9648 8584.0479 -7738.9321 8584.0566 c
+-7738.9321 8584.0566 l
+f -7738.439 8583.3604 m
+-7736.3457 8584.1973 -7734.1016 8583.9297 -7731.9023 8583.9629 c
+-7731.8706 8583.9609 -7731.8496 8583.9395 -7731.8506 8583.9082 c
+-7731.8521 8583.875 -7731.873 8583.8555 -7731.8945 8583.8555 c
+-7734.0928 8583.8438 -7736.3374 8584.0996 -7738.4209 8583.2529 c
+-7738.4434 8583.2539 -7738.4746 8583.2656 -7738.4834 8583.2969 c
+-7738.4834 8583.3184 -7738.4722 8583.3506 -7738.439 8583.3604 c
+-7738.439 8583.3604 l
+f -7737.707 8584.7051 m
+-7736.3833 8584.752 -7735.1504 8584.5469 -7733.8271 8584.209 c
+-7733.3594 8584.0996 -7732.9199 8584.2266 -7732.4609 8584.2129 c
+-7731.897 8584.1973 l
+-7731.874 8584.1963 -7731.8633 8584.1855 -7731.8535 8584.1738 c
+-7731.834 8584.1523 -7731.8442 8584.1211 -7731.8662 8584.0996 c
+-7732.0625 8583.9453 l
+-7732.0742 8583.9453 -7732.085 8583.9355 -7732.0962 8583.9355 c
+-7732.5 8583.9473 l
+-7733.9551 8584.1914 -7735.457 8584.6719 -7736.8926 8584.0742 c
+-7736.9258 8584.0645 -7736.957 8584.0859 -7736.9673 8584.1074 c
+-7736.9673 8584.1396 -7736.9551 8584.1602 -7736.9336 8584.1709 c
+-7735.647 8584.6992 -7734.1714 8584.4756 -7732.8818 8584.0547 c
+-7732.0918 8584.043 L
+-7732.124 8584.0332 L
+-7731.9282 8584.1875 L
+-7731.8984 8584.0898 L
+-7732.4639 8584.1064 l
+-7732.9321 8584.1406 -7733.3848 8583.9834 -7733.8398 8584.1035 c
+-7735.1543 8584.4609 -7736.3975 8584.625 -7737.71 8584.5986 c
+-7737.7422 8584.5996 -7737.7642 8584.6211 -7737.7617 8584.6533 c
+-7737.7617 8584.6855 -7737.7402 8584.7061 -7737.707 8584.7051 c
+-7737.707 8584.7051 l
+f -7738.5718 8585.0605 m
+-7735.8711 8586.2207 -7732.9023 8585.5703 -7730.1279 8585.1816 c
+-7729.7832 8585.2891 l
+-7729.7617 8585.2988 -7729.7417 8585.2871 -7729.7207 8585.2656 c
+-7729.71 8585.2441 -7729.7217 8585.2129 -7729.7422 8585.2021 c
+-7730.0801 8585.0098 l
+-7732.7754 8584.3926 -7735.5391 8584.7813 -7738.271 8584.7852 c
+-7738.3022 8584.7871 -7738.3232 8584.8086 -7738.3223 8584.8398 c
+-7738.3198 8584.8721 -7738.2983 8584.8926 -7738.2681 8584.8926 c
+-7735.6738 8584.9355 -7733.0303 8584.4434 -7730.4727 8585.0742 c
+-7729.7954 8585.2891 L
+-7729.7534 8585.1914 L
+-7730.1406 8585.0859 l
+-7732.9058 8585.4424 -7735.8418 8586.1348 -7738.5313 8584.9746 c
+-7738.5537 8584.9648 -7738.585 8584.9648 -7738.5962 8584.998 c
+-7738.6055 8585.0195 -7738.605 8585.0508 -7738.5718 8585.0605 c
+-7738.5718 8585.0605 l
+f -7735.6895 8578.3945 m
+-7734.3945 8578.9004 -7732.9834 8578.6465 -7731.6802 8578.3438 c
+-7731.647 8578.3418 -7731.6367 8578.3203 -7731.6382 8578.2891 c
+-7731.6504 8578.2568 -7731.6714 8578.2461 -7731.7031 8578.248 c
+-7732.998 8578.5303 -7734.377 8578.8154 -7735.6504 8578.2969 c
+-7735.6826 8578.2871 -7735.7144 8578.2988 -7735.7246 8578.3311 c
+-7735.7222 8578.3525 -7735.7114 8578.3848 -7735.6895 8578.3945 c
+-7735.6895 8578.3945 l
+f -7736.1401 8580.2207 m
+-7734.2266 8580.6895 -7732.3145 8581.1035 -7730.355 8581.3242 c
+-7730.3242 8581.334 -7730.3022 8581.3125 -7730.293 8581.2803 c
+-7730.2954 8581.2598 -7730.3159 8581.2285 -7730.3374 8581.2285 c
+-7732.2959 8581.0078 -7734.209 8580.582 -7736.1206 8580.1133 c
+-7736.1426 8580.1152 -7736.1738 8580.126 -7736.1831 8580.1582 c
+-7736.1831 8580.1797 -7736.1719 8580.2109 -7736.1401 8580.2207 c
+-7736.1401 8580.2207 l
+f -7736.9336 8582.6348 m
+-7734.499 8583.4609 -7731.8647 8583.0547 -7729.3457 8583.0879 c
+-7729.313 8583.0879 -7729.293 8583.0664 -7729.293 8583.0332 c
+-7729.2954 8583.0117 -7729.3159 8582.9922 -7729.3481 8582.9922 c
+-7731.8574 8582.916 -7734.481 8583.3848 -7736.8945 8582.5264 c
+-7736.9282 8582.5273 -7736.959 8582.5391 -7736.9688 8582.5605 c
+-7736.9678 8582.5918 -7736.9561 8582.624 -7736.9336 8582.6348 c
+-7736.9336 8582.6348 l
+f -7732.0542 8583.8496 m
+-7730.6582 8584.5449 -7729.0503 8584.4033 -7727.5342 8584.4668 c
+-7727.502 8584.4648 -7727.4824 8584.4434 -7727.4824 8584.4121 c
+-7727.4834 8584.3906 -7727.5054 8584.3594 -7727.5366 8584.3594 c
+-7729.0137 8584.2207 -7730.6489 8584.5234 -7732.0039 8583.7617 c
+-7732.0366 8583.7529 -7732.0679 8583.7637 -7732.0786 8583.7861 c
+-7732.0879 8583.8076 -7732.0767 8583.8398 -7732.0542 8583.8496 c
+-7732.0542 8583.8496 l
+f -7731.3418 8580.4248 m
+-7730.3926 8580.3975 -7729.4336 8580.3701 -7728.4839 8580.3428 c
+-7728.4526 8580.3418 -7728.4312 8580.3203 -7728.4336 8580.2881 c
+-7728.4336 8580.2559 -7728.4551 8580.2354 -7728.4878 8580.2363 c
+-7729.437 8580.2637 -7730.397 8580.291 -7731.3457 8580.3184 c
+-7731.377 8580.3184 -7731.3975 8580.3418 -7731.3975 8580.373 c
+-7731.397 8580.4043 -7731.374 8580.4258 -7731.3418 8580.4248 c
+-7731.3418 8580.4248 l
+f -7729.1592 8578.0361 m
+-7728.6895 8578.0645 -7728.209 8578.0723 -7727.7383 8578.0918 c
+-7727.7168 8578.0908 -7727.6855 8578.0684 -7727.6865 8578.0371 c
+-7727.687 8578.0039 -7727.71 8577.9844 -7727.7417 8577.9844 c
+-7728.2114 8577.9873 -7728.6816 8577.9375 -7729.1514 8577.9395 c
+-7729.1831 8577.9297 -7729.2031 8577.9512 -7729.2134 8577.9844 c
+-7729.2129 8578.0156 -7729.1914 8578.0371 -7729.1592 8578.0361 c
+-7729.1592 8578.0361 l
+f -7736.9702 8580.2344 m
+-7736.5688 8580.5107 -7736.125 8580.6797 -7735.645 8580.751 c
+-7735.6113 8580.7607 -7735.5918 8580.7383 -7735.5806 8580.7168 c
+-7735.5703 8580.6855 -7735.5928 8580.6543 -7735.6152 8580.6543 c
+-7736.0854 8580.5723 -7736.5176 8580.4023 -7736.9209 8580.1475 c
+-7736.9521 8580.1377 -7736.9849 8580.1387 -7736.9946 8580.1709 c
+-7737.0039 8580.1934 -7736.9922 8580.2246 -7736.9702 8580.2344 c
+-7736.9702 8580.2344 l
+f -7738.1904 8586.085 m
+-7735.7344 8586.5273 -7733.2983 8587.001 -7730.7993 8586.7266 c
+-7730.7778 8586.7266 -7730.7568 8586.7041 -7730.7578 8586.6719 c
+-7730.7578 8586.6406 -7730.7798 8586.6191 -7730.8022 8586.6191 c
+-7733.291 8586.873 -7735.7344 8586.4844 -7738.1719 8585.9775 c
+-7738.1934 8585.9785 -7738.2256 8585.9902 -7738.2344 8586.0215 c
+-7738.2344 8586.043 -7738.2222 8586.0752 -7738.1904 8586.085 c
+-7738.1904 8586.085 l
+f 0.195 0.156 0.117 0 k
+-7738.166 8574.6445 m
+-7735.7969 8574.2676 -7733.4058 8574.3477 -7731.0298 8574.5898 c
+-7730.998 8574.5879 -7730.9766 8574.5664 -7730.9766 8574.5352 c
+-7730.9785 8574.5137 -7731 8574.4824 -7731.0215 8574.4824 c
+-7733.4082 8574.2422 -7735.791 8574.1602 -7738.1694 8574.5391 c
+-7738.2026 8574.5391 -7738.2222 8574.5605 -7738.2217 8574.5938 c
+-7738.2207 8574.625 -7738.1992 8574.6465 -7738.166 8574.6445 c
+-7738.166 8574.6445 l
+f 0.335 0.268 0.201 0 k
+-7737.4351 8574.1113 m
+-7734.9282 8574.1152 -7732.4146 8574.2773 -7729.918 8573.8965 c
+-7729.8862 8573.8945 -7729.8647 8573.873 -7729.8662 8573.8418 c
+-7729.8672 8573.8086 -7729.8896 8573.7891 -7729.9209 8573.7891 c
+-7732.418 8574.1699 -7734.9297 8574.0293 -7737.4375 8574.0059 c
+-7737.46 8574.0059 -7737.481 8574.0273 -7737.4785 8574.0596 c
+-7737.4785 8574.0918 -7737.457 8574.1123 -7737.4351 8574.1113 c
+-7737.4351 8574.1113 l
+f 0.205 0.164 0.123 0 k
+-7738.9766 8574.3262 m
+-7737.5039 8574.668 -7736.0078 8574.4023 -7734.5391 8574.2207 c
+-7734.5078 8574.2207 -7734.4873 8574.1973 -7734.499 8574.166 c
+-7734.5 8574.1348 -7734.5215 8574.1133 -7734.5537 8574.125 c
+-7736.0103 8574.2842 -7737.4961 8574.583 -7738.9473 8574.2188 c
+-7738.9785 8574.2207 -7739.0103 8574.2324 -7739.0098 8574.2637 c
+-7739.019 8574.2852 -7738.998 8574.3164 -7738.9766 8574.3262 c
+-7738.9766 8574.3262 l
+f -7732.3535 8573.7949 m
+-7731.1978 8573.9219 -7730.0273 8573.8145 -7728.8926 8573.5898 c
+-7728.8711 8573.5781 -7728.8506 8573.5566 -7728.8618 8573.5244 c
+-7728.8623 8573.5029 -7728.8945 8573.4824 -7728.916 8573.4941 c
+-7730.0503 8573.7402 -7731.1914 8573.7939 -7732.3462 8573.6885 c
+-7732.3794 8573.6895 -7732.3984 8573.7109 -7732.4087 8573.7324 c
+-7732.4082 8573.7646 -7732.3862 8573.7852 -7732.3535 8573.7949 c
+-7732.3535 8573.7949 l
+f 0.335 0.268 0.201 0 k
+-7739.2681 8576.4473 m
+-7737.9214 8577.1885 -7736.3066 8576.5977 -7734.855 8576.6416 c
+-7734.8223 8576.6406 -7734.8022 8576.6191 -7734.8022 8576.5859 c
+-7734.8042 8576.5654 -7734.8262 8576.5449 -7734.8574 8576.5449 c
+-7736.2886 8576.4902 -7737.8823 8577.0801 -7739.2168 8576.3506 c
+-7739.2383 8576.3398 -7739.2695 8576.3516 -7739.291 8576.374 c
+-7739.3008 8576.3955 -7739.2886 8576.4277 -7739.2681 8576.4473 c
+-7739.2681 8576.4473 l
+f -7737.8945 8578.5645 m
+-7735.6719 8579.0449 -7733.3896 8578.6162 -7731.1504 8578.5625 c
+-7731.1177 8578.5615 -7731.0977 8578.5391 -7731.0977 8578.5078 c
+-7731.1001 8578.4863 -7731.1318 8578.4668 -7731.1519 8578.4668 c
+-7733.3833 8578.4775 -7735.6519 8578.9805 -7737.875 8578.457 c
+-7737.8975 8578.457 -7737.9287 8578.4688 -7737.9375 8578.502 c
+-7737.9375 8578.5225 -7737.9258 8578.5547 -7737.8945 8578.5645 c
+-7737.8945 8578.5645 l
+f -7732.0273 8575.1406 m
+-7730.3496 8575.9688 -7728.499 8576.502 -7726.603 8576.3613 c
+-7726.5718 8576.3613 -7726.5513 8576.3389 -7726.5527 8576.3066 c
+-7726.5527 8576.2754 -7726.5742 8576.2539 -7726.6074 8576.2559 c
+-7728.481 8576.416 -7730.3198 8575.8604 -7731.9873 8575.0547 c
+-7732.0078 8575.0449 -7732.041 8575.0449 -7732.0503 8575.0781 c
+-7732.061 8575.0996 -7732.061 8575.1309 -7732.0273 8575.1406 c
+-7732.0273 8575.1406 l
+f u 0.5 0.85 1 0.45 k
+-7885 8581.9082 m
+-7885.0254 8582.4883 -7884.5664 8583.1875 -7883.167 8583.9902 C
+-7882.8521 8584.0029 -7881.3945 8584.0234 -7879.0889 8584.0488 C
+-7879.0889 8581.8223 L
+-7881.1382 8581.8457 -7883.1177 8581.8867 -7885 8581.9082 C
+f -7884.5088 8580.9688 m
+-7879.0889 8580.8447 L
+-7879.0889 8579.8145 L
+-7882.644 8579.959 L
+-7883.8145 8580.3301 -7884.5088 8580.9688 V
+f 0.5 0.85 1 0.32 k
+-7879.0889 8580.8252 m
+-7884.4746 8580.9434 L
+-7884.7695 8581.2148 -7884.9849 8581.5566 -7885 8581.9277 C
+-7883.1177 8581.9063 -7881.1382 8581.8848 -7879.0889 8581.8613 C
+-7879.0889 8580.8252 L
+f 0.5 0.85 1 0.45 k
+-7774.1504 8580.6172 m
+-7852.3584 8581.541 -7879.1079 8581.8418 V
+-7879.1079 8584.0488 L
+-7862.8145 8584.2324 -7803.9902 8584.707 Y
+-7769.749 8583.6641 L
+-7770.457 8580.5684 L
+-7774.1504 8580.6172 L
+f 0.5 0.85 1 0.12 k
+-7879.1079 8579.8145 m
+-7879.1079 8580.8447 L
+-7770.4258 8579 L
+-7770.3833 8576.8633 L
+-7803.6553 8576.7129 L
+-7879.1079 8579.8145 L
+f u 0.065 0.052 0.039 0 k
+-7747.0728 8575.1465 m
+-7747.0366 8576.4258 L
+-7747.2954 8575.1172 L
+-7765.897 8579.6563 L
+-7766.9375 8579.2734 L
+-7766.8794 8579.6055 -7766.8398 8579.957 -7766.8306 8580.3223 c
+-7766.8242 8580.5283 -7766.8281 8580.7285 -7766.8398 8580.9258 C
+-7758.3862 8582.0986 -7748.9634 8577.6719 -7747.0366 8576.4258 C
+-7746.7402 8586.7559 L
+-7746.041 8586.8613 L
+-7745.8042 8579.207 L
+-7740.1816 8579.1543 L
+-7740.0898 8577.0137 -7740.0718 8575.0215 -7740.2407 8574.0352 C
+-7747.0728 8575.1465 L
+f 0.4 0.7 1 0 k
+-7770.457 8580.5879 m
+-7770.4258 8578.9805 L
+-7879.1079 8580.8252 L
+-7879.1079 8581.8613 L
+-7852.3584 8581.5605 -7770.457 8580.5879 Y
+f U U 0.025 0.02 0.015 0 k
+-7734.7344 8583.0293 m
+-7734.7344 8583.0625 -7734.7129 8583.082 -7734.6802 8583.082 c
+-7731.6714 8583.1133 -7729.4214 8582.9453 -7726.415 8582.8594 C
+-7726.4087 8582.7656 L
+-7729.3262 8582.8701 -7731.7607 8583.0078 -7734.6841 8582.9746 C
+-7734.7168 8582.9766 -7734.7358 8582.998 -7734.7344 8583.0293 C
+f -7726.3994 8582.7656 m
+-7726.4082 8582.7441 L
+-7726.4087 8582.7656 L
+-7726.4063 8582.7656 -7726.4033 8582.7656 -7726.3994 8582.7656 C
+f -7730.4487 8581.4238 m
+-7731.4458 8581.292 -7732.3394 8581.7656 -7733.2114 8582.1973 C
+-7733.2441 8582.208 -7733.2534 8582.2402 -7733.2422 8582.2715 C
+-7733.2305 8582.293 -7733.1982 8582.3027 -7733.1777 8582.291 c
+-7732.3262 8581.8301 -7731.4312 8581.4199 -7730.4678 8581.5195 c
+-7729.1079 8581.6621 -7727.9038 8582.375 -7726.5254 8582.4531 C
+-7726.4463 8582.3594 L
+-7728.04 8582.2656 -7728.8647 8581.623 -7730.4487 8581.4238 c
+f U U %AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 6)
+0 A
+u 1 Ap
+800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+-7884.75 8563 m
+-7884.75 8587 L
+-7874.75 8587 L
+-7874.75 8563 L
+-7884.75 8563 L
+n 0 Ap
+0 O
+1 g
+-7874.75 8565 m
+-7875.0703 8565 -7875.3857 8565.0186 -7875.6982 8565.0479 c
+-7877.5879 8565.2256 -7879.3198 8565.9346 -7880.7559 8567.0176 c
+-7882.2529 8568.1465 -7883.4199 8569.6816 -7884.0942 8571.4639 c
+-7884.5122 8572.5645 -7884.75 8573.7529 -7884.75 8575 c
+-7884.75 8576.8623 -7884.2319 8578.5996 -7883.3457 8580.0918 c
+-7881.6025 8583.0273 -7878.4102 8585 -7874.75 8585 C
+-7874.75 8565 L
+f 0 R
+0 G
+1 J 1 j 0.5 w -7874.75 8584.6816 m
+-7877.7793 8583.7256 -7880.6074 8582.0674 -7883.3457 8580.0918 C
+S -7874.75 8579.0488 m
+-7877.8999 8576.6436 -7880.957 8573.9131 -7884.0942 8571.4639 C
+S -7880.7559 8567.0176 m
+-7878.6904 8568.1084 -7876.7017 8569.4668 -7874.75 8570.957 C
+S -7875.6982 8565.0479 m
+-7875.3809 8565.1309 -7875.063 8565.2148 -7874.75 8565.3145 C
+S -7880.7559 8567.0176 m
+-7879.3193 8565.9355 -7877.5879 8565.2256 -7875.6982 8565.0479 C
+S -7884.0942 8571.4639 m
+-7884.5122 8572.5645 -7884.75 8573.7529 -7884.75 8575 c
+-7884.75 8576.8623 -7884.231 8578.5996 -7883.3457 8580.0918 C
+S -7874.75 8565 m
+-7875.0703 8565 -7875.3857 8565.0186 -7875.6982 8565.0479 C
+S -7880.7559 8567.0176 m
+-7882.2529 8568.1465 -7883.4199 8569.6816 -7884.0942 8571.4639 C
+S -7883.3457 8580.0918 m
+-7881.6025 8583.0273 -7878.4102 8585 -7874.75 8585 C
+S U %AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 8)
+0 A
+u 800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+-7883.9521 8584.3125 m
+-7776.7954 8584.3125 L
+-7776.7954 8570.1855 L
+-7883.9521 8570.1855 L
+-7883.9521 8584.3125 L
+n u 0 O
+0 0 0 1 k
+-7882.2832 8583.623 m
+-7882.8535 8586 -7882.8184 8582.0039 V
+-7883.0479 8578.8027 L
+-7883.6167 8576.4551 L
+-7883.4502 8574.123 L
+-7881.9502 8573.4551 -7865.2832 8572.123 V
+-7858.6167 8570.7891 -7849.6167 8570.7891 V
+-7784.3936 8571.4766 -7779.4912 8572.8848 v
+-7820.3882 8570.875 -7822.9688 8571.5117 v
+-7783.8569 8573.1602 -7780.8545 8574.4316 v
+-7818.79 8572.5469 -7822.167 8574.1777 v
+-7787.249 8575.9102 -7783.021 8577.5313 v
+-7789.7217 8576.8828 -7791.5127 8577.082 v
+-7788.3896 8577.5703 l
+-7793.4194 8577.502 l
+-7796.3218 8577.1289 l
+-7788.4521 8578.2422 -7787.9033 8578.8086 v
+-7784.3154 8578.1309 -7798.5186 8578.3848 v
+-7832.1177 8574.4551 -7882.2832 8583.623 V
+f /BBAccumRotation (5.805971) XT
+0 R
+0 0 0 0.5 K
+0.025 w -7883.9502 8573.123 m
+-7863.667 8571.2949 -7843.9727 8570.2207 v
+-7801.1514 8570.502 -7796.5737 8570.9004 v
+-7784.1631 8571.0313 -7776.7959 8572.0273 v
+S /BBAccumRotation (5.805971) XT
+0 0 0 1 K
+-7821.8369 8570.4082 m
+-7825.2959 8570.0273 -7851.2607 8570.2793 Y
+-7861.627 8570.1602 -7883.9502 8573.123 Y
+S /BBAccumRotation (5.805971) XT
+-7820.9873 8573.6641 m
+-7790.3608 8574.582 -7783.6606 8575.2324 v
+S /BBAccumRotation (5.805971) XT
+0 0 0 0.5 K
+-7829.6201 8578.2051 m
+-7794.3706 8579.6172 -7791.4058 8580.1406 v
+S /BBAccumRotation (5.805971) XT
+U U %AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 10)
+0 A
+u 800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+-7884 8586 m
+-7833.8921 8586 L
+-7833.8921 8529.9756 L
+-7884 8529.9756 L
+-7884 8586 L
+n u 0 O
+0.1 1 1 0 k
+-7846.9014 8551.5752 m
+-7848.7178 8545.0957 -7858.8247 8548.4658 Y
+-7858.791 8548.5303 L
+-7868.8999 8545.1611 -7870.7144 8551.6396 V
+-7876.6758 8569.0068 -7871.4922 8575.7451 V
+-7864.7529 8585.3369 -7860.6055 8585.3369 V
+-7857.0103 8585.2705 L
+-7852.8638 8585.2705 -7846.125 8575.6816 Y
+-7840.9409 8568.9424 -7846.9014 8551.5752 Y
+f u 0 0 0 1 k
+-7851.3926 8529.9756 m
+-7852.1167 8531.4199 -7852.9238 8532.4756 V
+-7852.4058 8532.0635 -7851.5151 8531.1924 -7851.3926 8529.9756 C
+f -7865.064 8532.4854 m
+-7865.8711 8531.4307 -7866.5942 8529.9863 Y
+-7866.4727 8531.2021 -7865.582 8532.0732 -7865.064 8532.4854 C
+f U 0 0.61 0.74 0 k
+-7850.5977 8554.4609 m
+-7851.9038 8549.7959 -7859.1816 8552.2217 Y
+-7859.1567 8552.2686 L
+-7866.436 8549.8428 -7867.7417 8554.5078 V
+-7872.0337 8567.0117 -7868.3018 8571.8633 V
+-7863.4487 8578.7686 -7860.4634 8578.7686 V
+-7857.875 8578.7227 L
+-7854.8887 8578.7227 -7850.0366 8571.8174 Y
+-7846.3042 8566.9639 -7850.5977 8554.4609 Y
+f u 1 Ap
+0.73 0.43 1 0.22 k
+0 R
+0 0 0 1 K
+-7854.6226 8557.2754 m
+-7853.813 8557.2754 -7853.1558 8556.6182 -7853.1558 8555.8096 c
+-7853.1558 8555 -7853.813 8554.3428 -7854.6226 8554.3428 c
+-7855.4321 8554.3428 -7856.0889 8555 -7856.0889 8555.8096 c
+-7856.0889 8556.6182 -7855.4321 8557.2754 -7854.6226 8557.2754 c
+b -7854.3638 8568.9971 m
+-7853.0806 8568.9971 -7852.0415 8568.1201 -7852.0415 8567.042 c
+-7852.0415 8565.9619 -7853.0806 8565.0869 -7854.3638 8565.0869 c
+-7855.645 8565.0869 -7856.6846 8565.9619 -7856.6846 8567.042 c
+-7856.6846 8568.1201 -7855.645 8568.9971 -7854.3638 8568.9971 c
+b -7853.834 8580.7861 m
+-7852.2817 8580.7861 -7851.0239 8580.1299 -7851.0239 8579.3213 c
+-7851.0239 8578.5117 -7852.2817 8577.8545 -7853.834 8577.8545 c
+-7855.3862 8577.8545 -7856.645 8578.5117 -7856.645 8579.3213 c
+-7856.645 8580.1299 -7855.3862 8580.7861 -7853.834 8580.7861 c
+b -7849.6104 8552.5264 m
+-7848.8687 8552.5264 -7848.2671 8551.8154 -7848.2671 8550.9365 c
+-7848.2671 8550.0596 -7848.8687 8549.3477 -7849.6104 8549.3477 c
+-7850.353 8549.3477 -7850.9546 8550.0596 -7850.9546 8550.9365 c
+-7850.9546 8551.8154 -7850.353 8552.5264 -7849.6104 8552.5264 c
+b -7848.0034 8574.083 m
+-7848.8818 8573.7354 -7849.1494 8572.335 -7848.603 8570.9541 c
+-7848.0566 8569.5752 -7846.9014 8568.7363 -7846.0234 8569.085 c
+-7845.145 8569.4326 -7844.877 8570.833 -7845.4233 8572.2139 c
+-7845.9702 8573.5947 -7847.125 8574.4316 -7848.0034 8574.083 c
+b u -7863.0566 8557.1592 m
+-7863.8662 8557.1592 -7864.5239 8556.502 -7864.5239 8555.6934 c
+-7864.5239 8554.8828 -7863.8662 8554.2266 -7863.0566 8554.2266 c
+-7862.248 8554.2266 -7861.5913 8554.8828 -7861.5913 8555.6934 c
+-7861.5913 8556.502 -7862.248 8557.1592 -7863.0566 8557.1592 c
+b -7863.3159 8568.8799 m
+-7864.5991 8568.8799 -7865.6382 8568.0049 -7865.6382 8566.9248 c
+-7865.6382 8565.8447 -7864.5991 8564.9697 -7863.3159 8564.9697 c
+-7862.0342 8564.9697 -7860.9951 8565.8447 -7860.9951 8566.9248 c
+-7860.9951 8568.0049 -7862.0342 8568.8799 -7863.3159 8568.8799 c
+b -7863.8457 8580.6709 m
+-7865.3975 8580.6709 -7866.6558 8580.0146 -7866.6558 8579.2041 c
+-7866.6558 8578.3936 -7865.3975 8577.7383 -7863.8457 8577.7383 c
+-7862.293 8577.7383 -7861.0352 8578.3936 -7861.0352 8579.2041 c
+-7861.0352 8580.0146 -7862.293 8580.6709 -7863.8457 8580.6709 c
+b -7868.0679 8552.4092 m
+-7868.811 8552.4092 -7869.4121 8551.6982 -7869.4121 8550.8213 c
+-7869.4121 8549.9443 -7868.811 8549.2334 -7868.0679 8549.2334 c
+-7867.3262 8549.2334 -7866.7241 8549.9443 -7866.7241 8550.8213 c
+-7866.7241 8551.6982 -7867.3262 8552.4092 -7868.0679 8552.4092 c
+b -7869.6758 8573.9678 m
+-7868.7983 8573.6201 -7868.5298 8572.2188 -7869.0762 8570.8379 c
+-7869.6226 8569.457 -7870.7778 8568.6201 -7871.6558 8568.9678 c
+-7872.5342 8569.3164 -7872.8032 8570.7178 -7872.2568 8572.0967 c
+-7871.7104 8573.4775 -7870.5552 8574.3154 -7869.6758 8573.9678 c
+b U U 0 Ap
+0 0 0 1 k
+-7859.1318 8552.6553 m
+-7859.1318 8585.3145 l
+F u -7843.3906 8538.5303 m
+-7844.0815 8537.8369 -7847.019 8538.7021 Y
+-7848.229 8538.874 -7848.0562 8541.2939 Y
+-7847.019 8543.3682 -7847.7104 8543.1943 Y
+-7848.2998 8543.1943 -7849.855 8543.1143 -7850.7822 8543.0635 C
+-7851.1226 8541.6689 -7852.6128 8540.4756 -7854.7217 8539.7695 C
+-7852.7578 8536.4775 -7854.5176 8535.7949 -7856.2935 8535.79 C
+-7856.3096 8535.7021 -7856.332 8535.6162 -7856.3599 8535.5332 C
+-7854.1089 8535.5791 -7853.6392 8533.2588 Y
+-7853.4048 8533.0635 -7853.1606 8532.7861 -7852.9238 8532.4756 C
+-7853.1416 8532.6475 -7853.2944 8532.7393 Y
+-7854.2583 8532.7393 -7855.8774 8534.4941 -7856.4966 8535.207 C
+-7856.9194 8534.4434 -7857.853 8533.9111 -7858.9434 8533.9111 c
+-7860.0698 8533.9111 -7861.0322 8534.4795 -7861.4312 8535.2852 C
+-7861.9985 8534.624 -7863.6968 8532.751 -7864.6943 8532.751 C
+-7864.8462 8532.6572 -7865.064 8532.4854 V
+-7864.8281 8532.7939 -7864.583 8533.0732 -7864.3481 8533.2686 C
+-7863.8638 8535.6563 -7861.5254 8535.5342 V
+-7861.5449 8535.5889 -7861.5674 8535.6436 -7861.5806 8535.7021 C
+-7864.9238 8535.6924 -7863.937 8538.3174 -7863.2104 8539.6602 C
+-7865.5918 8540.376 -7867.2646 8541.7012 -7867.5239 8543.25 C
+-7868.4473 8543.2998 -7869.6729 8543.3584 -7870.1802 8543.3584 C
+-7870.8726 8543.5313 -7869.835 8541.458 V
+-7869.6626 8539.0391 -7870.8726 8538.8662 V
+-7873.8096 8538.002 -7874.501 8538.6934 V
+-7875.1919 8539.5566 -7876.0562 8538.3467 V
+-7875.1919 8540.0752 -7873.291 8539.5566 V
+-7870.6982 8538.8662 -7871.3906 8540.5938 V
+-7871.9087 8544.0498 -7870.1802 8544.7402 V
+-7868.0342 8545.8545 -7866.2822 8546.0889 V
+-7865.9087 8546.4141 -7865.4639 8546.7109 -7864.958 8546.9766 C
+-7867.5562 8547.0469 -7870.2246 8547.9209 -7871.0752 8550.9561 C
+-7871.5151 8552.2432 -7872.0518 8554.2432 V
+-7873.1025 8554.8252 -7874.3022 8556.0078 -7875.541 8558.2627 C
+-7876.394 8561.4502 -7877.167 8556.7129 V
+-7878.3975 8553.6494 -7879.6504 8553.5381 V
+-7878.4702 8555.2871 -7878.9038 8556.416 V
+-7877.2998 8560.917 -7875.6138 8559.8994 V
+-7874.0986 8559.2197 -7872.688 8556.8154 V
+-7873.0698 8558.4971 -7873.4326 8560.417 -7873.6743 8562.3906 C
+-7874.4888 8562.3975 L
+-7876.3506 8561.4795 -7876.3262 8564.959 V
+-7877.1226 8568.9453 -7876.3594 8571.6826 V
+-7875.647 8574.1504 -7878.1274 8572.9307 V
+-7879.2842 8573.3242 -7879.9839 8572.7881 V
+-7882.3882 8571.4131 -7884 8573.124 V
+-7882.147 8572.8799 -7881.4482 8573.417 V
+-7879.9785 8573.5615 -7879.897 8574.1787 V
+-7876.9561 8574.8555 -7876.188 8574.0771 V
+-7874.417 8573.2139 -7875.1304 8570.3604 V
+-7875.8799 8562.4814 -7874.3198 8564.4053 V
+-7874.1182 8564.4219 -7873.8784 8564.5176 V
+-7874.1519 8568.4326 -7873.8018 8572.3252 -7871.9961 8574.8516 C
+-7875.4536 8567.333 -7870.2974 8552.3037 Y
+-7868.9609 8547.5303 -7863.127 8548.1016 -7860.145 8548.7344 C
+-7860.0718 8550.1299 -7859.8374 8551.9492 -7859.1318 8552.6553 C
+-7858.2134 8550.6963 -7858.2358 8549.0732 V
+-7857.0762 8548.7217 -7850.2817 8546.8447 -7847.4487 8550.3369 C
+-7848.4312 8547.8135 -7850.8262 8547.0186 -7853.2007 8546.9189 C
+-7852.667 8546.6318 -7852.2041 8546.3047 -7851.8257 8545.9502 C
+-7850.041 8545.7861 -7847.7104 8544.5771 Y
+-7845.9814 8543.8857 -7846.5015 8540.4307 Y
+-7847.1919 8538.7021 -7844.5991 8539.3936 Y
+-7842.7002 8539.9111 -7841.835 8538.1836 Y
+-7842.7002 8539.3936 -7843.3906 8538.5303 Y
+f -7837.9082 8572.9521 m
+-7838.6074 8573.4893 -7839.7632 8573.0938 Y
+-7842.2446 8574.3135 -7841.5327 8571.8467 Y
+-7840.769 8569.1104 -7841.564 8565.1221 Y
+-7841.541 8561.6445 -7843.4014 8562.5596 Y
+-7844.0342 8562.5557 L
+-7844.3198 8560.6123 -7844.7046 8558.7549 -7845.0898 8557.1699 C
+-7843.7129 8559.4199 -7842.2778 8560.0635 Y
+-7840.5913 8561.082 -7838.9878 8556.5791 Y
+-7839.4214 8555.4502 -7838.2417 8553.7021 Y
+-7839.4937 8553.8125 -7840.7246 8556.876 Y
+-7841.4976 8561.6152 -7842.3511 8558.4268 Y
+-7843.5776 8556.1904 -7844.769 8555.0098 -7845.814 8554.4229 C
+-7846.2026 8553.0635 -7846.4858 8552.2393 Y
+-7846.7002 8551.4727 -7847.0337 8550.8486 -7847.4487 8550.3369 C
+-7847.3799 8550.5127 -7847.3174 8550.6982 -7847.2632 8550.8916 C
+-7841.3022 8568.2588 -7846.4858 8574.9971 V
+-7853.2246 8584.5869 -7857.3721 8584.5869 V
+-7860.9663 8584.6514 L
+-7865.1138 8584.6514 -7871.853 8575.0615 Y
+-7871.9038 8574.9961 -7871.9463 8574.9219 -7871.9961 8574.8516 C
+-7871.7378 8575.4141 -7871.437 8575.9404 -7871.0752 8576.4092 C
+-7864.3359 8586 -7860.189 8586 V
+-7856.5942 8585.9346 L
+-7852.4482 8585.9346 -7845.709 8576.3447 Y
+-7843.5801 8573.5771 -7843.3306 8569.0176 -7843.7769 8564.6055 C
+-7843.6553 8564.5752 -7843.5698 8564.5684 Y
+-7842.0112 8562.6475 -7842.7598 8570.5244 Y
+-7843.4746 8573.3789 -7841.7026 8574.2402 Y
+-7840.9351 8575.0186 -7837.9946 8574.3428 Y
+-7837.9136 8573.7256 -7836.4434 8573.5811 Y
+-7835.7446 8573.0449 -7833.8921 8573.2881 Y
+-7835.5024 8571.5771 -7837.9082 8572.9521 Y
+f U U U %AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 34)
+0 A
+u 800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+-7884.0254 8586.0264 m
+-7828.0542 8586.0264 L
+-7828.0542 8524.5342 L
+-7884.0254 8524.5342 L
+-7884.0254 8586.0264 L
+n u u 0 O
+0.0745 0.9 0.9019 0.18 k
+0 R
+0 0 0 1 K
+1 J 1 j 0.0518 w -7857.5991 8562.7217 m
+-7857.3594 8573.5215 -7862.8794 8583.8398 v
+-7862.4009 8586 -7860.959 8586 v
+-7861.2002 8582.6406 -7860.2393 8582.1611 v
+-7855.9199 8570.1602 -7856.6382 8562.2402 v
+-7857.5991 8562.7217 l
+b -7857.5991 8562.7217 m
+-7859.2793 8568 -7871.0391 8569.2012 v
+-7875.3594 8569.6807 -7875.5991 8571.1211 v
+-7869.1206 8561.5195 -7868.1602 8561.7607 v
+-7881.3594 8556.001 -7884 8550.7197 v
+-7878.959 8553.6006 -7875.5991 8551.4404 v
+-7867.6802 8551.2012 -7862.6406 8553.3613 v
+-7858.8008 8555.2813 -7866.7202 8539.2012 v
+-7862.8794 8550.9609 -7859.2793 8524.5605 v
+-7858.3198 8529.8408 -7856.8799 8531.2813 v
+-7850.8799 8538.9609 -7851.8398 8541.1211 v
+-7852.3198 8544.9609 -7847.7598 8538.7207 v
+-7848 8548.3213 -7850.4009 8551.6807 v
+-7852.5591 8555.2813 -7846.5591 8553.1211 v
+-7840.5591 8551.2012 -7835.2793 8552.8809 v
+-7829.7598 8554.3203 -7828.0801 8551.4404 v
+-7839.8398 8563.9209 -7845.5991 8563.6807 v
+-7843.9194 8567.2813 l
+-7841.519 8572.0811 -7842 8573.2813 v
+-7857.2681 8563.8828 -7857.5991 8562.7217 v
+b -7857.5991 8562.7217 m
+-7854.959 8544.2402 -7857.5991 8536.5605 v
+-7859.998 8526.001 -7859.2793 8524.5605 v
+S -7856.1602 8551.4404 m
+-7850.1602 8546.6406 -7848.959 8541.3604 v
+S -7856.1602 8550.7197 m
+-7865.0391 8543.041 -7866.7202 8539.2012 v
+S -7828.0801 8551.4404 m
+-7829.2793 8553.6006 -7857.3594 8561.7607 y
+-7862.4009 8556.2422 -7873.9199 8553.8408 v
+-7881.5986 8552.8809 -7884 8550.7197 v
+S -7874.6382 8569.6807 m
+-7863.1191 8560.5615 -7857.3594 8561.7607 y
+-7843.1992 8568 -7842 8573.2813 v
+S U U U %AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 36)
+0 A
+u 800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+-7883.8496 8585.9961 m
+-7833.96 8585.9961 L
+-7833.96 8534.9258 L
+-7883.8496 8534.9258 L
+-7883.8496 8585.9961 L
+n u 0 O
+0.025 0.1 0.475 0 k
+-7862.1504 8553.9043 m
+-7864.4766 8552.8125 -7866.6914 8552.4434 -7868.373 8552.9238 c
+-7869.0518 8553.1172 -7869.645 8553.4473 -7870.123 8553.9238 c
+-7870.6006 8554.4023 -7870.9297 8554.9951 -7871.123 8555.6729 c
+-7872.0088 8558.7715 -7870.0103 8563.6777 -7865.9233 8567.7666 c
+-7861.834 8571.8535 -7856.9297 8573.8516 -7853.8286 8572.9668 c
+-7853.1519 8572.7715 -7852.5586 8572.4424 -7852.0806 8571.9658 c
+-7851.603 8571.4883 -7851.2754 8570.8955 -7851.082 8570.2168 c
+-7850.5176 8568.2461 -7851.1226 8565.5449 -7852.6855 8562.7891 c
+-7853.582 8561.21 -7854.791 8559.6133 -7856.2793 8558.123 c
+-7858.1504 8556.2539 -7860.1914 8554.8242 -7862.1504 8553.9043 c
+f u 0.0035 0.014 0.0665 0 k
+-7861.2183 8552.9727 m
+-7863.8306 8552.0215 -7866.3975 8551.9688 -7868.373 8552.9238 C
+-7866.6914 8552.4434 -7864.4766 8552.8125 -7862.1504 8553.9043 c
+-7861.6191 8554.1543 -7861.0806 8554.4434 -7860.543 8554.7676 C
+-7858.8984 8554.0537 L
+-7859.667 8553.6172 -7860.4434 8553.2539 -7861.2183 8552.9727 c
+f 0.015 0.06 0.285 0 k
+-7858.8984 8554.0537 m
+-7860.543 8554.7676 L
+-7859.0962 8555.6348 -7857.6426 8556.7607 -7856.2793 8558.123 c
+-7856.1538 8558.25 -7856.0327 8558.3779 -7855.9102 8558.5059 C
+-7855.2153 8556.8633 L
+-7856.3706 8555.7236 -7857.6191 8554.7813 -7858.8984 8554.0537 C
+f U u 0.039 0.156 0.741 0 k
+-7849.687 8541.4043 m
+-7849.9746 8541.6914 -7861.2183 8552.9727 Y
+-7860.4434 8553.2539 -7859.667 8553.6172 -7858.8984 8554.0537 C
+-7845.4146 8540.5703 L
+-7847.061 8540.0996 -7848.6406 8540.3555 -7849.687 8541.4043 c
+f 0.025 0.1 0.475 0 k
+-7845.4146 8540.5703 m
+-7858.8984 8554.0537 L
+-7857.584 8554.8027 -7856.2969 8555.7754 -7855.1143 8556.957 c
+-7855.084 8556.9863 -7855.0586 8557.0156 -7855.0278 8557.0449 C
+-7841.3408 8543.3574 L
+-7841.5264 8543.1328 -7841.7202 8542.9141 -7841.9302 8542.7012 c
+-7843.0103 8541.623 -7844.2305 8540.9082 -7845.4146 8540.5703 C
+f U u 0.0115 0.046 0.2185 0 k
+-7835.9346 8550.3926 m
+-7833.5337 8547.9893 -7833.335 8544.0898 -7835.1382 8540.6973 C
+-7836.2954 8541.1182 L
+-7834.0938 8544.4961 -7833.8398 8548.2949 -7835.9346 8550.3926 c
+f 0.015 0.06 0.285 0 k
+-7843.5337 8535.5957 m
+-7842.582 8534.9258 L
+-7845.2046 8534.3516 -7847.8306 8534.9141 -7849.6206 8536.7061 c
+-7848.1719 8535.2578 -7845.9082 8534.9307 -7843.5337 8535.5957 C
+f 0.0295 0.118 0.5605 0 k
+-7843.5337 8535.5957 m
+-7845.9082 8534.9307 -7848.1719 8535.2578 -7849.6206 8536.7061 c
+-7851.019 8538.1055 -7851.3706 8540.2637 -7850.7954 8542.5469 C
+-7848.8672 8539.5449 -7845.4082 8540.5537 V
+-7843.585 8535.6309 L
+-7843.5337 8535.5957 L
+f *u
+0.048 0.192 0.912 0 k
+1 D
+-7835.9346 8550.3926 m
+-7837.2817 8551.7383 -7839.332 8552.1133 -7841.5234 8551.627 C
+-7851.6714 8561.7734 L
+-7851.7695 8561.5684 -7851.7695 8561.5684 -7851.6714 8561.7734 c
+-7850.2246 8564.8145 -7849.9702 8567.916 -7851.082 8570.2168 C
+-7850.5176 8568.2461 -7851.1226 8565.5449 -7852.6855 8562.7891 c
+-7853.5054 8561.3438 -7854.5918 8559.8848 -7855.9102 8558.5059 C
+-7855.2153 8556.8633 L
+-7855.1816 8556.8945 -7855.1465 8556.9238 -7855.1143 8556.957 c
+-7855.084 8556.9883 -7855.0566 8557.0176 -7855.0273 8557.0469 c
+-7855.0278 8557.0469 -7855.0278 8557.0469 -7855.0278 8557.0449 C
+-7841.3408 8543.3574 L
+-7836.3262 8541.1289 L
+-7836.2954 8541.1182 L
+-7834.0938 8544.4961 -7833.8398 8548.2949 -7835.9346 8550.3926 c
+f *U
+0.0215 0.086 0.4085 0 k
+0 D
+-7842.582 8534.9258 m
+-7843.5337 8535.5957 L
+-7841.6846 8536.1113 -7839.7656 8537.2285 -7838.1138 8538.8828 c
+-7837.4063 8539.5889 -7836.7998 8540.3418 -7836.2954 8541.1182 C
+-7835.1382 8540.6973 L
+-7835.6553 8539.7246 -7836.3374 8538.793 -7837.1802 8537.9512 c
+-7838.7695 8536.3594 -7840.6758 8535.3428 -7842.582 8534.9258 C
+f 0.0205 0.082 0.3895 0 k
+-7836.2954 8541.1182 m
+-7836.7998 8540.3418 -7837.4063 8539.5889 -7838.1138 8538.8828 c
+-7839.7656 8537.2285 -7841.6846 8536.1113 -7843.5337 8535.5957 C
+-7843.585 8535.6309 L
+-7845.4082 8540.5537 L
+-7844.2114 8540.9219 -7842.9878 8541.6436 -7841.9302 8542.7012 c
+-7841.7202 8542.9141 -7841.5264 8543.1328 -7841.3408 8543.3574 C
+-7836.3262 8541.1289 L
+-7836.2954 8541.1182 L
+f U u 0.445 0.356 0.267 0 k
+-7883.8496 8585.9961 m
+-7861.957 8562.9688 L
+-7862.2007 8562.6494 -7862.5752 8562.6133 -7862.8887 8562.6592 C
+-7867.1802 8567.2891 -7878.3145 8579.4561 -7882.7266 8584.2793 C
+-7883.5649 8585.3516 -7884 8585.9932 -7883.8496 8585.9961 C
+f 0.15 0.12 0.09 0 k
+-7883.834 8585.9961 m
+-7882.6606 8585.7031 -7861.6934 8564.0029 Y
+-7861.6934 8563.502 -7861.7993 8563.1758 -7861.957 8562.9688 C
+-7883.8496 8585.9961 L
+-7883.8442 8585.9961 -7883.8418 8586 -7883.834 8585.9961 c
+f 0.2 0.16 0.12 0 k
+-7882.7266 8584.2793 m
+-7878.3145 8579.4561 -7867.1802 8567.2891 -7862.8887 8562.6592 C
+-7863.2002 8562.7041 -7863.4526 8562.8301 Y
+-7864.603 8563.1328 -7878.5742 8578.9619 -7882.7266 8584.2793 C
+f U U U %AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 37)
+0 A
+u 800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+-7882.9502 8585.2324 m
+-7833.0391 8585.2324 L
+-7833.0391 8521.1152 L
+-7882.9502 8521.1152 L
+-7882.9502 8585.2324 L
+n u 0 O
+0 0 0 1 k
+0 R
+0 0 0 1 K
+0 w -7833.2358 8521.1152 m
+-7833.6064 8521.248 -7833.9858 8521.2832 -7834.3833 8521.2031 c
+-7834.4863 8521.168 l
+-7834.5254 8521.1602 -7834.5703 8521.1787 -7834.6025 8521.1992 c
+-7834.9434 8521.3926 l
+-7838.7129 8523.2959 -7842.0962 8525.8965 -7844.5 8529.4473 c
+-7845.9634 8531.5918 -7847.123 8533.8789 -7848.7993 8535.8564 c
+-7849.1729 8536.209 -7849.1758 8536.7725 -7848.834 8537.1309 c
+-7848.4951 8537.501 -7847.918 8537.5078 -7847.561 8537.165 c
+-7847.4038 8537.21 l
+-7847.2642 8537.1289 -7847.0742 8537.0703 -7847.0234 8536.957 c
+-7845.853 8534.2031 -7845.1895 8531.5137 -7843.4336 8529.1387 c
+-7841.1719 8526.0947 -7838.1777 8523.9941 -7835.0298 8522.0234 c
+-7834.3672 8521.6055 L
+-7834.4966 8521.6348 L
+-7833.7695 8521.6426 l
+-7833.791 8521.6113 -7833.8008 8521.5957 -7833.8223 8521.5645 C
+-7833.6064 8521.5234 -7833.377 8521.4746 -7833.1626 8521.4336 c
+-7833.0762 8521.4238 -7833.0186 8521.3389 -7833.0391 8521.2383 c
+-7833.0503 8521.1523 -7833.1382 8521.1084 -7833.2358 8521.1152 c
+-7833.2358 8521.1152 l
+b -7849.2222 8534.9951 m
+-7849.5742 8534.8066 -7849.9658 8534.6719 -7850.248 8534.3887 c
+-7856.4521 8528.1719 -7866.6802 8527.2734 -7874.0488 8533.6855 C
+-7874.1582 8533.7813 -7874.1582 8533.957 -7874.063 8534.0645 C
+-7871.0527 8532.9434 -7862.8838 8534.375 -7859.3223 8537.4121 C
+-7859.2534 8537.4668 -7859.1465 8537.4531 -7859.1055 8537.3711 C
+-7859.0503 8537.3047 -7859.0664 8537.1953 -7859.1328 8537.1563 C
+-7862.5625 8534.0859 -7867.0674 8532.29 -7871.6729 8532.748 C
+-7868.8535 8531.1855 -7865.6313 8530.4941 -7862.3984 8530.6885 c
+-7857.7144 8530.9717 -7853.4634 8533.1191 -7849.3711 8535.2793 c
+-7849.291 8535.3193 -7849.1978 8535.293 -7849.1553 8535.2109 C
+-7849.1016 8535.1309 -7849.1426 8535.0352 -7849.2222 8534.9951 c
+b -7858.647 8536.3359 m
+-7860.2266 8540.3613 -7862.3911 8544.3203 -7865.8018 8547.0762 c
+-7865.9648 8547.2119 -7865.9946 8547.4492 -7865.8711 8547.6055 c
+-7865.7344 8547.7676 -7865.5049 8547.7793 -7865.3481 8547.6563 c
+-7861.123 8545.5967 -7858.1904 8541.1309 -7858.1626 8536.4014 c
+-7858.1626 8536.4014 l
+-7858.1328 8536.2676 -7858.2354 8536.1348 -7858.3633 8536.1221 c
+-7858.5039 8536.1055 -7858.6318 8536.1973 -7858.647 8536.3359 c
+-7858.647 8536.3359 l
+b -7852.9414 8541.0176 m
+-7853.042 8541.1816 -7853.1152 8541.3838 -7853.2617 8541.4824 c
+-7856.0806 8543.3906 -7858.9785 8544.6309 -7861.8848 8546.1328 c
+-7862.0503 8546.209 -7862.1118 8546.418 -7862.0313 8546.5703 c
+-7861.9512 8546.7227 -7861.7559 8546.7793 -7861.5898 8546.7041 c
+-7858.439 8545.3232 -7854.313 8544.5 -7852.6729 8541.1797 c
+-7852.6289 8541.1113 -7852.6455 8541.0146 -7852.7266 8540.9648 c
+-7852.7959 8540.9199 -7852.897 8540.9492 -7852.9414 8541.0176 c
+-7852.9414 8541.0176 l
+b -7852.6602 8541.918 m
+-7852.4438 8542.4297 -7852.1431 8542.8896 -7852.0503 8543.4355 c
+-7851.2183 8548.2773 -7851.1152 8553.042 -7852.248 8557.6875 c
+-7852.248 8557.6875 l
+-7852.3418 8557.9531 -7852.2114 8558.2441 -7851.9438 8558.3389 c
+-7851.6777 8558.4336 -7851.3882 8558.3125 -7851.2935 8558.0479 c
+-7849.293 8552.8115 -7849.897 8546.7373 -7852.3711 8541.7832 c
+-7852.4063 8541.7002 -7852.498 8541.6689 -7852.582 8541.6914 c
+-7852.6641 8541.7275 -7852.6978 8541.835 -7852.6602 8541.918 c
+-7852.6602 8541.918 l
+b -7851.5352 8557.5938 m
+-7848.8984 8555.2275 -7846.6816 8552.252 -7845.853 8548.7363 c
+-7845.853 8548.7363 l
+-7845.7246 8548.1816 -7846.0742 8547.623 -7846.6416 8547.4902 c
+-7847.1992 8547.375 -7847.7578 8547.7246 -7847.8862 8548.2793 c
+-7848.5649 8551.5313 -7849.8711 8554.6729 -7851.7954 8557.3867 c
+-7851.7954 8557.3867 l
+-7851.8462 8557.4551 -7851.834 8557.5576 -7851.7695 8557.6201 c
+-7851.6992 8557.6699 -7851.5977 8557.6582 -7851.5352 8557.5938 c
+-7851.5352 8557.5938 l
+b -7836.3711 8550.1826 m
+-7837.7114 8545.8301 -7840.2598 8542.0693 -7843.689 8539.1533 C
+-7843.729 8539.0723 -7843.8242 8539.0322 -7843.9038 8539.0859 C
+-7843.9863 8539.127 -7844.0122 8539.2207 -7843.9722 8539.3018 C
+-7843.957 8539.7891 -7843.7144 8540.2334 -7843.4458 8540.5313 c
+-7838.4063 8546.1621 -7834.9902 8554.7197 -7837.3433 8561.9551 C
+-7837.0762 8556.4512 -7838.7241 8550.3008 -7842.1362 8545.6738 c
+-7843.1606 8544.2695 -7844.7422 8544.1211 -7846.3081 8544.2031 C
+-7846.4023 8544.1895 -7846.4834 8544.2432 -7846.4961 8544.3369 c
+-7846.5098 8544.4189 -7846.4551 8544.5137 -7846.3623 8544.5254 C
+-7843.1479 8545.7695 -7841.4878 8549.2246 -7840.084 8552.1943 c
+-7838.415 8555.7441 -7837.7017 8559.6387 -7838.0054 8563.5 C
+-7838.0454 8563.6777 -7838.1138 8565.3975 -7837.9775 8565.4102 C
+-7837.8306 8565.4395 -7837.709 8565.3438 -7837.6802 8565.1943 C
+-7837.645 8565.0449 -7834.6426 8555.7988 -7836.3711 8550.1826 c
+b -7844.4863 8537.4912 m
+-7843.3945 8533.6211 -7841.1094 8530.251 -7838.4824 8527.2383 c
+-7838.3306 8527.1045 -7838.3145 8526.8867 -7838.4502 8526.7354 c
+-7838.5752 8526.6006 -7838.8047 8526.582 -7838.957 8526.7178 c
+-7842.3306 8529.332 -7843.4487 8533.541 -7844.7954 8537.375 c
+-7844.7954 8537.375 l
+-7844.8262 8537.4648 -7844.7754 8537.5586 -7844.6982 8537.5869 c
+-7844.6094 8537.6191 -7844.5166 8537.5684 -7844.4863 8537.4912 c
+-7844.4863 8537.4912 l
+b -7838.5313 8562.1094 m
+-7838.5991 8562.0566 -7838.707 8562.083 -7838.748 8562.1504 C
+-7838.9634 8562.4746 -7840.6914 8564.5195 -7841.3926 8565.1406 c
+-7846.1719 8569.3945 -7849.5137 8573.9609 -7857.5391 8577.7227 c
+-7864.4512 8580.9639 -7867.1113 8583.5957 -7874.3862 8581.8262 c
+-7877.687 8581.0293 -7879.0313 8580.5313 -7880.4351 8575.4551 C
+-7881.9473 8569.2988 -7880.8672 8571.7832 -7881.084 8564.4385 c
+-7881.2222 8559.6973 -7884 8548.4551 -7871.5254 8534.2598 C
+-7871.4199 8534.1484 -7871.4336 8533.9961 -7871.5337 8533.9072 C
+-7871.6328 8533.8027 -7871.7959 8533.8164 -7871.8862 8533.916 C
+-7877.5786 8538.7168 -7881.0234 8545.6582 -7882.3145 8552.9424 c
+-7883.2871 8558.4668 -7882.9199 8563.25 -7882.666 8569.6367 c
+-7882.5688 8572.0938 -7883.6855 8579.0723 -7878.9102 8583.0625 c
+-7875.3926 8586 -7870.3911 8585.5469 -7866.3545 8584.1563 c
+-7860.6992 8582.2119 -7855.9727 8579.1465 -7850.8711 8575.6094 c
+-7847.2656 8573.125 -7839.2881 8563.2852 -7838.4785 8562.3262 C
+-7838.4351 8562.2588 -7838.4502 8562.1504 -7838.5313 8562.1094 C
+b -7873.0503 8549.3057 m
+-7872.168 8548.5029 -7871.7017 8549.8457 -7871.4297 8550.6016 c
+-7871.1626 8551.3574 -7870.189 8551.25 -7870.5127 8551.5732 c
+-7870.8369 8551.8975 -7870.8369 8551.9521 -7871.3232 8551.5195 c
+-7871.8086 8551.0879 -7871.8086 8551.7363 -7872.5649 8551.25 c
+-7873.3198 8550.7627 -7873.645 8549.8457 -7873.0503 8549.3057 c
+b -7865.6519 8553.9492 m
+-7865.3657 8553.5918 -7864.6802 8553.5723 -7864.4648 8553.8945 c
+-7864.25 8554.2197 -7863.3306 8554.2734 -7863.4937 8554.5967 c
+-7863.6543 8554.9219 -7863.6016 8555.1387 -7864.0874 8554.9219 c
+-7864.5737 8554.7051 -7864.4121 8555.2998 -7864.897 8555.084 c
+-7865.3833 8554.8672 -7865.8687 8554.2197 -7865.6519 8553.9492 c
+b -7857.6074 8559.0791 m
+-7857.1206 8558.7559 -7855.8794 8559.5117 -7856.4727 8559.5117 c
+-7857.0674 8559.5117 -7856.311 8560.2676 -7856.8521 8560.4834 c
+-7857.3906 8560.6992 -7857.2832 8560.4297 -7857.6074 8560.6445 c
+-7857.9297 8560.8613 -7858.3633 8561.2393 -7858.5239 8560.4297 c
+-7858.6855 8559.6191 -7858.3633 8559.6191 -7857.9849 8559.3496 c
+-7857.6074 8559.0791 -7857.6074 8559.0791 y
+b -7872.2402 8559.3496 m
+-7871.1074 8559.2422 -7871.8633 8559.998 -7871.269 8560.4834 c
+-7870.6738 8560.9697 -7869.918 8561.6172 -7870.729 8561.4004 c
+-7871.5391 8561.1855 -7872.9961 8561.6719 -7872.9434 8560.5381 c
+-7872.8887 8559.4033 -7872.6328 8559.3867 -7872.2402 8559.3496 c
+b -7866.5703 8567.6113 m
+-7866.1016 8567.3438 -7866.6802 8567.7197 -7866.0303 8567.6113 c
+-7865.3833 8567.5039 -7864.7886 8567.6113 -7865.2207 8567.8281 c
+-7865.6519 8568.0439 -7866.3008 8568.1523 -7866.4634 8567.9893 c
+-7866.625 8567.8281 -7866.9473 8567.8281 -7866.5703 8567.6113 c
+b -7857.0674 8567.1797 m
+-7857.4785 8566.1797 -7856.0962 8566.4238 -7855.4473 8566.7461 c
+-7854.7998 8567.0723 -7853.8262 8566.4775 -7854.4209 8566.9102 c
+-7855.0137 8567.3418 -7854.7998 8566.9102 -7855.3926 8567.2334 c
+-7855.9873 8567.5566 -7856.6895 8568.0977 -7857.0674 8567.1797 c
+b -7872.6738 8573.0664 m
+-7872.7222 8572.0752 -7871.8086 8572.957 -7871.269 8573.0117 c
+-7870.729 8573.0664 -7870.0801 8573.0664 -7870.2432 8573.2813 c
+-7870.4038 8573.498 -7870.459 8573.498 -7871.1626 8573.7129 c
+-7871.8633 8573.9297 -7872.6191 8574.1445 -7872.6738 8573.0664 c
+b -7873.1582 8567.6113 m
+-7874.0664 8567.9746 -7874.293 8567.8809 -7874.5625 8568.2051 c
+-7874.834 8568.5293 -7875.1558 8569.2314 -7875.5352 8568.0977 c
+-7875.9121 8566.9629 -7875.4282 8565.7764 -7875.0479 8565.9375 c
+-7874.6714 8566.0996 -7874.293 8566.7461 -7873.8618 8566.9629 c
+-7873.4297 8567.1797 -7872.6191 8567.3945 -7873.1582 8567.6113 c
+b U U %AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 41)
+0 A
+u 800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+-7884 8586 m
+-7803 8586 L
+-7803 8481 L
+-7884 8481 L
+-7884 8586 L
+n u u u 0 O
+0 0 0 1 k
+-7865.8057 8498.4258 m
+-7866.0742 8496.6621 -7867.1602 8495.291 -7868.5239 8495.3965 c
+-7869.8862 8495.502 -7870.707 8497.0234 -7870.7432 8498.8066 c
+-7870.748 8499.0693 -7870.6743 8500.2441 -7870.6304 8500.4775 C
+-7870.6382 8500.582 -7870.6191 8500.6738 -7870.6104 8500.7803 c
+-7870.5142 8502.0254 -7869.3574 8503.3604 -7867.9414 8503.25 c
+-7866.5249 8503.1406 -7865.4897 8501.8613 -7865.6367 8500.4727 c
+-7865.644 8500.4072 -7865.6958 8499.626 -7865.707 8499.5625 C
+-7865.6816 8499.2852 -7865.7598 8498.7256 -7865.8057 8498.4258 c
+f -7876.2646 8507.7334 m
+-7876.9946 8515.916 -7871.5015 8515.1191 v
+-7868.3682 8514.0186 -7869.4414 8511.1211 v
+-7869.6426 8509.752 -7871.7847 8508.498 v
+-7872.146 8508.25 -7872.7632 8507.1016 v
+-7873.1294 8505.5977 -7874.5186 8505.2979 v
+-7876.0762 8505.251 -7876.2646 8507.7334 v
+f -7850.7646 8516.4971 m
+F -7850.0762 8514.3408 m
+-7850.7847 8513.1934 -7853.8848 8513.6279 Y
+-7854.811 8513.6885 -7855.3799 8513.1113 Y
+-7857.8394 8509.0918 -7861.0386 8509.8857 -7861.4082 8509.9932 C
+-7861.4097 8509.9863 L
+-7864.999 8510.6045 -7865.2666 8515.6035 V
+-7865.4912 8516.3828 -7866.335 8516.7695 V
+-7869.2695 8517.8613 -7869.3481 8519.208 V
+-7869.8999 8521.1152 -7867.6006 8521.7422 V
+-7865.6792 8522.2568 -7863.7886 8519.8945 V
+-7862.6113 8518.6797 -7859.5762 8517.9395 V
+-7859.5728 8517.9531 L
+-7856.3594 8517.0459 -7854.6392 8517.5889 Y
+-7851.8521 8518.7676 -7850.4063 8517.4014 Y
+-7848.6826 8515.7559 -7850.0762 8514.3408 Y
+f -7863.9834 8497.8789 m
+-7864.5854 8496.2002 -7864.2822 8494.4775 -7863.0327 8493.9229 c
+-7861.7842 8493.3672 -7860.3384 8494.3164 -7859.4585 8495.8672 c
+-7859.3286 8496.0957 -7858.8359 8497.165 -7858.7632 8497.3906 C
+-7858.7065 8497.4785 -7858.6792 8497.5684 -7858.6362 8497.667 c
+-7858.1289 8498.8086 -7858.5122 8500.5303 -7859.8105 8501.1074 c
+-7861.1089 8501.6855 -7862.6279 8501.0527 -7863.1582 8499.7617 c
+-7863.1831 8499.7002 -7863.5078 8498.9883 -7863.5298 8498.9268 C
+-7863.6831 8498.6963 -7863.8809 8498.166 -7863.9834 8497.8789 c
+f -7849.7129 8500.9316 m
+-7845.1802 8507.7822 -7850.3911 8509.6943 v
+-7853.6714 8510.2168 -7854.103 8507.1572 v
+-7854.5786 8505.8564 -7853.29 8503.7354 v
+-7853.0903 8503.3447 -7853.0938 8502.04 v
+-7853.4858 8500.5449 -7852.4082 8499.6182 v
+-7851.0591 8498.8359 -7849.7129 8500.9316 v
+f U u -7824.7358 8550.1074 m
+-7824.3687 8548.3623 -7824.9048 8546.6963 -7826.2183 8546.3164 c
+-7827.5322 8545.9375 -7828.8345 8547.0752 -7829.4937 8548.7324 c
+-7829.5903 8548.9775 -7829.9326 8550.1025 -7829.9746 8550.3369 C
+-7830.0176 8550.4326 -7830.0322 8550.5244 -7830.0625 8550.6279 c
+-7830.4087 8551.8271 -7829.7935 8553.4805 -7828.4282 8553.875 c
+-7827.063 8554.2695 -7825.645 8553.4365 -7825.2969 8552.085 c
+-7825.2793 8552.0205 -7825.0552 8551.2705 -7825.0425 8551.207 C
+-7824.9214 8550.9551 -7824.7983 8550.4053 -7824.7358 8550.1074 c
+f -7838.2705 8554.6172 m
+-7841.8242 8562.0244 -7836.3999 8563.2061 v
+-7833.0801 8563.2754 -7833.0688 8560.1846 v
+-7832.7778 8558.8311 -7834.3433 8556.9072 v
+-7834.5942 8556.5459 -7834.7695 8555.2539 v
+-7834.5854 8553.7188 -7835.7793 8552.9492 v
+-7837.2222 8552.3594 -7838.2705 8554.6172 v
+f -7817.4648 8571.7695 m
+F -7816.063 8569.9912 m
+-7816.3247 8568.6689 -7819.3799 8567.9883 Y
+-7820.27 8567.7197 -7820.5986 8566.9795 Y
+-7821.4922 8562.3535 -7824.7666 8561.9746 -7825.1494 8561.9453 C
+-7825.1494 8561.9395 L
+-7828.7271 8561.2588 -7830.731 8565.8467 V
+-7831.2153 8566.4961 -7832.1416 8566.5625 V
+-7835.272 8566.5557 -7835.8169 8567.7891 V
+-7837.0039 8569.3809 -7835.0713 8570.7764 V
+-7833.4526 8571.9316 -7830.853 8570.3818 V
+-7829.3242 8569.6582 -7826.2222 8570.0293 V
+-7826.2231 8570.042 L
+-7822.896 8570.3213 -7821.4766 8571.4326 Y
+-7819.2793 8573.5146 -7817.4463 8572.7432 Y
+-7815.2554 8571.8057 -7816.063 8569.9912 Y
+f -7822.8374 8550.2354 m
+-7822.813 8548.4512 -7821.9258 8546.9453 -7820.5601 8546.8633 c
+-7819.1943 8546.7803 -7818.1743 8548.1768 -7817.895 8549.9385 c
+-7817.854 8550.1973 -7817.7666 8551.3711 -7817.7778 8551.6094 C
+-7817.7559 8551.7109 -7817.7617 8551.8037 -7817.7559 8551.9121 c
+-7817.6807 8553.1592 -7818.644 8554.6367 -7820.0625 8554.7217 c
+-7821.4814 8554.8066 -7822.6826 8553.6826 -7822.7246 8552.2871 c
+-7822.7271 8552.2217 -7822.7822 8551.4404 -7822.7798 8551.375 C
+-7822.8433 8551.1045 -7822.8423 8550.54 -7822.8374 8550.2354 c
+f -7811.0186 8557.5625 m
+-7809.1777 8565.5684 -7814.7271 8565.5303 v
+-7817.9834 8564.8691 -7817.3154 8561.8516 v
+-7817.3032 8560.4668 -7815.353 8558.9326 v
+-7815.0278 8558.6377 -7814.5742 8557.415 v
+-7814.417 8555.876 -7813.083 8555.3877 v
+-7811.5454 8555.1279 -7811.0186 8557.5625 v
+f U U 1 Ap
+-7884 8586 m
+-7884 8481 L
+-7803 8481 L
+-7803 8586 L
+-7884 8586 L
+n U U %AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 42)
+0 A
+u 0 Ap
+800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+-7857.4609 8559.085 m
+-7885 8559.085 L
+-7885 8586.624 L
+-7857.4609 8586.624 L
+-7857.4609 8559.085 L
+n 0 O
+0 0.55 1 0.12 k
+-7871.7598 8577.3623 m
+-7871.7598 8587 L
+-7870.6343 8587 L
+-7870.6343 8577.3623 L
+-7871.7598 8577.3623 L
+f 0 0.55 1 0.3 k
+-7875.4233 8572.876 m
+-7874.3096 8571.1553 -7870.8809 8569.457 -7866.4966 8569.457 c
+-7862.1152 8569.457 -7858.6138 8571.1064 -7857.5718 8572.874 C
+-7857.5718 8572.874 L
+-7858.6138 8574.6006 -7862.1152 8576.2979 -7866.4966 8576.2979 c
+-7870.875 8576.2979 -7874.3242 8574.5615 -7875.4233 8572.876 C
+f U %AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 45)
+0 A
+u 800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+-7885 8543.918 m
+-7885 8587 L
+-7798.2217 8587 L
+-7798.2217 8543.918 L
+-7885 8543.918 L
+n u u 0 O
+0 0 0 1 k
+-7825.2217 8573.2363 m
+-7825.2217 8581.0742 L
+-7813.2217 8574.1445 L
+-7801.2217 8567.2168 L
+-7813.2217 8560.2891 L
+-7825.2217 8553.3613 L
+-7825.2217 8561.4824 L
+-7883.9351 8547.7168 L
+-7870.9878 8566.8027 L
+-7885 8587 L
+-7825.2217 8573.2363 L
+f 0 1 1 0.1 k
+0 R
+0 0 0 1 K
+-7823.2217 8570.2363 m
+-7823.2217 8578.0742 L
+-7811.2217 8571.1445 L
+-7799.2217 8564.2168 L
+-7811.2217 8557.2891 L
+-7823.2217 8550.3613 L
+-7823.2217 8558.4824 L
+-7881.9351 8544.7168 L
+-7867.2754 8564.3594 L
+-7881.9351 8584 L
+-7823.2217 8570.2363 L
+b U U U %AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 50)
+0 A
+u 800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+-7884 8586 m
+-7756.877 8586 L
+-7756.877 8538.415 L
+-7884 8538.415 L
+-7884 8586 L
+n u *u
+0 O
+0.9529 0.949 0.1961 0.0745 k
+-7857.793 8570.417 m
+-7857.8232 8570.2676 L
+-7859.9849 8564.3643 -7860.9438 8561.6377 -7861.2754 8560.2891 c
+-7861.3657 8560.2891 L
+-7861.6953 8561.6074 -7862.7754 8564.335 -7864.9673 8570.2676 c
+-7864.9966 8570.417 L
+-7857.793 8570.417 l
+f 1 D
+-7868.1182 8578.9678 m
+-7869.6191 8582.5371 -7870.3994 8584.709 -7868.1182 8584.917 c
+-7868.1182 8585.9678 L
+-7870.6992 8585.9375 -7873.5806 8585.917 -7876.3418 8585.917 c
+-7880.0649 8585.917 -7882.5273 8585.9375 -7884 8585.9678 c
+-7884 8584.917 L
+-7882.1064 8584.709 -7881.0542 8582.5674 -7873.5513 8565.5029 c
+-7861.6953 8538.415 L
+-7859.8638 8538.415 L
+-7848.1582 8565.5029 L
+-7840.8047 8582.5078 -7839.7246 8584.709 -7837.8887 8584.917 c
+-7837.8887 8585.9678 L
+-7839.5142 8585.9375 -7841.916 8585.917 -7845.5767 8585.917 c
+-7848.5488 8585.917 -7851.6694 8585.9375 -7854.7026 8585.9678 c
+-7854.7026 8584.917 L
+-7852.481 8584.709 -7853.3218 8582.5078 -7854.7617 8578.9678 C
+-7868.1182 8578.9678 l
+f *U
+*u
+0 D
+-7813.0762 8554.0811 m
+-7813.0762 8550.4717 -7815.3535 8548.0947 -7819.1294 8548.0947 c
+-7820.2383 8548.0947 -7821.0767 8548.2158 -7821.5273 8548.2451 c
+-7821.5273 8560.5479 L
+-7820.8672 8560.6084 -7820.208 8560.6084 -7819.729 8560.6084 c
+-7818.2002 8560.6084 -7816.7026 8560.127 -7815.6841 8559.4053 c
+-7814.3945 8558.5332 -7813.0762 8556.7881 -7813.0762 8554.1416 C
+-7813.0762 8554.0811 l
+f 1 D
+-7832.0806 8558.3926 m
+-7832.0806 8542.6445 -7832.0806 8540.4287 -7834.542 8540.2783 c
+-7834.542 8539.3184 L
+-7833.042 8539.2588 -7830.3174 8539.1992 -7827.5664 8539.1689 c
+-7825.6538 8539.1084 -7822.3945 8539.0186 -7820.1479 8538.9775 c
+-7816.582 8538.9775 -7813.585 8539.4258 -7811.0049 8540.2627 c
+-7806.353 8541.8477 -7801.9702 8545.8525 -7801.9702 8553.6602 c
+-7801.9702 8558.7432 -7804.4014 8562.3193 -7806.5034 8564.0605 c
+-7807.583 8565.0215 -7808.8135 8565.832 -7809.7744 8566.3125 c
+-7809.7744 8566.4629 L
+-7807.5234 8569.4912 -7805.6025 8572.0625 -7799.3906 8580.6426 c
+-7797.5 8583.0645 -7795.9102 8584.7383 -7794.7402 8584.9775 c
+-7794.7402 8586 L
+-7796.6602 8586 -7799 8585.8848 -7801.1294 8585.8848 c
+-7803.3511 8585.8848 -7804.8521 8586 -7806.4424 8586 c
+-7807.6729 8586 -7808.7241 8585.9404 -7809.5039 8585.2725 c
+-7813.0151 8579.8477 -7816.9121 8573.7559 -7820.1182 8568.7139 c
+-7820.5078 8568.7139 -7820.957 8568.7139 -7821.5273 8568.7139 c
+-7821.5273 8571.2852 L
+-7821.5273 8582.5264 -7821.437 8584.7686 -7819.1895 8584.9775 c
+-7819.1895 8585.9697 L
+-7820.6279 8585.9404 -7823.9194 8585.915 -7826.6992 8585.915 c
+-7829.9287 8585.915 -7832.8921 8585.9404 -7834.5122 8585.9697 c
+-7834.5122 8584.9775 L
+-7832.0518 8584.7686 -7832.0806 8582.5264 -7832.0806 8565.5918 C
+-7832.0806 8558.3926 l
+f *U
+*u
+0 D
+-7781.4561 8565.5928 m
+-7781.4561 8582.4941 -7781.4561 8584.6484 -7784.2832 8584.9775 C
+-7784.2832 8585.9697 l
+-7782.3887 8585.9404 -7779.0542 8585.915 -7775.7822 8585.915 c
+-7772.6294 8585.915 -7769.5688 8585.9404 -7767.2881 8585.9697 C
+-7767.2881 8584.9775 l
+-7770.2578 8584.9775 -7770.2881 8582.5244 -7770.2881 8565.5928 C
+-7770.2881 8548.1514 L
+-7762.8193 8548.1514 l
+-7759.999 8548.1514 -7758.5298 8548.96 -7757.8994 8551.2627 C
+-7756.9072 8551.2627 l
+-7756.9072 8546.4697 -7756.877 8542.415 -7756.877 8539.1709 c
+-7761.3486 8539.2012 -7766.748 8539.2314 -7772.0601 8539.2314 C
+-7779.7446 8539.2314 l
+-7784.5537 8539.2314 -7789.9966 8539.2012 -7794.9614 8539.1709 c
+-7794.9614 8542.3848 -7794.9326 8546.4697 -7794.9326 8551.2627 C
+-7793.9072 8551.2627 l
+-7793.3657 8549.1094 -7791.771 8548.1514 -7788.9438 8548.1514 C
+-7781.4561 8548.1514 l
+-7781.4561 8565.5928 L
+f *U
+U U %AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 62)
+0 A
+u 800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+-7885 8587 m
+-7885 8548.7305 L
+-7846.7305 8548.7305 L
+-7846.7305 8587 L
+-7885 8587 L
+n 0 O
+1 0.14 0.09 0 k
+-7846.7305 8569.9043 m
+-7846.7305 8561.3408 L
+-7885 8561.3408 L
+-7885 8569.9043 L
+-7846.7305 8569.9043 L
+f -7846.7305 8573.0967 m
+-7846.7305 8572.4229 L
+-7885 8572.4229 L
+-7885 8573.0967 L
+-7846.7305 8573.0967 L
+f U %AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 63)
+0 A
+u 800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+-7885 8587 m
+-7885 8548.7305 L
+-7846.7305 8548.7305 L
+-7846.7305 8587 L
+-7885 8587 L
+n 0 O
+1 0.14 0.09 0 k
+-7846.7305 8565.8262 m
+-7846.7305 8574.3896 L
+-7859.3408 8574.3896 L
+-7859.3408 8587 L
+-7867.9038 8587 L
+-7867.9063 8565.8262 L
+-7867.9038 8565.8262 L
+-7867.9038 8565.8252 L
+-7846.7305 8565.8262 L
+f -7846.7305 8563.3076 m
+-7870.4233 8563.3076 L
+-7870.4233 8587 L
+-7871.0967 8587 L
+-7871.0977 8562.6328 L
+-7846.7305 8562.6328 L
+-7846.7305 8563.3076 L
+f U %AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 64)
+0 A
+u 800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+-7885 8586.999 m
+-7885 8548.7285 L
+-7846.7305 8548.7285 L
+-7846.7305 8586.999 L
+-7885 8586.999 L
+n 0 O
+1 0.14 0.09 0 k
+-7846.7305 8561.3389 m
+-7872.3896 8561.3389 L
+-7872.3896 8586.999 L
+-7863.8262 8587 L
+-7863.8262 8569.9033 L
+-7846.7305 8569.9033 L
+-7846.7305 8561.3389 L
+f -7846.7305 8572.4219 m
+-7861.3081 8572.4219 L
+-7861.3081 8587 L
+-7860.6338 8587 L
+-7860.6338 8573.0957 L
+-7846.7305 8573.0957 L
+-7846.7305 8572.4219 L
+f U %AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 65)
+0 A
+u 1 Ap
+800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+-7857.0625 8559.4609 m
+-7884.6025 8559.4609 L
+-7884.6025 8587 L
+-7857.0625 8587 L
+-7857.0625 8559.4609 L
+n 0 O
+0 0.55 1 0.12 k
+-7856.8418 8572.7002 m
+-7885 8572.7002 L
+-7885 8573.8252 L
+-7856.8418 8573.8252 L
+-7856.8418 8572.7002 L
+f u 0 0.55 1 0.3 k
+-7883.9814 8560.5215 m
+-7884.4102 8562.5254 -7883.1865 8566.1514 -7880.0874 8569.251 c
+-7876.9878 8572.3496 -7873.3457 8573.6602 -7871.3594 8573.1455 C
+-7871.3594 8573.1455 L
+-7870.875 8571.1895 -7872.1519 8567.5117 -7875.25 8564.4141 c
+-7878.3457 8561.3184 -7882.0122 8560.1064 -7883.9814 8560.5215 C
+f 0 0.39 0.7 0.12 k
+-7883.9814 8585.9912 m
+-7884.4102 8583.9883 -7883.1865 8580.3613 -7880.0874 8577.2617 c
+-7876.9878 8574.1641 -7873.3457 8572.8535 -7871.3594 8573.3672 C
+-7871.3594 8573.3672 L
+-7870.875 8575.3242 -7872.1519 8579.001 -7875.25 8582.0996 c
+-7878.3457 8585.1953 -7882.0122 8586.4063 -7883.9814 8585.9912 C
+f U u 0 0.55 1 0.3 k
+-7870.1782 8585.9912 m
+-7870.6074 8583.9883 -7869.3838 8580.3613 -7866.2842 8577.2617 c
+-7863.1855 8574.1641 -7859.543 8572.8535 -7857.5576 8573.3672 C
+-7857.5566 8573.3672 L
+-7857.0718 8575.3242 -7858.3496 8579.001 -7861.4473 8582.0996 c
+-7864.543 8585.1953 -7868.209 8586.4063 -7870.1782 8585.9912 C
+f 0 0.39 0.7 0.12 k
+-7870.1782 8560.5215 m
+-7870.6074 8562.5254 -7869.3838 8566.1514 -7866.2842 8569.251 c
+-7863.1855 8572.3496 -7859.543 8573.6602 -7857.5576 8573.1455 C
+-7857.5566 8573.1455 L
+-7857.0718 8571.1895 -7858.3496 8567.5117 -7861.4473 8564.4141 c
+-7864.543 8561.3184 -7868.209 8560.1064 -7870.1782 8560.5215 C
+f U U %AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 67)
+0 A
+u 0 Ap
+800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+-7857.4609 8559.085 m
+-7885 8559.085 L
+-7885 8586.624 L
+-7857.4609 8586.624 L
+-7857.4609 8559.085 L
+n 0 O
+0 0.55 1 0.12 k
+-7871.7598 8577.3623 m
+-7871.7598 8587 L
+-7870.6343 8587 L
+-7870.6343 8577.3623 L
+-7871.7598 8577.3623 L
+f 0 0.55 1 0.3 k
+-7875.4233 8572.876 m
+-7874.3096 8571.1553 -7870.8809 8569.457 -7866.4966 8569.457 c
+-7862.1152 8569.457 -7858.6138 8571.1064 -7857.5718 8572.874 C
+-7857.5718 8572.874 L
+-7858.6138 8574.6006 -7862.1152 8576.2979 -7866.4966 8576.2979 c
+-7870.875 8576.2979 -7874.3242 8574.5615 -7875.4233 8572.876 C
+f U %AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 69)
+0 A
+u 800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+-7857.4609 8559.4609 m
+-7885 8559.4609 L
+-7885 8587 L
+-7857.4609 8587 L
+-7857.4609 8559.4609 L
+n 0 O
+0 0.55 1 0.3 k
+-7875.4233 8573.252 m
+-7874.3096 8571.5313 -7870.8809 8569.833 -7866.4966 8569.833 c
+-7862.1152 8569.833 -7858.6138 8571.4824 -7857.5718 8573.25 C
+-7857.5718 8573.25 L
+-7858.6138 8574.9766 -7862.1152 8576.6738 -7866.4966 8576.6738 c
+-7870.875 8576.6738 -7874.3242 8574.9375 -7875.4233 8573.252 C
+f U %AI8_EndBrushPattern
+%AI8_BeginBrushPattern
+(New Pattern 83)
+0 A
+u 800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+-7884 8585.9355 m
+-7670.4009 8585.9355 L
+-7670.4009 8578.1348 L
+-7884 8578.1348 L
+-7884 8585.9355 L
+n 0 O
+0 0 0 1 k
+-7884 8582.0352 m
+-7873.9858 8584.5273 -7867.187 8585.875 -7855.2007 8585.9355 c
+-7842.2183 8586 -7777.2002 8585.9355 y
+-7712.1816 8586 -7699.2002 8585.9355 v
+-7687.2129 8585.875 -7680.415 8584.5273 -7670.4009 8582.0352 C
+-7680.415 8579.543 -7687.2129 8578.1953 -7699.2002 8578.1348 c
+-7712.1816 8578.0693 -7777.2002 8578.1348 y
+-7842.2183 8578.0693 -7855.2007 8578.1348 v
+-7867.187 8578.1953 -7873.9858 8579.543 -7884 8582.0352 C
+f U %AI8_EndBrushPattern
+%AI5_End_NonPrinting--
+%AI5_Begin_NonPrinting
+Np
+4 Bn
+%AI5_BeginGradient: (Black, White)
+(Black, White) 0 2 Bd
+[
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+0 %_Br
+[
+0 0 50 100 %_BS
+%_0 0 50 100 Bs
+1 0 50 0 %_BS
+%_1 0 50 0 Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (Chrome)
+(Chrome) 0 6 Bd
+[
+0
+<
+464646454545444444444343434342424241414141404040403F3F3F3E3E3E3E3D3D3D3C3C3C3C3B
+3B3B3B3A3A3A39393939383838383737373636363635353535343434333333333232323131313130
+3030302F2F2F2E2E2E2E2D2D2D2D2C2C2C2B2B2B2B2A2A2A2A292929282828282727272626262625
+2525252424242323232322222222212121202020201F1F1F1F1E1E1E1D1D1D1D1C1C1C1B1B1B1B1A
+1A1A1A1919191818181817171717161616151515151414141413131312121212111111101010100F
+0F0F0F0E0E0E0D0D0D0D0C0C0C0C0B0B0B0A0A0A0A09090909080808070707070606060505050504
+04040403030302020202010101010000
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+<
+1F1E1E1E1E1E1E1E1E1E1D1D1D1D1D1D1D1D1C1C1C1C1C1C1C1C1B1B1B1B1B1B1B1B1B1A1A1A1A1A
+1A1A1A19191919191919191818181818181818181717171717171717161616161616161615151515
+15151515151414141414141414131313131313131312121212121212121211111111111111111010
+1010101010100F0F0F0F0F0F0F0F0F0E0E0E0E0E0E0E0E0D0D0D0D0D0D0D0D0C0C0C0C0C0C0C0C0C
+0B0B0B0B0B0B0B0B0A0A0A0A0A0A0A0A090909090909090909080808080808080807070707070707
+07060606060606060606050505050505050504040404040404040303030303030303030202020202
+02020201010101010101010000000000
+>
+1 %_Br
+0
+0.275
+1
+<
+6B6A696867666564636261605F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544
+434241403F3E3D3C3B3A393837363534333231302F2E2D2C2B2A292827262524232221201F
+>
+1 %_Br
+0
+<
+00000101010102020202030303040404040505050606060607070707080808090909090A0A0A0A0B
+0B0B0C0C0C0C0D0D0D0D0E0E0E0F0F0F0F1010101111111112121212131313141414141515151516
+161617171717181818181919191A1A1A1A1B1B1B1C1C1C1C1D1D1D1D1E1E1E1F1F1F1F2020202021
+212122222222232323232424242525252526262627272727282828282929292A2A2A2A2B2B2B2B2C
+2C2C2D2D2D2D2E2E2E2E2F2F2F303030303131313232323233333333343434353535353636363637
+373738383838393939393A3A3A3B3B3B3B3C3C3C3D3D3D3D3E3E3E3E3F3F3F404040404141414142
+42424343434344444444454545464646
+>
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
+78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
+A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
+C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
+F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+<
+00000101020203030304040505050606070708080809090A0A0B0B0B0C0C0D0D0D0E0E0F0F101010
+1111121212131314141515151616171718181819191A1A1A1B1B1C1C1D1D1D1E1E1F1F1F20202121
+222222232324242525252626272727282829292A2A2A2B2B2C2C2D2D2D2E2E2F2F2F303031313232
+32333334343435353636373737383839393A3A3A3B3B3C3C3C3D3D3E3E3F3F3F4040414142424243
+4344444445454646474747484849494A4A4A4B4B4C4C4C4D4D4E4E4F4F4F50505151515252535354
+54545555565657575758585959595A5A5B5B5C5C5C5D5D5E5E5E5F5F606061616162626363646464
+6565666666676768686969696A6A6B6B
+>
+1 %_Br
+1
+0 %_Br
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+<
+4D4C4C4C4B4B4B4A4A4A4A4949494848484747474746464645454544444444434343424242414141
+414040403F3F3F3E3E3E3E3D3D3D3C3C3C3B3B3B3B3A3A3A39393938383838373737363636353535
+35343434333333323232323131313030302F2F2F2F2E2E2E2D2D2D2C2C2C2C2B2B2B2A2A2A292929
+2928282827272726262626252525242424232323232222222121212020201F1F1F1F1E1E1E1D1D1D
+1C1C1C1C1B1B1B1A1A1A191919191818181717171616161615151514141413131313121212111111
+101010100F0F0F0E0E0E0D0D0D0D0C0C0C0B0B0B0A0A0A0A09090908080807070707060606050505
+04040404030303020202010101010000
+>
+0
+0
+1 %_Br
+[
+1 0 50 92 %_BS
+%_1 0 50 92 Bs
+0 0.275 1 0.12 1 50 59 %_BS
+%_0 0.275 1 0.12 1 50 59 Bs
+0 0.275 1 0.42 1 50 50 %_BS
+%_0 0.275 1 0.42 1 50 50 Bs
+1 0 50 49 %_BS
+%_1 0 50 49 Bs
+1 0 50 41 %_BS
+%_1 0 50 41 Bs
+1 0.3 0 0 1 50 0 %_BS
+%_1 0.3 0 0 1 50 0 Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (Rainbow)
+(Rainbow) 0 6 Bd
+[
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+1
+0
+0
+1 %_Br
+1
+<
+0708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F202122232425262728292A2B2C2D2E
+2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F50515253545556
+5758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F707172737475767778797A7B7C7D7E
+7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9FA0A1A2A3A4A5A6
+A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCE
+CFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6
+F7F8F9FAFBFCFDFEFF
+>
+0
+0
+1 %_Br
+1
+<
+00000000000000000000000000000000000001010101010101010101010101010101010101010101
+01010101010101010101010101010202020202020202020202020202020202020202020202020202
+02020202020202020202030303030303030303030303030303030303030303030303030303030303
+03030303030304040404040404040404040404040404040404040404040404040404040404040404
+04040505050505050505050505050505050505050505050505050505050505050505050505050606
+06060606060606060606060606060606060606060606060606060606060606060607070707070707
+07070707070707070707070707070707
+>
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+0
+1 %_Br
+<
+000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F2021222324252627
+28292A2B2C2D2E2F303132333435363738393A3B3C3D3E3F404142434445464748494A4B4C4D4E4F
+505152535455565758595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F7071727374757677
+78797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F909192939495969798999A9B9C9D9E9F
+A0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B7B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7
+C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF
+F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF
+>
+0
+1
+0
+1 %_Br
+0
+<
+FFFEFDFCFBFAF9F8F7F6F5F4F3F2F1F0EFEEEDECEBEAE9E8E7E6E5E4E3E2E1E0DFDEDDDCDBDAD9D8
+D7D6D5D4D3D2D1D0CFCECDCCCBCAC9C8C7C6C5C4C3C2C1C0BFBEBDBCBBBAB9B8B7B6B5B4B3B2B1B0
+AFAEADACABAAA9A8A7A6A5A4A3A2A1A09F9E9D9C9B9A999897969594939291908F8E8D8C8B8A8988
+87868584838281807F7E7D7C7B7A797877767574737271706F6E6D6C6B6A69686766656463626160
+5F5E5D5C5B5A595857565554535251504F4E4D4C4B4A494847464544434241403F3E3D3C3B3A3938
+37363534333231302F2E2D2C2B2A292827262524232221201F1E1D1C1B1A19181716151413121110
+0F0E0D0C0B0A09080706050403020100
+>
+1
+0
+1 %_Br
+[
+0 1 0 0 1 50 100 %_BS
+%_0 1 0 0 1 50 100 Bs
+1 1 0 0 1 50 80 %_BS
+%_1 1 0 0 1 50 80 Bs
+1 0.0279 0 0 1 50 60 %_BS
+%_1 0.0279 0 0 1 50 60 Bs
+1 0 1 0 1 50 40 %_BS
+%_1 0 1 0 1 50 40 Bs
+0 0 1 0 1 50 20 %_BS
+%_0 0 1 0 1 50 20 Bs
+0 1 1 0 1 50 0 %_BS
+%_0 1 1 0 1 50 0 Bs
+BD
+%AI5_EndGradient
+%AI5_BeginGradient: (Yellow & Orange Radial)
+(Yellow & Orange Radial) 1 2 Bd
+[
+0
+<
+0001010203040506060708090A0B0C0C0D0E0F10111213131415161718191A1B1C1D1D1E1F202122
+232425262728292A2B2B2C2D2E2F303132333435363738393A3B3C3D3E3E3F404142434445464748
+494A4B4C4D4E4F505152535455565758595A5B5C5D5E5F60606162636465666768696A6B6C6D6E6F
+707172737475767778797A7B7C7D7E7F808182838485868788898A8B8C
+>
+<
+FFFFFFFFFEFEFEFEFEFEFEFDFDFDFDFDFDFCFCFCFCFCFCFBFBFBFBFBFBFAFAFAFAFAFAF9F9F9F9F9
+F9F8F8F8F8F8F8F7F7F7F7F7F7F6F6F6F6F6F6F5F5F5F5F5F5F4F4F4F4F4F3F3F3F3F3F3F2F2F2F2
+F2F2F1F1F1F1F1F0F0F0F0F0F0EFEFEFEFEFEFEEEEEEEEEEEDEDEDEDEDEDECECECECECEBEBEBEBEB
+EBEAEAEAEAEAE9E9E9E9E9E9E8E8E8E8E8E8E7E7E7E7E7E6E6E6E6E6E6
+>
+0
+1 %_Br
+[
+0 0 1 0 1 52 19 %_BS
+%_0 0 1 0 1 52 19 Bs
+0 0.55 0.9 0 1 50 100 %_BS
+%_0 0.55 0.9 0 1 50 100 Bs
+BD
+%AI5_EndGradient
+%AI5_End_NonPrinting--
+%AI5_BeginPalette
+0 0 Pb
+1 1 1 1 ([Registration]) 0 Xs
+([Registration]) Pc
+0 0 0 0 k
+(C=0 M=0 Y=0 K=0) Pc
+0 0 0 1 k
+(C=0 M=0 Y=0 K=100) Pc
+0 0.1 1 0 k
+(C=0 M=10 Y=100 K=0) Pc
+0 0.5 0 0 k
+(C=0 M=50 Y=0 K=0) Pc
+0 0.5 1 0 k
+(C=0 M=50 Y=100 K=0) Pc
+1 0.55 1 0 k
+(C=100 M=55 Y=100 K=0) Pc
+1 0.9 0.1 0 k
+(C=100 M=90 Y=10 K=0) Pc
+0.15 1 1 0 k
+(C=15 M=100 Y=100 K=0) Pc
+0.45 0.9 0 0 k
+(C=45 M=90 Y=0 K=0) Pc
+0.5 0.4 0.3 0 k
+(C=50 M=40 Y=30 K=0) Pc
+0.5 0.85 1 0 k
+(C=50 M=85 Y=100 K=0) Pc
+0.75 0.05 1 0 k
+(C=75 M=5 Y=100 K=0) Pc
+0.75 0.9 0 0 k
+(C=75 M=90 Y=0 K=0) Pc
+0.8 0.05 0 0 k
+(C=80 M=5 Y=0 K=0) Pc
+Bb
+2 (Black, White) -7885 8587 0 0 1 0 0 1 0 0 Bg
+0 BB
+(Black, White) Pc
+Bb
+2 (Chrome) -7885 8587 0 0 1 0 0 1 0 0 Bg
+0 BB
+(Chrome) Pc
+Bb
+2 (Rainbow) -7885 8587 0 0 1 0 0 1 0 0 Bg
+0 BB
+(Rainbow) Pc
+Bb
+0 0 0 0 Bh
+2 (Yellow & Orange Radial) -7885 8587 0 0 1 0 0 1 0 0 Bg
+0 BB
+(Yellow & Orange Radial) Pc
+(Brick) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
+(Brick) Pc
+(Confetti) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
+(Confetti) Pc
+(Leaves - Fall ) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
+(Leaves - Fall ) Pc
+(Stripes) 0 0 1 1 0 0 0 0 0 [1 0 0 1 0 0] p
+(Stripes) Pc
+PB
+%AI5_EndPalette
+%AI5_Begin_NonPrinting
+Np
+%AI8_BeginPluginObject
+(Adobe Scatter Brush Tool)
+(Dog Tracks)
+(1 /New Pattern 41/ 1 0 0 0 1 / 0 1 1 0 1 1 0 0 0 0 -90 -90 0 1 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Scatter Brush Tool)
+(Fall Leaf)
+(1 /New Pattern 34/ 1 0.0745 0.9 0.9019 0.18 / 0 0.602793 1 1 0.1 1 1 -) -
+(1 1 1 -180 180 1 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Scatter Brush Tool)
+(Ladybug)
+(1 /New Pattern 10/ 5 0.898039 0 0 / 0 1 1 0 0.803911 1.2 1 -1.55 1.55 ) -
+(1 -180 180 1 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Scatter Brush Tool)
+(Push Pin)
+(1 /New Pattern 36/ 1 0.025 0.1 0.475 0 / 0 1 1 0 0.401676 1 1 -1.06145) -
+( 1.06 1 -180 180 1 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Scatter Brush Tool)
+(Strawberry)
+(1 /New Pattern 37/ 1 0 0 0 1 / 0 0.803911 1 1 0.803911 1 1 -0.5 0.5 1 ) -
+(-75 75.419 1 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Scatter Brush Tool)
+(Twinkle Star )
+(1 /New Pattern 2/ 0 1 / 1 0.5 1 1 0.25 1 1 -0.5 0.5 1 0 0 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe PatternOnPath Brush Tool)
+(Double Lines)
+(1 / New Pattern 62/ New Pattern 63/ New Pattern 64/ / / 1 1 0.14 0.09 ) -
+(0 / 1 0 1 0 1 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe PatternOnPath Brush Tool)
+(Laurel)
+(1 / New Pattern 65/ New Pattern 42/ New Pattern 67/ / New Pattern 69/ ) -
+(1 0 0.55 1 0.3 / 1 0 1 0 1 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe PatternOnPath Brush Tool)
+(Rope )
+(1 / New Pattern 1/ / / New Pattern 3/ New Pattern 6/ 5 0 0 0 / 1 0 1 ) -
+(0 1 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe ArtOnPath Brush Tool)
+(Arrow)
+(1 / New Pattern 45/ / / / / 5 0.898039 0 0 / 2 0 1 0 1 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe ArtOnPath Brush Tool)
+(Marker)
+(1 / New Pattern 8/ / / / / 0 0 / 1 1 1 0 1 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe ArtOnPath Brush Tool)
+(Paintbrush)
+(1 / New Pattern 5/ / / / / 1 0.5 0.85 1 0.45 / 0 0 1 0 1 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe ArtOnPath Brush Tool)
+(Tapered Stroke)
+(1 / New Pattern 83/ / / / / 1 0 0 0 1 / 1 1 1 0 1 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe ArtOnPath Brush Tool)
+(Type)
+(1 / New Pattern 50/ / / / / 1 0.952941 0.94902 0.196078 0.0745098 / 1) -
+( 0 1 0 1 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Calligraphic Brush Tool)
+(6 pt Flat )
+(1 4 8 10 10 90 90 2 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Calligraphic Brush Tool)
+(10 pt Oval)
+(1 1 19 15 15 130 130 2 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Calligraphic Brush Tool)
+(12 pt Oval )
+(1 7 17 45 45 0 0 2 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Calligraphic Brush Tool)
+(20 pt Oval)
+(1 20 20 20 100 40 80 0 2 1 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Calligraphic Brush Tool)
+(25 pt Round )
+(1 10 40 100 100 0 0 2 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Calligraphic Brush Tool)
+(50 pt Flat)
+(1 40 60 0 0 44 44 0 0 0 0) .
+%AI8_EndPluginObject
+%AI8_BeginPluginObject
+(Adobe Brush Manager Order)
+(Adobe Brush Manager Order)
+( Adobe Calligraphic Brush Tool/ 6 pt Flat / Adobe Calligraphic Brush T) -
+(ool/ 10 pt Oval/ Adobe Calligraphic Brush Tool/ 12 pt Oval / Adobe Cal) -
+(ligraphic Brush Tool/ 20 pt Oval/ Adobe Calligraphic Brush Tool/ 25 pt) -
+( Round / Adobe Calligraphic Brush Tool/ 50 pt Flat/ Adobe Scatter Brus) -
+(h Tool/ Dog Tracks/ Adobe Scatter Brush Tool/ Fall Leaf/ Adobe Scatter) -
+( Brush Tool/ Ladybug/ Adobe Scatter Brush Tool/ Push Pin/ Adobe Scatte) -
+(r Brush Tool/ Strawberry/ Adobe Scatter Brush Tool/ Twinkle Star / Ado) -
+(be ArtOnPath Brush Tool/ Marker/ Adobe ArtOnPath Brush Tool/ Tapered S) -
+(troke/ Adobe ArtOnPath Brush Tool/ Arrow/ Adobe ArtOnPath Brush Tool/ ) -
+(Paintbrush/ Adobe ArtOnPath Brush Tool/ Type/ Adobe PatternOnPath Brus) -
+(h Tool/ Double Lines/ Adobe PatternOnPath Brush Tool/ Laurel/ Adobe Pa) -
+(tternOnPath Brush Tool/ Rope /) .
+%AI8_EndPluginObject
+%AI5_End_NonPrinting--
+%AI5_Begin_NonPrinting
+Np
+%AI8_PluginGroupInfo
+(Adobe Path Blends) (Adobe Blends Plugin) (Live Blends.aip)
+%AI8_PluginGroupInfo
+(Adobe PatternOnPath Brush Tool) (Adobe Pattern Brush Plugin) (ArtOnPath.aip)
+%AI8_PluginGroupInfo
+(Adobe ArtOnPath Brush Tool) (Adobe Art Brush Plugin) (ArtOnPath.aip)
+%AI8_PluginGroupInfo
+(Adobe Calligraphic Brush Tool) (Adobe Calligraphic Brush Plugin) (Calligraphic Brush Tool.aip)
+%AI8_PluginGroupInfo
+(Adobe Scatter Brush Tool) (Adobe Scatter Brush Plugin) (Scatter Brush Tool.aip)
+%AI5_End_NonPrinting--
+%%EndSetup
+%AI5_BeginLayer
+1 1 1 1 0 0 1 0 79 128 255 0 50 Lb
+(Layer 1) Ln
+0 A
+u 0 O
+0 g
+800 Ar
+0 J 0 j 1 w 4 M []0 d %AI3_Note: 0 D
+0 XR
+%AI5_File:
+%AI5_BeginRaster
+() 1 XG
+[ 0.24 0 0 0.24 289.4404 411.5996 ] 138 130 0 Xh
+[ 0.24 0 0 0.24 289.4404 411.5996 ] 0 0 138 130 138 130 1 1 0 0 0 0
+%%BeginBinary
+XI
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFA3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD07FFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFF03FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFFFFC
+%3FFFFFFF87FFFFFFFFFFFFFFFFFFFFFFFFFE1FFFFFFE01FFFFFFFFFFFFFF
+%FFFFFFFFFFFF1FFFFFFC0FFFFFFFFFFFFFFFFFFFFFFFFFFF0FFFFFF83FFF
+%FFFFFFFFFFFFFFFFFFFFFFFF8FFFFFF03FFFFFFFFFFFFFFFFFFFFFFFFFFF
+%8FFFFFF07FFFFFFFFFFFFFFFFFFFFFFFFFFF87FFFFE0FFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFC7FFFFE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFC7FFFFC1FFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFE3FFFFC1FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%E3FFFF83FFFFFFFFFFFFFFFFFFFFFFFFFFFFE1FFFF83FFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFE0FFFF83FFFFFFFFFFFFFFFFFFFFFFFFFFFFF07FFF07FFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFF07FFF07FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%F83FFE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF81FFC0FFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFC0FFC1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE07F03FFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFF01F07FFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FF80E07FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE001FFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFF0017FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80003FFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFF00001FFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FF00001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE00000FFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFE00000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE00000FFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFF00001FFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FF00001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE000007FFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFF010083FFFFFFFFFFFFFFFFFFFFFFFFFFFFFE125021FFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFF005AB047FFFFFFFFFFFFFFFFFFFFFFFFFFF
+%E00054813FFFFFFFFFFFFFFFFFFFFFFFFFFFE214A9041FFFFFFFFFFFFFFF
+%FFFFFFFFFFFF82016A820FFFFFFFFFFFFFFFFFFFFFFFFFFF0514BE090FFF
+%FFFFFFFFFFFFFFFFFFFFFFFE400FDE8423FFFFFFFFFFFFFFFFFFFFFFFFF8
+%004FAC4049FFFFFFFFFFFFFFFFFFFFFFFFE0A12FCD8034FFFFFFFFFFFFFF
+%FFFFFFFFFFE2502FBC109A7FFFFFFFFFFFFFFFFFFFFFFF89529F9B88ED3F
+%FFFFFFFFFFFFFFFFFFFFFF93A8157451B63FFFFFFFFFFFFFFFFFFFFFFF67
+%C01AA9800B1FFFFFFFFFFFFFFFFFFFFFFC9E1008DA909587FFFFFFFFFFFF
+%FFFFFFFFFB780C075F0406C3FFFFFFFFFFFFFFFFFFFFF0F616078B010751
+%FFFFFFFFFFFFFFFFFFFFE3CD8A8215482769FFFFFFFFFFFFFFFFFFFFC799
+%450920100BB4FFFFFFFFFFFFFFFFFFFF8F730AC45A004BBA3FFFFFFFFFFF
+%FFFFFFFF1EE6C522EC1099DD5FFFFFFFFFFFFFFFFFFE39D6C290CA008DEF
+%9FFFFFFFFFFFFFFFFFFCF3DDA5AA04012CEEA7FFFFFFFFFFFFFFFFFCE7AD
+%810C2802BEF753FFFFFFFFFFFFFFFFF1CFABB8C008020E77ABFFFFFFFFFF
+%FFFFFFF3AF53BD941405473BD5FFFFFFFFFFFFFFFFE75F670042BD08A759
+%EAFFFFFFFFFFFFFFFFC69EAAB2254E0355BDF57FFFFFFFFFFFFFFF8EBEA5
+%1852AD104A9CFABFFFFFFFFFFFFFFF997DAF5E014A064ADEFD5FFFFFFFFF
+%FFFFFF3A7D5B292AD5498DDEFEAFFFFFFFFFFFFFFE36FB6F6A938A518A4E
+%7E47FFFFFFFFFFFFFE64FB6FB4C000840DEF3EABFFFFFFFFFFFFFC9CF6EF
+%7228222295B75F51FFFFFFFFFFFFF949F6EEB961FC092DF7BF69FFFFFFFF
+%FFFFF899EEFFBC00D4166DBB2FF4FFFFFFFFFFFFF355EFDEBC7010D86DDA
+%A7B87FFFFFFFFFFFF423EDDFF813FDD86ED937BC7FFFFFFFFFFFE6D6CDDE
+%A048FA236EDD53BD3FFFFFFFFFFFCD605DDFD024A104569A9BDEBFFFFFFF
+%FFFF9BCDA99520121519775C5BDF1FFFFFFFFFFF97D4555194286A640AAA
+%EDDF8FFFFFFFFFFF37D5B286A0151450772AEFEECFFFFFFFFFFF2FDDB2AB
+%502C6A54652AE8EF57FFFFFFFFFE6FAFF655723654A8776F6EB6A7FFFFFF
+%FFFE5FAB6BD7F15D6CB46F6F646F6BFFFFFFFFFCDF6B77BFF42ABCD0676F
+%F752B5FFFFFFFFFDBF6A6FD3F12BB1406F6F74D97AFFFFFFFFF9BF6F77BF
+%F412C9A07777B775FAFFFFFFFFF97FF66FD3E90F55104F6FB7BDFA7FFFFF
+%FFFB7ED6EB9BD093D9C056F7BBFDFD7FFFFFFFF27EE6EFDB9A45AA002B7F
+%B1DEFDBFFFFFFFF6FDEEEFDF691295826AB76BDE7E9FFFFFFFF6FDEEFBDA
+%98C04818ED55B2FFBEDFFFFFFFECFDEEEFD57A2F40E16BB552EF5FAFFFFF
+%FFE5F9EF6BF2B911FA046EAAAB6F6FCFFFFFFFE9FBDEEB95FACA48A95FB5
+%5B6FEFDFFFFFFFE5FBCF53ABF1150554EFB55BF7B7A7FFFFFFD3FBDF6ACF
+%E842FAA05FAFDAB7BBF7FFFFFFC3F7DF6DEFCCA90558BFB7F6B7DDD3FFFF
+%FFD3F3DF76F79C04BA809FAF97DBDCABFFFFFFC7F7BFB5F73EF04021CBFF
+%EEFBDAE9FFFFFFD6F79FB7FE7E0F17E9E62FAF5BDE95FFFFFFC6E7FB9FF9
+%FE25FE83F1D78F7DD579FFFFFFCDD73D43E3FF120153FCBF376B6E94FFFF
+%FFC2AEA2A81FFF0552ABFF00AABDAB5AFFFFFFC48A3D21FFFFA9AD47FFE3
+%556AE5B4FFFFFFD16DA253FFFF82B80FFFF856BDAACAFFFFFFC48A5A87FF
+%FFC801EFFFFF155576E4FFFFFFD329550FFFFFD75C1FFFFFC3AEADAAFFFF
+%FF84926A3FFFFFC0028FFFFFF0755251FFFFFFD35C90FFFFFFE5441FFFFF
+%FF0AADA1FFFFFFA01243FFFFFFE0FA1FFFFFFFC00003FFFFFF82540FFFFF
+%FFF3043FFFFFFFFFD01FFFFFFFC010FFFFFFFFF1F83FFFFFFFFFFFFFFFFF
+%FFC007FFFFFFFFF9707FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9407FFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFC907FFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFE41FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE01FFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFF03FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+%%EndBinary
+XH
+%AI5_EndRaster
+F /BBAccumRotation (0.000000) XT
+U /BBAccumRotation (0.000000) XT
+LB
+%AI5_EndLayer--
+%%PageTrailer
+gsave annotatepage grestore showpage
+%%Trailer
+Adobe_Illustrator_AI5 /terminate get exec
+Adobe_shading_AI8 /terminate get exec
+Adobe_ColorImage_AI6 /terminate get exec
+Adobe_cshow /terminate get exec
+Adobe_level2_AI5 /terminate get exec
+%%EOF
diff --git a/Master/texmf-dist/doc/latex/acmart/map.png b/Master/texmf-dist/doc/latex/acmart/map.png
new file mode 100644
index 00000000000..2d1e33178bd
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/acmart/map.png
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/acmart/mouse-eps-converted-to.pdf b/Master/texmf-dist/doc/latex/acmart/mouse-eps-converted-to.pdf
new file mode 100644
index 00000000000..780fe1546e2
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/acmart/mouse-eps-converted-to.pdf
@@ -0,0 +1,86 @@
+%PDF-1.4
+%Çì¢
+5 0 obj
+<</Length 6 0 R/Filter /FlateDecode>>
+stream
+xœUSAŽ1¼÷+ø@ˆcà›/¬”½dIþ/¥°{zµ4ÚTôo,4ú¹Ï÷Ïëû ¿×~K>.™¬N^ýûÙ‘›(‰/ ªàUn¤…‹Ä¥q¶¢÷+GÃ,œ=•<xâ?MUÖ‰2¢ œY/k±{‘»óô E¿Ð@^r¤“Þ—m|ª³®EÀòRÄUlå$Ã62dÝ Ä•gRøäl€ b0õ„®¹©—Þ
+d`†JK¸ ÐJY²ãdë€y4˜92l(I2!bb­n%³|g˜==JÏ›±iþº¾rFqÓ´ÔT]rœ¦'±K@Wàf¤¦qè¹ãSºÆ«§AaEW˜„b69áHjëÍ]zM¹¼Çdtµ0õž9fnZá™»º Önís
+t4'ƒ<­³UH½ç(~敹ç©1÷‰qápl|=äq [<|Dp¦&}3?fôµ´ï×Ï NâémÎmƒŠœ}îÂBý±ת؃ ßjñȵã6:îÎϽ/ä½ò!
+¶Ñ]^Ó°Ïeù\ãó^¦;ûþ\žêÏýÝý•þb÷?û6èãz»þ®à¹ëendstream
+endobj
+6 0 obj
+453
+endobj
+4 0 obj
+<</Type/Page/MediaBox [0 0 151 134]
+/Parent 3 0 R
+/Resources<</ProcSet[/PDF]
+/ExtGState 8 0 R
+>>
+/Contents 5 0 R
+>>
+endobj
+3 0 obj
+<< /Type /Pages /Kids [
+4 0 R
+] /Count 1
+>>
+endobj
+1 0 obj
+<</Type /Catalog /Pages 3 0 R
+/Metadata 9 0 R
+>>
+endobj
+7 0 obj
+<</Type/ExtGState
+/OPM 1>>endobj
+8 0 obj
+<</R7
+7 0 R>>
+endobj
+9 0 obj
+<</Type/Metadata
+/Subtype/XML/Length 1495>>stream
+<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
+<?adobe-xap-filters esc="CRLF"?>
+<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 2.9.1-13, framework 1.6'>
+<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>
+<rdf:Description rdf:about='3e489f47-44be-11f1-0000-6130e7753adf' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.02'/>
+<rdf:Description rdf:about='3e489f47-44be-11f1-0000-6130e7753adf' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2016-04-27T13:58:49-04:00</xmp:ModifyDate>
+<xmp:CreateDate>2016-04-27T13:58:49-04:00</xmp:CreateDate>
+<xmp:CreatorTool>Adobe Illustrator(TM) for Windows, version 4.0</xmp:CreatorTool></rdf:Description>
+<rdf:Description rdf:about='3e489f47-44be-11f1-0000-6130e7753adf' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='3e489f47-44be-11f1-0000-6130e7753adf'/>
+<rdf:Description rdf:about='3e489f47-44be-11f1-0000-6130e7753adf' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>(MOUSE.AI)</rdf:li></rdf:Alt></dc:title><dc:creator><rdf:Seq><rdf:li>(Siepo Drop ) (Studio Bitmuis )</rdf:li></rdf:Seq></dc:creator></rdf:Description>
+</rdf:RDF>
+</x:xmpmeta>
+
+
+<?xpacket end='w'?>
+endstream
+endobj
+2 0 obj
+<</Producer(GPL Ghostscript 9.02)
+/CreationDate(D:20160427135849-04'00')
+/ModDate(D:20160427135849-04'00')
+/Creator(Adobe Illustrator\(TM\) for Windows, version 4.0)
+/Author(\(Siepo Drop \) \(Studio Bitmuis \))
+/Title(\(MOUSE.AI\))>>endobj
+xref
+0 10
+0000000000 65535 f
+0000000747 00000 n
+0000002452 00000 n
+0000000688 00000 n
+0000000557 00000 n
+0000000015 00000 n
+0000000538 00000 n
+0000000811 00000 n
+0000000852 00000 n
+0000000881 00000 n
+trailer
+<< /Size 10 /Root 1 0 R /Info 2 0 R
+/ID [<F54CE37642C4529AE267CD93C7D615DF><F54CE37642C4529AE267CD93C7D615DF>]
+>>
+startxref
+2754
+%%EOF
diff --git a/Master/texmf-dist/doc/latex/acmart/mouse.eps b/Master/texmf-dist/doc/latex/acmart/mouse.eps
new file mode 100644
index 00000000000..fc54a84b51b
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/acmart/mouse.eps
@@ -0,0 +1,145 @@
+%!PS-Adobe-2.0 EPSF-1.2
+%%Creator: Adobe Illustrator(TM) for Windows, version 4.0
+%%For: (Siepo Drop ) (Studio Bitmuis )
+%%Title: (MOUSE.AI)
+%%CreationDate: (10/25/96) (6:00 PM)
+%%DocumentProcessColors: Black
+%%DocumentProcSets: Adobe_Illustrator_1.1 0 0
+%%DocumentSuppliedProcSets: Adobe_Illustrator_1.1 0 0
+%%BoundingBox:233 344 384 478
+%%ColorUsage: Black&White
+%%TemplateBox:306 396 306 396
+%%TileBox: 0 0 576 806
+%%DocumentPreview: Header
+%%Template:
+%%PageOrigin:0 0
+%%AI3_PaperRect:-9.6002 808.5785 585.6134 -2.6401
+%%AI3_Margin:9.6002 -2.6401 -9.6002 2.6401
+%%EndComments
+% $Header: /home/boris/cvs/tex/acm/acmart/mouse.eps,v 1.1 2016/04/11 04:57:36 boris Exp $
+%%BeginProcSet:Adobe_Illustrator_1.1 0 0
+% Copyright (C) 1987-1990 Adobe Systems Incorporated.
+% All Rights Reserved.
+% Adobe Illustrator is a trademark of Adobe Systems Incorporated.
+/Adobe_Illustrator_1.1 dup 100 dict def load begin
+/Version 0 def
+/Revision 0 def
+% definition operators
+/bdef {bind def} bind def
+/ldef {load def} bdef
+/xdef {exch def} bdef
+% graphic state operators
+/_K {3 index add neg dup 0 lt {pop 0} if 3 1 roll} bdef
+/_k /setcmybcolor where
+{/setcmybcolor get} {{1 sub 4 1 roll _K _K _K setrgbcolor pop} bind} ifelse def
+/g {/_b xdef /p {_b setgray} def} bdef
+/G {/_B xdef /P {_B setgray} def} bdef
+/k {/_b xdef /_y xdef /_m xdef /_c xdef /p {_c _m _y _b _k} def} bdef
+/K {/_B xdef /_Y xdef /_M xdef /_C xdef /P {_C _M _Y _B _k} def} bdef
+/d /setdash ldef
+/_i currentflat def
+/i {dup 0 eq {pop _i} if setflat} bdef
+/j /setlinejoin ldef
+/J /setlinecap ldef
+/M /setmiterlimit ldef
+/w /setlinewidth ldef
+% path construction operators
+/_R {.25 sub round .25 add} bdef
+/_r {transform _R exch _R exch itransform} bdef
+/c {_r curveto} bdef
+/C /c ldef
+/v {currentpoint 6 2 roll _r curveto} bdef
+/V /v ldef
+/y {_r 2 copy curveto} bdef
+/Y /y ldef
+/l {_r lineto} bdef
+/L /l ldef
+/m {_r moveto} bdef
+% error operators
+/_e [] def
+/_E {_e length 0 ne {gsave 0 g 0 G 0 i 0 J 0 j 1 w 10 M [] 0 d
+/Courier 20 0 0 1 z [0.966 0.259 -0.259 0.966
+_e 0 get _e 2 get add 2 div _e 1 get _e 3 get add 2 div] e _f t T grestore} if} bdef
+/_fill {{fill} stopped
+{/_e [pathbbox] def /_f (ERROR: can't fill, increase flatness) def n _E} if} bdef
+/_stroke {{stroke} stopped
+{/_e [pathbbox] def /_f (ERROR: can't stroke, increase flatness) def n _E} if} bdef
+% path painting operators
+/n /newpath ldef
+/N /n ldef
+/F {p _fill} bdef
+/f {closepath F} bdef
+/S {P _stroke} bdef
+/s {closepath S} bdef
+/B {gsave F grestore S} bdef
+/b {closepath B} bdef
+% text block construction and painting operators
+/_s /ashow ldef
+/_S {(?) exch {2 copy 0 exch put pop dup false charpath currentpoint _g setmatrix
+_stroke _G setmatrix moveto 3 copy pop rmoveto} forall pop pop pop n} bdef
+/_A {_a moveto _t exch 0 exch} bdef
+/_L {0 _l neg translate _G currentmatrix pop} bdef
+/_w {dup stringwidth exch 3 -1 roll length 1 sub _t mul add exch} bdef
+/_z [{0 0} bind {dup _w exch neg 2 div exch neg 2 div} bind {dup _w exch neg exch neg} bind] def
+/z {_z exch get /_a xdef /_t xdef /_l xdef exch findfont exch scalefont setfont} bdef
+/_g matrix def
+/_G matrix def
+/_D {_g currentmatrix pop gsave concat _G currentmatrix pop} bdef
+/e {_D p /t {_A _s _L} def} bdef
+/r {_D P /t {_A _S _L} def} bdef
+/a {_D /t {dup p _A _s P _A _S _L} def} bdef
+/o {_D /t {pop _L} def} bdef
+/T {grestore} bdef
+% group construction operators
+/u {} bdef
+/U {} bdef
+% font construction operators
+/Z {findfont begin currentdict dup length dict begin
+{1 index /FID ne {def} {pop pop} ifelse} forall /FontName exch def dup length 0 ne
+{/Encoding Encoding 256 array copy def 0 exch {dup type /nametype eq
+{Encoding 2 index 2 index put pop 1 add} {exch pop} ifelse} forall} if pop
+currentdict dup end end /FontName get exch definefont pop} bdef
+end
+%%EndProcSet
+%AI3-Grid.0 18 18 3 0.833333 0.833333 0.833333 3
+%%EndProlog
+%%BeginSetup
+% $Header: /home/boris/cvs/tex/acm/acmart/mouse.eps,v 1.1 2016/04/11 04:57:36 boris Exp $
+Adobe_Illustrator_1.1 begin
+n
+%%EndSetup
+u
+0 0 0 1 k
+0 i 0 J 0 j 0.5226 w 4 M []0 d
+%%Note:
+234.4156 349.9487 m
+234.4533 357.3618 242.7696 373.0161 248.0755 380.7679 C
+241.0762 381.5582 238.7437 386.2243 244.1995 392.8849 c
+249.6559 399.5455 254.4726 401.8786 258.9506 392.8849 C
+289.356 426.5265 305.7628 433.9396 336.9584 415.576 C
+348.2475 419.4896 356.4509 419.0757 367.74 436.6867 c
+376.4327 450.196 372.2181 450.8357 369.3205 462.8774 c
+366.5735 474.2041 374.4006 476.9512 382.5664 477.7414 C
+382.1901 474.5805 L
+374.4006 474.9944 370.7128 471.57 373.9867 463.2537 c
+378.2765 452.3033 380.1957 445.304 373.6104 434.7299 c
+365.7833 422.199 358.784 415.9523 341.2483 408.1629 C
+338.9904 396.648 336.6197 386.2243 321.3418 376.892 c
+315.3962 373.2419 301.9998 372.414 294.4366 368.2747 c
+284.5393 362.8559 260.4559 355.5556 253.419 353.7493 c
+246.4574 351.9054 240.8881 343.6268 234.4156 349.9487 C
+f
+0 0 0 0 k
+251.5751 365.1513 m
+253.4942 365.1513 255.0747 363.6085 255.0747 361.6893 c
+255.0747 359.6949 253.4942 358.1521 251.5751 358.1521 c
+249.6936 358.1521 248.1131 359.6949 248.1131 361.6893 c
+248.1131 363.6085 249.6936 365.1513 251.5751 365.1513 c
+f
+U
+%%PageTrailer
+%%Trailer
+_E end
+%%EOF
+
+
diff --git a/Master/texmf-dist/doc/latex/acmart/rosette-eps-converted-to.pdf b/Master/texmf-dist/doc/latex/acmart/rosette-eps-converted-to.pdf
new file mode 100644
index 00000000000..9e49eb1fb4a
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/acmart/rosette-eps-converted-to.pdf
@@ -0,0 +1,82 @@
+%PDF-1.4
+%Çì¢
+5 0 obj
+<</Length 6 0 R/Filter /FlateDecode>>
+stream
+xœÍV;’Û0 íy
+ž€@‚Ÿ¤NrÏì¦ð™¹~  m åíä-´”âéáñ<ô°ýéóòá¾ý,þý¯“7+4ÿî°bäõñá"”»õÕEb‰.ò"S¨ècäz‚„!'YCÕ!‡Œþ" YäM¬-pñ*†˜=¥vÛ€”›¬ÓVáâÞ±üóÏÿþàüv¿„’ÂüìâÄ
+{â³ëR!@šôyqöËafßz&¼} ˜­!Âÿ‚˜Çø«3†ãÖëˆöH[&ˆF{OGGÏo¥TKZNÇ ¤ÔÄ„ RïK–úmnÇ B)³\ ǀƒ”¤|xcÏ×ïAÁ÷‰TN‡Ð)Iå%ñ¸†:…W™dß8ÖEì ÞUàVBfâk•ðȘóPtb86È´ fuÌàvÈUÄ…a»±høÎìJh¦VɈCÄÌ9`kVrÅË @tZ22Å´ e/V§û©Ž­ÜбRË  ˆMÈöE&dûd•ÄŠ•ó1() ¬Ñ.þ:Äh2¶µÉØìyqöËQ¦n=ŽÅr&ŠNŒðÎqi¸ñr®•áÁ¸Ù™uDíN;&~§==5¿4ß*™"žxˉ:)r XÍ,»xd·ZßÏNê8¹v+@ã´ÛéW7˜î>Ë @tZšäQ=žXfŸÌ¹]½V8º-LÆ–ñÄ[^b#fuzvÛXi—¼^ú6˜‚û”0}Άˆi„}È0?ŒóÏ&ÛÓ ÜD"\üpÿŸCŠîendstream
+endobj
+6 0 obj
+604
+endobj
+4 0 obj
+<</Type/Page/MediaBox [0 0 363.23 363.23]
+/Parent 3 0 R
+/Resources<</ProcSet[/PDF]
+/ExtGState 8 0 R
+>>
+/Contents 5 0 R
+>>
+endobj
+3 0 obj
+<< /Type /Pages /Kids [
+4 0 R
+] /Count 1
+>>
+endobj
+1 0 obj
+<</Type /Catalog /Pages 3 0 R
+/Metadata 9 0 R
+>>
+endobj
+7 0 obj
+<</Type/ExtGState
+/OPM 1>>endobj
+8 0 obj
+<</R7
+7 0 R>>
+endobj
+9 0 obj
+<</Type/Metadata
+/Subtype/XML/Length 1319>>stream
+<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
+<?adobe-xap-filters esc="CRLF"?>
+<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 2.9.1-13, framework 1.6'>
+<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>
+<rdf:Description rdf:about='499bcac7-44be-11f1-0000-e57098484f26' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' pdf:Producer='GPL Ghostscript 9.02'/>
+<rdf:Description rdf:about='499bcac7-44be-11f1-0000-e57098484f26' xmlns:xmp='http://ns.adobe.com/xap/1.0/'><xmp:ModifyDate>2016-04-27T13:59:08-04:00</xmp:ModifyDate>
+<xmp:CreateDate>2016-04-27T13:59:08-04:00</xmp:CreateDate>
+<xmp:CreatorTool>UnknownApplication</xmp:CreatorTool></rdf:Description>
+<rdf:Description rdf:about='499bcac7-44be-11f1-0000-e57098484f26' xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' xapMM:DocumentID='499bcac7-44be-11f1-0000-e57098484f26'/>
+<rdf:Description rdf:about='499bcac7-44be-11f1-0000-e57098484f26' xmlns:dc='http://purl.org/dc/elements/1.1/' dc:format='application/pdf'><dc:title><rdf:Alt><rdf:li xml:lang='x-default'>Untitled</rdf:li></rdf:Alt></dc:title></rdf:Description>
+</rdf:RDF>
+</x:xmpmeta>
+
+
+<?xpacket end='w'?>
+endstream
+endobj
+2 0 obj
+<</Producer(GPL Ghostscript 9.02)
+/CreationDate(D:20160427135908-04'00')
+/ModDate(D:20160427135908-04'00')>>endobj
+xref
+0 10
+0000000000 65535 f
+0000000904 00000 n
+0000002433 00000 n
+0000000845 00000 n
+0000000708 00000 n
+0000000015 00000 n
+0000000689 00000 n
+0000000968 00000 n
+0000001009 00000 n
+0000001038 00000 n
+trailer
+<< /Size 10 /Root 1 0 R /Info 2 0 R
+/ID [<27FFEE371E447DBF31C0814450606A79><27FFEE371E447DBF31C0814450606A79>]
+>>
+startxref
+2556
+%%EOF
diff --git a/Master/texmf-dist/doc/latex/acmart/rosette.eps b/Master/texmf-dist/doc/latex/acmart/rosette.eps
new file mode 100644
index 00000000000..9d56a1ecd55
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/acmart/rosette.eps
@@ -0,0 +1,76 @@
+%!
+%%BoundingBox: 124.38 124.38 487.61 487.61
+% Cookbook Example Program from First Printing, Revised 7 Jan 1985
+% Program: Repeated Shapes Number: 6
+%-----------------------------------------------------------------------------
+%
+ % This program prints a rosette
+ % design by defining a section of
+ % that design and printing that
+ % section repeatedly. This program
+ % illustrates the ``for'' and
+ % "arc" operators, and it shows
+ % how coordinate transformations
+ % can be nested so as to use the
+ % most convenient coordinate
+ % system for each part of a
+ % design.
+/inch {72 mul} def
+
+/wedge % Define an ``ice cream cone''
+ { newpath % shape by means of the ``arc''
+ 0 0 moveto % operator. This shape will have a
+ 1 0 translate % 30 degree angle topped off with
+ 15 rotate % a semicircle. Set the path's
+ 0 15 sin translate % first point at the current
+ 0 0 15 sin -90 90 arc % origin. Next, move the origin to
+ closepath % the center of the semicircle by
+ } def % translating to the right 1 unit,
+ % rotating counter-clockwise by 15
+ % degrees, and translating ``up''
+ % in the rotated system by the
+ % radius of the semicircle. The
+ % ``arc'' operator includes a
+ % straight line to the initial
+ % point of the arc and a curved
+ % section to the end of the arc.
+ % Note that the semicircle goes
+ % from -90 degrees to 90 degrees
+ % in the rotated coordinate
+ % system.
+
+gsave
+ 4.25 inch 4.25 inch translate % Move into position for the
+ % rosette.
+ 1.75 inch 1.75 inch scale % Make the edges of the rosette 1
+ % 3/4 inches long.
+ 0.02 setlinewidth % Use a 7/200 inch thick line.
+ 2 1 13 % Set up the ``for'' operator to
+ % iterate 12 times, pushing 2 onto
+ % the stack the first time, 3 the
+ % next time, ... , and 13 the last
+ % time.
+ { % The last argument for ``for'' is
+ % the sequence of operations to be
+ % repeated. This sequence must be
+ % enclosed by braces.
+ 13 div setgray % Divide the loop index by 13 to
+ % set a gray value.
+ gsave % Enclose the ``wedge'' operation
+ wedge % in a ``gsave''-``grestore''
+ % pair, as it will mess up the
+ % coordinate system.
+ gsave % Save the wedge path for use
+ % after the ``fill''.
+ fill
+ grestore
+ 0 setgray stroke % Draw a black border around the
+ % wedge.
+ grestore % Get out of the coordinate system
+ % left by wedge.
+ 30 rotate % Set up for the next section.
+ } for % Close the last argument and
+ % execute the ``for'' operator.
+grestore
+showpage
+
diff --git a/Master/texmf-dist/doc/latex/acmart/sample-acmlarge.pdf b/Master/texmf-dist/doc/latex/acmart/sample-acmlarge.pdf
new file mode 100644
index 00000000000..7a03f392922
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/acmart/sample-acmlarge.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/acmart/sample-acmlarge.tex b/Master/texmf-dist/doc/latex/acmart/sample-acmlarge.tex
new file mode 100644
index 00000000000..b135fb2af10
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/acmart/sample-acmlarge.tex
@@ -0,0 +1,152 @@
+\documentclass[acmlarge,natbib]{acmart}
+
+\usepackage{booktabs} % For formal tables
+
+
+\usepackage[ruled]{algorithm2e} % For algorithms
+\renewcommand{\algorithmcfname}{ALGORITHM}
+\SetAlFnt{\small}
+\SetAlCapFnt{\small}
+\SetAlCapNameFnt{\small}
+\SetAlCapHSkip{0pt}
+\IncMargin{-\parindent}
+
+% Metadata Information
+\acmJournal{JOCCH}
+\acmVolume{9}
+\acmNumber{4}
+\acmArticle{39}
+\acmYear{2010}
+\acmMonth{3}
+\acmArticleSeq{11}
+
+%\acmBadgeR[http://ctuning.org/ae/ppopp2016.html]{ae-logo}
+%\acmBadgeL[http://ctuning.org/ae/ppopp2016.html]{ae-logo}
+
+
+% Copyright
+%\setcopyright{acmcopyright}
+%\setcopyright{acmlicensed}
+%\setcopyright{rightsretained}
+%\setcopyright{usgov}
+\setcopyright{usgovmixed}
+%\setcopyright{cagov}
+%\setcopyright{cagovmixed}
+
+% DOI
+\acmDOI{0000001.0000001}
+
+% Paper history
+\received{February 2007}
+\received{March 2009}
+\received[accepted]{June 2009}
+
+
+% Document starts
+\begin{document}
+% Title portion
+\title{A Multifrequency MAC Specially Designed for Wireless Sensor
+ Network Applications}
+\author{Gang Zhou}
+\email{zhou@uva.edu}
+\author{Yafeng Wu}
+\email{ywu@uva.edu}
+\affiliation{University of Virginia}
+\author{Ting Yan}
+\affiliation{Eaton Innovation Center}
+\author{Tian He}
+\affiliation{University of Minnesota}
+\author{Chengdu Huang}
+\affiliation{Google}
+\author{John A. Stankovic}
+\affiliation{University of Virginia}
+\author{Tarek F. Abdelzaher}
+\affiliation{University of Illinois at Urbana-Champaign}
+\affiliation{University of Virginia}
+
+\begin{abstract}
+Multifrequency media access control has been well understood in
+general wireless ad hoc networks, while in wireless sensor networks,
+researchers still focus on single frequency solutions. In wireless
+sensor networks, each device is typically equipped with a single
+radio transceiver and applications adopt much smaller packet sizes
+compared to those in general wireless ad hoc networks. Hence, the
+multifrequency MAC protocols proposed for general wireless ad hoc
+networks are not suitable for wireless sensor network applications,
+which we further demonstrate through our simulation experiments. In
+this article, we propose MMSN, which takes advantage of
+multifrequency availability while, at the same time, takes into
+consideration the restrictions of wireless sensor networks. Through
+extensive experiments, MMSN exhibits the prominent ability to utilize
+parallel transmissions among neighboring nodes. When multiple physical
+frequencies are available, it also achieves increased energy
+efficiency, demonstrating the ability to work against radio
+interference and the tolerance to a wide range of measured time
+synchronization errors.
+\end{abstract}
+
+
+%
+% The code below should be generated by the tool at
+% http://dl.acm.org/ccs.cfm
+% Please copy and paste the code instead of the example below.
+%
+\begin{CCSXML}
+<ccs2012>
+ <concept>
+ <concept_id>10010520.10010553.10010562</concept_id>
+ <concept_desc>Computer systems organization~Embedded systems</concept_desc>
+ <concept_significance>500</concept_significance>
+ </concept>
+ <concept>
+ <concept_id>10010520.10010575.10010755</concept_id>
+ <concept_desc>Computer systems organization~Redundancy</concept_desc>
+ <concept_significance>300</concept_significance>
+ </concept>
+ <concept>
+ <concept_id>10010520.10010553.10010554</concept_id>
+ <concept_desc>Computer systems organization~Robotics</concept_desc>
+ <concept_significance>100</concept_significance>
+ </concept>
+ <concept>
+ <concept_id>10003033.10003083.10003095</concept_id>
+ <concept_desc>Networks~Network reliability</concept_desc>
+ <concept_significance>100</concept_significance>
+ </concept>
+</ccs2012>
+\end{CCSXML}
+
+\ccsdesc[500]{Computer systems organization~Embedded systems}
+\ccsdesc[300]{Computer systems organization~Redundancy}
+\ccsdesc{Computer systems organization~Robotics}
+\ccsdesc[100]{Networks~Network reliability}
+
+%
+% End generated code
+%
+
+% We no longer use \terms command
+\terms{Design, Algorithms, Performance}
+
+\keywords{Wireless sensor networks, media access control,
+multi-channel, radio interference, time synchronization}
+
+
+\thanks{This work is supported by the National Science Foundation,
+ under grant CNS-0435060, grant CCR-0325197 and grant EN-CS-0329609.
+
+ Author's addresses: G. Zhou, Computer Science Department, College of
+ William and Mary; Y. Wu {and} J. A. Stankovic, Computer Science
+ Department, University of Virginia; T. Yan, Eaton Innovation Center;
+ T. He, Computer Science Department, University of Minnesota; C.
+ Huang, Google; T. F. Abdelzaher, (Current address) NASA Ames
+ Research Center, Moffett Field, California 94035.}
+
+
+\maketitle
+
+\input{samplebody-journals}
+
+
+
+\end{document}
diff --git a/Master/texmf-dist/doc/latex/acmart/sample-acmsmall.pdf b/Master/texmf-dist/doc/latex/acmart/sample-acmsmall.pdf
new file mode 100644
index 00000000000..986a7ec34e1
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/acmart/sample-acmsmall.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/acmart/sample-acmsmall.tex b/Master/texmf-dist/doc/latex/acmart/sample-acmsmall.tex
new file mode 100644
index 00000000000..35d9df11858
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/acmart/sample-acmsmall.tex
@@ -0,0 +1,147 @@
+\documentclass[format=acmsmall,natbib=true, review=false, screen=true]{acmart}
+
+\usepackage{booktabs} % For formal tables
+
+\usepackage[ruled]{algorithm2e} % For algorithms
+\renewcommand{\algorithmcfname}{ALGORITHM}
+\SetAlFnt{\small}
+\SetAlCapFnt{\small}
+\SetAlCapNameFnt{\small}
+\SetAlCapHSkip{0pt}
+\IncMargin{-\parindent}
+
+
+% Metadata Information
+\acmJournal{TWEB}
+\acmVolume{9}
+\acmNumber{4}
+\acmArticle{39}
+\acmYear{2010}
+\acmMonth{3}
+\copyrightyear{2009}
+%\acmArticleSeq{9}
+
+% Copyright
+%\setcopyright{acmcopyright}
+\setcopyright{acmlicensed}
+%\setcopyright{rightsretained}
+%\setcopyright{usgov}
+%\setcopyright{usgovmixed}
+%\setcopyright{cagov}
+%\setcopyright{cagovmixed}
+
+% DOI
+\acmDOI{0000001.0000001}
+
+% Paper history
+\received{February 2007}
+\received[revised]{March 2009}
+\received[accepted]{June 2009}
+
+
+% Document starts
+\begin{document}
+% Title portion. Note the short title for running heads
+\title[A Multifrequency MAC for Wireless Sensor]{A Multifrequency MAC
+ Specially Designed for Wireless Sensor Network Applications}
+\author{Gang Zhou}
+\affiliation{College of William and Mary}
+\author{Yafeng Wu}
+\affiliation{University of Virginia}
+\author{Ting Yan}
+\affiliation{Eaton Innovation Center}
+\author{Tian He}
+\affiliation{University of Minnesota}
+\author{Chengdu Huang}
+\author{John A. Stankovic}
+\author{Tarek F. Abdelzaher}
+\affiliation{University of Virginia}
+
+\begin{abstract}
+Multifrequency media access control has been well understood in
+general wireless ad hoc networks, while in wireless sensor networks,
+researchers still focus on single frequency solutions. In wireless
+sensor networks, each device is typically equipped with a single
+radio transceiver and applications adopt much smaller packet sizes
+compared to those in general wireless ad hoc networks. Hence, the
+multifrequency MAC protocols proposed for general wireless ad hoc
+networks are not suitable for wireless sensor network applications,
+which we further demonstrate through our simulation experiments. In
+this article, we propose MMSN, which takes advantage of
+multifrequency availability while, at the same time, takes into
+consideration the restrictions of wireless sensor networks. Through
+extensive experiments, MMSN exhibits the prominent ability to utilize
+parallel transmissions among neighboring nodes. When multiple physical
+frequencies are available, it also achieves increased energy
+efficiency, demonstrating the ability to work against radio
+interference and the tolerance to a wide range of measured time
+synchronization errors.
+\end{abstract}
+
+
+%
+% The code below should be generated by the tool at
+% http://dl.acm.org/ccs.cfm
+% Please copy and paste the code instead of the example below.
+%
+\begin{CCSXML}
+<ccs2012>
+ <concept>
+ <concept_id>10010520.10010553.10010562</concept_id>
+ <concept_desc>Computer systems organization~Embedded systems</concept_desc>
+ <concept_significance>500</concept_significance>
+ </concept>
+ <concept>
+ <concept_id>10010520.10010575.10010755</concept_id>
+ <concept_desc>Computer systems organization~Redundancy</concept_desc>
+ <concept_significance>300</concept_significance>
+ </concept>
+ <concept>
+ <concept_id>10010520.10010553.10010554</concept_id>
+ <concept_desc>Computer systems organization~Robotics</concept_desc>
+ <concept_significance>100</concept_significance>
+ </concept>
+ <concept>
+ <concept_id>10003033.10003083.10003095</concept_id>
+ <concept_desc>Networks~Network reliability</concept_desc>
+ <concept_significance>100</concept_significance>
+ </concept>
+</ccs2012>
+\end{CCSXML}
+
+\ccsdesc[500]{Computer systems organization~Embedded systems}
+\ccsdesc[300]{Computer systems organization~Redundancy}
+\ccsdesc{Computer systems organization~Robotics}
+\ccsdesc[100]{Networks~Network reliability}
+
+%
+% End generated code
+%
+
+% We no longer use \terms command
+%\terms{Design, Algorithms, Performance}
+
+\keywords{Wireless sensor networks, media access control,
+multi-channel, radio interference, time synchronization}
+
+
+\thanks{This work is supported by the National Science Foundation,
+ under grant CNS-0435060, grant CCR-0325197 and grant EN-CS-0329609.
+
+ Author's addresses: G. Zhou, Computer Science Department, College of
+ William and Mary; Y. Wu {and} J. A. Stankovic, Computer Science
+ Department, University of Virginia; T. Yan, Eaton Innovation Center;
+ T. He, Computer Science Department, University of Minnesota; C.
+ Huang, Google; T. F. Abdelzaher, (Current address) NASA Ames
+ Research Center, Moffett Field, California 94035.}
+
+
+\maketitle
+
+% The default list of authors is too long for headers}
+\renewcommand{\shortauthors}{G. Zhou et. al.}
+
+\input{samplebody-journals}
+
+
+\end{document}
diff --git a/Master/texmf-dist/doc/latex/acmart/sample-acmtog.pdf b/Master/texmf-dist/doc/latex/acmart/sample-acmtog.pdf
new file mode 100644
index 00000000000..afbcc2bc430
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/acmart/sample-acmtog.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/acmart/sample-acmtog.tex b/Master/texmf-dist/doc/latex/acmart/sample-acmtog.tex
new file mode 100644
index 00000000000..b8f60fa2574
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/acmart/sample-acmtog.tex
@@ -0,0 +1,147 @@
+\documentclass[acmtog, natbib, authorversion]{acmart}
+
+\usepackage{booktabs} % For formal tables
+
+
+\usepackage[ruled]{algorithm2e} % For algorithms
+\renewcommand{\algorithmcfname}{ALGORITHM}
+\SetAlFnt{\small}
+\SetAlCapFnt{\small}
+\SetAlCapNameFnt{\small}
+\SetAlCapHSkip{0pt}
+\IncMargin{-\parindent}
+
+% Metadata Information
+\acmJournal{TOG}
+\acmVolume{9}
+\acmNumber{4}
+\acmArticle{39}
+\acmYear{2010}
+\acmMonth{3}
+
+% Copyright
+%\setcopyright{acmcopyright}
+%\setcopyright{acmlicensed}
+%\setcopyright{rightsretained}
+%\setcopyright{usgov}
+\setcopyright{usgovmixed}
+%\setcopyright{cagov}
+%\setcopyright{cagovmixed}
+
+% DOI
+\acmDOI{0000001.0000001_2}
+
+% Paper history
+\received{February 2007}
+\received{March 2009}
+\received[final version]{June 2009}
+\received[accepted]{July 2009}
+
+
+% Document starts
+\begin{document}
+% Title portion
+\title{A Multifrequency MAC Specially Designed for Wireless Sensor
+ Network Applications}
+\author{Gang Zhou}
+\email{zhou@uva.edu}
+\author{Yafeng Wu}
+\email{ywu@uva.edu}
+\affiliation{University of Virginia}
+\author{Ting Yan}
+\affiliation{Eaton Innovation Center}
+\author{Tian He}
+\affiliation{University of Minnesota}
+\author{Chengdu Huang}
+\affiliation{Google}
+\author{John A. Stankovic}
+\affiliation{University of Virginia}
+\author{Tarek F. Abdelzaher}
+\affiliation{University of Illinois at Urbana-Champaign}
+
+\begin{abstract}
+Multifrequency media access control has been well understood in
+general wireless ad hoc networks, while in wireless sensor networks,
+researchers still focus on single frequency solutions. In wireless
+sensor networks, each device is typically equipped with a single
+radio transceiver and applications adopt much smaller packet sizes
+compared to those in general wireless ad hoc networks. Hence, the
+multifrequency MAC protocols proposed for general wireless ad hoc
+networks are not suitable for wireless sensor network applications,
+which we further demonstrate through our simulation experiments. In
+this article, we propose MMSN, which takes advantage of
+multifrequency availability while, at the same time, takes into
+consideration the restrictions of wireless sensor networks. Through
+extensive experiments, MMSN exhibits the prominent ability to utilize
+parallel transmissions among neighboring nodes. When multiple physical
+frequencies are available, it also achieves increased energy
+efficiency, demonstrating the ability to work against radio
+interference and the tolerance to a wide range of measured time
+synchronization errors.
+\end{abstract}
+
+
+%
+% The code below should be generated by the tool at
+% http://dl.acm.org/ccs.cfm
+% Please copy and paste the code instead of the example below.
+%
+\begin{CCSXML}
+<ccs2012>
+ <concept>
+ <concept_id>10010520.10010553.10010562</concept_id>
+ <concept_desc>Computer systems organization~Embedded systems</concept_desc>
+ <concept_significance>500</concept_significance>
+ </concept>
+ <concept>
+ <concept_id>10010520.10010575.10010755</concept_id>
+ <concept_desc>Computer systems organization~Redundancy</concept_desc>
+ <concept_significance>300</concept_significance>
+ </concept>
+ <concept>
+ <concept_id>10010520.10010553.10010554</concept_id>
+ <concept_desc>Computer systems organization~Robotics</concept_desc>
+ <concept_significance>100</concept_significance>
+ </concept>
+ <concept>
+ <concept_id>10003033.10003083.10003095</concept_id>
+ <concept_desc>Networks~Network reliability</concept_desc>
+ <concept_significance>100</concept_significance>
+ </concept>
+</ccs2012>
+\end{CCSXML}
+
+\ccsdesc[500]{Computer systems organization~Embedded systems}
+\ccsdesc[300]{Computer systems organization~Redundancy}
+\ccsdesc{Computer systems organization~Robotics}
+\ccsdesc[100]{Networks~Network reliability}
+
+%
+% End generated code
+%
+
+% We no longer use \terms command
+\terms{Design, Algorithms, Performance}
+
+\keywords{Wireless sensor networks, media access control,
+multi-channel, radio interference, time synchronization}
+
+
+\thanks{This work is supported by the National Science Foundation,
+ under grant CNS-0435060, grant CCR-0325197 and grant EN-CS-0329609.
+
+ Author's addresses: G. Zhou, Computer Science Department, College of
+ William and Mary; Y. Wu {and} J. A. Stankovic, Computer Science
+ Department, University of Virginia; T. Yan, Eaton Innovation Center;
+ T. He, Computer Science Department, University of Minnesota; C.
+ Huang, Google; T. F. Abdelzaher, (Current address) NASA Ames
+ Research Center, Moffett Field, California 94035.}
+
+
+\maketitle
+
+\input{samplebody-journals}
+
+
+
+\end{document}
diff --git a/Master/texmf-dist/doc/latex/acmart/sample-bibliography.bib b/Master/texmf-dist/doc/latex/acmart/sample-bibliography.bib
new file mode 100644
index 00000000000..4f9e1774810
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/acmart/sample-bibliography.bib
@@ -0,0 +1,1550 @@
+%%% ====================================================================
+%%% BibTeX-file{
+%%% author = "Gerry Murray",
+%%% version = "1.2",
+%%% date = "2 April 2012",
+%%% filename = "acmsmall-sample-bibfile.bib",
+%%% address = "ACM, NY",
+%%% email = "murray at hq.acm.org",
+%%% codetable = "ISO/ASCII",
+%%% keywords = "ACM Reference Format, bibliography, citation, references",
+%%% supported = "yes",
+%%% docstring = "This BibTeX database file contains 'bibdata' entries
+%%% that 'match' the examples provided in the Specifications Document
+%%% AND, also, 'legacy'-type bibs. It should assist authors in
+%%% choosing the 'correct' at-bibtype and necessary bib-fields
+%%% so as to obtain the appropriate ACM Reference Format output.
+%%% It also contains many 'Standard Abbreviations'. "
+%%% }
+%%% ====================================================================
+
+% Journals
+
+% First the Full Name is given, then the abbreviation used in the AMS Math
+% Reviews, with an indication if it could not be found there.
+% Note the 2nd overwrites the 1st, so swap them if you want the full name.
+
+ %{AMS}
+ @String{AMSTrans = "American Mathematical Society Translations" }
+ @String{AMSTrans = "Amer. Math. Soc. Transl." }
+ @String{BullAMS = "Bulletin of the American Mathematical Society" }
+ @String{BullAMS = "Bull. Amer. Math. Soc." }
+ @String{ProcAMS = "Proceedings of the American Mathematical Society" }
+ @String{ProcAMS = "Proc. Amer. Math. Soc." }
+ @String{TransAMS = "Transactions of the American Mathematical Society" }
+ @String{TransAMS = "Trans. Amer. Math. Soc." }
+
+ %ACM
+ @String{CACM = "Communications of the {ACM}" }
+ @String{CACM = "Commun. {ACM}" }
+ @String{CompServ = "Comput. Surveys" }
+ @String{JACM = "J. ACM" }
+ @String{ACMMathSoft = "{ACM} Transactions on Mathematical Software" }
+ @String{ACMMathSoft = "{ACM} Trans. Math. Software" }
+ @String{SIGNUM = "{ACM} {SIGNUM} Newsletter" }
+ @String{SIGNUM = "{ACM} {SIGNUM} Newslett." }
+
+ @String{AmerSocio = "American Journal of Sociology" }
+ @String{AmerStatAssoc = "Journal of the American Statistical Association" }
+ @String{AmerStatAssoc = "J. Amer. Statist. Assoc." }
+ @String{ApplMathComp = "Applied Mathematics and Computation" }
+ @String{ApplMathComp = "Appl. Math. Comput." }
+ @String{AmerMathMonthly = "American Mathematical Monthly" }
+ @String{AmerMathMonthly = "Amer. Math. Monthly" }
+ @String{BIT = "{BIT}" }
+ @String{BritStatPsych = "British Journal of Mathematical and Statistical
+ Psychology" }
+ @String{BritStatPsych = "Brit. J. Math. Statist. Psych." }
+ @String{CanMathBull = "Canadian Mathematical Bulletin" }
+ @String{CanMathBull = "Canad. Math. Bull." }
+ @String{CompApplMath = "Journal of Computational and Applied Mathematics" }
+ @String{CompApplMath = "J. Comput. Appl. Math." }
+ @String{CompPhys = "Journal of Computational Physics" }
+ @String{CompPhys = "J. Comput. Phys." }
+ @String{CompStruct = "Computers and Structures" }
+ @String{CompStruct = "Comput. \& Structures" }
+ @String{CompJour = "The Computer Journal" }
+ @String{CompJour = "Comput. J." }
+ @String{CompSysSci = "Journal of Computer and System Sciences" }
+ @String{CompSysSci = "J. Comput. System Sci." }
+ @String{Computing = "Computing" }
+ @String{ContempMath = "Contemporary Mathematics" }
+ @String{ContempMath = "Contemp. Math." }
+ @String{Crelle = "Crelle's Journal" }
+ @String{GiornaleMath = "Giornale di Mathematiche" }
+ @String{GiornaleMath = "Giorn. Mat." } % didn't find in AMS MR., ibid.
+
+ %IEEE
+ @String{Computer = "{IEEE} Computer" }
+ @String{IEEETransComp = "{IEEE} Transactions on Computers" }
+ @String{IEEETransComp = "{IEEE} Trans. Comput." }
+ @String{IEEETransAC = "{IEEE} Transactions on Automatic Control" }
+ @String{IEEETransAC = "{IEEE} Trans. Automat. Control" }
+ @String{IEEESpec = "{IEEE} Spectrum" } % didn't find in AMS MR
+ @String{ProcIEEE = "Proceedings of the {IEEE}" }
+ @String{ProcIEEE = "Proc. {IEEE}" } % didn't find in AMS MR
+ @String{IEEETransAeroElec = "{IEEE} Transactions on Aerospace and Electronic
+ Systems" }
+ @String{IEEETransAeroElec = "{IEEE} Trans. Aerospace Electron. Systems" }
+
+ @String{IMANumerAna = "{IMA} Journal of Numerical Analysis" }
+ @String{IMANumerAna = "{IMA} J. Numer. Anal." }
+ @String{InfProcLet = "Information Processing Letters" }
+ @String{InfProcLet = "Inform. Process. Lett." }
+ @String{InstMathApp = "Journal of the Institute of Mathematics and
+ its Applications" }
+ @String{InstMathApp = "J. Inst. Math. Appl." }
+ @String{IntControl = "International Journal of Control" }
+ @String{IntControl = "Internat. J. Control" }
+ @String{IntNumerEng = "International Journal for Numerical Methods in
+ Engineering" }
+ @String{IntNumerEng = "Internat. J. Numer. Methods Engrg." }
+ @String{IntSuper = "International Journal of Supercomputing Applications" }
+ @String{IntSuper = "Internat. J. Supercomputing Applic." } % didn't find
+%% in AMS MR
+ @String{Kibernetika = "Kibernetika" }
+ @String{JResNatBurStand = "Journal of Research of the National Bureau
+ of Standards" }
+ @String{JResNatBurStand = "J. Res. Nat. Bur. Standards" }
+ @String{LinAlgApp = "Linear Algebra and its Applications" }
+ @String{LinAlgApp = "Linear Algebra Appl." }
+ @String{MathAnaAppl = "Journal of Mathematical Analysis and Applications" }
+ @String{MathAnaAppl = "J. Math. Anal. Appl." }
+ @String{MathAnnalen = "Mathematische Annalen" }
+ @String{MathAnnalen = "Math. Ann." }
+ @String{MathPhys = "Journal of Mathematical Physics" }
+ @String{MathPhys = "J. Math. Phys." }
+ @String{MathComp = "Mathematics of Computation" }
+ @String{MathComp = "Math. Comp." }
+ @String{MathScand = "Mathematica Scandinavica" }
+ @String{MathScand = "Math. Scand." }
+ @String{TablesAidsComp = "Mathematical Tables and Other Aids to Computation" }
+ @String{TablesAidsComp = "Math. Tables Aids Comput." }
+ @String{NumerMath = "Numerische Mathematik" }
+ @String{NumerMath = "Numer. Math." }
+ @String{PacificMath = "Pacific Journal of Mathematics" }
+ @String{PacificMath = "Pacific J. Math." }
+ @String{ParDistComp = "Journal of Parallel and Distributed Computing" }
+ @String{ParDistComp = "J. Parallel and Distrib. Comput." } % didn't find
+%% in AMS MR
+ @String{ParComputing = "Parallel Computing" }
+ @String{ParComputing = "Parallel Comput." }
+ @String{PhilMag = "Philosophical Magazine" }
+ @String{PhilMag = "Philos. Mag." }
+ @String{ProcNAS = "Proceedings of the National Academy of Sciences
+ of the USA" }
+ @String{ProcNAS = "Proc. Nat. Acad. Sci. U. S. A." }
+ @String{Psychometrika = "Psychometrika" }
+ @String{QuartMath = "Quarterly Journal of Mathematics, Oxford, Series (2)" }
+ @String{QuartMath = "Quart. J. Math. Oxford Ser. (2)" }
+ @String{QuartApplMath = "Quarterly of Applied Mathematics" }
+ @String{QuartApplMath = "Quart. Appl. Math." }
+ @String{RevueInstStat = "Review of the International Statisical Institute" }
+ @String{RevueInstStat = "Rev. Inst. Internat. Statist." }
+
+ %SIAM
+ @String{JSIAM = "Journal of the Society for Industrial and Applied
+ Mathematics" }
+ @String{JSIAM = "J. Soc. Indust. Appl. Math." }
+ @String{JSIAMB = "Journal of the Society for Industrial and Applied
+ Mathematics, Series B, Numerical Analysis" }
+ @String{JSIAMB = "J. Soc. Indust. Appl. Math. Ser. B Numer. Anal." }
+ @String{SIAMAlgMeth = "{SIAM} Journal on Algebraic and Discrete Methods" }
+ @String{SIAMAlgMeth = "{SIAM} J. Algebraic Discrete Methods" }
+ @String{SIAMAppMath = "{SIAM} Journal on Applied Mathematics" }
+ @String{SIAMAppMath = "{SIAM} J. Appl. Math." }
+ @String{SIAMComp = "{SIAM} Journal on Computing" }
+ @String{SIAMComp = "{SIAM} J. Comput." }
+ @String{SIAMMatrix = "{SIAM} Journal on Matrix Analysis and Applications" }
+ @String{SIAMMatrix = "{SIAM} J. Matrix Anal. Appl." }
+ @String{SIAMNumAnal = "{SIAM} Journal on Numerical Analysis" }
+ @String{SIAMNumAnal = "{SIAM} J. Numer. Anal." }
+ @String{SIAMReview = "{SIAM} Review" }
+ @String{SIAMReview = "{SIAM} Rev." }
+ @String{SIAMSciStat = "{SIAM} Journal on Scientific and Statistical
+ Computing" }
+ @String{SIAMSciStat = "{SIAM} J. Sci. Statist. Comput." }
+
+ @String{SoftPracExp = "Software Practice and Experience" }
+ @String{SoftPracExp = "Software Prac. Experience" } % didn't find in AMS MR
+ @String{StatScience = "Statistical Science" }
+ @String{StatScience = "Statist. Sci." }
+ @String{Techno = "Technometrics" }
+ @String{USSRCompMathPhys = "{USSR} Computational Mathematics and Mathematical
+ Physics" }
+ @String{USSRCompMathPhys = "{U. S. S. R.} Comput. Math. and Math. Phys." }
+ @String{VLSICompSys = "Journal of {VLSI} and Computer Systems" }
+ @String{VLSICompSys = "J. {VLSI} Comput. Syst." }
+ @String{ZAngewMathMech = "Zeitschrift fur Angewandte Mathematik und
+ Mechanik" }
+ @String{ZAngewMathMech = "Z. Angew. Math. Mech." }
+ @String{ZAngewMathPhys = "Zeitschrift fur Angewandte Mathematik und Physik" }
+ @String{ZAngewMathPhys = "Z. Angew. Math. Phys." }
+
+% Publishers % ================================================= |
+
+ @String{Academic = "Academic Press" }
+ @String{ACMPress = "{ACM} Press" }
+ @String{AdamHilger = "Adam Hilger" }
+ @String{AddisonWesley = "Addison-Wesley" }
+ @String{AllynBacon = "Allyn and Bacon" }
+ @String{AMS = "American Mathematical Society" }
+ @String{Birkhauser = "Birkha{\"u}ser" }
+ @String{CambridgePress = "Cambridge University Press" }
+ @String{Chelsea = "Chelsea" }
+ @String{ClaredonPress = "Claredon Press" }
+ @String{DoverPub = "Dover Publications" }
+ @String{Eyolles = "Eyolles" }
+ @String{HoltRinehartWinston = "Holt, Rinehart and Winston" }
+ @String{Interscience = "Interscience" }
+ @String{JohnsHopkinsPress = "The Johns Hopkins University Press" }
+ @String{JohnWileySons = "John Wiley and Sons" }
+ @String{Macmillan = "Macmillan" }
+ @String{MathWorks = "The Math Works Inc." }
+ @String{McGrawHill = "McGraw-Hill" }
+ @String{NatBurStd = "National Bureau of Standards" }
+ @String{NorthHolland = "North-Holland" }
+ @String{OxfordPress = "Oxford University Press" } %address Oxford or London?
+ @String{PergamonPress = "Pergamon Press" }
+ @String{PlenumPress = "Plenum Press" }
+ @String{PrenticeHall = "Prentice-Hall" }
+ @String{SIAMPub = "{SIAM} Publications" }
+ @String{Springer = "Springer-Verlag" }
+ @String{TexasPress = "University of Texas Press" }
+ @String{VanNostrand = "Van Nostrand" }
+ @String{WHFreeman = "W. H. Freeman and Co." }
+
+%Entries
+
+@Article{Abril07,
+ author = "Patricia S. Abril and Robert Plant",
+ title = "The patent holder's dilemma: Buy, sell, or troll?",
+ journal = "Communications of the ACM",
+ volume = "50",
+ number = "1",
+ month = jan,
+ year = "2007",
+ pages = "36--44",
+ doi = "10.1145/1188913.1188915",
+ url = "http://doi.acm.org/10.1145/1219092.1219093",
+ note = "",
+}
+
+@Article{Cohen07,
+ author = "Sarah Cohen and Werner Nutt and Yehoshua Sagic",
+ title = "Deciding equivalances among conjunctive aggregate queries",
+ journal = JACM,
+ articleno = "5",
+ numpages = "50",
+ volume = "54",
+ number = "2",
+ month = apr,
+ year = "2007",
+ doi = "10.1145/1219092.1219093",
+ url = "http://doi.acm.org/10.1145/1219092.1219093",
+ acmid = "1219093",
+ note = "",
+}
+
+
+@article{JCohen96,
+ key = "Cohen",
+ editor = "Jacques Cohen",
+ title = "Special Issue: Digital Libraries",
+ journal = CACM,
+ volume = "39",
+ number = "11",
+ month = nov,
+ year = "1996",
+ author = "",
+ publisher = "",
+ chapter = "",
+ pages = "",
+ series = "",
+ address = "",
+ edition = "",
+ note = "",
+}
+
+
+@Book{Kosiur01,
+ author = "David Kosiur",
+ title = "Understanding Policy-Based Networking",
+ publisher = "Wiley",
+ year = "2001",
+ address = "New York, NY",
+ edition = "2nd.",
+ editor = "",
+ volume = "",
+ number = "",
+ series = "",
+ month = "",
+ note = "",
+}
+
+
+@Book{Harel79,
+ author = "David Harel",
+ year = "1979",
+ title = "First-Order Dynamic Logic",
+ series = "Lecture Notes in Computer Science",
+ volume = "68",
+ address = "New York, NY",
+ publisher = "Springer-Verlag",
+ doi = "10.1007/3-540-09237-4",
+ url = "http://dx.doi.org/10.1007/3-540-09237-4",
+ editor = "",
+ number = "",
+ month = "",
+ note = "",
+}
+
+
+@Inbook{Editor00,
+ author = "",
+ editor = "Ian Editor",
+ title = "The title of book one",
+ subtitle = "The book subtitle",
+ series = "The name of the series one",
+ year = "2007",
+ volume = "9",
+ address = "Chicago",
+ edition = "1st.",
+ publisher = "University of Chicago Press",
+ doi = "10.1007/3-540-09237-4",
+ url = "http://dx.doi.org/10.1007/3-540-09456-9",
+ chapter = "",
+ pages = "",
+ number = "",
+ type = "",
+ month = "",
+ note = "",
+}
+
+%
+@InBook{Editor00a,
+ author = "",
+ editor = "Ian Editor",
+ title = "The title of book two",
+ subtitle = "The book subtitle",
+ series = "The name of the series two",
+ year = "2008",
+ address = "Chicago",
+ edition = "2nd.",
+ publisher = "University of Chicago Press",
+ doi = "10.1007/3-540-09237-4",
+ url = "http://dx.doi.org/10.1007/3-540-09456-9",
+ volume = "",
+ chapter = "100",
+ pages = "",
+ number = "",
+ type = "",
+ month = "",
+ note = "",
+}
+
+
+% incollection (has an editor, title, and possibly a booktitle)
+@Incollection{Spector90,
+ author = "Asad Z. Spector",
+ title = "Achieving application requirements",
+ booktitle = "Distributed Systems",
+ publisher = "ACM Press",
+ address = "New York, NY",
+ year = "1990",
+ edition = "2nd.",
+ chapter = "",
+ editor = "Sape Mullender",
+ pages = "19--33",
+ doi = "10.1145/90417.90738",
+ url = "http://doi.acm.org/10.1145/90417.90738",
+ volume = "",
+ number = "",
+ series = "",
+ type = "",
+ month = "",
+ note = "",
+}
+
+
+% incollection (has an editor, title, and possibly a booktitle)
+@Incollection{Douglass98,
+ author = "Bruce P. Douglass and David Harel and Mark B. Trakhtenbrot",
+ title = "Statecarts in use: structured analysis and object-orientation",
+ series = "Lecture Notes in Computer Science",
+ booktitle = "Lectures on Embedded Systems",
+ publisher = "Springer-Verlag",
+ address = "London",
+ volume = "1494",
+ year = "1998",
+ chapter = "",
+ editor = "Grzegorz Rozenberg and Frits W. Vaandrager",
+ pages = "368--394",
+ doi = "10.1007/3-540-65193-4_29",
+ url = "http://dx.doi.org/10.1007/3-540-65193-4_29",
+ edition = "",
+ number = "",
+ type = "",
+ month = "",
+ note = "",
+}
+
+
+@Book{Knuth97,
+ author = "Donald E. Knuth",
+ title = "The Art of Computer Programming, Vol. 1: Fundamental Algorithms (3rd. ed.)",
+ publisher = "Addison Wesley Longman Publishing Co., Inc.",
+ year = "1997",
+ address = "",
+ edition = "",
+ editor = "",
+ volume = "",
+ number = "",
+ series = "",
+ month = "",
+ note = "",
+}
+
+
+@Book{Knuth98,
+ author = "Donald E. Knuth",
+ year = "1998",
+ title = "The Art of Computer Programming",
+ series = "Fundamental Algorithms",
+ volume = "1",
+ edition = "3rd",
+ address = "",
+ publisher = "Addison Wesley Longman Publishing Co., Inc.",
+ doi = "",
+ url = "",
+ editor = "",
+ number = "",
+ month = "",
+ note = "(book)",
+}
+
+%Inbook{Knuth97,
+% author = "Donald E. Knuth",
+% title = "The Art of Computer Programming",
+% booktitle = "the booktitle",
+% edition = "3",
+% volume = "1",
+% year = "1997",
+% publisher = "Addison Wesley Longman Publishing Co., Inc.",
+% editor = "",
+% number = "",
+% series = "Fundamental Algorithms",
+% type = "",
+% chapter = "",
+% pages = "",
+% address = "",
+% month = "",
+% note = "(inbook)",
+%}
+
+%INBOOK{DK:73-inbook-full,
+% author = "Donald E. Knuth",
+% title = "Fundamental Algorithms (inbook w series)",
+% volume = 1,
+% series = "The Art of Computer Programming",
+% publisher = "Addison-Wesley",
+% address = "Reading, Massachusetts",
+% edition = "Second",
+% month = "10~" # jan,
+% year = "1973",
+% type = "Section",
+% chapter = "1.2",
+% pages = "10--119",
+% note = "Full INBOOK entry (w series)",
+%}
+
+%INcollection{DK:74-incoll,
+% author = "Donald E. Knuth",
+% title = "Fundamental Algorithms (incoll)",
+% volume = 1,
+% booktitle = "The Art of Computer Programming",
+% publisher = "Addison-Wesley",
+% address = "Reading, Massachusetts",
+% month = "10~" # jan,
+% year = "1974",
+% pages = "10--119",
+% editor = "Bernard Rous",
+% note = "This is a full incoll entry with an editor",
+%}
+
+%INcollection{DK:75-incollws,
+% author = "Donald E. Knuth",
+% title = "Fundamental Algorithms (incoll w series)",
+% volume = 1,
+% booktitle = "The Art of Computer Programming",
+% series = "The Art of Computer Programming",
+% publisher = "Addison-Wesley",
+% address = "Reading, Massachusetts",
+% month = "10~" # jan,
+% year = "1975",
+% pages = "10--119",
+% editor = "Bernard Rous",
+% note = "This is a full incoll entry with an editor and series",
+%}
+
+
+@incollection{GM05,
+Author= "Dan Geiger and Christopher Meek",
+Title= "Structured Variational Inference Procedures and their Realizations (as incol)",
+Year= 2005,
+Booktitle="Proceedings of Tenth International Workshop on Artificial Intelligence and Statistics, {\rm The Barbados}",
+Publisher="The Society for Artificial Intelligence and Statistics",
+Month= jan,
+Editors= "Z. Ghahramani and R. Cowell"
+}
+
+@Inproceedings{Smith10,
+ author = "Stan W. Smith",
+ title = "An experiment in bibliographic mark-up: Parsing metadata for XML export",
+ booktitle = "Proceedings of the 3rd. annual workshop on Librarians and Computers",
+ series = "LAC '10",
+ editor = "Reginald N. Smythe and Alexander Noble",
+ volume = "3",
+ year = "2010",
+ publisher = "Paparazzi Press",
+ address = "Milan Italy",
+ pages = "422--431",
+ doi = "99.9999/woot07-S422",
+ url = "http://dx.doi.org/99.0000/woot07-S422",
+ number = "",
+ month = "",
+ organization = "",
+ note = "",
+}
+
+@Inproceedings{VanGundy07,
+ author = "Matthew Van Gundy and Davide Balzarotti and Giovanni Vigna",
+ year = "2007",
+ title = "Catch me, if you can: Evading network signatures with web-based polymorphic worms",
+ booktitle = "Proceedings of the first USENIX workshop on Offensive Technologies",
+ series = "WOOT '07",
+ publisher = "USENIX Association",
+ address = "Berkley, CA",
+ articleno = "7",
+ numpages = "9",
+ editor = "",
+ volume = "",
+ number = "",
+ pages = "",
+ month = "",
+ organization = "",
+ note = "",
+}
+
+@Inproceedings{VanGundy08,
+ author = "Matthew Van Gundy and Davide Balzarotti and Giovanni Vigna",
+ year = "2008",
+ title = "Catch me, if you can: Evading network signatures with web-based polymorphic worms",
+ booktitle = "Proceedings of the first USENIX workshop on Offensive Technologies",
+ series = "WOOT '08",
+ publisher = "USENIX Association",
+ address = "Berkley, CA",
+ articleno = "7",
+ numpages = "2",
+ editor = "",
+ volume = "",
+ number = "",
+ pages = "99-100",
+ month = "",
+ organization = "",
+ note = "",
+}
+
+@Inproceedings{VanGundy09,
+ author = "Matthew Van Gundy and Davide Balzarotti and Giovanni Vigna",
+ year = "2009",
+ title = "Catch me, if you can: Evading network signatures with web-based polymorphic worms",
+ booktitle = "Proceedings of the first USENIX workshop on Offensive Technologies",
+ series = "WOOT '09",
+ publisher = "USENIX Association",
+ address = "Berkley, CA",
+ articleno = "",
+ numpages = "",
+ editor = "",
+ volume = "",
+ number = "",
+ pages = "90--100",
+ month = "",
+ organization = "",
+ note = "",
+}
+
+@Inproceedings{Andler79,
+ author = "Sten Andler",
+ title = "Predicate Path expressions",
+ booktitle = "Proceedings of the 6th. ACM SIGACT-SIGPLAN symposium on Principles of Programming Languages",
+ series = "POPL '79",
+ year = "1979",
+ publisher = "ACM Press",
+ address = "New York, NY",
+ pages = "226--236",
+ doi = "10.1145/567752.567774",
+ url = "http://doi.acm.org/10.1145/567752.567774",
+ editor = "",
+ volume = "",
+ number = "",
+ month = "",
+ organization = "",
+ note = "",
+}
+
+@Techreport{Harel78,
+ author = "David Harel",
+ year = "1978",
+ title = "LOGICS of Programs: AXIOMATICS and DESCRIPTIVE POWER",
+ institution = "Massachusetts Institute of Technology",
+ type = "MIT Research Lab Technical Report",
+ number = "TR-200",
+ address = "Cambridge, MA",
+ month = "",
+ note = "",
+}
+
+@MASTERSTHESIS{anisi03,
+author = {David A. Anisi},
+title = {Optimal Motion Control of a Ground Vehicle},
+school = {Royal Institute of Technology (KTH), Stockholm, Sweden},
+intitution = {FOI-R-0961-SE, Swedish Defence Research Agency (FOI)},
+year = {2003},
+}
+
+
+@Phdthesis{Clarkson85,
+ author = "Kenneth L. Clarkson",
+ year = "1985",
+ title = "Algorithms for Closest-Point Problems (Computational Geometry)",
+ school = "Stanford University",
+ address = "Palo Alto, CA",
+ note = "UMI Order Number: AAT 8506171",
+ type = "",
+ month = "",
+}
+
+
+@misc{Thornburg01,
+ author = "Harry Thornburg",
+ year = "2001",
+ title = "Introduction to Bayesian Statistics",
+ note = "",
+ url = "http://ccrma.stanford.edu/~jos/bayes/bayes.html",
+ howpublished = "",
+ month = mar,
+ lastaccessed = "March 2, 2005",
+}
+
+
+@misc{Ablamowicz07,
+ author = "Rafal Ablamowicz and Bertfried Fauser",
+ year = "2007",
+ title = "CLIFFORD: a Maple 11 Package for Clifford Algebra Computations, version 11",
+ note = "",
+ url = "http://math.tntech.edu/rafal/cliff11/index.html",
+ howpublished = "",
+ month = "",
+ lastaccessed = "February 28, 2008",
+}
+
+
+@misc{Poker06,
+ author = "Poker-Edge.Com",
+ year = "2006",
+ month = mar,
+ title = "Stats and Analysis",
+ lastaccessed = "June 7, 2006",
+ url = "http://www.poker-edge.com/stats.php",
+ howpublished = "",
+}
+
+@misc{Obama08,
+ author = "Barack Obama",
+ year = "2008",
+ title = "A more perfect union",
+ howpublished = "Video",
+ day = "5",
+ url = "http://video.google.com/videoplay?docid=6528042696351994555",
+ month = mar,
+ lastaccessed = "March 21, 2008",
+ note = "",
+}
+
+@misc{JoeScientist001,
+ author = "Joseph Scientist",
+ year = "2009",
+ title = "The fountain of youth",
+ note = "Patent No. 12345, Filed July 1st., 2008, Issued Aug. 9th., 2009",
+ url = "",
+ howpublished = "",
+ month = aug,
+ lastaccessed = "",
+}
+
+
+@Inproceedings{Novak03,
+ author = "Dave Novak",
+ title = "Solder man",
+ booktitle = "ACM SIGGRAPH 2003 Video Review on Animation theater Program: Part I - Vol. 145 (July 27--27, 2003)",
+ year = "2003",
+ publisher = "ACM Press",
+ address = "New York, NY",
+ pages = "4",
+ month = "March 21, 2008",
+ doi = "99.9999/woot07-S422",
+ url = "http://video.google.com/videoplay?docid=6528042696351994555",
+ note = "",
+ howpublished = "Video",
+ editor = "",
+ volume = "",
+ number = "",
+ series = "",
+ organization = "",
+}
+
+
+@article{Lee05,
+ author = "Newton Lee",
+ year = "2005",
+ title = "Interview with Bill Kinder: January 13, 2005",
+ journal = "Comput. Entertain.",
+ articleno = "4",
+ volume = "3",
+ number = "1",
+ month = "Jan.-March",
+ doi = "10.1145/1057270.1057278",
+ url = "http://doi.acm.org/10.1145/1057270.1057278",
+ howpublished = "Video",
+ note = "",
+}
+
+@article{Rous08,
+ author = "Bernard Rous",
+ year = "2008",
+ title = "The Enabling of Digital Libraries",
+ journal = "Digital Libraries",
+ volume = "12",
+ number = "3",
+ month = jul,
+ articleno = "5",
+ doi = "",
+ url = "",
+ howpublished = "",
+ note = "To appear",
+}
+
+@article{384253,
+ author = {Werneck,, Renato and Setubal,, Jo\~{a}o and da Conceic\~{a}o,, Arlindo},
+ title = {(old) Finding minimum congestion spanning trees},
+ journal = {J. Exp. Algorithmics},
+ volume = {5},
+ year = {2000},
+ issn = {1084-6654},
+ pages = {11},
+ doi = {http://doi.acm.org/10.1145/351827.384253},
+ publisher = {ACM},
+ address = {New York, NY, USA},
+ }
+
+
+@article{Werneck:2000:FMC:351827.384253,
+ author = {Werneck, Renato and Setubal, Jo\~{a}o and da Conceic\~{a}o, Arlindo},
+ title = {(new) Finding minimum congestion spanning trees},
+ journal = {J. Exp. Algorithmics},
+ volume = {5},
+ month = dec,
+ year = {2000},
+ issn = {1084-6654},
+ articleno = {11},
+ url = {http://portal.acm.org/citation.cfm?id=351827.384253},
+ doi = {10.1145/351827.384253},
+ acmid = {384253},
+ publisher = {ACM},
+ address = {New York, NY, USA},
+}
+
+@article{1555162,
+ author = {Conti, Mauro and Di Pietro, Roberto and Mancini, Luigi V. and Mei, Alessandro},
+ title = {(old) Distributed data source verification in wireless sensor networks},
+ journal = {Inf. Fusion},
+ volume = {10},
+ number = {4},
+ year = {2009},
+ issn = {1566-2535},
+ pages = {342--353},
+ doi = {http://dx.doi.org/10.1016/j.inffus.2009.01.002},
+ publisher = {Elsevier Science Publishers B. V.},
+ address = {Amsterdam, The Netherlands, The Netherlands},
+ }
+
+@article{Conti:2009:DDS:1555009.1555162,
+ author = {Conti, Mauro and Di Pietro, Roberto and Mancini, Luigi V. and Mei, Alessandro},
+ title = {(new) Distributed data source verification in wireless sensor networks},
+ journal = {Inf. Fusion},
+ volume = {10},
+ number = {4},
+ month = oct,
+ year = {2009},
+ issn = {1566-2535},
+ pages = {342--353},
+ numpages = {12},
+ url = {http://portal.acm.org/citation.cfm?id=1555009.1555162},
+ doi = {10.1016/j.inffus.2009.01.002},
+ acmid = {1555162},
+ publisher = {Elsevier Science Publishers B. V.},
+ address = {Amsterdam, The Netherlands, The Netherlands},
+ keywords = {Clone detection, Distributed protocol, Securing data fusion, Wireless sensor networks},
+}
+
+@inproceedings{Li:2008:PUC:1358628.1358946,
+ author = {Li, Cheng-Lun and Buyuktur, Ayse G. and Hutchful, David K. and Sant, Natasha B. and Nainwal, Satyendra K.},
+ title = {Portalis: using competitive online interactions to support aid initiatives for the homeless},
+ booktitle = {CHI '08 extended abstracts on Human factors in computing systems},
+ year = {2008},
+ isbn = {978-1-60558-012-X},
+ location = {Florence, Italy},
+ pages = {3873--3878},
+ numpages = {6},
+ url = {http://portal.acm.org/citation.cfm?id=1358628.1358946},
+ doi = {10.1145/1358628.1358946},
+ acmid = {1358946},
+ publisher = {ACM},
+ address = {New York, NY, USA},
+ keywords = {cscw, distributed knowledge acquisition, incentive design, online games, recommender systems, reputation systems, user studies, virtual community},
+}
+
+@book{Hollis:1999:VBD:519964,
+ author = {Hollis, Billy S.},
+ title = {Visual Basic 6: Design, Specification, and Objects with Other},
+ year = {1999},
+ isbn = {0130850845},
+ edition = {1st},
+ publisher = {Prentice Hall PTR},
+ address = {Upper Saddle River, NJ, USA},
+ }
+
+
+@book{Goossens:1999:LWC:553897,
+ author = {Goossens, Michel and Rahtz, S. P. and Moore, Ross and Sutor, Robert S.},
+ title = {The Latex Web Companion: Integrating TEX, HTML, and XML},
+ year = {1999},
+ isbn = {0201433117},
+ edition = {1st},
+ publisher = {Addison-Wesley Longman Publishing Co., Inc.},
+ address = {Boston, MA, USA},
+ }
+
+% need to test genres for errant isbn output
+
+% techreport
+@techreport{897367,
+ author = {Buss, Jonathan F. and Rosenberg, Arnold L. and Knott, Judson D.},
+ title = {Vertex Types in Book-Embeddings},
+ year = {1987},
+ source = {http://www.ncstrl.org:8900/ncstrl/servlet/search?formname=detail\&id=oai%3Ancstrlh%3Aumass_cs%3Ancstrl.umassa_cs%2F%2FUM-CS-1987-018},
+ publisher = {University of Massachusetts},
+ address = {Amherst, MA, USA},
+ }
+
+@techreport{Buss:1987:VTB:897367,
+ author = {Buss, Jonathan F. and Rosenberg, Arnold L. and Knott, Judson D.},
+ title = {Vertex Types in Book-Embeddings},
+ year = {1987},
+ source = {http://www.ncstrl.org:8900/ncstrl/servlet/search?formname=detail\&id=oai%3Ancstrlh%3Aumass_cs%3Ancstrl.umassa_cs%2F%2FUM-CS-1987-018},
+ publisher = {University of Massachusetts},
+ address = {Amherst, MA, USA},
+ }
+
+% whole proceedings
+
+@proceedings{Czerwinski:2008:1358628,
+ author = {},
+ note = {General Chair-Czerwinski, Mary and General Chair-Lund, Arnie and Program Chair-Tan, Desney},
+ title = {CHI '08: CHI '08 extended abstracts on Human factors in computing systems},
+ year = {2008},
+ isbn = {978-1-60558-012-X},
+ location = {Florence, Italy},
+ order_no = {608085},
+ publisher = {ACM},
+ address = {New York, NY, USA},
+ }
+
+% phdthesis
+
+@phdthesis{Clarkson:1985:ACP:911891,
+ author = {Clarkson, Kenneth Lee},
+ advisor = {Yao, Andrew C.},
+ title = {Algorithms for Closest-Point Problems (Computational Geometry)},
+ year = {1985},
+ note = {AAT 8506171},
+ school = {Stanford University},
+ address = {Stanford, CA, USA},
+ }
+% school is being picked up -- but not publisher (which is OK)
+% Also -- the title is NOT being output in italics !!! Arrrrgh! - I fixed it. :-)
+
+
+%%% compare with 'old'
+%%% atsign-Phdthesis{Clarkson85,
+%%% author = "Kenneth L. Clarkson",
+%%% year = "1985",
+%%% title = "Algorithms for Closest-Point Problems (Computational Geometry)",
+%%% school = "Stanford University",
+%%% address = "Palo Alto, CA",
+%%% note = "UMI Order Number: AAT 8506171",
+%%% type = "",
+%%% month = "",
+%%%}
+
+% A bibliography
+@Article{1984:1040142,
+ key = {{$\!\!$}},
+ journal = {SIGCOMM Comput. Commun. Rev.},
+ year = {1984},
+ issn = {0146-4833},
+ volume = {13-14},
+ number = {5-1},
+ issue_date = {January/April 1984},
+ publisher = {ACM},
+ address = {New York, NY, USA},
+ }
+
+
+% grinder
+@inproceedings{2004:ITE:1009386.1010128,
+ title = {IEEE TCSC Executive Committee},
+ booktitle = {Proceedings of the IEEE International Conference on Web Services},
+ series = {ICWS '04},
+ year = {2004},
+ isbn = {0-7695-2167-3},
+ pages = {.21--},
+ url = {http://dx.doi.org/10.1109/ICWS.2004.64},
+ doi = {http://dx.doi.org/10.1109/ICWS.2004.64},
+ acmid = {1010128},
+ publisher = {IEEE Computer Society},
+ address = {Washington, DC, USA},
+key = {{$\!\!$}} ,
+}
+
+% div book
+@book{Mullender:1993:DS(:302430,
+ editor = {Mullender, Sape},
+ title = {Distributed systems (2nd Ed.)},
+ year = {1993},
+ isbn = {0-201-62427-3},
+ publisher = {ACM Press/Addison-Wesley Publishing Co.},
+ address = {New York, NY, USA},
+ }
+
+% master thesis (as techreport and thesis)
+
+@techreport{Petrie:1986:NAD:899644,
+ author = {Petrie, Charles J.},
+ title = {New Algorithms for Dependency-Directed Backtracking (Master's thesis)},
+ year = {1986},
+ source = {http://www.ncstrl.org:8900/ncstrl/servlet/search?formname=detail\&id=oai%3Ancstrlh%3Autexas_cs%3AUTEXAS_CS%2F%2FAI86-33},
+ publisher = {University of Texas at Austin},
+ address = {Austin, TX, USA},
+ }
+
+@MASTERSTHESIS{Petrie:1986:NAD:12345,
+ author = {Petrie, Charles J.},
+ title = {New Algorithms for Dependency-Directed Backtracking (Master's thesis)},
+ year = {1986},
+ source = {http://www.ncstrl.org:8900/ncstrl/servlet/search?formname=detail\&id=oai%3Ancstrlh%3Autexas_cs%3AUTEXAS_CS%2F%2FAI86-33},
+ school = {University of Texas at Austin},
+ address = {Austin, TX, USA},
+ }
+
+
+
+
+@BOOK{book-minimal,
+ author = "Donald E. Knuth",
+ title = "Seminumerical Algorithms",
+ publisher = "Addison-Wesley",
+ year = "1981",
+}
+
+% incollection (has an editor, title, and possibly a booktitle)
+@INcollection{KA:2001,
+ author = {Kong, Wei-Chang},
+ Title = {The implementation of electronic commerce in SMEs in Singapore (as Incoll)},
+ booktitle = {E-commerce and cultural values},
+ year = {2001},
+ isbn = {1-59140-056-2},
+ pages = {51--74},
+ numpages = {24},
+ url = {http://portal.acm.org/citation.cfm?id=887006.887010},
+ acmid = {887010},
+ publisher = {IGI Publishing},
+ address = {Hershey, PA, USA},
+}
+
+
+% with bibfield 'type' before chapter (note no editor)
+@INBOOK{KAGM:2001,
+ author = {Kong, Wei-Chang},
+ type = {Name of Chapter:},
+ chapter = {The implementation of electronic commerce in SMEs in Singapore (Inbook-w-chap-w-type)},
+ title = {E-commerce and cultural values},
+ year = {2001},
+ isbn = {1-59140-056-2},
+ pages = {51--74},
+ numpages = {24},
+ url = {http://portal.acm.org/citation.cfm?id=887006.887010},
+ acmid = {887010},
+ publisher = {IGI Publishing},
+ address = {Hershey, PA, USA},
+}
+
+%%% Notes! This is because the atsign-INBOOK citation type specifies EITHER
+%%% editor or author, but not both. In my experiments with the harvard/dcu
+%%% bibtex style (and presumably this applies to other styles too), bibtex
+%%% ignores the editor information if author information exists in an
+%%% atsign-INBOOK entry. atsign-INCOLLECTION is far more commonly used in my references,
+%%% and in the absence of an editor I believe most bibtex styles will just
+%%% ommit the editor from the reference - the chapter information will not
+%%% end up in the in-text citation as you suggest it should be but at least
+%%% there is a place to put the editor if necessary.
+
+
+
+% was 'Inbook' -- changed to incollection - (editor is different to author) - need to tell Asad to codify as such.
+@incollection{Kong:2002:IEC:887006.887010,
+ author = {Kong, Wei-Chang},
+ editor = {Theerasak Thanasankit},
+ title = {Chapter 9},
+ booktitle = {E-commerce and cultural values (Incoll-w-text (chap 9) 'title')},
+ year = {2002},
+ address = {Hershey, PA, USA},
+ publisher = {IGI Publishing},
+ url = {http://portal.acm.org/citation.cfm?id=887006.887010},
+ pages = {51--74},
+ numpages = {24},
+ acmid = {887010},
+ isbn = {1-59140-056-2},
+ number = "",
+ type = "",
+ month = "",
+ note = "",
+}
+
+% incol when the chapter is 'text' - due to presence of editor (different to author)
+@incollection{Kong:2003:IEC:887006.887011,
+ author = {Kong, Wei-Chang},
+ title = {The implementation of electronic commerce in SMEs in Singapore (Incoll)},
+ booktitle = {E-commerce and cultural values},
+ editor = {Thanasankit, Theerasak},
+ year = {2003},
+ isbn = {1-59140-056-2},
+ pages = {51--74},
+ numpages = {24},
+ url = {http://portal.acm.org/citation.cfm?id=887006.887010},
+ acmid = {887010},
+ publisher = {IGI Publishing},
+ address = {Hershey, PA, USA},
+}
+
+% ------ test
+%incollection{Kong:2003:IEC:887006.887010,
+% author = {Kong, Wei-Chang},
+% chapter = {The implementation of electronic commerce in SMEs in Singapore (Incoll-text-in-chap)},
+% booktitle = {booktitle E-commerce and cultural values},
+% title = {The title},
+% editor = {Thanasankit, Theerasak},
+% year = {2003},
+% isbn = {1-59140-056-2},
+% pages = {51--74},
+% numpages = {24},
+% url = {http://portal.acm.org/citation.cfm?id=887006.887010},
+% acmid = {887010},
+% publisher = {IGI Publishing},
+% address = {Hershey, PA, USA},
+%}
+
+
+% ---------
+
+
+
+
+
+% Need inbook with num in chapter
+
+% and inbook with number in chapter
+@InBook{Kong:2004:IEC:123456.887010,
+ author = {Kong, Wei-Chang},
+ editor = {Theerasak Thanasankit},
+ title = {E-commerce and cultural values - (InBook-num-in-chap)},
+ chapter = {9},
+ year = {2004},
+ address = {Hershey, PA, USA},
+ publisher = {IGI Publishing},
+ url = {http://portal.acm.org/citation.cfm?id=887006.887010},
+ pages = {51--74},
+ numpages = {24},
+ acmid = {887010},
+ isbn = {1-59140-056-2},
+ number = "",
+ type = "",
+ month = "",
+ note = "",
+}
+
+
+% and inbook with text in chapter
+@Inbook{Kong:2005:IEC:887006.887010,
+ author = {Kong, Wei-Chang},
+ editor = {Theerasak Thanasankit},
+ title = {E-commerce and cultural values (Inbook-text-in-chap)},
+ chapter = {The implementation of electronic commerce in SMEs in Singapore},
+ year = {2005},
+ address = {Hershey, PA, USA},
+ publisher = {IGI Publishing},
+ url = {http://portal.acm.org/citation.cfm?id=887006.887010},
+ type = {Chapter:},
+ pages = {51--74},
+ numpages = {24},
+ acmid = {887010},
+ isbn = {1-59140-056-2},
+ number = "",
+ month = "",
+ note = "",
+}
+
+
+% and inbook with a num and type field
+@Inbook{Kong:2006:IEC:887006.887010,
+ author = {Kong, Wei-Chang},
+ editor = {Theerasak Thanasankit},
+ title = {E-commerce and cultural values (Inbook-num chap)},
+ chapter = {22},
+ year = {2006},
+ address = {Hershey, PA, USA},
+ publisher = {IGI Publishing},
+ url = {http://portal.acm.org/citation.cfm?id=887006.887010},
+ type = {Chapter (in type field)},
+ pages = {51--74},
+ numpages = {24},
+ acmid = {887010},
+ isbn = {1-59140-056-2},
+ number = "",
+ month = "",
+ note = "",
+}
+
+
+% and incol coz we have a BLANK chapter - due to presence of editor
+%atIncollection{Kong:2006:IEC:887006.887011,
+% author = {Kong, Wei-Chang},
+% editor = {Theerasak Thanasankit},
+% title = "The title"
+% booktitle = {E-commerce and cultural values (Incol-coz-blank-chap)},
+% year = {2006},
+% address = {Hershey, PA, USA},
+% publisher = {IGI Publishing},
+% url = {http://portal.acm.org/citation.cfm?id=887006.887010},
+% type = {Type!},
+% chapter = {},
+% pages = {51--74},
+% numpages = {24},
+% acmid = {887010},
+% isbn = {1-59140-056-2},
+% number = "",
+% month = "",
+% note = "",
+%}
+
+@article{SaeediMEJ10,
+ author = {Mehdi Saeedi and Morteza Saheb Zamani and Mehdi Sedighi},
+ title = {A library-based synthesis methodology for reversible logic},
+ journal = {Microelectron. J.},
+ volume = {41},
+ number = {4},
+ month = apr,
+ year = {2010},
+ pages = {185--194},
+}
+
+@ARTICLE{SaeediJETC10,
+ author = {Mehdi Saeedi and Morteza Saheb Zamani and Mehdi Sedighi and Zahra Sasanian},
+ title = {Synthesis of Reversible Circuit Using Cycle-Based Approach},
+ journal = {J. Emerg. Technol. Comput. Syst.},
+ volume = {6},
+ number = {4},
+ month = dec,
+ year = {2010}
+ }
+
+% Asad's new version
+@article{Kirschmer:2010:AEI:1958016.1958018,
+ author = {Kirschmer, Markus and Voight, John},
+ title = {Algorithmic Enumeration of Ideal Classes for Quaternion Orders},
+ journal = {SIAM J. Comput.},
+ issue_date = {January 2010},
+ volume = {39},
+ number = {5},
+ month = jan,
+ year = {2010},
+ issn = {0097-5397},
+ pages = {1714--1747},
+ numpages = {34},
+ url = {http://dx.doi.org/10.1137/080734467},
+ doi = {http://dx.doi.org/10.1137/080734467},
+ acmid = {1958018},
+ publisher = {Society for Industrial and Applied Mathematics},
+ address = {Philadelphia, PA, USA},
+ keywords = {ideal classes, maximal orders, number theory, quaternion algebras},
+}
+
+
+% incol due to presence of booktitle
+@incollection{Hoare:1972:CIN:1243380.1243382,
+ author = {Hoare, C. A. R.},
+ title = {Chapter II: Notes on data structuring},
+ booktitle = {Structured programming (incoll)},
+ editor = {Dahl, O. J. and Dijkstra, E. W. and Hoare, C. A. R.},
+ year = {1972},
+ isbn = {0-12-200550-3},
+ pages = {83--174},
+ numpages = {92},
+ url = {http://portal.acm.org/citation.cfm?id=1243380.1243382},
+ acmid = {1243382},
+ publisher = {Academic Press Ltd.},
+ address = {London, UK, UK},
+}
+
+% incol due to presence of booktitle
+@incollection{Lee:1978:TQA:800025.1198348,
+ author = {Lee, Jan},
+ title = {Transcript of question and answer session},
+ booktitle = {History of programming languages I (incoll)},
+ editor = {Wexelblat, Richard L.},
+ year = {1981},
+ isbn = {0-12-745040-8},
+ pages = {68--71},
+ numpages = {4},
+ url = {http://doi.acm.org/10.1145/800025.1198348},
+ doi = {http://doi.acm.org/10.1145/800025.1198348},
+ acmid = {1198348},
+ publisher = {ACM},
+ address = {New York, NY, USA},
+}
+
+% incol due to booktitle
+@incollection{Dijkstra:1979:GSC:1241515.1241518,
+ author = {Dijkstra, E.},
+ title = {Go to statement considered harmful},
+ booktitle = {Classics in software engineering (incoll)},
+ year = {1979},
+ isbn = {0-917072-14-6},
+ pages = {27--33},
+ numpages = {7},
+ url = {http://portal.acm.org/citation.cfm?id=1241515.1241518},
+ acmid = {1241518},
+ publisher = {Yourdon Press},
+ address = {Upper Saddle River, NJ, USA},
+}
+
+% incol due to booktitle
+@incollection{Wenzel:1992:TVA:146022.146089,
+ author = {Wenzel, Elizabeth M.},
+ title = {Three-dimensional virtual acoustic displays},
+ booktitle = {Multimedia interface design (incoll)},
+ year = {1992},
+ isbn = {0-201-54981-6},
+ pages = {257--288},
+ numpages = {32},
+ url = {http://portal.acm.org/citation.cfm?id=146022.146089},
+ doi = {10.1145/146022.146089},
+ acmid = {146089},
+ publisher = {ACM},
+ address = {New York, NY, USA},
+}
+
+% incol due to booktitle
+@incollection{Mumford:1987:MES:54905.54911,
+ author = {Mumford, E.},
+ title = {Managerial expert systems and organizational change: some critical research issues},
+ booktitle = {Critical issues in information systems research (incoll)},
+ year = {1987},
+ isbn = {0-471-91281-6},
+ pages = {135--155},
+ numpages = {21},
+ url = {http://portal.acm.org/citation.cfm?id=54905.54911},
+ acmid = {54911},
+ publisher = {John Wiley \& Sons, Inc.},
+ address = {New York, NY, USA},
+}
+
+@book{McCracken:1990:SSC:575315,
+ author = {McCracken, Daniel D. and Golden, Donald G.},
+ title = {Simplified Structured COBOL with Microsoft/MicroFocus COBOL},
+ year = {1990},
+ isbn = {0471514071},
+ publisher = {John Wiley \& Sons, Inc.},
+ address = {New York, NY, USA},
+}
+
+% Let's include Boris / BBeeton entries (multi-volume works)
+
+@book {MR781537,
+ AUTHOR = {H{\"o}rmander, Lars},
+ TITLE = {The analysis of linear partial differential operators. {III}},
+ SERIES = {Grundlehren der Mathematischen Wissenschaften [Fundamental
+ Principles of Mathematical Sciences]},
+ VOLUME = {275},
+ NOTE = {Pseudodifferential operators},
+PUBLISHER = {Springer-Verlag},
+ ADDRESS = {Berlin, Germany},
+ YEAR = {1985},
+ PAGES = {viii+525},
+ ISBN = {3-540-13828-5},
+ MRCLASS = {35-02 (35Sxx 47G05 58G15)},
+ MRNUMBER = {781536 (87d:35002a)},
+MRREVIEWER = {Min You Qi},
+}
+
+@book {MR781536,
+ AUTHOR = {H{\"o}rmander, Lars},
+ TITLE = {The analysis of linear partial differential operators. {IV}},
+ SERIES = {Grundlehren der Mathematischen Wissenschaften [Fundamental
+ Principles of Mathematical Sciences]},
+ VOLUME = {275},
+ NOTE = {Fourier integral operators},
+PUBLISHER = {Springer-Verlag},
+ ADDRESS = {Berlin, Germany},
+ YEAR = {1985},
+ PAGES = {vii+352},
+ ISBN = {3-540-13829-3},
+ MRCLASS = {35-02 (35Sxx 47G05 58G15)},
+ MRNUMBER = {781537 (87d:35002b)},
+MRREVIEWER = {Min You Qi},
+}
+
+%%%%%%%%%%%%%%%%%%%%%% Start of Aptara sample bib entries
+
+% acmsmall-sam.bib
+@InProceedings{Adya-01,
+ author = {A. Adya and P. Bahl and J. Padhye and A.Wolman and L. Zhou},
+ title = {A multi-radio unification protocol for {IEEE} 802.11 wireless networks},
+ booktitle = {Proceedings of the IEEE 1st International Conference on Broadnets Networks (BroadNets'04)},
+ publisher = "IEEE",
+ address = "Los Alamitos, CA",
+ year = {2004},
+ pages = "210--217"
+}
+
+@article{Akyildiz-01,
+ author = {I. F. Akyildiz and W. Su and Y. Sankarasubramaniam and E. Cayirci},
+ title = {Wireless Sensor Networks: A Survey},
+ journal = {Comm. ACM},
+ volume = 38,
+ number = "4",
+ year = {2002},
+ pages = "393--422"
+}
+
+@article{Akyildiz-02,
+ author = {I. F. Akyildiz and T. Melodia and K. R. Chowdhury},
+ title = {A Survey on Wireless Multimedia Sensor Networks},
+ journal = {Computer Netw.},
+ volume = 51,
+ number = "4",
+ year = {2007},
+ pages = "921--960"
+}
+
+@InProceedings{Bahl-02,
+ author = {P. Bahl and R. Chancre and J. Dungeon},
+ title = {{SSCH}: Slotted Seeded Channel Hopping for Capacity Improvement in {IEEE} 802.11 Ad-Hoc Wireless Networks},
+ booktitle = {Proceeding of the 10th International Conference on Mobile Computing and Networking (MobiCom'04)},
+ publisher = "ACM",
+ address = "New York, NY",
+ year = {2004},
+ pages = "112--117"
+}
+
+@misc{CROSSBOW,
+ key = {CROSSBOW},
+ title = {{XBOW} Sensor Motes Specifications},
+ note = {http://www.xbow.com},
+ year = 2008
+}
+
+@article{Culler-01,
+ author = {D. Culler and D. Estrin and M. Srivastava},
+ title = {Overview of Sensor Networks},
+ journal = {IEEE Comput.},
+ volume = 37,
+ number = "8 (Special Issue on Sensor Networks)",
+ publisher = "IEEE",
+ address = "Los Alamitos, CA",
+ year = {2004},
+ pages = "41--49"
+}
+
+@misc{Harvard-01,
+ key = {Harvard CodeBlue},
+ title = {{CodeBlue}: Sensor Networks for Medical Care},
+ note = {http://www.eecs.harvard.edu/mdw/ proj/codeblue/},
+ year = 2008
+}
+
+@InProceedings{Natarajan-01,
+ author = {A. Natarajan and M. Motani and B. de Silva and K. Yap and K. C. Chua},
+ title = {Investigating Network Architectures for Body Sensor Networks},
+ booktitle = {Network Architectures},
+ editor = {G. Whitcomb and P. Neece},
+ publisher = "Keleuven Press",
+ address = "Dayton, OH",
+ year = {2007},
+ pages = "322--328"
+}
+
+@techreport{Tzamaloukas-01,
+ author = {A. Tzamaloukas and J. J. Garcia-Luna-Aceves},
+ title = {Channel-Hopping Multiple Access},
+ number = {I-CA2301},
+ institution = {Department of Computer Science, University of California},
+ address = {Berkeley, CA},
+ year = {2000}
+}
+
+@BOOK{Zhou-06,
+ author = {G. Zhou and J. Lu and C.-Y. Wan and M. D. Yarvis and J. A. Stankovic},
+ title = {Body Sensor Networks},
+ publisher = "MIT Press",
+ address = "Cambridge, MA",
+ year = {2008}
+}
+
+@mastersthesis{ko94,
+author = "Jacob Kornerup",
+title = "Mapping Powerlists onto Hypercubes",
+school = "The University of Texas at Austin",
+note = "(In preparation)",
+year = "1994"}
+%month = "dec",}
+
+@PhdThesis{gerndt:89,
+ author = "Michael Gerndt",
+ title = "Automatic Parallelization for Distributed-Memory
+ Multiprocessing Systems",
+ school = "University of Bonn",
+ year = 1989,
+ address = "Bonn, Germany",
+ month = dec
+}
+
+@article{6:1:1,
+author = "J. E. {Archer, Jr.} and R. Conway and F. B. Schneider",
+title = "User recovery and reversal in interactive systems",
+journal = "ACM Trans. Program. Lang. Syst.",
+volume = "6",
+number = "1",
+month = jan,
+year = 1984,
+pages = "1--19"}
+
+@article{7:1:137,
+author = "D. D. Dunlop and V. R. Basili",
+title = "Generalizing specifications for uniformly implemented loops",
+journal = "ACM Trans. Program. Lang. Syst.",
+volume = "7",
+number = "1",
+month = jan,
+year = 1985,
+pages = "137--158"}
+
+@article{7:2:183,
+author = "J. Heering and P. Klint",
+title = "Towards monolingual programming environments",
+journal = "ACM Trans. Program. Lang. Syst.",
+volume = "7",
+number = "2",
+month = apr,
+year = 1985,
+pages = "183--213"}
+
+@book{knuth:texbook,
+author = "Donald E. Knuth",
+title = "The {\TeX{}book}",
+publisher = "Addison-Wesley",
+address = "Reading, MA.",
+year = 1984}
+
+@article{6:3:380,
+author = "E. Korach and D. Rotem and N. Santoro",
+title = "Distributed algorithms for finding centers and medians in networks",
+journal = "ACM Trans. Program. Lang. Syst.",
+volume = "6",
+number = "3",
+month = jul,
+year = 1984,
+pages = "380--401"}
+
+@book{lamport:latex,
+author = "Leslie Lamport",
+title = "\it {\LaTeX}: A Document Preparation System",
+publisher = "Addison-Wesley",
+address = "Reading, MA.",
+year = 1986}
+
+@article{7:3:359,
+author = "F. Nielson",
+title = "Program transformations in a denotational setting",
+journal = "ACM Trans. Program. Lang. Syst.",
+volume = "7",
+number = "3",
+month = jul,
+year = 1985,
+pages = "359--379"}
+
+%testing
+@BOOK{test,
+ author = "Donald E. Knuth",
+ title = "Seminumerical Algorithms",
+ volume = 2,
+ series = "The Art of Computer Programming",
+ publisher = "Addison-Wesley",
+ address = "Reading, MA",
+ edition = "2nd",
+ month = "10~" # jan,
+ year = "1981",
+}
+
+@inproceedings{reid:scribe,
+author = "Brian K. Reid",
+title = "A high-level approach to computer document formatting",
+booktitle = "Proceedings of the 7th Annual Symposium on Principles of
+ Programming Languages",
+month = jan,
+year = 1980,
+publisher = "ACM",
+address = "New York",
+pages = "24--31"}
+
+@article{Zhou:2010:MMS:1721695.1721705,
+ author = {Zhou, Gang and Wu, Yafeng and Yan, Ting and He, Tian and Huang, Chengdu and Stankovic, John A. and Abdelzaher, Tarek F.},
+ title = {A multifrequency MAC specially designed for wireless sensor network applications},
+ journal = {ACM Trans. Embed. Comput. Syst.},
+ issue_date = {March 2010},
+ volume = {9},
+ number = {4},
+ month = {April},
+ year = {2010},
+ issn = {1539-9087},
+ pages = {39:1--39:41},
+ articleno = {39},
+ numpages = {41},
+ url = {http://doi.acm.org/10.1145/1721695.1721705},
+ doi = {10.1145/1721695.1721705},
+ acmid = {1721705},
+ publisher = {ACM},
+ address = {New York, NY, USA},
+ keywords = {Wireless sensor networks, media access control, multi-channel, radio interference, time synchronization},
+}
diff --git a/Master/texmf-dist/doc/latex/acmart/sample-colort.pdf b/Master/texmf-dist/doc/latex/acmart/sample-colort.pdf
new file mode 100644
index 00000000000..57951b1280e
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/acmart/sample-colort.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/acmart/sample-manuscript.pdf b/Master/texmf-dist/doc/latex/acmart/sample-manuscript.pdf
new file mode 100644
index 00000000000..027cfacfef7
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/acmart/sample-manuscript.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/acmart/sample-manuscript.tex b/Master/texmf-dist/doc/latex/acmart/sample-manuscript.tex
new file mode 100644
index 00000000000..9df5e5fc894
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/acmart/sample-manuscript.tex
@@ -0,0 +1,143 @@
+\listfiles
+\documentclass[manuscript, review, screen, natbib]{acmart}
+\setcitestyle{super,sort&compress}
+\usepackage{booktabs} % For formal tables
+
+\usepackage[ruled]{algorithm2e} % For algorithms
+
+% Metadata Information
+\acmJournal{CIE}
+\acmVolume{9}
+\acmNumber{4}
+\acmArticle{39}
+\acmYear{2010}
+\acmMonth{3}
+
+%\acmBadgeL[http://ctuning.org/ae/ppopp2016.html]{ae-logo}
+\acmBadgeR[http://ctuning.org/ae/ppopp2016.html]{ae-logo}
+
+% Copyright
+\setcopyright{acmcopyright}
+%\setcopyright{acmlicensed}
+%\setcopyright{rightsretained}
+%\setcopyright{usgov}
+%\setcopyright{usgovmixed}
+%\setcopyright{cagov}
+%\setcopyright{cagovmixed}
+
+% DOI
+\acmDOI{0000001.0000001}
+
+
+% Document starts
+\begin{document}
+% Title portion
+\title{A Multifrequency MAC Specially Designed for Wireless Sensor
+ Network Applications}
+ \titlenote{This is a titlenote}
+% \subtitle{This is a subtitle}
+% \subtitlenote{Subtitle note}
+\author{Gang Zhou}
+% \authornote{The corresponding author}
+\email{zhou@uva.edu}
+\author{Yafeng Wu}
+\email{ywu@uva.edu}
+\affiliation{University of Virginia}
+\author{Ting Yan}
+\affiliation{Eaton Innovation Center}
+\author{Tian He}
+\affiliation{University of Minnesota}
+\author{Chengdu Huang}
+\affiliation{Google}
+\author{John A. Stankovic}
+\affiliation{University of Virginia}
+\author{Tarek F. Abdelzaher}
+\affiliation{University of Illinois at Urbana-Champaign}
+\affiliation{University of Virginia}
+
+\begin{abstract}
+Multifrequency media access control has been well understood in
+general wireless ad hoc networks, while in wireless sensor networks,
+researchers still focus on single frequency solutions. In wireless
+sensor networks, each device is typically equipped with a single
+radio transceiver and applications adopt much smaller packet sizes
+compared to those in general wireless ad hoc networks. Hence, the
+multifrequency MAC protocols proposed for general wireless ad hoc
+networks are not suitable for wireless sensor network applications,
+which we further demonstrate through our simulation experiments. In
+this article, we propose MMSN, which takes advantage of
+multifrequency availability while, at the same time, takes into
+consideration the restrictions of wireless sensor networks. Through
+extensive experiments, MMSN exhibits the prominent ability to utilize
+parallel transmissions among neighboring nodes. When multiple physical
+frequencies are available, it also achieves increased energy
+efficiency, demonstrating the ability to work against radio
+interference and the tolerance to a wide range of measured time
+synchronization errors\footnote{This is an abstract footnote}.
+\end{abstract}
+
+
+%
+% The code below should be generated by the tool at
+% http://dl.acm.org/ccs.cfm
+% Please copy and paste the code instead of the example below.
+%
+\begin{CCSXML}
+<ccs2012>
+ <concept>
+ <concept_id>10010520.10010553.10010562</concept_id>
+ <concept_desc>Computer systems organization~Embedded systems</concept_desc>
+ <concept_significance>500</concept_significance>
+ </concept>
+ <concept>
+ <concept_id>10010520.10010575.10010755</concept_id>
+ <concept_desc>Computer systems organization~Redundancy</concept_desc>
+ <concept_significance>300</concept_significance>
+ </concept>
+ <concept>
+ <concept_id>10010520.10010553.10010554</concept_id>
+ <concept_desc>Computer systems organization~Robotics</concept_desc>
+ <concept_significance>100</concept_significance>
+ </concept>
+ <concept>
+ <concept_id>10003033.10003083.10003095</concept_id>
+ <concept_desc>Networks~Network reliability</concept_desc>
+ <concept_significance>100</concept_significance>
+ </concept>
+</ccs2012>
+\end{CCSXML}
+
+\ccsdesc[500]{Computer systems organization~Embedded systems}
+\ccsdesc[300]{Computer systems organization~Redundancy}
+\ccsdesc{Computer systems organization~Robotics}
+\ccsdesc[100]{Networks~Network reliability}
+
+%
+% End generated code
+%
+
+% We no longer use \terms command
+\terms{Design, Algorithms, Performance}
+
+\keywords{Wireless sensor networks, media access control,
+multi-channel, radio interference, time synchronization}
+
+
+\thanks{This work is supported by the National Science Foundation,
+ under grant CNS-0435060, grant CCR-0325197 and grant EN-CS-0329609.
+
+ Author's addresses: G. Zhou, Computer Science Department, College of
+ William and Mary; Y. Wu {and} J. A. Stankovic, Computer Science
+ Department, University of Virginia; T. Yan, Eaton Innovation Center;
+ T. He, Computer Science Department, University of Minnesota; C.
+ Huang, Google; T. F. Abdelzaher, (Current address) NASA Ames
+ Research Center, Moffett Field, California 94035.}
+
+
+\maketitle
+
+
+\input{samplebody-journals}
+
+
+\end{document}
diff --git a/Master/texmf-dist/doc/latex/acmart/sample-sigchi-a.pdf b/Master/texmf-dist/doc/latex/acmart/sample-sigchi-a.pdf
new file mode 100644
index 00000000000..9a4af74ed7c
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/acmart/sample-sigchi-a.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/acmart/sample-sigchi-a.tex b/Master/texmf-dist/doc/latex/acmart/sample-sigchi-a.tex
new file mode 100644
index 00000000000..f35d24ddc28
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/acmart/sample-sigchi-a.tex
@@ -0,0 +1,430 @@
+\documentclass[sigchi-a, authorversion]{acmart}
+\usepackage{booktabs} % For formal tables
+\usepackage{ccicons} % For Creative Commons citation icons
+
+% Copyright
+%\setcopyright{none}
+\setcopyright{acmcopyright}
+%\setcopyright{acmlicensed}
+%\setcopyright{rightsretained}
+%\setcopyright{usgov}
+%\setcopyright{usgovmixed}
+%\setcopyright{cagov}
+%\setcopyright{cagovmixed}
+
+
+% DOI
+\acmDOI{10.475/123_4}
+
+% ISBN
+\acmISBN{123-4567-24-567/08/06}
+
+%Conference
+\acmConference[WOODSTOCK'97]{ACM Woodstock conference}{July 1997}{El
+ Paso, Texas USA}
+\acmYear{1997}
+\copyrightyear{2016}
+
+\acmPrice{15.00}
+
+%\acmBadgeL[http://ctuning.org/ae/ppopp2016.html]{ae-logo}
+\acmBadgeR[http://ctuning.org/ae/ppopp2016.html]{ae-logo}
+
+\begin{document}
+\title{SIGCHI Extended Abstracts Sample File}
+
+\author{First Author}
+\affiliation{University of Author\\
+ Authortown, CA 94022, USA}
+\email{author1@anotherco.edu}
+
+\author{Second Author}
+\affiliation{VP, Authoring\\
+ Authorship Holdings, Ltd.\\
+ Awdur SA22 8PP, UK}
+\email{author2@author.ac.uk}
+
+\author{Third Author \\
+ Fourth Author}
+\affiliation{L\={e}khaka Labs\\
+ Bengaluru 560 080, India}
+\email{author3@another.com}
+\email{author4@another.com}
+
+\author{Fifth Author}
+\affiliation{YetAuthorCo, Inc.\\
+ Authortown, BC V6M 22P Canada}
+\email{author5@anotherco.com}
+
+\author{Sixth Author}
+\affiliation{Universit\'e de Auteur-Sud\\
+ 40222 Auteur France}
+\email{author6@author.fr}
+
+\author{Seventh Author}
+\affiliation{University of Umbhali\\
+ Pretoria, South Africa}
+\email{author7@umbhaliu.ac.za}
+
+%
+% The code below should be generated by the tool at
+% http://dl.acm.org/ccs.cfm
+% Please copy and paste the code instead of the example below.
+%
+\begin{CCSXML}
+<ccs2012>
+ <concept>
+ <concept_id>10010520.10010553.10010562</concept_id>
+ <concept_desc>Computer systems organization~Embedded systems</concept_desc>
+ <concept_significance>500</concept_significance>
+ </concept>
+ <concept>
+ <concept_id>10010520.10010575.10010755</concept_id>
+ <concept_desc>Computer systems organization~Redundancy</concept_desc>
+ <concept_significance>300</concept_significance>
+ </concept>
+ <concept>
+ <concept_id>10010520.10010553.10010554</concept_id>
+ <concept_desc>Computer systems organization~Robotics</concept_desc>
+ <concept_significance>100</concept_significance>
+ </concept>
+ <concept>
+ <concept_id>10003033.10003083.10003095</concept_id>
+ <concept_desc>Networks~Network reliability</concept_desc>
+ <concept_significance>100</concept_significance>
+ </concept>
+</ccs2012>
+\end{CCSXML}
+
+\ccsdesc[500]{Computer systems organization~Embedded systems}
+\ccsdesc[300]{Computer systems organization~Redundancy}
+\ccsdesc{Computer systems organization~Robotics}
+\ccsdesc[100]{Networks~Network reliability}
+
+% We no longer use \terms command
+%\terms{Theory}
+
+\begin{abstract}
+ UPDATED---\today. This sample paper describes the formatting
+ requirements for SIGCHI Extended Abstract Format, and this sample
+ file offers recommendations on writing for the worldwide SIGCHI
+ readership. Please review this document even if you have submitted
+ to SIGCHI conferences before, as some format details have changed
+ relative to previous years. Abstracts should be about 150
+ words. Required.
+\end{abstract}
+
+
+\keywords{Authors' choice; of terms; separated; by
+ semicolons; include commas, within terms only; required.}
+
+
+
+\maketitle
+
+\begin{sidebar}
+ \textbf{Good Utilization of the Side Bar}
+
+ \textbf{Preparation:} Do not change the margin
+ dimensions and do not flow the margin text to the
+ next page.
+
+ \textbf{Materials:} The margin box must not intrude
+ or overflow into the header or the footer, or the gutter space
+ between the margin paragraph and the main left column.
+
+ \textbf{Images \& Figures:} Practically anything
+ can be put in the margin if it fits. Use the
+ \texttt{{\textbackslash}marginparwidth} constant to set the
+ width of the figure, table, minipage, or whatever you are trying
+ to fit in this skinny space.
+
+ \caption{This is the optional caption}
+ \label{bar:sidebar}
+\end{sidebar}
+
+\begin{figure}
+ \centering
+ \includegraphics[width=\marginparwidth]{sigchi-logo}
+ \caption{Insert a caption below each figure.}
+ \label{fig:sample}
+\end{figure}
+
+
+\section{Introduction}
+This format is to be used for submissions that are published in the
+conference publications. We wish to give this volume a consistent,
+high-quality appearance. We therefore ask that authors follow some
+simple guidelines. In essence, you should format your paper exactly
+like this document. The easiest way to do this is to replace the
+content with your own material.
+
+
+\section{ACM Copyrights \& Permission}
+Accepted extended abstracts and papers will be distributed in the
+Conference Publications. They will also be placed in the ACM Digital
+Library, where they will remain accessible to thousands of researchers
+and practitioners worldwide. To view the ACM's copyright and
+permissions policy, see:
+\url{http://www.acm.org/publications/policies/copyright_policy}.
+
+
+\section{Page Size}
+All SIGCHI submissions should be US letter (8.5 $\times$ 11
+inches). US Letter is the standard option used by this \LaTeX\
+template.
+
+\section{Text Formatting}
+Please use an 8.5-point Verdana font, or other sans serifs font as
+close as possible in appearance to Verdana in which these guidelines
+have been set. Arial 9-point font is a reasonable substitute for
+Verdana as it has a similar x-height. Please use serif or
+non-proportional fonts only for special purposes, such as
+distinguishing \texttt{source code} text.
+
+\subsubsection{Text styles}
+The \LaTeX\ template facilitates text formatting for normal (for body
+text); heading 1, heading 2, heading 3; bullet list; numbered list;
+caption; annotation (for notes in the narrow left margin); and
+references (for bibliographic entries). Additionally, here is an
+example of footnoted\footnote{Use footnotes sparingly, if at all.}
+text. As stated in the footnote, footnotes should rarely be used.
+
+\begin{table}
+ \centering
+ \caption{Table captions should be placed above the table. We
+ recommend table lines be 1 point, 25\% black. Minimize use of
+ table grid lines.}
+ \label{tab:table1}
+ \begin{tabular}{l r r r}
+% \toprule
+ & & \multicolumn{2}{c}{\small{\textbf{Test Conditions}}} \\
+ \cmidrule(r){3-4}
+ {\small\textit{Name}}
+ & {\small \textit{First}}
+ & {\small \textit{Second}}
+ & {\small \textit{Final}} \\
+ \midrule
+ Marsden & 223.0 & 44 & 432,321 \\
+ Nass & 22.2 & 16 & 234,333 \\
+ Borriello & 22.9 & 11 & 93,123 \\
+ Karat & 34.9 & 2200 & 103,322 \\
+ \bottomrule
+ \end{tabular}
+\end{table}
+
+
+\subsection{Language, style, and content}
+The written and spoken language of SIGCHI is English. Spelling and
+punctuation may use any dialect of English (e.g., British, Canadian,
+US, etc.) provided this is done consistently. Hyphenation is
+optional. To ensure suitability for an international audience, please
+pay attention to the following:
+\begin{itemize}
+\item Write in a straightforward style. Use simple sentence
+ structure. Try to avoid long sentences and complex sentence
+ structures. Use semicolons carefully.
+\item Use common and basic vocabulary (e.g., use the word ``unusual''
+ rather than the word ``arcane'').
+\item Briefly define or explain all technical terms. The terminology
+ common to your practice/discipline may be different in other design
+ practices/disciplines.
+\item Spell out all acronyms the first time they are used in your
+ text. For example, ``World Wide Web (WWW)''.
+\item Explain local references (e.g., not everyone knows all city
+ names in a particular country).
+\item Explain ``insider'' comments. Ensure that your whole audience
+ understands any reference whose meaning you do not describe (e.g.,
+ do not assume that everyone has used a Macintosh or a particular
+ application).
+\item Explain colloquial language and puns. Understanding phrases like
+ ``red herring'' requires a cultural knowledge of English. Humor and
+ irony are difficult to translate.
+\item Use unambiguous forms for culturally localized concepts, such as
+ times, dates, currencies, and numbers (e.g., ``1-5- 97'' or
+ ``5/1/97'' may mean 5 January or 1 May, and ``seven o'clock'' may
+ mean 7:00 am or 19:00). For currencies, indicate equivalences:
+ ``Participants were paid {\fontfamily{txr}\selectfont \textwon}
+ 25,000, or roughly US \$22.''
+\item Be careful with the use of gender-specific pronouns (he, she)
+ and other gender-specific words (chairman, manpower,
+ man-months). Use inclusive language (e.g., she or he, they, chair,
+ staff, staff-hours, person-years) that is gender-neutral. If
+ necessary, you may be able to use ``he'' and ``she'' in alternating
+ sentences, so that the two genders occur equally
+ often~\cite{Schwartz:1995:GBF}.
+\item If possible, use the full (extended) alphabetic character set
+ for names of persons, institutions, and places (e.g.,
+ Gr{\o}nb{\ae}k, Lafreni\'ere, S\'anchez, Nguy{\~{\^{e}}}n,
+ Universit{\"a}t, Wei{\ss}enbach, Z{\"u}llighoven, \r{A}rhus, etc.).
+ These characters are already included in most versions and variants
+ of Times, Helvetica, and Arial fonts.
+\end{itemize}
+
+
+\begin{marginfigure}
+ \centering
+ \includegraphics[width=\marginparwidth]{cats}
+ \caption{In this image, the cats are tessellated within a square
+ frame. Images should also have captions and be within the
+ boundaries of the sidebar on page~\pageref{bar:sidebar}. Photo:
+ \cczero~jofish on Flickr.}
+ \label{fig:marginfig}
+\end{marginfigure}
+
+\section{Figures}
+The examples on this and following pages should help you get a feel
+for how screen-shots and other figures should be placed in the
+template. Your document may use color figures (see
+Figures~\ref{fig:sample}), which are included in the page limit; the
+figures must be usable when printed in black and white. You can use
+the \texttt{marginfigure} environment to insert figures in the (left) margin
+of the document (see Figure~\ref{fig:marginfig}). Finally, be sure to
+make images large enough so the important details are legible and
+clear (see Figure~\ref{fig:cats}).
+
+\begin{figure*}
+ \includegraphics[width=\fulltextwidth]{map}
+ \caption{In this image, the map maximizes use of space.
+ Note that \LaTeX\ tends to render large figures on a
+ dedicated page. Image: \ccbynd~ayman on Flickr.}~\label{fig:cats}
+\end{figure*}
+
+
+\section{Tables}
+
+
+\begin{margintable}
+ \centering
+ \caption{A simple narrow table in the left margin
+ space.}
+ \label{tab:table2}
+ \begin{tabular}{r r l}
+ & {\small \textbf{First}}
+ & {\small \textbf{Location}} \\
+ \toprule
+ Child & 22.5 & Melbourne \\
+ Adult & 22.0 & Bogot\'a \\
+ \midrule
+ Gene & 22.0 & Palo Alto \\
+ John & 34.5 & Minneapolis \\
+ \bottomrule
+ \end{tabular}
+\end{margintable}
+
+You man use tables inline with the text (see Table~\ref{tab:table1})
+or within the margin as shown in Table~\ref{tab:table2}. Try to
+minimize the use of lines (especially vertical lines). \LaTeX\ will
+set the table font and captions sizes correctly; the latter must
+remain unchanged.
+
+\section{Accessibility}
+The Executive Council of SIGCHI has committed to making SIGCHI
+conferences more inclusive for researchers, practitioners, and
+educators with disabilities. As a part of this goal, the all authors
+are asked to work on improving the accessibility of their
+submissions. Specifically, we encourage authors to carry out the
+following five steps:
+\begin{itemize}
+\item Add alternative text to all figures
+\item Mark table headings
+\item Generate a tagged PDF
+\item Verify the default language
+\item Set the tab order to ``Use Document Structure''
+\end{itemize}
+
+For links to instructions and resources, please see:
+\url{http://chi2016.acm.org/accessibility}
+
+Unfortunately good tools do not yet exist to create tagged PDF files
+from Latex (see the ongoing effort at
+\url{http://tug.org/twg/accessibility/}). \LaTeX\ users will need to
+carry out all of the above steps in the PDF directly using Adobe
+Acrobat, after the PDF has been generated.
+
+For more information and links to instructions and resources, please
+see:
+\url{http://chi2016.acm.org/accessibility} and
+\url{http://tug.org/twg/accessibility/}.
+
+
+\section{Producing and Testing PDF Files}
+
+We recommend that you produce a PDF version of your submission well
+before the final deadline. Your PDF file must be ACM DL Compliant and
+meet stated requirements,
+\url{http://www.sheridanprinting.com/sigchi/ACM-SIG-distilling-settings.htm}.
+
+\begin{sidebar}
+ So long as you don't type outside the right
+ margin or bleed into the gutter, it's okay to put annotations over
+ here on the left. You may need to have
+ to manually align the margin paragraphs to your \LaTeX\ floats using
+ the \texttt{{\textbackslash}vspace{}} command.
+\end{sidebar}
+
+
+Test your PDF file by viewing or printing it with the same software we
+will use when we receive it, Adobe Acrobat Reader Version 10. This is
+widely available at no cost. Note that most reviewers will use a North
+American/European version of Acrobat reader, so please check your PDF
+accordingly.
+
+\section{Acknowledgements}
+
+We thank all the volunteers, publications support, staff, and authors
+who wrote and provided helpful comments on previous versions of this
+document. As well authors 1, 2, and 3 gratefully acknowledge the grant
+from NSF (\#1234--2222--ABC). Author 4 for example may want to
+acknowledge a supervisor/manager from their original employer. This
+whole paragraph is just for example. Some of the references cited in
+this paper are included for illustrative purposes only.
+
+\section{References Format}
+
+Your references should be published materials accessible to the
+public. Internal technical reports may be cited only if they are
+easily accessible and may be obtained by any reader for a nominal fee.
+Proprietary information may not be cited. Private communications
+should be acknowledged in the main text, not referenced (e.g.,
+[Golovchinsky, personal communication]). References must be the same
+font size as other body text. References should be in alphabetical
+order by last name of first author. Use a numbered list of references
+at the end of the article, ordered alphabetically by last name of
+first author, and referenced by numbers in brackets. For papers from
+conference proceedings, include the title of the paper and the name of
+the conference. Do not include the location of the conference or the
+exact date; do include the page numbers if available.
+
+References should be in ACM citation format:
+\url{http://www.acm.org/publications/submissions/latex_style}. This
+includes citations to Internet
+resources~\cite{CHINOSAUR:venue,cavender:writing,psy:gangnam}
+according to ACM format, although it is often appropriate to include
+URLs directly in the text, as above. Example reference formatting for
+individual journal articles~\cite{ethics}, articles in conference
+proceedings~\cite{Klemmer:2002:WSC:503376.503378},
+books~\cite{Schwartz:1995:GBF}, theses~\cite{sutherland:sketchpad},
+book chapters~\cite{winner:politics}, an entire journal
+issue~\cite{kaye:puc},
+websites~\cite{acm_categories,cavender:writing},
+tweets~\cite{CHINOSAUR:venue}, patents~\cite{heilig:sensorama},
+games~\cite{supermetroid:snes}, and
+online videos~\cite{psy:gangnam} is given here. See the examples of
+citations at the end of this document and in the accompanying
+\texttt{BibTeX} document. This formatting is a edited version of the
+format automatically generated by the ACM Digital Library
+(\url{http://dl.acm.org}) as ``ACM Ref''. DOI and/or URL links are
+optional but encouraged as are full first names. Note that the
+Hyperlink style used throughout this document uses blue links;
+however, URLs in the references section may optionally appear in
+black.
+
+
+
+
+
+\bibliography{sigchi-a}
+\bibliographystyle{SIGCHI-Reference-Format}
+
+\end{document}
diff --git a/Master/texmf-dist/doc/latex/acmart/sample-sigchi.pdf b/Master/texmf-dist/doc/latex/acmart/sample-sigchi.pdf
new file mode 100644
index 00000000000..be1bc34531d
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/acmart/sample-sigchi.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/acmart/sample-sigchi.tex b/Master/texmf-dist/doc/latex/acmart/sample-sigchi.tex
new file mode 100644
index 00000000000..ee44e606e10
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/acmart/sample-sigchi.tex
@@ -0,0 +1,147 @@
+\documentclass[sigchi, review]{acmart}
+
+\usepackage{booktabs} % For formal tables
+
+
+% Copyright
+%\setcopyright{none}
+%\setcopyright{acmcopyright}
+%\setcopyright{acmlicensed}
+\setcopyright{rightsretained}
+%\setcopyright{usgov}
+%\setcopyright{usgovmixed}
+%\setcopyright{cagov}
+%\setcopyright{cagovmixed}
+
+
+% DOI
+\acmDOI{10.475/123_4}
+
+% ISBN
+\acmISBN{123-4567-24-567/08/06}
+
+%Conference
+\acmConference[WOODSTOCK'97]{ACM Woodstock conference}{July 1997}{El
+ Paso, Texas USA}
+\acmYear{1997}
+\copyrightyear{2016}
+
+\acmPrice{15.00}
+
+
+\begin{document}
+\title{SIG Proceedings Paper in LaTeX Format}
+\titlenote{Produces the permission block, and
+ copyright information}
+\subtitle{Extended Abstract}
+\subtitlenote{The full version of the author's guide is available as
+ \texttt{acmart.pdf} document}
+
+\author{Ben Trovato}
+\authornote{Dr.~Trovato insisted his name be first.}
+\affiliation{Institute for Clarity in Documentation\\
+ P.O. Box 1212\\
+ Dublin, Ohio 43017-6221}
+\email{trovato@corporation.com}
+
+\author{G.K.M. Tobin}
+\authornote{The secretary disavows any knowledge of this author's actions.}
+\affiliation{Institute for Clarity in Documentation\\
+ P.O. Box 1212\\
+ Dublin, Ohio 43017-6221}
+\email{webmaster@marysville-ohio.com}
+
+\author{Lars Th{\o}rv{\"a}ld}
+\authornote{This author is the
+ one who did all the really hard work.}
+\affiliation{The Th{\o}rv{\"a}ld Group\\
+ 1 Th{\o}rv{\"a}ld Circle\\
+ Hekla, Iceland}
+\email{larst@affiliation.org}
+
+\author{Lawrence P. Leipuner}
+\affiliation{Brookhaven Laboratories\\
+ P.O. Box 5000}
+\email{lleipuner@researchlabs.org}
+
+\author{Sean Fogarty}
+\affiliation{NASA Ames Research Center\\
+ Moffett Field\\
+ California 94035}
+\email{fogartys@amesres.org}
+
+\author{Charles Palmer}
+\affiliation{Palmer Research Laboratories\\
+ 8600 Datapoint Drive\\
+ San Antonio, Texas 78229}
+\email{cpalmer@prl.com}
+
+\author{John Smith}
+\affiliation{The Th{\o}rv{\"a}ld Group}
+\email{jsmith@affiliation.org}
+
+\author{Julius P.~Kumquat}
+\affiliation{The Kumquat Consortium}
+\email{jpkumquat@consortium.net}
+
+\begin{abstract}
+This paper provides a sample of a \LaTeX\ document which conforms,
+somewhat loosely, to the formatting guidelines for
+ACM SIG Proceedings.
+\end{abstract}
+
+%
+% The code below should be generated by the tool at
+% http://dl.acm.org/ccs.cfm
+% Please copy and paste the code instead of the example below.
+%
+\begin{CCSXML}
+<ccs2012>
+ <concept>
+ <concept_id>10010520.10010553.10010562</concept_id>
+ <concept_desc>Computer systems organization~Embedded systems</concept_desc>
+ <concept_significance>500</concept_significance>
+ </concept>
+ <concept>
+ <concept_id>10010520.10010575.10010755</concept_id>
+ <concept_desc>Computer systems organization~Redundancy</concept_desc>
+ <concept_significance>300</concept_significance>
+ </concept>
+ <concept>
+ <concept_id>10010520.10010553.10010554</concept_id>
+ <concept_desc>Computer systems organization~Robotics</concept_desc>
+ <concept_significance>100</concept_significance>
+ </concept>
+ <concept>
+ <concept_id>10003033.10003083.10003095</concept_id>
+ <concept_desc>Networks~Network reliability</concept_desc>
+ <concept_significance>100</concept_significance>
+ </concept>
+</ccs2012>
+\end{CCSXML}
+
+\ccsdesc[500]{Computer systems organization~Embedded systems}
+\ccsdesc[300]{Computer systems organization~Redundancy}
+\ccsdesc{Computer systems organization~Robotics}
+\ccsdesc[100]{Networks~Network reliability}
+
+% We no longer use \terms command
+%\terms{Theory}
+
+\keywords{ACM proceedings, \LaTeX, text tagging}
+
+\begin{teaserfigure}
+ \includegraphics[width=\textwidth]{sampleteaser}
+ \caption{This is a teaser}
+ \label{fig:teaser}
+\end{teaserfigure}
+
+
+\maketitle
+
+\input{samplebody-conf}
+
+\bibliographystyle{SIGCHI-Reference-Format}
+\bibliography{sigproc}
+
+\end{document}
diff --git a/Master/texmf-dist/doc/latex/acmart/sample-sigconf.pdf b/Master/texmf-dist/doc/latex/acmart/sample-sigconf.pdf
new file mode 100644
index 00000000000..7b71db9ba34
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/acmart/sample-sigconf.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/acmart/sample-sigconf.tex b/Master/texmf-dist/doc/latex/acmart/sample-sigconf.tex
new file mode 100644
index 00000000000..30e1b52e04e
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/acmart/sample-sigconf.tex
@@ -0,0 +1,141 @@
+\documentclass[sigconf]{acmart}
+
+\usepackage{booktabs} % For formal tables
+
+
+% Copyright
+%\setcopyright{none}
+%\setcopyright{acmcopyright}
+%\setcopyright{acmlicensed}
+\setcopyright{rightsretained}
+%\setcopyright{usgov}
+%\setcopyright{usgovmixed}
+%\setcopyright{cagov}
+%\setcopyright{cagovmixed}
+
+
+% DOI
+\acmDOI{10.475/123_4}
+
+% ISBN
+\acmISBN{123-4567-24-567/08/06}
+
+%Conference
+\acmConference[WOODSTOCK'97]{ACM Woodstock conference}{July 1997}{El
+ Paso, Texas USA}
+\acmYear{1997}
+\copyrightyear{2016}
+
+\acmPrice{15.00}
+
+
+\begin{document}
+\title{SIG Proceedings Paper in LaTeX Format}
+\titlenote{Produces the permission block, and
+ copyright information}
+\subtitle{Extended Abstract}
+\subtitlenote{The full version of the author's guide is available as
+ \texttt{acmart.pdf} document}
+
+\author{Ben Trovato}
+\authornote{Dr.~Trovato insisted his name be first.}
+\affiliation{Institute for Clarity in Documentation\\
+ P.O. Box 1212\\
+ Dublin, Ohio 43017-6221}
+\email{trovato@corporation.com}
+
+\author{G.K.M. Tobin}
+\authornote{The secretary disavows any knowledge of this author's actions.}
+\affiliation{Institute for Clarity in Documentation\\
+ P.O. Box 1212\\
+ Dublin, Ohio 43017-6221}
+\email{webmaster@marysville-ohio.com}
+
+\author{Lars Th{\o}rv{\"a}ld}
+\authornote{This author is the
+ one who did all the really hard work.}
+\affiliation{The Th{\o}rv{\"a}ld Group\\
+ 1 Th{\o}rv{\"a}ld Circle\\
+ Hekla, Iceland}
+\email{larst@affiliation.org}
+
+\author{Lawrence P. Leipuner}
+\affiliation{Brookhaven Laboratories\\
+ P.O. Box 5000}
+\email{lleipuner@researchlabs.org}
+
+\author{Sean Fogarty}
+\affiliation{NASA Ames Research Center\\
+ Moffett Field\\
+ California 94035}
+\email{fogartys@amesres.org}
+
+\author{Charles Palmer}
+\affiliation{Palmer Research Laboratories\\
+ 8600 Datapoint Drive\\
+ San Antonio, Texas 78229}
+\email{cpalmer@prl.com}
+
+\author{John Smith}
+\affiliation{The Th{\o}rv{\"a}ld Group}
+\email{jsmith@affiliation.org}
+
+\author{Julius P.~Kumquat}
+\affiliation{The Kumquat Consortium}
+\email{jpkumquat@consortium.net}
+
+\begin{abstract}
+This paper provides a sample of a \LaTeX\ document which conforms,
+somewhat loosely, to the formatting guidelines for
+ACM SIG Proceedings\footnote{This is an abstract footnote}.
+\end{abstract}
+
+%
+% The code below should be generated by the tool at
+% http://dl.acm.org/ccs.cfm
+% Please copy and paste the code instead of the example below.
+%
+\begin{CCSXML}
+<ccs2012>
+ <concept>
+ <concept_id>10010520.10010553.10010562</concept_id>
+ <concept_desc>Computer systems organization~Embedded systems</concept_desc>
+ <concept_significance>500</concept_significance>
+ </concept>
+ <concept>
+ <concept_id>10010520.10010575.10010755</concept_id>
+ <concept_desc>Computer systems organization~Redundancy</concept_desc>
+ <concept_significance>300</concept_significance>
+ </concept>
+ <concept>
+ <concept_id>10010520.10010553.10010554</concept_id>
+ <concept_desc>Computer systems organization~Robotics</concept_desc>
+ <concept_significance>100</concept_significance>
+ </concept>
+ <concept>
+ <concept_id>10003033.10003083.10003095</concept_id>
+ <concept_desc>Networks~Network reliability</concept_desc>
+ <concept_significance>100</concept_significance>
+ </concept>
+</ccs2012>
+\end{CCSXML}
+
+\ccsdesc[500]{Computer systems organization~Embedded systems}
+\ccsdesc[300]{Computer systems organization~Redundancy}
+\ccsdesc{Computer systems organization~Robotics}
+\ccsdesc[100]{Networks~Network reliability}
+
+% We no longer use \terms command
+%\terms{Theory}
+
+\keywords{ACM proceedings, \LaTeX, text tagging}
+
+
+\maketitle
+
+\input{samplebody-conf}
+
+\bibliographystyle{acm-abbrv}
+\bibliography{sigproc}
+
+\end{document}
diff --git a/Master/texmf-dist/doc/latex/acmart/sample-siggraph.pdf b/Master/texmf-dist/doc/latex/acmart/sample-siggraph.pdf
new file mode 100644
index 00000000000..442f627ddde
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/acmart/sample-siggraph.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/acmart/sample-siggraph.tex b/Master/texmf-dist/doc/latex/acmart/sample-siggraph.tex
new file mode 100644
index 00000000000..47979a329fa
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/acmart/sample-siggraph.tex
@@ -0,0 +1,147 @@
+\documentclass[siggraph, natbib=false, review=false]{acmart}
+
+\usepackage{booktabs} % For formal tables
+
+
+% Copyright
+%\setcopyright{none}
+%\setcopyright{acmcopyright}
+%\setcopyright{acmlicensed}
+\setcopyright{rightsretained}
+%\setcopyright{usgov}
+%\setcopyright{usgovmixed}
+%\setcopyright{cagov}
+%\setcopyright{cagovmixed}
+
+
+% DOI
+\acmDOI{10.475/123_4}
+
+% ISBN
+\acmISBN{123-4567-24-567/08/06}
+
+%Conference
+\acmConference[WOODSTOCK'97]{ACM Woodstock conference}{July 1997}{El
+ Paso, Texas USA}
+\acmYear{1997}
+\copyrightyear{2016}
+
+\acmPrice{15.00}
+
+
+\begin{document}
+\title{SIG Proceedings Paper in LaTeX Format}
+\titlenote{Produces the permission block, and
+ copyright information}
+\subtitle{Extended Abstract}
+\subtitlenote{The full version of the author's guide is available as
+ \texttt{acmart.pdf} document}
+
+\author{Ben Trovato}
+\authornote{Dr.~Trovato insisted his name be first.}
+\affiliation{Institute for Clarity in Documentation\\
+ P.O. Box 1212\\
+ Dublin, Ohio 43017-6221}
+\email{trovato@corporation.com}
+
+\author{G.K.M. Tobin}
+\authornote{The secretary disavows any knowledge of this author's actions.}
+\affiliation{Institute for Clarity in Documentation\\
+ P.O. Box 1212\\
+ Dublin, Ohio 43017-6221}
+\email{webmaster@marysville-ohio.com}
+
+\author{Lars Th{\o}rv{\"a}ld}
+\authornote{This author is the
+ one who did all the really hard work.}
+\affiliation{The Th{\o}rv{\"a}ld Group\\
+ 1 Th{\o}rv{\"a}ld Circle\\
+ Hekla, Iceland}
+\email{larst@affiliation.org}
+
+\author{Lawrence P. Leipuner}
+\affiliation{Brookhaven Laboratories\\
+ P.O. Box 5000}
+\email{lleipuner@researchlabs.org}
+
+\author{Sean Fogarty}
+\affiliation{NASA Ames Research Center\\
+ Moffett Field\\
+ California 94035}
+\email{fogartys@amesres.org}
+
+\author{Charles Palmer}
+\affiliation{Palmer Research Laboratories\\
+ 8600 Datapoint Drive\\
+ San Antonio, Texas 78229}
+\email{cpalmer@prl.com}
+
+\author{John Smith}
+\affiliation{The Th{\o}rv{\"a}ld Group}
+\email{jsmith@affiliation.org}
+
+\author{Julius P.~Kumquat}
+\affiliation{The Kumquat Consortium}
+\email{jpkumquat@consortium.net}
+
+\begin{abstract}
+This paper provides a sample of a \LaTeX\ document which conforms,
+somewhat loosely, to the formatting guidelines for
+ACM SIG Proceedings.
+\end{abstract}
+
+%
+% The code below should be generated by the tool at
+% http://dl.acm.org/ccs.cfm
+% Please copy and paste the code instead of the example below.
+%
+\begin{CCSXML}
+<ccs2012>
+ <concept>
+ <concept_id>10010520.10010553.10010562</concept_id>
+ <concept_desc>Computer systems organization~Embedded systems</concept_desc>
+ <concept_significance>500</concept_significance>
+ </concept>
+ <concept>
+ <concept_id>10010520.10010575.10010755</concept_id>
+ <concept_desc>Computer systems organization~Redundancy</concept_desc>
+ <concept_significance>300</concept_significance>
+ </concept>
+ <concept>
+ <concept_id>10010520.10010553.10010554</concept_id>
+ <concept_desc>Computer systems organization~Robotics</concept_desc>
+ <concept_significance>100</concept_significance>
+ </concept>
+ <concept>
+ <concept_id>10003033.10003083.10003095</concept_id>
+ <concept_desc>Networks~Network reliability</concept_desc>
+ <concept_significance>100</concept_significance>
+ </concept>
+</ccs2012>
+\end{CCSXML}
+
+\ccsdesc[500]{Computer systems organization~Embedded systems}
+\ccsdesc[300]{Computer systems organization~Redundancy}
+\ccsdesc{Computer systems organization~Robotics}
+\ccsdesc[100]{Networks~Network reliability}
+
+% We no longer use \terms command
+%\terms{Theory}
+
+\keywords{ACM proceedings, \LaTeX, text tagging}
+
+\begin{teaserfigure}
+ \includegraphics[width=\textwidth]{sampleteaser}
+ \caption{This is a teaser}
+ \label{fig:teaser}
+\end{teaserfigure}
+
+
+\maketitle
+
+\input{samplebody-conf}
+
+\bibliographystyle{acmsiggraph}
+\bibliography{sigproc}
+
+\end{document}
diff --git a/Master/texmf-dist/doc/latex/acmart/sample-sigplan.pdf b/Master/texmf-dist/doc/latex/acmart/sample-sigplan.pdf
new file mode 100644
index 00000000000..d47cd22bb84
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/acmart/sample-sigplan.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/acmart/sample-sigplan.tex b/Master/texmf-dist/doc/latex/acmart/sample-sigplan.tex
new file mode 100644
index 00000000000..7a3d3808283
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/acmart/sample-sigplan.tex
@@ -0,0 +1,150 @@
+\documentclass[sigplan, natbib=true, anonymous, review]{acmart}
+
+\usepackage{booktabs} % For formal tables
+
+
+% Copyright
+%\setcopyright{none}
+%\setcopyright{acmcopyright}
+%\setcopyright{acmlicensed}
+\setcopyright{rightsretained}
+%\setcopyright{usgov}
+%\setcopyright{usgovmixed}
+%\setcopyright{cagov}
+%\setcopyright{cagovmixed}
+
+
+% DOI
+\acmDOI{10.475/123_4}
+
+% ISBN
+\acmISBN{123-4567-24-567/08/06}
+
+%Conference
+\acmConference[WOODSTOCK'97]{ACM Woodstock conference}{July 1997}{El
+ Paso, Texas USA}
+\acmYear{1997}
+\copyrightyear{2016}
+
+\acmPrice{15.00}
+
+%\acmBadgeL[http://ctuning.org/ae/ppopp2016.html]{ae-logo}
+\acmBadgeR[http://ctuning.org/ae/ppopp2016.html]{ae-logo}
+
+
+\begin{document}
+\title{SIG Proceedings Paper in LaTeX Format}
+\titlenote{Produces the permission block, and
+ copyright information}
+\subtitle{Extended Abstract}
+\subtitlenote{The full version of the author's guide is available as
+ \texttt{acmart.pdf} document}
+
+\author{Ben Trovato}
+\authornote{Dr.~Trovato insisted his name be first.}
+\affiliation{Institute for Clarity in Documentation\\
+ P.O. Box 1212\\
+ Dublin, Ohio 43017-6221}
+\email{trovato@corporation.com}
+
+\author{G.K.M. Tobin}
+\authornote{The secretary disavows any knowledge of this author's actions.}
+\affiliation{Institute for Clarity in Documentation\\
+ P.O. Box 1212\\
+ Dublin, Ohio 43017-6221}
+\email{webmaster@marysville-ohio.com}
+
+\author{Lars Th{\o}rv{\"a}ld}
+\authornote{This author is the
+ one who did all the really hard work.}
+\affiliation{The Th{\o}rv{\"a}ld Group\\
+ 1 Th{\o}rv{\"a}ld Circle\\
+ Hekla, Iceland}
+\email{larst@affiliation.org}
+
+\author{Lawrence P. Leipuner}
+\affiliation{Brookhaven Laboratories\\
+ P.O. Box 5000}
+\email{lleipuner@researchlabs.org}
+
+\author{Sean Fogarty}
+\affiliation{NASA Ames Research Center\\
+ Moffett Field\\
+ California 94035}
+\email{fogartys@amesres.org}
+
+\author{Charles Palmer}
+\affiliation{Palmer Research Laboratories\\
+ 8600 Datapoint Drive\\
+ San Antonio, Texas 78229}
+\email{cpalmer@prl.com}
+
+\author{John Smith}
+\affiliation{The Th{\o}rv{\"a}ld Group}
+\email{jsmith@affiliation.org}
+
+\author{Julius P.~Kumquat}
+\affiliation{The Kumquat Consortium}
+\email{jpkumquat@consortium.net}
+
+\begin{abstract}
+This paper provides a sample of a \LaTeX\ document which conforms,
+somewhat loosely, to the formatting guidelines for
+ACM SIG Proceedings.
+\end{abstract}
+
+%
+% The code below should be generated by the tool at
+% http://dl.acm.org/ccs.cfm
+% Please copy and paste the code instead of the example below.
+%
+\begin{CCSXML}
+<ccs2012>
+ <concept>
+ <concept_id>10010520.10010553.10010562</concept_id>
+ <concept_desc>Computer systems organization~Embedded systems</concept_desc>
+ <concept_significance>500</concept_significance>
+ </concept>
+ <concept>
+ <concept_id>10010520.10010575.10010755</concept_id>
+ <concept_desc>Computer systems organization~Redundancy</concept_desc>
+ <concept_significance>300</concept_significance>
+ </concept>
+ <concept>
+ <concept_id>10010520.10010553.10010554</concept_id>
+ <concept_desc>Computer systems organization~Robotics</concept_desc>
+ <concept_significance>100</concept_significance>
+ </concept>
+ <concept>
+ <concept_id>10003033.10003083.10003095</concept_id>
+ <concept_desc>Networks~Network reliability</concept_desc>
+ <concept_significance>100</concept_significance>
+ </concept>
+</ccs2012>
+\end{CCSXML}
+
+\ccsdesc[500]{Computer systems organization~Embedded systems}
+\ccsdesc[300]{Computer systems organization~Redundancy}
+\ccsdesc{Computer systems organization~Robotics}
+\ccsdesc[100]{Networks~Network reliability}
+
+% We no longer use \terms command
+%\terms{Theory}
+
+\keywords{ACM proceedings, \LaTeX, text tagging}
+
+\begin{teaserfigure}
+ \includegraphics[width=\textwidth]{sampleteaser}
+ \caption{This is a teaser}
+ \label{fig:teaser}
+\end{teaserfigure}
+
+
+\maketitle
+
+\input{samplebody-conf}
+
+\bibliographystyle{ACM-Reference-Format-Journals}
+\bibliography{sigproc}
+
+\end{document}
diff --git a/Master/texmf-dist/doc/latex/acmart/samplebody-conf.tex b/Master/texmf-dist/doc/latex/acmart/samplebody-conf.tex
new file mode 100644
index 00000000000..fa1cf0535df
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/acmart/samplebody-conf.tex
@@ -0,0 +1,364 @@
+\section{Introduction}
+
+The \textit{proceedings} are the records of a conference\footnote{This
+ is a footnote}. ACM seeks
+to give these conference by-products a uniform, high-quality
+appearance. To do this, ACM has some rigid requirements for the
+format of the proceedings documents: there is a specified format
+(balanced double columns), a specified set of fonts (Arial or
+Helvetica and Times Roman) in certain specified sizes, a specified
+live area, centered on the page, specified size of margins, specified
+column width and gutter size.
+
+\section{The Body of The Paper}
+Typically, the body of a paper is organized into a hierarchical
+structure, with numbered or unnumbered headings for sections,
+subsections, sub-subsections, and even smaller sections. The command
+\texttt{{\char'134}section} that precedes this paragraph is part of
+such a hierarchy.\footnote{This is a footnote.} \LaTeX\ handles the
+numbering and placement of these headings for you, when you use the
+appropriate heading commands around the titles of the headings. If
+you want a sub-subsection or smaller part to be unnumbered in your
+output, simply append an asterisk to the command name. Examples of
+both numbered and unnumbered headings will appear throughout the
+balance of this sample document.
+
+Because the entire article is contained in the \textbf{document}
+environment, you can indicate the start of a new paragraph with a
+blank line in your input file; that is why this sentence forms a
+separate paragraph.
+
+\subsection{Type Changes and {\itshape Special} Characters}
+
+We have already seen several typeface changes in this sample. You can
+indicate italicized words or phrases in your text with the command
+\texttt{{\char'134}textit}; emboldening with the command
+\texttt{{\char'134}textbf} and typewriter-style (for instance, for
+computer code) with \texttt{{\char'134}texttt}. But remember, you do
+not have to indicate typestyle changes when such changes are part of
+the \textit{structural} elements of your article; for instance, the
+heading of this subsection will be in a sans serif\footnote{Another
+ footnote, here. Let's make this a rather short one to see how it
+ looks.} typeface, but that is handled by the document class file.
+Take care with the use of\footnote{A third, and last, footnote.} the
+curly braces in typeface changes; they mark the beginning and end of
+the text that is to be in the different typeface.
+
+You can use whatever symbols, accented characters, or non-English
+characters you need anywhere in your document; you can find a complete
+list of what is available in the \textit{\LaTeX\ User's Guide}
+\cite{Lamport:LaTeX}.
+
+\subsection{Math Equations}
+You may want to display math equations in three distinct styles:
+inline, numbered or non-numbered display. Each of
+the three are discussed in the next sections.
+
+\subsubsection{Inline (In-text) Equations}
+A formula that appears in the running text is called an
+inline or in-text formula. It is produced by the
+\textbf{math} environment, which can be
+invoked with the usual \texttt{{\char'134}begin\,\ldots{\char'134}end}
+construction or with the short form \texttt{\$\,\ldots\$}. You
+can use any of the symbols and structures,
+from $\alpha$ to $\omega$, available in
+\LaTeX~\cite{Lamport:LaTeX}; this section will simply show a
+few examples of in-text equations in context. Notice how
+this equation:
+\begin{math}
+ \lim_{n\rightarrow \infty}x=0
+\end{math},
+set here in in-line math style, looks slightly different when
+set in display style. (See next section).
+
+\subsubsection{Display Equations}
+A numbered display equation---one set off by vertical space from the
+text and centered horizontally---is produced by the \textbf{equation}
+environment. An unnumbered display equation is produced by the
+\textbf{displaymath} environment.
+
+Again, in either environment, you can use any of the symbols
+and structures available in \LaTeX\@; this section will just
+give a couple of examples of display equations in context.
+First, consider the equation, shown as an inline equation above:
+\begin{equation}
+ \lim_{n\rightarrow \infty}x=0
+\end{equation}
+Notice how it is formatted somewhat differently in
+the \textbf{displaymath}
+environment. Now, we'll enter an unnumbered equation:
+\begin{displaymath}
+ \sum_{i=0}^{\infty} x + 1
+\end{displaymath}
+and follow it with another numbered equation:
+\begin{equation}
+ \sum_{i=0}^{\infty}x_i=\int_{0}^{\pi+2} f
+\end{equation}
+just to demonstrate \LaTeX's able handling of numbering.
+
+\subsection{Citations}
+Citations to articles~\cite{bowman:reasoning,
+clark:pct, braams:babel, herlihy:methodology},
+conference proceedings~\cite{clark:pct} or maybe
+books \cite{Lamport:LaTeX, salas:calculus} listed
+in the Bibliography section of your
+article will occur throughout the text of your article.
+You should use BibTeX to automatically produce this bibliography;
+you simply need to insert one of several citation commands with
+a key of the item cited in the proper location in
+the \texttt{.tex} file~\cite{Lamport:LaTeX}.
+The key is a short reference you invent to uniquely
+identify each work; in this sample document, the key is
+the first author's surname and a
+word from the title. This identifying key is included
+with each item in the \texttt{.bib} file for your article.
+
+The details of the construction of the \texttt{.bib} file
+are beyond the scope of this sample document, but more
+information can be found in the \textit{Author's Guide},
+and exhaustive details in the \textit{\LaTeX\ User's
+Guide}~\cite{Lamport:LaTeX}.
+
+This article shows only the plainest form
+of the citation command, using \texttt{{\char'134}cite}.
+
+\subsection{Tables}
+Because tables cannot be split across pages, the best
+placement for them is typically the top of the page
+nearest their initial cite. To
+ensure this proper ``floating'' placement of tables, use the
+environment \textbf{table} to enclose the table's contents and
+the table caption. The contents of the table itself must go
+in the \textbf{tabular} environment, to
+be aligned properly in rows and columns, with the desired
+horizontal and vertical rules. Again, detailed instructions
+on \textbf{tabular} material
+are found in the \textit{\LaTeX\ User's Guide}.
+
+Immediately following this sentence is the point at which
+Table~\ref{tab:freq} is included in the input file; compare the
+placement of the table here with the table in the printed
+output of this document.
+
+\begin{table}
+ \centering
+ \caption{Frequency of Special Characters}
+ \label{tab:freq}
+ \begin{tabular}{ccl}
+ \toprule
+ Non-English or Math&Frequency&Comments\\
+ \midrule
+ \O & 1 in 1,000& For Swedish names\\
+ $\pi$ & 1 in 5& Common in math\\
+ \$ & 4 in 5 & Used in business\\
+ $\Psi^2_1$ & 1 in 40,000& Unexplained usage\\
+ \bottomrule
+\end{tabular}
+\end{table}
+
+To set a wider table, which takes up the whole width of the page's
+live area, use the environment \textbf{table*} to enclose the table's
+contents and the table caption. As with a single-column table, this
+wide table will ``float'' to a location deemed more desirable.
+Immediately following this sentence is the point at which
+Table~\ref{tab:commands} is included in the input file; again, it is
+instructive to compare the placement of the table here with the table
+in the printed output of this document.
+
+
+\begin{table*}
+ \centering
+ \caption{Some Typical Commands}
+ \label{tab:commands}
+ \begin{tabular}{ccl}
+ \toprule
+ Command &A Number & Comments\\
+ \midrule
+ \texttt{{\char'134}author} & 100& Author \\
+ \texttt{{\char'134}table}& 300 & For tables\\
+ \texttt{{\char'134}table*}& 400& For wider tables\\
+ \bottomrule
+ \end{tabular}
+\end{table*}
+% end the environment with {table*}, NOTE not {table}!
+
+It is strongly recommended to use the package booktabs~\cite{Fear05}
+and follow its main principles of typography with respect to tables:
+\begin{enumerate}
+\item Never, ever use vertical rules.
+\item Never use double rules.
+\end{enumerate}
+It is also a good idea not to overuse horizontal rules.
+
+
+\subsection{Figures}
+
+Like tables, figures cannot be split across pages; the best placement
+for them is typically the top or the bottom of the page nearest their
+initial cite. To ensure this proper ``floating'' placement of
+figures, use the environment \textbf{figure} to enclose the figure and
+its caption.
+
+This sample document contains examples of \texttt{.eps} files to be
+displayable with \LaTeX. If you work with pdf\LaTeX, use files in the
+\texttt{.pdf} format. Note that most modern \TeX\ systems will convert
+\texttt{.eps} to \texttt{.pdf} for you on the fly. More details on
+each of these are found in the \textit{Author's Guide}.
+
+\begin{figure}
+\centering
+\includegraphics{fly}
+\caption{A sample black and white graphic.}
+\end{figure}
+
+\begin{figure}
+\centering
+\includegraphics[height=1in, width=1in]{fly}
+\caption{A sample black and white graphic
+that has been resized with the \texttt{includegraphics} command.}
+\end{figure}
+
+
+As was the case with tables, you may want a figure that spans two
+columns. To do this, and still to ensure proper ``floating''
+placement of tables, use the environment \textbf{figure*} to enclose
+the figure and its caption. And don't forget to end the environment
+with \textbf{figure*}, not \textbf{figure}!
+
+\begin{figure*}
+\centering
+\includegraphics{flies}
+\caption{A sample black and white graphic
+that needs to span two columns of text.}
+\end{figure*}
+
+
+\begin{figure}
+\centering
+\includegraphics[height=1in, width=1in]{rosette}
+\caption{A sample black and white graphic that has
+been resized with the \texttt{includegraphics} command.}
+\end{figure}
+
+\subsection{Theorem-like Constructs}
+
+Other common constructs that may occur in your article are the forms
+for logical constructs like theorems, axioms, corollaries and proofs.
+ACM uses two types of these constructs: theorem-like and
+definition-like.
+
+Here is a theorem:
+\begin{theorem}
+ Let $f$ be continuous on $[a,b]$. If $G$ is
+ an antiderivative for $f$ on $[a,b]$, then
+ \begin{displaymath}
+ \int^b_af(t)\,dt = G(b) - G(a).
+ \end{displaymath}
+\end{theorem}
+
+Here is a definition:
+\begin{definition}
+ If $z$ is irrational, then by $e^z$ we mean the
+ unique number that has
+ logarithm $z$:
+ \begin{displaymath}
+ \log e^z = z.
+ \end{displaymath}
+\end{definition}
+
+The pre-defined theorem-like constructs are \textbf{theorem},
+\textbf{conjecture}, \textbf{proposition}, \textbf{lemma} and
+\textbf{corollary}. The pre-defined definition-like constructs are
+\textbf{example} and \textbf{definition}. You can add your own
+constructs using the \textsl{amsthm} interface~\cite{Amsthm15}. The
+styles used in the \verb|\theoremstyle| command are \textbf{acmplain}
+and \textbf{acmdefinition}.
+
+Another construct is \textbf{proof}, for example,
+
+\begin{proof}
+ Suppose on the contrary there exists a real number $L$ such that
+ \begin{displaymath}
+ \lim_{x\rightarrow\infty} \frac{f(x)}{g(x)} = L.
+ \end{displaymath}
+ Then
+ \begin{displaymath}
+ l=\lim_{x\rightarrow c} f(x)
+ = \lim_{x\rightarrow c}
+ \left[ g{x} \cdot \frac{f(x)}{g(x)} \right ]
+ = \lim_{x\rightarrow c} g(x) \cdot \lim_{x\rightarrow c}
+ \frac{f(x)}{g(x)} = 0\cdot L = 0,
+ \end{displaymath}
+ which contradicts our assumption that $l\neq 0$.
+\end{proof}
+
+\section{Conclusions}
+This paragraph will end the body of this sample document.
+Remember that you might still have Acknowledgments or
+Appendices; brief samples of these
+follow. There is still the Bibliography to deal with; and
+we will make a disclaimer about that here: with the exception
+of the reference to the \LaTeX\ book, the citations in
+this paper are to articles which have nothing to
+do with the present subject and are used as
+examples only.
+%\end{document} % This is where a 'short' article might terminate
+
+%ACKNOWLEDGMENTS are optional
+\section{Acknowledgments}
+This section is optional; it is a location for you
+to acknowledge grants, funding, editing assistance and
+what have you. In the present case, for example, the
+authors would like to thank Gerald Murray of ACM for
+his help in codifying this \textit{Author's Guide}
+and the \texttt{.cls} and \texttt{.tex} files that it describes.
+
+
+\appendix
+%Appendix A
+\section{Headings in Appendices}
+The rules about hierarchical headings discussed above for
+the body of the article are different in the appendices.
+In the \textbf{appendix} environment, the command
+\textbf{section} is used to
+indicate the start of each Appendix, with alphabetic order
+designation (i.e., the first is A, the second B, etc.) and
+a title (if you include one). So, if you need
+hierarchical structure
+\textit{within} an Appendix, start with \textbf{subsection} as the
+highest level. Here is an outline of the body of this
+document in Appendix-appropriate form:
+\subsection{Introduction}
+\subsection{The Body of the Paper}
+\subsubsection{Type Changes and Special Characters}
+\subsubsection{Math Equations}
+\paragraph{Inline (In-text) Equations}
+\paragraph{Display Equations}
+\subsubsection{Citations}
+\subsubsection{Tables}
+\subsubsection{Figures}
+\subsubsection{Theorem-like Constructs}
+\subsubsection*{A Caveat for the \TeX\ Expert}
+\subsection{Conclusions}
+\subsection{Acknowledgments}
+\subsection{References}
+Generated by bibtex from your \texttt{.bib} file. Run latex,
+then bibtex, then latex twice (to resolve references)
+to create the \texttt{.bbl} file. Insert that \texttt{.bbl}
+file into the \texttt{.tex} source file and comment out
+the command \texttt{{\char'134}thebibliography}.
+% This next section command marks the start of
+% Appendix B, and does not continue the present hierarchy
+\section{More Help for the Hardy}
+
+Of course, reading the source code is always useful. The file
+\texttt{acmart.pdf} contains both the user guide and the commented
+code.
+
+\section*{Acknowledgements}
+\label{sec:acks}
+
+\begin{anonsuppress}
+ The acknowledgements are suppressed when the paper is prepared for a
+ blind review.
+\end{anonsuppress} \ No newline at end of file
diff --git a/Master/texmf-dist/doc/latex/acmart/samplebody-journals.tex b/Master/texmf-dist/doc/latex/acmart/samplebody-journals.tex
new file mode 100644
index 00000000000..3985832e1a6
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/acmart/samplebody-journals.tex
@@ -0,0 +1,370 @@
+
+\section{Introduction}
+
+As a new technology, Wireless Sensor Networks (WSNs) has a wide
+range of applications \cite{Culler-01, Bahl-02, Akyildiz-01}, including
+environment monitoring, smart buildings, medical care, industrial and
+military applications. Among them, a recent trend is to develop
+commercial sensor networks that require pervasive sensing of both
+environment and human beings, for example, assisted living
+\cite{Akyildiz-02, Harvard-01,CROSSBOW} and smart homes
+\cite{Harvard-01, Adya-01,CROSSBOW}.
+% quote
+\begin{quote}
+ ``For these applications, sensor devices are incorporated into human
+ cloths \cite{Natarajan-01, Zhou-06, Bahl-02, Adya-01} for monitoring
+ health related information like EKG readings, fall detection, and
+ voice recognition''.
+\end{quote}
+While collecting all these multimedia information
+\cite{Akyildiz-02} requires a high network throughput, off-the-shelf
+sensor devices only provide very limited bandwidth in a single
+channel: 19.2\,Kbps in MICA2 \cite{Bahl-02} and 250\,Kbps in MICAz.
+
+In this article, we propose MMSN, abbreviation for Multifrequency
+Media access control for wireless Sensor Networks. The main
+contributions of this work can be summarized as follows.
+% itemize
+\begin{itemize}
+\item To the best of our knowledge, the MMSN protocol is the first
+multifrequency MAC protocol especially designed for WSNs, in which
+each device is equipped with a single radio transceiver and
+the MAC layer packet size is very small.
+\item Instead of using pairwise RTS/CTS frequency negotiation
+\cite{Adya-01, Culler-01, Tzamaloukas-01, Zhou-06},
+we propose lightweight frequency assignments, which are good choices
+for many deployed comparatively static WSNs.
+\item We develop new toggle transmission and snooping techniques to
+enable a single radio transceiver in a sensor device to achieve
+scalable performance, avoiding the nonscalable ``one
+control channel + multiple data channels'' design \cite{Natarajan-01}.
+\end{itemize}
+
+% Head 1
+\section{MMSN Protocol}
+
+% Head 2
+\subsection{Frequency Assignment}
+
+We propose a suboptimal distribution to be used by each node, which is
+easy to compute and does not depend on the number of competing
+nodes. A natural candidate is an increasing geometric sequence, in
+which
+% Numbered Equation
+\begin{equation}
+\label{eqn:01}
+P(t)=\frac{b^{\frac{t+1}{T+1}}-b^{\frac{t}{T+1}}}{b-1},
+\end{equation}
+where $t=0,{\ldots}\,,T$, and $b$ is a number greater than $1$.
+
+In our algorithm, we use the suboptimal approach for simplicity and
+generality. We need to make the distribution of the selected back-off
+time slice at each node conform to what is shown in
+Equation~\eqref{eqn:01}. It is implemented as follows: First, a random
+variable $\alpha$ with a uniform distribution within the interval $(0,
+1)$ is generated on each node, then time slice $i$ is selected
+according to the following equation:
+% Unnumbered Equation
+\[
+i=\lfloor(T+1)\log_b[\alpha(b-1)+1]\rfloor.
+\]
+It can be easily proven that the distribution of $i$ conforms to Equation
+(\ref{eqn:01}).
+
+So protocols \cite{Bahl-02, Culler-01,Zhou-06,Adya-01,
+Tzamaloukas-01, Akyildiz-01} that use RTS/CTS
+controls\footnote{RTS/CTS controls are required to be implemented by
+802.11-compliant devices. They can be used as an optional mechanism
+to avoid Hidden Terminal Problems in the 802.11 standard and
+protocols based on those similar to \cite{Akyildiz-01} and
+\cite{Adya-01}.} for frequency negotiation and reservation are not
+suitable for WSN applications, even though they exhibit good
+performance in general wireless ad hoc
+networks.
+
+% Head 3
+\subsubsection{Exclusive Frequency Assignment}
+
+
+In exclusive frequency assignment, nodes first exchange their IDs
+among two communication hops so that each node knows its two-hop
+neighbors' IDs. In the second broadcast, each node beacons all
+neighbors' IDs it has collected during the first broadcast period.
+
+% Head 4
+\paragraph{Eavesdropping}
+
+Even though the even selection scheme leads to even sharing of
+available frequencies among any two-hop neighborhood, it involves a
+number of two-hop broadcasts. To reduce the communication cost, we
+propose a lightweight eavesdropping scheme.
+
+\subsection{Basic Notations}
+
+As Algorithm~\ref{alg:one} states, for each frequency
+number, each node calculates a random number (${\textit{Rnd}}_{\alpha}$) for
+itself and a random number (${\textit{Rnd}}_{\beta}$) for each of its two-hop
+neighbors with the same pseudorandom number generator.
+
+% Algorithm
+\begin{algorithm}[t]
+\SetAlgoNoLine
+\KwIn{Node $\alpha$'s ID ($ID_{\alpha}$), and node $\alpha$'s
+neighbors' IDs within two communication hops.}
+\KwOut{The frequency number ($FreNum_{\alpha}$) node $\alpha$ gets assigned.}
+$index$ = 0; $FreNum_{\alpha}$ = -1\;
+\Repeat{$FreNum_{\alpha} > -1$}{
+ $Rnd_{\alpha}$ = Random($ID_{\alpha}$, $index$)\;
+ $Found$ = $TRUE$\;
+ \For{each node $\beta$ in $\alpha$'s two communication hops
+ }{
+ $Rnd_{\beta}$ = Random($ID_{\beta}$, $index$)\;
+ \If{($Rnd_{\alpha} < Rnd_{\beta}$) \text{or} ($Rnd_{\alpha}$ ==
+ $Rnd_{\beta}$ \text{and} $ID_{\alpha} < ID_{\beta}$)\;
+ }{
+ $Found$ = $FALSE$; break\;
+ }
+ }
+ \eIf{$Found$}{
+ $FreNum_{\alpha}$ = $index$\;
+ }{
+ $index$ ++\;
+ }
+ }
+\caption{Frequency Number Computation}
+\label{alg:one}
+\end{algorithm}
+
+
+Bus masters are divided into two disjoint sets, $\mathcal{M}_{RT}$
+and $\mathcal{M}_{NRT}$.
+% description
+\begin{description}
+\item[RT Masters]
+$\mathcal{M}_{RT}=\{ \vec{m}_{1},\dots,\vec{m}_{n}\}$ denotes the
+$n$ RT masters issuing real-time constrained requests. To model the
+current request issued by an $\vec{m}_{i}$ in $\mathcal{M}_{RT}$,
+three parameters---the recurrence time $(r_i)$, the service cycle
+$(c_i)$, and the relative deadline $(d_i)$---are used, with their
+relationships.
+\item[NRT Masters]
+$\mathcal{M}_{NRT}=\{ \vec{m}_{n+1},\dots,\vec{m}_{n+m}\}$ is a set
+of $m$ masters issuing nonreal-time constrained requests. In our
+model, each $\vec{m}_{j}$ in $\mathcal{M}_{NRT}$ needs only one
+parameter, the service cycle, to model the current request it
+issues.
+\end{description}
+
+Here, a question may arise, since each node has a global ID. Why
+don't we just map nodes' IDs within two hops into a group of
+frequency numbers and assign those numbers to all nodes within two
+hops?
+
+\section{Simulator}
+\label{sec:sim}
+
+If the model checker requests successors of a state which are not
+created yet, the state space uses the simulator to create the
+successors on-the-fly. To create successor states the simulator
+conducts the following steps.
+% enumerate
+\begin{enumerate}
+\item Load state into microcontroller model.
+\item Determine assignments needed for resolving nondeterminism.
+\item For each assignment.
+ \begin{enumerate}
+ \item either call interrupt handler or simulate effect of next instruction, or
+ \item evaluate truth values of atomic propositions.
+ \end{enumerate}
+\item Return resulting states.
+\end{enumerate}
+Figure~\ref{fig:one} shows a typical microcontroller C program that
+controls an automotive power window lift. The program is one of the
+programs used in the case study described in Section~\ref{sec:sim}.
+At first sight, the programs looks like an ANSI~C program. It
+contains function calls, assignments, if clauses, and while loops.
+% Figure
+\begin{figure}
+ \centering
+ \includegraphics{mouse}
+ \caption{Code before preprocessing.}
+ \label{fig:one}
+\end{figure}
+
+\subsection{Problem Formulation}
+
+The objective of variable coalescence-based offset assignment is to find
+both the coalescence scheme and the MWPC on the coalesced graph. We start
+with a few definitions and lemmas for variable coalescence.
+
+% Enunciations
+\begin{definition}[Coalesced Node (C-Node)]A C-node is a set of
+live ranges (webs) in the AG or IG that are coalesced. Nodes within the same
+C-node cannot interfere with each other on the IG. Before any coalescing is
+done, each live range is a C-node by itself.
+\end{definition}
+
+\begin{definition}[C-AG (Coalesced Access Graph)]The C-AG is the access
+graph after node coalescence, which is composed of all C-nodes and C-edges.
+\end{definition}
+
+\begin{lemma}
+The C-MWPC problem is NP-complete.
+\end{lemma}
+\begin{proof} C-MWPC can be easily reduced to the MWPC problem assuming a
+coalescence graph without any edge or a fully connected interference graph.
+Therefore, each C-node is an uncoalesced live range after value separation
+and C-PC is equivalent to PC. A fully connected interference graph is made
+possible when all live ranges interfere with each other. Thus, the C-MWPC
+problem is NP-complete.
+\end{proof}
+
+\begin{lemma}[Lemma Subhead]The solution to the C-MWPC problem is no
+worse than the solution to the MWPC.
+\end{lemma}
+\begin{proof}
+Simply, any solution to the MWPC is also a solution to the
+C-MWPC. But some solutions to C-MWPC may not apply to the MWPC (if any
+coalescing were made).
+\end{proof}
+
+\section{Performance Evaluation}
+
+During all the experiments, the Geographic Forwarding (GF)
+\cite{Akyildiz-01} routing protocol is used. GF exploits geographic
+information of nodes and conducts local data-forwarding to achieve
+end-to-end routing. Our simulation is configured according to the
+settings in Table~\ref{tab:one}. Each run lasts for 2 minutes and
+repeated 100 times. For each data value we present in the results, we
+also give its 90\% confidence interval.
+
+% Table
+\begin{table}%
+\caption{Simulation Configuration}
+\label{tab:one}
+\begin{minipage}{\columnwidth}
+\begin{center}
+\begin{tabular}{ll}
+ \toprule
+ TERRAIN\footnote{This is a table footnote. This is a
+ table footnote. This is a table footnote.} & (200m$\times$200m) Square\\
+ Node Number & 289\\
+ Node Placement & Uniform\\
+ Application & Many-to-Many/Gossip CBR Streams\\
+ Payload Size & 32 bytes\\
+ Routing Layer & GF\\
+ MAC Layer & CSMA/MMSN\\
+ Radio Layer & RADIO-ACCNOISE\\
+ Radio Bandwidth & 250Kbps\\
+ Radio Range & 20m--45m\\
+ \bottomrule
+\end{tabular}
+\end{center}
+\bigskip
+\footnotesize\emph{Source:} This is a table
+ sourcenote. This is a table sourcenote. This is a table
+ sourcenote.
+
+ \emph{Note:} This is a table footnote.
+\end{minipage}
+\end{table}%
+
+
+\section{Conclusions}
+
+In this article, we develop the first multifrequency MAC protocol for
+WSN applications in which each device adopts a
+single radio transceiver. The different MAC design requirements for
+WSNs and general wireless ad-hoc networks are
+compared, and a complete WSN multifrequency MAC design (MMSN) is
+put forth. During the MMSN design, we analyze and evaluate different
+choices for frequency assignments and also discuss the nonuniform
+back-off algorithms for the slotted media access design.
+
+% Start of "Sample References" section
+
+\section{Typical references in new ACM Reference Format}
+A paginated journal article \cite{Abril07}, an enumerated
+journal article \cite{Cohen07}, a reference to an entire issue \cite{JCohen96},
+a monograph (whole book) \cite{Kosiur01}, a monograph/whole book in a series (see 2a in spec. document)
+\cite{Harel79}, a divisible-book such as an anthology or compilation \cite{Editor00}
+followed by the same example, however we only output the series if the volume number is given
+\cite{Editor00a} (so Editor00a's series should NOT be present since it has no vol. no.),
+a chapter in a divisible book \cite{Spector90}, a chapter in a divisible book
+in a series \cite{Douglass98}, a multi-volume work as book \cite{Knuth97},
+an article in a proceedings (of a conference, symposium, workshop for example)
+(paginated proceedings article) \cite{Andler79}, a proceedings article
+with all possible elements \cite{Smith10}, an example of an enumerated
+proceedings article \cite{VanGundy07},
+an informally published work \cite{Harel78}, a doctoral dissertation \cite{Clarkson85},
+a master's thesis: \cite{anisi03}, an online document / world wide web
+resource \cite{Thornburg01, Ablamowicz07, Poker06}, a video game (Case 1) \cite{Obama08} and (Case 2) \cite{Novak03}
+and \cite{Lee05} and (Case 3) a patent \cite{JoeScientist001},
+work accepted for publication \cite{rous08}, 'YYYYb'-test for prolific author
+\cite{SaeediMEJ10} and \cite{SaeediJETC10}. Other cites might contain
+'duplicate' DOI and URLs (some SIAM articles) \cite{Kirschmer:2010:AEI:1958016.1958018}.
+Boris / Barbara Beeton: multi-volume works as books
+\cite{MR781536} and \cite{MR781537}.
+
+% Appendix
+\appendix
+\section{Switching times}
+
+In this appendix, we measure the channel switching time of Micaz
+\cite{CROSSBOW} sensor devices. In our experiments, one mote
+alternatingly switches between Channels~11 and~12. Every time after
+the node switches to a channel, it sends out a packet immediately and
+then changes to a new channel as soon as the transmission is finished.
+We measure the number of packets the test mote can send in 10 seconds,
+denoted as $N_{1}$. In contrast, we also measure the same value of the
+test mote without switching channels, denoted as $N_{2}$. We calculate
+the channel-switching time $s$ as
+\begin{displaymath}%
+s=\frac{10}{N_{1}}-\frac{10}{N_{2}}/
+\end{displaymath}%
+By repeating the experiments 100 times, we get the average
+channel-switching time of Micaz motes: 24.3\,$\mu$s.
+
+\section{Supplementary materials}
+
+
+\begin{printonly}
+ See the supplementary materials in the online version
+\end{printonly}
+
+\begin{screenonly}
+\subsection{This is an example of Appendix subsection head}
+
+Channel-switching time is measured as the time length it takes for
+motes to successfully switch from one channel to another. This
+parameter impacts the maximum network throughput, because motes
+cannot receive or send any packet during this period of time, and it
+also affects the efficiency of toggle snooping in MMSN, where motes
+need to sense through channels rapidly.
+
+By repeating experiments 100 times, we get the average
+channel-switching time of Micaz motes: 24.3 $\mu$s. We then conduct
+the same experiments with different Micaz motes, as well as
+experiments with the transmitter switching from Channel 11 to other
+channels. In both scenarios, the channel-switching time does not have
+obvious changes. (In our experiments, all values are in the range of
+23.6 $\mu$s to 24.9 $\mu$s.)
+
+\subsection{Appendix subsection head}
+
+The primary consumer of energy in WSNs is idle listening. The key to
+reduce idle listening is executing low duty-cycle on nodes. Two
+primary approaches are considered in controlling duty-cycles in the
+MAC layer.
+
+\end{screenonly}
+
+\section*{Acknowledgements}
+
+The authors would like to thank Dr. Maura Turolla of Telecom
+Italia for providing specifications about the application scenario.
+
+
+% Bibliography
+\bibliographystyle{ACM-Reference-Format-Journals}
+\bibliography{sample-bibliography}
diff --git a/Master/texmf-dist/doc/latex/acmart/sampleteaser.pdf b/Master/texmf-dist/doc/latex/acmart/sampleteaser.pdf
new file mode 100644
index 00000000000..374f676f0df
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/acmart/sampleteaser.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/acmart/sigchi-a.bib b/Master/texmf-dist/doc/latex/acmart/sigchi-a.bib
new file mode 100644
index 00000000000..089247f33f3
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/acmart/sigchi-a.bib
@@ -0,0 +1,164 @@
+@Misc{CHINOSAUR:venue,
+ author = {@\_CHINOSAUR},
+ key = {_CHINOSAUR},
+ howpublished = {Tweet},
+ title = {"VENUE IS TOO COLD" \#BINGO \#CHI2014},
+ month = {May},
+ day = 1,
+ year = 2014,
+ note = {Retrieved Febuary 2, 2015 from
+ \url{https://twitter.com/_CHINOSAUR/status/461864317415989248}},
+ annote = {Tweet}
+}
+
+@misc{supermetroid:snes,
+ Address = {Kyoto, Japan},
+ Author = {{Nintendo R\&D1} and {Intelligent Systems}},
+ Day = {18},
+ Howpublished = {Game [SNES]},
+ Month = {April},
+ Note = {Nintendo, Kyoto, Japan. Played August 2011.},
+ Publisher = {Nintendo},
+ Title = {\emph{Super Metroid}},
+ Year = {1994}
+}
+
+@inproceedings{Klemmer:2002:WSC:503376.503378,
+ author = {Klemmer, Scott R. and Thomsen, Michael and
+ Phelps-Goodman, Ethan and Lee, Robert and Landay,
+ James A.},
+ title = {Where Do Web Sites Come from?: Capturing and
+ Interacting with Design History},
+ booktitle = {Proceedings of the SIGCHI Conference on Human
+ Factors in Computing Systems},
+ series = {CHI '02},
+ year = 2002,
+ isbn = {1-58113-453-3},
+ location = {Minneapolis, Minnesota, USA},
+ pages = {1--8},
+ url = {http://doi.acm.org/10.1145/503376.503378},
+ doi = {10.1145/503376.503378},
+ acmid = 503378,
+ publisher = {ACM},
+ address = {New York, NY, USA},
+ keywords = {CSCW, activity capture, design rationale, history
+ management, informal interfaces, sketching, tangible
+ UI, web design},
+}
+
+@inproceedings{Mather:2000:MUT,
+ title = {Making up titles for conference papers},
+ author = {Mather, B. D.},
+ booktitle = {Ext. Abstracts CHI 2000},
+ year = 2000,
+ publisher = "ACM Press",
+ pages = "1-2",
+}
+
+@book{Schwartz:1995:GBF,
+ title = {Guidelines for Bias-Free Writing},
+ author = {Marilyn Schwartz},
+ address = {Bloomington, IN, USA},
+ year = 1995,
+ publisher = {ERIC}
+}
+
+@inproceedings{Zellweger:2001:FAO:504216.504224,
+ author = {Zellweger, Polle T. and Bouvin, Niels Olof and
+ Jeh{\o}j, Henning and Mackinlay, Jock D.},
+ title = {Fluid annotations in an open world},
+ booktitle = {Proc. Hypertext 2001},
+ year = 2001,
+ pages = {9--18},
+ publisher = {ACM Press},
+}
+
+@misc{acm_categories,
+ key = "ACM",
+ author = {ACM},
+ title = {How to Classify Works Using ACM's Computing
+ Classification System},
+ year = 1998,
+ note = {\url{http://www.acm.org/class/how_to_use.html}},
+}
+
+@Misc{cavender:writing,
+ author = {Anna Cavender and Shari Trewin and Vicki Hanson},
+ title = {Accessible Writing Guide},
+ year = 2014,
+ day = 22,
+ note =
+ {\url{http://www.sigaccess.org/welcome-to-sigaccess/resources/accessible-writing-guide/}},
+ annote = {URL}
+}
+
+@article{ethics,
+ title = {{Social Impacts of Computing: Codes of Professional
+ Ethics}},
+ author = {R. E. Anderson},
+ doi = "10.1177/089443939201000402",
+ journal = "Social Science Computer Review December",
+ year = 1992,
+ volume = 10,
+ number = 4,
+ pages = "453-469"
+}
+
+@Misc{heilig:sensorama,
+ author = {Morton L. Heilig},
+ title = {Sensorama Simulator},
+ howpublished = {U.S. Patent 3,050,870},
+ month = {August},
+ day = 28,
+ year = 1962,
+ note = {Filed Februrary 22, 1962.},
+ annote = {is this right?}
+},
+
+@article{kaye:puc,
+ year = 2014,
+ issn = {1617-4909},
+ journal = {Personal and Ubiquitous Computing},
+ volume = 18,
+ number = 4,
+ doi = {10.1007/s00779-014-0773-4},
+ title = {Special issue on science fiction and ubiquitous
+ computing},
+ url = {http://dx.doi.org/10.1007/s00779-014-0773-4},
+ publisher = {Springer London},
+ author = {Kaye, Jofish and Dourish, Paul},
+ pages = {765-766},
+ language = {English}
+}
+
+@Misc{psy:gangnam,
+ author = {Psy},
+ title = {Gangnam Style},
+ howpublished = {Video},
+ month = {July},
+ day = 15,
+ year = 2012,
+ note = {Retrieved August 22, 2014 from
+ \url{https://www.youtube.com/watch?v=9bZkp7q19f0}},
+ annote = {Video URL}
+}
+
+@PhdThesis{sutherland:sketchpad,
+ author = {Ivan E. Sutherland},
+ title = {Sketchpad, a Man-Machine Graphical Communication
+ System},
+ school = {Massachusetts Institute of Technology},
+ year = 1963,
+ address = {Cambridge, MA},
+}
+
+@InBook{winner:politics,
+ author = {Langdon Winner},
+ title = {The Social Shaping of Technology},
+ chapter = {Do artifacts have politics?},
+ publisher = {Open University Press},
+ year = 1999,
+ address = {UK},
+ edition = {2nd},
+ pages = {28--40},
+}
diff --git a/Master/texmf-dist/doc/latex/acmart/sigchi-logo.png b/Master/texmf-dist/doc/latex/acmart/sigchi-logo.png
new file mode 100644
index 00000000000..b22032c21af
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/acmart/sigchi-logo.png
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/acmart/sigproc.bib b/Master/texmf-dist/doc/latex/acmart/sigproc.bib
new file mode 100644
index 00000000000..03168dd8a48
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/acmart/sigproc.bib
@@ -0,0 +1,74 @@
+@ARTICLE{bowman:reasoning,
+ author = {Bowman, Mic and Debray, Saumya K. and Peterson, Larry L.},
+ title = {Reasoning About Naming Systems},
+ journal = {ACM Trans. Program. Lang. Syst.},
+ volume = {15},
+ number = {5},
+ pages = {795-825},
+ month = {November},
+ year = {1993},
+ doi = {10.1145/161468.161471},
+}
+
+@ARTICLE{braams:babel,
+ author = {Braams, Johannes},
+ title = {Babel, a Multilingual Style-Option System for Use with LaTeX's Standard Document Styles},
+ journal = {TUGboat},
+ volume = {12},
+ number = {2},
+ pages = {291-301},
+ month = {June},
+ year = {1991},
+}
+
+@INPROCEEDINGS{clark:pct,
+ AUTHOR = "Malcolm Clark",
+ TITLE = "Post Congress Tristesse",
+ BOOKTITLE = "TeX90 Conference Proceedings",
+ PAGES = "84-89",
+ ORGANIZATION = "TeX Users Group",
+ MONTH = "March",
+ YEAR = {1991} }
+
+@ARTICLE{herlihy:methodology,
+ author = {Herlihy, Maurice},
+ title = {A Methodology for Implementing Highly Concurrent Data Objects},
+ journal = {ACM Trans. Program. Lang. Syst.},
+ volume = {15},
+ number = {5},
+ pages = {745-770},
+ month = {November},
+ year = {1993},
+ doi = {10.1145/161468.161469},
+}
+
+@BOOK{Lamport:LaTeX,
+ AUTHOR = "Leslie Lamport",
+ TITLE = "LaTeX User's Guide and Document Reference Manual",
+ PUBLISHER = "Addison-Wesley Publishing Company",
+ ADDRESS = "Reading, Massachusetts",
+ YEAR = "1986" }
+
+@BOOK{salas:calculus,
+ AUTHOR = "S.L. Salas and Einar Hille",
+ TITLE = "Calculus: One and Several Variable",
+ PUBLISHER = "John Wiley and Sons",
+ ADDRESS = "New York",
+ YEAR = "1978" }
+
+@MANUAL{Fear05,
+ title = {Publication quality tables in {\LaTeX}},
+ author = {Simon Fear},
+ month = {April},
+ year = 2005,
+ note = {\url{http://www.ctan.org/pkg/booktabs}}
+}
+
+@Manual{Amsthm15,
+ title = {Using the amsthm Package},
+ organization = {American Mathematical Society},
+ month = {April},
+ year = 2015,
+ note = {\url{http://www.ctan.org/pkg/amsthm}}
+}
+
diff --git a/Master/texmf-dist/source/latex/acmart/acmart.dtx b/Master/texmf-dist/source/latex/acmart/acmart.dtx
new file mode 100644
index 00000000000..57c062ee9ed
--- /dev/null
+++ b/Master/texmf-dist/source/latex/acmart/acmart.dtx
@@ -0,0 +1,4097 @@
+% \iffalse
+%
+% Copyright 2016, Association for Computing Machinery
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either
+% version 1.3 of this license or (at your option) any
+% later version.
+% The latest version of the license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of
+% LaTeX version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is Boris Veytsman,
+% <borisv@lk.net>
+%
+% This work consists of the file acmart.dtx and the
+% derived file acmart.cls, and
+%
+% \fi
+%
+%
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%
+%
+% \MakeShortVerb{|}
+% \GetFileInfo{acmart.dtx}
+% \newcommand{\progname}[1]{\textsf{#1}}
+% \title{\LaTeX{} Class for \emph{Association for Computing
+% Machinery}\thanks{\copyright 2016, Association for Computing Machinery}}
+% \author{Boris Veytsman\thanks{%
+% \href{mailto:borisv@lk.net}{\texttt{borisv@lk.net}},
+% \href{mailto:boris@varphi.com}{\texttt{boris@varphi.com}}}}
+% \date{\filedate, \fileversion}
+% \maketitle
+% \begin{abstract}
+% This package provides a class for typesetting publications of
+% Association for Computing Machinery.
+% \end{abstract}
+% \tableofcontents
+%
+% \clearpage
+%
+%\section{Introduction}
+%\label{sec:intro}
+%
+% Association for Computing Machinery is the world's largest
+% educational and scientific computing society, which delivers
+% resources that advance computing as a science and a
+% profession\footnote{\url{http://www.acm.org/}}. It was one of the
+% earily adopters of \TeX\ for its typesetting.
+%
+% It provided several different classes for a number of journal and
+% conference proceedings. Unfortunately during the years since these
+% classes were written, the code was patched many times, and the
+% support of the different versions of the classes became difficult.
+%
+% This package provides the uniform interface for all ACM
+% publications. It is intended to replace all different classes and
+% packages and provide an up to date \LaTeX\ package.
+%
+% The package uses only free \TeX\ packages and fonts included in \TeX
+% Live, Mik\TeX\ and other popular \TeX\ distributions. It is
+% intended to be published in these distributions itself, which
+% minimizes users' efforts in the installation and support of the
+% package.
+%
+% I am grateful to
+% Matthew Fluet,
+% John Owens,
+% Craig Rodkin,
+% Bernard Rous,
+% David Shamma,
+% Stephen Spencer
+% and many others for their invaluable help.
+%
+% The development version of the package is available at
+% \url{https://github.com/borisveytsman/acmart}.
+%
+%\section{User's guide}
+%\label{sec:ug}
+%
+%
+%\subsection{Installation}
+%\label{sec:ug_install}
+%
+% Most probably, you already have this package installed in your
+% favorite \TeX\ distribution; if not, you may want to upgrade. You
+% may need to upgrade it anyway since the package uses a number
+% relatively recent packages, especially the ones related to the
+% fonts.
+%
+% If you decide to install the package yourself, follow the standard
+% rules:
+% \begin{enumerate}
+% \item Run \progname{latex} on |acmart.ins|. This will produce the file
+% |acmart.cls|.
+% \item Put the file |acmart.cls| and the bibligoraphy files |*.bst|
+% to the places where \LaTeX{} can find them (see \cite{TeXFAQ} or
+% the documentation for your \TeX{} system).\label{item:install}
+% \item Update the database of file names. Again, see \cite{TeXFAQ}
+% or the documentation for your \TeX{} system for the system-specific
+% details.\label{item:update}
+% \item The file |acmart.pdf| provides the documentation for the
+% package (this is the file you are probably reading now).
+% \end{enumerate}
+% As an alternative to items~\ref{item:install} and~\ref{item:update}
+% you can just put the files in the working directory where your
+% |.tex| file is.
+%
+%
+% The class uses a number of other packages. They are included in all
+% major \TeX\ distributions (\TeX Live, Mac\TeX, Mik\TeX) of 2015 and
+% later, so you probably have them installed. Just in case here is
+% the list of these packages:
+% \begin{itemize}
+% \item \textsl{algorithm2e}, \url{http://www.ctan.org/pkg/algorithm2e}
+% \item \textsl{amscls}, \url{http://www.ctan.org/pkg/amscls}
+% \item \textsl{amsfonts}, \url{http://www.ctan.org/pkg/amsfonts}
+% \item \textsl{amsmath}, \url{http://www.ctan.org/pkg/amsmath}
+% \item \textsl{booktabs}, \url{http://www.ctan.org/pkg/booktabs}
+% \item \textsl{caption}, \url{http://www.ctan.org/pkg/caption}
+% \item \textsl{comment}, \url{http://www.ctan.org/pkg/comment}
+% \item \textsl{environ}, \url{http://www.ctan.org/pkg/environ}
+% \item \textsl{fancyhdr}, \url{http://www.ctan.org/pkg/fancyhdr}
+% \item \textsl{float}, \url{http://www.ctan.org/pkg/float}
+% \item \textsl{fontaxes}, \url{http://www.ctan.org/pkg/fontaxes}
+% \item \textsl{geometry}, \url{http://www.ctan.org/pkg/geometry}
+% \item \textsl{graphics}, \url{http://www.ctan.org/pkg/graphics}
+% \item \textsl{hyperref}, \url{http://www.ctan.org/pkg/hyperref}
+% \item \textsl{ifluatex}, \url{http://www.ctan.org/pkg/ifluatex}
+% \item \textsl{ifxetex}, \url{http://www.ctan.org/pkg/ifxetex}
+% \item \textsl{inconsolata}, \url{http://www.ctan.org/pkg/inconsolata}
+% \item \textsl{kastrup}, \url{http://www.ctan.org/pkg/kastrup}
+% \item \textsl{libertine}, \url{http://www.ctan.org/pkg/libertine}
+% \item \textsl{manyfoot}, \url{http://www.ctan.org/pkg/manyfoot}
+% \item \textsl{microtype}, \url{http://www.ctan.org/pkg/microtype}
+% \item \textsl{mptopdf}, \url{http://www.ctan.org/pkg/mptopdf}
+% \item \textsl{ms}, \url{http://www.ctan.org/pkg/ms}
+% \item \textsl{mweights}, \url{http://www.ctan.org/pkg/mweights}
+% \item \textsl{natbib}, \url{http://www.ctan.org/pkg/natbib}
+% \item \textsl{nccfoots}, \url{http://www.ctan.org/pkg/nccfoots}
+% \item \textsl{newtx}, \url{http://www.ctan.org/pkg/newtx}
+% \item \textsl{oberdiek}, \url{http://www.ctan.org/pkg/oberdiek}
+% \item \textsl{pdftex-def}, \url{http://www.ctan.org/pkg/pdftex-def}
+% \item \textsl{relsize}, \url{http://www.ctan.org/pkg/relsize}
+% \item \textsl{setspace}, \url{http://www.ctan.org/pkg/setspace}
+% \item \textsl{tools}, \url{http://www.ctan.org/pkg/tools}
+% \item \textsl{totpages}, \url{http://www.ctan.org/pkg/totpages}
+% \item \textsl{trimspaces}, \url{http://www.ctan.org/pkg/trimspaces}
+% \item \textsl{upquote}, \url{http://www.ctan.org/pkg/upquote}
+% \item \textsl{url}, \url{http://www.ctan.org/pkg/url}
+% \item \textsl{xcolor}, \url{http://www.ctan.org/pkg/xcolor}
+% \item \textsl{xkeyval}, \url{http://www.ctan.org/pkg/xkeyval}
+% \end{itemize}
+%
+%
+%\subsection{Invocation and options}
+%\label{sec:invocation}
+%
+% To use the class put in the premable of your document
+% \begin{quote}
+% \cs{documentclass}\oarg{options}|{acmart}|
+% \end{quote}
+% There are several options corresponding to the type of the document and
+% its general appearance. They are described below. Generally
+% speaking, the options have |key=value| forms, for example
+% \begin{verbatim}
+% \documentclass[format=acmsmall, screen=true, review=false]{acmart}
+% \end{verbatim}
+%
+%
+% The option |format| describes the format of the output. There are
+% several possible values for this option, for example,
+% \begin{verbatim}
+% \documentclass[format=acmtog]{acmart}
+% \end{verbatim}
+% Actually the words |format=| can be omitted, e.g.,
+% \begin{verbatim}
+% \documentclass[acmtog, review=false]{acmart}
+% \end{verbatim}
+% The possible formats are listed in
+% Table~\ref{tab:opts_format}. Note that formats starting with |acm|
+% are intended for journals and transactions, while formats starting
+% with |sig| are intended for proceedings published as books.
+%
+% \begin{table}
+% \centering
+% \caption{The possible values for the \texttt{format} option}
+% \label{tab:opts_format}
+% \begin{tabularx}{\textwidth}{>{\ttfamily}lX}
+% \toprule
+% \normalfont Value & Meaning\\
+% \midrule
+% manuscript & A manuscript. This is the default \\
+% acmsmall & Small format, used for CIE, CSUR, JACM, JDIQ, JEA, JERIC,
+% JETC, TAAS, TACCESS, TACO, TALG, TALLIP (formerly TALIP), TCPS,
+% TEAC, TECS, TIIS, TISSEC, TIST, TKDD, TMIS, TOCE, TOCHI, TOCL,
+% TOCS, TOCT, TODAES, TODS, TOIS, TOIT, TOMACS, TOMM (formerly
+% TOMCCAP), TOMPECS, TOMS, TOPC, TOPLAS, TOPS,
+% TOS, TOSEM, TOSN, TRETS,
+% TSAS, TSC, TSLP, TWEB\@. \\
+% acmlarge & Large single colummn format, used for
+% JOCCH, TAP \\
+% acmtog & Large double column format, used for
+% TOG\\
+% sigconf & Proceedings format for most of ACM
+% conferences (with the exceptions listed below)\\
+% siggraph & Proceedings format for SIGGRAPH and SIGGRAPH
+% Asia conferences, published in ACM Transactions on Graphics
+% journal issues \\
+% sigplan & Proceedings format used for SIGPLAN conferences\\
+% sigchi & Proceedings format for SIGCHI conferences\\
+% sigchi-a & Format for SIGCHI extended abstract\\
+% \bottomrule
+% \end{tabularx}
+% \end{table}
+%
+% There are several Boolean options which can take |true| or |false|
+% values. They are listed in Table~\ref{tab:opts_bool}. The words
+% |=true| can be omitted when setting the Boolean option, so instead of
+% |screen=true| one can write just |screen|, for example,
+% \begin{verbatim}
+% \documentcalss[acmsmall, screen, review]{acmart}
+% \end{verbatim}
+% The option
+% |review| is useful when combined with the |manuscript| format
+% option: it provides a version suitable for reviewers and
+% copyeditors.
+%
+% The option |screen| may in the future involve
+% additional features suitable for on-screen versions of the
+% articles.
+%
+% The option |natbib| is used when the corresponding
+% \BibTeX\ style is based on |natbib|.
+%
+% The option |anonymous| is used
+% for anonymous review process: all author information becomes
+% obscured.
+%
+% \begin{table}
+% \centering
+% \caption{Boolean options}
+% \label{tab:opts_bool}
+% \begin{tabularx}{\textwidth}{>{\ttfamily}l>{\ttfamily}lX}
+% \toprule
+% \normalfont Option & \normalfont Default & Meaning\\
+% \midrule
+% review & false & A review version: doublespaced, lines are
+% numbered, hyperlinks are colored\\
+% screen & false & A screen version: hyperlinks are colored\\
+% natbib & false & Whether to use |natbib| package (see
+% Section~\ref{sec:ug_bibliography})\\
+% anonymous & false & Whether to make author(s) anonymous\\
+% authorversion & false & Whether to generate a special
+% version for authors' personal use or posting (see
+% Section~\ref{sec:ug_topmatter})\\
+% \bottomrule
+% \end{tabularx}
+% \end{table}
+%
+%
+%
+%\subsection{Topmatter commands}
+%\label{sec:ug_topmatter}
+%
+% A number of commands set up \emph{top matter} information, or, in
+% the computer science jargon, \emph{metadata} for the article. They
+% establish the publication name, article title, authors, doi and
+% other data. Some of these commands, like \cs{title} or \cs{author},
+% should be put by the authors. Others, like \cs{acmVolume} or
+% \cs{acmDOI}---by the editors. Below we describe these commands and
+% mention who should issue them. These macros should be used
+% \emph{before} the \cs{maketitle} command. Note that in the previous
+% versions of ACM classes some of these commands should be used before
+% \cs{maketitle}, and some after it. Now they all must be used before
+% \cs{maketitle}.
+%
+%
+% The class internally loads |amsart| class, so many top matter
+% commands are inherited from |amsart|~\cite{Downes04:amsart}.
+%
+% \DescribeMacro{\acmJournal}%
+% The macro \cs{acmJournal}\marg{shortName} sets the name of the
+% journal or transaction for journals and transactions. The argument
+% is the short name of the publication \emph{in uppercase}, for
+% example,
+% \begin{verbatim}
+% \acmJournal{TOMS}
+% \end{verbatim}
+% The currently recognized journals are listed in
+% Table~\ref{tab:pubs}. Note that conference proceedings published in
+% \emph{book} form do not set this macro.
+%
+% \begin{table}
+% \centering
+% \caption{ACM publications and arguments of the \cs{acmJournal}
+% command}\footnotesize
+% \label{tab:pubs}
+% \begin{tabularx}{\textwidth}{>{\ttfamily}lX}
+% \toprule
+% \normalfont Abbreviation & Publication \\
+% \midrule
+% CIE & ACM Computers in Entertainment \\
+% CSUR & ACM Computing Surveys\\
+% JACM & Journal of the ACM \\
+% JDIQ & ACM Journal of Data and Information Quality \\
+% JEA & ACM Journal of Experimental Algorithmics \\
+% JERIC & ACM Journal of Educational Resources in Computing\\
+% JETC & ACM Journal on Emerging Technologies in Computing Systems \\
+% JOCCH & ACM Journal on Computing and Cultural Heritage \\
+% TAAS & ACM Transactions on Autonomous and Adaptive Systems\\
+% TACCESS & ACM Transactions on Accessible Computing\\
+% TACO & ACM Transactions on Architecture and Code Optimization \\
+% TALG & ACM Transactions on Algorithms \\
+% TALLIP & ACM Transactions on Asian and Low-Resource Language
+% Information Processing\\
+% TAP & ACM Transactions on Applied Perception \\
+% TCPS & ACM Transactions on Cyber-Physical Systems\\
+% TEAC & ACM Transactions on Economics and Computation\\
+% TECS & ACM Transactions on Embedded Computing Systems \\
+% TIIS & ACM Transactions on Interactive Intelligent Systems\\
+% TISSEC & ACM Transactions on Information and System Security\\
+% TIST & ACM Transactions on Intelligent Systems and Technology \\
+% TKDD & ACM Transactions on Knowledge Discovery from Data\\
+% TMIS & ACM Transactions on Management Information Systems\\
+% TOCE & ACM Transactions on Computing Education\\
+% TOCHI & ACM Transactions on Computer-Human Interaction\\
+% TOCL & ACM Transactions on Computational Logic\\
+% TOCS & ACM Transactions on Computer Systems \\
+% TOCT & ACM Transactions on Computation Theory \\
+% TODAES & ACM Transactions on Design Automation of Electronic Systems\\
+% TODS & ACM Transactions on Database Systems\\
+% TOG & ACM Transactions on Graphics\\
+% TOIS & ACM Transactions on Information Systems\\
+% TOIT & ACM Transactions on Internet Technology\\
+% TOMACS & ACM Transactions on Modeling and Computer Simulation \\
+% TOMM & ACM Transactions on Multimedia Computing, Communications
+% and Applications \\
+% TOMPECS & ACM Transactions on Modeling and Performance Evaluation
+% of Computing Systems\\
+% TOMS & ACM Transactions on Mathematical Software\\
+% TOPC & ACM Transactions on Parallel Computing\\
+% TOPLAS & ACM Transactions on Programming Languages and Systems\\
+% TOPS & ACM Transactions on Privacy and Security\\
+% TOS & ACM Transactions on Storage\\
+% TOSEM & ACM Transactions on Software Engineering and Methodology\\
+% TOSN & ACM Transactions on Sensor Networks\\
+% TRETS & ACM Transactions on Reconfigurable Technology and Systems\\
+% TSAS & ACM Transactions on Spatial Algorithms and Systems\\
+% TSC & ACM Transactions on Social Computing\\
+% TSLP & ACM Transactions on Speech and Language Processing \\
+% TWEB & ACM Transactions on the Web\\
+% \bottomrule
+% \end{tabularx}
+% \end{table}
+%
+% It is expected that this command is inserted by the author of the
+% manuscript when she decides to which journal to submit the
+% manuscript.
+%
+% \DescribeMacro{\acmConference}%
+% The macro
+% \cs{acmConference}\oarg{short name}\marg{name}\marg{date}\marg{venue} is
+% used for conference proceedings published in the book form. The
+% arguments are the following:
+% \begin{description}
+% \item[short name:] the abbreviated name of the conference (optional).
+% \item[name:] the name of the conference \emph{or} the name of the
+% book as set by the editor.
+% \item[date:] the date(s) of the conference.
+% \item[venue:] the place of the conference.
+% \end{description}
+% Examples:
+% \begin{verbatim}
+% \acmConference[TD'15]{Technical Data Conference}{November
+% 12--16}{Dallas, TX, USA}
+% \acmConference{SA'15 Art Papers}{November 02--06, 2015}{Kobe, Japan}
+% \end{verbatim}
+%
+%
+% Normally this command is entered either by the editor or by the typesetter.
+%
+% \DescribeMacro{\title}
+% The command |\title|, as in \progname{amsart} class, has two arguments: one
+% optional, and one mandatory:
+% \begin{flushleft}
+% |\title[|\meta{ShortTitle}|]{|\meta{FullTitle}|}|
+% \end{flushleft}
+% The mandatory argument is the full title of the article. The
+% optional argument, if present, defines the shorter version of the
+% title for running heads. If the optional argument is absent, the
+% full title is used instead.
+%
+% It is expected that this command is inserted by the author of the
+% manuscript.
+%
+% \DescribeMacro{\subtitle}%
+% Besides title, ACM classes allow subtitle, set with the
+% \cs{subtitle}\marg{subtitle} macro.
+%
+% \DescribeMacro{\author}%
+% \DescribeMacro{\affiliation}%
+% \DescribeMacro{\email}%
+% The interface for specifying the authors and their affiliations is
+% close the the one of \progname{amsart}~\cite{instr-l} (and different
+% from the standard \LaTeX). For each author a separate command
+% |\author| should be used, followed by |\affliation| and |\email|.
+% If several authors share affiliations, in journal formats like
+% |acmsmall| or |acmlarge| one may put the
+% affiliation after all these authors, for example:
+% \begin{verbatim}
+% \author{A. U. Thor}
+% \email{author@nsw.au.edu}
+% \affiliation{University of New South Wales}
+% \author{A. N. Other}
+% \author{C. O. Respondent}
+% \affiliation{University of Pennsylvania}
+% \end{verbatim}
+% In the cases of overlapping affiliations it is advisable to repeat
+% the full list, for example,
+% \begin{verbatim}
+% \author{A. U. Thor}
+% \affiliation{University of New South Wales, Australia}
+% \email{author@nsw.edu.au}
+% \author{A. N. Other}
+% \affiliation{University of Pennsylvania, USA and University of New South
+% Wales, Australia}
+% \email{other@upenn.edu}
+% \end{verbatim}
+% For \emph{conferences} the affiliations should \emph{always} be
+% repeated, even if they are shared between the authors.
+%
+% Note that old ACM conference formats did not allow for more than six
+% authors and required some efforts from the authors to achieve
+% alignment. The new format is much better in this.
+%
+%
+%
+% It is expected that these commands are inserted by the author of the
+% manuscript.
+%
+% \DescribeMacro{\thanks}
+% Like \progname{amsart} (and unlike standard \LaTeX{}),
+% we allow |\thanks| only \emph{outside} of
+% commands |\title| and |\author|. Example:
+% \begin{verbatim}
+% \thanks{This work is supported by the Widget Corporation Grant
+% \#312-001.\\
+% Author's address: D. Pineo, Kingsbury Hall, 33 Academic Way, Durham,
+% N.H. 03824; email: dspineo@comcast.net; Colin Ware, Jere A. Chase
+% Ocean Engineering Lab, 24 Colovos Road, Durham, NH 03824; email:
+% cware@ccom.unh.edu;
+% Sean Fogarty, (Current address) NASA Ames Research Center, Moffett
+% Field, California 94035.}
+% \end{verbatim}
+%
+% It is expected that this command is inserted by the author of the
+% manuscript.
+%
+% \DescribeMacro{\titlenote}%
+% \DescribeMacro{\subtitlenote}%
+% \DescribeMacro{\authornote}%
+% While the command \cs{thanks} generates a note without footnote
+% mark, sometimes the authors might need notes more tightly connected
+% to the title, subtitle or author. The commands \cs{titlenote},
+% \cs{subtitlenote} and \cs{authornote} that follow the corresponding
+% commands (\cs{title}, \cs{subtitle} and \cs{author}) generate such
+% notes, for example
+% \begin{verbatim}
+% \title{This is a title}
+% \titlenote{This is a titlenote}
+% \author{A. U. Thor}
+% \authornote{This is an authornote}
+% \end{verbatim}
+%
+%
+% \DescribeMacro{\acmVolume}%
+% \DescribeMacro{\acmNumber}%
+% \DescribeMacro{\acmArticle}%
+% \DescribeMacro{\acmYear}%
+% \DescribeMacro{\acmMonth}%
+% The macros \cs{acmVolume}, \cs{acmNumber}, \cs{acmArticle},
+% \cs{acmYear} and \cs{acmMonth} are inserted by the editor and set
+% the journal volume, issue, article number, year and month
+% corrspondingly. The arguments of all these commands, including
+% \cs{acmMonth} is numerical, including \cs{acmMonth}, for example,
+% \begin{verbatim}
+% \acmVolume{9}
+% \acmNumber{4}
+% \acmArticle{39}
+% \acmYear{2010}
+% \acmMonth{3}
+% \end{verbatim}
+%
+% \DescribeMacro{\acmArticleSeq}%
+% The articles in the same issue of a journal have \emph{sequential
+% number}. It is used to position black blob in same formats. By
+% default it is the same as article number, but the command
+% \cs{acmArticleSeq}\marg{n} can be used to change it:
+% \begin{verbatim}
+% \acmArticle{39} % The sequence number will be 39 by default
+% \acmArticleSeq{5} % We rededine it to 5
+% \end{verbatim}
+%
+%
+%
+% \DescribeMacro{\acmPrice}%
+% The macro \cs{acmPrice}\marg{price} sets the price for the article
+% (by default 15.00), for example,
+% \begin{verbatim}
+% \acmPrice{25.00}
+% \end{verbatim}
+%
+%
+% \DescribeMacro{\acmISBN}%
+% Book-like volumes have ISBN numbers attached to them. The macro
+% \cs{acmISBN}\marg{ISBN} sets it. Normally it is set by the
+% typesetter, for example,
+% \begin{verbatim}
+% \acmISBN{978-1-4503-3916-2}
+% \end{verbatim}
+%
+%
+% \DescribeMacro{\acmDOI}%
+% The macro \cs{acmDOI}\marg{DOI} sets the DOI number of the article, for
+% example,
+% \begin{verbatim}
+% \acmDOI{10.1145/9999997.9999999}
+% \end{verbatim}
+% It is normally set by the typesetter.
+%
+%
+% \DescribeMacro{\acmBadgeR}%
+% \DescribeMacro{\acmBadgeL}%
+% Some conference articles get special distinction, for example, the
+% artifact evaluation for PPoPP~2016
+% (see~\url{http://ctuning.org/ae/ppopp2016.html}). These articles
+% display special badges supplied by the conference organizers. The
+% class provides commands to add these badges:
+% \cs{acmBadgeR}\oarg{url}\marg{graphics} and
+% \cs{acmBadgeL}\oarg{url}\marg{graphics}. The first command puts the
+% badge to the right of the title, and the second one---to the left.
+% The exception is the |sigchi-a| mode for SIGCHI Extended abstract,
+% which puts the badges on the left margin. The argument have the
+% following meaning: \oarg{url}, if provided, sets the link to the
+% badge authority in the screen version, while \marg{graphics} sets
+% the graphics file with the badge image. The file must be a cropped
+% square, which is scaled to a standard size in the output. For
+% example, if the badge image is |ae-logo.pdf|, the command is
+% \begin{verbatim}
+% \acmBadgeR[http://ctuning.org/ae/ppopp2016.html]{ae-logo}
+% \end{verbatim}
+%
+%
+%
+% \DescribeMacro{\startPage}%
+% The macro \cs{startPage}\marg{page} sets the first page of the
+% article in the journal or book. It is used by the typesetter.
+%
+%
+% \DescribeMacro{\terms}%
+% \DescribeMacro{\keywords}%
+% The macros \cs{terms}\marg{term, term,\ldots} and
+% \cs{keywords}\marg{keyword, keyword,\ldots} set the main terms and
+% the additional keywords for the article. Term and keywords must be
+% separated by commas, for example,
+% \begin{verbatim}
+% \terms{wireless, interference}
+% \keywords{wireless sensor networks, media access control,
+% multi-channel, radio interference, time synchronization}
+% \end{verbatim}
+%
+% \DescribeEnv{CCSXML}%
+% \DescribeMacro{\ccsdesc}%
+% ACM publications are classified according to the ACM Computing
+% Classification Scheme (CCS). CCS codes are used both in the typeset
+% version of the publications \emph{and} in the metadata in the various
+% databases. Therefore you need to provide both \TeX\ commands and XML
+% metadata with the paper.
+%
+% The tool at \url{http://dl.acm.org/ccs.cfm} can be used to generate
+% CCS codes. After you select the topics, click on ``Generate CCS
+% codes'' to get the result like the following:
+% \begin{verbatim}
+% \begin{CCSXML}
+% <ccs2012>
+% <concept>
+% <concept_id>10010520.10010553.10010562</concept_id>
+% <concept_desc>Computer systems organization~Embedded systems</concept_desc>
+% <concept_significance>500</concept_significance>
+% </concept>
+% <concept>
+% <concept_id>10010520.10010575.10010755</concept_id>
+% <concept_desc>Computer systems organization~Redundancy</concept_desc>
+% <concept_significance>300</concept_significance>
+% </concept>
+% <concept>
+% <concept_id>10010520.10010553.10010554</concept_id>
+% <concept_desc>Computer systems organization~Robotics</concept_desc>
+% <concept_significance>100</concept_significance>
+% </concept>
+% <concept>
+% <concept_id>10003033.10003083.10003095</concept_id>
+% <concept_desc>Networks~Network reliability</concept_desc>
+% <concept_significance>100</concept_significance>
+% </concept>
+% </ccs2012>
+% \end{CCSXML}
+%
+% \ccsdesc[500]{Computer systems organization~Embedded systems}
+% \ccsdesc[300]{Computer systems organization~Redundancy}
+% \ccsdesc{Computer systems organization~Robotics}
+% \ccsdesc[100]{Networks~Network reliability}
+% \end{verbatim}
+%
+% You need to just copy this code and paste it in your paper anywhere
+% before \verb|\maketitle|.
+%
+% \DescribeMacro{\setcopyright}
+% There are several possibilities for the copyright of the papers
+% published by ACM: the authors may transfer the rights to ACM, license
+% them to ACM, some or all authors might be employees of the US or
+% Canada Government, etc. Accordingly the command
+% \verb|\setcopyright{...}| is introduced. Its argument is the
+% copyright status of the paper, for example,
+% \verb|\setcopyright{acmcopyright}|. The possible values for this
+% command are listed in Table~\ref{tab:setcopyright}.
+%
+% \begin{table}
+% \centering
+% \caption{Parameters for \texttt{\textbackslash setcopyright} command}
+% \label{tab:setcopyright}
+% \begin{tabularx}{\textwidth}{lX}
+% \toprule
+% Parameter & Meaning\\
+% \midrule
+% \texttt{none} & The copyright and permission information is not
+% typeset (this is the option for some ACM conferences). \\
+% \texttt{acmcopyright} & The authors transfer the copyright to ACM
+% (the ``traditional'' choice).\\
+% \texttt{acmlicensed} & The authors retain the copyright but
+% license the publication rights to ACM\@. \\
+% \texttt{rightsretained} & The authors retain the copyright and
+% publication rights to themselves or somebody else. \\
+% \texttt{usgov} & All the authors are employees of the US
+% Government. \\
+% \texttt{usgovmixed} & Some authors are employees of the US
+% Government. \\
+% \texttt{cagov} & All the authors are employees of the Canadian
+% Government. \\
+% \texttt{cagovmixed} & Some authors are employees of the Canadian
+% Government. \\
+% \bottomrule
+% \end{tabularx}
+% \end{table}
+% The ACM submission software should generate the right command for you
+% to paste into your file.
+%
+%
+% \DescribeMacro{\copyrightyear}%
+% Each copyright statement must have the year of copyright. By
+% default it is the same as \cs{acmYear}, but you can override this
+% decision using the macro \cs{copyrightyear}, e.g.,
+% \begin{verbatim}
+% \acmYear{2016}
+% \copyrightyear{2015}
+% \end{verbatim}
+%
+% There is a special case for a personal copy that the authors may be
+% allowed to generate for their use or a posting on a personal site
+% (check the instructions for the specific journal or conference for
+% the details). The document option |authorversion=true| produces the
+% special form of the copyright statement for this case. Note that
+% you still need the \cs{setcopyright} command and (optionally)
+% \cs{authoryear} command to tell \TeX\ about the copyright owner and
+% year. Also, you should be aware that due to the different sizes of
+% the permssion blocks for the printed version and authors' version
+% the page breaks might be different between them.
+%
+% \DescribeEnv{abstract}%
+% The environment |abstract| must \emph{precede} \cs{maketitle}
+% command. Again, this is different from the standard \LaTeX.
+%
+%
+% \DescribeEnv{teaserfigure}%
+% A special kind of figure is used for many two-column conference
+% proceedings. This figure is placed just after the authors, but
+% before the main text. The environment |teaserfigure| is used for these
+% figures. This environment must be used \emph{before}
+% \cs{maketitle}, for example,
+% \begin{verbatim}
+% \begin{teaserfigure}
+% \includegraphics[width=\textwidth]{sampleteaser}
+% \caption{This is a teaser}
+% \label{fig:teaser}
+% \end{teaserfigure}
+% \end{verbatim}
+%
+%
+% \DescribeMacro{\settopmatter}%
+% Some information in the top matter is printed for certain journals
+% or proceedings and suppressed for others. You may override these
+% defaults using the command \cs{settopmatter}\marg{settings}. The
+% settings and their meanings are listed in
+% Table~\ref{tab:settopmatter}. For example,
+% \begin{verbatim}
+% \settopmatter{printbib=false, printccs=true}
+% \end{verbatim}
+%
+%
+% \begin{table}
+% \centering
+% \caption{Settings for \cs{settopmatter} command}
+% \label{tab:settopmatter}
+% \begin{tabularx}{\textwidth}{llX}
+% \toprule
+% Parameter & Values & Meaning\\
+% \midrule
+% printccs & true/false & Whether to print CCS categories\\
+% printbib & true/false & Whether to print ACM bibliographic
+% entry\\
+% \bottomrule
+% \end{tabularx}
+% \end{table}
+%
+%
+% \DescribeMacro{\received}%
+% The command \cs{received}\marg[stage]\oarg{date} sets the history of
+% the publication. The \marg{stage} argument is optional; the default
+% is |Received| for the first date and |revised| for the subsequent
+% ones. For example
+% \begin{verbatim}
+% \received{February 2007}
+% \received[revised]{March 2009}
+% \received[accepted]{June 2009}
+% \end{verbatim}
+%
+%
+% \DescribeMacro{\maketitle}%
+% The macro \cs{maketitle} must be the last command in the top matter
+% group: i.e., it must follow the commands defined in this section.
+%
+%
+% \DescribeMacro{\shortauthors}%
+% \emph{After} the command \cs{maketitle} the macro \cs{shortauthors}
+% stores the names of the authors for the running head. You may
+% redefine it if the list of author's name is too long, e.g.,
+% \begin{verbatim}
+% \maketitle
+% \renewcommand{\shortauthors}{Zhou et. al.}
+% \end{verbatim}
+%
+%
+%\subsection{Algorithms}
+%\label{sec:ug_algorithms}
+%
+% There now several good packages for typesetting
+% algorithms~\cite{Fiorio15, Brito09, Heinz15}, and the authors are
+% now free to choose their favorite one.
+%
+%
+%
+%\subsection{Figures and tables}
+%\label{sec:ug_floats}
+%
+% New ACM styles use the standard \LaTeX\ interface for figures and
+% tables. There are some important items to be aware of, however.
+%
+% \begin{enumerate}
+% \item The captions for figures must be intered \emph{after} the
+% figure bodies, and for the tables \emph{before} the table bodies.
+% \item ACM uses the standard types for figures and types and adds
+% several new ones. In total there are follwing types:
+% \begin{description}
+% \item[figure, table:] a standard figure or table, taking full text
+% width in one-column formats and one column in two-column formats.
+% \item[figure*, table*] in two-column formats, a special figure or
+% table taking full text width.
+% \item[teaserfigure:] a special figure before \cs{maketitle}.
+% \item[sidebar, marginfigure, margintable:] in the |sigchi-a| format,
+% special sidebars, tables and figures on the margin.
+% \end{description}
+%
+% \item Accordingly, when scaling the images, one should use the
+% following sizes:
+% \begin{enumerate}
+% \item For |figure| in one-column mode, |figure*| in two-column mode
+% or |teaserfigure|---\cs{textwidth} (in the one-column you can also
+% use \cs{columnwidth}, which coincides with \cs{textwidth} in this
+% case).
+% \item For |figure| in two-column mode---\cs{columnwidth}.
+% \item For |marginfigure|--\cs{marginparwidth}.
+% \item For |figure*| in SIGCHI Extended
+% abstracts---\cs{fulltextwidth}.
+% \end{enumerate}
+%
+% \end{enumerate}
+%
+% It is strongly recommended to use the package booktabs~\cite{Fear05}
+% and follow its main principles of typography with respect to tables:
+% \begin{enumerate}
+% \item Never, ever use vertical rules.
+% \item Never use double rules.
+% \end{enumerate}
+% It is also a good idea not to overuse horizontal rules.
+%
+% For table \emph{footnotes} you have several options described in TeX
+% FAQ~\cite{TeXFAQ}. The simplest one is to use \cs{minipage}
+% environment:
+% \begin{verbatim}
+% \begin{table}
+% \caption{Simulation Configuration}
+% \label{tab:conf}
+% \begin{minipage}{\columnwidth}
+% \begin{center}
+% \begin{tabular}{ll}
+% \toprule
+% TERRAIN\footnote{This is a table footnote. This is a
+% table footnote. This is a table footnote.} &
+% (200\,m$\times$200\,m) Square\\
+% Node Number & 289\\
+% Node Placement & Uniform\\
+% Application & Many-to-Many/Gossip CBR Streams\\
+% Payload Size & 32 bytes\\
+% Routing Layer & GF\\
+% MAC Layer & CSMA/MMSN\\
+% Radio Layer & RADIO-ACCNOISE\\
+% Radio Bandwidth & 250Kbps\\
+% Radio Range & 20m--45m\\
+% \bottomrule
+% \end{tabular}
+% \end{center}
+% \bigskip
+% \footnotesize\emph{Source:} This is a table
+% sourcenote. This is a table sourcenote. This is a table
+% sourcenote.
+%
+% \emph{Note:} This is a table footnote.
+% \end{minipage}
+% \end{table}
+% \end{verbatim}
+%
+% \DescribeEnv{sidebar}%
+% \DescribeEnv{marginfigure}%
+% \DescribeEnv{margintable}%
+% SIGCHI extended abstract extensively uses margin space. The package
+% provides three environments for this with option captions:
+% \begin{description}
+% \item[sidebar:] textual information on the margin
+% \item[marginfigure:] a figure on the margin
+% \item[margintable:] a table on the margin
+% \end{description}
+%
+%
+%\subsection{Theorems}
+%\label{sec:ug_theorems}
+%
+% ACM classes define two theorem styles and several pre-defined
+% theorem environments:
+% \begin{description}
+% \item[acmplain:] this is the style used for
+% |theorem|,
+% |conjecture|,
+% |proposition|,
+% |lemma|,
+% |corollary|, and
+% \item[acmdefinition:] this is the style used for |example| and
+% |definition|.
+% \end{description}
+%
+%
+%
+%\subsection{Online-only and offline-only material}
+%\label{sec:ug_screen}
+%
+% \DescribeEnv{printonly}%
+% \DescribeEnv{screenonly}%
+% Some supplementary material in ACM publication is put online, but
+% not in the printed version. The text inside the environment
+% |screenonly| will be typeset only when the option |screen| (see
+% Section~\ref{sec:invocation}) is set to |true|. Conversely, the
+% text inside the environment |printonly| is typset only when this
+% option is set to |false|. For example
+% \begin{verbatim}
+% \section{Supplementary materials}
+%
+% \begin{printonly}
+% This section is included in the online version of the paper.
+% \end{printonly}
+%
+% \begin{screenonly}
+% (The actual section).
+% \end{screenonly}
+%
+% \end{verbatim}
+%
+%
+%
+%\subsection{Note about anonymous mode}
+%\label{sec:ug_anonymous}
+%
+% \DescribeEnv{anonsuppress}%
+% When the option |anonymous| is selected, \TeX\ suppresses author
+% information (including number of authors) for a blind review.
+% However, sometimes the information identifying the authors may be
+% present in the body of the paper, for example, in the
+% acknowledgements. The environment |anonsuppress| is used to
+% suppress such information, for example
+% \begin{verbatim}
+% \section*{Acknowledgements}
+% \begin{anonsuppress}
+% The authors wish to thank Prof. C.~O.~Lleague for her generous
+% advices and the Society for Development of Oort Cloud for the
+% financial support.
+% \end{anonsuppress}
+% \end{verbatim}
+%
+%
+%\subsection{Bibliography}
+%\label{sec:ug_bibliography}
+%
+% The Boolean option |natbib| selects whether to use |natbib| package
+% for bibliography. If you use |natbib|, then commands like
+% \cs{citep} and \cs{citeauthor} are automatically supported. You may
+% customize \cs{natbib} using \cs{setcitestyle} command, for example,
+% \begin{verbatim}
+% \setcitestyle{numbers,sort&compress}
+% \end{verbatim}
+%
+%
+% ACM journals use |natbib| and the style
+% |ACM-Reference-Format-Journals|.
+%
+% Most ACM conference proceedings do \emph{not} use |natbib|.
+% SIGGRAPH conferences use |acmsiggraph| style. SIGCHI conferences
+% use |SIGCHI-Reference-Format| style. The other conferences employ
+% one of the four styles:
+% \begin{enumerate}
+% \item acm-abbrv
+% \item acm-alpha
+% \item acm-plain
+% \item acm-unsrt
+% \end{enumerate}
+% The author should consult specific instructions about the
+% style to choose.
+%
+%
+%
+%\subsection{Colors}
+%\label{sec:ug_colors}
+%
+% While printed ACM publications are usually black and white, screen
+% mode allows the use of colors. The ACM classes pre-define several
+% colors according to~\cite{ACMIdentityStandards}: |ACMBlue|,
+% |ACMYellow|, |ACMOrange|, |ACMRed|, |ACMLightBlue|, |ACMGreen|,
+% |ACMPurple|, |ACMDarkBlue|. You can use them in the color
+% assignments.
+%
+%
+% \StopEventually{
+% \clearpage
+% \bibliography{acmart}
+% \bibliographystyle{unsrt}}
+%
+% \clearpage
+%
+%
+%\section{Implementation}
+%\label{sec:impl}
+%
+%\subsection{Identification}
+%\label{sec:ident}
+%
+% We start with the declaration who we are. Most |.dtx| files put
+% driver code in a separate driver file |.drv|. We roll this code into the
+% main file, and use the pseudo-guard |<gobble>| for it.
+% \begin{macrocode}
+%<class>\NeedsTeXFormat{LaTeX2e}
+%<*gobble>
+\ProvidesFile{acmart.dtx}
+%</gobble>
+%<class>\ProvidesClass{acmart}
+[2016/05/03 v1.07 Typesetting articles for Association of
+Computing Machinery]
+% \end{macrocode}
+%
+% \changes{v1.00}{2016/04/14}{First released version}
+% \changes{v1.01}{2016/04/18}{Defined ACM colors}
+% \changes{v1.01}{2016/04/18}{Changed hyperref colors in screen mode
+% (closes \url{https://github.com/borisveytsman/acmart/issues/1})}
+% \changes{v1.01}{2016/04/18}{Set headheight to 1pc for all formats
+% (closes \url{https://github.com/borisveytsman/acmart/issues/5})}
+% \changes{v1.02}{2016/04/21}{Documentation changes
+% (closes \url{https://github.com/borisveytsman/acmart/issues/13})}
+% \changes{v1.02}{2016/04/21}{Added TOPS and TSC
+% (closes \url{https://github.com/borisveytsman/acmart/issues/12})}
+% \changes{v1.03}{2016/04/22}{Added authorversion option
+% (closes \url{https://github.com/borisveytsman/acmart/issues/9})}
+% \changes{v1.03}{2016/04/22}{Added anonsuppress environment}
+% \changes{v1.04}{2016/04/26}{Updated bibliography for siggraph}
+% \changes{v1.05}{2016/04/27}{Patched \cs{setcitestyle} command;
+% closes \url{https://github.com/borisveytsman/acmart/issues/19}}
+% \changes{v1.05}{2016/04/27}{Added processing doi numbers for
+% acmsiggraph and doi numbers for sigproc.bib}
+%
+%
+% And the driver code:
+% \begin{macrocode}
+%<*gobble>
+\documentclass{ltxdoc}
+\usepackage{array,booktabs,amsmath,graphicx,fancyvrb,tabularx}
+\usepackage[tt=false]{libertine}
+\usepackage[varqu]{zi4}
+\usepackage[libertine]{newtxmath}
+\usepackage[tableposition=top]{caption}
+\usepackage{hypdoc}
+\PageIndex
+\CodelineIndex
+\RecordChanges
+\EnableCrossrefs
+\begin{document}
+ \DocInput{acmart.dtx}
+\end{document}
+%</gobble>
+%<*class>
+\def\@classname{acmart}
+% \end{macrocode}
+%
+% \subsection{Options}
+% \label{sec:options}
+%
+% We need |xkeyval| since some of our options may have values:
+% \begin{macrocode}
+\RequirePackage{xkeyval}
+% \end{macrocode}
+%
+% \begin{macro}{format}
+% The possible formats
+% \begin{macrocode}
+\define@choicekey*+{acmart.cls}{format}[\ACM@format\ACM@format@nr]{%
+ manuscript, acmsmall, acmlarge, acmtog, sigconf, siggraph,
+ sigplan, sigchi, sigchi-a}[manuscript]{}{%
+ \ClassError{\@classname}{The option format must be manuscript,
+ acmsmall, acmlarge, acmtog, sigconf, siggraph,
+ sigplan, sigchi or sigchi-a}}
+\def\@DeclareACMFormat#1{\DeclareOptionX{#1}{\setkeys{acmart.cls}{format=#1}}}
+\@DeclareACMFormat{manuscript}
+\@DeclareACMFormat{acmsmall}
+\@DeclareACMFormat{acmlarge}
+\@DeclareACMFormat{acmtog}
+\@DeclareACMFormat{sigconf}
+\@DeclareACMFormat{siggraph}
+\@DeclareACMFormat{sigplan}
+\@DeclareACMFormat{sigchi}
+\@DeclareACMFormat{sigchi-a}
+\ExecuteOptionsX{format}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\if@ACM@screen}
+% Whether we use screen mode
+% \begin{macrocode}
+\define@boolkey+{acmart.cls}[@ACM@]{screen}[true]{%
+ \if@ACM@screen
+ \PackageInfo{\@classname}{Using screen mode}%
+ \else
+ \PackageInfo{\@classname}{Not using screen mode}%
+ \fi}{\PackageError{\@classname}{Option screen can be either true or
+ false}}
+\ExecuteOptionsX{screen=false}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\if@ACM@review}
+% Whether we use review mode
+% \begin{macrocode}
+\define@boolkey+{acmart.cls}[@ACM@]{review}[true]{%
+ \if@ACM@review
+ \PackageInfo{\@classname}{Using review mode}%
+ \else
+ \PackageInfo{\@classname}{Not using review mode}%
+ \fi}{\PackageError{\@classname}{Option review can be either true or
+ false}}
+\ExecuteOptionsX{review=false}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\if@ACM@authorversion}
+% \changes{v1.03}{2016/04/22}{Added macro}
+% Whether we use author's version
+% \begin{macrocode}
+\define@boolkey+{acmart.cls}[@ACM@]{authorversion}[true]{%
+ \if@ACM@authorversion
+ \PackageInfo{\@classname}{Using authorversion mode}%
+ \else
+ \PackageInfo{\@classname}{Not using authorversion mode}%
+ \fi}{\PackageError{\@classname}{Option authorversion can be either true or
+ false}}
+\ExecuteOptionsX{authorversion=false}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+%
+% \begin{macro}{\if@ACM@natbib}
+% Whether we use natbib mode
+% \begin{macrocode}
+\define@boolkey+{acmart.cls}[@ACM@]{natbib}[true]{%
+ \if@ACM@natbib
+ \PackageInfo{\@classname}{Using natbib mode}%
+ \else
+ \PackageInfo{\@classname}{Not using natbib mode}%
+ \fi}{\PackageError{\@classname}{Option natbib can be either true or
+ false}}
+\ExecuteOptionsX{natbib=false}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\if@ACM@anonymous}
+% Whether we use anonymous mode
+% \begin{macrocode}
+\define@boolkey+{acmart.cls}[@ACM@]{anonymous}[true]{%
+ \if@ACM@anonymous
+ \PackageInfo{\@classname}{Using anonymous mode}%
+ \else
+ \PackageInfo{\@classname}{Not using anonymous mode}%
+ \fi}{\PackageError{\@classname}{Option anonymous can be either true or
+ false}}
+\ExecuteOptionsX{anonymous=false}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\ACM@fontsize}
+% The font size to pass to the base class
+% \begin{macrocode}
+\def\ACM@fontsize{}
+\DeclareOptionX{9pt}{\edef\ACM@fontsize{\CurrentOption}}
+\DeclareOptionX{10pt}{\edef\ACM@fontsize{\CurrentOption}}
+\DeclareOptionX{11pt}{\edef\ACM@fontsize{\CurrentOption}}
+\DeclareOptionX{12pt}{\edef\ACM@fontsize{\CurrentOption}}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \changes{v1.01}{2016/04/18}{Explicitly put draft option
+% (closes \url{https://github.com/borisveytsman/acmart/issues/4})}
+%
+% \begin{macrocode}
+\DeclareOptionX{draft}{\PassOptionsToClass{\CurrentOption}{amsart}}
+\DeclareOptionX{*}{\PassOptionsToClass{\CurrentOption}{amsart}}
+\ProcessOptionsX
+\ClassInfo{\@classname}{Using format \ACM@format, number \ACM@format@nr}
+% \end{macrocode}
+%
+%
+%
+%\subsection{Setting switches}
+%\label{sec:switches}
+%
+% \begin{macro}{\if@ACM@manuscript}
+% Whether we use manuscript mode
+% \begin{macrocode}
+\newif\if@ACM@manuscript
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\if@ACM@journal}
+% There are two kinds of publications: journals and books
+% \begin{macrocode}
+\newif\if@ACM@journal
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\if@ACM@sigchiamode}
+% The formatting of SIGCHI abstracts is quite unusual. We have a
+% special switch for them.
+% \begin{macrocode}
+\newif\if@ACM@sigchiamode
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% Setting up switches
+% \begin{macrocode}
+\ifnum\ACM@format@nr=0\relax
+ \@ACM@manuscripttrue
+\else
+ \@ACM@manuscriptfalse
+\fi
+\@ACM@sigchiamodefalse
+\ifcase\ACM@format@nr
+\relax % manuscript
+ \@ACM@journaltrue
+\or% acmsmall
+ \@ACM@journaltrue
+\or % acmlarge
+ \@ACM@journaltrue
+\or % acmtog
+ \@ACM@journaltrue
+\or % sigconf
+ \@ACM@journalfalse
+\or % siggraph
+ \@ACM@journalfalse
+ \or % sigplan
+ \@ACM@journalfalse
+ \or % sigchi
+ \@ACM@journalfalse
+\or % sigchi-a
+ \@ACM@journalfalse
+ \@ACM@sigchiamodetrue
+\fi
+% \end{macrocode}
+%
+%
+%\subsection{Loading base class and package}
+%\label{sec:loading}
+%
+%
+% At this point we either have \cs{ACM@fontsize}, or use defaults
+% \begin{macrocode}
+\ifx\ACM@fontsize\@empty
+ \ifcase\ACM@format@nr
+ \relax % manuscript
+ \def\ACM@fontsize{9pt}%
+ \or% acmsmall
+ \def\ACM@fontsize{10pt}%
+ \or % acmlarge
+ \def\ACM@fontsize{9pt}%
+ \or % acmtog
+ \def\ACM@fontsize{9pt}%
+ \or % sigconf
+ \def\ACM@fontsize{9pt}%
+ \or % siggraph
+ \def\ACM@fontsize{9pt}%
+ \or % sigplan
+ \def\ACM@fontsize{9pt}%
+ \or % sigchi
+ \def\ACM@fontsize{10pt}%
+ \or % sigchi-a
+ \def\ACM@fontsize{10pt}%
+ \fi
+\fi
+\ClassInfo{\@classname}{Using fontsize \ACM@fontsize}
+\LoadClass[\ACM@fontsize, reqno]{amsart}
+\RequirePackage{microtype}
+% \end{macrocode}
+%
+%
+% We need |totpages| package to calculate the number of pages
+% \begin{macrocode}
+\RequirePackage{totpages}
+% \end{macrocode}
+%
+% The |amsmath| \cs{collect@body} is defined using \cs{def}. We load
+% |environ| to access the \cs{long} version of the command
+% \begin{macrocode}
+\RequirePackage{environ}
+% \end{macrocode}
+%
+% We use |setspace| for doublespacing
+% \begin{macrocode}
+\if@ACM@manuscript
+\RequirePackage{setspace}
+\onehalfspacing
+\fi
+% \end{macrocode}
+%
+% Citations. We patch \cs{setcitestyle} to allow, e.g.,
+% \cs{setcitestyle}|{sort}| and \cs{setcitestyle}|{nosort}|
+% \begin{macrocode}
+\if@ACM@natbib
+ \RequirePackage{natbib}
+ \renewcommand{\bibfont}{\bibliofont}
+ \renewcommand\setcitestyle[1]{
+ \@for\@tempa:=#1\do
+ {\def\@tempb{round}\ifx\@tempa\@tempb
+ \renewcommand\NAT@open{(}\renewcommand\NAT@close{)}\fi
+ \def\@tempb{square}\ifx\@tempa\@tempb
+ \renewcommand\NAT@open{[}\renewcommand\NAT@close{]}\fi
+ \def\@tempb{angle}\ifx\@tempa\@tempb
+ \renewcommand\NAT@open{$<$}\renewcommand\NAT@close{$>$}\fi
+ \def\@tempb{curly}\ifx\@tempa\@tempb
+ \renewcommand\NAT@open{\{}\renewcommand\NAT@close{\}}\fi
+ \def\@tempb{semicolon}\ifx\@tempa\@tempb
+ \renewcommand\NAT@sep{;}\fi
+ \def\@tempb{colon}\ifx\@tempa\@tempb
+ \renewcommand\NAT@sep{;}\fi
+ \def\@tempb{comma}\ifx\@tempa\@tempb
+ \renewcommand\NAT@sep{,}\fi
+ \def\@tempb{authoryear}\ifx\@tempa\@tempb
+ \NAT@numbersfalse\fi
+ \def\@tempb{numbers}\ifx\@tempa\@tempb
+ \NAT@numberstrue\NAT@superfalse\fi
+ \def\@tempb{super}\ifx\@tempa\@tempb
+ \NAT@numberstrue\NAT@supertrue\fi
+ \def\@tempb{nobibstyle}\ifx\@tempa\@tempb
+ \let\bibstyle=\@gobble\fi
+ \def\@tempb{bibstyle}\ifx\@tempa\@tempb
+ \let\bibstyle=\@citestyle\fi
+ \def\@tempb{sort}\ifx\@tempa\@tempb
+ \def\NAT@sort{\@ne}\fi
+ \def\@tempb{nosort}\ifx\@tempa\@tempb
+ \def\NAT@sort{\z@}\fi
+ \def\@tempb{compress}\ifx\@tempa\@tempb
+ \def\NAT@cmprs{\@ne}\fi
+ \def\@tempb{nocompress}\ifx\@tempa\@tempb
+ \def\NAT@cmprs{\@z}\fi
+ \def\@tempb{sort&compress}\ifx\@tempa\@tempb
+ \def\NAT@sort{\@ne}\def\NAT@cmprs{\@ne}\fi
+ \def\@tempb{mcite}\ifx\@tempa\@tempb
+ \let\NAT@merge\@ne\fi
+ \def\@tempb{merge}\ifx\@tempa\@tempb
+ \@ifnum{\NAT@merge<\tw@}{\let\NAT@merge\tw@}{}\fi
+ \def\@tempb{elide}\ifx\@tempa\@tempb
+ \@ifnum{\NAT@merge<\thr@@}{\let\NAT@merge\thr@@}{}\fi
+ \def\@tempb{longnamesfirst}\ifx\@tempa\@tempb
+ \NAT@longnamestrue\fi
+ \def\@tempb{nonamebreak}\ifx\@tempa\@tempb
+ \def\NAT@nmfmt#1{\mbox{\NAT@up#1}}\fi
+ \expandafter\NAT@find@eq\@tempa=\relax\@nil
+ \if\@tempc\relax\else
+ \expandafter\NAT@rem@eq\@tempc
+ \def\@tempb{open}\ifx\@tempa\@tempb
+ \xdef\NAT@open{\@tempc}\fi
+ \def\@tempb{close}\ifx\@tempa\@tempb
+ \xdef\NAT@close{\@tempc}\fi
+ \def\@tempb{aysep}\ifx\@tempa\@tempb
+ \xdef\NAT@aysep{\@tempc}\fi
+ \def\@tempb{yysep}\ifx\@tempa\@tempb
+ \xdef\NAT@yrsep{\@tempc}\fi
+ \def\@tempb{notesep}\ifx\@tempa\@tempb
+ \xdef\NAT@cmt{\@tempc}\fi
+ \def\@tempb{citesep}\ifx\@tempa\@tempb
+ \xdef\NAT@sep{\@tempc}\fi
+ \fi
+ }%
+ \NAT@@setcites
+ }
+ \setcitestyle{%
+ open={[},close={]},citesep={;},%
+ authoryear,aysep={},yysep={,},%
+ notesep={, }}
+\fi
+% \end{macrocode}
+%
+% Before we call |hyperref|, we redefine \cs{startsection} commands to
+% their \LaTeX\ defaults, since |amsart| ones are too AMS-specific.
+% We need to do this early since we want |hyperref| to have a chance
+% to redefine them again:
+% \begin{macrocode}
+\def\@startsection#1#2#3#4#5#6{%
+ \if@noskipsec \leavevmode \fi
+ \par
+ \@tempskipa #4\relax
+ \@afterindenttrue
+ \ifdim \@tempskipa <\z@
+ \@tempskipa -\@tempskipa \@afterindentfalse
+ \fi
+ \if@nobreak
+ \everypar{}%
+ \else
+ \addpenalty\@secpenalty\addvspace\@tempskipa
+ \fi
+ \@ifstar
+ {\@ssect{#3}{#4}{#5}{#6}}%
+ {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}
+\def\@sect#1#2#3#4#5#6[#7]#8{%
+ \ifnum #2>\c@secnumdepth
+ \let\@svsec\@empty
+ \else
+ \refstepcounter{#1}%
+ \protected@edef\@svsec{\@seccntformat{#1}\relax}%
+ \fi
+ \@tempskipa #5\relax
+ \ifdim \@tempskipa>\z@
+ \begingroup
+ #6{%
+ \@hangfrom{\hskip #3\relax\@svsec}%
+ \interlinepenalty \@M #8\@@par}%
+ \endgroup
+ \csname #1mark\endcsname{#7}%
+ \addcontentsline{toc}{#1}{%
+ \ifnum #2>\c@secnumdepth \else
+ \protect\numberline{\csname the#1\endcsname}%
+ \fi
+ #7}%
+ \else
+ \def\@svsechd{%
+ #6{\hskip #3\relax
+ \@svsec #8}%
+ \csname #1mark\endcsname{#7}%
+ \addcontentsline{toc}{#1}{%
+ \ifnum #2>\c@secnumdepth \else
+ \protect\numberline{\csname the#1\endcsname}%
+ \fi
+ #7}}%
+ \fi
+ \@xsect{#5}}
+\def\@xsect#1{%
+ \@tempskipa #1\relax
+ \ifdim \@tempskipa>\z@
+ \par \nobreak
+ \vskip \@tempskipa
+ \@afterheading
+ \else
+ \@nobreakfalse
+ \global\@noskipsectrue
+ \everypar{%
+ \if@noskipsec
+ \global\@noskipsecfalse
+ {\setbox\z@\lastbox}%
+ \clubpenalty\@M
+ \begingroup \@svsechd \endgroup
+ \unskip
+ \@tempskipa #1\relax
+ \hskip -\@tempskipa
+ \else
+ \clubpenalty \@clubpenalty
+ \everypar{}%
+ \fi}%
+ \fi
+ \ignorespaces}
+\def\@seccntformat#1{\csname the#1\endcsname\quad}
+\def\@ssect#1#2#3#4#5{%
+ \@tempskipa #3\relax
+ \ifdim \@tempskipa>\z@
+ \begingroup
+ #4{%
+ \@hangfrom{\hskip #1}%
+ \interlinepenalty \@M #5\@@par}%
+ \endgroup
+ \else
+ \def\@svsechd{#4{\hskip #1\relax #5}}%
+ \fi
+ \@xsect{#3}}
+% \end{macrocode}
+%
+%
+% And |hyperref|
+% \begin{macrocode}
+\let\@footnotemark@nolink\@footnotemark
+\let\@footnotetext@nolink\@footnotetext
+\RequirePackage{hyperref}
+\if@ACM@sigchiamode
+ \urlstyle{sf}
+\else
+ \urlstyle{rm}
+\fi
+\if@ACM@screen
+ \hypersetup{colorlinks,
+ linkcolor=ACMRed,
+ citecolor=ACMPurple,
+ urlcolor=ACMDarkBlue,
+ filecolor=ACMDarkBlue}
+\else
+ \hypersetup{hidelinks}
+\fi
+% \end{macrocode}
+%
+% Bibliography mangling. Siggraph does not want the label.
+% \begin{macrocode}
+\if@ACM@natbib
+ \let\citeN\cite
+ \let\cite\citep
+ \let\citeANP\citeauthor
+ \let\citeNN\citeyearpar
+ \let\citeyearNP\citeyear
+ \let\citeyear\citeyearpar
+ \let\citeNP\citealt
+ \def\shortcite#1{\citeyear{#1}}
+ \DeclareRobustCommand\citeA
+ {\begingroup\NAT@swafalse
+ \let\NAT@ctype\@ne\NAT@partrue\NAT@fullfalse\NAT@open\NAT@citetp}
+ \providecommand\newblock{}
+\else
+ \providecommand\citename[1]{#1}
+\fi
+\ifcase\ACM@format@nr
+\relax % manuscript
+\or% acmsmall
+\or % acmlarge
+\or % acmtog
+\or % sigconf
+\or % siggraph
+ \def\@biblabel#1{}
+ \ifx\bibhang\@undefined
+ \newlength\bibhang
+ \fi
+ \setlength{\bibhang}{1em}
+ \renewenvironment{thebibliography}[1]{%
+ \@bibtitlestyle
+ \normalfont\bibliofont\labelsep .5em\relax
+ \renewcommand\theenumiv{\arabic{enumiv}}\let\p@enumiv\@empty
+ \list{\@biblabel{\theenumiv}}{\labelwidth\z@
+ \setlength{\itemindent}{-\bibhang}%
+ \setlength{\leftmargin}{\bibhang}%
+ \labelsep\z@
+ \def\newblock{\hskip .11em plus .33em minus .07em}%
+ \usecounter{enumiv}}%
+ \sloppy \clubpenalty\@M \widowpenalty\clubpenalty
+ \sfcode`\.=\@m
+ }{%
+ \def\@noitemerr{\@latex@warning{Empty `thebibliography' environment}}%
+ \endlist
+ }
+\or % sigplan
+\or % sigchi
+\or % sigchi-a
+\fi
+% \end{macrocode}
+%
+% Graphics and color
+% \begin{macrocode}
+\RequirePackage{graphicx, xcolor}
+% \end{macrocode}
+%
+% We define ACM colors according to~\cite{ACMIdentityStandards}:
+% \begin{macrocode}
+\definecolor[named]{ACMBlue}{cmyk}{1,0.1,0,0.1}
+\definecolor[named]{ACMYellow}{cmyk}{0,0.16,1,0}
+\definecolor[named]{ACMOrange}{cmyk}{0,0.42,1,0.01}
+\definecolor[named]{ACMRed}{cmyk}{0,0.90,0.86,0}
+\definecolor[named]{ACMLightBlue}{cmyk}{0.49,0.01,0,0}
+\definecolor[named]{ACMGreen}{cmyk}{0.20,0,1,0.19}
+\definecolor[named]{ACMPurple}{cmyk}{0.55,1,0,0.15}
+\definecolor[named]{ACMDarkBlue}{cmyk}{1,0.58,0,0.21}
+% \end{macrocode}
+%
+%
+%\subsection{Paper size and paragraphing}
+%\label{sec:paper}
+%
+% We use |geometry| for dimensions
+% \begin{macrocode}
+\RequirePackage{geometry}
+\ifcase\ACM@format@nr
+\relax % manuscript
+ \geometry{letterpaper,head=1pc}%
+\or% acmsmall
+ \geometry{twoside=true,
+ includeheadfoot, head=1pc, foot=2pc,
+ paperwidth=6.75in, paperheight=10in,
+ top=58pt, bottom=44pt, inner=46pt, outer=46pt
+ }%
+\or % acmlarge
+ \geometry{twoside=true, head=1pc, foot=2pc,
+ paperwidth=8.5in, paperheight=11in,
+ includeheadfoot,
+ top=78pt, bottom=114pt, inner=81pt, outer=81pt
+ }%
+\or % acmtog
+ \geometry{twoside=true, head=1pc, foot=2pc,
+ paperwidth=8.5in, paperheight=11in,
+ includeheadfoot, columnsep=24pt,
+ top=52pt, bottom=75pt, inner=52pt, outer=52pt
+ }%
+\or % sigconf
+ \geometry{twoside=true, head=1pc,
+ paperwidth=8.5in, paperheight=11in,
+ includeheadfoot, columnsep=2pc,
+ top=57pt, bottom=75pt, inner=54pt, outer=57pt
+ }%
+\or % siggraph
+ \geometry{twoside=true, head=1pc,
+ paperwidth=8.5in, paperheight=11in,
+ includeheadfoot, columnsep=2pc,
+ top=57pt, bottom=75pt, inner=54pt, outer=57pt
+ }%
+\or % sigplan
+ \geometry{twoside=true, head=1pc,
+ paperwidth=8.5in, paperheight=11in,
+ includeheadfoot, columnsep=2pc,
+ top=74pt, bottom=70pt, inner=54pt, outer=54pt
+ }%
+\or % sigchi
+ \geometry{twoside=true, head=1pc,
+ paperwidth=8.5in, paperheight=11in,
+ includeheadfoot, columnsep=2pc,
+ top=66pt, bottom=78pt, inner=54pt, outer=48pt
+ }%
+\or % sigchi-a
+ \geometry{twoside=false, head=1pc,
+ paperwidth=11in, paperheight=8.5in,
+ includeheadfoot, marginparsep=72pt,
+ marginparwidth=170pt, columnsep=20pt,
+ top=72pt, bottom=72pt, left=314pt, right=72pt
+ }%
+ \@mparswitchfalse
+ \reversemarginpar
+\fi
+% \end{macrocode}
+%
+%
+% \begin{macro}{\parindent}
+% \begin{macro}{\parskip}
+% Paragraphing
+% \begin{macrocode}
+\setlength\parindent{10\p@}
+\setlength\parskip{\z@}
+\ifcase\ACM@format@nr
+\relax % manuscript
+\or% acmsmall
+\or % acmlarge
+\or % acmtog
+ \setlength\parindent{9\p@}%
+\or % sigconf
+\or % siggraph
+\or % sigplan
+\or % sigchi
+\or % sigchi-a
+\fi
+% \end{macrocode}
+%
+% \end{macro}
+% \end{macro}
+%
+% Footnotes require some consideration. We have several layers of
+% footnotes: frontmatter footnotes, ``regular'' footnotes and the
+% special insert for bibstrip. In the old ACM classes bibstrip was a
+% \cs{@float}. The problem with floats is that they tend to, well,
+% float---and we want the guarantee they stay.
+% \begin{macrocode}
+\RequirePackage{manyfoot}
+\DeclareNewFootnote{copyrightpermission}
+\skip\footinscopyrightpermission=0.1\baselineskip plus 0.1\baselineskip
+% \end{macrocode}
+%
+%
+% \begin{macro}{\footnoterule}
+% Tschichold's rules:
+% \begin{macrocode}
+\def\footnoterule{\kern-3\p@
+ \hrule \@width \columnwidth \kern 2.6\p@}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\endminipage}
+% We do not use footnote rules in minipages
+% \begin{macrocode}
+\def\endminipage{%
+ \par
+ \unskip
+ \ifvoid\@mpfootins\else
+ \vskip\skip\@mpfootins
+ \normalcolor
+ \unvbox\@mpfootins
+ \fi
+ \@minipagefalse %% added 24 May 89
+ \color@endgroup
+ \egroup
+ \expandafter\@iiiparbox\@mpargs{\unvbox\@tempboxa}}
+
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@makefntext}
+% We do note use indentation for footnotes
+% \begin{macrocode}
+\def\@makefntext{\noindent\@makefnmark}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@footnotetext}
+% In sigchi-a mode our footnotes are on the margins!
+% \begin{macrocode}
+\if@ACM@sigchiamode
+\long\def\@footnotetext#1{\marginpar{%
+ \reset@font\small
+ \interlinepenalty\interfootnotelinepenalty
+ \protected@edef\@currentlabel{%
+ \csname p@footnote\endcsname\@thefnmark
+ }%
+ \color@begingroup
+ \@makefntext{%
+ \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
+ \color@endgroup}}%
+\fi
+% \end{macrocode}
+%
+% \end{macro}
+%
+%\subsection{Fonts}
+%\label{sec:fonts}
+%
+% We use Times throughout
+% \begin{macrocode}
+\usepackage[tt=false]{libertine}
+\usepackage[varqu]{zi4}
+\usepackage[libertine]{newtxmath}
+% \end{macrocode}
+%
+% The SIGCHI extended abstracts are sans serif:
+% \begin{macrocode}
+\if@ACM@sigchiamode
+ \renewcommand{\familydefault}{\sfdefault}
+\fi
+% \end{macrocode}
+%
+%
+%\subsection{Floats}
+%\label{sec:floats}
+%
+% We use |caption| package
+% \begin{macrocode}
+\RequirePackage{caption, float}
+\captionsetup[table]{position=top}
+\if@ACM@journal
+ \captionsetup{labelfont={sf, small},
+ textfont={sf, small}, margin=\z@}
+ \captionsetup[figure]{name={Fig.}}
+\else
+ \captionsetup{labelfont={bf},
+ textfont={bf}, labelsep=colon, margin=\z@}
+ \ifcase\ACM@format@nr
+ \relax % manuscript
+ \or% acmsmall
+ \or % acmlarge
+ \or % acmtog
+ \or % sigconf
+ \or % siggraph
+ \captionsetup{textfont={it}}
+ \or % sigplan
+ \or % sigchi
+ \captionsetup[figure]{labelfont={bf, small},
+ textfont={bf, small}}
+ \or % sigchi-a
+ \captionsetup[figure]{labelfont={bf, small},
+ textfont={bf, small}}
+ \fi
+\fi
+% \end{macrocode}
+%
+% \begin{macro}{sidebar}
+% The sidebar environment:
+% \begin{macrocode}
+\newfloat{sidebar}{}{sbar}
+\floatname{sidebar}{Sidebar}
+\renewenvironment{sidebar}{\Collect@Body\@sidebar}{}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@sidebar}
+% The processing of the saved text
+% \begin{macrocode}
+\long\def\@sidebar#1{\bgroup\captionsetup{type=sidebar}%
+ \marginpar{\small#1}\egroup}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{marginfigure}
+% The marginfigure environment:
+% \begin{macrocode}
+\newenvironment{marginfigure}{\Collect@Body\@marginfigure}{}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@marginfigure}
+% The processing of the saved text
+% \begin{macrocode}
+\long\def\@marginfigure#1{\bgroup\captionsetup{type=figure}%
+ \marginpar{\small#1}\egroup}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{margintable}
+% The margintable environment:
+% \begin{macrocode}
+\newenvironment{margintable}{\Collect@Body\@margintable}{}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@margintable}
+% The processing of the saved text
+% \begin{macrocode}
+\long\def\@margintable#1{\bgroup\captionsetup{type=table}%
+ \marginpar{\small#1}\egroup}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% SIGCHI extended abstract provides an interesting possibility to push
+% into the margin. Here we use |figure*| and |table*| for this.
+% \begin{macro}{\fulltextwidth}
+% We define the width of the boxes as
+% \begin{macrocode}
+\newdimen\fulltextwidth
+\fulltextwidth=\dimexpr(\textwidth+\marginparwidth+\marginparsep)
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@dblfloat}
+% We redefine the double float command. First, we make the size
+% bigger. Second, our default position is going to be |tp| (to give
+% marginalia a chance)
+% \begin{macrocode}
+\if@ACM@sigchiamode
+\def\@dblfloat{\bgroup\columnwidth=\fulltextwidth
+ \let\@endfloatbox\@endwidefloatbox
+ \def\@fpsadddefault{\def\@fps{tp}}%
+ \@float}
+\fi
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\end@dblfloat}
+% And the end. Just adding a \cs{bgroup}.
+% \begin{macrocode}
+\if@ACM@sigchiamode
+\def\end@dblfloat{%
+ \end@float\egroup}
+\fi
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@endwidefloatbox}
+% This is the end of a wide box - we basically move everything
+% to the left
+% \begin{macrocode}
+\def\@endwidefloatbox{%
+ \par\vskip\z@skip
+ \@minipagefalse
+ \outer@nobreak
+ \egroup
+ \color@endbox
+ \global\setbox\@currbox=\vbox{\moveleft
+ \dimexpr(\fulltextwidth-\textwidth)\box\@currbox}%
+ \wd\@currbox=\textwidth
+}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%\subsection{Top matter data}
+%\label{sec:top_matter_data}
+%
+%
+%
+% We use keyval interface to define journal title and relevant
+% information
+% \begin{macrocode}
+\define@choicekey*+{ACM}{acmJournal}[\@journalCode\@journalCode@nr]{%
+ CIE,%
+ CSUR,%
+ JACM,%
+ JDIQ,%
+ JEA,%
+ JERIC,%
+ JETC,%
+ JOCCH,%
+ TAAS,%
+ TACCESS,%
+ TACO,%
+ TALG,%
+ TALLIP,%
+ TAP,%
+ TCPS,%
+ TEAC,%
+ TECS,%
+ TIIS,%
+ TISSEC,%
+ TIST,%
+ TKDD,%
+ TMIS,%
+ TOCE,%
+ TOCHI,%
+ TOCL,%
+ TOCS,%
+ TOCT,%
+ TODAES,%
+ TODS,%
+ TOG,%
+ TOIS,%
+ TOIT,%
+ TOMACS,%
+ TOMM,%
+ TOMPECS,%
+ TOMS,%
+ TOPC,%
+ TOPS,%
+ TOPLAS,%
+ TOS,%
+ TOSEM,%
+ TOSN,%
+ TRETS,%
+ TSAS,%
+ TSC,%
+ TSLP,%
+ TWEB%
+}{%
+\ifcase\@journalCode@nr
+\relax % CIE
+ \def\@journalName{ACM Computers in Entertainment}%
+ \def\@journalNameShort{ACM Comput. Entertain.}%
+ \def\@permissionCodeOne{1544-3574}%
+\or % CSUR
+ \def\@journalName{ACM Computing Surveys}%
+ \def\@journalNameShort{ACM Comput. Surv.}%
+ \def\@permissionCodeOne{0360-0300}%
+\or % JACM
+ \def\@journalName{Journal of the ACM}%
+ \def\@journalNameShort{J. ACM}%
+ \def\@permissionCodeOne{0004-5411}%
+\or % JDIQ
+ \def\@journalName{ACM Journal of Data and Information Quality}%
+ \def\@journalNameShort{ACM J. Data Inform. Quality}%
+ \def\@permissionCodeOne{1936-1955}%
+\or % JEA
+ \def\@journalName{ACM Journal of Experimental Algorithmics}%
+ \def\@journalNameShort{ACM J. Exp. Algor.}%
+ \def\@permissionCodeOne{1084-6654}%
+\or % JERIC
+ \def\@journalName{ACM Journal of Educational Resources in Computing}%
+ \def\@journalNameShort{ACM J. Edu. Resources in Comput.}%
+ \def\@permissionCodeOne{1073-0516}%
+\or % JETC
+ \def\@journalName{ACM Journal on Emerging Technologies in Computing Systems}%
+ \def\@journalNameShort{ACM J. Emerg. Technol. Comput. Syst.}%
+ \def\@permissionCodeOne{1550-4832}%
+\or % JOCCH
+ \def\@journalName{ACM Journal on Computing and Cultural Heritage}%
+ \def\@journalName{ACM J. Comput. Cult. Herit.}%
+\or % TAAS
+ \def\@journalName{ACM Transactions on Autonomous and Adaptive Systems}%
+ \def\@journalNameShort{ACM Trans. Autonom. Adapt. Syst.}%
+ \def\@permissionCodeOne{1556-4665}%
+\or % TACCESS
+ \def\@journalName{ACM Transactions on Accessible Computing}%
+ \def\@journalNameShort{ACM Trans. Access. Comput.}%
+ \def\@permissionCodeOne{1936-7228}%
+\or % TACO
+ \def\@journalName{ACM Transactions on Architecture and Code Optimization}%
+\or % TALG
+ \def\@journalName{ACM Transactions on Algorithms}%
+ \def\@journalNameShort{ACM Trans. Algor.}%
+ \def\@permissionCodeOne{1549-6325}%
+\or % TALLIP
+ \def\@journalName{ACM Transactions on Asian and Low-Resource Language Information Processing}%
+ \def\@journalNameShort{ACM Trans. Asian Low-Resour. Lang. Inf. Process.}%
+ \def\@permissionCodeOne{2375-4699}%
+\or % TAP
+ \def\@journalName{ACM Transactions on Applied Perception}%
+\or % TCPS
+ \def\@journalName{ACM Transactions on Cyber-Physical Systems}%
+\or % TEAC
+ \def\@journalName{ACM Transactions on Economics and Computation}%
+\or % TECS
+ \def\@journalName{ACM Transactions on Embedded Computing Systems}%
+ \def\@journalNameShort{ACM Trans. Embedd. Comput. Syst.}%
+ \def\@permissionCodeOne{1539-9087}%
+\or % TIIS
+ \def\@journalName{ACM Transactions on Interactive Intelligent Systems}%
+ \def\@journalNameShort{ACM Trans. Interact. Intell. Syst.}%
+ \def\@permissionCodeOne{2160-6455}%
+\or % TISSEC
+ \def\@journalName{ACM Transactions on Information and System Security}%
+ \def\@journalNameShort{ACM Trans. Info. Syst. Sec.}%
+ \def\@permissionCodeOne{1094-9224}%
+\or % TIST
+ \def\@journalName{ACM Transactions on Intelligent Systems and Technology}%
+ \def\@journalNameShort{ACM Trans. Intell. Syst. Technol.}%
+ \def\@permissionCodeOne{2157-6904}%
+\or % TKDD
+ \def\@journalName{ACM Transactions on Knowledge Discovery from Data}%
+ \def\@journalNameShort{ACM Trans. Knowl. Discov. Data.}%
+ \def\@permissionCodeOne{1556-4681}%
+\or % TMIS
+ \def\@journalName{ACM Transactions on Management Information Systems}%
+ \def\@journalNameShort{ACM Trans. Manag. Inform. Syst.}%
+ \def\@permissionCodeOne{2158-656X}%
+\or % TOCE
+ \def\@journalName{ACM Transactions on Computing Education}%
+ \def\@journalNameShort{ACM Trans. Comput. Educ.}%
+ \def\@permissionCodeOne{1946-6226}%
+\or % TOCHI
+ \def\@journalName{ACM Transactions on Computer-Human Interaction}%
+ \def\@journalNameShort{ACM Trans. Comput.-Hum. Interact.}%
+ \def\@permissionCodeOne{1073-0516}%
+\or % TOCL
+ \def\@journalName{ACM Transactions on Computational Logic}%
+ \def\@journalNameShort{ACM Trans. Comput. Logic}%
+ \def\@permissionCodeOne{1529-3785}%
+\or % TOCS
+ \def\@journalName{ACM Transactions on Computer Systems}%
+ \def\@journalNameShort{ACM Trans. Comput. Syst.}%
+ \def\@permissionCodeOne{0734-2071}%
+\or % TOCT
+ \def\@journalName{ACM Transactions on Computation Theory}%
+ \def\@journalNameShort{ACM Trans. Comput. Theory}%
+ \def\@permissionCodeOne{1942-3454}%
+\or % TODAES
+ \def\@journalName{ACM Transactions on Design Automation of Electronic Systems}%
+ \def\@journalNameShort{ACM Trans. Des. Autom. Electron. Syst.}%
+ \def\@permissionCodeOne{1084-4309}%
+\or % TODS
+ \def\@journalName{ACM Transactions on Database Systems}%
+ \def\@journalNameShort{ACM Trans. Datab. Syst.}%
+ \def\@permissionCodeOne{0362-5915}%
+\or % TOG
+ \def\@journalName{ACM Transactions on Graphics}%
+ \def\@journalNameShort{ACM Trans. Graph.}%
+ \def\@permissionCodeOne{0730-0301}
+\or % TOIS
+ \def\@journalName{ACM Transactions on Information Systems}%
+ \def\@journalName{ACM Transactions on Information Systems}%
+ \def\@permissionCodeOne{1046-8188}%
+\or % TOIT
+ \def\@journalName{ACM Transactions on Internet Technology}%
+ \def\@journalNameShort{ACM Trans. Internet Technol.}%
+ \def\@permissionCodeOne{1533-5399}%
+\or % TOMACS
+ \def\@journalName{ACM Transactions on Modeling and Computer Simulation}%
+ \def\@journalName{ACM Transactions on Modeling and Computer Simulation}%
+ \def\@journalNameShort{ACM Trans. Model. Comput. Simul.}%
+\or % TOMM
+ \def\@journalName{ACM Transactions on Multimedia Computing, Communications and Applications}%
+ \def\@journalNameShort{ACM Trans. Multimedia Comput. Commun. Appl.}%
+ \def\@permissionCodeOne{1551-6857}%
+ \def\@permissionCodeTwo{0100}%
+\or % TOMPECS
+ \def\@journalName{ACM Transactions on Modeling and Performance Evaluation of Computing Systems}%
+ \def\@journalNameShort{ACM Trans. Model. Perform. Eval. Comput. Syst.}%
+ \def\@permissionCodeOne{2376-3639}%
+\or % TOMS
+ \def\@journalName{ACM Transactions on Mathematical Software}%
+ \def\@journalNameShort{ACM Trans. Math. Softw.}%
+ \def\@permissionCodeOne{0098-3500}%
+\or % TOPC
+ \def\@journalName{ACM Transactions on Parallel Computing}%
+ \def\@journalNameShort{ACM Trans. Parallel Comput.}%
+ \def\@permissionCodeOne{1539-9087}%
+\or % TOPS
+ \def\@journalName{ACM Transactions on Privacy and Security}%
+ \def\@journalNameShort{ACM Trans. Priv. Sec.}%
+ \def\@permissionCodeOne{2471-2566}%
+\or % TOPLAS
+ \def\@journalName{ACM Transactions on Programming Languages and Systems}%
+ \def\@journalNameShort{ACM Trans. Program. Lang. Syst.}%
+ \def\@permissionCodeOne{0164-0925}%
+\or % TOS
+ \def\@journalName{ACM Transactions on Storage}%
+ \def\@journalNameShort{ACM Trans. Storage}%
+ \def\@permissionCodeOne{1553-3077}%
+\or % TOSEM
+ \def\@journalName{ACM Transactions on Software Engineering and Methodology}%
+ \def\@journalNameShort{ACM Trans. Softw. Eng. Methodol.}%
+ \def\@permissionCodeOne{1049-331X}%
+\or % TOSN
+ \def\@journalName{ACM Transactions on Sensor Networks}%
+ \def\@journalNameShort{ACM Trans. Sensor Netw.}%
+ \def\@permissionCodeOne{1550-4859}%
+\or % TRETS
+ \def\@journalName{ACM Transactions on Reconfigurable Technology and Systems}%
+ \def\@journalNameShort{ACM Trans. Reconfig. Technol. Syst.}%
+ \def\@permissionCodeOne{1936-7406}%
+\or % TSAS
+ \def\@journalName{ACM Transactions on Spatial Algorithms and Systems}%
+ \def\@journalNameShort{ACM Trans. Spatial Algorithms Syst.}%
+ \def\@permissionCodeOne{2374-0353}%
+\or % TSC
+ \def\@journalName{ACM Transactions on Social Computing}%
+ \def\@journalNameShort{ACM Trans. Soc. Comput.}%
+ \def\@permissionCodeOne{2469-7818}%
+\or % TSLP
+ \def\@journalName{ACM Transactions on Speech and Language Processing}%
+ \def\@journalNameShort{ACM Trans. Speech Lang. Process.}%
+ \def\@permissionCodeOne{1550-4875}%
+\or % TWEB
+ \def\@journalName{ACM Transactions on the Web}%
+ \def\@journalNameShort{ACM Trans. Web}%
+ \def\@permissionCodeOne{1559-1131}%
+\fi
+\ClassInfo{\@classname}{Using journal code \@journalCode}%
+}{%
+ \ClassError{\@classname}{Incorrect journal #1}%
+}%
+% \end{macrocode}
+% \begin{macro}{\acmJournal}
+% And the syntactic sugar around it
+% \begin{macrocode}
+\def\acmJournal#1{\setkeys{ACM}{acmJournal=#1}}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% The defaults:
+% \begin{macrocode}
+\def\@journalName{}%
+\def\@journalNameShort{\@journalName}%
+\def\@permissionCodeOne{XXXX-XX}%
+\def\@permissionCodeTwo{}%
+% \end{macrocode}
+%
+%
+% \begin{macro}{\acmConference}
+% This is the conference command
+% \begin{macrocode}
+\newcommand\acmConference[4][]{%
+ \gdef\acmConference@shortname{#1}%
+ \gdef\acmConference@name{#2}%
+ \gdef\acmConference@date{#3}%
+ \gdef\acmConference@venue{#4}%
+ \ifx\acmConference@shortname\@empty
+ \gdef\acmConference@shortname{#2}%
+ \fi}
+\acmConference[Conference'17]{ACM Conference}{July 2017}{Washington,
+ DC, USA}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\subtitle}
+% The subtitle macro
+% \begin{macrocode}
+\def\subtitle#1{\def\@subtitle{#1}}
+\subtitle{}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\num@authors}
+% The total number of authors
+% \begin{macrocode}
+\newcount\num@authors
+\num@authors=0\relax
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\author}
+% Adding an author to the list of authors and addresses
+% \begin{macrocode}
+\renewcommand\author[2][]{%
+ \global\advance\num@authors by 1\relax
+ \ifx\addresses\@empty
+ \if@ACM@anonymous
+ \gdef\addresses{\@author{Anonymous Author(s)}}%
+ \gdef\authors{Anonymous Author(s)}%
+ \else
+ \gdef\addresses{\@author{#2}}%
+ \gdef\authors{#2}%
+ \fi
+ \else
+ \if@ACM@anonymous\else
+ \g@addto@macro\addresses{\and\@author{#2}}%
+ \g@addto@macro\authors{\and#2}%
+ \fi
+ \fi
+ \if@ACM@anonymous
+ \ifx\shortauthors\@empty
+ \gdef\shortauthors{Anon.}%
+ \fi
+ \else
+ \def\@tempa{#1}%
+ \ifx\@tempa\@empty
+ \ifx\shortauthors\@empty
+ \gdef\shortauthors{#2}%
+ \else
+ \g@addto@macro\shortauthors{\and#2}%
+ \fi
+ \else
+ \ifx\shortauthors\@empty
+ \gdef\shortauthors{#1}%
+ \else
+ \g@addto@macro\shortauthors{\and#1}%
+ \fi
+ \fi
+ \fi}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\affiliation}
+% The macro \cs{affiliation} mimics \cs{address} from |amsart|.
+% Note that it has an optional argument we do not currently need,
+% but keep for the possible future use.
+% \begin{macrocode}
+\newcommand{\affiliation}[2][]{%
+ \if@ACM@anonymous\else
+ \g@addto@macro\addresses{\affiliation{#1}{#2}}%
+ \fi}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\email}
+% The macro \cs{email} mimics \cs{email} from |amsart|.
+% Agian it has an optional argument we do not currently need,
+% but keep for the possible future use.
+% \begin{macrocode}
+\renewcommand{\email}[2][]{%
+ \if@ACM@anonymous\else
+ \g@addto@macro\addresses{\email{#1}{#2}}%
+ \fi}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@titlenotes}
+% The titlenotes
+% \begin{macrocode}
+\def\@titlenotes{}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\titlenote}
+% Adding note to the title
+% \begin{macrocode}
+\def\titlenote#1{%
+ \g@addto@macro\@title{\footnotemark}%
+ \if@ACM@anonymous
+ \g@addto@macro\@titlenotes{%
+ \stepcounter{footnote}\footnotetext{Title note}}%
+ \else
+ \g@addto@macro\@titlenotes{\stepcounter{footnote}\footnotetext{#1}}%
+ \fi}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@subtitlenotes}
+% The subtitlenotes
+% \begin{macrocode}
+\def\@subtitlenotes{}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\subtitlenote}
+% Adding note to the subtitle
+% \begin{macrocode}
+\def\subtitlenote#1{%
+ \g@addto@macro\@subtitle{\footnotemark}%
+ \if@ACM@anonymous
+ \g@addto@macro\@subtitlenotes{%
+ \stepcounter{footnote}\footnotetext{Subtitle note}}%
+ \else
+ \g@addto@macro\@subtitlenotes{%
+ \stepcounter{footnote}\footnotetext{#1}}%
+ \fi}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@authornotes}
+% The authornotes
+% \begin{macrocode}
+\def\@authornotes{}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\authornote}
+% Adding note to the author
+% \begin{macrocode}
+\def\authornote#1{%
+ \if@ACM@anonymous\else
+ \g@addto@macro\addresses{\@authornotemark}
+ \g@addto@macro\@authornotes{%
+ \stepcounter{footnote}\footnotetext{#1}}%
+ \fi}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\acmVolume}
+% The current volume
+% \begin{macrocode}
+\def\acmVolume#1{\def\@acmVolume{#1}}
+\acmVolume{VV}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\acmNumber}
+% The current number
+% \begin{macrocode}
+\def\acmNumber#1{\def\@acmNumber{#1}}
+\acmNumber{NNN}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\acmArticle}
+% The current article
+% \begin{macrocode}
+\def\acmArticle#1{\def\@acmArticle{#1}}
+\acmArticle{AA}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\acmArticleSeq}
+% \changes{v1.04}{2016/04/26}{Name change by Matthew Fluet}
+% The sequence number
+% \begin{macrocode}
+\def\acmArticleSeq#1{\def\@acmArticleSeq{#1}}
+\acmArticleSeq{\@acmArticle}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\acmYear}
+% The current year
+% \begin{macrocode}
+\def\acmYear#1{\def\@acmYear{#1}}
+\acmYear{YYYY}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\acmMonth}
+% The current month
+% \begin{macrocode}
+\def\acmMonth#1{\def\@acmMonth{#1}}
+\acmMonth{MM}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\@acmPubDate}
+% The publication date
+% \begin{macrocode}
+\def\@acmPubDate{\ifcase\@acmMonth\or
+ January\or February\or March\or April\or May\or June\or
+ July\or August\or September\or October\or November\or
+ December\fi~\@acmYear}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\acmPrice}
+% The price
+% \begin{macrocode}
+\def\acmPrice#1{\def\@acmPrice{#1}}
+\acmPrice{15.00}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\acmISBN}
+% \changes{v1.04}{2016/04/26}{Name change by Matthew Fluet}
+% The book isbn
+% \begin{macrocode}
+\def\acmISBN#1{\def\@acmISBN{#1}}
+\acmISBN{978-x-xxxx-xxxx-x/YY/MM}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\acmDOI}
+% \changes{v1.04}{2016/04/26}{Name change by Matthew Fluet}
+% The paper doi
+% \begin{macrocode}
+\def\acmDOI#1{\def\@acmDOI{#1}}
+\acmDOI{10.1145/nnnnnnn.nnnnnnn}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\if@ACM@badge}
+% \changes{v1.06}{2016/05/01}{Added macro}
+% Whether to print badge. Note that either left or right badge
+% triggers it:
+% \begin{macrocode}
+\newif\if@ACM@badge
+\@ACM@badgefalse
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@ACM@badge@width}
+% \changes{v1.06}{2016/05/01}{Added macro}
+% The width of the badge
+% \begin{macrocode}
+\newlength\@ACM@badge@width
+\setlength\@ACM@badge@width{5pc}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\@ACM@title@width}
+% \changes{v1.06}{2016/05/01}{Added macro}
+% The width of the badge
+% \begin{macrocode}
+\newlength\@ACM@title@width
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\@ACM@badge@skip}
+% \changes{v1.06}{2016/05/01}{Added macro}
+% The space between the badge and the title
+% \begin{macrocode}
+\newlength\@ACM@badge@skip
+\setlength\@ACM@badge@skip{1pc}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\acmBadgeR}
+% \changes{v1.06}{2016/05/01}{Added macro}
+% Setting the right badge
+% \begin{macrocode}
+\newcommand\acmBadgeR[2][]{\@ACM@badgetrue
+ \def\@acmBadgeR@url{#1}%
+ \def\@acmBadgeR@image{#2}}
+\def\@acmBadgeR@url{}
+\def\@acmBadgeR@image{}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\acmBadgeL}
+% \changes{v1.06}{2016/05/01}{Added macro}
+% Setting the left badge
+% \begin{macrocode}
+\newcommand\acmBadgeL[2][]{\@ACM@badgetrue
+ \def\@acmBadgeL@url{#1}%
+ \def\@acmBadgeL@image{#2}}
+\def\@acmBadgeL@url{}
+\def\@acmBadgeL@image{}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\startPage}
+% The start page of the paper
+% \begin{macrocode}
+\def\startPage#1{\def\@startPage{#1}}
+\startPage{}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\terms}
+% Terms are mostly obsolete, we use CCS now. Still it makes
+% sense to keep them for compatibility.
+% \begin{macrocode}
+\def\terms#1{\def\@terms{#1}}
+\terms{}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\keywords}
+% Keywords are mostly obsolete, we use CCS now. Still it makes
+% sense to keep them for compatibility.
+% \begin{macrocode}
+\def\keywords#1{\def\@keywords{#1}}
+\keywords{}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{abstract}
+% Amsart puts |abstract| in the box. Since we do not know whether
+% we will use two column mode, we prefer to save the text
+% \begin{macrocode}
+\renewenvironment{abstract}{\Collect@Body\@saveabstract}{}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@saveabstract}
+% And saving the abstract
+% \begin{macrocode}
+\long\def\@saveabstract#1{\long\gdef\@abstract{#1}}
+\@saveabstract{}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@lempty}
+% The long version of \cs{@empty} (to compare with \cs{@abstract})
+% \begin{macrocode}
+\long\def\@lempty{}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\if@ACM@printccs}
+% Whether to print CCS
+% \begin{macrocode}
+\define@boolkey+{@ACM@topmatter@}[@ACM@]{printcss}[true]{%
+ \if@ACM@printcss
+ \ClassInfo{\@classname}{Printing CSS}%
+ \else
+ \ClassInfo{\@classname}{Suppressing CSS}%
+ \fi}{\ClassError{\@classname}{printcss must be true or false}}
+% \end{macrocode}
+%
+% \end{macro}
+% \begin{macro}{\if@ACM@printbib}
+% Whether to print ACM bib
+% \begin{macrocode}
+\define@boolkey+{@ACM@topmatter@}[@ACM@]{printbib}[true]{%
+ \if@ACM@printcss
+ \ClassInfo{\@classname}{Printing bibformat}%
+ \else
+ \ClassInfo{\@classname}{Suppressing bibformat}%
+ \fi}{\ClassError{\@classname}{printbib must be true or false}}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\settopmatter}
+% The usual syntactic sugar
+% \begin{macrocode}
+\def\settopmatter#1{\setkeys{@ACM@topmatter@}{#1}}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% Now the settings
+% \begin{macrocode}
+\settopmatter{printcss=true}
+\if@ACM@manuscript
+ \settopmatter{printbib=false}
+\else
+ \if@ACM@journal
+ \settopmatter{printbib=true}
+ \else
+ \settopmatter{printbib=false}
+ \fi
+\fi
+% \end{macrocode}
+%
+% \begin{macro}{\@received}
+% The container for the paper history
+% \begin{macrocode}
+\def\@received{}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\received}
+% The \cs{received} command
+% \begin{macrocode}
+\newcommand\received[2][]{\def\@tempa{#1}%
+ \ifx\@tempa\@empty
+ \ifx\@received\@empty
+ \gdef\@received{Received #2}%
+ \else
+ \g@addto@macro{\@received}{; revised #2}%
+ \fi
+ \else
+ \ifx\@received\@empty
+ \gdef\@received{#1 #2}%
+ \else
+ \g@addto@macro{\@received}{; #1 #2}%
+ \fi
+ \fi}
+\AtEndDocument{%
+ \ifx\@received\@empty\else
+ \par\bigskip\noindent\small\normalfont\@received\par
+ \fi}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%\subsection{Concepts system}
+%\label{sec:concepts}
+%
+% We exclude |CCSXML| stuff generated by the ACM system:
+% \begin{macrocode}
+\RequirePackage{comment}
+\excludecomment{CCSXML}
+% \end{macrocode}
+%
+% \begin{macro}{\@concepts}
+% This is the storage macro for concepts
+% \begin{macrocode}
+\let\@concepts\@empty
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\ccsdesc}
+% The first argument is the significance, the second is the
+% concept(s)
+% \begin{macrocode}
+\newcommand\ccsdesc[2][100]{%
+ \ccsdesc@parse#1~#2~}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\ccsdesc@parse}
+% The parser of the expression |Significance~General~Specific|:
+% \begin{macrocode}
+\def\ccsdesc@parse#1~#2~#3~{%
+ \expandafter\ifx\csname CCS@#2\endcsname\relax
+ \expandafter\gdef\csname CCS@#2\endcsname{\textbullet\textbf{#2} $\to$ }%
+ \g@addto@macro{\@concepts}{\csname CCS@#2\endcsname}\fi
+ \expandafter\g@addto@macro\expandafter{\csname CCS@#2\endcsname}{%
+ \ifnum#1>499\textbf{#3; }\else
+ \ifnum#1>299\textit{#3; }\else
+ #3; \fi\fi}}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+%\subsection{Copyright system}
+%\label{sec:copyright}
+%
+% This is from |acmcopyright.sty|
+%
+% \begin{macro}{\if@printcopyright}
+% A flag whether to print copyright symbol
+% \begin{macrocode}
+\newif\if@printcopyright
+\@printcopyrighttrue
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\if@printpermission}
+% Whether to print permission block
+% \begin{macrocode}
+\newif\if@printpermission
+\@printpermissiontrue
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\if@acmowned}
+% Whether ACM ownes the rights to the paper
+% \begin{macrocode}
+\newif\if@acmowned
+\@acmownedtrue
+% \end{macrocode}
+%
+% \end{macro}
+%
+% Keys:
+% \begin{macrocode}
+\define@choicekey*{ACM@}{acmcopyrightmode}[%
+ \acm@copyrightinput\acm@copyrightmode]{none,acmcopyright,acmlicensed,%
+ rightsretained,usgov,usgovmixed,cagov,cagovmixed,%
+ licensedusgovmixed,licensedcagovmixed,othergov,licensedothergov}{%
+ \@printpermissiontrue
+ \@printcopyrighttrue
+ \@acmownedtrue
+ \ifnum\acm@copyrightmode=0\relax % none
+ \@printpermissionfalse
+ \@printcopyrightfalse
+ \@acmownedfalse
+ \fi
+ \ifnum\acm@copyrightmode=2\relax % acmlicensed
+ \@acmownedfalse
+ \fi
+ \ifnum\acm@copyrightmode=3\relax % rightsretained
+ \@acmownedfalse
+ \fi
+ \ifnum\acm@copyrightmode=4\relax % usgov
+ \@printpermissiontrue
+ \@printcopyrightfalse
+ \@acmownedfalse
+ \fi
+ \ifnum\acm@copyrightmode=6\relax % cagov
+ \@acmownedfalse
+ \fi
+ \ifnum\acm@copyrightmode=8\relax % licensedusgovmixed
+ \@acmownedfalse
+ \fi
+ \ifnum\acm@copyrightmode=9\relax % licensedcagovmixed
+ \@acmownedfalse
+ \fi
+ \ifnum\acm@copyrightmode=10\relax % othergov
+ \@acmownedtrue
+ \fi
+ \ifnum\acm@copyrightmode=11\relax % licensedothergov
+ \@acmownedfalse
+ \@printcopyrightfalse
+ \fi}
+% \end{macrocode}
+%
+% \begin{macro}{\setcopyright}
+% This is the syntactic sugar around setting keys.
+% \begin{macrocode}
+\def\setcopyright#1{\setkeys{ACM@}{acmcopyrightmode=#1}}
+\setcopyright{acmcopyright}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\@copyrightowner}
+% Here is the owner of the copyright
+% \begin{macrocode}
+\def\@copyrightowner{%
+ \ifcase\acm@copyrightmode\relax % none
+ \or % acmcopyright
+ ACM\@.
+ \or % acmlicensed
+ Copyright held by the owner/author(s). Publication rights licensed to
+ ACM\@.
+ \or % rightsretained
+ Copyright held by the owner/author(s).
+ \or % usgov
+ \or % usgovmixed
+ ACM\@.
+ \or % cagov
+ Crown in Right of Canada.
+ \or %cagovmixed
+ ACM\@.
+ \or %licensedusgovmixed
+ Copyright held by the owner/author(s). Publication rights licensed to
+ ACM\@.
+ \or %licensedcagovmixed
+ Copyright held by the owner/author(s). Publication rights licensed to
+ ACM\@.
+ \or % othergov
+ ACM\@.
+ \or % licensedothergov
+ \fi}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@formatdoi}
+% \changes{v1.03}{2016/04/22}{Added macro}
+% Print a clickable doi
+% \begin{macrocode}
+\def\@formatdoi#1{\url{http://dx.doi.org/#1}}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@copyrightpermission}
+% The canned permission block.
+% \begin{macrocode}
+\def\@copyrightpermission{%
+ \ifcase\acm@copyrightmode\relax % none
+ \or % acmcopyright
+ Permission to make digital or hard copies of all or part of this
+ work for personal or classroom use is granted without fee provided
+ that copies are not made or distributed for profit or commercial
+ advantage and that copies bear this notice and the full citation on
+ the first page. Copyrights for components of this work owned by
+ others than ACM must be honored. Abstracting with credit is
+ permitted. To copy otherwise, or republish, to post on servers or to
+ redistribute to lists, requires prior specific permission
+ and\hspace*{.5pt}/or a fee. Request permissions from
+ permissions@acm.org.
+ \or % acmlicensed
+ Permission to make digital or hard copies of all or part of this
+ work for personal or classroom use is granted without fee provided
+ that copies are not made or distributed for profit or commercial
+ advantage and that copies bear this notice and the full citation on
+ the first page. Copyrights for components of this work owned by
+ others than the author(s) must be honored. Abstracting with credit
+ is permitted. To copy otherwise, or republish, to post on servers
+ or to redistribute to lists, requires prior specific permission
+ and\hspace*{.5pt}/or a fee. Request permissions from
+ permissions@acm.org.
+ \or % rightsretained
+ Permission to make digital or hard copies of part or all of this work
+ for personal or classroom use is granted without fee provided that
+ copies are not made or distributed for profit or commercial advantage
+ and that copies bear this notice and the full citation on the first
+ page. Copyrights for third-party components of this work must be
+ honored. For all other uses, contact the
+ owner\hspace*{.5pt}/author(s).
+ \or % usgov
+ This paper is authored by an employee(s) of the United States
+ Government and is in the public domain. Non-exclusive copying or
+ redistribution is allowed, provided that the article citation is
+ given and the authors and agency are clearly identified as its
+ source.
+ \or % usgovmixed
+ ACM acknowledges that this contribution was authored or co-authored
+ by an employee, or contractor of the national government. As such,
+ the Government retains a nonexclusive, royalty-free right to
+ publish or reproduce this article, or to allow others to do so, for
+ Government purposes only. Permission to make digital or hard copies
+ for personal or classroom use is granted. Copies must bear this
+ notice and the full citation on the first page. Copyrights for
+ components of this work owned by others than ACM must be
+ honored. To copy otherwise, distribute, republish, or post,
+ requires prior specific permission and\hspace*{.5pt}/or a
+ fee. Request permissions from permissions@acm.org.
+ \or % cagov
+ This article was authored by employees of the Government of Canada.
+ As such, the Canadian government retains all interest in the
+ copyright to this work and grants to ACM a nonexclusive,
+ royalty-free right to publish or reproduce this article, or to allow
+ others to do so, provided that clear attribution is given both to
+ the authors and the Canadian government agency employing them.
+ Permission to make digital or hard copies for personal or classroom
+ use is granted. Copies must bear this notice and the full citation
+ on the first page. Copyrights for components of this work owned by
+ others than the Canadain Government must be honored. To copy
+ otherwise, distribute, republish, or post, requires prior specific
+ permission and\hspace*{.5pt}/or a fee. Request permissions from
+ permissions@acm.org.
+ \or % cagovmixed
+ ACM acknowledges that this contribution was co-authored by an
+ affiliate of the national government of Canada. As such, the Crown
+ in Right of Canada retains an equal interest in the copyright.
+ Reprints must include clear attribution to ACM and the author's
+ government agency affiliation. Permission to make digital or hard
+ copies for personal or classroom use is granted. Copies must bear
+ this notice and the full citation on the first page. Copyrights for
+ components of this work owned by others than ACM must be honored.
+ To copy otherwise, distribute, republish, or post, requires prior
+ specific permission and\hspace*{.5pt}/or a fee. Request permissions
+ from permissions@acm.org.
+ \or % licensedusgovmixed
+ Publication rights licensed to ACM\@. ACM acknowledges that this
+ contribution was authored or co-authored by an employee, contractor
+ or affiliate of the United States government. As such, the
+ Government retains a nonexclusive, royalty-free right to publish or
+ reproduce this article, or to allow others to do so, for Government
+ purposes only.
+ \or % licensedcagovmixed
+ Publication rights licensed to ACM\@. ACM acknowledges that this
+ contribution was authored or co-authored by an employee, contractor
+ or affiliate of the national government of Canada. As such, the
+ Government retains a nonexclusive, royalty-free right to publish or
+ reproduce this article, or to allow others to do so, for Government
+ purposes only.
+ \or % othergov
+ ACM acknowledges that this contribution was authored or co-authored
+ by an employee, contractor or affiliate of a national government. As
+ such, the Government retains a nonexclusive, royalty-free right to
+ publish or reproduce this article, or to allow others to do so, for
+ Government purposes only.
+ \or % licensedothergov
+ Publication rights licensed to ACM\@. ACM acknowledges that this
+ contribution was authored or co-authored by an employee, contractor
+ or affiliate of a national government. As such, the Government
+ retains a nonexclusive, royalty-free right to publish or reproduce
+ this article, or to allow others to do so, for Government purposes
+ only.
+ \fi}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+%
+%
+% \begin{macro}{\copyrightyear}
+% By default, the copyright year is the same as \cs{acmYear}, but
+% one can override this:
+% \begin{macrocode}
+\def\copyrightyear#1{\def\@copyrightyear{#1}}
+\copyrightyear{\@acmYear}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@teaserfigures}
+% The teaser figures container
+% \begin{macrocode}
+\def\@teaserfigures{}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{teaserfigure}
+% The teaser figure
+% \begin{macrocode}
+\newenvironment{teaserfigure}{\Collect@Body\@saveteaser}{}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@saveteaser}
+% Saving the teaser
+% \begin{macrocode}
+\long\def\@saveteaser#1{\g@addto@macro\@teaserfigures{\@teaser{#1}}}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\thanks}
+% We redefine |amsart| \cs{thanks}, so the |anonymous| key works
+% \begin{macrocode}
+\renewcommand{\thanks}[1]{%
+ \@ifnotempty{#1}{%
+ \if@ACM@anonymous
+ \g@addto@macro\thankses{\thanks{A note}}%
+ \else
+ \g@addto@macro\thankses{\thanks{#1}}%
+ \fi}}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \subsection{Typesetting top matter}
+% \label{sec:makefile}
+%
+% \begin{macro}{\mktitle@bx}
+% Some of our formats use two column design, some use one column
+% one. In all cases we use wide title. Thus we typeset the top
+% matter in a special box to be use in the construction
+% \cs{@twocolumn}\oarg{box}.
+% \begin{macrocode}
+\newbox\mktitle@bx
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\maketitle}
+% \changes{v1.03}{2016/04/22}{Added special case of authorversion}
+% \changes{v1.07}{2016/05/03}{Corrected a bug with abstract footnotes}
+% \changes{v1.07}{2016/05/03}{Corrected a bug with permssion and
+% footnotes order}
+% The (in)famous \cs{maketitle}. Note that in sigchi-a mode authors
+% are \emph{not} in the title box.
+% \begin{macrocode}
+\def\maketitle{%
+ \if@ACM@anonymous
+ % Anonymize omission of \author-s
+ \ifnum\num@authors=0\author{}\fi
+ \fi
+ \begingroup
+ \let\@footnotemark\@footnotemark@nolink
+ \let\@footnotetext\@footnotetext@nolink
+ \renewcommand\thefootnote{\@fnsymbol\c@footnote}%
+ \@topnum\z@ % this prevents figures from falling at the top of page
+ % 1
+ \hsize=\textwidth
+ \def\@makefnmark{\hbox{\@textsuperscript{\@thefnmark}}}
+ \@mktitle\if@ACM@sigchiamode\else\@mkauthors\fi\@mkteasers
+ \@printtopmatter
+ \if@ACM@sigchiamode\@mkauthors\fi
+ \setcounter{footnote}{0}%
+ \def\@makefnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}}
+ \@titlenotes
+ \@subtitlenotes
+ \@authornotes
+ \let\@makefnmark\relax \let\@thefnmark\relax
+ \let\@makefntext\noindent
+ \ifx\@empty\thankses\else
+ \@footnotetext{\def\par{\let\par\@par}\parindent\z@\@setthanks}%
+ \fi
+ \footnotetextcopyrightpermission{\parindent\z@\parskip0.1\baselineskip
+ \if@ACM@authorversion\else
+ \if@printpermission\@copyrightpermission\par\fi
+ \fi
+ \if@ACM@manuscript\else
+ \if@ACM@journal\else % Print the conference short name
+ {\itshape \acmConference@shortname, \acmConference@venue}\par
+ \fi
+ \fi
+ \if@printcopyright
+ \copyright\ \@copyrightyear\ \@copyrightowner\
+ \else
+ \@copyrightyear.\
+ \fi
+ \if@ACM@manuscript
+ Manuscript submitted to ACM\\
+ \else
+ \if@ACM@authorversion
+ This is the author's version of the work. It is posted here for
+ your personal use. Not for redistribution. The definitive Version
+ of Record was published in
+ \if@ACM@journal
+ \emph{\@journalName}%
+ \else
+ \emph{Proceedings of \acmConference@name, \acmConference@date}%
+ \fi
+ \ifx\@acmDOI\@empty
+ .
+ \else
+ , \@formatdoi{\@acmDOI}.
+ \fi\\
+ \else
+ \if@ACM@journal
+ \@permissionCodeOne/\@acmYear/\@acmMonth-ART\@acmArticle\
+ \$\@acmPrice\\
+ \else % Conference
+ \@acmISBN
+ \ifx\@acmPrice\@empty.\else\dots\$\@acmPrice\fi\\
+ \fi
+ \fi
+ \fi
+ DOI: \nolinkurl{\@acmDOI}}%
+ \endgroup
+ \setcounter{footnote}{0}%
+ \@mkabstract
+ \if@ACM@printcss
+ \ifx\@concepts\@empty\else\bgroup
+ {\@specialsection{CCS Concepts}%
+ \@concepts\par}\egroup
+ \fi
+ \fi
+ \if\@terms\@empty\else\bgroup
+ {\@specialsection{General Terms}%
+ \@terms\par}\egroup
+ \fi
+ \ifx\@keywords\@empty\else\bgroup
+ {\if@ACM@journal
+ \@specialsection{Additional Key Words and Phrases}%
+ \else
+ \@specialsection{Keywords}%
+ \fi
+ \@keywords}\par\egroup
+ \fi
+ \andify\authors
+ \andify\shortauthors
+ \global\let\authors=\authors
+ \global\let\shortauthors=\shortauthors
+ \if@ACM@printbib
+ \@mkbibcitation
+ \fi
+ \hypersetup{pdfauthor={\authors},
+ pdftitle={\@title}, pdfkeywords={\@concepts}}%
+ \@printendtopmatter
+ \@afterindentfalse
+ \@afterheading
+}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@specialsection}
+% This macro starts section for proceedings and uses small for journals
+% \begin{macrocode}
+\def\@specialsection#1{%
+ \if@ACM@journal
+ \par\medskip\small\noindent#1: %
+ \else
+ \section*{#1}%
+ \fi}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\@printtopmatter}
+% \changes{v1.06}{2016/05/01}{Added processing badges}
+% The printing of top matter starts the new page, and uses the given
+% title box. Note that for sigchi-a we print badges here rather
+% than in \cs{mktitle} since we want them on the margins.
+% \begin{macrocode}
+\def\@printtopmatter{%
+ \ifx\@startPage\@empty
+ \gdef\@startPage{1}%
+ \else
+ \setcounter{page}{\@startPage}%
+ \fi
+ \thispagestyle{firstpagestyle}%
+ \noindent
+ \ifcase\ACM@format@nr
+ \relax % manuscript
+ \box\mktitle@bx\par
+ \noindent\hrulefill\par
+ \or% acmsmall
+ \box\mktitle@bx\par
+ \noindent\hrulefill\par
+ \or % acmlarge
+ \box\mktitle@bx\par
+ \noindent\hrulefill\par
+ \or % acmtog
+ \twocolumn[\box\mktitle@bx]%
+ \or % sigconf
+ \twocolumn[\box\mktitle@bx]%
+ \or % siggraph
+ \twocolumn[\box\mktitle@bx]%
+ \or % sigplan
+ \twocolumn[\box\mktitle@bx]%
+ \or % sigchi
+ \twocolumn[\box\mktitle@bx]%
+ \or % sigchi-a
+ \par\box\mktitle@bx\par\bigskip
+ \if@ACM@badge
+ \marginpar{\noindent
+ \ifx\@acmBadgeL@image\@empty\else
+ \href{\@acmBadgeL@url}{%
+ \includegraphics[width=\@ACM@badge@width]{\@acmBadgeL@image}}%
+ \hskip\@ACM@badge@skip
+ \fi
+ \ifx\@acmBadgeR@image\@empty\else
+ \href{\@acmBadgeR@url}{%
+ \includegraphics[width=\@ACM@badge@width]{\@acmBadgeR@image}}%
+ \fi}%
+ \fi
+ \fi
+}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@mktitle}
+% The title of the article
+% \begin{macrocode}
+\def\@mktitle{%
+ \ifcase\ACM@format@nr
+ \relax % manuscript
+ \@mktitle@i
+ \or% acmsmall
+ \@mktitle@i
+ \or % acmlarge
+ \@mktitle@i
+ \or % acmtog
+ \@mktitle@i
+ \or % sigconf
+ \@mktitle@iii
+ \or % siggraph
+ \@mktitle@iii
+ \or % sigplan
+ \@mktitle@iii
+ \or % sigchi
+ \@mktitle@iii
+ \or % sigchi-a
+ \@mktitle@iv
+ \fi
+}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@titlefont}
+% \changes{v1.06}{2016/05/01}{Added macro}
+% The font to typeset title
+% \begin{macrocode}
+\def\@titlefont{%
+ \ifcase\ACM@format@nr
+ \relax % manuscript
+ \LARGE\bfseries\sffamily
+ \or% acmsmall
+ \LARGE\bfseries\sffamily
+ \or % acmlarge
+ \LARGE\bfseries\sffamily
+ \or % acmtog
+ \Huge\sffamily
+ \or % sigconf
+ \Huge\sffamily\bfseries
+ \or % siggraph
+ \Huge\sffamily\bfseries
+ \or % sigplan
+ \Huge\sffamily\bfseries
+ \or % sigchi
+ \Huge\sffamily\bfseries
+ \or % sigchi-a
+ \Huge\bfseries
+ \fi}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@subtitlefont}
+% \changes{v1.06}{2016/05/01}{Added macro}
+% The font to typeset title
+% \begin{macrocode}
+\def\@subtitlefont{%
+ \ifcase\ACM@format@nr
+ \relax % manuscript
+ \mdseries
+ \or% acmsmall
+ \mdseries
+ \or % acmlarge
+ \mdseries
+ \or % acmtog
+ \LARGE
+ \or % sigconf
+ \LARGE\mdseries
+ \or % siggraph
+ \LARGE\mdseries
+ \or % sigplan
+ \LARGE\mdseries
+ \or % sigchi
+ \LARGE\mdseries
+ \or % sigchi-a
+ \mdseries
+ \fi}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@mktitle@i}
+% \changes{v1.06}{2016/05/01}{Made generic}
+% \changes{v1.06}{2016/05/01}{Added processing badges}
+% The version of \cs{mktitle} for most journals
+% \begin{macrocode}
+\def\@mktitle@i{\hsize=\textwidth
+ \@ACM@title@width=\hsize
+ \ifx\@acmBadgeL@image\@empty\else
+ \advance\@ACM@title@width by -\@ACM@badge@width
+ \advance\@ACM@title@width by -\@ACM@badge@skip
+ \fi
+ \ifx\@acmBadgeR@image\@empty\else
+ \advance\@ACM@title@width by -\@ACM@badge@width
+ \advance\@ACM@title@width by -\@ACM@badge@skip
+ \fi
+ \setbox\mktitle@bx=\vbox{\noindent\@titlefont
+ \ifx\@acmBadgeL@image\@empty\else
+ \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeL@url}{%
+ \includegraphics[width=\@ACM@badge@width]{\@acmBadgeL@image}}}%
+ \hskip\@ACM@badge@skip
+ \fi
+ \parbox[t]{\@ACM@title@width}{\raggedright
+ \@titlefont\noindent
+ \@title
+ \ifx\@subtitle\@empty\else
+ \par\noindent{\@subtitlefont\@subtitle}
+ \fi}%
+ \ifx\@acmBadgeR@image\@empty\else
+ \hskip\@ACM@badge@skip
+ \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeR@url}{%
+ \includegraphics[width=\@ACM@badge@width]{\@acmBadgeR@image}}}%
+ \fi
+ \par\bigskip}}%
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@mktitle@ii}
+% \changes{v1.06}{2016/05/01}{Now this macro is obsolete}
+% The version of \cs{mktitle} for TOG. Since v1.06 is subsumed by
+% the \cs{mktitle@i} macro
+% \end{macro}
+%
+%
+% \begin{macro}{\@mktitle@iii}
+% \changes{v1.06}{2016/05/01}{Made more generic}
+% \changes{v1.06}{2016/05/01}{Added processing badges}
+% The version of \cs{@mktitle} for sigproc. Note that since the
+% title is centered, we leave the space for the left badge even if
+% only the right badge is defined.
+% \begin{macrocode}
+\def\@mktitle@iii{\hsize=\textwidth
+ \setbox\mktitle@bx=\vbox{\@titlefont\centering
+ \@ACM@title@width=\hsize
+ \if@ACM@badge
+ \advance\@ACM@title@width by -2\@ACM@badge@width
+ \advance\@ACM@title@width by -2\@ACM@badge@skip
+ \parbox[b]{\@ACM@badge@width}{\strut
+ \ifx\@acmBadgeL@image\@empty\else
+ \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeL@url}{%
+ \includegraphics[width=\@ACM@badge@width]{\@acmBadgeL@image}}}%
+ \fi}%
+ \hskip\@ACM@badge@skip
+ \fi
+ \parbox[t]{\@ACM@title@width}{\centering\@titlefont
+ \@title
+ \ifx\@subtitle\@empty\else
+ \par\noindent{\@subtitlefont\@subtitle}
+ \fi
+ }%
+ \if@ACM@badge
+ \hskip\@ACM@badge@skip
+ \parbox[b]{\@ACM@badge@width}{\strut
+ \ifx\@acmBadgeR@image\@empty\else
+ \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeR@url}{%
+ \includegraphics[width=\@ACM@badge@width]{\@acmBadgeR@image}}}%
+ \fi}%
+ \fi
+ \par\bigskip}}%
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\@mktitle@iv}
+% \changes{v1.06}{2016/05/01}{Made more generic}
+% The version of \cs{@mktitle} for sigchi-a
+% \begin{macrocode}
+\def\@mktitle@iv{\hsize=\textwidth
+ \setbox\mktitle@bx=\vbox{\raggedright\leftskip5pc\@titlefont
+ \noindent\leavevmode\leaders\hrule height 2pt\hfill\kern0pt\par
+ \noindent\@title
+ \ifx\@subtitle\@empty\else
+ \par\noindent\@subtitlefont\@subtitle
+ \fi
+ \par\bigskip}}%
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\@mkauthors}
+% Typesetting authors
+% \begin{macrocode}
+\def\@mkauthors{\begingroup
+ \hsize=\textwidth
+ \ifcase\ACM@format@nr
+ \relax % manuscript
+ \@mkauthors@i
+ \or% acmsmall
+ \@mkauthors@i
+ \or % acmlarge
+ \@mkauthors@i
+ \or % acmtog
+ \@mkauthors@ii
+ \or % sigconf
+ \@mkauthors@iii
+ \or % siggraph
+ \@mkauthors@iii
+ \or % sigplan
+ \@mkauthors@iii
+ \or % sigchi
+ \@mkauthors@iii
+ \or % sigchi-a
+ \@mkauthors@iv
+ \fi
+ \endgroup
+}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@authorfont}
+% Somehow different conferences use different fonts for author
+% names. Why?
+% \begin{macrocode}
+\def\@authorfont{\Large\sffamily}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@affiliationfont}
+% Font for affiliations
+% \begin{macrocode}
+\def\@affiliationfont{\normalsize\normalfont}
+% \end{macrocode}
+% \end{macro}
+%
+% Adjusting fonts for different formats
+% \begin{macrocode}
+\ifcase\ACM@format@nr
+\relax % manuscript
+\or% acmsmall
+\or % acmlarge
+\or % acmtog
+ \def\@authorfont{\LARGE\sffamily}
+ \def\@affiliationfont{\large}
+\or % sigconf
+ \def\@authorfont{\LARGE}
+ \def\@affiliationfont{\large}
+\or % siggraph
+ \def\@authorfont{\normalsize\normalfont}
+ \def\@affiliationfont{\normalsize\normalfont}
+\or % sigplan
+\or % sigchi
+ \def\@authorfont{\bfseries}
+ \def\@affiliationfont{\mdseries}
+\or % sigchi-a
+ \def\@authorfont{\bfseries}
+ \def\@affiliationfont{\mdseries}
+\fi
+% \end{macrocode}
+%
+% \begin{macro}{\@mkauthors@i}
+% This is version used in most formats. Note that \cs{and} between
+% authors with the same affiliation becomes \verb*| and |:
+% \begin{macrocode}
+\def\@mkauthors@i{%
+ \def\@currentauthors{}%
+ \def\and{%
+ \andify\@currentauthors\par\noindent
+ \@currentauthors\def\@currentauthors{}}%
+ \def\@author##1{%
+ \ifx\@currentauthors\@empty
+ \gdef\@currentauthors{\@authorfont\MakeUppercase{##1}}%
+ \else
+ \g@addto@macro{\@currentauthors}{\and\MakeUppercase{##1}}%
+ \fi
+ \def\and{}}%
+ \def\email##1##2{}%
+ \def\affiliation##1##2{%
+ \ifx\@currentauthors\@empty\else
+ \andify\@currentauthors\par\noindent\@currentauthors
+ \fi
+ \def\@currentauthors{}\def\@tempa{##2}\ifx\@tempa\@empty\else
+ \unskip, {\@affiliationfont##2}\fi\def\and{\par\noindent}}%
+ \global\setbox\mktitle@bx=\vbox{\noindent\box\mktitle@bx\par\medskip
+ \noindent\addresses\andify\@currentauthors\par\noindent\@currentauthors\par\medskip}%
+}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@mkauthors@ii}
+% This is version used in acmtog. A more vertical design
+% \begin{macrocode}
+\def\@mkauthors@ii{\par\medskip
+ \def\@currentauthors{}%
+ \def\and{}%
+ \def\@author##1{%
+ \ifx\@currentauthors\@empty
+ \gdef\@currentauthors{\@authorfont
+ \MakeUppercase{##1}}%
+ \else
+ \g@addto@macro{\@currentauthors}{\and\MakeUppercase{##1}}%
+ \fi\def\and{}}%
+ \def\email##1##2{}%
+ \def\affiliation##1##2{%
+ \ifx\@currentauthors\@empty\else
+ \andify\@currentauthors\par\noindent\@currentauthors
+ \fi
+ \def\@currentauthors{}\def\@tempa{##2}\ifx\@tempa\@empty\else
+ \par\noindent{\@affiliationfont##2}\fi
+ \def\and{\par\noindent{\@affiliationfont and}\par
+ \noindent\def\and{}}}%
+ \global\setbox\mktitle@bx=\vbox{\noindent\box\mktitle@bx\par\medskip
+ \noindent\addresses\andify\@currentauthors\par\noindent\@currentauthors\par\medskip}%
+}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\author@bx}
+% The box to put individual author to
+% \begin{macrocode}
+\newbox\author@bx
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\author@bx@wd}
+% The width of the author box
+% \begin{macrocode}
+\newdimen\author@bx@wd
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\author@bx@sep}
+% The separation between the author boxes
+% \begin{macrocode}
+\newskip\author@bx@sep
+\author@bx@sep=1pc\relax
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+%
+% \begin{macro}{\@mkauthors@iii}
+% The |sigconf| version. Here we use centered design with each
+% author in a separate box.
+% \begin{macrocode}
+\def\@mkauthors@iii{%
+% \end{macrocode}
+% First, we need to determine the design of the author strip. The
+% boxes are separated by \cs{author@bx@sep} plus two
+% \cs{author@bx@sep} margins. This means that each box must be of
+% width $(\cs{textwidth}-\cs{author@bx@sep})/N-\cs{author@bx@sep}$,
+% where $N$ is the number of boxes per row.
+% \begin{macrocode}
+ \author@bx@wd=\textwidth\relax
+ \advance\author@bx@wd by -\author@bx@sep\relax
+ \ifcase\num@authors
+ \relax % 0?
+ \or % 1=one author per row
+ \or % 2=two authors per row
+ \divide\author@bx@wd by \num@authors\relax
+ \or % 3=three authors per row
+ \divide\author@bx@wd by \num@authors\relax
+ \or % 4=two authors per row (!)
+ \divide\author@bx@wd by 2\relax
+ \else % three authors per row
+ \divide\author@bx@wd by 3\relax
+ \fi
+ \advance\author@bx@wd by -\author@bx@sep\relax
+% \end{macrocode}
+% Now, parsing of \cs{addresses}:
+% \begin{macrocode}
+ \gdef\@currentauthors{}%
+ \gdef\@currentaffiliation{}%
+ \def\@author##1{\ifx\@currentauthors\@empty
+ \gdef\@currentauthors{\par##1}%
+ \else
+ \g@addto@macro\@currentauthors{\quad##1}%
+ \fi}%
+ \def\email##1##2{\ifx\@currentaffiliation\@empty
+ \gdef\@currentaffiliation{\nolinkurl{##2}}%
+ \else
+ \g@addto@macro\@currentaffiliation{\par\nolinkurl{##2}}%
+ \fi}%
+ \def\affiliation##1##2{\ifx\@currentaffiliation\@empty
+ \gdef\@currentaffiliation{##2}%
+ \else
+ \g@addto@macro\@currentaffiliation{\par##2}%
+ \fi}%
+% \end{macrocode}
+% Actual typesetting is done by \cs{and} macro
+% \begin{macrocode}
+ \def\and{\bgroup\hsize=\author@bx@wd\def\and{\quad}%
+ \global\setbox\author@bx=\vtop{\centering
+ \@authorfont\@currentauthors\par\@affiliationfont
+ \@currentaffiliation}\egroup
+ \box\author@bx\hspace{\author@bx@sep}%
+ \gdef\@currentauthors{}%
+ \gdef\@currentaffiliation{}}%
+% \end{macrocode}
+% And here we use it:
+% \begin{macrocode}
+ \hsize=\textwidth
+ \global\setbox\mktitle@bx=\vbox{\noindent
+ \box\mktitle@bx\par\medskip\leavevmode
+ \lineskip=1pc\relax\centering\hspace*{-1em}%
+ \addresses\and\par\bigskip}}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\@mkauthors@iv}
+% The |sigchia| version. Now we put
+% authors in the main text, and no more than 2 authors per line.
+% \begin{macrocode}
+\def\@mkauthors@iv{%
+% \end{macrocode}
+% First, we need to determine the design of the author strip. The
+% boxes are separated by \cs{author@bx@sep} plus two
+% \cs{author@bx@sep} margins. This means that each box must be of
+% width $(\cs{textwidth}-\cs{author@bx@sep})/N-\cs{author@bx@sep}$,
+% where $N$ is the number of boxes per row.
+% \begin{macrocode}
+ \author@bx@wd=\columnwidth\relax
+ \advance\author@bx@wd by -\author@bx@sep\relax
+ \ifcase\num@authors
+ \relax % 0?
+ \or % 1=one author per row
+ \else % 2=two authors per row
+ \divide\author@bx@wd by 2\relax
+ \fi
+ \advance\author@bx@wd by -\author@bx@sep\relax
+% \end{macrocode}
+% Now, parsing of \cs{addresses}:
+% \begin{macrocode}
+ \gdef\@currentauthors{}%
+ \gdef\@currentaffiliation{}%
+ \def\@author##1{\ifx\@currentauthors\@empty
+ \gdef\@currentauthors{\par##1}%
+ \else
+ \g@addto@macro\@currentauthors{\quad##1}%
+ \fi}%
+ \def\email##1##2{\ifx\@currentaffiliation\@empty
+ \gdef\@currentaffiliation{\nolinkurl{##2}}%
+ \else
+ \g@addto@macro\@currentaffiliation{\par\nolinkurl{##2}}%
+ \fi}%
+ \def\affiliation##1##2{\ifx\@currentaffiliation\@empty
+ \gdef\@currentaffiliation{##2}%
+ \else
+ \g@addto@macro\@currentaffiliation{\par##2}%
+ \fi}%
+% \end{macrocode}
+% Actual typesetting is done by \cs{and} macro
+% \begin{macrocode}
+ \def\and{\bgroup\hsize=\author@bx@wd\def\and{\quad}%
+ \global\setbox\author@bx=\vtop{\raggedright
+ \@authorfont\@currentauthors\par\@affiliationfont
+ \@currentaffiliation}\egroup
+ \box\author@bx\hskip\author@bx@sep
+ \gdef\@currentauthors{}%
+ \gdef\@currentaffiliation{}}%
+% \end{macrocode}
+% And here we use it:
+% \begin{macrocode}
+ \bgroup\hsize=\columnwidth
+ \par\raggedright\leftskip=\z@
+ \lineskip=1pc\noindent\addresses\and\par\bigskip\egroup}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@authornotemark}
+% Adding footnotemark to authors
+% \begin{macrocode}
+\def\@authornotemark{\g@addto@macro\@currentauthors{\footnotemark}}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@mkteasers}
+% Typesetting teasers
+% \begin{macrocode}
+\def\@mkteasers{%
+ \ifx\@teaserfigures\@empty\else
+ \def\@teaser##1{\par\bigskip\bgroup
+ \captionsetup{type=figure}##1\egroup\par}
+ \global\setbox\mktitle@bx=\vbox{\noindent\box\mktitle@bx\par
+ \noindent\@teaserfigures\par\medskip}%
+ \fi}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@setaddresses}
+% This is an |amsart| macro, which we do not need.
+% \begin{macrocode}
+\def\@setaddresses{}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@mkabstract}
+% Typesetting abstract
+% \begin{macrocode}
+\def\@mkabstract{\bgroup
+ \ifx\@abstract\@lempty\else
+ {\if@ACM@journal
+ \small\noindent
+ \else
+ \section*{ABSTRACT}%
+ \fi
+ \@abstract\par}%
+ \fi\egroup}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@mkbibcitation}
+% Print bibcitation format
+% \begin{macrocode}
+\def\@mkbibcitation{\bgroup
+ \par\medskip\small\noindent{\bfseries ACM Reference format:}\par
+ \noindent\authors. \@acmYear. \@title. \textit{\@journalNameShort}
+ \@acmVolume, \@acmNumber, Article~\@acmArticle\
+ (\@acmPubDate), \ref{TotPages}~pages.\par
+ \noindent DOI: \nolinkurl{\@acmDOI}
+\par\egroup}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@printendtopmatter}
+% End the top matter
+% \begin{macrocode}
+\def\@printendtopmatter{\par\medskip
+ \ifcase\ACM@format@nr
+ \relax % manuscript
+ \noindent\hrulefill\par\medskip
+ \or% acmsmall
+ \noindent\hrulefill\par\medskip
+ \or % acmlarge
+ \noindent\hrulefill\par\medskip
+ \or % acmtog
+ \par\bigskip
+ \or % sigconf
+ \par\bigskip
+ \or % siggraph
+ \par\bigskip
+ \or % sigplan
+ \par\bigskip
+ \or % sigchi
+ \par\bigskip
+ \or % sigchi-a
+ \fi
+}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@setthanks}
+% We redefine \cs{\@setthanks} using \cs{long}
+% \begin{macrocode}
+\def\@setthanks{\long\def\thanks##1{\par##1\@addpunct.}\thankses}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+%
+%\subsection{Headers and Footers}
+%\label{sec:head_foot}
+%
+% We use |fancyhdr| for our headers and footers:
+% \begin{macrocode}
+\RequirePackage{fancyhdr}
+% \end{macrocode}
+%
+% \begin{macro}{\ACM@linecount@bx}
+% This is the box displayed in the review mode
+% \begin{macrocode}
+\if@ACM@review
+ \newsavebox{\ACM@linecount@bx}
+ \savebox{\ACM@linecount@bx}[4em][t]{\parbox[t]{4em}{%
+ \newlength\ACM@linecount@bxht\setlength{\ACM@linecount@bxht}{-\baselineskip}
+ \@tempcnta\@ne\relax
+ \loop{\color{ACMRed}\scriptsize\the\@tempcnta}\\
+ \advance\@tempcnta by \@ne
+ \addtolength{\ACM@linecount@bxht}{\baselineskip}
+ \ifdim\ACM@linecount@bxht<\textheight\repeat}}
+\fi
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\ACM@linecount}
+% How to display the box
+% \begin{macrocode}
+\def\ACM@linecount{%
+ \if@ACM@review
+ \begin{picture}(0,0)%
+ \put(-26,-22){\usebox{\ACM@linecount@bx}}%
+ \end{picture}%
+ \fi}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+%
+% \begin{macro}{standardpagestyle}
+% The pagestyle for all pages but the first one
+% \begin{macrocode}
+\fancypagestyle{standardpagestyle}{%
+ \fancyhf{}%
+ \renewcommand{\headrulewidth}{\z@}%
+ \renewcommand{\footrulewidth}{\z@}%
+ \ifcase\ACM@format@nr
+ \relax % manuscript
+ \fancyhead[RE]{\thepage}%
+ \fancyhead[LO]{\ACM@linecount\thepage}%
+ \fancyhead[LE]{\ACM@linecount\shortauthors}%
+ \fancyhead[RO]{\shorttitle}%
+ \fancyfoot[RO,LE]{\footnotesize Manuscript submitted to ACM}%
+ \or% acmsmall
+ \fancyhead[RE]{\sffamily\@acmArticle:\thepage}%
+ \fancyhead[LO]{\ACM@linecount\sffamily\@acmArticle:\thepage}%
+ \fancyhead[LE]{\ACM@linecount\sffamily\shortauthors}%
+ \fancyhead[RO]{\sffamily\shorttitle}%
+ \fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No.
+ \@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}%
+ \or % acmlarge
+ \fancyhead[LE]{\ACM@linecount\sffamily
+ \@acmArticle:\thepage\quad\textbullet\quad\shortauthors}%
+ \fancyhead[LO]{\ACM@linecount}%
+ \fancyhead[RO]{\sffamily
+ \shorttitle\quad\textbullet\quad\@acmArticle:\thepage}%
+ \fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No.
+ \@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}%
+ \or % acmtog
+ \fancyhead[LE]{\ACM@linecount\sffamily
+ \@acmArticle:\thepage\quad\textbullet\quad\shortauthors}%
+ \fancyhead[LO]{\ACM@linecount}%
+ \fancyhead[RO]{\sffamily
+ \shorttitle\quad\textbullet\quad\@acmArticle:\thepage}%
+ \fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No.
+ \@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}%
+ \else % Proceedings
+ \fancyfoot[R]{\footnotesize\thepage}%
+ \fancyhead[L]{\ACM@linecount}%
+ \fi
+}
+\pagestyle{standardpagestyle}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@folio@wd}
+% \begin{macro}{\@folio@ht}
+% \begin{macro}{\@folio@voffset}
+% \begin{macro}{\@folio@max}
+% Folio blob width, height, offsets and max number
+% \begin{macrocode}
+\newdimen\@folio@wd
+\@folio@wd=\z@
+\newdimen\@folio@ht
+\@folio@ht=\z@
+\newdimen\@folio@voffset
+\@folio@voffset=\z@
+\def\@folio@max{1}
+\ifcase\ACM@format@nr
+\relax % manuscript
+\or% acmsmall
+ \@folio@wd=45.75pt\relax
+ \@folio@ht=1.25in\relax
+ \@folio@voffset=.2in\relax
+ \def\@folio@max{8}
+\or % acmlarge
+ \@folio@wd=43.25pt\relax
+ \@folio@ht=79pt\relax
+ \@folio@voffset=.55in\relax
+ \def\@folio@max{10}
+\fi
+% \end{macrocode}
+%
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@folioblob}
+% The macro to typeset the folio blob.
+% \begin{macrocode}
+\def\@folioblob{\@tempcnta=\@acmArticleSeq\relax
+% \end{macrocode}
+% First, we calculate \cs{@acmArticleSeq} modulo \cs{@folio@max}
+% \begin{macrocode}
+ \loop
+ \ifnum\@tempcnta>\@folio@max\relax
+ \advance\@tempcnta by - \@folio@max
+ \repeat
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \advance\@tempcnta by -1\relax
+ \@tempdima=\@folio@ht\relax
+ \multiply\@tempdima by \the\@tempcnta\relax
+ \advance\@tempdima by -\@folio@voffset\relax
+ \begin{picture}(0,0)
+ \makebox[\z@]{\raisebox{-\@tempdima}{%
+ \rlap{%
+ \raisebox{-0.45\@folio@ht}[\z@][\z@]{%
+ \rule{\@folio@wd}{\@folio@ht}}}%
+ \parbox{\@folio@wd}{%
+ \centering
+ \textcolor{white}{\LARGE\bfseries\sffamily\@acmArticle}}}}
+ \end{picture}}
+
+% \end{macrocode}
+%
+%
+% \end{macro}
+%
+% \begin{macro}{firstpagestyle}
+% The pagestyle for all pages but the first one
+% \begin{macrocode}
+\fancypagestyle{firstpagestyle}{%
+ \fancyhf{}%
+ \renewcommand{\headrulewidth}{\z@}%
+ \renewcommand{\footrulewidth}{\z@}%
+ \ifcase\ACM@format@nr
+ \relax % manuscript
+ \fancyhead[L]{\ACM@linecount}%
+ \fancyfoot[RO,LE]{\small\thepage}%
+ \fancyfoot[RE,LO]{\footnotesize Manuscript submitted to ACM}%
+ \or% acmsmall
+ \fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No.
+ \@acmNumber, Article \@acmArticle. Publication date:
+ \@acmPubDate.}%
+ \fancyhead[LE]{\ACM@linecount\@folioblob}%
+ \fancyhead[LO]{\ACM@linecount}%
+ \fancyhead[RO]{\@folioblob}%
+ \fancyheadoffset[RO,LE]{0.6\@folio@wd}%
+ \or % acmlarge
+ \fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No.
+ \@acmNumber, Article \@acmArticle. Publication date:
+ \@acmPubDate.}%
+ \fancyhead[RO]{\@folioblob}%
+ \fancyhead[LE]{\ACM@linecount\@folioblob}%
+ \fancyhead[LO]{\ACM@linecount}%
+ \fancyheadoffset[RO,LE]{1.4\@folio@wd}%
+ \or % acmtog
+ \fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No.
+ \@acmNumber, Article \@acmArticle. Publication date:
+ \@acmPubDate.}%
+ \fancyhead[L]{\ACM@linecount}%
+ \else % Conference proceedings
+ \fancyhead[L]{\ACM@linecount}%
+ \fancyfoot[R]{\footnotesize\thepage}%
+ \fi
+}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+%\subsection{Sectioning}
+%\label{sec:sectioninng}
+%
+%
+% Fonts for sections etc. are different for different formats. Also,
+% some formats use the ugly period after section number (sigh):
+% \begin{macrocode}
+\def\@secfont{\sffamily\bfseries\raggedright\MakeUppercase}
+\def\@subsecfont{\sffamily\bfseries\raggedright}
+\def\@subsubsecfont{\sffamily\itshape}
+\def\@parfont{\itshape}
+\setcounter{secnumdepth}{3}
+\ifcase\ACM@format@nr
+\relax % manuscript
+\or% acmsmall
+\or % acmlarge
+ \def\@secfont{\sffamily\large\raggedright\MakeUppercase}
+ \def\@subsecfont{\sffamily\large\raggedright}
+\or % acmtog
+ \def\@secfont{\sffamily\large\raggedright\MakeUppercase}
+ \def\@subsecfont{\sffamily\large\raggedright}
+\or % sigconf
+ \def\@secfont{\bfseries\Large\raggedright\MakeUppercase}
+ \def\@subsecfont{\bfseries\Large\raggedright}
+\or % siggraph
+ \def\@secfont{\bfseries\sffamily\Large\raggedright\MakeUppercase}
+ \def\@subsecfont{\bfseries\sffamily\Large\raggedright}
+\or % sigplan
+ \def\@secfont{\bfseries\Large\raggedright\MakeUppercase}
+ \def\@subsecfont{\bfseries\Large\raggedright}
+\or % sigchi
+ \setcounter{secnumdepth}{1}
+ \def\@secfont{\bfseries\sffamily\raggedright\MakeUppercase}
+ \def\@subsecfont{\bfseries\sffamily\raggedright}
+\or % sigchi-a
+ \setcounter{secnumdepth}{0}
+ \def\@secfont{\bfseries\sffamily\raggedright\MakeUppercase}
+ \def\@subsecfont{\bfseries\sffamily\raggedright}
+\fi
+% \end{macrocode}
+%
+% \begin{macro}{\@adddotafter}
+% Add punctuation after the command
+% \begin{macrocode}
+\def\@adddotafter#1{#1\@addpunct{.}}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% Sectioning is different for different levels
+% \begin{macrocode}
+\renewcommand\section{\@startsection{section}{1}{\z@}%
+ {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}%
+ {.25\baselineskip}%
+ {\@secfont}}
+\renewcommand\subsection{\@startsection{subsection}{2}{\z@}%
+ {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}%
+ {.25\baselineskip}%
+ {\@subsecfont}}
+\renewcommand\subsubsection{\@startsection{subsubsection}{3}{10pt}%
+ {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
+ {-3.5\p@}%
+ {\@subsubsecfont\@adddotafter}}
+\renewcommand\paragraph{\@startsection{paragraph}{4}{\parindent}%
+ {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
+ {-3.5\p@}%
+ {\@parfont\@adddotafter}}
+\renewcommand\part{\@startsection{part}{9}{\z@}%
+ {-10\p@ \@plus -4\p@ \@minus -2\p@}%
+ {4\p@}%
+ {\@parfont}}
+% \end{macrocode}
+%
+%
+%
+%
+%\subsection{Theorems}
+%\label{sec:theorems}
+%
+%
+% \begin{macro}{acmplain}
+% The |acmplain| theorem style
+% \begin{macrocode}
+\newtheoremstyle{acmplain}%
+ {.5\baselineskip\@plus.2\baselineskip
+ \@minus.2\baselineskip}% space above
+ {.5\baselineskip\@plus.2\baselineskip
+ \@minus.2\baselineskip}% Space below
+ {\itshape}% body font
+ {\parindent}% indent amount
+ {\scshape}% head font
+ {.}% punctuation after head
+ {.5em}% spacing after head
+ {\thmname{#1}\thmnumber{ #2}\thmnote{ (#3)}}% head spec
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{acmdefinition}
+% The |acmdefinition| theorem style
+% \begin{macrocode}
+\newtheoremstyle{acmdefinition}%
+ {.5\baselineskip\@plus.2\baselineskip
+ \@minus.2\baselineskip}% space above
+ {.5\baselineskip\@plus.2\baselineskip
+ \@minus.2\baselineskip}% Space below
+ {\normalfont}% body font
+ {\parindent}% indent amount
+ {\itshape}% head font
+ {.}% punctuation after head
+ {.5em}% spacing after head
+ {\thmname{#1}\thmnumber{ #2}\thmnote{ \itshape(#3)}}% head spec
+% \end{macrocode}
+%
+% \end{macro}
+%
+% The definitions for theorems:
+% \begin{macrocode}
+\theoremstyle{acmplain}
+\newtheorem{theorem}{Theorem}[section]
+\newtheorem{conjecture}[theorem]{Conjecture}
+\newtheorem{proposition}[theorem]{Proposition}
+\newtheorem{lemma}[theorem]{Lemma}
+\newtheorem{corollary}[theorem]{Corollary}
+\theoremstyle{acmdefinition}
+\newtheorem{example}[theorem]{Example}
+\newtheorem{definition}[theorem]{Definition}
+% \end{macrocode}
+%
+%
+% \begin{macro}{proof}
+% We want small caps proof name
+% \begin{macrocode}
+\renewenvironment{proof}[1][\proofname]{\par
+ \pushQED{\qed}%
+ \normalfont \topsep6\p@\@plus6\p@\relax
+ \trivlist
+ \item[\indent\hskip\labelsep
+ \scshape
+ #1\@addpunct{.}]\ignorespaces
+}{%
+ \popQED\endtrivlist\@endpefalse
+}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \subsection{Conditional typesetting}
+% \label{sec:conditional}
+%
+% We use the |comment| package for conditional typesetting:
+% \begin{macrocode}
+\if@ACM@screen
+ \includecomment{screenonly}
+ \excludecomment{printonly}
+\else
+ \excludecomment{screenonly}
+ \includecomment{printonly}
+\fi
+\if@ACM@anonymous
+ \excludecomment{anonsuppress}
+\else
+ \includecomment{anonsuppress}
+\fi
+% \end{macrocode}
+%
+%
+%\subsection{End of Class}
+%\label{end}
+%
+%
+% \begin{macrocode}
+\normalsize\normalfont
+%</class>
+% \end{macrocode}
+%
+%\Finale
+%\clearpage
+%
+%\PrintChanges
+%\clearpage
+%\PrintIndex
+%
+\endinput
diff --git a/Master/texmf-dist/source/latex/acmart/acmart.ins b/Master/texmf-dist/source/latex/acmart/acmart.ins
new file mode 100644
index 00000000000..8d93280a2c2
--- /dev/null
+++ b/Master/texmf-dist/source/latex/acmart/acmart.ins
@@ -0,0 +1,29 @@
+%
+% Doctrip file for acmart
+% This file is in public domain
+% $Id: acmart.ins,v 1.1 2015/11/23 22:42:55 boris Exp $
+%
+\def\batchfile{acmart.ins}
+\input docstrip
+\keepsilent
+\showprogress
+
+
+\askforoverwritefalse
+
+\generate{%
+ \file{acmart.cls}{\from{acmart.dtx}{class}}}
+
+\obeyspaces
+\Msg{*****************************************************}%
+\Msg{* Congratulations! You successfully generated the *}%
+\Msg{* acmart package. *}%
+\Msg{* *}%
+\Msg{* Please move the file acmart.cls to where LaTeX *}%
+\Msg{* files are stored in your system. The manual is *}%
+\Msg{* acmart.pdf. *}%
+\Msg{* *}%
+\Msg{* The package is released under LPPL *}%
+\Msg{* *}%
+\Msg{* Happy TeXing! *}%
+\Msg{*****************************************************}% \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/acmart/acmart.cls b/Master/texmf-dist/tex/latex/acmart/acmart.cls
new file mode 100644
index 00000000000..3d8c4fc1401
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/acmart/acmart.cls
@@ -0,0 +1,1932 @@
+%%
+%% This is file `acmart.cls',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% acmart.dtx (with options: `class')
+%%
+%% IMPORTANT NOTICE:
+%%
+%% For the copyright see the source file.
+%%
+%% Any modified versions of this file must be renamed
+%% with new filenames distinct from acmart.cls.
+%%
+%% For distribution of the original source see the terms
+%% for copying and modification in the file acmart.dtx.
+%%
+%% This generated file may be distributed as long as the
+%% original source files, as listed above, are part of the
+%% same distribution. (The sources need not necessarily be
+%% in the same archive or directory.)
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesClass{acmart}
+[2016/05/03 v1.07 Typesetting articles for Association of
+Computing Machinery]
+\def\@classname{acmart}
+\RequirePackage{xkeyval}
+\define@choicekey*+{acmart.cls}{format}[\ACM@format\ACM@format@nr]{%
+ manuscript, acmsmall, acmlarge, acmtog, sigconf, siggraph,
+ sigplan, sigchi, sigchi-a}[manuscript]{}{%
+ \ClassError{\@classname}{The option format must be manuscript,
+ acmsmall, acmlarge, acmtog, sigconf, siggraph,
+ sigplan, sigchi or sigchi-a}}
+\def\@DeclareACMFormat#1{\DeclareOptionX{#1}{\setkeys{acmart.cls}{format=#1}}}
+\@DeclareACMFormat{manuscript}
+\@DeclareACMFormat{acmsmall}
+\@DeclareACMFormat{acmlarge}
+\@DeclareACMFormat{acmtog}
+\@DeclareACMFormat{sigconf}
+\@DeclareACMFormat{siggraph}
+\@DeclareACMFormat{sigplan}
+\@DeclareACMFormat{sigchi}
+\@DeclareACMFormat{sigchi-a}
+\ExecuteOptionsX{format}
+\define@boolkey+{acmart.cls}[@ACM@]{screen}[true]{%
+ \if@ACM@screen
+ \PackageInfo{\@classname}{Using screen mode}%
+ \else
+ \PackageInfo{\@classname}{Not using screen mode}%
+ \fi}{\PackageError{\@classname}{Option screen can be either true or
+ false}}
+\ExecuteOptionsX{screen=false}
+\define@boolkey+{acmart.cls}[@ACM@]{review}[true]{%
+ \if@ACM@review
+ \PackageInfo{\@classname}{Using review mode}%
+ \else
+ \PackageInfo{\@classname}{Not using review mode}%
+ \fi}{\PackageError{\@classname}{Option review can be either true or
+ false}}
+\ExecuteOptionsX{review=false}
+\define@boolkey+{acmart.cls}[@ACM@]{authorversion}[true]{%
+ \if@ACM@authorversion
+ \PackageInfo{\@classname}{Using authorversion mode}%
+ \else
+ \PackageInfo{\@classname}{Not using authorversion mode}%
+ \fi}{\PackageError{\@classname}{Option authorversion can be either true or
+ false}}
+\ExecuteOptionsX{authorversion=false}
+\define@boolkey+{acmart.cls}[@ACM@]{natbib}[true]{%
+ \if@ACM@natbib
+ \PackageInfo{\@classname}{Using natbib mode}%
+ \else
+ \PackageInfo{\@classname}{Not using natbib mode}%
+ \fi}{\PackageError{\@classname}{Option natbib can be either true or
+ false}}
+\ExecuteOptionsX{natbib=false}
+\define@boolkey+{acmart.cls}[@ACM@]{anonymous}[true]{%
+ \if@ACM@anonymous
+ \PackageInfo{\@classname}{Using anonymous mode}%
+ \else
+ \PackageInfo{\@classname}{Not using anonymous mode}%
+ \fi}{\PackageError{\@classname}{Option anonymous can be either true or
+ false}}
+\ExecuteOptionsX{anonymous=false}
+\def\ACM@fontsize{}
+\DeclareOptionX{9pt}{\edef\ACM@fontsize{\CurrentOption}}
+\DeclareOptionX{10pt}{\edef\ACM@fontsize{\CurrentOption}}
+\DeclareOptionX{11pt}{\edef\ACM@fontsize{\CurrentOption}}
+\DeclareOptionX{12pt}{\edef\ACM@fontsize{\CurrentOption}}
+\DeclareOptionX{draft}{\PassOptionsToClass{\CurrentOption}{amsart}}
+\DeclareOptionX{*}{\PassOptionsToClass{\CurrentOption}{amsart}}
+\ProcessOptionsX
+\ClassInfo{\@classname}{Using format \ACM@format, number \ACM@format@nr}
+\newif\if@ACM@manuscript
+\newif\if@ACM@journal
+\newif\if@ACM@sigchiamode
+\ifnum\ACM@format@nr=0\relax
+ \@ACM@manuscripttrue
+\else
+ \@ACM@manuscriptfalse
+\fi
+\@ACM@sigchiamodefalse
+\ifcase\ACM@format@nr
+\relax % manuscript
+ \@ACM@journaltrue
+\or% acmsmall
+ \@ACM@journaltrue
+\or % acmlarge
+ \@ACM@journaltrue
+\or % acmtog
+ \@ACM@journaltrue
+\or % sigconf
+ \@ACM@journalfalse
+\or % siggraph
+ \@ACM@journalfalse
+ \or % sigplan
+ \@ACM@journalfalse
+ \or % sigchi
+ \@ACM@journalfalse
+\or % sigchi-a
+ \@ACM@journalfalse
+ \@ACM@sigchiamodetrue
+\fi
+\ifx\ACM@fontsize\@empty
+ \ifcase\ACM@format@nr
+ \relax % manuscript
+ \def\ACM@fontsize{9pt}%
+ \or% acmsmall
+ \def\ACM@fontsize{10pt}%
+ \or % acmlarge
+ \def\ACM@fontsize{9pt}%
+ \or % acmtog
+ \def\ACM@fontsize{9pt}%
+ \or % sigconf
+ \def\ACM@fontsize{9pt}%
+ \or % siggraph
+ \def\ACM@fontsize{9pt}%
+ \or % sigplan
+ \def\ACM@fontsize{9pt}%
+ \or % sigchi
+ \def\ACM@fontsize{10pt}%
+ \or % sigchi-a
+ \def\ACM@fontsize{10pt}%
+ \fi
+\fi
+\ClassInfo{\@classname}{Using fontsize \ACM@fontsize}
+\LoadClass[\ACM@fontsize, reqno]{amsart}
+\RequirePackage{microtype}
+\RequirePackage{totpages}
+\RequirePackage{environ}
+\if@ACM@manuscript
+\RequirePackage{setspace}
+\onehalfspacing
+\fi
+\if@ACM@natbib
+ \RequirePackage{natbib}
+ \renewcommand{\bibfont}{\bibliofont}
+ \renewcommand\setcitestyle[1]{
+ \@for\@tempa:=#1\do
+ {\def\@tempb{round}\ifx\@tempa\@tempb
+ \renewcommand\NAT@open{(}\renewcommand\NAT@close{)}\fi
+ \def\@tempb{square}\ifx\@tempa\@tempb
+ \renewcommand\NAT@open{[}\renewcommand\NAT@close{]}\fi
+ \def\@tempb{angle}\ifx\@tempa\@tempb
+ \renewcommand\NAT@open{$<$}\renewcommand\NAT@close{$>$}\fi
+ \def\@tempb{curly}\ifx\@tempa\@tempb
+ \renewcommand\NAT@open{\{}\renewcommand\NAT@close{\}}\fi
+ \def\@tempb{semicolon}\ifx\@tempa\@tempb
+ \renewcommand\NAT@sep{;}\fi
+ \def\@tempb{colon}\ifx\@tempa\@tempb
+ \renewcommand\NAT@sep{;}\fi
+ \def\@tempb{comma}\ifx\@tempa\@tempb
+ \renewcommand\NAT@sep{,}\fi
+ \def\@tempb{authoryear}\ifx\@tempa\@tempb
+ \NAT@numbersfalse\fi
+ \def\@tempb{numbers}\ifx\@tempa\@tempb
+ \NAT@numberstrue\NAT@superfalse\fi
+ \def\@tempb{super}\ifx\@tempa\@tempb
+ \NAT@numberstrue\NAT@supertrue\fi
+ \def\@tempb{nobibstyle}\ifx\@tempa\@tempb
+ \let\bibstyle=\@gobble\fi
+ \def\@tempb{bibstyle}\ifx\@tempa\@tempb
+ \let\bibstyle=\@citestyle\fi
+ \def\@tempb{sort}\ifx\@tempa\@tempb
+ \def\NAT@sort{\@ne}\fi
+ \def\@tempb{nosort}\ifx\@tempa\@tempb
+ \def\NAT@sort{\z@}\fi
+ \def\@tempb{compress}\ifx\@tempa\@tempb
+ \def\NAT@cmprs{\@ne}\fi
+ \def\@tempb{nocompress}\ifx\@tempa\@tempb
+ \def\NAT@cmprs{\@z}\fi
+ \def\@tempb{sort&compress}\ifx\@tempa\@tempb
+ \def\NAT@sort{\@ne}\def\NAT@cmprs{\@ne}\fi
+ \def\@tempb{mcite}\ifx\@tempa\@tempb
+ \let\NAT@merge\@ne\fi
+ \def\@tempb{merge}\ifx\@tempa\@tempb
+ \@ifnum{\NAT@merge<\tw@}{\let\NAT@merge\tw@}{}\fi
+ \def\@tempb{elide}\ifx\@tempa\@tempb
+ \@ifnum{\NAT@merge<\thr@@}{\let\NAT@merge\thr@@}{}\fi
+ \def\@tempb{longnamesfirst}\ifx\@tempa\@tempb
+ \NAT@longnamestrue\fi
+ \def\@tempb{nonamebreak}\ifx\@tempa\@tempb
+ \def\NAT@nmfmt#1{\mbox{\NAT@up#1}}\fi
+ \expandafter\NAT@find@eq\@tempa=\relax\@nil
+ \if\@tempc\relax\else
+ \expandafter\NAT@rem@eq\@tempc
+ \def\@tempb{open}\ifx\@tempa\@tempb
+ \xdef\NAT@open{\@tempc}\fi
+ \def\@tempb{close}\ifx\@tempa\@tempb
+ \xdef\NAT@close{\@tempc}\fi
+ \def\@tempb{aysep}\ifx\@tempa\@tempb
+ \xdef\NAT@aysep{\@tempc}\fi
+ \def\@tempb{yysep}\ifx\@tempa\@tempb
+ \xdef\NAT@yrsep{\@tempc}\fi
+ \def\@tempb{notesep}\ifx\@tempa\@tempb
+ \xdef\NAT@cmt{\@tempc}\fi
+ \def\@tempb{citesep}\ifx\@tempa\@tempb
+ \xdef\NAT@sep{\@tempc}\fi
+ \fi
+ }%
+ \NAT@@setcites
+ }
+ \setcitestyle{%
+ open={[},close={]},citesep={;},%
+ authoryear,aysep={},yysep={,},%
+ notesep={, }}
+\fi
+\def\@startsection#1#2#3#4#5#6{%
+ \if@noskipsec \leavevmode \fi
+ \par
+ \@tempskipa #4\relax
+ \@afterindenttrue
+ \ifdim \@tempskipa <\z@
+ \@tempskipa -\@tempskipa \@afterindentfalse
+ \fi
+ \if@nobreak
+ \everypar{}%
+ \else
+ \addpenalty\@secpenalty\addvspace\@tempskipa
+ \fi
+ \@ifstar
+ {\@ssect{#3}{#4}{#5}{#6}}%
+ {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}
+\def\@sect#1#2#3#4#5#6[#7]#8{%
+ \ifnum #2>\c@secnumdepth
+ \let\@svsec\@empty
+ \else
+ \refstepcounter{#1}%
+ \protected@edef\@svsec{\@seccntformat{#1}\relax}%
+ \fi
+ \@tempskipa #5\relax
+ \ifdim \@tempskipa>\z@
+ \begingroup
+ #6{%
+ \@hangfrom{\hskip #3\relax\@svsec}%
+ \interlinepenalty \@M #8\@@par}%
+ \endgroup
+ \csname #1mark\endcsname{#7}%
+ \addcontentsline{toc}{#1}{%
+ \ifnum #2>\c@secnumdepth \else
+ \protect\numberline{\csname the#1\endcsname}%
+ \fi
+ #7}%
+ \else
+ \def\@svsechd{%
+ #6{\hskip #3\relax
+ \@svsec #8}%
+ \csname #1mark\endcsname{#7}%
+ \addcontentsline{toc}{#1}{%
+ \ifnum #2>\c@secnumdepth \else
+ \protect\numberline{\csname the#1\endcsname}%
+ \fi
+ #7}}%
+ \fi
+ \@xsect{#5}}
+\def\@xsect#1{%
+ \@tempskipa #1\relax
+ \ifdim \@tempskipa>\z@
+ \par \nobreak
+ \vskip \@tempskipa
+ \@afterheading
+ \else
+ \@nobreakfalse
+ \global\@noskipsectrue
+ \everypar{%
+ \if@noskipsec
+ \global\@noskipsecfalse
+ {\setbox\z@\lastbox}%
+ \clubpenalty\@M
+ \begingroup \@svsechd \endgroup
+ \unskip
+ \@tempskipa #1\relax
+ \hskip -\@tempskipa
+ \else
+ \clubpenalty \@clubpenalty
+ \everypar{}%
+ \fi}%
+ \fi
+ \ignorespaces}
+\def\@seccntformat#1{\csname the#1\endcsname\quad}
+\def\@ssect#1#2#3#4#5{%
+ \@tempskipa #3\relax
+ \ifdim \@tempskipa>\z@
+ \begingroup
+ #4{%
+ \@hangfrom{\hskip #1}%
+ \interlinepenalty \@M #5\@@par}%
+ \endgroup
+ \else
+ \def\@svsechd{#4{\hskip #1\relax #5}}%
+ \fi
+ \@xsect{#3}}
+\let\@footnotemark@nolink\@footnotemark
+\let\@footnotetext@nolink\@footnotetext
+\RequirePackage{hyperref}
+\if@ACM@sigchiamode
+ \urlstyle{sf}
+\else
+ \urlstyle{rm}
+\fi
+\if@ACM@screen
+ \hypersetup{colorlinks,
+ linkcolor=ACMRed,
+ citecolor=ACMPurple,
+ urlcolor=ACMDarkBlue,
+ filecolor=ACMDarkBlue}
+\else
+ \hypersetup{hidelinks}
+\fi
+\if@ACM@natbib
+ \let\citeN\cite
+ \let\cite\citep
+ \let\citeANP\citeauthor
+ \let\citeNN\citeyearpar
+ \let\citeyearNP\citeyear
+ \let\citeyear\citeyearpar
+ \let\citeNP\citealt
+ \def\shortcite#1{\citeyear{#1}}
+ \DeclareRobustCommand\citeA
+ {\begingroup\NAT@swafalse
+ \let\NAT@ctype\@ne\NAT@partrue\NAT@fullfalse\NAT@open\NAT@citetp}
+ \providecommand\newblock{}
+\else
+ \providecommand\citename[1]{#1}
+\fi
+\ifcase\ACM@format@nr
+\relax % manuscript
+\or% acmsmall
+\or % acmlarge
+\or % acmtog
+\or % sigconf
+\or % siggraph
+ \def\@biblabel#1{}
+ \ifx\bibhang\@undefined
+ \newlength\bibhang
+ \fi
+ \setlength{\bibhang}{1em}
+ \renewenvironment{thebibliography}[1]{%
+ \@bibtitlestyle
+ \normalfont\bibliofont\labelsep .5em\relax
+ \renewcommand\theenumiv{\arabic{enumiv}}\let\p@enumiv\@empty
+ \list{\@biblabel{\theenumiv}}{\labelwidth\z@
+ \setlength{\itemindent}{-\bibhang}%
+ \setlength{\leftmargin}{\bibhang}%
+ \labelsep\z@
+ \def\newblock{\hskip .11em plus .33em minus .07em}%
+ \usecounter{enumiv}}%
+ \sloppy \clubpenalty\@M \widowpenalty\clubpenalty
+ \sfcode`\.=\@m
+ }{%
+ \def\@noitemerr{\@latex@warning{Empty `thebibliography' environment}}%
+ \endlist
+ }
+\or % sigplan
+\or % sigchi
+\or % sigchi-a
+\fi
+\RequirePackage{graphicx, xcolor}
+\definecolor[named]{ACMBlue}{cmyk}{1,0.1,0,0.1}
+\definecolor[named]{ACMYellow}{cmyk}{0,0.16,1,0}
+\definecolor[named]{ACMOrange}{cmyk}{0,0.42,1,0.01}
+\definecolor[named]{ACMRed}{cmyk}{0,0.90,0.86,0}
+\definecolor[named]{ACMLightBlue}{cmyk}{0.49,0.01,0,0}
+\definecolor[named]{ACMGreen}{cmyk}{0.20,0,1,0.19}
+\definecolor[named]{ACMPurple}{cmyk}{0.55,1,0,0.15}
+\definecolor[named]{ACMDarkBlue}{cmyk}{1,0.58,0,0.21}
+\RequirePackage{geometry}
+\ifcase\ACM@format@nr
+\relax % manuscript
+ \geometry{letterpaper,head=1pc}%
+\or% acmsmall
+ \geometry{twoside=true,
+ includeheadfoot, head=1pc, foot=2pc,
+ paperwidth=6.75in, paperheight=10in,
+ top=58pt, bottom=44pt, inner=46pt, outer=46pt
+ }%
+\or % acmlarge
+ \geometry{twoside=true, head=1pc, foot=2pc,
+ paperwidth=8.5in, paperheight=11in,
+ includeheadfoot,
+ top=78pt, bottom=114pt, inner=81pt, outer=81pt
+ }%
+\or % acmtog
+ \geometry{twoside=true, head=1pc, foot=2pc,
+ paperwidth=8.5in, paperheight=11in,
+ includeheadfoot, columnsep=24pt,
+ top=52pt, bottom=75pt, inner=52pt, outer=52pt
+ }%
+\or % sigconf
+ \geometry{twoside=true, head=1pc,
+ paperwidth=8.5in, paperheight=11in,
+ includeheadfoot, columnsep=2pc,
+ top=57pt, bottom=75pt, inner=54pt, outer=57pt
+ }%
+\or % siggraph
+ \geometry{twoside=true, head=1pc,
+ paperwidth=8.5in, paperheight=11in,
+ includeheadfoot, columnsep=2pc,
+ top=57pt, bottom=75pt, inner=54pt, outer=57pt
+ }%
+\or % sigplan
+ \geometry{twoside=true, head=1pc,
+ paperwidth=8.5in, paperheight=11in,
+ includeheadfoot, columnsep=2pc,
+ top=74pt, bottom=70pt, inner=54pt, outer=54pt
+ }%
+\or % sigchi
+ \geometry{twoside=true, head=1pc,
+ paperwidth=8.5in, paperheight=11in,
+ includeheadfoot, columnsep=2pc,
+ top=66pt, bottom=78pt, inner=54pt, outer=48pt
+ }%
+\or % sigchi-a
+ \geometry{twoside=false, head=1pc,
+ paperwidth=11in, paperheight=8.5in,
+ includeheadfoot, marginparsep=72pt,
+ marginparwidth=170pt, columnsep=20pt,
+ top=72pt, bottom=72pt, left=314pt, right=72pt
+ }%
+ \@mparswitchfalse
+ \reversemarginpar
+\fi
+\setlength\parindent{10\p@}
+\setlength\parskip{\z@}
+\ifcase\ACM@format@nr
+\relax % manuscript
+\or% acmsmall
+\or % acmlarge
+\or % acmtog
+ \setlength\parindent{9\p@}%
+\or % sigconf
+\or % siggraph
+\or % sigplan
+\or % sigchi
+\or % sigchi-a
+\fi
+\RequirePackage{manyfoot}
+\DeclareNewFootnote{copyrightpermission}
+\skip\footinscopyrightpermission=0.1\baselineskip plus 0.1\baselineskip
+\def\footnoterule{\kern-3\p@
+ \hrule \@width \columnwidth \kern 2.6\p@}
+\def\endminipage{%
+ \par
+ \unskip
+ \ifvoid\@mpfootins\else
+ \vskip\skip\@mpfootins
+ \normalcolor
+ \unvbox\@mpfootins
+ \fi
+ \@minipagefalse %% added 24 May 89
+ \color@endgroup
+ \egroup
+ \expandafter\@iiiparbox\@mpargs{\unvbox\@tempboxa}}
+
+\def\@makefntext{\noindent\@makefnmark}
+\if@ACM@sigchiamode
+\long\def\@footnotetext#1{\marginpar{%
+ \reset@font\small
+ \interlinepenalty\interfootnotelinepenalty
+ \protected@edef\@currentlabel{%
+ \csname p@footnote\endcsname\@thefnmark
+ }%
+ \color@begingroup
+ \@makefntext{%
+ \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
+ \color@endgroup}}%
+\fi
+\usepackage[tt=false]{libertine}
+\usepackage[varqu]{zi4}
+\usepackage[libertine]{newtxmath}
+\if@ACM@sigchiamode
+ \renewcommand{\familydefault}{\sfdefault}
+\fi
+\RequirePackage{caption, float}
+\captionsetup[table]{position=top}
+\if@ACM@journal
+ \captionsetup{labelfont={sf, small},
+ textfont={sf, small}, margin=\z@}
+ \captionsetup[figure]{name={Fig.}}
+\else
+ \captionsetup{labelfont={bf},
+ textfont={bf}, labelsep=colon, margin=\z@}
+ \ifcase\ACM@format@nr
+ \relax % manuscript
+ \or% acmsmall
+ \or % acmlarge
+ \or % acmtog
+ \or % sigconf
+ \or % siggraph
+ \captionsetup{textfont={it}}
+ \or % sigplan
+ \or % sigchi
+ \captionsetup[figure]{labelfont={bf, small},
+ textfont={bf, small}}
+ \or % sigchi-a
+ \captionsetup[figure]{labelfont={bf, small},
+ textfont={bf, small}}
+ \fi
+\fi
+\newfloat{sidebar}{}{sbar}
+\floatname{sidebar}{Sidebar}
+\renewenvironment{sidebar}{\Collect@Body\@sidebar}{}
+\long\def\@sidebar#1{\bgroup\captionsetup{type=sidebar}%
+ \marginpar{\small#1}\egroup}
+\newenvironment{marginfigure}{\Collect@Body\@marginfigure}{}
+\long\def\@marginfigure#1{\bgroup\captionsetup{type=figure}%
+ \marginpar{\small#1}\egroup}
+\newenvironment{margintable}{\Collect@Body\@margintable}{}
+\long\def\@margintable#1{\bgroup\captionsetup{type=table}%
+ \marginpar{\small#1}\egroup}
+\newdimen\fulltextwidth
+\fulltextwidth=\dimexpr(\textwidth+\marginparwidth+\marginparsep)
+\if@ACM@sigchiamode
+\def\@dblfloat{\bgroup\columnwidth=\fulltextwidth
+ \let\@endfloatbox\@endwidefloatbox
+ \def\@fpsadddefault{\def\@fps{tp}}%
+ \@float}
+\fi
+\if@ACM@sigchiamode
+\def\end@dblfloat{%
+ \end@float\egroup}
+\fi
+\def\@endwidefloatbox{%
+ \par\vskip\z@skip
+ \@minipagefalse
+ \outer@nobreak
+ \egroup
+ \color@endbox
+ \global\setbox\@currbox=\vbox{\moveleft
+ \dimexpr(\fulltextwidth-\textwidth)\box\@currbox}%
+ \wd\@currbox=\textwidth
+}
+\define@choicekey*+{ACM}{acmJournal}[\@journalCode\@journalCode@nr]{%
+ CIE,%
+ CSUR,%
+ JACM,%
+ JDIQ,%
+ JEA,%
+ JERIC,%
+ JETC,%
+ JOCCH,%
+ TAAS,%
+ TACCESS,%
+ TACO,%
+ TALG,%
+ TALLIP,%
+ TAP,%
+ TCPS,%
+ TEAC,%
+ TECS,%
+ TIIS,%
+ TISSEC,%
+ TIST,%
+ TKDD,%
+ TMIS,%
+ TOCE,%
+ TOCHI,%
+ TOCL,%
+ TOCS,%
+ TOCT,%
+ TODAES,%
+ TODS,%
+ TOG,%
+ TOIS,%
+ TOIT,%
+ TOMACS,%
+ TOMM,%
+ TOMPECS,%
+ TOMS,%
+ TOPC,%
+ TOPS,%
+ TOPLAS,%
+ TOS,%
+ TOSEM,%
+ TOSN,%
+ TRETS,%
+ TSAS,%
+ TSC,%
+ TSLP,%
+ TWEB%
+}{%
+\ifcase\@journalCode@nr
+\relax % CIE
+ \def\@journalName{ACM Computers in Entertainment}%
+ \def\@journalNameShort{ACM Comput. Entertain.}%
+ \def\@permissionCodeOne{1544-3574}%
+\or % CSUR
+ \def\@journalName{ACM Computing Surveys}%
+ \def\@journalNameShort{ACM Comput. Surv.}%
+ \def\@permissionCodeOne{0360-0300}%
+\or % JACM
+ \def\@journalName{Journal of the ACM}%
+ \def\@journalNameShort{J. ACM}%
+ \def\@permissionCodeOne{0004-5411}%
+\or % JDIQ
+ \def\@journalName{ACM Journal of Data and Information Quality}%
+ \def\@journalNameShort{ACM J. Data Inform. Quality}%
+ \def\@permissionCodeOne{1936-1955}%
+\or % JEA
+ \def\@journalName{ACM Journal of Experimental Algorithmics}%
+ \def\@journalNameShort{ACM J. Exp. Algor.}%
+ \def\@permissionCodeOne{1084-6654}%
+\or % JERIC
+ \def\@journalName{ACM Journal of Educational Resources in Computing}%
+ \def\@journalNameShort{ACM J. Edu. Resources in Comput.}%
+ \def\@permissionCodeOne{1073-0516}%
+\or % JETC
+ \def\@journalName{ACM Journal on Emerging Technologies in Computing Systems}%
+ \def\@journalNameShort{ACM J. Emerg. Technol. Comput. Syst.}%
+ \def\@permissionCodeOne{1550-4832}%
+\or % JOCCH
+ \def\@journalName{ACM Journal on Computing and Cultural Heritage}%
+ \def\@journalName{ACM J. Comput. Cult. Herit.}%
+\or % TAAS
+ \def\@journalName{ACM Transactions on Autonomous and Adaptive Systems}%
+ \def\@journalNameShort{ACM Trans. Autonom. Adapt. Syst.}%
+ \def\@permissionCodeOne{1556-4665}%
+\or % TACCESS
+ \def\@journalName{ACM Transactions on Accessible Computing}%
+ \def\@journalNameShort{ACM Trans. Access. Comput.}%
+ \def\@permissionCodeOne{1936-7228}%
+\or % TACO
+ \def\@journalName{ACM Transactions on Architecture and Code Optimization}%
+\or % TALG
+ \def\@journalName{ACM Transactions on Algorithms}%
+ \def\@journalNameShort{ACM Trans. Algor.}%
+ \def\@permissionCodeOne{1549-6325}%
+\or % TALLIP
+ \def\@journalName{ACM Transactions on Asian and Low-Resource Language Information Processing}%
+ \def\@journalNameShort{ACM Trans. Asian Low-Resour. Lang. Inf. Process.}%
+ \def\@permissionCodeOne{2375-4699}%
+\or % TAP
+ \def\@journalName{ACM Transactions on Applied Perception}%
+\or % TCPS
+ \def\@journalName{ACM Transactions on Cyber-Physical Systems}%
+\or % TEAC
+ \def\@journalName{ACM Transactions on Economics and Computation}%
+\or % TECS
+ \def\@journalName{ACM Transactions on Embedded Computing Systems}%
+ \def\@journalNameShort{ACM Trans. Embedd. Comput. Syst.}%
+ \def\@permissionCodeOne{1539-9087}%
+\or % TIIS
+ \def\@journalName{ACM Transactions on Interactive Intelligent Systems}%
+ \def\@journalNameShort{ACM Trans. Interact. Intell. Syst.}%
+ \def\@permissionCodeOne{2160-6455}%
+\or % TISSEC
+ \def\@journalName{ACM Transactions on Information and System Security}%
+ \def\@journalNameShort{ACM Trans. Info. Syst. Sec.}%
+ \def\@permissionCodeOne{1094-9224}%
+\or % TIST
+ \def\@journalName{ACM Transactions on Intelligent Systems and Technology}%
+ \def\@journalNameShort{ACM Trans. Intell. Syst. Technol.}%
+ \def\@permissionCodeOne{2157-6904}%
+\or % TKDD
+ \def\@journalName{ACM Transactions on Knowledge Discovery from Data}%
+ \def\@journalNameShort{ACM Trans. Knowl. Discov. Data.}%
+ \def\@permissionCodeOne{1556-4681}%
+\or % TMIS
+ \def\@journalName{ACM Transactions on Management Information Systems}%
+ \def\@journalNameShort{ACM Trans. Manag. Inform. Syst.}%
+ \def\@permissionCodeOne{2158-656X}%
+\or % TOCE
+ \def\@journalName{ACM Transactions on Computing Education}%
+ \def\@journalNameShort{ACM Trans. Comput. Educ.}%
+ \def\@permissionCodeOne{1946-6226}%
+\or % TOCHI
+ \def\@journalName{ACM Transactions on Computer-Human Interaction}%
+ \def\@journalNameShort{ACM Trans. Comput.-Hum. Interact.}%
+ \def\@permissionCodeOne{1073-0516}%
+\or % TOCL
+ \def\@journalName{ACM Transactions on Computational Logic}%
+ \def\@journalNameShort{ACM Trans. Comput. Logic}%
+ \def\@permissionCodeOne{1529-3785}%
+\or % TOCS
+ \def\@journalName{ACM Transactions on Computer Systems}%
+ \def\@journalNameShort{ACM Trans. Comput. Syst.}%
+ \def\@permissionCodeOne{0734-2071}%
+\or % TOCT
+ \def\@journalName{ACM Transactions on Computation Theory}%
+ \def\@journalNameShort{ACM Trans. Comput. Theory}%
+ \def\@permissionCodeOne{1942-3454}%
+\or % TODAES
+ \def\@journalName{ACM Transactions on Design Automation of Electronic Systems}%
+ \def\@journalNameShort{ACM Trans. Des. Autom. Electron. Syst.}%
+ \def\@permissionCodeOne{1084-4309}%
+\or % TODS
+ \def\@journalName{ACM Transactions on Database Systems}%
+ \def\@journalNameShort{ACM Trans. Datab. Syst.}%
+ \def\@permissionCodeOne{0362-5915}%
+\or % TOG
+ \def\@journalName{ACM Transactions on Graphics}%
+ \def\@journalNameShort{ACM Trans. Graph.}%
+ \def\@permissionCodeOne{0730-0301}
+\or % TOIS
+ \def\@journalName{ACM Transactions on Information Systems}%
+ \def\@journalName{ACM Transactions on Information Systems}%
+ \def\@permissionCodeOne{1046-8188}%
+\or % TOIT
+ \def\@journalName{ACM Transactions on Internet Technology}%
+ \def\@journalNameShort{ACM Trans. Internet Technol.}%
+ \def\@permissionCodeOne{1533-5399}%
+\or % TOMACS
+ \def\@journalName{ACM Transactions on Modeling and Computer Simulation}%
+ \def\@journalName{ACM Transactions on Modeling and Computer Simulation}%
+ \def\@journalNameShort{ACM Trans. Model. Comput. Simul.}%
+\or % TOMM
+ \def\@journalName{ACM Transactions on Multimedia Computing, Communications and Applications}%
+ \def\@journalNameShort{ACM Trans. Multimedia Comput. Commun. Appl.}%
+ \def\@permissionCodeOne{1551-6857}%
+ \def\@permissionCodeTwo{0100}%
+\or % TOMPECS
+ \def\@journalName{ACM Transactions on Modeling and Performance Evaluation of Computing Systems}%
+ \def\@journalNameShort{ACM Trans. Model. Perform. Eval. Comput. Syst.}%
+ \def\@permissionCodeOne{2376-3639}%
+\or % TOMS
+ \def\@journalName{ACM Transactions on Mathematical Software}%
+ \def\@journalNameShort{ACM Trans. Math. Softw.}%
+ \def\@permissionCodeOne{0098-3500}%
+\or % TOPC
+ \def\@journalName{ACM Transactions on Parallel Computing}%
+ \def\@journalNameShort{ACM Trans. Parallel Comput.}%
+ \def\@permissionCodeOne{1539-9087}%
+\or % TOPS
+ \def\@journalName{ACM Transactions on Privacy and Security}%
+ \def\@journalNameShort{ACM Trans. Priv. Sec.}%
+ \def\@permissionCodeOne{2471-2566}%
+\or % TOPLAS
+ \def\@journalName{ACM Transactions on Programming Languages and Systems}%
+ \def\@journalNameShort{ACM Trans. Program. Lang. Syst.}%
+ \def\@permissionCodeOne{0164-0925}%
+\or % TOS
+ \def\@journalName{ACM Transactions on Storage}%
+ \def\@journalNameShort{ACM Trans. Storage}%
+ \def\@permissionCodeOne{1553-3077}%
+\or % TOSEM
+ \def\@journalName{ACM Transactions on Software Engineering and Methodology}%
+ \def\@journalNameShort{ACM Trans. Softw. Eng. Methodol.}%
+ \def\@permissionCodeOne{1049-331X}%
+\or % TOSN
+ \def\@journalName{ACM Transactions on Sensor Networks}%
+ \def\@journalNameShort{ACM Trans. Sensor Netw.}%
+ \def\@permissionCodeOne{1550-4859}%
+\or % TRETS
+ \def\@journalName{ACM Transactions on Reconfigurable Technology and Systems}%
+ \def\@journalNameShort{ACM Trans. Reconfig. Technol. Syst.}%
+ \def\@permissionCodeOne{1936-7406}%
+\or % TSAS
+ \def\@journalName{ACM Transactions on Spatial Algorithms and Systems}%
+ \def\@journalNameShort{ACM Trans. Spatial Algorithms Syst.}%
+ \def\@permissionCodeOne{2374-0353}%
+\or % TSC
+ \def\@journalName{ACM Transactions on Social Computing}%
+ \def\@journalNameShort{ACM Trans. Soc. Comput.}%
+ \def\@permissionCodeOne{2469-7818}%
+\or % TSLP
+ \def\@journalName{ACM Transactions on Speech and Language Processing}%
+ \def\@journalNameShort{ACM Trans. Speech Lang. Process.}%
+ \def\@permissionCodeOne{1550-4875}%
+\or % TWEB
+ \def\@journalName{ACM Transactions on the Web}%
+ \def\@journalNameShort{ACM Trans. Web}%
+ \def\@permissionCodeOne{1559-1131}%
+\fi
+\ClassInfo{\@classname}{Using journal code \@journalCode}%
+}{%
+ \ClassError{\@classname}{Incorrect journal #1}%
+}%
+\def\acmJournal#1{\setkeys{ACM}{acmJournal=#1}}
+\def\@journalName{}%
+\def\@journalNameShort{\@journalName}%
+\def\@permissionCodeOne{XXXX-XX}%
+\def\@permissionCodeTwo{}%
+\newcommand\acmConference[4][]{%
+ \gdef\acmConference@shortname{#1}%
+ \gdef\acmConference@name{#2}%
+ \gdef\acmConference@date{#3}%
+ \gdef\acmConference@venue{#4}%
+ \ifx\acmConference@shortname\@empty
+ \gdef\acmConference@shortname{#2}%
+ \fi}
+\acmConference[Conference'17]{ACM Conference}{July 2017}{Washington,
+ DC, USA}
+\def\subtitle#1{\def\@subtitle{#1}}
+\subtitle{}
+\newcount\num@authors
+\num@authors=0\relax
+\renewcommand\author[2][]{%
+ \global\advance\num@authors by 1\relax
+ \ifx\addresses\@empty
+ \if@ACM@anonymous
+ \gdef\addresses{\@author{Anonymous Author(s)}}%
+ \gdef\authors{Anonymous Author(s)}%
+ \else
+ \gdef\addresses{\@author{#2}}%
+ \gdef\authors{#2}%
+ \fi
+ \else
+ \if@ACM@anonymous\else
+ \g@addto@macro\addresses{\and\@author{#2}}%
+ \g@addto@macro\authors{\and#2}%
+ \fi
+ \fi
+ \if@ACM@anonymous
+ \ifx\shortauthors\@empty
+ \gdef\shortauthors{Anon.}%
+ \fi
+ \else
+ \def\@tempa{#1}%
+ \ifx\@tempa\@empty
+ \ifx\shortauthors\@empty
+ \gdef\shortauthors{#2}%
+ \else
+ \g@addto@macro\shortauthors{\and#2}%
+ \fi
+ \else
+ \ifx\shortauthors\@empty
+ \gdef\shortauthors{#1}%
+ \else
+ \g@addto@macro\shortauthors{\and#1}%
+ \fi
+ \fi
+ \fi}
+\newcommand{\affiliation}[2][]{%
+ \if@ACM@anonymous\else
+ \g@addto@macro\addresses{\affiliation{#1}{#2}}%
+ \fi}
+\renewcommand{\email}[2][]{%
+ \if@ACM@anonymous\else
+ \g@addto@macro\addresses{\email{#1}{#2}}%
+ \fi}
+\def\@titlenotes{}
+\def\titlenote#1{%
+ \g@addto@macro\@title{\footnotemark}%
+ \if@ACM@anonymous
+ \g@addto@macro\@titlenotes{%
+ \stepcounter{footnote}\footnotetext{Title note}}%
+ \else
+ \g@addto@macro\@titlenotes{\stepcounter{footnote}\footnotetext{#1}}%
+ \fi}
+\def\@subtitlenotes{}
+\def\subtitlenote#1{%
+ \g@addto@macro\@subtitle{\footnotemark}%
+ \if@ACM@anonymous
+ \g@addto@macro\@subtitlenotes{%
+ \stepcounter{footnote}\footnotetext{Subtitle note}}%
+ \else
+ \g@addto@macro\@subtitlenotes{%
+ \stepcounter{footnote}\footnotetext{#1}}%
+ \fi}
+\def\@authornotes{}
+\def\authornote#1{%
+ \if@ACM@anonymous\else
+ \g@addto@macro\addresses{\@authornotemark}
+ \g@addto@macro\@authornotes{%
+ \stepcounter{footnote}\footnotetext{#1}}%
+ \fi}
+\def\acmVolume#1{\def\@acmVolume{#1}}
+\acmVolume{VV}
+\def\acmNumber#1{\def\@acmNumber{#1}}
+\acmNumber{NNN}
+\def\acmArticle#1{\def\@acmArticle{#1}}
+\acmArticle{AA}
+\def\acmArticleSeq#1{\def\@acmArticleSeq{#1}}
+\acmArticleSeq{\@acmArticle}
+\def\acmYear#1{\def\@acmYear{#1}}
+\acmYear{YYYY}
+\def\acmMonth#1{\def\@acmMonth{#1}}
+\acmMonth{MM}
+\def\@acmPubDate{\ifcase\@acmMonth\or
+ January\or February\or March\or April\or May\or June\or
+ July\or August\or September\or October\or November\or
+ December\fi~\@acmYear}
+\def\acmPrice#1{\def\@acmPrice{#1}}
+\acmPrice{15.00}
+\def\acmISBN#1{\def\@acmISBN{#1}}
+\acmISBN{978-x-xxxx-xxxx-x/YY/MM}
+\def\acmDOI#1{\def\@acmDOI{#1}}
+\acmDOI{10.1145/nnnnnnn.nnnnnnn}
+\newif\if@ACM@badge
+\@ACM@badgefalse
+\newlength\@ACM@badge@width
+\setlength\@ACM@badge@width{5pc}
+\newlength\@ACM@title@width
+\newlength\@ACM@badge@skip
+\setlength\@ACM@badge@skip{1pc}
+\newcommand\acmBadgeR[2][]{\@ACM@badgetrue
+ \def\@acmBadgeR@url{#1}%
+ \def\@acmBadgeR@image{#2}}
+\def\@acmBadgeR@url{}
+\def\@acmBadgeR@image{}
+\newcommand\acmBadgeL[2][]{\@ACM@badgetrue
+ \def\@acmBadgeL@url{#1}%
+ \def\@acmBadgeL@image{#2}}
+\def\@acmBadgeL@url{}
+\def\@acmBadgeL@image{}
+\def\startPage#1{\def\@startPage{#1}}
+\startPage{}
+\def\terms#1{\def\@terms{#1}}
+\terms{}
+\def\keywords#1{\def\@keywords{#1}}
+\keywords{}
+\renewenvironment{abstract}{\Collect@Body\@saveabstract}{}
+\long\def\@saveabstract#1{\long\gdef\@abstract{#1}}
+\@saveabstract{}
+\long\def\@lempty{}
+\define@boolkey+{@ACM@topmatter@}[@ACM@]{printcss}[true]{%
+ \if@ACM@printcss
+ \ClassInfo{\@classname}{Printing CSS}%
+ \else
+ \ClassInfo{\@classname}{Suppressing CSS}%
+ \fi}{\ClassError{\@classname}{printcss must be true or false}}
+\define@boolkey+{@ACM@topmatter@}[@ACM@]{printbib}[true]{%
+ \if@ACM@printcss
+ \ClassInfo{\@classname}{Printing bibformat}%
+ \else
+ \ClassInfo{\@classname}{Suppressing bibformat}%
+ \fi}{\ClassError{\@classname}{printbib must be true or false}}
+\def\settopmatter#1{\setkeys{@ACM@topmatter@}{#1}}
+\settopmatter{printcss=true}
+\if@ACM@manuscript
+ \settopmatter{printbib=false}
+\else
+ \if@ACM@journal
+ \settopmatter{printbib=true}
+ \else
+ \settopmatter{printbib=false}
+ \fi
+\fi
+\def\@received{}
+\newcommand\received[2][]{\def\@tempa{#1}%
+ \ifx\@tempa\@empty
+ \ifx\@received\@empty
+ \gdef\@received{Received #2}%
+ \else
+ \g@addto@macro{\@received}{; revised #2}%
+ \fi
+ \else
+ \ifx\@received\@empty
+ \gdef\@received{#1 #2}%
+ \else
+ \g@addto@macro{\@received}{; #1 #2}%
+ \fi
+ \fi}
+\AtEndDocument{%
+ \ifx\@received\@empty\else
+ \par\bigskip\noindent\small\normalfont\@received\par
+ \fi}
+\RequirePackage{comment}
+\excludecomment{CCSXML}
+\let\@concepts\@empty
+\newcommand\ccsdesc[2][100]{%
+ \ccsdesc@parse#1~#2~}
+\def\ccsdesc@parse#1~#2~#3~{%
+ \expandafter\ifx\csname CCS@#2\endcsname\relax
+ \expandafter\gdef\csname CCS@#2\endcsname{\textbullet\textbf{#2} $\to$ }%
+ \g@addto@macro{\@concepts}{\csname CCS@#2\endcsname}\fi
+ \expandafter\g@addto@macro\expandafter{\csname CCS@#2\endcsname}{%
+ \ifnum#1>499\textbf{#3; }\else
+ \ifnum#1>299\textit{#3; }\else
+ #3; \fi\fi}}
+\newif\if@printcopyright
+\@printcopyrighttrue
+\newif\if@printpermission
+\@printpermissiontrue
+\newif\if@acmowned
+\@acmownedtrue
+\define@choicekey*{ACM@}{acmcopyrightmode}[%
+ \acm@copyrightinput\acm@copyrightmode]{none,acmcopyright,acmlicensed,%
+ rightsretained,usgov,usgovmixed,cagov,cagovmixed,%
+ licensedusgovmixed,licensedcagovmixed,othergov,licensedothergov}{%
+ \@printpermissiontrue
+ \@printcopyrighttrue
+ \@acmownedtrue
+ \ifnum\acm@copyrightmode=0\relax % none
+ \@printpermissionfalse
+ \@printcopyrightfalse
+ \@acmownedfalse
+ \fi
+ \ifnum\acm@copyrightmode=2\relax % acmlicensed
+ \@acmownedfalse
+ \fi
+ \ifnum\acm@copyrightmode=3\relax % rightsretained
+ \@acmownedfalse
+ \fi
+ \ifnum\acm@copyrightmode=4\relax % usgov
+ \@printpermissiontrue
+ \@printcopyrightfalse
+ \@acmownedfalse
+ \fi
+ \ifnum\acm@copyrightmode=6\relax % cagov
+ \@acmownedfalse
+ \fi
+ \ifnum\acm@copyrightmode=8\relax % licensedusgovmixed
+ \@acmownedfalse
+ \fi
+ \ifnum\acm@copyrightmode=9\relax % licensedcagovmixed
+ \@acmownedfalse
+ \fi
+ \ifnum\acm@copyrightmode=10\relax % othergov
+ \@acmownedtrue
+ \fi
+ \ifnum\acm@copyrightmode=11\relax % licensedothergov
+ \@acmownedfalse
+ \@printcopyrightfalse
+ \fi}
+\def\setcopyright#1{\setkeys{ACM@}{acmcopyrightmode=#1}}
+\setcopyright{acmcopyright}
+\def\@copyrightowner{%
+ \ifcase\acm@copyrightmode\relax % none
+ \or % acmcopyright
+ ACM\@.
+ \or % acmlicensed
+ Copyright held by the owner/author(s). Publication rights licensed to
+ ACM\@.
+ \or % rightsretained
+ Copyright held by the owner/author(s).
+ \or % usgov
+ \or % usgovmixed
+ ACM\@.
+ \or % cagov
+ Crown in Right of Canada.
+ \or %cagovmixed
+ ACM\@.
+ \or %licensedusgovmixed
+ Copyright held by the owner/author(s). Publication rights licensed to
+ ACM\@.
+ \or %licensedcagovmixed
+ Copyright held by the owner/author(s). Publication rights licensed to
+ ACM\@.
+ \or % othergov
+ ACM\@.
+ \or % licensedothergov
+ \fi}
+\def\@formatdoi#1{\url{http://dx.doi.org/#1}}
+\def\@copyrightpermission{%
+ \ifcase\acm@copyrightmode\relax % none
+ \or % acmcopyright
+ Permission to make digital or hard copies of all or part of this
+ work for personal or classroom use is granted without fee provided
+ that copies are not made or distributed for profit or commercial
+ advantage and that copies bear this notice and the full citation on
+ the first page. Copyrights for components of this work owned by
+ others than ACM must be honored. Abstracting with credit is
+ permitted. To copy otherwise, or republish, to post on servers or to
+ redistribute to lists, requires prior specific permission
+ and\hspace*{.5pt}/or a fee. Request permissions from
+ permissions@acm.org.
+ \or % acmlicensed
+ Permission to make digital or hard copies of all or part of this
+ work for personal or classroom use is granted without fee provided
+ that copies are not made or distributed for profit or commercial
+ advantage and that copies bear this notice and the full citation on
+ the first page. Copyrights for components of this work owned by
+ others than the author(s) must be honored. Abstracting with credit
+ is permitted. To copy otherwise, or republish, to post on servers
+ or to redistribute to lists, requires prior specific permission
+ and\hspace*{.5pt}/or a fee. Request permissions from
+ permissions@acm.org.
+ \or % rightsretained
+ Permission to make digital or hard copies of part or all of this work
+ for personal or classroom use is granted without fee provided that
+ copies are not made or distributed for profit or commercial advantage
+ and that copies bear this notice and the full citation on the first
+ page. Copyrights for third-party components of this work must be
+ honored. For all other uses, contact the
+ owner\hspace*{.5pt}/author(s).
+ \or % usgov
+ This paper is authored by an employee(s) of the United States
+ Government and is in the public domain. Non-exclusive copying or
+ redistribution is allowed, provided that the article citation is
+ given and the authors and agency are clearly identified as its
+ source.
+ \or % usgovmixed
+ ACM acknowledges that this contribution was authored or co-authored
+ by an employee, or contractor of the national government. As such,
+ the Government retains a nonexclusive, royalty-free right to
+ publish or reproduce this article, or to allow others to do so, for
+ Government purposes only. Permission to make digital or hard copies
+ for personal or classroom use is granted. Copies must bear this
+ notice and the full citation on the first page. Copyrights for
+ components of this work owned by others than ACM must be
+ honored. To copy otherwise, distribute, republish, or post,
+ requires prior specific permission and\hspace*{.5pt}/or a
+ fee. Request permissions from permissions@acm.org.
+ \or % cagov
+ This article was authored by employees of the Government of Canada.
+ As such, the Canadian government retains all interest in the
+ copyright to this work and grants to ACM a nonexclusive,
+ royalty-free right to publish or reproduce this article, or to allow
+ others to do so, provided that clear attribution is given both to
+ the authors and the Canadian government agency employing them.
+ Permission to make digital or hard copies for personal or classroom
+ use is granted. Copies must bear this notice and the full citation
+ on the first page. Copyrights for components of this work owned by
+ others than the Canadain Government must be honored. To copy
+ otherwise, distribute, republish, or post, requires prior specific
+ permission and\hspace*{.5pt}/or a fee. Request permissions from
+ permissions@acm.org.
+ \or % cagovmixed
+ ACM acknowledges that this contribution was co-authored by an
+ affiliate of the national government of Canada. As such, the Crown
+ in Right of Canada retains an equal interest in the copyright.
+ Reprints must include clear attribution to ACM and the author's
+ government agency affiliation. Permission to make digital or hard
+ copies for personal or classroom use is granted. Copies must bear
+ this notice and the full citation on the first page. Copyrights for
+ components of this work owned by others than ACM must be honored.
+ To copy otherwise, distribute, republish, or post, requires prior
+ specific permission and\hspace*{.5pt}/or a fee. Request permissions
+ from permissions@acm.org.
+ \or % licensedusgovmixed
+ Publication rights licensed to ACM\@. ACM acknowledges that this
+ contribution was authored or co-authored by an employee, contractor
+ or affiliate of the United States government. As such, the
+ Government retains a nonexclusive, royalty-free right to publish or
+ reproduce this article, or to allow others to do so, for Government
+ purposes only.
+ \or % licensedcagovmixed
+ Publication rights licensed to ACM\@. ACM acknowledges that this
+ contribution was authored or co-authored by an employee, contractor
+ or affiliate of the national government of Canada. As such, the
+ Government retains a nonexclusive, royalty-free right to publish or
+ reproduce this article, or to allow others to do so, for Government
+ purposes only.
+ \or % othergov
+ ACM acknowledges that this contribution was authored or co-authored
+ by an employee, contractor or affiliate of a national government. As
+ such, the Government retains a nonexclusive, royalty-free right to
+ publish or reproduce this article, or to allow others to do so, for
+ Government purposes only.
+ \or % licensedothergov
+ Publication rights licensed to ACM\@. ACM acknowledges that this
+ contribution was authored or co-authored by an employee, contractor
+ or affiliate of a national government. As such, the Government
+ retains a nonexclusive, royalty-free right to publish or reproduce
+ this article, or to allow others to do so, for Government purposes
+ only.
+ \fi}
+\def\copyrightyear#1{\def\@copyrightyear{#1}}
+\copyrightyear{\@acmYear}
+\def\@teaserfigures{}
+\newenvironment{teaserfigure}{\Collect@Body\@saveteaser}{}
+\long\def\@saveteaser#1{\g@addto@macro\@teaserfigures{\@teaser{#1}}}
+\renewcommand{\thanks}[1]{%
+ \@ifnotempty{#1}{%
+ \if@ACM@anonymous
+ \g@addto@macro\thankses{\thanks{A note}}%
+ \else
+ \g@addto@macro\thankses{\thanks{#1}}%
+ \fi}}
+\newbox\mktitle@bx
+\def\maketitle{%
+ \if@ACM@anonymous
+ % Anonymize omission of \author-s
+ \ifnum\num@authors=0\author{}\fi
+ \fi
+ \begingroup
+ \let\@footnotemark\@footnotemark@nolink
+ \let\@footnotetext\@footnotetext@nolink
+ \renewcommand\thefootnote{\@fnsymbol\c@footnote}%
+ \@topnum\z@ % this prevents figures from falling at the top of page
+ % 1
+ \hsize=\textwidth
+ \def\@makefnmark{\hbox{\@textsuperscript{\@thefnmark}}}
+ \@mktitle\if@ACM@sigchiamode\else\@mkauthors\fi\@mkteasers
+ \@printtopmatter
+ \if@ACM@sigchiamode\@mkauthors\fi
+ \setcounter{footnote}{0}%
+ \def\@makefnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}}
+ \@titlenotes
+ \@subtitlenotes
+ \@authornotes
+ \let\@makefnmark\relax \let\@thefnmark\relax
+ \let\@makefntext\noindent
+ \ifx\@empty\thankses\else
+ \@footnotetext{\def\par{\let\par\@par}\parindent\z@\@setthanks}%
+ \fi
+ \footnotetextcopyrightpermission{\parindent\z@\parskip0.1\baselineskip
+ \if@ACM@authorversion\else
+ \if@printpermission\@copyrightpermission\par\fi
+ \fi
+ \if@ACM@manuscript\else
+ \if@ACM@journal\else % Print the conference short name
+ {\itshape \acmConference@shortname, \acmConference@venue}\par
+ \fi
+ \fi
+ \if@printcopyright
+ \copyright\ \@copyrightyear\ \@copyrightowner\
+ \else
+ \@copyrightyear.\
+ \fi
+ \if@ACM@manuscript
+ Manuscript submitted to ACM\\
+ \else
+ \if@ACM@authorversion
+ This is the author's version of the work. It is posted here for
+ your personal use. Not for redistribution. The definitive Version
+ of Record was published in
+ \if@ACM@journal
+ \emph{\@journalName}%
+ \else
+ \emph{Proceedings of \acmConference@name, \acmConference@date}%
+ \fi
+ \ifx\@acmDOI\@empty
+ .
+ \else
+ , \@formatdoi{\@acmDOI}.
+ \fi\\
+ \else
+ \if@ACM@journal
+ \@permissionCodeOne/\@acmYear/\@acmMonth-ART\@acmArticle\
+ \$\@acmPrice\\
+ \else % Conference
+ \@acmISBN
+ \ifx\@acmPrice\@empty.\else\dots\$\@acmPrice\fi\\
+ \fi
+ \fi
+ \fi
+ DOI: \nolinkurl{\@acmDOI}}%
+ \endgroup
+ \setcounter{footnote}{0}%
+ \@mkabstract
+ \if@ACM@printcss
+ \ifx\@concepts\@empty\else\bgroup
+ {\@specialsection{CCS Concepts}%
+ \@concepts\par}\egroup
+ \fi
+ \fi
+ \if\@terms\@empty\else\bgroup
+ {\@specialsection{General Terms}%
+ \@terms\par}\egroup
+ \fi
+ \ifx\@keywords\@empty\else\bgroup
+ {\if@ACM@journal
+ \@specialsection{Additional Key Words and Phrases}%
+ \else
+ \@specialsection{Keywords}%
+ \fi
+ \@keywords}\par\egroup
+ \fi
+ \andify\authors
+ \andify\shortauthors
+ \global\let\authors=\authors
+ \global\let\shortauthors=\shortauthors
+ \if@ACM@printbib
+ \@mkbibcitation
+ \fi
+ \hypersetup{pdfauthor={\authors},
+ pdftitle={\@title}, pdfkeywords={\@concepts}}%
+ \@printendtopmatter
+ \@afterindentfalse
+ \@afterheading
+}
+\def\@specialsection#1{%
+ \if@ACM@journal
+ \par\medskip\small\noindent#1: %
+ \else
+ \section*{#1}%
+ \fi}
+\def\@printtopmatter{%
+ \ifx\@startPage\@empty
+ \gdef\@startPage{1}%
+ \else
+ \setcounter{page}{\@startPage}%
+ \fi
+ \thispagestyle{firstpagestyle}%
+ \noindent
+ \ifcase\ACM@format@nr
+ \relax % manuscript
+ \box\mktitle@bx\par
+ \noindent\hrulefill\par
+ \or% acmsmall
+ \box\mktitle@bx\par
+ \noindent\hrulefill\par
+ \or % acmlarge
+ \box\mktitle@bx\par
+ \noindent\hrulefill\par
+ \or % acmtog
+ \twocolumn[\box\mktitle@bx]%
+ \or % sigconf
+ \twocolumn[\box\mktitle@bx]%
+ \or % siggraph
+ \twocolumn[\box\mktitle@bx]%
+ \or % sigplan
+ \twocolumn[\box\mktitle@bx]%
+ \or % sigchi
+ \twocolumn[\box\mktitle@bx]%
+ \or % sigchi-a
+ \par\box\mktitle@bx\par\bigskip
+ \if@ACM@badge
+ \marginpar{\noindent
+ \ifx\@acmBadgeL@image\@empty\else
+ \href{\@acmBadgeL@url}{%
+ \includegraphics[width=\@ACM@badge@width]{\@acmBadgeL@image}}%
+ \hskip\@ACM@badge@skip
+ \fi
+ \ifx\@acmBadgeR@image\@empty\else
+ \href{\@acmBadgeR@url}{%
+ \includegraphics[width=\@ACM@badge@width]{\@acmBadgeR@image}}%
+ \fi}%
+ \fi
+ \fi
+}
+\def\@mktitle{%
+ \ifcase\ACM@format@nr
+ \relax % manuscript
+ \@mktitle@i
+ \or% acmsmall
+ \@mktitle@i
+ \or % acmlarge
+ \@mktitle@i
+ \or % acmtog
+ \@mktitle@i
+ \or % sigconf
+ \@mktitle@iii
+ \or % siggraph
+ \@mktitle@iii
+ \or % sigplan
+ \@mktitle@iii
+ \or % sigchi
+ \@mktitle@iii
+ \or % sigchi-a
+ \@mktitle@iv
+ \fi
+}
+\def\@titlefont{%
+ \ifcase\ACM@format@nr
+ \relax % manuscript
+ \LARGE\bfseries\sffamily
+ \or% acmsmall
+ \LARGE\bfseries\sffamily
+ \or % acmlarge
+ \LARGE\bfseries\sffamily
+ \or % acmtog
+ \Huge\sffamily
+ \or % sigconf
+ \Huge\sffamily\bfseries
+ \or % siggraph
+ \Huge\sffamily\bfseries
+ \or % sigplan
+ \Huge\sffamily\bfseries
+ \or % sigchi
+ \Huge\sffamily\bfseries
+ \or % sigchi-a
+ \Huge\bfseries
+ \fi}
+\def\@subtitlefont{%
+ \ifcase\ACM@format@nr
+ \relax % manuscript
+ \mdseries
+ \or% acmsmall
+ \mdseries
+ \or % acmlarge
+ \mdseries
+ \or % acmtog
+ \LARGE
+ \or % sigconf
+ \LARGE\mdseries
+ \or % siggraph
+ \LARGE\mdseries
+ \or % sigplan
+ \LARGE\mdseries
+ \or % sigchi
+ \LARGE\mdseries
+ \or % sigchi-a
+ \mdseries
+ \fi}
+\def\@mktitle@i{\hsize=\textwidth
+ \@ACM@title@width=\hsize
+ \ifx\@acmBadgeL@image\@empty\else
+ \advance\@ACM@title@width by -\@ACM@badge@width
+ \advance\@ACM@title@width by -\@ACM@badge@skip
+ \fi
+ \ifx\@acmBadgeR@image\@empty\else
+ \advance\@ACM@title@width by -\@ACM@badge@width
+ \advance\@ACM@title@width by -\@ACM@badge@skip
+ \fi
+ \setbox\mktitle@bx=\vbox{\noindent\@titlefont
+ \ifx\@acmBadgeL@image\@empty\else
+ \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeL@url}{%
+ \includegraphics[width=\@ACM@badge@width]{\@acmBadgeL@image}}}%
+ \hskip\@ACM@badge@skip
+ \fi
+ \parbox[t]{\@ACM@title@width}{\raggedright
+ \@titlefont\noindent
+ \@title
+ \ifx\@subtitle\@empty\else
+ \par\noindent{\@subtitlefont\@subtitle}
+ \fi}%
+ \ifx\@acmBadgeR@image\@empty\else
+ \hskip\@ACM@badge@skip
+ \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeR@url}{%
+ \includegraphics[width=\@ACM@badge@width]{\@acmBadgeR@image}}}%
+ \fi
+ \par\bigskip}}%
+\def\@mktitle@iii{\hsize=\textwidth
+ \setbox\mktitle@bx=\vbox{\@titlefont\centering
+ \@ACM@title@width=\hsize
+ \if@ACM@badge
+ \advance\@ACM@title@width by -2\@ACM@badge@width
+ \advance\@ACM@title@width by -2\@ACM@badge@skip
+ \parbox[b]{\@ACM@badge@width}{\strut
+ \ifx\@acmBadgeL@image\@empty\else
+ \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeL@url}{%
+ \includegraphics[width=\@ACM@badge@width]{\@acmBadgeL@image}}}%
+ \fi}%
+ \hskip\@ACM@badge@skip
+ \fi
+ \parbox[t]{\@ACM@title@width}{\centering\@titlefont
+ \@title
+ \ifx\@subtitle\@empty\else
+ \par\noindent{\@subtitlefont\@subtitle}
+ \fi
+ }%
+ \if@ACM@badge
+ \hskip\@ACM@badge@skip
+ \parbox[b]{\@ACM@badge@width}{\strut
+ \ifx\@acmBadgeR@image\@empty\else
+ \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeR@url}{%
+ \includegraphics[width=\@ACM@badge@width]{\@acmBadgeR@image}}}%
+ \fi}%
+ \fi
+ \par\bigskip}}%
+\def\@mktitle@iv{\hsize=\textwidth
+ \setbox\mktitle@bx=\vbox{\raggedright\leftskip5pc\@titlefont
+ \noindent\leavevmode\leaders\hrule height 2pt\hfill\kern0pt\par
+ \noindent\@title
+ \ifx\@subtitle\@empty\else
+ \par\noindent\@subtitlefont\@subtitle
+ \fi
+ \par\bigskip}}%
+\def\@mkauthors{\begingroup
+ \hsize=\textwidth
+ \ifcase\ACM@format@nr
+ \relax % manuscript
+ \@mkauthors@i
+ \or% acmsmall
+ \@mkauthors@i
+ \or % acmlarge
+ \@mkauthors@i
+ \or % acmtog
+ \@mkauthors@ii
+ \or % sigconf
+ \@mkauthors@iii
+ \or % siggraph
+ \@mkauthors@iii
+ \or % sigplan
+ \@mkauthors@iii
+ \or % sigchi
+ \@mkauthors@iii
+ \or % sigchi-a
+ \@mkauthors@iv
+ \fi
+ \endgroup
+}
+\def\@authorfont{\Large\sffamily}
+\def\@affiliationfont{\normalsize\normalfont}
+\ifcase\ACM@format@nr
+\relax % manuscript
+\or% acmsmall
+\or % acmlarge
+\or % acmtog
+ \def\@authorfont{\LARGE\sffamily}
+ \def\@affiliationfont{\large}
+\or % sigconf
+ \def\@authorfont{\LARGE}
+ \def\@affiliationfont{\large}
+\or % siggraph
+ \def\@authorfont{\normalsize\normalfont}
+ \def\@affiliationfont{\normalsize\normalfont}
+\or % sigplan
+\or % sigchi
+ \def\@authorfont{\bfseries}
+ \def\@affiliationfont{\mdseries}
+\or % sigchi-a
+ \def\@authorfont{\bfseries}
+ \def\@affiliationfont{\mdseries}
+\fi
+\def\@mkauthors@i{%
+ \def\@currentauthors{}%
+ \def\and{%
+ \andify\@currentauthors\par\noindent
+ \@currentauthors\def\@currentauthors{}}%
+ \def\@author##1{%
+ \ifx\@currentauthors\@empty
+ \gdef\@currentauthors{\@authorfont\MakeUppercase{##1}}%
+ \else
+ \g@addto@macro{\@currentauthors}{\and\MakeUppercase{##1}}%
+ \fi
+ \def\and{}}%
+ \def\email##1##2{}%
+ \def\affiliation##1##2{%
+ \ifx\@currentauthors\@empty\else
+ \andify\@currentauthors\par\noindent\@currentauthors
+ \fi
+ \def\@currentauthors{}\def\@tempa{##2}\ifx\@tempa\@empty\else
+ \unskip, {\@affiliationfont##2}\fi\def\and{\par\noindent}}%
+ \global\setbox\mktitle@bx=\vbox{\noindent\box\mktitle@bx\par\medskip
+ \noindent\addresses\andify\@currentauthors\par\noindent\@currentauthors\par\medskip}%
+}
+\def\@mkauthors@ii{\par\medskip
+ \def\@currentauthors{}%
+ \def\and{}%
+ \def\@author##1{%
+ \ifx\@currentauthors\@empty
+ \gdef\@currentauthors{\@authorfont
+ \MakeUppercase{##1}}%
+ \else
+ \g@addto@macro{\@currentauthors}{\and\MakeUppercase{##1}}%
+ \fi\def\and{}}%
+ \def\email##1##2{}%
+ \def\affiliation##1##2{%
+ \ifx\@currentauthors\@empty\else
+ \andify\@currentauthors\par\noindent\@currentauthors
+ \fi
+ \def\@currentauthors{}\def\@tempa{##2}\ifx\@tempa\@empty\else
+ \par\noindent{\@affiliationfont##2}\fi
+ \def\and{\par\noindent{\@affiliationfont and}\par
+ \noindent\def\and{}}}%
+ \global\setbox\mktitle@bx=\vbox{\noindent\box\mktitle@bx\par\medskip
+ \noindent\addresses\andify\@currentauthors\par\noindent\@currentauthors\par\medskip}%
+}
+\newbox\author@bx
+\newdimen\author@bx@wd
+\newskip\author@bx@sep
+\author@bx@sep=1pc\relax
+\def\@mkauthors@iii{%
+ \author@bx@wd=\textwidth\relax
+ \advance\author@bx@wd by -\author@bx@sep\relax
+ \ifcase\num@authors
+ \relax % 0?
+ \or % 1=one author per row
+ \or % 2=two authors per row
+ \divide\author@bx@wd by \num@authors\relax
+ \or % 3=three authors per row
+ \divide\author@bx@wd by \num@authors\relax
+ \or % 4=two authors per row (!)
+ \divide\author@bx@wd by 2\relax
+ \else % three authors per row
+ \divide\author@bx@wd by 3\relax
+ \fi
+ \advance\author@bx@wd by -\author@bx@sep\relax
+ \gdef\@currentauthors{}%
+ \gdef\@currentaffiliation{}%
+ \def\@author##1{\ifx\@currentauthors\@empty
+ \gdef\@currentauthors{\par##1}%
+ \else
+ \g@addto@macro\@currentauthors{\quad##1}%
+ \fi}%
+ \def\email##1##2{\ifx\@currentaffiliation\@empty
+ \gdef\@currentaffiliation{\nolinkurl{##2}}%
+ \else
+ \g@addto@macro\@currentaffiliation{\par\nolinkurl{##2}}%
+ \fi}%
+ \def\affiliation##1##2{\ifx\@currentaffiliation\@empty
+ \gdef\@currentaffiliation{##2}%
+ \else
+ \g@addto@macro\@currentaffiliation{\par##2}%
+ \fi}%
+ \def\and{\bgroup\hsize=\author@bx@wd\def\and{\quad}%
+ \global\setbox\author@bx=\vtop{\centering
+ \@authorfont\@currentauthors\par\@affiliationfont
+ \@currentaffiliation}\egroup
+ \box\author@bx\hspace{\author@bx@sep}%
+ \gdef\@currentauthors{}%
+ \gdef\@currentaffiliation{}}%
+ \hsize=\textwidth
+ \global\setbox\mktitle@bx=\vbox{\noindent
+ \box\mktitle@bx\par\medskip\leavevmode
+ \lineskip=1pc\relax\centering\hspace*{-1em}%
+ \addresses\and\par\bigskip}}
+\def\@mkauthors@iv{%
+ \author@bx@wd=\columnwidth\relax
+ \advance\author@bx@wd by -\author@bx@sep\relax
+ \ifcase\num@authors
+ \relax % 0?
+ \or % 1=one author per row
+ \else % 2=two authors per row
+ \divide\author@bx@wd by 2\relax
+ \fi
+ \advance\author@bx@wd by -\author@bx@sep\relax
+ \gdef\@currentauthors{}%
+ \gdef\@currentaffiliation{}%
+ \def\@author##1{\ifx\@currentauthors\@empty
+ \gdef\@currentauthors{\par##1}%
+ \else
+ \g@addto@macro\@currentauthors{\quad##1}%
+ \fi}%
+ \def\email##1##2{\ifx\@currentaffiliation\@empty
+ \gdef\@currentaffiliation{\nolinkurl{##2}}%
+ \else
+ \g@addto@macro\@currentaffiliation{\par\nolinkurl{##2}}%
+ \fi}%
+ \def\affiliation##1##2{\ifx\@currentaffiliation\@empty
+ \gdef\@currentaffiliation{##2}%
+ \else
+ \g@addto@macro\@currentaffiliation{\par##2}%
+ \fi}%
+ \def\and{\bgroup\hsize=\author@bx@wd\def\and{\quad}%
+ \global\setbox\author@bx=\vtop{\raggedright
+ \@authorfont\@currentauthors\par\@affiliationfont
+ \@currentaffiliation}\egroup
+ \box\author@bx\hskip\author@bx@sep
+ \gdef\@currentauthors{}%
+ \gdef\@currentaffiliation{}}%
+ \bgroup\hsize=\columnwidth
+ \par\raggedright\leftskip=\z@
+ \lineskip=1pc\noindent\addresses\and\par\bigskip\egroup}
+\def\@authornotemark{\g@addto@macro\@currentauthors{\footnotemark}}
+\def\@mkteasers{%
+ \ifx\@teaserfigures\@empty\else
+ \def\@teaser##1{\par\bigskip\bgroup
+ \captionsetup{type=figure}##1\egroup\par}
+ \global\setbox\mktitle@bx=\vbox{\noindent\box\mktitle@bx\par
+ \noindent\@teaserfigures\par\medskip}%
+ \fi}
+\def\@setaddresses{}
+\def\@mkabstract{\bgroup
+ \ifx\@abstract\@lempty\else
+ {\if@ACM@journal
+ \small\noindent
+ \else
+ \section*{ABSTRACT}%
+ \fi
+ \@abstract\par}%
+ \fi\egroup}
+\def\@mkbibcitation{\bgroup
+ \par\medskip\small\noindent{\bfseries ACM Reference format:}\par
+ \noindent\authors. \@acmYear. \@title. \textit{\@journalNameShort}
+ \@acmVolume, \@acmNumber, Article~\@acmArticle\
+ (\@acmPubDate), \ref{TotPages}~pages.\par
+ \noindent DOI: \nolinkurl{\@acmDOI}
+\par\egroup}
+\def\@printendtopmatter{\par\medskip
+ \ifcase\ACM@format@nr
+ \relax % manuscript
+ \noindent\hrulefill\par\medskip
+ \or% acmsmall
+ \noindent\hrulefill\par\medskip
+ \or % acmlarge
+ \noindent\hrulefill\par\medskip
+ \or % acmtog
+ \par\bigskip
+ \or % sigconf
+ \par\bigskip
+ \or % siggraph
+ \par\bigskip
+ \or % sigplan
+ \par\bigskip
+ \or % sigchi
+ \par\bigskip
+ \or % sigchi-a
+ \fi
+}
+\def\@setthanks{\long\def\thanks##1{\par##1\@addpunct.}\thankses}
+\RequirePackage{fancyhdr}
+\if@ACM@review
+ \newsavebox{\ACM@linecount@bx}
+ \savebox{\ACM@linecount@bx}[4em][t]{\parbox[t]{4em}{%
+ \newlength\ACM@linecount@bxht\setlength{\ACM@linecount@bxht}{-\baselineskip}
+ \@tempcnta\@ne\relax
+ \loop{\color{ACMRed}\scriptsize\the\@tempcnta}\\
+ \advance\@tempcnta by \@ne
+ \addtolength{\ACM@linecount@bxht}{\baselineskip}
+ \ifdim\ACM@linecount@bxht<\textheight\repeat}}
+\fi
+\def\ACM@linecount{%
+ \if@ACM@review
+ \begin{picture}(0,0)%
+ \put(-26,-22){\usebox{\ACM@linecount@bx}}%
+ \end{picture}%
+ \fi}
+\fancypagestyle{standardpagestyle}{%
+ \fancyhf{}%
+ \renewcommand{\headrulewidth}{\z@}%
+ \renewcommand{\footrulewidth}{\z@}%
+ \ifcase\ACM@format@nr
+ \relax % manuscript
+ \fancyhead[RE]{\thepage}%
+ \fancyhead[LO]{\ACM@linecount\thepage}%
+ \fancyhead[LE]{\ACM@linecount\shortauthors}%
+ \fancyhead[RO]{\shorttitle}%
+ \fancyfoot[RO,LE]{\footnotesize Manuscript submitted to ACM}%
+ \or% acmsmall
+ \fancyhead[RE]{\sffamily\@acmArticle:\thepage}%
+ \fancyhead[LO]{\ACM@linecount\sffamily\@acmArticle:\thepage}%
+ \fancyhead[LE]{\ACM@linecount\sffamily\shortauthors}%
+ \fancyhead[RO]{\sffamily\shorttitle}%
+ \fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No.
+ \@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}%
+ \or % acmlarge
+ \fancyhead[LE]{\ACM@linecount\sffamily
+ \@acmArticle:\thepage\quad\textbullet\quad\shortauthors}%
+ \fancyhead[LO]{\ACM@linecount}%
+ \fancyhead[RO]{\sffamily
+ \shorttitle\quad\textbullet\quad\@acmArticle:\thepage}%
+ \fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No.
+ \@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}%
+ \or % acmtog
+ \fancyhead[LE]{\ACM@linecount\sffamily
+ \@acmArticle:\thepage\quad\textbullet\quad\shortauthors}%
+ \fancyhead[LO]{\ACM@linecount}%
+ \fancyhead[RO]{\sffamily
+ \shorttitle\quad\textbullet\quad\@acmArticle:\thepage}%
+ \fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No.
+ \@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}%
+ \else % Proceedings
+ \fancyfoot[R]{\footnotesize\thepage}%
+ \fancyhead[L]{\ACM@linecount}%
+ \fi
+}
+\pagestyle{standardpagestyle}
+\newdimen\@folio@wd
+\@folio@wd=\z@
+\newdimen\@folio@ht
+\@folio@ht=\z@
+\newdimen\@folio@voffset
+\@folio@voffset=\z@
+\def\@folio@max{1}
+\ifcase\ACM@format@nr
+\relax % manuscript
+\or% acmsmall
+ \@folio@wd=45.75pt\relax
+ \@folio@ht=1.25in\relax
+ \@folio@voffset=.2in\relax
+ \def\@folio@max{8}
+\or % acmlarge
+ \@folio@wd=43.25pt\relax
+ \@folio@ht=79pt\relax
+ \@folio@voffset=.55in\relax
+ \def\@folio@max{10}
+\fi
+\def\@folioblob{\@tempcnta=\@acmArticleSeq\relax
+ \loop
+ \ifnum\@tempcnta>\@folio@max\relax
+ \advance\@tempcnta by - \@folio@max
+ \repeat
+ \advance\@tempcnta by -1\relax
+ \@tempdima=\@folio@ht\relax
+ \multiply\@tempdima by \the\@tempcnta\relax
+ \advance\@tempdima by -\@folio@voffset\relax
+ \begin{picture}(0,0)
+ \makebox[\z@]{\raisebox{-\@tempdima}{%
+ \rlap{%
+ \raisebox{-0.45\@folio@ht}[\z@][\z@]{%
+ \rule{\@folio@wd}{\@folio@ht}}}%
+ \parbox{\@folio@wd}{%
+ \centering
+ \textcolor{white}{\LARGE\bfseries\sffamily\@acmArticle}}}}
+ \end{picture}}
+
+\fancypagestyle{firstpagestyle}{%
+ \fancyhf{}%
+ \renewcommand{\headrulewidth}{\z@}%
+ \renewcommand{\footrulewidth}{\z@}%
+ \ifcase\ACM@format@nr
+ \relax % manuscript
+ \fancyhead[L]{\ACM@linecount}%
+ \fancyfoot[RO,LE]{\small\thepage}%
+ \fancyfoot[RE,LO]{\footnotesize Manuscript submitted to ACM}%
+ \or% acmsmall
+ \fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No.
+ \@acmNumber, Article \@acmArticle. Publication date:
+ \@acmPubDate.}%
+ \fancyhead[LE]{\ACM@linecount\@folioblob}%
+ \fancyhead[LO]{\ACM@linecount}%
+ \fancyhead[RO]{\@folioblob}%
+ \fancyheadoffset[RO,LE]{0.6\@folio@wd}%
+ \or % acmlarge
+ \fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No.
+ \@acmNumber, Article \@acmArticle. Publication date:
+ \@acmPubDate.}%
+ \fancyhead[RO]{\@folioblob}%
+ \fancyhead[LE]{\ACM@linecount\@folioblob}%
+ \fancyhead[LO]{\ACM@linecount}%
+ \fancyheadoffset[RO,LE]{1.4\@folio@wd}%
+ \or % acmtog
+ \fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No.
+ \@acmNumber, Article \@acmArticle. Publication date:
+ \@acmPubDate.}%
+ \fancyhead[L]{\ACM@linecount}%
+ \else % Conference proceedings
+ \fancyhead[L]{\ACM@linecount}%
+ \fancyfoot[R]{\footnotesize\thepage}%
+ \fi
+}
+\def\@secfont{\sffamily\bfseries\raggedright\MakeUppercase}
+\def\@subsecfont{\sffamily\bfseries\raggedright}
+\def\@subsubsecfont{\sffamily\itshape}
+\def\@parfont{\itshape}
+\setcounter{secnumdepth}{3}
+\ifcase\ACM@format@nr
+\relax % manuscript
+\or% acmsmall
+\or % acmlarge
+ \def\@secfont{\sffamily\large\raggedright\MakeUppercase}
+ \def\@subsecfont{\sffamily\large\raggedright}
+\or % acmtog
+ \def\@secfont{\sffamily\large\raggedright\MakeUppercase}
+ \def\@subsecfont{\sffamily\large\raggedright}
+\or % sigconf
+ \def\@secfont{\bfseries\Large\raggedright\MakeUppercase}
+ \def\@subsecfont{\bfseries\Large\raggedright}
+\or % siggraph
+ \def\@secfont{\bfseries\sffamily\Large\raggedright\MakeUppercase}
+ \def\@subsecfont{\bfseries\sffamily\Large\raggedright}
+\or % sigplan
+ \def\@secfont{\bfseries\Large\raggedright\MakeUppercase}
+ \def\@subsecfont{\bfseries\Large\raggedright}
+\or % sigchi
+ \setcounter{secnumdepth}{1}
+ \def\@secfont{\bfseries\sffamily\raggedright\MakeUppercase}
+ \def\@subsecfont{\bfseries\sffamily\raggedright}
+\or % sigchi-a
+ \setcounter{secnumdepth}{0}
+ \def\@secfont{\bfseries\sffamily\raggedright\MakeUppercase}
+ \def\@subsecfont{\bfseries\sffamily\raggedright}
+\fi
+\def\@adddotafter#1{#1\@addpunct{.}}
+\renewcommand\section{\@startsection{section}{1}{\z@}%
+ {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}%
+ {.25\baselineskip}%
+ {\@secfont}}
+\renewcommand\subsection{\@startsection{subsection}{2}{\z@}%
+ {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}%
+ {.25\baselineskip}%
+ {\@subsecfont}}
+\renewcommand\subsubsection{\@startsection{subsubsection}{3}{10pt}%
+ {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
+ {-3.5\p@}%
+ {\@subsubsecfont\@adddotafter}}
+\renewcommand\paragraph{\@startsection{paragraph}{4}{\parindent}%
+ {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
+ {-3.5\p@}%
+ {\@parfont\@adddotafter}}
+\renewcommand\part{\@startsection{part}{9}{\z@}%
+ {-10\p@ \@plus -4\p@ \@minus -2\p@}%
+ {4\p@}%
+ {\@parfont}}
+\newtheoremstyle{acmplain}%
+ {.5\baselineskip\@plus.2\baselineskip
+ \@minus.2\baselineskip}% space above
+ {.5\baselineskip\@plus.2\baselineskip
+ \@minus.2\baselineskip}% Space below
+ {\itshape}% body font
+ {\parindent}% indent amount
+ {\scshape}% head font
+ {.}% punctuation after head
+ {.5em}% spacing after head
+ {\thmname{#1}\thmnumber{ #2}\thmnote{ (#3)}}% head spec
+\newtheoremstyle{acmdefinition}%
+ {.5\baselineskip\@plus.2\baselineskip
+ \@minus.2\baselineskip}% space above
+ {.5\baselineskip\@plus.2\baselineskip
+ \@minus.2\baselineskip}% Space below
+ {\normalfont}% body font
+ {\parindent}% indent amount
+ {\itshape}% head font
+ {.}% punctuation after head
+ {.5em}% spacing after head
+ {\thmname{#1}\thmnumber{ #2}\thmnote{ \itshape(#3)}}% head spec
+\theoremstyle{acmplain}
+\newtheorem{theorem}{Theorem}[section]
+\newtheorem{conjecture}[theorem]{Conjecture}
+\newtheorem{proposition}[theorem]{Proposition}
+\newtheorem{lemma}[theorem]{Lemma}
+\newtheorem{corollary}[theorem]{Corollary}
+\theoremstyle{acmdefinition}
+\newtheorem{example}[theorem]{Example}
+\newtheorem{definition}[theorem]{Definition}
+\renewenvironment{proof}[1][\proofname]{\par
+ \pushQED{\qed}%
+ \normalfont \topsep6\p@\@plus6\p@\relax
+ \trivlist
+ \item[\indent\hskip\labelsep
+ \scshape
+ #1\@addpunct{.}]\ignorespaces
+}{%
+ \popQED\endtrivlist\@endpefalse
+}
+\if@ACM@screen
+ \includecomment{screenonly}
+ \excludecomment{printonly}
+\else
+ \excludecomment{screenonly}
+ \includecomment{printonly}
+\fi
+\if@ACM@anonymous
+ \excludecomment{anonsuppress}
+\else
+ \includecomment{anonsuppress}
+\fi
+\normalsize\normalfont
+\endinput
+%%
+%% End of file `acmart.cls'.
diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check
index b6f31bc728f..112f311c9e3 100755
--- a/Master/tlpkg/bin/tlpkg-ctan-check
+++ b/Master/tlpkg/bin/tlpkg-ctan-check
@@ -25,7 +25,7 @@ my @TLP_working = qw(
a0poster a2ping a4wide a5comb
aastex abbr abc abntex2 abraces abstract abstyles
academicons accanthis accfonts achemso
- acmconf acro acronym acroterm
+ acmart acmconf acro acronym acroterm
active-conf actuarialangle
addlines adfathesis adforn adhocfilelist
adjmulticol adfsymbols adjustbox adobemapping
diff --git a/Master/tlpkg/tlpsrc/acmart.tlpsrc b/Master/tlpkg/tlpsrc/acmart.tlpsrc
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/Master/tlpkg/tlpsrc/acmart.tlpsrc
diff --git a/Master/tlpkg/tlpsrc/collection-publishers.tlpsrc b/Master/tlpkg/tlpsrc/collection-publishers.tlpsrc
index 830b4ea7ffc..3292981e964 100644
--- a/Master/tlpkg/tlpsrc/collection-publishers.tlpsrc
+++ b/Master/tlpkg/tlpsrc/collection-publishers.tlpsrc
@@ -7,6 +7,7 @@ depend IEEEconf
depend IEEEtran
depend aastex
depend abntex2
+depend acmart
depend acmconf
depend active-conf
depend adfathesis