From bf760b325031f8ce68d85cc4f6649883325c19c8 Mon Sep 17 00:00:00 2001 From: aiju Date: Mon, 18 Jul 2011 09:37:12 +0200 Subject: [PATCH 1/3] fixed permissions of /bin/nietzsche --- rc/bin/nietzsche | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 rc/bin/nietzsche diff --git a/rc/bin/nietzsche b/rc/bin/nietzsche old mode 100644 new mode 100755 From 11bf57fb2ceb999e314cfbe27a4e123bf846d2c8 Mon Sep 17 00:00:00 2001 From: aiju Date: Mon, 18 Jul 2011 10:12:45 +0200 Subject: [PATCH 2/3] add message on OOM kill, fix issue #70 --- sys/src/9/port/proc.c | 1 + 1 file changed, 1 insertion(+) diff --git a/sys/src/9/port/proc.c b/sys/src/9/port/proc.c index 2064cf761..de08fe72d 100644 --- a/sys/src/9/port/proc.c +++ b/sys/src/9/port/proc.c @@ -1393,6 +1393,7 @@ procctl(Proc *p) switch(p->procctl) { case Proc_exitbig: spllo(); + pprint("Killed: Insufficient physical memory\n"); pexit("Killed: Insufficient physical memory", 1); case Proc_exitme: From 8c4c1f39f4e369d7c590c9d119f1150a2215e56d Mon Sep 17 00:00:00 2001 From: aiju Date: Mon, 18 Jul 2011 11:01:22 +0200 Subject: [PATCH 3/3] added /sys/doc --- sys/doc/8½/8½.ms | 829 + sys/doc/8½/8½.ps | 16397 ++++++++ sys/doc/8½/fig1.ps | 7508 ++++ sys/doc/8½/mkfile | 9 + sys/doc/9.ms | 2330 ++ sys/doc/9.ps | 17914 ++++++++ sys/doc/acid.ms | 2550 ++ sys/doc/acid.ps | 13619 ++++++ sys/doc/acidpaper.ms | 1324 + sys/doc/acidpaper.ps | 10721 +++++ sys/doc/acme/acme.fig1 | 2801 ++ sys/doc/acme/acme.fig1.gif | Bin 0 -> 24122 bytes sys/doc/acme/acme.fig2 | 1139 + sys/doc/acme/acme.fig2.gif | Bin 0 -> 7740 bytes sys/doc/acme/acme.html | 1466 + sys/doc/acme/acme.ms | 1303 + sys/doc/acme/acme.pdf | Bin 0 -> 117006 bytes sys/doc/acme/acme.ps | 16115 ++++++++ sys/doc/acme/bs | 24 + sys/doc/acme/mkfile | 14 + sys/doc/ape.ms | 537 + sys/doc/ape.ps | 6017 +++ sys/doc/asm.ms | 1431 + sys/doc/asm.ps | 9383 +++++ sys/doc/auth.ms | 2147 + sys/doc/auth.ps | 15060 +++++++ sys/doc/backup.ms | 178 + sys/doc/backup.ps | 4366 ++ sys/doc/cleanps | 13 + sys/doc/colophon.ps | 3752 ++ sys/doc/comp.ms | 1449 + sys/doc/comp.ps | 9932 +++++ sys/doc/compiler.ms | 1157 + sys/doc/compiler.ps | 8239 ++++ sys/doc/contents.html | 332 + sys/doc/contents.ms | 185 + sys/doc/contents.ps | 4490 ++ sys/doc/docfonts | 1 + sys/doc/fonts | 4 + sys/doc/fossil.ms | 1163 + sys/doc/fossil.pdf | Bin 0 -> 62068 bytes sys/doc/fossil.ps | 8521 ++++ sys/doc/fs/fs.pdf | Bin 0 -> 64794 bytes sys/doc/fs/fs.ps | 7772 ++++ sys/doc/fs/mkfile | 33 + sys/doc/fs/p0 | 80 + sys/doc/fs/p1 | 39 + sys/doc/fs/p2 | 179 + sys/doc/fs/p3 | 55 + sys/doc/fs/p4 | 194 + sys/doc/fs/p5 | 39 + sys/doc/fs/p6 | 255 + sys/doc/fs/p7 | 48 + sys/doc/fs/p8 | 38 + sys/doc/fs/p9 | 24 + sys/doc/fs/pa | 76 + sys/doc/il/il.ms | 395 + sys/doc/il/il.pdf | Bin 0 -> 44630 bytes sys/doc/il/il.ps | 5782 +++ sys/doc/il/mkfile | 9 + sys/doc/il/transition.art | 121 + sys/doc/il/transition.fig | 601 + sys/doc/il/transition.pic | 282 + sys/doc/il/xx | 2854 ++ sys/doc/index.html | 332 + sys/doc/lexnames.ms | 1213 + sys/doc/lexnames.ps | 9568 +++++ sys/doc/libmach.ms | 882 + sys/doc/libmach.ps | 7331 ++++ sys/doc/lp.ms | 824 + sys/doc/lp.ps | 7513 ++++ sys/doc/mk.ms | 1533 + sys/doc/mk.ps | 9174 +++++ sys/doc/mkdirlist | 5 + sys/doc/mkfile | 135 + sys/doc/mkfilelist | 5 + sys/doc/mkfiles.ms | 751 + sys/doc/mkfiles.ps | 6312 +++ sys/doc/names.ms | 674 + sys/doc/names.ps | 7351 ++++ sys/doc/net/mkfile | 21 + sys/doc/net/net.ms | 1336 + sys/doc/net/net.pdf | Bin 0 -> 82603 bytes sys/doc/net/net.ps | 10217 +++++ sys/doc/net/tree | 34 + sys/doc/net/tree.pout | 59 + sys/doc/network.art | 93 + sys/doc/network.pic | 117 + sys/doc/plumb.ms | 1429 + sys/doc/plumb.ps | 12232 ++++++ sys/doc/port.ms | 499 + sys/doc/port.ps | 6091 +++ sys/doc/preamble | 3128 ++ sys/doc/prfile | 184 + sys/doc/prog4.ms | 606 + sys/doc/prog4.ps | 6493 +++ sys/doc/ps | 152 + sys/doc/rc.ms | 1589 + sys/doc/rc.ps | 9577 +++++ sys/doc/release3.ms | 193 + sys/doc/release3.ps | 4511 ++ sys/doc/release4.ms | 171 + sys/doc/release4.ps | 4543 ++ sys/doc/sam/fig1.bm | Bin 0 -> 42200 bytes sys/doc/sam/fig1.gif | Bin 0 -> 13382 bytes sys/doc/sam/fig1.png | Bin 0 -> 18498 bytes sys/doc/sam/fig1.ps | 1740 + sys/doc/sam/fig2.bm | Bin 0 -> 6362 bytes sys/doc/sam/fig2.gif | Bin 0 -> 4253 bytes sys/doc/sam/fig2.png | Bin 0 -> 3536 bytes sys/doc/sam/fig2.ps | 294 + sys/doc/sam/fig3.bm | Bin 0 -> 16176 bytes sys/doc/sam/fig3.gif | Bin 0 -> 5042 bytes sys/doc/sam/fig3.png | Bin 0 -> 5271 bytes sys/doc/sam/fig3.ps | 622 + sys/doc/sam/fig4.bm | Bin 0 -> 1620 bytes sys/doc/sam/fig4.gif | Bin 0 -> 2640 bytes sys/doc/sam/fig4.png | Bin 0 -> 1137 bytes sys/doc/sam/fig4.ps | 130 + sys/doc/sam/fig5.pic | 27 + sys/doc/sam/fig6.pic | 38 + sys/doc/sam/fig7.pic | 12 + sys/doc/sam/mkfile | 19 + sys/doc/sam/refs | 166 + sys/doc/sam/sam.html | 3705 ++ sys/doc/sam/sam.ms | 3241 ++ sys/doc/sam/sam.pdf | Bin 0 -> 156123 bytes sys/doc/sam/sam.ps | 23496 +++++++++++ sys/doc/sam/sam.tut | 1784 + sys/doc/sam/sam.tut.out | 4863 +++ sys/doc/sam/sam0.png | Bin 0 -> 38692 bytes sys/doc/sam/sam1.png | Bin 0 -> 19764 bytes sys/doc/sam/sam2.png | Bin 0 -> 4722 bytes sys/doc/sam/sam3.png | Bin 0 -> 4805 bytes sys/doc/sam/sam4.png | Bin 0 -> 1236 bytes sys/doc/sleep.ms | 541 + sys/doc/sleep.ps | 6122 +++ sys/doc/spin.ms | 2519 ++ sys/doc/spin.ps | 14626 +++++++ sys/doc/title | 46 + sys/doc/title.ps | 3757 ++ sys/doc/trademarks.ps | 3933 ++ sys/doc/troff.ms | 3660 ++ sys/doc/troff.pdf | Bin 0 -> 246065 bytes sys/doc/troff.ps | 32212 +++++++++++++++ sys/doc/utf.ms | 1248 + sys/doc/utf.ps | 10591 +++++ sys/doc/venti/Block.gif | Bin 0 -> 3292 bytes sys/doc/venti/Index.gif | Bin 0 -> 2206 bytes sys/doc/venti/LogFormat.gif | Bin 0 -> 6179 bytes sys/doc/venti/ModifiedTree.gif | Bin 0 -> 4325 bytes sys/doc/venti/SimpleTree.gif | Bin 0 -> 2548 bytes sys/doc/venti/bootes.gif | Bin 0 -> 5363 bytes sys/doc/venti/bootes2.gif | Bin 0 -> 5028 bytes sys/doc/venti/emelie.gif | Bin 0 -> 5004 bytes sys/doc/venti/emelie2.gif | Bin 0 -> 4357 bytes sys/doc/venti/mkfile | 8 + sys/doc/venti/probablity.gif | Bin 0 -> 1244 bytes sys/doc/venti/venti.html | 1221 + sys/doc/venti/venti.pdf | Bin 0 -> 139090 bytes sys/doc/venti/venti.ps | 68765 +++++++++++++++++++++++++++++++ 161 files changed, 499560 insertions(+) create mode 100644 sys/doc/8½/8½.ms create mode 100644 sys/doc/8½/8½.ps create mode 100644 sys/doc/8½/fig1.ps create mode 100644 sys/doc/8½/mkfile create mode 100644 sys/doc/9.ms create mode 100644 sys/doc/9.ps create mode 100644 sys/doc/acid.ms create mode 100644 sys/doc/acid.ps create mode 100644 sys/doc/acidpaper.ms create mode 100644 sys/doc/acidpaper.ps create mode 100644 sys/doc/acme/acme.fig1 create mode 100644 sys/doc/acme/acme.fig1.gif create mode 100644 sys/doc/acme/acme.fig2 create mode 100644 sys/doc/acme/acme.fig2.gif create mode 100644 sys/doc/acme/acme.html create mode 100644 sys/doc/acme/acme.ms create mode 100644 sys/doc/acme/acme.pdf create mode 100644 sys/doc/acme/acme.ps create mode 100644 sys/doc/acme/bs create mode 100644 sys/doc/acme/mkfile create mode 100644 sys/doc/ape.ms create mode 100644 sys/doc/ape.ps create mode 100644 sys/doc/asm.ms create mode 100644 sys/doc/asm.ps create mode 100644 sys/doc/auth.ms create mode 100644 sys/doc/auth.ps create mode 100644 sys/doc/backup.ms create mode 100644 sys/doc/backup.ps create mode 100755 sys/doc/cleanps create mode 100644 sys/doc/colophon.ps create mode 100644 sys/doc/comp.ms create mode 100644 sys/doc/comp.ps create mode 100644 sys/doc/compiler.ms create mode 100644 sys/doc/compiler.ps create mode 100644 sys/doc/contents.html create mode 100644 sys/doc/contents.ms create mode 100644 sys/doc/contents.ps create mode 100644 sys/doc/docfonts create mode 100644 sys/doc/fonts create mode 100644 sys/doc/fossil.ms create mode 100644 sys/doc/fossil.pdf create mode 100644 sys/doc/fossil.ps create mode 100644 sys/doc/fs/fs.pdf create mode 100644 sys/doc/fs/fs.ps create mode 100644 sys/doc/fs/mkfile create mode 100644 sys/doc/fs/p0 create mode 100644 sys/doc/fs/p1 create mode 100644 sys/doc/fs/p2 create mode 100644 sys/doc/fs/p3 create mode 100644 sys/doc/fs/p4 create mode 100644 sys/doc/fs/p5 create mode 100644 sys/doc/fs/p6 create mode 100644 sys/doc/fs/p7 create mode 100644 sys/doc/fs/p8 create mode 100644 sys/doc/fs/p9 create mode 100644 sys/doc/fs/pa create mode 100644 sys/doc/il/il.ms create mode 100644 sys/doc/il/il.pdf create mode 100644 sys/doc/il/il.ps create mode 100644 sys/doc/il/mkfile create mode 100644 sys/doc/il/transition.art create mode 100644 sys/doc/il/transition.fig create mode 100644 sys/doc/il/transition.pic create mode 100644 sys/doc/il/xx create mode 100644 sys/doc/index.html create mode 100644 sys/doc/lexnames.ms create mode 100644 sys/doc/lexnames.ps create mode 100644 sys/doc/libmach.ms create mode 100644 sys/doc/libmach.ps create mode 100644 sys/doc/lp.ms create mode 100644 sys/doc/lp.ps create mode 100644 sys/doc/mk.ms create mode 100644 sys/doc/mk.ps create mode 100755 sys/doc/mkdirlist create mode 100644 sys/doc/mkfile create mode 100755 sys/doc/mkfilelist create mode 100644 sys/doc/mkfiles.ms create mode 100644 sys/doc/mkfiles.ps create mode 100644 sys/doc/names.ms create mode 100644 sys/doc/names.ps create mode 100644 sys/doc/net/mkfile create mode 100644 sys/doc/net/net.ms create mode 100644 sys/doc/net/net.pdf create mode 100644 sys/doc/net/net.ps create mode 100644 sys/doc/net/tree create mode 100644 sys/doc/net/tree.pout create mode 100644 sys/doc/network.art create mode 100644 sys/doc/network.pic create mode 100644 sys/doc/plumb.ms create mode 100644 sys/doc/plumb.ps create mode 100644 sys/doc/port.ms create mode 100644 sys/doc/port.ps create mode 100644 sys/doc/preamble create mode 100755 sys/doc/prfile create mode 100644 sys/doc/prog4.ms create mode 100644 sys/doc/prog4.ps create mode 100644 sys/doc/ps create mode 100644 sys/doc/rc.ms create mode 100644 sys/doc/rc.ps create mode 100644 sys/doc/release3.ms create mode 100644 sys/doc/release3.ps create mode 100644 sys/doc/release4.ms create mode 100644 sys/doc/release4.ps create mode 100644 sys/doc/sam/fig1.bm create mode 100644 sys/doc/sam/fig1.gif create mode 100644 sys/doc/sam/fig1.png create mode 100644 sys/doc/sam/fig1.ps create mode 100644 sys/doc/sam/fig2.bm create mode 100644 sys/doc/sam/fig2.gif create mode 100644 sys/doc/sam/fig2.png create mode 100644 sys/doc/sam/fig2.ps create mode 100644 sys/doc/sam/fig3.bm create mode 100644 sys/doc/sam/fig3.gif create mode 100644 sys/doc/sam/fig3.png create mode 100644 sys/doc/sam/fig3.ps create mode 100644 sys/doc/sam/fig4.bm create mode 100644 sys/doc/sam/fig4.gif create mode 100644 sys/doc/sam/fig4.png create mode 100644 sys/doc/sam/fig4.ps create mode 100644 sys/doc/sam/fig5.pic create mode 100644 sys/doc/sam/fig6.pic create mode 100644 sys/doc/sam/fig7.pic create mode 100644 sys/doc/sam/mkfile create mode 100644 sys/doc/sam/refs create mode 100644 sys/doc/sam/sam.html create mode 100644 sys/doc/sam/sam.ms create mode 100644 sys/doc/sam/sam.pdf create mode 100644 sys/doc/sam/sam.ps create mode 100644 sys/doc/sam/sam.tut create mode 100644 sys/doc/sam/sam.tut.out create mode 100644 sys/doc/sam/sam0.png create mode 100644 sys/doc/sam/sam1.png create mode 100644 sys/doc/sam/sam2.png create mode 100644 sys/doc/sam/sam3.png create mode 100644 sys/doc/sam/sam4.png create mode 100644 sys/doc/sleep.ms create mode 100644 sys/doc/sleep.ps create mode 100644 sys/doc/spin.ms create mode 100644 sys/doc/spin.ps create mode 100644 sys/doc/title create mode 100644 sys/doc/title.ps create mode 100644 sys/doc/trademarks.ps create mode 100644 sys/doc/troff.ms create mode 100644 sys/doc/troff.pdf create mode 100644 sys/doc/troff.ps create mode 100644 sys/doc/utf.ms create mode 100644 sys/doc/utf.ps create mode 100644 sys/doc/venti/Block.gif create mode 100644 sys/doc/venti/Index.gif create mode 100644 sys/doc/venti/LogFormat.gif create mode 100644 sys/doc/venti/ModifiedTree.gif create mode 100644 sys/doc/venti/SimpleTree.gif create mode 100644 sys/doc/venti/bootes.gif create mode 100644 sys/doc/venti/bootes2.gif create mode 100644 sys/doc/venti/emelie.gif create mode 100644 sys/doc/venti/emelie2.gif create mode 100644 sys/doc/venti/mkfile create mode 100644 sys/doc/venti/probablity.gif create mode 100644 sys/doc/venti/venti.html create mode 100644 sys/doc/venti/venti.pdf create mode 100644 sys/doc/venti/venti.ps diff --git a/sys/doc/8½/8½.ms b/sys/doc/8½/8½.ms new file mode 100644 index 000000000..a87933277 --- /dev/null +++ b/sys/doc/8½/8½.ms @@ -0,0 +1,829 @@ +.HTML "8½, the Plan 9 Window System +.TL +8½, the Plan 9 Window System +.AU +Rob Pike +rob@plan9.bell-labs.com +.AB +.FS +Originally appeared, in a slightly different form, in +.I +Proc. of the Summer 1991 USENIX Conf., +.R +pp. 257-265, +Nashville. +Note that +.CW 8½ +has been replaced by +.CW rio +(see +.I rio (1)). +.FE +The Plan 9 window system, 8½, is a modest-sized program of novel design. +It provides textual I/O and bitmap graphic services to both +local and remote client programs by offering a multiplexed file service to those clients. +It serves traditional UNIX files like +.CW /dev/tty +as well as more unusual ones that provide access to the mouse +and the raw screen. +Bitmap graphics operations are provided by serving a file called +.CW /dev/bitblt +that interprets client messages to perform raster operations. +The file service that 8½ offers its clients is identical to that it uses for +its own implementation, so it is fundamentally no more than +a multiplexer. +This architecture has some rewarding symmetries and can be implemented +compactly. +.AE +.SH +Introduction +.PP +In 1989 I constructed a toy window system from only a few hundred +lines of source code using a custom language and an unusual architecture +involving concurrent processes [Pike89]. +Although that system was rudimentary at best, it demonstrated that +window systems are not inherently complicated. +The following year, for the new Plan 9 distributed system [Pike92], I applied some of +the lessons from that toy project to write, in C, +a production-quality window system +called 8½. +8½ provides, on black-and-white, grey-scale, or color displays, +the services required of a modern window system, including +programmability and support for remote graphics. +The entire system, including the default program that runs in the +window \(em the equivalent of +.CW xterm +[Far89] with `cutting and pasting' between windows \(em +is well under 90 kilobytes of text on a Motorola 68020 processor, about +half the size of the +operating system +kernel that supports it and a tenth the size of the X server +[Sche86] +.I without +.CW xterm . +.PP +What makes 8½ so compact? Much of the saving comes from overall simplicity: +8½ has little graphical fanciness, a concise programming interface, and +a simple, fixed user interface. +8½ also makes some decisions by fiat +\(em three-button mouse, overlapping windows, built-in terminal program and +window manager, etc. \(em +rather than trying to appeal to all tastes. +Although compact, 8½ is not ascetic. +It provides the fundamentals and +enough extras to make them comfortable to use. +The most important contributor to its small size, though, is its +overall design as a file server. +This structure may be applicable to window systems +on traditional UNIX-like operating systems. +.PP +The small size of 8½ does not reflect reduced functionality: +8½ provides service roughly equivalent to the X window system. +8½'s clients may of course be as complex as they choose, +although the tendency to mimic 8½'s design +and the clean programming interface means they +are not nearly as bloated as X applications. +.SH +User's Model +.PP +8½ turns the single screen, mouse, and keyboard of the terminal +(in Plan 9 terminology) or workstation (in commercial terminology) into an array +of independent virtual terminals that may be textual terminals supporting a shell and +the usual suite of tools +or graphical applications using the full power of the bitmap screen and mouse. +Text is represented in UTF, an encoding of the Unicode Standard [Pike93]. +The entire programming interface is provided through +reading and writing files in +.CW /dev . +.PP +Primarily for reasons of history and familiarity, +the general model and appearance of 8½ are similar to those of +.CW mux +[Pike88]. +The right button has a short menu for controlling window creation, destruction, +and placement. +When a window is created, it runs the default shell, +.CW rc +[Duff90], with standard input +and output directed to the window and accessible through the file +.CW /dev/cons +(`console'), +analogous to the +.CW /dev/tty +of UNIX. +The name change represents a break with the past: Plan 9 does not provide a +Teletype-style model of terminals. 8½ provides the only way +most users ever access Plan 9. +.PP +Graphical applications, +like ordinary programs, +may be run by typing their names +to the shell running in a window. +This runs the application in the same window; +to run the application in a new window one may use an external program, +.CW window , +described below. +For graphical applications, the virtual terminal model +is extended somewhat to allow programs to perform graphical operations, +access the +mouse, and perform related functions by reading and writing files with +suggestive names such as +.CW /dev/mouse +and +.CW /dev/window +multiplexed per-window +much like +.CW /dev/cons . +The implementation and semantics of these files, +described below, is central to the structure of 8½. +.PP +The default program that runs in a window is familiar to users of Blit terminals [Pike83]. +It is very similar to that of +.CW mux +[Pike88], providing mouse-based editing of input and output text, +the ability to scroll back to see earlier output, and so on. +It also has a new feature, toggled by typing ESC, +that enables the user to control when +typed characters may be read by the shell or application, +instead of (for example) after each newline. +This feature makes the window program directly useful for many text-editing +tasks such as composing mail messages before sending them. +.SH +Plan 9 and 8½ +.PP +Plan 9 is a distributed system that provides support for UNIX-like applications +in an environment built from distinct CPU servers, file servers, and terminals +connected by a variety of networks [Pike90]. +The terminals are comparable to modest workstations that, once connected to a file +server over a medium-bandwidth network such as Ethernet, are self-sufficient computers +running a full operating system. +Unlike workstations, however, their role is just to +provide an affordable multiplexed user interface to the rest of the system: +they run the window system and support simple interactive +tasks such as text editing. +Thus they lie somewhere between workstations and X terminals in design, +cost, performance, and function. +(The terminals can be used +for general computing, but in practice Plan 9 users do their +computing on the CPU servers.) +The Plan 9 terminal software, including 8½, +was developed on a 68020-based +machine called a Gnot +and has been ported to +the NeXTstation, +the MIPS Magnum 3000, +SGI Indigos, +and Sun SPARCstations\(emall small workstations that we use as terminals\(emas +well as PCs. +.PP +Heavy computations such as compilation, text processing, +or scientific calculation are done on the CPU servers, which are connected +to the file servers by high-bandwidth networks. +For interactive work, +these computations can access the terminal that instantiated them. +The terminal and CPU server being used by a particular user are connected to the +same file server, although over different networks; Plan 9 provides a view of the +file server that is independent of location in the network. +.PP +The components of Plan 9 are connected by a common protocol based on the sharing of files. +All resources in the network are implemented as file servers; programs that wish to +access them connect to them over the network and communicate using ordinary file +operations. +An unusual aspect of Plan 9 is that the +.I +name space +.R +of a process, the set of files that can be accessed by name +(for example by an +.CW open +system call) is not global to all processes on a machine; distinct processes +may have distinct name spaces. The system provides methods by which processes +may change their name spaces, such as the ability to +.I mount +a service upon an existing directory, making the files of the service +visible in the directory. +(This is a different operation from its +UNIX +namesake.) +Multiple services may be mounted upon the same directory, +allowing the files from multiple services to be accessed in the same directory. +Options to the +.CW mount +system call control the order of searching for files in such a +.I +union directory. +.R +.PP +The most obvious example of a network resource is a file server, where permanent +files reside. There are a number of unusual services, however, whose design in +a different environment would likely not be file-based. Many are described +elsewhere [Pike92]; some examples are the representation +of processes for debugging, +much like Killian's process files for the 8th edition [Kill84], +and the implementation of the name/value pairs of the +UNIX +.CW exec +environment as files. +User processes may also implement a file service and make it available to clients +in the network, much like the `mounted streams' in the 9th Edition +[Pres90]. +A typical example is a program that interprets an externally-defined file system +such as that on a CD-ROM or a standard +UNIX +system and makes the contents available to Plan 9 programs. +This design is used by all distributed applications in Plan 9, including 8½. +.PP +8½ serves a set of files in the conventional directory +.CW /dev +with names like +.CW cons , +.CW mouse , +and +.CW screen . +Clients of 8½ communicate with the window system by reading and writing +these files. +For example, a client program, such as a shell, +can print text by writing its standard output, which is automatically +connected to +.CW /dev/cons , +or it may open and write that file explicitly. +Unlike files served by a traditional file server, however, the instance of +.CW /dev/cons +served in each window by 8½ is a distinct file; +the per-process name spaces of Plan 9 allow 8½ to provide a unique +.CW /dev/cons +to each client. +This mechanism is best illustrated by the creation of a new 8½ client. +.PP +When 8½ starts, it creates a full-duplex pipe to be the communication +medium for the messages that implement the file service it will provide. +One end will be shared by all the clients; the other end is held by +8½ to accept requests for I/O. +When a user makes a new window using the mouse, +8½ allocates the window data structures and forks a child process. +The child's name space, +initially shared with the parent, +is then duplicated +so that changes the child makes to its name space will not affect the parent. +The child then attaches its end of the communication pipe, +.CW cfd , +to the directory +.CW /dev +by doing a +.CW mount +system call: +.P1 +mount(cfd, "/dev", MBEFORE, buf) +.P2 +This call attaches the service associated with the file descriptor +.CW cfd +\(em the client end of the pipe \(em to the beginning of +.CW /dev +so that the files in the new service take priority over existing files +in the directory. +This makes the new files +.CW cons , +.CW mouse , +and so on, +available in +.CW /dev +in a way that hides any files with the same names already in place. +The argument +.CW buf +is a character string (null in this case), +described below. +.PP +The client process then closes file descriptors 0, 1, and 2 and opens +.CW /dev/cons +repeatedly to connect the standard +input, output, and error files to the window's +.CW /dev/cons . +It then does an +.CW exec +system call to begin executing the shell in the window. +This entire sequence, complete with error handling, is 33 lines of C. +.PP +The view of these events from 8½'s end of the pipe is a sequence +of file protocol messages from the new client generated by the +intervening operating +system in response to the +.CW mount +and +.CW open +system calls executed by the client. +The message generated by the +.CW mount +informs 8½ that a new client has attached to the file service it provides; +8½'s response is a unique identifier kept by the operating system and +passed in all messages generated by I/O on the files derived from that +.CW mount . +This identifier is used by 8½ to distinguish the various clients so +each sees a unique +.CW /dev/cons ; +most servers do not need to make this distinction. +.PP +A process unrelated to 8½ may create windows by a variant of this mechanism. +When 8½ begins, it uses a Plan 9 service to `post' the client end of the +communication pipe in a public place. +A process may open that pipe and +.CW mount +it to attach to the window system, +much in the way an X client may connect to a +UNIX +domain socket to the server bound to the file system. +The final argument to +.CW mount +is passed through uninterpreted by the operating +system. +It provides a way for the client and server to +exchange information at the time of the +.CW mount . +8½ interprets it as the dimensions of the window to be +created for the new client. (In the case above, the window has been +created by the time the mount occurs, and +.CW buf +carries no information.) +When the +.CW mount +returns, the process can open the files of the new window and begin I/O to +use it. +.PP +Because 8½'s interface is based on files, +standard system utilities can be used to control its services. +For example, +its method of creating windows externally is packaged in a +16-line shell script, called +.CW window , +the core of which is just a +.CW mount +operation that prefixes 8½'s directory to +.CW /dev +and runs a command passed on the argument line: +.P1 +mount -b $'8½serv' /dev +$* < /dev/cons > /dev/cons >[2] /dev/cons & +.P2 +The +.CW window +program is typically employed by users to create their +initial working environment when they boot the system, although +it has more general possibilities. +.PP +Other basic features of the system fall out naturally from the +file-based model. +When the user deletes a window, 8½ sends the equivalent of a +UNIX +signal to the process group \(em the clients \(em in the window, +removes the window from the screen, and poisons the incoming connections +to the files that drive it. If a client ignores the signal and +continues to write to the window, it will get I/O errors. +If, on the other hand, all the processes in a window exit spontaneously, +they will automatically close all connections to the window. +8½ counts references to the window's files; when none are left, +it shuts down the window and removes it from the screen. +As a different example, when the user hits the DEL key to generate an +interrupt, +8½ writes a message to a special file, provided by Plan 9's +process control interface, that interrupts all the processes +in the window. +In all these examples, the implementation works seamlessly +across a network. +.PP +There are two valuable side effects of implementing +a window system by multiplexing +.CW /dev/cons +and other such files. +First, the problem of giving a meaningful +interpretation to the file +.CW /dev/cons +.CW /dev/tty ) ( +in each window is solved automatically. +To provide +.CW /dev/cons +is the fundamental job of the window system, rather than just an awkward burden; +other systems must often make special and otherwise irrelevant arrangements for +.CW /dev/tty +to behave as expected in a window. +Second, any program that can access the server, including a +process on a remote machine, can access the files using standard +read and write system calls to communicate with the window system, +and standard open and close calls to connect to it. +Again, no special arrangements need to be made for remote processes to +use all the graphics facilities of 8½. +.SH +Graphical input +.PP +Of course 8½ offers more than ASCII I/O to its clients. +The state of the mouse may be discovered by reading the file +.CW /dev/mouse , +which returns a ten-byte message encoding the state +of the buttons and the position of the cursor. +If the mouse has not moved since the last read of +.CW /dev/mouse , +or if the window associated with the instance of +.CW /dev/mouse +is not the `input focus', the read blocks. +.PP +The format of the message is: +.DS +.CW 'm' +1 byte of button state +4 bytes of x, low byte first +4 bytes of y, low byte first +.DE +As in all shared data structures in Plan 9, +the order of every byte in the message is defined +so all clients can execute the same code to unpack the message +into a local data structure. +.PP +For keyboard input, clients can read +.CW /dev/cons +or, if they need character-at-a-time input, +.CW /dev/rcons +(`raw console'). +There is no explicit event mechanism to help clients that need to read +from multiple sources. +Instead, a small (365 line) external +support library can be used. +It attaches a process +to the various blocking input sources \(em mouse, keyboard, and perhaps +a third user-provided file descriptor \(em +and funnels their input into a single pipe from which may be read +the various types of +events in the traditional style. +This package is a compromise. As discussed in a previous paper +[Pike89] I prefer +to free applications from event-based programming. Unfortunately, though, I see +no easy way to achieve this in single-threaded C programs, and am unwilling +to require all programmers to master concurrent programming. +It should be noted, though, that even this compromise results in a small +and easily understood interface. An example program that uses it is +given near the end of the paper. +.SH +Graphical output +.PP +The file +.CW /dev/screen +may be read by any client to recover the contents of the entire screen, +such as for printing (see Figure 1). +Similarly, +.CW /dev/window +holds the contents of the current window. +These are read-only files. +.PP +To perform graphics operations in their windows, client programs access +.CW /dev/bitblt . +It implements a protocol that encodes bitmap graphics operations. +Most of the messages in the protocol (there are 23 messages in all, about +half to manage the multi-level fonts necessary for efficient handling +of Unicode characters) +are transmissions (via a write) +from the client to the window system to perform a graphical +operation such as a +.CW bitblt +[PLR85] or character-drawing operation; a few include return information +(recovered via a read) to the client. +As with +.CW /dev/mouse , +the +.CW /dev/bitblt +protocol is in a defined byte order. +Here, for example, is the layout of the +.CW bitblt +message: +.DS +.CW 'b' +2 bytes of destination id +2x4 bytes of destination point +2 bytes of source id +4x4 bytes of source rectangle +2 bytes of boolean function code +.DE +.KF +.ie h .html -
+.el .BP fig1.ps 4.16 5.6 r 0 0 +.EP +.IP +Figure 1. +A representative 8½ screen, running on a NeXTstation under Plan 9 +(with no NeXT software). In the upper right, a program announces the +arrival of mail. In the top and left are a broswer for astronomical +databases and an image of a galaxy produced by the browser. +In the lower left there is a screen editor, +.CW sam +[Pike87], +editing Japanese text encoded in UTF, +and in the lower right an 8½ running recursively and, inside that instantiation, +a previewer for +.CW troff +output. +Underneath the faces is a small window running the command that +prints the screen by passing +.CW /dev/screen +to the bitmap printing utility. +.sp +.KE +.PP +The message is trivially constructed from the +.CW bitblt +subroutine in the library, defined as +.P1 +void bitblt(Bitmap *dst, Point dp, + Bitmap *src, Rectangle sr, Fcode c). +.P2 +.PP +The `id' +fields in the message indicate another property of 8½: +the clients do not store the actual data for any of their bitmaps locally. +Instead, the protocol provides a message to allocate a bitmap, to be +stored in the server, and returns to the client an integer identifier, +much like a +UNIX +file descriptor, to be used in operations on that bitmap. +Bitmap number 0 is conventionally the client's window, +analogous to standard input for file I/O. +In fact, no bitmap graphics operations are executed in the client at all; +they are all performed on its behalf by the server. +Again, using the standard remote file operations in Plan 9, +this permits remote machines having no graphics capability, such +as the CPU server, +to run graphics applications. +Analogous features of the original Andrew window system [Gos86] +and of X [Sche86] require more complex mechanisms. +.PP +Nor does 8½ itself operate directly on bitmaps. +Instead, it calls another server to do its graphics operations for it, +using an identical protocol. +The operating system for the Plan 9 terminals contains an internal +server that implements that protocol, exactly as does 8½, but for a single +client. That server stores the actual bytes for the bitmaps +and implements the fundamental bitmap graphics operations. +Thus the environment in which 8½ runs +has exactly the structure it provides for its clients; +8½ reproduces the environment for its clients, +multiplexing the interface to keep the clients separate. +.PP +This idea of multiplexing by simulation is applicable to more +than window systems, of course, and has some side effects. +Since 8½ simulates its own environment for its clients, it may run +in one of its own windows (see Figure 1). +A useful and common application of this +technique is to connect a window to a remote machine, such as a CPU +server, and run the window system there so that each subwindow is automatically +on the remote machine. +It is also a handy way to debug a new version of the window system +or to create an environment with, for example, a different default font. +.SH +Implementation +.PP +To provide graphics to its clients, 8½ mostly just multiplexes and passes +through to its own server the clients' requests, occasionally rearranging +the messages to maintain the fiction that the clients have unique screens +(windows). +To manage the overlapping windows it uses the layers model, +which is handled by a separate library [Pike83a]. +Thus it has little work to do and is a fairly simple program; +it is dominated by a couple of switch statements to interpret +the bitmap and file server protocols. +The built-in window program and its associated menus and text-management +support are responsible for most of the code. +.PP +The operating system's server is also compact: +the version for the 68020 processor, excluding the implementation +of a half dozen bitmap graphics operations, is 2295 lines of C +(again, about half dealing with fonts); +the graphics operations are another 2214 lines. +.PP +8½ is structured as a set of communicating coroutines, +much as discussed in a 1989 paper [Pike89]. +One coroutine manages the mouse, another the keyboard, and another +is instantiated to manage the state of each window and associated client. +When no coroutine wishes to run, 8½ reads the next file I/O request from +its clients, which arrive serially on the full-duplex communication pipe. +Thus 8½ is entirely synchronous. +.PP +The program source is small and compiles in about 10 seconds +in our Plan 9 environment. There are ten source files and +one +.CW makefile +totaling 5100 lines. +This includes the source for the window management process, +the cut-and-paste terminal program, +the window/file server itself, +and a small coroutine library +.CW proc.c ). ( +It does not include the layer library +(another 1031 lines) +or the library to handle the cutting and pasting of text +displayed in a window (960 lines), +or the general graphics support library that manages all the +non-drawing aspects of graphics \(em arithmetic on points and rectangles, +memory management, error handling, clipping, \(em plus fonts, +events, and non-primitive drawing operations such as circles and ellipses +(a final 3051 lines). +Not all the pieces of these libraries are used by 8½ itself; +a large part of the graphics library in particular is used only by clients. +Thus it is somewhat unfair to 8½ just to sum these numbers, including +the 4509 lines of support in the kernel, and arrive +at a total implementation size of 14651 lines of source to implement +all of 8½ from the lowest levels to the highest. +But that number gives a fair measure of the complexity of the overall system. +.PP +The implementation is also efficient. +8½'s performance is competitive to X windows'. +Compared using Dunwoody's and Linton's +.CW gbench +benchmarks on the 68020, +distributed with the ``X Test Suite'', +circles and arcs are drawn about half as fast in 8½ as in +X11 release 4 compiled with +.CW gcc +for equivalent hardware, +probably because they are currently implemented in a user library +by calls to the +.CW point +primitive. +Line drawing speed is about equal between the two systems. +Unicode text is drawn about the same speed by 8½ as ASCII text by +X, and +the +.CW bitblt +test is runs four times faster for 8½. +These numbers vary enough to caution against drawing sweeping +conclusions, but they +suggest that 8½'s architecture does not penalize its performance. +Finally, 8½ boots in under a second and creates a new window +apparently instantaneously. +.SH +An example +.PP +Here is a complete program that runs under 8½. +It prints the string +.CW \&"hello +.CW world" +wherever the left mouse button is depressed, and exits when the +right mouse button is depressed. +It also prints the string in the center of its window, and maintains +that string when the window is resized. +.P1 +#include +#include +#include + +void +ereshaped(Rectangle r) +{ + Point p; + + screen.r = r; + bitblt(&screen, screen.r.min, &screen, r, Zero); /* clear */ + p.x = screen.r.min.x + Dx(screen.r)/2; + p.y = screen.r.min.y + Dy(screen.r)/2; + p = sub(p, div(strsize(font, "hello world"), 2)); + string(&screen, p, font, "hello world", S); +} + +main(void) +{ + Mouse m; + + binit(0, 0, 0); /* initialize graphics library */ + einit(Emouse); /* initialize event library */ + ereshaped(screen.r); + for(;;){ + m = emouse(); + if(m.buttons & RIGHTB) + break; + if(m.buttons & LEFTB){ + string(&screen, m.xy, font, "hello world", S); + /* wait for release of button */ + do; while(emouse().buttons & LEFTB); + } + } +} +.P2 +The complete loaded binary is a little over 26K bytes on a 68020. +This program should be compared to the similar ones in the excellent paper +by Rosenthal [Rose88]. +(The current program does more: it also employs the mouse.) +The clumsiest part is +.CW ereshaped , +a function with a known name that is called from the event library +whenever the window is +reshaped or moved, as is discovered inelegantly but adequately +by a special case of a mouse message. +(Simple so-called expose events are not events +at all in 8½; the layer library takes care of them transparently.) +The lesson of this program, with deference to Rosenthal, is that if +the window system is cleanly designed a toolkit should be unnecessary +for simple tasks. +.SH +Status +.PP +As of 1992, 8½ is in regular daily use by almost all the 60 people in our +research center. Some of those people use it to access Plan 9 itself; others +use it as a front end to remote +UNIX +systems, much as one would use an X terminal. +.PP +Some things about 8½ may change. +It would be nice if its capabilities were more easily accessible +from the shell. +A companion to this paper [Pike91] proposes one way to do this, +but that does not include any graphics functionality. +Perhaps a textual version of the +.CW /dev/bitblt +file is a way to proceed; that would allow, for example, +.CW awk +programs to draw graphs directly. +.PP +Can this style of window system be built on other operating systems? +A major part of the design of 8½ depends on its structure as a file server. +In principle this could be done for any system that supports user processes +that serve files, such as any system running NFS or AFS [Sun89, Kaza87]. +One requirement, however, is 8½'s need +to respond to its clients' requests out of order: +if one client reads +.CW /dev/cons +in a window with no characters to be read, +other clients should be able to perform I/O in their windows, or even +the same window. +Another constraint is that the 8½ files are like devices, +and must not be cached by the client. +NFS cannot honor these requirements; AFS may be able to. +Of course, other interprocess communication mechanisms such as sockets +could be used as a basis for a window system. One may even argue that +X's model fits into this overall scheme. It may prove easy and worthwhile +to write a small 8½-like system for commercial +UNIX +systems to demonstrate that its merits can be won in systems other than +Plan 9. +.SH +Conclusion +.PP +In conclusion, 8½ uses an unusual architecture in +concert with the file-oriented interprocess communication of Plan 9 +to provide network-based interactive graphics to client programs. +It demonstrates that even production-quality window systems are not +inherently large or complicated +and may be simple to use and to program. +.SH +Acknowledgements +.PP +Helpful comments on early drafts of this paper were made by +Doug Blewett, +Stu Feldman, +Chris Fraser, +Brian Kernighan, +Dennis Ritchie, +and Phil Winterbottom. +8½'s support for color was added by Howard Trickey. +Many of the ideas leading to 8½ were tried out in earlier, sometimes less +successful, programs. I would like to thank those users who suffered +through some of my previous 7½ window systems. +.SH +References +.LP +[Duff90] Tom Duff, ``Rc - A Shell for Plan 9 and UNIX systems'', Proc. of the Summer 1990 UKUUG Conf., London, July, 1990, pp. 21-33, reprinted, in a different form, in this volume. +.LP +[Far89] Far too many people, XTERM(1), Massachusetts Institute of Technology, 1989. +.LP +[Gos86] James Gosling and David Rosenthal, +``A window manager for bitmapped displays and UNIX'', in Methodology of Window Management, edited by F.R.A. Hopgood et al., Springer, 1986. +.LP +[Kaza87] Mike Kazar, ``Synchronization and Caching issues in the Andrew File System'', Tech. Rept. CMU-ITC-058, Information Technology Center, Carnegie Mellon University, June, 1987. +.LP +[Kill84] Tom Killian, ``Processes as Files'', USENIX Summer Conf. Proc., Salt Lake City June, 1984. +.LP +[Pike83] Rob Pike, ``The Blit: A Multiplexed Graphics Terminal'', Bell Labs Tech. J., V63, #8, part 2, pp. 1607-1631. +.LP +[Pike83a] Rob Pike, ``Graphics in Overlapping Bitmap Layers'', Trans. on Graph., Vol 2, #2, 135-160, reprinted in Proc. SIGGRAPH '83, pp. 331-356. +.LP +[Pike87] Rob Pike, ``The Text Editor \f(CWsam\fP'', Softw. - Prac. and Exp., Nov 1987, Vol 17 #11, pp. 813-845, reprinted in this volume. +.LP +[Pike88] Rob Pike, ``Window Systems Should Be Transparent'', Comp. Sys., Summer 1988, Vol 1 #3, pp. 279-296. +.LP +[Pike89] Rob Pike, ``A Concurrent Window System'', Comp. Sys., Spring 1989, Vol 2 #2, pp. 133-153. +.LP +[Pike91] Rob Pike, ``A Minimalist Global User Interface'', USENIX Summer Conf. Proc., Nashville, June, 1991. +.LP +[Pike92] Rob Pike, Dave Presotto, Ken Thompson, Howard Trickey, and Phil Winterbottom, +Operating Systems Review +Vol 27, #2, Apr 1993, pp. 72-76 +(reprinted from Proceedings of the 5th ACM SIGOPS European Workshop, Mont Saint-Michel, 1992, Paper nº 34, and reprinted in this volume). +.LP +[Pike94] Rob Pike and Ken Thompson, ``Hello World or Καλημέρα κόσμε or \f(Jpこんにちは 世界\fP'', USENIX Winter Conf. Proc., San Diego, Jan, 1993, reprinted in this volume. +.LP +[PLR85] Rob Pike, Bart Locanthi and John Reiser, ``Hardware/Software Tradeoffs for Bitmap Graphics on the Blit'', Softw. - Prac. and Exp., Feb 1985, Vol 15 #2, pp. 131-152. +.LP +[Pres90] David L. Presotto and Dennis M. Ritchie, ``Interprocess Communication in the Ninth Edition Unix System'', Softw. - Prac. and Exp., June 1990, Vol 20 #S1, pp. S1/3-S1/17. +.LP +[Rose88] David Rosenthal, ``A Simple X11 Client Program -or- How hard can it really be to write ``Hello, World''?'', USENIX Winter Conf. Proc., Dallas, Jan, 1988, pp. 229-242. +.LP +[Sche86] Robert W. Scheifler and Jim Gettys, +``The X Window System'', +ACM Trans. on Graph., Vol 5 #2, pp. 79-109. +.LP +[Sun89] Sun Microsystems, NFS: Network file system protocol specification, +RFC 1094, Network Information Center, SRI International, March, 1989. +.br diff --git a/sys/doc/8½/8½.ps b/sys/doc/8½/8½.ps new file mode 100644 index 000000000..ae395b476 --- /dev/null +++ b/sys/doc/8½/8½.ps @@ -0,0 +1,16397 @@ +%!PS-Adobe-2.0 +%%BeginResource: font lsunr00 +%!PS-AdobeFont-1.1: LucidaSansUnicode00 0.9 +%%CreationDate: 1994 Jun 04 09:53:35 +% Lucida is a registered trademark of Bigelow & Holmes Inc. +% NOTE: This is a partial font in Adobe Type 1 format. +% The complete font in fully hinted ATM compatible form is available from Y&Y +% (508) 371-3286 USA, email: tech-help@YandY.com, http://www.YandY.com +11 dict begin +/FontInfo 9 dict dup begin +/version (0.9) readonly def +/Notice ((C) 1991, 1993 Bigelow & Holmes Inc. Pat. Des. 289,420. All rights reserved.) readonly def +/Notice ((C) 1994 Y&Y Inc. All rights reserved.) readonly def +/FullName (Lucida Sans Unicode 00) readonly def +/FamilyName (LucidaSansUnicode) readonly def +/Weight (Normal) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /LucidaSansUnicode00 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 100 /0064 put +dup 101 /0065 put +dup 102 /0066 put +dup 103 /0067 put +dup 104 /0068 put +dup 105 /0069 put +dup 106 /006a put +dup 107 /006b put +dup 108 /006c put +dup 109 /006d put +dup 110 /006e put +dup 111 /006f put +dup 112 /0070 put +dup 113 /0071 put +dup 114 /0072 put +dup 115 /0073 put +dup 116 /0074 put +dup 117 /0075 put +dup 118 /0076 put +dup 119 /0077 put +dup 120 /0078 put +dup 121 /0079 put +dup 122 /007a put +dup 123 /007b put +dup 124 /007c put +dup 125 /007d put +dup 126 /007e put +dup 163 /00a3 put +dup 167 /00a7 put +dup 169 /00a9 put +dup 173 /00ad put +dup 174 /00ae put +dup 176 /00b0 put +dup 177 /00b1 put +dup 180 /00b4 put +dup 181 /00b5 put +dup 182 /00b6 put +dup 185 /00b9 put +dup 186 /00ba put +dup 188 /00bc put +dup 189 /00bd put +dup 191 /00bf put +dup 198 /00c6 put +dup 215 /00d7 put +dup 223 /00df put +dup 231 /00e7 put +dup 233 /00e9 put +dup 237 /00ed put +dup 239 /00ef put +dup 241 /00f1 put +dup 247 /00f7 put +dup 252 /00fc put +dup 32 /0020 put +dup 33 /0021 put +dup 34 /0022 put +dup 35 /0023 put +dup 36 /0024 put +dup 37 /0025 put +dup 38 /0026 put +dup 40 /0028 put +dup 41 /0029 put +dup 42 /002a put +dup 43 /002b put +dup 44 /002c put +dup 45 /002d put +dup 46 /002e put +dup 47 /002f put +dup 48 /0030 put +dup 49 /0031 put +dup 50 /0032 put +dup 51 /0033 put +dup 52 /0034 put +dup 53 /0035 put +dup 54 /0036 put +dup 55 /0037 put +dup 56 /0038 put +dup 57 /0039 put +dup 58 /003a put +dup 59 /003b put +dup 60 /003c put +dup 61 /003d put +dup 62 /003e put +dup 63 /003f put +dup 65 /0041 put +dup 66 /0042 put +dup 67 /0043 put +dup 68 /0044 put +dup 69 /0045 put +dup 70 /0046 put +dup 71 /0047 put +dup 72 /0048 put +dup 73 /0049 put +dup 74 /004a put +dup 75 /004b put +dup 76 /004c put +dup 77 /004d put +dup 78 /004e put +dup 79 /004f put +dup 80 /0050 put +dup 81 /0051 put +dup 82 /0052 put +dup 83 /0053 put +dup 84 /0054 put +dup 85 /0055 put +dup 86 /0056 put +dup 87 /0057 put +dup 88 /0058 put +dup 89 /0059 put +dup 90 /005a put +dup 91 /005b put +dup 92 /005c put +dup 93 /005d put +dup 95 /005f put +dup 96 /0060 put +dup 97 /0061 put +dup 98 /0062 put +dup 99 /0063 put +readonly def +/FontBBox{-90 -211 977 1005}readonly def +%/UniqueID 5054500 def +currentdict end +currentfile eexec +AF9D569DD6A39B9A08931526FD86DA1F3D52F6A6E9A3C2A341616BA8AD4A6BBA6A84F4F691C60D +64B463C6D1B3A432634AAC416FAE1067039D940A82A692DB189D5719DA649D309E36853E1F767A +0DF1C424DA3E9D8E6B45B659E31B0A03BB7747FB2945268D0805A130347C7455FA73121BA001A8 +5BFFF1847B8FBAE1B61BA76AB61D750F7BCDB1EE8E4B4E95657E783B2230A68A5A62E9E39EA352 +7B3E832C6BF769697C2B18F29596B8A56AC9532224A452AE7A77A33DC5D437BAD5B4C1B9DD7680 +FE4456B59A798F584F7913B3A790F3E5F9559505B80A36CDE0A4D46A595E942D798E6F6311B3E3 +613059010E0C594BA804C9FA8EED254427D021628C6A59FA5C10314D3143AA329B9E1E767CADFB +B864C70BE2EB0FA96FBDCC2EB1B44783431EE1CDCADC68DF65C29B4AB7C198BAA625A3736F6240 +46E72FAE8F379B391393A007E9F796065FC622322C782111E2EE7B73FC09C5852F35A75CA296FB +ADBC77E83C2378DAE017DC93437EDA4E1473D256C7AA433FAFF90BFF104C39847FB6076D559B8A +4D05AC2A35837CF7949567F37638F1FF869CA022F28979DC7AA611BCACFFE95AA23CBFB86C9719 +BBD5738FB6D86326F1B0A84EFA79C80BDC618F42DFAB8B232211332E1D793A6C4CA71DE2D7DBE1 +5806FB210EA36FCE5FA253B9C507225A5581765AA21DB9E1739AA6063F3F7F11D72E65C3F9A83E +71C8DFC9B9E13C0CCA25836D4233D10595ED053201C745C989878BC0457410C29FED3273550E0E +C93F30B6E5994D0DE950C82E70299AB82D97B0EC11EE5CFD3A5311B0B9623C7CF73BCCE4D33436 +655812E9BC69045B581B2BACE84DEBD480A8652676ABDB2976168954DCD745B42F92F25CC2A4B0 +58AF8D1F0BFFC280B7FECF0593655FEDBE41135D72874467035351F424E92C9E4F628501066322 +AE5896C2CC8C5AD9EE9C4E2076DF548DEF8A6ADAAEC8F05CBBB8882BE5DEBB3976FDD20539F0ED +C5F331CADFFF8B1E1ACC3E0DE2DE0628766105E7EE97E55E66E2585DD7412749CCA828C3CB355F +716E5F447857D298C1383EDD389C2C09F3094A09F90652D5913EEBBFB16547FF31DBB8C0F43480 +6C96524DB4F2D96F6A32856DC62FB350D208B4462521EA9578695E7F8A31FDAFC065535AB32B28 +4F808767213AD4B89C02E59E3F2BD114BC411E4A9B58F97102E7ACB9310EE2AD2EAEE87E1702E4 +3E00854C35156E731478402285AB23B0049A74381C2355F35511C7D966B2EE653CD8A3D7D6505E +80A4BD2C96B451354DD9323C30C9894A60CE614D0B091D3A03A5EDA4BB127F255FF706AD6E6827 +9123CEF7396D89B5E5A968B4A4C0F4B0C227D1EE676801922A3CE24F2602569AF11ED43F17E2F4 +6669AEBD1F6B9E53C76043E1CD9DACDBB3B6B87F949372C03E9A5C80FABBF2E7767880B7064D05 +AE2D717B6A189D0C9F8DBC981EBEFD9A031C7592EFA0C08FD8BCD2FA1210881D95D6ECD9E72096 +5ACE2A9462EB9C3504315CFE8C6B5362B833CE52BC726DCB3450CEB73E42E667B9D86D0F985A35 +CAFF807F4DFAF156AFDCB999DBA61476BF4CCE49C6D8A8B7D2A3FC07EE8346E30F68FEF7774273 +6E55BA23311F85C7FAD9D9AA1EB17E14C45033BEE8D3093AEE9E706133FA94413F30F723568255 +498A071D76C10D12536425A7185DB60BDECAF6BFD0BE58F418D0E62FDA7B846BDD490EA7CEAD05 +E1BB9A4DF66E13758858B80F6C7216D8D606E92BC93576A1FB3604D9FBD78656FDF64328AD9466 +3CFABAB19A0636518FF61E62591661FBFD264B90156E24941177A42A0E5315F6168A93B96E27DF +2E7451F382C2C83241AC2B5F52A2C9453D3E207EBBEB3881FF237E9135E1D9191E1FBE5E606C60 +43726A6783CD4414D26F8F95B260FAE60262DE148545079C80C962D5D7BDE2A77A814CDD4ED901 +D28D4D5C4324DF7F7AA6B832B6F5E0E129F471A12373F0D97037FD695F921E0CAD8963372E8DC7 +F3AA5E004E1F5980BA9825774BB2DD511B6A9D5A0C7E7885E39E3B5497EF466C52B7DD4CF4AD74 +6E62FE4B1E082811AA45D6483725D0EE18C9C6BB988C036913682EAC4645EF90AD5FC24BC78778 +DDDD48EC8F1E64525AB9B1EFE0CDFABCC6A17BDACC1B3B1929FB2FA1DB85991FFE1B92B7999C99 +1BD3AC17B8A44E11DD954BEBFF002A0562EEDBC507DD0FF13ABADBC8E5676F5F951D1B32B725DE +FB33219FF4DAE8298887E415434BE4012D1A294F807CF53248AA137591B532B573F41732216B12 +685CB4B612B782E010644CB813A31AC4A25038A17FA0872E515BB2C119DEE59829927FBE20902D +18CF2F33E18DC0AC2108789FA1D1F61553184FC185A3BC3BA6985449149A08E4484F33EA950C18 +B0148B6DA2EF0E2F1BE218CBEDFD4A4E9A53235840A8E8DD1A757D8F48DE07C687E5F35EF237DB +EA582FFC92EAC5A8E4D9C1F048B037FDE46770B073B161333AD5E0DC09187DD0D9FF2CAFEFDCBD +00F3FF4642B63703F6B4CA2A479BE5145E3EA90359F4BE67F1EF0EC07F997A7A63797EAC98E3D0 +C64F1EBEC99C7C436EF655ACF76DE5201A5B3F5CF58F0116008DF241D370E616E8FF10BC551606 +F041FF641B4C8FA9274BC3FDE69602B2BD58D1428B119607AB28B30393C0BE4E33E5EE1059C9BC +1AC92B4AD1C7D1C71FB44429D8F8042F0A7ADEDE040F13D0C13F9BD92D3BE4E77E446DC8D57FCF +C704F6EB8D438EFA72F74835DC24E853B3B1178904F0484AED543B57FC8ABFFF4253AFA2C93C66 +C2144FF1777A1E3A40D1D023BCBE24557DAE5D76DAE6FC7063E11A5DD52B0060501E84AE0E66ED +7522828C15045CE72B548B59A3D7DFC3CF6779B4A6D4891B95CD4C6613C9390DD953FA58FE97D8 +A545177EC9EDB59770B4B67111A1FEA9E74A61B360D9C19100440F8A69386EC3878C732DA58580 +3A177AEFF85BFB5D112C37ADF7604BAB387F08243B2FEC24DAF9F95BB75A678DAA7AB277D933AC +0362E4DD5E6E4194DE873932EC10013B68CD0D1CF5298816E6B195372FAE49A5F9F722C30EDDBB +088E0F1F7D8A5D6386B8E3219125A8ED2A4D534761DEC9DA916FF875E13E309F2F2C925F28ED5E +B792A290F05B7732D217A1CF9577C0107889C456924AB91BFB728E4C4A0E70412DA721CA4B1A30 +189BE4414AEE3AB1943C0349ED437C91796EB8616D3CCBE148CD21B0DF7ED5720F18496100119C +2995490D7B60C994E93D874AB352A813604AA9A83D9388F758B7F479F9F6EFDBA983FA6DA07E7D +4F80E64E68634D9D811F3A0088BA46040577B89C7E147CF96C4A999CA1899799FA56F401645A97 +DFF68155332EE3F23F3865B6DE715F1AB687A696878C9821E029E3D867BDC50322A0C90081E3B4 +3BA1E889C277DEDA5ECB0CBE16F8FD562B82F22DA851CA5AC51EF3051382E9706A2F6F14CE6897 +4292ECA605ACCBAB5071ED68BB05BDDE20C04E0007A8EF46D69FA79540C53E34C29F3CB68E9329 +8472F6D89EF77A28A18B334278836F65E88255F1FD3A3D031A22BBC607E7BDEB1D00AF60D5E024 +7E971B8965728CB1CAD6B5853F4F66448031312AFF8E56B01BB8D50F3A1060A18ADB1FA8F84C69 +399BE117B98430CF63288BA1950ABE0CEC051B66A7EBCC7A3FC793589A4C52EDBD1A71ABE49916 +10496FC6C346C376D3B061B00BE7B4A659D21A2C0FFD3FBEE485EDB7BEE599E5248DC5FCD89632 +61BE192134BFF9C9709E76A567A0F7B5773870EEBE07E3630175BFD8C5520B2AAF6DD2D7C3FAEF +2E3F52318A7AD6E05847D76ED22D021BFDAAB041B16F2AE08FF86DE08FD998D61DE2D0EA477E46 +6E963EE5EB69F69E30113F0D65683C37CDA865CF92EC5FFA54DBB6798738D38DD7898BC7C26AF6 +939EFF47B1A3DEE6B5E38505EE05A0F671EF8917A434D92EBDD8F6820ED3A2F24199D47745D393 +9259A5D856E1AA9EBA0292EEFAFF75F709ADCDA0D6453C3550DB28BFA22549BD2A282E8B9F2367 +FCF20AACF9E7B725D0ED0498695F3A2DD76389BE8A99B603CFB0FEE3C5642BD02670108226BA9B +A90B90B1D660C552307E3D388661A20C5F42C3CFF5D0E0F6DA69792E8FB4C83AB821D0F7D80F23 +93BCAACBBE56E8095466F7BF8B0504B72734DEF119DC32DD63F1BCA3A66A5F6DB5BC221F4927C2 +B08601F89D71E754481CD1B3B8E5EC8E9A22F5AD8CF45039FB8912A2E4EBC638743D7614BCB41A +49D162291E70BD656EF7F54BCA72BFC633984F1B15B4145F13D08B255B77A357C15B8A5DB04C3A +95827DAD0B0A302577C12F66389E4E40040EB52AD36552A592C47614A9035E7CDC4BDA55645F8F +72F10287EB7682F17034B836B44F111B786B8A6A47023EC1C950A4B0636C28E1753781C9C0B206 +5DE58A47D2E7B1AD71D8DBD36E72DE625B5F52B9DB0F9679FC4B61005A112E9AA717504C71CC0F +F50CE8E96DFE3AF6613CD4A3B4645ECC5F495E3DFBC1EC17575457EF39A0D4709221F2F1E14FAD +ACF7FA5CCF662DD341477170FB291B706D76CE78C3CC90CD36A45BD04704DFB2B251CD9B1B69E6 +B9DB3E9739DE8B2CD9DE63E61ABCB8581AD13493468EE995EE668DBE6AF6809F9529595D67DA56 +DC7335876F36499EBB7226FDB9876A7D0D43159E77F0AE36B55033A11156C3F757FBBA38177D24 +88EFD1BD9D8F69ABDD365989CEFD521F60BC9005D8C40942B43FC6DB8088842BE8A7B567420A80 +9AC76E7BA77D5EFC8D9A2FCDD1A565EB580207A250621E27E51685A0C650323B4D2101810F6C89 +E5D312BAEDAD3097F87C6064BA138681D3192C219ADA66AD2B0C679C8B00078597B2DE46F5A040 +91F8C34813C07AC64B2F5FBF0EF52B16AA1EE9B9ADE71108DC9D47D587585A933CAA161CE586AC +E30BA582A5CE8728991B10AE2012C2291B7DCEAF72E0299FF49F5ED495773656908F04F697ADF9 +32AA61E6D90A87BB0F0311AF737E9F72C501CF1AB4DDF4392FB9F3E71F859D45F32EDF329F4856 +C12ED2DB6FA3631B3731D5FB2DB79E193BB8BE75B85722E6CD85C35C05C2998BC6B854BFF76A39 +B1A51ABD3304ED453AA413E6F6329B651FD13C0751886DE4553E0B79441FFECB81839626868715 +0DF0FBBD53F7861647CAC9C633B9FF63BCB644D124F2420A7FE6EE7EFED293C9D53983617F2500 +6CDF86C74694A20569BBC5DE7616333432C0FD525029E612858F5BF27D1FE06931A5AD37675162 +2AE14BA10E2702CB896CC5A5164A287AE3771036AB2EC7F50B20576E73C151580E0D0884277FBE +9D2FBC52DDC0EC22A07138C692108A6C637ACA40D1881027E23BECFF6C54A50DAF7A79B5CB4BDF +AE35CD587F46B14B3A89A50487F8A6E20EE48099B44F459E48D65FB393D2874E4BF7544FC325F5 +B04FDFC0ABF2D6B8B6870A617D344AE093C4412007061670E6913B5581A0EE53B3D8C2D75E9560 +101D4C217EC44BE71F866F0F40D1DC7296ED313ECBFF60CA3A05D45E51E32D9E75ED31F1905DC0 +4F4AF2A29600172249D0B8B5B42D99A546A9C45704A35711637ABD7A64BF4D417564ED0BBBC7F2 +093F6C7F87A770F6B6A655DCBC13FB4CC24FAEC848549CE2415301BF6BF234405946330E2964AF +A37702223D1466A780720F39FE966AC1023866246F7E25BE2A1E0C009708DB2724E13770A8817D +6F27A095BED4C33648173F0DD8C627F405ABD3CA636EF8A9E77CC67D20E51721CA655704BFEC27 +564A69E6193E5E3AB1814FBD3BE29D72836BF85C85F4555FDF3908E6BED58E0927BA45AD4434F8 +D15C510FA5CD1311F7DBB20CAACE0D88535C58309CC82CA5E6ABA2E0DCC4503149E52572A0F8C6 +7ECE6B8145C85E5F211F341AC1450EEF4D1102CA184DABD5CF00049F7BE76FA793893F2873A237 +FEFE245F059AC85956B5A603DB8871BCF4DF3665364525E7B539A6A4F2C59473908121FEA5DA8F +F5E4A4FBAE0C602130400E1D9D1185703F20895806C2DFE6E47408347CAEF151C730783FB6BA38 +9EDEA18F865240ED604D0B6F5850CD18FEB63AD0A3ED46A933DE64C9571C7F15393AA81577A0BA +6A227ACA16DB43307E76C10FC630E6550079E7E5609FACF8DD84376AC186DE2E1CF84847C4E2D8 +C58385EFCA099E81B6435D8DFA6775BFD76C527DA6CE32B6326944FB6970D2787190CB0572AB6C +531EA63DD1F6BD5F7732CC7BC7751DB30874EBD006978CBDE960BFBBD8C2D115C26E7CCBA2C802 +131AAABC284699B18989BE8D548F30389BB0DED8FC122A1433EA61D074415882143D865E28A9D7 +8E59E47EC5EF1E2C5151279BFF1D77ACAB907F7DE9514A71B21C129480FE708B9AEA442EB1DDC5 +59574095F57BB3750DA4521BD298A19CBABAC650FEA7D9DDD40DFA7999D0CC79DCACD517E391E9 +2EC65FE3A64CB5BDE1A203E53D73C994D53215EDA4EF8BD06658AA94EDE4DB65719A0903035679 +B7E08BFA7C40E9AFC3ECC0A243C79D920B2F87C75430F2490362FAF9FF23E3880E7ADA9F3DB155 +6E00470C2FBB131F539600D21238CACD785964F533C80A39605C9AAFA6438B11F72D9148455E9D +88A43178089337070A47297BE223B93CA175DAC0EA3CACA4A9BB07954449A1F9A8F5DC084602A6 +2DB0D098D3EB9D967CEC1B247134B47DC120C03B66FD26FE2647C48433BB994310137C95B02FD9 +54B450FF00B194F0C5A0A8623B1101B5F32589CE81BB1EE3045F4C78AD26A9C5868AFF70DF6179 +F2A72599892518A45C54689AFDD92A5E21F47CFF3AA8636F82B33D9716DE11C3297C403B5E2708 +D9AAA7DADDB484F6719DB1A07F42C0BF6532352BBB529478F0F08AA86E554A2C8ACB4D261C0358 +CDC56FB9FB160F9CE9C7DDD0CDEAACD1FC38D9066AA1B50E26079452FA515EBB70F3F5EFE3DBE9 +791161BC643D1BB3147C9A0B0563EA94F930201780DC3E97164C369C62D75F4BA3FCB116215771 +0C7B87C4A42BAD8EE7AD49877F9AB41BBE69730A4FA1F83F4DF48F40AA6E8891D61F1E2F5B5AB7 +6E85BCDB7DB8A8D7F3E1C5628A51246896D923DE53B1B297CC8E37E0C46A6B42F616CFCF17B74E +DDA896D6075C4D60166F05F30DE0CF48A3BA092A0D2A694D01457C46089B7F573CA6A7499BDE06 +098699CF1F28CF849D2716140669C98949A551A227BDDB5594F205BFB0F0379CCDC1B53472C335 +7834C37292EF98DF1A5B42F2E8EC82381AEBFF1CD435499D35A59EB295CF563A574FEB6F8CFD09 +D9C2E2138F486226EF089654BA218706E643BCA601DA71B7A2670A15B25523D7925D1E7BEC264B +9D5D47F30A9D36CEE25E5CBE2DB3D6E1566AE8067DA2718ACC991B618578F490DFB3B2F9F2E482 +3CC80AB2B8BF562A6E5212A2A2F2604C0894D1DBE14FE9D7222E7F3AFD49D5B2344BB34CCB0007 +0246A8A3A04DB4866BD9823E0C21C8C226BCBAEB92372AB547B8FCFAAF03AEDD70D2207840D6DD +0F833F8C19DB2CA2BA4F271712E2C617E84F34CC15078F9A8972E17B8CDDB1D059C53F7E34F975 +1DD035E00F744D2EE8178B33B6E684E6D55186C9F2FE95F9964FB13CB7D83968F06BA14A62BB43 +18A5830514BC532CE55995E1CD3C939ABAB0D211B1BFA806A353E325A73BF75601E817265F6B08 +A43BCD7AE47648436A1B5285823F234601924C473B761B1C057D4C174BA653D5B0E7186B99577C +2F353E7AF1CC395EAE45B1595CA37FF9328AC2EFA8560952054F76A72D7CD91AA018B85EE553AA +532C2BCBCD412F349DFF5C37A1339AAD0F4957DCD5EC6833060E93914447483B2A2D9041621980 +83838093C798878E5D558F7B51A9626F982115EEDC2039E3C583F264EAB8321AB228868F221E8F +4F9EFE1E760903FE51F98AB321D1347CFF719F4EC83B91E010961CA4F26B7BB7D4C769FD636A4A +1931EBB2668FD9FD1DADBDB6DC61AAD03C0077AAA035608BB2F6855593CDD133AC28523C100D99 +C98A26C29C0A610AA270C03375AC0B9E7F7F265612B34C4DA3EE925B6BC8A98257986AD2AB4BAB +B31D5E387984D102043BCD2F908573DF0D5BA1C1A59FBF2411A820DA0A6E69D1C19096580701B6 +D8E814BFFC91F8068DE5D1A8C601010A53393AE554E003AE1592FA5FE0609961DCEF7D944F5857 +64F66C20281424DC4BDED24291DEB386AE9C3DB43133E91401F528017AFAA530EB2736D3B6CE7B +CB1E0C5A6DD5690AEF3465BA0836D2A68D6F3C5958843F4299B8B2728116952F62815C71B483F7 +631338CE3FD626CC22C9256AC95D88B2F4659864B022A0BA75127BD9F4876E0251A2E707FA37E4 +D5D5AEAA0EEDB18F5584B9FFDC9386C46D1D19B0419EDD812FB9FD83D531248CD1F6A4DB702135 +9C13D1629EB05CEB121CDA5944020CAF186AF94EEE6EFF48023EDFE205E749942482DE061BC86F +58FB8289435ECE461AB84B09D342138561C2B4B2496022DD57C8253CE557FCEE1905C16A01F5B8 +BA4E7F7D5006D434CF962ECE76E5C269A7243C826C0B7CCB5CB36088AA99BF3F3A7377A76779B6 +9ECEA4A83BD4713D12BF424373B399EC0A99CF5D8AF7D5A86A390A80AEA33CBBB202E0A8BBB72B +1D685B2ED32EBA11840D0C9CE80F61BF2228924DC196B9C40F81D124044BE6DF12564AA1EBF652 +41AF0DAEA563735BA4E8151F3C9820273E79DD4E10E5989BD0F291DA773C3DAC91FDBBFF6EDE1A +5D5FAC03DBABB5C2E97BFEECC08B2701C72ED14C9CA5040B9FC61A08800C5137DC617398405004 +BC3FE46672BBE3342CEB1F9750CD7F4E057E098ACFA0A441C460886FD630EBF90A327DCC2E2635 +9DF000FD24E56CC30E31BBAF1391B89504712D09C867D7E68A965E57F854507D7294C9671F38FA +9B768EAAD52137CEA03A35C82BCCFAE056DFC1214ED21EC9F5DD4555C642C2FF167EEA4EA07CF6 +A97BB9042097B1AFBFB6FE69E09C2C419E6AC38372B92590ACD39A83C84EF9AA7DF861950F5354 +046E90AF64F28B6D38CE89D602CEF86B1A47DE38E31AB242864D7BAC0EE07878CC2F30A23FFE05 +B055E4EB475BE2035B6F3FE1573FFDE9A7960CE3180AD3FBDA2BA62215BD4C964DF7FA9B7D8A0F +B32A8C36B1678E7297212BA6B5B72B1B0B9ED8C5F9390984240B3C77A137D4EE6ABFD66FD2BDFD +57CD46185487419C70C2754008A24C064D506D8FEE86DC8FA6B5AED30C3662766B8E4C7A0E205B +EF87BFB1DDF81B236AD601F4C1B25DB98B211C1BD85BB8026F6EF5EB14901240787EB10779A7DF +C70E02E2066E516BE60C726BA4E0CAE1C327A762BD30800C7F584E2796AB6A0E80AC5500498962 +52B1AE178A2FD57E0A72758E794E455E1C78696634C09077DBE2233BB4FE9FD3C428506105F32A +68A9DE914C10D7D3562F0E70C12963E7FA5EAA2AC08A384995139D4EFF7AC6A1425929DA25DA7E +11E40FA431C268CC157D3A2E7420923D546B22C8CA59ACE87633D5D6FB804A1569BAE93C004668 +A1EEE0DE42DD0A78FEA435A7D9C84A95952F78E626AABCCFF3752171730177C9AC44378EA69012 +2F1364640C4F200D885A85737080FB67E7D1BE9614D4A5A2F538C137E92FFD914CF587F03084ED +745B868102E34FB9BC2380012264F1DE610B218B84448BCDAEA37C9627A6F8B94406D069BDE191 +1E23A4AF49D64233A965F0253ED2071E61FD937A1B1B501A43021C580EDF1A1E92D27ACE0605D7 +3A868177423EBB55F178963EA9A4FF3F9F11DC1F4F938E36B04DBEC953F585A9180DF530906CDD +046D5758F792BF3AEC670EFC402596BAF8F4A3052B9C586A3E17302922D66E6FFD813480D83D4F +7245224718D31E2006A72DBBB1CE84901F69F07C5EF3554CB22A979BEDDA37E0B2E635707937F4 +526896CA654964ADFE8CEAEB0DC5AC4A039B7C4C641CE8C8D9908E9BE1BD78C77E272F9811895E +4F8DCF94CBC0B826AFE5C1692937737713CA4F7A5FB901FD7DB797B0DD9C6EA4F82FEE8E843C0D +799B552E44193298AFEE0BBBE7CA2F6759C891331B5C97AD2DFB0E2CC1BF99589B7E4619A715F8 +AB5C88BDAA1032D90B4CC5A2B4CEE7470E56E86D4B58F74CBF8D519739BE55381B75B3C8FF1F39 +45D5669B0C9F068551C7CF0F5C227F4401EB8FDC9105233154943A10C479AC9826D6366B03A775 +2CA00488AA04CDAF8B1E0DF8CBACB678A26415414D1F15D0F46FDC5A379D5EFC53DB57CD66AC73 +D274626739D9260F078EAA529693B112392FC5DC3F025DCCE34858856D61A86355F8A74427B073 +3B6AC1C2A32B1D3FFD6402798AA093391253CC3D65595148994485CD6A74271FE71093552BD0E0 +6E4BD8A55685FF784C530D186B923AEFE16250F3330789BF632F9A1AE789ECD4F8DD6055C3E7E5 +40F0193CA768EE69C37B8E51C4CEC1D1A7B12ECF6F65DA9EADC0B3B77D22084CA3E48CF0BB2E48 +37DA5D58F4F2795BFF4F62C2F520AE173A098E6F1E5ADCBD2BB3A1D26363F8F645B809A8AD40B7 +EA90DE4A9A26BE11FA203A55B144161881665D6D1D74263AB371C31FC70F9D8AFD287C0B87BD65 +DE2B3DA8E13669ABF4501ACE58D9CA150F30B23388AE9BFD053976B223E9B37D226200AF4D7697 +840FFA9EBC087A72EBB45D3D1FB5EA3E3E882BEB4F9B702DCF69DA879D72BEF2377FAB6094314A +0673364D4165950458321F9190989C00595C4AB4AE76C246D26B088F29965200103D17C6104BB6 +E95802B4068C0D24F610532AAA2267D6A36183A5CDAB42140ECE4E0A8EDAFAB4BDF8EC6D706CE0 +562235124F1564DF380549FD931F3FF4616F24E9FEDFB3C757570E60D56D1F3568E575A35A9E5A +F59CA70D9D0CF142A3F50A396807EBCD83E58AF06A4EA165730CDDA6E363B2B1F0B060645782F3 +70E717D38A3BF1552AB327AE0F9A155E15925A64D0AE25D00C5FF977BF824955926D8CD2072C8E +41591597E6907300DEB999F06449CF393A8C0A04EC6A9430BDA18F680E6B9CE7A438320224C47C +FF64783FFF47F55CFD836B93163BE2C4D9E16C0D38E0249FB1AF2E6D951C89302C7163031AB84A +F4A2ABD01EF9AE342F5284390AE12EEB1FFFD93B281162F01AC4C4FE90A4E5A53D27802A647496 +94138C6D66079312FC04FCA387A5939556C12130FB04FB892EEC36C7470EEEC2739378F96B6392 +2668A33A7F868518F380DC0E91CE2C90484DA50B6954FD6AE5B7A10578932220D075042D762CEE +4AEEE034A4637CDBF7298069DD2FE8D74265ABD5E4BCEAB81425516A38442053CD3AF67E80A50A +E9213D7B4AC2C62E22A73DF69F8BD5E0C6AC8C688DA644EF6E20210919ADD9D69FDB4D5DA26B06 +10E8DB9748BA445FF931E3146E5937EBADE4C7FC61303004AC549C1900F5CF8E1AB0D63F13CD7C +5EB22E21E9FFC31AEDDCEAEB76CB869253111EF1CFB6D8162DA3E59D77F44000B96386C046861D +B1FA14BCB2C07B5B373312468AD8D73BB483429A22A27BBB62FD087A0F8FBBE23CE21F3F49EDE5 +F0A329993AD337C393F1332BD534750579A3E72D194B04EBC430594D4E181AF8FA60618E1502F9 +3172E26B55E5AAE989BBCC48374E8C6906A34BFCE114C2B2B4ACEF9BD7F8CD81A44F855F15CA88 +BE8A56AD1BF77EFAA5BC81C97B8F29F878F9091D651D5903E3F60D25EA1D97B6025FDBE181246F +05262E430FD57ADE69286353EDCB572069E25BCA99F3FE8744ED8297D933BD7B5F5687BC5DF1FB +584B8207EEDB38FC95BC6036342B012CDBDCE4F565B6D6DAE2EDA1B4F40B054DE50043D7AC9C3A +C0DD32F1AC2D38D0230231C17D2EA583F5740A47CCFD0FAB920FE1A49914C663D8CCAA9B1C0672 +055483B762DFF0493E0D46643BA4458DAF364512A3C72ED1AF38DD00FFE18592E96DF318B7C96A +2FE3543688CF50562159576FC9D051B6BFCD32A80FDD537F2A88DD9061CCBF832819F09570308A +10065010DB72AE096D02A61092961094C1E383712FBBB58FB322ABCD0CFE77B98D9C584AD5C9DF +53EDB81949D310679E2D28A2D8B347434BF71445EB9F9F1A2C61B6BC16EEC4C1522AE46C5E9984 +1206FFEBC27388D4952FE629644F6AB7733C457CF939C324DF0C4FFBC5E7BECF655B1F09670D17 +421CFE6C9A0FF4C4D7342E8CA177A602E7FB93DCD456151A8208C332541869298A0EA29A787931 +906B0EF099CA32F975496AB342130F34C92CC5A863029E030B66D3626C88F4887CF5A8A92AA750 +E5660AD03EA55D69EDF466D4AEE45067D5496FF91F26BCDA766476CFDE111F227FC7ACF6FBE1F3 +22038A92031650E9B813AF16A37B4095F039DF57791D3F8242C2C409B37D045001C74BB740E2BA +0D29CE658C65510AFB0D899C651DFC01752F9425D5B152436B04D5DF36DF03F11E141FE994BB0C +B0B7E37D5ED5981FF91DC25335A480ACDB25C48C20EE40F66F5B482A626A4D0DD2689D862F302C +E5421DED7429235723092734BC73D00F56419927120414CF8659CD1F964128BB6FC105A7E090F1 +A2093CDB77BD1C04C723E0F1C5F60BE70AAE29BF0713F86C58DE426819D22390DC1D985F2FF86C +08EF83F2E9AFB3A62EF4958945FE270950418D0B26206545CCD081E4DD18C9661BC8CBB4C2AD15 +1F71D6BDFD16F8FC0E239DA5D19E8C2DC980C367B7EA589A5278901D913600A2AE6728589CA00C +44957816D98775D86D9F11C086A95601730EC4DAB3306ACAA840599A785E4AEC4C0B45D14800C8 +0EA12E04F69836CA05D79543A7D7043DDE89BD573A8A937E27DDB89267C30731E20402901F9042 +675860C2C1EEA408F35561E73301F5DD52591A59FFC7684A1FB9228A3CCD6D321FBAFD05718411 +DCDC2ABB7A588C8FB14D916993B5FBC01409652E5818F2211C86FC21FE154B464206B642B12564 +A6F4A8F4FD5ABB6F48E959FD1BDB8C413B2D6E12EE5286A805117A97E3829DC83F431AAE03A6A9 +3C97DD6640E4EAE56AFB44C1892D3E531FBBC7C1ECEE90583A72F6CFD618CC01E0DE8733D38568 +2600AF19FA2E08FF0C29EAFBE912C289E57F0C315AE24445F1A5AB2F492FA7A38A4886FC0035A2 +7E793BEA877210F272D16771C90B5BD86267F889D3A25546DA863A100005511CED9C95A1E2AACE +E762E6501DF03F146719D3581365260811105609E56239B54D7AD1F0AAB6C7C168C7DCCF3CB30D +06080F32E815CFE2784FAAC58AEAE4F22D72CFCA289BE03F9B2DFD27FB1E2D27572A7400303398 +47AD06137695C113E8C2DFC0BAB9A3ACD2A856D9E7927FEAAE009B6F0CB84F76A488CFD5205AF1 +DC4313B6E4179B1370695509FEE3E64A9AC425A043E434ADED0E5985B293669D09968D0AA231E1 +B2F617CDE5DF2A681B2054EC1FE239E95EE1A11823F73713F9CD4AF03E13A78C2442B6AF16360B +01E8CE7DAD91717567BEAC799962F00A3509E24E4C4882124006B252F9A4C88071629A9C2B7104 +6483958A3D0FEC7F0A48FFD5E98F3C49B0FF8BFDF5824DA3605980B4D72A8902ABB0E0F52636A1 +06605CB90404E57B49596690E4B0591751D5630148B140AD0D2EA236764B131CE42AC418D3EA2E +2DFD09FF17D979E54C6194DEE059501718A14F86ADE2E231842ABAB8A6634C0C31C3C125048D6A +0E96A2BD785D51591B79E2022D49F2EC9BD874FC2FD52A7DCF644F124215C7B9D3DBE9919BF9D2 +138F0C75AC93F48C7F125973BBC8EEEE34502A62986FB8CAAA8242E499A85E43387264D3982838 +791590583BC2D74F1D1E3A4F4723457077D8E538BEB749D35F44F37B86A26C90951CD56A0E5086 +74E42A1EC33FA88A47C248B2D9783D4D788082B89368D73F2EA3131A0C78DF9CB707A0F65F3AC9 +3CC6E81866BBA0D87902E04CB3DDE252CF76344C2A2EE70C9260BA8C4DEA508D5B267A9E852C75 +79C062478C9F224D6CD544047E6643753F6B9D387EFF69E37E8EB61E6C50BF6CC93845070FAA36 +72EFFDF8F0EFC7EEE9D42594D1786BC7F3280FCADE5027ABFDB83E6E8A72C457BD6B2739D263F3 +27C5E0BD130514D98A5FC840558E85017D289816B13C0BA1FCC6ACEB5DDCA6B7F4EE30D1D7E617 +3D9B14A16F330E9D32BE3CE1B92F18D2878A2C3CCD52B2103B082454C60724EC75B08D187E01D9 +EE3286D69B9EAD4D8D35AA8BAE3639B7E36556E1BC86143C1BABD3D05B4CFBD918C4171B3CDA77 +A1C49679016AB674530416738945967896E405A3A7A451F43B14E7BB3BED0CE014188779610F21 +E869A79245AEEDF2D01CFBEA80B9295AF35A7085E4019F499820420BC15E5D3D8450AC979E4499 +A894699D154648A74C6443EA53C851E67F80721930FE61C346207F2715F3E20418A9F58E4C12CE +9ADFE14DE865DB21085783B011BF1CCB2C3335A55B61DF50486A9465BA7BA85373E10F7AC3202C +15806C98F7A8215A89DA4424D4B16A5E352AFFA05A58E5A6B0ACED834D87E7EACDEDD65CBF741C +9EBEFDB86AC1975BB61AE096239597DD08156D26E218A61C1B69C71953447BB7CA6C055F2637E0 +B2E320C1EDD20B7B4E43DEB395DA221CC17F237B81098232567F591977CBAC8678870E1A1850D5 +C019E56069F11037B2C983E61BDB9778C50BBC9FFC6CC1CACAEB4FD3B4CC131BEEDB3C486D68E0 +69303A06E1653DF35D6421F93F05DFE32BB953E0EF723CAFBED7DD829B2D469CDC9F6FC1FB6F89 +4BBD9785FB48F1A89DC2E1208192BB44E7F3DE2D632830894A57B950C7112D76AE978454E0D666 +3F97E8FC2225293977FB65D46A5A64B2BD75DD681D4B5AA39202CE5E6846B872482765F1086FE4 +6200918A34A9C0375CA555FF25C70F075530965858942F0BEBC9CCDFA2515D198479BCE058BC5A +98E014F017D5239CFA21C5801B13619642DB5DD9A2A16FAF1C7348135BC59E31450FE5824201C3 +99E397C49DFAF1E8ED16054FE187A136E5A838976A48A1AD1AFF50776E953287C5C026CF2070AB +8DF13E926E668353197C0DAAFB3BCD64D391E8DA10AA80C798A914D219D0AC05A00D4FED72885F +408293D9E9D952E47CB8CA81F3797350D50EC0B74E526825DABD3D7DBDFBAF7AF4781D11C82D54 +05AA18F1BD75F7FC6C2B135F34EB3B29599B7600912F23680F5190B6D9B06D619B26F1D086D122 +51305AABC2BF2282FAEE69718201523BC2877A640EF5FE8A68E1358BC8C0A185C304D9986A6E31 +FFFCCB726D2BA189FBCA9C699994DC51F65653BBFBE170C39203C4BCEA90E07FC0F45D0E788D45 +09948A4AEF90C62CB4D5126AA30D655A817288039460D3E8A0450B6F3860727224957DEACEBA94 +86994D34743A32EBDD7D0E20A3E318F5288B5AE38428D3071D5DA2D3D612F23617AC4CD5EE84BC +8BCF391C4AA0B721FA25AFE0705091FDC0ED96094B19CE0C8716F70EEC15579C95E4754C394895 +EBD7D83FA8B9DD8B7134E6989D3B51C47600F053EBC134795BAB7C2B7121698284E9313C442E65 +C1821476436FED31A80A8220F02B781A3D19BE6E483699F7E809B1AAA0FA13DABDE873C7DA491C +02499F9275DE49A900DC3D624FD28F4F1F88654CECDE505D7E3E449DABB1417FC03F3E0EF42F71 +0F952C7DA729B45BDAC3F766F512984FF02A178D289954D7FEEFDFD6571A8A36EC673504F0D737 +FD41CD8384B06842BC686EC6B4F3B47E4BA7532649FD57373EBA8FFAC961981C381F2B1C731709 +A9F210E7928F13185B3D0195965330D0F4DD1CD09E008DA25C067735261E4CC2C66D3FB1822E44 +7C2E3C15E815DEB88D2DE9390B179D4EDFEA55E78AB2B0CF12FEB75967D857A604075FD20ADDF2 +8BCF12C46347463A7BCFF3ED8ADF441ECB3F17F799B3ACDE848CCA5B920A2087EAED1302C2F000 +CB9396EB83598F891ACD25763F567BA9E5F3C4916C62D8DC5FB3EE188F40EABA66F51AD59F7256 +DC4977C9408808781A5B790AA26FE9E3EB1118D535A76E6445DC5EC4554A4C1A06FD082C8C1D4D +29B3CD4F77CFA9356E7F055EA5062151B272CB8A036DD5F891E4DE82FBC877D9816F4AC9EA007E +D58201808D17C5B7C0780161607EE88B6640780D23870D34892956B561B0C1910F3B1CC8261FC4 +17C49A520D7AEB3239B7DB86BC800FD1014AAAAE84DA78F2FABDA841E82F102913C89687FB94D4 +3112FFCFAD37D49D2532F9DC3506F54CEBF3D3D5AB4F32D96A801CDCEDC7D9002019EC48DFEFFD +62F7879D0C9FB2CEF3BFF219A397877377AA2B970ACAB8361CDDBC1F38C5F7D9397E2272751DA2 +CD98CC97479CEC135A2496048FD8050FFA680BAE058CA5264E738D1699826FB12A96A6D328CC03 +19F501CF5AAC51A62E6F587FB2DD98881D69FED686B64D92FFC5B1AC2C957EE5F86CC9E5BFAE3E +73E6507C5809A576A59268341EB5E3F863A69F0C805A98696A5D764E714C478B544F0095BCB352 +7D00C34A67EFE6D156EBA4AF22AD493F7EE841A8489818047663C145DC04BEE4F472544C9A2018 +2147E184BFC894362E366A757B586FCF92248DDF8B29BEE94B4444400B1764EAEF6CC8110F1371 +D34CC38A939748CBE0226C110DB1C67EC241F07953B61C683642706930266E07309655962648F2 +5E981598930F3EE4EC0F75614F777742D6CC0AEE86D7D5111D11D5077297B5358425E660A296D8 +3832D37985D710E0F9EDA67875EDA4B75457A9573E3DFFE441029ABE0494EBCDC90C789186F0B2 +97F90ACA2D3BE84610AF07E347FB7694FA4E216A2386CBD1EBE70967A82014E8503E2E97AAC71D +60DAE00B786A95B8428F7726BA74BB3752F56894D4813D0434D0026F1703DCB3631D69082B5D74 +46AF8B5660688DD97DDB83540E2A69D4F994FD94413CA5AB52325439224E0906128187180E42E9 +7324CC2AEB60E5B327CA998AFA49854A59841C5C50E4159242BEC79D2E5BDF9373CCC510B3FC38 +204BB02BF88DF702FE5F2CD11123C390C6EEA79F7F1C4A294A9137926957D70C47D7EED1047079 +ECCD09C2BDB154A95A4F5BFC6CB708409E3E1A0DDB421F3E26BDBC0126212425D68F3218DA415C +0B03792A561B6B6E02D84C83534866A8B4397D485FA947E66839BA118BE6475A8EF384E597B99A +C24B83ABC9890BDBC7946F07C43535A9C0C53C6BBEBD25E85D7DBF87394FDAE324BD1CB4288B89 +31D3BF747EB89B356B3A11F07585EFA4E4349A40B409AE651D68E611122D21D9DE3425EA845568 +43A0E9D638B1C24E55992D6EB5D7A36A8035B9AAF0D8D71FAB9A3C20BFE5FC381E6E353C8529AD +44920C2B8A1D4DCC09FA6DDAC7C540D24FB55D8EB38C883431FF49DC1DA22445A6CB438E6DED85 +699290D3EEF81BCBA53D977C0B32B2E478CEEB7126FA359D4EA3C8EF1D0F6C3AF075B2E94FCD5A +ACD0531FF179735D94672A55C1D1FFC3842BB13CCC3E4C81B706A6830A1E502E954BA2F6D57CB7 +777CAE7EBE73ED1FEFB88F4E27DE15A052185CF9DEEEE665F38703AA7AF90B0971628BDF8BB1FB +21A30C3CAF7495425150F6E53A58F11BB6CDF949066CAC1352B7460D33FDB76287A7C55C9123AE +5A2773E720509A9F3D391553BED505C28E8A68EAB0C4231BA858934FDD38C725D340F21FE656D0 +002F6571A99FCD9AF5150DA9B55D796F9F30F4D10A7E82DF3B55462BE4EEE3F22D484275D60F04 +D3B1C83AAC019C0C46B68A1A3357A65A22A36CF319F53637DA1AEC7C0AA003E75491C0CA77BB7A +DD734E0BB7AA3A30ED0E228080FF71B952DD328D938638738697F06831826400DB73D6E2B260FF +00EB6130B3868D3C204EFB65A2F00CF5BB2CE4B464E5EED55E7CE33A1702D272069C2B291212AE +0F7A0D3BB7B82DC5FF2565E40B0963FFB9ABDE6DFE0A5EE3BBA96A3CD74D4E9035849C7ED677F6 +84319FBEBA5A5B1B2B9230994B2EB643B9F395096B46A7BDE84230662B72077FC96409F1B237BE +CF8CD53F27F690B101799B9FEC896A52609FB368DDEDF466AB17CED2E756D2A9026D4D26E303A2 +CA619F746C281A9A6AEA0E08CD0D1A7AD1F9CF7C6EC91A35AFCD6A1F59815A702558305398B0A1 +4A5AD71B085B9B10325C732D229A9C98D8AB35E99B31CCC4DB44852E5BA6DCBE8F759F54B3C10C +BC761C1E576A38A788BF5CF46D68F8427E2ADB16E23A8744039F78F637BEC3D8F6D239185E9381 +82475AC85FB8112CA4806D13455EE4A903CE5C7C7D5A8BF0949D70740ED6EFD38866D4645028C0 +5F16836C9EE77E775626BD67AD61EF9F6D7B72680564715641E460E09A741F30777FF1CAFC8B43 +664F96D15E4F218B04D462C8D8AA91B55765927B41CCF8B79F89D4C95FE5A6B55E943516C8C674 +0F43D3681FF8962A0ABC7BAC47B06DA27FE8B1FBA3039595F52CA33845C1A7966308C006D6F828 +108603B42229012F5366B77C654AA8CF6980FAA68A1796A1C9DD3C8C01D144CE40C669634B2FF2 +946907DF407A2C5F577D3785623CAEA75F5D18E2B3B91D595CE8BAC2EC742ED54F17D4F912E115 +4A6866A5E3DD49EE48B407FAF34441502C6AAEE95DC123EA266C27F6924A44263AD1238FBC0C88 +22114FFD6FC5A178F22D993639DFDE16B1652881F7A015AC88722193BFDF10DC1C372916234F11 +591016A8B5C2055934EF10C079DC83BBCF396DD19C7E9E112F94A871ACCE631683A8C886E4E10F +218A7AD93B0F4F83B8418C0984EC0EFC3ACE47E7583F801D1B514FE3FCB6D4ABE5B6C3783F3026 +502212E265243963F6F57656ED205CEC6A8881F37B1FCFD2BBFC09D1608CA43EEE74229369A215 +1A916D40B2650E823BFAFFB9338BB43369CD38F0A351E320DB42BD62A6B1A53E0AF4E0BA92DA1B +D5DCE62194D041500173E02835DC3C5A43467258A4340C1B6DB48B612D54110D70FBC038E947F1 +80ECCB983D2204567BC2E256C6AE46CE9C13E6B576E2C9FA5A00840A61D078C80C1C7405A6CB66 +BC23CBAF1C5CDDE62CD32A84D587BB2B3828B088C56831E6C073AA50AB4CF27FC74547554C491C +DAC152BF20AE1E14E31A7EB4C45A11DFBA32CC6B4D47488B950A43B12AB7DF7BFF07005FB64503 +D00EBB085706EF3AA04110C671306F763273E16BC75323AEE529DF5EED8CD07BED8A635376AA88 +602674B619B086C8B46339FCC077399CDE9F054D50AB2EDC80BC73DE4332CA8F8FF3D4A2B2D461 +3BD0B29C7DF001FD3B7CBB4666DA2175252E7E55910DFE6706CF744CB7C24CCE4CFD4F35D0E0DB +FA1C336240743562FD040687693DC43397B012390833FF786416BE97C2B8E16897C3EF5765C988 +7CA6DD1A3A5B2CD07507AD852A7D694F2FB9E1B8EF8D0581EE6C80094FFD048A1623048C4D4DAC +AEC1303516A43F08736C003246885184E73D8C0312242C33F33C5FDD86B4B952F86B8008FAB05B +38C697BAD2F87115E88C90B3F70E53BF6CF95E50A39FB028681746DA3431DA246E7423E8F400E5 +659141F09EA274219F1D99EEDC203B1D8B9696F66EE89643B6412ED2C3F41CB9385C30EA9332A4 +5CB359E2739612D7FCECA55C2BFDC4230E5CF89E7021F4220C22B6913F69ACC5F65D7374214EB5 +1EB691C53D0B1F590F458A4D4A385D7826659C77EA21504A7EFB22758ECA0497D059437D70CD94 +05DE2EA6BC506686D07434C6024273B49C009169E31F4B719429CBABC11473EB70F07DC2372D11 +BB2C146DFA378825C0F2857BBE54EFFFB74FEACEAF15ED6DA597FFDE9377697C0E472B7500B9C1 +6097BC50F38651D40CE96C50C9A6236860A8BF8F469F83162324B5296C50D430BD211D8BD0E4EF +0101D6F67DA8C348861E85B35A2A4992D6A4930AD1D26C6BC5CBB999F83C727D5CE551B98C9043 +D10A648D8FCD959C9D1F83812CDA60FFA8F8C3F88FE8536CC3FABAF59C5C174580B98D38971623 +6284CB20F900D8B793D37EF566A87963445862BA4EFA880102C87F608F0CE734212B0324FB2D2A +083AFC582CA20B744DC01BE3862057D746811E95687D06388705421C1B8DB69218A2A706D3CBA7 +8A449B344AF0F64DEBB4FEEAAD2C873A42B2A934F93C0BEF487B33DB2570723194651C204F1201 +56E09CEA13151E7E49703A3124DF500E780CBC62DF36502D2E6F5C57CFD1210850A2D35AA40A55 +603D3E56591E33E7722A282D6A8E1674495E12E348954B7CD0F4A4E4DAC080824795188D8A478B +243EC611CE5901A9BBEB76EB041AD162619EDF1D3D83ED07F1152401D2D5A03E6C784D6514EB89 +6ABA990FFAE09BF057B912A27DD2092CBF5157C904DA4B566114A37A7D9AD0C0D717EFB6C4AECF +EDA8D6971897E7D0FB1E685AE00CFA46F11B4820B31EE99098EAA2505E531BD1B07F41D550FEE1 +16F49073A12E482E9194C3C5D914AA944EB0A857AE2B5647A2C9519AABEE5ED6F356852C5F14DD +0852271FDDAA5F229AA7151D9ECFBC4861D5E89AB66747272FB6B8D49ED0709EEE054CD07BB917 +606BB005B6B2FA4B114536EB0708C08B5D7CCF46EC19038D93EC063DC3DBF39B25EB301B4CAED5 +05AC18AE74A0AE4494AE38736B19FC4E6B10227CB30940BF72A4704066D1D02626EF650C112A7F +8B8EF4074748BC08CB9DF80A0393793BED309D6DF2DE1F3D8765D992044122AB317749A3F96D1C +E8CC520555B4C2352A4FC4D92947B60F13B9D5B7A5B47AEF0363A31CD9D35DC0F34A051E369400 +D2AB68DA7BE1F1A374084B5522A6BF862579AC6F9F45D1F29E7CED5041DF262CEC4D529CCDF8A8 +3A18572D65E59582F8D75236897347892D9FD0DEA75BABD0C31AF5D690394B228E835EBC6A5F05 +AF40BBC6B35F8EB3C9F76AE440CB1A2E88A4F27510F67CBFC15DC29D82BF07796F6D8F793C34B5 +D308D8764E9EED3EDF5D328FB1955CDD0719BEC23077A5080A88E9C95C705AFCF13C85DC533B77 +6A15AE7DBC452BD2A75451CD7FE36C2B24B9044DFD9784D6B55D79BD164EDBDF735E6C486C9C9F +C5A3462212B66C2E8B3C1DC01357B02DFCB8AC883E7EC27F519001E5E8397D81BE41EBA7BEB413 +5A36C4E9DDD08D27C9A5B9AEF67090AC69F122DA5DF10A086ED8EA0C0A8D8060ABC76E7878AFD4 +7444B134EDA8D78E2271374C7510658B16A9C5C4833581BB7EF970F9A6A4F09B238EFE5A8B433E +A5162C9851F74F75EEBB1A4D57B0EA29FABFAF4D2D7D8AA8BC4132BCFC9F0EC7E841288BD234E0 +6F910BCB4456C7ADE4182C459D3D366E2CF72BC6A633E830DFD85900C3696A11D2C6B79A822880 +F3560DF7B51A37FC186C48BB55F1B91DFC8622D193C48438CADD95022B3269A389C2E60C9C2800 +82C096FDDA6DA3FE1BF8369F4FBB5AF739485B83BA055AEC9DB88C23DB6C5F751966D482434721 +91E85857517308281CB32C386755A1159B1ADD7181405CA3D686ACF18566BBE1860CC3D4DD979A +D6125C6A796D9C5B9B19D03E01DC7C0502F8F7E330A87F8AB8DCA128F914DBE36434DCA8B164DE +558C9F3A7B39C07135CDBAF5C6A6AA5B21972EE56521C7C21456BF9D462BD8EC6F838A006ED0A2 +84EB344C819791B014BCE095A6558B5294506EEFE6D51C935165FA4D0344498941A5E42116BD4E +C9B9F72F4AA2FF794981FA5C9F5FDE59F62427BF17BB7F0B2AE94786CA197383A6965214895558 +6540A4DC1071767E23310C3BD9877835098912B16EC2AC50EADF2035EB7A4BA2F48F028414ECBE +0352BD409792DC1B9780A10BEF8357130C201917FF4956437DCD2E35CD0B5629AA37EF7DBD6E9D +057CBE21442DB22F3B9CE9064289CC8A3882A6934C1C7C3542739E1D56848CDD2D03701578FEA9 +AE283D393AAFB58D5A93A16B5FEF33772AA47EBCD4A33B06A2CEC3B45C553B5A63B1A33EC16FEA +A152B1D248C207924A12FD27D871175591D93E23EF5108534FC75C455311EE8E3F2AB408A2FAAD +738DAB33BF98A3396CC6D5C3816B65E58D8EDC18C72CDB15540F6D62926F496FF4107A52154233 +FD73427D3C00C4455A67705300681ACD21931C665E9462BCC800D25A31A6BE61519FA3487E6721 +6BB21B579396CEB620B65FEE8FDC9CAB02CC5D5C8CFF9A284274A26F7C5BCEEC6834176F63A1A2 +7A674025A61FDA661584C04D5C80F4DAF73A5362F67FB8064D5079406EC0D115A79F292C893EC6 +0BC24FF533153275E178AEEE1D0C2C84D28D23DF028FD364FB2F9C13141098CAFF49C322A9D8AE +D0E5F195FDB307B0D27D89EA917346AA73BCC436120E711FD36092AD7CBBFEFEA3C6F371D0D29E +AA047229A12836CC4F3E1FE539338D4FA9E15E2CA242B768FB35A7E76756DC1EF247E49FD40438 +19F917F93DA4D40156E3AB93E5580B56BEBBC1899C2E3BB68CDC5B70642788FA475E1F0C71A532 +739F4EB3C85FFDAE230FE92143B8FF8DFC928F9F72B97701C2A5844BEA5D263FF3DFB11AF92B65 +E5846A68EC81F9EF7DDEE362121AAC5DF1B0C29C6C32247ECB52A9725F65BDCCFFD0EE535C8C77 +A02E44E274988827C05FF6C78112BA5AE29DD7AF086ACDEF0372B198E0303A257386315392DEC5 +7C0BBF78A04AA1FF28F927FF6B0AC8A76A22B56CA963B779E2081CF3925391C9027AB0C5533EAE +1B22843F0AC72C2964456B56D8BEED6A3C76D6A675488C43471401ED4502351451C1CA0A46E380 +D41E370D2BC703ED34B8682FAD0E9EA71E4A5CEF5890795E2B5B09FECC763FBB40B6B2E8D07383 +CDD0B084612AD2266A4083DCC3A159426D3420B81B1041C5EE4120C925C1A952EE6DFD759908E8 +E1CC882C12DEC431C4F66EC3B5F3CCAC728208F1F841E477A276ACA2F42AB5399F762B9C70E728 +39D284531908AC8EE939BD049BBBA6BAF1C536E40DDA2412FD9A6EECAC2600C49E10092E73B91B +670AE675217BA39A808ABB34E535F5CF9A202417CA625121DFD6F4434155BA437EA16D0B6B05CC +BB3B161785B3856136A5288C4D14F406361CEB32410BBC3252ED6497690D49A3A89C40A16F66AC +8F9D80411BCE174F5D57BC07968164BCA4AFF626B6F675BE9F438B461D2A35EE1C1F559096BB04 +2E174AACC03CE5C68667F8A59D2B2B7DEA85040EDF8F3175A14BA3596064EDC67058EAE7F60BEE +1759694129264973E259053A70FDFC27E708A8A1D40B451061101C6DEA814F7C9318067E561132 +B57DCB9C67F7DAB6C5FAFB9DF7B6B53D45B8D43F66469DE6831A40A5DA32A33D5FDF9A3F266A34 +6E4A2E9D52F68599DB0138C3B08436C0DBA0A553F6133672860345B77353BF9EFA3FCC80E49D8D +F84F85F1A99F23BF470A9314DA381370BEC348A37EE4517D3372D33E528F137A787CA9956E9BBC +C8446E71CFBDC6D92B241AEA8A62B77F40A630F5E72F623C18C9B499DCF511FF19C40E53768925 +8C9C933CACD974680F6E443BBF3CF00356A498C63A56F68843FE5BEF635A4A671874A33133D525 +E632A10F62A36120E5BB9C2216FE80DDAE94CB7540669FD0BC404D361BFD34EA879E50A44D4071 +949AFC3CB4A4E4181CC30DF9DF63A6A30B38EAFDF30158A1CB45F2E433FA4DC62763B6CEB411E2 +442124F95DF503C4FBAEEBAE7681532B9E5936716F6D585F51B9871321D5B7FA5BF4704B0A536E +78D00372CADBFA191E5E3CE0AEEACE1D6586E9D11A0FE37C9824977FF1E6F95019930510137ADC +C4A4F4C4ABDF76CBD32FB977534DB8F49EF673AC29C1A559A1EEC69F0EE5A42A24D20327CFCD0A +BC278473031C3F2CBB34BA6E424D990AEC6C756293821C5D439D4C8F54319C4BEF22EE740DE2E9 +3BDF51B15FAC6E469A01C1B5C5690D16F9754A8A3094E751FCE11000F991C566C7C1B8CBE772EC +80B2A751F829A4058A28110013AF4A3DF7DD7124DFF0F728A25EF78F78EF33A97373DE68D38DCF +D1E29CBF549011A71ED451B1E7EDA255A14975FF44F1CB448B71B09E82E8DD5EF75716A6E32620 +658D229108B8209287C2CAD6346F0E8BBF1EB99BFE8952C4080AFCB21F58DCDE2E73B02428D2DF +7B29C43DC1DF324A73F480685198F8006C996958AFFF6A55B459DB50FF2A33EF43E31923518FEC +28598D092D8205300026E04907332830823CDE60D062E0BA04CE7C801775012B4835AEA56FBA80 +21097BA760632CF097A0D4B94B5BDCBC2E61EFAECC791FD7202B00E678D6B76F891B918F63D494 +72BC7C5EEF4BAA30ECC71B5DF6315A71095F9E769DD0887C4314AEA236A8EADD9DB780411C0733 +7E337744BDA802DE4906C3F98E644C638E4C86D5F2A7B2C17DACB10DEFBEDF030A580AC847C0AA +56D4D4B30B513BBDC1105978412EC2C36DA5E4F1EACDAE3426DD48898DF1DF0B0BB91C3343B487 +14EDAC8BAA025AFD729DEB9FC96432DDC0D782D226726368B516E8F266855D7D02472D605AB245 +084B55FA61A0CAD04FCFA9623DDCBE109B2AFBB69955809E2989B5453793032D1EF7D7D8BD4E10 +1456DE181A8D7DA06EFE2644F184928270400D29EA969154136D1E810386835E2A3161A3074BDA +1DDA9B028910927B84B44C52DA2E3F0CC9033A1ED31743FF1D04D281DF1D62735083E0AABED00D +C0090B1453FA60E5D16AFB16A02DC028A418F357951710B45948D06CE7BDD0BECBF3BC2B9CE44B +6E47DE415A655F6D78DFC36995DF01D28BB52F750FE557FD2A82E36C7B6D9CEE9DE4326D69E261 +74FCF2D3F78C7F68EED0374D80929FBB08419C9D2D7F55D1AF8C3639DCADA1C7DFEFB7CC17D807 +3614A1084659277FF822BA6DABC3371D600A14120DADCE7A1F29257ADEA32DE6186D1E2FB54ED4 +B9BEC1F268B90656B224757015C35355841698967587305949A7158490FCE4F1BCCC2A83DA26D0 +F1D7A9912F8462722A58F5D0A7A4DB48F527B1AC5763E6B45A41830E1ADCB09E0F336CB97CF239 +9513DFE02BA8334B6A7EC74C0F3B0BCC61382B69D062304DF98B09F1E13291C97274CA134CFF86 +CC2A823BB8A1BEA31B8A25F843B15273D0F1BEB8C18B3A2E2027334A27B5EFC4CB0068C79E5CFB +AEE391D8BE2C4CA0F8A630710AB09C18C0DFEDE175ECAF12063631E9B25C6C9FBC3D49873002DE +6262BCEE73E4716DC30D610EE5402597F514903E5EEDD8A75E5A6FA117A21144AB5B338C1D4B35 +9210169EA0726B14D99E48834DB5D15691FD9095FBE699C46C7E6EF3790F6005C05561E053800A +B8E261C17CDF355646A1BF29414D666FAA5C1EC43903DD04678CD1B5097513C0C69EDCFA5D71F1 +D3E540EDD11D4B72ECA6C590A57A41EF5CDBB09DEB1FDD6C823E10EAB9E6B9EF02F4045696D615 +AF4E01796C2856F376F42940CFE098D303C741D0257EC3CBD7FF2D33ABAFE8DCEBFAE575ADDE66 +CAE813A0451E5825AD0234D045630711BBC3853D130544E0B0E787218107450078D6F380303DA4 +DE2A39A9A689AC4337D255477A7D0ECFB746E129F779D1F45F86F7F0E141923AD062E6FFC4134B +6B15B2811DDE5902AD397044466318B4356DACB9C6DF0CA786D3D81EAB52975D5C6E34D32B28CB +608D91A4833D5D35A777AB115290A4BFC8EBD24846736B0997FF9D5DC471AC673984AC8E8BA510 +95442EF37C5791C650C3A50A2907E0447A6513359D001FBF3EEB4720167AE69D2A6E2F8D068DCA +BDCF141A61A956AF4BE6DF3EA929843344F2E38951B9EE4D38D2E51A195842E61436C77E7D953C +AB3FB8144AFDC371B0DDE968AB88493C15585570F7DE881A1724C0CB6E8A3433E6E85320ADC362 +734A1C81C1EF9CEF1B863A803F96B5F1F61A05D61B9992E99BE5A52A58 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +%%BeginResource: font lsunr03 +%!PS-AdobeFont-1.1: LucidaSansUnicode03 0.9 +%%CreationDate: 1994 Jun 04 09:58:17 +% Lucida is a registered trademark of Bigelow & Holmes Inc. +% NOTE: This is a partial font in Adobe Type 1 format. +% The complete font in fully hinted ATM compatible form is available from Y&Y +% (508) 371-3286 USA, email: tech-help@YandY.com, http://www.YandY.com +11 dict begin +/FontInfo 9 dict dup begin +/version (0.9) readonly def +/Notice ((c) 1993 Bigelow & Holmes Inc. Pat. Des. 289,420. All rights reserved.) readonly def +/Notice ((c) 1994 Y&Y Inc. All rights reserved.) readonly def +/FullName (Lucida Sans Unicode 03) readonly def +/FamilyName (LucidaSansUnicode) readonly def +/Weight (Normal) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /LucidaSansUnicode03 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 148 /0394 put +dup 154 /039a put +dup 166 /03a6 put +dup 173 /03ad put +dup 177 /03b1 put +dup 178 /03b2 put +dup 180 /03b4 put +dup 181 /03b5 put +dup 183 /03b7 put +dup 186 /03ba put +dup 187 /03bb put +dup 188 /03bc put +dup 192 /03c0 put +dup 193 /03c1 put +dup 195 /03c3 put +dup 196 /03c4 put +dup 199 /03c7 put +dup 204 /03cc put +readonly def +/FontBBox{-615 -440 726 1024}readonly def +%/UniqueID 5054503 def +currentdict end +currentfile eexec +E98AC76D0B9811AF896A7D2786CFE5F8CE68EC0023DC2681A7AF04C897A42BE5FCFE91943239A1 +3AEB5296C6852464267094E08A45F9BE1C443CDAE11667C6CF7AB42711A6CCF9077E8A2D8CBC30 +9D38A0BE6B8A865AA6D108DC56579ABCEA85FD25326DB34A8A3B77A5424AE4100C2EB6804EA369 +AE0896E47334E66BEF4DCFA3CE9DCF8BA26773A39C77A33652D76918EA4BC304D746DEA74382B2 +CD2A6283142BD4605E129465DA84867CDB60E18F858C99578A3DD3BACCE03A8A6990C27D045C3F +D9C8550A2552A64F9F431169CC4AC1B9B275DD9E6D5F3DF5C70E8F657DA036CF63E714A17DA9FA +AF96888F242FF964672AB6D9CC68989DB538723337304795EE327BAB72CEBBFAB6A376093EC250 +7E6CC4E11275DB4AD7283811195AE1AF7C8235D220FAB9F10C43D291F873D989F30F3E2BD37AFF +E5D4DB432C168C065D446F0B3D58981E981E9FE5CB773EE40AB01241EA403188FEF5B1AAE43FAE +7DFBDE6A367FC7D6F418E569D7CC7B3D20FCBF2687397122164A647041D12714798560ABEB8867 +B266991761555A15A26569EB0FBD0137EAA54C1EE6010F0793B0896AE1CDCAFDA76DFFD032108D +FBE81D02FF87E094C0012FDF048557854A7951C19C117397A81FD4C8F2D32D5AD9EB1E49580125 +3BB1516DFADDB20EB7142443A1A133A5474EC8EA29103BE5554C41ECAFF76786FCD0FEE4971FCB +646F02BC421A7E4D1E5E0010A9079D17364753074ACD18630A5C6ECA43EC7C53C4B1A5DD0BEE88 +9201FC8DFD39CD0C81863BD765FE7C8CA2A69D992034D8B8B9C3486D26DA6AADB594B6EE99959A +445C809D1D3EBA95FF9429FB957EAF9B9C7E3D814B25CAC10658218FE2993828ABD4C0A7650362 +981E23E95B851A8CFA68B80D4DF911F9BF21343BD3E61DCFA86F20E96219FA1B9713677BE05602 +A6EF36F450877DABB0E42F2DC22538C31B680915A634C6D34464C3EFFCD75E60B73428ABA3832A +F9426BDC82D30589727058692220D02B5D64DA3F8F06BB80D08B77A455702FA9F2A3822698E02C +DBAB8BF4E63E39D377C60853E3B8F7B12AF04BEB45AB27036BBDCF6C58A80E3B3A61563E026C72 +4CD6E7C407B7404F301E7B1AB0EB210E41CD5148396089023AE9401C80831E627EDABFD4E30E18 +EAE2DE1884D7A3813D343CD12F9B13D935199CD744F53273DE6FCF7B0F6105BEA2176D26B9E3BE +794AB2120BF13BDA3E056EF6D06F8E219B54E3FED9A7CD767C428375E40351E73663A739B3E77D +FA3F36125473E7FA6FBF4A99A69AE1DBB03CFC5C71D2D941A15C1DA9C399EC307DA5D75C8B02FB +448BA23DB70233E83964B29CDD5101B404F505D6C8462A37DC5DA7AFF8145444ACD627E8933F24 +7EE0163AB6CF596E882A8B123A102953DB3D0394840A2977DE544DA405D8299B2AD3253C188EEA +F07D57FCA1FB375B9BBD397E1A500DB415964E518B2E2FF27A3480B58E320EE8AD0B76BAA2635F +3632B6AFC2358A3A332B773848742A11E957ABB886B3CFFA93999A478821EDA9FDD823EC8818B7 +2BC26EF0ECDD2EE498D92638D2BC8E19A283C571CA8C886A8F8E647DEC4D6424FE9CCA8308390F +78F361486C56B9C039B14F76EC5BCD8472F4E6FF566368D5FB7A55FA0E887E9CADC5044391FFA2 +21C598CC9E2CED7907F736F0EB8F12348D64EBCA0672BB8F1E651BBE785A09A34223663975B48F +90481DBA40982C8857DA5EFF13E9F5BCFADE13F02C4C5D4308CB09D6588A7BA7A2E1A4774701CD +65C7274D0E2F92AA0CA4A2FFE596733E61BD589D9B5E84835254D8F22DABCCCCE8D4760E13BC4D +6E85BCE03DFE296055EAC95B3523018DF17E8166ED03A23E1A7EEA0AF8C65F219A8F5D7C6F3253 +7160E12174798BFB8AF179C70A8E43C167E1DDF34E47F46543CCB7991B65A2FFC11F4917964CDD +C539C2E51E503998401540F23FD6A52F81F6792F2B97EABE2A74B9F58FF2C891E320DEE3ABD153 +FA43F9B456414F8207600AE3DB5283BA7A0F18FC16C58766C58EC1AD813E77BEBAF90FD8D6F55B +25615FE74761320733B58B545D584826E81F2849E1875490F15B774A3A863A20BE5A2EFEEC6F9D +337E5133329C0D4E8FB4758FF97DF0C97127FBB5F4C768439C8B9F7DF2BF3EA516C268FDA3A305 +BC2485ADB785E24A4BEE9AA3E7C82D3994C19249A3AD713FDC5B5C981A18E3D35AF4CE2A349C22 +E8923619B85E3D3E4B314A1BA051A506824368F4CAAE420FCF9CBAD8B9AB38463229750C31FD8E +B4042D8174F9C94830855B547B95210E59A601A076BEDBF121DFCF34440F65E46365871F3BDDFF +74232CA8267CE9864E4C4CF8D3A0AE94E57FBB2335AA4EF757CE11F554D8BE69EAD58004BE02A3 +B6B8CE3F5C5CD23013BD57D15D447512FF69A9CD5914A73144D71F06550E93695F0F6CDE77C1F2 +59AB5BCAE03478C9B172B792B16EBAC0F44F97C39FBA333F9BAC6123506028FA93F2ED96F88F81 +8A3EAD11809C5A5F4FBBB62C25C9C5B68B82C1C9734DF1989B00553BBCDED535F6224E2F74E18A +29CE4568C3A6B0CF980AA1F7CA1F396D2DF27D4A6C8B9E104B5CEE96CC4CB4399EB2D17269B64B +F50A3A0576EA17F41207717A2367094EC5D35DFEBA9D1E0AEEE710FA0E2297C91AD8D002E6C0A6 +FD46D5D123BA55B2595D9AE0C0C730966B1BBE3F464379167D8A7B817782DA4EAD919BE0BD1D8C +61FDA8124098009B17BD4F4A0C189ED085CED24F05A10ECB9D96F2CDED8B5D8F10A4BA62D33F94 +FF1FEBC20C9E64A7DB41218FEDFBCF94DA4F16CFAAAC9ADB9D24DC1958BA67D52F9625126D3F34 +4C7AE7634B21608049D7D30D302E95726FA7CC91B445FCFE464D6E1D79389404F0A28F8DF0D27B +AEA1C69B435B2CBC979580A2175B43F0CB739E86D778EFFB25D9C316903B82274ED9AB9E1ECBD4 +03EA7EE377A11A8EC6A8F9599879878C704B25D4A5523F759D09FE3655FEFAFD834F9AA8C75C07 +4697A890A38839FFBD754AD936EF8088D20629BCC0A9DDAFD5400D0C596391640FCF4A8F5A1155 +A383F32ADB70FD8E5AFA66484B1B6895B6F2A7859537C2088DEFF14169DAFFDF1E0ABDDC646682 +324828259958699EB1B21B7638E3CBFECDB9544F3BE2F00636906BC83568FE854E62D5BD752A38 +084421CEC5E659D7A9BDE211E643950843A0159D6834A2258933F8C001C67B073E9C9BF7D8EB68 +BF061B1966866465C8F7E1D2DC98F39F3A9A0096D62314636CED9B4E2E09225760A78B1C58A1C8 +2BF342F7940F6FC838F4618898C313CCE6311DAFBA75B344143736C7EAE29D4DBAA4B56BB3781D +D2DCC86BE5A4C4DE100BA03E4B133A239B7F6C3ACD1C4B4FC59CACE546E74591C12BF7497F908E +BBFE7160563BB47FEEB502E3B5B21EF579E375BF8B29ED72640EEBD2BB10FA2B1C30ED5EB0A089 +46EDCDDD233DBB94E95FB0012CF8BF944B683DBB52C90A08E5D53B2197FD4FBE9AEEF3245D6B9A +295445C148C20C597CB2F705512F3EBE2CA9A63E1B479A49DF54AA5F052283ED369865676C7470 +1D7F3D4745944506AB5B2FB450300BC1AE7B0F9B0A3F1BC5499A53962C4143455DB5B3C554FADB +AA6FE569A1321DC010E5484EFEC85CD8CE23C89C87D1AA2982880C56109F596DCA8258FFE48384 +1B2672711BA606DA73552081C55D0DCA31460F3C81D4A8EBC7C55A487F2C08A986403E209E52B1 +A38AB94F399D667720959DC10F9675BBBCA8BE368C3DBE8A3C82224DA3B977B0ECC13EA85F775C +1BAA1EDCD9E1C52E2169A10098B56C74E2597E5BBCDC693E27BD947033700DFFBA4D2BE22C8C0A +CB0D4CB909EBFBEFD2F66FD53157E4BD02E8D027A060BFB1452FCDF79ED71245F021D29A21D16A +8D8F2D0B53DE50B6E98715D2042E2C46B7C3D77640170993596EB481FE6A6DCFB6FF046147C68E +241E62DD123B598D408FDA25A5FF8553B44FF1620FABA4610F905C7EEB946CD6A09D5EA961FDB7 +9AD3EBF9836DEB52B4E93C4F1A1C89140272C4955908203C803C5803161AFB2C9B3510CE607F9E +2BB8AF8BD19B38D38F7942446DA9A92770333F8FDEA61394C4C1110CD91E95D3C4FAA33841D79D +F1CA42B0115ECDED6CFDD92D36A2EEC3A2904C354206B987EBA4AD69DD6B5C7A45B96106593C15 +F89796CB639575DAD7D277E09D347A4159EC19A8D881E6EE3E9093B51E9D9B1CAA1F0809EDC2EE +206F733C1B11C4292F75D0F37B25706AAE5E7900726478DAE756A7F59B4D0580D2FBC839D6F31E +086CF751F1017CD84AEFDA2D318835DFB74C02B01FB151D72C4A84D0BB976A2C35ECEC00CFB83D +EBD59C29F54F229E087C1C6E6D7F72F32685E2AF4D4353499C399F2438D18FF0E011A0532CE68F +F5B644C3D68754CA5BA2D48E0E23C80EC34F43468281AA347664D916F56E97B9F0E17A894DE514 +9800C5C7B78EDE6A882D5180EF9F51ADA5E3B511B07A89CE1680963DC3848182BDFAF361D9A893 +830547B3FCD4E412838E214A872EEA88FDE6298B15BB69FF9627EB37C27F89071F9DA74F4D6C06 +37669C6C09BB543518AF798DC1B1A10E2D53D24C3A5B1A485D6B8179DDDEDC7B82D610766BC80F +A1B2C3D3A4FEA53933A6FF83E85DBABA6F5EB94FC23EE28BA710427842803E0F375331FA1EC106 +8C396CCE31A8D68B1A7A0EC87CC082A501F711E93B9FE3DFFDD8906566B7B25A260D1C64D6746F +80A2D323058BDA6BD4122F0C04B39A4FA271E7B75A1D8FF82782540193902C88CBD99E55B33245 +069BDA735E4991447209892CA9BCF5802D44A09BE99EA64ED4EA1FA39B7AE10D8B47ECEDA33D80 +F8BB0684F289746D5D2DCCCE59D4E6F48D8F7EAA81129BC47BAD6E74F4ED9B3032156B302AD7E5 +C2F79E5A0A9DC77FB986BB46F4039152EF22331FB70C5AC047EC864F5EA5EBFDE11B5EC4081CD5 +FCDAF37B47C5CC8AEC7CBF21939F89C998AD080B530E969D39607B30B5E4474206902CDED411E1 +261FA85AA8CADAAFE9C8D0CA713066ACBCF385F4CD377194D26BBD5918096A3ED2C287A058725D +BCEF5D6D2A0EA6300BEEF77AE3C6CC068649D077A38CA6884BA08B9523E51DBE0DE61CF651B7F1 +27C93CF9A756A521276CDF6ED0FA7F4F559BEC19DD8252CB5409CD25F20D73D53375CA25DE2CAE +C1D980C6C0B99D20E3713741A86003237A291A0815FA13865649B802C08B28312C61A95910F8EE +BB51351AD5D919FB238D9BCB5C0653A14258C6899E22FF0FAE8B81804F3112C598D1C2F8860063 +C751F39CF1B7ACF3DE9E9B6F6FCFA55A59D5516C173C90B491ABBC65EB3D93B416597F22825D32 +22D9E6F5F7B993127288D3ABB7E966C9F2FA0E0A7A5B794D72FCEB0CCBE9A201041FE2338BF9BE +6241012E1E255327CCDF5FD1B0AF10626DC35C269A6E5EBCC697761374898384AF1B00BDF33A88 +E7B9628C9A44435BCA110B57227D9BC9D8BF6C2F205A62E189E683E50EFD1F09C38E62B4B12426 +2982074470A4CE35EA939B558BFD24593996AB198A669393B749AED33991D833F85DA040A04379 +57CE47FE19E30AD150D7EBF3D9FB521ECB0D3C1DD75D45C180619E0131BF9636AD108C6F7F0F73 +0937E3C8A4F788EE09F3E4A23078A79F386A7F638286AC0045F9D52E8D5AAFB1D4EE7BAE0B27EB +6FEBE7D6336241930DC406A45F261FBACAF975B7C4EA25E3751FD1806332CEA37442F99EB2BF69 +C87C649F93C5EF9DB13584690078CF7BCA17543DA5F867C550FB219C8581F3DA4DB0BE951C4932 +D3B65056CFC178183EA34389B3D28661979F1328A326783AC6CD34144EBB33CDDD58EE8A9A7DAC +E4AC91FE1532310F9B36B17F3CC79E6878488AB43045BC5B95397CE872D1429ACCCA5D99953C63 +028959839EFEC3F0A8E3052E4EB41E673F0FA73B9F82261CB6965C621ADD6DD858D7B2A8415C11 +BD9C51FF31D1F90332E076977C6461288A644D66ABD8E295AECEA2F37DAFC4F096FC0AF34938A9 +2C1E5D94A438319FEC694EE5E4ED1AE5C1FA82DDDA55C394C73CE39F18137370ADE011C4FF7213 +95A444A57EFCBA18 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +%%BeginResource: font lsunr04 +%!PS-AdobeFont-1.1: LucidaSansUnicode04 0.9 +%%CreationDate: 1994 Jun 04 09:58:28 +% Lucida is a registered trademark of Bigelow & Holmes Inc. +% NOTE: This is a partial font in Adobe Type 1 format. +% The complete font in fully hinted ATM compatible form is available from Y&Y +% (508) 371-3286 USA, email: tech-help@YandY.com, http://www.YandY.com +11 dict begin +/FontInfo 9 dict dup begin +/version (0.9) readonly def +/Notice ((c) 1993 Bigelow & Holmes Inc. Pat. Des. 289,420. All rights reserved.) readonly def +/Notice ((c) 1994 Y&Y Inc. All rights reserved.) readonly def +/FullName (Lucida Sans Unicode 04) readonly def +/FamilyName (LucidaSansUnicode) readonly def +/Weight (Normal) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /LucidaSansUnicode04 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 57 /0439 put +dup 74 /044a put +dup 76 /044c put +dup 79 /044f put +dup 81 /0451 put +readonly def +/FontBBox{-90 -211 1024 940}readonly def +%/UniqueID 5054504 def +currentdict end +currentfile eexec +B947A691BCC86A8714868C4E8EAA6693E50213672FA40A24C1BFEB6B454C65D97FE3C8875CB7FF +DB41FCDA8653D373718784E1CA8C2E52026C505028CDB223EDE069E4FBEE2F9866016FCF3C439B +BB0802FAB586D7AFD17C75C2C867DC859619612A4199CCFFD6C8BFADBAAD892A6C666D828BC33F +4F4247E844052898BE31C94D164ED8D032C6F943D6ED98C08911A23F5A44886EF9C56C418B6902 +CF632ABE9998ED7354C01793652E9AFF38B16675570C3F14DD18F4E0EA8F81EBA3B5A2EA1A6A75 +2852B45D9DA70764044BA4537DB8B3E88BFED459F70BDD5F881C906573D7E01AA459D103FD3D95 +D2C0D6CFC9AA56C9706482A513FCF9B41E612B7F6A70EB084A6F9D7BA73BC196B39EAC357B521B +E3232A0CEC9DDF61F6A57661275C3E20359577BC2124313A4BD33BB79B2760F11A0CA7BF9AA8E6 +83EC1146B0B2074D70789306AFDE9BC65D8998C6C6B28D89E7CF52E057C9E40738983F55D859CD +0D719713B944F82DB6F8364CE44A194C0B4E6E987C2A392DAAC78285ED9C29C1DF8F23842C6AD7 +F2C362923E2E3C896F4759020EEE519DD5BE0603F7ADE8A7908B806799345CC450EF767993D072 +238A614D5DBE33015C181CD4377871A633824D0DEABDA62756476A2E12BAF3A891001FFB69FEFB +D921533AE16743B926BDDFF77BEE342CD2AE8AEDCBCA8F90A10779CC9BF24974B4956DA4895299 +542E68FD9F5134EB2855709D7F684998BF878869A32DB0C6BBBE28B5AF1C1007AD68807513BDC5 +583819F8A5C8FA338B6CEE5D696B0BE6AD4C132E8CD0F3A0FA8DBB22BEB7F21AC6EA9D2CE4BA7E +F4A1D55FA87B7A57DF56D478B444FA969F3CA003267F1B45E69BE9210906D363A62731EEF97540 +E5372A27983ADC774AD984B795695D3B164AC04CDF48FDD5697A3F855E53189B795887549A79DC +69AE4EE9B7DFC5732BEE8F9FDAD6008C6EC06BA5695492152EFB8C2A2BAD3D44EEC08617AE17EC +B22CEFB1122BF202A212F998882C2F653D56F2D0737FFCF84E0D52DE3CFA539954AE718331109A +30267B8CF12669EB05BA116D01F8F01472F466D26400B7CC841BBE94EFF2C95B36C695AA91FE51 +E2B1DD43A459E31E01017DB6D44ABA40FDECBA6FAAFF5D2E83219DEA8777A845F6E4F586E73B42 +FB7116974F95E2BC2FDF85FD5C561AC5582BE899C9E85FDA05D02898659522A38B4F497F16F534 +CB8E4EED100844CF77E70A0C9C6C18C99124155AF1BC7F67952DADF6FB324B9F70859BBFA5D191 +D51D024897422139DD5CB41591085BCB8A9655A43A7BDD93D78C55859F075E58B5DCAC83BB00CB +815BE032EE24398C06F8F578B49CD897740A4DA7E6DA7DD7508EDEBBE1CC0AAFBE06F570987512 +0A1B016A82C5E1C27E48B4CDD5F2884A5AC18AB5536A145A7A83EB4AAA9971865EB69EFAE5EA41 +5A9CEBF4DD21A7C173D5BC38DB8E5C2A6EE01B504A3FA492A889B67F9E27298149153FE446F040 +B7E2C781059C65967C51E23B261136557B76D675A79A006AD83F9E0A531C6EC6BAFFF9B02788A8 +35AD5EA6C7F8CC684C252AA2E7CD05C0ED81B8BCA7D4C9A0485DE412915310EF3F8303F5F4E222 +769DABE6CC59CBA5036F3B6B1881971217CBDAEB1ADDA602EECECA4EEC033A1485FC32A9F34C57 +994BE283205ECFE0B241FC56D225AC40984DEA53961B7D43BC47F7D4011AEDB3E3D824881173B0 +6107D6C34915364BA13D09B64F088504766072E48BECB0258F002BCB476AF40B5565393CEA08D8 +0B86330541D0015DCFF19A3FF11DD0DEA1E164295C22677DCCA2E69987C4DB4273ACD833F1E8A2 +90C7C7E83154E97FBDB5B28103DD17BC8187A0F82B0BEE9031F45A869161510B16EC14EEE4A90E +4B0CFF0722D40B3A54EB15AA16C4A9EB4747B76F3EB24093BCD34AB43651603328086709CAB4CA +DC987A0F15AEE2EB086532438092DA0DB860C994D5E3892618A1D6D536BD6E1267C1B79D2B038E +C3EAC72BF37A07F8338FF4ED00A2C096F2C6DB26E71F13E023D25D3F3E547AB07E837DE246E0FA +73356D30EB9E8C83D2A08745B3A238D1FB9F18CA32E2CDC93884D4B1F87854BBE7593C45B8F7AE +BC916EC39500AAC2522595A0593F2B95ACE4EFD4A016D6D6D1172AC47EA3C92AE915608F20F0BE +A10E875F9DDF6E0EFA32C3EE7965F34AB6CB670453DFE936D4D1CD77E44A1E01B81749EE49A4FC +7759CB1E0D30CC814E6AB9B51FF675A22577A3DD8025E04CCEA149E717FBCC8C424196B35D1924 +3C562D1FAE2E2DF182ADD0AA15FBABCAE89D91A363D3691CD9E2C6EC022C34C1D5A6F0EDD6189B +59561647A60F07E60202401959224E551F14C940667AE193924A0A83F4F85D071AF94C79056CAA +B4BF0453F2EFE718C7925B7D150F810156BC31CDBD19548B4365E214CC8DE2357368A8429A9D80 +6C2CF8AB10BB393455B8EC83DAD41021DD2C3C8BBD19F7F086C7D4AB0E773F9624CDFA6FE0BCA5 +1A581C845241710AE04EA754034710C1ACE81F3693F17A4144C886ACAA69D797DC781402C297AB +5D83D4CF37794E7186404A8597FA96FF43DDA263AE1E5BB13132DBC7A899B7E29136D8ADA59BE2 +F9FF6DB733B428A2D4BC94024D03210C67A9DD92FFFCF7DD20DE16564FFD28F5BBAD8FC6FFB08B +8EA5C8183331931769777C502E4DD4348DBF937560C37168C6FB31D04483E204D23C51F74BA204 +8409709D3B387CF7ADC611C68BB8DCC51ABAF46F4557D9A7D39472775F17F7D57FE5BE656B7178 +54306B9D35A6ADBEA90A4CB0B4196045B01BCC454395C6DCCD91DF342E853E390D0A060A587673 +6A7713D1BBB7EBF6BD15680DBD6996E69BE0A25DE4358BAA6FFFF20AB9FAAD1F62A773A51FBB25 +9DCD63271013026CC59090452EFD867D24C4B87B30C8B338408836B68D9F5BA5444C5AB5075D38 +1A8FE2FC68F3E307710A68163554EBE7002D15D5E5A8DD662195CFF998B7826FB58345A0C932B5 +E3505C5A7174A649668910C3493DC2BDD0635275431DDD1304699B371FE983FAB90976279ACA40 +6777877762511873E042A65E5F0D3CD63B692D22364A208B555EA28963348D2C2DE3BD025E54DF +656FC7749C9406325C809B36EF3CF9BFE641783D6B82DCFCF63482D2E82BB4DB6599D1771B6DF4 +FCFB7803B5853A371CAFF56A1A6F7060AAED31347807AC7D0114BD90CFBDF64C0A0BE6D2A18883 +CB9577A8480062E6849942CFAF4290F2BEFCD4B7A212F88B6ED02A82F4134C66609096E11258E4 +6E9EC209B58597889F3B86F66D5678CD1F0A0260BA8305EE6B038842FC4244767E615E15626773 +1006379D908D8048E94ADB70CEB5E6762763E8744D8CBE771B01BF51EAEEF378EFC38233FCE953 +1ACC4F8FEB18E3164C7C834F7A253C0EA5CDD0A541A0E8A263EC6CE7810D311D45C018CF88579A +60864FAB0D4D6E8DE5D2D77639AA944DF27C99067D4FBAA626BD61B36F4DC0CFEFC52DD1EE665E +FD87E73F791D95BF9368072D720A8E7069C9C9FA65D22B0C401115D19458883F4B37E631D6B532 +8C7E5A10B6E3F9407FB6AB8DB7D25BD0D682B197EE8C55663AA50B6B20DA99B489F8BF5F091949 +16DDF7781E5E437C208BD4C68F2DA4B4913C69DE358E9E8750F8AE45D8F0958F30FB7AC997B253 +C255CDB46054EE7CE90EE8C3B0379EDE79009F6952DD0C29A682813B283A18E11ABA75DDB8985F +F81377EF1420C3F93832DA217576D9871815CF0FAAD815FAA4B8D93862E0F7FE9424A40186E933 +81DE8FAC067BFED22ED9A8D6794FD76B97270E30ECECB34C4CCEC5C8681BDD66DE14679A85468D +2C7952A33C265FB2650B1D8DC32E867A98354E21F5E644688285315034BEA5C8981C9B36502C87 +4A3F87B5BF5BD1E3241B4056D848F46BE457752DAB938CBA20A7A8643C99E8A0719D9FF7422FC9 +1F25BDC284D1F0664C6EA1900938848BCCFEBF2BC4A0E37DE2DB48C5311F7BB5FCE22C3948F8C1 +AB83B98945A1FD7F8812CBCF8852F20D26B70D94D04E4C3B3593BE0716B016630E43C349B56F9F +C17A9D19172C4E1220F97A7B350DD592CE9E8DD5481A3A0733B95C58241B333586198F375F1F7A +FCB84E33878056472D0153459A5AAEB4F264AE38CEF24CEBA2A32970E642820E9708B137180739 +0755DB1F6E830A73DF803365B93F815A330E307828F3FFE89B1051EF80466E3F2BC7C5D703D5AB +10F0411C20E72745A13167759657C8F68457BE6C9EAEFAF4C689839179432E36200EC7C492EF2F +76AF90BBF8333DE26D91EC67F32425B3655D2AB080D6F62AE8CF99002BDA6D369529CA0110265A +E93FAA293D3E5CE6121C899FA575DAFAA8293DD6BEB7F8F5356B7076B38EF4E4DB70F004EB1FCF +F2501A24FC75A3BAACA7E6D0706FDEB788C4FDFCA642536036F90E65F6BD876DB2519DF5085C17 +E5474B454FECA74BF0F3684698585397E3E04847A1700307B25D00A2543C5F5AC662798C2BCEA5 +1A56A0D92E1D376E01898FAF604AE6C3861592CE3CCAD063C628E15C2F459A6399556F582DB160 +0C8C1C55FA94E64AE5754715B007AFE6E024AD0E96218E777E90794820DCE4FF8C0F936EDF0C55 +2808CB0DFDA4EAD0F1FB144651891982DF671D9EDF47798A24AA5F0B33E9CF63AD8AD4F3440CE3 +76B4C47499FC93F8277F3D22457B98F956C39C53D177F0CCBBB529A36055AA4EEC626A7EEED64D +646ED1FD0C3685CF4E2DE42693E7E212343B83FD75AC33DEFB9D16A1771D6D3622998E556C0AB7 +F2D811339E89330348FBA8AE94EAD8B18BAE18CA3683225EBED1A4DF9EDD2FCCC34E74822966D1 +D5F71D2346AB76CC3D0AAFFA3E3D57CEC007C9D892C5A82809976719F964186D3279D79B4B5AC1 +F0333EBB8742D25644A962D02EC011FDFD7455120BF41418D4FD6313066DBFE5A0BEEDC59ECA8F +8D1FEE9199848433A584EB5347173D726A521859A91EDA4E2D73EE7E8C51339B86305C63E35E86 +B4FF303B8B1075999B68513497249C62ECA2736FF6958EC66FB78AFA10532913ED98C1E13420FE +18C9884E3DA3ADAEBEB2AFFC5800668A2AE2752BD30945BD58C75EB522F869CD640B1BBD982833 +F92EE830EBB96507F4762E3138243417FD2C4738FFB542D1B2A29CDBCCF9F3CEDF879CEA7CAAC2 +570C352F4E4CF19D069FBE80F9AB796AF8F419EFAB203B930625C4FA2435D0760067D328A5641D +834A56E35ACDB03751B97727E4553057FBD08C1236E45C424368A7B1550A4ED7A5E6270190C60D +F2E025A2E24392AC419DD2FCC5D85696A0B2468E1995C3AFDAE38058FA85E54DCFFCF687707847 +39FC137FDF9D6BDB97E38642A6E6DBAE8B2E599069634AFA5FCB9DFD01A00F7174EBEACA58E0A3 +29B88239CD746022D2B10A8BC3CC15CE973353C01D98D8B2D5AC9253CA5ACA59AF6324B5C69A7D +A13E28170A4077709CE7B4B77B407898085D371E0F9207BB42ED043D8579D57F81156EE847D962 +FBD8412ABEEA9B941AFC7B39A51391D02695C8FA95C775F8CA84DD46B2A28D1735C2C5228FF7B9 +29AE385AA61818C2E9568A4F23F8E890583E7DDAAC4F48875429CAC2D54714D179355590FA42D8 +160CEBDCF44BC348271FBDD219EB95D1153075C82383339334D05F741D7CF5F12F85DCE3A25BAD +6D518F3B13A0DEE4DB2CDEE3D284A8DF2F7B1C9D07E8D7F9D47D6BD6088591A9E089EA2BEF5B83 +CAAB3EC766B469DF9640DFBB4C32E505EE2A01EBF2E7155729D1B9E205711A74010C6BAC48F73A +4CCDB21FD55BBA48ACF5E5126CE38ADAAD6DBF3EA6297C56EC9CCB98766DA4C76DD8542BDD1596 +BBD288C262E48A15C27690644918944E039E9012C08E62A63495BC5C6E82285885A2E830DE725F +A7C746BCD0F333AA0DACB4D044CF8DA68EB5A1DD7B657715562D0D3F3F94F0B642C06BAF360191 +193F6ED4ED5F781AA5AE2DC7E9A6B73B182092BD5ABA6AF79E638152F7747E5938ED28D9C7D894 +A5762C519DD6620CECC58B2D583D38B63584172CCE9E4D5B3737422ABB778B2B85E9F6C80D3CF5 +FCBEE03C2C66613A8C5FFD6E5C2A4377472AAB0F1B93E7564657CEF1BA61C10849686BA4176116 +FEA3C5F3F89C492C1CEAA310E9A8578B7C5439355A +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +%%BeginResource: font lsunr20 +%!PS-AdobeFont-1.1: LucidaSansUnicode20 0.9 +%%CreationDate: 1994 Jun 04 10:00:12 +% Lucida is a registered trademark of Bigelow & Holmes Inc. +% NOTE: This is a partial font in Adobe Type 1 format. +% The complete font in fully hinted ATM compatible form is available from Y&Y +% (508) 371-3286 USA, email: tech-help@YandY.com, http://www.YandY.com +11 dict begin +/FontInfo 9 dict dup begin +/version (0.9) readonly def +/Notice ((c) 1993 Bigelow & Holmes Inc. Pat. Des. 289,420. All rights reserved.) readonly def +/Notice ((c) 1994 Y&Y Inc. All rights reserved.) readonly def +/FullName (Lucida Sans Unicode 20) readonly def +/FamilyName (LucidaSansUnicode) readonly def +/Weight (Normal) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /LucidaSansUnicode20 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 19 /2013 put +dup 20 /2014 put +dup 24 /2018 put +dup 25 /2019 put +dup 32 /2020 put +dup 33 /2021 put +dup 34 /2022 put +readonly def +/FontBBox{-615 -440 726 1024}readonly def +%/UniqueID 5054520 def +currentdict end +currentfile eexec +B43A59C23D31312E42BFF7A8FFD888C8118609E66724952B45D5A38971EEAF7AEAD27731404947 +E5D485EF2185B7B28FEE76585E49D85250EB800DB5DBEF09999B470F9167BB8A81B88DCF399612 +0C5E5C13C786349E7F44E018DDA185A7327A13F55575F00A7B68BA5390314FFC1BE676564A478B +1A253C30B407F07FEC8E3E3C46BC787775A409E084B26786F0856006E38AEB9E71FD27672DD999 +15E5FF51153CD2575D5A841791BBB0DAC82FC347B4323CDA6FA02627CF6F313D71FC7B56A6F4AB +9D45D4EBBA4FF9F13323865378F1240393DF17083189EA6A560B78F670F31187E21DD2282A40C4 +EC215B6E053C952A419363825F8074AA1F2791D599B236931ECA38548DF42AF21A0B93299C7A6B +CD562A5D47894A3F2BB10DE3513E0101686157DCCFE12025B2F62AB48BC56966D41430446797CB +34EAD92D70125D12FD83DD10713076729FC32F58FCE51BAAA5865AD74B16825913B821284679E5 +9C71C2DAF711C0E0D4E82BD5FCAD13D14E69C0C9E8DCE7F05D2A5B1F4B724498D405664EDC7CCB +CCDA84490522BB752CB6BB095A3AFA53A75A04E8B6446C38CE1F543231B8E7A462CC128403A30A +1553F8AD4952935A99E6781121623F4DCA70C680758A89F19FA860DDB7A02B71B4265E4EFE5CFF +F0871888F3C17034282B2250FA41A8529AD3CB49FC2F94FEDDFBED06ADB863F82168180A185578 +755D4D43CBDF4D1FA47B05871CDF84694574CB0634E35C47C9B4BF695B573F8DE08A555F0A2DF2 +2774590AA572463F9E2FB1510BBCA5E8F6ADC8217855D4F1D5C837C3CDBC31E1CB6F52CC6D0D65 +05E59AD73924E4EB1B37E9C433BF0ADAC35CE1832DACF7FE538E921DA937CE895F565305535EB8 +17575E443932C9896F7D11431F8ED21EEED56E490E157FF33BAD34EEBF76042168A86077AAF03B +A2173A795A37E0BCE53179C645E8C12C0FCBE7C33CC1AF08C58567B83B602E468A8E635F0811B7 +6F8E4318EAF2CC3C5DF01FD2A95662F00029F54AC7C8FC2B999CB46D6AE8D3FB1DC657C6E961C9 +F870BC5692211F2C244EF9CCF84C65D013425D119F60FD2131271C5FC6CBFFCAE54064DE267BBF +3E03F44C47BD24364273AE3D94C9C818825440FEA0E06CCCAB1CE6C411628FD565E8C78B039371 +F4F6618EDF8BBB15197285A8379DD1DE9B0AE8C580C44EC9A7A74DC4A4496A4868355BD28FD537 +38C81C8060FC059EBABC9B8F14F65C347E47EBB861DFED01318BF955010A0ED66DAC569E6794F4 +3425476951FA9D84A48D7F9075B0A197936EBABE6B9D3513B542E1646A0D32995AAE08FD77921C +79F575F40B8E813B330F1AA029FE6439D7505B9DC9210D43BA9CE32E3A14EF467C870B182ED37C +654DAEF47A595E363AD0BB939085DCEC7155829BBE1E1A47F1F2A4F3432E34EC91C1C85514D35E +ACE265943CD46A79D4226BAB3BF354A04F0E182B759835B9FE8F76F505057869CAE56BA3350712 +EB5103078544D804DFEA9DDAB528DD4939273645933425C0F64F7AC4E5D3B01D5D76CD95C65756 +B48FF39634475BA737AFADF17FBF3CD5AD0E88F6356CF06EED43EFEF9B5433EB1600D38D203D51 +A1099E2E20641DBAEC087D771323611E50B960C1B20EC7B1BC71697768A088D806400AB4CECC04 +67AEE799328421391BA370FF34C617F15105260632A8C0F4B22E792247E390B1F564C6FE227B85 +5A962A6E06E6F565D8D54F9887042237617FB78CCE75B0AEE938B1FF3F0362D6BC139C871D1BFF +B8AA0877F9D3F0DB55ECEE0AFE6871E01F204332718A0EFC66EF197523FCAF46898F32C1B324C6 +DFF22FD9BDB4DA9D95D5D2208CA9D67C6C13B3A3BCAE8AABF40EB224AB9CBA55204458FC526DD3 +8380F3F432EE69266C02ED0086DC8D6053AB3D3330D436B04DBAD95818B0A5025CEF13C378A9D7 +2B6C775ACB4833AD3570D1E76BD359A5A8EC9C4F0938F7240A1B663AA366A4FCF3C102DFB0FC07 +994E668F503A0E28CBD1CFC49041562DA2249B608712EFC10C9A35E0FD9B346864E6AF644F07BE +325FC4E08F81E9E8A6DE438D3ED64F05A57D3693F770C2E139ACEAB73366F56A94422EB50F6670 +9032FAB1F7ED83D150A8D26B45D8B59BF720D04C4E283A647065EC0CC0D55D9FD7C6502EE3DBE3 +E785F49966E1099CE4596EA2F1CAFD038E882F05CD9628F74A9A09A5DE677704A12CD82A95BF7F +01A5147536FFC7EEABA0D288DF1A9C9B639350A266C42500696B7E925174AE15CDD011119E8288 +7EDF23F0AC7EEA78E38104C00BACCED03A7785D88FEA2B4A3EC5DA4ED2D0357EEB43C4278CAEAB +5BE44EC6C777B67FF30140A391A66CF1B47778BC0D9BF6804E78DAEAFCF1C3F67760C94ACDC930 +94E68CC33121CAB7A1FA79E8E14276CC001A8D31333FC78721C8368034B418756A9EB23D1F7104 +43326DF928CFB2E1F9246CCF09F5D21537213B798D2B72893A8285EDCD48509C022EDB3E0943A8 +AAE2FF11AD8B6EC442F30DE19215EC6BCED82C345467DF50276F8123BC061EB2ADAFA6CDECD1C5 +5C529BD9B1ECE353EE7A58BDFFEA47EC30FF94FDEB0E465B7A45EC795797DE00F78E180B73B3A6 +F5B3F35BD80882003053F618940DB675D846095F63E90CC77B5022E963CC39915CF3B95F8F5A45 +4419ABFDAE6087C4EAB799A8A5F1CD7A234A2407A2C08DF813227CCE6DA56F6D1B081278C6E046 +96CD90F917C7AEEEA3032A1A13993079F3C41DCA1FF2B300BEE78A8D9512736DE4DF75CEBDDC58 +33F8D1555590AC92FBA63E2D59B80EE8DEC88CF78435CB4CA57D702DD144893C3279DADF5C6164 +70EA7FFF87FE66F510ADE5B32019709CE6D9BBEA02F2BA243975E7800839D904DC09C2306A292B +B812F8CC973D40810ECA109BDE38961FC2678BC1CD377E2FEEB43E2072B38621801D5ADA0A92A6 +5F37C7FA277ABBBF372D08B834C737DDFD16B51190DD3043040B9C060A1828742BCF814CA98EA3 +77DB2DAA1B027BDE291293D8CFC3DC73A75BBB4BDE3CD80FDA05E46A2CE0B003663A2003FAE55B +0535A681672F7D8FC966834DEC4DFE56D3286FF86C10630F9EB91BB731A9C2AFDDD4F1554C4728 +4D68FE4A486EEDE086A565929B97FF763B31B5CE48678860215F768CEE265E157F1A44C3092FD0 +48239B140F2F8801D05B76FC9EB969BB6EBA6D472F1C016B94012127975E20FE911529090CCCEF +4C980611502E8641568824AA0F18FC3CBC5C2C46DF4A310A1961427A7785EDC75D0DC93FD03C26 +43FFE864A91F4F285FFFB5C74803081A71AD441522F4C5DDDEB96BF5A7080BDB57A22AE8DD9310 +02D940551006B0863C4274D0090A9C2EA9516F291F4A833772CE2F0CCF7A92AE08BC02CDA5B434 +3D8E61C1F1ED39A3614BFE3BBD2BE7C9C3A64F1F7FFDAFF51D3FA0357F672316BA9810A620911C +06393D472F8BFAEF9AC09A031C3A1A33816A77A6C5EA88AF4D4303EC449982D05ACA3481807F2F +0775C87DA047792078D7FD735623D86C37274CB49235A22D01AF43791078E4AE92AADB3EF71EBB +7C96F303E70F1E3F7569471C6A0FC9B9C59E4DC141FBE2752F6717F4A7C8CB5D47EDE806D835D2 +8F48927CA3A3C38B1E5310A47943668646946991FD87BDF723BA535A587EC98F9CC86A15F3AF79 +625C5E9A1570412BD515DBC288A9DC3E4194A2031707D47E54A1FFB73099356BBF4C67A22A71BE +AB39619759800E4F9F4B558457CFD32E456D546BD2542B3F493A2FEB432FC1511587E4F5C0BCE6 +3BD4CA268846F13233A6D3E22CD92BD8E19627B71EAC34CB56125C86CB4168194ED4E45FC6B759 +5887FCEA79676EADACAC6F0A35B30B63E61C51DC92E4FD960EAA2105ADE6C4E551FB59E0381ED8 +90AD55857073689ADAAFFD1D27AF7E9BCCD8078D62E2299E35EE4255817A3E7CBF4C142AC2F10F +A5486FCB20EA7E6281F6FB7F91DF0A48B0547EE2133AC09C1E0700039CDA77281121975D84864B +FB24A6F6E05F5E801FF02B04A8FAE6F682E7C9A705B0A6CAFD3A84698528921856038137A3D111 +30602F28D61D26533FAC142D5A6F0D7C918D16BF3C1CA65109ABBED3BD897C8BFA4490545552D4 +B15F6264FFF4B02CD60970D6D8F35A18295A2AEBAC056F768F29526958DC1E717FD5D6504E303D +1C36802BFAEC578F5E3F0D1BE9FF5B65B3AF6DD63FBE07432BD1EE72BD24C27C5CCAC3B95FECA0 +AEDCB55933140D1041DE9F2AFA2ED9F3D4BE5D7D0C7F325AE26CB1FECC40CCD6A4085515A11F62 +26 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +%%BeginResource: font lsunr21 +%!PS-AdobeFont-1.1: LucidaSansUnicode21 0.9 +%%CreationDate: 1994 Jun 04 10:04:24 +% Lucida is a registered trademark of Bigelow & Holmes Inc. +% NOTE: This is a partial font in Adobe Type 1 format. +% The complete font in fully hinted ATM compatible form is available from Y&Y +% (508) 371-3286 USA, email: tech-help@YandY.com, http://www.YandY.com +11 dict begin +/FontInfo 9 dict dup begin +/version (0.9) readonly def +/Notice ((c) 1993 Bigelow & Holmes Inc. Pat. Des. 289,420. All rights reserved.) readonly def +/Notice ((c) 1994 Y&Y Inc. All rights reserved.) readonly def +/FullName (Lucida Sans Unicode 21) readonly def +/FamilyName (LucidaSansUnicode) readonly def +/Weight (Normal) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /LucidaSansUnicode21 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 144 /2190 put +dup 145 /2191 put +dup 146 /2192 put +dup 147 /2193 put +dup 34 /2122 put +dup 49 /2131 put +readonly def +/FontBBox{-30 -325 1384 883}readonly def +%/UniqueID 5054521 def +currentdict end +currentfile eexec +8CECFA711B4939E41CA045BB7E8765272CCE317ABEAF2B07E70D992D651C41DC23B029563922C0 +95FE85170451329EEA8C7BF7A2726EDA9D9C6D097F0F7FB11AE93E80BF8DFEB2012E3B9F49A227 +13E573A8BAB0BD7AA774AFAA41B97C6C70A3BF84A0B468C41B70D35F1310A4BCF2B97287E2FBF9 +4A30663A4DBB485672BB54D8FEAEFDE594B3B73220D0C873C546C40B5138841E9803A47402513E +8FF4F9343A0E92A13A04C27921E3EAAB23C355AB06A42C0BC5CEF70BAF6D687B5C79B5360DD42D +B2C878AC8DF4228BB74DD81C6FEFF53A36279510E983BDCD1A8145830308160030F770C3DE994A +4DE01ACD31F1D76E3094B43F3316267B62B6D653546469CBD35DC8B1541372AACED3750E498938 +970666D8B36D41627069EF1511128034B8A364FACEF8068FB8A2F7F3209E5A769AF14C3E7F044F +6892F9009EEACF40CA1AEC6F322861CD38A8CE6A110A5C348EC2CB376E5110065918A03C02835B +E3E89B986010D70284A334D6725965CD86C1F4937315B5BFA1D7E584988077138480F1B72F2870 +2477850CB729C71006FBA750B4989EC757A808D51431556B673A084E350A74279AB2E9C638F7D5 +B6BE1D50118747D01A6F3250CB9F204E3B03CC46DEC9821867B2334D2593522BE05CD30CA6B75D +DE85222B64269B1DA310838E5962A391BC8197808B9D11B877A50D431C25870F7043983E965CF5 +0F5BA07DA4DD39F97069868D506F035C0DE343F7F5C12587B2B05CE2ADE6822C6C0739A54D5DAC +415135137E8341C4D37F7D4534BD8FCE1DEBBAA3C378C9C9CC083F3A892EB7E44144F118680E0B +2A94BE914FAED74B80747D013961C682A0C3A3F55AE7496F7A15786BB0AEA5B1079668EAED2527 +9F744F8FD112A6C33DF4E1500520910769D69C8F4D659322035993A3CD70CAA65F9DAF1485DA40 +CBD374802317B409FB464C03C8A46831DE7B04E924B9D8F5C5239CF99DFB7176B2A01C1A31AF6A +D7EE0115C6CF9EB2AEC83901795A91D4563F32399E1AEB65ADE7B8248571668410AC1D86F71918 +70B0FF9C844CB7E6352B01A2C169E37513CF7C37D131B042AE6584F1ECC680AF5AEFC74D2C3309 +12C36CBA7D88E4D44C77EBD7377674DBCD9FADA92577843CB5B1C0CCCA0A9CC3BE2A8F4CFEE1DD +ECA543A7967806B9F65C5337403864168AD5EED97FF91EA2A00BC4480D96D09080029CF4BE6975 +B34B40182DA9DE77D82BBAE0007448F08DD19A443C3EDB130AA1E36D2DE61D809BB3508EB12237 +E460F68508290E1DF4E45B652B0A2EA82DED7F3A5A05E9F6FE3CD1E8FE988B7258E81A243DA0A9 +B677C368D33AA67DCD8BED50A86331179CD2A6AF65E164A925258D5DD67704B2F3D7B3A9797DB4 +E5092122646EF94DE3FDB3548D60702ECE17FCEFAA298D9825EFB4CB96C20E5AE933A4F9E7FD4A +D8BB4FFA426366AA9EC6DD84689F24BD858212C0D745D674D513DC4C07C37D9733ECE1D7F7059B +EEEFBEA12DB1F8F21F6DB88EA763511B1CB80089383350F0EEF474F70276C7B44D075B21862115 +1C4C8CE0303FDC81D848F74CFA94CB2D2F61FB99B92DFBC6CECC15955A790C62B3DA7654CB95FC +9EB2544F05AB69475FC405C3F0F1E80EEA5F82EE0B3E47937556C7E14CFEF5A58ECD7B975E519F +CA80763297F483FE24B96F09BB0C6ACE0753EF674B62B6F7C2A301BC1F8C7D2A84CB9DBC68AFF0 +7ED80EDB570861D23430D1A30653E5580B9B9902AAD063F04A700E801964927CF9943A074D8FAE +A48CB417EF69C589EF625E46A55472A0A2B3CF9C7CAC86764E06ADFDBA7AC08812B171C4ED089F +3FD3086F97D6B96299E47EC1BC98C8320ADF7DAA7D384A128693DEC73675CD0C185BB260668E38 +9A35204FA0838F70D1AE5DC74957D9EA2E2C3088D660580C20D51B212B6CC83D9003260FA4873E +0B88A4DA8EEC5AF1DBAE1C0D1454746F9014753E3CAA9C8AF20D97E949D8685D5D9130BF1A9F79 +57569B17DBAB5AF2F08737E9A046C0BBAA1238D2A72504B9131401B96606AC9230CACF736151D7 +E1F79E7E4F42F625AB66F02FDA6C31C497B1C2A2A0C4DAA420B59D647495B306723195DBF74F72 +FEA3B0BD8C2A16E95B442FDF0B39CF601FAE4BB5AC9C85C1042A6C54C44B60B3A44D741E788165 +2126A8235FB58650ADCBB265C349F5A93543A4F765C97225C9566D7C4DCCC6779E05D9827F8C00 +D78D582BBC77E25C3A170C469A268B483BC3153D851FFED8A1911B6864655255515363D8DBFFB8 +0C02180CB399D92C242F0F450766B5D7D29F59B5D7B47633C87A1B46EB3322715BE04BDB99E126 +650DF431A9E8DF486C8C63F5F0D26DC24B9DED300D3107A814E4A01BE93CCB3694A99887C4F1A3 +46DFEE064D27CA5D5899AD2F8B3915E304C8A4121A26C1B7B8B81B9841982F6ACCD03F249A138E +0F836D0F533153FCC8B3B4CEF39802D66A0EF0CE76F8E2C03D880FC4F44C1FDEDF0C50971507C0 +7202C26CB4C0C1EBAE4AF043F2893D4B15B183B5B60DA901252BC6DE8D8DBCD54B418C088D7D07 +3084C0809EA621F31EC5DE23374C5A4AFC2AAABE30A0CD14CF07914839804BC88A7340BED9C24E +48B93770745A08B2FD64AF52D5194D57FDCFF6ADCCB3A553343FFB2F82212E5152EC91D9F19F93 +7839782E3A8FEED1128568C5D39AEF3638592F8321A7513B6C361D56EAD81E2ADC3DACE11B7B50 +73EA40B36A9E042BDFE78E30EC5059549BF9D1BD29722E6FE3E3CDF81029F81E66C887B55A6E3A +96826166A1FD6D27B7B3B5D72046373492434088F7634CB45301F885909D249C2680E5B1AF7F1A +5C1A7997730E94D8A0C643937B284C0FE0EA447965A8942E882C20833C9EEA28D063C6B5C52F06 +D9580E5387B9C87945B1990EF0537A00BDE28C42C08321C0730A04AB9A0DB8435F250E10FBD8F1 +B70FF91E4B795BB353AB3DA14F7FD8B61AD2AF4CEF5775B16BEFF8E3198558F77036CEE8F21556 +BB24BB44437966855114167168A2F45CB4CE1CC31FA04E39FE5F4F07A21D878DD4D833F2905E4A +541F26B1599463BAE2BACEDDA6A25569E27003BD478232E627892502ACAAEF3E61B56139542D1C +6D6A6B3873EEC2EF0BA2CB21AA0148F449697C43D3CE159B01827618C1E9A835186C2EEEFF0EBD +C22D9250307D280706754476A9B24E141B88294CC88634E1690C5482E5232EC7F174256999DF02 +FE1FAFA59C4369C41B8E9BA66699575035718309DC3409EF68CF0768E8A2AE0E5BBA760F3EB926 +DD09D37641808114AA91761DBDF3D2BC64A42DABD5010465BD47597A69B1F88DB579B7A47563B4 +9BA22E69D7294A81042FC2A57781D8FBB5E87E77539498BEFAFD98E3C1C761EE5E7B635AE93BCD +E9479904AB3B3BB64EDB0C80CC2B04BD9295E208340BF65D55353BF8472EBC77 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +%%BeginResource: font lsunr22 +%!PS-AdobeFont-1.1: LucidaSansUnicode22 0.9 +%%CreationDate: 1994 Jun 04 10:23:13 +% Lucida is a registered trademark of Bigelow & Holmes Inc. +% NOTE: This is a partial font in Adobe Type 1 format. +% The complete font in fully hinted ATM compatible form is available from Y&Y +% (508) 371-3286 USA, email: tech-help@YandY.com, http://www.YandY.com +11 dict begin +/FontInfo 9 dict dup begin +/version (0.9) readonly def +/Notice ((c) 1993 Bigelow & Holmes Inc. Pat. Des. 289,420. All rights reserved.) readonly def +/Notice ((c) 1994 Y&Y Inc. All rights reserved.) readonly def +/FullName (Lucida Sans Unicode 22) readonly def +/FamilyName (LucidaSansUnicode) readonly def +/Weight (Normal) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /LucidaSansUnicode22 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 100 /2264 put +dup 102 /2266 put +dup 103 /2267 put +dup 130 /2282 put +dup 131 /2283 put +dup 134 /2286 put +dup 135 /2287 put +dup 41 /2229 put +dup 42 /222a put +dup 43 /222b put +dup 67 /2243 put +dup 96 /2260 put +dup 97 /2261 put +dup 23 /2217 put +dup 25 /2219 put +dup 26 /221a put +dup 29 /221d put +dup 30 /221e put +dup 2 /2202 put +dup 5 /2205 put +dup 7 /2207 put +readonly def +/FontBBox{84 -166 1060 898}readonly def +%/UniqueID 5054522 def +currentdict end +currentfile eexec +EC18885AF58F29AEFACAEEA59037C942D5A3FAB833BA43EA181148D28AB4B88B44CA4ACA1F92DC +003EAE53A624731252861B743FB223E6A26B5EA4CA4237504F6A6CCA326B9405AB85D95ADAAE82 +22B5F340DF4D35E0A2CB80190E539D9C09EC6DE84EDF6E6DC6E40089958D58B17EC7357C0EB84A +61C5A04AB034973BD320598296F9A79CA937F8946E59DDE543CC946C528E3106DEBF61B81D7A8A +69AC62FC23908A8A656B8518CB8FDAF8A2B57C3C7D4B644754586A739AFE94AAA7B685E0B09EF2 +C30BFEE0F183A420766F0BE21197DEF2C56A4BA47A2AC88C0687DCBA5494D19D543C8D7F43E8F8 +67EF76E2E818ED425C61EB7D3EB50B1174995ACA71352D8218D3734BDE02F4A95E232BD4AD9845 +09AAC48D0F388BD9ED89E3DB5276D12DB11621AD67DEB0F7CF2046A95D6147BD77893BD999663C +6BB6206F86C9E5BF1B7296EA35C677788DD9627D6385B6903C83B27CB461AB230B86435838C33F +A32A0B5DF678E7A5414A11E4BCFF1098BA6A3A6C70AEC03193BF8E08C1F703E2B0470B171CC9C9 +CFBBC16B532F551E32A6EBB545F8F16B4DFD5945ABF67BAD9AED02092F99DABD828C674A246A3B +50B6CFEC2542399D397121C09D60CD1F679CB805E385F3D63FCEC624B93BDA066709C669C50BD3 +261D4A143B81F83AC3AD4052FA424782F1C8985A783C1BDAB4303948E6BA2C6F1645D1AAEF161F +AA605149EBCE77F37B904041DCA83C92CC102FEA932313FCF28C23DA1D3F876F612EA30006CC36 +B9376696E6D3C74AC6D5E39653C03434CEB58C958FFE72BE74DCFD7921BD8D29CB9B5D9462CB1E +6CA793A7E2A7F1ABA296877AD19BAB0AA44F0916866DAAEEB3DD86474882FD901F4FE785121720 +80BB24A21D83C909FFD3ACBED7C3F97E8D434B4B3DBCC83A954037319D24198CC1B14695178CFB +18CC1F530CAEF7C5C845403B52E2A5CE0B7F158B8C4904B2EAEC08C9BA7AD693405E918356E7D5 +1E87E2857B18EABB71256596245BFB5D3F3E547AB1355106CD33AEADDCC870BEEC170FAED7884C +82DB23EB4B99C4E856B81773093BF2B625D38475AFDCFCD02468EB11B035E4950C2E909EF0AC96 +2C6C41D25D43C5653AE66D718013E922561CB88101CCA5E70905BC6D48B80C177F552BDC9BB31E +D51DED3C0D40BC161A86C06F8FADC8449AA647EA6A83D9A5AB66E8CC4B5C705375CFE9AA94C1C5 +6AC04BE22C68860DC51566D69AA649F97B43E557EE45E73B23EE06F851860CE6C29CFFFC95F561 +165AFF73E18A9DE0A1660754A311DAF53146BBB751053D424E32E8600B50303AD1A7D9E663580A +BB54114C9BF9E2850BCF12B5428A4CB8E458B16BEB43751E68BE952B34A8064CEF61452FF56537 +EF56D18A3A3A3081029B7027600A1DC1199772F97102E7FB28DBF3A941729599B0F24A565C1BCB +62FEC5ED752428920BC1C60C08ECD8EB86AEF841364B00168456006B406FE14F1D4F338B142CFC +42BA7DDCCC92233212EC5B35E205372291B4FCA126E5FE8F6D4C8A37017DE0463D7261E98813E5 +8B1FBF38993879ED183A30C569DB75D9644B0C6D237F76D760C3D77C7569FF8A1CCD752AD9FC87 +3078022F6A3B1D749DB363097597C2CEF08CF19BBBBA4DC2AEEAC4312E9851639DF6FA9E2893B4 +3366E631AC15951644702A58B7FF164C8D4137052A3CE699438B9B5FE2228DFD6B0931C6149B18 +6B9F57F9D780BAA7835331B10EC5D837B9257044B3CCF8AE4590B23796C7A712C6F188E20DFA22 +1ADDDC895EBEF28DDC6FE7C1086AB26B878DA3A1ABEF1E7EAD344CD7CBFA752F7C274E8E9C970D +744186961EE5717BD0F50B67144FD576F6B668CA608436053ECBE116CDE462509A48DA90D66105 +ADE07641CCE083FDD6F161CDD59145E8514CC0BF34FB77B657A287EFF963E63DE600FB15BA6A17 +87E63D3208F5BB859E650092902715185D69A11C6F73DE088D60DBBB98E70ED4B7C5D4CA9B2AAB +BA91E81E20CBF4716D603416B399B856C46729D4AA83330CB528859DC68CD028CAEBF9FBBCCB5D +50CCF2D3323000855669842544A61CA55FC4209AF3D6187100C47F2681D3BB823F09D3DEDDFD89 +C87B17BE0B0A0D14E75370C6D2CAB809BBE932E6718945D6933EBB8A24FD507906BC651216119E +CEC5B916BCA6459AED96417AEEEFEBC4E71D76DC5B17A37B8945A83946E64B21AF0D42282B0E25 +A3DDC555E709C80C5C8CDC5E1AD62B89A7CC1E1AEC962FEED653010E2FEF56EB5A14F810AEFE27 +16F0A27E7EDC63A7D2E1C6AD410E22E35C8C923EFC2554355092DDA8113F6D9D5B5BEF54C824A5 +1D7F5CA2CCD4321F9C3A6EC8320F9A577610C902B70B6B0EE5BD381D9A7C6B722BB55EA06DFB77 +DCFE84A0397C8FB3BA4917521A88B43F9F12F81571C39ABE049D54405B96D0BBFFFDEDD0E90C3D +D6B26D82D797C6B31B7FEC4BB0B51B2E8357C5CA8A6181536CC13498F7EF383B98281756F3D25D +6961D477191F00452FE9EBAB94EFCE0C958A415B7A8B0AEF3F072A3DAC3B6F1BC974CE0DC92A08 +00EF65EDABF91DDCE2931A6B6CDB9B46E106EEBB1017E487E4AC078243A8441422FD61BE99A8F1 +022CA7C9B86AC24E4101F46614E20749FA065C9F9EF8AB8D45DCB5632F7E5579A4EB5C44588E0E +AB91E0FA25868A585ED5364804118B2EEADD52301644AB6AF821BD6E5A78E3BD4701D7211B4929 +1EB22DA0301F61F69379F1319ECF14C6ADCF574657B6BA459E6FE012A1C6CF198250A7A9BBA055 +06215E6558DEC8CFAF5F342975B444F98782CC674EF5E03DFDF803C5645F303E229448E57E3891 +37A4703A784AE802B6D730C82E7A5981DC29B586174FB22E854CBBE4C359D27BEAAA684866AECC +6F33F9C1E0CDB2F97E32F7DE1C74CBE941D21EBB079CCAD9F45BB6C976331CCB1AE84BD12DDD0C +0245E24C556BD9DF805DDEAB76BB5B82A148CDFB8C17F97B70114107A41812EE10D16366444BFF +E6EC7BB9FE286ACF78FC1C50369FA2E0E9BB26BEBD3112F8715651DDC05482809C0348B8834AD5 +F8594197582B9FA1318E4908A108A08BF0163B419D0B20BEC4402E2B1E96F18552DD6FE45B9759 +FCB8EE6A64B9D901173B3BB5D36EA3074C8065D37A7B0E01884A59841C5C208D924D8436AE36B5 +F7EE7EBBD690EAB5AE9897B43B6F46549B6B41CFC6A5EFEB53A6E1EF8D9DF28E78D3186158D4D6 +1C10AAB0C85FB5A9CC43535D2E458090AA80AA75F39B0AD1C02E3C103269E8A40E60832AA2B160 +B78BF08BF2DB06C8D55C768055DB5F52D1F24A2599EF1F412DB23121BC8BABC1933CD43B0A5908 +77246FD36AB18D0F0452325E5F1FD495499C754D3EFD68D948DE856774E476660F91577FA68756 +CF17936C23246504495C072341C8AF8E7E4BAA8A5D7CAD373D9599F52A4D88C2F5DEB65A2B9C5B +6914C569F8CFF9164725C261EEC2AAE3C88A26BFE1B6327DF1EEF827562BBF37E8106729B5CCCF +C0F1011864574E4D0E5B3CEA70B562F03BDDA49B107521F192D36ABC6ADA755456175EC9ABBBE1 +E550C412239EC97662338E92253BBFC7D142570A6F22E212C8DECAC66B4AAAD9DF4BB681BCA16B +29B7FA623C47FF37905F923C0143AE479FADC0E27E8FA15B461509D847F02876975C6B3B33F490 +A4820F9C43D3F0115C6157211CFF4B13696BE005FD45481C9E496B078389E01815B78C9402841C +45B721355653E4B64C5F226D114DC02ACCDE11E588DF5A7889B8670F1C9F40A5DB89A7C8E901A2 +8EBFD43B24A5DB9B2F864C6A45F9DD7DA926DA86DBE5E2EC9FA04004862A5903F6A5F372303738 +B42D7FC4A35941157DB85F26C8D11099545E57B0AAA49DE793C778B8E75F45CF566B54BD1DDD7D +17E3621418F09A96A4EA2D20AE83D88E45C0B083E0CB9F3D5FB7D704581BE82E3D242B3EA6A7A9 +29B3B8AF7F5D20CD8303E7EE1CDD637E3DBDFA0B876A2E7B7106AB66779F1ECE9AB75E4C2083C7 +C97B246EF9B67937CFE4DA2FD95A5E12D019AEB10A8B1F609F2426F53CE3A6573B8A13392D762B +B2A97FF2B9ACD94ACBEA9A46D6F0F2C464145BC6AC740A19DCE03904FB928F29053493D4CA10E1 +351458BCE3B003C4BD38C891559E363DB4F6189F4925E314F77E7900DB5285C87EF4E2C55B9A12 +CBDA6762604F98B6D2209BC928DDDA85C5B5AB12876AE7D6864E8A242EB1251D6FD05F8F088A80 +FCF304F598F9FB6AD997C8A5481BF577FA4F61B2B742FAF0BC932E886A961B060E6320C3D49D62 +7C04EB0295A7DF9F8AF5F2BA6FB64AB76F685781460B35B7C510E3867DC0DC41179A1E8BC5BDB9 +5DC54721AA06B8C2119A8617674BD10F0687B07D56DFD63AAD41DF660F600DFCD91DC80645C4F1 +3FAA4A6C4B240863F6508A81EDF8B867C948EB7D3A7753A4731AF75F0C05DE4680CE216E04C8FC +49BC1CF193589EA6A33C25BC5B7155D4E34A43B49A8C37733AFDD714774E9E70FC22B40D6C9192 +D073E2E9731FA2B80ADE7D40ADC5FE1ACC52952159137FA5B30A7EA95C39A5B6CA9F6F1B3598B2 +90EC820457E11DB827E3D458C2E682BC1FB6B5E74817246B4FB47DF7DE1CDB835A849078BF71A9 +7711EB1F74791E797B3E73FCDAB725C5898D5188BAE77432AC20087EF62211EAFBA46B91B295E0 +8FD9D4C98C1331E4A1D7206A60F03EFD2E8925ACD1082FDDA8B2B6980B960C9D03BC754AB0FFF3 +EB6E92F8A6D41954CCC7A6598CCA897057141F0ADDFED6F802994D00EFC0771E4B5CC79CED9844 +E2CF890AC9F70AA4567102ABCC67C084AB818076D3134089E623CDB5CEF16E6AC89A1EC34BBC2D +ACF87E3D7EDBC5A2FE1774FE6B5BB78FC53425D364919E8F086D07ED1ECA919F003A1C5C05B914 +02086AC63F3546A34F2F99C88140F4C51096B72169B413043C366BA7BA2E5D1DE570FC1EC6CBDF +03658EE0AB3C1144FE15F8E89FF354E00261483F366BBA154DAF5E6D910F1D40F7DB4BBCF8D82F +4BEAB925EA8B0F5761B1517A2BFDD400E6B6B9605034688A7148596AA8F25B97772979B49AF56D +28B10146125B19AFC56881CA4BD579D649D104CF443E94B186FBFA0F29538D8AAC4EA3C1774A7A +64226D033869F1D821E98B9C9C1393FF35EC9A962BB8BFD3D8D062C086234D6F14D9AE028C2957 +5114905FA35B368C44BFA14DE4E73A4D6C1A119B79A6E3EBB915C9D48D3FAEC3EF31B7AE39217A +21B66FBA853E750000D395A9BE87E78CD91F390C5919766CF31E45EFE678577ADB5931CF5553AF +54F9A0E9BE0428EACD715F7D20C3D75D20810C4C0D96BB10C14B557C201B954841501341827C1A +30DA27C34A5A4CAEAFF4A3ABA566249EB82BFB367EF41635B2E27133C0BC4BF6EE280401B00B48 +87EE78B50E524A9526E442E2EB566F3ACABF1C60C65F60075C434367C67DA4AE42B1462BBB0AE3 +9C83123BEB32327FA66C18409CAEA447B8F504FBFB2CA2EB0448691CBC3C1826AD55697611E310 +BA84B3133D1240BA430B08010BBB0DD02A84FECA352324CBCC9AE188CD9213C2D513745D868C4A +6A0C995D7B455034DDC41A8ED06752805DE487375C69DD746D7F8940101EA49871A4B28AD792A5 +69E76930C32568A9ECA82892B44E111ED0806BDFFF59EDD79B5BB11F82CB7EA201524E6D6D8343 +C3EF568F33A450F8A25128218CEB810B4D4566547F2F0A0640D7F4C8623945E5755BB7B6B48272 +96AF202D9F4B17A2B4CD03D961B5728C04E275E037E49FE8A29A89972D0061055357A40DFB5019 +D0959C44E231D6AB8C6FCC8E24F5291E4B9C082AB5F7D58CCF25 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +%%BeginResource: font lsunr25 +%!PS-AdobeFont-1.1: LucidaSansUnicode25 0.9 +%%CreationDate: 1994 Jun 04 10:42:59 +% Lucida is a registered trademark of Bigelow & Holmes Inc. +% NOTE: This is a partial font in Adobe Type 1 format. +% The complete font in fully hinted ATM compatible form is available from Y&Y +% (508) 371-3286 USA, email: tech-help@YandY.com, http://www.YandY.com +11 dict begin +/FontInfo 9 dict dup begin +/version (0.9) readonly def +/Notice ((c) 1993 Bigelow & Holmes Inc. Pat. Des. 289,420. All rights reserved.) readonly def +/Notice ((c) 1994 Y&Y Inc. All rights reserved.) readonly def +/FullName (Lucida Sans Unicode 25) readonly def +/FamilyName (LucidaSansUnicode) readonly def +/Weight (Normal) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /LucidaSansUnicode25 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 161 /25a1 put +dup 202 /25ca put +dup 203 /25cb put +dup 230 /25e6 put +readonly def +/FontBBox{-26 -236 1026 815}readonly def +%/UniqueID 5054525 def +currentdict end +currentfile eexec +8A630409A330FC5FE1ED7CD3C975467DE475D113569CAA8B923FA3C5A4A5DBA1B426534896777D +FEC0CD780FDE4F4A4B37CBF69BAFE9D7B1674F09E7B60ECB1F741B6EDD9AF78B9450C77EB98488 +7838A9B1EFEC7714CB963DC0D2D7FC90DF439E7B2FD67B771E742DC7E7DB927415569E8F7DC363 +784A57FC7AC7182B65E2B2B985E0344DA414383767D69F0072B82FF65429A625F418B9554E3934 +A06F03727E3C9839A4E576E2351D0253B74FAC9084AF6E67133A5537926A8C80589A37F8ADA04B +5C2AC1126AA5CCBF23226508D011D14D13C6FFAC13BC42FFC82A696C06889B21F1453BDA33C3AC +FF81DDCE02738FAE387DF215DFF6FF74471B4EB78EA8C9F24AD655490C27E6059414A56A52A9FA +E82AC778F1210142A0F9051E5AE4B9E361B1FB91CA17F95CE918651919C7A235BECD1E676D582D +643C13D5912E896FAC77994450E36EB321BDB157BC6DB7FBD0EE4B0C1A420C2645ED9595D2D21E +F387557875DF6A9D774DAF42CA703FAA6377C62B435A83666621A7C4E578421D8C68899952954B +E992C6F613EC3AF8C2F4EC93A4AC5D7860448117BA2B6A968239B7DCC4036B4B1FBAECC17CAB89 +BAAAC5D4362C3CE32E00409A6AB9B231767C1A27514E9AAD74C32EB9F6C0DBB6F839A28BCBF862 +D183D1247828DA457DAC59A0CC0CA4153457F0DF3B5D6FCC06BCBB0B5919DA74CEB11DDF706F15 +B342B26D610DA0137ADF11F3BDDB3189C9DA0F0E870986F86C61CCE3AE60F771B65DD2E920BD6A +5094FD2A12AB3A59052BAF45248C006D431F5B04C9071F925A7F52C1271E7FD3A7F9B60FAFAD56 +8D8CEA6BE39066D98313C932A77140F1658FAD3B32F7418CA0FDF48BDF17F3AE6F095D34C707C4 +9F50C3DFC3148BEB942A63A5619B94218BA5C1F63F66ADE29E1396CCF7CF7CA97788D73D4671D7 +BB0CAE1B8E13CE410F2172B2445CFEC734F53A6EF3D3412C37908D22E3E80C817EAC0955CE2752 +E9B2327A08895A254ED18976E194E85CFF852770A56665EBAC4EAF1F6808F6288AA2776F813D6D +F089F25B21698D10A5C00522210F606F890760441B0871F31A4C0718527B68541A0314D67354BB +834F4FCD365DB2379468671DF697122B66E999BBA6B2A5A6D95E26FEB0E6AA3B4590D5B0C8F4F7 +AF1CB7FDB904F10E8817F7045238C813053CB2096EE5DAC923CC9AB2DB9FAE17B2BA08CA49DB7D +71ED0072A402793C51EE08DC09FC9C27F2E15254CCF9FEDB998F0E3B12C60BAE7CBC550A59BEF7 +CDE1159E1D6FA72E0026BE03299D851776F57069E9178CA0C53CBF939792BCA7CE52A3A90CA729 +91180F917F1E21FFDC2E306595ECD95BE6323E539FC73511C7FE237C873A60B4B4E06C49C39C1C +D1CEB9EDAB2891F30BBE64EE95C27487325C07F8F83B2C0CF8B394C3D0ADA55E4B4541A917B23C +6181480F95544F2DBCE9F22F40DC467F300234CCBFD55A919A7B4D7EF74D0C60E83F2627BD5471 +97A31EF7AB8E8C27A2EC8CC90B846212BB79CFBA9DD702DD627CFB9FABF73790BBF5AA82450017 +4E144A95706851EA88D454A80554853D7EDA089C97BD99805AD58EA333836351E1A6FFBF3F270E +E36B9A8A5C98FB53B9B77AF49F3330416708C3F8C9623899CAA72E8812C963AFB98FBDB4596F18 +32EE5FF6F6AC53B618EFDA664A090C1778C5D340CC2425184EF1AF9C6A7BC52167584CF057F737 +006496131A33D19C40B00B4A728904CCF6669F1AC17E354B71B9D6BFB322CFC1DD2E3D66C97FA5 +7886ED6A5455AB1AE8D51393C52D017C5586EB16FAD517AA4F76B7F0E3913C235A5986A767FDBD +BF04B397E7150F9CB9EE84BC53E65CEF2E4CF91C0C819D7A4860E35092E3EBF647B323331C5497 +A980FA0E95D21A0AB2D89ABF677FBBBE1811983D6BE163609EFA447878A6B9ED22479CEF8C9D19 +E8683D22DDA81461371B0D4A2F993B9ED149E14BBACAD0AED92C0B180E46DBB02F8F658A470ABB +3688C09C52006DE3A6264E0F33E92B1C6F69FE0148CB284DF2283638D396E5F8C8C7FB2A531350 +F49ED6E90498D2C30B6D48BE680B04C6CBAF4B2F92347AE886270B5753D12FE54A8CB0EA003022 +0143DA37757BCB85E0664D61384FAB84DDDA0468702C397BA2A52098181BCC26ECF597DE542CB8 +B1A0F199032BA329EF8185D97C9B536BEBDB7A9588D9EE830804F0245FF142D4BCBFA74E1D2AC6 +BFB24ADE82B947BFCF2AE083638301E0D52D0838548B9B935B52BC5F3B2FD8AEDA7AC6A0F44803 +0CB7E258BDA85320A3D6D3EACB188956D3FC231708134DE6EBE2A296EB0F07AF58E5FC366472B5 +03FA40D0156FCA4320BC906DB75250AF4C55B9DF5410EF3ED0DE8A7DAA82A8762F456BBF97BC78 +3849A1C9E1E9A7EF154084EDFB53FAB120D5F4A68AD4D83442E7F6ED51F251793E1F5D7504C874 +388E61CA7F9120C55228EBE6EE837BA371361407776E82796F5CAE390FB05E2FF92984F15170EB +89296050D3B5CA30D0ADCD59B9D666643FB69C43B2818F03F0BF529A5E68FD043DB7DEE7EA3C34 +0FDAF3598037C8C0F8657F16EAD01930DFB8A633572D6DAC96CC22EABF4361A4EA443E55102E45 +C2A7443BC2DB4883B1BFAA58343FAAA48E347109B9F5D306E450E0423320763CAC8F4B48177C85 +11F6703A383803215E520AF7CA6C449C4906FCE3695117888844DEA4A505372010A0E130FDF705 +A37E1DBC59691D785D37D40E737AC708881A603BC0D97730526138BF428D951AA75579D159E612 +F847418C23DD120FBAB2CBBFEDF9BC3B972CD59132C313D84F5CE45B0740BA7ED8086165203068 +689FE81C9CB701D205C815A8E4BF2C341D264017ED02602ACD5F6576CA7606E51B3EB22CF7AFCC +3C466B69801149AF48A8E012CC75559041B984640EC5F8043A14D70ED3AF1AF7395213E13AA79E +A3BFE238CDA1C40BCD49A006252ABC5B19EFDD78BCDB02987FAE +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +%%BeginResource: font lsi +%!PS-AdobeFont-1.1: LucidaSans-Italic 1.001 +%%CreationDate: 1993 Aug 11 21:10:09 +% Lucida is a registered trademark of Bigelow & Holmes Inc. +% NOTE: This is a partial font in Adobe Type 1 format. +% The complete font in fully hinted ATM compatible form is available from Y&Y +% (508) 371-3286 USA, email: tech-help@YandY.com, http://www.YandY.com +11 dict begin +/FontInfo 9 dict dup begin +/version (1.001) readonly def +/Notice ((c) 1992 Bigelow & Holmes Inc. Pat. Des. 289,421. All rights reserved.) readonly def +/Notice ((c) 1992 by Y&Y Inc. All Rights Reserved.) readonly def +/FullName (Lucida Sans Italic) readonly def +/FamilyName (LucidaSans) readonly def +/Weight (Normal) readonly def +/ItalicAngle -11.3 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /LucidaSans-Italic def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 54 /Aditi put +dup 39 /Alessio put +dup 41 /Ali put +dup 43 /Alois put +dup 173 /Ammar put +dup 47 /Andre put +dup 49 /Andrzej put +dup 51 /Angelika put +dup 53 /Anton put +dup 55 /Ari put +dup 33 /Arne put +dup 59 /Art put +dup 61 /Ayman put +dup 63 /Barry put +dup 65 /Bent put +dup 67 /Blair put +dup 69 /Bonnie put +dup 71 /Brian put +dup 73 /Burkhard put +dup 75 /Castor put +dup 77 /Charles put +dup 79 /Chi put +dup 81 /Christian put +dup 83 /Christoph put +dup 85 /Chuck put +dup 87 /Clovis put +dup 96 /Curt put +dup 89 /Cyrus put +dup 234 /Glen put +dup 189 /Heinz put +dup 56 /Jacqueline put +dup 57 /Jagannatha put +dup 58 /Jan put +dup 60 /Jason put +dup 32 /Jeff put +dup 62 /Jerzy put +dup 34 /Jim put +dup 64 /Jiri put +dup 36 /Joe put +dup 66 /Joel put +dup 38 /Johan put +dup 68 /John put +dup 40 /Johnnie put +dup 70 /Jon put +dup 42 /Jonas put +dup 72 /Jonathan put +dup 44 /Jorgen put +dup 74 /Jose put +dup 46 /Josh put +dup 76 /Juan put +dup 48 /Justin put +dup 78 /Kamal put +dup 50 /Karl put +dup 80 /Karlheinz put +dup 52 /Kaspar put +dup 82 /Kees put +dup 84 /Keith put +dup 86 /Kenchi put +dup 88 /Kettleson put +dup 90 /Kieran put +dup 92 /Koen put +dup 98 /Lalu put +dup 100 /Leon put +dup 102 /Louis put +dup 104 /Luc put +dup 106 /Lunjin put +dup 110 /Malka put +dup 112 /Manuel put +dup 108 /Marcy put +dup 114 /Mariusz put +dup 116 /Martin put +dup 118 /Masahiro put +dup 120 /Matt put +dup 122 /Maurizio put +dup 126 /Michael put +dup 177 /Murad put +dup 91 /Robert put +dup 93 /Robin put +dup 95 /Rod put +dup 97 /Roger put +dup 99 /Ron put +dup 101 /Rudi put +dup 103 /Russell put +dup 105 /Sam put +dup 107 /Sami put +dup 109 /Sanjay put +dup 111 /Saroj put +dup 113 /Saul put +dup 115 /Saulius put +dup 117 /Scott put +dup 119 /Sean put +dup 121 /Sebastian put +dup 215 /Wilfred put +dup 45 /Will put +readonly def +/FontBBox{-250 -211 1099 967}readonly def +%/UniqueID 5029007 def +currentdict end +currentfile eexec +AE40F8585C2492B57FC8C19373E315912C0135F3613C38B98FEFD06419749A2EF936D049568E91 +2C3B4814601E6F1C68E63168C5EFE4A12F1C972A88E59D27C31A2A9C0BA365B6FE3266DE7CD0F1 +1D5F0698C11E8C1D4F1056410F924EFF7F265CD09F63373FFF21407562BFA055B1BFA359C5890A +384338F55437BCB13EF47EA2FEB34874DAE99A2A8CDF087F076588CEF4F5F52D27F99CA2FCACC3 +B00B2DAB26EBD6CCED97C1076E2E38C1C7179AF884D34E5981F3B13BFBED7B35D318515DCB2A38 +02E5402628ABCA3D4BC1F4808D32312ACCEBEC95EEAC23DBDFC3788D91B5D781933BA1E7A9E7BF +693D5DA7A9281F1C6A7C34E8D6A8145895DE4B6AFA59BC2F66198E226DC29A066BA02F4739FEF4 +FC344E81EDB55226B5E16AF7282FAE761F3D9F253D76D6442D5CC7CA3043F7B37D5A34A905ADAF +242097EEDA53782431445078C0B35090520B01B437F01D891573DF402A427CECEC5386F1603BEF +05EEB7DD5FB545BE8042FDC2656F47C7ABD12DF9DBA59693E4F9A554FE067AD8157D2BF1EFB7B9 +1C54F92B27DB8FE4AF1572A8E3131A5FC251FC8F3D5918C30B18337CF3CEB9AAC264E467F9C4E1 +3BDF64763DF9650B0F6A3FF6092F2241B1DD69076E3878B875564E5EA253BBA208DEAF32B48D82 +CA70B0D8FE5181B29362D1603FCD82116B2FCC77931D0E121CDC23CA762E8C9EF47EF6780EC5AB +D9CB39BF6BA8F4D191F9AAB5965691C4346624EF1559E151378A8EC69A126FE29F5BFEF6162653 +B55AA546E4779E7E60288C059D2DD6FAE507F6E01DB910D52D10EEA2762D59A01C2F1FA458466C +07AA5A0980968990E18D71F0AA71BBD17CEEAFF025A16913D1BA4D5974D6258BA0D1F934656B65 +19A3AD2375DA469B27BC108F919BE01C833BB6CC59AFFA34F976382579EC5253B4610F9143318C +050160C7002E29656B29874C5BC27700C912C7B00C1F62458775BEAF10C5A2858456FD04C5B6E5 +B790085D9F584195CC9BE74E7DEBDC57D5084C3CF8168D7B194D57EED9F72AFE24EB78A7CED489 +AB96EE6F2CE148C3C8CBC466AA2B35B36842CB48476D303A7717C4369F803A4FF311D53F1A0044 +B5A3B423AB2D6F361D233CED47B79D579DC4BBF97AE7E6849CE72B35CA881B4680F073C4942FB1 +04B110CD36C12B7FAFB9F8F03EF419A1A5CFAD1D28F13EF057C795F53737018583F52474008775 +5141099E0C46D3A7F65540A05DEFF5A0A1C68096CC39FA13354863897E93F98B98E2C53A693C2D +57AF95936FA23B61A55E26214D5B2337C4488BD6DC93DDA298FD77A80625C917D9D432EC1AE92F +DF42E184BCC2400C51465244F338DAD00BF384DC5910AE26F964CBB75F091609E73A3A96D8D07D +BBC4DB58148E2064C50B5EBDA56DFDA7679C10EDC505D6816B86241997582D77385E0AFD164AE4 +5333A18BC4FB8CF818CEF97158CED9628B78B6C28BE08E747739F924A7CC9C9EC72FD12FD5BCF3 +2D200E0FAF7D7C8F007C84EB868C2118F0A159DF0435C4F9E432F5F7DB3766CEB23939415E3709 +B1E5E14996C0B7123EC993739ACBCF6B28BE7628D11843B2AAD85AED50C9D82B5151EABE73505F +3A1C103B7F02C0429A32F3376C13863C347BC07472F6CB82B39EA37525A46B95F9387E654F8076 +EEFDB79193E97C16A69EF102ED96F180F44586ECB46F45611BB4FA173B4C8DE27E2C4AC2BD3E91 +8441E44FF42D13F9C119778806FFE56B8ACBDD4537C981571639C5D9D5522C822DE5F29B426B83 +74E02DE01D2A2B30281676D4593C5356214C5C6D3FC679395E0A838A447B2BC803218F97AA6C92 +EE62D3600680CC93187A2D8DC3D7616F4928CBC3E8C42BC5536D00A0F1D3FB114EEB9DA1B5FD89 +50EF78BB34E7AAAAC3AD105D960B3AA743CB487AE7D000E14C5BD14A2250AF406174ADF67A0BE6 +7D62771A8D6283F574F314FCE1FB41B80275B825066BF711A982E58E8F34657DB15E29B20B5EEF +6EE8ED0BAB63458DAAB556CFFE712851DA37303784F656309ECAAA93185643264ED4B7B6E05829 +67E94B9311A2636F0D6F18BF83E5FE28C81DADA7046E5D485B6A9754F679F2851C5C3F4071153F +C25F09DB849C09E9CC34A96E0DDE7BF692895D4B6678A1FBA8DF90522086D5C64715DE5FC26F16 +B954EDB7C3A0A72F1278341A1018286562228E2EEA26EE8EE340CB332B43CA68C65A2D57FEB45D +0BF8EC6092219E7EF9CC649834D297EAF3B5FB00F2F83399311AC5FABC8761A13575B0C4D917BA +0AA75C78AC3AB78AFC746CFD5FEB2B91073F2FD8D4C2A3A490C94BED5131622DA474A860B312AC +4675661BDF91D076228D148270253325F12147C5A7FB25FAD15732E43004A70F095EE3AD448D9E +336CF44C4D55CFC772C92E15CEEC2F56A002A6E1670ABBB074DBE0CA55BE5D1FE65F5A9FF90E1A +F4A4B5455B9F3A82502C4D860468B7E7E91A77FC043C44E19211A96D8EDDEDE29FAAF156AF6C71 +CA2D0D26A7AA68A2A0864BC236E3B410485D7CF2A51C3FD22A147E3E44E723CCE629A3E67F5321 +6BF328C2BE130CF9C05260E4E5FBE73D9C2032BEA5AEE7B0ABCFD2F6D9874B77D3B61AFDB4B300 +55A0033C9EC86962E50CEF67EDEEA31C093B3A429D9AC37D58056FB739B64FD22BEAF7955D1A12 +4E1F5F81C2FCDD89432C15ED61285B1D300C10714167D1D4DF9C7B0646BD825805B7E6F21ED4A2 +06974B556EE6306C84FCB475F4F242C440A41B67B543BFCC178DEF4E58B739ADF0E14D4D0137B4 +F48BC39918599A70DF1F0DE49F6527D25ED35B5901B2EACB584E8F29DE5CCE15AC1E31D4A14F43 +CB2BE1150D22AD419EED486AABCEAC25F01BFDFDBAE2E3E4C899B3291897A638B4420960CF7AC2 +F08236D1D7747AF87A207081CACBF00A0994C2F98EB90AA3F4211EEED6A0425C6BC0CA31DBC6C9 +DE03E02A5AA192F0187C822AE022AB776CB891E95BB90BB89C07D34A38911A34BA591D78B7DE83 +6BDC01BA45F0A66D735E317B06AF7EE6E817E98FB776EBEAEE6B8AD56FF5DE1134B7EF55D87F21 +057F1248CD06932F6DC349D2E9B1DE0B81E300625E370770C548B89FDA0AA4F8B7373426A4C8BC +200F54CF2A587DD11ECF76E2E324591FCA3817DAA9B3FE117C826F5B53F24C722F766F73903C58 +A81A2067F7A3E8544B64E26BFBAA0AF6FB10EE8D4E99C49CAB1B397E0AFFA566B007330EE54DAB +AF0C044E8FF8CBCFBD70A372C5050F02AAEE6E2A648771A199A8290BAF6ED4AD485DACFA5A4937 +CCCA8B4D03FE96D7CBC7C60E6E95B53BDA2597C66168D3564D1BC6617033688510AAE0F6DBB16E +192CBE34F5E0364233AD2A2D0043703A48EE02E2B4576645BEAF3D44622983407461F2E700F3DD +51DD10BF742D645F22700223960637361E88D79EA8EC0084F5F20D0BA3EB94A7B5EEDDE499A39C +1D621945DFB5937A31BEEDB0E2DE8395EAEEEC4A912825EE2D30E06A351862C9F02711D38F63C7 +4BAD03D267BCA956F029F2BD396A577000AAB31B00B004D7DD5F6102D7FE0BB8443AD768BD6051 +CBB0F6C74FE866A2628789EB0E2044F2EA6F0D1686BCF0BB7F245AA757A20EFD93268FC1E140DA +35E759443BFEB681CA8B10244B4E395F3E9A151A5A3D74293E5EC0A2C2D2DF37132705FED78742 +8C5E876F567D1CB77F7338F70B3FE5AD1F7D9D6AE6AEDED983B638C5B1F6284BBB8911387C2CBE +51B92657EC57F3F28F9F71BFE582DE883F2F24A3E1BE90D5DB001E7B69968AA2B8564940A2B3C8 +3EECE73D1DF1A51672429FC169488D329D8AE41E0D7E557F6678C6E36EB1877DA3B7AAB89EDDF1 +54AF743BB2FB8F4EA0AF7E8761F3EEF6794FE66A5494E74F7428EC2D47149F05B8E3CC934C46B3 +8739D1BEA64A39C4AF8CC42187FAE682546468FE3C68521D074555FE83FB96B018489EB12C7437 +9EB97E53BE86318E53494DA7F214B9EEF02B1843DEE3D3B7FD4F94986F310FAAD236BF55E7137F +8B35712AD6C103FFC59F05AC12629D2CB39940395C9683B49D80D0548A17D45A422F9BC0F02112 +DE3AB03E5CC55DF670637BE7E4F0ECEC9B324CC26C16DA89550D80C609134B14E9C5575662A309 +783794C673B64C3C62932C64D9D9F560CCBDB7BB6DDB1A0D67A6C1D09AB7BD60348F91107F65A1 +3EC3149656CDA201356CC2AEB313A97E203C8037C9D5C5A70A50DBEB91E8E4B54EF9BF8DCCC033 +23F8AAE82CB2B60737C52832DA384B02AD2A1D80EEB88AB6ACED1B44AE582B9CAB881E44AF4392 +D29F81A30B430463A0D48D26ADD6D7896EADE1C0E82DA83E28F414BB24086566EBA2BAFF475CFA +123D905A8A307E135DAAC8735B833005EE356EE627C6B3544DFED3D62F25E88429C244288ECB83 +6733096E71F85E602FB5A77E7807381D0F3805E29716B21D21AFA3BDE43C3EAE43D33082F2F14F +72CABDFA02022D3146A2AB88719998C6EF1984A5891EA63E47C995F5C484D8F3854A79AF856F57 +54E9DBBE35668176F67FB1ACB5238423D2E1396E7A4241574033C78F342D11F97D8CA238312129 +0D467F2A371BA35E52024740F82CD91A23525EF0597B06A1CE57C7D568B25A96EA0E62756F5E07 +1A63F9D2C22E1C3806B2F150A57E5ECAF61A999E3573E613F94591FC4B0B8F4BDBC7D2619E800D +A2CD525EA0B722CC25C26C740265774CAB6C3CF110C6A1C7BB9F0A2EA2D03CC8C483DFBBEEE0AE +831A31706F790C0F695B926C89081ED62B5D5E1F02F405DC455751D87BF06CC05147D56CDB03E2 +16E4EF39CA3E976F786DEDB9CB0FFC98E3B115E4BFF4BD63C2BF6D577971ED3FD5525448558DCF +C4D40E681C9FBBD650712C69FA78EEDFF970ABA0BDB69E33A8DDF3A08BC0E4DB8909A2DDB35096 +4FA94F03284532ACE8C62E8E0C5FC06EF66266944FBE4C6C239CB66A4445BF6E50E1221F8C9BA3 +2F11E198D306F31DFF8C9CAA5AEEAAB08B30F0ECBCE3CC3329AA58B1F165F151362BE3646EF3BE +6120E2B618135127192D4CBC77CBD03A83F6717133B61DA06E2118AEF126FCEDA71A426B6801C6 +C70AE8192EA70C6276EE360B9D89388C37D075644A5009E4450B3E6F88697DE0C0A2E6A1FE58A0 +72422BD671FA241FE11788AE83F63AF4114D06702D251FEC634E562CE367948521FBA53344D5D6 +18B0A9A2C5E013F8C790BD5DE8AD289DE859768CB488D06F45DB114FE12B2BA3FCD88099F955CE +2A3ED377192307CECB2E7227DB751776DAA54BA17F5E7137E1AA1F1B6DFFE782F715FF29E0C370 +76BFF950438DC7B7222A67238157D769C27F48CD9E39AFC1B0AAE6E670E20E982506FA564ACD52 +9D108F72E9A615C61907F00F6DC9B3FED3D99380B99242A53027A154891DB04C3ED328DC4B188D +9080BDB06D9513098D1C8A69D844320CD494DA7DCA8FE6B008D0DF6B3121599E951AE22A9EE37F +DEA7A4092509F1743505DAD2B07E1DAB21D84038115C10B5EACCC9C96C62A111AEA09B3259BDA6 +20202DED8FC1BBE20A8CB09E7C77055A9D0BD7D5F39B8F065B290900603EA23896CE2E7438E6CF +63BB8435EFA37FA35A2588519FC79533D3A1C1B376EC7BBE92388C3F3248C5239C4D21730DBAD6 +65A7785867BB355EDAC969FED613A52354E97501D56909BAFA0F87258B068CAF0907464B498861 +1D3E7E80E645F7AEA5DCBA04CE122C7A47007A73E725DE31C475A57988CE41BE7D1FE972A589F8 +D9CDE0977492E07457698B8E9E184A70EE761583058AC50884A880936F001D53D182CF9605E588 +92910AB45E3C752B6D266CAF22397BAFF1591976B6DEA208495EF675876E92ACFBEC1887245048 +30F05659B2E73E8E049647F4F28F529684085CB30EE66FA5929774E49C15875493F661B77F0C4D +6391EFE5A0D384BFCB2FC1820130E2E519C3715CFF2AC4B8A74E81C368C55FB5782ADB9BF9644E +2FD416320DD3C6CBEC64A992B3FB79991E62F129D5187763E7C7D8473F963F43F0D70A8EB508B4 +970A1572835201AE91F48B7FC35D0D12E7015CBD6DE0677D715E0BF94F1F9D3242F8600EB2B4A9 +590BA94CE6D342D9342057E69E0B71175B475F9F9FC8CDF962690867B6B962989D94B7CE670CFE +23D28E1197AD6C118DAE3CA2BF62FFBF5A6D03C7E1D85199908F9DAB1709E1A3FA4C1D18535AE9 +5306E0641C9C328886C72C91B49B498202C8B72EDD5C7F5DDF178584A24E6A89DC9EF5437EBED1 +CFD46ACFAB9678F27F4BB80279CDB62D9A23761E70ACF40ABEB38BB3242FBC012B8AD563073BC3 +240C6AE167A56B084DABE9096EF07C38BA3E6D380E2A1D1CDED670305CF0EA1D070E5FB8574D30 +8598EEBFB0C6FC907E25108902BBAD331F177EC95717078B97EDFF258F55793FAB9EDDC508FFC4 +719F491D791F5D8487FD5A31992A1E6E4DF7C82AA1BEF383C2F74ED7163AB6DE334D48A11520BE +2B47FA5C0B07FCEE735F63CCAA25507A78971012EC943DC2D1607B3F44DE13882DF23070BC066F +F74646DF196E1688D7350D7672F93691FD5950AD7ECE2FBD6D4B1CD777C88DFFCB90B57F9C829B +A0C9F061F7DCC650CEA49D70B440B84276E432FE47D7D4D67C241F8097469638E4F5076A65FF5A +15FBE8690B4F6788E843753F6D961043BD8C7908EC2A2EB795AD2955DDB8CD9B6A8BCB3C2BC673 +0A24CBCC79F15D44A6AD0CA0856E661EB07890BD79E93FCAF93AF80BD1BDF915B799C9118DE981 +496A963B4A9498E11893F19446FD9AAE7E4B4FACA51601F5C54D46E7DA49750FE88F420E9D7325 +DEB5A6B091469240AD0DB4537A46E71595FF598BDE54972860305F59F593CBCB7B0B26130CCE19 +E0B553E8D52B1953AA0E463D49A01B3B2B588044D423418A58665DC05B5AAFC47E264985934F03 +C358035E5E4DADDE030060BC07E7F0526FBEEE7FBD26CA50111E8BE27FC021214AA7BC8518E51D +93934E23270DBEED1246F623EF50C9B12A3A79FD2425DDAA17B4375FBC51A1FD8A7A456441C5F5 +C8DCE1A112C00058434E3250B841ACCFFFE4EE5CE4E8DCAD1DA76C39CA24EEF79A2297B70D6AEC +75B3179FBFA7A4D90B4522A0F4243D14FFBD028961211739790B55947C4DC63F0DB959A3AFC7C5 +65D672D80422330AAB64D51993BCD2A34FDD8B1848F5C400BF5236188C683BCFE47412108B59EF +41B7465B020FFA6A9BE53269B4F8AB5FE2A9373C3AC12A740EFD72228AC156A999C6079687FE52 +19BA162C917DE80869339BC76A9D7DEF6224AAB13F1E17BB4FBE9722B94DC84256529932A33391 +D085A85A4DECAB06978B9166F075B51DACD371F172D428081AE1826645F9A461C257A46BAEC29D +D6848025FB7C6F027D67A89EB217AA9879DCE693729D36171F815C3C6967F8DDD4A0EBDCDABA1B +AE3C7901A071501004DAA11EBF4E6B20242EB6C4932403A6FBC9C190C8BB789CB3C3F2DB0CEC69 +1FA2A1632F625FC6A1E91CDD863CE75338CE56B6F8863D77FC57B211D413F75B2F7C16F5392015 +C33B55B49BA91C9EBDD5AECBF97D80FFF1B84488FB259623C858B14BB3D78215185A866576F34A +0E259D58C750992B67B0900001AE2CB8184419C9BEEA52ED099057805F53B7FBAFE7BF2FFCB3F9 +7571A88C794B5AF35DF67BCB66CC21536AD69F860DA40C66AA8F6DC6E52A9C0CF052BAB6708EA0 +0ACEBE8A2D3FDD21CEE891EE4B905F72845B3BAE8591A20D99EC177C44528F56A09111A498160D +9EFF65D62BDFD201B608B578E9E052EC257CBE33662040ADF68209F5E7876E1BFB861E21405F5D +5D3A2F684C07F20223E26B289CC7256B10D699637E5A15F409ADE71779032310DB5FB5C98CE037 +89EAFF598241368500C76315D8E3FBE028F587237B1A4E71BF0B52C181AAE9B88754ABBE054185 +A035D118630FF66EB5A48C47949779276B5AC20699F3A33ACB5F9510263670B25A7E3E92666F3C +0EE6AFF2CCC733780A0D98569B4E08254D9D88DEDAC4F50EB1FE9CBF8588E301FED58E36336167 +7F47386A37B86186D0A0A4627C2BD0C956DF9C0C9209F3275BCD65869D14B94943DCB3A2FA8B5B +D7434CC1265F7CDA7D86300A5E033AD24468ACC1809460A8DC4231B5409909F865C6CAF7A2D998 +3BC3ED0BD15585A43C6598D8D3103547170067B51D0638150669DB52C1E371B6391D2311E5265C +6FDF27951111A7524A304E865898634CB768EE72B812A99DFDEBA1C284A0FC95442921B8DC7280 +2EF144335923FE114747EB3CF24FC652DA97A25C2C92ACCFDD15E82144500A6BC1B2F79FF4F722 +E06450D2E6335839962111DCBDB1094FA2D3E817EABAD4DB131F01E453ED5CCB794316E5D259E2 +7A0625D1B5827706503B0F67BF168DEA99FFC9AD1C6CBBBAC271BF0B92745C422F9BA22A2D2F36 +A0964C052062EC7AF373244D8A49F60EB8C2881906FCC197BC9510125DC61628C8C1B29BBE00DD +343075F33AD0AEF24F32B0F2EDF873401A60CE8A8B6176ACB9C1A395C8861BA36322DC7DC85796 +6C8C77F815477C820716F965B1E1F0AE5129A01DF4507E0E04B5168FA3566AF291F084CB65D0FC +E86EDE9EC19EFA7CF75C9749CF4B5BE79083E8FB7508A51C5800D546FB14D4D8B5191C598BA5B4 +82E8A0C17F77CE96EDA3179A4A5613C9235758699EF8E2B4682F920A70CEF54FDF59101C5135EC +3FEC9998660F8D9620B755F45A6A9FF807519A5548EE4BB55CBA5FE6D407499AD47707606DDDE6 +32D7AD1A58FC63F97357F4F5C63E4622BF4017B0CD757D554390F27123D17494630A756CA2F1A1 +A872F8C09BA62F76E5910578DCD4AB4B0DF33F6BF4DB1237EF65E5FA97C593C90728B12FB17407 +FD681A44EF78E14918E7B0530705A1B8F27495B3029252DA7A3934F7209D8BA8442FAC0EA0C03D +08623347C4B17B249B91E3FB30FF88DFB190AA14276D7A878D6711BB273FD611E15D13541CEB1B +B6B059985449B7A63C8C425A57AF00293AE85AB3FCA9B709FA60C55EB6AAA639EBCEF4847DA4EB +F28A235000471D355202F948B24C9283FD0C9C9E3AAF88735E3769B7D60A9410B61C9D62AA5425 +9E43AAC9208A794D56886F983EB006ECB5084CDC8295D1EC0F52B12AD4BDDC14E672450D2BB481 +420AF2E5836683F31FB7ABEEB5FFE9D5E1AE551D3A6E123ABBB141BF313E5D4ECAF00A12C441AF +E36DE60877FDAE8D255DD1F8BB0C0DEBAF10EDAB4CD2C79B4ED1CDE61E57D12B389C541A8A1823 +53637D9C1A48CE343C88CB15AC45CC54EE6895C685F89691D09AC4216FDDAD8549D164E8BCF101 +1C2D97B3F1DEA3D7C0EE3049860A949D8A558553D5E8FB358C8D2F31A1DF90BAC093E7AB45DCAB +9E9D4A36B5ADE3C696921C3545E6BD29587068B57A79DACD07C50610EEF8D16BF0CDDB6CB0F459 +8EE921AE8764247A771F63A3E8F39B072DF066C1229948CCD60B26C2FA9FC8467F09762BCD38BC +3C5A17EBF085DF652CDBC0386E5F8F908C6EEB9E8B35FCF8BF69177FE9002592F93733D3502725 +1035E29E2E4A2C17FF86B5E884ECF851CE8D1CF2E667D9F9FA62EA5C29858EE46647F77FEBD6B6 +071C827470A97888B53EDF69920EE368044F9DCDEAD7D40D21D44A90C44CEBA90B64D800B6F083 +5EB84A3D66BE4F6B1B173B8AF1D0CFE9D11FA65CA2AE847EFEF063BC4400D508C49C220BE19F9B +14A6E76E2D65E54DE811D104FBC001508ED53A71E6965FEB07423F4846BA0F0C70518D2D9377C6 +FAB46993572179E9A0D75EA6F67C5B7FEDF1B756C882DF1010549DA4B6519E9CA28C56053BAD1A +9EF5D0428F2CF9355320B70ECFEE125C9B752E2D30C6E259F9A44FD44BB45CE8F66C3AB6C27DC6 +E2A8919A2214220E0E5ADCF6C885966647797B9AEDFDDDDA5726F45F407034327F70C388B6EBA3 +5227ED48CC572516A3FF067B4F7707DB59CAE2B37663CFBA1E7128B43A2F1BBC209BBA10D71D53 +14A31B03E68F68A9A97F32C14205D4E998359039CD08D21B0B4A01FA2CB7FA8B28DB40F23B1301 +2D1664F42D084CD6D49588BF294EECB7C2CF18B65106BC49DA160DB79A63A9A7194C9F2F79F2A4 +F97EFA10698F291334E8B4F74C9D948F557C25C4FBC798ADA8A53B9B0E6DD4BA50968F5A5707A3 +A6428BC7CC56704534463F5031272BB5C08DD6F4033FD1B5E1A395316AD330599EDC4E021EB125 +7BF081AC55857A913DFCAF39F66A1ED2289A57AB6CDE8A2F56D11157569484BF6EF26B04C7CA9F +C821FC46B9F13CA07AC0D90FAD8AC2866BA8DA0D67B908A01387E54F9F9DDEF25F50A1DD65717A +3533023CE04038271DAC6CB401D3F692266712D3E380970368A34962C60646B12D129745C961F1 +F6E17FA854630F7FFA9E030A0C2D6001692E71495AD7492FD65912BBE636050F85DE19D51F2722 +E8FEA3C931541C9C370626163C528C1A3C0E587C7275806D08892C2618D0CB66B6AB37EB96EE34 +26274E9E4A036C57AE33B1C7D50BC5E2BA42BE0F14D32F02F77375087BEA2D3D44366E13F9CDB2 +096459878D802A151789E54C21E09FDC98C6A3567B7F6EF03E7E67228998E1F893ADCD0EE49F95 +22FFBA193A8BC1D5A2A43FA75300C4C72A1E388A792586B3716979DB9679BD3779EC4D9F427F18 +E4017D87C0B8C44460FE64C1A591875E589CB9A4818341FE9FF1E515F6D510685338514684D90B +A40FD68AA77BE2F5D5536772A6232B386CEE391C88D1796CD076A2133474F9B1506B446F61D138 +E5CE584D113BDE06EAE89D82F1AF25B78891766CB386332EFC60A57352BC96B42905C0072DDC23 +61F20E89BA1DF2EFC1C18FB071CF04396A45293E44FE656A19F3AE3A5635560763D03B6039EAC4 +605AC30D4E3B1A68AC6CD68B00D694399B9527F13D81099DA664919A3D15C3E6DEF460134A1736 +B1FD53DDBD20C248D0832074C2A22802B7405EB6D33D864D97B78252BEAE3BF9BA5DDFC4CA077D +806289B7ACCCA239E6603C7D2BA41B7DC820F86D1F8530604D7E3F8A1239081D7FBF9FF9C2D9ED +4D672417853364CAF9F010CF08E4E060038A67E70EC743AB7FD3BFD62E7C209B0281F592700E1E +CD0B18F65DF4947D24B2D9FA6C645348495864F66008BFE85089E6442856D0DFF9B27648A793B2 +22E98EF332692C08FFB08A7AFCF9EE4DC33343F8FC0B2BF5F59EA5FF484EEC4D0903A7DE30447B +F6159C922C3691A97C2308CC2B32683A72B3CB14023E76410345781F0949E918D47481630EB60F +891D13EA3AA81DA60DA50E67D0DD63E6823DC1375FC60738B633996A10B16BAC8CBF574732679C +B238B9BB0C1507515558A5E1419A17DAF43BEA11E31A9F10AA8DF17DD9BD9EFEC13EF6F6D1B47E +CE37F8D45D2817B5CAECBE38D45BDE09604146FDA57CC7E0814AC69558F170A7AC2F8DA6A5C7DF +485C1E16BB96C3E1DA2EBC5D76630A99A007AEB8F680F2A10182EE55A0ECBD17267F6A0E4AB5D5 +4E062DDDA4DEE9506528043578853DE1CE8ACDE68938EFFE8283419D9A779BBC39221379BA2767 +DE78BFECCEA814269A456AEC28CADA35B7A1F5DF89D57F9FE64B2818EFEDB506B1CBDE22F9E706 +54A84DF0C0124124646EBAF633E054D704305B2723EE6848011985DCC11CB1DA81ABEB7CD5450E +31C218B45C3556B7D1DCD47D4BEA4E3FFC5930037B2664ECCFAD1204D8CDD7289BFA1B2F4BC59E +B586883A9E8757EBB0525A53EB83996963ED8DF4760CC16B542BB7C60FE6C0F3A18E18B26EFFC6 +CB96792CF2C2113E04C8E64335082EDB3FBD78DE0F1D61B55EBABDFD44786416F0AF593379728C +FF15973618B201D872628100BA908908A978EF091A126505221F6C52E7096CFCF13710DA707347 +308943095A0222411C858DC7BAA314EC1107CF9C7C699EE623981946E79B70177FE70BEEC2624A +928FBAF73B1CC7D65A6E76387EF3812177BA0914BAEBCC99564A2A26710129E23899D8822DF447 +06AFECAAD63168BC96BB879D418D3A26C214E4F26E186ED9B645F9023013086767A5276DCE1B81 +031D6F08055D5898C6C1DF53CF9695F0B1DDAAB78BB824B2EDCB8D726B2F477289C16AB9E85013 +1E1E23221929D95E17F4011D2126D783C1363403D650D426D642AF6928AC7A017E2D36A60CE6E9 +7EC189432627B4BB14B94E2F46D4ADA823DFD6093F9ECC8F01FE148E59C11AAA4417EBC801B0C8 +D8B380A4922D9AA366BA64BEAC25DE3BB50E5EEFC4E0AA8E8D6E7D664FE249F01058D5CAAA8C3C +AAC732A1507B9F84AE531A3F5A6CA32C812EC23E31F3F491F21835F655ADFD42E6387D03C500B1 +D924D99572BC8F362BDB56FB6962800DDEBA947659674DB719E4CA9CA2CA8BB36E28CBECFB9EF8 +16EC9B0AB6B464B959DFFD30F564E6C7480B72A5BE58B2B1527BF6967F08F929D98378B2D18AB6 +2A73010C9FF49CAEF7C76CAA65695F1FEDFCE05A487CBE6CA689F4B095BDBA432E349816190CE4 +BD03D7246F73B5A6BCA12E262BCCBA77E25C3A19241202EF50A600D21D16E8CFFA05EBB85E65B0 +E3AE69730D4D3EF79A0525BFAD3659DDEC3F536BFF0EEA6693A683BF9259E098B1CB8EC38B1DC6 +AD3B20DDBB88E1863ED1DF64A2452977A1C70CFAE0AC206977526D2EF4885561EDE9C0642D6524 +12A2BCFF8B37DBA2D31079C4AC6B9CF26518BABF3639D9169FACEC29E42DA1F0AE2EE290FC0F35 +149E0EC8807C70C4EBAFB12CA44B7DE7D95608DDBAFAEB476E98836E317187715C1F07C3719EB2 +0560EB5B241932106C464D074EBF0B4B6EC4E86CAB3C00357D406EA833652D729D32069140817E +F7F906E8650CAE88FABE5545CFE266F4966FCFD8F83DEED5C086876952F0D024108B42E06D4DB0 +89EF77802BB2DEC90966D331F6E34D92675DAB18FA3334DF9918806BE5058BA582F35B2D742EDC +F4FF8BA830F0C86148C235788EFC15400E08ADC57D6ECE093E1F7711590DA9D30017B730774052 +6937D9A8A4756ACCB0A6BD2888CE2295658A9B534B88EE43DF464BA3AF64CE2504814D2B065B85 +0DC705049E0B346D007B43AFC18028D4E9539EBC7CD14737CC1B7F10F2CB000A7F219DF60B449A +12D21E16E8789B7B8F67C354574B6CB5E0B6B612D9C5D5B0AE7D87342AB404E967494718582FA7 +D32CE4D6A81A1C9EAF3EAB6060DFBA250685BABE46B4FF3BCC701AFA8A868F7029B38F3568834A +8C34EB0E6DF3D67334FD0E4838075286331AB693179C65BA5087988383D3D5EC5E0AE7BDC99BFB +C358BA2AA274A4521E286CC6052A5C477696C5578D5608267CCB164694974BE93AE7E35F389F2B +AC6B7980E61C29B1DD2D15B42195E795B00D2B89E6C4BEC4379413B11B939A1528C56006ECC994 +7E4F14E3D60F7400FEE32D77798FF6383B3319C6F92E494BF73A90083F986CE5F2105C0E801027 +57AFBBFFAF368A20EBBCC6516B79682D8B70A23D8DF3A2BBE4EE081D4ADF70847F95DDAEC10B35 +13B069B9A6E50FDE25E3458050F568625F680D3DAB2FCD3B7007109358EF6428756F742C90118F +E443EFD7E6D879CD082F73B0B95E230C06C67DA5CC8DB4792EB274FD596DCE8C966F84B54FCB14 +8B57141947461BCC69A012B50DE3667F6DD9F0FC7706525BF5EABB07164BB07B9C973B5D31D0A2 +2CC99E37697A6D14B6F4EE4745329EAC6A5DE7BCEF1B10DEEB46DA4AE14BB82CBABC31040987E1 +74EA49EE6F543DBDA0063B6C1042EB379F610DB5C0D4263CFC08A9C5604B7FE2345E775EFF6BC3 +5C581500BCFFD98E23665B2115CFE33A184BBE1DB4EF955F409074512F61A37827DB751757E284 +A23C89932BA251ECCEE545B6DDC98246970B17C12FC7F9237E6D00E8187F7F45E048307688EE64 +2FA6CABEA56C1D8C1FB31E0B0B95D7DAFC1BE2E90F933A44AF03E94BA2DCE76D358C2D7A2216C5 +E95788A6BDC9350135621D59F52FC74BC96D94F93E6E63123B4F56326413974495E822DE96FC05 +315EFDDFEB919FB2A36BFD8580D6A21D11515EC7835082359F3D0B2F79901FD6CC2AC41E2D7B9C +412A49C9D7B8FD6EFA11517821643349EE9FDD5A6F4D55F440CB7284726C6DD45E84049F8931CD +570388CDD6DD5F7AA0323533EEA3DA70FF0AA8BC42F3B129D0AFEDFD840FBAF2CBC35FF45B8656 +BDDAC912ADA0A3C2EE447684AD4A0DADF205A419E583D57D352B30356D611E5E8B67538E2AB612 +787177B8C8CAE9A3F63E58913E026E2BDBCD9CDF272AB9B181BE3CD650AFAF3FB9D6E07D32F915 +4852862C3F7DB6748FC834C868619A4E7823733CA044DBE48F642944A087FAC70432D01392A52A +3FA0D1C54EBA4662AC8DE38827B17CF644C2987ED7E57D436E4A88B29A1C91F454A4637CA5424D +11B82D1137D58867A9BA363CA0E07C005DFEB038136D4FDFD5AF85F48E58E50D2AAEDC886A4B22 +CE2DBFBFD24F4A05A3A9FCA87A95A871BF8D6237C8C63E618FA4DBC9E15ABB677EB7F1706B1C9B +125D4F5E39A168A989FC53D34F45C24A52292627E11F64A7BE21E5A61D4D8F8C9F7DC3B0E139FA +1E7EACB8BE224E679A29DD3B44FB9B29220EDEE3FF41E88D15C914E9E2EA6FBD1D409753D69FB3 +ABF266FA7991E82B74C7C73BA7DEA82B0A0CFBD6291B4DFFA1D68306D24B50906A3EE87A0C3A17 +3ED5A1F983138E7BD4381E1B21AEC00F72873F4EA6C622118F37619F6A451DBC52D2BA704DA804 +17298BB1CD70A5FE38163F83ED96C2D5EC1CF2DC8CFDC9C1A8C2EC735ABBC1851C1A3270714B88 +ED8E2FB5A0469A18EB27C0B191169E37D71D62D6FE06E23B18B4DFC93F8E220DFEC3B57F34657B +0BCEB41F10C0DECED95960DD664C499BC607614D97C60CD7794807F2D509B6589EE4241E4349C9 +33A94C3F1E58FC40D320CFC31153BCB12F7CAE903D829E8B2300F41DE6D21B5BCED26673042B60 +3403B1918E2A57662FA77A21D16EAB58C3C81243EBC05D6922C843EAADC9DA99B83AE09FA329F6 +A6F0B5BA44AB4C1FE88B63BFA4D629EE411CB1EF26ABAA16264204637182774F1AB200C7E20057 +17E5168F766E790C248C4A38B93F5F9B5C07E612D72077C36688A597DAE740D04171E33FF960E4 +4C1E795C1C813E39BE2C0365341D1EC946BD30DC8BCBED7F9B4AFED3283B263155414CAF138365 +2C1935E75541A553121B7FEE8293ACCAC906EBABB343B875E4774387FD8DE4557830B2A8CFA3C8 +4B734F4AD5094754B96AB12E977DDC29F8E43697F737E52A6D9DD9A2D8840906B4ABE9C246F684 +10C38B404FA6251A2E8A31E2126D11929B73ABBC01ACE04A84FF25A8F7F1AE3A9C8FC04C2FF867 +5A41EB0453373722415563EC07A9DF738F7E8E9423DB8A09DC6714472982ED98165984C99F885C +9E9941F2A64D10BF1936C749019845FE5C5DEDF1C057837AE0C6BEE3072C0ECC044B5A33D4AEF5 +3506438F750804B696AAD17897036057E77A0BD7E02F2918CE13A48FED56C55FA447B0F32F47C5 +2AA0F53F03F6334E6C484AF42F265EAD25088232BC109B4AA86A475BC11FB22FEE50F92FB4C4B5 +01DBBE211228D5C14ABA48B56E59A34C813016D43817AF1B707D09BBCA2B20F3B3C90058EF7E56 +DDD4004F8754EBF0A16DBA018F8195FFBFD5668D4D21E7B6AF279A08A17D081811D2C34DA41E91 +3399F6F3B4BE23879972BBA56C65F6612606DD000A6C857F8F283E6008281E5D18828EBC6BCA53 +29977E4C792E468DEDA9BC087DD8B4FCC6D9279BCC069B5B7544585FB305EA3516268FFE6A3F91 +CB25909A61EF71B0016EF040365D193CCA29409EAD1AF569DC290514A10980B94D6E8C609728B4 +A35E97299E3DD1EC28764A71AEDD26C6D76F5276139EF13F052403F529713702E5B1089BAA4390 +78F4D5B1B2FA80FE3CB11B14BC466434BA54F839B8A9C887B769FB59463D0D50DAF8C71FA0A9F4 +0E73AF18FB6C7312FD51D0EB70027ED4A546232410E7D29A156A2291E29F6137FB42525BEFC6DB +3049AFAF2357A8ED9CED95CF7E33FE3845883E35632507F3BEE56533E42DF08FA0183CDCCE22CA +7E06D568D08D161560D106E22E9C9576ABE08ECA90A62510C2811D7CC28730D2BE9A1642052647 +394F4CD2A4A93ACC984C954F0E8C57670C08CF0D21D46E08925ACE4665D9D724EDC75EE0392322 +E9381632D8C287BCEF09E84D42E3BC345DEB24C2AD0C68FF094E07D32685866270DC457391BF08 +15A73D64540C28A7BC178F9A8EEBFF4C4478924B72FE21D51ACE32EF43C0D3628AE353B74FC36A +7267FC679DCB875BDFC77821233B30F41A6E1EFDBCAEE3B4319BBE29D253624E48201DD2EA2498 +34F67D2F111BF268942F6842939365C8E2BC3330F0243CD1AC7C5B62B7F0A2FBFCD0965AA10627 +73634020A2C7C364CDC14EA24B500CBF4A8C79B01D6DF55DB738CBE3B978111D65DB99A78CD0AE +43619F2E28BD444DEB85A7B585B19C594940C45870E21D4B1B110028A4F3A60C951A0884D57E28 +D5E26E0E928619000D5CFF442D019097C45DB01BE693F6528A00120A14845923BCB81F27BBEEBC +15A9FF9124371E485BF4AA8B51B2DA49DE8C2E5F4F1D909B2731B2B14B287D921949115891AFDC +2E9424E11D6A6E01800002B41B60F7AF908FFA016E775C82582A4C15F47F941ABA8889891F9441 +F2C850A29185D4B2B68CCF46C38ADFBF046CB7BCF9B610379E95CD8D2F68ACB47107225ACDC6B1 +2DD0A72F291E27199399F916370B1F7D6F4EC7D0109EEABE3191393C7D6446F86F10EEAD7F9D79 +B5AB0C053768EDBE0E0F211F306507510E589686D29D226E55D9F07696A144BB4A6400647A8743 +ED136D3C5DA6B183D0AF2B565D9D9C345EAE5B63BABA6867BED519CFD46CE594AF18AB49DA423F +0C781EAC2BFCA83F4B11B431C1DFF69E12287098A487BA099786DE0906EB2806278912B958D9D0 +CC168D6246251F550445413478B8A460A24FA8D80A0924253985753DA56A30920BB237E4521C2A +78B4E79A256EB66A4B2061F4B71B421D85223FCC8DB4FED0C3A4C4918FDEDC558C57850A62917A +0E57EA5C771D64A137E17D12F1C5EC08FDB94D1232B090127259DF02581C2584754EEA872D88EE +7E583D13C54D278DCB5D6AAC44F68E76186133A3EAC6AC3D22FFDE29D0EE251495A96DD973AA89 +867C6BF4A1B71B0956F32CA07D796A19A2B64CAEAC3B04AEE03E943B6FE66EE9840DDC086E8C80 +A0849F14992530B74EE8C58CA3F4E765A7A097D98D45DC90C48A3F6262E9999BC34EBF07D5DBE8 +7185B7CC1BE34DB8D09856E84A5B9B30C01CAD5E72034433045BBC57DE1DB1186BA78C08B6B224 +07FA803CFFF1CAB082856810D5639AF9E8653470B3FC95E1CF8FD80DBBB597FEA6A4E3CF584AFB +4A88D02C1EA61B65FB0CC7A96EF09AD692D035EEF27EB3BF2967364A42DF2D7565C61400B0E338 +168B81E69C07FCD2CE5B20526A707F36786C0C6D53B7E4567D41DF6435B4DCF13256B7E802441E +4C86A0A329EA7293B1A5FA8D532FD0F529A2CA7CBF0F667C784826A1891E8FB93564158B14EB52 +7AFD02156785CB4089DCAA8056EC101F85FCA80333A89AD17EB94C100BDD0552006139C9496EDD +FFE06E4D10C1258BC6912C5889D3D9108622BE978F52E855729C691DAFCB358169154A78659CEE +C855C995B334280BF279955835BD13DF6AD0066702C7B2A7804A223947A5F8528F0E2A962F76FF +2B41655FCEFD02F3F6F8D848D60B65399746806A9A4E671F62FD3A46A8766E6F94422B84E9E3CC +3F1ECFF2C86FD88EAB7C5665743F5F7E26F34864C701B57625A79CDCD1BAA2A43F482FAE42F9B9 +4BDBAA91ADCE7780AD209D2C19994574B9BBB132169B488E6BA22ED05C971D2CC5A9A0262844B2 +1698BA297412019CD7F6C796944202C89B7D7B188DCEB11C91F90F0A338F62F636B759924BD999 +B488C61DDAECC4B68E0104D51C9B8E38354AAA61EBB5B53A10F5798C3E755662C2F92523CE4710 +14B322D56181A39DB9073EF5CF6C99028C66A48DCD259DA4A9CA17375AC33C1AA56235BF1A57E7 +B3872799CCF1AE0534C5EC3AAA96128DAC5592C6A3AEF6AC4EC77F1CBFE1F7CBEAED6935913164 +C7CBAAE272A953ECFD2F9B95E63968190066A66DE5F87CDBB126AB5B806DB3E8F0665952D051A3 +DF91F4BBC261BAB836F921DFB0E6132283C40B9BE25DBA4DB5E9561658D735F4E7C635BA312C55 +A499A10352BAEA349607623649CBBD0AEEF6DFD9F436CA20A9A887A13C8B1E40064BC2B5E8F788 +887C4D1B853C40D74E4E759D417421FFFF7B2ABFF74E70FF8446E268C784BE7BF93CF20D3B085B +B4136068A30E1471895FD2345E05BB57D5C32F1EE6C3A288D1BFECA8276D35139876240E36DAA2 +99C18AB7A45DEEBC470F8DAFCE5884FA632F11845C1B28A3B39D820CD09B24ABE6BDF342A90D1B +E453764A959A0766C1F1B6F72579977F6BAF22C2620C22D16E52C78220AED5E5B0F977E69BB95C +A44F67FCFBA74F292773BBF4590773FAFC9632855223B640F8B5F3B991685215F92F1751EBA738 +5C09B7CAA12A617A4BA5497747AF13918DDD1AD89085AA3510443E8CD9B799F325AE43863E7F02 +CBEEC80A79A785DA41FAD2572E57A19F9A8DDBD1A12004F41158077B0B9D67E9CC4F9F10C29502 +50C74CEDA126664FC366E6C8E5D6C8DA0E935D68DAC7BEFFB648FC6215145ABA587DCC95F2A0BC +5E187C70FB879E6F75FEFB9FF1A09D4BE80EB65AF18BD7CF9ECA28F44E49BE391D4A95633B1329 +06A003D3879D1DA13717502851178B791137E3B8D7954BFB34E55B27FB430027D6A836C5773184 +C9384BC708991D81665F7D94803EE28BA76CD43DA908B279C772A4249E88DFC85A10849607DF1B +CA4D481614518C59017B1079ABDD1FF4A5FDAF8053A6225CED3FBE6F61A3404C797A61DD6845B4 +261B7BADCD7FBA647562514F72C0B2EF4077DA86BA5A71E192B2F4E7D9CDFDC1BC990F4A295CED +BE13590B98608C1B1A5F8E2A1690A4153B9304F5A32C764E0B05BA8CFE4907E39E33D69C4C424E +6BE32F2C298286EC2C7EE5D6C1B825DE78BA87F2E4FD59985FEFA23933832A4E61A21617B519B2 +9360D57CCC21A685DD415048A06C2C8F34A3C98498CF74CDEFD3E5A595140F52F02B47A34202E9 +2C07EF8E790186E56920F5967BFDE5DD6E2462DDCE6ADB38FCC059E189F8DA70A8687940CF9D80 +98FFAD9D7929487A9191C250ECFF0A90012E0FE9F902F78A2C146ED6E5420C00DD89F7415F2573 +3B5146D271A89598EEA4005DB32FD27DFA0E293423E4D433DD78A31910988D75F2726B3B8A7719 +EBD40A889AB7E38216F1301D6FB53363240E1A07C2ADE47B26D4B6B438FA69786A582C72855A76 +77E6C51555F39F3EFB53C79905BCDB3CD88D3A5801F971BC8809BF73D384B53C1E03D65CC34039 +2A7A564270526CBD6F9FBA7871BDDE6D9BE23C38D5E53B51CFE4EF588E519148ECA0649AAC1E1A +2606EFFB8EC97C9E64D46E9BB5DAE9BB73CFA6A9CCA578DB26ACEEB662D020F9D2F163B877AE89 +746A4B63040082385DF1C5BEC77350F9F5EA41F5941C90EAB5700820C0C29AB8371180F30BF009 +5D7CEF5446D549D0931961B246DA8F1C3535F8967D64FD070B625904D7D7DD6E31B9E410CF3D5B +DBB7B6D6473771B85F8E2924CA2F4D8DDFB2DB3D3E4CD46FC27C65F7058E8F908DAFA540BF2726 +A5A1A66DE298D6EB770FDD4C2EB07F3C81F190712C2C5253379D518A931097A96866C1D73AF6D3 +587202857D0A83D2A526D281B42AD8A29E5084228C527AAC631E85E9FBE26AB60F14D94FEF2E3B +9A24EFF6DB66998C5E2D36966A11AF147CD293723A5F2F34625F6AC2C4FB51D0F851AA5B4B54CA +E1C8002ECE653890BBC684E4D4EF528BF815BA9B3DAC3A6EF34EE74BCEBD75F35F370363879C6A +F67E849750D4953A880081DA1B64582E8D790C288B65DC1B69BBCB0630C77ABFDE5A40E0630D90 +F542F09AAAAFD8BFC57BCB9BBED422602DE45CB377C2E634B47AA83CFAAA35E3C869C0819E6E0E +1CA918941B15F66E9552672110FACBB538E8FB8A7CE8AEB2FF61EA94E098B89062FE76EF53C6E8 +2CCDA0E8A19BCA2B33F4671BD38C0DE622522CE84ACC4114473F10554F8B13AF6E50A8F7443EFD +AFEF23430F4C2AFC9188ED069E25647C5D89D657E5C570A27A4EE5981E1D9D317CC90F5B25695E +9E1B914773FD447A91E76E5E87E6613127CA54E8AFA17052094F6467438B369C8549E5A0A59B04 +D32B5A0B02FAB315F25CD4C7E16FCFF78544D88D983EF7C49AE1DDD72275759ADAFF6F206B563A +5912AA256CFCB35CE30CAFCFA481301F6A25F673A8B90E9795B2981601BA88400DD247AF468011 +8C698A366B875A8631AF3A5B4CEA30F1B98870C096B0285AD22D2AE0C3E7C2600BBE9DB96A9A40 +96BCB3275481F63EC41789444E088A98C3564F22C7CC1D5D343EE6E3494E46C99B1546AD0FC7A6 +561C239B5D233450A80A13F4DB163FED87BFD98FAEBA9178CFABD4B5828EE864403949429940E9 +BF97455B4B10F6FD8720930BE10E639F7173B460F56701B5D4AC799A794C9CA075D34829B98461 +0FA438749B33EB9FEC2BBC2A2D354DCAED8F46CDB103EF0F64670EB7FE92FFFD4734BCC9F5B68E +CBCB0BFF982FC7558774F9814B00802B4147A50F96E52FD1E107E1BBC7CD878D9BB194A3280DE8 +0D3BEF8FD0CE0FBEE8919B8E6A9C8A45FA2DD71197AB8F15E122B6D96347181D1363A190CAC8FD +84EDEBE0752BD3EB0312C7EC7864E68CD0962B3AC5B919CA24A3F3B75729AC6578254974D749E0 +9E460263EFF0F666129514DA59329972C02FBC41C2965D3F2C7AD1B834D210EAAB5FE5B50DF9C6 +E16A3DD52EB2A3E703364958B977060CCEF91334232C9E71E27C03A1DE128CFB721881902A1C27 +5FF14F0FD65AEA05A3A58241E874E6222596AB117144C5255EA57322E49F07A7DE465C39DF690A +6A9836B10E035928E05AD103954B6BAFCEC520D364A7E4FFA27EDB5299F47ADD3009FF45463D38 +8A3C8571B21DC64DD8CF7028BDFEB4F66D105BACD33DB5E8A00363B47B9D348AA1611C059205EA +3B5897658160F069213875205D4979EA1A1F93F196A322B6ACFA8545EBA221B363A4F6C32C5FC5 +FCB4E4DB0E2D103AAE01AC84FF8B1BF81D05CEDCA5A356981AED6A5F4A5978ED737CEE2B686275 +2612B63BB055641ADE4F9DFCE2BE94F9B593BA495A1351626702E648B62E781885ED4770A45940 +FB25E5C4DCF2CA34BCE72693C063D1F130D728D7D04729E8005CB872D264AB8EE6D125962DD6BD +27C0BD80247AE1DF710BFA28C8A5E32CD34E45D60AF37EACBF49682A1A76B15ED787E1E6371B5D +D56DB046DC21B5DD9463996A4D805135A4971B8C187AAD32C422087D8FB8B46B5B472BDAA9AAE6 +85C6C08431BE762313E443A37812D19F535AA285DBA7041997EA73498D5630D24F727335289DAC +BDAB419E8B044E45D08B45B24134B5BAC9CF14D48DE6AB4705607E8B7ACFA9772C1F4E86A35383 +FC11C4AA84A7C734915A2A5EE0C630268C6DC794DD6164C9D28C33E6208266D51ECD5FAC58C455 +ABE4DD2E28AE428BBA827C18F347127E07E9E14BDF6FF4555E4E6C79697073F5D01927422FB534 +7E854223D6932003F6F7F2B6BE4FBBAA65F2AF984012ADBDFE1DD4AEA80E3CD859BBF018084B8C +0E6D3E4B81B9F2023F818BFCAB27AB55D3930F03EDDF80D2274FB6BDCBD888ABEE7B9C3AACA6A7 +70FEB66CF346D7545537531AC4FA6DE2AE0B5F0751CB10EDCC047527117F0974A8E0E48413155F +B8E15D487942B6AEB71989CD74C88AC77809E1415C14A5BD4776A2593692BAFB9D3F8B398D9C0E +1DF346BB9A75915575B2ED1F1EAE8BA4DE510ED7F5E795314D5E5FEA572DDE48FC742F6318CD26 +4DEF0C83C92032465C5209ACC826D2CC9507097A18679C44329E25C87D98AC7A007B4795FA3F14 +E93993E927358E2E5142E7FB9CB2E62C0AA0C494768014DC0FCF8BFA1B299CB788B74A660CC404 +F661DCF070C900E4E418C0ECEF6BB7A7572C2A632A9FB4F18C963FAD73B5A0C863ACF3203489D1 +EDE5AFF38D67FEDE75F17AFE06F9130700BD092A55129DA2CED26CF10C5C088FCF82B192AF54FB +BE884D701A15D71F21099303F9204D0CEE6CE1CD4491FB5B0285EC589C17079AA6599ED30377F6 +7538636C92BD6D49B53C1671DDA036FB4A9251BDDDF41383F818F332AED33E010C642605051FB6 +5F1E68DDB634644026B08ECE7608AF5AD2F648E32B6DC1ED202F02E12B31E008790FF62B097F9C +C871A36A23737F8DB0EACCC75740CEDD89EBF1D1619BC558D35FC49FACF0C4696F577674879B35 +DA2342F894FBC85F7EE7F4796B680D12ECD8E344D5FBA7F5E56FE4D5C138309CABC4871D81134E +C07D9825556F78F74C9239BAC7365767761577FDF31609C5C884CD95571410856CB2A87CE42BD8 +9F92B8AFADFEB5BA618BA10396AC6B31A4E87C2B89B521FA100D8622F39C80190749C5E9C26F9D +1040F6B90D2D380BED092EEA62D6BBD648B1021719799FCF210C5EF3BAE4D44C4D798D6529238B +5BA06D3C9F9AE5367CBB81993C19F9286E690DE1345FFDDAFF9FE36E +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +%%BeginResource: font lsd +%!PS-AdobeFont-1.1: LucidaSans-Demi 1.001 +%%CreationDate: 1993 Aug 11 21:10:03 +% Lucida is a registered trademark of Bigelow & Holmes Inc. +% NOTE: This is a partial font in Adobe Type 1 format. +% The complete font in fully hinted ATM compatible form is available from Y&Y +% (508) 371-3286 USA, email: tech-help@YandY.com, http://www.YandY.com +11 dict begin +/FontInfo 9 dict dup begin +/version (1.001) readonly def +/Notice ((c) 1992 Bigelow & Holmes Inc. All rights reserved. ) readonly def +/Notice ((c) 1992 by Y&Y Inc. All Rights Reserved.) readonly def +/FullName (Lucida Sans Demibold) readonly def +/FamilyName (LucidaSans) readonly def +/Weight (Demibold) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /LucidaSans-Demi def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 54 /Aditi put +dup 39 /Alessio put +dup 41 /Ali put +dup 47 /Andre put +dup 49 /Andrzej put +dup 51 /Angelika put +dup 53 /Anton put +dup 55 /Ari put +dup 65 /Bent put +dup 67 /Blair put +dup 69 /Bonnie put +dup 71 /Brian put +dup 73 /Burkhard put +dup 75 /Castor put +dup 77 /Charles put +dup 79 /Chi put +dup 81 /Christian put +dup 83 /Christoph put +dup 85 /Chuck put +dup 87 /Clovis put +dup 89 /Cyrus put +dup 189 /Heinz put +dup 56 /Jacqueline put +dup 57 /Jagannatha put +dup 58 /Jan put +dup 32 /Jeff put +dup 66 /Joel put +dup 38 /Johan put +dup 68 /John put +dup 40 /Johnnie put +dup 70 /Jon put +dup 72 /Jonathan put +dup 44 /Jorgen put +dup 74 /Jose put +dup 46 /Josh put +dup 76 /Juan put +dup 48 /Justin put +dup 78 /Kamal put +dup 50 /Karl put +dup 80 /Karlheinz put +dup 52 /Kaspar put +dup 82 /Kees put +dup 84 /Keith put +dup 86 /Kenchi put +dup 88 /Kettleson put +dup 90 /Kieran put +dup 98 /Lalu put +dup 100 /Leon put +dup 102 /Louis put +dup 104 /Luc put +dup 106 /Lunjin put +dup 110 /Malka put +dup 112 /Manuel put +dup 108 /Marcy put +dup 114 /Mariusz put +dup 116 /Martin put +dup 118 /Masahiro put +dup 120 /Matt put +dup 122 /Maurizio put +dup 121 /Sebastian put +dup 97 /Roger put +dup 99 /Ron put +dup 101 /Rudi put +dup 103 /Russell put +dup 45 /Will put +dup 105 /Sam put +dup 107 /Sami put +dup 109 /Sanjay put +dup 111 /Saroj put +dup 113 /Saul put +dup 115 /Saulius put +dup 117 /Scott put +dup 119 /Sean put +readonly def +/FontBBox{-309 -205 1151 967}readonly def +%/UniqueID 5029006 def +currentdict end +currentfile eexec +AE40F8585C2492B57FC8C19373E315912C02C4E404DE7D857CFC574863562CE335405BDCD8F11F +96FF6E8F1C7B7081B95AEE4E19EF19E210EB377985E3A9C4049662C57E12D3250AA62F97535698 +C97032B09BB86FAED093CD2338831E8859F00CB0C108EB8E6EF582C1A64E00289B62C4DD3C7ABE +9D68E37629997DAA1BD0F494A609A153E01C0FC558EC2510717C5F3C0D1704E13894839A500B55 +234B67E33C3EE5A6E7E905C23EECF0D7320E431F93A893DD533D15A7D941B043EA7698B0BAAC30 +D437917A0AB35CB6E43354D38151D2BCAB7D2B5C7EB260C888CD713A2960FB2E510299FADCF020 +C4A535A0791F9B9DA4A3D25C989EB20DD198AAF09029DE3109374D40071EB6255A9B872322B00C +EE340A09F572634C77960BD50BFCC684BA77A4D15CEB51519C9728E8A3D90555B3EAF8C342A020 +6282A97EDAA25BB74F1AE6F862477A7AEAF1A2743843460B3EA6653A0E7348D33FEEDBDED3D45D +85CF2AA51168B0647C1DE8B3C9A78C2EA43726659F3E8EDBC6A899F644DC2932A855CF3F64B115 +B46D556E5D9985D389F7F250B017F690E2D057D6C651FD591D0186F44E4E72137572BB6C02B816 +DD19473CAF196D22DD8C2CDC3EAB84CAA908B1895059B7CF29D716DE195A6561EDE1D69FBB65D7 +CC82A9A4661DF15F693EE6E383D7B8204B693A7B0660686A66F634FB881D0DCB0309DCC421EFC2 +F0AEACC7EBDC0D36B4B23BE86EC1BF92CA08E7F7FE75A9573149F4DF5B0FF2E3F1B7152EE18AA4 +4C79B6B5B8ADF21B9D463241D00B8D0B1E4C53E374EAECD2370C762B7B6BEFF36ADA6C616B9395 +16561AB36577ED5709D2AB556D6828CFE3312375F8352709005A1AB5889D6EE142AFA34C135FF6 +A16327F64BA637F66BBEA267A0CF74E93C5FA0BC0025041987825AFB1AE5BBA228C40BC35EAE0B +620B9E90510DBD9762195207113830727F293787D784CC8B3096AAE08DAA086D3F2D02742EACB3 +7D210FD447B489559EF0641DAD182D275B4CFA7311FA695AFBC9B689CBE20DEC441EBD2D6CA829 +F3C9D7A5F0BD06082A0348E70A97A463340BFE7B8A183D6E01735C49361731501A6BE18C334DED +5FDD2E20E0DC11010983CA608F9A6AF1E2C5887707CD4E1EB02F38BDE030DD8E0DB7D9B39470D9 +993CB97420EED3C2238E2D9C5558794D1EA89D7DD24C8E426BA238743695FA0908AFB11012C071 +2ECFD83A269452B1DBE37E142A6A45E05E4D3FBFEDA1B8D3B3A8D165F24B8ECC37EAF5F56DAAF2 +2FB1E178D15C742CB146B41265017FD85A6EB653C0F69DE9EE0D5C488D1E9FCD5516F6B8721DCB +DF10E9A94F678124D6668A291B25A3E898923040749ED3458B9DDD204B196470F18DB90B3B0B0B +62F4979942FAA9F1FC00D98E345560CEA1D8C89CF7BC141ED12696AB78BC44B2483E3B5FDD8F8A +257B81175F5ECADB194647FD147826560D21CC2C1E619079C5E03D47E85014CE98E7AA57F32B97 +0F7211D7FA44C26FC12A0BD6F12604B8F3EEBD1DCB0E8959857A5EB5FBAEF277ECD1AC6B564658 +A547C9306B51C96E76D46D4878C5B0CA4ED3EA9800F9797A4B5D18D91244C74DAC07C659F3656D +2C2D9B3CC8B2F6FAFA22E74782D61492462936DCABA1363C51EBF7EEE92BA72A7A8E27C733D488 +C9363C086AAA51C07577851640AA5232FD80E70934CEF2CE74F5158DA22C7411989672133BEE50 +558A852537938BED9A34115416DB0E62A0CF53C5857C7280605EDB2DFAFE3B15A82F64A2C541BF +83903E3381468B8EB372547B548AE62E16131D0E4ACBF1575E3F609835D9DF46FED02D58C0C3E1 +804DA0DFB55F6335B910691A3F5E3709B83F3B9FA35771DA4266BD8ABA9FE7F42F5A877D6A4457 +BFC547DB8988CA6E77E04FF7845E90E7B72CCADE8A5A14E594E27BBB993E4F73FF91CFE0306C23 +A8E6B352A0DFFCBFF83E4D9E6F7C0F05EC7EEE1DA737E4E1B5B70243083FF2EAE5F5F88AE7F040 +E7D8CF58D7AD5A2B25B626B4B5525377CA40EA542236128AA40E592421D0D871A37C34FB45DBD6 +A45451B15298530EA0E1DC851C212BA010685A92B1F805547CC57D62DD2D7CD4156C420D073AEB +CF0CDBFECAA3AFFCA3F1B1B4F817DE41535B77504E891DF0CB42AEE39CA3E37E1B5F787D467CB7 +306304950015AA42A53A340AD1D7CD32F2C0D2A7EA8A7297BD0FAB1B2FD027D0FCEF35DC8A32BC +DEDCA3F3702008ABC82389A0F12F70859E5F4126A88CA4FAC548C2515A46A3FCFC3E958575CCF2 +30858E0465CF6D43D41973057077BF986E4DCB3078CC14096CE6279C919082DC237A9610589B29 +E9DC232CA680CC17DB5C545BE9418CBF16AE837E02681BFC873CF630D9044524A9F4373DF78A7E +EC5881CECB664A92123639D62758235DF94C854A740A4D38859C9386E1431C5152331D71AE0812 +CB23884FAEFD580C53552DB1D51BE03559E7129A8642AA14132AED38CC4357259257698DD96624 +76589CD1AF7D72A53A8BA78A6E2737AADE9D3D880140C3907D1C20F6819A0F6465686B6D30A4F5 +04E0488F5C8CE701D2096B45BF447743BB1D981E52C65BF78CB8F4D4BB5E1E4B0E3F48CFB19D29 +9A4210F36A2FD8557AE2AA0477683FDAC64590A3E6ADEB3E3C24DEE4ED90D8A3EFBC3ADB61346B +6E167CD20F60FD028CF251CBEAF221F423505126973808297125312ADE2F0337C0079BA876BE4F +94D9F38EE5165BA3BF025C012EF13CC89451C63D943AA2D0C40083036AAE18197E87AEAA4E6A4C +678BD07DC68D87C2B18A5BF0B371789D216183C02DCAE89A8BF26C15B6A3ACB23F406D77AD9869 +B02E9DA376F0F2299767CAB7DCD0D8330D96A43A1D70EEBD80362872616E3176C3B6CA44B5A8BC +9C0171B08FDCC575ED942B90C55470C69C3DDB7FC6CDBDCE4911418054C7C723F1CAC9646CACCD +23F594B344129B30F7569104989A986099901CB110CC535E57D6AA8CA80FE75C4A208A7B5E39F4 +019D8D8A515C0AAF8AEC711A55C6C0DAA0F17C34C3066683AD4AA6A7D3EC57F20D32E15EDCA57D +61FCC7C8F8AD61260B574593CDDC128AD465C59A785983857898D437017360192FF44E19998358 +6453672475B760A3F8F6003D3EFA6D22505EE7A12ACBDBEA47B63E5E3540968AEE5B6E7FA8774F +B5410F44F9090E880D2B6E7E7E6A7D1D4D717B144D8A7E4DB66CDD5998BE26621B9F4D7C719223 +B7A5AF8EB116AA03C6AF30FE61E32A62B4969B4429D0D101889F1BDE8EEF0662FC4D64C06665DB +D474E811F87D31BF576271A7A3E52F7990BD79E96C3B4A936E2B1FBFFD2D31509CF7F5BC739F4B +7C0216B5AE0FD8AD25FCE86B33A4D22B2D616C96AE155DBDCD095A77AF84EDC4B7979B078C563F +8588CD016B3C08695D31C8EAF1D497C01A9737F6C1AA4626BA952175B6B898FA389E9493A8DF87 +8D4A1C38C0CAEA89B225567AABA00DAA5B6F3E038C0F3198E8B5CCA6302646EB464F062D4BBC8F +A8446418626319018C9C8CA08B1C42D0714AE74E49CB33A09CCFCF7A208D1B7212C255AE7701E4 +E01D7E5EDACC772C8DE238B4DCE0C3D6A1C7D55FA9819A3570718A6732AD4746A71DACEF94E459 +0269025736DB98D2F053305C27D30D50DBACD697EA875932778F2A544C9460A942DE2DDA61AAB2 +109FF6363A5EE7E6E336394B882557F7E13F3D740ABFB291290AA5585922FDC27873A8B29525DB +ECFE5A994BCC926A5A4B34C49210279F8763281A5D91816D974BC5F22847D68DCB911D265F7B02 +FBAADB2E96FB0E46DBA70031B7D7A4BB32711C127FEB546F52C1FA36C7993D40EE93C0D4915B12 +FEB19EA6972A3651FDD1DB039B1507600477877D43AF8F23B4D41284F50621DE3902A3BFE3BDAE +B057C127605869A6FF573334D00AC079DECA898EC5E7C28CB76B23A617DCA022313B449518FA4E +3556B2335E4A45A8C61121293C3BAA23BE8ACFC53658B3617458168B3F5FDC321715AF886021E4 +AF9187E2FF6CCC09AF7FDD019556DF58061AC74581BADCA856650460E5B45C9DCCE4B4CCD18DE6 +5AE71D2B3D4F472FD56B46DE9126E08DA99B91A758BD9A94E28A8D951262F220111C3301972A7F +49CA8615AA7E7BA61171300F8E66A9BA949FAC666EAA23720CA825DE4D0F6A9ABFFF233187791C +E57E3EFC5FDE95D277D13CA6112D5934D6E27C07B614971D3AD7FD74CF08B4CAC94F1DE512019B +CF2400998F207B27277C42562C7EAADE4D090D8261C818DDDC65F65CC793E5A479F1E03E3942DE +EEDBEA85B103FE2BC309C6B16D87804C85900E39F51E96276D9BC9F62825D42D1EAEE49694D61F +AD59AD71A3EA6E53CB0C06E7916F0FA7A3BC0DA39E224ADF4F23EF2A15A4E0A56D9E38D4D7454E +CDF3E8D010A6950975E1967E54F4C63018731DDCCF5F6DA12B4D2AD4A228473E49F6EC799D1967 +B7F333ABB650B2B573F24B755BB71607D20FE142C5653358714EDEEB94D1862B435C877C80C1DF +7B02B148E8800CA3A1957207854011A7EA1AE2B831F2ACE4D56F9A2CECCAA4BDA65C6CF8CA936A +05FB76383900D5CF4CF85DA2F2D4E0E10C43B2FE280CC15C75349B170E87909E7113C3AE32E62B +584D7D350D1097EB7161C2DDA01D1CE66B622D041228C3A93F6FD48048ED070EAA88B5AE5751B1 +9034DB79FBD58D16639930CDC92B93F439EF6E900FCEDE677D1CA321B93FEC8C22B6563A069710 +54DBF7D60967EEF580203D0D4294A16C912B06252B97ADBBEA61CC04F9305A249E88B95ECD4AF7 +1F6331BB6DDBB4608CA1548E270CB79FD972293B9EF8DB393898198E0ECAE14C92293506C39170 +5CB3B0526B95E3BE6B8D3323D30D1A8933CC0C558C70D22736BEDDEFD0E5DE972D2BF42EE9E340 +0F64CA97D4AF620384797F9E17BB831776A38A03E6C719917AAD65B3FE3850EAE611B9ABF47678 +D750C0E55CDFCF90E7902A8AD5F0CFBA8125F9C35A49BF4332CC5BB1AF7E6601046E9DB0AFB3B0 +F047A17F1E3346F5B3C4E4817A6E75753A3A66FF2F6226B57788DC7C5FE3352A6DE50E7E44723E +B4268EB179EB916BCB57F3C7330323B554C5DF750B5B84563DB7248137E312AF17D2BFCFED3E7F +09323553E04E4049B05E4F8C546D198FCF51CAF6D3ED424FC973C3391D9B190E1ECAFF617B6E26 +B1F2638FB32391EC52B27D0C353B9E7085B810276FA4728E699E50BB54274130A2B290F8B2E49F +5DCDF560B56DE2A43B41ECB94FD8F4238771D8B55712DD101FAB9A58E4319E58200776583C35D6 +0EF2D7181170411BD45A5C2967D7F19487E8C2B17A5483E90316EE7F6ADE0C11AB7355BC66E021 +2BCD832EE4AD4DDDC4AD33DB5358CA406876B077CD8D4CB77D1DDFEED860DA562615F51A54F596 +C474DF3C2D253EEB1E9B85352211F2F627927893E9F59E70CD59B2163E35D0C72AEB17EE83CF1E +F47FD6ACCAC3667E5E297DEE0E7F88644054E99E90DAFF89448641620EB4D165D629A9B59A0561 +A144A1CDA31FA7C64E9003B9F66C880793D1A968FDA68159508B61D90C52DA56A5EFBB937D03EC +C3F56B7C4E58CC65ABA31D9EFA6F49D3739ED898D2B2FD941180BAB89F6BEBFA09F2AAA3F543B8 +447C15E372EC5683C81B987D492F6FEE10317F2C5FD884F813C4E281B5A7D120C24D1C7844CDAA +5CFA497E5760A150E0D22A548AAB3DDFD13429A2CE12526162A66C45B38824E56D4CD47B6FBBD3 +3D66795ACC5DCCD1AB9BA0C3D6E2AC6A8E0D14DBB9F693CAC9F3FF65BCB714253A607DC2B25B15 +1A7B07690DEB14C2829AE2D043812BDB6881EDBF658C21FBB5DAC05326BD8683B2506ACF3B637E +055E94B6141C24EA1BD6CD7437CB2713700EE829254EF783A926E2768B06545FE263663F79CA3F +D4E9C750BA92F6CB2CC44B03D679750FD68524246F4C63CAA44F8C0976EC39F782131014D136FB +96E441F9DF8DA9BE84D7A59497AF90656B9F308BE1B909E51AFE8396CD977B2BD9D6B1D248C594 +4B3F0DF9042614F333B91C3511DCBFBD6DEB5D5F323B7F021DB863F63DE2DC9A1774CB6598DF80 +011AEBDEAC09EFA9E1644FA39165747C88C8EA6B4AF1897B34E805BE0F0F89FE2B9F71F4236058 +E5FEA48B32CECA6C5C4DABD7A2EDE43E477CB3760628DCD2B64E03ECBD3D28D9A13445ACC39C3E +540D0185230D1E89750D1C3DFB6DE4DC9A258156FB559870A29F057121419228AC452A0907E683 +74F58C6DAB6DFD46FD4B7B7417A3539F5F2DD26F8FDD1723B6C4030D86C352190716EB980791CF +2426A868B756255AC3CE719D37C81D8BEECC143B623880C1AC8530698369322B6309C672FAF6F6 +0C8BB5E787447A61E79877B8405C652A5A71F85B222F724EB406A8E5451B8AB3448121430B4ED3 +34299EBF820709C1519E35803396B3DC845302F716DECFF7B34E53E60EEB0C30AFD9862749DA7C +335475A5D432D4161BEEA5D72A3772B499539CB672E9ECB32CE919DB201E20EFF2555B71B569BF +CF8B902564763EE7D559D5AA9870837679E4718BE751759A9BACCC51A9061196BE327510BA4865 +ECD5B2A3593234E0E6D198DB19D2EA74A437BA555CD8FE70BA380B852858881E83A44FDC32FCEC +52BE9A0EE93ED500F8BD0C660D0894034FAA09B92BA8517CD3D294D16EA7F0D038BFF2B744FFE1 +2817B83C7F0DE337F0527433A982B6B43569C18D8D882BC722603FD1A9BABDB464230FA2B0C9E9 +13A47D30EDF69AEB8D6737658718321A34A8D5CD33FDABDBE65A9E9DEDCA6F80ECF455DFC6A80E +28687F23D4ECD8D8FF396567EFA09929F748CE124D08360CE3637BCDD08D1A9D54EFA80EE56CA6 +43360FEFA5E987845150CCDBC23E5EFE2E3E2F571C1CD5F838EB1884BC39387CF19A0B4CAB69F6 +829987C0FB8634BF8F8424E649F9CFCD769E96A040B1CC46EBBA3B17886302C2C98D02ACF9ECC2 +0D6495C1A80E2018B1267BDE4D82C9AEC7E284BB825E6E500F85E5554E9E55E7657947879BD719 +81582946A1D6F0D70B878B5E280E49C23D3C5F176E43E1878F82210FD465F347B37041FA8FC749 +20A45B3D73E71EF44F50CECFA9590BA94CE6D34CCD4FC878DCBCAF0CF713F4AF5F54FBFF508C42 +DC97117CC92442E180E4B2307A2FF364E89BC538501A2E3526C77EC08E8B211DDF42042633C978 +8EDD3A24389AA1690ED0715F531173163A95E36E87554924FCE4879941C50214A485A26C04960D +FBD7A03B9AFCE70866723375086C6DDCB249AE3EEA17CB1BCEA611FF44364DAE6371AC79652C50 +0EDC774B75B790B204C9479F3CE3030F6288D1E2C2F9F083F990F217DD42AEB8A95933E7A318D7 +CF6656D9C57DEBDEAFF6D532CF206F4BFBA0EC53913CE7D9E2BC72F5BECDC0CCB313131688D769 +12FE09419536C188F34C840608A17BA22DC57A7DE9B758E05C3800A8BCA77F95C0842094377A16 +B80DACDAD77A3B65651CDF7F7C4550F1214DC47D6E88C006AC5D5066C3AEB2012F2E0C39A055FB +BF174FAAC6A9A28D2434E03874446E15DCE7ACE5D7BE7050390186125F0435D4024DF4B5C25B16 +719B3240ECE2B00C53EF9091E1043313BC83FB1128F19DD592BDC748E1172069E61AE8A05B6FA2 +73CD67F68AA8F783E90D042C630811A8A71C0E22A6142B17D6C2F443F27ACF59C6F4474014DCC7 +FE9257ECA7B4C46470DAC7540C34A03B7FC1AA96D6B48179D28A0BFDDC35BBAF155BBB5DD8D40C +2F3CFA7719E0BC7832EED6A37702223D1466A8B4FAB31D2D91AFEA30194B9DC756EA0931A28D92 +8B68C0E09F7940A1BFB8817CEBBB0A5A4E65CD9170014C9577F321AD444420BC7522D91672DD1E +E7517AB30B7DFF7436C75999DBAB0F7B3A7D452173F9FC066EA136998AB8D3A46AF5CB99ADE3EF +F0213AD487A7C50A07E25B5363F2C3E47B79961BC58B4FBC206F8C17D4897A26101714848ECF2C +D7219D372F38188AE6657CA5A9D5140B832533226677A992CBD205BD8A7EEB8618B6D2DCE91AF1 +8401EBF19DB900BCAB2C7146A0832A3AED3755B8906C9A0AC65CE2FE44E3DF2F68A75FD285A1DE +60FC073205DE3B4BA9ACB0E06C29D5818F55A9DD737F2069BAABC52FD9B3F386127B9DC32B24FE +9F39921778FFFC702300C1FC92E3809379FAD3189B34D98EC371F9FAD6763C81B424B0E8339934 +9282C1204BA70499E24CE718B2010FC17458D8208492EE56F9DE924FD848705969B622BB0F2481 +6BD0FF48BF235DD71BD6F61C38B6294AEE8676AFCD9B8564E36EA6A95C4876872B94C615DC0994 +D522CEEC5B7CA9ECFE9DA4A70613537A1FFDDCB26A909A0C8512796F70FCE357472476F30C9D7C +AA718917065C69D2EC1EA9620982EB4B869035E7183A71A910212F18BBCEB054B9BC7419E45ECF +2E0C600F865B44538AEA23950B5E4010BD45921CA12C0C1968C65EB900ECE26C5AF8D29D31346E +A2CA571A9E40938D85D4483DD894907ACD68738986D864190CE11362E7C50346473639BF4BEF9B +81160FDEEA602FCE03FA4ED3FC5CEEBD50F3576CDCD4F21408A2D80E265D5D607CF00CF15388F2 +C6EC9A1B47C77DCAE2E4F2F978508923FB4AF9CE6C8BD1941F66866465D9826879918CD49BBB89 +9A0B12CDA6A069B9944666479515F2B7E39F94202D4B369FAA1887EF5BF5304E8C2B2BF291D6B1 +4E656EEBD98A422438DC43124E73DED0C86F71F98AC1DEC79E65C71AE390A9D7BA0A2A5AE8EDD5 +5D22DF7FEC889A8953ABC0B0BB9898FAC1CD7B25263F7AB9DE276B20203ED2F2F43E7D52E442EA +02EA9BD77721C48D819AF6A522481180B75C940780AEF72D451D556A9B6781C45369984390B393 +A873A2E0ABAA5D91DF10A1A29E7AF13F74FC678716FAAD7523B721B2B9C0C46C358887D0A7F655 +40E317B0F9B6359CB0C7FD951F28FD77D33160CF072D79559B31687A19AE294FE3CE1E9D30B083 +F955672E43D601A8FED9C7FB8C735C681B612B327D3806794D061C3C95AF819B08515A2D60E536 +D3DAB7BF64E37758CC9209777C62677547E065E20B74175EA87DD3836D107D867805AA0D7A913C +E8201BF1BB8AA51657E08999788761B3C5747F40511D58798397D64512FFC2BE814C776B9EBB54 +9E4F5A3CBE75D920B2BE77CC141D1D26ACDD762BAD54CA7C37EA9BB718059948E6DD2C404BA4F5 +08AB7634D7F7CD84A3C6A1881026AF15EE46DCB249436A9EC02E96D88AB19180FC2D01742ED7F0 +2D7684B698AD17273CFA4164688C5B411D9E43DCA5806223040AF23ED0534A1E9D922380EEA882 +A5B861CADBE7637EFD6064E56107BD6237EBEEB8DA25B11BDF0A02569374B70F09818E9A8A0F6E +F9267967EB87CFB403D57215869D265E58194178AD151C0F774C726A2619B08515D3FF9D9ECDF1 +4A7A40F43A154D499086B62D82BA643A2742C2F9420D73D7137C20C5C9F9CBAB60278E6909F8C9 +AD368E6CA36624FDDE2E1F9DC3A76681FDC202A09CCD9FA7904BD49F29C645AE4B4BDE9433D44A +D304FA982F5BD914F42A77EE7C4338435F8312EBDE34BF5F8D805ED362C6A99440A641DDB01CB0 +CAB5E911A0E5A2935F340AE81B91592BED1B4272CC03247B1F27AB2E9B23CF77D3DD021B907460 +F8A877545C42AC468B68586F0066342AC40F497397DE037EC5F5C517146A72CFEFEC3675C88146 +52AA1A648DD3194BE106291289E0A0170FE7C1F0616A12E78E8FE112B7B2F60A623F49836F3FC8 +CFE47E820E9911C19AB297882D2311F41D76452CC9DD6F6F95B0520BA3EB394C15189F9DE9573B +85C09AF740EA834A5EEE27A0400F1E3A6B5F86D0C69F8FA26C7BDE10DABAAB8F7B3EB7071A72D0 +A21D82F17485DA6AD12BE8668D39CE0B6A4BC7B59A9D8D6A47A15F62D2B41283E9F23C35D2865E +10BFB2603A607E5246775F67A41E2EEC5683A709D02C92F4D021E07649C4C60A5F0E98D44CD83E +A34297942AEC4D397C4672E5ED5E1FB1CC51F3B6CC7E8FD0128D7935B05872A6B8D76F5154BB3F +17A4EB5BA0437DF785A63009C1D8084FAA7EB5145E5BDD31E9984DCC2ED1711A2FCA3725445AE8 +C78BB1C692F2FCAD9556C68E7C9196541B9A4F2465D16B4205E345D096E8E5B172CDB1E784B228 +0D22A28813998F653A4D47B5346C636D7C22CEBF2DBF433A8790FAE8989A18C674BDB566FFAA7A +CCDF631AE4B1B2C876E45B911CF9F4B9D7BFCDD2684553B1CC0F3BEC3624E44F023BA223E83EF1 +40D0E6D506E11ADB79C0DCDEED41894073B75A931D0DF6AA89078910D35E6F65B956AD74F939A4 +B30DA755CC42918F3E6B748F066E891F0A158DDB4FFDEAACC6E71A9AE04DDBAF899F796A80F6DC +02703C64BC7E021BC292A9684305D59CEB84F579B0BDB215E4FE8399DD885C8337A6ED127AB50F +E2B562EAFD20C841E7E5DD1DF6993F4E60B59C6FB2B8660ED942D360C5DC9D48A9ED8D9A08BB4B +8F7D51AA81D0F6B5C63E3633EB4A8DD8EE07E99ED5A455B6D5021D91C154AA57807357D477BF2D +626D54E365DED3AA67230CD8FE70C51E3EBBEF88FC014AD287EE77170EA9E47828271235BAA930 +087CD8749F3528C7C60AF3EFA55DA68C6D3B166ECC7B0A88E4077EB2C93BC5894EF84D9BACB493 +203015DA8CD9EF106CFD123E8057AEEA2454C9651D312E4F6CB7CD12BDC1DBB475A1DC725A21DB +FB24F55AC85BA2F07531B23ECC411FB2B0DA6B7379F3BDED7DF2F412A016E9905865ABA4274EE3 +1D932014FFD8836B8CD636568CF0BD2A7B7D4F51D716BCDC50D56936A297C0E7807674BCDA480A +1DD90412EDFEB4F18016E5A5EBEF885D3D33E2D925831343B0CDD184AD9D9779F0F50805894776 +3DBFE9EED1AFE3FF0DE7D8691104B4155821FCEFF8D0BA9F35DE1C39B063394E2F76B0245555AD +78965B301411E1D93B5D7C2284848B3CA29776059D9AA4CD2AEE88CC0007376C6EDEADA2DD1CA3 +F5293EE8E2C9B0F1A8F5EE9D009C63589CD0A7003B7911C254B780C8545203165601845624AA95 +2519CB7F1A1CC004B84458A19C7EE68FB249930A268BA05F34C08FA72BA4E4E6919EE667DC762D +F206E8BD03D6A1996887DE81640A2BCEA4052FCAECEA52900A9296A4A399F7ED0C3D7D3852A897 +9F339D42D32911E6E119BCA337B7F09F2BC74BDE2B71113C439397481A8A5AB3EEE1EF9A2DD798 +E9CA52E836034C536C07CD377259B9B72FE7FE68A1FCB8D4707B223AA693CCEED0AB7D97FDF90D +84DEE522697C071AE0EF306ACBC192AB9A9FA397E6CCB97F42FBA37818A844FA045AD2BCE7AD5F +0731590C7A26AB951EF94059198AEEDBDD869096FEDF9EA55D22C23EB6E4ABDD469B3155CB9451 +04C51EA9717EC395B7BB64E2E4AF5D31AB85876028BC78E0CD3BDBDE214CE56F5687B3009DAB8B +0AC6D75B13752782F56C590AC4FAAEB6DA1462988BD69173190F7A486077BB49CBF5FFF612B0C9 +57474F5401B8B1E8F240EC3F20808DCA2F9F2D810A07498297DA66D9AF329991DAC432BAB46C01 +F1B17BF8DC6FFF54F40397026ED09977520A41BEB1411F9334E8CAA93E5CBEE598A88A01B25601 +8E529F173153A67AACDE4A8296BFCC5B88E6E20B29D083889C18B4D38418B12F8F3514FC95130C +58A0891AAF8A9C4457603EC6FFD26F0E1B957E783D4F309F4B654980C22D29CB8646C104621282 +BB301829676E5F3D07F090E172F9A74E9E36103D3E7FD4D7AF0F6AFABCB9A21250BD6E07A1AB03 +66719B2AE6B8B98B6782AC722DCCD0DDE69FE9E39293130A206E9CFD64184A589C4893C03375B7 +D7094CAA426EB2DA5FF79C2DE45F5893EE2AEA388A2AADBAE87FF70B629F304AB0D81D41F44352 +1FC0BCB558119C9FECF5C9EA1A876A0A06610CCD279BCCF198AA606A2F4554880BB1BE38A91B55 +48D503EE76A3ADA011EF1B31F25B3A6FFC1A6C6544431CD1E1DCC06789C88584FD1878D3F5F565 +3B6FBB4B5B4795779F976252E9F3F09A482F9C8DF00B5EDAD6F0BDCB811E622A4FAC70FC0D6F6E +37625FC077D143C6AF7E76280B45F241C2FB62951447F84012AD8401C0BB7B794709B48BA3FEA5 +D85AB7D9875320A13BE8934E8FBC8B353DCE93A16979FE3A97D0E9A8B5D1F7DF52C6C18F60AC87 +C8B17DC80235023652ECA4275A901D9468AA7766128FA157DD051060A62CA5EE8235E79CD8D5D2 +B651066E2D8481A717EC08FF985BCC2B4B5D4BAD6408B0557285903F26BB6698710CEF6102230D +042EEFD6069623A5003CCBB8B71F6FCA85A88347DD13459AEB84EB4802ED2ED98D02494CC9CEE7 +FF5FF87319C591C72CBC3F43DC7DEE2BCD0E96DF6EE42949CAC9A7B7CFEAB55D3473DFC3724105 +81D8C7CE893A1C374D933FC9CFDF462481D98FCA27085AFDCE8CF359E127DCC1EED7B558FC6980 +813EFE260620D7A7BAD331651C09B2C7F5EA13A7D095368B1453C7E14E6F6F4C99CEA3F3F51256 +77A448D040F2D496616C86D2F6774F2307163FF9C0AB8AC88B20A6023E60A2C8B63E1BCB6F59A4 +2D24C107DEF5875E7EA1062646DAC43CCE029F56E91A49B0BC6873D1796DDF7A0117ECC41DD4DC +792B5B97077E2AB5492876A547074A73D404CBA4B5C0FA1938349B7C156FEA5952AF7DAB0002CF +84A92D63E38C0ECAF31FAA2B2A033A3D382C3A4416F554E4E00100D122B2D75AF0BE42C42C7B1B +4E515B81F4EE8D3F9C39796A63506223415C2A55FFA26EB9E28ED5EBCDC5D2E83A3B27DFC8B6BA +8DE74DAEC630AE7BB6DDB12A42C1F666A05EB18665EFC68FCE7DE3820485FE9159E35EB35E2932 +62FCF5712BFFEDBC974E5990BAD0D64D820564F54324323B31ACF948B3A27F4AC397A958864268 +5F86D44EA685BE3CBF1DC01C293397B8E3E457F619D8B6A85E75D838219CCBABADF23C0E4434A7 +787DC52DB315BAE832819F2973F11C045A4662F51256BE3967C3231CF42AC7DD045786B27E377A +A42DAA473A697EFE962CEBF368F10E0F3AC73EBDDBA259ED770D8E43F8B39175BCFACFD1E31DB3 +88950902A66926774EFA8EDF9649BD8AAC64702EA9ACF5717B5C91B4C150EA2A98CD128235B6D2 +645FED4EB709C91D4F71F2E3B6B971A378A7B3499773293D47B59AE87AA1F3220CCC3022066508 +5965385DE8031B42CBB2A2A0FCB9A038AE2BB898991A476373CE559ADF3263F47D6C103112A5CC +E3EDA9EEE4C24079F0EC6F88E9AD54D1629606C97F6EF26ED0225718AFAEAF1A21C712315C03C6 +9B019D238C17AB4FDD0A52E840E28C6D83D6DBC7F04051CD5F8A61654B3037FDD8388C222A55EA +4A423F99635EBE452DB660388127204288A88BA9E08B6C31F92960CB9B7557CD754A3400D48F1F +33EB9C6E820BA19A66FAD15A086EEDCEC0386DDE30E8FD98B3A63EAD8AA52656EAEBF9D3995C08 +083CB2901C8C04E8CDDFA28F89FA371822652E71531782D1388AE97BC059278DCB3DF5D175DB21 +FC34D07B6D3DD38F44E6BA13133D6E2D54033C4A77F0A4B282069477761F5DE689F4EA7F734BB4 +5C0C3AD0198A5C9F9AB087A38A0F47BB85CFCA1DA6E818ACB5B1D9B322EA1A67681427A2E92A5A +72E27208D406D2F24CD583EB914DB7615EA17B0F471DE94AB404502DA4CC394ECE88024B6AE998 +CC7FF2D1383E183DD4562ED30BCC8BB6ECE442449BBD57E546AE5E6993E2993A9E0E49784366D2 +6A0D3A301F81AD2413F564C4F36F7F8CB3F01E1BC0609F9B6CA4051E30485865768C9CDFFCBC7E +8E5A91904F43024638C4D70994F32D75845F9F865E9037491E7AA0877ACEDA00AED81E74122F94 +BB270ADAB594F5055D2B856F9615F1EDF02AE54BEFF75D33F53589F82AA67139C454ECD8077C8F +53509A3151A7EF94E80BF03F881A0553D321B41CEF83350CE9B40F8CD187D37F9B0C0D7537D498 +BBF7ECE55A8F58FBECCCD0A67EB9D86889EAC4E61CD90C40992344C0D79FD1C8ED6D7272B48406 +81B99C5A06266FD81B0904D89F1CE6CD26D9844358263E5385CAD345FFD28000BD449B1391BEAF +FEB2E5EE56A63637690F48105EE0102E398868DE9D2CB1246234605FB2A5165085370E4EF4481A +DD0BC5214BAB5055AEF44E54A56E884F96CD9DEB53F44D2BB3D29839F3780655909B8F5968B491 +83E5D0978A1D3EF4A15D97EA1D3F1B16FFCEAE52E18F34BA676F2D478A5CE9EF0EBFFA5E0E8DBA +AF563359E5B0E1FA0A861DAF2F664F78B338999DE20CBA9DD87A91C7FD06E12F3FDDA8EA27F945 +DEA14960910D04FDE66293A8BFDECBCA8F5D1267CCD28B5161C89CEAFCE617CE08496BB3DE963D +34AF77B9BF7533C46F910A673D6DBC905C11D166B26809AF418B3A8CC243E92F7680B1B02A56F3 +355FB37EBD6F1CF721BB8B55199F04707C9947CF0747A124D6136C18091F700C1DAD3F30CADD8C +AB54C79ACFDFD261A443C3221174F869DC157F61E198A69E6267C9B48E78E907CE5FE7FD4B53EB +9189094E0EC33829F7C27C6AE1CC732C3D191D522CDFAAD023A181FD7B5694F0A65FCC20F51570 +95EA8DB3323E2DD26FC06CDCE01EB98A5ABCF0DF84F3A14DD67EDC748193627EB51C8F6692D45D +C830F3EF7C823BE662184B79F6B523D75ABB3E83F0BD78369669A26728BE6B6709A835C3299A54 +25D05DDCA7CB954F4B325CB2E5E6C28C50C59EB0163915521956EED1A2B2DB82B22F7A1B9E9CC9 +F40044CED31C72E9E85B0244EAEE92EE90CBB3A8620A53F805E9A20A6A0FBD52DE2E75ADDBEB97 +3C3A794EF204C634F464E0725FD33E8146D31A976D305EEFEEF70DACCA2BE227A1689BF53D61AB +CA013B235A2E921FAE0BE489107B223E99209B7CAC5355A33F2F8C04996D075E18007DAA3C1319 +EA66E669C4198838FAAC9903B074510749D671308C9BCE1D173D6C296AF100581E501106717F9C +59E3A29537A16D376D9BA8DA51C3FCAB70B0D0F61445AC05758F1B579DCF0B5CAC6738FC4C47E3 +6F5A3A27AC9F19045BE6B3D5482E2D30962C3141E12AC96D59E6D43448F85D1999A39827C3DF8A +933571A6585DB257603471CE0C77950F8A7D3C25FD60888A26F6CD77281BFC5F4A72394ACCB7C6 +A9894B6015226109D1B043004363DCB6CBE56449917861747F1828E6DB19F835E328524A69464B +60DE76F08CA1FEBA7DD75D78778CF64F0050E225DB6A44C785592459BF38CC075ED97583AF0E17 +EC67B74D752E580533F98000A39CAA0A3DEEA46B89D864E22115A084F97B5B0D3A050AB3ADD338 +080096BE5A156EA956947EA2B1BE6C357BB1901DE7FCDF02D78B647E1FEC144FF3C8A7711A894A +1E7D849A60E0860EBB256E15C5C995951308CF30F1A87E8D3E678421B7537199E27270B4755DB5 +536CACC90C4772CE0CAAE1780BC54ABE0C3BF2627B64451DEEB875362F3B47E95577A80CEA03B3 +C6284BD3623306A66907C6EE6F4E16617783DDFE3AB55448F80A97E8D5CE6B73493B8426DD163B +96978D8052FFCFF0B0CD91F1D366FFF67514F92F6B1FEE64C3C023EF905C2830BA7BB7CDDD8532 +F18CD1BC5EEDD4E57FCF043625483C58AFFFE5EE5159F1707BA49760CF3D6900B2A6C9B64EED82 +ADA8F0B96D7BD624A1AD4B3DF0118E86B98B46D72A0744FC895ED2248618E6A349C51A44A89C6C +BEC27E525FEA388BF4A52D963AD520CF9A768B8E1BC6345EB434013BD9FCF6FC5A309CF7953DF4 +E6A92DF3FBEF92FB1A4A7FC4AACA0B95F070E908AAAF4738227375A3FEA047E3B4823BA8FA26A1 +F497936F94ACBF1920E2C18099F154F2D74E50A5FA623B2048920B7E0AF9446EED9C8D4B737AAD +85515672B6AF1543E5AF733C178FF90B89B6EB1E92162EAA240B158A78652680F3509F9C1BB21D +EE46DD3B39A2D17029BC29E260AB570B29B02624F152F6D56DD4F2FE3DBB352A3CFC4AC0534F45 +E31ABEB8C099BC8B7B829F6C7D2DA0C2B9D58E22A8A8BF73D9EB1CA278086FC1FAF212EFA755D2 +96C938CB7EE5AA4E007EADC88E7205FA0874D44B769CA1E0D757968A39FCF4F553C14DCD9B34FC +5246D3595625943439F4F876FB6A52EBFA06056850F5C92D434FE017FB3D4B0E9022B2CD28C3EB +95F084EE99911CE955B5B93196BCBB65C2699A0C942A998F785A59B43C8F8DD87BBA6107854FDD +70B3763161AC79C7CFF4FA36EACDDABEA6F5CE84567AF95E389F9C2CE9E972B540391F167369AB +CECA3C3D9967D41DDE6F455445D686B3B8223C6E8727BE334A73EFD62477DA3D89DE65F3EBF81C +4DACFC5CB89587AC9267B8670AAEC340FBD51971A3323B17978E110745B84C5E6FCD74E132BFE2 +19BA1D812A645002FE8827DDEE54546099B47E82F3935006F0B44E174B675CAF24A8FA4CE10017 +0F34E1914F3222DD851F0A874650A14866DD1EFEC6A2D97969F4E3DAB9D449AC50B5E4524BB5AB +96932237FA7896A5284F85E592B01D20C761D35BA83B4945F5608F30A77A84D918B6847516F96C +F351874BF52EFFF38ACCE88174634AB0338A377E99BC3136A0600362EDFF0E1D42F8C5F984ADF4 +AEA2463EC1B3DAE2A6CF86CCC2AA846C7EF31653605619C7D0573D27F914DBE344E5C11B697154 +347E09F54C4108A1D71FA878E4B07D35FE056DFBA2D7B99C8F01134CEEAD849AAD3AF0CB60505D +519AFC82A4BF5B342575B774D88173F1BCF2D914026D3413FF187F9C8FCE3709CF0F7E9A793483 +876A4FD3F0A29DD8DB7F470E88DFEC249A91BACCAA65AE26EFBC9CBD550A935741A5501021B9AE +064596C775BE5967FDFD3FC595EC5CEC2F185EDCF11492E76C8EB22CF5C91BB63E9AE2649D8A5B +CC7A47943E40E3B473EB5E792919F03F09688B71ABC0B0E2CF64E1DD286236360F7EC828CECDE7 +64CBEDB243828139AC4C72378B3EAE67D43CDCFB95DFE17DDEB6C2354FB8C52ADC0A666C40E2A0 +4FBCD8C01936F04F1A983B68462205765CC6E782A2F459C040958CD16D8AACA06E1A7BF14BA6FF +D570675A54E431B2D2CE78D008F082693123D18E1C3D27171DE5940F63C3FA5480E80B5727F684 +EBC48DEF479E345D2C9003481AE5A7FE20A1EB0CB422FD2BA07A3208901CA8D782DA95F0A6DE2C +CA3DE689C498A10CB8E5AF0A2203C5C147BC17BA14B4C59A34B9351321EFB281494423D0B784E1 +622E2F3EE7591A23113B3B90D34D824549B3A0B513B8BFBAADA9E1C4879251BCA93E6C40A8731D +19B411F1FA3C3F3BCEB63F5B9B8E868D4F0B966AA867EB2D4C301FE6A1D35159B4B7BAF8227D6F +F7A86BBD70178E4EF798799F4B43E296A889120BE0828EC211A38BF5A5AAC3C00494B0AEE6ADC1 +B8FF56733A3FAF015E6BA38FA59DB63FB3C9BA355E5F2A555903E4A22F2D1F26AA89C21A623DC0 +F0D8AD654C3FBC752FF21C16321F5027B4353F6C12FD340D272C2D4F30ECC9B58DC4A42F71B954 +B2764E077E0CEF1FDEBA5A6A8FE14F3AF0122C0918DAF87B157BE507BBB50DA1F208534607D906 +D45CA3444CE68FCCE04739262BA5B3B0DC0FAEADD86FC94FF14548C98592F91F89948A173B76B0 +8D2F3F845DD251F09AFE656F69D115157309D537E4F663CAFFDA726A5C62DF8EDE1EEC7916F86E +CEF600BA02901BC5A56086478A867024C58A4D8A631736FEA04F09C9DCB4B3EEF89A0C5767B3EB +8B0C2E5D08974638E79EB2CFDB509E0948BC42E1A9A29DDB09BD44BF28186C3C5AD4629D7B1396 +610782E464BC4EC12B2C484F01250BCBBECCEE474F25DA98AC82583467B62D51689EE98AD2FCB1 +AA13D44BC1CEE4CFEF34D37FB8789AF5BFA59D05D15449332B46347A7CD1F0791D48BD563BA6A0 +876C8B00496E3947C0ECF78782945109BD9306030CBF511C2B4FC1E28868EED9E2039002C98F20 +43828EBEC486919082BE71A7CA278361D0EB9DD7E21AE9CA80EFA147DCE160ACCD39924F45A821 +D89721CEAC542ECD09E76ADD11FB1710804C63B1268FBC89CEFD28314D9D3AFC26FAA897B3B7E8 +C882C4125D3DF9A67E2DE27A0245D4FD9075DE5D7FCBC8E48125D8BEC3972FFE5F8ADEFF1258C7 +5506691E5DA81359C24A978EAE086E7E885D8151A515F15A475FDB038946F7D369644279C2186D +ACD69FFD922EEB5397F5C3196548CE35D6E35C4DE6D95BE566665E4E0EE11EA43CFB9D0133B5E9 +D2A6656AE1861C158AAA97C48DD426205842BBDFAA90DA4D5EB11EF29C24898D9FE9B29B2AB913 +2A774418F0190C3D0FA29755168BFB149E0066DFD3BAD7FC405B28A27B2DFB2A356CF6F86ABFC2 +18C7E164F6F0D6D4CBE011E77EE8A045A1D1134E115D730D944CF34248C1020E15955661DFB6A1 +687CB54FAD1AD759B7EB209E6A78B4F3B4F049258E799B6FF7243B26B573D2B26AFCBC36324E2E +9AAF7206D3680EFE913A6E9F4CC8CC7FE5FDBE60D262D378A123D8BA928CDD6651999854F3ACF5 +126C00179347DBDB34954378AE5A08A690A98413115809C95A6142A662DDB89BA25B6026064A6B +A7D85963FB4D10C0BA1BCF3E73CD597D99C4CA47CEF4692A0EA5DC89C2A92DE5630EF15819840F +10FD394BA987AE798BE15A61AC464345E203B06A3ADD25E1607F9C750887F5E7ED7F2A12109914 +542CD396392738C7B7A7DAF58A7823414D648CDA083CAF2133CBC0318CB11464411F85B8FC813B +4D07757D3989E1E5E063F2D8E07E50BCF85811766CD79210C6AAFAF085C74BFA3DA37B45386A6D +C83DDCFE3DDBA6B3F999F91406D35374E60CF88F2920208C1D2A162CCA6B27984D905F3C271524 +1FBA18949B6684E3433019D3C8B45E454C18485E54A74D196AAF9636E85D179E1B5F0544D09BE1 +8855F32091CFE26A425F114C556B995935F821D811E0E5CCF779764DE6EC47256481B25EDCB409 +E7A1FD2D72D6B5DD56EC9D4474CD5A9660972D366649D840986AACAA04765435F4EFA7C513A10B +1B67FBB112BBD10490B0BDCF5E5BD4F80787E43895D4EAFC807CF18103A4EE315EC4B71BBB6022 +FEB88DE20D8C7E0244B95015DDD03CB93417A691CED38B37C27BD1C510EC50E2D82C5ABD32D24C +29C30888A2E889D0EFC93945681CA613478CBBB222810C4E4478915E598628BAD3A8E31402C1F3 +4653671CAFFAA244053AB7174E8576085F90019E0DE486014A115F88DD9DB9B10E91F129DD5A6D +00AA208459CFC5A7A2BD1095DF24BE5DCBCDE96D79E90871084AE04C1DA8DC2459FA0E191FBFFD +EA46B20240E40B6467A2455C72427B119BBB07C5725B823C112E734A09D07970748F0D0D969B75 +1BAF2451D346FC2C56122EDDB88287B1042B9F24C933F541492D0683DE0B0325AAE667521F66A3 +27C863F4AF7F4A937F7BEA60B5299FA5D170F9413A2E6EF5EF70484C0D861EE719126A942E0262 +52279876430581F0AF1841719DA6E4D8C3B932837FBDAA3FE08C18E1C89AF300E3AD7DF34FB439 +9BE9A757C830E18699450B98B49EED738C09084CA5E06DEF86BC58359DD0D203FFB11EFEB043E3 +7B184DA9B71C1AB17A9709FFD273432A34B3D924CB2F29BF5DF84596AD447A049E3A451131D660 +57FA9D4C24BF824D43DADBA7D1B2926C9CA62D8AA8C29FB2D00B0EAB7322873FA5F9E2963EF721 +6BEDB2D97548F6C40E233B25CB3785258D0E7FC096ACBC0FABACC39DE29BC0E770474A541D87AF +69D3B8E9BFF00AF11DAF9DE908EF674079C7975D7443F30FE21E02B73FF15FD44C619EAA8B9BAA +889266458C136A3A92E7979EB53A04EB00 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +%%BeginResource: font lbtr +%!PS-AdobeFont-1.1: LucidaTypewriter 1.001 +%%CreationDate: 1994 Nov 12 10:47:10 +% Lucida is a registered trademark of Bigelow & Holmes Inc. +% NOTE: This is a partial font in Adobe Type 1 format. +% The complete font in fully hinted ATM compatible form is available from Y&Y +% (508) 371-3286 USA, email: tech-help@YandY.com, http://www.YandY.com +11 dict begin +/FontInfo 9 dict dup begin +/version (1.001) readonly def +/Notice ((c) 1993, 1994 Bigelow & Homes Inc. Pat. Des. 289,422. All Rights Reserved.) readonly def +/Notice ((c) 1994 Y&Y Inc. All Rights Reserved.) readonly def +/FullName (Lucida Typewriter) readonly def +/FamilyName (LucidaTypewriter) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch true def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /LucidaTypewriter def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 54 /Aditi put +dup 35 /Ahmed put +dup 37 /Alasdair put +dup 39 /Alessio put +dup 41 /Ali put +dup 43 /Alois put +dup 173 /Ammar put +dup 47 /Andre put +dup 49 /Andrzej put +dup 51 /Angelika put +dup 53 /Anton put +dup 55 /Ari put +dup 33 /Arne put +dup 59 /Art put +dup 61 /Ayman put +dup 63 /Barry put +dup 65 /Bent put +dup 67 /Blair put +dup 69 /Bonnie put +dup 71 /Brian put +dup 73 /Burkhard put +dup 75 /Castor put +dup 77 /Charles put +dup 79 /Chi put +dup 81 /Christian put +dup 83 /Christoph put +dup 85 /Chuck put +dup 87 /Clovis put +dup 96 /Curt put +dup 89 /Cyrus put +dup 187 /Don put +dup 255 /George put +dup 189 /Heinz put +dup 179 /Hong put +dup 178 /Ivan put +dup 56 /Jacqueline put +dup 57 /Jagannatha put +dup 58 /Jan put +dup 60 /Jason put +dup 32 /Jeff put +dup 62 /Jerzy put +dup 34 /Jim put +dup 64 /Jiri put +dup 36 /Joe put +dup 66 /Joel put +dup 38 /Johan put +dup 68 /John put +dup 40 /Johnnie put +dup 70 /Jon put +dup 42 /Jonas put +dup 72 /Jonathan put +dup 44 /Jorgen put +dup 74 /Jose put +dup 46 /Josh put +dup 76 /Juan put +dup 48 /Justin put +dup 78 /Kamal put +dup 50 /Karl put +dup 80 /Karlheinz put +dup 52 /Kaspar put +dup 82 /Kees put +dup 84 /Keith put +dup 86 /Kenchi put +dup 252 /Kendall put +dup 88 /Kettleson put +dup 90 /Kieran put +dup 92 /Koen put +dup 94 /Kristian put +dup 98 /Lalu put +dup 100 /Leon put +dup 102 /Louis put +dup 104 /Luc put +dup 106 /Lunjin put +dup 110 /Malka put +dup 112 /Manuel put +dup 108 /Marcy put +dup 114 /Mariusz put +dup 116 /Martin put +dup 118 /Masahiro put +dup 120 /Matt put +dup 122 /Maurizio put +dup 124 /Max put +dup 126 /Michael put +dup 177 /Murad put +dup 91 /Robert put +dup 93 /Robin put +dup 95 /Rod put +dup 97 /Roger put +dup 99 /Ron put +dup 101 /Rudi put +dup 103 /Russell put +dup 105 /Sam put +dup 107 /Sami put +dup 109 /Sanjay put +dup 111 /Saroj put +dup 113 /Saul put +dup 115 /Saulius put +dup 117 /Scott put +dup 119 /Sean put +dup 121 /Sebastian put +dup 123 /Shuichi put +dup 125 /Stan put +dup 163 /Stefan put +dup 171 /Surendar put +dup 188 /Vladimir put +dup 45 /Will put +dup 247 /Waldo put +dup 215 /Wilfred put +readonly def +/FontBBox{0 -211 743 940}readonly def +%/UniqueID 5054489 def +currentdict end +currentfile eexec +AD776B2EBF901A49F071BF30E3DCFAC47FA0F916EC503FFC9EFF58A2E5E6ABC78B442C3E49096A +372F9AAE7622C3ECBD02783028DD91D32C0749B44F46D712056235A4901EE1E3989B3DC1451624 +40AF8B496D8B010216C5D0E3D6D7F34AED88500CEE93E2A4889C2FC011056B0222BA09F5697B86 +A1350BEA78ACFDFDB589C8D82923F5F8AD8C1480A7D7EE8ABF2004A86A75BE914F200B220B02DC +E0C7FDAF4B89502B119D1FBD3035453DDB3DC564DD8289E85D637884AFEAAF7C6FF38A32C70EF5 +C1B638CB40003001895712A251C27020F3B8D9166E77E2A69E1FF83886E0BE4327AC9142301CA3 +F4DB60613570C39367B465BD2E11A593DC63EDCC1810C1F5EDBF099DE46A7BC166F52311BE4A2C +DFFAB7110560972AD364AE5170A11FEF4E1FC57E896F7B0FE2389F3BE19EB48DB67AC766314064 +174EF2E1412F25E41CF45CB6990732C755064FABE454F1B1D5EA703331A09A7A9AF323557024F3 +7B24CB30C52216514E014870A174249B7B1C05638083915C9B633E3FA00DBA2DCCAD433B078A91 +E405EFD2CF75CEB10E524FD95A2BBFF9EEDDFE3016F6C2D3E901B81B723E4F422A0B1442A0E63C +CC52A0E72EDB5035D945A2FA1441886E56D2B10A7B5950BAB79A9653CD37F0AF255B3850E1ADE0 +9CFF282133A2E30770C76618F58007FC51C72485EA377798C5C8A00DAB46815939973C8FDEBBC3 +7B5C966BEFCE797755B7E73A5E55CC69BDAB56C7E658C86B8FF147630B6D222993D3AC6AD4542C +078835BECCF377ECA61A10F66C41ED8379C2FCC2A5380AC1CCA64D05CB08109D76CB1901D00BD5 +4761978C3481B305877CEBCD436944FB66AF914A1C8D2D125DB01ACAFDA9A8F71BA3CC83FB11B1 +6ACFFDE43513DF984167288E886247E02501210DD81ED939D5D18EE3EB3644D5EF61D2BE58B7C8 +106045C8A3684AABBF8EA6EEE01208F99F865E297A03B426EB16D44B34467735A1FECECEA719CB +F2E24F2A15395A18EC4F6A3990D9EAC78BF523D5911AF11C3EAC620D859B0B642984658A94897D +4BA3F1F622F2DFB6861BC85CEED6172393058E882721A9B3D2E00437CF7FB8DA4D1EC8CB1217E1 +697149B23FB1BAE92A7E0FEDA0374AF59FF5CD141426C498D2749C85FA6E6E2DD07EE3FFDCEE86 +DC3F0225A5EF81DAB98FA26C89B1B020F884D485893B5EFD6019A149D82925F3DD9694A1058065 +EE57C94BD63E5DCEF57F5C3C850419EAC7C4BC2FB81A7D0BC322CB0F88943A6F507A2FE460EEEF +A17DBA7B0E7493890299AE86ACE258EE4C7EBC2C9713406E365A5B30FB045AE0163723667C9322 +B05319D528C8C67AAEF79A6C34459311764B75BC63AB5165F831F1857F6B1D6801E39931FAD9F8 +8B61B304696763D30C0B58313D31CC287EED59C97397E8C0A748426DB6C0B7C4CA57A43E7E27A9 +A123734DC7EA137F307B9C9074B908E53E60F99E98CA0DE14A5D61967727709E1CB009EC9CD98E +9D796CF35B7B1FF2536FF8CD9E1C24B7CDC0E89DC29BEB398CB420DEC645001D90D59C7A5B5E33 +20425FCCFAA23ED880C41BB82A8CADDCB8B5BDB1D57F414F380BBC00B6A8B9591B25AEEEC69B64 +D671A078F39369EDA9E5C9FED9D179AC25F37A4E4D1E438B180B24D851812E407B242F932D9D07 +EE2E42BAF2FE9EFD338345C15F1C8329E91644DB1EA96E6F45871D8EAFF292286D7A70281381F5 +82CF13F5F987F423463C2DB96A23D3D9CEF5B4636A092BA8FC7C97AB42BADB4DE493C0B0A54C81 +82650C094D0B4591A2891949270492240334842911DFD640AEB2B5CB036BEEF59CEAAE37AEEB4F +4CB45AAEDEBE062358058A0D697972BB11E9F30ECBEAE599E404C7BC4C93FC3C2A604CF7F9183A +96962D3D0F03FEBF8D7A171E9537EDB0F8769AD1A442BBEE6F003B87F9EC0C4DCAB4C1BE74EF54 +73FAD92638E347980505361CA70D6A28EB18E83ACCBC73C481D4B81F62EC2FB250696E436A8788 +2728E8E960E09A330121492079CD349F5C8FDF0CE6824495FB17A3A97D7C031F9E8B50D10234D3 +C02792AF0C0BBAB393968B49EDF5BD4F84D83DDB9500A9EAE7EEDDA7CEDFC2A6B3B71F885487B3 +31028361BDA2334E83820C7E73A67B200F8E08B742DC3BFFF6E363AA1EA72DB7CEA77826A5D024 +68C8B19EFF5F8ADEFF5235AE6AA50F43C5F2EB56AFA58470FB2CE038D35DF1FDB5135B8CAA9F3E +F27BACD9D828623636044D161009F558132A6B6DF4AE9CA3EA9DCF94D961D7CB962C4EA67E887F +B9D7A3C5F91166D41C8427A1E0C8BA49C21E968D52B92BD7E7B1F5B1800A27F3F7321E3D200B77 +98D3F4B0AC1A396BE11D0C919F55CD8AF1406321E8EEF169B785AB38BA5AA61A5EB09A9F312697 +92D98DE98AE49A1308A5706738125DE51C98AA3AFBBB10124FFCE47F72BA6A1E5D96FB5BD8F989 +D1AB41DA7C2C71FD1C02CE697C81A0512182ECA66EC14CC8E473378FA9EB3927BC9EA91B1BBA8E +0C70BA78B1F7DB3124246AA9E4E349421623DC408D756578B11218BE2D6B613186D1D094179200 +8960A7F1B266D7C4DABF9081725EF2E5806AE27E5D8E81CC7B98C9CDF8D319208DD7A75C2B0B1A +7C13DE5CA9912EF40371D9F415840ED99AC446E1EC958001243B0C39641846EE67E79217DC6AF3 +02891C024119B55AE58D14B28B68225733BFDA7BC4D54EC2EC58AEF027BD34EDDDE2336EA8B34C +63EAACC4D255340CEB8166FBDA86587E207C06C6F804C366822435388ADD4BDCA7E345DA3C3912 +16C19BD9F424C5C5596E3D1BF1C6601D5967942070320981295BECA7EACAA9017B29EE70538768 +5DAA8B31D815A53E446EEEB107B369B824C97D5730A4D28ADDB131FA243225A69DB5CC61C9CB21 +018510F1930F3AF2AE3987D5110BED80CD8B6BF24998AC07DFB9C648B0BDE300DA8853FCBC3C4E +C47181B1665670E4809D03B0FEC298D1E22937C45159BF0E1C3278D727E40CD00A3DAB814D16C0 +453C20F343C8767778E20C3E12A9C0F30CF38F782C91B678FA8B73FAF9AB8337EBC636E05518DA +74C57B6696BAF384BC34CF1F50DC361C2E745A9906DD87BB93310DAEA23BCD0AA967E8C062EE03 +F573B67C6DBA52C3C78E4A6BC9A879A97924F26EA053CB90F1AE4968BEB209B7496B99E7102390 +4591EA1246F12A2B401C36C3D585A3C3E42E95316D7B3BB95509256DBECBFCFA8182EE874AA624 +B74C146E164A7509867514349FC6ED41A0EA7375C81E58CAE6AFC5524E4506458FDFF6B6F94A50 +18BB41CB3BFFA90AC6A605B372714552AC2CABD4BBB9400485A50E1122F69011BEFD2EA53EF4B5 +4DF3481CDB4F97F8BBB549612C3EEF4E860143EB2FAD42E5B9D5913E53DAE0B3468B191C8ED4E2 +4B5E8CED287E7012FA0D16B8019EB890D9A8BAA01629B0CEA69402973EFDC1618CA995505606DE +DD18D0474B4E08F7FFE947C323A138F944A950734A4586FE82A08B7C2967E67BC975B875A2AAE5 +05935906A0484CC6C2478EF1EC03E885D86CEBBE5101101C11B7B8165E132D2B427B8583BCFC89 +85A7BBD5B56D12F8C11796232B430613A8B4540BF45C97B6067A74BBFBF64851305257D1BEC901 +238A7303E12BA887117301DF80559342A4B551F8189E9DDBC5251D2D384831269A092ED1971292 +2396105767405896450A1F07F6B660F4BFD98369836EC514D418E4ACD93095A6AA2C44D0912217 +F48B92A5D7CA170A6293B0A4139BBBB39131E2B6F5CCFACB550AD74DCD4D466AD9AF69A409D09F +5ACE8C98851C20E19E4D44B1DB30905B9BE08AC52E0A1548793C591CE0E29DD2B102756822B36C +6E4BC505003DEE549BBAA843BA5EFF252F0A5E4CF14D1EA86F46ADDB6EF52427E0B6E2861583D0 +885196B68E53D9B72793100CBAF160F7ABAD3A8E2887D078E7F78FDB1437F0A58A20C7E300ABA8 +031E30B35D34628DF6E8A9689F2C5A779D51D6B673F38730E2C28CD4822168D037138B5DFA7A66 +4318B681D41864AF487BDAC6E635996D21C5EF1D16BE5CAF809C6E34AA787121164292ACFFA289 +15A115A11700B26B0BECD9B05A4CE538438BF67209443B4ADAB5BBC40F9F354A90CE53F0C24AC1 +F2C37FBB9022B23FC9111E292ABA30410005355D49B56D38F4C33C37F8A891A88B2F51957420EA +E5D22618FEFFB7C1A6436E75E4E6F4F8B3B847D4CA12D3D925A3F1F66EB6D87B19A53042FC860D +2A57D2B2967F001F6B56DABED79E82D33107FAD1F46172D4EF1A52FFBAB95A33180B0AEBECB34B +BFA4DD57AD85FCC81833CECA2A9D4667923A57CF8CEA991565051E3BD29DC4CAAF8B8DFBF3A76C +8EDAD02C5F5EEEC19D462EB48758B2440329F43A38CC21D68D26FC54179ECF102F15AD9AB1DA75 +046419CD4B0FE0BB79C77A72CB9583EB321C978C8F68A3568C52CF0A85C938A8065D18DFAC5C2B +FDC4659C10A237F09B924DDE6B6E09EFB77C158F9DC22E6310ACAB98218FFB6D547ED3D5590541 +AD5862078A9CB34C2BB08B4C3E620E0802E99DD0572B36E7B7B9DB269FBAD73F7A49F711E2F790 +2C0F15494D642FD63010E3F1B5240ED79B617A655D5FBBB5EACD66B85F02C54023640DF5150BF9 +88B62D82E068EA4E35824FA098321F86B68DFDEEB8F575B85AA76ACFD6FE55B40D2B141DCC1B65 +DDDAAA3E790F6B0B491E80DE0277D25D48DEAB2D8E48A004C36665468CBE3BA496C57596AB679D +C80E9F744FBE8041D3AD6F077CF65B0612F180E8403CB8D58BDF46FA5615F5BAE1AFE3959FD4A3 +EB1743ACC7DE83ABB701E949613BA573A67B4E9C816348078B2F857609582E5F144BE599EE4B15 +85A08F81174FFDBCD8AC2258B7FF161EB3A1849054B66934DD76DE536680E3AA92EAF1985D5B56 +C68B693A3EC10AB0FFB2B88609E8870670D2AACBA8B20E9FC5ECA607D3D90167453BB172484A55 +141AD585EF5173AEF115B5BD89B653246AF9C2FE922A8F56B78E797C497318FCACD97E8F33627F +579C8D1254166906EB06F96DD5003DB43878316E2EC4109E8FCBFA4B978AA15701BB16D633C2B6 +502F6566AA3869B9C94AB303617C3787C7CC6CBA808FE9C4E67725672D654E075657CD646E26A5 +82C68B47CE90C154A51CA289747585668A5A2D4D73D97E730FDA8F9B648B685B409A742AEAFAA2 +A818D0897970766B186FAB6836899A1091CD3B9503533334293ED15CF42143C13CE2D05A6EAA2E +D1D12A3DAF28F9178B9448E4EC2A8FF6CADBFBEEE028AEC622D3CBA1118E92C98C4B303F8588A2 +3012067D2E1481E68B4ADCD6594737FB2206763B5023A0148BA31A165DE5384C63480CAF82E59C +28A133A775A6E7E3A5A17CB8D9D6A3C9F3E638F67CE5D58926932DA3A9DEA6ED2CB7B5BBF07C6E +CA417769D07B64A534906E5CB96DEC73E8093209CD2A85120F6E3216B5171B4BA67F2538785907 +BF3B8A912CD7E6362E528AC47FC14F2832924FB512259CCE6B650AC1730C5E531AA826D86CB8A9 +D9AD673294D4F1D3CFDF738BE5BC6C9401A164C6E7850794ED6587D592F44D409855639AB72C01 +6C55878BCBE20DEC3D4C15B0C0D47EEE44D6A4E91AA1C297D25A44378636BE4EB6517BD486DE12 +950F53AF60D94F28419AE67BC2316E26BA82ADA180577C6CE2A56FDF0C1EA9B9CA2EF55A95125F +D667870226ED5D780A34EB34F468460EBFB8152024F200E40C6D42D5C5513E163C02B82C42FBF2 +E4433B60344D3EBEA637C78F734FF3321E743437F5AD1B92429B46ABBDE8E115AEE2904B3F3FE2 +369679466A59EC0433FDB261E8B2F227CEA66E4C57DF67F92284F0332A4F4E46431F282EF59975 +C430121C5E833A8174095118BCF0CEC899EBA8313C3690E85225F5212ECE4BB82902B0C662D78C +37747BE77B81F47C24F088F5F94A18BA923E54DDF65B9DDF5E9D64E4D8B086BB808CA791A0E8DC +2DBBA31CD58D21489EB64B11560AF93796A8E1E206DC7C15F4310FE985E47A929F76A6BC154FF4 +2C07B6F96E03F1D6BEB10A0E053C8C7DF0692929D1B62A3074DCAC64B1A6821FD25F6B434BB016 +E3CB58286848D04B8E743C400D477FA5F2130352AB8932CBFDFB9FB5C6C6A6EE9DDBA6DC41589A +89D5F223DEBECC40BBFE5CB5E5DA18A511450C6A679D10FBF99F6A391B11189B921246FDF6F552 +5083A1361F6B232E1F5A25F5E1D0DFDB1B812BA87143407C8ECABC78E5C7AA0531293AC7909A8F +7E27C5A87099723739C93CC4F955995D664D4D043D5F4B27028D336A03313A6BFD8A4E1F4023DE +1AA5A0F7EFAAC52FF9378BB890ED9B29F50DBBB920676A54FDAD07963E2846D3733B7417BA5334 +5F57F1372E89F4020DC6A0AB9035328B0DF0DF71110C2A452D2702488A229B54FEE6845814C21F +764007C8E119CF84454F608C91E1797DB85D9B8210BA1F7A7CD12B2A8AD55DAA18CF2042F4857E +D37C2ACDB63984DABCCC6BDF6A119C464C7D6EC30CB2E4620948B1B7BEA3A2DD88B15EFA953B3B +69C2A624A0CAEAEF17915ED4389D1217080B7F7D91887E055A86A6B287490DAD12D6165A0243A7 +A64587BD329E130F8E522D6570E59A33595672C7110FA2B8DDA2EC48F45671492804DAE5DB40A5 +42E21C27D2A5F2C37F00E871C3087613F11C6249EB926A0463D0486C5D5919A0A6A556D27A6AC6 +0E6065AE76BCCFCC3525732DF91F7C0F24A09A8C2053C231348BAEEB93395AD4DF4AF7A99DB0CA +9CB512D3D71496A74CD776A68E38B90673300A297F6A244CCD0341112F42CB9955DA3980C15BD9 +68A2B0DDACE0A835ECCEF41E8CF4EDCB493B59882F812BC4D85694E508FC0CAA2AFDE8C0B21F2E +A861F1620F6D01DFAF25B3ED11A7753395F97FBCBBD1E3AECC00B5940A6651BBFAB3556F720081 +8AB5744975F71644FD46B060CF74147238B6ADC1E9FAFCBB3C2D2A3F92FD4C141C520978A992EF +90B23EE6178602D2ADCD143E49C6BD72D24C3581F7F1A76E9122B4D8C9DFA3FA94D3CABE5F84DC +BDD90ED86A2E6D8C63EF7177AE85AEDE1A594DBC3C249A7B108AFCC6C75A502EE3CA0E733808AE +ED05CD0B95431DF8AFCBE86D9EA04971A1ADC6558B5B82E5BC3F98AF6DC4401B04A4D39335C7D8 +13DA80152ACDBF6498B99B3E314D18981340A1117D206368E4F2BE11F46911B33BD6FE35B0109E +5B294F59D3F025FEA5C2834ACFF2BE105AB95BAF201BC50A4D98B85C970AF3E39E0B05D15DF28D +0A18E82FCC16D85BAC813A9501A10F4CDFD022905FA5B10C8763361BFC4CB0FCE8654062C0002D +AADE193096D10973533795666EEE0AE8B7BC76D60B1713769DAB8AEAFE36A6E6786DCF15A1A890 +7C4DF6D252A5CCE68B28B6F564060A53FCC5E39E97FF61DCDA09DB31BAC530C8F5B999B1FC4E36 +A2906088897488081D74802A693DED16DCF651F62C15EDD2BC721619F848EBDCF226DFC535A526 +C3247E225CB344AAAFE6A954E89B8330A9F5B05961B5A7D362CCD2268D993EDCEBFD46C2944C91 +7F004CD27CAC0F142366D8F2419CA77C36770355CAB1C3BBAEDBD7F4D0150C4BEA551AAE4CF898 +E5962B6579F5B13A3CAD2EC25AD7AA6015D07028BE165BD40F27A9B33FD805B8F42326CF94589B +29249E4859A8D0F306E3BCB3A7EC3298904B0CC87E913B90149C765A43CC39144D523D6B26A509 +E00236093EE99B3513AC69DC5A2941F1E48A71B213559621E5BE6A641D943FE3A13FFD796F2BB1 +A6C452A24E4B9864FBD9A9B5331DFBC5DCAAFF5EC6232F15E9412BC2230E8394F5C0F92244FE91 +8043D83E3790475F6B35673F695244CB303D708E8E92731C657D81C7A28EB491FD849179BD0886 +E72E47F1B4C34B465B4B0A212D57DD804C7CDF5814B1E6B87C9ACB9C74E1EAD3C4B8889EA4F25A +0CE27AF6F91593F0DA3F55C15C9EC3CDA8D6BEB60FA0D8CFDD2C34C1B0143C36A80B3F77E9E4CA +CD42068746943063788129B9B10DD969706035C3FB7971E9A56EF6FB3A0B4ADD1D977E014E1417 +ED81B819435C8D8002AF809C6A252FCF5F17BFBC747BB7E604C9328F353016B85A69F468164401 +67563700E8EF94313BBFCEC58B3FA6C89C0F79AAA61537DCE0B489ADF40540989FB040E2FFC535 +0B85D9C011A94B7A806482E02C1038F47D392BE62F7A192CA4659D8F0A17F1D53DBE33A6749125 +CB64549F2DF8FC0283E48713E166A6401D1DB6193DA6F4DFA2AA7430EBFDE3DB993A6C8B58132F +3D57AB5E466566ABB13D5C29BA2262F3F6F574D275CDCD653E1F8F824F516B1C688CE97C14FF3E +BAB81F8FBF0A6F64648BBE7F5AD5C331614E5CFF13CEA871D865F4F788E4ADE8984BD939AB33E5 +17121276461DD3125F3B56CA87900CB449B6497FA6D4F5FB859038374D5BE0AD2A34B1ACC9479D +5530AE8EF469891C174F8860837F7A22F72590CB8309079CDE324BC60787EC690F901A69FAE187 +2B6D4D4576F06F5CC37495D0C72A45AD47D2F6CD216FAE7981E4859B5845FBCFCB61829A6BC8A8 +E7A9A0F53C020767B5AABE20CFBF2504BE5BC7D32DE9B56BB1F0C48330635D3E72E4913CB1BE01 +28C6BD47FEBED891A3FAD8BBD5F916B466E974F9CB2B3129B29DF1F5FBC7B2BF2AB8B2769C12E0 +435ED3208EB20E9657200806391492BB1E5899EE594DDAD170A0A61BB6A1D0581D685C80CC2F9C +5E5AF62ADFAB656A33D22F7A572FD25DEBBFEC4B36242F8D77D18A0CBDE2FA03CB8E9394B9CD88 +D63CAB57E79081650E58E4BCD0E5A878CE4621251A287C64035BBEAA80881D504C75032F89280B +FBFC4991241167BEBA653AF5EAE9B1A3280A58B9C4C59B2FC47659FD1F42D37DB5470E46D2ACB5 +62A1D0DA3F4EC9DBEC40635018A141152BDC88F33E79C6DA6DD616BF689E052C0464B62A1E61A3 +E58CC805DEE666FE4B4F0096D6D682384A2E95FFD0B542AEF848E1B54056BAEECE36F0C62099F0 +4E0AEBC007352614E0349A18A2614FD3998C9907BBDB681C74DC3A24E5C002EB64AEFF55CB6EDB +44CA80E99DF02F8A7B1016824AD38FE7264BDAC41E848CC7B7B38B0C50FE417455BE9AE00F0F8F +79B0A5F492C89CDD1D18F6FAC750437A96608C131AAF7A9C5BC0D3110CCBC25B19C7F1E3906C27 +8935A398909D2EE97723CE0207E9CB29807CB9F8ADFA813900D190DD0CC8E3CA457E8CD392441B +B800B2B30D034ED66518D487F4F3C33DE3FAC0F88D9A6A597379C2500A6954EF80302912AC116A +74A520C2E40AAC299B78F63879F31E2A8429B13DAF83428B12DB5AEEE33E1150A0FF4174DCCBF3 +9610D0BB68DDEE4AC044123B208F3D37A5CA6A646DBB821975DA03DEDBC42714949104033A4C31 +0FE6BF0B70F922EFF8C51CA42B1CE7FC496B43E2DDB4B20AE6373972105DFA5843E9A64F63342E +36B154E1575BA26998878A96CBC9A34B2E07188D6E1E8E69FA557DB604BCFFAE3675E237D97F5D +EF4C8D2257AD409B239F1D9519F9B718C27B998D69EC2B5321F97AFEDD8F7466E64F45A0843594 +7B35221BDF77146E4E33F08935C37F0FFD44D506D8382536365FB3972C455A6EAF0761A03A85EC +EC2E8D0FD1FBF0BD829F18874C7C25D8F0ED087F9859136919DD52AC3AE08A7D848E5EB11CEB54 +2BF71B537DFA59D6E081574AF536813DF6D9B8B31B83BFD52DDEC2D7D833621EE2608619F0A61F +CAFF7EC32F2B0727B24937644F40DE81F6D86FC17A3417392B04448A5EC54C0B0BB1B60F38767A +508ECB5B30113246F3A3066310BE7A115CD9D35EF4133A4110B10D62EF3077CBBC8A3C64E5566C +19BBA49AD10E1D5D11BD5A31DC8ED59EE62CC19143533502D580237950FE90B7ED3803F662A522 +A3DF2BD026CEAE7D614EB0EB2D29681934DCF9AB2E6124A18FEFA62F2F478B87E2764C59C2EFF8 +946D326860363543F0392CB582F6AB173AF2FF031E77C939597381F724D242E49D323CF0BD1023 +74B67D028C331B64DB4642946C72E82092A4890A5491130E312ED47DCB238161CFCF412BF7738E +81B3AABB3CA492B716F92BC684615519BB513526C06FD5BAB6F196807D675DA47A7AD0216B7BB1 +35C9EFBA46313A9A7D3E40A5B7E6436114846D1032A163305534DDD10DFBBABB912B1E18882A47 +5154FD2A0FB33F1E4AA97827FAAD01CD51F62E492AFCF3B870B5B90AF7CE345F99D07F134A790D +312A7FF00B01DF37741A5E2B98DC2CCEE6BAB34978374CF1CE2F83F03ABA437790E0BA33A0124C +2C8F4A13F3F0D00383141A952242B2129A0B96A45B1CC13255B3118991293700BDDB4E29BC913D +0A3B44D9E5F7FCE6D153EF4FF3824FA229F841EF6DE46E113C9B602A298868AFDD1825CEB017DD +D59F67ABD724D8ECC9261BF90C413BB4818D060CE5FE0B0EA9CBB65850E5FA181E9713FDA06800 +FFE7C53D9EB62B222ABD8E12EB6E149CCA7713C5639ED530A30DD12D69E271782458E53CC14DB7 +5B053E7D61DE9E231A78C2391DC18EE092A5F76CD61AE5B7894B78CD378E0FBF8056701D4990DE +1EF0F36E918D98CD907F624E654836F18A579C7BFB23DE3AA9D59229C3FB1A4B857D9EFBD289AD +0FFC27B6EB42148E7AF8A802C99B14ACE59B52A111DBEC97EC5BFB0F970C9B27AD6231D66F1744 +74207E935CD40B5D3787D85B46D4C33AFF9DD5029A0172118C624DA5307F9FA33C256FDA460479 +205650A52F5591A14027695126E5AE946A7BAF34835CAC37560EA030B3DD2B06A6DFFA0D02F634 +E344CDB5260D84FC6338DAD799DAF44C46E4C4DA1854160E76FBCC0916A3EBDE474E358E9E8B32 +8F1223DF95A0F1F8CCF619FBA607F0276C5373C293BC4C4D653893B83F3583D9BA549F8D229DB9 +44D7B4B835F97197608BEB526AFD58416980C3C8ACA1080C09797DA0A24B185C793636A15FB82C +E003906B613CA3D16DF1D7C51033480123FCED0205AE45BE3DBD332DB88D0BDCBB4DB845AC13A4 +215B94ECFFA4D4E88B4BC5093770D5DB8FD7B87E8E4FA0E58F651270701EE92A3B287644F56B40 +97237BAD7453C25D29B293ACDD4A295284480A3E19DD134E77498E16512ECB44D77EB24D6C35EC +4586D9B73B2F60FA1F758FA86378485C37D595ECE1B0FD80D64CEE30B7F5A51A724E72E18A9B22 +AECA8129067304660294A309E9797F8BBE2402581F43D8636648EE6675C4D30A8B50DFE587FC41 +E5C04B4430C58AD44F57C8F6AAFD4750AEAE51BD4715838D8BFE522C6F17ACAE809C3C39F50D72 +CBADA2547CD9D0DE80980C53D9ED68E73214037B8A8E365BB3DDF7350A2D1B9AF3ED802436D1EC +75C60C3617995E3AB7B8469915D80285E99BEAB6BB88A9B5A388D7D7CB950E7DBC168885FC5173 +4FAD3CABD91109104F52525316943C6E16ACD17CAE128D81C0D98357B0B806ACB460A5E7F5F7B2 +385060402CAE0CDAF70188977249C809CD4C6B133ED8447B926E1A30D4FCD0968FD3FD45B50F6E +BA94E72E87D4BC7ADA4DCC3D6DA0F31517EA9DD89F6751F707980CA84CF406F7A786AD8E4377D7 +5506A96F7293999800C1A59CD813F18398A4094D7426E250BD21F87DC58C094BC00A567541BDE3 +D17E1BB01C4AAD986D1E79CC4B29234A28A6A323C0FB98B530012E523AFDA4915851952149B238 +CCA18B8F974BAF6CCB738D05B6BB1FCB0825FC1920C4E3AE8A1DB3B7C02991A543AFC9D38DDC1A +563793DEC85BF313F6CC40A1C8BBC09580E54EA3CF1E399F8EDB969290A3203D86D67327E567F8 +ED390542AABB07A0DA177C3C6B44F5BFBEFB181DBCD1753C6712A6D7835A64B36922173FEEAE67 +735FB82A09CBF309246D104DF7B14AD6A6A87DF431004EE72FE7887929F4DB593B0A113F176409 +E69892A4EC6CF250F984F2CC2904C788FC7FB9B164B7C3AAF3B9BF5EB17108C52EED49E5E43D16 +F94ABBF85F784008958557FF8DA38DC55BB43D6F8671BD2764A9F276C2A039FE5179D23455BD55 +539DEA38921C66C7E19EE407CFA868E9CEC0694D756EBD5B9EBDFE6D18D5E9E33433C886B24CA0 +B0F131746FA8FFD23D427828A4998D0776549AB2B4F5B610F07AED694655A7152740A275DE60AC +BD7811F31203F32D071761E74D0B34BBD8158DC1282ED895F803B7FD689D429C9A2C32B30E098A +A790D6247386B89F03310DE4665C3AE77665D885E456B655846956CA33E3A702F79A9695CE7510 +329536FB24143DB109D0E858CB20B3056078F0C151419BF06BBB871F925ECC7B4131E54A935645 +D4E00EF0EA720ED493E6731508EFF11B81D9A4DDDBBAC935DFDD1B798BA0E34B0D5695233933E7 +8C0C9C1DAB44C7BEE45543C3C310C452FCE97964D2B635C5433318FA367D20DDB9DC8CDCEFE0B1 +1DDBBA2D7A7010375EE581C7FFE97F89BB91E3FF1624F0EF5FE27CF9A027BC8D1939F91D88A873 +5861127EB0CFD88300D3B821DDE0B54B62762466790A949B2DB6372C75732E87F54CE4F05325D2 +0643A2F8388DE10E1C4CBFDA85A70F7551CC8A8F088FD46483446E0BE03BDE1B5F2B23D9B99EEF +D4641BD0EE2AE3310B0CC0AE418D0C6797840CC5BFC4F54F0D6AF8DC1AAF3DF297D3955ABAC771 +214ED10BC9E88A4CEFBE6E07EDF9F7A2F52C144086C13071F24CE826D468098707090EBC28BBCE +12E0AED14488B547A70EB783D97C98CEBF55858B924F0DB6754B3CF833EBB5EC487046A6C3BAE3 +AF59F61B699782A6109E0D7544846F4383C849A917ED1750A8F5813F552C231A3E5954F57C8EF4 +D02BC790A6DC865F77B78D920D274C2276F9DE3887540C460B1A6029419B9EE6B88FE29204CD4F +62321824A8B72FEF463400CA6A83C2CF8E161C76058CEBB021216ED92B4D889A9CEAE5619E0CE7 +DE0B6927577AF0DC385FDD45EB6F116778E91BC1EBB2B6027FC5D39F8A233D27BF581DB38D31F4 +20AF47E77AFC2D67A7FE90A10F0D6AF0816BEB7CE905FF00E5C2DA7CEC75EFC3A170495999AFCB +7A9781375C03C495FC9CDD90F9783CFF0926D795F155CE64AF0817726FCBE7BFF6566FA1A1DED6 +D4D6C2395E7DC3DDE9484A2FFFE1C67EDD9D8741E17D526079ADA966C5F17105235C7A5E09B82D +1752B97568029925A6E25DD461063227613F02B66AC5DDE9B4018E253263CFB3EEB717BCE0F8FD +36B0EDF5D82D2DB2DF28F72B13D148F741379D7C31443DD9C452B3F5A8889C93F15957064DA4C8 +BD8D3032D94A3133695934D299CA4303797B6A49932A1B672A72DDE67106E2BE984CE7E6BAAD36 +396AE3EBAFBC268105DCC191E2773ACCBD92A3D32EAF57721C0EF3E34744AE1ADFD9C56669A08C +C7E95C1908D43B569D82CFD4CBD7A41D841D10C107E00CE93F033C7449B78660FBF82D157601F6 +A9C721C3FC1264A86363B5A151F63C8B646E2D7E5D44C3DD46CBAE571FF53A9F4064540768148C +B69B9752D1E99EACDE8BD201373708BF20C689BDE479A0D11DEDA4243E6D0ECD265294C079C7BF +427F12C737CE72238894FAF3571DC588143F2C86EABF4512C63672D5211514D72120ED97AE70E2 +FE4291903259BA3521EF94C9D13C5A614AAC9BF14514761F5D3678F4F96DD8B0A20AC00EBB9A43 +235A571280B34341E5761EEA38808C7485C6B9D15B72BA4A0281A517FD2E5E660EF9EB5BEEBD43 +2D537F8E3E2FD2BC8D221CB3C6E578B1627EF869CAE922CC154B38D2239A7FBC8D85727C1D533D +C71E873CF062F0DB2AD29763A482B6A601EFCC9BF9214E9B270BD9633BAD41C2308A02B94E860E +9B74808796488497C3658F3F33CC29EB099CE42B134AB7A5E168013C64F056375DC95FFFCE9AAA +7813C498FF43DDA22D5186F6E7B3AAEA39A72A5C0EEB95A0CB79539FF14FD409F7D357FB06629C +D99C5F277996778C7FD19E776CDC015FB37A29AABFF21ACF0BB36A0F8F7D6758F4AFA31FE61F95 +10905BE91866BCF1B92CC5638BF90CEDE72FB7F46FB1892F4F4E965DE76D6162C515195A39FBF5 +1A7299F01D20021720B8046FF10A5D5185B217BE8B62874281AF2007EAEA8C41911DB195B8C3E1 +BF0E466CE3F398A111A03958BAF0707BBF153C1E4F966E4645795126C6912828923BB3952C5099 +C0FF6855AFAB944B776511C96B77A9E0459FC52749F0AD982077A227792126507426736F2965AC +BEDCD7938A0E27351E5CBBEC3E331BC2568679E1823DBDCFDE6E46E999604924084D583696F05E +D161CF7CAE7A56A31A7EB0BDF8F5883A5825597227619EE45655F15CADDD3100604877F7221866 +A27520BA9F4C72A5B7A1B45549C599BECDA8D24BF7504ED6032981AD5EB25E7DCEF6B0E7295F01 +0C881F0B0B28C39CBF0708B8F96AFF3A0193AED2DFD8AC7E6F4D85F2EE21971A670C010857737D +4D3C1CC4D1EA8FEEA7756D34FA95B2BE2A27E5864A4183F75861F2EA00D050F04D6C48113EDD40 +75A78C5C64E41B437AB8FD6E12C5A25ECA76816702CEEC2B3FE8DE398A130CC49330BDEFB0D76D +047E035448A59484D48D18EFC534328A8556858D4B45CC05377B8140598AFA383939E4A7F73561 +68C7B016D012C37B405D4523A1DB884F005A2572A039847C7C065B8B92DDC9BC1E803692A39CC0 +0A49CDF0AD24168154D03BFD56E1EADFE29E556B52FD11CF838378E4E4FEAD5243456648DBED06 +2A47FA57542E137A9E035569D068F08E43DC4031D85925DEC164FF91F8C207692E8DADBAED305D +D38FB4952C61F50F9E4E4CBDE408A16801732F3EFD6F2D600CFAD6F691BD36279AD251D991F24D +18DA3168749E8469A9A39F2106B98701956F265C3DA4081278A3366118DAC644DD5B4B5DBCF7B6 +EF6AB84D9C41350B18320C0FFEE0B5C26AEAE1A6028093337FDB82EC40105175175CC19A7884A0 +B07DC34C349177DD4BCDC16323E36197073F1D6447BAA0A45F0DE7453E6891AF0FE2D21C26D9BE +37454F2F83F6E974DFBB014511275360A9FDBF6CB77510C92A45C0C1FF6A004F854FDD323CA4EA +45EF334B4BD189F1131FFA7B4C7FBE315DD788FF2D89DC3804ACC9D689816A22E39BA45AA98AAD +6971FFD22B5CF38794385EA00AE18FEA562E0AD2688CF6176E1FF4CF8910ABE1C4E98F59750C26 +9858AD2B32E717C29D97878953F729AE13B3403F997593542639DEEACE7BB88D45B6C4FCDBBAFA +3B18BC0F085B25A87B16BBD084EE088FDBF6D62F4E65052E374F2DC012DF690E23C6A00A5E8760 +B2B2A213FA8D0B31E08070741FD2D8752274CD71B1CF566890113EA34518457B1778DC1CA38345 +78502A62CF4CF563252B3ECF554D477283CBE6AA7A434A279AB71B2CF20765F5B197592C681FE4 +6ABC6115B49D776B1CD457A3335FB3B61B4258EB77327688686072B7906B2D8016C5FB12A626D7 +E8B2590CDF574F3A410D75FDECE4BE7DDBAD69EDA08F44B73D6F7C92B97C67201FA2AD698D058C +EB7AE6C88B699207669D68FAEBAC5E75905B9688707B199F516E944056C2CBE773CC95BCE59D82 +AA93DF52227D477CC2345EA8F1A2CB96A00D186F3A02C30FC0330EDACC404ABCCE86F0462784B9 +7C1F55A03C4ED89C79C0BD3A0AF3B19259963CE966F654D7D4EF9B9093B27526E5C09A084F3C9F +DDF3C8F261A5720DFEE14B6B198D8F0CEA0CCCC7B70CE185F0B65B0B4E5CE79898A8E3DBEBF65E +A2A7F82EFD92AA7EB65AABAC5A3CEE49070E78D5C591409756EB4A706DE5192D13083C4A10BBCE +3A818990406945A4036CAB65E3F53A54E6992866E130F01DBADC1F15751256DFCB408DCC671CA0 +731A01A6457CB40B4A04BBB0BF77C8B655ABD484705AD31CBB88CDDC3C599B35B86D3C4BB8B8E6 +7751A095E43C9B9228C58A920E48D679DEAA88DEEC58F7B5573DE4D7C7288BA9F0A5899D1E6588 +557ECAA123CF7D504406BB03F580FE02A2E88FA32F9A824B5A895CE8EB1BC271FF2702FA463454 +717D37672DF5C7F78561F889EB0E57984A96E1430B26E27BAEFFA17AAB5FB94A890AF8FB57AEF2 +4FE880121E0B31708F1AE9B09DBE64B26A5EBFBE42A4BBC0C3ADEC0A14CF7496AA53263D4889B0 +929645EC2B8C5144A4D76FDEDE6345B1407F990C5D7644B21C0D827AEA7D4E8D4D17311099A703 +689B2F68A9EFE15696C589BC02FAC8F5CD6FF68964EB222EE012E28A490614BA93405E4F2798EA +0E8A8B5EED8D7C554737ECD26CCFF16F50C8AF2373E8688DCC297269C2836E4FED50EABA465EF6 +908DF9F55DA80A501E0165DBEE8E3F9FCE4F6B9C31AD5505E71AD3D7FFE6EAA9D764B965FC163A +B0ABF7DFEE391546EB78C79466886C7393D4036FA247E9C4DEC84FE72D4B5AFC6D7FE58714C70A +AC3799C4B419D3701267915677FBD571073B70D68F141651A59ABF8B6483E216F90117879A34CA +43BFA857B831DFE321C2FAFB887131B607D2B9AE7F0290705C254716161DB40AA383006A8B74A5 +767DEDEF5D60711B5A9E45D63A6EBDB15740AA04BAAE078FAD7FDCB9D26AE3DBB66ECBD9D7E641 +D064B881BF5190FB31EECBF3659036FC145D8BF0DFB325A78F0B3723ED8DD2A967BF916A90A92C +32292F3330D3F1FA1F31CD6AF9373D12A1EDFA00EE7A4859BB6F6D4D6F6F7F944ACDE744E3D6DD +CD646F83539F983B1C70BD94E1FF6CD3E072F06DF4193676388C95A3E4E3D07ECD40FB6928AC52 +CBCCF63B71B47DF4567E19E0840D6452494EC3883F6144E5791853B0EBF93D6DDDF15B3C8AA14D +8A20E191DE9ABEB1ADF7B19B3B688961F0B86E215451E4DD52BA655B00D1495BF08660AA5CE7F7 +134698F4C73B97103D1074220946455466FDC08FFC63A1C97D60E0B931E94A6A559BAF54574696 +D5F5460FB18B3213144F42F1AA8D5FEC8361A6E401A82454C897403E82DEED2B65E6E50CC603DC +34BEF5E2EF0F2FC24421E5DF012640D1C6E5C87F2CC8A3997362E27463CE29C903A5B32863321C +55B8540DC3DDAB6892FF114F3EF72647A3525119AED1A65DBC779358C5AF9F3AEDB5AE85085CF8 +9F55C71EE44D229C122DE658C83290BD82FC39F044163EB56F841A9E568D50493B535837415A12 +7D618BE80156E1AF95AC39BE234ACA11CFE3744A8AF714724C04359EC8729BBEA07EB8908FC41D +4E5D045D2261A9E20C66A161F98584A2FD1AA56473A0287082ABF956B6F34C0AC3D6139C00020C +A13C7CDC60F1F1778CAB99930BF104139967B728C75120BB7FC3625513C7F992CAE757EEAC275B +7172522F0E178F4EB6F862080D0494FCC5F159DA45FEDD5C7A19064BF1EC59531E973A9846C5A2 +F8BD12B34B0152021D6C41F7226BE7DD8876AEFE003A4DD181EC983284F8855F9535318246A668 +196BACDC3A71CCBB1BDA4547168F0624CB896CF96E7629EC8D1BD11530E5E8D5568D77D9DCAC00 +ADB7021BD4BF6FC3E1F178C51E67781337D7D3AC1A09ECA650B8278FF569501CBB021B2C8C9ED1 +C9A23380D3CA67ED0E27A41929FD835DB776103C8CBE4498470C2ADA09AAD19EA5D781C3D5132E +8C343AFC91E36ABD78327AF6A4F589F146E702BBF6A6C3EA6F720B5052FA18E4BCCDD1A7B8C7A0 +E654A9883396E6442EDCF3ECB05C55B0895C130ECD3B9544A3FAEB5ADA3F5CE8C5FF342D2DA291 +2E9FA59276DB5418BC5B065FCE1ABD42FF3238894BF00C86C52030258449D995943259F600B1BB +8F63809E2D84425DB00AF60E9E8AE791E5ACB6D3E5C7FC9023144DF022F86FFFB37D30899ED2D9 +FA1A5CA5E442170A2BF817985767EEA87C4F57B8E19681F607EBAA22860C8C549738FE95D85F4D +2027CF0F99F31985FC568EAF856FFFC056B118EAAF09E8982C0DFE550FDD8652F3D94CA70DE411 +00C17F820E4A7A2217619B20FC0303AF62BFF042764382147169272BE9769043C3D41F9A246A01 +C4C63FC7DC2FD62306EE813196D620F584B007BCA0286A39E296B210F64F684CFB2F9CCCA5B74E +950D35A1F18B19A26940674DF66392255091A6A6ECE640DD8142F5CBEF4A7810FD8175C9833539 +A34A911E0BDF64DBFFC534EE22CA6229D62B7A95DCACC46D3989BCC85749B248523AD44ABFE05B +E796126E6745E1DD1653FB938612FCF0C877566CA9F686823F4D069234EC7E3826D0080C32615A +88423A09651A9F3EE6A9DCC95646FB0E7E24C7C3372C6D6CDF1375CB4EB1440FE95C5C7FE435B7 +290E78ABCC143A9C015B410A8555271833A466D49AC0611340731580BD29F73A2DCDBCBAA6E07B +643DCF9B18613A6652B655A2167CBB1CCB0FA71534BB0759873FF5B4CDEE677AFA1059E1F4519E +EFC1BEF079A9C04D13842F516B096D3D281533502C4023E13C25C59C662340A45B6874B5C9F08A +08BE03B7C35FE00ED31BBFC5119463F2FB1165D22F117A04F27FCB5F0949BFAD0E882703755454 +B629821B7EB4B048FBBC21E1390620EDFDE83B894FFB434632EB7B4B21647D4C9660E7213902E3 +E2B6AF6181D797F2551513F3529E6C7679712CBF72F2437CD4685E117AD8C2D61A28132170427D +398392C7A27EBA6C244C6BD7700969004D52395FFCE11000B07A7093714F781E353BBC152F2EA5 +B275818DA2E9FD5C04F63B23EF722257EAB81FB2AB97C5B8BF455B2AFE648C895A6D38BE154683 +831704144F5D8FD68BBC0A96165E27F262804140E34A7C7361CDCDD5F14BA4A45EB7BDFFFF91BD +7429BFC9775BAD532BD4DAB6F7FFE85CBD60FA6D0B138CE116058504803D0F449ACA8C380A7829 +A0ED3623A5EE64BB34A345A8720C7B57B1A7C18560A5E56A5DC8C553B58A73762FB04036217CD6 +081F8227F61556BE59FF02C0DEA3639D44A6C3C97F921CA96752FB9B9D28597873AE2AE2C38D46 +A2AF40DBC3DB23A297503A5579998B0DB6B93D1AA1ED3BF5BCC480D0CD9688135FDD40A3E487B9 +A4005AAED374C2E9E036BAAB288AC862726F3FAB60D38B5BB135799A3BE5F4470903445D3A66C8 +24256158426369C70439148F4701DDC2F6F6F77559DE968F0305C42B43E665F7E8DCC6D72F055F +038616F9C030A9AF1A06E6036E72640D11962CD4A622A9DCD07C8EBAF060BEB846F25C1ED28835 +C28059C5C1FD4987CDBAC09780B5AC782964DBBEC7F776B5DB51B44E3817BFF658D2DC37C4291F +E1778D7B964E22AFC5EDDBB03538567378B7F62E806422EAD35C9F6F82046E7E79BFD6FAF3E7E0 +A52C63DD5E8C0A838B3969022987DCB7377E15BAC7B1525EA24C666E0C69508881C204BB515233 +C9B6FFB3F0B4EE37D12EDE6E192B1A17A7F6699FD6C1E87F03C2D8AC0B9DEC767234A2E7C32016 +D3AD9A8015F489BEDA95EC6400EA9DB2CB8626FA253A718FF13FF0E013A172E06C3E5591C15715 +C60C30795CAAAB098B52CE441EB71F2063ABBE3DD3558B7F07DB17F49C24A7861589ECD8E825EC +797ABE3521B5924F53045230CF94C34F5BD6F197E008F3BC38401B3AA6BAA7EFF54F1F926677CC +FC0E77D5EA05B218213737DB84C21AA724E05F37896667FA8EF4E3899727DDD936BE2F8E64ADBA +CA74032C2FF23805D1E6029E7B305F0CD7259865D7271444A5886B5C76CE0DF62429164E844F2E +95880B6BECDBB0BD005229964442A20AE582DF5F3735885E217E4C399535B965047A892BE0985F +6C1EA35B95457414038746316BC93CF4C776AA50650E617A6F0DCC586D3F4CBC19F6043DD04915 +F0CE9EA31EFF2F8D36268A044EF15BCA63FC5AE91D7DB0879FE5AA9A3D51BDA3160658ECEFC447 +CD2C9A848D1DB4BB48D277EC154B52297EBD188B2B7ABA0E4B840831E1B9B647AF654E1BB08D0A +64446A3BB49FB7F19E8FD8E9084C8B8C93924EFDFD9A9458A4F3B4F1D948B123681DEE542CA97D +6A5857A3E47622A6C6B2EC09768705223894BD7867242D819277C5DB24DCCE8DA6062199482923 +4F17F56BB1A0C2A2E099BEAA6D94942AF9706FA6A1D0C67560BD1E3861F8FFD465CE6C48AEC2C1 +F762BFD3D4A68B8B25D0FFAE02376B34DC1BAD9B39DAD6FAB6491002A1E6796BE978DC1DC62EA3 +9D708671DC9CFE4F757CCCE4DD7F1B0ED59EBF5EF3DCE61C4AA16DD6411B68E8A9CE4FF6AD85E6 +F98CE16CE25A8405801669678204CDB7305BD7A29469C539BE2348B8AC412DC95EACA3012D3D96 +A3BA334FF4E16EDB9115B83AFD66192142423BDA32D8A76277A763C373217BE75370C5813FD53D +E7DCE0807C087DDE87E029F0211CA9F1B1A67E72D7922388A6C84B3C6E3D44B192B0B7588A7DED +100C04F87780F070DDFEF41C90EFC0E0BB8F3692F7D360BA180E1D4579FC1AC671454E413A8613 +F40F9CDA8AEFEC06CE40F1DF6FAEBFAEB57AAF73898F869C6BD165B9A3A60C5942A48292B5805E +01897F3DC17253668A774D13E23C5D5D90BB6B8F60E89875B353A8FE0D03ECEC140EBB2B3BE613 +907F32DE8F445CFDC60272E5EBC753BC2ED4CBEC34588879870277190FCFBEAAA6D81759C2CE36 +6CE0EED2B8915F93BD1ABBA0613DD9E2EE93633EF81F4B36C29F4A24847104ACEC56CA46416884 +462AE9C21D1A21D20125B71DC52D38989FBAF0A0A6EC1068E7C963B2B6894326A5E70AE420214F +EDAB638988110066D741B301760451CEA275988C2270532D4A78712F28922011D564F12928B4BB +9484657DC0F2378F07A139C75843624CE599A261AFC6192D58F89F36556AFE32531138FA46B505 +54898E65B82883BE97CC02B92B7C7D1979F799720345EE930BE3CBC3BA01CDC2311147AA768202 +A59BD84F601A5FBF6F882DA51E7644D7B734D89555FFDECED4BD2B14DB3D3C57E0403680796446 +3DC5C9D6427B591A00A82E2EE4DB81D533D52857A250E579F9C9D45109F06862E64564B5E18615 +4B6AFF5AA065792AAD0D38340C26A0B7C7E4DC7F054A850C0BA6EC8F66535E5CE1758160CF83B3 +CD1D0F7EFDA4B0D11E679C74386C2234505F7FB083578BE4D43C4922330EEFE114DAF7C58C0AB8 +7E4F6C6511A1B311FB9FC645FD7199015B5491584D2E135C573206A96EC49B6F0BD7428755A69C +9D1DAE3978F70CF6F2B518C74B81908258509FC96282AAB0DEE885CD5D66B5A91BBBF74B08142A +827DA25A4F0FBC4E1BDB4952556B04F32DB3A8CE6873DA2EE081E81DC1D3C429BD76E62986CCBE +D21F956E4F45F869E0E00FBFD1B17011439E6E0196C8A7726A96186634E51951B5DC1CC4F96850 +9AF5DB930D892EA290C70EDCC65DD905D6AF9221AF3C6EE64E01FC3A37EB358A759DDE53CDDC74 +B6937F1DA36B00174481A40AD8B6E9BA2F9BA1A15D80C560BF4A3CAB972DD12B2890C3BDEB06EB +FE05BAB7E2BCDAFC641643B67D553AD78D5CC498B43A458C06E9A428307498EB76BD7096F2DEBD +2905AB09BC0E748239D90663C26A3FAA9347C32D44BEEA2DDECCA24825DD2A154E8A82282F4122 +96D11C6E0CA8F28CCD52A3E0A9B442838BD6FE90A931C8A462A97759CC9EE21B47C44B2032E5B4 +083750CA3483E688F67FBE91EAC9199D49963060712314618A725457FB71945C535BCD330A9D8D +850EA0EB723BE0A00F2C3A8E6C80660F59A84DE34A52F00725C945521ACFFFCE8FA1CBC2CA9F9C +C98AB2987C636CFB83DB46B4B3A7F1CF4EECF6E08A3B94229B54CB34272829C4BC264E303DFA2B +170D5E7A66A7EE3C463502D5425AB0739F1DFF5FE9B751975E4379569580B641C7296DFEA54E7A +99A9478583A0D8DE565575DB2CD00B35D2BF82A5597F4134CD3F7A201C80DA9AF49EB8D9D049C2 +5869843331F140753DAAF303592715A35751B4597F458F5BD9A894D8E2173E03C85853515E3D71 +CDB51E7000279E462386A1DBAC817073DDD29CB89F211CD5FCEB9657C107041E605DDBBB7275F8 +B084FBB48A233D826F9D3079F56BEA088092B8156B4C38ECCBAE22EDF9135E5E2DE147EAF1D562 +2735F9FC9C5124149AEE31FD4B35CBBD848E81605EF9B89C0E116E4394195122D3F5D28A60CCD3 +19A85D7EF24CFEA5AA946B8EE737786DFD5A6B2C1100F3F2DCABDEBC012CBC19AD314198536720 +37233DA6D3B6AB83458179190D11FC866BD3343C9CB85381BBFE2226D612BCE91D13226F4AA348 +C48D5F05D927518E5587BF7EEAE0B2E40F6D2F5847B25832970681DCDDE5A3DAB4E305DC7CCF1D +817F07975F4575D97355347E3AA2DA7A8B230B81673ABF1052EEE2F524D5330975E811FC32AF0F +E8538EF37B67EDE2F2D521F45AEE885D379835E820C8EFFDDD7E3E381BF267E32E9E6DC40A1D36 +D0068A698B970C492B79D5AE4C645286631FF56704053F81474FD546FC9498CDE9176F7483F9F1 +7FF8654B0EAFC6352FF7070D969C8F7005389B7F465EF1B6C0A1329A2B18F577586CF4B9427D48 +886B0AC61575474C87A37340B7EFC0090F3E489505EF51BA12B1394144F3895AABC6916DFA5C6A +4E8D07D3E351853A2E0370688E5E6000F5B751AFB8821C4C25DE80A9640ECC48B99E05C94E4932 +D120A4893E85CC91CDFB5A7218C972A482914E5401ACFE7BFF59B4D8D5E5F563AEAE5E34B052A7 +2ED5ED7854C32C20C933D68992DEAAD311F6DE5C03DD24B878F536560A2F43E5FC70452A39C7B0 +AE56A0A559607EDC991BE7F571857A7F55FEDC84C679B9BE89401F504805BDDCC9CAA625B2111B +C4815AC79A78AAEA643466199721879697A341639ED003B5FA52331D3A2AE25D8F20EACCBAF791 +D62421A00937BFDDF444EB59D2F460AAFDF8BE9F82D5FD1D48F6712B908E5FA81345A567C18705 +6944C722C55A0D418ABB1BC622EEC5D416F6F52BC188DD51405215AD6B75B04DBF4BC6D85F0618 +FA111126E41351C3F7B0667F8FC08ED06342B2DB6201A1A63AB018B2FE5FD760366A9A420F56A6 +C61B835F9AB9F385A81430F867146C8B01784534CC959126389D1CAFE10E3AF40DBE594B6B9219 +8F50D9759E60519DE8AB4CC0224ED624A3AA9FC95AAFD676706448A9F05BF008095121314FD044 +A3A350ABFD1CCCD5EB18DBD2EA71C3DB2F37066021E39F4E77CB1B155D05CE1FA00C8A59FF39A3 +A16891235A599F95F9A62E6EE47839135A0750A2CB528F11EC47F0D4D3BA828501C9B76FDFE178 +21F11814DEFDE3AB561ADA314060D7112BC8BF02E92793A3D864B83AEA78F8D49DF9AB07AC0762 +229534C0288FBC00662E53035A037B1C9745195CFAB54D22032A16E7AE0B971CAC5A67FF0EDE11 +E265B88805314BC7563CF177BABB367618A27734611D7B662DA407911EF2FEC47D74C482F7DF82 +3960081466CECBF4BA94FC5AC8C9F91AC151FB1ECB78BA5D5607A1D59D34C18C83000F8507AB1F +1C44347FCA2BC27087A28F0F3B24BDD8E7A0DDCF782CBCED5DDA4565308E10062145895A9C437C +CAED86458890311EDCDE2109233BF9ABCEF0535080D7C5A76D6E3BCE8210C7E89FB95E63CD8A76 +FEA978AF5000DFE7C0E659B902503758736C6DB295B9368EE50F5F8CF3E200456B5B2087219150 +294871F7B980800E59A5DE5973AB9ED52F7DBC7C433FD0E099D3E3EEF6DF7D77E40D1C8B34C117 +588ADBBD7A29AB4805A87C13CE93A65854DFDA87321ECF7D34E72C193365B632B455F8A2916BD1 +E63441A633D144C254E3FD89FE2884840146B4C992A07BE6A0FCEEB6AE9B0234D234645D73C064 +EAFEDA1EB7A9DE6661D31226A6F54BC9510DF6F64F7200CEC5EAF90357716E7C246D47C04E0906 +98C5F6AC446DC6107E6342FE8B746C0FFA058FBBCA0730CFB20A367ED10661670C1618A4D467DC +2A7E87894DE0D5392B3F0DE6582901693C28568D2253D514A3FACD1B063B02A5F8A19C1D6DFBAE +CC79435F694E914014DEFC5553A5984993154997E63768DD7BC462BDF6D1A8B28DF568B22FF460 +087163AEEC37F0BDDBBA4C30322AD71922AC802DD491207E6A6C255F50EEB0C492EC86AFED9040 +B068671FE4A1E66AF15D3D976C7267F3EEE19462487772087ABF36700B4821D2DB5193BBEFCE82 +BF67F7034972A708E93C55E0F7A52EAEE47E68FDC6F1BC49B9370F28DAE122D13CB2CBCB55933F +A27291003E862FB0C7E20A0F979DFD8BA918322F6CD597809F9E05DD210F7996F314B65F54FD7B +F453F15CCBEB2CD5E53535261E696EB73F2698D1159076D0EAE35FFB1FB53F98808ED2325B2CC7 +9D90772C15273EE50294AC931626EC573BED7CCE2D713328962528EE0F00FADB1C1ED8B302F24A +40F9A22D1D6411EC669670ADF93C4C67D8520109FDE9F64CB0382842C88845267528F57AB7E408 +9EDE614E79799D08D3D01378AE9D42D7601D821C9C5BFB77EEFF37B634D2698BDC11CB60192B6B +4FFDEE834EDEA99CCCB760D3E7548E6810FE300596C246AE56DCC6BA8132AE3779ECD5ECFA6963 +F9B5C4B9AD8B6C480BB184FE31EF0F8DD3ADAA96AFBFA250FCBFEB529239AD2A524B3C8AA1C2C2 +7ED016E8EE24B355BA84D1D0AC6AF00B0A230578609A3F09639D2CA7175710FE9D455A58A6982B +7B7FCA52BB5490FBAA064D1C506C9598D88B5CB330C97F434BD1EF060ADC21B9F6ED9FB7A7E604 +20FA1B481881C73B1DEEDA0A7E197B8D38EEE68CD8D442D083772FE2BA1F1C07A57D5B67BD8230 +80BF438089A4D6C311D421F5F16C35B3207649CC0433AEE4987E3AB5698D55309B5F5C8B95332C +77157E3309EDB4954613428AE9DA6686799ABCE483FCFA8C060F0614995E01FD14A6189AB61A0F +7AC9465BE297F053E85AAD0EFD921502269D01FA6D5ADAD672F3D48C5D4EDEEA65E53E03A24AA9 +E78660AFF7942E7F23E3754582CB2976FB65997FF35582FF83FE9BF43CE5CA20AE5EB62CA819D9 +B63ABE39EA3A13AC163F64A55B4E840B12FEED5BF447E3CA1FD61E6FB51D6F7B3176F697491217 +306EC21CC462AEFA069C9432AFAFDE4D586D5EF8DD4E49882CD701C4F4FBDBF42E370AE7F332AB +E22DDB2FA70D17B0E053BD6332A1B51840A6C18760A46EDB9C8933039C8B724FBA4C4D62B98876 +71F94505D1242067281063F91A7DE032FCE95DA4B54C32B46B762CC927667306101A7186DA78BB +BFF306C62708B92D76D2225B1FACC18157268623387B5D80FF9E394E3DB68D5404AE3CAF3A8654 +7704EEE75E7BCBC9A96610D96E96C0CEC85785FC7D54BF035D0E03E6B1ACE9691D7DD71B607B9D +C37DC020E9B5D4216AA991C5022AC52A4637FCA79DC21DC1FCBD5BA4B28B591F69CEFD0D99E35F +C568550A5E11B32BD59BE83149B82FC840C99267AA84AF41FC56D1C4F7F6365B65DBED15163D55 +9A95630AF5005C7FEF23EE87208AAE88AB3CA22FEAF682088FB1F2F78027FDED141D161183FD67 +5E16ECE34A9664C1373C2793C35080519D0BBE2D9B98BEF67D2716B4036A25274B4370AD209164 +BEAC0BFFBCC3F6B2956AEF76143644485280FD50462B63F324A992F3A5B187321107BEC7A301C0 +4338312EA32DCABA2C13A6ADA387B668A45743B4D7C02F2BFFC69F49AFB429434EA529B04EB8B7 +4596D90FE74AE32F57CEC0433922B00236C189FFCD8A1FDD896CCC957DFA2EEABB23BD8E5A428F +FDC06F4F75C3222DC161472687547B173F632D15BACE92A07A0A71DCCE2B8EB739EFFEA173E57C +4DF651FA936221DABBDB3B8AE5C30D595C33DCFC485EF2721743A6957E26A79A97EFD24BE5AC7F +D6792166AD1F09A8590F5871E74B2215E9012BF05DC89BEF6A2FFBA06BC619A08B14D6679877A1 +10165E943223B0DDC672C591F26D6C865B78B59703C3C977FFD605CB241C35FA1FD928A4A4F11C +052EA00B2FC0CEAD4BD9041899EE135DE98A260518AC927508ADD78D7A6D8049C88B42241D25CA +5DF0550706C3671B2DB3D848C3B94CC77D7FC2D157E37B8D4780B6B7F3B04502F3167D8D5B99A4 +6B63151FA7FC1FE52BD66ACF20DB58A7A092623E63FF6F7C7D0001AB09059A5CB6D79504900589 +A349E8D19E76F6FBEA194D18CB6526691C7B66E219092FCB73A4F7807E6BFD82510687A50BFA3C +EEB4F8818B11A8B9F7B71676C5B44078996994DA808DC39D3CB6A66B476FA2ED6390B7181A591D +171DE548152A5CC5B71F5F9DCED5B648AEF57E2B3644909577EA607E49C8D0105DB7FC57FA1A2D +E0105EADBF35AA385C972F9CF07D379454FBFB1EAC4B573498C10B2E98C3FB6F1483A123237B96 +0BAA3A3CDC0E9327F0FCABF72E8AC7DB04E22CDAA0F6EE108564565AEAC4A4DA8328F30AA878DD +B35D6AB16FC49D928066ED24C583434447AFBE2E4D22848A516862207480EAF650624943925E0C +351A6407ABE0BF04E36C87BE715B11FE53B8A13AB4669B7B2238D0B295D60028D1111A5AFE23AC +E77C59415C466042B93790A8055FD8C39B262848BBCEE84DA425462871EA73BFC927DC4DAF9336 +E13B1BC99887E8C1D8721311B5396209A634F3A1F91D51EB7B28F0A827A50688ED60370F6BF3EC +A867BB995B125BAB4203DE9E26DFC0D3D8E91D3E749AA0407C6A74C86E98FDF8A314B201E1EE0C +98015360074379F70367DE7CEE75864C9789533ECEBE1323C12261A8622C5666C932177CFDCACD +2D494F1741EC983E51CE4E3A63AE6FD282DA64A32CC3B2F55549080C7A190BFDD2C2393C675DE4 +90C79A325DCC04D14E0445C218AAFA0E54A305A889DBE613D4F28FB08253892A0D673908479B87 +E9D8E13F467B7F9EBCD8E5E16D7CD3358C71CECCD08C6B8ACA8525657D37560BF2221F91258EF4 +E6B70118BD1CB1F4EB421C4C32C76437340EA398E22351CEA31D250E46F946D44D97C2B3DE06F8 +D8003381600E2E2C28AFBADC25DC94224AFAD0D7D951609BB2478C476085C01AA601F3AFFED544 +F251D5A49BD263D64F4FEFB0803F162BD5FE1082FA2949BA8987AFFA1D9A7A4EF28BFCAFFD3311 +0E1A1A2A22C76734DF6CC30E3C4662DFAFB32DF55DB12D138148435A6F7ADB4ACC4F4124EF772A +A63D5F65490E9763FFD66C6153F5B0FEF1A307D6A9753102CE51DA88E2EF7275FFFD2A7B4F81E9 +DF549938193AB7A58D5C237D669ACF27DFA35744F7622F8D54B5B54AA31D9403841D4C5D193D87 +E60622E18C2D7E333AD4CB2DB27DEE813D9902D17DD0F2D3BDC8B340DFE9C8D34B993CC2CC91BD +47B4861809902E11197967922FC625989AC6F4BA0D48166F3F4B6C6C47D3B9A932F3D47A8613F3 +6329406BF5ADEE519002394FB288D3A8AC3DCD5C37270AC7F5C5CDE46BE5C2A103FD468FEBC0F5 +180143DB4312076FB062CE88DC373B5F120C591B9C09B9E3E1B26F52A48339AE70F729BA02977A +B60666637D9FF9287DB4CC52BD5C7B2D4F038E5C927B97B54F611396E2211514A8684A02D5DB1F +DE728DB58AE1BB7253740349771118D2D33211D2ED7BBEB97BB4776666F6A2AC7B54A1E2DB79D2 +A9DE31745745CB39BDEE3E7CF425C27F86CFA89F825A09F9C7027E8DF7A773497690F328D22FF5 +A5CB2821623A570C29D03081E9DCE770F3E7F5B7377A1BC3F52B383EA0CB1C1BDC00E67AE90F72 +9DC77450407C0A9D0ECB2CE16C91CC3C7D487457800654F86BA7A8E26A25B78204CC7F58BBF69C +5C406BA012563A4379506C28A39538F9A5D57BD197443A02A9D3C67149D654FF12FC6E05612981 +7F7236BF90FA626FB91D49C48D824248EABD764EB3C20634D56BDC2E170A814567D278F7AFB96B +F6AEF216C0B42AAF85AE299752C50E6D2963FA5DB384FD110868D43DA804FDB9D0CA26BBC8CD72 +EFAC451FBAF4BB0B44C675DD4E0B4AD8D6149DAE44DC4EC36942CE1876C8602E3F97CD6E18BD0B +5BCCF7B1773619FC8AC3B3D4958F71E5D2C631C6B17EEE7ADCBA30CA0E30B538249113223FA987 +4D4B294563B9F42D9D259374F28A8D8A654F26D7BFD8667CCBC43F75B61C2F5CF8D7E06642E93D +76554642B7666B7905D6859F79DC080CB5574D03A072DB0D47AB82461DF6638C77234A3F97428F +D2FC973687786BCF1D2F65AABAF55C257914247AEA0B3AF17A867C0CF1E5A6883D68680343CC5F +3604DC8E1E7A9DAB9CFA316A14D4CF7A3A60CA56E947AE632762B2303C0EDAF9B3AA206191730D +18B522FCD29D036AA4E6540F6A0DA836638A2EACE334B232199F61B357B10F4322A1F58F249101 +CB1399E5E60483F12A6008F8FFB52709F34136D93902FE367A01419F79A4D4DEDBBAE63741526D +3D9EB7BFB4332C1775E2F0A05A4D7B203C2816F30081A67440D09D1FF94DDB3B7BB91B63703581 +A696ECEB393963FA9199AB61A3F449061E048FA2C1F91897C5A60A4D30D0C276DE88EA143BA4FC +545FFC8F0B0950A38AAD126D73DA6BBDBDB480C3AFF4D2C7657A33652D5728E1866DB82B8F1A8A +72235DAB477C38ECFCCD0CDBB77D30A0436FDDC1D70426C0C5B408A4ADD039CC2B5750B7BB5E07 +CC56039DB7FF3298151718E167CD482E88AE498B2D89C79C572FCE5ECEA3BBFE5603FD7AF6F4DF +2C06BD8EF8501B52E8CBFB5481CA45CBAE44D87D455DFB6F030FBC0938EDFF80592B68390452F2 +42584D9C529BBAA2615F9A493BDB3C4BCD99422B69FB658ADA813AE39E447151F9312A005AB210 +D9FFB508C7A036BFA34C7264CFC1B92929C7CD892CD8BE48D388545B8CE7A79F70D0F1B852625D +F331D75342E9EC57219DE4E61BFFEB066D82DC6256892E89B25BCE034F7F6FF09D7DC8ABBC8739 +3B70FDAB372D2FDFC51902A6E7FBE5DF3F41A91DAFA35D9A99A18DCD9E9D9050CA9D6FD417C9B8 +DE3C0648F8458BA2E0ABCEE10E759C97F019D1A1C8E1CC9EC8A6680C2566F42E478EB1F5706435 +16EBAF85E4F9E972BA3FA6D20B8BD1734229563A1ADA6D4D1857257EB760050F4FD997090653CA +7771430101EEE3BCA1EA8E5F230F1B54E25A50458A1F7EBC35AEC36A88E4E345EF4CD9F97978EC +E8F3C53ABD56FD3DB6C71206DEB0058509F24D0EB4C68BCFAD5A773EFD04F5472984000960F67E +261B9152A176B230EB447633653ED0CBD3F50B214773DB454E89625BE27B7B75C93330E1F782BE +EA101988B04AEF3601BA7FE868F614035647349D97F9F1AA598FD808885D91F5E24FE348015E46 +D80FCC9E62 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +%!PS-Adobe-2.0 +%%Version: 0.1 +%%Pages: (atend) +%%EndComments +% +% Version 3.3.2 prologue for troff files. +% + +/#copies 1 store +/aspectratio 1 def +/formsperpage 1 def +/landscape false def +/linewidth .3 def +/magnification 1 def +/margin 0 def +/orientation 0 def +/resolution 720 def +/rotation 1 def +/xoffset 0 def +/yoffset 0 def + +/roundpage true def +/useclippath true def +/pagebbox [0 0 612 792] def + +/R /Times-Roman def +/I /Times-Italic def +/B /Times-Bold def +/BI /Times-BoldItalic def +/H /Helvetica def +/HI /Helvetica-Oblique def +/HB /Helvetica-Bold def +/HX /Helvetica-BoldOblique def +/CW /Courier def +/CO /Courier def +/CI /Courier-Oblique def +/CB /Courier-Bold def +/CX /Courier-BoldOblique def +/PA /Palatino-Roman def +/PI /Palatino-Italic def +/PB /Palatino-Bold def +/PX /Palatino-BoldItalic def +/Hr /Helvetica-Narrow def +/Hi /Helvetica-Narrow-Oblique def +/Hb /Helvetica-Narrow-Bold def +/Hx /Helvetica-Narrow-BoldOblique def +/KR /Bookman-Light def +/KI /Bookman-LightItalic def +/KB /Bookman-Demi def +/KX /Bookman-DemiItalic def +/AR /AvantGarde-Book def +/AI /AvantGarde-BookOblique def +/AB /AvantGarde-Demi def +/AX /AvantGarde-DemiOblique def +/NR /NewCenturySchlbk-Roman def +/NI /NewCenturySchlbk-Italic def +/NB /NewCenturySchlbk-Bold def +/NX /NewCenturySchlbk-BoldItalic def +/ZD /ZapfDingbats def +/ZI /ZapfChancery-MediumItalic def +/S /S def +/S1 /S1 def +/GR /Symbol def + +/inch {72 mul} bind def +/min {2 copy gt {exch} if pop} bind def + +/show {{//show} 0 get exec} bind def % so later references don't bind +/widthshow {{//widthshow} 0 get exec} bind def +/stringwidth {{//stringwidth} 0 get exec} bind def + +/setup { + counttomark 2 idiv {def} repeat pop + + landscape {/orientation 90 orientation add def} if + /scaling 72 resolution div def + linewidth setlinewidth + 1 setlinecap + + pagedimensions + xcenter ycenter translate + orientation rotation mul rotate + width 2 div neg height 2 div translate + xoffset inch yoffset inch neg translate + margin 2 div dup neg translate + magnification dup aspectratio mul scale + scaling scaling scale + + addmetrics + 0 0 moveto +} def + +/pagedimensions { + useclippath userdict /gotpagebbox known not and { + /pagebbox [clippath pathbbox newpath] def + roundpage currentdict /roundpagebbox known and {roundpagebbox} if + } if + pagebbox aload pop + 4 -1 roll exch 4 1 roll 4 copy + landscape {4 2 roll} if + sub /width exch def + sub /height exch def + add 2 div /xcenter exch def + add 2 div /ycenter exch def + userdict /gotpagebbox true put +} def + +/addmetrics { + /Symbol /S null Sdefs cf + /Times-Roman /S1 StandardEncoding dup length array copy S1defs cf +} def + +/pagesetup { + /page exch def + currentdict /pagedict known currentdict page known and { + page load pagedict exch get cvx exec + } if +} def + +/decodingdefs [ + {counttomark 2 idiv {y moveto show} repeat} + {neg /y exch def counttomark 2 idiv {y moveto show} repeat} + {neg moveto {2 index stringwidth pop sub exch div 0 32 4 -1 roll widthshow} repeat} + {neg moveto {spacewidth sub 0.0 32 4 -1 roll widthshow} repeat} + {counttomark 2 idiv {y moveto show} repeat} + {neg setfunnytext} +] def + +/setdecoding {/t decodingdefs 3 -1 roll get bind def} bind def + +/w {neg moveto show} bind def +/m {neg dup /y exch def moveto} bind def +/done {/lastpage where {pop lastpage} if} def + +/f { + dup /font exch def findfont exch + dup /ptsize exch def scaling div dup /size exch def scalefont setfont + linewidth ptsize mul scaling 10 mul div setlinewidth + /spacewidth ( ) stringwidth pop def +} bind def + +/changefont { + /fontheight exch def + /fontslant exch def + currentfont [ + 1 0 + fontheight ptsize div fontslant sin mul fontslant cos div + fontheight ptsize div + 0 0 + ] makefont setfont +} bind def + +/sf {f} bind def + +/cf { + dup length 2 idiv + /entries exch def + /chtab exch def + /newencoding exch def + /newfont exch def + + findfont dup length 1 add dict + /newdict exch def + {1 index /FID ne {newdict 3 1 roll put}{pop pop} ifelse} forall + + newencoding type /arraytype eq {newdict /Encoding newencoding put} if + + newdict /Metrics entries dict put + newdict /Metrics get + begin + chtab aload pop + 1 1 entries {pop def} for + newfont newdict definefont pop + end +} bind def + +% +% A few arrays used to adjust reference points and character widths in some +% of the printer resident fonts. If square roots are too high try changing +% the lines describing /radical and /radicalex to, +% +% /radical [0 -75 550 0] +% /radicalex [-50 -75 500 0] +% +% Move braceleftbt a bit - default PostScript character is off a bit. +% + +/Sdefs [ + /bracketlefttp [201 500] + /bracketleftbt [201 500] + /bracketrighttp [-81 380] + /bracketrightbt [-83 380] + /braceleftbt [203 490] + /bracketrightex [220 -125 500 0] + /radical [0 0 550 0] + /radicalex [-50 0 500 0] + /parenleftex [-20 -170 0 0] + /integral [100 -50 500 0] + /infinity [10 -75 730 0] +] def + +/S1defs [ + /underscore [0 80 500 0] + /endash [7 90 650 0] +] def +% +% Tries to round clipping path dimensions, as stored in array pagebbox, so they +% match one of the known sizes in the papersizes array. Lower left coordinates +% are always set to 0. +% + +/roundpagebbox { + 7 dict begin + /papersizes [8.5 inch 11 inch 14 inch 17 inch] def + + /mappapersize { + /val exch def + /slop .5 inch def + /diff slop def + /j 0 def + 0 1 papersizes length 1 sub { + /i exch def + papersizes i get val sub abs + dup diff le {/diff exch def /j i def} {pop} ifelse + } for + diff slop lt {papersizes j get} {val} ifelse + } def + + pagebbox 0 0 put + pagebbox 1 0 put + pagebbox dup 2 get mappapersize 2 exch put + pagebbox dup 3 get mappapersize 3 exch put + end +} bind def + +%%EndProlog +%%BeginSetup +mark +% +% Encoding vector and redefinition of findfont for the ISO Latin1 standard. +% The 18 characters missing from ROM based fonts on older printers are noted +% below. +% + +/ISOLatin1Encoding [ + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /space + /exclam + /quotedbl + /numbersign + /dollar + /percent + /ampersand + /quoteright + /parenleft + /parenright + /asterisk + /plus + /comma + /minus + /period + /slash + /zero + /one + /two + /three + /four + /five + /six + /seven + /eight + /nine + /colon + /semicolon + /less + /equal + /greater + /question + /at + /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 + /bracketleft + /backslash + /bracketright + /asciicircum + /underscore + /quoteleft + /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 + /braceleft + /bar + /braceright + /asciitilde + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /dotlessi + /grave + /acute + /circumflex + /tilde + /macron + /breve + /dotaccent + /dieresis + /.notdef + /ring + /cedilla + /.notdef + /hungarumlaut + /ogonek + /caron + /space + /exclamdown + /cent + /sterling + /currency + /yen + /brokenbar % missing + /section + /dieresis + /copyright + /ordfeminine + /guillemotleft + /logicalnot + /hyphen + /registered + /macron + /degree % missing + /plusminus % missing + /twosuperior % missing + /threesuperior % missing + /acute + /mu % missing + /paragraph + /periodcentered + /cedilla + /onesuperior % missing + /ordmasculine + /guillemotright + /onequarter % missing + /onehalf % missing + /threequarters % missing + /questiondown + /Agrave + /Aacute + /Acircumflex + /Atilde + /Adieresis + /Aring + /AE + /Ccedilla + /Egrave + /Eacute + /Ecircumflex + /Edieresis + /Igrave + /Iacute + /Icircumflex + /Idieresis + /Eth % missing + /Ntilde + /Ograve + /Oacute + /Ocircumflex + /Otilde + /Odieresis + /multiply % missing + /Oslash + /Ugrave + /Uacute + /Ucircumflex + /Udieresis + /Yacute % missing + /Thorn % missing + /germandbls + /agrave + /aacute + /acircumflex + /atilde + /adieresis + /aring + /ae + /ccedilla + /egrave + /eacute + /ecircumflex + /edieresis + /igrave + /iacute + /icircumflex + /idieresis + /eth % missing + /ntilde + /ograve + /oacute + /ocircumflex + /otilde + /odieresis + /divide % missing + /oslash + /ugrave + /uacute + /ucircumflex + /udieresis + /yacute % missing + /thorn % missing + /ydieresis +] def + +/NewFontDirectory FontDirectory maxlength dict def + +% +% Apparently no guarantee findfont is defined in systemdict so the obvious +% +% systemdict /findfont get exec +% +% can generate an error. So far the only exception is a VT600 (version 48.0). +% + +userdict /@RealFindfont known not { + userdict begin + /@RealFindfont systemdict begin /findfont load end def + end +} if + +/findfont { + dup NewFontDirectory exch known not { + dup + %dup systemdict /findfont get exec % not always in systemdict + dup userdict /@RealFindfont get exec + dup /Encoding get StandardEncoding eq { + dup length dict begin + {1 index /FID ne {def}{pop pop} ifelse} forall + /Encoding ISOLatin1Encoding def + currentdict + end + /DummyFontName exch definefont + } if + NewFontDirectory 3 1 roll put + } if + NewFontDirectory exch get +} bind def + +%%Patch from lp +%%EndPatch from lp + +setup +%%EndSetup +%%Page: 1 1 +/saveobj save def +mark +1 pagesetup +12 /LucidaSans-Demi f +(8\275, the) 1953 1230 w +(Plan 9) 2425 1230 w +(Window System) 2841 1230 w +10 /LucidaSans-Italic f +(Rob Pike) 2674 1470 w +(rob@plan9.bell-labs.com) 2266 1590 w +(ABSTRACT) 2626 2030 w +10 /LucidaSansUnicode00 f +(The) 1330 2290 w +(Plan) 1547 2290 w +(9) 1784 2290 w +(window) 1884 2290 w +(system,) 2290 2290 w +(8\275,) 2699 2290 w +(is) 2911 2290 w +(a) 3028 2290 w +(modest-sized) 3120 2290 w +(program) 3832 2290 w +(of) 4285 2290 w +(novel) 4420 2290 w +(design.) 1080 2410 w +(It) 1505 2410 w +(provides) 1609 2410 w +(textual) 2063 2410 w +(I/O) 2438 2410 w +(and) 2636 2410 w +(bitmap) 2854 2410 w +(graphic) 3232 2410 w +(services) 3633 2410 w +(to) 4058 2410 w +(both) 4194 2410 w +(local) 4455 2410 w +(and remote client programs) 1080 2530 w +(by) 2464 2530 w +(offering) 2612 2530 w +(a) 3030 2530 w +(multiplexed) 3118 2530 w +(file) 3729 2530 w +(service) 3913 2530 w +(to) 4282 2530 w +(those) 4413 2530 w +(clients.) 1080 2650 w +(It) 1506 2650 w +(serves) 1619 2650 w +(traditional) 1973 2650 w +(UNIX) 2518 2650 w +(files) 2800 2650 w +(like) 3048 2650 w +10 /LucidaTypewriter f +(/dev/tty) 3266 2650 w +10 /LucidaSansUnicode00 f +(as) 3888 2650 w +(well) 4040 2650 w +(as) 4277 2650 w +(more) 4429 2650 w +(unusual) 1080 2770 w +(ones) 1504 2770 w +(that) 1775 2770 w +(provide) 2007 2770 w +(access) 2413 2770 w +(to) 2769 2770 w +(the) 2908 2770 w +(mouse) 3104 2770 w +(and) 3468 2770 w +(the) 3689 2770 w +(raw) 3885 2770 w +(screen.) 4100 2770 w +(Bit\255) 4523 2770 w +(map) 1080 2890 w +(graphics) 1394 2890 w +(operations) 1911 2890 w +(are) 2530 2890 w +(provided) 2785 2890 w +(by) 3315 2890 w +(serving) 3532 2890 w +(a) 3987 2890 w +(file) 4144 2890 w +(called) 4397 2890 w +10 /LucidaTypewriter f +(/dev/bitblt) 1080 3010 w +10 /LucidaSansUnicode00 f +(that) 1912 3010 w +(interprets) 2143 3010 w +(client) 2656 3010 w +(messages) 2961 3010 w +(to) 3477 3010 w +(perform) 3616 3010 w +(raster) 4049 3010 w +(opera\255) 4371 3010 w +(tions.) 1080 3130 w +(The) 1421 3130 w +(file) 1639 3130 w +(service) 1827 3130 w +(that) 2200 3130 w +(8\275) 2428 3130 w +(offers) 2608 3130 w +(its) 2928 3130 w +(clients) 3082 3130 w +(is) 3434 3130 w +(identical) 3550 3130 w +(to) 3997 3130 w +(that) 4131 3130 w +(it) 4358 3130 w +(uses) 4460 3130 w +(for) 1080 3250 w +(its) 1258 3250 w +(own) 1414 3250 w +(implementation,) 1653 3250 w +(so) 2486 3250 w +(it) 2637 3250 w +(is) 2742 3250 w +(fundamentally) 2861 3250 w +(no) 3592 3250 w +(more) 3755 3250 w +(than) 4046 3250 w +(a) 4302 3250 w +(multi\255) 4397 3250 w +(plexer.) 1080 3370 w +(This) 1507 3370 w +(architecture) 1769 3370 w +(has) 2403 3370 w +(some) 2627 3370 w +(rewarding) 2944 3370 w +(symmetries) 3486 3370 w +(and) 4101 3370 w +(can) 4337 3370 w +(be) 4561 3370 w +(implemented compactly.) 1080 3490 w +10 /LucidaSans-Demi f +(Introduction) 720 3850 w +10 /LucidaSansUnicode00 f +(In) 970 4006 w +(1989) 1094 4006 w +(I) 1379 4006 w +(constructed) 1441 4006 w +(a) 2046 4006 w +(toy) 2134 4006 w +(window) 2317 4006 w +(system) 2719 4006 w +(from) 3092 4006 w +(only) 3357 4006 w +(a) 3594 4006 w +(few) 3682 4006 w +(hundred) 3885 4006 w +(lines) 4327 4006 w +(of) 4587 4006 w +(source) 4718 4006 w +(code) 720 4126 w +(using) 1002 4126 w +(a) 1319 4126 w +(custom) 1424 4126 w +(language) 1829 4126 w +(and) 2322 4126 w +(an) 2552 4126 w +(unusual) 2719 4126 w +(architecture) 3152 4126 w +(involving) 3780 4126 w +(concurrent) 4268 4126 w +(pro\255) 4842 4126 w +(cesses) 720 4246 w +([Pike89].) 1084 4246 w +(Although) 1587 4246 w +(that) 2080 4246 w +(system) 2320 4246 w +(was) 2709 4246 w +(rudimentary) 2941 4246 w +(at) 3581 4246 w +(best,) 3722 4246 w +(it) 4010 4246 w +(demonstrated) 4125 4246 w +(that) 4849 4246 w +(window) 720 4366 w +(systems) 1127 4366 w +(are) 1556 4366 w +(not) 1746 4366 w +(inherently) 1944 4366 w +(complicated.) 2468 4366 w +(The) 3158 4366 w +(following) 3377 4366 w +(year,) 3862 4366 w +(for) 4136 4366 w +(the) 4313 4366 w +(new) 4506 4366 w +(Plan) 4739 4366 w +(9) 4977 4366 w +(distributed) 720 4486 w +(system) 1285 4486 w +([Pike92],) 1659 4486 w +(I) 2115 4486 w +(applied) 2178 4486 w +(some) 2570 4486 w +(of) 2865 4486 w +(the) 2997 4486 w +(lessons) 3187 4486 w +(from) 3583 4486 w +(that) 3850 4486 w +(toy) 4076 4486 w +(project) 4261 4486 w +(to) 4635 4486 w +(write,) 4768 4486 w +(in) 720 4606 w +(C,) 848 4606 w +(a) 986 4606 w +(production-quality) 1078 4606 w +(window) 2030 4606 w +(system) 2435 4606 w +(called) 2811 4606 w +(8\275.) 3130 4606 w +(8\275) 3373 4606 w +(provides,) 3552 4606 w +(on) 4036 4606 w +(black-and-white,) 4195 4606 w +(grey-scale,) 720 4726 w +(or) 1300 4726 w +(color) 1440 4726 w +(displays,) 1721 4726 w +(the) 2184 4726 w +(services) 2377 4726 w +(required) 2802 4726 w +(of) 3251 4726 w +(a) 3387 4726 w +(modern) 3480 4726 w +(window) 3894 4726 w +(system,) 4301 4726 w +(includ\255) 4711 4726 w +(ing) 720 4846 w +(programmability) 910 4846 w +(and) 1750 4846 w +(support) 1967 4846 w +(for) 2382 4846 w +(remote) 2558 4846 w +(graphics.) 2939 4846 w +(The) 3454 4846 w +(entire) 3672 4846 w +(system,) 3990 4846 w +(including) 4399 4846 w +(the) 4885 4846 w +(default) 720 4966 w +(program) 1099 4966 w +(that) 1555 4966 w +(runs) 1786 4966 w +(in) 2042 4966 w +(the) 2173 4966 w +(window) 2368 4966 w +10 /LucidaSansUnicode20 f +(\024) 2777 4966 w +10 /LucidaSansUnicode00 f +(the) 2918 4966 w +(equivalent) 3114 4966 w +(of) 3656 4966 w +10 /LucidaTypewriter f +(xterm) 3795 4966 w +10 /LucidaSansUnicode00 f +([Far89]) 4196 4966 w +(with) 4579 4966 w +10 /LucidaSansUnicode20 f +(\030) 4825 4966 w +10 /LucidaSansUnicode00 f +(cut\255) 4857 4966 w +(ting) 720 5086 w +(and) 952 5086 w +(pasting) 1174 5086 w +10 /LucidaSansUnicode20 f +(\031) 1533 5086 w +10 /LucidaSansUnicode00 f +(between) 1606 5086 w +(windows) 2054 5086 w +10 /LucidaSansUnicode20 f +(\024) 2515 5086 w +10 /LucidaSansUnicode00 f +(is) 2656 5086 w +(well) 2777 5086 w +(under) 3009 5086 w +(90) 3334 5086 w +(kilobytes) 3501 5086 w +(of) 3978 5086 w +(text) 4117 5086 w +(on) 4349 5086 w +(a) 4513 5086 w +(Motorola) 4609 5086 w +(68020 processor,) 720 5206 w +(about) 1608 5206 w +(half) 1919 5206 w +(the) 2135 5206 w +(size) 2323 5206 w +(of) 2549 5206 w +(the) 2680 5206 w +(operating) 2868 5206 w +(system) 3367 5206 w +(kernel) 3740 5206 w +(that) 4075 5206 w +(supports) 4299 5206 w +(it) 4761 5206 w +(and) 4860 5206 w +(a tenth the size of the X server [Sche86]) 720 5326 w +10 /LucidaSans-Italic f +(without) 2693 5326 w +10 /LucidaTypewriter f +(xterm) 3089 5326 w +10 /LucidaSansUnicode00 f +(.) 3449 5326 w +(What) 970 5482 w +(makes) 1244 5482 w +(8\275) 1591 5482 w +(so) 1768 5482 w +(compact?) 1914 5482 w +(Much) 2433 5482 w +(of) 2728 5482 w +(the) 2860 5482 w +(saving) 3049 5482 w +(comes) 3395 5482 w +(from) 3742 5482 w +(overall) 4009 5482 w +(simplicity:) 4367 5482 w +(8\275) 4897 5482 w +(has) 720 5602 w +(little) 924 5602 w +(graphical) 1177 5602 w +(fanciness,) 1660 5602 w +(a) 2182 5602 w +(concise) 2272 5602 w +(programming) 2668 5602 w +(interface,) 3365 5602 w +(and) 3856 5602 w +(a) 4071 5602 w +(simple,) 4161 5602 w +(fixed) 4549 5602 w +(user) 4830 5602 w +(interface.) 720 5722 w +(8\275) 1256 5722 w +(also) 1447 5722 w +(makes) 1691 5722 w +(some) 2052 5722 w +(decisions) 2361 5722 w +(by) 2862 5722 w +(fiat) 3026 5722 w +10 /LucidaSansUnicode20 f +(\024) 3233 5722 w +10 /LucidaSansUnicode00 f +(three-button) 3382 5722 w +(mouse,) 4063 5722 w +(overlapping) 4467 5722 w +(windows,) 720 5842 w +(built-in) 1215 5842 w +(terminal) 1627 5842 w +(program) 2072 5842 w +(and) 2531 5842 w +(window) 2754 5842 w +(manager,) 3166 5842 w +(etc.) 3665 5842 w +10 /LucidaSansUnicode20 f +(\024) 3883 5842 w +10 /LucidaSansUnicode00 f +(rather) 4025 5842 w +(than) 4359 5842 w +(trying) 4617 5842 w +(to) 4942 5842 w +(appeal) 720 5962 w +(to) 1077 5962 w +(all) 1211 5962 w +(tastes.) 1360 5962 w +(Although) 1747 5962 w +(compact,) 2227 5962 w +(8\275) 2706 5962 w +(is) 2885 5962 w +(not) 3002 5962 w +(ascetic.) 3199 5962 w +(It) 3630 5962 w +(provides) 3733 5962 w +(the) 4186 5962 w +(fundamentals) 4378 5962 w +(and) 720 6082 w +(enough) 943 6082 w +(extras) 1350 6082 w +(to) 1693 6082 w +(make) 1833 6082 w +(them) 2137 6082 w +(comfortable) 2427 6082 w +(to) 3053 6082 w +(use.) 3193 6082 w +(The) 3468 6082 w +(most) 3691 6082 w +(important) 3975 6082 w +(contributor) 4495 6082 w +(to) 720 6202 w +(its) 865 6202 w +(small) 1030 6202 w +(size,) 1335 6202 w +(though,) 1608 6202 w +(is) 2034 6202 w +(its) 2162 6202 w +(overall) 2327 6202 w +(design) 2698 6202 w +(as) 3069 6202 w +(a) 3223 6202 w +(file) 3326 6202 w +(server.) 3525 6202 w +(This) 3934 6202 w +(structure) 4187 6202 w +(may) 4673 6202 w +(be) 4921 6202 w +(applicable to window systems on traditional UNIX-like operating systems.) 720 6322 w +(The) 970 6478 w +(small) 1199 6478 w +(size) 1504 6478 w +(of) 1745 6478 w +(8\275) 1891 6478 w +(does) 2082 6478 w +(not) 2361 6478 w +(reflect) 2569 6478 w +(reduced) 2924 6478 w +(functionality:) 3364 6478 w +(8\275) 4047 6478 w +(provides) 4239 6478 w +(service) 4704 6478 w +(roughly) 720 6598 w +(equivalent) 1130 6598 w +(to) 1671 6598 w +(the) 1809 6598 w +(X) 2004 6598 w +(window) 2107 6598 w +(system.) 2516 6598 w +(8\275) 2960 6598 w +10 /LucidaSansUnicode20 f +(\031) 3103 6598 w +10 /LucidaSansUnicode00 f +(s) 3135 6598 w +(clients) 3226 6598 w +(may) 3581 6598 w +(of) 3821 6598 w +(course) 3959 6598 w +(be) 4321 6598 w +(as) 4480 6598 w +(complex) 4626 6598 w +(as they choose, although the tendency to mimic 8\275) 720 6718 w +10 /LucidaSansUnicode20 f +(\031) 3223 6718 w +10 /LucidaSansUnicode00 f +(s design and the clean) 3255 6718 w +(programming) 4378 6718 w +(interface means they are not nearly as bloated as X applications.) 720 6838 w +8 /S1 f +(__________________) 720 6938 w +8 /LucidaSansUnicode00 f +(Originally) 720 7038 w +(appeared,) 1135 7038 w +(in) 1564 7038 w +(a) 1679 7038 w +(slightly) 1765 7038 w +(different) 2089 7038 w +(form,) 2467 7038 w +(in) 2721 7038 w +8 /LucidaSans-Italic f +(Proc.) 2836 7038 w +(of) 3074 7038 w +(the) 3192 7038 w +(Summer) 3356 7038 w +(1991) 3720 7038 w +(USENIX) 3962 7038 w +(Conf.,) 4279 7038 w +8 /LucidaSansUnicode00 f +(pp.) 4554 7038 w +(257-265,) 720 7138 w +(Nashville.) 1118 7138 w +(Note) 1546 7138 w +(that) 1755 7138 w +8 /LucidaTypewriter f +(8\275) 1935 7138 w +8 /LucidaSansUnicode00 f +(has) 2077 7138 w +(been) 2238 7138 w +(replaced) 2454 7138 w +(by) 2811 7138 w +8 /LucidaTypewriter f +(rio) 2929 7138 w +8 /LucidaSansUnicode00 f +(\(see) 3129 7138 w +8 /LucidaSans-Italic f +(rio) 3312 7138 w +8 /LucidaSansUnicode00 f +(\(1\)\).) 3419 7138 w +cleartomark +showpage +saveobj restore +%%EndPage: 1 1 +%%Page: 2 2 +/saveobj save def +mark +2 pagesetup +10 /LucidaSansUnicode00 f +(\255 2 \255) 2783 480 w +10 /LucidaSans-Demi f +(User's Model) 720 840 w +10 /LucidaSansUnicode00 f +(8\275) 970 996 w +(turns) 1153 996 w +(the) 1446 996 w +(single) 1641 996 w +(screen,) 1970 996 w +(mouse,) 2359 996 w +(and) 2754 996 w +(keyboard) 2974 996 w +(of) 3463 996 w +(the) 3601 996 w +(terminal) 3797 996 w +(\(in) 4240 996 w +(Plan) 4405 996 w +(9) 4647 996 w +(termi\255) 4751 996 w +(nology\)) 720 1116 w +(or) 1119 1116 w +(workstation) 1260 1116 w +(\(in) 1868 1116 w +(commercial) 2031 1116 w +(terminology\)) 2629 1116 w +(into) 3284 1116 w +(an) 3512 1116 w +(array) 3668 1116 w +(of) 3951 1116 w +(independent) 4088 1116 w +(virtual) 4735 1116 w +(terminals that may be textual terminals supporting a shell and) 720 1236 w +(the) 3787 1236 w +(usual) 3975 1236 w +(suite) 4267 1236 w +(of) 4535 1236 w +(tools) 4666 1236 w +(or) 4938 1236 w +(graphical) 720 1356 w +(applications) 1217 1356 w +(using) 1851 1356 w +(the) 2166 1356 w +(full) 2370 1356 w +(power) 2576 1356 w +(of) 2923 1356 w +(the) 3070 1356 w +(bitmap) 3274 1356 w +(screen) 3663 1356 w +(and) 4029 1356 w +(mouse.) 4258 1356 w +(Text) 4694 1356 w +(is) 4960 1356 w +(represented) 720 1476 w +(in) 1337 1476 w +(UTF,) 1463 1476 w +(an) 1716 1476 w +(encoding) 1868 1476 w +(of) 2349 1476 w +(the) 2483 1476 w +(Unicode) 2674 1476 w +(Standard) 3101 1476 w +([Pike93].) 3567 1476 w +(The) 4057 1476 w +(entire) 4274 1476 w +(program\255) 4591 1476 w +(ming interface is provided through reading and writing files in) 720 1596 w +10 /LucidaTypewriter f +(/dev) 3783 1596 w +10 /LucidaSansUnicode00 f +(.) 4071 1596 w +(Primarily) 970 1752 w +(for) 1434 1752 w +(reasons) 1613 1752 w +(of) 2030 1752 w +(history) 2168 1752 w +(and) 2541 1752 w +(familiarity,) 2762 1752 w +(the) 3321 1752 w +(general) 3517 1752 w +(model) 3919 1752 w +(and) 4262 1752 w +(appearance) 4483 1752 w +(of) 720 1872 w +(8\275) 856 1872 w +(are) 1037 1872 w +(similar) 1227 1872 w +(to) 1592 1872 w +(those) 1728 1872 w +(of) 2033 1872 w +10 /LucidaTypewriter f +(mux) 2169 1872 w +10 /LucidaSansUnicode00 f +([Pike88].) 2423 1872 w +(The) 2915 1872 w +(right) 3134 1872 w +(button) 3402 1872 w +(has) 3761 1872 w +(a) 3966 1872 w +(short) 4058 1872 w +(menu) 4347 1872 w +(for) 4657 1872 w +(con\255) 4833 1872 w +(trolling) 720 1992 w +(window) 1103 1992 w +(creation,) 1505 1992 w +(destruction,) 1963 1992 w +(and) 2579 1992 w +(placement.) 2793 1992 w +(When) 3393 1992 w +(a) 3693 1992 w +(window) 3782 1992 w +(is) 4185 1992 w +(created,) 4299 1992 w +(it) 4724 1992 w +(runs) 4824 1992 w +(the) 720 2112 w +(default) 920 2112 w +(shell,) 1304 2112 w +10 /LucidaTypewriter f +(rc) 1608 2112 w +10 /LucidaSansUnicode00 f +([Duff90],) 1797 2112 w +(with) 2277 2112 w +(standard) 2527 2112 w +(input) 2999 2112 w +(and) 3297 2112 w +(output) 3522 2112 w +(directed) 3889 2112 w +(to) 4330 2112 w +(the) 4472 2112 w +(window) 4671 2112 w +(and) 720 2232 w +(accessible) 944 2232 w +(through) 1480 2232 w +(the) 1911 2232 w +(file) 2111 2232 w +10 /LucidaTypewriter f +(/dev/cons) 2307 2232 w +10 /LucidaSansUnicode00 f +(\() 3000 2232 w +10 /LucidaSansUnicode20 f +(\030) 3033 2232 w +10 /LucidaSansUnicode00 f +(console) 3065 2232 w +10 /LucidaSansUnicode20 f +(\031) 3436 2232 w +10 /LucidaSansUnicode00 f +(\),) 3468 2232 w +(analogous) 3578 2232 w +(to) 4121 2232 w +(the) 4264 2232 w +10 /LucidaTypewriter f +(/dev/tty) 4464 2232 w +10 /LucidaSansUnicode00 f +(of) 720 2352 w +(UNIX.) 857 2352 w +(The) 1195 2352 w +(name) 1415 2352 w +(change) 1720 2352 w +(represents) 2107 2352 w +(a) 2659 2352 w +(break) 2752 2352 w +(with) 3063 2352 w +(the) 3306 2352 w +(past:) 3499 2352 w +(Plan) 3775 2352 w +(9) 4014 2352 w +(does) 4115 2352 w +(not) 4384 2352 w +(provide) 4582 2352 w +(a) 4985 2352 w +(Teletype-style) 720 2472 w +(model) 1463 2472 w +(of) 1813 2472 w +(terminals.) 1959 2472 w +(8\275) 2524 2472 w +(provides) 2715 2472 w +(the) 3180 2472 w +(only) 3384 2472 w +(way) 3637 2472 w +(most) 3870 2472 w +(users) 4161 2472 w +(ever) 4471 2472 w +(access) 4725 2472 w +(Plan 9.) 720 2592 w +(Graphical) 970 2748 w +(applications,) 1470 2748 w +(like) 2130 2748 w +(ordinary) 2345 2748 w +(programs,) 2792 2748 w +(may) 3334 2748 w +(be) 3577 2748 w +(run) 3739 2748 w +(by) 3947 2748 w +(typing) 4105 2748 w +(their) 4454 2748 w +(names) 4723 2748 w +(to) 720 2868 w +(the) 856 2868 w +(shell) 1049 2868 w +(running) 1314 2868 w +(in) 1732 2868 w +(a) 1861 2868 w +(window.) 1954 2868 w +(This) 2425 2868 w +(runs) 2668 2868 w +(the) 2922 2868 w +(application) 3115 2868 w +(in) 3687 2868 w +(the) 3816 2868 w +(same) 4009 2868 w +(window;) 4302 2868 w +(to) 4740 2868 w +(run) 4875 2868 w +(the) 720 2988 w +(application) 911 2988 w +(in) 1481 2988 w +(a) 1608 2988 w +(new) 1699 2988 w +(window) 1930 2988 w +(one) 2335 2988 w +(may) 2550 2988 w +(use) 2787 2988 w +(an) 2993 2988 w +(external) 3147 2988 w +(program,) 3581 2988 w +10 /LucidaTypewriter f +(window) 4066 2988 w +10 /LucidaSansUnicode00 f +(,) 4498 2988 w +(described) 4567 2988 w +(below.) 720 3108 w +(For) 1112 3108 w +(graphical) 1310 3108 w +(applications,) 1799 3108 w +(the) 2458 3108 w +(virtual) 2655 3108 w +(terminal) 3002 3108 w +(model) 3446 3108 w +(is) 3790 3108 w +(extended) 3912 3108 w +(somewhat) 4408 3108 w +(to) 4942 3108 w +(allow) 720 3228 w +(programs) 1005 3228 w +(to) 1506 3228 w +(perform) 1639 3228 w +(graphical) 2066 3228 w +(operations,) 2548 3228 w +(access) 3131 3228 w +(the) 3481 3228 w +(mouse,) 3671 3228 w +(and) 4061 3228 w +(perform) 4276 3228 w +(related) 4703 3228 w +(functions) 720 3348 w +(by) 1205 3348 w +(reading) 1353 3348 w +(and) 1754 3348 w +(writing) 1967 3348 w +(files) 2337 3348 w +(with) 2572 3348 w +(suggestive) 2810 3348 w +(names) 3361 3348 w +(such) 3711 3348 w +(as) 3970 3348 w +10 /LucidaTypewriter f +(/dev/mouse) 4108 3348 w +10 /LucidaSansUnicode00 f +(and) 4860 3348 w +10 /LucidaTypewriter f +(/dev/window) 720 3468 w +10 /LucidaSansUnicode00 f +(multiplexed) 1550 3468 w +(per-window) 2166 3468 w +(much) 2791 3468 w +(like) 3097 3468 w +10 /LucidaTypewriter f +(/dev/cons) 3307 3468 w +10 /LucidaSansUnicode00 f +(.) 3955 3468 w +(The) 4058 3468 w +(implementation) 4278 3468 w +(and semantics of these files, described below, is central to the structure of 8\275.) 720 3588 w +(The) 970 3744 w +(default) 1201 3744 w +(program) 1590 3744 w +(that) 2056 3744 w +(runs) 2297 3744 w +(in) 2563 3744 w +(a) 2704 3744 w +(window) 2809 3744 w +(is) 3228 3744 w +(familiar) 3358 3744 w +(to) 3776 3744 w +(users) 3924 3744 w +(of) 4235 3744 w +(Blit) 4383 3744 w +(terminals) 4587 3744 w +([Pike83].) 720 3864 w +(It) 1221 3864 w +(is) 1334 3864 w +(very) 1460 3864 w +(similar) 1707 3864 w +(to) 2080 3864 w +(that) 2224 3864 w +(of) 2461 3864 w +10 /LucidaTypewriter f +(mux) 2605 3864 w +10 /LucidaSansUnicode00 f +([Pike88],) 2867 3864 w +(providing) 3335 3864 w +(mouse-based) 3843 3864 w +(editing) 4558 3864 w +(of) 4942 3864 w +(input) 720 3984 w +(and) 1010 3984 w +(output) 1227 3984 w +(text,) 1586 3984 w +(the) 1847 3984 w +(ability) 2040 3984 w +(to) 2372 3984 w +(scroll) 2508 3984 w +(back) 2808 3984 w +(to) 3073 3984 w +(see) 3209 3984 w +(earlier) 3410 3984 w +(output,) 3755 3984 w +(and) 4147 3984 w +(so) 4365 3984 w +(on.) 4515 3984 w +(It) 4740 3984 w +(also) 4844 3984 w +(has) 720 4104 w +(a) 931 4104 w +(new) 1028 4104 w +(feature,) 1265 4104 w +(toggled) 1683 4104 w +(by) 2095 4104 w +(typing) 2252 4104 w +(ESC,) 2599 4104 w +(that) 2850 4104 w +(enables) 3083 4104 w +(the) 3497 4104 w +(user) 3694 4104 w +(to) 3946 4104 w +(control) 4086 4104 w +(when) 4470 4104 w +(typed) 4769 4104 w +(characters) 720 4224 w +(may) 1263 4224 w +(be) 1506 4224 w +(read) 1668 4224 w +(by) 1926 4224 w +(the) 2084 4224 w +(shell) 2282 4224 w +(or) 2552 4224 w +(application,) 2697 4224 w +(instead) 3306 4224 w +(of) 3702 4224 w +(\(for) 3843 4224 w +(example\)) 4058 4224 w +(after) 4547 4224 w +(each) 4816 4224 w +(newline.) 720 4344 w +(This) 1195 4344 w +(feature) 1440 4344 w +(makes) 1824 4344 w +(the) 2177 4344 w +(window) 2372 4344 w +(program) 2781 4344 w +(directly) 3237 4344 w +(useful) 3635 4344 w +(for) 3972 4344 w +(many) 4151 4344 w +(text-editing) 4453 4344 w +(tasks such as composing mail messages before sending them.) 720 4464 w +10 /LucidaSans-Demi f +(Plan 9 and 8\275) 720 4704 w +10 /LucidaSansUnicode00 f +(Plan 9 is a distributed system that provides support for UNIX-like applications) 970 4860 w +(in) 4799 4860 w +(an) 4923 4860 w +(environment) 720 4980 w +(built) 1372 4980 w +(from) 1633 4980 w +(distinct) 1906 4980 w +(CPU) 2306 4980 w +(servers,) 2540 4980 w +(file) 2961 4980 w +(servers,) 3153 4980 w +(and) 3574 4980 w +(terminals) 3795 4980 w +(connected) 4289 4980 w +(by) 4829 4980 w +(a) 4985 4980 w +(variety) 720 5100 w +(of) 1099 5100 w +(networks) 1254 5100 w +([Pike90].) 1754 5100 w +(The) 2265 5100 w +(terminals) 2503 5100 w +(are) 3013 5100 w +(comparable) 3222 5100 w +(to) 3846 5100 w +(modest) 4001 5100 w +(workstations) 4420 5100 w +(that,) 720 5220 w +(once) 984 5220 w +(connected) 1255 5220 w +(to) 1795 5220 w +(a) 1934 5220 w +(file) 2030 5220 w +(server) 2222 5220 w +(over) 2560 5220 w +(a) 2811 5220 w +(medium-bandwidth) 2907 5220 w +(network) 3913 5220 w +(such) 4345 5220 w +(as) 4611 5220 w +(Ether\255) 4757 5220 w +(net,) 720 5340 w +(are) 943 5340 w +(self-sufficient) 1131 5340 w +(computers) 1849 5340 w +(running) 2401 5340 w +(a) 2818 5340 w +(full) 2910 5340 w +(operating) 3104 5340 w +(system.) 3607 5340 w +(Unlike) 4048 5340 w +(workstations,) 4388 5340 w +(however,) 720 5460 w +(their) 1192 5460 w +(role) 1452 5460 w +(is) 1674 5460 w +(just) 1789 5460 w +(to) 2004 5460 w +(provide) 2137 5460 w +(an) 2537 5460 w +(affordable) 2689 5460 w +(multiplexed) 3220 5460 w +(user) 3832 5460 w +(interface) 4076 5460 w +(to) 4534 5460 w +(the) 4666 5460 w +(rest) 4855 5460 w +(of) 720 5580 w +(the) 853 5580 w +(system:) 1043 5580 w +(they) 1450 5580 w +(run) 1692 5580 w +(the) 1892 5580 w +(window) 2082 5580 w +(system) 2486 5580 w +(and) 2861 5580 w +(support) 3076 5580 w +(simple) 3489 5580 w +(interactive) 3845 5580 w +(tasks) 4385 5580 w +(such) 4672 5580 w +(as) 4934 5580 w +(text) 720 5700 w +(editing.) 949 5700 w +(Thus) 1389 5700 w +(they) 1664 5700 w +(lie) 1908 5700 w +(somewhere) 2059 5700 w +(between) 2649 5700 w +(workstations) 3093 5700 w +(and) 3750 5700 w +(X) 3967 5700 w +(terminals) 4067 5700 w +(in) 4557 5700 w +(design,) 4685 5700 w +(cost, performance,) 720 5820 w +(and) 1665 5820 w +(function.) 1878 5820 w +(\(The) 2376 5820 w +(terminals) 2623 5820 w +(can) 3109 5820 w +(be) 3310 5820 w +(used) 3462 5820 w +(for) 3727 5820 w +(general) 3899 5820 w +(computing,) 4293 5820 w +(but) 4878 5820 w +(in) 720 5940 w +(practice) 857 5940 w +(Plan) 1286 5940 w +(9) 1533 5940 w +(users) 1642 5940 w +(do) 1949 5940 w +(their) 2119 5940 w +(computing) 2390 5940 w +(on) 2956 5940 w +(the) 3125 5940 w +(CPU) 3326 5940 w +(servers.\)) 3565 5940 w +(The) 4056 5940 w +(Plan) 4283 5940 w +(9) 4530 5940 w +(terminal) 4638 5940 w +(software,) 720 6060 w +(including) 1214 6060 w +(8\275,) 1710 6060 w +(was) 1932 6060 w +(developed) 2162 6060 w +(on) 2708 6060 w +(a) 2878 6060 w +(68020-based) 2981 6060 w +(machine) 3690 6060 w +(called) 4146 6060 w +(a) 4477 6060 w +(Gnot) 4580 6060 w +(and) 4860 6060 w +(has) 720 6180 w +(been) 945 6180 w +(ported) 1239 6180 w +(to) 1617 6180 w +(the) 1772 6180 w +(NeXTstation,) 1984 6180 w +(the) 2661 6180 w +(MIPS) 2873 6180 w +(Magnum) 3154 6180 w +(3000,) 3630 6180 w +(SGI) 3970 6180 w +(Indigos,) 4181 6180 w +(and) 4626 6180 w +(Sun) 4862 6180 w +(SPARCstations) 720 6300 w +10 /LucidaSansUnicode20 f +(\024) 1413 6300 w +10 /LucidaSansUnicode00 f +(all small workstations that we use as terminals) 1513 6300 w +10 /LucidaSansUnicode20 f +(\024) 3779 6300 w +10 /LucidaSansUnicode00 f +(as well as PCs.) 3879 6300 w +(Heavy) 970 6456 w +(computations) 1301 6456 w +(such) 2005 6456 w +(as) 2273 6456 w +(compilation,) 2421 6456 w +(text) 3065 6456 w +(processing,) 3298 6456 w +(or) 3899 6456 w +(scientific) 4044 6456 w +(calculation) 4519 6456 w +(are) 720 6576 w +(done) 908 6576 w +(on) 1186 6576 w +(the) 1344 6576 w +(CPU) 1534 6576 w +(servers,) 1762 6576 w +(which) 2177 6576 w +(are) 2493 6576 w +(connected) 2680 6576 w +(to) 3214 6576 w +(the) 3347 6576 w +(file) 3537 6576 w +(servers) 3723 6576 w +(by) 4106 6576 w +(high-bandwidth) 4256 6576 w +(networks.) 720 6696 w +(For) 1263 6696 w +(interactive) 1455 6696 w +(work,) 1996 6696 w +(these) 2301 6696 w +(computations) 2599 6696 w +(can) 3297 6696 w +(access) 3501 6696 w +(the) 3852 6696 w +(terminal) 4044 6696 w +(that) 4483 6696 w +(instan\255) 4711 6696 w +(tiated) 720 6816 w +(them.) 1032 6816 w +(The) 1379 6816 w +(terminal) 1595 6816 w +(and) 2032 6816 w +(CPU) 2246 6816 w +(server) 2473 6816 w +(being) 2804 6816 w +(used) 3110 6816 w +(by) 3376 6816 w +(a) 3525 6816 w +(particular) 3614 6816 w +(user) 4111 6816 w +(are) 4355 6816 w +(connected) 4541 6816 w +(to) 720 6936 w +(the) 857 6936 w +(same) 1051 6936 w +(file) 1345 6936 w +(server,) 1536 6936 w +(although) 1905 6936 w +(over) 2375 6936 w +(different) 2625 6936 w +(networks;) 3083 6936 w +(Plan) 3598 6936 w +(9) 3839 6936 w +(provides) 3942 6936 w +(a) 4398 6936 w +(view) 4493 6936 w +(of) 4747 6936 w +(the) 4885 6936 w +(file server that is independent of location in the network.) 720 7056 w +(The) 970 7212 w +(components) 1206 7212 w +(of) 1858 7212 w +(Plan) 2011 7212 w +(9) 2267 7212 w +(are) 2385 7212 w +(connected) 2592 7212 w +(by) 3146 7212 w +(a) 3316 7212 w +(common) 3426 7212 w +(protocol) 3902 7212 w +(based) 4362 7212 w +(on) 4706 7212 w +(the) 4885 7212 w +cleartomark +showpage +saveobj restore +%%EndPage: 2 2 +%%Page: 3 3 +/saveobj save def +mark +3 pagesetup +10 /LucidaSansUnicode00 f +(\255 3 \255) 2783 480 w +(sharing) 720 840 w +(of) 1118 840 w +(files.) 1252 840 w +(All) 1554 840 w +(resources) 1717 840 w +(in) 2223 840 w +(the) 2350 840 w +(network) 2541 840 w +(are) 2969 840 w +(implemented) 3157 840 w +(as) 3830 840 w +(file) 3972 840 w +(servers;) 4158 840 w +(programs) 4573 840 w +(that) 720 960 w +(wish) 962 960 w +(to) 1232 960 w +(access) 1381 960 w +(them) 1747 960 w +(connect) 2046 960 w +(to) 2477 960 w +(them) 2627 960 w +(over) 2927 960 w +(the) 3189 960 w +(network) 3396 960 w +(and) 3840 960 w +(communicate) 4072 960 w +(using) 4774 960 w +(ordinary) 720 1080 w +(file) 1183 1080 w +(operations.) 1393 1080 w +(An) 2032 1080 w +(unusual) 2222 1080 w +(aspect) 2663 1080 w +(of) 3034 1080 w +(Plan) 3190 1080 w +(9) 3449 1080 w +(is) 3570 1080 w +(that) 3708 1080 w +(the) 3957 1080 w +10 /LucidaSans-Italic f +(name) 4170 1080 w +(space) 4497 1080 w +10 /LucidaSansUnicode00 f +(of) 4829 1080 w +(a) 4985 1080 w +(process,) 720 1200 w +(the) 1162 1200 w +(set) 1353 1200 w +(of) 1533 1200 w +(files) 1667 1200 w +(that) 1905 1200 w +(can) 2132 1200 w +(be) 2336 1200 w +(accessed) 2491 1200 w +(by) 2961 1200 w +(name) 3112 1200 w +(\(for) 3414 1200 w +(example) 3622 1200 w +(by) 4071 1200 w +(an) 4222 1200 w +10 /LucidaTypewriter f +(open) 4375 1200 w +10 /LucidaSansUnicode00 f +(system) 4700 1200 w +(call\)) 720 1320 w +(is) 964 1320 w +(not) 1091 1320 w +(global) 1298 1320 w +(to) 1644 1320 w +(all) 1789 1320 w +(processes) 1949 1320 w +(on) 2476 1320 w +(a) 2645 1320 w +(machine;) 2746 1320 w +(distinct) 3232 1320 w +(processes) 3637 1320 w +(may) 4164 1320 w +(have) 4410 1320 w +(distinct) 4681 1320 w +(name spaces.) 720 1440 w +(The system provides methods by which processes may) 1441 1440 w +(change) 4135 1440 w +(their) 4516 1440 w +(name) 4774 1440 w +(spaces,) 720 1560 w +(such) 1126 1560 w +(as) 1399 1560 w +(the) 1552 1560 w +(ability) 1754 1560 w +(to) 2095 1560 w +10 /LucidaSans-Italic f +(mount) 2240 1560 w +10 /LucidaSansUnicode00 f +(a) 2598 1560 w +(service) 2699 1560 w +(upon) 3081 1560 w +(an) 3375 1560 w +(existing) 3538 1560 w +(directory,) 3971 1560 w +(making) 4480 1560 w +(the) 4885 1560 w +(files) 720 1680 w +(of) 964 1680 w +(the) 1104 1680 w +(service) 1301 1680 w +(visible) 1679 1680 w +(in) 2030 1680 w +(the) 2163 1680 w +(directory.) 2361 1680 w +(\(This) 2899 1680 w +(is) 3180 1680 w +(a) 3303 1680 w +(different) 3401 1680 w +(operation) 3862 1680 w +(from) 4370 1680 w +(its) 4645 1680 w +(UNIX) 4805 1680 w +(namesake.\)) 720 1800 w +(Multiple) 1351 1800 w +(services) 1790 1800 w +(may) 2225 1800 w +(be) 2473 1800 w +(mounted) 2640 1800 w +(upon) 3122 1800 w +(the) 3418 1800 w +(same) 3621 1800 w +(directory,) 3924 1800 w +(allowing) 4434 1800 w +(the) 4885 1800 w +(files from multiple) 720 1920 w +(services) 1649 1920 w +(to) 2069 1920 w +(be) 2200 1920 w +(accessed) 2352 1920 w +(in) 2819 1920 w +(the) 2943 1920 w +(same) 3131 1920 w +(directory.) 3419 1920 w +(Options) 3947 1920 w +(to) 4361 1920 w +(the) 4492 1920 w +10 /LucidaTypewriter f +(mount) 4680 1920 w +10 /LucidaSansUnicode00 f +(system call control the order of searching for files in such a) 720 2040 w +10 /LucidaSans-Italic f +(union directory.) 3647 2040 w +10 /LucidaSansUnicode00 f +(The) 970 2196 w +(most) 1186 2196 w +(obvious) 1463 2196 w +(example) 1877 2196 w +(of) 2325 2196 w +(a) 2458 2196 w +(network) 2548 2196 w +(resource) 2975 2196 w +(is) 3429 2196 w +(a) 3544 2196 w +(file) 3635 2196 w +(server,) 3822 2196 w +(where) 4187 2196 w +(permanent) 4515 2196 w +(files) 720 2316 w +(reside.) 957 2316 w +(There) 1352 2316 w +(are) 1665 2316 w +(a) 1852 2316 w +(number) 1942 2316 w +(of) 2354 2316 w +(unusual) 2487 2316 w +(services,) 2905 2316 w +(however,) 3359 2316 w +(whose) 3831 2316 w +(design) 4173 2316 w +(in) 4530 2316 w +(a) 4655 2316 w +(differ\255) 4744 2316 w +(ent) 720 2436 w +(environment) 909 2436 w +(would) 1554 2436 w +(likely) 1881 2436 w +(not) 2169 2436 w +(be) 2364 2436 w +(file-based.) 2518 2436 w +(Many) 3114 2436 w +(are) 3404 2436 w +(described) 3591 2436 w +(elsewhere) 4099 2436 w +([Pike92];) 4618 2436 w +(some) 720 2556 w +(examples) 1026 2556 w +(are) 1535 2556 w +(the) 1732 2556 w +(representation) 1932 2556 w +(of) 2684 2556 w +(processes) 2826 2556 w +(for) 3351 2556 w +(debugging,) 3534 2556 w +(much) 4131 2556 w +(like) 4443 2556 w +(Killian) 4659 2556 w +10 /LucidaSansUnicode20 f +(\031) 4957 2556 w +10 /LucidaSansUnicode00 f +(s) 4989 2556 w +(process) 720 2676 w +(files) 1148 2676 w +(for) 1404 2676 w +(the) 1597 2676 w +(8th) 1806 2676 w +(edition) 2022 2676 w +([Kill84],) 2413 2676 w +(and) 2843 2676 w +(the) 3077 2676 w +(implementation) 3287 2676 w +(of) 4104 2676 w +(the) 4257 2676 w +(name/value) 4467 2676 w +(pairs) 720 2796 w +(of) 995 2796 w +(the) 1129 2796 w +(UNIX) 1320 2796 w +10 /LucidaTypewriter f +(exec) 1591 2796 w +10 /LucidaSansUnicode00 f +(environment) 1915 2796 w +(as) 2562 2796 w +(files.) 2704 2796 w +(User) 3006 2796 w +(processes) 3259 2796 w +(may) 3776 2796 w +(also) 4012 2796 w +(implement) 4244 2796 w +(a) 4798 2796 w +(file) 4889 2796 w +(service) 720 2916 w +(and) 1091 2916 w +(make) 1306 2916 w +(it) 1603 2916 w +(available) 1704 2916 w +(to) 2162 2916 w +(clients) 2295 2916 w +(in) 2645 2916 w +(the) 2771 2916 w +(network,) 2961 2916 w +(much) 3420 2916 w +(like) 3723 2916 w +(the) 3931 2916 w +10 /LucidaSansUnicode20 f +(\030) 4122 2916 w +10 /LucidaSansUnicode00 f +(mounted) 4154 2916 w +(streams) 4624 2916 w +10 /LucidaSansUnicode20 f +(\031) 5008 2916 w +10 /LucidaSansUnicode00 f +(in) 720 3036 w +(the) 887 3036 w +(9th) 1118 3036 w +(Edition) 1356 3036 w +([Pres90].) 1767 3036 w +(A) 2302 3036 w +(typical) 2447 3036 w +(example) 2839 3036 w +(is) 3328 3036 w +(a) 3484 3036 w +(program) 3615 3036 w +(that) 4107 3036 w +(interprets) 4374 3036 w +(an) 4923 3036 w +(externally-defined file system such as) 720 3156 w +(that) 2606 3156 w +(on) 2830 3156 w +(a) 2986 3156 w +(CD-ROM) 3074 3156 w +(or) 3536 3156 w +(a) 3671 3156 w +(standard) 3759 3156 w +(UNIX) 4219 3156 w +(system) 4487 3156 w +(and) 4860 3156 w +(makes) 720 3276 w +(the) 1071 3276 w +(contents) 1264 3276 w +(available) 1718 3276 w +(to) 2178 3276 w +(Plan) 2313 3276 w +(9) 2551 3276 w +(programs.) 2651 3276 w +(This) 3219 3276 w +(design) 3461 3276 w +(is) 3821 3276 w +(used) 3938 3276 w +(by) 4207 3276 w +(all) 4359 3276 w +(distributed) 4509 3276 w +(applications in Plan 9, including 8\275.) 720 3396 w +(8\275) 970 3552 w +(serves) 1150 3552 w +(a) 1494 3552 w +(set) 1586 3552 w +(of) 1767 3552 w +(files) 1902 3552 w +(in) 2141 3552 w +(the) 2269 3552 w +(conventional) 2462 3552 w +(directory) 3117 3552 w +10 /LucidaTypewriter f +(/dev) 3586 3552 w +10 /LucidaSansUnicode00 f +(with) 3912 3552 w +(names) 4155 3552 w +(like) 4510 3552 w +10 /LucidaTypewriter f +(cons) 4720 3552 w +10 /LucidaSansUnicode00 f +(,) 5008 3552 w +10 /LucidaTypewriter f +(mouse) 720 3672 w +10 /LucidaSansUnicode00 f +(,) 1080 3672 w +(and) 1152 3672 w +10 /LucidaTypewriter f +(screen) 1372 3672 w +10 /LucidaSansUnicode00 f +(.) 1804 3672 w +(Clients) 1908 3672 w +(of) 2281 3672 w +(8\275) 2419 3672 w +(communicate) 2602 3672 w +(with) 3292 3672 w +(the) 3537 3672 w +(window) 3731 3672 w +(system) 4139 3672 w +(by) 4518 3672 w +(reading) 4672 3672 w +(and) 720 3792 w +(writing) 934 3792 w +(these) 1305 3792 w +(files.) 1601 3792 w +(For) 1901 3792 w +(example,) 2091 3792 w +(a) 2571 3792 w +(client) 2661 3792 w +(program,) 2960 3792 w +(such) 3443 3792 w +(as) 3704 3792 w +(a) 3845 3792 w +(shell,) 3935 3792 w +(can) 4229 3792 w +(print) 4432 3792 w +(text) 4699 3792 w +(by) 4925 3792 w +(writing) 720 3912 w +(its) 1094 3912 w +(standard) 1248 3912 w +(output,) 1711 3912 w +(which) 2101 3912 w +(is) 2418 3912 w +(automatically) 2534 3912 w +(connected) 3215 3912 w +(to) 3750 3912 w +10 /LucidaTypewriter f +(/dev/cons) 3884 3912 w +10 /LucidaSansUnicode00 f +(,) 4532 3912 w +(or) 4600 3912 w +(it) 4738 3912 w +(may) 4840 3912 w +(open) 720 4032 w +(and) 1005 4032 w +(write) 1228 4032 w +(that) 1511 4032 w +(file) 1745 4032 w +(explicitly.) 1939 4032 w +(Unlike) 2483 4032 w +(files) 2830 4032 w +(served) 3076 4032 w +(by) 3439 4032 w +(a) 3598 4032 w +(traditional) 3697 4032 w +(file) 4239 4032 w +(server,) 4434 4032 w +(how\255) 4807 4032 w +(ever,) 720 4152 w +(the) 1003 4152 w +(instance) 1204 4152 w +(of) 1653 4152 w +10 /LucidaTypewriter f +(/dev/cons) 1797 4152 w +10 /LucidaSansUnicode00 f +(served) 2491 4152 w +(in) 2856 4152 w +(each) 2993 4152 w +(window) 3263 4152 w +(by) 3678 4152 w +(8\275) 3839 4152 w +(is) 4028 4152 w +(a) 4153 4152 w +(distinct) 4253 4152 w +(file;) 4657 4152 w +(the) 4885 4152 w +(per-process) 720 4272 w +(name) 1351 4272 w +(spaces) 1656 4272 w +(of) 2022 4272 w +(Plan) 2160 4272 w +(9) 2401 4272 w +(allow) 2504 4272 w +(8\275) 2795 4272 w +(to) 2978 4272 w +(provide) 3116 4272 w +(a) 3521 4272 w +(unique) 3616 4272 w +10 /LucidaTypewriter f +(/dev/cons) 3990 4272 w +10 /LucidaSansUnicode00 f +(to) 4678 4272 w +(each) 4816 4272 w +(client.) 720 4392 w +(This mechanism is best illustrated by the creation of a new 8\275 client.) 1080 4392 w +(When) 970 4548 w +(8\275) 1272 4548 w +(starts,) 1451 4548 w +(it) 1791 4548 w +(creates) 1893 4548 w +(a) 2276 4548 w +(full-duplex) 2368 4548 w +(pipe) 2954 4548 w +(to) 3202 4548 w +(be) 3337 4548 w +(the) 3493 4548 w +(communication) 3685 4548 w +(medium) 4468 4548 w +(for) 4901 4548 w +(the) 720 4668 w +(messages) 914 4668 w +(that) 1428 4668 w +(implement) 1658 4668 w +(the) 2215 4668 w +(file) 2409 4668 w +(service) 2599 4668 w +(it) 2974 4668 w +(will) 3078 4668 w +(provide.) 3280 4668 w +(One) 3747 4668 w +(end) 3981 4668 w +(will) 4200 4668 w +(be) 4402 4668 w +(shared) 4559 4668 w +(by) 4925 4668 w +(all) 720 4788 w +(the) 882 4788 w +(clients;) 1086 4788 w +(the) 1482 4788 w +(other) 1686 4788 w +(end) 1992 4788 w +(is) 2222 4788 w +(held) 2351 4788 w +(by) 2610 4788 w +(8\275) 2775 4788 w +(to) 2968 4788 w +(accept) 3116 4788 w +(requests) 3479 4788 w +(for) 3946 4788 w +(I/O.) 4135 4788 w +(When) 4409 4788 w +(a) 4725 4788 w +(user) 4830 4788 w +(makes) 720 4908 w +(a) 1083 4908 w +(new) 1188 4908 w +(window) 1433 4908 w +(using) 1852 4908 w +(the) 2168 4908 w +(mouse,) 2372 4908 w +(8\275) 2776 4908 w +(allocates) 2968 4908 w +(the) 3441 4908 w +(window) 3645 4908 w +(data) 4063 4908 w +(structures) 4322 4908 w +(and) 4860 4908 w +(forks) 720 5028 w +(a) 1010 5028 w +(child) 1107 5028 w +(process.) 1383 5028 w +(The) 1863 5028 w +(child) 2086 5028 w +10 /LucidaSansUnicode20 f +(\031) 2320 5028 w +10 /LucidaSansUnicode00 f +(s) 2352 5028 w +(name) 2445 5028 w +(space,) 2753 5028 w +(initially) 3103 5028 w +(shared) 3496 5028 w +(with) 3866 5028 w +(the) 4113 5028 w +(parent,) 4311 5028 w +(is) 4700 5028 w +(then) 4823 5028 w +(duplicated) 720 5148 w +(so) 1265 5148 w +(that) 1414 5148 w +(changes) 1642 5148 w +(the) 2078 5148 w +(child) 2270 5148 w +(makes) 2541 5148 w +(to) 2891 5148 w +(its) 3026 5148 w +(name) 3180 5148 w +(space) 3483 5148 w +(will) 3796 5148 w +(not) 3997 5148 w +(affect) 4194 5148 w +(the) 4503 5148 w +(parent.) 4694 5148 w +(The) 720 5268 w +(child) 938 5268 w +(then) 1209 5268 w +(attaches) 1463 5268 w +(its) 1904 5268 w +(end) 2058 5268 w +(of) 2276 5268 w +(the) 2411 5268 w +(communication) 2603 5268 w +(pipe,) 3387 5268 w +10 /LucidaTypewriter f +(cfd) 3668 5268 w +10 /LucidaSansUnicode00 f +(,) 3884 5268 w +(to) 3954 5268 w +(the) 4090 5268 w +(directory) 4283 5268 w +10 /LucidaTypewriter f +(/dev) 4752 5268 w +10 /LucidaSansUnicode00 f +(by doing a) 720 5388 w +10 /LucidaTypewriter f +(mount) 1263 5388 w +10 /LucidaSansUnicode00 f +(system call:) 1655 5388 w +9 /LucidaTypewriter f +(mount\(cfd,) 1008 5558 w +("/dev",) 1723 5558 w +(MBEFORE,) 2243 5558 w +(buf\)) 2828 5558 w +10 /LucidaSansUnicode00 f +(This) 720 5738 w +(call) 960 5738 w +(attaches) 1159 5738 w +(the) 1598 5738 w +(service) 1788 5738 w +(associated) 2159 5738 w +(with) 2703 5738 w +(the) 2943 5738 w +(file) 3133 5738 w +(descriptor) 3319 5738 w +10 /LucidaTypewriter f +(cfd) 3847 5738 w +10 /LucidaSansUnicode20 f +(\024) 4098 5738 w +10 /LucidaSansUnicode00 f +(the) 4234 5738 w +(client) 4425 5738 w +(end) 4725 5738 w +(of) 4942 5738 w +(the) 720 5858 w +(pipe) 919 5858 w +10 /LucidaSansUnicode20 f +(\024) 1173 5858 w +10 /LucidaSansUnicode00 f +(to) 1316 5858 w +(the) 1457 5858 w +(beginning) 1655 5858 w +(of) 2185 5858 w +10 /LucidaTypewriter f +(/dev) 2326 5858 w +10 /LucidaSansUnicode00 f +(so) 2657 5858 w +(that) 2812 5858 w +(the) 3046 5858 w +(files) 3244 5858 w +(in) 3489 5858 w +(the) 3623 5858 w +(new) 3821 5858 w +(service) 4059 5858 w +(take) 4438 5858 w +(priority) 4687 5858 w +(over) 720 5978 w +(existing) 966 5978 w +(files) 1389 5978 w +(in) 1627 5978 w +(the) 1754 5978 w +(directory.) 1946 5978 w +(This) 2478 5978 w +(makes) 2720 5978 w +(the) 3070 5978 w +(new) 3262 5978 w +(files) 3494 5978 w +10 /LucidaTypewriter f +(cons) 3733 5978 w +10 /LucidaSansUnicode00 f +(,) 4021 5978 w +10 /LucidaTypewriter f +(mouse) 4090 5978 w +10 /LucidaSansUnicode00 f +(,) 4450 5978 w +(and) 4519 5978 w +(so) 4736 5978 w +(on,) 4885 5978 w +(available) 720 6098 w +(in) 1188 6098 w +10 /LucidaTypewriter f +(/dev) 1323 6098 w +10 /LucidaSansUnicode00 f +(in) 1655 6098 w +(a) 1790 6098 w +(way) 1889 6098 w +(that) 2117 6098 w +(hides) 2352 6098 w +(any) 2657 6098 w +(files) 2870 6098 w +(with) 3116 6098 w +(the) 3365 6098 w +(same) 3564 6098 w +(names) 3863 6098 w +(already) 4224 6098 w +(in) 4619 6098 w +(place.) 4754 6098 w +(The argument) 720 6218 w +10 /LucidaTypewriter f +(buf) 1433 6218 w +10 /LucidaSansUnicode00 f +(is a character string \(null in this case\), described below.) 1681 6218 w +(The) 970 6374 w +(client) 1188 6374 w +(process) 1489 6374 w +(then) 1900 6374 w +(closes) 2154 6374 w +(file) 2490 6374 w +(descriptors) 2678 6374 w +(0,) 3259 6374 w +(1,) 3391 6374 w +(and) 3524 6374 w +(2) 3742 6374 w +(and) 3843 6374 w +(opens) 4061 6374 w +10 /LucidaTypewriter f +(/dev/cons) 4392 6374 w +10 /LucidaSansUnicode00 f +(repeatedly) 720 6494 w +(to) 1294 6494 w +(connect) 1458 6494 w +(the) 1904 6494 w +(standard) 2125 6494 w +(input,) 2618 6494 w +(output,) 2969 6494 w +(and) 3388 6494 w +(error) 3633 6494 w +(files) 3938 6494 w +(to) 4205 6494 w +(the) 4368 6494 w +(window) 4588 6494 w +10 /LucidaSansUnicode20 f +(\031) 4957 6494 w +10 /LucidaSansUnicode00 f +(s) 4989 6494 w +10 /LucidaTypewriter f +(/dev/cons) 720 6614 w +10 /LucidaSansUnicode00 f +(.) 1368 6614 w +(It) 1466 6614 w +(then) 1566 6614 w +(does) 1817 6614 w +(an) 2082 6614 w +10 /LucidaTypewriter f +(exec) 2233 6614 w +10 /LucidaSansUnicode00 f +(system) 2555 6614 w +(call) 2929 6614 w +(to) 3127 6614 w +(begin) 3259 6614 w +(executing) 3565 6614 w +(the) 4075 6614 w +(shell) 4264 6614 w +(in) 4525 6614 w +(the) 4650 6614 w +(win\255) 4839 6614 w +(dow.) 720 6734 w +(This entire sequence, complete with error handling, is 33 lines of C.) 1017 6734 w +(The) 970 6890 w +(view) 1191 6890 w +(of) 1445 6890 w +(these) 1583 6890 w +(events) 1886 6890 w +(from) 2241 6890 w +(8\275) 2514 6890 w +10 /LucidaSansUnicode20 f +(\031) 2657 6890 w +10 /LucidaSansUnicode00 f +(s) 2689 6890 w +(end) 2781 6890 w +(of) 3003 6890 w +(the) 3142 6890 w +(pipe) 3338 6890 w +(is) 3590 6890 w +(a) 3711 6890 w +(sequence) 3807 6890 w +(of) 4305 6890 w +(file) 4444 6890 w +(protocol) 4636 6890 w +(messages) 720 7010 w +(from) 1268 7010 w +(the) 1573 7010 w +(new) 1801 7010 w +(client) 2069 7010 w +(generated) 2405 7010 w +(by) 2965 7010 w +(the) 3152 7010 w +(intervening) 3379 7010 w +(operating) 3999 7010 w +(system) 4537 7010 w +(in) 4949 7010 w +(response) 720 7130 w +(to) 1207 7130 w +(the) 1351 7130 w +10 /LucidaTypewriter f +(mount) 1552 7130 w +10 /LucidaSansUnicode00 f +(and) 1958 7130 w +10 /LucidaTypewriter f +(open) 2184 7130 w +10 /LucidaSansUnicode00 f +(system) 2518 7130 w +(calls) 2904 7130 w +(executed) 3165 7130 w +(by) 3653 7130 w +(the) 3814 7130 w +(client.) 4015 7130 w +(The) 4389 7130 w +(message) 4616 7130 w +(generated) 720 7250 w +(by) 1245 7250 w +(the) 1397 7250 w +10 /LucidaTypewriter f +(mount) 1589 7250 w +10 /LucidaSansUnicode00 f +(informs) 1986 7250 w +(8\275) 2397 7250 w +(that) 2577 7250 w +(a) 2805 7250 w +(new) 2897 7250 w +(client) 3129 7250 w +(has) 3430 7250 w +(attached) 3635 7250 w +(to) 4088 7250 w +(the) 4223 7250 w +(file) 4415 7250 w +(service) 4602 7250 w +(it) 4974 7250 w +cleartomark +showpage +saveobj restore +%%EndPage: 3 3 +%%Page: 4 4 +/saveobj save def +mark +4 pagesetup +10 /LucidaSansUnicode00 f +(\255 4 \255) 2783 480 w +(provides;) 720 840 w +(8\275) 1205 840 w +10 /LucidaSansUnicode20 f +(\031) 1348 840 w +10 /LucidaSansUnicode00 f +(s) 1380 840 w +(response) 1468 840 w +(is) 1946 840 w +(a) 2063 840 w +(unique) 2155 840 w +(identifier) 2526 840 w +(kept) 3003 840 w +(by) 3255 840 w +(the) 3408 840 w +(operating) 3601 840 w +(system) 4105 840 w +(and) 4483 840 w +(passed) 4701 840 w +(in) 720 960 w +(all) 851 960 w +(messages) 1003 960 w +(generated) 1517 960 w +(by) 2044 960 w +(I/O) 2198 960 w +(on) 2397 960 w +(the) 2559 960 w +(files) 2753 960 w +(derived) 2994 960 w +(from) 3393 960 w +(that) 3664 960 w +10 /LucidaTypewriter f +(mount) 3894 960 w +10 /LucidaSansUnicode00 f +(.) 4254 960 w +(This) 4357 960 w +(identifier) 4601 960 w +(is) 720 1080 w +(used) 848 1080 w +(by) 1128 1080 w +(8\275) 1291 1080 w +(to) 1482 1080 w +(distinguish) 1628 1080 w +(the) 2213 1080 w +(various) 2416 1080 w +(clients) 2815 1080 w +(so) 3178 1080 w +(each) 3338 1080 w +(sees) 3610 1080 w +(a) 3873 1080 w +(unique) 3977 1080 w +10 /LucidaTypewriter f +(/dev/cons) 4360 1080 w +10 /LucidaSansUnicode00 f +(;) 5008 1080 w +(most servers do not need to make this distinction.) 720 1200 w +(A) 970 1356 w +(process) 1088 1356 w +(unrelated) 1511 1356 w +(to) 2021 1356 w +(8\275) 2169 1356 w +(may) 2362 1356 w +(create) 2612 1356 w +(windows) 2958 1356 w +(by) 3428 1356 w +(a) 3593 1356 w +(variant) 3698 1356 w +(of) 4079 1356 w +(this) 4227 1356 w +(mechanism.) 4456 1356 w +(When) 720 1476 w +(8\275) 1027 1476 w +(begins,) 1211 1476 w +(it) 1606 1476 w +(uses) 1712 1476 w +(a) 1972 1476 w +(Plan) 2067 1476 w +(9) 2308 1476 w +(service) 2411 1476 w +(to) 2787 1476 w +10 /LucidaSansUnicode20 f +(\030) 2925 1476 w +10 /LucidaSansUnicode00 f +(post) 2957 1476 w +10 /LucidaSansUnicode20 f +(\031) 3169 1476 w +10 /LucidaSansUnicode00 f +(the) 3241 1476 w +(client) 3436 1476 w +(end) 3740 1476 w +(of) 3961 1476 w +(the) 4099 1476 w +(communication) 4294 1476 w +(pipe) 720 1596 w +(in) 964 1596 w +(a) 1088 1596 w +(public) 1176 1596 w +(place.) 1506 1596 w +(A) 1857 1596 w +(process) 1959 1596 w +(may) 2367 1596 w +(open) 2601 1596 w +(that) 2877 1596 w +(pipe) 3102 1596 w +(and) 3347 1596 w +10 /LucidaTypewriter f +(mount) 3561 1596 w +10 /LucidaSansUnicode00 f +(it) 3955 1596 w +(to) 4055 1596 w +(attach) 4187 1596 w +(to) 4518 1596 w +(the) 4650 1596 w +(win\255) 4839 1596 w +(dow) 720 1716 w +(system,) 963 1716 w +(much) 1377 1716 w +(in) 1687 1716 w +(the) 1820 1716 w +(way) 2017 1716 w +(an) 2243 1716 w +(X) 2402 1716 w +(client) 2507 1716 w +(may) 2813 1716 w +(connect) 3055 1716 w +(to) 3476 1716 w +(a) 3615 1716 w +(UNIX) 3711 1716 w +(domain) 3987 1716 w +(socket) 4391 1716 w +(to) 4746 1716 w +(the) 4885 1716 w +(server) 720 1836 w +(bound) 1054 1836 w +(to) 1403 1836 w +(the) 1539 1836 w +(file) 1732 1836 w +(system.) 1921 1836 w +(The) 2363 1836 w +(final) 2582 1836 w +(argument) 2832 1836 w +(to) 3338 1836 w +10 /LucidaTypewriter f +(mount) 3474 1836 w +10 /LucidaSansUnicode00 f +(is) 3872 1836 w +(passed) 3990 1836 w +(through) 4367 1836 w +(unin\255) 4792 1836 w +(terpreted) 720 1956 w +(by) 1233 1956 w +(the) 1411 1956 w +(operating) 1629 1956 w +(system.) 2158 1956 w +(It) 2625 1956 w +(provides) 2754 1956 w +(a) 3233 1956 w +(way) 3351 1956 w +(for) 3597 1956 w +(the) 3798 1956 w +(client) 4015 1956 w +(and) 4341 1956 w +(server) 4583 1956 w +(to) 4942 1956 w +(exchange) 720 2076 w +(information) 1224 2076 w +(at) 1830 2076 w +(the) 1961 2076 w +(time) 2155 2076 w +(of) 2409 2076 w +(the) 2546 2076 w +10 /LucidaTypewriter f +(mount) 2740 2076 w +10 /LucidaSansUnicode00 f +(.) 3100 2076 w +(8\275) 3203 2076 w +(interprets) 3385 2076 w +(it) 3898 2076 w +(as) 4004 2076 w +(the) 4150 2076 w +(dimensions) 4345 2076 w +(of) 4942 2076 w +(the) 720 2196 w +(window) 917 2196 w +(to) 1328 2196 w +(be) 1468 2196 w +(created) 1629 2196 w +(for) 2030 2196 w +(the) 2211 2196 w +(new) 2408 2196 w +(client.) 2644 2196 w +(\(In) 3013 2196 w +(the) 3178 2196 w +(case) 3374 2196 w +(above,) 3628 2196 w +(the) 3988 2196 w +(window) 4184 2196 w +(has) 4594 2196 w +(been) 4803 2196 w +(created) 720 2316 w +(by) 1135 2316 w +(the) 1306 2316 w +(time) 1517 2316 w +(the) 1788 2316 w +(mount) 1999 2316 w +(occurs,) 2370 2316 w +(and) 2775 2316 w +10 /LucidaTypewriter f +(buf) 3011 2316 w +10 /LucidaSansUnicode00 f +(carries) 3283 2316 w +(no) 3663 2316 w +(information.\)) 3842 2316 w +(When) 4562 2316 w +(the) 4885 2316 w +10 /LucidaTypewriter f +(mount) 720 2436 w +10 /LucidaSansUnicode00 f +(returns,) 1117 2436 w +(the) 1536 2436 w +(process) 1728 2436 w +(can) 2139 2436 w +(open) 2344 2436 w +(the) 2623 2436 w +(files) 2815 2436 w +(of) 3054 2436 w +(the) 3189 2436 w +(new) 3381 2436 w +(window) 3612 2436 w +(and) 4017 2436 w +(begin) 4233 2436 w +(I/O) 4541 2436 w +(to) 4737 2436 w +(use) 4871 2436 w +(it.) 720 2556 w +(Because) 970 2712 w +(8\275) 1402 2712 w +10 /LucidaSansUnicode20 f +(\031) 1545 2712 w +10 /LucidaSansUnicode00 f +(s) 1577 2712 w +(interface) 1671 2712 w +(is) 2138 2712 w +(based) 2261 2712 w +(on) 2592 2712 w +(files,) 2758 2712 w +(standard) 3035 2712 w +(system) 3505 2712 w +(utilities) 3888 2712 w +(can) 4291 2712 w +(be) 4503 2712 w +(used) 4666 2712 w +(to) 4942 2712 w +(control) 720 2832 w +(its) 1095 2832 w +(services.) 1245 2832 w +(For) 1729 2832 w +(example, its method of creating windows externally is packaged) 1918 2832 w +(in) 720 2952 w +(a) 854 2952 w +(16-line) 952 2952 w +(shell) 1355 2952 w +(script,) 1625 2952 w +(called) 1972 2952 w +10 /LucidaTypewriter f +(window) 2298 2952 w +10 /LucidaSansUnicode00 f +(,) 2730 2952 w +(the) 2805 2952 w +(core) 3004 2952 w +(of) 3257 2952 w +(which) 3399 2952 w +(is) 3724 2952 w +(just) 3848 2952 w +(a) 4072 2952 w +10 /LucidaTypewriter f +(mount) 4171 2952 w +10 /LucidaSansUnicode00 f +(operation) 4575 2952 w +(that prefixes 8\275) 720 3072 w +10 /LucidaSansUnicode20 f +(\031) 1512 3072 w +10 /LucidaSansUnicode00 f +(s directory to) 1544 3072 w +10 /LucidaTypewriter f +(/dev) 2220 3072 w +10 /LucidaSansUnicode00 f +(and runs a command passed on the argument line:) 2540 3072 w +9 /LucidaTypewriter f +(mount) 1008 3242 w +(-b) 1398 3242 w +($'8\275serv') 1593 3242 w +(/dev) 2243 3242 w +($*) 1008 3352 w +(<) 1203 3352 w +(/dev/cons) 1333 3352 w +(>) 1983 3352 w +(/dev/cons) 2113 3352 w +(>[2]) 2763 3352 w +(/dev/cons) 3088 3352 w +(&) 3738 3352 w +10 /LucidaSansUnicode00 f +(The) 720 3532 w +10 /LucidaTypewriter f +(window) 935 3532 w +10 /LucidaSansUnicode00 f +(program) 1402 3532 w +(is) 1853 3532 w +(typically) 1968 3532 w +(employed) 2400 3532 w +(by) 2908 3532 w +(users) 3058 3532 w +(to) 3354 3532 w +(create) 3487 3532 w +(their) 3818 3532 w +(initial) 4078 3532 w +(working) 4383 3532 w +(envi\255) 4808 3532 w +(ronment when they boot the system, although it has more general possibilities.) 720 3652 w +(Other) 970 3808 w +(basic) 1294 3808 w +(features) 1593 3808 w +(of) 2038 3808 w +(the) 2187 3808 w +(system) 2393 3808 w +(fall) 2784 3808 w +(out) 2985 3808 w +(naturally) 3196 3808 w +(from) 3669 3808 w +(the) 3952 3808 w +(file-based) 4158 3808 w +(model.) 4706 3808 w +(When) 720 3928 w +(the) 1029 3928 w +(user) 1227 3928 w +(deletes) 1480 3928 w +(a) 1871 3928 w +(window,) 1968 3928 w +(8\275) 2411 3928 w +(sends) 2596 3928 w +(the) 2921 3928 w +(equivalent) 3118 3928 w +(of) 3661 3928 w +(a) 3801 3928 w +(UNIX) 3898 3928 w +(signal) 4175 3928 w +(to) 4505 3928 w +(the) 4645 3928 w +(pro\255) 4842 3928 w +(cess) 720 4048 w +(group) 972 4048 w +10 /LucidaSansUnicode20 f +(\024) 1304 4048 w +10 /LucidaSansUnicode00 f +(the) 1447 4048 w +(clients) 1645 4048 w +10 /LucidaSansUnicode20 f +(\024) 2003 4048 w +10 /LucidaSansUnicode00 f +(in) 2147 4048 w +(the) 2282 4048 w +(window,) 2481 4048 w +(removes) 2926 4048 w +(the) 3380 4048 w +(window) 3579 4048 w +(from) 3992 4048 w +(the) 4268 4048 w +(screen,) 4467 4048 w +(and) 4860 4048 w +(poisons) 720 4168 w +(the) 1135 4168 w +(incoming) 1327 4168 w +(connections) 1813 4168 w +(to) 2433 4168 w +(the) 2568 4168 w +(files) 2760 4168 w +(that) 2999 4168 w +(drive) 3227 4168 w +(it.) 3504 4168 w +(If) 3670 4168 w +(a) 3772 4168 w +(client) 3863 4168 w +(ignores) 4163 4168 w +(the) 4561 4168 w +(signal) 4752 4168 w +(and) 720 4288 w +(continues) 933 4288 w +(to) 1437 4288 w +(write) 1568 4288 w +(to) 1841 4288 w +(the) 1972 4288 w +(window,) 2160 4288 w +(it) 2594 4288 w +(will) 2693 4288 w +(get) 2890 4288 w +(I/O) 3078 4288 w +(errors.) 3272 4288 w +(If,) 3661 4288 w +(on) 3793 4288 w +(the) 3950 4288 w +(other) 4139 4288 w +(hand,) 4430 4288 w +(all) 4738 4288 w +(the) 4885 4288 w +(processes) 720 4408 w +(in) 1242 4408 w +(a) 1374 4408 w +(window) 1470 4408 w +(exit) 1880 4408 w +(spontaneously,) 2104 4408 w +(they) 2879 4408 w +(will) 3127 4408 w +(automatically) 3331 4408 w +(close) 4016 4408 w +(all) 4304 4408 w +(connections) 4457 4408 w +(to) 720 4528 w +(the) 854 4528 w +(window.) 1045 4528 w +(8\275) 1514 4528 w +(counts) 1693 4528 w +(references) 2054 4528 w +(to) 2598 4528 w +(the) 2733 4528 w +(window) 2925 4528 w +10 /LucidaSansUnicode20 f +(\031) 3294 4528 w +10 /LucidaSansUnicode00 f +(s) 3326 4528 w +(files;) 3414 4528 w +(when) 3685 4528 w +(none) 3979 4528 w +(are) 4257 4528 w +(left,) 4446 4528 w +(it) 4674 4528 w +(shuts) 4777 4528 w +(down) 720 4648 w +(the) 1031 4648 w +(window) 1233 4648 w +(and) 1649 4648 w +(removes) 1876 4648 w +(it) 2333 4648 w +(from) 2446 4648 w +(the) 2725 4648 w +(screen.) 2927 4648 w +(As) 3355 4648 w +(a) 3522 4648 w +(different) 3624 4648 w +(example,) 4089 4648 w +(when) 4581 4648 w +(the) 4885 4648 w +(user hits the DEL key to generate an interrupt, 8\275 writes a message to a) 720 4768 w +(special) 4259 4768 w +(file,) 4626 4768 w +(pro\255) 4842 4768 w +(vided) 720 4888 w +(by) 1023 4888 w +(Plan) 1178 4888 w +(9) 1419 4888 w +10 /LucidaSansUnicode20 f +(\031) 1482 4888 w +10 /LucidaSansUnicode00 f +(s) 1514 4888 w +(process) 1605 4888 w +(control) 2019 4888 w +(interface,) 2401 4888 w +(that) 2897 4888 w +(interrupts) 3128 4888 w +(all) 3647 4888 w +(the) 3800 4888 w +(processes) 3995 4888 w +(in) 4515 4888 w +(the) 4645 4888 w +(win\255) 4839 4888 w +(dow.) 720 5008 w +(In all these examples, the implementation works seamlessly across a network.) 1017 5008 w +(There) 970 5164 w +(are) 1281 5164 w +(two) 1466 5164 w +(valuable) 1674 5164 w +(side) 2108 5164 w +(effects) 2340 5164 w +(of) 2698 5164 w +(implementing) 2829 5164 w +(a) 3533 5164 w +(window) 3622 5164 w +(system) 4025 5164 w +(by) 4399 5164 w +(multiplex\255) 4548 5164 w +(ing) 720 5284 w +10 /LucidaTypewriter f +(/dev/cons) 914 5284 w +10 /LucidaSansUnicode00 f +(and) 1603 5284 w +(other) 1824 5284 w +(such) 2122 5284 w +(files.) 2389 5284 w +(First,) 2696 5284 w +(the) 2981 5284 w +(problem) 3177 5284 w +(of) 3624 5284 w +(giving) 3763 5284 w +(a) 4100 5284 w +(meaningful) 4195 5284 w +(inter\255) 4782 5284 w +(pretation) 720 5404 w +(to) 1200 5404 w +(the) 1337 5404 w +(file) 1531 5404 w +10 /LucidaTypewriter f +(/dev/cons) 1721 5404 w +10 /LucidaSansUnicode00 f +(\() 2408 5404 w +10 /LucidaTypewriter f +(/dev/tty) 2441 5404 w +10 /LucidaSansUnicode00 f +(\)) 3017 5404 w +(in) 3089 5404 w +(each) 3219 5404 w +(window) 3482 5404 w +(is) 3891 5404 w +(solved) 4011 5404 w +(automatically.) 4363 5404 w +(To) 720 5524 w +(provide) 883 5524 w +10 /LucidaTypewriter f +(/dev/cons) 1287 5524 w +10 /LucidaSansUnicode00 f +(is) 1974 5524 w +(the) 2093 5524 w +(fundamental) 2287 5524 w +(job) 2937 5524 w +(of) 3130 5524 w +(the) 3266 5524 w +(window) 3459 5524 w +(system,) 3866 5524 w +(rather) 4276 5524 w +(than) 4606 5524 w +(just) 4860 5524 w +(an) 720 5644 w +(awkward) 887 5644 w +(burden;) 1363 5644 w +(other) 1792 5644 w +(systems) 2099 5644 w +(must) 2540 5644 w +(often) 2833 5644 w +(make) 3136 5644 w +(special) 3448 5644 w +(and) 3832 5644 w +(otherwise) 4062 5644 w +(irrelevant) 4582 5644 w +(arrangements) 720 5764 w +(for) 1425 5764 w +10 /LucidaTypewriter f +(/dev/tty) 1598 5764 w +10 /LucidaSansUnicode00 f +(to) 2208 5764 w +(behave) 2340 5764 w +(as) 2717 5764 w +(expected) 2856 5764 w +(in) 3332 5764 w +(a) 3456 5764 w +(window.) 3544 5764 w +(Second,) 4010 5764 w +(any) 4422 5764 w +(program) 4624 5764 w +(that can access the server, including a process on a remote machine, can access) 720 5884 w +(the) 4650 5884 w +(files) 4838 5884 w +(using) 720 6004 w +(standard) 1035 6004 w +(read) 1511 6004 w +(and) 1775 6004 w +(write) 2004 6004 w +(system) 2293 6004 w +(calls) 2682 6004 w +(to) 2946 6004 w +(communicate) 3093 6004 w +(with) 3792 6004 w +(the) 4046 6004 w +(window) 4250 6004 w +(system,) 4668 6004 w +(and standard open and close calls to connect to it.) 720 6124 w +(Again, no special arrangements need) 3238 6124 w +(to be made for remote processes to use all the graphics facilities of 8\275.) 720 6244 w +10 /LucidaSans-Demi f +(Graphical input) 720 6484 w +10 /LucidaSansUnicode00 f +(Of) 970 6640 w +(course) 1118 6640 w +(8\275) 1474 6640 w +(offers) 1651 6640 w +(more) 1968 6640 w +(than) 2253 6640 w +(ASCII) 2503 6640 w +(I/O) 2787 6640 w +(to) 2981 6640 w +(its) 3113 6640 w +(clients.) 3264 6640 w +(The) 3677 6640 w +(state) 3892 6640 w +(of) 4162 6640 w +(the) 4294 6640 w +(mouse) 4483 6640 w +(may) 4840 6640 w +(be) 720 6760 w +(discovered) 895 6760 w +(by) 1473 6760 w +(reading) 1643 6760 w +(the) 2066 6760 w +(file) 2276 6760 w +10 /LucidaTypewriter f +(/dev/mouse) 2482 6760 w +10 /LucidaSansUnicode00 f +(,) 3202 6760 w +(which) 3289 6760 w +(returns) 3625 6760 w +(a) 4030 6760 w +(ten-byte) 4140 6760 w +(message) 4616 6760 w +(encoding) 720 6880 w +(the) 1205 6880 w +(state) 1399 6880 w +(of) 1674 6880 w +(the) 1811 6880 w +(buttons) 2005 6880 w +(and) 2417 6880 w +(the) 2636 6880 w +(position) 2831 6880 w +(of) 3264 6880 w +(the) 3402 6880 w +(cursor.) 3597 6880 w +(If) 4008 6880 w +(the) 4114 6880 w +(mouse) 4309 6880 w +(has) 4672 6880 w +(not) 4880 6880 w +(moved) 720 7000 w +(since) 1106 7000 w +(the) 1416 7000 w +(last) 1632 7000 w +(read) 1865 7000 w +(of) 2141 7000 w +10 /LucidaTypewriter f +(/dev/mouse) 2300 7000 w +10 /LucidaSansUnicode00 f +(,) 3020 7000 w +(or) 3113 7000 w +(if) 3276 7000 w +(the) 3403 7000 w +(window) 3619 7000 w +(associated) 4049 7000 w +(with) 4619 7000 w +(the) 4885 7000 w +(instance of) 720 7120 w +10 /LucidaTypewriter f +(/dev/mouse) 1285 7120 w +10 /LucidaSansUnicode00 f +(is not the ) 2037 7120 w +10 /LucidaSansUnicode20 f +(\030) 2528 7120 w +10 /LucidaSansUnicode00 f +(input focus) 2560 7120 w +10 /LucidaSansUnicode20 f +(\031) 3107 7120 w +10 /LucidaSansUnicode00 f +(, the read blocks.) 3139 7120 w +(The format of the message is:) 970 7276 w +cleartomark +showpage +saveobj restore +%%EndPage: 4 4 +%%Page: 5 5 +/saveobj save def +mark +5 pagesetup +10 /LucidaSansUnicode00 f +(\255 5 \255) 2783 480 w +10 /LucidaTypewriter f +('m') 1080 900 w +10 /LucidaSansUnicode00 f +(1 byte of button state) 1080 1020 w +(4 bytes of x, low byte first) 1080 1140 w +(4 bytes of y, low byte first) 1080 1260 w +(As) 720 1440 w +(in) 890 1440 w +(all) 1031 1440 w +(shared) 1194 1440 w +(data) 1572 1440 w +(structures) 1832 1440 w +(in) 2371 1440 w +(Plan) 2512 1440 w +(9,) 2763 1440 w +(the) 2908 1440 w +(order) 3113 1440 w +(of) 3425 1440 w +(every) 3573 1440 w +(byte) 3880 1440 w +(in) 4138 1440 w +(the) 4279 1440 w +(message) 4485 1440 w +(is) 4960 1440 w +(defined) 720 1560 w +(so) 1119 1560 w +(all) 1264 1560 w +(clients) 1410 1560 w +(can) 1758 1560 w +(execute) 1959 1560 w +(the) 2371 1560 w +(same code to unpack the message into a local data) 2559 1560 w +(structure.) 720 1680 w +(For) 970 1836 w +(keyboard) 1164 1836 w +(input,) 1651 1836 w +(clients) 1974 1836 w +(can) 2327 1836 w +(read) 2533 1836 w +10 /LucidaTypewriter f +(/dev/cons) 2786 1836 w +10 /LucidaSansUnicode00 f +(or,) 3472 1836 w +(if) 3644 1836 w +(they) 3748 1836 w +(need) 3994 1836 w +(character-at-a-) 4270 1836 w +(time) 720 1956 w +(input,) 969 1956 w +10 /LucidaTypewriter f +(/dev/rcons) 1288 1956 w +10 /LucidaSansUnicode00 f +(\() 2042 1956 w +10 /LucidaSansUnicode20 f +(\030) 2075 1956 w +10 /LucidaSansUnicode00 f +(raw) 2107 1956 w +(console) 2314 1956 w +10 /LucidaSansUnicode20 f +(\031) 2685 1956 w +10 /LucidaSansUnicode00 f +(\).) 2717 1956 w +(There) 2848 1956 w +(is) 3160 1956 w +(no) 3274 1956 w +(explicit) 3430 1956 w +(event) 3818 1956 w +(mechanism) 4114 1956 w +(to) 4699 1956 w +(help) 4830 1956 w +(clients) 720 2076 w +(that) 1068 2076 w +(need) 1292 2076 w +(to) 1562 2076 w +(read) 1693 2076 w +(from) 1941 2076 w +(multiple) 2206 2076 w +(sources.) 2637 2076 w +(Instead,) 3107 2076 w +(a) 3525 2076 w +(small) 3613 2076 w +(\(365) 3903 2076 w +(line\)) 4158 2076 w +(external) 4400 2076 w +(sup\255) 4831 2076 w +(port) 720 2196 w +(library) 961 2196 w +(can) 1310 2196 w +(be) 1517 2196 w +(used.) 1675 2196 w +(It) 2010 2196 w +(attaches) 2115 2196 w +(a) 2558 2196 w +(process) 2652 2196 w +(to) 3065 2196 w +(the) 3202 2196 w +(various) 3396 2196 w +(blocking) 3785 2196 w +(input) 4238 2196 w +(sources) 4529 2196 w +10 /LucidaSansUnicode20 f +(\024) 4940 2196 w +10 /LucidaSansUnicode00 f +(mouse,) 720 2316 w +(keyboard,) 1110 2316 w +(and) 1626 2316 w +(perhaps) 1841 2316 w +(a) 2267 2316 w +(third) 2357 2316 w +(user-provided) 2624 2316 w +(file) 3355 2316 w +(descriptor) 3541 2316 w +10 /LucidaSansUnicode20 f +(\024) 4069 2316 w +10 /LucidaSansUnicode00 f +(and) 4204 2316 w +(funnels) 4420 2316 w +(their) 4815 2316 w +(input) 720 2436 w +(into) 1008 2436 w +(a) 1232 2436 w +(single) 1322 2436 w +(pipe) 1646 2436 w +(from) 1892 2436 w +(which) 2159 2436 w +(may) 2475 2436 w +(be) 2710 2436 w +(read) 2864 2436 w +(the) 3114 2436 w +(various) 3304 2436 w +(types) 3690 2436 w +(of) 3984 2436 w +(events) 4117 2436 w +(in) 4466 2436 w +(the) 4592 2436 w +(tradi\255) 4782 2436 w +(tional) 720 2556 w +(style.) 1028 2556 w +(This) 1352 2556 w +(package) 1592 2556 w +(is) 2027 2556 w +(a) 2143 2556 w +(compromise.) 2234 2556 w +(As) 2933 2556 w +(discussed) 3089 2556 w +(in) 3602 2556 w +(a) 3729 2556 w +(previous) 3820 2556 w +(paper) 4271 2556 w +([Pike89]) 4585 2556 w +(I) 5011 2556 w +(prefer) 720 2676 w +(to) 1047 2676 w +(free) 1178 2676 w +(applications) 1401 2676 w +(from event-based programming.) 2019 2676 w +(Unfortunately, though, I see) 3682 2676 w +(no) 720 2796 w +(easy) 879 2796 w +(way) 1129 2796 w +(to) 1349 2796 w +(achieve) 1483 2796 w +(this) 1880 2796 w +(in) 2095 2796 w +(single-threaded) 2222 2796 w +(C) 3038 2796 w +(programs,) 3143 2796 w +(and) 3678 2796 w +(am) 3894 2796 w +(unwilling) 4079 2796 w +(to) 4557 2796 w +(require) 4692 2796 w +(all) 720 2916 w +(programmers) 877 2916 w +(to) 1578 2916 w +(master) 1720 2916 w +(concurrent) 2096 2916 w +(programming.) 2663 2916 w +(It) 3432 2916 w +(should) 3541 2916 w +(be) 3912 2916 w +(noted,) 4074 2916 w +(though,) 4428 2916 w +(that) 4849 2916 w +(even) 720 3036 w +(this) 991 3036 w +(compromise) 1215 3036 w +(results) 1859 3036 w +(in) 2231 3036 w +(a) 2367 3036 w +(small) 2467 3036 w +(and) 2769 3036 w +(easily) 2995 3036 w +(understood) 3313 3036 w +(interface.) 3916 3036 w +(An) 4450 3036 w +(example) 4627 3036 w +(program that uses it is given near the end of the paper.) 720 3156 w +10 /LucidaSans-Demi f +(Graphical output) 720 3396 w +10 /LucidaSansUnicode00 f +(The) 970 3552 w +(file) 1192 3552 w +10 /LucidaTypewriter f +(/dev/screen) 1384 3552 w +10 /LucidaSansUnicode00 f +(may) 2217 3552 w +(be) 2458 3552 w +(read) 2618 3552 w +(by) 2875 3552 w +(any) 3032 3552 w +(client) 3243 3552 w +(to) 3549 3552 w +(recover) 3689 3552 w +(the) 4089 3552 w +(contents) 4286 3552 w +(of) 4745 3552 w +(the) 4885 3552 w +(entire) 720 3672 w +(screen,) 1045 3672 w +(such) 1438 3672 w +(as) 1707 3672 w +(for) 1856 3672 w +(printing) 2038 3672 w +(\(see) 2466 3672 w +(Figure) 2705 3672 w +(1\).) 3052 3672 w +(Similarly,) 3255 3672 w +10 /LucidaTypewriter f +(/dev/window) 3741 3672 w +10 /LucidaSansUnicode00 f +(holds) 4576 3672 w +(the) 4885 3672 w +(contents of the current window.) 720 3792 w +(These are read-only files.) 2333 3792 w +(To) 970 3948 w +(perform) 1184 3948 w +(graphics) 1666 3948 w +(operations) 2170 3948 w +(in) 2776 3948 w +(their) 2957 3948 w +(windows,) 3272 3948 w +(client) 3814 3948 w +(programs) 4168 3948 w +(access) 4725 3948 w +10 /LucidaTypewriter f +(/dev/bitblt) 720 4068 w +10 /LucidaSansUnicode00 f +(.) 1512 4068 w +(It) 1629 4068 w +(implements) 1748 4068 w +(a) 2370 4068 w +(protocol) 2478 4068 w +(that) 2935 4068 w +(encodes) 3179 4068 w +(bitmap) 3632 4068 w +(graphics) 4025 4068 w +(operations.) 4492 4068 w +(Most) 720 4188 w +(of) 994 4188 w +(the) 1131 4188 w +(messages) 1325 4188 w +(in) 1839 4188 w +(the) 1969 4188 w +(protocol) 2163 4188 w +(\(there) 2606 4188 w +(are) 2930 4188 w +(23) 3121 4188 w +(messages) 3287 4188 w +(in) 3802 4188 w +(all,) 3933 4188 w +(about) 4118 4188 w +(half) 4436 4188 w +(to) 4659 4188 w +(man\255) 4797 4188 w +(age) 720 4308 w +(the) 949 4308 w +(multi-level) 1160 4308 w +(fonts) 1746 4308 w +(necessary) 2049 4308 w +(for) 2579 4308 w +(efficient) 2773 4308 w +(handling) 3222 4308 w +(of) 3701 4308 w +(Unicode) 3854 4308 w +(characters\)) 4300 4308 w +(are) 4888 4308 w +(transmissions) 720 4428 w +(\(via) 1431 4428 w +(a) 1639 4428 w +(write\)) 1733 4428 w +(from) 2045 4428 w +(the) 2316 4428 w +(client) 2510 4428 w +(to) 2813 4428 w +(the) 2950 4428 w +(window) 3144 4428 w +(system) 3552 4428 w +(to) 3931 4428 w +(perform) 4068 4428 w +(a) 4499 4428 w +(graphical) 4593 4428 w +(operation) 720 4548 w +(such) 1240 4548 w +(as) 1521 4548 w +(a) 1682 4548 w +10 /LucidaTypewriter f +(bitblt) 1792 4548 w +10 /LucidaSansUnicode00 f +([PLR85]) 2279 4548 w +(or) 2697 4548 w +(character-drawing) 2854 4548 w +(operation;) 3804 4548 w +(a) 4355 4548 w +(few) 4464 4548 w +(include) 4688 4548 w +(return) 720 4668 w +(information) 1076 4668 w +(\(recovered) 1700 4668 w +(via) 2267 4668 w +(a) 2460 4668 w +(read\)) 2573 4668 w +(to) 2879 4668 w +(the) 3035 4668 w +(client.) 3248 4668 w +(As) 3634 4668 w +(with) 3812 4668 w +10 /LucidaTypewriter f +(/dev/mouse) 4075 4668 w +10 /LucidaSansUnicode00 f +(,) 4795 4668 w +(the) 4885 4668 w +10 /LucidaTypewriter f +(/dev/bitblt) 720 4788 w +10 /LucidaSansUnicode00 f +(protocol) 1550 4788 w +(is) 1992 4788 w +(in) 2110 4788 w +(a) 2239 4788 w +(defined) 2332 4788 w +(byte) 2736 4788 w +(order.) 2982 4788 w +(Here,) 3346 4788 w +(for) 3642 4788 w +(example,) 3818 4788 w +(is) 4300 4788 w +(the) 4417 4788 w +(layout) 4609 4788 w +(of) 4942 4788 w +(the) 720 4908 w +10 /LucidaTypewriter f +(bitblt) 907 4908 w +10 /LucidaSansUnicode00 f +(message:) 1371 4908 w +10 /LucidaTypewriter f +('b') 1080 5088 w +10 /LucidaSansUnicode00 f +(2 bytes of destination id) 1080 5208 w +(2x4 bytes of destination point) 1080 5328 w +(2 bytes of source id) 1080 5448 w +(4x4 bytes of source rectangle) 1080 5568 w +(2 bytes of boolean function code) 1080 5688 w +(The) 970 5904 w +(message) 1199 5904 w +(is) 1671 5904 w +(trivially) 1799 5904 w +(constructed) 2200 5904 w +(from) 2820 5904 w +(the) 3100 5904 w +10 /LucidaTypewriter f +(bitblt) 3303 5904 w +10 /LucidaSansUnicode00 f +(subroutine) 3783 5904 w +(in) 4355 5904 w +(the) 4494 5904 w +(library,) 4698 5904 w +(defined as) 720 6024 w +9 /LucidaTypewriter f +(void) 1008 6194 w +(bitblt\(Bitmap) 1333 6194 w +(*dst,) 2243 6194 w +(Point) 2633 6194 w +(dp,) 3023 6194 w +(Bitmap) 1788 6304 w +(*src,) 2243 6304 w +(Rectangle) 2633 6304 w +(sr,) 3283 6304 w +(Fcode) 3543 6304 w +(c\).) 3933 6304 w +10 /LucidaSansUnicode00 f +(The) 970 6520 w +10 /LucidaSansUnicode20 f +(\030) 1193 6520 w +10 /LucidaSansUnicode00 f +(id) 1225 6520 w +10 /LucidaSansUnicode20 f +(\031) 1317 6520 w +10 /LucidaSansUnicode00 f +(fields) 1392 6520 w +(in) 1700 6520 w +(the) 1834 6520 w +(message) 2032 6520 w +(indicate) 2499 6520 w +(another) 2924 6520 w +(property) 3341 6520 w +(of) 3798 6520 w +(8\275:) 3939 6520 w +(the) 4157 6520 w +(clients) 4355 6520 w +(do) 4713 6520 w +(not) 4880 6520 w +(store) 720 6640 w +(the) 1010 6640 w +(actual) 1209 6640 w +(data) 1542 6640 w +(for) 1796 6640 w +(any) 1979 6640 w +(of) 2192 6640 w +(their) 2334 6640 w +(bitmaps) 2603 6640 w +(locally.) 3038 6640 w +(Instead,) 3452 6640 w +(the) 3881 6640 w +(protocol) 4079 6640 w +(provides) 4526 6640 w +(a) 4985 6640 w +(message) 720 6760 w +(to) 1189 6760 w +(allocate) 1332 6760 w +(a) 1750 6760 w +(bitmap,) 1851 6760 w +(to) 2269 6760 w +(be) 2413 6760 w +(stored) 2578 6760 w +(in) 2933 6760 w +(the) 3070 6760 w +(server,) 3271 6760 w +(and) 3646 6760 w +(returns) 3872 6760 w +(to) 4268 6760 w +(the) 4412 6760 w +(client) 4613 6760 w +(an) 4923 6760 w +(integer) 720 6880 w +(identifier,) 1101 6880 w +(much) 1610 6880 w +(like) 1916 6880 w +(a) 2126 6880 w +(UNIX) 2219 6880 w +(file) 2492 6880 w +(descriptor,) 2681 6880 w +(to) 3244 6880 w +(be) 3380 6880 w +(used) 3537 6880 w +(in) 3807 6880 w +(operations) 3936 6880 w +(on) 4490 6880 w +(that) 4650 6880 w +(bit\255) 4878 6880 w +(map.) 720 7000 w +(Bitmap) 1046 7000 w +(number) 1432 7000 w +(0) 1860 7000 w +(is) 1974 7000 w +(conventionally) 2105 7000 w +(the) 2854 7000 w +(client) 3061 7000 w +10 /LucidaSansUnicode20 f +(\031) 3325 7000 w +10 /LucidaSansUnicode00 f +(s) 3357 7000 w +(window,) 3460 7000 w +(analogous) 3913 7000 w +(to) 4463 7000 w +(standard) 4613 7000 w +(input) 720 7120 w +(for) 1006 7120 w +(file) 1178 7120 w +(I/O.) 1362 7120 w +(In fact, no bitmap graphics operations are executed in the client at all;) 1619 7120 w +(they) 720 7240 w +(are) 961 7240 w +(all) 1147 7240 w +(performed) 1294 7240 w +(on) 1839 7240 w +(its) 1996 7240 w +(behalf) 2147 7240 w +(by) 2483 7240 w +(the) 2632 7240 w +(server.) 2821 7240 w +(Again,) 3216 7240 w +(using) 3559 7240 w +(the) 3859 7240 w +(standard) 4048 7240 w +(remote) 4510 7240 w +(file) 4889 7240 w +cleartomark +showpage +saveobj restore +%%EndPage: 5 5 +%%Page: 6 6 +/saveobj save def +mark +6 pagesetup +10 /LucidaSansUnicode00 f +(\255 6 \255) 2783 480 w +cleartomark +saveobj restore +%ps_include: begin +save +/ed {exch def} def +{} /showpage ed +{} /copypage ed +{} /erasepage ed +{} /letter ed +currentdict /findfont known systemdict /findfont known and { + /findfont systemdict /findfont get def +} if +36 dict dup /PS-include-dict-dw ed begin +/context ed +count array astore /o-stack ed +%ps_include: variables begin +/llx -97 def +/lly 96 def +/urx 709.4 def +/ury 695.04 def +/w 0 def +/o 0 def +/s 0 def +/cx 3024 def +/cy -2457.5 def +/sx 4032 def +/sy 2995 def +/ax .5 def +/ay .5 def +/rot 0 def +%ps_include: variables end +{llx lly urx ury} /bbox ed +{newpath 2 index exch 2 index exch dup 6 index exch + moveto 3 {lineto} repeat closepath} /boxpath ed +{dup mul exch dup mul add sqrt} /len ed +{2 copy gt {exch} if pop} /min ed +{2 copy lt {exch} if pop} /max ed +{transform round exch round exch A itransform} /nice ed +{6 array} /n ed +n defaultmatrix n currentmatrix n invertmatrix n concatmatrix /A ed +urx llx sub 0 A dtransform len /Sx ed +0 ury lly sub A dtransform len /Sy ed +llx urx add 2 div lly ury add 2 div A transform /Cy ed /Cx ed +rot dup sin abs /S ed cos abs /C ed +Sx S mul Sy C mul add /H ed +Sx C mul Sy S mul add /W ed +sy H div /Scaley ed +sx W div /Scalex ed +s 0 eq {Scalex Scaley min dup /Scalex ed /Scaley ed} if +sx Scalex W mul sub 0 max ax 0.5 sub mul cx add /cx ed +sy Scaley H mul sub 0 max ay 0.5 sub mul cy add /cy ed +urx llx sub 0 A dtransform exch atan rot exch sub /rot ed +n currentmatrix initgraphics setmatrix +cx cy translate +Scalex Scaley scale +rot rotate +Cx neg Cy neg translate +A concat +bbox boxpath clip newpath +w 0 ne {gsave bbox boxpath 1 setgray fill grestore} if +end +gsave +%ps_include: inclusion begin + %!PS-Adobe-2.0 + %%Version: 3.3.2 + %%DocumentFonts: (atend) + %%Pages: (atend) + %%EndComments + %%EndProlog + %%BeginSetup +mark + %%Patch from lp + %%EndPatch from lp + +/picstr 280 string def +-97 96 translate +806.40 599.04 scale + +1120 832 2 [1120 0 0 -832 0 832] +{currentfile picstr readhexstring pop} image + +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcc0000000 +0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000 +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcc000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000fcfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfccffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +fcc0000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +cfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +fccfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffcffc00000ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +cfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffcffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +fccfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffcffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +cfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffcffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +ffc3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +fccfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffcffcffffcfffc0fffffffffffffffffffffff +fff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccffffc00 +03c3ffffffffffff003fffffffffffffffc00ffc0ffffffff0ffc00fffffff03 +ffc0fffffffffffffffffffffffffffffffffffffffffffc +cfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffcffcffffcfff0c3cfffffffffffffffffffff +fff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcffffff0 +ffc3ffffffffffff0f0fffffffffffffff0f03f0c3ffffffc0ff0f03fffffc30 +ff0c3ffffffffffffffffffffffffffffffffffffffffffc +fccfffff0ffc03fff0fffc3fffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffcffcffffcfff0c33fc00ffffff003ff00fc00 +fff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccffffff0 +ffc303f0fc3fffff0fc3fc03ff00ffffffffc3c3f0ffffff30ffffc3fffff0fc +3c3f0ffffffffffffffffffffffffffffffffffffffffffc +cfcfffff0ff0fffff0fffc3ff0fff03fffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffcffcffffcfffc0cff0f0fffffc3fcfc3f3ffc +3f0003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcffffff0 +ffc0c0f0fc3fffff0fc3f0f0fc3f3fffffffc3c3f0fffffff0ffff0ffc3ff0fc +3c3f0ffffffffffffffffffffffffffffffffffffffffffc +fccffffc3ff0fffff0fff0ffc0ffc30fffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffcffcffffcfffff3fc3f0fffffc3fff0fffffc +3ff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccffffff0 +ffc3f0f0fc3fffff0fc3c3f0f0ffffffffff0fc3f0fffffff0fff03ffc3ff0fc +3c3f0ffffffffffffffffffffffffffffffffffffffffffc +cfcffffc3ff0fffc00fff0ff30ff0fc3ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffcffcffffcffffcffc3f0fffffc00ff0fffc00 +3ff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcffffff0 +ffc3f0f0fc3fffff0fc3c000f0fffffffffc3ff0c0fffffff0ffff0ffffff0fc +3c3f0ffffffffffffffffffffffffffffffffffffffffffc +fccffff0ff0003f0f0ffc3fff0ff0fc3ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffcffcffffcffff303c3f0ffffffc00f0fff0fc +3ff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccffffff0 +ffc3f0f0fc3fffff0fc3c3fff0fffffffff0fffc30fffffff0ffffc3fffff0fc +3c3f0ffffffffffffffffffffffffffffffffffffffffffc +cfcffff0fff0ffc3f0ffc3fff0ff0fc3ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffcffcffffcfffcc30f0c0ffffffff0f0fff0fc +3ff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcffffff0 +ffc3f0f0fc3fffff0fc3c3fff0ffffffffc3fffff0fffffff0ffffc3fffff0fc +3c3f0ffffffffffffffffffffffffffffffffffffffffffc +fccfffc3fff0ffc3f0ff0ffff0ff0fc3ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffcffcffffcfff3c30fc30fffffcff0fc3f30f0 +3ff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccffffff0 +ffc3f0f0303fffff0f0ff0fcfc3f3fffff0003c3c3fffffff0ff0f03fc3ffc30 +ff0c3ffffffffffffffffffffffffffffffffffffffffffc +cfcfffc3fff0ffc3f0ff0ffff0ff0fc3ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffcffcffffcfffff03fff0ffffff003ff00fc0c +0ffc03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcffffff0 +ffc3f0fc0c3fffff003ffc03ff00ffffff0003f00ffffffff0ffc00ffc3fff03 +ffc0fffffffffffffffffffffffffffffffffffffffffffc +fccfff0ffff0ffc3f0fc3ffff0ff0fc3ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffcffcffffcfffffffc3c3fffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +cfcfff0ffff0fff0c0fc3ffff0ffc30fffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffcffcffffcffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +fccffc3ffff0fffc30f0fffff0fff03fffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffcffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +cfcffc3ffffffffffff0ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffcffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +fccfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffcffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +cfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffcffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +fccfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffcffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +ffffffff8001ffffffffffffffffffffffffffffffffffffffffffffffffa945 +bffffffffffffffffffffff45515fffffffffffffffffffc +cfcfc00000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000ffcffffcffffffffffffffffff0ffc00ffc0 +fff03fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +ffffffe0004403ffffffffffffffffffffffffffffffffffffffffffff995655 +05bfffffffffffffffffff0101505ffffffffffffffffffc +fccfc00000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000ffcffffcfffffffffffffffffc0ff0f03f0c +3fc30fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +fffffd000100003fffffffffffffffffffffffffaffffffffffffffffc415445 +105bfffffffffffffffff011455541fffffffffffffffffc +cfcfc00000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000ffcffffcfff0c0ffc00ff00ff30ffffc3c3f +0f0fc3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +ffffe00140000003ffffffffffffffdfffffffffe7fffffffffffffff1156151 +4456ffffffffffffffff8004040004bffffffffffffffffc +fccfc00000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000ffcffffcfff0303f0f0fc3f3ff0ffff0fc3f +0f0fc3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +ffff400000400001bffffffffffffebffffffffff9ffffffffffffffd0404912 +0016bffffffffffffffd00101140006ffffffffffffffffc +cfcfc44444444444111044444444444444441044444411111110444444444444 +4444444444444444444444444410444444444444444411111044444444411111 +1044411111104444444444444444ffcffffcfff0fc3c3f0f0fffff0fff03fc3f +0f0fc3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +fffc0000010500003ffffffffffffdffffffffffed7fffffffffffffc1056518 +1142affffffffffffff500404015000ffffffffffffffffc +fccfc10010000101040410100001010004010401004100410101010041010401 +0004101110100104100101010404010000010101000100400101000010100101 +0401101004010010010000441010ffcffffcfff0fc3c3f0f0fffff0ffff0fc3f +0f0fc3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +fff00000010000000ffffffffffff2ffffffffffba5fffffffffffff001545a5 +0005abffffffffffffe0006544401113fffffffffffffffc +cfcfc41101114044010104044440441110441044110411041010441104104110 +4441010001044410411010410110404444444410111044045010111101044410 +0444044110404404441111010400ffcffffcfff0fc3c3f0f0fffff0ffffc3c3f +0f0fc3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +ffe000000000000003ffffffffffd7ffffffffffee5ffffffffffffc11101550 +0111a67fffffffffffc006be54000001fffffffffffffffc +fccfc04044041040441041110110000404100411004100400440400410401004 +0010441110410101004104104401040410100104410401010104401044404041 +1000410404110110110410101044ffcffffcfff0fc3f0c0f0fffff0ffffc3c3f +0f0fc3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +ffc000000000000003ffffffffffd6ffffffffffea97fffffffffffc00014511 +041149bfffffffffff005bffd4400005bffffffffffffffc +cfcfc40401010404004110441004444101011000441044044105111041044441 +1104010041104044110441040110411104044040101044101041044000040404 +0111041041101004404101044010ffcffffcfff0fc3fc30fc3f3ff0ff0f03f0c +3fc30fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +ffc000000005000000ffffffffffc3ffffffffffee57fffffffffff044100450 +1055555fffffffffff01bfffe54400403ffffffffffffffc +fccfc04110404110441011010440011010440111010411101011404100410011 +0041104410041101040104104404104010411114410410410440010514410440 +4040404010010140041044010440ffcffffcfff0fc3fff0ff00fff0ffc00ffc0 +fff03fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +ff4000000010000000ffffffffff47fffffffffffa83ffffffffffc000004445 +50555657fffffffffd06bfffea1004006ffffffffffffffc +cfcfc41004101004110400441104440104004004104100010440101044104440 +4410040104410044104401041041040441040540041041000104501001104104 +1104110441104411110400440404ffcffffcfffffffc3c3fffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +ff0000000000000000ffffffffff46ffffffffffae47ffffffffff0000000155 +01655996fffffffffc06fffffe9451410ffffffffffffffc +fccfc10441040440404111010100404410441110040044440104410401040010 +0441104410104401010050404100404104004544410404111040044110001010 +0401004004041040404111004110ffcffffcffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +fd0000000050000000ffffffffff03ee9abfffe96a82fffffffffe4010420069 +555955a5fffffffff407ffffffea55104ffffffffffffffc +cfcfc41010104114041040404411040104040404411401011010104110411104 +4010410104401044104404110411041040441640100110041011100404444101 +1044101110100410101040441000ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +fc10000001400000017ffffffffe07b6bd8555469900fffffffffe00040105a5 +49945591fffffffff417bffffffffd5147fffffffffffffc +fccfc04104110401010410110040111041010440104110441101041004000041 +0441041004044104040441004010040411011911011041104401011041041010 +4040044004014104040404104110ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +fc00000000100000003ffffffffd03aafa5af956a600fffffffffc00440115a6 +51955665fffffffff44affffffffff9147fffffffffffffc +cfcfc40041001044104041004411040414444011001010110040410441111104 +0400410440401041104104110404411100441441100410410110100410100411 +0411100441101041111041010100ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +fc00000001100400517ffffffffd03761156a55415107ffffffffc0000005bbe +985555c1bffffffff407fa9bff906aa107fffffffffffffc +fccfc04410444001010410440100410115400400110404404411041010040040 +4111004010410410404401004140440044104504044104104404444104014100 +0100044010444100004104101010ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +fc00000000117554443ffffffffc05a48159a15151203ffffffff00000016fff +e5265a457ffffffff40a94016956ffe053fffffffffffffc +cfcfc40100110440441041011011104455144111044110041100400441105104 +1040441104104104110110111011004410404690410410401041001010440411 +1011101111000411111041010104ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffc3fffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff03ffffffffffffffffffffffffffffffffff +ffffffffffffffffff03ffffffffffffffffffffffffffffffffff0fcfffffff +fc000000015ffa01107ffffffffc05bbaba8f9aa96401ffffffff00000056bff +fffd90567ffffffff4067fdbfe59966013fffffffffffffc +fccfc11044404111100104100440040104411040401041010411044010040040 +4404104045441041101001040440441100111fd4104040110410110401004041 +0100444004111000400404111040ffcffffcfff0ff3fc03ff00fff0ffc00ffc0 +fff03fffffff00ffffffffffff0fff03ffffffff0fffffffffffffffffffffff +fffffffffffffffffffc00fc3ffffc3ffc0ffffffc000ffffffffffffffff0ff +f03ffc0ffc00fc000ffffffc0fff03ffffffffffffffffffffffffffffffffff +ffffc03fffffc000ff03ffffffffffffffffffffffffffffffffff3ccfffffff +fd04000006ffee0101bffffffffc1aed997afc555a501fffffff80000401abff +ffffe664bffffffffc0a54545560116047fffffffffffffc +cfcfc10100110004444000044411011010011010110404101010101101104404 +4101010411444104010444410011004044405b91041104404104400110441040 +4411004440010111111044404404ffcffffcfff03f3f0f0fc3c3fc0ff0f03f0c +3fc30ffffffc3c3ffffffffffc0ffc30fffffffc0fffffffffffffffffffffff +fffffffffffffffffff0f03c3ffff03ff0c3fffffc000fffffffffffffffc0ff +c30ff3f3f0f03c000ffffff0c3fff3ffffffffffffffffffffffffffffffffff +ffff0f0fffffc000fff3ffffffffffffffffffffffffffffffffff0fcfffffff +fe1e45557fffff8000fffffffffc5b7fbff3fdbabb900fffffff4000000506bf +fffff1987ffffffffd1542517e0451644bfffffffffffffc +fccfd01011041100041111104101100441104441004101010404410044040110 +1040441106901040404104104440440400110584100040101010044411010411 +0104040104404104110410100100ffcffffcfff03f3c3fff0ffff30ffffc3c3f +0f0fc3fffff0fffc3f0ffffff30ff0fc3ffffff30fffffffffffffffffffffff +fffffffffffffffffffffc3c303fcc3fc3f0ffffffff0cc30fffffffffff30ff +0fc3f3f3fffc3cffffffffc3f0ff0fffffffffffffffffffffffffffffffffff +fffc3fffffffcfffff0fffffffffffffffffffffffffffffffffff3ccfffffff +fe2abaffffffff6000fffffffffc5bbeffdfff3ffa900fffffff40000005846f +fefff16abfffffffff4559965c66aaa95ffffffffffffffc +cfcfc10404400411104041001010044010410410441044104110004410411004 +4011010411b44011041041040411010111040440411011044104401040404040 +1041104040110410100111044410ffcffffcfff30f3c3fff0fffff0ffff0fc3f +0f0fc3fffff0fffc3f0fffffff0ff0fc3fffffcf0fffffffffffffffffffffff +fffffffffffffffffffff0fc0c0ffc3fc3f0fffffffc3c30c3fffffffffff0ff +0fc3fc0ffffc3cffffffffc3f0ffffffffffffffffffffffffffffffffffffff +fffc30ffffffcfffffffffffffffffffffffffffffffffffffffff0fcfffffff +ff3aafefffffff8000fffffffff85fdfffafff4bae541fffffff00000110145b +d60af0697fffffffffdaa96abfa9aaa8affffffffffffffc +fccfc01040110104040410110104401100004101110010441004110101044440 +1100444041a40410110410011040101041114410100441100410110404101104 +0410040404401001044404404040ffcffffcfff30f3c3fff0fffff0fff03fc3f +0f0fc3fffff0ffff0f3fffffff0ff0fc3fffff3f0fffffffffffffffffffffff +ffffffffffffffffffff03fc3f0ffc3fc3f0fffffff0fc30c3fffffffffff0ff +0fc3fffffff0fc003fffffc3f0ffffffffffffffffffffffffffffffffffffff +fffc0c3fffffc003ffffffffffffffffffffffffffffffffffffff3ccfffffff +ff25aeffbfffffe000fffffffff93bbaa57ffe8555601fffffff00000045201b +79bba2547fffffffffcabfee7f6feba8affffffffffffffc +cfcfc40411001040404101004044110411111044004404104110404410100104 +4044001101251041104101100404444410441104414010044104041041044041 +0104404041044110004040110104ffcffffcfff3c33c3f0f0fffff0ffff0fc3f +0f0fc3fffff0fc3fc0ffffffff0ff0fc3fffff0003ffffffffffffffffffffff +fffffffffffffffffffff0fc3f0ffc3ff0c0ffffffc3fc30c3fffff0003ff0ff +c303ffffffc3fffc0fffffc3f0ffffffffffffffffffffffffffffffffffffff +fffc3f0fffffffc0ffffffffffffffffffffffffffffffffffffff0fcfffffff +ff3506eeffffffb001fffffffff86efffeb9a86aa5553fffffff50000151a84f +b53684656fffffffffcaaeeabfabeea87ffffffffffffffc +fccfc11040444004110444101101004100404401110111010101101004444410 +0410444040510404040410444110004041010441101104441001104104011104 +1040441104041041110411001010ffcffffcfff3c33c3f0f0fffff0ffffc3c3f +0f0fc3fffff0fc3fc0ffffffff0ff0fc3fffff0003ffffffffffffffffffffff +fffffffffffffffffffffc3c3f0ffc3ffc30ffffffc3fc30c3fffffffffff0ff +f0c3ffffff0fffff0fffffc3f0ffffffffffffffffffffffffffffffffffffff +fffc3f0ffffffff0ffffffffffffffffffffffffffffffffffffff3ccfffffff +ffea406eaabaaff003fffffffff8abafa3e00059a954afffffffe000016aa45f +bb7ad111afffffffffd5bee9ffe7bf58bffffffffffffffc +cfcfc40404010441041010040410110410041044041040441041110441010104 +4404101104104110411004011004440410441010044040101511041010400001 +0404000040410104104010444104ffcffffcfff3f03c3f0f0fffff0ffffc3c3f +0f0fc3fffff0fc3f3c3fffffff0ff0fc3fffffff0fffffffffffffffffffffff +fffffffffffffffffffffc3c3f0ffc3ffff0ffffff0ffc30c3fffffffffff0ff +ffc3fffffc3fffff0fffffc3f0ffffffffffffffffffffffffffffffffffffff +fffc3f0ffffffff0ffffffffffffffffffffffffffffffffffffff0fcfffffff +ffe5045a54057af003fffffffff46aa94e9540561550afffffffc0000156612f +eebfd4156fffffffffe27fd3aab59964bffffffffffffffc +fccfc11041104110400104411041004104410101010411000411440010101041 +0101044041041004100441100441011101010404440411010510410404111110 +4101111101004001040404100440ffcffffcfff3f03f0f0fc3c3ff0ff0f03f0c +3fc30ffffffc3c3c3f0fffffff0ffc30ffc0ffff0fffffffffffffffffffffff +fffffffffffffffffff0f03c3f0ffc3fc3c3ff03ff0ffc30c3fffffffffff0ff +0f0ffffff0003c3c3ff03ff0c3ffffffffffffffffffffffffffffffffffffff +ffff0c3ff03fc3c3ffffffffffffffffffffffffffffffffffffff3ccfffffff +ffaaa85bf484bfe03ffffffffff51aea6555140565516ffffffff000001a942f +ffffd4447fffffffffe26544000aba95bffffffffffffffc +cfcfc40110410401044440100104110410041040444004111040411104044100 +4410401110410101044104044104110044104110011100441104101041044044 +0040404010141110404111044010ffcffffcfff3fc3fc00ff00fff0ffc00ffc0 +fff03fffffff003c3f0fffffff0fff03ffc0ffff0fffffffffffffffffffffff +fffffffffffffffffffc00fc3f0ffc3ff00fff03ff0ffc30c3fffffffffff0ff +c03ffffff0003f00fff03ffc0fffffffffffffffffffffffffffffffffffffff +ffffc0fff03ff00fffffffffffffffffffffffffffffffffffffff0fcfffffff +ffeab56bf9afeff4fffffffffff006aa5511604055503ffffffff0000056507f +efffcd12aefffffffff59925001aaa95fffffffffffffffc +fccfc11010400044101004411040401004404104100441104010110410401011 +0104110404101044001041010410404401041041100044010040040410441001 +1104101104400010110100401104ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +ffeaea6bffabffef7fffffffffe412a95004100115106ffffffffc00012a917f +fffff8441bfffffffffc5455001a9a52fffffffffffffffc +cfcfc00441044410410110104410110110101041010104041104414104110404 +4041004044410401110410440104110110404104044401104411011041010444 +0010040040044441041044110100ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +fffbaaabfeefffefbfffffffffd042a50445540015001ffffffff0000459406f +fffff151fffffffffff951150010765bfffffffffffffffc +fccfc44110010104104041010104041001044100444410410001001041004100 +1010440440104110404104011041004404440040410111041040440410104001 +1101111011000010410400401040ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +ffebb56bfebfffbfffffffffff80055545aeba1010410bfffffffa000059402f +fffff595fffffffffffd14000010155bfffffffffffffffc +cfcfc01004441040410404101041004444410044000000104444110410440411 +0440044104410044041041104410440444104404101040410404004044044444 +0044004104444441104044044410ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +fffa829eeabfffefffffffffff4014551abae954100003fffffff40001164018 +7fffa15bfffffffffff910001100054bfffffffffffffffc +fccfc44110010410101110444410440000101100444444400101004104111040 +4411101044104401010410100404411001010111040404100111111101100101 +0401110410040410041010400104ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +ffe94abff96fffbfffffffffff0445155a555554440100fffffff000101514be +ffff95affffffffffffd0016ef550547fffffffffffffffc +cfcfc10104440101044001004004011111010044104010411044110410400411 +0101010410410444104104444110100444101041111041011040404040411044 +1044100041104101100441111040ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +fff5256b5f5bbefffffffffffe405154199954501000157fffffc000010554a5 +affe55fffffffffffffd00641015040ffffffffffffffffc +fccfc41040404410400440100441101040441004040441004010404040044040 +1040444440104041041001004404444101044410104010100411041011040410 +0410044400411044044104004404ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffc3ffff0ffffffffffffffc3fff003fffff +fffffc3fffffffff0ffffffc3fffffffffffffffffffffffffffffffffffffff +003fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffc3ffffffffffffffffffffffffffffffffc3fffffffc3ffffff3ccfffffff +ffe959a9ffdeff8ffffffffffd15111056aab55110458e7fffffd400000511ba +59fe56ffffffffffffff0054404a4000fffffffffffffffc +cfcfc01104044044111011011010044011010441010100441101040411104411 +0411004004001110410110110101004410410104410444410104104100004101 +0441010111004010401010440110ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffc3ffff0ffffffffffffffc3ffffc3fffff +fffffc3fffffffff0ffffffc3ffff0ffffffffffffffffffffffffffffffffff +fc3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffc3fffffffffffffffffc3fffffffffffffc3fffffffc3ffffff0fcfffffff +ffea46abbffbfbbffffffffffe15445116aaa950100552bfffffc400001544aa +a5b96fffffffffffffff0060000640100bfffffffffffffc +fccfc44001101001040100440404410440441010444044110044011004041100 +4100441110444004104411041044110104104441040001004410010414441040 +4104404404110440041101104004ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff0ffffffffffffffc3ffffc3fffff +fffffc3ffffffffffffffffc3ffff0ffffffffffffffffffffffffffffffffff +fc3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffc3fffffffffffffffffc3fffffffffffffc3fffffffc3ffffff3ccfffffff +fffaa19afebbbfbffffffffffe16000115596540051145bfffffc00000154bff +a5a946fffffffffffffc00541159400700fffffffffffffc +cfcfc10444010444011011011040104011010104001010004410440441110044 +1044101041010444041004410400041041041040405110444041104040104104 +1001041040404011010410041100ffcffffcffffffffffffffffffffffffffff +ffffffffffff00ffc0ff0c0ff003f003ffc00ff00ff0f0f003fc30fffc3fc3f0 +fffffc30ffc3c3c00fff003c303ff0fffffffffffc3f0ff00ff0f0f0fc3fffff +fc3fc00ffc3c3fc00ff00ffffffffffc3f0ff00ff0f0f0fc3ffffcc30fc3f0ff +00fc303ffffffc03f0fc3fc3fff00fc303ff003fc03ff003ffffff0fcfffffff +ffeada6be7bffefffffffffffe991154504040401000676fffffe2000015546b +f26554fffffffffffff000154459002c8017fffffffffffc +fccfc40041104001100410440411040440404441110441110104104110011001 +0404110410441041010110104111110411104104110404104410040411040411 +0444104044100440440101110044ffcffffcffffffffffffffffffffffffffff +fffffffffffc3f3f0c3f0303c3fcffc3ff0f0fc3c3f0c0fff0fc0c3ffc3fc3f0 +fffffc0c3fc303ff0ffc3c3c0c0f0003fc3ffffffc3f0fc3c3f0c0f0fc3fffff +fc3fffc3fc303f0f0fc3c3fc3ffffffc3f0fc3c3f0c0f0fc3ffffc30c3c3f0fc +3f3c0c0ffffff0f0f0fc3c000fc3c3c0c0fc3c3f0f0fc3c3ffffff3ccfffffff +fffaaaaafffbbbfffffffffffef1411144010000404466bffffffb000052059a +b254107fffffffffff4000040111002b90005ffffffffffc +cfcfc04400041110044100010104404004101010411011011010410404440444 +1041004104110410441101041040404104041044404044041041104100404040 +4000411001044004104010404404ffcffffcffffffffffffffffffffffffffff +fffffffffff0fffc3f0f0fc3c3ffffc3fc3f0f0fc3f03cfff0fc3f0ffc3fc3f0 +fffffc3f0fc0f3ff0ff0fc3c3f0ff0fffc3ffffffc3f0f0fc3f03cf0fc3fffff +fc3fffc3fc0f3c3f0f0fc3fc3ffffffc3f0f0fc3f03cf0fc3ffffc30c3c3f0f0 +fffc3f0fffffc3f0fc3cffc3ff0fc3c3f0f0fc3c3f0f0fc3ffffff0fcfffffff +fffaaaabfffefefffffffffffff0145110040004000402fffffffc0000051016 +e255567ffffffffff00000004051002f90111ffffffffffc +fccfc40111104011111011104040101110044104100100100404101041011040 +4010441041004104010444410411041040410410041101104104041011041004 +1111040440401101041104110100ffcffffcffffffffffffffffffffffffffff +fffffffffff0fffc3f0f0fc3c00fffc3fc3f0f0003f0fff000fc3f0ffc3ff0c3 +fffffc3f0fc3ffff0ff0fc3c3f0ff0ffffffffffff0c3f0003f0fffc30ffffff +fc3fc003fc3ffc3f0f0003ffffffffff0c3f0003f0fffc30fffffc30c3c3f0f0 +fffc3f0fffffc000ff03ffc3ff0003c3f0f0fc3c000f0fc3ffffff3ccfffffff +fffeaaaaffebebfffffffffffb816544000000000445455bffffffc000011046 +9851157ffffffffd000010001040003fe0000ffffffffffc +cfcfc04410401100000100101104040041000401044044411101044104100410 +1111010410101041101010104140440411104004410410410410410440400444 +1040104104044010104041041044ffcffffcffffffffffffffffffffffffffff +fffffffffff0fffc3f0f0fc3fc00ffc3fc3f0f0ffff0ffc3f0fc3f0ffc3ff0c3 +fffffc3f0fc3ffff0ff0fc3c3f0ff0ffffffffffff0c3f0ffff0fffc30ffffff +fc3f0fc3fc3ffc3f0f0fffffffffffff0c3f0ffff0fffc30fffffc30c3c3f0f0 +fffc3f0fffffc3ffff03ffc3ff0fffc3f0f0fc3c3fff0fc3ffffff0fcfffffff +ffffa9abeffeaffffffffffffd01a4445000010010145669fffffffe00044115 +14459a7fffffffd0000010010010006fa0000ffffffffffc +fccfc41004040444444444410401011100444110010401040044401001044104 +4104104041044410044104441150110100041140104104040101004011044411 +0411001010400401040410404100ffcffffcffffffffffffffffffffffffffff +fffffffffff0fffc3f0f0fc3fff0ffc3fc3f0f0ffff0ffc3f0fc3f0ffc3ffc0f +fffffc3f0fc3ffff0ffc303c3f0ff0ffffffffffff0cff0ffff0ffff03ffffff +fc3f0fc3fc3fff0c0f0fffffffffffff0cff0ffff0ffff03fffffc30c3c3f0f0 +fffc3f0fffffc3fffcf0ffc3ff0fffc3f0f0fc3c3fff0fc3ffffff3ccfffffff +ffffaaafffbaedfffffffffffa4a95540010000100455966fffffffd00000515 +5116bf7ffffff800000010000044005fe0001ffffffffffc +cfcfc10110411010100110104040404044101041104110411100110110411044 +1010411104010041100440010104404411410011041010411044110440401040 +4104110400110110104104041010ffcffffcffffffffffffffffffffffffffff +fffffffffffc3f3f0c3f0fc3cff0ffc3ff0c0fc3f3f0ffc3c0fc3c3ffc3ffc3f +fffffc3c3fc3ffff0fff0c3c3f0ff0fffc3fffffffc0ffc3f3f0ffff0fffffff +fc3f0f03fc3fffc30fc3f3fc3fffffffc0ffc3f3f0ffff0ffffffc30c3c0c0fc +3f3c3f0ffffff0fcf0fc3fc3ffc3f3c3f0fc303f0fcfc303ffffff0fcfffffff +ffd2a6bbfeebbc3fffffffffeaaa5940040000000115669afffffffc00005021 +146ffffffffff00000002000001001afa0000ffffffffffc +fccfc41040040104411004410411040401010404441010100411104404100101 +0404040400441001044011104041041104101104410441104100401011040404 +0441010111011004401041110404ffcffffcffffffffffffffffffffffffffff +ffffffffffff00ffc0ff0fc3f003ffc3ffc30ff00ff0fff0303c00fffc3ffc3f +fffffc00ffc3ffff0ffffc3c3f0ffc03fc3fffffffc3fff00ff0ffff0fffffff +fc3fc0c0fc3fffff0ff00ffc3fffffffc3fff00ff0ffff0ffffffc30c3f030ff +00fc3f0ffffffc03f0fc3ff00ff00fc3f0ff0c3fc03ff0c3ffffff3ccfffffff +ffc1aaabbabaf86fffffffffbaaaa5144040001004156669fffffffc00000045 +454ffffffffff01000001500000002bfc0000ffffffffffc +cfcfc10404411041004110040100104110444110010104411041000110044410 +4111014111104110101104101110410040410410104404040444110440411041 +1010404410440441044110004110ffcffffcffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ff +fffffffffffffffffff0f0ffffffffffff3ffffffffffffffffffffc3fffffff +fffffffffffffc3c3fffffff3ffffffffffffffffffffc3fffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +ff82a55a5aebf91fffffffffaaea6550010000004045915afffffff000000000 +579ffffffffff00000000a5000000abf40000ffffffffffc +fccfc40101010410101041011011010404001004404441010410444401100104 +1040144004111041044041044401044411041004041041111011004004040410 +0444104104004010001001110004ffcffffcffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ff +fffffffffffffffffffc03fffffffffffcfffffffffffffffffffffc3fffffff +ffffffffffffff00fffffffcfffffffffffffffffffffc3fffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +ff41aa956aafed1fffffffffbaaaa51000000040000400a6ffffffd000000015 +5f87fffffffff00000000658000009ae00000ffffffffffc +cfcfc04044100104044010440400441041110440111004100104101044044401 +0404451110401104004410400110401110410441110410404104100441104104 +4001041010440441110110401110ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +fccfc41101044401101104104111000010004011000441044401010100400110 +4104100441050041110104111004444004104110004111110041044410001040 +1110444101011000404404110104ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccffffff0 +fffffffffffffffffffff0fffffffffc3fffffffffffffffffffffffffffffff +ffffffffff0fffffffffc3ffffffc3fffffffffffffffffc +cfcfc10410400110041041041010111101110441111010410110444411045011 +1041044100404411041041000441001101041041111040001104410104444111 +0404101044100111040111041040ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcffffff0 +fffffffffffffffffffff0fffffffffc3fffffffffffffffffffffffffffffff +ffffffffff0fffffffffc3ffffffc3fffffffffffffffffc +fccfc04044051041104104404101041044004010104104004410000040040501 +0104401011110440410410444010110110410401040411144040104401001000 +4110410401044410104400404410ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccffffff0 +fffffffffffffffffffff0fffffffffc3fffffffffffffffffffffffffffffff +ffffffffff0fffffffffc3ffffffc3fffffffffffffffffc +cfcfc41100404101000410110444104101110404410441141044445104411010 +1040110404104111044441041104044441044110411041001011040110450444 +1001004110100104041044040100ffcffffcffffffffffffffffffffffffffff +fffffffffffffffffffffffffff0fffc3fffffffffc00fffffffffffffffffff +ffffffffffffffffffffffffffff0ffffffff0fffffffffc3ffffff0ffffffff +fffffffffffffffc3ffc3fffffffffffffff0ffffffffc3fffffffffffff0fff +fc3fff0f003fffffffffffffffc00fffffffffffffffffffffffff0fcffffff0 +c3fc03c3fcfc03f030fc00fffffffffc3c3f00fc30ffffffffffc00fc03f030f +c03f030fc00fffffffffc30f0ff3c3c3fffffffffffffffc +fccfc10410440040110101100010040410001110040040410401100010100104 +4411004110040000100104104041041010041111040404110440411004004101 +0110110044010404410410411010ffcffffcffffffffffffffffffffffffffc3 +fff0fffffffffffffffffffffff0fffc3fffffffffff0fffffffffffffffffff +ffffffffffffffffffffffffffff0ffffffff0fffffffffc3ffffff0ffffc3ff +fffffffffffffff0fffc3fffffffffffc3ff0fffffffff0fffffffffffff0fff +fc3fff0ffc3fffffffffffffffc3fffffff003ffffffffffffffff3ccffffff0 +30f0f0c30cf0f0fc30f0f0fffffffffc3cfc3c3c0c3fffffffff0f0f0f0fc30f +0f0fc30f0f0fffffffffc0c30c33c3cffffffffffffffffc +cfcfc04041004404404410411101104004440001104404044110411411044040 +0104111041104444411041041010410104410041104441004104101110441040 +1004404441101046104104100440ffcffffcffffffffffffffffffffffffffc3 +fff0fffffffffffffffffffffff0fffc3fffffffffff0fffffffffffffffffff +ffffffffffffffffffffffffffff0ffffffff0fffffffffffffffff0ffffc3ff +ffffffffffffffc3ffffffffffffffffc3ff0fffffffffc3ffffffffffffffff +fc3fff0ffc3fffffffffffffffc3fffffff0f0ffffffffffffffff0fcffffff0 +f0f0f0c30cfff0fc0ff0f0fffffffffc33fc3c3c3c3fffffffff0f0f0f0fc0ff +ff0fc0ff0f0fffffffffc3c30c33c33ffffffffffffffffc +fccfc41004110100040104104410400441111110040041101044100100401004 +4441000410041104104410110444104100104410411011141041044104104044 +411011001041042b841041044010ffcffffcffffffffffff0c3ff0f0ff00ffc3 +fff0ffc3f0ffffff003f0fc3fc00ff003fc03f0c0fff0ff0fc3fffff0fc3fc03 +fc3c3c3f0fffff30c3f0fc3fc03f0c0ffffff0c3ff0f0f003ffc00f0c0ffc3ff +f00ff0f0ffffffc3ff003fc303ffffffc3ff0c0ffc03ffc3fffffcc30fc00fff +003fc00ffc3ffc03ffffffffffc3fffc03f0f0ffffffffffffffff3ccffffff0 +f0f0f0c30cfc00fc3ff0f0fffffffffc03fc003c3c3fffffffff0f0f000fc3ff +c00fc3ff0f0fffffffffc3c30c33c03ffffffffffffffffc +cfcfc10440404044404011040101044104000011011104044101011111044441 +0010444104410041040104404101001044441104100444410444101041041101 +040410110410411f500010401100ffcffffcffff0fffffff030ff0c0fc3c3c00 +0f0003c3f0fffffc3fcf0fc3f0f0fc3c3f0f0f0303ff0ff0fc3fffff0fc3f0f0 +fc303c3f0fffff0c30f0fc3f0fcf0303fffff030ff0c0ffc3ff0f0f0303c000f +c3c3f0c0ffffff0ffffc3fc0c0fffffc000f0303f0f0fff0fffffc30c3ff0ffc +3c3f0f0ffc3ff0f0ffffffffffc3fff0fcf0f3ffffffffffffffff0fcffffff0 +f0f0f0f0c3f0f0fc3ff0f0fffffffffc30fc3ffc3c3fffffffff0f0f0fffc3ff +0f0fc3ff0f0fffffffffc3c3c30fc30ffffffffffffffffc +fccfc41010041101041100411010101011111100441040401010441000410010 +4404104040104440404410041040444410110041044410104410410410104010 +1041044110041045411404110044ffcffffcffff0fffffff0fc3f03cf0fc3fc3 +fff0ffc3f0fffffc3fff0fc3c3f0f0fc3c3f0f0fc3ff0ff0fc3fffff0fc3c3f0 +fc0f3c3f0fffff0c30f0fc3c3fff0fc3fffff0fc3f03cffc3fc3f0f0fc3fc3ff +0fc3f03cffffff0ffffc3fc3f0ffffffc3ff0fc3c3f0fff0fffffc30c3ff0ff0 +fc3c3f0ffc3fc3f0ffffffffffc3ffc3fff00fffffffffffffffff3ccffffff0 +f0f0f0f0c3f0c0fc3ff0c0fffffffffc3c3c3c3c3c3fffffffff0c0f0f0fc3ff +0c0fc3ff0c0fffffffffc3c3c30fc3c3fffffffffffffffc +cfcfc10441104041104011040104410440104111000404110444010444101104 +1110410411110410110104410411110104404410404104440041044104411104 +4111101041104011040110041100ffcffffcffffffffffff0fc3f0fff0003fc3 +fff0fff0c3fffffc00ff0fc3c3f0f0fc3c000f0fc3ff0ffc30ffffffc30fc000 +fc3fff0c3fffff0c30f0fc3c3fff0fc3fffff0fc3f0ffffc3fc3f0f0fc3fc3ff +0003f0ffffffff0ffffc3fc3f0ffffffc3ff0fc3c000fff0fffffc30c3ff0ff0 +fc3c3f0ffc3fc000ffffffffffc3ffc3fff0f3ffffffffffffffff0fcffffff0 +f0fc03f0c3fc30f003fc30fffffffffc3c3f00fc3c3fffffffffc30fc03f003f +c30f003fc30fffffffffc00fc30fc3c3fffffffffffffffc +fccfc41010041010041100011040041004041000444041004011101011044041 +0004041040404104404041104110004410110104110410011410401040100401 +1001444104010440404401104044ffcffffcffffffffffff0fc3f0fff0ffffc3 +fff0fff0c3ffffffc00f0fc3c3f0f0fc3c3fff0fc3ff0ffc30ffffffc30fc3ff +fc3fff0c3fffff0c30f0fc3c3fff0fc3fffff0fc3f0ffffc3fc3f0f0fc3fc3ff +0ffff0ffffffff0ffffc3fc3f0ffffffc3ff0fc3c3fffff0fffffc30c3ff0ff0 +fc3c3f0ffc3fc3ffffffffffffc3ffc3fff0f0ffffffffffffffff3ccfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +cfcfc04104410441110044404011104101104144041110441100410400410410 +4441010410111041111110041041110104441110401041104104110411044040 +0510101001101010040110041100ffcffffcffffffffffff0fc3f0fff0ffffc3 +fff0fffc0fffffffff0f0fc3c3f0f0fc3c3fff0fc3ff0fff03ffffffc33fc3ff +fc3fffc0ffffff0c30f0fc3c3fff0fc3fffff0fc3f0ffffc3ff0c0f0fc3fc3ff +0ffff0ffffffffc3fffc3fc3f0ffffffc3ff0fc3c3ffffc3fffffc30c3ff0ff0 +fc3c3f0ffc3fc3ffffffffffffc3ffc3fff0f0ffffffffffffffff0fcfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff0f0fffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +fccfc40040104010404401041101040410410400410404104111044110104104 +1010444101000410040404410410104441010404110410441111041104401014 +4041044110410104404044410044ffcffffcffff0fffffff0f0ff0fffc3f3fc3 +fff0fffc3ffffffcff0f0303f0c0fc303f0fcf0fc3ff0fff0ffffffff03ff0fc +fc3fffc3ffffff0c30f0303f0fcf0fc3fffff0f0ff0ffffc3ffc30f0fc3fc3ff +c3f3f0ffffffffc3fffc3fc3f0ffffffc3ff0fc3f0fcffc3fffffc30c3ff0ffc +303f0c0ffc3ff0fcffffffffffc3fff0fcf0f0ffc0ffffffffffff3ccfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffc03fffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +cfcfc11104441101040110410444104104101044104041040400100411041041 +0440100410511104411041104104410110444111044104010404104040444100 +1100401044104041041100101100ffcffffcffff0fffffff003ff0ffff00fff0 +0ffc03fc3fffffff003fc0c3fc30ff0c3fc03f0fc3ff0fff0ffffffff0fffc03 +fc3fffc3ffffff0c30fc0c3fc03f0fc3fffff003ff0ffffc3ffff0f0fc3ff00f +f00ff0fffffffff0fffc3fc3f0fffffff00f0fc3fc03ff0ffffffc30c3ff0fff +0c3fc30ffc3ffc03ffffffffffc3fffc03f003ffc0ffffffffffff0fcfffffff +ff0ffc03fffffc03fc03ffffffffc3ff00ffffff003f00fffffffff0ffc03fff +ffc00fc03ffffffffc3ff00ffffff003f00ffffffffffffc +fccfc40410010040404404101001041044410104041104411044411040410410 +4011011104040040104110041041041104101040411041104110441111041044 +4044110401041010410411041010ffcffffcffffcfffffff0fffffffffffffff +fffffff0fffffffffffffffffffffffffffffffffffffffc3fffffffffffffff +ffffff0fffffffffffffffffffffffffffffffffffffffffffc3c3ffffffffff +fffffffffffffffc3ffffffffffffffffffffffffffffc3fffffffffffffffff +ffffffffffffffffffffffffffc00ffffffffffffcffffffffffff3ccfffffff +fc0ff0f0fffff0f0f0f0ffffffff03fc3c3fffff003c3c3fffffffc0ff0f0fff +ffc00f0f0ffffffff03fc3c3fffff003c3c3fffffffffffc +cfcfc04101104411041040044110011100104041104000104104040411004104 +1100410041104411041105444410410410444404100411110441010010410410 +4401011044110440104100404104ffcffffcffff3fffffff0fffffffffffffff +fffffff0fffffffffffffffffffffffffffffffffffffffc3fffffffffffffff +ffffff0ffffffffffffffffffffffffffffffffffffffffffff00fffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffc3ffffffffffff0fcfffffff +f30ffff0ff0ff0f0f0f0fffffffcc3fffc3fc3ff3ffc3c3fffffff30ffff0ff0 +ffcfff0f0fffffffcc3fffc3fc3ff3ffc3c3fffffffffffc +fccfc41010410410110411101041100411041104010444441041104100441101 +0444104410441040410440101104104041001041044100404110104440104104 +1040100110404104401044040410ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +ff0ffff0ff0ff0f0f0f0ffffffffc3fffc3fc3ff3ffc3c3ffffffff0ffff0ff0 +ffcfff030ffffffffc3fffc3fc3ff3ffc0c3fffffffffffc +cfcfc10104041041004104044104111040404010404010010410400044110444 +1041110441010411104104410111101104144444441044101004441011041041 +0111044404041010110404410100ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +ff0fff0ffffff0f0f0f0ffffffffc3fff0ffffff00ff003ffffffff0fffc3fff +ffc03fc03ffffffffc3fff0ffffff00ff00ffffffffffffc +fccfc04441100404100044410410410104101104110441100104111101004100 +4104004110441104044441041041044041010041011111110440410444410410 +1001100040404101040101004010ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +ff0ffff0fffff0f0f0f0ffffffffc3ffc3fffffffc3ffc3ffffffff0fff0ffff +ffff0f0c0ffffffffc3ffc3fffffffc3c303fffffffffffc +cfcfc41010411040444550104101041001041101004010411101010410441044 +1040441004410041110044104410401104441104440104410111104100444441 +0444044411041044404044101104ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +ff0ffff0fffff0f0f0f0ffffffffc3ff0ffffffffc3ffc3ffffffff0ffc3ffff +ffff0f0f0ffffffffc3ff0ffffffffc3c3c3fffffffffffc +fccfc10111040104001051041044104444104044110404104044104041104410 +0411110441111110444401041104110410110110011044104404041044101010 +4040400104100401041101040440ffcffffcffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffc3ffffffff003ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +ff0ff0f0ff0ff0f0f0f0ffffffffc3fc003fc3fc3c3c3c3ffffffff0ff000ff0 +ff0f0f0f0ffffffffc3fc003fc3fc3c3c3c3fffffffffffc +cfcfc41064404401110410410410400101010400401110401040001104040104 +4104104010100404101110410444444104404404440411041040410411045444 +1104111041044040410044104010ffcffffcfffffffc3fffffffffffffffffff +ff000ffffffffffffffffffffffffffffc3ffc3fc3ffc3ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +f000fc03ff0ffc03fc03fffffffc003c003fc3ff00ff00ffffffff000f000ff0 +ffc03fc03fffffffc003c003fc3ff00ff00ffffffffffffc +fccfc10450040110040104104001044410401044110041110411110410411041 +1010444444444111044044444011041044110110410444444111104104411441 +0041000411101011004401001104ffcffffcfffffffc3fffffffffffffffffff +ff0ffffffffffffffffffffffffffffffc3ffc3fc3ffc3ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +cfcfc44004404404411041010444010104110411004410040104104040400410 +0441010101004404441104441100410441041041104110404404041044105010 +4410444041041104110110444440ffcffffcfff0fc3c3ffffffffffff0fc330c +3f0ffffffffffffc30ffc00fc3f0cc30fc30fc0f03ffc3ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +fccfc41100110110101104100040441041044100110104404441041004111104 +4010104410440110410041040444104010404410041041041041110410410440 +1004101110400440404411000010ffcffffcfff0fc3c3ffffffffffff0fc30c3 +0f0ffffffffffffc0c3f0ff3c3f0c30c3c0c3c0f03ffc3ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +cfcfc10444404101040040411101010410401044411110110010110441040410 +1444110044111104104444111104441111104104441104410410404444041011 +0444411004111011041040444440ffcffffcfff0fc3c3ffffffffffff0fc30c3 +0f003ffffffffffc3f0f0fffc3f0c30c3c3f0c0c03ffc3ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +fccfd04010040040411104101010444101040404040044404441004110410104 +4101041410404041041041044040010440040411044041111104440101110441 +1100100440400100410404010104ffcffffcfffc30fc3ffffffffffffc30f0c3 +0f0ffffffffffffc3f0f003ff0c3c30c3c3f0cc0c3ffc3ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +cfcfc41101104411040410010104010410104040404401041010441041104441 +0411104104111104410410441411104411104104401110040044111010404104 +0044411011044411041041101010ffcffffcfffc30fc3ffffffffffffc30f0c3 +0f0ffffffffffffc3f0ff003f0c3c30c3c3f0cc0c3ffc3ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +fccfc44044010410104104441040440101010411041044000444044410044010 +4100041041040440111111111111044104411041111044411101044444441041 +1104441100410104010104010404ffcffffcfffc33fc3ffffffffffffc33f0c3 +0f0ffffffffffffc3f0fffc3f0cfc30c3c3f0cf3c3ffc3ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +cfcfc10401101041010040004104104410441040410410444001100404404444 +1045110410411111110441004104441040100410410404101050410100411044 +4044410411104410104040440100ffcffffcffff03fc3ffff03fffffff03f0c3 +0f0ffffc0ffffffc3c3f3fc3fc0fc30c3c3c3cffc3ffc3ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +fccfc41110010010404411111041010104010104104100411110011110111004 +4100404411111041004111111110410411044444111044444104444044444101 +1101004110040101041104011044ffcffffcffff0ffc003ff03fffffff0ff0c3 +0f000ffc0ffffffc00ffc00ffc3fc30c3c00fcffc3ffc3ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +cfcfc04044441104044101000401104041104041010044100104440041100444 +1044111100100410444444411004444441104101040411001110101104111044 +0410441004411044104041104100ffcffffcffffffffffffff3fffffffffffff +ffffffffcffffffc3ffffffffffffffffffffffffff003ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +fccfc40410404041101010441044041104011010104404411041011110411040 +4411010445044444411044104444411110441044411104150441044444441101 +1111010441041001040400041044ffcffffcfffffffffffff0ffffffffffffff +fffffffc3ffffffc3fffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +cfcfc10104040410410104010101010410100441040110104444100404104104 +0100444100411041104441044105510004444444104041011110411010110444 +1040404110400444104111404000ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fc0000000 +0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000 +fccfc04411011041041041101010441041044004104404410104044101041044 +5044101044104410441044441046e44544110441111104515104441111104110 +4411111004111041010404110444ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc41040440400410410044104010410410510010110041041111044410410 +0444444411041104411104110457e41044444411041044111544410404111044 +4104041110410410441040404100ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc44004104044104105101111104104101004401044410410400410104104 +4104041104440444111044414445911511104111110444444444511111104404 +0441104101104104010404101010ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc00441010441040040410040101041040441110400101044111111041041 +1011110441044404444514444544454444111444444444444445444441040111 +1044410110040404444041044450ffcffffcfffffffc00ffffffffffffffffff +ffffffffffff03ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc44104100010104411004404044010411010004111110110410044410410 +4441004044111111111151444451111144444444111144444459111110444441 +0444041004410100400410410160ffcffffcfffffffff0fffffffc3fffffffff +fffc3ffc0fff03ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc10410411104410100110041100404040441111041004004104401004111 +0111111410404444444455111554514544444444444444451115111104104410 +5101104440104414044104004044ffcffffcfffffffff0fffffffc3fffffffff +fff03ff0c3fff3ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc04004041041004451041010444440411010400101111141111044111010 +4410444101110411111155551111451454511511111111115110411151010444 +1051041044441040401040440410ffcffffcfff0c3fff0ff003ffc3fff00ffff +ffcc3fc3f0ff0fffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc40441104410440001104441010104400444044410400404104110440444 +4111011111044444451154515454515145144451111444544444511050504441 +0404444404410104110411044104ffcffffcfff030fff0ffff0fc000fc3c3fff +fffc3fc3f0ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc04010410104044440410010104040111000410004451041041004411010 +1104111044444115111445544111145451451111444451044404444504144410 +4510011140441040044104101040ffcffffcfff0fc3ff0ffff0ffc3ff0fc3fff +fffc3fc3f0ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc41104041041101104101101041104410110401110410410410444410444 +4441110444441141554515451511450515514444444505445141111044411104 +4045504044104411101110410410ffcffffcfff0fc3ff0ff000ffc3ff0003fff +fffc3fc3f0ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc10101010010040410410410410000104404110404104104111111104410 +4011104444451114115145514444445144511114444450451111044441111114 +4444041111040101010400104104ffcffffcfff0fc3ff0fc3f0ffc3ff0ffffff +fffc3fc3f0ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc41044104441104001041041101111041041044041044041100010110104 +1111044441104445544454545151151445111111451105111444441111044441 +1111444401011044444111040400ffcffffcfff0fc3ff0fc3f0ffc3ff0ffffff +fffc3fc3f0ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc00410400010040444104100044040410410400440411110044444444444 +0441114451111151115115111445111114511111111450444444411144444444 +4411110110404104040004104044ffcffffcfff0f0fff0fc3c0ffc3ffc3f3fff +fffc3ff0c3ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc44040111105011001040410440411004004044011004004410401011041 +4411111104444444444544545111111111444444444445111111110444444444 +1044445111111040411101011104ffcffffcfff003fff0ff0303ff00ff00ffff +fffc3ffc0fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc01104400410410110411004010100110440441100110441104110441110 +4444411114445145151114451444444444445111114511444444444444411111 +1111104104040411041044440410ffcffffcfff0ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc44010044104101010100110404411010104100411044410041104441104 +4111111111111111411544411111144444111111111144444451104444511104 +4444441141104400410401004100ffcffffcfff0ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc10444411011010441044404110040441041044041001104410411011041 +1110444445145144444045111111111111441111111444444444441111044444 +1110414444444111044110441044ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc41001040100404010401041004410410410410410444041104110444444 +1111104451444444445444444444445114451111111111111111111104504411 +1111111110401040401040010410ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc10110404411111104110104100104100101041044100404041044100444 +4444444414445111110444511444444444444441144444444444444444141111 +1444444444444411044104501040ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc04044041040000410441040411111044410410411011110444404444101 +1111111145111455111111144451111111111111111111111111104041011044 +4441111104440104101010040100ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc41101110104444104010410104100404041040101104041040444011111 +1110454514514511114444445111044444444104444445111044451444511104 +1051114444444410410441011010ffcffffcfffffffc3fffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffc0ffffffffff +fffffffffff3cffffffffffffffff03ffffffffffffffffffffcf3ffffffffff +ffffffffffffffc0fffffffffffffffffffff3cfffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc10040101040410401104104410044040410104450041000411041504411 +1105105115144111444411111111111104444451111111104444111111044444 +4504444444410104104010440440ffcffffcfffc00fc3ffffc3ffc0ffffffffc +3fc00fffffff03ffffffffffffffffc3ffc0fff03ff003f0003fc0fff03ffc0f +ffffffc0fff3cfffffffc3ffc0fff03ffc0fff03fffffff03ffcf3ffffffffff +ffffff0fff03ffc0fff03ffc0fffffffc0fff3cfffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc41104410404101040401041001111104101040101110451111110044444 +4444451111444444444444444444444111104410444444111044444410411044 +5111111111111041041104411004ffcffffcfff0f03c3ffff03ff0c3fffffff0 +3f0f03fffffc30ffffffffffffffff03ff0c3fcfcfc3c0f0003ffcffc30ff0c3 +ffffff0c3ff3cfffffff03ff0c3fff3ff0c3fc30ffffffc30ffcf3ffffffffff +fffffc0ffc30fffcffc30ff0c3ffffff0c3ff3cfffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc04040104110040104110410110400410410411044044101041044511044 +4111111144511151144441111111111111044444104441110445111111111111 +1110114444441110410410100440ffcffffcfffffc3c303fcc3fc3f0cc30ffcc +3fffc3fffff0fc3f003ffffffffffcc3fc3f0fcfcffff0f3ffffc3ff0fc3c3f0 +fffffc3f0ffffffffffcc3fc3f0ff0ffc3f0f0fc3fffff0fc3fffffffffc3f0f +fffff30ff0fc3fc3ff0fc3c3f0fffffc3f0fffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc41011041004411004411004404044101004110401101010411041104441 +1111444444451415444444444444444444441111044444444441111111111111 +1445111451110404110101044010ffcffffcfffff0fc0c0ffc3fc3f0c30c3f3c +3fffc3fffff0fc3c3fcfffffffffffc3fc3f0ff03ffff0f3ffffffff0fc3c3f0 +fffffc3f0fffffffffffc3fc3f0fffffc3f0f0fc3fffff0fc3fffffffffc3f0f +ffffff0ff0fc3fffff0fc3c3f0fffffc3f0fffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc10441040441100440100440041104044110404110410511110411044411 +1114451445115144551114444444444111111110444444444410111111111111 +0451114504444441041044101100ffcffffcffff03fc3f0ffc3fc3f0c30c3cfc +3fff0ffffff0fc3c3fffffffffffffc3fc3f0fffffffc3f000ffffff0fc3c3f0 +fffffc3f0fffffffffffc3fc3f0fffffc3f0f0fc3fffff0fc3ffffffffff0f3f +ffffff0ff0fc3fffff0fc3c3f0fffffc3f0fffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc04010411010051011044111110041101041041010111040411111111110 +4444444444511455511111110441111111110444441104441111104444111111 +4444441110411044410410444040ffcffffcfffff0fc3f0ffc3ff0c0c30c3c00 +0ffc3ffffff0fc3c00ffffffc000ffc3ff0c0fffffff0ffff03fffff0fc3c3f0 +fffffc3f0fffffffffffc3fc3f0fffffc3f0f0fc3fffff0fc3ffffffffffc0ff +ffffff0ff0fc3fffff0fc3c3f0fffffc3f0fffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc41104100104400440041040404404010404110441010411044110440444 +4444444511144511144440444411111111104444511111111111045141044454 +5111115144440410404104000410ffcffffcfffffc3c3f0ffc3ffc30c30c3c00 +0ff0fffffff0fc3fc00fffffffffffc3ffc30ffffffc3ffffc3fffff0fc3c3f0 +fffffc3f0fffffffffffc3fc3f0fffffc3f0f0fc3fffff0fc3ffffffffffc0ff +ffffff0ff0fc3fffff0fc3c3f0fffffc3f0fffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc04040044410111004410110100101104040410104504110410444111111 +1051114444445111111114445144441110451445111110441044441114511145 +1111144445114444444410444440ffcffffcfffffc3c3f0ffc3ffff0c30c3ffc +3fc3fffffff0fc3fff0fffffffffffc3ffff0ffffff0fffffc3fffff0fc3c3f0 +fffffc3f0fffffffffffc3fc3f0fffffc3f0f0fc3fffff0fc3ffffffffff3c3f +ffffff0ff0fc3fffff0fc3c3f0fffffc3f0fffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc41104401041004101101041044410040410104410041101104411044411 +0504444444511451444511110410414444410441110444444401044104111151 +1115451451144411110040104010ffcffffcfff0f03c3f0ffc3fc3c3c30c3ffc +3f0003fc0ffc30fcff0fffffffffffc3fc3c3fffffc000f0f0ffffffc30ff0c3 +ff03ff0c3fffffffffffc3ff0c3ffffff0c3fc30ffc0ffc30ffffffffffc3f0f +ffffff0ffc30ffffffc30ff0c3ff03ff0c3fffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc10040444010440410040404104044411104411041111010444444401104 +4111111111154444511114411111104111114411111111111144444444444444 +4444511114444110041111041104ffcffffcfffc00fc3f0ffc3ff00fc30c3ffc +3f0003fc0fff03ff003fffffffffffc3ff00ffffffc000fc03fffffff03ffc0f +ff03ffc0ffffffffffffc3ffc0fffffffc0fff03ffc0fff03ffffffffffc3f0f +ffffff0fff03fffffff03ffc0fff03ffc0ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc11104101104044041104101010400100040104410010444040410151044 +5044445145444511111111111104444410444444444444410411104411111111 +1111551444444445110404104040ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc40044410040400410011044101044411104441104504101104445010444 +0444444451455111114511044044444445044511111111111111044444410444 +1111114544444111404040410404ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc11101011111111104440410444104104040040041041044044440511044 +5111111115144510444444444444441110510114444444444444410441111111 +044455511111145b944411040040ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc40110440100400010404104001010441104411110410441104104444411 +0441111144455111111111111110444445044444444445111110444411044444 +444445115451112fd41104104410ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc04404011044044401041001111104010101044004044410441044410110 +4414444455511104411111104444444410444444511111511114444110444444 +444455144445111a910410010100ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc40041104101100110010110040011101044101111101104111111104404 +4441111111111114511111051111104111111104411544454441111444411111 +1111114511111145104101104444ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc11104041010044404441041011100044401041040410111004404111144 +1111110444444441111110504444111111444451111151444514444444444104 +5111115544445111041040410040ffcffffcfffffffc00ffffffffffffffffff +ffffffffffffffffffffffffc00fffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc41010410404401100104104100411100110410411041104444144440411 +0411115151511111111111111111114444451111145415154444511041111045 +4511156545144444410411004444ffcffffcfffffffff0fffffffc3fffffffff +ffffffc000fff0fc000fffffff0ffffffffffffffffffffc00ffc03fc00fc000 +fffffc000ff00fc000fff0ffffffc00ffc0ff0003fc0fffffff003ff03ffc0ff +0003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc10104101041044044401001011041011041041100410044101104411104 +4444441414444444444411044444445144444444551544505111110444441111 +9111115544445111111100444100ffcffffcfffffffff0fffffffc3fffffffff +ffffffc000ffc0fc000fffffff0ffffffffffffffffffff0f03f0f0f0f03c000 +fffffc000fc3c3c000ffc0ffffff0f03f0c3f0003f0c3fffffc3f0fc30ff0c3f +0003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc04441044110410410044110104104440410410444111444444444111051 +1111151144444411110444511114511551145155454455454544444444444445 +4411111515111111044044010410ffcffffcfff0c3fff0ff003ffc3fff00ffff +ffc00fcfffff30ffff0fffffff0fff03ffc03f0c0ffffffffc3c3fffffc3cfff +ffffffff0f0fffcfffff30ffffffffc3c3f0fffc3c3f0fffffc3f0f0fc3c3f0f +ffc3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc40010100004104104401044411000011101104104440404104104441104 +4111111111144444444444111111154555555511555555545115144444441110 +4444511444511444401001441040ffcffffcfff030fff0ffff0fc000fc3c3fff +ff0ff3cffffcf0fffc3fffffff0ffc30ff0fcf0303fffffffc3c30ffffc3cfff +fffffffc3f0c3fcffffcf0ffffffffc3c3f0fff0fc3f0fffffc0f3f0fc3c3f0f +ff0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc11104044441041041044001000444410044044410111111041111111110 +4444444444444111111111445145115195555555555555555451451144114111 +1111114445114444550444104104ffcffffcfff0fc3ff0ffff0ffc3ff0fc3fff +ff0fffc003f3f0fff0ffffffff0ff0fc3c3fff0fc3fffffff0fc0c3fff0fc003 +fffffff0ff030fc003f3f0ffffffff0fc3f0ffc3fc3f0ffffff00ff0fc3c3f0f +fc3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc40041100440010104101140111041104410400104410404444410410444 +4111111445111511111451111114545545555555555556554545111444441441 +1114441151511444404410410444ffcffffcfff0fc3ff0ff000ffc3ff0003fff +ff003fffc0f0003fc3ffffffff0ff0fc3c3fff0fc3ffffffc3fc3f0ffc3fffc0 +ffffffc3ff0fc3ffc0f0003ffffffc3ff0c0ff0fff0c0ffffff003f0fc3c3f0f +f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc11110044044501040410011104010000101045041044444111044111104 +4444444444514111115511111115155555555555559599995554514511111111 +0441114444444111111041044000ffcffffcfff0fc3ff0fc3f0ffc3ff0ffffff +fff003fff0f0003fc3ffffffff0ff0fc3c3fff0fc3ffffff0ffc3f0ff0fffff0 +ffffffc3ff0fc3fff0f0003ffffff0fffc30ff0fffc30fffffc3c0f0fc3c3f0f +f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc04101101041010010044401000441111041100410410441040411104444 +1111111111145144441111111451451155555559995a666aa555141115111551 +1114444515515111110410410444ffcffffcfff0fc3ff0fc3f0ffc3ff0ffffff +ffffc3fff0fff0ff0fffffffff0ff0fc3c3fff0fc3fffffc3ffc3f0fc3fffff0 +ffffff0fff0fc3fff0fff0ffffffc3fffff0fc3fffff0fffffc3f0f0fc3c3f0f +c3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc41040040400101104401040444110440110411044104111104441041111 +1111044445101444515514545155515555555956666659baa955455144445fd1 +1104511559144514444441041010ffcffffcfff0f0fff0fc3c0ffc3ffc3f3fff +ff3fc3c3c3fff0ff0fffffffff0ffc30ff0fcf0fc3fffff0003f0c3f0003c3c3 +ffffff0fffc30fc3c3fff0ffffff0003c3c3fc3ffc3c3fffffc3f0fc30ff0c3f +c3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc10411111044110410444110101004011004040101041104410044444111 +10444444444544451444511555145515555656665999aaaaab95544444455f94 +4444445169444444440104110440ffcffffcfff003fff0ff0303ff00ff00ffff +ffc00ff00ffff0ff0fffffffff0fff03ffc03f0fc3fffff0003fc0ff0003f00f +ffffff0ffff03ff00ffff0ffffff0003f00ffc3fff00fffffff003ff03ffc0ff +c3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc41041000401004101040041010441104141105044410441045104111104 +1104445145444451115515451555555555556556669999aa6aa9551444505691 +0445111155514511111041044104ffcffffcfff0ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc10010114040440410404410410010041010410100104011110411104444 +544445111451111445114455555655555555556999999aa6afe9945145051444 +4454451444451555111444401010ffcffffcfff0ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc01104041044011041110104104441110404104044441104104111044411 +111111115511454551455545555595555555556aaa6669aaaffa595450511141 +1104444515515444444101110440ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfd10441100410440010001000041104004110441110111111044410444504 +444451144444445114551555559555a655559559aaaa9aaaabfee99515145451 +1111114454451551444410044104ffcffffcff3fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc41010044104011101110444410440441004010404404104404104444111 +1111114515111155555155655655555a55555555659966aa6abbabd544450511 +1114441155511114444111401040ffcffffcff3fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff0000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000cfc +cfcfd10404411040441040004040104111010440444044111041111044441110 +4444451111145111115555555555559655555555596665a9aaabffe454515044 +4441111444455511511044044104ffcffffcff3fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff0000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000fcf +fccfd51110440411004104501104041000444104001011104444044444111111 +10445151444515455555145555555555555599555555555a69aaee9555144511 +1114511455511545111100404400ffcffffcff3fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff0000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000cfc +cfcfe44041004100441010050404400444101011110501110404410104444444 +444445144514515555555555555555555955555555599995a9aabfa545451144 +5111114504445515444111110110ffcffffcff3fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff0000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000fcf +fccfc41410441044010441101041111044010100044044104110441110444411 +1111514551454514555556555545555655659956655555595a6aafe554545444 +4444444451515551451104041044ffcffffcff3fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00fffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc10104044101010010010010004101104445401041111104411111110444 +44544514445455555555596555555595655556555595965596a6aeea55454444 +4511445111145114511041100400ffcffffcff3fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f000003ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc4441040041010444110110444101010005b444104104441104444105111 +11115545154555555566599555565565565999655559656566aaaaa995545144 +4444451145451555111110411044ffcffffcff3fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc00040451041040104044040410441011115410411044111044111044444 +11151451515555656955665959996595996595596555565966a5aabba5554514 +5111111450515444444010440400ffcffffcff3fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc44404040400411040400444104010100404441000444444441104444111 +11454545155556569a56599665965656665955955566596659999abfe9545144 +4454451115144555544504411110ffcffffcff3fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc011111041101004110440040411044100440041144104a4444441111044 +4451145155565965aa95565959a65565659655659955559666a66baefa955444 +5111114551455451115044441044ffcffffcff3fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fff03fffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc440000010410441004011104040400411011010410446f9104411041111 +111555455555665a9999a596955959959555955555566599a6666bffba555514 +4511111111111155494444410400ffcffffcff3fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffc30f3fffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc011111104041010100440410410444440440444104116e8444111411111 +15511455556659a65a666a69565555555559555556555596a999aaefffa54451 +1154514451145554451104111044ffcffffcff3fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffc30cff003ffffff00fc30ff0fc3fffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc440001040410444044011041004010411011104444401a4441110444111 +11455555595599a99a99a6aa65555655555455596559996999999aabfbe55511 +4444444514455555514441040100ffcffffcff3fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fff033fc3c3fffffc3f3c0c3f0fc3fffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc04444441110404441044041044110404044004010411111111111104445 +54554555566666666699995555565555555555555555565aa699aaaeefe55154 +5111114511146554444110411044ffcffffcff3fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffcff0fc3fffff0fffc3f0f0fc3fffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc40404010004110010010410101004040401111104444441111040444451 +1551556666699aaaa99999656555555555555595556565666a69a6abeea95511 +1445445145156955445044110404ffcffffcff3fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffff3ff0fc3fffff0fffc3f0f0fc3fffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc11040404441004404501104040440411110040444410411114444444445 +45156655969a699aa999555655555555555555555556566699aaaaafbba95545 +4544451114455a51110441104440ffcffffcff3fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fffcc0f0fc3fffff0fffc3f0f0fc3fffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc10011110110110101010041104011104041011010444404444444444514 +5555956669a6a6aae9969565555555555555555566555965a69aaaaafeaa5551 +1111445145516a55145110444010ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fff30c3c303fffff0fffc3f0f0fc3fffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc41104001004041044104010410440040410440444104144111111111155 +555656666aa9a55a6666695a95555555596596595566566a6aaaaaaaeee99515 +545145144445ae45111104044444ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffcf0c3f0c3fffffc3f3c3c3f0303fffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc10041110441004100041101040011104004104410441041110444545445 +55655599aaaa9999aaa6655be555565656596596665965966aaaaaebbbaa5551 +114451451555aa14454441411000ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffc0fffc3ffffff00fc00ffc0c3fffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc04410004004110411104010104441001111044104411111104444411555 +555556aaaaa9659a6666566fe556559599999a6666965969aaaaeeaffefea115 +5514451144456551441104100450ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fffffff0f0ffffffffffc3ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc410411104410041000411010101041101004411111111104444511515a5 +56555aaaaae656566a95555aa56599699999966669a9999a9a6abbabffea9551 +1111514554559544511110444410ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fffffffc03ffffffffffc3ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc10404004000440411100411901001044411010111041044114511455566 +6659aaaaaa6a666a5599655656566699aaa6aa6a9a9a6665aaabbaebbaa99555 +5444445115565555111104010104ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc40110441111011040044106d10444000104104410411111444114444559 +995a6aaaa999966699565555596599aa9a6aaaa6aa99a6aaaaeefeaafeea9511 +1151544451559441111041104440ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc11040040040440404410415504040445011044444441044445455555556 +55a6baea9999a6a66565666656669a99aaaaaaaaa6aa6a6aaabbbaabafae9555 +5444445514555554444444110404ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc40104411104104110104000441104100100441104111111114554555555 +559aaba999999a699955556599a9a9aaaaaaaaaaaaaaa6aaeeaeeeeaebaaa544 +4515154451555444510101104104ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc11010101010410404410111010010411044104111111144545155455555 +59aabaa95999aa66666596599a9aaaaeeeeeebaaaaaaaaaaabeefabeaaae9555 +5144445155554544444444041040ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc01104410400104041041004101101040401041041104511445555555545 +59aba999995a66a9566665999aaaaaeaeeeebaeebaa6aaaaeeaeaeeebaaa6544 +5111145454551114444011110404ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffc03fc3fcffffff003f +f0ff0000f0fc3c00ff003ffc3fc3fc3fffffc00fc3f0f000fc003f003f0ff0ff +0ffc3fcfffff0ff0f000fc3fff0ffffffff003fc003fffffc3f0f0ff3fc3fc3f +c3fc3ff000fc3ffff0ffc00ff0fffc003fffffc003f00cfc +cfcfc44010041111001010410440410410104110510410445114451545555555 +9aaa99659666a69a665959666aa6aebeeefbbbabaaaaaaabaaabaeeaaaa65455 +1514551155554544444500404110ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffff0f0fc0fcfffffc3f0f +f0fffc3ff0fc3c3c3f0f0ffc3fc3fc3fffff0fc3c3f0f0fc3c3fff0f0f0ff0ff +0ffc0fcfffff0ff0ff0ffc3fff0ffffffff0f0fc3fffffffc3f0f03f3fc3fc3f +c3fc3fff0ffc3ffff0ffc3c3f0fffc3fffffffc3fff00fcf +fccfc10404410040444100104011041044441104111111041104455451155455 +66a99999666a6aaa999659a6aaaabbbbffbfeefaaabaaabbbeaabbfaaaa65545 +5145115555511111104044111004ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fffffffffffffffc3fc3c0fcfffffc3fff +cc3ffc3ff0fc3c3c3f0fc3f30ff0fcffffff0fffc3f0f0fc3c3fff0f0f03c0fc +c3fc0fcfffff0c30ff0ffc3fff0ffffffff0f0fc3fffffffc3f0f03f3f30fc3f +c3f30fff0ffc3fffcc3fc3c3f0fffc3fffffffc3fff00cfc +cfcfc40110404411041011010440104100010041104104444451114555555556 +6aa99965999aa6b999a99a6aaaabaefbbffbffbbbaaaefbaaaaabeaaaa69a954 +4511145555555444444444410444ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fffffffffffffffc3fc3cc3cfffffc0fff +cc3ffc3ff0fc3c3cff0fc3f30ff0f0ffffff03ffc3f0f0fc3c3fff0f3f03c0fc +c3fcc3cfffff0c30ff0ffc3fff0ffffffff0f3fc3fffffffc3f0f30f3f30ff0f +cff30fff0ffc3fffcc3fc3cff0fffc3fffffffc3fff00fcf +fccfc04404110410410400101011041044441110441041111111144445555555 +996666596669aabaa66666666aaebabfffffbbebaeaaaaaaaaaaeaaa999aa555 +5154554556551111111104104104ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fffffffffffffffc3fc3cc3cffffff00ff +0f0ffc3ff0fc3c03ff0fc3c3c3fc33ffffffc03fc3f0f0f0fc00ff00ff0300f0 +f0fcc3cfffff0c30ff0ffc3fff0ffffffff00ffc00ffffffc3f0f30f3c3c3f0f +cfc3c3ff0ffc3fff0f0fc03ff0fffc00ffffffc3fff00cfc +cfcfc40101001040100444410440410400104104110444104441115555555156 +6699a99959aaaaaa9999a6aaaaebabbbffffeeeebaeaaaaaaaaeaaaaa6699954 +5445455556545111111041041040ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fffffffffffffffc3fc3cf0cfffffff03f +3f0ffc3ff0fc3c30ff0fc3cfc3ff0ffffffffc0fc3f0f003fc3fff0c3f3030f3 +f0fcf0cfffff0c33ff0ffc3fff0ffffffff0f3fc3fffffffc3f0f3c33cfc3f0f +0fcfc3ff0ffc3fff3f0fc3cff0fffc3fffffffc003f00fcf +fccfc11044110104411040104011004045001044104101111044511111545556 +69966599a69bbbaa999a699aaaaeaeeffffbfebaaeaaa999aaebaaaa66599555 +4551555556551444444411010410ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fffffffffffffffc3fc3cf0cfffffffc0c +000ffc3ff0fc3c3c3f0fc30003ff0fffffffff03c3f0f0fffc3fff0f0f3030c0 +00fcf0cfffffc303ff0ffc3fff0ffffffff0f0fc3fffffffc3f0f3c330003fc3 +3f0003ff0ffc3ffc000fc3c3f0fffc3fffffffc3fff00cfc +cfcfc00410404000104104410440440410110441041044444444455555454559 +966599aaaabaee6669a9aaaa6aebbbffffffbbbbbaaa9aaa9aaaaaa996655544 +4445555555114444444104444100ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fffffffffffffffc3fc3cfc0ffffffff0c +3fc3fc3ff0fc3c3c3f0fc30ff0ff0fffffffffc3c3f0f0fffc3fff0f0f3cf0c3 +fc3cfc0fffffc303ff0ffc3fff0ffffffff0f0fc3fffffffc3f0f3f030ff0fc3 +3f0ff0ff0ffc3ffc3fc3c3c3f0fffc3fffffffc3fff00fcf +fccfc44101041111010010101011010101011044104411111111511115545555 +9999566a9aaabaa9aaaaaaa9babaefffffffffbbaaaa6999a6aaaaaa65595555 +5151555555544444441041101044ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffff0f0fcfc0fffffc3f0c +3fc3fc3ffc30fc3f0f0f0f0ff0ff0fffffff0fc3f0c3f0fffc3fff0fc33ff0c3 +fc3cfc0fffffc3c3ff0ffc3fff0ffffffff0f0fc3ffffffff0c3f3f030ff0ff0 +ff0ff0ff0ffc3ffc3fc3c3c3f0fffc3fffffffc3fff00cfc +cfcfc01040410410441104410100104410440410410441044444454551155566 +665665aaaaaaaa6aa6abaaaaaeeeffbfffffeeeaaaaaaaaa6aaaaaa559955451 +1455565555555111111410111100ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffc03fcff0ffffff003c +3fc3fc3fff03fc3f0f003f0ff0ff0fffffffc00ffc0ff0fffc003f0fc33ff0c3 +fc3cff0fffffc3c3f000fc003f000ffffff003fc003ffffffc0ff3fc30ff0ff0 +ff0ff0f000fc003c3fc3c00ff000fc003fffffc3fff00fcf +fccfc40411004101010040004044441004104104104444410451555115511556 +95955666aaaba9aaaaaaaa6aabaeeffffffeffaaaa99999999aaaaa995555545 +5515555555594444444104400410ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc11040441044101004441000010441001001041044444445111554455565 +6659659a6abaeaaabbaaaaabbaefbeffffffeebbaaaaa666666aaa9556554451 +1155665555554511111041044104ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc04104110400010440010444440010444111110411111111154645515596 +55655666aaaaaabbbbbaaaaaaebafbfffeeeebaeaaa99999965aaa6555551515 +5555595551111111104110411110ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc40410404111104104441010404444000404104110444445515554511555 +565565a9aaaa6aebfeaaabaeebaeefbbbffbaeaaaa9a666665aaa65555555151 +4556555554445111041010444400ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc11004101010040410404104040400444111041044411111151545155555 +559556a6666aaeaaeeaaaaaaaaeeeeeeeebbbaaa99a665955955995555515555 +5155655515144444451104110110ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc40440040441104041040101004111011000444410444451515455455555 +595595a6666aababbaeaaaaaaaabbaeeeeeaaabaa99999659599555555544514 +5566595551444411104041004410ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc11011110404040404104440441000440444410111111114554511555555 +5555555599aafaeebaaaaa6aabaaaeaeaaaeaaa999a655555556555555155555 +5699955554451111111110510104ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc00100401041104041041011010444104011104444444555455154459555 +5655955966abbaeebbbaaaaaaaaeaaeaeeaaaa9a995666555955554555145155 +599a555445111110444411041100ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fff00ff003fffffff0ffffffc3fc3fc3ff +c00ff00ff003ffffff0fc3fc3ff003fc00fc3fc3fc3ff003fc003fffffc00ff0 +00ffc03fc03fc3fcf000fc003ff00fc3f0f003ffc3fc0003c003fc03fc3fcfff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc44411044010041010410404104041004441041041111455555445555555 +6555555599aeebbbaeaaa6aaaaaaeeaaaaa9a665959555555555555111555555 +9aa5555551111104410440444044ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffc3c3f0f0fffffff0ffffffc3fc3fc3ff +ff0fc3c3f0f0ffffff0fc3fc3ff0f0fc3c3c3fc3fc3ff0f0fc3fffffffc3c3f0 +ffff0f0f0f0fc0fcf0ffffc3ffc3c3c3f0f0f0ffc3fff0fffc3ff0f0fc0fcfff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc10100400444410104104110441010441044110444444559544511555555 +555555559bfbaaaeaaaaaa69aaaaaaaaa6a69a9999595955555954555551545a +aa59554515144444444411101100ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ff0ff0f0f0ffffffcc3fffffc0f03f30ff +ff0f0ff0f0f0ffffff0fc3f30ff0f0fc3f0c30c3f30ff0f0fc3fffffffc3c3f0 +fffc3ffc3fc3c0fcf0ffffc3ff0fffc3f0f0f0ff30fff0fffc3fc3fc3c0fcfff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc01044110401001111010400010404040401104411114456555154456555 +555555566bbfebbaaaa9a69a669a66aa6a69a565555595555555454515155599 +9665551451440441104100444044ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ff0ff0f0f3ffffffcc3fffffc0f03f30ff +ff0f0ff0f0f3ffffff0fc3f30ff0f3fc3f0c30c3f30ff0f3fc3fffffffc3cff0 +fffc3ffc3fc3cc3cf0ffffc3ff0fffc3f0f0f3ff30fff0fffc3fc3fc3cc3cfff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc4401004411011000010104444011041104404444144555a951445555555 +555555566afbbaaaaaaa6a6669a6aa6699999996559555554454515555559999 +9a55555514444411111111010440ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ff0ff0f00fffffff0f0fffffc0c03c3c3f +ff0f0ff0f00fffffff0003c3c3f00ffc3f0c30c3c3c3f00ffc00ffffffc03ff0 +03fc3ffc3fc3cc3cf0ffffc3ff0fffc3f0f00ffc3c3ff0fffc3fc3fc3cc3cfff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc10441101004404444410404011040100401104114451155954451555555 +555555569abfbbbaaa66995a66665999a6665655655555515515151556596666 +6695514444451111041104110104ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ff0ff0f0c3ffffff3f0fffffcc0c3cfc3f +ff0f0ff0f0c3ffffff0fc3cfc3f0c3fc3f0c30cfcfc3f0c3fc3fffffffc30ff0 +fffc3ffc3fc3cf0cf000ffc3ff0fc3c3f0f0c3fcfc3ff0fffc3fc3fc3cf0cfff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc01004044100101010404110440404411110411101111516551115455555 +555554559aaeeeaaa9a59a659659996699956555595555551544515555999995 +9655555511111111111041041040ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ff0ff0f0f0fffffc000fffffcc0c30003f +ff0f0ff0f0f0ffffff0fc30003f0f0fc3f0f0c0f0003f0f0fc3fffffffc3c3f0 +fffc3ffc3fc3cf0cf0ffffc3ff0fc3c3f0f0f0f0003ff0fffc3fc3fc3cf0cfff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc40441001044444101111004004101040104110451115555951455555555 +5555155659afeaaea69a55556565666666565555555555545155155555599569 +9965514444411111100410410410ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ff0ff0f0f0fffffc3fc3ffffcf3c30ff0f +ff0f0ff0f0f0ffffff0fc30ff0f0f0fc3f0f0c0f0ff0f0f0fc3fffffffc3c3f0 +fffc3ffc3fc3cfc0f0ffffc3ff0fc3c3f0f0f0f0ff0ff0fffc3fc3fc3cfc0fff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc10410444100011010400441101044104441104411151555554514555555 +555551559aabbaaaaa659999555955556595595555554451551555556656666a +5595545111111104411111044100ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffc3c3f0fc3ffffc3fc3ffffcffc30ff0f +fc3fc3c3f0fc3fffff0fc30ff0f0fc3c3c3f0f0f0ff0f0fc3c3fffffffc3f0f0 +ffff0f0f0f0fcfc0f0ffffc3ffc3c3f0c3f0fc30ff0ff0fffc3ff0f0fcfc0fff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc04004041011100104044010040410404011010444415555544445555151 +5555155555abaaaaa699555555556596555955555554551515555556556555aa +9955451444444111040410411044ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fff00ff0fc3ffffc3fc3ffffcffc30ff0f +00fff00ff0fc3fffff0fc30ff0f0fc3c00ff0f0f0ff0f0fc3c003fffffc3f0f0 +00ffc03fc03fcff0f0fffc003ff003fc0ff0fc30ff0ff0ffc003fc03fcff0fff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc40441100104011041010404410041040440444411145555851154555515 +555154555a6abaaaaa665555555555555555555511155151445599666595999a +6995545111051110414104100404ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc04110044041100400441040104400411011041110444555511445555555 +55555555566aaeeaaa65955555555555555554515544451451455595555959a6 +9955514440444111111044444040ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc41004401040044044004104410111004110410411145555451111565515 +55554555599aeeeaa9a966555955545555545554515514511555555955569999 +6655555114441044440410101104ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc10441110411101010441041041000441004104104455554511455555555 +151555555966abaa9a99955555554554555551454511515555555655655a99aa +5551545444444404414441044040ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc44010004100410441010010000444010110444444544554444444595515 +455555555959abbaaa6659554555545554551454514515154555659956659a99 +9515450441111144104044101104ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc01104441044001010101101111010441001041111115445111515554551 +5555455556656aaaa6a5955555555545551155451515515155599966666666a9 +5544511111104401110411044040ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc40104010401110441040041010101010510410444444551111145555155 +11555555555566eeaa6a999555451551515511154544555555965659699669aa +6511111444110444404440410410ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fffffffffffc3ffffffffffff0ffffffff +fffffffffffc3fff0ffffffffffffc3fffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc11010444110410010411104104414444011104104451511445114654555 +55155555555569abaa6666565555515515455544515515555559659a66999a95 +9554444441104100444010404104ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fffffffffffc3fffc0fffffff0ffffffff +fffffffffffc3fff0ffffffffffffc3fffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc0044000100410444010404044101a440440411044445444451451555515 +45555445555556aafaa9999555455555555111155515555555965999a9a55665 +5044511111444444410441041104ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fffffffffffc3fff0c3cfffff0ffffffff +fffffffffff0ffff0ffffffffffff0ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc4410451044004040404040401011a510404441110514545111115591145 +54555555545559aaae9a5966555515144514515115555555556666699a999955 +5511111110111010441110410410ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fff0f0ff03fc30ff0c33fffff0c3fc30ff +c3c3fffffff0ffc00ff00fc3f0fff0ff003ff00ff0f0ff00ffc03f0c0fffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc10404040411104041010110441045104044110404455451111144551515 +144555154555659aaaa69995555555555555454551559556666599a6aaa65551 +0455444411010444104104004040ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fff0c0fc30fc0c3fc0cffffff030fc0c3f +c303ffffffc3ff0f0fc3c3c3f0ffc3fc3fcfc3f3f0c0fc3c3f0f0f0303ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc04041011040410410104400100400041101011111145511114455554455 +45515155555566666aa696599555955455155555555669a66666599a99995514 +5100444111104411041040440404ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fff03cf0fc3c3f0fff3ffffff0fc3c3f0f +c0f3ffffffc3fc3f0f0fc3c3f0ffc3fc3fff0ffff03cf0fc3c3f0f0fc3ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc41104440411040104041044044111100410441115151445111511151554 +51145444545565599aaaa56555595555555155555556a96669999a6a95555151 +1114411044444104411011011040ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fff0fff0fc3c3f0ffcfffffff0fc3c3f0f +c3ffffffff0ffc3f0f0003f0c3ff0ffc00ff0ffff0fff0003c000f0fc3ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc10040110104004410410101001001011041010441545451110154554445 +144515551555555599aaa995995595555515555555666a69999a669659555545 +1101104444111110110440440410ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fff0fff0fc3c3f0ff303fffff0fc3c3f0f +c3ffffffff0ffc3f0f0ffff0c3ff0fffc00f0ffff0fff0fffc3fff0fc3ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc41445004400440104104410444110400410444111055510445045144511 +45114411555555555659a69965995999555555565996666666a6999595554444 +4444111104404441044411010100ffc00000ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fff0fff0fc3c3f0fcc30fffff0fc3c3f0f +c3fffffffc3ffc3f0f0ffff0cffc3fffff0f0ffff0fff0fffc3fff0fc3ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc10554440110011001040040101044110444104444514511110444514451 +1144514551555555659a66669995966659959565966669a66a9a956555555111 +1044444111111044411104104044ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fff0fffc30fc3c3f3c30fffff0f0fc3c3f +c3fffffffc3fff0c0fc3f3fc0ffc3ffcff0fc3f3f0fffc3f3f0fcf0fc3ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc41198411041100444404404410401041010444411115145114515111114 +5115151115555555555665999a6659a99966666999669a66aaaa665555545454 +4441041444110410440041041100ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fff0ffff03fc00ffff03fffff003fc00ff +c3fffffff0ffffc30ff00ffc3ff0ffff003ff00ff0ffff00ffc03f0fc3ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc04454104404044410440110104040410501044104445511444444451111 +1144515544545455555595966696669a6666995999a66a9a66a5955554554444 +4444444104444104105410410410ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fffffffffffffffffffffffffffffc3fff +fffffffff0fffffffffffffffff0ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc40101040040404104111004400410104044111044454544444451111111 +11145444515545545555556566699a66a66999999966aaaaa655555545144444 +4410411110411111040404100004ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fffffffffffffffffffffffffffffc3fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc11044404404101041040440110441041101000444445051110444444451 +11114551151515555555955559965666659999969699aaae9956555451451104 +1104441041041041111110411110000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc40400104101044010404104404004010110444411111511111111111111 +1145111451515155145555559559595999566665999abb995555555444411111 +111111111041041040404104000110411110111040411044041013f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3fcffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc04111041010101104100401041101101004110110445114444444444444 +44445444445445515545155555555595559566566655a9599555544511144444 +444441040410410411041041111010040004101104100101010103f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3fcffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc41000104104040041044110010110044441004444444451111111114411 +1111111111451515551555155555656565665965959699565555115111044411 +111111111104104440410410100444411110040410411010441013f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3fcffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc04111041010411104101501104404400100441104444545041111111111 +1111445145145545115111555555555555599a56655555555551551444444110 +441111041051110111041104410001000404411104040101000403f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3fcffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc40100404100100040416e50440040111044110044444451451144444444 +4444444444554451551554451145555555959955555554455114411111111104 +411044410451044404104040044444111110104001011044111047f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3fcffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc11044110411044404047f51011104041111044444445115111444444511 +0444444411104515454511455515555555555655555545444511144444404444 +444440111110411141041104410010040041041110400410404103f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3fcffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc40411004100400111106e40440401101501101110444555110444444444 +4411111111451145545554545155655155555966555154451444445111144444 +444411104441101010411010101101004400410044110104110447f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3fcffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc11040110044044400011544004041010111011041111111511111111104 +4111111144414455454445455545594515455595511511511111110444444444 +451111044110044441040404410040440044041040404411004003f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3fcffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc00404404404104044441400441044104104441104111455111044544444 +1111044444511111151551144555551454545555554454111114444111111111 +111041110104410410404110104411004410404104110040441113f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3fcffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc44040101040400410004044010101040440110044441111444444111111 +1111111111111445454445451455554545114555445111111144411044111111 +104451004441104004110404041040110104040404044404110043f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3fcffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc41111040411044101110401104044011011004441114451110441110444 +4444444441144111111451514444515114451144514511114411110444444444 +044104444010441111104110400404404041010041100111004413f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3fcffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc00404104100401041041044041100400100444111111115111111114410 +4411111111044444545111144555144451445151111111144111111111111044 +511110444504110101041040110110110410444400044400441043f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3fcffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc44041041010110410410401110044111044111040441145111105104444 +1110444444511111111145115111545144511414444444411104444444441411 +044411040041011040410411041004401104100111101044000407f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3fcffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc01100410104044000104044004400410010004411111111111044444444 +4111111011111111111451111454114514444444451111111044041010411110 +441044111110440411040104101110110101011041010001110103f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3fcffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc44044101041101111040410441110101101110104111111111441111104 +1044444444444444444514444511445044451111111111111111104104111104 +450441041104411040404410010401004044404104104440404047f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3fcffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc00401044100010401004100010004041044044441104444444451110444 +4441041111041111111111511144451111111111111111104404441111104444 +411111111044104411041104441044101100110410040404111003f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3fcffffffffffffffffffffff0000000fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc44110400411104110440111104441110410400411041051450444445111 +1110410441111044444444111444444451444444444444110111111110444044 +111010404041041104410041010001044044401104410100400447f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3fcffffffffffffffffffffff0000003fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc01044111040041004004400040110404101111044410511104411111104 +1044444044444441041111044044444444104444110411044444410411111111 +104444441110444040104410101110411001040440041044111013f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3ffffffffffffffffffffffff000003ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc40401010404410110440104411004041044044104111044450444110444 +4455044444100444411111111411111111111011111044101104111144410444 +110404110004104410410001044041000444004444410400404103f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3ffffffffffffffffffffffff00000fffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc11040441041101000011010100441111041101111044444444441111111 +05e4441101051045444444444111104440441104441104444441104440444411 +044111044510410104041110100410111101110440101111040043f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3ffffffffffffffffffffffff00000fffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc40104004010040444440441010010400410044040401111111111111110 +4154110444411111511111041110444444411111111044111044444511111104 +441041101041104010404101011001000044104044410040411107f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3ffffffffffffffffffffffff000003ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc04400440441010400104100441104044104401104444445110440410444 +4414444111110416504444444444044410104440011101041111111144404110 +410444044010041101101010404110444410040404104404040413f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3ffffffffffffffffffffffff000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc41044004004104111010411010441010410110444110101111111114511 +1104411101104444444441044104441111040105141044110444111111141104 +444101110511110444044100101004101041104040410440404103f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3ffffffffffffffffffffffff0000003fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc04001104440441000404104104010441041044011044451111041111104 +0110104110411111111111104441110410411041044441104411040444411111 +041044104104404001010044444104044010041110104011110013f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3ffffffffffffffffffffffff0000000fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc40444040010041110101040401104000410411100441011111111104441 +4444441111044104044104140410404444444444410444444100444510444101 +054441041044110450441101010441001104411004041100001107f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3ffffffffffffffffffffffff0000003fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc04110411104410004410111044040444104110044410444111044454444 +1004411010404444411041014104111040410411111110101051045051111044 +458410444401041004004040441010110041040441110011110443f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3ffffffffffffffffffffffff03c000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc41040100010104440104400410404011041041411104441111441015111 +0444110504441010504111104441104411044440044104444411111411040441 +114111101111110441101011010101004410410010001104041013f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3ffffffffffffffffffffffff0ff003ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc00411011101040104411044100101100410404100441104441110441104 +4111044110410441041041041010444104441011404441041110444110405111 +104404044044104004040404441044110104104444444041004107f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3ffffffffffffffffffffffff0ffc0fffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc11100400010411010040401044411044104040411011044111044444451 +1104441044114410110444110444441110110440141044411111104444110410 +441041110410410440411040010101004410040400101010441043f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3ffffffffffffffffffffffff3fff3fffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc10044111104100101104044410110101044411044110441111104444511 +1110410411001105104101104401044104404111010440111111044101044111 +110410404441040410100410404044040104410111044111010107f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc41101004410044040010410101041010410101110004410410444111044 +4044444104451041111044441110411044111101111045004044444444411040 +411104110410404104411040441040411040404004010410101043f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc04040440101101104441101010410104104444044441044111111041111 +1110410440411110404410044444440441101044104410444411101044104444 +444441044104111041000411040411001004101110441041044013f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc41104011044044101004044104104441040101101044104444104444511 +0441104011111111041105104104111011044441110411111104111104410444 +410110404411000410111040411100444110051041010104100443f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc04040440401101010440400411040010404411044410410411044444111 +1044041104041041110110441041104104410410411040041041110441044401 +111011110100444104410410404044010401100404501000411043f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc40404104040410104011111040411104110040400104111101111044444 +4441111041110410404411010444440440104104440445110411111044404144 +104110404411041010100404110401101010411041044111040413f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc04110410411001040440040004104040401104111041010444410444411 +1044004111004104141104104410104414441044411041044111104104111011 +041111041040410104111041004044044104104004010040404043f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc41001041040110411011104441041011044041040411104110104441111 +0411141040510444410441110111044101010444104410441111041041101104 +411104110410101110404040441101010041040440441110111103f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc00444004011004100100401010410404101110404110044444444411044 +4441010411041010011011044410401044441101110444411044451111050441 +104111004104410104040410010044104410011011000004040413f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc44000440440441011011044104041110410044101004410101110444444 +4444444104411104504104401104450444104044104104110441011110404044 +041100104440104410411041101100040104400100444441104043f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc01110004104010104440040410104041044404044440441044044111111 +1111104444110441044441044044104101044410441111104111111044444504 +444444410011041040100410110411104440111044040010041103f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc41044441041101040011104101041010000111110111010410401044441 +1011111010404044441050444444441044411104411101041041044444444111 +104040104440404104411041004041010011040410411104410013f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc10400040410044011101011010410441111000041000444104111111110 +4444104441141100110411041104010444104111110414410444440441041040 +411104410111041040100404110410441104104101010040101107f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc01044404041101104044100411104004040444404444101041110444444 +4441110111010445044441110441511111110440104441104410444444444444 +104441104404040411044040400100010040040410404404410043f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc44000101004010101001044104001110410401110101044044041111111 +0411044410444010410411044110044104044445044110444144444444410411 +044011040041104104400410111044441004410104110110104413f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc00444410440401044110401040444004104110004044101101111044444 +4511110411041104111110441004411044444404441044411411111111111110 +444510411110411040104104404410104110104410401004110403f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc44100105504110101004110104400441001041110410410411144441011 +1104444444410444410041111144440440411044410445110444444451111104 +410004100404101011040410100101040404410101044101004113f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc01044417d41045044111004041044104144410044101111110010111111 +1111104110444040441444041011044104104110444444444411041111110444 +104511044101044104411104444044404040041040101044110007f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc44100116810411410404110404101040000104401010440404441041044 +4444111104104414104104411110444411110444404444104444444444444404 +444041101041000400104041011100101104404411000401041103f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc11011004404100104041004040410404444041044104011041010411111 +1041040444441041045041141044104111041044110411111111110411104110 +104410410410444044410404100044410040440504111110400047f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc00404410110411041010110411041040404410410440440410111110444 +1111111041011104441104104410441104411101044504444444104440411104 +440104101104011100104110444404041104004041010004111103f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc44110101004040411104040440104010101104041010104104104444441 +1104444444104440411041041104444110110444444111104401111011101044 +011040410041100411010400100111040041110410104441000413f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc11004410101104104101011011010404444010404104411041040101044 +4441041111110411100411110111041104444411444444444144444441044411 +110411044410044100104044411000404410104101041010444043f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc40110101044041040410400440401040001104040441001100411044444 +1044444410404110444441045041104041104110444444111044401111100101 +044100400404411044410440041111041101010410410104100413f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc10401040010410104044111004110111110041010010110044110410441 +1111111044145044044410410411041410441104441451111104451101045050 +401044444040100410101011104000410040404011104441011003f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc04040411104101041001010441004000411010444504404401004104011 +0441104441040404440104444441111111111111044411111044404044110401 +110410010411044101010100040444044411041100040104104113f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc40411004041044410440104040441111040400104044110110441044444 +4411041111444141105044104411010044400444444111041110444411041110 +104104404100411040441011011001001040410411105010441043f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc04100410410400104011010414010410411111001101004044104410441 +1110444011041010410441111110445440454411104411111111110110410044 +411040110444100411010400404110440411041041010100010413f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcc000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff000cf +fccfc41010101004044041104101100404041000041110410441101040404110 +4444441411110511111111040404110114404111044444404410404441104401 +040411041001044104104110110004011040104104101011104103f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc10104410110441010040444044110404111010004044110410410441104 +1041110110404111010411104444444444444410444410111044111010041110 +411104100444101040040411101110400404040440411040401047f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfccffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00ccf +fccfc01010004401010404411001041001040044104441101004104104044441 +0411011104444110444104044444411111110444410444444111040444410010 +104040411000444411104100010401111010404010100404044003f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc40400440040444110040441100440404401010410010110410401101044 +4444441044111104101111104111110444104410104410410440411101104511 +010411040110001040010411111044040441101104411041001113f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfccffcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00ccf +fccfc11111011104001004411010011010100110404104441041041044041010 +4010110441041041051100411104104441044105044104104104104041041010 +441104411004444011104001004010411010044440100410444043f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc40040100041110110100404440411044404110401010104010101104441 +1104414444410444410044110444441045111040411044444411111104110404 +410100100440100440441110110501000404400404414104101107f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfccffcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00ccf +fccfc04404411010404041044110011040410041004110441011104410041010 +0441101100444441111445104444110444441111104104110104040441041041 +044444411044411010440404101044111041044101040041044013f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc10110100441041000401001100004104410441004010400040041410441 +1040441051044410410101044111041041111104041041044441104010410410 +401010040410040444104040410400410110410044004410401103f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfccffcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00ccf +fccfc41004411000110444110440044441040104010441101111104410044104 +0411010410410444111044404404410411104411104444510410441104104104 +110104411104410401041010104044104004104400440104044013f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc04110040444404011000044440104411040441010410010410441101041 +1100444444444101010441110444104110044404040101541111011041041041 +041040400040404044104104440401041100041044104401000403f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfccffcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00ccf +fccfc40401111000040440444410411010104410104104104444041010410410 +0411010441111044444044044044441104440110445044510400440410410404 +104404111004111101010041010440410411100401010110444113f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc04110000111104010004104040401040104041041040401010104041041 +1040444410404100401101101110110041111104440440110111011041104101 +040111000441000410441104104011040100411110441044001103f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfccffcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00ccf +fccfc41004444404041104441010410110511041010111104110441041104110 +0404101044441044444111041044411111041044111045044440444104044044 +411004111040444044044040041100411044040104004100444047f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfc00000000000000000000000000000000000000000000000000000000 +00000000000000000000000f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc10440000110400041010104404041100404101004441004004444010404 +4111010411044411041010410401110401044441004410410011041010401100 +104440104104104401001104410044100410404401110011040413f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfccffcfcfcfcfcfcfcfcf +cfcfcfccffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00ccf +fccfc04111111004111104101040110410011041044441110441110101104101 +0400444440411104110504111111104110411010444104104504404104144044 +400011041041000110450004101104410101040110101100411103f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc41000400441041010410404404041104100440411041010404410441044 +1111041044104110411041040040411111104104411041040400110441001101 +044500100110444404004441010041041010004404410044110047f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfccffcfcfcfcfcfcfcfcf +cfcfcfccffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00ccf +fccfc10111044110400401044041041104041044010101010404110104410404 +0410410410441044111110411111040410041041104410404111041010440410 +104044411004100100440104104404100441100041004410441103f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f000003ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc41040111004044110401010410010440410441044101041004440104041 +1041041104104401004004444401111044444410410111041000410441011011 +010410004110411044011040410110044101044410110101004043f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfccffcfcfcfcfcfcfcfcf +cfcfcfccffc00000ffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00fffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00ccf +fccfc00404000441001040110410101104104104101101044100440004441110 +0010410411010444441110100044044101010104104400410444104104100440 +104101110404041101100410101004401010404104401044101107f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcffcffffcffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff0000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000cfc +cfcfc44110444010444104404041044041041040410444101044011110104011 +1104011040404410110411044441001044444410041044404110401041044104 +441040104040410010410404410441040104040411044101044043f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfccffcfcfcfcfcfcfcfcf +cfcfcfccffcffffcffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff0000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000ccf +fccfc11004040404041004041004401010410404010001044104440404410440 +4101104104110104411040410044444110104104410411110404110410410400 +040411041044041101044104104010011040411040401040400413f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcffcffffcfffffffffffffffffff0ffffffffffffffffffffffffffff +fffffffffffffffffffff0000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000cfc +cfcfc40441104110410441104440110440100104441110401010104041041044 +1040441041101041110411101400104441041044104110104110044104104045 +011104104401010040401040041101110044100105040011110103f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfccffcfcfcfcfcfcfcfcf +cfcfcfccffcffffcfffc0ffffffffffffff0ffffffc3ffffffffffffffffffff +fffffffffffffffffffff0000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000ccf +fccfc04044041010441010010044404004011041010104110401010410410401 +0411010404044410411104010114410401104441041004441004404044401100 +440041040111104404110404410041004410411010111105941047f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcffcffffcfff0c3cffffffffffff0ffffffc3ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffccfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc41100411104010104441100110441104110104400410110404100101050 +0100441101100104100441111040104110410104100441010110441100110044 +104404104410040101104041044404101041041104404445e10403f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfccffcfcfcfcfcfcfcfcf +cfcfcfccffcffffcfff0c33fc00ffffffc00f003ffc3fff00fffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcffccf +fccfc10044101041104400410044404110101004410044104410110444044104 +4044010110411010411010410411041010104041044110101004010411041401 +010041001041011044040400400111044010410010040005504113f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcffcffffcfffc0cff0f0ffffff0f0fff0fc000fc3c3ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffccfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc04401040410040110004401041004440440101101010104404111101010 +1404501011044444110441040404110444410410401004410441104041004110 +444410110410440401104111044400401104104441104500041007f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfccffcfcfcfcfcfcfcfcf +cfcfcfccffcffffcfffff3fc3f0fffffc3f0fff0ffc3ff0fc3ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcffccf +fccfc40110411041104411101044100440011011044040104410110440040441 +0110044400410401044104104110404100100104111110104010111104110041 +001041041044404110011010410044110401040104041011010443f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcc00000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000cfcfcfcfcfcfc +cfcfc04404104000040100441000411044440100441104410101041004411010 +4404410111104044101041044004104044411041040401041105000041041104 +110404104101041004400404004410041044104410410101101043f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfccffcfcfcfcfcfc00000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000fcfcfcfcffccf +fccfc40111040444411011010111040410404411010041004410400440104104 +0110101010041101010410410441011100110410404110410040444404104041 +004101010410410440111040444104410401040104104410044013f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcc00000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000cfcfcfcfcfcfc +cfcfc11000104011100440401104011004040004104410441101054011041001 +1041010104410041104104104041100411010104111004041004010110040410 +110410440104100104404104401000404040411041041044410443f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfccffcfcfcfcfcfc00000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000fcfcfcfcffccf +f000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000fcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f0000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000fcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fc00000ffffffffffffffffffffffffffffffffcffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcffffffffffffffffffffff00000fffffcfffff00f0000ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcffffffffffffffffffffff3fffcfffffcfffffffffcffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcffffffffffffffffffffff3fffcfffffcffffc000fcffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcffffffffffffffffffffff3fffcff00000000ffffc003ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcffffffffffffffffffffff3fffcffffcccffff003f3f3ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffff3ffffffffffff3fffcffffccc3fffffff3f3ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffff3ffffffffffff00000ffff0cf3fffffff3f3ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffff3ffffffffffff3fffcffff3cf0fff00300003fffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffc000fffffffffff3fffcfffc3cfc3fffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffff3ffffffffffff3fffcfff0fcff0fffffc000ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffff3ffffffffffff3fffcffc3fcffc3f003cffcffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffff3fff03fffffff3fffcff0f0003f0f3f3cffcffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffff03fffffff3fffcfffffcfffff3f3cffcffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcffffffffffffffffffffff00000fffffcfffff3f3cffcffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcffffffffffffffffffffffffffffffffcfffff003c000ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcff3ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcff3ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcff3ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcff3ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcff3ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcff3ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcff3ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcff3ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcff3ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcff3ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcff3ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcff3ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcff3ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcff3ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcff3ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcff3ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcff3ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 +0000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fffff +ffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fffff +ffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fffff +ffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fffff +ffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fc000 +00000fcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fcfff +ffffcfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fcfff +ffffcfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fcfff +ffffcfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fcfff +ffffcfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fcfff +ffffcfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fcfff +ffffcfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffc0000000000 +000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fcfff +ffffcfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffff +ffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fcfff +ffffcfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffff +ffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fcfff +ffffcfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffff +ffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fcfff +ffffcfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffff +ffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fcfff +ffffcfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffc0000000 +0fcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fcfff +ffffcfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffcfffffff +cfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fcfff +ffffcfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffcfffffff +cfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fcfff +ffffcfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffcfffffff +cfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fcfff +ffffcfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffcfffffff +cfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fcfff +ffffcfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffcfffffff +cfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fcfff +ffffcfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffcfffffff +cfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fcfff +ffffcfcffffff00fffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffcfffffff +cfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fcfff +ffffcfcffffc0ff03fffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffcfffffff +cfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fcfff +ffffcfcfffc3ffffc0000003ffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffcfffffff +cfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fcfff +ffffcfcfff3ffffffffffff0ffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffcfffffff +cfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fcfff +ffffcfcfc0fffffffffffffcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffcfffffff +cfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fcfff +ffffcfcfcffffffffffffffcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffcfffffff +cfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffc000033fcfff +ffffcfcffffffffffffffffcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffcfffffff +cfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fc00000fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffff3fffff3fc000 +00000fcffffffffffffffffcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffcfffffff +cfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffcffffff3fffff +ffffffcffffffffffffffffcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffcfffffff +cfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffff3ffffff3fffff +ffffffcfffffffffffffffc00fffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffcfffffff +cfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffff3ffffff3fffff +ffffffcfffffffffffffff3ff3ffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffcfffffff +cfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f0000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000ffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffcfffffff3fffff +ffffffcffffffffffffffcfffcffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffcfffffff +cfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f0000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000fcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffcfffffff3fffff +ffffffcffffffffffffff3ffff3fffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffcfffffff +cfcffffff00fffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f0000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000ffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffc0000000000000ffffffffcfffffff000000 +0000000fffffffffffffcfffffcfffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffcfffffff +cfcffffc0ff03fffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f0000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000fcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffcffffffffffffcffffffffcfffffffffffff +ffffffffffffffffffffcfffffcfffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffcfffffff +cfcfffc3ffffc0000003ffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f0000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000ffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffcffffffffffffcffffffffcffc0000000000 +00000000000000ffffffcfffffcfffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffcfffffff +cfcfff3ffffffffffff0ffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c00000ff3ffffffffff3fffffffffffffffffcffffffffffffff3ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +3fffffffcffffffcfffccffffffffffffffffcffffffffffffffffffffffffff +ffffffffffffffffffffffffff3f3ffffff3ffffffffccfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffcffffffffffffcffffffffcffcffcffcffcf +fcffcff3ff3ffcffffffcfffffcfffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffcfffffff +cfcfc0fffffffffffffcffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ff3ffffffffff3ff000ffffffffffffcfffffcfffcffff3ffffff +fffffffffffffffffffffffffffc0000ffff3fffffff000000ffffffffffffff +3fffffffcffffffcfffccffffffff0000ffffcffffffffffffffffffffffffff +ffffffffffffffffffffffffff3f3ffffff3fffff0ff0cffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffcffffffffffffcffffffffcffcff33f33f33 +f33f33ccfccffcffffffcfffffcfffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffcfffffff +cfcfcffffffffffffffcffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ff3ffffffff000033fcfffc00ffffffcfffffcfffcfffc000c003 +fffffffffc0000003fcfffffffffffc3ffff0fffffff3fcffcffcfffffffffff +3fffffffcffffffcffcfffffff0033ffcffffcffffffffffffffffffffffffff +fffffffff003fffffffffffffc3f3ffffff003fffc3f3cfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffcff00000000cfcffffffffcffcffcffcffcf +fcffcff3ff3ffcfffffff3ffff3fffff0000000000000fffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffc00000ffcfffffff +cfcffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ff3ffffffffcffcf3f0ffc0cc0fffffcfffff0fffcfffcf3fcff3 +fffffffffffffc3fffcffff3ffffff0fffffcfffffff3fcffcffcffff3fff000 +000fc00000003ffcffc3fffffff3f3ffcfc00000003fffffffffffffffffffff +ffffffff03303ffffffffffffcff3fcff003ffffff3c00ffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffcff3fffffffcfcffffffffcffcffffffffff +fffffffffffffcffffffccfffccfffff3fffffffffffcfffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff3ffffcffc0000000 +0fcffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ff3ffffffffc3f0f3f3ff0fcfc3ffffcfffff3f00000f0f3fcff3 +fffffffffffff0ffffcffff0fffffc3fffffc3ffc3ff000000ffcffff0ffffff +3fffffffcffffc0003f0fffffff3f0000ffff3ffffffffffffffffffffffffff +fffffffc3f3f0ff000fc00fff0ff3f0fffcffffffff0fcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffcff3fffffffcfcffffffffcffcffffffffff +fffffffffffffcfffffff33ff33fffff3fffffffffffcfffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffcfffffcffffffffff +ffcfffffffffffffffc00fffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ff3fffffffff3f3f3c3fc3fcff3ffffcfffff3fffcfffff3fcff3 +ffffffffffffc3ffffcffffc3ffff0fffffff3fc0fff3fcffcffcffffc3fffff +3fffffffcffffffcfcfcfffffff3f3ffcfff33fcffffffffffffffffffffffff +fffffff0ff3fcff0fc3c3c3ff3ff303fffcfffc3ffccfcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffcff3fffffffcfcfffffffff3fcffffffffff +fffffffffffffcffffffffc00fffffff3fffffffffffcfffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffff3fffffcffffffffff +ffcfffffffffffffff3ff3ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ff3fffffffff3f3f3cffcff0ff0ffff03ffff3fffcfffff3fcff3 +ffffffffffffcfffffcfffff3fffc000fffff0c0ffff3fcffcffcfffff3ff000 +000ffff00ffffffcfcfc3fffff0033ffcfff0ffcffffffffc3c330c3f003fc30 +fffffff3fc3fc3f0fc3c3f0fc3ff03ffff003c0ffffc00fcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffcff3fffffffcfcfffffffff3fcffcffcffcf +fcffcff3ff3ffcfffffffff33fffffff3fffffffffffcfffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffff3fffffcffffffffff +ffcffffffffffffffcfffcffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ff30000000f000033f3f0ff3ffcffff33ffff3fffcfff00000ff3 +ffff00ffffff0fffffcfffff0fff0ffc3ffffc0fffff3fcffcffcfffff0fffff +3fffffc3c3fffff0fcff3ffffff3f0000fff3ffcffffffffc3030c30fff0fc0c +3fffffc3fcfff3f0fc3c3f0f03ff3ffffc3fc0ffc03cfcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffcff3fffffffcfcfffffffffc00ff33f33f33 +f33f33ccfccffcfffffffffcffffffff3fc00000000fcfffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffcffffffcffffffffff +ffcffffffffffffff3ffff3fffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ff3fffffffffffff3fcf3fc3ffcffff30ffff3fffcfffff3fcff3 +fff03f3fffff3fffffcfffffcffc3fff0ffff0ffffff000000ffcfffffcfffff +3fffffcff3fffff3fcff3ffffff3f3ffcffc3c0000ffffffc0f30c30fff0fc3f +0fffffcff0fff3f0f0fc3f0c33ff3ffff0fc0fffff3cfcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffcff3fffffffcfcfffffffffffcffcffcffcf +fcffcff3ff3ffcffffffffffffffffff3fcfffffffcfcfffffffffffffffffff +ffffffffffffffffffffffffc0000000000000ffffffffcffffffc0000000000 +000fffffffffffffcfffffcfffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ff3fffffffffffff3fcf3fcfffcfffc3cffff3fffcfffff3fcff3 +ff03ffcfffff3fffffcfffffcff0ffffcfffc3ffffffffffffffcfffffcfffff +3fffffcff3fffff3fcfffffffff3f3ffcff33ffcffffffffc3ff0c30f000fc3f +0fffffcff3fff3f003fc3f0ff3ff3ffffff0cfffff3c00ffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffcff3fffffffcfcfffffffffffcffffffffff +fffffffffffffcffffffffffffffffff3fcfffffffcfcfffffffffffffffffff +ffffffffffffffffffffffffcffffffffffffcffffffffcfffffffffffffffff +ffffffffffffffffcfffffcfffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ff3ffffffffc000f3fcf3f0fff0fffcfc3fff3fc00ffffc0fcff3 +ffffffcfffff3fffffc3cfffcfffc0ffcfff0fffffffffc3ffffc3cfffcffc00 +3fffffc3f3ffffc3fcfffffffff3f0000fcf3ffcffffffffc3ff0c30c3f0fc3f +0fffffcfc3ffc3f0fffc3f0ff3ff3fffffc3cfffff3cfcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffcff3fffffffcfcfffffffffffcffffffffff +fffffffffffffcffffffffffffffffff3fcfffffffcfcfffffffffffffffffff +ffffffffffffffffffffffffcffffffffffffcffffffffcffc00000000000000 +000000000cffffffcfffffcfffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ff3ffffffffcffcf3fcf3c3fff3fff0ff0fff3f3fc0fffccfcff3 +ffffffcfffff0ffffff30fffffff3c3fcfff3fffffff3cf0fc3ff30ffffff3ff +03fffff003ffffcffcfffffffff03f3cffff3ffcffffffffc3ff0c30c3f0fc3f +0fffffcf0fffcff0fffc3f0ff3ff3ff3ff0fcfffff3cfcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffcff3fffffffcfcfffffffffffcffffffffff +fffffffffffffcffffffffffffffffff3fcfffffffcfcfffffffffffffffffff +ffffffffffffffffffffffffcffffffffffffcffffffffcffcffcff3ffcffcff +cff3ff3ffcffffffcfffffcfffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ff3ffffffffcffcf3c0fc0fff03ffc3ffc3ff333fcc3ff0c3cff3 +ffffff0fffffc3fffff03fffffff3f3f0fff3fffffff3cfcff0ff03ffffff3ff +303fffffcfffff0ff0fffff03f03ff3cffff3ffcffffffffc3ff0c30c3c0fc3c +3ffffff03ffc0ff0fffc3c3ff3ff3ff3ff3fffffff3c00fcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffcff3fffffffcfcfffffffffffcffcffcffcf +fcffcff3ff3ffcffffffffffffffffff3fcfffffffcfcfffffffffffffffffff +ffffffffffffffffffffffffcffffffffffffcffffffffcffcff33ccff33f33f +33ccfccffcffffffcfffffcfffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ff3ffffffffcffcf3fffffff03fff0ffff0ff0f3f0f0ff3f3c003 +fffffc3ffffff03ffffcffffffff0f3c3fff0ffffffc3cfff3cffcfffffff3fc +3f0fffff0ffffc3ff3fffff03ffffc3cfcff3ffcffffffffc3ff0c30f0303c00 +ffffffffffc0fff0fffc00fff3ff3fc3ff0ffffffc3ffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffcff3fffffffcfcfffffffffffcff33f33f33 +f33f33ccfccffcffffffffffffffffff3fcfffffffcfcfffffffffffffffffff +ffffffffffffffffffffffffcff000000003fcffffffffcffcffcff3ffcffcff +cff3ff3ffcfffffff3ffff3fffff0000000000000fffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ff3ffffffffcffcf3fffffffffffc3ffffc3fcfc03fffc3f0ffff +ffffc0ffffffff03ffffffffffffc000ffffc00003f0fc3fc3fffffffffffc00 +fffffffc3fffffff03ffffff3ffff0fcf0ff3000003ffffffffffffffffffc3f +fffffffffffffffffffffffff3ff0fcfffc0000ff0cffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffcff3fffffffcfcfffffffffffcffcffcffcf +fcffcff3ff3ffcffffffffffffffffff3fcfffffffcfcfffffffffffffffffff +ffffffffffffffffffffffffcff3fffffff3fcffffffffcffcffffffffffffff +fffffffffcffffffccfffccfffff3fffffffffffcfffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ff3ffffffffc000f3fffffffffff0ffffff0fffffffff0fffffff +ffffffffffffffffffffffffffffffffffffffffffffff000fffffffffffffff +ffffffc0fffffffffffffff0ffff03ff03ff3ffffffffffffffffffffffffc3f +fffffffffffffffffffffffff3ffc00fffffffffc3f000ffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffcff3fffffffcfcfffffffffffcffffffffff +fffffffffffffcffffffffffffffffff3fcfffffffcfcfffffffffffffffffff +ffffffffffffffffffffffffcff3fffffff3fcffffffffcffcffffffffffffff +fffffffffcfffffff33ff33fffff3fffffffffffcfffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ff3ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffcff3fffffffcfcfffffffffffcffffffffff +fffffffffffffcffffffffffffffffff3fcfffffffcfcfffffffffffffffffff +ffffffffffffffffffffffffcff3fffffff3fcfffffffff3fcffffffffffffff +fffffffffcffffffffc00fffffff3fffffffffffcfffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffff3ffffffcff3ffffcfffffff3fcf3f3ff3ffcffffff3ffff +ffffffffffff3ffccfff3fcfffffffffffffffffffffffffffffffffffffffff +fff03f3fffffffcffffffcffffffc3fffffffffffffff3ffffffffffffffffff +3ffffffffffffffcfffffffffffff3fffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffcff3fffffffcfcfffffffffffc0000000000 +00000000000000ffffffffffffffffff3fcfffffffcfcfffffffffffffffffff +ffffffffffffffffffffffffcff3fffffff3fcfffffffff3fcffcff3ffcffcff +cff3ff3ffcfffffffff33fffffff3fffffffffffcfffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffc0ffffffcff3ffffcfffffff3f3f3cffc3cfcf0ffff3ffff +ff00000fffff3ffccfff3fcfffff3fffffffffffffffffff0f00000fff3fff3f +f003ff3fffffff0ffffffcfffffff03fffff3ffffffff3fffffffcfffcffffff +3fffffcffffffffcfffffffffffff3ffffff3ffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffcff3fffffffcfcffffffffffffffffffffff +f3ffffffffffffffffffffffffffffff3fcfffffffcfcfffffffffffffffffff +ffffffffffffffffffffffffcff3fffffff3fcfffffffffc00ff33ccff33f33f +33ccfccffcfffffffffcffffffff3fc00000000fcfffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffff0c3fffff0ff0ffffcfff0fff3c3330cfcfcfc03ffff003ff +fffffc3fff00000ffc00000003ff3fffffffffffffffffffc3fcfc3fff3fff3f +ffcfff3ffffffc3ffffffcffffffff03ffff3ffffffff3ffc3fffcfffcffffff +3fffffcffffffffcfffffffffff000003fff0ffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffcff3fffffffcfcffffffffffffffffffffff +f3ffffffffffffffffffffffffffffff3fcfffffffcfcfffffffffffffffffff +ffffffffffffffffffffffffcff3fffffff3fcfffffffffffcffcff3ffcffcff +cff3ff3ffcffffffffffffffffff3fcfffffffcfcfffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffc3f03ffff3ffcfff0003fc3f003cf3f3f0003cffff003ffff +ffffc3ffffffcfffffff3fcfffff3ffffffffffffffffffff3ff33ffff3fff3f +c0000f3ffffff0fffffffcfffffffffffffc3f0003fc000ff0fffcfffcfff000 +000fffcffffffc0003ffffffffffcfffffffcffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffcff3fffffffcfcfffffc03ffffffffffffff +fcffffffffffffffffffffffffffffff3fcfffffffcfcfffffffffffffffffff +ffffffffffffffffffffffffcff3fffffff3fcfffffffffffcffffffffffffff +fffffffffcffffffffffffffffff3fcfffffffcfcfffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffc0fff03ffc3ffc3fffcffff0ff3f3f3ccc3ff3cff3ffcfffff +ffff0fffffffcffffffffcffffff3fffffffffffffffffffffc0000fff3fff3f +ffcff0003fffc3fffffffc003ffffffffffcfffffffff3fffc3ffcfffcffffff +3fffffcffffffff3ffffffffffffcfcfffffc3ffc3fffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffcff3fffffffcfcffff03fc0fffffffffffff +fcffffffffffffffffffffffffffffff3fcfffffffcfcfffffffffffffffffff +ffffffffffffffffffffffffcff3fffffff3fcfffffffffffcffffffffffffff +fffffffffcffffffffffffffffff3fcfffffffcfcfffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffc0fffff03f0ffff0fff0fffffff3f33300fffffc3c3ffcfffc3 +fffc3fffff000003ff0ffc003fff3fffffffffffffffffffffcfcfcfff3fff3f +f0003f3f3fff0ffffffffcfffffc0000fffcffffffffc3fffffffcfffcffffff +3fffffcffffffff3fc00ffffffffc000fffff3fc0ffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffcff3fffffffcfcfffcfffff00000003fffff +fcffffffffffffffffffffffffffffff3fcfffffffcfcfffffffffffffffffff +ffffffffffffffffffffffffcff3fffffff3fcfffffffffffcffffffffffffff +fffffffffcffffffffffffffffff3fcfffffffcfcfffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffff00003ffc3ffffc3ff3ffcfffc3c033cff0003f00fff003c0f +ffc3fffffffff3ffffc0f0fc3fff3fffffffffffffffffffffcfcfcfff3fff3f +f3cf3f3f3ff0fffffffffcfffffffffc3ffcffffffffcfff3ffffcfffcfff000 +000fffcffffffff3fffffffffffc0fcc0ffff0c0fffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffcff3fffffffcfcffc3ffffffffffff0fffff +ff3fffffffffffffffffffffffffffff3fcfffffffcfcfffffffffffffffffff +ffffffffffffffffffffffffcff3fffffff3fcfffffffffffcffcff3ffcffcff +cff3ff3ffcffffffffffffffffff3fcfffffffcfcfffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffff3ffff0c000030ff3ffcfffc0fff3f3f3ff3fffffc3fc0ff +f0000000fffffcffffffc330ffff3ffffffffffc0000003c03c0000fff33ff3f +f0003f3f3fc3fffffffffcffffffffff3ffcffffffffcfff3ffffccffcffffff +3fffffcfffffffc3fffffffffff0cfcfcffffc0ffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffcff3fffffffcfcfc3fffffffffffffcfffff +ff3fffffffffffffffffffffffffffff3fcfffffffcfcfffffffffffffffffff +ffffffffffffffffffffffffcff3fffffff3fcfffffffffffcff33ccff33f33f +33ccfccffcffffffffffffffffff3fcfffffffcfcfffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffff3fffffff3ff3ffc3ffcfffc3300000f3ff3fffff0fc0fff +ffff0ffffff0000ffc3fff03ffff3ffffffffffffffffffff3cfcfcfff0fff3f +f3cf3f3f3ff0fffffffffcffffffffff3ffcffffffff0fff3ffffc3ffcffffff +3fffffcfffffffcffffffffffff3cfcfc3fff0fffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffcff3fffffffcfcfcffffffffffffffcfffff +ffcfffffffffffffffffffffffffffff3fcfffffffcfcffffffc0fffffffffff +ffffffffffffffffffffffffcff3fffffff3fcfffffffffffcffcff3ffcffcff +cff3ff3ffcffffffffffffffffff3fcfffffffcfcfffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fff0000000ffff3ff3ffcfffcfff3333f3fff0003cffffff0cfff +fffc3fffffcfffc3ff03f0303fff3ffffffffffffffffffff3cfcfcfff3fff3f +f0003f3f3ffc3ffffffffcffffffffff3ffcffffffff3fff3ffffcfffcffffff +3fffffcfffffffcfffffffffffc3cf3ff3ffc3fffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffc00000ff3fffffffcfcffffffffffffffffcfffff +ffcfffffffffffffffffffffffffffff3fcfffffffcfcfffff03f03fffffffff +ffffffffffffffffffffffffcff3fffffff3fcfffffffffffcffffffffffffff +fffffffffcffffffffffffffffff3fcfffffffcfcfffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffff3fffffff3ff3ff0fffcfff33f3fcf3f3ff3cf0fffc3cfff +fff0ffffff3fffffffff03ff03ff3fffcffffffffffffffff3c0000ffffffc3f +ffcfff3f3fff0ffffff000fffffffffc3ffcfcfffffc3fff3ffffffff0fffc00 +3fffffcffff3ff0fffffffffffcfcf3ff3ff0ffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffff3ffffcff000000000fcffffffffffffffffcfffff +ffcfffffffffffffffffffffffffffff3fcfffffffcfcffffcffffc0000003ff +ffffffffffffffffffffffffcff3fffffff3fcfffffffffffcffffffffffffff +fffffffffcffffffffffffffffff3fcfffffffcfcfffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffff3f3fcffffc3ff3ffffc00ffff3f0fccff3ff3c03fff0fcfff +fff3ffffff3fffffffffffffffff3fff0ffffffffffffffff3cfcfcffffffcff +f0003c3f3fffc3ffffcffc0ffffffff0fffcfcffffffff003ffffffff3fff3ff +03ffffcfffc3ff3fffffffffffcfccffc3ff3ffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffcfffffcffffffffffffcffffffffffffffffcfffff +fff3ffffffffffffffffffffffffffff3fcfffffffcfcfffc3fffffffffff3ff +ffffffffffffffffffffffffcff3fffffff3fcfffffffffffc00000000000000 +0000000000ffffffffffffffffff3fcfffffffcfcfffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffff3f3fcffffcfff3ffff3fc0fff3f33f3ff0003cfffff3fffff +fff3ffffff0ffffffff0f0003fff3ffc3fff03fffffffffff3cfcfcffffff0ff +ffcffcff3ffff0ffffcffcc0ffffffc3fffccc3ffffffcff03ffffffc3fff3ff +303fffcfff0fff3ff3fffff03fcfc3ffcfff3fffffffc0ffcfcfcfcfcfc03fff +ffffffffffffffffffffff3fffffcffffffffffffcfffffffffffffffc00ffff +fff3ffffffffffffffffffffffffffff3fcfffffffcfcffc3ffffffffffffcff +ffffffffffffffffffffffffcff3fffffff3fcfffffffffffffffffffffff3ff +ffffffffffffffffffffffffffff3fcfffffffcfcfffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffc3f3fc3fff0ffc3ffff3f0c3ff3c33cccf3ff3cff3ff0fffff +fff0ffffffc0ffffffc3f3ff3fffcfc0ffff03ffffffffffc3cfcf0fffffc3ff +ffc030fc3ffffc3fffcff0fc3ffffc0ffffc3f0000fffcfc30ffffff0ffff3fc +3f0ffff3f03ffc3ff0fffff03ff03ffc0fff0fffffffc0fcfcfcfcfcfcc03fff +ffffffffffffffffffffff3fffffcffffffffffffcfffffffffffffff3ff3fff +fff3ffffffffffffffffffffffffffff3fcfffffffcfcff0fffffffffffffcff +ffffffffffffffffffffffffcff3fffffff3fcfffffffffffffffffffffff3ff +ffffffffffffffffffffffffffff3fcfffffffcfcfffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fff0ff3ff0ffc3ffcfffffc03ffff3cff3c0f3ff3c3c3ffc0000f +fffc0ffffffc000fff0ff3ff3ffff00ffffff3ffffffffff0cfffffffffc0fff +fc0fc3fcffffff0ffff003ffffff00ffffff3fffffffff00fffffff03ffffc00 +fffffffc03fffcfffc003fffffffffc0ffffc00003fffcffcfcfcfcfcfc03fff +fffffffffffffffffffffcffffffcffffffffffffcffffffffffffffcfffcfff +fffcffffffffffffffffffffffffffff3fcfffffffcfcffffffffffffffffcff +ffffffffffffffffffffffffcff3fffffff3fcfffffffffffffffffffffffcff +ffffffffffffffffffffffffffff3fcfffffffcfcfffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffff03ffffc0ffc0ffffffffffff30f0ff3f3fc3f00fffffffff +ffffc03ffffffffffc3ff0003fffffffffff0ffffffffffc3f000003ffffffff +c0ff0fc0ffffffcfffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffc0fcfcfcfcfcfcc03fff +fffffffffffffffffffffcffffffcffffffffffffcffffffffffffff3ffff3ff +fffcfffffffffffffffffffffff000003fcfffffffcfcffffffffffffffffcff +ffffffffffffffffffffffffcff3fffffff3fcfffffc03fffffffffffffffcff +ffffffffffffffffffffffffffff3fcfffffffcfcfffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffcffffffc0000000000000fffffffffffffcfffffcff +fffcffffffffffffffffffffff0fffff3fc00000000fcffffffffffffffffcff +ffffffffffffffffffffffffcff3fffffff3fcffff03fc0ffffffffffffffcff +ffffffffffffffffffffffffffff3fcfffffffcfcfffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffcffffcfffcfffffffcfffffff3fcf3f3ff3ffcffffff3ffff +fffffcffffcffffffffffcffffffffffffffffffffffffcfffffffffffffffff +3ffffff3fff33fffffffffffffffffffffffffffffffffffffffffffffffff3f +fcfffcfffffffffffffffffcfffffffffffffffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffcfffffffffffffffffffffffffffffffffcfffffcff +ffff3ffffffffffffffffffffcffffff3fffffffffffcfffffffffffffffc00f +ffffffffffffffffffffffffcff3fffffff3fcfffcfffff0000000ffffffff3f +ffffffffffffffffffffffffffff3fcfffffffcfcfffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffcfffc0fffcfffffffcfffffff3f3f3cffc3cfcf0ffff3ffff +f0fff3ffffcffffffffffcfffffc0000ffff00000fffffcfffffffffffffffff +3ffffff3fff33fffff000f000fc0030000fcfffcffffc00003ffffffffffff0f +f0fffcff0003ffcffffffffcfffffffc0000fffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffcffc000000000000000000000003ffffffcfffffcff +ffff3ffffffffffffffffffff3ffffff3fffffffffffcfffffffffffffff3ff3 +ffffffffffffffffffffffffcff3fffffff3fcffc3fffffffffffc3fffffff3f +ffffffffffffffffffffffffffff3fcfffffffcfcfffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffc000300ffffcfffffffcfff0fff3c3330cfcfcfc03ffff003ff +fc3c0003ffcfff003ffffcffffffffc3ffffffff3ffc0000003f0000003fffff +3ffffff3ff3fffffff3fcf3fcfcff3fcfffcfffcffffffff0fffffc00fffffcf +f3fffcff3ff3ffc3fffffffcfff0ffffffc3fffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffcffcffcff3ff3ff3ff3ff3ff3ff3ffffffcfffffcff +ffffcffffffffffffffffffff3ffffff3fffffffffffcffffffffffffffcfffc +ffffffffffffffffffffffffcff3fffffff3fcfc3fffffffffffff3fffffff3f +ffffffffffffffffffffffffffff3fcfffffffcfcfffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fff3fcf3fffc0003ffff0003fc3f003cf3f3f0003cffff003ffff +ff3cfff3ffcfff3f3c00000003ffff0ffffff0fcfffcffffff3fffff0fff0000 +0000fff3ff0fffffff000f000fc003c003f0fffcfffffff0fffffc0cc0ff0000 +0000fcff0003fff3ffffff0003fc3fffff0ffffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffcffcff33ccfccfccfccfccfccff3ffffffcfffffcff +ffffcfffffffffffffffffffcfffffff3fffffffffffcffffffffffffff3ffff +3fffffffffffffffffffffffcff3fffffff3fcfcffffffffffffff3fffffffcf +ffffffffffffffffffffffffffff3fcfffffffcfcffffff00fffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fff0f0f3fffff3fffffffcffff0ff3f3f3ccc3ff3cff3ffcfffff +fffcfff3f0000f3f3ffffcfffffffc3ffffffc33fffcffffff3ffffc3f33ffff +3ffff0000fc3ffffff3fcf3fcfcff3cff3f3f00000ffffc3fffff0fcfc3fffff +ffffc00f3ff3fff0fff0fffcffff0ffffc3ffffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffcffcffcff3ff3ff3ff3ff3ff3ff3ffffffc3ffff3ff +ffffcfffffffffffffffffffcfffffff0000000000000fffffffffffffcfffff +cffffffffffffffffffc00000ff3fffffff3fcffffffffffffffff3fffffffcf +ffffffffffffffffffffffffffff3fcfffffffcfcffffc0ff03fffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffcf3f0003ff3fc00fff0fffffff3f33300fffffc3c3ffcfffc3 +fffcfff3ffcfcf3f3ffffcfffffff0ffffffff0fffffc00003fffff0ff33ffff +3ffffff3f3f3ffffff000f000fcff3cff3f3fffcffffff0fffffc3fcff3ff003 +ffcffcff3ff3fffcff03fff0fffffffff0fffffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffcffcfffffffffffffffffffffff3ffffff30fffccff +fffff3ffffffffffffffffffcfffffffffffffffffffffffffffffffffcfffff +cfffffffffffffffffc3ffffcff000000003fcffffffffffffffff3ffffffff3 +ffffffffffffffffffffffffffff3fcfffffffcfcfffc3ffffc0000003ffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffc00033f3fff3fffffff3ffcfffc3c033cff0003f00fff003c0f +fffc0003ffcfcf3f3fff00ffffffc000ffc00000003fffcffffffff3ffffffc0 +3ffffff3f3f0ffffff3fffffcfc003c003f3fffcfffff0ffffffcff0ff0ff3f3 +cfcffcff0003fffc303ffff3ffcfffffc000ffffffff0cfcfcfcfcfcfcc03fff +fffffffffffffffffffffcffcfffffffffffffffffffffff3ffffffcf3ff33ff +fffff3ffffffffffffffffffcffc000000000000000000000000ffffffcfffff +cfffffffffffffffff3fffffcffffffffffffcfffffffffffffff003fffffff3 +ffffffffffffffffffffffffffff3fcfffffffcfcfff3ffffffffffff0ffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffcff3f3ffc3fffffff3ffcfffc0fff3f3f3ff3fffffc3fc0ff +c03cffffffcfcf3f3ffc3c3fffff0ffc3fffffcfff3fffcfffffffc3ffffff0f +0fffffc3f3fcffffff3fffffcfffffcff3f3fffcfffc0000003f0ff3ffcff3f3 +cfcffcffffffffff03fffff3ffcfffff0ffc3fffffff0cffcfcfcfcfcfc03fff +ffffffffffffffffffffff3fcfffffffffffffffffffffff3ffffffffc00ffff +fffff3ffffffffffffffffffcffcfff3fcffcffcffcff3ffcffcffffffcfffff +cffffffffffffffffcffffffcffffffffffffcffffffffffffffcffcfffffff3 +ffffffffffffffffffffffffffff3fcfffffffcfcfc0fffffffffffffcffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffcff3f3ffcfffffffc3ffcfffc3300000f3ff3fffff0fc0fff +ff3cffffffcfcf3f3ffcff3ffffc3fff0fffffcffcffcfcfffffffcfffffff3f +cfffffcff3fcffffff3f000fcf0000cff3f3fffcffffffc3ffff3fc3ffcff003 +cfcffcf000003ffc3fffffc3ffcffffc3fff0fffffff00fcfcfcfcfcfcc03fff +ffffffffffffffffffffff3fcffcff3ff3ff3ff3ff3ff3ff3fffffffff33ffff +fffffcffffffffffffffffffcffcffccf33f33f33f33ccff33fcffffffcfffff +cffffffffffffffffcffffffcffffffffffffcffffffffffffff3fff3ffffffc +ffffffffffffffffffffffffffff3fcfffffffcfcfcffffffffffffffcffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffc00033f3ffcfffffffcfffcfff3333f3fff0003cffffff0cfff +ff3c0003ffcfcf3f3ffcff3ffff0ffffcfffffcff3ffcfc003ffffcfffffff3f +cfffffcff3ffffffff3f3fcfcfff3fc003f3fffcffffff0fffff3fcfffcff3f3 +cfcffc0ffcfffff0ffffffcfffcffff0ffffcfffffff0cffcfcfcfcfcfc03fff +ffffffffffffffffffffffc00ff33ccfccfccfccfccfccff3fffffffffcfffff +fffffcffffffffffffffffffcffcfff3fcffcffcffcff3ffcffcfffffff3ffff +3ffffffffffffffff3ffffffcffffffffffffcfffffffffffffcffffcffffffc +ffffffffffffffffffffffc000033fcfffffffcfcffffffffffffffffcffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffccff3f3ff0fffffff0fffcfff33f3fcf3f3ff3cf0fffc3cfff +ff3cfff3ff0fcf3f3ffc3f3fffffc0ffcfffffcfffffcfcfffffffcfffffff0f +cfffff0ff3ffffffff3f3fcfcfcf3fcff3f3fc00fffffc3fffff3f0fff0ff3f3 +cfcfc0ff3cffffc3ffffff0fffcfffffc0ffcfffffff0cfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffcffcff3ff3ff3ff3ff3ff3ff3fffffffffffffff +fffffcffffffffffffffffffcffcfffffffffffffffffffffffcffffffccfffc +cffffffffffffffff3ffffffc0000000000000fffffffffffff3fffff3fffffc +ffffffffffffffffffffff3fffff3fc00000000fcffffffffffffffffcffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffcc3f3f3ff3fffffffffc00ffff3f0fccff3ff3c03fff0fcfff +ff3cfff3ff3fcf3f3fff003fffff3c3fcfffffcfffffcfcfffffffc3ffffffc0 +0fffff3ff3ffffffff3f3fcfcfcf00cff3f3f3fc0ffffcffffff3c3fff3ff003 +cfcffcff3c00ffcfffffffffc00fffff3c3fcfffffff0cffcfcfcfcfcfc03fff +ffffffffffffffffffffffffcfffffffffffffffffffffff3fffffffffffffff +ffffff3fffffffffffffffffcffcfffffffffffffffffffffffcfffffff33ff3 +3ffffffffffffffff3fffffffffffffffffffffffffffffffff3fffff3ffffff +3ffffffffffffffffffffcffffff3fffffffffffcfffffffffffffffc00fffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fff0ccc3f3ff3ff3ffffff3fc0fff3f33f3ff0003cfffff3fffff +ff3cfff3ff3f0f3f3ffffcffffff3f3f0fffffcfffff03cffffffff0ffffffff +3ffffc3fc3ffffc0ff3f000fcfcf3fc003f333fcc3fffcffffffc0fff03ff3f3 +cfcffcff3cffffcfffffffff3fc0ffff3f3f0fffffff0cfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffcfffffffffffffffffffffff3fffffffffffffff +ffffff3ffffffffffffffffff3fcfffffffffffffffffffffffcffffffffc00f +fffffffffffffffff3ffc000000000000000000000003ffffff3fffff3ffffff +3ffffffffffffffffffff3ffffff3fffffffffffcfffffffffffffff3ff3ffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fff3cfcff3fc3ff0ffffff3f0c3ff3c33cccf3ff3cff3ff0fffff +fc3c0003fc3f3f3f3ffff0ffffff0f3c3fffffcfffff30cffffffffc0ffffffc +3ffff0ffcfffffc0ff3fffffcfc33ff3cff0f3f0f0fffc3fffffffff03fff3f3 +ffcffcfc0cffffc3ffffffff3f0c3fff0f3c3fffffff0cffcfcfcfcfcfc03fff +ffffffffffffffffffffffffcfffffffffffffffffffffff3fffffffffffffff +ffffff3ffffffffffffffffff3fcfff3fcffcffcffcff3ffcffcfffffffff33f +fffffffffffffffff3ffcffcff3ff3ff3ff3ff3ff3ff3ffffff3fffff3ffffff +3ffffffffffffffffffff3ffffff3fffffffffffcffffffffffffffcfffcffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffc3cf0ff3fcfffc003fffc03ffff3cff3c0f3ff3c3c3ffc0000f +f0cffffffcff3f003fffc3ffffffc000ffffffcffffc3c0fffffffffc0fffff0 +fffffffc0ffffffcff3fffffcf0c3fcff3fcfc03ffffff03fffffffffffff3f3 +ffcffcf0c0fffff00000ffffc03fffffc000fffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffcffcff3ff3ff3ff3ff3ff3ff3fffffffffffffff +ffffffcffffffffffffffffffc00ffccf33f33f33f33ccff33fcfffffffffcff +fffffffffffffffff3ffcff33ccfccfccfccfccfccff3ffffff3fffff3ffffff +cfffffffffffffffffffcfffffff3fffffffffffcffffffffffffff3ffff3fff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffcffff3fffffffffffffffffff30f0ff3f3fc3f00fffffffff +c3f0000030fc3ffffffc0ffffffffffffffffc0ffff0ffc0000fffffffffff03 +ffffffffffffffc3ff3ffffc0f3f000000fffffffffffff00ffffffffffff3c3 +fc0ff0c3fc003ffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffcff33ccfccfccfccfccfccff3fffffffffffffff +ffffffcffffffffffffffffffffcfff3fcffcffcffcff3ffcffcffffffffffff +fffffffffffffffff3ffcffcff3ff3ff3ff3ff3ff3ff3ffffffcffffc3ffffff +cfffffffffffffffffffcfffffff0000000000000fffffffffffffcfffffcfff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffcffcff3ff3ff3ff3ff3ff3ff3fffffffffffffff +fffffff3fffffffffffffffffffcfffffffffffffffffffffffcffffffffffff +fffffffffffffffff3ffcfffffffffffffffffffffff3ffffff33fff0cffffff +cfffffffffffffffffffcfffffffffffffffffffffffffffffffffcfffffcfff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffff3cffffffff3fffffcfffffffffffffffffffcffffffc3ffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffff +ffffcfffccfffffffffffffffffffffffffffffffffffffffffffff3ff3fffff +3fff33f3fcffcffff0fffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffcfffffffffffffffffffffff3fffffffffffffff +fffffff3fffffffffffffffffffcfffffffffffffffffffffffcffffffffffff +fffffffffffffffffcffcfffffffffffffffffffffff3ffffffccffcf3ffffff +f3ffffffffffffffffffcffc000000000000000000000000ffffffcfffffcfff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffc3cffc03fff3fffffcfffffffffffffffffffcfffffff03fff +ff3ffffffffffffffffffffffffffffffffffffffcfffcfffffffffffffcffff +ffffcfffccff00003ffffffffffffffffffffffffffffffffffffcf3cf3fffff +3fff33f3ff3f3ffffc0fffffc0000ffff3fffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffcfffffffffffffffffffffff3fffffffffffffff +fffffff3fffffffffffffffffffcfffffffffffffffffffffffcffffffffffff +fffffffffffffffffcffcfffffffffffffffffffffff3ffffffff003ffffffff +f3ffffffffffffffffffcffcffcffcffcffcffcff3ff3ffcffffffcfffffcfff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffcfc00cf300000000f0003000ffff003ffffffcffffffff03ff +ff3ffffffffffffffffffffffffffffffffffffffcfffcfffffffffffffcfff0 +ffffcffcfffffff0fffffffffffffc3ffffff0fffffffffc00fffc330f3fffff +3ff3fff3f00000ffffc0fffffffc3ffff0fffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffc000000000000000000000003fffffffffffffff +fffffffcfffffffffffffffffffcfff3fcffcffcffcff3ffcffcffffffffffff +fffffffffffffffffc3fcffcff3ff3ff3ff3ff3ff3ff3ffffffffccfffffffff +fcffffffffffffffffffcffcff33f33f33f33f33ccfccffcffffffcfffffcfff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fff0f3cfcf3ffcffffff3cff3fcfff03303fffffcffffffffffff +fc3f0003fffffffffffffff0ffffffffffc3fffff0fffcffffff0003ff0003fc +3fffcffc3fffffc3fffc0000003fff0ffffffc0fffffffc0cc0fff333c000fff +3ff0fff3f3f3fcfffffffffffff0fffffcfffffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffcffffffffffffffffffffffffffff +fffffffcfffffffffffffffffffcffccf33f33f33f33ccff33fcffffffffffff +ffffffffffffffffff000ff33ccfccfccfccfccfccff3fffffffff3fffffffff +fcffffffffffffffffffcffcffcffcffcffcffcff3ff3ffcfffffff3ffff3fff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffc3f3cfcf3ff0fffffc3cff3fcffc3f3f0fffffc003fffffffff +fcfffffffffffffffffffff0ffffffffffc3fffff3f00000ffc03ffcfffcffff +0fc0003f0fffff0ffffffffff0ffffcfffffffc3ffffff0fcfc3f0000cfcff00 +00fc3f0033f3fcff00003fffffc3fffffc3ffc3fffffc0ffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffff0fffffffffffffffffffffffffff +fffffffcfffffffffffffffffffcfff3fcffcffcffcff3ffcffcffffffffffff +ffffffffffffffffffffcffcff3ff3ff3ff3ff3ff3ff3fffffffffffffffffff +fcffffffffffffffffffcffcfffffffffffffffffffffffcffffffccfffccfff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffff3fcfcf3ff3c000fffcff3fcff0ff3fcfffffcfffffc0000ff +fcfffffffffffffffffffff0ffffffffffc3fffff3fffcfffc0fffff3ff0ffff +ffffcfcfcffffc3fffffffffc3fffffffffffffffff3fc3fcff3ff33f0fcffff +3f3f3ff3f00000fffffcffffff0fffffff3fc0fffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffff3ffffffffffffffffffffffffff +ffffffff3ffffffffffffffffffcfffffffffffffffffffffffcffffffffffff +ffffffffffffffffffffcfffffffffffffffffffffff3fffffffffffffffffff +ff3fffffffffffffffffcffcfffffffffffffffffffffffcfffffff33ff33fff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffc3000cf3fc3fff3fffcff3fcff3fc3fc3ffffcfffffffffc3f +fcffffffffffffc3c30ffcf0c0ffc0fff003fffff3fffcffffffffff3ff3ffcf +ffffcfcfc3fff0003fffffff0fffc3ffffcfffffffc3fcff0ff0ff303f3cffff +3f3f0ff3f3f3fcfffff3fffffc000fffff0c0ffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffcffffffffffffffffffffffffff +ffffffff3ffffffffffffffffffcfffffffffffffffffffffffcffffffffffff +ffffffffffffffffffffcfffffffffffffffffffffff3fffffffffffffffffff +ff3ffffffffffffffffff3fcfffffffffffffffffffffffcffffffffc00fffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffcffcfcf3f0fffcffc00003fcfc3fcfff3ffffcffffffffff3f +fcffffffffffffc3030ffcf0303f0c3fc3c3fffff3fffcffffffffff3ff3ffcf +ffff0fcff3ffc3ff0ffff0fc3ffff0ffff0fffffff0ff0ff3ffcfc330f30fffc +3f3fcff3f3f3fcffffcffffff0ffc3ffffc0fffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffff0fffffffffffffffffffffffff +ffffffff3ffffffffffffffffffc000000000000000000000000ffffffffffff +ffffffffffffffffffffcfffffffffffffffffffffff3fffffffffffffffffff +ff3ffffffffffffffffff3fcffcffcffcffcffcff3ff3ffcfffffffff33fffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fff0ffcfcf3c0fff3ffffcff3fcfcff0fff3ffffcffffffffff3f +fcffffffffffffc0f30f3cf0fc3c3f0f0fc3fffff3fffcffffffffff3fc3ffcf +ffff3fcff3ff0fffc3fffc30fffffcfffc3ffffffc3ff3fc3ffcf0f3cf33fffc +ff3fcff3f00000ffff3fffffc3fff0ffff0ffffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffff3ffffffffffffffffffffffff +ffffffffcffffffffffffffffffffffffffffff3ffffffffffffffffffffffff +ffffffffffffffffffffcffcff3ff3ff3ff3ff3ff3ff3fffffffffffffffffff +ffcffffffffffffffffffc00ff33f33f33f33f33ccfccffcfffffffffcffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffc0f3c0cf30cc00000ffcff3fcfcff3fff3ffffcffffffffff3f +fcffffffffffffc3ff0c0cf0fc3c3f0f0fc3fffff3fffcfffffffffc3fcfffcf +ffff3fcffffc3ffff3ffff03fffffffff0fffffff0fff3fcfffcffcfff03fffc +ff3ffff3fffffffffc03ffff0ffffcfffc3ffffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffc3fffffffffffffffffffffff +ffffffffcffffffffffffffffffffffffffffff3ffffffffffffffffffffffff +ffffffffffffffffffffcff33ccfccfccfccfccfccff3fffffffffffffffffff +ffcffffffffffffffffffffcffcffcffcffcffcff3ff3ffcffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffcf3cfcf3fcfff3ffff03f3fcfcfc3ffc3ff000fffffffffc3f +fcfcffffffffffc3ff0c0cf0fc3c3f0f0fc3fffff3fc00fffffffff0ff0fffcf +fffc3fcffffff03ff3ffffc3ffffffffc3ffffffc3fff3f0fff0f00003cffff0 +ff3ffff03c0003fff0f3fffffc0ffcfff0fffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffcfffffffffffffffffffffff +fffffffff3ffffffffffffffffffffffffffffcfffffffffffffffffffffffff +ffffffffffffffffffffcffcff3ff3ff3ff3ff3ff3ff3fffffffffffffffffff +ffcffffffffffffffffffffcfffffffffffffffffffffffcffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffcf3cfcf3fcfff3ffff33f3fcfcf0fffcffcffc0ffffffff0ff +fcfcffffffffffc3ffc3c3f0fc3c3f0f0fc3fffff3f3fc0fffffff03ffffc00f +fffcffcfffffcf0ff3fffff0ffffffff0ffffffc0ffff3c3fff3ff3f3fcffff3 +ff3fff03fcfff3ffc3f3fffff3c3fcfff3fffffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffff +fffffffff3ffffffffffffffffffffffffffffcfffffffffffffffffffffffff +ffffffffffffffffffffcfffffffffffffffffffffff3fffffffffffffffffff +fff3fffffffffffffffffffcfffffffffffffffffffffffcffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffcf3c0cc3fcfff3fffc30f3fcff03ffc0ffcffcc0ffffffc3ff +fccc3fffffffffc3ffc3c3f0fc3f0c3fc303fffff333fcc3fffff03fffff3fc0 +fff0ff0fffffcfcfc3fffffc3ffffff03fffffc0fffffc0fff03ff3c3f03ffc3 +fc3ffffffc0003ff0ff3fffff3f3f0fff3fffffffc0ffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffff3fffffffffffffffffffff +fffffffff3ffffffffffffffffffffffffffff3fffffffffffffffffffffffff +ffffffffffffffffffffcfffffffffffffffffffffff3fffffffffffffffffff +fff3fffffffffffffffffffcfffffffffffffffffffffffcffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffcf00fcfffcfff3fffcfcf000fffffc0fffcff0fc3ffffc0fff +fc3f0000ffffffc3ffc3c3f0fc3fc0fff0c3fffff0f3f0f0ffffffffffff3f0c +3fc3ff3fffffc3cf0fffffff3fffff03fffff00ffffffffff03ffc00ff30ff0f +fcfffffffcfff3fc3ff0fffff0f3c3fff0fffffffc0ffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffcfffffffffffffffffffff +fffffffffcffffffffffffffffffffffffffff3fffffffffffffffffffffffff +ffffffffffffffffffffc000000000000000000000003fffffffffffffffffff +fff3fffffffffffffffffffcffcffcffcffcffcff3ff3ffcffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffcc3ffcfffcfff3fff0fc3ffffffffffffff003ffffff00ffff +ff3ffffffffffffffffffffffffffffffffffffffcfc03ffffffffffffffc03f +fffff03ffffff0003fffffffffffc03fffffffffffffffffffffffcc3c3c3fff +c0fffffffcfff3fffffc00fffc000ffffc00003fffcff0ffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffff0ffffffffffff00000000 +0000000000000000000000000000000000fffcffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffcffffffffffffffffffffffffffffffff +fffcfffffffffffffffffffcff33f33f33f33f33ccfccffcffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffcffffcfffcff03ffc3ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffff03f30ff0fff +fffffffffc0003fffffffffffffffffffffffffffc3fc0fcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffff3fffffffffffffffffff +fffffffffffffffffffffffffffffffffcfffcffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff0fffffffffffffffffffffffffffffff +fffcfffffffffffffffffffcffcffcffcffcffcff3ff3ffcffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffc3ffffffffff3fffffff +fffffffffffffffffffffffffffffffffcfff3ffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffffff +fffcfffffffffffffffffffcfffffffffffffffffffffffcffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffffffffffffcffffffffcffffffffffffffffffff +ffffffffffffffcfffffffcffffffff3ffffffffffff3ffffff3ffffffffffff +fffffffffffffffffffffffffffffffffffffffffff3fcf3f3ff3ffcfffffcff +fccffcfffffffffffffffff3fffffffffcfffff3fcfffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffcffffffffff3fffffff +fffffffffffffffffffffffffffffffffcfff3ffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffcffffffffffffffffffffffffffffff +ffff3ffffffffffffffffffcfffffffffffffffffffffffcffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffffffcffffffff03fffffffffffff3fff3f +fffcffffffffffcfffffffcffffffff3ffffffffffff3ffffff3ffffffffffff +fffffffffffffffffffffffffffffffffffffffffff3f3f3cffc3cfcf0fffcff +fccffcfffffffffffffffff3fffffffffcfffff3fcfffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffff3fffffffff3fffffff +fffffffffffffffffffffffffffffffffcffcfffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff0fffffffffffffffffffffffffffff +ffff3ffffffffffffffffffcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffffffffffffc00fffffc30ffffcffffffff3fff3f +fffcff33fff3ffcfffffffcffffffff3ffffffffffff3ffffff3ffffffffffff +ffffffffffffffffffffffffffffffffffffc00ffff3c3330cfcfcfc03fffcff +cffffcfff0fff3fffffffff3ffffff3ffcfffff3f00000fcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffc3ffffffff3fffffff +fffffffffffffffffffffffffffffffffcffcfffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffff +ffffcffffffffffffffffffc000000000000000000000000ffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffffc00fffffff0fc0fffcffff3ffc3fff3f +fffcff33fff3ffcffffc000003f00000000ffffff000000ff0000fffffffffff +fffffffffffffffffc3ffffffffffffffffc0cc0ff003cf3f3f0003cfffffcff +c3ff0003fc3ff3fffcfff0000fffff3ffcfffc0033fffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffcffffffff3ffcffff +fffffffffff3fffffffffffffffffffffcff3fffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffc3fffffffffffffffffffffffffff +ffffcffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffff00fc003f0fc3fffffff3ffffff03cfc0ffcffff0ffcfc0000 +3ffcfffffff0c000ffffffcffffffff3ffffffffffff3fffffcfffffffffffff +ffffffffffffc3fffc3ffffffffffffffff0fcfc3ff3f3f3ccc3ff3cff3c0003 +f0fffcffff0ff3fffc3fffcfffffff0c000fffff00003cfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffff0fffffff3ffcfcff +fffffffff3f3ffffffffffcffffffffffcff3fffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffcfffffffffffffffffffffffffff +ffffcffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffc3c3c3f0f0fc3fffffff3fff0f03fcffc0fcffffc3fcffff3f +fffcfffffffc0f3c0fffffcffffffff3ffffffffffff3fffffcff003ffffffff +ffffffffffffc3ffffffffffffffffffffc3fcff3ff3f33300fffffc3c3ffcfc +fcfff0fffffff3ffff0fffcff003ffc0f3c0fffc3cff3cffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffff3ffffff3ffcffff +fffcfffffff3ffffffff3ffffffffffffcff3fffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffff +fffff3ffffffffffffffffffffffffffffcfffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fff0fffc3f0f0fc3ffffffc00f03ffc0000fffcfffff3fcffff3f +fffcfffffffcff3fcffc000003fffc03fffffffff000000fffcfffffffffffc3 +c3fc0ff0fc3fc3ff003fc303ff003fffffcff0ff0fc3c033cff0003f00fffcfc +fc3ff3ffcffff3ffffcfffcfffffffcff3fcfff0fc003cfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffcffffff3808fcfe +41f00f20f3f202fcff3c03cff41ff202fcfcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff3fffffffffffffffffffffffff +fffff3ffffffffffffffffffffffffffffcfffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fff0fffc3f0f0fc3ffffff0ff03fffcfffcfffcfffff0fcffff3f +fffcfffffff03f3fc3ffffcffffff0f0ffffffffffff3fffff0fffffffffffc3 +03f0c3f0fc3c000ffc3fc0c0fc3c3fffff0ff3ffcfc0fff3f3f3ff3ffffff0fc +ff3ff3ffcffff3ffffc3ff0fffffff03f3fc3ff3ccff3cffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffff0fffff32f8fcfc +bffcff1ff3f1b8fcff3f3fcfd7d7f1b8fcfcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffcfffffffffffffffffffffffff +fffff3ffffffffffffffffffffffffffff3fffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fff0fffc3c3f0fc3fffffc3f03ffffc0000fffcfffffcfcffff3f +fffcfffffff30c3ff3ffffcffffff3fcffffffffffff3fffff3fffffffffffc0 +f3c3f0f0fc3fc3fffc3fc3f0f0fc3fffff3fc3ffcfc3300000f3ff3ffffff3fc +ff3fc3ffcffff3fffff3ff3fffffff30c3ff3fc33c003cfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffff3ffff33fcfcfc +6ffcff3ff3f3fcfcff3f3fcfcff3f3fcfcf3ffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffff +fffffcffffffffffffffffffffffffffff3fffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fff0fffc00ff0fc3fffffffc33ffffcfffcfffcfffffcfcffff3f +fffcffffffc3ccfff3ffffcffffff3fcffffffffffff3fffff3fffffffffffc3 +ffc3f0f0fc3fc3fffc3fc3f0f0fc3fffff3fcfffcf3333f3fff0003cfffff3fc +ffffcfffcffff3fffff3ff3ffffffc3ccfff3f00ff3ffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffc3fff33fcfcfe +42fcff3ff3f3fcfcff3f3fcfcff3f3fcfcf3ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff3fffffffffff000000000000 +000000000000000000000000000000fffcffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fff0fffc3fff0fc3fffffff0f3ffffc0000cffc3cfffcfcff003f +fffcffff3fcfc0fff3ff000ffffff0fcfffffffffc003ffffc3fffffffffffc3 +ffc3f0f0fc3fc3fffc3fc3f0f0fc3fffff3f0fff0f33f3fcf3f3ff3cf0ffc3fc +ffff0fffcffff0f3fff3fc3ffffffcfc0fff3c333c003cfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffcfff33fcfcff +f8fcff3ff3f3fcfcff3f3fcfcff3f3fcfccfffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffc3ffffffffff3fffffffffff +fffffffffffffffffffffffffffffcfffcffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fff0fffc3fff0fc3ffffffc3f3ffffcff3f0fff30fffffcfcff03 +fffcfffc3fcff3ffc3fcffc0fffffc00fffffffff3ff03fffcffffffffffffc3 +ffc3f0f0fc3fc3fffc3fc3f0fc303fffff3c3fff3ff3f0fccff3ff3c03ffcffc +ffffffc00ffffcc3fffffcfffffffcff3ffc3ff3f0ff3cffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffff0ff32f4fcfd +b8fcbf3ff3f2f8fcb93f2fcfd7d7f3fcfccfffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffcffffffffff3fffffffffff +fffffffffffffffffffffffffffffcfff3ffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffc3c3c3fffc30fffffffcfffffffcff0c3fff03fffffcccff30 +fffcfff0ffcf00ffcffcffcc0ffffff3fffff03ff3ff303ffcffcfffffc0ffc3 +fff0c3f0303fc3fffc3fc3f0ff0c3fffffc0fff03ff3f33f3ff0003cffff0ff0 +ffffff3fc0fffc0ffffffcffcffffcf00ffcfff3c30c3cfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3f3808fcfd +02fe0f3ff3f146fe063f83cff41ff3fcfc3fffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff3fffffffff3fffffffffff +fffffffffffffffffffffffffffffcfff3ffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffff00fc3ffff03fffffffc3ffffffcffc3ffffcffffffc3cfc3c +3fff3f03fff03cfc0ffcff0fc3ffffc3fffff03ff3fc3f0ff0ffc3ffffc0ffc3 +fffc0ffc0c3ff00ffc3fc3f0fffc3fffffffff03fff3c33cccf3ff3cff3c3ff3 +ffffff3f0c3fff3ffffff0ffc3ffff03cfc0fff3ffc0fcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffcf3fffffff +fffffffffffffffffffffffffffffffffc3fffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffc3ffffffff3fffffffffff +fffffffffffffffffffffffffffffcffcfffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffffffffffff00003ffc00f03fffffffffff3f00ff +ffffc03fffffffc0ffff003fffffff0ffffffffffc00fffff3fff000fffcffff +fffffffffffffffffffffffff0f0fffffffffffffff3cff3c0f3ff3c3c3fff03 +ffffffc03ffffffffffff3fff000fffffc0ffff3ff0c3cfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffff03fffffff +fffffffffffffffffffffff3fffffffffcffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffcffffffff3ffcffffffff +fffffff3fffffffffffffffffffffcffcfffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffffffffffffc0ffff03ffffffffffffffff +fffffffffffffffffffffffffffff03fffffffffffffffffffffffffffc3ffff +fffffffffffffffffffffffffc03fffffffffffffff30f0ff3f3fc3f00ffffff +fffffffffffffffffffffffffffffffffffffff3f03f00ffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffff +fffffffffffffffffffffff3fffffffffcffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff0fffffff3ffcfcffffff +fffff3f3ffffffffffcffffffffffcff3fffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffff +fffffffcfffffffffffffff3fffffffffcffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffff3ffffff3ffcfffffffc +fffffff3ffffffff3ffffffffffffcff3fffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffcfffcffffcfffcfffff3fffffff3ffffffffffffffffffffff +fffffffffffff3ffffff0fffffff3fffffffffffffff3fff3fffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffff +ffffffff3ffffffffffffffff3fffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffc +80be42f00f3f3f3fd07f20f3e2fffffffcffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffffff3808fcfe41f0 +0f20f3f202fcff3c03cff41ff202fcfcffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffcfffcffff0fffcfffff0fffffff3ffffffffffffffffffffff +ff00003ffffff3ffffffc0ffffff3ffffffffc0000ff3fff3ffffffffffff3ff +f3ffff3fc3ffff3fff3ffffcfffcffc003c003f000c0003ffffffffffffcffff +ffffffff3ffffffffffffffff3fffffffffffffcfffcfcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffc +6e3db9fcff6e2e7f5f5f1ff38bfffffffcffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff0fffff32f8fcfcbffc +ff1ff3f1b8fcff3f3fcfd7d7f1b8fcfcffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffcfc0000fc3fc0000fffcfffffff3ffffff0000000ff3ffffff +fffff0fffffff3fffffffc0fffff3ffc3fc00ccf3cff3c00000f0000003ff3ff +f3ffff0ff0ffff3fff3ffffcfffcffcff3cff3f3fcff3ffc000000fffffcffff +ffffc00000003c0000003ffff3ffffc000000ffcfffcfcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffc +ff3cfcfcff9d5dbf3fcf3ff22ffffffffcffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffff3ffff33fcfcfc6ffc +ff3ff3f3fcfcff3f3fcfcff3f3fcfcf3ffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffcff3ff3f0fcffcfff0000003fff3f03fffffff0ffff3fffcff +ffffc3fffffff3ffffffffffffc000ff0ffcfccf3cff3fcffcffffff0fffc3ff +f3ffffcffcfffc3fff3ffffcfffcffc003c003f000f000fffffc3ffc00000003 +ffffffff3fffffffcffffffff3ffffffffc3fff0fffcfcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffc +ff3c00fcffccccff3fcf3ff07ffffffffcffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc3fff33fcfcfe42fc +ff3ff3f3fcfcff3f3fcfcff3f3fcfcf3ffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffc00f0fc3fc30ffcffffff3ffffc03c3cffffffc3ffff3fffc3f +ffff0ffffffff000ffffffffffff3fffc3fcfc0000f003f3f3fffffc3f33cfc0 +0003ffc3c003fcfc00003ffcfffcffcff3cff3f3fcf3fcfffff0fccffffcffff +fffffc000003ffffcffffffff3ffffffff0fccf3f00000ffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffc +ff3cbffcffd9d9ff3fcf3ff22ffffffffcffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffcfff33fcfcfff8fc +ff3ff3f3fcfcff3f3fcfcff3f3fcfccfffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffcffcfcfffc3f0003ffff0ffffff30fcffffff0fffff3ffff0f +fffc3ffffffff3fffff00003fffc3ffffffcffffffff3c00000ffff0ff33cfff +f3fffff00ffcfcffff3ffffcfffcffc003c003f3fcf3fcffffc3fccffffcffff +fffffcff3ff3ffffcffffc00000003fffc3fccf3fffcfcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffc +ff3d7ffcbfe2e2ff5f5f3ff3c7fffffffcffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffff0ff32f4fcfdb8fc +bf3ff3f2f8fcb93f2fcfd7d7f3fcfccfffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffcf000003f0ffffffffffc3fffff03fcffffff3fffff3ffffcf +fff0003ffffff3fffffffff0fffcfff3fffcf000003f3ffffffffff3ffffcfff +f3fffc03fffcfcffff3ffffcfffcffcffffff3f000f000ffffcfffffff00ffff +fffffc000003ffffcffffffff3fffffffcfffff3fffcfcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffc +ff3e41fe0fe2e2ffd07f3ff3f5fffffffcffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff3f3808fcfd02fe +0f3ff3f146fe063f83cff41ff3fcfc3fffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffcfff3fffc3cc0000fffff0fffff0ffcfffffc3fffff3ffffc3 +ffc3ff0ffffff3fffffffffcfffcfff3ffc00fffffff3f00003fffc3ffffcfff +f3ffc0f0fff0fcffff3ffffccffcffcffffff3fffff3fcffff0ffffffc3c3fff +fffffcff3ff3ffffcfffffffc0fffffff0fffff3fffcfcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffff +fffffffffffffffffffffffffffffffffcffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffcf3fffffffffff +fffffffffffffffffffffffffffffc3fffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffc0ff3fff000cfffcffc0000ffff3ffcfffffcffffff3fffff3 +ff0fffc3fffff3fffffffffcfff0fff3fffcfc0000ff3f3fff3fffcfffffcfff +f3fffffcff03fcffff3ffffc3ffcffcfc003f3c00033fcffff3ffffffcff3fff +fffffcff3ff3ffffcfffffffccfffffff3fffff3fffcfcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffff +fffffffffffffffffffffffffffffffffcffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffff03fffffffffff +fffffffffffffffffff3fffffffffcffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffc0f000003fccccf3cff3fffc3ffc3ffcfffffcffffff3fffff3 +fc3ffff3fffff3fffffffffcfff3fff3fffcfcfffcff3f00003fffcfffffcfff +f3fffffcfffffcffff3ffffcfffcffcfcff3f3ffcff000ffff3ffffffcff3fff +fffffc000003ffffcfffffffcc3ffffff3fffff3fffcfcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffff +fffffffffffffffffffffffffffffffffcffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffff +fffffffffffffffffff3fffffffffcffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffcffcff3ffcffcf3ffcffffffff03ffcfffffcffffff0f3fff3 +fff03ff3ffc003fffffffff0ffc3fff3fffcfc0000ff3f3fff3fffcfffffcff0 +03fffffc3ffffcff003ffffffff0ffcfcff3f3f3cff3fcffff3ffffffc3f3fff +fffffff333ffffffcfffffff0f3ffffff3fffff3fc00fcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffff +fffffffffffffffffffffffffffffffffcffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffff +fffcfffffffffffffff3fffffffffcffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffcff3fc3fcccfcf3ffcfffffffc33ffcfcfffc3fffffcc3ffff +ffcf0ff3ff3ff03fffffffc3fffff003fffcfff0ff3f0300003fffc3ffffcfcf +f03fffff3ffffcfcff03fffffff3ffcfcff3f3f3c033fcffff0fffffff003fff +ffffffc330ffffffcfffffff3f0ffffff0fffff3f3fc0cfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffff +fffffffffffffffffffffffffffffffffcffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffff202fe +42f00f3f3f3fd07f20f3e2fffffffcffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffcfc030ffccc3cf3ffc3ffffffff3ffcf0ffff0fffffc0fffff +ffcfcfc3ff3ff303ffffff0fffffcff03ffc0fcc3cf03ff3f3fffff0ffffcccf +f30fffff3ffffcccff30ffffffc3ffcfc003f3f3cff000ffffc3fffffffcffff +fc0fff0f3c3fffffcffffffc3fc3fffffc3ffff333fcc0ffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffff +fffffffffffffffffffffffffffffffffcffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffff1b8fd +b9fcff6e2e7f5f5f1ff38bfffffffcffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffcfff03ff0cf30f3cff03fffffff3fff03ffffc0fffff3fffff +ffc3cf0fff3fc3f0fffff03fffffcfc30fc0ff3cc3ffffc3f3cffffc0fffc3cf +c3c3ffff0ffffc3cfc3c3fffff0fffcffffff3f0cffcf3fffff03ffffff0ffff +fc0ffc3f3f03f00000000ff0fff0ffffff03fff0f3f0f0fcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffff +fffffffffffffffffffffffffffffffffcffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffff3fcfc +fcfcff9d5dbf3fcf3ff22ffffffffcffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffcff03c0f3cff3f3cfff0003ffff3ffffffffffc0ffffffffff +fff0003fffc00ffffffc03fffffff00ffffff0fcfc3fff0ff3cfffffc0fff3f0 +0fffffffcfffff3f00fffffff03fffcffffff3c30ff3fcffffff03ffffc3ffff +ffffc0ff3ff03fffffffffc3fffc3ffffff03ffcfc03fcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffff +fffffffffffffffffffffffffffffffffcffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffff3fcfc +00fcffccccff3fcf3ff07ffffffffcffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fff0f03ffc3fcfc3fc0ffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffcfffff03ffc0fffffffffffff +ffffffffcfffffffffffffffffffffcfffff03cfc000003ffffffffffc0fffff +ffffffff3ffffffffffffc0fffff03fffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 +0000000000000000000000000000000000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffff3fcfc +bffcffd9d9ff3fcf3ff22ffffffffcffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffff3fcfd +7ffcbfe2e2ff5f5f3ff3c7fffffffcffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffff3fffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffc3ffffcfff +ffffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffff +fffffff3ffffffffcffffffffffffffffcffffffc3fffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffff3fcfe +41fe0fe2e2ffd07f3ff3f5fffffffcffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffff3ffffffff3fffffff00003fffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff3fffffffffc00fffffcfff +ffffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffff +fffffff3ffffffffcfffffc0000ffffffcfffffff03ffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffff +fffffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffff0ffffffff3ffc3ffffff0fffffffffffffc3ffffff0ffffff +fffc00ffffffffffffffffffffffffffffffffffff3fffffff000fffffffc00f +fff3ffffffffcffffffc0000003fffffffffffffffffffffffffffffffffffff +fffffff003ffffffcffffffffc3ffffffcffffffff03fcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffff +fffffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffcffffffc000ff0fffffc3fffc0000003fff0ffffffc0fffff +ffc0cc0ffffffffffffffff0ffffffffffc3fffffc3f0003ffffcfffffc00fff +fff3fffcffffcfc0fffffffc3fffffffffffffffffffffffffff0fffffffffff +fffff003ffffc00000003ffff0fffffffcfffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffff +fffffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffc3ffc3fff3fffc3ffff0ffffffffff0ffffcfffffffc3ffff +ff0fcfc3fffffffffffffff0ffffffffffc3fffffcffffffffffcfffffff3fff +fff3fffc3ff00f0f3ffffff0fffffffffffffffffffffff0ffff0fffffffffff +ffffffcfffffffffcfffffffc3fffffffc003ffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffff +fffffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffff3fc0fffc3ffffffffc3fffffffffc3fffffffffffffffff3 +fc3fcff3fffffffffffffff0ffffffffffc3fffffcfffffffc0000003fff3fff +0ff3ffff0fffcc3f3fffffc3fffffffffffffffffffffff0ffffffffffffffff +ffffffcfffc3ffffcfffffff0ffffffffcfffffc0000fcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffff +fffffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffff0c0ffffcfff3fffff0003fffffff0fffc3ffffcfffffffc3 +fcff0ff0ffffffc3c30ffcf0c0ffc0fff003fffffcffffffffffcffffffc00f0 +3ff3ffffcfffc0ff3fffffcffffffffff0f0ff03fc3f0ff0ffc00ff0c0ffc00f +ffffff003c0ffff00ffffffc000ffffffcfffffffffc3cfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffff +fffffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffc0fffffcfff3ffffc3ff0ffff0fc3ffff0ffff0fffffff0f +f0ff3ffcffffffc3030ffcf0303f0c3fc3c3fffffcffffffffffcffffff0ff03 +fff3ffffc3ffc3ff3fffff0ffffffffff0c0fc30fc3f0f0003ff0ff0303f0f0f +fffffc3fc0ffffc3c3fffff0ffc3fffffcffffffffff3cffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffff +fffffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffff0ffffff0fff3ffff0fffc3fffc30fffffcfffc3ffffffc3f +f3fc3ffcffffffc0f30f3cf0fc3c3f0f0fc3fffffcffffffffffcfffffc3f03f +fff3fffff3ffcfff3fffff3ffffffffff03cf0fc3c3f0ff0ffff0ff0fc3c3f0f +fffff0fc0fffffcff3ffffc3fff0fffffcffffffffff3cfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffff +fffffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffc3ffffff3fff3fffc3ffff3ffff03fffffffff0fffffff0ff +f3fcfffcffffffc3ff0c0cf0fc3c3f0f0fc3fffffcfffffff00000000fffc33f +fff3fffff3ff0fff3fffff3ffffffffff0fff0fc3c3f0ff0ffff0ff0fc3c3f0f +fffffff0cfffffcff3ffff0ffffcfffffcffffffffff3cffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffff +fffffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffff0ffffffc3fff3fffff03ff3ffffc3ffffffffc3ffffffc3ff +f3f0fff0ffffffc3ff0c0cf0fc3c3f0f0fc3fffffcfcffffffffcfffffff0f3f +fff0f3fff3fc0fff3fffff3ffffffffff0fff0fc3c3f0ff0ffff0ff0fc3c3f0f +ffffffc3cfffffc3f3fffffc0ffcfff000fffffffffc3cfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 +000000000000000000000000000000ffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffff3fffffffff003ffffcf0ff3fffff0ffffffff0ffffffc0fff +f3c3fff3ffffffc3ffc3c3f0fc3c3f0f0fc3fffffcfcffffffffcffffffc3f3f +fffcc3fffff0cfff3f3fff0ffffffffff0fff0fc3c3f0ff0ffff0ff0fc3f0c0f +ffffff0fcffffff003fffff3c3fcffcffc0ffffffff0fcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffff3ffffffffcff03fffcfcfc3fffffc3ffffff03fffffc0ffff +fc0fff03ffffffc3ffc3c3f0fc3f0c3fc303fffffccc3fffffffcffffffcffff +fffc0fffffffcfff3c3fffc3fffffffff0fffc30fc0c0ff0ffff0ff0fc3fc30f +ffffff3fffffffffcffffff3f3f0ffcffcc0ffffffc3fcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffff0ffffffffcfc30fffc3cf0fffffff3fffff03fffff00fffff +fffff03fffffffc3ffc3c3f0fc3fc0fff0c3fffffc3f0000ffffcffffffc3fff +ffff3fffffffcfffc0fffff03ffffffff0ffff03ff030ffc03ff0ff0fc3fff0f +ffffff0fffffffff0ffffff0f3c3ffcff0fc3ffffc0ffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffc00003ffff00ffffff0003fffffffffffc03fffffffffffff +ffffffffffffffffffffffffffffffffffffffffff3fffffffffcfffffff0000 +3fffffffffffcfffffffffff03fffffffffffffffffffffffffffffffffc3c3f +ffffffc0000ffffc3ffffffc000ffff003ffffff00fffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffc0fffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffc0fffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffffffffffffffffffcff0003fffffffffffffffffffff3ffcc +fffffffffffffffffffffffffffcffffffffffff33fff3ffffffffffffffffff +ffffffff3ffffffcfff33fffffffffffcfffffffffffffffffffffffffffffff +fffffffffffffffffffff3fffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffff00000fffffffffffcff3ff3fff3fffffffffffffffff3ffcc +fffffffffffffffffffffffffffcfffffff0ffff3cfff3fffffff3fc3fffff3f +ff3fffff3ffffffcfff33fffffffffffcfffffffffffffffffffffffffffffff +ff00000fffcffffffffff3fffffffffffffffcfffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffc3fffff003fffcff0003fff3ffffffffc00ffff00000ff +fffc00ffff3fffffffcffffffffcfff003fc3fff3cfff3ffc3fff0ff0fffff3f +ff3fffff3ffffffcffffffffffffffffcffffffffc00fffc000000ffffffffff +ff3fffcfffcffffffffff3fffffffffffffffcffffff00ffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffffc3fffff03303ffcff3ff3fff3fffffffc0cc0fffffcffff +ffc0cc0fff3fffcfffcffff3fffcfff3f3ff3000003c000ff0fffcffcfffff3f +ff3fc00000003c0003ffffffffffffc0003fffffc0cc0ffffffc3fffffffffff +ff3fffcfff0fc000ffc00000fffffffffffffcffffff3cfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffc3fffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffff0fffffc3f3f0fc00f3ff3fff3fffffff0fcfc3ffffcffff +ff0fcfc3ff3fffc3ffcffff0ff0000f3f3fff3ff3ffff3fffc3ffc3c003fff3f +ff3ffffcfffffff3ffffffffffffffff3fffffff0fcfc3fffff0fccfffffffc3 +ff3fffcfff3fffffffffffc3fffffffffffffcffffff3cffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff0fffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffc3fffff0ff3fcffcff0003fff3ffffffc3fcff3ff000003f +fc3fcff3ff3ffff0ffcffffc3ffcfcf3f3c3f3033cffc3ffffffff00ffcfff3f +ff3ffffcfffffff3fc00ffffffffffff3fc00ffc3fcff3ffffc3fccfffffff03 +ff00000fff3fffffffffff0ffffffffffffffcffffff3cfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffc03fffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffc3ffffff3fc3fc3fcfffffffff3ffffffcff0ff0fffff3fff +fcff0ff0ff3ffffcffcfffff3ffcfcf3f3f0f3ff3cffcfff3fffc03fffcfff3f +ff3ffffcfffffff3ffffffffffffffff3ffffffcff0ff0ffffcffffffffffcc3 +ff3fffcfff3ffffffffffc3ffffff3fffffffc03fffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffcfffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fff0000000fc3fcfff3fcf000003ff3ffffff0ff3ffcfffffcfff +f0ff3ffcff3ffffc3fcfffff0ffcfcf3f3fcf30330ffcfff3ffc0f0fff0fff33 +ff3ffffc000fffc3fffffffff00ffffc3ffffff0ff3ffcffff0ffffffffff3c3 +ff3fffcfff3ffffffffff0fffffcf0ff3ffffcf03ffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffff0ffffcff0fff3fcff3ffffff3ffffff3fc3ffcfff0000ff +f3fc3ffcff3fffff3fcfffffcffcfcf3f3fff33333ff0fff3fffffcff03fff0f +ff3ffff0ffcfffcfffffffff03f3fffcfffffff3fc3ffcffff3fffffffffcfc3 +ff3fffcfff3fffffffff03c3fffc3cff3ffffcff03fffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffc3ffffcff3fff3fcff00003ff3ffffff3fcfffcffcfffc3f +f3fcfffcff3fffff3fcfffffcffcfcf3f3ff333303ff3fff3fffffcfffffff3f +ff3ffff3ffcfffcffffffff03ffcfffcfffffff3fcfffcffff3fffffffffc000 +ff00000fff3ffffffff033f03fff3ffc3ffffcfffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffff0fffffcfc3ffc3fc0cf3cf3ff3fffcff3f0fff0ff3ffffff +f3f0fff0ff0f3fff3fc3cfffcff0fcf3f3ff3333cffc3fff3fffffc3ffffffff +fc3ffff3ffcfff0ffffffffffffcfff0fffffff3f0fff0ffff3fffffffffc000 +ff3fffcfff3f3fffff03f3ff0ffffffcfffffcfffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffff3fffffcf0fffcff0f3c30f3ff3fff0ff3c3fff3ff3ffffff +f3c3fff3ffcc3ffffff30ffffff3fcf3f3fc3303cfffff003ffffff3ffffffff +fcffffc3ffcfff3ffffffffffffcfff3fffffff3c3fff3ffff0fffffffffffc3 +ff3fffcfff3f3ffffffff3fffffffff0fffffcfffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffc3fffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffff3ffffff03ffc0fc3ff0f3f3ff3ffc3ffc0fff03ff0ffffff +fc0fff03ffc0fffffff03ffffff3f0f3f3fcf3ff033ffcff03fffff3ffffffff +f0ffffcfff0fff3ff3fffffffff0fff3ff3ffffc0fff03ffffc3fffff03fffc3 +fc3fffcfff330ffffffff3ffffffffc3fffffcfffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffff0fffffffffc0fffffc3c3c3ffcfc0fffffff03fffc0fffff +fffff03ffff3fffffffcffffffc3f3f3f3f0c3fc333ffcfc30fffff0ffffffff +c3ffff0fff3ffc3ff0ffffffffc3ffc3ff0ffffffff03ffffff03ffff03fffc3 +fcffffcfff0fc0003ffff3ffffffff0ffffffcfffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffcfffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffc0fffffffffffffffff0fcffff00ffffffffffffffc000ff +ffffffffffffffffffffffffffcff3f003f3cff0f03fff00fffffffcfffffffc +0ffffc3fff3ffcfffc003ffffc0fffcfffc003ffffffffffffff03ffff3fffff +f0ffffcfffcffffffffff3fffffffc3ffffffcfffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffcfffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffffc03ffffffffffffffffc0ffffffffffffffffffffffffff +ffffffffffffffffffffffffff0fc3ffffc30fc3fcfffffffffffffcffffffff +ffffc0ffc03ffffffffffffffffffffffffffffffffffffffffffffff0ffffff +c3fffc0fffffffffffffffffffffc0fffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffcfffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffcfffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffff3fffffffffffffffffffffffffffffffff3ffffffffffff +ffffffc3fffffffffffffffffffffffffffffffffffffffffffffffff3ffffff +fffcfffffffffffffffffffffffffffffff3ffffffffffffffffffffffffcfff +ccffcffffcffffffffffffffffffffff3ffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffff3ffffffffffffffffffffff3ffffcfffff3ffffffffffff +ffffc00ffff3fffffffffffffffffffffffffffffffffffffffffffff3fffff0 +fffcfffff3fffffffffffffffffffffffff3fffffffffffffff3ffffffffcfff +cccfcfccfcfffff0003ffcffffffffff3fffffcffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffc00000003fffffffff0000000ff3ffffcff0000000fffffffff +ff000ffffff3fffffffffffffffffffffffffffffffffffffffffffff003fffc +3000003ff3ffffff0000000ff3fffffffff3ffffffc00003fff0ffffffffcffc +ffc3cf0cfcf000f3ff3ffcffffffffff3fffffcffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffff3fcffffffffffffffff0ffff3ffffcfff3f3fcffffffffff +ffffcfffffc3f0003fffffffffffffffffffc3fffffffffffffffff003ffffff +3fcffffff3ffffffffff0ffff3fffcfff0000ffffffffffffffcffffffffcffc +3ff3cf3cfcf3fcf3ff3ffcfffffff000000fffcffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffcf3fcf3fffffffffffffc3ffff3c3ffcfff0f3f0fffffffc00 +f00000000fcfffffffffffffffffffffffffc3ffffffffc3ffffffffcfffffff +ffcff3fff3fffffffffc3ffff3fffc3fffcffffffffffffffffc3ffc3fc0003f +0fffcffcfcf3fcf3ff3ffcffffffffff3fffffcffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fff0f3fcf0fffffffffffff0fffff3f0ffcfffcf3f3fffffff0f0 +3fffcfffffcfffffffffffffffffffffffffc3ffffffffc3ffffffffcfffc3c3 +ff3c00fff3fffffffff0fffff3ffff0fffcff003ffffffffffff3fc0ffffcfcf +cfc0000cfcf3fcf0003ffcffffffffff3fffffcffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffc3c3fcfc3ffffffffffff3fffff3fc3fcfffcf3f3fffffffffc +3f000000ffcffffffffffff0c3fc00fff00fc3f0ff00ffc3ffffffff003c0ff0 +fc00fcfff3fffffffff3fffff3ffffcfffcfffffffffffffffff0c0fffffcfcf +c3ffcffcfcf000f3ff3ffcfffffff000000fffcffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffff0ffcffffffc03fffffc3fffff3ff3fcfc00000003fffffffc +3f3fcffcffcffffffffffff030fffc3fc3f3c3f3fc3c3c000ffffffc3fc0fffc +fffffffff3ffffffffc3fffff3ffffc3ff0fffffffffffffffffc0ffffff0fcf +f3ffcffcfcf3fcf3ff3ffcffffffffff3fffffcffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffff3fffffffc0fcfffffcffffff3ffff0ffff333ffffffffff0 +ff000000ffcffffffffffff0fc3ffc3f0fffc3cff0fc3fc3fffffff0fc0fffff +ff3cf3fff3ffffffffcffffff3fffff3ff3fffffffffffffffff0fffffff3fcf +f3ffcffcfcf3fcf3ff3ffcffffffffff3fffffcffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffff0000fffc0fff3ffffcffffff3ffff3ffff330fffffffffc3 +ff3fcffcffcffffffffffff0fc3c003f0fffc03ff0003fc3fffffffff0cfffff +3f3cf3fff3ffffffffcffffff3fffff3ff3ffffffffffffffffc3fffffff3fcf +ffc0000cfcf3fcf0003ffcffffffffff3fffffcffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffc3ff3ffffffff3ffffcffffff3ffff3fffc33cfffffffff0f +ff000000ffcfcffffffffff0fc30fc3f0fffc30ff0ffffc3ffffffffc3cfffff +3f3cf3fff3fffcffffcffffff0f3fff3fc3fffffff3ffffffff0fffffffc3fcf +ffffcffcfcf3fcf3ff3ffcffff3ffc003fffffcffff3fcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffff0ffc3ffffffff3ffffc3fffff3fffc0fffcf3c3fffffffc3f +ffffcfffffcfcffffffffff0fc30fc3f0fffc3c3f0ffffc3ffffffff0fcffffc +3f3cf3fff3fff0ffffc3fffffcc3fffffcffffffff0ffffffff3fffffffcffcf +ffffcffcfcf000f3ff3ffcfffc3ff3ff03ffffcfffc3fcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fff030f0ffffffffc3fffff0fffff303f0c3ff0f3f0fffc0ff000 +3f000000ffccc3fffffffff0f0f0f03fc3f3c3f0fc3f3fc3ffffffff3ffffffc +ff3cf3fff3ffc3fffff0fffffc0ffffffcffcfffffc0fffffff3fffffff0ff0f +ffffcffffcffffc3ff3ffcfff0fff3ff303fffcfff0ffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffc03ffffffff0ffffffc0ffff03fc3f3fc3f3fc3ffc0ff000 +3fffcfffffc3f0000ffffff003fc0c0ff00fc3f03f00fff00fffffff0ffffff0 +ff3cf33ffcfc0ffffffc0fffff3ffffff0ffc3fffffc0000fff0ffffffc3ff3f +ffffcffffcffffcfff3fff3f03fff3fc3f0ffff3f03ffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffff00f00ffffff03fffffffc0ff03ff0ff0c0ff3ff03ffcfffff +ffffcffffff3fffffffffff0ffffffffffffffffffffffffffffffffc0000ff3 +fc3cf33fff00ffffffffc0fffffffffff3fff000fffffffffffc00003ffff03f +ffffcffffcffff0fff3fffc03ffffc00fffffffc03fffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffc03fffc03ffffffffffffffffffff03ffcffff3fffffc3fffff +f00000000ffffffffffffff0ffffffffffffffffffffffffffffffffffffffc3 +f0fffc3fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffcfffc0fff03ff03ffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffffcffffffffffffffffcfffffffffffffff3fffffffcfffcc +fffffffffffffffcffffffffff3fffffffffffffffcfffffffffffffffffffff +fffffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffff3ff3ffcfffcfff33cffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffffcffffff3fffffffffcffffff3ffffffff3fffffffcfffcc +ffffffc00003fffcffffffffff3fffffffffffffffcffffffffffffffff3ffff +fffffffffffffffffffff3fffff3fff3ffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffff3ff3ffcfffcfff33cfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffc00000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000fffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffc00000003ff3fffffffffcffffff3ffffffff3fffffffcffcff +ffffffffff0ffffcffffffffff3ffff0000003ffffcffffffffffffffff3ffff +fc000003fffffffffffff3fffff3fff3ffffffffffffffffffffffffffffffff +fffffffffffffffffffffff003fff0000000fffcfffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffffcffffff3ffffffc000003fff3ffffff0000ffffffcffc3f +fffffffff0fffffcfc0ffff000000ffffff0ffff000003fffffffffffff3ffff +fcfffff3ffffffffffffc000ffc3fff3ffffffffffffffffc00ff003fff0ffff +ffff0fffffffffffffffff03303ffffffffffc0003fffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffc0000ffff3fffffffffcffffff3fffffffcffffffc0003f0f +ffffffffc3ffff00f0f3ffffff3fffffffc3f33fffff0ffffffffffffff3ffff +fcfffff3ffffffffffffcffcffcfc00003ffffffffffffffff0fffc3fff0ffff +ffff0ffffffffffffffffc3f3f0ffc000003fff3fffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fff3cfffcffff3fffffffffcffffff3fffffffcff003fffcfcfcf +ffffffff0ffffffcc3f3ffffff3fffffff0ff33ffffc3ffffffffffffff3ffff +fcfffff3ffffffffffff0ffcffcffff3ffffffffffffffffff0fffc3ffffffff +fffffffffffffffffffff0ff3fcffcfffff3fff3fc00fcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fff3cfffcffff3ffffffc000003fff3fffffffcffffffffcfcfc3 +fffffff0fffffffc0ff3fff000000fffff3ffffffff0ffffffcffffffff00fff +fffffff3fcfffffffffc3ff0ffcffff3ffffffffc03ff03fff0fffc3fc00ffc0 +0fc00fff03fc303ffffff3fc3fc3fcc00033fff3fffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fff3c0000ffff3fffffffffcffffff3fffffff0ffffffff0fcff3 +fffffc0000003ffc3ff3ffffff3ffffffc3fffffffc3fffff3c3fcfffff3c0ff +ffffffc3ff0000003ff0fff3ffcffff3ffffffff0fcfc30fff0fffc3fff0ff0f +f3ff0ffc30fc0c0fffffc3fcfff3fcff3ff3ffc3fffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fff3cfffcffff3fffffffffcffffff3fffffff3ffffffff3fcff3 +ffffffffc3fffffcfff3ffffff3ffffffcfffffffc0f0ffff0f3fcfffff3fc0f +ffffffcfffffffffffffffc3ffcffff3fffffffc3fff0fc3ff0fffc3fff0ff0f +ffff0ff0fc3c3f0fffffcff0fff3fcc00033ffcffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fff3cfffcffff3fffffffffcffffff3fffffff3ffffffff3fcfff +ffffffff0ffffff0fff3ffffff3ffffffcffffffc0cfc0fffcfff0fffff3ffff +ffffff0fffffffffffffffcfffcffff3fffffffc3fff0fc3ff0fffc3fff0ff00 +3fff0ff0fc3c3f0fffffcff3fff3fccf3f33ffcffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fff3c0000ffff3fffcfff000ffffff3fffcffc3fffffffc3fcfff +fffffffc3fffffc0fff3fffc003ffffffcfffffc0fcffc3ffffff3fffff3ffff +fffffc3fffffffffffffff0fffcff003fffffffc3fff0fc3ff0fffc3fff0fff0 +03ff0ff0fc3c3f0fffffcfc3ffc3fccf3f33ff0ffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fff3cfffcffff3fff0ffcffc0fffff3fff0ffcffffffffcffcfff +fffffffcffffff0cfff3f3f3ff03fffffc3fffffffcfffffffffc3fffff3ffff +fffff0fffffffffffffffc3fffcfcff03ffffffc3fff0fc3ff0fffc3fff0ffff +c3ff0ff0fc3c3f0fffffcf0fffcffcc00033ff3ffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fff3cfffcffff3ffc3ffcffcc0ffff3ffc3ffcffcfffff0ff0fff +ff03fffcfffffffcfff3c3f3ff303fffff0fffffffcfffffffff0ffffff3ffff +ffff03fffffffffffffff0ffffcccff30fffffff0fcfc30fff0fffc3fff0ff3f +c3ff0ffc30fc3f0ffffff03ffc0ffcff3ff3ff3ff3fffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fff3c0000ffffcfc0fffcff0fc3fffcfc0fff0ffc3fffc3ff3fff +ff03fffc3ffffffcfffc0ff3fc3f0fffffc0ffffffcffffffffc3ffffff3ffff +fff03fffffffffffffff03ffffc3cfc3c3ffffffc03ff03fff0fffc3fff0ffc0 +0fff0fff03fc3f0fffffffffc0fff0ff3cf33c3ff0fffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fff3ffffffffff00fffff003fffffff00ffff3fff000ffff03fff +fff3ffff03fffffcfffffffc00fffffffffc0fffffcffffffff0fffffff3ffff +fffffffffffffffffff03ffffff3f00fffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffff3ff00333cfffc003cffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fff00000003ffffffffffffffffffffffffffffffffffffffffff +ff0ffffff00fffffffffffffffffffffffffffffffffffffff03ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffc3003f0c3ffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcfffff3fffffffcffffffff3ffccfffcfffffffffffffffff3ffff +fffffffffffff3fffffffffffffffffffffffffffffffffffffffffcffffffff +fffffffffffffffffffffffff3ffffff3f3ff3fffffffffffffcffffffcfffff +ffff0ffffffffffcfffffffffffffffffffff3fffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcfffff3fffffffcffffffff3ffccfffcfffffffffffffffff3ffff +fffffffffffff3fffffffffffffffcfffffffffffffffffffffffffcffffffff +fffffffffffffffffffffffff3ffffff3fcfcffffffffffffffcffffffcfffff +ffffc3fffffffffcffffff00000000fffffff3fffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcfffff3fffffffcfff3ffff3fffffffcfff3ffffffffffffc3ffcf +ffff003ffffff3fffffffffffffffcffffff000000fffffffffffffcfffff000 +0003ffc00003ffffc00fff00000000ff3c0000fc000000fffffcffffffcfff3f +ffcff0fffffffff0000003fffcffffffffffc000000fc0fcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcffffffffffffffffffffffffffc7fcfffffffffffffffffffffff +ffffffcfffffffcfffffffffffffffffff3ff3fffffffffcffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcfff0000ffffffcfff0ff0000ffffffcfff0ffffffffffffcfffc3 +fff03303ffc00000fffffffffffffcffffff3ffffcfffffffffffff0003fffff +f0fffffffffffffc0cc0fffff3ffffc003fcfffffffc3ffc00000003ffcfff0f +ffcffffffffffff3ffff3ffff0ffffffffffcffffcfffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcffffffffffffffffffffffffffc3fcffffffffcffffffffffffff +fcffffcfffffffcfffffffffffffffffff3ff3fffffffffcffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcffffcffffffc0003fc3ffcffffffc0003fc3fc00ffc0fff0ffff3 +ffc3f3f0ffffffc3fffffffffffffcffffff3ffffcfffffffffffff3ff3fffff +c3f33ffffffffff0fcfc3fffc3ffffff3f0003fffff0fccffffcffffc0003fc3 +ff0fffffffffffc3ffff3ffff3ffffffffff0ffffcfffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcffffffffffffffffffffffffffc5fcfffffcfffffffffffffffff +ffffffcfffffffcfffffffffffffffffff3ff3fffffffffcffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcffffcff003fffcfcff3ffcff003fffcfcff3f0f03f0c3ff3f0000 +ff0ff3fcffffff0ffffffffffffffcffffff3ffffcffffffffffffc3ff3fffff +0ff33fffffffffc3fcff3fffc0000fff3ffcffffffc3fccffffcffffffcfcff3 +ff3fffffffffffcfc03f3ff000000fffffff3f00fcfffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcffffffffffffffffffffffffffccbcff41b00fcff41ff202cfcfc +fcff808fe42fffcffff41fc80bf904ffff3ff3f41bf3fcfcffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcffffcffffffffcfcff0ffcffffffffcfcff0fffc3c3f0c0003ffc +3f3fc3fc3ffffc3ffffff3fffffffc03fffffffffcff3fffffffff0ffc3fffff +3fffffffffffffcff0ff0fff0fffcffc0ffcffffffcfffffff00ffffffcfcff0 +ff3fffffffffff0fcf3f3ff3ffffcffffffc3f3cfcfffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcffffffffffffffffffffffffffce3cff6d3cffcfd7d7f1b8db8b9 +fcff2f8fdb9fffcfffd7d7c6e3f2f8ffff0003f6d3f3fcfcffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcffff0ffffffff0fcffcff0ffffffff0fcffcfff0fc3f0ffffffff +3c3fcfff3ffff0fffffcf0ff3ffffcf03ffffffff0ffc000000ffc3ffcfffffc +3fffffffffffff0ff3ffcffc0fffcffc3000003fff0ffffffc3c3fffff0fcffc +ff3c000ffffffccfcf3f3ff3ffffcffffff33f3cfcfc00ffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcffffffffffffffffffffffffffcf5cffff3cffcfcff3f3fce7576 +fcff3fcfcfcfffcfffcff3cff3f3fcffff3ff3fff3f3fcfcffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcffff3ffffffff3fcffcff3ffffffff3fcffcff03fc3f0ffffffff +fcff0fff3fff03c3fffc3cff3ffffcff03fffffff3fffffffffffffff0fffffc +ffffffffffffff3fc3ffcff0c0000ffc3ffcffffff3ffffffcff3fffff3fcffc +ff00ffc3ffffffcfcf3f3ff3ffffcfffffff3f3cfcfffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcffffffffffffffffffffffffffcf8cff803cffcfcff3f3fcf3333 +fcff3fcfc00fffcfffcff3cff3f3fcffff3ff3f803f3fcfcffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcffff3ffffffff3fcfffff3ffffffff3fcffffff0fc3f0fc000003 +fcff3fff3ff033f03fff3ffc3ffffcffffffffffc3fffffffffffffff3fffffc +ffffffffffffff3fcfffcfc3cfffcff33c3cfc3fff3ffffffcff3fffff3fcfff +fc3ffff3ffffffcfcf3f3ff3ffffcfffffff3f3cfcfffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcffffffffffffffffffffffffffcfd4ff2f3cffcfcff3f3fcf6767 +fcff3fcfcbffffcfffcff3cff3f3fcffff3ff3f2f3f3fcfcffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcfffc3fffffffc3fcffffc3fffffffc3fcffffffc3c3f0fcfffff3 +fcfc3ffc3f03f3ff0ffffffcfffffcffffffffff0fffffffffffffffc3fffffc +ffffff3fffffff3f0fff0f0fcfffcff33f0c30ffff3ffffffc3f3ffffc3fcfff +fffffff3ffffffcfcf3f3ff000000fffffff3f3cfcfffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcffffffffffffffffffffffffffcff0ff2d3cbfcfd7d7f3fcf8b8b +fcff2f4fd7ffffcfffd7d7cff3f2f4ffff3ff3f2d3f2e4fcffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcfffcffffffffcffcffffcffffffffcffcffffffc3c3f0fcfffff3 +fcf0fffcfffff3fffffffff0fffffcfffffffffc3fffffffffffffff0ffffffc +3fffff0fffffff3c3fff3fffc0000fcf3ffc0fffff0fffffff003ffffcffcfff +fffffff3ffffffcfc03f3ff3ffffcfffffff3f00fcfffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcffffffffffffffffffffffffffcff8ff810e0fcff41ff3fcf8b8b +fcff808fe41fffc003f41fcff3f808ffff3ff3f810f818fcffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcfffcffcfffff0ff0ffffcffcfffff0ff0ffff0f03f0c3fcfffff3 +ff03ffc0fffff3ffffffffc3fffffcffffffffc0fffffffffffffffc3fffffff +0fffffc0ffffffc0fff03fffcfffcfff3fc0c3ffffc3fffffffcfffff0ff0fff +ffffffc3ffc0ffcfffff3ff3ffffcfff03ff3ffffcfffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcfff0ffc3fffc3ff3ffff0ffc3fffc3ff3ffffc00ffc0ffcfffff3 +fffffc0ffffff3ffffffff0ffffffcfffffffc0fffffffffffffffc0ffffffff +c0fffffc0000ffffff03ffffcfffcfff3c0cf0fffff03ffffff0ffffc3ff3fff +fffffc0fffc0ffcfffff3ff3ffffcfff03ff3ffffcfffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffff7f5ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcfff3fff000ffff03ffff3fff000ffff03fffffffffffffcfffff3 +fffffffffffff3fffffffc3ffffffcfffffffffffffffffffffffc0fffffffff +fc0fffffffffffffffffffffcfffcfff30fcfc3fffff03ffffc3fffffff03fff +ffff00fffffcffcfffff3ff3ffffcffff3ff3ffffcfffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffff407ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcffffffffffffffffffffffffffffffffffffffffffffffc000003 +ffffffffffffffffffffc0ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcffc0fff3fc0fffffffffffffc0fffffffffffff +ffffffffffc3ffcffff03ff000000fff0fff3fffc0fffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcffffff3fffffcffcfffffcfcfffffffcfffffffffffffffffffff +fffffffffffffffffffff3fffffff3ffffffff3ffcfffc3fffffffffffffffff +fffffcfcfff3ffcfffcfffffffffffffffffffffffffffffffffffffffffffff +fffffffffcfffffff3ffffffff0ffffffffcfffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcffffff3fffffcffcfffff0fcfffffffcffffffffffffffff3ffff +fffffffffffffffffffff3fffffff3ffffffff3ff0ffff03fffff00003fffcff +fffffc3c3fc3ff0fffcf0ff3ffffffffffffffffffffffffffffffffffffffff +fffffffffcffffffc3c0003fffc0fffffff03ffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcffffff3fffffcff000fff3fcfffffffcffffffffffffffff3ffff +fc000003fffffffffffff3fffffff003fffc000003fffff03fffffff0ffffc3f +ffffff3f3fcffc3fffc03ff3ffffffffffffffffffffffffffffffffffffffff +fffffffffc00ffff0ffffffffffc0ffffff33ffffffc00ffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcffffff3ffff000f3fcff003c000ff000003fffffffffffff3ffff +fcfffff3ffffffffffffc000fff003ffffffff3f0ffffffffffffffc3fffff3f +fffffc000003f0fcc00fffc3f0003fffffffffffffffffffffffffc3ffffffff +fffffffc00fffffc3fffffffffffffffffc30fffffc0ccfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcffc00000003fcfc0f0ff3f30ffcffffff0ffffffffffffff3ffff +fcfffff3ffffffffffffcffcffffcfffffffff3cffffc0000ffffff0ffffff0f +ff0ffcff3ff3fc30ffcfffcffffffffffffffffffffffffffc3fffc3ffffffff +fffffffff3fffff0ffffffffffffffffff0fc3ffff0fccffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcfffff333ffffcf0cc3ff3f33ffcfffffc3ffffffffffffff3ffff +fcfffff3ffffffffffff0ffcffffcfffc3c00000003fffff3fffffc3ffffffcf +f03ffcff3ff3ffc3f3cf3fcffffffffffffffffffffffffffc3fffffffffffff +fffffffff3fff0fff3fffffff00003fffc3ff0fffc3fccfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcfffff330ffff03ff0fff3f03ffcfffff0ffffffcffffffff00fff +fffffff3fcfffffffffc3ff0ffff003c0fffffc3fffffffcffffff0003ffffc3 +03fffc000003ff0ff3cf3fcffffffffffffc3c3fc0ff0fc3fc3ff003fc303ff0 +03ffffffc00f03ffc300000ffffff0fff0c00c0ffcff0cffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcffffc33cffff0cfc03ff3f3c3fcffffc3fffff3c3fcfffff3c0ff +ffffffc3ff0000003ff0fff3fffc3fc0fffffc3ffffffff3fffffc3ff0fffff0 +3ffffcff3ff3fc3cf3cf3fcffffffffffffc303f0c3f0fc3c000ffc3fc0c0fc3 +c3ffffff0ff03fff0ffff3fffffffcff03ffffc0f0ff3cfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcffffcf3c3fff0ff0f0ff003f0fcfffc0f0ffff0f3fcfffff3fc0f +ffffffcfffffffffffffffc3fff0fc0fffffc00003ffffcffffff0fffc3fffc3 +fffffcff3ff3f00033cf3fcffffffffffffc0f3c3f0f0fc3fc3fffc3fc3f0f0f +c3fffffc3f03fffc0ffff3fffffffcfffffffffff3fc3cffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcffff0f3f0ffccf03fc0f3f3fcfcffc0cfc0fffcfff0fffff3ffff +ffffff0fffffffffffffffcffffff0cffffc0fffffffff00ffffc3ffff3fff0f +fffffc000003ffcf33cf3fcffffffffffffc3ffc3f0f0fc3fc3fffc3fc3f0f0f +c3fffffffc33fff0cffff3fffffffcfffc0000fff3fcfcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcfffc3f3fc3fccff000ff3f3fffcfc0fcffc3ffffff3fffff3ffff +fffffc3fffffffffffffff0fffffc3cfffc0cffffffffc3cffffff03ff3ffc3f +ffffffff3fffffcff0003fcfcffffffffffc3ffc3f0f0fc3fc3fffc3fc3f0f0f +c3fffffff0f3ffffcffff3fffffff0fffffffcfff3f0fcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcfff0ff3ff0f3cff3fcff3f3fffcffffcfffffffffc3fffff3ffff +fffff0fffffffffffffffc3fffff0fcfffffc00003fff0fcfffffcf0ff3ffcff +ffffffff3ffffcccffcfffcfcffffffffffc3ffc3f0f0fc3fc3fffc3fc3f0fc3 +03ffffffc3f3ffffcffff3ffffffc3fffffff0fff3c3fcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcffc3c000fc3fcff3fcff3f3fff0ffffcfffffffff0ffffff3ffff +ffff03fffffffffffffff0ffffff3ffffffffffff3ffc3fcfffffcfcfc3ffcff +ffffc00000003ccc3fcfffccc3fffffffffc3fff0c3f0303fc3fffc3fc3f0ff0 +c3ffffffcfffffffcffff3ffffff0ffffffff3fffc0ffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcffffff3fffffcff3fcff003fff3ffffcffffffffc3ffffff3ffff +fff03fffffffffffffff03ffffff0ffffffffffff3ff0ffc3ffffc3cf0fffc3f +ffffffff3ffff0cf3fcfcfc3f0000ffffffc3fffc0ffc0c3ff00ffc3fc3f0fff +c3ffffffc3ffffffcffff3fffff03fffffffc3fffffff0fcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcc0000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000fffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcffffff3fffffcff3fcfffffffc3ffffcffffffff0fffffff3ffff +fffffffffffffffffff03fffffffc0000fffffffc3ffffff003fff0003ffff00 +000fffff3ffff3cfffcf0ff3ffffffffffffffffffffffffffffffffffffff0f +0ffffffff00003ffcffff3fffc03ffffffff0ffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcffffff3fffffcff000ffffffc0fffffffffffff03ffffffffffff +fffffffffffffffffffffffffffffffffffffff00fffffffffffffffffffffff +ffffffff3fffffcffff03fffffffffffffffffffffffffffffffffffffffffc0 +3fffffffffffffffcfff03ffffffffffffff3ffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcffffffffffffffffffffffffffffffffffffffffffffffcffffff +fffffffcfffffffffffffffffffffffffffffffffffffccfffffffffffffffff +fffcffffffcfffffffff3fcfffffffffffffffffffffffcfff3fff0fffffffff +3ffffffffffffffcfffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcffff00000fffffffffffffffffffffffffffffffffffff0ffffff +fffffffcfffffffffffffffffffffffffffff3fffffffccfffffffffffffffff +fffcffffffcffffffc00000003f000000fff3fffffffffcffc3fffc0ffffffff +3fffffcffffffffcfffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcfffffffc3fffc00003ff0000003ffffffcfffffffffffc3ffffff +fffffffcfff3ffffc00fffc0000003ffffffc3ff000003ffffffffffc0000003 +fffc00ffffcfff003fff3fcffffff3ffcfff0fffffff000000fffffc0fffffff +3fffffcffffffffcfffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcffffffc3ffffffffffffffff0ffffffffcffff3ffffff0ffffffc +000ffffcfff0fffc0cc0ffffffffc3ffffff0fffffffffffffffffffffffffc3 +fc00ffffffcfff3f3ffffffffffff3ffcfffcfffffffffcfc3fffffffffff000 +000fffcffffffc0003fffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcffffff0ffffffffffffffffc3f33fffffcffff0fffffc3fffff00 +fff3fc0003fc3ff0fcfc3ffffcff0ffffffc3ffffffffffffffffffffffcff0f +fff3fffff0000f3f3f003cf3cf00000000ffc3ffc3ffffcf3ffff00003ffffff +3fffffcffffffff3fffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcfffffc3ffffffffffffffff0ff33fffffcffffc3ffff0fffff03f +fffcfffcfcff3fc3fcff3ffffcfc3fffffc0fffffffffffffffffcfffffcfc3f +fff3fff0ffcfcf3f3f3f3f333ffff3ffcffff3fc0ff00000000fffffcfffffff +3fffffcffffffff3fc00fffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcffffc3fffffffffffffffff3fffffffffcfffff3fff0fffffffff +fffcfffcfcff0fcff0ff0ffffcf0fffffc0ffffc000000fffffff0fffffcf0ff +ffc00f03ffcfcf3f3f3f3c000ffff3ffcffff0c0fffffff0ffffffff3ffff000 +000fffcffffffff3fffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcfff0000000ffffffffffffc3fffffffffcfffff0ffc3fffffffff +fffcfff0fcffcf0ff3ffcffffcffffffc0cffffffff3ffffffffc3fffffcffff +ff0ff03fffcfcf3f3f003fccfff000000ffffc0fffffff0ffffffffcffffffff +3fffffcfffffffc3fffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcffffff0fffffffffffffffcffffffffffcfffffcfff0fffffffff +fffcfff3fcffcf3fc3ffcffffcfffff00fcffffffff3fffffffc0ffffffcffff +fc3f03ffffcfcf3f3f3f300003ffcffffffff0fffffff00000fffff3ffffffff +3fffffcfffffffcffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcfffffc3fffffffffffffffcffffffffffcfffffcfffc3ffffffff +fff0fff3fcffff3fcfffcffffcffffffffcffffffff3ffffffc0fffffffcffff +fffc33ffffcfcf3f3f3f3f3f3fff3fffffffc3ffffff03ffffffffc03fffffff +3fffffcfffffffcffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcfffff0ffffff3fffffffffcffffffffffc3cfffcffff0ffffffff +ffc3ffc3fcffff3f0fff0ffff0ffffffffcfffffffc3fffff00cfffffff0ffff +fff0f3ffff0fcf3f3f003cf3cffc000003ff0ffffff033ffffffff0f3ffffc00 +3fffffcffff3ff0ffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcfffff3ffffff0fffffffffc3ffffffffff30ffffffffc3fffffff +fc0fffcffcffff3c3fff3ffff3ffffffffcfffffffcffffffffcfffffff3ffff +ffc3f3ffff3fcf3f3f3f333333f33ffff3ff3ffffffff00000fffc3f3ffff3ff +03ffffcfffc3ff3ffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcfffff3ffffffc0fffffffff0fffffc0fff03fffffffff0fffffff +c0ffff0ff0ffffc0fff03fffc3ffffffffcfffffff0ffffffffcffffffc3ffff +ffcfffffff3f0f3f3f3f3fc0ff0f3ffff3ff3ffffffffffffcfff0ff3ffff3ff +303fffcfff0fff3ff3fffff03ffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcfffff0fffffffc0000fffffc0ffffc0fffcffffffffffc3ffffff +fffffc3ff3ffffffff03ffff0fffffffffcffffffc3ffffffffcffffff0fffff +ffc3fffffc3f3f3f3f3f3c330fff3ffff3ff0ffffffffffffcffc3ff0ffff3fc +3f0ffff3f03ffc3ff0fffff03ffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcfffffc0fffffffffffffffffc0ffffcfffffffffffffff0ffffff +ffffffff03fffffffffffff03fffffffffcfffffc0fffffffffcfffff03fffff +fff00003fcff3f003c3f30f3c3ff3ffff3ffc00003fffffff0ffffffc00ffc00 +fffffffc03fffcfffc003ffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcffffffc03ffffffffffffffffffffc3fffffffffffffffcffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffff +fffffffff0fc3ffffcfc3fc3ffff000003fffffffffffffc03ffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffff +fcfffffffffffffffffffffffffffffffff3fffffffc3ffcffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffff3fff3ffffffcfffffff +fcfffffffffffffffffffffffffffffffff3ffffffc0fffcff0000003ffcffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffff3fff3ffffffcfffff3f +fcffff0000000ffffffffffffffffffffff003ffc00ffcfcff3ff3ff3ffcffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcfffffffffffffffffffff0fffffffffffffffffffc3ffffffffff +ffffffffffffffffffffffffffc3ffffffffffffffffc3fff3ffffffcfffff3f +fcffffffff0ffffffffffffffffffffff003ffffffcffcfcff3ff3ff3ffcffff +fffffffffc3ffffffffffffffffc3ffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcffffc3fffffffffffffff0fffffffffffffffffffc3ffffffffff +fffff0ffffffffffffffffffffc3ffffffffc3ffffffcfc00003ff3fcfffff0c +000ffffffc3ffffffff0ff3c003fc00fffcfffffffcffcfcff3ff3ff3ffcffff +fffffffffc3ffffffffffffffffc3ffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcffff03fffffffffffffff0fffffffffffffffffffc3ffffffffff +fffff0ffffffffffffffffffffc3ffffffffc3ffffffcffff3ffff3fcfffffc0 +f3c0fffff0fffffffff03f3c3fff0fc3ffcfffc3c0003cfcff0000003ffcffff +fffffffff0fffffffffffffffff0fffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcfffcc3fffffffffffffff0c3ff0f0ff03fc00fff003fc03f003ff +003ff0fffffff0c3fc00fff00fc3f0ff00ffc3ffffffcffff3ffff3fc003ffcf +f3fcfffff3fffffffff03f3c3fff0fffff003c0fffcffcfcff3ff3ff3ffcffff +fffffffff0fc3f0fc00ff0f0fff0ff003f0c3ffc0fff00ffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcffffc3fffffffffffffff030ff0c0fc30fffc3fc3c3f0fcfff0fc +3fcf0003fffff030fffc3fc3f3c3f3fc3c3c000fffffcffff3ffff3fcfffff03 +f3fc3fffc3fffffffff30f3c3fff03fffc3fc0ffff03fcfcff3ff3ff3ffcffff +ffffffffc3fc3f0f0ff3f0c0ffc3fc3fcf030ff0c3fc30fcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffc3fffffffffffffff0fc3f03cf0fc3ffc3f0fc3c3fffff0fc +3ffff0fffffff0fc3ffc3f0fffc3cff0fc3fc3ffffffcffff3ffff3fcfffff30 +c3ff3fffcffffffffff30f3c3fffc03ff0fc0fffff0cfcfcff3ff3ff3ffcffff +ffffffffc3fc3f0f0ffff03cffc3fc3fff0fc3c3f0f0fcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffc3fffffffffffffff0fc3f0fff0fc3c003f0fc3c3fff000fc +00fff0fffffff0fc3c003f0fffc03ff0003fc3ffffffcffff3ffff3fcffffc3c +cfff3fffcffffffffff3c33c003ffc0ffff0cffffccf3cfcff0000003ffcffff +ffffffff0ffc3f0f003ff0ffff0ffc00ff0fc3c3f0f0fcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffc3fffffffffffffff0fc3f0fff0fc30fc3f0fc3c3ffc3f0ff +c00ff0fffffff0fc30fc3f0fffc30ff0ffffc3ffffffcff003ffff3fcffffcfc +0fff3fffcffffffffff3c33c3fffff03ffc3cffff0cffcfcff3ff3ff3ffcffff +3fffffff0ffc3f0ff003f0ffff0fffc00f0fc3c3f0f0fcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffc3fffffffffffffff0fc3f0fff0fc30fc3f0fc3c3ffc3f0ff +ff0ff0fffffff0fc30fc3f0fffc3c3f0ffffc3ffffffcfcff03fff3fcffffcff +3ffc3fffc3fffffffff3f03c3fffffc3ff0fcfffc3cffffcff3ff3ff3ffcfffc +3ffffffc3ffc3f0fffc3f0fffc3fffff0f0fc3c3f0f0fcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffc3ffc0fffffffffff0f0ff0fffc30f0f03fc303f0fcc3c0fc +ff0ff0fffffff0f0f0f03fc3f3c3f0fc3f3fc3ffffffcccff30fff3fcffffcf0 +0ffcfffff0fffffc0ff3f03c3fff0fc3ff3fffffffcffffcff3ff3ff3ffcfff0 +fffffffc3ffc0c0f3fc3f0fffc3ffcff0f0f0ff0c3fc30ffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffc3ffc0fffffffffff003ff0ffff03fc0c0ff0c3fc03f0303f +003ffc03fffff003fc0c0ff00fc3f03f00fff00fffffc3cfc3c3ff3fcfffff03 +cfc0fffffc0ffffc0ff3fc3c3fffc00fff0fffffffcffffcfc3ff3ff3fff3f03 +fffffff0ffff030fc00ff0fff0ffff003f003ffc0fff00fcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffff0fffffffffffffffffffffffffffffff3f00fffc00000003fff +fc0fffffffc0ffffcfffffffffffffffffc0000fffcffffcfcfff3ff3fffc03f +fffffff0fffffffffffffffff0ffffffff0ffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffc3fffffffffffffffffffffffffcfffc0f0fff3f03fffffff +ffffffffffffffffffffffffffffffffff0ffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffff3ffcfffffcfffffffff3ffffffffffffffffffff +fff33ffc3ffffffffffffffffffffffffcffffffff0fffffffffffffff3fffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffff3ffcfffffcfffffffff3fffff00003ffffffff3f +fff33fff03fffffcfffffffffffffffffcffffffffc3f3fc00000003ff3fffff +ff3ffffffffffffffff00003fff3fff3ffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffff3ffcffc00000003ffff3ffffffff0fffffffff0f +fffffffff03ffffcffffffc0000003fffcfffffffff3f3ffff3f3fffff3ffc3f +ff0fffffffc00003ffffff0ffff3fff3ffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff000fcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffff3ffcfffffcfffff00000000ffffc3fffffffffcf +fffffffffffffffcffffffffffc3fffc0000fffffcffc3ffc000003fc000ff0f +ffcffffffffffffffffffc3fffc3fff3ffffffffffffffffff0fffffffffffff +ffffffffffffffffffffffffffc3fffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffc0000003fff0fffffffff3fffffff0ffffffffffc3 +ffc3fffffffffffcffffffffff0ffffffcfffffffcffcfffcf3f3f3fff3fffc3 +ffc3ffc3fffffffffffff0ffffcfc00003ffffffffffffffff0fffffffc3ffff +fffc3fffffffffffffffffffffc3fffffff0fffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffff3ffcfffff00003fffff3ffffffc3fffffffffff3 +fc0fffc0000ffffcfffffffffc3ffffffcfffffffcff0fffcf3f3f3ffc3fffff +fff3fc0fffffffffffffc3ffffcffff3ffffffffffffffffffffffffffc3ffff +fffc3ffffffffffffffffffffffffffffff0fffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffff3ffcffffc3fff3fffc03ffffff0003fffffffff0 +c0ffffffffc3fffcfffffffffcfffffc0000ffff3cff3cffcf3f3f3ffcfff3ff +fff0c0ffffffffffffff0003ffcffff3fffffffc30fff03fc00ff0c0ffc3ffff +fffc3fff03ffffff0c3ffc0ff003fc303ff0fffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffff3ffcffff03fff3fff0f0fffffc3ff0fffffffffc +0ffffffffff3fffcfffffffff0fffffff3ffffff3cfc3c3fc000003ffcfff3ff +fffc0ffffffffffffffc3ff0ffcffff3fffffffc0c3fc30fff0ff0303c000fff +ffc000fc30ffffff030ff0c3ffc3fc0c0f0003fffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000000 +00000003ffff0000000000000003ffff0000000000000000ffffffffffffffcf +fffffffffffffcfffffffffffffffc0000000000000003fffc00000000000000 +03fffc0000000000000003ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffff3ffcfffc300003fff3fcfffff0fffc3ffffffff0 +fffffffffff3fffcfffffffff3fffffff3ffffff3cfcff3fffcffffff0fff3ff +fff0fffffffffffffff0fffc3fcffff3fffffffc3f0f0fc3ff0ff0fc3fc3ffff +fffc3ff0fc3fffff0fc3c3f0ffc3fc3f0ff0fffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffffff +fffffff3ffff3ffffffffffffff3ffff3ffffffffffffffcffffffffffffffcf +fffffffffffffcfffffffffffffffcfffffffffffffff3fffcffffffffffffff +f3fffcfffffffffffffff3ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffff3ffcfff0f3fff3fff3fcffffc3ffff3fffffffc3 +fffffffffff3fffcfffffffff3fffffff3fff3fc3cf0ff0c00000003f3fff3ff +ffc3ffffffffffffffc3ffff3fcffff3fffffffc3f0f0fc3ff0ff0fc3fc3ff00 +03fc3ff0fc3c000f0fc3c3f0ffc3fc3f0ff0fffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffffff +fffffff3ffff3ffffffffffffff3ffff3ffffffffffffffcffffffffffffffcf +fffffffffffffcfffffffffffffffcfffffffffffffff3fffcffffffffffffff +f3fffcfffffffffffffff3ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffff00000000c3f3fff3fff0fcffffff03ff3fffffff0f +ffffffffffc3fffcffff3ffff3fffffff3fff3fcfcc3ffcfff3ff3ffc3fff3ff +ff0fffffff3fffffffffffff3fcff003fffffffc3f0f0fc3ff0ff0fc3fc3ffff +fffc3ff0fc3fffff0fc3c3f0ffc3fc3f0ff0fffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffffff +fffffff3ffff3ffffffffffffff3ffff3ffffffffffffffcffffffffffffffcf +fffffffffffffcfffffffffffffffcfffffffffffffff3fffcffffffffffffff +f3fffcfffffffffffffff3ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffffffffffffffffffff00003fffc00fffffcf0ff3fffffff3f +ffffffffff0ffffcfffc3ffff0fffffff3fff3f0fc0ffcfffcffc3fffff003ff +ff3fffffff0ffffffffffffc3fcfcff03ffffffc3f0f0fc3ff0ff0fc3fc3ffff +fffc3ff0fc3fffff0fc3c3f0ffc3fc3f0ff0fffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffcffd01fc0 +1fcffcf3ffff3fd01fc01fcffcf3ffff3fd01fc01fcffcfcffffffffffffffcf +fffffffffffffcfffffffffffffffcffd01fc01fcffcf3fffcffd01fc01fcffc +f3fffcffd01fc01fcffcf3ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffff3ffcfffff3fff3fffff3fffffcfcfc3ffc0fff3f +fffffffffc3ffffcfff0fffffc3ffffff0ffc3fffcfff0fff0030fffffcff03f +ff3fffffffc0fffffffffff0ffcccff30ffffffc3c3fc30fff0ff0fc3fc3ffff +fffc3ffc30ffffff0f0ff0c3ffc3fc3f0ff0fffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffcff1bdfcf +97cffcf3ffff3f1bdfcf97cffcf3ffff3f1bdfcf97cffcfcffffffffffffffcf +fffffffffffffcfffffffffffffffcff1bdfcf97cffcf3fffcff1bdfcf97cffc +f3fffcff1bdfcf97cffcf3ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffffffffffc3ffc3ffff3fff3ffffc3fffffc3cf0fffc0fff0f +ffffffffc0ffffff3f03ffffff03fffffc3f0fffc03ff3fffff03fffffcfc30f +ff0ffffffffc0000ffffff03ffc3cfc3c3fffffc00fff03fff0ff0fc3ff00fff +ffff00ff03ffffff003ffc0fffc3fc3f0ffc03fffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffcfd7fffcf +f3cffcf3ffff3d7fffcff3cffcf3ffff3d7fffcff3cffcfcffffffffffffffcf +fffffffffffffcfffffffffffffffcfd7fffcff3cffcf3fffcfd7fffcff3cffc +f3fffcfd7fffcff3cffcf3ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffffffffff0ffff0ffff3fff3ffff0fffffff0003ffffffffc0 +0003fff00fffffffc03ffffffff03fffff003ff00f0003ffff0300fffff00fff +ffc00003ffffffffffffc03ffff3f00ffffffffc3fffffffffffffffffffffff +ffffffffffffffff0ffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcbfffcf +f3cffcf3ffff3cbfffcff3cffcf3ffff3cbfffcff3cffcfcffffffffffffffcf +fffffffffffffcfffffffffffffffcfcbfffcff3cffcf3fffcfcbfffcff3cffc +f3fffcfcbfffcff3cffcf3ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffff03ffffc0fff3ff03fff03fffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff003ffc0fffffffff +fffffffffffffffffffffffffffffffffffffffc3fffffffffffffffffffffff +ffffffffffffffff0ffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcffffcf +97cffcf3ffff3cffffcf97cffcf3ffff3cffffcf97cffcfcffffffffffffffcf +fffffffffffffcfffffffffffffffcfcffffcf97cffcf3fffcfcffffcf97cffc +f3fffcfcffffcf97cffcf3ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcffffc0 +1fcffcf3ffff3cffffc01fcffcf3ffff3cffffc01fcffcfcffffffffffffffcf +fffffffffffffcfffffffffffffffcfcffffc01fcffcf3fffcfcffffc01fcffc +f3fffcfcffffc01fcffcf3ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffcfffffffffffffcff0003ffffcfffffffffffffff3ff3ffffff3fffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffff3fcffffff3ff3fffffffffffffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcbfffcf +ffcffcf3ffff3cbfffcfffcffcf3ffff3cbfffcfffcffcfcffffffffffffffcf +fffffffffffffcfffffffffffffffcfcbfffcfffcffcf3fffcfcbfffcfffcffc +f3fffcfcbfffcfffcffcf3ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffcfffffc0000fffcff3ff3ffff03fffff3ffffff3f3ff3fffffc3fffff +fffffffffffffffffffffffffffcffffffffffffffffff3ffffcffffffffffcf +fffff3fff3fff3fcffffcf3cf3ffffffffffffffcffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffcfd7fffcf +ffcffcf3ffff3d7fffcfffcffcf3ffff3d7fffcfffcffcfcffffffffffffffcf +fffffffffffffcfffffffffffffffcfd7fffcfffcffcf3fffcfd7fffcfffcffc +f3fffcfd7fffcfffcffcf3ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffcffffffffc3fffcff0003fffc30fffff3ffffffccfff3fffffcffffff +ff003ffc00000f0ffffffffffffcfffffffffffffffcff3ffffcffffffffffcf +fffff3fff3fff3f00003c330f3fffffc00ffffffcffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffcff1b9fcf +ffd7f5f3ffff3f1b9fcfffd7f5f3ffff3f1b9fcfffd7f5fcffffffffffffff3f +fffffffffffffcfffffffffffffffcff1b9fcfffd7f5f3fffcff1b9fcfffd7f5 +f3fffcff1b9fcfffd7f5f3ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffffffffffffffffffffffffffffffffffffffc3fffffffffff +fffc00000003ffff0ffffcff3ff3fff0fc0fffc3f0003ff3f00003fc000003ff +f03303ffffffccf3fc00003ffffcffffff000000fffcff3ffff0fc000fffffcf +fffff3fff3fc0033fffff333c000ffc0cc0fffffcffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffcffd01fcf +fff407f3ffff3fd01fcffff407f3ffff3fd01fcffff407fcffffffffffffff3f +fffffffffffffcfffffffffffffffcffd01fcffff407f3fffcffd01fcffff407 +f3fffcffd01fcffff407f3ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffc00fffffffffffffffffffffffffffffc3fffc3fffffffffff +fffffffcfffffffc3fffc00f3ff3ff03ffc0ffcffffffff3f3f3f3fcfffff3ff +c3f3f0ffffffccf3fcffff3ffffcfffffffffffcfffcff3ffff3ffffffffffc0 +03fff3fff3ffff00003f0000cfcfff0fcfc3fc0000003cffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffffff +fffffff3ffff3ffffffffffffff3ffff3ffffffffffffffcffffffffffffff3f +fffffffffffffcfffffffffffffffcfffffffffffffff3fffcffffffffffffff +f3fffcfffffffffffffff3ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fff0f03ffffffffffffffffffffffffffffc3ffffffffffffffff +fffffffcfffffff0fffffcff0003f03ffffc0fcfffffffccf3f3f3fcfffff3ff +0ff3fcffffff0f0ffcffff3ffffcfffffffffffcfffcff3ffff3ffffffffffcf +fffff3fff3fffc3cff3ff33f0fcffc3fcff3ffffcffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffffff +fffffff3ffff3ffffffffffffff3ffff3ffffffffffffffcffffffffffffff3f +fffffffffffffcfffffffffffffffcfffffffffffffff3fffcffffffffffffff +f3fffcfffffffffffffff3ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffc3ffffffffffffffc3c3fc0ff0fc3fc3ff003fc303ff003f +ffffff00ffffffc000fffcfffffffff0000fffcfffffff3cf3f3f3fcfffff3ff +3fc3fc3fffff3ffffcffff3ffffc03fffffffffcfffcff3ffff3ffffffffffcf +fffff3fff3fff0fc003ff303f3cffcff0ff0ffffcffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffffff +fffffff3ffff3ffffffffffffff3ffff3ffffffffffffffcffffffffffffff3f +ffffffffffffff3ffffffffffffffcfffffffffffffff3fffcffffffffffffff +f3fffcfffffffffffffff3ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffc3ffffffffffffffc303f0c3f0fc3c000ffc3fc0c0fc3c3f +fffffc3c3fffff0ffc3ffcf000003fffffffffcffffffffcf3f3f3fc000003fc +3fcfff3ffffc3ffffcffff3ffffcf03ffffffffcfffcff3ff3f3ffffffffffcf +fffff33ff3fff3ccff3fc330f30ff0ff3ffcfff3cfcffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffffff +fffffff3ffff3ffffffffffffff3ffff3ffffffffffffffcffffffffffffff3f +ffffffffffffff3ffffffffffffffcfffffffffffffff3fffcffffffffffffff +f3fffcfffffffffffffff3ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffff0fffffffffffffffc0f3c3f0f0fc3fc3fffc3fc3f0f0fc3f +fffffcff3ffffc3fff0ffcff3fffffffffffffcffffffff0f3f3f3fcfffff3fc +ff0fff3ffffcfffffcffff3ffffcff03fffffffcfffcff3fc3f3ffffffffffcf +fffff0fff3ffc33c003f0f3cf33ff3fc3ffcfff3cfc3fcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffffff +fffffff3ffff3ffffffffffffff3ffff3ffffffffffffffcffffffffffffff3f +ffffffffffffff3ffffffffffffffcfffffffffffffff3fffcffffffffffffff +f3fffcfffffffffffffff3ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffc3fffffffffffffffc3ffc3f0f0fc3fc3fffc3fc3f0f0fc3f +fffffcff3ffff0ffffcffcff00003fc00003ffcffffffff0f00003fcfffff3fc +ff3fff3ffff0fffffcffff3ffffcfffffffffffcfffcff3f0ff3ffffffffffcf +fffff3fff3ff00ff3ffffcfff03ff3fcfffcffc3cff0fcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffffff +fffffff3ffff3ffffffffffffff3ffff3ffffffffffffffcffffffffffffff3f +ffffffffffffff3ffffffffffffffcfffffffffffffff3fffcffffffffffffff +f3fffcfffffffffffffff3ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffff0ffffffffffffffffc3ffc3f0f0fc3fc3fffc3fc3f0f0fc3f +fffffc3f3fffffc0ffcffc0cf3cf3fcffff3ffcfcfffffccfff3fffcfffff3fc +fc3ffc3fffc3fffffcffff3ffffcfffffffffffcfff0ff3c3ff3f3ffffff000f +ffffffffc3fc333c003f00003cfff3f0fff0ffcfcffcfcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffffff +fffffff3ffff3ffffffffffffff3ffff3ffffffffffffffcffffffffffffff3f +ffffffffffffff3ffffffffffffffcfffffffffffffff3fffcffffffffffffff +f3fffcfffffffffffffff3ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffc3ffffffffffffffffc3ffc3f0f0fc3fc3fffc3fc3f0fc303f +ffffff003fffff3c3fcff0f3c30f3fcffff3ffcfcfffff3cfff3cffc000003fc +f0fffcffff0ffffffcffff3ffffcfffffffffffcfff3ff30fff3f3fffffcffc0 +ffffffffcffff3f0ff3ff3f3fcfff3c3fff3ff0fcffc3cfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000000 +00000003ffff0000000000000003ffff0000000000000000fffffffffffffcff +ffffffffffffff3ffffffffffffffc0000000000000003fffc00000000000000 +03fffc0000000000000003ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fff0003fc0fffffffffffc3fff0c3f0303fc3fffc3fc3f0ff0c3f +fffffffcffffff3f3f0fc3ff0f3f3fcffff3ffccc3fffffcfff3cffcfffff3ff +03ffc0fff03ffffffc00003ffffcfffffffffffcffc3ff03fff330fffffcffcc +0fffffff0ffff3c30c3ff3c3f03ffc0fff03fc3fcfff3cffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +cfffffffffffffffffff3ffffffffffffffffffcfffffffffffffffffffffcff +ffffffffffffff3fffffffffffffffffffffffcfffffffffffffffffff3fffff +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fff0003fc0fffffffffffc3fffc0ffc0c3ff00ffc3fc3f0fffc3f +fffffff0ffffff0f3c3ffffc3c3c3fcffff3ffc3f0000ffcfff003fcfffff3ff +fffc0fff03fffffffffffffffffcffffff000000ff0fff0ffff0fc0003fcff0f +c3fffffc3ffff3ffc0ffc00ff30ffffff03fffffcffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +cfffffffffffffffffff3ffffffffffffffffffcfffffffffffffffffffffcff +ffffffffffffff3fffffffffffffffffffffffcfffffffffffffffffff3fffff +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffffffffffffffffffffffffffffffffffffffffffffff0f0ff +ffffffc3ffffffc000fffffff0fcffcffff3fff3fffffff0fc03f3fcfffff3ff +fffffffffffffffffffffffffffcfffffffffffffffffffffffcffffffff003f +ffffffc0fffff3ff0c3ffcc3c3c3fffffffffffc0ffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +f3ffffffffffffffffff3ffffffffffffffffff3fffffffffffffffffffffcff +ffffffffffffff3ffffffffffffffffffffffff3ffffffffffffffffff3fffff +fffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffffffffffffffffffffffffffffffffffffffffffffffc03ff +fffffc0fffffffffffffffffffc0ffc00003ffffffffff03c0fff0fc000003ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffff3f03f0303f30ff0fffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +f3ffffffffffffffffff3ffffffffffffffffff3fffffffffffffffffffff3ff +ffffffffffffff3ffffffffffffffffffffffff3ffffffffffffffffff3fffff +fffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fcffffffffffffffffff3fffffffffffffffffcffffffffffffffffffffff3ff +ffffffffffffff3ffffffffffffffffffffffffcffffffffffffffffff3fffff +ffffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffff3ff3fffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fcffffffffffffffffff3fffffffffffffffffcffffffffffffffffffffff3ff +ffffffffffffff3ffffffffffffffffffffffffcffffffffffffffffff3fffff +ffffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff0ff0fc3ffc0000ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff3fffffffffffffffff3fffffffffffffffff3fffffffffffffffffffffcfff +ffffffffffffff3fffffffffffffffffffffffff3fffffffffffffffff3fffff +ffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffffffffffffffffffffffffffffffffffffffffffffffffffc +000000ffc3fcfcffffffc3ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffc000000000000 +000000000000000000000000000000000000000000000000003fffffffffcfff +ffffffffffffffcffffffffffc00000000000000000000000000000000000000 +000000000000000000000000ffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffffffffffffffffffffffffffffffffc3fffffffffffffffff +fffc3ffff3c0000fffff0fffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffff +ffcfffffffffffffffff3ffffffffffffffffcffffffffffff3fffffffffcfff +ffffffffffffffcffffffffffcffffffffffffffcfffffffffffffffff3fffff +fffffffffffcfffffffffffcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffc3fffffffffffffffffffc3ffffffffc3fffffff +fff0fccfffffcffffffc3fffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffcfff +fffffffffffffff3fffffffffcffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffff03fffffffffffffffffffc3ffffffffc3fffffff +ffc3fccfffffcffffff0ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffff3fff +fffffffffffffff3fffffffffcffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffffffffffcc3ffffff0c3fc00fff00fc3f0ff00ffc3fffffff +ffcfffffffffcfffffc000ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffffc3fff +fffffffffffffff3fffffffffcffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffc3ffffff030fffc3fc3f3c3f3fc3c3c000ffffff +ff0ffffc03000003ff0ffc3fffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffcffff3fffffff +fff3ffffffffffffffffffffffffcfffc007ff1ffe3ffcffff3ffffffff3ffff +fffffffffffffff3fffffffffcffff3ffffffffff3ffffffffffffffffffffff +ff3fffc007ff1ffe3ffcfffcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffc3ffffff0fc3ffc3f0fffc3cff0fc3fc3fffffff +ff3ffffff3ffcffffc3fff0fffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffcffff3fffcfff +fff3ffffffffffffffffffffffffcfffcfe5ff0ffd3ff47fff3fffffffcfffff +fffffffffffffffcfffffffffcffff3fffcffffff3ffffffffffffffffffffff +ff3fffcfe5ff0ffd3ff47ffcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffc3ffffff0fc3c003f0fffc03ff0003fc3fffffff +ff3ffffff3ff03fff0ffffcfffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffcffff3fffffff +fff3ffffffffffffffffffffffffcfffcffd7f1bf93ff23fff3fffffffcfffff +fffffffffffffffc3ffffffffcffff3ffffffffff3ffffffffffffffffffffff +ff3fffcffd7f1bf93ff23ffcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffc3ffffff0fc30fc3f0fffc30ff0ffffc3fffffff +ff3ffffff3ff33ffffc0ffcfffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffcffff202fcfe4 +13f202fffe41fc80bf90bf90bf808fffcffe3f27f63fe76fff3ffffff03fffff +ffffffffffffffffcffffffffcffff202fcfe413f202fffe41f202fe42fe42fe +023fffcffe3f27f63fe76ffcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffc3ffffff0fc30fc3f0fffc3c3f0ffffc3fffffff +ff0ffffff3fc30ffff3c3fcfffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffcffff1b8fcfcb +e3f1b8fffcbffc7e3f6e7f6e7f2f8fffcfff3f33f33fdb9fff3fffffcfffffff +fffffffffffffffff0fffffffcffff1b8fcfcbe3f1b8fffcbff1f8fdb9fdb9fc +be3fffcfff3f33f33fdb9ffcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffc3ffffff0f0f0f03fc3f3c3f0fc3f3fc3fffffff +ffc3fffff3f0fc3fff3f3f0fff03ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffcffff3fcfcfcf +f3f3fcfffc6ffcff3f3f3f3f3f3fcfffcfff3f36e73fcfcfff3ffff03fffffff +ffffffffffffffffff0ffffffcffff3fcfcfcff3f3fcfffc6ff3fcfcfcfcfcfc +ff3fffcfff3f36e73fcfcffcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffc3ffffff003fc0c0ff00fc3f03f00fff00ffffff +fff03fffc3c3ff0fff0f3c3fff03ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffcffff3fcfcfcf +f3f3fcfffe42fcff3f003f003f3fcfffcffe3f39db3f800bfc00000fffffffff +fffffffffffffffffff000000cffff3fcfcfcff3f3fcfffe42f3fcfc00fc00fc +ff3fffcffe3f39db3f800bfcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffffffffff0fffffffffffffffffffffffffffffff +ffff03ff0cffffffffc000ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffcffff3fcfcfcf +f3f3fcfffff8fcff3f2fff2fff3fcfffcffd7f3c8f3f6fe7ff3fffffffffffff +fffffffffffffffffffffffffcffff3fcfcfcff3f3fcfffff8f3fcfcbffcbffc +ff3fffcffd7f3c8f3f6fe7fcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffff0fffffffffffffffffffffffffffffff +fffffffc3f000003ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffcffff3fcfcfcb +d3f3fcfffdb8fcbe3f5fff5fff2f4fffcfe5ff3d1f3f3ff3ff3fffffffffffff +fffffffffffffffffffffffffcffff3fcfcfcbd3f3fcfffdb8f2f8fd7ffd7ffc +bd3fffcfe5ff3d1f3f3ff3fcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffcffff3fcfcfe0 +23f3fcfffd02fc80bf907f907f808fffc007ff3fff3e7ff6ff3fffffffffffff +fffffffffffffffffffffffffcffff3fcfcfe023f3fcfffd02f202fe41fe41fe +023fffc007ff3fff3e7ff6fcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff0fffffffffffffff3ffffffffffcfffffcfff33f +fffff3ffff3ff3fffffffffffffffffffffffffffffffffffffffffffffff3ff +fcfffffffffffcfff3ffff3fffffffff3ffffffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffff +e3fffffffffffcffffffffffffffffffffffffffffffffffff3fffffffffffff +fffffffffffffffffffffffffcffffffffffffe3fffffffffff3ffffffffffff +fffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffc3f3fc00000003ff3ffffffffffcfffffcfff33f +cffff3ffff3ff3ffffffffffffffffffffffffffffffffffffff3ffffffff3ff +fcfffcfffffffcfff3ffff3fc000ffff3ffffc00000000fcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffdf +d7fffffffffffcffffffffffffffffffffffffffffffffffff3fffffffffffff +fffffffffffffffffffffffffcffffffffffdfd7fffffffffff3ffffffffffff +fffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffff0000003fffff3f3ffff3f3fffff3ffc3fc00f0000fffcffffff +cffff3fffc33f3fffffc00fffffffffffffc3ffffff0ffffffff3ffffffff3ff +fcfffcfffffffcf00003f003cffcffff003fffff3f3ffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffd0 +1fffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffffff +fffffffffffffffffffffffffcffffffffffd01fffffffffffffffffffffffff +fffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffffffffffffffffffffffffff0fffffffffffffff +ffffffc3fffffffff0fffffcffc3ffc000003fc000ff0fcfcffcfffc0003ffff +0ffff3fffcf3f303ffc0cc0ffc0000003fff0ffffffc0ffffffc3f0003f00003 +fcfffcfffffffc3ff3ffff3fcffcff003fffffc000003cfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffffff +fffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffc00fffffffffffffffffffffffffffffff0fffffffffffffff +ffffffc3ffffffffc3f33ffcffcfffcf3f3f3fff3fffc3cfcffcfffff3ffffff +3f000003f0f3f033ff0fcfc3fffffff0ffffcfffffffc3fffffcffffffffff3c +000ffcffffffcccc000fff3fcfc0fffcffffffcf3f3f3cffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffffff +fffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fff0f03ffffffffffffffffffffffffffffff0fffffffffffffff +ffffffc3ffffffff0ff33ffcff0fffcf3f3f3ffc3fffffcfcffcfffff3fc00ff +3ffff3fff3f303f3fc3fcff3ffffffc3fffffffffffffffff3fcffffffffff3f +fcfffcffffffccfff3ffc000cffffffcfffc3fcf3f3f3cfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffffff +fffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffc3fffffffffffffff03fc303ffffffc00ff00f30c3f003fc +303ff003ffffffff3fffff3cff3cffcf3f3f3ffcfff3ffc00c00003ff3ffffff +3ffff3ffc3f033f3fcff0ff0ffffff0fffc3ffffcfffffffc3fcfffffffc3c3f +fcfffcffffff0cc00000f3f3c000fff003c0ffcf3f3f3cffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffffff +fffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffff0fffffffffffffffc30fc0c0ffffff0f0fc3c30c30fff0fc +0c0fc3c3fffffffc3fffff3cfc3c3fc000003ffcfff3ffcfcffff3ffc3ffffff +3ffff3ff3303f3f3f0ff3ffcfff0fc3ffff0ffff0fffffff0ffcffffffff0cfc +3cfffcffffff3cfffffff0c3ccfcffc3fc0fffc000003cfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffffff +fffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffff03fffffffffffffff0fc3c3f0fffffc3f0f0fc30c30fff0fc +3f0f0fc3fffffffcffffff3cfcff3fffcffffff0fff3ffcfcffff3ffcfffffff +3ffff3fff3f3f3f3f3fc3ffcfffc30fffffcfffc3ffffffc3ffcffffffffc0ff +0cfffcfffffffcfc000ffccfccfcff0fc0ffffffcffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffc000000000000 +000000000000000000000000000000000000000000000000003fffffffffffff +fffffffffffffffffffffffffc00000000000000000000000000000000000000 +000000000000000000000000ffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffff0fffffffffffffff0fc3c3f0fffffc3f0f00030c30f000fc +3f0f0fc3fffffffcfffffc3cf0ff0c00000003f3fff3ffcfcc00003fcfffffff +3ffff3fff3f3f3c3f3fcfffcffff03fffffffff0fffffff0fffcfffffffff3ff +ccfffcfffffffcfcffcfc000cc30ffff0cfffc00000000fcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffff3ffffffffffffffffffffffffcfffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffff +ffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffc3ffffffffffffff0fc3c3f0fffffc3f0f0fff0c30c3f0fc +3f0f0fc3fffffffcfffffcfcc3ffcfff3ff3ffc3fff3ffcfcffff3ff0fffffff +33fff3fff3f3f3fff3f0fff0ffffc3ffffffffc3ffffffc3fffcfcffffffc0ff +fcfffcffff3ffcfc000fff3fcf33fffc3cffffff3ff3fcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffff3ffffffffffffffffffffffffcfffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffff +ffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffc3ffffffffffffff0fc3c3f0fffffc3f0f0fff0c30c3f0fc +3f0f0fc3fffffffc3ffff0fc0ffcfffcffc3fffff003ffc00f0ff3ff3fffffff +0fffc3fff3f3f3fff3c3fff3fffff0ffffffff0ffffffc0ffffcfcffffffcc3f +fcfffcfffc3ffcfcffcfff3fcf03fff0fcfffffcffc3fcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffff3ffffffffffffffffffffffffcfffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffff +ffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fff0f03fc0fffffffffffc30fc3f0ffffff0c0fc3f30c30c3c0fc +3f0fc303ffffffff0ffffffcfff0fff0030fffffcff03fffffc3f3ff3ff3ffff +cfffcffff3f3fffffc0fff03fffffc3ffffff03fffffc0fffffccc3fffff0f0f +fcfffcfff0fffcfc000ff003cfcffff3fffffff0030ffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffff3ffffffffffffffffffffffffcfffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffff +ffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffc00ffc0ffffffffffff03fc3f0ffffffc30ff00f0c30f0303c +3f0ff0c3ffffffffc0ffffc03ff3fffff03fffffcfc30ffffff3f3fc3ff0ffff +ffff0ffff3f3fffcfffff03fffffff3fffff03fffff00ffffffc3f0000fc3fcf +fcffff3f03fffcfcffcfff3fcf03fff0fffffffff03ffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffff3ffffffffffffffffffffffffcfffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffff +ffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffc0ff00f0003ffff0300fffff00ffffffffff3fcfffc003f +fffc3ffff3f0fff0ffffffffffffffffffc03fffffffffffffff3ffffff0ffff +fcffffc03ffffcfcffcfff3fcf30fffc0000ffff0300fcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffff3ffffffffffffffffffffffffcfffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffff +ffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff003ffc0fffffffffffffff03ffffffffff +fffffffff3fc0003ffffffffffffffffffffffffffffffffffffffffffffffff +c0fffffffffffcfcff0fff3fcc3c3fffffffff003ffc0cfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffff3ffffffffffffffffffffffffcfffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffff +ffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffff3ffffffffffffffffffffffffcfffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffff +ffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffffffffffffffffffffffffffffff3ff33ffffffffffffffff +fffffff3fffff3ffc3fffffffffff33ffffcfcffff3fffffffcfffccffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffcffffffffcffffffcfffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffff3ffffffffffffffffffffffffcfffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffff +ffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffffffffffffcfffffff3fff3fffff3ff33fffffffffcfffcff +fffffff0000cf3fff03ffffcfffcf33c00fcf0ffff3fffffffcfffccffffffff +fffffffffffffffffffffffffffffc00003fffffffffffffffffffffffffffff +fffffffffcffffffff03fffffcfffffffffffffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000 +000000000000000000ffffc00000000000000000000003ffffffffffffffffff +ffffffffffffffffffffffffffffffffc0000000000000000000000cffffc000 +00000000000000000003ffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffffffffffffcfffffff3fff3fffff3fffffffffffffcfffcff +fffffff3f3fcf3ffff03fffcfffcfffffffcf3ffff3ffcffffcffcffffffffff +ffffffffffffffffffff0000003ffffff0fffffc00fffffffffffffc3ffffff0 +fffffffffc00fffffc30fffffcfffffffffffffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff +fffffffffffffffffcffffcffffffffffffffffffffff3ffffffffffffffffff +ffffffffffffffffffffffffffffffffcffffffffffffffffffffffcffffcfff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffffffffffffcfffffff3fff3fffff3fffffffffffff0fffcff +ffffffc3f3fcf3fffffffff0fffcfff00030000fff3ffc3fffcffc3fffffffff +ffffffffffffffffffffffff0fffffff0fffffc0cc0ffc0000003fff0ffffffc +0ffffffc00fffffff0fc0fff0003f0ffffcff0fffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff +fffffffffffffffffcffffcffffffffffffffffffffff3ffffffffffffffffff +ffffffffffffffffffffffffffffffffcffffffffffffffffffffffcffffcfff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffffffffffffcfffffff3fff3ffc000003ffffffffff3f00000 +ffffffcff3fcf3fc0000fff3f00000fffff3f3ff0000ff0fc0003f0fffffffff +fffffffffffffffffffffffc3f33fffc3fffff0fcfc3fffffff0ffffcfffffff +c3fffffff3ffffff03ffc0fffcfffc3fff03cf3ffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff +ffe07ff3fffffffffcffffcfffffff81fff3fffffffff3ffffffffffffffffff +ffffffffffffffffffffffffffffffffcfffffff81fff3fffffffffcffffcfff +ffff81ffcffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffffffffffffcfffffff3fff3fffff3ff3ffffffffff3fffcff +ffffffcfc03cf3fffff3fff3fffcfffc00c3f3ffff3f3fcfffcfcfcfffffffff +fffffffffffffffffffffff0ff33fff0fffffc3fcff3ffffffc3ffffffffffff +fffff3fff3fff0f03c003c0ffcffff0fff30cf3ffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff +ffcff3f3fffffffffcffffcfffffff3fcff3fffffffff3ffffffffffffffffff +ffffffffffffffffffffffffffffffffcfffffff3ff3f3fffffffffcffffcfff +ffff3fcfcffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffffffffffffc03fffff3fff3fffff3ff3fcffffffff3fffcff +ffffff0fcf3cf3ffffcffff3fffcffffff33f3ffff3f3fc3ffcfcfc3ffffff0f +0cc30fc00ff0c3fffffffff3ffffff0ffffffcff0ff0ffffff0fffc3ffffcfff +ffffc3ffc00f03fffffffffffcffffcffc3c30fff3fffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff +ffcffff3fffffffffcffffcfffffff3ffff3fffffffff3ffffffffffffffffff +ffffffffffffffffffffffffffffffffcfffffff3ffff3fffffffffcffffcfff +ffff3fffcffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffffffffffffcf03ffff3fff3ffffc3ff3ff0000003f3fffcff +ffffff0fcf3cf3ffff3ffff3fffcfffffff0003ffc3f3ff3ff0fcff3ffffff0c +0c30c3ffc3f030ffffffffc3ffffc0000003f0ff3ffcfff0fc3ffff0ffff0fff +ffff0fff0ff03fffc00003ffc0fffffffcff0ffffc0000ffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff +ff00f3f3f90bfffffcffffcffffffc03cff3f90bfffff3ffffffffffffffffff +ffffffffffffffffffffffffffffffffcffffffc03f3f3f90bfffffcffffcfff +fffc03cfcfe42ffffff3ffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffffffffffffcff03fff3fff3ffffcfff3ffffffffff3fffcff +fffffccf033cf3fffcfffff3fffcfffc00f3f3fffcff3ff3ff3fcff3ffffff03 +cc30c3ffc3f0fc3fffffffcffffffffc3ffff3fc3ffcfffc30fffffcfffc3fff +fffc3ffc3f03ffffffffcfff3cfffffff0ffc3fffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff +ffcff3f3f6e7fffffcffffcfffffff3fcff3f6e7fffff3ffffffffffffffffff +ffffffffffffffffffffffffffffffffcfffffff3ff3f3f6e7fffffcffffcfff +ffff3fcfcfdb9ffffff3ffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffffffffffffcfffffffffff3ffffcfff3ffffffffff3fffcff +ffffffcc303cf3fff00ffff3fffcfffffff3f3fffcff3fffff3fcfffffffff0f +fc30c3c003f0fc3fffffffcffffffff0fffff3fcfffcffff03fffffffff0ffff +fff0fffffc33ffffffff3fff3cffffffc3fff0fffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff +ffcff3f3f3f3fffffcffffcfffffff3fcff3f3f3fffff3ffffffffffffffffff +ffffffffffffffffffffffffffffffffcfffffff3ff3f3f3f3fffffcffffcfff +ffff3fcfcfcfcffffff3ffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffffffffffffcffffffffffc3ffff0fff3ffffffffff3fc00ff +ffffffcffcfcf3ffc3cffff3fc00fffffff3f3fff0ff3ffffc3fcfffffffff0f +fc30c30fc3f0fc3fffffffcfffffffc3fffff3f0fff0ffffc3ffffffffc3ffff +ffc3fffff0f3fffffffcffff3cfffffffffffc3ffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff +ffcff3f3f003fffffcffffcfffffff3fcff3f003fffff3ffffffffffffffffff +ffffffffffffffffffffffffffffffffcfffffff3ff3f3f003fffffcffffcfff +ffff3fcfcfc00ffffff3ffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffffffffffffcffffffffffcfffff3ffc3ffffffffff3f3fc0f +ffffffcff0fff3ff0fcffff3f3fc0ffc00f0003ff3ff3ffffcffcfffffffff0f +fc30c30fc3f0fc3fffffffc3ffffffcffffff3c3fff3fffff0ffffffff0fffff +fc0fffffc3f3ffffc00003ff3cfffcffffffff0ffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff +ffcff3f3f2fffffffcffffcfffffff3fcff3f2fffffff3ffffffffffffffffff +ffffffffffffffffffffffffffffffffcfffffff3ff3f3f2fffffffcffffcfff +ffff3fcfcfcbfffffff3ffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffffffffffffcffffffffff0ffffc3ffcfffffffffff333fcc3 +ffc0ffcff3fff3fc3fcffff333fcc3fcfcf3f3ffc3fc3ffff0ff0fffffffff0f +fc30c30f03f0f0fffffffff0ffffffcffffffc0fff03fffffc3ffffff03fffff +c0ffffffcfffffffcffff3ffc0fffcffffffffc3fffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff +ffcff3f3f5fffffffcffffcfffffff3fcff3f5fffffff3ffffffffffffffffff +ffffffffffffffffffffffffffffffffcfffffff3ff3f3f5fffffffcffffcfff +ffff3fcfcfd7fffffff3ffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffffffffffffcfffffffffc3ffff0fffcfffffffffff0f3f0f0 +ffc0ffcfc3fff3f0ffc3fff0f3f0f0fcfcf3f3ff0ffcffffc3ff3fffffffff0f +fc30c3c0c0f003fffffffffc0fffffc3fffffffff03fffffff3fffff03fffff0 +0fffffffc3ffffffcffff3fffc3ff0fffffffffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff +ffcff3f3f907fffffcffffcfffffff3fcff3f907fffff3ffffffffffffffffff +ffffffffffffffffffffffffffffffffcfffffff3ff3f3f907fffffcffffcfff +ffff3fcfcfe41ffffff3ffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffffffffffffcffffffffc0ffffc3ff00fffffffffffcfc03ff +fffcffcf0ffff3fffff003fcfc03fffcfcf3f3ffffc0fffffff03fffffffffff +fffffffffff0ffffffffffffc0fffff03fffffffffffffffffffffc03fffffff +fffffffff00003ffcffff3ffff0003fffffffffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff +fffffffffffffffffcffffcffffffffffffffffffffff3ffffffffffffffffff +ffffffffffffffffffffffffffffffffcffffffffffffffffffffffcffffcfff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffc3ffcc3fff03fffffffffffffffffc00f0000fffffffffffffffffffffffff +fffffffffff0ffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffc00003fffffffffffffffffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff +fffffffffffffffffcffffcffffffffffffffffffffff3ffffffffffffffffff +ffffffffffffffffffffffffffffffffcffffffffffffffffffffffcffffcfff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff +fffffffffffffffffcffffcffffffffffffffffffffff3ffffffffffffffffff +ffffffffffffffffffffffffffffffffcffffffffffffffffffffffcffffcfff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffffffffffffffffffff3ffffffffff3fffffffffffffff3fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff +fffffffffffffffffcffffcffffffffffffffffffffff3ffffffffffffffffff +ffffffffffffffffffffffffffffffffcffffffffffffffffffffffcffffcfff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffff3ffffffff3ffffffffff3ffff3ffffffffff3fff +ff00003fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff +fffffffffffffffffcffffcffffffffffffffffffffff3ffffffffffffffffff +ffffffffffffffffffffffffffffffffcffffffffffffffffffffffcffffcfff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffff3ffffffff3fffff003c0003ff0ffffffffff3fff +fffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff +fffffffffffffffffcffffcffffffffffffffffffffff3ffffffffffffffffff +ffffffffffffffffffffffffffffffffcffffffffffffffffffffffcffffcfff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffff3ffffff0000ffff3f3ff3ffffcffffff00000000 +ffffc3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff +fffffffffffffffffcffffcffffffffffffffffffffff3ffffffffffffffffff +ffffffffffffffffffffffffffffffffcffffffffffffffffffffffcffffcfff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffff3fffffffcffffff3f3ff3ffffc3ffc3fffff3fff +ffff0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff +fffffffffffffffffcffffcffffffffffffffffffffff3ffffffffffffffffff +ffffffffffffffffffffffffffffffffcffffffffffffffffffffffcffffcfff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffff3fffffffcff003f3f3ff3fffff3fc0ffffff3fff +fffc3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000 +000000000000000000ffffc00000000000000000000003ffffffffffffffffff +ffffffffffffffffffffffffffffffffc00000000000000000000000ffffc000 +00000000000000000003ffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffff3fffffffcffffff00300000fff0c0fffffc03fff +fff0003fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffcffffffcfffffffffffffffffcfffffff3ffffcfffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffcffffffcffffffffffffffff +fcffffffcfffffcfffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffff3fffffff0ffffff3f3fffcffffc0ffffff0f0fff +ffc3ff0fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff3fffffff3ffffffffffffffff3fffffff3ffffcfffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff3fffffff3fffffffffffffff +f3ffffffcfffffcfffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffff3fffffff3ffffff3f3fffcffff0fffffff3fcfff +ff0fffc3ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff3fffffff3ffffffffffffffff3fffffff3fffff3ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff3fffffff3fffffffffffffff +f3ffffffcffffff3ffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffff3fffffff3ffffff3f300000ffc3fffffff3fcfff +fc3ffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff3fffffffcffffffffffffffff3fffffff3fffffcffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff3fffffff3fffffffffffffff +f3ffffffcffffffcffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffff3fffcffc3ffffff3f3fffcfff0ffffffff0fcfff +fff03ff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fcffffffffcfffffffffffffffcffffffff3ffffff3fffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffcffffffffcfffffffffffffff +cfffffffcfffffff3fffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffff3fff0ffcfffffff003c3fcfff3ffffffffc00fff +ffcf0ff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fcfffffffff3ffffffffffffffcffffffff3ffffff3fffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffcffffffffcfffffffffffffff +cfffffffcfffffff3fffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffff3ffc3ffcffcffffffff0fcfff3ffffffffff3fff +ffcfcfc3ffc0ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +f3fffffffff3ffffffffffffff3ffffffff3ffffffcfffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffff3fffffffff3ffffffffffffff +3fffffffcfffffffcfffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffcfc0fff0ffc3fffffffcfcfff0fffffffffc3fff +ffc3cf0fffc0ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +f3fffffffff3ffffffffffffff3ffffffff3fffffff3ffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffff3fffffffff3ffffffffffffff +3fffffffcffffffff3ffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffffffffffff00ffff3fff000fffffffcfffc00003ffff0ffff +fff0003fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +f3fffffffffcffffffffffffff3ffffffff3fffffff3ffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffff3fffffffff3ffffffffffffff +3fffffffcffffffff3ffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffffffffffffffffffffffc0ffffffffffff03ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +cffffffffffcfffffffffffffcfffffffff3fffffffcffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffcffffffffffcfffffffffffffc +ffffffffcffffffffcffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +cfffffffffff3ffffffffffffcfffffffff3ffffffff3fffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffcffffffffffcfffffffffffffc +ffffffffcfffffffff3fffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffffffffffffffff33ffc3ffffffffffffffffffff +ffffffffc3fffffffffffffffc3ffffff3ffcffffcfffffffff3fff33fff0fff +ffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff3fffffff3ffffffffffcfffff3fffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +cfffffffffff3ffffffffffffcfffffffff3ffffffffcfffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffcffffffffffcfffffffffffffc +ffffffffcfffffffffcfffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffffffffffffffffffff3ffff33fff03fffffcfff3ffffffff0 +0000fffff03fffffffffffffff03fffff3ffcffffcff0003fff3fff33fffc3f3 +fc00000003ff3fffffffffffffff3fff3fffffffffffffffffffffffffffffff +ffffff3fffffff3ffffff3fffcfffff3fffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +3fffffffffffcffffffffffff3fffffffff3ffffffffcfffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff3fffffffffff3ffffffffffff3 +ffffffffcfffffffffcfffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffffffffffffffffffff0ffffffffff03ffffcfff3fffffffff +ffc3ffffff03fffcfffffffffff03ffff3c0000fc00f3ff3fff3ff3ffffff3f3 +ffff3f3fffff3ffc3ffffc00ffff3fff3fffffffffffffffffffffffffffffff +ffffff003fffff3ffcfff3fffcfffff3ffffff3ffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff3fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffffffffffffffffffffcffffffffffffffffcfff3fffffffff +fc3ffffffffffffcffff3ffffffffffff0ffcffffcff3ff3fff3ff0ffffcffc3 +ffc000003fc000ff0fffc0cc0ffc3fff3ffffffffffff0ffffffffffffffffff +ffff003fffffff3ffc3fc3fffcfff0000fffff3fffcffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffff0ffffffffffffffffc3ffc3fffffffffffcfff3fffffffff +f0fffffffffffffcffff0fffffffffff3330003ffcff3f03f0000fc3fffcffcf +ffcf3f3f3fff3fffc3ff0fcfc3fcfc00003ffffffffff0ffffffffffffffffff +fffffcffffff0000ff0fcfc00000ffcfffffff3fffc3fcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffc0fffffffffffffffff3fc0fffc0000ffc00000003fffffff +c3fffffc0000fffcffffc3ffc0000fff33ffcfff00033ffffff3f3f3fffcff0f +ffcf3f3f3ffc3ffffffc3fcff3fcffff3ffffffffffff0ffffffffffffffffff +fffffcfffc3fff3f3fcfcffffcffffcff003ff3ffff0fcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0 +03fffffffffc00ffffffffff003fffffff003fffffff003fffffffffffffffff +fffffffffffffffffffffffffffffffffffff003fffffffff003ffffffffff00 +3ffffffc00ffffffff003fffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffff30fffffffffffffffff0c0ffffffffc3fffcfff3ffffffffc +3ffffffffffc3ffcfffff3ffffffc3fc33000003cfcf0003fff3f3f0ff3cff3c +ffcf3f3f3ffcfff3fffcff0ff0fcffff3fffffffc30ff0c0ffc0ff0c0ffc03ff +fffff003c0ffff3f3fc3cffffcffffcfffffff3ffffcfcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0f +fc3fffffffc3ff0ffffffff0ffc3fffff0ffc3fffff0ffc3ffffffffffffffff +ffffffffffffffffffffffffffffffffffff0ffc3fffffff0ffc3ffffffff0ff +c3ffffc3ff0ffffff0ffc3ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffcf0fffffffffffffffffc0ffffffffff3fffcfff3fffffff00 +00000fffffff3ffcfffff0fffffff3fcf3ffffffc30f33f3ffc3f3fcff3cfc3c +3fc000003ffcfff3fff0ff3ffcfcffff3fffffffc0c3f0303f0c3f0303f0f0ff +ffffc3fc0ffffc3f3ff3cffffcffff0fffffff3ffffc3cffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcff +ffcfffffff3ffff3ffffffcffffcffffcffffcffffcffffcffffffffffffffff +fffffffffffffffffffffffffffffffffffcffffcffffffcffffcfffffffcfff +fcffff3ffff3ffffcffffcffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fff3f0fffffffffffffffff0fffffffffff3fffcfff3fffffffff +f0ffffffffff3ffcfffffcfffffff3fff3f0003ff33f33f3ffcff3fcff3cfcff +3fffcffffff0fff3fff3fc3ffcfcffff3fffffffc3f0f0fc3c3f0f0fc3c3f0ff +ffff0fc0fffffcff3ff3cffffcffff3fffffff3fffff3cfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcff +ffcfffffff3ffff3ffffffcffffcffffcffffcffffcffffcffffffffffffffff +fffffffffffffffffffffffffffffffffffcffffcffffffcffffcfffffffcfff +fcffff3ffff3ffffcffffcffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fff0003fffffffffffffffc3fffffffffff3fffcfff3fffffffff +c3ffffffffff3ffcfffffcfffffff3fff3f3ff3f000330c3ffcff3fffc3cf0ff +0c00000003f3fff3fff3fcfffcfcffff3fffffffc3f0f0fc3c3f0f0fc3c000ff +ffffff0cfffffcff3fffcffffcffff3fffffff3fffff3cffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcff +ffcffffffc3ffff3ffffffcffffcffffcffffcffffcffffc3fffffffffffffff +fffffffffffffffffffffffffffffffffff0ffffcffffffcffffcfffffffcfff +fcffff3ffff0ffffcffffcffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fff0003fffffffffffffff0fffffffffffc3fffcff0ffffffffff +0ffffffffffc3ffc3cfffcffffffc3fff3f0003ffcff3ccfff0ff3fffcfcc3ff +cfff3ff3ffc3fff3fff3f0fff0fcff003fffffffc3f0f0fc3c3f0f0fc3c3ffff +fffffc3cfffff0ff3fffccfffcfffc3fffffff0f3fff3cfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0f +fc0ffffffcc3ff03ffffffc0ffc0ffffc0ffc0ffffc0ffc33fffffffffffffff +fffffffffffffffffffffffffffffffffff30ffc0ffffffc0ffc0fffffffc0ff +c0ffff03ff0cffffc0ffc0ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffff0ffffffffffffffff3fffffffffff0ffffcfffffffffffff +3ffffffffff0ffff30ffffffffff0ffff3f3ff3ffcff3c0fff3ff3fff0fc0ffc +fffcffc3fffff003fff3c3fff3fcfcff03ffffffc3f0f0fc3c3f0f0fc3c3ffff +fffff0fcfffff3ff3fffc3fff0fffcffffffffcc3ffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf0 +03cffffffcfc00f3ffffffcf003cffffcf003cffffcf003f3fffffffffffffff +fffffffffffffffffffffffffffffffffff3f003cffffffcf003cfffffffcf00 +3cffff3c00fcffffcf003cffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffff0ffc0ffffffffffff3ffffffffffc3ffffcfffffffc0ffff +3fffffffffc3ffff03fffffffffc3ffff3f0003fc00f3f3ffc3fc3fffffcfff0 +fff0030fffffcff03ffc0fff03fcccff30ffffffc3c3f0fc3f0c3f0fc3f0fcff +fffff3ffffffc3fc3ffff3fff3fffcffcfffffc0fffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcff +ffcffffffcfffff3ffffffcffffcffffcffffcffffcfffff3fffffffffffffff +fffffffffffffffffffffffffffffffffff3ffffcffffffcffffcfffffffcfff +fcffff3ffffcffffcffffcffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffff0ffc0ffffffffffff0fffffffffc0ffffff3ffffffc0ffff +0ffffffffc0fffffcfffffffffc0fffff3f3ff3ffcff3c0ff0ffcfffffc03ff3 +fffff03fffffcfc30ffffff03ffc3cfc3c3fffffc00ff0fc3fc0ff0fc3fc03ff +fffff0ffffff0ffcffffffffc3fff0ffc3fffff3fffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcff +ffcffffffcfffff3ffffffcffffcffffcffffcffffcfffff3fffffffffffffff +fffffffffffffffffffffffffffffffffff3ffffcffffffcffffcfffffffcfff +fcffff3ffffcffffcffffcffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffffffffffffffffffffc00003fff00fffffffc0003fffcffff +c0ffffff00fffffffffffffff00ffffff3f3ff3ffcff3cc3fffc0ffff00f0003 +ffff0300fffff00fffffffffffff3f00ffffffffc3ffffffffffffffffffffff +fffffc0000ffffc0ffffffff0ffff3fff000fffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcff +ffcffffffcfffff3ffffffcffffcffffcffffcffffcfffff3fffffffffffffff +fffffffffffffffffffffffffffffffffff3ffffcffffffcffffcfffffffcfff +fcffff3ffffcffffcffffcffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffffffffffffffffffffffffffffffc3ffff +fc03fffffffffffffffffffffffffffff3f3fc3ffcff30f0ffffffffffffffff +ff003ffc0fffffffffffffffffffffffffffffffc3ffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcff +ffcffffffcfffff3ffffffcffffcffffcffffcffffcfffff3fffffffffffffff +fffffffffffffffffffffffffffffffffff3ffffcffffffcffffcfffffffcfff +fcffff3ffffcffffcffffcffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcff +ffcffffffcfffff3ffffffcffffcffffcffffcffffcfffff3fffffffffffffff +fffffffffffffffffffffffffffffffffff3ffffcffffffcffffcfffffffcfff +fcffff3ffffcffffcffffcffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffff3fffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff3fffffffff3ffffffff3ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff3fff33ffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf0 +03cffffffcfc00f3ffffffcf003cffffcf003cffffcf003f3fffffffffffffff +fffffffffffffffffffffffffffffffffff3f003cffffffcf003cfffffffcf00 +3cffff3c00fcffffcf003cffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffff3fffffffcfffffffc0000fffffffffffffffffff +ffffffffffffffffff3fffffffff3fffc3fcf3ffffcfffffffffffffffffffff +ffffffffffffffffffffffffffffffff3fff33ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffcff0fffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0f +fc0ffffffcc3ff03ffffffc0ffc0ffffc0ffc0ffffc0ffc33fffffffffffffff +fffffffffffffffffffffffffffffffffff30ffc0ffffffc0ffc0fffffffc0ff +c0ffff03ff0cffffc0ffc0ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffff3fffffffcffffffffffc3fffffffffffffffffff +ffffffffffffffffff003ffc000f3ffff0fcf3ffffcffffffc0000003fffffff +ffffffffffffffffffffffffffffffff3ff3ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffc3fc3ffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcff +ffcffffffc3ffff3ffffffcffffcffffcffffcffffcffffc3fffffffffffffff +fffffffffffffffffffffffffffffffffff0ffffcffffffcffffcfffffffcfff +fcffff3ffff0ffffcffffcffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffc000fc3fffcffffffffff0fffffffffffff0ffffff +ffffffffffffffff003fffffffcf0003fcf00003ffcffffffffffc3fffffffff +fff0fffffffffffffffffffc3fffffff3ff0fffffff0fffffffffffffffffffc +3ffffffffffffffffffff0fffffffffffffffff3ff3ffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcff +ffcfffffff3ffff3ffffffcffffcffffcffffcffffcffffcffffffffffffffff +fffffffffffffffffffffffffffffffffffcffffcffffffcffffcfffffffcfff +fcffff3ffff3ffffcffffcffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffff3fff0fffcfffffffffc3fffffffffffff0ffffff +fffffffffffffffffcffffffffcf3f3ffff3f3ffffcffffffffff0ffffffffff +fff0fffffffffffffffffffc3fffff0000fc3ffffff0fffffffffffffffffffc +3fffffffffffffff0ffff0fffffffffffffffff0f000fcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcff +ffcfffffff3ffff3ffffffcffffcffffcffffcffffcffffcffffffffffffffff +fffffffffffffffffffffffffffffffffffcffffcffffffcffffcfffffffcfff +fcffff3ffff3ffffcffffcffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffff3fffc3ffcfffffffff0ffffffffffffff0ffffff +fffffffffffffffffcfffc3fffcc3f3fffc3f3ffffcfffffffffc3ffffffffff +fff0fffffffffffffffffffc3fffffff3f3f3ffffff0fffffffffffffffffffc +3fffffffffffffff0ffffffffffffffffffffffc03ff3cfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0f +fc3fffffffc3ff0ffffffff0ffc3fffff0ffc3fffff0ffc3ffffffffffffffff +ffffffffffffffffffffffffffffffffffff0ffc3fffffff0ffc3ffffffff0ff +c3ffffc3ff0ffffff0ffc3ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffff3ffff3ffcffffffffc000fffffffc30ff0c0ffc0 +ff0c0ffc03fffffff003c0ff000ccf3ffffff3ffffcfffffffffcfffffffffc3 +0ff0c0ffc0ff0c0ffc03ff003fffffff3f3f0ffffff0c3ff0f0ff03fc00fff00 +3fc03f003ff003ff0ffc00ff0c0ffc00ffffff00ffff3cffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0 +03fffffffffc00ffffffffff003fffffff003fffffff003fffffffffffffffff +fffffffffffffffffffffffffffffffffffff003fffffffff003ffffffffff00 +3ffffffc00ffffffff003fffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffffffffff03fffffffcffffffff0ffc3ffffffc0c3f0303f0c +3f0303f0f0ffffffc3fc0fff3ff0cc3f00c00000ffcfffffffff0fffffffffc0 +c3f0303f0c3f0303f0f0fc3c3ffffffc3f3fcffffff030ff0c0fc30fffc3fc3c +3f0fcfff0fc3fcf0003ff0ff0303f0f0fffff03c3ffc3cfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffcf3fffffffcfffffffc3fff0ffffffc3f0f0fc3c3f +0f0fc3c3f0ffffff0fc0ffff3fffccfffcffffffffcfffffffff3fffffffffc3 +f0f0fc3c3f0f0fc3c3f0f0fc3ffffffcff3fcffffff0fc3f03cf0fc3ffc3f0fc +3c3fffff0fc3ffff0ffff0ff0fc3c3f0ffffffff3fc0fcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffcf3fffffffcfffffff0ffffcffffffc3f0f0fc3c3f +0f0fc3c000ffffffff0cffff3fffc0fffcfc000fffcfffffffff3fffffffffc3 +f0f0fc3c3f0f0fc3c000f0fc3ffffffcff3ffffffff0fc3f0fff0fc3c003f0fc +3c3fff000fc00fff0ffff0ff0fc3c3f0ffffffff3ffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffcf3fffffffcffff3fffffffcffffffc3f0f0fc3c3f +0f0fc3c3fffffffffc3cffff3ffff3fffcfcffcfffcffff3ffff3fffffffffc3 +f0f0fc3c3f0f0fc3c3fff0fc3ffffff0ff3ffffffff0fc3f0fff0fc30fc3f0fc +3c3ffc3f0ffc00ff0ffff0ff0fc3c3f0ffffffff0ffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffcf3fff3fffcfffc3fffffff0ffffffc3f0f0fc3c3f +0f0fc3c3fffffffff0fcffff3fcfc0fffcfcffcfffcfffc3ffff0fffffffffc3 +f0f0fc3c3f0f0fc3c3fff0fc3ffffff3ff3ffffffff0fc3f0fff0fc30fc3f0fc +3c3ffc3f0ffff0ff0ffff0ff0fc3f0c0ffffffffcffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffffffffff03fff3fffcfff0fffffffc3fff03fc3c3f0fc3f0c +3f0fc3f0fcfffffff3ffffff0fcfccfffcfcffcfffcfff0fffffc3ffffffffc3 +c3f0fc3f0c3f0fc3f0fcfc303fffffc3fc3ffffffff0f0ff0fffc30f0f03fc30 +3f0fcc3c0fcff0ff0ffff0ff0fc3fc30ffffffffcffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffff0ffc3ffff3f03ffffffc0ffff03fc00ff0fc3fc0 +ff0fc3fc03fffffff0ffffffc00f0c3ff0fc000ffff3f03ffffff03fffffffc0 +0ff0fc3fc0ff0fc3fc03ff0c3fffff0ffcfffffffff003ff0ffff03fc0c0ff0c +3fc03f0303f003ffc03ff0ff0fc3fff0ffffffffc3fffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffc000fffffc03ffffff00ffffff3fc3ffffffffff +fffffffffffffffffc0000fffffc3f0fc33ffffffffc03ffffffff03ffffffc3 +ffffffffffffffffffffffffffffffffc0ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffc3c3fffffffff3fffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffffffffffffffffffffffffffffffffffff0ffc3ffffffffff +fffffffffffffffffffffffffff0ffc30fc00000ffffffffffffffffffffffc3 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffff00ffffffffff3fffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffffffffffcfff3ffffff3fffffffffffffffffffffffffffff +fffffff33ffcfffccfffffff33ffffffffffffffffffffffffffffffffffffcf +fffffcffffffffffffffffffffffffffffffffffffcffffffc3fffffffffffff +ffff3ffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffccfff3ffffff3fffffffffffffffffffffffffffff +ffcfff333ffcfffccff3ffff33ffffffffff3ffffffffffffffff00003ffffcf +fffffcf00000fff3ffffff0000000ffc0000ffffffcfffffff03fffff3ffffff +ffff3fffff00003ffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffccfc0003f0000000ffff003fffffffffffffffffff +ffcfff3ffffcffcffff0fffffffc00003fff3fffffff3fffffffffff0fffffcf +ff3ffcf3cf3cfff3ffffff3fffffcfffffc3ffffffcffffffff03ffff3ffffff +ffff3ffffffff0fffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffccfff3fff3fffffcfff03303fff0000fffffffffff +ffcfff3ffffcffc3fffcfffffffffffffffc3f0003ff3fffcffffffc3fffffcf +ff0ffcf3cf3cfff3ffffff3fffffcfffff0fffffffcfffffffffffffc3f0003f +00000000ffffc3fffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffff000ff3fff3fffffcffc3f3f0ffffffcfffffffffff +c00000003c0003f0fffc3ffc3ffffffffffcffffffff3fffc3fffff0ffffc000 +3fc3c00f0f3ffff3ffffff3fffffcffffc3fffffffc003ffffffffffcfffffff +ffff3fffffff0ffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffff3cfff3ffff00000fff0ff3fcffffffcfffffffffff +ffcfff3ffffcfcfcffff3fc0fffffffffffcffffffff3ffff0ffffc3ffffffcf +cff3fcfc3f003ff3ffffff3f000fcffff0ffffffffcfffffc0000fffcfffffff +ffff3ffffffc3ffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffffffffffcf00000ffff3fffff3fc3fc3fffffcfffcfffffff +ffcfff3ffffcfcfc3fff0c0ffffffffffffcffffffff3ffffcffff0003ffffcf +cff0fcf0fffffff3ffffff3f3fcfcfffc000ffffffcfffffffffc3ffcfffffff +ffc03ffffff0003ffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffffffffffcffffcfffff3ffffc3fcfff3fffffcffff0000003 +ffcfff3ffff0fcff3fffc0fffffffffffffcffffffff3ffffc3ffc3ff0ffff0f +cffcfcfffcfffff3ffffff3f3fcfcfff0ffc3fffffcffffffffff3ffcfffffff +ff0f0fffffc3ff0ffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffffffffffc0fffcfff3f3ffffcff0fff3fffffcfffffffffff +ffcfff3ffff3fcff3fff0ffffffffffffffcffffffff3fffff3ff0fffc3fff3f +cffcfc0ffcfffff3ffffff3f3fcfcffc3fff0fffffcffffffffff3ffcfffffff +ff3fcfffff0fffc3fffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffc0f00000ff3f000ffcff3fff3fffffcfffffffffff +fffffc3ffff3fcfffffc3ffffffffffffffcffffffff3fffff3fc3ffff3fff3f +cfffc0f000003ff3ffffff3f3fcfcff0ffffcfffffcffffffffff3ffcfffffff +ff3fcffffc3ffff3fffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffff0cffffcfff3f3ffffcfc3ffc3fffffcfffffffffff +fffffcffffc3fcfffff0fffffff3fffffffcfcffffff0f3fff3fff03ff3ffc3f +cffffcffcccffff3fffcff3f000fcfffc0ffcfff000fffffffffc3ffcfcfffff +ff0fcffffff03ff3fffffffffffffffffffffffffffffcfcfcfcfcfcfcc00000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000cfcfcfcfcfcfc +c3f00c03030ffffffffffffcfc3fcfff3f3ffffcf0fffcffffffcfffffffffff +fffff0ffffcffcfffff3fffffff0fffffffcfcffffffcc3ffffffcf0ff3ffcff +cffffcffcccffff3fff0ff3fffffcfff3c3fcffcffc0ffffffff0fffcfcfffff +ffc00fffffcf0ff3fffffffffffffffffffffffffffffcffcfcfcfcfcfc00000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000fcfcfcfcffccf +f3f00c30300ffffffffffffcff0fcffc0f3fffff03ffc0ff0000000fffffffff +ffffc3ffff0ff0fffff3fffffffc0ffffffccc3fffffc0fffffffcfcfc3ff0ff +0ffffcff0cc3fff3ffc3ff3fffffcfff3f3f0ffcffcc0ffffffc3fffccc3ffff +ffff3fffffcfcfc3ffc0fffffffffffffffffffffffffcfcfcfcfcfcfcc00000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000cfcfcfcfcfcfc +c3f00c03030ffffffffffffcffcfcffcc33ffffffffc0fffffffffffffffffff +ffff0ffffc3ff3fffff0ffffffffc0000ffc3f0000fff3fffffffc3cf0ffc3ff +3ffffcfc3cf0fffcfc0fff3fffffcfff0f3c3ffcff0fc3ffffc0ffffc3f0000f +fffc3fffffc3cf0fffc0fffffffffffffffffffffffffcffcfcfcfcfcfc00000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000fcfcfcfcffccf +f3f00c30300ffffffffffffcffffcff0f03fffffffffffffffffffffffffffff +fff03fffffff03fffffc00003fffffffffff3fffffffffffffffff0003fffff0 +3ffffcf0fcfc3fff00ffff0000000fffc000ffff003ffffff00ffffff3ffffff +fff0fffffff0003ffffffffffffffffffffffffffffffcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +c3f00c03030ffffffffffffcfffc0fc3ff00003fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffff0fffcffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff03fffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcffccf +f3f00c30300fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcffccf +f3f00c00000fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +c3f0000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000ffcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcffccf +f3f0000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000fcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +c3f0000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000ffcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcffccf +f3f0000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000fcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +c3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcffccf +f3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +c3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcffccf +f000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000fcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfccffcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcffccf +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfccffcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcffccf +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfc +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfccffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffccf +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfc +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcc000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000cf +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +showpage + %%BoundingBox: -97 96 709.40 695.04 +%ps_include: inclusion end +grestore +PS-include-dict-dw begin +o 0 ne {gsave A defaultmatrix /A ed llx lly nice urx ury nice + initgraphics 0.1 setlinewidth boxpath stroke grestore} if +clear o-stack aload pop +context end restore +%ps_include: end +/saveobj save def +mark +10 /LucidaSansUnicode00 f +(Figure) 970 4111 w +(1.) 1308 4111 w +(A) 1470 4111 w +(representative) 1574 4111 w +(8\275) 2301 4111 w +(screen,) 2479 4111 w +(running) 2863 4111 w +(on) 3278 4111 w +(a) 3436 4111 w +(NeXTstation) 3526 4111 w +(under) 4149 4111 w +(Plan) 4468 4111 w +(9) 4704 4111 w +(\(with) 4802 4111 w +(no) 970 4231 w +(NeXT) 1127 4231 w +(software\).) 1417 4231 w +(In) 1963 4231 w +(the) 2088 4231 w +(upper) 2277 4231 w +(right,) 2596 4231 w +(a) 2893 4231 w +(program) 2982 4231 w +(announces) 3432 4231 w +(the) 3988 4231 w +(arrival) 4177 4231 w +(of) 4513 4231 w +(mail.) 4645 4231 w +(In) 4949 4231 w +(the) 970 4351 w +(top) 1158 4351 w +(and) 1353 4351 w +(left) 1567 4351 w +(are) 1760 4351 w +(a) 1946 4351 w +(broswer) 2035 4351 w +(for) 2459 4351 w +(astronomical) 2632 4351 w +(databases) 3291 4351 w +(and) 3811 4351 w +(an) 4025 4351 w +(image) 4176 4351 w +(of) 4505 4351 w +(a) 4637 4351 w +(galaxy) 4726 4351 w +(produced) 970 4471 w +(by) 1470 4471 w +(the) 1625 4471 w +(browser.) 1820 4471 w +(In) 2314 4471 w +(the) 2445 4471 w +(lower) 2640 4471 w +(left) 2944 4471 w +(there) 3143 4471 w +(is) 3435 4471 w +(a) 3555 4471 w +(screen) 3649 4471 w +(editor,) 4005 4471 w +10 /LucidaTypewriter f +(sam) 4363 4471 w +10 /LucidaSansUnicode00 f +([Pike87],) 4618 4471 w +(editing) 970 4591 w +(Japanese) 1347 4591 w +(text) 1815 4591 w +(encoded) 2045 4591 w +(in) 2496 4591 w +(UTF,) 2626 4591 w +(and) 2883 4591 w +(in) 3102 4591 w +(the) 3232 4591 w +(lower) 3426 4591 w +(right) 3729 4591 w +(an) 3999 4591 w +(8\275) 4155 4591 w +(running) 4337 4591 w +(recur\255) 4756 4591 w +(sively) 970 4711 w +(and,) 1289 4711 w +(inside) 1551 4711 w +(that) 1891 4711 w +(instantiation,) 2132 4711 w +(a) 2820 4711 w +(previewer) 2925 4711 w +(for) 3445 4711 w +10 /LucidaTypewriter f +(troff) 3633 4711 w +10 /LucidaSansUnicode00 f +(output.) 4042 4711 w +(Underneath) 4477 4711 w +(the faces is a small window) 970 4831 w +(running) 2329 4831 w +(the) 2742 4831 w +(command) 2930 4831 w +(that) 3441 4831 w +(prints) 3665 4831 w +(the) 3981 4831 w +(screen) 4169 4831 w +(by) 4519 4831 w +(passing) 4667 4831 w +10 /LucidaTypewriter f +(/dev/screen) 970 4951 w +10 /LucidaSansUnicode00 f +(to the bitmap printing utility.) 1794 4951 w +(operations) 720 5191 w +(in) 1276 5191 w +(Plan) 1407 5191 w +(9,) 1648 5191 w +(this) 1783 5191 w +(permits) 2002 5191 w +(remote) 2412 5191 w +(machines) 2796 5191 w +(having) 3296 5191 w +(no) 3659 5191 w +(graphics) 3823 5191 w +(capability,) 4278 5191 w +(such) 4814 5191 w +(as) 720 5311 w +(the) 883 5311 w +(CPU) 1095 5311 w +(server,) 1345 5311 w +(to) 1731 5311 w +(run) 1886 5311 w +(graphics) 2108 5311 w +(applications.) 2579 5311 w +(Analogous) 3285 5311 w +(features) 3854 5311 w +(of) 4306 5311 w +(the) 4461 5311 w +(original) 4672 5311 w +(Andrew window system [Gos86] and of X [Sche86] require more complex mechanisms.) 720 5431 w +(Nor) 970 5587 w +(does) 1187 5587 w +(8\275) 1459 5587 w +(itself) 1643 5587 w +(operate) 1923 5587 w +(directly) 2333 5587 w +(on) 2733 5587 w +(bitmaps.) 2898 5587 w +(Instead,) 3395 5587 w +(it) 3822 5587 w +(calls) 3930 5587 w +(another) 4187 5587 w +(server) 4603 5587 w +(to) 4942 5587 w +(do) 720 5707 w +(its) 885 5707 w +(graphics) 1043 5707 w +(operations) 1498 5707 w +(for) 2055 5707 w +(it,) 2234 5707 w +(using) 2372 5707 w +(an) 2678 5707 w +(identical) 2835 5707 w +(protocol.) 3286 5707 w +(The) 3794 5707 w +(operating) 4015 5707 w +(system) 4521 5707 w +(for) 4901 5707 w +(the Plan 9 terminals contains an internal server that) 720 5827 w +(implements) 3265 5827 w +(that) 3867 5827 w +(protocol,) 4091 5827 w +(exactly) 4560 5827 w +(as) 4934 5827 w +(does) 720 5947 w +(8\275,) 987 5947 w +(but) 1198 5947 w +(for) 1395 5947 w +(a) 1569 5947 w +(single) 1659 5947 w +(client.) 1983 5947 w +(That) 2346 5947 w +(server) 2598 5947 w +(stores) 2930 5947 w +(the) 3262 5947 w +(actual) 3452 5947 w +(bytes) 3776 5947 w +(for) 4070 5947 w +(the) 4244 5947 w +(bitmaps) 4434 5947 w +(and) 4860 5947 w +(implements) 720 6067 w +(the) 1350 6067 w +(fundamental) 1566 6067 w +(bitmap) 2239 6067 w +(graphics) 2641 6067 w +(operations.) 3117 6067 w +(Thus) 3759 6067 w +(the) 4059 6067 w +(environment) 4276 6067 w +(in) 4949 6067 w +(which) 720 6187 w +(8\275) 1048 6187 w +(runs) 1238 6187 w +(has) 1501 6187 w +(exactly) 1716 6187 w +(the) 2104 6187 w +(structure) 2306 6187 w +(it) 2790 6187 w +(provides) 2902 6187 w +(for) 3364 6187 w +(its) 3549 6187 w +(clients;) 3712 6187 w +(8\275) 4105 6187 w +(reproduces) 4294 6187 w +(the) 4885 6187 w +(environment for its clients, multiplexing the interface to keep the clients separate.) 720 6307 w +(This) 970 6463 w +(idea) 1208 6463 w +(of) 1444 6463 w +(multiplexing) 1575 6463 w +(by) 2220 6463 w +(simulation) 2368 6463 w +(is) 2909 6463 w +(applicable) 3022 6463 w +(to) 3548 6463 w +(more) 3679 6463 w +(than) 3964 6463 w +(window) 4214 6463 w +(systems,) 4617 6463 w +(of) 720 6583 w +(course,) 863 6583 w +(and) 1262 6583 w +(has) 1487 6583 w +(some) 1700 6583 w +(side) 2006 6583 w +(effects.) 2250 6583 w +(Since) 2684 6583 w +(8\275) 2981 6583 w +(simulates) 3169 6583 w +(its) 3677 6583 w +(own) 3839 6583 w +(environment) 4084 6583 w +(for) 4740 6583 w +(its) 4923 6583 w +(clients,) 720 6703 w +(it) 1117 6703 w +(may) 1233 6703 w +(run) 1483 6703 w +(in) 1698 6703 w +(one) 1839 6703 w +(of) 2068 6703 w +(its) 2217 6703 w +(own) 2385 6703 w +(windows) 2636 6703 w +(\(see) 3107 6703 w +(Figure) 3354 6703 w +(1\).) 3709 6703 w +(A) 3920 6703 w +(useful) 4040 6703 w +(and) 4388 6703 w +(common) 4619 6703 w +(application) 720 6823 w +(of) 1288 6823 w +(this) 1420 6823 w +(technique) 1633 6823 w +(is) 2145 6823 w +(to) 2258 6823 w +(connect) 2389 6823 w +(a) 2802 6823 w +(window) 2890 6823 w +(to) 3292 6823 w +(a) 3423 6823 w +(remote) 3511 6823 w +(machine,) 3888 6823 w +(such) 4361 6823 w +(as) 4620 6823 w +(a) 4759 6823 w +(CPU) 4847 6823 w +(server, and run the window system there so) 720 6943 w +(that) 2879 6943 w +(each) 3103 6943 w +(subwindow) 3360 6943 w +(is) 3938 6943 w +(automatically) 4051 6943 w +(on) 4729 6943 w +(the) 4885 6943 w +(remote) 720 7063 w +(machine.) 1097 7063 w +(It) 1602 7063 w +(is) 1701 7063 w +(also) 1814 7063 w +(a) 2043 7063 w +(handy) 2131 7063 w +(way) 2458 7063 w +(to) 2675 7063 w +(debug) 2806 7063 w +(a) 3145 7063 w +(new) 3233 7063 w +(version) 3461 7063 w +(of) 3846 7063 w +(the) 3977 7063 w +(window system or) 4165 7063 w +(to create an environment with, for example, a different default font.) 720 7183 w +cleartomark +showpage +saveobj restore +%%EndPage: 6 6 +%%Page: 7 7 +/saveobj save def +mark +7 pagesetup +10 /LucidaSansUnicode00 f +(\255 7 \255) 2783 480 w +10 /LucidaSans-Demi f +(Implementation) 720 840 w +10 /LucidaSansUnicode00 f +(To) 970 996 w +(provide) 1135 996 w +(graphics) 1541 996 w +(to) 1996 996 w +(its) 2135 996 w +(clients,) 2293 996 w +(8\275) 2682 996 w +(mostly) 2867 996 w +(just) 3232 996 w +(multiplexes) 3454 996 w +(and) 4062 996 w +(passes) 4284 996 w +(through) 4653 996 w +(to) 720 1116 w +(its) 861 1116 w +(own) 1020 1116 w +(server) 1262 1116 w +(the) 1601 1116 w +(clients) 1798 1116 w +10 /LucidaSansUnicode20 f +(\031) 2113 1116 w +10 /LucidaSansUnicode00 f +(requests,) 2187 1116 w +(occasionally) 2678 1116 w +(rearranging) 3306 1116 w +(the) 3914 1116 w +(messages) 4111 1116 w +(to) 4628 1116 w +(main\255) 4768 1116 w +(tain) 720 1236 w +(the) 940 1236 w +(fiction) 1132 1236 w +(that) 1475 1236 w +(the) 1703 1236 w +(clients) 1895 1236 w +(have) 2247 1236 w +(unique) 2509 1236 w +(screens) 2880 1236 w +(\(windows\).) 3286 1236 w +(To) 3874 1236 w +(manage) 4036 1236 w +(the) 4457 1236 w +(overlap\255) 4650 1236 w +(ping) 720 1356 w +(windows) 972 1356 w +(it) 1428 1356 w +(uses) 1530 1356 w +(the) 1786 1356 w +(layers) 1977 1356 w +(model,) 2297 1356 w +(which) 2667 1356 w +(is) 2984 1356 w +(handled) 3100 1356 w +(by) 3526 1356 w +(a) 3677 1356 w +(separate) 3768 1356 w +(library) 4218 1356 w +([Pike83a].) 4563 1356 w +(Thus) 720 1476 w +(it) 996 1476 w +(has) 1100 1476 w +(little) 1306 1476 w +(work) 1561 1476 w +(to) 1836 1476 w +(do) 1972 1476 w +(and) 2134 1476 w +(is) 2352 1476 w +(a) 2470 1476 w +(fairly) 2563 1476 w +(simple) 2844 1476 w +(program;) 3203 1476 w +(it) 3689 1476 w +(is) 3793 1476 w +(dominated) 3912 1476 w +(by) 4470 1476 w +(a) 4624 1476 w +(couple) 4718 1476 w +(of) 720 1596 w +(switch) 854 1596 w +(statements) 1197 1596 w +(to) 1768 1596 w +(interpret) 1902 1596 w +(the) 2360 1596 w +(bitmap) 2551 1596 w +(and) 2927 1596 w +(file) 3143 1596 w +(server) 3330 1596 w +(protocols.) 3663 1596 w +(The) 4218 1596 w +(built-in) 4435 1596 w +(win\255) 4839 1596 w +(dow) 720 1716 w +(program) 963 1716 w +(and) 1421 1716 w +(its) 1643 1716 w +(associated) 1802 1716 w +(menus) 2353 1716 w +(and) 2719 1716 w +(text-management) 2941 1716 w +(support) 3863 1716 w +(are) 4283 1716 w +(responsible) 4478 1716 w +(for most of the code.) 720 1836 w +(The) 970 1992 w +(operating) 1193 1992 w +(system) 1701 1992 w +10 /LucidaSansUnicode20 f +(\031) 2041 1992 w +10 /LucidaSansUnicode00 f +(s) 2073 1992 w +(server) 2166 1992 w +(is) 2505 1992 w +(also) 2628 1992 w +(compact:) 2867 1992 w +(the) 3353 1992 w +(version) 3551 1992 w +(for) 3946 1992 w +(the) 4128 1992 w +(68020) 4326 1992 w +(proces\255) 4684 1992 w +(sor,) 720 2112 w +(excluding) 945 2112 w +(the) 1460 2112 w +(implementation) 1655 2112 w +(of) 2457 2112 w +(a) 2595 2112 w +(half) 2690 2112 w +(dozen) 2912 2112 w +(bitmap) 3250 2112 w +(graphics) 3629 2112 w +(operations,) 4082 2112 w +(is) 4669 2112 w +(2295) 4788 2112 w +(lines) 720 2232 w +(of) 997 2232 w +(C) 1145 2232 w +(\(again,) 1264 2232 w +(about) 1642 2232 w +(half) 1970 2232 w +(dealing) 2203 2232 w +(with) 2609 2232 w +(fonts\);) 2864 2232 w +(the) 3227 2232 w +(graphics) 3432 2232 w +(operations) 3896 2232 w +(are) 4463 2232 w +(another) 4666 2232 w +(2214 lines.) 720 2352 w +(8\275) 970 2508 w +(is) 1163 2508 w +(structured) 1293 2508 w +(as) 1844 2508 w +(a) 2000 2508 w +(set) 2105 2508 w +(of) 2299 2508 w +(communicating) 2447 2508 w +(coroutines,) 3245 2508 w +(much) 3839 2508 w +(as) 4158 2508 w +(discussed) 4315 2508 w +(in) 4843 2508 w +(a) 4985 2508 w +(1989) 720 2628 w +(paper) 1022 2628 w +([Pike89].) 1350 2628 w +(One) 1854 2628 w +(coroutine) 2100 2628 w +(manages) 2610 2628 w +(the) 3094 2628 w +(mouse,) 3299 2628 w +(another) 3703 2628 w +(the) 4126 2628 w +(keyboard,) 4330 2628 w +(and) 4860 2628 w +(another) 720 2748 w +(is) 1128 2748 w +(instantiated) 1242 2748 w +(to) 1849 2748 w +(manage) 1981 2748 w +(the) 2398 2748 w +(state) 2587 2748 w +(of) 2857 2748 w +(each) 2989 2748 w +(window) 3248 2748 w +(and) 3652 2748 w +(associated) 3867 2748 w +(client.) 4411 2748 w +(When) 4774 2748 w +(no) 720 2868 w +(coroutine) 889 2868 w +(wishes) 1395 2868 w +(to) 1767 2868 w +(run,) 1911 2868 w +(8\275) 2154 2868 w +(reads) 2343 2868 w +(the) 2655 2868 w +(next) 2855 2868 w +(file) 3116 2868 w +(I/O) 3312 2868 w +(request) 3517 2868 w +(from) 3928 2868 w +(its) 4205 2868 w +(clients,) 4367 2868 w +(which) 4759 2868 w +(arrive serially on the full-duplex communication pipe.) 720 2988 w +(Thus 8\275 is entirely synchronous.) 3408 2988 w +(The) 970 3144 w +(program) 1188 3144 w +(source) 1641 3144 w +(is) 2000 3144 w +(small) 2117 3144 w +(and) 2411 3144 w +(compiles) 2628 3144 w +(in) 3098 3144 w +(about) 3226 3144 w +(10) 3541 3144 w +(seconds) 3704 3144 w +(in) 4137 3144 w +(our) 4266 3144 w +(Plan) 4468 3144 w +(9) 4707 3144 w +(envi\255) 4808 3144 w +(ronment.) 720 3264 w +(There) 1253 3264 w +(are) 1588 3264 w +(ten) 1797 3264 w +(source) 2009 3264 w +(files) 2388 3264 w +(and) 2647 3264 w +(one) 2884 3264 w +10 /LucidaTypewriter f +(makefile) 3120 3264 w +10 /LucidaSansUnicode00 f +(totaling) 3752 3264 w +(5100) 4180 3264 w +(lines.) 4488 3264 w +(This) 4835 3264 w +(includes) 720 3384 w +(the) 1170 3384 w +(source) 1372 3384 w +(for) 1741 3384 w +(the) 1927 3384 w +(window) 2129 3384 w +(management) 2546 3384 w +(process,) 3225 3384 w +(the) 3679 3384 w +(cut-and-paste) 3882 3384 w +(terminal) 4638 3384 w +(program,) 720 3504 w +(the) 1206 3504 w +(window/file) 1399 3504 w +(server) 2010 3504 w +(itself,) 2345 3504 w +(and) 2654 3504 w +(a) 2872 3504 w +(small) 2965 3504 w +(coroutine) 3260 3504 w +(library) 3758 3504 w +(\() 4106 3504 w +10 /LucidaTypewriter f +(proc.c) 4139 3504 w +10 /LucidaSansUnicode00 f +(\).) 4571 3504 w +(It) 4706 3504 w +(does) 4809 3504 w +(not) 720 3624 w +(include) 914 3624 w +(the) 1301 3624 w +(layer) 1491 3624 w +(library) 1759 3624 w +(\(another) 2104 3624 w +(1031) 2546 3624 w +(lines\)) 2833 3624 w +(or) 3128 3624 w +(the) 3265 3624 w +(library) 3455 3624 w +(to) 3800 3624 w +(handle) 3933 3624 w +(the) 4295 3624 w +(cutting) 4485 3624 w +(and) 4860 3624 w +(pasting) 720 3744 w +(of) 1112 3744 w +(text) 1243 3744 w +(displayed) 1467 3744 w +(in) 1961 3744 w +(a) 2085 3744 w +(window) 2173 3744 w +(\(960) 2575 3744 w +(lines\),) 2830 3744 w +(or) 3155 3744 w +(the) 3290 3744 w +(general) 3478 3744 w +(graphics) 3872 3744 w +(support) 4319 3744 w +(library) 4730 3744 w +(that) 720 3864 w +(manages) 949 3864 w +(all) 1421 3864 w +(the) 1573 3864 w +(non-drawing) 1767 3864 w +(aspects) 2438 3864 w +(of) 2841 3864 w +(graphics) 2978 3864 w +10 /LucidaSansUnicode20 f +(\024) 3431 3864 w +10 /LucidaSansUnicode00 f +(arithmetic) 3570 3864 w +(on) 4099 3864 w +(points) 4261 3864 w +(and) 4603 3864 w +(rect\255) 4822 3864 w +(angles,) 720 3984 w +(memory) 1108 3984 w +(management,) 1545 3984 w +(error) 2249 3984 w +(handling,) 2530 3984 w +(clipping,) 3026 3984 w +10 /LucidaSansUnicode20 f +(\024) 3486 3984 w +10 /LucidaSansUnicode00 f +(plus) 3626 3984 w +(fonts,) 3871 3984 w +(events,) 4191 3984 w +(and) 4577 3984 w +(non-) 4797 3984 w +(primitive) 720 4104 w +(drawing) 1183 4104 w +(operations) 1606 4104 w +(such) 2156 4104 w +(as) 2416 4104 w +(circles) 2557 4104 w +(and) 2900 4104 w +(ellipses) 3115 4104 w +(\(a) 3514 4104 w +(final) 3637 4104 w +(3051) 3884 4104 w +(lines\).) 4171 4104 w +(Not) 4530 4104 w +(all) 4737 4104 w +(the) 4885 4104 w +(pieces) 720 4224 w +(of) 1061 4224 w +(these) 1194 4224 w +(libraries) 1491 4224 w +(are) 1920 4224 w +(used) 2107 4224 w +(by) 2374 4224 w +(8\275) 2524 4224 w +(itself;) 2702 4224 w +(a) 3008 4224 w +(large) 3098 4224 w +(part) 3376 4224 w +(of) 3607 4224 w +(the) 3740 4224 w +(graphics) 3930 4224 w +(library) 4379 4224 w +(in) 4723 4224 w +(par\255) 4848 4224 w +(ticular) 720 4344 w +(is) 1059 4344 w +(used) 1174 4344 w +(only) 1441 4344 w +(by) 1680 4344 w +(clients.) 1830 4344 w +(Thus) 2245 4344 w +(it) 2519 4344 w +(is) 2621 4344 w +(somewhat) 2737 4344 w +(unfair) 3265 4344 w +(to) 3587 4344 w +(8\275) 3721 4344 w +(just) 3900 4344 w +(to) 4116 4344 w +(sum) 4250 4344 w +(these) 4492 4344 w +(num\255) 4790 4344 w +(bers,) 720 4464 w +(including) 998 4464 w +(the) 1482 4464 w +(4509) 1671 4464 w +(lines) 1957 4464 w +(of) 2218 4464 w +(support) 2350 4464 w +(in) 2762 4464 w +(the) 2887 4464 w +(kernel,) 3076 4464 w +(and) 3444 4464 w +(arrive) 3658 4464 w +(at) 3966 4464 w +(a) 4092 4464 w +(total) 4181 4464 w +(implementa\255) 4434 4464 w +(tion) 720 4584 w +(size) 949 4584 w +(of) 1182 4584 w +(14651) 1320 4584 w +(lines) 1675 4584 w +(of) 1942 4584 w +(source) 2080 4584 w +(to) 2442 4584 w +(implement) 2580 4584 w +(all) 3138 4584 w +(of) 3291 4584 w +(8\275) 3429 4584 w +(from) 3612 4584 w +(the) 3884 4584 w +(lowest) 4080 4584 w +(levels) 4432 4584 w +(to) 4746 4584 w +(the) 4885 4584 w +(highest.) 720 4704 w +(But that number gives a fair measure of the complexity of the overall system.) 1175 4704 w +(The) 970 4860 w +(implementation) 1200 4860 w +(is) 2011 4860 w +(also) 2140 4860 w +(efficient.) 2385 4860 w +(8\275) 2892 4860 w +10 /LucidaSansUnicode20 f +(\031) 3035 4860 w +10 /LucidaSansUnicode00 f +(s) 3067 4860 w +(performance) 3168 4860 w +(is) 3834 4860 w +(competitive) 3964 4860 w +(to) 4578 4860 w +(X) 4726 4860 w +(win\255) 4839 4860 w +(dows) 720 4980 w +10 /LucidaSansUnicode20 f +(\031) 972 4980 w +10 /LucidaSansUnicode00 f +(.) 1004 4980 w +(Compared) 1108 4980 w +(using) 1649 4980 w +(Dunwoody) 1955 4980 w +10 /LucidaSansUnicode20 f +(\031) 2468 4980 w +10 /LucidaSansUnicode00 f +(s) 2500 4980 w +(and) 2590 4980 w +(Linton) 2809 4980 w +10 /LucidaSansUnicode20 f +(\031) 3113 4980 w +10 /LucidaSansUnicode00 f +(s) 3145 4980 w +10 /LucidaTypewriter f +(gbench) 3235 4980 w +10 /LucidaSansUnicode00 f +(benchmarks) 3706 4980 w +(on) 4337 4980 w +(the) 4499 4980 w +(68020,) 4693 4980 w +(distributed) 720 5100 w +(with) 1291 5100 w +(the) 1536 5100 w +10 /LucidaSansUnicode20 f +(\030\030) 1731 5100 w +10 /LucidaSansUnicode00 f +(X) 1795 5100 w +(Test) 1898 5100 w +(Suite) 2145 5100 w +10 /LucidaSansUnicode20 f +(\031\031) 2383 5100 w +10 /LucidaSansUnicode00 f +(,) 2447 5100 w +(circles) 2519 5100 w +(and) 2867 5100 w +(arcs) 3087 5100 w +(are) 3325 5100 w +(drawn) 3517 5100 w +(about) 3855 5100 w +(half) 4173 5100 w +(as) 4397 5100 w +(fast) 4544 5100 w +(in) 4765 5100 w +(8\275) 4897 5100 w +(as) 720 5220 w +(in) 866 5220 w +(X11) 997 5220 w +(release) 1226 5220 w +(4) 1610 5220 w +(compiled) 1712 5220 w +(with) 2196 5220 w +10 /LucidaTypewriter f +(gcc) 2440 5220 w +10 /LucidaSansUnicode00 f +(for) 2695 5220 w +(equivalent) 2873 5220 w +(hardware,) 3413 5220 w +(probably) 3934 5220 w +(because) 4400 5220 w +(they) 4833 5220 w +(are) 720 5340 w +(currently) 909 5340 w +(implemented) 1377 5340 w +(in) 2051 5340 w +(a) 2180 5340 w +(user) 2273 5340 w +(library) 2521 5340 w +(by) 2869 5340 w +(calls) 3022 5340 w +(to) 3275 5340 w +(the) 3411 5340 w +10 /LucidaTypewriter f +(point) 3604 5340 w +10 /LucidaSansUnicode00 f +(primitive.) 4002 5340 w +(Line) 4533 5340 w +(draw\255) 4771 5340 w +(ing) 720 5460 w +(speed) 921 5460 w +(is) 1258 5460 w +(about) 1386 5460 w +(equal) 1712 5460 w +(between) 2025 5460 w +(the) 2480 5460 w +(two) 2683 5460 w +(systems.) 2906 5460 w +(Unicode) 3409 5460 w +(text) 3848 5460 w +(is) 4087 5460 w +(drawn) 4215 5460 w +(about) 4560 5460 w +(the) 4885 5460 w +(same) 720 5580 w +(speed) 1010 5580 w +(by) 1334 5580 w +(8\275) 1484 5580 w +(as) 1662 5580 w +(ASCII) 1803 5580 w +(text) 2088 5580 w +(by) 2314 5580 w +(X,) 2464 5580 w +(and) 2594 5580 w +(the) 2809 5580 w +10 /LucidaTypewriter f +(bitblt) 2999 5580 w +10 /LucidaSansUnicode00 f +(test) 3466 5580 w +(is) 3682 5580 w +(runs) 3797 5580 w +(four) 4049 5580 w +(times) 4286 5580 w +(faster) 4588 5580 w +(for) 4901 5580 w +(8\275.) 720 5700 w +(These) 965 5700 w +(numbers) 1291 5700 w +(vary) 1757 5700 w +(enough) 1995 5700 w +(to) 2398 5700 w +(caution) 2534 5700 w +(against) 2929 5700 w +(drawing) 3318 5700 w +(sweeping) 3745 5700 w +(conclusions,) 4239 5700 w +(but) 4878 5700 w +(they suggest that 8\275) 720 5820 w +10 /LucidaSansUnicode20 f +(\031) 1738 5820 w +10 /LucidaSansUnicode00 f +(s architecture does not penalize its performance.) 1770 5820 w +(Finally, 8\275 boots) 4218 5820 w +(in under a second and creates a new window apparently instantaneously.) 720 5940 w +10 /LucidaSans-Demi f +(An example) 720 6180 w +10 /LucidaSansUnicode00 f +(Here) 970 6336 w +(is) 1293 6336 w +(a) 1469 6336 w +(complete) 1621 6336 w +(program) 2164 6336 w +(that) 2677 6336 w +(runs) 2965 6336 w +(under) 3278 6336 w +(8\275.) 3659 6336 w +(It) 3963 6336 w +(prints) 4126 6336 w +(the) 4506 6336 w +(string) 4758 6336 w +10 /LucidaTypewriter f +("hello world") 720 6456 w +10 /LucidaSansUnicode00 f +(wherever) 1706 6456 w +(the) 2197 6456 w +(left) 2402 6456 w +(mouse) 2611 6456 w +(button) 2984 6456 w +(is) 3356 6456 w +(depressed,) 3486 6456 w +(and) 4067 6456 w +(exits) 4296 6456 w +(when) 4579 6456 w +(the) 4885 6456 w +(right) 720 6576 w +(mouse) 994 6576 w +(button) 1360 6576 w +(is) 1725 6576 w +(depressed.) 1848 6576 w +(It) 2455 6576 w +(also) 2564 6576 w +(prints) 2803 6576 w +(the) 3130 6576 w +(string) 3329 6576 w +(in) 3655 6576 w +(the) 3790 6576 w +(center) 3989 6576 w +(of) 4336 6576 w +(its) 4478 6576 w +(window,) 4639 6576 w +(and maintains that string when the window is resized.) 720 6696 w +cleartomark +showpage +saveobj restore +%%EndPage: 7 7 +%%Page: 8 8 +/saveobj save def +mark +8 pagesetup +10 /LucidaSansUnicode00 f +(\255 8 \255) 2783 480 w +9 /LucidaTypewriter f +(#include) 1008 830 w +() 1593 830 w +(#include) 1008 940 w +() 1593 940 w +(#include) 1008 1050 w +() 1593 1050 w +(void) 1008 1270 w +(ereshaped\(Rectangle) 1008 1380 w +(r\)) 2308 1380 w +({) 1008 1490 w +(Point) 1268 1600 w +(p;) 1658 1600 w +(screen.r) 1268 1820 w +(=) 1853 1820 w +(r;) 1983 1820 w +(bitblt\(&screen,) 1268 1930 w +(screen.r.min,) 2308 1930 w +(&screen,) 3218 1930 w +(r,) 3803 1930 w +(Zero\);) 3998 1930 w +(/*) 4453 1930 w +(clear) 4648 1930 w +(*/) 5038 1930 w +(p.x) 1268 2040 w +(=) 1528 2040 w +(screen.r.min.x) 1658 2040 w +(+) 2633 2040 w +(Dx\(screen.r\)/2;) 2763 2040 w +(p.y) 1268 2150 w +(=) 1528 2150 w +(screen.r.min.y) 1658 2150 w +(+) 2633 2150 w +(Dy\(screen.r\)/2;) 2763 2150 w +(p) 1268 2260 w +(=) 1398 2260 w +(sub\(p,) 1528 2260 w +(div\(strsize\(font,) 1983 2260 w +("hello) 3153 2260 w +(world"\),) 3608 2260 w +(2\)\);) 4193 2260 w +(string\(&screen,) 1268 2370 w +(p,) 2308 2370 w +(font,) 2503 2370 w +("hello) 2893 2370 w +(world",) 3348 2370 w +(S\);) 3868 2370 w +(}) 1008 2480 w +(main\(void\)) 1008 2700 w +({) 1008 2810 w +(Mouse) 1268 2920 w +(m;) 1658 2920 w +(binit\(0,) 1268 3140 w +(0,) 1853 3140 w +(0\);) 2048 3140 w +(/*) 2568 3140 w +(initialize) 2763 3140 w +(graphics) 3478 3140 w +(library) 4063 3140 w +(*/) 4583 3140 w +(einit\(Emouse\);) 1268 3250 w +(/*) 2568 3250 w +(initialize) 2763 3250 w +(event) 3478 3250 w +(library) 3868 3250 w +(*/) 4388 3250 w +(ereshaped\(screen.r\);) 1268 3360 w +(for\(;;\){) 1268 3470 w +(m) 1528 3580 w +(=) 1658 3580 w +(emouse\(\);) 1788 3580 w +(if\(m.buttons) 1528 3690 w +(&) 2373 3690 w +(RIGHTB\)) 2503 3690 w +(break;) 1788 3800 w +(if\(m.buttons) 1528 3910 w +(&) 2373 3910 w +(LEFTB\){) 2503 3910 w +(string\(&screen,) 1788 4020 w +(m.xy,) 2828 4020 w +(font,) 3218 4020 w +("hello) 3608 4020 w +(world",) 4063 4020 w +(S\);) 4583 4020 w +(/*) 1788 4130 w +(wait) 1983 4130 w +(for) 2308 4130 w +(release) 2568 4130 w +(of) 3088 4130 w +(button) 3283 4130 w +(*/) 3738 4130 w +(do;) 1788 4240 w +(while\(emouse\(\).buttons) 2048 4240 w +(&) 3543 4240 w +(LEFTB\);) 3673 4240 w +(}) 1528 4350 w +(}) 1268 4460 w +(}) 1008 4570 w +10 /LucidaSansUnicode00 f +(The) 720 4750 w +(complete) 937 4750 w +(loaded) 1419 4750 w +(binary) 1782 4750 w +(is) 2120 4750 w +(a) 2236 4750 w +(little) 2327 4750 w +(over) 2580 4750 w +(26K) 2826 4750 w +(bytes) 3053 4750 w +(on) 3349 4750 w +(a) 3509 4750 w +(68020.) 3601 4750 w +(This) 4017 4750 w +(program) 4259 4750 w +(should) 4712 4750 w +(be) 720 4870 w +(compared) 873 4870 w +(to) 1390 4870 w +(the) 1522 4870 w +(similar) 1711 4870 w +(ones) 2072 4870 w +(in) 2336 4870 w +(the) 2460 4870 w +(excellent) 2648 4870 w +(paper) 3118 4870 w +(by) 3429 4870 w +(Rosenthal) 3577 4870 w +([Rose88].) 4086 4870 w +(\(The) 4606 4870 w +(cur\255) 4853 4870 w +(rent) 720 4990 w +(program) 1002 4990 w +(does) 1504 4990 w +(more:) 1821 4990 w +(it) 2190 4990 w +(also) 2342 4990 w +(employs) 2624 4990 w +(the) 3115 4990 w +(mouse.\)) 3356 4990 w +(The) 3863 4990 w +(clumsiest) 4131 4990 w +(part) 4677 4990 w +(is) 4960 4990 w +10 /LucidaTypewriter f +(ereshaped) 720 5110 w +10 /LucidaSansUnicode00 f +(,) 1368 5110 w +(a) 1439 5110 w +(function) 1533 5110 w +(with) 1972 5110 w +(a) 2215 5110 w +(known) 2308 5110 w +(name) 2666 5110 w +(that) 2970 5110 w +(is) 3199 5110 w +(called) 3317 5110 w +(from) 3638 5110 w +(the) 3908 5110 w +(event) 4101 5110 w +(library) 4402 5110 w +(when\255) 4750 5110 w +(ever) 720 5230 w +(the) 961 5230 w +(window) 1152 5230 w +(is) 1557 5230 w +(reshaped) 1673 5230 w +(or) 2156 5230 w +(moved,) 2294 5230 w +(as) 2687 5230 w +(is) 2829 5230 w +(discovered) 2945 5230 w +(inelegantly) 3504 5230 w +(but) 4069 5230 w +(adequately) 4268 5230 w +(by) 4833 5230 w +(a) 4985 5230 w +(special) 720 5350 w +(case) 1091 5350 w +(of) 1341 5350 w +(a) 1475 5350 w +(mouse) 1566 5350 w +(message.) 1925 5350 w +(\(Simple) 2449 5350 w +(so-called) 2842 5350 w +(expose) 3331 5350 w +(events) 3715 5350 w +(are) 4065 5350 w +(not) 4253 5350 w +(events) 4449 5350 w +(at) 4799 5350 w +(all) 4927 5350 w +(in) 720 5470 w +(8\275;) 853 5470 w +(the) 1070 5470 w +(layer) 1267 5470 w +(library) 1542 5470 w +(takes) 1894 5470 w +(care) 2193 5470 w +(of) 2439 5470 w +(them) 2580 5470 w +(transparently.\)) 2871 5470 w +(The) 3652 5470 w +(lesson) 3876 5470 w +(of) 4229 5470 w +(this) 4370 5470 w +(program,) 4592 5470 w +(with) 720 5590 w +(deference) 969 5590 w +(to) 1491 5590 w +(Rosenthal,) 1633 5590 w +(is) 2185 5590 w +(that) 2309 5590 w +(if) 2543 5590 w +(the) 2652 5590 w +(window) 2850 5590 w +(system) 3262 5590 w +(is) 3645 5590 w +(cleanly) 3768 5590 w +(designed) 4145 5590 w +(a) 4630 5590 w +(toolkit) 4728 5590 w +(should be unnecessary for simple tasks.) 720 5710 w +10 /LucidaSans-Demi f +(Status) 720 5950 w +10 /LucidaSansUnicode00 f +(As) 970 6106 w +(of) 1130 6106 w +(1992,) 1268 6106 w +(8\275) 1592 6106 w +(is) 1775 6106 w +(in) 1895 6106 w +(regular) 2026 6106 w +(daily) 2412 6106 w +(use) 2680 6106 w +(by) 2889 6106 w +(almost) 3044 6106 w +(all) 3410 6106 w +(the) 3563 6106 w +(60) 3758 6106 w +(people) 3924 6106 w +(in) 4292 6106 w +(our) 4423 6106 w +(research) 4627 6106 w +(center.) 720 6226 w +(Some) 1126 6226 w +(of) 1429 6226 w +(those) 1566 6226 w +(people) 1872 6226 w +(use) 2239 6226 w +(it) 2447 6226 w +(to) 2551 6226 w +(access) 2687 6226 w +(Plan) 3040 6226 w +(9) 3279 6226 w +(itself;) 3380 6226 w +(others) 3689 6226 w +(use) 4035 6226 w +(it) 4242 6226 w +(as) 4346 6226 w +(a) 4490 6226 w +(front) 4583 6226 w +(end) 4859 6226 w +(to remote UNIX systems, much as one would use an X terminal.) 720 6346 w +(Some) 970 6502 w +(things) 1275 6502 w +(about) 1619 6502 w +(8\275) 1938 6502 w +(may) 2122 6502 w +(change.) 2364 6502 w +(It) 2818 6502 w +(would) 2926 6502 w +(be) 3260 6502 w +(nice) 3421 6502 w +(if) 3661 6502 w +(its) 3769 6502 w +(capabilities) 3928 6502 w +(were) 4517 6502 w +(more) 4789 6502 w +(easily) 720 6622 w +(accessible) 1032 6622 w +(from) 1564 6622 w +(the) 1836 6622 w +(shell.) 2031 6622 w +(A) 2362 6622 w +(companion) 2471 6622 w +(to) 3048 6622 w +(this) 3186 6622 w +(paper) 3405 6622 w +([Pike91]) 3723 6622 w +(proposes) 4152 6622 w +(one) 4638 6622 w +(way) 4856 6622 w +(to) 720 6742 w +(do) 859 6742 w +(this,) 1024 6742 w +(but) 1276 6742 w +(that) 1479 6742 w +(does) 1712 6742 w +(not) 1985 6742 w +(include) 2187 6742 w +(any) 2581 6742 w +(graphics) 2792 6742 w +(functionality.) 3248 6742 w +(Perhaps) 3957 6742 w +(a) 4382 6742 w +(textual) 4479 6742 w +(ver\255) 4858 6742 w +(sion) 720 6862 w +(of) 958 6862 w +(the) 1091 6862 w +10 /LucidaTypewriter f +(/dev/bitblt) 1281 6862 w +10 /LucidaSansUnicode00 f +(file) 2108 6862 w +(is) 2294 6862 w +(a) 2408 6862 w +(way) 2497 6862 w +(to) 2715 6862 w +(proceed;) 2847 6862 w +(that) 3304 6862 w +(would) 3529 6862 w +(allow,) 3855 6862 w +(for) 4172 6862 w +(example,) 4345 6862 w +10 /LucidaTypewriter f +(awk) 4824 6862 w +10 /LucidaSansUnicode00 f +(programs to draw graphs directly.) 720 6982 w +(Can) 970 7138 w +(this) 1190 7138 w +(style) 1403 7138 w +(of) 1662 7138 w +(window) 1794 7138 w +(system) 2197 7138 w +(be) 2571 7138 w +(built) 2724 7138 w +(on) 2978 7138 w +(other) 3135 7138 w +(operating) 3426 7138 w +(systems?) 3926 7138 w +(A) 4425 7138 w +(major) 4529 7138 w +(part) 4844 7138 w +(of) 720 7258 w +(the) 857 7258 w +(design) 1051 7258 w +(of) 1413 7258 w +(8\275) 1550 7258 w +(depends) 1732 7258 w +(on) 2185 7258 w +(its) 2347 7258 w +(structure) 2503 7258 w +(as) 2980 7258 w +(a) 3125 7258 w +(file) 3219 7258 w +(server.) 3409 7258 w +(In) 3809 7258 w +(principle) 3939 7258 w +(this) 4400 7258 w +(could) 4617 7258 w +(be) 4921 7258 w +cleartomark +showpage +saveobj restore +%%EndPage: 8 8 +%%Page: 9 9 +/saveobj save def +mark +9 pagesetup +10 /LucidaSansUnicode00 f +(\255 9 \255) 2783 480 w +(done) 720 840 w +(for) 1004 840 w +(any) 1185 840 w +(system) 1396 840 w +(that) 1778 840 w +(supports) 2011 840 w +(user) 2483 840 w +(processes) 2736 840 w +(that) 3260 840 w +(serve) 3494 840 w +(files,) 3793 840 w +(such) 4070 840 w +(as) 4339 840 w +(any) 4488 840 w +(system) 4700 840 w +(running) 720 960 w +(NFS) 1163 960 w +(or) 1408 960 w +(AFS) 1573 960 w +([Sun89,) 1813 960 w +(Kaza87].) 2245 960 w +(One) 2763 960 w +(requirement,) 3022 960 w +(however,) 3713 960 w +(is) 4213 960 w +(8\275) 4355 960 w +10 /LucidaSansUnicode20 f +(\031) 4498 960 w +10 /LucidaSansUnicode00 f +(s) 4530 960 w +(need) 4643 960 w +(to) 4942 960 w +(respond) 720 1080 w +(to) 1158 1080 w +(its) 1297 1080 w +(clients) 1455 1080 w +10 /LucidaSansUnicode20 f +(\031) 1770 1080 w +10 /LucidaSansUnicode00 f +(requests) 1843 1080 w +(out) 2301 1080 w +(of) 2502 1080 w +(order:) 2641 1080 w +(if) 2976 1080 w +(one) 3084 1080 w +(client) 3305 1080 w +(reads) 3611 1080 w +10 /LucidaTypewriter f +(/dev/cons) 3919 1080 w +10 /LucidaSansUnicode00 f +(in) 4609 1080 w +(a) 4742 1080 w +(win\255) 4839 1080 w +(dow) 720 1200 w +(with) 961 1200 w +(no) 1206 1200 w +(characters) 1369 1200 w +(to) 1909 1200 w +(be) 2047 1200 w +(read,) 2206 1200 w +(other) 2493 1200 w +(clients) 2790 1200 w +(should) 3145 1200 w +(be) 3513 1200 w +(able) 3672 1200 w +(to) 3915 1200 w +(perform) 4053 1200 w +(I/O) 4485 1200 w +(in) 4685 1200 w +(their) 4815 1200 w +(windows,) 720 1320 w +(or) 1224 1320 w +(even) 1378 1320 w +(the) 1656 1320 w +(same) 1863 1320 w +(window.) 2170 1320 w +(Another) 2655 1320 w +(constraint) 3095 1320 w +(is) 3633 1320 w +(that) 3765 1320 w +(the) 4008 1320 w +(8\275) 4215 1320 w +(files) 4410 1320 w +(are) 4664 1320 w +(like) 4868 1320 w +(devices,) 720 1440 w +(and) 1153 1440 w +(must) 1376 1440 w +(not) 1662 1440 w +(be) 1865 1440 w +(cached) 2027 1440 w +(by) 2408 1440 w +(the) 2566 1440 w +(client.) 2764 1440 w +(NFS) 3134 1440 w +(cannot) 3358 1440 w +(honor) 3728 1440 w +(these) 4057 1440 w +(requirements;) 4361 1440 w +(AFS) 720 1560 w +(may) 934 1560 w +(be) 1171 1560 w +(able) 1327 1560 w +(to.) 1568 1560 w +(Of) 1768 1560 w +(course,) 1921 1560 w +(other) 2313 1560 w +(interprocess) 2608 1560 w +(communication) 3245 1560 w +(mechanisms) 4029 1560 w +(such) 4670 1560 w +(as) 4934 1560 w +(sockets) 720 1680 w +(could) 1131 1680 w +(be) 1443 1680 w +(used) 1608 1680 w +(as) 1886 1680 w +(a) 2038 1680 w +(basis) 2139 1680 w +(for) 2433 1680 w +(a) 2617 1680 w +(window) 2717 1680 w +(system.) 3131 1680 w +(One) 3580 1680 w +(may) 3821 1680 w +(even) 4066 1680 w +(argue) 4337 1680 w +(that) 4658 1680 w +(X) 4894 1680 w +10 /LucidaSansUnicode20 f +(\031) 4957 1680 w +10 /LucidaSansUnicode00 f +(s) 4989 1680 w +(model) 720 1800 w +(fits) 1063 1800 w +(into) 1258 1800 w +(this) 1488 1800 w +(overall) 1708 1800 w +(scheme.) 2073 1800 w +(It) 2548 1800 w +(may) 2656 1800 w +(prove) 2898 1800 w +(easy) 3213 1800 w +(and) 3469 1800 w +(worthwhile) 3691 1800 w +(to) 4264 1800 w +(write) 4404 1800 w +(a) 4686 1800 w +(small) 4783 1800 w +(8\275-like) 720 1920 w +(system) 1130 1920 w +(for) 1507 1920 w +(commercial) 1683 1920 w +(UNIX) 2278 1920 w +(systems) 2549 1920 w +(to) 2976 1920 w +(demonstrate) 3110 1920 w +(that) 3758 1920 w +(its) 3985 1920 w +(merits) 4138 1920 w +(can) 4481 1920 w +(be) 4685 1920 w +(won) 4840 1920 w +(in systems other than Plan 9.) 720 2040 w +10 /LucidaSans-Demi f +(Conclusion) 720 2280 w +10 /LucidaSansUnicode00 f +(In) 970 2436 w +(conclusion,) 1112 2436 w +(8\275) 1714 2436 w +(uses) 1908 2436 w +(an) 2179 2436 w +(unusual) 2347 2436 w +(architecture) 2781 2436 w +(in) 3410 2436 w +(concert) 3552 2436 w +(with) 3962 2436 w +(the) 4219 2436 w +(file-oriented) 4426 2436 w +(interprocess) 720 2556 w +(communication) 1359 2556 w +(of) 2145 2556 w +(Plan) 2283 2556 w +(9) 2524 2556 w +(to) 2627 2556 w +(provide) 2764 2556 w +(network-based) 3168 2556 w +(interactive) 3945 2556 w +(graphics) 4489 2556 w +(to) 4942 2556 w +(client) 720 2676 w +(programs.) 1023 2676 w +(It) 1593 2676 w +(demonstrates) 1698 2676 w +(that) 2400 2676 w +(even) 2630 2676 w +(production-quality) 2895 2676 w +(window) 3849 2676 w +(systems) 4257 2676 w +(are) 4688 2676 w +(not) 4880 2676 w +(inherently large or complicated and may be simple to use and to program.) 720 2796 w +10 /LucidaSans-Demi f +(Acknowledgements) 720 3036 w +10 /LucidaSansUnicode00 f +(Helpful) 970 3192 w +(comments) 1367 3192 w +(on) 1918 3192 w +(early) 2088 3192 w +(drafts) 2368 3192 w +(of) 2699 3192 w +(this) 2844 3192 w +(paper) 3070 3192 w +(were) 3395 3192 w +(made) 3672 3192 w +(by) 3986 3192 w +(Doug) 4149 3192 w +(Blewett,) 4457 3192 w +(Stu) 4887 3192 w +(Feldman,) 720 3312 w +(Chris) 1217 3312 w +(Fraser,) 1521 3312 w +(Brian) 1903 3312 w +(Kernighan,) 2200 3312 w +(Dennis) 2778 3312 w +(Ritchie,) 3165 3312 w +(and) 3576 3312 w +(Phil) 3808 3312 w +(Winterbottom.) 4035 3312 w +(8\275) 4814 3312 w +10 /LucidaSansUnicode20 f +(\031) 4957 3312 w +10 /LucidaSansUnicode00 f +(s) 4989 3312 w +(support) 720 3432 w +(for) 1137 3432 w +(color) 1315 3432 w +(was) 1597 3432 w +(added) 1819 3432 w +(by) 2158 3432 w +(Howard) 2312 3432 w +(Trickey.) 2722 3432 w +(Many) 3175 3432 w +(of) 3469 3432 w +(the) 3606 3432 w +(ideas) 3800 3432 w +(leading) 4093 3432 w +(to) 4489 3432 w +(8\275) 4627 3432 w +(were) 4810 3432 w +(tried) 720 3552 w +(out) 992 3552 w +(in) 1198 3552 w +(earlier,) 1335 3552 w +(sometimes) 1720 3552 w +(less) 2293 3552 w +(successful,) 2526 3552 w +(programs.) 3105 3552 w +(I) 3682 3552 w +(would) 3757 3552 w +(like) 4094 3552 w +(to) 4311 3552 w +(thank) 4454 3552 w +(those) 4773 3552 w +(users who suffered through some of my previous 7\275 window systems.) 720 3672 w +10 /LucidaSans-Demi f +(References) 720 3912 w +10 /LucidaSansUnicode00 f +([Duff90]) 720 4068 w +(Tom) 1168 4068 w +(Duff,) 1430 4068 w +10 /LucidaSansUnicode20 f +(\030\030) 1718 4068 w +10 /LucidaSansUnicode00 f +(Rc) 1782 4068 w +(-) 1941 4068 w +(A) 2044 4068 w +(Shell) 2158 4068 w +(for) 2433 4068 w +(Plan) 2617 4068 w +(9) 2863 4068 w +(and) 2971 4068 w +(UNIX) 3196 4068 w +(systems) 3477 4068 w +10 /LucidaSansUnicode20 f +(\031\031) 3868 4068 w +10 /LucidaSansUnicode00 f +(,) 3932 4068 w +(Proc.) 4010 4068 w +(of) 4296 4068 w +(the) 4440 4068 w +(Summer) 4641 4068 w +(1990) 720 4188 w +(UKUUG) 1006 4188 w +(Conf.,) 1384 4188 w +(London,) 1711 4188 w +(July,) 2139 4188 w +(1990,) 2379 4188 w +(pp.) 2697 4188 w +(21-33,) 2889 4188 w +(reprinted,) 3264 4188 w +(in) 3777 4188 w +(a) 3901 4188 w +(different) 3989 4188 w +(form,) 4440 4188 w +(in) 4737 4188 w +(this) 4861 4188 w +(volume.) 720 4308 w +([Far89] Far too many people, XTERM\(1\), Massachusetts Institute of Technology, 1989.) 720 4464 w +([Gos86]) 720 4620 w +(James) 1147 4620 w +(Gosling) 1484 4620 w +(and) 1901 4620 w +(David) 2132 4620 w +(Rosenthal,) 2457 4620 w +10 /LucidaSansUnicode20 f +(\030\030) 3017 4620 w +10 /LucidaSansUnicode00 f +(A) 3081 4620 w +(window) 3202 4620 w +(manager) 3623 4620 w +(for) 4099 4620 w +(bitmapped) 4290 4620 w +(dis\255) 4864 4620 w +(plays) 720 4740 w +(and) 1009 4740 w +(UNIX) 1228 4740 w +10 /LucidaSansUnicode20 f +(\031\031) 1463 4740 w +10 /LucidaSansUnicode00 f +(,) 1527 4740 w +(in) 1598 4740 w +(Methodology) 1728 4740 w +(of) 2397 4740 w +(Window) 2534 4740 w +(Management,) 2951 4740 w +(edited) 3646 4740 w +(by) 3989 4740 w +(F.R.A.) 4143 4740 w +(Hopgood) 4464 4740 w +(et) 4947 4740 w +(al., Springer, 1986.) 720 4860 w +([Kaza87]) 720 5016 w +(Mike) 1183 5016 w +(Kazar,) 1451 5016 w +10 /LucidaSansUnicode20 f +(\030\030) 1795 5016 w +10 /LucidaSansUnicode00 f +(Synchronization) 1859 5016 w +(and) 2673 5016 w +(Caching) 2892 5016 w +(issues) 3321 5016 w +(in) 3660 5016 w +(the) 3790 5016 w +(Andrew) 3985 5016 w +(File) 4393 5016 w +(System) 4601 5016 w +10 /LucidaSansUnicode20 f +(\031\031) 4944 5016 w +10 /LucidaSansUnicode00 f +(,) 5008 5016 w +(Tech.) 720 5136 w +(Rept.) 1027 5136 w +(CMU-ITC-058,) 1321 5136 w +(Information) 2086 5136 w +(Technology) 2696 5136 w +(Center,) 3298 5136 w +(Carnegie) 3693 5136 w +(Mellon) 4165 5136 w +(University,) 4530 5136 w +(June, 1987.) 720 5256 w +([Kill84]) 720 5412 w +(Tom) 1115 5412 w +(Killian,) 1383 5412 w +10 /LucidaSansUnicode20 f +(\030\030) 1764 5412 w +10 /LucidaSansUnicode00 f +(Processes) 1828 5412 w +(as) 2352 5412 w +(Files) 2509 5412 w +10 /LucidaSansUnicode20 f +(\031\031) 2728 5412 w +10 /LucidaSansUnicode00 f +(,) 2792 5412 w +(USENIX) 2875 5412 w +(Summer) 3269 5412 w +(Conf.) 3719 5412 w +(Proc.,) 4031 5412 w +(Salt) 4354 5412 w +(Lake) 4580 5412 w +(City) 4853 5412 w +(June, 1984.) 720 5532 w +([Pike83]) 720 5688 w +(Rob) 1149 5688 w +(Pike,) 1376 5688 w +10 /LucidaSansUnicode20 f +(\030\030) 1646 5688 w +10 /LucidaSansUnicode00 f +(The) 1710 5688 w +(Blit:) 1931 5688 w +(A) 2156 5688 w +(Multiplexed) 2265 5688 w +(Graphics) 2876 5688 w +(Terminal) 3340 5688 w +10 /LucidaSansUnicode20 f +(\031\031) 3768 5688 w +10 /LucidaSansUnicode00 f +(,) 3832 5688 w +(Bell) 3904 5688 w +(Labs) 4116 5688 w +(Tech.) 4378 5688 w +(J.,) 4682 5688 w +(V63,) 4817 5688 w +(#8, part 2, pp. 1607-1631.) 720 5808 w +([Pike83a]) 720 5964 w +(Rob) 1208 5964 w +(Pike,) 1438 5964 w +10 /LucidaSansUnicode20 f +(\030\030) 1711 5964 w +10 /LucidaSansUnicode00 f +(Graphics) 1775 5964 w +(in) 2242 5964 w +(Overlapping) 2376 5964 w +(Bitmap) 3009 5964 w +(Layers) 3387 5964 w +10 /LucidaSansUnicode20 f +(\031\031) 3695 5964 w +10 /LucidaSansUnicode00 f +(,) 3759 5964 w +(Trans.) 3834 5964 w +(on) 4181 5964 w +(Graph.,) 4347 5964 w +(Vol) 4747 5964 w +(2,) 4945 5964 w +(#2, 135-160, reprinted in Proc. SIGGRAPH ) 720 6084 w +10 /LucidaSansUnicode20 f +(\031) 2805 6084 w +10 /LucidaSansUnicode00 f +(83, pp. 331-356.) 2837 6084 w +([Pike87]) 720 6240 w +(Rob) 1156 6240 w +(Pike,) 1389 6240 w +10 /LucidaSansUnicode20 f +(\030\030) 1665 6240 w +10 /LucidaSansUnicode00 f +(The) 1729 6240 w +(Text) 1956 6240 w +(Editor) 2219 6240 w +10 /LucidaTypewriter f +(sam) 2550 6240 w +10 /LucidaSansUnicode20 f +(\031\031) 2766 6240 w +10 /LucidaSansUnicode00 f +(,) 2830 6240 w +(Softw.) 2908 6240 w +(-) 3252 6240 w +(Prac.) 3356 6240 w +(and) 3636 6240 w +(Exp.,) 3862 6240 w +(Nov) 4150 6240 w +(1987,) 4383 6240 w +(Vol) 4713 6240 w +(17) 4914 6240 w +(#11, pp. 813-845, reprinted in this volume.) 720 6360 w +([Pike88]) 720 6516 w +(Rob) 1171 6516 w +(Pike,) 1419 6516 w +10 /LucidaSansUnicode20 f +(\030\030) 1710 6516 w +10 /LucidaSansUnicode00 f +(Window) 1774 6516 w +(Systems) 2213 6516 w +(Should) 2668 6516 w +(Be) 3060 6516 w +(Transparent) 3235 6516 w +10 /LucidaSansUnicode20 f +(\031\031) 3821 6516 w +10 /LucidaSansUnicode00 f +(,) 3885 6516 w +(Comp.) 3978 6516 w +(Sys.,) 4358 6516 w +(Summer) 4641 6516 w +(1988, Vol 1 #3, pp. 279-296.) 720 6636 w +([Pike89]) 720 6792 w +(Rob) 1149 6792 w +(Pike,) 1375 6792 w +10 /LucidaSansUnicode20 f +(\030\030) 1644 6792 w +10 /LucidaSansUnicode00 f +(A) 1708 6792 w +(Concurrent) 1816 6792 w +(Window) 2397 6792 w +(System) 2814 6792 w +10 /LucidaSansUnicode20 f +(\031\031) 3157 6792 w +10 /LucidaSansUnicode00 f +(,) 3221 6792 w +(Comp.) 3292 6792 w +(Sys.,) 3649 6792 w +(Spring) 3909 6792 w +(1989,) 4260 6792 w +(Vol) 4584 6792 w +(2) 4779 6792 w +(#2,) 4882 6792 w +(pp. 133-153.) 720 6912 w +([Pike91]) 720 7068 w +(Rob) 1160 7068 w +(Pike,) 1397 7068 w +10 /LucidaSansUnicode20 f +(\030\030) 1678 7068 w +10 /LucidaSansUnicode00 f +(A) 1742 7068 w +(Minimalist) 1862 7068 w +(Global) 2413 7068 w +(User) 2773 7068 w +(Interface) 3041 7068 w +10 /LucidaSansUnicode20 f +(\031\031) 3465 7068 w +10 /LucidaSansUnicode00 f +(,) 3529 7068 w +(USENIX) 3612 7068 w +(Summer) 4006 7068 w +(Conf.) 4456 7068 w +(Proc.,) 4768 7068 w +(Nashville, June, 1991.) 720 7188 w +cleartomark +showpage +saveobj restore +%%EndPage: 9 9 +%%Page: 10 10 +/saveobj save def +mark +10 pagesetup +10 /LucidaSansUnicode00 f +(\255 10 \255) 2752 480 w +([Pike92]) 720 840 w +(Rob) 1184 840 w +(Pike,) 1413 840 w +(Dave) 1685 840 w +(Presotto,) 1965 840 w +(Ken) 2438 840 w +(Thompson,) 2664 840 w +(Howard) 3255 840 w +(Trickey,) 3669 840 w +(and) 4094 840 w +(Phil) 4317 840 w +(Winterbot\255) 4535 840 w +(tom,) 720 960 w +(Operating) 989 960 w +(Systems) 1518 960 w +(Review) 1958 960 w +(Vol) 2336 960 w +(27,) 2536 960 w +(#2,) 2739 960 w +(Apr) 2942 960 w +(1993,) 3160 960 w +(pp.) 3489 960 w +(72-76) 3692 960 w +(\(reprinted) 4047 960 w +(from) 4573 960 w +(Pro\255) 4850 960 w +(ceedings) 720 1080 w +(of) 1183 1080 w +(the) 1314 1080 w +(5th) 1502 1080 w +(ACM) 1697 1080 w +(SIGOPS) 1954 1080 w +(European) 2329 1080 w +(Workshop,) 2816 1080 w +(Mont) 3364 1080 w +(Saint-Michel,) 3643 1080 w +(1992,) 4316 1080 w +(Paper) 4633 1080 w +(n\272) 4936 1080 w +(34, and reprinted in this volume\).) 720 1200 w +([Pike94]) 720 1356 w +(Rob) 1152 1356 w +(Pike) 1381 1356 w +(and) 1621 1356 w +(Ken) 1843 1356 w +(Thompson,) 2068 1356 w +10 /LucidaSansUnicode20 f +(\030\030) 2658 1356 w +10 /LucidaSansUnicode00 f +(Hello) 2722 1356 w +(World) 3013 1356 w +(or) 3335 1356 w +10 /LucidaSansUnicode03 f +(\232\261\273\267\274\255\301\261) 3479 1356 w +(\272\314\303\274\265) 4029 1356 w +10 /LucidaSansUnicode00 f +(or) 4370 1356 w + save 4515 1356 m + currentpoint translate 10 10 scale ptsize dup scale + 24 24 true [24 0 0 -24 0 22] + {<00000000000002000001f000007fc00007c0001c000060000000000000000000000000000000000000000800001000001000001000001000000c000007fff001fff0000000000000>} + imagemask restore + save 4620 1356 m + currentpoint translate 10 10 scale ptsize dup scale + 24 24 true [24 0 0 -24 0 22] + {<000000001800000c00001c0000180000380000300000600000600000c0000080000180000300000270000798000e18000c1802181806180c0c300c18700c70600fe0600780000000>} + imagemask restore + save 4725 1356 m + currentpoint translate 10 10 scale ptsize dup scale + 24 24 true [24 0 0 -24 0 22] + {<0000000800000c00000c00000c01e00c0ff818303c1800601800801800001000003000003000003100003100003210003220003220001430001c1ffe1c07fc0c0000080000000000>} + imagemask restore + save 4830 1356 m + currentpoint translate 10 10 scale ptsize dup scale + 24 24 true [24 0 0 -24 0 22] + {<01800000c00000c00000800001860021bf003fe0001980000100000100000300000303c0021c3002701802c00c07000c07000c0600180000380000700000e0000380001c00000000>} + imagemask restore + save 4935 1356 m + currentpoint translate 10 10 scale ptsize dup scale + 24 24 true [24 0 0 -24 0 22] + {<0000003001801800601c006018006018004018004030204e301ffc300c403000402000406000406400406400606400606c0060680fe028307038407c3840ee183fc6100f00000000>} + imagemask restore + save 720 1476 m + currentpoint translate 10 10 scale ptsize dup scale + 24 24 true [24 0 0 -24 0 22] + {<071c70061860061860061860061860061860061860061866ffffff061860061860061860061860061860061860061fe006186006186006000006000006000006000c07fffe060000>} + imagemask restore + save 825 1476 m + currentpoint translate 10 10 scale ptsize dup scale + 24 24 true [24 0 0 -24 0 22] + {<0800300ffff80c18300c18300c18300ffff00c18300c18300c18300ffff00c743000e20001c1800300e00ee1ff38c19ec0c18600c18000c18000c1800181800181800301800c0180>} + imagemask restore +10 /LucidaSansUnicode20 f +(\031\031) 930 1476 w +10 /LucidaSansUnicode00 f +(, USENIX Winter Conf. Proc., San Diego, Jan, 1993, reprinted in this volume.) 994 1476 w +([PLR85]) 720 1632 w +(Rob) 1124 1632 w +(Pike,) 1352 1632 w +(Bart) 1623 1632 w +(Locanthi) 1855 1632 w +(and) 2307 1632 w +(John) 2529 1632 w +(Reiser,) 2787 1632 w +10 /LucidaSansUnicode20 f +(\030\030) 3157 1632 w +10 /LucidaSansUnicode00 f +(Hardware/Software) 3221 1632 w +(Tradeoffs) 4196 1632 w +(for) 4702 1632 w +(Bit\255) 4883 1632 w +(map Graphics on the Blit) 720 1752 w +10 /LucidaSansUnicode20 f +(\031\031) 1914 1752 w +10 /LucidaSansUnicode00 f +(, Softw. - Prac. and Exp., Feb 1985, Vol 15 #2, pp. 131-152.) 1978 1752 w +([Pres90]) 720 1908 w +(David) 1160 1908 w +(L.) 1479 1908 w +(Presotto) 1609 1908 w +(and) 2053 1908 w +(Dennis) 2279 1908 w +(M.) 2660 1908 w +(Ritchie,) 2824 1908 w +10 /LucidaSansUnicode20 f +(\030\030) 3229 1908 w +10 /LucidaSansUnicode00 f +(Interprocess) 3293 1908 w +(Communication) 3938 1908 w +(in) 4748 1908 w +(the) 4885 1908 w +(Ninth) 720 2028 w +(Edition) 1025 2028 w +(Unix) 1401 2028 w +(System) 1663 2028 w +10 /LucidaSansUnicode20 f +(\031\031) 2006 2028 w +10 /LucidaSansUnicode00 f +(,) 2070 2028 w +(Softw.) 2143 2028 w +(-) 2482 2028 w +(Prac.) 2581 2028 w +(and) 2856 2028 w +(Exp.,) 3077 2028 w +(June) 3360 2028 w +(1990,) 3612 2028 w +(Vol) 3937 2028 w +(20) 4133 2028 w +(#S1,) 4299 2028 w +(pp.) 4551 2028 w +(S1/3-) 4749 2028 w +(S1/17.) 720 2148 w +([Rose88]) 720 2304 w +(David) 1179 2304 w +(Rosenthal,) 1489 2304 w +10 /LucidaSansUnicode20 f +(\030\030) 2033 2304 w +10 /LucidaSansUnicode00 f +(A) 2097 2304 w +(Simple) 2202 2304 w +(X11) 2562 2304 w +(Client) 2788 2304 w +(Program) 3107 2304 w +(-or-) 3552 2304 w +(How) 3807 2304 w +(hard) 4056 2304 w +(can) 4314 2304 w +(it) 4519 2304 w +(really) 4622 2304 w +(be) 4921 2304 w +(to write ) 720 2424 w +10 /LucidaSansUnicode20 f +(\030\030) 1122 2424 w +10 /LucidaSansUnicode00 f +(Hello, World) 1186 2424 w +10 /LucidaSansUnicode20 f +(\031\031) 1779 2424 w +10 /LucidaSansUnicode00 f +(?) 1843 2424 w +10 /LucidaSansUnicode20 f +(\031\031) 1885 2424 w +10 /LucidaSansUnicode00 f +(, USENIX Winter Conf. Proc., Dallas, Jan, 1988, pp. 229-242.) 1949 2424 w +([Sche86]) 720 2580 w +(Robert) 1181 2580 w +(W.) 1548 2580 w +(Scheifler) 1712 2580 w +(and) 2173 2580 w +(Jim) 2399 2580 w +(Gettys,) 2598 2580 w +10 /LucidaSansUnicode20 f +(\030\030) 2982 2580 w +10 /LucidaSansUnicode00 f +(The) 3046 2580 w +(X) 3274 2580 w +(Window) 3384 2580 w +(System) 3809 2580 w +10 /LucidaSansUnicode20 f +(\031\031) 4152 2580 w +10 /LucidaSansUnicode00 f +(,) 4216 2580 w +(ACM) 4295 2580 w +(Trans.) 4566 2580 w +(on) 4917 2580 w +(Graph., Vol 5 #2, pp. 79-109.) 720 2700 w +([Sun89]) 720 2856 w +(Sun) 1135 2856 w +(Microsystems,) 1358 2856 w +(NFS:) 2094 2856 w +(Network) 2353 2856 w +(file) 2802 2856 w +(system) 2999 2856 w +(protocol) 3385 2856 w +(specification,) 3835 2856 w +(RFC) 4524 2856 w +(1094,) 4756 2856 w +(Network Information Center, SRI International, March, 1989.) 720 2976 w +cleartomark +showpage +saveobj restore +%%EndPage: 10 10 +%%Trailer +done +%%Pages: 10 diff --git a/sys/doc/8½/fig1.ps b/sys/doc/8½/fig1.ps new file mode 100644 index 000000000..cab753551 --- /dev/null +++ b/sys/doc/8½/fig1.ps @@ -0,0 +1,7508 @@ +%!PS-Adobe-2.0 +%%Version: 3.3.2 +%%DocumentFonts: (atend) +%%Pages: (atend) +%%EndComments +%%EndProlog +%%BeginSetup +mark +%%Patch from lp +%%EndPatch from lp + +/picstr 280 string def +-97 96 translate +806.40 599.04 scale + +1120 832 2 [1120 0 0 -832 0 832] +{currentfile picstr readhexstring pop} image + +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcc0000000 +0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000 +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcc000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000fcfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfccffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +fcc0000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +cfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +fccfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffcffc00000ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +cfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffcffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +fccfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffcffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +cfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffcffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +ffc3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +fccfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffcffcffffcfffc0fffffffffffffffffffffff +fff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccffffc00 +03c3ffffffffffff003fffffffffffffffc00ffc0ffffffff0ffc00fffffff03 +ffc0fffffffffffffffffffffffffffffffffffffffffffc +cfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffcffcffffcfff0c3cfffffffffffffffffffff +fff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcffffff0 +ffc3ffffffffffff0f0fffffffffffffff0f03f0c3ffffffc0ff0f03fffffc30 +ff0c3ffffffffffffffffffffffffffffffffffffffffffc +fccfffff0ffc03fff0fffc3fffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffcffcffffcfff0c33fc00ffffff003ff00fc00 +fff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccffffff0 +ffc303f0fc3fffff0fc3fc03ff00ffffffffc3c3f0ffffff30ffffc3fffff0fc +3c3f0ffffffffffffffffffffffffffffffffffffffffffc +cfcfffff0ff0fffff0fffc3ff0fff03fffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffcffcffffcfffc0cff0f0fffffc3fcfc3f3ffc +3f0003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcffffff0 +ffc0c0f0fc3fffff0fc3f0f0fc3f3fffffffc3c3f0fffffff0ffff0ffc3ff0fc +3c3f0ffffffffffffffffffffffffffffffffffffffffffc +fccffffc3ff0fffff0fff0ffc0ffc30fffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffcffcffffcfffff3fc3f0fffffc3fff0fffffc +3ff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccffffff0 +ffc3f0f0fc3fffff0fc3c3f0f0ffffffffff0fc3f0fffffff0fff03ffc3ff0fc +3c3f0ffffffffffffffffffffffffffffffffffffffffffc +cfcffffc3ff0fffc00fff0ff30ff0fc3ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffcffcffffcffffcffc3f0fffffc00ff0fffc00 +3ff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcffffff0 +ffc3f0f0fc3fffff0fc3c000f0fffffffffc3ff0c0fffffff0ffff0ffffff0fc +3c3f0ffffffffffffffffffffffffffffffffffffffffffc +fccffff0ff0003f0f0ffc3fff0ff0fc3ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffcffcffffcffff303c3f0ffffffc00f0fff0fc +3ff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccffffff0 +ffc3f0f0fc3fffff0fc3c3fff0fffffffff0fffc30fffffff0ffffc3fffff0fc +3c3f0ffffffffffffffffffffffffffffffffffffffffffc +cfcffff0fff0ffc3f0ffc3fff0ff0fc3ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffcffcffffcfffcc30f0c0ffffffff0f0fff0fc +3ff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcffffff0 +ffc3f0f0fc3fffff0fc3c3fff0ffffffffc3fffff0fffffff0ffffc3fffff0fc +3c3f0ffffffffffffffffffffffffffffffffffffffffffc +fccfffc3fff0ffc3f0ff0ffff0ff0fc3ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffcffcffffcfff3c30fc30fffffcff0fc3f30f0 +3ff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccffffff0 +ffc3f0f0303fffff0f0ff0fcfc3f3fffff0003c3c3fffffff0ff0f03fc3ffc30 +ff0c3ffffffffffffffffffffffffffffffffffffffffffc +cfcfffc3fff0ffc3f0ff0ffff0ff0fc3ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffcffcffffcfffff03fff0ffffff003ff00fc0c +0ffc03ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcffffff0 +ffc3f0fc0c3fffff003ffc03ff00ffffff0003f00ffffffff0ffc00ffc3fff03 +ffc0fffffffffffffffffffffffffffffffffffffffffffc +fccfff0ffff0ffc3f0fc3ffff0ff0fc3ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffcffcffffcfffffffc3c3fffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +cfcfff0ffff0fff0c0fc3ffff0ffc30fffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffcffcffffcffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +fccffc3ffff0fffc30f0fffff0fff03fffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffcffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +cfcffc3ffffffffffff0ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffcffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +fccfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffcffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +cfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffcffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +fccfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffcffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +ffffffff8001ffffffffffffffffffffffffffffffffffffffffffffffffa945 +bffffffffffffffffffffff45515fffffffffffffffffffc +cfcfc00000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000ffcffffcffffffffffffffffff0ffc00ffc0 +fff03fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +ffffffe0004403ffffffffffffffffffffffffffffffffffffffffffff995655 +05bfffffffffffffffffff0101505ffffffffffffffffffc +fccfc00000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000ffcffffcfffffffffffffffffc0ff0f03f0c +3fc30fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +fffffd000100003fffffffffffffffffffffffffaffffffffffffffffc415445 +105bfffffffffffffffff011455541fffffffffffffffffc +cfcfc00000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000ffcffffcfff0c0ffc00ff00ff30ffffc3c3f +0f0fc3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +ffffe00140000003ffffffffffffffdfffffffffe7fffffffffffffff1156151 +4456ffffffffffffffff8004040004bffffffffffffffffc +fccfc00000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000ffcffffcfff0303f0f0fc3f3ff0ffff0fc3f +0f0fc3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +ffff400000400001bffffffffffffebffffffffff9ffffffffffffffd0404912 +0016bffffffffffffffd00101140006ffffffffffffffffc +cfcfc44444444444111044444444444444441044444411111110444444444444 +4444444444444444444444444410444444444444444411111044444444411111 +1044411111104444444444444444ffcffffcfff0fc3c3f0f0fffff0fff03fc3f +0f0fc3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +fffc0000010500003ffffffffffffdffffffffffed7fffffffffffffc1056518 +1142affffffffffffff500404015000ffffffffffffffffc +fccfc10010000101040410100001010004010401004100410101010041010401 +0004101110100104100101010404010000010101000100400101000010100101 +0401101004010010010000441010ffcffffcfff0fc3c3f0f0fffff0ffff0fc3f +0f0fc3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +fff00000010000000ffffffffffff2ffffffffffba5fffffffffffff001545a5 +0005abffffffffffffe0006544401113fffffffffffffffc +cfcfc41101114044010104044440441110441044110411041010441104104110 +4441010001044410411010410110404444444410111044045010111101044410 +0444044110404404441111010400ffcffffcfff0fc3c3f0f0fffff0ffffc3c3f +0f0fc3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +ffe000000000000003ffffffffffd7ffffffffffee5ffffffffffffc11101550 +0111a67fffffffffffc006be54000001fffffffffffffffc +fccfc04044041040441041110110000404100411004100400440400410401004 +0010441110410101004104104401040410100104410401010104401044404041 +1000410404110110110410101044ffcffffcfff0fc3f0c0f0fffff0ffffc3c3f +0f0fc3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +ffc000000000000003ffffffffffd6ffffffffffea97fffffffffffc00014511 +041149bfffffffffff005bffd4400005bffffffffffffffc +cfcfc40401010404004110441004444101011000441044044105111041044441 +1104010041104044110441040110411104044040101044101041044000040404 +0111041041101004404101044010ffcffffcfff0fc3fc30fc3f3ff0ff0f03f0c +3fc30fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +ffc000000005000000ffffffffffc3ffffffffffee57fffffffffff044100450 +1055555fffffffffff01bfffe54400403ffffffffffffffc +fccfc04110404110441011010440011010440111010411101011404100410011 +0041104410041101040104104404104010411114410410410440010514410440 +4040404010010140041044010440ffcffffcfff0fc3fff0ff00fff0ffc00ffc0 +fff03fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +ff4000000010000000ffffffffff47fffffffffffa83ffffffffffc000004445 +50555657fffffffffd06bfffea1004006ffffffffffffffc +cfcfc41004101004110400441104440104004004104100010440101044104440 +4410040104410044104401041041040441040540041041000104501001104104 +1104110441104411110400440404ffcffffcfffffffc3c3fffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +ff0000000000000000ffffffffff46ffffffffffae47ffffffffff0000000155 +01655996fffffffffc06fffffe9451410ffffffffffffffc +fccfc10441040440404111010100404410441110040044440104410401040010 +0441104410104401010050404100404104004544410404111040044110001010 +0401004004041040404111004110ffcffffcffffffff00ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +fd0000000050000000ffffffffff03ee9abfffe96a82fffffffffe4010420069 +555955a5fffffffff407ffffffea55104ffffffffffffffc +cfcfc41010104114041040404411040104040404411401011010104110411104 +4010410104401044104404110411041040441640100110041011100404444101 +1044101110100410101040441000ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +fc10000001400000017ffffffffe07b6bd8555469900fffffffffe00040105a5 +49945591fffffffff417bffffffffd5147fffffffffffffc +fccfc04104110401010410110040111041010440104110441101041004000041 +0441041004044104040441004010040411011911011041104401011041041010 +4040044004014104040404104110ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +fc00000000100000003ffffffffd03aafa5af956a600fffffffffc00440115a6 +51955665fffffffff44affffffffff9147fffffffffffffc +cfcfc40041001044104041004411040414444011001010110040410441111104 +0400410440401041104104110404411100441441100410410110100410100411 +0411100441101041111041010100ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +fc00000001100400517ffffffffd03761156a55415107ffffffffc0000005bbe +985555c1bffffffff407fa9bff906aa107fffffffffffffc +fccfc04410444001010410440100410115400400110404404411041010040040 +4111004010410410404401004140440044104504044104104404444104014100 +0100044010444100004104101010ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +fc00000000117554443ffffffffc05a48159a15151203ffffffff00000016fff +e5265a457ffffffff40a94016956ffe053fffffffffffffc +cfcfc40100110440441041011011104455144111044110041100400441105104 +1040441104104104110110111011004410404690410410401041001010440411 +1011101111000411111041010104ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffc3fffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffff03ffffffffffffffffffffffffffffffffff +ffffffffffffffffff03ffffffffffffffffffffffffffffffffff0fcfffffff +fc000000015ffa01107ffffffffc05bbaba8f9aa96401ffffffff00000056bff +fffd90567ffffffff4067fdbfe59966013fffffffffffffc +fccfc11044404111100104100440040104411040401041010411044010040040 +4404104045441041101001040440441100111fd4104040110410110401004041 +0100444004111000400404111040ffcffffcfff0ff3fc03ff00fff0ffc00ffc0 +fff03fffffff00ffffffffffff0fff03ffffffff0fffffffffffffffffffffff +fffffffffffffffffffc00fc3ffffc3ffc0ffffffc000ffffffffffffffff0ff +f03ffc0ffc00fc000ffffffc0fff03ffffffffffffffffffffffffffffffffff +ffffc03fffffc000ff03ffffffffffffffffffffffffffffffffff3ccfffffff +fd04000006ffee0101bffffffffc1aed997afc555a501fffffff80000401abff +ffffe664bffffffffc0a54545560116047fffffffffffffc +cfcfc10100110004444000044411011010011010110404101010101101104404 +4101010411444104010444410011004044405b91041104404104400110441040 +4411004440010111111044404404ffcffffcfff03f3f0f0fc3c3fc0ff0f03f0c +3fc30ffffffc3c3ffffffffffc0ffc30fffffffc0fffffffffffffffffffffff +fffffffffffffffffff0f03c3ffff03ff0c3fffffc000fffffffffffffffc0ff +c30ff3f3f0f03c000ffffff0c3fff3ffffffffffffffffffffffffffffffffff +ffff0f0fffffc000fff3ffffffffffffffffffffffffffffffffff0fcfffffff +fe1e45557fffff8000fffffffffc5b7fbff3fdbabb900fffffff4000000506bf +fffff1987ffffffffd1542517e0451644bfffffffffffffc +fccfd01011041100041111104101100441104441004101010404410044040110 +1040441106901040404104104440440400110584100040101010044411010411 +0104040104404104110410100100ffcffffcfff03f3c3fff0ffff30ffffc3c3f +0f0fc3fffff0fffc3f0ffffff30ff0fc3ffffff30fffffffffffffffffffffff +fffffffffffffffffffffc3c303fcc3fc3f0ffffffff0cc30fffffffffff30ff +0fc3f3f3fffc3cffffffffc3f0ff0fffffffffffffffffffffffffffffffffff +fffc3fffffffcfffff0fffffffffffffffffffffffffffffffffff3ccfffffff +fe2abaffffffff6000fffffffffc5bbeffdfff3ffa900fffffff40000005846f +fefff16abfffffffff4559965c66aaa95ffffffffffffffc +cfcfc10404400411104041001010044010410410441044104110004410411004 +4011010411b44011041041040411010111040440411011044104401040404040 +1041104040110410100111044410ffcffffcfff30f3c3fff0fffff0ffff0fc3f +0f0fc3fffff0fffc3f0fffffff0ff0fc3fffffcf0fffffffffffffffffffffff +fffffffffffffffffffff0fc0c0ffc3fc3f0fffffffc3c30c3fffffffffff0ff +0fc3fc0ffffc3cffffffffc3f0ffffffffffffffffffffffffffffffffffffff +fffc30ffffffcfffffffffffffffffffffffffffffffffffffffff0fcfffffff +ff3aafefffffff8000fffffffff85fdfffafff4bae541fffffff00000110145b +d60af0697fffffffffdaa96abfa9aaa8affffffffffffffc +fccfc01040110104040410110104401100004101110010441004110101044440 +1100444041a40410110410011040101041114410100441100410110404101104 +0410040404401001044404404040ffcffffcfff30f3c3fff0fffff0fff03fc3f +0f0fc3fffff0ffff0f3fffffff0ff0fc3fffff3f0fffffffffffffffffffffff +ffffffffffffffffffff03fc3f0ffc3fc3f0fffffff0fc30c3fffffffffff0ff +0fc3fffffff0fc003fffffc3f0ffffffffffffffffffffffffffffffffffffff +fffc0c3fffffc003ffffffffffffffffffffffffffffffffffffff3ccfffffff +ff25aeffbfffffe000fffffffff93bbaa57ffe8555601fffffff00000045201b +79bba2547fffffffffcabfee7f6feba8affffffffffffffc +cfcfc40411001040404101004044110411111044004404104110404410100104 +4044001101251041104101100404444410441104414010044104041041044041 +0104404041044110004040110104ffcffffcfff3c33c3f0f0fffff0ffff0fc3f +0f0fc3fffff0fc3fc0ffffffff0ff0fc3fffff0003ffffffffffffffffffffff +fffffffffffffffffffff0fc3f0ffc3ff0c0ffffffc3fc30c3fffff0003ff0ff +c303ffffffc3fffc0fffffc3f0ffffffffffffffffffffffffffffffffffffff +fffc3f0fffffffc0ffffffffffffffffffffffffffffffffffffff0fcfffffff +ff3506eeffffffb001fffffffff86efffeb9a86aa5553fffffff50000151a84f +b53684656fffffffffcaaeeabfabeea87ffffffffffffffc +fccfc11040444004110444101101004100404401110111010101101004444410 +0410444040510404040410444110004041010441101104441001104104011104 +1040441104041041110411001010ffcffffcfff3c33c3f0f0fffff0ffffc3c3f +0f0fc3fffff0fc3fc0ffffffff0ff0fc3fffff0003ffffffffffffffffffffff +fffffffffffffffffffffc3c3f0ffc3ffc30ffffffc3fc30c3fffffffffff0ff +f0c3ffffff0fffff0fffffc3f0ffffffffffffffffffffffffffffffffffffff +fffc3f0ffffffff0ffffffffffffffffffffffffffffffffffffff3ccfffffff +ffea406eaabaaff003fffffffff8abafa3e00059a954afffffffe000016aa45f +bb7ad111afffffffffd5bee9ffe7bf58bffffffffffffffc +cfcfc40404010441041010040410110410041044041040441041110441010104 +4404101104104110411004011004440410441010044040101511041010400001 +0404000040410104104010444104ffcffffcfff3f03c3f0f0fffff0ffffc3c3f +0f0fc3fffff0fc3f3c3fffffff0ff0fc3fffffff0fffffffffffffffffffffff +fffffffffffffffffffffc3c3f0ffc3ffff0ffffff0ffc30c3fffffffffff0ff +ffc3fffffc3fffff0fffffc3f0ffffffffffffffffffffffffffffffffffffff +fffc3f0ffffffff0ffffffffffffffffffffffffffffffffffffff0fcfffffff +ffe5045a54057af003fffffffff46aa94e9540561550afffffffc0000156612f +eebfd4156fffffffffe27fd3aab59964bffffffffffffffc +fccfc11041104110400104411041004104410101010411000411440010101041 +0101044041041004100441100441011101010404440411010510410404111110 +4101111101004001040404100440ffcffffcfff3f03f0f0fc3c3ff0ff0f03f0c +3fc30ffffffc3c3c3f0fffffff0ffc30ffc0ffff0fffffffffffffffffffffff +fffffffffffffffffff0f03c3f0ffc3fc3c3ff03ff0ffc30c3fffffffffff0ff +0f0ffffff0003c3c3ff03ff0c3ffffffffffffffffffffffffffffffffffffff +ffff0c3ff03fc3c3ffffffffffffffffffffffffffffffffffffff3ccfffffff +ffaaa85bf484bfe03ffffffffff51aea6555140565516ffffffff000001a942f +ffffd4447fffffffffe26544000aba95bffffffffffffffc +cfcfc40110410401044440100104110410041040444004111040411104044100 +4410401110410101044104044104110044104110011100441104101041044044 +0040404010141110404111044010ffcffffcfff3fc3fc00ff00fff0ffc00ffc0 +fff03fffffff003c3f0fffffff0fff03ffc0ffff0fffffffffffffffffffffff +fffffffffffffffffffc00fc3f0ffc3ff00fff03ff0ffc30c3fffffffffff0ff +c03ffffff0003f00fff03ffc0fffffffffffffffffffffffffffffffffffffff +ffffc0fff03ff00fffffffffffffffffffffffffffffffffffffff0fcfffffff +ffeab56bf9afeff4fffffffffff006aa5511604055503ffffffff0000056507f +efffcd12aefffffffff59925001aaa95fffffffffffffffc +fccfc11010400044101004411040401004404104100441104010110410401011 +0104110404101044001041010410404401041041100044010040040410441001 +1104101104400010110100401104ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +ffeaea6bffabffef7fffffffffe412a95004100115106ffffffffc00012a917f +fffff8441bfffffffffc5455001a9a52fffffffffffffffc +cfcfc00441044410410110104410110110101041010104041104414104110404 +4041004044410401110410440104110110404104044401104411011041010444 +0010040040044441041044110100ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +fffbaaabfeefffefbfffffffffd042a50445540015001ffffffff0000459406f +fffff151fffffffffff951150010765bfffffffffffffffc +fccfc44110010104104041010104041001044100444410410001001041004100 +1010440440104110404104011041004404440040410111041040440410104001 +1101111011000010410400401040ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +ffebb56bfebfffbfffffffffff80055545aeba1010410bfffffffa000059402f +fffff595fffffffffffd14000010155bfffffffffffffffc +cfcfc01004441040410404101041004444410044000000104444110410440411 +0440044104410044041041104410440444104404101040410404004044044444 +0044004104444441104044044410ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +fffa829eeabfffefffffffffff4014551abae954100003fffffff40001164018 +7fffa15bfffffffffff910001100054bfffffffffffffffc +fccfc44110010410101110444410440000101100444444400101004104111040 +4411101044104401010410100404411001010111040404100111111101100101 +0401110410040410041010400104ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +ffe94abff96fffbfffffffffff0445155a555554440100fffffff000101514be +ffff95affffffffffffd0016ef550547fffffffffffffffc +cfcfc10104440101044001004004011111010044104010411044110410400411 +0101010410410444104104444110100444101041111041011040404040411044 +1044100041104101100441111040ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +fff5256b5f5bbefffffffffffe405154199954501000157fffffc000010554a5 +affe55fffffffffffffd00641015040ffffffffffffffffc +fccfc41040404410400440100441101040441004040441004010404040044040 +1040444440104041041001004404444101044410104010100411041011040410 +0410044400411044044104004404ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffc3ffff0ffffffffffffffc3fff003fffff +fffffc3fffffffff0ffffffc3fffffffffffffffffffffffffffffffffffffff +003fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffc3ffffffffffffffffffffffffffffffffc3fffffffc3ffffff3ccfffffff +ffe959a9ffdeff8ffffffffffd15111056aab55110458e7fffffd400000511ba +59fe56ffffffffffffff0054404a4000fffffffffffffffc +cfcfc01104044044111011011010044011010441010100441101040411104411 +0411004004001110410110110101004410410104410444410104104100004101 +0441010111004010401010440110ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffc3ffff0ffffffffffffffc3ffffc3fffff +fffffc3fffffffff0ffffffc3ffff0ffffffffffffffffffffffffffffffffff +fc3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffc3fffffffffffffffffc3fffffffffffffc3fffffffc3ffffff0fcfffffff +ffea46abbffbfbbffffffffffe15445116aaa950100552bfffffc400001544aa +a5b96fffffffffffffff0060000640100bfffffffffffffc +fccfc44001101001040100440404410440441010444044110044011004041100 +4100441110444004104411041044110104104441040001004410010414441040 +4104404404110440041101104004ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffff0ffffffffffffffc3ffffc3fffff +fffffc3ffffffffffffffffc3ffff0ffffffffffffffffffffffffffffffffff +fc3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffc3fffffffffffffffffc3fffffffffffffc3fffffffc3ffffff3ccfffffff +fffaa19afebbbfbffffffffffe16000115596540051145bfffffc00000154bff +a5a946fffffffffffffc00541159400700fffffffffffffc +cfcfc10444010444011011011040104011010104001010004410440441110044 +1044101041010444041004410400041041041040405110444041104040104104 +1001041040404011010410041100ffcffffcffffffffffffffffffffffffffff +ffffffffffff00ffc0ff0c0ff003f003ffc00ff00ff0f0f003fc30fffc3fc3f0 +fffffc30ffc3c3c00fff003c303ff0fffffffffffc3f0ff00ff0f0f0fc3fffff +fc3fc00ffc3c3fc00ff00ffffffffffc3f0ff00ff0f0f0fc3ffffcc30fc3f0ff +00fc303ffffffc03f0fc3fc3fff00fc303ff003fc03ff003ffffff0fcfffffff +ffeada6be7bffefffffffffffe991154504040401000676fffffe2000015546b +f26554fffffffffffff000154459002c8017fffffffffffc +fccfc40041104001100410440411040440404441110441110104104110011001 +0404110410441041010110104111110411104104110404104410040411040411 +0444104044100440440101110044ffcffffcffffffffffffffffffffffffffff +fffffffffffc3f3f0c3f0303c3fcffc3ff0f0fc3c3f0c0fff0fc0c3ffc3fc3f0 +fffffc0c3fc303ff0ffc3c3c0c0f0003fc3ffffffc3f0fc3c3f0c0f0fc3fffff +fc3fffc3fc303f0f0fc3c3fc3ffffffc3f0fc3c3f0c0f0fc3ffffc30c3c3f0fc +3f3c0c0ffffff0f0f0fc3c000fc3c3c0c0fc3c3f0f0fc3c3ffffff3ccfffffff +fffaaaaafffbbbfffffffffffef1411144010000404466bffffffb000052059a +b254107fffffffffff4000040111002b90005ffffffffffc +cfcfc04400041110044100010104404004101010411011011010410404440444 +1041004104110410441101041040404104041044404044041041104100404040 +4000411001044004104010404404ffcffffcffffffffffffffffffffffffffff +fffffffffff0fffc3f0f0fc3c3ffffc3fc3f0f0fc3f03cfff0fc3f0ffc3fc3f0 +fffffc3f0fc0f3ff0ff0fc3c3f0ff0fffc3ffffffc3f0f0fc3f03cf0fc3fffff +fc3fffc3fc0f3c3f0f0fc3fc3ffffffc3f0f0fc3f03cf0fc3ffffc30c3c3f0f0 +fffc3f0fffffc3f0fc3cffc3ff0fc3c3f0f0fc3c3f0f0fc3ffffff0fcfffffff +fffaaaabfffefefffffffffffff0145110040004000402fffffffc0000051016 +e255567ffffffffff00000004051002f90111ffffffffffc +fccfc40111104011111011104040101110044104100100100404101041011040 +4010441041004104010444410411041040410410041101104104041011041004 +1111040440401101041104110100ffcffffcffffffffffffffffffffffffffff +fffffffffff0fffc3f0f0fc3c00fffc3fc3f0f0003f0fff000fc3f0ffc3ff0c3 +fffffc3f0fc3ffff0ff0fc3c3f0ff0ffffffffffff0c3f0003f0fffc30ffffff +fc3fc003fc3ffc3f0f0003ffffffffff0c3f0003f0fffc30fffffc30c3c3f0f0 +fffc3f0fffffc000ff03ffc3ff0003c3f0f0fc3c000f0fc3ffffff3ccfffffff +fffeaaaaffebebfffffffffffb816544000000000445455bffffffc000011046 +9851157ffffffffd000010001040003fe0000ffffffffffc +cfcfc04410401100000100101104040041000401044044411101044104100410 +1111010410101041101010104140440411104004410410410410410440400444 +1040104104044010104041041044ffcffffcffffffffffffffffffffffffffff +fffffffffff0fffc3f0f0fc3fc00ffc3fc3f0f0ffff0ffc3f0fc3f0ffc3ff0c3 +fffffc3f0fc3ffff0ff0fc3c3f0ff0ffffffffffff0c3f0ffff0fffc30ffffff +fc3f0fc3fc3ffc3f0f0fffffffffffff0c3f0ffff0fffc30fffffc30c3c3f0f0 +fffc3f0fffffc3ffff03ffc3ff0fffc3f0f0fc3c3fff0fc3ffffff0fcfffffff +ffffa9abeffeaffffffffffffd01a4445000010010145669fffffffe00044115 +14459a7fffffffd0000010010010006fa0000ffffffffffc +fccfc41004040444444444410401011100444110010401040044401001044104 +4104104041044410044104441150110100041140104104040101004011044411 +0411001010400401040410404100ffcffffcffffffffffffffffffffffffffff +fffffffffff0fffc3f0f0fc3fff0ffc3fc3f0f0ffff0ffc3f0fc3f0ffc3ffc0f +fffffc3f0fc3ffff0ffc303c3f0ff0ffffffffffff0cff0ffff0ffff03ffffff +fc3f0fc3fc3fff0c0f0fffffffffffff0cff0ffff0ffff03fffffc30c3c3f0f0 +fffc3f0fffffc3fffcf0ffc3ff0fffc3f0f0fc3c3fff0fc3ffffff3ccfffffff +ffffaaafffbaedfffffffffffa4a95540010000100455966fffffffd00000515 +5116bf7ffffff800000010000044005fe0001ffffffffffc +cfcfc10110411010100110104040404044101041104110411100110110411044 +1010411104010041100440010104404411410011041010411044110440401040 +4104110400110110104104041010ffcffffcffffffffffffffffffffffffffff +fffffffffffc3f3f0c3f0fc3cff0ffc3ff0c0fc3f3f0ffc3c0fc3c3ffc3ffc3f +fffffc3c3fc3ffff0fff0c3c3f0ff0fffc3fffffffc0ffc3f3f0ffff0fffffff +fc3f0f03fc3fffc30fc3f3fc3fffffffc0ffc3f3f0ffff0ffffffc30c3c0c0fc +3f3c3f0ffffff0fcf0fc3fc3ffc3f3c3f0fc303f0fcfc303ffffff0fcfffffff +ffd2a6bbfeebbc3fffffffffeaaa5940040000000115669afffffffc00005021 +146ffffffffff00000002000001001afa0000ffffffffffc +fccfc41040040104411004410411040401010404441010100411104404100101 +0404040400441001044011104041041104101104410441104100401011040404 +0441010111011004401041110404ffcffffcffffffffffffffffffffffffffff +ffffffffffff00ffc0ff0fc3f003ffc3ffc30ff00ff0fff0303c00fffc3ffc3f +fffffc00ffc3ffff0ffffc3c3f0ffc03fc3fffffffc3fff00ff0ffff0fffffff +fc3fc0c0fc3fffff0ff00ffc3fffffffc3fff00ff0ffff0ffffffc30c3f030ff +00fc3f0ffffffc03f0fc3ff00ff00fc3f0ff0c3fc03ff0c3ffffff3ccfffffff +ffc1aaabbabaf86fffffffffbaaaa5144040001004156669fffffffc00000045 +454ffffffffff01000001500000002bfc0000ffffffffffc +cfcfc10404411041004110040100104110444110010104411041000110044410 +4111014111104110101104101110410040410410104404040444110440411041 +1010404410440441044110004110ffcffffcffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ff +fffffffffffffffffff0f0ffffffffffff3ffffffffffffffffffffc3fffffff +fffffffffffffc3c3fffffff3ffffffffffffffffffffc3fffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +ff82a55a5aebf91fffffffffaaea6550010000004045915afffffff000000000 +579ffffffffff00000000a5000000abf40000ffffffffffc +fccfc40101010410101041011011010404001004404441010410444401100104 +1040144004111041044041044401044411041004041041111011004004040410 +0444104104004010001001110004ffcffffcffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0ff +fffffffffffffffffffc03fffffffffffcfffffffffffffffffffffc3fffffff +ffffffffffffff00fffffffcfffffffffffffffffffffc3fffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +ff41aa956aafed1fffffffffbaaaa51000000040000400a6ffffffd000000015 +5f87fffffffff00000000658000009ae00000ffffffffffc +cfcfc04044100104044010440400441041110440111004100104101044044401 +0404451110401104004410400110401110410441110410404104100441104104 +4001041010440441110110401110ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +fccfc41101044401101104104111000010004011000441044401010100400110 +4104100441050041110104111004444004104110004111110041044410001040 +1110444101011000404404110104ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccffffff0 +fffffffffffffffffffff0fffffffffc3fffffffffffffffffffffffffffffff +ffffffffff0fffffffffc3ffffffc3fffffffffffffffffc +cfcfc10410400110041041041010111101110441111010410110444411045011 +1041044100404411041041000441001101041041111040001104410104444111 +0404101044100111040111041040ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcffffff0 +fffffffffffffffffffff0fffffffffc3fffffffffffffffffffffffffffffff +ffffffffff0fffffffffc3ffffffc3fffffffffffffffffc +fccfc04044051041104104404101041044004010104104004410000040040501 +0104401011110440410410444010110110410401040411144040104401001000 +4110410401044410104400404410ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccffffff0 +fffffffffffffffffffff0fffffffffc3fffffffffffffffffffffffffffffff +ffffffffff0fffffffffc3ffffffc3fffffffffffffffffc +cfcfc41100404101000410110444104101110404410441141044445104411010 +1040110404104111044441041104044441044110411041001011040110450444 +1001004110100104041044040100ffcffffcffffffffffffffffffffffffffff +fffffffffffffffffffffffffff0fffc3fffffffffc00fffffffffffffffffff +ffffffffffffffffffffffffffff0ffffffff0fffffffffc3ffffff0ffffffff +fffffffffffffffc3ffc3fffffffffffffff0ffffffffc3fffffffffffff0fff +fc3fff0f003fffffffffffffffc00fffffffffffffffffffffffff0fcffffff0 +c3fc03c3fcfc03f030fc00fffffffffc3c3f00fc30ffffffffffc00fc03f030f +c03f030fc00fffffffffc30f0ff3c3c3fffffffffffffffc +fccfc10410440040110101100010040410001110040040410401100010100104 +4411004110040000100104104041041010041111040404110440411004004101 +0110110044010404410410411010ffcffffcffffffffffffffffffffffffffc3 +fff0fffffffffffffffffffffff0fffc3fffffffffff0fffffffffffffffffff +ffffffffffffffffffffffffffff0ffffffff0fffffffffc3ffffff0ffffc3ff +fffffffffffffff0fffc3fffffffffffc3ff0fffffffff0fffffffffffff0fff +fc3fff0ffc3fffffffffffffffc3fffffff003ffffffffffffffff3ccffffff0 +30f0f0c30cf0f0fc30f0f0fffffffffc3cfc3c3c0c3fffffffff0f0f0f0fc30f +0f0fc30f0f0fffffffffc0c30c33c3cffffffffffffffffc +cfcfc04041004404404410411101104004440001104404044110411411044040 +0104111041104444411041041010410104410041104441004104101110441040 +1004404441101046104104100440ffcffffcffffffffffffffffffffffffffc3 +fff0fffffffffffffffffffffff0fffc3fffffffffff0fffffffffffffffffff +ffffffffffffffffffffffffffff0ffffffff0fffffffffffffffff0ffffc3ff +ffffffffffffffc3ffffffffffffffffc3ff0fffffffffc3ffffffffffffffff +fc3fff0ffc3fffffffffffffffc3fffffff0f0ffffffffffffffff0fcffffff0 +f0f0f0c30cfff0fc0ff0f0fffffffffc33fc3c3c3c3fffffffff0f0f0f0fc0ff +ff0fc0ff0f0fffffffffc3c30c33c33ffffffffffffffffc +fccfc41004110100040104104410400441111110040041101044100100401004 +4441000410041104104410110444104100104410411011141041044104104044 +411011001041042b841041044010ffcffffcffffffffffff0c3ff0f0ff00ffc3 +fff0ffc3f0ffffff003f0fc3fc00ff003fc03f0c0fff0ff0fc3fffff0fc3fc03 +fc3c3c3f0fffff30c3f0fc3fc03f0c0ffffff0c3ff0f0f003ffc00f0c0ffc3ff +f00ff0f0ffffffc3ff003fc303ffffffc3ff0c0ffc03ffc3fffffcc30fc00fff +003fc00ffc3ffc03ffffffffffc3fffc03f0f0ffffffffffffffff3ccffffff0 +f0f0f0c30cfc00fc3ff0f0fffffffffc03fc003c3c3fffffffff0f0f000fc3ff +c00fc3ff0f0fffffffffc3c30c33c03ffffffffffffffffc +cfcfc10440404044404011040101044104000011011104044101011111044441 +0010444104410041040104404101001044441104100444410444101041041101 +040410110410411f500010401100ffcffffcffff0fffffff030ff0c0fc3c3c00 +0f0003c3f0fffffc3fcf0fc3f0f0fc3c3f0f0f0303ff0ff0fc3fffff0fc3f0f0 +fc303c3f0fffff0c30f0fc3f0fcf0303fffff030ff0c0ffc3ff0f0f0303c000f +c3c3f0c0ffffff0ffffc3fc0c0fffffc000f0303f0f0fff0fffffc30c3ff0ffc +3c3f0f0ffc3ff0f0ffffffffffc3fff0fcf0f3ffffffffffffffff0fcffffff0 +f0f0f0f0c3f0f0fc3ff0f0fffffffffc30fc3ffc3c3fffffffff0f0f0fffc3ff +0f0fc3ff0f0fffffffffc3c3c30fc30ffffffffffffffffc +fccfc41010041101041100411010101011111100441040401010441000410010 +4404104040104440404410041040444410110041044410104410410410104010 +1041044110041045411404110044ffcffffcffff0fffffff0fc3f03cf0fc3fc3 +fff0ffc3f0fffffc3fff0fc3c3f0f0fc3c3f0f0fc3ff0ff0fc3fffff0fc3c3f0 +fc0f3c3f0fffff0c30f0fc3c3fff0fc3fffff0fc3f03cffc3fc3f0f0fc3fc3ff +0fc3f03cffffff0ffffc3fc3f0ffffffc3ff0fc3c3f0fff0fffffc30c3ff0ff0 +fc3c3f0ffc3fc3f0ffffffffffc3ffc3fff00fffffffffffffffff3ccffffff0 +f0f0f0f0c3f0c0fc3ff0c0fffffffffc3c3c3c3c3c3fffffffff0c0f0f0fc3ff +0c0fc3ff0c0fffffffffc3c3c30fc3c3fffffffffffffffc +cfcfc10441104041104011040104410440104111000404110444010444101104 +1110410411110410110104410411110104404410404104440041044104411104 +4111101041104011040110041100ffcffffcffffffffffff0fc3f0fff0003fc3 +fff0fff0c3fffffc00ff0fc3c3f0f0fc3c000f0fc3ff0ffc30ffffffc30fc000 +fc3fff0c3fffff0c30f0fc3c3fff0fc3fffff0fc3f0ffffc3fc3f0f0fc3fc3ff +0003f0ffffffff0ffffc3fc3f0ffffffc3ff0fc3c000fff0fffffc30c3ff0ff0 +fc3c3f0ffc3fc000ffffffffffc3ffc3fff0f3ffffffffffffffff0fcffffff0 +f0fc03f0c3fc30f003fc30fffffffffc3c3f00fc3c3fffffffffc30fc03f003f +c30f003fc30fffffffffc00fc30fc3c3fffffffffffffffc +fccfc41010041010041100011040041004041000444041004011101011044041 +0004041040404104404041104110004410110104110410011410401040100401 +1001444104010440404401104044ffcffffcffffffffffff0fc3f0fff0ffffc3 +fff0fff0c3ffffffc00f0fc3c3f0f0fc3c3fff0fc3ff0ffc30ffffffc30fc3ff +fc3fff0c3fffff0c30f0fc3c3fff0fc3fffff0fc3f0ffffc3fc3f0f0fc3fc3ff +0ffff0ffffffff0ffffc3fc3f0ffffffc3ff0fc3c3fffff0fffffc30c3ff0ff0 +fc3c3f0ffc3fc3ffffffffffffc3ffc3fff0f0ffffffffffffffff3ccfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +cfcfc04104410441110044404011104101104144041110441100410400410410 +4441010410111041111110041041110104441110401041104104110411044040 +0510101001101010040110041100ffcffffcffffffffffff0fc3f0fff0ffffc3 +fff0fffc0fffffffff0f0fc3c3f0f0fc3c3fff0fc3ff0fff03ffffffc33fc3ff +fc3fffc0ffffff0c30f0fc3c3fff0fc3fffff0fc3f0ffffc3ff0c0f0fc3fc3ff +0ffff0ffffffffc3fffc3fc3f0ffffffc3ff0fc3c3ffffc3fffffc30c3ff0ff0 +fc3c3f0ffc3fc3ffffffffffffc3ffc3fff0f0ffffffffffffffff0fcfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff0f0fffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +fccfc40040104010404401041101040410410400410404104111044110104104 +1010444101000410040404410410104441010404110410441111041104401014 +4041044110410104404044410044ffcffffcffff0fffffff0f0ff0fffc3f3fc3 +fff0fffc3ffffffcff0f0303f0c0fc303f0fcf0fc3ff0fff0ffffffff03ff0fc +fc3fffc3ffffff0c30f0303f0fcf0fc3fffff0f0ff0ffffc3ffc30f0fc3fc3ff +c3f3f0ffffffffc3fffc3fc3f0ffffffc3ff0fc3f0fcffc3fffffc30c3ff0ffc +303f0c0ffc3ff0fcffffffffffc3fff0fcf0f0ffc0ffffffffffff3ccfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffc03fffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +cfcfc11104441101040110410444104104101044104041040400100411041041 +0440100410511104411041104104410110444111044104010404104040444100 +1100401044104041041100101100ffcffffcffff0fffffff003ff0ffff00fff0 +0ffc03fc3fffffff003fc0c3fc30ff0c3fc03f0fc3ff0fff0ffffffff0fffc03 +fc3fffc3ffffff0c30fc0c3fc03f0fc3fffff003ff0ffffc3ffff0f0fc3ff00f +f00ff0fffffffff0fffc3fc3f0fffffff00f0fc3fc03ff0ffffffc30c3ff0fff +0c3fc30ffc3ffc03ffffffffffc3fffc03f003ffc0ffffffffffff0fcfffffff +ff0ffc03fffffc03fc03ffffffffc3ff00ffffff003f00fffffffff0ffc03fff +ffc00fc03ffffffffc3ff00ffffff003f00ffffffffffffc +fccfc40410010040404404101001041044410104041104411044411040410410 +4011011104040040104110041041041104101040411041104110441111041044 +4044110401041010410411041010ffcffffcffffcfffffff0fffffffffffffff +fffffff0fffffffffffffffffffffffffffffffffffffffc3fffffffffffffff +ffffff0fffffffffffffffffffffffffffffffffffffffffffc3c3ffffffffff +fffffffffffffffc3ffffffffffffffffffffffffffffc3fffffffffffffffff +ffffffffffffffffffffffffffc00ffffffffffffcffffffffffff3ccfffffff +fc0ff0f0fffff0f0f0f0ffffffff03fc3c3fffff003c3c3fffffffc0ff0f0fff +ffc00f0f0ffffffff03fc3c3fffff003c3c3fffffffffffc +cfcfc04101104411041040044110011100104041104000104104040411004104 +1100410041104411041105444410410410444404100411110441010010410410 +4401011044110440104100404104ffcffffcffff3fffffff0fffffffffffffff +fffffff0fffffffffffffffffffffffffffffffffffffffc3fffffffffffffff +ffffff0ffffffffffffffffffffffffffffffffffffffffffff00fffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffc3ffffffffffff0fcfffffff +f30ffff0ff0ff0f0f0f0fffffffcc3fffc3fc3ff3ffc3c3fffffff30ffff0ff0 +ffcfff0f0fffffffcc3fffc3fc3ff3ffc3c3fffffffffffc +fccfc41010410410110411101041100411041104010444441041104100441101 +0444104410441040410440101104104041001041044100404110104440104104 +1040100110404104401044040410ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +ff0ffff0ff0ff0f0f0f0ffffffffc3fffc3fc3ff3ffc3c3ffffffff0ffff0ff0 +ffcfff030ffffffffc3fffc3fc3ff3ffc0c3fffffffffffc +cfcfc10104041041004104044104111040404010404010010410400044110444 +1041110441010411104104410111101104144444441044101004441011041041 +0111044404041010110404410100ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +ff0fff0ffffff0f0f0f0ffffffffc3fff0ffffff00ff003ffffffff0fffc3fff +ffc03fc03ffffffffc3fff0ffffff00ff00ffffffffffffc +fccfc04441100404100044410410410104101104110441100104111101004100 +4104004110441104044441041041044041010041011111110440410444410410 +1001100040404101040101004010ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +ff0ffff0fffff0f0f0f0ffffffffc3ffc3fffffffc3ffc3ffffffff0fff0ffff +ffff0f0c0ffffffffc3ffc3fffffffc3c303fffffffffffc +cfcfc41010411040444550104101041001041101004010411101010410441044 +1040441004410041110044104410401104441104440104410111104100444441 +0444044411041044404044101104ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +ff0ffff0fffff0f0f0f0ffffffffc3ff0ffffffffc3ffc3ffffffff0ffc3ffff +ffff0f0f0ffffffffc3ff0ffffffffc3c3c3fffffffffffc +fccfc10111040104001051041044104444104044110404104044104041104410 +0411110441111110444401041104110410110110011044104404041044101010 +4040400104100401041101040440ffcffffcffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffc3ffffffff003ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +ff0ff0f0ff0ff0f0f0f0ffffffffc3fc003fc3fc3c3c3c3ffffffff0ff000ff0 +ff0f0f0f0ffffffffc3fc003fc3fc3c3c3c3fffffffffffc +cfcfc41064404401110410410410400101010400401110401040001104040104 +4104104010100404101110410444444104404404440411041040410411045444 +1104111041044040410044104010ffcffffcfffffffc3fffffffffffffffffff +ff000ffffffffffffffffffffffffffffc3ffc3fc3ffc3ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +f000fc03ff0ffc03fc03fffffffc003c003fc3ff00ff00ffffffff000f000ff0 +ffc03fc03fffffffc003c003fc3ff00ff00ffffffffffffc +fccfc10450040110040104104001044410401044110041110411110410411041 +1010444444444111044044444011041044110110410444444111104104411441 +0041000411101011004401001104ffcffffcfffffffc3fffffffffffffffffff +ff0ffffffffffffffffffffffffffffffc3ffc3fc3ffc3ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +cfcfc44004404404411041010444010104110411004410040104104040400410 +0441010101004404441104441100410441041041104110404404041044105010 +4410444041041104110110444440ffcffffcfff0fc3c3ffffffffffff0fc330c +3f0ffffffffffffc30ffc00fc3f0cc30fc30fc0f03ffc3ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +fccfc41100110110101104100040441041044100110104404441041004111104 +4010104410440110410041040444104010404410041041041041110410410440 +1004101110400440404411000010ffcffffcfff0fc3c3ffffffffffff0fc30c3 +0f0ffffffffffffc0c3f0ff3c3f0c30c3c0c3c0f03ffc3ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +cfcfc10444404101040040411101010410401044411110110010110441040410 +1444110044111104104444111104441111104104441104410410404444041011 +0444411004111011041040444440ffcffffcfff0fc3c3ffffffffffff0fc30c3 +0f003ffffffffffc3f0f0fffc3f0c30c3c3f0c0c03ffc3ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +fccfd04010040040411104101010444101040404040044404441004110410104 +4101041410404041041041044040010440040411044041111104440101110441 +1100100440400100410404010104ffcffffcfffc30fc3ffffffffffffc30f0c3 +0f0ffffffffffffc3f0f003ff0c3c30c3c3f0cc0c3ffc3ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +cfcfc41101104411040410010104010410104040404401041010441041104441 +0411104104111104410410441411104411104104401110040044111010404104 +0044411011044411041041101010ffcffffcfffc30fc3ffffffffffffc30f0c3 +0f0ffffffffffffc3f0ff003f0c3c30c3c3f0cc0c3ffc3ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +fccfc44044010410104104441040440101010411041044000444044410044010 +4100041041040440111111111111044104411041111044411101044444441041 +1104441100410104010104010404ffcffffcfffc33fc3ffffffffffffc33f0c3 +0f0ffffffffffffc3f0fffc3f0cfc30c3c3f0cf3c3ffc3ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +cfcfc10401101041010040004104104410441040410410444001100404404444 +1045110410411111110441004104441040100410410404101050410100411044 +4044410411104410104040440100ffcffffcffff03fc3ffff03fffffff03f0c3 +0f0ffffc0ffffffc3c3f3fc3fc0fc30c3c3c3cffc3ffc3ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +fccfc41110010010404411111041010104010104104100411110011110111004 +4100404411111041004111111110410411044444111044444104444044444101 +1101004110040101041104011044ffcffffcffff0ffc003ff03fffffff0ff0c3 +0f000ffc0ffffffc00ffc00ffc3fc30c3c00fcffc3ffc3ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +cfcfc04044441104044101000401104041104041010044100104440041100444 +1044111100100410444444411004444441104101040411001110101104111044 +0410441004411044104041104100ffcffffcffffffffffffff3fffffffffffff +ffffffffcffffffc3ffffffffffffffffffffffffff003ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +fccfc40410404041101010441044041104011010104404411041011110411040 +4411010445044444411044104444411110441044411104150441044444441101 +1111010441041001040400041044ffcffffcfffffffffffff0ffffffffffffff +fffffffc3ffffffc3fffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3ccfffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc +cfcfc10104040410410104010101010410100441040110104444100404104104 +0100444100411041104441044105510004444444104041011110411010110444 +1040404110400444104111404000ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fc0000000 +0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000 +fccfc04411011041041041101010441041044004104404410104044101041044 +5044101044104410441044441046e44544110441111104515104441111104110 +4411111004111041010404110444ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc41040440400410410044104010410410510010110041041111044410410 +0444444411041104411104110457e41044444411041044111544410404111044 +4104041110410410441040404100ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc44004104044104105101111104104101004401044410410400410104104 +4104041104440444111044414445911511104111110444444444511111104404 +0441104101104104010404101010ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc00441010441040040410040101041040441110400101044111111041041 +1011110441044404444514444544454444111444444444444445444441040111 +1044410110040404444041044450ffcffffcfffffffc00ffffffffffffffffff +ffffffffffff03ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc44104100010104411004404044010411010004111110110410044410410 +4441004044111111111151444451111144444444111144444459111110444441 +0444041004410100400410410160ffcffffcfffffffff0fffffffc3fffffffff +fffc3ffc0fff03ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc10410411104410100110041100404040441111041004004104401004111 +0111111410404444444455111554514544444444444444451115111104104410 +5101104440104414044104004044ffcffffcfffffffff0fffffffc3fffffffff +fff03ff0c3fff3ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc04004041041004451041010444440411010400101111141111044111010 +4410444101110411111155551111451454511511111111115110411151010444 +1051041044441040401040440410ffcffffcfff0c3fff0ff003ffc3fff00ffff +ffcc3fc3f0ff0fffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc40441104410440001104441010104400444044410400404104110440444 +4111011111044444451154515454515145144451111444544444511050504441 +0404444404410104110411044104ffcffffcfff030fff0ffff0fc000fc3c3fff +fffc3fc3f0ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc04010410104044440410010104040111000410004451041041004411010 +1104111044444115111445544111145451451111444451044404444504144410 +4510011140441040044104101040ffcffffcfff0fc3ff0ffff0ffc3ff0fc3fff +fffc3fc3f0ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc41104041041101104101101041104410110401110410410410444410444 +4441110444441141554515451511450515514444444505445141111044411104 +4045504044104411101110410410ffcffffcfff0fc3ff0ff000ffc3ff0003fff +fffc3fc3f0ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc10101010010040410410410410000104404110404104104111111104410 +4011104444451114115145514444445144511114444450451111044441111114 +4444041111040101010400104104ffcffffcfff0fc3ff0fc3f0ffc3ff0ffffff +fffc3fc3f0ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc41044104441104001041041101111041041044041044041100010110104 +1111044441104445544454545151151445111111451105111444441111044441 +1111444401011044444111040400ffcffffcfff0fc3ff0fc3f0ffc3ff0ffffff +fffc3fc3f0ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc00410400010040444104100044040410410400440411110044444444444 +0441114451111151115115111445111114511111111450444444411144444444 +4411110110404104040004104044ffcffffcfff0f0fff0fc3c0ffc3ffc3f3fff +fffc3ff0c3ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc44040111105011001040410440411004004044011004004410401011041 +4411111104444444444544545111111111444444444445111111110444444444 +1044445111111040411101011104ffcffffcfff003fff0ff0303ff00ff00ffff +fffc3ffc0fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc01104400410410110411004010100110440441100110441104110441110 +4444411114445145151114451444444444445111114511444444444444411111 +1111104104040411041044440410ffcffffcfff0ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc44010044104101010100110404411010104100411044410041104441104 +4111111111111111411544411111144444111111111144444451104444511104 +4444441141104400410401004100ffcffffcfff0ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc10444411011010441044404110040441041044041001104410411011041 +1110444445145144444045111111111111441111111444444444441111044444 +1110414444444111044110441044ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc41001040100404010401041004410410410410410444041104110444444 +1111104451444444445444444444445114451111111111111111111104504411 +1111111110401040401040010410ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc10110404411111104110104100104100101041044100404041044100444 +4444444414445111110444511444444444444441144444444444444444141111 +1444444444444411044104501040ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc04044041040000410441040411111044410410411011110444404444101 +1111111145111455111111144451111111111111111111111111104041011044 +4441111104440104101010040100ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc41101110104444104010410104100404041040101104041040444011111 +1110454514514511114444445111044444444104444445111044451444511104 +1051114444444410410441011010ffcffffcfffffffc3fffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffc0ffffffffff +fffffffffff3cffffffffffffffff03ffffffffffffffffffffcf3ffffffffff +ffffffffffffffc0fffffffffffffffffffff3cfffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc10040101040410401104104410044040410104450041000411041504411 +1105105115144111444411111111111104444451111111104444111111044444 +4504444444410104104010440440ffcffffcfffc00fc3ffffc3ffc0ffffffffc +3fc00fffffff03ffffffffffffffffc3ffc0fff03ff003f0003fc0fff03ffc0f +ffffffc0fff3cfffffffc3ffc0fff03ffc0fff03fffffff03ffcf3ffffffffff +ffffff0fff03ffc0fff03ffc0fffffffc0fff3cfffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc41104410404101040401041001111104101040101110451111110044444 +4444451111444444444444444444444111104410444444111044444410411044 +5111111111111041041104411004ffcffffcfff0f03c3ffff03ff0c3fffffff0 +3f0f03fffffc30ffffffffffffffff03ff0c3fcfcfc3c0f0003ffcffc30ff0c3 +ffffff0c3ff3cfffffff03ff0c3fff3ff0c3fc30ffffffc30ffcf3ffffffffff +fffffc0ffc30fffcffc30ff0c3ffffff0c3ff3cfffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc04040104110040104110410110400410410411044044101041044511044 +4111111144511151144441111111111111044444104441110445111111111111 +1110114444441110410410100440ffcffffcfffffc3c303fcc3fc3f0cc30ffcc +3fffc3fffff0fc3f003ffffffffffcc3fc3f0fcfcffff0f3ffffc3ff0fc3c3f0 +fffffc3f0ffffffffffcc3fc3f0ff0ffc3f0f0fc3fffff0fc3fffffffffc3f0f +fffff30ff0fc3fc3ff0fc3c3f0fffffc3f0fffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc41011041004411004411004404044101004110401101010411041104441 +1111444444451415444444444444444444441111044444444441111111111111 +1445111451110404110101044010ffcffffcfffff0fc0c0ffc3fc3f0c30c3f3c +3fffc3fffff0fc3c3fcfffffffffffc3fc3f0ff03ffff0f3ffffffff0fc3c3f0 +fffffc3f0fffffffffffc3fc3f0fffffc3f0f0fc3fffff0fc3fffffffffc3f0f +ffffff0ff0fc3fffff0fc3c3f0fffffc3f0fffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc10441040441100440100440041104044110404110410511110411044411 +1114451445115144551114444444444111111110444444444410111111111111 +0451114504444441041044101100ffcffffcffff03fc3f0ffc3fc3f0c30c3cfc +3fff0ffffff0fc3c3fffffffffffffc3fc3f0fffffffc3f000ffffff0fc3c3f0 +fffffc3f0fffffffffffc3fc3f0fffffc3f0f0fc3fffff0fc3ffffffffff0f3f +ffffff0ff0fc3fffff0fc3c3f0fffffc3f0fffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc04010411010051011044111110041101041041010111040411111111110 +4444444444511455511111110441111111110444441104441111104444111111 +4444441110411044410410444040ffcffffcfffff0fc3f0ffc3ff0c0c30c3c00 +0ffc3ffffff0fc3c00ffffffc000ffc3ff0c0fffffff0ffff03fffff0fc3c3f0 +fffffc3f0fffffffffffc3fc3f0fffffc3f0f0fc3fffff0fc3ffffffffffc0ff +ffffff0ff0fc3fffff0fc3c3f0fffffc3f0fffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc41104100104400440041040404404010404110441010411044110440444 +4444444511144511144440444411111111104444511111111111045141044454 +5111115144440410404104000410ffcffffcfffffc3c3f0ffc3ffc30c30c3c00 +0ff0fffffff0fc3fc00fffffffffffc3ffc30ffffffc3ffffc3fffff0fc3c3f0 +fffffc3f0fffffffffffc3fc3f0fffffc3f0f0fc3fffff0fc3ffffffffffc0ff +ffffff0ff0fc3fffff0fc3c3f0fffffc3f0fffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc04040044410111004410110100101104040410104504110410444111111 +1051114444445111111114445144441110451445111110441044441114511145 +1111144445114444444410444440ffcffffcfffffc3c3f0ffc3ffff0c30c3ffc +3fc3fffffff0fc3fff0fffffffffffc3ffff0ffffff0fffffc3fffff0fc3c3f0 +fffffc3f0fffffffffffc3fc3f0fffffc3f0f0fc3fffff0fc3ffffffffff3c3f +ffffff0ff0fc3fffff0fc3c3f0fffffc3f0fffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc41104401041004101101041044410040410104410041101104411044411 +0504444444511451444511110410414444410441110444444401044104111151 +1115451451144411110040104010ffcffffcfff0f03c3f0ffc3fc3c3c30c3ffc +3f0003fc0ffc30fcff0fffffffffffc3fc3c3fffffc000f0f0ffffffc30ff0c3 +ff03ff0c3fffffffffffc3ff0c3ffffff0c3fc30ffc0ffc30ffffffffffc3f0f +ffffff0ffc30ffffffc30ff0c3ff03ff0c3fffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc10040444010440410040404104044411104411041111010444444401104 +4111111111154444511114411111104111114411111111111144444444444444 +4444511114444110041111041104ffcffffcfffc00fc3f0ffc3ff00fc30c3ffc +3f0003fc0fff03ff003fffffffffffc3ff00ffffffc000fc03fffffff03ffc0f +ff03ffc0ffffffffffffc3ffc0fffffffc0fff03ffc0fff03ffffffffffc3f0f +ffffff0fff03fffffff03ffc0fff03ffc0ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc11104101104044041104101010400100040104410010444040410151044 +5044445145444511111111111104444410444444444444410411104411111111 +1111551444444445110404104040ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc40044410040400410011044101044411104441104504101104445010444 +0444444451455111114511044044444445044511111111111111044444410444 +1111114544444111404040410404ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc11101011111111104440410444104104040040041041044044440511044 +5111111115144510444444444444441110510114444444444444410441111111 +044455511111145b944411040040ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc40110440100400010404104001010441104411110410441104104444411 +0441111144455111111111111110444445044444444445111110444411044444 +444445115451112fd41104104410ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc04404011044044401041001111104010101044004044410441044410110 +4414444455511104411111104444444410444444511111511114444110444444 +444455144445111a910410010100ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc40041104101100110010110040011101044101111101104111111104404 +4441111111111114511111051111104111111104411544454441111444411111 +1111114511111145104101104444ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc11104041010044404441041011100044401041040410111004404111144 +1111110444444441111110504444111111444451111151444514444444444104 +5111115544445111041040410040ffcffffcfffffffc00ffffffffffffffffff +ffffffffffffffffffffffffc00fffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc41010410404401100104104100411100110410411041104444144440411 +0411115151511111111111111111114444451111145415154444511041111045 +4511156545144444410411004444ffcffffcfffffffff0fffffffc3fffffffff +ffffffc000fff0fc000fffffff0ffffffffffffffffffffc00ffc03fc00fc000 +fffffc000ff00fc000fff0ffffffc00ffc0ff0003fc0fffffff003ff03ffc0ff +0003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc10104101041044044401001011041011041041100410044101104411104 +4444441414444444444411044444445144444444551544505111110444441111 +9111115544445111111100444100ffcffffcfffffffff0fffffffc3fffffffff +ffffffc000ffc0fc000fffffff0ffffffffffffffffffff0f03f0f0f0f03c000 +fffffc000fc3c3c000ffc0ffffff0f03f0c3f0003f0c3fffffc3f0fc30ff0c3f +0003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc04441044110410410044110104104440410410444111444444444111051 +1111151144444411110444511114511551145155454455454544444444444445 +4411111515111111044044010410ffcffffcfff0c3fff0ff003ffc3fff00ffff +ffc00fcfffff30ffff0fffffff0fff03ffc03f0c0ffffffffc3c3fffffc3cfff +ffffffff0f0fffcfffff30ffffffffc3c3f0fffc3c3f0fffffc3f0f0fc3c3f0f +ffc3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc40010100004104104401044411000011101104104440404104104441104 +4111111111144444444444111111154555555511555555545115144444441110 +4444511444511444401001441040ffcffffcfff030fff0ffff0fc000fc3c3fff +ff0ff3cffffcf0fffc3fffffff0ffc30ff0fcf0303fffffffc3c30ffffc3cfff +fffffffc3f0c3fcffffcf0ffffffffc3c3f0fff0fc3f0fffffc0f3f0fc3c3f0f +ff0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc11104044441041041044001000444410044044410111111041111111110 +4444444444444111111111445145115195555555555555555451451144114111 +1111114445114444550444104104ffcffffcfff0fc3ff0ffff0ffc3ff0fc3fff +ff0fffc003f3f0fff0ffffffff0ff0fc3c3fff0fc3fffffff0fc0c3fff0fc003 +fffffff0ff030fc003f3f0ffffffff0fc3f0ffc3fc3f0ffffff00ff0fc3c3f0f +fc3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc40041100440010104101140111041104410400104410404444410410444 +4111111445111511111451111114545545555555555556554545111444441441 +1114441151511444404410410444ffcffffcfff0fc3ff0ff000ffc3ff0003fff +ff003fffc0f0003fc3ffffffff0ff0fc3c3fff0fc3ffffffc3fc3f0ffc3fffc0 +ffffffc3ff0fc3ffc0f0003ffffffc3ff0c0ff0fff0c0ffffff003f0fc3c3f0f +f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc11110044044501040410011104010000101045041044444111044111104 +4444444444514111115511111115155555555555559599995554514511111111 +0441114444444111111041044000ffcffffcfff0fc3ff0fc3f0ffc3ff0ffffff +fff003fff0f0003fc3ffffffff0ff0fc3c3fff0fc3ffffff0ffc3f0ff0fffff0 +ffffffc3ff0fc3fff0f0003ffffff0fffc30ff0fffc30fffffc3c0f0fc3c3f0f +f0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc04101101041010010044401000441111041100410410441040411104444 +1111111111145144441111111451451155555559995a666aa555141115111551 +1114444515515111110410410444ffcffffcfff0fc3ff0fc3f0ffc3ff0ffffff +ffffc3fff0fff0ff0fffffffff0ff0fc3c3fff0fc3fffffc3ffc3f0fc3fffff0 +ffffff0fff0fc3fff0fff0ffffffc3fffff0fc3fffff0fffffc3f0f0fc3c3f0f +c3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc41040040400101104401040444110440110411044104111104441041111 +1111044445101444515514545155515555555956666659baa955455144445fd1 +1104511559144514444441041010ffcffffcfff0f0fff0fc3c0ffc3ffc3f3fff +ff3fc3c3c3fff0ff0fffffffff0ffc30ff0fcf0fc3fffff0003f0c3f0003c3c3 +ffffff0fffc30fc3c3fff0ffffff0003c3c3fc3ffc3c3fffffc3f0fc30ff0c3f +c3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc10411111044110410444110101004011004040101041104410044444111 +10444444444544451444511555145515555656665999aaaaab95544444455f94 +4444445169444444440104110440ffcffffcfff003fff0ff0303ff00ff00ffff +ffc00ff00ffff0ff0fffffffff0fff03ffc03f0fc3fffff0003fc0ff0003f00f +ffffff0ffff03ff00ffff0ffffff0003f00ffc3fff00fffffff003ff03ffc0ff +c3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc41041000401004101040041010441104141105044410441045104111104 +1104445145444451115515451555555555556556669999aa6aa9551444505691 +0445111155514511111041044104ffcffffcfff0ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc10010114040440410404410410010041010410100104011110411104444 +544445111451111445114455555655555555556999999aa6afe9945145051444 +4454451444451555111444401010ffcffffcfff0ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc01104041044011041110104104441110404104044441104104111044411 +111111115511454551455545555595555555556aaa6669aaaffa595450511141 +1104444515515444444101110440ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3cfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfd10441100410440010001000041104004110441110111111044410444504 +444451144444445114551555559555a655559559aaaa9aaaabfee99515145451 +1111114454451551444410044104ffcffffcff3fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff0fcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fccfc41010044104011101110444410440441004010404404104404104444111 +1111114515111155555155655655555a55555555659966aa6abbabd544450511 +1114441155511114444111401040ffcffffcff3fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff0000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000cfc +cfcfd10404411040441040004040104111010440444044111041111044441110 +4444451111145111115555555555559655555555596665a9aaabffe454515044 +4441111444455511511044044104ffcffffcff3fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff0000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000fcf +fccfd51110440411004104501104041000444104001011104444044444111111 +10445151444515455555145555555555555599555555555a69aaee9555144511 +1114511455511545111100404400ffcffffcff3fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff0000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000cfc +cfcfe44041004100441010050404400444101011110501110404410104444444 +444445144514515555555555555555555955555555599995a9aabfa545451144 +5111114504445515444111110110ffcffffcff3fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff0000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000fcf +fccfc41410441044010441101041111044010100044044104110441110444411 +1111514551454514555556555545555655659956655555595a6aafe554545444 +4444444451515551451104041044ffcffffcff3fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00fffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc10104044101010010010010004101104445401041111104411111110444 +44544514445455555555596555555595655556555595965596a6aeea55454444 +4511445111145114511041100400ffcffffcff3fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f000003ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc4441040041010444110110444101010005b444104104441104444105111 +11115545154555555566599555565565565999655559656566aaaaa995545144 +4444451145451555111110411044ffcffffcff3fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc00040451041040104044040410441011115410411044111044111044444 +11151451515555656955665959996595996595596555565966a5aabba5554514 +5111111450515444444010440400ffcffffcff3fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc44404040400411040400444104010100404441000444444441104444111 +11454545155556569a56599665965656665955955566596659999abfe9545144 +4454451115144555544504411110ffcffffcff3fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc011111041101004110440040411044100440041144104a4444441111044 +4451145155565965aa95565959a65565659655659955559666a66baefa955444 +5111114551455451115044441044ffcffffcff3fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fff03fffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc440000010410441004011104040400411011010410446f9104411041111 +111555455555665a9999a596955959959555955555566599a6666bffba555514 +4511111111111155494444410400ffcffffcff3fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffc30f3fffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc011111104041010100440410410444440440444104116e8444111411111 +15511455556659a65a666a69565555555559555556555596a999aaefffa54451 +1154514451145554451104111044ffcffffcff3fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffc30cff003ffffff00fc30ff0fc3fffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc440001040410444044011041004010411011104444401a4441110444111 +11455555595599a99a99a6aa65555655555455596559996999999aabfbe55511 +4444444514455555514441040100ffcffffcff3fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fff033fc3c3fffffc3f3c0c3f0fc3fffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc04444441110404441044041044110404044004010411111111111104445 +54554555566666666699995555565555555555555555565aa699aaaeefe55154 +5111114511146554444110411044ffcffffcff3fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffcff0fc3fffff0fffc3f0f0fc3fffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc40404010004110010010410101004040401111104444441111040444451 +1551556666699aaaa99999656555555555555595556565666a69a6abeea95511 +1445445145156955445044110404ffcffffcff3fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffff3ff0fc3fffff0fffc3f0f0fc3fffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc11040404441004404501104040440411110040444410411114444444445 +45156655969a699aa999555655555555555555555556566699aaaaafbba95545 +4544451114455a51110441104440ffcffffcff3fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fffcc0f0fc3fffff0fffc3f0f0fc3fffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc10011110110110101010041104011104041011010444404444444444514 +5555956669a6a6aae9969565555555555555555566555965a69aaaaafeaa5551 +1111445145516a55145110444010ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fff30c3c303fffff0fffc3f0f0fc3fffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc41104001004041044104010410440040410440444104144111111111155 +555656666aa9a55a6666695a95555555596596595566566a6aaaaaaaeee99515 +545145144445ae45111104044444ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffcf0c3f0c3fffffc3f3c3c3f0303fffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc10041110441004100041101040011104004104410441041110444545445 +55655599aaaa9999aaa6655be555565656596596665965966aaaaaebbbaa5551 +114451451555aa14454441411000ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffc0fffc3ffffff00fc00ffc0c3fffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc04410004004110411104010104441001111044104411111104444411555 +555556aaaaa9659a6666566fe556559599999a6666965969aaaaeeaffefea115 +5514451144456551441104100450ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fffffff0f0ffffffffffc3ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc410411104410041000411010101041101004411111111104444511515a5 +56555aaaaae656566a95555aa56599699999966669a9999a9a6abbabffea9551 +1111514554559544511110444410ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fffffffc03ffffffffffc3ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc10404004000440411100411901001044411010111041044114511455566 +6659aaaaaa6a666a5599655656566699aaa6aa6a9a9a6665aaabbaebbaa99555 +5444445115565555111104010104ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc40110441111011040044106d10444000104104410411111444114444559 +995a6aaaa999966699565555596599aa9a6aaaa6aa99a6aaaaeefeaafeea9511 +1151544451559441111041104440ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc11040040040440404410415504040445011044444441044445455555556 +55a6baea9999a6a66565666656669a99aaaaaaaaa6aa6a6aaabbbaabafae9555 +5444445514555554444444110404ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc40104411104104110104000441104100100441104111111114554555555 +559aaba999999a699955556599a9a9aaaaaaaaaaaaaaa6aaeeaeeeeaebaaa544 +4515154451555444510101104104ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc11010101010410404410111010010411044104111111144545155455555 +59aabaa95999aa66666596599a9aaaaeeeeeebaaaaaaaaaaabeefabeaaae9555 +5144445155554544444444041040ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc01104410400104041041004101101040401041041104511445555555545 +59aba999995a66a9566665999aaaaaeaeeeebaeebaa6aaaaeeaeaeeebaaa6544 +5111145454551114444011110404ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffc03fc3fcffffff003f +f0ff0000f0fc3c00ff003ffc3fc3fc3fffffc00fc3f0f000fc003f003f0ff0ff +0ffc3fcfffff0ff0f000fc3fff0ffffffff003fc003fffffc3f0f0ff3fc3fc3f +c3fc3ff000fc3ffff0ffc00ff0fffc003fffffc003f00cfc +cfcfc44010041111001010410440410410104110510410445114451545555555 +9aaa99659666a69a665959666aa6aebeeefbbbabaaaaaaabaaabaeeaaaa65455 +1514551155554544444500404110ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffff0f0fc0fcfffffc3f0f +f0fffc3ff0fc3c3c3f0f0ffc3fc3fc3fffff0fc3c3f0f0fc3c3fff0f0f0ff0ff +0ffc0fcfffff0ff0ff0ffc3fff0ffffffff0f0fc3fffffffc3f0f03f3fc3fc3f +c3fc3fff0ffc3ffff0ffc3c3f0fffc3fffffffc3fff00fcf +fccfc10404410040444100104011041044441104111111041104455451155455 +66a99999666a6aaa999659a6aaaabbbbffbfeefaaabaaabbbeaabbfaaaa65545 +5145115555511111104044111004ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fffffffffffffffc3fc3c0fcfffffc3fff +cc3ffc3ff0fc3c3c3f0fc3f30ff0fcffffff0fffc3f0f0fc3c3fff0f0f03c0fc +c3fc0fcfffff0c30ff0ffc3fff0ffffffff0f0fc3fffffffc3f0f03f3f30fc3f +c3f30fff0ffc3fffcc3fc3c3f0fffc3fffffffc3fff00cfc +cfcfc40110404411041011010440104100010041104104444451114555555556 +6aa99965999aa6b999a99a6aaaabaefbbffbffbbbaaaefbaaaaabeaaaa69a954 +4511145555555444444444410444ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fffffffffffffffc3fc3cc3cfffffc0fff +cc3ffc3ff0fc3c3cff0fc3f30ff0f0ffffff03ffc3f0f0fc3c3fff0f3f03c0fc +c3fcc3cfffff0c30ff0ffc3fff0ffffffff0f3fc3fffffffc3f0f30f3f30ff0f +cff30fff0ffc3fffcc3fc3cff0fffc3fffffffc3fff00fcf +fccfc04404110410410400101011041044441110441041111111144445555555 +996666596669aabaa66666666aaebabfffffbbebaeaaaaaaaaaaeaaa999aa555 +5154554556551111111104104104ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fffffffffffffffc3fc3cc3cffffff00ff +0f0ffc3ff0fc3c03ff0fc3c3c3fc33ffffffc03fc3f0f0f0fc00ff00ff0300f0 +f0fcc3cfffff0c30ff0ffc3fff0ffffffff00ffc00ffffffc3f0f30f3c3c3f0f +cfc3c3ff0ffc3fff0f0fc03ff0fffc00ffffffc3fff00cfc +cfcfc40101001040100444410440410400104104110444104441115555555156 +6699a99959aaaaaa9999a6aaaaebabbbffffeeeebaeaaaaaaaaeaaaaa6699954 +5445455556545111111041041040ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fffffffffffffffc3fc3cf0cfffffff03f +3f0ffc3ff0fc3c30ff0fc3cfc3ff0ffffffffc0fc3f0f003fc3fff0c3f3030f3 +f0fcf0cfffff0c33ff0ffc3fff0ffffffff0f3fc3fffffffc3f0f3c33cfc3f0f +0fcfc3ff0ffc3fff3f0fc3cff0fffc3fffffffc003f00fcf +fccfc11044110104411040104011004045001044104101111044511111545556 +69966599a69bbbaa999a699aaaaeaeeffffbfebaaeaaa999aaebaaaa66599555 +4551555556551444444411010410ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fffffffffffffffc3fc3cf0cfffffffc0c +000ffc3ff0fc3c3c3f0fc30003ff0fffffffff03c3f0f0fffc3fff0f0f3030c0 +00fcf0cfffffc303ff0ffc3fff0ffffffff0f0fc3fffffffc3f0f3c330003fc3 +3f0003ff0ffc3ffc000fc3c3f0fffc3fffffffc3fff00cfc +cfcfc00410404000104104410440440410110441041044444444455555454559 +966599aaaabaee6669a9aaaa6aebbbffffffbbbbbaaa9aaa9aaaaaa996655544 +4445555555114444444104444100ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fffffffffffffffc3fc3cfc0ffffffff0c +3fc3fc3ff0fc3c3c3f0fc30ff0ff0fffffffffc3c3f0f0fffc3fff0f0f3cf0c3 +fc3cfc0fffffc303ff0ffc3fff0ffffffff0f0fc3fffffffc3f0f3f030ff0fc3 +3f0ff0ff0ffc3ffc3fc3c3c3f0fffc3fffffffc3fff00fcf +fccfc44101041111010010101011010101011044104411111111511115545555 +9999566a9aaabaa9aaaaaaa9babaefffffffffbbaaaa6999a6aaaaaa65595555 +5151555555544444441041101044ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffff0f0fcfc0fffffc3f0c +3fc3fc3ffc30fc3f0f0f0f0ff0ff0fffffff0fc3f0c3f0fffc3fff0fc33ff0c3 +fc3cfc0fffffc3c3ff0ffc3fff0ffffffff0f0fc3ffffffff0c3f3f030ff0ff0 +ff0ff0ff0ffc3ffc3fc3c3c3f0fffc3fffffffc3fff00cfc +cfcfc01040410410441104410100104410440410410441044444454551155566 +665665aaaaaaaa6aa6abaaaaaeeeffbfffffeeeaaaaaaaaa6aaaaaa559955451 +1455565555555111111410111100ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffc03fcff0ffffff003c +3fc3fc3fff03fc3f0f003f0ff0ff0fffffffc00ffc0ff0fffc003f0fc33ff0c3 +fc3cff0fffffc3c3f000fc003f000ffffff003fc003ffffffc0ff3fc30ff0ff0 +ff0ff0f000fc003c3fc3c00ff000fc003fffffc3fff00fcf +fccfc40411004101010040004044441004104104104444410451555115511556 +95955666aaaba9aaaaaaaa6aabaeeffffffeffaaaa99999999aaaaa995555545 +5515555555594444444104400410ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc11040441044101004441000010441001001041044444445111554455565 +6659659a6abaeaaabbaaaaabbaefbeffffffeebbaaaaa666666aaa9556554451 +1155665555554511111041044104ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc04104110400010440010444440010444111110411111111154645515596 +55655666aaaaaabbbbbaaaaaaebafbfffeeeebaeaaa99999965aaa6555551515 +5555595551111111104110411110ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc40410404111104104441010404444000404104110444445515554511555 +565565a9aaaa6aebfeaaabaeebaeefbbbffbaeaaaa9a666665aaa65555555151 +4556555554445111041010444400ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc11004101010040410404104040400444111041044411111151545155555 +559556a6666aaeaaeeaaaaaaaaeeeeeeeebbbaaa99a665955955995555515555 +5155655515144444451104110110ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc40440040441104041040101004111011000444410444451515455455555 +595595a6666aababbaeaaaaaaaabbaeeeeeaaabaa99999659599555555544514 +5566595551444411104041004410ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc11011110404040404104440441000440444410111111114554511555555 +5555555599aafaeebaaaaa6aabaaaeaeaaaeaaa999a655555556555555155555 +5699955554451111111110510104ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc00100401041104041041011010444104011104444444555455154459555 +5655955966abbaeebbbaaaaaaaaeaaeaeeaaaa9a995666555955554555145155 +599a555445111110444411041100ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fff00ff003fffffff0ffffffc3fc3fc3ff +c00ff00ff003ffffff0fc3fc3ff003fc00fc3fc3fc3ff003fc003fffffc00ff0 +00ffc03fc03fc3fcf000fc003ff00fc3f0f003ffc3fc0003c003fc03fc3fcfff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc44411044010041010410404104041004441041041111455555445555555 +6555555599aeebbbaeaaa6aaaaaaeeaaaaa9a665959555555555555111555555 +9aa5555551111104410440444044ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffc3c3f0f0fffffff0ffffffc3fc3fc3ff +ff0fc3c3f0f0ffffff0fc3fc3ff0f0fc3c3c3fc3fc3ff0f0fc3fffffffc3c3f0 +ffff0f0f0f0fc0fcf0ffffc3ffc3c3c3f0f0f0ffc3fff0fffc3ff0f0fc0fcfff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc10100400444410104104110441010441044110444444559544511555555 +555555559bfbaaaeaaaaaa69aaaaaaaaa6a69a9999595955555954555551545a +aa59554515144444444411101100ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ff0ff0f0f0ffffffcc3fffffc0f03f30ff +ff0f0ff0f0f0ffffff0fc3f30ff0f0fc3f0c30c3f30ff0f0fc3fffffffc3c3f0 +fffc3ffc3fc3c0fcf0ffffc3ff0fffc3f0f0f0ff30fff0fffc3fc3fc3c0fcfff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc01044110401001111010400010404040401104411114456555154456555 +555555566bbfebbaaaa9a69a669a66aa6a69a565555595555555454515155599 +9665551451440441104100444044ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ff0ff0f0f3ffffffcc3fffffc0f03f30ff +ff0f0ff0f0f3ffffff0fc3f30ff0f3fc3f0c30c3f30ff0f3fc3fffffffc3cff0 +fffc3ffc3fc3cc3cf0ffffc3ff0fffc3f0f0f3ff30fff0fffc3fc3fc3cc3cfff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc4401004411011000010104444011041104404444144555a951445555555 +555555566afbbaaaaaaa6a6669a6aa6699999996559555554454515555559999 +9a55555514444411111111010440ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ff0ff0f00fffffff0f0fffffc0c03c3c3f +ff0f0ff0f00fffffff0003c3c3f00ffc3f0c30c3c3c3f00ffc00ffffffc03ff0 +03fc3ffc3fc3cc3cf0ffffc3ff0fffc3f0f00ffc3c3ff0fffc3fc3fc3cc3cfff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc10441101004404444410404011040100401104114451155954451555555 +555555569abfbbbaaa66995a66665999a6665655655555515515151556596666 +6695514444451111041104110104ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ff0ff0f0c3ffffff3f0fffffcc0c3cfc3f +ff0f0ff0f0c3ffffff0fc3cfc3f0c3fc3f0c30cfcfc3f0c3fc3fffffffc30ff0 +fffc3ffc3fc3cf0cf000ffc3ff0fc3c3f0f0c3fcfc3ff0fffc3fc3fc3cf0cfff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc01004044100101010404110440404411110411101111516551115455555 +555554559aaeeeaaa9a59a659659996699956555595555551544515555999995 +9655555511111111111041041040ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ff0ff0f0f0fffffc000fffffcc0c30003f +ff0f0ff0f0f0ffffff0fc30003f0f0fc3f0f0c0f0003f0f0fc3fffffffc3c3f0 +fffc3ffc3fc3cf0cf0ffffc3ff0fc3c3f0f0f0f0003ff0fffc3fc3fc3cf0cfff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc40441001044444101111004004101040104110451115555951455555555 +5555155659afeaaea69a55556565666666565555555555545155155555599569 +9965514444411111100410410410ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ff0ff0f0f0fffffc3fc3ffffcf3c30ff0f +ff0f0ff0f0f0ffffff0fc30ff0f0f0fc3f0f0c0f0ff0f0f0fc3fffffffc3c3f0 +fffc3ffc3fc3cfc0f0ffffc3ff0fc3c3f0f0f0f0ff0ff0fffc3fc3fc3cfc0fff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc10410444100011010400441101044104441104411151555554514555555 +555551559aabbaaaaa659999555955556595595555554451551555556656666a +5595545111111104411111044100ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffc3c3f0fc3ffffc3fc3ffffcffc30ff0f +fc3fc3c3f0fc3fffff0fc30ff0f0fc3c3c3f0f0f0ff0f0fc3c3fffffffc3f0f0 +ffff0f0f0f0fcfc0f0ffffc3ffc3c3f0c3f0fc30ff0ff0fffc3ff0f0fcfc0fff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc04004041011100104044010040410404011010444415555544445555151 +5555155555abaaaaa699555555556596555955555554551515555556556555aa +9955451444444111040410411044ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fff00ff0fc3ffffc3fc3ffffcffc30ff0f +00fff00ff0fc3fffff0fc30ff0f0fc3c00ff0f0f0ff0f0fc3c003fffffc3f0f0 +00ffc03fc03fcff0f0fffc003ff003fc0ff0fc30ff0ff0ffc003fc03fcff0fff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc40441100104011041010404410041040440444411145555851154555515 +555154555a6abaaaaa665555555555555555555511155151445599666595999a +6995545111051110414104100404ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc04110044041100400441040104400411011041110444555511445555555 +55555555566aaeeaaa65955555555555555554515544451451455595555959a6 +9955514440444111111044444040ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc41004401040044044004104410111004110410411145555451111565515 +55554555599aeeeaa9a966555955545555545554515514511555555955569999 +6655555114441044440410101104ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc10441110411101010441041041000441004104104455554511455555555 +151555555966abaa9a99955555554554555551454511515555555655655a99aa +5551545444444404414441044040ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc44010004100410441010010000444010110444444544554444444595515 +455555555959abbaaa6659554555545554551454514515154555659956659a99 +9515450441111144104044101104ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc01104441044001010101101111010441001041111115445111515554551 +5555455556656aaaa6a5955555555545551155451515515155599966666666a9 +5544511111104401110411044040ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc40104010401110441040041010101010510410444444551111145555155 +11555555555566eeaa6a999555451551515511154544555555965659699669aa +6511111444110444404440410410ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fffffffffffc3ffffffffffff0ffffffff +fffffffffffc3fff0ffffffffffffc3fffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc11010444110410010411104104414444011104104451511445114654555 +55155555555569abaa6666565555515515455544515515555559659a66999a95 +9554444441104100444010404104ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fffffffffffc3fffc0fffffff0ffffffff +fffffffffffc3fff0ffffffffffffc3fffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc0044000100410444010404044101a440440411044445444451451555515 +45555445555556aafaa9999555455555555111155515555555965999a9a55665 +5044511111444444410441041104ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fffffffffffc3fff0c3cfffff0ffffffff +fffffffffff0ffff0ffffffffffff0ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc4410451044004040404040401011a510404441110514545111115591145 +54555555545559aaae9a5966555515144514515115555555556666699a999955 +5511111110111010441110410410ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fff0f0ff03fc30ff0c33fffff0c3fc30ff +c3c3fffffff0ffc00ff00fc3f0fff0ff003ff00ff0f0ff00ffc03f0c0fffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc10404040411104041010110441045104044110404455451111144551515 +144555154555659aaaa69995555555555555454551559556666599a6aaa65551 +0455444411010444104104004040ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fff0c0fc30fc0c3fc0cffffff030fc0c3f +c303ffffffc3ff0f0fc3c3c3f0ffc3fc3fcfc3f3f0c0fc3c3f0f0f0303ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc04041011040410410104400100400041101011111145511114455554455 +45515155555566666aa696599555955455155555555669a66666599a99995514 +5100444111104411041040440404ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fff03cf0fc3c3f0fff3ffffff0fc3c3f0f +c0f3ffffffc3fc3f0f0fc3c3f0ffc3fc3fff0ffff03cf0fc3c3f0f0fc3ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc41104440411040104041044044111100410441115151445111511151554 +51145444545565599aaaa56555595555555155555556a96669999a6a95555151 +1114411044444104411011011040ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fff0fff0fc3c3f0ffcfffffff0fc3c3f0f +c3ffffffff0ffc3f0f0003f0c3ff0ffc00ff0ffff0fff0003c000f0fc3ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc10040110104004410410101001001011041010441545451110154554445 +144515551555555599aaa995995595555515555555666a69999a669659555545 +1101104444111110110440440410ffcffffcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fff0fff0fc3c3f0ff303fffff0fc3c3f0f +c3ffffffff0ffc3f0f0ffff0c3ff0fffc00f0ffff0fff0fffc3fff0fc3ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc41445004400440104104410444110400410444111055510445045144511 +45114411555555555659a69965995999555555565996666666a6999595554444 +4444111104404441044411010100ffc00000ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fff0fff0fc3c3f0fcc30fffff0fc3c3f0f +c3fffffffc3ffc3f0f0ffff0cffc3fffff0f0ffff0fff0fffc3fff0fc3ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc10554440110011001040040101044110444104444514511110444514451 +1144514551555555659a66669995966659959565966669a66a9a956555555111 +1044444111111044411104104044ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fff0fffc30fc3c3f3c30fffff0f0fc3c3f +c3fffffffc3fff0c0fc3f3fc0ffc3ffcff0fc3f3f0fffc3f3f0fcf0fc3ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc41198411041100444404404410401041010444411115145114515111114 +5115151115555555555665999a6659a99966666999669a66aaaa665555545454 +4441041444110410440041041100ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fff0ffff03fc00ffff03fffff003fc00ff +c3fffffff0ffffc30ff00ffc3ff0ffff003ff00ff0ffff00ffc03f0fc3ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc04454104404044410440110104040410501044104445511444444451111 +1144515544545455555595966696669a6666995999a66a9a66a5955554554444 +4444444104444104105410410410ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fffffffffffffffffffffffffffffc3fff +fffffffff0fffffffffffffffff0ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc40101040040404104111004400410104044111044454544444451111111 +11145444515545545555556566699a66a66999999966aaaaa655555545144444 +4410411110411111040404100004ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3fffffffffffffffffffffffffffffc3fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc11044404404101041040440110441041101000444445051110444444451 +11114551151515555555955559965666659999969699aaae9956555451451104 +1104441041041041111110411110000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc40400104101044010404104404004010110444411111511111111111111 +1145111451515155145555559559595999566665999abb995555555444411111 +111111111041041040404104000110411110111040411044041013f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3fcffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc04111041010101104100401041101101004110110445114444444444444 +44445444445445515545155555555595559566566655a9599555544511144444 +444441040410410411041041111010040004101104100101010103f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3fcffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc41000104104040041044110010110044441004444444451111111114411 +1111111111451515551555155555656565665965959699565555115111044411 +111111111104104440410410100444411110040410411010441013f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3fcffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc04111041010411104101501104404400100441104444545041111111111 +1111445145145545115111555555555555599a56655555555551551444444110 +441111041051110111041104410001000404411104040101000403f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3fcffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc40100404100100040416e50440040111044110044444451451144444444 +4444444444554451551554451145555555959955555554455114411111111104 +411044410451044404104040044444111110104001011044111047f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3fcffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc11044110411044404047f51011104041111044444445115111444444511 +0444444411104515454511455515555555555655555545444511144444404444 +444440111110411141041104410010040041041110400410404103f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3fcffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc40411004100400111106e40440401101501101110444555110444444444 +4411111111451145545554545155655155555966555154451444445111144444 +444411104441101010411010101101004400410044110104110447f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3fcffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc11040110044044400011544004041010111011041111111511111111104 +4111111144414455454445455545594515455595511511511111110444444444 +451111044110044441040404410040440044041040404411004003f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3fcffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc00404404404104044441400441044104104441104111455111044544444 +1111044444511111151551144555551454545555554454111114444111111111 +111041110104410410404110104411004410404104110040441113f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3fcffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc44040101040400410004044010101040440110044441111444444111111 +1111111111111445454445451455554545114555445111111144411044111111 +104451004441104004110404041040110104040404044404110043f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3fcffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc41111040411044101110401104044011011004441114451110441110444 +4444444441144111111451514444515114451144514511114411110444444444 +044104444010441111104110400404404041010041100111004413f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3fcffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc00404104100401041041044041100400100444111111115111111114410 +4411111111044444545111144555144451445151111111144111111111111044 +511110444504110101041040110110110410444400044400441043f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3fcffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc44041041010110410410401110044111044111040441145111105104444 +1110444444511111111145115111545144511414444444411104444444441411 +044411040041011040410411041004401104100111101044000407f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3fcffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc01100410104044000104044004400410010004411111111111044444444 +4111111011111111111451111454114514444444451111111044041010411110 +441044111110440411040104101110110101011041010001110103f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3fcffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc44044101041101111040410441110101101110104111111111441111104 +1044444444444444444514444511445044451111111111111111104104111104 +450441041104411040404410010401004044404104104440404047f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3fcffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc00401044100010401004100010004041044044441104444444451110444 +4441041111041111111111511144451111111111111111104404441111104444 +411111111044104411041104441044101100110410040404111003f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3fcffffffffffffffffffffff0000000fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc44110400411104110440111104441110410400411041051450444445111 +1110410441111044444444111444444451444444444444110111111110444044 +111010404041041104410041010001044044401104410100400447f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3fcffffffffffffffffffffff0000003fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc01044111040041004004400040110404101111044410511104411111104 +1044444044444441041111044044444444104444110411044444410411111111 +104444441110444040104410101110411001040440041044111013f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3ffffffffffffffffffffffff000003ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc40401010404410110440104411004041044044104111044450444110444 +4455044444100444411111111411111111111011111044101104111144410444 +110404110004104410410001044041000444004444410400404103f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3ffffffffffffffffffffffff00000fffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc11040441041101000011010100441111041101111044444444441111111 +05e4441101051045444444444111104440441104441104444441104440444411 +044111044510410104041110100410111101110440101111040043f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3ffffffffffffffffffffffff00000fffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc40104004010040444440441010010400410044040401111111111111110 +4154110444411111511111041110444444411111111044111044444511111104 +441041101041104010404101011001000044104044410040411107f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3ffffffffffffffffffffffff000003ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc04400440441010400104100441104044104401104444445110440410444 +4414444111110416504444444444044410104440011101041111111144404110 +410444044010041101101010404110444410040404104404040413f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3ffffffffffffffffffffffff000000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc41044004004104111010411010441010410110444110101111111114511 +1104411101104444444441044104441111040105141044110444111111141104 +444101110511110444044100101004101041104040410440404103f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3ffffffffffffffffffffffff0000003fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc04001104440441000404104104010441041044011044451111041111104 +0110104110411111111111104441110410411041044441104411040444411111 +041044104104404001010044444104044010041110104011110013f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3ffffffffffffffffffffffff0000000fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc40444040010041110101040401104000410411100441011111111104441 +4444441111044104044104140410404444444444410444444100444510444101 +054441041044110450441101010441001104411004041100001107f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3ffffffffffffffffffffffff0000003fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc04110411104410004410111044040444104110044410444111044454444 +1004411010404444411041014104111040410411111110101051045051111044 +458410444401041004004040441010110041040441110011110443f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3ffffffffffffffffffffffff03c000ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc41040100010104440104400410404011041041411104441111441015111 +0444110504441010504111104441104411044440044104444411111411040441 +114111101111110441101011010101004410410010001104041013f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3ffffffffffffffffffffffff0ff003ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc00411011101040104411044100101100410404100441104441110441104 +4111044110410441041041041010444104441011404441041110444110405111 +104404044044104004040404441044110104104444444041004107f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3ffffffffffffffffffffffff0ffc0fffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc11100400010411010040401044411044104040411011044111044444451 +1104441044114410110444110444441110110440141044411111104444110410 +441041110410410440411040010101004410040400101010441043f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3ffffffffffffffffffffffff3fff3fffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc10044111104100101104044410110101044411044110441111104444511 +1110410411001105104101104401044104404111010440111111044101044111 +110410404441040410100410404044040104410111044111010107f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc41101004410044040010410101041010410101110004410410444111044 +4044444104451041111044441110411044111101111045004044444444411040 +411104110410404104411040441040411040404004010410101043f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc04040440101101104441101010410104104444044441044111111041111 +1110410440411110404410044444440441101044104410444411101044104444 +444441044104111041000411040411001004101110441041044013f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc41104011044044101004044104104441040101101044104444104444511 +0441104011111111041105104104111011044441110411111104111104410444 +410110404411000410111040411100444110051041010104100443f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc04040440401101010440400411040010404411044410410411044444111 +1044041104041041110110441041104104410410411040041041110441044401 +111011110100444104410410404044010401100404501000411043f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc40404104040410104011111040411104110040400104111101111044444 +4441111041110410404411010444440440104104440445110411111044404144 +104110404411041010100404110401101010411041044111040413f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc04110410411001040440040004104040401104111041010444410444411 +1044004111004104141104104410104414441044411041044111104104111011 +041111041040410104111041004044044104104004010040404043f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc41001041040110411011104441041011044041040411104110104441111 +0411141040510444410441110111044101010444104410441111041041101104 +411104110410101110404040441101010041040440441110111103f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc00444004011004100100401010410404101110404110044444444411044 +4441010411041010011011044410401044441101110444411044451111050441 +104111004104410104040410010044104410011011000004040413f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc44000440440441011011044104041110410044101004410101110444444 +4444444104411104504104401104450444104044104104110441011110404044 +041100104440104410411041101100040104400100444441104043f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc01110004104010104440040410104041044404044440441044044111111 +1111104444110441044441044044104101044410441111104111111044444504 +444444410011041040100410110411104440111044040010041103f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc41044441041101040011104101041010000111110111010410401044441 +1011111010404044441050444444441044411104411101041041044444444111 +104040104440404104411041004041010011040410411104410013f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc10400040410044011101011010410441111000041000444104111111110 +4444104441141100110411041104010444104111110414410444440441041040 +411104410111041040100404110410441104104101010040101107f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc01044404041101104044100411104004040444404444101041110444444 +4441110111010445044441110441511111110440104441104410444444444444 +104441104404040411044040400100010040040410404404410043f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc44000101004010101001044104001110410401110101044044041111111 +0411044410444010410411044110044104044445044110444144444444410411 +044011040041104104400410111044441004410104110110104413f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc00444410440401044110401040444004104110004044101101111044444 +4511110411041104111110441004411044444404441044411411111111111110 +444510411110411040104104404410104110104410401004110403f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc44100105504110101004110104400441001041110410410411144441011 +1104444444410444410041111144440440411044410445110444444451111104 +410004100404101011040410100101040404410101044101004113f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc01044417d41045044111004041044104144410044101111110010111111 +1111104110444040441444041011044104104110444444444411041111110444 +104511044101044104411104444044404040041040101044110007f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc44100116810411410404110404101040000104401010440404441041044 +4444111104104414104104411110444411110444404444104444444444444404 +444041101041000400104041011100101104404411000401041103f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc11011004404100104041004040410404444041044104011041010411111 +1041040444441041045041141044104111041044110411111111110411104110 +104410410410444044410404100044410040440504111110400047f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc00404410110411041010110411041040404410410440440410111110444 +1111111041011104441104104410441104411101044504444444104440411104 +440104101104011100104110444404041104004041010004111103f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc44110101004040411104040440104010101104041010104104104444441 +1104444444104440411041041104444110110444444111104401111011101044 +011040410041100411010400100111040041110410104441000413f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc11004410101104104101011011010404444010404104411041040101044 +4441041111110411100411110111041104444411444444444144444441044411 +110411044410044100104044411000404410104101041010444043f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc40110101044041040410400440401040001104040441001100411044444 +1044444410404110444441045041104041104110444444111044401111100101 +044100400404411044410440041111041101010410410104100413f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc10401040010410104044111004110111110041010010110044110410441 +1111111044145044044410410411041410441104441451111104451101045050 +401044444040100410101011104000410040404011104441011003f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc04040411104101041001010441004000411010444504404401004104011 +0441104441040404440104444441111111111111044411111044404044110401 +110410010411044101010100040444044411041100040104104113f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00fcf +fccfc40411004041044410440104040441111040400104044110110441044444 +4411041111444141105044104411010044400444444111041110444411041110 +104104404100411040441011011001001040410411105010441043f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc04100410410400104011010414010410411111001101004044104410441 +1110444011041010410441111110445440454411104411111111110110410044 +411040110444100411010400404110440411041041010100010413f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcc000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff000cf +fccfc41010101004044041104101100404041000041110410441101040404110 +4444441411110511111111040404110114404111044444404410404441104401 +040411041001044104104110110004011040104104101011104103f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc10104410110441010040444044110404111010004044110410410441104 +1041110110404111010411104444444444444410444410111044111010041110 +411104100444101040040411101110400404040440411040401047f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfccffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00ccf +fccfc01010004401010404411001041001040044104441101004104104044441 +0411011104444110444104044444411111110444410444444111040444410010 +104040411000444411104100010401111010404010100404044003f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc40400440040444110040441100440404401010410010110410401101044 +4444441044111104101111104111110444104410104410410440411101104511 +010411040110001040010411111044040441101104411041001113f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfccffcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00ccf +fccfc11111011104001004411010011010100110404104441041041044041010 +4010110441041041051100411104104441044105044104104104104041041010 +441104411004444011104001004010411010044440100410444043f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc40040100041110110100404440411044404110401010104010101104441 +1104414444410444410044110444441045111040411044444411111104110404 +410100100440100440441110110501000404400404414104101107f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfccffcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00ccf +fccfc04404411010404041044110011040410041004110441011104410041010 +0441101100444441111445104444110444441111104104110104040441041041 +044444411044411010440404101044111041044101040041044013f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc10110100441041000401001100004104410441004010400040041410441 +1040441051044410410101044111041041111104041041044441104010410410 +401010040410040444104040410400410110410044004410401103f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfccffcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00ccf +fccfc41004411000110444110440044441040104010441101111104410044104 +0411010410410444111044404404410411104411104444510410441104104104 +110104411104410401041010104044104004104400440104044013f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc04110040444404011000044440104411040441010410010410441101041 +1100444444444101010441110444104110044404040101541111011041041041 +041040400040404044104104440401041100041044104401000403f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfccffcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00ccf +fccfc40401111000040440444410411010104410104104104444041010410410 +0411010441111044444044044044441104440110445044510400440410410404 +104404111004111101010041010440410411100401010110444113f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcf00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc04110000111104010004104040401040104041041040401010104041041 +1040444410404100401101101110110041111104440440110111011041104101 +040111000441000410441104104011040100411110441044001103f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfccffcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfc00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00ccf +fccfc41004444404041104441010410110511041010111104110441041104110 +0404101044441044444111041044411111041044111045044440444104044044 +411004111040444044044040041100411044040104004100444047f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfc00000000000000000000000000000000000000000000000000000000 +00000000000000000000000f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc10440000110400041010104404041100404101004441004004444010404 +4111010411044411041010410401110401044441004410410011041010401100 +104440104104104401001104410044100410404401110011040413f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfccffcfcfcfcfcfcfcfcf +cfcfcfccffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00ccf +fccfc04111111004111104101040110410011041044441110441110101104101 +0400444440411104110504111111104110411010444104104504404104144044 +400011041041000110450004101104410101040110101100411103f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc41000400441041010410404404041104100440411041010404410441044 +1111041044104110411041040040411111104104411041040400110441001101 +044500100110444404004441010041041010004404410044110047f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfccffcfcfcfcfcfcfcfcf +cfcfcfccffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f3ffff3ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00ccf +fccfc10111044110400401044041041104041044010101010404110104410404 +0410410410441044111110411111040410041041104410404111041010440410 +104044411004100100440104104404100441100041004410441103f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00f000003ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00cfc +cfcfc41040111004044110401010410010440410441044101041004440104041 +1041041104104401004004444401111044444410410111041000410441011011 +010410004110411044011040410110044101044410110101004043f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfccffcfcfcfcfcfcfcfcf +cfcfcfccffc00000ffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff00fffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff00ccf +fccfc00404000441001040110410101104104104101101044100440004441110 +0010410411010444441110100044044101010104104400410444104104100440 +104101110404041101100410101004401010404104401044101107f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcffcffffcffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff0000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000cfc +cfcfc44110444010444104404041044041041040410444101044011110104011 +1104011040404410110411044441001044444410041044404110401041044104 +441040104040410010410404410441040104040411044101044043f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfccffcfcfcfcfcfcfcfcf +cfcfcfccffcffffcffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffff0000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000ccf +fccfc11004040404041004041004401010410404010001044104440404410440 +4101104104110104411040410044444110104104410411110404110410410400 +040411041044041101044104104010011040411040401040400413f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcffcffffcfffffffffffffffffff0ffffffffffffffffffffffffffff +fffffffffffffffffffff0000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000cfc +cfcfc40441104110410441104440110440100104441110401010104041041044 +1040441041101041110411101400104441041044104110104110044104104045 +011104104401010040401040041101110044100105040011110103f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfccffcfcfcfcfcfcfcfcf +cfcfcfccffcffffcfffc0ffffffffffffff0ffffffc3ffffffffffffffffffff +fffffffffffffffffffff0000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000ccf +fccfc04044041010441010010044404004011041010104110401010410410401 +0411010404044410411104010114410401104441041004441004404044401100 +440041040111104404110404410041004410411010111105941047f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcffcffffcfff0c3cffffffffffff0ffffffc3ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffccfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc41100411104010104441100110441104110104400410110404100101050 +0100441101100104100441111040104110410104100441010110441100110044 +104404104410040101104041044404101041041104404445e10403f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfccffcfcfcfcfcfcfcfcf +cfcfcfccffcffffcfff0c33fc00ffffffc00f003ffc3fff00fffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcffccf +fccfc10044101041104400410044404110101004410044104410110444044104 +4044010110411010411010410411041010104041044110101004010411041401 +010041001041011044040400400111044010410010040005504113f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcffcffffcfffc0cff0f0ffffff0f0fff0fc000fc3c3ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffccfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfc04401040410040110004401041004440440101101010104404111101010 +1404501011044444110441040404110444410410401004410441104041004110 +444410110410440401104111044400401104104441104500041007f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfccffcfcfcfcfcfcfcfcf +cfcfcfccffcffffcfffff3fc3f0fffffc3f0fff0ffc3ff0fc3ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcffccf +fccfc40110411041104411101044100440011011044040104410110440040441 +0110044400410401044104104110404100100104111110104010111104110041 +001041041044404110011010410044110401040104041011010443f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcc00000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000cfcfcfcfcfcfc +cfcfc04404104000040100441000411044440100441104410101041004411010 +4404410111104044101041044004104044411041040401041105000041041104 +110404104101041004400404004410041044104410410101101043f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfccffcfcfcfcfcfc00000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000fcfcfcfcffccf +fccfc40111040444411011010111040410404411010041004410400440104104 +0110101010041101010410410441011100110410404110410040444404104041 +004101010410410440111040444104410401040104104410044013f0fcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcc00000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000cfcfcfcfcfcfc +cfcfc11000104011100440401104011004040004104410441101054011041001 +1041010104410041104104104041100411010104111004041004010110040410 +110410440104100104404104401000404040411041041044410443f3cfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfccffcfcfcfcfcfc00000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000fcfcfcfcffccf +f000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000fcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f0000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000fcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fc00000ffffffffffffffffffffffffffffffffcffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcffffffffffffffffffffff00000fffffcfffff00f0000ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcffffffffffffffffffffff3fffcfffffcfffffffffcffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcffffffffffffffffffffff3fffcfffffcffffc000fcffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcffffffffffffffffffffff3fffcff00000000ffffc003ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcffffffffffffffffffffff3fffcffffcccffff003f3f3ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffff3ffffffffffff3fffcffffccc3fffffff3f3ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffff3ffffffffffff00000ffff0cf3fffffff3f3ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffff3ffffffffffff3fffcffff3cf0fff00300003fffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffc000fffffffffff3fffcfffc3cfc3fffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffff3ffffffffffff3fffcfff0fcff0fffffc000ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffff3ffffffffffff3fffcffc3fcffc3f003cffcffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffff3fff03fffffff3fffcff0f0003f0f3f3cffcffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffff03fffffff3fffcfffffcfffff3f3cffcffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcffffffffffffffffffffff00000fffffcfffff3f3cffcffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcffffffffffffffffffffffffffffffffcfffff003c000ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcff3ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcff3ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcff3ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcff3ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcff3ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcff3ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcff3ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcff3ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcff3ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcff3ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcff3ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcff3ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcff3ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcff3ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcff3ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcff3ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcff3ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000 +0000000fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fffff +ffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fffff +ffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fffff +ffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fffff +ffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fc000 +00000fcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fcfff +ffffcfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fcfff +ffffcfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fcfff +ffffcfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fcfff +ffffcfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fcfff +ffffcfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fcfff +ffffcfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffc0000000000 +000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fcfff +ffffcfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffff +ffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fcfff +ffffcfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffff +ffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fcfff +ffffcfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffff +ffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fcfff +ffffcfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffff +ffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fcfff +ffffcfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffc0000000 +0fcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fcfff +ffffcfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffcfffffff +cfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fcfff +ffffcfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffcfffffff +cfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fcfff +ffffcfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffcfffffff +cfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fcfff +ffffcfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffcfffffff +cfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fcfff +ffffcfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffcfffffff +cfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fcfff +ffffcfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffcfffffff +cfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fcfff +ffffcfcffffff00fffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffcfffffff +cfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fcfff +ffffcfcffffc0ff03fffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffcfffffff +cfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fcfff +ffffcfcfffc3ffffc0000003ffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffcfffffff +cfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fcfff +ffffcfcfff3ffffffffffff0ffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffcfffffff +cfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fcfff +ffffcfcfc0fffffffffffffcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffcfffffff +cfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fcfff +ffffcfcfcffffffffffffffcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffcfffffff +cfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3fcffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffc000033fcfff +ffffcfcffffffffffffffffcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffcfffffff +cfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3fc00000fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffff3fffff3fc000 +00000fcffffffffffffffffcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffcfffffff +cfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffcffffff3fffff +ffffffcffffffffffffffffcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffcfffffff +cfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffff3ffffff3fffff +ffffffcfffffffffffffffc00fffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffcfffffff +cfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffff3ffffff3fffff +ffffffcfffffffffffffff3ff3ffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffcfffffff +cfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f0000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000ffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffcfffffff3fffff +ffffffcffffffffffffffcfffcffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffcfffffff +cfcfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f0000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000fcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffcfffffff3fffff +ffffffcffffffffffffff3ffff3fffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffcfffffff +cfcffffff00fffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f0000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000ffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffc0000000000000ffffffffcfffffff000000 +0000000fffffffffffffcfffffcfffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffcfffffff +cfcffffc0ff03fffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f0000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000fcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffcffffffffffffcffffffffcfffffffffffff +ffffffffffffffffffffcfffffcfffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffcfffffff +cfcfffc3ffffc0000003ffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f0000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000ffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffcffffffffffffcffffffffcffc0000000000 +00000000000000ffffffcfffffcfffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffcfffffff +cfcfff3ffffffffffff0ffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c00000ff3ffffffffff3fffffffffffffffffcffffffffffffff3ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +3fffffffcffffffcfffccffffffffffffffffcffffffffffffffffffffffffff +ffffffffffffffffffffffffff3f3ffffff3ffffffffccfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffcffffffffffffcffffffffcffcffcffcffcf +fcffcff3ff3ffcffffffcfffffcfffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffcfffffff +cfcfc0fffffffffffffcffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ff3ffffffffff3ff000ffffffffffffcfffffcfffcffff3ffffff +fffffffffffffffffffffffffffc0000ffff3fffffff000000ffffffffffffff +3fffffffcffffffcfffccffffffff0000ffffcffffffffffffffffffffffffff +ffffffffffffffffffffffffff3f3ffffff3fffff0ff0cffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffcffffffffffffcffffffffcffcff33f33f33 +f33f33ccfccffcffffffcfffffcfffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffcffcfffffff +cfcfcffffffffffffffcffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ff3ffffffff000033fcfffc00ffffffcfffffcfffcfffc000c003 +fffffffffc0000003fcfffffffffffc3ffff0fffffff3fcffcffcfffffffffff +3fffffffcffffffcffcfffffff0033ffcffffcffffffffffffffffffffffffff +fffffffff003fffffffffffffc3f3ffffff003fffc3f3cfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffcff00000000cfcffffffffcffcffcffcffcf +fcffcff3ff3ffcfffffff3ffff3fffff0000000000000fffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffc00000ffcfffffff +cfcffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ff3ffffffffcffcf3f0ffc0cc0fffffcfffff0fffcfffcf3fcff3 +fffffffffffffc3fffcffff3ffffff0fffffcfffffff3fcffcffcffff3fff000 +000fc00000003ffcffc3fffffff3f3ffcfc00000003fffffffffffffffffffff +ffffffff03303ffffffffffffcff3fcff003ffffff3c00ffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffcff3fffffffcfcffffffffcffcffffffffff +fffffffffffffcffffffccfffccfffff3fffffffffffcfffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff3ffffcffc0000000 +0fcffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ff3ffffffffc3f0f3f3ff0fcfc3ffffcfffff3f00000f0f3fcff3 +fffffffffffff0ffffcffff0fffffc3fffffc3ffc3ff000000ffcffff0ffffff +3fffffffcffffc0003f0fffffff3f0000ffff3ffffffffffffffffffffffffff +fffffffc3f3f0ff000fc00fff0ff3f0fffcffffffff0fcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffcff3fffffffcfcffffffffcffcffffffffff +fffffffffffffcfffffff33ff33fffff3fffffffffffcfffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffcfffffcffffffffff +ffcfffffffffffffffc00fffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ff3fffffffff3f3f3c3fc3fcff3ffffcfffff3fffcfffff3fcff3 +ffffffffffffc3ffffcffffc3ffff0fffffff3fc0fff3fcffcffcffffc3fffff +3fffffffcffffffcfcfcfffffff3f3ffcfff33fcffffffffffffffffffffffff +fffffff0ff3fcff0fc3c3c3ff3ff303fffcfffc3ffccfcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffcff3fffffffcfcfffffffff3fcffffffffff +fffffffffffffcffffffffc00fffffff3fffffffffffcfffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffff3fffffcffffffffff +ffcfffffffffffffff3ff3ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ff3fffffffff3f3f3cffcff0ff0ffff03ffff3fffcfffff3fcff3 +ffffffffffffcfffffcfffff3fffc000fffff0c0ffff3fcffcffcfffff3ff000 +000ffff00ffffffcfcfc3fffff0033ffcfff0ffcffffffffc3c330c3f003fc30 +fffffff3fc3fc3f0fc3c3f0fc3ff03ffff003c0ffffc00fcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffcff3fffffffcfcfffffffff3fcffcffcffcf +fcffcff3ff3ffcfffffffff33fffffff3fffffffffffcfffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffff3fffffcffffffffff +ffcffffffffffffffcfffcffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ff30000000f000033f3f0ff3ffcffff33ffff3fffcfff00000ff3 +ffff00ffffff0fffffcfffff0fff0ffc3ffffc0fffff3fcffcffcfffff0fffff +3fffffc3c3fffff0fcff3ffffff3f0000fff3ffcffffffffc3030c30fff0fc0c +3fffffc3fcfff3f0fc3c3f0f03ff3ffffc3fc0ffc03cfcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffcff3fffffffcfcfffffffffc00ff33f33f33 +f33f33ccfccffcfffffffffcffffffff3fc00000000fcfffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffcffffffcffffffffff +ffcffffffffffffff3ffff3fffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ff3fffffffffffff3fcf3fc3ffcffff30ffff3fffcfffff3fcff3 +fff03f3fffff3fffffcfffffcffc3fff0ffff0ffffff000000ffcfffffcfffff +3fffffcff3fffff3fcff3ffffff3f3ffcffc3c0000ffffffc0f30c30fff0fc3f +0fffffcff0fff3f0f0fc3f0c33ff3ffff0fc0fffff3cfcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffcff3fffffffcfcfffffffffffcffcffcffcf +fcffcff3ff3ffcffffffffffffffffff3fcfffffffcfcfffffffffffffffffff +ffffffffffffffffffffffffc0000000000000ffffffffcffffffc0000000000 +000fffffffffffffcfffffcfffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ff3fffffffffffff3fcf3fcfffcfffc3cffff3fffcfffff3fcff3 +ff03ffcfffff3fffffcfffffcff0ffffcfffc3ffffffffffffffcfffffcfffff +3fffffcff3fffff3fcfffffffff3f3ffcff33ffcffffffffc3ff0c30f000fc3f +0fffffcff3fff3f003fc3f0ff3ff3ffffff0cfffff3c00ffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffcff3fffffffcfcfffffffffffcffffffffff +fffffffffffffcffffffffffffffffff3fcfffffffcfcfffffffffffffffffff +ffffffffffffffffffffffffcffffffffffffcffffffffcfffffffffffffffff +ffffffffffffffffcfffffcfffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ff3ffffffffc000f3fcf3f0fff0fffcfc3fff3fc00ffffc0fcff3 +ffffffcfffff3fffffc3cfffcfffc0ffcfff0fffffffffc3ffffc3cfffcffc00 +3fffffc3f3ffffc3fcfffffffff3f0000fcf3ffcffffffffc3ff0c30c3f0fc3f +0fffffcfc3ffc3f0fffc3f0ff3ff3fffffc3cfffff3cfcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffcff3fffffffcfcfffffffffffcffffffffff +fffffffffffffcffffffffffffffffff3fcfffffffcfcfffffffffffffffffff +ffffffffffffffffffffffffcffffffffffffcffffffffcffc00000000000000 +000000000cffffffcfffffcfffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ff3ffffffffcffcf3fcf3c3fff3fff0ff0fff3f3fc0fffccfcff3 +ffffffcfffff0ffffff30fffffff3c3fcfff3fffffff3cf0fc3ff30ffffff3ff +03fffff003ffffcffcfffffffff03f3cffff3ffcffffffffc3ff0c30c3f0fc3f +0fffffcf0fffcff0fffc3f0ff3ff3ff3ff0fcfffff3cfcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffcff3fffffffcfcfffffffffffcffffffffff +fffffffffffffcffffffffffffffffff3fcfffffffcfcfffffffffffffffffff +ffffffffffffffffffffffffcffffffffffffcffffffffcffcffcff3ffcffcff +cff3ff3ffcffffffcfffffcfffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ff3ffffffffcffcf3c0fc0fff03ffc3ffc3ff333fcc3ff0c3cff3 +ffffff0fffffc3fffff03fffffff3f3f0fff3fffffff3cfcff0ff03ffffff3ff +303fffffcfffff0ff0fffff03f03ff3cffff3ffcffffffffc3ff0c30c3c0fc3c +3ffffff03ffc0ff0fffc3c3ff3ff3ff3ff3fffffff3c00fcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffcff3fffffffcfcfffffffffffcffcffcffcf +fcffcff3ff3ffcffffffffffffffffff3fcfffffffcfcfffffffffffffffffff +ffffffffffffffffffffffffcffffffffffffcffffffffcffcff33ccff33f33f +33ccfccffcffffffcfffffcfffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ff3ffffffffcffcf3fffffff03fff0ffff0ff0f3f0f0ff3f3c003 +fffffc3ffffff03ffffcffffffff0f3c3fff0ffffffc3cfff3cffcfffffff3fc +3f0fffff0ffffc3ff3fffff03ffffc3cfcff3ffcffffffffc3ff0c30f0303c00 +ffffffffffc0fff0fffc00fff3ff3fc3ff0ffffffc3ffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffcff3fffffffcfcfffffffffffcff33f33f33 +f33f33ccfccffcffffffffffffffffff3fcfffffffcfcfffffffffffffffffff +ffffffffffffffffffffffffcff000000003fcffffffffcffcffcff3ffcffcff +cff3ff3ffcfffffff3ffff3fffff0000000000000fffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ff3ffffffffcffcf3fffffffffffc3ffffc3fcfc03fffc3f0ffff +ffffc0ffffffff03ffffffffffffc000ffffc00003f0fc3fc3fffffffffffc00 +fffffffc3fffffff03ffffff3ffff0fcf0ff3000003ffffffffffffffffffc3f +fffffffffffffffffffffffff3ff0fcfffc0000ff0cffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffcff3fffffffcfcfffffffffffcffcffcffcf +fcffcff3ff3ffcffffffffffffffffff3fcfffffffcfcfffffffffffffffffff +ffffffffffffffffffffffffcff3fffffff3fcffffffffcffcffffffffffffff +fffffffffcffffffccfffccfffff3fffffffffffcfffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ff3ffffffffc000f3fffffffffff0ffffff0fffffffff0fffffff +ffffffffffffffffffffffffffffffffffffffffffffff000fffffffffffffff +ffffffc0fffffffffffffff0ffff03ff03ff3ffffffffffffffffffffffffc3f +fffffffffffffffffffffffff3ffc00fffffffffc3f000ffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffcff3fffffffcfcfffffffffffcffffffffff +fffffffffffffcffffffffffffffffff3fcfffffffcfcfffffffffffffffffff +ffffffffffffffffffffffffcff3fffffff3fcffffffffcffcffffffffffffff +fffffffffcfffffff33ff33fffff3fffffffffffcfffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ff3ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffcff3fffffffcfcfffffffffffcffffffffff +fffffffffffffcffffffffffffffffff3fcfffffffcfcfffffffffffffffffff +ffffffffffffffffffffffffcff3fffffff3fcfffffffff3fcffffffffffffff +fffffffffcffffffffc00fffffff3fffffffffffcfffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffff3ffffffcff3ffffcfffffff3fcf3f3ff3ffcffffff3ffff +ffffffffffff3ffccfff3fcfffffffffffffffffffffffffffffffffffffffff +fff03f3fffffffcffffffcffffffc3fffffffffffffff3ffffffffffffffffff +3ffffffffffffffcfffffffffffff3fffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffcff3fffffffcfcfffffffffffc0000000000 +00000000000000ffffffffffffffffff3fcfffffffcfcfffffffffffffffffff +ffffffffffffffffffffffffcff3fffffff3fcfffffffff3fcffcff3ffcffcff +cff3ff3ffcfffffffff33fffffff3fffffffffffcfffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffc0ffffffcff3ffffcfffffff3f3f3cffc3cfcf0ffff3ffff +ff00000fffff3ffccfff3fcfffff3fffffffffffffffffff0f00000fff3fff3f +f003ff3fffffff0ffffffcfffffff03fffff3ffffffff3fffffffcfffcffffff +3fffffcffffffffcfffffffffffff3ffffff3ffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffcff3fffffffcfcffffffffffffffffffffff +f3ffffffffffffffffffffffffffffff3fcfffffffcfcfffffffffffffffffff +ffffffffffffffffffffffffcff3fffffff3fcfffffffffc00ff33ccff33f33f +33ccfccffcfffffffffcffffffff3fc00000000fcfffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffff0c3fffff0ff0ffffcfff0fff3c3330cfcfcfc03ffff003ff +fffffc3fff00000ffc00000003ff3fffffffffffffffffffc3fcfc3fff3fff3f +ffcfff3ffffffc3ffffffcffffffff03ffff3ffffffff3ffc3fffcfffcffffff +3fffffcffffffffcfffffffffff000003fff0ffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffcff3fffffffcfcffffffffffffffffffffff +f3ffffffffffffffffffffffffffffff3fcfffffffcfcfffffffffffffffffff +ffffffffffffffffffffffffcff3fffffff3fcfffffffffffcffcff3ffcffcff +cff3ff3ffcffffffffffffffffff3fcfffffffcfcfffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffc3f03ffff3ffcfff0003fc3f003cf3f3f0003cffff003ffff +ffffc3ffffffcfffffff3fcfffff3ffffffffffffffffffff3ff33ffff3fff3f +c0000f3ffffff0fffffffcfffffffffffffc3f0003fc000ff0fffcfffcfff000 +000fffcffffffc0003ffffffffffcfffffffcffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffcff3fffffffcfcfffffc03ffffffffffffff +fcffffffffffffffffffffffffffffff3fcfffffffcfcfffffffffffffffffff +ffffffffffffffffffffffffcff3fffffff3fcfffffffffffcffffffffffffff +fffffffffcffffffffffffffffff3fcfffffffcfcfffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffc0fff03ffc3ffc3fffcffff0ff3f3f3ccc3ff3cff3ffcfffff +ffff0fffffffcffffffffcffffff3fffffffffffffffffffffc0000fff3fff3f +ffcff0003fffc3fffffffc003ffffffffffcfffffffff3fffc3ffcfffcffffff +3fffffcffffffff3ffffffffffffcfcfffffc3ffc3fffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffcff3fffffffcfcffff03fc0fffffffffffff +fcffffffffffffffffffffffffffffff3fcfffffffcfcfffffffffffffffffff +ffffffffffffffffffffffffcff3fffffff3fcfffffffffffcffffffffffffff +fffffffffcffffffffffffffffff3fcfffffffcfcfffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffc0fffff03f0ffff0fff0fffffff3f33300fffffc3c3ffcfffc3 +fffc3fffff000003ff0ffc003fff3fffffffffffffffffffffcfcfcfff3fff3f +f0003f3f3fff0ffffffffcfffffc0000fffcffffffffc3fffffffcfffcffffff +3fffffcffffffff3fc00ffffffffc000fffff3fc0ffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffcff3fffffffcfcfffcfffff00000003fffff +fcffffffffffffffffffffffffffffff3fcfffffffcfcfffffffffffffffffff +ffffffffffffffffffffffffcff3fffffff3fcfffffffffffcffffffffffffff +fffffffffcffffffffffffffffff3fcfffffffcfcfffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffff00003ffc3ffffc3ff3ffcfffc3c033cff0003f00fff003c0f +ffc3fffffffff3ffffc0f0fc3fff3fffffffffffffffffffffcfcfcfff3fff3f +f3cf3f3f3ff0fffffffffcfffffffffc3ffcffffffffcfff3ffffcfffcfff000 +000fffcffffffff3fffffffffffc0fcc0ffff0c0fffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffcff3fffffffcfcffc3ffffffffffff0fffff +ff3fffffffffffffffffffffffffffff3fcfffffffcfcfffffffffffffffffff +ffffffffffffffffffffffffcff3fffffff3fcfffffffffffcffcff3ffcffcff +cff3ff3ffcffffffffffffffffff3fcfffffffcfcfffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffff3ffff0c000030ff3ffcfffc0fff3f3f3ff3fffffc3fc0ff +f0000000fffffcffffffc330ffff3ffffffffffc0000003c03c0000fff33ff3f +f0003f3f3fc3fffffffffcffffffffff3ffcffffffffcfff3ffffccffcffffff +3fffffcfffffffc3fffffffffff0cfcfcffffc0ffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffcff3fffffffcfcfc3fffffffffffffcfffff +ff3fffffffffffffffffffffffffffff3fcfffffffcfcfffffffffffffffffff +ffffffffffffffffffffffffcff3fffffff3fcfffffffffffcff33ccff33f33f +33ccfccffcffffffffffffffffff3fcfffffffcfcfffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffff3fffffff3ff3ffc3ffcfffc3300000f3ff3fffff0fc0fff +ffff0ffffff0000ffc3fff03ffff3ffffffffffffffffffff3cfcfcfff0fff3f +f3cf3f3f3ff0fffffffffcffffffffff3ffcffffffff0fff3ffffc3ffcffffff +3fffffcfffffffcffffffffffff3cfcfc3fff0fffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffcff3fffffffcfcfcffffffffffffffcfffff +ffcfffffffffffffffffffffffffffff3fcfffffffcfcffffffc0fffffffffff +ffffffffffffffffffffffffcff3fffffff3fcfffffffffffcffcff3ffcffcff +cff3ff3ffcffffffffffffffffff3fcfffffffcfcfffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fff0000000ffff3ff3ffcfffcfff3333f3fff0003cffffff0cfff +fffc3fffffcfffc3ff03f0303fff3ffffffffffffffffffff3cfcfcfff3fff3f +f0003f3f3ffc3ffffffffcffffffffff3ffcffffffff3fff3ffffcfffcffffff +3fffffcfffffffcfffffffffffc3cf3ff3ffc3fffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffc00000ff3fffffffcfcffffffffffffffffcfffff +ffcfffffffffffffffffffffffffffff3fcfffffffcfcfffff03f03fffffffff +ffffffffffffffffffffffffcff3fffffff3fcfffffffffffcffffffffffffff +fffffffffcffffffffffffffffff3fcfffffffcfcfffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffff3fffffff3ff3ff0fffcfff33f3fcf3f3ff3cf0fffc3cfff +fff0ffffff3fffffffff03ff03ff3fffcffffffffffffffff3c0000ffffffc3f +ffcfff3f3fff0ffffff000fffffffffc3ffcfcfffffc3fff3ffffffff0fffc00 +3fffffcffff3ff0fffffffffffcfcf3ff3ff0ffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffff3ffffcff000000000fcffffffffffffffffcfffff +ffcfffffffffffffffffffffffffffff3fcfffffffcfcffffcffffc0000003ff +ffffffffffffffffffffffffcff3fffffff3fcfffffffffffcffffffffffffff +fffffffffcffffffffffffffffff3fcfffffffcfcfffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffff3f3fcffffc3ff3ffffc00ffff3f0fccff3ff3c03fff0fcfff +fff3ffffff3fffffffffffffffff3fff0ffffffffffffffff3cfcfcffffffcff +f0003c3f3fffc3ffffcffc0ffffffff0fffcfcffffffff003ffffffff3fff3ff +03ffffcfffc3ff3fffffffffffcfccffc3ff3ffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffcfffffcffffffffffffcffffffffffffffffcfffff +fff3ffffffffffffffffffffffffffff3fcfffffffcfcfffc3fffffffffff3ff +ffffffffffffffffffffffffcff3fffffff3fcfffffffffffc00000000000000 +0000000000ffffffffffffffffff3fcfffffffcfcfffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffff3f3fcffffcfff3ffff3fc0fff3f33f3ff0003cfffff3fffff +fff3ffffff0ffffffff0f0003fff3ffc3fff03fffffffffff3cfcfcffffff0ff +ffcffcff3ffff0ffffcffcc0ffffffc3fffccc3ffffffcff03ffffffc3fff3ff +303fffcfff0fff3ff3fffff03fcfc3ffcfff3fffffffc0ffcfcfcfcfcfc03fff +ffffffffffffffffffffff3fffffcffffffffffffcfffffffffffffffc00ffff +fff3ffffffffffffffffffffffffffff3fcfffffffcfcffc3ffffffffffffcff +ffffffffffffffffffffffffcff3fffffff3fcfffffffffffffffffffffff3ff +ffffffffffffffffffffffffffff3fcfffffffcfcfffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffc3f3fc3fff0ffc3ffff3f0c3ff3c33cccf3ff3cff3ff0fffff +fff0ffffffc0ffffffc3f3ff3fffcfc0ffff03ffffffffffc3cfcf0fffffc3ff +ffc030fc3ffffc3fffcff0fc3ffffc0ffffc3f0000fffcfc30ffffff0ffff3fc +3f0ffff3f03ffc3ff0fffff03ff03ffc0fff0fffffffc0fcfcfcfcfcfcc03fff +ffffffffffffffffffffff3fffffcffffffffffffcfffffffffffffff3ff3fff +fff3ffffffffffffffffffffffffffff3fcfffffffcfcff0fffffffffffffcff +ffffffffffffffffffffffffcff3fffffff3fcfffffffffffffffffffffff3ff +ffffffffffffffffffffffffffff3fcfffffffcfcfffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fff0ff3ff0ffc3ffcfffffc03ffff3cff3c0f3ff3c3c3ffc0000f +fffc0ffffffc000fff0ff3ff3ffff00ffffff3ffffffffff0cfffffffffc0fff +fc0fc3fcffffff0ffff003ffffff00ffffff3fffffffff00fffffff03ffffc00 +fffffffc03fffcfffc003fffffffffc0ffffc00003fffcffcfcfcfcfcfc03fff +fffffffffffffffffffffcffffffcffffffffffffcffffffffffffffcfffcfff +fffcffffffffffffffffffffffffffff3fcfffffffcfcffffffffffffffffcff +ffffffffffffffffffffffffcff3fffffff3fcfffffffffffffffffffffffcff +ffffffffffffffffffffffffffff3fcfffffffcfcfffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffff03ffffc0ffc0ffffffffffff30f0ff3f3fc3f00fffffffff +ffffc03ffffffffffc3ff0003fffffffffff0ffffffffffc3f000003ffffffff +c0ff0fc0ffffffcfffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffc0fcfcfcfcfcfcc03fff +fffffffffffffffffffffcffffffcffffffffffffcffffffffffffff3ffff3ff +fffcfffffffffffffffffffffff000003fcfffffffcfcffffffffffffffffcff +ffffffffffffffffffffffffcff3fffffff3fcfffffc03fffffffffffffffcff +ffffffffffffffffffffffffffff3fcfffffffcfcfffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffcffffffc0000000000000fffffffffffffcfffffcff +fffcffffffffffffffffffffff0fffff3fc00000000fcffffffffffffffffcff +ffffffffffffffffffffffffcff3fffffff3fcffff03fc0ffffffffffffffcff +ffffffffffffffffffffffffffff3fcfffffffcfcfffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffcffffcfffcfffffffcfffffff3fcf3f3ff3ffcffffff3ffff +fffffcffffcffffffffffcffffffffffffffffffffffffcfffffffffffffffff +3ffffff3fff33fffffffffffffffffffffffffffffffffffffffffffffffff3f +fcfffcfffffffffffffffffcfffffffffffffffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffcfffffffffffffffffffffffffffffffffcfffffcff +ffff3ffffffffffffffffffffcffffff3fffffffffffcfffffffffffffffc00f +ffffffffffffffffffffffffcff3fffffff3fcfffcfffff0000000ffffffff3f +ffffffffffffffffffffffffffff3fcfffffffcfcfffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffcfffc0fffcfffffffcfffffff3f3f3cffc3cfcf0ffff3ffff +f0fff3ffffcffffffffffcfffffc0000ffff00000fffffcfffffffffffffffff +3ffffff3fff33fffff000f000fc0030000fcfffcffffc00003ffffffffffff0f +f0fffcff0003ffcffffffffcfffffffc0000fffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffcffc000000000000000000000003ffffffcfffffcff +ffff3ffffffffffffffffffff3ffffff3fffffffffffcfffffffffffffff3ff3 +ffffffffffffffffffffffffcff3fffffff3fcffc3fffffffffffc3fffffff3f +ffffffffffffffffffffffffffff3fcfffffffcfcfffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffc000300ffffcfffffffcfff0fff3c3330cfcfcfc03ffff003ff +fc3c0003ffcfff003ffffcffffffffc3ffffffff3ffc0000003f0000003fffff +3ffffff3ff3fffffff3fcf3fcfcff3fcfffcfffcffffffff0fffffc00fffffcf +f3fffcff3ff3ffc3fffffffcfff0ffffffc3fffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffcffcffcff3ff3ff3ff3ff3ff3ff3ffffffcfffffcff +ffffcffffffffffffffffffff3ffffff3fffffffffffcffffffffffffffcfffc +ffffffffffffffffffffffffcff3fffffff3fcfc3fffffffffffff3fffffff3f +ffffffffffffffffffffffffffff3fcfffffffcfcfffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fff3fcf3fffc0003ffff0003fc3f003cf3f3f0003cffff003ffff +ff3cfff3ffcfff3f3c00000003ffff0ffffff0fcfffcffffff3fffff0fff0000 +0000fff3ff0fffffff000f000fc003c003f0fffcfffffff0fffffc0cc0ff0000 +0000fcff0003fff3ffffff0003fc3fffff0ffffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffcffcff33ccfccfccfccfccfccff3ffffffcfffffcff +ffffcfffffffffffffffffffcfffffff3fffffffffffcffffffffffffff3ffff +3fffffffffffffffffffffffcff3fffffff3fcfcffffffffffffff3fffffffcf +ffffffffffffffffffffffffffff3fcfffffffcfcffffff00fffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fff0f0f3fffff3fffffffcffff0ff3f3f3ccc3ff3cff3ffcfffff +fffcfff3f0000f3f3ffffcfffffffc3ffffffc33fffcffffff3ffffc3f33ffff +3ffff0000fc3ffffff3fcf3fcfcff3cff3f3f00000ffffc3fffff0fcfc3fffff +ffffc00f3ff3fff0fff0fffcffff0ffffc3ffffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffcffcffcff3ff3ff3ff3ff3ff3ff3ffffffc3ffff3ff +ffffcfffffffffffffffffffcfffffff0000000000000fffffffffffffcfffff +cffffffffffffffffffc00000ff3fffffff3fcffffffffffffffff3fffffffcf +ffffffffffffffffffffffffffff3fcfffffffcfcffffc0ff03fffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffcf3f0003ff3fc00fff0fffffff3f33300fffffc3c3ffcfffc3 +fffcfff3ffcfcf3f3ffffcfffffff0ffffffff0fffffc00003fffff0ff33ffff +3ffffff3f3f3ffffff000f000fcff3cff3f3fffcffffff0fffffc3fcff3ff003 +ffcffcff3ff3fffcff03fff0fffffffff0fffffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffcffcfffffffffffffffffffffff3ffffff30fffccff +fffff3ffffffffffffffffffcfffffffffffffffffffffffffffffffffcfffff +cfffffffffffffffffc3ffffcff000000003fcffffffffffffffff3ffffffff3 +ffffffffffffffffffffffffffff3fcfffffffcfcfffc3ffffc0000003ffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffc00033f3fff3fffffff3ffcfffc3c033cff0003f00fff003c0f +fffc0003ffcfcf3f3fff00ffffffc000ffc00000003fffcffffffff3ffffffc0 +3ffffff3f3f0ffffff3fffffcfc003c003f3fffcfffff0ffffffcff0ff0ff3f3 +cfcffcff0003fffc303ffff3ffcfffffc000ffffffff0cfcfcfcfcfcfcc03fff +fffffffffffffffffffffcffcfffffffffffffffffffffff3ffffffcf3ff33ff +fffff3ffffffffffffffffffcffc000000000000000000000000ffffffcfffff +cfffffffffffffffff3fffffcffffffffffffcfffffffffffffff003fffffff3 +ffffffffffffffffffffffffffff3fcfffffffcfcfff3ffffffffffff0ffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffcff3f3ffc3fffffff3ffcfffc0fff3f3f3ff3fffffc3fc0ff +c03cffffffcfcf3f3ffc3c3fffff0ffc3fffffcfff3fffcfffffffc3ffffff0f +0fffffc3f3fcffffff3fffffcfffffcff3f3fffcfffc0000003f0ff3ffcff3f3 +cfcffcffffffffff03fffff3ffcfffff0ffc3fffffff0cffcfcfcfcfcfc03fff +ffffffffffffffffffffff3fcfffffffffffffffffffffff3ffffffffc00ffff +fffff3ffffffffffffffffffcffcfff3fcffcffcffcff3ffcffcffffffcfffff +cffffffffffffffffcffffffcffffffffffffcffffffffffffffcffcfffffff3 +ffffffffffffffffffffffffffff3fcfffffffcfcfc0fffffffffffffcffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffcff3f3ffcfffffffc3ffcfffc3300000f3ff3fffff0fc0fff +ff3cffffffcfcf3f3ffcff3ffffc3fff0fffffcffcffcfcfffffffcfffffff3f +cfffffcff3fcffffff3f000fcf0000cff3f3fffcffffffc3ffff3fc3ffcff003 +cfcffcf000003ffc3fffffc3ffcffffc3fff0fffffff00fcfcfcfcfcfcc03fff +ffffffffffffffffffffff3fcffcff3ff3ff3ff3ff3ff3ff3fffffffff33ffff +fffffcffffffffffffffffffcffcffccf33f33f33f33ccff33fcffffffcfffff +cffffffffffffffffcffffffcffffffffffffcffffffffffffff3fff3ffffffc +ffffffffffffffffffffffffffff3fcfffffffcfcfcffffffffffffffcffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffc00033f3ffcfffffffcfffcfff3333f3fff0003cffffff0cfff +ff3c0003ffcfcf3f3ffcff3ffff0ffffcfffffcff3ffcfc003ffffcfffffff3f +cfffffcff3ffffffff3f3fcfcfff3fc003f3fffcffffff0fffff3fcfffcff3f3 +cfcffc0ffcfffff0ffffffcfffcffff0ffffcfffffff0cffcfcfcfcfcfc03fff +ffffffffffffffffffffffc00ff33ccfccfccfccfccfccff3fffffffffcfffff +fffffcffffffffffffffffffcffcfff3fcffcffcffcff3ffcffcfffffff3ffff +3ffffffffffffffff3ffffffcffffffffffffcfffffffffffffcffffcffffffc +ffffffffffffffffffffffc000033fcfffffffcfcffffffffffffffffcffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffccff3f3ff0fffffff0fffcfff33f3fcf3f3ff3cf0fffc3cfff +ff3cfff3ff0fcf3f3ffc3f3fffffc0ffcfffffcfffffcfcfffffffcfffffff0f +cfffff0ff3ffffffff3f3fcfcfcf3fcff3f3fc00fffffc3fffff3f0fff0ff3f3 +cfcfc0ff3cffffc3ffffff0fffcfffffc0ffcfffffff0cfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffcffcff3ff3ff3ff3ff3ff3ff3fffffffffffffff +fffffcffffffffffffffffffcffcfffffffffffffffffffffffcffffffccfffc +cffffffffffffffff3ffffffc0000000000000fffffffffffff3fffff3fffffc +ffffffffffffffffffffff3fffff3fc00000000fcffffffffffffffffcffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffcc3f3f3ff3fffffffffc00ffff3f0fccff3ff3c03fff0fcfff +ff3cfff3ff3fcf3f3fff003fffff3c3fcfffffcfffffcfcfffffffc3ffffffc0 +0fffff3ff3ffffffff3f3fcfcfcf00cff3f3f3fc0ffffcffffff3c3fff3ff003 +cfcffcff3c00ffcfffffffffc00fffff3c3fcfffffff0cffcfcfcfcfcfc03fff +ffffffffffffffffffffffffcfffffffffffffffffffffff3fffffffffffffff +ffffff3fffffffffffffffffcffcfffffffffffffffffffffffcfffffff33ff3 +3ffffffffffffffff3fffffffffffffffffffffffffffffffff3fffff3ffffff +3ffffffffffffffffffffcffffff3fffffffffffcfffffffffffffffc00fffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fff0ccc3f3ff3ff3ffffff3fc0fff3f33f3ff0003cfffff3fffff +ff3cfff3ff3f0f3f3ffffcffffff3f3f0fffffcfffff03cffffffff0ffffffff +3ffffc3fc3ffffc0ff3f000fcfcf3fc003f333fcc3fffcffffffc0fff03ff3f3 +cfcffcff3cffffcfffffffff3fc0ffff3f3f0fffffff0cfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffcfffffffffffffffffffffff3fffffffffffffff +ffffff3ffffffffffffffffff3fcfffffffffffffffffffffffcffffffffc00f +fffffffffffffffff3ffc000000000000000000000003ffffff3fffff3ffffff +3ffffffffffffffffffff3ffffff3fffffffffffcfffffffffffffff3ff3ffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fff3cfcff3fc3ff0ffffff3f0c3ff3c33cccf3ff3cff3ff0fffff +fc3c0003fc3f3f3f3ffff0ffffff0f3c3fffffcfffff30cffffffffc0ffffffc +3ffff0ffcfffffc0ff3fffffcfc33ff3cff0f3f0f0fffc3fffffffff03fff3f3 +ffcffcfc0cffffc3ffffffff3f0c3fff0f3c3fffffff0cffcfcfcfcfcfc03fff +ffffffffffffffffffffffffcfffffffffffffffffffffff3fffffffffffffff +ffffff3ffffffffffffffffff3fcfff3fcffcffcffcff3ffcffcfffffffff33f +fffffffffffffffff3ffcffcff3ff3ff3ff3ff3ff3ff3ffffff3fffff3ffffff +3ffffffffffffffffffff3ffffff3fffffffffffcffffffffffffffcfffcffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffc3cf0ff3fcfffc003fffc03ffff3cff3c0f3ff3c3c3ffc0000f +f0cffffffcff3f003fffc3ffffffc000ffffffcffffc3c0fffffffffc0fffff0 +fffffffc0ffffffcff3fffffcf0c3fcff3fcfc03ffffff03fffffffffffff3f3 +ffcffcf0c0fffff00000ffffc03fffffc000fffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffcffcff3ff3ff3ff3ff3ff3ff3fffffffffffffff +ffffffcffffffffffffffffffc00ffccf33f33f33f33ccff33fcfffffffffcff +fffffffffffffffff3ffcff33ccfccfccfccfccfccff3ffffff3fffff3ffffff +cfffffffffffffffffffcfffffff3fffffffffffcffffffffffffff3ffff3fff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffcffff3fffffffffffffffffff30f0ff3f3fc3f00fffffffff +c3f0000030fc3ffffffc0ffffffffffffffffc0ffff0ffc0000fffffffffff03 +ffffffffffffffc3ff3ffffc0f3f000000fffffffffffff00ffffffffffff3c3 +fc0ff0c3fc003ffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffcff33ccfccfccfccfccfccff3fffffffffffffff +ffffffcffffffffffffffffffffcfff3fcffcffcffcff3ffcffcffffffffffff +fffffffffffffffff3ffcffcff3ff3ff3ff3ff3ff3ff3ffffffcffffc3ffffff +cfffffffffffffffffffcfffffff0000000000000fffffffffffffcfffffcfff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffcffcff3ff3ff3ff3ff3ff3ff3fffffffffffffff +fffffff3fffffffffffffffffffcfffffffffffffffffffffffcffffffffffff +fffffffffffffffff3ffcfffffffffffffffffffffff3ffffff33fff0cffffff +cfffffffffffffffffffcfffffffffffffffffffffffffffffffffcfffffcfff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffff3cffffffff3fffffcfffffffffffffffffffcffffffc3ffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffff +ffffcfffccfffffffffffffffffffffffffffffffffffffffffffff3ff3fffff +3fff33f3fcffcffff0fffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffcfffffffffffffffffffffff3fffffffffffffff +fffffff3fffffffffffffffffffcfffffffffffffffffffffffcffffffffffff +fffffffffffffffffcffcfffffffffffffffffffffff3ffffffccffcf3ffffff +f3ffffffffffffffffffcffc000000000000000000000000ffffffcfffffcfff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffc3cffc03fff3fffffcfffffffffffffffffffcfffffff03fff +ff3ffffffffffffffffffffffffffffffffffffffcfffcfffffffffffffcffff +ffffcfffccff00003ffffffffffffffffffffffffffffffffffffcf3cf3fffff +3fff33f3ff3f3ffffc0fffffc0000ffff3fffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffcfffffffffffffffffffffff3fffffffffffffff +fffffff3fffffffffffffffffffcfffffffffffffffffffffffcffffffffffff +fffffffffffffffffcffcfffffffffffffffffffffff3ffffffff003ffffffff +f3ffffffffffffffffffcffcffcffcffcffcffcff3ff3ffcffffffcfffffcfff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffcfc00cf300000000f0003000ffff003ffffffcffffffff03ff +ff3ffffffffffffffffffffffffffffffffffffffcfffcfffffffffffffcfff0 +ffffcffcfffffff0fffffffffffffc3ffffff0fffffffffc00fffc330f3fffff +3ff3fff3f00000ffffc0fffffffc3ffff0fffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffc000000000000000000000003fffffffffffffff +fffffffcfffffffffffffffffffcfff3fcffcffcffcff3ffcffcffffffffffff +fffffffffffffffffc3fcffcff3ff3ff3ff3ff3ff3ff3ffffffffccfffffffff +fcffffffffffffffffffcffcff33f33f33f33f33ccfccffcffffffcfffffcfff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fff0f3cfcf3ffcffffff3cff3fcfff03303fffffcffffffffffff +fc3f0003fffffffffffffff0ffffffffffc3fffff0fffcffffff0003ff0003fc +3fffcffc3fffffc3fffc0000003fff0ffffffc0fffffffc0cc0fff333c000fff +3ff0fff3f3f3fcfffffffffffff0fffffcfffffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffcffffffffffffffffffffffffffff +fffffffcfffffffffffffffffffcffccf33f33f33f33ccff33fcffffffffffff +ffffffffffffffffff000ff33ccfccfccfccfccfccff3fffffffff3fffffffff +fcffffffffffffffffffcffcffcffcffcffcffcff3ff3ffcfffffff3ffff3fff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffc3f3cfcf3ff0fffffc3cff3fcffc3f3f0fffffc003fffffffff +fcfffffffffffffffffffff0ffffffffffc3fffff3f00000ffc03ffcfffcffff +0fc0003f0fffff0ffffffffff0ffffcfffffffc3ffffff0fcfc3f0000cfcff00 +00fc3f0033f3fcff00003fffffc3fffffc3ffc3fffffc0ffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffff0fffffffffffffffffffffffffff +fffffffcfffffffffffffffffffcfff3fcffcffcffcff3ffcffcffffffffffff +ffffffffffffffffffffcffcff3ff3ff3ff3ff3ff3ff3fffffffffffffffffff +fcffffffffffffffffffcffcfffffffffffffffffffffffcffffffccfffccfff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffff3fcfcf3ff3c000fffcff3fcff0ff3fcfffffcfffffc0000ff +fcfffffffffffffffffffff0ffffffffffc3fffff3fffcfffc0fffff3ff0ffff +ffffcfcfcffffc3fffffffffc3fffffffffffffffff3fc3fcff3ff33f0fcffff +3f3f3ff3f00000fffffcffffff0fffffff3fc0fffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffff3ffffffffffffffffffffffffff +ffffffff3ffffffffffffffffffcfffffffffffffffffffffffcffffffffffff +ffffffffffffffffffffcfffffffffffffffffffffff3fffffffffffffffffff +ff3fffffffffffffffffcffcfffffffffffffffffffffffcfffffff33ff33fff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffc3000cf3fc3fff3fffcff3fcff3fc3fc3ffffcfffffffffc3f +fcffffffffffffc3c30ffcf0c0ffc0fff003fffff3fffcffffffffff3ff3ffcf +ffffcfcfc3fff0003fffffff0fffc3ffffcfffffffc3fcff0ff0ff303f3cffff +3f3f0ff3f3f3fcfffff3fffffc000fffff0c0ffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffcffffffffffffffffffffffffff +ffffffff3ffffffffffffffffffcfffffffffffffffffffffffcffffffffffff +ffffffffffffffffffffcfffffffffffffffffffffff3fffffffffffffffffff +ff3ffffffffffffffffff3fcfffffffffffffffffffffffcffffffffc00fffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffcffcfcf3f0fffcffc00003fcfc3fcfff3ffffcffffffffff3f +fcffffffffffffc3030ffcf0303f0c3fc3c3fffff3fffcffffffffff3ff3ffcf +ffff0fcff3ffc3ff0ffff0fc3ffff0ffff0fffffff0ff0ff3ffcfc330f30fffc +3f3fcff3f3f3fcffffcffffff0ffc3ffffc0fffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffff0fffffffffffffffffffffffff +ffffffff3ffffffffffffffffffc000000000000000000000000ffffffffffff +ffffffffffffffffffffcfffffffffffffffffffffff3fffffffffffffffffff +ff3ffffffffffffffffff3fcffcffcffcffcffcff3ff3ffcfffffffff33fffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fff0ffcfcf3c0fff3ffffcff3fcfcff0fff3ffffcffffffffff3f +fcffffffffffffc0f30f3cf0fc3c3f0f0fc3fffff3fffcffffffffff3fc3ffcf +ffff3fcff3ff0fffc3fffc30fffffcfffc3ffffffc3ff3fc3ffcf0f3cf33fffc +ff3fcff3f00000ffff3fffffc3fff0ffff0ffffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffff3ffffffffffffffffffffffff +ffffffffcffffffffffffffffffffffffffffff3ffffffffffffffffffffffff +ffffffffffffffffffffcffcff3ff3ff3ff3ff3ff3ff3fffffffffffffffffff +ffcffffffffffffffffffc00ff33f33f33f33f33ccfccffcfffffffffcffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffc0f3c0cf30cc00000ffcff3fcfcff3fff3ffffcffffffffff3f +fcffffffffffffc3ff0c0cf0fc3c3f0f0fc3fffff3fffcfffffffffc3fcfffcf +ffff3fcffffc3ffff3ffff03fffffffff0fffffff0fff3fcfffcffcfff03fffc +ff3ffff3fffffffffc03ffff0ffffcfffc3ffffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffc3fffffffffffffffffffffff +ffffffffcffffffffffffffffffffffffffffff3ffffffffffffffffffffffff +ffffffffffffffffffffcff33ccfccfccfccfccfccff3fffffffffffffffffff +ffcffffffffffffffffffffcffcffcffcffcffcff3ff3ffcffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffcf3cfcf3fcfff3ffff03f3fcfcfc3ffc3ff000fffffffffc3f +fcfcffffffffffc3ff0c0cf0fc3c3f0f0fc3fffff3fc00fffffffff0ff0fffcf +fffc3fcffffff03ff3ffffc3ffffffffc3ffffffc3fff3f0fff0f00003cffff0 +ff3ffff03c0003fff0f3fffffc0ffcfff0fffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffcfffffffffffffffffffffff +fffffffff3ffffffffffffffffffffffffffffcfffffffffffffffffffffffff +ffffffffffffffffffffcffcff3ff3ff3ff3ff3ff3ff3fffffffffffffffffff +ffcffffffffffffffffffffcfffffffffffffffffffffffcffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffcf3cfcf3fcfff3ffff33f3fcfcf0fffcffcffc0ffffffff0ff +fcfcffffffffffc3ffc3c3f0fc3c3f0f0fc3fffff3f3fc0fffffff03ffffc00f +fffcffcfffffcf0ff3fffff0ffffffff0ffffffc0ffff3c3fff3ff3f3fcffff3 +ff3fff03fcfff3ffc3f3fffff3c3fcfff3fffffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffff +fffffffff3ffffffffffffffffffffffffffffcfffffffffffffffffffffffff +ffffffffffffffffffffcfffffffffffffffffffffff3fffffffffffffffffff +fff3fffffffffffffffffffcfffffffffffffffffffffffcffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffcf3c0cc3fcfff3fffc30f3fcff03ffc0ffcffcc0ffffffc3ff +fccc3fffffffffc3ffc3c3f0fc3f0c3fc303fffff333fcc3fffff03fffff3fc0 +fff0ff0fffffcfcfc3fffffc3ffffff03fffffc0fffffc0fff03ff3c3f03ffc3 +fc3ffffffc0003ff0ff3fffff3f3f0fff3fffffffc0ffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffff3fffffffffffffffffffff +fffffffff3ffffffffffffffffffffffffffff3fffffffffffffffffffffffff +ffffffffffffffffffffcfffffffffffffffffffffff3fffffffffffffffffff +fff3fffffffffffffffffffcfffffffffffffffffffffffcffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffcf00fcfffcfff3fffcfcf000fffffc0fffcff0fc3ffffc0fff +fc3f0000ffffffc3ffc3c3f0fc3fc0fff0c3fffff0f3f0f0ffffffffffff3f0c +3fc3ff3fffffc3cf0fffffff3fffff03fffff00ffffffffff03ffc00ff30ff0f +fcfffffffcfff3fc3ff0fffff0f3c3fff0fffffffc0ffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffcfffffffffffffffffffff +fffffffffcffffffffffffffffffffffffffff3fffffffffffffffffffffffff +ffffffffffffffffffffc000000000000000000000003fffffffffffffffffff +fff3fffffffffffffffffffcffcffcffcffcffcff3ff3ffcffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffcc3ffcfffcfff3fff0fc3ffffffffffffff003ffffff00ffff +ff3ffffffffffffffffffffffffffffffffffffffcfc03ffffffffffffffc03f +fffff03ffffff0003fffffffffffc03fffffffffffffffffffffffcc3c3c3fff +c0fffffffcfff3fffffc00fffc000ffffc00003fffcff0ffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffff0ffffffffffff00000000 +0000000000000000000000000000000000fffcffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffcffffffffffffffffffffffffffffffff +fffcfffffffffffffffffffcff33f33f33f33f33ccfccffcffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffcffffcfffcff03ffc3ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffff03f30ff0fff +fffffffffc0003fffffffffffffffffffffffffffc3fc0fcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffff3fffffffffffffffffff +fffffffffffffffffffffffffffffffffcfffcffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff0fffffffffffffffffffffffffffffff +fffcfffffffffffffffffffcffcffcffcffcffcff3ff3ffcffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffc3ffffffffff3fffffff +fffffffffffffffffffffffffffffffffcfff3ffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffffff +fffcfffffffffffffffffffcfffffffffffffffffffffffcffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffffffffffffcffffffffcffffffffffffffffffff +ffffffffffffffcfffffffcffffffff3ffffffffffff3ffffff3ffffffffffff +fffffffffffffffffffffffffffffffffffffffffff3fcf3f3ff3ffcfffffcff +fccffcfffffffffffffffff3fffffffffcfffff3fcfffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffcffffffffff3fffffff +fffffffffffffffffffffffffffffffffcfff3ffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffcffffffffffffffffffffffffffffff +ffff3ffffffffffffffffffcfffffffffffffffffffffffcffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffffffcffffffff03fffffffffffff3fff3f +fffcffffffffffcfffffffcffffffff3ffffffffffff3ffffff3ffffffffffff +fffffffffffffffffffffffffffffffffffffffffff3f3f3cffc3cfcf0fffcff +fccffcfffffffffffffffff3fffffffffcfffff3fcfffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffff3fffffffff3fffffff +fffffffffffffffffffffffffffffffffcffcfffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffff0fffffffffffffffffffffffffffff +ffff3ffffffffffffffffffcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffffffffffffc00fffffc30ffffcffffffff3fff3f +fffcff33fff3ffcfffffffcffffffff3ffffffffffff3ffffff3ffffffffffff +ffffffffffffffffffffffffffffffffffffc00ffff3c3330cfcfcfc03fffcff +cffffcfff0fff3fffffffff3ffffff3ffcfffff3f00000fcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffc3ffffffff3fffffff +fffffffffffffffffffffffffffffffffcffcfffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffff +ffffcffffffffffffffffffc000000000000000000000000ffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffffc00fffffff0fc0fffcffff3ffc3fff3f +fffcff33fff3ffcffffc000003f00000000ffffff000000ff0000fffffffffff +fffffffffffffffffc3ffffffffffffffffc0cc0ff003cf3f3f0003cfffffcff +c3ff0003fc3ff3fffcfff0000fffff3ffcfffc0033fffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffcffffffff3ffcffff +fffffffffff3fffffffffffffffffffffcff3fffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffc3fffffffffffffffffffffffffff +ffffcffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffff00fc003f0fc3fffffff3ffffff03cfc0ffcffff0ffcfc0000 +3ffcfffffff0c000ffffffcffffffff3ffffffffffff3fffffcfffffffffffff +ffffffffffffc3fffc3ffffffffffffffff0fcfc3ff3f3f3ccc3ff3cff3c0003 +f0fffcffff0ff3fffc3fffcfffffff0c000fffff00003cfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffff0fffffff3ffcfcff +fffffffff3f3ffffffffffcffffffffffcff3fffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffcfffffffffffffffffffffffffff +ffffcffffffffffffffffffffffffffffff3ffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffc3c3c3f0f0fc3fffffff3fff0f03fcffc0fcffffc3fcffff3f +fffcfffffffc0f3c0fffffcffffffff3ffffffffffff3fffffcff003ffffffff +ffffffffffffc3ffffffffffffffffffffc3fcff3ff3f33300fffffc3c3ffcfc +fcfff0fffffff3ffff0fffcff003ffc0f3c0fffc3cff3cffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffff3ffffff3ffcffff +fffcfffffff3ffffffff3ffffffffffffcff3fffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffffff +fffff3ffffffffffffffffffffffffffffcfffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fff0fffc3f0f0fc3ffffffc00f03ffc0000fffcfffff3fcffff3f +fffcfffffffcff3fcffc000003fffc03fffffffff000000fffcfffffffffffc3 +c3fc0ff0fc3fc3ff003fc303ff003fffffcff0ff0fc3c033cff0003f00fffcfc +fc3ff3ffcffff3ffffcfffcfffffffcff3fcfff0fc003cfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffcffffff3808fcfe +41f00f20f3f202fcff3c03cff41ff202fcfcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff3fffffffffffffffffffffffff +fffff3ffffffffffffffffffffffffffffcfffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fff0fffc3f0f0fc3ffffff0ff03fffcfffcfffcfffff0fcffff3f +fffcfffffff03f3fc3ffffcffffff0f0ffffffffffff3fffff0fffffffffffc3 +03f0c3f0fc3c000ffc3fc0c0fc3c3fffff0ff3ffcfc0fff3f3f3ff3ffffff0fc +ff3ff3ffcffff3ffffc3ff0fffffff03f3fc3ff3ccff3cffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffff0fffff32f8fcfc +bffcff1ff3f1b8fcff3f3fcfd7d7f1b8fcfcffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffcfffffffffffffffffffffffff +fffff3ffffffffffffffffffffffffffff3fffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fff0fffc3c3f0fc3fffffc3f03ffffc0000fffcfffffcfcffff3f +fffcfffffff30c3ff3ffffcffffff3fcffffffffffff3fffff3fffffffffffc0 +f3c3f0f0fc3fc3fffc3fc3f0f0fc3fffff3fc3ffcfc3300000f3ff3ffffff3fc +ff3fc3ffcffff3fffff3ff3fffffff30c3ff3fc33c003cfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffff3ffff33fcfcfc +6ffcff3ff3f3fcfcff3f3fcfcff3f3fcfcf3ffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffff0ffffffffffffffffffffffff +fffffcffffffffffffffffffffffffffff3fffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fff0fffc00ff0fc3fffffffc33ffffcfffcfffcfffffcfcffff3f +fffcffffffc3ccfff3ffffcffffff3fcffffffffffff3fffff3fffffffffffc3 +ffc3f0f0fc3fc3fffc3fc3f0f0fc3fffff3fcfffcf3333f3fff0003cfffff3fc +ffffcfffcffff3fffff3ff3ffffffc3ccfff3f00ff3ffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffc3fff33fcfcfe +42fcff3ff3f3fcfcff3f3fcfcff3f3fcfcf3ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff3fffffffffff000000000000 +000000000000000000000000000000fffcffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fff0fffc3fff0fc3fffffff0f3ffffc0000cffc3cfffcfcff003f +fffcffff3fcfc0fff3ff000ffffff0fcfffffffffc003ffffc3fffffffffffc3 +ffc3f0f0fc3fc3fffc3fc3f0f0fc3fffff3f0fff0f33f3fcf3f3ff3cf0ffc3fc +ffff0fffcffff0f3fff3fc3ffffffcfc0fff3c333c003cfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffcfff33fcfcff +f8fcff3ff3f3fcfcff3f3fcfcff3f3fcfccfffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffc3ffffffffff3fffffffffff +fffffffffffffffffffffffffffffcfffcffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fff0fffc3fff0fc3ffffffc3f3ffffcff3f0fff30fffffcfcff03 +fffcfffc3fcff3ffc3fcffc0fffffc00fffffffff3ff03fffcffffffffffffc3 +ffc3f0f0fc3fc3fffc3fc3f0fc303fffff3c3fff3ff3f0fccff3ff3c03ffcffc +ffffffc00ffffcc3fffffcfffffffcff3ffc3ff3f0ff3cffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffff0ff32f4fcfd +b8fcbf3ff3f2f8fcb93f2fcfd7d7f3fcfccfffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffcffffffffff3fffffffffff +fffffffffffffffffffffffffffffcfff3ffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffc3c3c3fffc30fffffffcfffffffcff0c3fff03fffffcccff30 +fffcfff0ffcf00ffcffcffcc0ffffff3fffff03ff3ff303ffcffcfffffc0ffc3 +fff0c3f0303fc3fffc3fc3f0ff0c3fffffc0fff03ff3f33f3ff0003cffff0ff0 +ffffff3fc0fffc0ffffffcffcffffcf00ffcfff3c30c3cfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffff3f3808fcfd +02fe0f3ff3f146fe063f83cff41ff3fcfc3fffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff3fffffffff3fffffffffff +fffffffffffffffffffffffffffffcfff3ffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffff00fc3ffff03fffffffc3ffffffcffc3ffffcffffffc3cfc3c +3fff3f03fff03cfc0ffcff0fc3ffffc3fffff03ff3fc3f0ff0ffc3ffffc0ffc3 +fffc0ffc0c3ff00ffc3fc3f0fffc3fffffffff03fff3c33cccf3ff3cff3c3ff3 +ffffff3f0c3fff3ffffff0ffc3ffff03cfc0fff3ffc0fcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffcf3fffffff +fffffffffffffffffffffffffffffffffc3fffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffc3ffffffff3fffffffffff +fffffffffffffffffffffffffffffcffcfffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffffffffffff00003ffc00f03fffffffffff3f00ff +ffffc03fffffffc0ffff003fffffff0ffffffffffc00fffff3fff000fffcffff +fffffffffffffffffffffffff0f0fffffffffffffff3cff3c0f3ff3c3c3fff03 +ffffffc03ffffffffffff3fff000fffffc0ffff3ff0c3cfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffff03fffffff +fffffffffffffffffffffff3fffffffffcffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffcffffffff3ffcffffffff +fffffff3fffffffffffffffffffffcffcfffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffffffffffffc0ffff03ffffffffffffffff +fffffffffffffffffffffffffffff03fffffffffffffffffffffffffffc3ffff +fffffffffffffffffffffffffc03fffffffffffffff30f0ff3f3fc3f00ffffff +fffffffffffffffffffffffffffffffffffffff3f03f00ffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffff +fffffffffffffffffffffff3fffffffffcffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffff0fffffff3ffcfcffffff +fffff3f3ffffffffffcffffffffffcff3fffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffff +fffffffcfffffffffffffff3fffffffffcffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffff3ffffff3ffcfffffffc +fffffff3ffffffff3ffffffffffffcff3fffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffcfffcffffcfffcfffff3fffffff3ffffffffffffffffffffff +fffffffffffff3ffffff0fffffff3fffffffffffffff3fff3fffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcffff +ffffffff3ffffffffffffffff3fffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffc +80be42f00f3f3f3fd07f20f3e2fffffffcffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffffff3808fcfe41f0 +0f20f3f202fcff3c03cff41ff202fcfcffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffcfffcffff0fffcfffff0fffffff3ffffffffffffffffffffff +ff00003ffffff3ffffffc0ffffff3ffffffffc0000ff3fff3ffffffffffff3ff +f3ffff3fc3ffff3fff3ffffcfffcffc003c003f000c0003ffffffffffffcffff +ffffffff3ffffffffffffffff3fffffffffffffcfffcfcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffc +6e3db9fcff6e2e7f5f5f1ff38bfffffffcffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffff0fffff32f8fcfcbffc +ff1ff3f1b8fcff3f3fcfd7d7f1b8fcfcffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffcfc0000fc3fc0000fffcfffffff3ffffff0000000ff3ffffff +fffff0fffffff3fffffffc0fffff3ffc3fc00ccf3cff3c00000f0000003ff3ff +f3ffff0ff0ffff3fff3ffffcfffcffcff3cff3f3fcff3ffc000000fffffcffff +ffffc00000003c0000003ffff3ffffc000000ffcfffcfcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffc +ff3cfcfcff9d5dbf3fcf3ff22ffffffffcffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffff3ffff33fcfcfc6ffc +ff3ff3f3fcfcff3f3fcfcff3f3fcfcf3ffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffcff3ff3f0fcffcfff0000003fff3f03fffffff0ffff3fffcff +ffffc3fffffff3ffffffffffffc000ff0ffcfccf3cff3fcffcffffff0fffc3ff +f3ffffcffcfffc3fff3ffffcfffcffc003c003f000f000fffffc3ffc00000003 +ffffffff3fffffffcffffffff3ffffffffc3fff0fffcfcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffc +ff3c00fcffccccff3fcf3ff07ffffffffcffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffc3fff33fcfcfe42fc +ff3ff3f3fcfcff3f3fcfcff3f3fcfcf3ffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffc00f0fc3fc30ffcffffff3ffffc03c3cffffffc3ffff3fffc3f +ffff0ffffffff000ffffffffffff3fffc3fcfc0000f003f3f3fffffc3f33cfc0 +0003ffc3c003fcfc00003ffcfffcffcff3cff3f3fcf3fcfffff0fccffffcffff +fffffc000003ffffcffffffff3ffffffff0fccf3f00000ffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffc +ff3cbffcffd9d9ff3fcf3ff22ffffffffcffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffcfff33fcfcfff8fc +ff3ff3f3fcfcff3f3fcfcff3f3fcfccfffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffcffcfcfffc3f0003ffff0ffffff30fcffffff0fffff3ffff0f +fffc3ffffffff3fffff00003fffc3ffffffcffffffff3c00000ffff0ff33cfff +f3fffff00ffcfcffff3ffffcfffcffc003c003f3fcf3fcffffc3fccffffcffff +fffffcff3ff3ffffcffffc00000003fffc3fccf3fffcfcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffc +ff3d7ffcbfe2e2ff5f5f3ff3c7fffffffcffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffff0ff32f4fcfdb8fc +bf3ff3f2f8fcb93f2fcfd7d7f3fcfccfffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffcf000003f0ffffffffffc3fffff03fcffffff3fffff3ffffcf +fff0003ffffff3fffffffff0fffcfff3fffcf000003f3ffffffffff3ffffcfff +f3fffc03fffcfcffff3ffffcfffcffcffffff3f000f000ffffcfffffff00ffff +fffffc000003ffffcffffffff3fffffffcfffff3fffcfcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffc +ff3e41fe0fe2e2ffd07f3ff3f5fffffffcffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff3f3808fcfd02fe +0f3ff3f146fe063f83cff41ff3fcfc3fffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffcfff3fffc3cc0000fffff0fffff0ffcfffffc3fffff3ffffc3 +ffc3ff0ffffff3fffffffffcfffcfff3ffc00fffffff3f00003fffc3ffffcfff +f3ffc0f0fff0fcffff3ffffccffcffcffffff3fffff3fcffff0ffffffc3c3fff +fffffcff3ff3ffffcfffffffc0fffffff0fffff3fffcfcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffff +fffffffffffffffffffffffffffffffffcffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffcf3fffffffffff +fffffffffffffffffffffffffffffc3fffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffc0ff3fff000cfffcffc0000ffff3ffcfffffcffffff3fffff3 +ff0fffc3fffff3fffffffffcfff0fff3fffcfc0000ff3f3fff3fffcfffffcfff +f3fffffcff03fcffff3ffffc3ffcffcfc003f3c00033fcffff3ffffffcff3fff +fffffcff3ff3ffffcfffffffccfffffff3fffff3fffcfcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffff +fffffffffffffffffffffffffffffffffcffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffff03fffffffffff +fffffffffffffffffff3fffffffffcffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffc0f000003fccccf3cff3fffc3ffc3ffcfffffcffffff3fffff3 +fc3ffff3fffff3fffffffffcfff3fff3fffcfcfffcff3f00003fffcfffffcfff +f3fffffcfffffcffff3ffffcfffcffcfcff3f3ffcff000ffff3ffffffcff3fff +fffffc000003ffffcfffffffcc3ffffff3fffff3fffcfcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffff +fffffffffffffffffffffffffffffffffcffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffff +fffffffffffffffffff3fffffffffcffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffcffcff3ffcffcf3ffcffffffff03ffcfffffcffffff0f3fff3 +fff03ff3ffc003fffffffff0ffc3fff3fffcfc0000ff3f3fff3fffcfffffcff0 +03fffffc3ffffcff003ffffffff0ffcfcff3f3f3cff3fcffff3ffffffc3f3fff +fffffff333ffffffcfffffff0f3ffffff3fffff3fc00fcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffff +fffffffffffffffffffffffffffffffffcffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffff +fffcfffffffffffffff3fffffffffcffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffcff3fc3fcccfcf3ffcfffffffc33ffcfcfffc3fffffcc3ffff +ffcf0ff3ff3ff03fffffffc3fffff003fffcfff0ff3f0300003fffc3ffffcfcf +f03fffff3ffffcfcff03fffffff3ffcfcff3f3f3c033fcffff0fffffff003fff +ffffffc330ffffffcfffffff3f0ffffff0fffff3f3fc0cfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffff +fffffffffffffffffffffffffffffffffcffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffff202fe +42f00f3f3f3fd07f20f3e2fffffffcffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffcfc030ffccc3cf3ffc3ffffffff3ffcf0ffff0fffffc0fffff +ffcfcfc3ff3ff303ffffff0fffffcff03ffc0fcc3cf03ff3f3fffff0ffffcccf +f30fffff3ffffcccff30ffffffc3ffcfc003f3f3cff000ffffc3fffffffcffff +fc0fff0f3c3fffffcffffffc3fc3fffffc3ffff333fcc0ffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffff +fffffffffffffffffffffffffffffffffcffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffff1b8fd +b9fcff6e2e7f5f5f1ff38bfffffffcffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffcfff03ff0cf30f3cff03fffffff3fff03ffffc0fffff3fffff +ffc3cf0fff3fc3f0fffff03fffffcfc30fc0ff3cc3ffffc3f3cffffc0fffc3cf +c3c3ffff0ffffc3cfc3c3fffff0fffcffffff3f0cffcf3fffff03ffffff0ffff +fc0ffc3f3f03f00000000ff0fff0ffffff03fff0f3f0f0fcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffff +fffffffffffffffffffffffffffffffffcffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffff3fcfc +fcfcff9d5dbf3fcf3ff22ffffffffcffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffcff03c0f3cff3f3cfff0003ffff3ffffffffffc0ffffffffff +fff0003fffc00ffffffc03fffffff00ffffff0fcfc3fff0ff3cfffffc0fff3f0 +0fffffffcfffff3f00fffffff03fffcffffff3c30ff3fcffffff03ffffc3ffff +ffffc0ff3ff03fffffffffc3fffc3ffffff03ffcfc03fcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffff +fffffffffffffffffffffffffffffffffcffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffff3fcfc +00fcffccccff3fcf3ff07ffffffffcffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fff0f03ffc3fcfc3fc0ffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffcfffff03ffc0fffffffffffff +ffffffffcfffffffffffffffffffffcfffff03cfc000003ffffffffffc0fffff +ffffffff3ffffffffffffc0fffff03fffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000 +0000000000000000000000000000000000ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffff3fcfc +bffcffd9d9ff3fcf3ff22ffffffffcffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffff3fcfd +7ffcbfe2e2ff5f5f3ff3c7fffffffcffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffff3fffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffc3ffffcfff +ffffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffff +fffffff3ffffffffcffffffffffffffffcffffffc3fffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff3ffffff3fcfe +41fe0fe2e2ffd07f3ff3f5fffffffcffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffff3ffffffff3fffffff00003fffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffff3fffffffffc00fffffcfff +ffffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffff +fffffff3ffffffffcfffffc0000ffffffcfffffff03ffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffff +fffffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffff0ffffffff3ffc3ffffff0fffffffffffffc3ffffff0ffffff +fffc00ffffffffffffffffffffffffffffffffffff3fffffff000fffffffc00f +fff3ffffffffcffffffc0000003fffffffffffffffffffffffffffffffffffff +fffffff003ffffffcffffffffc3ffffffcffffffff03fcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffff +fffffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffcffffffc000ff0fffffc3fffc0000003fff0ffffffc0fffff +ffc0cc0ffffffffffffffff0ffffffffffc3fffffc3f0003ffffcfffffc00fff +fff3fffcffffcfc0fffffffc3fffffffffffffffffffffffffff0fffffffffff +fffff003ffffc00000003ffff0fffffffcfffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffff +fffffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffc3ffc3fff3fffc3ffff0ffffffffff0ffffcfffffffc3ffff +ff0fcfc3fffffffffffffff0ffffffffffc3fffffcffffffffffcfffffff3fff +fff3fffc3ff00f0f3ffffff0fffffffffffffffffffffff0ffff0fffffffffff +ffffffcfffffffffcfffffffc3fffffffc003ffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffff +fffffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffff3fc0fffc3ffffffffc3fffffffffc3fffffffffffffffff3 +fc3fcff3fffffffffffffff0ffffffffffc3fffffcfffffffc0000003fff3fff +0ff3ffff0fffcc3f3fffffc3fffffffffffffffffffffff0ffffffffffffffff +ffffffcfffc3ffffcfffffff0ffffffffcfffffc0000fcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffff +fffffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffff0c0ffffcfff3fffff0003fffffff0fffc3ffffcfffffffc3 +fcff0ff0ffffffc3c30ffcf0c0ffc0fff003fffffcffffffffffcffffffc00f0 +3ff3ffffcfffc0ff3fffffcffffffffff0f0ff03fc3f0ff0ffc00ff0c0ffc00f +ffffff003c0ffff00ffffffc000ffffffcfffffffffc3cfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffff +fffffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffc0fffffcfff3ffffc3ff0ffff0fc3ffff0ffff0fffffff0f +f0ff3ffcffffffc3030ffcf0303f0c3fc3c3fffffcffffffffffcffffff0ff03 +fff3ffffc3ffc3ff3fffff0ffffffffff0c0fc30fc3f0f0003ff0ff0303f0f0f +fffffc3fc0ffffc3c3fffff0ffc3fffffcffffffffff3cffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffff +fffffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffff0ffffff0fff3ffff0fffc3fffc30fffffcfffc3ffffffc3f +f3fc3ffcffffffc0f30f3cf0fc3c3f0f0fc3fffffcffffffffffcfffffc3f03f +fff3fffff3ffcfff3fffff3ffffffffff03cf0fc3c3f0ff0ffff0ff0fc3c3f0f +fffff0fc0fffffcff3ffffc3fff0fffffcffffffffff3cfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffff +fffffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffc3ffffff3fff3fffc3ffff3ffff03fffffffff0fffffff0ff +f3fcfffcffffffc3ff0c0cf0fc3c3f0f0fc3fffffcfffffff00000000fffc33f +fff3fffff3ff0fff3fffff3ffffffffff0fff0fc3c3f0ff0ffff0ff0fc3c3f0f +fffffff0cfffffcff3ffff0ffffcfffffcffffffffff3cffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffff +fffffffffffffffffffffffffffffcffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffff0ffffffc3fff3fffff03ff3ffffc3ffffffffc3ffffffc3ff +f3f0fff0ffffffc3ff0c0cf0fc3c3f0f0fc3fffffcfcffffffffcfffffff0f3f +fff0f3fff3fc0fff3fffff3ffffffffff0fff0fc3c3f0ff0ffff0ff0fc3c3f0f +ffffffc3cfffffc3f3fffffc0ffcfff000fffffffffc3cfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000 +000000000000000000000000000000ffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffff3fffffffff003ffffcf0ff3fffff0ffffffff0ffffffc0fff +f3c3fff3ffffffc3ffc3c3f0fc3c3f0f0fc3fffffcfcffffffffcffffffc3f3f +fffcc3fffff0cfff3f3fff0ffffffffff0fff0fc3c3f0ff0ffff0ff0fc3f0c0f +ffffff0fcffffff003fffff3c3fcffcffc0ffffffff0fcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffff3ffffffffcff03fffcfcfc3fffffc3ffffff03fffffc0ffff +fc0fff03ffffffc3ffc3c3f0fc3f0c3fc303fffffccc3fffffffcffffffcffff +fffc0fffffffcfff3c3fffc3fffffffff0fffc30fc0c0ff0ffff0ff0fc3fc30f +ffffff3fffffffffcffffff3f3f0ffcffcc0ffffffc3fcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffff0ffffffffcfc30fffc3cf0fffffff3fffff03fffff00fffff +fffff03fffffffc3ffc3c3f0fc3fc0fff0c3fffffc3f0000ffffcffffffc3fff +ffff3fffffffcfffc0fffff03ffffffff0ffff03ff030ffc03ff0ff0fc3fff0f +ffffff0fffffffff0ffffff0f3c3ffcff0fc3ffffc0ffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffc00003ffff00ffffff0003fffffffffffc03fffffffffffff +ffffffffffffffffffffffffffffffffffffffffff3fffffffffcfffffff0000 +3fffffffffffcfffffffffff03fffffffffffffffffffffffffffffffffc3c3f +ffffffc0000ffffc3ffffffc000ffff003ffffff00fffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffc0fffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff +ffffffffffffffc0fffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffffffffffffffffffcff0003fffffffffffffffffffff3ffcc +fffffffffffffffffffffffffffcffffffffffff33fff3ffffffffffffffffff +ffffffff3ffffffcfff33fffffffffffcfffffffffffffffffffffffffffffff +fffffffffffffffffffff3fffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffff00000fffffffffffcff3ff3fff3fffffffffffffffff3ffcc +fffffffffffffffffffffffffffcfffffff0ffff3cfff3fffffff3fc3fffff3f +ff3fffff3ffffffcfff33fffffffffffcfffffffffffffffffffffffffffffff +ff00000fffcffffffffff3fffffffffffffffcfffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffc3fffff003fffcff0003fff3ffffffffc00ffff00000ff +fffc00ffff3fffffffcffffffffcfff003fc3fff3cfff3ffc3fff0ff0fffff3f +ff3fffff3ffffffcffffffffffffffffcffffffffc00fffc000000ffffffffff +ff3fffcfffcffffffffff3fffffffffffffffcffffff00ffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffffc3fffff03303ffcff3ff3fff3fffffffc0cc0fffffcffff +ffc0cc0fff3fffcfffcffff3fffcfff3f3ff3000003c000ff0fffcffcfffff3f +ff3fc00000003c0003ffffffffffffc0003fffffc0cc0ffffffc3fffffffffff +ff3fffcfff0fc000ffc00000fffffffffffffcffffff3cfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffc3fffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffff0fffffc3f3f0fc00f3ff3fff3fffffff0fcfc3ffffcffff +ff0fcfc3ff3fffc3ffcffff0ff0000f3f3fff3ff3ffff3fffc3ffc3c003fff3f +ff3ffffcfffffff3ffffffffffffffff3fffffff0fcfc3fffff0fccfffffffc3 +ff3fffcfff3fffffffffffc3fffffffffffffcffffff3cffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff0fffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffc3fffff0ff3fcffcff0003fff3ffffffc3fcff3ff000003f +fc3fcff3ff3ffff0ffcffffc3ffcfcf3f3c3f3033cffc3ffffffff00ffcfff3f +ff3ffffcfffffff3fc00ffffffffffff3fc00ffc3fcff3ffffc3fccfffffff03 +ff00000fff3fffffffffff0ffffffffffffffcffffff3cfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffc03fffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffc3ffffff3fc3fc3fcfffffffff3ffffffcff0ff0fffff3fff +fcff0ff0ff3ffffcffcfffff3ffcfcf3f3f0f3ff3cffcfff3fffc03fffcfff3f +ff3ffffcfffffff3ffffffffffffffff3ffffffcff0ff0ffffcffffffffffcc3 +ff3fffcfff3ffffffffffc3ffffff3fffffffc03fffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffcfffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fff0000000fc3fcfff3fcf000003ff3ffffff0ff3ffcfffffcfff +f0ff3ffcff3ffffc3fcfffff0ffcfcf3f3fcf30330ffcfff3ffc0f0fff0fff33 +ff3ffffc000fffc3fffffffff00ffffc3ffffff0ff3ffcffff0ffffffffff3c3 +ff3fffcfff3ffffffffff0fffffcf0ff3ffffcf03ffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffff0ffffcff0fff3fcff3ffffff3ffffff3fc3ffcfff0000ff +f3fc3ffcff3fffff3fcfffffcffcfcf3f3fff33333ff0fff3fffffcff03fff0f +ff3ffff0ffcfffcfffffffff03f3fffcfffffff3fc3ffcffff3fffffffffcfc3 +ff3fffcfff3fffffffff03c3fffc3cff3ffffcff03fffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffc3ffffcff3fff3fcff00003ff3ffffff3fcfffcffcfffc3f +f3fcfffcff3fffff3fcfffffcffcfcf3f3ff333303ff3fff3fffffcfffffff3f +ff3ffff3ffcfffcffffffff03ffcfffcfffffff3fcfffcffff3fffffffffc000 +ff00000fff3ffffffff033f03fff3ffc3ffffcfffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffff0fffffcfc3ffc3fc0cf3cf3ff3fffcff3f0fff0ff3ffffff +f3f0fff0ff0f3fff3fc3cfffcff0fcf3f3ff3333cffc3fff3fffffc3ffffffff +fc3ffff3ffcfff0ffffffffffffcfff0fffffff3f0fff0ffff3fffffffffc000 +ff3fffcfff3f3fffff03f3ff0ffffffcfffffcfffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffff3fffffcf0fffcff0f3c30f3ff3fff0ff3c3fff3ff3ffffff +f3c3fff3ffcc3ffffff30ffffff3fcf3f3fc3303cfffff003ffffff3ffffffff +fcffffc3ffcfff3ffffffffffffcfff3fffffff3c3fff3ffff0fffffffffffc3 +ff3fffcfff3f3ffffffff3fffffffff0fffffcfffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffc3fffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffff3ffffff03ffc0fc3ff0f3f3ff3ffc3ffc0fff03ff0ffffff +fc0fff03ffc0fffffff03ffffff3f0f3f3fcf3ff033ffcff03fffff3ffffffff +f0ffffcfff0fff3ff3fffffffff0fff3ff3ffffc0fff03ffffc3fffff03fffc3 +fc3fffcfff330ffffffff3ffffffffc3fffffcfffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffff0fffffffffc0fffffc3c3c3ffcfc0fffffff03fffc0fffff +fffff03ffff3fffffffcffffffc3f3f3f3f0c3fc333ffcfc30fffff0ffffffff +c3ffff0fff3ffc3ff0ffffffffc3ffc3ff0ffffffff03ffffff03ffff03fffc3 +fcffffcfff0fc0003ffff3ffffffff0ffffffcfffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffcfffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffc0fffffffffffffffff0fcffff00ffffffffffffffc000ff +ffffffffffffffffffffffffffcff3f003f3cff0f03fff00fffffffcfffffffc +0ffffc3fff3ffcfffc003ffffc0fffcfffc003ffffffffffffff03ffff3fffff +f0ffffcfffcffffffffff3fffffffc3ffffffcfffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffcfffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffffc03ffffffffffffffffc0ffffffffffffffffffffffffff +ffffffffffffffffffffffffff0fc3ffffc30fc3fcfffffffffffffcffffffff +ffffc0ffc03ffffffffffffffffffffffffffffffffffffffffffffff0ffffff +c3fffc0fffffffffffffffffffffc0fffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffcfffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffcfffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffff3fffffffffffffffffffffffffffffffff3ffffffffffff +ffffffc3fffffffffffffffffffffffffffffffffffffffffffffffff3ffffff +fffcfffffffffffffffffffffffffffffff3ffffffffffffffffffffffffcfff +ccffcffffcffffffffffffffffffffff3ffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffff3ffffffffffffffffffffff3ffffcfffff3ffffffffffff +ffffc00ffff3fffffffffffffffffffffffffffffffffffffffffffff3fffff0 +fffcfffff3fffffffffffffffffffffffff3fffffffffffffff3ffffffffcfff +cccfcfccfcfffff0003ffcffffffffff3fffffcffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffc00000003fffffffff0000000ff3ffffcff0000000fffffffff +ff000ffffff3fffffffffffffffffffffffffffffffffffffffffffff003fffc +3000003ff3ffffff0000000ff3fffffffff3ffffffc00003fff0ffffffffcffc +ffc3cf0cfcf000f3ff3ffcffffffffff3fffffcffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffff3fcffffffffffffffff0ffff3ffffcfff3f3fcffffffffff +ffffcfffffc3f0003fffffffffffffffffffc3fffffffffffffffff003ffffff +3fcffffff3ffffffffff0ffff3fffcfff0000ffffffffffffffcffffffffcffc +3ff3cf3cfcf3fcf3ff3ffcfffffff000000fffcffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffcf3fcf3fffffffffffffc3ffff3c3ffcfff0f3f0fffffffc00 +f00000000fcfffffffffffffffffffffffffc3ffffffffc3ffffffffcfffffff +ffcff3fff3fffffffffc3ffff3fffc3fffcffffffffffffffffc3ffc3fc0003f +0fffcffcfcf3fcf3ff3ffcffffffffff3fffffcffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fff0f3fcf0fffffffffffff0fffff3f0ffcfffcf3f3fffffff0f0 +3fffcfffffcfffffffffffffffffffffffffc3ffffffffc3ffffffffcfffc3c3 +ff3c00fff3fffffffff0fffff3ffff0fffcff003ffffffffffff3fc0ffffcfcf +cfc0000cfcf3fcf0003ffcffffffffff3fffffcffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffc3c3fcfc3ffffffffffff3fffff3fc3fcfffcf3f3fffffffffc +3f000000ffcffffffffffff0c3fc00fff00fc3f0ff00ffc3ffffffff003c0ff0 +fc00fcfff3fffffffff3fffff3ffffcfffcfffffffffffffffff0c0fffffcfcf +c3ffcffcfcf000f3ff3ffcfffffff000000fffcffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffff0ffcffffffc03fffffc3fffff3ff3fcfc00000003fffffffc +3f3fcffcffcffffffffffff030fffc3fc3f3c3f3fc3c3c000ffffffc3fc0fffc +fffffffff3ffffffffc3fffff3ffffc3ff0fffffffffffffffffc0ffffff0fcf +f3ffcffcfcf3fcf3ff3ffcffffffffff3fffffcffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffff3fffffffc0fcfffffcffffff3ffff0ffff333ffffffffff0 +ff000000ffcffffffffffff0fc3ffc3f0fffc3cff0fc3fc3fffffff0fc0fffff +ff3cf3fff3ffffffffcffffff3fffff3ff3fffffffffffffffff0fffffff3fcf +f3ffcffcfcf3fcf3ff3ffcffffffffff3fffffcffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffff0000fffc0fff3ffffcffffff3ffff3ffff330fffffffffc3 +ff3fcffcffcffffffffffff0fc3c003f0fffc03ff0003fc3fffffffff0cfffff +3f3cf3fff3ffffffffcffffff3fffff3ff3ffffffffffffffffc3fffffff3fcf +ffc0000cfcf3fcf0003ffcffffffffff3fffffcffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffc3ff3ffffffff3ffffcffffff3ffff3fffc33cfffffffff0f +ff000000ffcfcffffffffff0fc30fc3f0fffc30ff0ffffc3ffffffffc3cfffff +3f3cf3fff3fffcffffcffffff0f3fff3fc3fffffff3ffffffff0fffffffc3fcf +ffffcffcfcf3fcf3ff3ffcffff3ffc003fffffcffff3fcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffff0ffc3ffffffff3ffffc3fffff3fffc0fffcf3c3fffffffc3f +ffffcfffffcfcffffffffff0fc30fc3f0fffc3c3f0ffffc3ffffffff0fcffffc +3f3cf3fff3fff0ffffc3fffffcc3fffffcffffffff0ffffffff3fffffffcffcf +ffffcffcfcf000f3ff3ffcfffc3ff3ff03ffffcfffc3fcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fff030f0ffffffffc3fffff0fffff303f0c3ff0f3f0fffc0ff000 +3f000000ffccc3fffffffff0f0f0f03fc3f3c3f0fc3f3fc3ffffffff3ffffffc +ff3cf3fff3ffc3fffff0fffffc0ffffffcffcfffffc0fffffff3fffffff0ff0f +ffffcffffcffffc3ff3ffcfff0fff3ff303fffcfff0ffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffc03ffffffff0ffffffc0ffff03fc3f3fc3f3fc3ffc0ff000 +3fffcfffffc3f0000ffffff003fc0c0ff00fc3f03f00fff00fffffff0ffffff0 +ff3cf33ffcfc0ffffffc0fffff3ffffff0ffc3fffffc0000fff0ffffffc3ff3f +ffffcffffcffffcfff3fff3f03fff3fc3f0ffff3f03ffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffff00f00ffffff03fffffffc0ff03ff0ff0c0ff3ff03ffcfffff +ffffcffffff3fffffffffff0ffffffffffffffffffffffffffffffffc0000ff3 +fc3cf33fff00ffffffffc0fffffffffff3fff000fffffffffffc00003ffff03f +ffffcffffcffff0fff3fffc03ffffc00fffffffc03fffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffc03fffc03ffffffffffffffffffff03ffcffff3fffffc3fffff +f00000000ffffffffffffff0ffffffffffffffffffffffffffffffffffffffc3 +f0fffc3fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffcfffc0fff03ff03ffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffffcffffffffffffffffcfffffffffffffff3fffffffcfffcc +fffffffffffffffcffffffffff3fffffffffffffffcfffffffffffffffffffff +fffffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffff3ff3ffcfffcfff33cffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffffcffffff3fffffffffcffffff3ffffffff3fffffffcfffcc +ffffffc00003fffcffffffffff3fffffffffffffffcffffffffffffffff3ffff +fffffffffffffffffffff3fffff3fff3ffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffff3ff3ffcfffcfff33cfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffc00000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000fffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffc00000003ff3fffffffffcffffff3ffffffff3fffffffcffcff +ffffffffff0ffffcffffffffff3ffff0000003ffffcffffffffffffffff3ffff +fc000003fffffffffffff3fffff3fff3ffffffffffffffffffffffffffffffff +fffffffffffffffffffffff003fff0000000fffcfffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffffcffffff3ffffffc000003fff3ffffff0000ffffffcffc3f +fffffffff0fffffcfc0ffff000000ffffff0ffff000003fffffffffffff3ffff +fcfffff3ffffffffffffc000ffc3fff3ffffffffffffffffc00ff003fff0ffff +ffff0fffffffffffffffff03303ffffffffffc0003fffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffc0000ffff3fffffffffcffffff3fffffffcffffffc0003f0f +ffffffffc3ffff00f0f3ffffff3fffffffc3f33fffff0ffffffffffffff3ffff +fcfffff3ffffffffffffcffcffcfc00003ffffffffffffffff0fffc3fff0ffff +ffff0ffffffffffffffffc3f3f0ffc000003fff3fffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fff3cfffcffff3fffffffffcffffff3fffffffcff003fffcfcfcf +ffffffff0ffffffcc3f3ffffff3fffffff0ff33ffffc3ffffffffffffff3ffff +fcfffff3ffffffffffff0ffcffcffff3ffffffffffffffffff0fffc3ffffffff +fffffffffffffffffffff0ff3fcffcfffff3fff3fc00fcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fff3cfffcffff3ffffffc000003fff3fffffffcffffffffcfcfc3 +fffffff0fffffffc0ff3fff000000fffff3ffffffff0ffffffcffffffff00fff +fffffff3fcfffffffffc3ff0ffcffff3ffffffffc03ff03fff0fffc3fc00ffc0 +0fc00fff03fc303ffffff3fc3fc3fcc00033fff3fffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fff3c0000ffff3fffffffffcffffff3fffffff0ffffffff0fcff3 +fffffc0000003ffc3ff3ffffff3ffffffc3fffffffc3fffff3c3fcfffff3c0ff +ffffffc3ff0000003ff0fff3ffcffff3ffffffff0fcfc30fff0fffc3fff0ff0f +f3ff0ffc30fc0c0fffffc3fcfff3fcff3ff3ffc3fffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fff3cfffcffff3fffffffffcffffff3fffffff3ffffffff3fcff3 +ffffffffc3fffffcfff3ffffff3ffffffcfffffffc0f0ffff0f3fcfffff3fc0f +ffffffcfffffffffffffffc3ffcffff3fffffffc3fff0fc3ff0fffc3fff0ff0f +ffff0ff0fc3c3f0fffffcff0fff3fcc00033ffcffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fff3cfffcffff3fffffffffcffffff3fffffff3ffffffff3fcfff +ffffffff0ffffff0fff3ffffff3ffffffcffffffc0cfc0fffcfff0fffff3ffff +ffffff0fffffffffffffffcfffcffff3fffffffc3fff0fc3ff0fffc3fff0ff00 +3fff0ff0fc3c3f0fffffcff3fff3fccf3f33ffcffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fff3c0000ffff3fffcfff000ffffff3fffcffc3fffffffc3fcfff +fffffffc3fffffc0fff3fffc003ffffffcfffffc0fcffc3ffffff3fffff3ffff +fffffc3fffffffffffffff0fffcff003fffffffc3fff0fc3ff0fffc3fff0fff0 +03ff0ff0fc3c3f0fffffcfc3ffc3fccf3f33ff0ffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fff3cfffcffff3fff0ffcffc0fffff3fff0ffcffffffffcffcfff +fffffffcffffff0cfff3f3f3ff03fffffc3fffffffcfffffffffc3fffff3ffff +fffff0fffffffffffffffc3fffcfcff03ffffffc3fff0fc3ff0fffc3fff0ffff +c3ff0ff0fc3c3f0fffffcf0fffcffcc00033ff3ffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fff3cfffcffff3ffc3ffcffcc0ffff3ffc3ffcffcfffff0ff0fff +ff03fffcfffffffcfff3c3f3ff303fffff0fffffffcfffffffff0ffffff3ffff +ffff03fffffffffffffff0ffffcccff30fffffff0fcfc30fff0fffc3fff0ff3f +c3ff0ffc30fc3f0ffffff03ffc0ffcff3ff3ff3ff3fffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fff3c0000ffffcfc0fffcff0fc3fffcfc0fff0ffc3fffc3ff3fff +ff03fffc3ffffffcfffc0ff3fc3f0fffffc0ffffffcffffffffc3ffffff3ffff +fff03fffffffffffffff03ffffc3cfc3c3ffffffc03ff03fff0fffc3fff0ffc0 +0fff0fff03fc3f0fffffffffc0fff0ff3cf33c3ff0fffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fff3ffffffffff00fffff003fffffff00ffff3fff000ffff03fff +fff3ffff03fffffcfffffffc00fffffffffc0fffffcffffffff0fffffff3ffff +fffffffffffffffffff03ffffff3f00fffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffff3ff00333cfffc003cffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fff00000003ffffffffffffffffffffffffffffffffffffffffff +ff0ffffff00fffffffffffffffffffffffffffffffffffffff03ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffc3003f0c3ffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcfffff3fffffffcffffffff3ffccfffcfffffffffffffffff3ffff +fffffffffffff3fffffffffffffffffffffffffffffffffffffffffcffffffff +fffffffffffffffffffffffff3ffffff3f3ff3fffffffffffffcffffffcfffff +ffff0ffffffffffcfffffffffffffffffffff3fffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcfffff3fffffffcffffffff3ffccfffcfffffffffffffffff3ffff +fffffffffffff3fffffffffffffffcfffffffffffffffffffffffffcffffffff +fffffffffffffffffffffffff3ffffff3fcfcffffffffffffffcffffffcfffff +ffffc3fffffffffcffffff00000000fffffff3fffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcfffff3fffffffcfff3ffff3fffffffcfff3ffffffffffffc3ffcf +ffff003ffffff3fffffffffffffffcffffff000000fffffffffffffcfffff000 +0003ffc00003ffffc00fff00000000ff3c0000fc000000fffffcffffffcfff3f +ffcff0fffffffff0000003fffcffffffffffc000000fc0fcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcffffffffffffffffffffffffffc7fcfffffffffffffffffffffff +ffffffcfffffffcfffffffffffffffffff3ff3fffffffffcffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcfff0000ffffffcfff0ff0000ffffffcfff0ffffffffffffcfffc3 +fff03303ffc00000fffffffffffffcffffff3ffffcfffffffffffff0003fffff +f0fffffffffffffc0cc0fffff3ffffc003fcfffffffc3ffc00000003ffcfff0f +ffcffffffffffff3ffff3ffff0ffffffffffcffffcfffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcffffffffffffffffffffffffffc3fcffffffffcffffffffffffff +fcffffcfffffffcfffffffffffffffffff3ff3fffffffffcffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcffffcffffffc0003fc3ffcffffffc0003fc3fc00ffc0fff0ffff3 +ffc3f3f0ffffffc3fffffffffffffcffffff3ffffcfffffffffffff3ff3fffff +c3f33ffffffffff0fcfc3fffc3ffffff3f0003fffff0fccffffcffffc0003fc3 +ff0fffffffffffc3ffff3ffff3ffffffffff0ffffcfffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcffffffffffffffffffffffffffc5fcfffffcfffffffffffffffff +ffffffcfffffffcfffffffffffffffffff3ff3fffffffffcffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcffffcff003fffcfcff3ffcff003fffcfcff3f0f03f0c3ff3f0000 +ff0ff3fcffffff0ffffffffffffffcffffff3ffffcffffffffffffc3ff3fffff +0ff33fffffffffc3fcff3fffc0000fff3ffcffffffc3fccffffcffffffcfcff3 +ff3fffffffffffcfc03f3ff000000fffffff3f00fcfffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcffffffffffffffffffffffffffccbcff41b00fcff41ff202cfcfc +fcff808fe42fffcffff41fc80bf904ffff3ff3f41bf3fcfcffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcffffcffffffffcfcff0ffcffffffffcfcff0fffc3c3f0c0003ffc +3f3fc3fc3ffffc3ffffff3fffffffc03fffffffffcff3fffffffff0ffc3fffff +3fffffffffffffcff0ff0fff0fffcffc0ffcffffffcfffffff00ffffffcfcff0 +ff3fffffffffff0fcf3f3ff3ffffcffffffc3f3cfcfffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcffffffffffffffffffffffffffce3cff6d3cffcfd7d7f1b8db8b9 +fcff2f8fdb9fffcfffd7d7c6e3f2f8ffff0003f6d3f3fcfcffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcffff0ffffffff0fcffcff0ffffffff0fcffcfff0fc3f0ffffffff +3c3fcfff3ffff0fffffcf0ff3ffffcf03ffffffff0ffc000000ffc3ffcfffffc +3fffffffffffff0ff3ffcffc0fffcffc3000003fff0ffffffc3c3fffff0fcffc +ff3c000ffffffccfcf3f3ff3ffffcffffff33f3cfcfc00ffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcffffffffffffffffffffffffffcf5cffff3cffcfcff3f3fce7576 +fcff3fcfcfcfffcfffcff3cff3f3fcffff3ff3fff3f3fcfcffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcffff3ffffffff3fcffcff3ffffffff3fcffcff03fc3f0ffffffff +fcff0fff3fff03c3fffc3cff3ffffcff03fffffff3fffffffffffffff0fffffc +ffffffffffffff3fc3ffcff0c0000ffc3ffcffffff3ffffffcff3fffff3fcffc +ff00ffc3ffffffcfcf3f3ff3ffffcfffffff3f3cfcfffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcffffffffffffffffffffffffffcf8cff803cffcfcff3f3fcf3333 +fcff3fcfc00fffcfffcff3cff3f3fcffff3ff3f803f3fcfcffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcffff3ffffffff3fcfffff3ffffffff3fcffffff0fc3f0fc000003 +fcff3fff3ff033f03fff3ffc3ffffcffffffffffc3fffffffffffffff3fffffc +ffffffffffffff3fcfffcfc3cfffcff33c3cfc3fff3ffffffcff3fffff3fcfff +fc3ffff3ffffffcfcf3f3ff3ffffcfffffff3f3cfcfffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcffffffffffffffffffffffffffcfd4ff2f3cffcfcff3f3fcf6767 +fcff3fcfcbffffcfffcff3cff3f3fcffff3ff3f2f3f3fcfcffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcfffc3fffffffc3fcffffc3fffffffc3fcffffffc3c3f0fcfffff3 +fcfc3ffc3f03f3ff0ffffffcfffffcffffffffff0fffffffffffffffc3fffffc +ffffff3fffffff3f0fff0f0fcfffcff33f0c30ffff3ffffffc3f3ffffc3fcfff +fffffff3ffffffcfcf3f3ff000000fffffff3f3cfcfffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcffffffffffffffffffffffffffcff0ff2d3cbfcfd7d7f3fcf8b8b +fcff2f4fd7ffffcfffd7d7cff3f2f4ffff3ff3f2d3f2e4fcffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcfffcffffffffcffcffffcffffffffcffcffffffc3c3f0fcfffff3 +fcf0fffcfffff3fffffffff0fffffcfffffffffc3fffffffffffffff0ffffffc +3fffff0fffffff3c3fff3fffc0000fcf3ffc0fffff0fffffff003ffffcffcfff +fffffff3ffffffcfc03f3ff3ffffcfffffff3f00fcfffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcffffffffffffffffffffffffffcff8ff810e0fcff41ff3fcf8b8b +fcff808fe41fffc003f41fcff3f808ffff3ff3f810f818fcffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcfffcffcfffff0ff0ffffcffcfffff0ff0ffff0f03f0c3fcfffff3 +ff03ffc0fffff3ffffffffc3fffffcffffffffc0fffffffffffffffc3fffffff +0fffffc0ffffffc0fff03fffcfffcfff3fc0c3ffffc3fffffffcfffff0ff0fff +ffffffc3ffc0ffcfffff3ff3ffffcfff03ff3ffffcfffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffff8ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcfff0ffc3fffc3ff3ffff0ffc3fffc3ff3ffffc00ffc0ffcfffff3 +fffffc0ffffff3ffffffff0ffffffcfffffffc0fffffffffffffffc0ffffffff +c0fffffc0000ffffff03ffffcfffcfff3c0cf0fffff03ffffff0ffffc3ff3fff +fffffc0fffc0ffcfffff3ff3ffffcfff03ff3ffffcfffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffff7f5ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcfff3fff000ffff03ffff3fff000ffff03fffffffffffffcfffff3 +fffffffffffff3fffffffc3ffffffcfffffffffffffffffffffffc0fffffffff +fc0fffffffffffffffffffffcfffcfff30fcfc3fffff03ffffc3fffffff03fff +ffff00fffffcffcfffff3ff3ffffcffff3ff3ffffcfffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffff407ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcffffffffffffffffffffffffffffffffffffffffffffffc000003 +ffffffffffffffffffffc0ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcffc0fff3fc0fffffffffffffc0fffffffffffff +ffffffffffc3ffcffff03ff000000fff0fff3fffc0fffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcffffff3fffffcffcfffffcfcfffffffcfffffffffffffffffffff +fffffffffffffffffffff3fffffff3ffffffff3ffcfffc3fffffffffffffffff +fffffcfcfff3ffcfffcfffffffffffffffffffffffffffffffffffffffffffff +fffffffffcfffffff3ffffffff0ffffffffcfffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcffffff3fffffcffcfffff0fcfffffffcffffffffffffffff3ffff +fffffffffffffffffffff3fffffff3ffffffff3ff0ffff03fffff00003fffcff +fffffc3c3fc3ff0fffcf0ff3ffffffffffffffffffffffffffffffffffffffff +fffffffffcffffffc3c0003fffc0fffffff03ffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcffffff3fffffcff000fff3fcfffffffcffffffffffffffff3ffff +fc000003fffffffffffff3fffffff003fffc000003fffff03fffffff0ffffc3f +ffffff3f3fcffc3fffc03ff3ffffffffffffffffffffffffffffffffffffffff +fffffffffc00ffff0ffffffffffc0ffffff33ffffffc00ffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcffffff3ffff000f3fcff003c000ff000003fffffffffffff3ffff +fcfffff3ffffffffffffc000fff003ffffffff3f0ffffffffffffffc3fffff3f +fffffc000003f0fcc00fffc3f0003fffffffffffffffffffffffffc3ffffffff +fffffffc00fffffc3fffffffffffffffffc30fffffc0ccfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcffc00000003fcfc0f0ff3f30ffcffffff0ffffffffffffff3ffff +fcfffff3ffffffffffffcffcffffcfffffffff3cffffc0000ffffff0ffffff0f +ff0ffcff3ff3fc30ffcfffcffffffffffffffffffffffffffc3fffc3ffffffff +fffffffff3fffff0ffffffffffffffffff0fc3ffff0fccffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcfffff333ffffcf0cc3ff3f33ffcfffffc3ffffffffffffff3ffff +fcfffff3ffffffffffff0ffcffffcfffc3c00000003fffff3fffffc3ffffffcf +f03ffcff3ff3ffc3f3cf3fcffffffffffffffffffffffffffc3fffffffffffff +fffffffff3fff0fff3fffffff00003fffc3ff0fffc3fccfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcfffff330ffff03ff0fff3f03ffcfffff0ffffffcffffffff00fff +fffffff3fcfffffffffc3ff0ffff003c0fffffc3fffffffcffffff0003ffffc3 +03fffc000003ff0ff3cf3fcffffffffffffc3c3fc0ff0fc3fc3ff003fc303ff0 +03ffffffc00f03ffc300000ffffff0fff0c00c0ffcff0cffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcffffc33cffff0cfc03ff3f3c3fcffffc3fffff3c3fcfffff3c0ff +ffffffc3ff0000003ff0fff3fffc3fc0fffffc3ffffffff3fffffc3ff0fffff0 +3ffffcff3ff3fc3cf3cf3fcffffffffffffc303f0c3f0fc3c000ffc3fc0c0fc3 +c3ffffff0ff03fff0ffff3fffffffcff03ffffc0f0ff3cfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcffffcf3c3fff0ff0f0ff003f0fcfffc0f0ffff0f3fcfffff3fc0f +ffffffcfffffffffffffffc3fff0fc0fffffc00003ffffcffffff0fffc3fffc3 +fffffcff3ff3f00033cf3fcffffffffffffc0f3c3f0f0fc3fc3fffc3fc3f0f0f +c3fffffc3f03fffc0ffff3fffffffcfffffffffff3fc3cffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcffff0f3f0ffccf03fc0f3f3fcfcffc0cfc0fffcfff0fffff3ffff +ffffff0fffffffffffffffcffffff0cffffc0fffffffff00ffffc3ffff3fff0f +fffffc000003ffcf33cf3fcffffffffffffc3ffc3f0f0fc3fc3fffc3fc3f0f0f +c3fffffffc33fff0cffff3fffffffcfffc0000fff3fcfcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcfffc3f3fc3fccff000ff3f3fffcfc0fcffc3ffffff3fffff3ffff +fffffc3fffffffffffffff0fffffc3cfffc0cffffffffc3cffffff03ff3ffc3f +ffffffff3fffffcff0003fcfcffffffffffc3ffc3f0f0fc3fc3fffc3fc3f0f0f +c3fffffff0f3ffffcffff3fffffff0fffffffcfff3f0fcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcfff0ff3ff0f3cff3fcff3f3fffcffffcfffffffffc3fffff3ffff +fffff0fffffffffffffffc3fffff0fcfffffc00003fff0fcfffffcf0ff3ffcff +ffffffff3ffffcccffcfffcfcffffffffffc3ffc3f0f0fc3fc3fffc3fc3f0fc3 +03ffffffc3f3ffffcffff3ffffffc3fffffff0fff3c3fcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcffc3c000fc3fcff3fcff3f3fff0ffffcfffffffff0ffffff3ffff +ffff03fffffffffffffff0ffffff3ffffffffffff3ffc3fcfffffcfcfc3ffcff +ffffc00000003ccc3fcfffccc3fffffffffc3fff0c3f0303fc3fffc3fc3f0ff0 +c3ffffffcfffffffcffff3ffffff0ffffffff3fffc0ffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffcfffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcffffff3fffffcff3fcff003fff3ffffcffffffffc3ffffff3ffff +fff03fffffffffffffff03ffffff0ffffffffffff3ff0ffc3ffffc3cf0fffc3f +ffffffff3ffff0cf3fcfcfc3f0000ffffffc3fffc0ffc0c3ff00ffc3fc3f0fff +c3ffffffc3ffffffcffff3fffff03fffffffc3fffffff0fcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcc0000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000fffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcffffff3fffffcff3fcfffffffc3ffffcffffffff0fffffff3ffff +fffffffffffffffffff03fffffffc0000fffffffc3ffffff003fff0003ffff00 +000fffff3ffff3cfffcf0ff3ffffffffffffffffffffffffffffffffffffff0f +0ffffffff00003ffcffff3fffc03ffffffff0ffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcffffff3fffffcff000ffffffc0fffffffffffff03ffffffffffff +fffffffffffffffffffffffffffffffffffffff00fffffffffffffffffffffff +ffffffff3fffffcffff03fffffffffffffffffffffffffffffffffffffffffc0 +3fffffffffffffffcfff03ffffffffffffff3ffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcffffffffffffffffffffffffffffffffffffffffffffffcffffff +fffffffcfffffffffffffffffffffffffffffffffffffccfffffffffffffffff +fffcffffffcfffffffff3fcfffffffffffffffffffffffcfff3fff0fffffffff +3ffffffffffffffcfffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcffff00000fffffffffffffffffffffffffffffffffffff0ffffff +fffffffcfffffffffffffffffffffffffffff3fffffffccfffffffffffffffff +fffcffffffcffffffc00000003f000000fff3fffffffffcffc3fffc0ffffffff +3fffffcffffffffcfffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcfffffffc3fffc00003ff0000003ffffffcfffffffffffc3ffffff +fffffffcfff3ffffc00fffc0000003ffffffc3ff000003ffffffffffc0000003 +fffc00ffffcfff003fff3fcffffff3ffcfff0fffffff000000fffffc0fffffff +3fffffcffffffffcfffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcffffffc3ffffffffffffffff0ffffffffcffff3ffffff0ffffffc +000ffffcfff0fffc0cc0ffffffffc3ffffff0fffffffffffffffffffffffffc3 +fc00ffffffcfff3f3ffffffffffff3ffcfffcfffffffffcfc3fffffffffff000 +000fffcffffffc0003fffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcffffff0ffffffffffffffffc3f33fffffcffff0fffffc3fffff00 +fff3fc0003fc3ff0fcfc3ffffcff0ffffffc3ffffffffffffffffffffffcff0f +fff3fffff0000f3f3f003cf3cf00000000ffc3ffc3ffffcf3ffff00003ffffff +3fffffcffffffff3fffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcfffffc3ffffffffffffffff0ff33fffffcffffc3ffff0fffff03f +fffcfffcfcff3fc3fcff3ffffcfc3fffffc0fffffffffffffffffcfffffcfc3f +fff3fff0ffcfcf3f3f3f3f333ffff3ffcffff3fc0ff00000000fffffcfffffff +3fffffcffffffff3fc00fffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcffffc3fffffffffffffffff3fffffffffcfffff3fff0fffffffff +fffcfffcfcff0fcff0ff0ffffcf0fffffc0ffffc000000fffffff0fffffcf0ff +ffc00f03ffcfcf3f3f3f3c000ffff3ffcffff0c0fffffff0ffffffff3ffff000 +000fffcffffffff3fffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcfff0000000ffffffffffffc3fffffffffcfffff0ffc3fffffffff +fffcfff0fcffcf0ff3ffcffffcffffffc0cffffffff3ffffffffc3fffffcffff +ff0ff03fffcfcf3f3f003fccfff000000ffffc0fffffff0ffffffffcffffffff +3fffffcfffffffc3fffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcffffff0fffffffffffffffcffffffffffcfffffcfff0fffffffff +fffcfff3fcffcf3fc3ffcffffcfffff00fcffffffff3fffffffc0ffffffcffff +fc3f03ffffcfcf3f3f3f300003ffcffffffff0fffffff00000fffff3ffffffff +3fffffcfffffffcffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcfffffc3fffffffffffffffcffffffffffcfffffcfffc3ffffffff +fff0fff3fcffff3fcfffcffffcffffffffcffffffff3ffffffc0fffffffcffff +fffc33ffffcfcf3f3f3f3f3f3fff3fffffffc3ffffff03ffffffffc03fffffff +3fffffcfffffffcffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcfffff0ffffff3fffffffffcffffffffffc3cfffcffff0ffffffff +ffc3ffc3fcffff3f0fff0ffff0ffffffffcfffffffc3fffff00cfffffff0ffff +fff0f3ffff0fcf3f3f003cf3cffc000003ff0ffffff033ffffffff0f3ffffc00 +3fffffcffff3ff0ffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcfffff3ffffff0fffffffffc3ffffffffff30ffffffffc3fffffff +fc0fffcffcffff3c3fff3ffff3ffffffffcfffffffcffffffffcfffffff3ffff +ffc3f3ffff3fcf3f3f3f333333f33ffff3ff3ffffffff00000fffc3f3ffff3ff +03ffffcfffc3ff3ffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcfffff3ffffffc0fffffffff0fffffc0fff03fffffffff0fffffff +c0ffff0ff0ffffc0fff03fffc3ffffffffcfffffff0ffffffffcffffffc3ffff +ffcfffffff3f0f3f3f3f3fc0ff0f3ffff3ff3ffffffffffffcfff0ff3ffff3ff +303fffcfff0fff3ff3fffff03ffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcfffff0fffffffc0000fffffc0ffffc0fffcffffffffffc3ffffff +fffffc3ff3ffffffff03ffff0fffffffffcffffffc3ffffffffcffffff0fffff +ffc3fffffc3f3f3f3f3f3c330fff3ffff3ff0ffffffffffffcffc3ff0ffff3fc +3f0ffff3f03ffc3ff0fffff03ffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcfffffc0fffffffffffffffffc0ffffcfffffffffffffff0ffffff +ffffffff03fffffffffffff03fffffffffcfffffc0fffffffffcfffff03fffff +fff00003fcff3f003c3f30f3c3ff3ffff3ffc00003fffffff0ffffffc00ffc00 +fffffffc03fffcfffc003ffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcffffffc03ffffffffffffffffffffc3fffffffffffffffcffffff +fffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffff +fffffffff0fc3ffffcfc3fc3ffff000003fffffffffffffc03ffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffcfffffff +fcfffffffffffffffffffffffffffffffff3fffffffc3ffcffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffff3fff3ffffffcfffffff +fcfffffffffffffffffffffffffffffffff3ffffffc0fffcff0000003ffcffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcfffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffff3fff3ffffffcfffff3f +fcffff0000000ffffffffffffffffffffff003ffc00ffcfcff3ff3ff3ffcffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcfffffffffffffffffffff0fffffffffffffffffffc3ffffffffff +ffffffffffffffffffffffffffc3ffffffffffffffffc3fff3ffffffcfffff3f +fcffffffff0ffffffffffffffffffffff003ffffffcffcfcff3ff3ff3ffcffff +fffffffffc3ffffffffffffffffc3ffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcffffc3fffffffffffffff0fffffffffffffffffffc3ffffffffff +fffff0ffffffffffffffffffffc3ffffffffc3ffffffcfc00003ff3fcfffff0c +000ffffffc3ffffffff0ff3c003fc00fffcfffffffcffcfcff3ff3ff3ffcffff +fffffffffc3ffffffffffffffffc3ffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcffff03fffffffffffffff0fffffffffffffffffffc3ffffffffff +fffff0ffffffffffffffffffffc3ffffffffc3ffffffcffff3ffff3fcfffffc0 +f3c0fffff0fffffffff03f3c3fff0fc3ffcfffc3c0003cfcff0000003ffcffff +fffffffff0fffffffffffffffff0fffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00cffffcfffcc3fffffffffffffff0c3ff0f0ff03fc00fff003fc03f003ff +003ff0fffffff0c3fc00fff00fc3f0ff00ffc3ffffffcffff3ffff3fc003ffcf +f3fcfffff3fffffffff03f3c3fff0fffff003c0fffcffcfcff3ff3ff3ffcffff +fffffffff0fc3f0fc00ff0f0fff0ff003f0c3ffc0fff00ffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00cffffcffffc3fffffffffffffff030ff0c0fc30fffc3fc3c3f0fcfff0fc +3fcf0003fffff030fffc3fc3f3c3f3fc3c3c000fffffcffff3ffff3fcfffff03 +f3fc3fffc3fffffffff30f3c3fff03fffc3fc0ffff03fcfcff3ff3ff3ffcffff +ffffffffc3fc3f0f0ff3f0c0ffc3fc3fcf030ff0c3fc30fcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffc3fffffffffffffff0fc3f03cf0fc3ffc3f0fc3c3fffff0fc +3ffff0fffffff0fc3ffc3f0fffc3cff0fc3fc3ffffffcffff3ffff3fcfffff30 +c3ff3fffcffffffffff30f3c3fffc03ff0fc0fffff0cfcfcff3ff3ff3ffcffff +ffffffffc3fc3f0f0ffff03cffc3fc3fff0fc3c3f0f0fcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffc3fffffffffffffff0fc3f0fff0fc3c003f0fc3c3fff000fc +00fff0fffffff0fc3c003f0fffc03ff0003fc3ffffffcffff3ffff3fcffffc3c +cfff3fffcffffffffff3c33c003ffc0ffff0cffffccf3cfcff0000003ffcffff +ffffffff0ffc3f0f003ff0ffff0ffc00ff0fc3c3f0f0fcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffc3fffffffffffffff0fc3f0fff0fc30fc3f0fc3c3ffc3f0ff +c00ff0fffffff0fc30fc3f0fffc30ff0ffffc3ffffffcff003ffff3fcffffcfc +0fff3fffcffffffffff3c33c3fffff03ffc3cffff0cffcfcff3ff3ff3ffcffff +3fffffff0ffc3f0ff003f0ffff0fffc00f0fc3c3f0f0fcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffc3fffffffffffffff0fc3f0fff0fc30fc3f0fc3c3ffc3f0ff +ff0ff0fffffff0fc30fc3f0fffc3c3f0ffffc3ffffffcfcff03fff3fcffffcff +3ffc3fffc3fffffffff3f03c3fffffc3ff0fcfffc3cffffcff3ff3ff3ffcfffc +3ffffffc3ffc3f0fffc3f0fffc3fffff0f0fc3c3f0f0fcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffc3ffc0fffffffffff0f0ff0fffc30f0f03fc303f0fcc3c0fc +ff0ff0fffffff0f0f0f03fc3f3c3f0fc3f3fc3ffffffcccff30fff3fcffffcf0 +0ffcfffff0fffffc0ff3f03c3fff0fc3ff3fffffffcffffcff3ff3ff3ffcfff0 +fffffffc3ffc0c0f3fc3f0fffc3ffcff0f0f0ff0c3fc30ffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffc3ffc0fffffffffff003ff0ffff03fc0c0ff0c3fc03f0303f +003ffc03fffff003fc0c0ff00fc3f03f00fff00fffffc3cfc3c3ff3fcfffff03 +cfc0fffffc0ffffc0ff3fc3c3fffc00fff0fffffffcffffcfc3ff3ff3fff3f03 +fffffff0ffff030fc00ff0fff0ffff003f003ffc0fff00fcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffff0fffffffffffffffffffffffffffffff3f00fffc00000003fff +fc0fffffffc0ffffcfffffffffffffffffc0000fffcffffcfcfff3ff3fffc03f +fffffff0fffffffffffffffff0ffffffff0ffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffff0ffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffc3fffffffffffffffffffffffffcfffc0f0fff3f03fffffff +ffffffffffffffffffffffffffffffffff0ffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffff3ffcfffffcfffffffff3ffffffffffffffffffff +fff33ffc3ffffffffffffffffffffffffcffffffff0fffffffffffffff3fffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffff3ffcfffffcfffffffff3fffff00003ffffffff3f +fff33fff03fffffcfffffffffffffffffcffffffffc3f3fc00000003ff3fffff +ff3ffffffffffffffff00003fff3fff3ffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffff3ffcffc00000003ffff3ffffffff0fffffffff0f +fffffffff03ffffcffffffc0000003fffcfffffffff3f3ffff3f3fffff3ffc3f +ff0fffffffc00003ffffff0ffff3fff3ffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffff000fcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffff3ffcfffffcfffff00000000ffffc3fffffffffcf +fffffffffffffffcffffffffffc3fffc0000fffffcffc3ffc000003fc000ff0f +ffcffffffffffffffffffc3fffc3fff3ffffffffffffffffff0fffffffffffff +ffffffffffffffffffffffffffc3fffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffc0000003fff0fffffffff3fffffff0ffffffffffc3 +ffc3fffffffffffcffffffffff0ffffffcfffffffcffcfffcf3f3f3fff3fffc3 +ffc3ffc3fffffffffffff0ffffcfc00003ffffffffffffffff0fffffffc3ffff +fffc3fffffffffffffffffffffc3fffffff0fffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffff3ffcfffff00003fffff3ffffffc3fffffffffff3 +fc0fffc0000ffffcfffffffffc3ffffffcfffffffcff0fffcf3f3f3ffc3fffff +fff3fc0fffffffffffffc3ffffcffff3ffffffffffffffffffffffffffc3ffff +fffc3ffffffffffffffffffffffffffffff0fffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffff3ffcffffc3fff3fffc03ffffff0003fffffffff0 +c0ffffffffc3fffcfffffffffcfffffc0000ffff3cff3cffcf3f3f3ffcfff3ff +fff0c0ffffffffffffff0003ffcffff3fffffffc30fff03fc00ff0c0ffc3ffff +fffc3fff03ffffff0c3ffc0ff003fc303ff0fffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffff3ffcffff03fff3fff0f0fffffc3ff0fffffffffc +0ffffffffff3fffcfffffffff0fffffff3ffffff3cfc3c3fc000003ffcfff3ff +fffc0ffffffffffffffc3ff0ffcffff3fffffffc0c3fc30fff0ff0303c000fff +ffc000fc30ffffff030ff0c3ffc3fc0c0f0003fffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000000 +00000003ffff0000000000000003ffff0000000000000000ffffffffffffffcf +fffffffffffffcfffffffffffffffc0000000000000003fffc00000000000000 +03fffc0000000000000003ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffff3ffcfffc300003fff3fcfffff0fffc3ffffffff0 +fffffffffff3fffcfffffffff3fffffff3ffffff3cfcff3fffcffffff0fff3ff +fff0fffffffffffffff0fffc3fcffff3fffffffc3f0f0fc3ff0ff0fc3fc3ffff +fffc3ff0fc3fffff0fc3c3f0ffc3fc3f0ff0fffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffffff +fffffff3ffff3ffffffffffffff3ffff3ffffffffffffffcffffffffffffffcf +fffffffffffffcfffffffffffffffcfffffffffffffff3fffcffffffffffffff +f3fffcfffffffffffffff3ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffff3ffcfff0f3fff3fff3fcffffc3ffff3fffffffc3 +fffffffffff3fffcfffffffff3fffffff3fff3fc3cf0ff0c00000003f3fff3ff +ffc3ffffffffffffffc3ffff3fcffff3fffffffc3f0f0fc3ff0ff0fc3fc3ff00 +03fc3ff0fc3c000f0fc3c3f0ffc3fc3f0ff0fffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffffff +fffffff3ffff3ffffffffffffff3ffff3ffffffffffffffcffffffffffffffcf +fffffffffffffcfffffffffffffffcfffffffffffffff3fffcffffffffffffff +f3fffcfffffffffffffff3ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffff00000000c3f3fff3fff0fcffffff03ff3fffffff0f +ffffffffffc3fffcffff3ffff3fffffff3fff3fcfcc3ffcfff3ff3ffc3fff3ff +ff0fffffff3fffffffffffff3fcff003fffffffc3f0f0fc3ff0ff0fc3fc3ffff +fffc3ff0fc3fffff0fc3c3f0ffc3fc3f0ff0fffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffffff +fffffff3ffff3ffffffffffffff3ffff3ffffffffffffffcffffffffffffffcf +fffffffffffffcfffffffffffffffcfffffffffffffff3fffcffffffffffffff +f3fffcfffffffffffffff3ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffffffffffffffffffff00003fffc00fffffcf0ff3fffffff3f +ffffffffff0ffffcfffc3ffff0fffffff3fff3f0fc0ffcfffcffc3fffff003ff +ff3fffffff0ffffffffffffc3fcfcff03ffffffc3f0f0fc3ff0ff0fc3fc3ffff +fffc3ff0fc3fffff0fc3c3f0ffc3fc3f0ff0fffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffcffd01fc0 +1fcffcf3ffff3fd01fc01fcffcf3ffff3fd01fc01fcffcfcffffffffffffffcf +fffffffffffffcfffffffffffffffcffd01fc01fcffcf3fffcffd01fc01fcffc +f3fffcffd01fc01fcffcf3ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffff3ffcfffff3fff3fffff3fffffcfcfc3ffc0fff3f +fffffffffc3ffffcfff0fffffc3ffffff0ffc3fffcfff0fff0030fffffcff03f +ff3fffffffc0fffffffffff0ffcccff30ffffffc3c3fc30fff0ff0fc3fc3ffff +fffc3ffc30ffffff0f0ff0c3ffc3fc3f0ff0fffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffcff1bdfcf +97cffcf3ffff3f1bdfcf97cffcf3ffff3f1bdfcf97cffcfcffffffffffffffcf +fffffffffffffcfffffffffffffffcff1bdfcf97cffcf3fffcff1bdfcf97cffc +f3fffcff1bdfcf97cffcf3ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffffffffffc3ffc3ffff3fff3ffffc3fffffc3cf0fffc0fff0f +ffffffffc0ffffff3f03ffffff03fffffc3f0fffc03ff3fffff03fffffcfc30f +ff0ffffffffc0000ffffff03ffc3cfc3c3fffffc00fff03fff0ff0fc3ff00fff +ffff00ff03ffffff003ffc0fffc3fc3f0ffc03fffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffcfd7fffcf +f3cffcf3ffff3d7fffcff3cffcf3ffff3d7fffcff3cffcfcffffffffffffffcf +fffffffffffffcfffffffffffffffcfd7fffcff3cffcf3fffcfd7fffcff3cffc +f3fffcfd7fffcff3cffcf3ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffffffffff0ffff0ffff3fff3ffff0fffffff0003ffffffffc0 +0003fff00fffffffc03ffffffff03fffff003ff00f0003ffff0300fffff00fff +ffc00003ffffffffffffc03ffff3f00ffffffffc3fffffffffffffffffffffff +ffffffffffffffff0ffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcbfffcf +f3cffcf3ffff3cbfffcff3cffcf3ffff3cbfffcff3cffcfcffffffffffffffcf +fffffffffffffcfffffffffffffffcfcbfffcff3cffcf3fffcfcbfffcff3cffc +f3fffcfcbfffcff3cffcf3ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffff03ffffc0fff3ff03fff03fffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffff003ffc0fffffffff +fffffffffffffffffffffffffffffffffffffffc3fffffffffffffffffffffff +ffffffffffffffff0ffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcffffcf +97cffcf3ffff3cffffcf97cffcf3ffff3cffffcf97cffcfcffffffffffffffcf +fffffffffffffcfffffffffffffffcfcffffcf97cffcf3fffcfcffffcf97cffc +f3fffcfcffffcf97cffcf3ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcffffc0 +1fcffcf3ffff3cffffc01fcffcf3ffff3cffffc01fcffcfcffffffffffffffcf +fffffffffffffcfffffffffffffffcfcffffc01fcffcf3fffcfcffffc01fcffc +f3fffcfcffffc01fcffcf3ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffcfffffffffffffcff0003ffffcfffffffffffffff3ff3ffffff3fffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf +fffffffffffff3fcffffff3ff3fffffffffffffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffcfcbfffcf +ffcffcf3ffff3cbfffcfffcffcf3ffff3cbfffcfffcffcfcffffffffffffffcf +fffffffffffffcfffffffffffffffcfcbfffcfffcffcf3fffcfcbfffcfffcffc +f3fffcfcbfffcfffcffcf3ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffcfffffc0000fffcff3ff3ffff03fffff3ffffff3f3ff3fffffc3fffff +fffffffffffffffffffffffffffcffffffffffffffffff3ffffcffffffffffcf +fffff3fff3fff3fcffffcf3cf3ffffffffffffffcffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffcfd7fffcf +ffcffcf3ffff3d7fffcfffcffcf3ffff3d7fffcfffcffcfcffffffffffffffcf +fffffffffffffcfffffffffffffffcfd7fffcfffcffcf3fffcfd7fffcfffcffc +f3fffcfd7fffcfffcffcf3ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffcffffffffc3fffcff0003fffc30fffff3ffffffccfff3fffffcffffff +ff003ffc00000f0ffffffffffffcfffffffffffffffcff3ffffcffffffffffcf +fffff3fff3fff3f00003c330f3fffffc00ffffffcffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffcff1b9fcf +ffd7f5f3ffff3f1b9fcfffd7f5f3ffff3f1b9fcfffd7f5fcffffffffffffff3f +fffffffffffffcfffffffffffffffcff1b9fcfffd7f5f3fffcff1b9fcfffd7f5 +f3fffcff1b9fcfffd7f5f3ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffffffffffffffffffffffffffffffffffffffc3fffffffffff +fffc00000003ffff0ffffcff3ff3fff0fc0fffc3f0003ff3f00003fc000003ff +f03303ffffffccf3fc00003ffffcffffff000000fffcff3ffff0fc000fffffcf +fffff3fff3fc0033fffff333c000ffc0cc0fffffcffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffcffd01fcf +fff407f3ffff3fd01fcffff407f3ffff3fd01fcffff407fcffffffffffffff3f +fffffffffffffcfffffffffffffffcffd01fcffff407f3fffcffd01fcffff407 +f3fffcffd01fcffff407f3ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffc00fffffffffffffffffffffffffffffc3fffc3fffffffffff +fffffffcfffffffc3fffc00f3ff3ff03ffc0ffcffffffff3f3f3f3fcfffff3ff +c3f3f0ffffffccf3fcffff3ffffcfffffffffffcfffcff3ffff3ffffffffffc0 +03fff3fff3ffff00003f0000cfcfff0fcfc3fc0000003cffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffffff +fffffff3ffff3ffffffffffffff3ffff3ffffffffffffffcffffffffffffff3f +fffffffffffffcfffffffffffffffcfffffffffffffff3fffcffffffffffffff +f3fffcfffffffffffffff3ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fff0f03ffffffffffffffffffffffffffffc3ffffffffffffffff +fffffffcfffffff0fffffcff0003f03ffffc0fcfffffffccf3f3f3fcfffff3ff +0ff3fcffffff0f0ffcffff3ffffcfffffffffffcfffcff3ffff3ffffffffffcf +fffff3fff3fffc3cff3ff33f0fcffc3fcff3ffffcffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffffff +fffffff3ffff3ffffffffffffff3ffff3ffffffffffffffcffffffffffffff3f +fffffffffffffcfffffffffffffffcfffffffffffffff3fffcffffffffffffff +f3fffcfffffffffffffff3ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffc3ffffffffffffffc3c3fc0ff0fc3fc3ff003fc303ff003f +ffffff00ffffffc000fffcfffffffff0000fffcfffffff3cf3f3f3fcfffff3ff +3fc3fc3fffff3ffffcffff3ffffc03fffffffffcfffcff3ffff3ffffffffffcf +fffff3fff3fff0fc003ff303f3cffcff0ff0ffffcffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffffff +fffffff3ffff3ffffffffffffff3ffff3ffffffffffffffcffffffffffffff3f +ffffffffffffff3ffffffffffffffcfffffffffffffff3fffcffffffffffffff +f3fffcfffffffffffffff3ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffc3ffffffffffffffc303f0c3f0fc3c000ffc3fc0c0fc3c3f +fffffc3c3fffff0ffc3ffcf000003fffffffffcffffffffcf3f3f3fc000003fc +3fcfff3ffffc3ffffcffff3ffffcf03ffffffffcfffcff3ff3f3ffffffffffcf +fffff33ff3fff3ccff3fc330f30ff0ff3ffcfff3cfcffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffffff +fffffff3ffff3ffffffffffffff3ffff3ffffffffffffffcffffffffffffff3f +ffffffffffffff3ffffffffffffffcfffffffffffffff3fffcffffffffffffff +f3fffcfffffffffffffff3ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffff0fffffffffffffffc0f3c3f0f0fc3fc3fffc3fc3f0f0fc3f +fffffcff3ffffc3fff0ffcff3fffffffffffffcffffffff0f3f3f3fcfffff3fc +ff0fff3ffffcfffffcffff3ffffcff03fffffffcfffcff3fc3f3ffffffffffcf +fffff0fff3ffc33c003f0f3cf33ff3fc3ffcfff3cfc3fcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffffff +fffffff3ffff3ffffffffffffff3ffff3ffffffffffffffcffffffffffffff3f +ffffffffffffff3ffffffffffffffcfffffffffffffff3fffcffffffffffffff +f3fffcfffffffffffffff3ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffc3fffffffffffffffc3ffc3f0f0fc3fc3fffc3fc3f0f0fc3f +fffffcff3ffff0ffffcffcff00003fc00003ffcffffffff0f00003fcfffff3fc +ff3fff3ffff0fffffcffff3ffffcfffffffffffcfffcff3f0ff3ffffffffffcf +fffff3fff3ff00ff3ffffcfff03ff3fcfffcffc3cff0fcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffffff +fffffff3ffff3ffffffffffffff3ffff3ffffffffffffffcffffffffffffff3f +ffffffffffffff3ffffffffffffffcfffffffffffffff3fffcffffffffffffff +f3fffcfffffffffffffff3ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffff0ffffffffffffffffc3ffc3f0f0fc3fc3fffc3fc3f0f0fc3f +fffffc3f3fffffc0ffcffc0cf3cf3fcffff3ffcfcfffffccfff3fffcfffff3fc +fc3ffc3fffc3fffffcffff3ffffcfffffffffffcfff0ff3c3ff3f3ffffff000f +ffffffffc3fc333c003f00003cfff3f0fff0ffcfcffcfcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffcffffffff +fffffff3ffff3ffffffffffffff3ffff3ffffffffffffffcffffffffffffff3f +ffffffffffffff3ffffffffffffffcfffffffffffffff3fffcffffffffffffff +f3fffcfffffffffffffff3ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffc3ffffffffffffffffc3ffc3f0f0fc3fc3fffc3fc3f0fc303f +ffffff003fffff3c3fcff0f3c30f3fcffff3ffcfcfffff3cfff3cffc000003fc +f0fffcffff0ffffffcffff3ffffcfffffffffffcfff3ff30fff3f3fffffcffc0 +ffffffffcffff3f0ff3ff3f3fcfff3c3fff3ff0fcffc3cfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffc00000000 +00000003ffff0000000000000003ffff0000000000000000fffffffffffffcff +ffffffffffffff3ffffffffffffffc0000000000000003fffc00000000000000 +03fffc0000000000000003ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fff0003fc0fffffffffffc3fff0c3f0303fc3fffc3fc3f0ff0c3f +fffffffcffffff3f3f0fc3ff0f3f3fcffff3ffccc3fffffcfff3cffcfffff3ff +03ffc0fff03ffffffc00003ffffcfffffffffffcffc3ff03fff330fffffcffcc +0fffffff0ffff3c30c3ff3c3f03ffc0fff03fc3fcfff3cffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +cfffffffffffffffffff3ffffffffffffffffffcfffffffffffffffffffffcff +ffffffffffffff3fffffffffffffffffffffffcfffffffffffffffffff3fffff +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fff0003fc0fffffffffffc3fffc0ffc0c3ff00ffc3fc3f0fffc3f +fffffff0ffffff0f3c3ffffc3c3c3fcffff3ffc3f0000ffcfff003fcfffff3ff +fffc0fff03fffffffffffffffffcffffff000000ff0fff0ffff0fc0003fcff0f +c3fffffc3ffff3ffc0ffc00ff30ffffff03fffffcffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +cfffffffffffffffffff3ffffffffffffffffffcfffffffffffffffffffffcff +ffffffffffffff3fffffffffffffffffffffffcfffffffffffffffffff3fffff +fffffffffffffcffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffffffffffffffffffffffffffffffffffffffffffffff0f0ff +ffffffc3ffffffc000fffffff0fcffcffff3fff3fffffff0fc03f3fcfffff3ff +fffffffffffffffffffffffffffcfffffffffffffffffffffffcffffffff003f +ffffffc0fffff3ff0c3ffcc3c3c3fffffffffffc0ffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +f3ffffffffffffffffff3ffffffffffffffffff3fffffffffffffffffffffcff +ffffffffffffff3ffffffffffffffffffffffff3ffffffffffffffffff3fffff +fffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffffffffffffffffffffffffffffffffffffffffffffffc03ff +fffffc0fffffffffffffffffffc0ffc00003ffffffffff03c0fff0fc000003ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffff3f03f0303f30ff0fffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +f3ffffffffffffffffff3ffffffffffffffffff3fffffffffffffffffffff3ff +ffffffffffffff3ffffffffffffffffffffffff3ffffffffffffffffff3fffff +fffffffffffff3ffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fcffffffffffffffffff3fffffffffffffffffcffffffffffffffffffffff3ff +ffffffffffffff3ffffffffffffffffffffffffcffffffffffffffffff3fffff +ffffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffff3ff3fffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fcffffffffffffffffff3fffffffffffffffffcffffffffffffffffffffff3ff +ffffffffffffff3ffffffffffffffffffffffffcffffffffffffffffff3fffff +ffffffffffffcfffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffff0ff0fc3ffc0000ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff3fffffffffffffffff3fffffffffffffffff3fffffffffffffffffffffcfff +ffffffffffffff3fffffffffffffffffffffffff3fffffffffffffffff3fffff +ffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffffffffffffffffffffffffffffffffffffffffffffffffffc +000000ffc3fcfcffffffc3ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffc000000000000 +000000000000000000000000000000000000000000000000003fffffffffcfff +ffffffffffffffcffffffffffc00000000000000000000000000000000000000 +000000000000000000000000ffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffffffffffffffffffffffffffffffffc3fffffffffffffffff +fffc3ffff3c0000fffff0fffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffff +ffcfffffffffffffffff3ffffffffffffffffcffffffffffff3fffffffffcfff +ffffffffffffffcffffffffffcffffffffffffffcfffffffffffffffff3fffff +fffffffffffcfffffffffffcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffc3fffffffffffffffffffc3ffffffffc3fffffff +fff0fccfffffcffffffc3fffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffcfff +fffffffffffffff3fffffffffcffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffff03fffffffffffffffffffc3ffffffffc3fffffff +ffc3fccfffffcffffff0ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffff3fff +fffffffffffffff3fffffffffcffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffffffffffcc3ffffff0c3fc00fff00fc3f0ff00ffc3fffffff +ffcfffffffffcfffffc000ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff3ffffffffc3fff +fffffffffffffff3fffffffffcffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffc3ffffff030fffc3fc3f3c3f3fc3c3c000ffffff +ff0ffffc03000003ff0ffc3fffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffcffff3fffffff +fff3ffffffffffffffffffffffffcfffc007ff1ffe3ffcffff3ffffffff3ffff +fffffffffffffff3fffffffffcffff3ffffffffff3ffffffffffffffffffffff +ff3fffc007ff1ffe3ffcfffcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffc3ffffff0fc3ffc3f0fffc3cff0fc3fc3fffffff +ff3ffffff3ffcffffc3fff0fffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffcffff3fffcfff +fff3ffffffffffffffffffffffffcfffcfe5ff0ffd3ff47fff3fffffffcfffff +fffffffffffffffcfffffffffcffff3fffcffffff3ffffffffffffffffffffff +ff3fffcfe5ff0ffd3ff47ffcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffc3ffffff0fc3c003f0fffc03ff0003fc3fffffff +ff3ffffff3ff03fff0ffffcfffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffcffff3fffffff +fff3ffffffffffffffffffffffffcfffcffd7f1bf93ff23fff3fffffffcfffff +fffffffffffffffc3ffffffffcffff3ffffffffff3ffffffffffffffffffffff +ff3fffcffd7f1bf93ff23ffcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffc3ffffff0fc30fc3f0fffc30ff0ffffc3fffffff +ff3ffffff3ff33ffffc0ffcfffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffcffff202fcfe4 +13f202fffe41fc80bf90bf90bf808fffcffe3f27f63fe76fff3ffffff03fffff +ffffffffffffffffcffffffffcffff202fcfe413f202fffe41f202fe42fe42fe +023fffcffe3f27f63fe76ffcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffc3ffffff0fc30fc3f0fffc3c3f0ffffc3fffffff +ff0ffffff3fc30ffff3c3fcfffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffcffff1b8fcfcb +e3f1b8fffcbffc7e3f6e7f6e7f2f8fffcfff3f33f33fdb9fff3fffffcfffffff +fffffffffffffffff0fffffffcffff1b8fcfcbe3f1b8fffcbff1f8fdb9fdb9fc +be3fffcfff3f33f33fdb9ffcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffc3ffffff0f0f0f03fc3f3c3f0fc3f3fc3fffffff +ffc3fffff3f0fc3fff3f3f0fff03ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffcffff3fcfcfcf +f3f3fcfffc6ffcff3f3f3f3f3f3fcfffcfff3f36e73fcfcfff3ffff03fffffff +ffffffffffffffffff0ffffffcffff3fcfcfcff3f3fcfffc6ff3fcfcfcfcfcfc +ff3fffcfff3f36e73fcfcffcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffc3ffffff003fc0c0ff00fc3f03f00fff00ffffff +fff03fffc3c3ff0fff0f3c3fff03ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffcffff3fcfcfcf +f3f3fcfffe42fcff3f003f003f3fcfffcffe3f39db3f800bfc00000fffffffff +fffffffffffffffffff000000cffff3fcfcfcff3f3fcfffe42f3fcfc00fc00fc +ff3fffcffe3f39db3f800bfcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffffffffff0fffffffffffffffffffffffffffffff +ffff03ff0cffffffffc000ffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffcffff3fcfcfcf +f3f3fcfffff8fcff3f2fff2fff3fcfffcffd7f3c8f3f6fe7ff3fffffffffffff +fffffffffffffffffffffffffcffff3fcfcfcff3f3fcfffff8f3fcfcbffcbffc +ff3fffcffd7f3c8f3f6fe7fcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffff0fffffffffffffffffffffffffffffff +fffffffc3f000003ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffcffff3fcfcfcb +d3f3fcfffdb8fcbe3f5fff5fff2f4fffcfe5ff3d1f3f3ff3ff3fffffffffffff +fffffffffffffffffffffffffcffff3fcfcfcbd3f3fcfffdb8f2f8fd7ffd7ffc +bd3fffcfe5ff3d1f3f3ff3fcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffcffff3fcfcfe0 +23f3fcfffd02fc80bf907f907f808fffc007ff3fff3e7ff6ff3fffffffffffff +fffffffffffffffffffffffffcffff3fcfcfe023f3fcfffd02f202fe41fe41fe +023fffc007ff3fff3e7ff6fcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffff0fffffffffffffff3ffffffffffcfffffcfff33f +fffff3ffff3ff3fffffffffffffffffffffffffffffffffffffffffffffff3ff +fcfffffffffffcfff3ffff3fffffffff3ffffffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffff +e3fffffffffffcffffffffffffffffffffffffffffffffffff3fffffffffffff +fffffffffffffffffffffffffcffffffffffffe3fffffffffff3ffffffffffff +fffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffc3f3fc00000003ff3ffffffffffcfffffcfff33f +cffff3ffff3ff3ffffffffffffffffffffffffffffffffffffff3ffffffff3ff +fcfffcfffffffcfff3ffff3fc000ffff3ffffc00000000fcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffdf +d7fffffffffffcffffffffffffffffffffffffffffffffffff3fffffffffffff +fffffffffffffffffffffffffcffffffffffdfd7fffffffffff3ffffffffffff +fffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffff0000003fffff3f3ffff3f3fffff3ffc3fc00f0000fffcffffff +cffff3fffc33f3fffffc00fffffffffffffc3ffffff0ffffffff3ffffffff3ff +fcfffcfffffffcf00003f003cffcffff003fffff3f3ffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffd0 +1fffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffffff +fffffffffffffffffffffffffcffffffffffd01fffffffffffffffffffffffff +fffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffffffffffffffffffffffffff0fffffffffffffff +ffffffc3fffffffff0fffffcffc3ffc000003fc000ff0fcfcffcfffc0003ffff +0ffff3fffcf3f303ffc0cc0ffc0000003fff0ffffffc0ffffffc3f0003f00003 +fcfffcfffffffc3ff3ffff3fcffcff003fffffc000003cfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffffff +fffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffc00fffffffffffffffffffffffffffffff0fffffffffffffff +ffffffc3ffffffffc3f33ffcffcfffcf3f3f3fff3fffc3cfcffcfffff3ffffff +3f000003f0f3f033ff0fcfc3fffffff0ffffcfffffffc3fffffcffffffffff3c +000ffcffffffcccc000fff3fcfc0fffcffffffcf3f3f3cffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffffff +fffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fff0f03ffffffffffffffffffffffffffffff0fffffffffffffff +ffffffc3ffffffff0ff33ffcff0fffcf3f3f3ffc3fffffcfcffcfffff3fc00ff +3ffff3fff3f303f3fc3fcff3ffffffc3fffffffffffffffff3fcffffffffff3f +fcfffcffffffccfff3ffc000cffffffcfffc3fcf3f3f3cfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffffff +fffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffc3fffffffffffffff03fc303ffffffc00ff00f30c3f003fc +303ff003ffffffff3fffff3cff3cffcf3f3f3ffcfff3ffc00c00003ff3ffffff +3ffff3ffc3f033f3fcff0ff0ffffff0fffc3ffffcfffffffc3fcfffffffc3c3f +fcfffcffffff0cc00000f3f3c000fff003c0ffcf3f3f3cffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffffff +fffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffff0fffffffffffffffc30fc0c0ffffff0f0fc3c30c30fff0fc +0c0fc3c3fffffffc3fffff3cfc3c3fc000003ffcfff3ffcfcffff3ffc3ffffff +3ffff3ff3303f3f3f0ff3ffcfff0fc3ffff0ffff0fffffff0ffcffffffff0cfc +3cfffcffffff3cfffffff0c3ccfcffc3fc0fffc000003cfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffcffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffffffff +fffffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffcffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffff03fffffffffffffff0fc3c3f0fffffc3f0f0fc30c30fff0fc +3f0f0fc3fffffffcffffff3cfcff3fffcffffff0fff3ffcfcffff3ffcfffffff +3ffff3fff3f3f3f3f3fc3ffcfffc30fffffcfffc3ffffffc3ffcffffffffc0ff +0cfffcfffffffcfc000ffccfccfcff0fc0ffffffcffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffc000000000000 +000000000000000000000000000000000000000000000000003fffffffffffff +fffffffffffffffffffffffffc00000000000000000000000000000000000000 +000000000000000000000000ffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffff0fffffffffffffff0fc3c3f0fffffc3f0f00030c30f000fc +3f0f0fc3fffffffcfffffc3cf0ff0c00000003f3fff3ffcfcc00003fcfffffff +3ffff3fff3f3f3c3f3fcfffcffff03fffffffff0fffffff0fffcfffffffff3ff +ccfffcfffffffcfcffcfc000cc30ffff0cfffc00000000fcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffff3ffffffffffffffffffffffffcfffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffff +ffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffc3ffffffffffffff0fc3c3f0fffffc3f0f0fff0c30c3f0fc +3f0f0fc3fffffffcfffffcfcc3ffcfff3ff3ffc3fff3ffcfcffff3ff0fffffff +33fff3fff3f3f3fff3f0fff0ffffc3ffffffffc3ffffffc3fffcfcffffffc0ff +fcfffcffff3ffcfc000fff3fcf33fffc3cffffff3ff3fcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffff3ffffffffffffffffffffffffcfffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffff +ffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffc3ffffffffffffff0fc3c3f0fffffc3f0f0fff0c30c3f0fc +3f0f0fc3fffffffc3ffff0fc0ffcfffcffc3fffff003ffc00f0ff3ff3fffffff +0fffc3fff3f3f3fff3c3fff3fffff0ffffffff0ffffffc0ffffcfcffffffcc3f +fcfffcfffc3ffcfcffcfff3fcf03fff0fcfffffcffc3fcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffff3ffffffffffffffffffffffffcfffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffff +ffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fff0f03fc0fffffffffffc30fc3f0ffffff0c0fc3f30c30c3c0fc +3f0fc303ffffffff0ffffffcfff0fff0030fffffcff03fffffc3f3ff3ff3ffff +cfffcffff3f3fffffc0fff03fffffc3ffffff03fffffc0fffffccc3fffff0f0f +fcfffcfff0fffcfc000ff003cfcffff3fffffff0030ffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffff3ffffffffffffffffffffffffcfffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffff +ffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffc00ffc0ffffffffffff03fc3f0ffffffc30ff00f0c30f0303c +3f0ff0c3ffffffffc0ffffc03ff3fffff03fffffcfc30ffffff3f3fc3ff0ffff +ffff0ffff3f3fffcfffff03fffffff3fffff03fffff00ffffffc3f0000fc3fcf +fcffff3f03fffcfcffcfff3fcf03fff0fffffffff03ffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffff3ffffffffffffffffffffffffcfffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffff +ffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffc0ff00f0003ffff0300fffff00ffffffffff3fcfffc003f +fffc3ffff3f0fff0ffffffffffffffffffc03fffffffffffffff3ffffff0ffff +fcffffc03ffffcfcffcfff3fcf30fffc0000ffff0300fcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffff3ffffffffffffffffffffffffcfffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffff +ffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffff003ffc0fffffffffffffff03ffffffffff +fffffffff3fc0003ffffffffffffffffffffffffffffffffffffffffffffffff +c0fffffffffffcfcff0fff3fcc3c3fffffffff003ffc0cfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffff3ffffffffffffffffffffffffcfffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffff +ffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffff3ffffffffffffffffffffffffcfffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffff +ffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffffffffffffffffffffffffffffff3ff33ffffffffffffffff +fffffff3fffff3ffc3fffffffffff33ffffcfcffff3fffffffcfffccffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffcffffffffcffffffcfffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffff3ffffffffffffffffffffffffcfffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffff3ffffffffffffffffff +ffffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffffffffffffcfffffff3fff3fffff3ff33fffffffffcfffcff +fffffff0000cf3fff03ffffcfffcf33c00fcf0ffff3fffffffcfffccffffffff +fffffffffffffffffffffffffffffc00003fffffffffffffffffffffffffffff +fffffffffcffffffff03fffffcfffffffffffffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000 +000000000000000000ffffc00000000000000000000003ffffffffffffffffff +ffffffffffffffffffffffffffffffffc0000000000000000000000cffffc000 +00000000000000000003ffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffffffffffffcfffffff3fff3fffff3fffffffffffffcfffcff +fffffff3f3fcf3ffff03fffcfffcfffffffcf3ffff3ffcffffcffcffffffffff +ffffffffffffffffffff0000003ffffff0fffffc00fffffffffffffc3ffffff0 +fffffffffc00fffffc30fffffcfffffffffffffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff +fffffffffffffffffcffffcffffffffffffffffffffff3ffffffffffffffffff +ffffffffffffffffffffffffffffffffcffffffffffffffffffffffcffffcfff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffffffffffffcfffffff3fff3fffff3fffffffffffff0fffcff +ffffffc3f3fcf3fffffffff0fffcfff00030000fff3ffc3fffcffc3fffffffff +ffffffffffffffffffffffff0fffffff0fffffc0cc0ffc0000003fff0ffffffc +0ffffffc00fffffff0fc0fff0003f0ffffcff0fffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff +fffffffffffffffffcffffcffffffffffffffffffffff3ffffffffffffffffff +ffffffffffffffffffffffffffffffffcffffffffffffffffffffffcffffcfff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffffffffffffcfffffff3fff3ffc000003ffffffffff3f00000 +ffffffcff3fcf3fc0000fff3f00000fffff3f3ff0000ff0fc0003f0fffffffff +fffffffffffffffffffffffc3f33fffc3fffff0fcfc3fffffff0ffffcfffffff +c3fffffff3ffffff03ffc0fffcfffc3fff03cf3ffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff +ffe07ff3fffffffffcffffcfffffff81fff3fffffffff3ffffffffffffffffff +ffffffffffffffffffffffffffffffffcfffffff81fff3fffffffffcffffcfff +ffff81ffcffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffffffffffffcfffffff3fff3fffff3ff3ffffffffff3fffcff +ffffffcfc03cf3fffff3fff3fffcfffc00c3f3ffff3f3fcfffcfcfcfffffffff +fffffffffffffffffffffff0ff33fff0fffffc3fcff3ffffffc3ffffffffffff +fffff3fff3fff0f03c003c0ffcffff0fff30cf3ffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff +ffcff3f3fffffffffcffffcfffffff3fcff3fffffffff3ffffffffffffffffff +ffffffffffffffffffffffffffffffffcfffffff3ff3f3fffffffffcffffcfff +ffff3fcfcffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffffffffffffc03fffff3fff3fffff3ff3fcffffffff3fffcff +ffffff0fcf3cf3ffffcffff3fffcffffff33f3ffff3f3fc3ffcfcfc3ffffff0f +0cc30fc00ff0c3fffffffff3ffffff0ffffffcff0ff0ffffff0fffc3ffffcfff +ffffc3ffc00f03fffffffffffcffffcffc3c30fff3fffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff +ffcffff3fffffffffcffffcfffffff3ffff3fffffffff3ffffffffffffffffff +ffffffffffffffffffffffffffffffffcfffffff3ffff3fffffffffcffffcfff +ffff3fffcffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffffffffffffcf03ffff3fff3ffffc3ff3ff0000003f3fffcff +ffffff0fcf3cf3ffff3ffff3fffcfffffff0003ffc3f3ff3ff0fcff3ffffff0c +0c30c3ffc3f030ffffffffc3ffffc0000003f0ff3ffcfff0fc3ffff0ffff0fff +ffff0fff0ff03fffc00003ffc0fffffffcff0ffffc0000ffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff +ff00f3f3f90bfffffcffffcffffffc03cff3f90bfffff3ffffffffffffffffff +ffffffffffffffffffffffffffffffffcffffffc03f3f3f90bfffffcffffcfff +fffc03cfcfe42ffffff3ffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffffffffffffcff03fff3fff3ffffcfff3ffffffffff3fffcff +fffffccf033cf3fffcfffff3fffcfffc00f3f3fffcff3ff3ff3fcff3ffffff03 +cc30c3ffc3f0fc3fffffffcffffffffc3ffff3fc3ffcfffc30fffffcfffc3fff +fffc3ffc3f03ffffffffcfff3cfffffff0ffc3fffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff +ffcff3f3f6e7fffffcffffcfffffff3fcff3f6e7fffff3ffffffffffffffffff +ffffffffffffffffffffffffffffffffcfffffff3ff3f3f6e7fffffcffffcfff +ffff3fcfcfdb9ffffff3ffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffffffffffffcfffffffffff3ffffcfff3ffffffffff3fffcff +ffffffcc303cf3fff00ffff3fffcfffffff3f3fffcff3fffff3fcfffffffff0f +fc30c3c003f0fc3fffffffcffffffff0fffff3fcfffcffff03fffffffff0ffff +fff0fffffc33ffffffff3fff3cffffffc3fff0fffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff +ffcff3f3f3f3fffffcffffcfffffff3fcff3f3f3fffff3ffffffffffffffffff +ffffffffffffffffffffffffffffffffcfffffff3ff3f3f3f3fffffcffffcfff +ffff3fcfcfcfcffffff3ffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffffffffffffcffffffffffc3ffff0fff3ffffffffff3fc00ff +ffffffcffcfcf3ffc3cffff3fc00fffffff3f3fff0ff3ffffc3fcfffffffff0f +fc30c30fc3f0fc3fffffffcfffffffc3fffff3f0fff0ffffc3ffffffffc3ffff +ffc3fffff0f3fffffffcffff3cfffffffffffc3ffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff +ffcff3f3f003fffffcffffcfffffff3fcff3f003fffff3ffffffffffffffffff +ffffffffffffffffffffffffffffffffcfffffff3ff3f3f003fffffcffffcfff +ffff3fcfcfc00ffffff3ffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffffffffffffcffffffffffcfffff3ffc3ffffffffff3f3fc0f +ffffffcff0fff3ff0fcffff3f3fc0ffc00f0003ff3ff3ffffcffcfffffffff0f +fc30c30fc3f0fc3fffffffc3ffffffcffffff3c3fff3fffff0ffffffff0fffff +fc0fffffc3f3ffffc00003ff3cfffcffffffff0ffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff +ffcff3f3f2fffffffcffffcfffffff3fcff3f2fffffff3ffffffffffffffffff +ffffffffffffffffffffffffffffffffcfffffff3ff3f3f2fffffffcffffcfff +ffff3fcfcfcbfffffff3ffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffffffffffffcffffffffff0ffffc3ffcfffffffffff333fcc3 +ffc0ffcff3fff3fc3fcffff333fcc3fcfcf3f3ffc3fc3ffff0ff0fffffffff0f +fc30c30f03f0f0fffffffff0ffffffcffffffc0fff03fffffc3ffffff03fffff +c0ffffffcfffffffcffff3ffc0fffcffffffffc3fffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff +ffcff3f3f5fffffffcffffcfffffff3fcff3f5fffffff3ffffffffffffffffff +ffffffffffffffffffffffffffffffffcfffffff3ff3f3f5fffffffcffffcfff +ffff3fcfcfd7fffffff3ffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffffffffffffcfffffffffc3ffff0fffcfffffffffff0f3f0f0 +ffc0ffcfc3fff3f0ffc3fff0f3f0f0fcfcf3f3ff0ffcffffc3ff3fffffffff0f +fc30c3c0c0f003fffffffffc0fffffc3fffffffff03fffffff3fffff03fffff0 +0fffffffc3ffffffcffff3fffc3ff0fffffffffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff +ffcff3f3f907fffffcffffcfffffff3fcff3f907fffff3ffffffffffffffffff +ffffffffffffffffffffffffffffffffcfffffff3ff3f3f907fffffcffffcfff +ffff3fcfcfe41ffffff3ffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffffffffffffcffffffffc0ffffc3ff00fffffffffffcfc03ff +fffcffcf0ffff3fffff003fcfc03fffcfcf3f3ffffc0fffffff03fffffffffff +fffffffffff0ffffffffffffc0fffff03fffffffffffffffffffffc03fffffff +fffffffff00003ffcffff3ffff0003fffffffffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff +fffffffffffffffffcffffcffffffffffffffffffffff3ffffffffffffffffff +ffffffffffffffffffffffffffffffffcffffffffffffffffffffffcffffcfff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffc3ffcc3fff03fffffffffffffffffc00f0000fffffffffffffffffffffffff +fffffffffff0ffffffffffffffffffff00ffffffffffffffffffffffffffffff +ffffffffffffffffc00003fffffffffffffffffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff +fffffffffffffffffcffffcffffffffffffffffffffff3ffffffffffffffffff +ffffffffffffffffffffffffffffffffcffffffffffffffffffffffcffffcfff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff +fffffffffffffffffcffffcffffffffffffffffffffff3ffffffffffffffffff +ffffffffffffffffffffffffffffffffcffffffffffffffffffffffcffffcfff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffffffffffffffffffff3ffffffffff3fffffffffffffff3fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff +fffffffffffffffffcffffcffffffffffffffffffffff3ffffffffffffffffff +ffffffffffffffffffffffffffffffffcffffffffffffffffffffffcffffcfff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffff3ffffffff3ffffffffff3ffff3ffffffffff3fff +ff00003fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff +fffffffffffffffffcffffcffffffffffffffffffffff3ffffffffffffffffff +ffffffffffffffffffffffffffffffffcffffffffffffffffffffffcffffcfff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffff3ffffffff3fffff003c0003ff0ffffffffff3fff +fffff0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff +fffffffffffffffffcffffcffffffffffffffffffffff3ffffffffffffffffff +ffffffffffffffffffffffffffffffffcffffffffffffffffffffffcffffcfff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffff3ffffff0000ffff3f3ff3ffffcffffff00000000 +ffffc3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff +fffffffffffffffffcffffcffffffffffffffffffffff3ffffffffffffffffff +ffffffffffffffffffffffffffffffffcffffffffffffffffffffffcffffcfff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffff3fffffffcffffff3f3ff3ffffc3ffc3fffff3fff +ffff0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3ffff +fffffffffffffffffcffffcffffffffffffffffffffff3ffffffffffffffffff +ffffffffffffffffffffffffffffffffcffffffffffffffffffffffcffffcfff +fffffffffffffffffff3ffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffff3fffffffcff003f3f3ff3fffff3fc0ffffff3fff +fffc3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000 +000000000000000000ffffc00000000000000000000003ffffffffffffffffff +ffffffffffffffffffffffffffffffffc00000000000000000000000ffffc000 +00000000000000000003ffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffff3fffffffcffffff00300000fff0c0fffffc03fff +fff0003fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffcffffffcfffffffffffffffffcfffffff3ffffcfffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffcffffffcffffffffffffffff +fcffffffcfffffcfffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffff3fffffff0ffffff3f3fffcffffc0ffffff0f0fff +ffc3ff0fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff3fffffff3ffffffffffffffff3fffffff3ffffcfffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff3fffffff3fffffffffffffff +f3ffffffcfffffcfffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffff3fffffff3ffffff3f3fffcffff0fffffff3fcfff +ff0fffc3ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff3fffffff3ffffffffffffffff3fffffff3fffff3ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff3fffffff3fffffffffffffff +f3ffffffcffffff3ffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffff3fffffff3ffffff3f300000ffc3fffffff3fcfff +fc3ffff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff3fffffffcffffffffffffffff3fffffff3fffffcffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffff3fffffff3fffffffffffffff +f3ffffffcffffffcffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffff3fffcffc3ffffff3f3fffcfff0ffffffff0fcfff +fff03ff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fcffffffffcfffffffffffffffcffffffff3ffffff3fffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffcffffffffcfffffffffffffff +cfffffffcfffffff3fffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffff3fff0ffcfffffff003c3fcfff3ffffffffc00fff +ffcf0ff3ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fcfffffffff3ffffffffffffffcffffffff3ffffff3fffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffcffffffffcfffffffffffffff +cfffffffcfffffff3fffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffff3ffc3ffcffcffffffff0fcfff3ffffffffff3fff +ffcfcfc3ffc0ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +f3fffffffff3ffffffffffffff3ffffffff3ffffffcfffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffff3fffffffff3ffffffffffffff +3fffffffcfffffffcfffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffcfc0fff0ffc3fffffffcfcfff0fffffffffc3fff +ffc3cf0fffc0ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +f3fffffffff3ffffffffffffff3ffffffff3fffffff3ffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffff3fffffffff3ffffffffffffff +3fffffffcffffffff3ffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffffffffffff00ffff3fff000fffffffcfffc00003ffff0ffff +fff0003fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +f3fffffffffcffffffffffffff3ffffffff3fffffff3ffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffff3fffffffff3ffffffffffffff +3fffffffcffffffff3ffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffffffffffffffffffffffc0ffffffffffff03ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +cffffffffffcfffffffffffffcfffffffff3fffffffcffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffcffffffffffcfffffffffffffc +ffffffffcffffffffcffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +cfffffffffff3ffffffffffffcfffffffff3ffffffff3fffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffcffffffffffcfffffffffffffc +ffffffffcfffffffff3fffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffffffffffffffff33ffc3ffffffffffffffffffff +ffffffffc3fffffffffffffffc3ffffff3ffcffffcfffffffff3fff33fff0fff +ffffffffffff3fffffffffffffffffffffffffffffffffffffffffffffffffff +ffffff3fffffff3ffffffffffcfffff3fffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +cfffffffffff3ffffffffffffcfffffffff3ffffffffcfffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffcffffffffffcfffffffffffffc +ffffffffcfffffffffcfffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffffffffffffffffffff3ffff33fff03fffffcfff3ffffffff0 +0000fffff03fffffffffffffff03fffff3ffcffffcff0003fff3fff33fffc3f3 +fc00000003ff3fffffffffffffff3fff3fffffffffffffffffffffffffffffff +ffffff3fffffff3ffffff3fffcfffff3fffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +3fffffffffffcffffffffffff3fffffffff3ffffffffcfffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff3fffffffffff3ffffffffffff3 +ffffffffcfffffffffcfffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffffffffffffffffffff0ffffffffff03ffffcfff3fffffffff +ffc3ffffff03fffcfffffffffff03ffff3c0000fc00f3ff3fff3ff3ffffff3f3 +ffff3f3fffff3ffc3ffffc00ffff3fff3fffffffffffffffffffffffffffffff +ffffff003fffff3ffcfff3fffcfffff3ffffff3ffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffff3fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffffffffffffffffffffcffffffffffffffffcfff3fffffffff +fc3ffffffffffffcffff3ffffffffffff0ffcffffcff3ff3fff3ff0ffffcffc3 +ffc000003fc000ff0fffc0cc0ffc3fff3ffffffffffff0ffffffffffffffffff +ffff003fffffff3ffc3fc3fffcfff0000fffff3fffcffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffff0ffffffffffffffffc3ffc3fffffffffffcfff3fffffffff +f0fffffffffffffcffff0fffffffffff3330003ffcff3f03f0000fc3fffcffcf +ffcf3f3f3fff3fffc3ff0fcfc3fcfc00003ffffffffff0ffffffffffffffffff +fffffcffffff0000ff0fcfc00000ffcfffffff3fffc3fcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffc0fffffffffffffffff3fc0fffc0000ffc00000003fffffff +c3fffffc0000fffcffffc3ffc0000fff33ffcfff00033ffffff3f3f3fffcff0f +ffcf3f3f3ffc3ffffffc3fcff3fcffff3ffffffffffff0ffffffffffffffffff +fffffcfffc3fff3f3fcfcffffcffffcff003ff3ffff0fcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0 +03fffffffffc00ffffffffff003fffffff003fffffff003fffffffffffffffff +fffffffffffffffffffffffffffffffffffff003fffffffff003ffffffffff00 +3ffffffc00ffffffff003fffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffff30fffffffffffffffff0c0ffffffffc3fffcfff3ffffffffc +3ffffffffffc3ffcfffff3ffffffc3fc33000003cfcf0003fff3f3f0ff3cff3c +ffcf3f3f3ffcfff3fffcff0ff0fcffff3fffffffc30ff0c0ffc0ff0c0ffc03ff +fffff003c0ffff3f3fc3cffffcffffcfffffff3ffffcfcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0f +fc3fffffffc3ff0ffffffff0ffc3fffff0ffc3fffff0ffc3ffffffffffffffff +ffffffffffffffffffffffffffffffffffff0ffc3fffffff0ffc3ffffffff0ff +c3ffffc3ff0ffffff0ffc3ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffcf0fffffffffffffffffc0ffffffffff3fffcfff3fffffff00 +00000fffffff3ffcfffff0fffffff3fcf3ffffffc30f33f3ffc3f3fcff3cfc3c +3fc000003ffcfff3fff0ff3ffcfcffff3fffffffc0c3f0303f0c3f0303f0f0ff +ffffc3fc0ffffc3f3ff3cffffcffff0fffffff3ffffc3cffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcff +ffcfffffff3ffff3ffffffcffffcffffcffffcffffcffffcffffffffffffffff +fffffffffffffffffffffffffffffffffffcffffcffffffcffffcfffffffcfff +fcffff3ffff3ffffcffffcffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fff3f0fffffffffffffffff0fffffffffff3fffcfff3fffffffff +f0ffffffffff3ffcfffffcfffffff3fff3f0003ff33f33f3ffcff3fcff3cfcff +3fffcffffff0fff3fff3fc3ffcfcffff3fffffffc3f0f0fc3c3f0f0fc3c3f0ff +ffff0fc0fffffcff3ff3cffffcffff3fffffff3fffff3cfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcff +ffcfffffff3ffff3ffffffcffffcffffcffffcffffcffffcffffffffffffffff +fffffffffffffffffffffffffffffffffffcffffcffffffcffffcfffffffcfff +fcffff3ffff3ffffcffffcffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fff0003fffffffffffffffc3fffffffffff3fffcfff3fffffffff +c3ffffffffff3ffcfffffcfffffff3fff3f3ff3f000330c3ffcff3fffc3cf0ff +0c00000003f3fff3fff3fcfffcfcffff3fffffffc3f0f0fc3c3f0f0fc3c000ff +ffffff0cfffffcff3fffcffffcffff3fffffff3fffff3cffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcff +ffcffffffc3ffff3ffffffcffffcffffcffffcffffcffffc3fffffffffffffff +fffffffffffffffffffffffffffffffffff0ffffcffffffcffffcfffffffcfff +fcffff3ffff0ffffcffffcffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fff0003fffffffffffffff0fffffffffffc3fffcff0ffffffffff +0ffffffffffc3ffc3cfffcffffffc3fff3f0003ffcff3ccfff0ff3fffcfcc3ff +cfff3ff3ffc3fff3fff3f0fff0fcff003fffffffc3f0f0fc3c3f0f0fc3c3ffff +fffffc3cfffff0ff3fffccfffcfffc3fffffff0f3fff3cfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0f +fc0ffffffcc3ff03ffffffc0ffc0ffffc0ffc0ffffc0ffc33fffffffffffffff +fffffffffffffffffffffffffffffffffff30ffc0ffffffc0ffc0fffffffc0ff +c0ffff03ff0cffffc0ffc0ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffff0ffffffffffffffff3fffffffffff0ffffcfffffffffffff +3ffffffffff0ffff30ffffffffff0ffff3f3ff3ffcff3c0fff3ff3fff0fc0ffc +fffcffc3fffff003fff3c3fff3fcfcff03ffffffc3f0f0fc3c3f0f0fc3c3ffff +fffff0fcfffff3ff3fffc3fff0fffcffffffffcc3ffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf0 +03cffffffcfc00f3ffffffcf003cffffcf003cffffcf003f3fffffffffffffff +fffffffffffffffffffffffffffffffffff3f003cffffffcf003cfffffffcf00 +3cffff3c00fcffffcf003cffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffff0ffc0ffffffffffff3ffffffffffc3ffffcfffffffc0ffff +3fffffffffc3ffff03fffffffffc3ffff3f0003fc00f3f3ffc3fc3fffffcfff0 +fff0030fffffcff03ffc0fff03fcccff30ffffffc3c3f0fc3f0c3f0fc3f0fcff +fffff3ffffffc3fc3ffff3fff3fffcffcfffffc0fffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcff +ffcffffffcfffff3ffffffcffffcffffcffffcffffcfffff3fffffffffffffff +fffffffffffffffffffffffffffffffffff3ffffcffffffcffffcfffffffcfff +fcffff3ffffcffffcffffcffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffff0ffc0ffffffffffff0fffffffffc0ffffff3ffffffc0ffff +0ffffffffc0fffffcfffffffffc0fffff3f3ff3ffcff3c0ff0ffcfffffc03ff3 +fffff03fffffcfc30ffffff03ffc3cfc3c3fffffc00ff0fc3fc0ff0fc3fc03ff +fffff0ffffff0ffcffffffffc3fff0ffc3fffff3fffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcff +ffcffffffcfffff3ffffffcffffcffffcffffcffffcfffff3fffffffffffffff +fffffffffffffffffffffffffffffffffff3ffffcffffffcffffcfffffffcfff +fcffff3ffffcffffcffffcffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffffffffffffffffffffc00003fff00fffffffc0003fffcffff +c0ffffff00fffffffffffffff00ffffff3f3ff3ffcff3cc3fffc0ffff00f0003 +ffff0300fffff00fffffffffffff3f00ffffffffc3ffffffffffffffffffffff +fffffc0000ffffc0ffffffff0ffff3fff000fffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcff +ffcffffffcfffff3ffffffcffffcffffcffffcffffcfffff3fffffffffffffff +fffffffffffffffffffffffffffffffffff3ffffcffffffcffffcfffffffcfff +fcffff3ffffcffffcffffcffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffffffffffffffffffffffffffffffc3ffff +fc03fffffffffffffffffffffffffffff3f3fc3ffcff30f0ffffffffffffffff +ff003ffc0fffffffffffffffffffffffffffffffc3ffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcff +ffcffffffcfffff3ffffffcffffcffffcffffcffffcfffff3fffffffffffffff +fffffffffffffffffffffffffffffffffff3ffffcffffffcffffcfffffffcfff +fcffff3ffffcffffcffffcffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcff +ffcffffffcfffff3ffffffcffffcffffcffffcffffcfffff3fffffffffffffff +fffffffffffffffffffffffffffffffffff3ffffcffffffcffffcfffffffcfff +fcffff3ffffcffffcffffcffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffff3fffffffffffffffffffffffffffffffffffffff +ffffffffffffffffff3fffffffff3ffffffff3ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff3fff33ffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf0 +03cffffffcfc00f3ffffffcf003cffffcf003cffffcf003f3fffffffffffffff +fffffffffffffffffffffffffffffffffff3f003cffffffcf003cfffffffcf00 +3cffff3c00fcffffcf003cffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffff3fffffffcfffffffc0000fffffffffffffffffff +ffffffffffffffffff3fffffffff3fffc3fcf3ffffcfffffffffffffffffffff +ffffffffffffffffffffffffffffffff3fff33ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffcff0fffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0f +fc0ffffffcc3ff03ffffffc0ffc0ffffc0ffc0ffffc0ffc33fffffffffffffff +fffffffffffffffffffffffffffffffffff30ffc0ffffffc0ffc0fffffffc0ff +c0ffff03ff0cffffc0ffc0ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffff3fffffffcffffffffffc3fffffffffffffffffff +ffffffffffffffffff003ffc000f3ffff0fcf3ffffcffffffc0000003fffffff +ffffffffffffffffffffffffffffffff3ff3ffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffc3fc3ffcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcff +ffcffffffc3ffff3ffffffcffffcffffcffffcffffcffffc3fffffffffffffff +fffffffffffffffffffffffffffffffffff0ffffcffffffcffffcfffffffcfff +fcffff3ffff0ffffcffffcffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffc000fc3fffcffffffffff0fffffffffffff0ffffff +ffffffffffffffff003fffffffcf0003fcf00003ffcffffffffffc3fffffffff +fff0fffffffffffffffffffc3fffffff3ff0fffffff0fffffffffffffffffffc +3ffffffffffffffffffff0fffffffffffffffff3ff3ffcfcfcfcfcfcfcc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcff +ffcfffffff3ffff3ffffffcffffcffffcffffcffffcffffcffffffffffffffff +fffffffffffffffffffffffffffffffffffcffffcffffffcffffcfffffffcfff +fcffff3ffff3ffffcffffcffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffff3fff0fffcfffffffffc3fffffffffffff0ffffff +fffffffffffffffffcffffffffcf3f3ffff3f3ffffcffffffffff0ffffffffff +fff0fffffffffffffffffffc3fffff0000fc3ffffff0fffffffffffffffffffc +3fffffffffffffff0ffff0fffffffffffffffff0f000fcffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffcff +ffcfffffff3ffff3ffffffcffffcffffcffffcffffcffffcffffffffffffffff +fffffffffffffffffffffffffffffffffffcffffcffffffcffffcfffffffcfff +fcffff3ffff3ffffcffffcffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffff3fffc3ffcfffffffff0ffffffffffffff0ffffff +fffffffffffffffffcfffc3fffcc3f3fffc3f3ffffcfffffffffc3ffffffffff +fff0fffffffffffffffffffc3fffffff3f3f3ffffff0fffffffffffffffffffc +3fffffffffffffff0ffffffffffffffffffffffc03ff3cfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0f +fc3fffffffc3ff0ffffffff0ffc3fffff0ffc3fffff0ffc3ffffffffffffffff +ffffffffffffffffffffffffffffffffffff0ffc3fffffff0ffc3ffffffff0ff +c3ffffc3ff0ffffff0ffc3ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffff3ffff3ffcffffffffc000fffffffc30ff0c0ffc0 +ff0c0ffc03fffffff003c0ff000ccf3ffffff3ffffcfffffffffcfffffffffc3 +0ff0c0ffc0ff0c0ffc03ff003fffffff3f3f0ffffff0c3ff0f0ff03fc00fff00 +3fc03f003ff003ff0ffc00ff0c0ffc00ffffff00ffff3cffcfcfcfcfcfc03fff +fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0 +03fffffffffc00ffffffffff003fffffff003fffffff003fffffffffffffffff +fffffffffffffffffffffffffffffffffffff003fffffffff003ffffffffff00 +3ffffffc00ffffffff003fffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffffffffff03fffffffcffffffff0ffc3ffffffc0c3f0303f0c +3f0303f0f0ffffffc3fc0fff3ff0cc3f00c00000ffcfffffffff0fffffffffc0 +c3f0303f0c3f0303f0f0fc3c3ffffffc3f3fcffffff030ff0c0fc30fffc3fc3c +3f0fcfff0fc3fcf0003ff0ff0303f0f0fffff03c3ffc3cfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffcf3fffffffcfffffffc3fff0ffffffc3f0f0fc3c3f +0f0fc3c3f0ffffff0fc0ffff3fffccfffcffffffffcfffffffff3fffffffffc3 +f0f0fc3c3f0f0fc3c3f0f0fc3ffffffcff3fcffffff0fc3f03cf0fc3ffc3f0fc +3c3fffff0fc3ffff0ffff0ff0fc3c3f0ffffffff3fc0fcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffcf3fffffffcfffffff0ffffcffffffc3f0f0fc3c3f +0f0fc3c000ffffffff0cffff3fffc0fffcfc000fffcfffffffff3fffffffffc3 +f0f0fc3c3f0f0fc3c000f0fc3ffffffcff3ffffffff0fc3f0fff0fc3c003f0fc +3c3fff000fc00fff0ffff0ff0fc3c3f0ffffffff3ffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffcf3fffffffcffff3fffffffcffffffc3f0f0fc3c3f +0f0fc3c3fffffffffc3cffff3ffff3fffcfcffcfffcffff3ffff3fffffffffc3 +f0f0fc3c3f0f0fc3c3fff0fc3ffffff0ff3ffffffff0fc3f0fff0fc30fc3f0fc +3c3ffc3f0ffc00ff0ffff0ff0fc3c3f0ffffffff0ffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffcf3fff3fffcfffc3fffffff0ffffffc3f0f0fc3c3f +0f0fc3c3fffffffff0fcffff3fcfc0fffcfcffcfffcfffc3ffff0fffffffffc3 +f0f0fc3c3f0f0fc3c3fff0fc3ffffff3ff3ffffffff0fc3f0fff0fc30fc3f0fc +3c3ffc3f0ffff0ff0ffff0ff0fc3f0c0ffffffffcffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffffffffff03fff3fffcfff0fffffffc3fff03fc3c3f0fc3f0c +3f0fc3f0fcfffffff3ffffff0fcfccfffcfcffcfffcfff0fffffc3ffffffffc3 +c3f0fc3f0c3f0fc3f0fcfc303fffffc3fc3ffffffff0f0ff0fffc30f0f03fc30 +3f0fcc3c0fcff0ff0ffff0ff0fc3fc30ffffffffcffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffff0ffc3ffff3f03ffffffc0ffff03fc00ff0fc3fc0 +ff0fc3fc03fffffff0ffffffc00f0c3ff0fc000ffff3f03ffffff03fffffffc0 +0ff0fc3fc0ff0fc3fc03ff0c3fffff0ffcfffffffff003ff0ffff03fc0c0ff0c +3fc03f0303f003ffc03ff0ff0fc3fff0ffffffffc3fffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffc000fffffc03ffffff00ffffff3fc3ffffffffff +fffffffffffffffffc0000fffffc3f0fc33ffffffffc03ffffffff03ffffffc3 +ffffffffffffffffffffffffffffffffc0ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffc3c3fffffffff3fffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffffffffffffffffffffffffffffffffffff0ffc3ffffffffff +fffffffffffffffffffffffffff0ffc30fc00000ffffffffffffffffffffffc3 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffff00ffffffffff3fffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffffffffffcfff3ffffff3fffffffffffffffffffffffffffff +fffffff33ffcfffccfffffff33ffffffffffffffffffffffffffffffffffffcf +fffffcffffffffffffffffffffffffffffffffffffcffffffc3fffffffffffff +ffff3ffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffccfff3ffffff3fffffffffffffffffffffffffffff +ffcfff333ffcfffccff3ffff33ffffffffff3ffffffffffffffff00003ffffcf +fffffcf00000fff3ffffff0000000ffc0000ffffffcfffffff03fffff3ffffff +ffff3fffff00003ffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffffccfc0003f0000000ffff003fffffffffffffffffff +ffcfff3ffffcffcffff0fffffffc00003fff3fffffff3fffffffffff0fffffcf +ff3ffcf3cf3cfff3ffffff3fffffcfffffc3ffffffcffffffff03ffff3ffffff +ffff3ffffffff0fffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffccfff3fff3fffffcfff03303fff0000fffffffffff +ffcfff3ffffcffc3fffcfffffffffffffffc3f0003ff3fffcffffffc3fffffcf +ff0ffcf3cf3cfff3ffffff3fffffcfffff0fffffffcfffffffffffffc3f0003f +00000000ffffc3fffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffff000ff3fff3fffffcffc3f3f0ffffffcfffffffffff +c00000003c0003f0fffc3ffc3ffffffffffcffffffff3fffc3fffff0ffffc000 +3fc3c00f0f3ffff3ffffff3fffffcffffc3fffffffc003ffffffffffcfffffff +ffff3fffffff0ffffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffff3cfff3ffff00000fff0ff3fcffffffcfffffffffff +ffcfff3ffffcfcfcffff3fc0fffffffffffcffffffff3ffff0ffffc3ffffffcf +cff3fcfc3f003ff3ffffff3f000fcffff0ffffffffcfffffc0000fffcfffffff +ffff3ffffffc3ffffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffffffffffcf00000ffff3fffff3fc3fc3fffffcfffcfffffff +ffcfff3ffffcfcfc3fff0c0ffffffffffffcffffffff3ffffcffff0003ffffcf +cff0fcf0fffffff3ffffff3f3fcfcfffc000ffffffcfffffffffc3ffcfffffff +ffc03ffffff0003ffffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030ffffffffffffcffffcfffff3ffffc3fcfff3fffffcffff0000003 +ffcfff3ffff0fcff3fffc0fffffffffffffcffffffff3ffffc3ffc3ff0ffff0f +cffcfcfffcfffff3ffffff3f3fcfcfff0ffc3fffffcffffffffff3ffcfffffff +ff0f0fffffc3ff0ffffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300ffffffffffffc0fffcfff3f3ffffcff0fff3fffffcfffffffffff +ffcfff3ffff3fcff3fff0ffffffffffffffcffffffff3fffff3ff0fffc3fff3f +cffcfc0ffcfffff3ffffff3f3fcfcffc3fff0fffffcffffffffff3ffcfffffff +ff3fcfffff0fffc3fffffffffffffffffffffffffffffcfcfcfcfcfcfcc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00cfcfcfcfcfcfc +c3f00c03030fffffffffffc0f00000ff3f000ffcff3fff3fffffcfffffffffff +fffffc3ffff3fcfffffc3ffffffffffffffcffffffff3fffff3fc3ffff3fff3f +cfffc0f000003ff3ffffff3f3fcfcff0ffffcfffffcffffffffff3ffcfffffff +ff3fcffffc3ffff3fffffffffffffffffffffffffffffcffcfcfcfcfcfc03fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffff00fcfcfcfcffccf +f3f00c30300fffffffffff0cffffcfff3f3ffffcfc3ffc3fffffcfffffffffff +fffffcffffc3fcfffff0fffffff3fffffffcfcffffff0f3fff3fff03ff3ffc3f +cffffcffcccffff3fffcff3f000fcfffc0ffcfff000fffffffffc3ffcfcfffff +ff0fcffffff03ff3fffffffffffffffffffffffffffffcfcfcfcfcfcfcc00000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000cfcfcfcfcfcfc +c3f00c03030ffffffffffffcfc3fcfff3f3ffffcf0fffcffffffcfffffffffff +fffff0ffffcffcfffff3fffffff0fffffffcfcffffffcc3ffffffcf0ff3ffcff +cffffcffcccffff3fff0ff3fffffcfff3c3fcffcffc0ffffffff0fffcfcfffff +ffc00fffffcf0ff3fffffffffffffffffffffffffffffcffcfcfcfcfcfc00000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000fcfcfcfcffccf +f3f00c30300ffffffffffffcff0fcffc0f3fffff03ffc0ff0000000fffffffff +ffffc3ffff0ff0fffff3fffffffc0ffffffccc3fffffc0fffffffcfcfc3ff0ff +0ffffcff0cc3fff3ffc3ff3fffffcfff3f3f0ffcffcc0ffffffc3fffccc3ffff +ffff3fffffcfcfc3ffc0fffffffffffffffffffffffffcfcfcfcfcfcfcc00000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000cfcfcfcfcfcfc +c3f00c03030ffffffffffffcffcfcffcc33ffffffffc0fffffffffffffffffff +ffff0ffffc3ff3fffff0ffffffffc0000ffc3f0000fff3fffffffc3cf0ffc3ff +3ffffcfc3cf0fffcfc0fff3fffffcfff0f3c3ffcff0fc3ffffc0ffffc3f0000f +fffc3fffffc3cf0fffc0fffffffffffffffffffffffffcffcfcfcfcfcfc00000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000fcfcfcfcffccf +f3f00c30300ffffffffffffcffffcff0f03fffffffffffffffffffffffffffff +fff03fffffff03fffffc00003fffffffffff3fffffffffffffffff0003fffff0 +3ffffcf0fcfc3fff00ffff0000000fffc000ffff003ffffff00ffffff3ffffff +fff0fffffff0003ffffffffffffffffffffffffffffffcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +c3f00c03030ffffffffffffcfffc0fc3ff00003fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffff0fffcffffffffffffffffffffffffffffffffffffffffffffffffffffff +ff03fffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcffccf +f3f00c30300fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +c3f00c03030fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcffccf +f3f00c00000fffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +c3f0000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000ffcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcffccf +f3f0000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000fcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +c3f0000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000ffcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcffccf +f3f0000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000fcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +c3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcffccf +f3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +c3ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcffcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcffccf +f000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000fcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfccffcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcffccf +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfccffcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcffccf +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfc +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfccffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffccf +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffffffcfc +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcc000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000cf +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +fcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfc +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +cfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcf +showpage +%%BoundingBox: -97 96 709.40 695.04 diff --git a/sys/doc/8½/mkfile b/sys/doc/8½/mkfile new file mode 100644 index 000000000..d78cf404e --- /dev/null +++ b/sys/doc/8½/mkfile @@ -0,0 +1,9 @@ +8½.ps + ../cleanps 8½.ps + +8½.html:D: 8½.ms + tbl 8½.ms | htmlroff -ms -mhtml >8½.html + diff --git a/sys/doc/9.ms b/sys/doc/9.ms new file mode 100644 index 000000000..25497f8fe --- /dev/null +++ b/sys/doc/9.ms @@ -0,0 +1,2330 @@ +.HTML "Plan 9 from Bell Labs" +.TL +Plan 9 from Bell Labs +.AU +Rob Pike +Dave Presotto +Sean Dorward +Bob Flandrena +Ken Thompson +Howard Trickey +Phil Winterbottom +.AI +.MH +USA +.SH +Motivation +.PP +.FS +Appeared in a slightly different form in +.I +Computing Systems, +.R +Vol 8 #3, Summer 1995, pp. 221-254. +.FE +By the mid 1980's, the trend in computing was +away from large centralized time-shared computers towards +networks of smaller, personal machines, +typically UNIX `workstations'. +People had grown weary of overloaded, bureaucratic timesharing machines +and were eager to move to small, self-maintained systems, even if that +meant a net loss in computing power. +As microcomputers became faster, even that loss was recovered, and +this style of computing remains popular today. +.PP +In the rush to personal workstations, though, some of their weaknesses +were overlooked. +First, the operating system they run, UNIX, is itself an old timesharing system and +has had trouble adapting to ideas +born after it. Graphics and networking were added to UNIX well into +its lifetime and remain poorly integrated and difficult to administer. +More important, the early focus on having private machines +made it difficult for networks of machines to serve as seamlessly as the old +monolithic timesharing systems. +Timesharing centralized the management +and amortization of costs and resources; +personal computing fractured, democratized, and ultimately amplified +administrative problems. +The choice of +an old timesharing operating system to run those personal machines +made it difficult to bind things together smoothly. +.PP +Plan 9 began in the late 1980's as an attempt to have it both +ways: to build a system that was centrally administered and cost-effective +using cheap modern microcomputers as its computing elements. +The idea was to build a time-sharing system out of workstations, but in a novel way. +Different computers would handle +different tasks: small, cheap machines in people's offices would serve +as terminals providing access to large, central, shared resources such as computing +servers and file servers. For the central machines, the coming wave of +shared-memory multiprocessors seemed obvious candidates. +The philosophy is much like that of the Cambridge +Distributed System [NeHe82]. +The early catch phrase was to build a UNIX out of a lot of little systems, +not a system out of a lot of little UNIXes. +.PP +The problems with UNIX were too deep to fix, but some of its ideas could be +brought along. The best was its use of the file system to coordinate +naming of and access to resources, even those, such as devices, not traditionally +treated as files. +For Plan 9, we adopted this idea by designing a network-level protocol, called 9P, +to enable machines to access files on remote systems. +Above this, we built a naming +system that lets people and their computing agents build customized views +of the resources in the network. +This is where Plan 9 first began to look different: +a Plan 9 user builds a private computing environment and recreates it wherever +desired, rather than doing all computing on a private machine. +It soon became clear that this model was richer +than we had foreseen, and the ideas of per-process name spaces +and file-system-like resources were extended throughout +the system\(emto processes, graphics, even the network itself. +.PP +By 1989 the system had become solid enough +that some of us began using it as our exclusive computing environment. +This meant bringing along many of the services and applications we had +used on UNIX. We used this opportunity to revisit many issues, not just +kernel-resident ones, that we felt UNIX addressed badly. +Plan 9 has new compilers, +languages, +libraries, +window systems, +and many new applications. +Many of the old tools were dropped, while those brought along have +been polished or rewritten. +.PP +Why be so all-encompassing? +The distinction between operating system, library, and application +is important to the operating system researcher but uninteresting to the +user. What matters is clean functionality. +By building a complete new system, +we were able to solve problems where we thought they should be solved. +For example, there is no real `tty driver' in the kernel; that is the job of the window +system. +In the modern world, multi-vendor and multi-architecture computing +are essential, yet the usual compilers and tools assume the program is being +built to run locally; we needed to rethink these issues. +Most important, though, the test of a system is the computing +environment it provides. +Producing a more efficient way to run the old UNIX warhorses +is empty engineering; +we were more interested in whether the new ideas suggested by +the architecture of the underlying system encourage a more effective way of working. +Thus, although Plan 9 provides an emulation environment for +running POSIX commands, it is a backwater of the system. +The vast majority +of system software is developed in the `native' Plan 9 environment. +.PP +There are benefits to having an all-new system. +First, our laboratory has a history of building experimental peripheral boards. +To make it easy to write device drivers, +we want a system that is available in source form +(no longer guaranteed with UNIX, even +in the laboratory in which it was born). +Also, we want to redistribute our work, which means the software +must be locally produced. For example, we could have used some vendors' +C compilers for our system, but even had we overcome the problems with +cross-compilation, we would have difficulty +redistributing the result. +.PP +This paper serves as an overview of the system. It discusses the architecture +from the lowest building blocks to the computing environment seen by users. +It also serves as an introduction to the rest of the Plan 9 Programmer's Manual, +which it accompanies. More detail about topics in this paper +can be found elsewhere in the manual. +.SH +Design +.PP +The view of the system is built upon three principles. +First, resources are named and accessed like files in a hierarchical file system. +Second, there is a standard protocol, called 9P, for accessing these +resources. +Third, the disjoint hierarchies provided by different services are +joined together into a single private hierarchical file name space. +The unusual properties of Plan 9 stem from the consistent, aggressive +application of these principles. +.PP +A large Plan 9 installation has a number of computers networked +together, each providing a particular class of service. +Shared multiprocessor servers provide computing cycles; +other large machines offer file storage. +These machines are located in an air-conditioned machine +room and are connected by high-performance networks. +Lower bandwidth networks such as Ethernet or ISDN connect these +servers to office- and home-resident workstations or PCs, called terminals +in Plan 9 terminology. +Figure 1 shows the arrangement. +.KF +.PS < network.pic +.IP +.ps -1 +.in .25i +.ll -.25i +.ps -1 +.vs -1 +.I "Figure 1. Structure of a large Plan 9 installation. +CPU servers and file servers share fast local-area networks, +while terminals use slower wider-area networks such as Ethernet, +Datakit, or telephone lines to connect to them. +Gateway machines, which are just CPU servers connected to multiple +networks, allow machines on one network to see another. +.ps +1 +.vs +1 +.ll +.25i +.in 0 +.ps +.sp +.KE +.PP +The modern style of computing offers each user a dedicated workstation or PC. +Plan 9's approach is different. +The various machines with screens, keyboards, and mice all provide +access to the resources of the network, so they are functionally equivalent, +in the manner of the terminals attached to old timesharing systems. +When someone uses the system, though, +the terminal is temporarily personalized by that user. +Instead of customizing the hardware, Plan 9 offers the ability to customize +one's view of the system provided by the software. +That customization is accomplished by giving local, personal names for the +publicly visible resources in the network. +Plan 9 provides the mechanism to assemble a personal view of the public +space with local names for globally accessible resources. +Since the most important resources of the network are files, the model +of that view is file-oriented. +.PP +The client's local name space provides a way to customize the user's +view of the network. The services available in the network all export file +hierarchies. +Those important to the user are gathered together into +a custom name space; those of no immediate interest are ignored. +This is a different style of use from the idea of a `uniform global name space'. +In Plan 9, there are known names for services and uniform names for +files exported by those services, +but the view is entirely local. As an analogy, consider the difference +between the phrase `my house' and the precise address of the speaker's +home. The latter may be used by anyone but the former is easier to say and +makes sense when spoken. +It also changes meaning depending on who says it, +yet that does not cause confusion. +Similarly, in Plan 9 the name +.CW /dev/cons +always refers to the user's terminal and +.CW /bin/date +the correct version of the date +command to run, +but which files those names represent depends on circumstances such as the +architecture of the machine executing +.CW date . +Plan 9, then, has local name spaces that obey globally understood +conventions; +it is the conventions that guarantee sane behavior in the presence +of local names. +.PP +The 9P protocol is structured as a set of transactions that +send a request from a client to a (local or remote) server and return the result. +9P controls file systems, not just files: +it includes procedures to resolve file names and traverse the name +hierarchy of the file system provided by the server. +On the other hand, +the client's name space is held by the client system alone, not on or with the server, +a distinction from systems such as Sprite [OCDNW88]. +Also, file access is at the level of bytes, not blocks, which distinguishes +9P from protocols like NFS and RFS. +A paper by Welch compares Sprite, NFS, and Plan 9's network file system structures [Welc94]. +.PP +This approach was designed with traditional files in mind, +but can be extended +to many other resources. +Plan 9 services that export file hierarchies include I/O devices, +backup services, +the window system, +network interfaces, +and many others. +One example is the process file system, +.CW /proc , +which provides a clean way +to examine and control running processes. +Precursor systems had a similar idea [Kill84], but Plan 9 pushes the +file metaphor much further [PPTTW93]. +The file system model is well-understood, both by system builders and general users, +so services that present file-like interfaces are easy to build, easy to understand, +and easy to use. +Files come with agreed-upon rules for +protection, +naming, +and access both local and remote, +so services built this way are ready-made for a distributed system. +(This is a distinction from `object-oriented' models, where these issues +must be faced anew for every class of object.) +Examples in the sections that follow illustrate these ideas in action. +.SH +The Command-level View +.PP +Plan 9 is meant to be used from a machine with a screen running +the window system. +It has no notion of `teletype' in the UNIX sense. The keyboard handling of +the bare system is rudimentary, but once the window system, 8½ [Pike91], +is running, +text can be edited with `cut and paste' operations from a pop-up menu, +copied between windows, and so on. +8½ permits editing text from the past, not just on the current input line. +The text-editing capabilities of 8½ are strong enough to displace +special features such as history in the shell, +paging and scrolling, +and mail editors. +8½ windows do not support cursor addressing and, +except for one terminal emulator to simplify connecting to traditional systems, +there is no cursor-addressing software in Plan 9. +.PP +Each window is created in a separate name space. +Adjustments made to the name space in a window do not affect other windows +or programs, making it safe to experiment with local modifications to the name +space, for example +to substitute files from the dump file system when debugging. +Once the debugging is done, the window can be deleted and all trace of the +experimental apparatus is gone. +Similar arguments apply to the private space each window has for environment +variables, notes (analogous to UNIX signals), etc. +.PP +Each window is created running an application, such as the shell, with +standard input and output connected to the editable text of the window. +Each window also has a private bitmap and multiplexed access to the +keyboard, mouse, and other graphical resources through files like +.CW /dev/mouse , +.CW /dev/bitblt , +and +.CW /dev/cons +(analogous to UNIX's +.CW /dev/tty ). +These files are provided by 8½, which is implemented as a file server. +Unlike X windows, where a new application typically creates a new window +to run in, an 8½ graphics application usually runs in the window where it starts. +It is possible and efficient for an application to create a new window, but +that is not the style of the system. +Again contrasting to X, in which a remote application makes a network +call to the X server to start running, +a remote 8½ application sees the +.CW mouse , +.CW bitblt , +and +.CW cons +files for the window as usual in +.CW /dev ; +it does not know whether the files are local. +It just reads and writes them to control the window; +the network connection is already there and multiplexed. +.PP +The intended style of use is to run interactive applications such as the window +system and text editor on the terminal and to run computation- or file-intensive +applications on remote servers. +Different windows may be running programs on different machines over +different networks, but by making the name space equivalent in all windows, +this is transparent: the same commands and resources are available, with the same names, +wherever the computation is performed. +.PP +The command set of Plan 9 is similar to that of UNIX. +The commands fall into several broad classes. Some are new programs for +old jobs: programs like +.CW ls , +.CW cat , +and +.CW who +have familiar names and functions but are new, simpler implementations. +.CW Who , +for example, is a shell script, while +.CW ps +is just 95 lines of C code. +Some commands are essentially the same as their UNIX ancestors: +.CW awk , +.CW troff , +and others have been converted to ANSI C and extended to handle +Unicode, but are still the familiar tools. +Some are entirely new programs for old niches: the shell +.CW rc , +text editor +.CW sam , +debugger +.CW acid , +and others +displace the better-known UNIX tools with similar jobs. +Finally, about half the commands are new. +.PP +Compatibility was not a requirement for the system. +Where the old commands or notation seemed good enough, we +kept them. When they didn't, we replaced them. +.SH +The File Server +.PP +A central file server stores permanent files and presents them to the network +as a file hierarchy exported using 9P. +The server is a stand-alone system, accessible only over the network, +designed to do its one job well. +It runs no user processes, only a fixed set of routines compiled into the +boot image. +Rather than a set of disks or separate file systems, +the main hierarchy exported by the server is a single +tree, representing files on many disks. +That hierarchy is +shared by many users over a wide area on a variety of networks. +Other file trees exported by +the server include +special-purpose systems such as temporary storage and, as explained +below, a backup service. +.PP +The file server has three levels of storage. +The central server in our installation has +about 100 megabytes of memory buffers, +27 gigabytes of magnetic disks, +and 350 gigabytes of +bulk storage in a write-once-read-many (WORM) jukebox. +The disk is a cache for the WORM and the memory is a cache for the disk; +each is much faster, and sees about an order of magnitude more traffic, +than the level it caches. +The addressable data in the file system can be larger than the size of the +magnetic disks, because they are only a cache; +our main file server has about 40 gigabytes of active storage. +.PP +The most unusual feature of the file server +comes from its use of a WORM device for +stable storage. +Every morning at 5 o'clock, a +.I dump +of the file system occurs automatically. +The file system is frozen and +all blocks modified since the last dump +are queued to be written to the WORM. +Once the blocks are queued, +service is restored and +the read-only root of the dumped +file system appears in a +hierarchy of all dumps ever taken, named by its date. +For example, the directory +.CW /n/dump/1995/0315 +is the root directory of an image of the file system +as it appeared in the early morning of March 15, 1995. +It takes a few minutes to queue the blocks, +but the process to copy blocks to the WORM, which runs in the background, may take hours. +.PP +There are two ways the dump file system is used. +The first is by the users themselves, who can browse the +dump file system directly or attach pieces of +it to their name space. +For example, to track down a bug, +it is straightforward to try the compiler from three months ago +or to link a program with yesterday's library. +With daily snapshots of all files, +it is easy to find when a particular change was +made or what changes were made on a particular date. +People feel free to make large speculative changes +to files in the knowledge that they can be backed +out with a single +copy command. +There is no backup system as such; +instead, because the dump +is in the file name space, +backup problems can be solved with +standard tools +such as +.CW cp , +.CW ls , +.CW grep , +and +.CW diff . +.PP +The other (very rare) use is complete system backup. +In the event of disaster, +the active file system can be initialized from any dump by clearing the +disk cache and setting the root of +the active file system to be a copy +of the dumped root. +Although easy to do, this is not to be taken lightly: +besides losing any change made after the date of the dump, this recovery method +results in a very slow system. +The cache must be reloaded from WORM, which is much +slower than magnetic disks. +The file system takes a few days to reload the working +set and regain its full performance. +.PP +Access permissions of files in the dump are the same +as they were when the dump was made. +Normal utilities have normal +permissions in the dump without any special arrangement. +The dump file system is read-only, though, +which means that files in the dump cannot be written regardless of their permission bits; +in fact, since directories are part of the read-only structure, +even the permissions cannot be changed. +.PP +Once a file is written to WORM, it cannot be removed, +so our users never see +``please clean up your files'' +messages and there is no +.CW df +command. +We regard the WORM jukebox as an unlimited resource. +The only issue is how long it will take to fill. +Our WORM has served a community of about 50 users +for five years and has absorbed daily dumps, consuming a total of +65% of the storage in the jukebox. +In that time, the manufacturer has improved the technology, +doubling the capacity of the individual disks. +If we were to upgrade to the new media, +we would have more free space than in the original empty jukebox. +Technology has created storage faster than we can use it. +.SH +Unusual file servers +.PP +Plan 9 is characterized by a variety of servers that offer +a file-like interface to unusual services. +Many of these are implemented by user-level processes, although the distinction +is unimportant to their clients; whether a service is provided by the kernel, +a user process, or a remote server is irrelevant to the way it is used. +There are dozens of such servers; in this section we present three representative ones. +.PP +Perhaps the most remarkable file server in Plan 9 is 8½, the window system. +It is discussed at length elsewhere [Pike91], but deserves a brief explanation here. +8½ provides two interfaces: to the user seated at the terminal, it offers a traditional +style of interaction with multiple windows, each running an application, all controlled +by a mouse and keyboard. +To the client programs, the view is also fairly traditional: +programs running in a window see a set of files in +.CW /dev +with names like +.CW mouse , +.CW screen , +and +.CW cons . +Programs that want to print text to their window write to +.CW /dev/cons ; +to read the mouse, they read +.CW /dev/mouse . +In the Plan 9 style, bitmap graphics is implemented by providing a file +.CW /dev/bitblt +on which clients write encoded messages to execute graphical operations such as +.CW bitblt +(RasterOp). +What is unusual is how this is done: +8½ is a file server, serving the files in +.CW /dev +to the clients running in each window. +Although every window looks the same to its client, +each window has a distinct set of files in +.CW /dev . +8½ multiplexes its clients' access to the resources of the terminal +by serving multiple sets of files. Each client is given a private name space +with a +.I different +set of files that behave the same as in all other windows. +There are many advantages to this structure. +One is that 8½ serves the same files it needs for its own implementation\(emit +multiplexes its own interface\(emso it may be run, recursively, as a client of itself. +Also, consider the implementation of +.CW /dev/tty +in UNIX, which requires special code in the kernel to redirect +.CW open +calls to the appropriate device. +Instead, in 8½ the equivalent service falls out +automatically: 8½ serves +.CW /dev/cons +as its basic function; there is nothing extra to do. +When a program wants to +read from the keyboard, it opens +.CW /dev/cons , +but it is a private file, not a shared one with special properties. +Again, local name spaces make this possible; conventions about the consistency of +the files within them make it natural. +.PP +8½ has a unique feature made possible by its design. +Because it is implemented as a file server, +it has the power to postpone answering read requests for a particular window. +This behavior is toggled by a reserved key on the keyboard. +Toggling once suspends client reads from the window; +toggling again resumes normal reads, which absorb whatever text has been prepared, +one line at a time. +This allows the user to edit multi-line input text on the screen before the application sees it, +obviating the need to invoke a separate editor to prepare text such as mail +messages. +A related property is that reads are answered directly from the +data structure defining the text on the display: text may be edited until +its final newline makes the prepared line of text readable by the client. +Even then, until the line is read, the text the client will read can be changed. +For example, after typing +.P1 +% make +rm * +.P2 +to the shell, the user can backspace over the final newline at any time until +.CW make +finishes, holding off execution of the +.CW rm +command, or even point with the mouse +before the +.CW rm +and type another command to be executed first. +.PP +There is no +.CW ftp +command in Plan 9. Instead, a user-level file server called +.CW ftpfs +dials the FTP site, logs in on behalf of the user, and uses the FTP protocol +to examine files in the remote directory. +To the local user, it offers a file hierarchy, attached to +.CW /n/ftp +in the local name space, mirroring the contents of the FTP site. +In other words, it translates the FTP protocol into 9P to offer Plan 9 access to FTP sites. +The implementation is tricky; +.CW ftpfs +must do some sophisticated caching for efficiency and +use heuristics to decode remote directory information. +But the result is worthwhile: +all the local file management tools such as +.CW cp , +.CW grep , +.CW diff , +and of course +.CW ls +are available to FTP-served files exactly as if they were local files. +Other systems such as Jade and Prospero +have exploited the same opportunity [Rao81, Neu92], +but because of local name spaces and the simplicity of implementing 9P, +this approach +fits more naturally into Plan 9 than into other environments. +.PP +One server, +.CW exportfs , +is a user process that takes a portion of its own name space and +makes it available to other processes by +translating 9P requests into system calls to the Plan 9 kernel. +The file hierarchy it exports may contain files from multiple servers. +.CW Exportfs +is usually run as a remote server +started by a local program, +either +.CW import +or +.CW cpu . +.CW Import +makes a network call to the remote machine, starts +.CW exportfs +there, and attaches its 9P connection to the local name space. For example, +.P1 +import helix /net +.P2 +makes Helix's network interfaces visible in the local +.CW /net +directory. Helix is a central server and +has many network interfaces, so this permits a machine with one network to +access to any of Helix's networks. After such an import, the local +machine may make calls on any of the networks connected to Helix. +Another example is +.P1 +import helix /proc +.P2 +which makes Helix's processes visible in the local +.CW /proc , +permitting local debuggers to examine remote processes. +.PP +The +.CW cpu +command connects the local terminal to a remote +CPU server. +It works in the opposite direction to +.CW import : +after calling the server, it starts a +.I local +.CW exportfs +and mounts it in the name space of a process, typically a newly created shell, on the +server. +It then rearranges the name space +to make local device files (such as those served by +the terminal's window system) visible in the server's +.CW /dev +directory. +The effect of running a +.CW cpu +command is therefore to start a shell on a fast machine, one more tightly +coupled to the file server, +with a name space analogous +to the local one. +All local device files are visible remotely, so remote applications have full +access to local services such as bitmap graphics, +.CW /dev/cons , +and so on. +This is not the same as +.CW rlogin , +which does nothing to reproduce the local name space on the remote system, +nor is it the same as +file sharing with, say, NFS, which can achieve some name space equivalence but +not the combination of access to local hardware devices, remote files, and remote +CPU resources. +The +.CW cpu +command is a uniquely transparent mechanism. +For example, it is reasonable +to start a window system in a window running a +.CW cpu +command; all windows created there automatically start processes on the CPU server. +.SH +Configurability and administration +.PP +The uniform interconnection of components in Plan 9 makes it possible to configure +a Plan 9 installation many different ways. +A single laptop PC can function as a stand-alone Plan 9 system; +at the other extreme, our setup has central multiprocessor CPU +servers and file servers and scores of terminals ranging from small PCs to +high-end graphics workstations. +It is such large installations that best represent how Plan 9 operates. +.PP +The system software is portable and the same +operating system runs on all hardware. +Except for performance, the appearance of the system on, say, +an SGI workstation is the same +as on a laptop. +Since computing and file services are centralized, and terminals have +no permanent file storage, all terminals are functionally identical. +In this way, Plan 9 has one of the good properties of old timesharing systems, where +a user could sit in front of any machine and see the same system. In the modern +workstation community, machines tend to be owned by people who customize them +by storing private information on local disk. +We reject this style of use, +although the system itself can be used this way. +In our group, we have a laboratory with many public-access machines\(ema terminal +room\(emand a user may sit down at any one of them and work. +.PP +Central file servers centralize not just the files, but also their administration +and maintenance. +In fact, one server is the main server, holding all system files; other servers provide +extra storage or are available for debugging and other special uses, but the system +software resides on one machine. +This means that each program +has a single copy of the binary for each architecture, so it is +trivial to install updates and bug fixes. +There is also a single user database; there is no need to synchronize distinct +.CW /etc/passwd +files. +On the other hand, depending on a single central server does limit the size of an installation. +.PP +Another example of the power of centralized file service +is the way Plan 9 administers network information. +On the central server there is a directory, +.CW /lib/ndb , +that contains all the information necessary to administer the local Ethernet and +other networks. +All the machines use the same database to talk to the network; there is no +need to manage a distributed naming system or keep parallel files up to date. +To install a new machine on the local Ethernet, choose a +name and IP address and add these to a single file in +.CW /lib/ndb ; +all the machines in the installation will be able to talk to it immediately. +To start running, plug the machine into the network, turn it on, and use BOOTP +and TFTP to load the kernel. +All else is automatic. +.PP +Finally, +the automated dump file system frees all users from the need to maintain +their systems, while providing easy access to backup files without +tapes, special commands, or the involvement of support staff. +It is difficult to overstate the improvement in lifestyle afforded by this service. +.PP +Plan 9 runs on a variety of hardware without +constraining how to configure an installation. +In our laboratory, we +chose to use central servers because they amortize costs and administration. +A sign that this is a good decision is that our cheap +terminals remain comfortable places +to work for about five years, much longer than workstations that must provide +the complete computing environment. +We do, however, upgrade the central machines, so +the computation available from even old Plan 9 terminals improves with time. +The money saved by avoiding regular upgrades of terminals +is instead spent on the newest, fastest multiprocessor servers. +We estimate this costs about half the money of networked workstations +yet provides general access to more powerful machines. +.SH +C Programming +.PP +Plan 9 utilities are written in several languages. +Some are scripts for the shell, +.CW rc +[Duff90]; a handful +are written in a new C-like concurrent language called Alef [Wint95], described below. +The great majority, though, are written in a dialect of ANSI C [ANSIC]. +Of these, most are entirely new programs, but some +originate in pre-ANSI C code +from our research UNIX system [UNIX85]. +These have been updated to ANSI C +and reworked for portability and cleanliness. +.PP +The Plan 9 C dialect has some minor extensions, +described elsewhere [Pike95], and a few major restrictions. +The most important restriction is that the compiler demands that +all function definitions have ANSI prototypes +and all function calls appear in the scope of a prototyped declaration +of the function. +As a stylistic rule, +the prototyped declaration is placed in a header file +included by all files that call the function. +Each system library has an associated header file, declaring all +functions in that library. +For example, the standard Plan 9 library is called +.CW libc , +so all C source files include +.CW . +These rules guarantee that all functions +are called with arguments having the expected types \(em something +that was not true with pre-ANSI C programs. +.PP +Another restriction is that the C compilers accept only a subset of the +preprocessor directives required by ANSI. +The main omission is +.CW #if , +since we believe it +is never necessary and often abused. +Also, its effect is +better achieved by other means. +For instance, an +.CW #if +used to toggle a feature at compile time can be written +as a regular +.CW if +statement, relying on compile-time constant folding and +dead code elimination to discard object code. +.PP +Conditional compilation, even with +.CW #ifdef , +is used sparingly in Plan 9. +The only architecture-dependent +.CW #ifdefs +in the system are in low-level routines in the graphics library. +Instead, we avoid such dependencies or, when necessary, isolate +them in separate source files or libraries. +Besides making code hard to read, +.CW #ifdefs +make it impossible to know what source is compiled into the binary +or whether source protected by them will compile or work properly. +They make it harder to maintain software. +.PP +The standard Plan 9 library overlaps much of +ANSI C and POSIX [POSIX], but diverges +when appropriate to Plan 9's goals or implementation. +When the semantics of a function +change, we also change the name. +For instance, instead of UNIX's +.CW creat , +Plan 9 has a +.CW create +function that takes three arguments, +the original two plus a third that, like the second +argument of +.CW open , +defines whether the returned file descriptor is to be opened for reading, +writing, or both. +This design was forced by the way 9P implements creation, +but it also simplifies the common use of +.CW create +to initialize a temporary file. +.PP +Another departure from ANSI C is that Plan 9 uses a 16-bit character set +called Unicode [ISO10646, Unicode]. +Although we stopped short of full internationalization, +Plan 9 treats the representation +of all major languages uniformly throughout all its +software. +To simplify the exchange of text between programs, the characters are packed into +a byte stream by an encoding we designed, called UTF-8, +which is now +becoming accepted as a standard [FSSUTF]. +It has several attractive properties, +including byte-order independence, +backwards compatibility with ASCII, +and ease of implementation. +.PP +There are many problems in adapting existing software to a large +character set with an encoding that represents characters with +a variable number of bytes. +ANSI C addresses some of the issues but +falls short of +solving them all. +It does not pick a character set encoding and does not +define all the necessary I/O library routines. +Furthermore, the functions it +.I does +define have engineering problems. +Since the standard left too many problems unsolved, +we decided to build our own interface. +A separate paper has the details [Pike93]. +.PP +A small class of Plan 9 programs do not follow the conventions +discussed in this section. +These are programs imported from and maintained by +the UNIX community; +.CW tex +is a representative example. +To avoid reconverting such programs every time a new version +is released, +we built a porting environment, called the ANSI C/POSIX Environment, or APE [Tric95]. +APE comprises separate include files, libraries, and commands, +conforming as much as possible to the strict ANSI C and base-level +POSIX specifications. +To port network-based software such as X Windows, it was necessary to add +some extensions to those +specifications, such as the BSD networking functions. +.SH +Portability and Compilation +.PP +Plan 9 is portable across a variety of processor architectures. +Within a single computing session, it is common to use +several architectures: perhaps the window system running on +an Intel processor connected to a MIPS-based CPU server with files +resident on a SPARC system. +For this heterogeneity to be transparent, there must be conventions +about data interchange between programs; for software maintenance +to be straightforward, there must be conventions about cross-architecture +compilation. +.PP +To avoid byte order problems, +data is communicated between programs as text whenever practical. +Sometimes, though, the amount of data is high enough that a binary +format is necessary; +such data is communicated as a byte stream with a pre-defined encoding +for multi-byte values. +In the rare cases where a format +is complex enough to be defined by a data structure, +the structure is never +communicated as a unit; instead, it is decomposed into +individual fields, encoded as an ordered byte stream, and then +reassembled by the recipient. +These conventions affect data +ranging from kernel or application program state information to object file +intermediates generated by the compiler. +.PP +Programs, including the kernel, often present their data +through a file system interface, +an access mechanism that is inherently portable. +For example, the system clock is represented by a decimal number in the file +.CW /dev/time ; +the +.CW time +library function (there is no +.CW time +system call) reads the file and converts it to binary. +Similarly, instead of encoding the state of an application +process in a series of flags and bits in private memory, +the kernel +presents a text string in the file named +.CW status +in the +.CW /proc +file system associated with each process. +The Plan 9 +.CW ps +command is trivial: it prints the contents of +the desired status files after some minor reformatting; moreover, after +.P1 +import helix /proc +.P2 +a local +.CW ps +command reports on the status of Helix's processes. +.PP +Each supported architecture has its own compilers and loader. +The C and Alef compilers produce intermediate files that +are portably encoded; the contents +are unique to the target architecture but the format of the +file is independent of compiling processor type. +When a compiler for a given architecture is compiled on +another type of processor and then used to compile a program +there, +the intermediate produced on +the new architecture is identical to the intermediate +produced on the native processor. From the compiler's +point of view, every compilation is a cross-compilation. +.PP +Although each architecture's loader accepts only intermediate files produced +by compilers for that architecture, +such files could have been generated by a compiler executing +on any type of processor. +For instance, it is possible to run +the MIPS compiler on a 486, then use the MIPS loader on a +SPARC to produce a MIPS executable. +.PP +Since Plan 9 runs on a variety of architectures, even in a single installation, +distinguishing the compilers and intermediate names +simplifies multi-architecture +development from a single source tree. +The compilers and the loader for each architecture are +uniquely named; there is no +.CW cc +command. +The names are derived by concatenating a code letter +associated with the target architecture with the name of the +compiler or loader. For example, the letter `8' is +the code letter for Intel +.I x 86 +processors; the C compiler is named +.CW 8c , +the Alef compiler +.CW 8al , +and the loader is called +.CW 8l . +Similarly, the compiler intermediate files are suffixed +.CW .8 , +not +.CW .o . +.PP +The Plan 9 +build program +.CW mk , +a relative of +.CW make , +reads the names of the current and target +architectures from environment variables called +.CW $cputype +and +.CW $objtype . +By default the current processor is the target, but setting +.CW $objtype +to the name of another architecture +before invoking +.CW mk +results in a cross-build: +.P1 +% objtype=sparc mk +.P2 +builds a program for the SPARC architecture regardless of the executing machine. +The value of +.CW $objtype +selects a +file of architecture-dependent variable definitions +that configures the build to use the appropriate compilers and loader. +Although simple-minded, this technique works well in practice: +all applications in Plan 9 are built from a single source tree +and it is possible to build the various architectures in parallel without conflict. +.SH +Parallel programming +.PP +Plan 9's support for parallel programming has two aspects. +First, the kernel provides +a simple process model and a few carefully designed system calls for +synchronization and sharing. +Second, a new parallel programming language called Alef +supports concurrent programming. +Although it is possible to write parallel +programs in C, Alef is the parallel language of choice. +.PP +There is a trend in new operating systems to implement two +classes of processes: normal UNIX-style processes and light-weight +kernel threads. +Instead, Plan 9 provides a single class of process but allows fine control of the +sharing of a process's resources such as memory and file descriptors. +A single class of process is a +feasible approach in Plan 9 because the kernel has an efficient system +call interface and cheap process creation and scheduling. +.PP +Parallel programs have three basic requirements: +management of resources shared between processes, +an interface to the scheduler, +and fine-grain process synchronization using spin locks. +On Plan 9, +new processes are created using the +.CW rfork +system call. +.CW Rfork +takes a single argument, +a bit vector that specifies +which of the parent process's resources should be shared, +copied, or created anew +in the child. +The resources controlled by +.CW rfork +include the name space, +the environment, +the file descriptor table, +memory segments, +and notes (Plan 9's analog of UNIX signals). +One of the bits controls whether the +.CW rfork +call will create a new process; if the bit is off, the resulting +modification to the resources occurs in the process making the call. +For example, a process calls +.CW rfork(RFNAMEG) +to disconnect its name space from its parent's. +Alef uses a +fine-grained fork in which all the resources, including +memory, are shared between parent +and child, analogous to creating a kernel thread in many systems. +.PP +An indication that +.CW rfork +is the right model is the variety of ways it is used. +Other than the canonical use in the library routine +.CW fork , +it is hard to find two calls to +.CW rfork +with the same bits set; programs +use it to create many different forms of sharing and resource allocation. +A system with just two types of processes\(emregular processes and threads\(emcould +not handle this variety. +.PP +There are two ways to share memory. +First, a flag to +.CW rfork +causes all the memory segments of the parent to be shared with the child +(except the stack, which is +forked copy-on-write regardless). +Alternatively, a new segment of memory may be +attached using the +.CW segattach +system call; such a segment +will always be shared between parent and child. +.PP +The +.CW rendezvous +system call provides a way for processes to synchronize. +Alef uses it to implement communication channels, +queuing locks, +multiple reader/writer locks, and +the sleep and wakeup mechanism. +.CW Rendezvous +takes two arguments, a tag and a value. +When a process calls +.CW rendezvous +with a tag it sleeps until another process +presents a matching tag. +When a pair of tags match, the values are exchanged +between the two processes and both +.CW rendezvous +calls return. +This primitive is sufficient to implement the full set of synchronization routines. +.PP +Finally, spin locks are provided by +an architecture-dependent library at user level. +Most processors provide atomic test and set instructions that +can be used to implement locks. +A notable exception is the MIPS R3000, so the SGI +Power series multiprocessors have special lock hardware on the bus. +User processes gain access to the lock hardware +by mapping pages of hardware locks +into their address space using the +.CW segattach +system call. +.PP +A Plan 9 process in a system call will block regardless of its `weight'. +This means that when a program wishes to read from a slow +device without blocking the entire calculation, it must fork a process to do +the read for it. The solution is to start a satellite +process that does the I/O and delivers the answer to the main program +through shared memory or perhaps a pipe. +This sounds onerous but works easily and efficiently in practice; in fact, +most interactive Plan 9 applications, even relatively ordinary ones written +in C, such as +the text editor Sam [Pike87], run as multiprocess programs. +.PP +The kernel support for parallel programming in Plan 9 is a few hundred lines +of portable code; a handful of simple primitives enable the problems to be handled +cleanly at user level. +Although the primitives work fine from C, +they are particularly expressive from within Alef. +The creation +and management of slave I/O processes can be written in a few lines of Alef, +providing the foundation for a consistent means of multiplexing +data flows between arbitrary processes. +Moreover, implementing it in a language rather than in the kernel +ensures consistent semantics between all devices +and provides a more general multiplexing primitive. +Compare this to the UNIX +.CW select +system call: +.CW select +applies only to a restricted set of devices, +legislates a style of multiprogramming in the kernel, +does not extend across networks, +is difficult to implement, and is hard to use. +.PP +Another reason +parallel programming is important in Plan 9 is that +multi-threaded user-level file servers are the preferred way +to implement services. +Examples of such servers include the programming environment +Acme [Pike94], +the name space exporting tool +.CW exportfs +[PPTTW93], +the HTTP daemon, +and the network name servers +.CW cs +and +.CW dns +[PrWi93]. +Complex applications such as Acme prove that +careful operating system support can reduce the difficulty of writing +multi-threaded applications without moving threading and +synchronization primitives into the kernel. +.SH +Implementation of Name Spaces +.PP +User processes construct name spaces using three system calls: +.CW mount , +.CW bind , +and +.CW unmount . +The +.CW mount +system call attaches a tree served by a file server to +the current name space. Before calling +.CW mount , +the client must (by outside means) acquire a connection to the server in +the form of a file descriptor that may be written and read to transmit 9P messages. +That file descriptor represents a pipe or network connection. +.PP +The +.CW mount +call attaches a new hierarchy to the existing name space. +The +.CW bind +system call, on the other hand, duplicates some piece of existing name space at +another point in the name space. +The +.CW unmount +system call allows components to be removed. +.PP +Using +either +.CW bind +or +.CW mount , +multiple directories may be stacked at a single point in the name space. +In Plan 9 terminology, this is a +.I union +directory and behaves like the concatenation of the constituent directories. +A flag argument to +.CW bind +and +.CW mount +specifies the position of a new directory in the union, +permitting new elements +to be added either at the front or rear of the union or to replace it entirely. +When a file lookup is performed in a union directory, each component +of the union is searched in turn and the first match taken; likewise, +when a union directory is read, the contents of each of the component directories +is read in turn. +Union directories are one of the most widely used organizational features +of the Plan 9 name space. +For instance, the directory +.CW /bin +is built as a union of +.CW /$cputype/bin +(program binaries), +.CW /rc/bin +(shell scripts), +and perhaps more directories provided by the user. +This construction makes the shell +.CW $PATH +variable unnecessary. +.PP +One question raised by union directories +is which element of the union receives a newly created file. +After several designs, we decided on the following. +By default, directories in unions do not accept new files, although the +.CW create +system call applied to an existing file succeeds normally. +When a directory is added to the union, a flag to +.CW bind +or +.CW mount +enables create permission (a property of the name space) in that directory. +When a file is being created with a new name in a union, it is created in the +first directory of the union with create permission; if that creation fails, +the entire +.CW create +fails. +This scheme enables the common use of placing a private directory anywhere +in a union of public ones, +while allowing creation only in the private directory. +.PP +By convention, kernel device file systems +are bound into the +.CW /dev +directory, but to bootstrap the name space building process it is +necessary to have a notation that permits +direct access to the devices without an existing name space. +The root directory +of the tree served by a device driver can be accessed using the syntax +.CW # \f2c\f1, +where +.I c +is a unique character (typically a letter) identifying the +.I type +of the device. +Simple device drivers serve a single level directory containing a few files. +As an example, +each serial port is represented by a data and a control file: +.P1 +% bind -a '#t' /dev +% cd /dev +% ls -l eia* +--rw-rw-rw- t 0 bootes bootes 0 Feb 24 21:14 eia1 +--rw-rw-rw- t 0 bootes bootes 0 Feb 24 21:14 eia1ctl +--rw-rw-rw- t 0 bootes bootes 0 Feb 24 21:14 eia2 +--rw-rw-rw- t 0 bootes bootes 0 Feb 24 21:14 eia2ctl +.P2 +The +.CW bind +program is an encapsulation of the +.CW bind +system call; its +.CW -a +flag positions the new directory at the end of the union. +The data files +.CW eia1 +and +.CW eia2 +may be read and written to communicate over the serial line. +Instead of using special operations on these files to control the devices, +commands written to the files +.CW eia1ctl +and +.CW eia2ctl +control the corresponding device; +for example, +writing the text string +.CW b1200 +to +.CW /dev/eia1ctl +sets the speed of that line to 1200 baud. +Compare this to the UNIX +.CW ioctl +system call: in Plan 9, devices are controlled by textual messages, +free of byte order problems, with clear semantics for reading and writing. +It is common to configure or debug devices using shell scripts. +.PP +It is the universal use of the 9P protocol that +connects Plan 9's components together to form a +distributed system. +Rather than inventing a unique protocol for each +service such as +.CW rlogin , +FTP, TFTP, and X windows, +Plan 9 implements services +in terms of operations on file objects, +and then uses a single, well-documented protocol to exchange information between +computers. +Unlike NFS, 9P treats files as a sequence of bytes rather than blocks. +Also unlike NFS, 9P is stateful: clients perform +remote procedure calls to establish pointers to objects in the remote +file server. +These pointers are called file identifiers or +.I fids . +All operations on files supply a fid to identify an object in the remote file system. +.PP +The 9P protocol defines 17 messages, providing +means to authenticate users, navigate fids around +a file system hierarchy, copy fids, perform I/O, change file attributes, +and create and delete files. +Its complete specification is in Section 5 of the Programmer's Manual [9man]. +Here is the procedure to gain access to the name hierarchy supplied by a server. +A file server connection is established via a pipe or network connection. +An initial +.CW session +message performs a bilateral authentication between client and server. +An +.CW attach +message then connects a fid suggested by the client to the root of the server file +tree. +The +.CW attach +message includes the identity of the user performing the attach; henceforth all +fids derived from the root fid will have permissions associated with +that user. +Multiple users may share the connection, but each must perform an attach to +establish his or her identity. +.PP +The +.CW walk +message moves a fid through a single level of the file system hierarchy. +The +.CW clone +message takes an established fid and produces a copy that points +to the same file as the original. +Its purpose is to enable walking to a file in a directory without losing the fid +on the directory. +The +.CW open +message locks a fid to a specific file in the hierarchy, +checks access permissions, +and prepares the fid +for I/O. +The +.CW read +and +.CW write +messages allow I/O at arbitrary offsets in the file; +the maximum size transferred is defined by the protocol. +The +.CW clunk +message indicates the client has no further use for a fid. +The +.CW remove +message behaves like +.CW clunk +but causes the file associated with the fid to be removed and any associated +resources on the server to be deallocated. +.PP +9P has two forms: RPC messages sent on a pipe or network connection and a procedural +interface within the kernel. +Since kernel device drivers are directly addressable, +there is no need to pass messages to +communicate with them; +instead each 9P transaction is implemented by a direct procedure call. +For each fid, +the kernel maintains a local representation in a data structure called a +.I channel , +so all operations on files performed by the kernel involve a channel connected +to that fid. +The simplest example is a user process's file descriptors, which are +indexes into an array of channels. +A table in the kernel provides a list +of entry points corresponding one to one with the 9P messages for each device. +A system call such as +.CW read +from the user translates into one or more procedure calls +through that table, indexed by the type character stored in the channel: +.CW procread , +.CW eiaread , +etc. +Each call takes at least +one channel as an argument. +A special kernel driver, called the +.I mount +driver, translates procedure calls to messages, that is, +it converts local procedure calls to remote ones. +In effect, this special driver +becomes a local proxy for the files served by a remote file server. +The channel pointer in the local call is translated to the associated fid +in the transmitted message. +.PP +The mount driver is the sole RPC mechanism employed by the system. +The semantics of the supplied files, rather than the operations performed upon +them, create a particular service such as the +.CW cpu +command. +The mount driver demultiplexes protocol +messages between clients sharing a communication channel +with a file server. +For each outgoing RPC message, +the mount driver allocates a buffer labeled by a small unique integer, +called a +.I tag . +The reply to the RPC is labeled with the same tag, which is used by +the mount driver to match the reply with the request. +.PP +The kernel representation of the name space +is called the +.I "mount table" , +which stores a list of bindings between channels. +Each entry in the mount table contains a pair of channels: a +.I from +channel and a +.I to +channel. +Every time a walk succeeds in moving a channel to a new location in the name space, +the mount table is consulted to see if a `from' channel matches the new name; if +so the `to' channel is cloned and substituted for the original. +Union directories are implemented by converting the `to' +channel into a list of channels: +a successful walk to a union directory returns a `to' channel that forms +the head of +a list of channels, each representing a component directory +of the union. +If a walk +fails to find a file in the first directory of the union, the list is followed, +the next component cloned, and walk tried on that directory. +.PP +Each file in Plan 9 is uniquely identified by a set of integers: +the type of the channel (used as the index of the function call table), +the server or device number +distinguishing the server from others of the same type (decided locally by the driver), +and a +.I qid +formed from two 32-bit numbers called +.I path +and +.I version . +The path is a unique file number assigned by a device driver or +file server when a file is created. +The version number is updated whenever +the file is modified; as described in the next section, +it can be used to maintain cache coherency between +clients and servers. +.PP +The type and device number are analogous to UNIX major and minor +device numbers; +the qid is analogous to the i-number. +The device and type +connect the channel to a device driver and the qid +identifies the file within that device. +If the file recovered from a walk has the same type, device, and qid path +as an entry in the mount table, they are the same file and the +corresponding substitution from the mount table is made. +This is how the name space is implemented. +.SH +File Caching +.PP +The 9P protocol has no explicit support for caching files on a client. +The large memory of the central file server acts as a shared cache for all its clients, +which reduces the total amount of memory needed across all machines in the network. +Nonetheless, there are sound reasons to cache files on the client, such as a slow +connection to the file server. +.PP +The version field of the qid is changed whenever the file is modified, +which makes it possible to do some weakly coherent forms of caching. +The most important is client caching of text and data segments of executable files. +When a process +.CW execs +a program, the file is re-opened and the qid's version is compared with that in the cache; +if they match, the local copy is used. +The same method can be used to build a local caching file server. +This user-level server interposes on the 9P connection to the remote server and +monitors the traffic, copying data to a local disk. +When it sees a read of known data, it answers directly, +while writes are passed on immediately\(emthe cache is write-through\(emto keep +the central copy up to date. +This is transparent to processes on the terminal and requires no change to 9P; +it works well on home machines connected over serial lines. +A similar method can be applied to build a general client cache in unused local +memory, but this has not been done in Plan 9. +.SH +Networks and Communication Devices +.PP +Network interfaces are kernel-resident file systems, analogous to the EIA device +described earlier. +Call setup and shutdown are achieved by writing text strings to the control file +associated with the device; +information is sent and received by reading and writing the data file. +The structure and semantics of the devices is common to all networks so, +other than a file name substitution, +the same procedure makes a call using TCP over Ethernet as URP over Datakit [Fra80]. +.PP +This example illustrates the structure of the TCP device: +.P1 +% ls -lp /net/tcp +d-r-xr-xr-x I 0 bootes bootes 0 Feb 23 20:20 0 +d-r-xr-xr-x I 0 bootes bootes 0 Feb 23 20:20 1 +--rw-rw-rw- I 0 bootes bootes 0 Feb 23 20:20 clone +% ls -lp /net/tcp/0 +--rw-rw---- I 0 rob bootes 0 Feb 23 20:20 ctl +--rw-rw---- I 0 rob bootes 0 Feb 23 20:20 data +--rw-rw---- I 0 rob bootes 0 Feb 23 20:20 listen +--r--r--r-- I 0 bootes bootes 0 Feb 23 20:20 local +--r--r--r-- I 0 bootes bootes 0 Feb 23 20:20 remote +--r--r--r-- I 0 bootes bootes 0 Feb 23 20:20 status +% +.P2 +The top directory, +.CW /net/tcp , +contains a +.CW clone +file and a directory for each connection, numbered +.CW 0 +to +.I n . +Each connection directory corresponds to an TCP/IP connection. +Opening +.CW clone +reserves an unused connection and returns its control file. +Reading the control file returns the textual connection number, so the user +process can construct the full name of the newly allocated +connection directory. +The +.CW local , +.CW remote , +and +.CW status +files are diagnostic; for example, +.CW remote +contains the address (for TCP, the IP address and port number) of the remote side. +.PP +A call is initiated by writing a connect message with a network-specific address as +its argument; for example, to open a Telnet session (port 23) to a remote machine +with IP address 135.104.9.52, +the string is: +.P1 +connect 135.104.9.52!23 +.P2 +The write to the control file blocks until the connection is established; +if the destination is unreachable, the write returns an error. +Once the connection is established, the +.CW telnet +application reads and writes the +.CW data +file +to talk to the remote Telnet daemon. +On the other end, the Telnet daemon would start by writing +.P1 +announce 23 +.P2 +to its control file to indicate its willingness to receive calls to this port. +Such a daemon is called a +.I listener +in Plan 9. +.PP +A uniform structure for network devices cannot hide all the details +of addressing and communication for dissimilar networks. +For example, Datakit uses textual, hierarchical addresses unlike IP's 32-bit addresses, so +an application given a control file must still know what network it represents. +Rather than make every application know the addressing of every network, +Plan 9 hides these details in a +.I connection +.I server , +called +.CW cs . +.CW Cs +is a file system mounted in a known place. +It supplies a single control file that an application uses to discover how to connect +to a host. +The application writes the symbolic address and service name for +the connection it wishes to make, +and reads back the name of the +.CW clone +file to open and the address to present to it. +If there are multiple networks between the machines, +.CW cs +presents a list of possible networks and addresses to be tried in sequence; +it uses heuristics to decide the order. +For instance, it presents the highest-bandwidth choice first. +.PP +A single library function called +.CW dial +talks to +.CW cs +to establish the connection. +An application that uses +.CW dial +needs no changes, not even recompilation, to adapt to new networks; +the interface to +.CW cs +hides the details. +.PP +The uniform structure for networks in Plan 9 makes the +.CW import +command all that is needed to construct gateways. +.SH +Kernel structure for networks +.PP +The kernel plumbing used to build Plan 9 communications +channels is called +.I streams +[Rit84][Presotto]. +A stream is a bidirectional channel connecting a +physical or pseudo-device to a user process. +The user process inserts and removes data at one end of the stream; +a kernel process acting on behalf of a device operates at +the other end. +A stream comprises a linear list of +.I "processing modules" . +Each module has both an upstream (toward the process) and +downstream (toward the device) +.I "put routine" . +Calling the put routine of the module on either end of the stream +inserts data into the stream. +Each module calls the succeeding one to send data up or down the stream. +Like UNIX streams [Rit84], +Plan 9 streams can be dynamically configured. +.SH +The IL Protocol +.PP +The 9P protocol must run above a reliable transport protocol with delimited messages. +9P has no mechanism to recover from transmission errors and +the system assumes that each read from a communication channel will +return a single 9P message; +it does not parse the data stream to discover message boundaries. +Pipes and some network protocols already have these properties but +the standard IP protocols do not. +TCP does not delimit messages, while +UDP [RFC768] does not provide reliable in-order delivery. +.PP +We designed a new protocol, called IL (Internet Link), to transmit 9P messages over IP. +It is a connection-based protocol that provides +reliable transmission of sequenced messages between machines. +Since a process can have only a single outstanding 9P request, +there is no need for flow control in IL. +Like TCP, IL has adaptive timeouts: it scales acknowledge and retransmission times +to match the network speed. +This allows the protocol to perform well on both the Internet and on local Ethernets. +Also, IL does no blind retransmission, +to avoid adding to the congestion of busy networks. +Full details are in another paper [PrWi95]. +.PP +In Plan 9, the implementation of IL is smaller and faster than TCP. +IL is our main Internet transport protocol. +.SH +Overview of authentication +.PP +Authentication establishes the identity of a +user accessing a resource. +The user requesting the resource is called the +.I client +and the user granting access to the resource is called the +.I server . +This is usually done under the auspices of a 9P attach message. +A user may be a client in one authentication exchange and a server in another. +Servers always act on behalf of some user, +either a normal client or some administrative entity, so authentication +is defined to be between users, not machines. +.PP +Each Plan 9 user has an associated DES [NBS77] authentication key; +the user's identity is verified by the ability to +encrypt and decrypt special messages called challenges. +Since knowledge of a user's key gives access to that user's resources, +the Plan 9 authentication protocols never transmit a message containing +a cleartext key. +.PP +Authentication is bilateral: +at the end of the authentication exchange, +each side is convinced of the other's identity. +Every machine begins the exchange with a DES key in memory. +In the case of CPU and file servers, the key, user name, and domain name +for the server are read from permanent storage, +usually non-volatile RAM. +In the case of terminals, +the key is derived from a password typed by the user at boot time. +A special machine, known as the +.I authentication +.I server , +maintains a database of keys for all users in its administrative domain and +participates in the authentication protocols. +.PP +The authentication protocol is as follows: +after exchanging challenges, one party +contacts the authentication server to create +permission-granting +.I tickets +encrypted with +each party's secret key and containing a new conversation key. +Each +party decrypts its own ticket and uses the conversation key to +encrypt the other party's challenge. +.PP +This structure is somewhat like Kerberos [MBSS87], but avoids +its reliance on synchronized clocks. +Also +unlike Kerberos, Plan 9 authentication supports a `speaks for' +relation [LABW91] that enables one user to have the authority +of another; +this is how a CPU server runs processes on behalf of its clients. +.PP +Plan 9's authentication structure builds +secure services rather than depending on firewalls. +Whereas firewalls require special code for every service penetrating the wall, +the Plan 9 approach permits authentication to be done in a single place\(em9P\(emfor +all services. +For example, the +.CW cpu +command works securely across the Internet. +.SH +Authenticating external connections +.PP +The regular Plan 9 authentication protocol is not suitable for text-based services such as +Telnet +or FTP. +In such cases, Plan 9 users authenticate with hand-held DES calculators called +.I authenticators . +The authenticator holds a key for the user, distinct from +the user's normal authentication key. +The user `logs on' to the authenticator using a 4-digit PIN. +A correct PIN enables the authenticator for a challenge/response exchange with the server. +Since a correct challenge/response exchange is valid only once +and keys are never sent over the network, +this procedure is not susceptible to replay attacks, yet +is compatible with protocols like Telnet and FTP. +.SH +Special users +.PP +Plan 9 has no super-user. +Each server is responsible for maintaining its own security, usually permitting +access only from the console, which is protected by a password. +For example, file servers have a unique administrative user called +.CW adm , +with special privileges that apply only to commands typed at the server's +physical console. +These privileges concern the day-to-day maintenance of the server, +such as adding new users and configuring disks and networks. +The privileges do +.I not +include the ability to modify, examine, or change the permissions of any files. +If a file is read-protected by a user, only that user may grant access to others. +.PP +CPU servers have an equivalent user name that allows administrative access to +resources on that server such as the control files of user processes. +Such permission is necessary, for example, to kill rogue processes, but +does not extend beyond that server. +On the other hand, by means of a key +held in protected non-volatile RAM, +the identity of the administrative user is proven to the +authentication server. +This allows the CPU server to authenticate remote users, both +for access to the server itself and when the CPU server is acting +as a proxy on their behalf. +.PP +Finally, a special user called +.CW none +has no password and is always allowed to connect; +anyone may claim to be +.CW none . +.CW None +has restricted permissions; for example, it is not allowed to examine dump files +and can read only world-readable files. +.PP +The idea behind +.CW none +is analogous to the anonymous user in FTP +services. +On Plan 9, guest FTP servers are further confined within a special +restricted name space. +It disconnects guest users from system programs, such as the contents of +.CW /bin , +but makes it possible to make local files available to guests +by binding them explicitly into the space. +A restricted name space is more secure than the usual technique of exporting +an ad hoc directory tree; the result is a kind of cage around untrusted users. +.SH +The cpu command and proxied authentication +.PP +When a call is made to a CPU server for a user, say Peter, +the intent is that Peter wishes to run processes with his own authority. +To implement this property, +the CPU server does the following when the call is received. +First, the listener forks off a process to handle the call. +This process changes to the user +.CW none +to avoid giving away permissions if it is compromised. +It then performs the authentication protocol to verify that the +calling user really is Peter, and to prove to Peter that +the machine is itself trustworthy. +Finally, it reattaches to all relevant file servers using the +authentication protocol to identify itself as Peter. +In this case, the CPU server is a client of the file server and performs the +client portion of the authentication exchange on behalf of Peter. +The authentication server will give the process tickets to +accomplish this only if the CPU server's administrative user name is allowed to +.I "speak for" +Peter. +.PP +The +.I "speaks for +relation [LABW91] is kept in a table on the authentication server. +To simplify the management of users computing in different authentication domains, +it also contains mappings between user names in different domains, +for example saying that user +.CW rtm +in one domain is the same person as user +.CW rtmorris +in another. +.SH +File Permissions +.PP +One of the advantages of constructing services as file systems +is that the solutions to ownership and permission problems fall out naturally. +As in UNIX, +each file or directory has separate read, write, and execute/search permissions +for the file's owner, the file's group, and anyone else. +The idea of group is unusual: +any user name is potentially a group name. +A group is just a user with a list of other users in the group. +Conventions make the distinction: most people have user names without group members, +while groups have long lists of attached names. For example, the +.CW sys +group traditionally has all the system programmers, +and system files are accessible +by group +.CW sys . +Consider the following two lines of a user database stored on a server: +.P1 +pjw:pjw: +sys::pjw,ken,philw,presotto +.P2 +The first establishes user +.CW pjw +as a regular user. The second establishes user +.CW sys +as a group and lists four users who are +.I members +of that group. +The empty colon-separated field is space for a user to be named as the +.I group +.I leader . +If a group has a leader, that user has special permissions for the group, +such as freedom to change the group permissions +of files in that group. +If no leader is specified, each member of the group is considered equal, as if each were +the leader. +In our example, only +.CW pjw +can add members to his group, but all of +.CW sys 's +members are equal partners in that group. +.PP +Regular files are owned by the user that creates them. +The group name is inherited from the directory holding the new file. +Device files are treated specially: +the kernel may arrange the ownership and permissions of +a file appropriate to the user accessing the file. +.PP +A good example of the generality this offers is process files, +which are owned and read-protected by the owner of the process. +If the owner wants to let someone else access the memory of a process, +for example to let the author of a program debug a broken image, the standard +.CW chmod +command applied to the process files does the job. +.PP +Another unusual application of file permissions +is the dump file system, which is not only served by the same file +server as the original data, but represented by the same user database. +Files in the dump are therefore given identical protection as files in the regular +file system; +if a file is owned by +.CW pjw +and read-protected, once it is in the dump file system it is still owned by +.CW pjw +and read-protected. +Also, since the dump file system is immutable, the file cannot be changed; +it is read-protected forever. +Drawbacks are that if the file is readable but should have been read-protected, +it is readable forever, and that user names are hard to re-use. +.SH +Performance +.PP +As a simple measure of the performance of the Plan 9 kernel, +we compared the +time to do some simple operations on Plan 9 and on SGI's IRIX Release 5.3 +running on an SGI Challenge M with a 100MHz MIPS R4400 and a 1-megabyte +secondary cache. +The test program was written in Alef, +compiled with the same compiler, +and run on identical hardware, +so the only variables are the operating system and libraries. +.PP +The program tests the time to do a context switch +.CW rendezvous "" ( +on Plan 9, +.CW blockproc +on IRIX); +a trivial system call +.CW rfork(0) "" ( +and +.CW nap(0) ); +and +lightweight fork +.CW rfork(RFPROC) "" ( +and +.CW sproc(PR_SFDS|PR_SADDR) ). +It also measures the time to send a byte on a pipe from one process +to another and the throughput on a pipe between two processes. +The results appear in Table 1. +.KS +.TS +center,box; +ccc +lnn. +Test Plan 9 IRIX +_ +Context switch 39 µs 150 µs +System call 6 µs 36 µs +Light fork 1300 µs 2200 µs +Pipe latency 110 µs 200 µs +Pipe bandwidth 11678 KB/s 14545 KB/s +.TE +.ce +.I +Table 1. Performance comparison. +.R +.KE +.LP +Although the Plan 9 times are not spectacular, they show that the kernel is +competitive with commercial systems. +.SH +Discussion +.PP +Plan 9 has a relatively conventional kernel; +the system's novelty lies in the pieces outside the kernel and the way they interact. +When building Plan 9, we considered all aspects +of the system together, solving problems where the solution fit best. +Sometimes the solution spanned many components. +An example is the problem of heterogeneous instruction architectures, +which is addressed by the compilers (different code characters, portable +object code), +the environment +.CW $cputype "" ( +and +.CW $objtype ), +the name space +(binding in +.CW /bin ), +and other components. +Sometimes many issues could be solved in a single place. +The best example is 9P, +which centralizes naming, access, and authentication. +9P is really the core +of the system; +it is fair to say that the Plan 9 kernel is primarily a 9P multiplexer. +.PP +Plan 9's focus on files and naming is central to its expressiveness. +Particularly in distributed computing, the way things are named has profound +influence on the system [Nee89]. +The combination of +local name spaces and global conventions to interconnect networked resources +avoids the difficulty of maintaining a global uniform name space, +while naming everything like a file makes the system easy to understand, even for +novices. +Consider the dump file system, which is trivial to use for anyone familiar with +hierarchical file systems. +At a deeper level, building all the resources above a single uniform interface +makes interoperability easy. +Once a resource exports a 9P interface, +it can combine transparently +with any other part of the system to build unusual applications; +the details are hidden. +This may sound object-oriented, but there are distinctions. +First, 9P defines a fixed set of `methods'; it is not an extensible protocol. +More important, +files are well-defined and well-understood +and come prepackaged with familiar methods of access, protection, naming, and +networking. +Objects, despite their generality, do not come with these attributes defined. +By reducing `object' to `file', Plan 9 gets some technology for free. +.PP +Nonetheless, it is possible to push the idea of file-based computing too far. +Converting every resource in the system into a file system is a kind of metaphor, +and metaphors can be abused. +A good example of restraint is +.CW /proc , +which is only a view of a process, not a representation. +To run processes, the usual +.CW fork +and +.CW exec +calls are still necessary, rather than doing something like +.P1 +cp /bin/date /proc/clone/mem +.P2 +The problem with such examples is that they require the server to do things +not under its control. +The ability to assign meaning to a command like this does not +imply the meaning will fall naturally out of the structure of answering the 9P requests +it generates. +As a related example, Plan 9 does not put machine's network names in the file +name space. +The network interfaces provide a very different model of naming, because using +.CW open , +.CW create , +.CW read , +and +.CW write +on such files would not offer a suitable place to encode all the details of call +setup for an arbitrary network. +This does not mean that the network interface cannot be file-like, just that it must +have a more tightly defined structure. +.PP +What would we do differently next time? +Some elements of the implementation are unsatisfactory. +Using streams to implement network interfaces in the kernel +allows protocols to be connected together dynamically, +such as to attach the same TTY driver to TCP, URP, and +IL connections, +but Plan 9 makes no use of this configurability. +(It was exploited, however, in the research UNIX system for which +streams were invented.) +Replacing streams by static I/O queues would +simplify the code and make it faster. +.PP +Although the main Plan 9 kernel is portable across many machines, +the file server is implemented separately. +This has caused several problems: +drivers that must be written twice, +bugs that must be fixed twice, +and weaker portability of the file system code. +The solution is easy: the file server kernel should be maintained +as a variant of the regular operating system, with no user processes and +special compiled-in +kernel processes to implement file service. +Another improvement to the file system would be a change of internal structure. +The WORM jukebox is the least reliable piece of the hardware, but because +it holds the metadata of the file system, it must be present in order to serve files. +The system could be restructured so the WORM is a backup device only, with the +file system proper residing on magnetic disks. +This would require no change to the external interface. +.PP +Although Plan 9 has per-process name spaces, it has no mechanism to give the +description of a process's name space to another process except by direct inheritance. +The +.CW cpu +command, for example, cannot in general reproduce the terminal's name space; +it can only re-interpret the user's login profile and make substitutions for things like +the name of the binary directory to load. +This misses any local modifications made before running +.CW cpu . +It should instead be possible to capture the terminal's name space and transmit +its description to a remote process. +.PP +Despite these problems, Plan 9 works well. +It has matured into the system that supports our research, +rather than being the subject of the research itself. +Experimental new work includes developing interfaces to faster networks, +file caching in the client kernel, +encapsulating and exporting name spaces, +and the ability to re-establish the client state after a server crash. +Attention is now focusing on using the system to build distributed applications. +.PP +One reason for Plan 9's success is that we use it for our daily work, not just as a research tool. +Active use forces us to address shortcomings as they arise and to adapt the system +to solve our problems. +Through this process, Plan 9 has become a comfortable, productive programming +environment, as well as a vehicle for further systems research. +.SH +References +.nr PS -1 +.nr VS -2 +.IP [9man] 9 +.I +Plan 9 Programmer's Manual, +Volume 1, +.R +AT&T Bell Laboratories, +Murray Hill, NJ, +1995. +.IP [ANSIC] 9 +\f2American National Standard for Information Systems \- +Programming Language C\f1, American National Standards Institute, Inc., +New York, 1990. +.IP [Duff90] 9 +Tom Duff, ``Rc - A Shell for Plan 9 and UNIX systems'', +.I +Proc. of the Summer 1990 UKUUG Conf., +.R +London, July, 1990, pp. 21-33, reprinted, in a different form, in this volume. +.IP [Fra80] 9 +A.G. Fraser, +``Datakit \- A Modular Network for Synchronous and Asynchronous Traffic'', +.I +Proc. Int. Conf. on Commun., +.R +June 1980, Boston, MA. +.IP [FSSUTF] 9 +.I +File System Safe UCS Transformation Format (FSS-UTF), +.R +X/Open Preliminary Specification, 1993. +ISO designation is +ISO/IEC JTC1/SC2/WG2 N 1036, dated 1994-08-01. +.IP "[ISO10646] " 9 +ISO/IEC DIS 10646-1:1993 +.I +Information technology \- +Universal Multiple-Octet Coded Character Set (UCS) \(em +Part 1: Architecture and Basic Multilingual Plane. +.R +.IP [Kill84] 9 +T.J. Killian, +``Processes as Files'', +.I +USENIX Summer 1984 Conf. Proc., +.R +June 1984, Salt Lake City, UT. +.IP "[LABW91] " 9 +Butler Lampson, +Martín Abadi, +Michael Burrows, and +Edward Wobber, +``Authentication in Distributed Systems: Theory and Practice'', +.I +Proc. 13th ACM Symp. on Op. Sys. Princ., +.R +Asilomar, 1991, +pp. 165-182. +.IP "[MBSS87] " 9 +S. P. Miller, +B. C. Neumann, +J. I. Schiller, and +J. H. Saltzer, +``Kerberos Authentication and Authorization System'', +Massachusetts Institute of Technology, +1987. +.IP [NBS77] 9 +National Bureau of Standards (U.S.), +.I +Federal Information Processing Standard 46, +.R +National Technical Information Service, Springfield, VA, 1977. +.IP [Nee89] 9 +R. Needham, ``Names'', in +.I +Distributed systems, +.R +S. Mullender, ed., +Addison Wesley, 1989 +.IP "[NeHe82] " 9 +R.M. Needham and A.J. Herbert, +.I +The Cambridge Distributed Computing System, +.R +Addison-Wesley, London, 1982 +.IP [Neu92] 9 +B. Clifford Neuman, +``The Prospero File System'', +.I +USENIX File Systems Workshop Proc., +.R +Ann Arbor, 1992, pp. 13-28. +.IP "[OCDNW88] " 9 +John Ousterhout, Andrew Cherenson, Fred Douglis, Mike Nelson, and Brent Welch, +``The Sprite Network Operating System'', +.I +IEEE Computer, +.R +21(2), 23-38, Feb. 1988. +.IP [Pike87] 9 +Rob Pike, ``The Text Editor \f(CWsam\fP'', +.I +Software - Practice and Experience, +.R +Nov 1987, \f3\&17\f1(11), pp. 813-845; reprinted in this volume. +.IP [Pike91] 9 +Rob Pike, ``8½, the Plan 9 Window System'', +.I +USENIX Summer Conf. Proc., +.R +Nashville, June, 1991, pp. 257-265, +reprinted in this volume. +.IP [Pike93] 9 +Rob Pike and Ken Thompson, ``Hello World or Καλημέρα κόσμε or +\f(Jpこんにちは 世界\fP'', +.I +USENIX Winter Conf. Proc., +.R +San Diego, 1993, pp. 43-50, +reprinted in this volume. +.IP [Pike94] 9 +Rob Pike, +``Acme: A User Interface for Programmers'', +.I +USENIX Proc. of the Winter 1994 Conf., +.R +San Francisco, CA, +.IP [Pike95] 9 +Rob Pike, +``How to Use the Plan 9 C Compiler'', +.I +Plan 9 Programmer's Manual, +Volume 2, +.R +AT&T Bell Laboratories, +Murray Hill, NJ, +1995. +.IP [POSIX] 9 +.I +Information Technology\(emPortable Operating +System Interface (POSIX) Part 1: +System Application Program Interface (API) +[C Language], +.R +IEEE, New York, 1990. +.IP "[PPTTW93] " 9 +Rob Pike, Dave Presotto, Ken Thompson, Howard Trickey, and Phil Winterbottom, ``The Use of Name Spaces in Plan 9'', +.I +Op. Sys. Rev., +.R +Vol. 27, No. 2, April 1993, pp. 72-76, +reprinted in this volume. +.IP [Presotto] 9 +Dave Presotto, +``Multiprocessor Streams for Plan 9'', +.I +UKUUG Summer 1990 Conf. Proc., +.R +July 1990, pp. 11-19. +.IP [PrWi93] 9 +Dave Presotto and Phil Winterbottom, +``The Organization of Networks in Plan 9'', +.I +USENIX Proc. of the Winter 1993 Conf., +.R +San Diego, CA, +pp. 43-50, +reprinted in this volume. +.IP [PrWi95] 9 +Dave Presotto and Phil Winterbottom, +``The IL Protocol'', +.I +Plan 9 Programmer's Manual, +Volume 2, +.R +AT&T Bell Laboratories, +Murray Hill, NJ, +1995. +.IP "[RFC768] " 9 +J. Postel, RFC768, +.I "User Datagram Protocol, +.I "DARPA Internet Program Protocol Specification, +August 1980. +.IP "[RFC793] " 9 +RFC793, +.I "Transmission Control Protocol, +.I "DARPA Internet Program Protocol Specification, +September 1981. +.IP [Rao91] 9 +Herman Chung-Hwa Rao, +.I +The Jade File System, +.R +(Ph. D. Dissertation), +Dept. of Comp. Sci, +University of Arizona, +TR 91-18. +.IP [Rit84] 9 +D.M. Ritchie, +``A Stream Input-Output System'', +.I +AT&T Bell Laboratories Technical Journal, +\f363\f1(8), October, 1984. +.IP [Tric95] 9 +Howard Trickey, +``APE \(em The ANSI/POSIX Environment'', +.I +Plan 9 Programmer's Manual, +Volume 2, +.R +AT&T Bell Laboratories, +Murray Hill, NJ, +1995. +.IP [Unicode] 9 +.I +The Unicode Standard, +Worldwide Character Encoding, +Version 1.0, Volume 1, +.R +The Unicode Consortium, +Addison Wesley, +New York, +1991. +.IP [UNIX85] 9 +.I +UNIX Time-Sharing System Programmer's Manual, +Research Version, Eighth Edition, Volume 1. +.R +AT&T Bell Laboratories, Murray Hill, NJ, 1985. +.IP [Welc94] 9 +Brent Welch, +``A Comparison of Three Distributed File System Architectures: Vnode, Sprite, and Plan 9'', +.I +Computing Systems, +.R +7(2), pp. 175-199, Spring, 1994. +.IP [Wint95] 9 +Phil Winterbottom, +``Alef Language Reference Manual'', +.I +Plan 9 Programmer's Manual, +Volume 2, +.R +AT&T Bell Laboratories, +Murray Hill, NJ, +1995. diff --git a/sys/doc/9.ps b/sys/doc/9.ps new file mode 100644 index 000000000..22f5948b6 --- /dev/null +++ b/sys/doc/9.ps @@ -0,0 +1,17914 @@ +%!PS-Adobe-2.0 +%%BeginResource: font lsunr00 +%!PS-AdobeFont-1.1: LucidaSansUnicode00 0.9 +%%CreationDate: 1994 Jun 04 09:53:35 +% Lucida is a registered trademark of Bigelow & Holmes Inc. +% NOTE: This is a partial font in Adobe Type 1 format. +% The complete font in fully hinted ATM compatible form is available from Y&Y +% (508) 371-3286 USA, email: tech-help@YandY.com, http://www.YandY.com +11 dict begin +/FontInfo 9 dict dup begin +/version (0.9) readonly def +/Notice ((C) 1991, 1993 Bigelow & Holmes Inc. Pat. Des. 289,420. All rights reserved.) readonly def +/Notice ((C) 1994 Y&Y Inc. All rights reserved.) readonly def +/FullName (Lucida Sans Unicode 00) readonly def +/FamilyName (LucidaSansUnicode) readonly def +/Weight (Normal) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /LucidaSansUnicode00 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 100 /0064 put +dup 101 /0065 put +dup 102 /0066 put +dup 103 /0067 put +dup 104 /0068 put +dup 105 /0069 put +dup 106 /006a put +dup 107 /006b put +dup 108 /006c put +dup 109 /006d put +dup 110 /006e put +dup 111 /006f put +dup 112 /0070 put +dup 113 /0071 put +dup 114 /0072 put +dup 115 /0073 put +dup 116 /0074 put +dup 117 /0075 put +dup 118 /0076 put +dup 119 /0077 put +dup 120 /0078 put +dup 121 /0079 put +dup 122 /007a put +dup 123 /007b put +dup 124 /007c put +dup 125 /007d put +dup 126 /007e put +dup 163 /00a3 put +dup 167 /00a7 put +dup 169 /00a9 put +dup 173 /00ad put +dup 174 /00ae put +dup 176 /00b0 put +dup 177 /00b1 put +dup 180 /00b4 put +dup 181 /00b5 put +dup 182 /00b6 put +dup 185 /00b9 put +dup 186 /00ba put +dup 188 /00bc put +dup 189 /00bd put +dup 191 /00bf put +dup 198 /00c6 put +dup 215 /00d7 put +dup 223 /00df put +dup 231 /00e7 put +dup 233 /00e9 put +dup 237 /00ed put +dup 239 /00ef put +dup 241 /00f1 put +dup 247 /00f7 put +dup 252 /00fc put +dup 32 /0020 put +dup 33 /0021 put +dup 34 /0022 put +dup 35 /0023 put +dup 36 /0024 put +dup 37 /0025 put +dup 38 /0026 put +dup 40 /0028 put +dup 41 /0029 put +dup 42 /002a put +dup 43 /002b put +dup 44 /002c put +dup 45 /002d put +dup 46 /002e put +dup 47 /002f put +dup 48 /0030 put +dup 49 /0031 put +dup 50 /0032 put +dup 51 /0033 put +dup 52 /0034 put +dup 53 /0035 put +dup 54 /0036 put +dup 55 /0037 put +dup 56 /0038 put +dup 57 /0039 put +dup 58 /003a put +dup 59 /003b put +dup 60 /003c put +dup 61 /003d put +dup 62 /003e put +dup 63 /003f put +dup 65 /0041 put +dup 66 /0042 put +dup 67 /0043 put +dup 68 /0044 put +dup 69 /0045 put +dup 70 /0046 put +dup 71 /0047 put +dup 72 /0048 put +dup 73 /0049 put +dup 74 /004a put +dup 75 /004b put +dup 76 /004c put +dup 77 /004d put +dup 78 /004e put +dup 79 /004f put +dup 80 /0050 put +dup 81 /0051 put +dup 82 /0052 put +dup 83 /0053 put +dup 84 /0054 put +dup 85 /0055 put +dup 86 /0056 put +dup 87 /0057 put +dup 88 /0058 put +dup 89 /0059 put +dup 90 /005a put +dup 91 /005b put +dup 92 /005c put +dup 93 /005d put +dup 95 /005f put +dup 96 /0060 put +dup 97 /0061 put +dup 98 /0062 put +dup 99 /0063 put +readonly def +/FontBBox{-90 -211 977 1005}readonly def +%/UniqueID 5054500 def +currentdict end +currentfile eexec +AF9D569DD6A39B9A08931526FD86DA1F3D52F6A6E9A3C2A341616BA8AD4A6BBA6A84F4F691C60D +64B463C6D1B3A432634AAC416FAE1067039D940A82A692DB189D5719DA649D309E36853E1F767A +0DF1C424DA3E9D8E6B45B659E31B0A03BB7747FB2945268D0805A130347C7455FA73121BA001A8 +5BFFF1847B8FBAE1B61BA76AB61D750F7BCDB1EE8E4B4E95657E783B2230A68A5A62E9E39EA352 +7B3E832C6BF769697C2B18F29596B8A56AC9532224A452AE7A77A33DC5D437BAD5B4C1B9DD7680 +FE4456B59A798F584F7913B3A790F3E5F9559505B80A36CDE0A4D46A595E942D798E6F6311B3E3 +613059010E0C594BA804C9FA8EED254427D021628C6A59FA5C10314D3143AA329B9E1E767CADFB +B864C70BE2EB0FA96FBDCC2EB1B44783431EE1CDCADC68DF65C29B4AB7C198BAA625A3736F6240 +46E72FAE8F379B391393A007E9F796065FC622322C782111E2EE7B73FC09C5852F35A75CA296FB +ADBC77E83C2378DAE017DC93437EDA4E1473D256C7AA433FAFF90BFF104C39847FB6076D559B8A +4D05AC2A35837CF7949567F37638F1FF869CA022F28979DC7AA611BCACFFE95AA23CBFB86C9719 +BBD5738FB6D86326F1B0A84EFA79C80BDC618F42DFAB8B232211332E1D793A6C4CA71DE2D7DBE1 +5806FB210EA36FCE5FA253B9C507225A5581765AA21DB9E1739AA6063F3F7F11D72E65C3F9A83E +71C8DFC9B9E13C0CCA25836D4233D10595ED053201C745C989878BC0457410C29FED3273550E0E +C93F30B6E5994D0DE950C82E70299AB82D97B0EC11EE5CFD3A5311B0B9623C7CF73BCCE4D33436 +655812E9BC69045B581B2BACE84DEBD480A8652676ABDB2976168954DCD745B42F92F25CC2A4B0 +58AF8D1F0BFFC280B7FECF0593655FEDBE41135D72874467035351F424E92C9E4F628501066322 +AE5896C2CC8C5AD9EE9C4E2076DF548DEF8A6ADAAEC8F05CBBB8882BE5DEBB3976FDD20539F0ED +C5F331CADFFF8B1E1ACC3E0DE2DE0628766105E7EE97E55E66E2585DD7412749CCA828C3CB355F +716E5F447857D298C1383EDD389C2C09F3094A09F90652D5913EEBBFB16547FF31DBB8C0F43480 +6C96524DB4F2D96F6A32856DC62FB350D208B4462521EA9578695E7F8A31FDAFC065535AB32B28 +4F808767213AD4B89C02E59E3F2BD114BC411E4A9B58F97102E7ACB9310EE2AD2EAEE87E1702E4 +3E00854C35156E731478402285AB23B0049A74381C2355F35511C7D966B2EE653CD8A3D7D6505E +80A4BD2C96B451354DD9323C30C9894A60CE614D0B091D3A03A5EDA4BB127F255FF706AD6E6827 +9123CEF7396D89B5E5A968B4A4C0F4B0C227D1EE676801922A3CE24F2602569AF11ED43F17E2F4 +6669AEBD1F6B9E53C76043E1CD9DACDBB3B6B87F949372C03E9A5C80FABBF2E7767880B7064D05 +AE2D717B6A189D0C9F8DBC981EBEFD9A031C7592EFA0C08FD8BCD2FA1210881D95D6ECD9E72096 +5ACE2A9462EB9C3504315CFE8C6B5362B833CE52BC726DCB3450CEB73E42E667B9D86D0F985A35 +CAFF807F4DFAF156AFDCB999DBA61476BF4CCE49C6D8A8B7D2A3FC07EE8346E30F68FEF7774273 +6E55BA23311F85C7FAD9D9AA1EB17E14C45033BEE8D3093AEE9E706133FA94413F30F723568255 +498A071D76C10D12536425A7185DB60BDECAF6BFD0BE58F418D0E62FDA7B846BDD490EA7CEAD05 +E1BB9A4DF66E13758858B80F6C7216D8D606E92BC93576A1FB3604D9FBD78656FDF64328AD9466 +3CFABAB19A0636518FF61E62591661FBFD264B90156E24941177A42A0E5315F6168A93B96E27DF +2E7451F382C2C83241AC2B5F52A2C9453D3E207EBBEB3881FF237E9135E1D9191E1FBE5E606C60 +43726A6783CD4414D26F8F95B260FAE60262DE148545079C80C962D5D7BDE2A77A814CDD4ED901 +D28D4D5C4324DF7F7AA6B832B6F5E0E129F471A12373F0D97037FD695F921E0CAD8963372E8DC7 +F3AA5E004E1F5980BA9825774BB2DD511B6A9D5A0C7E7885E39E3B5497EF466C52B7DD4CF4AD74 +6E62FE4B1E082811AA45D6483725D0EE18C9C6BB988C036913682EAC4645EF90AD5FC24BC78778 +DDDD48EC8F1E64525AB9B1EFE0CDFABCC6A17BDACC1B3B1929FB2FA1DB85991FFE1B92B7999C99 +1BD3AC17B8A44E11DD954BEBFF002A0562EEDBC507DD0FF13ABADBC8E5676F5F951D1B32B725DE +FB33219FF4DAE8298887E415434BE4012D1A294F807CF53248AA137591B532B573F41732216B12 +685CB4B612B782E010644CB813A31AC4A25038A17FA0872E515BB2C119DEE59829927FBE20902D +18CF2F33E18DC0AC2108789FA1D1F61553184FC185A3BC3BA6985449149A08E4484F33EA950C18 +B0148B6DA2EF0E2F1BE218CBEDFD4A4E9A53235840A8E8DD1A757D8F48DE07C687E5F35EF237DB +EA582FFC92EAC5A8E4D9C1F048B037FDE46770B073B161333AD5E0DC09187DD0D9FF2CAFEFDCBD +00F3FF4642B63703F6B4CA2A479BE5145E3EA90359F4BE67F1EF0EC07F997A7A63797EAC98E3D0 +C64F1EBEC99C7C436EF655ACF76DE5201A5B3F5CF58F0116008DF241D370E616E8FF10BC551606 +F041FF641B4C8FA9274BC3FDE69602B2BD58D1428B119607AB28B30393C0BE4E33E5EE1059C9BC +1AC92B4AD1C7D1C71FB44429D8F8042F0A7ADEDE040F13D0C13F9BD92D3BE4E77E446DC8D57FCF +C704F6EB8D438EFA72F74835DC24E853B3B1178904F0484AED543B57FC8ABFFF4253AFA2C93C66 +C2144FF1777A1E3A40D1D023BCBE24557DAE5D76DAE6FC7063E11A5DD52B0060501E84AE0E66ED +7522828C15045CE72B548B59A3D7DFC3CF6779B4A6D4891B95CD4C6613C9390DD953FA58FE97D8 +A545177EC9EDB59770B4B67111A1FEA9E74A61B360D9C19100440F8A69386EC3878C732DA58580 +3A177AEFF85BFB5D112C37ADF7604BAB387F08243B2FEC24DAF9F95BB75A678DAA7AB277D933AC +0362E4DD5E6E4194DE873932EC10013B68CD0D1CF5298816E6B195372FAE49A5F9F722C30EDDBB +088E0F1F7D8A5D6386B8E3219125A8ED2A4D534761DEC9DA916FF875E13E309F2F2C925F28ED5E +B792A290F05B7732D217A1CF9577C0107889C456924AB91BFB728E4C4A0E70412DA721CA4B1A30 +189BE4414AEE3AB1943C0349ED437C91796EB8616D3CCBE148CD21B0DF7ED5720F18496100119C +2995490D7B60C994E93D874AB352A813604AA9A83D9388F758B7F479F9F6EFDBA983FA6DA07E7D +4F80E64E68634D9D811F3A0088BA46040577B89C7E147CF96C4A999CA1899799FA56F401645A97 +DFF68155332EE3F23F3865B6DE715F1AB687A696878C9821E029E3D867BDC50322A0C90081E3B4 +3BA1E889C277DEDA5ECB0CBE16F8FD562B82F22DA851CA5AC51EF3051382E9706A2F6F14CE6897 +4292ECA605ACCBAB5071ED68BB05BDDE20C04E0007A8EF46D69FA79540C53E34C29F3CB68E9329 +8472F6D89EF77A28A18B334278836F65E88255F1FD3A3D031A22BBC607E7BDEB1D00AF60D5E024 +7E971B8965728CB1CAD6B5853F4F66448031312AFF8E56B01BB8D50F3A1060A18ADB1FA8F84C69 +399BE117B98430CF63288BA1950ABE0CEC051B66A7EBCC7A3FC793589A4C52EDBD1A71ABE49916 +10496FC6C346C376D3B061B00BE7B4A659D21A2C0FFD3FBEE485EDB7BEE599E5248DC5FCD89632 +61BE192134BFF9C9709E76A567A0F7B5773870EEBE07E3630175BFD8C5520B2AAF6DD2D7C3FAEF +2E3F52318A7AD6E05847D76ED22D021BFDAAB041B16F2AE08FF86DE08FD998D61DE2D0EA477E46 +6E963EE5EB69F69E30113F0D65683C37CDA865CF92EC5FFA54DBB6798738D38DD7898BC7C26AF6 +939EFF47B1A3DEE6B5E38505EE05A0F671EF8917A434D92EBDD8F6820ED3A2F24199D47745D393 +9259A5D856E1AA9EBA0292EEFAFF75F709ADCDA0D6453C3550DB28BFA22549BD2A282E8B9F2367 +FCF20AACF9E7B725D0ED0498695F3A2DD76389BE8A99B603CFB0FEE3C5642BD02670108226BA9B +A90B90B1D660C552307E3D388661A20C5F42C3CFF5D0E0F6DA69792E8FB4C83AB821D0F7D80F23 +93BCAACBBE56E8095466F7BF8B0504B72734DEF119DC32DD63F1BCA3A66A5F6DB5BC221F4927C2 +B08601F89D71E754481CD1B3B8E5EC8E9A22F5AD8CF45039FB8912A2E4EBC638743D7614BCB41A +49D162291E70BD656EF7F54BCA72BFC633984F1B15B4145F13D08B255B77A357C15B8A5DB04C3A +95827DAD0B0A302577C12F66389E4E40040EB52AD36552A592C47614A9035E7CDC4BDA55645F8F +72F10287EB7682F17034B836B44F111B786B8A6A47023EC1C950A4B0636C28E1753781C9C0B206 +5DE58A47D2E7B1AD71D8DBD36E72DE625B5F52B9DB0F9679FC4B61005A112E9AA717504C71CC0F +F50CE8E96DFE3AF6613CD4A3B4645ECC5F495E3DFBC1EC17575457EF39A0D4709221F2F1E14FAD +ACF7FA5CCF662DD341477170FB291B706D76CE78C3CC90CD36A45BD04704DFB2B251CD9B1B69E6 +B9DB3E9739DE8B2CD9DE63E61ABCB8581AD13493468EE995EE668DBE6AF6809F9529595D67DA56 +DC7335876F36499EBB7226FDB9876A7D0D43159E77F0AE36B55033A11156C3F757FBBA38177D24 +88EFD1BD9D8F69ABDD365989CEFD521F60BC9005D8C40942B43FC6DB8088842BE8A7B567420A80 +9AC76E7BA77D5EFC8D9A2FCDD1A565EB580207A250621E27E51685A0C650323B4D2101810F6C89 +E5D312BAEDAD3097F87C6064BA138681D3192C219ADA66AD2B0C679C8B00078597B2DE46F5A040 +91F8C34813C07AC64B2F5FBF0EF52B16AA1EE9B9ADE71108DC9D47D587585A933CAA161CE586AC +E30BA582A5CE8728991B10AE2012C2291B7DCEAF72E0299FF49F5ED495773656908F04F697ADF9 +32AA61E6D90A87BB0F0311AF737E9F72C501CF1AB4DDF4392FB9F3E71F859D45F32EDF329F4856 +C12ED2DB6FA3631B3731D5FB2DB79E193BB8BE75B85722E6CD85C35C05C2998BC6B854BFF76A39 +B1A51ABD3304ED453AA413E6F6329B651FD13C0751886DE4553E0B79441FFECB81839626868715 +0DF0FBBD53F7861647CAC9C633B9FF63BCB644D124F2420A7FE6EE7EFED293C9D53983617F2500 +6CDF86C74694A20569BBC5DE7616333432C0FD525029E612858F5BF27D1FE06931A5AD37675162 +2AE14BA10E2702CB896CC5A5164A287AE3771036AB2EC7F50B20576E73C151580E0D0884277FBE +9D2FBC52DDC0EC22A07138C692108A6C637ACA40D1881027E23BECFF6C54A50DAF7A79B5CB4BDF +AE35CD587F46B14B3A89A50487F8A6E20EE48099B44F459E48D65FB393D2874E4BF7544FC325F5 +B04FDFC0ABF2D6B8B6870A617D344AE093C4412007061670E6913B5581A0EE53B3D8C2D75E9560 +101D4C217EC44BE71F866F0F40D1DC7296ED313ECBFF60CA3A05D45E51E32D9E75ED31F1905DC0 +4F4AF2A29600172249D0B8B5B42D99A546A9C45704A35711637ABD7A64BF4D417564ED0BBBC7F2 +093F6C7F87A770F6B6A655DCBC13FB4CC24FAEC848549CE2415301BF6BF234405946330E2964AF +A37702223D1466A780720F39FE966AC1023866246F7E25BE2A1E0C009708DB2724E13770A8817D +6F27A095BED4C33648173F0DD8C627F405ABD3CA636EF8A9E77CC67D20E51721CA655704BFEC27 +564A69E6193E5E3AB1814FBD3BE29D72836BF85C85F4555FDF3908E6BED58E0927BA45AD4434F8 +D15C510FA5CD1311F7DBB20CAACE0D88535C58309CC82CA5E6ABA2E0DCC4503149E52572A0F8C6 +7ECE6B8145C85E5F211F341AC1450EEF4D1102CA184DABD5CF00049F7BE76FA793893F2873A237 +FEFE245F059AC85956B5A603DB8871BCF4DF3665364525E7B539A6A4F2C59473908121FEA5DA8F +F5E4A4FBAE0C602130400E1D9D1185703F20895806C2DFE6E47408347CAEF151C730783FB6BA38 +9EDEA18F865240ED604D0B6F5850CD18FEB63AD0A3ED46A933DE64C9571C7F15393AA81577A0BA +6A227ACA16DB43307E76C10FC630E6550079E7E5609FACF8DD84376AC186DE2E1CF84847C4E2D8 +C58385EFCA099E81B6435D8DFA6775BFD76C527DA6CE32B6326944FB6970D2787190CB0572AB6C +531EA63DD1F6BD5F7732CC7BC7751DB30874EBD006978CBDE960BFBBD8C2D115C26E7CCBA2C802 +131AAABC284699B18989BE8D548F30389BB0DED8FC122A1433EA61D074415882143D865E28A9D7 +8E59E47EC5EF1E2C5151279BFF1D77ACAB907F7DE9514A71B21C129480FE708B9AEA442EB1DDC5 +59574095F57BB3750DA4521BD298A19CBABAC650FEA7D9DDD40DFA7999D0CC79DCACD517E391E9 +2EC65FE3A64CB5BDE1A203E53D73C994D53215EDA4EF8BD06658AA94EDE4DB65719A0903035679 +B7E08BFA7C40E9AFC3ECC0A243C79D920B2F87C75430F2490362FAF9FF23E3880E7ADA9F3DB155 +6E00470C2FBB131F539600D21238CACD785964F533C80A39605C9AAFA6438B11F72D9148455E9D +88A43178089337070A47297BE223B93CA175DAC0EA3CACA4A9BB07954449A1F9A8F5DC084602A6 +2DB0D098D3EB9D967CEC1B247134B47DC120C03B66FD26FE2647C48433BB994310137C95B02FD9 +54B450FF00B194F0C5A0A8623B1101B5F32589CE81BB1EE3045F4C78AD26A9C5868AFF70DF6179 +F2A72599892518A45C54689AFDD92A5E21F47CFF3AA8636F82B33D9716DE11C3297C403B5E2708 +D9AAA7DADDB484F6719DB1A07F42C0BF6532352BBB529478F0F08AA86E554A2C8ACB4D261C0358 +CDC56FB9FB160F9CE9C7DDD0CDEAACD1FC38D9066AA1B50E26079452FA515EBB70F3F5EFE3DBE9 +791161BC643D1BB3147C9A0B0563EA94F930201780DC3E97164C369C62D75F4BA3FCB116215771 +0C7B87C4A42BAD8EE7AD49877F9AB41BBE69730A4FA1F83F4DF48F40AA6E8891D61F1E2F5B5AB7 +6E85BCDB7DB8A8D7F3E1C5628A51246896D923DE53B1B297CC8E37E0C46A6B42F616CFCF17B74E +DDA896D6075C4D60166F05F30DE0CF48A3BA092A0D2A694D01457C46089B7F573CA6A7499BDE06 +098699CF1F28CF849D2716140669C98949A551A227BDDB5594F205BFB0F0379CCDC1B53472C335 +7834C37292EF98DF1A5B42F2E8EC82381AEBFF1CD435499D35A59EB295CF563A574FEB6F8CFD09 +D9C2E2138F486226EF089654BA218706E643BCA601DA71B7A2670A15B25523D7925D1E7BEC264B +9D5D47F30A9D36CEE25E5CBE2DB3D6E1566AE8067DA2718ACC991B618578F490DFB3B2F9F2E482 +3CC80AB2B8BF562A6E5212A2A2F2604C0894D1DBE14FE9D7222E7F3AFD49D5B2344BB34CCB0007 +0246A8A3A04DB4866BD9823E0C21C8C226BCBAEB92372AB547B8FCFAAF03AEDD70D2207840D6DD +0F833F8C19DB2CA2BA4F271712E2C617E84F34CC15078F9A8972E17B8CDDB1D059C53F7E34F975 +1DD035E00F744D2EE8178B33B6E684E6D55186C9F2FE95F9964FB13CB7D83968F06BA14A62BB43 +18A5830514BC532CE55995E1CD3C939ABAB0D211B1BFA806A353E325A73BF75601E817265F6B08 +A43BCD7AE47648436A1B5285823F234601924C473B761B1C057D4C174BA653D5B0E7186B99577C +2F353E7AF1CC395EAE45B1595CA37FF9328AC2EFA8560952054F76A72D7CD91AA018B85EE553AA +532C2BCBCD412F349DFF5C37A1339AAD0F4957DCD5EC6833060E93914447483B2A2D9041621980 +83838093C798878E5D558F7B51A9626F982115EEDC2039E3C583F264EAB8321AB228868F221E8F +4F9EFE1E760903FE51F98AB321D1347CFF719F4EC83B91E010961CA4F26B7BB7D4C769FD636A4A +1931EBB2668FD9FD1DADBDB6DC61AAD03C0077AAA035608BB2F6855593CDD133AC28523C100D99 +C98A26C29C0A610AA270C03375AC0B9E7F7F265612B34C4DA3EE925B6BC8A98257986AD2AB4BAB +B31D5E387984D102043BCD2F908573DF0D5BA1C1A59FBF2411A820DA0A6E69D1C19096580701B6 +D8E814BFFC91F8068DE5D1A8C601010A53393AE554E003AE1592FA5FE0609961DCEF7D944F5857 +64F66C20281424DC4BDED24291DEB386AE9C3DB43133E91401F528017AFAA530EB2736D3B6CE7B +CB1E0C5A6DD5690AEF3465BA0836D2A68D6F3C5958843F4299B8B2728116952F62815C71B483F7 +631338CE3FD626CC22C9256AC95D88B2F4659864B022A0BA75127BD9F4876E0251A2E707FA37E4 +D5D5AEAA0EEDB18F5584B9FFDC9386C46D1D19B0419EDD812FB9FD83D531248CD1F6A4DB702135 +9C13D1629EB05CEB121CDA5944020CAF186AF94EEE6EFF48023EDFE205E749942482DE061BC86F +58FB8289435ECE461AB84B09D342138561C2B4B2496022DD57C8253CE557FCEE1905C16A01F5B8 +BA4E7F7D5006D434CF962ECE76E5C269A7243C826C0B7CCB5CB36088AA99BF3F3A7377A76779B6 +9ECEA4A83BD4713D12BF424373B399EC0A99CF5D8AF7D5A86A390A80AEA33CBBB202E0A8BBB72B +1D685B2ED32EBA11840D0C9CE80F61BF2228924DC196B9C40F81D124044BE6DF12564AA1EBF652 +41AF0DAEA563735BA4E8151F3C9820273E79DD4E10E5989BD0F291DA773C3DAC91FDBBFF6EDE1A +5D5FAC03DBABB5C2E97BFEECC08B2701C72ED14C9CA5040B9FC61A08800C5137DC617398405004 +BC3FE46672BBE3342CEB1F9750CD7F4E057E098ACFA0A441C460886FD630EBF90A327DCC2E2635 +9DF000FD24E56CC30E31BBAF1391B89504712D09C867D7E68A965E57F854507D7294C9671F38FA +9B768EAAD52137CEA03A35C82BCCFAE056DFC1214ED21EC9F5DD4555C642C2FF167EEA4EA07CF6 +A97BB9042097B1AFBFB6FE69E09C2C419E6AC38372B92590ACD39A83C84EF9AA7DF861950F5354 +046E90AF64F28B6D38CE89D602CEF86B1A47DE38E31AB242864D7BAC0EE07878CC2F30A23FFE05 +B055E4EB475BE2035B6F3FE1573FFDE9A7960CE3180AD3FBDA2BA62215BD4C964DF7FA9B7D8A0F +B32A8C36B1678E7297212BA6B5B72B1B0B9ED8C5F9390984240B3C77A137D4EE6ABFD66FD2BDFD +57CD46185487419C70C2754008A24C064D506D8FEE86DC8FA6B5AED30C3662766B8E4C7A0E205B +EF87BFB1DDF81B236AD601F4C1B25DB98B211C1BD85BB8026F6EF5EB14901240787EB10779A7DF +C70E02E2066E516BE60C726BA4E0CAE1C327A762BD30800C7F584E2796AB6A0E80AC5500498962 +52B1AE178A2FD57E0A72758E794E455E1C78696634C09077DBE2233BB4FE9FD3C428506105F32A +68A9DE914C10D7D3562F0E70C12963E7FA5EAA2AC08A384995139D4EFF7AC6A1425929DA25DA7E +11E40FA431C268CC157D3A2E7420923D546B22C8CA59ACE87633D5D6FB804A1569BAE93C004668 +A1EEE0DE42DD0A78FEA435A7D9C84A95952F78E626AABCCFF3752171730177C9AC44378EA69012 +2F1364640C4F200D885A85737080FB67E7D1BE9614D4A5A2F538C137E92FFD914CF587F03084ED +745B868102E34FB9BC2380012264F1DE610B218B84448BCDAEA37C9627A6F8B94406D069BDE191 +1E23A4AF49D64233A965F0253ED2071E61FD937A1B1B501A43021C580EDF1A1E92D27ACE0605D7 +3A868177423EBB55F178963EA9A4FF3F9F11DC1F4F938E36B04DBEC953F585A9180DF530906CDD +046D5758F792BF3AEC670EFC402596BAF8F4A3052B9C586A3E17302922D66E6FFD813480D83D4F +7245224718D31E2006A72DBBB1CE84901F69F07C5EF3554CB22A979BEDDA37E0B2E635707937F4 +526896CA654964ADFE8CEAEB0DC5AC4A039B7C4C641CE8C8D9908E9BE1BD78C77E272F9811895E +4F8DCF94CBC0B826AFE5C1692937737713CA4F7A5FB901FD7DB797B0DD9C6EA4F82FEE8E843C0D +799B552E44193298AFEE0BBBE7CA2F6759C891331B5C97AD2DFB0E2CC1BF99589B7E4619A715F8 +AB5C88BDAA1032D90B4CC5A2B4CEE7470E56E86D4B58F74CBF8D519739BE55381B75B3C8FF1F39 +45D5669B0C9F068551C7CF0F5C227F4401EB8FDC9105233154943A10C479AC9826D6366B03A775 +2CA00488AA04CDAF8B1E0DF8CBACB678A26415414D1F15D0F46FDC5A379D5EFC53DB57CD66AC73 +D274626739D9260F078EAA529693B112392FC5DC3F025DCCE34858856D61A86355F8A74427B073 +3B6AC1C2A32B1D3FFD6402798AA093391253CC3D65595148994485CD6A74271FE71093552BD0E0 +6E4BD8A55685FF784C530D186B923AEFE16250F3330789BF632F9A1AE789ECD4F8DD6055C3E7E5 +40F0193CA768EE69C37B8E51C4CEC1D1A7B12ECF6F65DA9EADC0B3B77D22084CA3E48CF0BB2E48 +37DA5D58F4F2795BFF4F62C2F520AE173A098E6F1E5ADCBD2BB3A1D26363F8F645B809A8AD40B7 +EA90DE4A9A26BE11FA203A55B144161881665D6D1D74263AB371C31FC70F9D8AFD287C0B87BD65 +DE2B3DA8E13669ABF4501ACE58D9CA150F30B23388AE9BFD053976B223E9B37D226200AF4D7697 +840FFA9EBC087A72EBB45D3D1FB5EA3E3E882BEB4F9B702DCF69DA879D72BEF2377FAB6094314A +0673364D4165950458321F9190989C00595C4AB4AE76C246D26B088F29965200103D17C6104BB6 +E95802B4068C0D24F610532AAA2267D6A36183A5CDAB42140ECE4E0A8EDAFAB4BDF8EC6D706CE0 +562235124F1564DF380549FD931F3FF4616F24E9FEDFB3C757570E60D56D1F3568E575A35A9E5A +F59CA70D9D0CF142A3F50A396807EBCD83E58AF06A4EA165730CDDA6E363B2B1F0B060645782F3 +70E717D38A3BF1552AB327AE0F9A155E15925A64D0AE25D00C5FF977BF824955926D8CD2072C8E +41591597E6907300DEB999F06449CF393A8C0A04EC6A9430BDA18F680E6B9CE7A438320224C47C +FF64783FFF47F55CFD836B93163BE2C4D9E16C0D38E0249FB1AF2E6D951C89302C7163031AB84A +F4A2ABD01EF9AE342F5284390AE12EEB1FFFD93B281162F01AC4C4FE90A4E5A53D27802A647496 +94138C6D66079312FC04FCA387A5939556C12130FB04FB892EEC36C7470EEEC2739378F96B6392 +2668A33A7F868518F380DC0E91CE2C90484DA50B6954FD6AE5B7A10578932220D075042D762CEE +4AEEE034A4637CDBF7298069DD2FE8D74265ABD5E4BCEAB81425516A38442053CD3AF67E80A50A +E9213D7B4AC2C62E22A73DF69F8BD5E0C6AC8C688DA644EF6E20210919ADD9D69FDB4D5DA26B06 +10E8DB9748BA445FF931E3146E5937EBADE4C7FC61303004AC549C1900F5CF8E1AB0D63F13CD7C +5EB22E21E9FFC31AEDDCEAEB76CB869253111EF1CFB6D8162DA3E59D77F44000B96386C046861D +B1FA14BCB2C07B5B373312468AD8D73BB483429A22A27BBB62FD087A0F8FBBE23CE21F3F49EDE5 +F0A329993AD337C393F1332BD534750579A3E72D194B04EBC430594D4E181AF8FA60618E1502F9 +3172E26B55E5AAE989BBCC48374E8C6906A34BFCE114C2B2B4ACEF9BD7F8CD81A44F855F15CA88 +BE8A56AD1BF77EFAA5BC81C97B8F29F878F9091D651D5903E3F60D25EA1D97B6025FDBE181246F +05262E430FD57ADE69286353EDCB572069E25BCA99F3FE8744ED8297D933BD7B5F5687BC5DF1FB +584B8207EEDB38FC95BC6036342B012CDBDCE4F565B6D6DAE2EDA1B4F40B054DE50043D7AC9C3A +C0DD32F1AC2D38D0230231C17D2EA583F5740A47CCFD0FAB920FE1A49914C663D8CCAA9B1C0672 +055483B762DFF0493E0D46643BA4458DAF364512A3C72ED1AF38DD00FFE18592E96DF318B7C96A +2FE3543688CF50562159576FC9D051B6BFCD32A80FDD537F2A88DD9061CCBF832819F09570308A +10065010DB72AE096D02A61092961094C1E383712FBBB58FB322ABCD0CFE77B98D9C584AD5C9DF +53EDB81949D310679E2D28A2D8B347434BF71445EB9F9F1A2C61B6BC16EEC4C1522AE46C5E9984 +1206FFEBC27388D4952FE629644F6AB7733C457CF939C324DF0C4FFBC5E7BECF655B1F09670D17 +421CFE6C9A0FF4C4D7342E8CA177A602E7FB93DCD456151A8208C332541869298A0EA29A787931 +906B0EF099CA32F975496AB342130F34C92CC5A863029E030B66D3626C88F4887CF5A8A92AA750 +E5660AD03EA55D69EDF466D4AEE45067D5496FF91F26BCDA766476CFDE111F227FC7ACF6FBE1F3 +22038A92031650E9B813AF16A37B4095F039DF57791D3F8242C2C409B37D045001C74BB740E2BA +0D29CE658C65510AFB0D899C651DFC01752F9425D5B152436B04D5DF36DF03F11E141FE994BB0C +B0B7E37D5ED5981FF91DC25335A480ACDB25C48C20EE40F66F5B482A626A4D0DD2689D862F302C +E5421DED7429235723092734BC73D00F56419927120414CF8659CD1F964128BB6FC105A7E090F1 +A2093CDB77BD1C04C723E0F1C5F60BE70AAE29BF0713F86C58DE426819D22390DC1D985F2FF86C +08EF83F2E9AFB3A62EF4958945FE270950418D0B26206545CCD081E4DD18C9661BC8CBB4C2AD15 +1F71D6BDFD16F8FC0E239DA5D19E8C2DC980C367B7EA589A5278901D913600A2AE6728589CA00C +44957816D98775D86D9F11C086A95601730EC4DAB3306ACAA840599A785E4AEC4C0B45D14800C8 +0EA12E04F69836CA05D79543A7D7043DDE89BD573A8A937E27DDB89267C30731E20402901F9042 +675860C2C1EEA408F35561E73301F5DD52591A59FFC7684A1FB9228A3CCD6D321FBAFD05718411 +DCDC2ABB7A588C8FB14D916993B5FBC01409652E5818F2211C86FC21FE154B464206B642B12564 +A6F4A8F4FD5ABB6F48E959FD1BDB8C413B2D6E12EE5286A805117A97E3829DC83F431AAE03A6A9 +3C97DD6640E4EAE56AFB44C1892D3E531FBBC7C1ECEE90583A72F6CFD618CC01E0DE8733D38568 +2600AF19FA2E08FF0C29EAFBE912C289E57F0C315AE24445F1A5AB2F492FA7A38A4886FC0035A2 +7E793BEA877210F272D16771C90B5BD86267F889D3A25546DA863A100005511CED9C95A1E2AACE +E762E6501DF03F146719D3581365260811105609E56239B54D7AD1F0AAB6C7C168C7DCCF3CB30D +06080F32E815CFE2784FAAC58AEAE4F22D72CFCA289BE03F9B2DFD27FB1E2D27572A7400303398 +47AD06137695C113E8C2DFC0BAB9A3ACD2A856D9E7927FEAAE009B6F0CB84F76A488CFD5205AF1 +DC4313B6E4179B1370695509FEE3E64A9AC425A043E434ADED0E5985B293669D09968D0AA231E1 +B2F617CDE5DF2A681B2054EC1FE239E95EE1A11823F73713F9CD4AF03E13A78C2442B6AF16360B +01E8CE7DAD91717567BEAC799962F00A3509E24E4C4882124006B252F9A4C88071629A9C2B7104 +6483958A3D0FEC7F0A48FFD5E98F3C49B0FF8BFDF5824DA3605980B4D72A8902ABB0E0F52636A1 +06605CB90404E57B49596690E4B0591751D5630148B140AD0D2EA236764B131CE42AC418D3EA2E +2DFD09FF17D979E54C6194DEE059501718A14F86ADE2E231842ABAB8A6634C0C31C3C125048D6A +0E96A2BD785D51591B79E2022D49F2EC9BD874FC2FD52A7DCF644F124215C7B9D3DBE9919BF9D2 +138F0C75AC93F48C7F125973BBC8EEEE34502A62986FB8CAAA8242E499A85E43387264D3982838 +791590583BC2D74F1D1E3A4F4723457077D8E538BEB749D35F44F37B86A26C90951CD56A0E5086 +74E42A1EC33FA88A47C248B2D9783D4D788082B89368D73F2EA3131A0C78DF9CB707A0F65F3AC9 +3CC6E81866BBA0D87902E04CB3DDE252CF76344C2A2EE70C9260BA8C4DEA508D5B267A9E852C75 +79C062478C9F224D6CD544047E6643753F6B9D387EFF69E37E8EB61E6C50BF6CC93845070FAA36 +72EFFDF8F0EFC7EEE9D42594D1786BC7F3280FCADE5027ABFDB83E6E8A72C457BD6B2739D263F3 +27C5E0BD130514D98A5FC840558E85017D289816B13C0BA1FCC6ACEB5DDCA6B7F4EE30D1D7E617 +3D9B14A16F330E9D32BE3CE1B92F18D2878A2C3CCD52B2103B082454C60724EC75B08D187E01D9 +EE3286D69B9EAD4D8D35AA8BAE3639B7E36556E1BC86143C1BABD3D05B4CFBD918C4171B3CDA77 +A1C49679016AB674530416738945967896E405A3A7A451F43B14E7BB3BED0CE014188779610F21 +E869A79245AEEDF2D01CFBEA80B9295AF35A7085E4019F499820420BC15E5D3D8450AC979E4499 +A894699D154648A74C6443EA53C851E67F80721930FE61C346207F2715F3E20418A9F58E4C12CE +9ADFE14DE865DB21085783B011BF1CCB2C3335A55B61DF50486A9465BA7BA85373E10F7AC3202C +15806C98F7A8215A89DA4424D4B16A5E352AFFA05A58E5A6B0ACED834D87E7EACDEDD65CBF741C +9EBEFDB86AC1975BB61AE096239597DD08156D26E218A61C1B69C71953447BB7CA6C055F2637E0 +B2E320C1EDD20B7B4E43DEB395DA221CC17F237B81098232567F591977CBAC8678870E1A1850D5 +C019E56069F11037B2C983E61BDB9778C50BBC9FFC6CC1CACAEB4FD3B4CC131BEEDB3C486D68E0 +69303A06E1653DF35D6421F93F05DFE32BB953E0EF723CAFBED7DD829B2D469CDC9F6FC1FB6F89 +4BBD9785FB48F1A89DC2E1208192BB44E7F3DE2D632830894A57B950C7112D76AE978454E0D666 +3F97E8FC2225293977FB65D46A5A64B2BD75DD681D4B5AA39202CE5E6846B872482765F1086FE4 +6200918A34A9C0375CA555FF25C70F075530965858942F0BEBC9CCDFA2515D198479BCE058BC5A +98E014F017D5239CFA21C5801B13619642DB5DD9A2A16FAF1C7348135BC59E31450FE5824201C3 +99E397C49DFAF1E8ED16054FE187A136E5A838976A48A1AD1AFF50776E953287C5C026CF2070AB +8DF13E926E668353197C0DAAFB3BCD64D391E8DA10AA80C798A914D219D0AC05A00D4FED72885F +408293D9E9D952E47CB8CA81F3797350D50EC0B74E526825DABD3D7DBDFBAF7AF4781D11C82D54 +05AA18F1BD75F7FC6C2B135F34EB3B29599B7600912F23680F5190B6D9B06D619B26F1D086D122 +51305AABC2BF2282FAEE69718201523BC2877A640EF5FE8A68E1358BC8C0A185C304D9986A6E31 +FFFCCB726D2BA189FBCA9C699994DC51F65653BBFBE170C39203C4BCEA90E07FC0F45D0E788D45 +09948A4AEF90C62CB4D5126AA30D655A817288039460D3E8A0450B6F3860727224957DEACEBA94 +86994D34743A32EBDD7D0E20A3E318F5288B5AE38428D3071D5DA2D3D612F23617AC4CD5EE84BC +8BCF391C4AA0B721FA25AFE0705091FDC0ED96094B19CE0C8716F70EEC15579C95E4754C394895 +EBD7D83FA8B9DD8B7134E6989D3B51C47600F053EBC134795BAB7C2B7121698284E9313C442E65 +C1821476436FED31A80A8220F02B781A3D19BE6E483699F7E809B1AAA0FA13DABDE873C7DA491C +02499F9275DE49A900DC3D624FD28F4F1F88654CECDE505D7E3E449DABB1417FC03F3E0EF42F71 +0F952C7DA729B45BDAC3F766F512984FF02A178D289954D7FEEFDFD6571A8A36EC673504F0D737 +FD41CD8384B06842BC686EC6B4F3B47E4BA7532649FD57373EBA8FFAC961981C381F2B1C731709 +A9F210E7928F13185B3D0195965330D0F4DD1CD09E008DA25C067735261E4CC2C66D3FB1822E44 +7C2E3C15E815DEB88D2DE9390B179D4EDFEA55E78AB2B0CF12FEB75967D857A604075FD20ADDF2 +8BCF12C46347463A7BCFF3ED8ADF441ECB3F17F799B3ACDE848CCA5B920A2087EAED1302C2F000 +CB9396EB83598F891ACD25763F567BA9E5F3C4916C62D8DC5FB3EE188F40EABA66F51AD59F7256 +DC4977C9408808781A5B790AA26FE9E3EB1118D535A76E6445DC5EC4554A4C1A06FD082C8C1D4D +29B3CD4F77CFA9356E7F055EA5062151B272CB8A036DD5F891E4DE82FBC877D9816F4AC9EA007E +D58201808D17C5B7C0780161607EE88B6640780D23870D34892956B561B0C1910F3B1CC8261FC4 +17C49A520D7AEB3239B7DB86BC800FD1014AAAAE84DA78F2FABDA841E82F102913C89687FB94D4 +3112FFCFAD37D49D2532F9DC3506F54CEBF3D3D5AB4F32D96A801CDCEDC7D9002019EC48DFEFFD +62F7879D0C9FB2CEF3BFF219A397877377AA2B970ACAB8361CDDBC1F38C5F7D9397E2272751DA2 +CD98CC97479CEC135A2496048FD8050FFA680BAE058CA5264E738D1699826FB12A96A6D328CC03 +19F501CF5AAC51A62E6F587FB2DD98881D69FED686B64D92FFC5B1AC2C957EE5F86CC9E5BFAE3E +73E6507C5809A576A59268341EB5E3F863A69F0C805A98696A5D764E714C478B544F0095BCB352 +7D00C34A67EFE6D156EBA4AF22AD493F7EE841A8489818047663C145DC04BEE4F472544C9A2018 +2147E184BFC894362E366A757B586FCF92248DDF8B29BEE94B4444400B1764EAEF6CC8110F1371 +D34CC38A939748CBE0226C110DB1C67EC241F07953B61C683642706930266E07309655962648F2 +5E981598930F3EE4EC0F75614F777742D6CC0AEE86D7D5111D11D5077297B5358425E660A296D8 +3832D37985D710E0F9EDA67875EDA4B75457A9573E3DFFE441029ABE0494EBCDC90C789186F0B2 +97F90ACA2D3BE84610AF07E347FB7694FA4E216A2386CBD1EBE70967A82014E8503E2E97AAC71D +60DAE00B786A95B8428F7726BA74BB3752F56894D4813D0434D0026F1703DCB3631D69082B5D74 +46AF8B5660688DD97DDB83540E2A69D4F994FD94413CA5AB52325439224E0906128187180E42E9 +7324CC2AEB60E5B327CA998AFA49854A59841C5C50E4159242BEC79D2E5BDF9373CCC510B3FC38 +204BB02BF88DF702FE5F2CD11123C390C6EEA79F7F1C4A294A9137926957D70C47D7EED1047079 +ECCD09C2BDB154A95A4F5BFC6CB708409E3E1A0DDB421F3E26BDBC0126212425D68F3218DA415C +0B03792A561B6B6E02D84C83534866A8B4397D485FA947E66839BA118BE6475A8EF384E597B99A +C24B83ABC9890BDBC7946F07C43535A9C0C53C6BBEBD25E85D7DBF87394FDAE324BD1CB4288B89 +31D3BF747EB89B356B3A11F07585EFA4E4349A40B409AE651D68E611122D21D9DE3425EA845568 +43A0E9D638B1C24E55992D6EB5D7A36A8035B9AAF0D8D71FAB9A3C20BFE5FC381E6E353C8529AD +44920C2B8A1D4DCC09FA6DDAC7C540D24FB55D8EB38C883431FF49DC1DA22445A6CB438E6DED85 +699290D3EEF81BCBA53D977C0B32B2E478CEEB7126FA359D4EA3C8EF1D0F6C3AF075B2E94FCD5A +ACD0531FF179735D94672A55C1D1FFC3842BB13CCC3E4C81B706A6830A1E502E954BA2F6D57CB7 +777CAE7EBE73ED1FEFB88F4E27DE15A052185CF9DEEEE665F38703AA7AF90B0971628BDF8BB1FB +21A30C3CAF7495425150F6E53A58F11BB6CDF949066CAC1352B7460D33FDB76287A7C55C9123AE +5A2773E720509A9F3D391553BED505C28E8A68EAB0C4231BA858934FDD38C725D340F21FE656D0 +002F6571A99FCD9AF5150DA9B55D796F9F30F4D10A7E82DF3B55462BE4EEE3F22D484275D60F04 +D3B1C83AAC019C0C46B68A1A3357A65A22A36CF319F53637DA1AEC7C0AA003E75491C0CA77BB7A +DD734E0BB7AA3A30ED0E228080FF71B952DD328D938638738697F06831826400DB73D6E2B260FF +00EB6130B3868D3C204EFB65A2F00CF5BB2CE4B464E5EED55E7CE33A1702D272069C2B291212AE +0F7A0D3BB7B82DC5FF2565E40B0963FFB9ABDE6DFE0A5EE3BBA96A3CD74D4E9035849C7ED677F6 +84319FBEBA5A5B1B2B9230994B2EB643B9F395096B46A7BDE84230662B72077FC96409F1B237BE +CF8CD53F27F690B101799B9FEC896A52609FB368DDEDF466AB17CED2E756D2A9026D4D26E303A2 +CA619F746C281A9A6AEA0E08CD0D1A7AD1F9CF7C6EC91A35AFCD6A1F59815A702558305398B0A1 +4A5AD71B085B9B10325C732D229A9C98D8AB35E99B31CCC4DB44852E5BA6DCBE8F759F54B3C10C +BC761C1E576A38A788BF5CF46D68F8427E2ADB16E23A8744039F78F637BEC3D8F6D239185E9381 +82475AC85FB8112CA4806D13455EE4A903CE5C7C7D5A8BF0949D70740ED6EFD38866D4645028C0 +5F16836C9EE77E775626BD67AD61EF9F6D7B72680564715641E460E09A741F30777FF1CAFC8B43 +664F96D15E4F218B04D462C8D8AA91B55765927B41CCF8B79F89D4C95FE5A6B55E943516C8C674 +0F43D3681FF8962A0ABC7BAC47B06DA27FE8B1FBA3039595F52CA33845C1A7966308C006D6F828 +108603B42229012F5366B77C654AA8CF6980FAA68A1796A1C9DD3C8C01D144CE40C669634B2FF2 +946907DF407A2C5F577D3785623CAEA75F5D18E2B3B91D595CE8BAC2EC742ED54F17D4F912E115 +4A6866A5E3DD49EE48B407FAF34441502C6AAEE95DC123EA266C27F6924A44263AD1238FBC0C88 +22114FFD6FC5A178F22D993639DFDE16B1652881F7A015AC88722193BFDF10DC1C372916234F11 +591016A8B5C2055934EF10C079DC83BBCF396DD19C7E9E112F94A871ACCE631683A8C886E4E10F +218A7AD93B0F4F83B8418C0984EC0EFC3ACE47E7583F801D1B514FE3FCB6D4ABE5B6C3783F3026 +502212E265243963F6F57656ED205CEC6A8881F37B1FCFD2BBFC09D1608CA43EEE74229369A215 +1A916D40B2650E823BFAFFB9338BB43369CD38F0A351E320DB42BD62A6B1A53E0AF4E0BA92DA1B +D5DCE62194D041500173E02835DC3C5A43467258A4340C1B6DB48B612D54110D70FBC038E947F1 +80ECCB983D2204567BC2E256C6AE46CE9C13E6B576E2C9FA5A00840A61D078C80C1C7405A6CB66 +BC23CBAF1C5CDDE62CD32A84D587BB2B3828B088C56831E6C073AA50AB4CF27FC74547554C491C +DAC152BF20AE1E14E31A7EB4C45A11DFBA32CC6B4D47488B950A43B12AB7DF7BFF07005FB64503 +D00EBB085706EF3AA04110C671306F763273E16BC75323AEE529DF5EED8CD07BED8A635376AA88 +602674B619B086C8B46339FCC077399CDE9F054D50AB2EDC80BC73DE4332CA8F8FF3D4A2B2D461 +3BD0B29C7DF001FD3B7CBB4666DA2175252E7E55910DFE6706CF744CB7C24CCE4CFD4F35D0E0DB +FA1C336240743562FD040687693DC43397B012390833FF786416BE97C2B8E16897C3EF5765C988 +7CA6DD1A3A5B2CD07507AD852A7D694F2FB9E1B8EF8D0581EE6C80094FFD048A1623048C4D4DAC +AEC1303516A43F08736C003246885184E73D8C0312242C33F33C5FDD86B4B952F86B8008FAB05B +38C697BAD2F87115E88C90B3F70E53BF6CF95E50A39FB028681746DA3431DA246E7423E8F400E5 +659141F09EA274219F1D99EEDC203B1D8B9696F66EE89643B6412ED2C3F41CB9385C30EA9332A4 +5CB359E2739612D7FCECA55C2BFDC4230E5CF89E7021F4220C22B6913F69ACC5F65D7374214EB5 +1EB691C53D0B1F590F458A4D4A385D7826659C77EA21504A7EFB22758ECA0497D059437D70CD94 +05DE2EA6BC506686D07434C6024273B49C009169E31F4B719429CBABC11473EB70F07DC2372D11 +BB2C146DFA378825C0F2857BBE54EFFFB74FEACEAF15ED6DA597FFDE9377697C0E472B7500B9C1 +6097BC50F38651D40CE96C50C9A6236860A8BF8F469F83162324B5296C50D430BD211D8BD0E4EF +0101D6F67DA8C348861E85B35A2A4992D6A4930AD1D26C6BC5CBB999F83C727D5CE551B98C9043 +D10A648D8FCD959C9D1F83812CDA60FFA8F8C3F88FE8536CC3FABAF59C5C174580B98D38971623 +6284CB20F900D8B793D37EF566A87963445862BA4EFA880102C87F608F0CE734212B0324FB2D2A +083AFC582CA20B744DC01BE3862057D746811E95687D06388705421C1B8DB69218A2A706D3CBA7 +8A449B344AF0F64DEBB4FEEAAD2C873A42B2A934F93C0BEF487B33DB2570723194651C204F1201 +56E09CEA13151E7E49703A3124DF500E780CBC62DF36502D2E6F5C57CFD1210850A2D35AA40A55 +603D3E56591E33E7722A282D6A8E1674495E12E348954B7CD0F4A4E4DAC080824795188D8A478B +243EC611CE5901A9BBEB76EB041AD162619EDF1D3D83ED07F1152401D2D5A03E6C784D6514EB89 +6ABA990FFAE09BF057B912A27DD2092CBF5157C904DA4B566114A37A7D9AD0C0D717EFB6C4AECF +EDA8D6971897E7D0FB1E685AE00CFA46F11B4820B31EE99098EAA2505E531BD1B07F41D550FEE1 +16F49073A12E482E9194C3C5D914AA944EB0A857AE2B5647A2C9519AABEE5ED6F356852C5F14DD +0852271FDDAA5F229AA7151D9ECFBC4861D5E89AB66747272FB6B8D49ED0709EEE054CD07BB917 +606BB005B6B2FA4B114536EB0708C08B5D7CCF46EC19038D93EC063DC3DBF39B25EB301B4CAED5 +05AC18AE74A0AE4494AE38736B19FC4E6B10227CB30940BF72A4704066D1D02626EF650C112A7F +8B8EF4074748BC08CB9DF80A0393793BED309D6DF2DE1F3D8765D992044122AB317749A3F96D1C +E8CC520555B4C2352A4FC4D92947B60F13B9D5B7A5B47AEF0363A31CD9D35DC0F34A051E369400 +D2AB68DA7BE1F1A374084B5522A6BF862579AC6F9F45D1F29E7CED5041DF262CEC4D529CCDF8A8 +3A18572D65E59582F8D75236897347892D9FD0DEA75BABD0C31AF5D690394B228E835EBC6A5F05 +AF40BBC6B35F8EB3C9F76AE440CB1A2E88A4F27510F67CBFC15DC29D82BF07796F6D8F793C34B5 +D308D8764E9EED3EDF5D328FB1955CDD0719BEC23077A5080A88E9C95C705AFCF13C85DC533B77 +6A15AE7DBC452BD2A75451CD7FE36C2B24B9044DFD9784D6B55D79BD164EDBDF735E6C486C9C9F +C5A3462212B66C2E8B3C1DC01357B02DFCB8AC883E7EC27F519001E5E8397D81BE41EBA7BEB413 +5A36C4E9DDD08D27C9A5B9AEF67090AC69F122DA5DF10A086ED8EA0C0A8D8060ABC76E7878AFD4 +7444B134EDA8D78E2271374C7510658B16A9C5C4833581BB7EF970F9A6A4F09B238EFE5A8B433E +A5162C9851F74F75EEBB1A4D57B0EA29FABFAF4D2D7D8AA8BC4132BCFC9F0EC7E841288BD234E0 +6F910BCB4456C7ADE4182C459D3D366E2CF72BC6A633E830DFD85900C3696A11D2C6B79A822880 +F3560DF7B51A37FC186C48BB55F1B91DFC8622D193C48438CADD95022B3269A389C2E60C9C2800 +82C096FDDA6DA3FE1BF8369F4FBB5AF739485B83BA055AEC9DB88C23DB6C5F751966D482434721 +91E85857517308281CB32C386755A1159B1ADD7181405CA3D686ACF18566BBE1860CC3D4DD979A +D6125C6A796D9C5B9B19D03E01DC7C0502F8F7E330A87F8AB8DCA128F914DBE36434DCA8B164DE +558C9F3A7B39C07135CDBAF5C6A6AA5B21972EE56521C7C21456BF9D462BD8EC6F838A006ED0A2 +84EB344C819791B014BCE095A6558B5294506EEFE6D51C935165FA4D0344498941A5E42116BD4E +C9B9F72F4AA2FF794981FA5C9F5FDE59F62427BF17BB7F0B2AE94786CA197383A6965214895558 +6540A4DC1071767E23310C3BD9877835098912B16EC2AC50EADF2035EB7A4BA2F48F028414ECBE +0352BD409792DC1B9780A10BEF8357130C201917FF4956437DCD2E35CD0B5629AA37EF7DBD6E9D +057CBE21442DB22F3B9CE9064289CC8A3882A6934C1C7C3542739E1D56848CDD2D03701578FEA9 +AE283D393AAFB58D5A93A16B5FEF33772AA47EBCD4A33B06A2CEC3B45C553B5A63B1A33EC16FEA +A152B1D248C207924A12FD27D871175591D93E23EF5108534FC75C455311EE8E3F2AB408A2FAAD +738DAB33BF98A3396CC6D5C3816B65E58D8EDC18C72CDB15540F6D62926F496FF4107A52154233 +FD73427D3C00C4455A67705300681ACD21931C665E9462BCC800D25A31A6BE61519FA3487E6721 +6BB21B579396CEB620B65FEE8FDC9CAB02CC5D5C8CFF9A284274A26F7C5BCEEC6834176F63A1A2 +7A674025A61FDA661584C04D5C80F4DAF73A5362F67FB8064D5079406EC0D115A79F292C893EC6 +0BC24FF533153275E178AEEE1D0C2C84D28D23DF028FD364FB2F9C13141098CAFF49C322A9D8AE +D0E5F195FDB307B0D27D89EA917346AA73BCC436120E711FD36092AD7CBBFEFEA3C6F371D0D29E +AA047229A12836CC4F3E1FE539338D4FA9E15E2CA242B768FB35A7E76756DC1EF247E49FD40438 +19F917F93DA4D40156E3AB93E5580B56BEBBC1899C2E3BB68CDC5B70642788FA475E1F0C71A532 +739F4EB3C85FFDAE230FE92143B8FF8DFC928F9F72B97701C2A5844BEA5D263FF3DFB11AF92B65 +E5846A68EC81F9EF7DDEE362121AAC5DF1B0C29C6C32247ECB52A9725F65BDCCFFD0EE535C8C77 +A02E44E274988827C05FF6C78112BA5AE29DD7AF086ACDEF0372B198E0303A257386315392DEC5 +7C0BBF78A04AA1FF28F927FF6B0AC8A76A22B56CA963B779E2081CF3925391C9027AB0C5533EAE +1B22843F0AC72C2964456B56D8BEED6A3C76D6A675488C43471401ED4502351451C1CA0A46E380 +D41E370D2BC703ED34B8682FAD0E9EA71E4A5CEF5890795E2B5B09FECC763FBB40B6B2E8D07383 +CDD0B084612AD2266A4083DCC3A159426D3420B81B1041C5EE4120C925C1A952EE6DFD759908E8 +E1CC882C12DEC431C4F66EC3B5F3CCAC728208F1F841E477A276ACA2F42AB5399F762B9C70E728 +39D284531908AC8EE939BD049BBBA6BAF1C536E40DDA2412FD9A6EECAC2600C49E10092E73B91B +670AE675217BA39A808ABB34E535F5CF9A202417CA625121DFD6F4434155BA437EA16D0B6B05CC +BB3B161785B3856136A5288C4D14F406361CEB32410BBC3252ED6497690D49A3A89C40A16F66AC +8F9D80411BCE174F5D57BC07968164BCA4AFF626B6F675BE9F438B461D2A35EE1C1F559096BB04 +2E174AACC03CE5C68667F8A59D2B2B7DEA85040EDF8F3175A14BA3596064EDC67058EAE7F60BEE +1759694129264973E259053A70FDFC27E708A8A1D40B451061101C6DEA814F7C9318067E561132 +B57DCB9C67F7DAB6C5FAFB9DF7B6B53D45B8D43F66469DE6831A40A5DA32A33D5FDF9A3F266A34 +6E4A2E9D52F68599DB0138C3B08436C0DBA0A553F6133672860345B77353BF9EFA3FCC80E49D8D +F84F85F1A99F23BF470A9314DA381370BEC348A37EE4517D3372D33E528F137A787CA9956E9BBC +C8446E71CFBDC6D92B241AEA8A62B77F40A630F5E72F623C18C9B499DCF511FF19C40E53768925 +8C9C933CACD974680F6E443BBF3CF00356A498C63A56F68843FE5BEF635A4A671874A33133D525 +E632A10F62A36120E5BB9C2216FE80DDAE94CB7540669FD0BC404D361BFD34EA879E50A44D4071 +949AFC3CB4A4E4181CC30DF9DF63A6A30B38EAFDF30158A1CB45F2E433FA4DC62763B6CEB411E2 +442124F95DF503C4FBAEEBAE7681532B9E5936716F6D585F51B9871321D5B7FA5BF4704B0A536E +78D00372CADBFA191E5E3CE0AEEACE1D6586E9D11A0FE37C9824977FF1E6F95019930510137ADC +C4A4F4C4ABDF76CBD32FB977534DB8F49EF673AC29C1A559A1EEC69F0EE5A42A24D20327CFCD0A +BC278473031C3F2CBB34BA6E424D990AEC6C756293821C5D439D4C8F54319C4BEF22EE740DE2E9 +3BDF51B15FAC6E469A01C1B5C5690D16F9754A8A3094E751FCE11000F991C566C7C1B8CBE772EC +80B2A751F829A4058A28110013AF4A3DF7DD7124DFF0F728A25EF78F78EF33A97373DE68D38DCF +D1E29CBF549011A71ED451B1E7EDA255A14975FF44F1CB448B71B09E82E8DD5EF75716A6E32620 +658D229108B8209287C2CAD6346F0E8BBF1EB99BFE8952C4080AFCB21F58DCDE2E73B02428D2DF +7B29C43DC1DF324A73F480685198F8006C996958AFFF6A55B459DB50FF2A33EF43E31923518FEC +28598D092D8205300026E04907332830823CDE60D062E0BA04CE7C801775012B4835AEA56FBA80 +21097BA760632CF097A0D4B94B5BDCBC2E61EFAECC791FD7202B00E678D6B76F891B918F63D494 +72BC7C5EEF4BAA30ECC71B5DF6315A71095F9E769DD0887C4314AEA236A8EADD9DB780411C0733 +7E337744BDA802DE4906C3F98E644C638E4C86D5F2A7B2C17DACB10DEFBEDF030A580AC847C0AA +56D4D4B30B513BBDC1105978412EC2C36DA5E4F1EACDAE3426DD48898DF1DF0B0BB91C3343B487 +14EDAC8BAA025AFD729DEB9FC96432DDC0D782D226726368B516E8F266855D7D02472D605AB245 +084B55FA61A0CAD04FCFA9623DDCBE109B2AFBB69955809E2989B5453793032D1EF7D7D8BD4E10 +1456DE181A8D7DA06EFE2644F184928270400D29EA969154136D1E810386835E2A3161A3074BDA +1DDA9B028910927B84B44C52DA2E3F0CC9033A1ED31743FF1D04D281DF1D62735083E0AABED00D +C0090B1453FA60E5D16AFB16A02DC028A418F357951710B45948D06CE7BDD0BECBF3BC2B9CE44B +6E47DE415A655F6D78DFC36995DF01D28BB52F750FE557FD2A82E36C7B6D9CEE9DE4326D69E261 +74FCF2D3F78C7F68EED0374D80929FBB08419C9D2D7F55D1AF8C3639DCADA1C7DFEFB7CC17D807 +3614A1084659277FF822BA6DABC3371D600A14120DADCE7A1F29257ADEA32DE6186D1E2FB54ED4 +B9BEC1F268B90656B224757015C35355841698967587305949A7158490FCE4F1BCCC2A83DA26D0 +F1D7A9912F8462722A58F5D0A7A4DB48F527B1AC5763E6B45A41830E1ADCB09E0F336CB97CF239 +9513DFE02BA8334B6A7EC74C0F3B0BCC61382B69D062304DF98B09F1E13291C97274CA134CFF86 +CC2A823BB8A1BEA31B8A25F843B15273D0F1BEB8C18B3A2E2027334A27B5EFC4CB0068C79E5CFB +AEE391D8BE2C4CA0F8A630710AB09C18C0DFEDE175ECAF12063631E9B25C6C9FBC3D49873002DE +6262BCEE73E4716DC30D610EE5402597F514903E5EEDD8A75E5A6FA117A21144AB5B338C1D4B35 +9210169EA0726B14D99E48834DB5D15691FD9095FBE699C46C7E6EF3790F6005C05561E053800A +B8E261C17CDF355646A1BF29414D666FAA5C1EC43903DD04678CD1B5097513C0C69EDCFA5D71F1 +D3E540EDD11D4B72ECA6C590A57A41EF5CDBB09DEB1FDD6C823E10EAB9E6B9EF02F4045696D615 +AF4E01796C2856F376F42940CFE098D303C741D0257EC3CBD7FF2D33ABAFE8DCEBFAE575ADDE66 +CAE813A0451E5825AD0234D045630711BBC3853D130544E0B0E787218107450078D6F380303DA4 +DE2A39A9A689AC4337D255477A7D0ECFB746E129F779D1F45F86F7F0E141923AD062E6FFC4134B +6B15B2811DDE5902AD397044466318B4356DACB9C6DF0CA786D3D81EAB52975D5C6E34D32B28CB +608D91A4833D5D35A777AB115290A4BFC8EBD24846736B0997FF9D5DC471AC673984AC8E8BA510 +95442EF37C5791C650C3A50A2907E0447A6513359D001FBF3EEB4720167AE69D2A6E2F8D068DCA +BDCF141A61A956AF4BE6DF3EA929843344F2E38951B9EE4D38D2E51A195842E61436C77E7D953C +AB3FB8144AFDC371B0DDE968AB88493C15585570F7DE881A1724C0CB6E8A3433E6E85320ADC362 +734A1C81C1EF9CEF1B863A803F96B5F1F61A05D61B9992E99BE5A52A58 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +%%BeginResource: font lsunr03 +%!PS-AdobeFont-1.1: LucidaSansUnicode03 0.9 +%%CreationDate: 1994 Jun 04 09:58:17 +% Lucida is a registered trademark of Bigelow & Holmes Inc. +% NOTE: This is a partial font in Adobe Type 1 format. +% The complete font in fully hinted ATM compatible form is available from Y&Y +% (508) 371-3286 USA, email: tech-help@YandY.com, http://www.YandY.com +11 dict begin +/FontInfo 9 dict dup begin +/version (0.9) readonly def +/Notice ((c) 1993 Bigelow & Holmes Inc. Pat. Des. 289,420. All rights reserved.) readonly def +/Notice ((c) 1994 Y&Y Inc. All rights reserved.) readonly def +/FullName (Lucida Sans Unicode 03) readonly def +/FamilyName (LucidaSansUnicode) readonly def +/Weight (Normal) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /LucidaSansUnicode03 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 148 /0394 put +dup 154 /039a put +dup 166 /03a6 put +dup 173 /03ad put +dup 177 /03b1 put +dup 178 /03b2 put +dup 180 /03b4 put +dup 181 /03b5 put +dup 183 /03b7 put +dup 186 /03ba put +dup 187 /03bb put +dup 188 /03bc put +dup 192 /03c0 put +dup 193 /03c1 put +dup 195 /03c3 put +dup 196 /03c4 put +dup 199 /03c7 put +dup 204 /03cc put +readonly def +/FontBBox{-615 -440 726 1024}readonly def +%/UniqueID 5054503 def +currentdict end +currentfile eexec +E98AC76D0B9811AF896A7D2786CFE5F8CE68EC0023DC2681A7AF04C897A42BE5FCFE91943239A1 +3AEB5296C6852464267094E08A45F9BE1C443CDAE11667C6CF7AB42711A6CCF9077E8A2D8CBC30 +9D38A0BE6B8A865AA6D108DC56579ABCEA85FD25326DB34A8A3B77A5424AE4100C2EB6804EA369 +AE0896E47334E66BEF4DCFA3CE9DCF8BA26773A39C77A33652D76918EA4BC304D746DEA74382B2 +CD2A6283142BD4605E129465DA84867CDB60E18F858C99578A3DD3BACCE03A8A6990C27D045C3F +D9C8550A2552A64F9F431169CC4AC1B9B275DD9E6D5F3DF5C70E8F657DA036CF63E714A17DA9FA +AF96888F242FF964672AB6D9CC68989DB538723337304795EE327BAB72CEBBFAB6A376093EC250 +7E6CC4E11275DB4AD7283811195AE1AF7C8235D220FAB9F10C43D291F873D989F30F3E2BD37AFF +E5D4DB432C168C065D446F0B3D58981E981E9FE5CB773EE40AB01241EA403188FEF5B1AAE43FAE +7DFBDE6A367FC7D6F418E569D7CC7B3D20FCBF2687397122164A647041D12714798560ABEB8867 +B266991761555A15A26569EB0FBD0137EAA54C1EE6010F0793B0896AE1CDCAFDA76DFFD032108D +FBE81D02FF87E094C0012FDF048557854A7951C19C117397A81FD4C8F2D32D5AD9EB1E49580125 +3BB1516DFADDB20EB7142443A1A133A5474EC8EA29103BE5554C41ECAFF76786FCD0FEE4971FCB +646F02BC421A7E4D1E5E0010A9079D17364753074ACD18630A5C6ECA43EC7C53C4B1A5DD0BEE88 +9201FC8DFD39CD0C81863BD765FE7C8CA2A69D992034D8B8B9C3486D26DA6AADB594B6EE99959A +445C809D1D3EBA95FF9429FB957EAF9B9C7E3D814B25CAC10658218FE2993828ABD4C0A7650362 +981E23E95B851A8CFA68B80D4DF911F9BF21343BD3E61DCFA86F20E96219FA1B9713677BE05602 +A6EF36F450877DABB0E42F2DC22538C31B680915A634C6D34464C3EFFCD75E60B73428ABA3832A +F9426BDC82D30589727058692220D02B5D64DA3F8F06BB80D08B77A455702FA9F2A3822698E02C +DBAB8BF4E63E39D377C60853E3B8F7B12AF04BEB45AB27036BBDCF6C58A80E3B3A61563E026C72 +4CD6E7C407B7404F301E7B1AB0EB210E41CD5148396089023AE9401C80831E627EDABFD4E30E18 +EAE2DE1884D7A3813D343CD12F9B13D935199CD744F53273DE6FCF7B0F6105BEA2176D26B9E3BE +794AB2120BF13BDA3E056EF6D06F8E219B54E3FED9A7CD767C428375E40351E73663A739B3E77D +FA3F36125473E7FA6FBF4A99A69AE1DBB03CFC5C71D2D941A15C1DA9C399EC307DA5D75C8B02FB +448BA23DB70233E83964B29CDD5101B404F505D6C8462A37DC5DA7AFF8145444ACD627E8933F24 +7EE0163AB6CF596E882A8B123A102953DB3D0394840A2977DE544DA405D8299B2AD3253C188EEA +F07D57FCA1FB375B9BBD397E1A500DB415964E518B2E2FF27A3480B58E320EE8AD0B76BAA2635F +3632B6AFC2358A3A332B773848742A11E957ABB886B3CFFA93999A478821EDA9FDD823EC8818B7 +2BC26EF0ECDD2EE498D92638D2BC8E19A283C571CA8C886A8F8E647DEC4D6424FE9CCA8308390F +78F361486C56B9C039B14F76EC5BCD8472F4E6FF566368D5FB7A55FA0E887E9CADC5044391FFA2 +21C598CC9E2CED7907F736F0EB8F12348D64EBCA0672BB8F1E651BBE785A09A34223663975B48F +90481DBA40982C8857DA5EFF13E9F5BCFADE13F02C4C5D4308CB09D6588A7BA7A2E1A4774701CD +65C7274D0E2F92AA0CA4A2FFE596733E61BD589D9B5E84835254D8F22DABCCCCE8D4760E13BC4D +6E85BCE03DFE296055EAC95B3523018DF17E8166ED03A23E1A7EEA0AF8C65F219A8F5D7C6F3253 +7160E12174798BFB8AF179C70A8E43C167E1DDF34E47F46543CCB7991B65A2FFC11F4917964CDD +C539C2E51E503998401540F23FD6A52F81F6792F2B97EABE2A74B9F58FF2C891E320DEE3ABD153 +FA43F9B456414F8207600AE3DB5283BA7A0F18FC16C58766C58EC1AD813E77BEBAF90FD8D6F55B +25615FE74761320733B58B545D584826E81F2849E1875490F15B774A3A863A20BE5A2EFEEC6F9D +337E5133329C0D4E8FB4758FF97DF0C97127FBB5F4C768439C8B9F7DF2BF3EA516C268FDA3A305 +BC2485ADB785E24A4BEE9AA3E7C82D3994C19249A3AD713FDC5B5C981A18E3D35AF4CE2A349C22 +E8923619B85E3D3E4B314A1BA051A506824368F4CAAE420FCF9CBAD8B9AB38463229750C31FD8E +B4042D8174F9C94830855B547B95210E59A601A076BEDBF121DFCF34440F65E46365871F3BDDFF +74232CA8267CE9864E4C4CF8D3A0AE94E57FBB2335AA4EF757CE11F554D8BE69EAD58004BE02A3 +B6B8CE3F5C5CD23013BD57D15D447512FF69A9CD5914A73144D71F06550E93695F0F6CDE77C1F2 +59AB5BCAE03478C9B172B792B16EBAC0F44F97C39FBA333F9BAC6123506028FA93F2ED96F88F81 +8A3EAD11809C5A5F4FBBB62C25C9C5B68B82C1C9734DF1989B00553BBCDED535F6224E2F74E18A +29CE4568C3A6B0CF980AA1F7CA1F396D2DF27D4A6C8B9E104B5CEE96CC4CB4399EB2D17269B64B +F50A3A0576EA17F41207717A2367094EC5D35DFEBA9D1E0AEEE710FA0E2297C91AD8D002E6C0A6 +FD46D5D123BA55B2595D9AE0C0C730966B1BBE3F464379167D8A7B817782DA4EAD919BE0BD1D8C +61FDA8124098009B17BD4F4A0C189ED085CED24F05A10ECB9D96F2CDED8B5D8F10A4BA62D33F94 +FF1FEBC20C9E64A7DB41218FEDFBCF94DA4F16CFAAAC9ADB9D24DC1958BA67D52F9625126D3F34 +4C7AE7634B21608049D7D30D302E95726FA7CC91B445FCFE464D6E1D79389404F0A28F8DF0D27B +AEA1C69B435B2CBC979580A2175B43F0CB739E86D778EFFB25D9C316903B82274ED9AB9E1ECBD4 +03EA7EE377A11A8EC6A8F9599879878C704B25D4A5523F759D09FE3655FEFAFD834F9AA8C75C07 +4697A890A38839FFBD754AD936EF8088D20629BCC0A9DDAFD5400D0C596391640FCF4A8F5A1155 +A383F32ADB70FD8E5AFA66484B1B6895B6F2A7859537C2088DEFF14169DAFFDF1E0ABDDC646682 +324828259958699EB1B21B7638E3CBFECDB9544F3BE2F00636906BC83568FE854E62D5BD752A38 +084421CEC5E659D7A9BDE211E643950843A0159D6834A2258933F8C001C67B073E9C9BF7D8EB68 +BF061B1966866465C8F7E1D2DC98F39F3A9A0096D62314636CED9B4E2E09225760A78B1C58A1C8 +2BF342F7940F6FC838F4618898C313CCE6311DAFBA75B344143736C7EAE29D4DBAA4B56BB3781D +D2DCC86BE5A4C4DE100BA03E4B133A239B7F6C3ACD1C4B4FC59CACE546E74591C12BF7497F908E +BBFE7160563BB47FEEB502E3B5B21EF579E375BF8B29ED72640EEBD2BB10FA2B1C30ED5EB0A089 +46EDCDDD233DBB94E95FB0012CF8BF944B683DBB52C90A08E5D53B2197FD4FBE9AEEF3245D6B9A +295445C148C20C597CB2F705512F3EBE2CA9A63E1B479A49DF54AA5F052283ED369865676C7470 +1D7F3D4745944506AB5B2FB450300BC1AE7B0F9B0A3F1BC5499A53962C4143455DB5B3C554FADB +AA6FE569A1321DC010E5484EFEC85CD8CE23C89C87D1AA2982880C56109F596DCA8258FFE48384 +1B2672711BA606DA73552081C55D0DCA31460F3C81D4A8EBC7C55A487F2C08A986403E209E52B1 +A38AB94F399D667720959DC10F9675BBBCA8BE368C3DBE8A3C82224DA3B977B0ECC13EA85F775C +1BAA1EDCD9E1C52E2169A10098B56C74E2597E5BBCDC693E27BD947033700DFFBA4D2BE22C8C0A +CB0D4CB909EBFBEFD2F66FD53157E4BD02E8D027A060BFB1452FCDF79ED71245F021D29A21D16A +8D8F2D0B53DE50B6E98715D2042E2C46B7C3D77640170993596EB481FE6A6DCFB6FF046147C68E +241E62DD123B598D408FDA25A5FF8553B44FF1620FABA4610F905C7EEB946CD6A09D5EA961FDB7 +9AD3EBF9836DEB52B4E93C4F1A1C89140272C4955908203C803C5803161AFB2C9B3510CE607F9E +2BB8AF8BD19B38D38F7942446DA9A92770333F8FDEA61394C4C1110CD91E95D3C4FAA33841D79D +F1CA42B0115ECDED6CFDD92D36A2EEC3A2904C354206B987EBA4AD69DD6B5C7A45B96106593C15 +F89796CB639575DAD7D277E09D347A4159EC19A8D881E6EE3E9093B51E9D9B1CAA1F0809EDC2EE +206F733C1B11C4292F75D0F37B25706AAE5E7900726478DAE756A7F59B4D0580D2FBC839D6F31E +086CF751F1017CD84AEFDA2D318835DFB74C02B01FB151D72C4A84D0BB976A2C35ECEC00CFB83D +EBD59C29F54F229E087C1C6E6D7F72F32685E2AF4D4353499C399F2438D18FF0E011A0532CE68F +F5B644C3D68754CA5BA2D48E0E23C80EC34F43468281AA347664D916F56E97B9F0E17A894DE514 +9800C5C7B78EDE6A882D5180EF9F51ADA5E3B511B07A89CE1680963DC3848182BDFAF361D9A893 +830547B3FCD4E412838E214A872EEA88FDE6298B15BB69FF9627EB37C27F89071F9DA74F4D6C06 +37669C6C09BB543518AF798DC1B1A10E2D53D24C3A5B1A485D6B8179DDDEDC7B82D610766BC80F +A1B2C3D3A4FEA53933A6FF83E85DBABA6F5EB94FC23EE28BA710427842803E0F375331FA1EC106 +8C396CCE31A8D68B1A7A0EC87CC082A501F711E93B9FE3DFFDD8906566B7B25A260D1C64D6746F +80A2D323058BDA6BD4122F0C04B39A4FA271E7B75A1D8FF82782540193902C88CBD99E55B33245 +069BDA735E4991447209892CA9BCF5802D44A09BE99EA64ED4EA1FA39B7AE10D8B47ECEDA33D80 +F8BB0684F289746D5D2DCCCE59D4E6F48D8F7EAA81129BC47BAD6E74F4ED9B3032156B302AD7E5 +C2F79E5A0A9DC77FB986BB46F4039152EF22331FB70C5AC047EC864F5EA5EBFDE11B5EC4081CD5 +FCDAF37B47C5CC8AEC7CBF21939F89C998AD080B530E969D39607B30B5E4474206902CDED411E1 +261FA85AA8CADAAFE9C8D0CA713066ACBCF385F4CD377194D26BBD5918096A3ED2C287A058725D +BCEF5D6D2A0EA6300BEEF77AE3C6CC068649D077A38CA6884BA08B9523E51DBE0DE61CF651B7F1 +27C93CF9A756A521276CDF6ED0FA7F4F559BEC19DD8252CB5409CD25F20D73D53375CA25DE2CAE +C1D980C6C0B99D20E3713741A86003237A291A0815FA13865649B802C08B28312C61A95910F8EE +BB51351AD5D919FB238D9BCB5C0653A14258C6899E22FF0FAE8B81804F3112C598D1C2F8860063 +C751F39CF1B7ACF3DE9E9B6F6FCFA55A59D5516C173C90B491ABBC65EB3D93B416597F22825D32 +22D9E6F5F7B993127288D3ABB7E966C9F2FA0E0A7A5B794D72FCEB0CCBE9A201041FE2338BF9BE +6241012E1E255327CCDF5FD1B0AF10626DC35C269A6E5EBCC697761374898384AF1B00BDF33A88 +E7B9628C9A44435BCA110B57227D9BC9D8BF6C2F205A62E189E683E50EFD1F09C38E62B4B12426 +2982074470A4CE35EA939B558BFD24593996AB198A669393B749AED33991D833F85DA040A04379 +57CE47FE19E30AD150D7EBF3D9FB521ECB0D3C1DD75D45C180619E0131BF9636AD108C6F7F0F73 +0937E3C8A4F788EE09F3E4A23078A79F386A7F638286AC0045F9D52E8D5AAFB1D4EE7BAE0B27EB +6FEBE7D6336241930DC406A45F261FBACAF975B7C4EA25E3751FD1806332CEA37442F99EB2BF69 +C87C649F93C5EF9DB13584690078CF7BCA17543DA5F867C550FB219C8581F3DA4DB0BE951C4932 +D3B65056CFC178183EA34389B3D28661979F1328A326783AC6CD34144EBB33CDDD58EE8A9A7DAC +E4AC91FE1532310F9B36B17F3CC79E6878488AB43045BC5B95397CE872D1429ACCCA5D99953C63 +028959839EFEC3F0A8E3052E4EB41E673F0FA73B9F82261CB6965C621ADD6DD858D7B2A8415C11 +BD9C51FF31D1F90332E076977C6461288A644D66ABD8E295AECEA2F37DAFC4F096FC0AF34938A9 +2C1E5D94A438319FEC694EE5E4ED1AE5C1FA82DDDA55C394C73CE39F18137370ADE011C4FF7213 +95A444A57EFCBA18 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +%%BeginResource: font lsunr04 +%!PS-AdobeFont-1.1: LucidaSansUnicode04 0.9 +%%CreationDate: 1994 Jun 04 09:58:28 +% Lucida is a registered trademark of Bigelow & Holmes Inc. +% NOTE: This is a partial font in Adobe Type 1 format. +% The complete font in fully hinted ATM compatible form is available from Y&Y +% (508) 371-3286 USA, email: tech-help@YandY.com, http://www.YandY.com +11 dict begin +/FontInfo 9 dict dup begin +/version (0.9) readonly def +/Notice ((c) 1993 Bigelow & Holmes Inc. Pat. Des. 289,420. All rights reserved.) readonly def +/Notice ((c) 1994 Y&Y Inc. All rights reserved.) readonly def +/FullName (Lucida Sans Unicode 04) readonly def +/FamilyName (LucidaSansUnicode) readonly def +/Weight (Normal) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /LucidaSansUnicode04 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 57 /0439 put +dup 74 /044a put +dup 76 /044c put +dup 79 /044f put +dup 81 /0451 put +readonly def +/FontBBox{-90 -211 1024 940}readonly def +%/UniqueID 5054504 def +currentdict end +currentfile eexec +B947A691BCC86A8714868C4E8EAA6693E50213672FA40A24C1BFEB6B454C65D97FE3C8875CB7FF +DB41FCDA8653D373718784E1CA8C2E52026C505028CDB223EDE069E4FBEE2F9866016FCF3C439B +BB0802FAB586D7AFD17C75C2C867DC859619612A4199CCFFD6C8BFADBAAD892A6C666D828BC33F +4F4247E844052898BE31C94D164ED8D032C6F943D6ED98C08911A23F5A44886EF9C56C418B6902 +CF632ABE9998ED7354C01793652E9AFF38B16675570C3F14DD18F4E0EA8F81EBA3B5A2EA1A6A75 +2852B45D9DA70764044BA4537DB8B3E88BFED459F70BDD5F881C906573D7E01AA459D103FD3D95 +D2C0D6CFC9AA56C9706482A513FCF9B41E612B7F6A70EB084A6F9D7BA73BC196B39EAC357B521B +E3232A0CEC9DDF61F6A57661275C3E20359577BC2124313A4BD33BB79B2760F11A0CA7BF9AA8E6 +83EC1146B0B2074D70789306AFDE9BC65D8998C6C6B28D89E7CF52E057C9E40738983F55D859CD +0D719713B944F82DB6F8364CE44A194C0B4E6E987C2A392DAAC78285ED9C29C1DF8F23842C6AD7 +F2C362923E2E3C896F4759020EEE519DD5BE0603F7ADE8A7908B806799345CC450EF767993D072 +238A614D5DBE33015C181CD4377871A633824D0DEABDA62756476A2E12BAF3A891001FFB69FEFB +D921533AE16743B926BDDFF77BEE342CD2AE8AEDCBCA8F90A10779CC9BF24974B4956DA4895299 +542E68FD9F5134EB2855709D7F684998BF878869A32DB0C6BBBE28B5AF1C1007AD68807513BDC5 +583819F8A5C8FA338B6CEE5D696B0BE6AD4C132E8CD0F3A0FA8DBB22BEB7F21AC6EA9D2CE4BA7E +F4A1D55FA87B7A57DF56D478B444FA969F3CA003267F1B45E69BE9210906D363A62731EEF97540 +E5372A27983ADC774AD984B795695D3B164AC04CDF48FDD5697A3F855E53189B795887549A79DC +69AE4EE9B7DFC5732BEE8F9FDAD6008C6EC06BA5695492152EFB8C2A2BAD3D44EEC08617AE17EC +B22CEFB1122BF202A212F998882C2F653D56F2D0737FFCF84E0D52DE3CFA539954AE718331109A +30267B8CF12669EB05BA116D01F8F01472F466D26400B7CC841BBE94EFF2C95B36C695AA91FE51 +E2B1DD43A459E31E01017DB6D44ABA40FDECBA6FAAFF5D2E83219DEA8777A845F6E4F586E73B42 +FB7116974F95E2BC2FDF85FD5C561AC5582BE899C9E85FDA05D02898659522A38B4F497F16F534 +CB8E4EED100844CF77E70A0C9C6C18C99124155AF1BC7F67952DADF6FB324B9F70859BBFA5D191 +D51D024897422139DD5CB41591085BCB8A9655A43A7BDD93D78C55859F075E58B5DCAC83BB00CB +815BE032EE24398C06F8F578B49CD897740A4DA7E6DA7DD7508EDEBBE1CC0AAFBE06F570987512 +0A1B016A82C5E1C27E48B4CDD5F2884A5AC18AB5536A145A7A83EB4AAA9971865EB69EFAE5EA41 +5A9CEBF4DD21A7C173D5BC38DB8E5C2A6EE01B504A3FA492A889B67F9E27298149153FE446F040 +B7E2C781059C65967C51E23B261136557B76D675A79A006AD83F9E0A531C6EC6BAFFF9B02788A8 +35AD5EA6C7F8CC684C252AA2E7CD05C0ED81B8BCA7D4C9A0485DE412915310EF3F8303F5F4E222 +769DABE6CC59CBA5036F3B6B1881971217CBDAEB1ADDA602EECECA4EEC033A1485FC32A9F34C57 +994BE283205ECFE0B241FC56D225AC40984DEA53961B7D43BC47F7D4011AEDB3E3D824881173B0 +6107D6C34915364BA13D09B64F088504766072E48BECB0258F002BCB476AF40B5565393CEA08D8 +0B86330541D0015DCFF19A3FF11DD0DEA1E164295C22677DCCA2E69987C4DB4273ACD833F1E8A2 +90C7C7E83154E97FBDB5B28103DD17BC8187A0F82B0BEE9031F45A869161510B16EC14EEE4A90E +4B0CFF0722D40B3A54EB15AA16C4A9EB4747B76F3EB24093BCD34AB43651603328086709CAB4CA +DC987A0F15AEE2EB086532438092DA0DB860C994D5E3892618A1D6D536BD6E1267C1B79D2B038E +C3EAC72BF37A07F8338FF4ED00A2C096F2C6DB26E71F13E023D25D3F3E547AB07E837DE246E0FA +73356D30EB9E8C83D2A08745B3A238D1FB9F18CA32E2CDC93884D4B1F87854BBE7593C45B8F7AE +BC916EC39500AAC2522595A0593F2B95ACE4EFD4A016D6D6D1172AC47EA3C92AE915608F20F0BE +A10E875F9DDF6E0EFA32C3EE7965F34AB6CB670453DFE936D4D1CD77E44A1E01B81749EE49A4FC +7759CB1E0D30CC814E6AB9B51FF675A22577A3DD8025E04CCEA149E717FBCC8C424196B35D1924 +3C562D1FAE2E2DF182ADD0AA15FBABCAE89D91A363D3691CD9E2C6EC022C34C1D5A6F0EDD6189B +59561647A60F07E60202401959224E551F14C940667AE193924A0A83F4F85D071AF94C79056CAA +B4BF0453F2EFE718C7925B7D150F810156BC31CDBD19548B4365E214CC8DE2357368A8429A9D80 +6C2CF8AB10BB393455B8EC83DAD41021DD2C3C8BBD19F7F086C7D4AB0E773F9624CDFA6FE0BCA5 +1A581C845241710AE04EA754034710C1ACE81F3693F17A4144C886ACAA69D797DC781402C297AB +5D83D4CF37794E7186404A8597FA96FF43DDA263AE1E5BB13132DBC7A899B7E29136D8ADA59BE2 +F9FF6DB733B428A2D4BC94024D03210C67A9DD92FFFCF7DD20DE16564FFD28F5BBAD8FC6FFB08B +8EA5C8183331931769777C502E4DD4348DBF937560C37168C6FB31D04483E204D23C51F74BA204 +8409709D3B387CF7ADC611C68BB8DCC51ABAF46F4557D9A7D39472775F17F7D57FE5BE656B7178 +54306B9D35A6ADBEA90A4CB0B4196045B01BCC454395C6DCCD91DF342E853E390D0A060A587673 +6A7713D1BBB7EBF6BD15680DBD6996E69BE0A25DE4358BAA6FFFF20AB9FAAD1F62A773A51FBB25 +9DCD63271013026CC59090452EFD867D24C4B87B30C8B338408836B68D9F5BA5444C5AB5075D38 +1A8FE2FC68F3E307710A68163554EBE7002D15D5E5A8DD662195CFF998B7826FB58345A0C932B5 +E3505C5A7174A649668910C3493DC2BDD0635275431DDD1304699B371FE983FAB90976279ACA40 +6777877762511873E042A65E5F0D3CD63B692D22364A208B555EA28963348D2C2DE3BD025E54DF +656FC7749C9406325C809B36EF3CF9BFE641783D6B82DCFCF63482D2E82BB4DB6599D1771B6DF4 +FCFB7803B5853A371CAFF56A1A6F7060AAED31347807AC7D0114BD90CFBDF64C0A0BE6D2A18883 +CB9577A8480062E6849942CFAF4290F2BEFCD4B7A212F88B6ED02A82F4134C66609096E11258E4 +6E9EC209B58597889F3B86F66D5678CD1F0A0260BA8305EE6B038842FC4244767E615E15626773 +1006379D908D8048E94ADB70CEB5E6762763E8744D8CBE771B01BF51EAEEF378EFC38233FCE953 +1ACC4F8FEB18E3164C7C834F7A253C0EA5CDD0A541A0E8A263EC6CE7810D311D45C018CF88579A +60864FAB0D4D6E8DE5D2D77639AA944DF27C99067D4FBAA626BD61B36F4DC0CFEFC52DD1EE665E +FD87E73F791D95BF9368072D720A8E7069C9C9FA65D22B0C401115D19458883F4B37E631D6B532 +8C7E5A10B6E3F9407FB6AB8DB7D25BD0D682B197EE8C55663AA50B6B20DA99B489F8BF5F091949 +16DDF7781E5E437C208BD4C68F2DA4B4913C69DE358E9E8750F8AE45D8F0958F30FB7AC997B253 +C255CDB46054EE7CE90EE8C3B0379EDE79009F6952DD0C29A682813B283A18E11ABA75DDB8985F +F81377EF1420C3F93832DA217576D9871815CF0FAAD815FAA4B8D93862E0F7FE9424A40186E933 +81DE8FAC067BFED22ED9A8D6794FD76B97270E30ECECB34C4CCEC5C8681BDD66DE14679A85468D +2C7952A33C265FB2650B1D8DC32E867A98354E21F5E644688285315034BEA5C8981C9B36502C87 +4A3F87B5BF5BD1E3241B4056D848F46BE457752DAB938CBA20A7A8643C99E8A0719D9FF7422FC9 +1F25BDC284D1F0664C6EA1900938848BCCFEBF2BC4A0E37DE2DB48C5311F7BB5FCE22C3948F8C1 +AB83B98945A1FD7F8812CBCF8852F20D26B70D94D04E4C3B3593BE0716B016630E43C349B56F9F +C17A9D19172C4E1220F97A7B350DD592CE9E8DD5481A3A0733B95C58241B333586198F375F1F7A +FCB84E33878056472D0153459A5AAEB4F264AE38CEF24CEBA2A32970E642820E9708B137180739 +0755DB1F6E830A73DF803365B93F815A330E307828F3FFE89B1051EF80466E3F2BC7C5D703D5AB +10F0411C20E72745A13167759657C8F68457BE6C9EAEFAF4C689839179432E36200EC7C492EF2F +76AF90BBF8333DE26D91EC67F32425B3655D2AB080D6F62AE8CF99002BDA6D369529CA0110265A +E93FAA293D3E5CE6121C899FA575DAFAA8293DD6BEB7F8F5356B7076B38EF4E4DB70F004EB1FCF +F2501A24FC75A3BAACA7E6D0706FDEB788C4FDFCA642536036F90E65F6BD876DB2519DF5085C17 +E5474B454FECA74BF0F3684698585397E3E04847A1700307B25D00A2543C5F5AC662798C2BCEA5 +1A56A0D92E1D376E01898FAF604AE6C3861592CE3CCAD063C628E15C2F459A6399556F582DB160 +0C8C1C55FA94E64AE5754715B007AFE6E024AD0E96218E777E90794820DCE4FF8C0F936EDF0C55 +2808CB0DFDA4EAD0F1FB144651891982DF671D9EDF47798A24AA5F0B33E9CF63AD8AD4F3440CE3 +76B4C47499FC93F8277F3D22457B98F956C39C53D177F0CCBBB529A36055AA4EEC626A7EEED64D +646ED1FD0C3685CF4E2DE42693E7E212343B83FD75AC33DEFB9D16A1771D6D3622998E556C0AB7 +F2D811339E89330348FBA8AE94EAD8B18BAE18CA3683225EBED1A4DF9EDD2FCCC34E74822966D1 +D5F71D2346AB76CC3D0AAFFA3E3D57CEC007C9D892C5A82809976719F964186D3279D79B4B5AC1 +F0333EBB8742D25644A962D02EC011FDFD7455120BF41418D4FD6313066DBFE5A0BEEDC59ECA8F +8D1FEE9199848433A584EB5347173D726A521859A91EDA4E2D73EE7E8C51339B86305C63E35E86 +B4FF303B8B1075999B68513497249C62ECA2736FF6958EC66FB78AFA10532913ED98C1E13420FE +18C9884E3DA3ADAEBEB2AFFC5800668A2AE2752BD30945BD58C75EB522F869CD640B1BBD982833 +F92EE830EBB96507F4762E3138243417FD2C4738FFB542D1B2A29CDBCCF9F3CEDF879CEA7CAAC2 +570C352F4E4CF19D069FBE80F9AB796AF8F419EFAB203B930625C4FA2435D0760067D328A5641D +834A56E35ACDB03751B97727E4553057FBD08C1236E45C424368A7B1550A4ED7A5E6270190C60D +F2E025A2E24392AC419DD2FCC5D85696A0B2468E1995C3AFDAE38058FA85E54DCFFCF687707847 +39FC137FDF9D6BDB97E38642A6E6DBAE8B2E599069634AFA5FCB9DFD01A00F7174EBEACA58E0A3 +29B88239CD746022D2B10A8BC3CC15CE973353C01D98D8B2D5AC9253CA5ACA59AF6324B5C69A7D +A13E28170A4077709CE7B4B77B407898085D371E0F9207BB42ED043D8579D57F81156EE847D962 +FBD8412ABEEA9B941AFC7B39A51391D02695C8FA95C775F8CA84DD46B2A28D1735C2C5228FF7B9 +29AE385AA61818C2E9568A4F23F8E890583E7DDAAC4F48875429CAC2D54714D179355590FA42D8 +160CEBDCF44BC348271FBDD219EB95D1153075C82383339334D05F741D7CF5F12F85DCE3A25BAD +6D518F3B13A0DEE4DB2CDEE3D284A8DF2F7B1C9D07E8D7F9D47D6BD6088591A9E089EA2BEF5B83 +CAAB3EC766B469DF9640DFBB4C32E505EE2A01EBF2E7155729D1B9E205711A74010C6BAC48F73A +4CCDB21FD55BBA48ACF5E5126CE38ADAAD6DBF3EA6297C56EC9CCB98766DA4C76DD8542BDD1596 +BBD288C262E48A15C27690644918944E039E9012C08E62A63495BC5C6E82285885A2E830DE725F +A7C746BCD0F333AA0DACB4D044CF8DA68EB5A1DD7B657715562D0D3F3F94F0B642C06BAF360191 +193F6ED4ED5F781AA5AE2DC7E9A6B73B182092BD5ABA6AF79E638152F7747E5938ED28D9C7D894 +A5762C519DD6620CECC58B2D583D38B63584172CCE9E4D5B3737422ABB778B2B85E9F6C80D3CF5 +FCBEE03C2C66613A8C5FFD6E5C2A4377472AAB0F1B93E7564657CEF1BA61C10849686BA4176116 +FEA3C5F3F89C492C1CEAA310E9A8578B7C5439355A +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +%%BeginResource: font lsunr20 +%!PS-AdobeFont-1.1: LucidaSansUnicode20 0.9 +%%CreationDate: 1994 Jun 04 10:00:12 +% Lucida is a registered trademark of Bigelow & Holmes Inc. +% NOTE: This is a partial font in Adobe Type 1 format. +% The complete font in fully hinted ATM compatible form is available from Y&Y +% (508) 371-3286 USA, email: tech-help@YandY.com, http://www.YandY.com +11 dict begin +/FontInfo 9 dict dup begin +/version (0.9) readonly def +/Notice ((c) 1993 Bigelow & Holmes Inc. Pat. Des. 289,420. All rights reserved.) readonly def +/Notice ((c) 1994 Y&Y Inc. All rights reserved.) readonly def +/FullName (Lucida Sans Unicode 20) readonly def +/FamilyName (LucidaSansUnicode) readonly def +/Weight (Normal) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /LucidaSansUnicode20 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 19 /2013 put +dup 20 /2014 put +dup 24 /2018 put +dup 25 /2019 put +dup 32 /2020 put +dup 33 /2021 put +dup 34 /2022 put +readonly def +/FontBBox{-615 -440 726 1024}readonly def +%/UniqueID 5054520 def +currentdict end +currentfile eexec +B43A59C23D31312E42BFF7A8FFD888C8118609E66724952B45D5A38971EEAF7AEAD27731404947 +E5D485EF2185B7B28FEE76585E49D85250EB800DB5DBEF09999B470F9167BB8A81B88DCF399612 +0C5E5C13C786349E7F44E018DDA185A7327A13F55575F00A7B68BA5390314FFC1BE676564A478B +1A253C30B407F07FEC8E3E3C46BC787775A409E084B26786F0856006E38AEB9E71FD27672DD999 +15E5FF51153CD2575D5A841791BBB0DAC82FC347B4323CDA6FA02627CF6F313D71FC7B56A6F4AB +9D45D4EBBA4FF9F13323865378F1240393DF17083189EA6A560B78F670F31187E21DD2282A40C4 +EC215B6E053C952A419363825F8074AA1F2791D599B236931ECA38548DF42AF21A0B93299C7A6B +CD562A5D47894A3F2BB10DE3513E0101686157DCCFE12025B2F62AB48BC56966D41430446797CB +34EAD92D70125D12FD83DD10713076729FC32F58FCE51BAAA5865AD74B16825913B821284679E5 +9C71C2DAF711C0E0D4E82BD5FCAD13D14E69C0C9E8DCE7F05D2A5B1F4B724498D405664EDC7CCB +CCDA84490522BB752CB6BB095A3AFA53A75A04E8B6446C38CE1F543231B8E7A462CC128403A30A +1553F8AD4952935A99E6781121623F4DCA70C680758A89F19FA860DDB7A02B71B4265E4EFE5CFF +F0871888F3C17034282B2250FA41A8529AD3CB49FC2F94FEDDFBED06ADB863F82168180A185578 +755D4D43CBDF4D1FA47B05871CDF84694574CB0634E35C47C9B4BF695B573F8DE08A555F0A2DF2 +2774590AA572463F9E2FB1510BBCA5E8F6ADC8217855D4F1D5C837C3CDBC31E1CB6F52CC6D0D65 +05E59AD73924E4EB1B37E9C433BF0ADAC35CE1832DACF7FE538E921DA937CE895F565305535EB8 +17575E443932C9896F7D11431F8ED21EEED56E490E157FF33BAD34EEBF76042168A86077AAF03B +A2173A795A37E0BCE53179C645E8C12C0FCBE7C33CC1AF08C58567B83B602E468A8E635F0811B7 +6F8E4318EAF2CC3C5DF01FD2A95662F00029F54AC7C8FC2B999CB46D6AE8D3FB1DC657C6E961C9 +F870BC5692211F2C244EF9CCF84C65D013425D119F60FD2131271C5FC6CBFFCAE54064DE267BBF +3E03F44C47BD24364273AE3D94C9C818825440FEA0E06CCCAB1CE6C411628FD565E8C78B039371 +F4F6618EDF8BBB15197285A8379DD1DE9B0AE8C580C44EC9A7A74DC4A4496A4868355BD28FD537 +38C81C8060FC059EBABC9B8F14F65C347E47EBB861DFED01318BF955010A0ED66DAC569E6794F4 +3425476951FA9D84A48D7F9075B0A197936EBABE6B9D3513B542E1646A0D32995AAE08FD77921C +79F575F40B8E813B330F1AA029FE6439D7505B9DC9210D43BA9CE32E3A14EF467C870B182ED37C +654DAEF47A595E363AD0BB939085DCEC7155829BBE1E1A47F1F2A4F3432E34EC91C1C85514D35E +ACE265943CD46A79D4226BAB3BF354A04F0E182B759835B9FE8F76F505057869CAE56BA3350712 +EB5103078544D804DFEA9DDAB528DD4939273645933425C0F64F7AC4E5D3B01D5D76CD95C65756 +B48FF39634475BA737AFADF17FBF3CD5AD0E88F6356CF06EED43EFEF9B5433EB1600D38D203D51 +A1099E2E20641DBAEC087D771323611E50B960C1B20EC7B1BC71697768A088D806400AB4CECC04 +67AEE799328421391BA370FF34C617F15105260632A8C0F4B22E792247E390B1F564C6FE227B85 +5A962A6E06E6F565D8D54F9887042237617FB78CCE75B0AEE938B1FF3F0362D6BC139C871D1BFF +B8AA0877F9D3F0DB55ECEE0AFE6871E01F204332718A0EFC66EF197523FCAF46898F32C1B324C6 +DFF22FD9BDB4DA9D95D5D2208CA9D67C6C13B3A3BCAE8AABF40EB224AB9CBA55204458FC526DD3 +8380F3F432EE69266C02ED0086DC8D6053AB3D3330D436B04DBAD95818B0A5025CEF13C378A9D7 +2B6C775ACB4833AD3570D1E76BD359A5A8EC9C4F0938F7240A1B663AA366A4FCF3C102DFB0FC07 +994E668F503A0E28CBD1CFC49041562DA2249B608712EFC10C9A35E0FD9B346864E6AF644F07BE +325FC4E08F81E9E8A6DE438D3ED64F05A57D3693F770C2E139ACEAB73366F56A94422EB50F6670 +9032FAB1F7ED83D150A8D26B45D8B59BF720D04C4E283A647065EC0CC0D55D9FD7C6502EE3DBE3 +E785F49966E1099CE4596EA2F1CAFD038E882F05CD9628F74A9A09A5DE677704A12CD82A95BF7F +01A5147536FFC7EEABA0D288DF1A9C9B639350A266C42500696B7E925174AE15CDD011119E8288 +7EDF23F0AC7EEA78E38104C00BACCED03A7785D88FEA2B4A3EC5DA4ED2D0357EEB43C4278CAEAB +5BE44EC6C777B67FF30140A391A66CF1B47778BC0D9BF6804E78DAEAFCF1C3F67760C94ACDC930 +94E68CC33121CAB7A1FA79E8E14276CC001A8D31333FC78721C8368034B418756A9EB23D1F7104 +43326DF928CFB2E1F9246CCF09F5D21537213B798D2B72893A8285EDCD48509C022EDB3E0943A8 +AAE2FF11AD8B6EC442F30DE19215EC6BCED82C345467DF50276F8123BC061EB2ADAFA6CDECD1C5 +5C529BD9B1ECE353EE7A58BDFFEA47EC30FF94FDEB0E465B7A45EC795797DE00F78E180B73B3A6 +F5B3F35BD80882003053F618940DB675D846095F63E90CC77B5022E963CC39915CF3B95F8F5A45 +4419ABFDAE6087C4EAB799A8A5F1CD7A234A2407A2C08DF813227CCE6DA56F6D1B081278C6E046 +96CD90F917C7AEEEA3032A1A13993079F3C41DCA1FF2B300BEE78A8D9512736DE4DF75CEBDDC58 +33F8D1555590AC92FBA63E2D59B80EE8DEC88CF78435CB4CA57D702DD144893C3279DADF5C6164 +70EA7FFF87FE66F510ADE5B32019709CE6D9BBEA02F2BA243975E7800839D904DC09C2306A292B +B812F8CC973D40810ECA109BDE38961FC2678BC1CD377E2FEEB43E2072B38621801D5ADA0A92A6 +5F37C7FA277ABBBF372D08B834C737DDFD16B51190DD3043040B9C060A1828742BCF814CA98EA3 +77DB2DAA1B027BDE291293D8CFC3DC73A75BBB4BDE3CD80FDA05E46A2CE0B003663A2003FAE55B +0535A681672F7D8FC966834DEC4DFE56D3286FF86C10630F9EB91BB731A9C2AFDDD4F1554C4728 +4D68FE4A486EEDE086A565929B97FF763B31B5CE48678860215F768CEE265E157F1A44C3092FD0 +48239B140F2F8801D05B76FC9EB969BB6EBA6D472F1C016B94012127975E20FE911529090CCCEF +4C980611502E8641568824AA0F18FC3CBC5C2C46DF4A310A1961427A7785EDC75D0DC93FD03C26 +43FFE864A91F4F285FFFB5C74803081A71AD441522F4C5DDDEB96BF5A7080BDB57A22AE8DD9310 +02D940551006B0863C4274D0090A9C2EA9516F291F4A833772CE2F0CCF7A92AE08BC02CDA5B434 +3D8E61C1F1ED39A3614BFE3BBD2BE7C9C3A64F1F7FFDAFF51D3FA0357F672316BA9810A620911C +06393D472F8BFAEF9AC09A031C3A1A33816A77A6C5EA88AF4D4303EC449982D05ACA3481807F2F +0775C87DA047792078D7FD735623D86C37274CB49235A22D01AF43791078E4AE92AADB3EF71EBB +7C96F303E70F1E3F7569471C6A0FC9B9C59E4DC141FBE2752F6717F4A7C8CB5D47EDE806D835D2 +8F48927CA3A3C38B1E5310A47943668646946991FD87BDF723BA535A587EC98F9CC86A15F3AF79 +625C5E9A1570412BD515DBC288A9DC3E4194A2031707D47E54A1FFB73099356BBF4C67A22A71BE +AB39619759800E4F9F4B558457CFD32E456D546BD2542B3F493A2FEB432FC1511587E4F5C0BCE6 +3BD4CA268846F13233A6D3E22CD92BD8E19627B71EAC34CB56125C86CB4168194ED4E45FC6B759 +5887FCEA79676EADACAC6F0A35B30B63E61C51DC92E4FD960EAA2105ADE6C4E551FB59E0381ED8 +90AD55857073689ADAAFFD1D27AF7E9BCCD8078D62E2299E35EE4255817A3E7CBF4C142AC2F10F +A5486FCB20EA7E6281F6FB7F91DF0A48B0547EE2133AC09C1E0700039CDA77281121975D84864B +FB24A6F6E05F5E801FF02B04A8FAE6F682E7C9A705B0A6CAFD3A84698528921856038137A3D111 +30602F28D61D26533FAC142D5A6F0D7C918D16BF3C1CA65109ABBED3BD897C8BFA4490545552D4 +B15F6264FFF4B02CD60970D6D8F35A18295A2AEBAC056F768F29526958DC1E717FD5D6504E303D +1C36802BFAEC578F5E3F0D1BE9FF5B65B3AF6DD63FBE07432BD1EE72BD24C27C5CCAC3B95FECA0 +AEDCB55933140D1041DE9F2AFA2ED9F3D4BE5D7D0C7F325AE26CB1FECC40CCD6A4085515A11F62 +26 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +%%BeginResource: font lsunr21 +%!PS-AdobeFont-1.1: LucidaSansUnicode21 0.9 +%%CreationDate: 1994 Jun 04 10:04:24 +% Lucida is a registered trademark of Bigelow & Holmes Inc. +% NOTE: This is a partial font in Adobe Type 1 format. +% The complete font in fully hinted ATM compatible form is available from Y&Y +% (508) 371-3286 USA, email: tech-help@YandY.com, http://www.YandY.com +11 dict begin +/FontInfo 9 dict dup begin +/version (0.9) readonly def +/Notice ((c) 1993 Bigelow & Holmes Inc. Pat. Des. 289,420. All rights reserved.) readonly def +/Notice ((c) 1994 Y&Y Inc. All rights reserved.) readonly def +/FullName (Lucida Sans Unicode 21) readonly def +/FamilyName (LucidaSansUnicode) readonly def +/Weight (Normal) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /LucidaSansUnicode21 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 144 /2190 put +dup 145 /2191 put +dup 146 /2192 put +dup 147 /2193 put +dup 34 /2122 put +dup 49 /2131 put +readonly def +/FontBBox{-30 -325 1384 883}readonly def +%/UniqueID 5054521 def +currentdict end +currentfile eexec +8CECFA711B4939E41CA045BB7E8765272CCE317ABEAF2B07E70D992D651C41DC23B029563922C0 +95FE85170451329EEA8C7BF7A2726EDA9D9C6D097F0F7FB11AE93E80BF8DFEB2012E3B9F49A227 +13E573A8BAB0BD7AA774AFAA41B97C6C70A3BF84A0B468C41B70D35F1310A4BCF2B97287E2FBF9 +4A30663A4DBB485672BB54D8FEAEFDE594B3B73220D0C873C546C40B5138841E9803A47402513E +8FF4F9343A0E92A13A04C27921E3EAAB23C355AB06A42C0BC5CEF70BAF6D687B5C79B5360DD42D +B2C878AC8DF4228BB74DD81C6FEFF53A36279510E983BDCD1A8145830308160030F770C3DE994A +4DE01ACD31F1D76E3094B43F3316267B62B6D653546469CBD35DC8B1541372AACED3750E498938 +970666D8B36D41627069EF1511128034B8A364FACEF8068FB8A2F7F3209E5A769AF14C3E7F044F +6892F9009EEACF40CA1AEC6F322861CD38A8CE6A110A5C348EC2CB376E5110065918A03C02835B +E3E89B986010D70284A334D6725965CD86C1F4937315B5BFA1D7E584988077138480F1B72F2870 +2477850CB729C71006FBA750B4989EC757A808D51431556B673A084E350A74279AB2E9C638F7D5 +B6BE1D50118747D01A6F3250CB9F204E3B03CC46DEC9821867B2334D2593522BE05CD30CA6B75D +DE85222B64269B1DA310838E5962A391BC8197808B9D11B877A50D431C25870F7043983E965CF5 +0F5BA07DA4DD39F97069868D506F035C0DE343F7F5C12587B2B05CE2ADE6822C6C0739A54D5DAC +415135137E8341C4D37F7D4534BD8FCE1DEBBAA3C378C9C9CC083F3A892EB7E44144F118680E0B +2A94BE914FAED74B80747D013961C682A0C3A3F55AE7496F7A15786BB0AEA5B1079668EAED2527 +9F744F8FD112A6C33DF4E1500520910769D69C8F4D659322035993A3CD70CAA65F9DAF1485DA40 +CBD374802317B409FB464C03C8A46831DE7B04E924B9D8F5C5239CF99DFB7176B2A01C1A31AF6A +D7EE0115C6CF9EB2AEC83901795A91D4563F32399E1AEB65ADE7B8248571668410AC1D86F71918 +70B0FF9C844CB7E6352B01A2C169E37513CF7C37D131B042AE6584F1ECC680AF5AEFC74D2C3309 +12C36CBA7D88E4D44C77EBD7377674DBCD9FADA92577843CB5B1C0CCCA0A9CC3BE2A8F4CFEE1DD +ECA543A7967806B9F65C5337403864168AD5EED97FF91EA2A00BC4480D96D09080029CF4BE6975 +B34B40182DA9DE77D82BBAE0007448F08DD19A443C3EDB130AA1E36D2DE61D809BB3508EB12237 +E460F68508290E1DF4E45B652B0A2EA82DED7F3A5A05E9F6FE3CD1E8FE988B7258E81A243DA0A9 +B677C368D33AA67DCD8BED50A86331179CD2A6AF65E164A925258D5DD67704B2F3D7B3A9797DB4 +E5092122646EF94DE3FDB3548D60702ECE17FCEFAA298D9825EFB4CB96C20E5AE933A4F9E7FD4A +D8BB4FFA426366AA9EC6DD84689F24BD858212C0D745D674D513DC4C07C37D9733ECE1D7F7059B +EEEFBEA12DB1F8F21F6DB88EA763511B1CB80089383350F0EEF474F70276C7B44D075B21862115 +1C4C8CE0303FDC81D848F74CFA94CB2D2F61FB99B92DFBC6CECC15955A790C62B3DA7654CB95FC +9EB2544F05AB69475FC405C3F0F1E80EEA5F82EE0B3E47937556C7E14CFEF5A58ECD7B975E519F +CA80763297F483FE24B96F09BB0C6ACE0753EF674B62B6F7C2A301BC1F8C7D2A84CB9DBC68AFF0 +7ED80EDB570861D23430D1A30653E5580B9B9902AAD063F04A700E801964927CF9943A074D8FAE +A48CB417EF69C589EF625E46A55472A0A2B3CF9C7CAC86764E06ADFDBA7AC08812B171C4ED089F +3FD3086F97D6B96299E47EC1BC98C8320ADF7DAA7D384A128693DEC73675CD0C185BB260668E38 +9A35204FA0838F70D1AE5DC74957D9EA2E2C3088D660580C20D51B212B6CC83D9003260FA4873E +0B88A4DA8EEC5AF1DBAE1C0D1454746F9014753E3CAA9C8AF20D97E949D8685D5D9130BF1A9F79 +57569B17DBAB5AF2F08737E9A046C0BBAA1238D2A72504B9131401B96606AC9230CACF736151D7 +E1F79E7E4F42F625AB66F02FDA6C31C497B1C2A2A0C4DAA420B59D647495B306723195DBF74F72 +FEA3B0BD8C2A16E95B442FDF0B39CF601FAE4BB5AC9C85C1042A6C54C44B60B3A44D741E788165 +2126A8235FB58650ADCBB265C349F5A93543A4F765C97225C9566D7C4DCCC6779E05D9827F8C00 +D78D582BBC77E25C3A170C469A268B483BC3153D851FFED8A1911B6864655255515363D8DBFFB8 +0C02180CB399D92C242F0F450766B5D7D29F59B5D7B47633C87A1B46EB3322715BE04BDB99E126 +650DF431A9E8DF486C8C63F5F0D26DC24B9DED300D3107A814E4A01BE93CCB3694A99887C4F1A3 +46DFEE064D27CA5D5899AD2F8B3915E304C8A4121A26C1B7B8B81B9841982F6ACCD03F249A138E +0F836D0F533153FCC8B3B4CEF39802D66A0EF0CE76F8E2C03D880FC4F44C1FDEDF0C50971507C0 +7202C26CB4C0C1EBAE4AF043F2893D4B15B183B5B60DA901252BC6DE8D8DBCD54B418C088D7D07 +3084C0809EA621F31EC5DE23374C5A4AFC2AAABE30A0CD14CF07914839804BC88A7340BED9C24E +48B93770745A08B2FD64AF52D5194D57FDCFF6ADCCB3A553343FFB2F82212E5152EC91D9F19F93 +7839782E3A8FEED1128568C5D39AEF3638592F8321A7513B6C361D56EAD81E2ADC3DACE11B7B50 +73EA40B36A9E042BDFE78E30EC5059549BF9D1BD29722E6FE3E3CDF81029F81E66C887B55A6E3A +96826166A1FD6D27B7B3B5D72046373492434088F7634CB45301F885909D249C2680E5B1AF7F1A +5C1A7997730E94D8A0C643937B284C0FE0EA447965A8942E882C20833C9EEA28D063C6B5C52F06 +D9580E5387B9C87945B1990EF0537A00BDE28C42C08321C0730A04AB9A0DB8435F250E10FBD8F1 +B70FF91E4B795BB353AB3DA14F7FD8B61AD2AF4CEF5775B16BEFF8E3198558F77036CEE8F21556 +BB24BB44437966855114167168A2F45CB4CE1CC31FA04E39FE5F4F07A21D878DD4D833F2905E4A +541F26B1599463BAE2BACEDDA6A25569E27003BD478232E627892502ACAAEF3E61B56139542D1C +6D6A6B3873EEC2EF0BA2CB21AA0148F449697C43D3CE159B01827618C1E9A835186C2EEEFF0EBD +C22D9250307D280706754476A9B24E141B88294CC88634E1690C5482E5232EC7F174256999DF02 +FE1FAFA59C4369C41B8E9BA66699575035718309DC3409EF68CF0768E8A2AE0E5BBA760F3EB926 +DD09D37641808114AA91761DBDF3D2BC64A42DABD5010465BD47597A69B1F88DB579B7A47563B4 +9BA22E69D7294A81042FC2A57781D8FBB5E87E77539498BEFAFD98E3C1C761EE5E7B635AE93BCD +E9479904AB3B3BB64EDB0C80CC2B04BD9295E208340BF65D55353BF8472EBC77 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +%%BeginResource: font lsunr22 +%!PS-AdobeFont-1.1: LucidaSansUnicode22 0.9 +%%CreationDate: 1994 Jun 04 10:23:13 +% Lucida is a registered trademark of Bigelow & Holmes Inc. +% NOTE: This is a partial font in Adobe Type 1 format. +% The complete font in fully hinted ATM compatible form is available from Y&Y +% (508) 371-3286 USA, email: tech-help@YandY.com, http://www.YandY.com +11 dict begin +/FontInfo 9 dict dup begin +/version (0.9) readonly def +/Notice ((c) 1993 Bigelow & Holmes Inc. Pat. Des. 289,420. All rights reserved.) readonly def +/Notice ((c) 1994 Y&Y Inc. All rights reserved.) readonly def +/FullName (Lucida Sans Unicode 22) readonly def +/FamilyName (LucidaSansUnicode) readonly def +/Weight (Normal) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /LucidaSansUnicode22 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 100 /2264 put +dup 102 /2266 put +dup 103 /2267 put +dup 130 /2282 put +dup 131 /2283 put +dup 134 /2286 put +dup 135 /2287 put +dup 41 /2229 put +dup 42 /222a put +dup 43 /222b put +dup 67 /2243 put +dup 96 /2260 put +dup 97 /2261 put +dup 23 /2217 put +dup 25 /2219 put +dup 26 /221a put +dup 29 /221d put +dup 30 /221e put +dup 2 /2202 put +dup 5 /2205 put +dup 7 /2207 put +readonly def +/FontBBox{84 -166 1060 898}readonly def +%/UniqueID 5054522 def +currentdict end +currentfile eexec +EC18885AF58F29AEFACAEEA59037C942D5A3FAB833BA43EA181148D28AB4B88B44CA4ACA1F92DC +003EAE53A624731252861B743FB223E6A26B5EA4CA4237504F6A6CCA326B9405AB85D95ADAAE82 +22B5F340DF4D35E0A2CB80190E539D9C09EC6DE84EDF6E6DC6E40089958D58B17EC7357C0EB84A +61C5A04AB034973BD320598296F9A79CA937F8946E59DDE543CC946C528E3106DEBF61B81D7A8A +69AC62FC23908A8A656B8518CB8FDAF8A2B57C3C7D4B644754586A739AFE94AAA7B685E0B09EF2 +C30BFEE0F183A420766F0BE21197DEF2C56A4BA47A2AC88C0687DCBA5494D19D543C8D7F43E8F8 +67EF76E2E818ED425C61EB7D3EB50B1174995ACA71352D8218D3734BDE02F4A95E232BD4AD9845 +09AAC48D0F388BD9ED89E3DB5276D12DB11621AD67DEB0F7CF2046A95D6147BD77893BD999663C +6BB6206F86C9E5BF1B7296EA35C677788DD9627D6385B6903C83B27CB461AB230B86435838C33F +A32A0B5DF678E7A5414A11E4BCFF1098BA6A3A6C70AEC03193BF8E08C1F703E2B0470B171CC9C9 +CFBBC16B532F551E32A6EBB545F8F16B4DFD5945ABF67BAD9AED02092F99DABD828C674A246A3B +50B6CFEC2542399D397121C09D60CD1F679CB805E385F3D63FCEC624B93BDA066709C669C50BD3 +261D4A143B81F83AC3AD4052FA424782F1C8985A783C1BDAB4303948E6BA2C6F1645D1AAEF161F +AA605149EBCE77F37B904041DCA83C92CC102FEA932313FCF28C23DA1D3F876F612EA30006CC36 +B9376696E6D3C74AC6D5E39653C03434CEB58C958FFE72BE74DCFD7921BD8D29CB9B5D9462CB1E +6CA793A7E2A7F1ABA296877AD19BAB0AA44F0916866DAAEEB3DD86474882FD901F4FE785121720 +80BB24A21D83C909FFD3ACBED7C3F97E8D434B4B3DBCC83A954037319D24198CC1B14695178CFB +18CC1F530CAEF7C5C845403B52E2A5CE0B7F158B8C4904B2EAEC08C9BA7AD693405E918356E7D5 +1E87E2857B18EABB71256596245BFB5D3F3E547AB1355106CD33AEADDCC870BEEC170FAED7884C +82DB23EB4B99C4E856B81773093BF2B625D38475AFDCFCD02468EB11B035E4950C2E909EF0AC96 +2C6C41D25D43C5653AE66D718013E922561CB88101CCA5E70905BC6D48B80C177F552BDC9BB31E +D51DED3C0D40BC161A86C06F8FADC8449AA647EA6A83D9A5AB66E8CC4B5C705375CFE9AA94C1C5 +6AC04BE22C68860DC51566D69AA649F97B43E557EE45E73B23EE06F851860CE6C29CFFFC95F561 +165AFF73E18A9DE0A1660754A311DAF53146BBB751053D424E32E8600B50303AD1A7D9E663580A +BB54114C9BF9E2850BCF12B5428A4CB8E458B16BEB43751E68BE952B34A8064CEF61452FF56537 +EF56D18A3A3A3081029B7027600A1DC1199772F97102E7FB28DBF3A941729599B0F24A565C1BCB +62FEC5ED752428920BC1C60C08ECD8EB86AEF841364B00168456006B406FE14F1D4F338B142CFC +42BA7DDCCC92233212EC5B35E205372291B4FCA126E5FE8F6D4C8A37017DE0463D7261E98813E5 +8B1FBF38993879ED183A30C569DB75D9644B0C6D237F76D760C3D77C7569FF8A1CCD752AD9FC87 +3078022F6A3B1D749DB363097597C2CEF08CF19BBBBA4DC2AEEAC4312E9851639DF6FA9E2893B4 +3366E631AC15951644702A58B7FF164C8D4137052A3CE699438B9B5FE2228DFD6B0931C6149B18 +6B9F57F9D780BAA7835331B10EC5D837B9257044B3CCF8AE4590B23796C7A712C6F188E20DFA22 +1ADDDC895EBEF28DDC6FE7C1086AB26B878DA3A1ABEF1E7EAD344CD7CBFA752F7C274E8E9C970D +744186961EE5717BD0F50B67144FD576F6B668CA608436053ECBE116CDE462509A48DA90D66105 +ADE07641CCE083FDD6F161CDD59145E8514CC0BF34FB77B657A287EFF963E63DE600FB15BA6A17 +87E63D3208F5BB859E650092902715185D69A11C6F73DE088D60DBBB98E70ED4B7C5D4CA9B2AAB +BA91E81E20CBF4716D603416B399B856C46729D4AA83330CB528859DC68CD028CAEBF9FBBCCB5D +50CCF2D3323000855669842544A61CA55FC4209AF3D6187100C47F2681D3BB823F09D3DEDDFD89 +C87B17BE0B0A0D14E75370C6D2CAB809BBE932E6718945D6933EBB8A24FD507906BC651216119E +CEC5B916BCA6459AED96417AEEEFEBC4E71D76DC5B17A37B8945A83946E64B21AF0D42282B0E25 +A3DDC555E709C80C5C8CDC5E1AD62B89A7CC1E1AEC962FEED653010E2FEF56EB5A14F810AEFE27 +16F0A27E7EDC63A7D2E1C6AD410E22E35C8C923EFC2554355092DDA8113F6D9D5B5BEF54C824A5 +1D7F5CA2CCD4321F9C3A6EC8320F9A577610C902B70B6B0EE5BD381D9A7C6B722BB55EA06DFB77 +DCFE84A0397C8FB3BA4917521A88B43F9F12F81571C39ABE049D54405B96D0BBFFFDEDD0E90C3D +D6B26D82D797C6B31B7FEC4BB0B51B2E8357C5CA8A6181536CC13498F7EF383B98281756F3D25D +6961D477191F00452FE9EBAB94EFCE0C958A415B7A8B0AEF3F072A3DAC3B6F1BC974CE0DC92A08 +00EF65EDABF91DDCE2931A6B6CDB9B46E106EEBB1017E487E4AC078243A8441422FD61BE99A8F1 +022CA7C9B86AC24E4101F46614E20749FA065C9F9EF8AB8D45DCB5632F7E5579A4EB5C44588E0E +AB91E0FA25868A585ED5364804118B2EEADD52301644AB6AF821BD6E5A78E3BD4701D7211B4929 +1EB22DA0301F61F69379F1319ECF14C6ADCF574657B6BA459E6FE012A1C6CF198250A7A9BBA055 +06215E6558DEC8CFAF5F342975B444F98782CC674EF5E03DFDF803C5645F303E229448E57E3891 +37A4703A784AE802B6D730C82E7A5981DC29B586174FB22E854CBBE4C359D27BEAAA684866AECC +6F33F9C1E0CDB2F97E32F7DE1C74CBE941D21EBB079CCAD9F45BB6C976331CCB1AE84BD12DDD0C +0245E24C556BD9DF805DDEAB76BB5B82A148CDFB8C17F97B70114107A41812EE10D16366444BFF +E6EC7BB9FE286ACF78FC1C50369FA2E0E9BB26BEBD3112F8715651DDC05482809C0348B8834AD5 +F8594197582B9FA1318E4908A108A08BF0163B419D0B20BEC4402E2B1E96F18552DD6FE45B9759 +FCB8EE6A64B9D901173B3BB5D36EA3074C8065D37A7B0E01884A59841C5C208D924D8436AE36B5 +F7EE7EBBD690EAB5AE9897B43B6F46549B6B41CFC6A5EFEB53A6E1EF8D9DF28E78D3186158D4D6 +1C10AAB0C85FB5A9CC43535D2E458090AA80AA75F39B0AD1C02E3C103269E8A40E60832AA2B160 +B78BF08BF2DB06C8D55C768055DB5F52D1F24A2599EF1F412DB23121BC8BABC1933CD43B0A5908 +77246FD36AB18D0F0452325E5F1FD495499C754D3EFD68D948DE856774E476660F91577FA68756 +CF17936C23246504495C072341C8AF8E7E4BAA8A5D7CAD373D9599F52A4D88C2F5DEB65A2B9C5B +6914C569F8CFF9164725C261EEC2AAE3C88A26BFE1B6327DF1EEF827562BBF37E8106729B5CCCF +C0F1011864574E4D0E5B3CEA70B562F03BDDA49B107521F192D36ABC6ADA755456175EC9ABBBE1 +E550C412239EC97662338E92253BBFC7D142570A6F22E212C8DECAC66B4AAAD9DF4BB681BCA16B +29B7FA623C47FF37905F923C0143AE479FADC0E27E8FA15B461509D847F02876975C6B3B33F490 +A4820F9C43D3F0115C6157211CFF4B13696BE005FD45481C9E496B078389E01815B78C9402841C +45B721355653E4B64C5F226D114DC02ACCDE11E588DF5A7889B8670F1C9F40A5DB89A7C8E901A2 +8EBFD43B24A5DB9B2F864C6A45F9DD7DA926DA86DBE5E2EC9FA04004862A5903F6A5F372303738 +B42D7FC4A35941157DB85F26C8D11099545E57B0AAA49DE793C778B8E75F45CF566B54BD1DDD7D +17E3621418F09A96A4EA2D20AE83D88E45C0B083E0CB9F3D5FB7D704581BE82E3D242B3EA6A7A9 +29B3B8AF7F5D20CD8303E7EE1CDD637E3DBDFA0B876A2E7B7106AB66779F1ECE9AB75E4C2083C7 +C97B246EF9B67937CFE4DA2FD95A5E12D019AEB10A8B1F609F2426F53CE3A6573B8A13392D762B +B2A97FF2B9ACD94ACBEA9A46D6F0F2C464145BC6AC740A19DCE03904FB928F29053493D4CA10E1 +351458BCE3B003C4BD38C891559E363DB4F6189F4925E314F77E7900DB5285C87EF4E2C55B9A12 +CBDA6762604F98B6D2209BC928DDDA85C5B5AB12876AE7D6864E8A242EB1251D6FD05F8F088A80 +FCF304F598F9FB6AD997C8A5481BF577FA4F61B2B742FAF0BC932E886A961B060E6320C3D49D62 +7C04EB0295A7DF9F8AF5F2BA6FB64AB76F685781460B35B7C510E3867DC0DC41179A1E8BC5BDB9 +5DC54721AA06B8C2119A8617674BD10F0687B07D56DFD63AAD41DF660F600DFCD91DC80645C4F1 +3FAA4A6C4B240863F6508A81EDF8B867C948EB7D3A7753A4731AF75F0C05DE4680CE216E04C8FC +49BC1CF193589EA6A33C25BC5B7155D4E34A43B49A8C37733AFDD714774E9E70FC22B40D6C9192 +D073E2E9731FA2B80ADE7D40ADC5FE1ACC52952159137FA5B30A7EA95C39A5B6CA9F6F1B3598B2 +90EC820457E11DB827E3D458C2E682BC1FB6B5E74817246B4FB47DF7DE1CDB835A849078BF71A9 +7711EB1F74791E797B3E73FCDAB725C5898D5188BAE77432AC20087EF62211EAFBA46B91B295E0 +8FD9D4C98C1331E4A1D7206A60F03EFD2E8925ACD1082FDDA8B2B6980B960C9D03BC754AB0FFF3 +EB6E92F8A6D41954CCC7A6598CCA897057141F0ADDFED6F802994D00EFC0771E4B5CC79CED9844 +E2CF890AC9F70AA4567102ABCC67C084AB818076D3134089E623CDB5CEF16E6AC89A1EC34BBC2D +ACF87E3D7EDBC5A2FE1774FE6B5BB78FC53425D364919E8F086D07ED1ECA919F003A1C5C05B914 +02086AC63F3546A34F2F99C88140F4C51096B72169B413043C366BA7BA2E5D1DE570FC1EC6CBDF +03658EE0AB3C1144FE15F8E89FF354E00261483F366BBA154DAF5E6D910F1D40F7DB4BBCF8D82F +4BEAB925EA8B0F5761B1517A2BFDD400E6B6B9605034688A7148596AA8F25B97772979B49AF56D +28B10146125B19AFC56881CA4BD579D649D104CF443E94B186FBFA0F29538D8AAC4EA3C1774A7A +64226D033869F1D821E98B9C9C1393FF35EC9A962BB8BFD3D8D062C086234D6F14D9AE028C2957 +5114905FA35B368C44BFA14DE4E73A4D6C1A119B79A6E3EBB915C9D48D3FAEC3EF31B7AE39217A +21B66FBA853E750000D395A9BE87E78CD91F390C5919766CF31E45EFE678577ADB5931CF5553AF +54F9A0E9BE0428EACD715F7D20C3D75D20810C4C0D96BB10C14B557C201B954841501341827C1A +30DA27C34A5A4CAEAFF4A3ABA566249EB82BFB367EF41635B2E27133C0BC4BF6EE280401B00B48 +87EE78B50E524A9526E442E2EB566F3ACABF1C60C65F60075C434367C67DA4AE42B1462BBB0AE3 +9C83123BEB32327FA66C18409CAEA447B8F504FBFB2CA2EB0448691CBC3C1826AD55697611E310 +BA84B3133D1240BA430B08010BBB0DD02A84FECA352324CBCC9AE188CD9213C2D513745D868C4A +6A0C995D7B455034DDC41A8ED06752805DE487375C69DD746D7F8940101EA49871A4B28AD792A5 +69E76930C32568A9ECA82892B44E111ED0806BDFFF59EDD79B5BB11F82CB7EA201524E6D6D8343 +C3EF568F33A450F8A25128218CEB810B4D4566547F2F0A0640D7F4C8623945E5755BB7B6B48272 +96AF202D9F4B17A2B4CD03D961B5728C04E275E037E49FE8A29A89972D0061055357A40DFB5019 +D0959C44E231D6AB8C6FCC8E24F5291E4B9C082AB5F7D58CCF25 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +%%BeginResource: font lsunr25 +%!PS-AdobeFont-1.1: LucidaSansUnicode25 0.9 +%%CreationDate: 1994 Jun 04 10:42:59 +% Lucida is a registered trademark of Bigelow & Holmes Inc. +% NOTE: This is a partial font in Adobe Type 1 format. +% The complete font in fully hinted ATM compatible form is available from Y&Y +% (508) 371-3286 USA, email: tech-help@YandY.com, http://www.YandY.com +11 dict begin +/FontInfo 9 dict dup begin +/version (0.9) readonly def +/Notice ((c) 1993 Bigelow & Holmes Inc. Pat. Des. 289,420. All rights reserved.) readonly def +/Notice ((c) 1994 Y&Y Inc. All rights reserved.) readonly def +/FullName (Lucida Sans Unicode 25) readonly def +/FamilyName (LucidaSansUnicode) readonly def +/Weight (Normal) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /LucidaSansUnicode25 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 161 /25a1 put +dup 202 /25ca put +dup 203 /25cb put +dup 230 /25e6 put +readonly def +/FontBBox{-26 -236 1026 815}readonly def +%/UniqueID 5054525 def +currentdict end +currentfile eexec +8A630409A330FC5FE1ED7CD3C975467DE475D113569CAA8B923FA3C5A4A5DBA1B426534896777D +FEC0CD780FDE4F4A4B37CBF69BAFE9D7B1674F09E7B60ECB1F741B6EDD9AF78B9450C77EB98488 +7838A9B1EFEC7714CB963DC0D2D7FC90DF439E7B2FD67B771E742DC7E7DB927415569E8F7DC363 +784A57FC7AC7182B65E2B2B985E0344DA414383767D69F0072B82FF65429A625F418B9554E3934 +A06F03727E3C9839A4E576E2351D0253B74FAC9084AF6E67133A5537926A8C80589A37F8ADA04B +5C2AC1126AA5CCBF23226508D011D14D13C6FFAC13BC42FFC82A696C06889B21F1453BDA33C3AC +FF81DDCE02738FAE387DF215DFF6FF74471B4EB78EA8C9F24AD655490C27E6059414A56A52A9FA +E82AC778F1210142A0F9051E5AE4B9E361B1FB91CA17F95CE918651919C7A235BECD1E676D582D +643C13D5912E896FAC77994450E36EB321BDB157BC6DB7FBD0EE4B0C1A420C2645ED9595D2D21E +F387557875DF6A9D774DAF42CA703FAA6377C62B435A83666621A7C4E578421D8C68899952954B +E992C6F613EC3AF8C2F4EC93A4AC5D7860448117BA2B6A968239B7DCC4036B4B1FBAECC17CAB89 +BAAAC5D4362C3CE32E00409A6AB9B231767C1A27514E9AAD74C32EB9F6C0DBB6F839A28BCBF862 +D183D1247828DA457DAC59A0CC0CA4153457F0DF3B5D6FCC06BCBB0B5919DA74CEB11DDF706F15 +B342B26D610DA0137ADF11F3BDDB3189C9DA0F0E870986F86C61CCE3AE60F771B65DD2E920BD6A +5094FD2A12AB3A59052BAF45248C006D431F5B04C9071F925A7F52C1271E7FD3A7F9B60FAFAD56 +8D8CEA6BE39066D98313C932A77140F1658FAD3B32F7418CA0FDF48BDF17F3AE6F095D34C707C4 +9F50C3DFC3148BEB942A63A5619B94218BA5C1F63F66ADE29E1396CCF7CF7CA97788D73D4671D7 +BB0CAE1B8E13CE410F2172B2445CFEC734F53A6EF3D3412C37908D22E3E80C817EAC0955CE2752 +E9B2327A08895A254ED18976E194E85CFF852770A56665EBAC4EAF1F6808F6288AA2776F813D6D +F089F25B21698D10A5C00522210F606F890760441B0871F31A4C0718527B68541A0314D67354BB +834F4FCD365DB2379468671DF697122B66E999BBA6B2A5A6D95E26FEB0E6AA3B4590D5B0C8F4F7 +AF1CB7FDB904F10E8817F7045238C813053CB2096EE5DAC923CC9AB2DB9FAE17B2BA08CA49DB7D +71ED0072A402793C51EE08DC09FC9C27F2E15254CCF9FEDB998F0E3B12C60BAE7CBC550A59BEF7 +CDE1159E1D6FA72E0026BE03299D851776F57069E9178CA0C53CBF939792BCA7CE52A3A90CA729 +91180F917F1E21FFDC2E306595ECD95BE6323E539FC73511C7FE237C873A60B4B4E06C49C39C1C +D1CEB9EDAB2891F30BBE64EE95C27487325C07F8F83B2C0CF8B394C3D0ADA55E4B4541A917B23C +6181480F95544F2DBCE9F22F40DC467F300234CCBFD55A919A7B4D7EF74D0C60E83F2627BD5471 +97A31EF7AB8E8C27A2EC8CC90B846212BB79CFBA9DD702DD627CFB9FABF73790BBF5AA82450017 +4E144A95706851EA88D454A80554853D7EDA089C97BD99805AD58EA333836351E1A6FFBF3F270E +E36B9A8A5C98FB53B9B77AF49F3330416708C3F8C9623899CAA72E8812C963AFB98FBDB4596F18 +32EE5FF6F6AC53B618EFDA664A090C1778C5D340CC2425184EF1AF9C6A7BC52167584CF057F737 +006496131A33D19C40B00B4A728904CCF6669F1AC17E354B71B9D6BFB322CFC1DD2E3D66C97FA5 +7886ED6A5455AB1AE8D51393C52D017C5586EB16FAD517AA4F76B7F0E3913C235A5986A767FDBD +BF04B397E7150F9CB9EE84BC53E65CEF2E4CF91C0C819D7A4860E35092E3EBF647B323331C5497 +A980FA0E95D21A0AB2D89ABF677FBBBE1811983D6BE163609EFA447878A6B9ED22479CEF8C9D19 +E8683D22DDA81461371B0D4A2F993B9ED149E14BBACAD0AED92C0B180E46DBB02F8F658A470ABB +3688C09C52006DE3A6264E0F33E92B1C6F69FE0148CB284DF2283638D396E5F8C8C7FB2A531350 +F49ED6E90498D2C30B6D48BE680B04C6CBAF4B2F92347AE886270B5753D12FE54A8CB0EA003022 +0143DA37757BCB85E0664D61384FAB84DDDA0468702C397BA2A52098181BCC26ECF597DE542CB8 +B1A0F199032BA329EF8185D97C9B536BEBDB7A9588D9EE830804F0245FF142D4BCBFA74E1D2AC6 +BFB24ADE82B947BFCF2AE083638301E0D52D0838548B9B935B52BC5F3B2FD8AEDA7AC6A0F44803 +0CB7E258BDA85320A3D6D3EACB188956D3FC231708134DE6EBE2A296EB0F07AF58E5FC366472B5 +03FA40D0156FCA4320BC906DB75250AF4C55B9DF5410EF3ED0DE8A7DAA82A8762F456BBF97BC78 +3849A1C9E1E9A7EF154084EDFB53FAB120D5F4A68AD4D83442E7F6ED51F251793E1F5D7504C874 +388E61CA7F9120C55228EBE6EE837BA371361407776E82796F5CAE390FB05E2FF92984F15170EB +89296050D3B5CA30D0ADCD59B9D666643FB69C43B2818F03F0BF529A5E68FD043DB7DEE7EA3C34 +0FDAF3598037C8C0F8657F16EAD01930DFB8A633572D6DAC96CC22EABF4361A4EA443E55102E45 +C2A7443BC2DB4883B1BFAA58343FAAA48E347109B9F5D306E450E0423320763CAC8F4B48177C85 +11F6703A383803215E520AF7CA6C449C4906FCE3695117888844DEA4A505372010A0E130FDF705 +A37E1DBC59691D785D37D40E737AC708881A603BC0D97730526138BF428D951AA75579D159E612 +F847418C23DD120FBAB2CBBFEDF9BC3B972CD59132C313D84F5CE45B0740BA7ED8086165203068 +689FE81C9CB701D205C815A8E4BF2C341D264017ED02602ACD5F6576CA7606E51B3EB22CF7AFCC +3C466B69801149AF48A8E012CC75559041B984640EC5F8043A14D70ED3AF1AF7395213E13AA79E +A3BFE238CDA1C40BCD49A006252ABC5B19EFDD78BCDB02987FAE +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +%%BeginResource: font lsi +%!PS-AdobeFont-1.1: LucidaSans-Italic 1.001 +%%CreationDate: 1993 Aug 11 21:10:09 +% Lucida is a registered trademark of Bigelow & Holmes Inc. +% NOTE: This is a partial font in Adobe Type 1 format. +% The complete font in fully hinted ATM compatible form is available from Y&Y +% (508) 371-3286 USA, email: tech-help@YandY.com, http://www.YandY.com +11 dict begin +/FontInfo 9 dict dup begin +/version (1.001) readonly def +/Notice ((c) 1992 Bigelow & Holmes Inc. Pat. Des. 289,421. All rights reserved.) readonly def +/Notice ((c) 1992 by Y&Y Inc. All Rights Reserved.) readonly def +/FullName (Lucida Sans Italic) readonly def +/FamilyName (LucidaSans) readonly def +/Weight (Normal) readonly def +/ItalicAngle -11.3 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /LucidaSans-Italic def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 54 /Aditi put +dup 39 /Alessio put +dup 41 /Ali put +dup 43 /Alois put +dup 173 /Ammar put +dup 47 /Andre put +dup 49 /Andrzej put +dup 51 /Angelika put +dup 53 /Anton put +dup 55 /Ari put +dup 33 /Arne put +dup 59 /Art put +dup 61 /Ayman put +dup 63 /Barry put +dup 65 /Bent put +dup 67 /Blair put +dup 69 /Bonnie put +dup 71 /Brian put +dup 73 /Burkhard put +dup 75 /Castor put +dup 77 /Charles put +dup 79 /Chi put +dup 81 /Christian put +dup 83 /Christoph put +dup 85 /Chuck put +dup 87 /Clovis put +dup 96 /Curt put +dup 89 /Cyrus put +dup 234 /Glen put +dup 189 /Heinz put +dup 56 /Jacqueline put +dup 57 /Jagannatha put +dup 58 /Jan put +dup 60 /Jason put +dup 32 /Jeff put +dup 62 /Jerzy put +dup 34 /Jim put +dup 64 /Jiri put +dup 36 /Joe put +dup 66 /Joel put +dup 38 /Johan put +dup 68 /John put +dup 40 /Johnnie put +dup 70 /Jon put +dup 42 /Jonas put +dup 72 /Jonathan put +dup 44 /Jorgen put +dup 74 /Jose put +dup 46 /Josh put +dup 76 /Juan put +dup 48 /Justin put +dup 78 /Kamal put +dup 50 /Karl put +dup 80 /Karlheinz put +dup 52 /Kaspar put +dup 82 /Kees put +dup 84 /Keith put +dup 86 /Kenchi put +dup 88 /Kettleson put +dup 90 /Kieran put +dup 92 /Koen put +dup 98 /Lalu put +dup 100 /Leon put +dup 102 /Louis put +dup 104 /Luc put +dup 106 /Lunjin put +dup 110 /Malka put +dup 112 /Manuel put +dup 108 /Marcy put +dup 114 /Mariusz put +dup 116 /Martin put +dup 118 /Masahiro put +dup 120 /Matt put +dup 122 /Maurizio put +dup 126 /Michael put +dup 177 /Murad put +dup 91 /Robert put +dup 93 /Robin put +dup 95 /Rod put +dup 97 /Roger put +dup 99 /Ron put +dup 101 /Rudi put +dup 103 /Russell put +dup 105 /Sam put +dup 107 /Sami put +dup 109 /Sanjay put +dup 111 /Saroj put +dup 113 /Saul put +dup 115 /Saulius put +dup 117 /Scott put +dup 119 /Sean put +dup 121 /Sebastian put +dup 215 /Wilfred put +dup 45 /Will put +readonly def +/FontBBox{-250 -211 1099 967}readonly def +%/UniqueID 5029007 def +currentdict end +currentfile eexec +AE40F8585C2492B57FC8C19373E315912C0135F3613C38B98FEFD06419749A2EF936D049568E91 +2C3B4814601E6F1C68E63168C5EFE4A12F1C972A88E59D27C31A2A9C0BA365B6FE3266DE7CD0F1 +1D5F0698C11E8C1D4F1056410F924EFF7F265CD09F63373FFF21407562BFA055B1BFA359C5890A +384338F55437BCB13EF47EA2FEB34874DAE99A2A8CDF087F076588CEF4F5F52D27F99CA2FCACC3 +B00B2DAB26EBD6CCED97C1076E2E38C1C7179AF884D34E5981F3B13BFBED7B35D318515DCB2A38 +02E5402628ABCA3D4BC1F4808D32312ACCEBEC95EEAC23DBDFC3788D91B5D781933BA1E7A9E7BF +693D5DA7A9281F1C6A7C34E8D6A8145895DE4B6AFA59BC2F66198E226DC29A066BA02F4739FEF4 +FC344E81EDB55226B5E16AF7282FAE761F3D9F253D76D6442D5CC7CA3043F7B37D5A34A905ADAF +242097EEDA53782431445078C0B35090520B01B437F01D891573DF402A427CECEC5386F1603BEF +05EEB7DD5FB545BE8042FDC2656F47C7ABD12DF9DBA59693E4F9A554FE067AD8157D2BF1EFB7B9 +1C54F92B27DB8FE4AF1572A8E3131A5FC251FC8F3D5918C30B18337CF3CEB9AAC264E467F9C4E1 +3BDF64763DF9650B0F6A3FF6092F2241B1DD69076E3878B875564E5EA253BBA208DEAF32B48D82 +CA70B0D8FE5181B29362D1603FCD82116B2FCC77931D0E121CDC23CA762E8C9EF47EF6780EC5AB +D9CB39BF6BA8F4D191F9AAB5965691C4346624EF1559E151378A8EC69A126FE29F5BFEF6162653 +B55AA546E4779E7E60288C059D2DD6FAE507F6E01DB910D52D10EEA2762D59A01C2F1FA458466C +07AA5A0980968990E18D71F0AA71BBD17CEEAFF025A16913D1BA4D5974D6258BA0D1F934656B65 +19A3AD2375DA469B27BC108F919BE01C833BB6CC59AFFA34F976382579EC5253B4610F9143318C +050160C7002E29656B29874C5BC27700C912C7B00C1F62458775BEAF10C5A2858456FD04C5B6E5 +B790085D9F584195CC9BE74E7DEBDC57D5084C3CF8168D7B194D57EED9F72AFE24EB78A7CED489 +AB96EE6F2CE148C3C8CBC466AA2B35B36842CB48476D303A7717C4369F803A4FF311D53F1A0044 +B5A3B423AB2D6F361D233CED47B79D579DC4BBF97AE7E6849CE72B35CA881B4680F073C4942FB1 +04B110CD36C12B7FAFB9F8F03EF419A1A5CFAD1D28F13EF057C795F53737018583F52474008775 +5141099E0C46D3A7F65540A05DEFF5A0A1C68096CC39FA13354863897E93F98B98E2C53A693C2D +57AF95936FA23B61A55E26214D5B2337C4488BD6DC93DDA298FD77A80625C917D9D432EC1AE92F +DF42E184BCC2400C51465244F338DAD00BF384DC5910AE26F964CBB75F091609E73A3A96D8D07D +BBC4DB58148E2064C50B5EBDA56DFDA7679C10EDC505D6816B86241997582D77385E0AFD164AE4 +5333A18BC4FB8CF818CEF97158CED9628B78B6C28BE08E747739F924A7CC9C9EC72FD12FD5BCF3 +2D200E0FAF7D7C8F007C84EB868C2118F0A159DF0435C4F9E432F5F7DB3766CEB23939415E3709 +B1E5E14996C0B7123EC993739ACBCF6B28BE7628D11843B2AAD85AED50C9D82B5151EABE73505F +3A1C103B7F02C0429A32F3376C13863C347BC07472F6CB82B39EA37525A46B95F9387E654F8076 +EEFDB79193E97C16A69EF102ED96F180F44586ECB46F45611BB4FA173B4C8DE27E2C4AC2BD3E91 +8441E44FF42D13F9C119778806FFE56B8ACBDD4537C981571639C5D9D5522C822DE5F29B426B83 +74E02DE01D2A2B30281676D4593C5356214C5C6D3FC679395E0A838A447B2BC803218F97AA6C92 +EE62D3600680CC93187A2D8DC3D7616F4928CBC3E8C42BC5536D00A0F1D3FB114EEB9DA1B5FD89 +50EF78BB34E7AAAAC3AD105D960B3AA743CB487AE7D000E14C5BD14A2250AF406174ADF67A0BE6 +7D62771A8D6283F574F314FCE1FB41B80275B825066BF711A982E58E8F34657DB15E29B20B5EEF +6EE8ED0BAB63458DAAB556CFFE712851DA37303784F656309ECAAA93185643264ED4B7B6E05829 +67E94B9311A2636F0D6F18BF83E5FE28C81DADA7046E5D485B6A9754F679F2851C5C3F4071153F +C25F09DB849C09E9CC34A96E0DDE7BF692895D4B6678A1FBA8DF90522086D5C64715DE5FC26F16 +B954EDB7C3A0A72F1278341A1018286562228E2EEA26EE8EE340CB332B43CA68C65A2D57FEB45D +0BF8EC6092219E7EF9CC649834D297EAF3B5FB00F2F83399311AC5FABC8761A13575B0C4D917BA +0AA75C78AC3AB78AFC746CFD5FEB2B91073F2FD8D4C2A3A490C94BED5131622DA474A860B312AC +4675661BDF91D076228D148270253325F12147C5A7FB25FAD15732E43004A70F095EE3AD448D9E +336CF44C4D55CFC772C92E15CEEC2F56A002A6E1670ABBB074DBE0CA55BE5D1FE65F5A9FF90E1A +F4A4B5455B9F3A82502C4D860468B7E7E91A77FC043C44E19211A96D8EDDEDE29FAAF156AF6C71 +CA2D0D26A7AA68A2A0864BC236E3B410485D7CF2A51C3FD22A147E3E44E723CCE629A3E67F5321 +6BF328C2BE130CF9C05260E4E5FBE73D9C2032BEA5AEE7B0ABCFD2F6D9874B77D3B61AFDB4B300 +55A0033C9EC86962E50CEF67EDEEA31C093B3A429D9AC37D58056FB739B64FD22BEAF7955D1A12 +4E1F5F81C2FCDD89432C15ED61285B1D300C10714167D1D4DF9C7B0646BD825805B7E6F21ED4A2 +06974B556EE6306C84FCB475F4F242C440A41B67B543BFCC178DEF4E58B739ADF0E14D4D0137B4 +F48BC39918599A70DF1F0DE49F6527D25ED35B5901B2EACB584E8F29DE5CCE15AC1E31D4A14F43 +CB2BE1150D22AD419EED486AABCEAC25F01BFDFDBAE2E3E4C899B3291897A638B4420960CF7AC2 +F08236D1D7747AF87A207081CACBF00A0994C2F98EB90AA3F4211EEED6A0425C6BC0CA31DBC6C9 +DE03E02A5AA192F0187C822AE022AB776CB891E95BB90BB89C07D34A38911A34BA591D78B7DE83 +6BDC01BA45F0A66D735E317B06AF7EE6E817E98FB776EBEAEE6B8AD56FF5DE1134B7EF55D87F21 +057F1248CD06932F6DC349D2E9B1DE0B81E300625E370770C548B89FDA0AA4F8B7373426A4C8BC +200F54CF2A587DD11ECF76E2E324591FCA3817DAA9B3FE117C826F5B53F24C722F766F73903C58 +A81A2067F7A3E8544B64E26BFBAA0AF6FB10EE8D4E99C49CAB1B397E0AFFA566B007330EE54DAB +AF0C044E8FF8CBCFBD70A372C5050F02AAEE6E2A648771A199A8290BAF6ED4AD485DACFA5A4937 +CCCA8B4D03FE96D7CBC7C60E6E95B53BDA2597C66168D3564D1BC6617033688510AAE0F6DBB16E +192CBE34F5E0364233AD2A2D0043703A48EE02E2B4576645BEAF3D44622983407461F2E700F3DD +51DD10BF742D645F22700223960637361E88D79EA8EC0084F5F20D0BA3EB94A7B5EEDDE499A39C +1D621945DFB5937A31BEEDB0E2DE8395EAEEEC4A912825EE2D30E06A351862C9F02711D38F63C7 +4BAD03D267BCA956F029F2BD396A577000AAB31B00B004D7DD5F6102D7FE0BB8443AD768BD6051 +CBB0F6C74FE866A2628789EB0E2044F2EA6F0D1686BCF0BB7F245AA757A20EFD93268FC1E140DA +35E759443BFEB681CA8B10244B4E395F3E9A151A5A3D74293E5EC0A2C2D2DF37132705FED78742 +8C5E876F567D1CB77F7338F70B3FE5AD1F7D9D6AE6AEDED983B638C5B1F6284BBB8911387C2CBE +51B92657EC57F3F28F9F71BFE582DE883F2F24A3E1BE90D5DB001E7B69968AA2B8564940A2B3C8 +3EECE73D1DF1A51672429FC169488D329D8AE41E0D7E557F6678C6E36EB1877DA3B7AAB89EDDF1 +54AF743BB2FB8F4EA0AF7E8761F3EEF6794FE66A5494E74F7428EC2D47149F05B8E3CC934C46B3 +8739D1BEA64A39C4AF8CC42187FAE682546468FE3C68521D074555FE83FB96B018489EB12C7437 +9EB97E53BE86318E53494DA7F214B9EEF02B1843DEE3D3B7FD4F94986F310FAAD236BF55E7137F +8B35712AD6C103FFC59F05AC12629D2CB39940395C9683B49D80D0548A17D45A422F9BC0F02112 +DE3AB03E5CC55DF670637BE7E4F0ECEC9B324CC26C16DA89550D80C609134B14E9C5575662A309 +783794C673B64C3C62932C64D9D9F560CCBDB7BB6DDB1A0D67A6C1D09AB7BD60348F91107F65A1 +3EC3149656CDA201356CC2AEB313A97E203C8037C9D5C5A70A50DBEB91E8E4B54EF9BF8DCCC033 +23F8AAE82CB2B60737C52832DA384B02AD2A1D80EEB88AB6ACED1B44AE582B9CAB881E44AF4392 +D29F81A30B430463A0D48D26ADD6D7896EADE1C0E82DA83E28F414BB24086566EBA2BAFF475CFA +123D905A8A307E135DAAC8735B833005EE356EE627C6B3544DFED3D62F25E88429C244288ECB83 +6733096E71F85E602FB5A77E7807381D0F3805E29716B21D21AFA3BDE43C3EAE43D33082F2F14F +72CABDFA02022D3146A2AB88719998C6EF1984A5891EA63E47C995F5C484D8F3854A79AF856F57 +54E9DBBE35668176F67FB1ACB5238423D2E1396E7A4241574033C78F342D11F97D8CA238312129 +0D467F2A371BA35E52024740F82CD91A23525EF0597B06A1CE57C7D568B25A96EA0E62756F5E07 +1A63F9D2C22E1C3806B2F150A57E5ECAF61A999E3573E613F94591FC4B0B8F4BDBC7D2619E800D +A2CD525EA0B722CC25C26C740265774CAB6C3CF110C6A1C7BB9F0A2EA2D03CC8C483DFBBEEE0AE +831A31706F790C0F695B926C89081ED62B5D5E1F02F405DC455751D87BF06CC05147D56CDB03E2 +16E4EF39CA3E976F786DEDB9CB0FFC98E3B115E4BFF4BD63C2BF6D577971ED3FD5525448558DCF +C4D40E681C9FBBD650712C69FA78EEDFF970ABA0BDB69E33A8DDF3A08BC0E4DB8909A2DDB35096 +4FA94F03284532ACE8C62E8E0C5FC06EF66266944FBE4C6C239CB66A4445BF6E50E1221F8C9BA3 +2F11E198D306F31DFF8C9CAA5AEEAAB08B30F0ECBCE3CC3329AA58B1F165F151362BE3646EF3BE +6120E2B618135127192D4CBC77CBD03A83F6717133B61DA06E2118AEF126FCEDA71A426B6801C6 +C70AE8192EA70C6276EE360B9D89388C37D075644A5009E4450B3E6F88697DE0C0A2E6A1FE58A0 +72422BD671FA241FE11788AE83F63AF4114D06702D251FEC634E562CE367948521FBA53344D5D6 +18B0A9A2C5E013F8C790BD5DE8AD289DE859768CB488D06F45DB114FE12B2BA3FCD88099F955CE +2A3ED377192307CECB2E7227DB751776DAA54BA17F5E7137E1AA1F1B6DFFE782F715FF29E0C370 +76BFF950438DC7B7222A67238157D769C27F48CD9E39AFC1B0AAE6E670E20E982506FA564ACD52 +9D108F72E9A615C61907F00F6DC9B3FED3D99380B99242A53027A154891DB04C3ED328DC4B188D +9080BDB06D9513098D1C8A69D844320CD494DA7DCA8FE6B008D0DF6B3121599E951AE22A9EE37F +DEA7A4092509F1743505DAD2B07E1DAB21D84038115C10B5EACCC9C96C62A111AEA09B3259BDA6 +20202DED8FC1BBE20A8CB09E7C77055A9D0BD7D5F39B8F065B290900603EA23896CE2E7438E6CF +63BB8435EFA37FA35A2588519FC79533D3A1C1B376EC7BBE92388C3F3248C5239C4D21730DBAD6 +65A7785867BB355EDAC969FED613A52354E97501D56909BAFA0F87258B068CAF0907464B498861 +1D3E7E80E645F7AEA5DCBA04CE122C7A47007A73E725DE31C475A57988CE41BE7D1FE972A589F8 +D9CDE0977492E07457698B8E9E184A70EE761583058AC50884A880936F001D53D182CF9605E588 +92910AB45E3C752B6D266CAF22397BAFF1591976B6DEA208495EF675876E92ACFBEC1887245048 +30F05659B2E73E8E049647F4F28F529684085CB30EE66FA5929774E49C15875493F661B77F0C4D +6391EFE5A0D384BFCB2FC1820130E2E519C3715CFF2AC4B8A74E81C368C55FB5782ADB9BF9644E +2FD416320DD3C6CBEC64A992B3FB79991E62F129D5187763E7C7D8473F963F43F0D70A8EB508B4 +970A1572835201AE91F48B7FC35D0D12E7015CBD6DE0677D715E0BF94F1F9D3242F8600EB2B4A9 +590BA94CE6D342D9342057E69E0B71175B475F9F9FC8CDF962690867B6B962989D94B7CE670CFE +23D28E1197AD6C118DAE3CA2BF62FFBF5A6D03C7E1D85199908F9DAB1709E1A3FA4C1D18535AE9 +5306E0641C9C328886C72C91B49B498202C8B72EDD5C7F5DDF178584A24E6A89DC9EF5437EBED1 +CFD46ACFAB9678F27F4BB80279CDB62D9A23761E70ACF40ABEB38BB3242FBC012B8AD563073BC3 +240C6AE167A56B084DABE9096EF07C38BA3E6D380E2A1D1CDED670305CF0EA1D070E5FB8574D30 +8598EEBFB0C6FC907E25108902BBAD331F177EC95717078B97EDFF258F55793FAB9EDDC508FFC4 +719F491D791F5D8487FD5A31992A1E6E4DF7C82AA1BEF383C2F74ED7163AB6DE334D48A11520BE +2B47FA5C0B07FCEE735F63CCAA25507A78971012EC943DC2D1607B3F44DE13882DF23070BC066F +F74646DF196E1688D7350D7672F93691FD5950AD7ECE2FBD6D4B1CD777C88DFFCB90B57F9C829B +A0C9F061F7DCC650CEA49D70B440B84276E432FE47D7D4D67C241F8097469638E4F5076A65FF5A +15FBE8690B4F6788E843753F6D961043BD8C7908EC2A2EB795AD2955DDB8CD9B6A8BCB3C2BC673 +0A24CBCC79F15D44A6AD0CA0856E661EB07890BD79E93FCAF93AF80BD1BDF915B799C9118DE981 +496A963B4A9498E11893F19446FD9AAE7E4B4FACA51601F5C54D46E7DA49750FE88F420E9D7325 +DEB5A6B091469240AD0DB4537A46E71595FF598BDE54972860305F59F593CBCB7B0B26130CCE19 +E0B553E8D52B1953AA0E463D49A01B3B2B588044D423418A58665DC05B5AAFC47E264985934F03 +C358035E5E4DADDE030060BC07E7F0526FBEEE7FBD26CA50111E8BE27FC021214AA7BC8518E51D +93934E23270DBEED1246F623EF50C9B12A3A79FD2425DDAA17B4375FBC51A1FD8A7A456441C5F5 +C8DCE1A112C00058434E3250B841ACCFFFE4EE5CE4E8DCAD1DA76C39CA24EEF79A2297B70D6AEC +75B3179FBFA7A4D90B4522A0F4243D14FFBD028961211739790B55947C4DC63F0DB959A3AFC7C5 +65D672D80422330AAB64D51993BCD2A34FDD8B1848F5C400BF5236188C683BCFE47412108B59EF +41B7465B020FFA6A9BE53269B4F8AB5FE2A9373C3AC12A740EFD72228AC156A999C6079687FE52 +19BA162C917DE80869339BC76A9D7DEF6224AAB13F1E17BB4FBE9722B94DC84256529932A33391 +D085A85A4DECAB06978B9166F075B51DACD371F172D428081AE1826645F9A461C257A46BAEC29D +D6848025FB7C6F027D67A89EB217AA9879DCE693729D36171F815C3C6967F8DDD4A0EBDCDABA1B +AE3C7901A071501004DAA11EBF4E6B20242EB6C4932403A6FBC9C190C8BB789CB3C3F2DB0CEC69 +1FA2A1632F625FC6A1E91CDD863CE75338CE56B6F8863D77FC57B211D413F75B2F7C16F5392015 +C33B55B49BA91C9EBDD5AECBF97D80FFF1B84488FB259623C858B14BB3D78215185A866576F34A +0E259D58C750992B67B0900001AE2CB8184419C9BEEA52ED099057805F53B7FBAFE7BF2FFCB3F9 +7571A88C794B5AF35DF67BCB66CC21536AD69F860DA40C66AA8F6DC6E52A9C0CF052BAB6708EA0 +0ACEBE8A2D3FDD21CEE891EE4B905F72845B3BAE8591A20D99EC177C44528F56A09111A498160D +9EFF65D62BDFD201B608B578E9E052EC257CBE33662040ADF68209F5E7876E1BFB861E21405F5D +5D3A2F684C07F20223E26B289CC7256B10D699637E5A15F409ADE71779032310DB5FB5C98CE037 +89EAFF598241368500C76315D8E3FBE028F587237B1A4E71BF0B52C181AAE9B88754ABBE054185 +A035D118630FF66EB5A48C47949779276B5AC20699F3A33ACB5F9510263670B25A7E3E92666F3C +0EE6AFF2CCC733780A0D98569B4E08254D9D88DEDAC4F50EB1FE9CBF8588E301FED58E36336167 +7F47386A37B86186D0A0A4627C2BD0C956DF9C0C9209F3275BCD65869D14B94943DCB3A2FA8B5B +D7434CC1265F7CDA7D86300A5E033AD24468ACC1809460A8DC4231B5409909F865C6CAF7A2D998 +3BC3ED0BD15585A43C6598D8D3103547170067B51D0638150669DB52C1E371B6391D2311E5265C +6FDF27951111A7524A304E865898634CB768EE72B812A99DFDEBA1C284A0FC95442921B8DC7280 +2EF144335923FE114747EB3CF24FC652DA97A25C2C92ACCFDD15E82144500A6BC1B2F79FF4F722 +E06450D2E6335839962111DCBDB1094FA2D3E817EABAD4DB131F01E453ED5CCB794316E5D259E2 +7A0625D1B5827706503B0F67BF168DEA99FFC9AD1C6CBBBAC271BF0B92745C422F9BA22A2D2F36 +A0964C052062EC7AF373244D8A49F60EB8C2881906FCC197BC9510125DC61628C8C1B29BBE00DD +343075F33AD0AEF24F32B0F2EDF873401A60CE8A8B6176ACB9C1A395C8861BA36322DC7DC85796 +6C8C77F815477C820716F965B1E1F0AE5129A01DF4507E0E04B5168FA3566AF291F084CB65D0FC +E86EDE9EC19EFA7CF75C9749CF4B5BE79083E8FB7508A51C5800D546FB14D4D8B5191C598BA5B4 +82E8A0C17F77CE96EDA3179A4A5613C9235758699EF8E2B4682F920A70CEF54FDF59101C5135EC +3FEC9998660F8D9620B755F45A6A9FF807519A5548EE4BB55CBA5FE6D407499AD47707606DDDE6 +32D7AD1A58FC63F97357F4F5C63E4622BF4017B0CD757D554390F27123D17494630A756CA2F1A1 +A872F8C09BA62F76E5910578DCD4AB4B0DF33F6BF4DB1237EF65E5FA97C593C90728B12FB17407 +FD681A44EF78E14918E7B0530705A1B8F27495B3029252DA7A3934F7209D8BA8442FAC0EA0C03D +08623347C4B17B249B91E3FB30FF88DFB190AA14276D7A878D6711BB273FD611E15D13541CEB1B +B6B059985449B7A63C8C425A57AF00293AE85AB3FCA9B709FA60C55EB6AAA639EBCEF4847DA4EB +F28A235000471D355202F948B24C9283FD0C9C9E3AAF88735E3769B7D60A9410B61C9D62AA5425 +9E43AAC9208A794D56886F983EB006ECB5084CDC8295D1EC0F52B12AD4BDDC14E672450D2BB481 +420AF2E5836683F31FB7ABEEB5FFE9D5E1AE551D3A6E123ABBB141BF313E5D4ECAF00A12C441AF +E36DE60877FDAE8D255DD1F8BB0C0DEBAF10EDAB4CD2C79B4ED1CDE61E57D12B389C541A8A1823 +53637D9C1A48CE343C88CB15AC45CC54EE6895C685F89691D09AC4216FDDAD8549D164E8BCF101 +1C2D97B3F1DEA3D7C0EE3049860A949D8A558553D5E8FB358C8D2F31A1DF90BAC093E7AB45DCAB +9E9D4A36B5ADE3C696921C3545E6BD29587068B57A79DACD07C50610EEF8D16BF0CDDB6CB0F459 +8EE921AE8764247A771F63A3E8F39B072DF066C1229948CCD60B26C2FA9FC8467F09762BCD38BC +3C5A17EBF085DF652CDBC0386E5F8F908C6EEB9E8B35FCF8BF69177FE9002592F93733D3502725 +1035E29E2E4A2C17FF86B5E884ECF851CE8D1CF2E667D9F9FA62EA5C29858EE46647F77FEBD6B6 +071C827470A97888B53EDF69920EE368044F9DCDEAD7D40D21D44A90C44CEBA90B64D800B6F083 +5EB84A3D66BE4F6B1B173B8AF1D0CFE9D11FA65CA2AE847EFEF063BC4400D508C49C220BE19F9B +14A6E76E2D65E54DE811D104FBC001508ED53A71E6965FEB07423F4846BA0F0C70518D2D9377C6 +FAB46993572179E9A0D75EA6F67C5B7FEDF1B756C882DF1010549DA4B6519E9CA28C56053BAD1A +9EF5D0428F2CF9355320B70ECFEE125C9B752E2D30C6E259F9A44FD44BB45CE8F66C3AB6C27DC6 +E2A8919A2214220E0E5ADCF6C885966647797B9AEDFDDDDA5726F45F407034327F70C388B6EBA3 +5227ED48CC572516A3FF067B4F7707DB59CAE2B37663CFBA1E7128B43A2F1BBC209BBA10D71D53 +14A31B03E68F68A9A97F32C14205D4E998359039CD08D21B0B4A01FA2CB7FA8B28DB40F23B1301 +2D1664F42D084CD6D49588BF294EECB7C2CF18B65106BC49DA160DB79A63A9A7194C9F2F79F2A4 +F97EFA10698F291334E8B4F74C9D948F557C25C4FBC798ADA8A53B9B0E6DD4BA50968F5A5707A3 +A6428BC7CC56704534463F5031272BB5C08DD6F4033FD1B5E1A395316AD330599EDC4E021EB125 +7BF081AC55857A913DFCAF39F66A1ED2289A57AB6CDE8A2F56D11157569484BF6EF26B04C7CA9F +C821FC46B9F13CA07AC0D90FAD8AC2866BA8DA0D67B908A01387E54F9F9DDEF25F50A1DD65717A +3533023CE04038271DAC6CB401D3F692266712D3E380970368A34962C60646B12D129745C961F1 +F6E17FA854630F7FFA9E030A0C2D6001692E71495AD7492FD65912BBE636050F85DE19D51F2722 +E8FEA3C931541C9C370626163C528C1A3C0E587C7275806D08892C2618D0CB66B6AB37EB96EE34 +26274E9E4A036C57AE33B1C7D50BC5E2BA42BE0F14D32F02F77375087BEA2D3D44366E13F9CDB2 +096459878D802A151789E54C21E09FDC98C6A3567B7F6EF03E7E67228998E1F893ADCD0EE49F95 +22FFBA193A8BC1D5A2A43FA75300C4C72A1E388A792586B3716979DB9679BD3779EC4D9F427F18 +E4017D87C0B8C44460FE64C1A591875E589CB9A4818341FE9FF1E515F6D510685338514684D90B +A40FD68AA77BE2F5D5536772A6232B386CEE391C88D1796CD076A2133474F9B1506B446F61D138 +E5CE584D113BDE06EAE89D82F1AF25B78891766CB386332EFC60A57352BC96B42905C0072DDC23 +61F20E89BA1DF2EFC1C18FB071CF04396A45293E44FE656A19F3AE3A5635560763D03B6039EAC4 +605AC30D4E3B1A68AC6CD68B00D694399B9527F13D81099DA664919A3D15C3E6DEF460134A1736 +B1FD53DDBD20C248D0832074C2A22802B7405EB6D33D864D97B78252BEAE3BF9BA5DDFC4CA077D +806289B7ACCCA239E6603C7D2BA41B7DC820F86D1F8530604D7E3F8A1239081D7FBF9FF9C2D9ED +4D672417853364CAF9F010CF08E4E060038A67E70EC743AB7FD3BFD62E7C209B0281F592700E1E +CD0B18F65DF4947D24B2D9FA6C645348495864F66008BFE85089E6442856D0DFF9B27648A793B2 +22E98EF332692C08FFB08A7AFCF9EE4DC33343F8FC0B2BF5F59EA5FF484EEC4D0903A7DE30447B +F6159C922C3691A97C2308CC2B32683A72B3CB14023E76410345781F0949E918D47481630EB60F +891D13EA3AA81DA60DA50E67D0DD63E6823DC1375FC60738B633996A10B16BAC8CBF574732679C +B238B9BB0C1507515558A5E1419A17DAF43BEA11E31A9F10AA8DF17DD9BD9EFEC13EF6F6D1B47E +CE37F8D45D2817B5CAECBE38D45BDE09604146FDA57CC7E0814AC69558F170A7AC2F8DA6A5C7DF +485C1E16BB96C3E1DA2EBC5D76630A99A007AEB8F680F2A10182EE55A0ECBD17267F6A0E4AB5D5 +4E062DDDA4DEE9506528043578853DE1CE8ACDE68938EFFE8283419D9A779BBC39221379BA2767 +DE78BFECCEA814269A456AEC28CADA35B7A1F5DF89D57F9FE64B2818EFEDB506B1CBDE22F9E706 +54A84DF0C0124124646EBAF633E054D704305B2723EE6848011985DCC11CB1DA81ABEB7CD5450E +31C218B45C3556B7D1DCD47D4BEA4E3FFC5930037B2664ECCFAD1204D8CDD7289BFA1B2F4BC59E +B586883A9E8757EBB0525A53EB83996963ED8DF4760CC16B542BB7C60FE6C0F3A18E18B26EFFC6 +CB96792CF2C2113E04C8E64335082EDB3FBD78DE0F1D61B55EBABDFD44786416F0AF593379728C +FF15973618B201D872628100BA908908A978EF091A126505221F6C52E7096CFCF13710DA707347 +308943095A0222411C858DC7BAA314EC1107CF9C7C699EE623981946E79B70177FE70BEEC2624A +928FBAF73B1CC7D65A6E76387EF3812177BA0914BAEBCC99564A2A26710129E23899D8822DF447 +06AFECAAD63168BC96BB879D418D3A26C214E4F26E186ED9B645F9023013086767A5276DCE1B81 +031D6F08055D5898C6C1DF53CF9695F0B1DDAAB78BB824B2EDCB8D726B2F477289C16AB9E85013 +1E1E23221929D95E17F4011D2126D783C1363403D650D426D642AF6928AC7A017E2D36A60CE6E9 +7EC189432627B4BB14B94E2F46D4ADA823DFD6093F9ECC8F01FE148E59C11AAA4417EBC801B0C8 +D8B380A4922D9AA366BA64BEAC25DE3BB50E5EEFC4E0AA8E8D6E7D664FE249F01058D5CAAA8C3C +AAC732A1507B9F84AE531A3F5A6CA32C812EC23E31F3F491F21835F655ADFD42E6387D03C500B1 +D924D99572BC8F362BDB56FB6962800DDEBA947659674DB719E4CA9CA2CA8BB36E28CBECFB9EF8 +16EC9B0AB6B464B959DFFD30F564E6C7480B72A5BE58B2B1527BF6967F08F929D98378B2D18AB6 +2A73010C9FF49CAEF7C76CAA65695F1FEDFCE05A487CBE6CA689F4B095BDBA432E349816190CE4 +BD03D7246F73B5A6BCA12E262BCCBA77E25C3A19241202EF50A600D21D16E8CFFA05EBB85E65B0 +E3AE69730D4D3EF79A0525BFAD3659DDEC3F536BFF0EEA6693A683BF9259E098B1CB8EC38B1DC6 +AD3B20DDBB88E1863ED1DF64A2452977A1C70CFAE0AC206977526D2EF4885561EDE9C0642D6524 +12A2BCFF8B37DBA2D31079C4AC6B9CF26518BABF3639D9169FACEC29E42DA1F0AE2EE290FC0F35 +149E0EC8807C70C4EBAFB12CA44B7DE7D95608DDBAFAEB476E98836E317187715C1F07C3719EB2 +0560EB5B241932106C464D074EBF0B4B6EC4E86CAB3C00357D406EA833652D729D32069140817E +F7F906E8650CAE88FABE5545CFE266F4966FCFD8F83DEED5C086876952F0D024108B42E06D4DB0 +89EF77802BB2DEC90966D331F6E34D92675DAB18FA3334DF9918806BE5058BA582F35B2D742EDC +F4FF8BA830F0C86148C235788EFC15400E08ADC57D6ECE093E1F7711590DA9D30017B730774052 +6937D9A8A4756ACCB0A6BD2888CE2295658A9B534B88EE43DF464BA3AF64CE2504814D2B065B85 +0DC705049E0B346D007B43AFC18028D4E9539EBC7CD14737CC1B7F10F2CB000A7F219DF60B449A +12D21E16E8789B7B8F67C354574B6CB5E0B6B612D9C5D5B0AE7D87342AB404E967494718582FA7 +D32CE4D6A81A1C9EAF3EAB6060DFBA250685BABE46B4FF3BCC701AFA8A868F7029B38F3568834A +8C34EB0E6DF3D67334FD0E4838075286331AB693179C65BA5087988383D3D5EC5E0AE7BDC99BFB +C358BA2AA274A4521E286CC6052A5C477696C5578D5608267CCB164694974BE93AE7E35F389F2B +AC6B7980E61C29B1DD2D15B42195E795B00D2B89E6C4BEC4379413B11B939A1528C56006ECC994 +7E4F14E3D60F7400FEE32D77798FF6383B3319C6F92E494BF73A90083F986CE5F2105C0E801027 +57AFBBFFAF368A20EBBCC6516B79682D8B70A23D8DF3A2BBE4EE081D4ADF70847F95DDAEC10B35 +13B069B9A6E50FDE25E3458050F568625F680D3DAB2FCD3B7007109358EF6428756F742C90118F +E443EFD7E6D879CD082F73B0B95E230C06C67DA5CC8DB4792EB274FD596DCE8C966F84B54FCB14 +8B57141947461BCC69A012B50DE3667F6DD9F0FC7706525BF5EABB07164BB07B9C973B5D31D0A2 +2CC99E37697A6D14B6F4EE4745329EAC6A5DE7BCEF1B10DEEB46DA4AE14BB82CBABC31040987E1 +74EA49EE6F543DBDA0063B6C1042EB379F610DB5C0D4263CFC08A9C5604B7FE2345E775EFF6BC3 +5C581500BCFFD98E23665B2115CFE33A184BBE1DB4EF955F409074512F61A37827DB751757E284 +A23C89932BA251ECCEE545B6DDC98246970B17C12FC7F9237E6D00E8187F7F45E048307688EE64 +2FA6CABEA56C1D8C1FB31E0B0B95D7DAFC1BE2E90F933A44AF03E94BA2DCE76D358C2D7A2216C5 +E95788A6BDC9350135621D59F52FC74BC96D94F93E6E63123B4F56326413974495E822DE96FC05 +315EFDDFEB919FB2A36BFD8580D6A21D11515EC7835082359F3D0B2F79901FD6CC2AC41E2D7B9C +412A49C9D7B8FD6EFA11517821643349EE9FDD5A6F4D55F440CB7284726C6DD45E84049F8931CD +570388CDD6DD5F7AA0323533EEA3DA70FF0AA8BC42F3B129D0AFEDFD840FBAF2CBC35FF45B8656 +BDDAC912ADA0A3C2EE447684AD4A0DADF205A419E583D57D352B30356D611E5E8B67538E2AB612 +787177B8C8CAE9A3F63E58913E026E2BDBCD9CDF272AB9B181BE3CD650AFAF3FB9D6E07D32F915 +4852862C3F7DB6748FC834C868619A4E7823733CA044DBE48F642944A087FAC70432D01392A52A +3FA0D1C54EBA4662AC8DE38827B17CF644C2987ED7E57D436E4A88B29A1C91F454A4637CA5424D +11B82D1137D58867A9BA363CA0E07C005DFEB038136D4FDFD5AF85F48E58E50D2AAEDC886A4B22 +CE2DBFBFD24F4A05A3A9FCA87A95A871BF8D6237C8C63E618FA4DBC9E15ABB677EB7F1706B1C9B +125D4F5E39A168A989FC53D34F45C24A52292627E11F64A7BE21E5A61D4D8F8C9F7DC3B0E139FA +1E7EACB8BE224E679A29DD3B44FB9B29220EDEE3FF41E88D15C914E9E2EA6FBD1D409753D69FB3 +ABF266FA7991E82B74C7C73BA7DEA82B0A0CFBD6291B4DFFA1D68306D24B50906A3EE87A0C3A17 +3ED5A1F983138E7BD4381E1B21AEC00F72873F4EA6C622118F37619F6A451DBC52D2BA704DA804 +17298BB1CD70A5FE38163F83ED96C2D5EC1CF2DC8CFDC9C1A8C2EC735ABBC1851C1A3270714B88 +ED8E2FB5A0469A18EB27C0B191169E37D71D62D6FE06E23B18B4DFC93F8E220DFEC3B57F34657B +0BCEB41F10C0DECED95960DD664C499BC607614D97C60CD7794807F2D509B6589EE4241E4349C9 +33A94C3F1E58FC40D320CFC31153BCB12F7CAE903D829E8B2300F41DE6D21B5BCED26673042B60 +3403B1918E2A57662FA77A21D16EAB58C3C81243EBC05D6922C843EAADC9DA99B83AE09FA329F6 +A6F0B5BA44AB4C1FE88B63BFA4D629EE411CB1EF26ABAA16264204637182774F1AB200C7E20057 +17E5168F766E790C248C4A38B93F5F9B5C07E612D72077C36688A597DAE740D04171E33FF960E4 +4C1E795C1C813E39BE2C0365341D1EC946BD30DC8BCBED7F9B4AFED3283B263155414CAF138365 +2C1935E75541A553121B7FEE8293ACCAC906EBABB343B875E4774387FD8DE4557830B2A8CFA3C8 +4B734F4AD5094754B96AB12E977DDC29F8E43697F737E52A6D9DD9A2D8840906B4ABE9C246F684 +10C38B404FA6251A2E8A31E2126D11929B73ABBC01ACE04A84FF25A8F7F1AE3A9C8FC04C2FF867 +5A41EB0453373722415563EC07A9DF738F7E8E9423DB8A09DC6714472982ED98165984C99F885C +9E9941F2A64D10BF1936C749019845FE5C5DEDF1C057837AE0C6BEE3072C0ECC044B5A33D4AEF5 +3506438F750804B696AAD17897036057E77A0BD7E02F2918CE13A48FED56C55FA447B0F32F47C5 +2AA0F53F03F6334E6C484AF42F265EAD25088232BC109B4AA86A475BC11FB22FEE50F92FB4C4B5 +01DBBE211228D5C14ABA48B56E59A34C813016D43817AF1B707D09BBCA2B20F3B3C90058EF7E56 +DDD4004F8754EBF0A16DBA018F8195FFBFD5668D4D21E7B6AF279A08A17D081811D2C34DA41E91 +3399F6F3B4BE23879972BBA56C65F6612606DD000A6C857F8F283E6008281E5D18828EBC6BCA53 +29977E4C792E468DEDA9BC087DD8B4FCC6D9279BCC069B5B7544585FB305EA3516268FFE6A3F91 +CB25909A61EF71B0016EF040365D193CCA29409EAD1AF569DC290514A10980B94D6E8C609728B4 +A35E97299E3DD1EC28764A71AEDD26C6D76F5276139EF13F052403F529713702E5B1089BAA4390 +78F4D5B1B2FA80FE3CB11B14BC466434BA54F839B8A9C887B769FB59463D0D50DAF8C71FA0A9F4 +0E73AF18FB6C7312FD51D0EB70027ED4A546232410E7D29A156A2291E29F6137FB42525BEFC6DB +3049AFAF2357A8ED9CED95CF7E33FE3845883E35632507F3BEE56533E42DF08FA0183CDCCE22CA +7E06D568D08D161560D106E22E9C9576ABE08ECA90A62510C2811D7CC28730D2BE9A1642052647 +394F4CD2A4A93ACC984C954F0E8C57670C08CF0D21D46E08925ACE4665D9D724EDC75EE0392322 +E9381632D8C287BCEF09E84D42E3BC345DEB24C2AD0C68FF094E07D32685866270DC457391BF08 +15A73D64540C28A7BC178F9A8EEBFF4C4478924B72FE21D51ACE32EF43C0D3628AE353B74FC36A +7267FC679DCB875BDFC77821233B30F41A6E1EFDBCAEE3B4319BBE29D253624E48201DD2EA2498 +34F67D2F111BF268942F6842939365C8E2BC3330F0243CD1AC7C5B62B7F0A2FBFCD0965AA10627 +73634020A2C7C364CDC14EA24B500CBF4A8C79B01D6DF55DB738CBE3B978111D65DB99A78CD0AE +43619F2E28BD444DEB85A7B585B19C594940C45870E21D4B1B110028A4F3A60C951A0884D57E28 +D5E26E0E928619000D5CFF442D019097C45DB01BE693F6528A00120A14845923BCB81F27BBEEBC +15A9FF9124371E485BF4AA8B51B2DA49DE8C2E5F4F1D909B2731B2B14B287D921949115891AFDC +2E9424E11D6A6E01800002B41B60F7AF908FFA016E775C82582A4C15F47F941ABA8889891F9441 +F2C850A29185D4B2B68CCF46C38ADFBF046CB7BCF9B610379E95CD8D2F68ACB47107225ACDC6B1 +2DD0A72F291E27199399F916370B1F7D6F4EC7D0109EEABE3191393C7D6446F86F10EEAD7F9D79 +B5AB0C053768EDBE0E0F211F306507510E589686D29D226E55D9F07696A144BB4A6400647A8743 +ED136D3C5DA6B183D0AF2B565D9D9C345EAE5B63BABA6867BED519CFD46CE594AF18AB49DA423F +0C781EAC2BFCA83F4B11B431C1DFF69E12287098A487BA099786DE0906EB2806278912B958D9D0 +CC168D6246251F550445413478B8A460A24FA8D80A0924253985753DA56A30920BB237E4521C2A +78B4E79A256EB66A4B2061F4B71B421D85223FCC8DB4FED0C3A4C4918FDEDC558C57850A62917A +0E57EA5C771D64A137E17D12F1C5EC08FDB94D1232B090127259DF02581C2584754EEA872D88EE +7E583D13C54D278DCB5D6AAC44F68E76186133A3EAC6AC3D22FFDE29D0EE251495A96DD973AA89 +867C6BF4A1B71B0956F32CA07D796A19A2B64CAEAC3B04AEE03E943B6FE66EE9840DDC086E8C80 +A0849F14992530B74EE8C58CA3F4E765A7A097D98D45DC90C48A3F6262E9999BC34EBF07D5DBE8 +7185B7CC1BE34DB8D09856E84A5B9B30C01CAD5E72034433045BBC57DE1DB1186BA78C08B6B224 +07FA803CFFF1CAB082856810D5639AF9E8653470B3FC95E1CF8FD80DBBB597FEA6A4E3CF584AFB +4A88D02C1EA61B65FB0CC7A96EF09AD692D035EEF27EB3BF2967364A42DF2D7565C61400B0E338 +168B81E69C07FCD2CE5B20526A707F36786C0C6D53B7E4567D41DF6435B4DCF13256B7E802441E +4C86A0A329EA7293B1A5FA8D532FD0F529A2CA7CBF0F667C784826A1891E8FB93564158B14EB52 +7AFD02156785CB4089DCAA8056EC101F85FCA80333A89AD17EB94C100BDD0552006139C9496EDD +FFE06E4D10C1258BC6912C5889D3D9108622BE978F52E855729C691DAFCB358169154A78659CEE +C855C995B334280BF279955835BD13DF6AD0066702C7B2A7804A223947A5F8528F0E2A962F76FF +2B41655FCEFD02F3F6F8D848D60B65399746806A9A4E671F62FD3A46A8766E6F94422B84E9E3CC +3F1ECFF2C86FD88EAB7C5665743F5F7E26F34864C701B57625A79CDCD1BAA2A43F482FAE42F9B9 +4BDBAA91ADCE7780AD209D2C19994574B9BBB132169B488E6BA22ED05C971D2CC5A9A0262844B2 +1698BA297412019CD7F6C796944202C89B7D7B188DCEB11C91F90F0A338F62F636B759924BD999 +B488C61DDAECC4B68E0104D51C9B8E38354AAA61EBB5B53A10F5798C3E755662C2F92523CE4710 +14B322D56181A39DB9073EF5CF6C99028C66A48DCD259DA4A9CA17375AC33C1AA56235BF1A57E7 +B3872799CCF1AE0534C5EC3AAA96128DAC5592C6A3AEF6AC4EC77F1CBFE1F7CBEAED6935913164 +C7CBAAE272A953ECFD2F9B95E63968190066A66DE5F87CDBB126AB5B806DB3E8F0665952D051A3 +DF91F4BBC261BAB836F921DFB0E6132283C40B9BE25DBA4DB5E9561658D735F4E7C635BA312C55 +A499A10352BAEA349607623649CBBD0AEEF6DFD9F436CA20A9A887A13C8B1E40064BC2B5E8F788 +887C4D1B853C40D74E4E759D417421FFFF7B2ABFF74E70FF8446E268C784BE7BF93CF20D3B085B +B4136068A30E1471895FD2345E05BB57D5C32F1EE6C3A288D1BFECA8276D35139876240E36DAA2 +99C18AB7A45DEEBC470F8DAFCE5884FA632F11845C1B28A3B39D820CD09B24ABE6BDF342A90D1B +E453764A959A0766C1F1B6F72579977F6BAF22C2620C22D16E52C78220AED5E5B0F977E69BB95C +A44F67FCFBA74F292773BBF4590773FAFC9632855223B640F8B5F3B991685215F92F1751EBA738 +5C09B7CAA12A617A4BA5497747AF13918DDD1AD89085AA3510443E8CD9B799F325AE43863E7F02 +CBEEC80A79A785DA41FAD2572E57A19F9A8DDBD1A12004F41158077B0B9D67E9CC4F9F10C29502 +50C74CEDA126664FC366E6C8E5D6C8DA0E935D68DAC7BEFFB648FC6215145ABA587DCC95F2A0BC +5E187C70FB879E6F75FEFB9FF1A09D4BE80EB65AF18BD7CF9ECA28F44E49BE391D4A95633B1329 +06A003D3879D1DA13717502851178B791137E3B8D7954BFB34E55B27FB430027D6A836C5773184 +C9384BC708991D81665F7D94803EE28BA76CD43DA908B279C772A4249E88DFC85A10849607DF1B +CA4D481614518C59017B1079ABDD1FF4A5FDAF8053A6225CED3FBE6F61A3404C797A61DD6845B4 +261B7BADCD7FBA647562514F72C0B2EF4077DA86BA5A71E192B2F4E7D9CDFDC1BC990F4A295CED +BE13590B98608C1B1A5F8E2A1690A4153B9304F5A32C764E0B05BA8CFE4907E39E33D69C4C424E +6BE32F2C298286EC2C7EE5D6C1B825DE78BA87F2E4FD59985FEFA23933832A4E61A21617B519B2 +9360D57CCC21A685DD415048A06C2C8F34A3C98498CF74CDEFD3E5A595140F52F02B47A34202E9 +2C07EF8E790186E56920F5967BFDE5DD6E2462DDCE6ADB38FCC059E189F8DA70A8687940CF9D80 +98FFAD9D7929487A9191C250ECFF0A90012E0FE9F902F78A2C146ED6E5420C00DD89F7415F2573 +3B5146D271A89598EEA4005DB32FD27DFA0E293423E4D433DD78A31910988D75F2726B3B8A7719 +EBD40A889AB7E38216F1301D6FB53363240E1A07C2ADE47B26D4B6B438FA69786A582C72855A76 +77E6C51555F39F3EFB53C79905BCDB3CD88D3A5801F971BC8809BF73D384B53C1E03D65CC34039 +2A7A564270526CBD6F9FBA7871BDDE6D9BE23C38D5E53B51CFE4EF588E519148ECA0649AAC1E1A +2606EFFB8EC97C9E64D46E9BB5DAE9BB73CFA6A9CCA578DB26ACEEB662D020F9D2F163B877AE89 +746A4B63040082385DF1C5BEC77350F9F5EA41F5941C90EAB5700820C0C29AB8371180F30BF009 +5D7CEF5446D549D0931961B246DA8F1C3535F8967D64FD070B625904D7D7DD6E31B9E410CF3D5B +DBB7B6D6473771B85F8E2924CA2F4D8DDFB2DB3D3E4CD46FC27C65F7058E8F908DAFA540BF2726 +A5A1A66DE298D6EB770FDD4C2EB07F3C81F190712C2C5253379D518A931097A96866C1D73AF6D3 +587202857D0A83D2A526D281B42AD8A29E5084228C527AAC631E85E9FBE26AB60F14D94FEF2E3B +9A24EFF6DB66998C5E2D36966A11AF147CD293723A5F2F34625F6AC2C4FB51D0F851AA5B4B54CA +E1C8002ECE653890BBC684E4D4EF528BF815BA9B3DAC3A6EF34EE74BCEBD75F35F370363879C6A +F67E849750D4953A880081DA1B64582E8D790C288B65DC1B69BBCB0630C77ABFDE5A40E0630D90 +F542F09AAAAFD8BFC57BCB9BBED422602DE45CB377C2E634B47AA83CFAAA35E3C869C0819E6E0E +1CA918941B15F66E9552672110FACBB538E8FB8A7CE8AEB2FF61EA94E098B89062FE76EF53C6E8 +2CCDA0E8A19BCA2B33F4671BD38C0DE622522CE84ACC4114473F10554F8B13AF6E50A8F7443EFD +AFEF23430F4C2AFC9188ED069E25647C5D89D657E5C570A27A4EE5981E1D9D317CC90F5B25695E +9E1B914773FD447A91E76E5E87E6613127CA54E8AFA17052094F6467438B369C8549E5A0A59B04 +D32B5A0B02FAB315F25CD4C7E16FCFF78544D88D983EF7C49AE1DDD72275759ADAFF6F206B563A +5912AA256CFCB35CE30CAFCFA481301F6A25F673A8B90E9795B2981601BA88400DD247AF468011 +8C698A366B875A8631AF3A5B4CEA30F1B98870C096B0285AD22D2AE0C3E7C2600BBE9DB96A9A40 +96BCB3275481F63EC41789444E088A98C3564F22C7CC1D5D343EE6E3494E46C99B1546AD0FC7A6 +561C239B5D233450A80A13F4DB163FED87BFD98FAEBA9178CFABD4B5828EE864403949429940E9 +BF97455B4B10F6FD8720930BE10E639F7173B460F56701B5D4AC799A794C9CA075D34829B98461 +0FA438749B33EB9FEC2BBC2A2D354DCAED8F46CDB103EF0F64670EB7FE92FFFD4734BCC9F5B68E +CBCB0BFF982FC7558774F9814B00802B4147A50F96E52FD1E107E1BBC7CD878D9BB194A3280DE8 +0D3BEF8FD0CE0FBEE8919B8E6A9C8A45FA2DD71197AB8F15E122B6D96347181D1363A190CAC8FD +84EDEBE0752BD3EB0312C7EC7864E68CD0962B3AC5B919CA24A3F3B75729AC6578254974D749E0 +9E460263EFF0F666129514DA59329972C02FBC41C2965D3F2C7AD1B834D210EAAB5FE5B50DF9C6 +E16A3DD52EB2A3E703364958B977060CCEF91334232C9E71E27C03A1DE128CFB721881902A1C27 +5FF14F0FD65AEA05A3A58241E874E6222596AB117144C5255EA57322E49F07A7DE465C39DF690A +6A9836B10E035928E05AD103954B6BAFCEC520D364A7E4FFA27EDB5299F47ADD3009FF45463D38 +8A3C8571B21DC64DD8CF7028BDFEB4F66D105BACD33DB5E8A00363B47B9D348AA1611C059205EA +3B5897658160F069213875205D4979EA1A1F93F196A322B6ACFA8545EBA221B363A4F6C32C5FC5 +FCB4E4DB0E2D103AAE01AC84FF8B1BF81D05CEDCA5A356981AED6A5F4A5978ED737CEE2B686275 +2612B63BB055641ADE4F9DFCE2BE94F9B593BA495A1351626702E648B62E781885ED4770A45940 +FB25E5C4DCF2CA34BCE72693C063D1F130D728D7D04729E8005CB872D264AB8EE6D125962DD6BD +27C0BD80247AE1DF710BFA28C8A5E32CD34E45D60AF37EACBF49682A1A76B15ED787E1E6371B5D +D56DB046DC21B5DD9463996A4D805135A4971B8C187AAD32C422087D8FB8B46B5B472BDAA9AAE6 +85C6C08431BE762313E443A37812D19F535AA285DBA7041997EA73498D5630D24F727335289DAC +BDAB419E8B044E45D08B45B24134B5BAC9CF14D48DE6AB4705607E8B7ACFA9772C1F4E86A35383 +FC11C4AA84A7C734915A2A5EE0C630268C6DC794DD6164C9D28C33E6208266D51ECD5FAC58C455 +ABE4DD2E28AE428BBA827C18F347127E07E9E14BDF6FF4555E4E6C79697073F5D01927422FB534 +7E854223D6932003F6F7F2B6BE4FBBAA65F2AF984012ADBDFE1DD4AEA80E3CD859BBF018084B8C +0E6D3E4B81B9F2023F818BFCAB27AB55D3930F03EDDF80D2274FB6BDCBD888ABEE7B9C3AACA6A7 +70FEB66CF346D7545537531AC4FA6DE2AE0B5F0751CB10EDCC047527117F0974A8E0E48413155F +B8E15D487942B6AEB71989CD74C88AC77809E1415C14A5BD4776A2593692BAFB9D3F8B398D9C0E +1DF346BB9A75915575B2ED1F1EAE8BA4DE510ED7F5E795314D5E5FEA572DDE48FC742F6318CD26 +4DEF0C83C92032465C5209ACC826D2CC9507097A18679C44329E25C87D98AC7A007B4795FA3F14 +E93993E927358E2E5142E7FB9CB2E62C0AA0C494768014DC0FCF8BFA1B299CB788B74A660CC404 +F661DCF070C900E4E418C0ECEF6BB7A7572C2A632A9FB4F18C963FAD73B5A0C863ACF3203489D1 +EDE5AFF38D67FEDE75F17AFE06F9130700BD092A55129DA2CED26CF10C5C088FCF82B192AF54FB +BE884D701A15D71F21099303F9204D0CEE6CE1CD4491FB5B0285EC589C17079AA6599ED30377F6 +7538636C92BD6D49B53C1671DDA036FB4A9251BDDDF41383F818F332AED33E010C642605051FB6 +5F1E68DDB634644026B08ECE7608AF5AD2F648E32B6DC1ED202F02E12B31E008790FF62B097F9C +C871A36A23737F8DB0EACCC75740CEDD89EBF1D1619BC558D35FC49FACF0C4696F577674879B35 +DA2342F894FBC85F7EE7F4796B680D12ECD8E344D5FBA7F5E56FE4D5C138309CABC4871D81134E +C07D9825556F78F74C9239BAC7365767761577FDF31609C5C884CD95571410856CB2A87CE42BD8 +9F92B8AFADFEB5BA618BA10396AC6B31A4E87C2B89B521FA100D8622F39C80190749C5E9C26F9D +1040F6B90D2D380BED092EEA62D6BBD648B1021719799FCF210C5EF3BAE4D44C4D798D6529238B +5BA06D3C9F9AE5367CBB81993C19F9286E690DE1345FFDDAFF9FE36E +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +%%BeginResource: font lsd +%!PS-AdobeFont-1.1: LucidaSans-Demi 1.001 +%%CreationDate: 1993 Aug 11 21:10:03 +% Lucida is a registered trademark of Bigelow & Holmes Inc. +% NOTE: This is a partial font in Adobe Type 1 format. +% The complete font in fully hinted ATM compatible form is available from Y&Y +% (508) 371-3286 USA, email: tech-help@YandY.com, http://www.YandY.com +11 dict begin +/FontInfo 9 dict dup begin +/version (1.001) readonly def +/Notice ((c) 1992 Bigelow & Holmes Inc. All rights reserved. ) readonly def +/Notice ((c) 1992 by Y&Y Inc. All Rights Reserved.) readonly def +/FullName (Lucida Sans Demibold) readonly def +/FamilyName (LucidaSans) readonly def +/Weight (Demibold) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /LucidaSans-Demi def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 54 /Aditi put +dup 39 /Alessio put +dup 41 /Ali put +dup 47 /Andre put +dup 49 /Andrzej put +dup 51 /Angelika put +dup 53 /Anton put +dup 55 /Ari put +dup 65 /Bent put +dup 67 /Blair put +dup 69 /Bonnie put +dup 71 /Brian put +dup 73 /Burkhard put +dup 75 /Castor put +dup 77 /Charles put +dup 79 /Chi put +dup 81 /Christian put +dup 83 /Christoph put +dup 85 /Chuck put +dup 87 /Clovis put +dup 89 /Cyrus put +dup 189 /Heinz put +dup 56 /Jacqueline put +dup 57 /Jagannatha put +dup 58 /Jan put +dup 32 /Jeff put +dup 66 /Joel put +dup 38 /Johan put +dup 68 /John put +dup 40 /Johnnie put +dup 70 /Jon put +dup 72 /Jonathan put +dup 44 /Jorgen put +dup 74 /Jose put +dup 46 /Josh put +dup 76 /Juan put +dup 48 /Justin put +dup 78 /Kamal put +dup 50 /Karl put +dup 80 /Karlheinz put +dup 52 /Kaspar put +dup 82 /Kees put +dup 84 /Keith put +dup 86 /Kenchi put +dup 88 /Kettleson put +dup 90 /Kieran put +dup 98 /Lalu put +dup 100 /Leon put +dup 102 /Louis put +dup 104 /Luc put +dup 106 /Lunjin put +dup 110 /Malka put +dup 112 /Manuel put +dup 108 /Marcy put +dup 114 /Mariusz put +dup 116 /Martin put +dup 118 /Masahiro put +dup 120 /Matt put +dup 122 /Maurizio put +dup 121 /Sebastian put +dup 97 /Roger put +dup 99 /Ron put +dup 101 /Rudi put +dup 103 /Russell put +dup 45 /Will put +dup 105 /Sam put +dup 107 /Sami put +dup 109 /Sanjay put +dup 111 /Saroj put +dup 113 /Saul put +dup 115 /Saulius put +dup 117 /Scott put +dup 119 /Sean put +readonly def +/FontBBox{-309 -205 1151 967}readonly def +%/UniqueID 5029006 def +currentdict end +currentfile eexec +AE40F8585C2492B57FC8C19373E315912C02C4E404DE7D857CFC574863562CE335405BDCD8F11F +96FF6E8F1C7B7081B95AEE4E19EF19E210EB377985E3A9C4049662C57E12D3250AA62F97535698 +C97032B09BB86FAED093CD2338831E8859F00CB0C108EB8E6EF582C1A64E00289B62C4DD3C7ABE +9D68E37629997DAA1BD0F494A609A153E01C0FC558EC2510717C5F3C0D1704E13894839A500B55 +234B67E33C3EE5A6E7E905C23EECF0D7320E431F93A893DD533D15A7D941B043EA7698B0BAAC30 +D437917A0AB35CB6E43354D38151D2BCAB7D2B5C7EB260C888CD713A2960FB2E510299FADCF020 +C4A535A0791F9B9DA4A3D25C989EB20DD198AAF09029DE3109374D40071EB6255A9B872322B00C +EE340A09F572634C77960BD50BFCC684BA77A4D15CEB51519C9728E8A3D90555B3EAF8C342A020 +6282A97EDAA25BB74F1AE6F862477A7AEAF1A2743843460B3EA6653A0E7348D33FEEDBDED3D45D +85CF2AA51168B0647C1DE8B3C9A78C2EA43726659F3E8EDBC6A899F644DC2932A855CF3F64B115 +B46D556E5D9985D389F7F250B017F690E2D057D6C651FD591D0186F44E4E72137572BB6C02B816 +DD19473CAF196D22DD8C2CDC3EAB84CAA908B1895059B7CF29D716DE195A6561EDE1D69FBB65D7 +CC82A9A4661DF15F693EE6E383D7B8204B693A7B0660686A66F634FB881D0DCB0309DCC421EFC2 +F0AEACC7EBDC0D36B4B23BE86EC1BF92CA08E7F7FE75A9573149F4DF5B0FF2E3F1B7152EE18AA4 +4C79B6B5B8ADF21B9D463241D00B8D0B1E4C53E374EAECD2370C762B7B6BEFF36ADA6C616B9395 +16561AB36577ED5709D2AB556D6828CFE3312375F8352709005A1AB5889D6EE142AFA34C135FF6 +A16327F64BA637F66BBEA267A0CF74E93C5FA0BC0025041987825AFB1AE5BBA228C40BC35EAE0B +620B9E90510DBD9762195207113830727F293787D784CC8B3096AAE08DAA086D3F2D02742EACB3 +7D210FD447B489559EF0641DAD182D275B4CFA7311FA695AFBC9B689CBE20DEC441EBD2D6CA829 +F3C9D7A5F0BD06082A0348E70A97A463340BFE7B8A183D6E01735C49361731501A6BE18C334DED +5FDD2E20E0DC11010983CA608F9A6AF1E2C5887707CD4E1EB02F38BDE030DD8E0DB7D9B39470D9 +993CB97420EED3C2238E2D9C5558794D1EA89D7DD24C8E426BA238743695FA0908AFB11012C071 +2ECFD83A269452B1DBE37E142A6A45E05E4D3FBFEDA1B8D3B3A8D165F24B8ECC37EAF5F56DAAF2 +2FB1E178D15C742CB146B41265017FD85A6EB653C0F69DE9EE0D5C488D1E9FCD5516F6B8721DCB +DF10E9A94F678124D6668A291B25A3E898923040749ED3458B9DDD204B196470F18DB90B3B0B0B +62F4979942FAA9F1FC00D98E345560CEA1D8C89CF7BC141ED12696AB78BC44B2483E3B5FDD8F8A +257B81175F5ECADB194647FD147826560D21CC2C1E619079C5E03D47E85014CE98E7AA57F32B97 +0F7211D7FA44C26FC12A0BD6F12604B8F3EEBD1DCB0E8959857A5EB5FBAEF277ECD1AC6B564658 +A547C9306B51C96E76D46D4878C5B0CA4ED3EA9800F9797A4B5D18D91244C74DAC07C659F3656D +2C2D9B3CC8B2F6FAFA22E74782D61492462936DCABA1363C51EBF7EEE92BA72A7A8E27C733D488 +C9363C086AAA51C07577851640AA5232FD80E70934CEF2CE74F5158DA22C7411989672133BEE50 +558A852537938BED9A34115416DB0E62A0CF53C5857C7280605EDB2DFAFE3B15A82F64A2C541BF +83903E3381468B8EB372547B548AE62E16131D0E4ACBF1575E3F609835D9DF46FED02D58C0C3E1 +804DA0DFB55F6335B910691A3F5E3709B83F3B9FA35771DA4266BD8ABA9FE7F42F5A877D6A4457 +BFC547DB8988CA6E77E04FF7845E90E7B72CCADE8A5A14E594E27BBB993E4F73FF91CFE0306C23 +A8E6B352A0DFFCBFF83E4D9E6F7C0F05EC7EEE1DA737E4E1B5B70243083FF2EAE5F5F88AE7F040 +E7D8CF58D7AD5A2B25B626B4B5525377CA40EA542236128AA40E592421D0D871A37C34FB45DBD6 +A45451B15298530EA0E1DC851C212BA010685A92B1F805547CC57D62DD2D7CD4156C420D073AEB +CF0CDBFECAA3AFFCA3F1B1B4F817DE41535B77504E891DF0CB42AEE39CA3E37E1B5F787D467CB7 +306304950015AA42A53A340AD1D7CD32F2C0D2A7EA8A7297BD0FAB1B2FD027D0FCEF35DC8A32BC +DEDCA3F3702008ABC82389A0F12F70859E5F4126A88CA4FAC548C2515A46A3FCFC3E958575CCF2 +30858E0465CF6D43D41973057077BF986E4DCB3078CC14096CE6279C919082DC237A9610589B29 +E9DC232CA680CC17DB5C545BE9418CBF16AE837E02681BFC873CF630D9044524A9F4373DF78A7E +EC5881CECB664A92123639D62758235DF94C854A740A4D38859C9386E1431C5152331D71AE0812 +CB23884FAEFD580C53552DB1D51BE03559E7129A8642AA14132AED38CC4357259257698DD96624 +76589CD1AF7D72A53A8BA78A6E2737AADE9D3D880140C3907D1C20F6819A0F6465686B6D30A4F5 +04E0488F5C8CE701D2096B45BF447743BB1D981E52C65BF78CB8F4D4BB5E1E4B0E3F48CFB19D29 +9A4210F36A2FD8557AE2AA0477683FDAC64590A3E6ADEB3E3C24DEE4ED90D8A3EFBC3ADB61346B +6E167CD20F60FD028CF251CBEAF221F423505126973808297125312ADE2F0337C0079BA876BE4F +94D9F38EE5165BA3BF025C012EF13CC89451C63D943AA2D0C40083036AAE18197E87AEAA4E6A4C +678BD07DC68D87C2B18A5BF0B371789D216183C02DCAE89A8BF26C15B6A3ACB23F406D77AD9869 +B02E9DA376F0F2299767CAB7DCD0D8330D96A43A1D70EEBD80362872616E3176C3B6CA44B5A8BC +9C0171B08FDCC575ED942B90C55470C69C3DDB7FC6CDBDCE4911418054C7C723F1CAC9646CACCD +23F594B344129B30F7569104989A986099901CB110CC535E57D6AA8CA80FE75C4A208A7B5E39F4 +019D8D8A515C0AAF8AEC711A55C6C0DAA0F17C34C3066683AD4AA6A7D3EC57F20D32E15EDCA57D +61FCC7C8F8AD61260B574593CDDC128AD465C59A785983857898D437017360192FF44E19998358 +6453672475B760A3F8F6003D3EFA6D22505EE7A12ACBDBEA47B63E5E3540968AEE5B6E7FA8774F +B5410F44F9090E880D2B6E7E7E6A7D1D4D717B144D8A7E4DB66CDD5998BE26621B9F4D7C719223 +B7A5AF8EB116AA03C6AF30FE61E32A62B4969B4429D0D101889F1BDE8EEF0662FC4D64C06665DB +D474E811F87D31BF576271A7A3E52F7990BD79E96C3B4A936E2B1FBFFD2D31509CF7F5BC739F4B +7C0216B5AE0FD8AD25FCE86B33A4D22B2D616C96AE155DBDCD095A77AF84EDC4B7979B078C563F +8588CD016B3C08695D31C8EAF1D497C01A9737F6C1AA4626BA952175B6B898FA389E9493A8DF87 +8D4A1C38C0CAEA89B225567AABA00DAA5B6F3E038C0F3198E8B5CCA6302646EB464F062D4BBC8F +A8446418626319018C9C8CA08B1C42D0714AE74E49CB33A09CCFCF7A208D1B7212C255AE7701E4 +E01D7E5EDACC772C8DE238B4DCE0C3D6A1C7D55FA9819A3570718A6732AD4746A71DACEF94E459 +0269025736DB98D2F053305C27D30D50DBACD697EA875932778F2A544C9460A942DE2DDA61AAB2 +109FF6363A5EE7E6E336394B882557F7E13F3D740ABFB291290AA5585922FDC27873A8B29525DB +ECFE5A994BCC926A5A4B34C49210279F8763281A5D91816D974BC5F22847D68DCB911D265F7B02 +FBAADB2E96FB0E46DBA70031B7D7A4BB32711C127FEB546F52C1FA36C7993D40EE93C0D4915B12 +FEB19EA6972A3651FDD1DB039B1507600477877D43AF8F23B4D41284F50621DE3902A3BFE3BDAE +B057C127605869A6FF573334D00AC079DECA898EC5E7C28CB76B23A617DCA022313B449518FA4E +3556B2335E4A45A8C61121293C3BAA23BE8ACFC53658B3617458168B3F5FDC321715AF886021E4 +AF9187E2FF6CCC09AF7FDD019556DF58061AC74581BADCA856650460E5B45C9DCCE4B4CCD18DE6 +5AE71D2B3D4F472FD56B46DE9126E08DA99B91A758BD9A94E28A8D951262F220111C3301972A7F +49CA8615AA7E7BA61171300F8E66A9BA949FAC666EAA23720CA825DE4D0F6A9ABFFF233187791C +E57E3EFC5FDE95D277D13CA6112D5934D6E27C07B614971D3AD7FD74CF08B4CAC94F1DE512019B +CF2400998F207B27277C42562C7EAADE4D090D8261C818DDDC65F65CC793E5A479F1E03E3942DE +EEDBEA85B103FE2BC309C6B16D87804C85900E39F51E96276D9BC9F62825D42D1EAEE49694D61F +AD59AD71A3EA6E53CB0C06E7916F0FA7A3BC0DA39E224ADF4F23EF2A15A4E0A56D9E38D4D7454E +CDF3E8D010A6950975E1967E54F4C63018731DDCCF5F6DA12B4D2AD4A228473E49F6EC799D1967 +B7F333ABB650B2B573F24B755BB71607D20FE142C5653358714EDEEB94D1862B435C877C80C1DF +7B02B148E8800CA3A1957207854011A7EA1AE2B831F2ACE4D56F9A2CECCAA4BDA65C6CF8CA936A +05FB76383900D5CF4CF85DA2F2D4E0E10C43B2FE280CC15C75349B170E87909E7113C3AE32E62B +584D7D350D1097EB7161C2DDA01D1CE66B622D041228C3A93F6FD48048ED070EAA88B5AE5751B1 +9034DB79FBD58D16639930CDC92B93F439EF6E900FCEDE677D1CA321B93FEC8C22B6563A069710 +54DBF7D60967EEF580203D0D4294A16C912B06252B97ADBBEA61CC04F9305A249E88B95ECD4AF7 +1F6331BB6DDBB4608CA1548E270CB79FD972293B9EF8DB393898198E0ECAE14C92293506C39170 +5CB3B0526B95E3BE6B8D3323D30D1A8933CC0C558C70D22736BEDDEFD0E5DE972D2BF42EE9E340 +0F64CA97D4AF620384797F9E17BB831776A38A03E6C719917AAD65B3FE3850EAE611B9ABF47678 +D750C0E55CDFCF90E7902A8AD5F0CFBA8125F9C35A49BF4332CC5BB1AF7E6601046E9DB0AFB3B0 +F047A17F1E3346F5B3C4E4817A6E75753A3A66FF2F6226B57788DC7C5FE3352A6DE50E7E44723E +B4268EB179EB916BCB57F3C7330323B554C5DF750B5B84563DB7248137E312AF17D2BFCFED3E7F +09323553E04E4049B05E4F8C546D198FCF51CAF6D3ED424FC973C3391D9B190E1ECAFF617B6E26 +B1F2638FB32391EC52B27D0C353B9E7085B810276FA4728E699E50BB54274130A2B290F8B2E49F +5DCDF560B56DE2A43B41ECB94FD8F4238771D8B55712DD101FAB9A58E4319E58200776583C35D6 +0EF2D7181170411BD45A5C2967D7F19487E8C2B17A5483E90316EE7F6ADE0C11AB7355BC66E021 +2BCD832EE4AD4DDDC4AD33DB5358CA406876B077CD8D4CB77D1DDFEED860DA562615F51A54F596 +C474DF3C2D253EEB1E9B85352211F2F627927893E9F59E70CD59B2163E35D0C72AEB17EE83CF1E +F47FD6ACCAC3667E5E297DEE0E7F88644054E99E90DAFF89448641620EB4D165D629A9B59A0561 +A144A1CDA31FA7C64E9003B9F66C880793D1A968FDA68159508B61D90C52DA56A5EFBB937D03EC +C3F56B7C4E58CC65ABA31D9EFA6F49D3739ED898D2B2FD941180BAB89F6BEBFA09F2AAA3F543B8 +447C15E372EC5683C81B987D492F6FEE10317F2C5FD884F813C4E281B5A7D120C24D1C7844CDAA +5CFA497E5760A150E0D22A548AAB3DDFD13429A2CE12526162A66C45B38824E56D4CD47B6FBBD3 +3D66795ACC5DCCD1AB9BA0C3D6E2AC6A8E0D14DBB9F693CAC9F3FF65BCB714253A607DC2B25B15 +1A7B07690DEB14C2829AE2D043812BDB6881EDBF658C21FBB5DAC05326BD8683B2506ACF3B637E +055E94B6141C24EA1BD6CD7437CB2713700EE829254EF783A926E2768B06545FE263663F79CA3F +D4E9C750BA92F6CB2CC44B03D679750FD68524246F4C63CAA44F8C0976EC39F782131014D136FB +96E441F9DF8DA9BE84D7A59497AF90656B9F308BE1B909E51AFE8396CD977B2BD9D6B1D248C594 +4B3F0DF9042614F333B91C3511DCBFBD6DEB5D5F323B7F021DB863F63DE2DC9A1774CB6598DF80 +011AEBDEAC09EFA9E1644FA39165747C88C8EA6B4AF1897B34E805BE0F0F89FE2B9F71F4236058 +E5FEA48B32CECA6C5C4DABD7A2EDE43E477CB3760628DCD2B64E03ECBD3D28D9A13445ACC39C3E +540D0185230D1E89750D1C3DFB6DE4DC9A258156FB559870A29F057121419228AC452A0907E683 +74F58C6DAB6DFD46FD4B7B7417A3539F5F2DD26F8FDD1723B6C4030D86C352190716EB980791CF +2426A868B756255AC3CE719D37C81D8BEECC143B623880C1AC8530698369322B6309C672FAF6F6 +0C8BB5E787447A61E79877B8405C652A5A71F85B222F724EB406A8E5451B8AB3448121430B4ED3 +34299EBF820709C1519E35803396B3DC845302F716DECFF7B34E53E60EEB0C30AFD9862749DA7C +335475A5D432D4161BEEA5D72A3772B499539CB672E9ECB32CE919DB201E20EFF2555B71B569BF +CF8B902564763EE7D559D5AA9870837679E4718BE751759A9BACCC51A9061196BE327510BA4865 +ECD5B2A3593234E0E6D198DB19D2EA74A437BA555CD8FE70BA380B852858881E83A44FDC32FCEC +52BE9A0EE93ED500F8BD0C660D0894034FAA09B92BA8517CD3D294D16EA7F0D038BFF2B744FFE1 +2817B83C7F0DE337F0527433A982B6B43569C18D8D882BC722603FD1A9BABDB464230FA2B0C9E9 +13A47D30EDF69AEB8D6737658718321A34A8D5CD33FDABDBE65A9E9DEDCA6F80ECF455DFC6A80E +28687F23D4ECD8D8FF396567EFA09929F748CE124D08360CE3637BCDD08D1A9D54EFA80EE56CA6 +43360FEFA5E987845150CCDBC23E5EFE2E3E2F571C1CD5F838EB1884BC39387CF19A0B4CAB69F6 +829987C0FB8634BF8F8424E649F9CFCD769E96A040B1CC46EBBA3B17886302C2C98D02ACF9ECC2 +0D6495C1A80E2018B1267BDE4D82C9AEC7E284BB825E6E500F85E5554E9E55E7657947879BD719 +81582946A1D6F0D70B878B5E280E49C23D3C5F176E43E1878F82210FD465F347B37041FA8FC749 +20A45B3D73E71EF44F50CECFA9590BA94CE6D34CCD4FC878DCBCAF0CF713F4AF5F54FBFF508C42 +DC97117CC92442E180E4B2307A2FF364E89BC538501A2E3526C77EC08E8B211DDF42042633C978 +8EDD3A24389AA1690ED0715F531173163A95E36E87554924FCE4879941C50214A485A26C04960D +FBD7A03B9AFCE70866723375086C6DDCB249AE3EEA17CB1BCEA611FF44364DAE6371AC79652C50 +0EDC774B75B790B204C9479F3CE3030F6288D1E2C2F9F083F990F217DD42AEB8A95933E7A318D7 +CF6656D9C57DEBDEAFF6D532CF206F4BFBA0EC53913CE7D9E2BC72F5BECDC0CCB313131688D769 +12FE09419536C188F34C840608A17BA22DC57A7DE9B758E05C3800A8BCA77F95C0842094377A16 +B80DACDAD77A3B65651CDF7F7C4550F1214DC47D6E88C006AC5D5066C3AEB2012F2E0C39A055FB +BF174FAAC6A9A28D2434E03874446E15DCE7ACE5D7BE7050390186125F0435D4024DF4B5C25B16 +719B3240ECE2B00C53EF9091E1043313BC83FB1128F19DD592BDC748E1172069E61AE8A05B6FA2 +73CD67F68AA8F783E90D042C630811A8A71C0E22A6142B17D6C2F443F27ACF59C6F4474014DCC7 +FE9257ECA7B4C46470DAC7540C34A03B7FC1AA96D6B48179D28A0BFDDC35BBAF155BBB5DD8D40C +2F3CFA7719E0BC7832EED6A37702223D1466A8B4FAB31D2D91AFEA30194B9DC756EA0931A28D92 +8B68C0E09F7940A1BFB8817CEBBB0A5A4E65CD9170014C9577F321AD444420BC7522D91672DD1E +E7517AB30B7DFF7436C75999DBAB0F7B3A7D452173F9FC066EA136998AB8D3A46AF5CB99ADE3EF +F0213AD487A7C50A07E25B5363F2C3E47B79961BC58B4FBC206F8C17D4897A26101714848ECF2C +D7219D372F38188AE6657CA5A9D5140B832533226677A992CBD205BD8A7EEB8618B6D2DCE91AF1 +8401EBF19DB900BCAB2C7146A0832A3AED3755B8906C9A0AC65CE2FE44E3DF2F68A75FD285A1DE +60FC073205DE3B4BA9ACB0E06C29D5818F55A9DD737F2069BAABC52FD9B3F386127B9DC32B24FE +9F39921778FFFC702300C1FC92E3809379FAD3189B34D98EC371F9FAD6763C81B424B0E8339934 +9282C1204BA70499E24CE718B2010FC17458D8208492EE56F9DE924FD848705969B622BB0F2481 +6BD0FF48BF235DD71BD6F61C38B6294AEE8676AFCD9B8564E36EA6A95C4876872B94C615DC0994 +D522CEEC5B7CA9ECFE9DA4A70613537A1FFDDCB26A909A0C8512796F70FCE357472476F30C9D7C +AA718917065C69D2EC1EA9620982EB4B869035E7183A71A910212F18BBCEB054B9BC7419E45ECF +2E0C600F865B44538AEA23950B5E4010BD45921CA12C0C1968C65EB900ECE26C5AF8D29D31346E +A2CA571A9E40938D85D4483DD894907ACD68738986D864190CE11362E7C50346473639BF4BEF9B +81160FDEEA602FCE03FA4ED3FC5CEEBD50F3576CDCD4F21408A2D80E265D5D607CF00CF15388F2 +C6EC9A1B47C77DCAE2E4F2F978508923FB4AF9CE6C8BD1941F66866465D9826879918CD49BBB89 +9A0B12CDA6A069B9944666479515F2B7E39F94202D4B369FAA1887EF5BF5304E8C2B2BF291D6B1 +4E656EEBD98A422438DC43124E73DED0C86F71F98AC1DEC79E65C71AE390A9D7BA0A2A5AE8EDD5 +5D22DF7FEC889A8953ABC0B0BB9898FAC1CD7B25263F7AB9DE276B20203ED2F2F43E7D52E442EA +02EA9BD77721C48D819AF6A522481180B75C940780AEF72D451D556A9B6781C45369984390B393 +A873A2E0ABAA5D91DF10A1A29E7AF13F74FC678716FAAD7523B721B2B9C0C46C358887D0A7F655 +40E317B0F9B6359CB0C7FD951F28FD77D33160CF072D79559B31687A19AE294FE3CE1E9D30B083 +F955672E43D601A8FED9C7FB8C735C681B612B327D3806794D061C3C95AF819B08515A2D60E536 +D3DAB7BF64E37758CC9209777C62677547E065E20B74175EA87DD3836D107D867805AA0D7A913C +E8201BF1BB8AA51657E08999788761B3C5747F40511D58798397D64512FFC2BE814C776B9EBB54 +9E4F5A3CBE75D920B2BE77CC141D1D26ACDD762BAD54CA7C37EA9BB718059948E6DD2C404BA4F5 +08AB7634D7F7CD84A3C6A1881026AF15EE46DCB249436A9EC02E96D88AB19180FC2D01742ED7F0 +2D7684B698AD17273CFA4164688C5B411D9E43DCA5806223040AF23ED0534A1E9D922380EEA882 +A5B861CADBE7637EFD6064E56107BD6237EBEEB8DA25B11BDF0A02569374B70F09818E9A8A0F6E +F9267967EB87CFB403D57215869D265E58194178AD151C0F774C726A2619B08515D3FF9D9ECDF1 +4A7A40F43A154D499086B62D82BA643A2742C2F9420D73D7137C20C5C9F9CBAB60278E6909F8C9 +AD368E6CA36624FDDE2E1F9DC3A76681FDC202A09CCD9FA7904BD49F29C645AE4B4BDE9433D44A +D304FA982F5BD914F42A77EE7C4338435F8312EBDE34BF5F8D805ED362C6A99440A641DDB01CB0 +CAB5E911A0E5A2935F340AE81B91592BED1B4272CC03247B1F27AB2E9B23CF77D3DD021B907460 +F8A877545C42AC468B68586F0066342AC40F497397DE037EC5F5C517146A72CFEFEC3675C88146 +52AA1A648DD3194BE106291289E0A0170FE7C1F0616A12E78E8FE112B7B2F60A623F49836F3FC8 +CFE47E820E9911C19AB297882D2311F41D76452CC9DD6F6F95B0520BA3EB394C15189F9DE9573B +85C09AF740EA834A5EEE27A0400F1E3A6B5F86D0C69F8FA26C7BDE10DABAAB8F7B3EB7071A72D0 +A21D82F17485DA6AD12BE8668D39CE0B6A4BC7B59A9D8D6A47A15F62D2B41283E9F23C35D2865E +10BFB2603A607E5246775F67A41E2EEC5683A709D02C92F4D021E07649C4C60A5F0E98D44CD83E +A34297942AEC4D397C4672E5ED5E1FB1CC51F3B6CC7E8FD0128D7935B05872A6B8D76F5154BB3F +17A4EB5BA0437DF785A63009C1D8084FAA7EB5145E5BDD31E9984DCC2ED1711A2FCA3725445AE8 +C78BB1C692F2FCAD9556C68E7C9196541B9A4F2465D16B4205E345D096E8E5B172CDB1E784B228 +0D22A28813998F653A4D47B5346C636D7C22CEBF2DBF433A8790FAE8989A18C674BDB566FFAA7A +CCDF631AE4B1B2C876E45B911CF9F4B9D7BFCDD2684553B1CC0F3BEC3624E44F023BA223E83EF1 +40D0E6D506E11ADB79C0DCDEED41894073B75A931D0DF6AA89078910D35E6F65B956AD74F939A4 +B30DA755CC42918F3E6B748F066E891F0A158DDB4FFDEAACC6E71A9AE04DDBAF899F796A80F6DC +02703C64BC7E021BC292A9684305D59CEB84F579B0BDB215E4FE8399DD885C8337A6ED127AB50F +E2B562EAFD20C841E7E5DD1DF6993F4E60B59C6FB2B8660ED942D360C5DC9D48A9ED8D9A08BB4B +8F7D51AA81D0F6B5C63E3633EB4A8DD8EE07E99ED5A455B6D5021D91C154AA57807357D477BF2D +626D54E365DED3AA67230CD8FE70C51E3EBBEF88FC014AD287EE77170EA9E47828271235BAA930 +087CD8749F3528C7C60AF3EFA55DA68C6D3B166ECC7B0A88E4077EB2C93BC5894EF84D9BACB493 +203015DA8CD9EF106CFD123E8057AEEA2454C9651D312E4F6CB7CD12BDC1DBB475A1DC725A21DB +FB24F55AC85BA2F07531B23ECC411FB2B0DA6B7379F3BDED7DF2F412A016E9905865ABA4274EE3 +1D932014FFD8836B8CD636568CF0BD2A7B7D4F51D716BCDC50D56936A297C0E7807674BCDA480A +1DD90412EDFEB4F18016E5A5EBEF885D3D33E2D925831343B0CDD184AD9D9779F0F50805894776 +3DBFE9EED1AFE3FF0DE7D8691104B4155821FCEFF8D0BA9F35DE1C39B063394E2F76B0245555AD +78965B301411E1D93B5D7C2284848B3CA29776059D9AA4CD2AEE88CC0007376C6EDEADA2DD1CA3 +F5293EE8E2C9B0F1A8F5EE9D009C63589CD0A7003B7911C254B780C8545203165601845624AA95 +2519CB7F1A1CC004B84458A19C7EE68FB249930A268BA05F34C08FA72BA4E4E6919EE667DC762D +F206E8BD03D6A1996887DE81640A2BCEA4052FCAECEA52900A9296A4A399F7ED0C3D7D3852A897 +9F339D42D32911E6E119BCA337B7F09F2BC74BDE2B71113C439397481A8A5AB3EEE1EF9A2DD798 +E9CA52E836034C536C07CD377259B9B72FE7FE68A1FCB8D4707B223AA693CCEED0AB7D97FDF90D +84DEE522697C071AE0EF306ACBC192AB9A9FA397E6CCB97F42FBA37818A844FA045AD2BCE7AD5F +0731590C7A26AB951EF94059198AEEDBDD869096FEDF9EA55D22C23EB6E4ABDD469B3155CB9451 +04C51EA9717EC395B7BB64E2E4AF5D31AB85876028BC78E0CD3BDBDE214CE56F5687B3009DAB8B +0AC6D75B13752782F56C590AC4FAAEB6DA1462988BD69173190F7A486077BB49CBF5FFF612B0C9 +57474F5401B8B1E8F240EC3F20808DCA2F9F2D810A07498297DA66D9AF329991DAC432BAB46C01 +F1B17BF8DC6FFF54F40397026ED09977520A41BEB1411F9334E8CAA93E5CBEE598A88A01B25601 +8E529F173153A67AACDE4A8296BFCC5B88E6E20B29D083889C18B4D38418B12F8F3514FC95130C +58A0891AAF8A9C4457603EC6FFD26F0E1B957E783D4F309F4B654980C22D29CB8646C104621282 +BB301829676E5F3D07F090E172F9A74E9E36103D3E7FD4D7AF0F6AFABCB9A21250BD6E07A1AB03 +66719B2AE6B8B98B6782AC722DCCD0DDE69FE9E39293130A206E9CFD64184A589C4893C03375B7 +D7094CAA426EB2DA5FF79C2DE45F5893EE2AEA388A2AADBAE87FF70B629F304AB0D81D41F44352 +1FC0BCB558119C9FECF5C9EA1A876A0A06610CCD279BCCF198AA606A2F4554880BB1BE38A91B55 +48D503EE76A3ADA011EF1B31F25B3A6FFC1A6C6544431CD1E1DCC06789C88584FD1878D3F5F565 +3B6FBB4B5B4795779F976252E9F3F09A482F9C8DF00B5EDAD6F0BDCB811E622A4FAC70FC0D6F6E +37625FC077D143C6AF7E76280B45F241C2FB62951447F84012AD8401C0BB7B794709B48BA3FEA5 +D85AB7D9875320A13BE8934E8FBC8B353DCE93A16979FE3A97D0E9A8B5D1F7DF52C6C18F60AC87 +C8B17DC80235023652ECA4275A901D9468AA7766128FA157DD051060A62CA5EE8235E79CD8D5D2 +B651066E2D8481A717EC08FF985BCC2B4B5D4BAD6408B0557285903F26BB6698710CEF6102230D +042EEFD6069623A5003CCBB8B71F6FCA85A88347DD13459AEB84EB4802ED2ED98D02494CC9CEE7 +FF5FF87319C591C72CBC3F43DC7DEE2BCD0E96DF6EE42949CAC9A7B7CFEAB55D3473DFC3724105 +81D8C7CE893A1C374D933FC9CFDF462481D98FCA27085AFDCE8CF359E127DCC1EED7B558FC6980 +813EFE260620D7A7BAD331651C09B2C7F5EA13A7D095368B1453C7E14E6F6F4C99CEA3F3F51256 +77A448D040F2D496616C86D2F6774F2307163FF9C0AB8AC88B20A6023E60A2C8B63E1BCB6F59A4 +2D24C107DEF5875E7EA1062646DAC43CCE029F56E91A49B0BC6873D1796DDF7A0117ECC41DD4DC +792B5B97077E2AB5492876A547074A73D404CBA4B5C0FA1938349B7C156FEA5952AF7DAB0002CF +84A92D63E38C0ECAF31FAA2B2A033A3D382C3A4416F554E4E00100D122B2D75AF0BE42C42C7B1B +4E515B81F4EE8D3F9C39796A63506223415C2A55FFA26EB9E28ED5EBCDC5D2E83A3B27DFC8B6BA +8DE74DAEC630AE7BB6DDB12A42C1F666A05EB18665EFC68FCE7DE3820485FE9159E35EB35E2932 +62FCF5712BFFEDBC974E5990BAD0D64D820564F54324323B31ACF948B3A27F4AC397A958864268 +5F86D44EA685BE3CBF1DC01C293397B8E3E457F619D8B6A85E75D838219CCBABADF23C0E4434A7 +787DC52DB315BAE832819F2973F11C045A4662F51256BE3967C3231CF42AC7DD045786B27E377A +A42DAA473A697EFE962CEBF368F10E0F3AC73EBDDBA259ED770D8E43F8B39175BCFACFD1E31DB3 +88950902A66926774EFA8EDF9649BD8AAC64702EA9ACF5717B5C91B4C150EA2A98CD128235B6D2 +645FED4EB709C91D4F71F2E3B6B971A378A7B3499773293D47B59AE87AA1F3220CCC3022066508 +5965385DE8031B42CBB2A2A0FCB9A038AE2BB898991A476373CE559ADF3263F47D6C103112A5CC +E3EDA9EEE4C24079F0EC6F88E9AD54D1629606C97F6EF26ED0225718AFAEAF1A21C712315C03C6 +9B019D238C17AB4FDD0A52E840E28C6D83D6DBC7F04051CD5F8A61654B3037FDD8388C222A55EA +4A423F99635EBE452DB660388127204288A88BA9E08B6C31F92960CB9B7557CD754A3400D48F1F +33EB9C6E820BA19A66FAD15A086EEDCEC0386DDE30E8FD98B3A63EAD8AA52656EAEBF9D3995C08 +083CB2901C8C04E8CDDFA28F89FA371822652E71531782D1388AE97BC059278DCB3DF5D175DB21 +FC34D07B6D3DD38F44E6BA13133D6E2D54033C4A77F0A4B282069477761F5DE689F4EA7F734BB4 +5C0C3AD0198A5C9F9AB087A38A0F47BB85CFCA1DA6E818ACB5B1D9B322EA1A67681427A2E92A5A +72E27208D406D2F24CD583EB914DB7615EA17B0F471DE94AB404502DA4CC394ECE88024B6AE998 +CC7FF2D1383E183DD4562ED30BCC8BB6ECE442449BBD57E546AE5E6993E2993A9E0E49784366D2 +6A0D3A301F81AD2413F564C4F36F7F8CB3F01E1BC0609F9B6CA4051E30485865768C9CDFFCBC7E +8E5A91904F43024638C4D70994F32D75845F9F865E9037491E7AA0877ACEDA00AED81E74122F94 +BB270ADAB594F5055D2B856F9615F1EDF02AE54BEFF75D33F53589F82AA67139C454ECD8077C8F +53509A3151A7EF94E80BF03F881A0553D321B41CEF83350CE9B40F8CD187D37F9B0C0D7537D498 +BBF7ECE55A8F58FBECCCD0A67EB9D86889EAC4E61CD90C40992344C0D79FD1C8ED6D7272B48406 +81B99C5A06266FD81B0904D89F1CE6CD26D9844358263E5385CAD345FFD28000BD449B1391BEAF +FEB2E5EE56A63637690F48105EE0102E398868DE9D2CB1246234605FB2A5165085370E4EF4481A +DD0BC5214BAB5055AEF44E54A56E884F96CD9DEB53F44D2BB3D29839F3780655909B8F5968B491 +83E5D0978A1D3EF4A15D97EA1D3F1B16FFCEAE52E18F34BA676F2D478A5CE9EF0EBFFA5E0E8DBA +AF563359E5B0E1FA0A861DAF2F664F78B338999DE20CBA9DD87A91C7FD06E12F3FDDA8EA27F945 +DEA14960910D04FDE66293A8BFDECBCA8F5D1267CCD28B5161C89CEAFCE617CE08496BB3DE963D +34AF77B9BF7533C46F910A673D6DBC905C11D166B26809AF418B3A8CC243E92F7680B1B02A56F3 +355FB37EBD6F1CF721BB8B55199F04707C9947CF0747A124D6136C18091F700C1DAD3F30CADD8C +AB54C79ACFDFD261A443C3221174F869DC157F61E198A69E6267C9B48E78E907CE5FE7FD4B53EB +9189094E0EC33829F7C27C6AE1CC732C3D191D522CDFAAD023A181FD7B5694F0A65FCC20F51570 +95EA8DB3323E2DD26FC06CDCE01EB98A5ABCF0DF84F3A14DD67EDC748193627EB51C8F6692D45D +C830F3EF7C823BE662184B79F6B523D75ABB3E83F0BD78369669A26728BE6B6709A835C3299A54 +25D05DDCA7CB954F4B325CB2E5E6C28C50C59EB0163915521956EED1A2B2DB82B22F7A1B9E9CC9 +F40044CED31C72E9E85B0244EAEE92EE90CBB3A8620A53F805E9A20A6A0FBD52DE2E75ADDBEB97 +3C3A794EF204C634F464E0725FD33E8146D31A976D305EEFEEF70DACCA2BE227A1689BF53D61AB +CA013B235A2E921FAE0BE489107B223E99209B7CAC5355A33F2F8C04996D075E18007DAA3C1319 +EA66E669C4198838FAAC9903B074510749D671308C9BCE1D173D6C296AF100581E501106717F9C +59E3A29537A16D376D9BA8DA51C3FCAB70B0D0F61445AC05758F1B579DCF0B5CAC6738FC4C47E3 +6F5A3A27AC9F19045BE6B3D5482E2D30962C3141E12AC96D59E6D43448F85D1999A39827C3DF8A +933571A6585DB257603471CE0C77950F8A7D3C25FD60888A26F6CD77281BFC5F4A72394ACCB7C6 +A9894B6015226109D1B043004363DCB6CBE56449917861747F1828E6DB19F835E328524A69464B +60DE76F08CA1FEBA7DD75D78778CF64F0050E225DB6A44C785592459BF38CC075ED97583AF0E17 +EC67B74D752E580533F98000A39CAA0A3DEEA46B89D864E22115A084F97B5B0D3A050AB3ADD338 +080096BE5A156EA956947EA2B1BE6C357BB1901DE7FCDF02D78B647E1FEC144FF3C8A7711A894A +1E7D849A60E0860EBB256E15C5C995951308CF30F1A87E8D3E678421B7537199E27270B4755DB5 +536CACC90C4772CE0CAAE1780BC54ABE0C3BF2627B64451DEEB875362F3B47E95577A80CEA03B3 +C6284BD3623306A66907C6EE6F4E16617783DDFE3AB55448F80A97E8D5CE6B73493B8426DD163B +96978D8052FFCFF0B0CD91F1D366FFF67514F92F6B1FEE64C3C023EF905C2830BA7BB7CDDD8532 +F18CD1BC5EEDD4E57FCF043625483C58AFFFE5EE5159F1707BA49760CF3D6900B2A6C9B64EED82 +ADA8F0B96D7BD624A1AD4B3DF0118E86B98B46D72A0744FC895ED2248618E6A349C51A44A89C6C +BEC27E525FEA388BF4A52D963AD520CF9A768B8E1BC6345EB434013BD9FCF6FC5A309CF7953DF4 +E6A92DF3FBEF92FB1A4A7FC4AACA0B95F070E908AAAF4738227375A3FEA047E3B4823BA8FA26A1 +F497936F94ACBF1920E2C18099F154F2D74E50A5FA623B2048920B7E0AF9446EED9C8D4B737AAD +85515672B6AF1543E5AF733C178FF90B89B6EB1E92162EAA240B158A78652680F3509F9C1BB21D +EE46DD3B39A2D17029BC29E260AB570B29B02624F152F6D56DD4F2FE3DBB352A3CFC4AC0534F45 +E31ABEB8C099BC8B7B829F6C7D2DA0C2B9D58E22A8A8BF73D9EB1CA278086FC1FAF212EFA755D2 +96C938CB7EE5AA4E007EADC88E7205FA0874D44B769CA1E0D757968A39FCF4F553C14DCD9B34FC +5246D3595625943439F4F876FB6A52EBFA06056850F5C92D434FE017FB3D4B0E9022B2CD28C3EB +95F084EE99911CE955B5B93196BCBB65C2699A0C942A998F785A59B43C8F8DD87BBA6107854FDD +70B3763161AC79C7CFF4FA36EACDDABEA6F5CE84567AF95E389F9C2CE9E972B540391F167369AB +CECA3C3D9967D41DDE6F455445D686B3B8223C6E8727BE334A73EFD62477DA3D89DE65F3EBF81C +4DACFC5CB89587AC9267B8670AAEC340FBD51971A3323B17978E110745B84C5E6FCD74E132BFE2 +19BA1D812A645002FE8827DDEE54546099B47E82F3935006F0B44E174B675CAF24A8FA4CE10017 +0F34E1914F3222DD851F0A874650A14866DD1EFEC6A2D97969F4E3DAB9D449AC50B5E4524BB5AB +96932237FA7896A5284F85E592B01D20C761D35BA83B4945F5608F30A77A84D918B6847516F96C +F351874BF52EFFF38ACCE88174634AB0338A377E99BC3136A0600362EDFF0E1D42F8C5F984ADF4 +AEA2463EC1B3DAE2A6CF86CCC2AA846C7EF31653605619C7D0573D27F914DBE344E5C11B697154 +347E09F54C4108A1D71FA878E4B07D35FE056DFBA2D7B99C8F01134CEEAD849AAD3AF0CB60505D +519AFC82A4BF5B342575B774D88173F1BCF2D914026D3413FF187F9C8FCE3709CF0F7E9A793483 +876A4FD3F0A29DD8DB7F470E88DFEC249A91BACCAA65AE26EFBC9CBD550A935741A5501021B9AE +064596C775BE5967FDFD3FC595EC5CEC2F185EDCF11492E76C8EB22CF5C91BB63E9AE2649D8A5B +CC7A47943E40E3B473EB5E792919F03F09688B71ABC0B0E2CF64E1DD286236360F7EC828CECDE7 +64CBEDB243828139AC4C72378B3EAE67D43CDCFB95DFE17DDEB6C2354FB8C52ADC0A666C40E2A0 +4FBCD8C01936F04F1A983B68462205765CC6E782A2F459C040958CD16D8AACA06E1A7BF14BA6FF +D570675A54E431B2D2CE78D008F082693123D18E1C3D27171DE5940F63C3FA5480E80B5727F684 +EBC48DEF479E345D2C9003481AE5A7FE20A1EB0CB422FD2BA07A3208901CA8D782DA95F0A6DE2C +CA3DE689C498A10CB8E5AF0A2203C5C147BC17BA14B4C59A34B9351321EFB281494423D0B784E1 +622E2F3EE7591A23113B3B90D34D824549B3A0B513B8BFBAADA9E1C4879251BCA93E6C40A8731D +19B411F1FA3C3F3BCEB63F5B9B8E868D4F0B966AA867EB2D4C301FE6A1D35159B4B7BAF8227D6F +F7A86BBD70178E4EF798799F4B43E296A889120BE0828EC211A38BF5A5AAC3C00494B0AEE6ADC1 +B8FF56733A3FAF015E6BA38FA59DB63FB3C9BA355E5F2A555903E4A22F2D1F26AA89C21A623DC0 +F0D8AD654C3FBC752FF21C16321F5027B4353F6C12FD340D272C2D4F30ECC9B58DC4A42F71B954 +B2764E077E0CEF1FDEBA5A6A8FE14F3AF0122C0918DAF87B157BE507BBB50DA1F208534607D906 +D45CA3444CE68FCCE04739262BA5B3B0DC0FAEADD86FC94FF14548C98592F91F89948A173B76B0 +8D2F3F845DD251F09AFE656F69D115157309D537E4F663CAFFDA726A5C62DF8EDE1EEC7916F86E +CEF600BA02901BC5A56086478A867024C58A4D8A631736FEA04F09C9DCB4B3EEF89A0C5767B3EB +8B0C2E5D08974638E79EB2CFDB509E0948BC42E1A9A29DDB09BD44BF28186C3C5AD4629D7B1396 +610782E464BC4EC12B2C484F01250BCBBECCEE474F25DA98AC82583467B62D51689EE98AD2FCB1 +AA13D44BC1CEE4CFEF34D37FB8789AF5BFA59D05D15449332B46347A7CD1F0791D48BD563BA6A0 +876C8B00496E3947C0ECF78782945109BD9306030CBF511C2B4FC1E28868EED9E2039002C98F20 +43828EBEC486919082BE71A7CA278361D0EB9DD7E21AE9CA80EFA147DCE160ACCD39924F45A821 +D89721CEAC542ECD09E76ADD11FB1710804C63B1268FBC89CEFD28314D9D3AFC26FAA897B3B7E8 +C882C4125D3DF9A67E2DE27A0245D4FD9075DE5D7FCBC8E48125D8BEC3972FFE5F8ADEFF1258C7 +5506691E5DA81359C24A978EAE086E7E885D8151A515F15A475FDB038946F7D369644279C2186D +ACD69FFD922EEB5397F5C3196548CE35D6E35C4DE6D95BE566665E4E0EE11EA43CFB9D0133B5E9 +D2A6656AE1861C158AAA97C48DD426205842BBDFAA90DA4D5EB11EF29C24898D9FE9B29B2AB913 +2A774418F0190C3D0FA29755168BFB149E0066DFD3BAD7FC405B28A27B2DFB2A356CF6F86ABFC2 +18C7E164F6F0D6D4CBE011E77EE8A045A1D1134E115D730D944CF34248C1020E15955661DFB6A1 +687CB54FAD1AD759B7EB209E6A78B4F3B4F049258E799B6FF7243B26B573D2B26AFCBC36324E2E +9AAF7206D3680EFE913A6E9F4CC8CC7FE5FDBE60D262D378A123D8BA928CDD6651999854F3ACF5 +126C00179347DBDB34954378AE5A08A690A98413115809C95A6142A662DDB89BA25B6026064A6B +A7D85963FB4D10C0BA1BCF3E73CD597D99C4CA47CEF4692A0EA5DC89C2A92DE5630EF15819840F +10FD394BA987AE798BE15A61AC464345E203B06A3ADD25E1607F9C750887F5E7ED7F2A12109914 +542CD396392738C7B7A7DAF58A7823414D648CDA083CAF2133CBC0318CB11464411F85B8FC813B +4D07757D3989E1E5E063F2D8E07E50BCF85811766CD79210C6AAFAF085C74BFA3DA37B45386A6D +C83DDCFE3DDBA6B3F999F91406D35374E60CF88F2920208C1D2A162CCA6B27984D905F3C271524 +1FBA18949B6684E3433019D3C8B45E454C18485E54A74D196AAF9636E85D179E1B5F0544D09BE1 +8855F32091CFE26A425F114C556B995935F821D811E0E5CCF779764DE6EC47256481B25EDCB409 +E7A1FD2D72D6B5DD56EC9D4474CD5A9660972D366649D840986AACAA04765435F4EFA7C513A10B +1B67FBB112BBD10490B0BDCF5E5BD4F80787E43895D4EAFC807CF18103A4EE315EC4B71BBB6022 +FEB88DE20D8C7E0244B95015DDD03CB93417A691CED38B37C27BD1C510EC50E2D82C5ABD32D24C +29C30888A2E889D0EFC93945681CA613478CBBB222810C4E4478915E598628BAD3A8E31402C1F3 +4653671CAFFAA244053AB7174E8576085F90019E0DE486014A115F88DD9DB9B10E91F129DD5A6D +00AA208459CFC5A7A2BD1095DF24BE5DCBCDE96D79E90871084AE04C1DA8DC2459FA0E191FBFFD +EA46B20240E40B6467A2455C72427B119BBB07C5725B823C112E734A09D07970748F0D0D969B75 +1BAF2451D346FC2C56122EDDB88287B1042B9F24C933F541492D0683DE0B0325AAE667521F66A3 +27C863F4AF7F4A937F7BEA60B5299FA5D170F9413A2E6EF5EF70484C0D861EE719126A942E0262 +52279876430581F0AF1841719DA6E4D8C3B932837FBDAA3FE08C18E1C89AF300E3AD7DF34FB439 +9BE9A757C830E18699450B98B49EED738C09084CA5E06DEF86BC58359DD0D203FFB11EFEB043E3 +7B184DA9B71C1AB17A9709FFD273432A34B3D924CB2F29BF5DF84596AD447A049E3A451131D660 +57FA9D4C24BF824D43DADBA7D1B2926C9CA62D8AA8C29FB2D00B0EAB7322873FA5F9E2963EF721 +6BEDB2D97548F6C40E233B25CB3785258D0E7FC096ACBC0FABACC39DE29BC0E770474A541D87AF +69D3B8E9BFF00AF11DAF9DE908EF674079C7975D7443F30FE21E02B73FF15FD44C619EAA8B9BAA +889266458C136A3A92E7979EB53A04EB00 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +%%BeginResource: font lbtr +%!PS-AdobeFont-1.1: LucidaTypewriter 1.001 +%%CreationDate: 1994 Nov 12 10:47:10 +% Lucida is a registered trademark of Bigelow & Holmes Inc. +% NOTE: This is a partial font in Adobe Type 1 format. +% The complete font in fully hinted ATM compatible form is available from Y&Y +% (508) 371-3286 USA, email: tech-help@YandY.com, http://www.YandY.com +11 dict begin +/FontInfo 9 dict dup begin +/version (1.001) readonly def +/Notice ((c) 1993, 1994 Bigelow & Homes Inc. Pat. Des. 289,422. All Rights Reserved.) readonly def +/Notice ((c) 1994 Y&Y Inc. All Rights Reserved.) readonly def +/FullName (Lucida Typewriter) readonly def +/FamilyName (LucidaTypewriter) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch true def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /LucidaTypewriter def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 54 /Aditi put +dup 35 /Ahmed put +dup 37 /Alasdair put +dup 39 /Alessio put +dup 41 /Ali put +dup 43 /Alois put +dup 173 /Ammar put +dup 47 /Andre put +dup 49 /Andrzej put +dup 51 /Angelika put +dup 53 /Anton put +dup 55 /Ari put +dup 33 /Arne put +dup 59 /Art put +dup 61 /Ayman put +dup 63 /Barry put +dup 65 /Bent put +dup 67 /Blair put +dup 69 /Bonnie put +dup 71 /Brian put +dup 73 /Burkhard put +dup 75 /Castor put +dup 77 /Charles put +dup 79 /Chi put +dup 81 /Christian put +dup 83 /Christoph put +dup 85 /Chuck put +dup 87 /Clovis put +dup 96 /Curt put +dup 89 /Cyrus put +dup 187 /Don put +dup 255 /George put +dup 189 /Heinz put +dup 179 /Hong put +dup 178 /Ivan put +dup 56 /Jacqueline put +dup 57 /Jagannatha put +dup 58 /Jan put +dup 60 /Jason put +dup 32 /Jeff put +dup 62 /Jerzy put +dup 34 /Jim put +dup 64 /Jiri put +dup 36 /Joe put +dup 66 /Joel put +dup 38 /Johan put +dup 68 /John put +dup 40 /Johnnie put +dup 70 /Jon put +dup 42 /Jonas put +dup 72 /Jonathan put +dup 44 /Jorgen put +dup 74 /Jose put +dup 46 /Josh put +dup 76 /Juan put +dup 48 /Justin put +dup 78 /Kamal put +dup 50 /Karl put +dup 80 /Karlheinz put +dup 52 /Kaspar put +dup 82 /Kees put +dup 84 /Keith put +dup 86 /Kenchi put +dup 252 /Kendall put +dup 88 /Kettleson put +dup 90 /Kieran put +dup 92 /Koen put +dup 94 /Kristian put +dup 98 /Lalu put +dup 100 /Leon put +dup 102 /Louis put +dup 104 /Luc put +dup 106 /Lunjin put +dup 110 /Malka put +dup 112 /Manuel put +dup 108 /Marcy put +dup 114 /Mariusz put +dup 116 /Martin put +dup 118 /Masahiro put +dup 120 /Matt put +dup 122 /Maurizio put +dup 124 /Max put +dup 126 /Michael put +dup 177 /Murad put +dup 91 /Robert put +dup 93 /Robin put +dup 95 /Rod put +dup 97 /Roger put +dup 99 /Ron put +dup 101 /Rudi put +dup 103 /Russell put +dup 105 /Sam put +dup 107 /Sami put +dup 109 /Sanjay put +dup 111 /Saroj put +dup 113 /Saul put +dup 115 /Saulius put +dup 117 /Scott put +dup 119 /Sean put +dup 121 /Sebastian put +dup 123 /Shuichi put +dup 125 /Stan put +dup 163 /Stefan put +dup 171 /Surendar put +dup 188 /Vladimir put +dup 45 /Will put +dup 247 /Waldo put +dup 215 /Wilfred put +readonly def +/FontBBox{0 -211 743 940}readonly def +%/UniqueID 5054489 def +currentdict end +currentfile eexec +AD776B2EBF901A49F071BF30E3DCFAC47FA0F916EC503FFC9EFF58A2E5E6ABC78B442C3E49096A +372F9AAE7622C3ECBD02783028DD91D32C0749B44F46D712056235A4901EE1E3989B3DC1451624 +40AF8B496D8B010216C5D0E3D6D7F34AED88500CEE93E2A4889C2FC011056B0222BA09F5697B86 +A1350BEA78ACFDFDB589C8D82923F5F8AD8C1480A7D7EE8ABF2004A86A75BE914F200B220B02DC +E0C7FDAF4B89502B119D1FBD3035453DDB3DC564DD8289E85D637884AFEAAF7C6FF38A32C70EF5 +C1B638CB40003001895712A251C27020F3B8D9166E77E2A69E1FF83886E0BE4327AC9142301CA3 +F4DB60613570C39367B465BD2E11A593DC63EDCC1810C1F5EDBF099DE46A7BC166F52311BE4A2C +DFFAB7110560972AD364AE5170A11FEF4E1FC57E896F7B0FE2389F3BE19EB48DB67AC766314064 +174EF2E1412F25E41CF45CB6990732C755064FABE454F1B1D5EA703331A09A7A9AF323557024F3 +7B24CB30C52216514E014870A174249B7B1C05638083915C9B633E3FA00DBA2DCCAD433B078A91 +E405EFD2CF75CEB10E524FD95A2BBFF9EEDDFE3016F6C2D3E901B81B723E4F422A0B1442A0E63C +CC52A0E72EDB5035D945A2FA1441886E56D2B10A7B5950BAB79A9653CD37F0AF255B3850E1ADE0 +9CFF282133A2E30770C76618F58007FC51C72485EA377798C5C8A00DAB46815939973C8FDEBBC3 +7B5C966BEFCE797755B7E73A5E55CC69BDAB56C7E658C86B8FF147630B6D222993D3AC6AD4542C +078835BECCF377ECA61A10F66C41ED8379C2FCC2A5380AC1CCA64D05CB08109D76CB1901D00BD5 +4761978C3481B305877CEBCD436944FB66AF914A1C8D2D125DB01ACAFDA9A8F71BA3CC83FB11B1 +6ACFFDE43513DF984167288E886247E02501210DD81ED939D5D18EE3EB3644D5EF61D2BE58B7C8 +106045C8A3684AABBF8EA6EEE01208F99F865E297A03B426EB16D44B34467735A1FECECEA719CB +F2E24F2A15395A18EC4F6A3990D9EAC78BF523D5911AF11C3EAC620D859B0B642984658A94897D +4BA3F1F622F2DFB6861BC85CEED6172393058E882721A9B3D2E00437CF7FB8DA4D1EC8CB1217E1 +697149B23FB1BAE92A7E0FEDA0374AF59FF5CD141426C498D2749C85FA6E6E2DD07EE3FFDCEE86 +DC3F0225A5EF81DAB98FA26C89B1B020F884D485893B5EFD6019A149D82925F3DD9694A1058065 +EE57C94BD63E5DCEF57F5C3C850419EAC7C4BC2FB81A7D0BC322CB0F88943A6F507A2FE460EEEF +A17DBA7B0E7493890299AE86ACE258EE4C7EBC2C9713406E365A5B30FB045AE0163723667C9322 +B05319D528C8C67AAEF79A6C34459311764B75BC63AB5165F831F1857F6B1D6801E39931FAD9F8 +8B61B304696763D30C0B58313D31CC287EED59C97397E8C0A748426DB6C0B7C4CA57A43E7E27A9 +A123734DC7EA137F307B9C9074B908E53E60F99E98CA0DE14A5D61967727709E1CB009EC9CD98E +9D796CF35B7B1FF2536FF8CD9E1C24B7CDC0E89DC29BEB398CB420DEC645001D90D59C7A5B5E33 +20425FCCFAA23ED880C41BB82A8CADDCB8B5BDB1D57F414F380BBC00B6A8B9591B25AEEEC69B64 +D671A078F39369EDA9E5C9FED9D179AC25F37A4E4D1E438B180B24D851812E407B242F932D9D07 +EE2E42BAF2FE9EFD338345C15F1C8329E91644DB1EA96E6F45871D8EAFF292286D7A70281381F5 +82CF13F5F987F423463C2DB96A23D3D9CEF5B4636A092BA8FC7C97AB42BADB4DE493C0B0A54C81 +82650C094D0B4591A2891949270492240334842911DFD640AEB2B5CB036BEEF59CEAAE37AEEB4F +4CB45AAEDEBE062358058A0D697972BB11E9F30ECBEAE599E404C7BC4C93FC3C2A604CF7F9183A +96962D3D0F03FEBF8D7A171E9537EDB0F8769AD1A442BBEE6F003B87F9EC0C4DCAB4C1BE74EF54 +73FAD92638E347980505361CA70D6A28EB18E83ACCBC73C481D4B81F62EC2FB250696E436A8788 +2728E8E960E09A330121492079CD349F5C8FDF0CE6824495FB17A3A97D7C031F9E8B50D10234D3 +C02792AF0C0BBAB393968B49EDF5BD4F84D83DDB9500A9EAE7EEDDA7CEDFC2A6B3B71F885487B3 +31028361BDA2334E83820C7E73A67B200F8E08B742DC3BFFF6E363AA1EA72DB7CEA77826A5D024 +68C8B19EFF5F8ADEFF5235AE6AA50F43C5F2EB56AFA58470FB2CE038D35DF1FDB5135B8CAA9F3E +F27BACD9D828623636044D161009F558132A6B6DF4AE9CA3EA9DCF94D961D7CB962C4EA67E887F +B9D7A3C5F91166D41C8427A1E0C8BA49C21E968D52B92BD7E7B1F5B1800A27F3F7321E3D200B77 +98D3F4B0AC1A396BE11D0C919F55CD8AF1406321E8EEF169B785AB38BA5AA61A5EB09A9F312697 +92D98DE98AE49A1308A5706738125DE51C98AA3AFBBB10124FFCE47F72BA6A1E5D96FB5BD8F989 +D1AB41DA7C2C71FD1C02CE697C81A0512182ECA66EC14CC8E473378FA9EB3927BC9EA91B1BBA8E +0C70BA78B1F7DB3124246AA9E4E349421623DC408D756578B11218BE2D6B613186D1D094179200 +8960A7F1B266D7C4DABF9081725EF2E5806AE27E5D8E81CC7B98C9CDF8D319208DD7A75C2B0B1A +7C13DE5CA9912EF40371D9F415840ED99AC446E1EC958001243B0C39641846EE67E79217DC6AF3 +02891C024119B55AE58D14B28B68225733BFDA7BC4D54EC2EC58AEF027BD34EDDDE2336EA8B34C +63EAACC4D255340CEB8166FBDA86587E207C06C6F804C366822435388ADD4BDCA7E345DA3C3912 +16C19BD9F424C5C5596E3D1BF1C6601D5967942070320981295BECA7EACAA9017B29EE70538768 +5DAA8B31D815A53E446EEEB107B369B824C97D5730A4D28ADDB131FA243225A69DB5CC61C9CB21 +018510F1930F3AF2AE3987D5110BED80CD8B6BF24998AC07DFB9C648B0BDE300DA8853FCBC3C4E +C47181B1665670E4809D03B0FEC298D1E22937C45159BF0E1C3278D727E40CD00A3DAB814D16C0 +453C20F343C8767778E20C3E12A9C0F30CF38F782C91B678FA8B73FAF9AB8337EBC636E05518DA +74C57B6696BAF384BC34CF1F50DC361C2E745A9906DD87BB93310DAEA23BCD0AA967E8C062EE03 +F573B67C6DBA52C3C78E4A6BC9A879A97924F26EA053CB90F1AE4968BEB209B7496B99E7102390 +4591EA1246F12A2B401C36C3D585A3C3E42E95316D7B3BB95509256DBECBFCFA8182EE874AA624 +B74C146E164A7509867514349FC6ED41A0EA7375C81E58CAE6AFC5524E4506458FDFF6B6F94A50 +18BB41CB3BFFA90AC6A605B372714552AC2CABD4BBB9400485A50E1122F69011BEFD2EA53EF4B5 +4DF3481CDB4F97F8BBB549612C3EEF4E860143EB2FAD42E5B9D5913E53DAE0B3468B191C8ED4E2 +4B5E8CED287E7012FA0D16B8019EB890D9A8BAA01629B0CEA69402973EFDC1618CA995505606DE +DD18D0474B4E08F7FFE947C323A138F944A950734A4586FE82A08B7C2967E67BC975B875A2AAE5 +05935906A0484CC6C2478EF1EC03E885D86CEBBE5101101C11B7B8165E132D2B427B8583BCFC89 +85A7BBD5B56D12F8C11796232B430613A8B4540BF45C97B6067A74BBFBF64851305257D1BEC901 +238A7303E12BA887117301DF80559342A4B551F8189E9DDBC5251D2D384831269A092ED1971292 +2396105767405896450A1F07F6B660F4BFD98369836EC514D418E4ACD93095A6AA2C44D0912217 +F48B92A5D7CA170A6293B0A4139BBBB39131E2B6F5CCFACB550AD74DCD4D466AD9AF69A409D09F +5ACE8C98851C20E19E4D44B1DB30905B9BE08AC52E0A1548793C591CE0E29DD2B102756822B36C +6E4BC505003DEE549BBAA843BA5EFF252F0A5E4CF14D1EA86F46ADDB6EF52427E0B6E2861583D0 +885196B68E53D9B72793100CBAF160F7ABAD3A8E2887D078E7F78FDB1437F0A58A20C7E300ABA8 +031E30B35D34628DF6E8A9689F2C5A779D51D6B673F38730E2C28CD4822168D037138B5DFA7A66 +4318B681D41864AF487BDAC6E635996D21C5EF1D16BE5CAF809C6E34AA787121164292ACFFA289 +15A115A11700B26B0BECD9B05A4CE538438BF67209443B4ADAB5BBC40F9F354A90CE53F0C24AC1 +F2C37FBB9022B23FC9111E292ABA30410005355D49B56D38F4C33C37F8A891A88B2F51957420EA +E5D22618FEFFB7C1A6436E75E4E6F4F8B3B847D4CA12D3D925A3F1F66EB6D87B19A53042FC860D +2A57D2B2967F001F6B56DABED79E82D33107FAD1F46172D4EF1A52FFBAB95A33180B0AEBECB34B +BFA4DD57AD85FCC81833CECA2A9D4667923A57CF8CEA991565051E3BD29DC4CAAF8B8DFBF3A76C +8EDAD02C5F5EEEC19D462EB48758B2440329F43A38CC21D68D26FC54179ECF102F15AD9AB1DA75 +046419CD4B0FE0BB79C77A72CB9583EB321C978C8F68A3568C52CF0A85C938A8065D18DFAC5C2B +FDC4659C10A237F09B924DDE6B6E09EFB77C158F9DC22E6310ACAB98218FFB6D547ED3D5590541 +AD5862078A9CB34C2BB08B4C3E620E0802E99DD0572B36E7B7B9DB269FBAD73F7A49F711E2F790 +2C0F15494D642FD63010E3F1B5240ED79B617A655D5FBBB5EACD66B85F02C54023640DF5150BF9 +88B62D82E068EA4E35824FA098321F86B68DFDEEB8F575B85AA76ACFD6FE55B40D2B141DCC1B65 +DDDAAA3E790F6B0B491E80DE0277D25D48DEAB2D8E48A004C36665468CBE3BA496C57596AB679D +C80E9F744FBE8041D3AD6F077CF65B0612F180E8403CB8D58BDF46FA5615F5BAE1AFE3959FD4A3 +EB1743ACC7DE83ABB701E949613BA573A67B4E9C816348078B2F857609582E5F144BE599EE4B15 +85A08F81174FFDBCD8AC2258B7FF161EB3A1849054B66934DD76DE536680E3AA92EAF1985D5B56 +C68B693A3EC10AB0FFB2B88609E8870670D2AACBA8B20E9FC5ECA607D3D90167453BB172484A55 +141AD585EF5173AEF115B5BD89B653246AF9C2FE922A8F56B78E797C497318FCACD97E8F33627F +579C8D1254166906EB06F96DD5003DB43878316E2EC4109E8FCBFA4B978AA15701BB16D633C2B6 +502F6566AA3869B9C94AB303617C3787C7CC6CBA808FE9C4E67725672D654E075657CD646E26A5 +82C68B47CE90C154A51CA289747585668A5A2D4D73D97E730FDA8F9B648B685B409A742AEAFAA2 +A818D0897970766B186FAB6836899A1091CD3B9503533334293ED15CF42143C13CE2D05A6EAA2E +D1D12A3DAF28F9178B9448E4EC2A8FF6CADBFBEEE028AEC622D3CBA1118E92C98C4B303F8588A2 +3012067D2E1481E68B4ADCD6594737FB2206763B5023A0148BA31A165DE5384C63480CAF82E59C +28A133A775A6E7E3A5A17CB8D9D6A3C9F3E638F67CE5D58926932DA3A9DEA6ED2CB7B5BBF07C6E +CA417769D07B64A534906E5CB96DEC73E8093209CD2A85120F6E3216B5171B4BA67F2538785907 +BF3B8A912CD7E6362E528AC47FC14F2832924FB512259CCE6B650AC1730C5E531AA826D86CB8A9 +D9AD673294D4F1D3CFDF738BE5BC6C9401A164C6E7850794ED6587D592F44D409855639AB72C01 +6C55878BCBE20DEC3D4C15B0C0D47EEE44D6A4E91AA1C297D25A44378636BE4EB6517BD486DE12 +950F53AF60D94F28419AE67BC2316E26BA82ADA180577C6CE2A56FDF0C1EA9B9CA2EF55A95125F +D667870226ED5D780A34EB34F468460EBFB8152024F200E40C6D42D5C5513E163C02B82C42FBF2 +E4433B60344D3EBEA637C78F734FF3321E743437F5AD1B92429B46ABBDE8E115AEE2904B3F3FE2 +369679466A59EC0433FDB261E8B2F227CEA66E4C57DF67F92284F0332A4F4E46431F282EF59975 +C430121C5E833A8174095118BCF0CEC899EBA8313C3690E85225F5212ECE4BB82902B0C662D78C +37747BE77B81F47C24F088F5F94A18BA923E54DDF65B9DDF5E9D64E4D8B086BB808CA791A0E8DC +2DBBA31CD58D21489EB64B11560AF93796A8E1E206DC7C15F4310FE985E47A929F76A6BC154FF4 +2C07B6F96E03F1D6BEB10A0E053C8C7DF0692929D1B62A3074DCAC64B1A6821FD25F6B434BB016 +E3CB58286848D04B8E743C400D477FA5F2130352AB8932CBFDFB9FB5C6C6A6EE9DDBA6DC41589A +89D5F223DEBECC40BBFE5CB5E5DA18A511450C6A679D10FBF99F6A391B11189B921246FDF6F552 +5083A1361F6B232E1F5A25F5E1D0DFDB1B812BA87143407C8ECABC78E5C7AA0531293AC7909A8F +7E27C5A87099723739C93CC4F955995D664D4D043D5F4B27028D336A03313A6BFD8A4E1F4023DE +1AA5A0F7EFAAC52FF9378BB890ED9B29F50DBBB920676A54FDAD07963E2846D3733B7417BA5334 +5F57F1372E89F4020DC6A0AB9035328B0DF0DF71110C2A452D2702488A229B54FEE6845814C21F +764007C8E119CF84454F608C91E1797DB85D9B8210BA1F7A7CD12B2A8AD55DAA18CF2042F4857E +D37C2ACDB63984DABCCC6BDF6A119C464C7D6EC30CB2E4620948B1B7BEA3A2DD88B15EFA953B3B +69C2A624A0CAEAEF17915ED4389D1217080B7F7D91887E055A86A6B287490DAD12D6165A0243A7 +A64587BD329E130F8E522D6570E59A33595672C7110FA2B8DDA2EC48F45671492804DAE5DB40A5 +42E21C27D2A5F2C37F00E871C3087613F11C6249EB926A0463D0486C5D5919A0A6A556D27A6AC6 +0E6065AE76BCCFCC3525732DF91F7C0F24A09A8C2053C231348BAEEB93395AD4DF4AF7A99DB0CA +9CB512D3D71496A74CD776A68E38B90673300A297F6A244CCD0341112F42CB9955DA3980C15BD9 +68A2B0DDACE0A835ECCEF41E8CF4EDCB493B59882F812BC4D85694E508FC0CAA2AFDE8C0B21F2E +A861F1620F6D01DFAF25B3ED11A7753395F97FBCBBD1E3AECC00B5940A6651BBFAB3556F720081 +8AB5744975F71644FD46B060CF74147238B6ADC1E9FAFCBB3C2D2A3F92FD4C141C520978A992EF +90B23EE6178602D2ADCD143E49C6BD72D24C3581F7F1A76E9122B4D8C9DFA3FA94D3CABE5F84DC +BDD90ED86A2E6D8C63EF7177AE85AEDE1A594DBC3C249A7B108AFCC6C75A502EE3CA0E733808AE +ED05CD0B95431DF8AFCBE86D9EA04971A1ADC6558B5B82E5BC3F98AF6DC4401B04A4D39335C7D8 +13DA80152ACDBF6498B99B3E314D18981340A1117D206368E4F2BE11F46911B33BD6FE35B0109E +5B294F59D3F025FEA5C2834ACFF2BE105AB95BAF201BC50A4D98B85C970AF3E39E0B05D15DF28D +0A18E82FCC16D85BAC813A9501A10F4CDFD022905FA5B10C8763361BFC4CB0FCE8654062C0002D +AADE193096D10973533795666EEE0AE8B7BC76D60B1713769DAB8AEAFE36A6E6786DCF15A1A890 +7C4DF6D252A5CCE68B28B6F564060A53FCC5E39E97FF61DCDA09DB31BAC530C8F5B999B1FC4E36 +A2906088897488081D74802A693DED16DCF651F62C15EDD2BC721619F848EBDCF226DFC535A526 +C3247E225CB344AAAFE6A954E89B8330A9F5B05961B5A7D362CCD2268D993EDCEBFD46C2944C91 +7F004CD27CAC0F142366D8F2419CA77C36770355CAB1C3BBAEDBD7F4D0150C4BEA551AAE4CF898 +E5962B6579F5B13A3CAD2EC25AD7AA6015D07028BE165BD40F27A9B33FD805B8F42326CF94589B +29249E4859A8D0F306E3BCB3A7EC3298904B0CC87E913B90149C765A43CC39144D523D6B26A509 +E00236093EE99B3513AC69DC5A2941F1E48A71B213559621E5BE6A641D943FE3A13FFD796F2BB1 +A6C452A24E4B9864FBD9A9B5331DFBC5DCAAFF5EC6232F15E9412BC2230E8394F5C0F92244FE91 +8043D83E3790475F6B35673F695244CB303D708E8E92731C657D81C7A28EB491FD849179BD0886 +E72E47F1B4C34B465B4B0A212D57DD804C7CDF5814B1E6B87C9ACB9C74E1EAD3C4B8889EA4F25A +0CE27AF6F91593F0DA3F55C15C9EC3CDA8D6BEB60FA0D8CFDD2C34C1B0143C36A80B3F77E9E4CA +CD42068746943063788129B9B10DD969706035C3FB7971E9A56EF6FB3A0B4ADD1D977E014E1417 +ED81B819435C8D8002AF809C6A252FCF5F17BFBC747BB7E604C9328F353016B85A69F468164401 +67563700E8EF94313BBFCEC58B3FA6C89C0F79AAA61537DCE0B489ADF40540989FB040E2FFC535 +0B85D9C011A94B7A806482E02C1038F47D392BE62F7A192CA4659D8F0A17F1D53DBE33A6749125 +CB64549F2DF8FC0283E48713E166A6401D1DB6193DA6F4DFA2AA7430EBFDE3DB993A6C8B58132F +3D57AB5E466566ABB13D5C29BA2262F3F6F574D275CDCD653E1F8F824F516B1C688CE97C14FF3E +BAB81F8FBF0A6F64648BBE7F5AD5C331614E5CFF13CEA871D865F4F788E4ADE8984BD939AB33E5 +17121276461DD3125F3B56CA87900CB449B6497FA6D4F5FB859038374D5BE0AD2A34B1ACC9479D +5530AE8EF469891C174F8860837F7A22F72590CB8309079CDE324BC60787EC690F901A69FAE187 +2B6D4D4576F06F5CC37495D0C72A45AD47D2F6CD216FAE7981E4859B5845FBCFCB61829A6BC8A8 +E7A9A0F53C020767B5AABE20CFBF2504BE5BC7D32DE9B56BB1F0C48330635D3E72E4913CB1BE01 +28C6BD47FEBED891A3FAD8BBD5F916B466E974F9CB2B3129B29DF1F5FBC7B2BF2AB8B2769C12E0 +435ED3208EB20E9657200806391492BB1E5899EE594DDAD170A0A61BB6A1D0581D685C80CC2F9C +5E5AF62ADFAB656A33D22F7A572FD25DEBBFEC4B36242F8D77D18A0CBDE2FA03CB8E9394B9CD88 +D63CAB57E79081650E58E4BCD0E5A878CE4621251A287C64035BBEAA80881D504C75032F89280B +FBFC4991241167BEBA653AF5EAE9B1A3280A58B9C4C59B2FC47659FD1F42D37DB5470E46D2ACB5 +62A1D0DA3F4EC9DBEC40635018A141152BDC88F33E79C6DA6DD616BF689E052C0464B62A1E61A3 +E58CC805DEE666FE4B4F0096D6D682384A2E95FFD0B542AEF848E1B54056BAEECE36F0C62099F0 +4E0AEBC007352614E0349A18A2614FD3998C9907BBDB681C74DC3A24E5C002EB64AEFF55CB6EDB +44CA80E99DF02F8A7B1016824AD38FE7264BDAC41E848CC7B7B38B0C50FE417455BE9AE00F0F8F +79B0A5F492C89CDD1D18F6FAC750437A96608C131AAF7A9C5BC0D3110CCBC25B19C7F1E3906C27 +8935A398909D2EE97723CE0207E9CB29807CB9F8ADFA813900D190DD0CC8E3CA457E8CD392441B +B800B2B30D034ED66518D487F4F3C33DE3FAC0F88D9A6A597379C2500A6954EF80302912AC116A +74A520C2E40AAC299B78F63879F31E2A8429B13DAF83428B12DB5AEEE33E1150A0FF4174DCCBF3 +9610D0BB68DDEE4AC044123B208F3D37A5CA6A646DBB821975DA03DEDBC42714949104033A4C31 +0FE6BF0B70F922EFF8C51CA42B1CE7FC496B43E2DDB4B20AE6373972105DFA5843E9A64F63342E +36B154E1575BA26998878A96CBC9A34B2E07188D6E1E8E69FA557DB604BCFFAE3675E237D97F5D +EF4C8D2257AD409B239F1D9519F9B718C27B998D69EC2B5321F97AFEDD8F7466E64F45A0843594 +7B35221BDF77146E4E33F08935C37F0FFD44D506D8382536365FB3972C455A6EAF0761A03A85EC +EC2E8D0FD1FBF0BD829F18874C7C25D8F0ED087F9859136919DD52AC3AE08A7D848E5EB11CEB54 +2BF71B537DFA59D6E081574AF536813DF6D9B8B31B83BFD52DDEC2D7D833621EE2608619F0A61F +CAFF7EC32F2B0727B24937644F40DE81F6D86FC17A3417392B04448A5EC54C0B0BB1B60F38767A +508ECB5B30113246F3A3066310BE7A115CD9D35EF4133A4110B10D62EF3077CBBC8A3C64E5566C +19BBA49AD10E1D5D11BD5A31DC8ED59EE62CC19143533502D580237950FE90B7ED3803F662A522 +A3DF2BD026CEAE7D614EB0EB2D29681934DCF9AB2E6124A18FEFA62F2F478B87E2764C59C2EFF8 +946D326860363543F0392CB582F6AB173AF2FF031E77C939597381F724D242E49D323CF0BD1023 +74B67D028C331B64DB4642946C72E82092A4890A5491130E312ED47DCB238161CFCF412BF7738E +81B3AABB3CA492B716F92BC684615519BB513526C06FD5BAB6F196807D675DA47A7AD0216B7BB1 +35C9EFBA46313A9A7D3E40A5B7E6436114846D1032A163305534DDD10DFBBABB912B1E18882A47 +5154FD2A0FB33F1E4AA97827FAAD01CD51F62E492AFCF3B870B5B90AF7CE345F99D07F134A790D +312A7FF00B01DF37741A5E2B98DC2CCEE6BAB34978374CF1CE2F83F03ABA437790E0BA33A0124C +2C8F4A13F3F0D00383141A952242B2129A0B96A45B1CC13255B3118991293700BDDB4E29BC913D +0A3B44D9E5F7FCE6D153EF4FF3824FA229F841EF6DE46E113C9B602A298868AFDD1825CEB017DD +D59F67ABD724D8ECC9261BF90C413BB4818D060CE5FE0B0EA9CBB65850E5FA181E9713FDA06800 +FFE7C53D9EB62B222ABD8E12EB6E149CCA7713C5639ED530A30DD12D69E271782458E53CC14DB7 +5B053E7D61DE9E231A78C2391DC18EE092A5F76CD61AE5B7894B78CD378E0FBF8056701D4990DE +1EF0F36E918D98CD907F624E654836F18A579C7BFB23DE3AA9D59229C3FB1A4B857D9EFBD289AD +0FFC27B6EB42148E7AF8A802C99B14ACE59B52A111DBEC97EC5BFB0F970C9B27AD6231D66F1744 +74207E935CD40B5D3787D85B46D4C33AFF9DD5029A0172118C624DA5307F9FA33C256FDA460479 +205650A52F5591A14027695126E5AE946A7BAF34835CAC37560EA030B3DD2B06A6DFFA0D02F634 +E344CDB5260D84FC6338DAD799DAF44C46E4C4DA1854160E76FBCC0916A3EBDE474E358E9E8B32 +8F1223DF95A0F1F8CCF619FBA607F0276C5373C293BC4C4D653893B83F3583D9BA549F8D229DB9 +44D7B4B835F97197608BEB526AFD58416980C3C8ACA1080C09797DA0A24B185C793636A15FB82C +E003906B613CA3D16DF1D7C51033480123FCED0205AE45BE3DBD332DB88D0BDCBB4DB845AC13A4 +215B94ECFFA4D4E88B4BC5093770D5DB8FD7B87E8E4FA0E58F651270701EE92A3B287644F56B40 +97237BAD7453C25D29B293ACDD4A295284480A3E19DD134E77498E16512ECB44D77EB24D6C35EC +4586D9B73B2F60FA1F758FA86378485C37D595ECE1B0FD80D64CEE30B7F5A51A724E72E18A9B22 +AECA8129067304660294A309E9797F8BBE2402581F43D8636648EE6675C4D30A8B50DFE587FC41 +E5C04B4430C58AD44F57C8F6AAFD4750AEAE51BD4715838D8BFE522C6F17ACAE809C3C39F50D72 +CBADA2547CD9D0DE80980C53D9ED68E73214037B8A8E365BB3DDF7350A2D1B9AF3ED802436D1EC +75C60C3617995E3AB7B8469915D80285E99BEAB6BB88A9B5A388D7D7CB950E7DBC168885FC5173 +4FAD3CABD91109104F52525316943C6E16ACD17CAE128D81C0D98357B0B806ACB460A5E7F5F7B2 +385060402CAE0CDAF70188977249C809CD4C6B133ED8447B926E1A30D4FCD0968FD3FD45B50F6E +BA94E72E87D4BC7ADA4DCC3D6DA0F31517EA9DD89F6751F707980CA84CF406F7A786AD8E4377D7 +5506A96F7293999800C1A59CD813F18398A4094D7426E250BD21F87DC58C094BC00A567541BDE3 +D17E1BB01C4AAD986D1E79CC4B29234A28A6A323C0FB98B530012E523AFDA4915851952149B238 +CCA18B8F974BAF6CCB738D05B6BB1FCB0825FC1920C4E3AE8A1DB3B7C02991A543AFC9D38DDC1A +563793DEC85BF313F6CC40A1C8BBC09580E54EA3CF1E399F8EDB969290A3203D86D67327E567F8 +ED390542AABB07A0DA177C3C6B44F5BFBEFB181DBCD1753C6712A6D7835A64B36922173FEEAE67 +735FB82A09CBF309246D104DF7B14AD6A6A87DF431004EE72FE7887929F4DB593B0A113F176409 +E69892A4EC6CF250F984F2CC2904C788FC7FB9B164B7C3AAF3B9BF5EB17108C52EED49E5E43D16 +F94ABBF85F784008958557FF8DA38DC55BB43D6F8671BD2764A9F276C2A039FE5179D23455BD55 +539DEA38921C66C7E19EE407CFA868E9CEC0694D756EBD5B9EBDFE6D18D5E9E33433C886B24CA0 +B0F131746FA8FFD23D427828A4998D0776549AB2B4F5B610F07AED694655A7152740A275DE60AC +BD7811F31203F32D071761E74D0B34BBD8158DC1282ED895F803B7FD689D429C9A2C32B30E098A +A790D6247386B89F03310DE4665C3AE77665D885E456B655846956CA33E3A702F79A9695CE7510 +329536FB24143DB109D0E858CB20B3056078F0C151419BF06BBB871F925ECC7B4131E54A935645 +D4E00EF0EA720ED493E6731508EFF11B81D9A4DDDBBAC935DFDD1B798BA0E34B0D5695233933E7 +8C0C9C1DAB44C7BEE45543C3C310C452FCE97964D2B635C5433318FA367D20DDB9DC8CDCEFE0B1 +1DDBBA2D7A7010375EE581C7FFE97F89BB91E3FF1624F0EF5FE27CF9A027BC8D1939F91D88A873 +5861127EB0CFD88300D3B821DDE0B54B62762466790A949B2DB6372C75732E87F54CE4F05325D2 +0643A2F8388DE10E1C4CBFDA85A70F7551CC8A8F088FD46483446E0BE03BDE1B5F2B23D9B99EEF +D4641BD0EE2AE3310B0CC0AE418D0C6797840CC5BFC4F54F0D6AF8DC1AAF3DF297D3955ABAC771 +214ED10BC9E88A4CEFBE6E07EDF9F7A2F52C144086C13071F24CE826D468098707090EBC28BBCE +12E0AED14488B547A70EB783D97C98CEBF55858B924F0DB6754B3CF833EBB5EC487046A6C3BAE3 +AF59F61B699782A6109E0D7544846F4383C849A917ED1750A8F5813F552C231A3E5954F57C8EF4 +D02BC790A6DC865F77B78D920D274C2276F9DE3887540C460B1A6029419B9EE6B88FE29204CD4F +62321824A8B72FEF463400CA6A83C2CF8E161C76058CEBB021216ED92B4D889A9CEAE5619E0CE7 +DE0B6927577AF0DC385FDD45EB6F116778E91BC1EBB2B6027FC5D39F8A233D27BF581DB38D31F4 +20AF47E77AFC2D67A7FE90A10F0D6AF0816BEB7CE905FF00E5C2DA7CEC75EFC3A170495999AFCB +7A9781375C03C495FC9CDD90F9783CFF0926D795F155CE64AF0817726FCBE7BFF6566FA1A1DED6 +D4D6C2395E7DC3DDE9484A2FFFE1C67EDD9D8741E17D526079ADA966C5F17105235C7A5E09B82D +1752B97568029925A6E25DD461063227613F02B66AC5DDE9B4018E253263CFB3EEB717BCE0F8FD +36B0EDF5D82D2DB2DF28F72B13D148F741379D7C31443DD9C452B3F5A8889C93F15957064DA4C8 +BD8D3032D94A3133695934D299CA4303797B6A49932A1B672A72DDE67106E2BE984CE7E6BAAD36 +396AE3EBAFBC268105DCC191E2773ACCBD92A3D32EAF57721C0EF3E34744AE1ADFD9C56669A08C +C7E95C1908D43B569D82CFD4CBD7A41D841D10C107E00CE93F033C7449B78660FBF82D157601F6 +A9C721C3FC1264A86363B5A151F63C8B646E2D7E5D44C3DD46CBAE571FF53A9F4064540768148C +B69B9752D1E99EACDE8BD201373708BF20C689BDE479A0D11DEDA4243E6D0ECD265294C079C7BF +427F12C737CE72238894FAF3571DC588143F2C86EABF4512C63672D5211514D72120ED97AE70E2 +FE4291903259BA3521EF94C9D13C5A614AAC9BF14514761F5D3678F4F96DD8B0A20AC00EBB9A43 +235A571280B34341E5761EEA38808C7485C6B9D15B72BA4A0281A517FD2E5E660EF9EB5BEEBD43 +2D537F8E3E2FD2BC8D221CB3C6E578B1627EF869CAE922CC154B38D2239A7FBC8D85727C1D533D +C71E873CF062F0DB2AD29763A482B6A601EFCC9BF9214E9B270BD9633BAD41C2308A02B94E860E +9B74808796488497C3658F3F33CC29EB099CE42B134AB7A5E168013C64F056375DC95FFFCE9AAA +7813C498FF43DDA22D5186F6E7B3AAEA39A72A5C0EEB95A0CB79539FF14FD409F7D357FB06629C +D99C5F277996778C7FD19E776CDC015FB37A29AABFF21ACF0BB36A0F8F7D6758F4AFA31FE61F95 +10905BE91866BCF1B92CC5638BF90CEDE72FB7F46FB1892F4F4E965DE76D6162C515195A39FBF5 +1A7299F01D20021720B8046FF10A5D5185B217BE8B62874281AF2007EAEA8C41911DB195B8C3E1 +BF0E466CE3F398A111A03958BAF0707BBF153C1E4F966E4645795126C6912828923BB3952C5099 +C0FF6855AFAB944B776511C96B77A9E0459FC52749F0AD982077A227792126507426736F2965AC +BEDCD7938A0E27351E5CBBEC3E331BC2568679E1823DBDCFDE6E46E999604924084D583696F05E +D161CF7CAE7A56A31A7EB0BDF8F5883A5825597227619EE45655F15CADDD3100604877F7221866 +A27520BA9F4C72A5B7A1B45549C599BECDA8D24BF7504ED6032981AD5EB25E7DCEF6B0E7295F01 +0C881F0B0B28C39CBF0708B8F96AFF3A0193AED2DFD8AC7E6F4D85F2EE21971A670C010857737D +4D3C1CC4D1EA8FEEA7756D34FA95B2BE2A27E5864A4183F75861F2EA00D050F04D6C48113EDD40 +75A78C5C64E41B437AB8FD6E12C5A25ECA76816702CEEC2B3FE8DE398A130CC49330BDEFB0D76D +047E035448A59484D48D18EFC534328A8556858D4B45CC05377B8140598AFA383939E4A7F73561 +68C7B016D012C37B405D4523A1DB884F005A2572A039847C7C065B8B92DDC9BC1E803692A39CC0 +0A49CDF0AD24168154D03BFD56E1EADFE29E556B52FD11CF838378E4E4FEAD5243456648DBED06 +2A47FA57542E137A9E035569D068F08E43DC4031D85925DEC164FF91F8C207692E8DADBAED305D +D38FB4952C61F50F9E4E4CBDE408A16801732F3EFD6F2D600CFAD6F691BD36279AD251D991F24D +18DA3168749E8469A9A39F2106B98701956F265C3DA4081278A3366118DAC644DD5B4B5DBCF7B6 +EF6AB84D9C41350B18320C0FFEE0B5C26AEAE1A6028093337FDB82EC40105175175CC19A7884A0 +B07DC34C349177DD4BCDC16323E36197073F1D6447BAA0A45F0DE7453E6891AF0FE2D21C26D9BE +37454F2F83F6E974DFBB014511275360A9FDBF6CB77510C92A45C0C1FF6A004F854FDD323CA4EA +45EF334B4BD189F1131FFA7B4C7FBE315DD788FF2D89DC3804ACC9D689816A22E39BA45AA98AAD +6971FFD22B5CF38794385EA00AE18FEA562E0AD2688CF6176E1FF4CF8910ABE1C4E98F59750C26 +9858AD2B32E717C29D97878953F729AE13B3403F997593542639DEEACE7BB88D45B6C4FCDBBAFA +3B18BC0F085B25A87B16BBD084EE088FDBF6D62F4E65052E374F2DC012DF690E23C6A00A5E8760 +B2B2A213FA8D0B31E08070741FD2D8752274CD71B1CF566890113EA34518457B1778DC1CA38345 +78502A62CF4CF563252B3ECF554D477283CBE6AA7A434A279AB71B2CF20765F5B197592C681FE4 +6ABC6115B49D776B1CD457A3335FB3B61B4258EB77327688686072B7906B2D8016C5FB12A626D7 +E8B2590CDF574F3A410D75FDECE4BE7DDBAD69EDA08F44B73D6F7C92B97C67201FA2AD698D058C +EB7AE6C88B699207669D68FAEBAC5E75905B9688707B199F516E944056C2CBE773CC95BCE59D82 +AA93DF52227D477CC2345EA8F1A2CB96A00D186F3A02C30FC0330EDACC404ABCCE86F0462784B9 +7C1F55A03C4ED89C79C0BD3A0AF3B19259963CE966F654D7D4EF9B9093B27526E5C09A084F3C9F +DDF3C8F261A5720DFEE14B6B198D8F0CEA0CCCC7B70CE185F0B65B0B4E5CE79898A8E3DBEBF65E +A2A7F82EFD92AA7EB65AABAC5A3CEE49070E78D5C591409756EB4A706DE5192D13083C4A10BBCE +3A818990406945A4036CAB65E3F53A54E6992866E130F01DBADC1F15751256DFCB408DCC671CA0 +731A01A6457CB40B4A04BBB0BF77C8B655ABD484705AD31CBB88CDDC3C599B35B86D3C4BB8B8E6 +7751A095E43C9B9228C58A920E48D679DEAA88DEEC58F7B5573DE4D7C7288BA9F0A5899D1E6588 +557ECAA123CF7D504406BB03F580FE02A2E88FA32F9A824B5A895CE8EB1BC271FF2702FA463454 +717D37672DF5C7F78561F889EB0E57984A96E1430B26E27BAEFFA17AAB5FB94A890AF8FB57AEF2 +4FE880121E0B31708F1AE9B09DBE64B26A5EBFBE42A4BBC0C3ADEC0A14CF7496AA53263D4889B0 +929645EC2B8C5144A4D76FDEDE6345B1407F990C5D7644B21C0D827AEA7D4E8D4D17311099A703 +689B2F68A9EFE15696C589BC02FAC8F5CD6FF68964EB222EE012E28A490614BA93405E4F2798EA +0E8A8B5EED8D7C554737ECD26CCFF16F50C8AF2373E8688DCC297269C2836E4FED50EABA465EF6 +908DF9F55DA80A501E0165DBEE8E3F9FCE4F6B9C31AD5505E71AD3D7FFE6EAA9D764B965FC163A +B0ABF7DFEE391546EB78C79466886C7393D4036FA247E9C4DEC84FE72D4B5AFC6D7FE58714C70A +AC3799C4B419D3701267915677FBD571073B70D68F141651A59ABF8B6483E216F90117879A34CA +43BFA857B831DFE321C2FAFB887131B607D2B9AE7F0290705C254716161DB40AA383006A8B74A5 +767DEDEF5D60711B5A9E45D63A6EBDB15740AA04BAAE078FAD7FDCB9D26AE3DBB66ECBD9D7E641 +D064B881BF5190FB31EECBF3659036FC145D8BF0DFB325A78F0B3723ED8DD2A967BF916A90A92C +32292F3330D3F1FA1F31CD6AF9373D12A1EDFA00EE7A4859BB6F6D4D6F6F7F944ACDE744E3D6DD +CD646F83539F983B1C70BD94E1FF6CD3E072F06DF4193676388C95A3E4E3D07ECD40FB6928AC52 +CBCCF63B71B47DF4567E19E0840D6452494EC3883F6144E5791853B0EBF93D6DDDF15B3C8AA14D +8A20E191DE9ABEB1ADF7B19B3B688961F0B86E215451E4DD52BA655B00D1495BF08660AA5CE7F7 +134698F4C73B97103D1074220946455466FDC08FFC63A1C97D60E0B931E94A6A559BAF54574696 +D5F5460FB18B3213144F42F1AA8D5FEC8361A6E401A82454C897403E82DEED2B65E6E50CC603DC +34BEF5E2EF0F2FC24421E5DF012640D1C6E5C87F2CC8A3997362E27463CE29C903A5B32863321C +55B8540DC3DDAB6892FF114F3EF72647A3525119AED1A65DBC779358C5AF9F3AEDB5AE85085CF8 +9F55C71EE44D229C122DE658C83290BD82FC39F044163EB56F841A9E568D50493B535837415A12 +7D618BE80156E1AF95AC39BE234ACA11CFE3744A8AF714724C04359EC8729BBEA07EB8908FC41D +4E5D045D2261A9E20C66A161F98584A2FD1AA56473A0287082ABF956B6F34C0AC3D6139C00020C +A13C7CDC60F1F1778CAB99930BF104139967B728C75120BB7FC3625513C7F992CAE757EEAC275B +7172522F0E178F4EB6F862080D0494FCC5F159DA45FEDD5C7A19064BF1EC59531E973A9846C5A2 +F8BD12B34B0152021D6C41F7226BE7DD8876AEFE003A4DD181EC983284F8855F9535318246A668 +196BACDC3A71CCBB1BDA4547168F0624CB896CF96E7629EC8D1BD11530E5E8D5568D77D9DCAC00 +ADB7021BD4BF6FC3E1F178C51E67781337D7D3AC1A09ECA650B8278FF569501CBB021B2C8C9ED1 +C9A23380D3CA67ED0E27A41929FD835DB776103C8CBE4498470C2ADA09AAD19EA5D781C3D5132E +8C343AFC91E36ABD78327AF6A4F589F146E702BBF6A6C3EA6F720B5052FA18E4BCCDD1A7B8C7A0 +E654A9883396E6442EDCF3ECB05C55B0895C130ECD3B9544A3FAEB5ADA3F5CE8C5FF342D2DA291 +2E9FA59276DB5418BC5B065FCE1ABD42FF3238894BF00C86C52030258449D995943259F600B1BB +8F63809E2D84425DB00AF60E9E8AE791E5ACB6D3E5C7FC9023144DF022F86FFFB37D30899ED2D9 +FA1A5CA5E442170A2BF817985767EEA87C4F57B8E19681F607EBAA22860C8C549738FE95D85F4D +2027CF0F99F31985FC568EAF856FFFC056B118EAAF09E8982C0DFE550FDD8652F3D94CA70DE411 +00C17F820E4A7A2217619B20FC0303AF62BFF042764382147169272BE9769043C3D41F9A246A01 +C4C63FC7DC2FD62306EE813196D620F584B007BCA0286A39E296B210F64F684CFB2F9CCCA5B74E +950D35A1F18B19A26940674DF66392255091A6A6ECE640DD8142F5CBEF4A7810FD8175C9833539 +A34A911E0BDF64DBFFC534EE22CA6229D62B7A95DCACC46D3989BCC85749B248523AD44ABFE05B +E796126E6745E1DD1653FB938612FCF0C877566CA9F686823F4D069234EC7E3826D0080C32615A +88423A09651A9F3EE6A9DCC95646FB0E7E24C7C3372C6D6CDF1375CB4EB1440FE95C5C7FE435B7 +290E78ABCC143A9C015B410A8555271833A466D49AC0611340731580BD29F73A2DCDBCBAA6E07B +643DCF9B18613A6652B655A2167CBB1CCB0FA71534BB0759873FF5B4CDEE677AFA1059E1F4519E +EFC1BEF079A9C04D13842F516B096D3D281533502C4023E13C25C59C662340A45B6874B5C9F08A +08BE03B7C35FE00ED31BBFC5119463F2FB1165D22F117A04F27FCB5F0949BFAD0E882703755454 +B629821B7EB4B048FBBC21E1390620EDFDE83B894FFB434632EB7B4B21647D4C9660E7213902E3 +E2B6AF6181D797F2551513F3529E6C7679712CBF72F2437CD4685E117AD8C2D61A28132170427D +398392C7A27EBA6C244C6BD7700969004D52395FFCE11000B07A7093714F781E353BBC152F2EA5 +B275818DA2E9FD5C04F63B23EF722257EAB81FB2AB97C5B8BF455B2AFE648C895A6D38BE154683 +831704144F5D8FD68BBC0A96165E27F262804140E34A7C7361CDCDD5F14BA4A45EB7BDFFFF91BD +7429BFC9775BAD532BD4DAB6F7FFE85CBD60FA6D0B138CE116058504803D0F449ACA8C380A7829 +A0ED3623A5EE64BB34A345A8720C7B57B1A7C18560A5E56A5DC8C553B58A73762FB04036217CD6 +081F8227F61556BE59FF02C0DEA3639D44A6C3C97F921CA96752FB9B9D28597873AE2AE2C38D46 +A2AF40DBC3DB23A297503A5579998B0DB6B93D1AA1ED3BF5BCC480D0CD9688135FDD40A3E487B9 +A4005AAED374C2E9E036BAAB288AC862726F3FAB60D38B5BB135799A3BE5F4470903445D3A66C8 +24256158426369C70439148F4701DDC2F6F6F77559DE968F0305C42B43E665F7E8DCC6D72F055F +038616F9C030A9AF1A06E6036E72640D11962CD4A622A9DCD07C8EBAF060BEB846F25C1ED28835 +C28059C5C1FD4987CDBAC09780B5AC782964DBBEC7F776B5DB51B44E3817BFF658D2DC37C4291F +E1778D7B964E22AFC5EDDBB03538567378B7F62E806422EAD35C9F6F82046E7E79BFD6FAF3E7E0 +A52C63DD5E8C0A838B3969022987DCB7377E15BAC7B1525EA24C666E0C69508881C204BB515233 +C9B6FFB3F0B4EE37D12EDE6E192B1A17A7F6699FD6C1E87F03C2D8AC0B9DEC767234A2E7C32016 +D3AD9A8015F489BEDA95EC6400EA9DB2CB8626FA253A718FF13FF0E013A172E06C3E5591C15715 +C60C30795CAAAB098B52CE441EB71F2063ABBE3DD3558B7F07DB17F49C24A7861589ECD8E825EC +797ABE3521B5924F53045230CF94C34F5BD6F197E008F3BC38401B3AA6BAA7EFF54F1F926677CC +FC0E77D5EA05B218213737DB84C21AA724E05F37896667FA8EF4E3899727DDD936BE2F8E64ADBA +CA74032C2FF23805D1E6029E7B305F0CD7259865D7271444A5886B5C76CE0DF62429164E844F2E +95880B6BECDBB0BD005229964442A20AE582DF5F3735885E217E4C399535B965047A892BE0985F +6C1EA35B95457414038746316BC93CF4C776AA50650E617A6F0DCC586D3F4CBC19F6043DD04915 +F0CE9EA31EFF2F8D36268A044EF15BCA63FC5AE91D7DB0879FE5AA9A3D51BDA3160658ECEFC447 +CD2C9A848D1DB4BB48D277EC154B52297EBD188B2B7ABA0E4B840831E1B9B647AF654E1BB08D0A +64446A3BB49FB7F19E8FD8E9084C8B8C93924EFDFD9A9458A4F3B4F1D948B123681DEE542CA97D +6A5857A3E47622A6C6B2EC09768705223894BD7867242D819277C5DB24DCCE8DA6062199482923 +4F17F56BB1A0C2A2E099BEAA6D94942AF9706FA6A1D0C67560BD1E3861F8FFD465CE6C48AEC2C1 +F762BFD3D4A68B8B25D0FFAE02376B34DC1BAD9B39DAD6FAB6491002A1E6796BE978DC1DC62EA3 +9D708671DC9CFE4F757CCCE4DD7F1B0ED59EBF5EF3DCE61C4AA16DD6411B68E8A9CE4FF6AD85E6 +F98CE16CE25A8405801669678204CDB7305BD7A29469C539BE2348B8AC412DC95EACA3012D3D96 +A3BA334FF4E16EDB9115B83AFD66192142423BDA32D8A76277A763C373217BE75370C5813FD53D +E7DCE0807C087DDE87E029F0211CA9F1B1A67E72D7922388A6C84B3C6E3D44B192B0B7588A7DED +100C04F87780F070DDFEF41C90EFC0E0BB8F3692F7D360BA180E1D4579FC1AC671454E413A8613 +F40F9CDA8AEFEC06CE40F1DF6FAEBFAEB57AAF73898F869C6BD165B9A3A60C5942A48292B5805E +01897F3DC17253668A774D13E23C5D5D90BB6B8F60E89875B353A8FE0D03ECEC140EBB2B3BE613 +907F32DE8F445CFDC60272E5EBC753BC2ED4CBEC34588879870277190FCFBEAAA6D81759C2CE36 +6CE0EED2B8915F93BD1ABBA0613DD9E2EE93633EF81F4B36C29F4A24847104ACEC56CA46416884 +462AE9C21D1A21D20125B71DC52D38989FBAF0A0A6EC1068E7C963B2B6894326A5E70AE420214F +EDAB638988110066D741B301760451CEA275988C2270532D4A78712F28922011D564F12928B4BB +9484657DC0F2378F07A139C75843624CE599A261AFC6192D58F89F36556AFE32531138FA46B505 +54898E65B82883BE97CC02B92B7C7D1979F799720345EE930BE3CBC3BA01CDC2311147AA768202 +A59BD84F601A5FBF6F882DA51E7644D7B734D89555FFDECED4BD2B14DB3D3C57E0403680796446 +3DC5C9D6427B591A00A82E2EE4DB81D533D52857A250E579F9C9D45109F06862E64564B5E18615 +4B6AFF5AA065792AAD0D38340C26A0B7C7E4DC7F054A850C0BA6EC8F66535E5CE1758160CF83B3 +CD1D0F7EFDA4B0D11E679C74386C2234505F7FB083578BE4D43C4922330EEFE114DAF7C58C0AB8 +7E4F6C6511A1B311FB9FC645FD7199015B5491584D2E135C573206A96EC49B6F0BD7428755A69C +9D1DAE3978F70CF6F2B518C74B81908258509FC96282AAB0DEE885CD5D66B5A91BBBF74B08142A +827DA25A4F0FBC4E1BDB4952556B04F32DB3A8CE6873DA2EE081E81DC1D3C429BD76E62986CCBE +D21F956E4F45F869E0E00FBFD1B17011439E6E0196C8A7726A96186634E51951B5DC1CC4F96850 +9AF5DB930D892EA290C70EDCC65DD905D6AF9221AF3C6EE64E01FC3A37EB358A759DDE53CDDC74 +B6937F1DA36B00174481A40AD8B6E9BA2F9BA1A15D80C560BF4A3CAB972DD12B2890C3BDEB06EB +FE05BAB7E2BCDAFC641643B67D553AD78D5CC498B43A458C06E9A428307498EB76BD7096F2DEBD +2905AB09BC0E748239D90663C26A3FAA9347C32D44BEEA2DDECCA24825DD2A154E8A82282F4122 +96D11C6E0CA8F28CCD52A3E0A9B442838BD6FE90A931C8A462A97759CC9EE21B47C44B2032E5B4 +083750CA3483E688F67FBE91EAC9199D49963060712314618A725457FB71945C535BCD330A9D8D +850EA0EB723BE0A00F2C3A8E6C80660F59A84DE34A52F00725C945521ACFFFCE8FA1CBC2CA9F9C +C98AB2987C636CFB83DB46B4B3A7F1CF4EECF6E08A3B94229B54CB34272829C4BC264E303DFA2B +170D5E7A66A7EE3C463502D5425AB0739F1DFF5FE9B751975E4379569580B641C7296DFEA54E7A +99A9478583A0D8DE565575DB2CD00B35D2BF82A5597F4134CD3F7A201C80DA9AF49EB8D9D049C2 +5869843331F140753DAAF303592715A35751B4597F458F5BD9A894D8E2173E03C85853515E3D71 +CDB51E7000279E462386A1DBAC817073DDD29CB89F211CD5FCEB9657C107041E605DDBBB7275F8 +B084FBB48A233D826F9D3079F56BEA088092B8156B4C38ECCBAE22EDF9135E5E2DE147EAF1D562 +2735F9FC9C5124149AEE31FD4B35CBBD848E81605EF9B89C0E116E4394195122D3F5D28A60CCD3 +19A85D7EF24CFEA5AA946B8EE737786DFD5A6B2C1100F3F2DCABDEBC012CBC19AD314198536720 +37233DA6D3B6AB83458179190D11FC866BD3343C9CB85381BBFE2226D612BCE91D13226F4AA348 +C48D5F05D927518E5587BF7EEAE0B2E40F6D2F5847B25832970681DCDDE5A3DAB4E305DC7CCF1D +817F07975F4575D97355347E3AA2DA7A8B230B81673ABF1052EEE2F524D5330975E811FC32AF0F +E8538EF37B67EDE2F2D521F45AEE885D379835E820C8EFFDDD7E3E381BF267E32E9E6DC40A1D36 +D0068A698B970C492B79D5AE4C645286631FF56704053F81474FD546FC9498CDE9176F7483F9F1 +7FF8654B0EAFC6352FF7070D969C8F7005389B7F465EF1B6C0A1329A2B18F577586CF4B9427D48 +886B0AC61575474C87A37340B7EFC0090F3E489505EF51BA12B1394144F3895AABC6916DFA5C6A +4E8D07D3E351853A2E0370688E5E6000F5B751AFB8821C4C25DE80A9640ECC48B99E05C94E4932 +D120A4893E85CC91CDFB5A7218C972A482914E5401ACFE7BFF59B4D8D5E5F563AEAE5E34B052A7 +2ED5ED7854C32C20C933D68992DEAAD311F6DE5C03DD24B878F536560A2F43E5FC70452A39C7B0 +AE56A0A559607EDC991BE7F571857A7F55FEDC84C679B9BE89401F504805BDDCC9CAA625B2111B +C4815AC79A78AAEA643466199721879697A341639ED003B5FA52331D3A2AE25D8F20EACCBAF791 +D62421A00937BFDDF444EB59D2F460AAFDF8BE9F82D5FD1D48F6712B908E5FA81345A567C18705 +6944C722C55A0D418ABB1BC622EEC5D416F6F52BC188DD51405215AD6B75B04DBF4BC6D85F0618 +FA111126E41351C3F7B0667F8FC08ED06342B2DB6201A1A63AB018B2FE5FD760366A9A420F56A6 +C61B835F9AB9F385A81430F867146C8B01784534CC959126389D1CAFE10E3AF40DBE594B6B9219 +8F50D9759E60519DE8AB4CC0224ED624A3AA9FC95AAFD676706448A9F05BF008095121314FD044 +A3A350ABFD1CCCD5EB18DBD2EA71C3DB2F37066021E39F4E77CB1B155D05CE1FA00C8A59FF39A3 +A16891235A599F95F9A62E6EE47839135A0750A2CB528F11EC47F0D4D3BA828501C9B76FDFE178 +21F11814DEFDE3AB561ADA314060D7112BC8BF02E92793A3D864B83AEA78F8D49DF9AB07AC0762 +229534C0288FBC00662E53035A037B1C9745195CFAB54D22032A16E7AE0B971CAC5A67FF0EDE11 +E265B88805314BC7563CF177BABB367618A27734611D7B662DA407911EF2FEC47D74C482F7DF82 +3960081466CECBF4BA94FC5AC8C9F91AC151FB1ECB78BA5D5607A1D59D34C18C83000F8507AB1F +1C44347FCA2BC27087A28F0F3B24BDD8E7A0DDCF782CBCED5DDA4565308E10062145895A9C437C +CAED86458890311EDCDE2109233BF9ABCEF0535080D7C5A76D6E3BCE8210C7E89FB95E63CD8A76 +FEA978AF5000DFE7C0E659B902503758736C6DB295B9368EE50F5F8CF3E200456B5B2087219150 +294871F7B980800E59A5DE5973AB9ED52F7DBC7C433FD0E099D3E3EEF6DF7D77E40D1C8B34C117 +588ADBBD7A29AB4805A87C13CE93A65854DFDA87321ECF7D34E72C193365B632B455F8A2916BD1 +E63441A633D144C254E3FD89FE2884840146B4C992A07BE6A0FCEEB6AE9B0234D234645D73C064 +EAFEDA1EB7A9DE6661D31226A6F54BC9510DF6F64F7200CEC5EAF90357716E7C246D47C04E0906 +98C5F6AC446DC6107E6342FE8B746C0FFA058FBBCA0730CFB20A367ED10661670C1618A4D467DC +2A7E87894DE0D5392B3F0DE6582901693C28568D2253D514A3FACD1B063B02A5F8A19C1D6DFBAE +CC79435F694E914014DEFC5553A5984993154997E63768DD7BC462BDF6D1A8B28DF568B22FF460 +087163AEEC37F0BDDBBA4C30322AD71922AC802DD491207E6A6C255F50EEB0C492EC86AFED9040 +B068671FE4A1E66AF15D3D976C7267F3EEE19462487772087ABF36700B4821D2DB5193BBEFCE82 +BF67F7034972A708E93C55E0F7A52EAEE47E68FDC6F1BC49B9370F28DAE122D13CB2CBCB55933F +A27291003E862FB0C7E20A0F979DFD8BA918322F6CD597809F9E05DD210F7996F314B65F54FD7B +F453F15CCBEB2CD5E53535261E696EB73F2698D1159076D0EAE35FFB1FB53F98808ED2325B2CC7 +9D90772C15273EE50294AC931626EC573BED7CCE2D713328962528EE0F00FADB1C1ED8B302F24A +40F9A22D1D6411EC669670ADF93C4C67D8520109FDE9F64CB0382842C88845267528F57AB7E408 +9EDE614E79799D08D3D01378AE9D42D7601D821C9C5BFB77EEFF37B634D2698BDC11CB60192B6B +4FFDEE834EDEA99CCCB760D3E7548E6810FE300596C246AE56DCC6BA8132AE3779ECD5ECFA6963 +F9B5C4B9AD8B6C480BB184FE31EF0F8DD3ADAA96AFBFA250FCBFEB529239AD2A524B3C8AA1C2C2 +7ED016E8EE24B355BA84D1D0AC6AF00B0A230578609A3F09639D2CA7175710FE9D455A58A6982B +7B7FCA52BB5490FBAA064D1C506C9598D88B5CB330C97F434BD1EF060ADC21B9F6ED9FB7A7E604 +20FA1B481881C73B1DEEDA0A7E197B8D38EEE68CD8D442D083772FE2BA1F1C07A57D5B67BD8230 +80BF438089A4D6C311D421F5F16C35B3207649CC0433AEE4987E3AB5698D55309B5F5C8B95332C +77157E3309EDB4954613428AE9DA6686799ABCE483FCFA8C060F0614995E01FD14A6189AB61A0F +7AC9465BE297F053E85AAD0EFD921502269D01FA6D5ADAD672F3D48C5D4EDEEA65E53E03A24AA9 +E78660AFF7942E7F23E3754582CB2976FB65997FF35582FF83FE9BF43CE5CA20AE5EB62CA819D9 +B63ABE39EA3A13AC163F64A55B4E840B12FEED5BF447E3CA1FD61E6FB51D6F7B3176F697491217 +306EC21CC462AEFA069C9432AFAFDE4D586D5EF8DD4E49882CD701C4F4FBDBF42E370AE7F332AB +E22DDB2FA70D17B0E053BD6332A1B51840A6C18760A46EDB9C8933039C8B724FBA4C4D62B98876 +71F94505D1242067281063F91A7DE032FCE95DA4B54C32B46B762CC927667306101A7186DA78BB +BFF306C62708B92D76D2225B1FACC18157268623387B5D80FF9E394E3DB68D5404AE3CAF3A8654 +7704EEE75E7BCBC9A96610D96E96C0CEC85785FC7D54BF035D0E03E6B1ACE9691D7DD71B607B9D +C37DC020E9B5D4216AA991C5022AC52A4637FCA79DC21DC1FCBD5BA4B28B591F69CEFD0D99E35F +C568550A5E11B32BD59BE83149B82FC840C99267AA84AF41FC56D1C4F7F6365B65DBED15163D55 +9A95630AF5005C7FEF23EE87208AAE88AB3CA22FEAF682088FB1F2F78027FDED141D161183FD67 +5E16ECE34A9664C1373C2793C35080519D0BBE2D9B98BEF67D2716B4036A25274B4370AD209164 +BEAC0BFFBCC3F6B2956AEF76143644485280FD50462B63F324A992F3A5B187321107BEC7A301C0 +4338312EA32DCABA2C13A6ADA387B668A45743B4D7C02F2BFFC69F49AFB429434EA529B04EB8B7 +4596D90FE74AE32F57CEC0433922B00236C189FFCD8A1FDD896CCC957DFA2EEABB23BD8E5A428F +FDC06F4F75C3222DC161472687547B173F632D15BACE92A07A0A71DCCE2B8EB739EFFEA173E57C +4DF651FA936221DABBDB3B8AE5C30D595C33DCFC485EF2721743A6957E26A79A97EFD24BE5AC7F +D6792166AD1F09A8590F5871E74B2215E9012BF05DC89BEF6A2FFBA06BC619A08B14D6679877A1 +10165E943223B0DDC672C591F26D6C865B78B59703C3C977FFD605CB241C35FA1FD928A4A4F11C +052EA00B2FC0CEAD4BD9041899EE135DE98A260518AC927508ADD78D7A6D8049C88B42241D25CA +5DF0550706C3671B2DB3D848C3B94CC77D7FC2D157E37B8D4780B6B7F3B04502F3167D8D5B99A4 +6B63151FA7FC1FE52BD66ACF20DB58A7A092623E63FF6F7C7D0001AB09059A5CB6D79504900589 +A349E8D19E76F6FBEA194D18CB6526691C7B66E219092FCB73A4F7807E6BFD82510687A50BFA3C +EEB4F8818B11A8B9F7B71676C5B44078996994DA808DC39D3CB6A66B476FA2ED6390B7181A591D +171DE548152A5CC5B71F5F9DCED5B648AEF57E2B3644909577EA607E49C8D0105DB7FC57FA1A2D +E0105EADBF35AA385C972F9CF07D379454FBFB1EAC4B573498C10B2E98C3FB6F1483A123237B96 +0BAA3A3CDC0E9327F0FCABF72E8AC7DB04E22CDAA0F6EE108564565AEAC4A4DA8328F30AA878DD +B35D6AB16FC49D928066ED24C583434447AFBE2E4D22848A516862207480EAF650624943925E0C +351A6407ABE0BF04E36C87BE715B11FE53B8A13AB4669B7B2238D0B295D60028D1111A5AFE23AC +E77C59415C466042B93790A8055FD8C39B262848BBCEE84DA425462871EA73BFC927DC4DAF9336 +E13B1BC99887E8C1D8721311B5396209A634F3A1F91D51EB7B28F0A827A50688ED60370F6BF3EC +A867BB995B125BAB4203DE9E26DFC0D3D8E91D3E749AA0407C6A74C86E98FDF8A314B201E1EE0C +98015360074379F70367DE7CEE75864C9789533ECEBE1323C12261A8622C5666C932177CFDCACD +2D494F1741EC983E51CE4E3A63AE6FD282DA64A32CC3B2F55549080C7A190BFDD2C2393C675DE4 +90C79A325DCC04D14E0445C218AAFA0E54A305A889DBE613D4F28FB08253892A0D673908479B87 +E9D8E13F467B7F9EBCD8E5E16D7CD3358C71CECCD08C6B8ACA8525657D37560BF2221F91258EF4 +E6B70118BD1CB1F4EB421C4C32C76437340EA398E22351CEA31D250E46F946D44D97C2B3DE06F8 +D8003381600E2E2C28AFBADC25DC94224AFAD0D7D951609BB2478C476085C01AA601F3AFFED544 +F251D5A49BD263D64F4FEFB0803F162BD5FE1082FA2949BA8987AFFA1D9A7A4EF28BFCAFFD3311 +0E1A1A2A22C76734DF6CC30E3C4662DFAFB32DF55DB12D138148435A6F7ADB4ACC4F4124EF772A +A63D5F65490E9763FFD66C6153F5B0FEF1A307D6A9753102CE51DA88E2EF7275FFFD2A7B4F81E9 +DF549938193AB7A58D5C237D669ACF27DFA35744F7622F8D54B5B54AA31D9403841D4C5D193D87 +E60622E18C2D7E333AD4CB2DB27DEE813D9902D17DD0F2D3BDC8B340DFE9C8D34B993CC2CC91BD +47B4861809902E11197967922FC625989AC6F4BA0D48166F3F4B6C6C47D3B9A932F3D47A8613F3 +6329406BF5ADEE519002394FB288D3A8AC3DCD5C37270AC7F5C5CDE46BE5C2A103FD468FEBC0F5 +180143DB4312076FB062CE88DC373B5F120C591B9C09B9E3E1B26F52A48339AE70F729BA02977A +B60666637D9FF9287DB4CC52BD5C7B2D4F038E5C927B97B54F611396E2211514A8684A02D5DB1F +DE728DB58AE1BB7253740349771118D2D33211D2ED7BBEB97BB4776666F6A2AC7B54A1E2DB79D2 +A9DE31745745CB39BDEE3E7CF425C27F86CFA89F825A09F9C7027E8DF7A773497690F328D22FF5 +A5CB2821623A570C29D03081E9DCE770F3E7F5B7377A1BC3F52B383EA0CB1C1BDC00E67AE90F72 +9DC77450407C0A9D0ECB2CE16C91CC3C7D487457800654F86BA7A8E26A25B78204CC7F58BBF69C +5C406BA012563A4379506C28A39538F9A5D57BD197443A02A9D3C67149D654FF12FC6E05612981 +7F7236BF90FA626FB91D49C48D824248EABD764EB3C20634D56BDC2E170A814567D278F7AFB96B +F6AEF216C0B42AAF85AE299752C50E6D2963FA5DB384FD110868D43DA804FDB9D0CA26BBC8CD72 +EFAC451FBAF4BB0B44C675DD4E0B4AD8D6149DAE44DC4EC36942CE1876C8602E3F97CD6E18BD0B +5BCCF7B1773619FC8AC3B3D4958F71E5D2C631C6B17EEE7ADCBA30CA0E30B538249113223FA987 +4D4B294563B9F42D9D259374F28A8D8A654F26D7BFD8667CCBC43F75B61C2F5CF8D7E06642E93D +76554642B7666B7905D6859F79DC080CB5574D03A072DB0D47AB82461DF6638C77234A3F97428F +D2FC973687786BCF1D2F65AABAF55C257914247AEA0B3AF17A867C0CF1E5A6883D68680343CC5F +3604DC8E1E7A9DAB9CFA316A14D4CF7A3A60CA56E947AE632762B2303C0EDAF9B3AA206191730D +18B522FCD29D036AA4E6540F6A0DA836638A2EACE334B232199F61B357B10F4322A1F58F249101 +CB1399E5E60483F12A6008F8FFB52709F34136D93902FE367A01419F79A4D4DEDBBAE63741526D +3D9EB7BFB4332C1775E2F0A05A4D7B203C2816F30081A67440D09D1FF94DDB3B7BB91B63703581 +A696ECEB393963FA9199AB61A3F449061E048FA2C1F91897C5A60A4D30D0C276DE88EA143BA4FC +545FFC8F0B0950A38AAD126D73DA6BBDBDB480C3AFF4D2C7657A33652D5728E1866DB82B8F1A8A +72235DAB477C38ECFCCD0CDBB77D30A0436FDDC1D70426C0C5B408A4ADD039CC2B5750B7BB5E07 +CC56039DB7FF3298151718E167CD482E88AE498B2D89C79C572FCE5ECEA3BBFE5603FD7AF6F4DF +2C06BD8EF8501B52E8CBFB5481CA45CBAE44D87D455DFB6F030FBC0938EDFF80592B68390452F2 +42584D9C529BBAA2615F9A493BDB3C4BCD99422B69FB658ADA813AE39E447151F9312A005AB210 +D9FFB508C7A036BFA34C7264CFC1B92929C7CD892CD8BE48D388545B8CE7A79F70D0F1B852625D +F331D75342E9EC57219DE4E61BFFEB066D82DC6256892E89B25BCE034F7F6FF09D7DC8ABBC8739 +3B70FDAB372D2FDFC51902A6E7FBE5DF3F41A91DAFA35D9A99A18DCD9E9D9050CA9D6FD417C9B8 +DE3C0648F8458BA2E0ABCEE10E759C97F019D1A1C8E1CC9EC8A6680C2566F42E478EB1F5706435 +16EBAF85E4F9E972BA3FA6D20B8BD1734229563A1ADA6D4D1857257EB760050F4FD997090653CA +7771430101EEE3BCA1EA8E5F230F1B54E25A50458A1F7EBC35AEC36A88E4E345EF4CD9F97978EC +E8F3C53ABD56FD3DB6C71206DEB0058509F24D0EB4C68BCFAD5A773EFD04F5472984000960F67E +261B9152A176B230EB447633653ED0CBD3F50B214773DB454E89625BE27B7B75C93330E1F782BE +EA101988B04AEF3601BA7FE868F614035647349D97F9F1AA598FD808885D91F5E24FE348015E46 +D80FCC9E62 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +%!PS-Adobe-2.0 +%%Version: 0.1 +%%Pages: (atend) +%%EndComments +% +% Version 3.3.2 prologue for troff files. +% + +/#copies 1 store +/aspectratio 1 def +/formsperpage 1 def +/landscape false def +/linewidth .3 def +/magnification 1 def +/margin 0 def +/orientation 0 def +/resolution 720 def +/rotation 1 def +/xoffset 0 def +/yoffset 0 def + +/roundpage true def +/useclippath true def +/pagebbox [0 0 612 792] def + +/R /Times-Roman def +/I /Times-Italic def +/B /Times-Bold def +/BI /Times-BoldItalic def +/H /Helvetica def +/HI /Helvetica-Oblique def +/HB /Helvetica-Bold def +/HX /Helvetica-BoldOblique def +/CW /Courier def +/CO /Courier def +/CI /Courier-Oblique def +/CB /Courier-Bold def +/CX /Courier-BoldOblique def +/PA /Palatino-Roman def +/PI /Palatino-Italic def +/PB /Palatino-Bold def +/PX /Palatino-BoldItalic def +/Hr /Helvetica-Narrow def +/Hi /Helvetica-Narrow-Oblique def +/Hb /Helvetica-Narrow-Bold def +/Hx /Helvetica-Narrow-BoldOblique def +/KR /Bookman-Light def +/KI /Bookman-LightItalic def +/KB /Bookman-Demi def +/KX /Bookman-DemiItalic def +/AR /AvantGarde-Book def +/AI /AvantGarde-BookOblique def +/AB /AvantGarde-Demi def +/AX /AvantGarde-DemiOblique def +/NR /NewCenturySchlbk-Roman def +/NI /NewCenturySchlbk-Italic def +/NB /NewCenturySchlbk-Bold def +/NX /NewCenturySchlbk-BoldItalic def +/ZD /ZapfDingbats def +/ZI /ZapfChancery-MediumItalic def +/S /S def +/S1 /S1 def +/GR /Symbol def + +/inch {72 mul} bind def +/min {2 copy gt {exch} if pop} bind def + +/setup { + counttomark 2 idiv {def} repeat pop + + landscape {/orientation 90 orientation add def} if + /scaling 72 resolution div def + linewidth setlinewidth + 1 setlinecap + + pagedimensions + xcenter ycenter translate + orientation rotation mul rotate + width 2 div neg height 2 div translate + xoffset inch yoffset inch neg translate + margin 2 div dup neg translate + magnification dup aspectratio mul scale + scaling scaling scale + + addmetrics + 0 0 moveto +} def + +/pagedimensions { + useclippath userdict /gotpagebbox known not and { + /pagebbox [clippath pathbbox newpath] def + roundpage currentdict /roundpagebbox known and {roundpagebbox} if + } if + pagebbox aload pop + 4 -1 roll exch 4 1 roll 4 copy + landscape {4 2 roll} if + sub /width exch def + sub /height exch def + add 2 div /xcenter exch def + add 2 div /ycenter exch def + userdict /gotpagebbox true put +} def + +/addmetrics { + /Symbol /S null Sdefs cf + /Times-Roman /S1 StandardEncoding dup length array copy S1defs cf +} def + +/pagesetup { + /page exch def + currentdict /pagedict known currentdict page known and { + page load pagedict exch get cvx exec + } if +} def + +/decodingdefs [ + {counttomark 2 idiv {y moveto show} repeat} + {neg /y exch def counttomark 2 idiv {y moveto show} repeat} + {neg moveto {2 index stringwidth pop sub exch div 0 32 4 -1 roll widthshow} repeat} + {neg moveto {spacewidth sub 0.0 32 4 -1 roll widthshow} repeat} + {counttomark 2 idiv {y moveto show} repeat} + {neg setfunnytext} +] def + +/setdecoding {/t decodingdefs 3 -1 roll get bind def} bind def + +/w {neg moveto show} bind def +/m {neg dup /y exch def moveto} bind def +/done {/lastpage where {pop lastpage} if} def + +/f { + dup /font exch def findfont exch + dup /ptsize exch def scaling div dup /size exch def scalefont setfont + linewidth ptsize mul scaling 10 mul div setlinewidth + /spacewidth ( ) stringwidth pop def +} bind def + +/changefont { + /fontheight exch def + /fontslant exch def + currentfont [ + 1 0 + fontheight ptsize div fontslant sin mul fontslant cos div + fontheight ptsize div + 0 0 + ] makefont setfont +} bind def + +/sf {f} bind def + +/cf { + dup length 2 idiv + /entries exch def + /chtab exch def + /newencoding exch def + /newfont exch def + + findfont dup length 1 add dict + /newdict exch def + {1 index /FID ne {newdict 3 1 roll put}{pop pop} ifelse} forall + + newencoding type /arraytype eq {newdict /Encoding newencoding put} if + + newdict /Metrics entries dict put + newdict /Metrics get + begin + chtab aload pop + 1 1 entries {pop def} for + newfont newdict definefont pop + end +} bind def + +% +% A few arrays used to adjust reference points and character widths in some +% of the printer resident fonts. If square roots are too high try changing +% the lines describing /radical and /radicalex to, +% +% /radical [0 -75 550 0] +% /radicalex [-50 -75 500 0] +% +% Move braceleftbt a bit - default PostScript character is off a bit. +% + +/Sdefs [ + /bracketlefttp [201 500] + /bracketleftbt [201 500] + /bracketrighttp [-81 380] + /bracketrightbt [-83 380] + /braceleftbt [203 490] + /bracketrightex [220 -125 500 0] + /radical [0 0 550 0] + /radicalex [-50 0 500 0] + /parenleftex [-20 -170 0 0] + /integral [100 -50 500 0] + /infinity [10 -75 730 0] +] def + +/S1defs [ + /underscore [0 80 500 0] + /endash [7 90 650 0] +] def +% +% Version 3.3.2 drawing procedures for dpost. Automatically pulled in when +% needed. +% + +/inpath false def +/savematrix matrix def + +/Dl { + inpath + {pop pop neg lineto} + {newpath neg moveto neg lineto stroke} + ifelse +} bind def + +/De { + /y1 exch 2 div def + /x1 exch 2 div def + /savematrix savematrix currentmatrix def + neg exch x1 add exch translate + x1 y1 scale + 0 0 1 0 360 + inpath + {1 0 moveto arc savematrix setmatrix} + {newpath arc savematrix setmatrix stroke} + ifelse +} bind def + +/Da { + /dy2 exch def + /dx2 exch def + /dy1 exch def + /dx1 exch def + dy1 add neg exch dx1 add exch + dx1 dx1 mul dy1 dy1 mul add sqrt + dy1 dx1 neg atan + dy2 neg dx2 atan + inpath + {arc} + {newpath arc stroke} + ifelse +} bind def + +/DA { + /dy2 exch def + /dx2 exch def + /dy1 exch def + /dx1 exch def + dy1 add neg exch dx1 add exch + dx1 dx1 mul dy1 dy1 mul add sqrt + dy1 dx1 neg atan + dy2 neg dx2 atan + inpath + {arcn} + {newpath arcn stroke} + ifelse +} bind def + +/Ds { + /y2 exch def + /x2 exch def + /y1 exch def + /x1 exch def + /y0 exch def + /x0 exch def + x0 5 x1 mul add 6 div + y0 5 y1 mul add -6 div + x2 5 x1 mul add 6 div + y2 5 y1 mul add -6 div + x1 x2 add 2 div + y1 y2 add -2 div + inpath + {curveto} + {newpath x0 x1 add 2 div y0 y1 add -2 div moveto curveto stroke} + ifelse +} bind def +% +% Tries to round clipping path dimensions, as stored in array pagebbox, so they +% match one of the known sizes in the papersizes array. Lower left coordinates +% are always set to 0. +% + +/roundpagebbox { + 7 dict begin + /papersizes [8.5 inch 11 inch 14 inch 17 inch] def + + /mappapersize { + /val exch def + /slop .5 inch def + /diff slop def + /j 0 def + 0 1 papersizes length 1 sub { + /i exch def + papersizes i get val sub abs + dup diff le {/diff exch def /j i def} {pop} ifelse + } for + diff slop lt {papersizes j get} {val} ifelse + } def + + pagebbox 0 0 put + pagebbox 1 0 put + pagebbox dup 2 get mappapersize 2 exch put + pagebbox dup 3 get mappapersize 3 exch put + end +} bind def + +%%EndProlog +%%BeginSetup +mark +% +% Encoding vector and redefinition of findfont for the ISO Latin1 standard. +% The 18 characters missing from ROM based fonts on older printers are noted +% below. +% + +/ISOLatin1Encoding [ + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /space + /exclam + /quotedbl + /numbersign + /dollar + /percent + /ampersand + /quoteright + /parenleft + /parenright + /asterisk + /plus + /comma + /minus + /period + /slash + /zero + /one + /two + /three + /four + /five + /six + /seven + /eight + /nine + /colon + /semicolon + /less + /equal + /greater + /question + /at + /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 + /bracketleft + /backslash + /bracketright + /asciicircum + /underscore + /quoteleft + /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 + /braceleft + /bar + /braceright + /asciitilde + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /dotlessi + /grave + /acute + /circumflex + /tilde + /macron + /breve + /dotaccent + /dieresis + /.notdef + /ring + /cedilla + /.notdef + /hungarumlaut + /ogonek + /caron + /space + /exclamdown + /cent + /sterling + /currency + /yen + /brokenbar % missing + /section + /dieresis + /copyright + /ordfeminine + /guillemotleft + /logicalnot + /hyphen + /registered + /macron + /degree % missing + /plusminus % missing + /twosuperior % missing + /threesuperior % missing + /acute + /mu % missing + /paragraph + /periodcentered + /cedilla + /onesuperior % missing + /ordmasculine + /guillemotright + /onequarter % missing + /onehalf % missing + /threequarters % missing + /questiondown + /Agrave + /Aacute + /Acircumflex + /Atilde + /Adieresis + /Aring + /AE + /Ccedilla + /Egrave + /Eacute + /Ecircumflex + /Edieresis + /Igrave + /Iacute + /Icircumflex + /Idieresis + /Eth % missing + /Ntilde + /Ograve + /Oacute + /Ocircumflex + /Otilde + /Odieresis + /multiply % missing + /Oslash + /Ugrave + /Uacute + /Ucircumflex + /Udieresis + /Yacute % missing + /Thorn % missing + /germandbls + /agrave + /aacute + /acircumflex + /atilde + /adieresis + /aring + /ae + /ccedilla + /egrave + /eacute + /ecircumflex + /edieresis + /igrave + /iacute + /icircumflex + /idieresis + /eth % missing + /ntilde + /ograve + /oacute + /ocircumflex + /otilde + /odieresis + /divide % missing + /oslash + /ugrave + /uacute + /ucircumflex + /udieresis + /yacute % missing + /thorn % missing + /ydieresis +] def + +/NewFontDirectory FontDirectory maxlength dict def + +% +% Apparently no guarantee findfont is defined in systemdict so the obvious +% +% systemdict /findfont get exec +% +% can generate an error. So far the only exception is a VT600 (version 48.0). +% + +userdict /@RealFindfont known not { + userdict begin + /@RealFindfont systemdict begin /findfont load end def + end +} if + +/findfont { + dup NewFontDirectory exch known not { + dup + %dup systemdict /findfont get exec % not always in systemdict + dup userdict /@RealFindfont get exec + dup /Encoding get StandardEncoding eq { + dup length dict begin + {1 index /FID ne {def}{pop pop} ifelse} forall + /Encoding ISOLatin1Encoding def + currentdict + end + /DummyFontName exch definefont + } if + NewFontDirectory 3 1 roll put + } if + NewFontDirectory exch get +} bind def + +%%Patch from lp +%%EndPatch from lp + +setup +%%EndSetup +%%Page: 1 1 +/saveobj save def +mark +1 pagesetup +12 /LucidaSans-Demi f +(Plan 9) 2228 1220 w +(from Bell) 2644 1220 w +(Labs) 3243 1220 w +10 /LucidaSans-Italic f +(Rob Pike) 2674 1480 w +(Dave Presotto) 2544 1620 w +(Sean Dorward) 2535 1760 w +(Bob Flandrena) 2530 1900 w +(Ken Thompson) 2523 2040 w +(Howard Trickey) 2497 2180 w +(Phil Winterbottom) 2443 2320 w +10 /LucidaSansUnicode00 f +(Bell Laboratories) 2476 2520 w +(Murray Hill, New Jersey 07974) 2146 2660 w +(USA) 2784 2800 w +10 /LucidaSans-Demi f +(Motivation) 720 3400 w +10 /LucidaSansUnicode00 f +(By) 720 3556 w +(the) 864 3556 w +(mid) 1053 3556 w +(1980) 1272 3556 w +10 /LucidaSansUnicode20 f +(\031) 1524 3556 w +10 /LucidaSansUnicode00 f +(s,) 1556 3556 w +(the) 1673 3556 w +(trend) 1862 3556 w +(in) 2155 3556 w +(computing) 2280 3556 w +(was) 2834 3556 w +(away) 3051 3556 w +(from) 3324 3556 w +(large) 3590 3556 w +(centralized) 3868 3556 w +(time-shared) 4439 3556 w +(computers) 720 3676 w +(towards) 1292 3676 w +(networks) 1734 3676 w +(of) 2234 3676 w +(smaller,) 2388 3676 w +(personal) 2830 3676 w +(machines,) 3304 3676 w +(typically) 3851 3676 w +(UNIX) 4304 3676 w +10 /LucidaSansUnicode20 f +(\030) 4595 3676 w +10 /LucidaSansUnicode00 f +(worksta\255) 4627 3676 w +(tions) 720 3796 w +10 /LucidaSansUnicode20 f +(\031) 960 3796 w +10 /LucidaSansUnicode00 f +(.) 992 3796 w +(People) 1097 3796 w +(had) 1458 3796 w +(grown) 1679 3796 w +(weary) 2023 3796 w +(of) 2345 3796 w +(overloaded,) 2484 3796 w +(bureaucratic) 3095 3796 w +(timesharing) 3740 3796 w +(machines) 4359 3796 w +(and) 4860 3796 w +(were) 720 3916 w +(eager) 990 3916 w +(to) 1300 3916 w +(move) 1438 3916 w +(to) 1740 3916 w +(small,) 1878 3916 w +(self-maintained) 2207 3916 w +(systems,) 3019 3916 w +(even) 3482 3916 w +(if) 3748 3916 w +(that) 3854 3916 w +(meant) 4085 3916 w +(a) 4428 3916 w +(net) 4523 3916 w +(loss) 4718 3916 w +(in) 4949 3916 w +(computing) 720 4036 w +(power.) 1273 4036 w +(As) 1668 4036 w +(microcomputers) 1821 4036 w +(became) 2644 4036 w +(faster,) 3051 4036 w +(even) 3393 4036 w +(that) 3652 4036 w +(loss) 3876 4036 w +(was) 4101 4036 w +(recovered,) 4317 4036 w +(and) 4860 4036 w +(this style of computing remains popular today.) 720 4156 w +(In) 970 4312 w +(the) 1097 4312 w +(rush) 1288 4312 w +(to) 1540 4312 w +(personal) 1674 4312 w +(workstations,) 2128 4312 w +(though,) 2816 4312 w +(some) 3230 4312 w +(of) 3527 4312 w +(their) 3661 4312 w +(weaknesses) 3922 4312 w +(were) 4531 4312 w +(over\255) 4797 4312 w +(looked.) 720 4432 w +(First,) 1154 4432 w +(the) 1440 4432 w +(operating) 1637 4432 w +(system) 2145 4432 w +(they) 2527 4432 w +(run,) 2776 4432 w +(UNIX,) 3015 4432 w +(is) 3324 4432 w +(itself) 3446 4432 w +(an) 3727 4432 w +(old) 3886 4432 w +(timesharing) 4081 4432 w +(system) 4700 4432 w +(and) 720 4552 w +(has) 954 4552 w +(had) 1176 4552 w +(trouble) 1410 4552 w +(adapting) 1813 4552 w +(to) 2293 4552 w +(ideas) 2445 4552 w +(born) 2753 4552 w +(after) 3034 4552 w +(it.) 3314 4552 w +(Graphics) 3498 4552 w +(and) 3976 4552 w +(networking) 4210 4552 w +(were) 4810 4552 w +(added) 720 4672 w +(to) 1057 4672 w +(UNIX) 1192 4672 w +(well) 1464 4672 w +(into) 1692 4672 w +(its) 1918 4672 w +(lifetime) 2072 4672 w +(and) 2475 4672 w +(remain) 2692 4672 w +(poorly) 3065 4672 w +(integrated) 3409 4672 w +(and) 3944 4672 w +(difficult) 4161 4672 w +(to) 4571 4672 w +(admin\255) 4705 4672 w +(ister.) 720 4792 w +(More) 1040 4792 w +(important,) 1326 4792 w +(the) 1878 4792 w +(early) 2075 4792 w +(focus) 2351 4792 w +(on) 2656 4792 w +(having) 2822 4792 w +(private) 3187 4792 w +(machines) 3563 4792 w +(made) 4065 4792 w +(it) 4375 4792 w +(difficult) 4484 4792 w +(for) 4901 4792 w +(networks) 720 4912 w +(of) 1198 4912 w +(machines) 1330 4912 w +(to) 1823 4912 w +(serve) 1955 4912 w +(as) 2245 4912 w +(seamlessly) 2385 4912 w +(as) 2942 4912 w +(the) 3082 4912 w +(old) 3271 4912 w +(monolithic) 3458 4912 w +(timesharing) 4006 4912 w +(systems.) 4617 4912 w +(Timesharing) 720 5032 w +(centralized) 1360 5032 w +(the) 1933 5032 w +(management) 2125 5032 w +(and) 2793 5032 w +(amortization) 3010 5032 w +(of) 3664 5032 w +(costs) 3800 5032 w +(and) 4089 5032 w +(resources;) 4307 5032 w +(per\255) 4847 5032 w +(sonal) 720 5152 w +(computing) 1017 5152 w +(fractured,) 1576 5152 w +(democratized,) 2090 5152 w +(and) 2823 5152 w +(ultimately) 3042 5152 w +(amplified) 3560 5152 w +(administrative) 4052 5152 w +(prob\255) 4779 5152 w +(lems.) 720 5272 w +(The) 1082 5272 w +(choice) 1332 5272 w +(of) 1711 5272 w +(an) 1879 5272 w +(old) 2066 5272 w +(timesharing) 2289 5272 w +(operating) 2936 5272 w +(system) 3472 5272 w +(to) 3882 5272 w +(run) 4050 5272 w +(those) 4285 5272 w +(personal) 4622 5272 w +(machines made it difficult to bind things together smoothly.) 720 5392 w +(Plan) 970 5548 w +(9) 1209 5548 w +(began) 1310 5548 w +(in) 1646 5548 w +(the) 1775 5548 w +(late) 1968 5548 w +(1980) 2183 5548 w +10 /LucidaSansUnicode20 f +(\031) 2435 5548 w +10 /LucidaSansUnicode00 f +(s) 2467 5548 w +(as) 2556 5548 w +(an) 2700 5548 w +(attempt) 2855 5548 w +(to) 3271 5548 w +(have) 3407 5548 w +(it) 3670 5548 w +(both) 3774 5548 w +(ways:) 4035 5548 w +(to) 4340 5548 w +(build) 4476 5548 w +(a) 4760 5548 w +(sys\255) 4853 5548 w +(tem) 720 5668 w +(that) 949 5668 w +(was) 1183 5668 w +(centrally) 1408 5668 w +(administered) 1862 5668 w +(and) 2539 5668 w +(cost-effective) 2761 5668 w +(using) 3472 5668 w +(cheap) 3780 5668 w +(modern) 4109 5668 w +(microcom\255) 4527 5668 w +(puters) 720 5788 w +(as) 1070 5788 w +(its) 1216 5788 w +(computing) 1373 5788 w +(elements.) 1933 5788 w +(The) 2477 5788 w +(idea) 2698 5788 w +(was) 2941 5788 w +(to) 3164 5788 w +(build) 3302 5788 w +(a) 3588 5788 w +(time-sharing) 3684 5788 w +(system) 4360 5788 w +(out) 4741 5788 w +(of) 4942 5788 w +(workstations,) 720 5908 w +(but) 1426 5908 w +(in) 1642 5908 w +(a) 1787 5908 w +(novel) 1895 5908 w +(way.) 2208 5908 w +(Different) 2509 5908 w +(computers) 2992 5908 w +(would) 3560 5908 w +(handle) 3905 5908 w +(different) 4285 5908 w +(tasks:) 4756 5908 w +(small,) 720 6028 w +(cheap) 1048 6028 w +(machines) 1375 6028 w +(in) 1874 6028 w +(people) 2005 6028 w +10 /LucidaSansUnicode20 f +(\031) 2333 6028 w +10 /LucidaSansUnicode00 f +(s) 2365 6028 w +(offices) 2456 6028 w +(would) 2818 6028 w +(serve) 3150 6028 w +(as) 3446 6028 w +(terminals) 3592 6028 w +(providing) 4085 6028 w +(access) 4587 6028 w +(to) 4942 6028 w +(large,) 720 6148 w +(central,) 1028 6148 w +(shared) 1424 6148 w +(resources) 1785 6148 w +(such) 2288 6148 w +(as) 2547 6148 w +(computing) 2686 6148 w +(servers) 3239 6148 w +(and) 3620 6148 w +(file) 3833 6148 w +(servers.) 4017 6148 w +(For) 4462 6148 w +(the cen\255) 4651 6148 w +(tral) 720 6268 w +(machines,) 937 6268 w +(the) 1484 6268 w +(coming) 1695 6268 w +(wave) 2109 6268 w +(of) 2405 6268 w +(shared-memory) 2559 6268 w +(multiprocessors) 3397 6268 w +(seemed) 4230 6268 w +(obvious) 4661 6268 w +(candidates.) 720 6388 w +(The) 1365 6388 w +(philosophy) 1604 6388 w +(is) 2195 6388 w +(much) 2333 6388 w +(like) 2659 6388 w +(that) 2889 6388 w +(of) 3138 6388 w +(the) 3294 6388 w +(Cambridge) 3507 6388 w +(Distributed) 4096 6388 w +(System) 4697 6388 w +([NeHe82].) 720 6508 w +(The) 1269 6508 w +(early) 1483 6508 w +(catch) 1749 6508 w +(phrase) 2038 6508 w +(was) 2399 6508 w +(to) 2615 6508 w +(build) 2746 6508 w +(a) 3025 6508 w +(UNIX) 3113 6508 w +(out) 3381 6508 w +(of) 3574 6508 w +(a) 3705 6508 w +(lot) 3793 6508 w +(of) 3953 6508 w +(little) 4084 6508 w +(systems,) 4334 6508 w +(not) 4791 6508 w +(a) 4985 6508 w +(system out of a lot of little UNIXes.) 720 6628 w +(The) 970 6784 w +(problems) 1206 6784 w +(with) 1718 6784 w +(UNIX) 1978 6784 w +(were) 2268 6784 w +(too) 2553 6784 w +(deep) 2767 6784 w +(to) 3060 6784 w +(fix,) 3213 6784 w +(but) 3427 6784 w +(some) 3645 6784 w +(of) 3962 6784 w +(its) 4116 6784 w +(ideas) 4289 6784 w +(could) 4599 6784 w +(be) 4921 6784 w +(brought) 720 6904 w +(along.) 1158 6904 w +(The) 1541 6904 w +(best) 1772 6904 w +(was) 2029 6904 w +(its) 2262 6904 w +(use) 2429 6904 w +(of) 2648 6904 w +(the) 2796 6904 w +(file) 3000 6904 w +(system) 3200 6904 w +(to) 3589 6904 w +(coordinate) 3736 6904 w +(naming) 4301 6904 w +(of) 4713 6904 w +(and) 4860 6904 w +8 /S1 f +(__________________) 720 7004 w +8 /LucidaSansUnicode00 f +(Appeared) 720 7104 w +(in) 1118 7104 w +(a) 1217 7104 w +(slightly) 1287 7104 w +(different) 1595 7104 w +(form) 1957 7104 w +(in) 2169 7104 w +8 /LucidaSans-Italic f +(Computing) 2268 7104 w +(Systems,) 2719 7104 w +8 /LucidaSansUnicode00 f +(Vol) 3083 7104 w +(8) 3233 7104 w +(#3,) 3309 7104 w +(Summer) 3461 7104 w +(1995,) 3806 7104 w +(pp.) 4058 7104 w +(221-254.) 4210 7104 w +cleartomark +showpage +saveobj restore +%%EndPage: 1 1 +%%Page: 2 2 +/saveobj save def +mark +2 pagesetup +10 /LucidaSansUnicode00 f +(\255 2 \255) 2783 480 w +(access) 720 840 w +(to) 1077 840 w +(resources,) 1217 840 w +(even) 1761 840 w +(those,) 2029 840 w +(such) 2370 840 w +(as) 2638 840 w +(devices,) 2786 840 w +(not) 3218 840 w +(traditionally) 3420 840 w +(treated) 4041 840 w +(as) 4428 840 w +(files.) 4576 840 w +(For) 4884 840 w +(Plan) 720 960 w +(9,) 958 960 w +(we) 1089 960 w +(adopted) 1258 960 w +(this) 1692 960 w +(idea) 1907 960 w +(by) 2146 960 w +(designing) 2297 960 w +(a) 2809 960 w +(network-level) 2900 960 w +(protocol,) 3608 960 w +(called) 4080 960 w +(9P,) 4399 960 w +(to) 4585 960 w +(enable) 4719 960 w +(machines) 720 1080 w +(to) 1215 1080 w +(access) 1349 1080 w +(files) 1700 1080 w +(on) 1938 1080 w +(remote) 2097 1080 w +(systems.) 2477 1080 w +(Above) 2968 1080 w +(this,) 3305 1080 w +(we) 3553 1080 w +(built) 3723 1080 w +(a) 3980 1080 w +(naming) 4072 1080 w +(system) 4472 1080 w +(that) 4849 1080 w +(lets) 720 1200 w +(people) 934 1200 w +(and) 1303 1200 w +(their) 1524 1200 w +(computing) 1790 1200 w +(agents) 2351 1200 w +(build) 2715 1200 w +(customized) 3002 1200 w +(views) 3603 1200 w +(of) 3909 1200 w +(the) 4048 1200 w +(resources) 4244 1200 w +(in) 4754 1200 w +(the) 4885 1200 w +(network.) 720 1320 w +(This is) 1208 1320 w +(where) 1558 1320 w +(Plan) 1883 1320 w +(9) 2117 1320 w +(first) 2213 1320 w +(began) 2441 1320 w +(to) 2772 1320 w +(look) 2903 1320 w +(different:) 3145 1320 w +(a) 3628 1320 w +(Plan) 3716 1320 w +(9) 3950 1320 w +(user) 4046 1320 w +(builds) 4289 1320 w +(a) 4619 1320 w +(private) 4707 1320 w +(computing) 720 1440 w +(environment) 1274 1440 w +(and) 1919 1440 w +(recreates) 2133 1440 w +(it) 2611 1440 w +(wherever) 2711 1440 w +(desired,) 3186 1440 w +(rather) 3610 1440 w +(than) 3935 1440 w +(doing) 4184 1440 w +(all) 4494 1440 w +(comput\255) 4640 1440 w +(ing) 720 1560 w +(on) 911 1560 w +(a) 1072 1560 w +(private) 1165 1560 w +(machine.) 1536 1560 w +(It) 2046 1560 w +(soon) 2150 1560 w +(became) 2423 1560 w +(clear) 2835 1560 w +(that) 3105 1560 w +(this) 3334 1560 w +(model) 3551 1560 w +(was) 3892 1560 w +(richer) 4114 1560 w +(than) 4433 1560 w +(we) 4688 1560 w +(had) 4860 1560 w +(foreseen,) 720 1680 w +(and) 1229 1680 w +(the) 1466 1680 w +(ideas) 1678 1680 w +(of) 1989 1680 w +(per-process) 2144 1680 w +(name) 2793 1680 w +(spaces) 3116 1680 w +(and) 3499 1680 w +(file-system-like) 3735 1680 w +(resources) 4570 1680 w +(were extended throughout the system) 720 1800 w +10 /LucidaSansUnicode20 f +(\024) 2574 1800 w +10 /LucidaSansUnicode00 f +(to processes, graphics, even the network itself.) 2674 1800 w +(By) 970 1956 w +(1989) 1123 1956 w +(the) 1418 1956 w +(system) 1616 1956 w +(had) 1999 1956 w +(become) 2223 1956 w +(solid) 2647 1956 w +(enough) 2924 1956 w +(that) 3333 1956 w +(some) 3568 1956 w +(of) 3873 1956 w +(us) 4015 1956 w +(began) 4172 1956 w +(using) 4514 1956 w +(it) 4824 1956 w +(as) 4934 1956 w +(our) 720 2076 w +(exclusive) 923 2076 w +(computing) 1409 2076 w +(environment.) 1968 2076 w +(This) 2682 2076 w +(meant) 2926 2076 w +(bringing) 3268 2076 w +(along) 3717 2076 w +(many) 4024 2076 w +(of) 4324 2076 w +(the) 4460 2076 w +(services) 4653 2076 w +(and) 720 2196 w +(applications) 934 2196 w +(we) 1553 2196 w +(had) 1720 2196 w +(used) 1934 2196 w +(on) 2200 2196 w +(UNIX.) 2357 2196 w +(We) 2690 2196 w +(used) 2866 2196 w +(this) 3132 2196 w +(opportunity) 3345 2196 w +(to) 3948 2196 w +(revisit) 4081 2196 w +(many) 4411 2196 w +(issues,) 4708 2196 w +(not) 720 2316 w +(just) 920 2316 w +(kernel-resident) 1140 2316 w +(ones,) 1935 2316 w +(that) 2237 2316 w +(we) 2468 2316 w +(felt) 2641 2316 w +(UNIX) 2840 2316 w +(addressed) 3115 2316 w +(badly.) 3654 2316 w +(Plan) 4019 2316 w +(9) 4259 2316 w +(has) 4361 2316 w +(new) 4568 2316 w +(com\255) 4802 2316 w +(pilers,) 720 2436 w +(languages,) 1064 2436 w +(libraries,) 1633 2436 w +(window) 2102 2436 w +(systems,) 2515 2436 w +(and) 2982 2436 w +(many) 3206 2436 w +(new) 3512 2436 w +(applications.) 3751 2436 w +(Many) 4444 2436 w +(of) 4743 2436 w +(the) 4885 2436 w +(old tools were dropped, while those brought along have been polished or rewritten.) 720 2556 w +(Why) 970 2712 w +(be) 1216 2712 w +(so) 1381 2712 w +(all-encompassing?) 1539 2712 w +(The) 2526 2712 w +(distinction) 2754 2712 w +(between) 3312 2712 w +(operating) 3766 2712 w +(system,) 4279 2712 w +(library,) 4698 2712 w +(and) 720 2832 w +(application) 935 2832 w +(is) 1504 2832 w +(important) 1619 2832 w +(to) 2132 2832 w +(the) 2265 2832 w +(operating) 2455 2832 w +(system) 2956 2832 w +(researcher) 3331 2832 w +(but) 3876 2832 w +(uninteresting) 4073 2832 w +(to) 4753 2832 w +(the) 4885 2832 w +(user.) 720 2952 w +(What) 1032 2952 w +(matters) 1310 2952 w +(is) 1718 2952 w +(clean) 1836 2952 w +(functionality.) 2127 2952 w +(By) 2832 2952 w +(building) 2980 2952 w +(a) 3417 2952 w +(complete) 3510 2952 w +(new) 3994 2952 w +(system,) 4227 2952 w +(we) 4638 2952 w +(were) 4810 2952 w +(able) 720 3072 w +(to) 962 3072 w +(solve) 1099 3072 w +(problems) 1387 3072 w +(where) 1883 3072 w +(we) 2214 3072 w +(thought) 2386 3072 w +(they) 2808 3072 w +(should) 3054 3072 w +(be) 3421 3072 w +(solved.) 3579 3072 w +(For) 3993 3072 w +(example,) 4187 3072 w +(there) 4670 3072 w +(is) 4960 3072 w +(no) 720 3192 w +(real) 886 3192 w +10 /LucidaSansUnicode20 f +(\030) 1110 3192 w +10 /LucidaSansUnicode00 f +(tty) 1142 3192 w +(driver) 1311 3192 w +10 /LucidaSansUnicode20 f +(\031) 1593 3192 w +10 /LucidaSansUnicode00 f +(in) 1668 3192 w +(the) 1802 3192 w +(kernel;) 2000 3192 w +(that) 2377 3192 w +(is) 2611 3192 w +(the) 2734 3192 w +(job) 2932 3192 w +(of) 3129 3192 w +(the) 3270 3192 w +(window) 3469 3192 w +(system.) 3882 3192 w +(In) 4330 3192 w +(the) 4465 3192 w +(modern) 4664 3192 w +(world,) 720 3312 w +(multi-vendor) 1062 3312 w +(and) 1743 3312 w +(multi-architecture) 1961 3312 w +(computing) 2885 3312 w +(are) 3443 3312 w +(essential,) 3633 3312 w +(yet) 4129 3312 w +(the) 4312 3312 w +(usual) 4505 3312 w +(com\255) 4802 3312 w +(pilers) 720 3432 w +(and) 1028 3432 w +(tools) 1247 3432 w +(assume) 1525 3432 w +(the) 1932 3432 w +(program) 2126 3432 w +(is) 2581 3432 w +(being) 2700 3432 w +(built) 3011 3432 w +(to) 3270 3432 w +(run) 3407 3432 w +(locally;) 3611 3432 w +(we) 3988 3432 w +(needed) 4161 3432 w +(to) 4557 3432 w +(rethink) 4695 3432 w +(these) 720 3552 w +(issues.) 1028 3552 w +(Most) 1438 3552 w +(important,) 1719 3552 w +(though,) 2275 3552 w +(the) 2699 3552 w +(test) 2900 3552 w +(of) 3126 3552 w +(a) 3269 3552 w +(system) 3369 3552 w +(is) 3754 3552 w +(the) 3879 3552 w +(computing) 4079 3552 w +(environ\255) 4644 3552 w +(ment) 720 3672 w +(it) 1023 3672 w +(provides.) 1144 3672 w +(Producing) 1679 3672 w +(a) 2220 3672 w +(more) 2330 3672 w +(efficient) 2636 3672 w +(way) 3085 3672 w +(to) 3324 3672 w +(run) 3477 3672 w +(the) 3698 3672 w +(old) 3909 3672 w +(UNIX) 4118 3672 w +(warhorses) 4409 3672 w +(is) 4960 3672 w +(empty) 720 3792 w +(engineering;) 1056 3792 w +(we) 1700 3792 w +(were) 1868 3792 w +(more) 2133 3792 w +(interested) 2419 3792 w +(in) 2942 3792 w +(whether) 3068 3792 w +(the) 3494 3792 w +(new) 3684 3792 w +(ideas) 3914 3792 w +(suggested) 4202 3792 w +(by) 4736 3792 w +(the) 4885 3792 w +(architecture) 720 3912 w +(of) 1331 3912 w +(the) 1462 3912 w +(underlying) 1650 3912 w +(system) 2201 3912 w +(encourage) 2574 3912 w +(a) 3113 3912 w +(more) 3202 3912 w +(effective) 3487 3912 w +(way) 3932 3912 w +(of) 4150 3912 w +(working.) 4282 3912 w +(Thus,) 4770 3912 w +(although) 720 4032 w +(Plan) 1184 4032 w +(9) 1419 4032 w +(provides) 1516 4032 w +(an) 1966 4032 w +(emulation) 2117 4032 w +(environment) 2635 4032 w +(for) 3280 4032 w +(running) 3453 4032 w +(POSIX) 3867 4032 w +(commands,) 4179 4032 w +(it) 4773 4032 w +(is) 4872 4032 w +(a) 4985 4032 w +(backwater) 720 4152 w +(of) 1268 4152 w +(the) 1421 4152 w +(system.) 1631 4152 w +(The) 2090 4152 w +(vast) 2326 4152 w +(majority) 2576 4152 w +(of) 3029 4152 w +(system) 3182 4152 w +(software) 3577 4152 w +(is) 4047 4152 w +(developed) 4183 4152 w +(in) 4738 4152 w +(the) 4885 4152 w +10 /LucidaSansUnicode20 f +(\030) 720 4272 w +10 /LucidaSansUnicode00 f +(native) 752 4272 w +10 /LucidaSansUnicode20 f +(\031) 1043 4272 w +10 /LucidaSansUnicode00 f +(Plan 9 environment.) 1107 4272 w +(There) 970 4428 w +(are) 1285 4428 w +(benefits) 1474 4428 w +(to) 1902 4428 w +(having) 2037 4428 w +(an) 2396 4428 w +(all-new) 2550 4428 w +(system.) 2953 4428 w +(First,) 3394 4428 w +(our) 3675 4428 w +(laboratory) 3876 4428 w +(has) 4408 4428 w +(a) 4614 4428 w +(history) 4707 4428 w +(of) 720 4548 w +(building) 856 4548 w +(experimental) 1293 4548 w +(peripheral) 1968 4548 w +(boards.) 2500 4548 w +(To) 2935 4548 w +(make) 3096 4548 w +(it) 3395 4548 w +(easy) 3498 4548 w +(to) 3749 4548 w +(write) 3884 4548 w +(device) 4161 4548 w +(drivers,) 4505 4548 w +(we) 4907 4548 w +(want) 720 4668 w +(a) 987 4668 w +(system) 1078 4668 w +(that) 1454 4668 w +(is) 1681 4668 w +(available) 1797 4668 w +(in) 2257 4668 w +(source) 2385 4668 w +(form) 2744 4668 w +(\(no) 3013 4668 w +(longer) 3206 4668 w +(guaranteed) 3554 4668 w +(with) 4140 4668 w +(UNIX,) 4382 4668 w +(even) 4686 4668 w +(in) 4949 4668 w +(the) 720 4788 w +(laboratory) 928 4788 w +(in) 1476 4788 w +(which) 1620 4788 w +(it) 1954 4788 w +(was) 2073 4788 w +(born\).) 2309 4788 w +(Also,) 2686 4788 w +(we) 2981 4788 w +(want) 3167 4788 w +(to) 3451 4788 w +(redistribute) 3602 4788 w +(our) 4220 4788 w +(work,) 4437 4788 w +(which) 4759 4788 w +(means) 720 4908 w +(the) 1077 4908 w +(software) 1272 4908 w +(must) 1727 4908 w +(be) 2010 4908 w +(locally) 2169 4908 w +(produced.) 2515 4908 w +(For) 3079 4908 w +(example,) 3275 4908 w +(we) 3760 4908 w +(could) 3933 4908 w +(have) 4240 4908 w +(used) 4506 4908 w +(some) 4779 4908 w +(vendors) 720 5028 w +10 /LucidaSansUnicode20 f +(\031) 1106 5028 w +10 /LucidaSansUnicode00 f +(C) 1192 5028 w +(compilers) 1315 5028 w +(for) 1843 5028 w +(our) 2036 5028 w +(system,) 2254 5028 w +(but) 2680 5028 w +(even) 2895 5028 w +(had) 3174 5028 w +(we) 3407 5028 w +(overcome) 3593 5028 w +(the) 4117 5028 w +(problems) 4325 5028 w +(with) 4835 5028 w +(cross-compilation, we would have difficulty redistributing the result.) 720 5148 w +(This) 970 5304 w +(paper) 1211 5304 w +(serves) 1526 5304 w +(as) 1870 5304 w +(an) 2013 5304 w +(overview) 2167 5304 w +(of) 2628 5304 w +(the) 2763 5304 w +(system.) 2955 5304 w +(It) 3396 5304 w +(discusses) 3499 5304 w +(the) 4001 5304 w +(architecture) 4193 5304 w +(from) 4808 5304 w +(the) 720 5424 w +(lowest) 916 5424 w +(building) 1268 5424 w +(blocks) 1708 5424 w +(to) 2062 5424 w +(the) 2200 5424 w +(computing) 2395 5424 w +(environment) 2955 5424 w +(seen) 3606 5424 w +(by) 3871 5424 w +(users.) 4026 5424 w +(It) 4391 5424 w +(also) 4497 5424 w +(serves) 4733 5424 w +(as) 720 5544 w +(an) 860 5544 w +(introduction) 1011 5544 w +(to) 1640 5544 w +(the) 1772 5544 w +(rest) 1961 5544 w +(of) 2180 5544 w +(the) 2312 5544 w +(Plan) 2501 5544 w +(9) 2736 5544 w +(Programmer) 2833 5544 w +10 /LucidaSansUnicode20 f +(\031) 3431 5544 w +10 /LucidaSansUnicode00 f +(s) 3463 5544 w +(Manual,) 3548 5544 w +(which) 3964 5544 w +(it) 4280 5544 w +(accompanies.) 4381 5544 w +(More detail about topics in this paper can be found elsewhere in the manual.) 720 5664 w +10 /LucidaSans-Demi f +(Design) 720 5904 w +10 /LucidaSansUnicode00 f +(The) 970 6060 w +(view) 1193 6060 w +(of) 1449 6060 w +(the) 1589 6060 w +(system) 1786 6060 w +(is) 2168 6060 w +(built) 2290 6060 w +(upon) 2552 6060 w +(three) 2842 6060 w +(principles.) 3136 6060 w +(First,) 3716 6060 w +(resources) 4003 6060 w +(are) 4516 6060 w +(named) 4711 6060 w +(and) 720 6180 w +(accessed) 942 6180 w +(like) 1418 6180 w +(files) 1632 6180 w +(in) 1876 6180 w +(a) 2009 6180 w +(hierarchical) 2106 6180 w +(file) 2709 6180 w +(system.) 2901 6180 w +(Second,) 3346 6180 w +(there) 3766 6180 w +(is) 4059 6180 w +(a) 4180 6180 w +(standard) 4276 6180 w +(proto\255) 4744 6180 w +(col,) 720 6300 w +(called) 928 6300 w +(9P,) 1246 6300 w +(for) 1431 6300 w +(accessing) 1605 6300 w +(these) 2109 6300 w +(resources.) 2407 6300 w +(Third,) 2977 6300 w +(the) 3303 6300 w +(disjoint) 3494 6300 w +(hierarchies) 3892 6300 w +(provided) 4461 6300 w +(by) 4925 6300 w +(different) 720 6420 w +(services) 1180 6420 w +(are) 1609 6420 w +(joined) 1803 6420 w +(together) 2146 6420 w +(into) 2600 6420 w +(a) 2831 6420 w +(single) 2927 6420 w +(private) 3257 6420 w +(hierarchical) 3631 6420 w +(file) 4233 6420 w +(name) 4425 6420 w +(space.) 4732 6420 w +(The) 720 6540 w +(unusual) 950 6540 w +(properties) 1382 6540 w +(of) 1929 6540 w +(Plan) 2076 6540 w +(9) 2327 6540 w +(stem) 2440 6540 w +(from) 2727 6540 w +(the) 3009 6540 w +(consistent,) 3214 6540 w +(aggressive) 3793 6540 w +(application) 4358 6540 w +(of) 4942 6540 w +(these principles.) 720 6660 w +(A) 970 6816 w +(large) 1086 6816 w +(Plan) 1376 6816 w +(9) 1624 6816 w +(installation) 1734 6816 w +(has) 2317 6816 w +(a) 2532 6816 w +(number) 2634 6816 w +(of) 3058 6816 w +(computers) 3203 6816 w +(networked) 3765 6816 w +(together,) 4324 6816 w +(each) 4816 6816 w +(providing) 720 6936 w +(a) 1226 6936 w +(particular) 1325 6936 w +(class) 1832 6936 w +(of) 2113 6936 w +(service.) 2255 6936 w +(Shared) 2698 6936 w +(multiprocessor) 3072 6936 w +(servers) 3841 6936 w +(provide) 4232 6936 w +(comput\255) 4640 6936 w +(ing) 720 7056 w +(cycles;) 920 7056 w +(other) 1289 7056 w +(large) 1593 7056 w +(machines) 1883 7056 w +(offer) 2389 7056 w +(file) 2668 7056 w +(storage.) 2866 7056 w +(These) 3341 7056 w +(machines) 3677 7056 w +(are) 4184 7056 w +(located) 4384 7056 w +(in) 4784 7056 w +(an) 4923 7056 w +(air-conditioned) 720 7176 w +(machine) 1551 7176 w +(room) 2033 7176 w +(and) 2363 7176 w +(are) 2617 7176 w +(connected) 2843 7176 w +(by) 3415 7176 w +(high-performance) 3603 7176 w +(networks.) 4565 7176 w +(Lower) 720 7296 w +(bandwidth) 1057 7296 w +(networks) 1617 7296 w +(such) 2109 7296 w +(as) 2384 7296 w +(Ethernet) 2539 7296 w +(or) 2993 7296 w +(ISDN) 3144 7296 w +(connect) 3425 7296 w +(these) 3854 7296 w +(servers) 4165 7296 w +(to) 4563 7296 w +(office-) 4711 7296 w +cleartomark +showpage +saveobj restore +%%EndPage: 2 2 +%%Page: 3 3 +/saveobj save def +mark +3 pagesetup +10 /LucidaSansUnicode00 f +(\255 3 \255) 2783 480 w +(and) 720 840 w +(home-resident) 941 840 w +(workstations) 1707 840 w +(or) 2368 840 w +(PCs,) 2511 840 w +(called) 2758 840 w +(terminals) 3081 840 w +(in) 3574 840 w +(Plan) 3705 840 w +(9) 3946 840 w +(terminology.) 4049 840 w +(Figure) 4736 840 w +(1 shows the arrangement.) 720 960 w +1928 2878 1928 2640 Dl +1928 2639 2354 2639 Dl +2355 2639 2355 2877 Dl +2355 2878 1929 2878 Dl +1928 2758 1841 2758 Dl +2581 2878 2581 2640 Dl +2581 2639 3007 2639 Dl +3008 2639 3008 2877 Dl +3008 2878 2582 2878 Dl +2581 2878 2581 2640 Dl +2581 2639 3007 2639 Dl +3008 2639 3008 2877 Dl +3008 2878 2582 2878 Dl +3234 2878 3234 2640 Dl +3234 2639 3660 2639 Dl +3661 2639 3661 2877 Dl +3661 2878 3235 2878 Dl +2142 2878 2142 3041 Dl +3448 2878 3448 3041 Dl +2795 2878 2795 3041 Dl +2111 2878 2111 3041 Dl +2173 2878 2173 3041 Dl +2764 2878 2764 3041 Dl +2826 2878 2826 3041 Dl +3416 2878 3416 3041 Dl +3479 2878 3479 3041 Dl +2029 3072 4859 3072 Dl +2029 3104 4859 3104 Dl +3661 2758 3817 2758 Dl +3818 2589 3818 2846 Dl +3818 2589 150 -84 150 84 Da +4119 2589 -150 84 -150 -84 Da +4119 2589 4119 2846 Dl +3818 2846 150 -84 150 84 Da +(CPU) 2046 2778 w +(CPU) 2699 2778 w +1928 2878 1928 2640 Dl +1928 2639 2354 2639 Dl +2355 2639 2355 2877 Dl +2355 2878 1929 2878 Dl +900 2878 900 2640 Dl +900 2639 1326 2639 Dl +1326 2639 1326 2877 Dl +1326 2878 900 2878 Dl +(File) 1029 2778 w +1113 2878 1113 3034 Dl +969 3122 969 3379 Dl +969 3122 150 -84 150 84 Da +1270 3122 -150 84 -150 -84 Da +1270 3122 1270 3379 Dl +969 3379 150 -84 150 84 Da +(File) 3364 2778 w +900 2263 4778 2263 Dl +1113 2639 1113 2263 Dl +2142 2639 2142 2263 Dl +2795 2639 2795 2263 Dl +3448 2639 3448 2263 Dl +4564 2263 4564 2639 Dl +4351 2878 4351 2640 Dl +4351 2639 4777 2639 Dl +4778 2639 4778 2877 Dl +4778 2878 4352 2878 Dl +(Internet) 4670 1442 w +(Gateway) 4362 2778 w +4402 2263 4402 1887 Dl +4188 1886 4188 1648 Dl +4188 1647 4614 1647 Dl +4615 1647 4615 1885 Dl +4615 1886 4189 1886 Dl +(Gateway) 4200 1787 w +4402 1647 4402 1460 Dl +3534 1122 3534 1422 Dl +3446 1184 3621 1184 Dl +3446 1247 3621 1247 Dl +2990 1235 2990 1535 Dl +2902 1298 3077 1298 Dl +2902 1361 3077 1361 Dl +2361 1229 2361 1529 Dl +2273 1291 2448 1291 Dl +2273 1354 2448 1354 Dl +1759 1321 313 313 De +(Term) 1790 1341 w +1527 2263 1527 1968 Dl +1370 1811 313 313 De +(Term) 1401 1831 w +1941 1968 1941 2263 Dl +2355 2263 2355 1968 Dl +1784 1811 313 313 De +(Term) 1815 1831 w +2198 1811 313 313 De +(Term) 2229 1831 w +4860 3040 2030 3040 Dl +4778 2758 4859 2758 Dl +4860 2758 4860 1478 Dl +4875 1541 4860 1479 Dl +4844 1541 4859 1479 Dl +4564 2878 4564 3041 Dl +4596 2878 4596 3041 Dl +4533 2878 4533 3041 Dl +(Ethernet) 3622 2226 w +(Fiber Network) 3081 3212 w +4402 1459 4400 1431 Dl +4399 1431 4391 1403 Dl +4389 1403 4375 1375 Dl +4375 1375 4355 1348 Dl +4354 1348 4295 1294 Dl +4296 1292 4214 1238 Dl +4213 1238 4163 1214 Dl +4163 1214 4107 1196 Dl +4106 1196 4044 1184 Dl +4044 1183 3975 1177 Dl +3975 1176 3901 1176 Dl +3900 1176 3819 1181 Dl +3818 1181 3731 1191 Dl +3731 1191 3638 1207 Dl +3637 1208 2902 1359 Dl +2902 1361 2738 1389 Dl +2737 1389 2592 1401 Dl +2592 1402 2466 1399 Dl +2466 1398 2410 1391 Dl +2409 1389 2358 1377 Dl +2359 1378 2191 1336 Dl +2190 1335 2126 1325 Dl +2125 1325 2074 1322 Dl +1841 2758 1841 3250 Dl +1326 2758 1652 2758 Dl +1653 2758 1653 3250 Dl +1452 3590 1452 3251 Dl +1452 3251 2073 3251 Dl +2073 3251 2073 3590 Dl +2073 3590 1452 3590 Dl +1483 3559 1483 3283 Dl +1483 3282 2041 3282 Dl +2041 3282 2041 3558 Dl +2041 3559 1483 3559 Dl +(Datakit) 1589 3440 w +2073 3420 2327 3420 Dl +2327 3420 2327 3761 Dl +2170 3919 313 313 De +(Term) 2201 3939 w +1969 3590 1969 3762 Dl +1812 3919 313 313 De +(Term) 1843 3939 w +1599 3590 1599 3768 Dl +1436 3925 313 313 De +(Term) 1467 3945 w +8 /LucidaSans-Italic f +(Figure) 900 4306 w +(1.) 1177 4306 w +(Structure) 1285 4306 w +(of) 1679 4306 w +(a) 1787 4306 w +(large) 1868 4306 w +(Plan) 2101 4306 w +(9) 2301 4306 w +(installation.) 2383 4306 w +8 /LucidaSansUnicode00 f +(CPU) 2902 4306 w +(servers) 3088 4306 w +(and) 3400 4306 w +(file) 3577 4306 w +(servers) 3731 4306 w +(share) 4044 4306 w +(fast) 4290 4306 w +(local-area) 4468 4306 w +(networks,) 900 4416 w +(while) 1320 4416 w +(terminals) 1561 4416 w +(use) 1962 4416 w +(slower) 2136 4416 w +(wider-area) 2427 4416 w +(networks) 2890 4416 w +(such) 3284 4416 w +(as) 3503 4416 w +(Ethernet,) 3625 4416 w +(Datakit,) 4014 4416 w +(or) 4354 4416 w +(telephone) 4473 4416 w +(lines) 900 4526 w +(to) 1113 4526 w +(connect) 1223 4526 w +(to) 1560 4526 w +(them.) 1670 4526 w +(Gateway) 1952 4526 w +(machines,) 2308 4526 w +(which) 2733 4526 w +(are) 2990 4526 w +(just) 3143 4526 w +(CPU) 3319 4526 w +(servers) 3504 4526 w +(connected) 3815 4526 w +(to) 4248 4526 w +(multiple) 4359 4526 w +(net\255) 4709 4526 w +(works,) 900 4646 w +(allow) 1183 4646 w +(machines) 1410 4646 w +(on) 1804 4646 w +(one) 1929 4646 w +(network) 2099 4646 w +(to) 2440 4646 w +(see) 2545 4646 w +(another.) 2702 4646 w +10 /LucidaSansUnicode00 f +(The) 970 4922 w +(modern) 1200 4922 w +(style) 1625 4922 w +(of) 1900 4922 w +(computing) 2048 4922 w +(offers) 2618 4922 w +(each) 2951 4922 w +(user) 3225 4922 w +(a) 3485 4922 w +(dedicated) 3590 4922 w +(workstation) 4113 4922 w +(or) 4732 4922 w +(PC.) 4884 4922 w +(Plan) 720 5042 w +(9) 957 5042 w +10 /LucidaSansUnicode20 f +(\031) 1020 5042 w +10 /LucidaSansUnicode00 f +(s) 1052 5042 w +(approach) 1139 5042 w +(is) 1626 5042 w +(different.) 1741 5042 w +(The) 2258 5042 w +(various) 2474 5042 w +(machines) 2860 5042 w +(with) 3354 5042 w +(screens,) 3594 5042 w +(keyboards,) 4029 5042 w +(and) 4596 5042 w +(mice) 4811 5042 w +(all) 720 5162 w +(provide) 866 5162 w +(access) 1264 5162 w +(to) 1612 5162 w +(the) 1743 5162 w +(resources) 1931 5162 w +(of) 2434 5162 w +(the) 2565 5162 w +(network,) 2753 5162 w +(so) 3210 5162 w +(they) 3355 5162 w +(are) 3596 5162 w +(functionally) 3782 5162 w +(equivalent,) 4382 5162 w +(in) 4949 5162 w +(the) 720 5282 w +(manner) 914 5282 w +(of) 1322 5282 w +(the) 1459 5282 w +(terminals) 1653 5282 w +(attached) 2145 5282 w +(to) 2600 5282 w +(old) 2737 5282 w +(timesharing) 2929 5282 w +(systems.) 3545 5282 w +(When) 4038 5282 w +(someone) 4342 5282 w +(uses) 4820 5282 w +(the) 720 5402 w +(system,) 922 5402 w +(though,) 1341 5402 w +(the) 1766 5402 w +(terminal) 1968 5402 w +(is) 2417 5402 w +(temporarily) 2544 5402 w +(personalized) 3148 5402 w +(by) 3818 5402 w +(that) 3980 5402 w +(user.) 4219 5402 w +(Instead) 4541 5402 w +(of) 4942 5402 w +(customizing) 720 5522 w +(the) 1356 5522 w +(hardware,) 1553 5522 w +(Plan) 2077 5522 w +(9) 2320 5522 w +(offers) 2425 5522 w +(the) 2750 5522 w +(ability) 2947 5522 w +(to) 3283 5522 w +(customize) 3422 5522 w +(one) 3960 5522 w +10 /LucidaSansUnicode20 f +(\031) 4139 5522 w +10 /LucidaSansUnicode00 f +(s) 4171 5522 w +(view) 4263 5522 w +(of) 4518 5522 w +(the) 4657 5522 w +(sys\255) 4853 5522 w +(tem) 720 5642 w +(provided) 943 5642 w +(by) 1408 5642 w +(the) 1560 5642 w +(software.) 1752 5642 w +(That) 2268 5642 w +(customization) 2522 5642 w +(is) 3245 5642 w +(accomplished) 3363 5642 w +(by) 4065 5642 w +(giving) 4218 5642 w +(local,) 4552 5642 w +(per\255) 4847 5642 w +(sonal) 720 5762 w +(names) 1011 5762 w +(for) 1361 5762 w +(the) 1533 5762 w +(publicly) 1721 5762 w +(visible) 2132 5762 w +(resources) 2474 5762 w +(in) 2977 5762 w +(the) 3101 5762 w +(network.) 3289 5762 w +(Plan) 3778 5762 w +(9) 4012 5762 w +(provides) 4108 5762 w +(the) 4557 5762 w +(mech\255) 4745 5762 w +(anism) 720 5882 w +(to) 1059 5882 w +(assemble) 1207 5882 w +(a) 1711 5882 w +(personal) 1816 5882 w +(view) 2284 5882 w +(of) 2548 5882 w +(the) 2696 5882 w +(public) 2901 5882 w +(space) 3248 5882 w +(with) 3574 5882 w +(local) 3829 5882 w +(names) 4104 5882 w +(for) 4471 5882 w +(globally) 4660 5882 w +(accessible) 720 6002 w +(resources.) 1255 6002 w +(Since) 1832 6002 w +(the) 2127 6002 w +(most) 2325 6002 w +(important) 2610 6002 w +(resources) 3131 6002 w +(of) 3644 6002 w +(the) 3784 6002 w +(network) 3981 6002 w +(are) 4415 6002 w +(files,) 4609 6002 w +(the) 4885 6002 w +(model of that view is file-oriented.) 720 6122 w +(The) 970 6278 w +(client) 1194 6278 w +10 /LucidaSansUnicode20 f +(\031) 1458 6278 w +10 /LucidaSansUnicode00 f +(s) 1490 6278 w +(local) 1584 6278 w +(name) 1852 6278 w +(space) 2161 6278 w +(provides) 2480 6278 w +(a) 2939 6278 w +(way) 3038 6278 w +(to) 3266 6278 w +(customize) 3408 6278 w +(the) 3949 6278 w +(user) 4148 6278 w +10 /LucidaSansUnicode20 f +(\031) 4358 6278 w +10 /LucidaSansUnicode00 f +(s) 4390 6278 w +(view) 4485 6278 w +(of) 4743 6278 w +(the) 4885 6278 w +(network.) 720 6398 w +(The) 1213 6398 w +(services) 1431 6398 w +(available) 1855 6398 w +(in) 2315 6398 w +(the) 2443 6398 w +(network) 2635 6398 w +(all) 3064 6398 w +(export) 3214 6398 w +(file) 3570 6398 w +(hierarchies.) 3758 6398 w +(Those) 4391 6398 w +(impor\255) 4720 6398 w +(tant) 720 6518 w +(to) 944 6518 w +(the) 1075 6518 w +(user) 1263 6518 w +(are) 1506 6518 w +(gathered) 1691 6518 w +(together) 2156 6518 w +(into) 2601 6518 w +(a) 2823 6518 w +(custom) 2911 6518 w +(name) 3299 6518 w +(space;) 3598 6518 w +(those) 3939 6518 w +(of) 4240 6518 w +(no) 4372 6518 w +(immediate) 4529 6518 w +(interest) 720 6638 w +(are) 1130 6638 w +(ignored.) 1323 6638 w +(This) 1802 6638 w +(is) 2048 6638 w +(a) 2169 6638 w +(different) 2265 6638 w +(style) 2724 6638 w +(of) 2990 6638 w +(use) 3129 6638 w +(from) 3339 6638 w +(the) 3612 6638 w +(idea) 3808 6638 w +(of) 4051 6638 w +(a) 4189 6638 w +10 /LucidaSansUnicode20 f +(\030) 4284 6638 w +10 /LucidaSansUnicode00 f +(uniform) 4316 6638 w +(global) 4741 6638 w +(name) 720 6758 w +(space) 1019 6758 w +10 /LucidaSansUnicode20 f +(\031) 1295 6758 w +10 /LucidaSansUnicode00 f +(.) 1327 6758 w +(In) 1424 6758 w +(Plan) 1548 6758 w +(9,) 1782 6758 w +(there) 1910 6758 w +(are) 2196 6758 w +(known) 2382 6758 w +(names) 2736 6758 w +(for) 3087 6758 w +(services) 3260 6758 w +(and) 3681 6758 w +(uniform) 3895 6758 w +(names) 4314 6758 w +(for) 4665 6758 w +(files) 4838 6758 w +(exported) 720 6878 w +(by) 1202 6878 w +(those) 1361 6878 w +(services,) 1672 6878 w +(but) 2134 6878 w +(the) 2339 6878 w +(view) 2537 6878 w +(is) 2794 6878 w +(entirely) 2917 6878 w +(local.) 3322 6878 w +(As) 3654 6878 w +(an) 3817 6878 w +(analogy,) 3977 6878 w +(consider) 4428 6878 w +(the) 4885 6878 w +(difference) 720 6998 w +(between) 1263 6998 w +(the) 1725 6998 w +(phrase) 1935 6998 w +10 /LucidaSansUnicode20 f +(\030) 2318 6998 w +10 /LucidaSansUnicode00 f +(my) 2350 6998 w +(house) 2550 6998 w +10 /LucidaSansUnicode20 f +(\031) 2842 6998 w +10 /LucidaSansUnicode00 f +(and) 2929 6998 w +(the) 3164 6998 w +(precise) 3374 6998 w +(address) 3776 6998 w +(of) 4212 6998 w +(the) 4366 6998 w +(speaker) 4577 6998 w +10 /LucidaSansUnicode20 f +(\031) 4957 6998 w +10 /LucidaSansUnicode00 f +(s) 4989 6998 w +(home.) 720 7118 w +(The) 1105 7118 w +(latter) 1335 7118 w +(may) 1639 7118 w +(be) 1887 7118 w +(used) 2054 7118 w +(by) 2334 7118 w +(anyone) 2497 7118 w +(but) 2893 7118 w +(the) 3103 7118 w +(former) 3306 7118 w +(is) 3683 7118 w +(easier) 3811 7118 w +(to) 4147 7118 w +(say) 4293 7118 w +(and) 4499 7118 w +(makes) 4727 7118 w +(sense) 720 7238 w +(when) 1037 7238 w +(spoken.) 1335 7238 w +(It) 1791 7238 w +(also) 1898 7238 w +(changes) 2135 7238 w +(meaning) 2575 7238 w +(depending) 3035 7238 w +(on) 3592 7238 w +(who) 3756 7238 w +(says) 3998 7238 w +(it,) 4249 7238 w +(yet) 4389 7238 w +(that) 4576 7238 w +(does) 4809 7238 w +cleartomark +showpage +saveobj restore +%%EndPage: 3 3 +%%Page: 4 4 +/saveobj save def +mark +4 pagesetup +10 /LucidaSansUnicode00 f +(\255 4 \255) 2783 480 w +(not) 720 840 w +(cause) 928 840 w +(confusion.) 1251 840 w +(Similarly,) 1839 840 w +(in) 2330 840 w +(Plan) 2469 840 w +(9) 2718 840 w +(the) 2829 840 w +(name) 3032 840 w +10 /LucidaTypewriter f +(/dev/cons) 3346 840 w +10 /LucidaSansUnicode00 f +(always) 4042 840 w +(refers) 4409 840 w +(to) 4739 840 w +(the) 4885 840 w +(user) 720 960 w +10 /LucidaSansUnicode20 f +(\031) 930 960 w +10 /LucidaSansUnicode00 f +(s) 962 960 w +(terminal) 1055 960 w +(and) 1499 960 w +10 /LucidaTypewriter f +(/bin/date) 1721 960 w +10 /LucidaSansUnicode00 f +(the) 2411 960 w +(correct) 2608 960 w +(version) 2988 960 w +(of) 3383 960 w +(the) 3524 960 w +(date) 3722 960 w +(command) 3976 960 w +(to) 4497 960 w +(run,) 4638 960 w +(but) 4878 960 w +(which) 720 1080 w +(files) 1035 1080 w +(those) 1271 1080 w +(names) 1572 1080 w +(represent) 1923 1080 w +(depends) 2419 1080 w +(on) 2866 1080 w +(circumstances) 3022 1080 w +(such) 3745 1080 w +(as) 4004 1080 w +(the) 4143 1080 w +(architecture) 4331 1080 w +(of) 4942 1080 w +(the) 720 1200 w +(machine) 920 1200 w +(executing) 1373 1200 w +10 /LucidaTypewriter f +(date) 1894 1200 w +10 /LucidaSansUnicode00 f +(.) 2182 1200 w +(Plan) 2292 1200 w +(9,) 2539 1200 w +(then,) 2680 1200 w +(has) 2975 1200 w +(local) 3189 1200 w +(name) 3460 1200 w +(spaces) 3772 1200 w +(that) 4145 1200 w +(obey) 4382 1200 w +(globally) 4660 1200 w +(understood) 720 1320 w +(conventions;) 1315 1320 w +(it) 1969 1320 w +(is) 2073 1320 w +(the) 2191 1320 w +(conventions) 2384 1320 w +(that) 3006 1320 w +(guarantee) 3235 1320 w +(sane) 3759 1320 w +(behavior) 4020 1320 w +(in) 4476 1320 w +(the) 4604 1320 w +(pres\255) 4796 1320 w +(ence of local names.) 720 1440 w +(The) 970 1596 w +(9P) 1195 1596 w +(protocol) 1357 1596 w +(is) 1805 1596 w +(structured) 1929 1596 w +(as) 2474 1596 w +(a) 2624 1596 w +(set) 2723 1596 w +(of) 2911 1596 w +(transactions) 3053 1596 w +(that) 3689 1596 w +(send) 3924 1596 w +(a) 4200 1596 w +(request) 4299 1596 w +(from) 4709 1596 w +(a) 4985 1596 w +(client) 720 1716 w +(to) 1028 1716 w +(a) 1170 1716 w +(\(local) 1269 1716 w +(or) 1571 1716 w +(remote\)) 1717 1716 w +(server) 2137 1716 w +(and) 2477 1716 w +(return) 2700 1716 w +(the) 3042 1716 w +(result.) 3240 1716 w +(9P) 3623 1716 w +(controls) 3784 1716 w +(file) 4220 1716 w +(systems,) 4414 1716 w +(not) 4880 1716 w +(just) 720 1836 w +(files:) 941 1836 w +(it) 1216 1836 w +(includes) 1323 1836 w +(procedures) 1767 1836 w +(to) 2353 1836 w +(resolve) 2493 1836 w +(file) 2881 1836 w +(names) 3074 1836 w +(and) 3433 1836 w +(traverse) 3655 1836 w +(the) 4086 1836 w +(name) 4283 1836 w +(hierarchy) 4591 1836 w +(of) 720 1956 w +(the) 854 1956 w +(file) 1045 1956 w +(system) 1232 1956 w +(provided) 1608 1956 w +(by) 2072 1956 w +(the) 2223 1956 w +(server.) 2414 1956 w +(On) 2810 1956 w +(the) 2985 1956 w +(other) 3175 1956 w +(hand,) 3467 1956 w +(the) 3776 1956 w +(client) 3966 1956 w +10 /LucidaSansUnicode20 f +(\031) 4230 1956 w +10 /LucidaSansUnicode00 f +(s) 4262 1956 w +(name) 4348 1956 w +(space) 4649 1956 w +(is) 4960 1956 w +(held) 720 2076 w +(by) 975 2076 w +(the) 1135 2076 w +(client) 1335 2076 w +(system) 1644 2076 w +(alone,) 2029 2076 w +(not) 2369 2076 w +(on) 2574 2076 w +(or) 2742 2076 w +(with) 2889 2076 w +(the) 3139 2076 w +(server,) 3339 2076 w +(a) 3713 2076 w +(distinction) 3814 2076 w +(from) 4371 2076 w +(systems) 4649 2076 w +(such) 720 2196 w +(as) 989 2196 w +(Sprite) 1138 2196 w +([OCDNW88].) 1461 2196 w +(Also,) 2142 2196 w +(file) 2427 2196 w +(access) 2621 2196 w +(is) 2979 2196 w +(at) 3102 2196 w +(the) 3236 2196 w +(level) 3433 2196 w +(of) 3697 2196 w +(bytes,) 3837 2196 w +(not) 4170 2196 w +(blocks,) 4372 2196 w +(which) 4759 2196 w +(distinguishes) 720 2316 w +(9P) 1408 2316 w +(from) 1570 2316 w +(protocols) 1846 2316 w +(like) 2345 2316 w +(NFS) 2561 2316 w +(and) 2787 2316 w +(RFS.) 3011 2316 w +(A) 3290 2316 w +(paper) 3403 2316 w +(by) 3725 2316 w +(Welch) 3884 2316 w +(compares) 4212 2316 w +(Sprite,) 4728 2316 w +(NFS, and Plan 9) 720 2436 w +10 /LucidaSansUnicode20 f +(\031) 1474 2436 w +10 /LucidaSansUnicode00 f +(s network file system structures [Welc94].) 1506 2436 w +(This) 970 2592 w +(approach) 1214 2592 w +(was) 1704 2592 w +(designed) 1926 2592 w +(with) 2407 2592 w +(traditional) 2651 2592 w +(files) 3188 2592 w +(in) 3429 2592 w +(mind,) 3560 2592 w +(but) 3879 2592 w +(can) 4081 2592 w +(be) 4289 2592 w +(extended) 4448 2592 w +(to) 4942 2592 w +(many) 720 2712 w +(other) 1026 2712 w +(resources.) 1327 2712 w +(Plan) 1905 2712 w +(9) 2150 2712 w +(services) 2256 2712 w +(that) 2686 2712 w +(export) 2920 2712 w +(file) 3282 2712 w +(hierarchies) 3476 2712 w +(include) 4052 2712 w +(I/O) 4447 2712 w +(devices,) 4650 2712 w +(backup) 720 2832 w +(services,) 1112 2832 w +(the) 1571 2832 w +(window) 1766 2832 w +(system,) 2175 2832 w +(network) 2587 2832 w +(interfaces,) 3020 2832 w +(and) 3568 2832 w +(many) 3789 2832 w +(others.) 4092 2832 w +(One) 4505 2832 w +(exam\255) 4742 2832 w +(ple) 720 2952 w +(is) 906 2952 w +(the) 1024 2952 w +(process) 1217 2952 w +(file) 1629 2952 w +(system,) 1818 2952 w +10 /LucidaTypewriter f +(/proc) 2228 2952 w +10 /LucidaSansUnicode00 f +(,) 2588 2952 w +(which) 2658 2952 w +(provides) 2976 2952 w +(a) 3429 2952 w +(clean) 3521 2952 w +(way) 3811 2952 w +(to) 4032 2952 w +(examine) 4167 2952 w +(and) 4616 2952 w +(con\255) 4833 2952 w +(trol) 720 3072 w +(running) 923 3072 w +(processes.) 1338 3072 w +(Precursor) 1918 3072 w +(systems) 2413 3072 w +(had) 2840 3072 w +(a) 3056 3072 w +(similar) 3147 3072 w +(idea) 3510 3072 w +([Kill84],) 3749 3072 w +(but) 4161 3072 w +(Plan) 4359 3072 w +(9) 4596 3072 w +(pushes) 4695 3072 w +(the) 720 3192 w +(file) 918 3192 w +(metaphor) 1112 3192 w +(much) 1623 3192 w +(further) 1934 3192 w +([PPTTW93].) 2313 3192 w +(The) 2934 3192 w +(file) 3158 3192 w +(system) 3352 3192 w +(model) 3735 3192 w +(is) 4080 3192 w +(well-understood,) 4202 3192 w +(both) 720 3312 w +(by) 984 3312 w +(system) 1140 3312 w +(builders) 1522 3312 w +(and) 1958 3312 w +(general) 2180 3312 w +(users,) 2583 3312 w +(so) 2918 3312 w +(services) 3072 3312 w +(that) 3501 3312 w +(present) 3734 3312 w +(file-like) 4142 3312 w +(interfaces) 4565 3312 w +(are) 720 3432 w +(easy) 918 3432 w +(to) 1178 3432 w +(build,) 1322 3432 w +(easy) 1645 3432 w +(to) 1904 3432 w +(understand,) 2047 3432 w +(and) 2676 3432 w +(easy) 2901 3432 w +(to) 3160 3432 w +(use.) 3303 3432 w +(Files) 3581 3432 w +(come) 3845 3432 w +(with) 4151 3432 w +(agreed-upon) 4401 3432 w +(rules) 720 3552 w +(for) 1006 3552 w +(protection,) 1192 3552 w +(naming,) 1769 3552 w +(and) 2211 3552 w +(access) 2439 3552 w +(both) 2802 3552 w +(local) 3073 3552 w +(and) 3346 3552 w +(remote,) 3574 3552 w +(so) 3998 3552 w +(services) 4158 3552 w +(built) 4593 3552 w +(this) 4861 3552 w +(way) 720 3672 w +(are) 968 3672 w +(ready-made) 1184 3672 w +(for) 1840 3672 w +(a) 2042 3672 w +(distributed) 2160 3672 w +(system.) 2754 3672 w +(\(This) 3221 3672 w +(is) 3522 3672 w +(a) 3665 3672 w +(distinction) 3783 3672 w +(from) 4357 3672 w +10 /LucidaSansUnicode20 f +(\030) 4652 3672 w +10 /LucidaSansUnicode00 f +(object-) 4684 3672 w +(oriented) 720 3792 w +10 /LucidaSansUnicode20 f +(\031) 1125 3792 w +10 /LucidaSansUnicode00 f +(models,) 1209 3792 w +(where) 1646 3792 w +(these) 1990 3792 w +(issues) 2304 3792 w +(must) 2656 3792 w +(be) 2951 3792 w +(faced) 3122 3792 w +(anew) 3436 3792 w +(for) 3738 3792 w +(every) 3929 3792 w +(class) 4238 3792 w +(of) 4527 3792 w +(object.\)) 4677 3792 w +(Examples in the sections that follow illustrate these ideas in action.) 720 3912 w +10 /LucidaSans-Demi f +(The Command-level View) 720 4152 w +10 /LucidaSansUnicode00 f +(Plan) 970 4308 w +(9) 1209 4308 w +(is) 1310 4308 w +(meant) 1428 4308 w +(to) 1769 4308 w +(be) 1905 4308 w +(used) 2062 4308 w +(from) 2332 4308 w +(a) 2602 4308 w +(machine) 2695 4308 w +(with) 3141 4308 w +(a) 3384 4308 w +(screen) 3477 4308 w +(running) 3832 4308 w +(the) 4251 4308 w +(window) 4445 4308 w +(sys\255) 4853 4308 w +(tem.) 720 4428 w +(It) 1019 4428 w +(has) 1134 4428 w +(no) 1351 4428 w +(notion) 1523 4428 w +(of) 1884 4428 w +10 /LucidaSansUnicode20 f +(\030) 2030 4428 w +10 /LucidaSansUnicode00 f +(teletype) 2062 4428 w +10 /LucidaSansUnicode20 f +(\031) 2448 4428 w +10 /LucidaSansUnicode00 f +(in) 2528 4428 w +(the) 2667 4428 w +(UNIX) 2870 4428 w +(sense.) 3153 4428 w +(The) 3541 4428 w +(keyboard) 3770 4428 w +(handling) 4267 4428 w +(of) 4739 4428 w +(the) 4885 4428 w +(bare) 720 4548 w +(system) 975 4548 w +(is) 1355 4548 w +(rudimentary,) 1475 4548 w +(but) 2138 4548 w +(once) 2340 4548 w +(the) 2610 4548 w +(window) 2805 4548 w +(system,) 3215 4548 w +(8\275) 3628 4548 w +([Pike91],) 3812 4548 w +(is) 4275 4548 w +(running,) 4396 4548 w +(text) 4849 4548 w +(can) 720 4668 w +(be) 921 4668 w +(edited) 1073 4668 w +(with) 1410 4668 w +10 /LucidaSansUnicode20 f +(\030) 1648 4668 w +10 /LucidaSansUnicode00 f +(cut) 1680 4668 w +(and) 1863 4668 w +(paste) 2076 4668 w +10 /LucidaSansUnicode20 f +(\031) 2338 4668 w +10 /LucidaSansUnicode00 f +(operations) 2403 4668 w +(from) 2952 4668 w +(a) 3217 4668 w +(pop-up) 3305 4668 w +(menu, copied between win\255) 3708 4668 w +(dows,) 720 4788 w +(and) 1045 4788 w +(so) 1266 4788 w +(on.) 1419 4788 w +(8\275) 1648 4788 w +(permits) 1833 4788 w +(editing) 2245 4788 w +(text) 2625 4788 w +(from) 2858 4788 w +(the) 3132 4788 w +(past,) 3329 4788 w +(not) 3609 4788 w +(just) 3811 4788 w +(on) 4033 4788 w +(the) 4198 4788 w +(current) 4395 4788 w +(input) 4787 4788 w +(line.) 720 4908 w +(The) 1000 4908 w +(text-editing) 1220 4908 w +(capabilities) 1846 4908 w +(of) 2432 4908 w +(8\275) 2569 4908 w +(are) 2751 4908 w +(strong) 2942 4908 w +(enough) 3295 4908 w +(to) 3699 4908 w +(displace) 3836 4908 w +(special) 4272 4908 w +(features) 4645 4908 w +(such) 720 5028 w +(as) 983 5028 w +(history) 1126 5028 w +(in) 1496 5028 w +(the) 1624 5028 w +(shell,) 1816 5028 w +(paging) 2112 5028 w +(and) 2482 5028 w +(scrolling,) 2699 5028 w +(and) 3183 5028 w +(mail) 3400 5028 w +(editors.) 3643 5028 w +(8\275) 4082 5028 w +(windows) 4262 5028 w +(do) 4719 5028 w +(not) 4880 5028 w +(support) 720 5148 w +(cursor) 1135 5148 w +(addressing) 1479 5148 w +(and,) 2048 5148 w +(except) 2296 5148 w +(for) 2656 5148 w +(one) 2831 5148 w +(terminal) 3046 5148 w +(emulator) 3484 5148 w +(to) 3954 5148 w +(simplify) 4088 5148 w +(connecting) 4507 5148 w +(to traditional systems, there is no cursor-addressing software in Plan 9.) 720 5268 w +(Each) 970 5424 w +(window) 1228 5424 w +(is) 1633 5424 w +(created) 1749 5424 w +(in) 2144 5424 w +(a) 2272 5424 w +(separate) 2364 5424 w +(name) 2815 5424 w +(space.) 3118 5424 w +(Adjustments) 3495 5424 w +(made) 4143 5424 w +(to) 4447 5424 w +(the) 4582 5424 w +(name) 4774 5424 w +(space) 720 5544 w +(in) 1039 5544 w +(a) 1173 5544 w +(window) 1271 5544 w +(do) 1682 5544 w +(not) 1848 5544 w +(affect) 2050 5544 w +(other) 2365 5544 w +(windows) 2664 5544 w +(or) 3126 5544 w +(programs,) 3270 5544 w +(making) 3811 5544 w +(it) 4212 5544 w +(safe) 4320 5544 w +(to) 4561 5544 w +(experi\255) 4701 5544 w +(ment) 720 5664 w +(with) 1013 5664 w +(local) 1263 5664 w +(modifications) 1533 5664 w +(to) 2236 5664 w +(the) 2379 5664 w +(name) 2579 5664 w +(space,) 2890 5664 w +(for) 3243 5664 w +(example) 3427 5664 w +(to) 3885 5664 w +(substitute) 4029 5664 w +(files) 4560 5664 w +(from) 4808 5664 w +(the) 720 5784 w +(dump) 909 5784 w +(file) 1223 5784 w +(system) 1407 5784 w +(when) 1780 5784 w +(debugging.) 2070 5784 w +(Once) 2688 5784 w +(the) 2968 5784 w +(debugging) 3156 5784 w +(is) 3710 5784 w +(done,) 3823 5784 w +(the) 4130 5784 w +(window) 4318 5784 w +(can) 4720 5784 w +(be) 4921 5784 w +(deleted) 720 5904 w +(and) 1115 5904 w +(all) 1330 5904 w +(trace) 1478 5904 w +(of) 1753 5904 w +(the) 1886 5904 w +(experimental) 2076 5904 w +(apparatus) 2749 5904 w +(is) 3266 5904 w +(gone.) 3382 5904 w +(Similar) 3723 5904 w +(arguments) 4089 5904 w +(apply) 4644 5904 w +(to) 4942 5904 w +(the) 720 6024 w +(private) 913 6024 w +(space) 1284 6024 w +(each) 1598 6024 w +(window) 1860 6024 w +(has) 2267 6024 w +(for) 2473 6024 w +(environment) 2650 6024 w +(variables,) 3298 6024 w +(notes) 3798 6024 w +(\(analogous) 4102 6024 w +(to) 4670 6024 w +(UNIX) 4805 6024 w +(signals\), etc.) 720 6144 w +(Each) 970 6300 w +(window) 1241 6300 w +(is) 1660 6300 w +(created) 1790 6300 w +(running) 2199 6300 w +(an) 2629 6300 w +(application,) 2796 6300 w +(such) 3412 6300 w +(as) 3688 6300 w +(the) 3844 6300 w +(shell,) 4049 6300 w +(with) 4358 6300 w +(standard) 4613 6300 w +(input) 720 6420 w +(and) 1009 6420 w +(output) 1225 6420 w +(connected) 1583 6420 w +(to) 2118 6420 w +(the) 2252 6420 w +(editable) 2443 6420 w +(text) 2867 6420 w +(of) 3094 6420 w +(the) 3228 6420 w +(window.) 3419 6420 w +(Each) 3888 6420 w +(window) 4146 6420 w +(also) 4551 6420 w +(has) 4782 6420 w +(a) 4985 6420 w +(private) 720 6540 w +(bitmap) 1107 6540 w +(and) 1501 6540 w +(multiplexed) 1735 6540 w +(access) 2367 6540 w +(to) 2737 6540 w +(the) 2890 6540 w +(keyboard,) 3100 6540 w +(mouse,) 3636 6540 w +(and) 4046 6540 w +(other) 4281 6540 w +(graphical) 4593 6540 w +(resources) 720 6660 w +(through) 1235 6660 w +(files) 1667 6660 w +(like) 1914 6660 w +10 /LucidaTypewriter f +(/dev/mouse) 2131 6660 w +10 /LucidaSansUnicode00 f +(,) 2851 6660 w +10 /LucidaTypewriter f +(/dev/bitblt) 2928 6660 w +10 /LucidaSansUnicode00 f +(,) 3720 6660 w +(and) 3796 6660 w +10 /LucidaTypewriter f +(/dev/cons) 4020 6660 w +10 /LucidaSansUnicode00 f +(\(analo\255) 4712 6660 w +(gous) 720 6780 w +(to) 990 6780 w +(UNIX) 1122 6780 w +10 /LucidaSansUnicode20 f +(\031) 1357 6780 w +10 /LucidaSansUnicode00 f +(s) 1389 6780 w +10 /LucidaTypewriter f +(/dev/tty) 1474 6780 w +10 /LucidaSansUnicode00 f +(\).) 2050 6780 w +(These) 2181 6780 w +(files) 2503 6780 w +(are) 2739 6780 w +(provided) 2925 6780 w +(by) 3387 6780 w +(8\275,) 3536 6780 w +(which) 3745 6780 w +(is) 4060 6780 w +(implemented) 4174 6780 w +(as) 4845 6780 w +(a) 4985 6780 w +(file) 720 6900 w +(server.) 904 6900 w +(Unlike) 1298 6900 w +(X) 1634 6900 w +(windows,) 1730 6900 w +(where a new application typically creates a new window to) 2215 6900 w +(run in, an 8\275) 720 7020 w +(graphics) 1397 7020 w +(application) 1844 7020 w +(usually) 2411 7020 w +(runs) 2784 7020 w +(in) 3033 7020 w +(the) 3157 7020 w +(window) 3345 7020 w +(where) 3747 7020 w +(it) 4072 7020 w +(starts.) 4171 7020 w +(It) 4540 7020 w +(is) 4639 7020 w +(possi\255) 4752 7020 w +(ble) 720 7140 w +(and) 909 7140 w +(efficient) 1130 7140 w +(for) 1565 7140 w +(an) 1745 7140 w +(application) 1903 7140 w +(to) 2478 7140 w +(create) 2617 7140 w +(a) 2954 7140 w +(new) 3050 7140 w +(window,) 3286 7140 w +(but) 3728 7140 w +(that) 3931 7140 w +(is) 4162 7140 w +(not) 4282 7140 w +(the) 4482 7140 w +(style) 4677 7140 w +(of) 4942 7140 w +(the) 720 7260 w +(system.) 911 7260 w +(Again) 1351 7260 w +(contrasting) 1664 7260 w +(to) 2248 7260 w +(X,) 2383 7260 w +(in) 2515 7260 w +(which) 2643 7260 w +(a) 2961 7260 w +(remote) 3053 7260 w +(application) 3434 7260 w +(makes) 4005 7260 w +(a) 4355 7260 w +(network) 4447 7260 w +(call) 4876 7260 w +cleartomark +showpage +saveobj restore +%%EndPage: 4 4 +%%Page: 5 5 +/saveobj save def +mark +5 pagesetup +10 /LucidaSansUnicode00 f +(\255 5 \255) 2783 480 w +(to) 720 840 w +(the) 851 840 w +(X) 1039 840 w +(server) 1135 840 w +(to) 1465 840 w +(start) 1596 840 w +(running,) 1850 840 w +(a) 2295 840 w +(remote) 2383 840 w +(8\275) 2760 840 w +(application) 2936 840 w +(sees) 3503 840 w +(the) 3750 840 w +10 /LucidaTypewriter f +(mouse) 3938 840 w +10 /LucidaSansUnicode00 f +(,) 4298 840 w +10 /LucidaTypewriter f +(bitblt) 4363 840 w +10 /LucidaSansUnicode00 f +(,) 4795 840 w +(and) 4860 840 w +10 /LucidaTypewriter f +(cons) 720 960 w +10 /LucidaSansUnicode00 f +(files) 1056 960 w +(for) 1306 960 w +(the) 1493 960 w +(window) 1696 960 w +(as) 2113 960 w +(usual) 2267 960 w +(in) 2574 960 w +10 /LucidaTypewriter f +(/dev) 2713 960 w +10 /LucidaSansUnicode00 f +(;) 3001 960 w +(it) 3082 960 w +(does) 3197 960 w +(not) 3477 960 w +(know) 3686 960 w +(whether) 3993 960 w +(the) 4433 960 w +(files) 4637 960 w +(are) 4888 960 w +(local.) 720 1080 w +(It) 1056 1080 w +(just) 1168 1080 w +(reads) 1394 1080 w +(and) 1706 1080 w +(writes) 1932 1080 w +(them) 2269 1080 w +(to) 2563 1080 w +(control) 2707 1080 w +(the) 3095 1080 w +(window;) 3296 1080 w +(the) 3743 1080 w +(network) 3944 1080 w +(connection) 4382 1080 w +(is) 4960 1080 w +(already there and multiplexed.) 720 1200 w +(The) 970 1356 w +(intended) 1186 1356 w +(style) 1649 1356 w +(of) 1909 1356 w +(use) 2042 1356 w +(is) 2246 1356 w +(to) 2361 1356 w +(run) 2494 1356 w +(interactive) 2694 1356 w +(applications) 3234 1356 w +(such) 3854 1356 w +(as) 4115 1356 w +(the) 4257 1356 w +(window) 4448 1356 w +(sys\255) 4853 1356 w +(tem) 720 1476 w +(and) 950 1476 w +(text) 1174 1476 w +(editor) 1408 1476 w +(on) 1738 1476 w +(the) 1904 1476 w +(terminal) 2102 1476 w +(and) 2547 1476 w +(to) 2770 1476 w +(run) 2911 1476 w +(computation-) 3119 1476 w +(or) 3831 1476 w +(file-intensive) 3976 1476 w +(applica\255) 4662 1476 w +(tions) 720 1596 w +(on) 1018 1596 w +(remote) 1199 1596 w +(servers.) 1601 1596 w +(Different) 2071 1596 w +(windows) 2559 1596 w +(may) 3038 1596 w +(be) 3297 1596 w +(running) 3475 1596 w +(programs) 3914 1596 w +(on) 4440 1596 w +(different) 4622 1596 w +(machines) 720 1716 w +(over) 1219 1716 w +(different) 1469 1716 w +(networks,) 1927 1716 w +(but) 2442 1716 w +(by) 2644 1716 w +(making) 2799 1716 w +(the) 3198 1716 w +(name) 3393 1716 w +(space) 3699 1716 w +(equivalent) 4015 1716 w +(in) 4556 1716 w +(all) 4687 1716 w +(win\255) 4839 1716 w +(dows,) 720 1836 w +(this) 1056 1836 w +(is) 1287 1836 w +(transparent:) 1419 1836 w +(the) 2063 1836 w +(same) 2270 1836 w +(commands) 2577 1836 w +(and) 3158 1836 w +(resources) 3391 1836 w +(are) 3914 1836 w +(available,) 4119 1836 w +(with) 4627 1836 w +(the) 4885 1836 w +(same names, wherever the computation is performed.) 720 1956 w +(The) 970 2112 w +(command) 1186 2112 w +(set) 1699 2112 w +(of) 1878 2112 w +(Plan) 2011 2112 w +(9) 2247 2112 w +(is) 2346 2112 w +(similar) 2462 2112 w +(to) 2825 2112 w +(that) 2959 2112 w +(of) 3186 2112 w +(UNIX.) 3320 2112 w +(The) 3655 2112 w +(commands) 3872 2112 w +(fall) 4437 2112 w +(into) 4623 2112 w +(sev\255) 4848 2112 w +(eral) 720 2232 w +(broad) 944 2232 w +(classes.) 1270 2232 w +(Some) 1721 2232 w +(are) 2028 2232 w +(new) 2223 2232 w +(programs) 2461 2232 w +(for) 2971 2232 w +(old) 3153 2232 w +(jobs:) 3349 2232 w +(programs) 3629 2232 w +(like) 4138 2232 w +10 /LucidaTypewriter f +(ls) 4352 2232 w +10 /LucidaSansUnicode00 f +(,) 4496 2232 w +10 /LucidaTypewriter f +(cat) 4570 2232 w +10 /LucidaSansUnicode00 f +(,) 4786 2232 w +(and) 4860 2232 w +10 /LucidaTypewriter f +(who) 720 2352 w +10 /LucidaSansUnicode00 f +(have) 968 2352 w +(familiar) 1226 2352 w +(names) 1627 2352 w +(and) 1977 2352 w +(functions) 2190 2352 w +(but) 2675 2352 w +(are) 2870 2352 w +(new,) 3055 2352 w +(simpler) 3315 2352 w +(implementations.) 3710 2352 w +10 /LucidaTypewriter f +(Who) 4620 2352 w +10 /LucidaSansUnicode00 f +(,) 4836 2352 w +(for) 4901 2352 w +(example,) 720 2472 w +(is) 1215 2472 w +(a) 1345 2472 w +(shell) 1450 2472 w +(script,) 1727 2472 w +(while) 2081 2472 w +10 /LucidaTypewriter f +(ps) 2384 2472 w +10 /LucidaSansUnicode00 f +(is) 2578 2472 w +(just) 2708 2472 w +(95) 2937 2472 w +(lines) 3112 2472 w +(of) 3388 2472 w +(C) 3535 2472 w +(code.) 3653 2472 w +(Some) 3997 2472 w +(commands) 4310 2472 w +(are) 4888 2472 w +(essentially) 720 2592 w +(the) 1268 2592 w +(same) 1464 2592 w +(as) 1760 2592 w +(their) 1908 2592 w +(UNIX) 2175 2592 w +(ancestors:) 2452 2592 w +10 /LucidaTypewriter f +(awk) 2991 2592 w +10 /LucidaSansUnicode00 f +(,) 3207 2592 w +10 /LucidaTypewriter f +(troff) 3281 2592 w +10 /LucidaSansUnicode00 f +(,) 3641 2592 w +(and) 3715 2592 w +(others) 3937 2592 w +(have) 4287 2592 w +(been) 4554 2592 w +(con\255) 4833 2592 w +(verted) 720 2712 w +(to) 1063 2712 w +(ANSI) 1199 2712 w +(C) 1463 2712 w +(and) 1570 2712 w +(extended) 1788 2712 w +(to) 2280 2712 w +(handle) 2415 2712 w +(Unicode,) 2779 2712 w +(but) 3239 2712 w +(are) 3438 2712 w +(still) 3627 2712 w +(the) 3839 2712 w +(familiar) 4031 2712 w +(tools.) 4436 2712 w +(Some) 4776 2712 w +(are) 720 2832 w +(entirely) 930 2832 w +(new) 1350 2832 w +(programs) 1603 2832 w +(for) 2128 2832 w +(old) 2325 2832 w +(niches:) 2536 2832 w +(the) 2937 2832 w +(shell) 3151 2832 w +10 /LucidaTypewriter f +(rc) 3437 2832 w +10 /LucidaSansUnicode00 f +(,) 3581 2832 w +(text) 3672 2832 w +(editor) 3922 2832 w +10 /LucidaTypewriter f +(sam) 4268 2832 w +10 /LucidaSansUnicode00 f +(,) 4484 2832 w +(debugger) 4575 2832 w +10 /LucidaTypewriter f +(acid) 720 2952 w +10 /LucidaSansUnicode00 f +(,) 1008 2952 w +(and) 1074 2952 w +(others) 1287 2952 w +(displace) 1628 2952 w +(the) 2058 2952 w +(better-known) 2246 2952 w +(UNIX) 2947 2952 w +(tools) 3215 2952 w +(with) 3487 2952 w +(similar) 3725 2952 w +(jobs.) 4085 2952 w +(Finally,) 4387 2952 w +(about) 4762 2952 w +(half the commands are new.) 720 3072 w +(Compatibility) 970 3228 w +(was) 1657 3228 w +(not) 1881 3228 w +(a) 2082 3228 w +(requirement) 2178 3228 w +(for) 2815 3228 w +(the) 2995 3228 w +(system.) 3191 3228 w +(Where) 3636 3228 w +(the) 3978 3228 w +(old) 4174 3228 w +(commands) 4368 3228 w +(or) 4938 3228 w +(notation seemed good enough, we kept them.) 720 3348 w +(When they didn) 3026 3348 w +10 /LucidaSansUnicode20 f +(\031) 3780 3348 w +10 /LucidaSansUnicode00 f +(t, we replaced them.) 3812 3348 w +10 /LucidaSans-Demi f +(The File Server) 720 3588 w +10 /LucidaSansUnicode00 f +(A) 970 3744 w +(central) 1078 3744 w +(file) 1448 3744 w +(server) 1638 3744 w +(stores) 1974 3744 w +(permanent) 2310 3744 w +(files) 2874 3744 w +(and) 3115 3744 w +(presents) 3334 3744 w +(them) 3790 3744 w +(to) 4077 3744 w +(the) 4214 3744 w +(network) 4408 3744 w +(as) 4839 3744 w +(a) 4985 3744 w +(file) 720 3864 w +(hierarchy) 918 3864 w +(exported) 1414 3864 w +(using) 1899 3864 w +(9P.) 2212 3864 w +(The) 2441 3864 w +(server) 2669 3864 w +(is) 3013 3864 w +(a) 3140 3864 w +(stand-alone) 3242 3864 w +(system,) 3878 3864 w +(accessible) 4297 3864 w +(only) 4836 3864 w +(over) 720 3984 w +(the) 978 3984 w +(network,) 1181 3984 w +(designed) 1653 3984 w +(to) 2143 3984 w +(do) 2289 3984 w +(its) 2461 3984 w +(one) 2626 3984 w +(job) 2853 3984 w +(well.) 3055 3984 w +(It) 3359 3984 w +(runs) 3474 3984 w +(no) 3739 3984 w +(user) 3911 3984 w +(processes,) 4170 3984 w +(only) 4732 3984 w +(a) 4985 3984 w +(fixed) 720 4104 w +(set) 1005 4104 w +(of) 1188 4104 w +(routines) 1325 4104 w +(compiled) 1763 4104 w +(into) 2247 4104 w +(the) 2475 4104 w +(boot) 2669 4104 w +(image.) 2930 4104 w +(Rather) 3328 4104 w +(than) 3681 4104 w +(a) 3936 4104 w +(set) 4030 4104 w +(of) 4213 4104 w +(disks) 4350 4104 w +(or) 4641 4104 w +(sepa\255) 4782 4104 w +(rate) 720 4224 w +(file) 949 4224 w +(systems,) 1140 4224 w +(the) 1603 4224 w +(main) 1798 4224 w +(hierarchy) 2077 4224 w +(exported) 2566 4224 w +(by) 3044 4224 w +(the) 3200 4224 w +(server) 3396 4224 w +(is) 3734 4224 w +(a) 3855 4224 w +(single) 3951 4224 w +(tree,) 4281 4224 w +(represent\255) 4544 4224 w +(ing) 720 4344 w +(files) 913 4344 w +(on) 1155 4344 w +(many) 1318 4344 w +(disks.) 1620 4344 w +(That) 1976 4344 w +(hierarchy) 2233 4344 w +(is) 2722 4344 w +(shared) 2842 4344 w +(by) 3210 4344 w +(many) 3365 4344 w +(users) 3667 4344 w +(over) 3968 4344 w +(a) 4218 4344 w +(wide) 4313 4344 w +(area) 4577 4344 w +(on) 4823 4344 w +(a) 4985 4344 w +(variety of networks.) 720 4464 w +(Other) 1744 4464 w +(file) 2051 4464 w +(trees) 2235 4464 w +(exported) 2509 4464 w +(by) 2980 4464 w +(the) 3128 4464 w +(server) 3316 4464 w +(include) 3646 4464 w +(special-purpose) 4031 4464 w +(sys\255) 4853 4464 w +(tems such as temporary storage and, as explained below, a backup service.) 720 4584 w +(The file server has three levels of storage.) 970 4740 w +(The) 3074 4740 w +(central) 3288 4740 w +(server) 3652 4740 w +(in) 3982 4740 w +(our) 4106 4740 w +(installation) 4303 4740 w +(has) 4872 4740 w +(about) 720 4860 w +(100) 1031 4860 w +(megabytes) 1253 4860 w +(of) 1811 4860 w +(memory) 1942 4860 w +(buffers,) 2371 4860 w +(27) 2783 4860 w +(gigabytes) 2942 4860 w +(of) 3442 4860 w +(magnetic disks, and 350 giga\255) 3573 4860 w +(bytes) 720 4980 w +(of) 1017 4980 w +(bulk) 1153 4980 w +(storage) 1403 4980 w +(in) 1804 4980 w +(a) 1933 4980 w +(write-once-read-many) 2026 4980 w +(\(WORM\)) 3185 4980 w +(jukebox.) 3602 4980 w +(The) 4095 4980 w +(disk) 4314 4980 w +(is) 4553 4980 w +(a) 4671 4980 w +(cache) 4765 4980 w +(for) 720 5100 w +(the) 905 5100 w +(WORM) 1106 5100 w +(and) 1465 5100 w +(the) 1691 5100 w +(memory) 1892 5100 w +(is) 2333 5100 w +(a) 2458 5100 w +(cache) 2558 5100 w +(for) 2878 5100 w +(the) 3062 5100 w +(disk;) 3262 5100 w +(each) 3540 5100 w +(is) 3809 5100 w +(much) 3934 5100 w +(faster,) 4247 5100 w +(and) 4601 5100 w +(sees) 4826 5100 w +(about an order of magnitude more traffic, than the level) 720 5220 w +(it) 3478 5220 w +(caches.) 3577 5220 w +(The) 4000 5220 w +(addressable) 4214 5220 w +(data) 4830 5220 w +(in) 720 5340 w +(the) 856 5340 w +(file) 1056 5340 w +(system) 1252 5340 w +(can) 1637 5340 w +(be) 1850 5340 w +(larger) 2014 5340 w +(than) 2343 5340 w +(the) 2604 5340 w +(size) 2804 5340 w +(of) 3041 5340 w +(the) 3183 5340 w +(magnetic) 3382 5340 w +(disks,) 3871 5340 w +(because) 4199 5340 w +(they) 4637 5340 w +(are) 4888 5340 w +(only a cache; our main file server has about 40 gigabytes of active storage.) 720 5460 w +(The) 970 5616 w +(most) 1192 5616 w +(unusual) 1475 5616 w +(feature) 1899 5616 w +(of) 2284 5616 w +(the) 2423 5616 w +(file) 2619 5616 w +(server) 2811 5616 w +(comes) 3149 5616 w +(from) 3502 5616 w +(its) 3775 5616 w +(use) 3933 5616 w +(of) 4143 5616 w +(a) 4282 5616 w +(WORM) 4378 5616 w +(device) 4733 5616 w +(for) 720 5736 w +(stable) 901 5736 w +(storage.) 1234 5736 w +(Every) 1703 5736 w +(morning) 2000 5736 w +(at) 2452 5736 w +(5) 2586 5736 w +(o) 2691 5736 w +10 /LucidaSansUnicode20 f +(\031) 2752 5736 w +10 /LucidaSansUnicode00 f +(clock,) 2784 5736 w +(a) 3108 5736 w +10 /LucidaSans-Italic f +(dump) 3205 5736 w +10 /LucidaSansUnicode00 f +(of) 3524 5736 w +(the) 3664 5736 w +(file) 3861 5736 w +(system) 4053 5736 w +(occurs) 4434 5736 w +(auto\255) 4792 5736 w +(matically.) 720 5856 w +(The) 1265 5856 w +(file) 1497 5856 w +(system) 1699 5856 w +(is) 2090 5856 w +(frozen) 2221 5856 w +(and) 2586 5856 w +(all) 2817 5856 w +(blocks) 2981 5856 w +(modified) 3345 5856 w +(since) 3827 5856 w +(the) 4127 5856 w +(last) 4333 5856 w +(dump) 4556 5856 w +(are) 4888 5856 w +(queued) 720 5976 w +(to) 1116 5976 w +(be) 1248 5976 w +(written) 1401 5976 w +(to) 1774 5976 w +(the) 1906 5976 w +(WORM.) 2095 5976 w +(Once) 2506 5976 w +(the) 2787 5976 w +(blocks) 2976 5976 w +(are) 3323 5976 w +(queued,) 3509 5976 w +(service) 3937 5976 w +(is) 4307 5976 w +(restored) 4421 5976 w +(and) 4860 5976 w +(the) 720 6096 w +(read-only) 916 6096 w +(root) 1434 6096 w +(of) 1675 6096 w +(the) 1814 6096 w +(dumped) 2010 6096 w +(file) 2451 6096 w +(system) 2643 6096 w +(appears) 3024 6096 w +(in) 3449 6096 w +(a) 3581 6096 w +(hierarchy) 3677 6096 w +(of) 4167 6096 w +(all) 4306 6096 w +(dumps) 4461 6096 w +(ever) 4835 6096 w +(taken,) 720 6216 w +(named) 1069 6216 w +(by) 1447 6216 w +(its) 1611 6216 w +(date.) 1777 6216 w +(For) 2101 6216 w +(example,) 2306 6216 w +(the) 2800 6216 w +(directory) 3004 6216 w +10 /LucidaTypewriter f +(/n/dump/1995/0315) 3484 6216 w +10 /LucidaSansUnicode00 f +(is) 4757 6216 w +(the) 4885 6216 w +(root) 720 6336 w +(directory) 971 6336 w +(of) 1453 6336 w +(an) 1602 6336 w +(image) 1770 6336 w +(of) 2116 6336 w +(the) 2265 6336 w +(file) 2471 6336 w +(system) 2673 6336 w +(as) 3065 6336 w +(it) 3223 6336 w +(appeared) 3341 6336 w +(in) 3845 6336 w +(the) 3988 6336 w +(early) 4195 6336 w +(morning) 4480 6336 w +(of) 4942 6336 w +(March) 720 6456 w +(15,) 1059 6456 w +(1995.) 1261 6456 w +(It) 1621 6456 w +(takes) 1731 6456 w +(a) 2032 6456 w +(few) 2131 6456 w +(minutes) 2345 6456 w +(to) 2779 6456 w +(queue) 2921 6456 w +(the) 3264 6456 w +(blocks,) 3463 6456 w +(but) 3852 6456 w +(the) 4057 6456 w +(process) 4255 6456 w +(to) 4672 6456 w +(copy) 4813 6456 w +(blocks to the WORM, which runs in the background, may take hours.) 720 6576 w +(There) 970 6732 w +(are) 1289 6732 w +(two) 1482 6732 w +(ways) 1698 6732 w +(the) 1974 6732 w +(dump) 2170 6732 w +(file) 2492 6732 w +(system) 2684 6732 w +(is) 3065 6732 w +(used.) 3186 6732 w +(The) 3523 6732 w +(first) 3745 6732 w +(is) 3981 6732 w +(by) 4102 6732 w +(the) 4259 6732 w +(users) 4456 6732 w +(them\255) 4759 6732 w +(selves,) 720 6852 w +(who) 1081 6852 w +(can) 1315 6852 w +(browse) 1517 6852 w +(the) 1900 6852 w +(dump) 2089 6852 w +(file) 2403 6852 w +(system) 2587 6852 w +(directly) 2960 6852 w +(or) 3351 6852 w +(attach) 3486 6852 w +(pieces) 3816 6852 w +(of) 4155 6852 w +(it) 4286 6852 w +(to) 4385 6852 w +(their) 4516 6852 w +(name) 4774 6852 w +(space.) 720 6972 w +(For) 1097 6972 w +(example,) 1291 6972 w +(to) 1774 6972 w +(track) 1910 6972 w +(down) 2190 6972 w +(a) 2491 6972 w +(bug,) 2584 6972 w +(it) 2841 6972 w +(is) 2945 6972 w +(straightforward) 3063 6972 w +(to) 3850 6972 w +(try) 3986 6972 w +(the) 4154 6972 w +(compiler) 4347 6972 w +(from) 4808 6972 w +(three) 720 7092 w +(months) 1009 7092 w +(ago) 1412 7092 w +(or) 1627 7092 w +(to) 1766 7092 w +(link) 1901 7092 w +(a) 2116 7092 w +(program) 2208 7092 w +(with) 2661 7092 w +(yesterday) 2903 7092 w +10 /LucidaSansUnicode20 f +(\031) 3366 7092 w +10 /LucidaSansUnicode00 f +(s) 3398 7092 w +(library.) 3486 7092 w +(With) 3897 7092 w +(daily) 4148 7092 w +(snapshots) 4413 7092 w +(of) 4942 7092 w +(all) 720 7212 w +(files,) 882 7212 w +(it) 1165 7212 w +(is) 1280 7212 w +(easy) 1409 7212 w +(to) 1672 7212 w +(find) 1819 7212 w +(when) 2059 7212 w +(a) 2365 7212 w +(particular) 2469 7212 w +(change) 2981 7212 w +(was) 3378 7212 w +(made) 3611 7212 w +(or) 3928 7212 w +(what) 4080 7212 w +(changes) 4361 7212 w +(were) 4810 7212 w +cleartomark +showpage +saveobj restore +%%EndPage: 5 5 +%%Page: 6 6 +/saveobj save def +mark +6 pagesetup +10 /LucidaSansUnicode00 f +(\255 6 \255) 2783 480 w +(made) 720 840 w +(on) 1022 840 w +(a) 1180 840 w +(particular) 1270 840 w +(date.) 1768 840 w +(People) 2078 840 w +(feel) 2432 840 w +(free) 2644 840 w +(to) 2868 840 w +(make) 3000 840 w +(large) 3296 840 w +(speculative) 3573 840 w +(changes) 4148 840 w +(to) 4581 840 w +(files) 4713 840 w +(in) 4949 840 w +(the) 720 960 w +(knowledge) 918 960 w +(that) 1485 960 w +(they) 1719 960 w +(can) 1969 960 w +(be) 2180 960 w +(backed) 2342 960 w +(out) 2731 960 w +(with) 2934 960 w +(a) 3182 960 w +(single) 3281 960 w +(copy) 3614 960 w +(command.) 3885 960 w +(There) 4471 960 w +(is) 4793 960 w +(no) 4917 960 w +(backup) 720 1080 w +(system) 1119 1080 w +(as) 1506 1080 w +(such;) 1658 1080 w +(instead,) 1962 1080 w +(because) 2393 1080 w +(the) 2833 1080 w +(dump) 3034 1080 w +(is) 3361 1080 w +(in) 3487 1080 w +(the) 3624 1080 w +(file) 3825 1080 w +(name) 4022 1080 w +(space,) 4334 1080 w +(backup) 4688 1080 w +(problems can be solved with standard tools such as) 720 1200 w +10 /LucidaTypewriter f +(cp) 3267 1200 w +10 /LucidaSansUnicode00 f +(,) 3411 1200 w +10 /LucidaTypewriter f +(ls) 3475 1200 w +10 /LucidaSansUnicode00 f +(,) 3619 1200 w +10 /LucidaTypewriter f +(grep) 3683 1200 w +10 /LucidaSansUnicode00 f +(, and) 3971 1200 w +10 /LucidaTypewriter f +(diff) 4247 1200 w +10 /LucidaSansUnicode00 f +(.) 4535 1200 w +(The) 970 1356 w +(other) 1189 1356 w +(\(very) 1484 1356 w +(rare\)) 1757 1356 w +(use) 2022 1356 w +(is) 2230 1356 w +(complete) 2349 1356 w +(system) 2834 1356 w +(backup.) 3213 1356 w +(In) 3668 1356 w +(the) 3798 1356 w +(event) 3992 1356 w +(of) 4294 1356 w +(disaster,) 4431 1356 w +(the) 4885 1356 w +(active) 720 1476 w +(file) 1042 1476 w +(system) 1235 1476 w +(can) 1616 1476 w +(be) 1825 1476 w +(initialized) 1985 1476 w +(from) 2501 1476 w +(any) 2774 1476 w +(dump) 2984 1476 w +(by) 3306 1476 w +(clearing) 3462 1476 w +(the) 3888 1476 w +(disk) 4084 1476 w +(cache) 4326 1476 w +(and) 4642 1476 w +(set\255) 4863 1476 w +(ting the root of the active file system to be a copy of the dumped root.) 720 1596 w +(Although) 4218 1596 w +(easy) 4695 1596 w +(to) 4942 1596 w +(do,) 720 1716 w +(this) 914 1716 w +(is) 1131 1716 w +(not) 1249 1716 w +(to) 1447 1716 w +(be) 1583 1716 w +(taken) 1740 1716 w +(lightly:) 2046 1716 w +(besides) 2415 1716 w +(losing) 2821 1716 w +(any) 3152 1716 w +(change) 3358 1716 w +(made) 3743 1716 w +(after) 4047 1716 w +(the) 4310 1716 w +(date) 4502 1716 w +(of) 4750 1716 w +(the) 4885 1716 w +(dump,) 720 1836 w +(this) 1069 1836 w +(recovery) 1284 1836 w +(method) 1730 1836 w +(results) 2138 1836 w +(in) 2501 1836 w +(a) 2628 1836 w +(very) 2719 1836 w +(slow) 2956 1836 w +(system.) 3210 1836 w +(The) 3650 1836 w +(cache) 3868 1836 w +(must) 4180 1836 w +(be) 4460 1836 w +(reloaded) 4616 1836 w +(from) 720 1956 w +(WORM,) 1000 1956 w +(which) 1393 1956 w +(is) 1722 1956 w +(much) 1850 1956 w +(slower) 2166 1956 w +(than) 2529 1956 w +(magnetic) 2793 1956 w +(disks.) 3286 1956 w +(The) 3650 1956 w +(file) 3879 1956 w +(system) 4077 1956 w +(takes) 4464 1956 w +(a) 4768 1956 w +(few) 4870 1956 w +(days to reload the working set and regain its full performance.) 720 2076 w +(Access) 970 2232 w +(permissions) 1334 2232 w +(of) 1956 2232 w +(files) 2089 2232 w +(in) 2326 2232 w +(the) 2452 2232 w +(dump) 2642 2232 w +(are) 2958 2232 w +(the) 3145 2232 w +(same) 3335 2232 w +(as) 3625 2232 w +(they) 3766 2232 w +(were) 4009 2232 w +(when) 4275 2232 w +(the) 4568 2232 w +(dump) 4759 2232 w +(was) 720 2352 w +(made.) 949 2352 w +(Normal) 1326 2352 w +(utilities) 1725 2352 w +(have) 2130 2352 w +(normal) 2401 2352 w +(permissions) 2788 2352 w +(in) 3420 2352 w +(the) 3556 2352 w +(dump) 3756 2352 w +(without) 4082 2352 w +(any) 4492 2352 w +(special) 4706 2352 w +(arrangement.) 720 2472 w +(The) 1440 2472 w +(dump) 1657 2472 w +(file) 1975 2472 w +(system) 2163 2472 w +(is) 2540 2472 w +(read-only,) 2657 2472 w +(though,) 3203 2472 w +(which) 3618 2472 w +(means) 3936 2472 w +(that) 4290 2472 w +(files) 4518 2472 w +(in) 4757 2472 w +(the) 4885 2472 w +(dump) 720 2592 w +(cannot) 1037 2592 w +(be) 1401 2592 w +(written) 1556 2592 w +(regardless) 1930 2592 w +(of) 2470 2592 w +(their) 2603 2592 w +(permission) 2863 2592 w +(bits;) 3434 2592 w +(in) 3681 2592 w +(fact,) 3807 2592 w +(since) 4054 2592 w +(directories) 4338 2592 w +(are) 4888 2592 w +(part of the read-only structure, even the permissions cannot be changed.) 720 2712 w +(Once) 970 2868 w +(a) 1271 2868 w +(file) 1380 2868 w +(is) 1585 2868 w +(written) 1719 2868 w +(to) 2113 2868 w +(WORM,) 2266 2868 w +(it) 2666 2868 w +(cannot) 2787 2868 w +(be) 3170 2868 w +(removed,) 3344 2868 w +(so) 3853 2868 w +(our) 4020 2868 w +(users) 4239 2868 w +(never) 4555 2868 w +(see) 4877 2868 w +10 /LucidaSansUnicode20 f +(\030\030) 720 2988 w +10 /LucidaSansUnicode00 f +(please) 784 2988 w +(clean) 1143 2988 w +(up) 1445 2988 w +(your) 1619 2988 w +(files) 1883 2988 w +10 /LucidaSansUnicode20 f +(\031\031) 2085 2988 w +10 /LucidaSansUnicode00 f +(messages) 2197 2988 w +(and) 2720 2988 w +(there) 2948 2988 w +(is) 3248 2988 w +(no) 3376 2988 w +10 /LucidaTypewriter f +(df) 3547 2988 w +10 /LucidaSansUnicode00 f +(command.) 3739 2988 w +(We) 4329 2988 w +(regard) 4519 2988 w +(the) 4885 2988 w +(WORM) 720 3108 w +(jukebox) 1072 3108 w +(as) 1502 3108 w +(an) 1647 3108 w +(unlimited) 1803 3108 w +(resource.) 2302 3108 w +(The) 2824 3108 w +(only) 3044 3108 w +(issue) 3287 3108 w +(is) 3576 3108 w +(how) 3696 3108 w +(long) 3936 3108 w +(it) 4190 3108 w +(will) 4296 3108 w +(take) 4500 3108 w +(to) 4746 3108 w +(fill.) 4884 3108 w +(Our) 720 3228 w +(WORM) 942 3228 w +(has) 1296 3228 w +(served) 1505 3228 w +(a) 1865 3228 w +(community) 1961 3228 w +(of) 2542 3228 w +(about) 2681 3228 w +(50) 3000 3228 w +(users) 3167 3228 w +(for) 3469 3228 w +(five) 3649 3228 w +(years) 3864 3228 w +(and) 4159 3228 w +(has) 4379 3228 w +(absorbed) 4587 3228 w +(daily) 720 3348 w +(dumps,) 987 3348 w +(consuming) 1390 3348 w +(a) 1962 3348 w +(total) 2056 3348 w +(of) 2314 3348 w +(65%) 2451 3348 w +(of) 2683 3348 w +(the) 2820 3348 w +(storage) 3014 3348 w +(in) 3416 3348 w +(the) 3546 3348 w +(jukebox.) 3741 3348 w +(In) 4236 3348 w +(that) 4367 3348 w +(time,) 4598 3348 w +(the) 4885 3348 w +(manufacturer) 720 3468 w +(has) 1434 3468 w +(improved) 1664 3468 w +(the) 2184 3468 w +(technology,) 2401 3468 w +(doubling) 3028 3468 w +(the) 3521 3468 w +(capacity) 3738 3468 w +(of) 4192 3468 w +(the) 4351 3468 w +(individual) 4567 3468 w +(disks.) 720 3588 w +(If) 1072 3588 w +(we) 1174 3588 w +(were) 1343 3588 w +(to) 1609 3588 w +(upgrade) 1744 3588 w +(to) 2183 3588 w +(the) 2318 3588 w +(new) 2510 3588 w +(media,) 2742 3588 w +(we) 3107 3588 w +(would) 3277 3588 w +(have) 3606 3588 w +(more) 3868 3588 w +(free) 4156 3588 w +(space) 4383 3588 w +(than) 4696 3588 w +(in) 4949 3588 w +(the original empty jukebox.) 720 3708 w +(Technology has created storage faster than we can use it.) 2127 3708 w +10 /LucidaSans-Demi f +(Unusual file servers) 720 3948 w +10 /LucidaSansUnicode00 f +(Plan) 970 4104 w +(9) 1224 4104 w +(is) 1340 4104 w +(characterized) 1473 4104 w +(by) 2181 4104 w +(a) 2350 4104 w +(variety) 2459 4104 w +(of) 2835 4104 w +(servers) 2987 4104 w +(that) 3389 4104 w +(offer) 3634 4104 w +(a) 3920 4104 w +(file-like) 4029 4104 w +(interface) 4464 4104 w +(to) 4942 4104 w +(unusual) 720 4224 w +(services.) 1138 4224 w +(Many) 1624 4224 w +(of) 1914 4224 w +(these) 2047 4224 w +(are) 2344 4224 w +(implemented) 2530 4224 w +(by) 3201 4224 w +(user-level) 3350 4224 w +(processes,) 3874 4224 w +(although) 4421 4224 w +(the) 4885 4224 w +(distinction) 720 4344 w +(is) 1267 4344 w +(unimportant) 1383 4344 w +(to) 2021 4344 w +(their) 2155 4344 w +(clients;) 2416 4344 w +(whether) 2799 4344 w +(a) 3226 4344 w +(service) 3317 4344 w +(is) 3689 4344 w +(provided) 3805 4344 w +(by) 4270 4344 w +(the) 4422 4344 w +(kernel,) 4614 4344 w +(a) 4985 4344 w +(user) 720 4464 w +(process,) 966 4464 w +(or) 1408 4464 w +(a) 1546 4464 w +(remote) 1637 4464 w +(server) 2017 4464 w +(is) 2350 4464 w +(irrelevant) 2466 4464 w +(to) 2960 4464 w +(the) 3094 4464 w +(way) 3285 4464 w +(it) 3505 4464 w +(is) 3607 4464 w +(used.) 3723 4464 w +(There) 4055 4464 w +(are) 4369 4464 w +(dozens) 4557 4464 w +(of) 4942 4464 w +(such servers; in this section we present three representative ones.) 720 4584 w +(Perhaps) 970 4740 w +(the) 1393 4740 w +(most) 1588 4740 w +(remarkable) 1870 4740 w +(file) 2457 4740 w +(server) 2649 4740 w +(in) 2987 4740 w +(Plan) 3119 4740 w +(9) 3361 4740 w +(is) 3465 4740 w +(8\275,) 3586 4740 w +(the) 3802 4740 w +(window) 3998 4740 w +(system.) 4408 4740 w +(It) 4853 4740 w +(is) 4960 4740 w +(discussed) 720 4860 w +(at) 1237 4860 w +(length) 1369 4860 w +(elsewhere) 1717 4860 w +([Pike91],) 2241 4860 w +(but) 2703 4860 w +(deserves) 2905 4860 w +(a) 3371 4860 w +(brief) 3466 4860 w +(explanation) 3732 4860 w +(here.) 4342 4860 w +(8\275) 4660 4860 w +(pro\255) 4842 4860 w +(vides) 720 4980 w +(two) 1017 4980 w +(interfaces:) 1238 4980 w +(to) 1791 4980 w +(the) 1935 4980 w +(user) 2136 4980 w +(seated) 2393 4980 w +(at) 2758 4980 w +(the) 2897 4980 w +(terminal,) 3099 4980 w +(it) 3580 4980 w +(offers) 3693 4980 w +(a) 4023 4980 w +(traditional) 4125 4980 w +(style) 4670 4980 w +(of) 4942 4980 w +(interaction) 720 5100 w +(with) 1303 5100 w +(multiple) 1571 5100 w +(windows,) 2032 5100 w +(each) 2546 5100 w +(running) 2832 5100 w +(an) 3274 5100 w +(application,) 3453 5100 w +(all) 4081 5100 w +(controlled) 4256 5100 w +(by) 4808 5100 w +(a) 4985 5100 w +(mouse) 720 5220 w +(and) 1092 5220 w +(keyboard.) 1321 5220 w +(To) 1883 5220 w +(the) 2056 5220 w +(client) 2261 5220 w +(programs,) 2575 5220 w +(the) 3124 5220 w +(view) 3329 5220 w +(is) 3593 5220 w +(also) 3723 5220 w +(fairly) 3969 5220 w +(traditional:) 4262 5220 w +(pro\255) 4842 5220 w +(grams) 720 5340 w +(running) 1056 5340 w +(in) 1470 5340 w +(a) 1595 5340 w +(window) 1684 5340 w +(see) 2086 5340 w +(a) 2282 5340 w +(set) 2370 5340 w +(of) 2547 5340 w +(files) 2678 5340 w +(in) 2913 5340 w +10 /LucidaTypewriter f +(/dev) 3037 5340 w +10 /LucidaSansUnicode00 f +(with) 3358 5340 w +(names) 3596 5340 w +(like) 3946 5340 w +10 /LucidaTypewriter f +(mouse) 4151 5340 w +10 /LucidaSansUnicode00 f +(,) 4511 5340 w +10 /LucidaTypewriter f +(screen) 4576 5340 w +10 /LucidaSansUnicode00 f +(,) 5008 5340 w +(and) 720 5460 w +10 /LucidaTypewriter f +(cons) 941 5460 w +10 /LucidaSansUnicode00 f +(.) 1229 5460 w +(Programs) 1334 5460 w +(that) 1834 5460 w +(want) 2066 5460 w +(to) 2338 5460 w +(print) 2477 5460 w +(text) 2750 5460 w +(to) 2982 5460 w +(their) 3121 5460 w +(window) 3387 5460 w +(write) 3798 5460 w +(to) 4080 5460 w +10 /LucidaTypewriter f +(/dev/cons) 4220 5460 w +10 /LucidaSansUnicode00 f +(;) 4868 5460 w +(to) 4942 5460 w +(read) 720 5580 w +(the) 970 5580 w +(mouse,) 1160 5580 w +(they) 1550 5580 w +(read) 1792 5580 w +10 /LucidaTypewriter f +(/dev/mouse) 2042 5580 w +10 /LucidaSansUnicode00 f +(.) 2762 5580 w +(In) 2861 5580 w +(the) 2987 5580 w +(Plan) 3177 5580 w +(9) 3413 5580 w +(style,) 3510 5580 w +(bitmap) 3801 5580 w +(graphics) 4175 5580 w +(is) 4623 5580 w +(imple\255) 4737 5580 w +(mented) 720 5700 w +(by) 1123 5700 w +(providing) 1274 5700 w +(a) 1772 5700 w +(file) 1863 5700 w +10 /LucidaTypewriter f +(/dev/bitblt) 2050 5700 w +10 /LucidaSansUnicode00 f +(on) 2878 5700 w +(which) 3037 5700 w +(clients) 3354 5700 w +(write) 3705 5700 w +(encoded) 3981 5700 w +(messages) 4430 5700 w +(to) 4942 5700 w +(execute) 720 5820 w +(graphical) 1139 5820 w +(operations) 1626 5820 w +(such) 2182 5820 w +(as) 2448 5820 w +10 /LucidaTypewriter f +(bitblt) 2594 5820 w +10 /LucidaSansUnicode00 f +(\(RasterOp\).) 3066 5820 w +(What) 3680 5820 w +(is) 3960 5820 w +(unusual) 4080 5820 w +(is) 4503 5820 w +(how) 4622 5820 w +(this) 4861 5820 w +(is) 720 5940 w +(done:) 836 5940 w +(8\275) 1146 5940 w +(is) 1325 5940 w +(a) 1441 5940 w +(file) 1532 5940 w +(server,) 1719 5940 w +(serving) 2084 5940 w +(the) 2473 5940 w +(files) 2664 5940 w +(in) 2902 5940 w +10 /LucidaTypewriter f +(/dev) 3029 5940 w +10 /LucidaSansUnicode00 f +(to) 3354 5940 w +(the) 3489 5940 w +(clients) 3681 5940 w +(running) 4033 5940 w +(in) 4450 5940 w +(each) 4578 5940 w +(win\255) 4839 5940 w +(dow.) 720 6060 w +(Although) 1018 6060 w +(every) 1495 6060 w +(window) 1785 6060 w +(looks) 2187 6060 w +(the same to its client, each window has a distinct set) 2480 6060 w +(of) 720 6180 w +(files) 857 6180 w +(in) 1098 6180 w +10 /LucidaTypewriter f +(/dev) 1228 6180 w +10 /LucidaSansUnicode00 f +(.) 1516 6180 w +(8\275) 1619 6180 w +(multiplexes) 1802 6180 w +(its) 2408 6180 w +(clients) 2565 6180 w +10 /LucidaSansUnicode20 f +(\031) 2880 6180 w +10 /LucidaSansUnicode00 f +(access) 2952 6180 w +(to) 3307 6180 w +(the) 3445 6180 w +(resources) 3640 6180 w +(of) 4150 6180 w +(the) 4288 6180 w +(terminal) 4483 6180 w +(by) 4925 6180 w +(serving) 720 6300 w +(multiple) 1112 6300 w +(sets) 1549 6300 w +(of) 1783 6300 w +(files.) 1919 6300 w +(Each) 2223 6300 w +(client) 2483 6300 w +(is) 2785 6300 w +(given) 2903 6300 w +(a) 3202 6300 w +(private) 3295 6300 w +(name) 3666 6300 w +(space) 3970 6300 w +(with) 4284 6300 w +(a) 4527 6300 w +10 /LucidaSans-Italic f +(different) 4620 6300 w +10 /LucidaSansUnicode00 f +(set) 720 6420 w +(of) 897 6420 w +(files) 1028 6420 w +(that) 1264 6420 w +(behave) 1489 6420 w +(the) 1867 6420 w +(same) 2056 6420 w +(as) 2345 6420 w +(in) 2485 6420 w +(all) 2610 6420 w +(other) 2757 6420 w +(windows.) 3048 6420 w +(There) 3566 6420 w +(are) 3878 6420 w +(many) 4064 6420 w +(advantages) 4360 6420 w +(to) 4942 6420 w +(this) 720 6540 w +(structure.) 992 6540 w +(One) 1587 6540 w +(is) 1876 6540 w +(that) 2049 6540 w +(8\275) 2333 6540 w +(serves) 2569 6540 w +(the) 2969 6540 w +(same) 3217 6540 w +(files) 3565 6540 w +(it) 3860 6540 w +(needs) 4019 6540 w +(for) 4400 6540 w +(its) 4631 6540 w +(own) 4840 6540 w +(implementation) 720 6660 w +10 /LucidaSansUnicode20 f +(\024) 1482 6660 w +10 /LucidaSansUnicode00 f +(it) 1582 6660 w +(multiplexes) 1700 6660 w +(its) 2318 6660 w +(own) 2487 6660 w +(interface) 2739 6660 w +10 /LucidaSansUnicode20 f +(\024) 3163 6660 w +10 /LucidaSansUnicode00 f +(so) 3263 6660 w +(it) 3427 6660 w +(may) 3546 6660 w +(be) 3799 6660 w +(run,) 3971 6660 w +(recursively,) 4221 6660 w +(as) 4826 6660 w +(a) 4985 6660 w +(client) 720 6780 w +(of) 1054 6780 w +(itself.) 1222 6780 w +(Also,) 1595 6780 w +(consider) 1907 6780 w +(the) 2391 6780 w +(implementation) 2616 6780 w +(of) 3448 6780 w +10 /LucidaTypewriter f +(/dev/tty) 3616 6780 w +10 /LucidaSansUnicode00 f +(in) 4262 6780 w +(UNIX,) 4423 6780 w +(which) 4759 6780 w +(requires) 720 6900 w +(special) 1171 6900 w +(code) 1557 6900 w +(in) 1840 6900 w +(the) 1983 6900 w +(kernel) 2190 6900 w +(to) 2544 6900 w +(redirect) 2694 6900 w +10 /LucidaTypewriter f +(open) 3120 6900 w +10 /LucidaSansUnicode00 f +(calls) 3460 6900 w +(to) 3727 6900 w +(the) 3877 6900 w +(appropriate) 4084 6900 w +(device.) 4701 6900 w +(Instead,) 720 7020 w +(in) 1144 7020 w +(8\275) 1274 7020 w +(the) 1456 7020 w +(equivalent) 1650 7020 w +(service) 2190 7020 w +(falls) 2565 7020 w +(out) 2805 7020 w +(automatically:) 3004 7020 w +(8\275) 3720 7020 w +(serves) 3902 7020 w +10 /LucidaTypewriter f +(/dev/cons) 4248 7020 w +10 /LucidaSansUnicode00 f +(as) 4934 7020 w +(its) 720 7140 w +(basic) 871 7140 w +(function;) 1155 7140 w +(there) 1623 7140 w +(is) 1910 7140 w +(nothing) 2025 7140 w +(extra) 2435 7140 w +(to) 2720 7140 w +(do.) 2853 7140 w +(When) 3076 7140 w +(a) 3377 7140 w +(program) 3467 7140 w +(wants) 3918 7140 w +(to) 4235 7140 w +(read) 4368 7140 w +(from) 4618 7140 w +(the) 4885 7140 w +(keyboard,) 720 7260 w +(it) 1245 7260 w +(opens) 1355 7260 w +10 /LucidaTypewriter f +(/dev/cons) 1692 7260 w +10 /LucidaSansUnicode00 f +(,) 2340 7260 w +(but) 2416 7260 w +(it) 2622 7260 w +(is) 2732 7260 w +(a) 2856 7260 w +(private) 2955 7260 w +(file,) 3332 7260 w +(not) 3559 7260 w +(a) 3763 7260 w +(shared) 3862 7260 w +(one) 4234 7260 w +(with) 4457 7260 w +(special) 4706 7260 w +cleartomark +showpage +saveobj restore +%%EndPage: 6 6 +%%Page: 7 7 +/saveobj save def +mark +7 pagesetup +10 /LucidaSansUnicode00 f +(\255 7 \255) 2783 480 w +(properties.) 720 840 w +(Again,) 1318 840 w +(local) 1663 840 w +(name) 1924 840 w +(spaces) 2226 840 w +(make) 2589 840 w +(this) 2887 840 w +(possible;) 3102 840 w +(conventions) 3574 840 w +(about) 4195 840 w +(the) 4510 840 w +(consis\255) 4702 840 w +(tency of the files within them make it natural.) 720 960 w +(8\275 has a unique) 970 1116 w +(feature) 1799 1116 w +(made) 2176 1116 w +(possible) 2476 1116 w +(by) 2912 1116 w +(its) 3060 1116 w +(design.) 3210 1116 w +(Because) 3630 1116 w +(it) 4052 1116 w +(is) 4151 1116 w +(implemented) 4264 1116 w +(as) 4934 1116 w +(a) 720 1236 w +(file) 813 1236 w +(server,) 1002 1236 w +(it) 1369 1236 w +(has) 1473 1236 w +(the) 1679 1236 w +(power) 1872 1236 w +(to) 2207 1236 w +(postpone) 2342 1236 w +(answering) 2833 1236 w +(read) 3365 1236 w +(requests) 3617 1236 w +(for) 4071 1236 w +(a) 4247 1236 w +(particular) 4339 1236 w +(win\255) 4839 1236 w +(dow.) 720 1356 w +(This) 1026 1356 w +(behavior) 1272 1356 w +(is) 1732 1356 w +(toggled) 1853 1356 w +(by) 2264 1356 w +(a) 2420 1356 w +(reserved) 2516 1356 w +(key) 2974 1356 w +(on) 3182 1356 w +(the) 3347 1356 w +(keyboard.) 3544 1356 w +(Toggling) 4099 1356 w +(once) 4571 1356 w +(sus\255) 4843 1356 w +(pends) 720 1476 w +(client) 1080 1476 w +(reads) 1409 1476 w +(from) 1740 1476 w +(the) 2037 1476 w +(window;) 2257 1476 w +(toggling) 2723 1476 w +(again) 3191 1476 w +(resumes) 3518 1476 w +(normal) 3992 1476 w +(reads,) 4397 1476 w +(which) 4759 1476 w +(absorb) 720 1596 w +(whatever) 1088 1596 w +(text) 1558 1596 w +(has) 1783 1596 w +(been) 1985 1596 w +(prepared,) 2256 1596 w +(one) 2760 1596 w +(line) 2973 1596 w +(at) 3183 1596 w +(a) 3309 1596 w +(time.) 3398 1596 w +(This) 3711 1596 w +(allows) 3950 1596 w +(the) 4287 1596 w +(user) 4477 1596 w +(to) 4722 1596 w +(edit) 4855 1596 w +(multi-line) 720 1716 w +(input) 1243 1716 w +(text) 1535 1716 w +(on) 1765 1716 w +(the) 1927 1716 w +(screen) 2121 1716 w +(before) 2477 1716 w +(the) 2830 1716 w +(application) 3024 1716 w +(sees) 3597 1716 w +(it,) 3850 1716 w +(obviating) 3986 1716 w +(the) 4474 1716 w +(need) 4667 1716 w +(to) 4942 1716 w +(invoke) 720 1836 w +(a) 1081 1836 w +(separate) 1179 1836 w +(editor) 1636 1836 w +(to) 1966 1836 w +(prepare) 2107 1836 w +(text) 2525 1836 w +(such) 2759 1836 w +(as) 3028 1836 w +(mail) 3177 1836 w +(messages.) 3426 1836 w +(A) 4008 1836 w +(related) 4121 1836 w +(property) 4502 1836 w +(is) 4960 1836 w +(that) 720 1956 w +(reads) 944 1956 w +(are) 1243 1956 w +(answered) 1428 1956 w +(directly) 1922 1956 w +(from) 2313 1956 w +(the) 2578 1956 w +(data) 2766 1956 w +(structure) 3009 1956 w +(defining) 3480 1956 w +(the) 3913 1956 w +(text on the display:) 4101 1956 w +(text) 720 2076 w +(may) 944 2076 w +(be) 1177 2076 w +(edited) 1329 2076 w +(until) 1666 2076 w +(its) 1918 2076 w +(final) 2068 2076 w +(newline) 2313 2076 w +(makes) 2717 2076 w +(the) 3063 2076 w +(prepared) 3251 2076 w +(line) 3722 2076 w +(of) 3931 2076 w +(text) 4062 2076 w +(readable) 4286 2076 w +(by) 4737 2076 w +(the) 4885 2076 w +(client.) 720 2196 w +(Even) 1083 2196 w +(then,) 1342 2196 w +(until) 1625 2196 w +(the) 1878 2196 w +(line) 2067 2196 w +(is) 2277 2196 w +(read,) 2391 2196 w +(the) 2672 2196 w +(text) 2861 2196 w +(the) 3086 2196 w +(client) 3275 2196 w +(will) 3573 2196 w +(read) 3771 2196 w +(can) 4020 2196 w +(be) 4222 2196 w +(changed.) 4375 2196 w +(For) 4884 2196 w +(example, after typing) 720 2316 w +9 /LucidaTypewriter f +(%) 1008 2486 w +(make) 1138 2486 w +(rm) 1008 2596 w +(*) 1203 2596 w +10 /LucidaSansUnicode00 f +(to) 720 2776 w +(the) 860 2776 w +(shell,) 1057 2776 w +(the) 1358 2776 w +(user) 1555 2776 w +(can) 1807 2776 w +(backspace) 2017 2776 w +(over) 2562 2776 w +(the) 2814 2776 w +(final) 3012 2776 w +(newline) 3267 2776 w +(at) 3681 2776 w +(any) 3816 2776 w +(time) 4028 2776 w +(until) 4286 2776 w +10 /LucidaTypewriter f +(make) 4548 2776 w +10 /LucidaSansUnicode00 f +(fin\255) 4879 2776 w +(ishes,) 720 2896 w +(holding) 1043 2896 w +(off) 1453 2896 w +(execution) 1630 2896 w +(of) 2146 2896 w +(the) 2285 2896 w +10 /LucidaTypewriter f +(rm) 2481 2896 w +10 /LucidaSansUnicode00 f +(command,) 2666 2896 w +(or) 3217 2896 w +(even) 3360 2896 w +(point) 3627 2896 w +(with) 3920 2896 w +(the) 4166 2896 w +(mouse) 4362 2896 w +(before) 4726 2896 w +(the) 720 3016 w +10 /LucidaTypewriter f +(rm) 907 3016 w +10 /LucidaSansUnicode00 f +(and type another command to be executed first.) 1083 3016 w +(There is no) 970 3172 w +10 /LucidaTypewriter f +(ftp) 1547 3172 w +10 /LucidaSansUnicode00 f +(command in Plan 9.) 1795 3172 w +(Instead,) 2821 3172 w +(a) 3239 3172 w +(user-level) 3327 3172 w +(file) 3850 3172 w +(server) 4034 3172 w +(called) 4364 3172 w +10 /LucidaTypewriter f +(ftpfs) 4680 3172 w +10 /LucidaSansUnicode00 f +(dials) 720 3292 w +(the) 989 3292 w +(FTP) 1186 3292 w +(site,) 1400 3292 w +(logs) 1647 3292 w +(in) 1892 3292 w +(on) 2025 3292 w +(behalf) 2190 3292 w +(of) 2534 3292 w +(the) 2674 3292 w +(user,) 2870 3292 w +(and) 3153 3292 w +(uses) 3374 3292 w +(the) 3635 3292 w +(FTP) 3831 3292 w +(protocol) 4044 3292 w +(to) 4489 3292 w +(examine) 4628 3292 w +(files) 720 3412 w +(in) 971 3412 w +(the) 1111 3412 w +(remote) 1315 3412 w +(directory.) 1708 3412 w +(To) 2252 3412 w +(the) 2425 3412 w +(local) 2629 3412 w +(user,) 2903 3412 w +(it) 3194 3412 w +(offers) 3309 3412 w +(a) 3641 3412 w +(file) 3745 3412 w +(hierarchy,) 3945 3412 w +(attached) 4476 3412 w +(to) 4942 3412 w +10 /LucidaTypewriter f +(/n/ftp) 720 3532 w +10 /LucidaSansUnicode00 f +(in) 1210 3532 w +(the) 1359 3532 w +(local) 1572 3532 w +(name) 1855 3532 w +(space,) 2178 3532 w +(mirroring) 2543 3532 w +(the) 3059 3532 w +(contents) 3271 3532 w +(of) 3745 3532 w +(the) 3900 3532 w +(FTP) 4112 3532 w +(site.) 4341 3532 w +(In) 4635 3532 w +(other) 4783 3532 w +(words,) 720 3652 w +(it) 1093 3652 w +(translates) 1207 3652 w +(the) 1729 3652 w +(FTP) 1932 3652 w +(protocol) 2152 3652 w +(into) 2604 3652 w +(9P) 2841 3652 w +(to) 3007 3652 w +(offer) 3153 3652 w +(Plan) 3433 3652 w +(9) 3682 3652 w +(access) 3793 3652 w +(to) 4156 3652 w +(FTP) 4302 3652 w +(sites.) 4522 3652 w +(The) 4859 3652 w +(implementation) 720 3772 w +(is) 1518 3772 w +(tricky;) 1634 3772 w +10 /LucidaTypewriter f +(ftpfs) 1970 3772 w +10 /LucidaSansUnicode00 f +(must) 2366 3772 w +(do) 2645 3772 w +(some) 2805 3772 w +(sophisticated) 3102 3772 w +(caching) 3783 3772 w +(for) 4191 3772 w +(efficiency) 4365 3772 w +(and) 4860 3772 w +(use) 720 3892 w +(heuristics) 929 3892 w +(to) 1438 3892 w +(decode) 1576 3892 w +(remote) 1966 3892 w +(directory) 2350 3892 w +(information.) 2821 3892 w +(But) 3492 3892 w +(the) 3689 3892 w +(result) 3885 3892 w +(is) 4202 3892 w +(worthwhile:) 4323 3892 w +(all) 4927 3892 w +(the) 720 4012 w +(local) 917 4012 w +(file) 1184 4012 w +(management) 1377 4012 w +(tools) 2050 4012 w +(such) 2331 4012 w +(as) 2599 4012 w +10 /LucidaTypewriter f +(cp) 2747 4012 w +10 /LucidaSansUnicode00 f +(,) 2891 4012 w +10 /LucidaTypewriter f +(grep) 2964 4012 w +10 /LucidaSansUnicode00 f +(,) 3252 4012 w +10 /LucidaTypewriter f +(diff) 3325 4012 w +10 /LucidaSansUnicode00 f +(,) 3613 4012 w +(and) 3686 4012 w +(of) 3907 4012 w +(course) 4046 4012 w +10 /LucidaTypewriter f +(ls) 4409 4012 w +10 /LucidaSansUnicode00 f +(are) 4594 4012 w +(avail\255) 4787 4012 w +(able) 720 4132 w +(to) 964 4132 w +(FTP-served) 1103 4132 w +(files) 1693 4132 w +(exactly) 1936 4132 w +(as) 2318 4132 w +(if) 2466 4132 w +(they) 2574 4132 w +(were) 2823 4132 w +(local) 3095 4132 w +(files.) 3362 4132 w +(Other) 3670 4132 w +(systems) 3986 4132 w +(such) 4419 4132 w +(as) 4687 4132 w +(Jade) 4835 4132 w +(and) 720 4252 w +(Prospero) 936 4252 w +(have) 1400 4252 w +(exploited) 1660 4252 w +(the) 2150 4252 w +(same) 2340 4252 w +(opportunity) 2630 4252 w +([Rao81,) 3233 4252 w +(Neu92],) 3638 4252 w +(but) 4056 4252 w +(because) 4253 4252 w +(of) 4682 4252 w +(local) 4815 4252 w +(name) 720 4372 w +(spaces) 1032 4372 w +(and) 1405 4372 w +(the) 1631 4372 w +(simplicity) 1832 4372 w +(of) 2341 4372 w +(implementing) 2485 4372 w +(9P,) 3202 4372 w +(this) 3398 4372 w +(approach) 3623 4372 w +(fits) 4120 4372 w +(more) 4320 4372 w +(naturally) 4618 4372 w +(into Plan 9 than into other environments.) 720 4492 w +(One) 970 4648 w +(server,) 1214 4648 w +10 /LucidaTypewriter f +(exportfs) 1591 4648 w +10 /LucidaSansUnicode00 f +(,) 2167 4648 w +(is) 2247 4648 w +(a) 2375 4648 w +(user) 2478 4648 w +(process) 2736 4648 w +(that) 3159 4648 w +(takes) 3399 4648 w +(a) 3705 4648 w +(portion) 3809 4648 w +(of) 4212 4648 w +(its) 4359 4648 w +(own) 4525 4648 w +(name) 4774 4648 w +(space) 720 4768 w +(and) 1037 4768 w +(makes) 1258 4768 w +(it) 1612 4768 w +(available) 1719 4768 w +(to) 2183 4768 w +(other) 2322 4768 w +(processes) 2620 4768 w +(by) 3141 4768 w +(translating) 3296 4768 w +(9P) 3856 4768 w +(requests) 4014 4768 w +(into) 4471 4768 w +(system) 4700 4768 w +(calls) 720 4888 w +(to) 976 4888 w +(the) 1115 4888 w +(Plan) 1311 4888 w +(9) 1553 4888 w +(kernel.) 1657 4888 w +(The) 2064 4888 w +(file) 2286 4888 w +(hierarchy) 2478 4888 w +(it) 2968 4888 w +(exports) 3075 4888 w +(may) 3486 4888 w +(contain) 3727 4888 w +(files) 4125 4888 w +(from) 4368 4888 w +(multiple) 4642 4888 w +(servers.) 720 5008 w +10 /LucidaTypewriter f +(Exportfs) 1167 5008 w +10 /LucidaSansUnicode00 f +(is) 1778 5008 w +(usually) 1893 5008 w +(run) 2268 5008 w +(as) 2468 5008 w +(a) 2608 5008 w +(remote) 2697 5008 w +(server) 3075 5008 w +(started) 3406 5008 w +(by) 3780 5008 w +(a) 3929 5008 w +(local) 4018 5008 w +(program,) 4277 5008 w +(either) 4759 5008 w +10 /LucidaTypewriter f +(import) 720 5128 w +10 /LucidaSansUnicode00 f +(or) 1222 5128 w +10 /LucidaTypewriter f +(cpu) 1394 5128 w +10 /LucidaSansUnicode00 f +(.) 1610 5128 w +10 /LucidaTypewriter f +(Import) 1744 5128 w +10 /LucidaSansUnicode00 f +(makes) 2246 5128 w +(a) 2629 5128 w +(network) 2754 5128 w +(call) 3216 5128 w +(to) 3450 5128 w +(the) 3618 5128 w +(remote) 3843 5128 w +(machine,) 4257 5128 w +(starts) 4768 5128 w +10 /LucidaTypewriter f +(exportfs) 720 5248 w +10 /LucidaSansUnicode00 f +(there, and attaches its 9P connection to the local name space.) 1328 5248 w +(For example,) 4399 5248 w +9 /LucidaTypewriter f +(import) 1008 5418 w +(helix) 1463 5418 w +(/net) 1853 5418 w +10 /LucidaSansUnicode00 f +(makes) 720 5598 w +(Helix) 1073 5598 w +10 /LucidaSansUnicode20 f +(\031) 1322 5598 w +10 /LucidaSansUnicode00 f +(s) 1354 5598 w +(network) 1445 5598 w +(interfaces) 1877 5598 w +(visible) 2393 5598 w +(in) 2743 5598 w +(the) 2875 5598 w +(local) 3071 5598 w +10 /LucidaTypewriter f +(/net) 3337 5598 w +10 /LucidaSansUnicode00 f +(directory.) 3666 5598 w +(Helix) 4202 5598 w +(is) 4492 5598 w +(a) 4613 5598 w +(central) 4709 5598 w +(server) 720 5718 w +(and) 1054 5718 w +(has) 1271 5718 w +(many) 1476 5718 w +(network) 1775 5718 w +(interfaces,) 2204 5718 w +(so) 2748 5718 w +(this) 2897 5718 w +(permits) 3113 5718 w +(a) 3520 5718 w +(machine) 3612 5718 w +(with) 4057 5718 w +(one) 4299 5718 w +(network) 4514 5718 w +(to) 4942 5718 w +(access) 720 5838 w +(to) 1078 5838 w +(any) 1219 5838 w +(of) 1431 5838 w +(Helix) 1572 5838 w +10 /LucidaSansUnicode20 f +(\031) 1821 5838 w +10 /LucidaSansUnicode00 f +(s) 1853 5838 w +(networks.) 1948 5838 w +(After) 2499 5838 w +(such) 2783 5838 w +(an) 3053 5838 w +(import,) 3214 5838 w +(the) 3614 5838 w +(local) 3813 5838 w +(machine) 4082 5838 w +(may) 4534 5838 w +(make) 4778 5838 w +(calls on any of the networks connected to Helix.) 720 5958 w +(Another example is) 3121 5958 w +9 /LucidaTypewriter f +(import) 1008 6128 w +(helix) 1463 6128 w +(/proc) 1853 6128 w +10 /LucidaSansUnicode00 f +(which makes Helix) 720 6308 w +10 /LucidaSansUnicode20 f +(\031) 1627 6308 w +10 /LucidaSansUnicode00 f +(s processes) 1659 6308 w +(visible) 2256 6308 w +(in) 2598 6308 w +(the) 2722 6308 w +(local) 2910 6308 w +10 /LucidaTypewriter f +(/proc) 3168 6308 w +10 /LucidaSansUnicode00 f +(,) 3528 6308 w +(permitting) 3593 6308 w +(local) 4135 6308 w +(debuggers) 4393 6308 w +(to) 4942 6308 w +(examine remote processes.) 720 6428 w +(The) 970 6584 w +10 /LucidaTypewriter f +(cpu) 1185 6584 w +10 /LucidaSansUnicode00 f +(command) 1435 6584 w +(connects) 1947 6584 w +(the) 2412 6584 w +(local) 2602 6584 w +(terminal) 2862 6584 w +(to) 3299 6584 w +(a) 3432 6584 w +(remote) 3522 6584 w +(CPU) 3901 6584 w +(server.) 4129 6584 w +(It) 4525 6584 w +(works) 4626 6584 w +(in) 4949 6584 w +(the) 720 6704 w +(opposite) 916 6704 w +(direction) 1378 6704 w +(to) 1848 6704 w +10 /LucidaTypewriter f +(import) 1987 6704 w +10 /LucidaSansUnicode00 f +(:) 2419 6704 w +(after) 2492 6704 w +(calling) 2759 6704 w +(the) 3117 6704 w +(server,) 3313 6704 w +(it) 3683 6704 w +(starts) 3790 6704 w +(a) 4103 6704 w +10 /LucidaSans-Italic f +(local) 4198 6704 w +10 /LucidaTypewriter f +(exportfs) 4464 6704 w +10 /LucidaSansUnicode00 f +(and) 720 6824 w +(mounts) 946 6824 w +(it) 1358 6824 w +(in) 1470 6824 w +(the) 1607 6824 w +(name) 1808 6824 w +(space) 2120 6824 w +(of) 2442 6824 w +(a) 2586 6824 w +(process,) 2687 6824 w +(typically) 3139 6824 w +(a) 3582 6824 w +(newly) 3683 6824 w +(created) 4005 6824 w +(shell,) 4410 6824 w +(on) 4715 6824 w +(the) 4885 6824 w +(server.) 720 6944 w +(It) 1134 6944 w +(then) 1253 6944 w +(rearranges) 1523 6944 w +(the) 2096 6944 w +(name) 2304 6944 w +(space) 2622 6944 w +(to) 2950 6944 w +(make) 3100 6944 w +(local) 3414 6944 w +(device) 3691 6944 w +(files) 4050 6944 w +(\(such) 4304 6944 w +(as) 4615 6944 w +(those) 4773 6944 w +(served) 720 7064 w +(by) 1089 7064 w +(the) 1254 7064 w +(terminal) 1459 7064 w +10 /LucidaSansUnicode20 f +(\031) 1861 7064 w +10 /LucidaSansUnicode00 f +(s) 1893 7064 w +(window) 1994 7064 w +(system\)) 2413 7064 w +(visible) 2836 7064 w +(in) 3195 7064 w +(the) 3337 7064 w +(server) 3543 7064 w +10 /LucidaSansUnicode20 f +(\031) 3840 7064 w +10 /LucidaSansUnicode00 f +(s) 3872 7064 w +10 /LucidaTypewriter f +(/dev) 3974 7064 w +10 /LucidaSansUnicode00 f +(directory.) 4313 7064 w +(The) 4859 7064 w +(effect) 720 7184 w +(of) 1039 7184 w +(running) 1182 7184 w +(a) 1607 7184 w +10 /LucidaTypewriter f +(cpu) 1707 7184 w +10 /LucidaSansUnicode00 f +(command) 1968 7184 w +(is) 2491 7184 w +(therefore) 2616 7184 w +(to) 3108 7184 w +(start) 3251 7184 w +(a) 3517 7184 w +(shell) 3616 7184 w +(on) 3887 7184 w +(a) 4054 7184 w +(fast) 4153 7184 w +(machine,) 4377 7184 w +(one) 4861 7184 w +(more) 720 7304 w +(tightly) 1014 7304 w +(coupled) 1365 7304 w +(to) 1793 7304 w +(the) 1934 7304 w +(file) 2132 7304 w +(server,) 2326 7304 w +(with) 2699 7304 w +(a) 2948 7304 w +(name) 3047 7304 w +(space) 3357 7304 w +(analogous) 3677 7304 w +(to) 4219 7304 w +(the) 4361 7304 w +(local) 4560 7304 w +(one.) 4829 7304 w +cleartomark +showpage +saveobj restore +%%EndPage: 7 7 +%%Page: 8 8 +/saveobj save def +mark +8 pagesetup +10 /LucidaSansUnicode00 f +(\255 8 \255) 2783 480 w +(All) 720 840 w +(local) 882 840 w +(device) 1142 840 w +(files) 1484 840 w +(are) 1721 840 w +(visible) 1907 840 w +(remotely,) 2250 840 w +(so) 2741 840 w +(remote) 2887 840 w +(applications) 3265 840 w +(have) 3884 840 w +(full) 4143 840 w +(access) 4334 840 w +(to) 4683 840 w +(local) 4815 840 w +(services) 720 960 w +(such) 1156 960 w +(as) 1431 960 w +(bitmap) 1586 960 w +(graphics,) 1975 960 w +10 /LucidaTypewriter f +(/dev/cons) 2470 960 w +10 /LucidaSansUnicode00 f +(,) 3118 960 w +(and) 3200 960 w +(so) 3430 960 w +(on.) 3592 960 w +(This) 3829 960 w +(is) 4084 960 w +(not) 4214 960 w +(the) 4424 960 w +(same) 4629 960 w +(as) 4934 960 w +10 /LucidaTypewriter f +(rlogin) 720 1080 w +10 /LucidaSansUnicode00 f +(,) 1152 1080 w +(which) 1220 1080 w +(does) 1537 1080 w +(nothing) 1804 1080 w +(to) 2215 1080 w +(reproduce) 2349 1080 w +(the) 2879 1080 w +(local) 3069 1080 w +(name) 3329 1080 w +(space) 3630 1080 w +(on) 3941 1080 w +(the) 4099 1080 w +(remote) 4289 1080 w +(system,) 4668 1080 w +(nor) 720 1200 w +(is) 929 1200 w +(it) 1054 1200 w +(the) 1165 1200 w +(same) 1365 1200 w +(as) 1665 1200 w +(file) 1816 1200 w +(sharing) 2012 1200 w +(with,) 2419 1200 w +(say,) 2701 1200 w +(NFS,) 2937 1200 w +(which) 3197 1200 w +(can) 3524 1200 w +(achieve) 3738 1200 w +(some) 4145 1200 w +(name) 4452 1200 w +(space) 4764 1200 w +(equivalence) 720 1320 w +(but) 1334 1320 w +(not) 1539 1320 w +(the) 1742 1320 w +(combination) 1940 1320 w +(of) 2586 1320 w +(access) 2727 1320 w +(to) 3085 1320 w +(local) 3226 1320 w +(hardware) 3494 1320 w +(devices,) 3987 1320 w +(remote) 4420 1320 w +(files,) 4806 1320 w +(and) 720 1440 w +(remote) 945 1440 w +(CPU) 1334 1440 w +(resources.) 1572 1440 w +(The) 2151 1440 w +10 /LucidaTypewriter f +(cpu) 2377 1440 w +10 /LucidaSansUnicode00 f +(command) 2638 1440 w +(is) 3162 1440 w +(a) 3288 1440 w +(uniquely) 3389 1440 w +(transparent) 3850 1440 w +(mechanism.) 4456 1440 w +(For) 720 1560 w +(example,) 911 1560 w +(it) 1391 1560 w +(is) 1492 1560 w +(reasonable) 1607 1560 w +(to) 2171 1560 w +(start) 2304 1560 w +(a) 2560 1560 w +(window) 2650 1560 w +(system) 3054 1560 w +(in) 3429 1560 w +(a) 3555 1560 w +(window) 3645 1560 w +(running) 4049 1560 w +(a) 4463 1560 w +10 /LucidaTypewriter f +(cpu) 4552 1560 w +10 /LucidaSansUnicode00 f +(com\255) 4802 1560 w +(mand; all windows created there automatically start processes on the CPU server.) 720 1680 w +10 /LucidaSans-Demi f +(Configurability and administration) 720 1920 w +10 /LucidaSansUnicode00 f +(The) 970 2076 w +(uniform) 1191 2076 w +(interconnection) 1616 2076 w +(of) 2413 2076 w +(components) 2551 2076 w +(in) 3188 2076 w +(Plan) 3319 2076 w +(9) 3560 2076 w +(makes) 3663 2076 w +(it) 4016 2076 w +(possible) 4122 2076 w +(to) 4566 2076 w +(config\255) 4705 2076 w +(ure) 720 2196 w +(a) 933 2196 w +(Plan) 1042 2196 w +(9) 1297 2196 w +(installation) 1414 2196 w +(many) 2004 2196 w +(different) 2320 2196 w +(ways.) 2792 2196 w +(A) 3145 2196 w +(single) 3268 2196 w +(laptop) 3611 2196 w +(PC) 3973 2196 w +(can) 4151 2196 w +(function) 4372 2196 w +(as) 4826 2196 w +(a) 4985 2196 w +(stand-alone) 720 2316 w +(Plan) 1350 2316 w +(9) 1592 2316 w +(system;) 1696 2316 w +(at) 2110 2316 w +(the) 2244 2316 w +(other) 2441 2316 w +(extreme,) 2740 2316 w +(our) 3214 2316 w +(setup) 3420 2316 w +(has) 3731 2316 w +(central) 3941 2316 w +(multiprocessor) 4314 2316 w +(CPU) 720 2436 w +(servers) 947 2436 w +(and) 1329 2436 w +(file) 1543 2436 w +(servers) 1728 2436 w +(and) 2110 2436 w +(scores) 2324 2436 w +(of) 2669 2436 w +(terminals) 2800 2436 w +(ranging) 3286 2436 w +(from) 3692 2436 w +(small) 3957 2436 w +(PCs) 4247 2436 w +(to) 4455 2436 w +(high-end) 4586 2436 w +(graphics) 720 2556 w +(workstations.) 1167 2556 w +(It) 1885 2556 w +(is) 1985 2556 w +(such) 2099 2556 w +(large) 2359 2556 w +(installations) 2636 2556 w +(that) 3257 2556 w +(best) 3482 2556 w +(represent) 3723 2556 w +(how) 4220 2556 w +(Plan) 4454 2556 w +(9) 4689 2556 w +(oper\255) 4786 2556 w +(ates.) 720 2676 w +(The) 970 2832 w +(system) 1193 2832 w +(software) 1575 2832 w +(is) 2032 2832 w +(portable) 2154 2832 w +(and) 2601 2832 w +(the) 2823 2832 w +(same) 3020 2832 w +(operating) 3317 2832 w +(system) 3825 2832 w +(runs) 4207 2832 w +(on) 4465 2832 w +(all) 4630 2832 w +(hard\255) 4786 2832 w +(ware.) 720 2952 w +(Except) 1046 2952 w +(for) 1401 2952 w +(performance,) 1573 2952 w +(the) 2254 2952 w +(appearance) 2442 2952 w +(of) 3032 2952 w +(the) 3163 2952 w +(system) 3351 2952 w +(on,) 3724 2952 w +(say,) 3912 2952 w +(an SGI workstation) 4135 2952 w +(is) 720 3072 w +(the) 833 3072 w +(same) 1021 3072 w +(as) 1309 3072 w +(on) 1448 3072 w +(a) 1604 3072 w +(laptop.) 1692 3072 w +(Since) 2097 3072 w +(computing) 2382 3072 w +(and) 2935 3072 w +(file) 3148 3072 w +(services) 3332 3072 w +(are) 3752 3072 w +(centralized,) 3937 3072 w +(and) 4538 3072 w +(termi\255) 4751 3072 w +(nals) 720 3192 w +(have) 953 3192 w +(no) 1214 3192 w +(permanent) 1373 3192 w +(file) 1934 3192 w +(storage,) 2120 3192 w +(all) 2550 3192 w +(terminals) 2698 3192 w +(are) 3186 3192 w +(functionally) 3373 3192 w +(identical.) 3974 3192 w +(In) 4484 3192 w +(this) 4610 3192 w +(way,) 4824 3192 w +(Plan 9 has one of the good properties of) 720 3312 w +(old) 2716 3312 w +(timesharing) 2902 3312 w +(systems,) 3512 3312 w +(where) 3968 3312 w +(a) 4293 3312 w +(user) 4381 3312 w +(could) 4624 3312 w +(sit) 4923 3312 w +(in) 720 3432 w +(front) 853 3432 w +(of) 1132 3432 w +(any) 1271 3432 w +(machine) 1481 3432 w +(and) 1930 3432 w +(see) 2151 3432 w +(the) 2355 3432 w +(same) 2551 3432 w +(system.) 2847 3432 w +(In) 3292 3432 w +(the) 3424 3432 w +(modern) 3620 3432 w +(workstation) 4037 3432 w +(commu\255) 4647 3432 w +(nity, machines tend to be owned by people who customize) 720 3552 w +(them) 3606 3552 w +(by) 3887 3552 w +(storing) 4035 3552 w +(private) 4411 3552 w +(infor\255) 4777 3552 w +(mation) 720 3672 w +(on) 1093 3672 w +(local) 1252 3672 w +(disk.) 1513 3672 w +(We) 1814 3672 w +(reject) 1992 3672 w +(this) 2299 3672 w +(style) 2514 3672 w +(of) 2775 3672 w +(use,) 2909 3672 w +(although) 3146 3672 w +(the) 3612 3672 w +(system) 3802 3672 w +(itself) 4177 3672 w +(can) 4451 3672 w +(be) 4654 3672 w +(used) 4808 3672 w +(this) 720 3792 w +(way.) 936 3792 w +(In) 1221 3792 w +(our) 1349 3792 w +(group,) 1551 3792 w +(we) 1910 3792 w +(have) 2081 3792 w +(a) 2344 3792 w +(laboratory) 2437 3792 w +(with) 2970 3792 w +(many) 3213 3792 w +(public-access) 3513 3792 w +(machines) 4221 3792 w +10 /LucidaSansUnicode20 f +(\024) 4680 3792 w +10 /LucidaSansUnicode00 f +(a) 4780 3792 w +(ter\255) 4873 3792 w +(minal room) 720 3912 w +10 /LucidaSansUnicode20 f +(\024) 1276 3912 w +10 /LucidaSansUnicode00 f +(and a user may sit down at any one of them and work.) 1376 3912 w +(Central) 970 4068 w +(file) 1365 4068 w +(servers) 1562 4068 w +(centralize) 1956 4068 w +(not) 2475 4068 w +(just) 2681 4068 w +(the) 2907 4068 w +(files,) 3108 4068 w +(but) 3388 4068 w +(also) 3596 4068 w +(their) 3838 4068 w +(administration) 4109 4068 w +(and) 4860 4068 w +(maintenance.) 720 4188 w +(In) 1460 4188 w +(fact,) 1609 4188 w +(one) 1879 4188 w +(server) 2115 4188 w +(is) 2469 4188 w +(the) 2606 4188 w +(main) 2818 4188 w +(server,) 3114 4188 w +(holding) 3500 4188 w +(all) 3925 4188 w +(system) 4095 4188 w +(files;) 4492 4188 w +(other) 4783 4188 w +(servers) 720 4308 w +(provide) 1104 4308 w +(extra) 1505 4308 w +(storage) 1791 4308 w +(or) 2190 4308 w +(are) 2328 4308 w +(available) 2516 4308 w +(for) 2975 4308 w +(debugging) 3150 4308 w +(and) 3707 4308 w +(other) 3924 4308 w +(special) 4218 4308 w +(uses,) 4589 4308 w +(but) 4878 4308 w +(the) 720 4428 w +(system) 914 4428 w +(software) 1293 4428 w +(resides) 1747 4428 w +(on) 2133 4428 w +(one) 2295 4428 w +(machine.) 2513 4428 w +(This) 3023 4428 w +(means) 3266 4428 w +(that) 3621 4428 w +(each) 3850 4428 w +(program) 4112 4428 w +(has) 4566 4428 w +(a) 4772 4428 w +(sin\255) 4865 4428 w +(gle) 720 4548 w +(copy) 913 4548 w +(of) 1186 4548 w +(the) 1330 4548 w +(binary) 1531 4548 w +(for) 1879 4548 w +(each) 2064 4548 w +(architecture,) 2334 4548 w +(so) 2990 4548 w +(it) 3149 4548 w +(is) 3262 4548 w +(trivial) 3389 4548 w +(to) 3708 4548 w +(install) 3853 4548 w +(updates) 4192 4548 w +(and) 4626 4548 w +(bug) 4853 4548 w +(fixes.) 720 4668 w +(There) 1069 4668 w +(is) 1398 4668 w +(also) 1529 4668 w +(a) 1776 4668 w +(single) 1882 4668 w +(user) 2222 4668 w +(database;) 2483 4668 w +(there) 3001 4668 w +(is) 3304 4668 w +(no) 3435 4668 w +(need) 3609 4668 w +(to) 3897 4668 w +(synchronize) 4046 4668 w +(distinct) 4681 4668 w +10 /LucidaTypewriter f +(/etc/passwd) 720 4788 w +10 /LucidaSansUnicode00 f +(files.) 1561 4788 w +(On) 1876 4788 w +(the) 2065 4788 w +(other) 2269 4788 w +(hand,) 2575 4788 w +(depending) 2898 4788 w +(on) 3464 4788 w +(a) 3637 4788 w +(single) 3742 4788 w +(central) 4081 4788 w +(server) 4462 4788 w +(does) 4809 4788 w +(limit the size of an installation.) 720 4908 w +(Another) 970 5064 w +(example) 1393 5064 w +(of) 1841 5064 w +(the) 1974 5064 w +(power) 2164 5064 w +(of) 2497 5064 w +(centralized) 2631 5064 w +(file) 3203 5064 w +(service) 3390 5064 w +(is) 3762 5064 w +(the) 3878 5064 w +(way) 4069 5064 w +(Plan) 4289 5064 w +(9) 4526 5064 w +(adminis\255) 4625 5064 w +(ters) 720 5184 w +(network) 950 5184 w +(information.) 1387 5184 w +(On) 2063 5184 w +(the) 2248 5184 w +(central) 2448 5184 w +(server) 2824 5184 w +(there) 3166 5184 w +(is) 3463 5184 w +(a) 3588 5184 w +(directory,) 3688 5184 w +10 /LucidaTypewriter f +(/lib/ndb) 4196 5184 w +10 /LucidaSansUnicode00 f +(,) 4772 5184 w +(that) 4849 5184 w +(contains) 720 5304 w +(all) 1176 5304 w +(the) 1337 5304 w +(information) 1540 5304 w +(necessary) 2155 5304 w +(to) 2678 5304 w +(administer) 2824 5304 w +(the) 3388 5304 w +(local) 3591 5304 w +(Ethernet) 3864 5304 w +(and) 4317 5304 w +(other) 4546 5304 w +(net\255) 4852 5304 w +(works.) 720 5424 w +(All) 1108 5424 w +(the) 1271 5424 w +(machines) 1462 5424 w +(use) 1957 5424 w +(the) 2162 5424 w +(same) 2353 5424 w +(database) 2644 5424 w +(to) 3114 5424 w +(talk) 3247 5424 w +(to) 3461 5424 w +(the) 3594 5424 w +(network;) 3784 5424 w +(there) 4243 5424 w +(is) 4530 5424 w +(no) 4645 5424 w +(need) 4803 5424 w +(to) 720 5544 w +(manage) 863 5544 w +(a) 1291 5544 w +(distributed) 1391 5544 w +(naming) 1968 5544 w +(system) 2377 5544 w +(or) 2763 5544 w +(keep) 2911 5544 w +(parallel) 3190 5544 w +(files) 3593 5544 w +(up) 3841 5544 w +(to) 4012 5544 w +(date.) 4156 5544 w +(To) 4477 5544 w +(install) 4647 5544 w +(a) 4985 5544 w +(new) 720 5664 w +(machine) 959 5664 w +(on) 1411 5664 w +(the) 1578 5664 w +(local) 1777 5664 w +(Ethernet,) 2046 5664 w +(choose) 2527 5664 w +(a) 2912 5664 w +(name) 3010 5664 w +(and) 3319 5664 w +(IP) 3542 5664 w +(address) 3669 5664 w +(and) 4092 5664 w +(add) 4315 5664 w +(these) 4539 5664 w +(to) 4844 5664 w +(a) 4985 5664 w +(single) 720 5784 w +(file) 1055 5784 w +(in) 1252 5784 w +10 /LucidaTypewriter f +(/lib/ndb) 1389 5784 w +10 /LucidaSansUnicode00 f +(;) 1965 5784 w +(all) 2043 5784 w +(the) 2202 5784 w +(machines) 2403 5784 w +(in) 2908 5784 w +(the) 3046 5784 w +(installation) 3248 5784 w +(will) 3831 5784 w +(be) 4042 5784 w +(able) 4208 5784 w +(to) 4458 5784 w +(talk) 4603 5784 w +(to) 4829 5784 w +(it) 4974 5784 w +(immediately.) 720 5904 w +(To) 1418 5904 w +(start) 1584 5904 w +(running,) 1847 5904 w +(plug) 2301 5904 w +(the) 2559 5904 w +(machine) 2756 5904 w +(into) 3206 5904 w +(the) 3437 5904 w +(network,) 3634 5904 w +(turn) 4100 5904 w +(it) 4344 5904 w +(on,) 4452 5904 w +(and) 4649 5904 w +(use) 4871 5904 w +(BOOTP and TFTP to load the kernel.) 720 6024 w +(All else is automatic.) 2518 6024 w +(Finally,) 970 6180 w +(the) 1352 6180 w +(automated) 1547 6180 w +(dump) 2106 6180 w +(file) 2427 6180 w +(system) 2618 6180 w +(frees) 2998 6180 w +(all) 3279 6180 w +(users) 3432 6180 w +(from) 3733 6180 w +(the) 4005 6180 w +(need) 4201 6180 w +(to) 4479 6180 w +(maintain) 4618 6180 w +(their) 720 6300 w +(systems,) 991 6300 w +(while) 1460 6300 w +(providing) 1759 6300 w +(easy) 2267 6300 w +(access) 2527 6300 w +(to) 2887 6300 w +(backup) 3030 6300 w +(files) 3427 6300 w +(without) 3674 6300 w +(tapes,) 4084 6300 w +(special) 4423 6300 w +(com\255) 4802 6300 w +(mands,) 720 6420 w +(or) 1114 6420 w +(the) 1254 6420 w +(involvement) 1447 6420 w +(of) 2074 6420 w +(support) 2210 6420 w +(staff.) 2626 6420 w +(It) 2945 6420 w +(is) 3049 6420 w +(difficult) 3168 6420 w +(to) 3581 6420 w +(overstate) 3718 6420 w +(the) 4203 6420 w +(improvement) 4397 6420 w +(in lifestyle afforded by this service.) 720 6540 w +(Plan) 970 6696 w +(9) 1224 6696 w +(runs) 1340 6696 w +(on) 1609 6696 w +(a) 1786 6696 w +(variety) 1895 6696 w +(of) 2271 6696 w +(hardware) 2423 6696 w +(without) 2927 6696 w +(constraining) 3346 6696 w +(how) 4002 6696 w +(to) 4256 6696 w +(configure) 4408 6696 w +(an) 4923 6696 w +(installation.) 720 6816 w +(In) 1366 6816 w +(our) 1503 6816 w +(laboratory,) 1713 6816 w +(we) 2286 6816 w +(chose) 2465 6816 w +(to) 2792 6816 w +(use) 2936 6816 w +(central) 3151 6816 w +(servers) 3527 6816 w +(because) 3920 6816 w +(they) 4359 6816 w +(amortize) 4611 6816 w +(costs) 720 6936 w +(and) 1005 6936 w +(administration.) 1219 6936 w +(A) 2021 6936 w +(sign) 2124 6936 w +(that) 2362 6936 w +(this) 2587 6936 w +(is) 2801 6936 w +(a) 2916 6936 w +(good) 3006 6936 w +(decision) 3288 6936 w +(is) 3725 6936 w +(that) 3840 6936 w +(our) 4066 6936 w +(cheap) 4265 6936 w +(terminals) 4587 6936 w +(remain) 720 7056 w +(comfortable) 1095 7056 w +(places) 1718 7056 w +(to) 2062 7056 w +(work) 2199 7056 w +(for) 2475 7056 w +(about) 2653 7056 w +(five) 2970 7056 w +(years,) 3183 7056 w +(much) 3509 7056 w +(longer) 3816 7056 w +(than) 4166 7056 w +(workstations) 4420 7056 w +(that) 720 7176 w +(must) 950 7176 w +(provide) 1232 7176 w +(the) 1636 7176 w +(complete) 1830 7176 w +(computing) 2315 7176 w +(environment.) 2874 7176 w +(We) 3588 7176 w +(do,) 3770 7176 w +(however,) 3966 7176 w +(upgrade) 4443 7176 w +(the) 4885 7176 w +(central) 720 7296 w +(machines,) 1087 7296 w +(so) 1614 7296 w +(the) 1762 7296 w +(computation) 1952 7296 w +(available) 2598 7296 w +(from) 3056 7296 w +(even) 3323 7296 w +(old) 3584 7296 w +(Plan) 3772 7296 w +(9) 4008 7296 w +(terminals) 4106 7296 w +(improves) 4594 7296 w +cleartomark +showpage +saveobj restore +%%EndPage: 8 8 +%%Page: 9 9 +/saveobj save def +mark +9 pagesetup +10 /LucidaSansUnicode00 f +(\255 9 \255) 2783 480 w +(with) 720 840 w +(time.) 961 840 w +(The) 1276 840 w +(money) 1493 840 w +(saved) 1853 840 w +(by) 2166 840 w +(avoiding) 2317 840 w +(regular) 2766 840 w +(upgrades) 3149 840 w +(of) 3639 840 w +(terminals) 3774 840 w +(is) 4264 840 w +(instead) 4381 840 w +(spent) 4771 840 w +(on) 720 960 w +(the) 894 960 w +(newest,) 1100 960 w +(fastest) 1522 960 w +(multiprocessor) 1897 960 w +(servers.) 2674 960 w +(We) 3137 960 w +(estimate) 3330 960 w +(this) 3794 960 w +(costs) 4023 960 w +(about) 4324 960 w +(half) 4652 960 w +(the) 4885 960 w +(money) 720 1080 w +(of) 1119 1080 w +(networked) 1292 1080 w +(workstations) 1878 1080 w +(yet) 2573 1080 w +(provides) 2793 1080 w +(general) 3285 1080 w +(access) 3722 1080 w +(to) 4113 1080 w +(more) 4287 1080 w +(powerful) 4614 1080 w +(machines.) 720 1200 w +10 /LucidaSans-Demi f +(C Programming) 720 1440 w +10 /LucidaSansUnicode00 f +(Plan) 970 1596 w +(9) 1208 1596 w +(utilities) 1309 1596 w +(are) 1706 1596 w +(written) 1896 1596 w +(in) 2273 1596 w +(several) 2402 1596 w +(languages.) 2780 1596 w +(Some) 3376 1596 w +(are) 3678 1596 w +(scripts) 3868 1596 w +(for) 4229 1596 w +(the) 4406 1596 w +(shell,) 4599 1596 w +10 /LucidaTypewriter f +(rc) 4896 1596 w +10 /LucidaSansUnicode00 f +([Duff90];) 720 1716 w +(a) 1190 1716 w +(handful) 1280 1716 w +(are) 1685 1716 w +(written) 1872 1716 w +(in) 2246 1716 w +(a) 2372 1716 w +(new) 2462 1716 w +(C-like) 2692 1716 w +(concurrent) 3025 1716 w +(language) 3583 1716 w +(called) 4060 1716 w +(Alef) 4377 1716 w +([Wint95],) 4602 1716 w +(described) 720 1836 w +(below.) 1229 1836 w +(The) 1615 1836 w +(great) 1832 1836 w +(majority,) 2119 1836 w +(though,) 2586 1836 w +(are) 3001 1836 w +(written) 3190 1836 w +(in) 3566 1836 w +(a) 3694 1836 w +(dialect) 3786 1836 w +(of) 4143 1836 w +(ANSI) 4278 1836 w +(C) 4541 1836 w +([ANSIC].) 4647 1836 w +(Of) 720 1956 w +(these,) 874 1956 w +(most) 1207 1956 w +(are) 1488 1956 w +(entirely) 1679 1956 w +(new) 2080 1956 w +(programs,) 2314 1956 w +(but) 2852 1956 w +(some) 3052 1956 w +(originate) 3351 1956 w +(in) 3821 1956 w +(pre-ANSI) 3950 1956 w +(C) 4432 1956 w +(code) 4539 1956 w +(from) 4808 1956 w +(our) 720 2076 w +(research) 922 2076 w +(UNIX) 1373 2076 w +(system) 1646 2076 w +([UNIX85].) 2024 2076 w +(These) 2553 2076 w +(have) 2880 2076 w +(been) 3144 2076 w +(updated) 3420 2076 w +(to) 3858 2076 w +(ANSI) 3995 2076 w +(C) 4260 2076 w +(and) 4368 2076 w +(reworked) 4587 2076 w +(for portability and cleanliness.) 720 2196 w +(The) 970 2352 w +(Plan) 1184 2352 w +(9) 1418 2352 w +(C) 1514 2352 w +(dialect) 1616 2352 w +(has) 1970 2352 w +(some) 2172 2352 w +(minor) 2467 2352 w +(extensions,) 2787 2352 w +(described) 3379 2352 w +(elsewhere) 3886 2352 w +([Pike95],) 4404 2352 w +(and) 4860 2352 w +(a) 720 2472 w +(few) 819 2472 w +(major) 1032 2472 w +(restrictions.) 1355 2472 w +(The) 2008 2472 w +(most) 2232 2472 w +(important) 2517 2472 w +(restriction) 3038 2472 w +(is) 3576 2472 w +(that) 3699 2472 w +(the) 3933 2472 w +(compiler) 4131 2472 w +(demands) 4597 2472 w +(that) 720 2592 w +(all) 960 2592 w +(function) 1122 2592 w +(definitions) 1572 2592 w +(have) 2137 2592 w +(ANSI) 2411 2592 w +(prototypes) 2686 2592 w +(and) 3257 2592 w +(all) 3486 2592 w +(function) 3648 2592 w +(calls) 4098 2592 w +(appear) 4362 2592 w +(in) 4744 2592 w +(the) 4885 2592 w +(scope) 720 2712 w +(of) 1052 2712 w +(a) 1200 2712 w +(prototyped) 1305 2712 w +(declaration) 1889 2712 w +(of) 2478 2712 w +(the) 2626 2712 w +(function.) 2831 2712 w +(As) 3345 2712 w +(a) 3514 2712 w +(stylistic) 3618 2712 w +(rule,) 4033 2712 w +(the) 4302 2712 w +(prototyped) 4506 2712 w +(declaration is placed in) 720 2832 w +(a) 1876 2832 w +(header) 1964 2832 w +(file) 2330 2832 w +(included) 2514 2832 w +(by) 2962 2832 w +(all) 3110 2832 w +(files) 3256 2832 w +(that) 3491 2832 w +(call) 3715 2832 w +(the) 3912 2832 w +(function.) 4100 2832 w +(Each) 4598 2832 w +(sys\255) 4853 2832 w +(tem) 720 2952 w +(library) 959 2952 w +(has) 1322 2952 w +(an) 1543 2952 w +(associated) 1713 2952 w +(header) 2275 2952 w +(file,) 2661 2952 w +(declaring) 2897 2952 w +(all) 3398 2952 w +(functions) 3564 2952 w +(in) 4069 2952 w +(that) 4213 2952 w +(library.) 4457 2952 w +(For) 4884 2952 w +(example,) 720 3072 w +(the) 1226 3072 w +(standard) 1442 3072 w +(Plan) 1931 3072 w +(9) 2194 3072 w +(library) 2319 3072 w +(is) 2691 3072 w +(called) 2833 3072 w +10 /LucidaTypewriter f +(libc) 3178 3072 w +10 /LucidaSansUnicode00 f +(,) 3466 3072 w +(so) 3560 3072 w +(all) 3734 3072 w +(C) 3909 3072 w +(source) 4040 3072 w +(files) 4424 3072 w +(include) 4688 3072 w +10 /LucidaTypewriter f +() 720 3192 w +10 /LucidaSansUnicode00 f +(.) 1296 3192 w +(These) 1400 3192 w +(rules) 1727 3192 w +(guarantee) 2005 3192 w +(that) 2530 3192 w +(all) 2760 3192 w +(functions) 2912 3192 w +(are) 3403 3192 w +(called) 3594 3192 w +(with) 3916 3192 w +(arguments) 4160 3192 w +(having) 4718 3192 w +(the expected types ) 720 3312 w +10 /LucidaSansUnicode20 f +(\024) 1673 3312 w +10 /LucidaSansUnicode00 f +(something that was not true with pre-ANSI C programs.) 1805 3312 w +(Another) 970 3468 w +(restriction) 1391 3468 w +(is) 1919 3468 w +(that) 2032 3468 w +(the) 2256 3468 w +(C) 2444 3468 w +(compilers) 2547 3468 w +(accept) 3055 3468 w +(only) 3402 3468 w +(a) 3640 3468 w +(subset) 3729 3468 w +(of) 4083 3468 w +(the) 4215 3468 w +(preprocessor) 4404 3468 w +(directives) 720 3588 w +(required) 1220 3588 w +(by) 1666 3588 w +(ANSI.) 1816 3588 w +(The) 2141 3588 w +(main) 2357 3588 w +(omission) 2631 3588 w +(is) 3102 3588 w +10 /LucidaTypewriter f +(#if) 3216 3588 w +10 /LucidaSansUnicode00 f +(,) 3432 3588 w +(since) 3498 3588 w +(we) 3781 3588 w +(believe) 3948 3588 w +(it) 4323 3588 w +(is) 4423 3588 w +(never) 4537 3588 w +(nec\255) 4838 3588 w +(essary) 720 3708 w +(and) 1089 3708 w +(often) 1333 3708 w +(abused.) 1650 3708 w +(Also,) 2128 3708 w +(its) 2434 3708 w +(effect) 2615 3708 w +(is) 2953 3708 w +(better) 3097 3708 w +(achieved) 3451 3708 w +(by) 3939 3708 w +(other) 4118 3708 w +(means.) 4439 3708 w +(For) 4884 3708 w +(instance,) 720 3828 w +(an) 1188 3828 w +10 /LucidaTypewriter f +(#if) 1338 3828 w +10 /LucidaSansUnicode00 f +(used) 1587 3828 w +(to) 1852 3828 w +(toggle) 1983 3828 w +(a feature at compile time can be written as a regular) 2323 3828 w +10 /LucidaTypewriter f +(if) 4896 3828 w +10 /LucidaSansUnicode00 f +(statement,) 720 3948 w +(relying) 1278 3948 w +(on) 1652 3948 w +(compile-time) 1818 3948 w +(constant) 2516 3948 w +(folding) 2975 3948 w +(and) 3361 3948 w +(dead) 3584 3948 w +(code) 3864 3948 w +(elimination) 4138 3948 w +(to) 4723 3948 w +(dis\255) 4864 3948 w +(card object code.) 720 4068 w +(Conditional) 970 4224 w +(compilation,) 1565 4224 w +(even) 2205 4224 w +(with) 2469 4224 w +10 /LucidaTypewriter f +(#ifdef) 2712 4224 w +10 /LucidaSansUnicode00 f +(,) 3144 4224 w +(is) 3214 4224 w +(used) 3332 4224 w +(sparingly) 3602 4224 w +(in) 4084 4224 w +(Plan) 4213 4224 w +(9.) 4452 4224 w +(The) 4617 4224 w +(only) 4836 4224 w +(architecture-dependent) 720 4344 w +10 /LucidaTypewriter f +(#ifdefs) 1913 4344 w +10 /LucidaSansUnicode00 f +(in) 2456 4344 w +(the) 2586 4344 w +(system) 2780 4344 w +(are) 3159 4344 w +(in) 3350 4344 w +(low-level) 3480 4344 w +(routines) 3965 4344 w +(in) 4402 4344 w +(the) 4531 4344 w +(graph\255) 4724 4344 w +(ics) 720 4464 w +(library.) 900 4464 w +(Instead,) 1323 4464 w +(we) 1757 4464 w +(avoid) 1939 4464 w +(such) 2248 4464 w +(dependencies) 2523 4464 w +(or,) 3240 4464 w +(when) 3423 4464 w +(necessary,) 3729 4464 w +(isolate) 4285 4464 w +(them) 4652 4464 w +(in) 4949 4464 w +(separate) 720 4584 w +(source) 1171 4584 w +(files) 1530 4584 w +(or) 1768 4584 w +(libraries.) 1906 4584 w +(Besides) 2400 4584 w +(making) 2800 4584 w +(code) 3195 4584 w +(hard) 3462 4584 w +(to) 3719 4584 w +(read,) 3853 4584 w +10 /LucidaTypewriter f +(#ifdefs) 4136 4584 w +10 /LucidaSansUnicode00 f +(make) 4676 4584 w +(it) 4974 4584 w +(impossible) 720 4704 w +(to) 1278 4704 w +(know) 1409 4704 w +(what) 1700 4704 w +(source) 1964 4704 w +(is) 2319 4704 w +(compiled) 2432 4704 w +(into) 2910 4704 w +(the) 3133 4704 w +(binary) 3322 4704 w +(or) 3658 4704 w +(whether) 3794 4704 w +(source) 4219 4704 w +(protected) 4575 4704 w +(by them will compile or work properly.) 720 4824 w +(They make it harder to maintain software.) 2662 4824 w +(The) 970 4980 w +(standard) 1214 4980 w +(Plan) 1704 4980 w +(9) 1968 4980 w +(library) 2094 4980 w +(overlaps) 2467 4980 w +(much) 2938 4980 w +(of) 3269 4980 w +(ANSI) 3430 4980 w +(C) 3719 4980 w +(and) 3851 4980 w +(POSIX) 4094 4980 w +([POSIX],) 4437 4980 w +(but) 4878 4980 w +(diverges) 720 5100 w +(when) 1168 5100 w +(appropriate) 1463 5100 w +(to) 2065 5100 w +(Plan) 2201 5100 w +(9) 2440 5100 w +10 /LucidaSansUnicode20 f +(\031) 2503 5100 w +10 /LucidaSansUnicode00 f +(s) 2535 5100 w +(goals) 2624 5100 w +(or) 2920 5100 w +(implementation.) 3060 5100 w +(When) 3924 5100 w +(the) 4228 5100 w +(semantics) 4420 5100 w +(of) 4942 5100 w +(a) 720 5220 w +(function) 818 5220 w +(change,) 1262 5220 w +(we) 1686 5220 w +(also) 1863 5220 w +(change) 2103 5220 w +(the) 2495 5220 w +(name.) 2694 5220 w +(For) 3068 5220 w +(instance,) 3268 5220 w +(instead) 3747 5220 w +(of) 4144 5220 w +(UNIX) 4286 5220 w +10 /LucidaSansUnicode20 f +(\031) 4521 5220 w +10 /LucidaSansUnicode00 f +(s) 4553 5220 w +10 /LucidaTypewriter f +(creat) 4648 5220 w +10 /LucidaSansUnicode00 f +(,) 5008 5220 w +(Plan) 720 5340 w +(9) 959 5340 w +(has) 1060 5340 w +(a) 1266 5340 w +10 /LucidaTypewriter f +(create) 1359 5340 w +10 /LucidaSansUnicode00 f +(function) 1828 5340 w +(that) 2266 5340 w +(takes) 2494 5340 w +(three) 2788 5340 w +(arguments,) 3077 5340 w +(the) 3665 5340 w +(original) 3857 5340 w +(two) 4262 5340 w +(plus) 4474 5340 w +(a) 4716 5340 w +(third) 4808 5340 w +(that,) 720 5460 w +(like) 981 5460 w +(the) 1191 5460 w +(second) 1384 5460 w +(argument) 1766 5460 w +(of) 2272 5460 w +10 /LucidaTypewriter f +(open) 2408 5460 w +10 /LucidaSansUnicode00 f +(,) 2696 5460 w +(defines) 2766 5460 w +(whether) 3158 5460 w +(the) 3587 5460 w +(returned) 3781 5460 w +(file) 4238 5460 w +(descriptor) 4428 5460 w +(is) 4960 5460 w +(to) 720 5580 w +(be) 853 5580 w +(opened) 1007 5580 w +(for) 1403 5580 w +(reading,) 1577 5580 w +(writing,) 2012 5580 w +(or) 2416 5580 w +(both.) 2552 5580 w +(This) 2873 5580 w +(design) 3112 5580 w +(was) 3469 5580 w +(forced) 3686 5580 w +(by) 4029 5580 w +(the) 4178 5580 w +(way) 4367 5580 w +(9P) 4585 5580 w +(imple\255) 4737 5580 w +(ments) 720 5700 w +(creation,) 1056 5700 w +(but) 1517 5700 w +(it) 1716 5700 w +(also) 1819 5700 w +(simplifies) 2052 5700 w +(the) 2556 5700 w +(common) 2748 5700 w +(use) 3206 5700 w +(of) 3412 5700 w +10 /LucidaTypewriter f +(create) 3548 5700 w +10 /LucidaSansUnicode00 f +(to) 4018 5700 w +(initialize) 4154 5700 w +(a) 4604 5700 w +(tempo\255) 4697 5700 w +(rary file.) 720 5820 w +(Another departure from ANSI C is that) 970 5976 w +(Plan) 2855 5976 w +(9) 3089 5976 w +(uses) 3185 5976 w +(a) 3438 5976 w +(16-bit) 3526 5976 w +(character) 3872 5976 w +(set) 4354 5976 w +(called) 4531 5976 w +(Uni\255) 4847 5976 w +(code) 720 6096 w +([ISO10646,) 992 6096 w +(Unicode].) 1574 6096 w +(Although) 2103 6096 w +(we) 2588 6096 w +(stopped) 2761 6096 w +(short) 3195 6096 w +(of) 3487 6096 w +(full) 3625 6096 w +(internationalization,) 3822 6096 w +(Plan) 4839 6096 w +(9) 720 6216 w +(treats) 819 6216 w +(the) 1133 6216 w +(representation) 1325 6216 w +(of) 2069 6216 w +(all) 2204 6216 w +(major) 2354 6216 w +(languages) 2671 6216 w +(uniformly) 3202 6216 w +(throughout) 3705 6216 w +(all) 4289 6216 w +(its) 4439 6216 w +(software.) 4593 6216 w +(To) 720 6336 w +(simplify) 891 6336 w +(the) 1321 6336 w +(exchange) 1523 6336 w +(of) 2034 6336 w +(text) 2178 6336 w +(between) 2415 6336 w +(programs,) 2868 6336 w +(the) 3413 6336 w +(characters) 3614 6336 w +(are) 4160 6336 w +(packed) 4358 6336 w +(into) 4750 6336 w +(a) 4985 6336 w +(byte) 720 6456 w +(stream) 997 6456 w +(by) 1399 6456 w +(an) 1583 6456 w +(encoding) 1769 6456 w +(we) 2284 6456 w +(designed,) 2486 6456 w +(called) 3030 6456 w +(UTF-8,) 3383 6456 w +(which) 3792 6456 w +(is) 4143 6456 w +(now) 4293 6456 w +(becoming) 4563 6456 w +(accepted) 720 6576 w +(as) 1203 6576 w +(a) 1360 6576 w +(standard) 1466 6576 w +([FSSUTF].) 1943 6576 w +(It) 2471 6576 w +(has) 2587 6576 w +(several) 2805 6576 w +(attractive) 3195 6576 w +(properties,) 3695 6576 w +(including) 4275 6576 w +(byte-) 4774 6576 w +(order independence, backwards compatibility with ASCII, and ease of implementation.) 720 6696 w +(There) 970 6852 w +(are) 1299 6852 w +(many) 1502 6852 w +(problems) 1815 6852 w +(in) 2323 6852 w +(adapting) 2465 6852 w +(existing) 2942 6852 w +(software) 3380 6852 w +(to) 3846 6852 w +(a) 3995 6852 w +(large) 4101 6852 w +(character) 4395 6852 w +(set) 4896 6852 w +(with) 720 6972 w +(an) 973 6972 w +(encoding) 1138 6972 w +(that) 1632 6972 w +(represents) 1870 6972 w +(characters) 2431 6972 w +(with) 2978 6972 w +(a) 3230 6972 w +(variable) 3332 6972 w +(number) 3759 6972 w +(of) 4183 6972 w +(bytes.) 4328 6972 w +(ANSI) 4698 6972 w +(C) 4971 6972 w +(addresses) 720 7092 w +(some) 1241 7092 w +(of) 1536 7092 w +(the) 1668 7092 w +(issues) 1857 7092 w +(but) 2191 7092 w +(falls) 2387 7092 w +(short) 2622 7092 w +(of) 2908 7092 w +(solving) 3040 7092 w +(them) 3420 7092 w +(all.) 3702 7092 w +(It) 3913 7092 w +(does) 4013 7092 w +(not) 4278 7092 w +(pick) 4472 7092 w +(a) 4708 7092 w +(char\255) 4798 7092 w +(acter) 720 7212 w +(set) 1041 7212 w +(encoding) 1266 7212 w +(and) 1793 7212 w +(does) 2054 7212 w +(not) 2366 7212 w +(define) 2607 7212 w +(all) 2991 7212 w +(the) 3185 7212 w +(necessary) 3421 7212 w +(I/O) 3977 7212 w +(library) 4218 7212 w +(routines.) 4609 7212 w +cleartomark +showpage +saveobj restore +%%EndPage: 9 9 +%%Page: 10 10 +/saveobj save def +mark +10 pagesetup +10 /LucidaSansUnicode00 f +(\255 10 \255) 2752 480 w +(Furthermore,) 720 840 w +(the) 1403 840 w +(functions) 1605 840 w +(it) 2104 840 w +10 /LucidaSans-Italic f +(does) 2217 840 w +10 /LucidaSansUnicode00 f +(define) 2484 840 w +(have) 2834 840 w +(engineering) 3106 840 w +(problems.) 3730 840 w +(Since) 4299 840 w +(the) 4599 840 w +(stan\255) 4802 840 w +(dard) 720 960 w +(left) 982 960 w +(too) 1181 960 w +(many) 1380 960 w +(problems) 1682 960 w +(unsolved,) 2179 960 w +(we) 2687 960 w +(decided) 2860 960 w +(to) 3281 960 w +(build) 3419 960 w +(our) 3705 960 w +(own) 3908 960 w +(interface.) 4147 960 w +(A) 4674 960 w +(sepa\255) 4782 960 w +(rate paper has the details [Pike93].) 720 1080 w +(A) 970 1236 w +(small) 1082 1236 w +(class) 1382 1236 w +(of) 1663 1236 w +(Plan) 1805 1236 w +(9) 2050 1236 w +(programs) 2157 1236 w +(do) 2668 1236 w +(not) 2836 1236 w +(follow) 3040 1236 w +(the) 3378 1236 w +(conventions) 3577 1236 w +(discussed) 4205 1236 w +(in) 4726 1236 w +(this) 4861 1236 w +(section.) 720 1356 w +(These) 1180 1356 w +(are) 1516 1356 w +(programs) 1716 1356 w +(imported) 2231 1356 w +(from) 2722 1356 w +(and) 3002 1356 w +(maintained) 3230 1356 w +(by) 3819 1356 w +(the) 3982 1356 w +(UNIX) 4185 1356 w +(community;) 4468 1356 w +10 /LucidaTypewriter f +(tex) 720 1476 w +10 /LucidaSansUnicode00 f +(is) 984 1476 w +(a) 1112 1476 w +(representative) 1216 1476 w +(example.) 1957 1476 w +(To) 2483 1476 w +(avoid) 2656 1476 w +(reconverting) 2965 1476 w +(such) 3624 1476 w +(programs) 3899 1476 w +(every) 4415 1476 w +(time) 4721 1476 w +(a) 4985 1476 w +(new) 720 1596 w +(version) 958 1596 w +(is) 1353 1596 w +(released,) 1476 1596 w +(we) 1958 1596 w +(built) 2134 1596 w +(a) 2397 1596 w +(porting) 2495 1596 w +(environment,) 2892 1596 w +(called) 3577 1596 w +(the) 3902 1596 w +(ANSI) 4099 1596 w +(C/POSIX) 4367 1596 w +(Envi\255) 4810 1596 w +(ronment,) 720 1716 w +(or) 1222 1716 w +(APE) 1382 1716 w +([Tric95].) 1618 1716 w +(APE) 2116 1716 w +(comprises) 2352 1716 w +(separate) 2906 1716 w +(include) 3378 1716 w +(files,) 3788 1716 w +(libraries,) 4080 1716 w +(and) 4564 1716 w +(com\255) 4802 1716 w +(mands,) 720 1836 w +(conforming) 1111 1836 w +(as) 1705 1836 w +(much) 1846 1836 w +(as) 2149 1836 w +(possible) 2290 1836 w +(to) 2727 1836 w +(the) 2859 1836 w +(strict) 3048 1836 w +(ANSI) 3328 1836 w +(C) 3588 1836 w +(and) 3691 1836 w +(base-level) 3905 1836 w +(POSIX) 4444 1836 w +(speci\255) 4757 1836 w +(fications.) 720 1956 w +(To) 1234 1956 w +(port) 1397 1956 w +(network-based) 1638 1956 w +(software) 2415 1956 w +(such) 2869 1956 w +(as) 3134 1956 w +(X) 3279 1956 w +(Windows,) 3381 1956 w +(it) 3881 1956 w +(was) 3986 1956 w +(necessary) 4208 1956 w +(to) 4722 1956 w +(add) 4859 1956 w +(some extensions to those specifications, such as the BSD networking functions.) 720 2076 w +10 /LucidaSans-Demi f +(Portability and Compilation) 720 2316 w +10 /LucidaSansUnicode00 f +(Plan) 970 2472 w +(9) 1207 2472 w +(is) 1307 2472 w +(portable) 1424 2472 w +(across) 1866 2472 w +(a) 2213 2472 w +(variety) 2305 2472 w +(of) 2664 2472 w +(processor) 2799 2472 w +(architectures.) 3312 2472 w +(Within) 4042 2472 w +(a) 4384 2472 w +(single) 4476 2472 w +(com\255) 4802 2472 w +(puting) 720 2592 w +(session,) 1079 2592 w +(it) 1516 2592 w +(is) 1626 2592 w +(common) 1750 2592 w +(to) 2215 2592 w +(use) 2357 2592 w +(several) 2569 2592 w +(architectures:) 2952 2592 w +(perhaps) 3656 2592 w +(the) 4090 2592 w +(window) 4288 2592 w +(system) 4700 2592 w +(running) 720 2712 w +(on) 1138 2712 w +(an) 1299 2712 w +(Intel) 1454 2712 w +(processor) 1705 2712 w +(connected) 2219 2712 w +(to) 2756 2712 w +(a) 2892 2712 w +(MIPS-based) 2985 2712 w +(CPU) 3593 2712 w +(server) 3824 2712 w +(with) 4160 2712 w +(files) 4404 2712 w +(resident) 4645 2712 w +(on) 720 2832 w +(a) 876 2832 w +(SPARC) 964 2832 w +(system.) 1307 2832 w +(For this heterogeneity to be transparent, there must be conventions) 1743 2832 w +(about) 720 2952 w +(data) 1039 2952 w +(interchange) 1290 2952 w +(between) 1905 2952 w +(programs;) 2354 2952 w +(for) 2895 2952 w +(software) 3076 2952 w +(maintenance) 3533 2952 w +(to) 4193 2952 w +(be) 4333 2952 w +(straightfor\255) 4494 2952 w +(ward, there must be conventions about cross-architecture compilation.) 720 3072 w +(To) 970 3228 w +(avoid) 1144 3228 w +(byte) 1454 3228 w +(order) 1712 3228 w +(problems,) 2024 3228 w +(data) 2563 3228 w +(is) 2823 3228 w +(communicated) 2953 3228 w +(between) 3716 3228 w +(programs) 4174 3228 w +(as) 4692 3228 w +(text) 4849 3228 w +(whenever) 720 3348 w +(practical.) 1241 3348 w +(Sometimes,) 1775 3348 w +(though,) 2396 3348 w +(the) 2833 3348 w +(amount) 3047 3348 w +(of) 3476 3348 w +(data) 3633 3348 w +(is) 3902 3348 w +(high) 4040 3348 w +(enough) 4313 3348 w +(that) 4736 3348 w +(a) 4985 3348 w +(binary) 720 3468 w +(format) 1071 3468 w +(is) 1444 3468 w +(necessary;) 1574 3468 w +(such) 2131 3468 w +(data) 2407 3468 w +(is) 2667 3468 w +(communicated) 2797 3468 w +(as) 3560 3468 w +(a) 3716 3468 w +(byte) 3821 3468 w +(stream) 4079 3468 w +(with) 4462 3468 w +(a) 4717 3468 w +(pre-) 4822 3468 w +(defined) 720 3588 w +(encoding) 1134 3588 w +(for) 1628 3588 w +(multi-byte) 1815 3588 w +(values.) 2379 3588 w +(In) 2796 3588 w +(the) 2934 3588 w +(rare) 3136 3588 w +(cases) 3376 3588 w +(where) 3687 3588 w +(a) 4026 3588 w +(format) 4128 3588 w +(is) 4499 3588 w +(complex) 4626 3588 w +(enough to be defined by a data structure, the structure) 720 3708 w +(is) 3432 3708 w +(never) 3545 3708 w +(communicated) 3845 3708 w +(as) 4591 3708 w +(a) 4730 3708 w +(unit;) 4818 3708 w +(instead,) 720 3828 w +(it) 1140 3828 w +(is) 1240 3828 w +(decomposed) 1354 3828 w +(into) 2006 3828 w +(individual) 2229 3828 w +(fields,) 2736 3828 w +(encoded) 3067 3828 w +(as) 3513 3828 w +(an) 3653 3828 w +(ordered) 3804 3828 w +(byte) 4219 3828 w +(stream,) 4461 3828 w +(and) 4860 3828 w +(then) 720 3948 w +(reassembled) 979 3948 w +(by) 1635 3948 w +(the) 1792 3948 w +(recipient.) 1989 3948 w +(These) 2520 3948 w +(conventions) 2851 3948 w +(affect) 3478 3948 w +(data) 3794 3948 w +(ranging) 4047 3948 w +(from) 4463 3948 w +(kernel) 4738 3948 w +(or) 720 4068 w +(application) 867 4068 w +(program) 1446 4068 w +(state) 1907 4068 w +(information) 2188 4068 w +(to) 2800 4068 w +(object) 2943 4068 w +(file) 3286 4068 w +(intermediates) 3482 4068 w +(generated) 4192 4068 w +(by) 4725 4068 w +(the) 4885 4068 w +(compiler.) 720 4188 w +(Programs,) 970 4344 w +(including) 1494 4344 w +(the) 1976 4344 w +(kernel,) 2164 4344 w +(often) 2531 4344 w +(present) 2817 4344 w +(their) 3216 4344 w +(data) 3474 4344 w +(through) 3717 4344 w +(a) 4137 4344 w +(file) 4225 4344 w +(system) 4409 4344 w +(inter\255) 4782 4344 w +(face,) 720 4464 w +(an) 986 4464 w +(access) 1138 4464 w +(mechanism) 1488 4464 w +(that) 2075 4464 w +(is) 2301 4464 w +(inherently) 2416 4464 w +(portable.) 2937 4464 w +(For) 3441 4464 w +(example,) 3632 4464 w +(the) 4112 4464 w +(system) 4302 4464 w +(clock) 4676 4464 w +(is) 4960 4464 w +(represented) 720 4584 w +(by) 1350 4584 w +(a) 1513 4584 w +(decimal) 1616 4584 w +(number) 2040 4584 w +(in) 2466 4584 w +(the) 2606 4584 w +(file) 2810 4584 w +10 /LucidaTypewriter f +(/dev/time) 3010 4584 w +10 /LucidaSansUnicode00 f +(;) 3658 4584 w +(the) 3739 4584 w +10 /LucidaTypewriter f +(time) 3943 4584 w +10 /LucidaSansUnicode00 f +(library) 4280 4584 w +(function) 4639 4584 w +(\(there) 720 4704 w +(is) 1040 4704 w +(no) 1155 4704 w +10 /LucidaTypewriter f +(time) 1313 4704 w +10 /LucidaSansUnicode00 f +(system) 1636 4704 w +(call\)) 2011 4704 w +(reads) 2243 4704 w +(the) 2544 4704 w +(file) 2734 4704 w +(and) 2919 4704 w +(converts) 3133 4704 w +(it) 3578 4704 w +(to) 3678 4704 w +(binary.) 3810 4704 w +(Similarly,) 4210 4704 w +(instead) 4687 4704 w +(of) 720 4824 w +(encoding) 862 4824 w +(the) 1352 4824 w +(state) 1551 4824 w +(of) 1831 4824 w +(an) 1974 4824 w +(application) 2136 4824 w +(process) 2715 4824 w +(in) 3134 4824 w +(a) 3270 4824 w +(series) 3370 4824 w +(of) 3699 4824 w +(flags) 3842 4824 w +(and) 4121 4824 w +(bits) 4346 4824 w +(in) 4571 4824 w +(private) 4707 4824 w +(memory,) 720 4944 w +(the) 1187 4944 w +(kernel) 1381 4944 w +(presents) 1722 4944 w +(a) 2178 4944 w +(text) 2272 4944 w +(string) 2501 4944 w +(in) 2821 4944 w +(the) 2950 4944 w +(file) 3143 4944 w +(named) 3332 4944 w +10 /LucidaTypewriter f +(status) 3699 4944 w +10 /LucidaSansUnicode00 f +(in) 4169 4944 w +(the) 4298 4944 w +10 /LucidaTypewriter f +(/proc) 4491 4944 w +10 /LucidaSansUnicode00 f +(file) 4889 4944 w +(system) 720 5064 w +(associated) 1106 5064 w +(with) 1661 5064 w +(each) 1912 5064 w +(process.) 2182 5064 w +(The) 2666 5064 w +(Plan) 2893 5064 w +(9) 3140 5064 w +10 /LucidaTypewriter f +(ps) 3249 5064 w +10 /LucidaSansUnicode00 f +(command) 3439 5064 w +(is) 3964 5064 w +(trivial:) 4091 5064 w +(it) 4442 5064 w +(prints) 4555 5064 w +(the) 4885 5064 w +(contents of the desired status files after some minor reformatting; moreover, after) 720 5184 w +9 /LucidaTypewriter f +(import) 1008 5354 w +(helix) 1463 5354 w +(/proc) 1853 5354 w +10 /LucidaSansUnicode00 f +(a local) 720 5534 w +10 /LucidaTypewriter f +(ps) 1064 5534 w +10 /LucidaSansUnicode00 f +(command reports on the status of Helix) 1240 5534 w +10 /LucidaSansUnicode20 f +(\031) 3178 5534 w +10 /LucidaSansUnicode00 f +(s processes.) 3210 5534 w +(Each) 970 5690 w +(supported) 1245 5690 w +(architecture) 1795 5690 w +(has) 2426 5690 w +(its) 2647 5690 w +(own) 2818 5690 w +(compilers) 3072 5690 w +(and) 3600 5690 w +(loader.) 3834 5690 w +(The) 4257 5690 w +(C) 4492 5690 w +(and) 4615 5690 w +(Alef) 4849 5690 w +(compilers) 720 5810 w +(produce) 1230 5810 w +(intermediate) 1663 5810 w +(files) 2312 5810 w +(that) 2549 5810 w +(are) 2775 5810 w +(portably) 2962 5810 w +(encoded;) 3398 5810 w +(the) 3877 5810 w +(contents) 4067 5810 w +(are) 4519 5810 w +(unique) 4706 5810 w +(to) 720 5930 w +(the) 856 5930 w +(target) 1049 5930 w +(architecture) 1375 5930 w +(but) 1991 5930 w +(the) 2191 5930 w +(format) 2384 5930 w +(of) 2746 5930 w +(the) 2882 5930 w +(file) 3075 5930 w +(is) 3264 5930 w +(independent) 3382 5930 w +(of) 4029 5930 w +(compiling) 4166 5930 w +(proces\255) 4684 5930 w +(sor) 720 6050 w +(type.) 913 6050 w +(When) 1225 6050 w +(a) 1531 6050 w +(compiler) 1626 6050 w +(for) 2089 6050 w +(a) 2268 6050 w +(given) 2363 6050 w +(architecture) 2663 6050 w +(is) 3280 6050 w +(compiled) 3399 6050 w +(on) 3883 6050 w +(another) 4045 6050 w +(type) 4458 6050 w +(of) 4705 6050 w +(pro\255) 4842 6050 w +(cessor) 720 6170 w +(and) 1080 6170 w +(then) 1309 6170 w +(used) 1575 6170 w +(to) 1856 6170 w +(compile) 2003 6170 w +(a) 2434 6170 w +(program) 2538 6170 w +(there,) 3003 6170 w +(the) 3336 6170 w +(intermediate) 3540 6170 w +(produced) 4203 6170 w +(on) 4712 6170 w +(the) 4885 6170 w +(new) 720 6290 w +(architecture) 975 6290 w +(is) 1613 6290 w +(identical) 1753 6290 w +(to) 2223 6290 w +(the) 2380 6290 w +(intermediate) 2594 6290 w +(produced) 3267 6290 w +(on) 3786 6290 w +(the) 3968 6290 w +(native) 4182 6290 w +(processor.) 4532 6290 w +(From the compiler) 720 6410 w +10 /LucidaSansUnicode20 f +(\031) 1611 6410 w +10 /LucidaSansUnicode00 f +(s point of view, every compilation is a cross-compilation.) 1643 6410 w +(Although) 970 6566 w +(each) 1467 6566 w +(architecture) 1744 6566 w +10 /LucidaSansUnicode20 f +(\031) 2322 6566 w +10 /LucidaSansUnicode00 f +(s) 2354 6566 w +(loader) 2458 6566 w +(accepts) 2816 6566 w +(only) 3233 6566 w +(intermediate) 3490 6566 w +(files) 4157 6566 w +(produced) 4412 6566 w +(by) 4925 6566 w +(compilers) 720 6686 w +(for) 1230 6686 w +(that) 1405 6686 w +(architecture,) 1632 6686 w +(such) 2278 6686 w +(files) 2540 6686 w +(could) 2778 6686 w +(have) 3080 6686 w +(been) 3341 6686 w +(generated) 3613 6686 w +(by) 4136 6686 w +(a) 4286 6686 w +(compiler) 4376 6686 w +(exe\255) 4834 6686 w +(cuting) 720 6806 w +(on) 1057 6806 w +(any) 1214 6806 w +(type) 1417 6806 w +(of) 1659 6806 w +(processor.) 1791 6806 w +(For) 2365 6806 w +(instance,) 2555 6806 w +(it) 3024 6806 w +(is) 3124 6806 w +(possible) 3239 6806 w +(to) 3677 6806 w +(run) 3810 6806 w +(the) 4010 6806 w +(MIPS) 4200 6806 w +(compiler) 4459 6806 w +(on) 4917 6806 w +(a 486, then use the MIPS loader on a SPARC to produce a MIPS executable.) 720 6926 w +(Since) 970 7082 w +(Plan) 1261 7082 w +(9) 1501 7082 w +(runs) 1603 7082 w +(on) 1858 7082 w +(a) 2020 7082 w +(variety) 2114 7082 w +(of) 2475 7082 w +(architectures,) 2612 7082 w +(even) 3312 7082 w +(in) 3577 7082 w +(a) 3707 7082 w +(single) 3801 7082 w +(installation,) 4129 7082 w +(distin\255) 4736 7082 w +(guishing) 720 7202 w +(the) 1255 7202 w +(compilers) 1526 7202 w +(and) 2116 7202 w +(intermediate) 2411 7202 w +(names) 3140 7202 w +(simplifies) 3572 7202 w +(multi-architecture) 4154 7202 w +cleartomark +showpage +saveobj restore +%%EndPage: 10 10 +%%Page: 11 11 +/saveobj save def +mark +11 pagesetup +10 /LucidaSansUnicode00 f +(\255 11 \255) 2752 480 w +(development) 720 840 w +(from) 1383 840 w +(a) 1651 840 w +(single) 1742 840 w +(source) 2067 840 w +(tree.) 2425 840 w +(The) 2715 840 w +(compilers) 2932 840 w +(and) 3442 840 w +(the) 3658 840 w +(loader) 3849 840 w +(for) 4190 840 w +(each) 4365 840 w +(architec\255) 4625 840 w +(ture) 720 960 w +(are) 954 960 w +(uniquely) 1144 960 w +(named;) 1597 960 w +(there) 1996 960 w +(is) 2286 960 w +(no) 2404 960 w +10 /LucidaTypewriter f +(cc) 2564 960 w +10 /LucidaSansUnicode00 f +(command.) 2745 960 w +(The) 3324 960 w +(names) 3542 960 w +(are) 3896 960 w +(derived) 4085 960 w +(by) 4482 960 w +(concate\255) 4634 960 w +(nating) 720 1080 w +(a) 1071 1080 w +(code) 1170 1080 w +(letter) 1445 1080 w +(associated) 1745 1080 w +(with) 2298 1080 w +(the) 2547 1080 w +(target) 2746 1080 w +(architecture) 3078 1080 w +(with) 3700 1080 w +(the) 3949 1080 w +(name) 4148 1080 w +(of) 4459 1080 w +(the) 4602 1080 w +(com\255) 4802 1080 w +(piler) 720 1200 w +(or) 971 1200 w +(loader.) 1106 1200 w +(For) 1508 1200 w +(example,) 1697 1200 w +(the) 2175 1200 w +(letter) 2363 1200 w +10 /LucidaSansUnicode20 f +(\030) 2652 1200 w +10 /LucidaSansUnicode00 f +(8) 2684 1200 w +10 /LucidaSansUnicode20 f +(\031) 2747 1200 w +10 /LucidaSansUnicode00 f +(is) 2812 1200 w +(the) 2925 1200 w +(code) 3113 1200 w +(letter) 3377 1200 w +(for Intel) 3666 1200 w +10 /LucidaSans-Italic f +(x) 4082 1200 w +10 /LucidaSansUnicode00 f +(86 processors; the) 4136 1200 w +(C) 720 1320 w +(compiler) 827 1320 w +(is) 1288 1320 w +(named) 1406 1320 w +10 /LucidaTypewriter f +(8c) 1773 1320 w +10 /LucidaSansUnicode00 f +(,) 1917 1320 w +(the) 1987 1320 w +(Alef) 2180 1320 w +(compiler) 2409 1320 w +10 /LucidaTypewriter f +(8al) 2870 1320 w +10 /LucidaSansUnicode00 f +(,) 3086 1320 w +(and) 3156 1320 w +(the) 3374 1320 w +(loader) 3567 1320 w +(is) 3910 1320 w +(called) 4028 1320 w +10 /LucidaTypewriter f +(8l) 4350 1320 w +10 /LucidaSansUnicode00 f +(.) 4494 1320 w +(Similarly,) 4597 1320 w +(the compiler intermediate files are suffixed) 720 1440 w +10 /LucidaTypewriter f +(.8) 2854 1440 w +10 /LucidaSansUnicode00 f +(, not) 2998 1440 w +10 /LucidaTypewriter f +(.o) 3254 1440 w +10 /LucidaSansUnicode00 f +(.) 3398 1440 w +(The) 970 1596 w +(Plan) 1192 1596 w +(9) 1434 1596 w +(build) 1538 1596 w +(program) 1825 1596 w +10 /LucidaTypewriter f +(mk) 2282 1596 w +10 /LucidaSansUnicode00 f +(,) 2426 1596 w +(a) 2499 1596 w +(relative) 2595 1596 w +(of) 2991 1596 w +10 /LucidaTypewriter f +(make) 3130 1596 w +10 /LucidaSansUnicode00 f +(,) 3418 1596 w +(reads) 3491 1596 w +(the) 3798 1596 w +(names) 3994 1596 w +(of) 4353 1596 w +(the) 4493 1596 w +(current) 4690 1596 w +(and) 720 1716 w +(target) 934 1716 w +(architectures) 1256 1716 w +(from) 1919 1716 w +(environment) 2185 1716 w +(variables) 2830 1716 w +(called) 3294 1716 w +10 /LucidaTypewriter f +($cputype) 3610 1716 w +10 /LucidaSansUnicode00 f +(and) 4219 1716 w +10 /LucidaTypewriter f +($objtype) 4432 1716 w +10 /LucidaSansUnicode00 f +(.) 5008 1716 w +(By) 720 1836 w +(default) 876 1836 w +(the) 1261 1836 w +(current) 1462 1836 w +(processor) 1858 1836 w +(is) 2380 1836 w +(the) 2506 1836 w +(target,) 2707 1836 w +(but) 3073 1836 w +(setting) 3281 1836 w +10 /LucidaTypewriter f +($objtype) 3661 1836 w +10 /LucidaSansUnicode00 f +(to) 4283 1836 w +(the) 4427 1836 w +(name) 4629 1836 w +(of) 4942 1836 w +(another architecture before invoking) 720 1956 w +10 /LucidaTypewriter f +(mk) 2529 1956 w +10 /LucidaSansUnicode00 f +(results in a cross-build:) 2705 1956 w +9 /LucidaTypewriter f +(%) 1008 2126 w +(objtype=sparc) 1138 2126 w +(mk) 2048 2126 w +10 /LucidaSansUnicode00 f +(builds) 720 2306 w +(a) 1057 2306 w +(program) 1152 2306 w +(for) 1608 2306 w +(the) 1787 2306 w +(SPARC) 1982 2306 w +(architecture) 2332 2306 w +(regardless) 2950 2306 w +(of) 3495 2306 w +(the) 3633 2306 w +(executing) 3829 2306 w +(machine.) 4346 2306 w +(The) 4859 2306 w +(value) 720 2426 w +(of) 1026 2426 w +10 /LucidaTypewriter f +($objtype) 1176 2426 w +10 /LucidaSansUnicode00 f +(selects) 1804 2426 w +(a) 2187 2426 w +(file) 2294 2426 w +(of) 2497 2426 w +(architecture-dependent) 2646 2426 w +(variable) 3851 2426 w +(definitions) 4282 2426 w +(that) 4849 2426 w +(configures) 720 2546 w +(the) 1284 2546 w +(build) 1491 2546 w +(to) 1789 2546 w +(use) 1939 2546 w +(the) 2160 2546 w +(appropriate) 2367 2546 w +(compilers) 2983 2546 w +(and) 3509 2546 w +(loader.) 3742 2546 w +(Although) 4164 2546 w +(simple-) 4661 2546 w +(minded,) 720 2666 w +(this) 1156 2666 w +(technique) 1373 2666 w +(works) 1889 2666 w +(well) 2215 2666 w +(in) 2444 2666 w +(practice:) 2573 2666 w +(all) 3026 2666 w +(applications) 3177 2666 w +(in) 3800 2666 w +(Plan) 3929 2666 w +(9) 4168 2666 w +(are) 4269 2666 w +(built) 4459 2666 w +(from) 4716 2666 w +(a) 4985 2666 w +(single) 720 2786 w +(source) 1044 2786 w +(tree) 1401 2786 w +(and) 1626 2786 w +(it) 1841 2786 w +(is) 1942 2786 w +(possible) 2057 2786 w +(to) 2496 2786 w +(build) 2630 2786 w +(the) 2912 2786 w +(various) 3103 2786 w +(architectures) 3490 2786 w +(in) 4155 2786 w +(parallel) 4282 2786 w +(without) 4675 2786 w +(conflict.) 720 2906 w +10 /LucidaSans-Demi f +(Parallel programming) 720 3146 w +10 /LucidaSansUnicode00 f +(Plan) 970 3302 w +(9) 1214 3302 w +10 /LucidaSansUnicode20 f +(\031) 1277 3302 w +10 /LucidaSansUnicode00 f +(s) 1309 3302 w +(support) 1403 3302 w +(for) 1824 3302 w +(parallel) 2006 3302 w +(programming) 2406 3302 w +(has) 3111 3302 w +(two) 3322 3302 w +(aspects.) 3540 3302 w +(First,) 4011 3302 w +(the) 4298 3302 w +(kernel) 4496 3302 w +(pro\255) 4842 3302 w +(vides) 720 3422 w +(a) 1006 3422 w +(simple) 1096 3422 w +(process) 1452 3422 w +(model) 1861 3422 w +(and) 2198 3422 w +(a) 2413 3422 w +(few) 2502 3422 w +(carefully) 2706 3422 w +(designed) 3152 3422 w +(system) 3628 3422 w +(calls) 4002 3422 w +(for) 4251 3422 w +(synchroniza\255) 4424 3422 w +(tion) 720 3542 w +(and) 957 3542 w +(sharing.) 1185 3542 w +(Second,) 1659 3542 w +(a) 2086 3542 w +(new) 2189 3542 w +(parallel) 2432 3542 w +(programming) 2837 3542 w +(language) 3547 3542 w +(called) 4039 3542 w +(Alef) 4371 3542 w +(supports) 4611 3542 w +(concurrent) 720 3662 w +(programming.) 1279 3662 w +(Although) 2040 3662 w +(it) 2519 3662 w +(is) 2620 3662 w +(possible) 2735 3662 w +(to) 3173 3662 w +(write) 3306 3662 w +(parallel) 3581 3662 w +(programs) 3973 3662 w +(in) 4475 3662 w +(C,) 4600 3662 w +(Alef) 4735 3662 w +(is) 4960 3662 w +(the parallel language of choice.) 720 3782 w +(There) 970 3938 w +(is) 1287 3938 w +(a) 1406 3938 w +(trend) 1500 3938 w +(in) 1798 3938 w +(new) 1928 3938 w +(operating) 2162 3938 w +(systems) 2667 3938 w +(to) 3097 3938 w +(implement) 3234 3938 w +(two) 3791 3938 w +(classes) 4005 3938 w +(of) 4389 3938 w +(processes:) 4527 3938 w +(normal) 720 4058 w +(UNIX-style) 1102 4058 w +(processes) 1661 4058 w +(and) 2183 4058 w +(light-weight) 2404 4058 w +(kernel) 3044 4058 w +(threads.) 3386 4058 w +(Instead,) 3855 4058 w +(Plan) 4280 4058 w +(9) 4521 4058 w +(provides) 4624 4058 w +(a) 720 4178 w +(single) 813 4178 w +(class) 1140 4178 w +(of) 1415 4178 w +(process) 1552 4178 w +(but) 1965 4178 w +(allows) 2166 4178 w +(fine) 2507 4178 w +(control) 2730 4178 w +(of) 3111 4178 w +(the) 3248 4178 w +(sharing) 3442 4178 w +(of) 3843 4178 w +(a) 3980 4178 w +(process) 4074 4178 w +10 /LucidaSansUnicode20 f +(\031) 4448 4178 w +10 /LucidaSansUnicode00 f +(s) 4480 4178 w +(resources) 4570 4178 w +(such) 720 4298 w +(as) 982 4298 w +(memory) 1124 4298 w +(and) 1556 4298 w +(file) 1772 4298 w +(descriptors.) 1959 4298 w +(A) 2603 4298 w +(single) 2708 4298 w +(class) 3033 4298 w +(of) 3305 4298 w +(process) 3438 4298 w +(is) 3847 4298 w +(a) 3962 4298 w +(feasible) 4052 4298 w +(approach) 4463 4298 w +(in) 4949 4298 w +(Plan) 720 4418 w +(9) 962 4418 w +(because) 1066 4418 w +(the) 1501 4418 w +(kernel) 1697 4418 w +(has) 2040 4418 w +(an) 2249 4418 w +(efficient) 2407 4418 w +(system) 2842 4418 w +(call) 3223 4418 w +(interface) 3428 4418 w +(and) 3893 4418 w +(cheap) 4114 4418 w +(process) 4443 4418 w +(cre\255) 4859 4418 w +(ation and scheduling.) 720 4538 w +(Parallel) 970 4694 w +(programs) 1354 4694 w +(have) 1856 4694 w +(three) 2117 4694 w +(basic) 2405 4694 w +(requirements:) 2690 4694 w +(management) 3405 4694 w +(of) 4072 4694 w +(resources) 4206 4694 w +(shared) 4712 4694 w +(between) 720 4814 w +(processes,) 1172 4814 w +(an) 1730 4814 w +(interface) 1891 4814 w +(to) 2359 4814 w +(the) 2501 4814 w +(scheduler,) 2700 4814 w +(and) 3247 4814 w +(fine-grain) 3471 4814 w +(process) 4006 4814 w +(synchroniza\255) 4424 4814 w +(tion) 720 4934 w +(using) 952 4934 w +(spin) 1261 4934 w +(locks.) 1509 4934 w +(On) 1866 4934 w +(Plan) 2049 4934 w +(9,) 2293 4934 w +(new) 2431 4934 w +(processes) 2669 4934 w +(are) 3193 4934 w +(created) 3388 4934 w +(using) 3790 4934 w +(the) 4099 4934 w +10 /LucidaTypewriter f +(rfork) 4297 4934 w +10 /LucidaSansUnicode00 f +(system) 4700 4934 w +(call.) 720 5054 w +10 /LucidaTypewriter f +(Rfork) 998 5054 w +10 /LucidaSansUnicode00 f +(takes) 1407 5054 w +(a) 1713 5054 w +(single) 1817 5054 w +(argument,) 2155 5054 w +(a) 2704 5054 w +(bit) 2808 5054 w +(vector) 2986 5054 w +(that) 3333 5054 w +(specifies) 3573 5054 w +(which) 4045 5054 w +(of) 4375 5054 w +(the) 4522 5054 w +(parent) 4726 5054 w +(process) 720 5174 w +10 /LucidaSansUnicode20 f +(\031) 1094 5174 w +10 /LucidaSansUnicode00 f +(s) 1126 5174 w +(resources) 1243 5174 w +(should) 1779 5174 w +(be) 2173 5174 w +(shared,) 2358 5174 w +(copied,) 2784 5174 w +(or) 3205 5174 w +(created) 3373 5174 w +(anew) 3798 5174 w +(in) 4114 5174 w +(the) 4272 5174 w +(child.) 4494 5174 w +(The) 4859 5174 w +(resources) 720 5294 w +(controlled) 1254 5294 w +(by) 1808 5294 w +10 /LucidaTypewriter f +(rfork) 1987 5294 w +10 /LucidaSansUnicode00 f +(include) 2411 5294 w +(the) 2827 5294 w +(name) 3046 5294 w +(space,) 3376 5294 w +(the) 3747 5294 w +(environment,) 3965 5294 w +(the) 4671 5294 w +(file) 4889 5294 w +(descriptor) 720 5414 w +(table,) 1247 5414 w +(memory) 1553 5414 w +(segments,) 1983 5414 w +(and) 2517 5414 w +(notes) 2731 5414 w +(\(Plan) 3032 5414 w +(9) 3300 5414 w +10 /LucidaSansUnicode20 f +(\031) 3363 5414 w +10 /LucidaSansUnicode00 f +(s) 3395 5414 w +(analog) 3480 5414 w +(of) 3838 5414 w +(UNIX) 3970 5414 w +(signals\).) 4240 5414 w +(One) 4711 5414 w +(of) 4942 5414 w +(the) 720 5534 w +(bits) 914 5534 w +(controls) 1133 5534 w +(whether) 1565 5534 w +(the) 1995 5534 w +10 /LucidaTypewriter f +(rfork) 2189 5534 w +10 /LucidaSansUnicode00 f +(call) 2588 5534 w +(will) 2791 5534 w +(create) 2994 5534 w +(a) 3328 5534 w +(new) 3421 5534 w +(process;) 3654 5534 w +(if) 4098 5534 w +(the) 4202 5534 w +(bit) 4395 5534 w +(is) 4562 5534 w +(off,) 4680 5534 w +(the) 4885 5534 w +(resulting modification) 720 5654 w +(to) 1821 5654 w +(the) 1952 5654 w +(resources) 2140 5654 w +(occurs) 2643 5654 w +(in) 2993 5654 w +(the) 3117 5654 w +(process) 3305 5654 w +(making) 3712 5654 w +(the) 4104 5654 w +(call.) 4292 5654 w +(For) 4553 5654 w +(exam\255) 4742 5654 w +(ple,) 720 5774 w +(a) 936 5774 w +(process) 1027 5774 w +(calls) 1437 5774 w +10 /LucidaTypewriter f +(rfork\(RFNAMEG\)) 1688 5774 w +10 /LucidaSansUnicode00 f +(to) 2732 5774 w +(disconnect) 2866 5774 w +(its) 3425 5774 w +(name) 3578 5774 w +(space) 3880 5774 w +(from) 4192 5774 w +(its) 4459 5774 w +(parent) 4611 5774 w +10 /LucidaSansUnicode20 f +(\031) 4925 5774 w +10 /LucidaSansUnicode00 f +(s.) 4957 5774 w +(Alef) 720 5894 w +(uses) 953 5894 w +(a) 1215 5894 w +(fine-grained) 1312 5894 w +(fork) 1964 5894 w +(in) 2203 5894 w +(which) 2336 5894 w +(all) 2659 5894 w +(the) 2814 5894 w +(resources,) 3011 5894 w +(including) 3555 5894 w +(memory,) 4046 5894 w +(are) 4517 5894 w +(shared) 4712 5894 w +(between parent and child, analogous to creating a kernel thread in many systems.) 720 6014 w +(An) 970 6170 w +(indication) 1134 6170 w +(that) 1645 6170 w +10 /LucidaTypewriter f +(rfork) 1869 6170 w +10 /LucidaSansUnicode00 f +(is) 2262 6170 w +(the) 2375 6170 w +(right) 2563 6170 w +(model) 2827 6170 w +(is) 3162 6170 w +(the) 3276 6170 w +(variety) 3465 6170 w +(of) 3821 6170 w +(ways) 3953 6170 w +(it) 4222 6170 w +(is) 4322 6170 w +(used.) 4436 6170 w +(Other) 4766 6170 w +(than) 720 6290 w +(the) 972 6290 w +(canonical) 1163 6290 w +(use) 1653 6290 w +(in) 1857 6290 w +(the) 1983 6290 w +(library) 2173 6290 w +(routine) 2518 6290 w +10 /LucidaTypewriter f +(fork) 2901 6290 w +10 /LucidaSansUnicode00 f +(,) 3189 6290 w +(it) 3256 6290 w +(is) 3357 6290 w +(hard) 3472 6290 w +(to) 3728 6290 w +(find) 3861 6290 w +(two) 4087 6290 w +(calls) 4297 6290 w +(to) 4547 6290 w +10 /LucidaTypewriter f +(rfork) 4680 6290 w +10 /LucidaSansUnicode00 f +(with) 720 6410 w +(the) 968 6410 w +(same) 1166 6410 w +(bits) 1464 6410 w +(set;) 1687 6410 w +(programs) 1906 6410 w +(use) 2416 6410 w +(it) 2628 6410 w +(to) 2737 6410 w +(create) 2878 6410 w +(many) 3217 6410 w +(different) 3523 6410 w +(forms) 3985 6410 w +(of) 4312 6410 w +(sharing) 4454 6410 w +(and) 4860 6410 w +(resource) 720 6530 w +(allocation.) 1181 6530 w +(A) 1756 6530 w +(system) 1867 6530 w +(with) 2248 6530 w +(just) 2494 6530 w +(two) 2715 6530 w +(types) 2931 6530 w +(of) 3231 6530 w +(processes) 3370 6530 w +10 /LucidaSansUnicode20 f +(\024) 3851 6530 w +10 /LucidaSansUnicode00 f +(regular) 3951 6530 w +(processes) 4338 6530 w +(and) 4860 6530 w +(threads) 720 6650 w +10 /LucidaSansUnicode20 f +(\024) 1085 6650 w +10 /LucidaSansUnicode00 f +(could not handle this variety.) 1185 6650 w +(There) 970 6806 w +(are) 1287 6806 w +(two) 1478 6806 w +(ways) 1693 6806 w +(to) 1968 6806 w +(share) 2106 6806 w +(memory.) 2411 6806 w +(First,) 2911 6806 w +(a) 3195 6806 w +(flag) 3290 6806 w +(to) 3513 6806 w +10 /LucidaTypewriter f +(rfork) 3651 6806 w +10 /LucidaSansUnicode00 f +(causes) 4051 6806 w +(all) 4417 6806 w +(the) 4570 6806 w +(mem\255) 4765 6806 w +(ory) 720 6926 w +(segments) 907 6926 w +(of) 1408 6926 w +(the) 1539 6926 w +(parent) 1727 6926 w +(to) 2074 6926 w +(be) 2205 6926 w +(shared with the child \(except the stack, which is forked) 2357 6926 w +(copy-on-write) 720 7046 w +(regardless\).) 1474 7046 w +(Alternatively,) 2124 7046 w +(a) 2808 7046 w +(new) 2911 7046 w +(segment) 3154 7046 w +(of) 3619 7046 w +(memory) 3765 7046 w +(may) 4209 7046 w +(be) 4457 7046 w +(attached) 4624 7046 w +(using) 720 7166 w +(the) 1024 7166 w +10 /LucidaTypewriter f +(segattach) 1217 7166 w +10 /LucidaSansUnicode00 f +(system) 1903 7166 w +(call;) 2281 7166 w +(such) 2515 7166 w +(a) 2779 7166 w +(segment) 2872 7166 w +(will) 3326 7166 w +(always) 3527 7166 w +(be) 3883 7166 w +(shared) 4039 7166 w +(between) 4404 7166 w +(par\255) 4848 7166 w +(ent and child.) 720 7286 w +cleartomark +showpage +saveobj restore +%%EndPage: 11 11 +%%Page: 12 12 +/saveobj save def +mark +12 pagesetup +10 /LucidaSansUnicode00 f +(\255 12 \255) 2752 480 w +(The) 970 840 w +10 /LucidaTypewriter f +(rendezvous) 1192 840 w +10 /LucidaSansUnicode00 f +(system) 1953 840 w +(call) 2334 840 w +(provides) 2539 840 w +(a) 2996 840 w +(way) 3092 840 w +(for) 3317 840 w +(processes) 3497 840 w +(to) 4019 840 w +(synchronize.) 4159 840 w +(Alef) 4849 840 w +(uses) 720 960 w +(it) 995 960 w +(to) 1116 960 w +(implement) 1269 960 w +(communication) 1842 960 w +(channels,) 2642 960 w +(queuing) 3156 960 w +(locks,) 3606 960 w +(multiple) 3942 960 w +(reader/writer) 4394 960 w +(locks,) 720 1080 w +(and) 1049 1080 w +(the) 1276 1080 w +(sleep) 1478 1080 w +(and) 1780 1080 w +(wakeup) 2007 1080 w +(mechanism.) 2426 1080 w +10 /LucidaTypewriter f +(Rendezvous) 3090 1080 w +10 /LucidaSansUnicode00 f +(takes) 3858 1080 w +(two) 4163 1080 w +(arguments,) 4386 1080 w +(a) 4985 1080 w +(tag) 720 1200 w +(and) 915 1200 w +(a) 1136 1200 w +(value.) 1232 1200 w +(When) 1591 1200 w +(a) 1897 1200 w +(process) 1992 1200 w +(calls) 2406 1200 w +10 /LucidaTypewriter f +(rendezvous) 2661 1200 w +10 /LucidaSansUnicode00 f +(with) 3421 1200 w +(a) 3666 1200 w +(tag) 3761 1200 w +(it) 3955 1200 w +(sleeps) 4061 1200 w +(until) 4407 1200 w +(another) 4666 1200 w +(process) 720 1320 w +(presents) 1131 1320 w +(a) 1585 1320 w +(matching) 1677 1320 w +(tag.) 2165 1320 w +(When) 2420 1320 w +(a) 2723 1320 w +(pair) 2815 1320 w +(of) 3040 1320 w +(tags) 3175 1320 w +(match,) 3418 1320 w +(the) 3786 1320 w +(values) 3979 1320 w +(are) 4322 1320 w +(exchanged) 4512 1320 w +(between) 720 1440 w +(the) 1164 1440 w +(two) 1356 1440 w +(processes) 1568 1440 w +(and) 2086 1440 w +(both) 2303 1440 w +10 /LucidaTypewriter f +(rendezvous) 2563 1440 w +10 /LucidaSansUnicode00 f +(calls) 3319 1440 w +(return.) 3570 1440 w +(This) 3969 1440 w +(primitive) 4210 1440 w +(is) 4675 1440 w +(suffi\255) 4791 1440 w +(cient to implement the full set of synchronization routines.) 720 1560 w +(Finally,) 970 1716 w +(spin) 1352 1716 w +(locks) 1597 1716 w +(are) 1887 1716 w +(provided) 2079 1716 w +(by) 2547 1716 w +(an) 2702 1716 w +(architecture-dependent) 2859 1716 w +(library) 4053 1716 w +(at) 4403 1716 w +(user) 4535 1716 w +(level.) 4786 1716 w +(Most) 720 1836 w +(processors) 991 1836 w +(provide) 1554 1836 w +(atomic) 1955 1836 w +(test) 2317 1836 w +(and) 2534 1836 w +(set) 2750 1836 w +(instructions) 2930 1836 w +(that) 3539 1836 w +(can) 3765 1836 w +(be) 3968 1836 w +(used) 4122 1836 w +(to) 4389 1836 w +(implement) 4522 1836 w +(locks.) 720 1956 w +(A) 1073 1956 w +(notable) 1182 1956 w +(exception) 1585 1956 w +(is) 2101 1956 w +(the) 2221 1956 w +(MIPS) 2416 1956 w +(R3000,) 2680 1956 w +(so) 3067 1956 w +(the) 3219 1956 w +(SGI) 3414 1956 w +(Power) 3609 1956 w +(series) 3939 1956 w +(multiprocessors) 4263 1956 w +(have) 720 2076 w +(special) 979 2076 w +(lock) 1347 2076 w +(hardware) 1580 2076 w +(on) 2064 2076 w +(the) 2221 2076 w +(bus.) 2410 2076 w +(User) 2684 2076 w +(processes) 2935 2076 w +(gain) 3450 2076 w +(access) 3691 2076 w +(to) 4039 2076 w +(the) 4170 2076 w +(lock) 4358 2076 w +(hardware) 4590 2076 w +(by) 720 2196 w +(mapping) 881 2196 w +(pages) 1354 2196 w +(of) 1687 2196 w +(hardware) 1831 2196 w +(locks) 2327 2196 w +(into) 2623 2196 w +(their) 2858 2196 w +(address) 3129 2196 w +(space) 3555 2196 w +(using) 3877 2196 w +(the) 4190 2196 w +10 /LucidaTypewriter f +(segattach) 4392 2196 w +10 /LucidaSansUnicode00 f +(system call.) 720 2316 w +(A) 970 2472 w +(Plan) 1078 2472 w +(9) 1318 2472 w +(process) 1420 2472 w +(in) 1833 2472 w +(a) 1963 2472 w +(system) 2057 2472 w +(call) 2437 2472 w +(will) 2641 2472 w +(block) 2845 2472 w +(regardless) 3147 2472 w +(of) 3692 2472 w +(its) 3830 2472 w +10 /LucidaSansUnicode20 f +(\030) 3987 2472 w +10 /LucidaSansUnicode00 f +(weight) 4019 2472 w +10 /LucidaSansUnicode20 f +(\031) 4342 2472 w +10 /LucidaSansUnicode00 f +(.) 4374 2472 w +(This) 4478 2472 w +(means) 4723 2472 w +(that) 720 2592 w +(when) 949 2592 w +(a) 1244 2592 w +(program) 1337 2592 w +(wishes) 1791 2592 w +(to) 2155 2592 w +(read) 2291 2592 w +(from) 2544 2592 w +(a) 2814 2592 w +(slow) 2907 2592 w +(device) 3163 2592 w +(without) 3508 2592 w +(blocking) 3910 2592 w +(the) 4362 2592 w +(entire) 4554 2592 w +(cal\255) 4872 2592 w +(culation,) 720 2712 w +(it) 1176 2712 w +(must) 1280 2712 w +(fork) 1562 2712 w +(a) 1798 2712 w +(process) 1892 2712 w +(to) 2305 2712 w +(do) 2442 2712 w +(the) 2605 2712 w +(read) 2799 2712 w +(for) 3053 2712 w +(it.) 3231 2712 w +(The) 3400 2712 w +(solution) 3620 2712 w +(is) 4051 2712 w +(to) 4170 2712 w +(start) 4307 2712 w +(a) 4567 2712 w +(satellite) 4661 2712 w +(process) 720 2832 w +(that) 1132 2832 w +(does) 1361 2832 w +(the) 1630 2832 w +(I/O) 1823 2832 w +(and) 2021 2832 w +(delivers) 2239 2832 w +(the) 2654 2832 w +(answer) 2847 2832 w +(to) 3227 2832 w +(the) 3363 2832 w +(main) 3556 2832 w +(program) 3833 2832 w +(through) 4287 2832 w +(shared) 4712 2832 w +(memory) 720 2952 w +(or) 1168 2952 w +(perhaps) 1322 2952 w +(a) 1765 2952 w +(pipe.) 1872 2952 w +(This) 2199 2952 w +(sounds) 2457 2952 w +(onerous) 2860 2952 w +(but) 3307 2952 w +(works) 3522 2952 w +(easily) 3863 2952 w +(and) 4188 2952 w +(efficiently) 4421 2952 w +(in) 4949 2952 w +(practice;) 720 3072 w +(in) 1174 3072 w +(fact,) 1304 3072 w +(most) 1555 3072 w +(interactive) 1836 3072 w +(Plan) 2380 3072 w +(9) 2619 3072 w +(applications,) 2720 3072 w +(even) 3375 3072 w +(relatively) 3639 3072 w +(ordinary) 4113 3072 w +(ones) 4555 3072 w +(writ\255) 4823 3072 w +(ten in C, such as the text editor Sam [Pike87], run as multiprocess programs.) 720 3192 w +(The) 970 3348 w +(kernel) 1197 3348 w +(support) 1546 3348 w +(for) 1971 3348 w +(parallel) 2157 3348 w +(programming) 2561 3348 w +(in) 3270 3348 w +(Plan) 3408 3348 w +(9) 3656 3348 w +(is) 3766 3348 w +(a) 3893 3348 w +(few) 3995 3348 w +(hundred) 4212 3348 w +(lines) 4668 3348 w +(of) 4942 3348 w +(portable) 720 3468 w +(code;) 1160 3468 w +(a) 1458 3468 w +(handful) 1548 3468 w +(of) 1953 3468 w +(simple) 2086 3468 w +(primitives) 2442 3468 w +(enable) 2957 3468 w +(the) 3313 3468 w +(problems) 3503 3468 w +(to) 3995 3468 w +(be) 4128 3468 w +(handled) 4282 3468 w +(cleanly) 4706 3468 w +(at) 720 3588 w +(user) 848 3588 w +(level.) 1095 3588 w +(Although) 1418 3588 w +(the) 1899 3588 w +(primitives) 2091 3588 w +(work) 2608 3588 w +(fine) 2882 3588 w +(from) 3103 3588 w +(C,) 3372 3588 w +(they) 3510 3588 w +(are) 3754 3588 w +(particularly) 3943 3588 w +(expressive) 4524 3588 w +(from) 720 3708 w +(within) 985 3708 w +(Alef.) 1314 3708 w +(The) 1602 3708 w +(creation) 1816 3708 w +(and) 2241 3708 w +(management of slave I/O processes can be written in) 2454 3708 w +(a) 720 3828 w +(few) 808 3828 w +(lines) 1011 3828 w +(of) 1271 3828 w +(Alef,) 1403 3828 w +(providing) 1660 3828 w +(the) 2156 3828 w +(foundation) 2345 3828 w +(for) 2908 3828 w +(a) 3081 3828 w +(consistent) 3170 3828 w +(means) 3701 3828 w +(of) 4052 3828 w +(multiplexing) 4184 3828 w +(data) 4830 3828 w +(flows) 720 3948 w +(between) 1010 3948 w +(arbitrary) 1452 3948 w +(processes.) 1901 3948 w +(Moreover,) 2481 3948 w +(implementing) 3002 3948 w +(it) 3707 3948 w +(in) 3807 3948 w +(a) 3932 3948 w +(language) 4021 3948 w +(rather) 4498 3948 w +(than) 4824 3948 w +(in the kernel ensures consistent semantics between all devices and provides a) 720 4068 w +(more) 4543 4068 w +(gen\255) 4827 4068 w +(eral) 720 4188 w +(multiplexing) 950 4188 w +(primitive.) 1610 4188 w +(Compare) 2151 4188 w +(this) 2637 4188 w +(to) 2864 4188 w +(the) 3010 4188 w +(UNIX) 3213 4188 w +10 /LucidaTypewriter f +(select) 3496 4188 w +10 /LucidaSansUnicode00 f +(system) 3976 4188 w +(call:) 4364 4188 w +10 /LucidaTypewriter f +(select) 4608 4188 w +10 /LucidaSansUnicode00 f +(applies) 720 4308 w +(only) 1104 4308 w +(to) 1346 4308 w +(a) 1482 4308 w +(restricted) 1575 4308 w +(set) 2075 4308 w +(of) 2257 4308 w +(devices,) 2393 4308 w +(legislates) 2821 4308 w +(a) 3314 4308 w +(style) 3407 4308 w +(of) 3670 4308 w +(multiprogramming) 3806 4308 w +(in) 4756 4308 w +(the) 4885 4308 w +(kernel, does not extend across networks, is difficult to implement, and is hard to use.) 720 4428 w +(Another) 970 4584 w +(reason) 1395 4584 w +(parallel) 1758 4584 w +(programming) 2152 4584 w +(is) 2851 4584 w +(important) 2968 4584 w +(in) 3483 4584 w +(Plan) 3612 4584 w +(9) 3851 4584 w +(is) 3952 4584 w +(that) 4070 4584 w +(multi-threaded) 4299 4584 w +(user-level) 720 4704 w +(file) 1255 4704 w +(servers) 1451 4704 w +(are) 1844 4704 w +(the) 2041 4704 w +(preferred) 2241 4704 w +(way) 2739 4704 w +(to) 2967 4704 w +(implement) 3109 4704 w +(services.) 3671 4704 w +(Examples) 4166 4704 w +(of) 4672 4704 w +(such) 4814 4704 w +(servers) 720 4824 w +(include) 1101 4824 w +(the) 1486 4824 w +(programming) 1674 4824 w +(environment) 2369 4824 w +(Acme) 3013 4824 w +([Pike94],) 3315 4824 w +(the) 3770 4824 w +(name) 3958 4824 w +(space) 4258 4824 w +(exporting) 4568 4824 w +(tool) 720 4944 w +10 /LucidaTypewriter f +(exportfs) 951 4944 w +10 /LucidaSansUnicode00 f +([PPTTW93],) 1570 4944 w +(the) 2159 4944 w +(HTTP) 2357 4944 w +(daemon,) 2655 4944 w +(and) 3120 4944 w +(the) 3343 4944 w +(network) 3541 4944 w +(name) 3976 4944 w +(servers) 4284 4944 w +10 /LucidaTypewriter f +(cs) 4674 4944 w +10 /LucidaSansUnicode00 f +(and) 4860 4944 w +10 /LucidaTypewriter f +(dns) 720 5064 w +10 /LucidaSansUnicode00 f +([PrWi93].) 974 5064 w +(Complex) 1479 5064 w +(applications) 1949 5064 w +(such) 2572 5064 w +(as) 2836 5064 w +(Acme) 2980 5064 w +(prove) 3287 5064 w +(that) 3598 5064 w +(careful) 3827 5064 w +(operating) 4196 5064 w +(system) 4700 5064 w +(support) 720 5184 w +(can) 1136 5184 w +(reduce) 1342 5184 w +(the) 1709 5184 w +(difficulty) 1902 5184 w +(of) 2366 5184 w +(writing) 2502 5184 w +(multi-threaded) 2877 5184 w +(applications) 3656 5184 w +(without) 4279 5184 w +(moving) 4681 5184 w +(threading and synchronization primitives into the kernel.) 720 5304 w +10 /LucidaSans-Demi f +(Implementation of Name Spaces) 720 5544 w +10 /LucidaSansUnicode00 f +(User) 970 5700 w +(processes) 1237 5700 w +(construct) 1769 5700 w +(name) 2273 5700 w +(spaces) 2590 5700 w +(using) 2968 5700 w +(three) 3285 5700 w +(system) 3588 5700 w +(calls:) 3979 5700 w +10 /LucidaTypewriter f +(mount) 4277 5700 w +10 /LucidaSansUnicode00 f +(,) 4637 5700 w +10 /LucidaTypewriter f +(bind) 4720 5700 w +10 /LucidaSansUnicode00 f +(,) 5008 5700 w +(and) 720 5820 w +10 /LucidaTypewriter f +(unmount) 946 5820 w +10 /LucidaSansUnicode00 f +(.) 1450 5820 w +(The) 1560 5820 w +10 /LucidaTypewriter f +(mount) 1787 5820 w +10 /LucidaSansUnicode00 f +(system) 2193 5820 w +(call) 2579 5820 w +(attaches) 2789 5820 w +(a) 3239 5820 w +(tree) 3340 5820 w +(served) 3576 5820 w +(by) 3941 5820 w +(a) 4102 5820 w +(file) 4203 5820 w +(server) 4400 5820 w +(to) 4742 5820 w +(the) 4885 5820 w +(current) 720 5940 w +(name) 1109 5940 w +(space.) 1414 5940 w +(Before) 1793 5940 w +(calling) 2141 5940 w +10 /LucidaTypewriter f +(mount) 2497 5940 w +10 /LucidaSansUnicode00 f +(,) 2857 5940 w +(the) 2928 5940 w +(client) 3122 5940 w +(must) 3425 5940 w +(\(by) 3707 5940 w +(outside) 3894 5940 w +(means\)) 4293 5940 w +(acquire) 4683 5940 w +(a) 720 6060 w +(connection) 815 6060 w +(to) 1386 6060 w +(the) 1523 6060 w +(server) 1717 6060 w +(in) 2053 6060 w +(the) 2183 6060 w +(form) 2377 6060 w +(of) 2648 6060 w +(a) 2785 6060 w +(file) 2879 6060 w +(descriptor) 3069 6060 w +(that) 3601 6060 w +(may) 3831 6060 w +(be) 4070 6060 w +(written) 4228 6060 w +(and) 4606 6060 w +(read) 4825 6060 w +(to transmit 9P messages.) 720 6180 w +(That file descriptor represents a pipe or network connection.) 2008 6180 w +(The) 970 6336 w +10 /LucidaTypewriter f +(mount) 1193 6336 w +10 /LucidaSansUnicode00 f +(call) 1595 6336 w +(attaches) 1801 6336 w +(a) 2247 6336 w +(new) 2344 6336 w +(hierarchy) 2581 6336 w +(to) 3072 6336 w +(the) 3212 6336 w +(existing) 3409 6336 w +(name) 3838 6336 w +(space.) 4146 6336 w +(The) 4528 6336 w +10 /LucidaTypewriter f +(bind) 4752 6336 w +10 /LucidaSansUnicode00 f +(system) 720 6456 w +(call,) 1094 6456 w +(on) 1324 6456 w +(the) 1481 6456 w +(other) 1670 6456 w +(hand,) 1961 6456 w +(duplicates) 2269 6456 w +(some) 2799 6456 w +(piece) 3094 6456 w +(of) 3382 6456 w +(existing) 3513 6456 w +(name) 3933 6456 w +(space) 4232 6456 w +(at) 4541 6456 w +(another) 4666 6456 w +(point in the name space.) 720 6576 w +(The) 1984 6576 w +10 /LucidaTypewriter f +(unmount) 2197 6576 w +10 /LucidaSansUnicode00 f +(system call allows components to be removed.) 2733 6576 w +(Using) 970 6732 w +(either) 1277 6732 w +10 /LucidaTypewriter f +(bind) 1592 6732 w +10 /LucidaSansUnicode00 f +(or) 1914 6732 w +10 /LucidaTypewriter f +(mount) 2050 6732 w +10 /LucidaSansUnicode00 f +(,) 2410 6732 w +(multiple) 2476 6732 w +(directories) 2908 6732 w +(may) 3457 6732 w +(be) 3691 6732 w +(stacked) 3844 6732 w +(at) 4249 6732 w +(a) 4375 6732 w +(single) 4464 6732 w +(point) 4788 6732 w +(in) 720 6852 w +(the) 848 6852 w +(name) 1040 6852 w +(space.) 1343 6852 w +(In) 1719 6852 w +(Plan) 1846 6852 w +(9) 2083 6852 w +(terminology,) 2182 6852 w +(this) 2833 6852 w +(is) 3048 6852 w +(a) 3164 6852 w +10 /LucidaSans-Italic f +(union) 3255 6852 w +10 /LucidaSansUnicode00 f +(directory) 3563 6852 w +(and) 4030 6852 w +(behaves) 4246 6852 w +(like) 4677 6852 w +(the) 4885 6852 w +(concatenation) 720 6972 w +(of) 1455 6972 w +(the) 1609 6972 w +(constituent) 1820 6972 w +(directories.) 2421 6972 w +(A) 3056 6972 w +(flag) 3181 6972 w +(argument) 3420 6972 w +(to) 3944 6972 w +10 /LucidaTypewriter f +(bind) 4098 6972 w +10 /LucidaSansUnicode00 f +(and) 4443 6972 w +10 /LucidaTypewriter f +(mount) 4680 6972 w +10 /LucidaSansUnicode00 f +(specifies) 720 7092 w +(the) 1190 7092 w +(position) 1392 7092 w +(of) 1832 7092 w +(a) 1977 7092 w +(new) 2079 7092 w +(directory) 2321 7092 w +(in) 2799 7092 w +(the) 2937 7092 w +(union,) 3139 7092 w +(permitting) 3494 7092 w +(new) 4050 7092 w +(elements) 4291 7092 w +(to) 4777 7092 w +(be) 4921 7092 w +(added either at the front or rear of the union or to replace it) 720 7212 w +(entirely.) 3676 7212 w +(When) 4135 7212 w +(a) 4434 7212 w +(file) 4522 7212 w +(lookup) 4706 7212 w +cleartomark +showpage +saveobj restore +%%EndPage: 12 12 +%%Page: 13 13 +/saveobj save def +mark +13 pagesetup +10 /LucidaSansUnicode00 f +(\255 13 \255) 2752 480 w +(is) 720 840 w +(performed) 838 840 w +(in) 1387 840 w +(a) 1515 840 w +(union) 1607 840 w +(directory,) 1920 840 w +(each) 2420 840 w +(component) 2681 840 w +(of) 3264 840 w +(the) 3399 840 w +(union) 3591 840 w +(is) 3904 840 w +(searched) 4021 840 w +(in) 4493 840 w +(turn) 4621 840 w +(and) 4860 840 w +(the) 720 960 w +(first) 916 960 w +(match) 1152 960 w +(taken;) 1491 960 w +(likewise,) 1832 960 w +(when) 2290 960 w +(a) 2588 960 w +(union) 2684 960 w +(directory) 3001 960 w +(is) 3473 960 w +(read,) 3594 960 w +(the) 3882 960 w +(contents) 4078 960 w +(of) 4536 960 w +(each) 4676 960 w +(of) 4942 960 w +(the) 720 1080 w +(component) 913 1080 w +(directories) 1497 1080 w +(is) 2050 1080 w +(read) 2168 1080 w +(in) 2420 1080 w +(turn.) 2548 1080 w +(Union) 2851 1080 w +(directories) 3171 1080 w +(are) 3723 1080 w +(one) 3912 1080 w +(of) 4128 1080 w +(the) 4263 1080 w +(most) 4455 1080 w +(widely) 4734 1080 w +(used) 720 1200 w +(organizational) 1010 1200 w +(features) 1763 1200 w +(of) 2216 1200 w +(the) 2372 1200 w +(Plan) 2585 1200 w +(9) 2844 1200 w +(name) 2965 1200 w +(space.) 3289 1200 w +(For) 3687 1200 w +(instance,) 3901 1200 w +(the) 4395 1200 w +(directory) 4609 1200 w +10 /LucidaTypewriter f +(/bin) 720 1320 w +10 /LucidaSansUnicode00 f +(is) 1063 1320 w +(built) 1198 1320 w +(as) 1473 1320 w +(a) 1633 1320 w +(union) 1742 1320 w +(of) 2072 1320 w +10 /LucidaTypewriter f +(/$cputype/bin) 2224 1320 w +10 /LucidaSansUnicode00 f +(\(program) 3214 1320 w +(binaries\),) 3717 1320 w +10 /LucidaTypewriter f +(/rc/bin) 4222 1320 w +10 /LucidaSansUnicode00 f +(\(shell) 4780 1320 w +(scripts\),) 720 1440 w +(and) 1153 1440 w +(perhaps) 1378 1440 w +(more) 1814 1440 w +(directories) 2110 1440 w +(provided) 2670 1440 w +(by) 3143 1440 w +(the) 3304 1440 w +(user.) 3505 1440 w +(This) 3825 1440 w +(construction) 4076 1440 w +(makes) 4727 1440 w +(the shell) 720 1560 w +10 /LucidaTypewriter f +($PATH) 1166 1560 w +10 /LucidaSansUnicode00 f +(variable unnecessary.) 1558 1560 w +(One) 970 1716 w +(question) 1206 1716 w +(raised) 1667 1716 w +(by) 2002 1716 w +(union) 2157 1716 w +(directories) 2473 1716 w +(is) 3028 1716 w +(which) 3148 1716 w +(element) 3470 1716 w +(of) 3900 1716 w +(the) 4039 1716 w +(union) 4235 1716 w +(receives) 4552 1716 w +(a) 4985 1716 w +(newly) 720 1836 w +(created) 1029 1836 w +(file.) 1421 1836 w +(After) 1669 1836 w +(several) 1942 1836 w +(designs,) 2315 1836 w +(we) 2754 1836 w +(decided) 2920 1836 w +(on) 3334 1836 w +(the) 3490 1836 w +(following.) 3678 1836 w +(By default, direc\255) 4222 1836 w +(tories) 720 1956 w +(in) 1028 1956 w +(unions) 1152 1956 w +(do) 1512 1956 w +(not) 1670 1956 w +(accept) 1864 1956 w +(new) 2211 1956 w +(files,) 2440 1956 w +(although) 2708 1956 w +(the) 3172 1956 w +10 /LucidaTypewriter f +(create) 3361 1956 w +10 /LucidaSansUnicode00 f +(system) 3827 1956 w +(call) 4201 1956 w +(applied) 4399 1956 w +(to) 4791 1956 w +(an) 4923 1956 w +(existing) 720 2076 w +(file) 1143 2076 w +(succeeds) 1330 2076 w +(normally.) 1807 2076 w +(When) 2329 2076 w +(a) 2631 2076 w +(directory) 2722 2076 w +(is) 3189 2076 w +(added) 3305 2076 w +(to) 3641 2076 w +(the) 3775 2076 w +(union,) 3966 2076 w +(a) 4310 2076 w +(flag) 4401 2076 w +(to) 4619 2076 w +10 /LucidaTypewriter f +(bind) 4752 2076 w +10 /LucidaSansUnicode00 f +(or) 720 2196 w +10 /LucidaTypewriter f +(mount) 866 2196 w +10 /LucidaSansUnicode00 f +(enables) 1270 2196 w +(create) 1686 2196 w +(permission) 2026 2196 w +(\(a) 2606 2196 w +(property) 2738 2196 w +(of) 3197 2196 w +(the) 3340 2196 w +(name) 3540 2196 w +(space\)) 3851 2196 w +(in) 4205 2196 w +(that) 4341 2196 w +(directory.) 4577 2196 w +(When) 720 2316 w +(a) 1026 2316 w +(file) 1121 2316 w +(is) 1311 2316 w +(being) 1430 2316 w +(created) 1741 2316 w +(with) 2139 2316 w +(a) 2383 2316 w +(new) 2477 2316 w +(name) 2711 2316 w +(in) 3016 2316 w +(a) 3146 2316 w +(union,) 3240 2316 w +(it) 3587 2316 w +(is) 3692 2316 w +(created) 3811 2316 w +(in) 4209 2316 w +(the) 4339 2316 w +(first) 4533 2316 w +(direc\255) 4767 2316 w +(tory) 720 2436 w +(of) 950 2436 w +(the) 1087 2436 w +(union) 1281 2436 w +(with) 1596 2436 w +(create) 1840 2436 w +(permission;) 2175 2436 w +(if) 2782 2436 w +(that) 2887 2436 w +(creation) 3117 2436 w +(fails,) 3548 2436 w +(the) 3820 2436 w +(entire) 4014 2436 w +10 /LucidaTypewriter f +(create) 4335 2436 w +10 /LucidaSansUnicode00 f +(fails.) 4807 2436 w +(This) 720 2556 w +(scheme) 960 2556 w +(enables) 1364 2556 w +(the) 1770 2556 w +(common) 1959 2556 w +(use) 2414 2556 w +(of) 2617 2556 w +(placing) 2749 2556 w +(a) 3134 2556 w +(private) 3223 2556 w +(directory) 3590 2556 w +(anywhere) 4055 2556 w +(in) 4550 2556 w +(a) 4675 2556 w +(union) 4764 2556 w +(of public ones, while allowing creation only in the private directory.) 720 2676 w +(By convention, kernel device) 970 2832 w +(file) 2383 2832 w +(systems) 2567 2832 w +(are) 2991 2832 w +(bound) 3176 2832 w +(into) 3520 2832 w +(the) 3742 2832 w +10 /LucidaTypewriter f +(/dev) 3930 2832 w +10 /LucidaSansUnicode00 f +(directory,) 4251 2832 w +(but) 4747 2832 w +(to) 4942 2832 w +(bootstrap) 720 2952 w +(the) 1232 2952 w +(name) 1430 2952 w +(space) 1739 2952 w +(building) 2058 2952 w +(process) 2500 2952 w +(it) 2917 2952 w +(is) 3025 2952 w +(necessary) 3147 2952 w +(to) 3664 2952 w +(have) 3804 2952 w +(a) 4071 2952 w +(notation) 4168 2952 w +(that) 4614 2952 w +(per\255) 4847 2952 w +(mits) 720 3072 w +(direct) 967 3072 w +(access) 1281 3072 w +(to) 1633 3072 w +(the) 1768 3072 w +(devices) 1960 3072 w +(without) 2355 3072 w +(an) 2757 3072 w +(existing) 2911 3072 w +(name) 3335 3072 w +(space.) 3638 3072 w +(The) 4016 3072 w +(root) 4235 3072 w +(directory) 4473 3072 w +(of) 4942 3072 w +(the) 720 3192 w +(tree) 923 3192 w +(served) 1161 3192 w +(by) 1528 3192 w +(a) 1691 3192 w +(device) 1794 3192 w +(driver) 2149 3192 w +(can) 2479 3192 w +(be) 2694 3192 w +(accessed) 2860 3192 w +(using) 3341 3192 w +(the) 3654 3192 w +(syntax) 3856 3192 w +10 /LucidaTypewriter f +(#) 4221 3192 w +10 /LucidaSans-Italic f +(c) 4293 3192 w +10 /LucidaSansUnicode00 f +(,) 4343 3192 w +(where) 4422 3192 w +10 /LucidaSans-Italic f +(c) 4761 3192 w +10 /LucidaSansUnicode00 f +(is) 4858 3192 w +(a) 4985 3192 w +(unique) 720 3312 w +(character) 1106 3312 w +(\(typically) 1607 3312 w +(a) 2089 3312 w +(letter\)) 2196 3312 w +(identifying) 2537 3312 w +(the) 3107 3312 w +10 /LucidaSans-Italic f +(type) 3314 3312 w +10 /LucidaSansUnicode00 f +(of) 3573 3312 w +(the) 3724 3312 w +(device.) 3932 3312 w +(Simple) 4356 3312 w +(device) 4733 3312 w +(drivers) 720 3432 w +(serve) 1094 3432 w +(a) 1391 3432 w +(single) 1487 3432 w +(level) 1817 3432 w +(directory) 2080 3432 w +(containing) 2552 3432 w +(a) 3102 3432 w +(few) 3197 3432 w +(files.) 3407 3432 w +(As) 3713 3432 w +(an) 3873 3432 w +(example,) 4030 3432 w +(each) 4515 3432 w +(serial) 4779 3432 w +(port is represented by a data and a control file:) 720 3552 w +9 /LucidaTypewriter f +(%) 1008 3722 w +(bind) 1138 3722 w +(-a) 1463 3722 w +('#t') 1658 3722 w +(/dev) 1983 3722 w +(%) 1008 3832 w +(cd) 1138 3832 w +(/dev) 1333 3832 w +(%) 1008 3942 w +(ls) 1138 3942 w +(-l) 1333 3942 w +(eia*) 1528 3942 w +(--rw-rw-rw-) 1008 4052 w +(t) 1788 4052 w +(0) 1918 4052 w +(bootes) 2048 4052 w +(bootes) 2503 4052 w +(0) 2958 4052 w +(Feb) 3088 4052 w +(24) 3348 4052 w +(21:14) 3543 4052 w +(eia1) 3933 4052 w +(--rw-rw-rw-) 1008 4162 w +(t) 1788 4162 w +(0) 1918 4162 w +(bootes) 2048 4162 w +(bootes) 2503 4162 w +(0) 2958 4162 w +(Feb) 3088 4162 w +(24) 3348 4162 w +(21:14) 3543 4162 w +(eia1ctl) 3933 4162 w +(--rw-rw-rw-) 1008 4272 w +(t) 1788 4272 w +(0) 1918 4272 w +(bootes) 2048 4272 w +(bootes) 2503 4272 w +(0) 2958 4272 w +(Feb) 3088 4272 w +(24) 3348 4272 w +(21:14) 3543 4272 w +(eia2) 3933 4272 w +(--rw-rw-rw-) 1008 4382 w +(t) 1788 4382 w +(0) 1918 4382 w +(bootes) 2048 4382 w +(bootes) 2503 4382 w +(0) 2958 4382 w +(Feb) 3088 4382 w +(24) 3348 4382 w +(21:14) 3543 4382 w +(eia2ctl) 3933 4382 w +10 /LucidaSansUnicode00 f +(The) 720 4562 w +10 /LucidaTypewriter f +(bind) 943 4562 w +10 /LucidaSansUnicode00 f +(program) 1273 4562 w +(is) 1732 4562 w +(an) 1855 4562 w +(encapsulation) 2015 4562 w +(of) 2731 4562 w +(the) 2872 4562 w +10 /LucidaTypewriter f +(bind) 3070 4562 w +10 /LucidaSansUnicode00 f +(system) 3401 4562 w +(call;) 3784 4562 w +(its) 4023 4562 w +10 /LucidaTypewriter f +(-a) 4183 4562 w +10 /LucidaSansUnicode00 f +(flag) 4370 4562 w +(positions) 4596 4562 w +(the) 720 4682 w +(new) 913 4682 w +(directory) 1146 4682 w +(at) 1615 4682 w +(the) 1745 4682 w +(end) 1938 4682 w +(of) 2157 4682 w +(the) 2292 4682 w +(union.) 2484 4682 w +(The) 2861 4682 w +(data) 3079 4682 w +(files) 3326 4682 w +10 /LucidaTypewriter f +(eia1) 3565 4682 w +10 /LucidaSansUnicode00 f +(and) 3890 4682 w +10 /LucidaTypewriter f +(eia2) 4107 4682 w +10 /LucidaSansUnicode00 f +(may) 4432 4682 w +(be) 4669 4682 w +(read) 4825 4682 w +(and) 720 4802 w +(written) 938 4802 w +(to) 1315 4802 w +(communicate) 1451 4802 w +(over) 2139 4802 w +(the) 2387 4802 w +(serial) 2580 4802 w +(line.) 2879 4802 w +(Instead) 3157 4802 w +(of) 3548 4802 w +(using) 3684 4802 w +(special) 3989 4802 w +(operations) 4362 4802 w +(on) 4917 4802 w +(these) 720 4922 w +(files) 1054 4922 w +(to) 1328 4922 w +(control) 1498 4922 w +(the) 1912 4922 w +(devices,) 2139 4922 w +(commands) 2601 4922 w +(written) 3202 4922 w +(to) 3613 4922 w +(the) 3783 4922 w +(files) 4010 4922 w +10 /LucidaTypewriter f +(eia1ctl) 4284 4922 w +10 /LucidaSansUnicode00 f +(and) 4860 4922 w +10 /LucidaTypewriter f +(eia2ctl) 720 5042 w +10 /LucidaSansUnicode00 f +(control) 1257 5042 w +(the) 1632 5042 w +(corresponding) 1820 5042 w +(device;) 2556 5042 w +(for) 2928 5042 w +(example,) 3100 5042 w +(writing) 3579 5042 w +(the) 3950 5042 w +(text) 4139 5042 w +(string) 4364 5042 w +10 /LucidaTypewriter f +(b1200) 4680 5042 w +10 /LucidaSansUnicode00 f +(to) 720 5162 w +10 /LucidaTypewriter f +(/dev/eia1ctl) 851 5162 w +10 /LucidaSansUnicode00 f +(sets) 1748 5162 w +(the) 1976 5162 w +(speed) 2164 5162 w +(of) 2486 5162 w +(that) 2617 5162 w +(line) 2841 5162 w +(to) 3050 5162 w +(1200) 3181 5162 w +(baud.) 3466 5162 w +(Compare) 3806 5162 w +(this to the UNIX) 4277 5162 w +10 /LucidaTypewriter f +(ioctl) 720 5282 w +10 /LucidaSansUnicode00 f +(system) 1121 5282 w +(call:) 1502 5282 w +(in) 1739 5282 w +(Plan) 1871 5282 w +(9,) 2113 5282 w +(devices) 2249 5282 w +(are) 2649 5282 w +(controlled) 2843 5282 w +(by) 3375 5282 w +(textual) 3532 5282 w +(messages,) 3911 5282 w +(free) 4460 5282 w +(of) 4692 5282 w +(byte) 4832 5282 w +(order) 720 5402 w +(problems,) 1016 5402 w +(with) 1539 5402 w +(clear) 1778 5402 w +(semantics) 2044 5402 w +(for) 2562 5402 w +(reading) 2734 5402 w +(and) 3135 5402 w +(writing.) 3348 5402 w +(It) 3782 5402 w +(is) 3881 5402 w +(common) 3994 5402 w +(to) 4448 5402 w +(configure) 4579 5402 w +(or debug devices using shell scripts.) 720 5522 w +(It) 970 5678 w +(is) 1099 5678 w +(the) 1242 5678 w +(universal) 1460 5678 w +(use) 1960 5678 w +(of) 2192 5678 w +(the) 2353 5678 w +(9P) 2571 5678 w +(protocol) 2752 5678 w +(that) 3219 5678 w +(connects) 3473 5678 w +(Plan) 3968 5678 w +(9) 4233 5678 w +10 /LucidaSansUnicode20 f +(\031) 4296 5678 w +10 /LucidaSansUnicode00 f +(s) 4328 5678 w +(components) 4443 5678 w +(together) 720 5798 w +(to) 1167 5798 w +(form) 1300 5798 w +(a) 1567 5798 w +(distributed) 1657 5798 w +(system.) 2223 5798 w +(Rather) 2662 5798 w +(than) 3011 5798 w +(inventing) 3262 5798 w +(a) 3748 5798 w +(unique) 3837 5798 w +(protocol) 4205 5798 w +(for) 4643 5798 w +(each) 4816 5798 w +(service) 720 5918 w +(such) 1110 5918 w +(as) 1390 5918 w +10 /LucidaTypewriter f +(rlogin) 1550 5918 w +10 /LucidaSansUnicode00 f +(,) 1982 5918 w +(FTP,) 2068 5918 w +(TFTP,) 2327 5918 w +(and) 2649 5918 w +(X) 2884 5918 w +(windows,) 3002 5918 w +(Plan) 3509 5918 w +(9) 3765 5918 w +(implements) 3883 5918 w +(services) 4507 5918 w +(in) 4949 5918 w +(terms) 720 6038 w +(of) 1031 6038 w +(operations) 1162 6038 w +(on) 1711 6038 w +(file) 1867 6038 w +(objects,) 2051 6038 w +(and) 2465 6038 w +(then) 2678 6038 w +(uses) 2928 6038 w +(a single, well-documented protocol to) 3181 6038 w +(exchange) 720 6158 w +(information) 1224 6158 w +(between) 1830 6158 w +(computers.) 2276 6158 w +(Unlike) 2894 6158 w +(NFS,) 3236 6158 w +(9P) 3489 6158 w +(treats) 3646 6158 w +(files) 3962 6158 w +(as) 4204 6158 w +(a) 4350 6158 w +(sequence) 4445 6158 w +(of) 4942 6158 w +(bytes) 720 6278 w +(rather) 1018 6278 w +(than) 1349 6278 w +(blocks.) 1604 6278 w +(Also) 2020 6278 w +(unlike) 2269 6278 w +(NFS,) 2604 6278 w +(9P) 2857 6278 w +(is) 3014 6278 w +(stateful:) 3133 6278 w +(clients) 3568 6278 w +(perform) 3922 6278 w +(remote) 4353 6278 w +(proce\255) 4735 6278 w +(dure) 720 6398 w +(calls) 982 6398 w +(to) 1237 6398 w +(establish) 1375 6398 w +(pointers) 1848 6398 w +(to) 2288 6398 w +(objects) 2426 6398 w +(in) 2815 6398 w +(the) 2946 6398 w +(remote) 3141 6398 w +(file) 3525 6398 w +(server.) 3716 6398 w +(These) 4118 6398 w +(pointers) 4447 6398 w +(are) 4888 6398 w +(called) 720 6518 w +(file) 1042 6518 w +(identifiers) 1232 6518 w +(or) 1761 6518 w +10 /LucidaSans-Italic f +(fids) 1902 6518 w +10 /LucidaSansUnicode00 f +(.) 2079 6518 w +(All) 2181 6518 w +(operations) 2346 6518 w +(on) 2900 6518 w +(files) 3061 6518 w +(supply) 3301 6518 w +(a) 3659 6518 w +(fid) 3752 6518 w +(to) 3919 6518 w +(identify) 4055 6518 w +(an) 4458 6518 w +(object) 4613 6518 w +(in) 4949 6518 w +(the remote file system.) 720 6638 w +(The) 970 6794 w +(9P) 1185 6794 w +(protocol) 1337 6794 w +(defines) 1775 6794 w +(17) 2163 6794 w +(messages,) 2323 6794 w +(providing) 2865 6794 w +(means) 3362 6794 w +(to) 3714 6794 w +(authenticate) 3847 6794 w +(users,) 4481 6794 w +(navi\255) 4809 6794 w +(gate) 720 6914 w +(fids) 972 6914 w +(around) 1194 6914 w +(a) 1580 6914 w +(file) 1677 6914 w +(system) 1869 6914 w +(hierarchy,) 2250 6914 w +(copy) 2772 6914 w +(fids,) 3040 6914 w +(perform) 3293 6914 w +(I/O,) 3726 6914 w +(change) 3959 6914 w +(file) 4348 6914 w +(attributes,) 4540 6914 w +(and) 720 7034 w +(create) 983 7034 w +(and) 1362 7034 w +(delete) 1626 7034 w +(files.) 2007 7034 w +(Its) 2357 7034 w +(complete) 2558 7034 w +(specification) 3088 7034 w +(is) 3783 7034 w +(in) 3947 7034 w +(Section) 4122 7034 w +(5) 4556 7034 w +(of) 4703 7034 w +(the) 4885 7034 w +(Programmer) 720 7154 w +10 /LucidaSansUnicode20 f +(\031) 1318 7154 w +10 /LucidaSansUnicode00 f +(s) 1350 7154 w +(Manual) 1438 7154 w +([9man].) 1824 7154 w +(Here) 2264 7154 w +(is) 2528 7154 w +(the) 2645 7154 w +(procedure) 2837 7154 w +(to) 3367 7154 w +(gain) 3501 7154 w +(access) 3745 7154 w +(to) 4096 7154 w +(the) 4230 7154 w +(name) 4421 7154 w +(hierar\255) 4723 7154 w +(chy) 720 7274 w +(supplied) 927 7274 w +(by) 1385 7274 w +(a) 1542 7274 w +(server.) 1639 7274 w +(A) 2042 7274 w +(file) 2153 7274 w +(server) 2346 7274 w +(connection) 2685 7274 w +(is) 3259 7274 w +(established) 3381 7274 w +(via) 3975 7274 w +(a) 4153 7274 w +(pipe) 4250 7274 w +(or) 4503 7274 w +(network) 4648 7274 w +cleartomark +showpage +saveobj restore +%%EndPage: 13 13 +%%Page: 14 14 +/saveobj save def +mark +14 pagesetup +10 /LucidaSansUnicode00 f +(\255 14 \255) 2752 480 w +(connection.) 720 840 w +(An) 1361 840 w +(initial) 1537 840 w +10 /LucidaTypewriter f +(session) 1852 840 w +10 /LucidaSansUnicode00 f +(message) 2401 840 w +(performs) 2870 840 w +(a) 3357 840 w +(bilateral) 3456 840 w +(authentication) 3894 840 w +(between) 4633 840 w +(client) 720 960 w +(and) 1024 960 w +(server.) 1244 960 w +(An) 1645 960 w +10 /LucidaTypewriter f +(attach) 1816 960 w +10 /LucidaSansUnicode00 f +(message) 2288 960 w +(then) 2752 960 w +(connects) 3009 960 w +(a) 3480 960 w +(fid) 3575 960 w +(suggested) 3744 960 w +(by) 4285 960 w +(the) 4441 960 w +(client) 4637 960 w +(to) 4942 960 w +(the) 720 1080 w +(root) 915 1080 w +(of) 1155 1080 w +(the) 1292 1080 w +(server) 1486 1080 w +(file) 1822 1080 w +(tree.) 2012 1080 w +(The) 2305 1080 w +10 /LucidaTypewriter f +(attach) 2525 1080 w +10 /LucidaSansUnicode00 f +(message) 2996 1080 w +(includes) 3459 1080 w +(the) 3901 1080 w +(identity) 4095 1080 w +(of) 4499 1080 w +(the) 4636 1080 w +(user) 4830 1080 w +(performing the attach; henceforth all fids derived from the) 720 1200 w +(root) 3603 1200 w +(fid) 3836 1200 w +(will) 3998 1200 w +(have) 4195 1200 w +(permissions) 4453 1200 w +(associated) 720 1320 w +(with) 1267 1320 w +(that) 1510 1320 w +(user.) 1738 1320 w +(Multiple) 2049 1320 w +(users) 2477 1320 w +(may) 2775 1320 w +(share) 3012 1320 w +(the) 3314 1320 w +(connection,) 3506 1320 w +(but) 4107 1320 w +(each) 4306 1320 w +(must) 4567 1320 w +(per\255) 4847 1320 w +(form an attach to establish his or her identity.) 720 1440 w +(The) 970 1596 w +10 /LucidaTypewriter f +(walk) 1186 1596 w +10 /LucidaSansUnicode00 f +(message) 1509 1596 w +(moves) 1969 1596 w +(a) 2318 1596 w +(fid) 2409 1596 w +(through) 2574 1596 w +(a) 2997 1596 w +(single) 3088 1596 w +(level) 3413 1596 w +(of) 3671 1596 w +(the) 3805 1596 w +(file) 3996 1596 w +(system) 4183 1596 w +(hierarchy.) 4559 1596 w +(The) 720 1716 w +10 /LucidaTypewriter f +(clone) 947 1716 w +10 /LucidaSansUnicode00 f +(message) 1353 1716 w +(takes) 1823 1716 w +(an) 2126 1716 w +(established) 2289 1716 w +(fid) 2887 1716 w +(and) 3062 1716 w +(produces) 3288 1716 w +(a) 3782 1716 w +(copy) 3883 1716 w +(that) 4156 1716 w +(points) 4393 1716 w +(to) 4742 1716 w +(the) 4885 1716 w +(same) 720 1836 w +(file) 1009 1836 w +(as) 1194 1836 w +(the) 1334 1836 w +(original.) 1523 1836 w +(Its) 1989 1836 w +(purpose) 2141 1836 w +(is) 2573 1836 w +(to) 2688 1836 w +(enable) 2821 1836 w +(walking) 3177 1836 w +(to) 3584 1836 w +(a) 3717 1836 w +(file) 3807 1836 w +(in) 3993 1836 w +(a) 4119 1836 w +(directory) 4209 1836 w +(without) 4675 1836 w +(losing) 720 1956 w +(the) 1057 1956 w +(fid) 1255 1956 w +(on) 1427 1956 w +(the) 1593 1956 w +(directory.) 1791 1956 w +(The) 2329 1956 w +10 /LucidaTypewriter f +(open) 2553 1956 w +10 /LucidaSansUnicode00 f +(message) 2884 1956 w +(locks) 3351 1956 w +(a) 3644 1956 w +(fid) 3742 1956 w +(to) 3913 1956 w +(a) 4053 1956 w +(specific) 4150 1956 w +(file) 4559 1956 w +(in) 4752 1956 w +(the) 4885 1956 w +(hierarchy,) 720 2076 w +(checks) 1257 2076 w +(access) 1642 2076 w +(permissions,) 2013 2076 w +(and) 2688 2076 w +(prepares) 2924 2076 w +(the) 3406 2076 w +(fid) 3617 2076 w +(for) 3802 2076 w +(I/O.) 3997 2076 w +(The) 4277 2076 w +10 /LucidaTypewriter f +(read) 4515 2076 w +10 /LucidaSansUnicode00 f +(and) 4860 2076 w +10 /LucidaTypewriter f +(write) 720 2196 w +10 /LucidaSansUnicode00 f +(messages) 1114 2196 w +(allow) 1623 2196 w +(I/O) 1908 2196 w +(at) 2102 2196 w +(arbitrary) 2228 2196 w +(offsets) 2676 2196 w +(in) 3039 2196 w +(the) 3163 2196 w +(file;) 3351 2196 w +(the) 3567 2196 w +(maximum) 3755 2196 w +(size) 4274 2196 w +(transferred) 4500 2196 w +(is) 720 2316 w +(defined) 837 2316 w +(by) 1240 2316 w +(the) 1392 2316 w +(protocol.) 1584 2316 w +(The) 2089 2316 w +10 /LucidaTypewriter f +(clunk) 2307 2316 w +10 /LucidaSansUnicode00 f +(message) 2704 2316 w +(indicates) 3165 2316 w +(the) 3635 2316 w +(client) 3828 2316 w +(has) 4130 2316 w +(no) 4336 2316 w +(further) 4497 2316 w +(use) 4871 2316 w +(for) 720 2436 w +(a) 892 2436 w +(fid.) 980 2436 w +(The) 1206 2436 w +10 /LucidaTypewriter f +(remove) 1420 2436 w +10 /LucidaSansUnicode00 f +(message) 1885 2436 w +(behaves) 2342 2436 w +(like) 2770 2436 w +10 /LucidaTypewriter f +(clunk) 2975 2436 w +10 /LucidaSansUnicode00 f +(but) 3368 2436 w +(causes) 3563 2436 w +(the) 3922 2436 w +(file) 4110 2436 w +(associated with) 4294 2436 w +(the fid to be removed and any associated resources on the server to be deallocated.) 720 2556 w +(9P) 970 2712 w +(has) 1126 2712 w +(two) 1332 2712 w +(forms:) 1545 2712 w +(RPC) 1898 2712 w +(messages) 2123 2712 w +(sent) 2636 2712 w +(on) 2880 2712 w +(a) 3042 2712 w +(pipe) 3136 2712 w +(or) 3386 2712 w +(network) 3527 2712 w +(connection) 3958 2712 w +(and) 4529 2712 w +(a) 4748 2712 w +(pro\255) 4842 2712 w +(cedural) 720 2832 w +(interface) 1114 2832 w +(within) 1575 2832 w +(the) 1908 2832 w +(kernel.) 2100 2832 w +(Since) 2503 2832 w +(kernel) 2792 2832 w +(device) 3131 2832 w +(drivers) 3474 2832 w +(are) 3843 2832 w +(directly) 4031 2832 w +(addressable,) 4425 2832 w +(there) 720 2952 w +(is) 1009 2952 w +(no) 1126 2952 w +(need) 1286 2952 w +(to) 1560 2952 w +(pass) 1695 2952 w +(messages) 1952 2952 w +(to) 2464 2952 w +(communicate) 2599 2952 w +(with) 3286 2952 w +(them;) 3528 2952 w +(instead) 3846 2952 w +(each) 4237 2952 w +(9P) 4499 2952 w +(transac\255) 4655 2952 w +(tion) 720 3072 w +(is) 942 3072 w +(implemented) 1055 3072 w +(by) 1725 3072 w +(a) 1873 3072 w +(direct) 1961 3072 w +(procedure) 2271 3072 w +(call.) 2798 3072 w +(For) 3059 3072 w +(each) 3248 3072 w +(fid,) 3505 3072 w +(the) 3699 3072 w +(kernel) 3887 3072 w +(maintains) 4222 3072 w +(a local) 4728 3072 w +(representation) 720 3192 w +(in) 1464 3192 w +(a) 1593 3192 w +(data) 1686 3192 w +(structure) 1934 3192 w +(called) 2410 3192 w +(a) 2731 3192 w +10 /LucidaSans-Italic f +(channel) 2824 3192 w +10 /LucidaSansUnicode00 f +(,) 3203 3192 w +(so) 3273 3192 w +(all) 3423 3192 w +(operations) 3574 3192 w +(on) 4128 3192 w +(files) 4289 3192 w +(performed) 4529 3192 w +(by) 720 3312 w +(the) 879 3312 w +(kernel) 1077 3312 w +(involve) 1422 3312 w +(a) 1806 3312 w +(channel) 1904 3312 w +(connected) 2324 3312 w +(to) 2866 3312 w +(that) 3007 3312 w +(fid.) 3241 3312 w +(The) 3477 3312 w +(simplest) 3701 3312 w +(example) 4153 3312 w +(is) 4609 3312 w +(a) 4732 3312 w +(user) 4830 3312 w +(process) 720 3432 w +10 /LucidaSansUnicode20 f +(\031) 1094 3432 w +10 /LucidaSansUnicode00 f +(s) 1126 3432 w +(file) 1222 3432 w +(descriptors,) 1418 3432 w +(which) 2039 3432 w +(are) 2365 3432 w +(indexes) 2562 3432 w +(into) 2985 3432 w +(an) 3219 3432 w +(array) 3381 3432 w +(of) 3670 3432 w +(channels.) 3813 3432 w +(A) 4350 3432 w +(table) 4464 3432 w +(in) 4749 3432 w +(the) 4885 3432 w +(kernel) 720 3552 w +(provides) 1056 3552 w +(a) 1506 3552 w +(list) 1595 3552 w +(of) 1775 3552 w +(entry) 1907 3552 w +(points) 2189 3552 w +(corresponding) 2525 3552 w +(one) 3261 3552 w +(to) 3473 3552 w +(one) 3604 3552 w +(with) 3816 3552 w +(the) 4054 3552 w +(9P) 4242 3552 w +(messages) 4393 3552 w +(for) 4901 3552 w +(each) 720 3672 w +(device.) 977 3672 w +(A) 1381 3672 w +(system) 1484 3672 w +(call) 1858 3672 w +(such) 2056 3672 w +(as) 2316 3672 w +10 /LucidaTypewriter f +(read) 2456 3672 w +10 /LucidaSansUnicode00 f +(from) 2778 3672 w +(the) 3044 3672 w +(user) 3233 3672 w +(translates) 3477 3672 w +(into) 3985 3672 w +(one) 4208 3672 w +(or) 4421 3672 w +(more) 4557 3672 w +(pro\255) 4842 3672 w +(cedure) 720 3792 w +(calls) 1099 3792 w +(through) 1364 3792 w +(that) 1801 3792 w +(table,) 2042 3792 w +(indexed) 2364 3792 w +(by) 2804 3792 w +(the) 2969 3792 w +(type) 3174 3792 w +(character) 3431 3792 w +(stored) 3929 3792 w +(in) 4287 3792 w +(the) 4427 3792 w +(channel:) 4631 3792 w +10 /LucidaTypewriter f +(procread) 720 3912 w +10 /LucidaSansUnicode00 f +(,) 1296 3912 w +10 /LucidaTypewriter f +(eiaread) 1376 3912 w +10 /LucidaSansUnicode00 f +(,) 1880 3912 w +(etc.) 1960 3912 w +(Each) 2216 3912 w +(call) 2486 3912 w +(takes) 2698 3912 w +(at) 3003 3912 w +(least) 3143 3912 w +(one) 3419 3912 w +(channel) 3646 3912 w +(as) 4071 3912 w +(an) 4225 3912 w +(argument.) 4390 3912 w +(A) 4971 3912 w +(special) 720 4032 w +(kernel) 1102 4032 w +(driver,) 1451 4032 w +(called) 1812 4032 w +(the) 2142 4032 w +10 /LucidaSans-Italic f +(mount) 2344 4032 w +10 /LucidaSansUnicode00 f +(driver,) 2703 4032 w +(translates) 3064 4032 w +(procedure) 3585 4032 w +(calls) 4126 4032 w +(to) 4388 4032 w +(messages,) 4533 4032 w +(that) 720 4152 w +(is,) 959 4152 w +(it) 1119 4152 w +(converts) 1233 4152 w +(local) 1692 4152 w +(procedure) 1965 4152 w +(calls) 2507 4152 w +(to) 2770 4152 w +(remote) 2916 4152 w +(ones.) 3309 4152 w +(In) 3652 4152 w +(effect,) 3792 4152 w +(this) 4147 4152 w +(special) 4375 4152 w +(driver) 4758 4152 w +(becomes) 720 4272 w +(a) 1190 4272 w +(local) 1284 4272 w +(proxy) 1548 4272 w +(for) 1865 4272 w +(the) 2043 4272 w +(files) 2237 4272 w +(served) 2478 4272 w +(by) 2836 4272 w +(a) 2990 4272 w +(remote) 3084 4272 w +(file) 3467 4272 w +(server.) 3657 4272 w +(The) 4057 4272 w +(channel) 4276 4272 w +(pointer) 4691 4272 w +(in the local call is translated to the associated fid in the transmitted message.) 720 4392 w +(The) 970 4548 w +(mount) 1185 4548 w +(driver) 1534 4548 w +(is) 1850 4548 w +(the) 1964 4548 w +(sole) 2153 4548 w +(RPC) 2384 4548 w +(mechanism) 2605 4548 w +(employed) 3191 4548 w +(by) 3698 4548 w +(the) 3847 4548 w +(system.) 4036 4548 w +(The) 4474 4548 w +(seman\255) 4690 4548 w +(tics) 720 4668 w +(of) 923 4668 w +(the) 1056 4668 w +(supplied) 1246 4668 w +(files,) 1697 4668 w +(rather) 1966 4668 w +(than) 2293 4668 w +(the) 2544 4668 w +(operations) 2734 4668 w +(performed) 3285 4668 w +(upon) 3831 4668 w +(them,) 4114 4668 w +(create) 4429 4668 w +(a) 4759 4668 w +(par\255) 4848 4668 w +(ticular) 720 4788 w +(service) 1075 4788 w +(such) 1462 4788 w +(as) 1739 4788 w +(the) 1896 4788 w +10 /LucidaTypewriter f +(cpu) 2103 4788 w +10 /LucidaSansUnicode00 f +(command.) 2371 4788 w +(The) 2965 4788 w +(mount) 3198 4788 w +(driver) 3565 4788 w +(demultiplexes) 3899 4788 w +(protocol) 4636 4788 w +(messages) 720 4908 w +(between) 1231 4908 w +(clients) 1674 4908 w +(sharing) 2025 4908 w +(a) 2423 4908 w +(communication) 2514 4908 w +(channel) 3296 4908 w +(with) 3709 4908 w +(a) 3950 4908 w +(file) 4041 4908 w +(server.) 4228 4908 w +(For) 4625 4908 w +(each) 4816 4908 w +(outgoing) 720 5028 w +(RPC) 1202 5028 w +(message,) 1435 5028 w +(the) 1937 5028 w +(mount) 2138 5028 w +(driver) 2499 5028 w +(allocates) 2827 5028 w +(a) 3297 5028 w +(buffer) 3398 5028 w +(labeled) 3740 5028 w +(by) 4138 5028 w +(a) 4300 5028 w +(small) 4402 5028 w +(unique) 4706 5028 w +(integer,) 720 5148 w +(called) 1128 5148 w +(a) 1444 5148 w +10 /LucidaSans-Italic f +(tag) 1532 5148 w +10 /LucidaSansUnicode00 f +(.) 1692 5148 w +(The) 1789 5148 w +(reply to the RPC is labeled with the same tag, which is used by) 2003 5148 w +(the mount driver to match the reply with the request.) 720 5268 w +(The) 970 5424 w +(kernel) 1209 5424 w +(representation) 1569 5424 w +(of) 2334 5424 w +(the) 2490 5424 w +(name) 2703 5424 w +(space) 3027 5424 w +(is) 3361 5424 w +(called) 3499 5424 w +(the) 3841 5424 w +10 /LucidaSans-Italic f +(mount) 4055 5424 w +(table) 4426 5424 w +10 /LucidaSansUnicode00 f +(,) 4668 5424 w +(which) 4759 5424 w +(stores) 720 5544 w +(a) 1050 5544 w +(list of bindings between channels.) 1138 5544 w +(Each entry in the mount table contains a pair) 2862 5544 w +(of) 720 5664 w +(channels:) 857 5664 w +(a) 1356 5664 w +10 /LucidaSans-Italic f +(from) 1450 5664 w +10 /LucidaSansUnicode00 f +(channel) 1725 5664 w +(and) 2141 5664 w +(a) 2360 5664 w +10 /LucidaSans-Italic f +(to) 2454 5664 w +10 /LucidaSansUnicode00 f +(channel.) 2589 5664 w +(Every) 3070 5664 w +(time) 3365 5664 w +(a) 3620 5664 w +(walk) 3715 5664 w +(succeeds) 3974 5664 w +(in) 4455 5664 w +(moving) 4586 5664 w +(a) 4985 5664 w +(channel) 720 5784 w +(to) 1141 5784 w +(a) 1283 5784 w +(new) 1382 5784 w +(location) 1621 5784 w +(in) 2050 5784 w +(the) 2185 5784 w +(name) 2384 5784 w +(space,) 2694 5784 w +(the) 3046 5784 w +(mount) 3245 5784 w +(table) 3604 5784 w +(is) 3888 5784 w +(consulted) 4012 5784 w +(to) 4528 5784 w +(see) 4670 5784 w +(if) 4876 5784 w +(a) 4985 5784 w +10 /LucidaSansUnicode20 f +(\030) 720 5904 w +10 /LucidaSansUnicode00 f +(from) 752 5904 w +10 /LucidaSansUnicode20 f +(\031) 984 5904 w +10 /LucidaSansUnicode00 f +(channel) 1058 5904 w +(matches) 1477 5904 w +(the) 1924 5904 w +(new) 2121 5904 w +(name;) 2358 5904 w +(if) 2698 5904 w +(so) 2806 5904 w +(the) 2960 5904 w +10 /LucidaSansUnicode20 f +(\030) 3157 5904 w +10 /LucidaSansUnicode00 f +(to) 3189 5904 w +10 /LucidaSansUnicode20 f +(\031) 3287 5904 w +10 /LucidaSansUnicode00 f +(channel) 3361 5904 w +(is) 3781 5904 w +(cloned) 3904 5904 w +(and) 4269 5904 w +(substituted) 4492 5904 w +(for) 720 6024 w +(the) 893 6024 w +(original.) 1082 6024 w +(Union) 1548 6024 w +(directories) 1865 6024 w +(are) 2414 6024 w +(implemented) 2600 6024 w +(by) 3271 6024 w +(converting) 3420 6024 w +(the) 3967 6024 w +10 /LucidaSansUnicode20 f +(\030) 4156 6024 w +10 /LucidaSansUnicode00 f +(to) 4188 6024 w +10 /LucidaSansUnicode20 f +(\031) 4286 6024 w +10 /LucidaSansUnicode00 f +(channel) 4352 6024 w +(into) 4763 6024 w +(a) 4985 6024 w +(list) 720 6144 w +(of) 903 6144 w +(channels:) 1038 6144 w +(a) 1535 6144 w +(successful) 1627 6144 w +(walk) 2165 6144 w +(to) 2421 6144 w +(a) 2556 6144 w +(union) 2649 6144 w +(directory) 2963 6144 w +(returns) 3432 6144 w +(a) 3820 6144 w +10 /LucidaSansUnicode20 f +(\030) 3913 6144 w +10 /LucidaSansUnicode00 f +(to) 3945 6144 w +10 /LucidaSansUnicode20 f +(\031) 4043 6144 w +10 /LucidaSansUnicode00 f +(channel) 4113 6144 w +(that) 4528 6144 w +(forms) 4757 6144 w +(the) 720 6264 w +(head) 912 6264 w +(of) 1184 6264 w +(a) 1318 6264 w +(list) 1409 6264 w +(of) 1591 6264 w +(channels,) 1725 6264 w +(each) 2221 6264 w +(representing) 2481 6264 w +(a) 3133 6264 w +(component) 3224 6264 w +(directory) 3806 6264 w +(of) 4273 6264 w +(the) 4407 6264 w +(union.) 4598 6264 w +(If) 4974 6264 w +(a) 720 6384 w +(walk) 812 6384 w +(fails) 1068 6384 w +(to) 1307 6384 w +(find) 1443 6384 w +(a) 1672 6384 w +(file) 1765 6384 w +(in) 1954 6384 w +(the) 2083 6384 w +(first) 2276 6384 w +(directory) 2509 6384 w +(of) 2978 6384 w +(the) 3114 6384 w +(union,) 3307 6384 w +(the) 3653 6384 w +(list) 3846 6384 w +(is) 4030 6384 w +(followed,) 4148 6384 w +(the) 4631 6384 w +(next) 4824 6384 w +(component cloned, and walk tried on that directory.) 720 6504 w +(Each file in Plan 9 is uniquely) 970 6660 w +(identified) 2418 6660 w +(by) 2912 6660 w +(a) 3060 6660 w +(set) 3148 6660 w +(of) 3325 6660 w +(integers:) 3456 6660 w +(the) 3915 6660 w +(type) 4103 6660 w +(of) 4344 6660 w +(the) 4475 6660 w +(channel) 4663 6660 w +(\(used) 720 6780 w +(as) 1019 6780 w +(the) 1159 6780 w +(index) 1348 6780 w +(of) 1653 6780 w +(the) 1785 6780 w +(function) 1974 6780 w +(call) 2409 6780 w +(table\),) 2607 6780 w +(the) 2946 6780 w +(server) 3135 6780 w +(or) 3465 6780 w +(device) 3600 6780 w +(number) 3940 6780 w +(distinguishing) 4350 6780 w +(the) 720 6900 w +(server) 908 6900 w +(from) 1238 6900 w +(others) 1503 6900 w +(of) 1844 6900 w +(the) 1975 6900 w +(same) 2163 6900 w +(type) 2452 6900 w +(\(decided) 2694 6900 w +(locally) 3142 6900 w +(by) 3482 6900 w +(the) 3631 6900 w +(driver\),) 3820 6900 w +(and) 4201 6900 w +(a) 4415 6900 w +10 /LucidaSans-Italic f +(qid) 4504 6900 w +10 /LucidaSansUnicode00 f +(formed) 4689 6900 w +(from) 720 7020 w +(two) 1001 7020 w +(32-bit) 1225 7020 w +(numbers) 1587 7020 w +(called) 2064 7020 w +10 /LucidaSans-Italic f +(path) 2395 7020 w +10 /LucidaSansUnicode00 f +(and) 2665 7020 w +10 /LucidaSans-Italic f +(version) 2893 7020 w +10 /LucidaSansUnicode00 f +(.) 3245 7020 w +(The) 3357 7020 w +(path) 3586 7020 w +(is) 3851 7020 w +(a) 3979 7020 w +(unique) 4082 7020 w +(file) 4464 7020 w +(number) 4663 7020 w +(assigned) 720 7140 w +(by) 1188 7140 w +(a) 1342 7140 w +(device) 1436 7140 w +(driver) 1782 7140 w +(or) 2103 7140 w +(file) 2244 7140 w +(server) 2434 7140 w +(when) 2770 7140 w +(a) 3066 7140 w +(file) 3160 7140 w +(is) 3350 7140 w +(created.) 3469 7140 w +(The) 3931 7140 w +(version) 4151 7140 w +(number) 4543 7140 w +(is) 4960 7140 w +(updated) 720 7260 w +(whenever) 1160 7260 w +(the) 1663 7260 w +(file) 1859 7260 w +(is) 2051 7260 w +(modified;) 2172 7260 w +(as) 2675 7260 w +(described) 2821 7260 w +(in) 3334 7260 w +(the) 3465 7260 w +(next) 3660 7260 w +(section,) 3916 7260 w +(it) 4335 7260 w +(can) 4441 7260 w +(be) 4649 7260 w +(used) 4808 7260 w +cleartomark +showpage +saveobj restore +%%EndPage: 14 14 +%%Page: 15 15 +/saveobj save def +mark +15 pagesetup +10 /LucidaSansUnicode00 f +(\255 15 \255) 2752 480 w +(to maintain cache coherency between clients and servers.) 720 840 w +(The) 970 996 w +(type) 1191 996 w +(and) 1439 996 w +(device) 1660 996 w +(number) 2008 996 w +(are) 2426 996 w +(analogous) 2619 996 w +(to) 3158 996 w +(UNIX) 3297 996 w +(major) 3573 996 w +(and) 3894 996 w +(minor) 4115 996 w +(device) 4442 996 w +(num\255) 4790 996 w +(bers;) 720 1116 w +(the) 998 1116 w +(qid) 1188 1116 w +(is) 1378 1116 w +(analogous) 1493 1116 w +(to) 2026 1116 w +(the) 2159 1116 w +(i-number.) 2349 1116 w +(The) 2912 1116 w +(device) 3128 1116 w +(and) 3470 1116 w +(type) 3685 1116 w +(connect) 3928 1116 w +(the) 4342 1116 w +(channel) 4531 1116 w +(to) 4942 1116 w +(a device driver and the) 720 1236 w +(qid) 1860 1236 w +(identifies) 2048 1236 w +(the) 2530 1236 w +(file) 2718 1236 w +(within) 2902 1236 w +(that) 3231 1236 w +(device.) 3455 1236 w +(If) 3827 1236 w +(the) 3926 1236 w +(file) 4114 1236 w +(recovered) 4298 1236 w +(from) 4808 1236 w +(a) 720 1356 w +(walk) 813 1356 w +(has) 1070 1356 w +(the) 1276 1356 w +(same) 1469 1356 w +(type,) 1762 1356 w +(device,) 2040 1356 w +(and) 2417 1356 w +(qid) 2635 1356 w +(path) 2827 1356 w +(as) 3081 1356 w +(an) 3224 1356 w +(entry) 3378 1356 w +(in) 3663 1356 w +(the) 3791 1356 w +(mount) 3983 1356 w +(table,) 4335 1356 w +(they) 4644 1356 w +(are) 4888 1356 w +(the) 720 1476 w +(same) 910 1476 w +(file) 1200 1476 w +(and) 1387 1476 w +(the) 1603 1476 w +(corresponding) 1794 1476 w +(substitution) 2533 1476 w +(from) 3150 1476 w +(the) 3418 1476 w +(mount) 3609 1476 w +(table) 3960 1476 w +(is) 4236 1476 w +(made.) 4352 1476 w +(This) 4719 1476 w +(is) 4960 1476 w +(how the name space is implemented.) 720 1596 w +10 /LucidaSans-Demi f +(File Caching) 720 1836 w +10 /LucidaSansUnicode00 f +(The) 970 1992 w +(9P) 1201 1992 w +(protocol) 1369 1992 w +(has) 1823 1992 w +(no) 2041 1992 w +(explicit) 2214 1992 w +(support) 2619 1992 w +(for) 3047 1992 w +(caching) 3236 1992 w +(files) 3658 1992 w +(on) 3910 1992 w +(a) 4083 1992 w +(client.) 4188 1992 w +(The) 4566 1992 w +(large) 4797 1992 w +(memory) 720 2112 w +(of) 1151 2112 w +(the) 1284 2112 w +(central) 1474 2112 w +(file) 1840 2112 w +(server) 2026 2112 w +(acts) 2358 2112 w +(as) 2587 2112 w +(a) 2728 2112 w +(shared) 2818 2112 w +(cache) 3181 2112 w +(for) 3491 2112 w +(all) 3665 2112 w +(its) 3813 2112 w +(clients,) 3964 2112 w +(which) 4345 2112 w +(reduces) 4660 2112 w +(the) 720 2232 w +(total) 917 2232 w +(amount) 1179 2232 w +(of) 1592 2232 w +(memory) 1733 2232 w +(needed) 2172 2232 w +(across) 2571 2232 w +(all) 2924 2232 w +(machines) 3080 2232 w +(in) 3582 2232 w +(the) 3716 2232 w +(network.) 3914 2232 w +(Nonetheless,) 4413 2232 w +(there) 720 2352 w +(are) 1005 2352 w +(sound) 1190 2352 w +(reasons) 1522 2352 w +(to) 1932 2352 w +(cache) 2063 2352 w +(files on the client, such as a slow connection to the file) 2371 2352 w +(server.) 720 2472 w +(The) 970 2628 w +(version) 1188 2628 w +(field) 1577 2628 w +(of) 1828 2628 w +(the) 1963 2628 w +(qid) 2155 2628 w +(is) 2347 2628 w +(changed) 2464 2628 w +(whenever) 2912 2628 w +(the) 3411 2628 w +(file) 3603 2628 w +(is) 3791 2628 w +(modified,) 3908 2628 w +(which) 4408 2628 w +(makes) 4727 2628 w +(it) 720 2748 w +(possible) 826 2748 w +(to) 1269 2748 w +(do) 1407 2748 w +(some) 1571 2748 w +(weakly) 1872 2748 w +(coherent) 2239 2748 w +(forms) 2705 2748 w +(of) 3027 2748 w +(caching.) 3164 2748 w +(The) 3639 2748 w +(most) 3859 2748 w +(important) 4140 2748 w +(is) 4657 2748 w +(client) 4776 2748 w +(caching) 720 2868 w +(of) 1135 2868 w +(text) 1276 2868 w +(and) 1510 2868 w +(data) 1733 2868 w +(segments) 1986 2868 w +(of) 2497 2868 w +(executable) 2638 2868 w +(files.) 3207 2868 w +(When) 3516 2868 w +(a) 3825 2868 w +(process) 3923 2868 w +10 /LucidaTypewriter f +(execs) 4340 2868 w +10 /LucidaSansUnicode00 f +(a) 4743 2868 w +(pro\255) 4842 2868 w +(gram,) 720 2988 w +(the) 1043 2988 w +(file) 1238 2988 w +(is) 1429 2988 w +(re-opened) 1549 2988 w +(and) 2105 2988 w +(the) 2325 2988 w +(qid) 2520 2988 w +10 /LucidaSansUnicode20 f +(\031) 2675 2988 w +10 /LucidaSansUnicode00 f +(s) 2707 2988 w +(version) 2798 2988 w +(is) 3189 2988 w +(compared) 3308 2988 w +(with) 3830 2988 w +(that) 4074 2988 w +(in) 4304 2988 w +(the) 4434 2988 w +(cache;) 4628 2988 w +(if) 4974 2988 w +(they) 720 3108 w +(match,) 962 3108 w +(the) 1327 3108 w +(local) 1517 3108 w +(copy) 1777 3108 w +(is) 2039 3108 w +(used.) 2154 3108 w +(The) 2485 3108 w +(same) 2701 3108 w +(method) 2991 3108 w +(can) 3398 3108 w +(be) 3601 3108 w +(used) 3755 3108 w +(to) 4022 3108 w +(build) 4155 3108 w +(a) 4436 3108 w +(local) 4527 3108 w +(cach\255) 4788 3108 w +(ing) 720 3228 w +(file) 922 3228 w +(server.) 1122 3228 w +(This) 1532 3228 w +(user-level) 1786 3228 w +(server) 2325 3228 w +(interposes) 2671 3228 w +(on) 3227 3228 w +(the) 3398 3228 w +(9P) 3601 3228 w +(connection) 3767 3228 w +(to) 4347 3228 w +(the) 4493 3228 w +(remote) 4696 3228 w +(server) 720 3348 w +(and) 1066 3348 w +(monitors) 1295 3348 w +(the) 1779 3348 w +(traffic,) 1983 3348 w +(copying) 2351 3348 w +(data) 2780 3348 w +(to) 3039 3348 w +(a) 3186 3348 w +(local) 3290 3348 w +(disk.) 3564 3348 w +(When) 3878 3348 w +(it) 4193 3348 w +(sees) 4308 3348 w +(a) 4572 3348 w +(read) 4677 3348 w +(of) 4942 3348 w +(known) 720 3468 w +(data,) 1086 3468 w +(it) 1374 3468 w +(answers) 1486 3468 w +(directly,) 1925 3468 w +(while) 2361 3468 w +(writes) 2660 3468 w +(are) 2997 3468 w +(passed) 3195 3468 w +(on) 3580 3468 w +(immediately) 3748 3468 w +10 /LucidaSansUnicode20 f +(\024) 4340 3468 w +10 /LucidaSansUnicode00 f +(the) 4440 3468 w +(cache) 4640 3468 w +(is) 4960 3468 w +(write-through) 720 3588 w +10 /LucidaSansUnicode20 f +(\024) 1405 3588 w +10 /LucidaSansUnicode00 f +(to) 1505 3588 w +(keep) 1637 3588 w +(the) 1904 3588 w +(central) 2093 3588 w +(copy) 2458 3588 w +(up) 2719 3588 w +(to) 2878 3588 w +(date.) 3010 3588 w +(This) 3319 3588 w +(is) 3558 3588 w +(transparent) 3673 3588 w +(to) 4268 3588 w +(processes) 4401 3588 w +(on) 4917 3588 w +(the) 720 3708 w +(terminal) 916 3708 w +(and) 1359 3708 w +(requires) 1580 3708 w +(no) 2020 3708 w +(change) 2184 3708 w +(to) 2573 3708 w +(9P;) 2712 3708 w +(it) 2902 3708 w +(works) 3008 3708 w +(well) 3336 3708 w +(on) 3567 3708 w +(home) 3730 3708 w +(machines) 4042 3708 w +(connected) 4541 3708 w +(over) 720 3828 w +(serial) 980 3828 w +(lines.) 1291 3828 w +(A) 1632 3828 w +(similar) 1751 3828 w +(method) 2128 3828 w +(can) 2550 3828 w +(be) 2768 3828 w +(applied) 2937 3828 w +(to) 3345 3828 w +(build) 3493 3828 w +(a) 3790 3828 w +(general) 3896 3828 w +(client) 4308 3828 w +(cache) 4623 3828 w +(in) 4949 3828 w +(unused local memory, but this has not been done in Plan 9.) 720 3948 w +10 /LucidaSans-Demi f +(Networks and Communication Devices) 720 4188 w +10 /LucidaSansUnicode00 f +(Network) 970 4344 w +(interfaces) 1424 4344 w +(are) 1949 4344 w +(kernel-resident) 2151 4344 w +(file) 2956 4344 w +(systems,) 3157 4344 w +(analogous) 3630 4344 w +(to) 4178 4344 w +(the) 4326 4344 w +(EIA) 4531 4344 w +(device) 4733 4344 w +(described) 720 4464 w +(earlier.) 1237 4464 w +(Call) 1652 4464 w +(setup) 1878 4464 w +(and) 2191 4464 w +(shutdown) 2415 4464 w +(are) 2934 4464 w +(achieved) 3129 4464 w +(by) 3596 4464 w +(writing) 3754 4464 w +(text) 4134 4464 w +(strings) 4368 4464 w +(to) 4744 4464 w +(the) 4885 4464 w +(control) 720 4584 w +(file) 1101 4584 w +(associated) 1292 4584 w +(with) 1841 4584 w +(the) 2086 4584 w +(device;) 2281 4584 w +(information) 2660 4584 w +(is) 3267 4584 w +(sent) 3387 4584 w +(and) 3633 4584 w +(received) 3853 4584 w +(by) 4297 4584 w +(reading) 4452 4584 w +(and) 4860 4584 w +(writing) 720 4704 w +(the) 1098 4704 w +(data) 1294 4704 w +(file.) 1545 4704 w +(The) 1801 4704 w +(structure) 2023 4704 w +(and) 2502 4704 w +(semantics) 2723 4704 w +(of) 3249 4704 w +(the) 3387 4704 w +(devices) 3582 4704 w +(is) 3980 4704 w +(common) 4100 4704 w +(to) 4561 4704 w +(all) 4699 4704 w +(net\255) 4852 4704 w +(works) 720 4824 w +(so,) 1052 4824 w +(other) 1240 4824 w +(than) 1542 4824 w +(a) 1803 4824 w +(file) 1903 4824 w +(name) 2099 4824 w +(substitution,) 2410 4824 w +(the) 3068 4824 w +(same) 3268 4824 w +(procedure) 3568 4824 w +(makes) 4107 4824 w +(a) 4465 4824 w +(call) 4565 4824 w +(using) 4774 4824 w +(TCP over Ethernet as URP over Datakit [Fra80].) 720 4944 w +(This example illustrates the structure of the TCP device:) 970 5100 w +9 /LucidaTypewriter f +(%) 1008 5270 w +(ls) 1138 5270 w +(-lp) 1333 5270 w +(/net/tcp) 1593 5270 w +(d-r-xr-xr-x) 1008 5380 w +(I) 1788 5380 w +(0) 1918 5380 w +(bootes) 2048 5380 w +(bootes) 2503 5380 w +(0) 2958 5380 w +(Feb) 3088 5380 w +(23) 3348 5380 w +(20:20) 3543 5380 w +(0) 3933 5380 w +(d-r-xr-xr-x) 1008 5490 w +(I) 1788 5490 w +(0) 1918 5490 w +(bootes) 2048 5490 w +(bootes) 2503 5490 w +(0) 2958 5490 w +(Feb) 3088 5490 w +(23) 3348 5490 w +(20:20) 3543 5490 w +(1) 3933 5490 w +(--rw-rw-rw-) 1008 5600 w +(I) 1788 5600 w +(0) 1918 5600 w +(bootes) 2048 5600 w +(bootes) 2503 5600 w +(0) 2958 5600 w +(Feb) 3088 5600 w +(23) 3348 5600 w +(20:20) 3543 5600 w +(clone) 3933 5600 w +(%) 1008 5710 w +(ls) 1138 5710 w +(-lp) 1333 5710 w +(/net/tcp/0) 1593 5710 w +(--rw-rw----) 1008 5820 w +(I) 1788 5820 w +(0) 1918 5820 w +(rob) 2048 5820 w +(bootes) 2503 5820 w +(0) 2958 5820 w +(Feb) 3088 5820 w +(23) 3348 5820 w +(20:20) 3543 5820 w +(ctl) 3933 5820 w +(--rw-rw----) 1008 5930 w +(I) 1788 5930 w +(0) 1918 5930 w +(rob) 2048 5930 w +(bootes) 2503 5930 w +(0) 2958 5930 w +(Feb) 3088 5930 w +(23) 3348 5930 w +(20:20) 3543 5930 w +(data) 3933 5930 w +(--rw-rw----) 1008 6040 w +(I) 1788 6040 w +(0) 1918 6040 w +(rob) 2048 6040 w +(bootes) 2503 6040 w +(0) 2958 6040 w +(Feb) 3088 6040 w +(23) 3348 6040 w +(20:20) 3543 6040 w +(listen) 3933 6040 w +(--r--r--r--) 1008 6150 w +(I) 1788 6150 w +(0) 1918 6150 w +(bootes) 2048 6150 w +(bootes) 2503 6150 w +(0) 2958 6150 w +(Feb) 3088 6150 w +(23) 3348 6150 w +(20:20) 3543 6150 w +(local) 3933 6150 w +(--r--r--r--) 1008 6260 w +(I) 1788 6260 w +(0) 1918 6260 w +(bootes) 2048 6260 w +(bootes) 2503 6260 w +(0) 2958 6260 w +(Feb) 3088 6260 w +(23) 3348 6260 w +(20:20) 3543 6260 w +(remote) 3933 6260 w +(--r--r--r--) 1008 6370 w +(I) 1788 6370 w +(0) 1918 6370 w +(bootes) 2048 6370 w +(bootes) 2503 6370 w +(0) 2958 6370 w +(Feb) 3088 6370 w +(23) 3348 6370 w +(20:20) 3543 6370 w +(status) 3933 6370 w +(%) 1008 6480 w +10 /LucidaSansUnicode00 f +(The) 720 6660 w +(top) 941 6660 w +(directory,) 1142 6660 w +10 /LucidaTypewriter f +(/net/tcp) 1645 6660 w +10 /LucidaSansUnicode00 f +(,) 2221 6660 w +(contains) 2293 6660 w +(a) 2741 6660 w +10 /LucidaTypewriter f +(clone) 2837 6660 w +10 /LucidaSansUnicode00 f +(file) 3238 6660 w +(and) 3430 6660 w +(a) 3651 6660 w +(directory) 3747 6660 w +(for) 4219 6660 w +(each) 4399 6660 w +(connec\255) 4664 6660 w +(tion,) 720 6780 w +(numbered) 976 6780 w +10 /LucidaTypewriter f +(0) 1507 6780 w +10 /LucidaSansUnicode00 f +(to) 1614 6780 w +10 /LucidaSans-Italic f +(n) 1747 6780 w +10 /LucidaSansUnicode00 f +(.) 1809 6780 w +(Each) 1908 6780 w +(connection) 2165 6780 w +(directory) 2732 6780 w +(corresponds) 3198 6780 w +(to) 3834 6780 w +(an) 3967 6780 w +(TCP/IP) 4118 6780 w +(connection.) 4476 6780 w +(Opening) 720 6900 w +10 /LucidaTypewriter f +(clone) 1164 6900 w +10 /LucidaSansUnicode00 f +(reserves an unused connection and) 1556 6900 w +(returns) 3306 6900 w +(its) 3689 6900 w +(control) 3839 6900 w +(file.) 4214 6900 w +(Reading) 4462 6900 w +(the) 4885 6900 w +(control) 720 7020 w +(file returns the textual connection number, so the user process can construct the) 1095 7020 w +(full) 720 7140 w +(name) 939 7140 w +(of) 1267 7140 w +(the) 1427 7140 w +(newly) 1644 7140 w +(allocated) 1982 7140 w +(connection) 2481 7140 w +(directory.) 3076 7140 w +(The) 3634 7140 w +10 /LucidaTypewriter f +(local) 3878 7140 w +10 /LucidaSansUnicode00 f +(,) 4238 7140 w +10 /LucidaTypewriter f +(remote) 4333 7140 w +10 /LucidaSansUnicode00 f +(,) 4765 7140 w +(and) 4860 7140 w +10 /LucidaTypewriter f +(status) 720 7260 w +10 /LucidaSansUnicode00 f +(files) 1194 7260 w +(are) 1438 7260 w +(diagnostic;) 1632 7260 w +(for) 2206 7260 w +(example,) 2387 7260 w +10 /LucidaTypewriter f +(remote) 2873 7260 w +10 /LucidaSansUnicode00 f +(contains) 3346 7260 w +(the) 3795 7260 w +(address) 3991 7260 w +(\(for) 4412 7260 w +(TCP,) 4625 7260 w +(the) 4885 7260 w +cleartomark +showpage +saveobj restore +%%EndPage: 15 15 +%%Page: 16 16 +/saveobj save def +mark +16 pagesetup +10 /LucidaSansUnicode00 f +(\255 16 \255) 2752 480 w +(IP address and port number\) of the remote side.) 720 840 w +(A) 970 996 w +(call) 1076 996 w +(is) 1277 996 w +(initiated) 1394 996 w +(by) 1828 996 w +(writing) 1980 996 w +(a) 2354 996 w +(connect) 2446 996 w +(message) 2863 996 w +(with) 3325 996 w +(a) 3568 996 w +(network-specific) 3661 996 w +(address) 4516 996 w +(as) 4934 996 w +(its) 720 1116 w +(argument;) 875 1116 w +(for) 1412 1116 w +(example,) 1588 1116 w +(to) 2070 1116 w +(open) 2205 1116 w +(a) 2484 1116 w +(Telnet) 2576 1116 w +(session) 2916 1116 w +(\(port) 3314 1116 w +(23\)) 3586 1116 w +(to) 3782 1116 w +(a) 3917 1116 w +(remote) 4009 1116 w +(machine) 4390 1116 w +(with) 4835 1116 w +(IP address 135.104.9.52, the string is:) 720 1236 w +9 /LucidaTypewriter f +(connect) 1008 1406 w +(135.104.9.52!23) 1528 1406 w +10 /LucidaSansUnicode00 f +(The) 720 1586 w +(write) 937 1586 w +(to) 1213 1586 w +(the) 1347 1586 w +(control) 1538 1586 w +(file) 1916 1586 w +(blocks) 2103 1586 w +(until) 2452 1586 w +(the) 2707 1586 w +(connection) 2898 1586 w +(is) 3466 1586 w +(established;) 3582 1586 w +(if) 4203 1586 w +(the) 4306 1586 w +(destination) 4498 1586 w +(is) 720 1706 w +(unreachable,) 859 1706 w +(the) 1541 1706 w +(write) 1754 1706 w +(returns) 2052 1706 w +(an) 2460 1706 w +(error.) 2635 1706 w +(Once) 2997 1706 w +(the) 3302 1706 w +(connection) 3515 1706 w +(is) 4105 1706 w +(established,) 4243 1706 w +(the) 4885 1706 w +10 /LucidaTypewriter f +(telnet) 720 1826 w +10 /LucidaSansUnicode00 f +(application) 1197 1826 w +(reads) 1776 1826 w +(and) 2087 1826 w +(writes) 2312 1826 w +(the) 2648 1826 w +10 /LucidaTypewriter f +(data) 2849 1826 w +10 /LucidaSansUnicode00 f +(file) 3183 1826 w +(to) 3380 1826 w +(talk) 3524 1826 w +(to) 3749 1826 w +(the) 3893 1826 w +(remote) 4094 1826 w +(Telnet) 4484 1826 w +(dae\255) 4833 1826 w +(mon.) 720 1946 w +(On the other end, the Telnet daemon would start by writing) 1032 1946 w +9 /LucidaTypewriter f +(announce) 1008 2116 w +(23) 1593 2116 w +10 /LucidaSansUnicode00 f +(to) 720 2296 w +(its) 855 2296 w +(control) 1010 2296 w +(file) 1390 2296 w +(to) 1579 2296 w +(indicate) 1715 2296 w +(its) 2135 2296 w +(willingness) 2290 2296 w +(to) 2865 2296 w +(receive) 3001 2296 w +(calls) 3380 2296 w +(to) 3633 2296 w +(this) 3769 2296 w +(port.) 3986 2296 w +(Such) 4290 2296 w +(a) 4557 2296 w +(daemon) 4650 2296 w +(is called a) 720 2416 w +10 /LucidaSans-Italic f +(listener) 1234 2416 w +10 /LucidaSansUnicode00 f +(in Plan 9.) 1627 2416 w +(A) 970 2572 w +(uniform) 1083 2572 w +(structure) 1512 2572 w +(for) 1994 2572 w +(network) 2177 2572 w +(devices) 2613 2572 w +(cannot) 3015 2572 w +(hide) 3387 2572 w +(all) 3641 2572 w +(the) 3799 2572 w +(details) 3999 2572 w +(of) 4364 2572 w +(addressing) 4507 2572 w +(and) 720 2692 w +(communication) 943 2692 w +(for) 1732 2692 w +(dissimilar) 1914 2692 w +(networks.) 2427 2692 w +(For) 2977 2692 w +(example,) 3175 2692 w +(Datakit) 3662 2692 w +(uses) 4050 2692 w +(textual,) 4312 2692 w +(hierar\255) 4723 2692 w +(chical) 720 2812 w +(addresses) 1031 2812 w +(unlike) 1552 2812 w +(IP) 1882 2812 w +10 /LucidaSansUnicode20 f +(\031) 1966 2812 w +10 /LucidaSansUnicode00 f +(s) 1998 2812 w +(32-bit) 2083 2812 w +(addresses,) 2430 2812 w +(so) 2983 2812 w +(an) 3129 2812 w +(application) 3280 2812 w +(given) 3848 2812 w +(a) 4144 2812 w +(control) 4234 2812 w +(file) 4611 2812 w +(must) 4797 2812 w +(still) 720 2932 w +(know) 947 2932 w +(what) 1257 2932 w +(network) 1540 2932 w +(it) 1984 2932 w +(represents.) 2102 2932 w +(Rather) 2732 2932 w +(than) 3098 2932 w +(make) 3366 2932 w +(every) 3680 2932 w +(application) 3989 2932 w +(know) 4575 2932 w +(the) 4885 2932 w +(addressing) 720 3052 w +(of) 1300 3052 w +(every) 1445 3052 w +(network,) 1749 3052 w +(Plan) 2220 3052 w +(9) 2468 3052 w +(hides) 2578 3052 w +(these) 2886 3052 w +(details) 3195 3052 w +(in) 3562 3052 w +(a) 3701 3052 w +10 /LucidaSans-Italic f +(connection) 3804 3052 w +(server) 4372 3052 w +10 /LucidaSansUnicode00 f +(,) 4677 3052 w +(called) 4757 3052 w +10 /LucidaTypewriter f +(cs) 720 3172 w +10 /LucidaSansUnicode00 f +(.) 864 3172 w +10 /LucidaTypewriter f +(Cs) 965 3172 w +10 /LucidaSansUnicode00 f +(is) 1146 3172 w +(a) 1263 3172 w +(file) 1355 3172 w +(system) 1543 3172 w +(mounted) 1920 3172 w +(in) 2391 3172 w +(a) 2519 3172 w +(known) 2611 3172 w +(place.) 2968 3172 w +(It) 3323 3172 w +(supplies) 3426 3172 w +(a) 3867 3172 w +(single) 3959 3172 w +(control) 4284 3172 w +(file) 4662 3172 w +(that) 4849 3172 w +(an) 720 3292 w +(application) 885 3292 w +(uses) 1467 3292 w +(to) 1735 3292 w +(discover) 1881 3292 w +(how) 2333 3292 w +(to) 2581 3292 w +(connect) 2728 3292 w +(to) 3157 3292 w +(a) 3304 3292 w +(host.) 3408 3292 w +(The) 3732 3292 w +(application) 3962 3292 w +(writes) 4545 3292 w +(the) 4885 3292 w +(symbolic) 720 3412 w +(address) 1201 3412 w +(and) 1633 3412 w +(service) 1865 3412 w +(name) 2253 3412 w +(for) 2571 3412 w +(the) 2762 3412 w +(connection) 2969 3412 w +(it) 3553 3412 w +(wishes) 3671 3412 w +(to) 4049 3412 w +(make,) 4198 3412 w +(and) 4543 3412 w +(reads) 4774 3412 w +(back) 720 3532 w +(the) 985 3532 w +(name) 1178 3532 w +(of) 1482 3532 w +(the) 1618 3532 w +10 /LucidaTypewriter f +(clone) 1811 3532 w +10 /LucidaSansUnicode00 f +(file) 2209 3532 w +(to) 2398 3532 w +(open) 2534 3532 w +(and) 2814 3532 w +(the) 3032 3532 w +(address) 3225 3532 w +(to) 3644 3532 w +(present) 3781 3532 w +(to) 4186 3532 w +(it.) 4323 3532 w +(If) 4492 3532 w +(there) 4597 3532 w +(are) 4888 3532 w +(multiple) 720 3652 w +(networks) 1163 3652 w +(between) 1651 3652 w +(the) 2103 3652 w +(machines,) 2303 3652 w +10 /LucidaTypewriter f +(cs) 2839 3652 w +10 /LucidaSansUnicode00 f +(presents) 3028 3652 w +(a) 3490 3652 w +(list) 3590 3652 w +(of) 3781 3652 w +(possible) 3924 3652 w +(networks) 4372 3652 w +(and) 4860 3652 w +(addresses) 720 3772 w +(to) 1240 3772 w +(be) 1371 3772 w +(tried) 1523 3772 w +(in) 1782 3772 w +(sequence;) 1906 3772 w +(it) 2428 3772 w +(uses) 2527 3772 w +(heuristics) 2780 3772 w +(to) 3282 3772 w +(decide) 3414 3772 w +(the) 3766 3772 w +(order.) 3955 3772 w +(For) 4315 3772 w +(instance,) 4505 3772 w +(it) 4974 3772 w +(presents the highest-bandwidth choice first.) 720 3892 w +(A) 970 4048 w +(single) 1080 4048 w +(library) 1411 4048 w +(function) 1763 4048 w +(called) 2206 4048 w +10 /LucidaTypewriter f +(dial) 2531 4048 w +10 /LucidaSansUnicode00 f +(talks) 2861 4048 w +(to) 3133 4048 w +10 /LucidaTypewriter f +(cs) 3273 4048 w +10 /LucidaSansUnicode00 f +(to) 3459 4048 w +(establish) 3599 4048 w +(the) 4074 4048 w +(connection.) 4271 4048 w +(An) 4909 4048 w +(application) 720 4168 w +(that) 1293 4168 w +(uses) 1523 4168 w +10 /LucidaTypewriter f +(dial) 1781 4168 w +10 /LucidaSansUnicode00 f +(needs) 2107 4168 w +(no) 2433 4168 w +(changes,) 2594 4168 w +(not) 3063 4168 w +(even) 3261 4168 w +(recompilation,) 3525 4168 w +(to) 4262 4168 w +(adapt) 4398 4168 w +(to) 4709 4168 w +(new) 4845 4168 w +(networks; the interface to) 720 4288 w +10 /LucidaTypewriter f +(cs) 2000 4288 w +10 /LucidaSansUnicode00 f +(hides the details.) 2176 4288 w +(The) 970 4444 w +(uniform) 1185 4444 w +(structure) 1604 4444 w +(for) 2076 4444 w +(networks) 2249 4444 w +(in) 2726 4444 w +(Plan) 2851 4444 w +(9) 3086 4444 w +(makes) 3183 4444 w +(the) 3531 4444 w +10 /LucidaTypewriter f +(import) 3721 4444 w +10 /LucidaSansUnicode00 f +(command) 4188 4444 w +(all) 4701 4444 w +(that) 4849 4444 w +(is needed to construct gateways.) 720 4564 w +10 /LucidaSans-Demi f +(Kernel structure for networks) 720 4804 w +10 /LucidaSansUnicode00 f +(The) 970 4960 w +(kernel) 1214 4960 w +(plumbing) 1579 4960 w +(used) 2105 4960 w +(to) 2400 4960 w +(build) 2561 4960 w +(Plan) 2870 4960 w +(9) 3134 4960 w +(communications) 3260 4960 w +(channels) 4121 4960 w +(is) 4613 4960 w +(called) 4757 4960 w +10 /LucidaSans-Italic f +(streams) 720 5080 w +10 /LucidaSansUnicode00 f +([Rit84][Presotto].) 1155 5080 w +(A) 2049 5080 w +(stream) 2162 5080 w +(is) 2539 5080 w +(a) 2663 5080 w +(bidirectional) 2761 5080 w +(channel) 3409 5080 w +(connecting) 3829 5080 w +(a) 4405 5080 w +(physical) 4503 5080 w +(or) 4938 5080 w +(pseudo-device to a user process.) 720 5200 w +(The user process inserts) 2402 5200 w +(and) 3623 5200 w +(removes) 3836 5200 w +(data) 4279 5200 w +(at) 4522 5200 w +(one) 4647 5200 w +(end) 4859 5200 w +(of) 720 5320 w +(the) 851 5320 w +(stream;) 1039 5320 w +(a) 1437 5320 w +(kernel) 1525 5320 w +(process) 1860 5320 w +(acting) 2267 5320 w +(on) 2596 5320 w +(behalf of a device operates at the other end.) 2752 5320 w +(A) 4971 5320 w +(stream) 720 5440 w +(comprises) 1122 5440 w +(a) 1688 5440 w +(linear) 1813 5440 w +(list) 2155 5440 w +(of) 2371 5440 w +10 /LucidaSans-Italic f +(processing) 2539 5440 w +(modules) 3128 5440 w +10 /LucidaSansUnicode00 f +(.) 3532 5440 w +(Each) 3666 5440 w +(module) 3958 5440 w +(has) 4392 5440 w +(both) 4630 5440 w +(an) 4923 5440 w +(upstream) 720 5560 w +(\(toward) 1214 5560 w +(the) 1616 5560 w +(process\)) 1806 5560 w +(and) 2248 5560 w +(downstream) 2463 5560 w +(\(toward) 3094 5560 w +(the) 3496 5560 w +(device\)) 3686 5560 w +10 /LucidaSans-Italic f +(put) 4061 5560 w +(routine) 4257 5560 w +10 /LucidaSansUnicode00 f +(.) 4606 5560 w +(Calling) 4705 5560 w +(the) 720 5680 w +(put) 913 5680 w +(routine) 1113 5680 w +(of) 1499 5680 w +(the) 1636 5680 w +(module) 1830 5680 w +(on) 2233 5680 w +(either) 2395 5680 w +(end) 2715 5680 w +(of) 2935 5680 w +(the) 3072 5680 w +(stream) 3266 5680 w +(inserts) 3638 5680 w +(data) 4004 5680 w +(into) 4253 5680 w +(the) 4481 5680 w +(stream.) 4675 5680 w +(Each) 720 5800 w +(module) 984 5800 w +(calls) 1390 5800 w +(the) 1647 5800 w +(succeeding) 1844 5800 w +(one) 2429 5800 w +(to) 2650 5800 w +(send) 2790 5800 w +(data) 3064 5800 w +(up) 3316 5800 w +(or) 3483 5800 w +(down) 3627 5800 w +(the) 3932 5800 w +(stream.) 4129 5800 w +(Like) 4568 5800 w +(UNIX) 4805 5800 w +(streams [Rit84], Plan 9 streams can be dynamically configured.) 720 5920 w +10 /LucidaSans-Demi f +(The IL Protocol) 720 6160 w +10 /LucidaSansUnicode00 f +(The) 970 6316 w +(9P) 1193 6316 w +(protocol) 1353 6316 w +(must) 1800 6316 w +(run) 2086 6316 w +(above) 2294 6316 w +(a) 2624 6316 w +(reliable) 2722 6316 w +(transport) 3123 6316 w +(protocol) 3614 6316 w +(with) 4061 6316 w +(delimited) 4309 6316 w +(mes\255) 4807 6316 w +(sages.) 720 6436 w +(9P) 1121 6436 w +(has) 1301 6436 w +(no) 1531 6436 w +(mechanism) 1716 6436 w +(to) 2330 6436 w +(recover) 2490 6436 w +(from) 2910 6436 w +(transmission) 3204 6436 w +(errors) 3888 6436 w +(and) 4241 6436 w +(the) 4483 6436 w +(system) 4700 6436 w +(assumes) 720 6556 w +(that) 1175 6556 w +(each) 1403 6556 w +(read) 1664 6556 w +(from) 1916 6556 w +(a) 2185 6556 w +(communication) 2277 6556 w +(channel) 3060 6556 w +(will) 3474 6556 w +(return) 3675 6556 w +(a) 4011 6556 w +(single) 4103 6556 w +(9P) 4429 6556 w +(message;) 4584 6556 w +(it) 720 6676 w +(does) 821 6676 w +(not) 1087 6676 w +(parse) 1282 6676 w +(the) 1583 6676 w +(data) 1773 6676 w +(stream) 2018 6676 w +(to) 2386 6676 w +(discover) 2518 6676 w +(message) 2956 6676 w +(boundaries.) 3414 6676 w +(Pipes) 4055 6676 w +(and) 4343 6676 w +(some) 4557 6676 w +(net\255) 4852 6676 w +(work) 720 6796 w +(protocols) 993 6796 w +(already) 1484 6796 w +(have) 1871 6796 w +(these) 2132 6796 w +(properties) 2430 6796 w +(but) 2964 6796 w +(the) 3162 6796 w +(standard) 3354 6796 w +(IP) 3818 6796 w +(protocols) 3939 6796 w +(do) 4431 6796 w +(not.) 4592 6796 w +(TCP) 4853 6796 w +(does) 720 6916 w +(not) 985 6916 w +(delimit) 1179 6916 w +(messages,) 1549 6916 w +(while) 2090 6916 w +(UDP) 2377 6916 w +([RFC768]) 2610 6916 w +(does) 3085 6916 w +(not) 3350 6916 w +(provide) 3544 6916 w +(reliable) 3943 6916 w +(in-order) 4334 6916 w +(deliv\255) 4778 6916 w +(ery.) 720 7036 w +(We) 970 7192 w +(designed) 1146 7192 w +(a) 1622 7192 w +(new) 1711 7192 w +(protocol,) 1940 7192 w +(called) 2410 7192 w +(IL) 2727 7192 w +(\(Internet) 2844 7192 w +(Link\),) 3292 7192 w +(to) 3594 7192 w +(transmit) 3727 7192 w +(9P) 4167 7192 w +(messages) 4320 7192 w +(over) 4830 7192 w +(IP.) 720 7312 w +(It) 912 7312 w +(is) 1022 7312 w +(a) 1146 7312 w +(connection-based) 1245 7312 w +(protocol) 2167 7312 w +(that) 2615 7312 w +(provides) 2850 7312 w +(reliable) 3310 7312 w +(transmission) 3712 7312 w +(of) 4378 7312 w +(sequenced) 4520 7312 w +cleartomark +showpage +saveobj restore +%%EndPage: 16 16 +%%Page: 17 17 +/saveobj save def +mark +17 pagesetup +10 /LucidaSansUnicode00 f +(\255 17 \255) 2752 480 w +(messages) 720 840 w +(between) 1244 840 w +(machines.) 1700 840 w +(Since) 2272 840 w +(a) 2573 840 w +(process) 2677 840 w +(can) 3100 840 w +(have) 3318 840 w +(only) 3593 840 w +(a) 3847 840 w +(single) 3952 840 w +(outstanding) 4291 840 w +(9P) 4922 840 w +(request,) 720 960 w +(there) 1163 960 w +(is) 1460 960 w +(no) 1585 960 w +(need) 1753 960 w +(for) 2035 960 w +(flow) 2218 960 w +(control) 2466 960 w +(in) 2852 960 w +(IL.) 2987 960 w +(Like) 3177 960 w +(TCP,) 3417 960 w +(IL) 3680 960 w +(has) 3806 960 w +(adaptive) 4018 960 w +(timeouts:) 4472 960 w +(it) 4974 960 w +(scales) 720 1080 w +(acknowledge) 1052 1080 w +(and) 1721 1080 w +(retransmission) 1940 1080 w +(times) 2698 1080 w +(to) 3003 1080 w +(match) 3140 1080 w +(the) 3477 1080 w +(network) 3671 1080 w +(speed.) 4102 1080 w +(This) 4494 1080 w +(allows) 4738 1080 w +(the) 720 1200 w +(protocol) 915 1200 w +(to) 1359 1200 w +(perform) 1497 1200 w +(well) 1929 1200 w +(on) 2160 1200 w +(both) 2323 1200 w +(the) 2586 1200 w +(Internet) 2781 1200 w +(and) 3201 1200 w +(on) 3421 1200 w +(local) 3584 1200 w +(Ethernets.) 3848 1200 w +(Also,) 4407 1200 w +(IL) 4688 1200 w +(does) 4809 1200 w +(no) 720 1320 w +(blind) 902 1320 w +(retransmission,) 1207 1320 w +(to) 2017 1320 w +(avoid) 2174 1320 w +(adding) 2494 1320 w +(to) 2888 1320 w +(the) 3046 1320 w +(congestion) 3261 1320 w +(of) 3853 1320 w +(busy) 4011 1320 w +(networks.) 4299 1320 w +(Full) 4866 1320 w +(details are in another paper [PrWi95].) 720 1440 w +(In) 970 1596 w +(Plan) 1102 1596 w +(9,) 1344 1596 w +(the) 1480 1596 w +(implementation) 1676 1596 w +(of) 2479 1596 w +(IL) 2618 1596 w +(is) 2741 1596 w +(smaller) 2862 1596 w +(and) 3257 1596 w +(faster) 3479 1596 w +(than) 3798 1596 w +(TCP.) 4056 1596 w +(IL) 4349 1596 w +(is) 4473 1596 w +(our) 4595 1596 w +(main) 4801 1596 w +(Internet transport protocol.) 720 1716 w +10 /LucidaSans-Demi f +(Overview of authentication) 720 1956 w +10 /LucidaSansUnicode00 f +(Authentication) 970 2112 w +(establishes) 1728 2112 w +(the) 2317 2112 w +(identity) 2521 2112 w +(of) 2935 2112 w +(a) 3082 2112 w +(user) 3186 2112 w +(accessing) 3445 2112 w +(a) 3962 2112 w +(resource.) 4066 2112 w +(The) 4599 2112 w +(user) 4830 2112 w +(requesting) 720 2232 w +(the) 1276 2232 w +(resource) 1468 2232 w +(is) 1923 2232 w +(called) 2039 2232 w +(the) 2358 2232 w +10 /LucidaSans-Italic f +(client) 2549 2232 w +10 /LucidaSansUnicode00 f +(and) 2846 2232 w +(the) 3062 2232 w +(user) 3253 2232 w +(granting) 3499 2232 w +(access) 3945 2232 w +(to) 4296 2232 w +(the) 4430 2232 w +(resource) 4621 2232 w +(is) 720 2352 w +(called) 836 2352 w +(the) 1155 2352 w +10 /LucidaSans-Italic f +(server) 1346 2352 w +10 /LucidaSansUnicode00 f +(.) 1651 2352 w +(This) 1751 2352 w +(is) 1992 2352 w +(usually) 2108 2352 w +(done) 2484 2352 w +(under) 2762 2352 w +(the) 3083 2352 w +(auspices) 3275 2352 w +(of) 3730 2352 w +(a) 3865 2352 w +(9P) 3957 2352 w +(attach) 4112 2352 w +(message.) 4446 2352 w +(A) 4971 2352 w +(user) 720 2472 w +(may) 975 2472 w +(be) 1220 2472 w +(a) 1384 2472 w +(client) 1484 2472 w +(in) 1793 2472 w +(one) 1929 2472 w +(authentication) 2153 2472 w +(exchange) 2893 2472 w +(and) 3403 2472 w +(a) 3628 2472 w +(server) 3728 2472 w +(in) 4070 2472 w +(another.) 4206 2472 w +(Servers) 4689 2472 w +(always) 720 2592 w +(act) 1077 2592 w +(on) 1258 2592 w +(behalf) 1419 2592 w +(of) 1759 2592 w +(some) 1895 2592 w +(user,) 2194 2592 w +(either) 2474 2592 w +(a) 2793 2592 w +(normal) 2886 2592 w +(client) 3265 2592 w +(or) 3567 2592 w +(some) 3707 2592 w +(administrative) 4007 2592 w +(entity,) 4735 2592 w +(so authentication is defined to be between users, not machines.) 720 2712 w +(Each) 970 2868 w +(Plan) 1225 2868 w +(9) 1459 2868 w +(user) 1555 2868 w +(has) 1798 2868 w +(an) 1999 2868 w +(associated) 2149 2868 w +(DES) 2691 2868 w +([NBS77]) 2908 2868 w +(authentication) 3320 2868 w +(key;) 4049 2868 w +(the) 4281 2868 w +(user) 4470 2868 w +10 /LucidaSansUnicode20 f +(\031) 4680 2868 w +10 /LucidaSansUnicode00 f +(s) 4712 2868 w +(iden\255) 4797 2868 w +(tity) 720 2988 w +(is) 915 2988 w +(verified) 1035 2988 w +(by) 1438 2988 w +(the) 1593 2988 w +(ability) 1788 2988 w +(to) 2122 2988 w +(encrypt) 2260 2988 w +(and) 2662 2988 w +(decrypt) 2882 2988 w +(special) 3285 2988 w +(messages) 3659 2988 w +(called) 4173 2988 w +(challenges.) 4495 2988 w +(Since) 720 3108 w +(knowledge) 1005 3108 w +(of) 1562 3108 w +(a) 1693 3108 w +(user) 1781 3108 w +10 /LucidaSansUnicode20 f +(\031) 1991 3108 w +10 /LucidaSansUnicode00 f +(s) 2023 3108 w +(key) 2107 3108 w +(gives) 2306 3108 w +(access) 2589 3108 w +(to) 2937 3108 w +(that) 3068 3108 w +(user) 3292 3108 w +10 /LucidaSansUnicode20 f +(\031) 3502 3108 w +10 /LucidaSansUnicode00 f +(s) 3534 3108 w +(resources,) 3618 3108 w +(the) 4153 3108 w +(Plan) 4341 3108 w +(9) 4576 3108 w +(authen\255) 4673 3108 w +(tication protocols never transmit a message containing a cleartext key.) 720 3228 w +(Authentication) 970 3384 w +(is) 1718 3384 w +(bilateral:) 1838 3384 w +(at) 2304 3384 w +(the) 2436 3384 w +(end) 2631 3384 w +(of) 2852 3384 w +(the) 2990 3384 w +(authentication) 3185 3384 w +(exchange,) 3920 3384 w +(each) 4457 3384 w +(side) 4721 3384 w +(is) 4960 3384 w +(convinced) 720 3504 w +(of) 1244 3504 w +(the) 1378 3504 w +(other) 1569 3504 w +10 /LucidaSansUnicode20 f +(\031) 1826 3504 w +10 /LucidaSansUnicode00 f +(s) 1858 3504 w +(identity.) 1945 3504 w +(Every) 2410 3504 w +(machine) 2701 3504 w +(begins) 3145 3504 w +(the) 3504 3504 w +(exchange) 3695 3504 w +(with) 4196 3504 w +(a) 4437 3504 w +(DES) 4528 3504 w +(key) 4747 3504 w +(in) 4949 3504 w +(memory.) 720 3624 w +(In) 1216 3624 w +(the) 1343 3624 w +(case) 1535 3624 w +(of) 1785 3624 w +(CPU) 1920 3624 w +(and) 2150 3624 w +(file) 2367 3624 w +(servers,) 2555 3624 w +(the) 2972 3624 w +(key,) 3164 3624 w +(user) 3399 3624 w +(name,) 3646 3624 w +(and) 3981 3624 w +(domain) 4198 3624 w +(name) 4598 3624 w +(for) 4901 3624 w +(the) 720 3744 w +(server) 920 3744 w +(are) 1262 3744 w +(read) 1459 3744 w +(from) 1719 3744 w +(permanent) 1996 3744 w +(storage,) 2566 3744 w +(usually) 3006 3744 w +(non-volatile) 3390 3744 w +(RAM.) 4025 3744 w +(In) 4351 3744 w +(the) 4486 3744 w +(case) 4685 3744 w +(of) 4942 3744 w +(terminals,) 720 3864 w +(the) 1241 3864 w +(key) 1432 3864 w +(is) 1634 3864 w +(derived) 1750 3864 w +(from) 2146 3864 w +(a) 2414 3864 w +(password) 2505 3864 w +(typed) 3003 3864 w +(by) 3310 3864 w +(the) 3461 3864 w +(user) 3652 3864 w +(at) 3898 3864 w +(boot) 4026 3864 w +(time.) 4284 3864 w +(A) 4600 3864 w +(special) 4706 3864 w +(machine,) 720 3984 w +(known) 1197 3984 w +(as) 1553 3984 w +(the) 1695 3984 w +10 /LucidaSans-Italic f +(authentication) 1886 3984 w +(server) 2624 3984 w +10 /LucidaSansUnicode00 f +(,) 2929 3984 w +(maintains) 2997 3984 w +(a) 3506 3984 w +(database) 3597 3984 w +(of) 4068 3984 w +(keys) 4202 3984 w +(for) 4455 3984 w +(all) 4630 3984 w +(users) 4779 3984 w +(in its administrative domain and participates in the authentication protocols.) 720 4104 w +(The) 970 4260 w +(authentication) 1197 4260 w +(protocol) 1938 4260 w +(is) 2388 4260 w +(as) 2515 4260 w +(follows:) 2668 4260 w +(after) 3092 4260 w +(exchanging) 3365 4260 w +(challenges,) 3974 4260 w +(one) 4566 4260 w +(party) 4792 4260 w +(contacts) 720 4380 w +(the) 1166 4380 w +(authentication) 1362 4380 w +(server) 2098 4380 w +(to) 2436 4380 w +(create) 2575 4380 w +(permission-granting) 2912 4380 w +10 /LucidaSans-Italic f +(tickets) 3957 4380 w +10 /LucidaSansUnicode00 f +(encrypted) 4313 4380 w +(with) 4835 4380 w +(each) 720 4500 w +(party) 983 4500 w +10 /LucidaSansUnicode20 f +(\031) 1231 4500 w +10 /LucidaSansUnicode00 f +(s) 1263 4500 w +(secret) 1353 4500 w +(key) 1685 4500 w +(and) 1891 4500 w +(containing) 2111 4500 w +(a) 2661 4500 w +(new) 2756 4500 w +(conversation) 2991 4500 w +(key.) 3649 4500 w +(Each) 3919 4500 w +(party) 4181 4500 w +(decrypts) 4469 4500 w +(its) 4923 4500 w +(own ticket and uses the conversation key to encrypt the other party) 720 4620 w +10 /LucidaSansUnicode20 f +(\031) 3999 4620 w +10 /LucidaSansUnicode00 f +(s challenge.) 4031 4620 w +(This) 970 4776 w +(structure) 1215 4776 w +(is) 1693 4776 w +(somewhat) 1813 4776 w +(like) 2345 4776 w +(Kerberos) 2557 4776 w +([MBSS87],) 3031 4776 w +(but) 3547 4776 w +(avoids) 3749 4776 w +(its) 4100 4776 w +(reliance) 4258 4776 w +(on) 4678 4776 w +(syn\255) 4842 4776 w +(chronized) 720 4896 w +(clocks.) 1250 4896 w +(Also) 1663 4896 w +(unlike) 1921 4896 w +(Kerberos,) 2265 4896 w +(Plan) 2778 4896 w +(9) 3026 4896 w +(authentication) 3136 4896 w +(supports) 3878 4896 w +(a) 4354 4896 w +10 /LucidaSansUnicode20 f +(\030) 4456 4896 w +10 /LucidaSansUnicode00 f +(speaks) 4488 4896 w +(for) 4869 4896 w +10 /LucidaSansUnicode20 f +(\031) 5008 4896 w +10 /LucidaSansUnicode00 f +(relation) 720 5016 w +([LABW91]) 1130 5016 w +(that) 1628 5016 w +(enables) 1859 5016 w +(one) 2271 5016 w +(user) 2490 5016 w +(to) 2740 5016 w +(have) 2878 5016 w +(the) 3144 5016 w +(authority) 3340 5016 w +(of) 3817 5016 w +(another;) 3956 5016 w +(this) 4403 5016 w +(is) 4623 5016 w +(how) 4744 5016 w +(a) 4985 5016 w +(CPU server runs processes on behalf of its clients.) 720 5136 w +(Plan) 970 5292 w +(9) 1215 5292 w +10 /LucidaSansUnicode20 f +(\031) 1278 5292 w +10 /LucidaSansUnicode00 f +(s) 1310 5292 w +(authentication) 1405 5292 w +(structure) 2144 5292 w +(builds) 2626 5292 w +(secure) 2967 5292 w +(services) 3328 5292 w +(rather) 3759 5292 w +(than) 4095 5292 w +(depending) 4356 5292 w +(on) 4917 5292 w +(firewalls.) 720 5412 w +(Whereas) 1230 5412 w +(firewalls) 1679 5412 w +(require) 2125 5412 w +(special) 2515 5412 w +(code) 2891 5412 w +(for) 3164 5412 w +(every) 3345 5412 w +(service) 3644 5412 w +(penetrating) 4021 5412 w +(the) 4622 5412 w +(wall,) 4818 5412 w +(the) 720 5532 w +(Plan) 909 5532 w +(9) 1144 5532 w +(approach) 1241 5532 w +(permits) 1726 5532 w +(authentication) 2131 5532 w +(to) 2861 5532 w +(be) 2994 5532 w +(done) 3148 5532 w +(in) 3425 5532 w +(a) 3551 5532 w +(single) 3641 5532 w +(place) 3965 5532 w +10 /LucidaSansUnicode20 f +(\024) 4219 5532 w +10 /LucidaSansUnicode00 f +(9P) 4319 5532 w +10 /LucidaSansUnicode20 f +(\024) 4437 5532 w +10 /LucidaSansUnicode00 f +(for) 4537 5532 w +(all) 4711 5532 w +(ser\255) 4859 5532 w +(vices.) 720 5652 w +(For example, the) 1055 5652 w +10 /LucidaTypewriter f +(cpu) 1907 5652 w +10 /LucidaSansUnicode00 f +(command works securely across the Internet.) 2155 5652 w +10 /LucidaSans-Demi f +(Authenticating external connections) 720 5892 w +10 /LucidaSansUnicode00 f +(The) 970 6048 w +(regular) 1196 6048 w +(Plan) 1587 6048 w +(9) 1833 6048 w +(authentication) 1941 6048 w +(protocol) 2681 6048 w +(is) 3130 6048 w +(not) 3255 6048 w +(suitable) 3460 6048 w +(for) 3887 6048 w +(text-based) 4071 6048 w +(services) 4653 6048 w +(such) 720 6168 w +(as) 983 6168 w +(Telnet) 1126 6168 w +(or) 1466 6168 w +(FTP.) 1605 6168 w +(In) 1877 6168 w +(such) 2004 6168 w +(cases,) 2266 6168 w +(Plan) 2598 6168 w +(9) 2835 6168 w +(users) 2934 6168 w +(authenticate) 3231 6168 w +(with) 3866 6168 w +(hand-held) 4107 6168 w +(DES) 4653 6168 w +(cal\255) 4872 6168 w +(culators) 720 6288 w +(called) 1143 6288 w +10 /LucidaSans-Italic f +(authenticators) 1462 6288 w +10 /LucidaSansUnicode00 f +(.) 2170 6288 w +(The) 2270 6288 w +(authenticator) 2487 6288 w +(holds) 3168 6288 w +(a) 3470 6288 w +(key) 3562 6288 w +(for) 3765 6288 w +(the) 3941 6288 w +(user,) 4133 6288 w +(distinct) 4412 6288 w +(from) 4808 6288 w +(the) 720 6408 w +(user) 910 6408 w +10 /LucidaSansUnicode20 f +(\031) 1120 6408 w +10 /LucidaSansUnicode00 f +(s) 1152 6408 w +(normal) 1238 6408 w +(authentication) 1614 6408 w +(key.) 2344 6408 w +(The) 2609 6408 w +(user) 2825 6408 w +10 /LucidaSansUnicode20 f +(\030) 3070 6408 w +10 /LucidaSansUnicode00 f +(logs) 3102 6408 w +(on) 3340 6408 w +10 /LucidaSansUnicode20 f +(\031) 3463 6408 w +10 /LucidaSansUnicode00 f +(to) 3530 6408 w +(the) 3662 6408 w +(authenticator) 3851 6408 w +(using) 4530 6408 w +(a) 4830 6408 w +(4-) 4919 6408 w +(digit) 720 6528 w +(PIN.) 987 6528 w +(A) 1256 6528 w +(correct) 1373 6528 w +(PIN) 1759 6528 w +(enables) 1965 6528 w +(the) 2385 6528 w +(authenticator) 2588 6528 w +(for) 3281 6528 w +(a) 3468 6528 w +(challenge/response) 3571 6528 w +(exchange) 4575 6528 w +(with) 720 6648 w +(the) 976 6648 w +(server.) 1182 6648 w +(Since) 1594 6648 w +(a) 1897 6648 w +(correct) 2003 6648 w +(challenge/response) 2392 6648 w +(exchange) 3399 6648 w +(is) 3915 6648 w +(valid) 4046 6648 w +(only) 4325 6648 w +(once) 4580 6648 w +(and) 4860 6648 w +(keys are never sent over) 720 6768 w +(the) 1933 6768 w +(network,) 2121 6768 w +(this) 2578 6768 w +(procedure) 2790 6768 w +(is) 3317 6768 w +(not) 3430 6768 w +(susceptible) 3623 6768 w +(to) 4204 6768 w +(replay) 4335 6768 w +(attacks,) 4664 6768 w +(yet is compatible with protocols like Telnet and FTP.) 720 6888 w +cleartomark +showpage +saveobj restore +%%EndPage: 17 17 +%%Page: 18 18 +/saveobj save def +mark +18 pagesetup +10 /LucidaSansUnicode00 f +(\255 18 \255) 2752 480 w +10 /LucidaSans-Demi f +(Special users) 720 840 w +10 /LucidaSansUnicode00 f +(Plan) 970 996 w +(9) 1206 996 w +(has) 1304 996 w +(no) 1507 996 w +(super-user.) 1666 996 w +(Each) 2307 996 w +(server) 2565 996 w +(is) 2898 996 w +(responsible) 3014 996 w +(for) 3612 996 w +(maintaining) 3787 996 w +(its) 4398 996 w +(own) 4551 996 w +(secu\255) 4787 996 w +(rity,) 720 1116 w +(usually) 948 1116 w +(permitting) 1325 1116 w +(access) 1871 1116 w +(only) 2223 1116 w +(from) 2464 1116 w +(the) 2733 1116 w +(console,) 2925 1116 w +(which) 3365 1116 w +(is) 3683 1116 w +(protected) 3800 1116 w +(by) 4302 1116 w +(a) 4454 1116 w +(password.) 4546 1116 w +(For example, file servers have a unique administrative user called) 720 1236 w +10 /LucidaTypewriter f +(adm) 3936 1236 w +10 /LucidaSansUnicode00 f +(,) 4152 1236 w +(with) 4217 1236 w +(special) 4455 1236 w +(priv\255) 4822 1236 w +(ileges) 720 1356 w +(that) 1041 1356 w +(apply) 1270 1356 w +(only) 1570 1356 w +(to) 1812 1356 w +(commands) 1948 1356 w +(typed) 2515 1356 w +(at) 2824 1356 w +(the) 2954 1356 w +(server) 3147 1356 w +10 /LucidaSansUnicode20 f +(\031) 3444 1356 w +10 /LucidaSansUnicode00 f +(s) 3476 1356 w +(physical) 3565 1356 w +(console.) 3995 1356 w +(These) 4468 1356 w +(privi\255) 4793 1356 w +(leges) 720 1476 w +(concern) 1010 1476 w +(the) 1430 1476 w +(day-to-day) 1621 1476 w +(maintenance) 2211 1476 w +(of) 2865 1476 w +(the) 2999 1476 w +(server,) 3190 1476 w +(such) 3555 1476 w +(as) 3817 1476 w +(adding) 3959 1476 w +(new) 4330 1476 w +(users) 4562 1476 w +(and) 4860 1476 w +(configuring) 720 1596 w +(disks) 1331 1596 w +(and) 1636 1596 w +(networks.) 1869 1596 w +(The) 2428 1596 w +(privileges) 2661 1596 w +(do) 3181 1596 w +10 /LucidaSans-Italic f +(not) 3357 1596 w +10 /LucidaSansUnicode00 f +(include) 3566 1596 w +(the) 3970 1596 w +(ability) 4177 1596 w +(to) 4523 1596 w +(modify,) 4673 1596 w +(examine,) 720 1716 w +(or) 1207 1716 w +(change) 1352 1716 w +(the) 1743 1716 w +(permissions) 1941 1716 w +(of) 2571 1716 w +(any) 2712 1716 w +(files.) 2924 1716 w +(If) 3233 1716 w +(a) 3342 1716 w +(file) 3440 1716 w +(is) 3634 1716 w +(read-protected) 3758 1716 w +(by) 4540 1716 w +(a) 4699 1716 w +(user,) 4798 1716 w +(only that user may grant access to others.) 720 1836 w +(CPU) 970 1992 w +(servers) 1218 1992 w +(have) 1622 1992 w +(an) 1903 1992 w +(equivalent) 2076 1992 w +(user) 2633 1992 w +(name) 2899 1992 w +(that) 3221 1992 w +(allows) 3468 1992 w +(administrative) 3826 1992 w +(access) 4571 1992 w +(to) 4942 1992 w +(resources) 720 2112 w +(on) 1227 2112 w +(that) 1387 2112 w +(server) 1615 2112 w +(such) 1949 2112 w +(as) 2212 2112 w +(the) 2355 2112 w +(control) 2546 2112 w +(files) 2924 2112 w +(of) 3162 2112 w +(user) 3296 2112 w +(processes.) 3542 2112 w +(Such) 4123 2112 w +(permission) 4388 2112 w +(is) 4960 2112 w +(necessary, for example, to) 720 2232 w +(kill) 2038 2232 w +(rogue) 2216 2232 w +(processes,) 2531 2232 w +(but) 3077 2232 w +(does) 3272 2232 w +(not) 3536 2232 w +(extend) 3729 2232 w +(beyond) 4097 2232 w +(that) 4487 2232 w +(server.) 4711 2232 w +(On) 720 2352 w +(the) 893 2352 w +(other) 1081 2352 w +(hand,) 1371 2352 w +(by) 1678 2352 w +(means) 1826 2352 w +(of a key held in protected non-volatile RAM, the identity of) 2176 2352 w +(the) 720 2472 w +(administrative) 932 2472 w +(user) 1678 2472 w +(is) 1945 2472 w +(proven) 2082 2472 w +(to) 2474 2472 w +(the) 2629 2472 w +(authentication) 2841 2472 w +(server.) 3593 2472 w +(This) 4011 2472 w +(allows) 4274 2472 w +(the) 4634 2472 w +(CPU) 4847 2472 w +(server) 720 2592 w +(to) 1063 2592 w +(authenticate) 1206 2592 w +(remote) 1850 2592 w +(users,) 2239 2592 w +(both) 2577 2592 w +(for) 2845 2592 w +(access) 3029 2592 w +(to) 3389 2592 w +(the) 3532 2592 w +(server) 3732 2592 w +(itself) 4074 2592 w +(and) 4358 2592 w +(when) 4583 2592 w +(the) 4885 2592 w +(CPU server is acting as a proxy on their behalf.) 720 2712 w +(Finally,) 970 2868 w +(a) 1351 2868 w +(special) 1445 2868 w +(user) 1818 2868 w +(called) 2067 2868 w +10 /LucidaTypewriter f +(none) 2389 2868 w +10 /LucidaSansUnicode00 f +(has) 2716 2868 w +(no) 2923 2868 w +(password) 3085 2868 w +(and) 3586 2868 w +(is) 3806 2868 w +(always) 3926 2868 w +(allowed) 4285 2868 w +(to) 4695 2868 w +(con\255) 4833 2868 w +(nect;) 720 2988 w +(anyone) 999 2988 w +(may) 1387 2988 w +(claim) 1627 2988 w +(to) 1924 2988 w +(be) 2062 2988 w +10 /LucidaTypewriter f +(none) 2221 2988 w +10 /LucidaSansUnicode00 f +(.) 2509 2988 w +10 /LucidaTypewriter f +(None) 2613 2988 w +10 /LucidaSansUnicode00 f +(has) 2941 2988 w +(restricted) 3149 2988 w +(permissions;) 3651 2988 w +(for) 4310 2988 w +(example,) 4489 2988 w +(it) 4974 2988 w +(is not allowed to examine dump files and can read only world-readable files.) 720 3108 w +(The) 970 3264 w +(idea) 1197 3264 w +(behind) 1446 3264 w +10 /LucidaTypewriter f +(none) 1828 3264 w +10 /LucidaSansUnicode00 f +(is) 2163 3264 w +(analogous) 2290 3264 w +(to) 2835 3264 w +(the) 2980 3264 w +(anonymous) 3182 3264 w +(user) 3788 3264 w +(in) 4045 3264 w +(FTP) 4183 3264 w +(services.) 4402 3264 w +(On) 4900 3264 w +(Plan) 720 3384 w +(9,) 958 3384 w +(guest) 1090 3384 w +(FTP) 1395 3384 w +(servers) 1604 3384 w +(are) 1988 3384 w +(further) 2176 3384 w +(confined) 2548 3384 w +(within) 3005 3384 w +(a) 3337 3384 w +(special) 3428 3384 w +(restricted) 3798 3384 w +(name) 4296 3384 w +(space.) 4598 3384 w +(It) 4974 3384 w +(disconnects) 720 3504 w +(guest) 1349 3504 w +(users) 1672 3504 w +(from) 1988 3504 w +(system) 2275 3504 w +(programs,) 2670 3504 w +(such) 3224 3504 w +(as) 3505 3504 w +(the) 3666 3504 w +(contents) 3876 3504 w +(of) 4348 3504 w +10 /LucidaTypewriter f +(/bin) 4502 3504 w +10 /LucidaSansUnicode00 f +(,) 4790 3504 w +(but) 4878 3504 w +(makes) 720 3624 w +(it) 1073 3624 w +(possible) 1179 3624 w +(to) 1622 3624 w +(make) 1760 3624 w +(local) 2062 3624 w +(files) 2327 3624 w +(available) 2569 3624 w +(to) 3031 3624 w +(guests) 3168 3624 w +(by) 3526 3624 w +(binding) 3680 3624 w +(them) 4089 3624 w +(explicitly) 4376 3624 w +(into) 4851 3624 w +(the) 720 3744 w +(space.) 914 3744 w +(A) 1293 3744 w +(restricted) 1401 3744 w +(name) 1902 3744 w +(space) 2207 3744 w +(is) 2522 3744 w +(more) 2641 3744 w +(secure) 2931 3744 w +(than) 3287 3744 w +(the) 3542 3744 w +(usual) 3736 3744 w +(technique) 4034 3744 w +(of) 4551 3744 w +(export\255) 4688 3744 w +(ing an ad hoc directory tree; the result is a kind of cage around untrusted users.) 720 3864 w +10 /LucidaSans-Demi f +(The cpu command and proxied authentication) 720 4104 w +10 /LucidaSansUnicode00 f +(When) 970 4260 w +(a) 1278 4260 w +(call) 1375 4260 w +(is) 1581 4260 w +(made) 1703 4260 w +(to) 2013 4260 w +(a) 2154 4260 w +(CPU) 2252 4260 w +(server) 2488 4260 w +(for) 2828 4260 w +(a) 3010 4260 w +(user,) 3108 4260 w +(say) 3393 4260 w +(Peter,) 3594 4260 w +(the) 3914 4260 w +(intent) 4112 4260 w +(is) 4438 4260 w +(that) 4561 4260 w +(Peter) 4795 4260 w +(wishes) 720 4380 w +(to) 1092 4380 w +(run) 1236 4380 w +(processes) 1447 4380 w +(with) 1973 4380 w +(his) 2223 4380 w +(own) 2410 4380 w +(authority.) 2655 4380 w +(To) 3200 4380 w +(implement) 3369 4380 w +(this) 3932 4380 w +(property,) 4156 4380 w +(the) 4647 4380 w +(CPU) 4847 4380 w +(server does) 720 4500 w +(the) 1313 4500 w +(following) 1501 4500 w +(when) 1981 4500 w +(the) 2271 4500 w +(call) 2459 4500 w +(is) 2656 4500 w +(received.) 2769 4500 w +(First,) 3270 4500 w +(the) 3547 4500 w +(listener) 3735 4500 w +(forks) 4129 4500 w +(off) 4410 4500 w +(a) 4578 4500 w +(process) 4666 4500 w +(to) 720 4620 w +(handle) 853 4620 w +(the) 1215 4620 w +(call.) 1405 4620 w +(This) 1668 4620 w +(process) 1908 4620 w +(changes) 2317 4620 w +(to) 2751 4620 w +(the) 2884 4620 w +(user) 3074 4620 w +10 /LucidaTypewriter f +(none) 3319 4620 w +10 /LucidaSansUnicode00 f +(to) 3642 4620 w +(avoid) 3775 4620 w +(giving) 4070 4620 w +(away) 4401 4620 w +(permis\255) 4674 4620 w +(sions) 720 4740 w +(if) 1019 4740 w +(it) 1130 4740 w +(is) 1241 4740 w +(compromised.) 1366 4740 w +(It) 2137 4740 w +(then) 2248 4740 w +(performs) 2511 4740 w +(the) 3000 4740 w +(authentication) 3201 4740 w +(protocol) 3942 4740 w +(to) 4392 4740 w +(verify) 4536 4740 w +(that) 4849 4740 w +(the) 720 4860 w +(calling) 914 4860 w +(user) 1270 4860 w +(really) 1519 4860 w +(is) 1820 4860 w +(Peter,) 1938 4860 w +(and) 2253 4860 w +(to) 2471 4860 w +(prove) 2607 4860 w +(to) 2918 4860 w +(Peter) 3054 4860 w +(that) 3337 4860 w +(the) 3566 4860 w +(machine) 3759 4860 w +(is) 4205 4860 w +(itself) 4323 4860 w +(trustwor\255) 4600 4860 w +(thy.) 720 4980 w +(Finally,) 971 4980 w +(it) 1350 4980 w +(reattaches) 1453 4980 w +(to) 1991 4980 w +(all) 2126 4980 w +(relevant) 2276 4980 w +(file) 2701 4980 w +(servers) 2889 4980 w +(using) 3274 4980 w +(the) 3577 4980 w +(authentication) 3769 4980 w +(protocol) 4501 4980 w +(to) 4942 4980 w +(identify) 720 5100 w +(itself) 1123 5100 w +(as) 1400 5100 w +(Peter.) 1543 5100 w +(In) 1889 5100 w +(this) 2017 5100 w +(case,) 2233 5100 w +(the) 2515 5100 w +(CPU) 2707 5100 w +(server) 2937 5100 w +(is) 3271 5100 w +(a) 3388 5100 w +(client) 3480 5100 w +(of) 3781 5100 w +(the) 3916 5100 w +(file) 4108 5100 w +(server) 4296 5100 w +(and) 4630 5100 w +(per\255) 4847 5100 w +(forms) 720 5220 w +(the) 1039 5220 w +(client) 1230 5220 w +(portion) 1530 5220 w +(of) 1920 5220 w +(the) 2054 5220 w +(authentication) 2245 5220 w +(exchange) 2976 5220 w +(on) 3477 5220 w +(behalf) 3636 5220 w +(of) 3974 5220 w +(Peter.) 4109 5220 w +(The) 4455 5220 w +(authen\255) 4673 5220 w +(tication) 720 5340 w +(server) 1127 5340 w +(will) 1469 5340 w +(give) 1678 5340 w +(the) 1922 5340 w +(process) 2122 5340 w +(tickets) 2541 5340 w +(to) 2905 5340 w +(accomplish) 3048 5340 w +(this) 3638 5340 w +(only) 3862 5340 w +(if) 4111 5340 w +(the) 4222 5340 w +(CPU) 4422 5340 w +(server) 4660 5340 w +10 /LucidaSansUnicode20 f +(\031) 4957 5340 w +10 /LucidaSansUnicode00 f +(s) 4989 5340 w +(administrative user name is allowed to) 720 5460 w +10 /LucidaSans-Italic f +(speak for) 2625 5460 w +10 /LucidaSansUnicode00 f +(Peter.) 3114 5460 w +(The) 970 5616 w +10 /LucidaSans-Italic f +(speaks for) 1183 5616 w +10 /LucidaSansUnicode00 f +(relation [LABW91] is kept in a table on the authentication server.) 1721 5616 w +(To) 4916 5616 w +(simplify) 720 5736 w +(the) 1136 5736 w +(management) 1324 5736 w +(of) 1988 5736 w +(users) 2119 5736 w +(computing) 2413 5736 w +(in) 2966 5736 w +(different) 3090 5736 w +(authentication domains, it also) 3541 5736 w +(contains) 720 5856 w +(mappings) 1172 5856 w +(between) 1694 5856 w +(user) 2145 5856 w +(names) 2399 5856 w +(in) 2761 5856 w +(different) 2897 5856 w +(domains,) 3360 5856 w +(for) 3851 5856 w +(example) 4035 5856 w +(saying) 4493 5856 w +(that) 4849 5856 w +(user) 720 5976 w +10 /LucidaTypewriter f +(rtm) 962 5976 w +10 /LucidaSansUnicode00 f +(in one domain is the same person as user) 1210 5976 w +10 /LucidaTypewriter f +(rtmorris) 3271 5976 w +10 /LucidaSansUnicode00 f +(in another.) 3879 5976 w +10 /LucidaSans-Demi f +(File Permissions) 720 6216 w +10 /LucidaSansUnicode00 f +(One) 970 6372 w +(of) 1201 6372 w +(the) 1334 6372 w +(advantages) 1524 6372 w +(of) 2108 6372 w +(constructing) 2242 6372 w +(services) 2884 6372 w +(as) 3307 6372 w +(file) 3449 6372 w +(systems) 3636 6372 w +(is) 4063 6372 w +(that) 4179 6372 w +(the) 4406 6372 w +(solutions) 4597 6372 w +(to) 720 6492 w +(ownership) 856 6492 w +(and) 1396 6492 w +(permission) 1614 6492 w +(problems) 2188 6492 w +(fall) 2683 6492 w +(out) 2870 6492 w +(naturally.) 3067 6492 w +(As) 3590 6492 w +(in) 3747 6492 w +(UNIX,) 3875 6492 w +(each) 4179 6492 w +(file) 4440 6492 w +(or) 4628 6492 w +(direc\255) 4767 6492 w +(tory) 720 6612 w +(has) 952 6612 w +(separate) 1161 6612 w +(read,) 1616 6612 w +(write,) 1905 6612 w +(and) 2219 6612 w +(execute/search) 2441 6612 w +(permissions) 3231 6612 w +(for) 3860 6612 w +(the) 4041 6612 w +(file) 4238 6612 w +10 /LucidaSansUnicode20 f +(\031) 4389 6612 w +10 /LucidaSansUnicode00 f +(s) 4421 6612 w +(owner,) 4514 6612 w +(the) 4885 6612 w +(file) 720 6732 w +10 /LucidaSansUnicode20 f +(\031) 871 6732 w +10 /LucidaSansUnicode00 f +(s group, and anyone else.) 903 6732 w +(The idea of group is unusual: any user name is potentially) 2219 6732 w +(a) 720 6852 w +(group) 816 6852 w +(name.) 1146 6852 w +(A) 1517 6852 w +(group) 1627 6852 w +(is) 1957 6852 w +(just) 2078 6852 w +(a) 2299 6852 w +(user) 2395 6852 w +(with) 2646 6852 w +(a) 2893 6852 w +(list) 2990 6852 w +(of) 3178 6852 w +(other) 3318 6852 w +(users) 3617 6852 w +(in) 3920 6852 w +(the) 4053 6852 w +(group.) 4250 6852 w +(Conven\255) 4645 6852 w +(tions) 720 6972 w +(make) 994 6972 w +(the) 1290 6972 w +(distinction:) 1479 6972 w +(most) 2056 6972 w +(people) 2332 6972 w +(have) 2694 6972 w +(user) 2953 6972 w +(names) 3197 6972 w +(without) 3548 6972 w +(group) 3947 6972 w +(members,) 4269 6972 w +(while) 4787 6972 w +(groups) 720 7092 w +(have) 1093 7092 w +(long) 1352 7092 w +(lists) 1600 7092 w +(of) 1831 7092 w +(attached) 1963 7092 w +(names.) 2413 7092 w +(For) 2828 7092 w +(example,) 3018 7092 w +(the) 3497 7092 w +10 /LucidaTypewriter f +(sys) 3686 7092 w +10 /LucidaSansUnicode00 f +(group) 3936 7092 w +(traditionally) 4259 7092 w +(has) 4872 7092 w +(all) 720 7212 w +(the) 879 7212 w +(system) 1079 7212 w +(programmers,) 1464 7212 w +(and) 2198 7212 w +(system) 2423 7212 w +(files) 2808 7212 w +(are) 3055 7212 w +(accessible) 3252 7212 w +(by) 3789 7212 w +(group) 3949 7212 w +10 /LucidaTypewriter f +(sys) 4283 7212 w +10 /LucidaSansUnicode00 f +(.) 4499 7212 w +(Consider) 4608 7212 w +cleartomark +showpage +saveobj restore +%%EndPage: 18 18 +%%Page: 19 19 +/saveobj save def +mark +19 pagesetup +10 /LucidaSansUnicode00 f +(\255 19 \255) 2752 480 w +(the following two lines of a user database stored on a server:) 720 840 w +9 /LucidaTypewriter f +(pjw:pjw:) 1008 1010 w +(sys::pjw,ken,philw,presotto) 1008 1120 w +10 /LucidaSansUnicode00 f +(The) 720 1300 w +(first) 937 1300 w +(establishes) 1168 1300 w +(user) 1744 1300 w +10 /LucidaTypewriter f +(pjw) 1990 1300 w +10 /LucidaSansUnicode00 f +(as) 2242 1300 w +(a) 2384 1300 w +(regular) 2475 1300 w +(user.) 2857 1300 w +(The) 3167 1300 w +(second) 3384 1300 w +(establishes) 3765 1300 w +(user) 4342 1300 w +10 /LucidaTypewriter f +(sys) 4589 1300 w +10 /LucidaSansUnicode00 f +(as) 4842 1300 w +(a) 4985 1300 w +(group) 720 1420 w +(and) 1045 1420 w +(lists) 1261 1420 w +(four) 1494 1420 w +(users) 1731 1420 w +(who) 2028 1420 w +(are) 2264 1420 w +10 /LucidaSans-Italic f +(members) 2452 1420 w +10 /LucidaSansUnicode00 f +(of) 2938 1420 w +(that) 3072 1420 w +(group.) 3299 1420 w +(The) 3688 1420 w +(empty) 3905 1420 w +(colon-separated) 4241 1420 w +(field) 720 1540 w +(is) 972 1540 w +(space) 1090 1540 w +(for) 1404 1540 w +(a) 1581 1540 w +(user) 1674 1540 w +(to) 1922 1540 w +(be) 2058 1540 w +(named) 2215 1540 w +(as) 2582 1540 w +(the) 2726 1540 w +10 /LucidaSans-Italic f +(group) 2919 1540 w +(leader) 3246 1540 w +10 /LucidaSansUnicode00 f +(.) 3551 1540 w +(If) 3653 1540 w +(a) 3757 1540 w +(group) 3850 1540 w +(has) 4177 1540 w +(a) 4384 1540 w +(leader,) 4478 1540 w +(that) 4849 1540 w +(user) 720 1660 w +(has) 972 1660 w +(special) 1182 1660 w +(permissions) 1558 1660 w +(for) 2187 1660 w +(the) 2368 1660 w +(group,) 2565 1660 w +(such) 2928 1660 w +(as) 3196 1660 w +(freedom) 3344 1660 w +(to) 3793 1660 w +(change) 3932 1660 w +(the) 4321 1660 w +(group) 4517 1660 w +(per\255) 4847 1660 w +(missions) 720 1780 w +(of) 1189 1780 w +(files) 1329 1780 w +(in) 1573 1780 w +(that) 1706 1780 w +(group.) 1939 1780 w +(If) 2334 1780 w +(no) 2442 1780 w +(leader) 2607 1780 w +(is) 2949 1780 w +(specified,) 3071 1780 w +(each) 3580 1780 w +(member) 3846 1780 w +(of) 4290 1780 w +(the) 4430 1780 w +(group) 4628 1780 w +(is) 4960 1780 w +(considered) 720 1900 w +(equal,) 1294 1900 w +(as) 1631 1900 w +(if) 1777 1900 w +(each) 1883 1900 w +(were) 2147 1900 w +(the) 2417 1900 w +(leader.) 2612 1900 w +(In) 3016 1900 w +(our) 3147 1900 w +(example,) 3351 1900 w +(only) 3836 1900 w +10 /LucidaTypewriter f +(pjw) 4080 1900 w +10 /LucidaSansUnicode00 f +(can) 4336 1900 w +(add) 4544 1900 w +(mem\255) 4765 1900 w +(bers to his group, but all of) 720 2020 w +10 /LucidaTypewriter f +(sys) 2089 2020 w +10 /LucidaSansUnicode20 f +(\031) 2305 2020 w +10 /LucidaSansUnicode00 f +(s members are equal partners in that group.) 2337 2020 w +(Regular files are owned by the user that creates them.) 970 2176 w +(The group name is inherited) 3661 2176 w +(from) 720 2296 w +(the) 1002 2296 w +(directory) 1207 2296 w +(holding) 1688 2296 w +(the) 2106 2296 w +(new) 2311 2296 w +(file.) 2556 2296 w +(Device) 2821 2296 w +(files) 3190 2296 w +(are) 3442 2296 w +(treated) 3644 2296 w +(specially:) 4038 2296 w +(the) 4534 2296 w +(kernel) 4738 2296 w +(may) 720 2416 w +(arrange) 960 2416 w +(the) 1372 2416 w +(ownership) 1567 2416 w +(and) 2109 2416 w +(permissions) 2329 2416 w +(of) 2956 2416 w +(a) 3094 2416 w +(file) 3189 2416 w +(appropriate) 3381 2416 w +(to) 3986 2416 w +(the) 4125 2416 w +(user) 4321 2416 w +(accessing) 4572 2416 w +(the file.) 720 2536 w +(A) 970 2692 w +(good) 1076 2692 w +(example) 1360 2692 w +(of) 1810 2692 w +(the) 1945 2692 w +(generality) 2137 2692 w +(this) 2654 2692 w +(offers) 2871 2692 w +(is) 3192 2692 w +(process) 3310 2692 w +(files,) 3722 2692 w +(which) 3994 2692 w +(are) 4313 2692 w +(owned) 4503 2692 w +(and) 4860 2692 w +(read-protected) 720 2812 w +(by) 1506 2812 w +(the) 1669 2812 w +(owner) 1872 2812 w +(of) 2217 2812 w +(the) 2363 2812 w +(process.) 2566 2812 w +(If) 3052 2812 w +(the) 3166 2812 w +(owner) 3369 2812 w +(wants) 3714 2812 w +(to) 4044 2812 w +(let) 4190 2812 w +(someone) 4360 2812 w +(else) 4848 2812 w +(access) 720 2932 w +(the) 1080 2932 w +(memory) 1280 2932 w +(of) 1721 2932 w +(a) 1864 2932 w +(process,) 1964 2932 w +(for) 2415 2932 w +(example) 2599 2932 w +(to) 3057 2932 w +(let) 3200 2932 w +(the) 3367 2932 w +(author) 3567 2932 w +(of) 3930 2932 w +(a) 4073 2932 w +(program) 4173 2932 w +(debug) 4634 2932 w +(a) 4985 2932 w +(broken image, the standard) 720 3052 w +10 /LucidaTypewriter f +(chmod) 2098 3052 w +10 /LucidaSansUnicode00 f +(command applied to the process files does the job.) 2490 3052 w +(Another) 970 3208 w +(unusual) 1402 3208 w +(application) 1829 3208 w +(of) 2407 3208 w +(file) 2549 3208 w +(permissions) 2744 3208 w +(is) 3375 3208 w +(the) 3499 3208 w +(dump) 3698 3208 w +(file) 4023 3208 w +(system,) 4218 3208 w +(which) 4634 3208 w +(is) 4960 3208 w +(not) 720 3328 w +(only) 913 3328 w +(served) 1150 3328 w +(by) 1502 3328 w +(the) 1650 3328 w +(same) 1838 3328 w +(file) 2126 3328 w +(server) 2310 3328 w +(as) 2640 3328 w +(the) 2779 3328 w +(original) 2967 3328 w +(data,) 3368 3328 w +(but represented by the same) 3643 3328 w +(user) 720 3448 w +(database.) 968 3448 w +(Files) 1505 3448 w +(in) 1762 3448 w +(the) 1891 3448 w +(dump) 2085 3448 w +(are) 2405 3448 w +(therefore) 2596 3448 w +(given) 3082 3448 w +(identical) 3382 3448 w +(protection) 3832 3448 w +(as) 4369 3448 w +(files) 4514 3448 w +(in) 4755 3448 w +(the) 4885 3448 w +(regular) 720 3568 w +(file) 1102 3568 w +(system;) 1288 3568 w +(if) 1695 3568 w +(a) 1796 3568 w +(file) 1886 3568 w +(is) 2072 3568 w +(owned) 2187 3568 w +(by) 2541 3568 w +10 /LucidaTypewriter f +(pjw) 2691 3568 w +10 /LucidaSansUnicode00 f +(and) 2942 3568 w +(read-protected,) 3157 3568 w +(once) 3962 3568 w +(it) 4227 3568 w +(is) 4328 3568 w +(in) 4443 3568 w +(the) 4569 3568 w +(dump) 4759 3568 w +(file) 720 3688 w +(system) 911 3688 w +(it) 1291 3688 w +(is) 1397 3688 w +(still) 1517 3688 w +(owned) 1733 3688 w +(by) 2093 3688 w +10 /LucidaTypewriter f +(pjw) 2249 3688 w +10 /LucidaSansUnicode00 f +(and) 2506 3688 w +(read-protected.) 2727 3688 w +(Also,) 3570 3688 w +(since) 3853 3688 w +(the) 4143 3688 w +(dump) 4339 3688 w +(file) 4661 3688 w +(sys\255) 4853 3688 w +(tem) 720 3808 w +(is) 947 3808 w +(immutable,) 1068 3808 w +(the) 1658 3808 w +(file) 1854 3808 w +(cannot) 2046 3808 w +(be) 2415 3808 w +(changed;) 2575 3808 w +(it) 3059 3808 w +(is) 3166 3808 w +(read-protected) 3287 3808 w +(forever.) 4066 3808 w +(Drawbacks) 4514 3808 w +(are) 720 3928 w +(that) 915 3928 w +(if) 1149 3928 w +(the) 1258 3928 w +(file) 1456 3928 w +(is) 1650 3928 w +(readable) 1773 3928 w +(but) 2234 3928 w +(should) 2439 3928 w +(have) 2810 3928 w +(been) 3078 3928 w +(read-protected,) 3358 3928 w +(it) 4172 3928 w +(is) 4282 3928 w +(readable) 4406 3928 w +(for\255) 4868 3928 w +(ever, and that user names are hard to re-use.) 720 4048 w +10 /LucidaSans-Demi f +(Performance) 720 4288 w +10 /LucidaSansUnicode00 f +(As) 970 4444 w +(a) 1137 4444 w +(simple) 1239 4444 w +(measure) 1607 4444 w +(of) 2069 4444 w +(the) 2215 4444 w +(performance) 2418 4444 w +(of) 3082 4444 w +(the) 3228 4444 w +(Plan) 3431 4444 w +(9) 3680 4444 w +(kernel,) 3791 4444 w +(we) 4173 4444 w +(compared) 4354 4444 w +(the) 4885 4444 w +(time) 720 4564 w +(to) 976 4564 w +(do) 1115 4564 w +(some) 1280 4564 w +(simple) 1582 4564 w +(operations) 1944 4564 w +(on) 2501 4564 w +(Plan) 2664 4564 w +(9) 2905 4564 w +(and) 3008 4564 w +(on) 3228 4564 w +(SGI) 3391 4564 w +10 /LucidaSansUnicode20 f +(\031) 3546 4564 w +10 /LucidaSansUnicode00 f +(s) 3578 4564 w +(IRIX) 3669 4564 w +(Release) 3893 4564 w +(5.3) 4299 4564 w +(running) 4497 4564 w +(on) 4917 4564 w +(an) 720 4684 w +(SGI) 886 4684 w +(Challenge) 1090 4684 w +(M) 1620 4684 w +(with) 1756 4684 w +(a) 2011 4684 w +(100MHz) 2116 4684 w +(MIPS) 2572 4684 w +(R4400) 2846 4684 w +(and) 3211 4684 w +(a) 3441 4684 w +(1-megabyte) 3546 4684 w +(secondary) 4191 4684 w +(cache.) 4733 4684 w +(The test program was written in Alef, compiled with the same compiler, and run on iden\255) 720 4804 w +(tical hardware, so the only variables are the operating system and libraries.) 720 4924 w +(The) 970 5080 w +(program) 1208 5080 w +(tests) 1681 5080 w +(the) 1970 5080 w +(time) 2182 5080 w +(to) 2455 5080 w +(do) 2611 5080 w +(a) 2793 5080 w +(context) 2906 5080 w +(switch) 3329 5080 w +(\() 3694 5080 w +10 /LucidaTypewriter f +(rendezvous) 3727 5080 w +10 /LucidaSansUnicode00 f +(on) 4505 5080 w +(Plan) 4686 5080 w +(9,) 4945 5080 w +10 /LucidaTypewriter f +(blockproc) 720 5200 w +10 /LucidaSansUnicode00 f +(on) 1410 5200 w +(IRIX\);) 1575 5200 w +(a) 1866 5200 w +(trivial) 1963 5200 w +(system) 2277 5200 w +(call) 2659 5200 w +(\() 2865 5200 w +10 /LucidaTypewriter f +(rfork\(0\)) 2898 5200 w +10 /LucidaSansUnicode00 f +(and) 3516 5200 w +10 /LucidaTypewriter f +(nap\(0\)) 3738 5200 w +10 /LucidaSansUnicode00 f +(\);) 4170 5200 w +(and) 4277 5200 w +(lightweight) 4498 5200 w +(fork) 720 5320 w +(\() 965 5320 w +10 /LucidaTypewriter f +(rfork\(RFPROC\)) 998 5320 w +10 /LucidaSansUnicode00 f +(and) 1982 5320 w +10 /LucidaTypewriter f +(sproc\(PR_SFDS|PR_SADDR\)) 2210 5320 w +10 /LucidaSansUnicode00 f +(\).) 3866 5320 w +(It) 4011 5320 w +(also) 4126 5320 w +(measures) 4371 5320 w +(the) 4885 5320 w +(time) 720 5440 w +(to) 968 5440 w +(send) 1099 5440 w +(a) 1364 5440 w +(byte) 1452 5440 w +(on) 1693 5440 w +(a) 1849 5440 w +(pipe) 1937 5440 w +(from) 2181 5440 w +(one) 2446 5440 w +(process) 2658 5440 w +(to) 3065 5440 w +(another) 3196 5440 w +(and) 3603 5440 w +(the) 3816 5440 w +(throughput) 4004 5440 w +(on) 4586 5440 w +(a pipe) 4742 5440 w +(between two processes.) 720 5560 w +(The results appear in Table 1.) 1943 5560 w +10 /S f +(_) 1733 5640 w +(_____________________________________________) 1777 5640 w +10 /LucidaSansUnicode00 f +(Test) 2052 5760 w +(Plan 9) 2818 5760 w +(IRIX) 3598 5760 w +10 /S f +(_) 1733 5780 w +(_____________________________________________) 1777 5780 w +10 /LucidaSansUnicode00 f +(Context switch) 1783 5900 w +(39 \265s) 2868 5900 w +(150 \265s) 3529 5900 w +(System call) 1783 6020 w +(6 \265s) 2931 6020 w +(36 \265s) 3592 6020 w +(Light fork) 1783 6140 w +(1300 \265s) 2742 6140 w +(2200 \265s) 3466 6140 w +(Pipe latency) 1783 6260 w +(110 \265s) 2805 6260 w +(200 \265s) 3529 6260 w +(Pipe bandwidth) 1783 6380 w +(11678 KB/s) 2679 6380 w +(14545 KB/s) 3403 6380 w +10 /S f +(_) 1733 6400 w +(_____________________________________________) 1777 6400 w +(\347) 1733 6400 w +(\347) 1733 6340 w +(\347) 1733 6240 w +(\347) 1733 6140 w +(\347) 1733 6040 w +(\347) 1733 5940 w +(\347) 1733 5840 w +(\347) 1733 5740 w +(\347) 4027 6400 w +(\347) 4027 6340 w +(\347) 4027 6240 w +(\347) 4027 6140 w +(\347) 4027 6040 w +(\347) 4027 5940 w +(\347) 4027 5840 w +(\347) 4027 5740 w +10 /LucidaSans-Italic f +(Table 1.) 2025 6580 w +(Performance comparison.) 2482 6580 w +10 /LucidaSansUnicode00 f +(Although) 720 6736 w +(the) 1203 6736 w +(Plan) 1397 6736 w +(9) 1637 6736 w +(times) 1739 6736 w +(are) 2044 6736 w +(not) 2235 6736 w +(spectacular,) 2434 6736 w +(they) 3056 6736 w +(show) 3302 6736 w +(that) 3592 6736 w +(the) 3822 6736 w +(kernel) 4016 6736 w +(is) 4357 6736 w +(competitive) 4476 6736 w +(with commercial systems.) 720 6856 w +cleartomark +showpage +saveobj restore +%%EndPage: 19 19 +%%Page: 20 20 +/saveobj save def +mark +20 pagesetup +10 /LucidaSansUnicode00 f +(\255 20 \255) 2752 480 w +10 /LucidaSans-Demi f +(Discussion) 720 840 w +10 /LucidaSansUnicode00 f +(Plan) 970 996 w +(9) 1213 996 w +(has) 1318 996 w +(a) 1528 996 w +(relatively) 1625 996 w +(conventional) 2103 996 w +(kernel;) 2762 996 w +(the) 3138 996 w +(system) 3336 996 w +10 /LucidaSansUnicode20 f +(\031) 3676 996 w +10 /LucidaSansUnicode00 f +(s) 3708 996 w +(novelty) 3802 996 w +(lies) 4194 996 w +(in) 4402 996 w +(the) 4536 996 w +(pieces) 4734 996 w +(outside) 720 1116 w +(the) 1123 1116 w +(kernel) 1322 1116 w +(and) 1668 1116 w +(the) 1892 1116 w +(way) 2090 1116 w +(they) 2317 1116 w +(interact.) 2567 1116 w +(When) 3042 1116 w +(building) 3351 1116 w +(Plan) 3793 1116 w +(9,) 4037 1116 w +(we) 4175 1116 w +(considered) 4351 1116 w +(all) 4927 1116 w +(aspects) 720 1236 w +(of) 1134 1236 w +(the) 1282 1236 w +(system) 1487 1236 w +(together,) 1877 1236 w +(solving) 2371 1236 w +(problems) 2767 1236 w +(where) 3275 1236 w +(the) 3618 1236 w +(solution) 3824 1236 w +(fit) 4267 1236 w +(best.) 4421 1236 w +(Some\255) 4743 1236 w +(times) 720 1356 w +(the) 1022 1356 w +(solution) 1213 1356 w +(spanned) 1641 1356 w +(many) 2089 1356 w +(components.) 2387 1356 w +(An) 3083 1356 w +(example) 3249 1356 w +(is) 3697 1356 w +(the) 3812 1356 w +(problem) 4002 1356 w +(of) 4443 1356 w +(heteroge\255) 4576 1356 w +(neous) 720 1476 w +(instruction) 1067 1476 w +(architectures,) 1645 1476 w +(which) 2362 1476 w +(is) 2699 1476 w +(addressed) 2835 1476 w +(by) 3390 1476 w +(the) 3561 1476 w +(compilers) 3772 1476 w +(\(different) 4302 1476 w +(code) 4809 1476 w +(characters,) 720 1596 w +(portable) 1301 1596 w +(object) 1755 1596 w +(code\),) 2102 1596 w +(the) 2447 1596 w +(environment) 2651 1596 w +(\() 3311 1596 w +10 /LucidaTypewriter f +($cputype) 3344 1596 w +10 /LucidaSansUnicode00 f +(and) 3968 1596 w +10 /LucidaTypewriter f +($objtype) 4196 1596 w +10 /LucidaSansUnicode00 f +(\),) 4772 1596 w +(the) 4885 1596 w +(name) 720 1716 w +(space) 1029 1716 w +(\(binding) 1348 1716 w +(in) 1794 1716 w +10 /LucidaTypewriter f +(/bin) 1928 1716 w +10 /LucidaSansUnicode00 f +(\),) 2216 1716 w +(and) 2324 1716 w +(other) 2547 1716 w +(components.) 2847 1716 w +(Sometimes) 3551 1716 w +(many) 4124 1716 w +(issues) 4430 1716 w +(could) 4774 1716 w +(be) 720 1836 w +(solved) 879 1836 w +(in) 1231 1836 w +(a) 1362 1836 w +(single) 1457 1836 w +(place.) 1786 1836 w +(The) 2144 1836 w +(best) 2365 1836 w +(example) 2612 1836 w +(is) 3065 1836 w +(9P,) 3185 1836 w +(which) 3375 1836 w +(centralizes) 3696 1836 w +(naming,) 4259 1836 w +(access,) 4693 1836 w +(and) 720 1956 w +(authentication.) 942 1956 w +(9P) 1743 1956 w +(is) 1903 1956 w +(really) 2025 1956 w +(the) 2329 1956 w +(core) 2526 1956 w +(of) 2777 1956 w +(the) 2917 1956 w +(system;) 3114 1956 w +(it) 3528 1956 w +(is) 3636 1956 w +(fair) 3758 1956 w +(to) 3962 1956 w +(say) 4102 1956 w +(that) 4302 1956 w +(the) 4535 1956 w +(Plan) 4733 1956 w +(9) 4977 1956 w +(kernel is primarily a 9P multiplexer.) 720 2076 w +(Plan) 970 2232 w +(9) 1212 2232 w +10 /LucidaSansUnicode20 f +(\031) 1275 2232 w +10 /LucidaSansUnicode00 f +(s) 1307 2232 w +(focus) 1399 2232 w +(on) 1702 2232 w +(files) 1866 2232 w +(and) 2109 2232 w +(naming) 2330 2232 w +(is) 2735 2232 w +(central) 2857 2232 w +(to) 3230 2232 w +(its) 3370 2232 w +(expressiveness.) 3529 2232 w +(Particularly) 4371 2232 w +(in) 4949 2232 w +(distributed) 720 2352 w +(computing,) 1288 2352 w +(the) 1877 2352 w +(way) 2068 2352 w +(things) 2288 2352 w +(are) 2627 2352 w +(named) 2815 2352 w +(has) 3180 2352 w +(profound) 3384 2352 w +(influence) 3870 2352 w +(on) 4350 2352 w +(the) 4509 2352 w +(system) 4700 2352 w +([Nee89].) 720 2472 w +(The) 1199 2472 w +(combination) 1417 2472 w +(of) 2057 2472 w +(local) 2192 2472 w +(name) 2454 2472 w +(spaces) 2757 2472 w +(and) 3122 2472 w +(global) 3340 2472 w +(conventions) 3677 2472 w +(to) 4299 2472 w +(interconnect) 4435 2472 w +(networked) 720 2592 w +(resources) 1273 2592 w +(avoids) 1785 2592 w +(the) 2138 2592 w +(difficulty) 2335 2592 w +(of) 2803 2592 w +(maintaining) 2943 2592 w +(a) 3560 2592 w +(global) 3657 2592 w +(uniform) 3998 2592 w +(name) 4425 2592 w +(space,) 4732 2592 w +(while) 720 2712 w +(naming) 1011 2712 w +(everything) 1412 2712 w +(like) 1959 2712 w +(a) 2169 2712 w +(file) 2262 2712 w +(makes) 2451 2712 w +(the) 2803 2712 w +(system) 2997 2712 w +(easy) 3376 2712 w +(to) 3629 2712 w +(understand,) 3766 2712 w +(even) 4389 2712 w +(for) 4654 2712 w +(nov\255) 4832 2712 w +(ices.) 720 2832 w +(Consider) 1005 2832 w +(the) 1471 2832 w +(dump) 1659 2832 w +(file) 1973 2832 w +(system,) 2157 2832 w +(which) 2562 2832 w +(is) 2876 2832 w +(trivial) 2989 2832 w +(to) 3294 2832 w +(use) 3425 2832 w +(for) 3627 2832 w +(anyone) 3799 2832 w +(familiar) 4180 2832 w +(with) 4581 2832 w +(hier\255) 4819 2832 w +(archical) 720 2952 w +(file) 1138 2952 w +(systems.) 1334 2952 w +(At) 1834 2952 w +(a) 1985 2952 w +(deeper) 2085 2952 w +(level,) 2465 2952 w +(building) 2764 2952 w +(all) 3209 2952 w +(the) 3368 2952 w +(resources) 3569 2952 w +(above) 4085 2952 w +(a) 4418 2952 w +(single) 4519 2952 w +(uni\255) 4854 2952 w +(form) 720 3072 w +(interface) 998 3072 w +(makes) 1468 3072 w +(interoperability) 1827 3072 w +(easy.) 2613 3072 w +(Once) 2937 3072 w +(a) 3230 3072 w +(resource) 3331 3072 w +(exports) 3795 3072 w +(a) 4210 3072 w +(9P) 4310 3072 w +(interface,) 4473 3072 w +(it) 4974 3072 w +(can) 720 3192 w +(combine) 931 3192 w +(transparently) 1390 3192 w +(with) 2075 3192 w +(any) 2324 3192 w +(other) 2537 3192 w +(part) 2838 3192 w +(of) 3078 3192 w +(the) 3220 3192 w +(system) 3419 3192 w +(to) 3803 3192 w +(build) 3945 3192 w +(unusual) 4235 3192 w +(applica\255) 4662 3192 w +(tions;) 720 3312 w +(the) 1043 3312 w +(details) 1249 3312 w +(are) 1620 3312 w +(hidden.) 1823 3312 w +(This) 2272 3312 w +(may) 2527 3312 w +(sound) 2777 3312 w +(object-oriented,) 3126 3312 w +(but) 3969 3312 w +(there) 4181 3312 w +(are) 4483 3312 w +(distinc\255) 4685 3312 w +(tions.) 720 3432 w +(First,) 1064 3432 w +(9P) 1348 3432 w +(defines) 1506 3432 w +(a) 1900 3432 w +(fixed) 1995 3432 w +(set) 2281 3432 w +(of) 2465 3432 w +10 /LucidaSansUnicode20 f +(\030) 2603 3432 w +10 /LucidaSansUnicode00 f +(methods) 2635 3432 w +10 /LucidaSansUnicode20 f +(\031) 3058 3432 w +10 /LucidaSansUnicode00 f +(;) 3090 3432 w +(it) 3162 3432 w +(is) 3268 3432 w +(not) 3388 3432 w +(an) 3588 3432 w +(extensible) 3746 3432 w +(protocol.) 4287 3432 w +(More) 4796 3432 w +(important,) 720 3552 w +(files) 1296 3552 w +(are) 1563 3552 w +(well-defined) 1780 3552 w +(and) 2460 3552 w +(well-understood) 2705 3552 w +(and) 3576 3552 w +(come) 3821 3552 w +(prepackaged) 4147 3552 w +(with) 4835 3552 w +(familiar) 720 3672 w +(methods) 1127 3672 w +(of) 1589 3672 w +(access,) 1726 3672 w +(protection,) 2112 3672 w +(naming,) 2681 3672 w +(and) 3115 3672 w +(networking.) 3334 3672 w +(Objects,) 3982 3672 w +(despite) 4420 3672 w +(their) 4815 3672 w +(generality,) 720 3792 w +(do) 1266 3792 w +(not) 1425 3792 w +(come) 1620 3792 w +(with) 1916 3792 w +(these) 2156 3792 w +(attributes) 2453 3792 w +(defined.) 2956 3792 w +(By) 3421 3792 w +(reducing) 3566 3792 w +10 /LucidaSansUnicode20 f +(\030) 4027 3792 w +10 /LucidaSansUnicode00 f +(object) 4059 3792 w +10 /LucidaSansUnicode20 f +(\031) 4357 3792 w +10 /LucidaSansUnicode00 f +(to) 4424 3792 w +10 /LucidaSansUnicode20 f +(\030) 4557 3792 w +10 /LucidaSansUnicode00 f +(file) 4589 3792 w +10 /LucidaSansUnicode20 f +(\031) 4740 3792 w +10 /LucidaSansUnicode00 f +(,) 4772 3792 w +(Plan) 4839 3792 w +(9 gets some technology for free.) 720 3912 w +(Nonetheless,) 970 4068 w +(it) 1635 4068 w +(is) 1739 4068 w +(possible) 1857 4068 w +(to) 2299 4068 w +(push) 2436 4068 w +(the) 2713 4068 w +(idea) 2907 4068 w +(of) 3149 4068 w +(file-based) 3286 4068 w +(computing) 3822 4068 w +(too) 4381 4068 w +(far.) 4579 4068 w +(Con\255) 4815 4068 w +(verting) 720 4188 w +(every) 1096 4188 w +(resource) 1390 4188 w +(in) 1846 4188 w +(the) 1974 4188 w +(system) 2166 4188 w +(into) 2543 4188 w +(a) 2769 4188 w +(file) 2861 4188 w +(system) 3049 4188 w +(is) 3425 4188 w +(a) 3541 4188 w +(kind) 3632 4188 w +(of) 3880 4188 w +(metaphor,) 4014 4188 w +(and) 4550 4188 w +(meta\255) 4766 4188 w +(phors) 720 4308 w +(can) 1036 4308 w +(be) 1242 4308 w +(abused.) 1399 4308 w +(A) 1851 4308 w +(good) 1958 4308 w +(example) 2243 4308 w +(of) 2694 4308 w +(restraint) 2830 4308 w +(is) 3277 4308 w +10 /LucidaTypewriter f +(/proc) 3395 4308 w +10 /LucidaSansUnicode00 f +(,) 3755 4308 w +(which) 3825 4308 w +(is) 4144 4308 w +(only) 4262 4308 w +(a) 4504 4308 w +(view) 4597 4308 w +(of) 4849 4308 w +(a) 4985 4308 w +(process,) 720 4428 w +(not) 1172 4428 w +(a) 1378 4428 w +(representation.) 1479 4428 w +(To) 2296 4428 w +(run) 2465 4428 w +(processes,) 2675 4428 w +(the) 3233 4428 w +(usual) 3433 4428 w +10 /LucidaTypewriter f +(fork) 3737 4428 w +10 /LucidaSansUnicode00 f +(and) 4070 4428 w +10 /LucidaTypewriter f +(exec) 4295 4428 w +10 /LucidaSansUnicode00 f +(calls) 4628 4428 w +(are) 4888 4428 w +(still necessary, rather than doing something like) 720 4548 w +9 /LucidaTypewriter f +(cp) 1008 4718 w +(/bin/date) 1203 4718 w +(/proc/clone/mem) 1853 4718 w +10 /LucidaSansUnicode00 f +(The) 720 4898 w +(problem) 940 4898 w +(with) 1385 4898 w +(such) 1629 4898 w +(examples) 1894 4898 w +(is) 2397 4898 w +(that) 2516 4898 w +(they) 2746 4898 w +(require) 2992 4898 w +(the) 3379 4898 w +(server) 3574 4898 w +(to) 3911 4898 w +(do) 4049 4898 w +(things) 4213 4898 w +(not) 4556 4898 w +(under) 4756 4898 w +(its) 720 5018 w +(control.) 884 5018 w +(The) 1337 5018 w +(ability) 1565 5018 w +(to) 1906 5018 w +(assign) 2051 5018 w +(meaning) 2408 5018 w +(to) 2874 5018 w +(a) 3019 5018 w +(command) 3121 5018 w +(like) 3646 5018 w +(this) 3865 5018 w +(does) 4090 5018 w +(not) 4367 5018 w +(imply) 4573 5018 w +(the) 4885 5018 w +(meaning will fall naturally out of) 720 5138 w +(the) 2326 5138 w +(structure) 2514 5138 w +(of) 2985 5138 w +(answering) 3116 5138 w +(the) 3644 5138 w +(9P) 3832 5138 w +(requests) 3983 5138 w +(it) 4433 5138 w +(generates.) 4532 5138 w +(As) 720 5258 w +(a) 886 5258 w +(related) 987 5258 w +(example,) 1370 5258 w +(Plan) 1861 5258 w +(9) 2108 5258 w +(does) 2217 5258 w +(not) 2494 5258 w +(put) 2700 5258 w +(machine) 2907 5258 w +10 /LucidaSansUnicode20 f +(\031) 3315 5258 w +10 /LucidaSansUnicode00 f +(s) 3347 5258 w +(network) 3443 5258 w +(names) 3880 5258 w +(in) 4242 5258 w +(the) 4378 5258 w +(file) 4578 5258 w +(name) 4774 5258 w +(space.) 720 5378 w +(The) 1096 5378 w +(network) 1313 5378 w +(interfaces) 1741 5378 w +(provide) 2252 5378 w +(a) 2653 5378 w +(very) 2744 5378 w +(different) 2982 5378 w +(model) 3437 5378 w +(of) 3776 5378 w +(naming,) 3911 5378 w +(because) 4343 5378 w +(using) 4774 5378 w +10 /LucidaTypewriter f +(open) 720 5498 w +10 /LucidaSansUnicode00 f +(,) 1008 5498 w +10 /LucidaTypewriter f +(create) 1087 5498 w +10 /LucidaSansUnicode00 f +(,) 1519 5498 w +10 /LucidaTypewriter f +(read) 1598 5498 w +10 /LucidaSansUnicode00 f +(,) 1886 5498 w +(and) 1965 5498 w +10 /LucidaTypewriter f +(write) 2192 5498 w +10 /LucidaSansUnicode00 f +(on) 2599 5498 w +(such) 2769 5498 w +(files) 3042 5498 w +(would) 3291 5498 w +(not) 3629 5498 w +(offer) 3835 5498 w +(a) 4113 5498 w +(suitable) 4214 5498 w +(place) 4642 5498 w +(to) 4942 5498 w +(encode all the details of call setup for an arbitrary network.) 720 5618 w +(This) 3667 5618 w +(does) 3905 5618 w +(not) 4169 5618 w +(mean) 4362 5618 w +(that) 4661 5618 w +(the) 4885 5618 w +(network) 720 5738 w +(interface) 1147 5738 w +(cannot) 1606 5738 w +(be) 1969 5738 w +(file-like,) 2123 5738 w +(just) 2571 5738 w +(that) 2786 5738 w +(it) 3012 5738 w +(must) 3113 5738 w +(have) 3390 5738 w +(a) 3649 5738 w +(more) 3738 5738 w +(tightly) 4023 5738 w +(defined) 4365 5738 w +(struc\255) 4765 5738 w +(ture.) 720 5858 w +(What) 970 6014 w +(would) 1243 6014 w +(we) 1568 6014 w +(do) 1735 6014 w +(differently) 1893 6014 w +(next) 2426 6014 w +(time?) 2676 6014 w +(Some) 2999 6014 w +(elements) 3297 6014 w +(of) 3771 6014 w +(the) 3903 6014 w +(implementation) 4092 6014 w +(are) 4888 6014 w +(unsatisfactory.) 720 6134 w +(Using) 1501 6134 w +(streams) 1810 6134 w +(to) 2229 6134 w +(implement) 2362 6134 w +(network) 2915 6134 w +(interfaces) 3342 6134 w +(in) 3852 6134 w +(the) 3978 6134 w +(kernel) 4168 6134 w +(allows) 4505 6134 w +(pro\255) 4842 6134 w +(tocols) 720 6254 w +(to) 1052 6254 w +(be) 1192 6254 w +(connected) 1353 6254 w +(together) 1894 6254 w +(dynamically,) 2348 6254 w +(such) 2992 6254 w +(as) 3260 6254 w +(to) 3409 6254 w +(attach) 3550 6254 w +(the) 3890 6254 w +(same) 4088 6254 w +(TTY) 4386 6254 w +(driver) 4617 6254 w +(to) 4942 6254 w +(TCP,) 720 6374 w +(URP,) 983 6374 w +(and) 1246 6374 w +(IL) 1470 6374 w +(connections,) 1596 6374 w +(but) 2255 6374 w +(Plan) 2461 6374 w +(9) 2706 6374 w +(makes) 2812 6374 w +(no) 3168 6374 w +(use) 3334 6374 w +(of) 3546 6374 w +(this) 3687 6374 w +(configurability.) 3909 6374 w +(\(It) 4715 6374 w +(was) 4857 6374 w +(exploited,) 720 6494 w +(however,) 1265 6494 w +(in) 1760 6494 w +(the) 1909 6494 w +(research) 2123 6494 w +(UNIX) 2595 6494 w +(system) 2889 6494 w +(for) 3288 6494 w +(which) 3486 6494 w +(streams) 3826 6494 w +(were) 4269 6494 w +(invented.\)) 4558 6494 w +(Replacing streams by static I/O queues would simplify the code and make it faster.) 720 6614 w +(Although) 970 6770 w +(the) 1453 6770 w +(main) 1647 6770 w +(Plan) 1925 6770 w +(9) 2165 6770 w +(kernel) 2267 6770 w +(is) 2609 6770 w +(portable) 2729 6770 w +(across) 3174 6770 w +(many) 3524 6770 w +(machines,) 3826 6770 w +(the) 4357 6770 w +(file) 4552 6770 w +(server) 4743 6770 w +(is) 720 6890 w +(implemented) 834 6890 w +(separately.) 1505 6890 w +(This) 2098 6890 w +(has) 2337 6890 w +(caused) 2539 6890 w +(several) 2910 6890 w +(problems:) 3283 6890 w +(drivers) 3805 6890 w +(that) 4171 6890 w +(must) 4395 6890 w +(be) 4671 6890 w +(writ\255) 4823 6890 w +(ten) 720 7010 w +(twice,) 910 7010 w +(bugs) 1227 7010 w +(that) 1501 7010 w +(must) 1728 7010 w +(be) 2007 7010 w +(fixed) 2162 7010 w +(twice,) 2444 7010 w +(and) 2762 7010 w +(weaker) 2978 7010 w +(portability) 3357 7010 w +(of) 3889 7010 w +(the) 4023 7010 w +(file) 4214 7010 w +(system) 4401 7010 w +(code.) 4777 7010 w +(The) 720 7130 w +(solution) 935 7130 w +(is) 1360 7130 w +(easy:) 1473 7130 w +(the) 1752 7130 w +(file) 1940 7130 w +(server) 2124 7130 w +(kernel) 2454 7130 w +(should) 2789 7130 w +(be) 3150 7130 w +(maintained) 3302 7130 w +(as) 3876 7130 w +(a) 4015 7130 w +(variant) 4103 7130 w +(of) 4467 7130 w +(the) 4598 7130 w +(regu\255) 4786 7130 w +(lar) 720 7250 w +(operating) 885 7250 w +(system,) 1391 7250 w +(with) 1803 7250 w +(no) 2048 7250 w +(user) 2212 7250 w +(processes) 2463 7250 w +(and) 2985 7250 w +(special) 3206 7250 w +(compiled-in) 3581 7250 w +(kernel) 4216 7250 w +(processes) 4559 7250 w +cleartomark +showpage +saveobj restore +%%EndPage: 20 20 +%%Page: 21 21 +/saveobj save def +mark +21 pagesetup +10 /LucidaSansUnicode00 f +(\255 21 \255) 2752 480 w +(to) 720 840 w +(implement) 852 840 w +(file) 1404 840 w +(service.) 1589 840 w +(Another) 2023 840 w +(improvement) 2444 840 w +(to) 3120 840 w +(the) 3251 840 w +(file) 3439 840 w +(system) 3623 840 w +(would) 3996 840 w +(be) 4321 840 w +(a) 4473 840 w +(change) 4561 840 w +(of) 4942 840 w +(internal) 720 960 w +(structure.) 1136 960 w +(The) 1683 960 w +(WORM) 1909 960 w +(jukebox) 2267 960 w +(is) 2703 960 w +(the) 2828 960 w +(least) 3028 960 w +(reliable) 3301 960 w +(piece) 3704 960 w +(of) 4005 960 w +(the) 4149 960 w +(hardware,) 4350 960 w +(but) 4878 960 w +(because) 720 1080 w +(it) 1159 1080 w +(holds) 1270 1080 w +(the) 1581 1080 w +(metadata) 1781 1080 w +(of) 2277 1080 w +(the) 2420 1080 w +(file) 2620 1080 w +(system,) 2815 1080 w +(it) 3231 1080 w +(must) 3341 1080 w +(be) 3628 1080 w +(present) 3791 1080 w +(in) 4201 1080 w +(order) 4336 1080 w +(to) 4642 1080 w +(serve) 4784 1080 w +(files.) 720 1200 w +(The) 1024 1200 w +(system) 1243 1200 w +(could) 1621 1200 w +(be) 1925 1200 w +(restructured) 2082 1200 w +(so) 2719 1200 w +(the) 2870 1200 w +(WORM) 3064 1200 w +(is) 3416 1200 w +(a) 3535 1200 w +(backup) 3629 1200 w +(device) 4020 1200 w +(only,) 4366 1200 w +(with) 4641 1200 w +(the) 4885 1200 w +(file) 720 1320 w +(system) 922 1320 w +(proper) 1313 1320 w +(residing) 1689 1320 w +(on) 2133 1320 w +(magnetic) 2307 1320 w +(disks.) 2803 1320 w +(This) 3170 1320 w +(would) 3426 1320 w +(require) 3768 1320 w +(no) 4166 1320 w +(change) 4339 1320 w +(to) 4737 1320 w +(the) 4885 1320 w +(external interface.) 720 1440 w +(Although) 970 1596 w +(Plan) 1461 1596 w +(9) 1709 1596 w +(has) 1819 1596 w +(per-process) 2034 1596 w +(name) 2673 1596 w +(spaces,) 2986 1596 w +(it) 3392 1596 w +(has) 3505 1596 w +(no) 3721 1596 w +(mechanism) 3892 1596 w +(to) 4492 1596 w +(give) 4638 1596 w +(the) 4885 1596 w +(description) 720 1716 w +(of) 1304 1716 w +(a) 1443 1716 w +(process) 1539 1716 w +10 /LucidaSansUnicode20 f +(\031) 1913 1716 w +10 /LucidaSansUnicode00 f +(s) 1945 1716 w +(name) 2037 1716 w +(space) 2344 1716 w +(to) 2661 1716 w +(another) 2800 1716 w +(process) 3215 1716 w +(except) 3630 1716 w +(by) 3995 1716 w +(direct) 4151 1716 w +(inheritance.) 4468 1716 w +(The) 720 1836 w +10 /LucidaTypewriter f +(cpu) 960 1836 w +10 /LucidaSansUnicode00 f +(command,) 1235 1836 w +(for) 1804 1836 w +(example,) 2002 1836 w +(cannot) 2506 1836 w +(in) 2893 1836 w +(general) 3043 1836 w +(reproduce) 3463 1836 w +(the) 4016 1836 w +(terminal) 4230 1836 w +10 /LucidaSansUnicode20 f +(\031) 4632 1836 w +10 /LucidaSansUnicode00 f +(s) 4664 1836 w +(name) 4774 1836 w +(space;) 720 1956 w +(it) 1065 1956 w +(can) 1168 1956 w +(only) 1373 1956 w +(re-interpret) 1614 1956 w +(the) 2228 1956 w +(user) 2420 1956 w +10 /LucidaSansUnicode20 f +(\031) 2630 1956 w +10 /LucidaSansUnicode00 f +(s) 2662 1956 w +(login) 2749 1956 w +(profile) 3028 1956 w +(and) 3380 1956 w +(make) 3596 1956 w +(substitutions) 3894 1956 w +(for) 4562 1956 w +(things) 4737 1956 w +(like) 720 2076 w +(the) 928 2076 w +(name) 1119 2076 w +(of) 1422 2076 w +(the) 1557 2076 w +(binary) 1749 2076 w +(directory) 2088 2076 w +(to) 2556 2076 w +(load.) 2691 2076 w +(This) 3000 2076 w +(misses) 3242 2076 w +(any) 3610 2076 w +(local) 3816 2076 w +(modifications) 4078 2076 w +(made) 4773 2076 w +(before) 720 2196 w +(running) 1068 2196 w +10 /LucidaTypewriter f +(cpu) 1482 2196 w +10 /LucidaSansUnicode00 f +(.) 1698 2196 w +(It) 1796 2196 w +(should) 1895 2196 w +(instead) 2256 2196 w +(be) 2642 2196 w +(possible) 2794 2196 w +(to) 3230 2196 w +(capture) 3361 2196 w +(the) 3759 2196 w +(terminal) 3947 2196 w +10 /LucidaSansUnicode20 f +(\031) 4349 2196 w +10 /LucidaSansUnicode00 f +(s) 4381 2196 w +(name) 4465 2196 w +(space) 4764 2196 w +(and transmit its description to a remote process.) 720 2316 w +(Despite) 970 2472 w +(these) 1385 2472 w +(problems,) 1695 2472 w +(Plan) 2232 2472 w +(9) 2481 2472 w +(works) 2592 2472 w +(well.) 2928 2472 w +(It) 3231 2472 w +(has) 3345 2472 w +(matured) 3562 2472 w +(into) 4018 2472 w +(the) 4256 2472 w +(system) 4460 2472 w +(that) 4849 2472 w +(supports) 720 2592 w +(our) 1182 2592 w +(research,) 1379 2592 w +(rather) 1857 2592 w +(than) 2182 2592 w +(being) 2431 2592 w +(the) 2736 2592 w +(subject) 2924 2592 w +(of the research itself.) 3307 2592 w +(Experimental) 4404 2592 w +(new) 720 2712 w +(work) 964 2712 w +(includes) 1250 2712 w +(developing) 1702 2712 w +(interfaces) 2284 2712 w +(to) 2808 2712 w +(faster) 2955 2712 w +(networks,) 3282 2712 w +(file) 3807 2712 w +(caching) 4008 2712 w +(in) 4430 2712 w +(the) 4571 2712 w +(client) 4776 2712 w +(kernel,) 720 2832 w +(encapsulating) 1106 2832 w +(and) 1832 2832 w +(exporting) 2064 2832 w +(name) 2588 2832 w +(spaces,) 2905 2832 w +(and) 3315 2832 w +(the) 3546 2832 w +(ability) 3752 2832 w +(to) 4097 2832 w +(re-establish) 4246 2832 w +(the) 4885 2832 w +(client) 720 2952 w +(state) 1020 2952 w +(after) 1292 2952 w +(a) 1554 2952 w +(server) 1645 2952 w +(crash.) 1978 2952 w +(Attention) 2338 2952 w +(is) 2824 2952 w +(now) 2940 2952 w +(focusing) 3176 2952 w +(on) 3627 2952 w +(using) 3787 2952 w +(the) 4090 2952 w +(system) 4282 2952 w +(to) 4659 2952 w +(build) 4794 2952 w +(distributed applications.) 720 3072 w +(One) 970 3228 w +(reason) 1207 3228 w +(for) 1574 3228 w +(Plan) 1754 3228 w +(9) 1996 3228 w +10 /LucidaSansUnicode20 f +(\031) 2059 3228 w +10 /LucidaSansUnicode00 f +(s) 2091 3228 w +(success) 2183 3228 w +(is) 2597 3228 w +(that) 2718 3228 w +(we) 2951 3228 w +(use) 3126 3228 w +(it) 3337 3228 w +(for) 3445 3228 w +(our) 3626 3228 w +(daily) 3832 3228 w +(work,) 4102 3228 w +(not) 4413 3228 w +(just) 4615 3228 w +(as) 4837 3228 w +(a) 4985 3228 w +(research) 720 3348 w +(tool.) 1173 3348 w +(Active) 1464 3348 w +(use) 1797 3348 w +(forces) 2005 3348 w +(us) 2341 3348 w +(to) 2493 3348 w +(address) 2630 3348 w +(shortcomings) 3049 3348 w +(as) 3749 3348 w +(they) 3894 3348 w +(arise) 4140 3348 w +(and) 4411 3348 w +(to) 4630 3348 w +(adapt) 4767 3348 w +(the) 720 3468 w +(system) 911 3468 w +(to) 1287 3468 w +(solve) 1421 3468 w +(our) 1706 3468 w +(problems.) 1907 3468 w +(Through) 2465 3468 w +(this) 2915 3468 w +(process,) 3131 3468 w +(Plan) 3574 3468 w +(9) 3812 3468 w +(has) 3912 3468 w +(become) 4117 3468 w +(a) 4534 3468 w +(comfort\255) 4626 3468 w +(able,) 720 3588 w +(productive) 1011 3588 w +(programming) 1581 3588 w +(environment,) 2298 3588 w +(as) 2996 3588 w +(well) 3157 3588 w +(as) 3403 3588 w +(a) 3564 3588 w +(vehicle) 3674 3588 w +(for) 4064 3588 w +(further) 4258 3588 w +(systems) 4649 3588 w +(research.) 720 3708 w +10 /LucidaSans-Demi f +(References) 720 3948 w +9 /LucidaSansUnicode00 f +([9man]) 720 4084 w +9 /LucidaSans-Italic f +(Plan) 1125 4084 w +(9) 1343 4084 w +(Programmer's) 1429 4084 w +(Manual,) 2089 4084 w +(Volume) 2470 4084 w +(1,) 2826 4084 w +9 /LucidaSansUnicode00 f +(AT&T) 2941 4084 w +(Bell) 3209 4084 w +(Laboratories,) 3392 4084 w +(Murray) 3994 4084 w +(Hill,) 4327 4084 w +(NJ,) 4530 4084 w +(1995.) 4683 4084 w +([ANSIC]) 720 4220 w +9 /LucidaSans-Italic f +(American) 1125 4220 w +(National) 1573 4220 w +(Standard) 1972 4220 w +(for) 2404 4220 w +(Information) 2561 4220 w +(Systems) 3106 4220 w +9 /LucidaSansUnicode20 f +(\023) 3489 4220 w +9 /LucidaSans-Italic f +(Programming) 3563 4220 w +(Language) 4197 4220 w +(C) 4657 4220 w +9 /LucidaSansUnicode00 f +(,) 4718 4220 w +(Amer\255) 4777 4220 w +(ican) 1125 4320 w +(National) 1332 4320 w +(Standards) 1724 4320 w +(Institute,) 2188 4320 w +(Inc.,) 2605 4320 w +(New) 2820 4320 w +(York,) 3035 4320 w +(1990.) 3293 4320 w +([Duff90]) 720 4456 w +(Tom) 1125 4456 w +(Duff,) 1350 4456 w +9 /LucidaSansUnicode20 f +(\030\030) 1598 4456 w +9 /LucidaSansUnicode00 f +(Rc) 1656 4456 w +(-) 1788 4456 w +(A) 1869 4456 w +(Shell) 1960 4456 w +(for) 2196 4456 w +(Plan) 2350 4456 w +(9) 2561 4456 w +(and) 2647 4456 w +(UNIX) 2839 4456 w +(systems) 3080 4456 w +9 /LucidaSansUnicode20 f +(\031\031) 3432 4456 w +9 /LucidaSansUnicode00 f +(,) 3490 4456 w +9 /LucidaSans-Italic f +(Proc.) 3548 4456 w +(of) 3797 4456 w +(the) 3912 4456 w +(Summer) 4080 4456 w +(1990) 4475 4456 w +(UKUUG) 4733 4456 w +(Conf.,) 1125 4556 w +9 /LucidaSansUnicode00 f +(London,) 1414 4556 w +(July,) 1799 4556 w +(1990,) 2014 4556 w +(pp.) 2300 4556 w +(21-33,) 2472 4556 w +(reprinted,) 2810 4556 w +(in) 3271 4556 w +(a) 3382 4556 w +(different) 3461 4556 w +(form,) 3865 4556 w +(in) 4132 4556 w +(this) 4243 4556 w +(volume.) 4433 4556 w +([Fra80]) 720 4692 w +(A.G.) 1125 4692 w +(Fraser,) 1346 4692 w +9 /LucidaSansUnicode20 f +(\030\030) 1680 4692 w +9 /LucidaSansUnicode00 f +(Datakit) 1738 4692 w +9 /LucidaSansUnicode20 f +(\023) 2086 4692 w +9 /LucidaSansUnicode00 f +(A) 2167 4692 w +(Modular) 2265 4692 w +(Network) 2659 4692 w +(for) 3058 4692 w +(Synchronous) 3220 4692 w +(and) 3816 4692 w +(Asynchronous) 4016 4692 w +(Traffic) 4671 4692 w +9 /LucidaSansUnicode20 f +(\031\031) 4953 4692 w +9 /LucidaSansUnicode00 f +(,) 5011 4692 w +9 /LucidaSans-Italic f +(Proc.) 1125 4792 w +(Int.) 1374 4792 w +(Conf.) 1548 4792 w +(on) 1808 4792 w +(Commun.,) 1944 4792 w +9 /LucidaSansUnicode00 f +(June) 2423 4792 w +(1980,) 2642 4792 w +(Boston,) 2928 4792 w +(MA.) 3283 4792 w +([FSSUTF]) 720 4928 w +9 /LucidaSans-Italic f +(File) 1125 4928 w +(System) 1374 4928 w +(Safe) 1784 4928 w +(UCS) 2071 4928 w +(Transformation) 2344 4928 w +(Format) 3132 4928 w +(\(FSS-UTF\),) 3549 4928 w +9 /LucidaSansUnicode00 f +(X/Open) 4112 4928 w +(Preliminary) 4551 4928 w +(Specification,) 1125 5028 w +(1993.) 1755 5028 w +(ISO) 2088 5028 w +(designation) 2280 5028 w +(is) 2838 5028 w +(ISO/IEC) 2957 5028 w +(JTC1/SC2/WG2) 3334 5028 w +(N) 4048 5028 w +(1036,) 4162 5028 w +(dated) 4466 5028 w +(1994-) 4760 5028 w +(08-01.) 1125 5128 w +([ISO10646]) 720 5264 w +(ISO/IEC) 1250 5264 w +(DIS) 1620 5264 w +(10646-1:1993) 1803 5264 w +9 /LucidaSans-Italic f +(Information) 2494 5264 w +(technology) 3050 5264 w +9 /LucidaSansUnicode20 f +(\023) 3562 5264 w +9 /LucidaSans-Italic f +(Universal) 3647 5264 w +(Multiple-Octet) 4096 5264 w +(Coded) 4770 5264 w +(Character) 1125 5364 w +(Set) 1594 5364 w +(\(UCS\)) 1755 5364 w +9 /LucidaSansUnicode20 f +(\024) 2017 5364 w +9 /LucidaSans-Italic f +(Part) 2136 5364 w +(1:) 2349 5364 w +(Architecture) 2464 5364 w +(and) 3033 5364 w +(Basic) 3228 5364 w +(Multilingual) 3480 5364 w +(Plane.) 4026 5364 w +9 /LucidaSansUnicode00 f +([Kill84]) 720 5500 w +(T.J.) 1125 5500 w +(Killian,) 1300 5500 w +9 /LucidaSansUnicode20 f +(\030\030) 1630 5500 w +9 /LucidaSansUnicode00 f +(Processes) 1688 5500 w +(as) 2146 5500 w +(Files) 2274 5500 w +9 /LucidaSansUnicode20 f +(\031\031) 2471 5500 w +9 /LucidaSansUnicode00 f +(,) 2529 5500 w +9 /LucidaSans-Italic f +(USENIX) 2590 5500 w +(Summer) 2933 5500 w +(1984) 3330 5500 w +(Conf.) 3590 5500 w +(Proc.,) 3854 5500 w +9 /LucidaSansUnicode00 f +(June) 4136 5500 w +(1984,) 4359 5500 w +(Salt) 4649 5500 w +(Lake) 4840 5500 w +(City,) 1125 5600 w +(UT.) 1351 5600 w +([LABW91]) 720 5736 w +(Butler) 1163 5736 w +(Lampson,) 1447 5736 w +(Mart\355n) 1902 5736 w +(Abadi,) 2211 5736 w +(Michael) 2522 5736 w +(Burrows,) 2883 5736 w +(and) 3294 5736 w +(Edward) 3488 5736 w +(Wobber,) 3838 5736 w +9 /LucidaSansUnicode20 f +(\030\030) 4231 5736 w +9 /LucidaSansUnicode00 f +(Authentication) 4289 5736 w +(in) 4958 5736 w +(Distributed) 1125 5836 w +(Systems:) 1660 5836 w +(Theory) 2090 5836 w +(and) 2438 5836 w +(Practice) 2647 5836 w +9 /LucidaSansUnicode20 f +(\031\031) 2985 5836 w +9 /LucidaSansUnicode00 f +(,) 3043 5836 w +9 /LucidaSans-Italic f +(Proc.) 3118 5836 w +(13th) 3384 5836 w +(ACM) 3634 5836 w +(Symp.) 3878 5836 w +(on) 4191 5836 w +(Op.) 4343 5836 w +(Sys.) 4542 5836 w +(Princ.,) 4760 5836 w +9 /LucidaSansUnicode00 f +(Asilomar,) 1125 5936 w +(1991,) 1569 5936 w +(pp.) 1855 5936 w +(165-182.) 2027 5936 w +([MBSS87]) 720 6072 w +(S.) 1153 6072 w +(P.) 1263 6072 w +(Miller,) 1374 6072 w +(B.) 1677 6072 w +(C.) 1790 6072 w +(Neumann,) 1914 6072 w +(J.) 2395 6072 w +(I.) 2485 6072 w +(Schiller,) 2573 6072 w +(and) 2951 6072 w +(J.) 3147 6072 w +(H.) 3237 6072 w +(Saltzer,) 3366 6072 w +9 /LucidaSansUnicode20 f +(\030\030) 3724 6072 w +9 /LucidaSansUnicode00 f +(Kerberos) 3782 6072 w +(Authentication) 4206 6072 w +(and) 4877 6072 w +(Authorization) 1125 6172 w +(System) 1750 6172 w +9 /LucidaSansUnicode20 f +(\031\031) 2059 6172 w +9 /LucidaSansUnicode00 f +(,) 2117 6172 w +(Massachusetts) 2175 6172 w +(Institute) 2839 6172 w +(of) 3227 6172 w +(Technology,) 3344 6172 w +(1987.) 3906 6172 w +([NBS77]) 720 6308 w +(National) 1125 6308 w +(Bureau) 1556 6308 w +(of) 1926 6308 w +(Standards) 2083 6308 w +(\(U.S.\),) 2587 6308 w +9 /LucidaSans-Italic f +(Federal) 2914 6308 w +(Information) 3307 6308 w +(Processing) 3892 6308 w +(Standard) 4425 6308 w +(46,) 4897 6308 w +9 /LucidaSansUnicode00 f +(National) 1125 6408 w +(Technical) 1517 6408 w +(Information) 1959 6408 w +(Service,) 2499 6408 w +(Springfield,) 2862 6408 w +(VA,) 3393 6408 w +(1977.) 3572 6408 w +([Nee89]) 720 6544 w +(R.) 1125 6544 w +(Needham,) 1240 6544 w +9 /LucidaSansUnicode20 f +(\030\030) 1712 6544 w +9 /LucidaSansUnicode00 f +(Names) 1770 6544 w +9 /LucidaSansUnicode20 f +(\031\031) 2067 6544 w +9 /LucidaSansUnicode00 f +(,) 2125 6544 w +(in) 2183 6544 w +9 /LucidaSans-Italic f +(Distributed) 2294 6544 w +(systems,) 2811 6544 w +9 /LucidaSansUnicode00 f +(S.) 3217 6544 w +(Mullender,) 3324 6544 w +(ed.,) 3817 6544 w +(Addison) 4011 6544 w +(Wesley,) 4399 6544 w +(1989) 4753 6544 w +([NeHe82]) 720 6680 w +(R.M.) 1196 6680 w +(Needham) 1456 6680 w +(and) 1939 6680 w +(A.J.) 2171 6680 w +(Herbert,) 2388 6680 w +9 /LucidaSans-Italic f +(The) 2817 6680 w +(Cambridge) 3046 6680 w +(Distributed) 3597 6680 w +(Computing) 4154 6680 w +(System,) 4701 6680 w +9 /LucidaSansUnicode00 f +(Addison-Wesley,) 1125 6780 w +(London,) 1890 6780 w +(1982) 2275 6780 w +([Neu92]) 720 6916 w +(B.) 1125 6916 w +(Clifford) 1248 6916 w +(Neuman,) 1619 6916 w +9 /LucidaSansUnicode20 f +(\030\030) 2053 6916 w +9 /LucidaSansUnicode00 f +(The) 2111 6916 w +(Prospero) 2316 6916 w +(File) 2745 6916 w +(System) 2938 6916 w +9 /LucidaSansUnicode20 f +(\031\031) 3247 6916 w +9 /LucidaSansUnicode00 f +(,) 3305 6916 w +9 /LucidaSans-Italic f +(USENIX) 3376 6916 w +(File) 3729 6916 w +(Systems) 3920 6916 w +(Workshop) 4316 6916 w +(Proc.,) 4791 6916 w +9 /LucidaSansUnicode00 f +(Ann) 1125 7016 w +(Arbor,) 1328 7016 w +(1992,) 1634 7016 w +(pp.) 1920 7016 w +(13-28.) 2092 7016 w +([OCDNW88]) 720 7152 w +(John) 1282 7152 w +(Ousterhout,) 1522 7152 w +(Andrew) 2088 7152 w +(Cherenson,) 2464 7152 w +(Fred) 3006 7152 w +(Douglis,) 3244 7152 w +(Mike) 3651 7152 w +(Nelson,) 3901 7152 w +(and) 4275 7152 w +(Brent) 4483 7152 w +(Welch,) 4756 7152 w +9 /LucidaSansUnicode20 f +(\030\030) 1125 7252 w +9 /LucidaSansUnicode00 f +(The) 1183 7252 w +(Sprite) 1375 7252 w +(Network) 1656 7252 w +(Operating) 2048 7252 w +(System) 2512 7252 w +9 /LucidaSansUnicode20 f +(\031\031) 2821 7252 w +9 /LucidaSansUnicode00 f +(,) 2879 7252 w +9 /LucidaSans-Italic f +(IEEE) 2937 7252 w +(Computer,) 3142 7252 w +9 /LucidaSansUnicode00 f +(21\(2\),) 3632 7252 w +(23-38,) 3921 7252 w +(Feb.) 4259 7252 w +(1988.) 4473 7252 w +cleartomark +showpage +saveobj restore +%%EndPage: 21 21 +%%Page: 22 22 +/saveobj save def +mark +22 pagesetup +9 /LucidaSansUnicode00 f +(\255 22 \255) 2764 470 w +([Pike87]) 720 820 w +(Rob) 1125 820 w +(Pike,) 1323 820 w +9 /LucidaSansUnicode20 f +(\030\030) 1559 820 w +9 /LucidaSansUnicode00 f +(The) 1617 820 w +(Text) 1809 820 w +(Editor) 2033 820 w +9 /LucidaTypewriter f +(sam) 2320 820 w +9 /LucidaSansUnicode20 f +(\031\031) 2515 820 w +9 /LucidaSansUnicode00 f +(,) 2573 820 w +9 /LucidaSans-Italic f +(Software) 2632 820 w +(-) 3047 820 w +(Practice) 3134 820 w +(and) 3512 820 w +(Experience,) 3708 820 w +9 /LucidaSansUnicode00 f +(Nov) 4235 820 w +(1987,) 4434 820 w +9 /LucidaSans-Demi f +(17) 4721 820 w +9 /LucidaSansUnicode00 f +(\(11\),) 4837 820 w +(pp.) 1125 920 w +(813-845;) 1297 920 w +(reprinted) 1749 920 w +(in) 2181 920 w +(this) 2292 920 w +(volume.) 2482 920 w +([Pike91]) 720 1056 w +(Rob) 1125 1056 w +(Pike,) 1325 1056 w +9 /LucidaSansUnicode20 f +(\030\030) 1563 1056 w +9 /LucidaSansUnicode00 f +(8\275,) 1621 1056 w +(the) 1810 1056 w +(Plan) 1980 1056 w +(9) 2193 1056 w +(Window) 2282 1056 w +(System) 2654 1056 w +9 /LucidaSansUnicode20 f +(\031\031) 2963 1056 w +9 /LucidaSansUnicode00 f +(,) 3021 1056 w +9 /LucidaSans-Italic f +(USENIX) 3082 1056 w +(Summer) 3425 1056 w +(Conf.) 3822 1056 w +(Proc.,) 4085 1056 w +9 /LucidaSansUnicode00 f +(Nashville,) 4366 1056 w +(June,) 4821 1056 w +(1991,) 1125 1156 w +(pp.) 1411 1156 w +(257-265,) 1583 1156 w +(reprinted) 2035 1156 w +(in) 2467 1156 w +(this) 2578 1156 w +(volume.) 2768 1156 w +([Pike93]) 720 1292 w +(Rob) 1125 1292 w +(Pike) 1344 1292 w +(and) 1572 1292 w +(Ken) 1785 1292 w +(Thompson,) 2000 1292 w +9 /LucidaSansUnicode20 f +(\030\030) 2545 1292 w +9 /LucidaSansUnicode00 f +(Hello) 2603 1292 w +(World) 2877 1292 w +(or) 3179 1292 w +9 /LucidaSansUnicode03 f +(\232\261\273\267\274\255\301\261) 3321 1292 w +(\272\314\303\274\265) 3830 1292 w +9 /LucidaSansUnicode00 f +(or) 4150 1292 w + save 4265 1292 m + currentpoint translate 10 10 scale ptsize dup scale + 24 24 true [24 0 0 -24 0 22] + {<00000000000002000001f000007fc00007c0001c000060000000000000000000000000000000000000000800001000001000001000001000000c000007fff001fff0000000000000>} + imagemask restore + save 4360 1292 m + currentpoint translate 10 10 scale ptsize dup scale + 24 24 true [24 0 0 -24 0 22] + {<000000001800000c00001c0000180000380000300000600000600000c0000080000180000300000270000798000e18000c1802181806180c0c300c18700c70600fe0600780000000>} + imagemask restore + save 4455 1292 m + currentpoint translate 10 10 scale ptsize dup scale + 24 24 true [24 0 0 -24 0 22] + {<0000000800000c00000c00000c01e00c0ff818303c1800601800801800001000003000003000003100003100003210003220003220001430001c1ffe1c07fc0c0000080000000000>} + imagemask restore + save 4550 1292 m + currentpoint translate 10 10 scale ptsize dup scale + 24 24 true [24 0 0 -24 0 22] + {<01800000c00000c00000800001860021bf003fe0001980000100000100000300000303c0021c3002701802c00c07000c07000c0600180000380000700000e0000380001c00000000>} + imagemask restore + save 4645 1292 m + currentpoint translate 10 10 scale ptsize dup scale + 24 24 true [24 0 0 -24 0 22] + {<0000003001801800601c006018006018004018004030204e301ffc300c403000402000406000406400406400606400606c0060680fe028307038407c3840ee183fc6100f00000000>} + imagemask restore + save 4763 1292 m + currentpoint translate 10 10 scale ptsize dup scale + 24 24 true [24 0 0 -24 0 22] + {<071c70061860061860061860061860061860061860061866ffffff061860061860061860061860061860061860061fe006186006186006000006000006000006000c07fffe060000>} + imagemask restore + save 4858 1292 m + currentpoint translate 10 10 scale ptsize dup scale + 24 24 true [24 0 0 -24 0 22] + {<0800300ffff80c18300c18300c18300ffff00c18300c18300c18300ffff00c743000e20001c1800300e00ee1ff38c19ec0c18600c18000c18000c1800181800181800301800c0180>} + imagemask restore +9 /LucidaSansUnicode20 f +(\031\031) 4953 1292 w +9 /LucidaSansUnicode00 f +(,) 5011 1292 w +9 /LucidaSans-Italic f +(USENIX) 1125 1392 w +(Winter) 1465 1392 w +(Conf.) 1781 1392 w +(Proc.,) 2041 1392 w +9 /LucidaSansUnicode00 f +(San) 2319 1392 w +(Diego,) 2503 1392 w +(1993,) 2816 1392 w +(pp.) 3102 1392 w +(43-50,) 3274 1392 w +(reprinted) 3612 1392 w +(in) 4044 1392 w +(this) 4155 1392 w +(volume.) 4345 1392 w +([Pike94]) 720 1528 w +(Rob) 1125 1528 w +(Pike,) 1332 1528 w +9 /LucidaSansUnicode20 f +(\030\030) 1577 1528 w +9 /LucidaSansUnicode00 f +(Acme:) 1635 1528 w +(A) 1945 1528 w +(User) 2046 1528 w +(Interface) 2280 1528 w +(for) 2700 1528 w +(Programmers) 2864 1528 w +9 /LucidaSansUnicode20 f +(\031\031) 3450 1528 w +9 /LucidaSansUnicode00 f +(,) 3508 1528 w +9 /LucidaSans-Italic f +(USENIX) 3576 1528 w +(Proc.) 3926 1528 w +(of) 4185 1528 w +(the) 4309 1528 w +(Winter) 4486 1528 w +(1994) 4812 1528 w +(Conf.,) 1125 1628 w +9 /LucidaSansUnicode00 f +(San) 1414 1628 w +(Francisco,) 1598 1628 w +(CA,) 2067 1628 w +([Pike95]) 720 1764 w +(Rob) 1125 1764 w +(Pike,) 1325 1764 w +9 /LucidaSansUnicode20 f +(\030\030) 1563 1764 w +9 /LucidaSansUnicode00 f +(How) 1621 1764 w +(to) 1844 1764 w +(Use) 1964 1764 w +(the) 2154 1764 w +(Plan) 2325 1764 w +(9) 2539 1764 w +(C) 2628 1764 w +(Compiler) 2722 1764 w +9 /LucidaSansUnicode20 f +(\031\031) 3119 1764 w +9 /LucidaSansUnicode00 f +(,) 3177 1764 w +9 /LucidaSans-Italic f +(Plan) 3238 1764 w +(9) 3459 1764 w +(Programmer's) 3548 1764 w +(Manual,) 4211 1764 w +(Volume) 4595 1764 w +(2,) 4954 1764 w +9 /LucidaSansUnicode00 f +(AT&T) 1125 1864 w +(Bell) 1393 1864 w +(Laboratories,) 1576 1864 w +(Murray) 2178 1864 w +(Hill,) 2511 1864 w +(NJ,) 2714 1864 w +(1995.) 2867 1864 w +([POSIX]) 720 2000 w +9 /LucidaSans-Italic f +(Information) 1125 2000 w +(Technology) 1693 2000 w +9 /LucidaSansUnicode20 f +(\024) 2187 2000 w +9 /LucidaSans-Italic f +(Portable) 2277 2000 w +(Operating) 2693 2000 w +(System) 3187 2000 w +(Interface) 3549 2000 w +(\(POSIX\)) 3990 2000 w +(Part) 4356 2000 w +(1:) 4592 2000 w +(System) 4730 2000 w +(Application) 1125 2100 w +(Program) 1645 2100 w +(Interface) 2057 2100 w +(\(API\)) 2475 2100 w +([C) 2704 2100 w +(Language],) 2824 2100 w +9 /LucidaSansUnicode00 f +(IEEE,) 3342 2100 w +(New) 3573 2100 w +(York,) 3788 2100 w +(1990.) 4046 2100 w +([PPTTW93]) 720 2236 w +(Rob) 1215 2236 w +(Pike,) 1414 2236 w +(Dave) 1652 2236 w +(Presotto,) 1898 2236 w +(Ken) 2317 2236 w +(Thompson,) 2513 2236 w +(Howard) 3039 2236 w +(Trickey,) 3405 2236 w +(and) 3780 2236 w +(Phil) 3974 2236 w +(Winterbottom,) 4163 2236 w +9 /LucidaSansUnicode20 f +(\030\030) 4819 2236 w +9 /LucidaSansUnicode00 f +(The) 4877 2236 w +(Use) 1125 2336 w +(of) 1325 2336 w +(Name) 1455 2336 w +(Spaces) 1748 2336 w +(in) 2088 2336 w +(Plan) 2212 2336 w +(9) 2436 2336 w +9 /LucidaSansUnicode20 f +(\031\031) 2493 2336 w +9 /LucidaSansUnicode00 f +(,) 2551 2336 w +9 /LucidaSans-Italic f +(Op.) 2622 2336 w +(Sys.) 2818 2336 w +(Rev.,) 3033 2336 w +9 /LucidaSansUnicode00 f +(Vol.) 3287 2336 w +(27,) 3497 2336 w +(No.) 3681 2336 w +(2,) 3873 2336 w +(April) 4000 2336 w +(1993,) 4249 2336 w +(pp.) 4547 2336 w +(72-76,) 4731 2336 w +(reprinted) 1125 2436 w +(in) 1557 2436 w +(this) 1668 2436 w +(volume.) 1858 2436 w +([Presotto]Dave) 720 2572 w +(Presotto,) 1391 2572 w +9 /LucidaSansUnicode20 f +(\030\030) 1816 2572 w +9 /LucidaSansUnicode00 f +(Multiprocessor) 1874 2572 w +(Streams) 2558 2572 w +(for) 2944 2572 w +(Plan) 3106 2572 w +(9) 3326 2572 w +9 /LucidaSansUnicode20 f +(\031\031) 3383 2572 w +9 /LucidaSansUnicode00 f +(,) 3441 2572 w +9 /LucidaSans-Italic f +(UKUUG) 3508 2572 w +(Summer) 3853 2572 w +(1990) 4256 2572 w +(Conf.) 4522 2572 w +(Proc.,) 4791 2572 w +9 /LucidaSansUnicode00 f +(July) 1125 2672 w +(1990,) 1311 2672 w +(pp.) 1597 2672 w +(11-19.) 1769 2672 w +([PrWi93]) 720 2808 w +(Dave) 1125 2808 w +(Presotto) 1372 2808 w +(and) 1763 2808 w +(Phil) 1958 2808 w +(Winterbottom,) 2148 2808 w +9 /LucidaSansUnicode20 f +(\030\030) 2806 2808 w +9 /LucidaSansUnicode00 f +(The) 2864 2808 w +(Organization) 3060 2808 w +(of) 3659 2808 w +(Networks) 3780 2808 w +(in) 4222 2808 w +(Plan) 4337 2808 w +(9) 4552 2808 w +9 /LucidaSansUnicode20 f +(\031\031) 4609 2808 w +9 /LucidaSansUnicode00 f +(,) 4667 2808 w +9 /LucidaSans-Italic f +(USENIX) 4729 2808 w +(Proc.) 1125 2908 w +(of) 1374 2908 w +(the) 1488 2908 w +(Winter) 1655 2908 w +(1993) 1971 2908 w +(Conf.,) 2228 2908 w +9 /LucidaSansUnicode00 f +(San) 2517 2908 w +(Diego,) 2701 2908 w +(CA,) 3014 2908 w +(pp.) 3196 2908 w +(43-50,) 3368 2908 w +(reprinted) 3706 2908 w +(in) 4138 2908 w +(this) 4249 2908 w +(volume.) 4439 2908 w +([PrWi95]) 720 3044 w +(Dave) 1125 3044 w +(Presotto) 1378 3044 w +(and) 1775 3044 w +(Phil) 1977 3044 w +(Winterbottom,) 2174 3044 w +9 /LucidaSansUnicode20 f +(\030\030) 2838 3044 w +9 /LucidaSansUnicode00 f +(The) 2896 3044 w +(IL) 3098 3044 w +(Protocol) 3211 3044 w +9 /LucidaSansUnicode20 f +(\031\031) 3568 3044 w +9 /LucidaSansUnicode00 f +(,) 3626 3044 w +9 /LucidaSans-Italic f +(Plan) 3694 3044 w +(9) 3922 3044 w +(Programmer's) 4018 3044 w +(Manual,) 4688 3044 w +(Volume) 1125 3144 w +(2,) 1481 3144 w +9 /LucidaSansUnicode00 f +(AT&T) 1596 3144 w +(Bell) 1864 3144 w +(Laboratories,) 2047 3144 w +(Murray) 2649 3144 w +(Hill,) 2982 3144 w +(NJ,) 3185 3144 w +(1995.) 3338 3144 w +([RFC768]) 720 3280 w +(J.) 1198 3280 w +(Postel,) 1335 3280 w +(RFC768,) 1704 3280 w +9 /LucidaSans-Italic f +(User) 2152 3280 w +(Datagram) 2429 3280 w +(Protocol,) 2957 3280 w +(DARPA) 3419 3280 w +(Internet) 3799 3280 w +(Program) 4224 3280 w +(Protocol) 4687 3280 w +(Specification,) 1125 3380 w +9 /LucidaSansUnicode00 f +(August) 1734 3380 w +(1980.) 2072 3380 w +([RFC793]) 720 3516 w +(RFC793,) 1152 3516 w +9 /LucidaSans-Italic f +(Transmission) 1553 3516 w +(Control) 2171 3516 w +(Protocol,) 2527 3516 w +(DARPA) 2943 3516 w +(Internet) 3277 3516 w +(Program) 3656 3516 w +(Protocol) 4073 3516 w +(Specification,) 4460 3516 w +9 /LucidaSansUnicode00 f +(September) 1125 3616 w +(1981.) 1621 3616 w +([Rao91]) 720 3752 w +(Herman) 1125 3752 w +(Chung-Hwa) 1500 3752 w +(Rao,) 2055 3752 w +9 /LucidaSans-Italic f +(The) 2277 3752 w +(Jade) 2468 3752 w +(File) 2694 3752 w +(System,) 2874 3752 w +9 /LucidaSansUnicode00 f +(\(Ph.) 3244 3752 w +(D.) 3440 3752 w +(Dissertation\),) 3568 3752 w +(Dept.) 4184 3752 w +(of) 4452 3752 w +(Comp.) 4571 3752 w +(Sci,) 4890 3752 w +(University) 1125 3852 w +(of) 1584 3852 w +(Arizona,) 1701 3852 w +(TR) 2096 3852 w +(91-18.) 2239 3852 w +([Rit84]) 720 3988 w +(D.M.) 1125 3988 w +(Ritchie,) 1397 3988 w +9 /LucidaSansUnicode20 f +(\030\030) 1789 3988 w +9 /LucidaSansUnicode00 f +(A) 1847 3988 w +(Stream) 1978 3988 w +(Input-Output) 2351 3988 w +(System) 3006 3988 w +9 /LucidaSansUnicode20 f +(\031\031) 3315 3988 w +9 /LucidaSansUnicode00 f +(,) 3373 3988 w +9 /LucidaSans-Italic f +(AT&T) 3472 3988 w +(Bell) 3779 3988 w +(Laboratories) 4002 3988 w +(Technical) 4627 3988 w +(Journal,) 1125 4088 w +9 /LucidaSans-Demi f +(63) 1507 4088 w +9 /LucidaSansUnicode00 f +(\(8\),) 1623 4088 w +(October,) 1798 4088 w +(1984.) 2204 4088 w +([Tric95]) 720 4224 w +(Howard) 1125 4224 w +(Trickey,) 1499 4224 w +9 /LucidaSansUnicode20 f +(\030\030) 1882 4224 w +9 /LucidaSansUnicode00 f +(APE) 1940 4224 w +9 /LucidaSansUnicode20 f +(\024) 2140 4224 w +9 /LucidaSansUnicode00 f +(The) 2269 4224 w +(ANSI/POSIX) 2471 4224 w +(Environment) 3015 4224 w +9 /LucidaSansUnicode20 f +(\031\031) 3564 4224 w +9 /LucidaSansUnicode00 f +(,) 3622 4224 w +9 /LucidaSans-Italic f +(Plan) 3691 4224 w +(9) 3920 4224 w +(Programmer's) 4017 4224 w +(Manual,) 4688 4224 w +(Volume) 1125 4324 w +(2,) 1481 4324 w +9 /LucidaSansUnicode00 f +(AT&T) 1596 4324 w +(Bell) 1864 4324 w +(Laboratories,) 2047 4324 w +(Murray) 2649 4324 w +(Hill,) 2982 4324 w +(NJ,) 3185 4324 w +(1995.) 3338 4324 w +([Unicode]) 720 4460 w +9 /LucidaSans-Italic f +(The) 1132 4460 w +(Unicode) 1349 4460 w +(Standard,) 1749 4460 w +(Worldwide) 2239 4460 w +(Character) 2751 4460 w +(Encoding,) 3249 4460 w +(Version) 3730 4460 w +(1.0,) 4118 4460 w +(Volume) 4348 4460 w +(1,) 4733 4460 w +9 /LucidaSansUnicode00 f +(The) 4877 4460 w +(Unicode) 1125 4560 w +(Consortium,) 1506 4560 w +(Addison) 2074 4560 w +(Wesley,) 2462 4560 w +(New) 2816 4560 w +(York,) 3031 4560 w +(1991.) 3289 4560 w +([UNIX85]) 720 4696 w +9 /LucidaSans-Italic f +(UNIX) 1125 4696 w +(Time-Sharing) 1391 4696 w +(System) 2058 4696 w +(Programmer's) 2423 4696 w +(Manual,) 3109 4696 w +(Research) 3516 4696 w +(Version,) 3967 4696 w +(Eighth) 4381 4696 w +(Edition,) 4713 4696 w +(Volume) 1125 4796 w +(1.) 1481 4796 w +9 /LucidaSansUnicode00 f +(AT&T) 1625 4796 w +(Bell) 1893 4796 w +(Laboratories,) 2076 4796 w +(Murray) 2678 4796 w +(Hill,) 3011 4796 w +(NJ,) 3214 4796 w +(1985.) 3367 4796 w +([Welc94]) 720 4932 w +(Brent) 1125 4932 w +(Welch,) 1408 4932 w +9 /LucidaSansUnicode20 f +(\030\030) 1747 4932 w +9 /LucidaSansUnicode00 f +(A) 1805 4932 w +(Comparison) 1922 4932 w +(of) 2505 4932 w +(Three) 2648 4932 w +(Distributed) 2954 4932 w +(File) 3499 4932 w +(System) 3706 4932 w +(Architectures:) 4071 4932 w +(Vnode,) 4734 4932 w +(Sprite,) 1125 5032 w +(and) 1435 5032 w +(Plan) 1627 5032 w +(9) 1838 5032 w +9 /LucidaSansUnicode20 f +(\031\031) 1895 5032 w +9 /LucidaSansUnicode00 f +(,) 1953 5032 w +9 /LucidaSans-Italic f +(Computing) 2011 5032 w +(Systems,) 2518 5032 w +9 /LucidaSansUnicode00 f +(7\(2\),) 2930 5032 w +(pp.) 3162 5032 w +(175-199,) 3334 5032 w +(Spring,) 3786 5032 w +(1994.) 4125 5032 w +([Wint95]) 720 5168 w +(Phil) 1125 5168 w +(Winterbottom,) 1329 5168 w +9 /LucidaSansUnicode20 f +(\030\030) 2000 5168 w +9 /LucidaSansUnicode00 f +(Alef) 2058 5168 w +(Language) 2276 5168 w +(Reference) 2745 5168 w +(Manual) 3221 5168 w +9 /LucidaSansUnicode20 f +(\031\031) 3536 5168 w +9 /LucidaSansUnicode00 f +(,) 3594 5168 w +9 /LucidaSans-Italic f +(Plan) 3670 5168 w +(9) 3906 5168 w +(Programmer's) 4010 5168 w +(Manual,) 4688 5168 w +(Volume) 1125 5268 w +(2,) 1481 5268 w +9 /LucidaSansUnicode00 f +(AT&T) 1596 5268 w +(Bell) 1864 5268 w +(Laboratories,) 2047 5268 w +(Murray) 2649 5268 w +(Hill,) 2982 5268 w +(NJ,) 3185 5268 w +(1995.) 3338 5268 w +cleartomark +showpage +saveobj restore +%%EndPage: 22 22 +%%Trailer +done +%%Pages: 22 diff --git a/sys/doc/acid.ms b/sys/doc/acid.ms new file mode 100644 index 000000000..683c543bf --- /dev/null +++ b/sys/doc/acid.ms @@ -0,0 +1,2550 @@ +.HTML "Acid Manual +.am DS +.ft I +.. +.ta 1i 2.3i 4.5i (optional to set tabs) +.TL +Acid Manual +.AU +Phil Winterbottom +philw@plan9.bell-labs.com +.SH +Introduction +.PP +Acid is a general purpose, source level symbolic debugger. +The debugger is built around a simple command language. +The command language, distinct from the language of the program being debugged, +provides a flexible user interface that allows the debugger +interface to be customized for a specific application or architecture. +Moreover, it provides an opportunity to write test and +verification code independently of a program's source code. +Acid is able to debug multiple +processes provided they share a common set of symbols, such as the processes in +a threaded program. +.PP +Like other language-based solutions, Acid presents a poor user interface but +provides a powerful debugging tool. +Application of Acid to hard problems is best approached by writing functions off-line +(perhaps loading them with the +.CW include +function or using the support provided by +.I acme (1)), +rather than by trying to type intricate Acid operations +at the interactive prompt. +.PP +Acid allows the execution of a program to be controlled by operating on its +state while it is stopped and by monitoring and controlling its execution +when it is running. Each program action that causes a change +of execution state is reflected by the execution +of an Acid function, which may be user defined. +A library of default functions provides the functionality of a normal debugger. +.PP +A Plan 9 process is controlled by writing messages to a control file in the +.I proc (3) +file system. Each control message has a corresponding Acid function, which +sends the message to the process. These functions take a process id +.I pid ) ( +as an +argument. The memory and text file of the program may be manipulated using +the indirection operators. The symbol table, including source cross reference, +is available to an Acid program. The combination allows complex operations +to be performed both in terms of control flow and data manipulation. +.SH +Input format and \f(CWwhatis\fP +.PP +Comments start with +.CW // +and continue to the end of the line. +Input is a series of statements and expressions separated by semicolons. +At the top level of the interpreter, the builtin function +.CW print +is called automatically to display the result of all expressions except function calls. +A unary +.CW + +may be used as a shorthand to force the result of a function call to be printed. +.PP +Also at the top level, newlines are treated as semicolons +by the parser, so semicolons are unnecessary when evaluating expressions. +.PP +When Acid starts, it loads the default program modules, +enters interactive mode, and prints a prompt. In this state Acid accepts +either function definitions or statements to be evaluated. +In this interactive mode +statements are evaluated immediately, while function definitions are +stored for later invocation. +.PP +The +.CW whatis +operator can be used to report the state of identifiers known to the interpreter. +With no argument, +.CW whatis +reports the name of all defined Acid functions; when supplied with an identifier +as an argument it reports any variable, function, or type definition +associated with the identifier. +Because of the way the interpreter handles semicolons, +the result of a +.CW whatis +statement can be returned directly to Acid without adding semicolons. +A syntax error or interrupt returns Acid to the normal evaluation +mode; any partially evaluated definitions are lost. +.SH +Using the Library Functions +.PP +After loading the program binary, Acid loads the portable and architecture-specific +library functions that form the standard debugging environment. +These files are Acid source code and are human-readable. +The following example uses the standard debugging library to show how +language and program interact: +.P1 +% acid /bin/ls +/bin/ls:mips plan 9 executable + +/sys/lib/acid/port +/sys/lib/acid/mips +acid: new() +75721: system call _main ADD $-0x14,R29 +75721: breakpoint main+0x4 MOVW R31,0x0(R29) +acid: bpset(ls) +acid: cont() +75721: breakpoint ls ADD $-0x16c8,R29 +acid: stk() +At pc:0x0000141c:ls /sys/src/cmd/ls.c:87 +ls(s=0x0000004d,multi=0x00000000) /sys/src/cmd/ls.c:87 + called from main+0xf4 /sys/src/cmd/ls.c:79 +main(argc=0x00000000,argv=0x7ffffff0) /sys/src/cmd/ls.c:48 + called from _main+0x20 /sys/src/libc/mips/main9.s:10 +acid: PC +0xc0000f60 +acid: *PC +0x0000141c +acid: ls +0x0000141c +.P2 +The function +.CW new() +creates a new process and stops it at the first instruction. +This change in state is reported by a call to the +Acid function +.CW stopped , +which is called by the interpreter whenever the debugged program stops. +.CW Stopped +prints the status line giving the pid, the reason the program stopped +and the address and instruction at the current PC. +The function +.CW bpset +makes an entry in the breakpoint table and plants a breakpoint in memory. +The +.CW cont +function continues the process, allowing it to run until some condition +causes it to stop. In this case the program hits the breakpoint placed on +the function +.CW ls +in the C program. Once again the +.CW stopped +routine is called to print the status of the program. The function +.CW stk +prints a C stack trace of the current process. It is implemented using +a builtin Acid function that returns the stack trace as a list; the code +that formats the information is all written in Acid. +The Acid variable +.CW PC +holds the address of the +cell where the current value of the processor register +.CW PC +is stored. By indirecting through +the value of +.CW PC +the address where the program is stopped can be found. +All of the processor registers are available by the same mechanism. +.SH +Types +.PP +An Acid variable has one of four types: +.I integer , +.I float , +.I list , +or +.I string . +The type of a variable is inferred from the type of the right-hand +side of the assignment expression which last set its value. +Referencing a variable that has not yet +been assigned draws a "used but not set" error. Many of the operators may +be applied to more than +one type; for these operators the action of the operator is determined by +the types of its operands. The action of each operator is defined in the +.I Expressions +section of this manual. +.SH +Variables +.PP +Acid has three kinds of variables: variables defined by the symbol table +of the debugged program, variables that are defined and maintained +by the interpreter as the debugged program changes state, and variables +defined and used by Acid programs. +.PP +Some examples of variables maintained by the interpreter are the register +pointers listed by name in the Acid list variable +.CW registers , +and the symbol table listed by name and contents in the Acid variable +.CW symbols . +.PP +The variable +.CW pid +is updated by the interpreter to select the most recently created process +or the process selected by the +.CW setproc +builtin function. +.SH 1 +Formats +.PP +In addition to a type, variables have formats. The format is a code +letter that determines the printing style and the effect of some of the +operators on that variable. The format codes are derived from the format +letters used by +.I db (1). +By default, symbol table variables and numeric constants +are assigned the format code +.CW X , +which specifies 32-bit hexadecimal. +Printing a variable with this code yields the output +.CW 0x00123456 . +The format code of a variable may be changed from the default by using the +builtin function +.CW fmt . +This function takes two arguments, an expression and a format code. After +the expression is evaluated the new format code is attached to the result +and forms the return value from +.CW fmt . +The backslash operator is a short form of +.CW fmt . +The format supplied by the backslash operator must be the format character +rather than an expression. +If the result is assigned to a variable the new format code is maintained +in the variable. For example: +.P1 +acid: x=10 +acid: print(x) +0x0000000a +acid: x = fmt(x, 'D') +acid: print(x, fmt(x, 'X')) +10 0x0000000a +acid: x +10 +acid: x\eo +12 +.P2 +The supported format characters are: +.RS +.IP \f(CWo\fP +Print two-byte integer in octal. +.IP \f(CWO\fP +Print four-byte integer in octal. +.IP \f(CWq\fP +Print two-byte integer in signed octal. +.IP \f(CWQ\fP +Print four-byte integer in signed octal. +.IP \f(CWB\fP +Print four-byte integer in binary. +.IP \f(CWd\fP +Print two-byte integer in signed decimal. +.IP \f(CWD\fP +Print four-byte integer in signed decimal. +.IP \f(CWV\fP +Print eight-byte integer in signed decimal. +.IP \f(CWZ\fP +Print eight-byte integer in unsigned decimal. +.IP \f(CWx\fP +Print two-byte integer in hexadecimal. +.IP \f(CWX\fP +Print four-byte integer in hexadecimal. +.IP \f(CWY\fP +Print eight-byte integer in hexadecimal. +.IP \f(CWu\fP +Print two-byte integer in unsigned decimal. +.IP \f(CWU\fP +Print four-byte integer in unsigned decimal. +.IP \f(CWf\fP +Print single-precision floating point number. +.IP \f(CWF\fP +Print double-precision floating point number. +.IP \f(CWg\fP +Print a single precision floating point number in string format. +.IP \f(CWG\fP +Print a double precision floating point number in string format. +.IP \f(CWb\fP +Print byte in hexadecimal. +.IP \f(CWc\fP +Print byte as an ASCII character. +.IP \f(CWC\fP +Like +.CW c , +with +printable ASCII characters represented normally and +others printed in the form \f(CW\ex\fInn\fR. +.IP \f(CWs\fP +Interpret the addressed bytes as UTF characters +and print successive characters until a zero byte is reached. +.IP \f(CWr\fP +Print a two-byte integer as a rune. +.IP \f(CWR\fP +Print successive two-byte integers as runes +until a zero rune is reached. +.IP \f(CWi\fP +Print as machine instructions. +.IP \f(CWI\fP +As +.CW i +above, but print the machine instructions in +an alternate form if possible: +.CW sunsparc +and +.CW mipsco +reproduce the manufacturers' syntax. +.IP \f(CWa\fP +Print the value in symbolic form. +.RE +.SH +Complex types +.PP +Acid permits the definition of the layout of memory. +The usual method is to use the +.CW -a +flag of the compilers to produce Acid-language descriptions of data structures (see +.I 2c (1)) +although such definitions can be typed interactively. +The keywords +.CW complex , +.CW adt , +.CW aggr , +and +.CW union +are all equivalent; the compiler uses the synonyms to document the declarations. +A complex type is described as a set of members, each containing a format letter, +an offset in the structure, and a name. For example, the C structure +.P1 +struct List { + int type; + struct List *next; +}; +.P2 +is described by the Acid statement +.P1 +complex List { + 'D' 0 type; + 'X' 4 next; +}; +.P2 +.SH +Scope +.PP +Variables are global unless they are either parameters to functions +or are declared as +.CW local +in a function body. Parameters and local variables are available only in +the body of the function in which they are instantiated. +Variables are dynamically bound: if a function declares a local variable +with the same name as a global variable, the global variable will be hidden +whenever the function is executing. +For example, if a function +.CW f +has a local called +.CW main , +any function called below +.CW f +will see the local version of +.CW main , +not the external symbol. +.SH 1 +Addressing +.PP +Since the symbol table specifies addresses, +to access the value of program variables +an extra level of indirection +is required relative to the source code. +For consistency, the registers are maintained as pointers as well; Acid variables with the names +of processor registers point to cells holding the saved registers. +.PP +The location in a file or memory image associated with +an address is calculated from a map +associated with the file. +Each map contains one or more quadruples (\c +.I t , +.I b , +.I e , +.I f \|), +defining a segment named +.I t +(usually +.CW text , +.CW data , +.CW regs , +or +.CW fpregs ) +mapping addresses in the range +.I b +through +.I e +to the part of the file +beginning at +offset +.I f . +The memory model of a Plan 9 process assumes +that segments are disjoint. There +can be more than one segment of a given type (e.g., a process +may have more than one text segment) but segments +may not overlap. +An address +.I a +is translated +to a file address +by finding a segment +for which +.I b ++ +.I a +< +.I e ; +the location in the file +is then +.I address ++ +.I f +\- +.I b . +.PP +Usually, +the text and initialized data of a program +are mapped by segments called +.CW text +and +.CW data . +Since a program file does not contain bss, stack, or register data, +these data are +not mapped by the data segment. +The text segment is mapped similarly in the memory image of +a normal (i.e., non-kernel) process. +However, the segment called +.CW *data +maps memory from the beginning to the end of the program's data space. +This region contains the program's static data, the bss, the +heap and the stack. A segment +called +.CW *regs +maps the registers; +.CW *fpregs +maps the floating point registers. +.PP +Sometimes it is useful to define a map with a single segment +mapping the region from 0 to 0xFFFFFFFF; such a map +allows the entire file to be examined +without address translation. The builtin function +.CW map +examines and modifies Acid's map for a process. +.SH 1 +Name Conflicts +.PP +Name conflicts between keywords in the Acid language, symbols in the program, +and previously defined functions are resolved when the interpreter starts up. +Each name is made unique by prefixing enough +.CW $ +characters to the front of the name to make it unique. Acid reports +a list of each name change at startup. The report looks like this: +.P1 +/bin/sam: mips plan 9 executable +/lib/acid/port +/lib/acid/mips +Symbol renames: + append=$append T/0xa4e40 +acid: +.P2 +The symbol +.CW append +is both a keyword and a text symbol in the program. The message reports +that the text symbol is now named +.CW $append . +.SH +Expressions +.PP +Operators have the same +binding and precedence as in C. +For operators of equal precedence, expressions are evaluated from left to right. +.SH 1 +Boolean expressions +.PP +If an expression is evaluated for a boolean condition the test +performed depends on the type of the result. If the result is of +.I integer +or +.I floating +type the result is true if the value is non-zero. If the expression is a +.I list +the result is true if there are any members in the list. +If the expression is a +.I string +the result is true if there are any characters in the string. +.DS + primary-expression: + identifier + identifier \f(CW:\fP identifier + constant + \f(CW(\fP expression \f(CW)\fP + \f(CW{\fP elist \f(CW}\fP + + elist: + expression + elist , expression +.DE +An identifier may be any legal Acid variable. The colon operator returns the +address of parameters or local variables in the current stack of a program. +For example: +.P1 +*main:argc +.P2 +prints the number of arguments passed into main. Local variables and parameters +can only be referenced after the frame has been established. It may be necessary to +step a program over the first few instructions of a breakpointed function to properly set +the frame. +.PP +Constants follow the same lexical rules as C. +A list of expressions delimited by braces forms a list constructor. +A new list is produced by evaluating each expression when the constructor is executed. +The empty list is formed from +.CW {} . +.P1 +acid: x = 10 +acid: l = { 1, x, 2\eD } +acid: x = 20 +acid: l +{0x00000001 , 0x0000000a , 2 } +.P2 +.SH 1 +Lists +.PP +Several operators manipulate lists. +.DS + list-expression: + primary-expression + \f(CWhead\fP primary-expression + \f(CWtail\fP primary-expression + \f(CWappend\fP expression \f(CW,\fP primary-expression + \f(CWdelete\fP expression \f(CW,\fP primary-expression +.DE +The +.I primary-expression +for +.CW head +and +.CW tail +must yield a value of type +.I list . +If there are no elements in the list the value of +.CW head +or +.CW tail +will be the empty list. Otherwise +.CW head +evaluates to the first element of the list and +.CW tail +evaluates to the rest. +.P1 +acid: head {} +{} +acid: head {1, 2, 3, 4} +0x00000001 +acid: tail {1, 2, 3, 4} +{0x00000002 , 0x00000003 , 0x00000004 } +.P2 +The first operand of +.CW append +and +.CW delete +must be an expression that yields a +.I list . +.CW Append +places the result of evaluating +.I primary-expression +at the end of the list. +The +.I primary-expression +supplied to +.CW delete +must evaluate to an integer; +.CW delete +removes the +.I n 'th +item from the list, where +.I n +is integral value of +.I primary-expression. +List indices are zero-based. +.P1 + acid: append {1, 2}, 3 + {0x00000001 , 0x00000002 , 0x00000003 } + acid: delete {1, 2, 3}, 1 + {0x00000001 , 0x00000003 } +.P2 +.PP +Assigning a list to a variable copies a reference to the list; if a list variable +is copied it still points at the same list. To copy a list, the elements must +be copied piecewise using +.CW head +and +.CW append . +.SH 1 +Operators +.PP +.DS + postfix-expression: + list-expression + postfix-expression \f(CW[\fP expression \f(CW]\fP + postfix-expression \f(CW(\fP argument-list \f(CW)\fP + postfix-expression \f(CW.\fP tag + postfix-expression \f(CW->\fP tag + postfix-expression \f(CW++\fP + postfix-expression \f(CW--\fP + + argument-list: + expression + argument-list , expression +.DE +The +.CW [ +.I expression +.CW ] +operator performs indexing. +The indexing expression must result in an expression of +.I integer +type, say +.I n . +The operation depends on the type of +.I postfix-expression . +If the +.I postfix-expression +yields an +.I integer +it is assumed to be the base address of an array in the memory image. +The index offsets into this array; the size of the array members is +determined by the format associated with the +.I postfix-expression . +If the +.I postfix-expression +yields a +.I string +the index operator fetches the +.I n 'th +character +of the string. If the index points beyond the end +of the string, a zero is returned. +If the +.I postfix-expression +yields a +.I list +then the indexing operation returns the +.I n 'th +item of the list. +If the list contains less than +.I n +items the empty list +.CW {} +is returned. +.PP +The +.CW ++ +and +.CW -- +operators increment and decrement integer variables. +The amount of increment or decrement depends on the format code. These postfix +operators return the value of the variable before the increment or decrement +has taken place. +.DS + unary-expression: + postfix-expression + \f(CW++\fP unary-expression + \f(CW--\fP unary-expression + + unary-operator: one of + \f(CW*\fP \f(CW@\fP \f(CW+\fP \f(CW-\fP ~ \f(CW!\fP +.DE +The operators +.CW * +and +.CW @ +are the indirection operators. +.CW @ +references a value from the text file of the program being debugged. +The size of the value depends on the format code. The +.CW * +operator fetches a value from the memory image of a process. If either +operator appears on the left-hand side of an assignment statement, either the file +or memory will be written. The file can only be modified when Acid is invoked +with the +.CW -w +option. +The prefix +.CW ++ +and +.CW -- +operators perform the same operation as their postfix counterparts but +return the value after the increment or decrement has been performed. Since the +.CW ++ +and +.CW * +operators fetch and increment the correct amount for the specified format, +the following function prints correct machine instructions on a machine with +variable length instructions, such as the 68020 or 386: +.P1 + defn asm(addr) + { + addr = fmt(addr, 'i'); + loop 1, 10 do + print(*addr++, "\en"); + } +.P2 +The operators +.CW ~ +and +.CW ! +perform bitwise and logical negation respectively. Their operands must be of +.I integer +type. +.DS + cast-expression: + unary-expression + unary-expression \f(CW\e\fP format-char + \f(CW(\fP complex-name \f(CW)\fP unary-expression +.DE +A unary expression may be preceded by a cast. The cast has the effect of +associating the value of +.I unary-expression +with a complex type structure. +The result may then be dereferenced using the +.CW . +and +.CW -> +operators. +.PP +An Acid variable may be associated with a complex type +to enable accessing the type's members: +.P1 +acid: complex List { + 'D' 0 type; + 'X' 4 next; +}; +acid: complex List lhead +acid: lhead.type +10 +acid: lhead = ((List)lhead).next +acid: lhead.type +-46 +.P2 +Note that the +.CW next +field cannot be given a complex type automatically. +.PP +When entered at the top level of the interpreter, +an expression of complex type +is treated specially. +If the type is called +.CW T +and an Acid function also called +.CW T +exists, +then that function will be called with the expression as its argument. +The compiler options +.CW -a +and +.CW -aa +will generate Acid source code defining such complex types and functions; see +.I 2c (1). +.PP +A +.I unary-expression +may be qualified with a format specifier using the +.CW \e +operator. This has the same effect as passing the expression to the +.CW fmt +builtin function. +.DS + multiplicative-expression: + cast-expression + multiplicative-expression \f(CW*\fP multiplicative-expression + multiplicative-expression \f(CW/\fP multiplicative-expression + multiplicative-expression \f(CW%\fP multiplicative-expression +.DE +These operate on +.I integer +and +.I float +types and perform the expected operations: +.CW * +multiplication, +.CW / +division, +.CW % +modulus. +.DS + additive-expression: + multiplicative-expression + additive-expression \f(CW+\fP multiplicative-expression + additive-expression \f(CW-\fP multiplicative-expression +.DE +These operators perform as expected for +.I integer +and +.I float +operands. +Unlike in C, +.CW + +and +.CW - +do not scale the addition based on the format of the expression. +This means that +.CW i=i+1 +will always add 1 but +.CW i++ +will add the size corresponding to the format stored with +.CW i . +If both operands are of either +.I string +or +.I list +type then addition is defined as concatenation. +Adding a string and an integer is treated as concatenation +with the Unicode character corresponding to the integer. +Subtraction is undefined for strings and lists. +.DS + shift-expression: + additive-expression + shift-expression \f(CW<<\fP additive-expression + shift-expression \f(CW>>\fP additive-expression +.DE +The +.CW >> +and +.CW << +operators perform bitwise right and left shifts respectively. Both +require operands of +.I integer +type. +.DS + relational-expression: + relational-expression \f(CW<\fP shift-expression + relational-expression \f(CW>\fP shift-expression + relational-expression \f(CW<=\fP shift-expression + relational-expression \f(CW>=\fP shift-expression + + equality-expression: + relational-expression + relational-expression \f(CW==\fP equality-expression + relational-expression \f(CW!=\fP equality-expression +.DE +The comparison operators are +.CW < +(less than), +.CW > +(greater than), +.CW <= +(less than or equal to), +.CW >= +(greater than or equal to), +.CW == +(equal to) and +.CW != +(not equal to). The result of a comparison is 0 +if the condition is false, otherwise 1. The relational operators can only be +applied to operands of +.I integer +and +.I float +type. The equality operators apply to all types. Comparing mixed types is legal. +Mixed integer and float compare on the integral value. Other mixtures are always unequal. +Two lists are equal if they +have the same number of members and a pairwise comparison of the members results +in equality. +.DS + AND-expression: + equality-expression + AND-expression \f(CW&\fP equality-expression + + XOR-expression: + AND-expression + XOR-expression \f(CW^\fP AND-expression + + OR-expression: + XOR-expression + OR-expression \f(CW|\fP XOR-expression +.DE +These operators perform bitwise logical operations and apply only to the +.I integer +type. +The operators are +.CW & +(logical and), +.CW ^ +(exclusive or) and +.CW | +(inclusive or). +.DS + logical-AND-expression: + OR-expression + logical-AND-expression \f(CW&&\fP OR-expression + + logical-OR-expression: + logical-AND-expression + logical-OR-expression \f(CW||\fP logical-AND-expression +.DE +The +.CW && +operator returns 1 if both of its operands evaluate to boolean true, otherwise 0. +The +.CW || +operator returns 1 if either of its operands evaluates to boolean true, +otherwise 0. +.SH +Statements +.PP +.DS + \f(CWif\fP expression \f(CWthen\fP statement \f(CWelse\fP statement + \f(CWif\fP expression \f(CWthen\fP statement +.DE +The +.I expression +is evaluated as a boolean. If its value is true the statement after +the +.CW then +is executed, otherwise the statement after the +.CW else +is executed. The +.CW else +portion may be omitted. +.DS + \f(CWwhile\fP expression \f(CWdo\fP statement +.DE +In a while loop, the +.I statement +is executed while the boolean +.I expression +evaluates +true. +.DS + \f(CWloop\fP startexpr, endexpr \f(CWdo\fP statement +.DE +The two expressions +.I startexpr +and +.I endexpr +are evaluated prior to loop entry. +.I Statement +is evaluated while the value of +.I startexpr +is less than or equal to +.I endexpr . +Both expressions must yield +.I integer +values. The value of +.I startexpr +is +incremented by one for each loop iteration. +Note that there is no explicit loop variable; the +.I expressions +are just values. +.DS + \f(CWreturn\fP expression +.DE +.CW return +terminates execution of the current function and returns to its caller. +The value of the function is given by expression. Since +.CW return +requires an argument, nil-valued functions should return the empty list +.CW {} . +.DS + \f(CWlocal\fP variable +.DE +The +.CW local +statement creates a local instance of +.I variable , +which exists for the duration +of the instance of the function in which it is declared. Binding is dynamic: the local variable, +rather than the previous value of +.I variable , +is visible to called functions. +After a return from the current function the previous value of +.I variable +is +restored. +.PP +If Acid is interrupted, the values of all local variables are lost, +as if the function returned. +.DS + \f(CWdefn\fP function-name \f(CW(\fP parameter-list \f(CW)\fP body + + parameter-list: + variable + parameter-list , variable + + body: + \f(CW{\fP statement \f(CW}\fP +.DE +Functions are introduced by the +.CW defn +statement. The definition of parameter names suppresses any variables +of the same name until the function returns. The body of a function is a list +of statements enclosed by braces. +.SH +Code variables +.PP +Acid permits the delayed evaluation of a parameter to a function. The parameter +may then be evaluated at any time with the +.CW eval +operator. Such parameters are called +.I "code variables +and are defined by prefixing their name with an asterisk in their declaration. +.PP +For example, this function wraps up an expression for later evaluation: +.P1 +acid: defn code(*e) { return e; } +acid: x = code(v+atoi("100")\eD) +acid: print(x) +(v+atoi("100"))\eD; +acid: eval x +:5: (error) v used but not set +acid: v=5 +acid: eval x +105 +.P2 +.SH +Source Code Management +.PP +Acid provides the means to examine source code. Source code is +represented by lists of strings. Builtin functions provide mapping +from address to lines and vice-versa. The default debugging environment +has the means to load and display source files. +.SH +Builtin Functions +.PP +The Acid interpreter has a number of builtin functions, which cannot be redefined. +These functions perform machine- or operating system-specific functions such as +symbol table and process management. +The following section presents a description of each builtin function. +The notation +.CW {} +is used to denote the empty list, which is the default value of a function that +does not execute a +.CW return +statement. +The type and number of parameters for each function are specified in the +description; where a parameter can be of any type it is specified as type +.I item . +.de Ip +.KS +.in 0 +.LP +.ie h \&\f2\\$1\fP\ \ \f(CW\\$2(\f2\\$3\f(CW)\f1\ \ \ \ \ \ \ \ \\$4 +.el .tl '\f2\\$1\fP\ \ \f(CW\\$2(\f2\\$3\f(CW)\f1''\\$4' +.IP +.. +.de Ex +.KE +.KS +.IP +.ft CW +.ta 4n +4n +4n +4n +4n +4n +4n +4n +4n +4n +4n +4n +4n +4n +4n +4n +.nf +.in +4n +.br +.. +.de Ee +.fi +.ft 1 +.br +.KE +.. +.\" +.\" +.\" +.Ip integer access string "Check if a file can be read +.CW Access +returns the integer 1 if the file name in +.I string +can be read by the builtin functions +.CW file , +.CW readfile , +or +.CW include , +otherwise 0. A typical use of this function is to follow +a search path looking for a source file; it is used by +.CW findsrc . +.Ex +if access("main.c") then + return file("main.c"); +.Ee +.\" +.\" +.\" +.Ip float atof string "Convert a string to float +.CW atof +converts the string supplied as its argument into a floating point +number. The function accepts strings in the same format as the C +function of the same name. The value returned has the format code +.CW f . +.CW atof +returns the value 0.0 if it is unable to perform the conversion. +.Ex +acid: +atof("10.4e6") +1.04e+07 +.Ee +.\" +.\" +.\" +.Ip integer atoi string "Convert a string to an integer +.CW atoi +converts the argument +.i string +to an integer value. +The function accepts strings in the same format as the C function of the +same name. The value returned has the format code +.CW D . +.CW atoi +returns the integer 0 if it is unable to perform a conversion. +.Ex +acid: +atoi("-1255") +-1255 +.Ee +.\" +.\" +.\" +.Ip \f(CW{}\fP error string "Generate an interpreter error +.CW error +generates an error message and returns the interpreter to interactive +mode. If an Acid program is running, it is aborted. +Processes being debugged are not affected. The values of all local variables are lost. +.CW error +is commonly used to stop the debugger when some interesting condition arises +in the debugged program. +.Ex +while 1 do { + step(); + if *main != @main then + error("memory corrupted"); +} +.Ee +.\" +.\" +.\" +.Ip list file string "Read the contents of a file into a list +.CW file +reads the contents of the file specified by +.I string +into a list. +Each element in the list is a string corresponding to a line in the file. +.CW file +breaks lines at the newline character, but the newline +characters are not returned as part each string. +.CW file +returns the empty list if it encounters an error opening or reading the data. +.Ex +acid: print(file("main.c")[0]) +#include +.Ee +.\" +.\" +.\" +.Ip integer filepc string "Convert source address to text address +.CW filepc +interprets its +.I string +argument as a source file address in the form of a file name and line offset. +.CW filepc +uses the symbol table to map the source address into a text address +in the debugged program. The +.I integer +return value has the format +.CW X . +.CW filepc +returns an address of -1 if the source address is invalid. +The source file address uses the same format as +.I acme (1). +This function is commonly used to set breakpoints from the source text. +.Ex +acid: bpset(filepc("main:10")) +acid: bptab() + 0x00001020 usage ADD $-0xc,R29 +.Ee +.\" +.\" +.\" +.Ip item fmt item,fmt "Set print, \f(CW@\fP and \f(CW*\fP formats +.CW fmt +evaluates the expression +.I item +and sets the format of the result to +.I fmt . +The format of a value determines how it will be printed and +what kind of object will be fetched by the +.CW * +and +.CW @ +operators. The +.CW \e +operator is a short-hand form of the +.CW fmt +builtin function. The +.CW fmt +function leaves the format of the +.I item +unchanged. +.Ex +acid: main=fmt(main, 'i') // as instructions +acid: print(main\eX, "\et", *main) +0x00001020 ADD $-64,R29 +.Ee +.\" +.\" +.\" +.Ip fmt fmtof item "Get format +.CW fmtof +evaluates the expression +.I item +and returns the format of the result. +.Ex +acid: +fmtof(33) +W +acid: +fmtof("string") +s +.Ee +.\" +.\" +.\" +.Ip integer fmtsize item "Get format size +.CW fmtsize +evaluates the expression +.I item +and returns the size in bytes of a single element of result's format. +.Ex +acid: +fmtsize('c') +8 +acid: +fmtsize('c'\ec) +1 +acid: +fmtsize(0\eX) +4 +acid: +fmtsize('c'\e3) +10 +.Ee +.\" +.\" +.\" +.Ip list fnbound integer "Find start and end address of a function +.CW fnbound +interprets its +.I integer +argument as an address in the text of the debugged program. +.CW fnbound +returns a list containing two integers corresponding to +the start and end addresses of the function containing the supplied address. +If the +.I integer +address is not in the text segment of the program then the empty list is returned. +.CW fnbound +is used by +.CW next +to detect stepping into new functions. +.Ex +acid: print(fnbound(main)) +{0x00001050, 0x000014b8} +.Ee +.\" +.\" +.\" +.Ip \f(CW{}\fP follow integer "Compute follow set +The follow set is defined as the set of program counter values that could result +from executing an instruction. +.CW follow +interprets its +.I integer +argument as a text address, decodes the instruction at +that address and, with the current register set, builds a list of possible +next program counter values. If the instruction at the specified address +cannot be decoded +.CW follow +raises an error. +.CW follow +is used to plant breakpoints on +all potential paths of execution. The following code fragment +plants breakpoints on top of all potential following instructions. +.Ex +lst = follow(*PC); +while lst do +{ + *head lst = bpinst; + lst = tail lst; +} +.Ee +.\" +.\" +.\" +.Ip \f(CW{}\fP include string "Take input from a new file +.CW include +opens the file specified by +.I string +and uses its contents as command input to the interpreter. +The interpreter restores input to its previous source when it encounters +either an end of file or an error. +.CW include +can be used to incrementally load symbol table information without +leaving the interpreter. +.Ex +acid: include("/sys/src/cmd/acme/syms") +.Ee +.\" +.\" +.\" +.Ip \f(CW{}\fP interpret string "Take input from a string +.CW interpret +evaluates the +.I string +expression and uses its result as command input for the interpreter. +The interpreter restores input to its previous source when it encounters +either the end of string or an error. The +.CW interpret +function allows Acid programs to write Acid code for later evaluation. +.Ex +acid: interpret("main+10;") +0x0000102a +.Ee +.\" +.\" +.\" +.Ip string itoa integer[,string] "Convert integer to string +.CW itoa +takes an integer argument and converts it into an ASCII string +in the +.CW D +format. +an alternate format string +may be provided in the +.CW % +style of +.I print (2). +This function is commonly used to build +.CW rc +command lines. +.Ex +acid: rc("cat /proc/"+itoa(pid)+"/segment") +Stack 7fc00000 80000000 1 +Data 00001000 00009000 1 +Data 00009000 0000a000 1 +Bss 0000a000 0000c000 1 +.Ee +.\" +.\" +.\" +.Ip \f(CW{}\fP kill integer "Kill a process +.CW kill +writes a kill control message into the control file of the process +specified by the +.I integer +pid. +If the process was previously installed by +.CW setproc +it will be removed from the list of active processes. +If the +.I integer +has the same value as +.CW pid , +then +.CW pid +will be set to 0. +To continue debugging, a new process must be selected using +.CW setproc . +For example, to kill all the active processes: +.Ex +while proclist do { + kill(head proclist); + proclist = tail proclist; +} +.Ee +.\" +.\" +.\" +.Ip list map list "Set or retrieve process memory map +.CW map +either retrieves all the mappings associated with a process or sets a single +map entry to a new value. +If the +.I list +argument is omitted then +.CW map +returns a list of lists. Each sublist has four values and describes a +single region of contiguous addresses in the +memory or file image of the debugged program. The first entry is the name of the +mapping. If the name begins with +.CW * +it denotes a map into the memory of an active process. +The second and third values specify the base and end +address of the region and the fourth number specifies the offset in the file +corresponding to the first location of the region. +A map entry may be set by supplying a list in the same format as the sublist +described above. The name of the mapping must match a region already defined +by the current map. +Maps are set automatically for Plan 9 processes and some kernels; they may +need to be set by hand for other kernels and programs that run on bare hardware. +.Ex +acid: map({"text", _start, end, 0x30}) +.Ee +.\" +.\" +.\" +.Ip integer match item,list "Search list for matching value +.CW match +compares each item in +.I list +using the equality operator +.CW == +with +.I item . +The +.I item +can be of any type. If the match succeeds the result is the integer index +of the matching value, otherwise -1. +.Ex +acid: list={8,9,10,11} +acid: print(list[match(10, list)]\eD) +10 +.Ee +.\" +.\" +.\" +.Ip \f(CW{}\fP newproc string "Create a new process +.CW newproc +starts a new process with an argument vector constructed from +.I string . +The argument vector excludes the name of the program to execute and +each argument in +.I string +must be space separated. A new process can accept no more +than 512 arguments. The internal variable +.CW pid +is set to the pid of the newly created process. The new pid +is also appended to the list of active processes stored in the variable +.CW proclist . +The new process is created then halted at the first instruction, causing +the debugger to call +.CW stopped . +The library functions +.CW new +and +.CW win +should be used to start processes when using the standard debugging +environment. +.Ex +acid: newproc("-l .") +56720: system call _main ADD $-0x14,R29 +.Ee +.\" +.\" +.\" +.Ip string pcfile integer "Convert text address to source file name +.CW pcfile +interprets its +.I integer +argument as a text address in the debugged program. The address and symbol table +are used to generate a string containing the name of the source file +corresponding to the text address. If the address does not lie within the +program the string +.CW ?file? +is returned. +.Ex +acid: print("Now at ", pcfile(*PC), ":", pcline(*PC)) +Now at ls.c:46 +.Ee +.\" +.\" +.\" +.Ip integer pcline integer "Convert text address to source line number +.CW pcline +interprets its +.I integer +argument as a text address in the debugged program. The address and symbol table +are used to generate an integer containing the line number in the source file +corresponding to the text address. If the address does not lie within the +program the integer 0 is returned. +.Ex +acid: +file("main.c")[pcline(main)] +main(int argc, char *argv[]) +.Ee +.\" +.\" +.\" +.Ip \f(CW{}\fP print item,item,... "Print expressions +.CW print +evaluates each +.I item +supplied in its argument list and prints it to standard output. Each +argument will be printed according to its associated format character. +When the interpreter is executing, output is buffered and flushed every +5000 statements or when the interpreter returns to interactive mode. +.CW print +accepts a maximum of 512 arguments. +.Ex +acid: print(10, "decimal ", 10\eD, "octal ", 10\eo) +0x0000000a decimal 10 octal 000000000012 +acid: print({1, 2, 3}) +{0x00000001 , 0x00000002 , 0x00000003 } +acid: print(main, main\ea, "\et", @main\ei) +0x00001020 main ADD $-64,R29 +.Ee +.\" +.\" +.\" +.Ip \f(CW{}\fP printto string,item,item,... "Print expressions to file +.CW printto +offers a limited form of output redirection. The first +.I string +argument is used as the path name of a new file to create. +Each +.I item +is then evaluated and printed to the newly created file. When all items +have been printed the file is closed. +.CW printto +accepts a maximum of 512 arguments. +.Ex +acid: printto("/env/foo", "hello") +acid: rc("echo -n $foo") +hello +.Ee +.\" +.\" +.\" +.Ip string rc string "Execute a shell command +.CW rc +evaluates +.I string +to form a shell command. A new command interpreter is started +to execute the command. The Acid interpreter blocks until the command +completes. The return value is the empty string +if the command succeeds, otherwise the exit status of the failed command. +.Ex +acid: rc("B "+itoa(-pcline(addr))+" "+pcfile(addr)); +.Ee +.\" +.\" +.\" +.Ip string readfile string "Read file contents into a string +.CW readfile +takes the contents of the file specified by +.I string +and returns its contents as a new string. +If +.CW readfile +encounters a zero byte in the file, it terminates. +If +.CW readfile +encounters an error opening or reading the file then the empty list +is returned. +.CW readfile +can be used to read the contents of device files whose lines are not +terminated with newline characters. +.Ex +acid: ""+readfile("/dev/label") +helix +.Ee +.\" +.\" +.\" +.Ip string reason integer "Print cause of program stoppage +.CW reason +uses machine-dependent information to generate a string explaining +why a process has stopped. The +.I integer +argument is the value of an architecture dependent status register, +for example +.CW CAUSE +on the MIPS. +.Ex +acid: print(reason(*CAUSE)) +system call +.Ee +.\" +.\" +.\" +.Ip integer regexp pattern,string "Regular expression match +.CW regexp +matches the +.I pattern +string supplied as its first argument with the +.I string +supplied as its second. +If the pattern matches the result is the value 1, otherwise 0. +.Ex +acid: print(regexp(".*bar", "foobar")) +1 +.Ee +.\" +.\" +.\" +.Ip \f(CW{}\fP setproc integer "Set debugger focus +.CW setproc +selects the default process used for memory and control operations. It effectively +shifts the focus of control between processes. The +.I integer +argument specifies the pid of the process to look at. +The variable +.CW pid +is set to the pid of the selected process. If the process is being +selected for the first time its pid is added to the list of active +processes +.CW proclist . +.Ex +acid: setproc(68382) +acid: procs() +>68382: Stopped at main+0x4 setproc(68382) +.Ee +.\" +.\" +.\" +.Ip \f(CW{}\fP start integer "Restart execution +.CW start +writes a +.CW start +message to the control file of the process specified by the pid +supplied as its +.I integer +argument. +.CW start +draws an error if the process is not in the +.CW Stopped +state. +.Ex +acid: start(68382) +acid: procs() +>68382: Running at main+0x4 setproc(68382) +.Ee +.\" +.\" +.\" +.Ip \f(CW{}\fP startstop integer "Restart execution, block until stopped +.CW startstop +performs the same actions as a call to +.CW start +followed by a call to +.CW stop . +The +.I integer +argument specifies the pid of the process to control. The process +must be in the +.CW Stopped +state. +Execution is restarted, the debugger then waits for the process to +return to the +.CW Stopped +state. A process will stop if a startstop message has been written to its control +file and any of the following conditions becomes true: the process executes or returns from +a system call, the process generates a trap or the process receives a note. +.CW startstop +is used to implement single stepping. +.Ex +acid: startstop(pid) +75374: breakpoint ls ADD $-0x16c8,R29 +.Ee +.\" +.\" +.\" +.Ip string status integer "Return process state +.CW status +uses the pid supplied by its +.I integer +argument to generate a string describing the state of the process. +The string corresponds to the state returned by the +sixth column of the +.I ps (1) +command. +A process must be in the +.CW Stopped +state to modify its memory or registers. +.Ex +acid: ""+status(pid) +Stopped +.Ee +.\" +.\" +.\" +.Ip \f(CW{}\fP stop integer "Wait for a process to stop +.CW stop +writes a +.CW stop +message to the control file of the process specified by the +pid supplied as its +.I integer +argument. +The interpreter blocks until the debugged process enters the +.CW Stopped +state. +A process will stop if a stop message has been written to its control +file and any of the following conditions becomes true: the process executes or returns from +a system call, the process generates a trap, the process is scheduled or the +process receives a note. +.CW stop +is used to wait for a process to halt before planting a breakpoint since Plan 9 +only allows a process's memory to be written while it is in the +.CW Stopped +state. +.Ex +defn bpset(addr) { + if (status(pid)!="Stopped") then { + print("Waiting...\en"); + stop(pid); + } + ... +} +.Ee +.\" +.\" +.\" +.Ip list strace pc,sp,linkreg "Stack trace +.CW strace +generates a list of lists corresponding to procedures called by the debugged +program. Each sublist describes a single stack frame in the active process. +The first element is an +.I integer +of format +.CW X +specifying the address of the called function. The second element is the value +of the program counter when the function was called. The third and fourth elements +contain lists of parameter and automatic variables respectively. +Each element of these lists +contains a string with the name of the variable and an +.I integer +value of format +.CW X +containing the current value of the variable. +The arguments to +.CW strace +are the current value of the program counter, the current value of the +stack pointer, and the address of the link register. All three parameters +must be integers. +The setting of +.I linkreg +is architecture dependent. On the MIPS linkreg is set to the address of saved +.CW R31 , +on the SPARC to the address of saved +.CW R15 . +For the other architectures +.I linkreg +is not used, but must point to valid memory. +.Ex +acid: print(strace(*PC, *SP, linkreg)) +{{0x0000141c, 0xc0000f74, +{{"s", 0x0000004d}, {"multi", 0x00000000}}, +{{"db", 0x00000000}, {"fd", 0x000010a4}, +{"n", 0x00000001}, {"i", 0x00009824}}}} +.Ee +.\" +.\" +.\" +.Ip \f(CW{}\fP waitstop integer "Wait for a process to stop +.CW waitstop +writes a waitstop message to the control file of the process specified by the +pid supplied as its +.I integer +argument. +The interpreter will remain blocked until the debugged process enters the +.CW Stopped +state. +A process will stop if a waitstop message has been written to its control +file and any of the following conditions becomes true: the process generates a trap +or receives a note. Unlike +.CW stop , +the +.CW waitstop +function is passive; it does not itself cause the program to stop. +.Ex +acid: waitstop(pid) +75374: breakpoint ls ADD $-0x16c8,R29 +.Ee +.\" +.\" +.\" +.SH +Library Functions +.PP +A standard debugging environment is provided by modules automatically +loaded when +Acid is started. +These modules are located in the directory +.CW /sys/lib/acid . +These functions may be overridden, personalized, or added to by code defined in +.CW $home/lib/acid . +The implementation of these functions can be examined using the +.CW whatis +operator and then modified during debugging sessions. +.\" +.\" +.\" +.Ip \f(CW{}\fP Bsrc integer "Load editor with source +.CW Bsrc +interprets the +.I integer +argument as a text address. The text address is used to produce a pathname +and line number suitable for the +.CW B +command +to send to the text editor +.I sam (1) +or +.I acme (1). +.CW Bsrc +builds an +.I rc (1) +command to invoke +.CW B , +which either selects an existing source file or loads a new source file into the editor. +The line of source corresponding to the text address is then selected. +In the following example +.CW stopped +is redefined so that the editor +follows and displays the source line currently being executed. +.Ex +defn stopped(pid) { + pstop(pid); + Bsrc(*PC); +} +.Ee +.\" +.\" +.\" +.Ip \f(CW{}\fP Fpr "" "Display double precision floating registers +For machines equipped with floating point, +.CW Fpr +displays the contents of the floating point registers as double precision +values. +.Ex +acid: Fpr() +F0 0. F2 0. +F4 0. F6 0. +F8 0. F10 0. +\&... +.Ee +.\" +.\" +.\" +.Ip \f(CW{}\fP Ureg integer "Display contents of Ureg structure +.CW Ureg +interprets the integer passed as its first argument as the address of a +kernel +.CW Ureg +structure. Each element of the structure is retrieved and printed. +The size and contents of the +.CW Ureg +structure are architecture dependent. +This function can be used to decode the first argument passed to a +.I notify (2) +function after a process has received a note. +.Ex +acid: Ureg(*notehandler:ur) + status 0x3000f000 + pc 0x1020 + sp 0x7ffffe00 + cause 0x00004002 +\&... +.Ee +.\" +.\" +.\" +.Ip \f(CW{}\fP acidinit "" "Interpreter startup +.CW acidinit +is called by the interpreter after all +modules have been loaded at initialization time. +It is used to set up machine specific variables and the default source path. +.CW acidinit +should not be called by user code. +.KE +.\" +.\" +.\" +.Ip \f(CW{}\fP addsrcdir string "Add element to source search path +.CW addsrcdir +interprets its string argument as a new directory +.CW findsrc +should search when looking for source code files. +.CW addsrcdir +draws an error if the directory is already in the source search path. The search +path may be examined by looking at the variable +.CW srcpath . +.Ex +acid: rc("9fs fornax") +acid: addsrcpath("/n/fornax/sys/src/cmd") +.Ee +.\" +.\" +.\" +.Ip \f(CW{}\fP asm integer "Disassemble machine instructions +.CW asm +interprets its integer argument as a text address from which to disassemble +machine instructions. +.CW asm +prints the instruction address in symbolic and hexadecimal form, then prints +the instructions with addressing modes. Up to twenty instructions will +be disassembled. +.CW asm +stops disassembling when it reaches the end of the current function. +Instructions are read from the file image using the +.CW @ +operator. +.Ex +acid: asm(main) +main 0x00001020 ADD $-0x64,R29 +main+0x4 0x00001024 MOVW R31,0x0(R29) +main+0x8 0x00001028 MOVW R1,argc+4(FP) +main+0xc 0x0000102c MOVW $bin(SB),R1 +.Ee +.\" +.\" +.\" +.Ip \f(CW{}\fP bpdel integer "Delete breakpoint +.CW bpdel +removes a previously set breakpoint from memory. +The +.I integer +supplied as its argument must be the address of a previously set breakpoint. +The breakpoint address is deleted from the active breakpoint list +.CW bplist , +then the original instruction is copied from the file image to the memory +image so that the breakpoint is removed. +.Ex +acid: bpdel(main+4) +.Ee +.\" +.\" +.\" +.Ip \f(CW{}\fP bpset integer "Set a breakpoint +.CW bpset +places a breakpoint instruction at the address specified +by its +.I integer +argument, which must be in the text segment. +.CW bpset +draws an error if a breakpoint has already been set at the specified address. +A list of current breakpoints is maintained in the variable +.CW bplist . +Unlike in +.I db (1), +breakpoints are left in memory even when a process is stopped, and +the process must exist, perhaps by being +created by either +.CW new +or +.CW win , +in order to place a breakpoint. +.CW Db "" ( +accepts breakpoint commands before the process is started.) +On the +MIPS and SPARC architectures, +breakpoints at function entry points should be set 4 bytes into the function +because the +instruction scheduler may fill +.CW JAL +branch delay slots with the first instruction of the function. +.Ex +acid: bpset(main+4) +.Ee +.\" +.\" +.\" +.Ip \f(CW{}\fP bptab "" "List active breakpoints +.CW bptab +prints a list of currently installed breakpoints. The list contains the +breakpoint address in symbolic and hexadecimal form as well as the instruction +the breakpoint replaced. Breakpoints are not maintained across process creation +using +.CW new +and +.CW win . +They are maintained across a fork, but care must be taken to keep control of +the child process. +.Ex +acid: bpset(ls+4) +acid: bptab() + 0x00001420 ls+0x4 MOVW R31,0x0(R29) +.Ee +.\" +.\" +.\" +.Ip \f(CW{}\fP casm "" "Continue disassembly +.CW casm +continues to disassemble instructions from where the last +.CW asm +or +.CW casm +command stopped. Like +.CW asm , +this command stops disassembling at function boundaries. +.Ex +acid: casm() +main+0x10 0x00001030 MOVW $0x1,R3 +main+0x14 0x00001034 MOVW R3,0x8(R29) +main+0x18 0x00001038 MOVW $0x1,R5 +main+0x1c 0x0000103c JAL Binit(SB) +.Ee +.\" +.\" +.\" +.Ip \f(CW{}\fP cont "" "Continue program execution +.CW cont +restarts execution of the currently active process. +If the process is stopped on a breakpoint, the breakpoint is first removed, +the program is single stepped, the breakpoint is replaced and the program +is then set executing. This may cause +.CW stopped() +to be called twice. +.CW cont +causes the interpreter to block until the process enters the +.CW Stopped +state. +.Ex +acid: cont() +95197: breakpoint ls+0x4 MOVW R31,0x0(R29) +.Ee +.\" +.\" +.\" +.Ip \f(CW{}\fP dump integer,integer,string "Formatted memory dump +.CW dump +interprets its first argument as an address, its second argument as a +count and its third as a format string. +.CW dump +fetches an object from memory at the current address and prints it according +to the format. The address is incremented by the number of bytes specified by +the format and the process is repeated count times. The format string is any +combination of format characters, each preceded by an optional count. +For each object, +.CW dump +prints the address in hexadecimal, a colon, the object and then a newline. +.CW dump +uses +.CW mem +to fetch each object. +.Ex +acid: dump(main+35, 4, "X2bi") +0x00001043: 0x0c8fa700 108 143 lwc2 r0,0x528f(R4) +0x0000104d: 0xa9006811 0 0 swc3 r0,0x0(R24) +0x00001057: 0x2724e800 4 37 ADD $-0x51,R23,R31 +0x00001061: 0xa200688d 6 0 NOOP +0x0000106b: 0x2710c000 7 0 BREAK +.Ee +.\" +.\" +.\" +.Ip \f(CW{}\fP findsrc string "Use source path to load source file +.CW findsrc +interprets its +.I string +argument as a source file. Each directory in the source path is searched +in turn for the file. If the file is found, the source text is loaded using +.CW file +and stored in the list of active source files called +.CW srctext . +The name of the file is added to the source file name list +.CW srcfiles . +Users are unlikely to call +.CW findsrc +from the command line, but may use it from scripts to preload source files +for a debugging session. This function is used by +.CW src +and +.CW line +to locate and load source code. The default search path for the MIPS +is +.CW ./ , +.CW /sys/src/libc/port , +.CW /sys/src/libc/9sys , +.CW /sys/src/libc/mips . +.Ex +acid: findsrc(pcfile(main)); +.Ee +.\" +.\" +.\" +.Ip \f(CW{}\fP fpr "" "Display single precision floating registers +For machines equipped with floating point, +.CW fpr +displays the contents of the floating point registers as single precision +values. When the interpreter stores or manipulates floating point values +it converts into double precision values. +.Ex +acid: fpr() +F0 0. F1 0. +F2 0. F3 0. +F4 0. F5 0. +\&... +.Ee +.\" +.\" +.\" +.Ip \f(CW{}\fP func "" "Step while in function +.CW func +single steps the active process until it leaves the current function +by either calling another function or returning to its caller. +.CW func +will execute a single instruction after leaving the current function. +.Ex +acid: func() +95197: breakpoint ls+0x8 MOVW R1,R8 +95197: breakpoint ls+0xc MOVW R8,R1 +95197: breakpoint ls+0x10 MOVW R8,s+4(FP) +95197: breakpoint ls+0x14 MOVW $0x2f,R5 +95197: breakpoint ls+0x18 JAL utfrrune(SB) +95197: breakpoint utfrrune ADD $-0x18,R29 +.Ee +.\" +.\" +.\" +.Ip \f(CW{}\fP gpr "" "Display general purpose registers +.CW gpr +prints the values of the general purpose processor registers. +.Ex +acid: gpr() +R1 0x00009562 R2 0x000010a4 R3 0x00005d08 +R4 0x0000000a R5 0x0000002f R6 0x00000008 +\&... +.Ee +.\" +.\" +.\" +.Ip \f(CW{}\fP labstk integer "Print stack trace from label +.CW labstk +performs a stack trace from a Plan 9 +.I label. +The kernel, +C compilers store continuations in a common format. Since the +compilers all use caller save conventions a continuation may be saved by +storing a +.CW PC +and +.CW SP +pair. This data structure is called a label and is used by the +the C function +.CW longjmp +and the kernel to schedule threads and processes. +.CW labstk +interprets its +.I integer +argument as the address of a label and produces a stack trace for +the thread of execution. The value of the function +.CW ALEF_tid +is a suitable argument for +.CW labstk . +.Ex +acid: labstk(*mousetid) +At pc:0x00021a70:Rendez_Sleep+0x178 rendez.l:44 +Rendez_Sleep(r=0xcd7d8,bool=0xcd7e0,t=0x0) rendez.l:5 + called from ALEF_rcvmem+0x198 recvmem.l:45 +ALEF_rcvmem(c=0x000cd764,l=0x00000010) recvmem.l:6 +\&... +.Ee +.\" +.\" +.\" +.Ip \f(CW{}\fP lstk "" "Stack trace with local variables +.CW lstk +produces a long format stack trace. +The stack trace includes each function in the stack, +where it was called from, and the value of the parameters and automatic +variables for each function. +.CW lstk +displays the value rather than the address of each variable and all +variables are assumed to be an integer in format +.CW X . +To print a variable in its correct format use the +.CW : +operator to find the address and apply the appropriate format before indirection +with the +.CW * +operator. It may be necessary to single step a couple of instructions into +a function to get a correct stack trace because the frame pointer adjustment +instruction may get scheduled down into the body of the function. +.Ex +acid: lstk() +At pc:0x00001024:main+0x4 ls.c:48 +main(argc=0x00000001,argv=0x7fffefec) ls.c:48 + called from _main+0x20 main9.s:10 + _argc=0x00000000 + _args=0x00000000 + fd=0x00000000 + buf=0x00000000 + i=0x00000000 +.Ee +.\" +.\" +.\" +.Ip \f(CW{}\fP mem integer,string "Print memory object +.CW mem +interprets its first +.I integer +argument as the address of an object to be printed according to the +format supplied in its second +.I string +argument. +The format string can be any combination of format characters, each preceded +by an optional count. +.Ex +acid: mem(bdata+0x326, "2c2Xb") +P = 0xa94bc464 0x3e5ae44d 19 +.Ee +.\" +.\" +.\" +.Ip \f(CW{}\fP new "" "Create new process +.CW new +starts a new copy of the debugged program. The new program is started +with the program arguments set by the variable +.CW progargs . +The new program is stopped in the second instruction of +.CW main . +The breakpoint list is reinitialized. +.CW new +may be used several times to instantiate several copies of a program +simultaneously. The user can rotate between the copies using +.CW setproc . +.Ex +acid: progargs="-l" +acid: new() +60: external interrupt _main ADD $-0x14,R29 +60: breakpoint main+0x4 MOVW R31,0x0(R29) +.Ee +.\" +.\" +.\" +.Ip \f(CW{}\fP next "" "Step through language statement +.CW next +steps through a single language level statement without tracing down +through each statement in a called function. For each statement, +.CW next +prints the machine instructions executed as part of the statement. After +the statement has executed, source lines around the current program +counter are displayed. +.Ex +acid: next() +60: breakpoint Binit+0x4 MOVW R31,0x0(R29) +60: breakpoint Binit+0x8 MOVW f+8(FP),R4 +binit.c:93 + 88 + 89 int + 90 Binit(Biobuf *bp, int f, int mode) + 91 { +>92 return Binits(bp, f, mode, bp->b, BSIZE); + 93 } +.Ee +.\" +.\" +.\" +.Ip \f(CW{}\fP notestk integer "Stack trace after receiving a note +.CW notestk +interprets its +.I integer +argument as the address of a +.CW Ureg +structure passed by the kernel to a +.I notify (2) +function during note processing. +.CW notestk +uses the +.CW PC , +.CW SP , +and link register from the +.CW Ureg +to print a stack trace corresponding to the point in the program where the note +was received. +To get a valid stack trace on the MIPS and SPARC architectures from a notify +routine, the program must stop in a new function called from the notify routine +so that the link register is valid and the notify routine's parameters are +addressable. +.Ex +acid: notestk(*notify:ur) +Note pc:0x00001024:main+0x4 ls.c:48 +main(argc=0x00000001,argv=0x7fffefec) ls.c:48 + called from _main+0x20 main9.s:10 + _argc=0x00000000 + _args=0x00000000 +.Ee +.\" +.\" +.\" +.Ip \f(CW{}\fP pfl integer "Print source file and line +.CW pfl +interprets its argument as a text address and uses it to print +the source file and line number corresponding to the address. The output +has the same format as file addresses in +.I acme (1). +.Ex +acid: pfl(main) +ls.c:48 +.Ee +.\" +.\" +.\" +.Ip \f(CW{}\fP procs "" "Print active process list +.CW procs +prints a list of active process attached to the debugger. Each process +produces a single line of output giving the pid, process state, the address +the process is currently executing, and the +.CW setproc +command required to make that process current. +The current process is marked in the first column with a +.CW > +character. The debugger maintains a list of processes in the variable +.CW proclist . +.Ex +acid: procs() +>62: Stopped at main+0x4 setproc(62) + 60: Stopped at Binit+0x8 setproc(60) +.Ee +.\" +.\" +.\" +.Ip \f(CW{}\fP pstop integer "Print reason process stopped +.CW pstop +prints the status of the process specified by the +.I integer +pid supplied as its argument. +.CW pstop +is usually called from +.CW stopped +every time a process enters the +.CW Stopped +state. +.Ex +acid: pstop(62) +0x0000003e: breakpoint main+0x4 MOVW R31,0x0(R29) +.Ee +.\" +.\" +.\" +.Ip \f(CW{}\fP regs "" "Print registers +.CW regs +prints the contents of both the general and special purpose registers. +.CW regs +calls +.CW spr +then +.CW gpr +to display the contents of the registers. +.KE +.\" +.\" +.\" +.Ip \f(CW{}\fP source "" "Summarize source data base +.CW source +prints the directory search path followed by a list of currently loaded +source files. The source management functions +.CW src +and +.CW findsrc +use the search path to locate and load source files. Source files are +loaded incrementally into a source data base during debugging. A list +of loaded files is stored in the variable +.CW srcfiles +and the contents of each source file in the variable +.CW srctext . +.Ex +acid: source() +/n/bootes/sys/src/libbio/ +./ +/sys/src/libc/port/ +/sys/src/libc/9sys/ +/sys/src/libc/mips/ + binit.c +.Ee +.\" +.\" +.\" +.Ip \f(CW{}\fP spr "" "Print special purpose registers +.CW spr +prints the contents of the processor control and memory management +registers. Where possible, the contents of the registers are decoded +to provide extra information; for example the +.CW CAUSE +register on the MIPS is +printed both in hexadecimal and using the +.CW reason +function. +.Ex +acid: spr() +PC 0x00001024 main+0x4 ls.c:48 +SP 0x7fffef68 LINK 0x00006264 _main+0x28 main9.s:12 +STATUS 0x0000ff33 CAUSE 0x00000024 breakpoint +TLBVIR 0x000000d3 BADVADR 0x00001020 +HI 0x00000004 LO 0x00001ff7 +.Ee +.\" +.\" +.\" +.Ip \f(CW{}\fP src integer "Print lines of source +.CW src +interprets its +.I integer +argument as a text address and uses this address to print 5 lines +of source before and after the address. The current line is marked with a +.CW > +character. +.CW src +uses the source search path maintained by +.CW source +and +.CW addsrcdir +to locate the required source files. +.Ex +acid: src(*PC) +ls.c:47 + 42 Biobuf bin; + 43 + 44 #define HUNK 50 + 45 + 46 void +>47 main(int argc, char *argv[]) + 48 { + 49 int i, fd; + 50 char buf[64]; + 51 + 52 Binit(&bin, 1, OWRITE); +.Ee +.\" +.\" +.\" +.Ip \f(CW{}\fP step "" "Single step process +.CW step +causes the debugged process to execute a single machine level instruction. +If the program is stopped on a breakpoint set by +.CW bpset +it is first removed, the single step executed, and the breakpoint replaced. +.CW step +uses +.CW follow +to predict the address of the program counter after the current instruction +has been executed. A breakpoint is placed at each of these predicted addresses +and the process is started. When the process stops the breakpoints are removed. +.Ex +acid: step() +62: breakpoint main+0x8 MOVW R1,argc+4(FP) +.Ee +.\" +.\" +.\" +.Ip \f(CW{}\fP stk "" "Stack trace +.CW stk +produces a short format stack trace. The stack trace includes each function +in the stack, where it was called from, and the value of the parameters. +The short format omits the values of automatic variables. +Parameters are assumed to be integer values in the format +.CW X ; +to print a parameter in the correct format use the +.CW : +to obtain its address, apply the correct format, and use the +.CW * +indirection operator to find its value. +It may be necessary to single step a couple of instructions into +a function to get a correct stack trace because the frame pointer adjustment +instruction may get scheduled down into the body of the function. +.Ex +acid: stk() +At pc:0x00001028:main+0x8 ls.c:48 +main(argc=0x00000002,argv=0x7fffefe4) ls.c:48 + called from _main+0x20 main9.s:10 +.Ee +.\" +.\" +.\" +.Ip \f(CW{}\fP stmnt "" "Execute a single statement +.CW stmnt +executes a single language level statement. +.CW stmnt +displays each machine level instruction as it is executed. When the executed +statement is completed the source for the next statement is displayed. +Unlike +.CW next , +the +.CW stmnt +function will trace down through function calls. +.Ex +acid: stmnt() +62: breakpoint main+0x18 MOVW R5,0xc(R29) +62: breakpoint main+0x1c JAL Binit(SB) +62: breakpoint Binit ADD $-0x18,R29 +binit.c:91 + 89 int + 90 Binit(Biobuf *bp, int f, int mode) +>91 { +.Ee +.\" +.\" +.\" +.Ip \f(CW{}\fP stopped integer "Report status of stopped process +.CW stopped +is called automatically by the interpreter +every time a process enters the +.CW Stopped +state, such as when it hits a breakpoint. +The pid is passed as the +.I integer +argument. The default implementation just calls +.CW pstop , +but the function may be changed to provide more information or perform fine control +of execution. Note that +.CW stopped +should return; for example, calling +.CW step +in +.CW stopped +will recur until the interpreter runs out of stack space. +.Ex +acid: defn stopped(pid) { + if *lflag != 0 then error("lflag modified"); + } +acid: progargs = "-l" +acid: new(); +acid: while 1 do step(); +:7: (error) lflag modified +acid: stk() +At pc:0x00001220:main+0x200 ls.c:54 +main(argc=0x00000001,argv=0x7fffffe8) ls.c:48 + called from _main+0x20 main9.s:10 +.Ee +.\" +.\" +.\" +.Ip \f(CW{}\fP symbols string "Search symbol table +.CW symbols +uses the regular expression supplied by +.I string +to search the symbol table for symbols whose name matches the +regular expression. +.Ex +acid: symbols("main") +main T 0x00001020 +_main T 0x0000623c +.Ee +.\" +.\" +.\" +.Ip \f(CW{}\fP win "" "Start new process in a window +.CW win +performs exactly the same function as +.CW new +but uses the window system to create a new window for the debugged process. +The variable +.CW progargs +supplies arguments to the new process. +The environment variable +.CW $8½srv +must be set to allow the interpreter to locate the mount channel for the +window system. +The window is created in the top left corner of the screen and is +400x600 pixels in size. The +.CW win +function may be modified to alter the geometry. +The window system will not be able to deliver notes in the new window +since the pid of the created process is not passed when the server is +mounted to create a new window. +.Ex +acid: win() +.Ee diff --git a/sys/doc/acid.ps b/sys/doc/acid.ps new file mode 100644 index 000000000..9cb337a44 --- /dev/null +++ b/sys/doc/acid.ps @@ -0,0 +1,13619 @@ +%!PS-Adobe-2.0 +%%BeginResource: font lsunr00 +%!PS-AdobeFont-1.1: LucidaSansUnicode00 0.9 +%%CreationDate: 1994 Jun 04 09:53:35 +% Lucida is a registered trademark of Bigelow & Holmes Inc. +% NOTE: This is a partial font in Adobe Type 1 format. +% The complete font in fully hinted ATM compatible form is available from Y&Y +% (508) 371-3286 USA, email: tech-help@YandY.com, http://www.YandY.com +11 dict begin +/FontInfo 9 dict dup begin +/version (0.9) readonly def +/Notice ((C) 1991, 1993 Bigelow & Holmes Inc. Pat. Des. 289,420. All rights reserved.) readonly def +/Notice ((C) 1994 Y&Y Inc. All rights reserved.) readonly def +/FullName (Lucida Sans Unicode 00) readonly def +/FamilyName (LucidaSansUnicode) readonly def +/Weight (Normal) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /LucidaSansUnicode00 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 100 /0064 put +dup 101 /0065 put +dup 102 /0066 put +dup 103 /0067 put +dup 104 /0068 put +dup 105 /0069 put +dup 106 /006a put +dup 107 /006b put +dup 108 /006c put +dup 109 /006d put +dup 110 /006e put +dup 111 /006f put +dup 112 /0070 put +dup 113 /0071 put +dup 114 /0072 put +dup 115 /0073 put +dup 116 /0074 put +dup 117 /0075 put +dup 118 /0076 put +dup 119 /0077 put +dup 120 /0078 put +dup 121 /0079 put +dup 122 /007a put +dup 123 /007b put +dup 124 /007c put +dup 125 /007d put +dup 126 /007e put +dup 163 /00a3 put +dup 167 /00a7 put +dup 169 /00a9 put +dup 173 /00ad put +dup 174 /00ae put +dup 176 /00b0 put +dup 177 /00b1 put +dup 180 /00b4 put +dup 181 /00b5 put +dup 182 /00b6 put +dup 185 /00b9 put +dup 186 /00ba put +dup 188 /00bc put +dup 189 /00bd put +dup 191 /00bf put +dup 198 /00c6 put +dup 215 /00d7 put +dup 223 /00df put +dup 231 /00e7 put +dup 233 /00e9 put +dup 237 /00ed put +dup 239 /00ef put +dup 241 /00f1 put +dup 247 /00f7 put +dup 252 /00fc put +dup 32 /0020 put +dup 33 /0021 put +dup 34 /0022 put +dup 35 /0023 put +dup 36 /0024 put +dup 37 /0025 put +dup 38 /0026 put +dup 40 /0028 put +dup 41 /0029 put +dup 42 /002a put +dup 43 /002b put +dup 44 /002c put +dup 45 /002d put +dup 46 /002e put +dup 47 /002f put +dup 48 /0030 put +dup 49 /0031 put +dup 50 /0032 put +dup 51 /0033 put +dup 52 /0034 put +dup 53 /0035 put +dup 54 /0036 put +dup 55 /0037 put +dup 56 /0038 put +dup 57 /0039 put +dup 58 /003a put +dup 59 /003b put +dup 60 /003c put +dup 61 /003d put +dup 62 /003e put +dup 63 /003f put +dup 65 /0041 put +dup 66 /0042 put +dup 67 /0043 put +dup 68 /0044 put +dup 69 /0045 put +dup 70 /0046 put +dup 71 /0047 put +dup 72 /0048 put +dup 73 /0049 put +dup 74 /004a put +dup 75 /004b put +dup 76 /004c put +dup 77 /004d put +dup 78 /004e put +dup 79 /004f put +dup 80 /0050 put +dup 81 /0051 put +dup 82 /0052 put +dup 83 /0053 put +dup 84 /0054 put +dup 85 /0055 put +dup 86 /0056 put +dup 87 /0057 put +dup 88 /0058 put +dup 89 /0059 put +dup 90 /005a put +dup 91 /005b put +dup 92 /005c put +dup 93 /005d put +dup 95 /005f put +dup 96 /0060 put +dup 97 /0061 put +dup 98 /0062 put +dup 99 /0063 put +readonly def +/FontBBox{-90 -211 977 1005}readonly def +%/UniqueID 5054500 def +currentdict end +currentfile eexec +AF9D569DD6A39B9A08931526FD86DA1F3D52F6A6E9A3C2A341616BA8AD4A6BBA6A84F4F691C60D +64B463C6D1B3A432634AAC416FAE1067039D940A82A692DB189D5719DA649D309E36853E1F767A +0DF1C424DA3E9D8E6B45B659E31B0A03BB7747FB2945268D0805A130347C7455FA73121BA001A8 +5BFFF1847B8FBAE1B61BA76AB61D750F7BCDB1EE8E4B4E95657E783B2230A68A5A62E9E39EA352 +7B3E832C6BF769697C2B18F29596B8A56AC9532224A452AE7A77A33DC5D437BAD5B4C1B9DD7680 +FE4456B59A798F584F7913B3A790F3E5F9559505B80A36CDE0A4D46A595E942D798E6F6311B3E3 +613059010E0C594BA804C9FA8EED254427D021628C6A59FA5C10314D3143AA329B9E1E767CADFB +B864C70BE2EB0FA96FBDCC2EB1B44783431EE1CDCADC68DF65C29B4AB7C198BAA625A3736F6240 +46E72FAE8F379B391393A007E9F796065FC622322C782111E2EE7B73FC09C5852F35A75CA296FB +ADBC77E83C2378DAE017DC93437EDA4E1473D256C7AA433FAFF90BFF104C39847FB6076D559B8A +4D05AC2A35837CF7949567F37638F1FF869CA022F28979DC7AA611BCACFFE95AA23CBFB86C9719 +BBD5738FB6D86326F1B0A84EFA79C80BDC618F42DFAB8B232211332E1D793A6C4CA71DE2D7DBE1 +5806FB210EA36FCE5FA253B9C507225A5581765AA21DB9E1739AA6063F3F7F11D72E65C3F9A83E +71C8DFC9B9E13C0CCA25836D4233D10595ED053201C745C989878BC0457410C29FED3273550E0E +C93F30B6E5994D0DE950C82E70299AB82D97B0EC11EE5CFD3A5311B0B9623C7CF73BCCE4D33436 +655812E9BC69045B581B2BACE84DEBD480A8652676ABDB2976168954DCD745B42F92F25CC2A4B0 +58AF8D1F0BFFC280B7FECF0593655FEDBE41135D72874467035351F424E92C9E4F628501066322 +AE5896C2CC8C5AD9EE9C4E2076DF548DEF8A6ADAAEC8F05CBBB8882BE5DEBB3976FDD20539F0ED +C5F331CADFFF8B1E1ACC3E0DE2DE0628766105E7EE97E55E66E2585DD7412749CCA828C3CB355F +716E5F447857D298C1383EDD389C2C09F3094A09F90652D5913EEBBFB16547FF31DBB8C0F43480 +6C96524DB4F2D96F6A32856DC62FB350D208B4462521EA9578695E7F8A31FDAFC065535AB32B28 +4F808767213AD4B89C02E59E3F2BD114BC411E4A9B58F97102E7ACB9310EE2AD2EAEE87E1702E4 +3E00854C35156E731478402285AB23B0049A74381C2355F35511C7D966B2EE653CD8A3D7D6505E +80A4BD2C96B451354DD9323C30C9894A60CE614D0B091D3A03A5EDA4BB127F255FF706AD6E6827 +9123CEF7396D89B5E5A968B4A4C0F4B0C227D1EE676801922A3CE24F2602569AF11ED43F17E2F4 +6669AEBD1F6B9E53C76043E1CD9DACDBB3B6B87F949372C03E9A5C80FABBF2E7767880B7064D05 +AE2D717B6A189D0C9F8DBC981EBEFD9A031C7592EFA0C08FD8BCD2FA1210881D95D6ECD9E72096 +5ACE2A9462EB9C3504315CFE8C6B5362B833CE52BC726DCB3450CEB73E42E667B9D86D0F985A35 +CAFF807F4DFAF156AFDCB999DBA61476BF4CCE49C6D8A8B7D2A3FC07EE8346E30F68FEF7774273 +6E55BA23311F85C7FAD9D9AA1EB17E14C45033BEE8D3093AEE9E706133FA94413F30F723568255 +498A071D76C10D12536425A7185DB60BDECAF6BFD0BE58F418D0E62FDA7B846BDD490EA7CEAD05 +E1BB9A4DF66E13758858B80F6C7216D8D606E92BC93576A1FB3604D9FBD78656FDF64328AD9466 +3CFABAB19A0636518FF61E62591661FBFD264B90156E24941177A42A0E5315F6168A93B96E27DF +2E7451F382C2C83241AC2B5F52A2C9453D3E207EBBEB3881FF237E9135E1D9191E1FBE5E606C60 +43726A6783CD4414D26F8F95B260FAE60262DE148545079C80C962D5D7BDE2A77A814CDD4ED901 +D28D4D5C4324DF7F7AA6B832B6F5E0E129F471A12373F0D97037FD695F921E0CAD8963372E8DC7 +F3AA5E004E1F5980BA9825774BB2DD511B6A9D5A0C7E7885E39E3B5497EF466C52B7DD4CF4AD74 +6E62FE4B1E082811AA45D6483725D0EE18C9C6BB988C036913682EAC4645EF90AD5FC24BC78778 +DDDD48EC8F1E64525AB9B1EFE0CDFABCC6A17BDACC1B3B1929FB2FA1DB85991FFE1B92B7999C99 +1BD3AC17B8A44E11DD954BEBFF002A0562EEDBC507DD0FF13ABADBC8E5676F5F951D1B32B725DE +FB33219FF4DAE8298887E415434BE4012D1A294F807CF53248AA137591B532B573F41732216B12 +685CB4B612B782E010644CB813A31AC4A25038A17FA0872E515BB2C119DEE59829927FBE20902D +18CF2F33E18DC0AC2108789FA1D1F61553184FC185A3BC3BA6985449149A08E4484F33EA950C18 +B0148B6DA2EF0E2F1BE218CBEDFD4A4E9A53235840A8E8DD1A757D8F48DE07C687E5F35EF237DB +EA582FFC92EAC5A8E4D9C1F048B037FDE46770B073B161333AD5E0DC09187DD0D9FF2CAFEFDCBD +00F3FF4642B63703F6B4CA2A479BE5145E3EA90359F4BE67F1EF0EC07F997A7A63797EAC98E3D0 +C64F1EBEC99C7C436EF655ACF76DE5201A5B3F5CF58F0116008DF241D370E616E8FF10BC551606 +F041FF641B4C8FA9274BC3FDE69602B2BD58D1428B119607AB28B30393C0BE4E33E5EE1059C9BC +1AC92B4AD1C7D1C71FB44429D8F8042F0A7ADEDE040F13D0C13F9BD92D3BE4E77E446DC8D57FCF +C704F6EB8D438EFA72F74835DC24E853B3B1178904F0484AED543B57FC8ABFFF4253AFA2C93C66 +C2144FF1777A1E3A40D1D023BCBE24557DAE5D76DAE6FC7063E11A5DD52B0060501E84AE0E66ED +7522828C15045CE72B548B59A3D7DFC3CF6779B4A6D4891B95CD4C6613C9390DD953FA58FE97D8 +A545177EC9EDB59770B4B67111A1FEA9E74A61B360D9C19100440F8A69386EC3878C732DA58580 +3A177AEFF85BFB5D112C37ADF7604BAB387F08243B2FEC24DAF9F95BB75A678DAA7AB277D933AC +0362E4DD5E6E4194DE873932EC10013B68CD0D1CF5298816E6B195372FAE49A5F9F722C30EDDBB +088E0F1F7D8A5D6386B8E3219125A8ED2A4D534761DEC9DA916FF875E13E309F2F2C925F28ED5E +B792A290F05B7732D217A1CF9577C0107889C456924AB91BFB728E4C4A0E70412DA721CA4B1A30 +189BE4414AEE3AB1943C0349ED437C91796EB8616D3CCBE148CD21B0DF7ED5720F18496100119C +2995490D7B60C994E93D874AB352A813604AA9A83D9388F758B7F479F9F6EFDBA983FA6DA07E7D +4F80E64E68634D9D811F3A0088BA46040577B89C7E147CF96C4A999CA1899799FA56F401645A97 +DFF68155332EE3F23F3865B6DE715F1AB687A696878C9821E029E3D867BDC50322A0C90081E3B4 +3BA1E889C277DEDA5ECB0CBE16F8FD562B82F22DA851CA5AC51EF3051382E9706A2F6F14CE6897 +4292ECA605ACCBAB5071ED68BB05BDDE20C04E0007A8EF46D69FA79540C53E34C29F3CB68E9329 +8472F6D89EF77A28A18B334278836F65E88255F1FD3A3D031A22BBC607E7BDEB1D00AF60D5E024 +7E971B8965728CB1CAD6B5853F4F66448031312AFF8E56B01BB8D50F3A1060A18ADB1FA8F84C69 +399BE117B98430CF63288BA1950ABE0CEC051B66A7EBCC7A3FC793589A4C52EDBD1A71ABE49916 +10496FC6C346C376D3B061B00BE7B4A659D21A2C0FFD3FBEE485EDB7BEE599E5248DC5FCD89632 +61BE192134BFF9C9709E76A567A0F7B5773870EEBE07E3630175BFD8C5520B2AAF6DD2D7C3FAEF +2E3F52318A7AD6E05847D76ED22D021BFDAAB041B16F2AE08FF86DE08FD998D61DE2D0EA477E46 +6E963EE5EB69F69E30113F0D65683C37CDA865CF92EC5FFA54DBB6798738D38DD7898BC7C26AF6 +939EFF47B1A3DEE6B5E38505EE05A0F671EF8917A434D92EBDD8F6820ED3A2F24199D47745D393 +9259A5D856E1AA9EBA0292EEFAFF75F709ADCDA0D6453C3550DB28BFA22549BD2A282E8B9F2367 +FCF20AACF9E7B725D0ED0498695F3A2DD76389BE8A99B603CFB0FEE3C5642BD02670108226BA9B +A90B90B1D660C552307E3D388661A20C5F42C3CFF5D0E0F6DA69792E8FB4C83AB821D0F7D80F23 +93BCAACBBE56E8095466F7BF8B0504B72734DEF119DC32DD63F1BCA3A66A5F6DB5BC221F4927C2 +B08601F89D71E754481CD1B3B8E5EC8E9A22F5AD8CF45039FB8912A2E4EBC638743D7614BCB41A +49D162291E70BD656EF7F54BCA72BFC633984F1B15B4145F13D08B255B77A357C15B8A5DB04C3A +95827DAD0B0A302577C12F66389E4E40040EB52AD36552A592C47614A9035E7CDC4BDA55645F8F +72F10287EB7682F17034B836B44F111B786B8A6A47023EC1C950A4B0636C28E1753781C9C0B206 +5DE58A47D2E7B1AD71D8DBD36E72DE625B5F52B9DB0F9679FC4B61005A112E9AA717504C71CC0F +F50CE8E96DFE3AF6613CD4A3B4645ECC5F495E3DFBC1EC17575457EF39A0D4709221F2F1E14FAD +ACF7FA5CCF662DD341477170FB291B706D76CE78C3CC90CD36A45BD04704DFB2B251CD9B1B69E6 +B9DB3E9739DE8B2CD9DE63E61ABCB8581AD13493468EE995EE668DBE6AF6809F9529595D67DA56 +DC7335876F36499EBB7226FDB9876A7D0D43159E77F0AE36B55033A11156C3F757FBBA38177D24 +88EFD1BD9D8F69ABDD365989CEFD521F60BC9005D8C40942B43FC6DB8088842BE8A7B567420A80 +9AC76E7BA77D5EFC8D9A2FCDD1A565EB580207A250621E27E51685A0C650323B4D2101810F6C89 +E5D312BAEDAD3097F87C6064BA138681D3192C219ADA66AD2B0C679C8B00078597B2DE46F5A040 +91F8C34813C07AC64B2F5FBF0EF52B16AA1EE9B9ADE71108DC9D47D587585A933CAA161CE586AC +E30BA582A5CE8728991B10AE2012C2291B7DCEAF72E0299FF49F5ED495773656908F04F697ADF9 +32AA61E6D90A87BB0F0311AF737E9F72C501CF1AB4DDF4392FB9F3E71F859D45F32EDF329F4856 +C12ED2DB6FA3631B3731D5FB2DB79E193BB8BE75B85722E6CD85C35C05C2998BC6B854BFF76A39 +B1A51ABD3304ED453AA413E6F6329B651FD13C0751886DE4553E0B79441FFECB81839626868715 +0DF0FBBD53F7861647CAC9C633B9FF63BCB644D124F2420A7FE6EE7EFED293C9D53983617F2500 +6CDF86C74694A20569BBC5DE7616333432C0FD525029E612858F5BF27D1FE06931A5AD37675162 +2AE14BA10E2702CB896CC5A5164A287AE3771036AB2EC7F50B20576E73C151580E0D0884277FBE +9D2FBC52DDC0EC22A07138C692108A6C637ACA40D1881027E23BECFF6C54A50DAF7A79B5CB4BDF +AE35CD587F46B14B3A89A50487F8A6E20EE48099B44F459E48D65FB393D2874E4BF7544FC325F5 +B04FDFC0ABF2D6B8B6870A617D344AE093C4412007061670E6913B5581A0EE53B3D8C2D75E9560 +101D4C217EC44BE71F866F0F40D1DC7296ED313ECBFF60CA3A05D45E51E32D9E75ED31F1905DC0 +4F4AF2A29600172249D0B8B5B42D99A546A9C45704A35711637ABD7A64BF4D417564ED0BBBC7F2 +093F6C7F87A770F6B6A655DCBC13FB4CC24FAEC848549CE2415301BF6BF234405946330E2964AF +A37702223D1466A780720F39FE966AC1023866246F7E25BE2A1E0C009708DB2724E13770A8817D +6F27A095BED4C33648173F0DD8C627F405ABD3CA636EF8A9E77CC67D20E51721CA655704BFEC27 +564A69E6193E5E3AB1814FBD3BE29D72836BF85C85F4555FDF3908E6BED58E0927BA45AD4434F8 +D15C510FA5CD1311F7DBB20CAACE0D88535C58309CC82CA5E6ABA2E0DCC4503149E52572A0F8C6 +7ECE6B8145C85E5F211F341AC1450EEF4D1102CA184DABD5CF00049F7BE76FA793893F2873A237 +FEFE245F059AC85956B5A603DB8871BCF4DF3665364525E7B539A6A4F2C59473908121FEA5DA8F +F5E4A4FBAE0C602130400E1D9D1185703F20895806C2DFE6E47408347CAEF151C730783FB6BA38 +9EDEA18F865240ED604D0B6F5850CD18FEB63AD0A3ED46A933DE64C9571C7F15393AA81577A0BA +6A227ACA16DB43307E76C10FC630E6550079E7E5609FACF8DD84376AC186DE2E1CF84847C4E2D8 +C58385EFCA099E81B6435D8DFA6775BFD76C527DA6CE32B6326944FB6970D2787190CB0572AB6C +531EA63DD1F6BD5F7732CC7BC7751DB30874EBD006978CBDE960BFBBD8C2D115C26E7CCBA2C802 +131AAABC284699B18989BE8D548F30389BB0DED8FC122A1433EA61D074415882143D865E28A9D7 +8E59E47EC5EF1E2C5151279BFF1D77ACAB907F7DE9514A71B21C129480FE708B9AEA442EB1DDC5 +59574095F57BB3750DA4521BD298A19CBABAC650FEA7D9DDD40DFA7999D0CC79DCACD517E391E9 +2EC65FE3A64CB5BDE1A203E53D73C994D53215EDA4EF8BD06658AA94EDE4DB65719A0903035679 +B7E08BFA7C40E9AFC3ECC0A243C79D920B2F87C75430F2490362FAF9FF23E3880E7ADA9F3DB155 +6E00470C2FBB131F539600D21238CACD785964F533C80A39605C9AAFA6438B11F72D9148455E9D +88A43178089337070A47297BE223B93CA175DAC0EA3CACA4A9BB07954449A1F9A8F5DC084602A6 +2DB0D098D3EB9D967CEC1B247134B47DC120C03B66FD26FE2647C48433BB994310137C95B02FD9 +54B450FF00B194F0C5A0A8623B1101B5F32589CE81BB1EE3045F4C78AD26A9C5868AFF70DF6179 +F2A72599892518A45C54689AFDD92A5E21F47CFF3AA8636F82B33D9716DE11C3297C403B5E2708 +D9AAA7DADDB484F6719DB1A07F42C0BF6532352BBB529478F0F08AA86E554A2C8ACB4D261C0358 +CDC56FB9FB160F9CE9C7DDD0CDEAACD1FC38D9066AA1B50E26079452FA515EBB70F3F5EFE3DBE9 +791161BC643D1BB3147C9A0B0563EA94F930201780DC3E97164C369C62D75F4BA3FCB116215771 +0C7B87C4A42BAD8EE7AD49877F9AB41BBE69730A4FA1F83F4DF48F40AA6E8891D61F1E2F5B5AB7 +6E85BCDB7DB8A8D7F3E1C5628A51246896D923DE53B1B297CC8E37E0C46A6B42F616CFCF17B74E +DDA896D6075C4D60166F05F30DE0CF48A3BA092A0D2A694D01457C46089B7F573CA6A7499BDE06 +098699CF1F28CF849D2716140669C98949A551A227BDDB5594F205BFB0F0379CCDC1B53472C335 +7834C37292EF98DF1A5B42F2E8EC82381AEBFF1CD435499D35A59EB295CF563A574FEB6F8CFD09 +D9C2E2138F486226EF089654BA218706E643BCA601DA71B7A2670A15B25523D7925D1E7BEC264B +9D5D47F30A9D36CEE25E5CBE2DB3D6E1566AE8067DA2718ACC991B618578F490DFB3B2F9F2E482 +3CC80AB2B8BF562A6E5212A2A2F2604C0894D1DBE14FE9D7222E7F3AFD49D5B2344BB34CCB0007 +0246A8A3A04DB4866BD9823E0C21C8C226BCBAEB92372AB547B8FCFAAF03AEDD70D2207840D6DD +0F833F8C19DB2CA2BA4F271712E2C617E84F34CC15078F9A8972E17B8CDDB1D059C53F7E34F975 +1DD035E00F744D2EE8178B33B6E684E6D55186C9F2FE95F9964FB13CB7D83968F06BA14A62BB43 +18A5830514BC532CE55995E1CD3C939ABAB0D211B1BFA806A353E325A73BF75601E817265F6B08 +A43BCD7AE47648436A1B5285823F234601924C473B761B1C057D4C174BA653D5B0E7186B99577C +2F353E7AF1CC395EAE45B1595CA37FF9328AC2EFA8560952054F76A72D7CD91AA018B85EE553AA +532C2BCBCD412F349DFF5C37A1339AAD0F4957DCD5EC6833060E93914447483B2A2D9041621980 +83838093C798878E5D558F7B51A9626F982115EEDC2039E3C583F264EAB8321AB228868F221E8F +4F9EFE1E760903FE51F98AB321D1347CFF719F4EC83B91E010961CA4F26B7BB7D4C769FD636A4A +1931EBB2668FD9FD1DADBDB6DC61AAD03C0077AAA035608BB2F6855593CDD133AC28523C100D99 +C98A26C29C0A610AA270C03375AC0B9E7F7F265612B34C4DA3EE925B6BC8A98257986AD2AB4BAB +B31D5E387984D102043BCD2F908573DF0D5BA1C1A59FBF2411A820DA0A6E69D1C19096580701B6 +D8E814BFFC91F8068DE5D1A8C601010A53393AE554E003AE1592FA5FE0609961DCEF7D944F5857 +64F66C20281424DC4BDED24291DEB386AE9C3DB43133E91401F528017AFAA530EB2736D3B6CE7B +CB1E0C5A6DD5690AEF3465BA0836D2A68D6F3C5958843F4299B8B2728116952F62815C71B483F7 +631338CE3FD626CC22C9256AC95D88B2F4659864B022A0BA75127BD9F4876E0251A2E707FA37E4 +D5D5AEAA0EEDB18F5584B9FFDC9386C46D1D19B0419EDD812FB9FD83D531248CD1F6A4DB702135 +9C13D1629EB05CEB121CDA5944020CAF186AF94EEE6EFF48023EDFE205E749942482DE061BC86F +58FB8289435ECE461AB84B09D342138561C2B4B2496022DD57C8253CE557FCEE1905C16A01F5B8 +BA4E7F7D5006D434CF962ECE76E5C269A7243C826C0B7CCB5CB36088AA99BF3F3A7377A76779B6 +9ECEA4A83BD4713D12BF424373B399EC0A99CF5D8AF7D5A86A390A80AEA33CBBB202E0A8BBB72B +1D685B2ED32EBA11840D0C9CE80F61BF2228924DC196B9C40F81D124044BE6DF12564AA1EBF652 +41AF0DAEA563735BA4E8151F3C9820273E79DD4E10E5989BD0F291DA773C3DAC91FDBBFF6EDE1A +5D5FAC03DBABB5C2E97BFEECC08B2701C72ED14C9CA5040B9FC61A08800C5137DC617398405004 +BC3FE46672BBE3342CEB1F9750CD7F4E057E098ACFA0A441C460886FD630EBF90A327DCC2E2635 +9DF000FD24E56CC30E31BBAF1391B89504712D09C867D7E68A965E57F854507D7294C9671F38FA +9B768EAAD52137CEA03A35C82BCCFAE056DFC1214ED21EC9F5DD4555C642C2FF167EEA4EA07CF6 +A97BB9042097B1AFBFB6FE69E09C2C419E6AC38372B92590ACD39A83C84EF9AA7DF861950F5354 +046E90AF64F28B6D38CE89D602CEF86B1A47DE38E31AB242864D7BAC0EE07878CC2F30A23FFE05 +B055E4EB475BE2035B6F3FE1573FFDE9A7960CE3180AD3FBDA2BA62215BD4C964DF7FA9B7D8A0F +B32A8C36B1678E7297212BA6B5B72B1B0B9ED8C5F9390984240B3C77A137D4EE6ABFD66FD2BDFD +57CD46185487419C70C2754008A24C064D506D8FEE86DC8FA6B5AED30C3662766B8E4C7A0E205B +EF87BFB1DDF81B236AD601F4C1B25DB98B211C1BD85BB8026F6EF5EB14901240787EB10779A7DF +C70E02E2066E516BE60C726BA4E0CAE1C327A762BD30800C7F584E2796AB6A0E80AC5500498962 +52B1AE178A2FD57E0A72758E794E455E1C78696634C09077DBE2233BB4FE9FD3C428506105F32A +68A9DE914C10D7D3562F0E70C12963E7FA5EAA2AC08A384995139D4EFF7AC6A1425929DA25DA7E +11E40FA431C268CC157D3A2E7420923D546B22C8CA59ACE87633D5D6FB804A1569BAE93C004668 +A1EEE0DE42DD0A78FEA435A7D9C84A95952F78E626AABCCFF3752171730177C9AC44378EA69012 +2F1364640C4F200D885A85737080FB67E7D1BE9614D4A5A2F538C137E92FFD914CF587F03084ED +745B868102E34FB9BC2380012264F1DE610B218B84448BCDAEA37C9627A6F8B94406D069BDE191 +1E23A4AF49D64233A965F0253ED2071E61FD937A1B1B501A43021C580EDF1A1E92D27ACE0605D7 +3A868177423EBB55F178963EA9A4FF3F9F11DC1F4F938E36B04DBEC953F585A9180DF530906CDD +046D5758F792BF3AEC670EFC402596BAF8F4A3052B9C586A3E17302922D66E6FFD813480D83D4F +7245224718D31E2006A72DBBB1CE84901F69F07C5EF3554CB22A979BEDDA37E0B2E635707937F4 +526896CA654964ADFE8CEAEB0DC5AC4A039B7C4C641CE8C8D9908E9BE1BD78C77E272F9811895E +4F8DCF94CBC0B826AFE5C1692937737713CA4F7A5FB901FD7DB797B0DD9C6EA4F82FEE8E843C0D +799B552E44193298AFEE0BBBE7CA2F6759C891331B5C97AD2DFB0E2CC1BF99589B7E4619A715F8 +AB5C88BDAA1032D90B4CC5A2B4CEE7470E56E86D4B58F74CBF8D519739BE55381B75B3C8FF1F39 +45D5669B0C9F068551C7CF0F5C227F4401EB8FDC9105233154943A10C479AC9826D6366B03A775 +2CA00488AA04CDAF8B1E0DF8CBACB678A26415414D1F15D0F46FDC5A379D5EFC53DB57CD66AC73 +D274626739D9260F078EAA529693B112392FC5DC3F025DCCE34858856D61A86355F8A74427B073 +3B6AC1C2A32B1D3FFD6402798AA093391253CC3D65595148994485CD6A74271FE71093552BD0E0 +6E4BD8A55685FF784C530D186B923AEFE16250F3330789BF632F9A1AE789ECD4F8DD6055C3E7E5 +40F0193CA768EE69C37B8E51C4CEC1D1A7B12ECF6F65DA9EADC0B3B77D22084CA3E48CF0BB2E48 +37DA5D58F4F2795BFF4F62C2F520AE173A098E6F1E5ADCBD2BB3A1D26363F8F645B809A8AD40B7 +EA90DE4A9A26BE11FA203A55B144161881665D6D1D74263AB371C31FC70F9D8AFD287C0B87BD65 +DE2B3DA8E13669ABF4501ACE58D9CA150F30B23388AE9BFD053976B223E9B37D226200AF4D7697 +840FFA9EBC087A72EBB45D3D1FB5EA3E3E882BEB4F9B702DCF69DA879D72BEF2377FAB6094314A +0673364D4165950458321F9190989C00595C4AB4AE76C246D26B088F29965200103D17C6104BB6 +E95802B4068C0D24F610532AAA2267D6A36183A5CDAB42140ECE4E0A8EDAFAB4BDF8EC6D706CE0 +562235124F1564DF380549FD931F3FF4616F24E9FEDFB3C757570E60D56D1F3568E575A35A9E5A +F59CA70D9D0CF142A3F50A396807EBCD83E58AF06A4EA165730CDDA6E363B2B1F0B060645782F3 +70E717D38A3BF1552AB327AE0F9A155E15925A64D0AE25D00C5FF977BF824955926D8CD2072C8E +41591597E6907300DEB999F06449CF393A8C0A04EC6A9430BDA18F680E6B9CE7A438320224C47C +FF64783FFF47F55CFD836B93163BE2C4D9E16C0D38E0249FB1AF2E6D951C89302C7163031AB84A +F4A2ABD01EF9AE342F5284390AE12EEB1FFFD93B281162F01AC4C4FE90A4E5A53D27802A647496 +94138C6D66079312FC04FCA387A5939556C12130FB04FB892EEC36C7470EEEC2739378F96B6392 +2668A33A7F868518F380DC0E91CE2C90484DA50B6954FD6AE5B7A10578932220D075042D762CEE +4AEEE034A4637CDBF7298069DD2FE8D74265ABD5E4BCEAB81425516A38442053CD3AF67E80A50A +E9213D7B4AC2C62E22A73DF69F8BD5E0C6AC8C688DA644EF6E20210919ADD9D69FDB4D5DA26B06 +10E8DB9748BA445FF931E3146E5937EBADE4C7FC61303004AC549C1900F5CF8E1AB0D63F13CD7C +5EB22E21E9FFC31AEDDCEAEB76CB869253111EF1CFB6D8162DA3E59D77F44000B96386C046861D +B1FA14BCB2C07B5B373312468AD8D73BB483429A22A27BBB62FD087A0F8FBBE23CE21F3F49EDE5 +F0A329993AD337C393F1332BD534750579A3E72D194B04EBC430594D4E181AF8FA60618E1502F9 +3172E26B55E5AAE989BBCC48374E8C6906A34BFCE114C2B2B4ACEF9BD7F8CD81A44F855F15CA88 +BE8A56AD1BF77EFAA5BC81C97B8F29F878F9091D651D5903E3F60D25EA1D97B6025FDBE181246F +05262E430FD57ADE69286353EDCB572069E25BCA99F3FE8744ED8297D933BD7B5F5687BC5DF1FB +584B8207EEDB38FC95BC6036342B012CDBDCE4F565B6D6DAE2EDA1B4F40B054DE50043D7AC9C3A +C0DD32F1AC2D38D0230231C17D2EA583F5740A47CCFD0FAB920FE1A49914C663D8CCAA9B1C0672 +055483B762DFF0493E0D46643BA4458DAF364512A3C72ED1AF38DD00FFE18592E96DF318B7C96A +2FE3543688CF50562159576FC9D051B6BFCD32A80FDD537F2A88DD9061CCBF832819F09570308A +10065010DB72AE096D02A61092961094C1E383712FBBB58FB322ABCD0CFE77B98D9C584AD5C9DF +53EDB81949D310679E2D28A2D8B347434BF71445EB9F9F1A2C61B6BC16EEC4C1522AE46C5E9984 +1206FFEBC27388D4952FE629644F6AB7733C457CF939C324DF0C4FFBC5E7BECF655B1F09670D17 +421CFE6C9A0FF4C4D7342E8CA177A602E7FB93DCD456151A8208C332541869298A0EA29A787931 +906B0EF099CA32F975496AB342130F34C92CC5A863029E030B66D3626C88F4887CF5A8A92AA750 +E5660AD03EA55D69EDF466D4AEE45067D5496FF91F26BCDA766476CFDE111F227FC7ACF6FBE1F3 +22038A92031650E9B813AF16A37B4095F039DF57791D3F8242C2C409B37D045001C74BB740E2BA +0D29CE658C65510AFB0D899C651DFC01752F9425D5B152436B04D5DF36DF03F11E141FE994BB0C +B0B7E37D5ED5981FF91DC25335A480ACDB25C48C20EE40F66F5B482A626A4D0DD2689D862F302C +E5421DED7429235723092734BC73D00F56419927120414CF8659CD1F964128BB6FC105A7E090F1 +A2093CDB77BD1C04C723E0F1C5F60BE70AAE29BF0713F86C58DE426819D22390DC1D985F2FF86C +08EF83F2E9AFB3A62EF4958945FE270950418D0B26206545CCD081E4DD18C9661BC8CBB4C2AD15 +1F71D6BDFD16F8FC0E239DA5D19E8C2DC980C367B7EA589A5278901D913600A2AE6728589CA00C +44957816D98775D86D9F11C086A95601730EC4DAB3306ACAA840599A785E4AEC4C0B45D14800C8 +0EA12E04F69836CA05D79543A7D7043DDE89BD573A8A937E27DDB89267C30731E20402901F9042 +675860C2C1EEA408F35561E73301F5DD52591A59FFC7684A1FB9228A3CCD6D321FBAFD05718411 +DCDC2ABB7A588C8FB14D916993B5FBC01409652E5818F2211C86FC21FE154B464206B642B12564 +A6F4A8F4FD5ABB6F48E959FD1BDB8C413B2D6E12EE5286A805117A97E3829DC83F431AAE03A6A9 +3C97DD6640E4EAE56AFB44C1892D3E531FBBC7C1ECEE90583A72F6CFD618CC01E0DE8733D38568 +2600AF19FA2E08FF0C29EAFBE912C289E57F0C315AE24445F1A5AB2F492FA7A38A4886FC0035A2 +7E793BEA877210F272D16771C90B5BD86267F889D3A25546DA863A100005511CED9C95A1E2AACE +E762E6501DF03F146719D3581365260811105609E56239B54D7AD1F0AAB6C7C168C7DCCF3CB30D +06080F32E815CFE2784FAAC58AEAE4F22D72CFCA289BE03F9B2DFD27FB1E2D27572A7400303398 +47AD06137695C113E8C2DFC0BAB9A3ACD2A856D9E7927FEAAE009B6F0CB84F76A488CFD5205AF1 +DC4313B6E4179B1370695509FEE3E64A9AC425A043E434ADED0E5985B293669D09968D0AA231E1 +B2F617CDE5DF2A681B2054EC1FE239E95EE1A11823F73713F9CD4AF03E13A78C2442B6AF16360B +01E8CE7DAD91717567BEAC799962F00A3509E24E4C4882124006B252F9A4C88071629A9C2B7104 +6483958A3D0FEC7F0A48FFD5E98F3C49B0FF8BFDF5824DA3605980B4D72A8902ABB0E0F52636A1 +06605CB90404E57B49596690E4B0591751D5630148B140AD0D2EA236764B131CE42AC418D3EA2E +2DFD09FF17D979E54C6194DEE059501718A14F86ADE2E231842ABAB8A6634C0C31C3C125048D6A +0E96A2BD785D51591B79E2022D49F2EC9BD874FC2FD52A7DCF644F124215C7B9D3DBE9919BF9D2 +138F0C75AC93F48C7F125973BBC8EEEE34502A62986FB8CAAA8242E499A85E43387264D3982838 +791590583BC2D74F1D1E3A4F4723457077D8E538BEB749D35F44F37B86A26C90951CD56A0E5086 +74E42A1EC33FA88A47C248B2D9783D4D788082B89368D73F2EA3131A0C78DF9CB707A0F65F3AC9 +3CC6E81866BBA0D87902E04CB3DDE252CF76344C2A2EE70C9260BA8C4DEA508D5B267A9E852C75 +79C062478C9F224D6CD544047E6643753F6B9D387EFF69E37E8EB61E6C50BF6CC93845070FAA36 +72EFFDF8F0EFC7EEE9D42594D1786BC7F3280FCADE5027ABFDB83E6E8A72C457BD6B2739D263F3 +27C5E0BD130514D98A5FC840558E85017D289816B13C0BA1FCC6ACEB5DDCA6B7F4EE30D1D7E617 +3D9B14A16F330E9D32BE3CE1B92F18D2878A2C3CCD52B2103B082454C60724EC75B08D187E01D9 +EE3286D69B9EAD4D8D35AA8BAE3639B7E36556E1BC86143C1BABD3D05B4CFBD918C4171B3CDA77 +A1C49679016AB674530416738945967896E405A3A7A451F43B14E7BB3BED0CE014188779610F21 +E869A79245AEEDF2D01CFBEA80B9295AF35A7085E4019F499820420BC15E5D3D8450AC979E4499 +A894699D154648A74C6443EA53C851E67F80721930FE61C346207F2715F3E20418A9F58E4C12CE +9ADFE14DE865DB21085783B011BF1CCB2C3335A55B61DF50486A9465BA7BA85373E10F7AC3202C +15806C98F7A8215A89DA4424D4B16A5E352AFFA05A58E5A6B0ACED834D87E7EACDEDD65CBF741C +9EBEFDB86AC1975BB61AE096239597DD08156D26E218A61C1B69C71953447BB7CA6C055F2637E0 +B2E320C1EDD20B7B4E43DEB395DA221CC17F237B81098232567F591977CBAC8678870E1A1850D5 +C019E56069F11037B2C983E61BDB9778C50BBC9FFC6CC1CACAEB4FD3B4CC131BEEDB3C486D68E0 +69303A06E1653DF35D6421F93F05DFE32BB953E0EF723CAFBED7DD829B2D469CDC9F6FC1FB6F89 +4BBD9785FB48F1A89DC2E1208192BB44E7F3DE2D632830894A57B950C7112D76AE978454E0D666 +3F97E8FC2225293977FB65D46A5A64B2BD75DD681D4B5AA39202CE5E6846B872482765F1086FE4 +6200918A34A9C0375CA555FF25C70F075530965858942F0BEBC9CCDFA2515D198479BCE058BC5A +98E014F017D5239CFA21C5801B13619642DB5DD9A2A16FAF1C7348135BC59E31450FE5824201C3 +99E397C49DFAF1E8ED16054FE187A136E5A838976A48A1AD1AFF50776E953287C5C026CF2070AB +8DF13E926E668353197C0DAAFB3BCD64D391E8DA10AA80C798A914D219D0AC05A00D4FED72885F +408293D9E9D952E47CB8CA81F3797350D50EC0B74E526825DABD3D7DBDFBAF7AF4781D11C82D54 +05AA18F1BD75F7FC6C2B135F34EB3B29599B7600912F23680F5190B6D9B06D619B26F1D086D122 +51305AABC2BF2282FAEE69718201523BC2877A640EF5FE8A68E1358BC8C0A185C304D9986A6E31 +FFFCCB726D2BA189FBCA9C699994DC51F65653BBFBE170C39203C4BCEA90E07FC0F45D0E788D45 +09948A4AEF90C62CB4D5126AA30D655A817288039460D3E8A0450B6F3860727224957DEACEBA94 +86994D34743A32EBDD7D0E20A3E318F5288B5AE38428D3071D5DA2D3D612F23617AC4CD5EE84BC +8BCF391C4AA0B721FA25AFE0705091FDC0ED96094B19CE0C8716F70EEC15579C95E4754C394895 +EBD7D83FA8B9DD8B7134E6989D3B51C47600F053EBC134795BAB7C2B7121698284E9313C442E65 +C1821476436FED31A80A8220F02B781A3D19BE6E483699F7E809B1AAA0FA13DABDE873C7DA491C +02499F9275DE49A900DC3D624FD28F4F1F88654CECDE505D7E3E449DABB1417FC03F3E0EF42F71 +0F952C7DA729B45BDAC3F766F512984FF02A178D289954D7FEEFDFD6571A8A36EC673504F0D737 +FD41CD8384B06842BC686EC6B4F3B47E4BA7532649FD57373EBA8FFAC961981C381F2B1C731709 +A9F210E7928F13185B3D0195965330D0F4DD1CD09E008DA25C067735261E4CC2C66D3FB1822E44 +7C2E3C15E815DEB88D2DE9390B179D4EDFEA55E78AB2B0CF12FEB75967D857A604075FD20ADDF2 +8BCF12C46347463A7BCFF3ED8ADF441ECB3F17F799B3ACDE848CCA5B920A2087EAED1302C2F000 +CB9396EB83598F891ACD25763F567BA9E5F3C4916C62D8DC5FB3EE188F40EABA66F51AD59F7256 +DC4977C9408808781A5B790AA26FE9E3EB1118D535A76E6445DC5EC4554A4C1A06FD082C8C1D4D +29B3CD4F77CFA9356E7F055EA5062151B272CB8A036DD5F891E4DE82FBC877D9816F4AC9EA007E +D58201808D17C5B7C0780161607EE88B6640780D23870D34892956B561B0C1910F3B1CC8261FC4 +17C49A520D7AEB3239B7DB86BC800FD1014AAAAE84DA78F2FABDA841E82F102913C89687FB94D4 +3112FFCFAD37D49D2532F9DC3506F54CEBF3D3D5AB4F32D96A801CDCEDC7D9002019EC48DFEFFD +62F7879D0C9FB2CEF3BFF219A397877377AA2B970ACAB8361CDDBC1F38C5F7D9397E2272751DA2 +CD98CC97479CEC135A2496048FD8050FFA680BAE058CA5264E738D1699826FB12A96A6D328CC03 +19F501CF5AAC51A62E6F587FB2DD98881D69FED686B64D92FFC5B1AC2C957EE5F86CC9E5BFAE3E +73E6507C5809A576A59268341EB5E3F863A69F0C805A98696A5D764E714C478B544F0095BCB352 +7D00C34A67EFE6D156EBA4AF22AD493F7EE841A8489818047663C145DC04BEE4F472544C9A2018 +2147E184BFC894362E366A757B586FCF92248DDF8B29BEE94B4444400B1764EAEF6CC8110F1371 +D34CC38A939748CBE0226C110DB1C67EC241F07953B61C683642706930266E07309655962648F2 +5E981598930F3EE4EC0F75614F777742D6CC0AEE86D7D5111D11D5077297B5358425E660A296D8 +3832D37985D710E0F9EDA67875EDA4B75457A9573E3DFFE441029ABE0494EBCDC90C789186F0B2 +97F90ACA2D3BE84610AF07E347FB7694FA4E216A2386CBD1EBE70967A82014E8503E2E97AAC71D +60DAE00B786A95B8428F7726BA74BB3752F56894D4813D0434D0026F1703DCB3631D69082B5D74 +46AF8B5660688DD97DDB83540E2A69D4F994FD94413CA5AB52325439224E0906128187180E42E9 +7324CC2AEB60E5B327CA998AFA49854A59841C5C50E4159242BEC79D2E5BDF9373CCC510B3FC38 +204BB02BF88DF702FE5F2CD11123C390C6EEA79F7F1C4A294A9137926957D70C47D7EED1047079 +ECCD09C2BDB154A95A4F5BFC6CB708409E3E1A0DDB421F3E26BDBC0126212425D68F3218DA415C +0B03792A561B6B6E02D84C83534866A8B4397D485FA947E66839BA118BE6475A8EF384E597B99A +C24B83ABC9890BDBC7946F07C43535A9C0C53C6BBEBD25E85D7DBF87394FDAE324BD1CB4288B89 +31D3BF747EB89B356B3A11F07585EFA4E4349A40B409AE651D68E611122D21D9DE3425EA845568 +43A0E9D638B1C24E55992D6EB5D7A36A8035B9AAF0D8D71FAB9A3C20BFE5FC381E6E353C8529AD +44920C2B8A1D4DCC09FA6DDAC7C540D24FB55D8EB38C883431FF49DC1DA22445A6CB438E6DED85 +699290D3EEF81BCBA53D977C0B32B2E478CEEB7126FA359D4EA3C8EF1D0F6C3AF075B2E94FCD5A +ACD0531FF179735D94672A55C1D1FFC3842BB13CCC3E4C81B706A6830A1E502E954BA2F6D57CB7 +777CAE7EBE73ED1FEFB88F4E27DE15A052185CF9DEEEE665F38703AA7AF90B0971628BDF8BB1FB +21A30C3CAF7495425150F6E53A58F11BB6CDF949066CAC1352B7460D33FDB76287A7C55C9123AE +5A2773E720509A9F3D391553BED505C28E8A68EAB0C4231BA858934FDD38C725D340F21FE656D0 +002F6571A99FCD9AF5150DA9B55D796F9F30F4D10A7E82DF3B55462BE4EEE3F22D484275D60F04 +D3B1C83AAC019C0C46B68A1A3357A65A22A36CF319F53637DA1AEC7C0AA003E75491C0CA77BB7A +DD734E0BB7AA3A30ED0E228080FF71B952DD328D938638738697F06831826400DB73D6E2B260FF +00EB6130B3868D3C204EFB65A2F00CF5BB2CE4B464E5EED55E7CE33A1702D272069C2B291212AE +0F7A0D3BB7B82DC5FF2565E40B0963FFB9ABDE6DFE0A5EE3BBA96A3CD74D4E9035849C7ED677F6 +84319FBEBA5A5B1B2B9230994B2EB643B9F395096B46A7BDE84230662B72077FC96409F1B237BE +CF8CD53F27F690B101799B9FEC896A52609FB368DDEDF466AB17CED2E756D2A9026D4D26E303A2 +CA619F746C281A9A6AEA0E08CD0D1A7AD1F9CF7C6EC91A35AFCD6A1F59815A702558305398B0A1 +4A5AD71B085B9B10325C732D229A9C98D8AB35E99B31CCC4DB44852E5BA6DCBE8F759F54B3C10C +BC761C1E576A38A788BF5CF46D68F8427E2ADB16E23A8744039F78F637BEC3D8F6D239185E9381 +82475AC85FB8112CA4806D13455EE4A903CE5C7C7D5A8BF0949D70740ED6EFD38866D4645028C0 +5F16836C9EE77E775626BD67AD61EF9F6D7B72680564715641E460E09A741F30777FF1CAFC8B43 +664F96D15E4F218B04D462C8D8AA91B55765927B41CCF8B79F89D4C95FE5A6B55E943516C8C674 +0F43D3681FF8962A0ABC7BAC47B06DA27FE8B1FBA3039595F52CA33845C1A7966308C006D6F828 +108603B42229012F5366B77C654AA8CF6980FAA68A1796A1C9DD3C8C01D144CE40C669634B2FF2 +946907DF407A2C5F577D3785623CAEA75F5D18E2B3B91D595CE8BAC2EC742ED54F17D4F912E115 +4A6866A5E3DD49EE48B407FAF34441502C6AAEE95DC123EA266C27F6924A44263AD1238FBC0C88 +22114FFD6FC5A178F22D993639DFDE16B1652881F7A015AC88722193BFDF10DC1C372916234F11 +591016A8B5C2055934EF10C079DC83BBCF396DD19C7E9E112F94A871ACCE631683A8C886E4E10F +218A7AD93B0F4F83B8418C0984EC0EFC3ACE47E7583F801D1B514FE3FCB6D4ABE5B6C3783F3026 +502212E265243963F6F57656ED205CEC6A8881F37B1FCFD2BBFC09D1608CA43EEE74229369A215 +1A916D40B2650E823BFAFFB9338BB43369CD38F0A351E320DB42BD62A6B1A53E0AF4E0BA92DA1B +D5DCE62194D041500173E02835DC3C5A43467258A4340C1B6DB48B612D54110D70FBC038E947F1 +80ECCB983D2204567BC2E256C6AE46CE9C13E6B576E2C9FA5A00840A61D078C80C1C7405A6CB66 +BC23CBAF1C5CDDE62CD32A84D587BB2B3828B088C56831E6C073AA50AB4CF27FC74547554C491C +DAC152BF20AE1E14E31A7EB4C45A11DFBA32CC6B4D47488B950A43B12AB7DF7BFF07005FB64503 +D00EBB085706EF3AA04110C671306F763273E16BC75323AEE529DF5EED8CD07BED8A635376AA88 +602674B619B086C8B46339FCC077399CDE9F054D50AB2EDC80BC73DE4332CA8F8FF3D4A2B2D461 +3BD0B29C7DF001FD3B7CBB4666DA2175252E7E55910DFE6706CF744CB7C24CCE4CFD4F35D0E0DB +FA1C336240743562FD040687693DC43397B012390833FF786416BE97C2B8E16897C3EF5765C988 +7CA6DD1A3A5B2CD07507AD852A7D694F2FB9E1B8EF8D0581EE6C80094FFD048A1623048C4D4DAC +AEC1303516A43F08736C003246885184E73D8C0312242C33F33C5FDD86B4B952F86B8008FAB05B +38C697BAD2F87115E88C90B3F70E53BF6CF95E50A39FB028681746DA3431DA246E7423E8F400E5 +659141F09EA274219F1D99EEDC203B1D8B9696F66EE89643B6412ED2C3F41CB9385C30EA9332A4 +5CB359E2739612D7FCECA55C2BFDC4230E5CF89E7021F4220C22B6913F69ACC5F65D7374214EB5 +1EB691C53D0B1F590F458A4D4A385D7826659C77EA21504A7EFB22758ECA0497D059437D70CD94 +05DE2EA6BC506686D07434C6024273B49C009169E31F4B719429CBABC11473EB70F07DC2372D11 +BB2C146DFA378825C0F2857BBE54EFFFB74FEACEAF15ED6DA597FFDE9377697C0E472B7500B9C1 +6097BC50F38651D40CE96C50C9A6236860A8BF8F469F83162324B5296C50D430BD211D8BD0E4EF +0101D6F67DA8C348861E85B35A2A4992D6A4930AD1D26C6BC5CBB999F83C727D5CE551B98C9043 +D10A648D8FCD959C9D1F83812CDA60FFA8F8C3F88FE8536CC3FABAF59C5C174580B98D38971623 +6284CB20F900D8B793D37EF566A87963445862BA4EFA880102C87F608F0CE734212B0324FB2D2A +083AFC582CA20B744DC01BE3862057D746811E95687D06388705421C1B8DB69218A2A706D3CBA7 +8A449B344AF0F64DEBB4FEEAAD2C873A42B2A934F93C0BEF487B33DB2570723194651C204F1201 +56E09CEA13151E7E49703A3124DF500E780CBC62DF36502D2E6F5C57CFD1210850A2D35AA40A55 +603D3E56591E33E7722A282D6A8E1674495E12E348954B7CD0F4A4E4DAC080824795188D8A478B +243EC611CE5901A9BBEB76EB041AD162619EDF1D3D83ED07F1152401D2D5A03E6C784D6514EB89 +6ABA990FFAE09BF057B912A27DD2092CBF5157C904DA4B566114A37A7D9AD0C0D717EFB6C4AECF +EDA8D6971897E7D0FB1E685AE00CFA46F11B4820B31EE99098EAA2505E531BD1B07F41D550FEE1 +16F49073A12E482E9194C3C5D914AA944EB0A857AE2B5647A2C9519AABEE5ED6F356852C5F14DD +0852271FDDAA5F229AA7151D9ECFBC4861D5E89AB66747272FB6B8D49ED0709EEE054CD07BB917 +606BB005B6B2FA4B114536EB0708C08B5D7CCF46EC19038D93EC063DC3DBF39B25EB301B4CAED5 +05AC18AE74A0AE4494AE38736B19FC4E6B10227CB30940BF72A4704066D1D02626EF650C112A7F +8B8EF4074748BC08CB9DF80A0393793BED309D6DF2DE1F3D8765D992044122AB317749A3F96D1C +E8CC520555B4C2352A4FC4D92947B60F13B9D5B7A5B47AEF0363A31CD9D35DC0F34A051E369400 +D2AB68DA7BE1F1A374084B5522A6BF862579AC6F9F45D1F29E7CED5041DF262CEC4D529CCDF8A8 +3A18572D65E59582F8D75236897347892D9FD0DEA75BABD0C31AF5D690394B228E835EBC6A5F05 +AF40BBC6B35F8EB3C9F76AE440CB1A2E88A4F27510F67CBFC15DC29D82BF07796F6D8F793C34B5 +D308D8764E9EED3EDF5D328FB1955CDD0719BEC23077A5080A88E9C95C705AFCF13C85DC533B77 +6A15AE7DBC452BD2A75451CD7FE36C2B24B9044DFD9784D6B55D79BD164EDBDF735E6C486C9C9F +C5A3462212B66C2E8B3C1DC01357B02DFCB8AC883E7EC27F519001E5E8397D81BE41EBA7BEB413 +5A36C4E9DDD08D27C9A5B9AEF67090AC69F122DA5DF10A086ED8EA0C0A8D8060ABC76E7878AFD4 +7444B134EDA8D78E2271374C7510658B16A9C5C4833581BB7EF970F9A6A4F09B238EFE5A8B433E +A5162C9851F74F75EEBB1A4D57B0EA29FABFAF4D2D7D8AA8BC4132BCFC9F0EC7E841288BD234E0 +6F910BCB4456C7ADE4182C459D3D366E2CF72BC6A633E830DFD85900C3696A11D2C6B79A822880 +F3560DF7B51A37FC186C48BB55F1B91DFC8622D193C48438CADD95022B3269A389C2E60C9C2800 +82C096FDDA6DA3FE1BF8369F4FBB5AF739485B83BA055AEC9DB88C23DB6C5F751966D482434721 +91E85857517308281CB32C386755A1159B1ADD7181405CA3D686ACF18566BBE1860CC3D4DD979A +D6125C6A796D9C5B9B19D03E01DC7C0502F8F7E330A87F8AB8DCA128F914DBE36434DCA8B164DE +558C9F3A7B39C07135CDBAF5C6A6AA5B21972EE56521C7C21456BF9D462BD8EC6F838A006ED0A2 +84EB344C819791B014BCE095A6558B5294506EEFE6D51C935165FA4D0344498941A5E42116BD4E +C9B9F72F4AA2FF794981FA5C9F5FDE59F62427BF17BB7F0B2AE94786CA197383A6965214895558 +6540A4DC1071767E23310C3BD9877835098912B16EC2AC50EADF2035EB7A4BA2F48F028414ECBE +0352BD409792DC1B9780A10BEF8357130C201917FF4956437DCD2E35CD0B5629AA37EF7DBD6E9D +057CBE21442DB22F3B9CE9064289CC8A3882A6934C1C7C3542739E1D56848CDD2D03701578FEA9 +AE283D393AAFB58D5A93A16B5FEF33772AA47EBCD4A33B06A2CEC3B45C553B5A63B1A33EC16FEA +A152B1D248C207924A12FD27D871175591D93E23EF5108534FC75C455311EE8E3F2AB408A2FAAD +738DAB33BF98A3396CC6D5C3816B65E58D8EDC18C72CDB15540F6D62926F496FF4107A52154233 +FD73427D3C00C4455A67705300681ACD21931C665E9462BCC800D25A31A6BE61519FA3487E6721 +6BB21B579396CEB620B65FEE8FDC9CAB02CC5D5C8CFF9A284274A26F7C5BCEEC6834176F63A1A2 +7A674025A61FDA661584C04D5C80F4DAF73A5362F67FB8064D5079406EC0D115A79F292C893EC6 +0BC24FF533153275E178AEEE1D0C2C84D28D23DF028FD364FB2F9C13141098CAFF49C322A9D8AE +D0E5F195FDB307B0D27D89EA917346AA73BCC436120E711FD36092AD7CBBFEFEA3C6F371D0D29E +AA047229A12836CC4F3E1FE539338D4FA9E15E2CA242B768FB35A7E76756DC1EF247E49FD40438 +19F917F93DA4D40156E3AB93E5580B56BEBBC1899C2E3BB68CDC5B70642788FA475E1F0C71A532 +739F4EB3C85FFDAE230FE92143B8FF8DFC928F9F72B97701C2A5844BEA5D263FF3DFB11AF92B65 +E5846A68EC81F9EF7DDEE362121AAC5DF1B0C29C6C32247ECB52A9725F65BDCCFFD0EE535C8C77 +A02E44E274988827C05FF6C78112BA5AE29DD7AF086ACDEF0372B198E0303A257386315392DEC5 +7C0BBF78A04AA1FF28F927FF6B0AC8A76A22B56CA963B779E2081CF3925391C9027AB0C5533EAE +1B22843F0AC72C2964456B56D8BEED6A3C76D6A675488C43471401ED4502351451C1CA0A46E380 +D41E370D2BC703ED34B8682FAD0E9EA71E4A5CEF5890795E2B5B09FECC763FBB40B6B2E8D07383 +CDD0B084612AD2266A4083DCC3A159426D3420B81B1041C5EE4120C925C1A952EE6DFD759908E8 +E1CC882C12DEC431C4F66EC3B5F3CCAC728208F1F841E477A276ACA2F42AB5399F762B9C70E728 +39D284531908AC8EE939BD049BBBA6BAF1C536E40DDA2412FD9A6EECAC2600C49E10092E73B91B +670AE675217BA39A808ABB34E535F5CF9A202417CA625121DFD6F4434155BA437EA16D0B6B05CC +BB3B161785B3856136A5288C4D14F406361CEB32410BBC3252ED6497690D49A3A89C40A16F66AC +8F9D80411BCE174F5D57BC07968164BCA4AFF626B6F675BE9F438B461D2A35EE1C1F559096BB04 +2E174AACC03CE5C68667F8A59D2B2B7DEA85040EDF8F3175A14BA3596064EDC67058EAE7F60BEE +1759694129264973E259053A70FDFC27E708A8A1D40B451061101C6DEA814F7C9318067E561132 +B57DCB9C67F7DAB6C5FAFB9DF7B6B53D45B8D43F66469DE6831A40A5DA32A33D5FDF9A3F266A34 +6E4A2E9D52F68599DB0138C3B08436C0DBA0A553F6133672860345B77353BF9EFA3FCC80E49D8D +F84F85F1A99F23BF470A9314DA381370BEC348A37EE4517D3372D33E528F137A787CA9956E9BBC +C8446E71CFBDC6D92B241AEA8A62B77F40A630F5E72F623C18C9B499DCF511FF19C40E53768925 +8C9C933CACD974680F6E443BBF3CF00356A498C63A56F68843FE5BEF635A4A671874A33133D525 +E632A10F62A36120E5BB9C2216FE80DDAE94CB7540669FD0BC404D361BFD34EA879E50A44D4071 +949AFC3CB4A4E4181CC30DF9DF63A6A30B38EAFDF30158A1CB45F2E433FA4DC62763B6CEB411E2 +442124F95DF503C4FBAEEBAE7681532B9E5936716F6D585F51B9871321D5B7FA5BF4704B0A536E +78D00372CADBFA191E5E3CE0AEEACE1D6586E9D11A0FE37C9824977FF1E6F95019930510137ADC +C4A4F4C4ABDF76CBD32FB977534DB8F49EF673AC29C1A559A1EEC69F0EE5A42A24D20327CFCD0A +BC278473031C3F2CBB34BA6E424D990AEC6C756293821C5D439D4C8F54319C4BEF22EE740DE2E9 +3BDF51B15FAC6E469A01C1B5C5690D16F9754A8A3094E751FCE11000F991C566C7C1B8CBE772EC +80B2A751F829A4058A28110013AF4A3DF7DD7124DFF0F728A25EF78F78EF33A97373DE68D38DCF +D1E29CBF549011A71ED451B1E7EDA255A14975FF44F1CB448B71B09E82E8DD5EF75716A6E32620 +658D229108B8209287C2CAD6346F0E8BBF1EB99BFE8952C4080AFCB21F58DCDE2E73B02428D2DF +7B29C43DC1DF324A73F480685198F8006C996958AFFF6A55B459DB50FF2A33EF43E31923518FEC +28598D092D8205300026E04907332830823CDE60D062E0BA04CE7C801775012B4835AEA56FBA80 +21097BA760632CF097A0D4B94B5BDCBC2E61EFAECC791FD7202B00E678D6B76F891B918F63D494 +72BC7C5EEF4BAA30ECC71B5DF6315A71095F9E769DD0887C4314AEA236A8EADD9DB780411C0733 +7E337744BDA802DE4906C3F98E644C638E4C86D5F2A7B2C17DACB10DEFBEDF030A580AC847C0AA +56D4D4B30B513BBDC1105978412EC2C36DA5E4F1EACDAE3426DD48898DF1DF0B0BB91C3343B487 +14EDAC8BAA025AFD729DEB9FC96432DDC0D782D226726368B516E8F266855D7D02472D605AB245 +084B55FA61A0CAD04FCFA9623DDCBE109B2AFBB69955809E2989B5453793032D1EF7D7D8BD4E10 +1456DE181A8D7DA06EFE2644F184928270400D29EA969154136D1E810386835E2A3161A3074BDA +1DDA9B028910927B84B44C52DA2E3F0CC9033A1ED31743FF1D04D281DF1D62735083E0AABED00D +C0090B1453FA60E5D16AFB16A02DC028A418F357951710B45948D06CE7BDD0BECBF3BC2B9CE44B +6E47DE415A655F6D78DFC36995DF01D28BB52F750FE557FD2A82E36C7B6D9CEE9DE4326D69E261 +74FCF2D3F78C7F68EED0374D80929FBB08419C9D2D7F55D1AF8C3639DCADA1C7DFEFB7CC17D807 +3614A1084659277FF822BA6DABC3371D600A14120DADCE7A1F29257ADEA32DE6186D1E2FB54ED4 +B9BEC1F268B90656B224757015C35355841698967587305949A7158490FCE4F1BCCC2A83DA26D0 +F1D7A9912F8462722A58F5D0A7A4DB48F527B1AC5763E6B45A41830E1ADCB09E0F336CB97CF239 +9513DFE02BA8334B6A7EC74C0F3B0BCC61382B69D062304DF98B09F1E13291C97274CA134CFF86 +CC2A823BB8A1BEA31B8A25F843B15273D0F1BEB8C18B3A2E2027334A27B5EFC4CB0068C79E5CFB +AEE391D8BE2C4CA0F8A630710AB09C18C0DFEDE175ECAF12063631E9B25C6C9FBC3D49873002DE +6262BCEE73E4716DC30D610EE5402597F514903E5EEDD8A75E5A6FA117A21144AB5B338C1D4B35 +9210169EA0726B14D99E48834DB5D15691FD9095FBE699C46C7E6EF3790F6005C05561E053800A +B8E261C17CDF355646A1BF29414D666FAA5C1EC43903DD04678CD1B5097513C0C69EDCFA5D71F1 +D3E540EDD11D4B72ECA6C590A57A41EF5CDBB09DEB1FDD6C823E10EAB9E6B9EF02F4045696D615 +AF4E01796C2856F376F42940CFE098D303C741D0257EC3CBD7FF2D33ABAFE8DCEBFAE575ADDE66 +CAE813A0451E5825AD0234D045630711BBC3853D130544E0B0E787218107450078D6F380303DA4 +DE2A39A9A689AC4337D255477A7D0ECFB746E129F779D1F45F86F7F0E141923AD062E6FFC4134B +6B15B2811DDE5902AD397044466318B4356DACB9C6DF0CA786D3D81EAB52975D5C6E34D32B28CB +608D91A4833D5D35A777AB115290A4BFC8EBD24846736B0997FF9D5DC471AC673984AC8E8BA510 +95442EF37C5791C650C3A50A2907E0447A6513359D001FBF3EEB4720167AE69D2A6E2F8D068DCA +BDCF141A61A956AF4BE6DF3EA929843344F2E38951B9EE4D38D2E51A195842E61436C77E7D953C +AB3FB8144AFDC371B0DDE968AB88493C15585570F7DE881A1724C0CB6E8A3433E6E85320ADC362 +734A1C81C1EF9CEF1B863A803F96B5F1F61A05D61B9992E99BE5A52A58 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +%%BeginResource: font lsunr03 +%!PS-AdobeFont-1.1: LucidaSansUnicode03 0.9 +%%CreationDate: 1994 Jun 04 09:58:17 +% Lucida is a registered trademark of Bigelow & Holmes Inc. +% NOTE: This is a partial font in Adobe Type 1 format. +% The complete font in fully hinted ATM compatible form is available from Y&Y +% (508) 371-3286 USA, email: tech-help@YandY.com, http://www.YandY.com +11 dict begin +/FontInfo 9 dict dup begin +/version (0.9) readonly def +/Notice ((c) 1993 Bigelow & Holmes Inc. Pat. Des. 289,420. All rights reserved.) readonly def +/Notice ((c) 1994 Y&Y Inc. All rights reserved.) readonly def +/FullName (Lucida Sans Unicode 03) readonly def +/FamilyName (LucidaSansUnicode) readonly def +/Weight (Normal) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /LucidaSansUnicode03 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 148 /0394 put +dup 154 /039a put +dup 166 /03a6 put +dup 173 /03ad put +dup 177 /03b1 put +dup 178 /03b2 put +dup 180 /03b4 put +dup 181 /03b5 put +dup 183 /03b7 put +dup 186 /03ba put +dup 187 /03bb put +dup 188 /03bc put +dup 192 /03c0 put +dup 193 /03c1 put +dup 195 /03c3 put +dup 196 /03c4 put +dup 199 /03c7 put +dup 204 /03cc put +readonly def +/FontBBox{-615 -440 726 1024}readonly def +%/UniqueID 5054503 def +currentdict end +currentfile eexec +E98AC76D0B9811AF896A7D2786CFE5F8CE68EC0023DC2681A7AF04C897A42BE5FCFE91943239A1 +3AEB5296C6852464267094E08A45F9BE1C443CDAE11667C6CF7AB42711A6CCF9077E8A2D8CBC30 +9D38A0BE6B8A865AA6D108DC56579ABCEA85FD25326DB34A8A3B77A5424AE4100C2EB6804EA369 +AE0896E47334E66BEF4DCFA3CE9DCF8BA26773A39C77A33652D76918EA4BC304D746DEA74382B2 +CD2A6283142BD4605E129465DA84867CDB60E18F858C99578A3DD3BACCE03A8A6990C27D045C3F +D9C8550A2552A64F9F431169CC4AC1B9B275DD9E6D5F3DF5C70E8F657DA036CF63E714A17DA9FA +AF96888F242FF964672AB6D9CC68989DB538723337304795EE327BAB72CEBBFAB6A376093EC250 +7E6CC4E11275DB4AD7283811195AE1AF7C8235D220FAB9F10C43D291F873D989F30F3E2BD37AFF +E5D4DB432C168C065D446F0B3D58981E981E9FE5CB773EE40AB01241EA403188FEF5B1AAE43FAE +7DFBDE6A367FC7D6F418E569D7CC7B3D20FCBF2687397122164A647041D12714798560ABEB8867 +B266991761555A15A26569EB0FBD0137EAA54C1EE6010F0793B0896AE1CDCAFDA76DFFD032108D +FBE81D02FF87E094C0012FDF048557854A7951C19C117397A81FD4C8F2D32D5AD9EB1E49580125 +3BB1516DFADDB20EB7142443A1A133A5474EC8EA29103BE5554C41ECAFF76786FCD0FEE4971FCB +646F02BC421A7E4D1E5E0010A9079D17364753074ACD18630A5C6ECA43EC7C53C4B1A5DD0BEE88 +9201FC8DFD39CD0C81863BD765FE7C8CA2A69D992034D8B8B9C3486D26DA6AADB594B6EE99959A +445C809D1D3EBA95FF9429FB957EAF9B9C7E3D814B25CAC10658218FE2993828ABD4C0A7650362 +981E23E95B851A8CFA68B80D4DF911F9BF21343BD3E61DCFA86F20E96219FA1B9713677BE05602 +A6EF36F450877DABB0E42F2DC22538C31B680915A634C6D34464C3EFFCD75E60B73428ABA3832A +F9426BDC82D30589727058692220D02B5D64DA3F8F06BB80D08B77A455702FA9F2A3822698E02C +DBAB8BF4E63E39D377C60853E3B8F7B12AF04BEB45AB27036BBDCF6C58A80E3B3A61563E026C72 +4CD6E7C407B7404F301E7B1AB0EB210E41CD5148396089023AE9401C80831E627EDABFD4E30E18 +EAE2DE1884D7A3813D343CD12F9B13D935199CD744F53273DE6FCF7B0F6105BEA2176D26B9E3BE +794AB2120BF13BDA3E056EF6D06F8E219B54E3FED9A7CD767C428375E40351E73663A739B3E77D +FA3F36125473E7FA6FBF4A99A69AE1DBB03CFC5C71D2D941A15C1DA9C399EC307DA5D75C8B02FB +448BA23DB70233E83964B29CDD5101B404F505D6C8462A37DC5DA7AFF8145444ACD627E8933F24 +7EE0163AB6CF596E882A8B123A102953DB3D0394840A2977DE544DA405D8299B2AD3253C188EEA +F07D57FCA1FB375B9BBD397E1A500DB415964E518B2E2FF27A3480B58E320EE8AD0B76BAA2635F +3632B6AFC2358A3A332B773848742A11E957ABB886B3CFFA93999A478821EDA9FDD823EC8818B7 +2BC26EF0ECDD2EE498D92638D2BC8E19A283C571CA8C886A8F8E647DEC4D6424FE9CCA8308390F +78F361486C56B9C039B14F76EC5BCD8472F4E6FF566368D5FB7A55FA0E887E9CADC5044391FFA2 +21C598CC9E2CED7907F736F0EB8F12348D64EBCA0672BB8F1E651BBE785A09A34223663975B48F +90481DBA40982C8857DA5EFF13E9F5BCFADE13F02C4C5D4308CB09D6588A7BA7A2E1A4774701CD +65C7274D0E2F92AA0CA4A2FFE596733E61BD589D9B5E84835254D8F22DABCCCCE8D4760E13BC4D +6E85BCE03DFE296055EAC95B3523018DF17E8166ED03A23E1A7EEA0AF8C65F219A8F5D7C6F3253 +7160E12174798BFB8AF179C70A8E43C167E1DDF34E47F46543CCB7991B65A2FFC11F4917964CDD +C539C2E51E503998401540F23FD6A52F81F6792F2B97EABE2A74B9F58FF2C891E320DEE3ABD153 +FA43F9B456414F8207600AE3DB5283BA7A0F18FC16C58766C58EC1AD813E77BEBAF90FD8D6F55B +25615FE74761320733B58B545D584826E81F2849E1875490F15B774A3A863A20BE5A2EFEEC6F9D +337E5133329C0D4E8FB4758FF97DF0C97127FBB5F4C768439C8B9F7DF2BF3EA516C268FDA3A305 +BC2485ADB785E24A4BEE9AA3E7C82D3994C19249A3AD713FDC5B5C981A18E3D35AF4CE2A349C22 +E8923619B85E3D3E4B314A1BA051A506824368F4CAAE420FCF9CBAD8B9AB38463229750C31FD8E +B4042D8174F9C94830855B547B95210E59A601A076BEDBF121DFCF34440F65E46365871F3BDDFF +74232CA8267CE9864E4C4CF8D3A0AE94E57FBB2335AA4EF757CE11F554D8BE69EAD58004BE02A3 +B6B8CE3F5C5CD23013BD57D15D447512FF69A9CD5914A73144D71F06550E93695F0F6CDE77C1F2 +59AB5BCAE03478C9B172B792B16EBAC0F44F97C39FBA333F9BAC6123506028FA93F2ED96F88F81 +8A3EAD11809C5A5F4FBBB62C25C9C5B68B82C1C9734DF1989B00553BBCDED535F6224E2F74E18A +29CE4568C3A6B0CF980AA1F7CA1F396D2DF27D4A6C8B9E104B5CEE96CC4CB4399EB2D17269B64B +F50A3A0576EA17F41207717A2367094EC5D35DFEBA9D1E0AEEE710FA0E2297C91AD8D002E6C0A6 +FD46D5D123BA55B2595D9AE0C0C730966B1BBE3F464379167D8A7B817782DA4EAD919BE0BD1D8C +61FDA8124098009B17BD4F4A0C189ED085CED24F05A10ECB9D96F2CDED8B5D8F10A4BA62D33F94 +FF1FEBC20C9E64A7DB41218FEDFBCF94DA4F16CFAAAC9ADB9D24DC1958BA67D52F9625126D3F34 +4C7AE7634B21608049D7D30D302E95726FA7CC91B445FCFE464D6E1D79389404F0A28F8DF0D27B +AEA1C69B435B2CBC979580A2175B43F0CB739E86D778EFFB25D9C316903B82274ED9AB9E1ECBD4 +03EA7EE377A11A8EC6A8F9599879878C704B25D4A5523F759D09FE3655FEFAFD834F9AA8C75C07 +4697A890A38839FFBD754AD936EF8088D20629BCC0A9DDAFD5400D0C596391640FCF4A8F5A1155 +A383F32ADB70FD8E5AFA66484B1B6895B6F2A7859537C2088DEFF14169DAFFDF1E0ABDDC646682 +324828259958699EB1B21B7638E3CBFECDB9544F3BE2F00636906BC83568FE854E62D5BD752A38 +084421CEC5E659D7A9BDE211E643950843A0159D6834A2258933F8C001C67B073E9C9BF7D8EB68 +BF061B1966866465C8F7E1D2DC98F39F3A9A0096D62314636CED9B4E2E09225760A78B1C58A1C8 +2BF342F7940F6FC838F4618898C313CCE6311DAFBA75B344143736C7EAE29D4DBAA4B56BB3781D +D2DCC86BE5A4C4DE100BA03E4B133A239B7F6C3ACD1C4B4FC59CACE546E74591C12BF7497F908E +BBFE7160563BB47FEEB502E3B5B21EF579E375BF8B29ED72640EEBD2BB10FA2B1C30ED5EB0A089 +46EDCDDD233DBB94E95FB0012CF8BF944B683DBB52C90A08E5D53B2197FD4FBE9AEEF3245D6B9A +295445C148C20C597CB2F705512F3EBE2CA9A63E1B479A49DF54AA5F052283ED369865676C7470 +1D7F3D4745944506AB5B2FB450300BC1AE7B0F9B0A3F1BC5499A53962C4143455DB5B3C554FADB +AA6FE569A1321DC010E5484EFEC85CD8CE23C89C87D1AA2982880C56109F596DCA8258FFE48384 +1B2672711BA606DA73552081C55D0DCA31460F3C81D4A8EBC7C55A487F2C08A986403E209E52B1 +A38AB94F399D667720959DC10F9675BBBCA8BE368C3DBE8A3C82224DA3B977B0ECC13EA85F775C +1BAA1EDCD9E1C52E2169A10098B56C74E2597E5BBCDC693E27BD947033700DFFBA4D2BE22C8C0A +CB0D4CB909EBFBEFD2F66FD53157E4BD02E8D027A060BFB1452FCDF79ED71245F021D29A21D16A +8D8F2D0B53DE50B6E98715D2042E2C46B7C3D77640170993596EB481FE6A6DCFB6FF046147C68E +241E62DD123B598D408FDA25A5FF8553B44FF1620FABA4610F905C7EEB946CD6A09D5EA961FDB7 +9AD3EBF9836DEB52B4E93C4F1A1C89140272C4955908203C803C5803161AFB2C9B3510CE607F9E +2BB8AF8BD19B38D38F7942446DA9A92770333F8FDEA61394C4C1110CD91E95D3C4FAA33841D79D +F1CA42B0115ECDED6CFDD92D36A2EEC3A2904C354206B987EBA4AD69DD6B5C7A45B96106593C15 +F89796CB639575DAD7D277E09D347A4159EC19A8D881E6EE3E9093B51E9D9B1CAA1F0809EDC2EE +206F733C1B11C4292F75D0F37B25706AAE5E7900726478DAE756A7F59B4D0580D2FBC839D6F31E +086CF751F1017CD84AEFDA2D318835DFB74C02B01FB151D72C4A84D0BB976A2C35ECEC00CFB83D +EBD59C29F54F229E087C1C6E6D7F72F32685E2AF4D4353499C399F2438D18FF0E011A0532CE68F +F5B644C3D68754CA5BA2D48E0E23C80EC34F43468281AA347664D916F56E97B9F0E17A894DE514 +9800C5C7B78EDE6A882D5180EF9F51ADA5E3B511B07A89CE1680963DC3848182BDFAF361D9A893 +830547B3FCD4E412838E214A872EEA88FDE6298B15BB69FF9627EB37C27F89071F9DA74F4D6C06 +37669C6C09BB543518AF798DC1B1A10E2D53D24C3A5B1A485D6B8179DDDEDC7B82D610766BC80F +A1B2C3D3A4FEA53933A6FF83E85DBABA6F5EB94FC23EE28BA710427842803E0F375331FA1EC106 +8C396CCE31A8D68B1A7A0EC87CC082A501F711E93B9FE3DFFDD8906566B7B25A260D1C64D6746F +80A2D323058BDA6BD4122F0C04B39A4FA271E7B75A1D8FF82782540193902C88CBD99E55B33245 +069BDA735E4991447209892CA9BCF5802D44A09BE99EA64ED4EA1FA39B7AE10D8B47ECEDA33D80 +F8BB0684F289746D5D2DCCCE59D4E6F48D8F7EAA81129BC47BAD6E74F4ED9B3032156B302AD7E5 +C2F79E5A0A9DC77FB986BB46F4039152EF22331FB70C5AC047EC864F5EA5EBFDE11B5EC4081CD5 +FCDAF37B47C5CC8AEC7CBF21939F89C998AD080B530E969D39607B30B5E4474206902CDED411E1 +261FA85AA8CADAAFE9C8D0CA713066ACBCF385F4CD377194D26BBD5918096A3ED2C287A058725D +BCEF5D6D2A0EA6300BEEF77AE3C6CC068649D077A38CA6884BA08B9523E51DBE0DE61CF651B7F1 +27C93CF9A756A521276CDF6ED0FA7F4F559BEC19DD8252CB5409CD25F20D73D53375CA25DE2CAE +C1D980C6C0B99D20E3713741A86003237A291A0815FA13865649B802C08B28312C61A95910F8EE +BB51351AD5D919FB238D9BCB5C0653A14258C6899E22FF0FAE8B81804F3112C598D1C2F8860063 +C751F39CF1B7ACF3DE9E9B6F6FCFA55A59D5516C173C90B491ABBC65EB3D93B416597F22825D32 +22D9E6F5F7B993127288D3ABB7E966C9F2FA0E0A7A5B794D72FCEB0CCBE9A201041FE2338BF9BE +6241012E1E255327CCDF5FD1B0AF10626DC35C269A6E5EBCC697761374898384AF1B00BDF33A88 +E7B9628C9A44435BCA110B57227D9BC9D8BF6C2F205A62E189E683E50EFD1F09C38E62B4B12426 +2982074470A4CE35EA939B558BFD24593996AB198A669393B749AED33991D833F85DA040A04379 +57CE47FE19E30AD150D7EBF3D9FB521ECB0D3C1DD75D45C180619E0131BF9636AD108C6F7F0F73 +0937E3C8A4F788EE09F3E4A23078A79F386A7F638286AC0045F9D52E8D5AAFB1D4EE7BAE0B27EB +6FEBE7D6336241930DC406A45F261FBACAF975B7C4EA25E3751FD1806332CEA37442F99EB2BF69 +C87C649F93C5EF9DB13584690078CF7BCA17543DA5F867C550FB219C8581F3DA4DB0BE951C4932 +D3B65056CFC178183EA34389B3D28661979F1328A326783AC6CD34144EBB33CDDD58EE8A9A7DAC +E4AC91FE1532310F9B36B17F3CC79E6878488AB43045BC5B95397CE872D1429ACCCA5D99953C63 +028959839EFEC3F0A8E3052E4EB41E673F0FA73B9F82261CB6965C621ADD6DD858D7B2A8415C11 +BD9C51FF31D1F90332E076977C6461288A644D66ABD8E295AECEA2F37DAFC4F096FC0AF34938A9 +2C1E5D94A438319FEC694EE5E4ED1AE5C1FA82DDDA55C394C73CE39F18137370ADE011C4FF7213 +95A444A57EFCBA18 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +%%BeginResource: font lsunr04 +%!PS-AdobeFont-1.1: LucidaSansUnicode04 0.9 +%%CreationDate: 1994 Jun 04 09:58:28 +% Lucida is a registered trademark of Bigelow & Holmes Inc. +% NOTE: This is a partial font in Adobe Type 1 format. +% The complete font in fully hinted ATM compatible form is available from Y&Y +% (508) 371-3286 USA, email: tech-help@YandY.com, http://www.YandY.com +11 dict begin +/FontInfo 9 dict dup begin +/version (0.9) readonly def +/Notice ((c) 1993 Bigelow & Holmes Inc. Pat. Des. 289,420. All rights reserved.) readonly def +/Notice ((c) 1994 Y&Y Inc. All rights reserved.) readonly def +/FullName (Lucida Sans Unicode 04) readonly def +/FamilyName (LucidaSansUnicode) readonly def +/Weight (Normal) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /LucidaSansUnicode04 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 57 /0439 put +dup 74 /044a put +dup 76 /044c put +dup 79 /044f put +dup 81 /0451 put +readonly def +/FontBBox{-90 -211 1024 940}readonly def +%/UniqueID 5054504 def +currentdict end +currentfile eexec +B947A691BCC86A8714868C4E8EAA6693E50213672FA40A24C1BFEB6B454C65D97FE3C8875CB7FF +DB41FCDA8653D373718784E1CA8C2E52026C505028CDB223EDE069E4FBEE2F9866016FCF3C439B +BB0802FAB586D7AFD17C75C2C867DC859619612A4199CCFFD6C8BFADBAAD892A6C666D828BC33F +4F4247E844052898BE31C94D164ED8D032C6F943D6ED98C08911A23F5A44886EF9C56C418B6902 +CF632ABE9998ED7354C01793652E9AFF38B16675570C3F14DD18F4E0EA8F81EBA3B5A2EA1A6A75 +2852B45D9DA70764044BA4537DB8B3E88BFED459F70BDD5F881C906573D7E01AA459D103FD3D95 +D2C0D6CFC9AA56C9706482A513FCF9B41E612B7F6A70EB084A6F9D7BA73BC196B39EAC357B521B +E3232A0CEC9DDF61F6A57661275C3E20359577BC2124313A4BD33BB79B2760F11A0CA7BF9AA8E6 +83EC1146B0B2074D70789306AFDE9BC65D8998C6C6B28D89E7CF52E057C9E40738983F55D859CD +0D719713B944F82DB6F8364CE44A194C0B4E6E987C2A392DAAC78285ED9C29C1DF8F23842C6AD7 +F2C362923E2E3C896F4759020EEE519DD5BE0603F7ADE8A7908B806799345CC450EF767993D072 +238A614D5DBE33015C181CD4377871A633824D0DEABDA62756476A2E12BAF3A891001FFB69FEFB +D921533AE16743B926BDDFF77BEE342CD2AE8AEDCBCA8F90A10779CC9BF24974B4956DA4895299 +542E68FD9F5134EB2855709D7F684998BF878869A32DB0C6BBBE28B5AF1C1007AD68807513BDC5 +583819F8A5C8FA338B6CEE5D696B0BE6AD4C132E8CD0F3A0FA8DBB22BEB7F21AC6EA9D2CE4BA7E +F4A1D55FA87B7A57DF56D478B444FA969F3CA003267F1B45E69BE9210906D363A62731EEF97540 +E5372A27983ADC774AD984B795695D3B164AC04CDF48FDD5697A3F855E53189B795887549A79DC +69AE4EE9B7DFC5732BEE8F9FDAD6008C6EC06BA5695492152EFB8C2A2BAD3D44EEC08617AE17EC +B22CEFB1122BF202A212F998882C2F653D56F2D0737FFCF84E0D52DE3CFA539954AE718331109A +30267B8CF12669EB05BA116D01F8F01472F466D26400B7CC841BBE94EFF2C95B36C695AA91FE51 +E2B1DD43A459E31E01017DB6D44ABA40FDECBA6FAAFF5D2E83219DEA8777A845F6E4F586E73B42 +FB7116974F95E2BC2FDF85FD5C561AC5582BE899C9E85FDA05D02898659522A38B4F497F16F534 +CB8E4EED100844CF77E70A0C9C6C18C99124155AF1BC7F67952DADF6FB324B9F70859BBFA5D191 +D51D024897422139DD5CB41591085BCB8A9655A43A7BDD93D78C55859F075E58B5DCAC83BB00CB +815BE032EE24398C06F8F578B49CD897740A4DA7E6DA7DD7508EDEBBE1CC0AAFBE06F570987512 +0A1B016A82C5E1C27E48B4CDD5F2884A5AC18AB5536A145A7A83EB4AAA9971865EB69EFAE5EA41 +5A9CEBF4DD21A7C173D5BC38DB8E5C2A6EE01B504A3FA492A889B67F9E27298149153FE446F040 +B7E2C781059C65967C51E23B261136557B76D675A79A006AD83F9E0A531C6EC6BAFFF9B02788A8 +35AD5EA6C7F8CC684C252AA2E7CD05C0ED81B8BCA7D4C9A0485DE412915310EF3F8303F5F4E222 +769DABE6CC59CBA5036F3B6B1881971217CBDAEB1ADDA602EECECA4EEC033A1485FC32A9F34C57 +994BE283205ECFE0B241FC56D225AC40984DEA53961B7D43BC47F7D4011AEDB3E3D824881173B0 +6107D6C34915364BA13D09B64F088504766072E48BECB0258F002BCB476AF40B5565393CEA08D8 +0B86330541D0015DCFF19A3FF11DD0DEA1E164295C22677DCCA2E69987C4DB4273ACD833F1E8A2 +90C7C7E83154E97FBDB5B28103DD17BC8187A0F82B0BEE9031F45A869161510B16EC14EEE4A90E +4B0CFF0722D40B3A54EB15AA16C4A9EB4747B76F3EB24093BCD34AB43651603328086709CAB4CA +DC987A0F15AEE2EB086532438092DA0DB860C994D5E3892618A1D6D536BD6E1267C1B79D2B038E +C3EAC72BF37A07F8338FF4ED00A2C096F2C6DB26E71F13E023D25D3F3E547AB07E837DE246E0FA +73356D30EB9E8C83D2A08745B3A238D1FB9F18CA32E2CDC93884D4B1F87854BBE7593C45B8F7AE +BC916EC39500AAC2522595A0593F2B95ACE4EFD4A016D6D6D1172AC47EA3C92AE915608F20F0BE +A10E875F9DDF6E0EFA32C3EE7965F34AB6CB670453DFE936D4D1CD77E44A1E01B81749EE49A4FC +7759CB1E0D30CC814E6AB9B51FF675A22577A3DD8025E04CCEA149E717FBCC8C424196B35D1924 +3C562D1FAE2E2DF182ADD0AA15FBABCAE89D91A363D3691CD9E2C6EC022C34C1D5A6F0EDD6189B +59561647A60F07E60202401959224E551F14C940667AE193924A0A83F4F85D071AF94C79056CAA +B4BF0453F2EFE718C7925B7D150F810156BC31CDBD19548B4365E214CC8DE2357368A8429A9D80 +6C2CF8AB10BB393455B8EC83DAD41021DD2C3C8BBD19F7F086C7D4AB0E773F9624CDFA6FE0BCA5 +1A581C845241710AE04EA754034710C1ACE81F3693F17A4144C886ACAA69D797DC781402C297AB +5D83D4CF37794E7186404A8597FA96FF43DDA263AE1E5BB13132DBC7A899B7E29136D8ADA59BE2 +F9FF6DB733B428A2D4BC94024D03210C67A9DD92FFFCF7DD20DE16564FFD28F5BBAD8FC6FFB08B +8EA5C8183331931769777C502E4DD4348DBF937560C37168C6FB31D04483E204D23C51F74BA204 +8409709D3B387CF7ADC611C68BB8DCC51ABAF46F4557D9A7D39472775F17F7D57FE5BE656B7178 +54306B9D35A6ADBEA90A4CB0B4196045B01BCC454395C6DCCD91DF342E853E390D0A060A587673 +6A7713D1BBB7EBF6BD15680DBD6996E69BE0A25DE4358BAA6FFFF20AB9FAAD1F62A773A51FBB25 +9DCD63271013026CC59090452EFD867D24C4B87B30C8B338408836B68D9F5BA5444C5AB5075D38 +1A8FE2FC68F3E307710A68163554EBE7002D15D5E5A8DD662195CFF998B7826FB58345A0C932B5 +E3505C5A7174A649668910C3493DC2BDD0635275431DDD1304699B371FE983FAB90976279ACA40 +6777877762511873E042A65E5F0D3CD63B692D22364A208B555EA28963348D2C2DE3BD025E54DF +656FC7749C9406325C809B36EF3CF9BFE641783D6B82DCFCF63482D2E82BB4DB6599D1771B6DF4 +FCFB7803B5853A371CAFF56A1A6F7060AAED31347807AC7D0114BD90CFBDF64C0A0BE6D2A18883 +CB9577A8480062E6849942CFAF4290F2BEFCD4B7A212F88B6ED02A82F4134C66609096E11258E4 +6E9EC209B58597889F3B86F66D5678CD1F0A0260BA8305EE6B038842FC4244767E615E15626773 +1006379D908D8048E94ADB70CEB5E6762763E8744D8CBE771B01BF51EAEEF378EFC38233FCE953 +1ACC4F8FEB18E3164C7C834F7A253C0EA5CDD0A541A0E8A263EC6CE7810D311D45C018CF88579A +60864FAB0D4D6E8DE5D2D77639AA944DF27C99067D4FBAA626BD61B36F4DC0CFEFC52DD1EE665E +FD87E73F791D95BF9368072D720A8E7069C9C9FA65D22B0C401115D19458883F4B37E631D6B532 +8C7E5A10B6E3F9407FB6AB8DB7D25BD0D682B197EE8C55663AA50B6B20DA99B489F8BF5F091949 +16DDF7781E5E437C208BD4C68F2DA4B4913C69DE358E9E8750F8AE45D8F0958F30FB7AC997B253 +C255CDB46054EE7CE90EE8C3B0379EDE79009F6952DD0C29A682813B283A18E11ABA75DDB8985F +F81377EF1420C3F93832DA217576D9871815CF0FAAD815FAA4B8D93862E0F7FE9424A40186E933 +81DE8FAC067BFED22ED9A8D6794FD76B97270E30ECECB34C4CCEC5C8681BDD66DE14679A85468D +2C7952A33C265FB2650B1D8DC32E867A98354E21F5E644688285315034BEA5C8981C9B36502C87 +4A3F87B5BF5BD1E3241B4056D848F46BE457752DAB938CBA20A7A8643C99E8A0719D9FF7422FC9 +1F25BDC284D1F0664C6EA1900938848BCCFEBF2BC4A0E37DE2DB48C5311F7BB5FCE22C3948F8C1 +AB83B98945A1FD7F8812CBCF8852F20D26B70D94D04E4C3B3593BE0716B016630E43C349B56F9F +C17A9D19172C4E1220F97A7B350DD592CE9E8DD5481A3A0733B95C58241B333586198F375F1F7A +FCB84E33878056472D0153459A5AAEB4F264AE38CEF24CEBA2A32970E642820E9708B137180739 +0755DB1F6E830A73DF803365B93F815A330E307828F3FFE89B1051EF80466E3F2BC7C5D703D5AB +10F0411C20E72745A13167759657C8F68457BE6C9EAEFAF4C689839179432E36200EC7C492EF2F +76AF90BBF8333DE26D91EC67F32425B3655D2AB080D6F62AE8CF99002BDA6D369529CA0110265A +E93FAA293D3E5CE6121C899FA575DAFAA8293DD6BEB7F8F5356B7076B38EF4E4DB70F004EB1FCF +F2501A24FC75A3BAACA7E6D0706FDEB788C4FDFCA642536036F90E65F6BD876DB2519DF5085C17 +E5474B454FECA74BF0F3684698585397E3E04847A1700307B25D00A2543C5F5AC662798C2BCEA5 +1A56A0D92E1D376E01898FAF604AE6C3861592CE3CCAD063C628E15C2F459A6399556F582DB160 +0C8C1C55FA94E64AE5754715B007AFE6E024AD0E96218E777E90794820DCE4FF8C0F936EDF0C55 +2808CB0DFDA4EAD0F1FB144651891982DF671D9EDF47798A24AA5F0B33E9CF63AD8AD4F3440CE3 +76B4C47499FC93F8277F3D22457B98F956C39C53D177F0CCBBB529A36055AA4EEC626A7EEED64D +646ED1FD0C3685CF4E2DE42693E7E212343B83FD75AC33DEFB9D16A1771D6D3622998E556C0AB7 +F2D811339E89330348FBA8AE94EAD8B18BAE18CA3683225EBED1A4DF9EDD2FCCC34E74822966D1 +D5F71D2346AB76CC3D0AAFFA3E3D57CEC007C9D892C5A82809976719F964186D3279D79B4B5AC1 +F0333EBB8742D25644A962D02EC011FDFD7455120BF41418D4FD6313066DBFE5A0BEEDC59ECA8F +8D1FEE9199848433A584EB5347173D726A521859A91EDA4E2D73EE7E8C51339B86305C63E35E86 +B4FF303B8B1075999B68513497249C62ECA2736FF6958EC66FB78AFA10532913ED98C1E13420FE +18C9884E3DA3ADAEBEB2AFFC5800668A2AE2752BD30945BD58C75EB522F869CD640B1BBD982833 +F92EE830EBB96507F4762E3138243417FD2C4738FFB542D1B2A29CDBCCF9F3CEDF879CEA7CAAC2 +570C352F4E4CF19D069FBE80F9AB796AF8F419EFAB203B930625C4FA2435D0760067D328A5641D +834A56E35ACDB03751B97727E4553057FBD08C1236E45C424368A7B1550A4ED7A5E6270190C60D +F2E025A2E24392AC419DD2FCC5D85696A0B2468E1995C3AFDAE38058FA85E54DCFFCF687707847 +39FC137FDF9D6BDB97E38642A6E6DBAE8B2E599069634AFA5FCB9DFD01A00F7174EBEACA58E0A3 +29B88239CD746022D2B10A8BC3CC15CE973353C01D98D8B2D5AC9253CA5ACA59AF6324B5C69A7D +A13E28170A4077709CE7B4B77B407898085D371E0F9207BB42ED043D8579D57F81156EE847D962 +FBD8412ABEEA9B941AFC7B39A51391D02695C8FA95C775F8CA84DD46B2A28D1735C2C5228FF7B9 +29AE385AA61818C2E9568A4F23F8E890583E7DDAAC4F48875429CAC2D54714D179355590FA42D8 +160CEBDCF44BC348271FBDD219EB95D1153075C82383339334D05F741D7CF5F12F85DCE3A25BAD +6D518F3B13A0DEE4DB2CDEE3D284A8DF2F7B1C9D07E8D7F9D47D6BD6088591A9E089EA2BEF5B83 +CAAB3EC766B469DF9640DFBB4C32E505EE2A01EBF2E7155729D1B9E205711A74010C6BAC48F73A +4CCDB21FD55BBA48ACF5E5126CE38ADAAD6DBF3EA6297C56EC9CCB98766DA4C76DD8542BDD1596 +BBD288C262E48A15C27690644918944E039E9012C08E62A63495BC5C6E82285885A2E830DE725F +A7C746BCD0F333AA0DACB4D044CF8DA68EB5A1DD7B657715562D0D3F3F94F0B642C06BAF360191 +193F6ED4ED5F781AA5AE2DC7E9A6B73B182092BD5ABA6AF79E638152F7747E5938ED28D9C7D894 +A5762C519DD6620CECC58B2D583D38B63584172CCE9E4D5B3737422ABB778B2B85E9F6C80D3CF5 +FCBEE03C2C66613A8C5FFD6E5C2A4377472AAB0F1B93E7564657CEF1BA61C10849686BA4176116 +FEA3C5F3F89C492C1CEAA310E9A8578B7C5439355A +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +%%BeginResource: font lsunr20 +%!PS-AdobeFont-1.1: LucidaSansUnicode20 0.9 +%%CreationDate: 1994 Jun 04 10:00:12 +% Lucida is a registered trademark of Bigelow & Holmes Inc. +% NOTE: This is a partial font in Adobe Type 1 format. +% The complete font in fully hinted ATM compatible form is available from Y&Y +% (508) 371-3286 USA, email: tech-help@YandY.com, http://www.YandY.com +11 dict begin +/FontInfo 9 dict dup begin +/version (0.9) readonly def +/Notice ((c) 1993 Bigelow & Holmes Inc. Pat. Des. 289,420. All rights reserved.) readonly def +/Notice ((c) 1994 Y&Y Inc. All rights reserved.) readonly def +/FullName (Lucida Sans Unicode 20) readonly def +/FamilyName (LucidaSansUnicode) readonly def +/Weight (Normal) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /LucidaSansUnicode20 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 19 /2013 put +dup 20 /2014 put +dup 24 /2018 put +dup 25 /2019 put +dup 32 /2020 put +dup 33 /2021 put +dup 34 /2022 put +readonly def +/FontBBox{-615 -440 726 1024}readonly def +%/UniqueID 5054520 def +currentdict end +currentfile eexec +B43A59C23D31312E42BFF7A8FFD888C8118609E66724952B45D5A38971EEAF7AEAD27731404947 +E5D485EF2185B7B28FEE76585E49D85250EB800DB5DBEF09999B470F9167BB8A81B88DCF399612 +0C5E5C13C786349E7F44E018DDA185A7327A13F55575F00A7B68BA5390314FFC1BE676564A478B +1A253C30B407F07FEC8E3E3C46BC787775A409E084B26786F0856006E38AEB9E71FD27672DD999 +15E5FF51153CD2575D5A841791BBB0DAC82FC347B4323CDA6FA02627CF6F313D71FC7B56A6F4AB +9D45D4EBBA4FF9F13323865378F1240393DF17083189EA6A560B78F670F31187E21DD2282A40C4 +EC215B6E053C952A419363825F8074AA1F2791D599B236931ECA38548DF42AF21A0B93299C7A6B +CD562A5D47894A3F2BB10DE3513E0101686157DCCFE12025B2F62AB48BC56966D41430446797CB +34EAD92D70125D12FD83DD10713076729FC32F58FCE51BAAA5865AD74B16825913B821284679E5 +9C71C2DAF711C0E0D4E82BD5FCAD13D14E69C0C9E8DCE7F05D2A5B1F4B724498D405664EDC7CCB +CCDA84490522BB752CB6BB095A3AFA53A75A04E8B6446C38CE1F543231B8E7A462CC128403A30A +1553F8AD4952935A99E6781121623F4DCA70C680758A89F19FA860DDB7A02B71B4265E4EFE5CFF +F0871888F3C17034282B2250FA41A8529AD3CB49FC2F94FEDDFBED06ADB863F82168180A185578 +755D4D43CBDF4D1FA47B05871CDF84694574CB0634E35C47C9B4BF695B573F8DE08A555F0A2DF2 +2774590AA572463F9E2FB1510BBCA5E8F6ADC8217855D4F1D5C837C3CDBC31E1CB6F52CC6D0D65 +05E59AD73924E4EB1B37E9C433BF0ADAC35CE1832DACF7FE538E921DA937CE895F565305535EB8 +17575E443932C9896F7D11431F8ED21EEED56E490E157FF33BAD34EEBF76042168A86077AAF03B +A2173A795A37E0BCE53179C645E8C12C0FCBE7C33CC1AF08C58567B83B602E468A8E635F0811B7 +6F8E4318EAF2CC3C5DF01FD2A95662F00029F54AC7C8FC2B999CB46D6AE8D3FB1DC657C6E961C9 +F870BC5692211F2C244EF9CCF84C65D013425D119F60FD2131271C5FC6CBFFCAE54064DE267BBF +3E03F44C47BD24364273AE3D94C9C818825440FEA0E06CCCAB1CE6C411628FD565E8C78B039371 +F4F6618EDF8BBB15197285A8379DD1DE9B0AE8C580C44EC9A7A74DC4A4496A4868355BD28FD537 +38C81C8060FC059EBABC9B8F14F65C347E47EBB861DFED01318BF955010A0ED66DAC569E6794F4 +3425476951FA9D84A48D7F9075B0A197936EBABE6B9D3513B542E1646A0D32995AAE08FD77921C +79F575F40B8E813B330F1AA029FE6439D7505B9DC9210D43BA9CE32E3A14EF467C870B182ED37C +654DAEF47A595E363AD0BB939085DCEC7155829BBE1E1A47F1F2A4F3432E34EC91C1C85514D35E +ACE265943CD46A79D4226BAB3BF354A04F0E182B759835B9FE8F76F505057869CAE56BA3350712 +EB5103078544D804DFEA9DDAB528DD4939273645933425C0F64F7AC4E5D3B01D5D76CD95C65756 +B48FF39634475BA737AFADF17FBF3CD5AD0E88F6356CF06EED43EFEF9B5433EB1600D38D203D51 +A1099E2E20641DBAEC087D771323611E50B960C1B20EC7B1BC71697768A088D806400AB4CECC04 +67AEE799328421391BA370FF34C617F15105260632A8C0F4B22E792247E390B1F564C6FE227B85 +5A962A6E06E6F565D8D54F9887042237617FB78CCE75B0AEE938B1FF3F0362D6BC139C871D1BFF +B8AA0877F9D3F0DB55ECEE0AFE6871E01F204332718A0EFC66EF197523FCAF46898F32C1B324C6 +DFF22FD9BDB4DA9D95D5D2208CA9D67C6C13B3A3BCAE8AABF40EB224AB9CBA55204458FC526DD3 +8380F3F432EE69266C02ED0086DC8D6053AB3D3330D436B04DBAD95818B0A5025CEF13C378A9D7 +2B6C775ACB4833AD3570D1E76BD359A5A8EC9C4F0938F7240A1B663AA366A4FCF3C102DFB0FC07 +994E668F503A0E28CBD1CFC49041562DA2249B608712EFC10C9A35E0FD9B346864E6AF644F07BE +325FC4E08F81E9E8A6DE438D3ED64F05A57D3693F770C2E139ACEAB73366F56A94422EB50F6670 +9032FAB1F7ED83D150A8D26B45D8B59BF720D04C4E283A647065EC0CC0D55D9FD7C6502EE3DBE3 +E785F49966E1099CE4596EA2F1CAFD038E882F05CD9628F74A9A09A5DE677704A12CD82A95BF7F +01A5147536FFC7EEABA0D288DF1A9C9B639350A266C42500696B7E925174AE15CDD011119E8288 +7EDF23F0AC7EEA78E38104C00BACCED03A7785D88FEA2B4A3EC5DA4ED2D0357EEB43C4278CAEAB +5BE44EC6C777B67FF30140A391A66CF1B47778BC0D9BF6804E78DAEAFCF1C3F67760C94ACDC930 +94E68CC33121CAB7A1FA79E8E14276CC001A8D31333FC78721C8368034B418756A9EB23D1F7104 +43326DF928CFB2E1F9246CCF09F5D21537213B798D2B72893A8285EDCD48509C022EDB3E0943A8 +AAE2FF11AD8B6EC442F30DE19215EC6BCED82C345467DF50276F8123BC061EB2ADAFA6CDECD1C5 +5C529BD9B1ECE353EE7A58BDFFEA47EC30FF94FDEB0E465B7A45EC795797DE00F78E180B73B3A6 +F5B3F35BD80882003053F618940DB675D846095F63E90CC77B5022E963CC39915CF3B95F8F5A45 +4419ABFDAE6087C4EAB799A8A5F1CD7A234A2407A2C08DF813227CCE6DA56F6D1B081278C6E046 +96CD90F917C7AEEEA3032A1A13993079F3C41DCA1FF2B300BEE78A8D9512736DE4DF75CEBDDC58 +33F8D1555590AC92FBA63E2D59B80EE8DEC88CF78435CB4CA57D702DD144893C3279DADF5C6164 +70EA7FFF87FE66F510ADE5B32019709CE6D9BBEA02F2BA243975E7800839D904DC09C2306A292B +B812F8CC973D40810ECA109BDE38961FC2678BC1CD377E2FEEB43E2072B38621801D5ADA0A92A6 +5F37C7FA277ABBBF372D08B834C737DDFD16B51190DD3043040B9C060A1828742BCF814CA98EA3 +77DB2DAA1B027BDE291293D8CFC3DC73A75BBB4BDE3CD80FDA05E46A2CE0B003663A2003FAE55B +0535A681672F7D8FC966834DEC4DFE56D3286FF86C10630F9EB91BB731A9C2AFDDD4F1554C4728 +4D68FE4A486EEDE086A565929B97FF763B31B5CE48678860215F768CEE265E157F1A44C3092FD0 +48239B140F2F8801D05B76FC9EB969BB6EBA6D472F1C016B94012127975E20FE911529090CCCEF +4C980611502E8641568824AA0F18FC3CBC5C2C46DF4A310A1961427A7785EDC75D0DC93FD03C26 +43FFE864A91F4F285FFFB5C74803081A71AD441522F4C5DDDEB96BF5A7080BDB57A22AE8DD9310 +02D940551006B0863C4274D0090A9C2EA9516F291F4A833772CE2F0CCF7A92AE08BC02CDA5B434 +3D8E61C1F1ED39A3614BFE3BBD2BE7C9C3A64F1F7FFDAFF51D3FA0357F672316BA9810A620911C +06393D472F8BFAEF9AC09A031C3A1A33816A77A6C5EA88AF4D4303EC449982D05ACA3481807F2F +0775C87DA047792078D7FD735623D86C37274CB49235A22D01AF43791078E4AE92AADB3EF71EBB +7C96F303E70F1E3F7569471C6A0FC9B9C59E4DC141FBE2752F6717F4A7C8CB5D47EDE806D835D2 +8F48927CA3A3C38B1E5310A47943668646946991FD87BDF723BA535A587EC98F9CC86A15F3AF79 +625C5E9A1570412BD515DBC288A9DC3E4194A2031707D47E54A1FFB73099356BBF4C67A22A71BE +AB39619759800E4F9F4B558457CFD32E456D546BD2542B3F493A2FEB432FC1511587E4F5C0BCE6 +3BD4CA268846F13233A6D3E22CD92BD8E19627B71EAC34CB56125C86CB4168194ED4E45FC6B759 +5887FCEA79676EADACAC6F0A35B30B63E61C51DC92E4FD960EAA2105ADE6C4E551FB59E0381ED8 +90AD55857073689ADAAFFD1D27AF7E9BCCD8078D62E2299E35EE4255817A3E7CBF4C142AC2F10F +A5486FCB20EA7E6281F6FB7F91DF0A48B0547EE2133AC09C1E0700039CDA77281121975D84864B +FB24A6F6E05F5E801FF02B04A8FAE6F682E7C9A705B0A6CAFD3A84698528921856038137A3D111 +30602F28D61D26533FAC142D5A6F0D7C918D16BF3C1CA65109ABBED3BD897C8BFA4490545552D4 +B15F6264FFF4B02CD60970D6D8F35A18295A2AEBAC056F768F29526958DC1E717FD5D6504E303D +1C36802BFAEC578F5E3F0D1BE9FF5B65B3AF6DD63FBE07432BD1EE72BD24C27C5CCAC3B95FECA0 +AEDCB55933140D1041DE9F2AFA2ED9F3D4BE5D7D0C7F325AE26CB1FECC40CCD6A4085515A11F62 +26 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +%%BeginResource: font lsunr21 +%!PS-AdobeFont-1.1: LucidaSansUnicode21 0.9 +%%CreationDate: 1994 Jun 04 10:04:24 +% Lucida is a registered trademark of Bigelow & Holmes Inc. +% NOTE: This is a partial font in Adobe Type 1 format. +% The complete font in fully hinted ATM compatible form is available from Y&Y +% (508) 371-3286 USA, email: tech-help@YandY.com, http://www.YandY.com +11 dict begin +/FontInfo 9 dict dup begin +/version (0.9) readonly def +/Notice ((c) 1993 Bigelow & Holmes Inc. Pat. Des. 289,420. All rights reserved.) readonly def +/Notice ((c) 1994 Y&Y Inc. All rights reserved.) readonly def +/FullName (Lucida Sans Unicode 21) readonly def +/FamilyName (LucidaSansUnicode) readonly def +/Weight (Normal) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /LucidaSansUnicode21 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 144 /2190 put +dup 145 /2191 put +dup 146 /2192 put +dup 147 /2193 put +dup 34 /2122 put +dup 49 /2131 put +readonly def +/FontBBox{-30 -325 1384 883}readonly def +%/UniqueID 5054521 def +currentdict end +currentfile eexec +8CECFA711B4939E41CA045BB7E8765272CCE317ABEAF2B07E70D992D651C41DC23B029563922C0 +95FE85170451329EEA8C7BF7A2726EDA9D9C6D097F0F7FB11AE93E80BF8DFEB2012E3B9F49A227 +13E573A8BAB0BD7AA774AFAA41B97C6C70A3BF84A0B468C41B70D35F1310A4BCF2B97287E2FBF9 +4A30663A4DBB485672BB54D8FEAEFDE594B3B73220D0C873C546C40B5138841E9803A47402513E +8FF4F9343A0E92A13A04C27921E3EAAB23C355AB06A42C0BC5CEF70BAF6D687B5C79B5360DD42D +B2C878AC8DF4228BB74DD81C6FEFF53A36279510E983BDCD1A8145830308160030F770C3DE994A +4DE01ACD31F1D76E3094B43F3316267B62B6D653546469CBD35DC8B1541372AACED3750E498938 +970666D8B36D41627069EF1511128034B8A364FACEF8068FB8A2F7F3209E5A769AF14C3E7F044F +6892F9009EEACF40CA1AEC6F322861CD38A8CE6A110A5C348EC2CB376E5110065918A03C02835B +E3E89B986010D70284A334D6725965CD86C1F4937315B5BFA1D7E584988077138480F1B72F2870 +2477850CB729C71006FBA750B4989EC757A808D51431556B673A084E350A74279AB2E9C638F7D5 +B6BE1D50118747D01A6F3250CB9F204E3B03CC46DEC9821867B2334D2593522BE05CD30CA6B75D +DE85222B64269B1DA310838E5962A391BC8197808B9D11B877A50D431C25870F7043983E965CF5 +0F5BA07DA4DD39F97069868D506F035C0DE343F7F5C12587B2B05CE2ADE6822C6C0739A54D5DAC +415135137E8341C4D37F7D4534BD8FCE1DEBBAA3C378C9C9CC083F3A892EB7E44144F118680E0B +2A94BE914FAED74B80747D013961C682A0C3A3F55AE7496F7A15786BB0AEA5B1079668EAED2527 +9F744F8FD112A6C33DF4E1500520910769D69C8F4D659322035993A3CD70CAA65F9DAF1485DA40 +CBD374802317B409FB464C03C8A46831DE7B04E924B9D8F5C5239CF99DFB7176B2A01C1A31AF6A +D7EE0115C6CF9EB2AEC83901795A91D4563F32399E1AEB65ADE7B8248571668410AC1D86F71918 +70B0FF9C844CB7E6352B01A2C169E37513CF7C37D131B042AE6584F1ECC680AF5AEFC74D2C3309 +12C36CBA7D88E4D44C77EBD7377674DBCD9FADA92577843CB5B1C0CCCA0A9CC3BE2A8F4CFEE1DD +ECA543A7967806B9F65C5337403864168AD5EED97FF91EA2A00BC4480D96D09080029CF4BE6975 +B34B40182DA9DE77D82BBAE0007448F08DD19A443C3EDB130AA1E36D2DE61D809BB3508EB12237 +E460F68508290E1DF4E45B652B0A2EA82DED7F3A5A05E9F6FE3CD1E8FE988B7258E81A243DA0A9 +B677C368D33AA67DCD8BED50A86331179CD2A6AF65E164A925258D5DD67704B2F3D7B3A9797DB4 +E5092122646EF94DE3FDB3548D60702ECE17FCEFAA298D9825EFB4CB96C20E5AE933A4F9E7FD4A +D8BB4FFA426366AA9EC6DD84689F24BD858212C0D745D674D513DC4C07C37D9733ECE1D7F7059B +EEEFBEA12DB1F8F21F6DB88EA763511B1CB80089383350F0EEF474F70276C7B44D075B21862115 +1C4C8CE0303FDC81D848F74CFA94CB2D2F61FB99B92DFBC6CECC15955A790C62B3DA7654CB95FC +9EB2544F05AB69475FC405C3F0F1E80EEA5F82EE0B3E47937556C7E14CFEF5A58ECD7B975E519F +CA80763297F483FE24B96F09BB0C6ACE0753EF674B62B6F7C2A301BC1F8C7D2A84CB9DBC68AFF0 +7ED80EDB570861D23430D1A30653E5580B9B9902AAD063F04A700E801964927CF9943A074D8FAE +A48CB417EF69C589EF625E46A55472A0A2B3CF9C7CAC86764E06ADFDBA7AC08812B171C4ED089F +3FD3086F97D6B96299E47EC1BC98C8320ADF7DAA7D384A128693DEC73675CD0C185BB260668E38 +9A35204FA0838F70D1AE5DC74957D9EA2E2C3088D660580C20D51B212B6CC83D9003260FA4873E +0B88A4DA8EEC5AF1DBAE1C0D1454746F9014753E3CAA9C8AF20D97E949D8685D5D9130BF1A9F79 +57569B17DBAB5AF2F08737E9A046C0BBAA1238D2A72504B9131401B96606AC9230CACF736151D7 +E1F79E7E4F42F625AB66F02FDA6C31C497B1C2A2A0C4DAA420B59D647495B306723195DBF74F72 +FEA3B0BD8C2A16E95B442FDF0B39CF601FAE4BB5AC9C85C1042A6C54C44B60B3A44D741E788165 +2126A8235FB58650ADCBB265C349F5A93543A4F765C97225C9566D7C4DCCC6779E05D9827F8C00 +D78D582BBC77E25C3A170C469A268B483BC3153D851FFED8A1911B6864655255515363D8DBFFB8 +0C02180CB399D92C242F0F450766B5D7D29F59B5D7B47633C87A1B46EB3322715BE04BDB99E126 +650DF431A9E8DF486C8C63F5F0D26DC24B9DED300D3107A814E4A01BE93CCB3694A99887C4F1A3 +46DFEE064D27CA5D5899AD2F8B3915E304C8A4121A26C1B7B8B81B9841982F6ACCD03F249A138E +0F836D0F533153FCC8B3B4CEF39802D66A0EF0CE76F8E2C03D880FC4F44C1FDEDF0C50971507C0 +7202C26CB4C0C1EBAE4AF043F2893D4B15B183B5B60DA901252BC6DE8D8DBCD54B418C088D7D07 +3084C0809EA621F31EC5DE23374C5A4AFC2AAABE30A0CD14CF07914839804BC88A7340BED9C24E +48B93770745A08B2FD64AF52D5194D57FDCFF6ADCCB3A553343FFB2F82212E5152EC91D9F19F93 +7839782E3A8FEED1128568C5D39AEF3638592F8321A7513B6C361D56EAD81E2ADC3DACE11B7B50 +73EA40B36A9E042BDFE78E30EC5059549BF9D1BD29722E6FE3E3CDF81029F81E66C887B55A6E3A +96826166A1FD6D27B7B3B5D72046373492434088F7634CB45301F885909D249C2680E5B1AF7F1A +5C1A7997730E94D8A0C643937B284C0FE0EA447965A8942E882C20833C9EEA28D063C6B5C52F06 +D9580E5387B9C87945B1990EF0537A00BDE28C42C08321C0730A04AB9A0DB8435F250E10FBD8F1 +B70FF91E4B795BB353AB3DA14F7FD8B61AD2AF4CEF5775B16BEFF8E3198558F77036CEE8F21556 +BB24BB44437966855114167168A2F45CB4CE1CC31FA04E39FE5F4F07A21D878DD4D833F2905E4A +541F26B1599463BAE2BACEDDA6A25569E27003BD478232E627892502ACAAEF3E61B56139542D1C +6D6A6B3873EEC2EF0BA2CB21AA0148F449697C43D3CE159B01827618C1E9A835186C2EEEFF0EBD +C22D9250307D280706754476A9B24E141B88294CC88634E1690C5482E5232EC7F174256999DF02 +FE1FAFA59C4369C41B8E9BA66699575035718309DC3409EF68CF0768E8A2AE0E5BBA760F3EB926 +DD09D37641808114AA91761DBDF3D2BC64A42DABD5010465BD47597A69B1F88DB579B7A47563B4 +9BA22E69D7294A81042FC2A57781D8FBB5E87E77539498BEFAFD98E3C1C761EE5E7B635AE93BCD +E9479904AB3B3BB64EDB0C80CC2B04BD9295E208340BF65D55353BF8472EBC77 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +%%BeginResource: font lsunr22 +%!PS-AdobeFont-1.1: LucidaSansUnicode22 0.9 +%%CreationDate: 1994 Jun 04 10:23:13 +% Lucida is a registered trademark of Bigelow & Holmes Inc. +% NOTE: This is a partial font in Adobe Type 1 format. +% The complete font in fully hinted ATM compatible form is available from Y&Y +% (508) 371-3286 USA, email: tech-help@YandY.com, http://www.YandY.com +11 dict begin +/FontInfo 9 dict dup begin +/version (0.9) readonly def +/Notice ((c) 1993 Bigelow & Holmes Inc. Pat. Des. 289,420. All rights reserved.) readonly def +/Notice ((c) 1994 Y&Y Inc. All rights reserved.) readonly def +/FullName (Lucida Sans Unicode 22) readonly def +/FamilyName (LucidaSansUnicode) readonly def +/Weight (Normal) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /LucidaSansUnicode22 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 100 /2264 put +dup 102 /2266 put +dup 103 /2267 put +dup 130 /2282 put +dup 131 /2283 put +dup 134 /2286 put +dup 135 /2287 put +dup 41 /2229 put +dup 42 /222a put +dup 43 /222b put +dup 67 /2243 put +dup 96 /2260 put +dup 97 /2261 put +dup 23 /2217 put +dup 25 /2219 put +dup 26 /221a put +dup 29 /221d put +dup 30 /221e put +dup 2 /2202 put +dup 5 /2205 put +dup 7 /2207 put +readonly def +/FontBBox{84 -166 1060 898}readonly def +%/UniqueID 5054522 def +currentdict end +currentfile eexec +EC18885AF58F29AEFACAEEA59037C942D5A3FAB833BA43EA181148D28AB4B88B44CA4ACA1F92DC +003EAE53A624731252861B743FB223E6A26B5EA4CA4237504F6A6CCA326B9405AB85D95ADAAE82 +22B5F340DF4D35E0A2CB80190E539D9C09EC6DE84EDF6E6DC6E40089958D58B17EC7357C0EB84A +61C5A04AB034973BD320598296F9A79CA937F8946E59DDE543CC946C528E3106DEBF61B81D7A8A +69AC62FC23908A8A656B8518CB8FDAF8A2B57C3C7D4B644754586A739AFE94AAA7B685E0B09EF2 +C30BFEE0F183A420766F0BE21197DEF2C56A4BA47A2AC88C0687DCBA5494D19D543C8D7F43E8F8 +67EF76E2E818ED425C61EB7D3EB50B1174995ACA71352D8218D3734BDE02F4A95E232BD4AD9845 +09AAC48D0F388BD9ED89E3DB5276D12DB11621AD67DEB0F7CF2046A95D6147BD77893BD999663C +6BB6206F86C9E5BF1B7296EA35C677788DD9627D6385B6903C83B27CB461AB230B86435838C33F +A32A0B5DF678E7A5414A11E4BCFF1098BA6A3A6C70AEC03193BF8E08C1F703E2B0470B171CC9C9 +CFBBC16B532F551E32A6EBB545F8F16B4DFD5945ABF67BAD9AED02092F99DABD828C674A246A3B +50B6CFEC2542399D397121C09D60CD1F679CB805E385F3D63FCEC624B93BDA066709C669C50BD3 +261D4A143B81F83AC3AD4052FA424782F1C8985A783C1BDAB4303948E6BA2C6F1645D1AAEF161F +AA605149EBCE77F37B904041DCA83C92CC102FEA932313FCF28C23DA1D3F876F612EA30006CC36 +B9376696E6D3C74AC6D5E39653C03434CEB58C958FFE72BE74DCFD7921BD8D29CB9B5D9462CB1E +6CA793A7E2A7F1ABA296877AD19BAB0AA44F0916866DAAEEB3DD86474882FD901F4FE785121720 +80BB24A21D83C909FFD3ACBED7C3F97E8D434B4B3DBCC83A954037319D24198CC1B14695178CFB +18CC1F530CAEF7C5C845403B52E2A5CE0B7F158B8C4904B2EAEC08C9BA7AD693405E918356E7D5 +1E87E2857B18EABB71256596245BFB5D3F3E547AB1355106CD33AEADDCC870BEEC170FAED7884C +82DB23EB4B99C4E856B81773093BF2B625D38475AFDCFCD02468EB11B035E4950C2E909EF0AC96 +2C6C41D25D43C5653AE66D718013E922561CB88101CCA5E70905BC6D48B80C177F552BDC9BB31E +D51DED3C0D40BC161A86C06F8FADC8449AA647EA6A83D9A5AB66E8CC4B5C705375CFE9AA94C1C5 +6AC04BE22C68860DC51566D69AA649F97B43E557EE45E73B23EE06F851860CE6C29CFFFC95F561 +165AFF73E18A9DE0A1660754A311DAF53146BBB751053D424E32E8600B50303AD1A7D9E663580A +BB54114C9BF9E2850BCF12B5428A4CB8E458B16BEB43751E68BE952B34A8064CEF61452FF56537 +EF56D18A3A3A3081029B7027600A1DC1199772F97102E7FB28DBF3A941729599B0F24A565C1BCB +62FEC5ED752428920BC1C60C08ECD8EB86AEF841364B00168456006B406FE14F1D4F338B142CFC +42BA7DDCCC92233212EC5B35E205372291B4FCA126E5FE8F6D4C8A37017DE0463D7261E98813E5 +8B1FBF38993879ED183A30C569DB75D9644B0C6D237F76D760C3D77C7569FF8A1CCD752AD9FC87 +3078022F6A3B1D749DB363097597C2CEF08CF19BBBBA4DC2AEEAC4312E9851639DF6FA9E2893B4 +3366E631AC15951644702A58B7FF164C8D4137052A3CE699438B9B5FE2228DFD6B0931C6149B18 +6B9F57F9D780BAA7835331B10EC5D837B9257044B3CCF8AE4590B23796C7A712C6F188E20DFA22 +1ADDDC895EBEF28DDC6FE7C1086AB26B878DA3A1ABEF1E7EAD344CD7CBFA752F7C274E8E9C970D +744186961EE5717BD0F50B67144FD576F6B668CA608436053ECBE116CDE462509A48DA90D66105 +ADE07641CCE083FDD6F161CDD59145E8514CC0BF34FB77B657A287EFF963E63DE600FB15BA6A17 +87E63D3208F5BB859E650092902715185D69A11C6F73DE088D60DBBB98E70ED4B7C5D4CA9B2AAB +BA91E81E20CBF4716D603416B399B856C46729D4AA83330CB528859DC68CD028CAEBF9FBBCCB5D +50CCF2D3323000855669842544A61CA55FC4209AF3D6187100C47F2681D3BB823F09D3DEDDFD89 +C87B17BE0B0A0D14E75370C6D2CAB809BBE932E6718945D6933EBB8A24FD507906BC651216119E +CEC5B916BCA6459AED96417AEEEFEBC4E71D76DC5B17A37B8945A83946E64B21AF0D42282B0E25 +A3DDC555E709C80C5C8CDC5E1AD62B89A7CC1E1AEC962FEED653010E2FEF56EB5A14F810AEFE27 +16F0A27E7EDC63A7D2E1C6AD410E22E35C8C923EFC2554355092DDA8113F6D9D5B5BEF54C824A5 +1D7F5CA2CCD4321F9C3A6EC8320F9A577610C902B70B6B0EE5BD381D9A7C6B722BB55EA06DFB77 +DCFE84A0397C8FB3BA4917521A88B43F9F12F81571C39ABE049D54405B96D0BBFFFDEDD0E90C3D +D6B26D82D797C6B31B7FEC4BB0B51B2E8357C5CA8A6181536CC13498F7EF383B98281756F3D25D +6961D477191F00452FE9EBAB94EFCE0C958A415B7A8B0AEF3F072A3DAC3B6F1BC974CE0DC92A08 +00EF65EDABF91DDCE2931A6B6CDB9B46E106EEBB1017E487E4AC078243A8441422FD61BE99A8F1 +022CA7C9B86AC24E4101F46614E20749FA065C9F9EF8AB8D45DCB5632F7E5579A4EB5C44588E0E +AB91E0FA25868A585ED5364804118B2EEADD52301644AB6AF821BD6E5A78E3BD4701D7211B4929 +1EB22DA0301F61F69379F1319ECF14C6ADCF574657B6BA459E6FE012A1C6CF198250A7A9BBA055 +06215E6558DEC8CFAF5F342975B444F98782CC674EF5E03DFDF803C5645F303E229448E57E3891 +37A4703A784AE802B6D730C82E7A5981DC29B586174FB22E854CBBE4C359D27BEAAA684866AECC +6F33F9C1E0CDB2F97E32F7DE1C74CBE941D21EBB079CCAD9F45BB6C976331CCB1AE84BD12DDD0C +0245E24C556BD9DF805DDEAB76BB5B82A148CDFB8C17F97B70114107A41812EE10D16366444BFF +E6EC7BB9FE286ACF78FC1C50369FA2E0E9BB26BEBD3112F8715651DDC05482809C0348B8834AD5 +F8594197582B9FA1318E4908A108A08BF0163B419D0B20BEC4402E2B1E96F18552DD6FE45B9759 +FCB8EE6A64B9D901173B3BB5D36EA3074C8065D37A7B0E01884A59841C5C208D924D8436AE36B5 +F7EE7EBBD690EAB5AE9897B43B6F46549B6B41CFC6A5EFEB53A6E1EF8D9DF28E78D3186158D4D6 +1C10AAB0C85FB5A9CC43535D2E458090AA80AA75F39B0AD1C02E3C103269E8A40E60832AA2B160 +B78BF08BF2DB06C8D55C768055DB5F52D1F24A2599EF1F412DB23121BC8BABC1933CD43B0A5908 +77246FD36AB18D0F0452325E5F1FD495499C754D3EFD68D948DE856774E476660F91577FA68756 +CF17936C23246504495C072341C8AF8E7E4BAA8A5D7CAD373D9599F52A4D88C2F5DEB65A2B9C5B +6914C569F8CFF9164725C261EEC2AAE3C88A26BFE1B6327DF1EEF827562BBF37E8106729B5CCCF +C0F1011864574E4D0E5B3CEA70B562F03BDDA49B107521F192D36ABC6ADA755456175EC9ABBBE1 +E550C412239EC97662338E92253BBFC7D142570A6F22E212C8DECAC66B4AAAD9DF4BB681BCA16B +29B7FA623C47FF37905F923C0143AE479FADC0E27E8FA15B461509D847F02876975C6B3B33F490 +A4820F9C43D3F0115C6157211CFF4B13696BE005FD45481C9E496B078389E01815B78C9402841C +45B721355653E4B64C5F226D114DC02ACCDE11E588DF5A7889B8670F1C9F40A5DB89A7C8E901A2 +8EBFD43B24A5DB9B2F864C6A45F9DD7DA926DA86DBE5E2EC9FA04004862A5903F6A5F372303738 +B42D7FC4A35941157DB85F26C8D11099545E57B0AAA49DE793C778B8E75F45CF566B54BD1DDD7D +17E3621418F09A96A4EA2D20AE83D88E45C0B083E0CB9F3D5FB7D704581BE82E3D242B3EA6A7A9 +29B3B8AF7F5D20CD8303E7EE1CDD637E3DBDFA0B876A2E7B7106AB66779F1ECE9AB75E4C2083C7 +C97B246EF9B67937CFE4DA2FD95A5E12D019AEB10A8B1F609F2426F53CE3A6573B8A13392D762B +B2A97FF2B9ACD94ACBEA9A46D6F0F2C464145BC6AC740A19DCE03904FB928F29053493D4CA10E1 +351458BCE3B003C4BD38C891559E363DB4F6189F4925E314F77E7900DB5285C87EF4E2C55B9A12 +CBDA6762604F98B6D2209BC928DDDA85C5B5AB12876AE7D6864E8A242EB1251D6FD05F8F088A80 +FCF304F598F9FB6AD997C8A5481BF577FA4F61B2B742FAF0BC932E886A961B060E6320C3D49D62 +7C04EB0295A7DF9F8AF5F2BA6FB64AB76F685781460B35B7C510E3867DC0DC41179A1E8BC5BDB9 +5DC54721AA06B8C2119A8617674BD10F0687B07D56DFD63AAD41DF660F600DFCD91DC80645C4F1 +3FAA4A6C4B240863F6508A81EDF8B867C948EB7D3A7753A4731AF75F0C05DE4680CE216E04C8FC +49BC1CF193589EA6A33C25BC5B7155D4E34A43B49A8C37733AFDD714774E9E70FC22B40D6C9192 +D073E2E9731FA2B80ADE7D40ADC5FE1ACC52952159137FA5B30A7EA95C39A5B6CA9F6F1B3598B2 +90EC820457E11DB827E3D458C2E682BC1FB6B5E74817246B4FB47DF7DE1CDB835A849078BF71A9 +7711EB1F74791E797B3E73FCDAB725C5898D5188BAE77432AC20087EF62211EAFBA46B91B295E0 +8FD9D4C98C1331E4A1D7206A60F03EFD2E8925ACD1082FDDA8B2B6980B960C9D03BC754AB0FFF3 +EB6E92F8A6D41954CCC7A6598CCA897057141F0ADDFED6F802994D00EFC0771E4B5CC79CED9844 +E2CF890AC9F70AA4567102ABCC67C084AB818076D3134089E623CDB5CEF16E6AC89A1EC34BBC2D +ACF87E3D7EDBC5A2FE1774FE6B5BB78FC53425D364919E8F086D07ED1ECA919F003A1C5C05B914 +02086AC63F3546A34F2F99C88140F4C51096B72169B413043C366BA7BA2E5D1DE570FC1EC6CBDF +03658EE0AB3C1144FE15F8E89FF354E00261483F366BBA154DAF5E6D910F1D40F7DB4BBCF8D82F +4BEAB925EA8B0F5761B1517A2BFDD400E6B6B9605034688A7148596AA8F25B97772979B49AF56D +28B10146125B19AFC56881CA4BD579D649D104CF443E94B186FBFA0F29538D8AAC4EA3C1774A7A +64226D033869F1D821E98B9C9C1393FF35EC9A962BB8BFD3D8D062C086234D6F14D9AE028C2957 +5114905FA35B368C44BFA14DE4E73A4D6C1A119B79A6E3EBB915C9D48D3FAEC3EF31B7AE39217A +21B66FBA853E750000D395A9BE87E78CD91F390C5919766CF31E45EFE678577ADB5931CF5553AF +54F9A0E9BE0428EACD715F7D20C3D75D20810C4C0D96BB10C14B557C201B954841501341827C1A +30DA27C34A5A4CAEAFF4A3ABA566249EB82BFB367EF41635B2E27133C0BC4BF6EE280401B00B48 +87EE78B50E524A9526E442E2EB566F3ACABF1C60C65F60075C434367C67DA4AE42B1462BBB0AE3 +9C83123BEB32327FA66C18409CAEA447B8F504FBFB2CA2EB0448691CBC3C1826AD55697611E310 +BA84B3133D1240BA430B08010BBB0DD02A84FECA352324CBCC9AE188CD9213C2D513745D868C4A +6A0C995D7B455034DDC41A8ED06752805DE487375C69DD746D7F8940101EA49871A4B28AD792A5 +69E76930C32568A9ECA82892B44E111ED0806BDFFF59EDD79B5BB11F82CB7EA201524E6D6D8343 +C3EF568F33A450F8A25128218CEB810B4D4566547F2F0A0640D7F4C8623945E5755BB7B6B48272 +96AF202D9F4B17A2B4CD03D961B5728C04E275E037E49FE8A29A89972D0061055357A40DFB5019 +D0959C44E231D6AB8C6FCC8E24F5291E4B9C082AB5F7D58CCF25 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +%%BeginResource: font lsunr25 +%!PS-AdobeFont-1.1: LucidaSansUnicode25 0.9 +%%CreationDate: 1994 Jun 04 10:42:59 +% Lucida is a registered trademark of Bigelow & Holmes Inc. +% NOTE: This is a partial font in Adobe Type 1 format. +% The complete font in fully hinted ATM compatible form is available from Y&Y +% (508) 371-3286 USA, email: tech-help@YandY.com, http://www.YandY.com +11 dict begin +/FontInfo 9 dict dup begin +/version (0.9) readonly def +/Notice ((c) 1993 Bigelow & Holmes Inc. Pat. Des. 289,420. All rights reserved.) readonly def +/Notice ((c) 1994 Y&Y Inc. All rights reserved.) readonly def +/FullName (Lucida Sans Unicode 25) readonly def +/FamilyName (LucidaSansUnicode) readonly def +/Weight (Normal) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /LucidaSansUnicode25 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 161 /25a1 put +dup 202 /25ca put +dup 203 /25cb put +dup 230 /25e6 put +readonly def +/FontBBox{-26 -236 1026 815}readonly def +%/UniqueID 5054525 def +currentdict end +currentfile eexec +8A630409A330FC5FE1ED7CD3C975467DE475D113569CAA8B923FA3C5A4A5DBA1B426534896777D +FEC0CD780FDE4F4A4B37CBF69BAFE9D7B1674F09E7B60ECB1F741B6EDD9AF78B9450C77EB98488 +7838A9B1EFEC7714CB963DC0D2D7FC90DF439E7B2FD67B771E742DC7E7DB927415569E8F7DC363 +784A57FC7AC7182B65E2B2B985E0344DA414383767D69F0072B82FF65429A625F418B9554E3934 +A06F03727E3C9839A4E576E2351D0253B74FAC9084AF6E67133A5537926A8C80589A37F8ADA04B +5C2AC1126AA5CCBF23226508D011D14D13C6FFAC13BC42FFC82A696C06889B21F1453BDA33C3AC +FF81DDCE02738FAE387DF215DFF6FF74471B4EB78EA8C9F24AD655490C27E6059414A56A52A9FA +E82AC778F1210142A0F9051E5AE4B9E361B1FB91CA17F95CE918651919C7A235BECD1E676D582D +643C13D5912E896FAC77994450E36EB321BDB157BC6DB7FBD0EE4B0C1A420C2645ED9595D2D21E +F387557875DF6A9D774DAF42CA703FAA6377C62B435A83666621A7C4E578421D8C68899952954B +E992C6F613EC3AF8C2F4EC93A4AC5D7860448117BA2B6A968239B7DCC4036B4B1FBAECC17CAB89 +BAAAC5D4362C3CE32E00409A6AB9B231767C1A27514E9AAD74C32EB9F6C0DBB6F839A28BCBF862 +D183D1247828DA457DAC59A0CC0CA4153457F0DF3B5D6FCC06BCBB0B5919DA74CEB11DDF706F15 +B342B26D610DA0137ADF11F3BDDB3189C9DA0F0E870986F86C61CCE3AE60F771B65DD2E920BD6A +5094FD2A12AB3A59052BAF45248C006D431F5B04C9071F925A7F52C1271E7FD3A7F9B60FAFAD56 +8D8CEA6BE39066D98313C932A77140F1658FAD3B32F7418CA0FDF48BDF17F3AE6F095D34C707C4 +9F50C3DFC3148BEB942A63A5619B94218BA5C1F63F66ADE29E1396CCF7CF7CA97788D73D4671D7 +BB0CAE1B8E13CE410F2172B2445CFEC734F53A6EF3D3412C37908D22E3E80C817EAC0955CE2752 +E9B2327A08895A254ED18976E194E85CFF852770A56665EBAC4EAF1F6808F6288AA2776F813D6D +F089F25B21698D10A5C00522210F606F890760441B0871F31A4C0718527B68541A0314D67354BB +834F4FCD365DB2379468671DF697122B66E999BBA6B2A5A6D95E26FEB0E6AA3B4590D5B0C8F4F7 +AF1CB7FDB904F10E8817F7045238C813053CB2096EE5DAC923CC9AB2DB9FAE17B2BA08CA49DB7D +71ED0072A402793C51EE08DC09FC9C27F2E15254CCF9FEDB998F0E3B12C60BAE7CBC550A59BEF7 +CDE1159E1D6FA72E0026BE03299D851776F57069E9178CA0C53CBF939792BCA7CE52A3A90CA729 +91180F917F1E21FFDC2E306595ECD95BE6323E539FC73511C7FE237C873A60B4B4E06C49C39C1C +D1CEB9EDAB2891F30BBE64EE95C27487325C07F8F83B2C0CF8B394C3D0ADA55E4B4541A917B23C +6181480F95544F2DBCE9F22F40DC467F300234CCBFD55A919A7B4D7EF74D0C60E83F2627BD5471 +97A31EF7AB8E8C27A2EC8CC90B846212BB79CFBA9DD702DD627CFB9FABF73790BBF5AA82450017 +4E144A95706851EA88D454A80554853D7EDA089C97BD99805AD58EA333836351E1A6FFBF3F270E +E36B9A8A5C98FB53B9B77AF49F3330416708C3F8C9623899CAA72E8812C963AFB98FBDB4596F18 +32EE5FF6F6AC53B618EFDA664A090C1778C5D340CC2425184EF1AF9C6A7BC52167584CF057F737 +006496131A33D19C40B00B4A728904CCF6669F1AC17E354B71B9D6BFB322CFC1DD2E3D66C97FA5 +7886ED6A5455AB1AE8D51393C52D017C5586EB16FAD517AA4F76B7F0E3913C235A5986A767FDBD +BF04B397E7150F9CB9EE84BC53E65CEF2E4CF91C0C819D7A4860E35092E3EBF647B323331C5497 +A980FA0E95D21A0AB2D89ABF677FBBBE1811983D6BE163609EFA447878A6B9ED22479CEF8C9D19 +E8683D22DDA81461371B0D4A2F993B9ED149E14BBACAD0AED92C0B180E46DBB02F8F658A470ABB +3688C09C52006DE3A6264E0F33E92B1C6F69FE0148CB284DF2283638D396E5F8C8C7FB2A531350 +F49ED6E90498D2C30B6D48BE680B04C6CBAF4B2F92347AE886270B5753D12FE54A8CB0EA003022 +0143DA37757BCB85E0664D61384FAB84DDDA0468702C397BA2A52098181BCC26ECF597DE542CB8 +B1A0F199032BA329EF8185D97C9B536BEBDB7A9588D9EE830804F0245FF142D4BCBFA74E1D2AC6 +BFB24ADE82B947BFCF2AE083638301E0D52D0838548B9B935B52BC5F3B2FD8AEDA7AC6A0F44803 +0CB7E258BDA85320A3D6D3EACB188956D3FC231708134DE6EBE2A296EB0F07AF58E5FC366472B5 +03FA40D0156FCA4320BC906DB75250AF4C55B9DF5410EF3ED0DE8A7DAA82A8762F456BBF97BC78 +3849A1C9E1E9A7EF154084EDFB53FAB120D5F4A68AD4D83442E7F6ED51F251793E1F5D7504C874 +388E61CA7F9120C55228EBE6EE837BA371361407776E82796F5CAE390FB05E2FF92984F15170EB +89296050D3B5CA30D0ADCD59B9D666643FB69C43B2818F03F0BF529A5E68FD043DB7DEE7EA3C34 +0FDAF3598037C8C0F8657F16EAD01930DFB8A633572D6DAC96CC22EABF4361A4EA443E55102E45 +C2A7443BC2DB4883B1BFAA58343FAAA48E347109B9F5D306E450E0423320763CAC8F4B48177C85 +11F6703A383803215E520AF7CA6C449C4906FCE3695117888844DEA4A505372010A0E130FDF705 +A37E1DBC59691D785D37D40E737AC708881A603BC0D97730526138BF428D951AA75579D159E612 +F847418C23DD120FBAB2CBBFEDF9BC3B972CD59132C313D84F5CE45B0740BA7ED8086165203068 +689FE81C9CB701D205C815A8E4BF2C341D264017ED02602ACD5F6576CA7606E51B3EB22CF7AFCC +3C466B69801149AF48A8E012CC75559041B984640EC5F8043A14D70ED3AF1AF7395213E13AA79E +A3BFE238CDA1C40BCD49A006252ABC5B19EFDD78BCDB02987FAE +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +%%BeginResource: font lsi +%!PS-AdobeFont-1.1: LucidaSans-Italic 1.001 +%%CreationDate: 1993 Aug 11 21:10:09 +% Lucida is a registered trademark of Bigelow & Holmes Inc. +% NOTE: This is a partial font in Adobe Type 1 format. +% The complete font in fully hinted ATM compatible form is available from Y&Y +% (508) 371-3286 USA, email: tech-help@YandY.com, http://www.YandY.com +11 dict begin +/FontInfo 9 dict dup begin +/version (1.001) readonly def +/Notice ((c) 1992 Bigelow & Holmes Inc. Pat. Des. 289,421. All rights reserved.) readonly def +/Notice ((c) 1992 by Y&Y Inc. All Rights Reserved.) readonly def +/FullName (Lucida Sans Italic) readonly def +/FamilyName (LucidaSans) readonly def +/Weight (Normal) readonly def +/ItalicAngle -11.3 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /LucidaSans-Italic def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 54 /Aditi put +dup 39 /Alessio put +dup 41 /Ali put +dup 43 /Alois put +dup 173 /Ammar put +dup 47 /Andre put +dup 49 /Andrzej put +dup 51 /Angelika put +dup 53 /Anton put +dup 55 /Ari put +dup 33 /Arne put +dup 59 /Art put +dup 61 /Ayman put +dup 63 /Barry put +dup 65 /Bent put +dup 67 /Blair put +dup 69 /Bonnie put +dup 71 /Brian put +dup 73 /Burkhard put +dup 75 /Castor put +dup 77 /Charles put +dup 79 /Chi put +dup 81 /Christian put +dup 83 /Christoph put +dup 85 /Chuck put +dup 87 /Clovis put +dup 96 /Curt put +dup 89 /Cyrus put +dup 234 /Glen put +dup 189 /Heinz put +dup 56 /Jacqueline put +dup 57 /Jagannatha put +dup 58 /Jan put +dup 60 /Jason put +dup 32 /Jeff put +dup 62 /Jerzy put +dup 34 /Jim put +dup 64 /Jiri put +dup 36 /Joe put +dup 66 /Joel put +dup 38 /Johan put +dup 68 /John put +dup 40 /Johnnie put +dup 70 /Jon put +dup 42 /Jonas put +dup 72 /Jonathan put +dup 44 /Jorgen put +dup 74 /Jose put +dup 46 /Josh put +dup 76 /Juan put +dup 48 /Justin put +dup 78 /Kamal put +dup 50 /Karl put +dup 80 /Karlheinz put +dup 52 /Kaspar put +dup 82 /Kees put +dup 84 /Keith put +dup 86 /Kenchi put +dup 88 /Kettleson put +dup 90 /Kieran put +dup 92 /Koen put +dup 98 /Lalu put +dup 100 /Leon put +dup 102 /Louis put +dup 104 /Luc put +dup 106 /Lunjin put +dup 110 /Malka put +dup 112 /Manuel put +dup 108 /Marcy put +dup 114 /Mariusz put +dup 116 /Martin put +dup 118 /Masahiro put +dup 120 /Matt put +dup 122 /Maurizio put +dup 126 /Michael put +dup 177 /Murad put +dup 91 /Robert put +dup 93 /Robin put +dup 95 /Rod put +dup 97 /Roger put +dup 99 /Ron put +dup 101 /Rudi put +dup 103 /Russell put +dup 105 /Sam put +dup 107 /Sami put +dup 109 /Sanjay put +dup 111 /Saroj put +dup 113 /Saul put +dup 115 /Saulius put +dup 117 /Scott put +dup 119 /Sean put +dup 121 /Sebastian put +dup 215 /Wilfred put +dup 45 /Will put +readonly def +/FontBBox{-250 -211 1099 967}readonly def +%/UniqueID 5029007 def +currentdict end +currentfile eexec +AE40F8585C2492B57FC8C19373E315912C0135F3613C38B98FEFD06419749A2EF936D049568E91 +2C3B4814601E6F1C68E63168C5EFE4A12F1C972A88E59D27C31A2A9C0BA365B6FE3266DE7CD0F1 +1D5F0698C11E8C1D4F1056410F924EFF7F265CD09F63373FFF21407562BFA055B1BFA359C5890A +384338F55437BCB13EF47EA2FEB34874DAE99A2A8CDF087F076588CEF4F5F52D27F99CA2FCACC3 +B00B2DAB26EBD6CCED97C1076E2E38C1C7179AF884D34E5981F3B13BFBED7B35D318515DCB2A38 +02E5402628ABCA3D4BC1F4808D32312ACCEBEC95EEAC23DBDFC3788D91B5D781933BA1E7A9E7BF +693D5DA7A9281F1C6A7C34E8D6A8145895DE4B6AFA59BC2F66198E226DC29A066BA02F4739FEF4 +FC344E81EDB55226B5E16AF7282FAE761F3D9F253D76D6442D5CC7CA3043F7B37D5A34A905ADAF +242097EEDA53782431445078C0B35090520B01B437F01D891573DF402A427CECEC5386F1603BEF +05EEB7DD5FB545BE8042FDC2656F47C7ABD12DF9DBA59693E4F9A554FE067AD8157D2BF1EFB7B9 +1C54F92B27DB8FE4AF1572A8E3131A5FC251FC8F3D5918C30B18337CF3CEB9AAC264E467F9C4E1 +3BDF64763DF9650B0F6A3FF6092F2241B1DD69076E3878B875564E5EA253BBA208DEAF32B48D82 +CA70B0D8FE5181B29362D1603FCD82116B2FCC77931D0E121CDC23CA762E8C9EF47EF6780EC5AB +D9CB39BF6BA8F4D191F9AAB5965691C4346624EF1559E151378A8EC69A126FE29F5BFEF6162653 +B55AA546E4779E7E60288C059D2DD6FAE507F6E01DB910D52D10EEA2762D59A01C2F1FA458466C +07AA5A0980968990E18D71F0AA71BBD17CEEAFF025A16913D1BA4D5974D6258BA0D1F934656B65 +19A3AD2375DA469B27BC108F919BE01C833BB6CC59AFFA34F976382579EC5253B4610F9143318C +050160C7002E29656B29874C5BC27700C912C7B00C1F62458775BEAF10C5A2858456FD04C5B6E5 +B790085D9F584195CC9BE74E7DEBDC57D5084C3CF8168D7B194D57EED9F72AFE24EB78A7CED489 +AB96EE6F2CE148C3C8CBC466AA2B35B36842CB48476D303A7717C4369F803A4FF311D53F1A0044 +B5A3B423AB2D6F361D233CED47B79D579DC4BBF97AE7E6849CE72B35CA881B4680F073C4942FB1 +04B110CD36C12B7FAFB9F8F03EF419A1A5CFAD1D28F13EF057C795F53737018583F52474008775 +5141099E0C46D3A7F65540A05DEFF5A0A1C68096CC39FA13354863897E93F98B98E2C53A693C2D +57AF95936FA23B61A55E26214D5B2337C4488BD6DC93DDA298FD77A80625C917D9D432EC1AE92F +DF42E184BCC2400C51465244F338DAD00BF384DC5910AE26F964CBB75F091609E73A3A96D8D07D +BBC4DB58148E2064C50B5EBDA56DFDA7679C10EDC505D6816B86241997582D77385E0AFD164AE4 +5333A18BC4FB8CF818CEF97158CED9628B78B6C28BE08E747739F924A7CC9C9EC72FD12FD5BCF3 +2D200E0FAF7D7C8F007C84EB868C2118F0A159DF0435C4F9E432F5F7DB3766CEB23939415E3709 +B1E5E14996C0B7123EC993739ACBCF6B28BE7628D11843B2AAD85AED50C9D82B5151EABE73505F +3A1C103B7F02C0429A32F3376C13863C347BC07472F6CB82B39EA37525A46B95F9387E654F8076 +EEFDB79193E97C16A69EF102ED96F180F44586ECB46F45611BB4FA173B4C8DE27E2C4AC2BD3E91 +8441E44FF42D13F9C119778806FFE56B8ACBDD4537C981571639C5D9D5522C822DE5F29B426B83 +74E02DE01D2A2B30281676D4593C5356214C5C6D3FC679395E0A838A447B2BC803218F97AA6C92 +EE62D3600680CC93187A2D8DC3D7616F4928CBC3E8C42BC5536D00A0F1D3FB114EEB9DA1B5FD89 +50EF78BB34E7AAAAC3AD105D960B3AA743CB487AE7D000E14C5BD14A2250AF406174ADF67A0BE6 +7D62771A8D6283F574F314FCE1FB41B80275B825066BF711A982E58E8F34657DB15E29B20B5EEF +6EE8ED0BAB63458DAAB556CFFE712851DA37303784F656309ECAAA93185643264ED4B7B6E05829 +67E94B9311A2636F0D6F18BF83E5FE28C81DADA7046E5D485B6A9754F679F2851C5C3F4071153F +C25F09DB849C09E9CC34A96E0DDE7BF692895D4B6678A1FBA8DF90522086D5C64715DE5FC26F16 +B954EDB7C3A0A72F1278341A1018286562228E2EEA26EE8EE340CB332B43CA68C65A2D57FEB45D +0BF8EC6092219E7EF9CC649834D297EAF3B5FB00F2F83399311AC5FABC8761A13575B0C4D917BA +0AA75C78AC3AB78AFC746CFD5FEB2B91073F2FD8D4C2A3A490C94BED5131622DA474A860B312AC +4675661BDF91D076228D148270253325F12147C5A7FB25FAD15732E43004A70F095EE3AD448D9E +336CF44C4D55CFC772C92E15CEEC2F56A002A6E1670ABBB074DBE0CA55BE5D1FE65F5A9FF90E1A +F4A4B5455B9F3A82502C4D860468B7E7E91A77FC043C44E19211A96D8EDDEDE29FAAF156AF6C71 +CA2D0D26A7AA68A2A0864BC236E3B410485D7CF2A51C3FD22A147E3E44E723CCE629A3E67F5321 +6BF328C2BE130CF9C05260E4E5FBE73D9C2032BEA5AEE7B0ABCFD2F6D9874B77D3B61AFDB4B300 +55A0033C9EC86962E50CEF67EDEEA31C093B3A429D9AC37D58056FB739B64FD22BEAF7955D1A12 +4E1F5F81C2FCDD89432C15ED61285B1D300C10714167D1D4DF9C7B0646BD825805B7E6F21ED4A2 +06974B556EE6306C84FCB475F4F242C440A41B67B543BFCC178DEF4E58B739ADF0E14D4D0137B4 +F48BC39918599A70DF1F0DE49F6527D25ED35B5901B2EACB584E8F29DE5CCE15AC1E31D4A14F43 +CB2BE1150D22AD419EED486AABCEAC25F01BFDFDBAE2E3E4C899B3291897A638B4420960CF7AC2 +F08236D1D7747AF87A207081CACBF00A0994C2F98EB90AA3F4211EEED6A0425C6BC0CA31DBC6C9 +DE03E02A5AA192F0187C822AE022AB776CB891E95BB90BB89C07D34A38911A34BA591D78B7DE83 +6BDC01BA45F0A66D735E317B06AF7EE6E817E98FB776EBEAEE6B8AD56FF5DE1134B7EF55D87F21 +057F1248CD06932F6DC349D2E9B1DE0B81E300625E370770C548B89FDA0AA4F8B7373426A4C8BC +200F54CF2A587DD11ECF76E2E324591FCA3817DAA9B3FE117C826F5B53F24C722F766F73903C58 +A81A2067F7A3E8544B64E26BFBAA0AF6FB10EE8D4E99C49CAB1B397E0AFFA566B007330EE54DAB +AF0C044E8FF8CBCFBD70A372C5050F02AAEE6E2A648771A199A8290BAF6ED4AD485DACFA5A4937 +CCCA8B4D03FE96D7CBC7C60E6E95B53BDA2597C66168D3564D1BC6617033688510AAE0F6DBB16E +192CBE34F5E0364233AD2A2D0043703A48EE02E2B4576645BEAF3D44622983407461F2E700F3DD +51DD10BF742D645F22700223960637361E88D79EA8EC0084F5F20D0BA3EB94A7B5EEDDE499A39C +1D621945DFB5937A31BEEDB0E2DE8395EAEEEC4A912825EE2D30E06A351862C9F02711D38F63C7 +4BAD03D267BCA956F029F2BD396A577000AAB31B00B004D7DD5F6102D7FE0BB8443AD768BD6051 +CBB0F6C74FE866A2628789EB0E2044F2EA6F0D1686BCF0BB7F245AA757A20EFD93268FC1E140DA +35E759443BFEB681CA8B10244B4E395F3E9A151A5A3D74293E5EC0A2C2D2DF37132705FED78742 +8C5E876F567D1CB77F7338F70B3FE5AD1F7D9D6AE6AEDED983B638C5B1F6284BBB8911387C2CBE +51B92657EC57F3F28F9F71BFE582DE883F2F24A3E1BE90D5DB001E7B69968AA2B8564940A2B3C8 +3EECE73D1DF1A51672429FC169488D329D8AE41E0D7E557F6678C6E36EB1877DA3B7AAB89EDDF1 +54AF743BB2FB8F4EA0AF7E8761F3EEF6794FE66A5494E74F7428EC2D47149F05B8E3CC934C46B3 +8739D1BEA64A39C4AF8CC42187FAE682546468FE3C68521D074555FE83FB96B018489EB12C7437 +9EB97E53BE86318E53494DA7F214B9EEF02B1843DEE3D3B7FD4F94986F310FAAD236BF55E7137F +8B35712AD6C103FFC59F05AC12629D2CB39940395C9683B49D80D0548A17D45A422F9BC0F02112 +DE3AB03E5CC55DF670637BE7E4F0ECEC9B324CC26C16DA89550D80C609134B14E9C5575662A309 +783794C673B64C3C62932C64D9D9F560CCBDB7BB6DDB1A0D67A6C1D09AB7BD60348F91107F65A1 +3EC3149656CDA201356CC2AEB313A97E203C8037C9D5C5A70A50DBEB91E8E4B54EF9BF8DCCC033 +23F8AAE82CB2B60737C52832DA384B02AD2A1D80EEB88AB6ACED1B44AE582B9CAB881E44AF4392 +D29F81A30B430463A0D48D26ADD6D7896EADE1C0E82DA83E28F414BB24086566EBA2BAFF475CFA +123D905A8A307E135DAAC8735B833005EE356EE627C6B3544DFED3D62F25E88429C244288ECB83 +6733096E71F85E602FB5A77E7807381D0F3805E29716B21D21AFA3BDE43C3EAE43D33082F2F14F +72CABDFA02022D3146A2AB88719998C6EF1984A5891EA63E47C995F5C484D8F3854A79AF856F57 +54E9DBBE35668176F67FB1ACB5238423D2E1396E7A4241574033C78F342D11F97D8CA238312129 +0D467F2A371BA35E52024740F82CD91A23525EF0597B06A1CE57C7D568B25A96EA0E62756F5E07 +1A63F9D2C22E1C3806B2F150A57E5ECAF61A999E3573E613F94591FC4B0B8F4BDBC7D2619E800D +A2CD525EA0B722CC25C26C740265774CAB6C3CF110C6A1C7BB9F0A2EA2D03CC8C483DFBBEEE0AE +831A31706F790C0F695B926C89081ED62B5D5E1F02F405DC455751D87BF06CC05147D56CDB03E2 +16E4EF39CA3E976F786DEDB9CB0FFC98E3B115E4BFF4BD63C2BF6D577971ED3FD5525448558DCF +C4D40E681C9FBBD650712C69FA78EEDFF970ABA0BDB69E33A8DDF3A08BC0E4DB8909A2DDB35096 +4FA94F03284532ACE8C62E8E0C5FC06EF66266944FBE4C6C239CB66A4445BF6E50E1221F8C9BA3 +2F11E198D306F31DFF8C9CAA5AEEAAB08B30F0ECBCE3CC3329AA58B1F165F151362BE3646EF3BE +6120E2B618135127192D4CBC77CBD03A83F6717133B61DA06E2118AEF126FCEDA71A426B6801C6 +C70AE8192EA70C6276EE360B9D89388C37D075644A5009E4450B3E6F88697DE0C0A2E6A1FE58A0 +72422BD671FA241FE11788AE83F63AF4114D06702D251FEC634E562CE367948521FBA53344D5D6 +18B0A9A2C5E013F8C790BD5DE8AD289DE859768CB488D06F45DB114FE12B2BA3FCD88099F955CE +2A3ED377192307CECB2E7227DB751776DAA54BA17F5E7137E1AA1F1B6DFFE782F715FF29E0C370 +76BFF950438DC7B7222A67238157D769C27F48CD9E39AFC1B0AAE6E670E20E982506FA564ACD52 +9D108F72E9A615C61907F00F6DC9B3FED3D99380B99242A53027A154891DB04C3ED328DC4B188D +9080BDB06D9513098D1C8A69D844320CD494DA7DCA8FE6B008D0DF6B3121599E951AE22A9EE37F +DEA7A4092509F1743505DAD2B07E1DAB21D84038115C10B5EACCC9C96C62A111AEA09B3259BDA6 +20202DED8FC1BBE20A8CB09E7C77055A9D0BD7D5F39B8F065B290900603EA23896CE2E7438E6CF +63BB8435EFA37FA35A2588519FC79533D3A1C1B376EC7BBE92388C3F3248C5239C4D21730DBAD6 +65A7785867BB355EDAC969FED613A52354E97501D56909BAFA0F87258B068CAF0907464B498861 +1D3E7E80E645F7AEA5DCBA04CE122C7A47007A73E725DE31C475A57988CE41BE7D1FE972A589F8 +D9CDE0977492E07457698B8E9E184A70EE761583058AC50884A880936F001D53D182CF9605E588 +92910AB45E3C752B6D266CAF22397BAFF1591976B6DEA208495EF675876E92ACFBEC1887245048 +30F05659B2E73E8E049647F4F28F529684085CB30EE66FA5929774E49C15875493F661B77F0C4D +6391EFE5A0D384BFCB2FC1820130E2E519C3715CFF2AC4B8A74E81C368C55FB5782ADB9BF9644E +2FD416320DD3C6CBEC64A992B3FB79991E62F129D5187763E7C7D8473F963F43F0D70A8EB508B4 +970A1572835201AE91F48B7FC35D0D12E7015CBD6DE0677D715E0BF94F1F9D3242F8600EB2B4A9 +590BA94CE6D342D9342057E69E0B71175B475F9F9FC8CDF962690867B6B962989D94B7CE670CFE +23D28E1197AD6C118DAE3CA2BF62FFBF5A6D03C7E1D85199908F9DAB1709E1A3FA4C1D18535AE9 +5306E0641C9C328886C72C91B49B498202C8B72EDD5C7F5DDF178584A24E6A89DC9EF5437EBED1 +CFD46ACFAB9678F27F4BB80279CDB62D9A23761E70ACF40ABEB38BB3242FBC012B8AD563073BC3 +240C6AE167A56B084DABE9096EF07C38BA3E6D380E2A1D1CDED670305CF0EA1D070E5FB8574D30 +8598EEBFB0C6FC907E25108902BBAD331F177EC95717078B97EDFF258F55793FAB9EDDC508FFC4 +719F491D791F5D8487FD5A31992A1E6E4DF7C82AA1BEF383C2F74ED7163AB6DE334D48A11520BE +2B47FA5C0B07FCEE735F63CCAA25507A78971012EC943DC2D1607B3F44DE13882DF23070BC066F +F74646DF196E1688D7350D7672F93691FD5950AD7ECE2FBD6D4B1CD777C88DFFCB90B57F9C829B +A0C9F061F7DCC650CEA49D70B440B84276E432FE47D7D4D67C241F8097469638E4F5076A65FF5A +15FBE8690B4F6788E843753F6D961043BD8C7908EC2A2EB795AD2955DDB8CD9B6A8BCB3C2BC673 +0A24CBCC79F15D44A6AD0CA0856E661EB07890BD79E93FCAF93AF80BD1BDF915B799C9118DE981 +496A963B4A9498E11893F19446FD9AAE7E4B4FACA51601F5C54D46E7DA49750FE88F420E9D7325 +DEB5A6B091469240AD0DB4537A46E71595FF598BDE54972860305F59F593CBCB7B0B26130CCE19 +E0B553E8D52B1953AA0E463D49A01B3B2B588044D423418A58665DC05B5AAFC47E264985934F03 +C358035E5E4DADDE030060BC07E7F0526FBEEE7FBD26CA50111E8BE27FC021214AA7BC8518E51D +93934E23270DBEED1246F623EF50C9B12A3A79FD2425DDAA17B4375FBC51A1FD8A7A456441C5F5 +C8DCE1A112C00058434E3250B841ACCFFFE4EE5CE4E8DCAD1DA76C39CA24EEF79A2297B70D6AEC +75B3179FBFA7A4D90B4522A0F4243D14FFBD028961211739790B55947C4DC63F0DB959A3AFC7C5 +65D672D80422330AAB64D51993BCD2A34FDD8B1848F5C400BF5236188C683BCFE47412108B59EF +41B7465B020FFA6A9BE53269B4F8AB5FE2A9373C3AC12A740EFD72228AC156A999C6079687FE52 +19BA162C917DE80869339BC76A9D7DEF6224AAB13F1E17BB4FBE9722B94DC84256529932A33391 +D085A85A4DECAB06978B9166F075B51DACD371F172D428081AE1826645F9A461C257A46BAEC29D +D6848025FB7C6F027D67A89EB217AA9879DCE693729D36171F815C3C6967F8DDD4A0EBDCDABA1B +AE3C7901A071501004DAA11EBF4E6B20242EB6C4932403A6FBC9C190C8BB789CB3C3F2DB0CEC69 +1FA2A1632F625FC6A1E91CDD863CE75338CE56B6F8863D77FC57B211D413F75B2F7C16F5392015 +C33B55B49BA91C9EBDD5AECBF97D80FFF1B84488FB259623C858B14BB3D78215185A866576F34A +0E259D58C750992B67B0900001AE2CB8184419C9BEEA52ED099057805F53B7FBAFE7BF2FFCB3F9 +7571A88C794B5AF35DF67BCB66CC21536AD69F860DA40C66AA8F6DC6E52A9C0CF052BAB6708EA0 +0ACEBE8A2D3FDD21CEE891EE4B905F72845B3BAE8591A20D99EC177C44528F56A09111A498160D +9EFF65D62BDFD201B608B578E9E052EC257CBE33662040ADF68209F5E7876E1BFB861E21405F5D +5D3A2F684C07F20223E26B289CC7256B10D699637E5A15F409ADE71779032310DB5FB5C98CE037 +89EAFF598241368500C76315D8E3FBE028F587237B1A4E71BF0B52C181AAE9B88754ABBE054185 +A035D118630FF66EB5A48C47949779276B5AC20699F3A33ACB5F9510263670B25A7E3E92666F3C +0EE6AFF2CCC733780A0D98569B4E08254D9D88DEDAC4F50EB1FE9CBF8588E301FED58E36336167 +7F47386A37B86186D0A0A4627C2BD0C956DF9C0C9209F3275BCD65869D14B94943DCB3A2FA8B5B +D7434CC1265F7CDA7D86300A5E033AD24468ACC1809460A8DC4231B5409909F865C6CAF7A2D998 +3BC3ED0BD15585A43C6598D8D3103547170067B51D0638150669DB52C1E371B6391D2311E5265C +6FDF27951111A7524A304E865898634CB768EE72B812A99DFDEBA1C284A0FC95442921B8DC7280 +2EF144335923FE114747EB3CF24FC652DA97A25C2C92ACCFDD15E82144500A6BC1B2F79FF4F722 +E06450D2E6335839962111DCBDB1094FA2D3E817EABAD4DB131F01E453ED5CCB794316E5D259E2 +7A0625D1B5827706503B0F67BF168DEA99FFC9AD1C6CBBBAC271BF0B92745C422F9BA22A2D2F36 +A0964C052062EC7AF373244D8A49F60EB8C2881906FCC197BC9510125DC61628C8C1B29BBE00DD +343075F33AD0AEF24F32B0F2EDF873401A60CE8A8B6176ACB9C1A395C8861BA36322DC7DC85796 +6C8C77F815477C820716F965B1E1F0AE5129A01DF4507E0E04B5168FA3566AF291F084CB65D0FC +E86EDE9EC19EFA7CF75C9749CF4B5BE79083E8FB7508A51C5800D546FB14D4D8B5191C598BA5B4 +82E8A0C17F77CE96EDA3179A4A5613C9235758699EF8E2B4682F920A70CEF54FDF59101C5135EC +3FEC9998660F8D9620B755F45A6A9FF807519A5548EE4BB55CBA5FE6D407499AD47707606DDDE6 +32D7AD1A58FC63F97357F4F5C63E4622BF4017B0CD757D554390F27123D17494630A756CA2F1A1 +A872F8C09BA62F76E5910578DCD4AB4B0DF33F6BF4DB1237EF65E5FA97C593C90728B12FB17407 +FD681A44EF78E14918E7B0530705A1B8F27495B3029252DA7A3934F7209D8BA8442FAC0EA0C03D +08623347C4B17B249B91E3FB30FF88DFB190AA14276D7A878D6711BB273FD611E15D13541CEB1B +B6B059985449B7A63C8C425A57AF00293AE85AB3FCA9B709FA60C55EB6AAA639EBCEF4847DA4EB +F28A235000471D355202F948B24C9283FD0C9C9E3AAF88735E3769B7D60A9410B61C9D62AA5425 +9E43AAC9208A794D56886F983EB006ECB5084CDC8295D1EC0F52B12AD4BDDC14E672450D2BB481 +420AF2E5836683F31FB7ABEEB5FFE9D5E1AE551D3A6E123ABBB141BF313E5D4ECAF00A12C441AF +E36DE60877FDAE8D255DD1F8BB0C0DEBAF10EDAB4CD2C79B4ED1CDE61E57D12B389C541A8A1823 +53637D9C1A48CE343C88CB15AC45CC54EE6895C685F89691D09AC4216FDDAD8549D164E8BCF101 +1C2D97B3F1DEA3D7C0EE3049860A949D8A558553D5E8FB358C8D2F31A1DF90BAC093E7AB45DCAB +9E9D4A36B5ADE3C696921C3545E6BD29587068B57A79DACD07C50610EEF8D16BF0CDDB6CB0F459 +8EE921AE8764247A771F63A3E8F39B072DF066C1229948CCD60B26C2FA9FC8467F09762BCD38BC +3C5A17EBF085DF652CDBC0386E5F8F908C6EEB9E8B35FCF8BF69177FE9002592F93733D3502725 +1035E29E2E4A2C17FF86B5E884ECF851CE8D1CF2E667D9F9FA62EA5C29858EE46647F77FEBD6B6 +071C827470A97888B53EDF69920EE368044F9DCDEAD7D40D21D44A90C44CEBA90B64D800B6F083 +5EB84A3D66BE4F6B1B173B8AF1D0CFE9D11FA65CA2AE847EFEF063BC4400D508C49C220BE19F9B +14A6E76E2D65E54DE811D104FBC001508ED53A71E6965FEB07423F4846BA0F0C70518D2D9377C6 +FAB46993572179E9A0D75EA6F67C5B7FEDF1B756C882DF1010549DA4B6519E9CA28C56053BAD1A +9EF5D0428F2CF9355320B70ECFEE125C9B752E2D30C6E259F9A44FD44BB45CE8F66C3AB6C27DC6 +E2A8919A2214220E0E5ADCF6C885966647797B9AEDFDDDDA5726F45F407034327F70C388B6EBA3 +5227ED48CC572516A3FF067B4F7707DB59CAE2B37663CFBA1E7128B43A2F1BBC209BBA10D71D53 +14A31B03E68F68A9A97F32C14205D4E998359039CD08D21B0B4A01FA2CB7FA8B28DB40F23B1301 +2D1664F42D084CD6D49588BF294EECB7C2CF18B65106BC49DA160DB79A63A9A7194C9F2F79F2A4 +F97EFA10698F291334E8B4F74C9D948F557C25C4FBC798ADA8A53B9B0E6DD4BA50968F5A5707A3 +A6428BC7CC56704534463F5031272BB5C08DD6F4033FD1B5E1A395316AD330599EDC4E021EB125 +7BF081AC55857A913DFCAF39F66A1ED2289A57AB6CDE8A2F56D11157569484BF6EF26B04C7CA9F +C821FC46B9F13CA07AC0D90FAD8AC2866BA8DA0D67B908A01387E54F9F9DDEF25F50A1DD65717A +3533023CE04038271DAC6CB401D3F692266712D3E380970368A34962C60646B12D129745C961F1 +F6E17FA854630F7FFA9E030A0C2D6001692E71495AD7492FD65912BBE636050F85DE19D51F2722 +E8FEA3C931541C9C370626163C528C1A3C0E587C7275806D08892C2618D0CB66B6AB37EB96EE34 +26274E9E4A036C57AE33B1C7D50BC5E2BA42BE0F14D32F02F77375087BEA2D3D44366E13F9CDB2 +096459878D802A151789E54C21E09FDC98C6A3567B7F6EF03E7E67228998E1F893ADCD0EE49F95 +22FFBA193A8BC1D5A2A43FA75300C4C72A1E388A792586B3716979DB9679BD3779EC4D9F427F18 +E4017D87C0B8C44460FE64C1A591875E589CB9A4818341FE9FF1E515F6D510685338514684D90B +A40FD68AA77BE2F5D5536772A6232B386CEE391C88D1796CD076A2133474F9B1506B446F61D138 +E5CE584D113BDE06EAE89D82F1AF25B78891766CB386332EFC60A57352BC96B42905C0072DDC23 +61F20E89BA1DF2EFC1C18FB071CF04396A45293E44FE656A19F3AE3A5635560763D03B6039EAC4 +605AC30D4E3B1A68AC6CD68B00D694399B9527F13D81099DA664919A3D15C3E6DEF460134A1736 +B1FD53DDBD20C248D0832074C2A22802B7405EB6D33D864D97B78252BEAE3BF9BA5DDFC4CA077D +806289B7ACCCA239E6603C7D2BA41B7DC820F86D1F8530604D7E3F8A1239081D7FBF9FF9C2D9ED +4D672417853364CAF9F010CF08E4E060038A67E70EC743AB7FD3BFD62E7C209B0281F592700E1E +CD0B18F65DF4947D24B2D9FA6C645348495864F66008BFE85089E6442856D0DFF9B27648A793B2 +22E98EF332692C08FFB08A7AFCF9EE4DC33343F8FC0B2BF5F59EA5FF484EEC4D0903A7DE30447B +F6159C922C3691A97C2308CC2B32683A72B3CB14023E76410345781F0949E918D47481630EB60F +891D13EA3AA81DA60DA50E67D0DD63E6823DC1375FC60738B633996A10B16BAC8CBF574732679C +B238B9BB0C1507515558A5E1419A17DAF43BEA11E31A9F10AA8DF17DD9BD9EFEC13EF6F6D1B47E +CE37F8D45D2817B5CAECBE38D45BDE09604146FDA57CC7E0814AC69558F170A7AC2F8DA6A5C7DF +485C1E16BB96C3E1DA2EBC5D76630A99A007AEB8F680F2A10182EE55A0ECBD17267F6A0E4AB5D5 +4E062DDDA4DEE9506528043578853DE1CE8ACDE68938EFFE8283419D9A779BBC39221379BA2767 +DE78BFECCEA814269A456AEC28CADA35B7A1F5DF89D57F9FE64B2818EFEDB506B1CBDE22F9E706 +54A84DF0C0124124646EBAF633E054D704305B2723EE6848011985DCC11CB1DA81ABEB7CD5450E +31C218B45C3556B7D1DCD47D4BEA4E3FFC5930037B2664ECCFAD1204D8CDD7289BFA1B2F4BC59E +B586883A9E8757EBB0525A53EB83996963ED8DF4760CC16B542BB7C60FE6C0F3A18E18B26EFFC6 +CB96792CF2C2113E04C8E64335082EDB3FBD78DE0F1D61B55EBABDFD44786416F0AF593379728C +FF15973618B201D872628100BA908908A978EF091A126505221F6C52E7096CFCF13710DA707347 +308943095A0222411C858DC7BAA314EC1107CF9C7C699EE623981946E79B70177FE70BEEC2624A +928FBAF73B1CC7D65A6E76387EF3812177BA0914BAEBCC99564A2A26710129E23899D8822DF447 +06AFECAAD63168BC96BB879D418D3A26C214E4F26E186ED9B645F9023013086767A5276DCE1B81 +031D6F08055D5898C6C1DF53CF9695F0B1DDAAB78BB824B2EDCB8D726B2F477289C16AB9E85013 +1E1E23221929D95E17F4011D2126D783C1363403D650D426D642AF6928AC7A017E2D36A60CE6E9 +7EC189432627B4BB14B94E2F46D4ADA823DFD6093F9ECC8F01FE148E59C11AAA4417EBC801B0C8 +D8B380A4922D9AA366BA64BEAC25DE3BB50E5EEFC4E0AA8E8D6E7D664FE249F01058D5CAAA8C3C +AAC732A1507B9F84AE531A3F5A6CA32C812EC23E31F3F491F21835F655ADFD42E6387D03C500B1 +D924D99572BC8F362BDB56FB6962800DDEBA947659674DB719E4CA9CA2CA8BB36E28CBECFB9EF8 +16EC9B0AB6B464B959DFFD30F564E6C7480B72A5BE58B2B1527BF6967F08F929D98378B2D18AB6 +2A73010C9FF49CAEF7C76CAA65695F1FEDFCE05A487CBE6CA689F4B095BDBA432E349816190CE4 +BD03D7246F73B5A6BCA12E262BCCBA77E25C3A19241202EF50A600D21D16E8CFFA05EBB85E65B0 +E3AE69730D4D3EF79A0525BFAD3659DDEC3F536BFF0EEA6693A683BF9259E098B1CB8EC38B1DC6 +AD3B20DDBB88E1863ED1DF64A2452977A1C70CFAE0AC206977526D2EF4885561EDE9C0642D6524 +12A2BCFF8B37DBA2D31079C4AC6B9CF26518BABF3639D9169FACEC29E42DA1F0AE2EE290FC0F35 +149E0EC8807C70C4EBAFB12CA44B7DE7D95608DDBAFAEB476E98836E317187715C1F07C3719EB2 +0560EB5B241932106C464D074EBF0B4B6EC4E86CAB3C00357D406EA833652D729D32069140817E +F7F906E8650CAE88FABE5545CFE266F4966FCFD8F83DEED5C086876952F0D024108B42E06D4DB0 +89EF77802BB2DEC90966D331F6E34D92675DAB18FA3334DF9918806BE5058BA582F35B2D742EDC +F4FF8BA830F0C86148C235788EFC15400E08ADC57D6ECE093E1F7711590DA9D30017B730774052 +6937D9A8A4756ACCB0A6BD2888CE2295658A9B534B88EE43DF464BA3AF64CE2504814D2B065B85 +0DC705049E0B346D007B43AFC18028D4E9539EBC7CD14737CC1B7F10F2CB000A7F219DF60B449A +12D21E16E8789B7B8F67C354574B6CB5E0B6B612D9C5D5B0AE7D87342AB404E967494718582FA7 +D32CE4D6A81A1C9EAF3EAB6060DFBA250685BABE46B4FF3BCC701AFA8A868F7029B38F3568834A +8C34EB0E6DF3D67334FD0E4838075286331AB693179C65BA5087988383D3D5EC5E0AE7BDC99BFB +C358BA2AA274A4521E286CC6052A5C477696C5578D5608267CCB164694974BE93AE7E35F389F2B +AC6B7980E61C29B1DD2D15B42195E795B00D2B89E6C4BEC4379413B11B939A1528C56006ECC994 +7E4F14E3D60F7400FEE32D77798FF6383B3319C6F92E494BF73A90083F986CE5F2105C0E801027 +57AFBBFFAF368A20EBBCC6516B79682D8B70A23D8DF3A2BBE4EE081D4ADF70847F95DDAEC10B35 +13B069B9A6E50FDE25E3458050F568625F680D3DAB2FCD3B7007109358EF6428756F742C90118F +E443EFD7E6D879CD082F73B0B95E230C06C67DA5CC8DB4792EB274FD596DCE8C966F84B54FCB14 +8B57141947461BCC69A012B50DE3667F6DD9F0FC7706525BF5EABB07164BB07B9C973B5D31D0A2 +2CC99E37697A6D14B6F4EE4745329EAC6A5DE7BCEF1B10DEEB46DA4AE14BB82CBABC31040987E1 +74EA49EE6F543DBDA0063B6C1042EB379F610DB5C0D4263CFC08A9C5604B7FE2345E775EFF6BC3 +5C581500BCFFD98E23665B2115CFE33A184BBE1DB4EF955F409074512F61A37827DB751757E284 +A23C89932BA251ECCEE545B6DDC98246970B17C12FC7F9237E6D00E8187F7F45E048307688EE64 +2FA6CABEA56C1D8C1FB31E0B0B95D7DAFC1BE2E90F933A44AF03E94BA2DCE76D358C2D7A2216C5 +E95788A6BDC9350135621D59F52FC74BC96D94F93E6E63123B4F56326413974495E822DE96FC05 +315EFDDFEB919FB2A36BFD8580D6A21D11515EC7835082359F3D0B2F79901FD6CC2AC41E2D7B9C +412A49C9D7B8FD6EFA11517821643349EE9FDD5A6F4D55F440CB7284726C6DD45E84049F8931CD +570388CDD6DD5F7AA0323533EEA3DA70FF0AA8BC42F3B129D0AFEDFD840FBAF2CBC35FF45B8656 +BDDAC912ADA0A3C2EE447684AD4A0DADF205A419E583D57D352B30356D611E5E8B67538E2AB612 +787177B8C8CAE9A3F63E58913E026E2BDBCD9CDF272AB9B181BE3CD650AFAF3FB9D6E07D32F915 +4852862C3F7DB6748FC834C868619A4E7823733CA044DBE48F642944A087FAC70432D01392A52A +3FA0D1C54EBA4662AC8DE38827B17CF644C2987ED7E57D436E4A88B29A1C91F454A4637CA5424D +11B82D1137D58867A9BA363CA0E07C005DFEB038136D4FDFD5AF85F48E58E50D2AAEDC886A4B22 +CE2DBFBFD24F4A05A3A9FCA87A95A871BF8D6237C8C63E618FA4DBC9E15ABB677EB7F1706B1C9B +125D4F5E39A168A989FC53D34F45C24A52292627E11F64A7BE21E5A61D4D8F8C9F7DC3B0E139FA +1E7EACB8BE224E679A29DD3B44FB9B29220EDEE3FF41E88D15C914E9E2EA6FBD1D409753D69FB3 +ABF266FA7991E82B74C7C73BA7DEA82B0A0CFBD6291B4DFFA1D68306D24B50906A3EE87A0C3A17 +3ED5A1F983138E7BD4381E1B21AEC00F72873F4EA6C622118F37619F6A451DBC52D2BA704DA804 +17298BB1CD70A5FE38163F83ED96C2D5EC1CF2DC8CFDC9C1A8C2EC735ABBC1851C1A3270714B88 +ED8E2FB5A0469A18EB27C0B191169E37D71D62D6FE06E23B18B4DFC93F8E220DFEC3B57F34657B +0BCEB41F10C0DECED95960DD664C499BC607614D97C60CD7794807F2D509B6589EE4241E4349C9 +33A94C3F1E58FC40D320CFC31153BCB12F7CAE903D829E8B2300F41DE6D21B5BCED26673042B60 +3403B1918E2A57662FA77A21D16EAB58C3C81243EBC05D6922C843EAADC9DA99B83AE09FA329F6 +A6F0B5BA44AB4C1FE88B63BFA4D629EE411CB1EF26ABAA16264204637182774F1AB200C7E20057 +17E5168F766E790C248C4A38B93F5F9B5C07E612D72077C36688A597DAE740D04171E33FF960E4 +4C1E795C1C813E39BE2C0365341D1EC946BD30DC8BCBED7F9B4AFED3283B263155414CAF138365 +2C1935E75541A553121B7FEE8293ACCAC906EBABB343B875E4774387FD8DE4557830B2A8CFA3C8 +4B734F4AD5094754B96AB12E977DDC29F8E43697F737E52A6D9DD9A2D8840906B4ABE9C246F684 +10C38B404FA6251A2E8A31E2126D11929B73ABBC01ACE04A84FF25A8F7F1AE3A9C8FC04C2FF867 +5A41EB0453373722415563EC07A9DF738F7E8E9423DB8A09DC6714472982ED98165984C99F885C +9E9941F2A64D10BF1936C749019845FE5C5DEDF1C057837AE0C6BEE3072C0ECC044B5A33D4AEF5 +3506438F750804B696AAD17897036057E77A0BD7E02F2918CE13A48FED56C55FA447B0F32F47C5 +2AA0F53F03F6334E6C484AF42F265EAD25088232BC109B4AA86A475BC11FB22FEE50F92FB4C4B5 +01DBBE211228D5C14ABA48B56E59A34C813016D43817AF1B707D09BBCA2B20F3B3C90058EF7E56 +DDD4004F8754EBF0A16DBA018F8195FFBFD5668D4D21E7B6AF279A08A17D081811D2C34DA41E91 +3399F6F3B4BE23879972BBA56C65F6612606DD000A6C857F8F283E6008281E5D18828EBC6BCA53 +29977E4C792E468DEDA9BC087DD8B4FCC6D9279BCC069B5B7544585FB305EA3516268FFE6A3F91 +CB25909A61EF71B0016EF040365D193CCA29409EAD1AF569DC290514A10980B94D6E8C609728B4 +A35E97299E3DD1EC28764A71AEDD26C6D76F5276139EF13F052403F529713702E5B1089BAA4390 +78F4D5B1B2FA80FE3CB11B14BC466434BA54F839B8A9C887B769FB59463D0D50DAF8C71FA0A9F4 +0E73AF18FB6C7312FD51D0EB70027ED4A546232410E7D29A156A2291E29F6137FB42525BEFC6DB +3049AFAF2357A8ED9CED95CF7E33FE3845883E35632507F3BEE56533E42DF08FA0183CDCCE22CA +7E06D568D08D161560D106E22E9C9576ABE08ECA90A62510C2811D7CC28730D2BE9A1642052647 +394F4CD2A4A93ACC984C954F0E8C57670C08CF0D21D46E08925ACE4665D9D724EDC75EE0392322 +E9381632D8C287BCEF09E84D42E3BC345DEB24C2AD0C68FF094E07D32685866270DC457391BF08 +15A73D64540C28A7BC178F9A8EEBFF4C4478924B72FE21D51ACE32EF43C0D3628AE353B74FC36A +7267FC679DCB875BDFC77821233B30F41A6E1EFDBCAEE3B4319BBE29D253624E48201DD2EA2498 +34F67D2F111BF268942F6842939365C8E2BC3330F0243CD1AC7C5B62B7F0A2FBFCD0965AA10627 +73634020A2C7C364CDC14EA24B500CBF4A8C79B01D6DF55DB738CBE3B978111D65DB99A78CD0AE +43619F2E28BD444DEB85A7B585B19C594940C45870E21D4B1B110028A4F3A60C951A0884D57E28 +D5E26E0E928619000D5CFF442D019097C45DB01BE693F6528A00120A14845923BCB81F27BBEEBC +15A9FF9124371E485BF4AA8B51B2DA49DE8C2E5F4F1D909B2731B2B14B287D921949115891AFDC +2E9424E11D6A6E01800002B41B60F7AF908FFA016E775C82582A4C15F47F941ABA8889891F9441 +F2C850A29185D4B2B68CCF46C38ADFBF046CB7BCF9B610379E95CD8D2F68ACB47107225ACDC6B1 +2DD0A72F291E27199399F916370B1F7D6F4EC7D0109EEABE3191393C7D6446F86F10EEAD7F9D79 +B5AB0C053768EDBE0E0F211F306507510E589686D29D226E55D9F07696A144BB4A6400647A8743 +ED136D3C5DA6B183D0AF2B565D9D9C345EAE5B63BABA6867BED519CFD46CE594AF18AB49DA423F +0C781EAC2BFCA83F4B11B431C1DFF69E12287098A487BA099786DE0906EB2806278912B958D9D0 +CC168D6246251F550445413478B8A460A24FA8D80A0924253985753DA56A30920BB237E4521C2A +78B4E79A256EB66A4B2061F4B71B421D85223FCC8DB4FED0C3A4C4918FDEDC558C57850A62917A +0E57EA5C771D64A137E17D12F1C5EC08FDB94D1232B090127259DF02581C2584754EEA872D88EE +7E583D13C54D278DCB5D6AAC44F68E76186133A3EAC6AC3D22FFDE29D0EE251495A96DD973AA89 +867C6BF4A1B71B0956F32CA07D796A19A2B64CAEAC3B04AEE03E943B6FE66EE9840DDC086E8C80 +A0849F14992530B74EE8C58CA3F4E765A7A097D98D45DC90C48A3F6262E9999BC34EBF07D5DBE8 +7185B7CC1BE34DB8D09856E84A5B9B30C01CAD5E72034433045BBC57DE1DB1186BA78C08B6B224 +07FA803CFFF1CAB082856810D5639AF9E8653470B3FC95E1CF8FD80DBBB597FEA6A4E3CF584AFB +4A88D02C1EA61B65FB0CC7A96EF09AD692D035EEF27EB3BF2967364A42DF2D7565C61400B0E338 +168B81E69C07FCD2CE5B20526A707F36786C0C6D53B7E4567D41DF6435B4DCF13256B7E802441E +4C86A0A329EA7293B1A5FA8D532FD0F529A2CA7CBF0F667C784826A1891E8FB93564158B14EB52 +7AFD02156785CB4089DCAA8056EC101F85FCA80333A89AD17EB94C100BDD0552006139C9496EDD +FFE06E4D10C1258BC6912C5889D3D9108622BE978F52E855729C691DAFCB358169154A78659CEE +C855C995B334280BF279955835BD13DF6AD0066702C7B2A7804A223947A5F8528F0E2A962F76FF +2B41655FCEFD02F3F6F8D848D60B65399746806A9A4E671F62FD3A46A8766E6F94422B84E9E3CC +3F1ECFF2C86FD88EAB7C5665743F5F7E26F34864C701B57625A79CDCD1BAA2A43F482FAE42F9B9 +4BDBAA91ADCE7780AD209D2C19994574B9BBB132169B488E6BA22ED05C971D2CC5A9A0262844B2 +1698BA297412019CD7F6C796944202C89B7D7B188DCEB11C91F90F0A338F62F636B759924BD999 +B488C61DDAECC4B68E0104D51C9B8E38354AAA61EBB5B53A10F5798C3E755662C2F92523CE4710 +14B322D56181A39DB9073EF5CF6C99028C66A48DCD259DA4A9CA17375AC33C1AA56235BF1A57E7 +B3872799CCF1AE0534C5EC3AAA96128DAC5592C6A3AEF6AC4EC77F1CBFE1F7CBEAED6935913164 +C7CBAAE272A953ECFD2F9B95E63968190066A66DE5F87CDBB126AB5B806DB3E8F0665952D051A3 +DF91F4BBC261BAB836F921DFB0E6132283C40B9BE25DBA4DB5E9561658D735F4E7C635BA312C55 +A499A10352BAEA349607623649CBBD0AEEF6DFD9F436CA20A9A887A13C8B1E40064BC2B5E8F788 +887C4D1B853C40D74E4E759D417421FFFF7B2ABFF74E70FF8446E268C784BE7BF93CF20D3B085B +B4136068A30E1471895FD2345E05BB57D5C32F1EE6C3A288D1BFECA8276D35139876240E36DAA2 +99C18AB7A45DEEBC470F8DAFCE5884FA632F11845C1B28A3B39D820CD09B24ABE6BDF342A90D1B +E453764A959A0766C1F1B6F72579977F6BAF22C2620C22D16E52C78220AED5E5B0F977E69BB95C +A44F67FCFBA74F292773BBF4590773FAFC9632855223B640F8B5F3B991685215F92F1751EBA738 +5C09B7CAA12A617A4BA5497747AF13918DDD1AD89085AA3510443E8CD9B799F325AE43863E7F02 +CBEEC80A79A785DA41FAD2572E57A19F9A8DDBD1A12004F41158077B0B9D67E9CC4F9F10C29502 +50C74CEDA126664FC366E6C8E5D6C8DA0E935D68DAC7BEFFB648FC6215145ABA587DCC95F2A0BC +5E187C70FB879E6F75FEFB9FF1A09D4BE80EB65AF18BD7CF9ECA28F44E49BE391D4A95633B1329 +06A003D3879D1DA13717502851178B791137E3B8D7954BFB34E55B27FB430027D6A836C5773184 +C9384BC708991D81665F7D94803EE28BA76CD43DA908B279C772A4249E88DFC85A10849607DF1B +CA4D481614518C59017B1079ABDD1FF4A5FDAF8053A6225CED3FBE6F61A3404C797A61DD6845B4 +261B7BADCD7FBA647562514F72C0B2EF4077DA86BA5A71E192B2F4E7D9CDFDC1BC990F4A295CED +BE13590B98608C1B1A5F8E2A1690A4153B9304F5A32C764E0B05BA8CFE4907E39E33D69C4C424E +6BE32F2C298286EC2C7EE5D6C1B825DE78BA87F2E4FD59985FEFA23933832A4E61A21617B519B2 +9360D57CCC21A685DD415048A06C2C8F34A3C98498CF74CDEFD3E5A595140F52F02B47A34202E9 +2C07EF8E790186E56920F5967BFDE5DD6E2462DDCE6ADB38FCC059E189F8DA70A8687940CF9D80 +98FFAD9D7929487A9191C250ECFF0A90012E0FE9F902F78A2C146ED6E5420C00DD89F7415F2573 +3B5146D271A89598EEA4005DB32FD27DFA0E293423E4D433DD78A31910988D75F2726B3B8A7719 +EBD40A889AB7E38216F1301D6FB53363240E1A07C2ADE47B26D4B6B438FA69786A582C72855A76 +77E6C51555F39F3EFB53C79905BCDB3CD88D3A5801F971BC8809BF73D384B53C1E03D65CC34039 +2A7A564270526CBD6F9FBA7871BDDE6D9BE23C38D5E53B51CFE4EF588E519148ECA0649AAC1E1A +2606EFFB8EC97C9E64D46E9BB5DAE9BB73CFA6A9CCA578DB26ACEEB662D020F9D2F163B877AE89 +746A4B63040082385DF1C5BEC77350F9F5EA41F5941C90EAB5700820C0C29AB8371180F30BF009 +5D7CEF5446D549D0931961B246DA8F1C3535F8967D64FD070B625904D7D7DD6E31B9E410CF3D5B +DBB7B6D6473771B85F8E2924CA2F4D8DDFB2DB3D3E4CD46FC27C65F7058E8F908DAFA540BF2726 +A5A1A66DE298D6EB770FDD4C2EB07F3C81F190712C2C5253379D518A931097A96866C1D73AF6D3 +587202857D0A83D2A526D281B42AD8A29E5084228C527AAC631E85E9FBE26AB60F14D94FEF2E3B +9A24EFF6DB66998C5E2D36966A11AF147CD293723A5F2F34625F6AC2C4FB51D0F851AA5B4B54CA +E1C8002ECE653890BBC684E4D4EF528BF815BA9B3DAC3A6EF34EE74BCEBD75F35F370363879C6A +F67E849750D4953A880081DA1B64582E8D790C288B65DC1B69BBCB0630C77ABFDE5A40E0630D90 +F542F09AAAAFD8BFC57BCB9BBED422602DE45CB377C2E634B47AA83CFAAA35E3C869C0819E6E0E +1CA918941B15F66E9552672110FACBB538E8FB8A7CE8AEB2FF61EA94E098B89062FE76EF53C6E8 +2CCDA0E8A19BCA2B33F4671BD38C0DE622522CE84ACC4114473F10554F8B13AF6E50A8F7443EFD +AFEF23430F4C2AFC9188ED069E25647C5D89D657E5C570A27A4EE5981E1D9D317CC90F5B25695E +9E1B914773FD447A91E76E5E87E6613127CA54E8AFA17052094F6467438B369C8549E5A0A59B04 +D32B5A0B02FAB315F25CD4C7E16FCFF78544D88D983EF7C49AE1DDD72275759ADAFF6F206B563A +5912AA256CFCB35CE30CAFCFA481301F6A25F673A8B90E9795B2981601BA88400DD247AF468011 +8C698A366B875A8631AF3A5B4CEA30F1B98870C096B0285AD22D2AE0C3E7C2600BBE9DB96A9A40 +96BCB3275481F63EC41789444E088A98C3564F22C7CC1D5D343EE6E3494E46C99B1546AD0FC7A6 +561C239B5D233450A80A13F4DB163FED87BFD98FAEBA9178CFABD4B5828EE864403949429940E9 +BF97455B4B10F6FD8720930BE10E639F7173B460F56701B5D4AC799A794C9CA075D34829B98461 +0FA438749B33EB9FEC2BBC2A2D354DCAED8F46CDB103EF0F64670EB7FE92FFFD4734BCC9F5B68E +CBCB0BFF982FC7558774F9814B00802B4147A50F96E52FD1E107E1BBC7CD878D9BB194A3280DE8 +0D3BEF8FD0CE0FBEE8919B8E6A9C8A45FA2DD71197AB8F15E122B6D96347181D1363A190CAC8FD +84EDEBE0752BD3EB0312C7EC7864E68CD0962B3AC5B919CA24A3F3B75729AC6578254974D749E0 +9E460263EFF0F666129514DA59329972C02FBC41C2965D3F2C7AD1B834D210EAAB5FE5B50DF9C6 +E16A3DD52EB2A3E703364958B977060CCEF91334232C9E71E27C03A1DE128CFB721881902A1C27 +5FF14F0FD65AEA05A3A58241E874E6222596AB117144C5255EA57322E49F07A7DE465C39DF690A +6A9836B10E035928E05AD103954B6BAFCEC520D364A7E4FFA27EDB5299F47ADD3009FF45463D38 +8A3C8571B21DC64DD8CF7028BDFEB4F66D105BACD33DB5E8A00363B47B9D348AA1611C059205EA +3B5897658160F069213875205D4979EA1A1F93F196A322B6ACFA8545EBA221B363A4F6C32C5FC5 +FCB4E4DB0E2D103AAE01AC84FF8B1BF81D05CEDCA5A356981AED6A5F4A5978ED737CEE2B686275 +2612B63BB055641ADE4F9DFCE2BE94F9B593BA495A1351626702E648B62E781885ED4770A45940 +FB25E5C4DCF2CA34BCE72693C063D1F130D728D7D04729E8005CB872D264AB8EE6D125962DD6BD +27C0BD80247AE1DF710BFA28C8A5E32CD34E45D60AF37EACBF49682A1A76B15ED787E1E6371B5D +D56DB046DC21B5DD9463996A4D805135A4971B8C187AAD32C422087D8FB8B46B5B472BDAA9AAE6 +85C6C08431BE762313E443A37812D19F535AA285DBA7041997EA73498D5630D24F727335289DAC +BDAB419E8B044E45D08B45B24134B5BAC9CF14D48DE6AB4705607E8B7ACFA9772C1F4E86A35383 +FC11C4AA84A7C734915A2A5EE0C630268C6DC794DD6164C9D28C33E6208266D51ECD5FAC58C455 +ABE4DD2E28AE428BBA827C18F347127E07E9E14BDF6FF4555E4E6C79697073F5D01927422FB534 +7E854223D6932003F6F7F2B6BE4FBBAA65F2AF984012ADBDFE1DD4AEA80E3CD859BBF018084B8C +0E6D3E4B81B9F2023F818BFCAB27AB55D3930F03EDDF80D2274FB6BDCBD888ABEE7B9C3AACA6A7 +70FEB66CF346D7545537531AC4FA6DE2AE0B5F0751CB10EDCC047527117F0974A8E0E48413155F +B8E15D487942B6AEB71989CD74C88AC77809E1415C14A5BD4776A2593692BAFB9D3F8B398D9C0E +1DF346BB9A75915575B2ED1F1EAE8BA4DE510ED7F5E795314D5E5FEA572DDE48FC742F6318CD26 +4DEF0C83C92032465C5209ACC826D2CC9507097A18679C44329E25C87D98AC7A007B4795FA3F14 +E93993E927358E2E5142E7FB9CB2E62C0AA0C494768014DC0FCF8BFA1B299CB788B74A660CC404 +F661DCF070C900E4E418C0ECEF6BB7A7572C2A632A9FB4F18C963FAD73B5A0C863ACF3203489D1 +EDE5AFF38D67FEDE75F17AFE06F9130700BD092A55129DA2CED26CF10C5C088FCF82B192AF54FB +BE884D701A15D71F21099303F9204D0CEE6CE1CD4491FB5B0285EC589C17079AA6599ED30377F6 +7538636C92BD6D49B53C1671DDA036FB4A9251BDDDF41383F818F332AED33E010C642605051FB6 +5F1E68DDB634644026B08ECE7608AF5AD2F648E32B6DC1ED202F02E12B31E008790FF62B097F9C +C871A36A23737F8DB0EACCC75740CEDD89EBF1D1619BC558D35FC49FACF0C4696F577674879B35 +DA2342F894FBC85F7EE7F4796B680D12ECD8E344D5FBA7F5E56FE4D5C138309CABC4871D81134E +C07D9825556F78F74C9239BAC7365767761577FDF31609C5C884CD95571410856CB2A87CE42BD8 +9F92B8AFADFEB5BA618BA10396AC6B31A4E87C2B89B521FA100D8622F39C80190749C5E9C26F9D +1040F6B90D2D380BED092EEA62D6BBD648B1021719799FCF210C5EF3BAE4D44C4D798D6529238B +5BA06D3C9F9AE5367CBB81993C19F9286E690DE1345FFDDAFF9FE36E +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +%%BeginResource: font lsd +%!PS-AdobeFont-1.1: LucidaSans-Demi 1.001 +%%CreationDate: 1993 Aug 11 21:10:03 +% Lucida is a registered trademark of Bigelow & Holmes Inc. +% NOTE: This is a partial font in Adobe Type 1 format. +% The complete font in fully hinted ATM compatible form is available from Y&Y +% (508) 371-3286 USA, email: tech-help@YandY.com, http://www.YandY.com +11 dict begin +/FontInfo 9 dict dup begin +/version (1.001) readonly def +/Notice ((c) 1992 Bigelow & Holmes Inc. All rights reserved. ) readonly def +/Notice ((c) 1992 by Y&Y Inc. All Rights Reserved.) readonly def +/FullName (Lucida Sans Demibold) readonly def +/FamilyName (LucidaSans) readonly def +/Weight (Demibold) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /LucidaSans-Demi def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 54 /Aditi put +dup 39 /Alessio put +dup 41 /Ali put +dup 47 /Andre put +dup 49 /Andrzej put +dup 51 /Angelika put +dup 53 /Anton put +dup 55 /Ari put +dup 65 /Bent put +dup 67 /Blair put +dup 69 /Bonnie put +dup 71 /Brian put +dup 73 /Burkhard put +dup 75 /Castor put +dup 77 /Charles put +dup 79 /Chi put +dup 81 /Christian put +dup 83 /Christoph put +dup 85 /Chuck put +dup 87 /Clovis put +dup 89 /Cyrus put +dup 189 /Heinz put +dup 56 /Jacqueline put +dup 57 /Jagannatha put +dup 58 /Jan put +dup 32 /Jeff put +dup 66 /Joel put +dup 38 /Johan put +dup 68 /John put +dup 40 /Johnnie put +dup 70 /Jon put +dup 72 /Jonathan put +dup 44 /Jorgen put +dup 74 /Jose put +dup 46 /Josh put +dup 76 /Juan put +dup 48 /Justin put +dup 78 /Kamal put +dup 50 /Karl put +dup 80 /Karlheinz put +dup 52 /Kaspar put +dup 82 /Kees put +dup 84 /Keith put +dup 86 /Kenchi put +dup 88 /Kettleson put +dup 90 /Kieran put +dup 98 /Lalu put +dup 100 /Leon put +dup 102 /Louis put +dup 104 /Luc put +dup 106 /Lunjin put +dup 110 /Malka put +dup 112 /Manuel put +dup 108 /Marcy put +dup 114 /Mariusz put +dup 116 /Martin put +dup 118 /Masahiro put +dup 120 /Matt put +dup 122 /Maurizio put +dup 121 /Sebastian put +dup 97 /Roger put +dup 99 /Ron put +dup 101 /Rudi put +dup 103 /Russell put +dup 45 /Will put +dup 105 /Sam put +dup 107 /Sami put +dup 109 /Sanjay put +dup 111 /Saroj put +dup 113 /Saul put +dup 115 /Saulius put +dup 117 /Scott put +dup 119 /Sean put +readonly def +/FontBBox{-309 -205 1151 967}readonly def +%/UniqueID 5029006 def +currentdict end +currentfile eexec +AE40F8585C2492B57FC8C19373E315912C02C4E404DE7D857CFC574863562CE335405BDCD8F11F +96FF6E8F1C7B7081B95AEE4E19EF19E210EB377985E3A9C4049662C57E12D3250AA62F97535698 +C97032B09BB86FAED093CD2338831E8859F00CB0C108EB8E6EF582C1A64E00289B62C4DD3C7ABE +9D68E37629997DAA1BD0F494A609A153E01C0FC558EC2510717C5F3C0D1704E13894839A500B55 +234B67E33C3EE5A6E7E905C23EECF0D7320E431F93A893DD533D15A7D941B043EA7698B0BAAC30 +D437917A0AB35CB6E43354D38151D2BCAB7D2B5C7EB260C888CD713A2960FB2E510299FADCF020 +C4A535A0791F9B9DA4A3D25C989EB20DD198AAF09029DE3109374D40071EB6255A9B872322B00C +EE340A09F572634C77960BD50BFCC684BA77A4D15CEB51519C9728E8A3D90555B3EAF8C342A020 +6282A97EDAA25BB74F1AE6F862477A7AEAF1A2743843460B3EA6653A0E7348D33FEEDBDED3D45D +85CF2AA51168B0647C1DE8B3C9A78C2EA43726659F3E8EDBC6A899F644DC2932A855CF3F64B115 +B46D556E5D9985D389F7F250B017F690E2D057D6C651FD591D0186F44E4E72137572BB6C02B816 +DD19473CAF196D22DD8C2CDC3EAB84CAA908B1895059B7CF29D716DE195A6561EDE1D69FBB65D7 +CC82A9A4661DF15F693EE6E383D7B8204B693A7B0660686A66F634FB881D0DCB0309DCC421EFC2 +F0AEACC7EBDC0D36B4B23BE86EC1BF92CA08E7F7FE75A9573149F4DF5B0FF2E3F1B7152EE18AA4 +4C79B6B5B8ADF21B9D463241D00B8D0B1E4C53E374EAECD2370C762B7B6BEFF36ADA6C616B9395 +16561AB36577ED5709D2AB556D6828CFE3312375F8352709005A1AB5889D6EE142AFA34C135FF6 +A16327F64BA637F66BBEA267A0CF74E93C5FA0BC0025041987825AFB1AE5BBA228C40BC35EAE0B +620B9E90510DBD9762195207113830727F293787D784CC8B3096AAE08DAA086D3F2D02742EACB3 +7D210FD447B489559EF0641DAD182D275B4CFA7311FA695AFBC9B689CBE20DEC441EBD2D6CA829 +F3C9D7A5F0BD06082A0348E70A97A463340BFE7B8A183D6E01735C49361731501A6BE18C334DED +5FDD2E20E0DC11010983CA608F9A6AF1E2C5887707CD4E1EB02F38BDE030DD8E0DB7D9B39470D9 +993CB97420EED3C2238E2D9C5558794D1EA89D7DD24C8E426BA238743695FA0908AFB11012C071 +2ECFD83A269452B1DBE37E142A6A45E05E4D3FBFEDA1B8D3B3A8D165F24B8ECC37EAF5F56DAAF2 +2FB1E178D15C742CB146B41265017FD85A6EB653C0F69DE9EE0D5C488D1E9FCD5516F6B8721DCB +DF10E9A94F678124D6668A291B25A3E898923040749ED3458B9DDD204B196470F18DB90B3B0B0B +62F4979942FAA9F1FC00D98E345560CEA1D8C89CF7BC141ED12696AB78BC44B2483E3B5FDD8F8A +257B81175F5ECADB194647FD147826560D21CC2C1E619079C5E03D47E85014CE98E7AA57F32B97 +0F7211D7FA44C26FC12A0BD6F12604B8F3EEBD1DCB0E8959857A5EB5FBAEF277ECD1AC6B564658 +A547C9306B51C96E76D46D4878C5B0CA4ED3EA9800F9797A4B5D18D91244C74DAC07C659F3656D +2C2D9B3CC8B2F6FAFA22E74782D61492462936DCABA1363C51EBF7EEE92BA72A7A8E27C733D488 +C9363C086AAA51C07577851640AA5232FD80E70934CEF2CE74F5158DA22C7411989672133BEE50 +558A852537938BED9A34115416DB0E62A0CF53C5857C7280605EDB2DFAFE3B15A82F64A2C541BF +83903E3381468B8EB372547B548AE62E16131D0E4ACBF1575E3F609835D9DF46FED02D58C0C3E1 +804DA0DFB55F6335B910691A3F5E3709B83F3B9FA35771DA4266BD8ABA9FE7F42F5A877D6A4457 +BFC547DB8988CA6E77E04FF7845E90E7B72CCADE8A5A14E594E27BBB993E4F73FF91CFE0306C23 +A8E6B352A0DFFCBFF83E4D9E6F7C0F05EC7EEE1DA737E4E1B5B70243083FF2EAE5F5F88AE7F040 +E7D8CF58D7AD5A2B25B626B4B5525377CA40EA542236128AA40E592421D0D871A37C34FB45DBD6 +A45451B15298530EA0E1DC851C212BA010685A92B1F805547CC57D62DD2D7CD4156C420D073AEB +CF0CDBFECAA3AFFCA3F1B1B4F817DE41535B77504E891DF0CB42AEE39CA3E37E1B5F787D467CB7 +306304950015AA42A53A340AD1D7CD32F2C0D2A7EA8A7297BD0FAB1B2FD027D0FCEF35DC8A32BC +DEDCA3F3702008ABC82389A0F12F70859E5F4126A88CA4FAC548C2515A46A3FCFC3E958575CCF2 +30858E0465CF6D43D41973057077BF986E4DCB3078CC14096CE6279C919082DC237A9610589B29 +E9DC232CA680CC17DB5C545BE9418CBF16AE837E02681BFC873CF630D9044524A9F4373DF78A7E +EC5881CECB664A92123639D62758235DF94C854A740A4D38859C9386E1431C5152331D71AE0812 +CB23884FAEFD580C53552DB1D51BE03559E7129A8642AA14132AED38CC4357259257698DD96624 +76589CD1AF7D72A53A8BA78A6E2737AADE9D3D880140C3907D1C20F6819A0F6465686B6D30A4F5 +04E0488F5C8CE701D2096B45BF447743BB1D981E52C65BF78CB8F4D4BB5E1E4B0E3F48CFB19D29 +9A4210F36A2FD8557AE2AA0477683FDAC64590A3E6ADEB3E3C24DEE4ED90D8A3EFBC3ADB61346B +6E167CD20F60FD028CF251CBEAF221F423505126973808297125312ADE2F0337C0079BA876BE4F +94D9F38EE5165BA3BF025C012EF13CC89451C63D943AA2D0C40083036AAE18197E87AEAA4E6A4C +678BD07DC68D87C2B18A5BF0B371789D216183C02DCAE89A8BF26C15B6A3ACB23F406D77AD9869 +B02E9DA376F0F2299767CAB7DCD0D8330D96A43A1D70EEBD80362872616E3176C3B6CA44B5A8BC +9C0171B08FDCC575ED942B90C55470C69C3DDB7FC6CDBDCE4911418054C7C723F1CAC9646CACCD +23F594B344129B30F7569104989A986099901CB110CC535E57D6AA8CA80FE75C4A208A7B5E39F4 +019D8D8A515C0AAF8AEC711A55C6C0DAA0F17C34C3066683AD4AA6A7D3EC57F20D32E15EDCA57D +61FCC7C8F8AD61260B574593CDDC128AD465C59A785983857898D437017360192FF44E19998358 +6453672475B760A3F8F6003D3EFA6D22505EE7A12ACBDBEA47B63E5E3540968AEE5B6E7FA8774F +B5410F44F9090E880D2B6E7E7E6A7D1D4D717B144D8A7E4DB66CDD5998BE26621B9F4D7C719223 +B7A5AF8EB116AA03C6AF30FE61E32A62B4969B4429D0D101889F1BDE8EEF0662FC4D64C06665DB +D474E811F87D31BF576271A7A3E52F7990BD79E96C3B4A936E2B1FBFFD2D31509CF7F5BC739F4B +7C0216B5AE0FD8AD25FCE86B33A4D22B2D616C96AE155DBDCD095A77AF84EDC4B7979B078C563F +8588CD016B3C08695D31C8EAF1D497C01A9737F6C1AA4626BA952175B6B898FA389E9493A8DF87 +8D4A1C38C0CAEA89B225567AABA00DAA5B6F3E038C0F3198E8B5CCA6302646EB464F062D4BBC8F +A8446418626319018C9C8CA08B1C42D0714AE74E49CB33A09CCFCF7A208D1B7212C255AE7701E4 +E01D7E5EDACC772C8DE238B4DCE0C3D6A1C7D55FA9819A3570718A6732AD4746A71DACEF94E459 +0269025736DB98D2F053305C27D30D50DBACD697EA875932778F2A544C9460A942DE2DDA61AAB2 +109FF6363A5EE7E6E336394B882557F7E13F3D740ABFB291290AA5585922FDC27873A8B29525DB +ECFE5A994BCC926A5A4B34C49210279F8763281A5D91816D974BC5F22847D68DCB911D265F7B02 +FBAADB2E96FB0E46DBA70031B7D7A4BB32711C127FEB546F52C1FA36C7993D40EE93C0D4915B12 +FEB19EA6972A3651FDD1DB039B1507600477877D43AF8F23B4D41284F50621DE3902A3BFE3BDAE +B057C127605869A6FF573334D00AC079DECA898EC5E7C28CB76B23A617DCA022313B449518FA4E +3556B2335E4A45A8C61121293C3BAA23BE8ACFC53658B3617458168B3F5FDC321715AF886021E4 +AF9187E2FF6CCC09AF7FDD019556DF58061AC74581BADCA856650460E5B45C9DCCE4B4CCD18DE6 +5AE71D2B3D4F472FD56B46DE9126E08DA99B91A758BD9A94E28A8D951262F220111C3301972A7F +49CA8615AA7E7BA61171300F8E66A9BA949FAC666EAA23720CA825DE4D0F6A9ABFFF233187791C +E57E3EFC5FDE95D277D13CA6112D5934D6E27C07B614971D3AD7FD74CF08B4CAC94F1DE512019B +CF2400998F207B27277C42562C7EAADE4D090D8261C818DDDC65F65CC793E5A479F1E03E3942DE +EEDBEA85B103FE2BC309C6B16D87804C85900E39F51E96276D9BC9F62825D42D1EAEE49694D61F +AD59AD71A3EA6E53CB0C06E7916F0FA7A3BC0DA39E224ADF4F23EF2A15A4E0A56D9E38D4D7454E +CDF3E8D010A6950975E1967E54F4C63018731DDCCF5F6DA12B4D2AD4A228473E49F6EC799D1967 +B7F333ABB650B2B573F24B755BB71607D20FE142C5653358714EDEEB94D1862B435C877C80C1DF +7B02B148E8800CA3A1957207854011A7EA1AE2B831F2ACE4D56F9A2CECCAA4BDA65C6CF8CA936A +05FB76383900D5CF4CF85DA2F2D4E0E10C43B2FE280CC15C75349B170E87909E7113C3AE32E62B +584D7D350D1097EB7161C2DDA01D1CE66B622D041228C3A93F6FD48048ED070EAA88B5AE5751B1 +9034DB79FBD58D16639930CDC92B93F439EF6E900FCEDE677D1CA321B93FEC8C22B6563A069710 +54DBF7D60967EEF580203D0D4294A16C912B06252B97ADBBEA61CC04F9305A249E88B95ECD4AF7 +1F6331BB6DDBB4608CA1548E270CB79FD972293B9EF8DB393898198E0ECAE14C92293506C39170 +5CB3B0526B95E3BE6B8D3323D30D1A8933CC0C558C70D22736BEDDEFD0E5DE972D2BF42EE9E340 +0F64CA97D4AF620384797F9E17BB831776A38A03E6C719917AAD65B3FE3850EAE611B9ABF47678 +D750C0E55CDFCF90E7902A8AD5F0CFBA8125F9C35A49BF4332CC5BB1AF7E6601046E9DB0AFB3B0 +F047A17F1E3346F5B3C4E4817A6E75753A3A66FF2F6226B57788DC7C5FE3352A6DE50E7E44723E +B4268EB179EB916BCB57F3C7330323B554C5DF750B5B84563DB7248137E312AF17D2BFCFED3E7F +09323553E04E4049B05E4F8C546D198FCF51CAF6D3ED424FC973C3391D9B190E1ECAFF617B6E26 +B1F2638FB32391EC52B27D0C353B9E7085B810276FA4728E699E50BB54274130A2B290F8B2E49F +5DCDF560B56DE2A43B41ECB94FD8F4238771D8B55712DD101FAB9A58E4319E58200776583C35D6 +0EF2D7181170411BD45A5C2967D7F19487E8C2B17A5483E90316EE7F6ADE0C11AB7355BC66E021 +2BCD832EE4AD4DDDC4AD33DB5358CA406876B077CD8D4CB77D1DDFEED860DA562615F51A54F596 +C474DF3C2D253EEB1E9B85352211F2F627927893E9F59E70CD59B2163E35D0C72AEB17EE83CF1E +F47FD6ACCAC3667E5E297DEE0E7F88644054E99E90DAFF89448641620EB4D165D629A9B59A0561 +A144A1CDA31FA7C64E9003B9F66C880793D1A968FDA68159508B61D90C52DA56A5EFBB937D03EC +C3F56B7C4E58CC65ABA31D9EFA6F49D3739ED898D2B2FD941180BAB89F6BEBFA09F2AAA3F543B8 +447C15E372EC5683C81B987D492F6FEE10317F2C5FD884F813C4E281B5A7D120C24D1C7844CDAA +5CFA497E5760A150E0D22A548AAB3DDFD13429A2CE12526162A66C45B38824E56D4CD47B6FBBD3 +3D66795ACC5DCCD1AB9BA0C3D6E2AC6A8E0D14DBB9F693CAC9F3FF65BCB714253A607DC2B25B15 +1A7B07690DEB14C2829AE2D043812BDB6881EDBF658C21FBB5DAC05326BD8683B2506ACF3B637E +055E94B6141C24EA1BD6CD7437CB2713700EE829254EF783A926E2768B06545FE263663F79CA3F +D4E9C750BA92F6CB2CC44B03D679750FD68524246F4C63CAA44F8C0976EC39F782131014D136FB +96E441F9DF8DA9BE84D7A59497AF90656B9F308BE1B909E51AFE8396CD977B2BD9D6B1D248C594 +4B3F0DF9042614F333B91C3511DCBFBD6DEB5D5F323B7F021DB863F63DE2DC9A1774CB6598DF80 +011AEBDEAC09EFA9E1644FA39165747C88C8EA6B4AF1897B34E805BE0F0F89FE2B9F71F4236058 +E5FEA48B32CECA6C5C4DABD7A2EDE43E477CB3760628DCD2B64E03ECBD3D28D9A13445ACC39C3E +540D0185230D1E89750D1C3DFB6DE4DC9A258156FB559870A29F057121419228AC452A0907E683 +74F58C6DAB6DFD46FD4B7B7417A3539F5F2DD26F8FDD1723B6C4030D86C352190716EB980791CF +2426A868B756255AC3CE719D37C81D8BEECC143B623880C1AC8530698369322B6309C672FAF6F6 +0C8BB5E787447A61E79877B8405C652A5A71F85B222F724EB406A8E5451B8AB3448121430B4ED3 +34299EBF820709C1519E35803396B3DC845302F716DECFF7B34E53E60EEB0C30AFD9862749DA7C +335475A5D432D4161BEEA5D72A3772B499539CB672E9ECB32CE919DB201E20EFF2555B71B569BF +CF8B902564763EE7D559D5AA9870837679E4718BE751759A9BACCC51A9061196BE327510BA4865 +ECD5B2A3593234E0E6D198DB19D2EA74A437BA555CD8FE70BA380B852858881E83A44FDC32FCEC +52BE9A0EE93ED500F8BD0C660D0894034FAA09B92BA8517CD3D294D16EA7F0D038BFF2B744FFE1 +2817B83C7F0DE337F0527433A982B6B43569C18D8D882BC722603FD1A9BABDB464230FA2B0C9E9 +13A47D30EDF69AEB8D6737658718321A34A8D5CD33FDABDBE65A9E9DEDCA6F80ECF455DFC6A80E +28687F23D4ECD8D8FF396567EFA09929F748CE124D08360CE3637BCDD08D1A9D54EFA80EE56CA6 +43360FEFA5E987845150CCDBC23E5EFE2E3E2F571C1CD5F838EB1884BC39387CF19A0B4CAB69F6 +829987C0FB8634BF8F8424E649F9CFCD769E96A040B1CC46EBBA3B17886302C2C98D02ACF9ECC2 +0D6495C1A80E2018B1267BDE4D82C9AEC7E284BB825E6E500F85E5554E9E55E7657947879BD719 +81582946A1D6F0D70B878B5E280E49C23D3C5F176E43E1878F82210FD465F347B37041FA8FC749 +20A45B3D73E71EF44F50CECFA9590BA94CE6D34CCD4FC878DCBCAF0CF713F4AF5F54FBFF508C42 +DC97117CC92442E180E4B2307A2FF364E89BC538501A2E3526C77EC08E8B211DDF42042633C978 +8EDD3A24389AA1690ED0715F531173163A95E36E87554924FCE4879941C50214A485A26C04960D +FBD7A03B9AFCE70866723375086C6DDCB249AE3EEA17CB1BCEA611FF44364DAE6371AC79652C50 +0EDC774B75B790B204C9479F3CE3030F6288D1E2C2F9F083F990F217DD42AEB8A95933E7A318D7 +CF6656D9C57DEBDEAFF6D532CF206F4BFBA0EC53913CE7D9E2BC72F5BECDC0CCB313131688D769 +12FE09419536C188F34C840608A17BA22DC57A7DE9B758E05C3800A8BCA77F95C0842094377A16 +B80DACDAD77A3B65651CDF7F7C4550F1214DC47D6E88C006AC5D5066C3AEB2012F2E0C39A055FB +BF174FAAC6A9A28D2434E03874446E15DCE7ACE5D7BE7050390186125F0435D4024DF4B5C25B16 +719B3240ECE2B00C53EF9091E1043313BC83FB1128F19DD592BDC748E1172069E61AE8A05B6FA2 +73CD67F68AA8F783E90D042C630811A8A71C0E22A6142B17D6C2F443F27ACF59C6F4474014DCC7 +FE9257ECA7B4C46470DAC7540C34A03B7FC1AA96D6B48179D28A0BFDDC35BBAF155BBB5DD8D40C +2F3CFA7719E0BC7832EED6A37702223D1466A8B4FAB31D2D91AFEA30194B9DC756EA0931A28D92 +8B68C0E09F7940A1BFB8817CEBBB0A5A4E65CD9170014C9577F321AD444420BC7522D91672DD1E +E7517AB30B7DFF7436C75999DBAB0F7B3A7D452173F9FC066EA136998AB8D3A46AF5CB99ADE3EF +F0213AD487A7C50A07E25B5363F2C3E47B79961BC58B4FBC206F8C17D4897A26101714848ECF2C +D7219D372F38188AE6657CA5A9D5140B832533226677A992CBD205BD8A7EEB8618B6D2DCE91AF1 +8401EBF19DB900BCAB2C7146A0832A3AED3755B8906C9A0AC65CE2FE44E3DF2F68A75FD285A1DE +60FC073205DE3B4BA9ACB0E06C29D5818F55A9DD737F2069BAABC52FD9B3F386127B9DC32B24FE +9F39921778FFFC702300C1FC92E3809379FAD3189B34D98EC371F9FAD6763C81B424B0E8339934 +9282C1204BA70499E24CE718B2010FC17458D8208492EE56F9DE924FD848705969B622BB0F2481 +6BD0FF48BF235DD71BD6F61C38B6294AEE8676AFCD9B8564E36EA6A95C4876872B94C615DC0994 +D522CEEC5B7CA9ECFE9DA4A70613537A1FFDDCB26A909A0C8512796F70FCE357472476F30C9D7C +AA718917065C69D2EC1EA9620982EB4B869035E7183A71A910212F18BBCEB054B9BC7419E45ECF +2E0C600F865B44538AEA23950B5E4010BD45921CA12C0C1968C65EB900ECE26C5AF8D29D31346E +A2CA571A9E40938D85D4483DD894907ACD68738986D864190CE11362E7C50346473639BF4BEF9B +81160FDEEA602FCE03FA4ED3FC5CEEBD50F3576CDCD4F21408A2D80E265D5D607CF00CF15388F2 +C6EC9A1B47C77DCAE2E4F2F978508923FB4AF9CE6C8BD1941F66866465D9826879918CD49BBB89 +9A0B12CDA6A069B9944666479515F2B7E39F94202D4B369FAA1887EF5BF5304E8C2B2BF291D6B1 +4E656EEBD98A422438DC43124E73DED0C86F71F98AC1DEC79E65C71AE390A9D7BA0A2A5AE8EDD5 +5D22DF7FEC889A8953ABC0B0BB9898FAC1CD7B25263F7AB9DE276B20203ED2F2F43E7D52E442EA +02EA9BD77721C48D819AF6A522481180B75C940780AEF72D451D556A9B6781C45369984390B393 +A873A2E0ABAA5D91DF10A1A29E7AF13F74FC678716FAAD7523B721B2B9C0C46C358887D0A7F655 +40E317B0F9B6359CB0C7FD951F28FD77D33160CF072D79559B31687A19AE294FE3CE1E9D30B083 +F955672E43D601A8FED9C7FB8C735C681B612B327D3806794D061C3C95AF819B08515A2D60E536 +D3DAB7BF64E37758CC9209777C62677547E065E20B74175EA87DD3836D107D867805AA0D7A913C +E8201BF1BB8AA51657E08999788761B3C5747F40511D58798397D64512FFC2BE814C776B9EBB54 +9E4F5A3CBE75D920B2BE77CC141D1D26ACDD762BAD54CA7C37EA9BB718059948E6DD2C404BA4F5 +08AB7634D7F7CD84A3C6A1881026AF15EE46DCB249436A9EC02E96D88AB19180FC2D01742ED7F0 +2D7684B698AD17273CFA4164688C5B411D9E43DCA5806223040AF23ED0534A1E9D922380EEA882 +A5B861CADBE7637EFD6064E56107BD6237EBEEB8DA25B11BDF0A02569374B70F09818E9A8A0F6E +F9267967EB87CFB403D57215869D265E58194178AD151C0F774C726A2619B08515D3FF9D9ECDF1 +4A7A40F43A154D499086B62D82BA643A2742C2F9420D73D7137C20C5C9F9CBAB60278E6909F8C9 +AD368E6CA36624FDDE2E1F9DC3A76681FDC202A09CCD9FA7904BD49F29C645AE4B4BDE9433D44A +D304FA982F5BD914F42A77EE7C4338435F8312EBDE34BF5F8D805ED362C6A99440A641DDB01CB0 +CAB5E911A0E5A2935F340AE81B91592BED1B4272CC03247B1F27AB2E9B23CF77D3DD021B907460 +F8A877545C42AC468B68586F0066342AC40F497397DE037EC5F5C517146A72CFEFEC3675C88146 +52AA1A648DD3194BE106291289E0A0170FE7C1F0616A12E78E8FE112B7B2F60A623F49836F3FC8 +CFE47E820E9911C19AB297882D2311F41D76452CC9DD6F6F95B0520BA3EB394C15189F9DE9573B +85C09AF740EA834A5EEE27A0400F1E3A6B5F86D0C69F8FA26C7BDE10DABAAB8F7B3EB7071A72D0 +A21D82F17485DA6AD12BE8668D39CE0B6A4BC7B59A9D8D6A47A15F62D2B41283E9F23C35D2865E +10BFB2603A607E5246775F67A41E2EEC5683A709D02C92F4D021E07649C4C60A5F0E98D44CD83E +A34297942AEC4D397C4672E5ED5E1FB1CC51F3B6CC7E8FD0128D7935B05872A6B8D76F5154BB3F +17A4EB5BA0437DF785A63009C1D8084FAA7EB5145E5BDD31E9984DCC2ED1711A2FCA3725445AE8 +C78BB1C692F2FCAD9556C68E7C9196541B9A4F2465D16B4205E345D096E8E5B172CDB1E784B228 +0D22A28813998F653A4D47B5346C636D7C22CEBF2DBF433A8790FAE8989A18C674BDB566FFAA7A +CCDF631AE4B1B2C876E45B911CF9F4B9D7BFCDD2684553B1CC0F3BEC3624E44F023BA223E83EF1 +40D0E6D506E11ADB79C0DCDEED41894073B75A931D0DF6AA89078910D35E6F65B956AD74F939A4 +B30DA755CC42918F3E6B748F066E891F0A158DDB4FFDEAACC6E71A9AE04DDBAF899F796A80F6DC +02703C64BC7E021BC292A9684305D59CEB84F579B0BDB215E4FE8399DD885C8337A6ED127AB50F +E2B562EAFD20C841E7E5DD1DF6993F4E60B59C6FB2B8660ED942D360C5DC9D48A9ED8D9A08BB4B +8F7D51AA81D0F6B5C63E3633EB4A8DD8EE07E99ED5A455B6D5021D91C154AA57807357D477BF2D +626D54E365DED3AA67230CD8FE70C51E3EBBEF88FC014AD287EE77170EA9E47828271235BAA930 +087CD8749F3528C7C60AF3EFA55DA68C6D3B166ECC7B0A88E4077EB2C93BC5894EF84D9BACB493 +203015DA8CD9EF106CFD123E8057AEEA2454C9651D312E4F6CB7CD12BDC1DBB475A1DC725A21DB +FB24F55AC85BA2F07531B23ECC411FB2B0DA6B7379F3BDED7DF2F412A016E9905865ABA4274EE3 +1D932014FFD8836B8CD636568CF0BD2A7B7D4F51D716BCDC50D56936A297C0E7807674BCDA480A +1DD90412EDFEB4F18016E5A5EBEF885D3D33E2D925831343B0CDD184AD9D9779F0F50805894776 +3DBFE9EED1AFE3FF0DE7D8691104B4155821FCEFF8D0BA9F35DE1C39B063394E2F76B0245555AD +78965B301411E1D93B5D7C2284848B3CA29776059D9AA4CD2AEE88CC0007376C6EDEADA2DD1CA3 +F5293EE8E2C9B0F1A8F5EE9D009C63589CD0A7003B7911C254B780C8545203165601845624AA95 +2519CB7F1A1CC004B84458A19C7EE68FB249930A268BA05F34C08FA72BA4E4E6919EE667DC762D +F206E8BD03D6A1996887DE81640A2BCEA4052FCAECEA52900A9296A4A399F7ED0C3D7D3852A897 +9F339D42D32911E6E119BCA337B7F09F2BC74BDE2B71113C439397481A8A5AB3EEE1EF9A2DD798 +E9CA52E836034C536C07CD377259B9B72FE7FE68A1FCB8D4707B223AA693CCEED0AB7D97FDF90D +84DEE522697C071AE0EF306ACBC192AB9A9FA397E6CCB97F42FBA37818A844FA045AD2BCE7AD5F +0731590C7A26AB951EF94059198AEEDBDD869096FEDF9EA55D22C23EB6E4ABDD469B3155CB9451 +04C51EA9717EC395B7BB64E2E4AF5D31AB85876028BC78E0CD3BDBDE214CE56F5687B3009DAB8B +0AC6D75B13752782F56C590AC4FAAEB6DA1462988BD69173190F7A486077BB49CBF5FFF612B0C9 +57474F5401B8B1E8F240EC3F20808DCA2F9F2D810A07498297DA66D9AF329991DAC432BAB46C01 +F1B17BF8DC6FFF54F40397026ED09977520A41BEB1411F9334E8CAA93E5CBEE598A88A01B25601 +8E529F173153A67AACDE4A8296BFCC5B88E6E20B29D083889C18B4D38418B12F8F3514FC95130C +58A0891AAF8A9C4457603EC6FFD26F0E1B957E783D4F309F4B654980C22D29CB8646C104621282 +BB301829676E5F3D07F090E172F9A74E9E36103D3E7FD4D7AF0F6AFABCB9A21250BD6E07A1AB03 +66719B2AE6B8B98B6782AC722DCCD0DDE69FE9E39293130A206E9CFD64184A589C4893C03375B7 +D7094CAA426EB2DA5FF79C2DE45F5893EE2AEA388A2AADBAE87FF70B629F304AB0D81D41F44352 +1FC0BCB558119C9FECF5C9EA1A876A0A06610CCD279BCCF198AA606A2F4554880BB1BE38A91B55 +48D503EE76A3ADA011EF1B31F25B3A6FFC1A6C6544431CD1E1DCC06789C88584FD1878D3F5F565 +3B6FBB4B5B4795779F976252E9F3F09A482F9C8DF00B5EDAD6F0BDCB811E622A4FAC70FC0D6F6E +37625FC077D143C6AF7E76280B45F241C2FB62951447F84012AD8401C0BB7B794709B48BA3FEA5 +D85AB7D9875320A13BE8934E8FBC8B353DCE93A16979FE3A97D0E9A8B5D1F7DF52C6C18F60AC87 +C8B17DC80235023652ECA4275A901D9468AA7766128FA157DD051060A62CA5EE8235E79CD8D5D2 +B651066E2D8481A717EC08FF985BCC2B4B5D4BAD6408B0557285903F26BB6698710CEF6102230D +042EEFD6069623A5003CCBB8B71F6FCA85A88347DD13459AEB84EB4802ED2ED98D02494CC9CEE7 +FF5FF87319C591C72CBC3F43DC7DEE2BCD0E96DF6EE42949CAC9A7B7CFEAB55D3473DFC3724105 +81D8C7CE893A1C374D933FC9CFDF462481D98FCA27085AFDCE8CF359E127DCC1EED7B558FC6980 +813EFE260620D7A7BAD331651C09B2C7F5EA13A7D095368B1453C7E14E6F6F4C99CEA3F3F51256 +77A448D040F2D496616C86D2F6774F2307163FF9C0AB8AC88B20A6023E60A2C8B63E1BCB6F59A4 +2D24C107DEF5875E7EA1062646DAC43CCE029F56E91A49B0BC6873D1796DDF7A0117ECC41DD4DC +792B5B97077E2AB5492876A547074A73D404CBA4B5C0FA1938349B7C156FEA5952AF7DAB0002CF +84A92D63E38C0ECAF31FAA2B2A033A3D382C3A4416F554E4E00100D122B2D75AF0BE42C42C7B1B +4E515B81F4EE8D3F9C39796A63506223415C2A55FFA26EB9E28ED5EBCDC5D2E83A3B27DFC8B6BA +8DE74DAEC630AE7BB6DDB12A42C1F666A05EB18665EFC68FCE7DE3820485FE9159E35EB35E2932 +62FCF5712BFFEDBC974E5990BAD0D64D820564F54324323B31ACF948B3A27F4AC397A958864268 +5F86D44EA685BE3CBF1DC01C293397B8E3E457F619D8B6A85E75D838219CCBABADF23C0E4434A7 +787DC52DB315BAE832819F2973F11C045A4662F51256BE3967C3231CF42AC7DD045786B27E377A +A42DAA473A697EFE962CEBF368F10E0F3AC73EBDDBA259ED770D8E43F8B39175BCFACFD1E31DB3 +88950902A66926774EFA8EDF9649BD8AAC64702EA9ACF5717B5C91B4C150EA2A98CD128235B6D2 +645FED4EB709C91D4F71F2E3B6B971A378A7B3499773293D47B59AE87AA1F3220CCC3022066508 +5965385DE8031B42CBB2A2A0FCB9A038AE2BB898991A476373CE559ADF3263F47D6C103112A5CC +E3EDA9EEE4C24079F0EC6F88E9AD54D1629606C97F6EF26ED0225718AFAEAF1A21C712315C03C6 +9B019D238C17AB4FDD0A52E840E28C6D83D6DBC7F04051CD5F8A61654B3037FDD8388C222A55EA +4A423F99635EBE452DB660388127204288A88BA9E08B6C31F92960CB9B7557CD754A3400D48F1F +33EB9C6E820BA19A66FAD15A086EEDCEC0386DDE30E8FD98B3A63EAD8AA52656EAEBF9D3995C08 +083CB2901C8C04E8CDDFA28F89FA371822652E71531782D1388AE97BC059278DCB3DF5D175DB21 +FC34D07B6D3DD38F44E6BA13133D6E2D54033C4A77F0A4B282069477761F5DE689F4EA7F734BB4 +5C0C3AD0198A5C9F9AB087A38A0F47BB85CFCA1DA6E818ACB5B1D9B322EA1A67681427A2E92A5A +72E27208D406D2F24CD583EB914DB7615EA17B0F471DE94AB404502DA4CC394ECE88024B6AE998 +CC7FF2D1383E183DD4562ED30BCC8BB6ECE442449BBD57E546AE5E6993E2993A9E0E49784366D2 +6A0D3A301F81AD2413F564C4F36F7F8CB3F01E1BC0609F9B6CA4051E30485865768C9CDFFCBC7E +8E5A91904F43024638C4D70994F32D75845F9F865E9037491E7AA0877ACEDA00AED81E74122F94 +BB270ADAB594F5055D2B856F9615F1EDF02AE54BEFF75D33F53589F82AA67139C454ECD8077C8F +53509A3151A7EF94E80BF03F881A0553D321B41CEF83350CE9B40F8CD187D37F9B0C0D7537D498 +BBF7ECE55A8F58FBECCCD0A67EB9D86889EAC4E61CD90C40992344C0D79FD1C8ED6D7272B48406 +81B99C5A06266FD81B0904D89F1CE6CD26D9844358263E5385CAD345FFD28000BD449B1391BEAF +FEB2E5EE56A63637690F48105EE0102E398868DE9D2CB1246234605FB2A5165085370E4EF4481A +DD0BC5214BAB5055AEF44E54A56E884F96CD9DEB53F44D2BB3D29839F3780655909B8F5968B491 +83E5D0978A1D3EF4A15D97EA1D3F1B16FFCEAE52E18F34BA676F2D478A5CE9EF0EBFFA5E0E8DBA +AF563359E5B0E1FA0A861DAF2F664F78B338999DE20CBA9DD87A91C7FD06E12F3FDDA8EA27F945 +DEA14960910D04FDE66293A8BFDECBCA8F5D1267CCD28B5161C89CEAFCE617CE08496BB3DE963D +34AF77B9BF7533C46F910A673D6DBC905C11D166B26809AF418B3A8CC243E92F7680B1B02A56F3 +355FB37EBD6F1CF721BB8B55199F04707C9947CF0747A124D6136C18091F700C1DAD3F30CADD8C +AB54C79ACFDFD261A443C3221174F869DC157F61E198A69E6267C9B48E78E907CE5FE7FD4B53EB +9189094E0EC33829F7C27C6AE1CC732C3D191D522CDFAAD023A181FD7B5694F0A65FCC20F51570 +95EA8DB3323E2DD26FC06CDCE01EB98A5ABCF0DF84F3A14DD67EDC748193627EB51C8F6692D45D +C830F3EF7C823BE662184B79F6B523D75ABB3E83F0BD78369669A26728BE6B6709A835C3299A54 +25D05DDCA7CB954F4B325CB2E5E6C28C50C59EB0163915521956EED1A2B2DB82B22F7A1B9E9CC9 +F40044CED31C72E9E85B0244EAEE92EE90CBB3A8620A53F805E9A20A6A0FBD52DE2E75ADDBEB97 +3C3A794EF204C634F464E0725FD33E8146D31A976D305EEFEEF70DACCA2BE227A1689BF53D61AB +CA013B235A2E921FAE0BE489107B223E99209B7CAC5355A33F2F8C04996D075E18007DAA3C1319 +EA66E669C4198838FAAC9903B074510749D671308C9BCE1D173D6C296AF100581E501106717F9C +59E3A29537A16D376D9BA8DA51C3FCAB70B0D0F61445AC05758F1B579DCF0B5CAC6738FC4C47E3 +6F5A3A27AC9F19045BE6B3D5482E2D30962C3141E12AC96D59E6D43448F85D1999A39827C3DF8A +933571A6585DB257603471CE0C77950F8A7D3C25FD60888A26F6CD77281BFC5F4A72394ACCB7C6 +A9894B6015226109D1B043004363DCB6CBE56449917861747F1828E6DB19F835E328524A69464B +60DE76F08CA1FEBA7DD75D78778CF64F0050E225DB6A44C785592459BF38CC075ED97583AF0E17 +EC67B74D752E580533F98000A39CAA0A3DEEA46B89D864E22115A084F97B5B0D3A050AB3ADD338 +080096BE5A156EA956947EA2B1BE6C357BB1901DE7FCDF02D78B647E1FEC144FF3C8A7711A894A +1E7D849A60E0860EBB256E15C5C995951308CF30F1A87E8D3E678421B7537199E27270B4755DB5 +536CACC90C4772CE0CAAE1780BC54ABE0C3BF2627B64451DEEB875362F3B47E95577A80CEA03B3 +C6284BD3623306A66907C6EE6F4E16617783DDFE3AB55448F80A97E8D5CE6B73493B8426DD163B +96978D8052FFCFF0B0CD91F1D366FFF67514F92F6B1FEE64C3C023EF905C2830BA7BB7CDDD8532 +F18CD1BC5EEDD4E57FCF043625483C58AFFFE5EE5159F1707BA49760CF3D6900B2A6C9B64EED82 +ADA8F0B96D7BD624A1AD4B3DF0118E86B98B46D72A0744FC895ED2248618E6A349C51A44A89C6C +BEC27E525FEA388BF4A52D963AD520CF9A768B8E1BC6345EB434013BD9FCF6FC5A309CF7953DF4 +E6A92DF3FBEF92FB1A4A7FC4AACA0B95F070E908AAAF4738227375A3FEA047E3B4823BA8FA26A1 +F497936F94ACBF1920E2C18099F154F2D74E50A5FA623B2048920B7E0AF9446EED9C8D4B737AAD +85515672B6AF1543E5AF733C178FF90B89B6EB1E92162EAA240B158A78652680F3509F9C1BB21D +EE46DD3B39A2D17029BC29E260AB570B29B02624F152F6D56DD4F2FE3DBB352A3CFC4AC0534F45 +E31ABEB8C099BC8B7B829F6C7D2DA0C2B9D58E22A8A8BF73D9EB1CA278086FC1FAF212EFA755D2 +96C938CB7EE5AA4E007EADC88E7205FA0874D44B769CA1E0D757968A39FCF4F553C14DCD9B34FC +5246D3595625943439F4F876FB6A52EBFA06056850F5C92D434FE017FB3D4B0E9022B2CD28C3EB +95F084EE99911CE955B5B93196BCBB65C2699A0C942A998F785A59B43C8F8DD87BBA6107854FDD +70B3763161AC79C7CFF4FA36EACDDABEA6F5CE84567AF95E389F9C2CE9E972B540391F167369AB +CECA3C3D9967D41DDE6F455445D686B3B8223C6E8727BE334A73EFD62477DA3D89DE65F3EBF81C +4DACFC5CB89587AC9267B8670AAEC340FBD51971A3323B17978E110745B84C5E6FCD74E132BFE2 +19BA1D812A645002FE8827DDEE54546099B47E82F3935006F0B44E174B675CAF24A8FA4CE10017 +0F34E1914F3222DD851F0A874650A14866DD1EFEC6A2D97969F4E3DAB9D449AC50B5E4524BB5AB +96932237FA7896A5284F85E592B01D20C761D35BA83B4945F5608F30A77A84D918B6847516F96C +F351874BF52EFFF38ACCE88174634AB0338A377E99BC3136A0600362EDFF0E1D42F8C5F984ADF4 +AEA2463EC1B3DAE2A6CF86CCC2AA846C7EF31653605619C7D0573D27F914DBE344E5C11B697154 +347E09F54C4108A1D71FA878E4B07D35FE056DFBA2D7B99C8F01134CEEAD849AAD3AF0CB60505D +519AFC82A4BF5B342575B774D88173F1BCF2D914026D3413FF187F9C8FCE3709CF0F7E9A793483 +876A4FD3F0A29DD8DB7F470E88DFEC249A91BACCAA65AE26EFBC9CBD550A935741A5501021B9AE +064596C775BE5967FDFD3FC595EC5CEC2F185EDCF11492E76C8EB22CF5C91BB63E9AE2649D8A5B +CC7A47943E40E3B473EB5E792919F03F09688B71ABC0B0E2CF64E1DD286236360F7EC828CECDE7 +64CBEDB243828139AC4C72378B3EAE67D43CDCFB95DFE17DDEB6C2354FB8C52ADC0A666C40E2A0 +4FBCD8C01936F04F1A983B68462205765CC6E782A2F459C040958CD16D8AACA06E1A7BF14BA6FF +D570675A54E431B2D2CE78D008F082693123D18E1C3D27171DE5940F63C3FA5480E80B5727F684 +EBC48DEF479E345D2C9003481AE5A7FE20A1EB0CB422FD2BA07A3208901CA8D782DA95F0A6DE2C +CA3DE689C498A10CB8E5AF0A2203C5C147BC17BA14B4C59A34B9351321EFB281494423D0B784E1 +622E2F3EE7591A23113B3B90D34D824549B3A0B513B8BFBAADA9E1C4879251BCA93E6C40A8731D +19B411F1FA3C3F3BCEB63F5B9B8E868D4F0B966AA867EB2D4C301FE6A1D35159B4B7BAF8227D6F +F7A86BBD70178E4EF798799F4B43E296A889120BE0828EC211A38BF5A5AAC3C00494B0AEE6ADC1 +B8FF56733A3FAF015E6BA38FA59DB63FB3C9BA355E5F2A555903E4A22F2D1F26AA89C21A623DC0 +F0D8AD654C3FBC752FF21C16321F5027B4353F6C12FD340D272C2D4F30ECC9B58DC4A42F71B954 +B2764E077E0CEF1FDEBA5A6A8FE14F3AF0122C0918DAF87B157BE507BBB50DA1F208534607D906 +D45CA3444CE68FCCE04739262BA5B3B0DC0FAEADD86FC94FF14548C98592F91F89948A173B76B0 +8D2F3F845DD251F09AFE656F69D115157309D537E4F663CAFFDA726A5C62DF8EDE1EEC7916F86E +CEF600BA02901BC5A56086478A867024C58A4D8A631736FEA04F09C9DCB4B3EEF89A0C5767B3EB +8B0C2E5D08974638E79EB2CFDB509E0948BC42E1A9A29DDB09BD44BF28186C3C5AD4629D7B1396 +610782E464BC4EC12B2C484F01250BCBBECCEE474F25DA98AC82583467B62D51689EE98AD2FCB1 +AA13D44BC1CEE4CFEF34D37FB8789AF5BFA59D05D15449332B46347A7CD1F0791D48BD563BA6A0 +876C8B00496E3947C0ECF78782945109BD9306030CBF511C2B4FC1E28868EED9E2039002C98F20 +43828EBEC486919082BE71A7CA278361D0EB9DD7E21AE9CA80EFA147DCE160ACCD39924F45A821 +D89721CEAC542ECD09E76ADD11FB1710804C63B1268FBC89CEFD28314D9D3AFC26FAA897B3B7E8 +C882C4125D3DF9A67E2DE27A0245D4FD9075DE5D7FCBC8E48125D8BEC3972FFE5F8ADEFF1258C7 +5506691E5DA81359C24A978EAE086E7E885D8151A515F15A475FDB038946F7D369644279C2186D +ACD69FFD922EEB5397F5C3196548CE35D6E35C4DE6D95BE566665E4E0EE11EA43CFB9D0133B5E9 +D2A6656AE1861C158AAA97C48DD426205842BBDFAA90DA4D5EB11EF29C24898D9FE9B29B2AB913 +2A774418F0190C3D0FA29755168BFB149E0066DFD3BAD7FC405B28A27B2DFB2A356CF6F86ABFC2 +18C7E164F6F0D6D4CBE011E77EE8A045A1D1134E115D730D944CF34248C1020E15955661DFB6A1 +687CB54FAD1AD759B7EB209E6A78B4F3B4F049258E799B6FF7243B26B573D2B26AFCBC36324E2E +9AAF7206D3680EFE913A6E9F4CC8CC7FE5FDBE60D262D378A123D8BA928CDD6651999854F3ACF5 +126C00179347DBDB34954378AE5A08A690A98413115809C95A6142A662DDB89BA25B6026064A6B +A7D85963FB4D10C0BA1BCF3E73CD597D99C4CA47CEF4692A0EA5DC89C2A92DE5630EF15819840F +10FD394BA987AE798BE15A61AC464345E203B06A3ADD25E1607F9C750887F5E7ED7F2A12109914 +542CD396392738C7B7A7DAF58A7823414D648CDA083CAF2133CBC0318CB11464411F85B8FC813B +4D07757D3989E1E5E063F2D8E07E50BCF85811766CD79210C6AAFAF085C74BFA3DA37B45386A6D +C83DDCFE3DDBA6B3F999F91406D35374E60CF88F2920208C1D2A162CCA6B27984D905F3C271524 +1FBA18949B6684E3433019D3C8B45E454C18485E54A74D196AAF9636E85D179E1B5F0544D09BE1 +8855F32091CFE26A425F114C556B995935F821D811E0E5CCF779764DE6EC47256481B25EDCB409 +E7A1FD2D72D6B5DD56EC9D4474CD5A9660972D366649D840986AACAA04765435F4EFA7C513A10B +1B67FBB112BBD10490B0BDCF5E5BD4F80787E43895D4EAFC807CF18103A4EE315EC4B71BBB6022 +FEB88DE20D8C7E0244B95015DDD03CB93417A691CED38B37C27BD1C510EC50E2D82C5ABD32D24C +29C30888A2E889D0EFC93945681CA613478CBBB222810C4E4478915E598628BAD3A8E31402C1F3 +4653671CAFFAA244053AB7174E8576085F90019E0DE486014A115F88DD9DB9B10E91F129DD5A6D +00AA208459CFC5A7A2BD1095DF24BE5DCBCDE96D79E90871084AE04C1DA8DC2459FA0E191FBFFD +EA46B20240E40B6467A2455C72427B119BBB07C5725B823C112E734A09D07970748F0D0D969B75 +1BAF2451D346FC2C56122EDDB88287B1042B9F24C933F541492D0683DE0B0325AAE667521F66A3 +27C863F4AF7F4A937F7BEA60B5299FA5D170F9413A2E6EF5EF70484C0D861EE719126A942E0262 +52279876430581F0AF1841719DA6E4D8C3B932837FBDAA3FE08C18E1C89AF300E3AD7DF34FB439 +9BE9A757C830E18699450B98B49EED738C09084CA5E06DEF86BC58359DD0D203FFB11EFEB043E3 +7B184DA9B71C1AB17A9709FFD273432A34B3D924CB2F29BF5DF84596AD447A049E3A451131D660 +57FA9D4C24BF824D43DADBA7D1B2926C9CA62D8AA8C29FB2D00B0EAB7322873FA5F9E2963EF721 +6BEDB2D97548F6C40E233B25CB3785258D0E7FC096ACBC0FABACC39DE29BC0E770474A541D87AF +69D3B8E9BFF00AF11DAF9DE908EF674079C7975D7443F30FE21E02B73FF15FD44C619EAA8B9BAA +889266458C136A3A92E7979EB53A04EB00 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +%%BeginResource: font lbtr +%!PS-AdobeFont-1.1: LucidaTypewriter 1.001 +%%CreationDate: 1994 Nov 12 10:47:10 +% Lucida is a registered trademark of Bigelow & Holmes Inc. +% NOTE: This is a partial font in Adobe Type 1 format. +% The complete font in fully hinted ATM compatible form is available from Y&Y +% (508) 371-3286 USA, email: tech-help@YandY.com, http://www.YandY.com +11 dict begin +/FontInfo 9 dict dup begin +/version (1.001) readonly def +/Notice ((c) 1993, 1994 Bigelow & Homes Inc. Pat. Des. 289,422. All Rights Reserved.) readonly def +/Notice ((c) 1994 Y&Y Inc. All Rights Reserved.) readonly def +/FullName (Lucida Typewriter) readonly def +/FamilyName (LucidaTypewriter) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch true def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /LucidaTypewriter def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 54 /Aditi put +dup 35 /Ahmed put +dup 37 /Alasdair put +dup 39 /Alessio put +dup 41 /Ali put +dup 43 /Alois put +dup 173 /Ammar put +dup 47 /Andre put +dup 49 /Andrzej put +dup 51 /Angelika put +dup 53 /Anton put +dup 55 /Ari put +dup 33 /Arne put +dup 59 /Art put +dup 61 /Ayman put +dup 63 /Barry put +dup 65 /Bent put +dup 67 /Blair put +dup 69 /Bonnie put +dup 71 /Brian put +dup 73 /Burkhard put +dup 75 /Castor put +dup 77 /Charles put +dup 79 /Chi put +dup 81 /Christian put +dup 83 /Christoph put +dup 85 /Chuck put +dup 87 /Clovis put +dup 96 /Curt put +dup 89 /Cyrus put +dup 187 /Don put +dup 255 /George put +dup 189 /Heinz put +dup 179 /Hong put +dup 178 /Ivan put +dup 56 /Jacqueline put +dup 57 /Jagannatha put +dup 58 /Jan put +dup 60 /Jason put +dup 32 /Jeff put +dup 62 /Jerzy put +dup 34 /Jim put +dup 64 /Jiri put +dup 36 /Joe put +dup 66 /Joel put +dup 38 /Johan put +dup 68 /John put +dup 40 /Johnnie put +dup 70 /Jon put +dup 42 /Jonas put +dup 72 /Jonathan put +dup 44 /Jorgen put +dup 74 /Jose put +dup 46 /Josh put +dup 76 /Juan put +dup 48 /Justin put +dup 78 /Kamal put +dup 50 /Karl put +dup 80 /Karlheinz put +dup 52 /Kaspar put +dup 82 /Kees put +dup 84 /Keith put +dup 86 /Kenchi put +dup 252 /Kendall put +dup 88 /Kettleson put +dup 90 /Kieran put +dup 92 /Koen put +dup 94 /Kristian put +dup 98 /Lalu put +dup 100 /Leon put +dup 102 /Louis put +dup 104 /Luc put +dup 106 /Lunjin put +dup 110 /Malka put +dup 112 /Manuel put +dup 108 /Marcy put +dup 114 /Mariusz put +dup 116 /Martin put +dup 118 /Masahiro put +dup 120 /Matt put +dup 122 /Maurizio put +dup 124 /Max put +dup 126 /Michael put +dup 177 /Murad put +dup 91 /Robert put +dup 93 /Robin put +dup 95 /Rod put +dup 97 /Roger put +dup 99 /Ron put +dup 101 /Rudi put +dup 103 /Russell put +dup 105 /Sam put +dup 107 /Sami put +dup 109 /Sanjay put +dup 111 /Saroj put +dup 113 /Saul put +dup 115 /Saulius put +dup 117 /Scott put +dup 119 /Sean put +dup 121 /Sebastian put +dup 123 /Shuichi put +dup 125 /Stan put +dup 163 /Stefan put +dup 171 /Surendar put +dup 188 /Vladimir put +dup 45 /Will put +dup 247 /Waldo put +dup 215 /Wilfred put +readonly def +/FontBBox{0 -211 743 940}readonly def +%/UniqueID 5054489 def +currentdict end +currentfile eexec +AD776B2EBF901A49F071BF30E3DCFAC47FA0F916EC503FFC9EFF58A2E5E6ABC78B442C3E49096A +372F9AAE7622C3ECBD02783028DD91D32C0749B44F46D712056235A4901EE1E3989B3DC1451624 +40AF8B496D8B010216C5D0E3D6D7F34AED88500CEE93E2A4889C2FC011056B0222BA09F5697B86 +A1350BEA78ACFDFDB589C8D82923F5F8AD8C1480A7D7EE8ABF2004A86A75BE914F200B220B02DC +E0C7FDAF4B89502B119D1FBD3035453DDB3DC564DD8289E85D637884AFEAAF7C6FF38A32C70EF5 +C1B638CB40003001895712A251C27020F3B8D9166E77E2A69E1FF83886E0BE4327AC9142301CA3 +F4DB60613570C39367B465BD2E11A593DC63EDCC1810C1F5EDBF099DE46A7BC166F52311BE4A2C +DFFAB7110560972AD364AE5170A11FEF4E1FC57E896F7B0FE2389F3BE19EB48DB67AC766314064 +174EF2E1412F25E41CF45CB6990732C755064FABE454F1B1D5EA703331A09A7A9AF323557024F3 +7B24CB30C52216514E014870A174249B7B1C05638083915C9B633E3FA00DBA2DCCAD433B078A91 +E405EFD2CF75CEB10E524FD95A2BBFF9EEDDFE3016F6C2D3E901B81B723E4F422A0B1442A0E63C +CC52A0E72EDB5035D945A2FA1441886E56D2B10A7B5950BAB79A9653CD37F0AF255B3850E1ADE0 +9CFF282133A2E30770C76618F58007FC51C72485EA377798C5C8A00DAB46815939973C8FDEBBC3 +7B5C966BEFCE797755B7E73A5E55CC69BDAB56C7E658C86B8FF147630B6D222993D3AC6AD4542C +078835BECCF377ECA61A10F66C41ED8379C2FCC2A5380AC1CCA64D05CB08109D76CB1901D00BD5 +4761978C3481B305877CEBCD436944FB66AF914A1C8D2D125DB01ACAFDA9A8F71BA3CC83FB11B1 +6ACFFDE43513DF984167288E886247E02501210DD81ED939D5D18EE3EB3644D5EF61D2BE58B7C8 +106045C8A3684AABBF8EA6EEE01208F99F865E297A03B426EB16D44B34467735A1FECECEA719CB +F2E24F2A15395A18EC4F6A3990D9EAC78BF523D5911AF11C3EAC620D859B0B642984658A94897D +4BA3F1F622F2DFB6861BC85CEED6172393058E882721A9B3D2E00437CF7FB8DA4D1EC8CB1217E1 +697149B23FB1BAE92A7E0FEDA0374AF59FF5CD141426C498D2749C85FA6E6E2DD07EE3FFDCEE86 +DC3F0225A5EF81DAB98FA26C89B1B020F884D485893B5EFD6019A149D82925F3DD9694A1058065 +EE57C94BD63E5DCEF57F5C3C850419EAC7C4BC2FB81A7D0BC322CB0F88943A6F507A2FE460EEEF +A17DBA7B0E7493890299AE86ACE258EE4C7EBC2C9713406E365A5B30FB045AE0163723667C9322 +B05319D528C8C67AAEF79A6C34459311764B75BC63AB5165F831F1857F6B1D6801E39931FAD9F8 +8B61B304696763D30C0B58313D31CC287EED59C97397E8C0A748426DB6C0B7C4CA57A43E7E27A9 +A123734DC7EA137F307B9C9074B908E53E60F99E98CA0DE14A5D61967727709E1CB009EC9CD98E +9D796CF35B7B1FF2536FF8CD9E1C24B7CDC0E89DC29BEB398CB420DEC645001D90D59C7A5B5E33 +20425FCCFAA23ED880C41BB82A8CADDCB8B5BDB1D57F414F380BBC00B6A8B9591B25AEEEC69B64 +D671A078F39369EDA9E5C9FED9D179AC25F37A4E4D1E438B180B24D851812E407B242F932D9D07 +EE2E42BAF2FE9EFD338345C15F1C8329E91644DB1EA96E6F45871D8EAFF292286D7A70281381F5 +82CF13F5F987F423463C2DB96A23D3D9CEF5B4636A092BA8FC7C97AB42BADB4DE493C0B0A54C81 +82650C094D0B4591A2891949270492240334842911DFD640AEB2B5CB036BEEF59CEAAE37AEEB4F +4CB45AAEDEBE062358058A0D697972BB11E9F30ECBEAE599E404C7BC4C93FC3C2A604CF7F9183A +96962D3D0F03FEBF8D7A171E9537EDB0F8769AD1A442BBEE6F003B87F9EC0C4DCAB4C1BE74EF54 +73FAD92638E347980505361CA70D6A28EB18E83ACCBC73C481D4B81F62EC2FB250696E436A8788 +2728E8E960E09A330121492079CD349F5C8FDF0CE6824495FB17A3A97D7C031F9E8B50D10234D3 +C02792AF0C0BBAB393968B49EDF5BD4F84D83DDB9500A9EAE7EEDDA7CEDFC2A6B3B71F885487B3 +31028361BDA2334E83820C7E73A67B200F8E08B742DC3BFFF6E363AA1EA72DB7CEA77826A5D024 +68C8B19EFF5F8ADEFF5235AE6AA50F43C5F2EB56AFA58470FB2CE038D35DF1FDB5135B8CAA9F3E +F27BACD9D828623636044D161009F558132A6B6DF4AE9CA3EA9DCF94D961D7CB962C4EA67E887F +B9D7A3C5F91166D41C8427A1E0C8BA49C21E968D52B92BD7E7B1F5B1800A27F3F7321E3D200B77 +98D3F4B0AC1A396BE11D0C919F55CD8AF1406321E8EEF169B785AB38BA5AA61A5EB09A9F312697 +92D98DE98AE49A1308A5706738125DE51C98AA3AFBBB10124FFCE47F72BA6A1E5D96FB5BD8F989 +D1AB41DA7C2C71FD1C02CE697C81A0512182ECA66EC14CC8E473378FA9EB3927BC9EA91B1BBA8E +0C70BA78B1F7DB3124246AA9E4E349421623DC408D756578B11218BE2D6B613186D1D094179200 +8960A7F1B266D7C4DABF9081725EF2E5806AE27E5D8E81CC7B98C9CDF8D319208DD7A75C2B0B1A +7C13DE5CA9912EF40371D9F415840ED99AC446E1EC958001243B0C39641846EE67E79217DC6AF3 +02891C024119B55AE58D14B28B68225733BFDA7BC4D54EC2EC58AEF027BD34EDDDE2336EA8B34C +63EAACC4D255340CEB8166FBDA86587E207C06C6F804C366822435388ADD4BDCA7E345DA3C3912 +16C19BD9F424C5C5596E3D1BF1C6601D5967942070320981295BECA7EACAA9017B29EE70538768 +5DAA8B31D815A53E446EEEB107B369B824C97D5730A4D28ADDB131FA243225A69DB5CC61C9CB21 +018510F1930F3AF2AE3987D5110BED80CD8B6BF24998AC07DFB9C648B0BDE300DA8853FCBC3C4E +C47181B1665670E4809D03B0FEC298D1E22937C45159BF0E1C3278D727E40CD00A3DAB814D16C0 +453C20F343C8767778E20C3E12A9C0F30CF38F782C91B678FA8B73FAF9AB8337EBC636E05518DA +74C57B6696BAF384BC34CF1F50DC361C2E745A9906DD87BB93310DAEA23BCD0AA967E8C062EE03 +F573B67C6DBA52C3C78E4A6BC9A879A97924F26EA053CB90F1AE4968BEB209B7496B99E7102390 +4591EA1246F12A2B401C36C3D585A3C3E42E95316D7B3BB95509256DBECBFCFA8182EE874AA624 +B74C146E164A7509867514349FC6ED41A0EA7375C81E58CAE6AFC5524E4506458FDFF6B6F94A50 +18BB41CB3BFFA90AC6A605B372714552AC2CABD4BBB9400485A50E1122F69011BEFD2EA53EF4B5 +4DF3481CDB4F97F8BBB549612C3EEF4E860143EB2FAD42E5B9D5913E53DAE0B3468B191C8ED4E2 +4B5E8CED287E7012FA0D16B8019EB890D9A8BAA01629B0CEA69402973EFDC1618CA995505606DE +DD18D0474B4E08F7FFE947C323A138F944A950734A4586FE82A08B7C2967E67BC975B875A2AAE5 +05935906A0484CC6C2478EF1EC03E885D86CEBBE5101101C11B7B8165E132D2B427B8583BCFC89 +85A7BBD5B56D12F8C11796232B430613A8B4540BF45C97B6067A74BBFBF64851305257D1BEC901 +238A7303E12BA887117301DF80559342A4B551F8189E9DDBC5251D2D384831269A092ED1971292 +2396105767405896450A1F07F6B660F4BFD98369836EC514D418E4ACD93095A6AA2C44D0912217 +F48B92A5D7CA170A6293B0A4139BBBB39131E2B6F5CCFACB550AD74DCD4D466AD9AF69A409D09F +5ACE8C98851C20E19E4D44B1DB30905B9BE08AC52E0A1548793C591CE0E29DD2B102756822B36C +6E4BC505003DEE549BBAA843BA5EFF252F0A5E4CF14D1EA86F46ADDB6EF52427E0B6E2861583D0 +885196B68E53D9B72793100CBAF160F7ABAD3A8E2887D078E7F78FDB1437F0A58A20C7E300ABA8 +031E30B35D34628DF6E8A9689F2C5A779D51D6B673F38730E2C28CD4822168D037138B5DFA7A66 +4318B681D41864AF487BDAC6E635996D21C5EF1D16BE5CAF809C6E34AA787121164292ACFFA289 +15A115A11700B26B0BECD9B05A4CE538438BF67209443B4ADAB5BBC40F9F354A90CE53F0C24AC1 +F2C37FBB9022B23FC9111E292ABA30410005355D49B56D38F4C33C37F8A891A88B2F51957420EA +E5D22618FEFFB7C1A6436E75E4E6F4F8B3B847D4CA12D3D925A3F1F66EB6D87B19A53042FC860D +2A57D2B2967F001F6B56DABED79E82D33107FAD1F46172D4EF1A52FFBAB95A33180B0AEBECB34B +BFA4DD57AD85FCC81833CECA2A9D4667923A57CF8CEA991565051E3BD29DC4CAAF8B8DFBF3A76C +8EDAD02C5F5EEEC19D462EB48758B2440329F43A38CC21D68D26FC54179ECF102F15AD9AB1DA75 +046419CD4B0FE0BB79C77A72CB9583EB321C978C8F68A3568C52CF0A85C938A8065D18DFAC5C2B +FDC4659C10A237F09B924DDE6B6E09EFB77C158F9DC22E6310ACAB98218FFB6D547ED3D5590541 +AD5862078A9CB34C2BB08B4C3E620E0802E99DD0572B36E7B7B9DB269FBAD73F7A49F711E2F790 +2C0F15494D642FD63010E3F1B5240ED79B617A655D5FBBB5EACD66B85F02C54023640DF5150BF9 +88B62D82E068EA4E35824FA098321F86B68DFDEEB8F575B85AA76ACFD6FE55B40D2B141DCC1B65 +DDDAAA3E790F6B0B491E80DE0277D25D48DEAB2D8E48A004C36665468CBE3BA496C57596AB679D +C80E9F744FBE8041D3AD6F077CF65B0612F180E8403CB8D58BDF46FA5615F5BAE1AFE3959FD4A3 +EB1743ACC7DE83ABB701E949613BA573A67B4E9C816348078B2F857609582E5F144BE599EE4B15 +85A08F81174FFDBCD8AC2258B7FF161EB3A1849054B66934DD76DE536680E3AA92EAF1985D5B56 +C68B693A3EC10AB0FFB2B88609E8870670D2AACBA8B20E9FC5ECA607D3D90167453BB172484A55 +141AD585EF5173AEF115B5BD89B653246AF9C2FE922A8F56B78E797C497318FCACD97E8F33627F +579C8D1254166906EB06F96DD5003DB43878316E2EC4109E8FCBFA4B978AA15701BB16D633C2B6 +502F6566AA3869B9C94AB303617C3787C7CC6CBA808FE9C4E67725672D654E075657CD646E26A5 +82C68B47CE90C154A51CA289747585668A5A2D4D73D97E730FDA8F9B648B685B409A742AEAFAA2 +A818D0897970766B186FAB6836899A1091CD3B9503533334293ED15CF42143C13CE2D05A6EAA2E +D1D12A3DAF28F9178B9448E4EC2A8FF6CADBFBEEE028AEC622D3CBA1118E92C98C4B303F8588A2 +3012067D2E1481E68B4ADCD6594737FB2206763B5023A0148BA31A165DE5384C63480CAF82E59C +28A133A775A6E7E3A5A17CB8D9D6A3C9F3E638F67CE5D58926932DA3A9DEA6ED2CB7B5BBF07C6E +CA417769D07B64A534906E5CB96DEC73E8093209CD2A85120F6E3216B5171B4BA67F2538785907 +BF3B8A912CD7E6362E528AC47FC14F2832924FB512259CCE6B650AC1730C5E531AA826D86CB8A9 +D9AD673294D4F1D3CFDF738BE5BC6C9401A164C6E7850794ED6587D592F44D409855639AB72C01 +6C55878BCBE20DEC3D4C15B0C0D47EEE44D6A4E91AA1C297D25A44378636BE4EB6517BD486DE12 +950F53AF60D94F28419AE67BC2316E26BA82ADA180577C6CE2A56FDF0C1EA9B9CA2EF55A95125F +D667870226ED5D780A34EB34F468460EBFB8152024F200E40C6D42D5C5513E163C02B82C42FBF2 +E4433B60344D3EBEA637C78F734FF3321E743437F5AD1B92429B46ABBDE8E115AEE2904B3F3FE2 +369679466A59EC0433FDB261E8B2F227CEA66E4C57DF67F92284F0332A4F4E46431F282EF59975 +C430121C5E833A8174095118BCF0CEC899EBA8313C3690E85225F5212ECE4BB82902B0C662D78C +37747BE77B81F47C24F088F5F94A18BA923E54DDF65B9DDF5E9D64E4D8B086BB808CA791A0E8DC +2DBBA31CD58D21489EB64B11560AF93796A8E1E206DC7C15F4310FE985E47A929F76A6BC154FF4 +2C07B6F96E03F1D6BEB10A0E053C8C7DF0692929D1B62A3074DCAC64B1A6821FD25F6B434BB016 +E3CB58286848D04B8E743C400D477FA5F2130352AB8932CBFDFB9FB5C6C6A6EE9DDBA6DC41589A +89D5F223DEBECC40BBFE5CB5E5DA18A511450C6A679D10FBF99F6A391B11189B921246FDF6F552 +5083A1361F6B232E1F5A25F5E1D0DFDB1B812BA87143407C8ECABC78E5C7AA0531293AC7909A8F +7E27C5A87099723739C93CC4F955995D664D4D043D5F4B27028D336A03313A6BFD8A4E1F4023DE +1AA5A0F7EFAAC52FF9378BB890ED9B29F50DBBB920676A54FDAD07963E2846D3733B7417BA5334 +5F57F1372E89F4020DC6A0AB9035328B0DF0DF71110C2A452D2702488A229B54FEE6845814C21F +764007C8E119CF84454F608C91E1797DB85D9B8210BA1F7A7CD12B2A8AD55DAA18CF2042F4857E +D37C2ACDB63984DABCCC6BDF6A119C464C7D6EC30CB2E4620948B1B7BEA3A2DD88B15EFA953B3B +69C2A624A0CAEAEF17915ED4389D1217080B7F7D91887E055A86A6B287490DAD12D6165A0243A7 +A64587BD329E130F8E522D6570E59A33595672C7110FA2B8DDA2EC48F45671492804DAE5DB40A5 +42E21C27D2A5F2C37F00E871C3087613F11C6249EB926A0463D0486C5D5919A0A6A556D27A6AC6 +0E6065AE76BCCFCC3525732DF91F7C0F24A09A8C2053C231348BAEEB93395AD4DF4AF7A99DB0CA +9CB512D3D71496A74CD776A68E38B90673300A297F6A244CCD0341112F42CB9955DA3980C15BD9 +68A2B0DDACE0A835ECCEF41E8CF4EDCB493B59882F812BC4D85694E508FC0CAA2AFDE8C0B21F2E +A861F1620F6D01DFAF25B3ED11A7753395F97FBCBBD1E3AECC00B5940A6651BBFAB3556F720081 +8AB5744975F71644FD46B060CF74147238B6ADC1E9FAFCBB3C2D2A3F92FD4C141C520978A992EF +90B23EE6178602D2ADCD143E49C6BD72D24C3581F7F1A76E9122B4D8C9DFA3FA94D3CABE5F84DC +BDD90ED86A2E6D8C63EF7177AE85AEDE1A594DBC3C249A7B108AFCC6C75A502EE3CA0E733808AE +ED05CD0B95431DF8AFCBE86D9EA04971A1ADC6558B5B82E5BC3F98AF6DC4401B04A4D39335C7D8 +13DA80152ACDBF6498B99B3E314D18981340A1117D206368E4F2BE11F46911B33BD6FE35B0109E +5B294F59D3F025FEA5C2834ACFF2BE105AB95BAF201BC50A4D98B85C970AF3E39E0B05D15DF28D +0A18E82FCC16D85BAC813A9501A10F4CDFD022905FA5B10C8763361BFC4CB0FCE8654062C0002D +AADE193096D10973533795666EEE0AE8B7BC76D60B1713769DAB8AEAFE36A6E6786DCF15A1A890 +7C4DF6D252A5CCE68B28B6F564060A53FCC5E39E97FF61DCDA09DB31BAC530C8F5B999B1FC4E36 +A2906088897488081D74802A693DED16DCF651F62C15EDD2BC721619F848EBDCF226DFC535A526 +C3247E225CB344AAAFE6A954E89B8330A9F5B05961B5A7D362CCD2268D993EDCEBFD46C2944C91 +7F004CD27CAC0F142366D8F2419CA77C36770355CAB1C3BBAEDBD7F4D0150C4BEA551AAE4CF898 +E5962B6579F5B13A3CAD2EC25AD7AA6015D07028BE165BD40F27A9B33FD805B8F42326CF94589B +29249E4859A8D0F306E3BCB3A7EC3298904B0CC87E913B90149C765A43CC39144D523D6B26A509 +E00236093EE99B3513AC69DC5A2941F1E48A71B213559621E5BE6A641D943FE3A13FFD796F2BB1 +A6C452A24E4B9864FBD9A9B5331DFBC5DCAAFF5EC6232F15E9412BC2230E8394F5C0F92244FE91 +8043D83E3790475F6B35673F695244CB303D708E8E92731C657D81C7A28EB491FD849179BD0886 +E72E47F1B4C34B465B4B0A212D57DD804C7CDF5814B1E6B87C9ACB9C74E1EAD3C4B8889EA4F25A +0CE27AF6F91593F0DA3F55C15C9EC3CDA8D6BEB60FA0D8CFDD2C34C1B0143C36A80B3F77E9E4CA +CD42068746943063788129B9B10DD969706035C3FB7971E9A56EF6FB3A0B4ADD1D977E014E1417 +ED81B819435C8D8002AF809C6A252FCF5F17BFBC747BB7E604C9328F353016B85A69F468164401 +67563700E8EF94313BBFCEC58B3FA6C89C0F79AAA61537DCE0B489ADF40540989FB040E2FFC535 +0B85D9C011A94B7A806482E02C1038F47D392BE62F7A192CA4659D8F0A17F1D53DBE33A6749125 +CB64549F2DF8FC0283E48713E166A6401D1DB6193DA6F4DFA2AA7430EBFDE3DB993A6C8B58132F +3D57AB5E466566ABB13D5C29BA2262F3F6F574D275CDCD653E1F8F824F516B1C688CE97C14FF3E +BAB81F8FBF0A6F64648BBE7F5AD5C331614E5CFF13CEA871D865F4F788E4ADE8984BD939AB33E5 +17121276461DD3125F3B56CA87900CB449B6497FA6D4F5FB859038374D5BE0AD2A34B1ACC9479D +5530AE8EF469891C174F8860837F7A22F72590CB8309079CDE324BC60787EC690F901A69FAE187 +2B6D4D4576F06F5CC37495D0C72A45AD47D2F6CD216FAE7981E4859B5845FBCFCB61829A6BC8A8 +E7A9A0F53C020767B5AABE20CFBF2504BE5BC7D32DE9B56BB1F0C48330635D3E72E4913CB1BE01 +28C6BD47FEBED891A3FAD8BBD5F916B466E974F9CB2B3129B29DF1F5FBC7B2BF2AB8B2769C12E0 +435ED3208EB20E9657200806391492BB1E5899EE594DDAD170A0A61BB6A1D0581D685C80CC2F9C +5E5AF62ADFAB656A33D22F7A572FD25DEBBFEC4B36242F8D77D18A0CBDE2FA03CB8E9394B9CD88 +D63CAB57E79081650E58E4BCD0E5A878CE4621251A287C64035BBEAA80881D504C75032F89280B +FBFC4991241167BEBA653AF5EAE9B1A3280A58B9C4C59B2FC47659FD1F42D37DB5470E46D2ACB5 +62A1D0DA3F4EC9DBEC40635018A141152BDC88F33E79C6DA6DD616BF689E052C0464B62A1E61A3 +E58CC805DEE666FE4B4F0096D6D682384A2E95FFD0B542AEF848E1B54056BAEECE36F0C62099F0 +4E0AEBC007352614E0349A18A2614FD3998C9907BBDB681C74DC3A24E5C002EB64AEFF55CB6EDB +44CA80E99DF02F8A7B1016824AD38FE7264BDAC41E848CC7B7B38B0C50FE417455BE9AE00F0F8F +79B0A5F492C89CDD1D18F6FAC750437A96608C131AAF7A9C5BC0D3110CCBC25B19C7F1E3906C27 +8935A398909D2EE97723CE0207E9CB29807CB9F8ADFA813900D190DD0CC8E3CA457E8CD392441B +B800B2B30D034ED66518D487F4F3C33DE3FAC0F88D9A6A597379C2500A6954EF80302912AC116A +74A520C2E40AAC299B78F63879F31E2A8429B13DAF83428B12DB5AEEE33E1150A0FF4174DCCBF3 +9610D0BB68DDEE4AC044123B208F3D37A5CA6A646DBB821975DA03DEDBC42714949104033A4C31 +0FE6BF0B70F922EFF8C51CA42B1CE7FC496B43E2DDB4B20AE6373972105DFA5843E9A64F63342E +36B154E1575BA26998878A96CBC9A34B2E07188D6E1E8E69FA557DB604BCFFAE3675E237D97F5D +EF4C8D2257AD409B239F1D9519F9B718C27B998D69EC2B5321F97AFEDD8F7466E64F45A0843594 +7B35221BDF77146E4E33F08935C37F0FFD44D506D8382536365FB3972C455A6EAF0761A03A85EC +EC2E8D0FD1FBF0BD829F18874C7C25D8F0ED087F9859136919DD52AC3AE08A7D848E5EB11CEB54 +2BF71B537DFA59D6E081574AF536813DF6D9B8B31B83BFD52DDEC2D7D833621EE2608619F0A61F +CAFF7EC32F2B0727B24937644F40DE81F6D86FC17A3417392B04448A5EC54C0B0BB1B60F38767A +508ECB5B30113246F3A3066310BE7A115CD9D35EF4133A4110B10D62EF3077CBBC8A3C64E5566C +19BBA49AD10E1D5D11BD5A31DC8ED59EE62CC19143533502D580237950FE90B7ED3803F662A522 +A3DF2BD026CEAE7D614EB0EB2D29681934DCF9AB2E6124A18FEFA62F2F478B87E2764C59C2EFF8 +946D326860363543F0392CB582F6AB173AF2FF031E77C939597381F724D242E49D323CF0BD1023 +74B67D028C331B64DB4642946C72E82092A4890A5491130E312ED47DCB238161CFCF412BF7738E +81B3AABB3CA492B716F92BC684615519BB513526C06FD5BAB6F196807D675DA47A7AD0216B7BB1 +35C9EFBA46313A9A7D3E40A5B7E6436114846D1032A163305534DDD10DFBBABB912B1E18882A47 +5154FD2A0FB33F1E4AA97827FAAD01CD51F62E492AFCF3B870B5B90AF7CE345F99D07F134A790D +312A7FF00B01DF37741A5E2B98DC2CCEE6BAB34978374CF1CE2F83F03ABA437790E0BA33A0124C +2C8F4A13F3F0D00383141A952242B2129A0B96A45B1CC13255B3118991293700BDDB4E29BC913D +0A3B44D9E5F7FCE6D153EF4FF3824FA229F841EF6DE46E113C9B602A298868AFDD1825CEB017DD +D59F67ABD724D8ECC9261BF90C413BB4818D060CE5FE0B0EA9CBB65850E5FA181E9713FDA06800 +FFE7C53D9EB62B222ABD8E12EB6E149CCA7713C5639ED530A30DD12D69E271782458E53CC14DB7 +5B053E7D61DE9E231A78C2391DC18EE092A5F76CD61AE5B7894B78CD378E0FBF8056701D4990DE +1EF0F36E918D98CD907F624E654836F18A579C7BFB23DE3AA9D59229C3FB1A4B857D9EFBD289AD +0FFC27B6EB42148E7AF8A802C99B14ACE59B52A111DBEC97EC5BFB0F970C9B27AD6231D66F1744 +74207E935CD40B5D3787D85B46D4C33AFF9DD5029A0172118C624DA5307F9FA33C256FDA460479 +205650A52F5591A14027695126E5AE946A7BAF34835CAC37560EA030B3DD2B06A6DFFA0D02F634 +E344CDB5260D84FC6338DAD799DAF44C46E4C4DA1854160E76FBCC0916A3EBDE474E358E9E8B32 +8F1223DF95A0F1F8CCF619FBA607F0276C5373C293BC4C4D653893B83F3583D9BA549F8D229DB9 +44D7B4B835F97197608BEB526AFD58416980C3C8ACA1080C09797DA0A24B185C793636A15FB82C +E003906B613CA3D16DF1D7C51033480123FCED0205AE45BE3DBD332DB88D0BDCBB4DB845AC13A4 +215B94ECFFA4D4E88B4BC5093770D5DB8FD7B87E8E4FA0E58F651270701EE92A3B287644F56B40 +97237BAD7453C25D29B293ACDD4A295284480A3E19DD134E77498E16512ECB44D77EB24D6C35EC +4586D9B73B2F60FA1F758FA86378485C37D595ECE1B0FD80D64CEE30B7F5A51A724E72E18A9B22 +AECA8129067304660294A309E9797F8BBE2402581F43D8636648EE6675C4D30A8B50DFE587FC41 +E5C04B4430C58AD44F57C8F6AAFD4750AEAE51BD4715838D8BFE522C6F17ACAE809C3C39F50D72 +CBADA2547CD9D0DE80980C53D9ED68E73214037B8A8E365BB3DDF7350A2D1B9AF3ED802436D1EC +75C60C3617995E3AB7B8469915D80285E99BEAB6BB88A9B5A388D7D7CB950E7DBC168885FC5173 +4FAD3CABD91109104F52525316943C6E16ACD17CAE128D81C0D98357B0B806ACB460A5E7F5F7B2 +385060402CAE0CDAF70188977249C809CD4C6B133ED8447B926E1A30D4FCD0968FD3FD45B50F6E +BA94E72E87D4BC7ADA4DCC3D6DA0F31517EA9DD89F6751F707980CA84CF406F7A786AD8E4377D7 +5506A96F7293999800C1A59CD813F18398A4094D7426E250BD21F87DC58C094BC00A567541BDE3 +D17E1BB01C4AAD986D1E79CC4B29234A28A6A323C0FB98B530012E523AFDA4915851952149B238 +CCA18B8F974BAF6CCB738D05B6BB1FCB0825FC1920C4E3AE8A1DB3B7C02991A543AFC9D38DDC1A +563793DEC85BF313F6CC40A1C8BBC09580E54EA3CF1E399F8EDB969290A3203D86D67327E567F8 +ED390542AABB07A0DA177C3C6B44F5BFBEFB181DBCD1753C6712A6D7835A64B36922173FEEAE67 +735FB82A09CBF309246D104DF7B14AD6A6A87DF431004EE72FE7887929F4DB593B0A113F176409 +E69892A4EC6CF250F984F2CC2904C788FC7FB9B164B7C3AAF3B9BF5EB17108C52EED49E5E43D16 +F94ABBF85F784008958557FF8DA38DC55BB43D6F8671BD2764A9F276C2A039FE5179D23455BD55 +539DEA38921C66C7E19EE407CFA868E9CEC0694D756EBD5B9EBDFE6D18D5E9E33433C886B24CA0 +B0F131746FA8FFD23D427828A4998D0776549AB2B4F5B610F07AED694655A7152740A275DE60AC +BD7811F31203F32D071761E74D0B34BBD8158DC1282ED895F803B7FD689D429C9A2C32B30E098A +A790D6247386B89F03310DE4665C3AE77665D885E456B655846956CA33E3A702F79A9695CE7510 +329536FB24143DB109D0E858CB20B3056078F0C151419BF06BBB871F925ECC7B4131E54A935645 +D4E00EF0EA720ED493E6731508EFF11B81D9A4DDDBBAC935DFDD1B798BA0E34B0D5695233933E7 +8C0C9C1DAB44C7BEE45543C3C310C452FCE97964D2B635C5433318FA367D20DDB9DC8CDCEFE0B1 +1DDBBA2D7A7010375EE581C7FFE97F89BB91E3FF1624F0EF5FE27CF9A027BC8D1939F91D88A873 +5861127EB0CFD88300D3B821DDE0B54B62762466790A949B2DB6372C75732E87F54CE4F05325D2 +0643A2F8388DE10E1C4CBFDA85A70F7551CC8A8F088FD46483446E0BE03BDE1B5F2B23D9B99EEF +D4641BD0EE2AE3310B0CC0AE418D0C6797840CC5BFC4F54F0D6AF8DC1AAF3DF297D3955ABAC771 +214ED10BC9E88A4CEFBE6E07EDF9F7A2F52C144086C13071F24CE826D468098707090EBC28BBCE +12E0AED14488B547A70EB783D97C98CEBF55858B924F0DB6754B3CF833EBB5EC487046A6C3BAE3 +AF59F61B699782A6109E0D7544846F4383C849A917ED1750A8F5813F552C231A3E5954F57C8EF4 +D02BC790A6DC865F77B78D920D274C2276F9DE3887540C460B1A6029419B9EE6B88FE29204CD4F +62321824A8B72FEF463400CA6A83C2CF8E161C76058CEBB021216ED92B4D889A9CEAE5619E0CE7 +DE0B6927577AF0DC385FDD45EB6F116778E91BC1EBB2B6027FC5D39F8A233D27BF581DB38D31F4 +20AF47E77AFC2D67A7FE90A10F0D6AF0816BEB7CE905FF00E5C2DA7CEC75EFC3A170495999AFCB +7A9781375C03C495FC9CDD90F9783CFF0926D795F155CE64AF0817726FCBE7BFF6566FA1A1DED6 +D4D6C2395E7DC3DDE9484A2FFFE1C67EDD9D8741E17D526079ADA966C5F17105235C7A5E09B82D +1752B97568029925A6E25DD461063227613F02B66AC5DDE9B4018E253263CFB3EEB717BCE0F8FD +36B0EDF5D82D2DB2DF28F72B13D148F741379D7C31443DD9C452B3F5A8889C93F15957064DA4C8 +BD8D3032D94A3133695934D299CA4303797B6A49932A1B672A72DDE67106E2BE984CE7E6BAAD36 +396AE3EBAFBC268105DCC191E2773ACCBD92A3D32EAF57721C0EF3E34744AE1ADFD9C56669A08C +C7E95C1908D43B569D82CFD4CBD7A41D841D10C107E00CE93F033C7449B78660FBF82D157601F6 +A9C721C3FC1264A86363B5A151F63C8B646E2D7E5D44C3DD46CBAE571FF53A9F4064540768148C +B69B9752D1E99EACDE8BD201373708BF20C689BDE479A0D11DEDA4243E6D0ECD265294C079C7BF +427F12C737CE72238894FAF3571DC588143F2C86EABF4512C63672D5211514D72120ED97AE70E2 +FE4291903259BA3521EF94C9D13C5A614AAC9BF14514761F5D3678F4F96DD8B0A20AC00EBB9A43 +235A571280B34341E5761EEA38808C7485C6B9D15B72BA4A0281A517FD2E5E660EF9EB5BEEBD43 +2D537F8E3E2FD2BC8D221CB3C6E578B1627EF869CAE922CC154B38D2239A7FBC8D85727C1D533D +C71E873CF062F0DB2AD29763A482B6A601EFCC9BF9214E9B270BD9633BAD41C2308A02B94E860E +9B74808796488497C3658F3F33CC29EB099CE42B134AB7A5E168013C64F056375DC95FFFCE9AAA +7813C498FF43DDA22D5186F6E7B3AAEA39A72A5C0EEB95A0CB79539FF14FD409F7D357FB06629C +D99C5F277996778C7FD19E776CDC015FB37A29AABFF21ACF0BB36A0F8F7D6758F4AFA31FE61F95 +10905BE91866BCF1B92CC5638BF90CEDE72FB7F46FB1892F4F4E965DE76D6162C515195A39FBF5 +1A7299F01D20021720B8046FF10A5D5185B217BE8B62874281AF2007EAEA8C41911DB195B8C3E1 +BF0E466CE3F398A111A03958BAF0707BBF153C1E4F966E4645795126C6912828923BB3952C5099 +C0FF6855AFAB944B776511C96B77A9E0459FC52749F0AD982077A227792126507426736F2965AC +BEDCD7938A0E27351E5CBBEC3E331BC2568679E1823DBDCFDE6E46E999604924084D583696F05E +D161CF7CAE7A56A31A7EB0BDF8F5883A5825597227619EE45655F15CADDD3100604877F7221866 +A27520BA9F4C72A5B7A1B45549C599BECDA8D24BF7504ED6032981AD5EB25E7DCEF6B0E7295F01 +0C881F0B0B28C39CBF0708B8F96AFF3A0193AED2DFD8AC7E6F4D85F2EE21971A670C010857737D +4D3C1CC4D1EA8FEEA7756D34FA95B2BE2A27E5864A4183F75861F2EA00D050F04D6C48113EDD40 +75A78C5C64E41B437AB8FD6E12C5A25ECA76816702CEEC2B3FE8DE398A130CC49330BDEFB0D76D +047E035448A59484D48D18EFC534328A8556858D4B45CC05377B8140598AFA383939E4A7F73561 +68C7B016D012C37B405D4523A1DB884F005A2572A039847C7C065B8B92DDC9BC1E803692A39CC0 +0A49CDF0AD24168154D03BFD56E1EADFE29E556B52FD11CF838378E4E4FEAD5243456648DBED06 +2A47FA57542E137A9E035569D068F08E43DC4031D85925DEC164FF91F8C207692E8DADBAED305D +D38FB4952C61F50F9E4E4CBDE408A16801732F3EFD6F2D600CFAD6F691BD36279AD251D991F24D +18DA3168749E8469A9A39F2106B98701956F265C3DA4081278A3366118DAC644DD5B4B5DBCF7B6 +EF6AB84D9C41350B18320C0FFEE0B5C26AEAE1A6028093337FDB82EC40105175175CC19A7884A0 +B07DC34C349177DD4BCDC16323E36197073F1D6447BAA0A45F0DE7453E6891AF0FE2D21C26D9BE +37454F2F83F6E974DFBB014511275360A9FDBF6CB77510C92A45C0C1FF6A004F854FDD323CA4EA +45EF334B4BD189F1131FFA7B4C7FBE315DD788FF2D89DC3804ACC9D689816A22E39BA45AA98AAD +6971FFD22B5CF38794385EA00AE18FEA562E0AD2688CF6176E1FF4CF8910ABE1C4E98F59750C26 +9858AD2B32E717C29D97878953F729AE13B3403F997593542639DEEACE7BB88D45B6C4FCDBBAFA +3B18BC0F085B25A87B16BBD084EE088FDBF6D62F4E65052E374F2DC012DF690E23C6A00A5E8760 +B2B2A213FA8D0B31E08070741FD2D8752274CD71B1CF566890113EA34518457B1778DC1CA38345 +78502A62CF4CF563252B3ECF554D477283CBE6AA7A434A279AB71B2CF20765F5B197592C681FE4 +6ABC6115B49D776B1CD457A3335FB3B61B4258EB77327688686072B7906B2D8016C5FB12A626D7 +E8B2590CDF574F3A410D75FDECE4BE7DDBAD69EDA08F44B73D6F7C92B97C67201FA2AD698D058C +EB7AE6C88B699207669D68FAEBAC5E75905B9688707B199F516E944056C2CBE773CC95BCE59D82 +AA93DF52227D477CC2345EA8F1A2CB96A00D186F3A02C30FC0330EDACC404ABCCE86F0462784B9 +7C1F55A03C4ED89C79C0BD3A0AF3B19259963CE966F654D7D4EF9B9093B27526E5C09A084F3C9F +DDF3C8F261A5720DFEE14B6B198D8F0CEA0CCCC7B70CE185F0B65B0B4E5CE79898A8E3DBEBF65E +A2A7F82EFD92AA7EB65AABAC5A3CEE49070E78D5C591409756EB4A706DE5192D13083C4A10BBCE +3A818990406945A4036CAB65E3F53A54E6992866E130F01DBADC1F15751256DFCB408DCC671CA0 +731A01A6457CB40B4A04BBB0BF77C8B655ABD484705AD31CBB88CDDC3C599B35B86D3C4BB8B8E6 +7751A095E43C9B9228C58A920E48D679DEAA88DEEC58F7B5573DE4D7C7288BA9F0A5899D1E6588 +557ECAA123CF7D504406BB03F580FE02A2E88FA32F9A824B5A895CE8EB1BC271FF2702FA463454 +717D37672DF5C7F78561F889EB0E57984A96E1430B26E27BAEFFA17AAB5FB94A890AF8FB57AEF2 +4FE880121E0B31708F1AE9B09DBE64B26A5EBFBE42A4BBC0C3ADEC0A14CF7496AA53263D4889B0 +929645EC2B8C5144A4D76FDEDE6345B1407F990C5D7644B21C0D827AEA7D4E8D4D17311099A703 +689B2F68A9EFE15696C589BC02FAC8F5CD6FF68964EB222EE012E28A490614BA93405E4F2798EA +0E8A8B5EED8D7C554737ECD26CCFF16F50C8AF2373E8688DCC297269C2836E4FED50EABA465EF6 +908DF9F55DA80A501E0165DBEE8E3F9FCE4F6B9C31AD5505E71AD3D7FFE6EAA9D764B965FC163A +B0ABF7DFEE391546EB78C79466886C7393D4036FA247E9C4DEC84FE72D4B5AFC6D7FE58714C70A +AC3799C4B419D3701267915677FBD571073B70D68F141651A59ABF8B6483E216F90117879A34CA +43BFA857B831DFE321C2FAFB887131B607D2B9AE7F0290705C254716161DB40AA383006A8B74A5 +767DEDEF5D60711B5A9E45D63A6EBDB15740AA04BAAE078FAD7FDCB9D26AE3DBB66ECBD9D7E641 +D064B881BF5190FB31EECBF3659036FC145D8BF0DFB325A78F0B3723ED8DD2A967BF916A90A92C +32292F3330D3F1FA1F31CD6AF9373D12A1EDFA00EE7A4859BB6F6D4D6F6F7F944ACDE744E3D6DD +CD646F83539F983B1C70BD94E1FF6CD3E072F06DF4193676388C95A3E4E3D07ECD40FB6928AC52 +CBCCF63B71B47DF4567E19E0840D6452494EC3883F6144E5791853B0EBF93D6DDDF15B3C8AA14D +8A20E191DE9ABEB1ADF7B19B3B688961F0B86E215451E4DD52BA655B00D1495BF08660AA5CE7F7 +134698F4C73B97103D1074220946455466FDC08FFC63A1C97D60E0B931E94A6A559BAF54574696 +D5F5460FB18B3213144F42F1AA8D5FEC8361A6E401A82454C897403E82DEED2B65E6E50CC603DC +34BEF5E2EF0F2FC24421E5DF012640D1C6E5C87F2CC8A3997362E27463CE29C903A5B32863321C +55B8540DC3DDAB6892FF114F3EF72647A3525119AED1A65DBC779358C5AF9F3AEDB5AE85085CF8 +9F55C71EE44D229C122DE658C83290BD82FC39F044163EB56F841A9E568D50493B535837415A12 +7D618BE80156E1AF95AC39BE234ACA11CFE3744A8AF714724C04359EC8729BBEA07EB8908FC41D +4E5D045D2261A9E20C66A161F98584A2FD1AA56473A0287082ABF956B6F34C0AC3D6139C00020C +A13C7CDC60F1F1778CAB99930BF104139967B728C75120BB7FC3625513C7F992CAE757EEAC275B +7172522F0E178F4EB6F862080D0494FCC5F159DA45FEDD5C7A19064BF1EC59531E973A9846C5A2 +F8BD12B34B0152021D6C41F7226BE7DD8876AEFE003A4DD181EC983284F8855F9535318246A668 +196BACDC3A71CCBB1BDA4547168F0624CB896CF96E7629EC8D1BD11530E5E8D5568D77D9DCAC00 +ADB7021BD4BF6FC3E1F178C51E67781337D7D3AC1A09ECA650B8278FF569501CBB021B2C8C9ED1 +C9A23380D3CA67ED0E27A41929FD835DB776103C8CBE4498470C2ADA09AAD19EA5D781C3D5132E +8C343AFC91E36ABD78327AF6A4F589F146E702BBF6A6C3EA6F720B5052FA18E4BCCDD1A7B8C7A0 +E654A9883396E6442EDCF3ECB05C55B0895C130ECD3B9544A3FAEB5ADA3F5CE8C5FF342D2DA291 +2E9FA59276DB5418BC5B065FCE1ABD42FF3238894BF00C86C52030258449D995943259F600B1BB +8F63809E2D84425DB00AF60E9E8AE791E5ACB6D3E5C7FC9023144DF022F86FFFB37D30899ED2D9 +FA1A5CA5E442170A2BF817985767EEA87C4F57B8E19681F607EBAA22860C8C549738FE95D85F4D +2027CF0F99F31985FC568EAF856FFFC056B118EAAF09E8982C0DFE550FDD8652F3D94CA70DE411 +00C17F820E4A7A2217619B20FC0303AF62BFF042764382147169272BE9769043C3D41F9A246A01 +C4C63FC7DC2FD62306EE813196D620F584B007BCA0286A39E296B210F64F684CFB2F9CCCA5B74E +950D35A1F18B19A26940674DF66392255091A6A6ECE640DD8142F5CBEF4A7810FD8175C9833539 +A34A911E0BDF64DBFFC534EE22CA6229D62B7A95DCACC46D3989BCC85749B248523AD44ABFE05B +E796126E6745E1DD1653FB938612FCF0C877566CA9F686823F4D069234EC7E3826D0080C32615A +88423A09651A9F3EE6A9DCC95646FB0E7E24C7C3372C6D6CDF1375CB4EB1440FE95C5C7FE435B7 +290E78ABCC143A9C015B410A8555271833A466D49AC0611340731580BD29F73A2DCDBCBAA6E07B +643DCF9B18613A6652B655A2167CBB1CCB0FA71534BB0759873FF5B4CDEE677AFA1059E1F4519E +EFC1BEF079A9C04D13842F516B096D3D281533502C4023E13C25C59C662340A45B6874B5C9F08A +08BE03B7C35FE00ED31BBFC5119463F2FB1165D22F117A04F27FCB5F0949BFAD0E882703755454 +B629821B7EB4B048FBBC21E1390620EDFDE83B894FFB434632EB7B4B21647D4C9660E7213902E3 +E2B6AF6181D797F2551513F3529E6C7679712CBF72F2437CD4685E117AD8C2D61A28132170427D +398392C7A27EBA6C244C6BD7700969004D52395FFCE11000B07A7093714F781E353BBC152F2EA5 +B275818DA2E9FD5C04F63B23EF722257EAB81FB2AB97C5B8BF455B2AFE648C895A6D38BE154683 +831704144F5D8FD68BBC0A96165E27F262804140E34A7C7361CDCDD5F14BA4A45EB7BDFFFF91BD +7429BFC9775BAD532BD4DAB6F7FFE85CBD60FA6D0B138CE116058504803D0F449ACA8C380A7829 +A0ED3623A5EE64BB34A345A8720C7B57B1A7C18560A5E56A5DC8C553B58A73762FB04036217CD6 +081F8227F61556BE59FF02C0DEA3639D44A6C3C97F921CA96752FB9B9D28597873AE2AE2C38D46 +A2AF40DBC3DB23A297503A5579998B0DB6B93D1AA1ED3BF5BCC480D0CD9688135FDD40A3E487B9 +A4005AAED374C2E9E036BAAB288AC862726F3FAB60D38B5BB135799A3BE5F4470903445D3A66C8 +24256158426369C70439148F4701DDC2F6F6F77559DE968F0305C42B43E665F7E8DCC6D72F055F +038616F9C030A9AF1A06E6036E72640D11962CD4A622A9DCD07C8EBAF060BEB846F25C1ED28835 +C28059C5C1FD4987CDBAC09780B5AC782964DBBEC7F776B5DB51B44E3817BFF658D2DC37C4291F +E1778D7B964E22AFC5EDDBB03538567378B7F62E806422EAD35C9F6F82046E7E79BFD6FAF3E7E0 +A52C63DD5E8C0A838B3969022987DCB7377E15BAC7B1525EA24C666E0C69508881C204BB515233 +C9B6FFB3F0B4EE37D12EDE6E192B1A17A7F6699FD6C1E87F03C2D8AC0B9DEC767234A2E7C32016 +D3AD9A8015F489BEDA95EC6400EA9DB2CB8626FA253A718FF13FF0E013A172E06C3E5591C15715 +C60C30795CAAAB098B52CE441EB71F2063ABBE3DD3558B7F07DB17F49C24A7861589ECD8E825EC +797ABE3521B5924F53045230CF94C34F5BD6F197E008F3BC38401B3AA6BAA7EFF54F1F926677CC +FC0E77D5EA05B218213737DB84C21AA724E05F37896667FA8EF4E3899727DDD936BE2F8E64ADBA +CA74032C2FF23805D1E6029E7B305F0CD7259865D7271444A5886B5C76CE0DF62429164E844F2E +95880B6BECDBB0BD005229964442A20AE582DF5F3735885E217E4C399535B965047A892BE0985F +6C1EA35B95457414038746316BC93CF4C776AA50650E617A6F0DCC586D3F4CBC19F6043DD04915 +F0CE9EA31EFF2F8D36268A044EF15BCA63FC5AE91D7DB0879FE5AA9A3D51BDA3160658ECEFC447 +CD2C9A848D1DB4BB48D277EC154B52297EBD188B2B7ABA0E4B840831E1B9B647AF654E1BB08D0A +64446A3BB49FB7F19E8FD8E9084C8B8C93924EFDFD9A9458A4F3B4F1D948B123681DEE542CA97D +6A5857A3E47622A6C6B2EC09768705223894BD7867242D819277C5DB24DCCE8DA6062199482923 +4F17F56BB1A0C2A2E099BEAA6D94942AF9706FA6A1D0C67560BD1E3861F8FFD465CE6C48AEC2C1 +F762BFD3D4A68B8B25D0FFAE02376B34DC1BAD9B39DAD6FAB6491002A1E6796BE978DC1DC62EA3 +9D708671DC9CFE4F757CCCE4DD7F1B0ED59EBF5EF3DCE61C4AA16DD6411B68E8A9CE4FF6AD85E6 +F98CE16CE25A8405801669678204CDB7305BD7A29469C539BE2348B8AC412DC95EACA3012D3D96 +A3BA334FF4E16EDB9115B83AFD66192142423BDA32D8A76277A763C373217BE75370C5813FD53D +E7DCE0807C087DDE87E029F0211CA9F1B1A67E72D7922388A6C84B3C6E3D44B192B0B7588A7DED +100C04F87780F070DDFEF41C90EFC0E0BB8F3692F7D360BA180E1D4579FC1AC671454E413A8613 +F40F9CDA8AEFEC06CE40F1DF6FAEBFAEB57AAF73898F869C6BD165B9A3A60C5942A48292B5805E +01897F3DC17253668A774D13E23C5D5D90BB6B8F60E89875B353A8FE0D03ECEC140EBB2B3BE613 +907F32DE8F445CFDC60272E5EBC753BC2ED4CBEC34588879870277190FCFBEAAA6D81759C2CE36 +6CE0EED2B8915F93BD1ABBA0613DD9E2EE93633EF81F4B36C29F4A24847104ACEC56CA46416884 +462AE9C21D1A21D20125B71DC52D38989FBAF0A0A6EC1068E7C963B2B6894326A5E70AE420214F +EDAB638988110066D741B301760451CEA275988C2270532D4A78712F28922011D564F12928B4BB +9484657DC0F2378F07A139C75843624CE599A261AFC6192D58F89F36556AFE32531138FA46B505 +54898E65B82883BE97CC02B92B7C7D1979F799720345EE930BE3CBC3BA01CDC2311147AA768202 +A59BD84F601A5FBF6F882DA51E7644D7B734D89555FFDECED4BD2B14DB3D3C57E0403680796446 +3DC5C9D6427B591A00A82E2EE4DB81D533D52857A250E579F9C9D45109F06862E64564B5E18615 +4B6AFF5AA065792AAD0D38340C26A0B7C7E4DC7F054A850C0BA6EC8F66535E5CE1758160CF83B3 +CD1D0F7EFDA4B0D11E679C74386C2234505F7FB083578BE4D43C4922330EEFE114DAF7C58C0AB8 +7E4F6C6511A1B311FB9FC645FD7199015B5491584D2E135C573206A96EC49B6F0BD7428755A69C +9D1DAE3978F70CF6F2B518C74B81908258509FC96282AAB0DEE885CD5D66B5A91BBBF74B08142A +827DA25A4F0FBC4E1BDB4952556B04F32DB3A8CE6873DA2EE081E81DC1D3C429BD76E62986CCBE +D21F956E4F45F869E0E00FBFD1B17011439E6E0196C8A7726A96186634E51951B5DC1CC4F96850 +9AF5DB930D892EA290C70EDCC65DD905D6AF9221AF3C6EE64E01FC3A37EB358A759DDE53CDDC74 +B6937F1DA36B00174481A40AD8B6E9BA2F9BA1A15D80C560BF4A3CAB972DD12B2890C3BDEB06EB +FE05BAB7E2BCDAFC641643B67D553AD78D5CC498B43A458C06E9A428307498EB76BD7096F2DEBD +2905AB09BC0E748239D90663C26A3FAA9347C32D44BEEA2DDECCA24825DD2A154E8A82282F4122 +96D11C6E0CA8F28CCD52A3E0A9B442838BD6FE90A931C8A462A97759CC9EE21B47C44B2032E5B4 +083750CA3483E688F67FBE91EAC9199D49963060712314618A725457FB71945C535BCD330A9D8D +850EA0EB723BE0A00F2C3A8E6C80660F59A84DE34A52F00725C945521ACFFFCE8FA1CBC2CA9F9C +C98AB2987C636CFB83DB46B4B3A7F1CF4EECF6E08A3B94229B54CB34272829C4BC264E303DFA2B +170D5E7A66A7EE3C463502D5425AB0739F1DFF5FE9B751975E4379569580B641C7296DFEA54E7A +99A9478583A0D8DE565575DB2CD00B35D2BF82A5597F4134CD3F7A201C80DA9AF49EB8D9D049C2 +5869843331F140753DAAF303592715A35751B4597F458F5BD9A894D8E2173E03C85853515E3D71 +CDB51E7000279E462386A1DBAC817073DDD29CB89F211CD5FCEB9657C107041E605DDBBB7275F8 +B084FBB48A233D826F9D3079F56BEA088092B8156B4C38ECCBAE22EDF9135E5E2DE147EAF1D562 +2735F9FC9C5124149AEE31FD4B35CBBD848E81605EF9B89C0E116E4394195122D3F5D28A60CCD3 +19A85D7EF24CFEA5AA946B8EE737786DFD5A6B2C1100F3F2DCABDEBC012CBC19AD314198536720 +37233DA6D3B6AB83458179190D11FC866BD3343C9CB85381BBFE2226D612BCE91D13226F4AA348 +C48D5F05D927518E5587BF7EEAE0B2E40F6D2F5847B25832970681DCDDE5A3DAB4E305DC7CCF1D +817F07975F4575D97355347E3AA2DA7A8B230B81673ABF1052EEE2F524D5330975E811FC32AF0F +E8538EF37B67EDE2F2D521F45AEE885D379835E820C8EFFDDD7E3E381BF267E32E9E6DC40A1D36 +D0068A698B970C492B79D5AE4C645286631FF56704053F81474FD546FC9498CDE9176F7483F9F1 +7FF8654B0EAFC6352FF7070D969C8F7005389B7F465EF1B6C0A1329A2B18F577586CF4B9427D48 +886B0AC61575474C87A37340B7EFC0090F3E489505EF51BA12B1394144F3895AABC6916DFA5C6A +4E8D07D3E351853A2E0370688E5E6000F5B751AFB8821C4C25DE80A9640ECC48B99E05C94E4932 +D120A4893E85CC91CDFB5A7218C972A482914E5401ACFE7BFF59B4D8D5E5F563AEAE5E34B052A7 +2ED5ED7854C32C20C933D68992DEAAD311F6DE5C03DD24B878F536560A2F43E5FC70452A39C7B0 +AE56A0A559607EDC991BE7F571857A7F55FEDC84C679B9BE89401F504805BDDCC9CAA625B2111B +C4815AC79A78AAEA643466199721879697A341639ED003B5FA52331D3A2AE25D8F20EACCBAF791 +D62421A00937BFDDF444EB59D2F460AAFDF8BE9F82D5FD1D48F6712B908E5FA81345A567C18705 +6944C722C55A0D418ABB1BC622EEC5D416F6F52BC188DD51405215AD6B75B04DBF4BC6D85F0618 +FA111126E41351C3F7B0667F8FC08ED06342B2DB6201A1A63AB018B2FE5FD760366A9A420F56A6 +C61B835F9AB9F385A81430F867146C8B01784534CC959126389D1CAFE10E3AF40DBE594B6B9219 +8F50D9759E60519DE8AB4CC0224ED624A3AA9FC95AAFD676706448A9F05BF008095121314FD044 +A3A350ABFD1CCCD5EB18DBD2EA71C3DB2F37066021E39F4E77CB1B155D05CE1FA00C8A59FF39A3 +A16891235A599F95F9A62E6EE47839135A0750A2CB528F11EC47F0D4D3BA828501C9B76FDFE178 +21F11814DEFDE3AB561ADA314060D7112BC8BF02E92793A3D864B83AEA78F8D49DF9AB07AC0762 +229534C0288FBC00662E53035A037B1C9745195CFAB54D22032A16E7AE0B971CAC5A67FF0EDE11 +E265B88805314BC7563CF177BABB367618A27734611D7B662DA407911EF2FEC47D74C482F7DF82 +3960081466CECBF4BA94FC5AC8C9F91AC151FB1ECB78BA5D5607A1D59D34C18C83000F8507AB1F +1C44347FCA2BC27087A28F0F3B24BDD8E7A0DDCF782CBCED5DDA4565308E10062145895A9C437C +CAED86458890311EDCDE2109233BF9ABCEF0535080D7C5A76D6E3BCE8210C7E89FB95E63CD8A76 +FEA978AF5000DFE7C0E659B902503758736C6DB295B9368EE50F5F8CF3E200456B5B2087219150 +294871F7B980800E59A5DE5973AB9ED52F7DBC7C433FD0E099D3E3EEF6DF7D77E40D1C8B34C117 +588ADBBD7A29AB4805A87C13CE93A65854DFDA87321ECF7D34E72C193365B632B455F8A2916BD1 +E63441A633D144C254E3FD89FE2884840146B4C992A07BE6A0FCEEB6AE9B0234D234645D73C064 +EAFEDA1EB7A9DE6661D31226A6F54BC9510DF6F64F7200CEC5EAF90357716E7C246D47C04E0906 +98C5F6AC446DC6107E6342FE8B746C0FFA058FBBCA0730CFB20A367ED10661670C1618A4D467DC +2A7E87894DE0D5392B3F0DE6582901693C28568D2253D514A3FACD1B063B02A5F8A19C1D6DFBAE +CC79435F694E914014DEFC5553A5984993154997E63768DD7BC462BDF6D1A8B28DF568B22FF460 +087163AEEC37F0BDDBBA4C30322AD71922AC802DD491207E6A6C255F50EEB0C492EC86AFED9040 +B068671FE4A1E66AF15D3D976C7267F3EEE19462487772087ABF36700B4821D2DB5193BBEFCE82 +BF67F7034972A708E93C55E0F7A52EAEE47E68FDC6F1BC49B9370F28DAE122D13CB2CBCB55933F +A27291003E862FB0C7E20A0F979DFD8BA918322F6CD597809F9E05DD210F7996F314B65F54FD7B +F453F15CCBEB2CD5E53535261E696EB73F2698D1159076D0EAE35FFB1FB53F98808ED2325B2CC7 +9D90772C15273EE50294AC931626EC573BED7CCE2D713328962528EE0F00FADB1C1ED8B302F24A +40F9A22D1D6411EC669670ADF93C4C67D8520109FDE9F64CB0382842C88845267528F57AB7E408 +9EDE614E79799D08D3D01378AE9D42D7601D821C9C5BFB77EEFF37B634D2698BDC11CB60192B6B +4FFDEE834EDEA99CCCB760D3E7548E6810FE300596C246AE56DCC6BA8132AE3779ECD5ECFA6963 +F9B5C4B9AD8B6C480BB184FE31EF0F8DD3ADAA96AFBFA250FCBFEB529239AD2A524B3C8AA1C2C2 +7ED016E8EE24B355BA84D1D0AC6AF00B0A230578609A3F09639D2CA7175710FE9D455A58A6982B +7B7FCA52BB5490FBAA064D1C506C9598D88B5CB330C97F434BD1EF060ADC21B9F6ED9FB7A7E604 +20FA1B481881C73B1DEEDA0A7E197B8D38EEE68CD8D442D083772FE2BA1F1C07A57D5B67BD8230 +80BF438089A4D6C311D421F5F16C35B3207649CC0433AEE4987E3AB5698D55309B5F5C8B95332C +77157E3309EDB4954613428AE9DA6686799ABCE483FCFA8C060F0614995E01FD14A6189AB61A0F +7AC9465BE297F053E85AAD0EFD921502269D01FA6D5ADAD672F3D48C5D4EDEEA65E53E03A24AA9 +E78660AFF7942E7F23E3754582CB2976FB65997FF35582FF83FE9BF43CE5CA20AE5EB62CA819D9 +B63ABE39EA3A13AC163F64A55B4E840B12FEED5BF447E3CA1FD61E6FB51D6F7B3176F697491217 +306EC21CC462AEFA069C9432AFAFDE4D586D5EF8DD4E49882CD701C4F4FBDBF42E370AE7F332AB +E22DDB2FA70D17B0E053BD6332A1B51840A6C18760A46EDB9C8933039C8B724FBA4C4D62B98876 +71F94505D1242067281063F91A7DE032FCE95DA4B54C32B46B762CC927667306101A7186DA78BB +BFF306C62708B92D76D2225B1FACC18157268623387B5D80FF9E394E3DB68D5404AE3CAF3A8654 +7704EEE75E7BCBC9A96610D96E96C0CEC85785FC7D54BF035D0E03E6B1ACE9691D7DD71B607B9D +C37DC020E9B5D4216AA991C5022AC52A4637FCA79DC21DC1FCBD5BA4B28B591F69CEFD0D99E35F +C568550A5E11B32BD59BE83149B82FC840C99267AA84AF41FC56D1C4F7F6365B65DBED15163D55 +9A95630AF5005C7FEF23EE87208AAE88AB3CA22FEAF682088FB1F2F78027FDED141D161183FD67 +5E16ECE34A9664C1373C2793C35080519D0BBE2D9B98BEF67D2716B4036A25274B4370AD209164 +BEAC0BFFBCC3F6B2956AEF76143644485280FD50462B63F324A992F3A5B187321107BEC7A301C0 +4338312EA32DCABA2C13A6ADA387B668A45743B4D7C02F2BFFC69F49AFB429434EA529B04EB8B7 +4596D90FE74AE32F57CEC0433922B00236C189FFCD8A1FDD896CCC957DFA2EEABB23BD8E5A428F +FDC06F4F75C3222DC161472687547B173F632D15BACE92A07A0A71DCCE2B8EB739EFFEA173E57C +4DF651FA936221DABBDB3B8AE5C30D595C33DCFC485EF2721743A6957E26A79A97EFD24BE5AC7F +D6792166AD1F09A8590F5871E74B2215E9012BF05DC89BEF6A2FFBA06BC619A08B14D6679877A1 +10165E943223B0DDC672C591F26D6C865B78B59703C3C977FFD605CB241C35FA1FD928A4A4F11C +052EA00B2FC0CEAD4BD9041899EE135DE98A260518AC927508ADD78D7A6D8049C88B42241D25CA +5DF0550706C3671B2DB3D848C3B94CC77D7FC2D157E37B8D4780B6B7F3B04502F3167D8D5B99A4 +6B63151FA7FC1FE52BD66ACF20DB58A7A092623E63FF6F7C7D0001AB09059A5CB6D79504900589 +A349E8D19E76F6FBEA194D18CB6526691C7B66E219092FCB73A4F7807E6BFD82510687A50BFA3C +EEB4F8818B11A8B9F7B71676C5B44078996994DA808DC39D3CB6A66B476FA2ED6390B7181A591D +171DE548152A5CC5B71F5F9DCED5B648AEF57E2B3644909577EA607E49C8D0105DB7FC57FA1A2D +E0105EADBF35AA385C972F9CF07D379454FBFB1EAC4B573498C10B2E98C3FB6F1483A123237B96 +0BAA3A3CDC0E9327F0FCABF72E8AC7DB04E22CDAA0F6EE108564565AEAC4A4DA8328F30AA878DD +B35D6AB16FC49D928066ED24C583434447AFBE2E4D22848A516862207480EAF650624943925E0C +351A6407ABE0BF04E36C87BE715B11FE53B8A13AB4669B7B2238D0B295D60028D1111A5AFE23AC +E77C59415C466042B93790A8055FD8C39B262848BBCEE84DA425462871EA73BFC927DC4DAF9336 +E13B1BC99887E8C1D8721311B5396209A634F3A1F91D51EB7B28F0A827A50688ED60370F6BF3EC +A867BB995B125BAB4203DE9E26DFC0D3D8E91D3E749AA0407C6A74C86E98FDF8A314B201E1EE0C +98015360074379F70367DE7CEE75864C9789533ECEBE1323C12261A8622C5666C932177CFDCACD +2D494F1741EC983E51CE4E3A63AE6FD282DA64A32CC3B2F55549080C7A190BFDD2C2393C675DE4 +90C79A325DCC04D14E0445C218AAFA0E54A305A889DBE613D4F28FB08253892A0D673908479B87 +E9D8E13F467B7F9EBCD8E5E16D7CD3358C71CECCD08C6B8ACA8525657D37560BF2221F91258EF4 +E6B70118BD1CB1F4EB421C4C32C76437340EA398E22351CEA31D250E46F946D44D97C2B3DE06F8 +D8003381600E2E2C28AFBADC25DC94224AFAD0D7D951609BB2478C476085C01AA601F3AFFED544 +F251D5A49BD263D64F4FEFB0803F162BD5FE1082FA2949BA8987AFFA1D9A7A4EF28BFCAFFD3311 +0E1A1A2A22C76734DF6CC30E3C4662DFAFB32DF55DB12D138148435A6F7ADB4ACC4F4124EF772A +A63D5F65490E9763FFD66C6153F5B0FEF1A307D6A9753102CE51DA88E2EF7275FFFD2A7B4F81E9 +DF549938193AB7A58D5C237D669ACF27DFA35744F7622F8D54B5B54AA31D9403841D4C5D193D87 +E60622E18C2D7E333AD4CB2DB27DEE813D9902D17DD0F2D3BDC8B340DFE9C8D34B993CC2CC91BD +47B4861809902E11197967922FC625989AC6F4BA0D48166F3F4B6C6C47D3B9A932F3D47A8613F3 +6329406BF5ADEE519002394FB288D3A8AC3DCD5C37270AC7F5C5CDE46BE5C2A103FD468FEBC0F5 +180143DB4312076FB062CE88DC373B5F120C591B9C09B9E3E1B26F52A48339AE70F729BA02977A +B60666637D9FF9287DB4CC52BD5C7B2D4F038E5C927B97B54F611396E2211514A8684A02D5DB1F +DE728DB58AE1BB7253740349771118D2D33211D2ED7BBEB97BB4776666F6A2AC7B54A1E2DB79D2 +A9DE31745745CB39BDEE3E7CF425C27F86CFA89F825A09F9C7027E8DF7A773497690F328D22FF5 +A5CB2821623A570C29D03081E9DCE770F3E7F5B7377A1BC3F52B383EA0CB1C1BDC00E67AE90F72 +9DC77450407C0A9D0ECB2CE16C91CC3C7D487457800654F86BA7A8E26A25B78204CC7F58BBF69C +5C406BA012563A4379506C28A39538F9A5D57BD197443A02A9D3C67149D654FF12FC6E05612981 +7F7236BF90FA626FB91D49C48D824248EABD764EB3C20634D56BDC2E170A814567D278F7AFB96B +F6AEF216C0B42AAF85AE299752C50E6D2963FA5DB384FD110868D43DA804FDB9D0CA26BBC8CD72 +EFAC451FBAF4BB0B44C675DD4E0B4AD8D6149DAE44DC4EC36942CE1876C8602E3F97CD6E18BD0B +5BCCF7B1773619FC8AC3B3D4958F71E5D2C631C6B17EEE7ADCBA30CA0E30B538249113223FA987 +4D4B294563B9F42D9D259374F28A8D8A654F26D7BFD8667CCBC43F75B61C2F5CF8D7E06642E93D +76554642B7666B7905D6859F79DC080CB5574D03A072DB0D47AB82461DF6638C77234A3F97428F +D2FC973687786BCF1D2F65AABAF55C257914247AEA0B3AF17A867C0CF1E5A6883D68680343CC5F +3604DC8E1E7A9DAB9CFA316A14D4CF7A3A60CA56E947AE632762B2303C0EDAF9B3AA206191730D +18B522FCD29D036AA4E6540F6A0DA836638A2EACE334B232199F61B357B10F4322A1F58F249101 +CB1399E5E60483F12A6008F8FFB52709F34136D93902FE367A01419F79A4D4DEDBBAE63741526D +3D9EB7BFB4332C1775E2F0A05A4D7B203C2816F30081A67440D09D1FF94DDB3B7BB91B63703581 +A696ECEB393963FA9199AB61A3F449061E048FA2C1F91897C5A60A4D30D0C276DE88EA143BA4FC +545FFC8F0B0950A38AAD126D73DA6BBDBDB480C3AFF4D2C7657A33652D5728E1866DB82B8F1A8A +72235DAB477C38ECFCCD0CDBB77D30A0436FDDC1D70426C0C5B408A4ADD039CC2B5750B7BB5E07 +CC56039DB7FF3298151718E167CD482E88AE498B2D89C79C572FCE5ECEA3BBFE5603FD7AF6F4DF +2C06BD8EF8501B52E8CBFB5481CA45CBAE44D87D455DFB6F030FBC0938EDFF80592B68390452F2 +42584D9C529BBAA2615F9A493BDB3C4BCD99422B69FB658ADA813AE39E447151F9312A005AB210 +D9FFB508C7A036BFA34C7264CFC1B92929C7CD892CD8BE48D388545B8CE7A79F70D0F1B852625D +F331D75342E9EC57219DE4E61BFFEB066D82DC6256892E89B25BCE034F7F6FF09D7DC8ABBC8739 +3B70FDAB372D2FDFC51902A6E7FBE5DF3F41A91DAFA35D9A99A18DCD9E9D9050CA9D6FD417C9B8 +DE3C0648F8458BA2E0ABCEE10E759C97F019D1A1C8E1CC9EC8A6680C2566F42E478EB1F5706435 +16EBAF85E4F9E972BA3FA6D20B8BD1734229563A1ADA6D4D1857257EB760050F4FD997090653CA +7771430101EEE3BCA1EA8E5F230F1B54E25A50458A1F7EBC35AEC36A88E4E345EF4CD9F97978EC +E8F3C53ABD56FD3DB6C71206DEB0058509F24D0EB4C68BCFAD5A773EFD04F5472984000960F67E +261B9152A176B230EB447633653ED0CBD3F50B214773DB454E89625BE27B7B75C93330E1F782BE +EA101988B04AEF3601BA7FE868F614035647349D97F9F1AA598FD808885D91F5E24FE348015E46 +D80FCC9E62 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +%!PS-Adobe-2.0 +%%Version: 0.1 +%%Creator: troff, Plan 9 edition +%%Pages: (atend) +%%EndComments +% +% Version 3.3.2 prologue for troff files. +% + +/#copies 1 store +/aspectratio 1 def +/formsperpage 1 def +/landscape false def +/linewidth .3 def +/magnification 1 def +/margin 0 def +/orientation 0 def +/resolution 720 def +/rotation 1 def +/xoffset 0 def +/yoffset 0 def + +/roundpage true def +/useclippath true def +/pagebbox [0 0 612 792] def + +/R /Times-Roman def +/I /Times-Italic def +/B /Times-Bold def +/BI /Times-BoldItalic def +/H /Helvetica def +/HI /Helvetica-Oblique def +/HB /Helvetica-Bold def +/HX /Helvetica-BoldOblique def +/CW /Courier def +/CO /Courier def +/CI /Courier-Oblique def +/CB /Courier-Bold def +/CX /Courier-BoldOblique def +/PA /Palatino-Roman def +/PI /Palatino-Italic def +/PB /Palatino-Bold def +/PX /Palatino-BoldItalic def +/Hr /Helvetica-Narrow def +/Hi /Helvetica-Narrow-Oblique def +/Hb /Helvetica-Narrow-Bold def +/Hx /Helvetica-Narrow-BoldOblique def +/KR /Bookman-Light def +/KI /Bookman-LightItalic def +/KB /Bookman-Demi def +/KX /Bookman-DemiItalic def +/AR /AvantGarde-Book def +/AI /AvantGarde-BookOblique def +/AB /AvantGarde-Demi def +/AX /AvantGarde-DemiOblique def +/NR /NewCenturySchlbk-Roman def +/NI /NewCenturySchlbk-Italic def +/NB /NewCenturySchlbk-Bold def +/NX /NewCenturySchlbk-BoldItalic def +/ZD /ZapfDingbats def +/ZI /ZapfChancery-MediumItalic def +/S /S def +/S1 /S1 def +/GR /Symbol def + +/inch {72 mul} bind def +/min {2 copy gt {exch} if pop} bind def + +/setup { + counttomark 2 idiv {def} repeat pop + + landscape {/orientation 90 orientation add def} if + /scaling 72 resolution div def + linewidth setlinewidth + 1 setlinecap + + pagedimensions + xcenter ycenter translate + orientation rotation mul rotate + width 2 div neg height 2 div translate + xoffset inch yoffset inch neg translate + margin 2 div dup neg translate + magnification dup aspectratio mul scale + scaling scaling scale + + addmetrics + 0 0 moveto +} def + +/pagedimensions { + useclippath userdict /gotpagebbox known not and { + /pagebbox [clippath pathbbox newpath] def + roundpage currentdict /roundpagebbox known and {roundpagebbox} if + } if + pagebbox aload pop + 4 -1 roll exch 4 1 roll 4 copy + landscape {4 2 roll} if + sub /width exch def + sub /height exch def + add 2 div /xcenter exch def + add 2 div /ycenter exch def + userdict /gotpagebbox true put +} def + +/addmetrics { + /Symbol /S null Sdefs cf + /Times-Roman /S1 StandardEncoding dup length array copy S1defs cf +} def + +/pagesetup { + /page exch def + currentdict /pagedict known currentdict page known and { + page load pagedict exch get cvx exec + } if +} def + +/decodingdefs [ + {counttomark 2 idiv {y moveto show} repeat} + {neg /y exch def counttomark 2 idiv {y moveto show} repeat} + {neg moveto {2 index stringwidth pop sub exch div 0 32 4 -1 roll widthshow} repeat} + {neg moveto {spacewidth sub 0.0 32 4 -1 roll widthshow} repeat} + {counttomark 2 idiv {y moveto show} repeat} + {neg setfunnytext} +] def + +/setdecoding {/t decodingdefs 3 -1 roll get bind def} bind def + +/w {neg moveto show} bind def +/m {neg dup /y exch def moveto} bind def +/done {/lastpage where {pop lastpage} if} def + +/f { + dup /font exch def findfont exch + dup /ptsize exch def scaling div dup /size exch def scalefont setfont + linewidth ptsize mul scaling 10 mul div setlinewidth + /spacewidth ( ) stringwidth pop def +} bind def + +/changefont { + /fontheight exch def + /fontslant exch def + currentfont [ + 1 0 + fontheight ptsize div fontslant sin mul fontslant cos div + fontheight ptsize div + 0 0 + ] makefont setfont +} bind def + +/sf {f} bind def + +/cf { + dup length 2 idiv + /entries exch def + /chtab exch def + /newencoding exch def + /newfont exch def + + findfont dup length 1 add dict + /newdict exch def + {1 index /FID ne {newdict 3 1 roll put}{pop pop} ifelse} forall + + newencoding type /arraytype eq {newdict /Encoding newencoding put} if + + newdict /Metrics entries dict put + newdict /Metrics get + begin + chtab aload pop + 1 1 entries {pop def} for + newfont newdict definefont pop + end +} bind def + +% +% A few arrays used to adjust reference points and character widths in some +% of the printer resident fonts. If square roots are too high try changing +% the lines describing /radical and /radicalex to, +% +% /radical [0 -75 550 0] +% /radicalex [-50 -75 500 0] +% +% Move braceleftbt a bit - default PostScript character is off a bit. +% + +/Sdefs [ + /bracketlefttp [201 500] + /bracketleftbt [201 500] + /bracketrighttp [-81 380] + /bracketrightbt [-83 380] + /braceleftbt [203 490] + /bracketrightex [220 -125 500 0] + /radical [0 0 550 0] + /radicalex [-50 0 500 0] + /parenleftex [-20 -170 0 0] + /integral [100 -50 500 0] + /infinity [10 -75 730 0] +] def + +/S1defs [ + /underscore [0 80 500 0] + /endash [7 90 650 0] +] def +% +% Tries to round clipping path dimensions, as stored in array pagebbox, so they +% match one of the known sizes in the papersizes array. Lower left coordinates +% are always set to 0. +% + +/roundpagebbox { + 7 dict begin + /papersizes [8.5 inch 11 inch 14 inch 17 inch] def + + /mappapersize { + /val exch def + /slop .5 inch def + /diff slop def + /j 0 def + 0 1 papersizes length 1 sub { + /i exch def + papersizes i get val sub abs + dup diff le {/diff exch def /j i def} {pop} ifelse + } for + diff slop lt {papersizes j get} {val} ifelse + } def + + pagebbox 0 0 put + pagebbox 1 0 put + pagebbox dup 2 get mappapersize 2 exch put + pagebbox dup 3 get mappapersize 3 exch put + end +} bind def + +%%EndProlog +%%BeginSetup +mark +% +% Encoding vector and redefinition of findfont for the ISO Latin1 standard. +% The 18 characters missing from ROM based fonts on older printers are noted +% below. +% + +/ISOLatin1Encoding [ + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /space + /exclam + /quotedbl + /numbersign + /dollar + /percent + /ampersand + /quoteright + /parenleft + /parenright + /asterisk + /plus + /comma + /minus + /period + /slash + /zero + /one + /two + /three + /four + /five + /six + /seven + /eight + /nine + /colon + /semicolon + /less + /equal + /greater + /question + /at + /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 + /bracketleft + /backslash + /bracketright + /asciicircum + /underscore + /quoteleft + /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 + /braceleft + /bar + /braceright + /asciitilde + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /dotlessi + /grave + /acute + /circumflex + /tilde + /macron + /breve + /dotaccent + /dieresis + /.notdef + /ring + /cedilla + /.notdef + /hungarumlaut + /ogonek + /caron + /space + /exclamdown + /cent + /sterling + /currency + /yen + /brokenbar % missing + /section + /dieresis + /copyright + /ordfeminine + /guillemotleft + /logicalnot + /hyphen + /registered + /macron + /degree % missing + /plusminus % missing + /twosuperior % missing + /threesuperior % missing + /acute + /mu % missing + /paragraph + /periodcentered + /cedilla + /onesuperior % missing + /ordmasculine + /guillemotright + /onequarter % missing + /onehalf % missing + /threequarters % missing + /questiondown + /Agrave + /Aacute + /Acircumflex + /Atilde + /Adieresis + /Aring + /AE + /Ccedilla + /Egrave + /Eacute + /Ecircumflex + /Edieresis + /Igrave + /Iacute + /Icircumflex + /Idieresis + /Eth % missing + /Ntilde + /Ograve + /Oacute + /Ocircumflex + /Otilde + /Odieresis + /multiply % missing + /Oslash + /Ugrave + /Uacute + /Ucircumflex + /Udieresis + /Yacute % missing + /Thorn % missing + /germandbls + /agrave + /aacute + /acircumflex + /atilde + /adieresis + /aring + /ae + /ccedilla + /egrave + /eacute + /ecircumflex + /edieresis + /igrave + /iacute + /icircumflex + /idieresis + /eth % missing + /ntilde + /ograve + /oacute + /ocircumflex + /otilde + /odieresis + /divide % missing + /oslash + /ugrave + /uacute + /ucircumflex + /udieresis + /yacute % missing + /thorn % missing + /ydieresis +] def + +/NewFontDirectory FontDirectory maxlength dict def + +% +% Apparently no guarantee findfont is defined in systemdict so the obvious +% +% systemdict /findfont get exec +% +% can generate an error. So far the only exception is a VT600 (version 48.0). +% + +userdict /@RealFindfont known not { + userdict begin + /@RealFindfont systemdict begin /findfont load end def + end +} if + +/findfont { + dup NewFontDirectory exch known not { + dup + %dup systemdict /findfont get exec % not always in systemdict + dup userdict /@RealFindfont get exec + dup /Encoding get StandardEncoding eq { + dup length dict begin + {1 index /FID ne {def}{pop pop} ifelse} forall + /Encoding ISOLatin1Encoding def + currentdict + end + /DummyFontName exch definefont + } if + NewFontDirectory 3 1 roll put + } if + NewFontDirectory exch get +} bind def + +%%Patch from lp +%%EndPatch from lp + +setup +%%EndSetup +%%Page: 1 1 +/saveobj save def +mark +1 pagesetup +12 /LucidaSans-Demi f +(Acid Manual) 2500 1220 w +10 /LucidaSans-Italic f +(Phil Winterbottom) 2443 1480 w +(philw@plan9.bell-labs.com) 2220 1620 w +10 /LucidaSans-Demi f +(Introduction) 720 2280 w +10 /LucidaSansUnicode00 f +(Acid) 970 2436 w +(is) 1222 2436 w +(a) 1342 2436 w +(general) 1437 2436 w +(purpose,) 1838 2436 w +(source) 2307 2436 w +(level) 2669 2436 w +(symbolic) 2931 2436 w +(debugger.) 3401 2436 w +(The) 3971 2436 w +(debugger) 4193 2436 w +(is) 4699 2436 w +(built) 4820 2436 w +(around) 720 2556 w +(a) 1118 2556 w +(simple) 1227 2556 w +(command) 1602 2556 w +(language.) 2134 2556 w +(The) 2663 2556 w +(command) 2897 2556 w +(language,) 3428 2556 w +(distinct) 3956 2556 w +(from) 4368 2556 w +(the) 4653 2556 w +(lan\255) 4861 2556 w +(guage) 720 2676 w +(of) 1051 2676 w +(the) 1183 2676 w +(program) 1372 2676 w +(being) 1822 2676 w +(debugged,) 2128 2676 w +(provides) 2682 2676 w +(a) 3133 2676 w +(flexible) 3223 2676 w +(user) 3618 2676 w +(interface) 3863 2676 w +(that) 4322 2676 w +(allows) 4548 2676 w +(the) 4885 2676 w +(debugger) 720 2796 w +(interface) 1234 2796 w +(to) 1707 2796 w +(be) 1854 2796 w +(customized) 2022 2796 w +(for) 2631 2796 w +(a) 2819 2796 w +(specific) 2923 2796 w +(application) 3339 2796 w +(or) 3922 2796 w +(architecture.) 4073 2796 w +(More\255) 4763 2796 w +(over,) 720 2916 w +(it) 1008 2916 w +(provides) 1120 2916 w +(an) 1582 2916 w +(opportunity) 1745 2916 w +(to) 2359 2916 w +(write) 2503 2916 w +(test) 2789 2916 w +(and) 3016 2916 w +(verification) 3242 2916 w +(code) 3827 2916 w +(independently) 4104 2916 w +(of) 4840 2916 w +(a) 4985 2916 w +(program) 720 3036 w +10 /LucidaSansUnicode20 f +(\031) 1136 3036 w +10 /LucidaSansUnicode00 f +(s) 1168 3036 w +(source) 1256 3036 w +(code.) 1615 3036 w +(Acid) 1947 3036 w +(is) 2195 3036 w +(able) 2311 3036 w +(to) 2550 3036 w +(debug) 2684 3036 w +(multiple) 3026 3036 w +(processes) 3460 3036 w +(provided) 3977 3036 w +(they) 4441 3036 w +(share) 4684 3036 w +(a) 4985 3036 w +(common set of symbols, such as the processes in a threaded program.) 720 3156 w +(Like) 970 3312 w +(other) 1206 3312 w +(language-based) 1503 3312 w +(solutions,) 2333 3312 w +(Acid) 2849 3312 w +(presents) 3102 3312 w +(a) 3560 3312 w +(poor) 3656 3312 w +(user) 3923 3312 w +(interface) 4174 3312 w +(but) 4639 3312 w +(pro\255) 4842 3312 w +(vides) 720 3432 w +(a) 1046 3432 w +(powerful) 1176 3432 w +(debugging) 1677 3432 w +(tool.) 2273 3432 w +(Application) 2600 3432 w +(of) 3223 3432 w +(Acid) 3395 3432 w +(to) 3681 3432 w +(hard) 3853 3432 w +(problems) 4148 3432 w +(is) 4679 3432 w +(best) 4833 3432 w +(approached) 720 3552 w +(by) 1348 3552 w +(writing) 1521 3552 w +(functions) 1916 3552 w +(off-line) 2426 3552 w +(\(perhaps) 2853 3552 w +(loading) 3335 3552 w +(them) 3754 3552 w +(with) 4060 3552 w +(the) 4323 3552 w +10 /LucidaTypewriter f +(include) 4536 3552 w +10 /LucidaSansUnicode00 f +(function) 720 3672 w +(or) 1163 3672 w +(using) 1307 3672 w +(the) 1615 3672 w +(support) 1812 3672 w +(provided) 2232 3672 w +(by) 2702 3672 w +10 /LucidaSans-Italic f +(acme) 2859 3672 w +10 /LucidaSansUnicode00 f +(\(1\)\),) 3116 3672 w +(rather) 3351 3672 w +(than) 3684 3672 w +(by) 3941 3672 w +(trying) 4097 3672 w +(to) 4421 3672 w +(type) 4560 3672 w +(intri\255) 4809 3672 w +(cate Acid operations at the interactive prompt.) 720 3792 w +(Acid) 970 3948 w +(allows) 1224 3948 w +(the) 1568 3948 w +(execution) 1765 3948 w +(of) 2282 3948 w +(a) 2422 3948 w +(program) 2519 3948 w +(to) 2977 3948 w +(be) 3117 3948 w +(controlled) 3278 3948 w +(by) 3811 3948 w +(operating) 3969 3948 w +(on) 4478 3948 w +(its) 4644 3948 w +(state) 4804 3948 w +(while) 720 4068 w +(it) 1015 4068 w +(is) 1123 4068 w +(stopped) 1245 4068 w +(and) 1681 4068 w +(by) 1903 4068 w +(monitoring) 2060 4068 w +(and) 2639 4068 w +(controlling) 2861 4068 w +(its) 3427 4068 w +(execution) 3586 4068 w +(when) 4102 4068 w +(it) 4400 4068 w +(is) 4507 4068 w +(running.) 4628 4068 w +(Each) 720 4188 w +(program) 982 4188 w +(action) 1438 4188 w +(that) 1773 4188 w +(causes) 2004 4188 w +(a) 2370 4188 w +(change) 2465 4188 w +(of) 2853 4188 w +(execution) 2991 4188 w +(state) 3506 4188 w +(is) 3782 4188 w +(reflected) 3902 4188 w +(by) 4369 4188 w +(the) 4525 4188 w +(execu\255) 4721 4188 w +(tion) 720 4308 w +(of) 947 4308 w +(an) 1083 4308 w +(Acid) 1238 4308 w +(function,) 1488 4308 w +(which) 1959 4308 w +(may) 2278 4308 w +(be) 2516 4308 w +(user) 2673 4308 w +(defined.) 2921 4308 w +(A) 3389 4308 w +(library) 3495 4308 w +(of) 3842 4308 w +(default) 3977 4308 w +(functions) 4353 4308 w +(pro\255) 4842 4308 w +(vides the functionality of a normal debugger.) 720 4428 w +(A) 970 4584 w +(Plan) 1080 4584 w +(9) 1323 4584 w +(process) 1428 4584 w +(is) 1844 4584 w +(controlled) 1966 4584 w +(by) 2498 4584 w +(writing) 2655 4584 w +(messages) 3034 4584 w +(to) 3551 4584 w +(a) 3691 4584 w +(control) 3788 4584 w +(file) 4172 4584 w +(in) 4365 4584 w +(the) 4498 4584 w +10 /LucidaSans-Italic f +(proc) 4695 4584 w +10 /LucidaSansUnicode00 f +(\(3\)) 4911 4584 w +(file) 720 4704 w +(system.) 915 4704 w +(Each) 1331 4704 w +(control) 1597 4704 w +(message) 1982 4704 w +(has) 2449 4704 w +(a) 2660 4704 w +(corresponding) 2758 4704 w +(Acid) 3504 4704 w +(function,) 3759 4704 w +(which) 4235 4704 w +(sends) 4559 4704 w +(the) 4885 4704 w +(message) 720 4824 w +(to) 1190 4824 w +(the) 1334 4824 w +(process.) 1535 4824 w +(These) 1987 4824 w +(functions) 2321 4824 w +(take) 2819 4824 w +(a) 3071 4824 w +(process) 3172 4824 w +(id) 3592 4824 w +(\() 3731 4824 w +10 /LucidaSans-Italic f +(pid) 3764 4824 w +10 /LucidaSansUnicode00 f +(\)) 3915 4824 w +(as) 3995 4824 w +(an) 4148 4824 w +(argument.) 4312 4824 w +(The) 4859 4824 w +(memory) 720 4944 w +(and) 1160 4944 w +(text) 1383 4944 w +(file) 1617 4944 w +(of) 1811 4944 w +(the) 1952 4944 w +(program) 2150 4944 w +(may) 2609 4944 w +(be) 2852 4944 w +(manipulated) 3014 4944 w +(using) 3661 4944 w +(the) 3970 4944 w +(indirection) 4168 4944 w +(opera\255) 4731 4944 w +(tors.) 720 5064 w +(The) 992 5064 w +(symbol) 1223 5064 w +(table,) 1622 5064 w +(including) 1944 5064 w +(source) 2443 5064 w +(cross) 2815 5064 w +(reference,) 3120 5064 w +(is) 3658 5064 w +(available) 3788 5064 w +(to) 4262 5064 w +(an) 4411 5064 w +(Acid) 4579 5064 w +(pro\255) 4842 5064 w +(gram.) 720 5184 w +(The) 1054 5184 w +(combination) 1286 5184 w +(allows) 1940 5184 w +(complex) 2292 5184 w +(operations) 2756 5184 w +(to) 3322 5184 w +(be) 3470 5184 w +(performed) 3639 5184 w +(both) 4200 5184 w +(in) 4473 5184 w +(terms) 4614 5184 w +(of) 4942 5184 w +(control flow and data manipulation.) 720 5304 w +10 /LucidaSans-Demi f +(Input format and) 720 5544 w +10 /LucidaTypewriter f +(whatis) 1626 5544 w +10 /LucidaSansUnicode00 f +(Comments) 970 5700 w +(start) 1534 5700 w +(with) 1797 5700 w +10 /LucidaTypewriter f +(//) 2044 5700 w +10 /LucidaSansUnicode00 f +(and) 2230 5700 w +(continue) 2452 5700 w +(to) 2914 5700 w +(the) 3054 5700 w +(end) 3252 5700 w +(of) 3476 5700 w +(the) 3617 5700 w +(line.) 3815 5700 w +(Input) 4098 5700 w +(is) 4394 5700 w +(a) 4517 5700 w +(series) 4615 5700 w +(of) 4942 5700 w +(statements) 720 5820 w +(and) 1311 5820 w +(expressions) 1547 5820 w +(separated) 2185 5820 w +(by) 2718 5820 w +(semicolons.) 2889 5820 w +(At) 3553 5820 w +(the) 3715 5820 w +(top) 3926 5820 w +(level) 4142 5820 w +(of) 4419 5820 w +(the) 4572 5820 w +(inter\255) 4782 5820 w +(preter,) 720 5940 w +(the) 1098 5940 w +(builtin) 1305 5940 w +(function) 1668 5940 w +10 /LucidaTypewriter f +(print) 2121 5940 w +10 /LucidaSansUnicode00 f +(is) 2533 5940 w +(called) 2665 5940 w +(automatically) 3000 5940 w +(to) 3697 5940 w +(display) 3847 5940 w +(the) 4241 5940 w +(result) 4448 5940 w +(of) 4776 5940 w +(all) 4927 5940 w +(expressions) 720 6060 w +(except) 1344 6060 w +(function) 1709 6060 w +(calls.) 2151 6060 w +(A) 2471 6060 w +(unary) 2581 6060 w +10 /LucidaTypewriter f +(+) 2894 6060 w +10 /LucidaSansUnicode00 f +(may) 3007 6060 w +(be) 3248 6060 w +(used) 3408 6060 w +(as) 3681 6060 w +(a) 3828 6060 w +(shorthand) 3924 6060 w +(to) 4459 6060 w +(force) 4598 6060 w +(the) 4885 6060 w +(result of a function call to be printed.) 720 6180 w +(Also) 970 6336 w +(at) 1226 6336 w +(the) 1364 6336 w +(top) 1565 6336 w +(level,) 1772 6336 w +(newlines) 2072 6336 w +(are) 2540 6336 w +(treated) 2738 6336 w +(as) 3129 6336 w +(semicolons) 3281 6336 w +(by) 3871 6336 w +(the) 4032 6336 w +(parser,) 4233 6336 w +(so) 4619 6336 w +(semi\255) 4778 6336 w +(colons are unnecessary when evaluating expressions.) 720 6456 w +(When) 970 6612 w +(Acid) 1280 6612 w +(starts,) 1536 6612 w +(it) 1885 6612 w +(loads) 1996 6612 w +(the) 2300 6612 w +(default) 2500 6612 w +(program) 2884 6612 w +(modules,) 3345 6612 w +(enters) 3837 6612 w +(interactive) 4185 6612 w +(mode,) 4735 6612 w +(and) 720 6732 w +(prints) 939 6732 w +(a) 1260 6732 w +(prompt.) 1353 6732 w +(In) 1781 6732 w +(this) 1910 6732 w +(state) 2127 6732 w +(Acid) 2401 6732 w +(accepts) 2651 6732 w +(either) 3053 6732 w +(function) 3372 6732 w +(definitions) 3811 6732 w +(or) 4365 6732 w +(statements) 4505 6732 w +(to) 720 6852 w +(be) 863 6852 w +(evaluated.) 1027 6852 w +(In) 1601 6852 w +(this) 1737 6852 w +(interactive) 1961 6852 w +(mode) 2511 6852 w +(statements) 2829 6852 w +(are) 3409 6852 w +(evaluated) 3606 6852 w +(immediately,) 4117 6852 w +(while) 4787 6852 w +(function definitions are stored for later invocation.) 720 6972 w +(The) 970 7128 w +10 /LucidaTypewriter f +(whatis) 1192 7128 w +10 /LucidaSansUnicode00 f +(operator) 1665 7128 w +(can) 2121 7128 w +(be) 2330 7128 w +(used) 2490 7128 w +(to) 2763 7128 w +(report) 2902 7128 w +(the) 3242 7128 w +(state) 3438 7128 w +(of) 3715 7128 w +(identifiers) 3854 7128 w +(known) 4385 7128 w +(to) 4746 7128 w +(the) 4885 7128 w +(interpreter.) 720 7248 w +(With) 1339 7248 w +(no) 1589 7248 w +(argument,) 1748 7248 w +10 /LucidaTypewriter f +(whatis) 2284 7248 w +10 /LucidaSansUnicode00 f +(reports) 2751 7248 w +(the) 3136 7248 w +(name) 3326 7248 w +(of) 3627 7248 w +(all) 3760 7248 w +(defined) 3908 7248 w +(Acid) 4309 7248 w +(functions;) 4556 7248 w +cleartomark +showpage +saveobj restore +%%EndPage: 1 1 +%%Page: 2 2 +/saveobj save def +mark +2 pagesetup +10 /LucidaSansUnicode00 f +(\255 2 \255) 2783 480 w +(when supplied with an identifier as an argument) 720 840 w +(it) 3102 840 w +(reports) 3201 840 w +(any) 3584 840 w +(variable,) 3786 840 w +(function,) 4231 840 w +(or) 4697 840 w +(type) 4832 840 w +(definition) 720 960 w +(associated) 1240 960 w +(with) 1804 960 w +(the) 2064 960 w +(identifier.) 2274 960 w +(Because) 2832 960 w +(of) 3276 960 w +(the) 3429 960 w +(way) 3639 960 w +(the) 3878 960 w +(interpreter) 4088 960 w +(handles) 4662 960 w +(semicolons,) 720 1080 w +(the) 1334 1080 w +(result) 1528 1080 w +(of) 1843 1080 w +(a) 1980 1080 w +10 /LucidaTypewriter f +(whatis) 2074 1080 w +10 /LucidaSansUnicode00 f +(statement) 2545 1080 w +(can) 3068 1080 w +(be) 3275 1080 w +(returned) 3433 1080 w +(directly) 3890 1080 w +(to) 4287 1080 w +(Acid) 4424 1080 w +(without) 4675 1080 w +(adding) 720 1200 w +(semicolons.) 1102 1200 w +(A) 1758 1200 w +(syntax) 1875 1200 w +(error) 2240 1200 w +(or) 2527 1200 w +(interrupt) 2676 1200 w +(returns) 3151 1200 w +(Acid) 3548 1200 w +(to) 3807 1200 w +(the) 3952 1200 w +(normal) 4154 1200 w +(evaluation) 4542 1200 w +(mode; any partially evaluated definitions are lost.) 720 1320 w +10 /LucidaSans-Demi f +(Using the Library Functions) 720 1560 w +10 /LucidaSansUnicode00 f +(After) 970 1716 w +(loading) 1245 1716 w +(the) 1641 1716 w +(program) 1831 1716 w +(binary,) 2282 1716 w +(Acid) 2651 1716 w +(loads) 2898 1716 w +(the) 3192 1716 w +(portable) 3382 1716 w +(and) 3822 1716 w +(architecture-specific) 4037 1716 w +(library) 720 1836 w +(functions) 1073 1836 w +(that) 1600 1836 w +(form) 1834 1836 w +(the) 2109 1836 w +(standard) 2307 1836 w +(debugging) 2777 1836 w +(environment.) 3341 1836 w +(These) 4059 1836 w +(files) 4390 1836 w +(are) 4634 1836 w +(Acid) 4828 1836 w +(source) 720 1956 w +(code) 1076 1956 w +(and) 1341 1956 w +(are) 1555 1956 w +(human-readable.) 1741 1956 w +(The) 2649 1956 w +(following) 2864 1956 w +(example) 3346 1956 w +(uses) 3794 1956 w +(the) 4049 1956 w +(standard) 4239 1956 w +(debug\255) 4701 1956 w +(ging library to show how language and program interact:) 720 2076 w +9 /LucidaTypewriter f +(%) 1008 2246 w +(acid) 1138 2246 w +(/bin/ls) 1463 2246 w +(/bin/ls:mips) 1008 2356 w +(plan) 1853 2356 w +(9) 2178 2356 w +(executable) 2308 2356 w +(/sys/lib/acid/port) 1008 2576 w +(/sys/lib/acid/mips) 1008 2686 w +(acid:) 1008 2796 w +(new\(\)) 1398 2796 w +(75721:) 1008 2906 w +(system) 1463 2906 w +(call) 1918 2906 w +(_main) 2308 2906 w +(ADD) 2698 2906 w +($-0x14,R29) 3023 2906 w +(75721:) 1008 3016 w +(breakpoint) 1463 3016 w +(main+0x4) 2308 3016 w +(MOVW) 3023 3016 w +(R31,0x0\(R29\)) 3413 3016 w +(acid:) 1008 3126 w +(bpset\(ls\)) 1398 3126 w +(acid:) 1008 3236 w +(cont\(\)) 1398 3236 w +(75721:) 1008 3346 w +(breakpoint) 1463 3346 w +(ls) 2308 3346 w +(ADD) 2698 3346 w +($-0x16c8,R29) 3023 3346 w +(acid:) 1008 3456 w +(stk\(\)) 1398 3456 w +(At) 1008 3566 w +(pc:0x0000141c:ls) 1203 3566 w +(/sys/src/cmd/ls.c:87) 2308 3566 w +(ls\(s=0x0000004d,multi=0x00000000\)) 1008 3676 w +(/sys/src/cmd/ls.c:87) 3218 3676 w +(called) 1268 3786 w +(from) 1723 3786 w +(main+0xf4) 2048 3786 w +(/sys/src/cmd/ls.c:79) 2698 3786 w +(main\(argc=0x00000000,argv=0x7ffffff0\)) 1008 3896 w +(/sys/src/cmd/ls.c:48) 3478 3896 w +(called) 1268 4006 w +(from) 1723 4006 w +(_main+0x20) 2048 4006 w +(/sys/src/libc/mips/main9.s:10) 2763 4006 w +(acid:) 1008 4116 w +(PC) 1398 4116 w +(0xc0000f60) 1008 4226 w +(acid:) 1008 4336 w +(*PC) 1398 4336 w +(0x0000141c) 1008 4446 w +(acid:) 1008 4556 w +(ls) 1398 4556 w +(0x0000141c) 1008 4666 w +10 /LucidaSansUnicode00 f +(The) 720 4846 w +(function) 948 4846 w +10 /LucidaTypewriter f +(new\(\)) 1396 4846 w +10 /LucidaSansUnicode00 f +(creates) 1803 4846 w +(a) 2197 4846 w +(new) 2299 4846 w +(process) 2541 4846 w +(and) 2962 4846 w +(stops) 3190 4846 w +(it) 3501 4846 w +(at) 3615 4846 w +(the) 3755 4846 w +(first) 3958 4846 w +(instruction.) 4201 4846 w +(This) 4835 4846 w +(change) 720 4966 w +(in) 1109 4966 w +(state) 1241 4966 w +(is) 1518 4966 w +(reported) 1639 4966 w +(by) 2098 4966 w +(a) 2254 4966 w +(call) 2350 4966 w +(to) 2555 4966 w +(the) 2694 4966 w +(Acid) 2890 4966 w +(function) 3143 4966 w +10 /LucidaTypewriter f +(stopped) 3585 4966 w +10 /LucidaSansUnicode00 f +(,) 4089 4966 w +(which) 4161 4966 w +(is) 4482 4966 w +(called) 4602 4966 w +(by) 4925 4966 w +(the) 720 5086 w +(interpreter) 910 5086 w +(whenever) 1464 5086 w +(the) 1961 5086 w +(debugged) 2151 5086 w +(program) 2673 5086 w +(stops.) 3124 5086 w +10 /LucidaTypewriter f +(Stopped) 3486 5086 w +10 /LucidaSansUnicode00 f +(prints) 4025 5086 w +(the) 4344 5086 w +(status) 4535 5086 w +(line) 4864 5086 w +(giving) 720 5206 w +(the) 1057 5206 w +(pid,) 1253 5206 w +(the) 1481 5206 w +(reason) 1677 5206 w +(the) 2044 5206 w +(program) 2240 5206 w +(stopped) 2697 5206 w +(and) 3132 5206 w +(the) 3353 5206 w +(address) 3549 5206 w +(and) 3970 5206 w +(instruction) 4191 5206 w +(at) 4753 5206 w +(the) 4885 5206 w +(current) 720 5326 w +(PC.) 1114 5326 w +(The) 1346 5326 w +(function) 1571 5326 w +10 /LucidaTypewriter f +(bpset) 2016 5326 w +10 /LucidaSansUnicode00 f +(makes) 2420 5326 w +(an) 2777 5326 w +(entry) 2938 5326 w +(in) 3230 5326 w +(the) 3365 5326 w +(breakpoint) 3564 5326 w +(table) 4133 5326 w +(and) 4418 5326 w +(plants) 4643 5326 w +(a) 4985 5326 w +(breakpoint) 720 5446 w +(in) 1296 5446 w +(memory.) 1438 5446 w +(The) 1949 5446 w +10 /LucidaTypewriter f +(cont) 2181 5446 w +10 /LucidaSansUnicode00 f +(function) 2520 5446 w +(continues) 2972 5446 w +(the) 3494 5446 w +(process,) 3700 5446 w +(allowing) 4157 5446 w +(it) 4611 5446 w +(to) 4727 5446 w +(run) 4875 5446 w +(until) 720 5566 w +(some) 991 5566 w +(condition) 1304 5566 w +(causes) 1811 5566 w +(it) 2189 5566 w +(to) 2308 5566 w +(stop.) 2459 5566 w +(In) 2756 5566 w +(this) 2900 5566 w +(case) 3132 5566 w +(the) 3398 5566 w +(program) 3606 5566 w +(hits) 4075 5566 w +(the) 4307 5566 w +(breakpoint) 4515 5566 w +(placed) 720 5686 w +(on) 1073 5686 w +(the) 1232 5686 w +(function) 1423 5686 w +10 /LucidaTypewriter f +(ls) 1860 5686 w +10 /LucidaSansUnicode00 f +(in) 2040 5686 w +(the) 2167 5686 w +(C) 2358 5686 w +(program.) 2463 5686 w +(Once) 2947 5686 w +(again) 3230 5686 w +(the) 3529 5686 w +10 /LucidaTypewriter f +(stopped) 3720 5686 w +10 /LucidaSansUnicode00 f +(routine) 4259 5686 w +(is) 4642 5686 w +(called) 4757 5686 w +(to) 720 5806 w +(print) 859 5806 w +(the) 1132 5806 w +(status) 1328 5806 w +(of) 1662 5806 w +(the) 1801 5806 w +(program.) 1997 5806 w +(The) 2486 5806 w +(function) 2708 5806 w +10 /LucidaTypewriter f +(stk) 3150 5806 w +10 /LucidaSansUnicode00 f +(prints) 3407 5806 w +(a) 3732 5806 w +(C) 3829 5806 w +(stack) 3940 5806 w +(trace) 4234 5806 w +(of) 4516 5806 w +(the) 4656 5806 w +(cur\255) 4853 5806 w +(rent) 720 5926 w +(process.) 952 5926 w +(It) 1394 5926 w +(is) 1496 5926 w +(implemented) 1612 5926 w +(using) 2285 5926 w +(a) 2587 5926 w +(builtin) 2678 5926 w +(Acid) 3025 5926 w +(function) 3273 5926 w +(that) 3710 5926 w +(returns) 3937 5926 w +(the) 4323 5926 w +(stack) 4513 5926 w +(trace) 4800 5926 w +(as) 720 6046 w +(a) 867 6046 w +(list;) 963 6046 w +(the) 1182 6046 w +(code) 1378 6046 w +(that) 1650 6046 w +(formats) 1883 6046 w +(the) 2300 6046 w +(information) 2497 6046 w +(is) 3106 6046 w +(all) 3228 6046 w +(written) 3383 6046 w +(in) 3764 6046 w +(Acid.) 3897 6046 w +(The) 4183 6046 w +(Acid) 4406 6046 w +(variable) 4660 6046 w +10 /LucidaTypewriter f +(PC) 720 6166 w +10 /LucidaSansUnicode00 f +(holds) 901 6166 w +(the) 1204 6166 w +(address) 1396 6166 w +(of) 1813 6166 w +(the) 1947 6166 w +(cell) 2138 6166 w +(where) 2339 6166 w +(the) 2667 6166 w +(current) 2858 6166 w +(value) 3244 6166 w +(of) 3534 6166 w +(the) 3668 6166 w +(processor) 3859 6166 w +(register) 4371 6166 w +10 /LucidaTypewriter f +(PC) 4780 6166 w +10 /LucidaSansUnicode00 f +(is) 4960 6166 w +(stored.) 720 6286 w +(By) 1125 6286 w +(indirecting) 1299 6286 w +(through) 1884 6286 w +(the) 2335 6286 w +(value) 2554 6286 w +(of) 2872 6286 w +10 /LucidaTypewriter f +(PC) 3034 6286 w +10 /LucidaSansUnicode00 f +(the) 3242 6286 w +(address) 3461 6286 w +(where) 3905 6286 w +(the) 4261 6286 w +(program) 4480 6286 w +(is) 4960 6286 w +(stopped) 720 6406 w +(can) 1154 6406 w +(be) 1362 6406 w +(found.) 1521 6406 w +(All) 1910 6406 w +(of) 2077 6406 w +(the) 2215 6406 w +(processor) 2410 6406 w +(registers) 2926 6406 w +(are) 3390 6406 w +(available) 3582 6406 w +(by) 4045 6406 w +(the) 4200 6406 w +(same) 4395 6406 w +(mecha\255) 4690 6406 w +(nism.) 720 6526 w +10 /LucidaSans-Demi f +(Types) 720 6766 w +10 /LucidaSansUnicode00 f +(An) 970 6922 w +(Acid) 1138 6922 w +(variable) 1388 6922 w +(has) 1806 6922 w +(one) 2012 6922 w +(of) 2229 6922 w +(four) 2365 6922 w +(types:) 2604 6922 w +10 /LucidaSans-Italic f +(integer) 2933 6922 w +10 /LucidaSansUnicode00 f +(,) 3277 6922 w +10 /LucidaSans-Italic f +(float) 3347 6922 w +10 /LucidaSansUnicode00 f +(,) 3570 6922 w +10 /LucidaSans-Italic f +(list) 3640 6922 w +10 /LucidaSansUnicode00 f +(,) 3785 6922 w +(or) 3855 6922 w +10 /LucidaSans-Italic f +(string) 3995 6922 w +10 /LucidaSansUnicode00 f +(.) 4282 6922 w +(The) 4384 6922 w +(type) 4603 6922 w +(of) 4849 6922 w +(a) 4985 6922 w +(variable) 720 7042 w +(is) 1143 7042 w +(inferred) 1266 7042 w +(from) 1694 7042 w +(the) 1969 7042 w +(type) 2167 7042 w +(of) 2418 7042 w +(the) 2559 7042 w +(right-hand) 2757 7042 w +(side) 3331 7042 w +(of) 3572 7042 w +(the) 3712 7042 w +(assignment) 3909 7042 w +(expression) 4509 7042 w +(which) 720 7162 w +(last) 1041 7162 w +(set) 1253 7162 w +(its) 1437 7162 w +(value.) 1594 7162 w +(Referencing) 1952 7162 w +(a) 2567 7162 w +(variable) 2662 7162 w +(that) 3082 7162 w +(has) 3313 7162 w +(not) 3522 7162 w +(yet) 3723 7162 w +(been) 3909 7162 w +(assigned) 4187 7162 w +(draws) 4657 7162 w +(a) 4985 7162 w +("used) 720 7282 w +(but) 1030 7282 w +(not) 1232 7282 w +(set") 1432 7282 w +(error.) 1653 7282 w +(Many) 1965 7282 w +(of) 2260 7282 w +(the) 2398 7282 w +(operators) 2593 7282 w +(may) 3099 7282 w +(be) 3339 7282 w +(applied) 3498 7282 w +(to) 3896 7282 w +(more) 4034 7282 w +(than) 4325 7282 w +(one) 4581 7282 w +(type;) 4800 7282 w +cleartomark +showpage +saveobj restore +%%EndPage: 2 2 +%%Page: 3 3 +/saveobj save def +mark +3 pagesetup +10 /LucidaSansUnicode00 f +(\255 3 \255) 2783 480 w +(for) 720 840 w +(these) 927 840 w +(operators) 1257 840 w +(the) 1791 840 w +(action) 2014 840 w +(of) 2377 840 w +(the) 2543 840 w +(operator) 2766 840 w +(is) 3249 840 w +(determined) 3397 840 w +(by) 4021 840 w +(the) 4204 840 w +(types) 4428 840 w +(of) 4756 840 w +(its) 4923 840 w +(operands.) 720 960 w +(The) 1240 960 w +(action) 1457 960 w +(of) 1788 960 w +(each) 1922 960 w +(operator) 2182 960 w +(is) 2633 960 w +(defined) 2749 960 w +(in) 3151 960 w +(the) 3277 960 w +10 /LucidaSans-Italic f +(Expressions) 3467 960 w +10 /LucidaSansUnicode00 f +(section) 4068 960 w +(of) 4450 960 w +(this) 4583 960 w +(man\255) 4797 960 w +(ual.) 720 1080 w +10 /LucidaSans-Demi f +(Variables) 720 1320 w +10 /LucidaSansUnicode00 f +(Acid) 970 1476 w +(has) 1236 1476 w +(three) 1458 1476 w +(kinds) 1764 1476 w +(of) 2081 1476 w +(variables:) 2233 1476 w +(variables) 2750 1476 w +(defined) 3235 1476 w +(by) 3655 1476 w +(the) 3824 1476 w +(symbol) 4033 1476 w +(table) 4437 1476 w +(of) 4732 1476 w +(the) 4885 1476 w +(debugged) 720 1596 w +(program,) 1247 1596 w +(variables) 1735 1596 w +(that) 2206 1596 w +(are) 2437 1596 w +(defined) 2629 1596 w +(and) 3035 1596 w +(maintained) 3254 1596 w +(by) 3834 1596 w +(the) 3988 1596 w +(interpreter) 4182 1596 w +(as) 4740 1596 w +(the) 4885 1596 w +(debugged program changes state, and variables defined and used by Acid programs.) 720 1716 w +(Some) 970 1872 w +(examples) 1270 1872 w +(of) 1770 1872 w +(variables) 1904 1872 w +(maintained) 2371 1872 w +(by) 2949 1872 w +(the) 3101 1872 w +(interpreter) 3293 1872 w +(are) 3849 1872 w +(the) 4038 1872 w +(register) 4230 1872 w +(pointers) 4640 1872 w +(listed) 720 1992 w +(by) 1036 1992 w +(name) 1202 1992 w +(in) 1519 1992 w +(the) 1661 1992 w +(Acid) 1867 1992 w +(list) 2130 1992 w +(variable) 2326 1992 w +10 /LucidaTypewriter f +(registers) 2756 1992 w +10 /LucidaSansUnicode00 f +(,) 3404 1992 w +(and) 3486 1992 w +(the) 3716 1992 w +(symbol) 3921 1992 w +(table) 4320 1992 w +(listed) 4610 1992 w +(by) 4925 1992 w +(name and contents in the Acid variable) 720 2112 w +10 /LucidaTypewriter f +(symbols) 2645 2112 w +10 /LucidaSansUnicode00 f +(.) 3149 2112 w +(The) 970 2268 w +(variable) 1190 2268 w +10 /LucidaTypewriter f +(pid) 1609 2268 w +10 /LucidaSansUnicode00 f +(is) 1864 2268 w +(updated) 1983 2268 w +(by) 2421 2268 w +(the) 2575 2268 w +(interpreter) 2769 2268 w +(to) 3327 2268 w +(select) 3464 2268 w +(the) 3783 2268 w +(most) 3977 2268 w +(recently) 4258 2268 w +(created) 4681 2268 w +(process or the process selected by the) 720 2388 w +10 /LucidaTypewriter f +(setproc) 2618 2388 w +10 /LucidaSansUnicode00 f +(builtin function.) 3154 2388 w +10 /LucidaSans-Demi f +(Formats) 720 2628 w +10 /LucidaSansUnicode00 f +(In) 970 2784 w +(addition) 1095 2784 w +(to) 1528 2784 w +(a) 1660 2784 w +(type,) 1749 2784 w +(variables) 2023 2784 w +(have) 2489 2784 w +(formats.) 2749 2784 w +(The) 3191 2784 w +(format) 3407 2784 w +(is) 3766 2784 w +(a) 3881 2784 w +(code) 3971 2784 w +(letter) 4237 2784 w +(that) 4528 2784 w +(deter\255) 4754 2784 w +(mines) 720 2904 w +(the) 1056 2904 w +(printing) 1256 2904 w +(style) 1686 2904 w +(and) 1956 2904 w +(the) 2181 2904 w +(effect) 2381 2904 w +(of) 2700 2904 w +(some) 2843 2904 w +(of) 3149 2904 w +(the) 3292 2904 w +(operators) 3491 2904 w +(on) 4001 2904 w +(that) 4168 2904 w +(variable.) 4403 2904 w +(The) 4859 2904 w +(format codes are derived from the format letters used by) 720 3024 w +10 /LucidaSans-Italic f +(db) 3523 3024 w +10 /LucidaSansUnicode00 f +(\(1\).) 3645 3024 w +(By) 3871 3024 w +(default,) 4014 3024 w +(symbol) 4418 3024 w +(table) 4800 3024 w +(variables) 720 3144 w +(and) 1188 3144 w +(numeric) 1405 3144 w +(constants) 1836 3144 w +(are) 2340 3144 w +(assigned) 2528 3144 w +(the) 2993 3144 w +(format) 3184 3144 w +(code) 3544 3144 w +10 /LucidaTypewriter f +(X) 3811 3144 w +10 /LucidaSansUnicode00 f +(,) 3883 3144 w +(which) 3951 3144 w +(specifies) 4268 3144 w +(32-bit) 4727 3144 w +(hexadecimal.) 720 3264 w +(Printing) 1439 3264 w +(a) 1861 3264 w +(variable) 1961 3264 w +(with) 2386 3264 w +(this) 2636 3264 w +(code) 2860 3264 w +(yields) 3136 3264 w +(the) 3461 3264 w +(output) 3661 3264 w +10 /LucidaTypewriter f +(0x00123456) 4029 3264 w +10 /LucidaSansUnicode00 f +(.) 4749 3264 w +(The) 4859 3264 w +(format) 720 3384 w +(code) 1080 3384 w +(of) 1347 3384 w +(a) 1481 3384 w +(variable) 1571 3384 w +(may) 1986 3384 w +(be) 2221 3384 w +(changed) 2375 3384 w +(from) 2821 3384 w +(the) 3088 3384 w +(default) 3278 3384 w +(by) 3652 3384 w +(using) 3802 3384 w +(the) 4103 3384 w +(builtin) 4293 3384 w +(function) 4639 3384 w +10 /LucidaTypewriter f +(fmt) 720 3504 w +10 /LucidaSansUnicode00 f +(.) 936 3504 w +(This) 1045 3504 w +(function) 1295 3504 w +(takes) 1741 3504 w +(two) 2043 3504 w +(arguments,) 2263 3504 w +(an) 2859 3504 w +(expression) 3021 3504 w +(and) 3597 3504 w +(a) 3822 3504 w +(format) 3922 3504 w +(code.) 4291 3504 w +(After) 4599 3504 w +(the) 4885 3504 w +(expression) 720 3624 w +(is) 1301 3624 w +(evaluated) 1431 3624 w +(the) 1946 3624 w +(new) 2151 3624 w +(format) 2396 3624 w +(code) 2770 3624 w +(is) 3051 3624 w +(attached) 3181 3624 w +(to) 3647 3624 w +(the) 3795 3624 w +(result) 3999 3624 w +(and) 4324 3624 w +(forms) 4553 3624 w +(the) 4885 3624 w +(return) 720 3744 w +(value) 1067 3744 w +(from) 1369 3744 w +10 /LucidaTypewriter f +(fmt) 1649 3744 w +10 /LucidaSansUnicode00 f +(.) 1865 3744 w +(The) 1977 3744 w +(backslash) 2207 3744 w +(operator) 2731 3744 w +(is) 3195 3744 w +(a) 3324 3744 w +(short) 3428 3744 w +(form) 3729 3744 w +(of) 4010 3744 w +10 /LucidaTypewriter f +(fmt) 4157 3744 w +10 /LucidaSansUnicode00 f +(.) 4373 3744 w +(The) 4486 3744 w +(format) 4716 3744 w +(supplied) 720 3864 w +(by) 1172 3864 w +(the) 1323 3864 w +(backslash) 1514 3864 w +(operator) 2025 3864 w +(must) 2476 3864 w +(be) 2755 3864 w +(the) 2910 3864 w +(format) 3101 3864 w +(character) 3461 3864 w +(rather) 3946 3864 w +(than) 4274 3864 w +(an) 4526 3864 w +(expres\255) 4679 3864 w +(sion.) 720 3984 w +(If) 1033 3984 w +(the) 1145 3984 w +(result) 1346 3984 w +(is) 1668 3984 w +(assigned) 1794 3984 w +(to) 2269 3984 w +(a) 2413 3984 w +(variable) 2514 3984 w +(the) 2940 3984 w +(new) 3141 3984 w +(format) 3383 3984 w +(code) 3754 3984 w +(is) 4032 3984 w +(maintained) 4159 3984 w +(in) 4747 3984 w +(the) 4885 3984 w +(variable. For example:) 720 4104 w +9 /LucidaTypewriter f +(acid:) 1008 4274 w +(x=10) 1398 4274 w +(acid:) 1008 4384 w +(print\(x\)) 1398 4384 w +(0x0000000a) 1008 4494 w +(acid:) 1008 4604 w +(x) 1398 4604 w +(=) 1528 4604 w +(fmt\(x,) 1658 4604 w +('D'\)) 2113 4604 w +(acid:) 1008 4714 w +(print\(x,) 1398 4714 w +(fmt\(x,) 1983 4714 w +('X'\)\)) 2438 4714 w +(10) 1008 4824 w +(0x0000000a) 1203 4824 w +(acid:) 1008 4934 w +(x) 1398 4934 w +(10) 1008 5044 w +(acid:) 1008 5154 w +(x\\o) 1398 5154 w +(12) 1008 5264 w +10 /LucidaSansUnicode00 f +(The supported format characters are:) 720 5444 w +10 /LucidaTypewriter f +(o) 970 5600 w +10 /LucidaSansUnicode00 f +(Print two-byte integer in octal.) 1220 5600 w +10 /LucidaTypewriter f +(O) 970 5756 w +10 /LucidaSansUnicode00 f +(Print four-byte integer in octal.) 1220 5756 w +10 /LucidaTypewriter f +(q) 970 5912 w +10 /LucidaSansUnicode00 f +(Print two-byte integer in signed octal.) 1220 5912 w +10 /LucidaTypewriter f +(Q) 970 6068 w +10 /LucidaSansUnicode00 f +(Print four-byte integer in signed octal.) 1220 6068 w +10 /LucidaTypewriter f +(B) 970 6224 w +10 /LucidaSansUnicode00 f +(Print four-byte integer in binary.) 1220 6224 w +10 /LucidaTypewriter f +(d) 970 6380 w +10 /LucidaSansUnicode00 f +(Print two-byte integer in signed decimal.) 1220 6380 w +10 /LucidaTypewriter f +(D) 970 6536 w +10 /LucidaSansUnicode00 f +(Print four-byte integer in signed decimal.) 1220 6536 w +10 /LucidaTypewriter f +(V) 970 6692 w +10 /LucidaSansUnicode00 f +(Print eight-byte integer in signed decimal.) 1220 6692 w +10 /LucidaTypewriter f +(Z) 970 6848 w +10 /LucidaSansUnicode00 f +(Print eight-byte integer in unsigned decimal.) 1220 6848 w +10 /LucidaTypewriter f +(x) 970 7004 w +10 /LucidaSansUnicode00 f +(Print two-byte integer in hexadecimal.) 1220 7004 w +10 /LucidaTypewriter f +(X) 970 7160 w +10 /LucidaSansUnicode00 f +(Print four-byte integer in hexadecimal.) 1220 7160 w +10 /LucidaTypewriter f +(Y) 970 7316 w +10 /LucidaSansUnicode00 f +(Print eight-byte integer in hexadecimal.) 1220 7316 w +cleartomark +showpage +saveobj restore +%%EndPage: 3 3 +%%Page: 4 4 +/saveobj save def +mark +4 pagesetup +10 /LucidaSansUnicode00 f +(\255 4 \255) 2783 480 w +10 /LucidaTypewriter f +(u) 970 840 w +10 /LucidaSansUnicode00 f +(Print two-byte integer in unsigned decimal.) 1220 840 w +10 /LucidaTypewriter f +(U) 970 996 w +10 /LucidaSansUnicode00 f +(Print four-byte integer in unsigned decimal.) 1220 996 w +10 /LucidaTypewriter f +(f) 970 1152 w +10 /LucidaSansUnicode00 f +(Print single-precision floating point number.) 1220 1152 w +10 /LucidaTypewriter f +(F) 970 1308 w +10 /LucidaSansUnicode00 f +(Print double-precision floating point number.) 1220 1308 w +10 /LucidaTypewriter f +(g) 970 1464 w +10 /LucidaSansUnicode00 f +(Print a single precision floating point number in string format.) 1220 1464 w +10 /LucidaTypewriter f +(G) 970 1620 w +10 /LucidaSansUnicode00 f +(Print a double precision floating point number in string format.) 1220 1620 w +10 /LucidaTypewriter f +(b) 970 1776 w +10 /LucidaSansUnicode00 f +(Print byte in hexadecimal.) 1220 1776 w +10 /LucidaTypewriter f +(c) 970 1932 w +10 /LucidaSansUnicode00 f +(Print byte as an ASCII character.) 1220 1932 w +10 /LucidaTypewriter f +(C) 970 2088 w +10 /LucidaSansUnicode00 f +(Like) 1220 2088 w +10 /LucidaTypewriter f +(c) 1486 2088 w +10 /LucidaSansUnicode00 f +(,) 1558 2088 w +(with) 1661 2088 w +(printable) 1937 2088 w +(ASCII) 2443 2088 w +(characters) 2764 2088 w +(represented) 3335 2088 w +(normally) 3988 2088 w +(and) 4481 2088 w +(others) 4732 2088 w +(printed in the form) 1220 2208 w +10 /LucidaTypewriter f +(\\x) 2177 2208 w +10 /LucidaSans-Italic f +(nn) 2321 2208 w +10 /LucidaSansUnicode00 f +(.) 2445 2208 w +10 /LucidaTypewriter f +(s) 970 2364 w +10 /LucidaSansUnicode00 f +(Interpret) 1220 2364 w +(the) 1684 2364 w +(addressed) 1881 2364 w +(bytes) 2422 2364 w +(as) 2723 2364 w +(UTF) 2871 2364 w +(characters) 3099 2364 w +(and) 3641 2364 w +(print) 3864 2364 w +(successive) 4139 2364 w +(charac\255) 4692 2364 w +(ters until a zero byte is reached.) 1220 2484 w +10 /LucidaTypewriter f +(r) 970 2640 w +10 /LucidaSansUnicode00 f +(Print a two-byte integer as a rune.) 1220 2640 w +10 /LucidaTypewriter f +(R) 970 2796 w +10 /LucidaSansUnicode00 f +(Print successive two-byte integers as runes until a zero rune is reached.) 1220 2796 w +10 /LucidaTypewriter f +(i) 970 2952 w +10 /LucidaSansUnicode00 f +(Print as machine instructions.) 1220 2952 w +10 /LucidaTypewriter f +(I) 970 3108 w +10 /LucidaSansUnicode00 f +(As) 1220 3108 w +10 /LucidaTypewriter f +(i) 1382 3108 w +10 /LucidaSansUnicode00 f +(above,) 1496 3108 w +(but) 1858 3108 w +(print) 2063 3108 w +(the) 2338 3108 w +(machine) 2536 3108 w +(instructions) 2987 3108 w +(in) 3603 3108 w +(an) 3737 3108 w +(alternate) 3897 3108 w +(form) 4368 3108 w +(if) 4643 3108 w +(possi\255) 4752 3108 w +(ble:) 1220 3228 w +10 /LucidaTypewriter f +(sunsparc) 1432 3228 w +10 /LucidaSansUnicode00 f +(and) 2040 3228 w +10 /LucidaTypewriter f +(mipsco) 2252 3228 w +10 /LucidaSansUnicode00 f +(reproduce the manufacturers) 2716 3228 w +10 /LucidaSansUnicode20 f +(\031) 4132 3228 w +10 /LucidaSansUnicode00 f +(syntax.) 4196 3228 w +10 /LucidaTypewriter f +(a) 970 3384 w +10 /LucidaSansUnicode00 f +(Print the value in symbolic form.) 1220 3384 w +10 /LucidaSans-Demi f +(Complex types) 720 3624 w +10 /LucidaSansUnicode00 f +(Acid) 970 3780 w +(permits) 1225 3780 w +(the) 1638 3780 w +(definition) 1836 3780 w +(of) 2344 3780 w +(the) 2485 3780 w +(layout) 2683 3780 w +(of) 3022 3780 w +(memory.) 3163 3780 w +(The) 3666 3780 w +(usual) 3890 3780 w +(method) 4192 3780 w +(is) 4607 3780 w +(to) 4730 3780 w +(use) 4871 3780 w +(the) 720 3900 w +10 /LucidaTypewriter f +(-a) 918 3900 w +10 /LucidaSansUnicode00 f +(flag) 1105 3900 w +(of) 1331 3900 w +(the) 1472 3900 w +(compilers) 1670 3900 w +(to) 2187 3900 w +(produce) 2328 3900 w +(Acid-language) 2768 3900 w +(descriptions) 3523 3900 w +(of) 4159 3900 w +(data) 4299 3900 w +(structures) 4551 3900 w +(\(see) 720 4020 w +10 /LucidaSans-Italic f +(2c) 998 4020 w +10 /LucidaSansUnicode00 f +(\(1\)\)) 1111 4020 w +(although) 1356 4020 w +(such) 1869 4020 w +(definitions) 2178 4020 w +(can) 2777 4020 w +(be) 3028 4020 w +(typed) 3230 4020 w +(interactively.) 3584 4020 w +(The) 4317 4020 w +(keywords) 4581 4020 w +10 /LucidaTypewriter f +(complex) 720 4140 w +10 /LucidaSansUnicode00 f +(,) 1224 4140 w +10 /LucidaTypewriter f +(adt) 1293 4140 w +10 /LucidaSansUnicode00 f +(,) 1509 4140 w +10 /LucidaTypewriter f +(aggr) 1578 4140 w +10 /LucidaSansUnicode00 f +(,) 1866 4140 w +(and) 1935 4140 w +10 /LucidaTypewriter f +(union) 2152 4140 w +10 /LucidaSansUnicode00 f +(are) 2549 4140 w +(all) 2738 4140 w +(equivalent;) 2888 4140 w +(the) 3458 4140 w +(compiler) 3650 4140 w +(uses) 4109 4140 w +(the) 4365 4140 w +(synonyms) 4556 4140 w +(to) 720 4260 w +(document) 858 4260 w +(the) 1383 4260 w +(declarations.) 1579 4260 w +(A) 2274 4260 w +(complex) 2384 4260 w +(type) 2839 4260 w +(is) 3088 4260 w +(described) 3209 4260 w +(as) 3723 4260 w +(a) 3870 4260 w +(set) 3966 4260 w +(of) 4151 4260 w +(members,) 4290 4260 w +(each) 4816 4260 w +(containing) 720 4380 w +(a) 1273 4380 w +(format) 1371 4380 w +(letter,) 1738 4380 w +(an) 2069 4380 w +(offset) 2229 4380 w +(in) 2551 4380 w +(the) 2685 4380 w +(structure,) 2883 4380 w +(and) 3396 4380 w +(a) 3619 4380 w +(name.) 3717 4380 w +(For) 4089 4380 w +(example,) 4287 4380 w +(the) 4774 4380 w +(C) 4971 4380 w +(structure) 720 4500 w +9 /LucidaTypewriter f +(struct) 1008 4670 w +(List) 1463 4670 w +({) 1788 4670 w +(int) 1528 4780 w +(type;) 2308 4780 w +(struct) 1528 4890 w +(List) 1983 4890 w +(*next;) 2308 4890 w +(};) 1008 5000 w +10 /LucidaSansUnicode00 f +(is described by the Acid statement) 720 5180 w +9 /LucidaTypewriter f +(complex) 1008 5350 w +(List) 1528 5350 w +({) 1853 5350 w +('D') 1528 5460 w +(0) 2048 5460 w +(type;) 2568 5460 w +('X') 1528 5570 w +(4) 2048 5570 w +(next;) 2568 5570 w +(};) 1008 5680 w +10 /LucidaSans-Demi f +(Scope) 720 5980 w +10 /LucidaSansUnicode00 f +(Variables) 970 6136 w +(are) 1452 6136 w +(global) 1642 6136 w +(unless) 1979 6136 w +(they) 2328 6136 w +(are) 2573 6136 w +(either) 2763 6136 w +(parameters) 3082 6136 w +(to) 3668 6136 w +(functions) 3804 6136 w +(or) 4294 6136 w +(are) 4435 6136 w +(declared) 4626 6136 w +(as) 720 6256 w +10 /LucidaTypewriter f +(local) 872 6256 w +10 /LucidaSansUnicode00 f +(in) 1278 6256 w +(a) 1415 6256 w +(function) 1516 6256 w +(body.) 1963 6256 w +(Parameters) 2279 6256 w +(and) 2864 6256 w +(local) 3089 6256 w +(variables) 3359 6256 w +(are) 3835 6256 w +(available) 4032 6256 w +(only) 4500 6256 w +(in) 4749 6256 w +(the) 4885 6256 w +(body) 720 6376 w +(of) 996 6376 w +(the) 1131 6376 w +(function) 1323 6376 w +(in) 1761 6376 w +(which) 1889 6376 w +(they) 2207 6376 w +(are) 2451 6376 w +(instantiated.) 2640 6376 w +(Variables) 3314 6376 w +(are) 3795 6376 w +(dynamically) 3985 6376 w +(bound:) 4593 6376 w +(if) 4974 6376 w +(a) 720 6496 w +(function) 815 6496 w +(declares) 1256 6496 w +(a) 1698 6496 w +(local) 1793 6496 w +(variable) 2058 6496 w +(with) 2478 6496 w +(the) 2723 6496 w +(same) 2918 6496 w +(name) 3213 6496 w +(as) 3519 6496 w +(a) 3664 6496 w +(global) 3758 6496 w +(variable,) 4096 6496 w +(the) 4547 6496 w +(global) 4741 6496 w +(variable) 720 6616 w +(will) 1134 6616 w +(be) 1333 6616 w +(hidden) 1487 6616 w +(whenever) 1857 6616 w +(the) 2354 6616 w +(function) 2544 6616 w +(is) 2980 6616 w +(executing.) 3095 6616 w +(For) 3670 6616 w +(example,) 3861 6616 w +(if) 4341 6616 w +(a) 4442 6616 w +(function) 4532 6616 w +10 /LucidaTypewriter f +(f) 4968 6616 w +10 /LucidaSansUnicode00 f +(has) 720 6736 w +(a) 925 6736 w +(local) 1017 6736 w +(called) 1279 6736 w +10 /LucidaTypewriter f +(main) 1599 6736 w +10 /LucidaSansUnicode00 f +(,) 1887 6736 w +(any) 1956 6736 w +(function) 2161 6736 w +(called) 2598 6736 w +(below) 2917 6736 w +10 /LucidaTypewriter f +(f) 3239 6736 w +10 /LucidaSansUnicode00 f +(will) 3347 6736 w +(see) 3547 6736 w +(the) 3746 6736 w +(local) 3937 6736 w +(version) 4198 6736 w +(of) 4586 6736 w +10 /LucidaTypewriter f +(main) 4720 6736 w +10 /LucidaSansUnicode00 f +(,) 5008 6736 w +(not the external symbol.) 720 6856 w +cleartomark +showpage +saveobj restore +%%EndPage: 4 4 +%%Page: 5 5 +/saveobj save def +mark +5 pagesetup +10 /LucidaSansUnicode00 f +(\255 5 \255) 2783 480 w +10 /LucidaSans-Demi f +(Addressing) 720 840 w +10 /LucidaSansUnicode00 f +(Since) 970 996 w +(the) 1270 996 w +(symbol) 1473 996 w +(table) 1871 996 w +(specifies) 2160 996 w +(addresses,) 2632 996 w +(to) 3200 996 w +(access) 3347 996 w +(the) 3711 996 w +(value) 3915 996 w +(of) 4218 996 w +(program) 4365 996 w +(vari\255) 4830 996 w +(ables) 720 1116 w +(an) 1021 1116 w +(extra) 1185 1116 w +(level) 1482 1116 w +(of) 1751 1116 w +(indirection) 1896 1116 w +(is) 2462 1116 w +(required) 2588 1116 w +(relative) 3045 1116 w +(to) 3446 1116 w +(the) 3590 1116 w +(source) 3791 1116 w +(code.) 4159 1116 w +(For) 4500 1116 w +(consis\255) 4702 1116 w +(tency,) 720 1236 w +(the) 1046 1236 w +(registers) 1237 1236 w +(are) 1697 1236 w +(maintained) 1885 1236 w +(as) 2462 1236 w +(pointers) 2604 1236 w +(as) 3040 1236 w +(well;) 3182 1236 w +(Acid) 3441 1236 w +(variables) 3689 1236 w +(with) 4156 1236 w +(the) 4397 1236 w +(names) 4588 1236 w +(of) 4942 1236 w +(processor registers point to cells holding the saved registers.) 720 1356 w +(The) 970 1512 w +(location) 1199 1512 w +(in) 1632 1512 w +(a) 1772 1512 w +(file) 1876 1512 w +(or) 2076 1512 w +(memory) 2227 1512 w +(image) 2672 1512 w +(associated) 3016 1512 w +(with) 3574 1512 w +(an) 3828 1512 w +(address) 3994 1512 w +(is) 4423 1512 w +(calculated) 4552 1512 w +(from) 720 1632 w +(a) 986 1632 w +(map) 1075 1632 w +(associated) 1320 1632 w +(with) 1863 1632 w +(the) 2102 1632 w +(file.) 2291 1632 w +(Each) 2540 1632 w +(map) 2796 1632 w +(contains) 3041 1632 w +(one) 3483 1632 w +(or) 3696 1632 w +(more) 3831 1632 w +(quadruples) 4115 1632 w +(\() 4693 1632 w +10 /LucidaSans-Italic f +(t) 4726 1632 w +10 /LucidaSansUnicode00 f +(,) 4764 1632 w +10 /LucidaSans-Italic f +(b) 4829 1632 w +10 /LucidaSansUnicode00 f +(,) 4890 1632 w +10 /LucidaSans-Italic f +(e) 4955 1632 w +10 /LucidaSansUnicode00 f +(,) 5008 1632 w +10 /LucidaSans-Italic f +(f) 720 1752 w +10 /LucidaSansUnicode00 f +(\),) 774 1752 w +(defining) 891 1752 w +(a) 1344 1752 w +(segment) 1452 1752 w +(named) 1922 1752 w +10 /LucidaSans-Italic f +(t) 2304 1752 w +10 /LucidaSansUnicode00 f +(\(usually) 2395 1752 w +10 /LucidaTypewriter f +(text) 2821 1752 w +10 /LucidaSansUnicode00 f +(,) 3109 1752 w +10 /LucidaTypewriter f +(data) 3194 1752 w +10 /LucidaSansUnicode00 f +(,) 3482 1752 w +10 /LucidaTypewriter f +(regs) 3567 1752 w +10 /LucidaSansUnicode00 f +(,) 3855 1752 w +(or) 3940 1752 w +10 /LucidaTypewriter f +(fpregs) 4095 1752 w +10 /LucidaSansUnicode00 f +(\)) 4527 1752 w +(mapping) 4613 1752 w +(addresses) 720 1872 w +(in) 1255 1872 w +(the) 1394 1872 w +(range) 1597 1872 w +10 /LucidaSans-Italic f +(b) 1921 1872 w +10 /LucidaSansUnicode00 f +(through) 2030 1872 w +10 /LucidaSans-Italic f +(e) 2465 1872 w +10 /LucidaSansUnicode00 f +(to) 2566 1872 w +(the) 2712 1872 w +(part) 2915 1872 w +(of) 3159 1872 w +(the) 3305 1872 w +(file) 3508 1872 w +(beginning) 3707 1872 w +(at) 4242 1872 w +(offset) 4382 1872 w +10 /LucidaSans-Italic f +(f) 4709 1872 w +10 /LucidaSansUnicode00 f +(.) 4747 1872 w +(The) 4859 1872 w +(memory) 720 1992 w +(model) 1159 1992 w +(of) 1504 1992 w +(a) 1645 1992 w +(Plan) 1743 1992 w +(9) 1987 1992 w +(process) 2093 1992 w +(assumes) 2511 1992 w +(that) 2974 1992 w +(segments) 3209 1992 w +(are) 3721 1992 w +(disjoint.) 3917 1992 w +(There) 4387 1992 w +(can) 4709 1992 w +(be) 4921 1992 w +(more) 720 2112 w +(than) 1015 2112 w +(one) 1275 2112 w +(segment) 1498 2112 w +(of) 1959 2112 w +(a) 2101 2112 w +(given) 2200 2112 w +(type) 2505 2112 w +(\(e.g.,) 2757 2112 w +(a) 3048 2112 w +(process) 3146 2112 w +(may) 3563 2112 w +(have) 3806 2112 w +(more) 4074 2112 w +(than) 4368 2112 w +(one) 4627 2112 w +(text) 4849 2112 w +(segment\)) 720 2232 w +(but) 1204 2232 w +(segments) 1400 2232 w +(may) 1902 2232 w +(not) 2137 2232 w +(overlap.) 2332 2232 w +(An) 2788 2232 w +(address) 2954 2232 w +10 /LucidaSans-Italic f +(a) 3369 2232 w +10 /LucidaSansUnicode00 f +(is) 3465 2232 w +(translated) 3580 2232 w +(to) 4101 2232 w +(a) 4234 2232 w +(file) 4324 2232 w +(address) 4510 2232 w +(by) 4925 2232 w +(finding a segment for which) 720 2352 w +10 /LucidaSans-Italic f +(b) 2116 2352 w +10 /LucidaSansUnicode00 f +(+) 2209 2352 w +10 /LucidaSans-Italic f +(a) 2321 2352 w +10 /LucidaSansUnicode00 f +(<) 2414 2352 w +10 /LucidaSans-Italic f +(e) 2526 2352 w +10 /LucidaSansUnicode00 f +(; the location in the file is then) 2579 2352 w +10 /LucidaSans-Italic f +(address) 4101 2352 w +10 /LucidaSansUnicode00 f +(+) 4515 2352 w +10 /LucidaSans-Italic f +(f) 4627 2352 w +10 /LucidaSansUnicode00 f +10 /LucidaSansUnicode20 f +(\023) 4697 2352 w +10 /LucidaSans-Italic f +(b) 4779 2352 w +10 /LucidaSansUnicode00 f +(.) 4840 2352 w +(Usually,) 970 2508 w +(the) 1387 2508 w +(text) 1580 2508 w +(and) 1809 2508 w +(initialized) 2027 2508 w +(data) 2540 2508 w +(of) 2788 2508 w +(a) 2924 2508 w +(program) 3018 2508 w +(are) 3473 2508 w +(mapped) 3664 2508 w +(by) 4096 2508 w +(segments) 4250 2508 w +(called) 4757 2508 w +10 /LucidaTypewriter f +(text) 720 2628 w +10 /LucidaSansUnicode00 f +(and) 1057 2628 w +10 /LucidaTypewriter f +(data) 1286 2628 w +10 /LucidaSansUnicode00 f +(.) 1574 2628 w +(Since) 1687 2628 w +(a) 1988 2628 w +(program) 2092 2628 w +(file) 2557 2628 w +(does) 2757 2628 w +(not) 3037 2628 w +(contain) 3245 2628 w +(bss,) 3650 2628 w +(stack,) 3895 2628 w +(or) 4227 2628 w +(register) 4377 2628 w +(data,) 4798 2628 w +(these) 720 2748 w +(data) 1018 2748 w +(are) 1264 2748 w +(not) 1452 2748 w +(mapped) 1648 2748 w +(by) 2077 2748 w +(the) 2228 2748 w +(data) 2420 2748 w +(segment.) 2667 2748 w +(The) 3185 2748 w +(text) 3403 2748 w +(segment) 3631 2748 w +(is) 4085 2748 w +(mapped) 4202 2748 w +(similarly) 4632 2748 w +(in) 720 2868 w +(the) 865 2868 w +(memory) 1074 2868 w +(image) 1523 2868 w +(of) 1871 2868 w +(a) 2022 2868 w +(normal) 2130 2868 w +(\(i.e.,) 2524 2868 w +(non-kernel\)) 2791 2868 w +(process.) 3422 2868 w +(However,) 3913 2868 w +(the) 4415 2868 w +(segment) 4623 2868 w +(called) 720 2988 w +10 /LucidaTypewriter f +(*data) 1060 2988 w +10 /LucidaSansUnicode00 f +(maps) 1477 2988 w +(memory) 1796 2988 w +(from) 2249 2988 w +(the) 2538 2988 w +(beginning) 2751 2988 w +(to) 3296 2988 w +(the) 3452 2988 w +(end) 3665 2988 w +(of) 3904 2988 w +(the) 4060 2988 w +(program) 4273 2988 w +10 /LucidaSansUnicode20 f +(\031) 4689 2988 w +10 /LucidaSansUnicode00 f +(s) 4721 2988 w +(data) 4830 2988 w +(space.) 720 3108 w +(This) 1099 3108 w +(region) 1343 3108 w +(contains) 1693 3108 w +(the) 2140 3108 w +(program) 2334 3108 w +10 /LucidaSansUnicode20 f +(\031) 2750 3108 w +10 /LucidaSansUnicode00 f +(s) 2782 3108 w +(static) 2872 3108 w +(data,) 3170 3108 w +(the) 3450 3108 w +(bss,) 3643 3108 w +(the) 3878 3108 w +(heap) 4071 3108 w +(and) 4345 3108 w +(the) 4563 3108 w +(stack.) 4756 3108 w +(A) 720 3228 w +(segment) 830 3228 w +(called) 1288 3228 w +10 /LucidaTypewriter f +(*regs) 1612 3228 w +10 /LucidaSansUnicode00 f +(maps) 2014 3228 w +(the) 2318 3228 w +(registers;) 2515 3228 w +10 /LucidaTypewriter f +(*fpregs) 3013 3228 w +10 /LucidaSansUnicode00 f +(maps) 3559 3228 w +(the) 3863 3228 w +(floating) 4060 3228 w +(point) 4474 3228 w +(regis\255) 4768 3228 w +(ters.) 720 3348 w +(Sometimes) 970 3504 w +(it) 1540 3504 w +(is) 1646 3504 w +(useful) 1766 3504 w +(to) 2104 3504 w +(define) 2243 3504 w +(a) 2587 3504 w +(map) 2683 3504 w +(with) 2935 3504 w +(a) 3181 3504 w +(single) 3277 3504 w +(segment) 3607 3504 w +(mapping) 4065 3504 w +(the) 4533 3504 w +(region) 4729 3504 w +(from) 720 3624 w +(0) 987 3624 w +(to) 1085 3624 w +(0xFFFFFFFF;) 1218 3624 w +(such) 1841 3624 w +(a) 2102 3624 w +(map) 2192 3624 w +(allows) 2438 3624 w +(the) 2775 3624 w +(entire) 2965 3624 w +(file) 3281 3624 w +(to) 3467 3624 w +(be) 3599 3624 w +(examined) 3752 3624 w +(without) 4261 3624 w +(address) 4660 3624 w +(translation.) 720 3744 w +(The builtin function) 1335 3744 w +10 /LucidaTypewriter f +(map) 2324 3744 w +10 /LucidaSansUnicode00 f +(examines and modifies Acid) 2572 3744 w +10 /LucidaSansUnicode20 f +(\031) 3942 3744 w +10 /LucidaSansUnicode00 f +(s map for a process.) 3974 3744 w +10 /LucidaSans-Demi f +(Name Conflicts) 720 3984 w +10 /LucidaSansUnicode00 f +(Name) 970 4140 w +(conflicts) 1292 4140 w +(between) 1744 4140 w +(keywords) 2195 4140 w +(in) 2698 4140 w +(the) 2834 4140 w +(Acid) 3034 4140 w +(language,) 3291 4140 w +(symbols) 3811 4140 w +(in) 4256 4140 w +(the) 4392 4140 w +(program,) 4592 4140 w +(and) 720 4260 w +(previously defined functions are resolved when the interpreter starts up.) 933 4260 w +(Each name) 4520 4260 w +(is) 720 4380 w +(made) 844 4380 w +(unique) 1155 4380 w +(by) 1533 4380 w +(prefixing) 1692 4380 w +(enough) 2176 4380 w +10 /LucidaTypewriter f +($) 2585 4380 w +10 /LucidaSansUnicode00 f +(characters) 2701 4380 w +(to) 3245 4380 w +(the) 3387 4380 w +(front) 3587 4380 w +(of) 3870 4380 w +(the) 4013 4380 w +(name) 4213 4380 w +(to) 4524 4380 w +(make) 4667 4380 w +(it) 4974 4380 w +(unique. Acid reports a list of each name change at startup. The report looks like this:) 720 4500 w +9 /LucidaTypewriter f +(/bin/sam:) 1008 4670 w +(mips) 1658 4670 w +(plan) 1983 4670 w +(9) 2308 4670 w +(executable) 2438 4670 w +(/lib/acid/port) 1008 4780 w +(/lib/acid/mips) 1008 4890 w +(Symbol) 1008 5000 w +(renames:) 1463 5000 w +(append=$append) 1528 5110 w +(T/0xa4e40) 2503 5110 w +(acid:) 1008 5220 w +10 /LucidaSansUnicode00 f +(The) 720 5400 w +(symbol) 935 5400 w +10 /LucidaTypewriter f +(append) 1318 5400 w +10 /LucidaSansUnicode00 f +(is) 1784 5400 w +(both) 1898 5400 w +(a) 2155 5400 w +(keyword) 2244 5400 w +(and) 2686 5400 w +(a) 2901 5400 w +(text) 2991 5400 w +(symbol) 3217 5400 w +(in) 3601 5400 w +(the) 3727 5400 w +(program.) 3917 5400 w +(The) 4400 5400 w +(message) 4616 5400 w +(reports that the text symbol is now named) 720 5520 w +10 /LucidaTypewriter f +($append) 2821 5520 w +10 /LucidaSansUnicode00 f +(.) 3325 5520 w +10 /LucidaSans-Demi f +(Expressions) 720 5760 w +10 /LucidaSansUnicode00 f +(Operators) 970 5916 w +(have) 1493 5916 w +(the) 1759 5916 w +(same) 1955 5916 w +(binding) 2251 5916 w +(and) 2662 5916 w +(precedence) 2883 5916 w +(as) 3479 5916 w +(in) 3626 5916 w +(C.) 3758 5916 w +(For) 3932 5916 w +(operators) 4129 5916 w +(of) 4636 5916 w +(equal) 4775 5916 w +(precedence, expressions are evaluated from left to right.) 720 6036 w +10 /LucidaSans-Demi f +(Boolean expressions) 720 6276 w +10 /LucidaSansUnicode00 f +(If) 970 6432 w +(an) 1078 6432 w +(expression) 1237 6432 w +(is) 1811 6432 w +(evaluated) 1934 6432 w +(for) 2442 6432 w +(a) 2624 6432 w +(boolean) 2722 6432 w +(condition) 3152 6432 w +(the) 3650 6432 w +(test) 3848 6432 w +(performed) 4072 6432 w +(depends) 4626 6432 w +(on) 720 6552 w +(the type of the result. If the result is of) 876 6552 w +10 /LucidaSans-Italic f +(integer) 2795 6552 w +10 /LucidaSansUnicode00 f +(or) 3171 6552 w +10 /LucidaSans-Italic f +(floating) 3305 6552 w +10 /LucidaSansUnicode00 f +(type the result is true if the) 3712 6552 w +(value) 720 6672 w +(is) 1013 6672 w +(non-zero.) 1132 6672 w +(If) 1661 6672 w +(the) 1766 6672 w +(expression) 1960 6672 w +(is) 2530 6672 w +(a) 2649 6672 w +10 /LucidaSans-Italic f +(list) 2743 6672 w +10 /LucidaSansUnicode00 f +(the) 2927 6672 w +(result) 3121 6672 w +(is) 3436 6672 w +(true) 3555 6672 w +(if) 3790 6672 w +(there) 3895 6672 w +(are) 4186 6672 w +(any) 4378 6672 w +(members) 4587 6672 w +(in) 720 6792 w +(the) 853 6792 w +(list.) 1050 6792 w +(If) 1302 6792 w +(the) 1410 6792 w +(expression) 1607 6792 w +(is) 2180 6792 w +(a) 2302 6792 w +10 /LucidaSans-Italic f +(string) 2399 6792 w +10 /LucidaSansUnicode00 f +(the) 2728 6792 w +(result) 2925 6792 w +(is) 3243 6792 w +(true) 3365 6792 w +(if) 3603 6792 w +(there) 3711 6792 w +(are) 4005 6792 w +(any) 4198 6792 w +(characters) 4408 6792 w +(in) 4949 6792 w +(the string.) 720 6912 w +cleartomark +showpage +saveobj restore +%%EndPage: 5 5 +%%Page: 6 6 +/saveobj save def +mark +6 pagesetup +10 /LucidaSansUnicode00 f +(\255 6 \255) 2783 480 w +10 /LucidaSans-Italic f +(primary-expression:) 1330 900 w +(identifier) 1580 1020 w +(identifier) 1580 1140 w +10 /LucidaTypewriter f +(:) 2052 1140 w +10 /LucidaSans-Italic f +(identifier) 2156 1140 w +(constant) 1580 1260 w +10 /LucidaTypewriter f +(\() 1580 1380 w +10 /LucidaSans-Italic f +(expression) 1684 1380 w +10 /LucidaTypewriter f +(\)) 2231 1380 w +({) 1580 1500 w +10 /LucidaSans-Italic f +(elist) 1684 1500 w +10 /LucidaTypewriter f +(}) 1914 1500 w +10 /LucidaSans-Italic f +(elist:) 1330 1740 w +(expression) 1580 1860 w +(elist , expression) 1580 1980 w +10 /LucidaSansUnicode00 f +(An) 720 2160 w +(identifier) 891 2160 w +(may) 1370 2160 w +(be) 1610 2160 w +(any) 1769 2160 w +(legal) 1978 2160 w +(Acid) 2249 2160 w +(variable.) 2501 2160 w +(The) 2953 2160 w +(colon) 3174 2160 w +(operator) 3478 2160 w +(returns) 3934 2160 w +(the) 4325 2160 w +(address) 4521 2160 w +(of) 4942 2160 w +(parameters or local variables in the current stack of a program.) 720 2280 w +(For example:) 3859 2280 w +9 /LucidaTypewriter f +(*main:argc) 1008 2450 w +10 /LucidaSansUnicode00 f +(prints) 720 2630 w +(the) 1045 2630 w +(number) 1242 2630 w +(of) 1661 2630 w +(arguments) 1802 2630 w +(passed) 2364 2630 w +(into) 2746 2630 w +(main.) 2978 2630 w +(Local) 3292 2630 w +(variables) 3584 2630 w +(and) 4058 2630 w +(parameters) 4281 2630 w +(can) 4872 2630 w +(only) 720 2750 w +(be) 965 2750 w +(referenced) 1125 2750 w +(after) 1685 2750 w +(the) 1952 2750 w +(frame) 2148 2750 w +(has) 2471 2750 w +(been) 2679 2750 w +(established.) 2956 2750 w +(It) 3580 2750 w +(may) 3686 2750 w +(be) 3926 2750 w +(necessary) 4085 2750 w +(to) 4600 2750 w +(step) 4738 2750 w +(a) 4985 2750 w +(program) 720 2870 w +(over) 1182 2870 w +(the) 1438 2870 w +(first) 1639 2870 w +(few) 1880 2870 w +(instructions) 2096 2870 w +(of) 2715 2870 w +(a) 2859 2870 w +(breakpointed) 2960 2870 w +(function) 3650 2870 w +(to) 4097 2870 w +(properly) 4241 2870 w +(set) 4694 2870 w +(the) 4885 2870 w +(frame.) 720 2990 w +(Constants) 970 3146 w +(follow) 1503 3146 w +(the) 1845 3146 w +(same) 2048 3146 w +(lexical) 2351 3146 w +(rules) 2709 3146 w +(as) 2996 3146 w +(C.) 3150 3146 w +(A) 3331 3146 w +(list) 3448 3146 w +(of) 3643 3146 w +(expressions) 3790 3146 w +(delimited) 4421 3146 w +(by) 4925 3146 w +(braces) 720 3266 w +(forms) 1082 3266 w +(a) 1410 3266 w +(list) 1510 3266 w +(constructor.) 1701 3266 w +(A) 2365 3266 w +(new) 2479 3266 w +(list) 2719 3266 w +(is) 2910 3266 w +(produced) 3035 3266 w +(by) 3539 3266 w +(evaluating) 3698 3266 w +(each) 4241 3266 w +(expression) 4509 3266 w +(when the constructor is executed.) 720 3386 w +(The empty list is formed from) 2433 3386 w +10 /LucidaTypewriter f +({}) 3916 3386 w +10 /LucidaSansUnicode00 f +(.) 4060 3386 w +9 /LucidaTypewriter f +(acid:) 1008 3556 w +(x) 1398 3556 w +(=) 1528 3556 w +(10) 1658 3556 w +(acid:) 1008 3666 w +(l) 1398 3666 w +(=) 1528 3666 w +({) 1658 3666 w +(1,) 1788 3666 w +(x,) 1983 3666 w +(2\\D) 2178 3666 w +(}) 2438 3666 w +(acid:) 1008 3776 w +(x) 1398 3776 w +(=) 1528 3776 w +(20) 1658 3776 w +(acid:) 1008 3886 w +(l) 1398 3886 w +({0x00000001) 1008 3996 w +(,) 1788 3996 w +(0x0000000a) 1918 3996 w +(,) 2633 3996 w +(2) 2763 3996 w +(}) 2893 3996 w +10 /LucidaSans-Demi f +(Lists) 720 4296 w +10 /LucidaSansUnicode00 f +(Several operators manipulate lists.) 970 4452 w +10 /LucidaSans-Italic f +(list-expression:) 1330 4632 w +(primary-expression) 1580 4752 w +10 /LucidaTypewriter f +(head) 1580 4872 w +10 /LucidaSans-Italic f +(primary-expression) 1900 4872 w +10 /LucidaTypewriter f +(tail) 1580 4992 w +10 /LucidaSans-Italic f +(primary-expression) 1900 4992 w +10 /LucidaTypewriter f +(append) 1580 5112 w +10 /LucidaSans-Italic f +(expression) 2044 5112 w +10 /LucidaTypewriter f +(,) 2591 5112 w +10 /LucidaSans-Italic f +(primary-expression) 2695 5112 w +10 /LucidaTypewriter f +(delete) 1580 5232 w +10 /LucidaSans-Italic f +(expression) 2044 5232 w +10 /LucidaTypewriter f +(,) 2591 5232 w +10 /LucidaSans-Italic f +(primary-expression) 2695 5232 w +10 /LucidaSansUnicode00 f +(The) 720 5412 w +10 /LucidaSans-Italic f +(primary-expression) 934 5412 w +10 /LucidaSansUnicode00 f +(for) 1940 5412 w +10 /LucidaTypewriter f +(head) 2112 5412 w +10 /LucidaSansUnicode00 f +(and) 2433 5412 w +10 /LucidaTypewriter f +(tail) 2646 5412 w +10 /LucidaSansUnicode00 f +(must) 2968 5412 w +(yield) 3245 5412 w +(a) 3508 5412 w +(value) 3597 5412 w +(of) 3885 5412 w +(type) 4017 5412 w +10 /LucidaSans-Italic f +(list) 4259 5412 w +10 /LucidaSansUnicode00 f +(.) 4404 5412 w +(If) 4502 5412 w +(there) 4602 5412 w +(are) 4888 5412 w +(no) 720 5532 w +(elements) 892 5532 w +(in) 1381 5532 w +(the) 1521 5532 w +(list) 1725 5532 w +(the) 1920 5532 w +(value) 2124 5532 w +(of) 2427 5532 w +10 /LucidaTypewriter f +(head) 2574 5532 w +10 /LucidaSansUnicode00 f +(or) 2910 5532 w +10 /LucidaTypewriter f +(tail) 3060 5532 w +10 /LucidaSansUnicode00 f +(will) 3396 5532 w +(be) 3608 5532 w +(the) 3775 5532 w +(empty) 3978 5532 w +(list.) 4327 5532 w +(Otherwise) 4553 5532 w +10 /LucidaTypewriter f +(head) 720 5652 w +10 /LucidaSansUnicode00 f +(evaluates to the first element of the list and) 1040 5652 w +10 /LucidaTypewriter f +(tail) 3197 5652 w +10 /LucidaSansUnicode00 f +(evaluates to the rest.) 3517 5652 w +9 /LucidaTypewriter f +(acid:) 1008 5822 w +(head) 1398 5822 w +({}) 1723 5822 w +({}) 1008 5932 w +(acid:) 1008 6042 w +(head) 1398 6042 w +({1,) 1723 6042 w +(2,) 1983 6042 w +(3,) 2178 6042 w +(4}) 2373 6042 w +(0x00000001) 1008 6152 w +(acid:) 1008 6262 w +(tail) 1398 6262 w +({1,) 1723 6262 w +(2,) 1983 6262 w +(3,) 2178 6262 w +(4}) 2373 6262 w +({0x00000002) 1008 6372 w +(,) 1788 6372 w +(0x00000003) 1918 6372 w +(,) 2633 6372 w +(0x00000004) 2763 6372 w +(}) 3478 6372 w +10 /LucidaSansUnicode00 f +(The) 720 6552 w +(first) 950 6552 w +(operand) 1194 6552 w +(of) 1644 6552 w +10 /LucidaTypewriter f +(append) 1791 6552 w +10 /LucidaSansUnicode00 f +(and) 2272 6552 w +10 /LucidaTypewriter f +(delete) 2501 6552 w +10 /LucidaSansUnicode00 f +(must) 2982 6552 w +(be) 3274 6552 w +(an) 3442 6552 w +(expression) 3608 6552 w +(that) 4188 6552 w +(yields) 4428 6552 w +(a) 4758 6552 w +10 /LucidaSans-Italic f +(list) 4863 6552 w +10 /LucidaSansUnicode00 f +(.) 5008 6552 w +10 /LucidaTypewriter f +(Append) 720 6672 w +10 /LucidaSansUnicode00 f +(places) 1192 6672 w +(the) 1537 6672 w +(result) 1732 6672 w +(of) 2047 6672 w +(evaluating) 2184 6672 w +10 /LucidaSans-Italic f +(primary-expression) 2722 6672 w +10 /LucidaSansUnicode00 f +(at) 3734 6672 w +(the) 3865 6672 w +(end) 4059 6672 w +(of) 4279 6672 w +(the) 4416 6672 w +(list.) 4610 6672 w +(The) 4859 6672 w +10 /LucidaSans-Italic f +(primary-expression) 720 6792 w +10 /LucidaSansUnicode00 f +(supplied to) 1725 6792 w +10 /LucidaTypewriter f +(delete) 2303 6792 w +10 /LucidaSansUnicode00 f +(must evaluate to) 2767 6792 w +(an) 3607 6792 w +(integer;) 3757 6792 w +10 /LucidaTypewriter f +(delete) 4165 6792 w +10 /LucidaSansUnicode00 f +(removes) 4630 6792 w +(the) 720 6912 w +10 /LucidaSans-Italic f +(n) 910 6912 w +10 /LucidaSansUnicode20 f +(\031) 972 6912 w +10 /LucidaSansUnicode00 f +(th) 1004 6912 w +(item) 1138 6912 w +(from) 1388 6912 w +(the) 1655 6912 w +(list,) 1845 6912 w +(where) 2058 6912 w +10 /LucidaSans-Italic f +(n) 2385 6912 w +10 /LucidaSansUnicode00 f +(is) 2482 6912 w +(integral) 2597 6912 w +(value) 3003 6912 w +(of) 3292 6912 w +10 /LucidaSans-Italic f +(primary-expression.) 3424 6912 w +10 /LucidaSansUnicode00 f +(List) 4495 6912 w +(indices) 4699 6912 w +(are zero-based.) 720 7032 w +cleartomark +showpage +saveobj restore +%%EndPage: 6 6 +%%Page: 7 7 +/saveobj save def +mark +7 pagesetup +10 /LucidaSansUnicode00 f +(\255 7 \255) 2783 480 w +9 /LucidaTypewriter f +(acid:) 1528 830 w +(append) 1918 830 w +({1,) 2373 830 w +(2},) 2633 830 w +(3) 2893 830 w +({0x00000001) 1528 940 w +(,) 2308 940 w +(0x00000002) 2438 940 w +(,) 3153 940 w +(0x00000003) 3283 940 w +(}) 3998 940 w +(acid:) 1528 1050 w +(delete) 1918 1050 w +({1,) 2373 1050 w +(2,) 2633 1050 w +(3},) 2828 1050 w +(1) 3088 1050 w +({0x00000001) 1528 1160 w +(,) 2308 1160 w +(0x00000003) 2438 1160 w +(}) 3153 1160 w +10 /LucidaSansUnicode00 f +(Assigning a list to a variable) 970 1376 w +(copies) 2374 1376 w +(a) 2718 1376 w +(reference) 2806 1376 w +(to) 3295 1376 w +(the) 3426 1376 w +(list;) 3614 1376 w +(if) 3825 1376 w +(a) 3924 1376 w +(list) 4012 1376 w +(variable) 4191 1376 w +(is) 4604 1376 w +(copied) 4717 1376 w +(it) 720 1496 w +(still) 832 1496 w +(points) 1053 1496 w +(at) 1402 1496 w +(the) 1540 1496 w +(same) 1741 1496 w +(list.) 2042 1496 w +(To) 2298 1496 w +(copy) 2468 1496 w +(a) 2741 1496 w +(list,) 2842 1496 w +(the) 3066 1496 w +(elements) 3267 1496 w +(must) 3752 1496 w +(be) 4040 1496 w +(copied) 4204 1496 w +(piecewise) 4572 1496 w +(using) 720 1616 w +10 /LucidaTypewriter f +(head) 1018 1616 w +10 /LucidaSansUnicode00 f +(and) 1338 1616 w +10 /LucidaTypewriter f +(append) 1550 1616 w +10 /LucidaSansUnicode00 f +(.) 1982 1616 w +10 /LucidaSans-Demi f +(Operators) 720 1856 w +10 /LucidaSans-Italic f +(postfix-expression:) 1330 2072 w +(list-expression) 1580 2192 w +(postfix-expression) 1580 2312 w +10 /LucidaTypewriter f +([) 2516 2312 w +10 /LucidaSans-Italic f +(expression) 2620 2312 w +10 /LucidaTypewriter f +(]) 3167 2312 w +10 /LucidaSans-Italic f +(postfix-expression) 1580 2432 w +10 /LucidaTypewriter f +(\() 2516 2432 w +10 /LucidaSans-Italic f +(argument-list) 2620 2432 w +10 /LucidaTypewriter f +(\)) 3338 2432 w +10 /LucidaSans-Italic f +(postfix-expression) 1580 2552 w +10 /LucidaTypewriter f +(.) 2516 2552 w +10 /LucidaSans-Italic f +(tag) 2620 2552 w +(postfix-expression) 1580 2672 w +10 /LucidaTypewriter f +(->) 2516 2672 w +10 /LucidaSans-Italic f +(tag) 2692 2672 w +(postfix-expression) 1580 2792 w +10 /LucidaTypewriter f +(++) 2516 2792 w +10 /LucidaSans-Italic f +(postfix-expression) 1580 2912 w +10 /LucidaTypewriter f +(--) 2516 2912 w +10 /LucidaSans-Italic f +(argument-list:) 1330 3152 w +(expression) 1580 3272 w +(argument-list , expression) 1580 3392 w +10 /LucidaSansUnicode00 f +(The) 720 3572 w +10 /LucidaTypewriter f +([) 933 3572 w +10 /LucidaSans-Italic f +(expression) 1037 3572 w +10 /LucidaTypewriter f +(]) 1584 3572 w +10 /LucidaSansUnicode00 f +(operator performs indexing.) 1688 3572 w +(The indexing) 3130 3572 w +(expression) 3800 3572 w +(must) 4364 3572 w +(result) 4640 3572 w +(in) 4949 3572 w +(an) 720 3692 w +(expression) 886 3692 w +(of) 1465 3692 w +10 /LucidaSans-Italic f +(integer) 1611 3692 w +10 /LucidaSansUnicode00 f +(type,) 2003 3692 w +(say) 2291 3692 w +10 /LucidaSans-Italic f +(n) 2497 3692 w +10 /LucidaSansUnicode00 f +(.) 2559 3692 w +(The) 2671 3692 w +(operation) 2900 3692 w +(depends) 3413 3692 w +(on) 3875 3692 w +(the) 4046 3692 w +(type) 4249 3692 w +(of) 4505 3692 w +10 /LucidaSans-Italic f +(postfix-) 4651 3692 w +(expression) 720 3812 w +10 /LucidaSansUnicode00 f +(.) 1235 3812 w +(If) 1352 3812 w +(the) 1472 3812 w +10 /LucidaSans-Italic f +(postfix-expression) 1681 3812 w +10 /LucidaSansUnicode00 f +(yields) 2639 3812 w +(an) 2973 3812 w +10 /LucidaSans-Italic f +(integer) 3144 3812 w +10 /LucidaSansUnicode00 f +(it) 3542 3812 w +(is) 3662 3812 w +(assumed) 3796 3812 w +(to) 4281 3812 w +(be) 4433 3812 w +(the) 4606 3812 w +(base) 4815 3812 w +(address) 720 3932 w +(of) 1138 3932 w +(an) 1274 3932 w +(array) 1429 3932 w +(in) 1711 3932 w +(the) 1840 3932 w +(memory) 2033 3932 w +(image.) 2467 3932 w +(The) 2864 3932 w +(index) 3083 3932 w +(offsets) 3392 3932 w +(into) 3760 3932 w +(this) 3987 3932 w +(array;) 4204 3932 w +(the) 4518 3932 w +(size) 4711 3932 w +(of) 4942 3932 w +(the) 720 4052 w +(array) 914 4052 w +(members) 1197 4052 w +(is) 1689 4052 w +(determined) 1808 4052 w +(by) 2403 4052 w +(the) 2557 4052 w +(format) 2751 4052 w +(associated) 3115 4052 w +(with) 3664 4052 w +(the) 3909 4052 w +10 /LucidaSans-Italic f +(postfix-expression) 4104 4052 w +10 /LucidaSansUnicode00 f +(.) 5008 4052 w +(If) 720 4172 w +(the) 824 4172 w +10 /LucidaSans-Italic f +(postfix-expression) 1017 4172 w +10 /LucidaSansUnicode00 f +(yields) 1959 4172 w +(a) 2277 4172 w +10 /LucidaSans-Italic f +(string) 2370 4172 w +10 /LucidaSansUnicode00 f +(the) 2695 4172 w +(index) 2887 4172 w +(operator) 3195 4172 w +(fetches) 3647 4172 w +(the) 4034 4172 w +10 /LucidaSans-Italic f +(n) 4226 4172 w +10 /LucidaSansUnicode20 f +(\031) 4288 4172 w +10 /LucidaSansUnicode00 f +(th) 4320 4172 w +(character) 4456 4172 w +(of) 4942 4172 w +(the) 720 4292 w +(string.) 918 4292 w +(If) 1275 4292 w +(the) 1384 4292 w +(index) 1582 4292 w +(points) 1896 4292 w +(beyond) 2243 4292 w +(the) 2644 4292 w +(end) 2843 4292 w +(of) 3068 4292 w +(the) 3210 4292 w +(string,) 3409 4292 w +(a) 3767 4292 w +(zero) 3866 4292 w +(is) 4125 4292 w +(returned.) 4249 4292 w +(If) 4775 4292 w +(the) 4885 4292 w +10 /LucidaSans-Italic f +(postfix-expression) 720 4412 w +10 /LucidaSansUnicode00 f +(yields) 1664 4412 w +(a) 1984 4412 w +10 /LucidaSans-Italic f +(list) 2078 4412 w +10 /LucidaSansUnicode00 f +(then) 2262 4412 w +(the) 2518 4412 w +(indexing) 2712 4412 w +(operation) 3175 4412 w +(returns) 3679 4412 w +(the) 4068 4412 w +10 /LucidaSans-Italic f +(n) 4262 4412 w +10 /LucidaSansUnicode20 f +(\031) 4324 4412 w +10 /LucidaSansUnicode00 f +(th) 4356 4412 w +(item) 4494 4412 w +(of) 4748 4412 w +(the) 4885 4412 w +(list.) 720 4532 w +(If the list contains less than) 962 4532 w +10 /LucidaSans-Italic f +(n) 2332 4532 w +10 /LucidaSansUnicode00 f +(items the empty list) 2426 4532 w +10 /LucidaTypewriter f +({}) 3422 4532 w +10 /LucidaSansUnicode00 f +(is returned.) 3598 4532 w +(The) 970 4688 w +10 /LucidaTypewriter f +(++) 1185 4688 w +10 /LucidaSansUnicode00 f +(and) 1364 4688 w +10 /LucidaTypewriter f +(--) 1579 4688 w +10 /LucidaSansUnicode00 f +(operators) 1758 4688 w +(increment) 2259 4688 w +(and) 2781 4688 w +(decrement) 2996 4688 w +(integer) 3546 4688 w +(variables.) 3924 4688 w +(The) 4454 4688 w +(amount) 4670 4688 w +(of) 720 4808 w +(increment) 856 4808 w +(or) 1381 4808 w +(decrement) 1521 4808 w +(depends) 2073 4808 w +(on) 2524 4808 w +(the) 2684 4808 w +(format) 2876 4808 w +(code.) 3237 4808 w +(These) 3537 4808 w +(postfix) 3862 4808 w +(operators) 4238 4808 w +(return) 4741 4808 w +(the value of the variable before the increment or decrement has taken place.) 720 4928 w +10 /LucidaSans-Italic f +(unary-expression:) 1330 5108 w +(postfix-expression) 1580 5228 w +10 /LucidaTypewriter f +(++) 1580 5348 w +10 /LucidaSans-Italic f +(unary-expression) 1756 5348 w +10 /LucidaTypewriter f +(--) 1580 5468 w +10 /LucidaSans-Italic f +(unary-expression) 1756 5468 w +(unary-operator: one of) 1330 5708 w +10 /LucidaTypewriter f +(*) 1580 5828 w +(@) 1684 5828 w +(+) 1788 5828 w +(-) 1892 5828 w +10 /LucidaSans-Italic f +(~) 1996 5828 w +10 /LucidaTypewriter f +(!) 2091 5828 w +10 /LucidaSansUnicode00 f +(The) 720 6008 w +(operators) 936 6008 w +10 /LucidaTypewriter f +(*) 1437 6008 w +10 /LucidaSansUnicode00 f +(and) 1544 6008 w +10 /LucidaTypewriter f +(@) 1759 6008 w +10 /LucidaSansUnicode00 f +(are) 1866 6008 w +(the) 2053 6008 w +(indirection) 2243 6008 w +(operators.) 2798 6008 w +10 /LucidaTypewriter f +(@) 3363 6008 w +10 /LucidaSansUnicode00 f +(references) 3470 6008 w +(a) 4012 6008 w +(value) 4102 6008 w +(from) 4391 6008 w +(the) 4658 6008 w +(text) 4849 6008 w +(file) 720 6128 w +(of) 906 6128 w +(the) 1039 6128 w +(program) 1229 6128 w +(being) 1680 6128 w +(debugged.) 1987 6128 w +(The) 2573 6128 w +(size) 2789 6128 w +(of) 3016 6128 w +(the) 3148 6128 w +(value) 3337 6128 w +(depends) 3625 6128 w +(on) 4073 6128 w +(the) 4230 6128 w +(format) 4419 6128 w +(code.) 4777 6128 w +(The) 720 6248 w +10 /LucidaTypewriter f +(*) 940 6248 w +10 /LucidaSansUnicode00 f +(operator) 1051 6248 w +(fetches) 1505 6248 w +(a) 1894 6248 w +(value) 1988 6248 w +(from) 2281 6248 w +(the) 2553 6248 w +(memory) 2748 6248 w +(image) 3184 6248 w +(of) 3519 6248 w +(a) 3657 6248 w +(process.) 3752 6248 w +(If) 4198 6248 w +(either) 4304 6248 w +(operator) 4625 6248 w +(appears) 720 6368 w +(on) 1137 6368 w +(the) 1293 6368 w +(left-hand) 1481 6368 w +(side) 1973 6368 w +(of) 2205 6368 w +(an) 2336 6368 w +(assignment) 2486 6368 w +(statement,) 3077 6368 w +(either) 3626 6368 w +(the) 3940 6368 w +(file) 4128 6368 w +(or) 4312 6368 w +(memory) 4447 6368 w +(will) 4876 6368 w +(be) 720 6488 w +(written.) 875 6488 w +(The) 1282 6488 w +(file) 1499 6488 w +(can) 1686 6488 w +(only) 1890 6488 w +(be) 2130 6488 w +(modified) 2285 6488 w +(when) 2752 6488 w +(Acid) 3046 6488 w +(is) 3295 6488 w +(invoked) 3412 6488 w +(with) 3830 6488 w +(the) 4072 6488 w +10 /LucidaTypewriter f +(-w) 4264 6488 w +10 /LucidaSansUnicode00 f +(option.) 4445 6488 w +(The) 4859 6488 w +(prefix) 720 6608 w +10 /LucidaTypewriter f +(++) 1053 6608 w +10 /LucidaSansUnicode00 f +(and) 1243 6608 w +10 /LucidaTypewriter f +(--) 1469 6608 w +10 /LucidaSansUnicode00 f +(operators) 1659 6608 w +(perform) 2171 6608 w +(the) 2608 6608 w +(same) 2808 6608 w +(operation) 3108 6608 w +(as) 3618 6608 w +(their) 3769 6608 w +(postfix) 4039 6608 w +(counterparts) 4423 6608 w +(but) 720 6728 w +(return) 915 6728 w +(the) 1247 6728 w +(value) 1435 6728 w +(after) 1722 6728 w +(the) 1981 6728 w +(increment) 2169 6728 w +(or) 2689 6728 w +(decrement) 2824 6728 w +(has) 3372 6728 w +(been) 3573 6728 w +(performed.) 3844 6728 w +(Since) 4421 6728 w +(the) 4707 6728 w +10 /LucidaTypewriter f +(++) 4896 6728 w +10 /LucidaSansUnicode00 f +(and) 720 6848 w +10 /LucidaTypewriter f +(*) 946 6848 w +10 /LucidaSansUnicode00 f +(operators) 1064 6848 w +(fetch) 1576 6848 w +(and) 1865 6848 w +(increment) 2090 6848 w +(the) 2622 6848 w +(correct) 2822 6848 w +(amount) 3205 6848 w +(for) 3620 6848 w +(the) 3804 6848 w +(specified) 4004 6848 w +(format,) 4484 6848 w +(the) 4885 6848 w +(following) 720 6968 w +(function) 1202 6968 w +(prints) 1638 6968 w +(correct) 1956 6968 w +(machine) 2329 6968 w +(instructions) 2772 6968 w +(on) 3381 6968 w +(a) 3540 6968 w +(machine) 3631 6968 w +(with) 4075 6968 w +(variable) 4316 6968 w +(length) 4732 6968 w +(instructions, such as the 68020 or 386:) 720 7088 w +cleartomark +showpage +saveobj restore +%%EndPage: 7 7 +%%Page: 8 8 +/saveobj save def +mark +8 pagesetup +10 /LucidaSansUnicode00 f +(\255 8 \255) 2783 480 w +9 /LucidaTypewriter f +(defn) 1528 830 w +(asm\(addr\)) 1853 830 w +({) 1528 940 w +(addr) 2048 1050 w +(=) 2373 1050 w +(fmt\(addr,) 2503 1050 w +('i'\);) 3153 1050 w +(loop) 2048 1160 w +(1,) 2373 1160 w +(10) 2568 1160 w +(do) 2763 1160 w +(print\(*addr++,) 2568 1270 w +("\\n"\);) 3543 1270 w +(}) 1528 1380 w +10 /LucidaSansUnicode00 f +(The operators) 720 1560 w +10 /LucidaTypewriter f +(~) 1431 1560 w +10 /LucidaSansUnicode00 f +(and) 1535 1560 w +10 /LucidaTypewriter f +(!) 1747 1560 w +10 /LucidaSansUnicode00 f +(perform bitwise and logical negation) 1851 1560 w +(respectively.) 3666 1560 w +(Their) 4304 1560 w +(operands) 4588 1560 w +(must be of) 720 1680 w +10 /LucidaSans-Italic f +(integer) 1276 1680 w +10 /LucidaSansUnicode00 f +(type.) 1652 1680 w +10 /LucidaSans-Italic f +(cast-expression:) 1330 1860 w +(unary-expression) 1580 1980 w +(unary-expression) 1580 2100 w +10 /LucidaTypewriter f +(\\) 2478 2100 w +10 /LucidaSans-Italic f +(format-char) 2582 2100 w +10 /LucidaTypewriter f +(\() 1580 2220 w +10 /LucidaSans-Italic f +(complex-name) 1684 2220 w +10 /LucidaTypewriter f +(\)) 2445 2220 w +10 /LucidaSans-Italic f +(unary-expression) 2549 2220 w +10 /LucidaSansUnicode00 f +(A unary expression may be preceded by a cast. The cast has the) 720 2400 w +(effect) 3871 2400 w +(of) 4178 2400 w +(associating) 4309 2400 w +(the) 4885 2400 w +(value) 720 2520 w +(of) 1008 2520 w +10 /LucidaSans-Italic f +(unary-expression) 1140 2520 w +10 /LucidaSansUnicode00 f +(with) 2040 2520 w +(a) 2279 2520 w +(complex) 2368 2520 w +(type) 2816 2520 w +(structure.) 3058 2520 w +(The) 3594 2520 w +(result) 3809 2520 w +(may) 4119 2520 w +(then) 4352 2520 w +(be) 4602 2520 w +(deref\255) 4754 2520 w +(erenced using the) 720 2640 w +10 /LucidaTypewriter f +(.) 1622 2640 w +10 /LucidaSansUnicode00 f +(and) 1726 2640 w +10 /LucidaTypewriter f +(->) 1938 2640 w +10 /LucidaSansUnicode00 f +(operators.) 2114 2640 w +(An) 970 2796 w +(Acid) 1146 2796 w +(variable) 1403 2796 w +(may) 1828 2796 w +(be) 2074 2796 w +(associated) 2239 2796 w +(with) 2794 2796 w +(a) 3045 2796 w +(complex) 3146 2796 w +(type) 3606 2796 w +(to) 3860 2796 w +(enable) 4004 2796 w +(accessing) 4371 2796 w +(the) 4885 2796 w +(type) 720 2916 w +10 /LucidaSansUnicode20 f +(\031) 928 2916 w +10 /LucidaSansUnicode00 f +(s members:) 960 2916 w +9 /LucidaTypewriter f +(acid:) 1008 3086 w +(complex) 1398 3086 w +(List) 1918 3086 w +({) 2243 3086 w +('D') 1528 3196 w +(0) 2048 3196 w +(type;) 2568 3196 w +('X') 1528 3306 w +(4) 2048 3306 w +(next;) 2568 3306 w +(};) 1008 3416 w +(acid:) 1008 3526 w +(complex) 1398 3526 w +(List) 1918 3526 w +(lhead) 2243 3526 w +(acid:) 1008 3636 w +(lhead.type) 1398 3636 w +(10) 1008 3746 w +(acid:) 1008 3856 w +(lhead) 1398 3856 w +(=) 1788 3856 w +(\(\(List\)lhead\).next) 1918 3856 w +(acid:) 1008 3966 w +(lhead.type) 1398 3966 w +(-46) 1008 4076 w +10 /LucidaSansUnicode00 f +(Note that the) 720 4256 w +10 /LucidaTypewriter f +(next) 1390 4256 w +10 /LucidaSansUnicode00 f +(field cannot be given a complex type automatically.) 1710 4256 w +(When) 970 4412 w +(entered) 1275 4412 w +(at) 1685 4412 w +(the) 1816 4412 w +(top) 2010 4412 w +(level) 2210 4412 w +(of) 2471 4412 w +(the) 2608 4412 w +(interpreter,) 2802 4412 w +(an) 3392 4412 w +(expression) 3549 4412 w +(of) 4120 4412 w +(complex) 4258 4412 w +(type) 4712 4412 w +(is) 4960 4412 w +(treated) 720 4532 w +(specially.) 1105 4532 w +(If) 1624 4532 w +(the) 1730 4532 w +(type) 1925 4532 w +(is) 2173 4532 w +(called) 2293 4532 w +10 /LucidaTypewriter f +(T) 2616 4532 w +10 /LucidaSansUnicode00 f +(and) 2728 4532 w +(an) 2948 4532 w +(Acid) 3105 4532 w +(function) 3357 4532 w +(also) 3798 4532 w +(called) 4034 4532 w +10 /LucidaTypewriter f +(T) 4356 4532 w +10 /LucidaSansUnicode00 f +(exists,) 4467 4532 w +(then) 4823 4532 w +(that) 720 4652 w +(function) 953 4652 w +(will) 1396 4652 w +(be) 1602 4652 w +(called) 1763 4652 w +(with) 2088 4652 w +(the) 2335 4652 w +(expression) 2532 4652 w +(as) 3105 4652 w +(its) 3253 4652 w +(argument.) 3412 4652 w +(The) 3986 4652 w +(compiler) 4210 4652 w +(options) 4676 4652 w +10 /LucidaTypewriter f +(-a) 720 4772 w +10 /LucidaSansUnicode00 f +(and) 900 4772 w +10 /LucidaTypewriter f +(-aa) 1116 4772 w +10 /LucidaSansUnicode00 f +(will) 1368 4772 w +(generate) 1568 4772 w +(Acid) 2029 4772 w +(source) 2277 4772 w +(code) 2635 4772 w +(defining) 2902 4772 w +(such) 3337 4772 w +(complex) 3598 4772 w +(types) 4047 4772 w +(and) 4341 4772 w +(functions;) 4556 4772 w +(see) 720 4892 w +10 /LucidaSans-Italic f +(2c) 915 4892 w +10 /LucidaSansUnicode00 f +(\(1\).) 1028 4892 w +(A) 970 5048 w +10 /LucidaSans-Italic f +(unary-expression) 1077 5048 w +10 /LucidaSansUnicode00 f +(may) 1981 5048 w +(be) 2219 5048 w +(qualified) 2376 5048 w +(with) 2837 5048 w +(a) 3080 5048 w +(format) 3173 5048 w +(specifier) 3535 5048 w +(using) 3986 5048 w +(the) 4290 5048 w +10 /LucidaTypewriter f +(\\) 4483 5048 w +10 /LucidaSansUnicode00 f +(operator.) 4593 5048 w +(This has the same effect as passing the expression to the) 720 5168 w +10 /LucidaTypewriter f +(fmt) 3547 5168 w +10 /LucidaSansUnicode00 f +(builtin function.) 3795 5168 w +10 /LucidaSans-Italic f +(multiplicative-expression:) 1330 5348 w +(cast-expression) 1580 5468 w +(multiplicative-expression) 1580 5588 w +10 /LucidaTypewriter f +(*) 2845 5588 w +10 /LucidaSans-Italic f +(multiplicative-expression) 2949 5588 w +(multiplicative-expression) 1580 5708 w +10 /LucidaTypewriter f +(/) 2845 5708 w +10 /LucidaSans-Italic f +(multiplicative-expression) 2949 5708 w +(multiplicative-expression) 1580 5828 w +10 /LucidaTypewriter f +(%) 2845 5828 w +10 /LucidaSans-Italic f +(multiplicative-expression) 2949 5828 w +10 /LucidaSansUnicode00 f +(These) 720 6008 w +(operate) 1043 6008 w +(on) 1447 6008 w +10 /LucidaSans-Italic f +(integer) 1605 6008 w +10 /LucidaSansUnicode00 f +(and) 1984 6008 w +10 /LucidaSans-Italic f +(float) 2199 6008 w +10 /LucidaSansUnicode00 f +(types) 2457 6008 w +(and) 2751 6008 w +(perform) 2967 6008 w +(the) 3395 6008 w +(expected) 3586 6008 w +(operations:) 4065 6008 w +10 /LucidaTypewriter f +(*) 4649 6008 w +10 /LucidaSansUnicode00 f +(multi\255) 4757 6008 w +(plication,) 720 6128 w +10 /LucidaTypewriter f +(/) 1200 6128 w +10 /LucidaSansUnicode00 f +(division,) 1304 6128 w +10 /LucidaTypewriter f +(%) 1744 6128 w +10 /LucidaSansUnicode00 f +(modulus.) 1848 6128 w +10 /LucidaSans-Italic f +(additive-expression:) 1330 6308 w +(multiplicative-expression) 1580 6428 w +(additive-expression) 1580 6548 w +10 /LucidaTypewriter f +(+) 2576 6548 w +10 /LucidaSans-Italic f +(multiplicative-expression) 2680 6548 w +(additive-expression) 1580 6668 w +10 /LucidaTypewriter f +(-) 2576 6668 w +10 /LucidaSans-Italic f +(multiplicative-expression) 2680 6668 w +10 /LucidaSansUnicode00 f +(These) 720 6848 w +(operators) 1042 6848 w +(perform) 1542 6848 w +(as) 1968 6848 w +(expected) 2108 6848 w +(for) 2585 6848 w +10 /LucidaSans-Italic f +(integer) 2758 6848 w +10 /LucidaSansUnicode00 f +(and) 3136 6848 w +10 /LucidaSans-Italic f +(float) 3350 6848 w +10 /LucidaSansUnicode00 f +(operands.) 3607 6848 w +(Unlike) 4157 6848 w +(in) 4494 6848 w +(C,) 4619 6848 w +10 /LucidaTypewriter f +(+) 4754 6848 w +10 /LucidaSansUnicode00 f +(and) 4860 6848 w +10 /LucidaTypewriter f +(-) 720 6968 w +10 /LucidaSansUnicode00 f +(do) 840 6968 w +(not) 1012 6968 w +(scale) 1220 6968 w +(the) 1510 6968 w +(addition) 1713 6968 w +(based) 2160 6968 w +(on) 2496 6968 w +(the) 2667 6968 w +(format) 2870 6968 w +(of) 3242 6968 w +(the) 3388 6968 w +(expression.) 3591 6968 w +(This) 4233 6968 w +(means) 4485 6968 w +(that) 4849 6968 w +10 /LucidaTypewriter f +(i=i+1) 720 7088 w +10 /LucidaSansUnicode00 f +(will) 1118 7088 w +(always) 1320 7088 w +(add) 1677 7088 w +(1) 1896 7088 w +(but) 1997 7088 w +10 /LucidaTypewriter f +(i++) 2197 7088 w +10 /LucidaSansUnicode00 f +(will) 2451 7088 w +(add) 2653 7088 w +(the) 2872 7088 w +(size) 3065 7088 w +(corresponding) 3296 7088 w +(to) 4037 7088 w +(the) 4174 7088 w +(format) 4368 7088 w +(stored) 4731 7088 w +(with) 720 7208 w +10 /LucidaTypewriter f +(i) 975 7208 w +10 /LucidaSansUnicode00 f +(.) 1047 7208 w +(If) 1161 7208 w +(both) 1277 7208 w +(operands) 1550 7208 w +(are) 2052 7208 w +(of) 2254 7208 w +(either) 2402 7208 w +10 /LucidaSans-Italic f +(string) 2733 7208 w +10 /LucidaSansUnicode00 f +(or) 3070 7208 w +10 /LucidaSans-Italic f +(list) 3222 7208 w +10 /LucidaSansUnicode00 f +(type) 3417 7208 w +(then) 3675 7208 w +(addition) 3942 7208 w +(is) 4390 7208 w +(defined) 4519 7208 w +(as) 4934 7208 w +cleartomark +showpage +saveobj restore +%%EndPage: 8 8 +%%Page: 9 9 +/saveobj save def +mark +9 pagesetup +10 /LucidaSansUnicode00 f +(\255 9 \255) 2783 480 w +(concatenation.) 720 840 w +(Adding) 1471 840 w +(a) 1859 840 w +(string) 1954 840 w +(and) 2276 840 w +(an) 2496 840 w +(integer) 2653 840 w +(is) 3036 840 w +(treated) 3156 840 w +(as) 3541 840 w +(concatenation) 3687 840 w +(with) 4406 840 w +(the) 4651 840 w +(Uni\255) 4847 840 w +(code) 720 960 w +(character) 997 960 w +(corresponding) 1492 960 w +(to) 2241 960 w +(the) 2385 960 w +(integer.) 2586 960 w +(Subtraction) 3039 960 w +(is) 3637 960 w +(undefined) 3763 960 w +(for) 4298 960 w +(strings) 4482 960 w +(and) 4860 960 w +(lists.) 720 1080 w +10 /LucidaSans-Italic f +(shift-expression:) 1330 1260 w +(additive-expression) 1580 1380 w +(shift-expression) 1580 1500 w +10 /LucidaTypewriter f +(<<) 2406 1500 w +10 /LucidaSans-Italic f +(additive-expression) 2582 1500 w +(shift-expression) 1580 1620 w +10 /LucidaTypewriter f +(>>) 2406 1620 w +10 /LucidaSans-Italic f +(additive-expression) 2582 1620 w +10 /LucidaSansUnicode00 f +(The) 720 1800 w +10 /LucidaTypewriter f +(>>) 936 1800 w +10 /LucidaSansUnicode00 f +(and) 1115 1800 w +10 /LucidaTypewriter f +(<<) 1330 1800 w +10 /LucidaSansUnicode00 f +(operators) 1509 1800 w +(perform) 2010 1800 w +(bitwise) 2438 1800 w +(right) 2816 1800 w +(and) 3083 1800 w +(left) 3299 1800 w +(shifts) 3494 1800 w +(respectively.) 3797 1800 w +(Both) 4438 1800 w +(require) 4692 1800 w +(operands of) 720 1920 w +10 /LucidaSans-Italic f +(integer) 1334 1920 w +10 /LucidaSansUnicode00 f +(type.) 1710 1920 w +10 /LucidaSans-Italic f +(relational-expression:) 1330 2100 w +(relational-expression) 1580 2220 w +10 /LucidaTypewriter f +(<) 2657 2220 w +10 /LucidaSans-Italic f +(shift-expression) 2761 2220 w +(relational-expression) 1580 2340 w +10 /LucidaTypewriter f +(>) 2657 2340 w +10 /LucidaSans-Italic f +(shift-expression) 2761 2340 w +(relational-expression) 1580 2460 w +10 /LucidaTypewriter f +(<=) 2657 2460 w +10 /LucidaSans-Italic f +(shift-expression) 2833 2460 w +(relational-expression) 1580 2580 w +10 /LucidaTypewriter f +(>=) 2657 2580 w +10 /LucidaSans-Italic f +(shift-expression) 2833 2580 w +(equality-expression:) 1330 2820 w +(relational-expression) 1580 2940 w +(relational-expression) 1580 3060 w +10 /LucidaTypewriter f +(==) 2657 3060 w +10 /LucidaSans-Italic f +(equality-expression) 2833 3060 w +(relational-expression) 1580 3180 w +10 /LucidaTypewriter f +(!=) 2657 3180 w +10 /LucidaSans-Italic f +(equality-expression) 2833 3180 w +10 /LucidaSansUnicode00 f +(The) 720 3360 w +(comparison) 936 3360 w +(operators) 1538 3360 w +(are) 2039 3360 w +10 /LucidaTypewriter f +(<) 2227 3360 w +10 /LucidaSansUnicode00 f +(\(less) 2335 3360 w +(than\),) 2591 3360 w +10 /LucidaTypewriter f +(>) 2908 3360 w +10 /LucidaSansUnicode00 f +(\(greater) 3016 3360 w +(than\),) 3433 3360 w +10 /LucidaTypewriter f +(<=) 3750 3360 w +10 /LucidaSansUnicode00 f +(\(less) 3930 3360 w +(than) 4186 3360 w +(or) 4438 3360 w +(equal) 4576 3360 w +(to\),) 4877 3360 w +10 /LucidaTypewriter f +(>=) 720 3480 w +10 /LucidaSansUnicode00 f +(\(greater) 902 3480 w +(than) 1321 3480 w +(or) 1575 3480 w +(equal) 1715 3480 w +(to\),) 2018 3480 w +10 /LucidaTypewriter f +(==) 2219 3480 w +10 /LucidaSansUnicode00 f +(\(equal) 2401 3480 w +(to\)) 2737 3480 w +(and) 2906 3480 w +10 /LucidaTypewriter f +(!=) 3124 3480 w +10 /LucidaSansUnicode00 f +(\(not) 3306 3480 w +(equal) 3537 3480 w +(to\).) 3840 3480 w +(The) 4041 3480 w +(result) 4260 3480 w +(of) 4574 3480 w +(a) 4710 3480 w +(com\255) 4802 3480 w +(parison) 720 3600 w +(is) 1124 3600 w +(0) 1246 3600 w +(if) 1351 3600 w +(the) 1460 3600 w +(condition) 1658 3600 w +(is) 2156 3600 w +(false,) 2279 3600 w +(otherwise) 2582 3600 w +(1.) 3095 3600 w +(The) 3233 3600 w +(relational) 3457 3600 w +(operators) 3954 3600 w +(can) 4463 3600 w +(only) 4674 3600 w +(be) 4921 3600 w +(applied) 720 3720 w +(to) 1117 3720 w +(operands) 1253 3720 w +(of) 1743 3720 w +10 /LucidaSans-Italic f +(integer) 1879 3720 w +10 /LucidaSansUnicode00 f +(and) 2261 3720 w +10 /LucidaSans-Italic f +(float) 2479 3720 w +10 /LucidaSansUnicode00 f +(type.) 2740 3720 w +(The) 3018 3720 w +(equality) 3237 3720 w +(operators) 3658 3720 w +(apply) 4162 3720 w +(to) 4462 3720 w +(all) 4598 3720 w +(types.) 4749 3720 w +(Comparing) 720 3840 w +(mixed) 1290 3840 w +(types) 1627 3840 w +(is) 1921 3840 w +(legal.) 2036 3840 w +(Mixed) 2366 3840 w +(integer) 2696 3840 w +(and) 3074 3840 w +(float) 3289 3840 w +(compare) 3543 3840 w +(on) 3998 3840 w +(the) 4156 3840 w +(integral) 4347 3840 w +(value.) 4754 3840 w +(Other) 720 3960 w +(mixtures) 1027 3960 w +(are) 1490 3960 w +(always) 1675 3960 w +(unequal.) 2027 3960 w +(Two) 2513 3960 w +(lists) 2747 3960 w +(are) 2977 3960 w +(equal) 3162 3960 w +(if) 3460 3960 w +(they) 3559 3960 w +(have) 3799 3960 w +(the) 4057 3960 w +(same) 4245 3960 w +(number of) 4533 3960 w +(members and a pairwise comparison of the members results in equality.) 720 4080 w +10 /LucidaSans-Italic f +(AND-expression:) 1330 4260 w +(equality-expression) 1580 4380 w +(AND-expression) 1580 4500 w +10 /LucidaTypewriter f +(&) 2407 4500 w +10 /LucidaSans-Italic f +(equality-expression) 2511 4500 w +(XOR-expression:) 1330 4740 w +(AND-expression) 1580 4860 w +(XOR-expression) 1580 4980 w +10 /LucidaTypewriter f +(^) 2393 4980 w +10 /LucidaSans-Italic f +(AND-expression) 2497 4980 w +(OR-expression:) 1330 5220 w +(XOR-expression) 1580 5340 w +(OR-expression) 1580 5460 w +10 /LucidaTypewriter f +(|) 2331 5460 w +10 /LucidaSans-Italic f +(XOR-expression) 2435 5460 w +10 /LucidaSansUnicode00 f +(These) 720 5640 w +(operators) 1051 5640 w +(perform) 1560 5640 w +(bitwise) 1995 5640 w +(logical) 2380 5640 w +(operations) 2739 5640 w +(and) 3298 5640 w +(apply) 3521 5640 w +(only) 3826 5640 w +(to) 4073 5640 w +(the) 4214 5640 w +10 /LucidaSans-Italic f +(integer) 4412 5640 w +10 /LucidaSansUnicode00 f +(type.) 4800 5640 w +(The operators are) 720 5760 w +10 /LucidaTypewriter f +(&) 1615 5760 w +10 /LucidaSansUnicode00 f +(\(logical and\),) 1719 5760 w +10 /LucidaTypewriter f +(^) 2377 5760 w +10 /LucidaSansUnicode00 f +(\(exclusive or\) and) 2481 5760 w +10 /LucidaTypewriter f +(|) 3372 5760 w +10 /LucidaSansUnicode00 f +(\(inclusive or\).) 3476 5760 w +10 /LucidaSans-Italic f +(logical-AND-expression:) 1330 5940 w +(OR-expression) 1580 6060 w +(logical-AND-expression) 1580 6180 w +10 /LucidaTypewriter f +(&&) 2786 6180 w +10 /LucidaSans-Italic f +(OR-expression) 2962 6180 w +(logical-OR-expression:) 1330 6420 w +(logical-AND-expression) 1580 6540 w +(logical-OR-expression) 1580 6660 w +10 /LucidaTypewriter f +(||) 2710 6660 w +10 /LucidaSans-Italic f +(logical-AND-expression) 2886 6660 w +10 /LucidaSansUnicode00 f +(The) 720 6840 w +10 /LucidaTypewriter f +(&&) 936 6840 w +10 /LucidaSansUnicode00 f +(operator) 1115 6840 w +(returns) 1565 6840 w +(1) 1950 6840 w +(if) 2048 6840 w +(both) 2149 6840 w +(of) 2407 6840 w +(its) 2540 6840 w +(operands) 2692 6840 w +(evaluate) 3180 6840 w +(to) 3618 6840 w +(boolean) 3752 6840 w +(true,) 4175 6840 w +(otherwise) 4439 6840 w +(0.) 4945 6840 w +(The) 720 6960 w +10 /LucidaTypewriter f +(||) 938 6960 w +10 /LucidaSansUnicode00 f +(operator) 1119 6960 w +(returns) 1571 6960 w +(1) 1958 6960 w +(if) 2058 6960 w +(either) 2161 6960 w +(of) 2479 6960 w +(its) 2614 6960 w +(operands) 2768 6960 w +(evaluates) 3257 6960 w +(to) 3747 6960 w +(boolean) 3882 6960 w +(true,) 4306 6960 w +(otherwise) 4570 6960 w +(0.) 720 7080 w +cleartomark +showpage +saveobj restore +%%EndPage: 9 9 +%%Page: 10 10 +/saveobj save def +mark +10 pagesetup +10 /LucidaSansUnicode00 f +(\255 10 \255) 2752 480 w +10 /LucidaSans-Demi f +(Statements) 720 840 w +10 /LucidaTypewriter f +(if) 1330 1056 w +10 /LucidaSans-Italic f +(expression) 1506 1056 w +10 /LucidaTypewriter f +(then) 2053 1056 w +10 /LucidaSans-Italic f +(statement) 2373 1056 w +10 /LucidaTypewriter f +(else) 2890 1056 w +10 /LucidaSans-Italic f +(statement) 3210 1056 w +10 /LucidaTypewriter f +(if) 1330 1176 w +10 /LucidaSans-Italic f +(expression) 1506 1176 w +10 /LucidaTypewriter f +(then) 2053 1176 w +10 /LucidaSans-Italic f +(statement) 2373 1176 w +10 /LucidaSansUnicode00 f +(The) 720 1356 w +10 /LucidaSans-Italic f +(expression) 952 1356 w +10 /LucidaSansUnicode00 f +(is) 1518 1356 w +(evaluated) 1649 1356 w +(as) 2165 1356 w +(a) 2322 1356 w +(boolean.) 2428 1356 w +(If) 2898 1356 w +(its) 3015 1356 w +(value) 3183 1356 w +(is) 3488 1356 w +(true) 3619 1356 w +(the) 3866 1356 w +(statement) 4072 1356 w +(after) 4607 1356 w +(the) 4885 1356 w +10 /LucidaTypewriter f +(then) 720 1476 w +10 /LucidaSansUnicode00 f +(is) 1045 1476 w +(executed,) 1162 1476 w +(otherwise) 1673 1476 w +(the) 2180 1476 w +(statement) 2372 1476 w +(after) 2893 1476 w +(the) 3156 1476 w +10 /LucidaTypewriter f +(else) 3348 1476 w +10 /LucidaSansUnicode00 f +(is) 3673 1476 w +(executed.) 3790 1476 w +(The) 4301 1476 w +10 /LucidaTypewriter f +(else) 4518 1476 w +10 /LucidaSansUnicode00 f +(por\255) 4842 1476 w +(tion may be omitted.) 720 1596 w +10 /LucidaTypewriter f +(while) 1330 1776 w +10 /LucidaSans-Italic f +(expression) 1722 1776 w +10 /LucidaTypewriter f +(do) 2269 1776 w +10 /LucidaSans-Italic f +(statement) 2445 1776 w +10 /LucidaSansUnicode00 f +(In a while loop, the) 720 1956 w +10 /LucidaSans-Italic f +(statement) 1680 1956 w +10 /LucidaSansUnicode00 f +(is executed while the boolean) 2197 1956 w +10 /LucidaSans-Italic f +(expression) 3674 1956 w +10 /LucidaSansUnicode00 f +(evaluates true.) 4221 1956 w +10 /LucidaTypewriter f +(loop) 1330 2136 w +10 /LucidaSans-Italic f +(startexpr, endexpr) 1650 2136 w +10 /LucidaTypewriter f +(do) 2588 2136 w +10 /LucidaSans-Italic f +(statement) 2764 2136 w +10 /LucidaSansUnicode00 f +(The two expressions) 720 2316 w +10 /LucidaSans-Italic f +(startexpr) 1754 2316 w +10 /LucidaSansUnicode00 f +(and) 2237 2316 w +10 /LucidaSans-Italic f +(endexpr) 2450 2316 w +10 /LucidaSansUnicode00 f +(are) 2875 2316 w +(evaluated) 3060 2316 w +(prior) 3558 2316 w +(to) 3826 2316 w +(loop) 3957 2316 w +(entry.) 4204 2316 w +10 /LucidaSans-Italic f +(Statement) 4549 2316 w +10 /LucidaSansUnicode00 f +(is) 720 2436 w +(evaluated) 839 2436 w +(while) 1343 2436 w +(the) 1635 2436 w +(value) 1829 2436 w +(of) 2122 2436 w +10 /LucidaSans-Italic f +(startexpr) 2259 2436 w +10 /LucidaSansUnicode00 f +(is) 2748 2436 w +(less) 2867 2436 w +(than) 3093 2436 w +(or) 3348 2436 w +(equal) 3489 2436 w +(to) 3793 2436 w +10 /LucidaSans-Italic f +(endexpr) 3929 2436 w +10 /LucidaSansUnicode00 f +(.) 4321 2436 w +(Both) 4423 2436 w +(expres\255) 4679 2436 w +(sions) 720 2556 w +(must) 1015 2556 w +(yield) 1300 2556 w +10 /LucidaSans-Italic f +(integer) 1571 2556 w +10 /LucidaSansUnicode00 f +(values.) 1957 2556 w +(The) 2336 2556 w +(value) 2559 2556 w +(of) 2855 2556 w +10 /LucidaSans-Italic f +(startexpr) 2995 2556 w +10 /LucidaSansUnicode00 f +(is) 3487 2556 w +(incremented) 3609 2556 w +(by) 4257 2556 w +(one) 4414 2556 w +(for) 4635 2556 w +(each) 4816 2556 w +(loop) 720 2676 w +(iteration.) 974 2676 w +(Note) 1485 2676 w +(that) 1753 2676 w +(there) 1984 2676 w +(is) 2276 2676 w +(no) 2396 2676 w +(explicit) 2559 2676 w +(loop) 2954 2676 w +(variable;) 3208 2676 w +(the) 3660 2676 w +10 /LucidaSans-Italic f +(expressions) 3855 2676 w +10 /LucidaSansUnicode00 f +(are) 4459 2676 w +(just) 4651 2676 w +(val\255) 4871 2676 w +(ues.) 720 2796 w +10 /LucidaTypewriter f +(return) 1330 2976 w +10 /LucidaSans-Italic f +(expression) 1794 2976 w +10 /LucidaTypewriter f +(return) 720 3156 w +10 /LucidaSansUnicode00 f +(terminates) 1205 3156 w +(execution) 1775 3156 w +(of) 2303 3156 w +(the) 2454 3156 w +(current) 2662 3156 w +(function) 3065 3156 w +(and) 3519 3156 w +(returns) 3753 3156 w +(to) 4157 3156 w +(its) 4309 3156 w +(caller.) 4480 3156 w +(The) 4859 3156 w +(value) 720 3276 w +(of) 1014 3276 w +(the) 1152 3276 w +(function) 1347 3276 w +(is) 1788 3276 w +(given) 1908 3276 w +(by) 2209 3276 w +(expression.) 2364 3276 w +(Since) 2967 3276 w +10 /LucidaTypewriter f +(return) 3258 3276 w +10 /LucidaSansUnicode00 f +(requires) 3729 3276 w +(an) 4167 3276 w +(argument,) 4323 3276 w +(nil-) 4862 3276 w +(valued functions should return the empty list) 720 3396 w +10 /LucidaTypewriter f +({}) 2942 3396 w +10 /LucidaSansUnicode00 f +(.) 3086 3396 w +10 /LucidaTypewriter f +(local) 1330 3576 w +10 /LucidaSans-Italic f +(variable) 1722 3576 w +10 /LucidaSansUnicode00 f +(The) 720 3756 w +10 /LucidaTypewriter f +(local) 937 3756 w +10 /LucidaSansUnicode00 f +(statement) 1333 3756 w +(creates) 1853 3756 w +(a) 2236 3756 w +(local) 2327 3756 w +(instance) 2588 3756 w +(of) 3027 3756 w +10 /LucidaSans-Italic f +(variable) 3161 3756 w +10 /LucidaSansUnicode00 f +(,) 3557 3756 w +(which) 3625 3756 w +(exists) 3942 3756 w +(for) 4263 3756 w +(the) 4438 3756 w +(duration) 4630 3756 w +(of) 720 3876 w +(the) 854 3876 w +(instance) 1045 3876 w +(of) 1484 3876 w +(the) 1618 3876 w +(function) 1809 3876 w +(in) 2246 3876 w +(which) 2373 3876 w +(it) 2690 3876 w +(is) 2792 3876 w +(declared.) 2908 3876 w +(Binding) 3390 3876 w +(is) 3791 3876 w +(dynamic:) 3907 3876 w +(the) 4380 3876 w +(local) 4570 3876 w +(vari\255) 4830 3876 w +(able,) 720 3996 w +(rather) 1001 3996 w +(than) 1339 3996 w +(the) 1601 3996 w +(previous) 1802 3996 w +(value) 2263 3996 w +(of) 2563 3996 w +10 /LucidaSans-Italic f +(variable) 2707 3996 w +10 /LucidaSansUnicode00 f +(,) 3103 3996 w +(is) 3181 3996 w +(visible) 3307 3996 w +(to) 3662 3996 w +(called) 3806 3996 w +(functions.) 4135 3996 w +(After) 4698 3996 w +(a) 4985 3996 w +(return from the current function the previous value of) 720 4116 w +10 /LucidaSans-Italic f +(variable) 3367 4116 w +10 /LucidaSansUnicode00 f +(is restored.) 3795 4116 w +(If) 970 4272 w +(Acid) 1083 4272 w +(is) 1342 4272 w +(interrupted,) 1469 4272 w +(the) 2095 4272 w +(values) 2298 4272 w +(of) 2651 4272 w +(all) 2797 4272 w +(local) 2958 4272 w +(variables) 3231 4272 w +(are) 3710 4272 w +(lost,) 3910 4272 w +(as) 4168 4272 w +(if) 4322 4272 w +(the) 4436 4272 w +(function) 4639 4272 w +(returned.) 720 4392 w +10 /LucidaTypewriter f +(defn) 1330 4572 w +10 /LucidaSans-Italic f +(function-name) 1650 4572 w +10 /LucidaTypewriter f +(\() 2412 4572 w +10 /LucidaSans-Italic f +(parameter-list) 2516 4572 w +10 /LucidaTypewriter f +(\)) 3272 4572 w +10 /LucidaSans-Italic f +(body) 3376 4572 w +(parameter-list:) 1330 4812 w +(variable) 1580 4932 w +(parameter-list , variable) 1580 5052 w +(body:) 1330 5292 w +10 /LucidaTypewriter f +({) 1580 5412 w +10 /LucidaSans-Italic f +(statement) 1684 5412 w +10 /LucidaTypewriter f +(}) 2201 5412 w +10 /LucidaSansUnicode00 f +(Functions) 720 5592 w +(are) 1238 5592 w +(introduced) 1439 5592 w +(by) 2013 5592 w +(the) 2177 5592 w +10 /LucidaTypewriter f +(defn) 2381 5592 w +10 /LucidaSansUnicode00 f +(statement.) 2718 5592 w +(The) 3283 5592 w +(definition) 3513 5592 w +(of) 4028 5592 w +(parameter) 4176 5592 w +(names) 4723 5592 w +(suppresses) 720 5712 w +(any) 1313 5712 w +(variables) 1530 5712 w +(of) 2009 5712 w +(the) 2155 5712 w +(same) 2358 5712 w +(name) 2661 5712 w +(until) 2975 5712 w +(the) 3242 5712 w +(function) 3445 5712 w +(returns.) 3894 5712 w +(The) 4324 5712 w +(body) 4553 5712 w +(of) 4840 5712 w +(a) 4985 5712 w +(function is a list of statements enclosed by braces.) 720 5832 w +10 /LucidaSans-Demi f +(Code variables) 720 6072 w +10 /LucidaSansUnicode00 f +(Acid) 970 6228 w +(permits) 1224 6228 w +(the) 1637 6228 w +(delayed) 1835 6228 w +(evaluation) 2252 6228 w +(of) 2793 6228 w +(a) 2934 6228 w +(parameter) 3032 6228 w +(to) 3572 6228 w +(a) 3713 6228 w +(function.) 3811 6228 w +(The) 4319 6228 w +(parameter) 4543 6228 w +(may) 720 6348 w +(then) 956 6348 w +(be) 1209 6348 w +(evaluated) 1364 6348 w +(at) 1865 6348 w +(any) 1993 6348 w +(time) 2198 6348 w +(with) 2449 6348 w +(the) 2690 6348 w +10 /LucidaTypewriter f +(eval) 2881 6348 w +10 /LucidaSansUnicode00 f +(operator.) 3205 6348 w +(Such) 3720 6348 w +(parameters) 3985 6348 w +(are) 4569 6348 w +(called) 4757 6348 w +10 /LucidaSans-Italic f +(code) 720 6468 w +(variables) 977 6468 w +10 /LucidaSansUnicode00 f +(and) 1458 6468 w +(are) 1674 6468 w +(defined) 1862 6468 w +(by) 2264 6468 w +(prefixing) 2415 6468 w +(their) 2891 6468 w +(name) 3153 6468 w +(with) 3456 6468 w +(an) 3698 6468 w +(asterisk) 3852 6468 w +(in) 4267 6468 w +(their) 4395 6468 w +(declara\255) 4657 6468 w +(tion.) 720 6588 w +(For example, this function wraps up an expression for later evaluation:) 970 6744 w +cleartomark +showpage +saveobj restore +%%EndPage: 10 10 +%%Page: 11 11 +/saveobj save def +mark +11 pagesetup +10 /LucidaSansUnicode00 f +(\255 11 \255) 2752 480 w +9 /LucidaTypewriter f +(acid:) 1008 830 w +(defn) 1398 830 w +(code\(*e\)) 1723 830 w +({) 2308 830 w +(return) 2438 830 w +(e;) 2893 830 w +(}) 3088 830 w +(acid:) 1008 940 w +(x) 1398 940 w +(=) 1528 940 w +(code\(v+atoi\("100"\)\\D\)) 1658 940 w +(acid:) 1008 1050 w +(print\(x\)) 1398 1050 w +(\(v+atoi\("100"\)\)\\D;) 1008 1160 w +(acid:) 1008 1270 w +(eval) 1398 1270 w +(x) 1723 1270 w +(:5:) 1008 1380 w +(\(error\)) 1723 1380 w +(v) 2243 1380 w +(used) 2373 1380 w +(but) 2698 1380 w +(not) 2958 1380 w +(set) 3218 1380 w +(acid:) 1008 1490 w +(v=5) 1398 1490 w +(acid:) 1008 1600 w +(eval) 1398 1600 w +(x) 1723 1600 w +(105) 1008 1710 w +10 /LucidaSans-Demi f +(Source Code Management) 720 2010 w +10 /LucidaSansUnicode00 f +(Acid) 970 2166 w +(provides) 1227 2166 w +(the) 1688 2166 w +(means) 1888 2166 w +(to) 2250 2166 w +(examine) 2393 2166 w +(source) 2850 2166 w +(code.) 3217 2166 w +(Source) 3525 2166 w +(code) 3895 2166 w +(is) 4171 2166 w +(represented) 4297 2166 w +(by) 4925 2166 w +(lists) 720 2286 w +(of) 956 2286 w +(strings.) 1093 2286 w +(Builtin) 1497 2286 w +(functions) 1842 2286 w +(provide) 2332 2286 w +(mapping) 2735 2286 w +(from) 3200 2286 w +(address) 3470 2286 w +(to) 3888 2286 w +(lines) 4024 2286 w +(and) 4289 2286 w +(vice-versa.) 4507 2286 w +(The default debugging environment has the means to load and display source files.) 720 2406 w +10 /LucidaSans-Demi f +(Builtin Functions) 720 2646 w +10 /LucidaSansUnicode00 f +(The) 970 2802 w +(Acid) 1187 2802 w +(interpreter) 1435 2802 w +(has) 1991 2802 w +(a) 2196 2802 w +(number) 2288 2802 w +(of) 2702 2802 w +(builtin) 2837 2802 w +(functions,) 3185 2802 w +(which) 3706 2802 w +(cannot) 4024 2802 w +(be) 4389 2802 w +(redefined.) 4545 2802 w +(These) 720 2922 w +(functions) 1046 2922 w +(perform) 1536 2922 w +(machine-) 1966 2922 w +(or) 2470 2922 w +(operating) 2610 2922 w +(system-specific) 3114 2922 w +(functions) 3916 2922 w +(such) 4405 2922 w +(as) 4668 2922 w +(sym\255) 4811 2922 w +(bol) 720 3042 w +(table) 926 3042 w +(and) 1219 3042 w +(process) 1452 3042 w +(management.) 1879 3042 w +(The) 2628 3042 w +(following) 2863 3042 w +(section) 3364 3042 w +(presents) 3765 3042 w +(a) 4236 3042 w +(description) 4345 3042 w +(of) 4942 3042 w +(each) 720 3162 w +(builtin) 991 3162 w +(function.) 1349 3162 w +(The) 1861 3162 w +(notation) 2089 3162 w +10 /LucidaTypewriter f +({}) 2540 3162 w +10 /LucidaSansUnicode00 f +(is) 2731 3162 w +(used) 2857 3162 w +(to) 3135 3162 w +(denote) 3279 3162 w +(the) 3660 3162 w +(empty) 3861 3162 w +(list,) 4208 3162 w +(which) 4432 3162 w +(is) 4759 3162 w +(the) 4885 3162 w +(default) 720 3282 w +(value) 1102 3282 w +(of) 1399 3282 w +(a) 1540 3282 w +(function) 1638 3282 w +(that) 2082 3282 w +(does) 2316 3282 w +(not) 2590 3282 w +(execute) 2793 3282 w +(a) 3216 3282 w +10 /LucidaTypewriter f +(return) 3315 3282 w +10 /LucidaSansUnicode00 f +(statement.) 3791 3282 w +(The) 4383 3282 w +(type) 4608 3282 w +(and) 4860 3282 w +(number) 720 3402 w +(of) 1131 3402 w +(parameters) 1263 3402 w +(for) 1845 3402 w +(each) 2018 3402 w +(function) 2276 3402 w +(are) 2711 3402 w +(specified) 2897 3402 w +(in) 3366 3402 w +(the) 3491 3402 w +(description;) 3679 3402 w +(where) 4287 3402 w +(a) 4612 3402 w +(param\255) 4700 3402 w +(eter can be of any type it is specified as type) 720 3522 w +10 /LucidaSans-Italic f +(item) 2919 3522 w +10 /LucidaSansUnicode00 f +(.) 3132 3522 w +10 /LucidaSans-Italic f +(integer) 720 3678 w +10 /LucidaTypewriter f +(access\() 1128 3678 w +10 /LucidaSans-Italic f +(string) 1632 3678 w +10 /LucidaTypewriter f +(\)) 1919 3678 w +10 /LucidaSansUnicode00 f +(Check if a file can be read) 3778 3678 w +10 /LucidaTypewriter f +(Access) 970 3834 w +10 /LucidaSansUnicode00 f +(returns) 1441 3834 w +(the) 1830 3834 w +(integer) 2024 3834 w +(1) 2406 3834 w +(if) 2508 3834 w +(the) 2613 3834 w +(file) 2807 3834 w +(name) 2997 3834 w +(in) 3302 3834 w +10 /LucidaSans-Italic f +(string) 3432 3834 w +10 /LucidaSansUnicode00 f +(can) 3758 3834 w +(be) 3965 3834 w +(read) 4124 3834 w +(by) 4379 3834 w +(the) 4534 3834 w +(builtin) 4729 3834 w +(functions) 970 3954 w +10 /LucidaTypewriter f +(file) 1457 3954 w +10 /LucidaSansUnicode00 f +(,) 1745 3954 w +10 /LucidaTypewriter f +(readfile) 1812 3954 w +10 /LucidaSansUnicode00 f +(,) 2388 3954 w +(or) 2455 3954 w +10 /LucidaTypewriter f +(include) 2591 3954 w +10 /LucidaSansUnicode00 f +(,) 3095 3954 w +(otherwise) 3161 3954 w +(0.) 3665 3954 w +(A) 3794 3954 w +(typical) 3897 3954 w +(use) 4247 3954 w +(of) 4450 3954 w +(this) 4582 3954 w +(func\255) 4795 3954 w +(tion is to follow a search path looking for a source file; it is used by) 970 4074 w +10 /LucidaTypewriter f +(findsrc) 4285 4074 w +10 /LucidaSansUnicode00 f +(.) 4789 4074 w +10 /LucidaTypewriter f +(if access\("main.c"\) then) 1170 4230 w +(return file\("main.c"\);) 1370 4350 w +10 /LucidaSans-Italic f +(float) 720 4506 w +10 /LucidaTypewriter f +(atof\() 1007 4506 w +10 /LucidaSans-Italic f +(string) 1367 4506 w +10 /LucidaTypewriter f +(\)) 1654 4506 w +10 /LucidaSansUnicode00 f +(Convert a string to float) 3880 4506 w +10 /LucidaTypewriter f +(atof) 970 4662 w +10 /LucidaSansUnicode00 f +(converts) 1303 4662 w +(the) 1759 4662 w +(string) 1960 4662 w +(supplied) 2288 4662 w +(as) 2750 4662 w +(its) 2902 4662 w +(argument) 3065 4662 w +(into) 3579 4662 w +(a) 3814 4662 w +(floating) 3915 4662 w +(point) 4333 4662 w +(number.) 4631 4662 w +(The) 970 4782 w +(function) 1203 4782 w +(accepts) 1656 4782 w +(strings) 2072 4782 w +(in) 2457 4782 w +(the) 2600 4782 w +(same) 2807 4782 w +(format) 3114 4782 w +(as) 3490 4782 w +(the) 3648 4782 w +(C) 3855 4782 w +(function) 3976 4782 w +(of) 4429 4782 w +(the) 4579 4782 w +(same) 4785 4782 w +(name.) 970 4902 w +(The) 1305 4902 w +(value) 1523 4902 w +(returned) 1815 4902 w +(has) 2271 4902 w +(the) 2477 4902 w +(format) 2670 4902 w +(code) 3032 4902 w +10 /LucidaTypewriter f +(f) 3301 4902 w +10 /LucidaSansUnicode00 f +(.) 3373 4902 w +10 /LucidaTypewriter f +(atof) 3475 4902 w +10 /LucidaSansUnicode00 f +(returns) 3801 4902 w +(the) 4189 4902 w +(value) 4382 4902 w +(0.0) 4674 4902 w +(if) 4870 4902 w +(it) 4974 4902 w +(is unable to perform the conversion.) 970 5022 w +10 /LucidaTypewriter f +(acid: +atof\("10.4e6"\)) 1170 5178 w +(1.04e+07) 1170 5298 w +10 /LucidaSans-Italic f +(integer) 720 5454 w +10 /LucidaTypewriter f +(atoi\() 1128 5454 w +10 /LucidaSans-Italic f +(string) 1488 5454 w +10 /LucidaTypewriter f +(\)) 1775 5454 w +10 /LucidaSansUnicode00 f +(Convert a string to an integer) 3607 5454 w +10 /LucidaTypewriter f +(atoi) 970 5610 w +10 /LucidaSansUnicode00 f +(converts) 1299 5610 w +(the) 1751 5610 w +(argument) 1948 5610 w +(to) 2458 5610 w +(an) 2598 5610 w +(integer) 2757 5610 w +(value.) 3142 5610 w +(The) 3502 5610 w +(function) 3725 5610 w +(accepts) 4168 5610 w +(strings) 4574 5610 w +(in) 4949 5610 w +(the) 970 5730 w +(same) 1167 5730 w +(format) 1464 5730 w +(as) 1830 5730 w +(the) 1978 5730 w +(C) 2175 5730 w +(function) 2286 5730 w +(of) 2729 5730 w +(the) 2869 5730 w +(same) 3065 5730 w +(name.) 3361 5730 w +(The) 3700 5730 w +(value) 3922 5730 w +(returned) 4217 5730 w +(has) 4676 5730 w +(the) 4885 5730 w +(format code) 970 5850 w +10 /LucidaTypewriter f +(D) 1589 5850 w +10 /LucidaSansUnicode00 f +(.) 1661 5850 w +10 /LucidaTypewriter f +(atoi) 1757 5850 w +10 /LucidaSansUnicode00 f +(returns the integer 0 if it is unable to perform a conversion.) 2077 5850 w +10 /LucidaTypewriter f +(acid: +atoi\("-1255"\)) 1170 6006 w +(-1255) 1170 6126 w +({}) 720 6282 w +(error\() 1008 6282 w +10 /LucidaSans-Italic f +(string) 1440 6282 w +10 /LucidaTypewriter f +(\)) 1727 6282 w +10 /LucidaSansUnicode00 f +(Generate an interpreter error) 3633 6282 w +10 /LucidaTypewriter f +(error) 970 6438 w +10 /LucidaSansUnicode00 f +(generates) 1394 6438 w +(an) 1934 6438 w +(error) 2115 6438 w +(message) 2419 6438 w +(and) 2908 6438 w +(returns) 3153 6438 w +(the) 3568 6438 w +(interpreter) 3788 6438 w +(to) 4372 6438 w +(interactive) 4535 6438 w +(mode.) 970 6558 w +(If) 1313 6558 w +(an) 1417 6558 w +(Acid) 1572 6558 w +(program) 1822 6558 w +(is) 2276 6558 w +(running,) 2394 6558 w +(it) 2844 6558 w +(is) 2948 6558 w +(aborted.) 3066 6558 w +(Processes) 3544 6558 w +(being) 4055 6558 w +(debugged) 4364 6558 w +(are) 4888 6558 w +(not) 970 6678 w +(affected.) 1163 6678 w +(The) 1620 6678 w +(values) 1834 6678 w +(of) 2172 6678 w +(all) 2303 6678 w +(local) 2449 6678 w +(variables) 2707 6678 w +(are) 3171 6678 w +(lost.) 3356 6678 w +10 /LucidaTypewriter f +(error) 3632 6678 w +10 /LucidaSansUnicode00 f +(is) 4026 6678 w +(commonly) 4140 6678 w +(used) 4676 6678 w +(to) 4942 6678 w +(stop) 970 6798 w +(the) 1231 6798 w +(debugger) 1434 6798 w +(when) 1947 6798 w +(some) 2252 6798 w +(interesting) 2561 6798 w +(condition) 3131 6798 w +(arises) 3634 6798 w +(in) 3965 6798 w +(the) 4104 6798 w +(debugged) 4307 6798 w +(pro\255) 4842 6798 w +(gram.) 970 6918 w +cleartomark +showpage +saveobj restore +%%EndPage: 11 11 +%%Page: 12 12 +/saveobj save def +mark +12 pagesetup +10 /LucidaSansUnicode00 f +(\255 12 \255) 2752 480 w +10 /LucidaTypewriter f +(while 1 do {) 1170 876 w +(step\(\);) 1370 996 w +(if *main != @main then) 1370 1116 w +(error\("memory corrupted"\);) 1570 1236 w +(}) 1170 1356 w +10 /LucidaSans-Italic f +(list) 720 1512 w +10 /LucidaTypewriter f +(file\() 929 1512 w +10 /LucidaSans-Italic f +(string) 1289 1512 w +10 /LucidaTypewriter f +(\)) 1576 1512 w +10 /LucidaSansUnicode00 f +(Read the contents of a file into a list) 3281 1512 w +10 /LucidaTypewriter f +(file) 970 1668 w +10 /LucidaSansUnicode00 f +(reads) 1294 1668 w +(the) 1596 1668 w +(contents) 1787 1668 w +(of) 2240 1668 w +(the) 2374 1668 w +(file) 2565 1668 w +(specified) 2752 1668 w +(by) 3223 1668 w +10 /LucidaSans-Italic f +(string) 3375 1668 w +10 /LucidaSansUnicode00 f +(into) 3699 1668 w +(a) 3925 1668 w +(list.) 4017 1668 w +(Each) 4264 1668 w +(element) 4523 1668 w +(in) 4949 1668 w +(the) 970 1788 w +(list is a string corresponding to a line in the file.) 1158 1788 w +10 /LucidaTypewriter f +(file) 3566 1788 w +10 /LucidaSansUnicode00 f +(breaks lines at the new\255) 3886 1788 w +(line) 970 1908 w +(character,) 1200 1908 w +(but) 1735 1908 w +(the) 1951 1908 w +(newline) 2160 1908 w +(characters) 2585 1908 w +(are) 3140 1908 w +(not) 3347 1908 w +(returned) 3562 1908 w +(as) 4035 1908 w +(part) 4196 1908 w +(each) 4447 1908 w +(string.) 4726 1908 w +10 /LucidaTypewriter f +(file) 970 2028 w +10 /LucidaSansUnicode00 f +(returns the empty list if it encounters an error opening or reading the data.) 1290 2028 w +10 /LucidaTypewriter f +(acid: print\(file\("main.c"\)[0]\)) 1170 2184 w +(#include) 1170 2304 w +() 1770 2304 w +10 /LucidaSans-Italic f +(integer) 720 2460 w +10 /LucidaTypewriter f +(filepc\() 1128 2460 w +10 /LucidaSans-Italic f +(string) 1632 2460 w +10 /LucidaTypewriter f +(\)) 1919 2460 w +10 /LucidaSansUnicode00 f +(Convert source address to text address) 3131 2460 w +10 /LucidaTypewriter f +(filepc) 970 2616 w +10 /LucidaSansUnicode00 f +(interprets) 1435 2616 w +(its) 1941 2616 w +10 /LucidaSans-Italic f +(string) 2091 2616 w +10 /LucidaSansUnicode00 f +(argument) 2411 2616 w +(as) 2912 2616 w +(a) 3051 2616 w +(source) 3139 2616 w +(file) 3494 2616 w +(address) 3678 2616 w +(in) 4091 2616 w +(the) 4215 2616 w +(form) 4403 2616 w +(of) 4668 2616 w +(a) 4800 2616 w +(file) 4889 2616 w +(name) 970 2736 w +(and) 1278 2736 w +(line) 1500 2736 w +(offset.) 1718 2736 w +10 /LucidaTypewriter f +(filepc) 2103 2736 w +10 /LucidaSansUnicode00 f +(uses) 2577 2736 w +(the) 2839 2736 w +(symbol) 3036 2736 w +(table) 3427 2736 w +(to) 3709 2736 w +(map) 3849 2736 w +(the) 4101 2736 w +(source) 4297 2736 w +(address) 4660 2736 w +(into) 970 2856 w +(a) 1194 2856 w +(text) 1284 2856 w +(address) 1510 2856 w +(in) 1926 2856 w +(the) 2053 2856 w +(debugged) 2244 2856 w +(program.) 2767 2856 w +(The) 3251 2856 w +10 /LucidaSans-Italic f +(integer) 3468 2856 w +10 /LucidaSansUnicode00 f +(return) 3848 2856 w +(value) 4183 2856 w +(has) 4473 2856 w +(the) 4677 2856 w +(for\255) 4868 2856 w +(mat) 970 2976 w +10 /LucidaTypewriter f +(X) 1204 2976 w +10 /LucidaSansUnicode00 f +(.) 1276 2976 w +10 /LucidaTypewriter f +(filepc) 1389 2976 w +10 /LucidaSansUnicode00 f +(returns) 1870 2976 w +(an) 2269 2976 w +(address) 2435 2976 w +(of) 2864 2976 w +(-1) 3011 2976 w +(if) 3181 2976 w +(the) 3296 2976 w +(source) 3500 2976 w +(address) 3871 2976 w +(is) 4300 2976 w +(invalid.) 4428 2976 w +(The) 4859 2976 w +(source) 970 3096 w +(file) 1335 3096 w +(address) 1529 3096 w +(uses) 1952 3096 w +(the) 2215 3096 w +(same) 2413 3096 w +(format) 2711 3096 w +(as) 3078 3096 w +10 /LucidaSans-Italic f +(acme) 3227 3096 w +10 /LucidaSansUnicode00 f +(\(1\).) 3484 3096 w +(This) 3720 3096 w +(function) 3969 3096 w +(is) 4414 3096 w +(commonly) 4538 3096 w +(used to set breakpoints from the source text.) 970 3216 w +10 /LucidaTypewriter f +(acid: bpset\(filepc\("main:10"\)\)) 1170 3372 w +(acid: bptab\(\)) 1170 3492 w +(0x00001020 usage) 1370 3612 w +(ADD) 2666 3612 w +($-0xc,R29) 2970 3612 w +10 /LucidaSans-Italic f +(item) 720 3768 w +10 /LucidaTypewriter f +(fmt\() 997 3768 w +10 /LucidaSans-Italic f +(item,fmt) 1285 3768 w +10 /LucidaTypewriter f +(\)) 1699 3768 w +10 /LucidaSansUnicode00 f +(Set print,) 3770 3768 w +10 /LucidaTypewriter f +(@) 4245 3768 w +10 /LucidaSansUnicode00 f +(and) 4349 3768 w +10 /LucidaTypewriter f +(*) 4561 3768 w +10 /LucidaSansUnicode00 f +(formats) 4665 3768 w +10 /LucidaTypewriter f +(fmt) 970 3924 w +10 /LucidaSansUnicode00 f +(evaluates) 1229 3924 w +(the) 1725 3924 w +(expression) 1923 3924 w +10 /LucidaSans-Italic f +(item) 2497 3924 w +10 /LucidaSansUnicode00 f +(and) 2753 3924 w +(sets) 2976 3924 w +(the) 3214 3924 w +(format) 3412 3924 w +(of) 3779 3924 w +(the) 3921 3924 w +(result) 4120 3924 w +(to) 4440 3924 w +10 /LucidaSans-Italic f +(fmt) 4582 3924 w +10 /LucidaSansUnicode00 f +(.) 4751 3924 w +(The) 4859 3924 w +(format) 970 4044 w +(of) 1332 4044 w +(a) 1467 4044 w +(value) 1559 4044 w +(determines) 1850 4044 w +(how) 2431 4044 w +(it) 2668 4044 w +(will) 2771 4044 w +(be) 2972 4044 w +(printed) 3128 4044 w +(and) 3516 4044 w +(what) 3733 4044 w +(kind) 4001 4044 w +(of) 4250 4044 w +(object) 4385 4044 w +(will) 4720 4044 w +(be) 4921 4044 w +(fetched) 970 4164 w +(by) 1367 4164 w +(the) 1517 4164 w +10 /LucidaTypewriter f +(*) 1707 4164 w +10 /LucidaSansUnicode00 f +(and) 1814 4164 w +10 /LucidaTypewriter f +(@) 2029 4164 w +10 /LucidaSansUnicode00 f +(operators.) 2136 4164 w +(The) 2669 4164 w +10 /LucidaTypewriter f +(\\) 2885 4164 w +10 /LucidaSansUnicode00 f +(operator) 2992 4164 w +(is) 3442 4164 w +(a) 3557 4164 w +(short-hand) 3647 4164 w +(form) 4234 4164 w +(of) 4501 4164 w +(the) 4634 4164 w +10 /LucidaTypewriter f +(fmt) 4824 4164 w +10 /LucidaSansUnicode00 f +(builtin function. The) 970 4284 w +10 /LucidaTypewriter f +(fmt) 1991 4284 w +10 /LucidaSansUnicode00 f +(function leaves the format of the) 2239 4284 w +10 /LucidaSans-Italic f +(item) 3863 4284 w +10 /LucidaSansUnicode00 f +(unchanged.) 4108 4284 w +10 /LucidaTypewriter f +(acid: main=fmt\(main, 'i'\) // as instructions) 1170 4440 w +(acid: print\(main\\X, "\\t", *main\)) 1170 4560 w +(0x00001020 ADD) 1170 4680 w +($-64,R29) 2370 4680 w +10 /LucidaSans-Italic f +(fmt) 720 4836 w +10 /LucidaTypewriter f +(fmtof\() 953 4836 w +10 /LucidaSans-Italic f +(item) 1385 4836 w +10 /LucidaTypewriter f +(\)) 1598 4836 w +10 /LucidaSansUnicode00 f +(Get format) 4519 4836 w +10 /LucidaTypewriter f +(fmtof) 970 4992 w +10 /LucidaSansUnicode00 f +(evaluates the expression) 1362 4992 w +10 /LucidaSans-Italic f +(item) 2597 4992 w +10 /LucidaSansUnicode00 f +(and returns the format of the result.) 2842 4992 w +10 /LucidaTypewriter f +(acid: +fmtof\(33\)) 1170 5148 w +(W) 1170 5268 w +(acid: +fmtof\("string"\)) 1170 5388 w +(s) 1170 5508 w +10 /LucidaSans-Italic f +(integer) 720 5664 w +10 /LucidaTypewriter f +(fmtsize\() 1128 5664 w +10 /LucidaSans-Italic f +(item) 1704 5664 w +10 /LucidaTypewriter f +(\)) 1917 5664 w +10 /LucidaSansUnicode00 f +(Get format size) 4294 5664 w +10 /LucidaTypewriter f +(fmtsize) 970 5820 w +10 /LucidaSansUnicode00 f +(evaluates) 1515 5820 w +(the) 2009 5820 w +(expression) 2206 5820 w +10 /LucidaSans-Italic f +(item) 2779 5820 w +10 /LucidaSansUnicode00 f +(and) 3034 5820 w +(returns) 3256 5820 w +(the) 3648 5820 w +(size) 3845 5820 w +(in) 4080 5820 w +(bytes) 4213 5820 w +(of) 4514 5820 w +(a) 4654 5820 w +(single) 4751 5820 w +(element of result) 970 5940 w +10 /LucidaSansUnicode20 f +(\031) 1797 5940 w +10 /LucidaSansUnicode00 f +(s format.) 1829 5940 w +10 /LucidaTypewriter f +(acid: +fmtsize\('c'\)) 1170 6096 w +(8) 1170 6216 w +(acid: +fmtsize\('c'\\c\)) 1170 6336 w +(1) 1170 6456 w +(acid: +fmtsize\(0\\X\)) 1170 6576 w +(4) 1170 6696 w +(acid: +fmtsize\('c'\\3\)) 1170 6816 w +(10) 1170 6936 w +cleartomark +showpage +saveobj restore +%%EndPage: 12 12 +%%Page: 13 13 +/saveobj save def +mark +13 pagesetup +10 /LucidaSansUnicode00 f +(\255 13 \255) 2752 480 w +10 /LucidaSans-Italic f +(list) 720 876 w +10 /LucidaTypewriter f +(fnbound\() 929 876 w +10 /LucidaSans-Italic f +(integer) 1505 876 w +10 /LucidaTypewriter f +(\)) 1849 876 w +10 /LucidaSansUnicode00 f +(Find start and end address of a function) 3092 876 w +10 /LucidaTypewriter f +(fnbound) 970 1032 w +10 /LucidaSansUnicode00 f +(interprets) 1546 1032 w +(its) 2091 1032 w +10 /LucidaSans-Italic f +(integer) 2280 1032 w +10 /LucidaSansUnicode00 f +(argument) 2696 1032 w +(as) 3236 1032 w +(an) 3415 1032 w +(address) 3605 1032 w +(in) 4058 1032 w +(the) 4222 1032 w +(text) 4450 1032 w +(of) 4714 1032 w +(the) 4885 1032 w +(debugged) 970 1152 w +(program.) 1500 1152 w +10 /LucidaTypewriter f +(fnbound) 2023 1152 w +10 /LucidaSansUnicode00 f +(returns) 2570 1152 w +(a) 2963 1152 w +(list) 3061 1152 w +(containing) 3250 1152 w +(two) 3803 1152 w +(integers) 4021 1152 w +(correspond\255) 4457 1152 w +(ing) 970 1272 w +(to) 1157 1272 w +(the) 1289 1272 w +(start) 1478 1272 w +(and) 1733 1272 w +(end) 1947 1272 w +(addresses) 2162 1272 w +(of) 2683 1272 w +(the) 2816 1272 w +(function) 3006 1272 w +(containing) 3442 1272 w +(the) 3987 1272 w +(supplied) 4177 1272 w +(address.) 4628 1272 w +(If) 970 1392 w +(the) 1070 1392 w +10 /LucidaSans-Italic f +(integer) 1259 1392 w +10 /LucidaSansUnicode00 f +(address) 1637 1392 w +(is) 2051 1392 w +(not) 2165 1392 w +(in) 2359 1392 w +(the) 2484 1392 w +(text) 2673 1392 w +(segment) 2898 1392 w +(of) 3349 1392 w +(the) 3481 1392 w +(program) 3670 1392 w +(then) 4120 1392 w +(the) 4371 1392 w +(empty) 4560 1392 w +(list) 4894 1392 w +(is returned.) 970 1512 w +10 /LucidaTypewriter f +(fnbound) 1596 1512 w +10 /LucidaSansUnicode00 f +(is used by) 2132 1512 w +10 /LucidaTypewriter f +(next) 2655 1512 w +10 /LucidaSansUnicode00 f +(to detect stepping into new functions.) 2975 1512 w +10 /LucidaTypewriter f +(acid: print\(fnbound\(main\)\)) 1170 1668 w +({0x00001050, 0x000014b8}) 1170 1788 w +({}) 720 1944 w +(follow\() 1008 1944 w +10 /LucidaSans-Italic f +(integer) 1512 1944 w +10 /LucidaTypewriter f +(\)) 1856 1944 w +10 /LucidaSansUnicode00 f +(Compute follow set) 4097 1944 w +(The) 970 2100 w +(follow) 1199 2100 w +(set) 1541 2100 w +(is) 1733 2100 w +(defined) 1861 2100 w +(as) 2275 2100 w +(the) 2429 2100 w +(set) 2632 2100 w +(of) 2824 2100 w +(program) 2971 2100 w +(counter) 3436 2100 w +(values) 3855 2100 w +(that) 4209 2100 w +(could) 4449 2100 w +(result) 4764 2100 w +(from) 970 2220 w +(executing) 1245 2220 w +(an) 1764 2220 w +(instruction.) 1924 2220 w +10 /LucidaTypewriter f +(follow) 2553 2220 w +10 /LucidaSansUnicode00 f +(interprets) 3028 2220 w +(its) 3544 2220 w +10 /LucidaSans-Italic f +(integer) 3704 2220 w +10 /LucidaSansUnicode00 f +(argument) 4091 2220 w +(as) 4602 2220 w +(a) 4751 2220 w +(text) 4849 2220 w +(address,) 970 2340 w +(decodes) 1419 2340 w +(the) 1857 2340 w +(instruction) 2049 2340 w +(at) 2608 2340 w +(that) 2737 2340 w +(address) 2965 2340 w +(and,) 3382 2340 w +(with) 3631 2340 w +(the) 3873 2340 w +(current) 4065 2340 w +(register) 4453 2340 w +(set,) 4864 2340 w +(builds) 970 2460 w +(a) 1300 2460 w +(list) 1388 2460 w +(of) 1567 2460 w +(possible) 1698 2460 w +(next) 2134 2460 w +(program) 2383 2460 w +(counter) 2832 2460 w +(values.) 3235 2460 w +(If) 3605 2460 w +(the) 3704 2460 w +(instruction at the speci\255) 3892 2460 w +(fied address cannot be decoded) 970 2580 w +10 /LucidaTypewriter f +(follow) 2555 2580 w +10 /LucidaSansUnicode00 f +(raises an error.) 3019 2580 w +10 /LucidaTypewriter f +(follow) 3820 2580 w +10 /LucidaSansUnicode00 f +(is) 4285 2580 w +(used) 4398 2580 w +(to) 4663 2580 w +(plant) 4794 2580 w +(breakpoints) 970 2700 w +(on) 1579 2700 w +(all) 1735 2700 w +(potential) 1881 2700 w +(paths) 2343 2700 w +(of execution. The following code fragment plants) 2644 2700 w +(breakpoints on top of all potential following instructions.) 970 2820 w +10 /LucidaTypewriter f +(lst = follow\(*PC\);) 1170 2976 w +(while lst do) 1170 3096 w +({) 1170 3216 w +(*head lst = bpinst;) 1370 3336 w +(lst = tail lst;) 1370 3456 w +(}) 1170 3576 w +({}) 720 3732 w +(include\() 1008 3732 w +10 /LucidaSans-Italic f +(string) 1584 3732 w +10 /LucidaTypewriter f +(\)) 1871 3732 w +10 /LucidaSansUnicode00 f +(Take input from a new file) 3762 3732 w +10 /LucidaTypewriter f +(include) 970 3888 w +10 /LucidaSansUnicode00 f +(opens) 1525 3888 w +(the) 1869 3888 w +(file) 2075 3888 w +(specified) 2277 3888 w +(by) 2763 3888 w +10 /LucidaSans-Italic f +(string) 2929 3888 w +10 /LucidaSansUnicode00 f +(and) 3267 3888 w +(uses) 3498 3888 w +(its) 3769 3888 w +(contents) 3937 3888 w +(as) 4405 3888 w +(command) 4562 3888 w +(input) 970 4008 w +(to) 1259 4008 w +(the) 1393 4008 w +(interpreter.) 1584 4008 w +(The) 2203 4008 w +(interpreter) 2420 4008 w +(restores) 2974 4008 w +(input) 3403 4008 w +(to) 3691 4008 w +(its) 3824 4008 w +(previous) 3976 4008 w +(source) 4426 4008 w +(when) 4783 4008 w +(it) 970 4128 w +(encounters) 1070 4128 w +(either) 1643 4128 w +(an) 1958 4128 w +(end) 2109 4128 w +(of) 2324 4128 w +(file) 2456 4128 w +(or) 2641 4128 w +(an) 2777 4128 w +(error.) 2928 4128 w +10 /LucidaTypewriter f +(include) 3266 4128 w +10 /LucidaSansUnicode00 f +(can) 3804 4128 w +(be) 4006 4128 w +(used) 4159 4128 w +(to) 4425 4128 w +(incremen\255) 4557 4128 w +(tally load symbol table information without leaving the interpreter.) 970 4248 w +10 /LucidaTypewriter f +(acid: include\("/sys/src/cmd/acme/syms"\)) 1170 4404 w +({}) 720 4560 w +(interpret\() 1008 4560 w +10 /LucidaSans-Italic f +(string) 1728 4560 w +10 /LucidaTypewriter f +(\)) 2015 4560 w +10 /LucidaSansUnicode00 f +(Take input from a string) 3858 4560 w +10 /LucidaTypewriter f +(interpret) 970 4716 w +10 /LucidaSansUnicode00 f +(evaluates) 1651 4716 w +(the) 2137 4716 w +10 /LucidaSans-Italic f +(string) 2325 4716 w +10 /LucidaSansUnicode00 f +(expression) 2645 4716 w +(and) 3209 4716 w +(uses) 3422 4716 w +(its) 3675 4716 w +(result) 3825 4716 w +(as) 4135 4716 w +(command) 4275 4716 w +(input) 4787 4716 w +(for) 970 4836 w +(the) 1157 4836 w +(interpreter.) 1360 4836 w +(The) 1991 4836 w +(interpreter) 2220 4836 w +(restores) 2787 4836 w +(input) 3229 4836 w +(to) 3530 4836 w +(its) 3675 4836 w +(previous) 3839 4836 w +(source) 4301 4836 w +(when) 4670 4836 w +(it) 4974 4836 w +(encounters) 970 4956 w +(either) 1551 4956 w +(the) 1874 4956 w +(end) 2071 4956 w +(of) 2294 4956 w +(string) 2434 4956 w +(or) 2759 4956 w +(an) 2904 4956 w +(error.) 3064 4956 w +(The) 3379 4956 w +10 /LucidaTypewriter f +(interpret) 3603 4956 w +10 /LucidaSansUnicode00 f +(function) 4294 4956 w +(allows) 4738 4956 w +(Acid programs to write Acid code for later evaluation.) 970 5076 w +10 /LucidaTypewriter f +(acid: interpret\("main+10;"\)) 1170 5232 w +(0x0000102a) 1170 5352 w +10 /LucidaSans-Italic f +(string) 720 5508 w +10 /LucidaTypewriter f +(itoa\() 1071 5508 w +10 /LucidaSans-Italic f +(integer[,string]) 1431 5508 w +10 /LucidaTypewriter f +(\)) 2160 5508 w +10 /LucidaSansUnicode00 f +(Convert integer to string) 3843 5508 w +10 /LucidaTypewriter f +(itoa) 970 5664 w +10 /LucidaSansUnicode00 f +(takes) 1298 5664 w +(an) 1595 5664 w +(integer) 1752 5664 w +(argument) 2136 5664 w +(and) 2645 5664 w +(converts) 2866 5664 w +(it) 3318 5664 w +(into) 3425 5664 w +(an) 3655 5664 w +(ASCII) 3813 5664 w +(string) 4104 5664 w +(in) 4427 5664 w +(the) 4559 5664 w +10 /LucidaTypewriter f +(D) 4755 5664 w +10 /LucidaSansUnicode00 f +(for\255) 4868 5664 w +(mat.) 970 5784 w +(an) 1266 5784 w +(alternate) 1430 5784 w +(format) 1904 5784 w +(string) 2274 5784 w +(may) 2602 5784 w +(be) 2848 5784 w +(provided) 3013 5784 w +(in) 3487 5784 w +(the) 3624 5784 w +10 /LucidaTypewriter f +(%) 3825 5784 w +10 /LucidaSansUnicode00 f +(style) 3943 5784 w +(of) 4214 5784 w +10 /LucidaSans-Italic f +(print) 4358 5784 w +10 /LucidaSansUnicode00 f +(\(2\).) 4596 5784 w +(This) 4835 5784 w +(function is commonly used to build) 970 5904 w +10 /LucidaTypewriter f +(rc) 2721 5904 w +10 /LucidaSansUnicode00 f +(command lines.) 2897 5904 w +10 /LucidaTypewriter f +(acid: rc\("cat /proc/"+itoa\(pid\)+"/segment"\)) 1170 6060 w +(Stack) 1170 6180 w +(7fc00000 80000000) 1818 6180 w +(1) 3330 6180 w +(Data) 1170 6300 w +(00001000 00009000) 1818 6300 w +(1) 3330 6300 w +(Data) 1170 6420 w +(00009000 0000a000) 1818 6420 w +(1) 3330 6420 w +(Bss) 1170 6540 w +(0000a000 0000c000) 1818 6540 w +(1) 3330 6540 w +cleartomark +showpage +saveobj restore +%%EndPage: 13 13 +%%Page: 14 14 +/saveobj save def +mark +14 pagesetup +10 /LucidaSansUnicode00 f +(\255 14 \255) 2752 480 w +10 /LucidaTypewriter f +({}) 720 876 w +(kill\() 1008 876 w +10 /LucidaSans-Italic f +(integer) 1368 876 w +10 /LucidaTypewriter f +(\)) 1712 876 w +10 /LucidaSansUnicode00 f +(Kill a process) 4395 876 w +10 /LucidaTypewriter f +(kill) 970 1032 w +10 /LucidaSansUnicode00 f +(writes) 1294 1032 w +(a) 1621 1032 w +(kill) 1712 1032 w +(control) 1893 1032 w +(message) 2271 1032 w +(into) 2731 1032 w +(the) 2956 1032 w +(control) 3148 1032 w +(file) 3527 1032 w +(of) 3715 1032 w +(the) 3850 1032 w +(process) 4042 1032 w +(specified) 4453 1032 w +(by) 4925 1032 w +(the) 970 1152 w +10 /LucidaSans-Italic f +(integer) 1179 1152 w +10 /LucidaSansUnicode00 f +(pid.) 1577 1152 w +(If) 1850 1152 w +(the) 1970 1152 w +(process) 2179 1152 w +(was) 2607 1152 w +(previously) 2844 1152 w +(installed) 3394 1152 w +(by) 3859 1152 w +10 /LucidaTypewriter f +(setproc) 4028 1152 w +10 /LucidaSansUnicode00 f +(it) 4585 1152 w +(will) 4704 1152 w +(be) 4921 1152 w +(removed) 970 1272 w +(from) 1441 1272 w +(the) 1722 1272 w +(list) 1926 1272 w +(of) 2121 1272 w +(active) 2268 1272 w +(processes.) 2597 1272 w +(If) 3191 1272 w +(the) 3306 1272 w +10 /LucidaSans-Italic f +(integer) 3510 1272 w +10 /LucidaSansUnicode00 f +(has) 3903 1272 w +(the) 4120 1272 w +(same) 4325 1272 w +(value) 4630 1272 w +(as) 4934 1272 w +10 /LucidaTypewriter f +(pid) 970 1392 w +10 /LucidaSansUnicode00 f +(,) 1186 1392 w +(then) 1262 1392 w +10 /LucidaTypewriter f +(pid) 1523 1392 w +10 /LucidaSansUnicode00 f +(will) 1783 1392 w +(be) 1991 1392 w +(set) 2154 1392 w +(to) 2342 1392 w +(0.) 2484 1392 w +(To) 2655 1392 w +(continue) 2823 1392 w +(debugging,) 3286 1392 w +(a) 3882 1392 w +(new) 3980 1392 w +(process) 4218 1392 w +(must) 4635 1392 w +(be) 4921 1392 w +(selected using) 970 1512 w +10 /LucidaTypewriter f +(setproc) 1699 1512 w +10 /LucidaSansUnicode00 f +(.) 2203 1512 w +(For example, to kill all the active processes:) 2299 1512 w +10 /LucidaTypewriter f +(while proclist do {) 1170 1668 w +(kill\(head proclist\);) 1370 1788 w +(proclist = tail proclist;) 1370 1908 w +(}) 1170 2028 w +10 /LucidaSans-Italic f +(list) 720 2184 w +10 /LucidaTypewriter f +(map\() 929 2184 w +10 /LucidaSans-Italic f +(list) 1217 2184 w +10 /LucidaTypewriter f +(\)) 1362 2184 w +10 /LucidaSansUnicode00 f +(Set or retrieve process memory map) 3282 2184 w +10 /LucidaTypewriter f +(map) 970 2340 w +10 /LucidaSansUnicode00 f +(either) 1234 2340 w +(retrieves) 1563 2340 w +(all) 2030 2340 w +(the) 2191 2340 w +(mappings) 2394 2340 w +(associated) 2920 2340 w +(with) 3477 2340 w +(a) 3730 2340 w +(process) 3833 2340 w +(or) 4255 2340 w +(sets) 4405 2340 w +(a) 4648 2340 w +(single) 4751 2340 w +(map) 970 2460 w +(entry) 1215 2460 w +(to) 1497 2460 w +(a) 1629 2460 w +(new) 1718 2460 w +(value.) 1947 2460 w +(If) 2299 2460 w +(the) 2399 2460 w +10 /LucidaSans-Italic f +(list) 2588 2460 w +10 /LucidaSansUnicode00 f +(argument) 2767 2460 w +(is) 3269 2460 w +(omitted) 3383 2460 w +(then) 3793 2460 w +10 /LucidaTypewriter f +(map) 4043 2460 w +10 /LucidaSansUnicode00 f +(returns) 4292 2460 w +(a) 4675 2460 w +(list) 4763 2460 w +(of) 4942 2460 w +(lists.) 970 2580 w +(Each) 1256 2580 w +(sublist) 1535 2580 w +(has) 1914 2580 w +(four) 2139 2580 w +(values) 2397 2580 w +(and) 2760 2580 w +(describes) 2998 2580 w +(a) 3517 2580 w +(single) 3630 2580 w +(region) 3977 2580 w +(of) 4346 2580 w +(contiguous) 4502 2580 w +(addresses) 970 2700 w +(in) 1493 2700 w +(the) 1620 2700 w +(memory) 1811 2700 w +(or) 2243 2700 w +(file) 2381 2700 w +(image) 2568 2700 w +(of) 2899 2700 w +(the) 3033 2700 w +(debugged) 3224 2700 w +(program.) 3747 2700 w +(The) 4231 2700 w +(first) 4447 2700 w +(entry) 4677 2700 w +(is) 4960 2700 w +(the) 970 2820 w +(name) 1174 2820 w +(of) 1489 2820 w +(the) 1636 2820 w +(mapping.) 1840 2820 w +(If) 2348 2820 w +(the) 2463 2820 w +(name) 2667 2820 w +(begins) 2982 2820 w +(with) 3354 2820 w +10 /LucidaTypewriter f +(*) 3608 2820 w +10 /LucidaSansUnicode00 f +(it) 3729 2820 w +(denotes) 3844 2820 w +(a) 4280 2820 w +(map) 4385 2820 w +(into) 4646 2820 w +(the) 4885 2820 w +(memory) 970 2940 w +(of) 1413 2940 w +(an) 1558 2940 w +(active) 1721 2940 w +(process.) 2047 2940 w +(The) 2531 2940 w +(second) 2758 2940 w +(and) 3148 2940 w +(third) 3374 2940 w +(values) 3652 2940 w +(specify) 4003 2940 w +(the) 4388 2940 w +(base) 4589 2940 w +(and) 4860 2940 w +(end address of) 970 3060 w +(the) 1726 3060 w +(region) 1914 3060 w +(and) 2258 3060 w +(the) 2471 3060 w +(fourth) 2659 3060 w +(number) 2992 3060 w +(specifies) 3402 3060 w +(the) 3858 3060 w +(offset) 4046 3060 w +(in) 4358 3060 w +(the) 4482 3060 w +(file) 4670 3060 w +(cor\255) 4854 3060 w +(responding to the first location of the region.) 970 3180 w +(A map entry may be set by supplying) 3237 3180 w +(a) 970 3300 w +(list) 1061 3300 w +(in) 1243 3300 w +(the) 1370 3300 w +(same) 1561 3300 w +(format) 1852 3300 w +(as) 2212 3300 w +(the) 2354 3300 w +(sublist) 2545 3300 w +(described) 2903 3300 w +(above.) 3412 3300 w +(The) 3767 3300 w +(name) 3984 3300 w +(of) 4286 3300 w +(the) 4421 3300 w +(mapping) 4613 3300 w +(must) 970 3420 w +(match) 1255 3420 w +(a) 1595 3420 w +(region) 1692 3420 w +(already) 2045 3420 w +(defined) 2438 3420 w +(by) 2845 3420 w +(the) 3001 3420 w +(current) 3197 3420 w +(map.) 3588 3420 w +(Maps) 3904 3420 w +(are) 4200 3420 w +(set) 4393 3420 w +(automati\255) 4578 3420 w +(cally) 970 3540 w +(for) 1226 3540 w +(Plan) 1405 3540 w +(9) 1646 3540 w +(processes) 1749 3540 w +(and) 2270 3540 w +(some) 2490 3540 w +(kernels;) 2791 3540 w +(they) 3216 3540 w +(may) 3463 3540 w +(need) 3703 3540 w +(to) 3980 3540 w +(be) 4118 3540 w +(set) 4277 3540 w +(by) 4462 3540 w +(hand) 4618 3540 w +(for) 4901 3540 w +(other kernels and programs that run on bare hardware.) 970 3660 w +10 /LucidaTypewriter f +(acid: map\({"text", _start, end, 0x30}\)) 1170 3816 w +10 /LucidaSans-Italic f +(integer) 720 3972 w +10 /LucidaTypewriter f +(match\() 1128 3972 w +10 /LucidaSans-Italic f +(item,list) 1560 3972 w +10 /LucidaTypewriter f +(\)) 1950 3972 w +10 /LucidaSansUnicode00 f +(Search list for matching value) 3603 3972 w +10 /LucidaTypewriter f +(match) 970 4128 w +10 /LucidaSansUnicode00 f +(compares) 1371 4128 w +(each) 1883 4128 w +(item) 2148 4128 w +(in) 2404 4128 w +10 /LucidaSans-Italic f +(list) 2536 4128 w +10 /LucidaSansUnicode00 f +(using) 2722 4128 w +(the) 3029 4128 w +(equality) 3225 4128 w +(operator) 3650 4128 w +10 /LucidaTypewriter f +(==) 4107 4128 w +10 /LucidaSansUnicode00 f +(with) 4293 4128 w +10 /LucidaSans-Italic f +(item) 4540 4128 w +10 /LucidaSansUnicode00 f +(.) 4753 4128 w +(The) 4859 4128 w +10 /LucidaSans-Italic f +(item) 970 4248 w +10 /LucidaSansUnicode00 f +(can) 1217 4248 w +(be) 1419 4248 w +(of) 1572 4248 w +(any) 1704 4248 w +(type.) 1907 4248 w +(If) 2181 4248 w +(the) 2281 4248 w +(match) 2470 4248 w +(succeeds) 2802 4248 w +(the) 3276 4248 w +(result) 3464 4248 w +(is) 3773 4248 w +(the) 3886 4248 w +(integer) 4074 4248 w +(index) 4450 4248 w +(of) 4754 4248 w +(the) 4885 4248 w +(matching value, otherwise -1.) 970 4368 w +10 /LucidaTypewriter f +(acid: list={8,9,10,11}) 1170 4524 w +(acid: print\(list[match\(10, list\)]\\D\)) 1170 4644 w +(10) 1170 4764 w +({}) 720 4920 w +(newproc\() 1008 4920 w +10 /LucidaSans-Italic f +(string) 1584 4920 w +10 /LucidaTypewriter f +(\)) 1871 4920 w +10 /LucidaSansUnicode00 f +(Create a new process) 4006 4920 w +10 /LucidaTypewriter f +(newproc) 970 5076 w +10 /LucidaSansUnicode00 f +(starts) 1515 5076 w +(a) 1828 5076 w +(new) 1924 5076 w +(process) 2161 5076 w +(with) 2577 5076 w +(an) 2824 5076 w +(argument) 2983 5076 w +(vector) 3493 5076 w +(constructed) 3833 5076 w +(from) 4447 5076 w +10 /LucidaSans-Italic f +(string) 4721 5076 w +10 /LucidaSansUnicode00 f +(.) 5008 5076 w +(The) 970 5196 w +(argument) 1188 5196 w +(vector) 1693 5196 w +(excludes) 2027 5196 w +(the) 2492 5196 w +(name) 2683 5196 w +(of) 2985 5196 w +(the) 3119 5196 w +(program) 3310 5196 w +(to) 3762 5196 w +(execute) 3896 5196 w +(and) 4311 5196 w +(each) 4527 5196 w +(argu\255) 4787 5196 w +(ment) 970 5316 w +(in) 1260 5316 w +10 /LucidaSans-Italic f +(string) 1393 5316 w +10 /LucidaSansUnicode00 f +(must) 1722 5316 w +(be) 2007 5316 w +(space) 2168 5316 w +(separated.) 2486 5316 w +(A) 3037 5316 w +(new) 3148 5316 w +(process) 3385 5316 w +(can) 3801 5316 w +(accept) 4011 5316 w +(no) 4366 5316 w +(more) 4531 5316 w +(than) 4824 5316 w +(512) 970 5436 w +(arguments.) 1207 5436 w +(The) 1806 5436 w +(internal) 2035 5436 w +(variable) 2454 5436 w +10 /LucidaTypewriter f +(pid) 2881 5436 w +10 /LucidaSansUnicode00 f +(is) 3144 5436 w +(set) 3271 5436 w +(to) 3462 5436 w +(the) 3607 5436 w +(pid) 3809 5436 w +(of) 4011 5436 w +(the) 4156 5436 w +(newly) 4358 5436 w +(created) 4681 5436 w +(process.) 970 5556 w +(The) 1413 5556 w +(new) 1631 5556 w +(pid) 1863 5556 w +(is) 2055 5556 w +(also) 2172 5556 w +(appended) 2405 5556 w +(to) 2923 5556 w +(the) 3059 5556 w +(list) 3252 5556 w +(of) 3436 5556 w +(active) 3572 5556 w +(processes) 3890 5556 w +(stored) 4409 5556 w +(in) 4756 5556 w +(the) 4885 5556 w +(variable) 970 5676 w +10 /LucidaTypewriter f +(proclist) 1395 5676 w +10 /LucidaSansUnicode00 f +(.) 1971 5676 w +(The) 2080 5676 w +(new) 2306 5676 w +(process) 2546 5676 w +(is) 2965 5676 w +(created) 3090 5676 w +(then) 3493 5676 w +(halted) 3754 5676 w +(at) 4100 5676 w +(the) 4236 5676 w +(first) 4435 5676 w +(instruc\255) 4674 5676 w +(tion,) 970 5796 w +(causing) 1230 5796 w +(the) 1641 5796 w +(debugger) 1835 5796 w +(to) 2339 5796 w +(call) 2476 5796 w +10 /LucidaTypewriter f +(stopped) 2679 5796 w +10 /LucidaSansUnicode00 f +(.) 3183 5796 w +(The) 3286 5796 w +(library) 3506 5796 w +(functions) 3856 5796 w +10 /LucidaTypewriter f +(new) 4348 5796 w +10 /LucidaSansUnicode00 f +(and) 4604 5796 w +10 /LucidaTypewriter f +(win) 4824 5796 w +10 /LucidaSansUnicode00 f +(should) 970 5916 w +(be) 1350 5916 w +(used) 1521 5916 w +(to) 1805 5916 w +(start) 1955 5916 w +(processes) 2228 5916 w +(when) 2761 5916 w +(using) 3070 5916 w +(the) 3388 5916 w +(standard) 3594 5916 w +(debugging) 4072 5916 w +(environ\255) 4644 5916 w +(ment.) 970 6036 w +10 /LucidaTypewriter f +(acid: newproc\("-l ."\)) 1170 6192 w +(56720: system call) 1170 6312 w +(_main) 2570 6312 w +(ADD) 2970 6312 w +($-0x14,R29) 3370 6312 w +10 /LucidaSans-Italic f +(string) 720 6468 w +10 /LucidaTypewriter f +(pcfile\() 1071 6468 w +10 /LucidaSans-Italic f +(integer) 1575 6468 w +10 /LucidaTypewriter f +(\)) 1919 6468 w +10 /LucidaSansUnicode00 f +(Convert text address to source file name) 3062 6468 w +10 /LucidaTypewriter f +(pcfile) 970 6624 w +10 /LucidaSansUnicode00 f +(interprets) 1449 6624 w +(its) 1969 6624 w +10 /LucidaSans-Italic f +(integer) 2133 6624 w +10 /LucidaSansUnicode00 f +(argument) 2525 6624 w +(as) 3041 6624 w +(a) 3195 6624 w +(text) 3298 6624 w +(address) 3537 6624 w +(in) 3965 6624 w +(the) 4104 6624 w +(debugged) 4307 6624 w +(pro\255) 4842 6624 w +(gram.) 970 6744 w +(The) 1296 6744 w +(address) 1520 6744 w +(and) 1942 6744 w +(symbol) 2164 6744 w +(table) 2555 6744 w +(are) 2837 6744 w +(used) 3031 6744 w +(to) 3305 6744 w +(generate) 3445 6744 w +(a) 3912 6744 w +(string) 4009 6744 w +(containing) 4333 6744 w +(the) 4885 6744 w +(name) 970 6864 w +(of) 1273 6864 w +(the) 1408 6864 w +(source) 1600 6864 w +(file) 1959 6864 w +(corresponding) 2147 6864 w +(to) 2888 6864 w +(the) 3024 6864 w +(text) 3217 6864 w +(address.) 3446 6864 w +(If) 3896 6864 w +(the) 4000 6864 w +(address) 4193 6864 w +(does) 4611 6864 w +(not) 4880 6864 w +(lie within the program the string) 970 6984 w +10 /LucidaTypewriter f +(?file?) 2580 6984 w +10 /LucidaSansUnicode00 f +(is returned.) 3044 6984 w +cleartomark +showpage +saveobj restore +%%EndPage: 14 14 +%%Page: 15 15 +/saveobj save def +mark +15 pagesetup +10 /LucidaSansUnicode00 f +(\255 15 \255) 2752 480 w +10 /LucidaTypewriter f +(acid: print\("Now at ", pcfile\(*PC\), ":", pcline\(*PC\)\)) 1170 876 w +(Now at ls.c:46) 1170 996 w +10 /LucidaSans-Italic f +(integer) 720 1152 w +10 /LucidaTypewriter f +(pcline\() 1128 1152 w +10 /LucidaSans-Italic f +(integer) 1632 1152 w +10 /LucidaTypewriter f +(\)) 1976 1152 w +10 /LucidaSansUnicode00 f +(Convert text address to source line number) 2926 1152 w +10 /LucidaTypewriter f +(pcline) 970 1308 w +10 /LucidaSansUnicode00 f +(interprets) 1449 1308 w +(its) 1969 1308 w +10 /LucidaSans-Italic f +(integer) 2133 1308 w +10 /LucidaSansUnicode00 f +(argument) 2525 1308 w +(as) 3041 1308 w +(a) 3195 1308 w +(text) 3298 1308 w +(address) 3537 1308 w +(in) 3965 1308 w +(the) 4104 1308 w +(debugged) 4307 1308 w +(pro\255) 4842 1308 w +(gram.) 970 1428 w +(The) 1286 1428 w +(address) 1500 1428 w +(and) 1913 1428 w +(symbol) 2126 1428 w +(table) 2508 1428 w +(are) 2781 1428 w +(used) 2966 1428 w +(to) 3231 1428 w +(generate an integer containing the) 3362 1428 w +(line) 970 1548 w +(number) 1195 1548 w +(in) 1621 1548 w +(the) 1761 1548 w +(source) 1965 1548 w +(file) 2336 1548 w +(corresponding) 2536 1548 w +(to) 3288 1548 w +(the) 3435 1548 w +(text) 3639 1548 w +(address.) 3879 1548 w +(If) 4340 1548 w +(the) 4455 1548 w +(address) 4660 1548 w +(does not lie within the program the integer 0 is returned.) 970 1668 w +10 /LucidaTypewriter f +(acid: +file\("main.c"\)[pcline\(main\)]) 1170 1824 w +(main\(int argc, char *argv[]\)) 1170 1944 w +({}) 720 2100 w +(print\() 1008 2100 w +10 /LucidaSans-Italic f +(item,item,...) 1440 2100 w +10 /LucidaTypewriter f +(\)) 2026 2100 w +10 /LucidaSansUnicode00 f +(Print expressions) 4202 2100 w +10 /LucidaTypewriter f +(print) 970 2256 w +10 /LucidaSansUnicode00 f +(evaluates) 1370 2256 w +(each) 1863 2256 w +10 /LucidaSans-Italic f +(item) 2127 2256 w +10 /LucidaSansUnicode00 f +(supplied) 2380 2256 w +(in) 2836 2256 w +(its) 2968 2256 w +(argument) 3126 2256 w +(list) 3635 2256 w +(and) 3822 2256 w +(prints) 4043 2256 w +(it) 4367 2256 w +(to) 4474 2256 w +(standard) 4613 2256 w +(output.) 970 2376 w +(Each) 1360 2376 w +(argument) 1618 2376 w +(will) 2122 2376 w +(be) 2321 2376 w +(printed) 2475 2376 w +(according) 2861 2376 w +(to) 3371 2376 w +(its) 3504 2376 w +(associated) 3656 2376 w +(format) 4200 2376 w +(character.) 4559 2376 w +(When) 970 2496 w +(the) 1269 2496 w +(interpreter) 1458 2496 w +(is) 2011 2496 w +(executing,) 2125 2496 w +(output) 2667 2496 w +(is) 3023 2496 w +(buffered) 3137 2496 w +(and) 3586 2496 w +(flushed) 3800 2496 w +(every) 4194 2496 w +(5000) 4485 2496 w +(state\255) 4771 2496 w +(ments) 970 2616 w +(or) 1303 2616 w +(when) 1439 2616 w +(the) 1729 2616 w +(interpreter) 1917 2616 w +(returns) 2469 2616 w +(to) 2852 2616 w +(interactive) 2983 2616 w +(mode.) 3521 2616 w +10 /LucidaTypewriter f +(print) 3891 2616 w +10 /LucidaSansUnicode00 f +(accepts) 4284 2616 w +(a) 4681 2616 w +(maxi\255) 4769 2616 w +(mum of 512 arguments.) 970 2736 w +10 /LucidaTypewriter f +(acid: print\(10, "decimal ", 10\\D, "octal ", 10\\o\)) 1170 2892 w +(0x0000000a decimal 10 octal 000000000012) 1170 3012 w +(acid: print\({1, 2, 3}\)) 1170 3132 w +({0x00000001 , 0x00000002 , 0x00000003 }) 1170 3252 w +(acid: print\(main, main\\a, "\\t", @main\\i\)) 1170 3372 w +(0x00001020 main) 1170 3492 w +(ADD) 2370 3492 w +($-64,R29) 2770 3492 w +({}) 720 3648 w +(printto\() 1008 3648 w +10 /LucidaSans-Italic f +(string,item,item,...) 1584 3648 w +10 /LucidaTypewriter f +(\)) 2489 3648 w +10 /LucidaSansUnicode00 f +(Print expressions to file) 3889 3648 w +10 /LucidaTypewriter f +(printto) 970 3804 w +10 /LucidaSansUnicode00 f +(offers) 1513 3804 w +(a) 1835 3804 w +(limited) 1929 3804 w +(form) 2304 3804 w +(of) 2575 3804 w +(output) 2712 3804 w +(redirection.) 3073 3804 w +(The) 3670 3804 w +(first) 3890 3804 w +10 /LucidaSans-Italic f +(string) 4125 3804 w +10 /LucidaSansUnicode00 f +(argument) 4452 3804 w +(is) 4960 3804 w +(used) 970 3924 w +(as) 1250 3924 w +(the) 1404 3924 w +(path) 1607 3924 w +(name) 1872 3924 w +(of) 2186 3924 w +(a) 2332 3924 w +(new) 2435 3924 w +(file) 2678 3924 w +(to) 2876 3924 w +(create.) 3021 3924 w +(Each) 3428 3924 w +10 /LucidaSans-Italic f +(item) 3697 3924 w +10 /LucidaSansUnicode00 f +(is) 3957 3924 w +(then) 4084 3924 w +(evaluated) 4348 3924 w +(and) 4860 3924 w +(printed) 970 4044 w +(to) 1378 4044 w +(the) 1533 4044 w +(newly) 1745 4044 w +(created) 2078 4044 w +(file.) 2494 4044 w +(When) 2734 4044 w +(all) 3057 4044 w +(items) 3227 4044 w +(have) 3551 4044 w +(been) 3834 4044 w +(printed) 4129 4044 w +(the) 4538 4044 w +(file) 4751 4044 w +(is) 4960 4044 w +(closed.) 970 4164 w +10 /LucidaTypewriter f +(printto) 1377 4164 w +10 /LucidaSansUnicode00 f +(accepts a maximum of 512 arguments.) 1913 4164 w +10 /LucidaTypewriter f +(acid: printto\("/env/foo", "hello"\)) 1170 4320 w +(acid: rc\("echo -n $foo"\)) 1170 4440 w +(hello) 1170 4560 w +10 /LucidaSans-Italic f +(string) 720 4716 w +10 /LucidaTypewriter f +(rc\() 1071 4716 w +10 /LucidaSans-Italic f +(string) 1287 4716 w +10 /LucidaTypewriter f +(\)) 1574 4716 w +10 /LucidaSansUnicode00 f +(Execute a shell command) 3807 4716 w +10 /LucidaTypewriter f +(rc) 970 4872 w +10 /LucidaSansUnicode00 f +(evaluates) 1174 4872 w +10 /LucidaSans-Italic f +(string) 1687 4872 w +10 /LucidaSansUnicode00 f +(to) 2034 4872 w +(form) 2192 4872 w +(a) 2484 4872 w +(shell) 2599 4872 w +(command.) 2886 4872 w +(A) 3456 4872 w +(new) 3585 4872 w +(command) 3841 4872 w +(interpreter) 4380 4872 w +(is) 4960 4872 w +(started) 970 4992 w +(to) 1357 4992 w +(execute) 1502 4992 w +(the) 1928 4992 w +(command.) 2130 4992 w +(The) 2687 4992 w +(Acid) 2914 4992 w +(interpreter) 3172 4992 w +(blocks) 3737 4992 w +(until) 4096 4992 w +(the) 4361 4992 w +(command) 4562 4992 w +(completes.) 970 5112 w +(The) 1542 5112 w +(return) 1767 5112 w +(value) 2110 5112 w +(is) 2408 5112 w +(the) 2532 5112 w +(empty) 2731 5112 w +(string) 3076 5112 w +(if) 3402 5112 w +(the) 3512 5112 w +(command) 3711 5112 w +(succeeds,) 4233 5112 w +(other\255) 4750 5112 w +(wise the exit status of the failed command.) 970 5232 w +10 /LucidaTypewriter f +(acid: rc\("B "+itoa\(-pcline\(addr\)\)+" "+pcfile\(addr\)\);) 1170 5388 w +10 /LucidaSans-Italic f +(string) 720 5544 w +10 /LucidaTypewriter f +(readfile\() 1071 5544 w +10 /LucidaSans-Italic f +(string) 1719 5544 w +10 /LucidaTypewriter f +(\)) 2006 5544 w +10 /LucidaSansUnicode00 f +(Read file contents into a string) 3549 5544 w +10 /LucidaTypewriter f +(readfile) 970 5700 w +10 /LucidaSansUnicode00 f +(takes) 1589 5700 w +(the) 1889 5700 w +(contents) 2088 5700 w +(of) 2549 5700 w +(the) 2691 5700 w +(file) 2890 5700 w +(specified) 3085 5700 w +(by) 3564 5700 w +10 /LucidaSans-Italic f +(string) 3723 5700 w +10 /LucidaSansUnicode00 f +(and) 4054 5700 w +(returns) 4278 5700 w +(its) 4672 5700 w +(con\255) 4833 5700 w +(tents) 970 5820 w +(as) 1259 5820 w +(a) 1411 5820 w +(new) 1512 5820 w +(string.) 1753 5820 w +(If) 2145 5820 w +10 /LucidaTypewriter f +(readfile) 2257 5820 w +10 /LucidaSansUnicode00 f +(encounters) 2879 5820 w +(a) 3463 5820 w +(zero) 3563 5820 w +(byte) 3823 5820 w +(in) 4076 5820 w +(the) 4212 5820 w +(file,) 4412 5820 w +(it) 4640 5820 w +(termi\255) 4751 5820 w +(nates.) 970 5940 w +(If) 1350 5940 w +10 /LucidaTypewriter f +(readfile) 1471 5940 w +10 /LucidaSansUnicode00 f +(encounters) 2102 5940 w +(an) 2696 5940 w +(error) 2868 5940 w +(opening) 3163 5940 w +(or) 3613 5940 w +(reading) 3770 5940 w +(the) 4194 5940 w +(file) 4405 5940 w +(then) 4612 5940 w +(the) 4885 5940 w +(empty) 970 6060 w +(list) 1305 6060 w +(is) 1485 6060 w +(returned.) 1599 6060 w +10 /LucidaTypewriter f +(readfile) 2115 6060 w +10 /LucidaSansUnicode00 f +(can) 2725 6060 w +(be) 2927 6060 w +(used) 3080 6060 w +(to) 3346 6060 w +(read) 3478 6060 w +(the) 3727 6060 w +(contents) 3916 6060 w +(of) 4367 6060 w +(device) 4498 6060 w +(files) 4838 6060 w +(whose lines are not terminated with newline characters.) 970 6180 w +10 /LucidaTypewriter f +(acid: ""+readfile\("/dev/label"\)) 1170 6336 w +(helix) 1170 6456 w +10 /LucidaSans-Italic f +(string) 720 6612 w +10 /LucidaTypewriter f +(reason\() 1071 6612 w +10 /LucidaSans-Italic f +(integer) 1575 6612 w +10 /LucidaTypewriter f +(\)) 1919 6612 w +10 /LucidaSansUnicode00 f +(Print cause of program stoppage) 3451 6612 w +10 /LucidaTypewriter f +(reason) 970 6768 w +10 /LucidaSansUnicode00 f +(uses) 1436 6768 w +(machine-dependent) 1690 6768 w +(information) 2708 6768 w +(to) 3309 6768 w +(generate) 3441 6768 w +(a) 3900 6768 w +(string) 3989 6768 w +(explaining) 4306 6768 w +(why) 4849 6768 w +(a) 970 6888 w +(process) 1059 6888 w +(has) 1467 6888 w +(stopped.) 1669 6888 w +(The) 2129 6888 w +10 /LucidaSans-Italic f +(integer) 2344 6888 w +10 /LucidaSansUnicode00 f +(argument) 2722 6888 w +(is) 3224 6888 w +(the) 3338 6888 w +(value) 3527 6888 w +(of) 3815 6888 w +(an) 3946 6888 w +(architecture) 4096 6888 w +(depen\255) 4707 6888 w +(dent status register, for example) 970 7008 w +10 /LucidaTypewriter f +(CAUSE) 2598 7008 w +10 /LucidaSansUnicode00 f +(on the MIPS.) 2990 7008 w +cleartomark +showpage +saveobj restore +%%EndPage: 15 15 +%%Page: 16 16 +/saveobj save def +mark +16 pagesetup +10 /LucidaSansUnicode00 f +(\255 16 \255) 2752 480 w +10 /LucidaTypewriter f +(acid: print\(reason\(*CAUSE\)\)) 1170 876 w +(system call) 1170 996 w +10 /LucidaSans-Italic f +(integer) 720 1152 w +10 /LucidaTypewriter f +(regexp\() 1128 1152 w +10 /LucidaSans-Italic f +(pattern,string) 1632 1152 w +10 /LucidaTypewriter f +(\)) 2312 1152 w +10 /LucidaSansUnicode00 f +(Regular expression match) 3779 1152 w +10 /LucidaTypewriter f +(regexp) 970 1308 w +10 /LucidaSansUnicode00 f +(matches) 1442 1308 w +(the) 1887 1308 w +10 /LucidaSans-Italic f +(pattern) 2082 1308 w +10 /LucidaSansUnicode00 f +(string) 2483 1308 w +(supplied) 2805 1308 w +(as) 3261 1308 w +(its) 3408 1308 w +(first) 3566 1308 w +(argument) 3802 1308 w +(with) 4311 1308 w +(the) 4557 1308 w +10 /LucidaSans-Italic f +(string) 4753 1308 w +10 /LucidaSansUnicode00 f +(supplied) 970 1428 w +(as) 1427 1428 w +(its) 1573 1428 w +(second.) 1730 1428 w +(If) 2178 1428 w +(the) 2284 1428 w +(pattern) 2479 1428 w +(matches) 2870 1428 w +(the) 3315 1428 w +(result) 3510 1428 w +(is) 3826 1428 w +(the) 3946 1428 w +(value) 4141 1428 w +(1,) 4435 1428 w +(otherwise) 4570 1428 w +(0.) 970 1548 w +10 /LucidaTypewriter f +(acid: print\(regexp\(".*bar", "foobar"\)\)) 1170 1704 w +(1) 1170 1824 w +({}) 720 1980 w +(setproc\() 1008 1980 w +10 /LucidaSans-Italic f +(integer) 1584 1980 w +10 /LucidaTypewriter f +(\)) 1928 1980 w +10 /LucidaSansUnicode00 f +(Set debugger focus) 4102 1980 w +10 /LucidaTypewriter f +(setproc) 970 2136 w +10 /LucidaSansUnicode00 f +(selects) 1516 2136 w +(the) 1889 2136 w +(default) 2086 2136 w +(process) 2467 2136 w +(used) 2883 2136 w +(for) 3157 2136 w +(memory) 3338 2136 w +(and) 3776 2136 w +(control) 3998 2136 w +(operations.) 4383 2136 w +(It) 4974 2136 w +(effectively) 970 2256 w +(shifts) 1517 2256 w +(the) 1838 2256 w +(focus) 2047 2256 w +(of) 2363 2256 w +(control) 2515 2256 w +(between) 2911 2256 w +(processes.) 3372 2256 w +(The) 3939 2256 w +10 /LucidaSans-Italic f +(integer) 4174 2256 w +10 /LucidaSansUnicode00 f +(argument) 4572 2256 w +(specifies the pid of the process to look at.) 970 2376 w +(The) 3081 2376 w +(variable) 3295 2376 w +10 /LucidaTypewriter f +(pid) 3708 2376 w +10 /LucidaSansUnicode00 f +(is) 3957 2376 w +(set) 4070 2376 w +(to) 4247 2376 w +(the) 4378 2376 w +(pid) 4566 2376 w +(of) 4754 2376 w +(the) 4885 2376 w +(selected) 970 2496 w +(process.) 1407 2496 w +(If) 1851 2496 w +(the) 1955 2496 w +(process) 2148 2496 w +(is) 2560 2496 w +(being) 2678 2496 w +(selected) 2988 2496 w +(for) 3425 2496 w +(the) 3601 2496 w +(first) 3793 2496 w +(time) 4025 2496 w +(its) 4277 2496 w +(pid) 4431 2496 w +(is) 4623 2496 w +(added) 4740 2496 w +(to the list of active processes) 970 2616 w +10 /LucidaTypewriter f +(proclist) 2420 2616 w +10 /LucidaSansUnicode00 f +(.) 2996 2616 w +10 /LucidaTypewriter f +(acid: setproc\(68382\)) 1170 2772 w +(acid: procs\(\)) 1170 2892 w +(>68382: Stopped at main+0x4 setproc\(68382\)) 1170 3012 w +({}) 720 3168 w +(start\() 1008 3168 w +10 /LucidaSans-Italic f +(integer) 1440 3168 w +10 /LucidaTypewriter f +(\)) 1784 3168 w +10 /LucidaSansUnicode00 f +(Restart execution) 4193 3168 w +10 /LucidaTypewriter f +(start) 970 3324 w +10 /LucidaSansUnicode00 f +(writes) 1365 3324 w +(a) 1691 3324 w +10 /LucidaTypewriter f +(start) 1782 3324 w +10 /LucidaSansUnicode00 f +(message) 2178 3324 w +(to) 2638 3324 w +(the) 2772 3324 w +(control) 2963 3324 w +(file) 3341 3324 w +(of) 3528 3324 w +(the) 3662 3324 w +(process) 3853 3324 w +(specified) 4263 3324 w +(by) 4734 3324 w +(the) 4885 3324 w +(pid) 970 3444 w +(supplied) 1166 3444 w +(as) 1622 3444 w +(its) 1768 3444 w +10 /LucidaSans-Italic f +(integer) 1925 3444 w +10 /LucidaSansUnicode00 f +(argument.) 2309 3444 w +10 /LucidaTypewriter f +(start) 2881 3444 w +10 /LucidaSansUnicode00 f +(draws) 3281 3444 w +(an) 3608 3444 w +(error) 3765 3444 w +(if) 4045 3444 w +(the) 4151 3444 w +(process) 4346 3444 w +(is) 4760 3444 w +(not) 4880 3444 w +(in the) 970 3564 w +10 /LucidaTypewriter f +(Stopped) 1280 3564 w +10 /LucidaSansUnicode00 f +(state.) 1816 3564 w +10 /LucidaTypewriter f +(acid: start\(68382\)) 1170 3720 w +(acid: procs\(\)) 1170 3840 w +(>68382: Running at main+0x4 setproc\(68382\)) 1170 3960 w +({}) 720 4116 w +(startstop\() 1008 4116 w +10 /LucidaSans-Italic f +(integer) 1728 4116 w +10 /LucidaTypewriter f +(\)) 2072 4116 w +10 /LucidaSansUnicode00 f +(Restart execution, block until stopped) 3190 4116 w +10 /LucidaTypewriter f +(startstop) 970 4272 w +10 /LucidaSansUnicode00 f +(performs) 1660 4272 w +(the) 2145 4272 w +(same) 2342 4272 w +(actions) 2639 4272 w +(as) 3027 4272 w +(a) 3175 4272 w +(call) 3272 4272 w +(to) 3479 4272 w +10 /LucidaTypewriter f +(start) 3620 4272 w +10 /LucidaSansUnicode00 f +(followed) 4023 4272 w +(by) 4479 4272 w +(a) 4637 4272 w +(call) 4735 4272 w +(to) 4942 4272 w +10 /LucidaTypewriter f +(stop) 970 4392 w +10 /LucidaSansUnicode00 f +(.) 1258 4392 w +(The) 1362 4392 w +10 /LucidaSans-Italic f +(integer) 1583 4392 w +10 /LucidaSansUnicode00 f +(argument) 1967 4392 w +(specifies) 2475 4392 w +(the) 2938 4392 w +(pid) 3133 4392 w +(of) 3328 4392 w +(the) 3465 4392 w +(process) 3659 4392 w +(to) 4072 4392 w +(control.) 4209 4392 w +(The) 4622 4392 w +(pro\255) 4842 4392 w +(cess) 970 4512 w +(must) 1228 4512 w +(be) 1520 4512 w +(in) 1688 4512 w +(the) 1828 4512 w +10 /LucidaTypewriter f +(Stopped) 2032 4512 w +10 /LucidaSansUnicode00 f +(state.) 2585 4512 w +(Execution) 2934 4512 w +(is) 3456 4512 w +(restarted,) 3585 4512 w +(the) 4103 4512 w +(debugger) 4308 4512 w +(then) 4823 4512 w +(waits) 970 4632 w +(for) 1253 4632 w +(the) 1426 4632 w +(process) 1615 4632 w +(to) 2023 4632 w +(return) 2155 4632 w +(to) 2488 4632 w +(the) 2620 4632 w +10 /LucidaTypewriter f +(Stopped) 2809 4632 w +10 /LucidaSansUnicode00 f +(state.) 3347 4632 w +(A) 3648 4632 w +(process) 3750 4632 w +(will) 4157 4632 w +(stop) 4354 4632 w +(if) 4599 4632 w +(a) 4698 4632 w +(start\255) 4786 4632 w +(stop) 970 4752 w +(message) 1227 4752 w +(has) 1696 4752 w +(been) 1909 4752 w +(written) 2191 4752 w +(to) 2575 4752 w +(its) 2718 4752 w +(control) 2880 4752 w +(file) 3267 4752 w +(and) 3463 4752 w +(any) 3688 4752 w +(of) 3903 4752 w +(the) 4047 4752 w +(following) 4248 4752 w +(condi\255) 4741 4752 w +(tions) 970 4872 w +(becomes) 1255 4872 w +(true:) 1731 4872 w +(the) 2004 4872 w +(process) 2204 4872 w +(executes) 2623 4872 w +(or) 3098 4872 w +(returns) 3245 4872 w +(from) 3640 4872 w +(a) 3917 4872 w +(system) 4017 4872 w +(call,) 4402 4872 w +(the) 4643 4872 w +(pro\255) 4842 4872 w +(cess) 970 4992 w +(generates) 1234 4992 w +(a) 1765 4992 w +(trap) 1875 4992 w +(or) 2126 4992 w +(the) 2283 4992 w +(process) 2493 4992 w +(receives) 2922 4992 w +(a) 3369 4992 w +(note.) 3479 4992 w +10 /LucidaTypewriter f +(startstop) 3814 4992 w +10 /LucidaSansUnicode00 f +(is) 4518 4992 w +(used) 4654 4992 w +(to) 4942 4992 w +(implement single stepping.) 970 5112 w +10 /LucidaTypewriter f +(acid: startstop\(pid\)) 1170 5268 w +(75374: breakpoint) 1170 5388 w +(ls) 2570 5388 w +(ADD) 2770 5388 w +($-0x16c8,R29) 3170 5388 w +10 /LucidaSans-Italic f +(string) 720 5544 w +10 /LucidaTypewriter f +(status\() 1071 5544 w +10 /LucidaSans-Italic f +(integer) 1575 5544 w +10 /LucidaTypewriter f +(\)) 1919 5544 w +10 /LucidaSansUnicode00 f +(Return process state) 4045 5544 w +10 /LucidaTypewriter f +(status) 970 5700 w +10 /LucidaSansUnicode00 f +(uses) 1467 5700 w +(the) 1752 5700 w +(pid) 1972 5700 w +(supplied) 2192 5700 w +(by) 2674 5700 w +(its) 2855 5700 w +10 /LucidaSans-Italic f +(integer) 3038 5700 w +10 /LucidaSansUnicode00 f +(argument) 3448 5700 w +(to) 3982 5700 w +(generate) 4146 5700 w +(a) 4637 5700 w +(string) 4758 5700 w +(describing) 970 5820 w +(the) 1520 5820 w +(state) 1718 5820 w +(of) 1997 5820 w +(the) 2138 5820 w +(process.) 2336 5820 w +(The) 2817 5820 w +(string) 3040 5820 w +(corresponds) 3364 5820 w +(to) 4007 5820 w +(the) 4147 5820 w +(state) 4344 5820 w +(returned) 4622 5820 w +(by) 970 5940 w +(the) 1128 5940 w +(sixth) 1326 5940 w +(column) 1609 5940 w +(of) 2011 5940 w +(the) 2153 5940 w +10 /LucidaSans-Italic f +(ps) 2352 5940 w +10 /LucidaSansUnicode00 f +(\(1\)) 2462 5940 w +(command.) 2635 5940 w +(A) 3221 5940 w +(process) 3334 5940 w +(must) 3752 5940 w +(be) 4039 5940 w +(in) 4202 5940 w +(the) 4337 5940 w +10 /LucidaTypewriter f +(Stopped) 4536 5940 w +10 /LucidaSansUnicode00 f +(state to modify its memory or registers.) 970 6060 w +10 /LucidaTypewriter f +(acid: ""+status\(pid\)) 1170 6216 w +(Stopped) 1170 6336 w +cleartomark +showpage +saveobj restore +%%EndPage: 16 16 +%%Page: 17 17 +/saveobj save def +mark +17 pagesetup +10 /LucidaSansUnicode00 f +(\255 17 \255) 2752 480 w +10 /LucidaTypewriter f +({}) 720 876 w +(stop\() 1008 876 w +10 /LucidaSans-Italic f +(integer) 1368 876 w +10 /LucidaTypewriter f +(\)) 1712 876 w +10 /LucidaSansUnicode00 f +(Wait for a process to stop) 3795 876 w +10 /LucidaTypewriter f +(stop) 970 1032 w +10 /LucidaSansUnicode00 f +(writes a) 1290 1032 w +10 /LucidaTypewriter f +(stop) 1700 1032 w +10 /LucidaSansUnicode00 f +(message) 2020 1032 w +(to) 2477 1032 w +(the) 2608 1032 w +(control) 2796 1032 w +(file) 3171 1032 w +(of) 3355 1032 w +(the) 3486 1032 w +(process) 3674 1032 w +(specified) 4081 1032 w +(by) 4549 1032 w +(the) 4697 1032 w +(pid) 4885 1032 w +(supplied) 970 1152 w +(as) 1430 1152 w +(its) 1580 1152 w +10 /LucidaSans-Italic f +(integer) 1741 1152 w +10 /LucidaSansUnicode00 f +(argument.) 2129 1152 w +(The) 2705 1152 w +(interpreter) 2930 1152 w +(blocks) 3493 1152 w +(until) 3850 1152 w +(the) 4113 1152 w +(debugged) 4312 1152 w +(pro\255) 4842 1152 w +(cess) 970 1272 w +(enters) 1223 1272 w +(the) 1570 1272 w +10 /LucidaTypewriter f +(Stopped) 1769 1272 w +10 /LucidaSansUnicode00 f +(state.) 2317 1272 w +(A) 2661 1272 w +(process) 2774 1272 w +(will) 3192 1272 w +(stop) 3400 1272 w +(if) 3656 1272 w +(a) 3766 1272 w +(stop) 3865 1272 w +(message) 4121 1272 w +(has) 4590 1272 w +(been) 4803 1272 w +(written) 970 1392 w +(to) 1342 1392 w +(its) 1473 1392 w +(control) 1623 1392 w +(file) 1998 1392 w +(and) 2182 1392 w +(any) 2395 1392 w +(of) 2597 1392 w +(the following conditions becomes true: the pro\255) 2728 1392 w +(cess) 970 1512 w +(executes) 1215 1512 w +(or) 1681 1512 w +(returns) 1819 1512 w +(from) 2206 1512 w +(a) 2475 1512 w +(system) 2567 1512 w +(call,) 2944 1512 w +(the) 3177 1512 w +(process) 3369 1512 w +(generates) 3780 1512 w +(a) 4293 1512 w +(trap,) 4385 1512 w +(the) 4650 1512 w +(pro\255) 4842 1512 w +(cess) 970 1632 w +(is) 1220 1632 w +(scheduled) 1341 1632 w +(or) 1874 1632 w +(the) 2016 1632 w +(process) 2211 1632 w +(receives) 2625 1632 w +(a) 3057 1632 w +(note.) 3152 1632 w +10 /LucidaTypewriter f +(stop) 3472 1632 w +10 /LucidaSansUnicode00 f +(is) 3800 1632 w +(used) 3920 1632 w +(to) 4192 1632 w +(wait) 4330 1632 w +(for) 4568 1632 w +(a) 4747 1632 w +(pro\255) 4842 1632 w +(cess) 970 1752 w +(to) 1213 1752 w +(halt) 1345 1752 w +(before) 1562 1752 w +(planting) 1910 1752 w +(a) 2343 1752 w +(breakpoint) 2432 1752 w +(since) 2991 1752 w +(Plan) 3274 1752 w +(9) 3509 1752 w +(only) 3607 1752 w +(allows) 3846 1752 w +(a) 4183 1752 w +(process) 4273 1752 w +10 /LucidaSansUnicode20 f +(\031) 4647 1752 w +10 /LucidaSansUnicode00 f +(s) 4679 1752 w +(mem\255) 4765 1752 w +(ory to be written while it is in the) 970 1872 w +10 /LucidaTypewriter f +(Stopped) 2613 1872 w +10 /LucidaSansUnicode00 f +(state.) 3149 1872 w +10 /LucidaTypewriter f +(defn bpset\(addr\) {) 1170 2028 w +(if \(status\(pid\)!="Stopped"\) then {) 1370 2148 w +(print\("Waiting...\\n"\);) 1570 2268 w +(stop\(pid\);) 1570 2388 w +(}) 1370 2508 w +(...) 1370 2628 w +(}) 1170 2748 w +10 /LucidaSans-Italic f +(list) 720 2904 w +10 /LucidaTypewriter f +(strace\() 929 2904 w +10 /LucidaSans-Italic f +(pc,sp,linkreg) 1433 2904 w +10 /LucidaTypewriter f +(\)) 2058 2904 w +10 /LucidaSansUnicode00 f +(Stack trace) 4513 2904 w +10 /LucidaTypewriter f +(strace) 970 3060 w +10 /LucidaSansUnicode00 f +(generates) 1471 3060 w +(a) 2016 3060 w +(list) 2140 3060 w +(of) 2356 3060 w +(lists) 2524 3060 w +(corresponding) 2791 3060 w +(to) 3564 3060 w +(procedures) 3732 3060 w +(called) 4347 3060 w +(by) 4700 3060 w +(the) 4885 3060 w +(debugged) 970 3180 w +(program.) 1501 3180 w +(Each) 1993 3180 w +(sublist) 2259 3180 w +(describes) 2625 3180 w +(a) 3130 3180 w +(single) 3229 3180 w +(stack) 3562 3180 w +(frame) 3858 3180 w +(in) 4184 3180 w +(the) 4319 3180 w +(active) 4518 3180 w +(pro\255) 4842 3180 w +(cess.) 970 3300 w +(The) 1294 3300 w +(first) 1526 3300 w +(element) 1772 3300 w +(is) 2212 3300 w +(an) 2343 3300 w +10 /LucidaSans-Italic f +(integer) 2511 3300 w +10 /LucidaSansUnicode00 f +(of) 2906 3300 w +(format) 3055 3300 w +10 /LucidaTypewriter f +(X) 3430 3300 w +10 /LucidaSansUnicode00 f +(specifying) 3553 3300 w +(the) 4096 3300 w +(address) 4303 3300 w +(of) 4735 3300 w +(the) 4885 3300 w +(called) 970 3420 w +(function.) 1292 3420 w +(The) 1764 3420 w +(second) 1984 3420 w +(element) 2367 3420 w +(is) 2795 3420 w +(the) 2914 3420 w +(value) 3107 3420 w +(of) 3399 3420 w +(the) 3535 3420 w +(program) 3728 3420 w +(counter) 4182 3420 w +(when) 4590 3420 w +(the) 4885 3420 w +(function) 970 3540 w +(was) 1413 3540 w +(called.) 1638 3540 w +(The) 1995 3540 w +(third) 2218 3540 w +(and) 2492 3540 w +(fourth) 2714 3540 w +(elements) 3056 3540 w +(contain) 3539 3540 w +(lists) 3939 3540 w +(of) 4179 3540 w +(parameter) 4320 3540 w +(and) 4860 3540 w +(automatic) 970 3660 w +(variables) 1487 3660 w +(respectively.) 1955 3660 w +(Each) 2629 3660 w +(element) 2888 3660 w +(of) 3314 3660 w +(these) 3449 3660 w +(lists) 3748 3660 w +(contains) 3982 3660 w +(a) 4426 3660 w +(string) 4517 3660 w +(with) 4835 3660 w +(the) 970 3780 w +(name) 1168 3780 w +(of) 1477 3780 w +(the) 1618 3780 w +(variable) 1816 3780 w +(and) 2240 3780 w +(an) 2464 3780 w +10 /LucidaSans-Italic f +(integer) 2625 3780 w +10 /LucidaSansUnicode00 f +(value) 3013 3780 w +(of) 3311 3780 w +(format) 3453 3780 w +10 /LucidaTypewriter f +(X) 3821 3780 w +10 /LucidaSansUnicode00 f +(containing) 3937 3780 w +(the) 4491 3780 w +(current) 4690 3780 w +(value) 970 3900 w +(of) 1262 3900 w +(the) 1398 3900 w +(variable.) 1591 3900 w +(The) 2073 3900 w +(arguments) 2292 3900 w +(to) 2849 3900 w +10 /LucidaTypewriter f +(strace) 2985 3900 w +10 /LucidaSansUnicode00 f +(are) 3455 3900 w +(the) 3645 3900 w +(current) 3837 3900 w +(value) 4224 3900 w +(of) 4515 3900 w +(the) 4650 3900 w +(pro\255) 4842 3900 w +(gram) 970 4020 w +(counter,) 1265 4020 w +(the) 1711 4020 w +(current) 1910 4020 w +(value) 2304 4020 w +(of) 2603 4020 w +(the) 2746 4020 w +(stack) 2946 4020 w +(pointer,) 3243 4020 w +(and) 3669 4020 w +(the) 3894 4020 w +(address) 4094 4020 w +(of) 4519 4020 w +(the) 4662 4020 w +(link) 4862 4020 w +(register.) 970 4140 w +(All) 1415 4140 w +(three) 1582 4140 w +(parameters) 1873 4140 w +(must) 2460 4140 w +(be) 2742 4140 w +(integers.) 2900 4140 w +(The) 3397 4140 w +(setting) 3617 4140 w +(of) 3990 4140 w +10 /LucidaSans-Italic f +(linkreg) 4127 4140 w +10 /LucidaSansUnicode00 f +(is) 4506 4140 w +(architec\255) 4625 4140 w +(ture) 970 4260 w +(dependent.) 1213 4260 w +(On) 1810 4260 w +(the) 1997 4260 w +(MIPS) 2199 4260 w +(linkreg) 2470 4260 w +(is) 2854 4260 w +(set) 2981 4260 w +(to) 3172 4260 w +(the) 3317 4260 w +(address) 3519 4260 w +(of) 3947 4260 w +(saved) 4093 4260 w +10 /LucidaTypewriter f +(R31) 4418 4260 w +10 /LucidaSansUnicode00 f +(,) 4634 4260 w +(on) 4714 4260 w +(the) 4885 4260 w +(SPARC) 970 4380 w +(to) 1334 4380 w +(the) 1486 4380 w +(address) 1695 4380 w +(of) 2129 4380 w +(saved) 2281 4380 w +10 /LucidaTypewriter f +(R15) 2612 4380 w +10 /LucidaSansUnicode00 f +(.) 2828 4380 w +(For) 2945 4380 w +(the) 3154 4380 w +(other) 3362 4380 w +(architectures) 3672 4380 w +10 /LucidaSans-Italic f +(linkreg) 4354 4380 w +10 /LucidaSansUnicode00 f +(is) 4747 4380 w +(not) 4880 4380 w +(used, but must point to valid memory.) 970 4500 w +10 /LucidaTypewriter f +(acid: print\(strace\(*PC, *SP, linkreg\)\)) 1170 4656 w +({{0x0000141c, 0xc0000f74,) 1170 4776 w +({{"s", 0x0000004d}, {"multi", 0x00000000}},) 1170 4896 w +({{"db", 0x00000000}, {"fd", 0x000010a4},) 1170 5016 w +({"n", 0x00000001}, {"i", 0x00009824}}}}) 1170 5136 w +({}) 720 5292 w +(waitstop\() 1008 5292 w +10 /LucidaSans-Italic f +(integer) 1656 5292 w +10 /LucidaTypewriter f +(\)) 2000 5292 w +10 /LucidaSansUnicode00 f +(Wait for a process to stop) 3795 5292 w +10 /LucidaTypewriter f +(waitstop) 970 5448 w +10 /LucidaSansUnicode00 f +(writes) 1588 5448 w +(a) 1921 5448 w +(waitstop) 2018 5448 w +(message) 2470 5448 w +(to) 2936 5448 w +(the) 3076 5448 w +(control) 3273 5448 w +(file) 3657 5448 w +(of) 3850 5448 w +(the) 3990 5448 w +(process) 4188 5448 w +(specified) 4605 5448 w +(by) 970 5568 w +(the) 1131 5568 w +(pid) 1332 5568 w +(supplied) 1533 5568 w +(as) 1995 5568 w +(its) 2147 5568 w +10 /LucidaSans-Italic f +(integer) 2310 5568 w +10 /LucidaSansUnicode00 f +(argument.) 2700 5568 w +(The) 3278 5568 w +(interpreter) 3505 5568 w +(will) 4069 5568 w +(remain) 4278 5568 w +(blocked) 4659 5568 w +(until) 970 5688 w +(the) 1237 5688 w +(debugged) 1440 5688 w +(process) 1975 5688 w +(enters) 2397 5688 w +(the) 2749 5688 w +10 /LucidaTypewriter f +(Stopped) 2953 5688 w +10 /LucidaSansUnicode00 f +(state.) 3506 5688 w +(A) 3855 5688 w +(process) 3973 5688 w +(will) 4396 5688 w +(stop) 4609 5688 w +(if) 4870 5688 w +(a) 4985 5688 w +(waitstop) 970 5808 w +(message) 1418 5808 w +(has) 1880 5808 w +(been) 2086 5808 w +(written) 2361 5808 w +(to) 2738 5808 w +(its) 2874 5808 w +(control) 3029 5808 w +(file) 3409 5808 w +(and) 3598 5808 w +(any) 3816 5808 w +(of) 4022 5808 w +(the) 4157 5808 w +(following) 4349 5808 w +(con\255) 4833 5808 w +(ditions) 970 5928 w +(becomes) 1362 5928 w +(true:) 1853 5928 w +(the) 2141 5928 w +(process) 2356 5928 w +(generates) 2790 5928 w +(a) 3326 5928 w +(trap) 3441 5928 w +(or) 3697 5928 w +(receives) 3859 5928 w +(a) 4312 5928 w +(note.) 4428 5928 w +(Unlike) 4737 5928 w +10 /LucidaTypewriter f +(stop) 970 6048 w +10 /LucidaSansUnicode00 f +(,) 1258 6048 w +(the) 1330 6048 w +10 /LucidaTypewriter f +(waitstop) 1525 6048 w +10 /LucidaSansUnicode00 f +(function) 2140 6048 w +(is) 2580 6048 w +(passive;) 2699 6048 w +(it) 3127 6048 w +(does) 3232 6048 w +(not) 3502 6048 w +(itself) 3701 6048 w +(cause) 3979 6048 w +(the) 4293 6048 w +(program) 4487 6048 w +(to) 4942 6048 w +(stop.) 970 6168 w +10 /LucidaTypewriter f +(acid: waitstop\(pid\)) 1170 6324 w +(75374: breakpoint) 1170 6444 w +(ls) 2570 6444 w +(ADD) 2770 6444 w +($-0x16c8,R29) 3170 6444 w +10 /LucidaSans-Demi f +(Library Functions) 720 6684 w +10 /LucidaSansUnicode00 f +(A) 970 6840 w +(standard) 1087 6840 w +(debugging) 1562 6840 w +(environment) 2131 6840 w +(is) 2790 6840 w +(provided) 2918 6840 w +(by) 3394 6840 w +(modules) 3557 6840 w +(automatically) 4020 6840 w +(loaded) 4713 6840 w +(when) 720 6960 w +(Acid) 1024 6960 w +(is) 1283 6960 w +(started.) 1410 6960 w +(These) 1861 6960 w +(modules) 2196 6960 w +(are) 2658 6960 w +(located) 2857 6960 w +(in) 3256 6960 w +(the) 3394 6960 w +(directory) 3595 6960 w +10 /LucidaTypewriter f +(/sys/lib/acid) 4072 6960 w +10 /LucidaSansUnicode00 f +(.) 5008 6960 w +(These) 720 7080 w +(functions) 1070 7080 w +(may) 1584 7080 w +(be) 1846 7080 w +(overridden,) 2027 7080 w +(personalized,) 2645 7080 w +(or) 3362 7080 w +(added) 3526 7080 w +(to) 3888 7080 w +(by) 4048 7080 w +(code) 4226 7080 w +(defined) 4520 7080 w +(in) 4949 7080 w +10 /LucidaTypewriter f +($home/lib/acid) 720 7200 w +10 /LucidaSansUnicode00 f +(.) 1728 7200 w +(The) 1844 7200 w +(implementation) 2077 7200 w +(of) 2891 7200 w +(these) 3041 7200 w +(functions) 3355 7200 w +(can) 3859 7200 w +(be) 4078 7200 w +(examined) 4248 7200 w +(using) 4774 7200 w +cleartomark +showpage +saveobj restore +%%EndPage: 17 17 +%%Page: 18 18 +/saveobj save def +mark +18 pagesetup +10 /LucidaSansUnicode00 f +(\255 18 \255) 2752 480 w +(the) 720 840 w +10 /LucidaTypewriter f +(whatis) 907 840 w +10 /LucidaSansUnicode00 f +(operator and then modified during debugging sessions.) 1371 840 w +10 /LucidaTypewriter f +({}) 720 996 w +(Bsrc\() 1008 996 w +10 /LucidaSans-Italic f +(integer) 1368 996 w +10 /LucidaTypewriter f +(\)) 1712 996 w +10 /LucidaSansUnicode00 f +(Load editor with source) 3898 996 w +10 /LucidaTypewriter f +(Bsrc) 970 1152 w +10 /LucidaSansUnicode00 f +(interprets) 1297 1152 w +(the) 1809 1152 w +10 /LucidaSans-Italic f +(integer) 2003 1152 w +10 /LucidaSansUnicode00 f +(argument) 2386 1152 w +(as) 2893 1152 w +(a) 3038 1152 w +(text) 3133 1152 w +(address.) 3364 1152 w +(The) 3816 1152 w +(text) 4037 1152 w +(address) 4268 1152 w +(is) 4688 1152 w +(used) 4808 1152 w +(to) 970 1272 w +(produce) 1101 1272 w +(a) 1531 1272 w +(pathname) 1619 1272 w +(and) 2135 1272 w +(line) 2348 1272 w +(number) 2557 1272 w +(suitable) 2967 1272 w +(for) 3382 1272 w +(the) 3554 1272 w +10 /LucidaTypewriter f +(B) 3742 1272 w +10 /LucidaSansUnicode00 f +(command) 3847 1272 w +(to) 4358 1272 w +(send) 4489 1272 w +(to) 4754 1272 w +(the) 4885 1272 w +(text) 970 1392 w +(editor) 1199 1392 w +10 /LucidaSans-Italic f +(sam) 1524 1392 w +10 /LucidaSansUnicode00 f +(\(1\)) 1727 1392 w +(or) 1894 1392 w +10 /LucidaSans-Italic f +(acme) 2034 1392 w +10 /LucidaSansUnicode00 f +(\(1\).) 2291 1392 w +10 /LucidaTypewriter f +(Bsrc) 2522 1392 w +10 /LucidaSansUnicode00 f +(builds) 2848 1392 w +(an) 3183 1392 w +10 /LucidaSans-Italic f +(rc) 3339 1392 w +10 /LucidaSansUnicode00 f +(\(1\)) 3437 1392 w +(command) 3605 1392 w +(to) 4122 1392 w +(invoke) 4259 1392 w +10 /LucidaTypewriter f +(B) 4616 1392 w +10 /LucidaSansUnicode00 f +(,) 4688 1392 w +(which) 4759 1392 w +(either) 970 1512 w +(selects) 1286 1512 w +(an) 1652 1512 w +(existing) 1804 1512 w +(source) 2226 1512 w +(file) 2583 1512 w +(or) 2769 1512 w +(loads) 2906 1512 w +(a) 3200 1512 w +(new) 3290 1512 w +(source) 3520 1512 w +(file) 3877 1512 w +(into) 4062 1512 w +(the) 4285 1512 w +(editor.) 4474 1512 w +(The) 4859 1512 w +(line) 970 1632 w +(of) 1184 1632 w +(source) 1320 1632 w +(corresponding) 1680 1632 w +(to) 2421 1632 w +(the) 2557 1632 w +(text) 2750 1632 w +(address) 2979 1632 w +(is) 3397 1632 w +(then) 3515 1632 w +(selected.) 3770 1632 w +(In) 4271 1632 w +(the) 4400 1632 w +(following) 4593 1632 w +(example) 970 1752 w +10 /LucidaTypewriter f +(stopped) 1423 1752 w +10 /LucidaSansUnicode00 f +(is) 1967 1752 w +(redefined) 2086 1752 w +(so) 2588 1752 w +(that) 2739 1752 w +(the) 2969 1752 w +(editor) 3163 1752 w +(follows) 3489 1752 w +(and) 3873 1752 w +(displays) 4092 1752 w +(the) 4524 1752 w +(source) 4718 1752 w +(line currently being executed.) 970 1872 w +10 /LucidaTypewriter f +(defn stopped\(pid\) {) 1170 2028 w +(pstop\(pid\);) 1370 2148 w +(Bsrc\(*PC\);) 1370 2268 w +(}) 1170 2388 w +({}) 720 2544 w +(Fpr\(\)) 1008 2544 w +10 /LucidaSansUnicode00 f +(Display double precision floating registers) 2985 2544 w +(For) 970 2700 w +(machines) 1163 2700 w +(equipped) 1659 2700 w +(with) 2151 2700 w +(floating) 2394 2700 w +(point,) 2804 2700 w +10 /LucidaTypewriter f +(Fpr) 3126 2700 w +10 /LucidaSansUnicode00 f +(displays) 3380 2700 w +(the) 3811 2700 w +(contents) 4004 2700 w +(of) 4459 2700 w +(the) 4595 2700 w +(float\255) 4788 2700 w +(ing point registers as double precision values.) 970 2820 w +10 /LucidaTypewriter f +(acid: Fpr\(\)) 1170 2976 w +(F0) 1170 3096 w +(0.) 1530 3096 w +(F2) 1770 3096 w +(0.) 2130 3096 w +(F4) 1170 3216 w +(0.) 1530 3216 w +(F6) 1770 3216 w +(0.) 2130 3216 w +(F8) 1170 3336 w +(0.) 1530 3336 w +(F10) 1770 3336 w +(0.) 2130 3336 w +(...) 1170 3456 w +({}) 720 3612 w +(Ureg\() 1008 3612 w +10 /LucidaSans-Italic f +(integer) 1368 3612 w +10 /LucidaTypewriter f +(\)) 1712 3612 w +10 /LucidaSansUnicode00 f +(Display contents of Ureg structure) 3377 3612 w +10 /LucidaTypewriter f +(Ureg) 970 3768 w +10 /LucidaSansUnicode00 f +(interprets) 1293 3768 w +(the) 1801 3768 w +(integer) 1991 3768 w +(passed) 2369 3768 w +(as) 2743 3768 w +(its) 2884 3768 w +(first) 3036 3768 w +(argument) 3266 3768 w +(as) 3769 3768 w +(the) 3910 3768 w +(address) 4100 3768 w +(of) 4515 3768 w +(a) 4648 3768 w +(kernel) 4738 3768 w +10 /LucidaTypewriter f +(Ureg) 970 3888 w +10 /LucidaSansUnicode00 f +(structure.) 1303 3888 w +(Each) 1818 3888 w +(element) 2084 3888 w +(of) 2517 3888 w +(the) 2659 3888 w +(structure) 2858 3888 w +(is) 3340 3888 w +(retrieved) 3464 3888 w +(and) 3939 3888 w +(printed.) 4163 3888 w +(The) 4622 3888 w +(size) 4847 3888 w +(and) 970 4008 w +(contents) 1187 4008 w +(of) 1641 4008 w +(the) 1776 4008 w +10 /LucidaTypewriter f +(Ureg) 1968 4008 w +10 /LucidaSansUnicode00 f +(structure) 2293 4008 w +(are) 2768 4008 w +(architecture) 2957 4008 w +(dependent.) 3572 4008 w +(This) 4191 4008 w +(function) 4433 4008 w +(can) 4872 4008 w +(be) 970 4128 w +(used) 1125 4128 w +(to) 1393 4128 w +(decode) 1527 4128 w +(the) 1913 4128 w +(first) 2104 4128 w +(argument) 2335 4128 w +(passed) 2839 4128 w +(to) 3213 4128 w +(a) 3346 4128 w +10 /LucidaSans-Italic f +(notify) 3436 4128 w +10 /LucidaSansUnicode00 f +(\(2\)) 3715 4128 w +(function) 3879 4128 w +(after) 4315 4128 w +(a) 4576 4128 w +(process) 4666 4128 w +(has received a note.) 970 4248 w +10 /LucidaTypewriter f +(acid: Ureg\(*notehandler:ur\)) 1170 4404 w +(status) 1370 4524 w +(0x3000f000) 1970 4524 w +(pc) 1370 4644 w +(0x1020) 1570 4644 w +(sp) 1370 4764 w +(0x7ffffe00) 1570 4764 w +(cause) 1370 4884 w +(0x00004002) 1770 4884 w +(...) 1170 5004 w +({}) 720 5160 w +(acidinit\(\)) 1008 5160 w +10 /LucidaSansUnicode00 f +(Interpreter startup) 4143 5160 w +10 /LucidaTypewriter f +(acidinit) 970 5316 w +10 /LucidaSansUnicode00 f +(is) 1588 5316 w +(called) 1710 5316 w +(by) 2035 5316 w +(the) 2192 5316 w +(interpreter) 2389 5316 w +(after) 2951 5316 w +(all) 3220 5316 w +(modules) 3376 5316 w +(have) 3834 5316 w +(been) 4102 5316 w +(loaded) 4382 5316 w +(at) 4752 5316 w +(ini\255) 4887 5316 w +(tialization) 970 5436 w +(time.) 1503 5436 w +(It) 1835 5436 w +(is) 1954 5436 w +(used) 2087 5436 w +(to) 2372 5436 w +(set) 2523 5436 w +(up) 2720 5436 w +(machine) 2898 5436 w +(specific) 3359 5436 w +(variables) 3779 5436 w +(and) 4262 5436 w +(the) 4494 5436 w +(default) 4701 5436 w +(source path.) 970 5556 w +10 /LucidaTypewriter f +(acidinit) 1637 5556 w +10 /LucidaSansUnicode00 f +(should not be called by user code.) 2245 5556 w +10 /LucidaTypewriter f +({}) 720 5712 w +(addsrcdir\() 1008 5712 w +10 /LucidaSans-Italic f +(string) 1728 5712 w +10 /LucidaTypewriter f +(\)) 2015 5712 w +10 /LucidaSansUnicode00 f +(Add element to source search path) 3343 5712 w +10 /LucidaTypewriter f +(addsrcdir) 970 5868 w +10 /LucidaSansUnicode00 f +(interprets) 1664 5868 w +(its) 2183 5868 w +(string) 2346 5868 w +(argument) 2674 5868 w +(as) 3188 5868 w +(a) 3340 5868 w +(new) 3441 5868 w +(directory) 3683 5868 w +10 /LucidaTypewriter f +(findsrc) 4161 5868 w +10 /LucidaSansUnicode00 f +(should) 4712 5868 w +(search) 970 5988 w +(when) 1342 5988 w +(looking) 1655 5988 w +(for) 2073 5988 w +(source) 2268 5988 w +(code) 2645 5988 w +(files.) 2931 5988 w +10 /LucidaTypewriter f +(addsrcdir) 3252 5988 w +10 /LucidaSansUnicode00 f +(draws) 3955 5988 w +(an) 4297 5988 w +(error) 4469 5988 w +(if) 4764 5988 w +(the) 4885 5988 w +(directory is already in the source search path. The search path) 970 6108 w +(may) 4032 6108 w +(be) 4265 6108 w +(examined) 4417 6108 w +(by) 4925 6108 w +(looking at the variable) 970 6228 w +10 /LucidaTypewriter f +(srcpath) 2087 6228 w +10 /LucidaSansUnicode00 f +(.) 2591 6228 w +10 /LucidaTypewriter f +(acid: rc\("9fs fornax"\)) 1170 6384 w +(acid: addsrcpath\("/n/fornax/sys/src/cmd"\)) 1170 6504 w +cleartomark +showpage +saveobj restore +%%EndPage: 18 18 +%%Page: 19 19 +/saveobj save def +mark +19 pagesetup +10 /LucidaSansUnicode00 f +(\255 19 \255) 2752 480 w +10 /LucidaTypewriter f +({}) 720 876 w +(asm\() 1008 876 w +10 /LucidaSans-Italic f +(integer) 1296 876 w +10 /LucidaTypewriter f +(\)) 1640 876 w +10 /LucidaSansUnicode00 f +(Disassemble machine instructions) 3386 876 w +10 /LucidaTypewriter f +(asm) 970 1032 w +10 /LucidaSansUnicode00 f +(interprets) 1228 1032 w +(its) 1743 1032 w +(integer) 1902 1032 w +(argument) 2288 1032 w +(as) 2799 1032 w +(a) 2948 1032 w +(text) 3046 1032 w +(address) 3280 1032 w +(from) 3703 1032 w +(which) 3978 1032 w +(to) 4302 1032 w +(disassemble) 4443 1032 w +(machine) 970 1152 w +(instructions.) 1412 1152 w +10 /LucidaTypewriter f +(asm) 2083 1152 w +10 /LucidaSansUnicode00 f +(prints) 2332 1152 w +(the) 2648 1152 w +(instruction) 2836 1152 w +(address) 3391 1152 w +(in) 3804 1152 w +(symbolic) 3928 1152 w +(and) 4390 1152 w +(hexadec\255) 4603 1152 w +(imal) 970 1272 w +(form,) 1242 1272 w +(then) 1572 1272 w +(prints) 1855 1272 w +(the) 2204 1272 w +(instructions) 2425 1272 w +(with) 3064 1272 w +(addressing) 3335 1272 w +(modes.) 3934 1272 w +(Up) 4356 1272 w +(to) 4554 1272 w +(twenty) 4719 1272 w +(instructions) 970 1392 w +(will) 1590 1392 w +(be) 1801 1392 w +(disassembled.) 1967 1392 w +10 /LucidaTypewriter f +(asm) 2738 1392 w +10 /LucidaSansUnicode00 f +(stops) 3001 1392 w +(disassembling) 3311 1392 w +(when) 4052 1392 w +(it) 4355 1392 w +(reaches) 4467 1392 w +(the) 4885 1392 w +(end) 970 1512 w +(of) 1190 1512 w +(the) 1327 1512 w +(current) 1521 1512 w +(function.) 1910 1512 w +(Instructions) 2414 1512 w +(are) 3027 1512 w +(read) 3219 1512 w +(from) 3474 1512 w +(the) 3746 1512 w +(file) 3941 1512 w +(image) 4132 1512 w +(using) 4467 1512 w +(the) 4773 1512 w +10 /LucidaTypewriter f +(@) 4968 1512 w +10 /LucidaSansUnicode00 f +(operator.) 970 1632 w +10 /LucidaTypewriter f +(acid: asm\(main\)) 1170 1788 w +(main) 1170 1908 w +(0x00001020 ADD) 1818 1908 w +($-0x64,R29) 3114 1908 w +(main+0x4 0x00001024 MOVW) 1170 2028 w +(R31,0x0\(R29\)) 3114 2028 w +(main+0x8 0x00001028 MOVW) 1170 2148 w +(R1,argc+4\(FP\)) 3114 2148 w +(main+0xc 0x0000102c MOVW) 1170 2268 w +($bin\(SB\),R1) 3114 2268 w +({}) 720 2424 w +(bpdel\() 1008 2424 w +10 /LucidaSans-Italic f +(integer) 1440 2424 w +10 /LucidaTypewriter f +(\)) 1784 2424 w +10 /LucidaSansUnicode00 f +(Delete breakpoint) 4174 2424 w +10 /LucidaTypewriter f +(bpdel) 970 2580 w +10 /LucidaSansUnicode00 f +(removes) 1374 2580 w +(a) 1828 2580 w +(previously) 1927 2580 w +(set) 2468 2580 w +(breakpoint) 2657 2580 w +(from) 3227 2580 w +(memory.) 3504 2580 w +(The) 4009 2580 w +10 /LucidaSans-Italic f +(integer) 4235 2580 w +10 /LucidaSansUnicode00 f +(supplied) 4624 2580 w +(as) 970 2700 w +(its) 1124 2700 w +(argument) 1289 2700 w +(must) 1804 2700 w +(be) 2094 2700 w +(the) 2260 2700 w +(address) 2462 2700 w +(of) 2889 2700 w +(a) 3034 2700 w +(previously) 3136 2700 w +(set) 3679 2700 w +(breakpoint.) 3870 2700 w +(The) 4506 2700 w +(break\255) 4734 2700 w +(point) 970 2820 w +(address) 1260 2820 w +(is) 1678 2820 w +(deleted) 1796 2820 w +(from) 2194 2820 w +(the) 2464 2820 w +(active) 2657 2820 w +(breakpoint) 2975 2820 w +(list) 3538 2820 w +10 /LucidaTypewriter f +(bplist) 3722 2820 w +10 /LucidaSansUnicode00 f +(,) 4154 2820 w +(then) 4224 2820 w +(the) 4479 2820 w +(original) 4672 2820 w +(instruction) 970 2940 w +(is) 1536 2940 w +(copied) 1660 2940 w +(from) 2026 2940 w +(the) 2301 2940 w +(file) 2499 2940 w +(image) 2693 2940 w +(to) 3031 2940 w +(the) 3172 2940 w +(memory) 3370 2940 w +(image) 3809 2940 w +(so) 4147 2940 w +(that) 4302 2940 w +(the) 4536 2940 w +(break\255) 4734 2940 w +(point is removed.) 970 3060 w +10 /LucidaTypewriter f +(acid: bpdel\(main+4\)) 1170 3216 w +({}) 720 3372 w +(bpset\() 1008 3372 w +10 /LucidaSans-Italic f +(integer) 1440 3372 w +10 /LucidaTypewriter f +(\)) 1784 3372 w +10 /LucidaSansUnicode00 f +(Set a breakpoint) 4249 3372 w +10 /LucidaTypewriter f +(bpset) 970 3528 w +10 /LucidaSansUnicode00 f +(places) 1364 3528 w +(a) 1703 3528 w +(breakpoint) 1792 3528 w +(instruction) 2351 3528 w +(at) 2907 3528 w +(the) 3033 3528 w +(address) 3222 3528 w +(specified) 3636 3528 w +(by) 4106 3528 w +(its) 4256 3528 w +10 /LucidaSans-Italic f +(integer) 4408 3528 w +10 /LucidaSansUnicode00 f +(argu\255) 4787 3528 w +(ment,) 970 3648 w +(which) 1292 3648 w +(must) 1615 3648 w +(be) 1900 3648 w +(in) 2061 3648 w +(the) 2194 3648 w +(text) 2390 3648 w +(segment.) 2622 3648 w +10 /LucidaTypewriter f +(bpset) 3144 3648 w +10 /LucidaSansUnicode00 f +(draws) 3545 3648 w +(an) 3873 3648 w +(error) 4031 3648 w +(if) 4312 3648 w +(a) 4419 3648 w +(breakpoint) 4515 3648 w +(has already been set at the specified address.) 970 3768 w +(A list) 3252 3768 w +(of) 3532 3768 w +(current) 3663 3768 w +(breakpoints) 4046 3768 w +(is) 4655 3768 w +(main\255) 4768 3768 w +(tained) 970 3888 w +(in) 1322 3888 w +(the) 1463 3888 w +(variable) 1668 3888 w +10 /LucidaTypewriter f +(bplist) 2098 3888 w +10 /LucidaSansUnicode00 f +(.) 2530 3888 w +(Unlike) 2644 3888 w +(in) 2997 3888 w +10 /LucidaSans-Italic f +(db) 3138 3888 w +10 /LucidaSansUnicode00 f +(\(1\),) 3260 3888 w +(breakpoints) 3470 3888 w +(are) 4095 3888 w +(left) 4296 3888 w +(in) 4504 3888 w +(memory) 4644 3888 w +(even) 970 4008 w +(when) 1229 4008 w +(a) 1520 4008 w +(process) 1609 4008 w +(is) 2017 4008 w +(stopped,) 2131 4008 w +(and) 2591 4008 w +(the) 2805 4008 w +(process) 2994 4008 w +(must) 3402 4008 w +(exist,) 3679 4008 w +(perhaps) 3979 4008 w +(by) 4404 4008 w +(being) 4553 4008 w +(cre\255) 4859 4008 w +(ated) 970 4128 w +(by) 1216 4128 w +(either) 1366 4128 w +10 /LucidaTypewriter f +(new) 1682 4128 w +10 /LucidaSansUnicode00 f +(or) 1933 4128 w +10 /LucidaTypewriter f +(win) 2070 4128 w +10 /LucidaSansUnicode00 f +(,) 2286 4128 w +(in) 2353 4128 w +(order) 2478 4128 w +(to) 2774 4128 w +(place) 2906 4128 w +(a) 3194 4128 w +(breakpoint.) 3283 4128 w +(\() 3906 4128 w +10 /LucidaTypewriter f +(Db) 3939 4128 w +10 /LucidaSansUnicode00 f +(accepts) 4117 4128 w +(breakpoint) 4515 4128 w +(commands) 970 4248 w +(before) 1545 4248 w +(the) 1905 4248 w +(process) 2106 4248 w +(is) 2526 4248 w +(started.\)) 2652 4248 w +(On) 3135 4248 w +(the) 3322 4248 w +(MIPS) 3524 4248 w +(and) 3795 4248 w +(SPARC) 4022 4248 w +(architectures,) 4379 4248 w +(breakpoints) 970 4368 w +(at) 1612 4368 w +(function) 1770 4368 w +(entry) 2237 4368 w +(points) 2551 4368 w +(should) 2920 4368 w +(be) 3314 4368 w +(set) 3499 4368 w +(4) 3709 4368 w +(bytes) 3838 4368 w +(into) 4163 4368 w +(the) 4418 4368 w +(function) 4639 4368 w +(because) 970 4488 w +(the) 1415 4488 w +(instruction) 1621 4488 w +(scheduler) 2194 4488 w +(may) 2716 4488 w +(fill) 2967 4488 w +10 /LucidaTypewriter f +(JAL) 3142 4488 w +10 /LucidaSansUnicode00 f +(branch) 3409 4488 w +(delay) 3794 4488 w +(slots) 4100 4488 w +(with) 4381 4488 w +(the) 4638 4488 w +(first) 4845 4488 w +(instruction of the function.) 970 4608 w +10 /LucidaTypewriter f +(acid: bpset\(main+4\)) 1170 4764 w +({}) 720 4920 w +(bptab\(\)) 1008 4920 w +10 /LucidaSansUnicode00 f +(List active breakpoints) 3950 4920 w +10 /LucidaTypewriter f +(bptab) 970 5076 w +10 /LucidaSansUnicode00 f +(prints) 1370 5076 w +(a) 1693 5076 w +(list) 1788 5076 w +(of) 1974 5076 w +(currently) 2112 5076 w +(installed) 2583 5076 w +(breakpoints.) 3034 5076 w +(The) 3682 5076 w +(list) 3903 5076 w +(contains) 4089 5076 w +(the) 4538 5076 w +(break\255) 4734 5076 w +(point) 970 5196 w +(address) 1278 5196 w +(in) 1713 5196 w +(symbolic) 1859 5196 w +(and) 2343 5196 w +(hexadecimal) 2578 5196 w +(form) 3243 5196 w +(as) 3530 5196 w +(well) 3691 5196 w +(as) 3937 5196 w +(the) 4098 5196 w +(instruction) 4308 5196 w +(the) 4885 5196 w +(breakpoint) 970 5316 w +(replaced.) 1532 5316 w +(Breakpoints) 2015 5316 w +(are) 2623 5316 w +(not) 2812 5316 w +(maintained) 3009 5316 w +(across) 3587 5316 w +(process) 3934 5316 w +(creation) 4345 5316 w +(using) 4774 5316 w +10 /LucidaTypewriter f +(new) 970 5436 w +10 /LucidaSansUnicode00 f +(and) 1223 5436 w +10 /LucidaTypewriter f +(win) 1440 5436 w +10 /LucidaSansUnicode00 f +(.) 1656 5436 w +(They) 1757 5436 w +(are) 2027 5436 w +(maintained) 2216 5436 w +(across) 2794 5436 w +(a) 3141 5436 w +(fork,) 3233 5436 w +(but) 3498 5436 w +(care) 3696 5436 w +(must) 3935 5436 w +(be) 4214 5436 w +(taken) 4369 5436 w +(to) 4673 5436 w +(keep) 4807 5436 w +(control of the child process.) 970 5556 w +10 /LucidaTypewriter f +(acid: bpset\(ls+4\)) 1170 5712 w +(acid: bptab\(\)) 1170 5832 w +(0x00001420 ls+0x4) 1370 5952 w +(MOVW) 2738 5952 w +(R31,0x0\(R29\)) 3170 5952 w +({}) 720 6108 w +(casm\(\)) 1008 6108 w +10 /LucidaSansUnicode00 f +(Continue disassembly) 3977 6108 w +10 /LucidaTypewriter f +(casm) 970 6264 w +10 /LucidaSansUnicode00 f +(continues) 1311 6264 w +(to) 1835 6264 w +(disassemble) 1986 6264 w +(instructions) 2636 6264 w +(from) 3262 6264 w +(where) 3547 6264 w +(the) 3892 6264 w +(last) 4100 6264 w +10 /LucidaTypewriter f +(asm) 4326 6264 w +10 /LucidaSansUnicode00 f +(or) 4596 6264 w +10 /LucidaTypewriter f +(casm) 4752 6264 w +10 /LucidaSansUnicode00 f +(command) 970 6384 w +(stopped.) 1517 6384 w +(Like) 2012 6384 w +10 /LucidaTypewriter f +(asm) 2277 6384 w +10 /LucidaSansUnicode00 f +(,) 2493 6384 w +(this) 2593 6384 w +(command) 2840 6384 w +(stops) 3386 6384 w +(disassembling) 3717 6384 w +(at) 4479 6384 w +(function) 4639 6384 w +(boundaries.) 970 6504 w +10 /LucidaTypewriter f +(acid: casm\(\)) 1170 6660 w +(main+0x10 0x00001030) 1170 6780 w +(MOVW) 2770 6780 w +($0x1,R3) 3170 6780 w +(main+0x14 0x00001034) 1170 6900 w +(MOVW) 2770 6900 w +(R3,0x8\(R29\)) 3170 6900 w +(main+0x18 0x00001038) 1170 7020 w +(MOVW) 2770 7020 w +($0x1,R5) 3170 7020 w +(main+0x1c 0x0000103c) 1170 7140 w +(JAL) 2770 7140 w +(Binit\(SB\)) 3170 7140 w +cleartomark +showpage +saveobj restore +%%EndPage: 19 19 +%%Page: 20 20 +/saveobj save def +mark +20 pagesetup +10 /LucidaSansUnicode00 f +(\255 20 \255) 2752 480 w +10 /LucidaTypewriter f +({}) 720 876 w +(cont\(\)) 1008 876 w +10 /LucidaSansUnicode00 f +(Continue program execution) 3647 876 w +10 /LucidaTypewriter f +(cont) 970 1032 w +10 /LucidaSansUnicode00 f +(restarts) 1296 1032 w +(execution) 1704 1032 w +(of) 2218 1032 w +(the) 2355 1032 w +(currently) 2549 1032 w +(active) 3019 1032 w +(process.) 3338 1032 w +(If) 3815 1032 w +(the) 3920 1032 w +(process) 4114 1032 w +(is) 4527 1032 w +(stopped) 4646 1032 w +(on) 970 1152 w +(a) 1141 1152 w +(breakpoint,) 1243 1152 w +(the) 1847 1152 w +(breakpoint) 2049 1152 w +(is) 2621 1152 w +(first) 2748 1152 w +(removed,) 2990 1152 w +(the) 3491 1152 w +(program) 3693 1152 w +(is) 4156 1152 w +(single) 4283 1152 w +(stepped,) 4619 1152 w +(the) 970 1272 w +(breakpoint) 1164 1272 w +(is) 1728 1272 w +(replaced) 1847 1272 w +(and) 2300 1272 w +(the) 2520 1272 w +(program) 2715 1272 w +(is) 3171 1272 w +(then) 3291 1272 w +(set) 3548 1272 w +(executing.) 3732 1272 w +(This) 4280 1272 w +(may) 4525 1272 w +(cause) 4765 1272 w +10 /LucidaTypewriter f +(stopped\(\)) 970 1392 w +10 /LucidaSansUnicode00 f +(to) 1667 1392 w +(be) 1814 1392 w +(called) 1982 1392 w +(twice.) 2314 1392 w +10 /LucidaTypewriter f +(cont) 2677 1392 w +10 /LucidaSansUnicode00 f +(causes) 3014 1392 w +(the) 3389 1392 w +(interpreter) 3593 1392 w +(to) 4161 1392 w +(block) 4308 1392 w +(until) 4618 1392 w +(the) 4885 1392 w +(process enters the) 970 1512 w +10 /LucidaTypewriter f +(Stopped) 1898 1512 w +10 /LucidaSansUnicode00 f +(state.) 2434 1512 w +10 /LucidaTypewriter f +(acid: cont\(\)) 1170 1668 w +(95197: breakpoint) 1170 1788 w +(ls+0x4) 2570 1788 w +(MOVW) 3170 1788 w +(R31,0x0\(R29\)) 3570 1788 w +({}) 720 1944 w +(dump\() 1008 1944 w +10 /LucidaSans-Italic f +(integer,integer,string) 1368 1944 w +10 /LucidaTypewriter f +(\)) 2407 1944 w +10 /LucidaSansUnicode00 f +(Formatted memory dump) 3802 1944 w +10 /LucidaTypewriter f +(dump) 970 2100 w +10 /LucidaSansUnicode00 f +(interprets) 1298 2100 w +(its) 1811 2100 w +(first) 1969 2100 w +(argument) 2205 2100 w +(as) 2714 2100 w +(an) 2861 2100 w +(address,) 3019 2100 w +(its) 3472 2100 w +(second) 3630 2100 w +(argument) 4015 2100 w +(as) 4524 2100 w +(a) 4671 2100 w +(count) 4767 2100 w +(and) 970 2220 w +(its) 1190 2220 w +(third) 1347 2220 w +(as) 1619 2220 w +(a) 1765 2220 w +(format) 1860 2220 w +(string.) 2224 2220 w +10 /LucidaTypewriter f +(dump) 2610 2220 w +10 /LucidaSansUnicode00 f +(fetches) 2938 2220 w +(an) 3328 2220 w +(object) 3485 2220 w +(from) 3822 2220 w +(memory) 4093 2220 w +(at) 4528 2220 w +(the) 4659 2220 w +(cur\255) 4853 2220 w +(rent) 970 2340 w +(address) 1205 2340 w +(and) 1625 2340 w +(prints) 1845 2340 w +(it) 2168 2340 w +(according) 2274 2340 w +(to) 2789 2340 w +(the) 2927 2340 w +(format.) 3122 2340 w +(The) 3518 2340 w +(address) 3739 2340 w +(is) 4159 2340 w +(incremented) 4279 2340 w +(by) 4925 2340 w +(the) 970 2460 w +(number) 1176 2460 w +(of) 1604 2460 w +(bytes) 1753 2460 w +(specified) 2063 2460 w +(by) 2549 2460 w +(the) 2715 2460 w +(format) 2921 2460 w +(and) 3296 2460 w +(the) 3527 2460 w +(process) 3733 2460 w +(is) 4158 2460 w +(repeated) 4289 2460 w +(count) 4767 2460 w +(times. The format string is any) 970 2580 w +(combination) 2497 2580 w +(of) 3133 2580 w +(format) 3264 2580 w +(characters,) 3621 2580 w +(each) 4186 2580 w +(preceded) 4443 2580 w +(by) 4925 2580 w +(an) 970 2700 w +(optional) 1139 2700 w +(count.) 1588 2700 w +(For) 1977 2700 w +(each) 2184 2700 w +(object,) 2459 2700 w +10 /LucidaTypewriter f +(dump) 2840 2700 w +10 /LucidaSansUnicode00 f +(prints) 3179 2700 w +(the) 3513 2700 w +(address) 3719 2700 w +(in) 4150 2700 w +(hexadecimal,) 4292 2700 w +(a) 4985 2700 w +(colon, the object and then a newline.) 970 2820 w +10 /LucidaTypewriter f +(dump) 2830 2820 w +10 /LucidaSansUnicode00 f +(uses) 3150 2820 w +10 /LucidaTypewriter f +(mem) 3402 2820 w +10 /LucidaSansUnicode00 f +(to fetch each object.) 3650 2820 w +10 /LucidaTypewriter f +(acid: dump\(main+35, 4, "X2bi"\)) 1170 2976 w +(0x00001043: 0x0c8fa700 108 143 lwc2 r0,0x528f\(R4\)) 1170 3096 w +(0x0000104d: 0xa9006811) 1170 3216 w +(0) 2970 3216 w +(0 swc3 r0,0x0\(R24\)) 3258 3216 w +(0x00001057: 0x2724e800) 1170 3336 w +(4) 2970 3336 w +(37 ADD) 3186 3336 w +($-0x51,R23,R31) 3762 3336 w +(0x00001061: 0xa200688d) 1170 3456 w +(6) 2970 3456 w +(0 NOOP) 3258 3456 w +(0x0000106b: 0x2710c000) 1170 3576 w +(7) 2970 3576 w +(0 BREAK) 3258 3576 w +({}) 720 3732 w +(findsrc\() 1008 3732 w +10 /LucidaSans-Italic f +(string) 1584 3732 w +10 /LucidaTypewriter f +(\)) 1871 3732 w +10 /LucidaSansUnicode00 f +(Use source path to load source file) 3354 3732 w +10 /LucidaTypewriter f +(findsrc) 970 3888 w +10 /LucidaSansUnicode00 f +(interprets) 1528 3888 w +(its) 2055 3888 w +10 /LucidaSans-Italic f +(string) 2226 3888 w +10 /LucidaSansUnicode00 f +(argument) 2567 3888 w +(as) 3090 3888 w +(a) 3251 3888 w +(source) 3361 3888 w +(file.) 3738 3888 w +(Each) 3976 3888 w +(directory) 4253 3888 w +(in) 4739 3888 w +(the) 4885 3888 w +(source) 970 4008 w +(path) 1335 4008 w +(is) 1595 4008 w +(searched) 1718 4008 w +(in) 2196 4008 w +(turn) 2330 4008 w +(for) 2575 4008 w +(the) 2757 4008 w +(file.) 2955 4008 w +(If) 3181 4008 w +(the) 3290 4008 w +(file) 3488 4008 w +(is) 3682 4008 w +(found,) 3805 4008 w +(the) 4165 4008 w +(source) 4363 4008 w +(text) 4727 4008 w +(is) 4960 4008 w +(loaded) 970 4128 w +(using) 1342 4128 w +10 /LucidaTypewriter f +(file) 1653 4128 w +10 /LucidaSansUnicode00 f +(and) 1986 4128 w +(stored) 2211 4128 w +(in) 2565 4128 w +(the) 2701 4128 w +(list) 2901 4128 w +(of) 3092 4128 w +(active) 3235 4128 w +(source) 3560 4128 w +(files) 3927 4128 w +(called) 4175 4128 w +10 /LucidaTypewriter f +(srctext) 4504 4128 w +10 /LucidaSansUnicode00 f +(.) 5008 4128 w +(The) 970 4248 w +(name) 1194 4248 w +(of) 1503 4248 w +(the) 1644 4248 w +(file) 1842 4248 w +(is) 2036 4248 w +(added) 2159 4248 w +(to) 2502 4248 w +(the) 2643 4248 w +(source) 2841 4248 w +(file) 3206 4248 w +(name) 3400 4248 w +(list) 3708 4248 w +10 /LucidaTypewriter f +(srcfiles) 3896 4248 w +10 /LucidaSansUnicode00 f +(.) 4472 4248 w +(Users) 4578 4248 w +(are) 4888 4248 w +(unlikely) 970 4368 w +(to) 1390 4368 w +(call) 1531 4368 w +10 /LucidaTypewriter f +(findsrc) 1738 4368 w +10 /LucidaSansUnicode00 f +(from) 2285 4368 w +(the) 2560 4368 w +(command) 2758 4368 w +(line,) 3279 4368 w +(but) 3530 4368 w +(may) 3735 4368 w +(use) 3978 4368 w +(it) 4190 4368 w +(from) 4299 4368 w +(scripts) 4575 4368 w +(to) 4942 4368 w +(preload) 970 4488 w +(source) 1388 4488 w +(files) 1760 4488 w +(for) 2012 4488 w +(a) 2201 4488 w +(debugging) 2305 4488 w +(session.) 2875 4488 w +(This) 3317 4488 w +(function) 3571 4488 w +(is) 4021 4488 w +(used) 4150 4488 w +(by) 4431 4488 w +10 /LucidaTypewriter f +(src) 4595 4488 w +10 /LucidaSansUnicode00 f +(and) 4860 4488 w +10 /LucidaTypewriter f +(line) 970 4608 w +10 /LucidaSansUnicode00 f +(to) 1297 4608 w +(locate) 1434 4608 w +(and) 1762 4608 w +(load) 1981 4608 w +(source) 2228 4608 w +(code.) 2590 4608 w +(The) 2893 4608 w +(default) 3114 4608 w +(search) 3493 4608 w +(path) 3849 4608 w +(for) 4106 4608 w +(the) 4285 4608 w +(MIPS) 4480 4608 w +(is) 4744 4608 w +10 /LucidaTypewriter f +(./) 4864 4608 w +10 /LucidaSansUnicode00 f +(,) 5008 4608 w +10 /LucidaTypewriter f +(/sys/src/libc/port) 970 4728 w +10 /LucidaSansUnicode00 f +(,) 2266 4728 w +10 /LucidaTypewriter f +(/sys/src/libc/9sys) 2330 4728 w +10 /LucidaSansUnicode00 f +(,) 3626 4728 w +10 /LucidaTypewriter f +(/sys/src/libc/mips) 3690 4728 w +10 /LucidaSansUnicode00 f +(.) 4986 4728 w +10 /LucidaTypewriter f +(acid: findsrc\(pcfile\(main\)\);) 1170 4884 w +({}) 720 5040 w +(fpr\(\)) 1008 5040 w +10 /LucidaSansUnicode00 f +(Display single precision floating registers) 3030 5040 w +(For) 970 5196 w +(machines) 1163 5196 w +(equipped) 1659 5196 w +(with) 2151 5196 w +(floating) 2394 5196 w +(point,) 2804 5196 w +10 /LucidaTypewriter f +(fpr) 3126 5196 w +10 /LucidaSansUnicode00 f +(displays) 3380 5196 w +(the) 3811 5196 w +(contents) 4004 5196 w +(of) 4459 5196 w +(the) 4595 5196 w +(float\255) 4788 5196 w +(ing) 970 5316 w +(point) 1156 5316 w +(registers) 1441 5316 w +(as) 1898 5316 w +(single) 2037 5316 w +(precision) 2359 5316 w +(values.) 2835 5316 w +(When) 3205 5316 w +(the interpreter stores or manip\255) 3504 5316 w +(ulates floating point values it converts into double precision values.) 970 5436 w +10 /LucidaTypewriter f +(acid: fpr\(\)) 1170 5592 w +(F0) 1170 5712 w +(0.) 1530 5712 w +(F1) 1770 5712 w +(0.) 2130 5712 w +(F2) 1170 5832 w +(0.) 1530 5832 w +(F3) 1770 5832 w +(0.) 2130 5832 w +(F4) 1170 5952 w +(0.) 1530 5952 w +(F5) 1770 5952 w +(0.) 2130 5952 w +(...) 1170 6072 w +({}) 720 6228 w +(func\(\)) 1008 6228 w +10 /LucidaSansUnicode00 f +(Step while in function) 3989 6228 w +10 /LucidaTypewriter f +(func) 970 6384 w +10 /LucidaSansUnicode00 f +(single) 1299 6384 w +(steps) 1629 6384 w +(the) 1928 6384 w +(active) 2124 6384 w +(process) 2445 6384 w +(until) 2860 6384 w +(it) 3121 6384 w +(leaves) 3229 6384 w +(the) 3570 6384 w +(current) 3767 6384 w +(function) 4159 6384 w +(by) 4602 6384 w +(either) 4759 6384 w +(calling) 970 6504 w +(another) 1347 6504 w +(function) 1780 6504 w +(or) 2240 6504 w +(returning) 2401 6504 w +(to) 2912 6504 w +(its) 3069 6504 w +(caller.) 3245 6504 w +10 /LucidaTypewriter f +(func) 3629 6504 w +10 /LucidaSansUnicode00 f +(will) 3976 6504 w +(execute) 4199 6504 w +(a) 4637 6504 w +(single) 4751 6504 w +(instruction after leaving the current function.) 970 6624 w +cleartomark +showpage +saveobj restore +%%EndPage: 20 20 +%%Page: 21 21 +/saveobj save def +mark +21 pagesetup +10 /LucidaSansUnicode00 f +(\255 21 \255) 2752 480 w +10 /LucidaTypewriter f +(acid: func\(\)) 1170 876 w +(95197: breakpoint) 1170 996 w +(ls+0x8) 2570 996 w +(MOVW) 3170 996 w +(R1,R8) 3570 996 w +(95197: breakpoint) 1170 1116 w +(ls+0xc) 2570 1116 w +(MOVW) 3170 1116 w +(R8,R1) 3570 1116 w +(95197: breakpoint) 1170 1236 w +(ls+0x10) 2570 1236 w +(MOVW) 3170 1236 w +(R8,s+4\(FP\)) 3570 1236 w +(95197: breakpoint) 1170 1356 w +(ls+0x14) 2570 1356 w +(MOVW) 3170 1356 w +($0x2f,R5) 3570 1356 w +(95197: breakpoint) 1170 1476 w +(ls+0x18) 2570 1476 w +(JAL) 3170 1476 w +(utfrrune\(SB\)) 3570 1476 w +(95197: breakpoint) 1170 1596 w +(utfrrune) 2570 1596 w +(ADD) 3170 1596 w +($-0x18,R29) 3570 1596 w +({}) 720 1752 w +(gpr\(\)) 1008 1752 w +10 /LucidaSansUnicode00 f +(Display general purpose registers) 3408 1752 w +10 /LucidaTypewriter f +(gpr) 970 1908 w +10 /LucidaSansUnicode00 f +(prints the values of the general purpose processor registers.) 1218 1908 w +10 /LucidaTypewriter f +(acid: gpr\(\)) 1170 2064 w +(R1) 1170 2184 w +(0x00009562 R2) 1370 2184 w +(0x000010a4 R3) 2370 2184 w +(0x00005d08) 3370 2184 w +(R4) 1170 2304 w +(0x0000000a R5) 1370 2304 w +(0x0000002f R6) 2370 2304 w +(0x00000008) 3370 2304 w +(...) 1170 2424 w +({}) 720 2580 w +(labstk\() 1008 2580 w +10 /LucidaSans-Italic f +(integer) 1512 2580 w +10 /LucidaTypewriter f +(\)) 1856 2580 w +10 /LucidaSansUnicode00 f +(Print stack trace from label) 3732 2580 w +10 /LucidaTypewriter f +(labstk) 970 2736 w +10 /LucidaSansUnicode00 f +(performs) 1437 2736 w +(a) 1915 2736 w +(stack) 2005 2736 w +(trace) 2292 2736 w +(from) 2567 2736 w +(a) 2834 2736 w +(Plan) 2924 2736 w +(9) 3160 2736 w +10 /LucidaSans-Italic f +(label.) 3259 2736 w +10 /LucidaSansUnicode00 f +(The) 3592 2736 w +(kernel,) 3809 2736 w +(C) 4179 2736 w +(compilers) 4284 2736 w +(store) 4794 2736 w +(continuations) 970 2856 w +(in) 1669 2856 w +(a) 1800 2856 w +(common) 1895 2856 w +(format.) 2356 2856 w +(Since) 2752 2856 w +(the) 3043 2856 w +(compilers) 3237 2856 w +(all) 3750 2856 w +(use) 3902 2856 w +(caller) 4110 2856 w +(save) 4410 2856 w +(conven\255) 4663 2856 w +(tions) 970 2976 w +(a) 1244 2976 w +(continuation) 1333 2976 w +(may) 1975 2976 w +(be) 2209 2976 w +(saved) 2362 2976 w +(by) 2673 2976 w +(storing) 2822 2976 w +(a) 3199 2976 w +10 /LucidaTypewriter f +(PC) 3289 2976 w +10 /LucidaSansUnicode00 f +(and) 3468 2976 w +10 /LucidaTypewriter f +(SP) 3683 2976 w +10 /LucidaSansUnicode00 f +(pair.) 3862 2976 w +(This) 4117 2976 w +(data) 4357 2976 w +(structure) 4602 2976 w +(is) 970 3096 w +(called) 1100 3096 w +(a) 1433 3096 w +(label) 1538 3096 w +(and) 1820 3096 w +(is) 2050 3096 w +(used) 2180 3096 w +(by) 2462 3096 w +(the) 2627 3096 w +(the) 2832 3096 w +(C) 3037 3096 w +(function) 3155 3096 w +10 /LucidaTypewriter f +(longjmp) 3605 3096 w +10 /LucidaSansUnicode00 f +(and) 4158 3096 w +(the) 4387 3096 w +(kernel) 4591 3096 w +(to) 4942 3096 w +(schedule) 970 3216 w +(threads) 1445 3216 w +(and) 1855 3216 w +(processes.) 2080 3216 w +10 /LucidaTypewriter f +(labstk) 2670 3216 w +10 /LucidaSansUnicode00 f +(interprets) 3147 3216 w +(its) 3666 3216 w +10 /LucidaSans-Italic f +(integer) 3829 3216 w +10 /LucidaSansUnicode00 f +(argument) 4219 3216 w +(as) 4733 3216 w +(the) 4885 3216 w +(address) 970 3336 w +(of) 1383 3336 w +(a label and produces a stack trace for the thread of execution. The value) 1514 3336 w +(of the function) 970 3456 w +10 /LucidaTypewriter f +(ALEF_tid) 1720 3456 w +10 /LucidaSansUnicode00 f +(is a suitable argument for) 2328 3456 w +10 /LucidaTypewriter f +(labstk) 3612 3456 w +10 /LucidaSansUnicode00 f +(.) 4044 3456 w +10 /LucidaTypewriter f +(acid: labstk\(*mousetid\)) 1170 3612 w +(At pc:0x00021a70:Rendez_Sleep+0x178 rendez.l:44) 1170 3732 w +(Rendez_Sleep\(r=0xcd7d8,bool=0xcd7e0,t=0x0\) rendez.l:5) 1170 3852 w +(called from ALEF_rcvmem+0x198 recvmem.l:45) 1370 3972 w +(ALEF_rcvmem\(c=0x000cd764,l=0x00000010\) recvmem.l:6) 1170 4092 w +(...) 1170 4212 w +({}) 720 4368 w +(lstk\(\)) 1008 4368 w +10 /LucidaSansUnicode00 f +(Stack trace with local variables) 3556 4368 w +10 /LucidaTypewriter f +(lstk) 970 4524 w +10 /LucidaSansUnicode00 f +(produces) 1298 4524 w +(a) 1786 4524 w +(long) 1881 4524 w +(format) 2135 4524 w +(stack) 2499 4524 w +(trace.) 2791 4524 w +(The) 3135 4524 w +(stack) 3356 4524 w +(trace) 3649 4524 w +(includes) 3930 4524 w +(each) 4374 4524 w +(function) 4639 4524 w +(in) 970 4644 w +(the) 1104 4644 w +(stack,) 1302 4644 w +(where) 1629 4644 w +(it) 1964 4644 w +(was) 2072 4644 w +(called) 2297 4644 w +(from,) 2622 4644 w +(and) 2928 4644 w +(the) 3150 4644 w +(value) 3347 4644 w +(of) 3643 4644 w +(the) 3783 4644 w +(parameters) 3980 4644 w +(and) 4570 4644 w +(auto\255) 4792 4644 w +(matic) 970 4764 w +(variables) 1269 4764 w +(for) 1734 4764 w +(each) 1907 4764 w +(function.) 2165 4764 w +10 /LucidaTypewriter f +(lstk) 2664 4764 w +10 /LucidaSansUnicode00 f +(displays) 2986 4764 w +(the) 3413 4764 w +(value) 3603 4764 w +(rather) 3892 4764 w +(than) 4219 4764 w +(the) 4470 4764 w +(address) 4660 4764 w +(of) 970 4884 w +(each) 1116 4884 w +(variable) 1388 4884 w +(and) 1816 4884 w +(all) 2044 4884 w +(variables) 2204 4884 w +(are) 2682 4884 w +(assumed) 2881 4884 w +(to) 3359 4884 w +(be) 3504 4884 w +(an) 3670 4884 w +(integer) 3834 4884 w +(in) 4224 4884 w +(format) 4362 4884 w +10 /LucidaTypewriter f +(X) 4733 4884 w +10 /LucidaSansUnicode00 f +(.) 4805 4884 w +(To) 4916 4884 w +(print) 970 5004 w +(a) 1249 5004 w +(variable) 1351 5004 w +(in) 1779 5004 w +(its) 1918 5004 w +(correct) 2083 5004 w +(format) 2469 5004 w +(use) 2841 5004 w +(the) 3058 5004 w +10 /LucidaTypewriter f +(:) 3261 5004 w +10 /LucidaSansUnicode00 f +(operator) 3381 5004 w +(to) 3844 5004 w +(find) 3990 5004 w +(the) 4229 5004 w +(address) 4432 5004 w +(and) 4860 5004 w +(apply) 970 5124 w +(the) 1268 5124 w +(appropriate) 1459 5124 w +(format) 2059 5124 w +(before) 2419 5124 w +(indirection) 2769 5124 w +(with) 3325 5124 w +(the) 3566 5124 w +10 /LucidaTypewriter f +(*) 3757 5124 w +10 /LucidaSansUnicode00 f +(operator.) 3865 5124 w +(It) 4348 5124 w +(may) 4449 5124 w +(be) 4684 5124 w +(nec\255) 4838 5124 w +(essary) 970 5244 w +(to) 1314 5244 w +(single) 1450 5244 w +(step) 1777 5244 w +(a) 2022 5244 w +(couple) 2115 5244 w +(of) 2475 5244 w +(instructions) 2612 5244 w +(into) 3224 5244 w +(a) 3452 5244 w +(function) 3546 5244 w +(to) 3986 5244 w +(get) 4123 5244 w +(a) 4317 5244 w +(correct) 4411 5244 w +(stack) 4788 5244 w +(trace) 970 5364 w +(because) 1258 5364 w +(the) 1699 5364 w +(frame) 1901 5364 w +(pointer) 2230 5364 w +(adjustment) 2626 5364 w +(instruction) 3219 5364 w +(may) 3788 5364 w +(get) 4035 5364 w +(scheduled) 4237 5364 w +(down) 4777 5364 w +(into the body of the function.) 970 5484 w +10 /LucidaTypewriter f +(acid: lstk\(\)) 1170 5640 w +(At pc:0x00001024:main+0x4 ls.c:48) 1170 5760 w +(main\(argc=0x00000001,argv=0x7fffefec\) ls.c:48) 1170 5880 w +(called from _main+0x20 main9.s:10) 1370 6000 w +(_argc=0x00000000) 1370 6120 w +(_args=0x00000000) 1370 6240 w +(fd=0x00000000) 1370 6360 w +(buf=0x00000000) 1370 6480 w +(i=0x00000000) 1370 6600 w +({}) 720 6756 w +(mem\() 1008 6756 w +10 /LucidaSans-Italic f +(integer,string) 1296 6756 w +10 /LucidaTypewriter f +(\)) 1959 6756 w +10 /LucidaSansUnicode00 f +(Print memory object) 4058 6756 w +10 /LucidaTypewriter f +(mem) 970 6912 w +10 /LucidaSansUnicode00 f +(interprets) 1224 6912 w +(its) 1735 6912 w +(first) 1890 6912 w +10 /LucidaSans-Italic f +(integer) 2123 6912 w +10 /LucidaSansUnicode00 f +(argument) 2505 6912 w +(as) 3011 6912 w +(the) 3155 6912 w +(address) 3348 6912 w +(of) 3766 6912 w +(an) 3902 6912 w +(object) 4057 6912 w +(to) 4394 6912 w +(be) 4531 6912 w +(printed) 4689 6912 w +(according) 970 7032 w +(to) 1482 7032 w +(the) 1617 7032 w +(format) 1809 7032 w +(supplied) 2170 7032 w +(in) 2623 7032 w +(its) 2751 7032 w +(second) 2905 7032 w +10 /LucidaSans-Italic f +(string) 3286 7032 w +10 /LucidaSansUnicode00 f +(argument.) 3610 7032 w +(The) 4179 7032 w +(format) 4397 7032 w +(string) 4758 7032 w +(can be any combination of format characters, each preceded by an optional count.) 970 7152 w +cleartomark +showpage +saveobj restore +%%EndPage: 21 21 +%%Page: 22 22 +/saveobj save def +mark +22 pagesetup +10 /LucidaSansUnicode00 f +(\255 22 \255) 2752 480 w +10 /LucidaTypewriter f +(acid: mem\(bdata+0x326, "2c2Xb"\)) 1170 876 w +(P = 0xa94bc464 0x3e5ae44d) 1170 996 w +(19) 3114 996 w +({}) 720 1152 w +(new\(\)) 1008 1152 w +10 /LucidaSansUnicode00 f +(Create new process) 4093 1152 w +10 /LucidaTypewriter f +(new) 970 1308 w +10 /LucidaSansUnicode00 f +(starts) 1221 1308 w +(a) 1528 1308 w +(new) 1618 1308 w +(copy) 1848 1308 w +(of) 2111 1308 w +(the) 2245 1308 w +(debugged) 2436 1308 w +(program.) 2959 1308 w +(The) 3443 1308 w +(new) 3660 1308 w +(program) 3891 1308 w +(is) 4343 1308 w +(started) 4459 1308 w +(with) 4835 1308 w +(the) 970 1428 w +(program) 1187 1428 w +(arguments) 1665 1428 w +(set) 2246 1428 w +(by) 2451 1428 w +(the) 2627 1428 w +(variable) 2843 1428 w +10 /LucidaTypewriter f +(progargs) 3284 1428 w +10 /LucidaSansUnicode00 f +(.) 3860 1428 w +(The) 3985 1428 w +(new) 4227 1428 w +(program) 4483 1428 w +(is) 4960 1428 w +(stopped) 970 1548 w +(in) 1416 1548 w +(the) 1559 1548 w +(second) 1766 1548 w +(instruction) 2162 1548 w +(of) 2736 1548 w +10 /LucidaTypewriter f +(main) 2887 1548 w +10 /LucidaSansUnicode00 f +(.) 3175 1548 w +(The) 3292 1548 w +(breakpoint) 3526 1548 w +(list) 4104 1548 w +(is) 4303 1548 w +(reinitialized.) 4436 1548 w +10 /LucidaTypewriter f +(new) 970 1668 w +10 /LucidaSansUnicode00 f +(may) 1223 1668 w +(be) 1460 1668 w +(used) 1616 1668 w +(several) 1885 1668 w +(times) 2262 1668 w +(to) 2565 1668 w +(instantiate) 2700 1668 w +(several) 3247 1668 w +(copies) 3624 1668 w +(of) 3972 1668 w +(a) 4107 1668 w +(program) 4199 1668 w +(simulta\255) 4651 1668 w +(neously. The user can rotate between the copies using) 970 1788 w +10 /LucidaTypewriter f +(setproc) 3648 1788 w +10 /LucidaSansUnicode00 f +(.) 4152 1788 w +10 /LucidaTypewriter f +(acid: progargs="-l") 1170 1944 w +(acid: new\(\)) 1170 2064 w +(60: external interrupt) 1170 2184 w +(_main) 2770 2184 w +(ADD) 3170 2184 w +($-0x14,R29) 3570 2184 w +(60: breakpoint) 1170 2304 w +(main+0x4) 2370 2304 w +(MOVW) 2970 2304 w +(R31,0x0\(R29\)) 3370 2304 w +({}) 720 2460 w +(next\(\)) 1008 2460 w +10 /LucidaSansUnicode00 f +(Step through language statement) 3420 2460 w +10 /LucidaTypewriter f +(next) 970 2616 w +10 /LucidaSansUnicode00 f +(steps) 1325 2616 w +(through) 1651 2616 w +(a) 2106 2616 w +(single) 2229 2616 w +(language) 2586 2616 w +(level) 3097 2616 w +(statement) 3387 2616 w +(without) 3939 2616 w +(tracing) 4372 2616 w +(down) 4777 2616 w +(through) 970 2736 w +(each) 1398 2736 w +(statement) 1663 2736 w +(in) 2188 2736 w +(a) 2320 2736 w +(called) 2416 2736 w +(function.) 2740 2736 w +(For) 3214 2736 w +(each) 3411 2736 w +(statement,) 3676 2736 w +10 /LucidaTypewriter f +(next) 4233 2736 w +10 /LucidaSansUnicode00 f +(prints) 4562 2736 w +(the) 4885 2736 w +(machine) 970 2856 w +(instructions) 1426 2856 w +(executed) 2047 2856 w +(as) 2537 2856 w +(part) 2691 2856 w +(of) 2935 2856 w +(the) 3081 2856 w +(statement.) 3284 2856 w +(After) 3848 2856 w +(the) 4136 2856 w +(statement) 4339 2856 w +(has) 4872 2856 w +(executed, source lines around the current program counter are displayed.) 970 2976 w +10 /LucidaTypewriter f +(acid: next\(\)) 1170 3132 w +(60: breakpoint) 1170 3252 w +(Binit+0x4 MOVW) 2370 3252 w +(R31,0x0\(R29\)) 3570 3252 w +(60: breakpoint) 1170 3372 w +(Binit+0x8 MOVW) 2370 3372 w +(f+8\(FP\),R4) 3570 3372 w +(binit.c:93) 1170 3492 w +(88) 1242 3612 w +(89) 1242 3732 w +(int) 1570 3732 w +(90) 1242 3852 w +(Binit\(Biobuf *bp, int f, int mode\)) 1570 3852 w +(91) 1242 3972 w +({) 1570 3972 w +(>92) 1170 4092 w +(return Binits\(bp, f, mode, bp->b, BSIZE\);) 1770 4092 w +(93) 1242 4212 w +(}) 1570 4212 w +({}) 720 4368 w +(notestk\() 1008 4368 w +10 /LucidaSans-Italic f +(integer) 1584 4368 w +10 /LucidaTypewriter f +(\)) 1928 4368 w +10 /LucidaSansUnicode00 f +(Stack trace after receiving a note) 3450 4368 w +10 /LucidaTypewriter f +(notestk) 970 4524 w +10 /LucidaSansUnicode00 f +(interprets) 1532 4524 w +(its) 2063 4524 w +10 /LucidaSans-Italic f +(integer) 2238 4524 w +10 /LucidaSansUnicode00 f +(argument) 2640 4524 w +(as) 3166 4524 w +(the) 3331 4524 w +(address) 3545 4524 w +(of) 3984 4524 w +(a) 4141 4524 w +10 /LucidaTypewriter f +(Ureg) 4255 4524 w +10 /LucidaSansUnicode00 f +(structure) 4602 4524 w +(passed) 970 4644 w +(by) 1361 4644 w +(the) 1528 4644 w +(kernel) 1735 4644 w +(to) 2089 4644 w +(a) 2239 4644 w +10 /LucidaSans-Italic f +(notify) 2346 4644 w +10 /LucidaSansUnicode00 f +(\(2\)) 2625 4644 w +(function) 2805 4644 w +(during) 3257 4644 w +(note) 3627 4644 w +(processing.) 3894 4644 w +10 /LucidaTypewriter f +(notestk) 4536 4644 w +10 /LucidaSansUnicode00 f +(uses) 970 4764 w +(the) 1241 4764 w +10 /LucidaTypewriter f +(PC) 1447 4764 w +10 /LucidaSansUnicode00 f +(,) 1591 4764 w +10 /LucidaTypewriter f +(SP) 1674 4764 w +10 /LucidaSansUnicode00 f +(,) 1818 4764 w +(and) 1902 4764 w +(link) 2134 4764 w +(register) 2364 4764 w +(from) 2789 4764 w +(the) 3073 4764 w +10 /LucidaTypewriter f +(Ureg) 3280 4764 w +10 /LucidaSansUnicode00 f +(to) 3620 4764 w +(print) 3770 4764 w +(a) 4054 4764 w +(stack) 4161 4764 w +(trace) 4465 4764 w +(corre\255) 4757 4764 w +(sponding) 970 4884 w +(to) 1462 4884 w +(the) 1599 4884 w +(point) 1793 4884 w +(in) 2084 4884 w +(the) 2213 4884 w +(program) 2406 4884 w +(where) 2860 4884 w +(the) 3190 4884 w +(note) 3383 4884 w +(was) 3637 4884 w +(received.) 3858 4884 w +(To) 4364 4884 w +(get) 4526 4884 w +(a) 4719 4884 w +(valid) 4812 4884 w +(stack) 970 5004 w +(trace) 1255 5004 w +(on) 1529 5004 w +(the) 1686 5004 w +(MIPS) 1875 5004 w +(and) 2133 5004 w +(SPARC) 2347 5004 w +(architectures) 2691 5004 w +(from) 3354 5004 w +(a) 3620 5004 w +(notify) 3709 5004 w +(routine,) 4021 5004 w +(the) 4435 5004 w +(program) 4624 5004 w +(must) 970 5124 w +(stop) 1251 5124 w +(in) 1501 5124 w +(a) 1630 5124 w +(new) 1723 5124 w +(function) 1956 5124 w +(called) 2395 5124 w +(from) 2716 5124 w +(the) 2986 5124 w +(notify) 3179 5124 w +(routine) 3495 5124 w +(so) 3881 5124 w +(that) 4031 5124 w +(the) 4260 5124 w +(link) 4452 5124 w +(register) 4667 5124 w +(is valid and the notify routine) 970 5244 w +10 /LucidaSansUnicode20 f +(\031) 2399 5244 w +10 /LucidaSansUnicode00 f +(s parameters are addressable.) 2431 5244 w +10 /LucidaTypewriter f +(acid: notestk\(*notify:ur\)) 1170 5400 w +(Note pc:0x00001024:main+0x4 ls.c:48) 1170 5520 w +(main\(argc=0x00000001,argv=0x7fffefec\) ls.c:48) 1170 5640 w +(called from _main+0x20 main9.s:10) 1370 5760 w +(_argc=0x00000000) 1370 5880 w +(_args=0x00000000) 1370 6000 w +({}) 720 6156 w +(pfl\() 1008 6156 w +10 /LucidaSans-Italic f +(integer) 1296 6156 w +10 /LucidaTypewriter f +(\)) 1640 6156 w +10 /LucidaSansUnicode00 f +(Print source file and line) 3859 6156 w +10 /LucidaTypewriter f +(pfl) 970 6312 w +10 /LucidaSansUnicode00 f +(interprets) 1228 6312 w +(its) 1743 6312 w +(argument) 1902 6312 w +(as) 2412 6312 w +(a) 2560 6312 w +(text) 2658 6312 w +(address) 2892 6312 w +(and) 3315 6312 w +(uses) 3538 6312 w +(it) 3801 6312 w +(to) 3910 6312 w +(print) 4051 6312 w +(the) 4326 6312 w +(source) 4524 6312 w +(file) 4889 6312 w +(and) 970 6432 w +(line) 1186 6432 w +(number) 1398 6432 w +(corresponding) 1811 6432 w +(to) 2549 6432 w +(the) 2682 6432 w +(address.) 2872 6432 w +(The) 3319 6432 w +(output) 3535 6432 w +(has) 3892 6432 w +(the) 4095 6432 w +(same) 4285 6432 w +(format) 4575 6432 w +(as) 4934 6432 w +(file addresses in) 970 6552 w +10 /LucidaSans-Italic f +(acme) 1795 6552 w +10 /LucidaSansUnicode00 f +(\(1\).) 2052 6552 w +10 /LucidaTypewriter f +(acid: pfl\(main\)) 1170 6708 w +(ls.c:48) 1170 6828 w +cleartomark +showpage +saveobj restore +%%EndPage: 22 22 +%%Page: 23 23 +/saveobj save def +mark +23 pagesetup +10 /LucidaSansUnicode00 f +(\255 23 \255) 2752 480 w +10 /LucidaTypewriter f +({}) 720 876 w +(procs\(\)) 1008 876 w +10 /LucidaSansUnicode00 f +(Print active process list) 3920 876 w +10 /LucidaTypewriter f +(procs) 970 1032 w +10 /LucidaSansUnicode00 f +(prints) 1369 1032 w +(a) 1691 1032 w +(list) 1785 1032 w +(of) 1970 1032 w +(active) 2107 1032 w +(process) 2426 1032 w +(attached) 2840 1032 w +(to) 3296 1032 w +(the) 3434 1032 w +(debugger.) 3629 1032 w +(Each) 4166 1032 w +(process) 4428 1032 w +(pro\255) 4842 1032 w +(duces) 970 1152 w +(a) 1289 1152 w +(single) 1380 1152 w +(line) 1705 1152 w +(of) 1917 1152 w +(output) 2051 1152 w +(giving) 2409 1152 w +(the) 2741 1152 w +(pid,) 2932 1152 w +(process) 3155 1152 w +(state,) 3565 1152 w +(the) 3869 1152 w +(address) 4060 1152 w +(the) 4476 1152 w +(process) 4666 1152 w +(is) 970 1272 w +(currently) 1086 1272 w +(executing,) 1553 1272 w +(and) 2097 1272 w +(the) 2313 1272 w +10 /LucidaTypewriter f +(setproc) 2504 1272 w +10 /LucidaSansUnicode00 f +(command) 3044 1272 w +(required) 3558 1272 w +(to) 4005 1272 w +(make) 4139 1272 w +(that) 4438 1272 w +(process) 4666 1272 w +(current.) 970 1392 w +(The) 1421 1392 w +(current) 1639 1392 w +(process) 2026 1392 w +(is) 2437 1392 w +(marked) 2554 1392 w +(in) 2957 1392 w +(the) 3085 1392 w +(first) 3277 1392 w +(column) 3508 1392 w +(with) 3902 1392 w +(a) 4143 1392 w +10 /LucidaTypewriter f +(>) 4234 1392 w +10 /LucidaSansUnicode00 f +(character.) 4342 1392 w +(The) 4859 1392 w +(debugger maintains a list of processes in the variable) 970 1512 w +10 /LucidaTypewriter f +(proclist) 3602 1512 w +10 /LucidaSansUnicode00 f +(.) 4178 1512 w +10 /LucidaTypewriter f +(acid: procs\(\)) 1170 1668 w +(>62: Stopped at main+0x4 setproc\(62\)) 1170 1788 w +(60: Stopped at Binit+0x8 setproc\(60\)) 1242 1908 w +({}) 720 2064 w +(pstop\() 1008 2064 w +10 /LucidaSans-Italic f +(integer) 1440 2064 w +10 /LucidaTypewriter f +(\)) 1784 2064 w +10 /LucidaSansUnicode00 f +(Print reason process stopped) 3626 2064 w +10 /LucidaTypewriter f +(pstop) 970 2220 w +10 /LucidaSansUnicode00 f +(prints) 1366 2220 w +(the) 1685 2220 w +(status) 1876 2220 w +(of) 2205 2220 w +(the) 2339 2220 w +(process) 2530 2220 w +(specified) 2940 2220 w +(by) 3411 2220 w +(the) 3562 2220 w +10 /LucidaSans-Italic f +(integer) 3754 2220 w +10 /LucidaSansUnicode00 f +(pid) 4135 2220 w +(supplied) 4327 2220 w +(as) 4780 2220 w +(its) 4923 2220 w +(argument.) 970 2340 w +10 /LucidaTypewriter f +(pstop) 1551 2340 w +10 /LucidaSansUnicode00 f +(is) 1960 2340 w +(usually) 2089 2340 w +(called) 2478 2340 w +(from) 2810 2340 w +10 /LucidaTypewriter f +(stopped) 3091 2340 w +10 /LucidaSansUnicode00 f +(every) 3644 2340 w +(time) 3949 2340 w +(a) 4212 2340 w +(process) 4315 2340 w +(enters) 4737 2340 w +(the) 970 2460 w +10 /LucidaTypewriter f +(Stopped) 1157 2460 w +10 /LucidaSansUnicode00 f +(state.) 1693 2460 w +10 /LucidaTypewriter f +(acid: pstop\(62\)) 1170 2616 w +(0x0000003e: breakpoint) 1170 2736 w +(main+0x4) 2770 2736 w +(MOVW) 3370 2736 w +(R31,0x0\(R29\)) 3770 2736 w +({}) 720 2892 w +(regs\(\)) 1008 2892 w +10 /LucidaSansUnicode00 f +(Print registers) 4360 2892 w +10 /LucidaTypewriter f +(regs) 970 3048 w +10 /LucidaSansUnicode00 f +(prints) 1291 3048 w +(the) 1607 3048 w +(contents) 1795 3048 w +(of) 2245 3048 w +(both) 2376 3048 w +(the) 2633 3048 w +(general) 2822 3048 w +(and) 3217 3048 w +(special) 3431 3048 w +(purpose) 3799 3048 w +(registers.) 4230 3048 w +10 /LucidaTypewriter f +(regs) 4752 3048 w +10 /LucidaSansUnicode00 f +(calls) 970 3168 w +10 /LucidaTypewriter f +(spr) 1217 3168 w +10 /LucidaSansUnicode00 f +(then) 1465 3168 w +10 /LucidaTypewriter f +(gpr) 1714 3168 w +10 /LucidaSansUnicode00 f +(to display the contents of the registers.) 1962 3168 w +10 /LucidaTypewriter f +({}) 720 3324 w +(source\(\)) 1008 3324 w +10 /LucidaSansUnicode00 f +(Summarize source data base) 3647 3324 w +10 /LucidaTypewriter f +(source) 970 3480 w +10 /LucidaSansUnicode00 f +(prints) 1456 3480 w +(the) 1793 3480 w +(directory) 2002 3480 w +(search) 2487 3480 w +(path) 2857 3480 w +(followed) 3128 3480 w +(by) 3595 3480 w +(a) 3764 3480 w +(list) 3873 3480 w +(of) 4074 3480 w +(currently) 4227 3480 w +(loaded) 4713 3480 w +(source) 970 3600 w +(files.) 1328 3600 w +(The) 1598 3600 w +(source) 1815 3600 w +(management) 2172 3600 w +(functions) 2838 3600 w +10 /LucidaTypewriter f +(src) 3325 3600 w +10 /LucidaSansUnicode00 f +(and) 3576 3600 w +10 /LucidaTypewriter f +(findsrc) 3791 3600 w +10 /LucidaSansUnicode00 f +(use) 4330 3600 w +(the) 4534 3600 w +(search) 4724 3600 w +(path) 970 3720 w +(to) 1234 3720 w +(locate) 1379 3720 w +(and) 1715 3720 w +(load) 1942 3720 w +(source) 2198 3720 w +(files.) 2568 3720 w +(Source) 2850 3720 w +(files) 3223 3720 w +(are) 3473 3720 w +(loaded) 3673 3720 w +(incrementally) 4048 3720 w +(into) 4748 3720 w +(a) 4985 3720 w +(source) 970 3840 w +(data) 1334 3840 w +(base) 1586 3840 w +(during) 1853 3840 w +(debugging.) 2214 3840 w +(A) 2809 3840 w +(list) 2920 3840 w +(of) 3108 3840 w +(loaded) 3248 3840 w +(files) 3617 3840 w +(is) 3861 3840 w +(stored) 3982 3840 w +(in) 4332 3840 w +(the) 4464 3840 w +(variable) 4660 3840 w +10 /LucidaTypewriter f +(srcfiles) 970 3960 w +10 /LucidaSansUnicode00 f +(and the contents of each source file in the variable) 1578 3960 w +10 /LucidaTypewriter f +(srctext) 4071 3960 w +10 /LucidaSansUnicode00 f +(.) 4575 3960 w +10 /LucidaTypewriter f +(acid: source\(\)) 1170 4116 w +(/n/bootes/sys/src/libbio/) 1170 4236 w +(/sys/src/libc/port/) 1170 4356 w +(/sys/src/libc/9sys/) 1170 4476 w +(/sys/src/libc/mips/) 1170 4596 w +(binit.c) 1370 4716 w +({}) 720 4872 w +(spr\(\)) 1008 4872 w +10 /LucidaSansUnicode00 f +(Print special purpose registers) 3565 4872 w +10 /LucidaTypewriter f +(spr) 970 5028 w +10 /LucidaSansUnicode00 f +(prints) 1226 5028 w +(the) 1549 5028 w +(contents) 1745 5028 w +(of) 2203 5028 w +(the) 2342 5028 w +(processor) 2538 5028 w +(control) 3055 5028 w +(and) 3438 5028 w +(memory) 3659 5028 w +(management) 4096 5028 w +(regis\255) 4768 5028 w +(ters.) 970 5148 w +(Where) 1237 5148 w +(possible,) 1588 5148 w +(the) 2072 5148 w +(contents) 2276 5148 w +(of) 2742 5148 w +(the) 2889 5148 w +(registers) 3093 5148 w +(are) 3566 5148 w +(decoded) 3767 5148 w +(to) 4229 5148 w +(provide) 4376 5148 w +(extra) 4790 5148 w +(information;) 970 5268 w +(for) 1613 5268 w +(example) 1796 5268 w +(the) 2253 5268 w +10 /LucidaTypewriter f +(CAUSE) 2452 5268 w +10 /LucidaSansUnicode00 f +(register) 2856 5268 w +(on) 3273 5268 w +(the) 3440 5268 w +(MIPS) 3639 5268 w +(is) 3907 5268 w +(printed) 4031 5268 w +(both) 4426 5268 w +(in) 4693 5268 w +(hex\255) 4828 5268 w +(adecimal and using the) 970 5388 w +10 /LucidaTypewriter f +(reason) 2130 5388 w +10 /LucidaSansUnicode00 f +(function.) 2594 5388 w +10 /LucidaTypewriter f +(acid: spr\(\)) 1170 5544 w +(PC) 1170 5664 w +(0x00001024 main+0x4) 1370 5664 w +(ls.c:48) 2882 5664 w +(SP) 1170 5784 w +(0x7fffef68 LINK) 1370 5784 w +(0x00006264 _main+0x28 main9.s:12) 2570 5784 w +(STATUS) 1170 5904 w +(0x0000ff33 CAUSE) 1770 5904 w +(0x00000024 breakpoint) 2970 5904 w +(TLBVIR) 1170 6024 w +(0x000000d3 BADVADR) 1770 6024 w +(0x00001020) 3170 6024 w +(HI) 1170 6144 w +(0x00000004 LO) 1370 6144 w +(0x00001ff7) 2570 6144 w +({}) 720 6300 w +(src\() 1008 6300 w +10 /LucidaSans-Italic f +(integer) 1296 6300 w +10 /LucidaTypewriter f +(\)) 1640 6300 w +10 /LucidaSansUnicode00 f +(Print lines of source) 4073 6300 w +10 /LucidaTypewriter f +(src) 970 6456 w +10 /LucidaSansUnicode00 f +(interprets) 1237 6456 w +(its) 1761 6456 w +10 /LucidaSans-Italic f +(integer) 1929 6456 w +10 /LucidaSansUnicode00 f +(argument) 2324 6456 w +(as) 2843 6456 w +(a) 3000 6456 w +(text) 3106 6456 w +(address) 3348 6456 w +(and) 3779 6456 w +(uses) 4010 6456 w +(this) 4281 6456 w +(address) 4511 6456 w +(to) 4942 6456 w +(print) 970 6576 w +(5) 1235 6576 w +(lines) 1331 6576 w +(of source before and after the address. The current line is marked with) 1591 6576 w +(a) 970 6696 w +10 /LucidaTypewriter f +(>) 1084 6696 w +10 /LucidaSansUnicode00 f +(character.) 1215 6696 w +10 /LucidaTypewriter f +(src) 1787 6696 w +10 /LucidaSansUnicode00 f +(uses) 2062 6696 w +(the) 2342 6696 w +(source) 2557 6696 w +(search) 2939 6696 w +(path) 3315 6696 w +(maintained) 3592 6696 w +(by) 4193 6696 w +10 /LucidaTypewriter f +(source) 4368 6696 w +10 /LucidaSansUnicode00 f +(and) 4860 6696 w +10 /LucidaTypewriter f +(addsrcdir) 970 6816 w +10 /LucidaSansUnicode00 f +(to locate the required source files.) 1650 6816 w +cleartomark +showpage +saveobj restore +%%EndPage: 23 23 +%%Page: 24 24 +/saveobj save def +mark +24 pagesetup +10 /LucidaSansUnicode00 f +(\255 24 \255) 2752 480 w +10 /LucidaTypewriter f +(acid: src\(*PC\)) 1170 876 w +(ls.c:47) 1170 996 w +(42) 1242 1116 w +(Biobuf) 1570 1116 w +(bin;) 2170 1116 w +(43) 1242 1236 w +(44) 1242 1356 w +(#define) 1570 1356 w +(HUNK) 2370 1356 w +(50) 2770 1356 w +(45) 1242 1476 w +(46) 1242 1596 w +(void) 1570 1596 w +(>47) 1170 1716 w +(main\(int argc, char *argv[]\)) 1570 1716 w +(48) 1242 1836 w +({) 1570 1836 w +(49) 1242 1956 w +(int i, fd;) 1770 1956 w +(50) 1242 2076 w +(char buf[64];) 1770 2076 w +(51) 1242 2196 w +(52) 1242 2316 w +(Binit\(&bin, 1, OWRITE\);) 1770 2316 w +({}) 720 2472 w +(step\(\)) 1008 2472 w +10 /LucidaSansUnicode00 f +(Single step process) 4103 2472 w +10 /LucidaTypewriter f +(step) 970 2628 w +10 /LucidaSansUnicode00 f +(causes) 1297 2628 w +(the) 1662 2628 w +(debugged) 1856 2628 w +(process) 2382 2628 w +(to) 2795 2628 w +(execute) 2933 2628 w +(a) 3352 2628 w +(single) 3447 2628 w +(machine) 3776 2628 w +(level) 4224 2628 w +(instruction.) 4486 2628 w +(If the program is stopped on a breakpoint set by) 970 2748 w +10 /LucidaTypewriter f +(bpset) 3363 2748 w +10 /LucidaSansUnicode00 f +(it is first removed, the sin\255) 3755 2748 w +(gle) 970 2868 w +(step) 1164 2868 w +(executed,) 1418 2868 w +(and) 1940 2868 w +(the) 2168 2868 w +(breakpoint) 2371 2868 w +(replaced.) 2944 2868 w +10 /LucidaTypewriter f +(step) 3470 2868 w +10 /LucidaSansUnicode00 f +(uses) 3806 2868 w +10 /LucidaTypewriter f +(follow) 4074 2868 w +10 /LucidaSansUnicode00 f +(to) 4554 2868 w +(predict) 4700 2868 w +(the) 970 2988 w +(address) 1178 2988 w +(of) 1611 2988 w +(the) 1762 2988 w +(program) 1970 2988 w +(counter) 2439 2988 w +(after) 2862 2988 w +(the) 3141 2988 w +(current) 3349 2988 w +(instruction) 3751 2988 w +(has) 4325 2988 w +(been) 4545 2988 w +(exe\255) 4834 2988 w +(cuted.) 970 3108 w +(A) 1305 3108 w +(breakpoint) 1408 3108 w +(is) 1967 3108 w +(placed) 2081 3108 w +(at) 2432 3108 w +(each) 2558 3108 w +(of) 2816 3108 w +(these) 2948 3108 w +(predicted) 3245 3108 w +(addresses) 3739 3108 w +(and) 4261 3108 w +(the) 4476 3108 w +(process) 4666 3108 w +(is started. When the process stops the breakpoints are removed.) 970 3228 w +10 /LucidaTypewriter f +(acid: step\(\)) 1170 3384 w +(62: breakpoint) 1170 3504 w +(main+0x8) 2370 3504 w +(MOVW) 2970 3504 w +(R1,argc+4\(FP\)) 3370 3504 w +({}) 720 3660 w +(stk\(\)) 1008 3660 w +10 /LucidaSansUnicode00 f +(Stack trace) 4513 3660 w +10 /LucidaTypewriter f +(stk) 970 3816 w +10 /LucidaSansUnicode00 f +(produces) 1221 3816 w +(a) 1704 3816 w +(short) 1794 3816 w +(format) 2081 3816 w +(stack) 2440 3816 w +(trace.) 2727 3816 w +(The) 3034 3816 w +(stack) 3250 3816 w +(trace) 3537 3816 w +(includes) 3813 3816 w +(each) 4252 3816 w +(function) 4512 3816 w +(in) 4949 3816 w +(the) 970 3936 w +(stack,) 1158 3936 w +(where) 1475 3936 w +(it) 1800 3936 w +(was called from, and the value of the parameters.) 1899 3936 w +(The short for\255) 4371 3936 w +(mat) 970 4056 w +(omits) 1188 4056 w +(the) 1492 4056 w +(values) 1680 4056 w +(of) 2018 4056 w +(automatic) 2149 4056 w +(variables.) 2662 4056 w +(Parameters) 3190 4056 w +(are) 3763 4056 w +(assumed) 3948 4056 w +(to) 4412 4056 w +(be) 4544 4056 w +(integer) 4697 4056 w +(values) 970 4176 w +(in) 1326 4176 w +(the) 1468 4176 w +(format) 1674 4176 w +10 /LucidaTypewriter f +(X) 2049 4176 w +10 /LucidaSansUnicode00 f +(;) 2121 4176 w +(to) 2204 4176 w +(print) 2353 4176 w +(a) 2636 4176 w +(parameter) 2741 4176 w +(in) 3288 4176 w +(the) 3429 4176 w +(correct) 3634 4176 w +(format) 4022 4176 w +(use) 4396 4176 w +(the) 4615 4176 w +10 /LucidaTypewriter f +(:) 4820 4176 w +10 /LucidaSansUnicode00 f +(to) 4942 4176 w +(obtain) 970 4296 w +(its) 1316 4296 w +(address,) 1472 4296 w +(apply) 1923 4296 w +(the) 2224 4296 w +(correct) 2418 4296 w +(format,) 2795 4296 w +(and) 3191 4296 w +(use) 3411 4296 w +(the) 3620 4296 w +10 /LucidaTypewriter f +(*) 3815 4296 w +10 /LucidaSansUnicode00 f +(indirection) 3927 4296 w +(operator) 4487 4296 w +(to) 4942 4296 w +(find) 970 4416 w +(its) 1208 4416 w +(value.) 1372 4416 w +(It) 1737 4416 w +(may) 1850 4416 w +(be) 2097 4416 w +(necessary) 2263 4416 w +(to) 2785 4416 w +(single) 2930 4416 w +(step) 3265 4416 w +(a) 3518 4416 w +(couple) 3619 4416 w +(of) 3987 4416 w +(instructions) 4131 4416 w +(into) 4750 4416 w +(a) 4985 4416 w +(function) 970 4536 w +(to) 1407 4536 w +(get) 1541 4536 w +(a) 1732 4536 w +(correct) 1823 4536 w +(stack) 2197 4536 w +(trace) 2486 4536 w +(because) 2763 4536 w +(the) 3194 4536 w +(frame) 3386 4536 w +(pointer) 3705 4536 w +(adjustment) 4091 4536 w +(instruc\255) 4674 4536 w +(tion may get scheduled down into the body of the function.) 970 4656 w +10 /LucidaTypewriter f +(acid: stk\(\)) 1170 4812 w +(At pc:0x00001028:main+0x8 ls.c:48) 1170 4932 w +(main\(argc=0x00000002,argv=0x7fffefe4\) ls.c:48) 1170 5052 w +(called from _main+0x20 main9.s:10) 1370 5172 w +({}) 720 5328 w +(stmnt\(\)) 1008 5328 w +10 /LucidaSansUnicode00 f +(Execute a single statement) 3739 5328 w +10 /LucidaTypewriter f +(stmnt) 970 5484 w +10 /LucidaSansUnicode00 f +(executes) 1363 5484 w +(a) 1826 5484 w +(single) 1915 5484 w +(language) 2238 5484 w +(level) 2715 5484 w +(statement.) 2971 5484 w +10 /LucidaTypewriter f +(stmnt) 3553 5484 w +10 /LucidaSansUnicode00 f +(displays) 3947 5484 w +(each) 4374 5484 w +(machine) 4632 5484 w +(level) 970 5604 w +(instruction) 1235 5604 w +(as) 1800 5604 w +(it) 1949 5604 w +(is) 2058 5604 w +(executed.) 2181 5604 w +(When) 2697 5604 w +(the) 3005 5604 w +(executed) 3202 5604 w +(statement) 3686 5604 w +(is) 4212 5604 w +(completed) 4334 5604 w +(the) 4885 5604 w +(source) 970 5724 w +(for) 1329 5724 w +(the) 1505 5724 w +(next) 1697 5724 w +(statement) 1950 5724 w +(is) 2471 5724 w +(displayed.) 2588 5724 w +(Unlike) 3150 5724 w +10 /LucidaTypewriter f +(next) 3490 5724 w +10 /LucidaSansUnicode00 f +(,) 3778 5724 w +(the) 3847 5724 w +10 /LucidaTypewriter f +(stmnt) 4039 5724 w +10 /LucidaSansUnicode00 f +(function) 4437 5724 w +(will) 4876 5724 w +(trace down through function calls.) 970 5844 w +10 /LucidaTypewriter f +(acid: stmnt\(\)) 1170 6000 w +(62: breakpoint) 1170 6120 w +(main+0x18 MOVW) 2370 6120 w +(R5,0xc\(R29\)) 3570 6120 w +(62: breakpoint) 1170 6240 w +(main+0x1c JAL) 2370 6240 w +(Binit\(SB\)) 3370 6240 w +(62: breakpoint) 1170 6360 w +(Binit) 2370 6360 w +(ADD) 3090 6360 w +($-0x18,R29) 3370 6360 w +(binit.c:91) 1170 6480 w +(89) 1242 6600 w +(int) 1570 6600 w +(90) 1242 6720 w +(Binit\(Biobuf *bp, int f, int mode\)) 1570 6720 w +(>91) 1170 6840 w +({) 1570 6840 w +cleartomark +showpage +saveobj restore +%%EndPage: 24 24 +%%Page: 25 25 +/saveobj save def +mark +25 pagesetup +10 /LucidaSansUnicode00 f +(\255 25 \255) 2752 480 w +10 /LucidaTypewriter f +({}) 720 876 w +(stopped\() 1008 876 w +10 /LucidaSans-Italic f +(integer) 1584 876 w +10 /LucidaTypewriter f +(\)) 1928 876 w +10 /LucidaSansUnicode00 f +(Report status of stopped process) 3432 876 w +10 /LucidaTypewriter f +(stopped) 970 1032 w +10 /LucidaSansUnicode00 f +(is) 1508 1032 w +(called) 1622 1032 w +(automatically) 1939 1032 w +(by) 2618 1032 w +(the) 2767 1032 w +(interpreter) 2956 1032 w +(every) 3509 1032 w +(time) 3800 1032 w +(a) 4049 1032 w +(process) 4138 1032 w +(enters) 4547 1032 w +(the) 4885 1032 w +10 /LucidaTypewriter f +(Stopped) 970 1152 w +10 /LucidaSansUnicode00 f +(state,) 1532 1152 w +(such) 1858 1152 w +(as) 2142 1152 w +(when) 2306 1152 w +(it) 2621 1152 w +(hits) 2745 1152 w +(a) 2981 1152 w +(breakpoint.) 3093 1152 w +(The) 3739 1152 w +(pid) 3977 1152 w +(is) 4189 1152 w +(passed) 4326 1152 w +(as) 4722 1152 w +(the) 4885 1152 w +10 /LucidaSans-Italic f +(integer) 970 1272 w +10 /LucidaSansUnicode00 f +(argument.) 1354 1272 w +(The) 1926 1272 w +(default) 2147 1272 w +(implementation) 2527 1272 w +(just) 3330 1272 w +(calls) 3551 1272 w +10 /LucidaTypewriter f +(pstop) 3807 1272 w +10 /LucidaSansUnicode00 f +(,) 4167 1272 w +(but) 4240 1272 w +(the) 4443 1272 w +(function) 4639 1272 w +(may) 970 1392 w +(be) 1207 1392 w +(changed) 1363 1392 w +(to) 1810 1392 w +(provide) 1944 1392 w +(more) 2345 1392 w +(information) 2632 1392 w +(or) 3235 1392 w +(perform) 3373 1392 w +(fine) 3801 1392 w +(control) 4021 1392 w +(of) 4399 1392 w +(execution.) 4533 1392 w +(Note) 970 1512 w +(that) 1247 1512 w +10 /LucidaTypewriter f +(stopped) 1487 1512 w +10 /LucidaSansUnicode00 f +(should) 2040 1512 w +(return;) 2417 1512 w +(for) 2797 1512 w +(example,) 2985 1512 w +(calling) 3479 1512 w +10 /LucidaTypewriter f +(step) 3845 1512 w +10 /LucidaSansUnicode00 f +(in) 4182 1512 w +10 /LucidaTypewriter f +(stopped) 4322 1512 w +10 /LucidaSansUnicode00 f +(will) 4876 1512 w +(recur until the interpreter runs out of stack space.) 970 1632 w +10 /LucidaTypewriter f +(acid: defn stopped\(pid\) {) 1170 1788 w +(if *lflag != 0 then error\("lflag modified"\);) 1370 1908 w +(}) 1370 2028 w +(acid: progargs = "-l") 1170 2148 w +(acid: new\(\);) 1170 2268 w +(acid: while 1 do step\(\);) 1170 2388 w +(:7: \(error\) lflag modified) 1170 2508 w +(acid: stk\(\)) 1170 2628 w +(At pc:0x00001220:main+0x200 ls.c:54) 1170 2748 w +(main\(argc=0x00000001,argv=0x7fffffe8\) ls.c:48) 1170 2868 w +(called from _main+0x20 main9.s:10) 1370 2988 w +({}) 720 3144 w +(symbols\() 1008 3144 w +10 /LucidaSans-Italic f +(string) 1584 3144 w +10 /LucidaTypewriter f +(\)) 1871 3144 w +10 /LucidaSansUnicode00 f +(Search symbol table) 4068 3144 w +10 /LucidaTypewriter f +(symbols) 970 3300 w +10 /LucidaSansUnicode00 f +(uses) 1526 3300 w +(the) 1798 3300 w +(regular) 2005 3300 w +(expression) 2403 3300 w +(supplied) 2986 3300 w +(by) 3455 3300 w +10 /LucidaSans-Italic f +(string) 3623 3300 w +10 /LucidaSansUnicode00 f +(to) 3963 3300 w +(search) 4114 3300 w +(the) 4483 3300 w +(symbol) 4691 3300 w +(table for symbols whose name matches the regular expression.) 970 3420 w +10 /LucidaTypewriter f +(acid: symbols\("main"\)) 1170 3576 w +(main) 1170 3696 w +(T) 1570 3696 w +(0x00001020) 1770 3696 w +(_main) 1170 3816 w +(T) 1570 3816 w +(0x0000623c) 1770 3816 w +({}) 720 3972 w +(win\(\)) 1008 3972 w +10 /LucidaSansUnicode00 f +(Start new process in a window) 3572 3972 w +10 /LucidaTypewriter f +(win) 970 4128 w +10 /LucidaSansUnicode00 f +(performs) 1231 4128 w +(exactly) 1719 4128 w +(the) 2105 4128 w +(same) 2305 4128 w +(function) 2605 4128 w +(as) 3052 4128 w +10 /LucidaTypewriter f +(new) 3204 4128 w +10 /LucidaSansUnicode00 f +(but) 3466 4128 w +(uses) 3674 4128 w +(the) 3940 4128 w +(window) 4141 4128 w +(system) 4556 4128 w +(to) 4942 4128 w +(create) 970 4248 w +(a) 1302 4248 w +(new) 1393 4248 w +(window) 1624 4248 w +(for) 2029 4248 w +(the) 2204 4248 w +(debugged) 2395 4248 w +(process.) 2918 4248 w +(The) 3392 4248 w +(variable) 3609 4248 w +10 /LucidaTypewriter f +(progargs) 4025 4248 w +10 /LucidaSansUnicode00 f +(supplies) 4636 4248 w +(arguments) 970 4368 w +(to) 1527 4368 w +(the) 1663 4368 w +(new) 1856 4368 w +(process.) 2089 4368 w +(The) 2565 4368 w +(environment) 2784 4368 w +(variable) 3433 4368 w +10 /LucidaTypewriter f +($8\275srv) 3851 4368 w +10 /LucidaSansUnicode00 f +(must) 4321 4368 w +(be) 4602 4368 w +(set) 4759 4368 w +(to) 4942 4368 w +(allow) 970 4488 w +(the) 1257 4488 w +(interpreter) 1448 4488 w +(to) 2003 4488 w +(locate) 2137 4488 w +(the) 2462 4488 w +(mount) 2653 4488 w +(channel) 3004 4488 w +(for) 3416 4488 w +(the) 3590 4488 w +(window) 3780 4488 w +(system.) 4184 4488 w +(The) 4623 4488 w +(win\255) 4839 4488 w +(dow) 970 4608 w +(is) 1213 4608 w +(created) 1335 4608 w +(in) 1736 4608 w +(the) 1869 4608 w +(top) 2066 4608 w +(left) 2269 4608 w +(corner) 2470 4608 w +(of) 2824 4608 w +(the) 2964 4608 w +(screen) 3161 4608 w +(and) 3521 4608 w +(is) 3744 4608 w +(400x600) 3867 4608 w +(pixels) 4349 4608 w +(in) 4681 4608 w +(size.) 4815 4608 w +(The) 970 4728 w +10 /LucidaTypewriter f +(win) 1188 4728 w +10 /LucidaSansUnicode00 f +(function) 1441 4728 w +(may) 1879 4728 w +(be) 2116 4728 w +(modified) 2272 4728 w +(to) 2740 4728 w +(alter) 2875 4728 w +(the) 3129 4728 w +(geometry.) 3320 4728 w +(The) 3878 4728 w +(window) 4095 4728 w +(system) 4500 4728 w +(will) 4876 4728 w +(not) 970 4848 w +(be) 1163 4848 w +(able) 1315 4848 w +(to) 1552 4848 w +(deliver) 1684 4848 w +(notes) 2044 4848 w +(in) 2345 4848 w +(the) 2470 4848 w +(new) 2659 4848 w +(window) 2888 4848 w +(since) 3291 4848 w +(the) 3574 4848 w +(pid) 3763 4848 w +(of) 3952 4848 w +(the) 4084 4848 w +(created) 4273 4848 w +(process) 4666 4848 w +(is not passed when the server is mounted to create a new window.) 970 4968 w +10 /LucidaTypewriter f +(acid: win\(\)) 1170 5124 w +cleartomark +showpage +saveobj restore +%%EndPage: 25 25 +%%Trailer +done +%%Pages: 25 diff --git a/sys/doc/acidpaper.ms b/sys/doc/acidpaper.ms new file mode 100644 index 000000000..3203b87a6 --- /dev/null +++ b/sys/doc/acidpaper.ms @@ -0,0 +1,1324 @@ +.HTML "Acid: A Debugger Built From A Language +.TL +Acid: A Debugger Built From A Language +.AU +Phil Winterbottom +philw@plan9.bell-labs.com +.AB +.FS +Originally appeared in +.I +Proc. of the Winter 1994 USENIX Conf., +.R +pp. 211-222, +San Francisco, CA +.FE +Acid is an unusual source-level symbolic debugger for Plan 9. It is implemented +as a language interpreter with specialized primitives that provide +debugger support. Programs written in the language manipulate +one or more target processes; variables in the language represent the +symbols, state, and resources of those processes. +This structure allows complex +interaction between the debugger and the target program and +provides a convenient method of parameterizing differences between +machine architectures. +Although some effort is required to learn +the debugging language, the richness and flexibility of the +debugging environment encourages new ways of reasoning about the way +programs run and the conditions under which they fail. +.AE +.NH +Introduction +.PP +The size and complexity +of programs have increased in proportion to processor speed and memory but +the interface between debugger and programmer has changed little. +Graphical user interfaces have eased some of the tedious +aspects of the interaction. A graphical interface is a convenient +means for navigating through source and data structures but provides +little benefit for process control. +The introduction of a new concurrent language, Alef [Win93], emphasized the +inadequacies of the existing Plan 9 [Pike90] debugger +.I db , +a distant relative of +.I adb , +and made it clear that a new debugger was required. +.PP +Current debuggers like +.I dbx , +.I sdb , +and +.I gdb +are limited to answering only the questions their authors +envisage. As a result, they supply a plethora +of specialized commands, each attempting to anticipate +a specific question a user may ask. +When a debugging situation arises that is beyond the scope +of the command set, the tool is useless. +Further, +it is often tedious or impossible to reproduce an anomalous state +of the program, especially when +the state is embedded in the program's data structures. +.PP +Acid applies some ideas found in CAD software used for +hardware test and simulation. +It is based on the notion that the state and resources of a program +are best represented and manipulated by a language. The state and resources, +such as memory, registers, variables, type information and source code +are represented by variables in the language. +Expressions provide a computation mechanism and control +statements allow repetitive or selective interpretation based +on the result of expression evaluation. +The heart of the Acid debugger is an interpreter for a small typeless +language whose operators mirror the operations +of C and Alef, which in turn correspond well to the basic operations of +the machine. The interpreter itself knows nothing of the underlying +hardware; it deals with the program state and resources +in the abstract. +Fundamental routines to control +processes, read files, and interface to the system are implemented +as builtin functions available to the interpreter. +The actual debugger functionality is coded +in Acid; commands are implemented as Acid functions. +.PP +This language-based approach has several advantages. +Most importantly, programs written in Acid, including most of the +debugger itself, are inherently portable. +Furthermore, Acid avoids the limitations other debuggers impose when +debugging parallel programs. Instead of embedding a fixed +process model in the debugger, Acid allows the +programmer to adapt the debugger to handle an +arbitrary process partitioning or program structure. +The ability to +interact dynamically with an executing process provides clear advantages +over debuggers constrained to probe a static image. +Finally, the Acid language is a powerful vehicle for expressing +assertions about logic, process state, and the contents of data structures. +When combined with dynamic interaction it allows a +limited form of automated program verification without requiring +modification or recompilation of the source code. +The language is also an +excellent vehicle for preserving a test suite for later regression testing. +.PP +The debugger may be customized by its users; standard +functions may be modified or extended to suit a particular application +or preference. +For example, the kernel developers in our group require a +command set supporting assembler-level debugging while the application +programmers prefer source-level functionality. +Although the default library is biased toward assembler-level debugging, +it is easily modified to provide a convenient source-level interface. +The debugger itself does not change; the user combines primitives +and existing Acid functions in different ways to +implement the desired interface. +.NH +Related Work +.PP +DUEL [Gol93], an extension to +.I gdb +[Stal91], proposes using a high level expression evaluator to solve +some of these problems. The evaluator provides iterators to loop over data +structures and conditionals to control evaluation of expressions. +The author shows that complex state queries can be formulated +by combining concise expressions but this only addresses part of the problem. +A program is a dynamic entity; questions asked when the program is in +a static state are meaningful only after the program has been `caught' in +that state. The framework for manipulating the program is still as +primitive as the underlying debugger. While DUEL provides a means to +probe data structures it entirely neglects the most beneficial aspect +of debugging languages: the ability to control processes. Acid is structured +around a thread of control that passes between the interpreter and the +target program. +.PP +The NeD debugger [May92] is a set of extensions to TCL [Ous90] that provide +debugging primitives. The resulting language, NeDtcl, is used to implement +a portable interface between a conventional debugger, pdb [May90], and +a server that executes NeDtcl programs operating on the target program. +Execution of the NeDtcl programs implements the debugging primitives +that pdb expects. +NeD is targeted at multi-process debugging across a network, +and proves the flexibility of a language as a means of +communication between debugging tools. Whereas NeD provides an interface +between a conventional debugger and the process it debugs, Acid is the +debugger itself. While NeD has some of the ideas +found in Acid it is targeted toward a different purpose. Acid seeks to +integrate the manipulation of a program's resources into the debugger +while NeD provides a flexible interconnect between components of +the debugging environment. The choice of TCL is appropriate for its use +in NeD but is not suitable for Acid. Acid relies on the coupling of the type +system with expression evaluation, which are the root of its design, +to provide the debugging primitives. +.PP +Dalek [Ols90] is an event based language extension to gdb. State transitions +in the target program cause events to be queued for processing by the +debugging language. +.PP +Acid has many of the advantages of same process or +.I local +.I agent +debuggers, like Parasight [Aral], without the need for dynamic linking or +shared memory. +Acid improves on the ideas of these other systems by completely integrating +all aspects of the debugging process into the language environment. Of +particular importance is the relationship between Acid variables, +program symbols, source code, registers and type information. This +integration is made possible by the design of the Acid language. +.PP +Interpreted languages such as Lisp and Smalltalk are able to provide +richer debugging environments through more complete information than +their compiled counterparts. Acid is a means to gather and represent +similar information about compiled programs through cooperation +with the compilation tools and library implementers. +.NH +Acid the Language +.PP +Acid is a small interpreted language targeted to its debugging task. +It focuses on representing program state and addressing data rather than +expressing complex computations. Program state is +.I addressable +from an Acid program. +In addition to parsing and executing expressions and providing +an architecture-independent interface to the target process, +the interpreter supplies a mark-and-scan garbage collector +to manage storage. +.PP +Every Acid session begins with the loading of the Acid libraries. +These libraries contain functions, written in Acid, that provide +a standard debugging environment including breakpoint management, +stepping by instruction or statement, stack tracing, and +access to variables, memory, and registers. +The library contains 600 lines of Acid code and provides +functionality similar to +.I dbx . +Following the loading of the system library, Acid loads +user-specified libraries; this load sequence allows the +user to augment or override the standard commands +to customize the debugging environment. When all libraries +are loaded, Acid issues an interactive prompt and begins +evaluating expressions entered by the user. The Acid `commands' +are actually invocations of builtin primitives or previously defined +Acid functions. Acid evaluates each expression as it is entered and +prints the result. +.NH +Types and Variables +.PP +Acid variables are of four basic types: +.I integer , +.I string , +.I float , +and +.I list . +The type of a variable is inferred by the type of the right-hand side of +an assignment expression. +Many of the operators can be applied to more than +one type; for these operators the action of the operator is determined +by the type of its operands. +For example, +the +.CW + +operator adds +.I integer +and +.I float +operands, and concatenates +.I string +and +.I list +operands. +Lists are the only complex type in Acid; there are no arrays, structures +or pointers. Operators provide +.CW head , +.CW tail , +.CW append +and +.CW delete +operations. +Lists can also be indexed like arrays. +.PP +Acid has two levels of scope: global and local. +Function parameters and variables declared in a function body +using the +.CW local +keyword are created at entry to the function and +exist for the lifetime of a function. +Global variables are created by assignment and need not be declared. +All variables and functions in the program +being debugged are entered in the Acid symbol table as global +variables during Acid initialization. +Conflicting variable names are resolved by prefixing enough `$' characters +to make them unique. +Syntactically, Acid variables and target program +symbols are referenced identically. +However, the variables are managed differently in the Acid +symbol table and the user must be aware of this distinction. +The value of an Acid variable is stored in the symbol +table; a reference returns the value. +The symbol table entry for a variable or function in the target +program contains the address of that symbol in the image +of the program. Thus, the value of a program variable is +accessed by indirect reference through the Acid +variable that has the same name; the value of an Acid variable is the +address of the corresponding program variable. +.NH +Control Flow +.PP +The +.CW while +and +.CW loop +statements implement looping. +The former +is similar to the same statement in C. +The latter evaluates starting and ending expressions yielding +integers and iterates while an incrementing loop index +is within the bounds of those expressions. +.P1 +acid: i = 0; loop 1,5 do print(i=i+1) +0x00000001 +0x00000002 +0x00000003 +0x00000004 +0x00000005 +acid: +.P2 +The traditional +.CW if-then-else +statement implements conditional execution. +.NH +Addressing +.PP +Two indirection operators allow Acid to access values in +the program being debugged. +The +.CW * +operator fetches a value from the memory image of an +executing process; +the +.CW @ +operator fetches a value from the text file of the process. +When either operator appears on the left side of an assignment, the value +is written rather than read. +.PP +The indirection operator must know the size of the object +referenced by a variable. +The Plan 9 compilers neglect to include this +information in the program symbol table, so Acid cannot +derive this information implicitly. +Instead Acid variables have formats. +The format is a code +letter specifying the printing style and the effect of some of the +operators on that variable. +The indirection operators look at the format code to determine the +number of bytes to read or write. +The format codes are derived from the format letters used by +.I db . +By default, symbol table variables and numeric constants +are assigned the format code +.CW 'X' +which specifies 32-bit hexadecimal. +Printing such a variable yields output of the form +.CW 0x00123456 . +An indirect reference through the variable fetches 32 bits +of data at the address indicated by the variable. +Other formats specify various data types, for example +.CW i +an instruction, +.CW D +a signed 32 bit decimal, +.CW s +a null-terminated string. +The +.CW fmt +function +allows the user to change the format code of a variable +to control the printing format and +operator side effects. +This function evaluates the expression supplied as the first +argument, attaches the format code supplied as the second +argument to the result and returns that value. +If the result is assigned to a variable, +the new format code applies to +that variable. For convenience, Acid provides the +.CW \e +operator as a shorthand infix form of +.CW fmt . +For example: +.P1 +acid: x=10 +acid: x // print x in hex +0x0000000a +acid: x = fmt(x, 'D') // make x type decimal +acid: print(x, fmt(x, 'X'), x\eX) // print x in decimal & hex +10 0x0000000a 0x0000000a +acid: x // print x in decimal +10 +acid: x\eo // print x in octal +000000000012 +.P2 +The +.CW ++ +and +.CW -- +operators increment or decrement a variable by an amount +determined by its format code. Some formats imply a non-fixed size. +For example, the +.CW i +format code disassembles an instruction into a string. +On a 68020, which has variable length instructions: +.P1 +acid: p=main\ei // p=addr(main), type INST +acid: loop 1,5 do print(p\eX, @p++) // disassemble 5 instr's +0x0000222e LEA 0xffffe948(A7),A7 +0x00002232 MOVL s+0x4(A7),A2 +0x00002236 PEA 0x2f($0) +0x0000223a MOVL A2,-(A7) +0x0000223c BSR utfrrune +acid: +.P2 +Here, +.CW main +is the address of the function of the same name in the program under test. +The loop retrieves the five instructions beginning at that address and +then prints the address and the assembly language representation of each. +Notice that the stride of the increment operator varies with the size of +the instruction: the +.CW MOVL +at +.CW 0x0000223a +is a two byte instruction while all others are four bytes long. +.PP +Registers are treated as normal program variables referenced +by their symbolic assembler language names. +When a +process stops, the register set is saved by the kernel +at a known virtual address in the process memory map. +The Acid variables associated with the registers point +to the saved values and the +.CW * +indirection operator can then be used to read and write the register set. +Since the registers are accessed via Acid variables they may +be used in arbitrary expressions. +.P1 +acid: PC // addr of saved PC +0xc0000f60 +acid: *PC +0x0000623c // contents of PC +acid: *PC\ea +main +acid: *R1=10 // modify R1 +acid: asm(*PC+4) // disassemble @ PC+4 +main+0x4 0x00006240 MOVW R31,0x0(R29) +main+0x8 0x00006244 MOVW $setR30(SB),R30 +main+0x10 0x0000624c MOVW R1,_clock(SB) +.P2 +Here, the saved +.CW PC +is stored at address +.CW 0xc0000f60 ; +its current content is +.CW 0x0000623c . +The +.CW a ' ` +format code converts this value to a string specifying +the address as an offset beyond the nearest symbol. +After setting the value of register +.CW 1 , +the example uses the +.CW asm +command to disassemble a short section of code beginning +at four bytes beyond the current value of the +.CW PC . +.NH +Process Interface +.PP +A program executing under Acid is monitored through the +.I proc +file system interface provided by Plan 9. +Textual messages written to the +.CW ctl +file control the execution of the process. +For example writing +.CW waitstop +to the control file causes the write to block until the target +process enters the kernel and is stopped. When the process is stopped +the write completes. The +.CW startstop +message starts the target process and then does a +.CW waitstop +action. +Synchronization between the debugger and the target process is determined +by the actions of the various messages. Some operate asynchronously to the +target process and always complete immediately, others block until the +action completes. The asynchronous messages allow Acid to control +several processes simultaneously. +.PP +The interpreter has builtin functions named after each of the control +messages. The functions take a process id as argument. +Any time a control message causes the program to execute instructions +the interpreter performs two actions when the control operation has completed. +The Acid variables pointing at the register set are fixed up to point +at the saved registers, and then +the user defined function +.CW stopped +is executed. +The +.CW stopped +function may print the current address, +line of source or instruction and return to interactive mode. Alternatively +it may traverse a complex data structure, gather statistics and then set +the program running again. +.PP +Several Acid variables are maintained by the debugger rather than the +programmer. +These variables allow generic Acid code to deal with the current process, +architecture specifics or the symbol table. +The variable +.CW pid +is the process id of the current process Acid is debugging. +The variable +.CW symbols +contains a list of lists where each sublist contains the symbol +name, its type and the value of the symbol. +The variable +.CW registers +contains a list of the machine-specific register names. Global symbols in the target program +can be referenced directly by name from Acid. Local variables +are referenced using the colon operator as \f(CWfunction:variable\fP. +.NH +Source Level Debugging +.PP +Acid provides several builtin functions to manipulate source code. +The +.CW file +function reads a text file, inserting each line into a list. +The +.CW pcfile +and +.CW pcline +functions each take an address as an argument. +The first +returns a string containing the name of the source file +and the second returns an integer containing the line number +of the source line containing the instruction at the address. +.P1 +acid: pcfile(main) // file containing main +main.c +acid: pcline(main) // line # of main in source +11 +acid: file(pcfile(main))[pcline(main)] // print that line +main(int argc, char *argv[]) +acid: src(*PC) // print statements nearby + 9 + 10 void +>11 main(int argc, char *argv[]) + 12 { + 13 int a; +.P2 +In this example, the three primitives are combined in an expression to print +a line of source code associated with an address. +The +.CW src +function prints a few lines of source +around the address supplied as its argument. A companion routine, +.CW Bsrc , +communicates with the external editor +.CW sam . +Given an address, it loads the corresponding source file into the editor +and highlights the line containing the address. This simple interface +is easily extended to more complex functions. +For example, the +.CW step +function can select the current file and line in the editor +each time the target program stops, giving the user a visual +trace of the execution path of the program. A more complete interface +allowing two way communication between Acid and the +.CW acme +user interface [Pike93] is under construction. A filter between the debugger +and the user interface provides interpretation of results from both +sides of the interface. This allows the programming environment to +interact with the debugger and vice-versa, a capability missing from the +.CW sam +interface. +The +.CW src +and +.CW Bsrc +functions are both written in Acid code using the file and line primitives. +Acid provides library functions to step through source level +statements and functions. Furthermore, addresses in Acid expressions can be +specified by source file and line. +Source code is manipulated in the Acid +.I list +data type. +.NH +The Acid Library +.PP +The following examples define some useful commands and +illustrate the interaction of the debugger and the interpreter. +.P1 +defn bpset(addr) // set breakpoint +{ + if match(addr, bplist) >= 0 then + print("bkpoint already set:", addr\ea, "\en"); + else { + *fmt(addr, bpfmt) = bpinst; // plant it + bplist = append bplist, addr; // add to list + } +} +.P2 +The +.CW bpset +function plants a break point in memory. The function starts by +using the +.CW match +builtin to +search the breakpoint list to determine if a breakpoint is already +set at the address. +The indirection operator, controlled by the format code returned +by the +.CW fmt +primitive, is used to plant the breakpoint in memory. +The variables +.CW bpfmt +and +.CW bpinst +are Acid global variables containing the format code specifying +the size of the breakpoint instruction and the breakpoint instruction +itself. +These +variables are set by architecture-dependent library code +when the debugger first attaches to the executing image. +Finally the address of the breakpoint is +appended to the breakpoint list, +.CW bplist . +.P1 +defn step() // single step +{ + local lst, lpl, addr, bput; + + bput = 0; // sitting on bkpoint + if match(*PC, bplist) >= 0 then { + bput = fmt(*PC, bpfmt); // save current addr + *bput = @bput; // replace it + } + + lst = follow(*PC); // get follow set + + lpl = lst; + while lpl do { // place breakpoints + *(head lpl) = bpinst; + lpl = tail lpl; + } + + startstop(pid); // do the step + + while lst do { // remove breakpoints + addr = fmt(head lst, bpfmt); + *addr = @addr; // replace instr. + lst = tail lst; + } + if bput != 0 then + *bput = bpinst; // restore breakpoint +} +.P2 +The +.CW step +function executes a single assembler instruction. +If the +.CW PC +is sitting +on a breakpoint, the address and size of +the breakpoint are saved. +The breakpoint instruction +is then removed using the +.CW @ +operator to fetch +.CW bpfmt +bytes from the text file and to place it into the memory +of the executing process using the +.CW * +operator. +The +.CW follow +function is an Acid +builtin which returns a follow-set: a list of instruction addresses which +could be executed next. +If the instruction stored at the +.CW PC +is a branch instruction, the +list contains the addresses of the next instruction and +the branch destination; otherwise, it contains only the +address of the next instruction. +The follow-set is then used to replace each possible following +instruction with a breakpoint instruction. The original +instructions need not be saved; they remain +in their unaltered state in the text file. +The +.CW startstop +builtin writes the `startstop' message to the +.I proc +control file for the process named +.CW pid . +The target process executes until some condition causes it to +enter the kernel, in this case, the execution of a breakpoint. +When the process blocks, the debugger regains control and invokes the +Acid library function +.CW stopped +which reports the address and cause of the blockage. +The +.CW startstop +function completes and returns to the +.CW step +function where +the follow-set is used to replace the breakpoints placed earlier. +Finally, if the address of the original +.CW PC +contained a breakpoint, it is replaced. +.PP +Notice that this approach to process control is inherently portable; +the Acid code is shared by the debuggers for all architectures. +Acid variables and builtin functions provide a transparent interface +to architecture-dependent values and functions. Here the breakpoint +value and format are referenced through Acid variables and the +.CW follow +primitive masks the differences in the underlying instruction set. +.PP +The +.CW next +function, similar to the +.I dbx +command of the same name, +is a simpler example. +This function steps through +a single source statement but steps over function calls. +.P1 +defn next() +{ + local sp, bound; + + sp = *SP; // save starting SP + bound = fnbound(*PC); // begin & end of fn. + stmnt(); // step 1 statement + pc = *PC; + if pc >= bound[0] && pc < bound[1] then + return {}; + + while (pcbound[1]) && sp>=*SP do { + step(); + pc = *PC; + } + src(*PC); +} +.P2 +The +.CW next +function +starts by saving the current stack pointer in a local variable. +It then uses the Acid library function +.CW fnbound +to return the addresses of the first and last instructions in +the current function in a list. +The +.CW stmnt +function executes a single source statement and then uses +.CW src +to print a few lines of source around the new +.CW PC . +If the new value of the +.CW PC +remains in the current function, +.CW next +returns. +When the executed statement is a function call or a return +from a function, the new value of the +.CW PC +is outside the bounds calculated by +.CW fnbound +and the test of the +.CW while +loop is evaluated. +If the statement was a return, the new value of the stack pointer +is greater than the original value and the loop completes without +execution. +Otherwise, the loop is entered and instructions are continually +executed until the value of the +.CW PC +is between the bounds calculated earlier. At that point, execution +ceases and a few lines of source in the vicinity of the +.CW PC +are printed. +.PP +Acid provides concise and elegant expression for control and +manipulation of target programs. These examples demonstrate how a +few well-chosen primitives can be combined to create a rich debugging environment. +.NH +Dealing With Multiple Architectures +.PP +A single binary of Acid may be used to debug a program running on any +of the five processor architectures supported by Plan 9. For example, +Plan 9 allows a user on a MIPS to import the +.I proc +file system from an i486-based PC and remotely debug a program executing +on that processor. +.PP +Two levels of abstraction provide this architecture independence. +On the lowest level, a Plan 9 library supplies functions to +decode the file header of the program being debugged and +select a table of system parameters +and a jump vector of architecture-dependent +functions based on the magic number. +Among these functions are byte-order-independent +access to memory and text files, stack manipulation, disassembly, +and floating point number interpretation. +The second level of abstraction is supplied by Acid. +It consists of primitives and approximately 200 lines +of architecture-dependent Acid library code that interface the +interpreter to the architecture-dependent library. +This layer performs functions such as mapping register names to +memory locations, supplying breakpoint values and sizes, +and converting processor specific data to Acid data types. +An example of the latter is the stack trace function +.CW strace , +which uses the stack traversal functions in the +architecture-dependent library to construct a list of lists describing +the context of a process. The first level of list selects +each function in the trace; subordinate lists contain the +names and values of parameters and local variables of +the functions. Acid commands and library functions that +manipulate and display process state information operate +on the list representation and are independent of the +underlying architecture. +.NH +Alef Runtime +.PP +Alef is a concurrent programming language, +designed specifically for systems programming, which supports both +shared variable and message passing paradigms. +Alef borrows the C expression syntax but implements +a substantially different type system. +The language provides a rich set of +exception handling, process management, and synchronization +primitives, which rely on a runtime system. +Alef program bugs are often deadlocks, synchronization failures, +or non-termination caused by locks being held incorrectly. +In such cases, a process stalls deep +in the runtime code and it is clearly +unreasonable to expect a programmer using the language +to understand the detailed +internal semantics of the runtime support functions. +.PP +Instead, there is an Alef support library, coded in Acid, that +allows the programmer to interpret the program state in terms of +Alef operations. Consider the example of a multi-process program +stalling because of improper synchronization. A stack trace of +the program indicates that it is waiting for an event in some +obscure Alef runtime +synchronization function. +The function itself is irrelevant to the +programmer; of greater importance is the identity of the +unfulfilled event. +Commands in the Alef support library decode +the runtime data structures and program state to report the cause +of the blockage in terms of the high-level operations available to +the Alef programmer. +Here, the Acid language acts +as a communications medium between Alef implementer and Alef user. +.NH +Parallel Debugging +.PP +The central issue in parallel debugging is how the debugger is +multiplexed between the processes comprising +the program. +Acid has no intrinsic model of process partitioning; it +only assumes that parallel programs share a symbol table, +though they need not share memory. +The +.CW setproc +primitive attaches the debugger to a running process +associated with the process ID supplied as its argument +and assigns that value to the global variable +.CW pid , +thereby allowing simple rotation among a group of processes. +Further, the stack trace primitive is driven by parameters +specifying a unique process context, so it is possible to +examine the state of cooperating processes without switching +the debugger focus from the process of interest. +Since Acid is inherently extensible and capable of +dynamic interaction with subordinate processes, the +programmer can define Acid commands to detect and control +complex interactions between processes. +In short, the programmer is free to specify how the debugger reacts +to events generated in specific threads of the program. +.PP +The support for parallel debugging in Acid depends on a crucial kernel +modification: when the text segment of a program is written (usually to +place a breakpoint), the segment is cloned to prevent other threads +from encountering the breakpoint. Although this incurs a slight performance +penalty, it is of little importance while debugging. +.NH +Communication Between Tools +.PP +The Plan 9 Alef and C compilers do not +embed detailed type information in the symbol table of an +executable file. +However, they do accept a command line option causing them to +emit descriptions of complex data types +(e.g., aggregates and abstract data types) +to an auxiliary file. +The vehicle for expressing this information is Acid source code. +When an Acid debugging session is +subsequently started, that file is loaded with the other Acid libraries. +.PP +For each complex object in the program the compiler generates +three pieces of Acid code. +The first is a table describing the size and offset of each +member of the complex data type. Following is an Acid function, +named the same as the object, that formats and prints each member. +Finally, Acid declarations associate the +Alef or C program variables of a type with the functions +to print them. +The three forms of declaration are shown in the following example: +.P1 +struct Bitmap { + Rectangle 0 r; + Rectangle 16 clipr; + 'D' 32 ldepth; + 'D' 36 id; + 'X' 40 cache; +}; +.P2 +.P1 +defn +Bitmap(addr) { + complex Bitmap addr; + print("Rectangle r {\en"); + Rectangle(addr.r); + print("}\en"); + print("Rectangle clipr {\en"); + Rectangle(addr.clipr); + print("}\en"); + print(" ldepth ", addr.ldepth, "\en"); + print(" id ", addr.id, "\en"); + print(" cache ", addr.cache, "\en"); +}; + +complex Bitmap darkgrey; +complex Bitmap Window_settag:b; +.P2 +The +.CW struct +declaration specifies decoding instructions for the complex type named +.CW Bitmap . +Although the syntax is superficially similar to a C structure declaration, +the semantics differ markedly: the C declaration specifies a layout, while +the Acid declaration tells how to decode it. +The declaration specifies a type, an offset, and name for each +member of the complex object. The type is either the name of another +complex declaration, for example, +.CW Rectangle , +or a format code. +The offset is the number of bytes from the start +of the object to the member +and the name is the member's name in the Alef or C declaration. +This type description is a close match for C and Alef, but is simple enough +to be language independent. +.PP +The +.CW Bitmap +function expects the address of a +.CW Bitmap +as its only argument. +It uses the decoding information contained in the +.CW Bitmap +structure declaration to extract, format, and print the +value of each member of the complex object pointed to by +the argument. +The Alef compiler emits code to call other Acid functions +where a member is another complex type; here, +.CW Bitmap +calls +.CW Rectangle +to print its contents. +.PP +The +.CW complex +declarations associate Alef variables with complex types. +In the example, +.CW darkgrey +is the name of a global variable of type +.CW Bitmap +in the program being debugged. +Whenever the name +.CW darkgrey +is evaluated by Acid, it automatically calls the +.CW Bitmap +function with the address of +.CW darkgrey +as the argument. +The second +.CW complex +declaration associates a local variable or parameter named +.CW b +in function +.CW Window_settag +with the +.CW Bitmap +complex data type. +.PP +Acid borrows the C operators +.CW . +and +.CW -> +to access the decoding parameters of a member of a complex type. +Although this representation is sufficiently general for describing +the decoding of both C and Alef complex data types, it may +prove too restrictive for target languages with more complicated +type systems. +Further, the assumption that the compiler can select the proper +Acid format code for each basic type in the language is somewhat +naive. For example, when a member of a complex type is a pointer, +it is assigned a hexadecimal type code; integer members are always +assigned a decimal type code. +This heuristic proves inaccurate when an integer field is a +bit mask or set of bit flags which are more appropriately displayed +in hexadecimal or octal. +.NH +Code Verification +.PP +Acid's ability to interact dynamically with +an executing program allows passive test and +verification of the target program. For example, +a common concern is leak detection in programs using +.CW malloc . +Of interest are two items: finding memory that was allocated +but never freed and detecting bad pointers passed to +.CW free . +An auxiliary Acid library contains Acid functions to +monitor the execution of a program and detect these +faults, either as they happen or in the automated +post-mortem analysis of the memory arena. +In the following example, the +.CW sort +command is run under the control of the +Acid memory leak library. +.P1 +helix% acid -l malloc /bin/sort +/bin/sort: mips plan 9 executable +/lib/acid/port +/lib/acid/mips +/lib/acid/malloc +acid: go() +now +is +the +time + +is +now +the +time +27680 : breakpoint _exits+0x4 MOVW $0x8,R1 +acid: +.P2 +The +.CW go +command creates a process and plants +breakpoints at the entry to +.CW malloc +and +.CW free . +The program is then started and continues until it +exits or stops. If the reason for stopping is anything +other than the breakpoints in +.CW malloc +and +.CW free , +Acid prints the usual status information and returns to the +interactive prompt. +.PP +When the process stops on entering +.CW malloc , +the debugger must capture and save the address that +.CW malloc +will return. +After saving a stack +trace so the calling routine can be identified, it places +a breakpoint at the return address and restarts the program. +When +.CW malloc +returns, the breakpoint stops the program, +allowing the debugger +to grab the address of the new memory block from the return register. +The address and stack trace are added to the list of outstanding +memory blocks, the breakpoint is removed from the return point, and +the process is restarted. +.PP +When the process stops at the beginning of +.CW free , +the memory address supplied as the argument is compared to the list +of outstanding memory blocks. If it is not found an error message +and a stack trace of the call is reported; otherwise, the +address is deleted from the list. +.PP +When the program exits, the list of outstanding memory blocks contains +the addresses of all blocks that were allocated but never freed. +The +.CW leak +library function traverses the list producing a report describing +the allocated blocks. +.P1 1m +acid: leak() +Lost a total of 524288 bytes from: + malloc() malloc.c:32 called from dofile+0xe8 sort.c:217 + dofile() sort.c:190 called from main+0xac sort.c:161 + main() sort.c:128 called from _main+0x20 main9.s:10 +Lost a total of 64 bytes from: + malloc() malloc.c:32 called from newline+0xfc sort.c:280 + newline() sort.c:248 called from dofile+0x110 sort.c:222 + dofile() sort.c:190 called from main+0xac sort.c:161 + main() sort.c:128 called from _main+0x20 main9.s:10 +Lost a total of 64 bytes from: + malloc() malloc.c:32 called from realloc+0x14 malloc.c:129 + realloc() malloc.c:123 called from bldkey+0x358 sort.c:1388 + buildkey() sort.c:1345 called from newline+0x150 sort.c:285 + newline() sort.c:248 called from dofile+0x110 sort.c:222 + dofile() sort.c:190 called from main+0xac sort.c:161 + main() sort.c:128 called from _main+0x20 main9.s:10 +acid: refs() +data...bss...stack... +acid: leak() +acid: +.P2 +The presence of a block in the allocation list does not imply +it is there because of a leak; for instance, it may have been +in use when the program terminated. +The +.CW refs() +library function scans the +.I data , +.I bss , +and +.I stack +segments of the process looking for pointers +into the allocated blocks. When one is found, the block is deleted from +the outstanding block list. +The +.CW leak +function is used again to report the +blocks remaining allocated and unreferenced. +This strategy proves effective in detecting +disconnected (but non-circular) data structures. +.PP +The leak detection process is entirely passive. +The program is not +specially compiled and the source code is not required. +As with the Acid support functions for the Alef runtime environment, +the author of the library routines has encapsulated the +functionality of the library interface +in Acid code. +Any programmer may then check a program's use of the +library routines without knowledge of either implementation. +The performance impact of running leak detection is great +(about 10 times slower), +but it has not prevented interactive programs like +.CW sam +and the +.CW 8½ +window system from being tested. +.NH +Code Coverage +.PP +Another common component of software test uses +.I coverage +analysis. +The purpose of the test is to determine which paths through the code have +not been executed while running the test suite. +This is usually +performed by a combination of compiler support and a reporting tool run +on the output generated by statements compiled into the program. +The compiler emits code that +logs the progress of the program as it executes basic blocks and writes the +results to a file. The file is then processed by the reporting tool +to determine which basic blocks have not been executed. +.PP +Acid can perform the same function in a language independent manner without +modifying the source, object or binary of the program. The following example +shows +.CW ls +being run under the control of the Acid coverage library. +.P1 +philw-helix% acid -l coverage /bin/ls +/bin/ls: mips plan 9 executable +/lib/acid/port +/lib/acid/mips +/lib/acid/coverage +acid: coverage() +acid +newstime +profile +tel +wintool +2: (error) msg: pid=11419 startstop: process exited +acid: analyse(ls) +ls.c:102,105 + 102: return 1; + 103: } + 104: if(db[0].qid.path&CHDIR && dflag==0){ + 105: output(); +ls.c:122,126 + 122: memmove(dirbuf+ndir, db, sizeof(Dir)); + 123: dirbuf[ndir].prefix = 0; + 124: p = utfrrune(s, '/'); + 125: if(p){ + 126: dirbuf[ndir].prefix = s; +.P2 +The +.CW coverage +function begins by looping through the text segment placing +breakpoints at the entry to each basic block. The start of each basic +block is found using the Acid builtin function +.CW follow . +If the list generated by +.CW follow +contains more than one +element, then the addresses mark the start of basic blocks. A breakpoint +is placed at each address to detect entry into the block. If the result +of +.CW follow +is a single address then no action is taken, and the next address is +considered. Acid maintains a list of +breakpoints already in place and avoids placing duplicates (an address may be +the destination of several branches). +.PP +After placing the breakpoints the program is set running. +Each time a breakpoint is encountered +Acid deletes the address from the breakpoint list, removes the breakpoint +from memory and then restarts the program. +At any instant the breakpoint list contains the addresses of basic blocks +which have not been executed. +The +.CW analyse +function reports the lines of source code bounded by basic blocks +whose addresses are have not been deleted from the breakpoint list. +These are the basic blocks which have not been executed. +Program performance is almost unaffected since each breakpoint is executed +only once and then removed. +.PP +The library contains a total of 128 lines of Acid code. +An obvious extension of this algorithm could be used to provide basic block +profiling. +.NH +Conclusion +.PP +Acid has two areas of weakness. As with +other language-based tools like +.I awk , +a programmer must learn yet another language to step beyond the normal +debugging functions and use the full power of the debugger. +Second, the command line interface supplied by the +.I yacc +parser is inordinately clumsy. +Part of the problem relates directly to the use of +.I yacc +and could be circumvented with a custom parser. +However, structural problems would remain: Acid often requires +too much typing to execute a simple +command. +A debugger should prostitute itself to its users, doing whatever +is wanted with a minimum of encouragement; commands should be +concise and obvious. The language interface is more consistent than +an ad hoc command interface but is clumsy to use. +Most of these problems are addressed by an Acme interface +which is under construction. This should provide the best of +both worlds: graphical debugging and access to the underlying acid +language when required. +.PP +The name space clash between Acid variables, keywords, program variables, +and functions is unavoidable. +Although it rarely affects a debugging session, it is annoying +when it happens and is sometimes difficult to circumvent. +The current renaming scheme +is too crude; the new names are too hard to remember. +.PP +Acid has proved to be a powerful tool whose applications +have exceeded expectations. +Of its strengths, portability, extensibility and parallel debugging support +were by design and provide the expected utility. +In retrospect, +its use as a tool for code test and verification and as +a medium for communicating type information and encapsulating +interfaces has provided unanticipated benefits and altered our +view of the debugging process. +.NH +Acknowledgments +.PP +Bob Flandrena was the first user and helped prepare the paper. +Rob Pike endured three buggy Alef compilers and a new debugger +in a single sitting. +.NH +References +.LP +[Pike90] R. Pike, D. Presotto, K. Thompson, H. Trickey, +``Plan 9 from Bell Labs'', +.I +UKUUG Proc. of the Summer 1990 Conf., +.R +London, England, +1990, +reprinted, in a different form, in this volume. +.LP +[Gol93] M. Golan, D. Hanson, +``DUEL -- A Very High-Level Debugging Language'', +.I +USENIX Proc. of the Winter 1993 Conf., +.R +San Diego, CA, +1993. +.LP +[Lin90] M. A. Linton, +``The Evolution of DBX'', +.I +USENIX Proc. of the Summer 1990 Conf., +.R +Anaheim, CA, +1990. +.LP +[Stal91] R. M. Stallman, R. H. Pesch, +``Using GDB: A guide to the GNU source level debugger'', +Technical Report, Free Software Foundation, +Cambridge, MA, +1991. +.LP +[Win93] P. Winterbottom, +``Alef reference Manual'', +this volume. +.LP +[Pike93] Rob Pike, +``Acme: A User Interface for Programmers'', +.I +USENIX Proc. of the Winter 1994 Conf., +.R +San Francisco, CA, +reprinted in this volume. +.LP +[Ols90] Ronald A. Olsson, Richard H. Crawford, and W. Wilson Ho, +``Dalek: A GNU, improved programmable debugger'', +.I +USENIX Proc. of the Summer 1990 Conf., +.R +Anaheim, CA. +.LP +[May92] Paul Maybee, +``NeD: The Network Extensible Debugger'' +.I +USENIX Proc. of the Summer 1992 Conf., +.R +San Antonio, TX. +.LP +[Aral] Ziya Aral, Ilya Gertner, and Greg Schaffer, +``Efficient debugging primitives for multiprocessors'', +.I +Proceedings of the Third International Conference on Architectural +Support for Programming Languages and Operating Systems, +.R +SIGPLAN notices Nr. 22, May 1989. diff --git a/sys/doc/acidpaper.ps b/sys/doc/acidpaper.ps new file mode 100644 index 000000000..f2ceb173d --- /dev/null +++ b/sys/doc/acidpaper.ps @@ -0,0 +1,10721 @@ +%!PS-Adobe-2.0 +%%BeginResource: font lsunr00 +%!PS-AdobeFont-1.1: LucidaSansUnicode00 0.9 +%%CreationDate: 1994 Jun 04 09:53:35 +% Lucida is a registered trademark of Bigelow & Holmes Inc. +% NOTE: This is a partial font in Adobe Type 1 format. +% The complete font in fully hinted ATM compatible form is available from Y&Y +% (508) 371-3286 USA, email: tech-help@YandY.com, http://www.YandY.com +11 dict begin +/FontInfo 9 dict dup begin +/version (0.9) readonly def +/Notice ((C) 1991, 1993 Bigelow & Holmes Inc. Pat. Des. 289,420. All rights reserved.) readonly def +/Notice ((C) 1994 Y&Y Inc. All rights reserved.) readonly def +/FullName (Lucida Sans Unicode 00) readonly def +/FamilyName (LucidaSansUnicode) readonly def +/Weight (Normal) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /LucidaSansUnicode00 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 100 /0064 put +dup 101 /0065 put +dup 102 /0066 put +dup 103 /0067 put +dup 104 /0068 put +dup 105 /0069 put +dup 106 /006a put +dup 107 /006b put +dup 108 /006c put +dup 109 /006d put +dup 110 /006e put +dup 111 /006f put +dup 112 /0070 put +dup 113 /0071 put +dup 114 /0072 put +dup 115 /0073 put +dup 116 /0074 put +dup 117 /0075 put +dup 118 /0076 put +dup 119 /0077 put +dup 120 /0078 put +dup 121 /0079 put +dup 122 /007a put +dup 123 /007b put +dup 124 /007c put +dup 125 /007d put +dup 126 /007e put +dup 163 /00a3 put +dup 167 /00a7 put +dup 169 /00a9 put +dup 173 /00ad put +dup 174 /00ae put +dup 176 /00b0 put +dup 177 /00b1 put +dup 180 /00b4 put +dup 181 /00b5 put +dup 182 /00b6 put +dup 185 /00b9 put +dup 186 /00ba put +dup 188 /00bc put +dup 189 /00bd put +dup 191 /00bf put +dup 198 /00c6 put +dup 215 /00d7 put +dup 223 /00df put +dup 231 /00e7 put +dup 233 /00e9 put +dup 237 /00ed put +dup 239 /00ef put +dup 241 /00f1 put +dup 247 /00f7 put +dup 252 /00fc put +dup 32 /0020 put +dup 33 /0021 put +dup 34 /0022 put +dup 35 /0023 put +dup 36 /0024 put +dup 37 /0025 put +dup 38 /0026 put +dup 40 /0028 put +dup 41 /0029 put +dup 42 /002a put +dup 43 /002b put +dup 44 /002c put +dup 45 /002d put +dup 46 /002e put +dup 47 /002f put +dup 48 /0030 put +dup 49 /0031 put +dup 50 /0032 put +dup 51 /0033 put +dup 52 /0034 put +dup 53 /0035 put +dup 54 /0036 put +dup 55 /0037 put +dup 56 /0038 put +dup 57 /0039 put +dup 58 /003a put +dup 59 /003b put +dup 60 /003c put +dup 61 /003d put +dup 62 /003e put +dup 63 /003f put +dup 65 /0041 put +dup 66 /0042 put +dup 67 /0043 put +dup 68 /0044 put +dup 69 /0045 put +dup 70 /0046 put +dup 71 /0047 put +dup 72 /0048 put +dup 73 /0049 put +dup 74 /004a put +dup 75 /004b put +dup 76 /004c put +dup 77 /004d put +dup 78 /004e put +dup 79 /004f put +dup 80 /0050 put +dup 81 /0051 put +dup 82 /0052 put +dup 83 /0053 put +dup 84 /0054 put +dup 85 /0055 put +dup 86 /0056 put +dup 87 /0057 put +dup 88 /0058 put +dup 89 /0059 put +dup 90 /005a put +dup 91 /005b put +dup 92 /005c put +dup 93 /005d put +dup 95 /005f put +dup 96 /0060 put +dup 97 /0061 put +dup 98 /0062 put +dup 99 /0063 put +readonly def +/FontBBox{-90 -211 977 1005}readonly def +%/UniqueID 5054500 def +currentdict end +currentfile eexec +AF9D569DD6A39B9A08931526FD86DA1F3D52F6A6E9A3C2A341616BA8AD4A6BBA6A84F4F691C60D +64B463C6D1B3A432634AAC416FAE1067039D940A82A692DB189D5719DA649D309E36853E1F767A +0DF1C424DA3E9D8E6B45B659E31B0A03BB7747FB2945268D0805A130347C7455FA73121BA001A8 +5BFFF1847B8FBAE1B61BA76AB61D750F7BCDB1EE8E4B4E95657E783B2230A68A5A62E9E39EA352 +7B3E832C6BF769697C2B18F29596B8A56AC9532224A452AE7A77A33DC5D437BAD5B4C1B9DD7680 +FE4456B59A798F584F7913B3A790F3E5F9559505B80A36CDE0A4D46A595E942D798E6F6311B3E3 +613059010E0C594BA804C9FA8EED254427D021628C6A59FA5C10314D3143AA329B9E1E767CADFB +B864C70BE2EB0FA96FBDCC2EB1B44783431EE1CDCADC68DF65C29B4AB7C198BAA625A3736F6240 +46E72FAE8F379B391393A007E9F796065FC622322C782111E2EE7B73FC09C5852F35A75CA296FB +ADBC77E83C2378DAE017DC93437EDA4E1473D256C7AA433FAFF90BFF104C39847FB6076D559B8A +4D05AC2A35837CF7949567F37638F1FF869CA022F28979DC7AA611BCACFFE95AA23CBFB86C9719 +BBD5738FB6D86326F1B0A84EFA79C80BDC618F42DFAB8B232211332E1D793A6C4CA71DE2D7DBE1 +5806FB210EA36FCE5FA253B9C507225A5581765AA21DB9E1739AA6063F3F7F11D72E65C3F9A83E +71C8DFC9B9E13C0CCA25836D4233D10595ED053201C745C989878BC0457410C29FED3273550E0E +C93F30B6E5994D0DE950C82E70299AB82D97B0EC11EE5CFD3A5311B0B9623C7CF73BCCE4D33436 +655812E9BC69045B581B2BACE84DEBD480A8652676ABDB2976168954DCD745B42F92F25CC2A4B0 +58AF8D1F0BFFC280B7FECF0593655FEDBE41135D72874467035351F424E92C9E4F628501066322 +AE5896C2CC8C5AD9EE9C4E2076DF548DEF8A6ADAAEC8F05CBBB8882BE5DEBB3976FDD20539F0ED +C5F331CADFFF8B1E1ACC3E0DE2DE0628766105E7EE97E55E66E2585DD7412749CCA828C3CB355F +716E5F447857D298C1383EDD389C2C09F3094A09F90652D5913EEBBFB16547FF31DBB8C0F43480 +6C96524DB4F2D96F6A32856DC62FB350D208B4462521EA9578695E7F8A31FDAFC065535AB32B28 +4F808767213AD4B89C02E59E3F2BD114BC411E4A9B58F97102E7ACB9310EE2AD2EAEE87E1702E4 +3E00854C35156E731478402285AB23B0049A74381C2355F35511C7D966B2EE653CD8A3D7D6505E +80A4BD2C96B451354DD9323C30C9894A60CE614D0B091D3A03A5EDA4BB127F255FF706AD6E6827 +9123CEF7396D89B5E5A968B4A4C0F4B0C227D1EE676801922A3CE24F2602569AF11ED43F17E2F4 +6669AEBD1F6B9E53C76043E1CD9DACDBB3B6B87F949372C03E9A5C80FABBF2E7767880B7064D05 +AE2D717B6A189D0C9F8DBC981EBEFD9A031C7592EFA0C08FD8BCD2FA1210881D95D6ECD9E72096 +5ACE2A9462EB9C3504315CFE8C6B5362B833CE52BC726DCB3450CEB73E42E667B9D86D0F985A35 +CAFF807F4DFAF156AFDCB999DBA61476BF4CCE49C6D8A8B7D2A3FC07EE8346E30F68FEF7774273 +6E55BA23311F85C7FAD9D9AA1EB17E14C45033BEE8D3093AEE9E706133FA94413F30F723568255 +498A071D76C10D12536425A7185DB60BDECAF6BFD0BE58F418D0E62FDA7B846BDD490EA7CEAD05 +E1BB9A4DF66E13758858B80F6C7216D8D606E92BC93576A1FB3604D9FBD78656FDF64328AD9466 +3CFABAB19A0636518FF61E62591661FBFD264B90156E24941177A42A0E5315F6168A93B96E27DF +2E7451F382C2C83241AC2B5F52A2C9453D3E207EBBEB3881FF237E9135E1D9191E1FBE5E606C60 +43726A6783CD4414D26F8F95B260FAE60262DE148545079C80C962D5D7BDE2A77A814CDD4ED901 +D28D4D5C4324DF7F7AA6B832B6F5E0E129F471A12373F0D97037FD695F921E0CAD8963372E8DC7 +F3AA5E004E1F5980BA9825774BB2DD511B6A9D5A0C7E7885E39E3B5497EF466C52B7DD4CF4AD74 +6E62FE4B1E082811AA45D6483725D0EE18C9C6BB988C036913682EAC4645EF90AD5FC24BC78778 +DDDD48EC8F1E64525AB9B1EFE0CDFABCC6A17BDACC1B3B1929FB2FA1DB85991FFE1B92B7999C99 +1BD3AC17B8A44E11DD954BEBFF002A0562EEDBC507DD0FF13ABADBC8E5676F5F951D1B32B725DE +FB33219FF4DAE8298887E415434BE4012D1A294F807CF53248AA137591B532B573F41732216B12 +685CB4B612B782E010644CB813A31AC4A25038A17FA0872E515BB2C119DEE59829927FBE20902D +18CF2F33E18DC0AC2108789FA1D1F61553184FC185A3BC3BA6985449149A08E4484F33EA950C18 +B0148B6DA2EF0E2F1BE218CBEDFD4A4E9A53235840A8E8DD1A757D8F48DE07C687E5F35EF237DB +EA582FFC92EAC5A8E4D9C1F048B037FDE46770B073B161333AD5E0DC09187DD0D9FF2CAFEFDCBD +00F3FF4642B63703F6B4CA2A479BE5145E3EA90359F4BE67F1EF0EC07F997A7A63797EAC98E3D0 +C64F1EBEC99C7C436EF655ACF76DE5201A5B3F5CF58F0116008DF241D370E616E8FF10BC551606 +F041FF641B4C8FA9274BC3FDE69602B2BD58D1428B119607AB28B30393C0BE4E33E5EE1059C9BC +1AC92B4AD1C7D1C71FB44429D8F8042F0A7ADEDE040F13D0C13F9BD92D3BE4E77E446DC8D57FCF +C704F6EB8D438EFA72F74835DC24E853B3B1178904F0484AED543B57FC8ABFFF4253AFA2C93C66 +C2144FF1777A1E3A40D1D023BCBE24557DAE5D76DAE6FC7063E11A5DD52B0060501E84AE0E66ED +7522828C15045CE72B548B59A3D7DFC3CF6779B4A6D4891B95CD4C6613C9390DD953FA58FE97D8 +A545177EC9EDB59770B4B67111A1FEA9E74A61B360D9C19100440F8A69386EC3878C732DA58580 +3A177AEFF85BFB5D112C37ADF7604BAB387F08243B2FEC24DAF9F95BB75A678DAA7AB277D933AC +0362E4DD5E6E4194DE873932EC10013B68CD0D1CF5298816E6B195372FAE49A5F9F722C30EDDBB +088E0F1F7D8A5D6386B8E3219125A8ED2A4D534761DEC9DA916FF875E13E309F2F2C925F28ED5E +B792A290F05B7732D217A1CF9577C0107889C456924AB91BFB728E4C4A0E70412DA721CA4B1A30 +189BE4414AEE3AB1943C0349ED437C91796EB8616D3CCBE148CD21B0DF7ED5720F18496100119C +2995490D7B60C994E93D874AB352A813604AA9A83D9388F758B7F479F9F6EFDBA983FA6DA07E7D +4F80E64E68634D9D811F3A0088BA46040577B89C7E147CF96C4A999CA1899799FA56F401645A97 +DFF68155332EE3F23F3865B6DE715F1AB687A696878C9821E029E3D867BDC50322A0C90081E3B4 +3BA1E889C277DEDA5ECB0CBE16F8FD562B82F22DA851CA5AC51EF3051382E9706A2F6F14CE6897 +4292ECA605ACCBAB5071ED68BB05BDDE20C04E0007A8EF46D69FA79540C53E34C29F3CB68E9329 +8472F6D89EF77A28A18B334278836F65E88255F1FD3A3D031A22BBC607E7BDEB1D00AF60D5E024 +7E971B8965728CB1CAD6B5853F4F66448031312AFF8E56B01BB8D50F3A1060A18ADB1FA8F84C69 +399BE117B98430CF63288BA1950ABE0CEC051B66A7EBCC7A3FC793589A4C52EDBD1A71ABE49916 +10496FC6C346C376D3B061B00BE7B4A659D21A2C0FFD3FBEE485EDB7BEE599E5248DC5FCD89632 +61BE192134BFF9C9709E76A567A0F7B5773870EEBE07E3630175BFD8C5520B2AAF6DD2D7C3FAEF +2E3F52318A7AD6E05847D76ED22D021BFDAAB041B16F2AE08FF86DE08FD998D61DE2D0EA477E46 +6E963EE5EB69F69E30113F0D65683C37CDA865CF92EC5FFA54DBB6798738D38DD7898BC7C26AF6 +939EFF47B1A3DEE6B5E38505EE05A0F671EF8917A434D92EBDD8F6820ED3A2F24199D47745D393 +9259A5D856E1AA9EBA0292EEFAFF75F709ADCDA0D6453C3550DB28BFA22549BD2A282E8B9F2367 +FCF20AACF9E7B725D0ED0498695F3A2DD76389BE8A99B603CFB0FEE3C5642BD02670108226BA9B +A90B90B1D660C552307E3D388661A20C5F42C3CFF5D0E0F6DA69792E8FB4C83AB821D0F7D80F23 +93BCAACBBE56E8095466F7BF8B0504B72734DEF119DC32DD63F1BCA3A66A5F6DB5BC221F4927C2 +B08601F89D71E754481CD1B3B8E5EC8E9A22F5AD8CF45039FB8912A2E4EBC638743D7614BCB41A +49D162291E70BD656EF7F54BCA72BFC633984F1B15B4145F13D08B255B77A357C15B8A5DB04C3A +95827DAD0B0A302577C12F66389E4E40040EB52AD36552A592C47614A9035E7CDC4BDA55645F8F +72F10287EB7682F17034B836B44F111B786B8A6A47023EC1C950A4B0636C28E1753781C9C0B206 +5DE58A47D2E7B1AD71D8DBD36E72DE625B5F52B9DB0F9679FC4B61005A112E9AA717504C71CC0F +F50CE8E96DFE3AF6613CD4A3B4645ECC5F495E3DFBC1EC17575457EF39A0D4709221F2F1E14FAD +ACF7FA5CCF662DD341477170FB291B706D76CE78C3CC90CD36A45BD04704DFB2B251CD9B1B69E6 +B9DB3E9739DE8B2CD9DE63E61ABCB8581AD13493468EE995EE668DBE6AF6809F9529595D67DA56 +DC7335876F36499EBB7226FDB9876A7D0D43159E77F0AE36B55033A11156C3F757FBBA38177D24 +88EFD1BD9D8F69ABDD365989CEFD521F60BC9005D8C40942B43FC6DB8088842BE8A7B567420A80 +9AC76E7BA77D5EFC8D9A2FCDD1A565EB580207A250621E27E51685A0C650323B4D2101810F6C89 +E5D312BAEDAD3097F87C6064BA138681D3192C219ADA66AD2B0C679C8B00078597B2DE46F5A040 +91F8C34813C07AC64B2F5FBF0EF52B16AA1EE9B9ADE71108DC9D47D587585A933CAA161CE586AC +E30BA582A5CE8728991B10AE2012C2291B7DCEAF72E0299FF49F5ED495773656908F04F697ADF9 +32AA61E6D90A87BB0F0311AF737E9F72C501CF1AB4DDF4392FB9F3E71F859D45F32EDF329F4856 +C12ED2DB6FA3631B3731D5FB2DB79E193BB8BE75B85722E6CD85C35C05C2998BC6B854BFF76A39 +B1A51ABD3304ED453AA413E6F6329B651FD13C0751886DE4553E0B79441FFECB81839626868715 +0DF0FBBD53F7861647CAC9C633B9FF63BCB644D124F2420A7FE6EE7EFED293C9D53983617F2500 +6CDF86C74694A20569BBC5DE7616333432C0FD525029E612858F5BF27D1FE06931A5AD37675162 +2AE14BA10E2702CB896CC5A5164A287AE3771036AB2EC7F50B20576E73C151580E0D0884277FBE +9D2FBC52DDC0EC22A07138C692108A6C637ACA40D1881027E23BECFF6C54A50DAF7A79B5CB4BDF +AE35CD587F46B14B3A89A50487F8A6E20EE48099B44F459E48D65FB393D2874E4BF7544FC325F5 +B04FDFC0ABF2D6B8B6870A617D344AE093C4412007061670E6913B5581A0EE53B3D8C2D75E9560 +101D4C217EC44BE71F866F0F40D1DC7296ED313ECBFF60CA3A05D45E51E32D9E75ED31F1905DC0 +4F4AF2A29600172249D0B8B5B42D99A546A9C45704A35711637ABD7A64BF4D417564ED0BBBC7F2 +093F6C7F87A770F6B6A655DCBC13FB4CC24FAEC848549CE2415301BF6BF234405946330E2964AF +A37702223D1466A780720F39FE966AC1023866246F7E25BE2A1E0C009708DB2724E13770A8817D +6F27A095BED4C33648173F0DD8C627F405ABD3CA636EF8A9E77CC67D20E51721CA655704BFEC27 +564A69E6193E5E3AB1814FBD3BE29D72836BF85C85F4555FDF3908E6BED58E0927BA45AD4434F8 +D15C510FA5CD1311F7DBB20CAACE0D88535C58309CC82CA5E6ABA2E0DCC4503149E52572A0F8C6 +7ECE6B8145C85E5F211F341AC1450EEF4D1102CA184DABD5CF00049F7BE76FA793893F2873A237 +FEFE245F059AC85956B5A603DB8871BCF4DF3665364525E7B539A6A4F2C59473908121FEA5DA8F +F5E4A4FBAE0C602130400E1D9D1185703F20895806C2DFE6E47408347CAEF151C730783FB6BA38 +9EDEA18F865240ED604D0B6F5850CD18FEB63AD0A3ED46A933DE64C9571C7F15393AA81577A0BA +6A227ACA16DB43307E76C10FC630E6550079E7E5609FACF8DD84376AC186DE2E1CF84847C4E2D8 +C58385EFCA099E81B6435D8DFA6775BFD76C527DA6CE32B6326944FB6970D2787190CB0572AB6C +531EA63DD1F6BD5F7732CC7BC7751DB30874EBD006978CBDE960BFBBD8C2D115C26E7CCBA2C802 +131AAABC284699B18989BE8D548F30389BB0DED8FC122A1433EA61D074415882143D865E28A9D7 +8E59E47EC5EF1E2C5151279BFF1D77ACAB907F7DE9514A71B21C129480FE708B9AEA442EB1DDC5 +59574095F57BB3750DA4521BD298A19CBABAC650FEA7D9DDD40DFA7999D0CC79DCACD517E391E9 +2EC65FE3A64CB5BDE1A203E53D73C994D53215EDA4EF8BD06658AA94EDE4DB65719A0903035679 +B7E08BFA7C40E9AFC3ECC0A243C79D920B2F87C75430F2490362FAF9FF23E3880E7ADA9F3DB155 +6E00470C2FBB131F539600D21238CACD785964F533C80A39605C9AAFA6438B11F72D9148455E9D +88A43178089337070A47297BE223B93CA175DAC0EA3CACA4A9BB07954449A1F9A8F5DC084602A6 +2DB0D098D3EB9D967CEC1B247134B47DC120C03B66FD26FE2647C48433BB994310137C95B02FD9 +54B450FF00B194F0C5A0A8623B1101B5F32589CE81BB1EE3045F4C78AD26A9C5868AFF70DF6179 +F2A72599892518A45C54689AFDD92A5E21F47CFF3AA8636F82B33D9716DE11C3297C403B5E2708 +D9AAA7DADDB484F6719DB1A07F42C0BF6532352BBB529478F0F08AA86E554A2C8ACB4D261C0358 +CDC56FB9FB160F9CE9C7DDD0CDEAACD1FC38D9066AA1B50E26079452FA515EBB70F3F5EFE3DBE9 +791161BC643D1BB3147C9A0B0563EA94F930201780DC3E97164C369C62D75F4BA3FCB116215771 +0C7B87C4A42BAD8EE7AD49877F9AB41BBE69730A4FA1F83F4DF48F40AA6E8891D61F1E2F5B5AB7 +6E85BCDB7DB8A8D7F3E1C5628A51246896D923DE53B1B297CC8E37E0C46A6B42F616CFCF17B74E +DDA896D6075C4D60166F05F30DE0CF48A3BA092A0D2A694D01457C46089B7F573CA6A7499BDE06 +098699CF1F28CF849D2716140669C98949A551A227BDDB5594F205BFB0F0379CCDC1B53472C335 +7834C37292EF98DF1A5B42F2E8EC82381AEBFF1CD435499D35A59EB295CF563A574FEB6F8CFD09 +D9C2E2138F486226EF089654BA218706E643BCA601DA71B7A2670A15B25523D7925D1E7BEC264B +9D5D47F30A9D36CEE25E5CBE2DB3D6E1566AE8067DA2718ACC991B618578F490DFB3B2F9F2E482 +3CC80AB2B8BF562A6E5212A2A2F2604C0894D1DBE14FE9D7222E7F3AFD49D5B2344BB34CCB0007 +0246A8A3A04DB4866BD9823E0C21C8C226BCBAEB92372AB547B8FCFAAF03AEDD70D2207840D6DD +0F833F8C19DB2CA2BA4F271712E2C617E84F34CC15078F9A8972E17B8CDDB1D059C53F7E34F975 +1DD035E00F744D2EE8178B33B6E684E6D55186C9F2FE95F9964FB13CB7D83968F06BA14A62BB43 +18A5830514BC532CE55995E1CD3C939ABAB0D211B1BFA806A353E325A73BF75601E817265F6B08 +A43BCD7AE47648436A1B5285823F234601924C473B761B1C057D4C174BA653D5B0E7186B99577C +2F353E7AF1CC395EAE45B1595CA37FF9328AC2EFA8560952054F76A72D7CD91AA018B85EE553AA +532C2BCBCD412F349DFF5C37A1339AAD0F4957DCD5EC6833060E93914447483B2A2D9041621980 +83838093C798878E5D558F7B51A9626F982115EEDC2039E3C583F264EAB8321AB228868F221E8F +4F9EFE1E760903FE51F98AB321D1347CFF719F4EC83B91E010961CA4F26B7BB7D4C769FD636A4A +1931EBB2668FD9FD1DADBDB6DC61AAD03C0077AAA035608BB2F6855593CDD133AC28523C100D99 +C98A26C29C0A610AA270C03375AC0B9E7F7F265612B34C4DA3EE925B6BC8A98257986AD2AB4BAB +B31D5E387984D102043BCD2F908573DF0D5BA1C1A59FBF2411A820DA0A6E69D1C19096580701B6 +D8E814BFFC91F8068DE5D1A8C601010A53393AE554E003AE1592FA5FE0609961DCEF7D944F5857 +64F66C20281424DC4BDED24291DEB386AE9C3DB43133E91401F528017AFAA530EB2736D3B6CE7B +CB1E0C5A6DD5690AEF3465BA0836D2A68D6F3C5958843F4299B8B2728116952F62815C71B483F7 +631338CE3FD626CC22C9256AC95D88B2F4659864B022A0BA75127BD9F4876E0251A2E707FA37E4 +D5D5AEAA0EEDB18F5584B9FFDC9386C46D1D19B0419EDD812FB9FD83D531248CD1F6A4DB702135 +9C13D1629EB05CEB121CDA5944020CAF186AF94EEE6EFF48023EDFE205E749942482DE061BC86F +58FB8289435ECE461AB84B09D342138561C2B4B2496022DD57C8253CE557FCEE1905C16A01F5B8 +BA4E7F7D5006D434CF962ECE76E5C269A7243C826C0B7CCB5CB36088AA99BF3F3A7377A76779B6 +9ECEA4A83BD4713D12BF424373B399EC0A99CF5D8AF7D5A86A390A80AEA33CBBB202E0A8BBB72B +1D685B2ED32EBA11840D0C9CE80F61BF2228924DC196B9C40F81D124044BE6DF12564AA1EBF652 +41AF0DAEA563735BA4E8151F3C9820273E79DD4E10E5989BD0F291DA773C3DAC91FDBBFF6EDE1A +5D5FAC03DBABB5C2E97BFEECC08B2701C72ED14C9CA5040B9FC61A08800C5137DC617398405004 +BC3FE46672BBE3342CEB1F9750CD7F4E057E098ACFA0A441C460886FD630EBF90A327DCC2E2635 +9DF000FD24E56CC30E31BBAF1391B89504712D09C867D7E68A965E57F854507D7294C9671F38FA +9B768EAAD52137CEA03A35C82BCCFAE056DFC1214ED21EC9F5DD4555C642C2FF167EEA4EA07CF6 +A97BB9042097B1AFBFB6FE69E09C2C419E6AC38372B92590ACD39A83C84EF9AA7DF861950F5354 +046E90AF64F28B6D38CE89D602CEF86B1A47DE38E31AB242864D7BAC0EE07878CC2F30A23FFE05 +B055E4EB475BE2035B6F3FE1573FFDE9A7960CE3180AD3FBDA2BA62215BD4C964DF7FA9B7D8A0F +B32A8C36B1678E7297212BA6B5B72B1B0B9ED8C5F9390984240B3C77A137D4EE6ABFD66FD2BDFD +57CD46185487419C70C2754008A24C064D506D8FEE86DC8FA6B5AED30C3662766B8E4C7A0E205B +EF87BFB1DDF81B236AD601F4C1B25DB98B211C1BD85BB8026F6EF5EB14901240787EB10779A7DF +C70E02E2066E516BE60C726BA4E0CAE1C327A762BD30800C7F584E2796AB6A0E80AC5500498962 +52B1AE178A2FD57E0A72758E794E455E1C78696634C09077DBE2233BB4FE9FD3C428506105F32A +68A9DE914C10D7D3562F0E70C12963E7FA5EAA2AC08A384995139D4EFF7AC6A1425929DA25DA7E +11E40FA431C268CC157D3A2E7420923D546B22C8CA59ACE87633D5D6FB804A1569BAE93C004668 +A1EEE0DE42DD0A78FEA435A7D9C84A95952F78E626AABCCFF3752171730177C9AC44378EA69012 +2F1364640C4F200D885A85737080FB67E7D1BE9614D4A5A2F538C137E92FFD914CF587F03084ED +745B868102E34FB9BC2380012264F1DE610B218B84448BCDAEA37C9627A6F8B94406D069BDE191 +1E23A4AF49D64233A965F0253ED2071E61FD937A1B1B501A43021C580EDF1A1E92D27ACE0605D7 +3A868177423EBB55F178963EA9A4FF3F9F11DC1F4F938E36B04DBEC953F585A9180DF530906CDD +046D5758F792BF3AEC670EFC402596BAF8F4A3052B9C586A3E17302922D66E6FFD813480D83D4F +7245224718D31E2006A72DBBB1CE84901F69F07C5EF3554CB22A979BEDDA37E0B2E635707937F4 +526896CA654964ADFE8CEAEB0DC5AC4A039B7C4C641CE8C8D9908E9BE1BD78C77E272F9811895E +4F8DCF94CBC0B826AFE5C1692937737713CA4F7A5FB901FD7DB797B0DD9C6EA4F82FEE8E843C0D +799B552E44193298AFEE0BBBE7CA2F6759C891331B5C97AD2DFB0E2CC1BF99589B7E4619A715F8 +AB5C88BDAA1032D90B4CC5A2B4CEE7470E56E86D4B58F74CBF8D519739BE55381B75B3C8FF1F39 +45D5669B0C9F068551C7CF0F5C227F4401EB8FDC9105233154943A10C479AC9826D6366B03A775 +2CA00488AA04CDAF8B1E0DF8CBACB678A26415414D1F15D0F46FDC5A379D5EFC53DB57CD66AC73 +D274626739D9260F078EAA529693B112392FC5DC3F025DCCE34858856D61A86355F8A74427B073 +3B6AC1C2A32B1D3FFD6402798AA093391253CC3D65595148994485CD6A74271FE71093552BD0E0 +6E4BD8A55685FF784C530D186B923AEFE16250F3330789BF632F9A1AE789ECD4F8DD6055C3E7E5 +40F0193CA768EE69C37B8E51C4CEC1D1A7B12ECF6F65DA9EADC0B3B77D22084CA3E48CF0BB2E48 +37DA5D58F4F2795BFF4F62C2F520AE173A098E6F1E5ADCBD2BB3A1D26363F8F645B809A8AD40B7 +EA90DE4A9A26BE11FA203A55B144161881665D6D1D74263AB371C31FC70F9D8AFD287C0B87BD65 +DE2B3DA8E13669ABF4501ACE58D9CA150F30B23388AE9BFD053976B223E9B37D226200AF4D7697 +840FFA9EBC087A72EBB45D3D1FB5EA3E3E882BEB4F9B702DCF69DA879D72BEF2377FAB6094314A +0673364D4165950458321F9190989C00595C4AB4AE76C246D26B088F29965200103D17C6104BB6 +E95802B4068C0D24F610532AAA2267D6A36183A5CDAB42140ECE4E0A8EDAFAB4BDF8EC6D706CE0 +562235124F1564DF380549FD931F3FF4616F24E9FEDFB3C757570E60D56D1F3568E575A35A9E5A +F59CA70D9D0CF142A3F50A396807EBCD83E58AF06A4EA165730CDDA6E363B2B1F0B060645782F3 +70E717D38A3BF1552AB327AE0F9A155E15925A64D0AE25D00C5FF977BF824955926D8CD2072C8E +41591597E6907300DEB999F06449CF393A8C0A04EC6A9430BDA18F680E6B9CE7A438320224C47C +FF64783FFF47F55CFD836B93163BE2C4D9E16C0D38E0249FB1AF2E6D951C89302C7163031AB84A +F4A2ABD01EF9AE342F5284390AE12EEB1FFFD93B281162F01AC4C4FE90A4E5A53D27802A647496 +94138C6D66079312FC04FCA387A5939556C12130FB04FB892EEC36C7470EEEC2739378F96B6392 +2668A33A7F868518F380DC0E91CE2C90484DA50B6954FD6AE5B7A10578932220D075042D762CEE +4AEEE034A4637CDBF7298069DD2FE8D74265ABD5E4BCEAB81425516A38442053CD3AF67E80A50A +E9213D7B4AC2C62E22A73DF69F8BD5E0C6AC8C688DA644EF6E20210919ADD9D69FDB4D5DA26B06 +10E8DB9748BA445FF931E3146E5937EBADE4C7FC61303004AC549C1900F5CF8E1AB0D63F13CD7C +5EB22E21E9FFC31AEDDCEAEB76CB869253111EF1CFB6D8162DA3E59D77F44000B96386C046861D +B1FA14BCB2C07B5B373312468AD8D73BB483429A22A27BBB62FD087A0F8FBBE23CE21F3F49EDE5 +F0A329993AD337C393F1332BD534750579A3E72D194B04EBC430594D4E181AF8FA60618E1502F9 +3172E26B55E5AAE989BBCC48374E8C6906A34BFCE114C2B2B4ACEF9BD7F8CD81A44F855F15CA88 +BE8A56AD1BF77EFAA5BC81C97B8F29F878F9091D651D5903E3F60D25EA1D97B6025FDBE181246F +05262E430FD57ADE69286353EDCB572069E25BCA99F3FE8744ED8297D933BD7B5F5687BC5DF1FB +584B8207EEDB38FC95BC6036342B012CDBDCE4F565B6D6DAE2EDA1B4F40B054DE50043D7AC9C3A +C0DD32F1AC2D38D0230231C17D2EA583F5740A47CCFD0FAB920FE1A49914C663D8CCAA9B1C0672 +055483B762DFF0493E0D46643BA4458DAF364512A3C72ED1AF38DD00FFE18592E96DF318B7C96A +2FE3543688CF50562159576FC9D051B6BFCD32A80FDD537F2A88DD9061CCBF832819F09570308A +10065010DB72AE096D02A61092961094C1E383712FBBB58FB322ABCD0CFE77B98D9C584AD5C9DF +53EDB81949D310679E2D28A2D8B347434BF71445EB9F9F1A2C61B6BC16EEC4C1522AE46C5E9984 +1206FFEBC27388D4952FE629644F6AB7733C457CF939C324DF0C4FFBC5E7BECF655B1F09670D17 +421CFE6C9A0FF4C4D7342E8CA177A602E7FB93DCD456151A8208C332541869298A0EA29A787931 +906B0EF099CA32F975496AB342130F34C92CC5A863029E030B66D3626C88F4887CF5A8A92AA750 +E5660AD03EA55D69EDF466D4AEE45067D5496FF91F26BCDA766476CFDE111F227FC7ACF6FBE1F3 +22038A92031650E9B813AF16A37B4095F039DF57791D3F8242C2C409B37D045001C74BB740E2BA +0D29CE658C65510AFB0D899C651DFC01752F9425D5B152436B04D5DF36DF03F11E141FE994BB0C +B0B7E37D5ED5981FF91DC25335A480ACDB25C48C20EE40F66F5B482A626A4D0DD2689D862F302C +E5421DED7429235723092734BC73D00F56419927120414CF8659CD1F964128BB6FC105A7E090F1 +A2093CDB77BD1C04C723E0F1C5F60BE70AAE29BF0713F86C58DE426819D22390DC1D985F2FF86C +08EF83F2E9AFB3A62EF4958945FE270950418D0B26206545CCD081E4DD18C9661BC8CBB4C2AD15 +1F71D6BDFD16F8FC0E239DA5D19E8C2DC980C367B7EA589A5278901D913600A2AE6728589CA00C +44957816D98775D86D9F11C086A95601730EC4DAB3306ACAA840599A785E4AEC4C0B45D14800C8 +0EA12E04F69836CA05D79543A7D7043DDE89BD573A8A937E27DDB89267C30731E20402901F9042 +675860C2C1EEA408F35561E73301F5DD52591A59FFC7684A1FB9228A3CCD6D321FBAFD05718411 +DCDC2ABB7A588C8FB14D916993B5FBC01409652E5818F2211C86FC21FE154B464206B642B12564 +A6F4A8F4FD5ABB6F48E959FD1BDB8C413B2D6E12EE5286A805117A97E3829DC83F431AAE03A6A9 +3C97DD6640E4EAE56AFB44C1892D3E531FBBC7C1ECEE90583A72F6CFD618CC01E0DE8733D38568 +2600AF19FA2E08FF0C29EAFBE912C289E57F0C315AE24445F1A5AB2F492FA7A38A4886FC0035A2 +7E793BEA877210F272D16771C90B5BD86267F889D3A25546DA863A100005511CED9C95A1E2AACE +E762E6501DF03F146719D3581365260811105609E56239B54D7AD1F0AAB6C7C168C7DCCF3CB30D +06080F32E815CFE2784FAAC58AEAE4F22D72CFCA289BE03F9B2DFD27FB1E2D27572A7400303398 +47AD06137695C113E8C2DFC0BAB9A3ACD2A856D9E7927FEAAE009B6F0CB84F76A488CFD5205AF1 +DC4313B6E4179B1370695509FEE3E64A9AC425A043E434ADED0E5985B293669D09968D0AA231E1 +B2F617CDE5DF2A681B2054EC1FE239E95EE1A11823F73713F9CD4AF03E13A78C2442B6AF16360B +01E8CE7DAD91717567BEAC799962F00A3509E24E4C4882124006B252F9A4C88071629A9C2B7104 +6483958A3D0FEC7F0A48FFD5E98F3C49B0FF8BFDF5824DA3605980B4D72A8902ABB0E0F52636A1 +06605CB90404E57B49596690E4B0591751D5630148B140AD0D2EA236764B131CE42AC418D3EA2E +2DFD09FF17D979E54C6194DEE059501718A14F86ADE2E231842ABAB8A6634C0C31C3C125048D6A +0E96A2BD785D51591B79E2022D49F2EC9BD874FC2FD52A7DCF644F124215C7B9D3DBE9919BF9D2 +138F0C75AC93F48C7F125973BBC8EEEE34502A62986FB8CAAA8242E499A85E43387264D3982838 +791590583BC2D74F1D1E3A4F4723457077D8E538BEB749D35F44F37B86A26C90951CD56A0E5086 +74E42A1EC33FA88A47C248B2D9783D4D788082B89368D73F2EA3131A0C78DF9CB707A0F65F3AC9 +3CC6E81866BBA0D87902E04CB3DDE252CF76344C2A2EE70C9260BA8C4DEA508D5B267A9E852C75 +79C062478C9F224D6CD544047E6643753F6B9D387EFF69E37E8EB61E6C50BF6CC93845070FAA36 +72EFFDF8F0EFC7EEE9D42594D1786BC7F3280FCADE5027ABFDB83E6E8A72C457BD6B2739D263F3 +27C5E0BD130514D98A5FC840558E85017D289816B13C0BA1FCC6ACEB5DDCA6B7F4EE30D1D7E617 +3D9B14A16F330E9D32BE3CE1B92F18D2878A2C3CCD52B2103B082454C60724EC75B08D187E01D9 +EE3286D69B9EAD4D8D35AA8BAE3639B7E36556E1BC86143C1BABD3D05B4CFBD918C4171B3CDA77 +A1C49679016AB674530416738945967896E405A3A7A451F43B14E7BB3BED0CE014188779610F21 +E869A79245AEEDF2D01CFBEA80B9295AF35A7085E4019F499820420BC15E5D3D8450AC979E4499 +A894699D154648A74C6443EA53C851E67F80721930FE61C346207F2715F3E20418A9F58E4C12CE +9ADFE14DE865DB21085783B011BF1CCB2C3335A55B61DF50486A9465BA7BA85373E10F7AC3202C +15806C98F7A8215A89DA4424D4B16A5E352AFFA05A58E5A6B0ACED834D87E7EACDEDD65CBF741C +9EBEFDB86AC1975BB61AE096239597DD08156D26E218A61C1B69C71953447BB7CA6C055F2637E0 +B2E320C1EDD20B7B4E43DEB395DA221CC17F237B81098232567F591977CBAC8678870E1A1850D5 +C019E56069F11037B2C983E61BDB9778C50BBC9FFC6CC1CACAEB4FD3B4CC131BEEDB3C486D68E0 +69303A06E1653DF35D6421F93F05DFE32BB953E0EF723CAFBED7DD829B2D469CDC9F6FC1FB6F89 +4BBD9785FB48F1A89DC2E1208192BB44E7F3DE2D632830894A57B950C7112D76AE978454E0D666 +3F97E8FC2225293977FB65D46A5A64B2BD75DD681D4B5AA39202CE5E6846B872482765F1086FE4 +6200918A34A9C0375CA555FF25C70F075530965858942F0BEBC9CCDFA2515D198479BCE058BC5A +98E014F017D5239CFA21C5801B13619642DB5DD9A2A16FAF1C7348135BC59E31450FE5824201C3 +99E397C49DFAF1E8ED16054FE187A136E5A838976A48A1AD1AFF50776E953287C5C026CF2070AB +8DF13E926E668353197C0DAAFB3BCD64D391E8DA10AA80C798A914D219D0AC05A00D4FED72885F +408293D9E9D952E47CB8CA81F3797350D50EC0B74E526825DABD3D7DBDFBAF7AF4781D11C82D54 +05AA18F1BD75F7FC6C2B135F34EB3B29599B7600912F23680F5190B6D9B06D619B26F1D086D122 +51305AABC2BF2282FAEE69718201523BC2877A640EF5FE8A68E1358BC8C0A185C304D9986A6E31 +FFFCCB726D2BA189FBCA9C699994DC51F65653BBFBE170C39203C4BCEA90E07FC0F45D0E788D45 +09948A4AEF90C62CB4D5126AA30D655A817288039460D3E8A0450B6F3860727224957DEACEBA94 +86994D34743A32EBDD7D0E20A3E318F5288B5AE38428D3071D5DA2D3D612F23617AC4CD5EE84BC +8BCF391C4AA0B721FA25AFE0705091FDC0ED96094B19CE0C8716F70EEC15579C95E4754C394895 +EBD7D83FA8B9DD8B7134E6989D3B51C47600F053EBC134795BAB7C2B7121698284E9313C442E65 +C1821476436FED31A80A8220F02B781A3D19BE6E483699F7E809B1AAA0FA13DABDE873C7DA491C +02499F9275DE49A900DC3D624FD28F4F1F88654CECDE505D7E3E449DABB1417FC03F3E0EF42F71 +0F952C7DA729B45BDAC3F766F512984FF02A178D289954D7FEEFDFD6571A8A36EC673504F0D737 +FD41CD8384B06842BC686EC6B4F3B47E4BA7532649FD57373EBA8FFAC961981C381F2B1C731709 +A9F210E7928F13185B3D0195965330D0F4DD1CD09E008DA25C067735261E4CC2C66D3FB1822E44 +7C2E3C15E815DEB88D2DE9390B179D4EDFEA55E78AB2B0CF12FEB75967D857A604075FD20ADDF2 +8BCF12C46347463A7BCFF3ED8ADF441ECB3F17F799B3ACDE848CCA5B920A2087EAED1302C2F000 +CB9396EB83598F891ACD25763F567BA9E5F3C4916C62D8DC5FB3EE188F40EABA66F51AD59F7256 +DC4977C9408808781A5B790AA26FE9E3EB1118D535A76E6445DC5EC4554A4C1A06FD082C8C1D4D +29B3CD4F77CFA9356E7F055EA5062151B272CB8A036DD5F891E4DE82FBC877D9816F4AC9EA007E +D58201808D17C5B7C0780161607EE88B6640780D23870D34892956B561B0C1910F3B1CC8261FC4 +17C49A520D7AEB3239B7DB86BC800FD1014AAAAE84DA78F2FABDA841E82F102913C89687FB94D4 +3112FFCFAD37D49D2532F9DC3506F54CEBF3D3D5AB4F32D96A801CDCEDC7D9002019EC48DFEFFD +62F7879D0C9FB2CEF3BFF219A397877377AA2B970ACAB8361CDDBC1F38C5F7D9397E2272751DA2 +CD98CC97479CEC135A2496048FD8050FFA680BAE058CA5264E738D1699826FB12A96A6D328CC03 +19F501CF5AAC51A62E6F587FB2DD98881D69FED686B64D92FFC5B1AC2C957EE5F86CC9E5BFAE3E +73E6507C5809A576A59268341EB5E3F863A69F0C805A98696A5D764E714C478B544F0095BCB352 +7D00C34A67EFE6D156EBA4AF22AD493F7EE841A8489818047663C145DC04BEE4F472544C9A2018 +2147E184BFC894362E366A757B586FCF92248DDF8B29BEE94B4444400B1764EAEF6CC8110F1371 +D34CC38A939748CBE0226C110DB1C67EC241F07953B61C683642706930266E07309655962648F2 +5E981598930F3EE4EC0F75614F777742D6CC0AEE86D7D5111D11D5077297B5358425E660A296D8 +3832D37985D710E0F9EDA67875EDA4B75457A9573E3DFFE441029ABE0494EBCDC90C789186F0B2 +97F90ACA2D3BE84610AF07E347FB7694FA4E216A2386CBD1EBE70967A82014E8503E2E97AAC71D +60DAE00B786A95B8428F7726BA74BB3752F56894D4813D0434D0026F1703DCB3631D69082B5D74 +46AF8B5660688DD97DDB83540E2A69D4F994FD94413CA5AB52325439224E0906128187180E42E9 +7324CC2AEB60E5B327CA998AFA49854A59841C5C50E4159242BEC79D2E5BDF9373CCC510B3FC38 +204BB02BF88DF702FE5F2CD11123C390C6EEA79F7F1C4A294A9137926957D70C47D7EED1047079 +ECCD09C2BDB154A95A4F5BFC6CB708409E3E1A0DDB421F3E26BDBC0126212425D68F3218DA415C +0B03792A561B6B6E02D84C83534866A8B4397D485FA947E66839BA118BE6475A8EF384E597B99A +C24B83ABC9890BDBC7946F07C43535A9C0C53C6BBEBD25E85D7DBF87394FDAE324BD1CB4288B89 +31D3BF747EB89B356B3A11F07585EFA4E4349A40B409AE651D68E611122D21D9DE3425EA845568 +43A0E9D638B1C24E55992D6EB5D7A36A8035B9AAF0D8D71FAB9A3C20BFE5FC381E6E353C8529AD +44920C2B8A1D4DCC09FA6DDAC7C540D24FB55D8EB38C883431FF49DC1DA22445A6CB438E6DED85 +699290D3EEF81BCBA53D977C0B32B2E478CEEB7126FA359D4EA3C8EF1D0F6C3AF075B2E94FCD5A +ACD0531FF179735D94672A55C1D1FFC3842BB13CCC3E4C81B706A6830A1E502E954BA2F6D57CB7 +777CAE7EBE73ED1FEFB88F4E27DE15A052185CF9DEEEE665F38703AA7AF90B0971628BDF8BB1FB +21A30C3CAF7495425150F6E53A58F11BB6CDF949066CAC1352B7460D33FDB76287A7C55C9123AE +5A2773E720509A9F3D391553BED505C28E8A68EAB0C4231BA858934FDD38C725D340F21FE656D0 +002F6571A99FCD9AF5150DA9B55D796F9F30F4D10A7E82DF3B55462BE4EEE3F22D484275D60F04 +D3B1C83AAC019C0C46B68A1A3357A65A22A36CF319F53637DA1AEC7C0AA003E75491C0CA77BB7A +DD734E0BB7AA3A30ED0E228080FF71B952DD328D938638738697F06831826400DB73D6E2B260FF +00EB6130B3868D3C204EFB65A2F00CF5BB2CE4B464E5EED55E7CE33A1702D272069C2B291212AE +0F7A0D3BB7B82DC5FF2565E40B0963FFB9ABDE6DFE0A5EE3BBA96A3CD74D4E9035849C7ED677F6 +84319FBEBA5A5B1B2B9230994B2EB643B9F395096B46A7BDE84230662B72077FC96409F1B237BE +CF8CD53F27F690B101799B9FEC896A52609FB368DDEDF466AB17CED2E756D2A9026D4D26E303A2 +CA619F746C281A9A6AEA0E08CD0D1A7AD1F9CF7C6EC91A35AFCD6A1F59815A702558305398B0A1 +4A5AD71B085B9B10325C732D229A9C98D8AB35E99B31CCC4DB44852E5BA6DCBE8F759F54B3C10C +BC761C1E576A38A788BF5CF46D68F8427E2ADB16E23A8744039F78F637BEC3D8F6D239185E9381 +82475AC85FB8112CA4806D13455EE4A903CE5C7C7D5A8BF0949D70740ED6EFD38866D4645028C0 +5F16836C9EE77E775626BD67AD61EF9F6D7B72680564715641E460E09A741F30777FF1CAFC8B43 +664F96D15E4F218B04D462C8D8AA91B55765927B41CCF8B79F89D4C95FE5A6B55E943516C8C674 +0F43D3681FF8962A0ABC7BAC47B06DA27FE8B1FBA3039595F52CA33845C1A7966308C006D6F828 +108603B42229012F5366B77C654AA8CF6980FAA68A1796A1C9DD3C8C01D144CE40C669634B2FF2 +946907DF407A2C5F577D3785623CAEA75F5D18E2B3B91D595CE8BAC2EC742ED54F17D4F912E115 +4A6866A5E3DD49EE48B407FAF34441502C6AAEE95DC123EA266C27F6924A44263AD1238FBC0C88 +22114FFD6FC5A178F22D993639DFDE16B1652881F7A015AC88722193BFDF10DC1C372916234F11 +591016A8B5C2055934EF10C079DC83BBCF396DD19C7E9E112F94A871ACCE631683A8C886E4E10F +218A7AD93B0F4F83B8418C0984EC0EFC3ACE47E7583F801D1B514FE3FCB6D4ABE5B6C3783F3026 +502212E265243963F6F57656ED205CEC6A8881F37B1FCFD2BBFC09D1608CA43EEE74229369A215 +1A916D40B2650E823BFAFFB9338BB43369CD38F0A351E320DB42BD62A6B1A53E0AF4E0BA92DA1B +D5DCE62194D041500173E02835DC3C5A43467258A4340C1B6DB48B612D54110D70FBC038E947F1 +80ECCB983D2204567BC2E256C6AE46CE9C13E6B576E2C9FA5A00840A61D078C80C1C7405A6CB66 +BC23CBAF1C5CDDE62CD32A84D587BB2B3828B088C56831E6C073AA50AB4CF27FC74547554C491C +DAC152BF20AE1E14E31A7EB4C45A11DFBA32CC6B4D47488B950A43B12AB7DF7BFF07005FB64503 +D00EBB085706EF3AA04110C671306F763273E16BC75323AEE529DF5EED8CD07BED8A635376AA88 +602674B619B086C8B46339FCC077399CDE9F054D50AB2EDC80BC73DE4332CA8F8FF3D4A2B2D461 +3BD0B29C7DF001FD3B7CBB4666DA2175252E7E55910DFE6706CF744CB7C24CCE4CFD4F35D0E0DB +FA1C336240743562FD040687693DC43397B012390833FF786416BE97C2B8E16897C3EF5765C988 +7CA6DD1A3A5B2CD07507AD852A7D694F2FB9E1B8EF8D0581EE6C80094FFD048A1623048C4D4DAC +AEC1303516A43F08736C003246885184E73D8C0312242C33F33C5FDD86B4B952F86B8008FAB05B +38C697BAD2F87115E88C90B3F70E53BF6CF95E50A39FB028681746DA3431DA246E7423E8F400E5 +659141F09EA274219F1D99EEDC203B1D8B9696F66EE89643B6412ED2C3F41CB9385C30EA9332A4 +5CB359E2739612D7FCECA55C2BFDC4230E5CF89E7021F4220C22B6913F69ACC5F65D7374214EB5 +1EB691C53D0B1F590F458A4D4A385D7826659C77EA21504A7EFB22758ECA0497D059437D70CD94 +05DE2EA6BC506686D07434C6024273B49C009169E31F4B719429CBABC11473EB70F07DC2372D11 +BB2C146DFA378825C0F2857BBE54EFFFB74FEACEAF15ED6DA597FFDE9377697C0E472B7500B9C1 +6097BC50F38651D40CE96C50C9A6236860A8BF8F469F83162324B5296C50D430BD211D8BD0E4EF +0101D6F67DA8C348861E85B35A2A4992D6A4930AD1D26C6BC5CBB999F83C727D5CE551B98C9043 +D10A648D8FCD959C9D1F83812CDA60FFA8F8C3F88FE8536CC3FABAF59C5C174580B98D38971623 +6284CB20F900D8B793D37EF566A87963445862BA4EFA880102C87F608F0CE734212B0324FB2D2A +083AFC582CA20B744DC01BE3862057D746811E95687D06388705421C1B8DB69218A2A706D3CBA7 +8A449B344AF0F64DEBB4FEEAAD2C873A42B2A934F93C0BEF487B33DB2570723194651C204F1201 +56E09CEA13151E7E49703A3124DF500E780CBC62DF36502D2E6F5C57CFD1210850A2D35AA40A55 +603D3E56591E33E7722A282D6A8E1674495E12E348954B7CD0F4A4E4DAC080824795188D8A478B +243EC611CE5901A9BBEB76EB041AD162619EDF1D3D83ED07F1152401D2D5A03E6C784D6514EB89 +6ABA990FFAE09BF057B912A27DD2092CBF5157C904DA4B566114A37A7D9AD0C0D717EFB6C4AECF +EDA8D6971897E7D0FB1E685AE00CFA46F11B4820B31EE99098EAA2505E531BD1B07F41D550FEE1 +16F49073A12E482E9194C3C5D914AA944EB0A857AE2B5647A2C9519AABEE5ED6F356852C5F14DD +0852271FDDAA5F229AA7151D9ECFBC4861D5E89AB66747272FB6B8D49ED0709EEE054CD07BB917 +606BB005B6B2FA4B114536EB0708C08B5D7CCF46EC19038D93EC063DC3DBF39B25EB301B4CAED5 +05AC18AE74A0AE4494AE38736B19FC4E6B10227CB30940BF72A4704066D1D02626EF650C112A7F +8B8EF4074748BC08CB9DF80A0393793BED309D6DF2DE1F3D8765D992044122AB317749A3F96D1C +E8CC520555B4C2352A4FC4D92947B60F13B9D5B7A5B47AEF0363A31CD9D35DC0F34A051E369400 +D2AB68DA7BE1F1A374084B5522A6BF862579AC6F9F45D1F29E7CED5041DF262CEC4D529CCDF8A8 +3A18572D65E59582F8D75236897347892D9FD0DEA75BABD0C31AF5D690394B228E835EBC6A5F05 +AF40BBC6B35F8EB3C9F76AE440CB1A2E88A4F27510F67CBFC15DC29D82BF07796F6D8F793C34B5 +D308D8764E9EED3EDF5D328FB1955CDD0719BEC23077A5080A88E9C95C705AFCF13C85DC533B77 +6A15AE7DBC452BD2A75451CD7FE36C2B24B9044DFD9784D6B55D79BD164EDBDF735E6C486C9C9F +C5A3462212B66C2E8B3C1DC01357B02DFCB8AC883E7EC27F519001E5E8397D81BE41EBA7BEB413 +5A36C4E9DDD08D27C9A5B9AEF67090AC69F122DA5DF10A086ED8EA0C0A8D8060ABC76E7878AFD4 +7444B134EDA8D78E2271374C7510658B16A9C5C4833581BB7EF970F9A6A4F09B238EFE5A8B433E +A5162C9851F74F75EEBB1A4D57B0EA29FABFAF4D2D7D8AA8BC4132BCFC9F0EC7E841288BD234E0 +6F910BCB4456C7ADE4182C459D3D366E2CF72BC6A633E830DFD85900C3696A11D2C6B79A822880 +F3560DF7B51A37FC186C48BB55F1B91DFC8622D193C48438CADD95022B3269A389C2E60C9C2800 +82C096FDDA6DA3FE1BF8369F4FBB5AF739485B83BA055AEC9DB88C23DB6C5F751966D482434721 +91E85857517308281CB32C386755A1159B1ADD7181405CA3D686ACF18566BBE1860CC3D4DD979A +D6125C6A796D9C5B9B19D03E01DC7C0502F8F7E330A87F8AB8DCA128F914DBE36434DCA8B164DE +558C9F3A7B39C07135CDBAF5C6A6AA5B21972EE56521C7C21456BF9D462BD8EC6F838A006ED0A2 +84EB344C819791B014BCE095A6558B5294506EEFE6D51C935165FA4D0344498941A5E42116BD4E +C9B9F72F4AA2FF794981FA5C9F5FDE59F62427BF17BB7F0B2AE94786CA197383A6965214895558 +6540A4DC1071767E23310C3BD9877835098912B16EC2AC50EADF2035EB7A4BA2F48F028414ECBE +0352BD409792DC1B9780A10BEF8357130C201917FF4956437DCD2E35CD0B5629AA37EF7DBD6E9D +057CBE21442DB22F3B9CE9064289CC8A3882A6934C1C7C3542739E1D56848CDD2D03701578FEA9 +AE283D393AAFB58D5A93A16B5FEF33772AA47EBCD4A33B06A2CEC3B45C553B5A63B1A33EC16FEA +A152B1D248C207924A12FD27D871175591D93E23EF5108534FC75C455311EE8E3F2AB408A2FAAD +738DAB33BF98A3396CC6D5C3816B65E58D8EDC18C72CDB15540F6D62926F496FF4107A52154233 +FD73427D3C00C4455A67705300681ACD21931C665E9462BCC800D25A31A6BE61519FA3487E6721 +6BB21B579396CEB620B65FEE8FDC9CAB02CC5D5C8CFF9A284274A26F7C5BCEEC6834176F63A1A2 +7A674025A61FDA661584C04D5C80F4DAF73A5362F67FB8064D5079406EC0D115A79F292C893EC6 +0BC24FF533153275E178AEEE1D0C2C84D28D23DF028FD364FB2F9C13141098CAFF49C322A9D8AE +D0E5F195FDB307B0D27D89EA917346AA73BCC436120E711FD36092AD7CBBFEFEA3C6F371D0D29E +AA047229A12836CC4F3E1FE539338D4FA9E15E2CA242B768FB35A7E76756DC1EF247E49FD40438 +19F917F93DA4D40156E3AB93E5580B56BEBBC1899C2E3BB68CDC5B70642788FA475E1F0C71A532 +739F4EB3C85FFDAE230FE92143B8FF8DFC928F9F72B97701C2A5844BEA5D263FF3DFB11AF92B65 +E5846A68EC81F9EF7DDEE362121AAC5DF1B0C29C6C32247ECB52A9725F65BDCCFFD0EE535C8C77 +A02E44E274988827C05FF6C78112BA5AE29DD7AF086ACDEF0372B198E0303A257386315392DEC5 +7C0BBF78A04AA1FF28F927FF6B0AC8A76A22B56CA963B779E2081CF3925391C9027AB0C5533EAE +1B22843F0AC72C2964456B56D8BEED6A3C76D6A675488C43471401ED4502351451C1CA0A46E380 +D41E370D2BC703ED34B8682FAD0E9EA71E4A5CEF5890795E2B5B09FECC763FBB40B6B2E8D07383 +CDD0B084612AD2266A4083DCC3A159426D3420B81B1041C5EE4120C925C1A952EE6DFD759908E8 +E1CC882C12DEC431C4F66EC3B5F3CCAC728208F1F841E477A276ACA2F42AB5399F762B9C70E728 +39D284531908AC8EE939BD049BBBA6BAF1C536E40DDA2412FD9A6EECAC2600C49E10092E73B91B +670AE675217BA39A808ABB34E535F5CF9A202417CA625121DFD6F4434155BA437EA16D0B6B05CC +BB3B161785B3856136A5288C4D14F406361CEB32410BBC3252ED6497690D49A3A89C40A16F66AC +8F9D80411BCE174F5D57BC07968164BCA4AFF626B6F675BE9F438B461D2A35EE1C1F559096BB04 +2E174AACC03CE5C68667F8A59D2B2B7DEA85040EDF8F3175A14BA3596064EDC67058EAE7F60BEE +1759694129264973E259053A70FDFC27E708A8A1D40B451061101C6DEA814F7C9318067E561132 +B57DCB9C67F7DAB6C5FAFB9DF7B6B53D45B8D43F66469DE6831A40A5DA32A33D5FDF9A3F266A34 +6E4A2E9D52F68599DB0138C3B08436C0DBA0A553F6133672860345B77353BF9EFA3FCC80E49D8D +F84F85F1A99F23BF470A9314DA381370BEC348A37EE4517D3372D33E528F137A787CA9956E9BBC +C8446E71CFBDC6D92B241AEA8A62B77F40A630F5E72F623C18C9B499DCF511FF19C40E53768925 +8C9C933CACD974680F6E443BBF3CF00356A498C63A56F68843FE5BEF635A4A671874A33133D525 +E632A10F62A36120E5BB9C2216FE80DDAE94CB7540669FD0BC404D361BFD34EA879E50A44D4071 +949AFC3CB4A4E4181CC30DF9DF63A6A30B38EAFDF30158A1CB45F2E433FA4DC62763B6CEB411E2 +442124F95DF503C4FBAEEBAE7681532B9E5936716F6D585F51B9871321D5B7FA5BF4704B0A536E +78D00372CADBFA191E5E3CE0AEEACE1D6586E9D11A0FE37C9824977FF1E6F95019930510137ADC +C4A4F4C4ABDF76CBD32FB977534DB8F49EF673AC29C1A559A1EEC69F0EE5A42A24D20327CFCD0A +BC278473031C3F2CBB34BA6E424D990AEC6C756293821C5D439D4C8F54319C4BEF22EE740DE2E9 +3BDF51B15FAC6E469A01C1B5C5690D16F9754A8A3094E751FCE11000F991C566C7C1B8CBE772EC +80B2A751F829A4058A28110013AF4A3DF7DD7124DFF0F728A25EF78F78EF33A97373DE68D38DCF +D1E29CBF549011A71ED451B1E7EDA255A14975FF44F1CB448B71B09E82E8DD5EF75716A6E32620 +658D229108B8209287C2CAD6346F0E8BBF1EB99BFE8952C4080AFCB21F58DCDE2E73B02428D2DF +7B29C43DC1DF324A73F480685198F8006C996958AFFF6A55B459DB50FF2A33EF43E31923518FEC +28598D092D8205300026E04907332830823CDE60D062E0BA04CE7C801775012B4835AEA56FBA80 +21097BA760632CF097A0D4B94B5BDCBC2E61EFAECC791FD7202B00E678D6B76F891B918F63D494 +72BC7C5EEF4BAA30ECC71B5DF6315A71095F9E769DD0887C4314AEA236A8EADD9DB780411C0733 +7E337744BDA802DE4906C3F98E644C638E4C86D5F2A7B2C17DACB10DEFBEDF030A580AC847C0AA +56D4D4B30B513BBDC1105978412EC2C36DA5E4F1EACDAE3426DD48898DF1DF0B0BB91C3343B487 +14EDAC8BAA025AFD729DEB9FC96432DDC0D782D226726368B516E8F266855D7D02472D605AB245 +084B55FA61A0CAD04FCFA9623DDCBE109B2AFBB69955809E2989B5453793032D1EF7D7D8BD4E10 +1456DE181A8D7DA06EFE2644F184928270400D29EA969154136D1E810386835E2A3161A3074BDA +1DDA9B028910927B84B44C52DA2E3F0CC9033A1ED31743FF1D04D281DF1D62735083E0AABED00D +C0090B1453FA60E5D16AFB16A02DC028A418F357951710B45948D06CE7BDD0BECBF3BC2B9CE44B +6E47DE415A655F6D78DFC36995DF01D28BB52F750FE557FD2A82E36C7B6D9CEE9DE4326D69E261 +74FCF2D3F78C7F68EED0374D80929FBB08419C9D2D7F55D1AF8C3639DCADA1C7DFEFB7CC17D807 +3614A1084659277FF822BA6DABC3371D600A14120DADCE7A1F29257ADEA32DE6186D1E2FB54ED4 +B9BEC1F268B90656B224757015C35355841698967587305949A7158490FCE4F1BCCC2A83DA26D0 +F1D7A9912F8462722A58F5D0A7A4DB48F527B1AC5763E6B45A41830E1ADCB09E0F336CB97CF239 +9513DFE02BA8334B6A7EC74C0F3B0BCC61382B69D062304DF98B09F1E13291C97274CA134CFF86 +CC2A823BB8A1BEA31B8A25F843B15273D0F1BEB8C18B3A2E2027334A27B5EFC4CB0068C79E5CFB +AEE391D8BE2C4CA0F8A630710AB09C18C0DFEDE175ECAF12063631E9B25C6C9FBC3D49873002DE +6262BCEE73E4716DC30D610EE5402597F514903E5EEDD8A75E5A6FA117A21144AB5B338C1D4B35 +9210169EA0726B14D99E48834DB5D15691FD9095FBE699C46C7E6EF3790F6005C05561E053800A +B8E261C17CDF355646A1BF29414D666FAA5C1EC43903DD04678CD1B5097513C0C69EDCFA5D71F1 +D3E540EDD11D4B72ECA6C590A57A41EF5CDBB09DEB1FDD6C823E10EAB9E6B9EF02F4045696D615 +AF4E01796C2856F376F42940CFE098D303C741D0257EC3CBD7FF2D33ABAFE8DCEBFAE575ADDE66 +CAE813A0451E5825AD0234D045630711BBC3853D130544E0B0E787218107450078D6F380303DA4 +DE2A39A9A689AC4337D255477A7D0ECFB746E129F779D1F45F86F7F0E141923AD062E6FFC4134B +6B15B2811DDE5902AD397044466318B4356DACB9C6DF0CA786D3D81EAB52975D5C6E34D32B28CB +608D91A4833D5D35A777AB115290A4BFC8EBD24846736B0997FF9D5DC471AC673984AC8E8BA510 +95442EF37C5791C650C3A50A2907E0447A6513359D001FBF3EEB4720167AE69D2A6E2F8D068DCA +BDCF141A61A956AF4BE6DF3EA929843344F2E38951B9EE4D38D2E51A195842E61436C77E7D953C +AB3FB8144AFDC371B0DDE968AB88493C15585570F7DE881A1724C0CB6E8A3433E6E85320ADC362 +734A1C81C1EF9CEF1B863A803F96B5F1F61A05D61B9992E99BE5A52A58 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +%%BeginResource: font lsunr03 +%!PS-AdobeFont-1.1: LucidaSansUnicode03 0.9 +%%CreationDate: 1994 Jun 04 09:58:17 +% Lucida is a registered trademark of Bigelow & Holmes Inc. +% NOTE: This is a partial font in Adobe Type 1 format. +% The complete font in fully hinted ATM compatible form is available from Y&Y +% (508) 371-3286 USA, email: tech-help@YandY.com, http://www.YandY.com +11 dict begin +/FontInfo 9 dict dup begin +/version (0.9) readonly def +/Notice ((c) 1993 Bigelow & Holmes Inc. Pat. Des. 289,420. All rights reserved.) readonly def +/Notice ((c) 1994 Y&Y Inc. All rights reserved.) readonly def +/FullName (Lucida Sans Unicode 03) readonly def +/FamilyName (LucidaSansUnicode) readonly def +/Weight (Normal) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /LucidaSansUnicode03 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 148 /0394 put +dup 154 /039a put +dup 166 /03a6 put +dup 173 /03ad put +dup 177 /03b1 put +dup 178 /03b2 put +dup 180 /03b4 put +dup 181 /03b5 put +dup 183 /03b7 put +dup 186 /03ba put +dup 187 /03bb put +dup 188 /03bc put +dup 192 /03c0 put +dup 193 /03c1 put +dup 195 /03c3 put +dup 196 /03c4 put +dup 199 /03c7 put +dup 204 /03cc put +readonly def +/FontBBox{-615 -440 726 1024}readonly def +%/UniqueID 5054503 def +currentdict end +currentfile eexec +E98AC76D0B9811AF896A7D2786CFE5F8CE68EC0023DC2681A7AF04C897A42BE5FCFE91943239A1 +3AEB5296C6852464267094E08A45F9BE1C443CDAE11667C6CF7AB42711A6CCF9077E8A2D8CBC30 +9D38A0BE6B8A865AA6D108DC56579ABCEA85FD25326DB34A8A3B77A5424AE4100C2EB6804EA369 +AE0896E47334E66BEF4DCFA3CE9DCF8BA26773A39C77A33652D76918EA4BC304D746DEA74382B2 +CD2A6283142BD4605E129465DA84867CDB60E18F858C99578A3DD3BACCE03A8A6990C27D045C3F +D9C8550A2552A64F9F431169CC4AC1B9B275DD9E6D5F3DF5C70E8F657DA036CF63E714A17DA9FA +AF96888F242FF964672AB6D9CC68989DB538723337304795EE327BAB72CEBBFAB6A376093EC250 +7E6CC4E11275DB4AD7283811195AE1AF7C8235D220FAB9F10C43D291F873D989F30F3E2BD37AFF +E5D4DB432C168C065D446F0B3D58981E981E9FE5CB773EE40AB01241EA403188FEF5B1AAE43FAE +7DFBDE6A367FC7D6F418E569D7CC7B3D20FCBF2687397122164A647041D12714798560ABEB8867 +B266991761555A15A26569EB0FBD0137EAA54C1EE6010F0793B0896AE1CDCAFDA76DFFD032108D +FBE81D02FF87E094C0012FDF048557854A7951C19C117397A81FD4C8F2D32D5AD9EB1E49580125 +3BB1516DFADDB20EB7142443A1A133A5474EC8EA29103BE5554C41ECAFF76786FCD0FEE4971FCB +646F02BC421A7E4D1E5E0010A9079D17364753074ACD18630A5C6ECA43EC7C53C4B1A5DD0BEE88 +9201FC8DFD39CD0C81863BD765FE7C8CA2A69D992034D8B8B9C3486D26DA6AADB594B6EE99959A +445C809D1D3EBA95FF9429FB957EAF9B9C7E3D814B25CAC10658218FE2993828ABD4C0A7650362 +981E23E95B851A8CFA68B80D4DF911F9BF21343BD3E61DCFA86F20E96219FA1B9713677BE05602 +A6EF36F450877DABB0E42F2DC22538C31B680915A634C6D34464C3EFFCD75E60B73428ABA3832A +F9426BDC82D30589727058692220D02B5D64DA3F8F06BB80D08B77A455702FA9F2A3822698E02C +DBAB8BF4E63E39D377C60853E3B8F7B12AF04BEB45AB27036BBDCF6C58A80E3B3A61563E026C72 +4CD6E7C407B7404F301E7B1AB0EB210E41CD5148396089023AE9401C80831E627EDABFD4E30E18 +EAE2DE1884D7A3813D343CD12F9B13D935199CD744F53273DE6FCF7B0F6105BEA2176D26B9E3BE +794AB2120BF13BDA3E056EF6D06F8E219B54E3FED9A7CD767C428375E40351E73663A739B3E77D +FA3F36125473E7FA6FBF4A99A69AE1DBB03CFC5C71D2D941A15C1DA9C399EC307DA5D75C8B02FB +448BA23DB70233E83964B29CDD5101B404F505D6C8462A37DC5DA7AFF8145444ACD627E8933F24 +7EE0163AB6CF596E882A8B123A102953DB3D0394840A2977DE544DA405D8299B2AD3253C188EEA +F07D57FCA1FB375B9BBD397E1A500DB415964E518B2E2FF27A3480B58E320EE8AD0B76BAA2635F +3632B6AFC2358A3A332B773848742A11E957ABB886B3CFFA93999A478821EDA9FDD823EC8818B7 +2BC26EF0ECDD2EE498D92638D2BC8E19A283C571CA8C886A8F8E647DEC4D6424FE9CCA8308390F +78F361486C56B9C039B14F76EC5BCD8472F4E6FF566368D5FB7A55FA0E887E9CADC5044391FFA2 +21C598CC9E2CED7907F736F0EB8F12348D64EBCA0672BB8F1E651BBE785A09A34223663975B48F +90481DBA40982C8857DA5EFF13E9F5BCFADE13F02C4C5D4308CB09D6588A7BA7A2E1A4774701CD +65C7274D0E2F92AA0CA4A2FFE596733E61BD589D9B5E84835254D8F22DABCCCCE8D4760E13BC4D +6E85BCE03DFE296055EAC95B3523018DF17E8166ED03A23E1A7EEA0AF8C65F219A8F5D7C6F3253 +7160E12174798BFB8AF179C70A8E43C167E1DDF34E47F46543CCB7991B65A2FFC11F4917964CDD +C539C2E51E503998401540F23FD6A52F81F6792F2B97EABE2A74B9F58FF2C891E320DEE3ABD153 +FA43F9B456414F8207600AE3DB5283BA7A0F18FC16C58766C58EC1AD813E77BEBAF90FD8D6F55B +25615FE74761320733B58B545D584826E81F2849E1875490F15B774A3A863A20BE5A2EFEEC6F9D +337E5133329C0D4E8FB4758FF97DF0C97127FBB5F4C768439C8B9F7DF2BF3EA516C268FDA3A305 +BC2485ADB785E24A4BEE9AA3E7C82D3994C19249A3AD713FDC5B5C981A18E3D35AF4CE2A349C22 +E8923619B85E3D3E4B314A1BA051A506824368F4CAAE420FCF9CBAD8B9AB38463229750C31FD8E +B4042D8174F9C94830855B547B95210E59A601A076BEDBF121DFCF34440F65E46365871F3BDDFF +74232CA8267CE9864E4C4CF8D3A0AE94E57FBB2335AA4EF757CE11F554D8BE69EAD58004BE02A3 +B6B8CE3F5C5CD23013BD57D15D447512FF69A9CD5914A73144D71F06550E93695F0F6CDE77C1F2 +59AB5BCAE03478C9B172B792B16EBAC0F44F97C39FBA333F9BAC6123506028FA93F2ED96F88F81 +8A3EAD11809C5A5F4FBBB62C25C9C5B68B82C1C9734DF1989B00553BBCDED535F6224E2F74E18A +29CE4568C3A6B0CF980AA1F7CA1F396D2DF27D4A6C8B9E104B5CEE96CC4CB4399EB2D17269B64B +F50A3A0576EA17F41207717A2367094EC5D35DFEBA9D1E0AEEE710FA0E2297C91AD8D002E6C0A6 +FD46D5D123BA55B2595D9AE0C0C730966B1BBE3F464379167D8A7B817782DA4EAD919BE0BD1D8C +61FDA8124098009B17BD4F4A0C189ED085CED24F05A10ECB9D96F2CDED8B5D8F10A4BA62D33F94 +FF1FEBC20C9E64A7DB41218FEDFBCF94DA4F16CFAAAC9ADB9D24DC1958BA67D52F9625126D3F34 +4C7AE7634B21608049D7D30D302E95726FA7CC91B445FCFE464D6E1D79389404F0A28F8DF0D27B +AEA1C69B435B2CBC979580A2175B43F0CB739E86D778EFFB25D9C316903B82274ED9AB9E1ECBD4 +03EA7EE377A11A8EC6A8F9599879878C704B25D4A5523F759D09FE3655FEFAFD834F9AA8C75C07 +4697A890A38839FFBD754AD936EF8088D20629BCC0A9DDAFD5400D0C596391640FCF4A8F5A1155 +A383F32ADB70FD8E5AFA66484B1B6895B6F2A7859537C2088DEFF14169DAFFDF1E0ABDDC646682 +324828259958699EB1B21B7638E3CBFECDB9544F3BE2F00636906BC83568FE854E62D5BD752A38 +084421CEC5E659D7A9BDE211E643950843A0159D6834A2258933F8C001C67B073E9C9BF7D8EB68 +BF061B1966866465C8F7E1D2DC98F39F3A9A0096D62314636CED9B4E2E09225760A78B1C58A1C8 +2BF342F7940F6FC838F4618898C313CCE6311DAFBA75B344143736C7EAE29D4DBAA4B56BB3781D +D2DCC86BE5A4C4DE100BA03E4B133A239B7F6C3ACD1C4B4FC59CACE546E74591C12BF7497F908E +BBFE7160563BB47FEEB502E3B5B21EF579E375BF8B29ED72640EEBD2BB10FA2B1C30ED5EB0A089 +46EDCDDD233DBB94E95FB0012CF8BF944B683DBB52C90A08E5D53B2197FD4FBE9AEEF3245D6B9A +295445C148C20C597CB2F705512F3EBE2CA9A63E1B479A49DF54AA5F052283ED369865676C7470 +1D7F3D4745944506AB5B2FB450300BC1AE7B0F9B0A3F1BC5499A53962C4143455DB5B3C554FADB +AA6FE569A1321DC010E5484EFEC85CD8CE23C89C87D1AA2982880C56109F596DCA8258FFE48384 +1B2672711BA606DA73552081C55D0DCA31460F3C81D4A8EBC7C55A487F2C08A986403E209E52B1 +A38AB94F399D667720959DC10F9675BBBCA8BE368C3DBE8A3C82224DA3B977B0ECC13EA85F775C +1BAA1EDCD9E1C52E2169A10098B56C74E2597E5BBCDC693E27BD947033700DFFBA4D2BE22C8C0A +CB0D4CB909EBFBEFD2F66FD53157E4BD02E8D027A060BFB1452FCDF79ED71245F021D29A21D16A +8D8F2D0B53DE50B6E98715D2042E2C46B7C3D77640170993596EB481FE6A6DCFB6FF046147C68E +241E62DD123B598D408FDA25A5FF8553B44FF1620FABA4610F905C7EEB946CD6A09D5EA961FDB7 +9AD3EBF9836DEB52B4E93C4F1A1C89140272C4955908203C803C5803161AFB2C9B3510CE607F9E +2BB8AF8BD19B38D38F7942446DA9A92770333F8FDEA61394C4C1110CD91E95D3C4FAA33841D79D +F1CA42B0115ECDED6CFDD92D36A2EEC3A2904C354206B987EBA4AD69DD6B5C7A45B96106593C15 +F89796CB639575DAD7D277E09D347A4159EC19A8D881E6EE3E9093B51E9D9B1CAA1F0809EDC2EE +206F733C1B11C4292F75D0F37B25706AAE5E7900726478DAE756A7F59B4D0580D2FBC839D6F31E +086CF751F1017CD84AEFDA2D318835DFB74C02B01FB151D72C4A84D0BB976A2C35ECEC00CFB83D +EBD59C29F54F229E087C1C6E6D7F72F32685E2AF4D4353499C399F2438D18FF0E011A0532CE68F +F5B644C3D68754CA5BA2D48E0E23C80EC34F43468281AA347664D916F56E97B9F0E17A894DE514 +9800C5C7B78EDE6A882D5180EF9F51ADA5E3B511B07A89CE1680963DC3848182BDFAF361D9A893 +830547B3FCD4E412838E214A872EEA88FDE6298B15BB69FF9627EB37C27F89071F9DA74F4D6C06 +37669C6C09BB543518AF798DC1B1A10E2D53D24C3A5B1A485D6B8179DDDEDC7B82D610766BC80F +A1B2C3D3A4FEA53933A6FF83E85DBABA6F5EB94FC23EE28BA710427842803E0F375331FA1EC106 +8C396CCE31A8D68B1A7A0EC87CC082A501F711E93B9FE3DFFDD8906566B7B25A260D1C64D6746F +80A2D323058BDA6BD4122F0C04B39A4FA271E7B75A1D8FF82782540193902C88CBD99E55B33245 +069BDA735E4991447209892CA9BCF5802D44A09BE99EA64ED4EA1FA39B7AE10D8B47ECEDA33D80 +F8BB0684F289746D5D2DCCCE59D4E6F48D8F7EAA81129BC47BAD6E74F4ED9B3032156B302AD7E5 +C2F79E5A0A9DC77FB986BB46F4039152EF22331FB70C5AC047EC864F5EA5EBFDE11B5EC4081CD5 +FCDAF37B47C5CC8AEC7CBF21939F89C998AD080B530E969D39607B30B5E4474206902CDED411E1 +261FA85AA8CADAAFE9C8D0CA713066ACBCF385F4CD377194D26BBD5918096A3ED2C287A058725D +BCEF5D6D2A0EA6300BEEF77AE3C6CC068649D077A38CA6884BA08B9523E51DBE0DE61CF651B7F1 +27C93CF9A756A521276CDF6ED0FA7F4F559BEC19DD8252CB5409CD25F20D73D53375CA25DE2CAE +C1D980C6C0B99D20E3713741A86003237A291A0815FA13865649B802C08B28312C61A95910F8EE +BB51351AD5D919FB238D9BCB5C0653A14258C6899E22FF0FAE8B81804F3112C598D1C2F8860063 +C751F39CF1B7ACF3DE9E9B6F6FCFA55A59D5516C173C90B491ABBC65EB3D93B416597F22825D32 +22D9E6F5F7B993127288D3ABB7E966C9F2FA0E0A7A5B794D72FCEB0CCBE9A201041FE2338BF9BE +6241012E1E255327CCDF5FD1B0AF10626DC35C269A6E5EBCC697761374898384AF1B00BDF33A88 +E7B9628C9A44435BCA110B57227D9BC9D8BF6C2F205A62E189E683E50EFD1F09C38E62B4B12426 +2982074470A4CE35EA939B558BFD24593996AB198A669393B749AED33991D833F85DA040A04379 +57CE47FE19E30AD150D7EBF3D9FB521ECB0D3C1DD75D45C180619E0131BF9636AD108C6F7F0F73 +0937E3C8A4F788EE09F3E4A23078A79F386A7F638286AC0045F9D52E8D5AAFB1D4EE7BAE0B27EB +6FEBE7D6336241930DC406A45F261FBACAF975B7C4EA25E3751FD1806332CEA37442F99EB2BF69 +C87C649F93C5EF9DB13584690078CF7BCA17543DA5F867C550FB219C8581F3DA4DB0BE951C4932 +D3B65056CFC178183EA34389B3D28661979F1328A326783AC6CD34144EBB33CDDD58EE8A9A7DAC +E4AC91FE1532310F9B36B17F3CC79E6878488AB43045BC5B95397CE872D1429ACCCA5D99953C63 +028959839EFEC3F0A8E3052E4EB41E673F0FA73B9F82261CB6965C621ADD6DD858D7B2A8415C11 +BD9C51FF31D1F90332E076977C6461288A644D66ABD8E295AECEA2F37DAFC4F096FC0AF34938A9 +2C1E5D94A438319FEC694EE5E4ED1AE5C1FA82DDDA55C394C73CE39F18137370ADE011C4FF7213 +95A444A57EFCBA18 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +%%BeginResource: font lsunr04 +%!PS-AdobeFont-1.1: LucidaSansUnicode04 0.9 +%%CreationDate: 1994 Jun 04 09:58:28 +% Lucida is a registered trademark of Bigelow & Holmes Inc. +% NOTE: This is a partial font in Adobe Type 1 format. +% The complete font in fully hinted ATM compatible form is available from Y&Y +% (508) 371-3286 USA, email: tech-help@YandY.com, http://www.YandY.com +11 dict begin +/FontInfo 9 dict dup begin +/version (0.9) readonly def +/Notice ((c) 1993 Bigelow & Holmes Inc. Pat. Des. 289,420. All rights reserved.) readonly def +/Notice ((c) 1994 Y&Y Inc. All rights reserved.) readonly def +/FullName (Lucida Sans Unicode 04) readonly def +/FamilyName (LucidaSansUnicode) readonly def +/Weight (Normal) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /LucidaSansUnicode04 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 57 /0439 put +dup 74 /044a put +dup 76 /044c put +dup 79 /044f put +dup 81 /0451 put +readonly def +/FontBBox{-90 -211 1024 940}readonly def +%/UniqueID 5054504 def +currentdict end +currentfile eexec +B947A691BCC86A8714868C4E8EAA6693E50213672FA40A24C1BFEB6B454C65D97FE3C8875CB7FF +DB41FCDA8653D373718784E1CA8C2E52026C505028CDB223EDE069E4FBEE2F9866016FCF3C439B +BB0802FAB586D7AFD17C75C2C867DC859619612A4199CCFFD6C8BFADBAAD892A6C666D828BC33F +4F4247E844052898BE31C94D164ED8D032C6F943D6ED98C08911A23F5A44886EF9C56C418B6902 +CF632ABE9998ED7354C01793652E9AFF38B16675570C3F14DD18F4E0EA8F81EBA3B5A2EA1A6A75 +2852B45D9DA70764044BA4537DB8B3E88BFED459F70BDD5F881C906573D7E01AA459D103FD3D95 +D2C0D6CFC9AA56C9706482A513FCF9B41E612B7F6A70EB084A6F9D7BA73BC196B39EAC357B521B +E3232A0CEC9DDF61F6A57661275C3E20359577BC2124313A4BD33BB79B2760F11A0CA7BF9AA8E6 +83EC1146B0B2074D70789306AFDE9BC65D8998C6C6B28D89E7CF52E057C9E40738983F55D859CD +0D719713B944F82DB6F8364CE44A194C0B4E6E987C2A392DAAC78285ED9C29C1DF8F23842C6AD7 +F2C362923E2E3C896F4759020EEE519DD5BE0603F7ADE8A7908B806799345CC450EF767993D072 +238A614D5DBE33015C181CD4377871A633824D0DEABDA62756476A2E12BAF3A891001FFB69FEFB +D921533AE16743B926BDDFF77BEE342CD2AE8AEDCBCA8F90A10779CC9BF24974B4956DA4895299 +542E68FD9F5134EB2855709D7F684998BF878869A32DB0C6BBBE28B5AF1C1007AD68807513BDC5 +583819F8A5C8FA338B6CEE5D696B0BE6AD4C132E8CD0F3A0FA8DBB22BEB7F21AC6EA9D2CE4BA7E +F4A1D55FA87B7A57DF56D478B444FA969F3CA003267F1B45E69BE9210906D363A62731EEF97540 +E5372A27983ADC774AD984B795695D3B164AC04CDF48FDD5697A3F855E53189B795887549A79DC +69AE4EE9B7DFC5732BEE8F9FDAD6008C6EC06BA5695492152EFB8C2A2BAD3D44EEC08617AE17EC +B22CEFB1122BF202A212F998882C2F653D56F2D0737FFCF84E0D52DE3CFA539954AE718331109A +30267B8CF12669EB05BA116D01F8F01472F466D26400B7CC841BBE94EFF2C95B36C695AA91FE51 +E2B1DD43A459E31E01017DB6D44ABA40FDECBA6FAAFF5D2E83219DEA8777A845F6E4F586E73B42 +FB7116974F95E2BC2FDF85FD5C561AC5582BE899C9E85FDA05D02898659522A38B4F497F16F534 +CB8E4EED100844CF77E70A0C9C6C18C99124155AF1BC7F67952DADF6FB324B9F70859BBFA5D191 +D51D024897422139DD5CB41591085BCB8A9655A43A7BDD93D78C55859F075E58B5DCAC83BB00CB +815BE032EE24398C06F8F578B49CD897740A4DA7E6DA7DD7508EDEBBE1CC0AAFBE06F570987512 +0A1B016A82C5E1C27E48B4CDD5F2884A5AC18AB5536A145A7A83EB4AAA9971865EB69EFAE5EA41 +5A9CEBF4DD21A7C173D5BC38DB8E5C2A6EE01B504A3FA492A889B67F9E27298149153FE446F040 +B7E2C781059C65967C51E23B261136557B76D675A79A006AD83F9E0A531C6EC6BAFFF9B02788A8 +35AD5EA6C7F8CC684C252AA2E7CD05C0ED81B8BCA7D4C9A0485DE412915310EF3F8303F5F4E222 +769DABE6CC59CBA5036F3B6B1881971217CBDAEB1ADDA602EECECA4EEC033A1485FC32A9F34C57 +994BE283205ECFE0B241FC56D225AC40984DEA53961B7D43BC47F7D4011AEDB3E3D824881173B0 +6107D6C34915364BA13D09B64F088504766072E48BECB0258F002BCB476AF40B5565393CEA08D8 +0B86330541D0015DCFF19A3FF11DD0DEA1E164295C22677DCCA2E69987C4DB4273ACD833F1E8A2 +90C7C7E83154E97FBDB5B28103DD17BC8187A0F82B0BEE9031F45A869161510B16EC14EEE4A90E +4B0CFF0722D40B3A54EB15AA16C4A9EB4747B76F3EB24093BCD34AB43651603328086709CAB4CA +DC987A0F15AEE2EB086532438092DA0DB860C994D5E3892618A1D6D536BD6E1267C1B79D2B038E +C3EAC72BF37A07F8338FF4ED00A2C096F2C6DB26E71F13E023D25D3F3E547AB07E837DE246E0FA +73356D30EB9E8C83D2A08745B3A238D1FB9F18CA32E2CDC93884D4B1F87854BBE7593C45B8F7AE +BC916EC39500AAC2522595A0593F2B95ACE4EFD4A016D6D6D1172AC47EA3C92AE915608F20F0BE +A10E875F9DDF6E0EFA32C3EE7965F34AB6CB670453DFE936D4D1CD77E44A1E01B81749EE49A4FC +7759CB1E0D30CC814E6AB9B51FF675A22577A3DD8025E04CCEA149E717FBCC8C424196B35D1924 +3C562D1FAE2E2DF182ADD0AA15FBABCAE89D91A363D3691CD9E2C6EC022C34C1D5A6F0EDD6189B +59561647A60F07E60202401959224E551F14C940667AE193924A0A83F4F85D071AF94C79056CAA +B4BF0453F2EFE718C7925B7D150F810156BC31CDBD19548B4365E214CC8DE2357368A8429A9D80 +6C2CF8AB10BB393455B8EC83DAD41021DD2C3C8BBD19F7F086C7D4AB0E773F9624CDFA6FE0BCA5 +1A581C845241710AE04EA754034710C1ACE81F3693F17A4144C886ACAA69D797DC781402C297AB +5D83D4CF37794E7186404A8597FA96FF43DDA263AE1E5BB13132DBC7A899B7E29136D8ADA59BE2 +F9FF6DB733B428A2D4BC94024D03210C67A9DD92FFFCF7DD20DE16564FFD28F5BBAD8FC6FFB08B +8EA5C8183331931769777C502E4DD4348DBF937560C37168C6FB31D04483E204D23C51F74BA204 +8409709D3B387CF7ADC611C68BB8DCC51ABAF46F4557D9A7D39472775F17F7D57FE5BE656B7178 +54306B9D35A6ADBEA90A4CB0B4196045B01BCC454395C6DCCD91DF342E853E390D0A060A587673 +6A7713D1BBB7EBF6BD15680DBD6996E69BE0A25DE4358BAA6FFFF20AB9FAAD1F62A773A51FBB25 +9DCD63271013026CC59090452EFD867D24C4B87B30C8B338408836B68D9F5BA5444C5AB5075D38 +1A8FE2FC68F3E307710A68163554EBE7002D15D5E5A8DD662195CFF998B7826FB58345A0C932B5 +E3505C5A7174A649668910C3493DC2BDD0635275431DDD1304699B371FE983FAB90976279ACA40 +6777877762511873E042A65E5F0D3CD63B692D22364A208B555EA28963348D2C2DE3BD025E54DF +656FC7749C9406325C809B36EF3CF9BFE641783D6B82DCFCF63482D2E82BB4DB6599D1771B6DF4 +FCFB7803B5853A371CAFF56A1A6F7060AAED31347807AC7D0114BD90CFBDF64C0A0BE6D2A18883 +CB9577A8480062E6849942CFAF4290F2BEFCD4B7A212F88B6ED02A82F4134C66609096E11258E4 +6E9EC209B58597889F3B86F66D5678CD1F0A0260BA8305EE6B038842FC4244767E615E15626773 +1006379D908D8048E94ADB70CEB5E6762763E8744D8CBE771B01BF51EAEEF378EFC38233FCE953 +1ACC4F8FEB18E3164C7C834F7A253C0EA5CDD0A541A0E8A263EC6CE7810D311D45C018CF88579A +60864FAB0D4D6E8DE5D2D77639AA944DF27C99067D4FBAA626BD61B36F4DC0CFEFC52DD1EE665E +FD87E73F791D95BF9368072D720A8E7069C9C9FA65D22B0C401115D19458883F4B37E631D6B532 +8C7E5A10B6E3F9407FB6AB8DB7D25BD0D682B197EE8C55663AA50B6B20DA99B489F8BF5F091949 +16DDF7781E5E437C208BD4C68F2DA4B4913C69DE358E9E8750F8AE45D8F0958F30FB7AC997B253 +C255CDB46054EE7CE90EE8C3B0379EDE79009F6952DD0C29A682813B283A18E11ABA75DDB8985F +F81377EF1420C3F93832DA217576D9871815CF0FAAD815FAA4B8D93862E0F7FE9424A40186E933 +81DE8FAC067BFED22ED9A8D6794FD76B97270E30ECECB34C4CCEC5C8681BDD66DE14679A85468D +2C7952A33C265FB2650B1D8DC32E867A98354E21F5E644688285315034BEA5C8981C9B36502C87 +4A3F87B5BF5BD1E3241B4056D848F46BE457752DAB938CBA20A7A8643C99E8A0719D9FF7422FC9 +1F25BDC284D1F0664C6EA1900938848BCCFEBF2BC4A0E37DE2DB48C5311F7BB5FCE22C3948F8C1 +AB83B98945A1FD7F8812CBCF8852F20D26B70D94D04E4C3B3593BE0716B016630E43C349B56F9F +C17A9D19172C4E1220F97A7B350DD592CE9E8DD5481A3A0733B95C58241B333586198F375F1F7A +FCB84E33878056472D0153459A5AAEB4F264AE38CEF24CEBA2A32970E642820E9708B137180739 +0755DB1F6E830A73DF803365B93F815A330E307828F3FFE89B1051EF80466E3F2BC7C5D703D5AB +10F0411C20E72745A13167759657C8F68457BE6C9EAEFAF4C689839179432E36200EC7C492EF2F +76AF90BBF8333DE26D91EC67F32425B3655D2AB080D6F62AE8CF99002BDA6D369529CA0110265A +E93FAA293D3E5CE6121C899FA575DAFAA8293DD6BEB7F8F5356B7076B38EF4E4DB70F004EB1FCF +F2501A24FC75A3BAACA7E6D0706FDEB788C4FDFCA642536036F90E65F6BD876DB2519DF5085C17 +E5474B454FECA74BF0F3684698585397E3E04847A1700307B25D00A2543C5F5AC662798C2BCEA5 +1A56A0D92E1D376E01898FAF604AE6C3861592CE3CCAD063C628E15C2F459A6399556F582DB160 +0C8C1C55FA94E64AE5754715B007AFE6E024AD0E96218E777E90794820DCE4FF8C0F936EDF0C55 +2808CB0DFDA4EAD0F1FB144651891982DF671D9EDF47798A24AA5F0B33E9CF63AD8AD4F3440CE3 +76B4C47499FC93F8277F3D22457B98F956C39C53D177F0CCBBB529A36055AA4EEC626A7EEED64D +646ED1FD0C3685CF4E2DE42693E7E212343B83FD75AC33DEFB9D16A1771D6D3622998E556C0AB7 +F2D811339E89330348FBA8AE94EAD8B18BAE18CA3683225EBED1A4DF9EDD2FCCC34E74822966D1 +D5F71D2346AB76CC3D0AAFFA3E3D57CEC007C9D892C5A82809976719F964186D3279D79B4B5AC1 +F0333EBB8742D25644A962D02EC011FDFD7455120BF41418D4FD6313066DBFE5A0BEEDC59ECA8F +8D1FEE9199848433A584EB5347173D726A521859A91EDA4E2D73EE7E8C51339B86305C63E35E86 +B4FF303B8B1075999B68513497249C62ECA2736FF6958EC66FB78AFA10532913ED98C1E13420FE +18C9884E3DA3ADAEBEB2AFFC5800668A2AE2752BD30945BD58C75EB522F869CD640B1BBD982833 +F92EE830EBB96507F4762E3138243417FD2C4738FFB542D1B2A29CDBCCF9F3CEDF879CEA7CAAC2 +570C352F4E4CF19D069FBE80F9AB796AF8F419EFAB203B930625C4FA2435D0760067D328A5641D +834A56E35ACDB03751B97727E4553057FBD08C1236E45C424368A7B1550A4ED7A5E6270190C60D +F2E025A2E24392AC419DD2FCC5D85696A0B2468E1995C3AFDAE38058FA85E54DCFFCF687707847 +39FC137FDF9D6BDB97E38642A6E6DBAE8B2E599069634AFA5FCB9DFD01A00F7174EBEACA58E0A3 +29B88239CD746022D2B10A8BC3CC15CE973353C01D98D8B2D5AC9253CA5ACA59AF6324B5C69A7D +A13E28170A4077709CE7B4B77B407898085D371E0F9207BB42ED043D8579D57F81156EE847D962 +FBD8412ABEEA9B941AFC7B39A51391D02695C8FA95C775F8CA84DD46B2A28D1735C2C5228FF7B9 +29AE385AA61818C2E9568A4F23F8E890583E7DDAAC4F48875429CAC2D54714D179355590FA42D8 +160CEBDCF44BC348271FBDD219EB95D1153075C82383339334D05F741D7CF5F12F85DCE3A25BAD +6D518F3B13A0DEE4DB2CDEE3D284A8DF2F7B1C9D07E8D7F9D47D6BD6088591A9E089EA2BEF5B83 +CAAB3EC766B469DF9640DFBB4C32E505EE2A01EBF2E7155729D1B9E205711A74010C6BAC48F73A +4CCDB21FD55BBA48ACF5E5126CE38ADAAD6DBF3EA6297C56EC9CCB98766DA4C76DD8542BDD1596 +BBD288C262E48A15C27690644918944E039E9012C08E62A63495BC5C6E82285885A2E830DE725F +A7C746BCD0F333AA0DACB4D044CF8DA68EB5A1DD7B657715562D0D3F3F94F0B642C06BAF360191 +193F6ED4ED5F781AA5AE2DC7E9A6B73B182092BD5ABA6AF79E638152F7747E5938ED28D9C7D894 +A5762C519DD6620CECC58B2D583D38B63584172CCE9E4D5B3737422ABB778B2B85E9F6C80D3CF5 +FCBEE03C2C66613A8C5FFD6E5C2A4377472AAB0F1B93E7564657CEF1BA61C10849686BA4176116 +FEA3C5F3F89C492C1CEAA310E9A8578B7C5439355A +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +%%BeginResource: font lsunr20 +%!PS-AdobeFont-1.1: LucidaSansUnicode20 0.9 +%%CreationDate: 1994 Jun 04 10:00:12 +% Lucida is a registered trademark of Bigelow & Holmes Inc. +% NOTE: This is a partial font in Adobe Type 1 format. +% The complete font in fully hinted ATM compatible form is available from Y&Y +% (508) 371-3286 USA, email: tech-help@YandY.com, http://www.YandY.com +11 dict begin +/FontInfo 9 dict dup begin +/version (0.9) readonly def +/Notice ((c) 1993 Bigelow & Holmes Inc. Pat. Des. 289,420. All rights reserved.) readonly def +/Notice ((c) 1994 Y&Y Inc. All rights reserved.) readonly def +/FullName (Lucida Sans Unicode 20) readonly def +/FamilyName (LucidaSansUnicode) readonly def +/Weight (Normal) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /LucidaSansUnicode20 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 19 /2013 put +dup 20 /2014 put +dup 24 /2018 put +dup 25 /2019 put +dup 32 /2020 put +dup 33 /2021 put +dup 34 /2022 put +readonly def +/FontBBox{-615 -440 726 1024}readonly def +%/UniqueID 5054520 def +currentdict end +currentfile eexec +B43A59C23D31312E42BFF7A8FFD888C8118609E66724952B45D5A38971EEAF7AEAD27731404947 +E5D485EF2185B7B28FEE76585E49D85250EB800DB5DBEF09999B470F9167BB8A81B88DCF399612 +0C5E5C13C786349E7F44E018DDA185A7327A13F55575F00A7B68BA5390314FFC1BE676564A478B +1A253C30B407F07FEC8E3E3C46BC787775A409E084B26786F0856006E38AEB9E71FD27672DD999 +15E5FF51153CD2575D5A841791BBB0DAC82FC347B4323CDA6FA02627CF6F313D71FC7B56A6F4AB +9D45D4EBBA4FF9F13323865378F1240393DF17083189EA6A560B78F670F31187E21DD2282A40C4 +EC215B6E053C952A419363825F8074AA1F2791D599B236931ECA38548DF42AF21A0B93299C7A6B +CD562A5D47894A3F2BB10DE3513E0101686157DCCFE12025B2F62AB48BC56966D41430446797CB +34EAD92D70125D12FD83DD10713076729FC32F58FCE51BAAA5865AD74B16825913B821284679E5 +9C71C2DAF711C0E0D4E82BD5FCAD13D14E69C0C9E8DCE7F05D2A5B1F4B724498D405664EDC7CCB +CCDA84490522BB752CB6BB095A3AFA53A75A04E8B6446C38CE1F543231B8E7A462CC128403A30A +1553F8AD4952935A99E6781121623F4DCA70C680758A89F19FA860DDB7A02B71B4265E4EFE5CFF +F0871888F3C17034282B2250FA41A8529AD3CB49FC2F94FEDDFBED06ADB863F82168180A185578 +755D4D43CBDF4D1FA47B05871CDF84694574CB0634E35C47C9B4BF695B573F8DE08A555F0A2DF2 +2774590AA572463F9E2FB1510BBCA5E8F6ADC8217855D4F1D5C837C3CDBC31E1CB6F52CC6D0D65 +05E59AD73924E4EB1B37E9C433BF0ADAC35CE1832DACF7FE538E921DA937CE895F565305535EB8 +17575E443932C9896F7D11431F8ED21EEED56E490E157FF33BAD34EEBF76042168A86077AAF03B +A2173A795A37E0BCE53179C645E8C12C0FCBE7C33CC1AF08C58567B83B602E468A8E635F0811B7 +6F8E4318EAF2CC3C5DF01FD2A95662F00029F54AC7C8FC2B999CB46D6AE8D3FB1DC657C6E961C9 +F870BC5692211F2C244EF9CCF84C65D013425D119F60FD2131271C5FC6CBFFCAE54064DE267BBF +3E03F44C47BD24364273AE3D94C9C818825440FEA0E06CCCAB1CE6C411628FD565E8C78B039371 +F4F6618EDF8BBB15197285A8379DD1DE9B0AE8C580C44EC9A7A74DC4A4496A4868355BD28FD537 +38C81C8060FC059EBABC9B8F14F65C347E47EBB861DFED01318BF955010A0ED66DAC569E6794F4 +3425476951FA9D84A48D7F9075B0A197936EBABE6B9D3513B542E1646A0D32995AAE08FD77921C +79F575F40B8E813B330F1AA029FE6439D7505B9DC9210D43BA9CE32E3A14EF467C870B182ED37C +654DAEF47A595E363AD0BB939085DCEC7155829BBE1E1A47F1F2A4F3432E34EC91C1C85514D35E +ACE265943CD46A79D4226BAB3BF354A04F0E182B759835B9FE8F76F505057869CAE56BA3350712 +EB5103078544D804DFEA9DDAB528DD4939273645933425C0F64F7AC4E5D3B01D5D76CD95C65756 +B48FF39634475BA737AFADF17FBF3CD5AD0E88F6356CF06EED43EFEF9B5433EB1600D38D203D51 +A1099E2E20641DBAEC087D771323611E50B960C1B20EC7B1BC71697768A088D806400AB4CECC04 +67AEE799328421391BA370FF34C617F15105260632A8C0F4B22E792247E390B1F564C6FE227B85 +5A962A6E06E6F565D8D54F9887042237617FB78CCE75B0AEE938B1FF3F0362D6BC139C871D1BFF +B8AA0877F9D3F0DB55ECEE0AFE6871E01F204332718A0EFC66EF197523FCAF46898F32C1B324C6 +DFF22FD9BDB4DA9D95D5D2208CA9D67C6C13B3A3BCAE8AABF40EB224AB9CBA55204458FC526DD3 +8380F3F432EE69266C02ED0086DC8D6053AB3D3330D436B04DBAD95818B0A5025CEF13C378A9D7 +2B6C775ACB4833AD3570D1E76BD359A5A8EC9C4F0938F7240A1B663AA366A4FCF3C102DFB0FC07 +994E668F503A0E28CBD1CFC49041562DA2249B608712EFC10C9A35E0FD9B346864E6AF644F07BE +325FC4E08F81E9E8A6DE438D3ED64F05A57D3693F770C2E139ACEAB73366F56A94422EB50F6670 +9032FAB1F7ED83D150A8D26B45D8B59BF720D04C4E283A647065EC0CC0D55D9FD7C6502EE3DBE3 +E785F49966E1099CE4596EA2F1CAFD038E882F05CD9628F74A9A09A5DE677704A12CD82A95BF7F +01A5147536FFC7EEABA0D288DF1A9C9B639350A266C42500696B7E925174AE15CDD011119E8288 +7EDF23F0AC7EEA78E38104C00BACCED03A7785D88FEA2B4A3EC5DA4ED2D0357EEB43C4278CAEAB +5BE44EC6C777B67FF30140A391A66CF1B47778BC0D9BF6804E78DAEAFCF1C3F67760C94ACDC930 +94E68CC33121CAB7A1FA79E8E14276CC001A8D31333FC78721C8368034B418756A9EB23D1F7104 +43326DF928CFB2E1F9246CCF09F5D21537213B798D2B72893A8285EDCD48509C022EDB3E0943A8 +AAE2FF11AD8B6EC442F30DE19215EC6BCED82C345467DF50276F8123BC061EB2ADAFA6CDECD1C5 +5C529BD9B1ECE353EE7A58BDFFEA47EC30FF94FDEB0E465B7A45EC795797DE00F78E180B73B3A6 +F5B3F35BD80882003053F618940DB675D846095F63E90CC77B5022E963CC39915CF3B95F8F5A45 +4419ABFDAE6087C4EAB799A8A5F1CD7A234A2407A2C08DF813227CCE6DA56F6D1B081278C6E046 +96CD90F917C7AEEEA3032A1A13993079F3C41DCA1FF2B300BEE78A8D9512736DE4DF75CEBDDC58 +33F8D1555590AC92FBA63E2D59B80EE8DEC88CF78435CB4CA57D702DD144893C3279DADF5C6164 +70EA7FFF87FE66F510ADE5B32019709CE6D9BBEA02F2BA243975E7800839D904DC09C2306A292B +B812F8CC973D40810ECA109BDE38961FC2678BC1CD377E2FEEB43E2072B38621801D5ADA0A92A6 +5F37C7FA277ABBBF372D08B834C737DDFD16B51190DD3043040B9C060A1828742BCF814CA98EA3 +77DB2DAA1B027BDE291293D8CFC3DC73A75BBB4BDE3CD80FDA05E46A2CE0B003663A2003FAE55B +0535A681672F7D8FC966834DEC4DFE56D3286FF86C10630F9EB91BB731A9C2AFDDD4F1554C4728 +4D68FE4A486EEDE086A565929B97FF763B31B5CE48678860215F768CEE265E157F1A44C3092FD0 +48239B140F2F8801D05B76FC9EB969BB6EBA6D472F1C016B94012127975E20FE911529090CCCEF +4C980611502E8641568824AA0F18FC3CBC5C2C46DF4A310A1961427A7785EDC75D0DC93FD03C26 +43FFE864A91F4F285FFFB5C74803081A71AD441522F4C5DDDEB96BF5A7080BDB57A22AE8DD9310 +02D940551006B0863C4274D0090A9C2EA9516F291F4A833772CE2F0CCF7A92AE08BC02CDA5B434 +3D8E61C1F1ED39A3614BFE3BBD2BE7C9C3A64F1F7FFDAFF51D3FA0357F672316BA9810A620911C +06393D472F8BFAEF9AC09A031C3A1A33816A77A6C5EA88AF4D4303EC449982D05ACA3481807F2F +0775C87DA047792078D7FD735623D86C37274CB49235A22D01AF43791078E4AE92AADB3EF71EBB +7C96F303E70F1E3F7569471C6A0FC9B9C59E4DC141FBE2752F6717F4A7C8CB5D47EDE806D835D2 +8F48927CA3A3C38B1E5310A47943668646946991FD87BDF723BA535A587EC98F9CC86A15F3AF79 +625C5E9A1570412BD515DBC288A9DC3E4194A2031707D47E54A1FFB73099356BBF4C67A22A71BE +AB39619759800E4F9F4B558457CFD32E456D546BD2542B3F493A2FEB432FC1511587E4F5C0BCE6 +3BD4CA268846F13233A6D3E22CD92BD8E19627B71EAC34CB56125C86CB4168194ED4E45FC6B759 +5887FCEA79676EADACAC6F0A35B30B63E61C51DC92E4FD960EAA2105ADE6C4E551FB59E0381ED8 +90AD55857073689ADAAFFD1D27AF7E9BCCD8078D62E2299E35EE4255817A3E7CBF4C142AC2F10F +A5486FCB20EA7E6281F6FB7F91DF0A48B0547EE2133AC09C1E0700039CDA77281121975D84864B +FB24A6F6E05F5E801FF02B04A8FAE6F682E7C9A705B0A6CAFD3A84698528921856038137A3D111 +30602F28D61D26533FAC142D5A6F0D7C918D16BF3C1CA65109ABBED3BD897C8BFA4490545552D4 +B15F6264FFF4B02CD60970D6D8F35A18295A2AEBAC056F768F29526958DC1E717FD5D6504E303D +1C36802BFAEC578F5E3F0D1BE9FF5B65B3AF6DD63FBE07432BD1EE72BD24C27C5CCAC3B95FECA0 +AEDCB55933140D1041DE9F2AFA2ED9F3D4BE5D7D0C7F325AE26CB1FECC40CCD6A4085515A11F62 +26 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +%%BeginResource: font lsunr21 +%!PS-AdobeFont-1.1: LucidaSansUnicode21 0.9 +%%CreationDate: 1994 Jun 04 10:04:24 +% Lucida is a registered trademark of Bigelow & Holmes Inc. +% NOTE: This is a partial font in Adobe Type 1 format. +% The complete font in fully hinted ATM compatible form is available from Y&Y +% (508) 371-3286 USA, email: tech-help@YandY.com, http://www.YandY.com +11 dict begin +/FontInfo 9 dict dup begin +/version (0.9) readonly def +/Notice ((c) 1993 Bigelow & Holmes Inc. Pat. Des. 289,420. All rights reserved.) readonly def +/Notice ((c) 1994 Y&Y Inc. All rights reserved.) readonly def +/FullName (Lucida Sans Unicode 21) readonly def +/FamilyName (LucidaSansUnicode) readonly def +/Weight (Normal) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /LucidaSansUnicode21 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 144 /2190 put +dup 145 /2191 put +dup 146 /2192 put +dup 147 /2193 put +dup 34 /2122 put +dup 49 /2131 put +readonly def +/FontBBox{-30 -325 1384 883}readonly def +%/UniqueID 5054521 def +currentdict end +currentfile eexec +8CECFA711B4939E41CA045BB7E8765272CCE317ABEAF2B07E70D992D651C41DC23B029563922C0 +95FE85170451329EEA8C7BF7A2726EDA9D9C6D097F0F7FB11AE93E80BF8DFEB2012E3B9F49A227 +13E573A8BAB0BD7AA774AFAA41B97C6C70A3BF84A0B468C41B70D35F1310A4BCF2B97287E2FBF9 +4A30663A4DBB485672BB54D8FEAEFDE594B3B73220D0C873C546C40B5138841E9803A47402513E +8FF4F9343A0E92A13A04C27921E3EAAB23C355AB06A42C0BC5CEF70BAF6D687B5C79B5360DD42D +B2C878AC8DF4228BB74DD81C6FEFF53A36279510E983BDCD1A8145830308160030F770C3DE994A +4DE01ACD31F1D76E3094B43F3316267B62B6D653546469CBD35DC8B1541372AACED3750E498938 +970666D8B36D41627069EF1511128034B8A364FACEF8068FB8A2F7F3209E5A769AF14C3E7F044F +6892F9009EEACF40CA1AEC6F322861CD38A8CE6A110A5C348EC2CB376E5110065918A03C02835B +E3E89B986010D70284A334D6725965CD86C1F4937315B5BFA1D7E584988077138480F1B72F2870 +2477850CB729C71006FBA750B4989EC757A808D51431556B673A084E350A74279AB2E9C638F7D5 +B6BE1D50118747D01A6F3250CB9F204E3B03CC46DEC9821867B2334D2593522BE05CD30CA6B75D +DE85222B64269B1DA310838E5962A391BC8197808B9D11B877A50D431C25870F7043983E965CF5 +0F5BA07DA4DD39F97069868D506F035C0DE343F7F5C12587B2B05CE2ADE6822C6C0739A54D5DAC +415135137E8341C4D37F7D4534BD8FCE1DEBBAA3C378C9C9CC083F3A892EB7E44144F118680E0B +2A94BE914FAED74B80747D013961C682A0C3A3F55AE7496F7A15786BB0AEA5B1079668EAED2527 +9F744F8FD112A6C33DF4E1500520910769D69C8F4D659322035993A3CD70CAA65F9DAF1485DA40 +CBD374802317B409FB464C03C8A46831DE7B04E924B9D8F5C5239CF99DFB7176B2A01C1A31AF6A +D7EE0115C6CF9EB2AEC83901795A91D4563F32399E1AEB65ADE7B8248571668410AC1D86F71918 +70B0FF9C844CB7E6352B01A2C169E37513CF7C37D131B042AE6584F1ECC680AF5AEFC74D2C3309 +12C36CBA7D88E4D44C77EBD7377674DBCD9FADA92577843CB5B1C0CCCA0A9CC3BE2A8F4CFEE1DD +ECA543A7967806B9F65C5337403864168AD5EED97FF91EA2A00BC4480D96D09080029CF4BE6975 +B34B40182DA9DE77D82BBAE0007448F08DD19A443C3EDB130AA1E36D2DE61D809BB3508EB12237 +E460F68508290E1DF4E45B652B0A2EA82DED7F3A5A05E9F6FE3CD1E8FE988B7258E81A243DA0A9 +B677C368D33AA67DCD8BED50A86331179CD2A6AF65E164A925258D5DD67704B2F3D7B3A9797DB4 +E5092122646EF94DE3FDB3548D60702ECE17FCEFAA298D9825EFB4CB96C20E5AE933A4F9E7FD4A +D8BB4FFA426366AA9EC6DD84689F24BD858212C0D745D674D513DC4C07C37D9733ECE1D7F7059B +EEEFBEA12DB1F8F21F6DB88EA763511B1CB80089383350F0EEF474F70276C7B44D075B21862115 +1C4C8CE0303FDC81D848F74CFA94CB2D2F61FB99B92DFBC6CECC15955A790C62B3DA7654CB95FC +9EB2544F05AB69475FC405C3F0F1E80EEA5F82EE0B3E47937556C7E14CFEF5A58ECD7B975E519F +CA80763297F483FE24B96F09BB0C6ACE0753EF674B62B6F7C2A301BC1F8C7D2A84CB9DBC68AFF0 +7ED80EDB570861D23430D1A30653E5580B9B9902AAD063F04A700E801964927CF9943A074D8FAE +A48CB417EF69C589EF625E46A55472A0A2B3CF9C7CAC86764E06ADFDBA7AC08812B171C4ED089F +3FD3086F97D6B96299E47EC1BC98C8320ADF7DAA7D384A128693DEC73675CD0C185BB260668E38 +9A35204FA0838F70D1AE5DC74957D9EA2E2C3088D660580C20D51B212B6CC83D9003260FA4873E +0B88A4DA8EEC5AF1DBAE1C0D1454746F9014753E3CAA9C8AF20D97E949D8685D5D9130BF1A9F79 +57569B17DBAB5AF2F08737E9A046C0BBAA1238D2A72504B9131401B96606AC9230CACF736151D7 +E1F79E7E4F42F625AB66F02FDA6C31C497B1C2A2A0C4DAA420B59D647495B306723195DBF74F72 +FEA3B0BD8C2A16E95B442FDF0B39CF601FAE4BB5AC9C85C1042A6C54C44B60B3A44D741E788165 +2126A8235FB58650ADCBB265C349F5A93543A4F765C97225C9566D7C4DCCC6779E05D9827F8C00 +D78D582BBC77E25C3A170C469A268B483BC3153D851FFED8A1911B6864655255515363D8DBFFB8 +0C02180CB399D92C242F0F450766B5D7D29F59B5D7B47633C87A1B46EB3322715BE04BDB99E126 +650DF431A9E8DF486C8C63F5F0D26DC24B9DED300D3107A814E4A01BE93CCB3694A99887C4F1A3 +46DFEE064D27CA5D5899AD2F8B3915E304C8A4121A26C1B7B8B81B9841982F6ACCD03F249A138E +0F836D0F533153FCC8B3B4CEF39802D66A0EF0CE76F8E2C03D880FC4F44C1FDEDF0C50971507C0 +7202C26CB4C0C1EBAE4AF043F2893D4B15B183B5B60DA901252BC6DE8D8DBCD54B418C088D7D07 +3084C0809EA621F31EC5DE23374C5A4AFC2AAABE30A0CD14CF07914839804BC88A7340BED9C24E +48B93770745A08B2FD64AF52D5194D57FDCFF6ADCCB3A553343FFB2F82212E5152EC91D9F19F93 +7839782E3A8FEED1128568C5D39AEF3638592F8321A7513B6C361D56EAD81E2ADC3DACE11B7B50 +73EA40B36A9E042BDFE78E30EC5059549BF9D1BD29722E6FE3E3CDF81029F81E66C887B55A6E3A +96826166A1FD6D27B7B3B5D72046373492434088F7634CB45301F885909D249C2680E5B1AF7F1A +5C1A7997730E94D8A0C643937B284C0FE0EA447965A8942E882C20833C9EEA28D063C6B5C52F06 +D9580E5387B9C87945B1990EF0537A00BDE28C42C08321C0730A04AB9A0DB8435F250E10FBD8F1 +B70FF91E4B795BB353AB3DA14F7FD8B61AD2AF4CEF5775B16BEFF8E3198558F77036CEE8F21556 +BB24BB44437966855114167168A2F45CB4CE1CC31FA04E39FE5F4F07A21D878DD4D833F2905E4A +541F26B1599463BAE2BACEDDA6A25569E27003BD478232E627892502ACAAEF3E61B56139542D1C +6D6A6B3873EEC2EF0BA2CB21AA0148F449697C43D3CE159B01827618C1E9A835186C2EEEFF0EBD +C22D9250307D280706754476A9B24E141B88294CC88634E1690C5482E5232EC7F174256999DF02 +FE1FAFA59C4369C41B8E9BA66699575035718309DC3409EF68CF0768E8A2AE0E5BBA760F3EB926 +DD09D37641808114AA91761DBDF3D2BC64A42DABD5010465BD47597A69B1F88DB579B7A47563B4 +9BA22E69D7294A81042FC2A57781D8FBB5E87E77539498BEFAFD98E3C1C761EE5E7B635AE93BCD +E9479904AB3B3BB64EDB0C80CC2B04BD9295E208340BF65D55353BF8472EBC77 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +%%BeginResource: font lsunr22 +%!PS-AdobeFont-1.1: LucidaSansUnicode22 0.9 +%%CreationDate: 1994 Jun 04 10:23:13 +% Lucida is a registered trademark of Bigelow & Holmes Inc. +% NOTE: This is a partial font in Adobe Type 1 format. +% The complete font in fully hinted ATM compatible form is available from Y&Y +% (508) 371-3286 USA, email: tech-help@YandY.com, http://www.YandY.com +11 dict begin +/FontInfo 9 dict dup begin +/version (0.9) readonly def +/Notice ((c) 1993 Bigelow & Holmes Inc. Pat. Des. 289,420. All rights reserved.) readonly def +/Notice ((c) 1994 Y&Y Inc. All rights reserved.) readonly def +/FullName (Lucida Sans Unicode 22) readonly def +/FamilyName (LucidaSansUnicode) readonly def +/Weight (Normal) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /LucidaSansUnicode22 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 100 /2264 put +dup 102 /2266 put +dup 103 /2267 put +dup 130 /2282 put +dup 131 /2283 put +dup 134 /2286 put +dup 135 /2287 put +dup 41 /2229 put +dup 42 /222a put +dup 43 /222b put +dup 67 /2243 put +dup 96 /2260 put +dup 97 /2261 put +dup 23 /2217 put +dup 25 /2219 put +dup 26 /221a put +dup 29 /221d put +dup 30 /221e put +dup 2 /2202 put +dup 5 /2205 put +dup 7 /2207 put +readonly def +/FontBBox{84 -166 1060 898}readonly def +%/UniqueID 5054522 def +currentdict end +currentfile eexec +EC18885AF58F29AEFACAEEA59037C942D5A3FAB833BA43EA181148D28AB4B88B44CA4ACA1F92DC +003EAE53A624731252861B743FB223E6A26B5EA4CA4237504F6A6CCA326B9405AB85D95ADAAE82 +22B5F340DF4D35E0A2CB80190E539D9C09EC6DE84EDF6E6DC6E40089958D58B17EC7357C0EB84A +61C5A04AB034973BD320598296F9A79CA937F8946E59DDE543CC946C528E3106DEBF61B81D7A8A +69AC62FC23908A8A656B8518CB8FDAF8A2B57C3C7D4B644754586A739AFE94AAA7B685E0B09EF2 +C30BFEE0F183A420766F0BE21197DEF2C56A4BA47A2AC88C0687DCBA5494D19D543C8D7F43E8F8 +67EF76E2E818ED425C61EB7D3EB50B1174995ACA71352D8218D3734BDE02F4A95E232BD4AD9845 +09AAC48D0F388BD9ED89E3DB5276D12DB11621AD67DEB0F7CF2046A95D6147BD77893BD999663C +6BB6206F86C9E5BF1B7296EA35C677788DD9627D6385B6903C83B27CB461AB230B86435838C33F +A32A0B5DF678E7A5414A11E4BCFF1098BA6A3A6C70AEC03193BF8E08C1F703E2B0470B171CC9C9 +CFBBC16B532F551E32A6EBB545F8F16B4DFD5945ABF67BAD9AED02092F99DABD828C674A246A3B +50B6CFEC2542399D397121C09D60CD1F679CB805E385F3D63FCEC624B93BDA066709C669C50BD3 +261D4A143B81F83AC3AD4052FA424782F1C8985A783C1BDAB4303948E6BA2C6F1645D1AAEF161F +AA605149EBCE77F37B904041DCA83C92CC102FEA932313FCF28C23DA1D3F876F612EA30006CC36 +B9376696E6D3C74AC6D5E39653C03434CEB58C958FFE72BE74DCFD7921BD8D29CB9B5D9462CB1E +6CA793A7E2A7F1ABA296877AD19BAB0AA44F0916866DAAEEB3DD86474882FD901F4FE785121720 +80BB24A21D83C909FFD3ACBED7C3F97E8D434B4B3DBCC83A954037319D24198CC1B14695178CFB +18CC1F530CAEF7C5C845403B52E2A5CE0B7F158B8C4904B2EAEC08C9BA7AD693405E918356E7D5 +1E87E2857B18EABB71256596245BFB5D3F3E547AB1355106CD33AEADDCC870BEEC170FAED7884C +82DB23EB4B99C4E856B81773093BF2B625D38475AFDCFCD02468EB11B035E4950C2E909EF0AC96 +2C6C41D25D43C5653AE66D718013E922561CB88101CCA5E70905BC6D48B80C177F552BDC9BB31E +D51DED3C0D40BC161A86C06F8FADC8449AA647EA6A83D9A5AB66E8CC4B5C705375CFE9AA94C1C5 +6AC04BE22C68860DC51566D69AA649F97B43E557EE45E73B23EE06F851860CE6C29CFFFC95F561 +165AFF73E18A9DE0A1660754A311DAF53146BBB751053D424E32E8600B50303AD1A7D9E663580A +BB54114C9BF9E2850BCF12B5428A4CB8E458B16BEB43751E68BE952B34A8064CEF61452FF56537 +EF56D18A3A3A3081029B7027600A1DC1199772F97102E7FB28DBF3A941729599B0F24A565C1BCB +62FEC5ED752428920BC1C60C08ECD8EB86AEF841364B00168456006B406FE14F1D4F338B142CFC +42BA7DDCCC92233212EC5B35E205372291B4FCA126E5FE8F6D4C8A37017DE0463D7261E98813E5 +8B1FBF38993879ED183A30C569DB75D9644B0C6D237F76D760C3D77C7569FF8A1CCD752AD9FC87 +3078022F6A3B1D749DB363097597C2CEF08CF19BBBBA4DC2AEEAC4312E9851639DF6FA9E2893B4 +3366E631AC15951644702A58B7FF164C8D4137052A3CE699438B9B5FE2228DFD6B0931C6149B18 +6B9F57F9D780BAA7835331B10EC5D837B9257044B3CCF8AE4590B23796C7A712C6F188E20DFA22 +1ADDDC895EBEF28DDC6FE7C1086AB26B878DA3A1ABEF1E7EAD344CD7CBFA752F7C274E8E9C970D +744186961EE5717BD0F50B67144FD576F6B668CA608436053ECBE116CDE462509A48DA90D66105 +ADE07641CCE083FDD6F161CDD59145E8514CC0BF34FB77B657A287EFF963E63DE600FB15BA6A17 +87E63D3208F5BB859E650092902715185D69A11C6F73DE088D60DBBB98E70ED4B7C5D4CA9B2AAB +BA91E81E20CBF4716D603416B399B856C46729D4AA83330CB528859DC68CD028CAEBF9FBBCCB5D +50CCF2D3323000855669842544A61CA55FC4209AF3D6187100C47F2681D3BB823F09D3DEDDFD89 +C87B17BE0B0A0D14E75370C6D2CAB809BBE932E6718945D6933EBB8A24FD507906BC651216119E +CEC5B916BCA6459AED96417AEEEFEBC4E71D76DC5B17A37B8945A83946E64B21AF0D42282B0E25 +A3DDC555E709C80C5C8CDC5E1AD62B89A7CC1E1AEC962FEED653010E2FEF56EB5A14F810AEFE27 +16F0A27E7EDC63A7D2E1C6AD410E22E35C8C923EFC2554355092DDA8113F6D9D5B5BEF54C824A5 +1D7F5CA2CCD4321F9C3A6EC8320F9A577610C902B70B6B0EE5BD381D9A7C6B722BB55EA06DFB77 +DCFE84A0397C8FB3BA4917521A88B43F9F12F81571C39ABE049D54405B96D0BBFFFDEDD0E90C3D +D6B26D82D797C6B31B7FEC4BB0B51B2E8357C5CA8A6181536CC13498F7EF383B98281756F3D25D +6961D477191F00452FE9EBAB94EFCE0C958A415B7A8B0AEF3F072A3DAC3B6F1BC974CE0DC92A08 +00EF65EDABF91DDCE2931A6B6CDB9B46E106EEBB1017E487E4AC078243A8441422FD61BE99A8F1 +022CA7C9B86AC24E4101F46614E20749FA065C9F9EF8AB8D45DCB5632F7E5579A4EB5C44588E0E +AB91E0FA25868A585ED5364804118B2EEADD52301644AB6AF821BD6E5A78E3BD4701D7211B4929 +1EB22DA0301F61F69379F1319ECF14C6ADCF574657B6BA459E6FE012A1C6CF198250A7A9BBA055 +06215E6558DEC8CFAF5F342975B444F98782CC674EF5E03DFDF803C5645F303E229448E57E3891 +37A4703A784AE802B6D730C82E7A5981DC29B586174FB22E854CBBE4C359D27BEAAA684866AECC +6F33F9C1E0CDB2F97E32F7DE1C74CBE941D21EBB079CCAD9F45BB6C976331CCB1AE84BD12DDD0C +0245E24C556BD9DF805DDEAB76BB5B82A148CDFB8C17F97B70114107A41812EE10D16366444BFF +E6EC7BB9FE286ACF78FC1C50369FA2E0E9BB26BEBD3112F8715651DDC05482809C0348B8834AD5 +F8594197582B9FA1318E4908A108A08BF0163B419D0B20BEC4402E2B1E96F18552DD6FE45B9759 +FCB8EE6A64B9D901173B3BB5D36EA3074C8065D37A7B0E01884A59841C5C208D924D8436AE36B5 +F7EE7EBBD690EAB5AE9897B43B6F46549B6B41CFC6A5EFEB53A6E1EF8D9DF28E78D3186158D4D6 +1C10AAB0C85FB5A9CC43535D2E458090AA80AA75F39B0AD1C02E3C103269E8A40E60832AA2B160 +B78BF08BF2DB06C8D55C768055DB5F52D1F24A2599EF1F412DB23121BC8BABC1933CD43B0A5908 +77246FD36AB18D0F0452325E5F1FD495499C754D3EFD68D948DE856774E476660F91577FA68756 +CF17936C23246504495C072341C8AF8E7E4BAA8A5D7CAD373D9599F52A4D88C2F5DEB65A2B9C5B +6914C569F8CFF9164725C261EEC2AAE3C88A26BFE1B6327DF1EEF827562BBF37E8106729B5CCCF +C0F1011864574E4D0E5B3CEA70B562F03BDDA49B107521F192D36ABC6ADA755456175EC9ABBBE1 +E550C412239EC97662338E92253BBFC7D142570A6F22E212C8DECAC66B4AAAD9DF4BB681BCA16B +29B7FA623C47FF37905F923C0143AE479FADC0E27E8FA15B461509D847F02876975C6B3B33F490 +A4820F9C43D3F0115C6157211CFF4B13696BE005FD45481C9E496B078389E01815B78C9402841C +45B721355653E4B64C5F226D114DC02ACCDE11E588DF5A7889B8670F1C9F40A5DB89A7C8E901A2 +8EBFD43B24A5DB9B2F864C6A45F9DD7DA926DA86DBE5E2EC9FA04004862A5903F6A5F372303738 +B42D7FC4A35941157DB85F26C8D11099545E57B0AAA49DE793C778B8E75F45CF566B54BD1DDD7D +17E3621418F09A96A4EA2D20AE83D88E45C0B083E0CB9F3D5FB7D704581BE82E3D242B3EA6A7A9 +29B3B8AF7F5D20CD8303E7EE1CDD637E3DBDFA0B876A2E7B7106AB66779F1ECE9AB75E4C2083C7 +C97B246EF9B67937CFE4DA2FD95A5E12D019AEB10A8B1F609F2426F53CE3A6573B8A13392D762B +B2A97FF2B9ACD94ACBEA9A46D6F0F2C464145BC6AC740A19DCE03904FB928F29053493D4CA10E1 +351458BCE3B003C4BD38C891559E363DB4F6189F4925E314F77E7900DB5285C87EF4E2C55B9A12 +CBDA6762604F98B6D2209BC928DDDA85C5B5AB12876AE7D6864E8A242EB1251D6FD05F8F088A80 +FCF304F598F9FB6AD997C8A5481BF577FA4F61B2B742FAF0BC932E886A961B060E6320C3D49D62 +7C04EB0295A7DF9F8AF5F2BA6FB64AB76F685781460B35B7C510E3867DC0DC41179A1E8BC5BDB9 +5DC54721AA06B8C2119A8617674BD10F0687B07D56DFD63AAD41DF660F600DFCD91DC80645C4F1 +3FAA4A6C4B240863F6508A81EDF8B867C948EB7D3A7753A4731AF75F0C05DE4680CE216E04C8FC +49BC1CF193589EA6A33C25BC5B7155D4E34A43B49A8C37733AFDD714774E9E70FC22B40D6C9192 +D073E2E9731FA2B80ADE7D40ADC5FE1ACC52952159137FA5B30A7EA95C39A5B6CA9F6F1B3598B2 +90EC820457E11DB827E3D458C2E682BC1FB6B5E74817246B4FB47DF7DE1CDB835A849078BF71A9 +7711EB1F74791E797B3E73FCDAB725C5898D5188BAE77432AC20087EF62211EAFBA46B91B295E0 +8FD9D4C98C1331E4A1D7206A60F03EFD2E8925ACD1082FDDA8B2B6980B960C9D03BC754AB0FFF3 +EB6E92F8A6D41954CCC7A6598CCA897057141F0ADDFED6F802994D00EFC0771E4B5CC79CED9844 +E2CF890AC9F70AA4567102ABCC67C084AB818076D3134089E623CDB5CEF16E6AC89A1EC34BBC2D +ACF87E3D7EDBC5A2FE1774FE6B5BB78FC53425D364919E8F086D07ED1ECA919F003A1C5C05B914 +02086AC63F3546A34F2F99C88140F4C51096B72169B413043C366BA7BA2E5D1DE570FC1EC6CBDF +03658EE0AB3C1144FE15F8E89FF354E00261483F366BBA154DAF5E6D910F1D40F7DB4BBCF8D82F +4BEAB925EA8B0F5761B1517A2BFDD400E6B6B9605034688A7148596AA8F25B97772979B49AF56D +28B10146125B19AFC56881CA4BD579D649D104CF443E94B186FBFA0F29538D8AAC4EA3C1774A7A +64226D033869F1D821E98B9C9C1393FF35EC9A962BB8BFD3D8D062C086234D6F14D9AE028C2957 +5114905FA35B368C44BFA14DE4E73A4D6C1A119B79A6E3EBB915C9D48D3FAEC3EF31B7AE39217A +21B66FBA853E750000D395A9BE87E78CD91F390C5919766CF31E45EFE678577ADB5931CF5553AF +54F9A0E9BE0428EACD715F7D20C3D75D20810C4C0D96BB10C14B557C201B954841501341827C1A +30DA27C34A5A4CAEAFF4A3ABA566249EB82BFB367EF41635B2E27133C0BC4BF6EE280401B00B48 +87EE78B50E524A9526E442E2EB566F3ACABF1C60C65F60075C434367C67DA4AE42B1462BBB0AE3 +9C83123BEB32327FA66C18409CAEA447B8F504FBFB2CA2EB0448691CBC3C1826AD55697611E310 +BA84B3133D1240BA430B08010BBB0DD02A84FECA352324CBCC9AE188CD9213C2D513745D868C4A +6A0C995D7B455034DDC41A8ED06752805DE487375C69DD746D7F8940101EA49871A4B28AD792A5 +69E76930C32568A9ECA82892B44E111ED0806BDFFF59EDD79B5BB11F82CB7EA201524E6D6D8343 +C3EF568F33A450F8A25128218CEB810B4D4566547F2F0A0640D7F4C8623945E5755BB7B6B48272 +96AF202D9F4B17A2B4CD03D961B5728C04E275E037E49FE8A29A89972D0061055357A40DFB5019 +D0959C44E231D6AB8C6FCC8E24F5291E4B9C082AB5F7D58CCF25 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +%%BeginResource: font lsunr25 +%!PS-AdobeFont-1.1: LucidaSansUnicode25 0.9 +%%CreationDate: 1994 Jun 04 10:42:59 +% Lucida is a registered trademark of Bigelow & Holmes Inc. +% NOTE: This is a partial font in Adobe Type 1 format. +% The complete font in fully hinted ATM compatible form is available from Y&Y +% (508) 371-3286 USA, email: tech-help@YandY.com, http://www.YandY.com +11 dict begin +/FontInfo 9 dict dup begin +/version (0.9) readonly def +/Notice ((c) 1993 Bigelow & Holmes Inc. Pat. Des. 289,420. All rights reserved.) readonly def +/Notice ((c) 1994 Y&Y Inc. All rights reserved.) readonly def +/FullName (Lucida Sans Unicode 25) readonly def +/FamilyName (LucidaSansUnicode) readonly def +/Weight (Normal) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /LucidaSansUnicode25 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 161 /25a1 put +dup 202 /25ca put +dup 203 /25cb put +dup 230 /25e6 put +readonly def +/FontBBox{-26 -236 1026 815}readonly def +%/UniqueID 5054525 def +currentdict end +currentfile eexec +8A630409A330FC5FE1ED7CD3C975467DE475D113569CAA8B923FA3C5A4A5DBA1B426534896777D +FEC0CD780FDE4F4A4B37CBF69BAFE9D7B1674F09E7B60ECB1F741B6EDD9AF78B9450C77EB98488 +7838A9B1EFEC7714CB963DC0D2D7FC90DF439E7B2FD67B771E742DC7E7DB927415569E8F7DC363 +784A57FC7AC7182B65E2B2B985E0344DA414383767D69F0072B82FF65429A625F418B9554E3934 +A06F03727E3C9839A4E576E2351D0253B74FAC9084AF6E67133A5537926A8C80589A37F8ADA04B +5C2AC1126AA5CCBF23226508D011D14D13C6FFAC13BC42FFC82A696C06889B21F1453BDA33C3AC +FF81DDCE02738FAE387DF215DFF6FF74471B4EB78EA8C9F24AD655490C27E6059414A56A52A9FA +E82AC778F1210142A0F9051E5AE4B9E361B1FB91CA17F95CE918651919C7A235BECD1E676D582D +643C13D5912E896FAC77994450E36EB321BDB157BC6DB7FBD0EE4B0C1A420C2645ED9595D2D21E +F387557875DF6A9D774DAF42CA703FAA6377C62B435A83666621A7C4E578421D8C68899952954B +E992C6F613EC3AF8C2F4EC93A4AC5D7860448117BA2B6A968239B7DCC4036B4B1FBAECC17CAB89 +BAAAC5D4362C3CE32E00409A6AB9B231767C1A27514E9AAD74C32EB9F6C0DBB6F839A28BCBF862 +D183D1247828DA457DAC59A0CC0CA4153457F0DF3B5D6FCC06BCBB0B5919DA74CEB11DDF706F15 +B342B26D610DA0137ADF11F3BDDB3189C9DA0F0E870986F86C61CCE3AE60F771B65DD2E920BD6A +5094FD2A12AB3A59052BAF45248C006D431F5B04C9071F925A7F52C1271E7FD3A7F9B60FAFAD56 +8D8CEA6BE39066D98313C932A77140F1658FAD3B32F7418CA0FDF48BDF17F3AE6F095D34C707C4 +9F50C3DFC3148BEB942A63A5619B94218BA5C1F63F66ADE29E1396CCF7CF7CA97788D73D4671D7 +BB0CAE1B8E13CE410F2172B2445CFEC734F53A6EF3D3412C37908D22E3E80C817EAC0955CE2752 +E9B2327A08895A254ED18976E194E85CFF852770A56665EBAC4EAF1F6808F6288AA2776F813D6D +F089F25B21698D10A5C00522210F606F890760441B0871F31A4C0718527B68541A0314D67354BB +834F4FCD365DB2379468671DF697122B66E999BBA6B2A5A6D95E26FEB0E6AA3B4590D5B0C8F4F7 +AF1CB7FDB904F10E8817F7045238C813053CB2096EE5DAC923CC9AB2DB9FAE17B2BA08CA49DB7D +71ED0072A402793C51EE08DC09FC9C27F2E15254CCF9FEDB998F0E3B12C60BAE7CBC550A59BEF7 +CDE1159E1D6FA72E0026BE03299D851776F57069E9178CA0C53CBF939792BCA7CE52A3A90CA729 +91180F917F1E21FFDC2E306595ECD95BE6323E539FC73511C7FE237C873A60B4B4E06C49C39C1C +D1CEB9EDAB2891F30BBE64EE95C27487325C07F8F83B2C0CF8B394C3D0ADA55E4B4541A917B23C +6181480F95544F2DBCE9F22F40DC467F300234CCBFD55A919A7B4D7EF74D0C60E83F2627BD5471 +97A31EF7AB8E8C27A2EC8CC90B846212BB79CFBA9DD702DD627CFB9FABF73790BBF5AA82450017 +4E144A95706851EA88D454A80554853D7EDA089C97BD99805AD58EA333836351E1A6FFBF3F270E +E36B9A8A5C98FB53B9B77AF49F3330416708C3F8C9623899CAA72E8812C963AFB98FBDB4596F18 +32EE5FF6F6AC53B618EFDA664A090C1778C5D340CC2425184EF1AF9C6A7BC52167584CF057F737 +006496131A33D19C40B00B4A728904CCF6669F1AC17E354B71B9D6BFB322CFC1DD2E3D66C97FA5 +7886ED6A5455AB1AE8D51393C52D017C5586EB16FAD517AA4F76B7F0E3913C235A5986A767FDBD +BF04B397E7150F9CB9EE84BC53E65CEF2E4CF91C0C819D7A4860E35092E3EBF647B323331C5497 +A980FA0E95D21A0AB2D89ABF677FBBBE1811983D6BE163609EFA447878A6B9ED22479CEF8C9D19 +E8683D22DDA81461371B0D4A2F993B9ED149E14BBACAD0AED92C0B180E46DBB02F8F658A470ABB +3688C09C52006DE3A6264E0F33E92B1C6F69FE0148CB284DF2283638D396E5F8C8C7FB2A531350 +F49ED6E90498D2C30B6D48BE680B04C6CBAF4B2F92347AE886270B5753D12FE54A8CB0EA003022 +0143DA37757BCB85E0664D61384FAB84DDDA0468702C397BA2A52098181BCC26ECF597DE542CB8 +B1A0F199032BA329EF8185D97C9B536BEBDB7A9588D9EE830804F0245FF142D4BCBFA74E1D2AC6 +BFB24ADE82B947BFCF2AE083638301E0D52D0838548B9B935B52BC5F3B2FD8AEDA7AC6A0F44803 +0CB7E258BDA85320A3D6D3EACB188956D3FC231708134DE6EBE2A296EB0F07AF58E5FC366472B5 +03FA40D0156FCA4320BC906DB75250AF4C55B9DF5410EF3ED0DE8A7DAA82A8762F456BBF97BC78 +3849A1C9E1E9A7EF154084EDFB53FAB120D5F4A68AD4D83442E7F6ED51F251793E1F5D7504C874 +388E61CA7F9120C55228EBE6EE837BA371361407776E82796F5CAE390FB05E2FF92984F15170EB +89296050D3B5CA30D0ADCD59B9D666643FB69C43B2818F03F0BF529A5E68FD043DB7DEE7EA3C34 +0FDAF3598037C8C0F8657F16EAD01930DFB8A633572D6DAC96CC22EABF4361A4EA443E55102E45 +C2A7443BC2DB4883B1BFAA58343FAAA48E347109B9F5D306E450E0423320763CAC8F4B48177C85 +11F6703A383803215E520AF7CA6C449C4906FCE3695117888844DEA4A505372010A0E130FDF705 +A37E1DBC59691D785D37D40E737AC708881A603BC0D97730526138BF428D951AA75579D159E612 +F847418C23DD120FBAB2CBBFEDF9BC3B972CD59132C313D84F5CE45B0740BA7ED8086165203068 +689FE81C9CB701D205C815A8E4BF2C341D264017ED02602ACD5F6576CA7606E51B3EB22CF7AFCC +3C466B69801149AF48A8E012CC75559041B984640EC5F8043A14D70ED3AF1AF7395213E13AA79E +A3BFE238CDA1C40BCD49A006252ABC5B19EFDD78BCDB02987FAE +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +%%BeginResource: font lsi +%!PS-AdobeFont-1.1: LucidaSans-Italic 1.001 +%%CreationDate: 1993 Aug 11 21:10:09 +% Lucida is a registered trademark of Bigelow & Holmes Inc. +% NOTE: This is a partial font in Adobe Type 1 format. +% The complete font in fully hinted ATM compatible form is available from Y&Y +% (508) 371-3286 USA, email: tech-help@YandY.com, http://www.YandY.com +11 dict begin +/FontInfo 9 dict dup begin +/version (1.001) readonly def +/Notice ((c) 1992 Bigelow & Holmes Inc. Pat. Des. 289,421. All rights reserved.) readonly def +/Notice ((c) 1992 by Y&Y Inc. All Rights Reserved.) readonly def +/FullName (Lucida Sans Italic) readonly def +/FamilyName (LucidaSans) readonly def +/Weight (Normal) readonly def +/ItalicAngle -11.3 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /LucidaSans-Italic def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 54 /Aditi put +dup 39 /Alessio put +dup 41 /Ali put +dup 43 /Alois put +dup 173 /Ammar put +dup 47 /Andre put +dup 49 /Andrzej put +dup 51 /Angelika put +dup 53 /Anton put +dup 55 /Ari put +dup 33 /Arne put +dup 59 /Art put +dup 61 /Ayman put +dup 63 /Barry put +dup 65 /Bent put +dup 67 /Blair put +dup 69 /Bonnie put +dup 71 /Brian put +dup 73 /Burkhard put +dup 75 /Castor put +dup 77 /Charles put +dup 79 /Chi put +dup 81 /Christian put +dup 83 /Christoph put +dup 85 /Chuck put +dup 87 /Clovis put +dup 96 /Curt put +dup 89 /Cyrus put +dup 234 /Glen put +dup 189 /Heinz put +dup 56 /Jacqueline put +dup 57 /Jagannatha put +dup 58 /Jan put +dup 60 /Jason put +dup 32 /Jeff put +dup 62 /Jerzy put +dup 34 /Jim put +dup 64 /Jiri put +dup 36 /Joe put +dup 66 /Joel put +dup 38 /Johan put +dup 68 /John put +dup 40 /Johnnie put +dup 70 /Jon put +dup 42 /Jonas put +dup 72 /Jonathan put +dup 44 /Jorgen put +dup 74 /Jose put +dup 46 /Josh put +dup 76 /Juan put +dup 48 /Justin put +dup 78 /Kamal put +dup 50 /Karl put +dup 80 /Karlheinz put +dup 52 /Kaspar put +dup 82 /Kees put +dup 84 /Keith put +dup 86 /Kenchi put +dup 88 /Kettleson put +dup 90 /Kieran put +dup 92 /Koen put +dup 98 /Lalu put +dup 100 /Leon put +dup 102 /Louis put +dup 104 /Luc put +dup 106 /Lunjin put +dup 110 /Malka put +dup 112 /Manuel put +dup 108 /Marcy put +dup 114 /Mariusz put +dup 116 /Martin put +dup 118 /Masahiro put +dup 120 /Matt put +dup 122 /Maurizio put +dup 126 /Michael put +dup 177 /Murad put +dup 91 /Robert put +dup 93 /Robin put +dup 95 /Rod put +dup 97 /Roger put +dup 99 /Ron put +dup 101 /Rudi put +dup 103 /Russell put +dup 105 /Sam put +dup 107 /Sami put +dup 109 /Sanjay put +dup 111 /Saroj put +dup 113 /Saul put +dup 115 /Saulius put +dup 117 /Scott put +dup 119 /Sean put +dup 121 /Sebastian put +dup 215 /Wilfred put +dup 45 /Will put +readonly def +/FontBBox{-250 -211 1099 967}readonly def +%/UniqueID 5029007 def +currentdict end +currentfile eexec +AE40F8585C2492B57FC8C19373E315912C0135F3613C38B98FEFD06419749A2EF936D049568E91 +2C3B4814601E6F1C68E63168C5EFE4A12F1C972A88E59D27C31A2A9C0BA365B6FE3266DE7CD0F1 +1D5F0698C11E8C1D4F1056410F924EFF7F265CD09F63373FFF21407562BFA055B1BFA359C5890A +384338F55437BCB13EF47EA2FEB34874DAE99A2A8CDF087F076588CEF4F5F52D27F99CA2FCACC3 +B00B2DAB26EBD6CCED97C1076E2E38C1C7179AF884D34E5981F3B13BFBED7B35D318515DCB2A38 +02E5402628ABCA3D4BC1F4808D32312ACCEBEC95EEAC23DBDFC3788D91B5D781933BA1E7A9E7BF +693D5DA7A9281F1C6A7C34E8D6A8145895DE4B6AFA59BC2F66198E226DC29A066BA02F4739FEF4 +FC344E81EDB55226B5E16AF7282FAE761F3D9F253D76D6442D5CC7CA3043F7B37D5A34A905ADAF +242097EEDA53782431445078C0B35090520B01B437F01D891573DF402A427CECEC5386F1603BEF +05EEB7DD5FB545BE8042FDC2656F47C7ABD12DF9DBA59693E4F9A554FE067AD8157D2BF1EFB7B9 +1C54F92B27DB8FE4AF1572A8E3131A5FC251FC8F3D5918C30B18337CF3CEB9AAC264E467F9C4E1 +3BDF64763DF9650B0F6A3FF6092F2241B1DD69076E3878B875564E5EA253BBA208DEAF32B48D82 +CA70B0D8FE5181B29362D1603FCD82116B2FCC77931D0E121CDC23CA762E8C9EF47EF6780EC5AB +D9CB39BF6BA8F4D191F9AAB5965691C4346624EF1559E151378A8EC69A126FE29F5BFEF6162653 +B55AA546E4779E7E60288C059D2DD6FAE507F6E01DB910D52D10EEA2762D59A01C2F1FA458466C +07AA5A0980968990E18D71F0AA71BBD17CEEAFF025A16913D1BA4D5974D6258BA0D1F934656B65 +19A3AD2375DA469B27BC108F919BE01C833BB6CC59AFFA34F976382579EC5253B4610F9143318C +050160C7002E29656B29874C5BC27700C912C7B00C1F62458775BEAF10C5A2858456FD04C5B6E5 +B790085D9F584195CC9BE74E7DEBDC57D5084C3CF8168D7B194D57EED9F72AFE24EB78A7CED489 +AB96EE6F2CE148C3C8CBC466AA2B35B36842CB48476D303A7717C4369F803A4FF311D53F1A0044 +B5A3B423AB2D6F361D233CED47B79D579DC4BBF97AE7E6849CE72B35CA881B4680F073C4942FB1 +04B110CD36C12B7FAFB9F8F03EF419A1A5CFAD1D28F13EF057C795F53737018583F52474008775 +5141099E0C46D3A7F65540A05DEFF5A0A1C68096CC39FA13354863897E93F98B98E2C53A693C2D +57AF95936FA23B61A55E26214D5B2337C4488BD6DC93DDA298FD77A80625C917D9D432EC1AE92F +DF42E184BCC2400C51465244F338DAD00BF384DC5910AE26F964CBB75F091609E73A3A96D8D07D +BBC4DB58148E2064C50B5EBDA56DFDA7679C10EDC505D6816B86241997582D77385E0AFD164AE4 +5333A18BC4FB8CF818CEF97158CED9628B78B6C28BE08E747739F924A7CC9C9EC72FD12FD5BCF3 +2D200E0FAF7D7C8F007C84EB868C2118F0A159DF0435C4F9E432F5F7DB3766CEB23939415E3709 +B1E5E14996C0B7123EC993739ACBCF6B28BE7628D11843B2AAD85AED50C9D82B5151EABE73505F +3A1C103B7F02C0429A32F3376C13863C347BC07472F6CB82B39EA37525A46B95F9387E654F8076 +EEFDB79193E97C16A69EF102ED96F180F44586ECB46F45611BB4FA173B4C8DE27E2C4AC2BD3E91 +8441E44FF42D13F9C119778806FFE56B8ACBDD4537C981571639C5D9D5522C822DE5F29B426B83 +74E02DE01D2A2B30281676D4593C5356214C5C6D3FC679395E0A838A447B2BC803218F97AA6C92 +EE62D3600680CC93187A2D8DC3D7616F4928CBC3E8C42BC5536D00A0F1D3FB114EEB9DA1B5FD89 +50EF78BB34E7AAAAC3AD105D960B3AA743CB487AE7D000E14C5BD14A2250AF406174ADF67A0BE6 +7D62771A8D6283F574F314FCE1FB41B80275B825066BF711A982E58E8F34657DB15E29B20B5EEF +6EE8ED0BAB63458DAAB556CFFE712851DA37303784F656309ECAAA93185643264ED4B7B6E05829 +67E94B9311A2636F0D6F18BF83E5FE28C81DADA7046E5D485B6A9754F679F2851C5C3F4071153F +C25F09DB849C09E9CC34A96E0DDE7BF692895D4B6678A1FBA8DF90522086D5C64715DE5FC26F16 +B954EDB7C3A0A72F1278341A1018286562228E2EEA26EE8EE340CB332B43CA68C65A2D57FEB45D +0BF8EC6092219E7EF9CC649834D297EAF3B5FB00F2F83399311AC5FABC8761A13575B0C4D917BA +0AA75C78AC3AB78AFC746CFD5FEB2B91073F2FD8D4C2A3A490C94BED5131622DA474A860B312AC +4675661BDF91D076228D148270253325F12147C5A7FB25FAD15732E43004A70F095EE3AD448D9E +336CF44C4D55CFC772C92E15CEEC2F56A002A6E1670ABBB074DBE0CA55BE5D1FE65F5A9FF90E1A +F4A4B5455B9F3A82502C4D860468B7E7E91A77FC043C44E19211A96D8EDDEDE29FAAF156AF6C71 +CA2D0D26A7AA68A2A0864BC236E3B410485D7CF2A51C3FD22A147E3E44E723CCE629A3E67F5321 +6BF328C2BE130CF9C05260E4E5FBE73D9C2032BEA5AEE7B0ABCFD2F6D9874B77D3B61AFDB4B300 +55A0033C9EC86962E50CEF67EDEEA31C093B3A429D9AC37D58056FB739B64FD22BEAF7955D1A12 +4E1F5F81C2FCDD89432C15ED61285B1D300C10714167D1D4DF9C7B0646BD825805B7E6F21ED4A2 +06974B556EE6306C84FCB475F4F242C440A41B67B543BFCC178DEF4E58B739ADF0E14D4D0137B4 +F48BC39918599A70DF1F0DE49F6527D25ED35B5901B2EACB584E8F29DE5CCE15AC1E31D4A14F43 +CB2BE1150D22AD419EED486AABCEAC25F01BFDFDBAE2E3E4C899B3291897A638B4420960CF7AC2 +F08236D1D7747AF87A207081CACBF00A0994C2F98EB90AA3F4211EEED6A0425C6BC0CA31DBC6C9 +DE03E02A5AA192F0187C822AE022AB776CB891E95BB90BB89C07D34A38911A34BA591D78B7DE83 +6BDC01BA45F0A66D735E317B06AF7EE6E817E98FB776EBEAEE6B8AD56FF5DE1134B7EF55D87F21 +057F1248CD06932F6DC349D2E9B1DE0B81E300625E370770C548B89FDA0AA4F8B7373426A4C8BC +200F54CF2A587DD11ECF76E2E324591FCA3817DAA9B3FE117C826F5B53F24C722F766F73903C58 +A81A2067F7A3E8544B64E26BFBAA0AF6FB10EE8D4E99C49CAB1B397E0AFFA566B007330EE54DAB +AF0C044E8FF8CBCFBD70A372C5050F02AAEE6E2A648771A199A8290BAF6ED4AD485DACFA5A4937 +CCCA8B4D03FE96D7CBC7C60E6E95B53BDA2597C66168D3564D1BC6617033688510AAE0F6DBB16E +192CBE34F5E0364233AD2A2D0043703A48EE02E2B4576645BEAF3D44622983407461F2E700F3DD +51DD10BF742D645F22700223960637361E88D79EA8EC0084F5F20D0BA3EB94A7B5EEDDE499A39C +1D621945DFB5937A31BEEDB0E2DE8395EAEEEC4A912825EE2D30E06A351862C9F02711D38F63C7 +4BAD03D267BCA956F029F2BD396A577000AAB31B00B004D7DD5F6102D7FE0BB8443AD768BD6051 +CBB0F6C74FE866A2628789EB0E2044F2EA6F0D1686BCF0BB7F245AA757A20EFD93268FC1E140DA +35E759443BFEB681CA8B10244B4E395F3E9A151A5A3D74293E5EC0A2C2D2DF37132705FED78742 +8C5E876F567D1CB77F7338F70B3FE5AD1F7D9D6AE6AEDED983B638C5B1F6284BBB8911387C2CBE +51B92657EC57F3F28F9F71BFE582DE883F2F24A3E1BE90D5DB001E7B69968AA2B8564940A2B3C8 +3EECE73D1DF1A51672429FC169488D329D8AE41E0D7E557F6678C6E36EB1877DA3B7AAB89EDDF1 +54AF743BB2FB8F4EA0AF7E8761F3EEF6794FE66A5494E74F7428EC2D47149F05B8E3CC934C46B3 +8739D1BEA64A39C4AF8CC42187FAE682546468FE3C68521D074555FE83FB96B018489EB12C7437 +9EB97E53BE86318E53494DA7F214B9EEF02B1843DEE3D3B7FD4F94986F310FAAD236BF55E7137F +8B35712AD6C103FFC59F05AC12629D2CB39940395C9683B49D80D0548A17D45A422F9BC0F02112 +DE3AB03E5CC55DF670637BE7E4F0ECEC9B324CC26C16DA89550D80C609134B14E9C5575662A309 +783794C673B64C3C62932C64D9D9F560CCBDB7BB6DDB1A0D67A6C1D09AB7BD60348F91107F65A1 +3EC3149656CDA201356CC2AEB313A97E203C8037C9D5C5A70A50DBEB91E8E4B54EF9BF8DCCC033 +23F8AAE82CB2B60737C52832DA384B02AD2A1D80EEB88AB6ACED1B44AE582B9CAB881E44AF4392 +D29F81A30B430463A0D48D26ADD6D7896EADE1C0E82DA83E28F414BB24086566EBA2BAFF475CFA +123D905A8A307E135DAAC8735B833005EE356EE627C6B3544DFED3D62F25E88429C244288ECB83 +6733096E71F85E602FB5A77E7807381D0F3805E29716B21D21AFA3BDE43C3EAE43D33082F2F14F +72CABDFA02022D3146A2AB88719998C6EF1984A5891EA63E47C995F5C484D8F3854A79AF856F57 +54E9DBBE35668176F67FB1ACB5238423D2E1396E7A4241574033C78F342D11F97D8CA238312129 +0D467F2A371BA35E52024740F82CD91A23525EF0597B06A1CE57C7D568B25A96EA0E62756F5E07 +1A63F9D2C22E1C3806B2F150A57E5ECAF61A999E3573E613F94591FC4B0B8F4BDBC7D2619E800D +A2CD525EA0B722CC25C26C740265774CAB6C3CF110C6A1C7BB9F0A2EA2D03CC8C483DFBBEEE0AE +831A31706F790C0F695B926C89081ED62B5D5E1F02F405DC455751D87BF06CC05147D56CDB03E2 +16E4EF39CA3E976F786DEDB9CB0FFC98E3B115E4BFF4BD63C2BF6D577971ED3FD5525448558DCF +C4D40E681C9FBBD650712C69FA78EEDFF970ABA0BDB69E33A8DDF3A08BC0E4DB8909A2DDB35096 +4FA94F03284532ACE8C62E8E0C5FC06EF66266944FBE4C6C239CB66A4445BF6E50E1221F8C9BA3 +2F11E198D306F31DFF8C9CAA5AEEAAB08B30F0ECBCE3CC3329AA58B1F165F151362BE3646EF3BE +6120E2B618135127192D4CBC77CBD03A83F6717133B61DA06E2118AEF126FCEDA71A426B6801C6 +C70AE8192EA70C6276EE360B9D89388C37D075644A5009E4450B3E6F88697DE0C0A2E6A1FE58A0 +72422BD671FA241FE11788AE83F63AF4114D06702D251FEC634E562CE367948521FBA53344D5D6 +18B0A9A2C5E013F8C790BD5DE8AD289DE859768CB488D06F45DB114FE12B2BA3FCD88099F955CE +2A3ED377192307CECB2E7227DB751776DAA54BA17F5E7137E1AA1F1B6DFFE782F715FF29E0C370 +76BFF950438DC7B7222A67238157D769C27F48CD9E39AFC1B0AAE6E670E20E982506FA564ACD52 +9D108F72E9A615C61907F00F6DC9B3FED3D99380B99242A53027A154891DB04C3ED328DC4B188D +9080BDB06D9513098D1C8A69D844320CD494DA7DCA8FE6B008D0DF6B3121599E951AE22A9EE37F +DEA7A4092509F1743505DAD2B07E1DAB21D84038115C10B5EACCC9C96C62A111AEA09B3259BDA6 +20202DED8FC1BBE20A8CB09E7C77055A9D0BD7D5F39B8F065B290900603EA23896CE2E7438E6CF +63BB8435EFA37FA35A2588519FC79533D3A1C1B376EC7BBE92388C3F3248C5239C4D21730DBAD6 +65A7785867BB355EDAC969FED613A52354E97501D56909BAFA0F87258B068CAF0907464B498861 +1D3E7E80E645F7AEA5DCBA04CE122C7A47007A73E725DE31C475A57988CE41BE7D1FE972A589F8 +D9CDE0977492E07457698B8E9E184A70EE761583058AC50884A880936F001D53D182CF9605E588 +92910AB45E3C752B6D266CAF22397BAFF1591976B6DEA208495EF675876E92ACFBEC1887245048 +30F05659B2E73E8E049647F4F28F529684085CB30EE66FA5929774E49C15875493F661B77F0C4D +6391EFE5A0D384BFCB2FC1820130E2E519C3715CFF2AC4B8A74E81C368C55FB5782ADB9BF9644E +2FD416320DD3C6CBEC64A992B3FB79991E62F129D5187763E7C7D8473F963F43F0D70A8EB508B4 +970A1572835201AE91F48B7FC35D0D12E7015CBD6DE0677D715E0BF94F1F9D3242F8600EB2B4A9 +590BA94CE6D342D9342057E69E0B71175B475F9F9FC8CDF962690867B6B962989D94B7CE670CFE +23D28E1197AD6C118DAE3CA2BF62FFBF5A6D03C7E1D85199908F9DAB1709E1A3FA4C1D18535AE9 +5306E0641C9C328886C72C91B49B498202C8B72EDD5C7F5DDF178584A24E6A89DC9EF5437EBED1 +CFD46ACFAB9678F27F4BB80279CDB62D9A23761E70ACF40ABEB38BB3242FBC012B8AD563073BC3 +240C6AE167A56B084DABE9096EF07C38BA3E6D380E2A1D1CDED670305CF0EA1D070E5FB8574D30 +8598EEBFB0C6FC907E25108902BBAD331F177EC95717078B97EDFF258F55793FAB9EDDC508FFC4 +719F491D791F5D8487FD5A31992A1E6E4DF7C82AA1BEF383C2F74ED7163AB6DE334D48A11520BE +2B47FA5C0B07FCEE735F63CCAA25507A78971012EC943DC2D1607B3F44DE13882DF23070BC066F +F74646DF196E1688D7350D7672F93691FD5950AD7ECE2FBD6D4B1CD777C88DFFCB90B57F9C829B +A0C9F061F7DCC650CEA49D70B440B84276E432FE47D7D4D67C241F8097469638E4F5076A65FF5A +15FBE8690B4F6788E843753F6D961043BD8C7908EC2A2EB795AD2955DDB8CD9B6A8BCB3C2BC673 +0A24CBCC79F15D44A6AD0CA0856E661EB07890BD79E93FCAF93AF80BD1BDF915B799C9118DE981 +496A963B4A9498E11893F19446FD9AAE7E4B4FACA51601F5C54D46E7DA49750FE88F420E9D7325 +DEB5A6B091469240AD0DB4537A46E71595FF598BDE54972860305F59F593CBCB7B0B26130CCE19 +E0B553E8D52B1953AA0E463D49A01B3B2B588044D423418A58665DC05B5AAFC47E264985934F03 +C358035E5E4DADDE030060BC07E7F0526FBEEE7FBD26CA50111E8BE27FC021214AA7BC8518E51D +93934E23270DBEED1246F623EF50C9B12A3A79FD2425DDAA17B4375FBC51A1FD8A7A456441C5F5 +C8DCE1A112C00058434E3250B841ACCFFFE4EE5CE4E8DCAD1DA76C39CA24EEF79A2297B70D6AEC +75B3179FBFA7A4D90B4522A0F4243D14FFBD028961211739790B55947C4DC63F0DB959A3AFC7C5 +65D672D80422330AAB64D51993BCD2A34FDD8B1848F5C400BF5236188C683BCFE47412108B59EF +41B7465B020FFA6A9BE53269B4F8AB5FE2A9373C3AC12A740EFD72228AC156A999C6079687FE52 +19BA162C917DE80869339BC76A9D7DEF6224AAB13F1E17BB4FBE9722B94DC84256529932A33391 +D085A85A4DECAB06978B9166F075B51DACD371F172D428081AE1826645F9A461C257A46BAEC29D +D6848025FB7C6F027D67A89EB217AA9879DCE693729D36171F815C3C6967F8DDD4A0EBDCDABA1B +AE3C7901A071501004DAA11EBF4E6B20242EB6C4932403A6FBC9C190C8BB789CB3C3F2DB0CEC69 +1FA2A1632F625FC6A1E91CDD863CE75338CE56B6F8863D77FC57B211D413F75B2F7C16F5392015 +C33B55B49BA91C9EBDD5AECBF97D80FFF1B84488FB259623C858B14BB3D78215185A866576F34A +0E259D58C750992B67B0900001AE2CB8184419C9BEEA52ED099057805F53B7FBAFE7BF2FFCB3F9 +7571A88C794B5AF35DF67BCB66CC21536AD69F860DA40C66AA8F6DC6E52A9C0CF052BAB6708EA0 +0ACEBE8A2D3FDD21CEE891EE4B905F72845B3BAE8591A20D99EC177C44528F56A09111A498160D +9EFF65D62BDFD201B608B578E9E052EC257CBE33662040ADF68209F5E7876E1BFB861E21405F5D +5D3A2F684C07F20223E26B289CC7256B10D699637E5A15F409ADE71779032310DB5FB5C98CE037 +89EAFF598241368500C76315D8E3FBE028F587237B1A4E71BF0B52C181AAE9B88754ABBE054185 +A035D118630FF66EB5A48C47949779276B5AC20699F3A33ACB5F9510263670B25A7E3E92666F3C +0EE6AFF2CCC733780A0D98569B4E08254D9D88DEDAC4F50EB1FE9CBF8588E301FED58E36336167 +7F47386A37B86186D0A0A4627C2BD0C956DF9C0C9209F3275BCD65869D14B94943DCB3A2FA8B5B +D7434CC1265F7CDA7D86300A5E033AD24468ACC1809460A8DC4231B5409909F865C6CAF7A2D998 +3BC3ED0BD15585A43C6598D8D3103547170067B51D0638150669DB52C1E371B6391D2311E5265C +6FDF27951111A7524A304E865898634CB768EE72B812A99DFDEBA1C284A0FC95442921B8DC7280 +2EF144335923FE114747EB3CF24FC652DA97A25C2C92ACCFDD15E82144500A6BC1B2F79FF4F722 +E06450D2E6335839962111DCBDB1094FA2D3E817EABAD4DB131F01E453ED5CCB794316E5D259E2 +7A0625D1B5827706503B0F67BF168DEA99FFC9AD1C6CBBBAC271BF0B92745C422F9BA22A2D2F36 +A0964C052062EC7AF373244D8A49F60EB8C2881906FCC197BC9510125DC61628C8C1B29BBE00DD +343075F33AD0AEF24F32B0F2EDF873401A60CE8A8B6176ACB9C1A395C8861BA36322DC7DC85796 +6C8C77F815477C820716F965B1E1F0AE5129A01DF4507E0E04B5168FA3566AF291F084CB65D0FC +E86EDE9EC19EFA7CF75C9749CF4B5BE79083E8FB7508A51C5800D546FB14D4D8B5191C598BA5B4 +82E8A0C17F77CE96EDA3179A4A5613C9235758699EF8E2B4682F920A70CEF54FDF59101C5135EC +3FEC9998660F8D9620B755F45A6A9FF807519A5548EE4BB55CBA5FE6D407499AD47707606DDDE6 +32D7AD1A58FC63F97357F4F5C63E4622BF4017B0CD757D554390F27123D17494630A756CA2F1A1 +A872F8C09BA62F76E5910578DCD4AB4B0DF33F6BF4DB1237EF65E5FA97C593C90728B12FB17407 +FD681A44EF78E14918E7B0530705A1B8F27495B3029252DA7A3934F7209D8BA8442FAC0EA0C03D +08623347C4B17B249B91E3FB30FF88DFB190AA14276D7A878D6711BB273FD611E15D13541CEB1B +B6B059985449B7A63C8C425A57AF00293AE85AB3FCA9B709FA60C55EB6AAA639EBCEF4847DA4EB +F28A235000471D355202F948B24C9283FD0C9C9E3AAF88735E3769B7D60A9410B61C9D62AA5425 +9E43AAC9208A794D56886F983EB006ECB5084CDC8295D1EC0F52B12AD4BDDC14E672450D2BB481 +420AF2E5836683F31FB7ABEEB5FFE9D5E1AE551D3A6E123ABBB141BF313E5D4ECAF00A12C441AF +E36DE60877FDAE8D255DD1F8BB0C0DEBAF10EDAB4CD2C79B4ED1CDE61E57D12B389C541A8A1823 +53637D9C1A48CE343C88CB15AC45CC54EE6895C685F89691D09AC4216FDDAD8549D164E8BCF101 +1C2D97B3F1DEA3D7C0EE3049860A949D8A558553D5E8FB358C8D2F31A1DF90BAC093E7AB45DCAB +9E9D4A36B5ADE3C696921C3545E6BD29587068B57A79DACD07C50610EEF8D16BF0CDDB6CB0F459 +8EE921AE8764247A771F63A3E8F39B072DF066C1229948CCD60B26C2FA9FC8467F09762BCD38BC +3C5A17EBF085DF652CDBC0386E5F8F908C6EEB9E8B35FCF8BF69177FE9002592F93733D3502725 +1035E29E2E4A2C17FF86B5E884ECF851CE8D1CF2E667D9F9FA62EA5C29858EE46647F77FEBD6B6 +071C827470A97888B53EDF69920EE368044F9DCDEAD7D40D21D44A90C44CEBA90B64D800B6F083 +5EB84A3D66BE4F6B1B173B8AF1D0CFE9D11FA65CA2AE847EFEF063BC4400D508C49C220BE19F9B +14A6E76E2D65E54DE811D104FBC001508ED53A71E6965FEB07423F4846BA0F0C70518D2D9377C6 +FAB46993572179E9A0D75EA6F67C5B7FEDF1B756C882DF1010549DA4B6519E9CA28C56053BAD1A +9EF5D0428F2CF9355320B70ECFEE125C9B752E2D30C6E259F9A44FD44BB45CE8F66C3AB6C27DC6 +E2A8919A2214220E0E5ADCF6C885966647797B9AEDFDDDDA5726F45F407034327F70C388B6EBA3 +5227ED48CC572516A3FF067B4F7707DB59CAE2B37663CFBA1E7128B43A2F1BBC209BBA10D71D53 +14A31B03E68F68A9A97F32C14205D4E998359039CD08D21B0B4A01FA2CB7FA8B28DB40F23B1301 +2D1664F42D084CD6D49588BF294EECB7C2CF18B65106BC49DA160DB79A63A9A7194C9F2F79F2A4 +F97EFA10698F291334E8B4F74C9D948F557C25C4FBC798ADA8A53B9B0E6DD4BA50968F5A5707A3 +A6428BC7CC56704534463F5031272BB5C08DD6F4033FD1B5E1A395316AD330599EDC4E021EB125 +7BF081AC55857A913DFCAF39F66A1ED2289A57AB6CDE8A2F56D11157569484BF6EF26B04C7CA9F +C821FC46B9F13CA07AC0D90FAD8AC2866BA8DA0D67B908A01387E54F9F9DDEF25F50A1DD65717A +3533023CE04038271DAC6CB401D3F692266712D3E380970368A34962C60646B12D129745C961F1 +F6E17FA854630F7FFA9E030A0C2D6001692E71495AD7492FD65912BBE636050F85DE19D51F2722 +E8FEA3C931541C9C370626163C528C1A3C0E587C7275806D08892C2618D0CB66B6AB37EB96EE34 +26274E9E4A036C57AE33B1C7D50BC5E2BA42BE0F14D32F02F77375087BEA2D3D44366E13F9CDB2 +096459878D802A151789E54C21E09FDC98C6A3567B7F6EF03E7E67228998E1F893ADCD0EE49F95 +22FFBA193A8BC1D5A2A43FA75300C4C72A1E388A792586B3716979DB9679BD3779EC4D9F427F18 +E4017D87C0B8C44460FE64C1A591875E589CB9A4818341FE9FF1E515F6D510685338514684D90B +A40FD68AA77BE2F5D5536772A6232B386CEE391C88D1796CD076A2133474F9B1506B446F61D138 +E5CE584D113BDE06EAE89D82F1AF25B78891766CB386332EFC60A57352BC96B42905C0072DDC23 +61F20E89BA1DF2EFC1C18FB071CF04396A45293E44FE656A19F3AE3A5635560763D03B6039EAC4 +605AC30D4E3B1A68AC6CD68B00D694399B9527F13D81099DA664919A3D15C3E6DEF460134A1736 +B1FD53DDBD20C248D0832074C2A22802B7405EB6D33D864D97B78252BEAE3BF9BA5DDFC4CA077D +806289B7ACCCA239E6603C7D2BA41B7DC820F86D1F8530604D7E3F8A1239081D7FBF9FF9C2D9ED +4D672417853364CAF9F010CF08E4E060038A67E70EC743AB7FD3BFD62E7C209B0281F592700E1E +CD0B18F65DF4947D24B2D9FA6C645348495864F66008BFE85089E6442856D0DFF9B27648A793B2 +22E98EF332692C08FFB08A7AFCF9EE4DC33343F8FC0B2BF5F59EA5FF484EEC4D0903A7DE30447B +F6159C922C3691A97C2308CC2B32683A72B3CB14023E76410345781F0949E918D47481630EB60F +891D13EA3AA81DA60DA50E67D0DD63E6823DC1375FC60738B633996A10B16BAC8CBF574732679C +B238B9BB0C1507515558A5E1419A17DAF43BEA11E31A9F10AA8DF17DD9BD9EFEC13EF6F6D1B47E +CE37F8D45D2817B5CAECBE38D45BDE09604146FDA57CC7E0814AC69558F170A7AC2F8DA6A5C7DF +485C1E16BB96C3E1DA2EBC5D76630A99A007AEB8F680F2A10182EE55A0ECBD17267F6A0E4AB5D5 +4E062DDDA4DEE9506528043578853DE1CE8ACDE68938EFFE8283419D9A779BBC39221379BA2767 +DE78BFECCEA814269A456AEC28CADA35B7A1F5DF89D57F9FE64B2818EFEDB506B1CBDE22F9E706 +54A84DF0C0124124646EBAF633E054D704305B2723EE6848011985DCC11CB1DA81ABEB7CD5450E +31C218B45C3556B7D1DCD47D4BEA4E3FFC5930037B2664ECCFAD1204D8CDD7289BFA1B2F4BC59E +B586883A9E8757EBB0525A53EB83996963ED8DF4760CC16B542BB7C60FE6C0F3A18E18B26EFFC6 +CB96792CF2C2113E04C8E64335082EDB3FBD78DE0F1D61B55EBABDFD44786416F0AF593379728C +FF15973618B201D872628100BA908908A978EF091A126505221F6C52E7096CFCF13710DA707347 +308943095A0222411C858DC7BAA314EC1107CF9C7C699EE623981946E79B70177FE70BEEC2624A +928FBAF73B1CC7D65A6E76387EF3812177BA0914BAEBCC99564A2A26710129E23899D8822DF447 +06AFECAAD63168BC96BB879D418D3A26C214E4F26E186ED9B645F9023013086767A5276DCE1B81 +031D6F08055D5898C6C1DF53CF9695F0B1DDAAB78BB824B2EDCB8D726B2F477289C16AB9E85013 +1E1E23221929D95E17F4011D2126D783C1363403D650D426D642AF6928AC7A017E2D36A60CE6E9 +7EC189432627B4BB14B94E2F46D4ADA823DFD6093F9ECC8F01FE148E59C11AAA4417EBC801B0C8 +D8B380A4922D9AA366BA64BEAC25DE3BB50E5EEFC4E0AA8E8D6E7D664FE249F01058D5CAAA8C3C +AAC732A1507B9F84AE531A3F5A6CA32C812EC23E31F3F491F21835F655ADFD42E6387D03C500B1 +D924D99572BC8F362BDB56FB6962800DDEBA947659674DB719E4CA9CA2CA8BB36E28CBECFB9EF8 +16EC9B0AB6B464B959DFFD30F564E6C7480B72A5BE58B2B1527BF6967F08F929D98378B2D18AB6 +2A73010C9FF49CAEF7C76CAA65695F1FEDFCE05A487CBE6CA689F4B095BDBA432E349816190CE4 +BD03D7246F73B5A6BCA12E262BCCBA77E25C3A19241202EF50A600D21D16E8CFFA05EBB85E65B0 +E3AE69730D4D3EF79A0525BFAD3659DDEC3F536BFF0EEA6693A683BF9259E098B1CB8EC38B1DC6 +AD3B20DDBB88E1863ED1DF64A2452977A1C70CFAE0AC206977526D2EF4885561EDE9C0642D6524 +12A2BCFF8B37DBA2D31079C4AC6B9CF26518BABF3639D9169FACEC29E42DA1F0AE2EE290FC0F35 +149E0EC8807C70C4EBAFB12CA44B7DE7D95608DDBAFAEB476E98836E317187715C1F07C3719EB2 +0560EB5B241932106C464D074EBF0B4B6EC4E86CAB3C00357D406EA833652D729D32069140817E +F7F906E8650CAE88FABE5545CFE266F4966FCFD8F83DEED5C086876952F0D024108B42E06D4DB0 +89EF77802BB2DEC90966D331F6E34D92675DAB18FA3334DF9918806BE5058BA582F35B2D742EDC +F4FF8BA830F0C86148C235788EFC15400E08ADC57D6ECE093E1F7711590DA9D30017B730774052 +6937D9A8A4756ACCB0A6BD2888CE2295658A9B534B88EE43DF464BA3AF64CE2504814D2B065B85 +0DC705049E0B346D007B43AFC18028D4E9539EBC7CD14737CC1B7F10F2CB000A7F219DF60B449A +12D21E16E8789B7B8F67C354574B6CB5E0B6B612D9C5D5B0AE7D87342AB404E967494718582FA7 +D32CE4D6A81A1C9EAF3EAB6060DFBA250685BABE46B4FF3BCC701AFA8A868F7029B38F3568834A +8C34EB0E6DF3D67334FD0E4838075286331AB693179C65BA5087988383D3D5EC5E0AE7BDC99BFB +C358BA2AA274A4521E286CC6052A5C477696C5578D5608267CCB164694974BE93AE7E35F389F2B +AC6B7980E61C29B1DD2D15B42195E795B00D2B89E6C4BEC4379413B11B939A1528C56006ECC994 +7E4F14E3D60F7400FEE32D77798FF6383B3319C6F92E494BF73A90083F986CE5F2105C0E801027 +57AFBBFFAF368A20EBBCC6516B79682D8B70A23D8DF3A2BBE4EE081D4ADF70847F95DDAEC10B35 +13B069B9A6E50FDE25E3458050F568625F680D3DAB2FCD3B7007109358EF6428756F742C90118F +E443EFD7E6D879CD082F73B0B95E230C06C67DA5CC8DB4792EB274FD596DCE8C966F84B54FCB14 +8B57141947461BCC69A012B50DE3667F6DD9F0FC7706525BF5EABB07164BB07B9C973B5D31D0A2 +2CC99E37697A6D14B6F4EE4745329EAC6A5DE7BCEF1B10DEEB46DA4AE14BB82CBABC31040987E1 +74EA49EE6F543DBDA0063B6C1042EB379F610DB5C0D4263CFC08A9C5604B7FE2345E775EFF6BC3 +5C581500BCFFD98E23665B2115CFE33A184BBE1DB4EF955F409074512F61A37827DB751757E284 +A23C89932BA251ECCEE545B6DDC98246970B17C12FC7F9237E6D00E8187F7F45E048307688EE64 +2FA6CABEA56C1D8C1FB31E0B0B95D7DAFC1BE2E90F933A44AF03E94BA2DCE76D358C2D7A2216C5 +E95788A6BDC9350135621D59F52FC74BC96D94F93E6E63123B4F56326413974495E822DE96FC05 +315EFDDFEB919FB2A36BFD8580D6A21D11515EC7835082359F3D0B2F79901FD6CC2AC41E2D7B9C +412A49C9D7B8FD6EFA11517821643349EE9FDD5A6F4D55F440CB7284726C6DD45E84049F8931CD +570388CDD6DD5F7AA0323533EEA3DA70FF0AA8BC42F3B129D0AFEDFD840FBAF2CBC35FF45B8656 +BDDAC912ADA0A3C2EE447684AD4A0DADF205A419E583D57D352B30356D611E5E8B67538E2AB612 +787177B8C8CAE9A3F63E58913E026E2BDBCD9CDF272AB9B181BE3CD650AFAF3FB9D6E07D32F915 +4852862C3F7DB6748FC834C868619A4E7823733CA044DBE48F642944A087FAC70432D01392A52A +3FA0D1C54EBA4662AC8DE38827B17CF644C2987ED7E57D436E4A88B29A1C91F454A4637CA5424D +11B82D1137D58867A9BA363CA0E07C005DFEB038136D4FDFD5AF85F48E58E50D2AAEDC886A4B22 +CE2DBFBFD24F4A05A3A9FCA87A95A871BF8D6237C8C63E618FA4DBC9E15ABB677EB7F1706B1C9B +125D4F5E39A168A989FC53D34F45C24A52292627E11F64A7BE21E5A61D4D8F8C9F7DC3B0E139FA +1E7EACB8BE224E679A29DD3B44FB9B29220EDEE3FF41E88D15C914E9E2EA6FBD1D409753D69FB3 +ABF266FA7991E82B74C7C73BA7DEA82B0A0CFBD6291B4DFFA1D68306D24B50906A3EE87A0C3A17 +3ED5A1F983138E7BD4381E1B21AEC00F72873F4EA6C622118F37619F6A451DBC52D2BA704DA804 +17298BB1CD70A5FE38163F83ED96C2D5EC1CF2DC8CFDC9C1A8C2EC735ABBC1851C1A3270714B88 +ED8E2FB5A0469A18EB27C0B191169E37D71D62D6FE06E23B18B4DFC93F8E220DFEC3B57F34657B +0BCEB41F10C0DECED95960DD664C499BC607614D97C60CD7794807F2D509B6589EE4241E4349C9 +33A94C3F1E58FC40D320CFC31153BCB12F7CAE903D829E8B2300F41DE6D21B5BCED26673042B60 +3403B1918E2A57662FA77A21D16EAB58C3C81243EBC05D6922C843EAADC9DA99B83AE09FA329F6 +A6F0B5BA44AB4C1FE88B63BFA4D629EE411CB1EF26ABAA16264204637182774F1AB200C7E20057 +17E5168F766E790C248C4A38B93F5F9B5C07E612D72077C36688A597DAE740D04171E33FF960E4 +4C1E795C1C813E39BE2C0365341D1EC946BD30DC8BCBED7F9B4AFED3283B263155414CAF138365 +2C1935E75541A553121B7FEE8293ACCAC906EBABB343B875E4774387FD8DE4557830B2A8CFA3C8 +4B734F4AD5094754B96AB12E977DDC29F8E43697F737E52A6D9DD9A2D8840906B4ABE9C246F684 +10C38B404FA6251A2E8A31E2126D11929B73ABBC01ACE04A84FF25A8F7F1AE3A9C8FC04C2FF867 +5A41EB0453373722415563EC07A9DF738F7E8E9423DB8A09DC6714472982ED98165984C99F885C +9E9941F2A64D10BF1936C749019845FE5C5DEDF1C057837AE0C6BEE3072C0ECC044B5A33D4AEF5 +3506438F750804B696AAD17897036057E77A0BD7E02F2918CE13A48FED56C55FA447B0F32F47C5 +2AA0F53F03F6334E6C484AF42F265EAD25088232BC109B4AA86A475BC11FB22FEE50F92FB4C4B5 +01DBBE211228D5C14ABA48B56E59A34C813016D43817AF1B707D09BBCA2B20F3B3C90058EF7E56 +DDD4004F8754EBF0A16DBA018F8195FFBFD5668D4D21E7B6AF279A08A17D081811D2C34DA41E91 +3399F6F3B4BE23879972BBA56C65F6612606DD000A6C857F8F283E6008281E5D18828EBC6BCA53 +29977E4C792E468DEDA9BC087DD8B4FCC6D9279BCC069B5B7544585FB305EA3516268FFE6A3F91 +CB25909A61EF71B0016EF040365D193CCA29409EAD1AF569DC290514A10980B94D6E8C609728B4 +A35E97299E3DD1EC28764A71AEDD26C6D76F5276139EF13F052403F529713702E5B1089BAA4390 +78F4D5B1B2FA80FE3CB11B14BC466434BA54F839B8A9C887B769FB59463D0D50DAF8C71FA0A9F4 +0E73AF18FB6C7312FD51D0EB70027ED4A546232410E7D29A156A2291E29F6137FB42525BEFC6DB +3049AFAF2357A8ED9CED95CF7E33FE3845883E35632507F3BEE56533E42DF08FA0183CDCCE22CA +7E06D568D08D161560D106E22E9C9576ABE08ECA90A62510C2811D7CC28730D2BE9A1642052647 +394F4CD2A4A93ACC984C954F0E8C57670C08CF0D21D46E08925ACE4665D9D724EDC75EE0392322 +E9381632D8C287BCEF09E84D42E3BC345DEB24C2AD0C68FF094E07D32685866270DC457391BF08 +15A73D64540C28A7BC178F9A8EEBFF4C4478924B72FE21D51ACE32EF43C0D3628AE353B74FC36A +7267FC679DCB875BDFC77821233B30F41A6E1EFDBCAEE3B4319BBE29D253624E48201DD2EA2498 +34F67D2F111BF268942F6842939365C8E2BC3330F0243CD1AC7C5B62B7F0A2FBFCD0965AA10627 +73634020A2C7C364CDC14EA24B500CBF4A8C79B01D6DF55DB738CBE3B978111D65DB99A78CD0AE +43619F2E28BD444DEB85A7B585B19C594940C45870E21D4B1B110028A4F3A60C951A0884D57E28 +D5E26E0E928619000D5CFF442D019097C45DB01BE693F6528A00120A14845923BCB81F27BBEEBC +15A9FF9124371E485BF4AA8B51B2DA49DE8C2E5F4F1D909B2731B2B14B287D921949115891AFDC +2E9424E11D6A6E01800002B41B60F7AF908FFA016E775C82582A4C15F47F941ABA8889891F9441 +F2C850A29185D4B2B68CCF46C38ADFBF046CB7BCF9B610379E95CD8D2F68ACB47107225ACDC6B1 +2DD0A72F291E27199399F916370B1F7D6F4EC7D0109EEABE3191393C7D6446F86F10EEAD7F9D79 +B5AB0C053768EDBE0E0F211F306507510E589686D29D226E55D9F07696A144BB4A6400647A8743 +ED136D3C5DA6B183D0AF2B565D9D9C345EAE5B63BABA6867BED519CFD46CE594AF18AB49DA423F +0C781EAC2BFCA83F4B11B431C1DFF69E12287098A487BA099786DE0906EB2806278912B958D9D0 +CC168D6246251F550445413478B8A460A24FA8D80A0924253985753DA56A30920BB237E4521C2A +78B4E79A256EB66A4B2061F4B71B421D85223FCC8DB4FED0C3A4C4918FDEDC558C57850A62917A +0E57EA5C771D64A137E17D12F1C5EC08FDB94D1232B090127259DF02581C2584754EEA872D88EE +7E583D13C54D278DCB5D6AAC44F68E76186133A3EAC6AC3D22FFDE29D0EE251495A96DD973AA89 +867C6BF4A1B71B0956F32CA07D796A19A2B64CAEAC3B04AEE03E943B6FE66EE9840DDC086E8C80 +A0849F14992530B74EE8C58CA3F4E765A7A097D98D45DC90C48A3F6262E9999BC34EBF07D5DBE8 +7185B7CC1BE34DB8D09856E84A5B9B30C01CAD5E72034433045BBC57DE1DB1186BA78C08B6B224 +07FA803CFFF1CAB082856810D5639AF9E8653470B3FC95E1CF8FD80DBBB597FEA6A4E3CF584AFB +4A88D02C1EA61B65FB0CC7A96EF09AD692D035EEF27EB3BF2967364A42DF2D7565C61400B0E338 +168B81E69C07FCD2CE5B20526A707F36786C0C6D53B7E4567D41DF6435B4DCF13256B7E802441E +4C86A0A329EA7293B1A5FA8D532FD0F529A2CA7CBF0F667C784826A1891E8FB93564158B14EB52 +7AFD02156785CB4089DCAA8056EC101F85FCA80333A89AD17EB94C100BDD0552006139C9496EDD +FFE06E4D10C1258BC6912C5889D3D9108622BE978F52E855729C691DAFCB358169154A78659CEE +C855C995B334280BF279955835BD13DF6AD0066702C7B2A7804A223947A5F8528F0E2A962F76FF +2B41655FCEFD02F3F6F8D848D60B65399746806A9A4E671F62FD3A46A8766E6F94422B84E9E3CC +3F1ECFF2C86FD88EAB7C5665743F5F7E26F34864C701B57625A79CDCD1BAA2A43F482FAE42F9B9 +4BDBAA91ADCE7780AD209D2C19994574B9BBB132169B488E6BA22ED05C971D2CC5A9A0262844B2 +1698BA297412019CD7F6C796944202C89B7D7B188DCEB11C91F90F0A338F62F636B759924BD999 +B488C61DDAECC4B68E0104D51C9B8E38354AAA61EBB5B53A10F5798C3E755662C2F92523CE4710 +14B322D56181A39DB9073EF5CF6C99028C66A48DCD259DA4A9CA17375AC33C1AA56235BF1A57E7 +B3872799CCF1AE0534C5EC3AAA96128DAC5592C6A3AEF6AC4EC77F1CBFE1F7CBEAED6935913164 +C7CBAAE272A953ECFD2F9B95E63968190066A66DE5F87CDBB126AB5B806DB3E8F0665952D051A3 +DF91F4BBC261BAB836F921DFB0E6132283C40B9BE25DBA4DB5E9561658D735F4E7C635BA312C55 +A499A10352BAEA349607623649CBBD0AEEF6DFD9F436CA20A9A887A13C8B1E40064BC2B5E8F788 +887C4D1B853C40D74E4E759D417421FFFF7B2ABFF74E70FF8446E268C784BE7BF93CF20D3B085B +B4136068A30E1471895FD2345E05BB57D5C32F1EE6C3A288D1BFECA8276D35139876240E36DAA2 +99C18AB7A45DEEBC470F8DAFCE5884FA632F11845C1B28A3B39D820CD09B24ABE6BDF342A90D1B +E453764A959A0766C1F1B6F72579977F6BAF22C2620C22D16E52C78220AED5E5B0F977E69BB95C +A44F67FCFBA74F292773BBF4590773FAFC9632855223B640F8B5F3B991685215F92F1751EBA738 +5C09B7CAA12A617A4BA5497747AF13918DDD1AD89085AA3510443E8CD9B799F325AE43863E7F02 +CBEEC80A79A785DA41FAD2572E57A19F9A8DDBD1A12004F41158077B0B9D67E9CC4F9F10C29502 +50C74CEDA126664FC366E6C8E5D6C8DA0E935D68DAC7BEFFB648FC6215145ABA587DCC95F2A0BC +5E187C70FB879E6F75FEFB9FF1A09D4BE80EB65AF18BD7CF9ECA28F44E49BE391D4A95633B1329 +06A003D3879D1DA13717502851178B791137E3B8D7954BFB34E55B27FB430027D6A836C5773184 +C9384BC708991D81665F7D94803EE28BA76CD43DA908B279C772A4249E88DFC85A10849607DF1B +CA4D481614518C59017B1079ABDD1FF4A5FDAF8053A6225CED3FBE6F61A3404C797A61DD6845B4 +261B7BADCD7FBA647562514F72C0B2EF4077DA86BA5A71E192B2F4E7D9CDFDC1BC990F4A295CED +BE13590B98608C1B1A5F8E2A1690A4153B9304F5A32C764E0B05BA8CFE4907E39E33D69C4C424E +6BE32F2C298286EC2C7EE5D6C1B825DE78BA87F2E4FD59985FEFA23933832A4E61A21617B519B2 +9360D57CCC21A685DD415048A06C2C8F34A3C98498CF74CDEFD3E5A595140F52F02B47A34202E9 +2C07EF8E790186E56920F5967BFDE5DD6E2462DDCE6ADB38FCC059E189F8DA70A8687940CF9D80 +98FFAD9D7929487A9191C250ECFF0A90012E0FE9F902F78A2C146ED6E5420C00DD89F7415F2573 +3B5146D271A89598EEA4005DB32FD27DFA0E293423E4D433DD78A31910988D75F2726B3B8A7719 +EBD40A889AB7E38216F1301D6FB53363240E1A07C2ADE47B26D4B6B438FA69786A582C72855A76 +77E6C51555F39F3EFB53C79905BCDB3CD88D3A5801F971BC8809BF73D384B53C1E03D65CC34039 +2A7A564270526CBD6F9FBA7871BDDE6D9BE23C38D5E53B51CFE4EF588E519148ECA0649AAC1E1A +2606EFFB8EC97C9E64D46E9BB5DAE9BB73CFA6A9CCA578DB26ACEEB662D020F9D2F163B877AE89 +746A4B63040082385DF1C5BEC77350F9F5EA41F5941C90EAB5700820C0C29AB8371180F30BF009 +5D7CEF5446D549D0931961B246DA8F1C3535F8967D64FD070B625904D7D7DD6E31B9E410CF3D5B +DBB7B6D6473771B85F8E2924CA2F4D8DDFB2DB3D3E4CD46FC27C65F7058E8F908DAFA540BF2726 +A5A1A66DE298D6EB770FDD4C2EB07F3C81F190712C2C5253379D518A931097A96866C1D73AF6D3 +587202857D0A83D2A526D281B42AD8A29E5084228C527AAC631E85E9FBE26AB60F14D94FEF2E3B +9A24EFF6DB66998C5E2D36966A11AF147CD293723A5F2F34625F6AC2C4FB51D0F851AA5B4B54CA +E1C8002ECE653890BBC684E4D4EF528BF815BA9B3DAC3A6EF34EE74BCEBD75F35F370363879C6A +F67E849750D4953A880081DA1B64582E8D790C288B65DC1B69BBCB0630C77ABFDE5A40E0630D90 +F542F09AAAAFD8BFC57BCB9BBED422602DE45CB377C2E634B47AA83CFAAA35E3C869C0819E6E0E +1CA918941B15F66E9552672110FACBB538E8FB8A7CE8AEB2FF61EA94E098B89062FE76EF53C6E8 +2CCDA0E8A19BCA2B33F4671BD38C0DE622522CE84ACC4114473F10554F8B13AF6E50A8F7443EFD +AFEF23430F4C2AFC9188ED069E25647C5D89D657E5C570A27A4EE5981E1D9D317CC90F5B25695E +9E1B914773FD447A91E76E5E87E6613127CA54E8AFA17052094F6467438B369C8549E5A0A59B04 +D32B5A0B02FAB315F25CD4C7E16FCFF78544D88D983EF7C49AE1DDD72275759ADAFF6F206B563A +5912AA256CFCB35CE30CAFCFA481301F6A25F673A8B90E9795B2981601BA88400DD247AF468011 +8C698A366B875A8631AF3A5B4CEA30F1B98870C096B0285AD22D2AE0C3E7C2600BBE9DB96A9A40 +96BCB3275481F63EC41789444E088A98C3564F22C7CC1D5D343EE6E3494E46C99B1546AD0FC7A6 +561C239B5D233450A80A13F4DB163FED87BFD98FAEBA9178CFABD4B5828EE864403949429940E9 +BF97455B4B10F6FD8720930BE10E639F7173B460F56701B5D4AC799A794C9CA075D34829B98461 +0FA438749B33EB9FEC2BBC2A2D354DCAED8F46CDB103EF0F64670EB7FE92FFFD4734BCC9F5B68E +CBCB0BFF982FC7558774F9814B00802B4147A50F96E52FD1E107E1BBC7CD878D9BB194A3280DE8 +0D3BEF8FD0CE0FBEE8919B8E6A9C8A45FA2DD71197AB8F15E122B6D96347181D1363A190CAC8FD +84EDEBE0752BD3EB0312C7EC7864E68CD0962B3AC5B919CA24A3F3B75729AC6578254974D749E0 +9E460263EFF0F666129514DA59329972C02FBC41C2965D3F2C7AD1B834D210EAAB5FE5B50DF9C6 +E16A3DD52EB2A3E703364958B977060CCEF91334232C9E71E27C03A1DE128CFB721881902A1C27 +5FF14F0FD65AEA05A3A58241E874E6222596AB117144C5255EA57322E49F07A7DE465C39DF690A +6A9836B10E035928E05AD103954B6BAFCEC520D364A7E4FFA27EDB5299F47ADD3009FF45463D38 +8A3C8571B21DC64DD8CF7028BDFEB4F66D105BACD33DB5E8A00363B47B9D348AA1611C059205EA +3B5897658160F069213875205D4979EA1A1F93F196A322B6ACFA8545EBA221B363A4F6C32C5FC5 +FCB4E4DB0E2D103AAE01AC84FF8B1BF81D05CEDCA5A356981AED6A5F4A5978ED737CEE2B686275 +2612B63BB055641ADE4F9DFCE2BE94F9B593BA495A1351626702E648B62E781885ED4770A45940 +FB25E5C4DCF2CA34BCE72693C063D1F130D728D7D04729E8005CB872D264AB8EE6D125962DD6BD +27C0BD80247AE1DF710BFA28C8A5E32CD34E45D60AF37EACBF49682A1A76B15ED787E1E6371B5D +D56DB046DC21B5DD9463996A4D805135A4971B8C187AAD32C422087D8FB8B46B5B472BDAA9AAE6 +85C6C08431BE762313E443A37812D19F535AA285DBA7041997EA73498D5630D24F727335289DAC +BDAB419E8B044E45D08B45B24134B5BAC9CF14D48DE6AB4705607E8B7ACFA9772C1F4E86A35383 +FC11C4AA84A7C734915A2A5EE0C630268C6DC794DD6164C9D28C33E6208266D51ECD5FAC58C455 +ABE4DD2E28AE428BBA827C18F347127E07E9E14BDF6FF4555E4E6C79697073F5D01927422FB534 +7E854223D6932003F6F7F2B6BE4FBBAA65F2AF984012ADBDFE1DD4AEA80E3CD859BBF018084B8C +0E6D3E4B81B9F2023F818BFCAB27AB55D3930F03EDDF80D2274FB6BDCBD888ABEE7B9C3AACA6A7 +70FEB66CF346D7545537531AC4FA6DE2AE0B5F0751CB10EDCC047527117F0974A8E0E48413155F +B8E15D487942B6AEB71989CD74C88AC77809E1415C14A5BD4776A2593692BAFB9D3F8B398D9C0E +1DF346BB9A75915575B2ED1F1EAE8BA4DE510ED7F5E795314D5E5FEA572DDE48FC742F6318CD26 +4DEF0C83C92032465C5209ACC826D2CC9507097A18679C44329E25C87D98AC7A007B4795FA3F14 +E93993E927358E2E5142E7FB9CB2E62C0AA0C494768014DC0FCF8BFA1B299CB788B74A660CC404 +F661DCF070C900E4E418C0ECEF6BB7A7572C2A632A9FB4F18C963FAD73B5A0C863ACF3203489D1 +EDE5AFF38D67FEDE75F17AFE06F9130700BD092A55129DA2CED26CF10C5C088FCF82B192AF54FB +BE884D701A15D71F21099303F9204D0CEE6CE1CD4491FB5B0285EC589C17079AA6599ED30377F6 +7538636C92BD6D49B53C1671DDA036FB4A9251BDDDF41383F818F332AED33E010C642605051FB6 +5F1E68DDB634644026B08ECE7608AF5AD2F648E32B6DC1ED202F02E12B31E008790FF62B097F9C +C871A36A23737F8DB0EACCC75740CEDD89EBF1D1619BC558D35FC49FACF0C4696F577674879B35 +DA2342F894FBC85F7EE7F4796B680D12ECD8E344D5FBA7F5E56FE4D5C138309CABC4871D81134E +C07D9825556F78F74C9239BAC7365767761577FDF31609C5C884CD95571410856CB2A87CE42BD8 +9F92B8AFADFEB5BA618BA10396AC6B31A4E87C2B89B521FA100D8622F39C80190749C5E9C26F9D +1040F6B90D2D380BED092EEA62D6BBD648B1021719799FCF210C5EF3BAE4D44C4D798D6529238B +5BA06D3C9F9AE5367CBB81993C19F9286E690DE1345FFDDAFF9FE36E +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +%%BeginResource: font lsd +%!PS-AdobeFont-1.1: LucidaSans-Demi 1.001 +%%CreationDate: 1993 Aug 11 21:10:03 +% Lucida is a registered trademark of Bigelow & Holmes Inc. +% NOTE: This is a partial font in Adobe Type 1 format. +% The complete font in fully hinted ATM compatible form is available from Y&Y +% (508) 371-3286 USA, email: tech-help@YandY.com, http://www.YandY.com +11 dict begin +/FontInfo 9 dict dup begin +/version (1.001) readonly def +/Notice ((c) 1992 Bigelow & Holmes Inc. All rights reserved. ) readonly def +/Notice ((c) 1992 by Y&Y Inc. All Rights Reserved.) readonly def +/FullName (Lucida Sans Demibold) readonly def +/FamilyName (LucidaSans) readonly def +/Weight (Demibold) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /LucidaSans-Demi def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 54 /Aditi put +dup 39 /Alessio put +dup 41 /Ali put +dup 47 /Andre put +dup 49 /Andrzej put +dup 51 /Angelika put +dup 53 /Anton put +dup 55 /Ari put +dup 65 /Bent put +dup 67 /Blair put +dup 69 /Bonnie put +dup 71 /Brian put +dup 73 /Burkhard put +dup 75 /Castor put +dup 77 /Charles put +dup 79 /Chi put +dup 81 /Christian put +dup 83 /Christoph put +dup 85 /Chuck put +dup 87 /Clovis put +dup 89 /Cyrus put +dup 189 /Heinz put +dup 56 /Jacqueline put +dup 57 /Jagannatha put +dup 58 /Jan put +dup 32 /Jeff put +dup 66 /Joel put +dup 38 /Johan put +dup 68 /John put +dup 40 /Johnnie put +dup 70 /Jon put +dup 72 /Jonathan put +dup 44 /Jorgen put +dup 74 /Jose put +dup 46 /Josh put +dup 76 /Juan put +dup 48 /Justin put +dup 78 /Kamal put +dup 50 /Karl put +dup 80 /Karlheinz put +dup 52 /Kaspar put +dup 82 /Kees put +dup 84 /Keith put +dup 86 /Kenchi put +dup 88 /Kettleson put +dup 90 /Kieran put +dup 98 /Lalu put +dup 100 /Leon put +dup 102 /Louis put +dup 104 /Luc put +dup 106 /Lunjin put +dup 110 /Malka put +dup 112 /Manuel put +dup 108 /Marcy put +dup 114 /Mariusz put +dup 116 /Martin put +dup 118 /Masahiro put +dup 120 /Matt put +dup 122 /Maurizio put +dup 121 /Sebastian put +dup 97 /Roger put +dup 99 /Ron put +dup 101 /Rudi put +dup 103 /Russell put +dup 45 /Will put +dup 105 /Sam put +dup 107 /Sami put +dup 109 /Sanjay put +dup 111 /Saroj put +dup 113 /Saul put +dup 115 /Saulius put +dup 117 /Scott put +dup 119 /Sean put +readonly def +/FontBBox{-309 -205 1151 967}readonly def +%/UniqueID 5029006 def +currentdict end +currentfile eexec +AE40F8585C2492B57FC8C19373E315912C02C4E404DE7D857CFC574863562CE335405BDCD8F11F +96FF6E8F1C7B7081B95AEE4E19EF19E210EB377985E3A9C4049662C57E12D3250AA62F97535698 +C97032B09BB86FAED093CD2338831E8859F00CB0C108EB8E6EF582C1A64E00289B62C4DD3C7ABE +9D68E37629997DAA1BD0F494A609A153E01C0FC558EC2510717C5F3C0D1704E13894839A500B55 +234B67E33C3EE5A6E7E905C23EECF0D7320E431F93A893DD533D15A7D941B043EA7698B0BAAC30 +D437917A0AB35CB6E43354D38151D2BCAB7D2B5C7EB260C888CD713A2960FB2E510299FADCF020 +C4A535A0791F9B9DA4A3D25C989EB20DD198AAF09029DE3109374D40071EB6255A9B872322B00C +EE340A09F572634C77960BD50BFCC684BA77A4D15CEB51519C9728E8A3D90555B3EAF8C342A020 +6282A97EDAA25BB74F1AE6F862477A7AEAF1A2743843460B3EA6653A0E7348D33FEEDBDED3D45D +85CF2AA51168B0647C1DE8B3C9A78C2EA43726659F3E8EDBC6A899F644DC2932A855CF3F64B115 +B46D556E5D9985D389F7F250B017F690E2D057D6C651FD591D0186F44E4E72137572BB6C02B816 +DD19473CAF196D22DD8C2CDC3EAB84CAA908B1895059B7CF29D716DE195A6561EDE1D69FBB65D7 +CC82A9A4661DF15F693EE6E383D7B8204B693A7B0660686A66F634FB881D0DCB0309DCC421EFC2 +F0AEACC7EBDC0D36B4B23BE86EC1BF92CA08E7F7FE75A9573149F4DF5B0FF2E3F1B7152EE18AA4 +4C79B6B5B8ADF21B9D463241D00B8D0B1E4C53E374EAECD2370C762B7B6BEFF36ADA6C616B9395 +16561AB36577ED5709D2AB556D6828CFE3312375F8352709005A1AB5889D6EE142AFA34C135FF6 +A16327F64BA637F66BBEA267A0CF74E93C5FA0BC0025041987825AFB1AE5BBA228C40BC35EAE0B +620B9E90510DBD9762195207113830727F293787D784CC8B3096AAE08DAA086D3F2D02742EACB3 +7D210FD447B489559EF0641DAD182D275B4CFA7311FA695AFBC9B689CBE20DEC441EBD2D6CA829 +F3C9D7A5F0BD06082A0348E70A97A463340BFE7B8A183D6E01735C49361731501A6BE18C334DED +5FDD2E20E0DC11010983CA608F9A6AF1E2C5887707CD4E1EB02F38BDE030DD8E0DB7D9B39470D9 +993CB97420EED3C2238E2D9C5558794D1EA89D7DD24C8E426BA238743695FA0908AFB11012C071 +2ECFD83A269452B1DBE37E142A6A45E05E4D3FBFEDA1B8D3B3A8D165F24B8ECC37EAF5F56DAAF2 +2FB1E178D15C742CB146B41265017FD85A6EB653C0F69DE9EE0D5C488D1E9FCD5516F6B8721DCB +DF10E9A94F678124D6668A291B25A3E898923040749ED3458B9DDD204B196470F18DB90B3B0B0B +62F4979942FAA9F1FC00D98E345560CEA1D8C89CF7BC141ED12696AB78BC44B2483E3B5FDD8F8A +257B81175F5ECADB194647FD147826560D21CC2C1E619079C5E03D47E85014CE98E7AA57F32B97 +0F7211D7FA44C26FC12A0BD6F12604B8F3EEBD1DCB0E8959857A5EB5FBAEF277ECD1AC6B564658 +A547C9306B51C96E76D46D4878C5B0CA4ED3EA9800F9797A4B5D18D91244C74DAC07C659F3656D +2C2D9B3CC8B2F6FAFA22E74782D61492462936DCABA1363C51EBF7EEE92BA72A7A8E27C733D488 +C9363C086AAA51C07577851640AA5232FD80E70934CEF2CE74F5158DA22C7411989672133BEE50 +558A852537938BED9A34115416DB0E62A0CF53C5857C7280605EDB2DFAFE3B15A82F64A2C541BF +83903E3381468B8EB372547B548AE62E16131D0E4ACBF1575E3F609835D9DF46FED02D58C0C3E1 +804DA0DFB55F6335B910691A3F5E3709B83F3B9FA35771DA4266BD8ABA9FE7F42F5A877D6A4457 +BFC547DB8988CA6E77E04FF7845E90E7B72CCADE8A5A14E594E27BBB993E4F73FF91CFE0306C23 +A8E6B352A0DFFCBFF83E4D9E6F7C0F05EC7EEE1DA737E4E1B5B70243083FF2EAE5F5F88AE7F040 +E7D8CF58D7AD5A2B25B626B4B5525377CA40EA542236128AA40E592421D0D871A37C34FB45DBD6 +A45451B15298530EA0E1DC851C212BA010685A92B1F805547CC57D62DD2D7CD4156C420D073AEB +CF0CDBFECAA3AFFCA3F1B1B4F817DE41535B77504E891DF0CB42AEE39CA3E37E1B5F787D467CB7 +306304950015AA42A53A340AD1D7CD32F2C0D2A7EA8A7297BD0FAB1B2FD027D0FCEF35DC8A32BC +DEDCA3F3702008ABC82389A0F12F70859E5F4126A88CA4FAC548C2515A46A3FCFC3E958575CCF2 +30858E0465CF6D43D41973057077BF986E4DCB3078CC14096CE6279C919082DC237A9610589B29 +E9DC232CA680CC17DB5C545BE9418CBF16AE837E02681BFC873CF630D9044524A9F4373DF78A7E +EC5881CECB664A92123639D62758235DF94C854A740A4D38859C9386E1431C5152331D71AE0812 +CB23884FAEFD580C53552DB1D51BE03559E7129A8642AA14132AED38CC4357259257698DD96624 +76589CD1AF7D72A53A8BA78A6E2737AADE9D3D880140C3907D1C20F6819A0F6465686B6D30A4F5 +04E0488F5C8CE701D2096B45BF447743BB1D981E52C65BF78CB8F4D4BB5E1E4B0E3F48CFB19D29 +9A4210F36A2FD8557AE2AA0477683FDAC64590A3E6ADEB3E3C24DEE4ED90D8A3EFBC3ADB61346B +6E167CD20F60FD028CF251CBEAF221F423505126973808297125312ADE2F0337C0079BA876BE4F +94D9F38EE5165BA3BF025C012EF13CC89451C63D943AA2D0C40083036AAE18197E87AEAA4E6A4C +678BD07DC68D87C2B18A5BF0B371789D216183C02DCAE89A8BF26C15B6A3ACB23F406D77AD9869 +B02E9DA376F0F2299767CAB7DCD0D8330D96A43A1D70EEBD80362872616E3176C3B6CA44B5A8BC +9C0171B08FDCC575ED942B90C55470C69C3DDB7FC6CDBDCE4911418054C7C723F1CAC9646CACCD +23F594B344129B30F7569104989A986099901CB110CC535E57D6AA8CA80FE75C4A208A7B5E39F4 +019D8D8A515C0AAF8AEC711A55C6C0DAA0F17C34C3066683AD4AA6A7D3EC57F20D32E15EDCA57D +61FCC7C8F8AD61260B574593CDDC128AD465C59A785983857898D437017360192FF44E19998358 +6453672475B760A3F8F6003D3EFA6D22505EE7A12ACBDBEA47B63E5E3540968AEE5B6E7FA8774F +B5410F44F9090E880D2B6E7E7E6A7D1D4D717B144D8A7E4DB66CDD5998BE26621B9F4D7C719223 +B7A5AF8EB116AA03C6AF30FE61E32A62B4969B4429D0D101889F1BDE8EEF0662FC4D64C06665DB +D474E811F87D31BF576271A7A3E52F7990BD79E96C3B4A936E2B1FBFFD2D31509CF7F5BC739F4B +7C0216B5AE0FD8AD25FCE86B33A4D22B2D616C96AE155DBDCD095A77AF84EDC4B7979B078C563F +8588CD016B3C08695D31C8EAF1D497C01A9737F6C1AA4626BA952175B6B898FA389E9493A8DF87 +8D4A1C38C0CAEA89B225567AABA00DAA5B6F3E038C0F3198E8B5CCA6302646EB464F062D4BBC8F +A8446418626319018C9C8CA08B1C42D0714AE74E49CB33A09CCFCF7A208D1B7212C255AE7701E4 +E01D7E5EDACC772C8DE238B4DCE0C3D6A1C7D55FA9819A3570718A6732AD4746A71DACEF94E459 +0269025736DB98D2F053305C27D30D50DBACD697EA875932778F2A544C9460A942DE2DDA61AAB2 +109FF6363A5EE7E6E336394B882557F7E13F3D740ABFB291290AA5585922FDC27873A8B29525DB +ECFE5A994BCC926A5A4B34C49210279F8763281A5D91816D974BC5F22847D68DCB911D265F7B02 +FBAADB2E96FB0E46DBA70031B7D7A4BB32711C127FEB546F52C1FA36C7993D40EE93C0D4915B12 +FEB19EA6972A3651FDD1DB039B1507600477877D43AF8F23B4D41284F50621DE3902A3BFE3BDAE +B057C127605869A6FF573334D00AC079DECA898EC5E7C28CB76B23A617DCA022313B449518FA4E +3556B2335E4A45A8C61121293C3BAA23BE8ACFC53658B3617458168B3F5FDC321715AF886021E4 +AF9187E2FF6CCC09AF7FDD019556DF58061AC74581BADCA856650460E5B45C9DCCE4B4CCD18DE6 +5AE71D2B3D4F472FD56B46DE9126E08DA99B91A758BD9A94E28A8D951262F220111C3301972A7F +49CA8615AA7E7BA61171300F8E66A9BA949FAC666EAA23720CA825DE4D0F6A9ABFFF233187791C +E57E3EFC5FDE95D277D13CA6112D5934D6E27C07B614971D3AD7FD74CF08B4CAC94F1DE512019B +CF2400998F207B27277C42562C7EAADE4D090D8261C818DDDC65F65CC793E5A479F1E03E3942DE +EEDBEA85B103FE2BC309C6B16D87804C85900E39F51E96276D9BC9F62825D42D1EAEE49694D61F +AD59AD71A3EA6E53CB0C06E7916F0FA7A3BC0DA39E224ADF4F23EF2A15A4E0A56D9E38D4D7454E +CDF3E8D010A6950975E1967E54F4C63018731DDCCF5F6DA12B4D2AD4A228473E49F6EC799D1967 +B7F333ABB650B2B573F24B755BB71607D20FE142C5653358714EDEEB94D1862B435C877C80C1DF +7B02B148E8800CA3A1957207854011A7EA1AE2B831F2ACE4D56F9A2CECCAA4BDA65C6CF8CA936A +05FB76383900D5CF4CF85DA2F2D4E0E10C43B2FE280CC15C75349B170E87909E7113C3AE32E62B +584D7D350D1097EB7161C2DDA01D1CE66B622D041228C3A93F6FD48048ED070EAA88B5AE5751B1 +9034DB79FBD58D16639930CDC92B93F439EF6E900FCEDE677D1CA321B93FEC8C22B6563A069710 +54DBF7D60967EEF580203D0D4294A16C912B06252B97ADBBEA61CC04F9305A249E88B95ECD4AF7 +1F6331BB6DDBB4608CA1548E270CB79FD972293B9EF8DB393898198E0ECAE14C92293506C39170 +5CB3B0526B95E3BE6B8D3323D30D1A8933CC0C558C70D22736BEDDEFD0E5DE972D2BF42EE9E340 +0F64CA97D4AF620384797F9E17BB831776A38A03E6C719917AAD65B3FE3850EAE611B9ABF47678 +D750C0E55CDFCF90E7902A8AD5F0CFBA8125F9C35A49BF4332CC5BB1AF7E6601046E9DB0AFB3B0 +F047A17F1E3346F5B3C4E4817A6E75753A3A66FF2F6226B57788DC7C5FE3352A6DE50E7E44723E +B4268EB179EB916BCB57F3C7330323B554C5DF750B5B84563DB7248137E312AF17D2BFCFED3E7F +09323553E04E4049B05E4F8C546D198FCF51CAF6D3ED424FC973C3391D9B190E1ECAFF617B6E26 +B1F2638FB32391EC52B27D0C353B9E7085B810276FA4728E699E50BB54274130A2B290F8B2E49F +5DCDF560B56DE2A43B41ECB94FD8F4238771D8B55712DD101FAB9A58E4319E58200776583C35D6 +0EF2D7181170411BD45A5C2967D7F19487E8C2B17A5483E90316EE7F6ADE0C11AB7355BC66E021 +2BCD832EE4AD4DDDC4AD33DB5358CA406876B077CD8D4CB77D1DDFEED860DA562615F51A54F596 +C474DF3C2D253EEB1E9B85352211F2F627927893E9F59E70CD59B2163E35D0C72AEB17EE83CF1E +F47FD6ACCAC3667E5E297DEE0E7F88644054E99E90DAFF89448641620EB4D165D629A9B59A0561 +A144A1CDA31FA7C64E9003B9F66C880793D1A968FDA68159508B61D90C52DA56A5EFBB937D03EC +C3F56B7C4E58CC65ABA31D9EFA6F49D3739ED898D2B2FD941180BAB89F6BEBFA09F2AAA3F543B8 +447C15E372EC5683C81B987D492F6FEE10317F2C5FD884F813C4E281B5A7D120C24D1C7844CDAA +5CFA497E5760A150E0D22A548AAB3DDFD13429A2CE12526162A66C45B38824E56D4CD47B6FBBD3 +3D66795ACC5DCCD1AB9BA0C3D6E2AC6A8E0D14DBB9F693CAC9F3FF65BCB714253A607DC2B25B15 +1A7B07690DEB14C2829AE2D043812BDB6881EDBF658C21FBB5DAC05326BD8683B2506ACF3B637E +055E94B6141C24EA1BD6CD7437CB2713700EE829254EF783A926E2768B06545FE263663F79CA3F +D4E9C750BA92F6CB2CC44B03D679750FD68524246F4C63CAA44F8C0976EC39F782131014D136FB +96E441F9DF8DA9BE84D7A59497AF90656B9F308BE1B909E51AFE8396CD977B2BD9D6B1D248C594 +4B3F0DF9042614F333B91C3511DCBFBD6DEB5D5F323B7F021DB863F63DE2DC9A1774CB6598DF80 +011AEBDEAC09EFA9E1644FA39165747C88C8EA6B4AF1897B34E805BE0F0F89FE2B9F71F4236058 +E5FEA48B32CECA6C5C4DABD7A2EDE43E477CB3760628DCD2B64E03ECBD3D28D9A13445ACC39C3E +540D0185230D1E89750D1C3DFB6DE4DC9A258156FB559870A29F057121419228AC452A0907E683 +74F58C6DAB6DFD46FD4B7B7417A3539F5F2DD26F8FDD1723B6C4030D86C352190716EB980791CF +2426A868B756255AC3CE719D37C81D8BEECC143B623880C1AC8530698369322B6309C672FAF6F6 +0C8BB5E787447A61E79877B8405C652A5A71F85B222F724EB406A8E5451B8AB3448121430B4ED3 +34299EBF820709C1519E35803396B3DC845302F716DECFF7B34E53E60EEB0C30AFD9862749DA7C +335475A5D432D4161BEEA5D72A3772B499539CB672E9ECB32CE919DB201E20EFF2555B71B569BF +CF8B902564763EE7D559D5AA9870837679E4718BE751759A9BACCC51A9061196BE327510BA4865 +ECD5B2A3593234E0E6D198DB19D2EA74A437BA555CD8FE70BA380B852858881E83A44FDC32FCEC +52BE9A0EE93ED500F8BD0C660D0894034FAA09B92BA8517CD3D294D16EA7F0D038BFF2B744FFE1 +2817B83C7F0DE337F0527433A982B6B43569C18D8D882BC722603FD1A9BABDB464230FA2B0C9E9 +13A47D30EDF69AEB8D6737658718321A34A8D5CD33FDABDBE65A9E9DEDCA6F80ECF455DFC6A80E +28687F23D4ECD8D8FF396567EFA09929F748CE124D08360CE3637BCDD08D1A9D54EFA80EE56CA6 +43360FEFA5E987845150CCDBC23E5EFE2E3E2F571C1CD5F838EB1884BC39387CF19A0B4CAB69F6 +829987C0FB8634BF8F8424E649F9CFCD769E96A040B1CC46EBBA3B17886302C2C98D02ACF9ECC2 +0D6495C1A80E2018B1267BDE4D82C9AEC7E284BB825E6E500F85E5554E9E55E7657947879BD719 +81582946A1D6F0D70B878B5E280E49C23D3C5F176E43E1878F82210FD465F347B37041FA8FC749 +20A45B3D73E71EF44F50CECFA9590BA94CE6D34CCD4FC878DCBCAF0CF713F4AF5F54FBFF508C42 +DC97117CC92442E180E4B2307A2FF364E89BC538501A2E3526C77EC08E8B211DDF42042633C978 +8EDD3A24389AA1690ED0715F531173163A95E36E87554924FCE4879941C50214A485A26C04960D +FBD7A03B9AFCE70866723375086C6DDCB249AE3EEA17CB1BCEA611FF44364DAE6371AC79652C50 +0EDC774B75B790B204C9479F3CE3030F6288D1E2C2F9F083F990F217DD42AEB8A95933E7A318D7 +CF6656D9C57DEBDEAFF6D532CF206F4BFBA0EC53913CE7D9E2BC72F5BECDC0CCB313131688D769 +12FE09419536C188F34C840608A17BA22DC57A7DE9B758E05C3800A8BCA77F95C0842094377A16 +B80DACDAD77A3B65651CDF7F7C4550F1214DC47D6E88C006AC5D5066C3AEB2012F2E0C39A055FB +BF174FAAC6A9A28D2434E03874446E15DCE7ACE5D7BE7050390186125F0435D4024DF4B5C25B16 +719B3240ECE2B00C53EF9091E1043313BC83FB1128F19DD592BDC748E1172069E61AE8A05B6FA2 +73CD67F68AA8F783E90D042C630811A8A71C0E22A6142B17D6C2F443F27ACF59C6F4474014DCC7 +FE9257ECA7B4C46470DAC7540C34A03B7FC1AA96D6B48179D28A0BFDDC35BBAF155BBB5DD8D40C +2F3CFA7719E0BC7832EED6A37702223D1466A8B4FAB31D2D91AFEA30194B9DC756EA0931A28D92 +8B68C0E09F7940A1BFB8817CEBBB0A5A4E65CD9170014C9577F321AD444420BC7522D91672DD1E +E7517AB30B7DFF7436C75999DBAB0F7B3A7D452173F9FC066EA136998AB8D3A46AF5CB99ADE3EF +F0213AD487A7C50A07E25B5363F2C3E47B79961BC58B4FBC206F8C17D4897A26101714848ECF2C +D7219D372F38188AE6657CA5A9D5140B832533226677A992CBD205BD8A7EEB8618B6D2DCE91AF1 +8401EBF19DB900BCAB2C7146A0832A3AED3755B8906C9A0AC65CE2FE44E3DF2F68A75FD285A1DE +60FC073205DE3B4BA9ACB0E06C29D5818F55A9DD737F2069BAABC52FD9B3F386127B9DC32B24FE +9F39921778FFFC702300C1FC92E3809379FAD3189B34D98EC371F9FAD6763C81B424B0E8339934 +9282C1204BA70499E24CE718B2010FC17458D8208492EE56F9DE924FD848705969B622BB0F2481 +6BD0FF48BF235DD71BD6F61C38B6294AEE8676AFCD9B8564E36EA6A95C4876872B94C615DC0994 +D522CEEC5B7CA9ECFE9DA4A70613537A1FFDDCB26A909A0C8512796F70FCE357472476F30C9D7C +AA718917065C69D2EC1EA9620982EB4B869035E7183A71A910212F18BBCEB054B9BC7419E45ECF +2E0C600F865B44538AEA23950B5E4010BD45921CA12C0C1968C65EB900ECE26C5AF8D29D31346E +A2CA571A9E40938D85D4483DD894907ACD68738986D864190CE11362E7C50346473639BF4BEF9B +81160FDEEA602FCE03FA4ED3FC5CEEBD50F3576CDCD4F21408A2D80E265D5D607CF00CF15388F2 +C6EC9A1B47C77DCAE2E4F2F978508923FB4AF9CE6C8BD1941F66866465D9826879918CD49BBB89 +9A0B12CDA6A069B9944666479515F2B7E39F94202D4B369FAA1887EF5BF5304E8C2B2BF291D6B1 +4E656EEBD98A422438DC43124E73DED0C86F71F98AC1DEC79E65C71AE390A9D7BA0A2A5AE8EDD5 +5D22DF7FEC889A8953ABC0B0BB9898FAC1CD7B25263F7AB9DE276B20203ED2F2F43E7D52E442EA +02EA9BD77721C48D819AF6A522481180B75C940780AEF72D451D556A9B6781C45369984390B393 +A873A2E0ABAA5D91DF10A1A29E7AF13F74FC678716FAAD7523B721B2B9C0C46C358887D0A7F655 +40E317B0F9B6359CB0C7FD951F28FD77D33160CF072D79559B31687A19AE294FE3CE1E9D30B083 +F955672E43D601A8FED9C7FB8C735C681B612B327D3806794D061C3C95AF819B08515A2D60E536 +D3DAB7BF64E37758CC9209777C62677547E065E20B74175EA87DD3836D107D867805AA0D7A913C +E8201BF1BB8AA51657E08999788761B3C5747F40511D58798397D64512FFC2BE814C776B9EBB54 +9E4F5A3CBE75D920B2BE77CC141D1D26ACDD762BAD54CA7C37EA9BB718059948E6DD2C404BA4F5 +08AB7634D7F7CD84A3C6A1881026AF15EE46DCB249436A9EC02E96D88AB19180FC2D01742ED7F0 +2D7684B698AD17273CFA4164688C5B411D9E43DCA5806223040AF23ED0534A1E9D922380EEA882 +A5B861CADBE7637EFD6064E56107BD6237EBEEB8DA25B11BDF0A02569374B70F09818E9A8A0F6E +F9267967EB87CFB403D57215869D265E58194178AD151C0F774C726A2619B08515D3FF9D9ECDF1 +4A7A40F43A154D499086B62D82BA643A2742C2F9420D73D7137C20C5C9F9CBAB60278E6909F8C9 +AD368E6CA36624FDDE2E1F9DC3A76681FDC202A09CCD9FA7904BD49F29C645AE4B4BDE9433D44A +D304FA982F5BD914F42A77EE7C4338435F8312EBDE34BF5F8D805ED362C6A99440A641DDB01CB0 +CAB5E911A0E5A2935F340AE81B91592BED1B4272CC03247B1F27AB2E9B23CF77D3DD021B907460 +F8A877545C42AC468B68586F0066342AC40F497397DE037EC5F5C517146A72CFEFEC3675C88146 +52AA1A648DD3194BE106291289E0A0170FE7C1F0616A12E78E8FE112B7B2F60A623F49836F3FC8 +CFE47E820E9911C19AB297882D2311F41D76452CC9DD6F6F95B0520BA3EB394C15189F9DE9573B +85C09AF740EA834A5EEE27A0400F1E3A6B5F86D0C69F8FA26C7BDE10DABAAB8F7B3EB7071A72D0 +A21D82F17485DA6AD12BE8668D39CE0B6A4BC7B59A9D8D6A47A15F62D2B41283E9F23C35D2865E +10BFB2603A607E5246775F67A41E2EEC5683A709D02C92F4D021E07649C4C60A5F0E98D44CD83E +A34297942AEC4D397C4672E5ED5E1FB1CC51F3B6CC7E8FD0128D7935B05872A6B8D76F5154BB3F +17A4EB5BA0437DF785A63009C1D8084FAA7EB5145E5BDD31E9984DCC2ED1711A2FCA3725445AE8 +C78BB1C692F2FCAD9556C68E7C9196541B9A4F2465D16B4205E345D096E8E5B172CDB1E784B228 +0D22A28813998F653A4D47B5346C636D7C22CEBF2DBF433A8790FAE8989A18C674BDB566FFAA7A +CCDF631AE4B1B2C876E45B911CF9F4B9D7BFCDD2684553B1CC0F3BEC3624E44F023BA223E83EF1 +40D0E6D506E11ADB79C0DCDEED41894073B75A931D0DF6AA89078910D35E6F65B956AD74F939A4 +B30DA755CC42918F3E6B748F066E891F0A158DDB4FFDEAACC6E71A9AE04DDBAF899F796A80F6DC +02703C64BC7E021BC292A9684305D59CEB84F579B0BDB215E4FE8399DD885C8337A6ED127AB50F +E2B562EAFD20C841E7E5DD1DF6993F4E60B59C6FB2B8660ED942D360C5DC9D48A9ED8D9A08BB4B +8F7D51AA81D0F6B5C63E3633EB4A8DD8EE07E99ED5A455B6D5021D91C154AA57807357D477BF2D +626D54E365DED3AA67230CD8FE70C51E3EBBEF88FC014AD287EE77170EA9E47828271235BAA930 +087CD8749F3528C7C60AF3EFA55DA68C6D3B166ECC7B0A88E4077EB2C93BC5894EF84D9BACB493 +203015DA8CD9EF106CFD123E8057AEEA2454C9651D312E4F6CB7CD12BDC1DBB475A1DC725A21DB +FB24F55AC85BA2F07531B23ECC411FB2B0DA6B7379F3BDED7DF2F412A016E9905865ABA4274EE3 +1D932014FFD8836B8CD636568CF0BD2A7B7D4F51D716BCDC50D56936A297C0E7807674BCDA480A +1DD90412EDFEB4F18016E5A5EBEF885D3D33E2D925831343B0CDD184AD9D9779F0F50805894776 +3DBFE9EED1AFE3FF0DE7D8691104B4155821FCEFF8D0BA9F35DE1C39B063394E2F76B0245555AD +78965B301411E1D93B5D7C2284848B3CA29776059D9AA4CD2AEE88CC0007376C6EDEADA2DD1CA3 +F5293EE8E2C9B0F1A8F5EE9D009C63589CD0A7003B7911C254B780C8545203165601845624AA95 +2519CB7F1A1CC004B84458A19C7EE68FB249930A268BA05F34C08FA72BA4E4E6919EE667DC762D +F206E8BD03D6A1996887DE81640A2BCEA4052FCAECEA52900A9296A4A399F7ED0C3D7D3852A897 +9F339D42D32911E6E119BCA337B7F09F2BC74BDE2B71113C439397481A8A5AB3EEE1EF9A2DD798 +E9CA52E836034C536C07CD377259B9B72FE7FE68A1FCB8D4707B223AA693CCEED0AB7D97FDF90D +84DEE522697C071AE0EF306ACBC192AB9A9FA397E6CCB97F42FBA37818A844FA045AD2BCE7AD5F +0731590C7A26AB951EF94059198AEEDBDD869096FEDF9EA55D22C23EB6E4ABDD469B3155CB9451 +04C51EA9717EC395B7BB64E2E4AF5D31AB85876028BC78E0CD3BDBDE214CE56F5687B3009DAB8B +0AC6D75B13752782F56C590AC4FAAEB6DA1462988BD69173190F7A486077BB49CBF5FFF612B0C9 +57474F5401B8B1E8F240EC3F20808DCA2F9F2D810A07498297DA66D9AF329991DAC432BAB46C01 +F1B17BF8DC6FFF54F40397026ED09977520A41BEB1411F9334E8CAA93E5CBEE598A88A01B25601 +8E529F173153A67AACDE4A8296BFCC5B88E6E20B29D083889C18B4D38418B12F8F3514FC95130C +58A0891AAF8A9C4457603EC6FFD26F0E1B957E783D4F309F4B654980C22D29CB8646C104621282 +BB301829676E5F3D07F090E172F9A74E9E36103D3E7FD4D7AF0F6AFABCB9A21250BD6E07A1AB03 +66719B2AE6B8B98B6782AC722DCCD0DDE69FE9E39293130A206E9CFD64184A589C4893C03375B7 +D7094CAA426EB2DA5FF79C2DE45F5893EE2AEA388A2AADBAE87FF70B629F304AB0D81D41F44352 +1FC0BCB558119C9FECF5C9EA1A876A0A06610CCD279BCCF198AA606A2F4554880BB1BE38A91B55 +48D503EE76A3ADA011EF1B31F25B3A6FFC1A6C6544431CD1E1DCC06789C88584FD1878D3F5F565 +3B6FBB4B5B4795779F976252E9F3F09A482F9C8DF00B5EDAD6F0BDCB811E622A4FAC70FC0D6F6E +37625FC077D143C6AF7E76280B45F241C2FB62951447F84012AD8401C0BB7B794709B48BA3FEA5 +D85AB7D9875320A13BE8934E8FBC8B353DCE93A16979FE3A97D0E9A8B5D1F7DF52C6C18F60AC87 +C8B17DC80235023652ECA4275A901D9468AA7766128FA157DD051060A62CA5EE8235E79CD8D5D2 +B651066E2D8481A717EC08FF985BCC2B4B5D4BAD6408B0557285903F26BB6698710CEF6102230D +042EEFD6069623A5003CCBB8B71F6FCA85A88347DD13459AEB84EB4802ED2ED98D02494CC9CEE7 +FF5FF87319C591C72CBC3F43DC7DEE2BCD0E96DF6EE42949CAC9A7B7CFEAB55D3473DFC3724105 +81D8C7CE893A1C374D933FC9CFDF462481D98FCA27085AFDCE8CF359E127DCC1EED7B558FC6980 +813EFE260620D7A7BAD331651C09B2C7F5EA13A7D095368B1453C7E14E6F6F4C99CEA3F3F51256 +77A448D040F2D496616C86D2F6774F2307163FF9C0AB8AC88B20A6023E60A2C8B63E1BCB6F59A4 +2D24C107DEF5875E7EA1062646DAC43CCE029F56E91A49B0BC6873D1796DDF7A0117ECC41DD4DC +792B5B97077E2AB5492876A547074A73D404CBA4B5C0FA1938349B7C156FEA5952AF7DAB0002CF +84A92D63E38C0ECAF31FAA2B2A033A3D382C3A4416F554E4E00100D122B2D75AF0BE42C42C7B1B +4E515B81F4EE8D3F9C39796A63506223415C2A55FFA26EB9E28ED5EBCDC5D2E83A3B27DFC8B6BA +8DE74DAEC630AE7BB6DDB12A42C1F666A05EB18665EFC68FCE7DE3820485FE9159E35EB35E2932 +62FCF5712BFFEDBC974E5990BAD0D64D820564F54324323B31ACF948B3A27F4AC397A958864268 +5F86D44EA685BE3CBF1DC01C293397B8E3E457F619D8B6A85E75D838219CCBABADF23C0E4434A7 +787DC52DB315BAE832819F2973F11C045A4662F51256BE3967C3231CF42AC7DD045786B27E377A +A42DAA473A697EFE962CEBF368F10E0F3AC73EBDDBA259ED770D8E43F8B39175BCFACFD1E31DB3 +88950902A66926774EFA8EDF9649BD8AAC64702EA9ACF5717B5C91B4C150EA2A98CD128235B6D2 +645FED4EB709C91D4F71F2E3B6B971A378A7B3499773293D47B59AE87AA1F3220CCC3022066508 +5965385DE8031B42CBB2A2A0FCB9A038AE2BB898991A476373CE559ADF3263F47D6C103112A5CC +E3EDA9EEE4C24079F0EC6F88E9AD54D1629606C97F6EF26ED0225718AFAEAF1A21C712315C03C6 +9B019D238C17AB4FDD0A52E840E28C6D83D6DBC7F04051CD5F8A61654B3037FDD8388C222A55EA +4A423F99635EBE452DB660388127204288A88BA9E08B6C31F92960CB9B7557CD754A3400D48F1F +33EB9C6E820BA19A66FAD15A086EEDCEC0386DDE30E8FD98B3A63EAD8AA52656EAEBF9D3995C08 +083CB2901C8C04E8CDDFA28F89FA371822652E71531782D1388AE97BC059278DCB3DF5D175DB21 +FC34D07B6D3DD38F44E6BA13133D6E2D54033C4A77F0A4B282069477761F5DE689F4EA7F734BB4 +5C0C3AD0198A5C9F9AB087A38A0F47BB85CFCA1DA6E818ACB5B1D9B322EA1A67681427A2E92A5A +72E27208D406D2F24CD583EB914DB7615EA17B0F471DE94AB404502DA4CC394ECE88024B6AE998 +CC7FF2D1383E183DD4562ED30BCC8BB6ECE442449BBD57E546AE5E6993E2993A9E0E49784366D2 +6A0D3A301F81AD2413F564C4F36F7F8CB3F01E1BC0609F9B6CA4051E30485865768C9CDFFCBC7E +8E5A91904F43024638C4D70994F32D75845F9F865E9037491E7AA0877ACEDA00AED81E74122F94 +BB270ADAB594F5055D2B856F9615F1EDF02AE54BEFF75D33F53589F82AA67139C454ECD8077C8F +53509A3151A7EF94E80BF03F881A0553D321B41CEF83350CE9B40F8CD187D37F9B0C0D7537D498 +BBF7ECE55A8F58FBECCCD0A67EB9D86889EAC4E61CD90C40992344C0D79FD1C8ED6D7272B48406 +81B99C5A06266FD81B0904D89F1CE6CD26D9844358263E5385CAD345FFD28000BD449B1391BEAF +FEB2E5EE56A63637690F48105EE0102E398868DE9D2CB1246234605FB2A5165085370E4EF4481A +DD0BC5214BAB5055AEF44E54A56E884F96CD9DEB53F44D2BB3D29839F3780655909B8F5968B491 +83E5D0978A1D3EF4A15D97EA1D3F1B16FFCEAE52E18F34BA676F2D478A5CE9EF0EBFFA5E0E8DBA +AF563359E5B0E1FA0A861DAF2F664F78B338999DE20CBA9DD87A91C7FD06E12F3FDDA8EA27F945 +DEA14960910D04FDE66293A8BFDECBCA8F5D1267CCD28B5161C89CEAFCE617CE08496BB3DE963D +34AF77B9BF7533C46F910A673D6DBC905C11D166B26809AF418B3A8CC243E92F7680B1B02A56F3 +355FB37EBD6F1CF721BB8B55199F04707C9947CF0747A124D6136C18091F700C1DAD3F30CADD8C +AB54C79ACFDFD261A443C3221174F869DC157F61E198A69E6267C9B48E78E907CE5FE7FD4B53EB +9189094E0EC33829F7C27C6AE1CC732C3D191D522CDFAAD023A181FD7B5694F0A65FCC20F51570 +95EA8DB3323E2DD26FC06CDCE01EB98A5ABCF0DF84F3A14DD67EDC748193627EB51C8F6692D45D +C830F3EF7C823BE662184B79F6B523D75ABB3E83F0BD78369669A26728BE6B6709A835C3299A54 +25D05DDCA7CB954F4B325CB2E5E6C28C50C59EB0163915521956EED1A2B2DB82B22F7A1B9E9CC9 +F40044CED31C72E9E85B0244EAEE92EE90CBB3A8620A53F805E9A20A6A0FBD52DE2E75ADDBEB97 +3C3A794EF204C634F464E0725FD33E8146D31A976D305EEFEEF70DACCA2BE227A1689BF53D61AB +CA013B235A2E921FAE0BE489107B223E99209B7CAC5355A33F2F8C04996D075E18007DAA3C1319 +EA66E669C4198838FAAC9903B074510749D671308C9BCE1D173D6C296AF100581E501106717F9C +59E3A29537A16D376D9BA8DA51C3FCAB70B0D0F61445AC05758F1B579DCF0B5CAC6738FC4C47E3 +6F5A3A27AC9F19045BE6B3D5482E2D30962C3141E12AC96D59E6D43448F85D1999A39827C3DF8A +933571A6585DB257603471CE0C77950F8A7D3C25FD60888A26F6CD77281BFC5F4A72394ACCB7C6 +A9894B6015226109D1B043004363DCB6CBE56449917861747F1828E6DB19F835E328524A69464B +60DE76F08CA1FEBA7DD75D78778CF64F0050E225DB6A44C785592459BF38CC075ED97583AF0E17 +EC67B74D752E580533F98000A39CAA0A3DEEA46B89D864E22115A084F97B5B0D3A050AB3ADD338 +080096BE5A156EA956947EA2B1BE6C357BB1901DE7FCDF02D78B647E1FEC144FF3C8A7711A894A +1E7D849A60E0860EBB256E15C5C995951308CF30F1A87E8D3E678421B7537199E27270B4755DB5 +536CACC90C4772CE0CAAE1780BC54ABE0C3BF2627B64451DEEB875362F3B47E95577A80CEA03B3 +C6284BD3623306A66907C6EE6F4E16617783DDFE3AB55448F80A97E8D5CE6B73493B8426DD163B +96978D8052FFCFF0B0CD91F1D366FFF67514F92F6B1FEE64C3C023EF905C2830BA7BB7CDDD8532 +F18CD1BC5EEDD4E57FCF043625483C58AFFFE5EE5159F1707BA49760CF3D6900B2A6C9B64EED82 +ADA8F0B96D7BD624A1AD4B3DF0118E86B98B46D72A0744FC895ED2248618E6A349C51A44A89C6C +BEC27E525FEA388BF4A52D963AD520CF9A768B8E1BC6345EB434013BD9FCF6FC5A309CF7953DF4 +E6A92DF3FBEF92FB1A4A7FC4AACA0B95F070E908AAAF4738227375A3FEA047E3B4823BA8FA26A1 +F497936F94ACBF1920E2C18099F154F2D74E50A5FA623B2048920B7E0AF9446EED9C8D4B737AAD +85515672B6AF1543E5AF733C178FF90B89B6EB1E92162EAA240B158A78652680F3509F9C1BB21D +EE46DD3B39A2D17029BC29E260AB570B29B02624F152F6D56DD4F2FE3DBB352A3CFC4AC0534F45 +E31ABEB8C099BC8B7B829F6C7D2DA0C2B9D58E22A8A8BF73D9EB1CA278086FC1FAF212EFA755D2 +96C938CB7EE5AA4E007EADC88E7205FA0874D44B769CA1E0D757968A39FCF4F553C14DCD9B34FC +5246D3595625943439F4F876FB6A52EBFA06056850F5C92D434FE017FB3D4B0E9022B2CD28C3EB +95F084EE99911CE955B5B93196BCBB65C2699A0C942A998F785A59B43C8F8DD87BBA6107854FDD +70B3763161AC79C7CFF4FA36EACDDABEA6F5CE84567AF95E389F9C2CE9E972B540391F167369AB +CECA3C3D9967D41DDE6F455445D686B3B8223C6E8727BE334A73EFD62477DA3D89DE65F3EBF81C +4DACFC5CB89587AC9267B8670AAEC340FBD51971A3323B17978E110745B84C5E6FCD74E132BFE2 +19BA1D812A645002FE8827DDEE54546099B47E82F3935006F0B44E174B675CAF24A8FA4CE10017 +0F34E1914F3222DD851F0A874650A14866DD1EFEC6A2D97969F4E3DAB9D449AC50B5E4524BB5AB +96932237FA7896A5284F85E592B01D20C761D35BA83B4945F5608F30A77A84D918B6847516F96C +F351874BF52EFFF38ACCE88174634AB0338A377E99BC3136A0600362EDFF0E1D42F8C5F984ADF4 +AEA2463EC1B3DAE2A6CF86CCC2AA846C7EF31653605619C7D0573D27F914DBE344E5C11B697154 +347E09F54C4108A1D71FA878E4B07D35FE056DFBA2D7B99C8F01134CEEAD849AAD3AF0CB60505D +519AFC82A4BF5B342575B774D88173F1BCF2D914026D3413FF187F9C8FCE3709CF0F7E9A793483 +876A4FD3F0A29DD8DB7F470E88DFEC249A91BACCAA65AE26EFBC9CBD550A935741A5501021B9AE +064596C775BE5967FDFD3FC595EC5CEC2F185EDCF11492E76C8EB22CF5C91BB63E9AE2649D8A5B +CC7A47943E40E3B473EB5E792919F03F09688B71ABC0B0E2CF64E1DD286236360F7EC828CECDE7 +64CBEDB243828139AC4C72378B3EAE67D43CDCFB95DFE17DDEB6C2354FB8C52ADC0A666C40E2A0 +4FBCD8C01936F04F1A983B68462205765CC6E782A2F459C040958CD16D8AACA06E1A7BF14BA6FF +D570675A54E431B2D2CE78D008F082693123D18E1C3D27171DE5940F63C3FA5480E80B5727F684 +EBC48DEF479E345D2C9003481AE5A7FE20A1EB0CB422FD2BA07A3208901CA8D782DA95F0A6DE2C +CA3DE689C498A10CB8E5AF0A2203C5C147BC17BA14B4C59A34B9351321EFB281494423D0B784E1 +622E2F3EE7591A23113B3B90D34D824549B3A0B513B8BFBAADA9E1C4879251BCA93E6C40A8731D +19B411F1FA3C3F3BCEB63F5B9B8E868D4F0B966AA867EB2D4C301FE6A1D35159B4B7BAF8227D6F +F7A86BBD70178E4EF798799F4B43E296A889120BE0828EC211A38BF5A5AAC3C00494B0AEE6ADC1 +B8FF56733A3FAF015E6BA38FA59DB63FB3C9BA355E5F2A555903E4A22F2D1F26AA89C21A623DC0 +F0D8AD654C3FBC752FF21C16321F5027B4353F6C12FD340D272C2D4F30ECC9B58DC4A42F71B954 +B2764E077E0CEF1FDEBA5A6A8FE14F3AF0122C0918DAF87B157BE507BBB50DA1F208534607D906 +D45CA3444CE68FCCE04739262BA5B3B0DC0FAEADD86FC94FF14548C98592F91F89948A173B76B0 +8D2F3F845DD251F09AFE656F69D115157309D537E4F663CAFFDA726A5C62DF8EDE1EEC7916F86E +CEF600BA02901BC5A56086478A867024C58A4D8A631736FEA04F09C9DCB4B3EEF89A0C5767B3EB +8B0C2E5D08974638E79EB2CFDB509E0948BC42E1A9A29DDB09BD44BF28186C3C5AD4629D7B1396 +610782E464BC4EC12B2C484F01250BCBBECCEE474F25DA98AC82583467B62D51689EE98AD2FCB1 +AA13D44BC1CEE4CFEF34D37FB8789AF5BFA59D05D15449332B46347A7CD1F0791D48BD563BA6A0 +876C8B00496E3947C0ECF78782945109BD9306030CBF511C2B4FC1E28868EED9E2039002C98F20 +43828EBEC486919082BE71A7CA278361D0EB9DD7E21AE9CA80EFA147DCE160ACCD39924F45A821 +D89721CEAC542ECD09E76ADD11FB1710804C63B1268FBC89CEFD28314D9D3AFC26FAA897B3B7E8 +C882C4125D3DF9A67E2DE27A0245D4FD9075DE5D7FCBC8E48125D8BEC3972FFE5F8ADEFF1258C7 +5506691E5DA81359C24A978EAE086E7E885D8151A515F15A475FDB038946F7D369644279C2186D +ACD69FFD922EEB5397F5C3196548CE35D6E35C4DE6D95BE566665E4E0EE11EA43CFB9D0133B5E9 +D2A6656AE1861C158AAA97C48DD426205842BBDFAA90DA4D5EB11EF29C24898D9FE9B29B2AB913 +2A774418F0190C3D0FA29755168BFB149E0066DFD3BAD7FC405B28A27B2DFB2A356CF6F86ABFC2 +18C7E164F6F0D6D4CBE011E77EE8A045A1D1134E115D730D944CF34248C1020E15955661DFB6A1 +687CB54FAD1AD759B7EB209E6A78B4F3B4F049258E799B6FF7243B26B573D2B26AFCBC36324E2E +9AAF7206D3680EFE913A6E9F4CC8CC7FE5FDBE60D262D378A123D8BA928CDD6651999854F3ACF5 +126C00179347DBDB34954378AE5A08A690A98413115809C95A6142A662DDB89BA25B6026064A6B +A7D85963FB4D10C0BA1BCF3E73CD597D99C4CA47CEF4692A0EA5DC89C2A92DE5630EF15819840F +10FD394BA987AE798BE15A61AC464345E203B06A3ADD25E1607F9C750887F5E7ED7F2A12109914 +542CD396392738C7B7A7DAF58A7823414D648CDA083CAF2133CBC0318CB11464411F85B8FC813B +4D07757D3989E1E5E063F2D8E07E50BCF85811766CD79210C6AAFAF085C74BFA3DA37B45386A6D +C83DDCFE3DDBA6B3F999F91406D35374E60CF88F2920208C1D2A162CCA6B27984D905F3C271524 +1FBA18949B6684E3433019D3C8B45E454C18485E54A74D196AAF9636E85D179E1B5F0544D09BE1 +8855F32091CFE26A425F114C556B995935F821D811E0E5CCF779764DE6EC47256481B25EDCB409 +E7A1FD2D72D6B5DD56EC9D4474CD5A9660972D366649D840986AACAA04765435F4EFA7C513A10B +1B67FBB112BBD10490B0BDCF5E5BD4F80787E43895D4EAFC807CF18103A4EE315EC4B71BBB6022 +FEB88DE20D8C7E0244B95015DDD03CB93417A691CED38B37C27BD1C510EC50E2D82C5ABD32D24C +29C30888A2E889D0EFC93945681CA613478CBBB222810C4E4478915E598628BAD3A8E31402C1F3 +4653671CAFFAA244053AB7174E8576085F90019E0DE486014A115F88DD9DB9B10E91F129DD5A6D +00AA208459CFC5A7A2BD1095DF24BE5DCBCDE96D79E90871084AE04C1DA8DC2459FA0E191FBFFD +EA46B20240E40B6467A2455C72427B119BBB07C5725B823C112E734A09D07970748F0D0D969B75 +1BAF2451D346FC2C56122EDDB88287B1042B9F24C933F541492D0683DE0B0325AAE667521F66A3 +27C863F4AF7F4A937F7BEA60B5299FA5D170F9413A2E6EF5EF70484C0D861EE719126A942E0262 +52279876430581F0AF1841719DA6E4D8C3B932837FBDAA3FE08C18E1C89AF300E3AD7DF34FB439 +9BE9A757C830E18699450B98B49EED738C09084CA5E06DEF86BC58359DD0D203FFB11EFEB043E3 +7B184DA9B71C1AB17A9709FFD273432A34B3D924CB2F29BF5DF84596AD447A049E3A451131D660 +57FA9D4C24BF824D43DADBA7D1B2926C9CA62D8AA8C29FB2D00B0EAB7322873FA5F9E2963EF721 +6BEDB2D97548F6C40E233B25CB3785258D0E7FC096ACBC0FABACC39DE29BC0E770474A541D87AF +69D3B8E9BFF00AF11DAF9DE908EF674079C7975D7443F30FE21E02B73FF15FD44C619EAA8B9BAA +889266458C136A3A92E7979EB53A04EB00 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +%%BeginResource: font lbtr +%!PS-AdobeFont-1.1: LucidaTypewriter 1.001 +%%CreationDate: 1994 Nov 12 10:47:10 +% Lucida is a registered trademark of Bigelow & Holmes Inc. +% NOTE: This is a partial font in Adobe Type 1 format. +% The complete font in fully hinted ATM compatible form is available from Y&Y +% (508) 371-3286 USA, email: tech-help@YandY.com, http://www.YandY.com +11 dict begin +/FontInfo 9 dict dup begin +/version (1.001) readonly def +/Notice ((c) 1993, 1994 Bigelow & Homes Inc. Pat. Des. 289,422. All Rights Reserved.) readonly def +/Notice ((c) 1994 Y&Y Inc. All Rights Reserved.) readonly def +/FullName (Lucida Typewriter) readonly def +/FamilyName (LucidaTypewriter) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch true def +/UnderlinePosition -100 def +/UnderlineThickness 50 def +end readonly def +/FontName /LucidaTypewriter def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 54 /Aditi put +dup 35 /Ahmed put +dup 37 /Alasdair put +dup 39 /Alessio put +dup 41 /Ali put +dup 43 /Alois put +dup 173 /Ammar put +dup 47 /Andre put +dup 49 /Andrzej put +dup 51 /Angelika put +dup 53 /Anton put +dup 55 /Ari put +dup 33 /Arne put +dup 59 /Art put +dup 61 /Ayman put +dup 63 /Barry put +dup 65 /Bent put +dup 67 /Blair put +dup 69 /Bonnie put +dup 71 /Brian put +dup 73 /Burkhard put +dup 75 /Castor put +dup 77 /Charles put +dup 79 /Chi put +dup 81 /Christian put +dup 83 /Christoph put +dup 85 /Chuck put +dup 87 /Clovis put +dup 96 /Curt put +dup 89 /Cyrus put +dup 187 /Don put +dup 255 /George put +dup 189 /Heinz put +dup 179 /Hong put +dup 178 /Ivan put +dup 56 /Jacqueline put +dup 57 /Jagannatha put +dup 58 /Jan put +dup 60 /Jason put +dup 32 /Jeff put +dup 62 /Jerzy put +dup 34 /Jim put +dup 64 /Jiri put +dup 36 /Joe put +dup 66 /Joel put +dup 38 /Johan put +dup 68 /John put +dup 40 /Johnnie put +dup 70 /Jon put +dup 42 /Jonas put +dup 72 /Jonathan put +dup 44 /Jorgen put +dup 74 /Jose put +dup 46 /Josh put +dup 76 /Juan put +dup 48 /Justin put +dup 78 /Kamal put +dup 50 /Karl put +dup 80 /Karlheinz put +dup 52 /Kaspar put +dup 82 /Kees put +dup 84 /Keith put +dup 86 /Kenchi put +dup 252 /Kendall put +dup 88 /Kettleson put +dup 90 /Kieran put +dup 92 /Koen put +dup 94 /Kristian put +dup 98 /Lalu put +dup 100 /Leon put +dup 102 /Louis put +dup 104 /Luc put +dup 106 /Lunjin put +dup 110 /Malka put +dup 112 /Manuel put +dup 108 /Marcy put +dup 114 /Mariusz put +dup 116 /Martin put +dup 118 /Masahiro put +dup 120 /Matt put +dup 122 /Maurizio put +dup 124 /Max put +dup 126 /Michael put +dup 177 /Murad put +dup 91 /Robert put +dup 93 /Robin put +dup 95 /Rod put +dup 97 /Roger put +dup 99 /Ron put +dup 101 /Rudi put +dup 103 /Russell put +dup 105 /Sam put +dup 107 /Sami put +dup 109 /Sanjay put +dup 111 /Saroj put +dup 113 /Saul put +dup 115 /Saulius put +dup 117 /Scott put +dup 119 /Sean put +dup 121 /Sebastian put +dup 123 /Shuichi put +dup 125 /Stan put +dup 163 /Stefan put +dup 171 /Surendar put +dup 188 /Vladimir put +dup 45 /Will put +dup 247 /Waldo put +dup 215 /Wilfred put +readonly def +/FontBBox{0 -211 743 940}readonly def +%/UniqueID 5054489 def +currentdict end +currentfile eexec +AD776B2EBF901A49F071BF30E3DCFAC47FA0F916EC503FFC9EFF58A2E5E6ABC78B442C3E49096A +372F9AAE7622C3ECBD02783028DD91D32C0749B44F46D712056235A4901EE1E3989B3DC1451624 +40AF8B496D8B010216C5D0E3D6D7F34AED88500CEE93E2A4889C2FC011056B0222BA09F5697B86 +A1350BEA78ACFDFDB589C8D82923F5F8AD8C1480A7D7EE8ABF2004A86A75BE914F200B220B02DC +E0C7FDAF4B89502B119D1FBD3035453DDB3DC564DD8289E85D637884AFEAAF7C6FF38A32C70EF5 +C1B638CB40003001895712A251C27020F3B8D9166E77E2A69E1FF83886E0BE4327AC9142301CA3 +F4DB60613570C39367B465BD2E11A593DC63EDCC1810C1F5EDBF099DE46A7BC166F52311BE4A2C +DFFAB7110560972AD364AE5170A11FEF4E1FC57E896F7B0FE2389F3BE19EB48DB67AC766314064 +174EF2E1412F25E41CF45CB6990732C755064FABE454F1B1D5EA703331A09A7A9AF323557024F3 +7B24CB30C52216514E014870A174249B7B1C05638083915C9B633E3FA00DBA2DCCAD433B078A91 +E405EFD2CF75CEB10E524FD95A2BBFF9EEDDFE3016F6C2D3E901B81B723E4F422A0B1442A0E63C +CC52A0E72EDB5035D945A2FA1441886E56D2B10A7B5950BAB79A9653CD37F0AF255B3850E1ADE0 +9CFF282133A2E30770C76618F58007FC51C72485EA377798C5C8A00DAB46815939973C8FDEBBC3 +7B5C966BEFCE797755B7E73A5E55CC69BDAB56C7E658C86B8FF147630B6D222993D3AC6AD4542C +078835BECCF377ECA61A10F66C41ED8379C2FCC2A5380AC1CCA64D05CB08109D76CB1901D00BD5 +4761978C3481B305877CEBCD436944FB66AF914A1C8D2D125DB01ACAFDA9A8F71BA3CC83FB11B1 +6ACFFDE43513DF984167288E886247E02501210DD81ED939D5D18EE3EB3644D5EF61D2BE58B7C8 +106045C8A3684AABBF8EA6EEE01208F99F865E297A03B426EB16D44B34467735A1FECECEA719CB +F2E24F2A15395A18EC4F6A3990D9EAC78BF523D5911AF11C3EAC620D859B0B642984658A94897D +4BA3F1F622F2DFB6861BC85CEED6172393058E882721A9B3D2E00437CF7FB8DA4D1EC8CB1217E1 +697149B23FB1BAE92A7E0FEDA0374AF59FF5CD141426C498D2749C85FA6E6E2DD07EE3FFDCEE86 +DC3F0225A5EF81DAB98FA26C89B1B020F884D485893B5EFD6019A149D82925F3DD9694A1058065 +EE57C94BD63E5DCEF57F5C3C850419EAC7C4BC2FB81A7D0BC322CB0F88943A6F507A2FE460EEEF +A17DBA7B0E7493890299AE86ACE258EE4C7EBC2C9713406E365A5B30FB045AE0163723667C9322 +B05319D528C8C67AAEF79A6C34459311764B75BC63AB5165F831F1857F6B1D6801E39931FAD9F8 +8B61B304696763D30C0B58313D31CC287EED59C97397E8C0A748426DB6C0B7C4CA57A43E7E27A9 +A123734DC7EA137F307B9C9074B908E53E60F99E98CA0DE14A5D61967727709E1CB009EC9CD98E +9D796CF35B7B1FF2536FF8CD9E1C24B7CDC0E89DC29BEB398CB420DEC645001D90D59C7A5B5E33 +20425FCCFAA23ED880C41BB82A8CADDCB8B5BDB1D57F414F380BBC00B6A8B9591B25AEEEC69B64 +D671A078F39369EDA9E5C9FED9D179AC25F37A4E4D1E438B180B24D851812E407B242F932D9D07 +EE2E42BAF2FE9EFD338345C15F1C8329E91644DB1EA96E6F45871D8EAFF292286D7A70281381F5 +82CF13F5F987F423463C2DB96A23D3D9CEF5B4636A092BA8FC7C97AB42BADB4DE493C0B0A54C81 +82650C094D0B4591A2891949270492240334842911DFD640AEB2B5CB036BEEF59CEAAE37AEEB4F +4CB45AAEDEBE062358058A0D697972BB11E9F30ECBEAE599E404C7BC4C93FC3C2A604CF7F9183A +96962D3D0F03FEBF8D7A171E9537EDB0F8769AD1A442BBEE6F003B87F9EC0C4DCAB4C1BE74EF54 +73FAD92638E347980505361CA70D6A28EB18E83ACCBC73C481D4B81F62EC2FB250696E436A8788 +2728E8E960E09A330121492079CD349F5C8FDF0CE6824495FB17A3A97D7C031F9E8B50D10234D3 +C02792AF0C0BBAB393968B49EDF5BD4F84D83DDB9500A9EAE7EEDDA7CEDFC2A6B3B71F885487B3 +31028361BDA2334E83820C7E73A67B200F8E08B742DC3BFFF6E363AA1EA72DB7CEA77826A5D024 +68C8B19EFF5F8ADEFF5235AE6AA50F43C5F2EB56AFA58470FB2CE038D35DF1FDB5135B8CAA9F3E +F27BACD9D828623636044D161009F558132A6B6DF4AE9CA3EA9DCF94D961D7CB962C4EA67E887F +B9D7A3C5F91166D41C8427A1E0C8BA49C21E968D52B92BD7E7B1F5B1800A27F3F7321E3D200B77 +98D3F4B0AC1A396BE11D0C919F55CD8AF1406321E8EEF169B785AB38BA5AA61A5EB09A9F312697 +92D98DE98AE49A1308A5706738125DE51C98AA3AFBBB10124FFCE47F72BA6A1E5D96FB5BD8F989 +D1AB41DA7C2C71FD1C02CE697C81A0512182ECA66EC14CC8E473378FA9EB3927BC9EA91B1BBA8E +0C70BA78B1F7DB3124246AA9E4E349421623DC408D756578B11218BE2D6B613186D1D094179200 +8960A7F1B266D7C4DABF9081725EF2E5806AE27E5D8E81CC7B98C9CDF8D319208DD7A75C2B0B1A +7C13DE5CA9912EF40371D9F415840ED99AC446E1EC958001243B0C39641846EE67E79217DC6AF3 +02891C024119B55AE58D14B28B68225733BFDA7BC4D54EC2EC58AEF027BD34EDDDE2336EA8B34C +63EAACC4D255340CEB8166FBDA86587E207C06C6F804C366822435388ADD4BDCA7E345DA3C3912 +16C19BD9F424C5C5596E3D1BF1C6601D5967942070320981295BECA7EACAA9017B29EE70538768 +5DAA8B31D815A53E446EEEB107B369B824C97D5730A4D28ADDB131FA243225A69DB5CC61C9CB21 +018510F1930F3AF2AE3987D5110BED80CD8B6BF24998AC07DFB9C648B0BDE300DA8853FCBC3C4E +C47181B1665670E4809D03B0FEC298D1E22937C45159BF0E1C3278D727E40CD00A3DAB814D16C0 +453C20F343C8767778E20C3E12A9C0F30CF38F782C91B678FA8B73FAF9AB8337EBC636E05518DA +74C57B6696BAF384BC34CF1F50DC361C2E745A9906DD87BB93310DAEA23BCD0AA967E8C062EE03 +F573B67C6DBA52C3C78E4A6BC9A879A97924F26EA053CB90F1AE4968BEB209B7496B99E7102390 +4591EA1246F12A2B401C36C3D585A3C3E42E95316D7B3BB95509256DBECBFCFA8182EE874AA624 +B74C146E164A7509867514349FC6ED41A0EA7375C81E58CAE6AFC5524E4506458FDFF6B6F94A50 +18BB41CB3BFFA90AC6A605B372714552AC2CABD4BBB9400485A50E1122F69011BEFD2EA53EF4B5 +4DF3481CDB4F97F8BBB549612C3EEF4E860143EB2FAD42E5B9D5913E53DAE0B3468B191C8ED4E2 +4B5E8CED287E7012FA0D16B8019EB890D9A8BAA01629B0CEA69402973EFDC1618CA995505606DE +DD18D0474B4E08F7FFE947C323A138F944A950734A4586FE82A08B7C2967E67BC975B875A2AAE5 +05935906A0484CC6C2478EF1EC03E885D86CEBBE5101101C11B7B8165E132D2B427B8583BCFC89 +85A7BBD5B56D12F8C11796232B430613A8B4540BF45C97B6067A74BBFBF64851305257D1BEC901 +238A7303E12BA887117301DF80559342A4B551F8189E9DDBC5251D2D384831269A092ED1971292 +2396105767405896450A1F07F6B660F4BFD98369836EC514D418E4ACD93095A6AA2C44D0912217 +F48B92A5D7CA170A6293B0A4139BBBB39131E2B6F5CCFACB550AD74DCD4D466AD9AF69A409D09F +5ACE8C98851C20E19E4D44B1DB30905B9BE08AC52E0A1548793C591CE0E29DD2B102756822B36C +6E4BC505003DEE549BBAA843BA5EFF252F0A5E4CF14D1EA86F46ADDB6EF52427E0B6E2861583D0 +885196B68E53D9B72793100CBAF160F7ABAD3A8E2887D078E7F78FDB1437F0A58A20C7E300ABA8 +031E30B35D34628DF6E8A9689F2C5A779D51D6B673F38730E2C28CD4822168D037138B5DFA7A66 +4318B681D41864AF487BDAC6E635996D21C5EF1D16BE5CAF809C6E34AA787121164292ACFFA289 +15A115A11700B26B0BECD9B05A4CE538438BF67209443B4ADAB5BBC40F9F354A90CE53F0C24AC1 +F2C37FBB9022B23FC9111E292ABA30410005355D49B56D38F4C33C37F8A891A88B2F51957420EA +E5D22618FEFFB7C1A6436E75E4E6F4F8B3B847D4CA12D3D925A3F1F66EB6D87B19A53042FC860D +2A57D2B2967F001F6B56DABED79E82D33107FAD1F46172D4EF1A52FFBAB95A33180B0AEBECB34B +BFA4DD57AD85FCC81833CECA2A9D4667923A57CF8CEA991565051E3BD29DC4CAAF8B8DFBF3A76C +8EDAD02C5F5EEEC19D462EB48758B2440329F43A38CC21D68D26FC54179ECF102F15AD9AB1DA75 +046419CD4B0FE0BB79C77A72CB9583EB321C978C8F68A3568C52CF0A85C938A8065D18DFAC5C2B +FDC4659C10A237F09B924DDE6B6E09EFB77C158F9DC22E6310ACAB98218FFB6D547ED3D5590541 +AD5862078A9CB34C2BB08B4C3E620E0802E99DD0572B36E7B7B9DB269FBAD73F7A49F711E2F790 +2C0F15494D642FD63010E3F1B5240ED79B617A655D5FBBB5EACD66B85F02C54023640DF5150BF9 +88B62D82E068EA4E35824FA098321F86B68DFDEEB8F575B85AA76ACFD6FE55B40D2B141DCC1B65 +DDDAAA3E790F6B0B491E80DE0277D25D48DEAB2D8E48A004C36665468CBE3BA496C57596AB679D +C80E9F744FBE8041D3AD6F077CF65B0612F180E8403CB8D58BDF46FA5615F5BAE1AFE3959FD4A3 +EB1743ACC7DE83ABB701E949613BA573A67B4E9C816348078B2F857609582E5F144BE599EE4B15 +85A08F81174FFDBCD8AC2258B7FF161EB3A1849054B66934DD76DE536680E3AA92EAF1985D5B56 +C68B693A3EC10AB0FFB2B88609E8870670D2AACBA8B20E9FC5ECA607D3D90167453BB172484A55 +141AD585EF5173AEF115B5BD89B653246AF9C2FE922A8F56B78E797C497318FCACD97E8F33627F +579C8D1254166906EB06F96DD5003DB43878316E2EC4109E8FCBFA4B978AA15701BB16D633C2B6 +502F6566AA3869B9C94AB303617C3787C7CC6CBA808FE9C4E67725672D654E075657CD646E26A5 +82C68B47CE90C154A51CA289747585668A5A2D4D73D97E730FDA8F9B648B685B409A742AEAFAA2 +A818D0897970766B186FAB6836899A1091CD3B9503533334293ED15CF42143C13CE2D05A6EAA2E +D1D12A3DAF28F9178B9448E4EC2A8FF6CADBFBEEE028AEC622D3CBA1118E92C98C4B303F8588A2 +3012067D2E1481E68B4ADCD6594737FB2206763B5023A0148BA31A165DE5384C63480CAF82E59C +28A133A775A6E7E3A5A17CB8D9D6A3C9F3E638F67CE5D58926932DA3A9DEA6ED2CB7B5BBF07C6E +CA417769D07B64A534906E5CB96DEC73E8093209CD2A85120F6E3216B5171B4BA67F2538785907 +BF3B8A912CD7E6362E528AC47FC14F2832924FB512259CCE6B650AC1730C5E531AA826D86CB8A9 +D9AD673294D4F1D3CFDF738BE5BC6C9401A164C6E7850794ED6587D592F44D409855639AB72C01 +6C55878BCBE20DEC3D4C15B0C0D47EEE44D6A4E91AA1C297D25A44378636BE4EB6517BD486DE12 +950F53AF60D94F28419AE67BC2316E26BA82ADA180577C6CE2A56FDF0C1EA9B9CA2EF55A95125F +D667870226ED5D780A34EB34F468460EBFB8152024F200E40C6D42D5C5513E163C02B82C42FBF2 +E4433B60344D3EBEA637C78F734FF3321E743437F5AD1B92429B46ABBDE8E115AEE2904B3F3FE2 +369679466A59EC0433FDB261E8B2F227CEA66E4C57DF67F92284F0332A4F4E46431F282EF59975 +C430121C5E833A8174095118BCF0CEC899EBA8313C3690E85225F5212ECE4BB82902B0C662D78C +37747BE77B81F47C24F088F5F94A18BA923E54DDF65B9DDF5E9D64E4D8B086BB808CA791A0E8DC +2DBBA31CD58D21489EB64B11560AF93796A8E1E206DC7C15F4310FE985E47A929F76A6BC154FF4 +2C07B6F96E03F1D6BEB10A0E053C8C7DF0692929D1B62A3074DCAC64B1A6821FD25F6B434BB016 +E3CB58286848D04B8E743C400D477FA5F2130352AB8932CBFDFB9FB5C6C6A6EE9DDBA6DC41589A +89D5F223DEBECC40BBFE5CB5E5DA18A511450C6A679D10FBF99F6A391B11189B921246FDF6F552 +5083A1361F6B232E1F5A25F5E1D0DFDB1B812BA87143407C8ECABC78E5C7AA0531293AC7909A8F +7E27C5A87099723739C93CC4F955995D664D4D043D5F4B27028D336A03313A6BFD8A4E1F4023DE +1AA5A0F7EFAAC52FF9378BB890ED9B29F50DBBB920676A54FDAD07963E2846D3733B7417BA5334 +5F57F1372E89F4020DC6A0AB9035328B0DF0DF71110C2A452D2702488A229B54FEE6845814C21F +764007C8E119CF84454F608C91E1797DB85D9B8210BA1F7A7CD12B2A8AD55DAA18CF2042F4857E +D37C2ACDB63984DABCCC6BDF6A119C464C7D6EC30CB2E4620948B1B7BEA3A2DD88B15EFA953B3B +69C2A624A0CAEAEF17915ED4389D1217080B7F7D91887E055A86A6B287490DAD12D6165A0243A7 +A64587BD329E130F8E522D6570E59A33595672C7110FA2B8DDA2EC48F45671492804DAE5DB40A5 +42E21C27D2A5F2C37F00E871C3087613F11C6249EB926A0463D0486C5D5919A0A6A556D27A6AC6 +0E6065AE76BCCFCC3525732DF91F7C0F24A09A8C2053C231348BAEEB93395AD4DF4AF7A99DB0CA +9CB512D3D71496A74CD776A68E38B90673300A297F6A244CCD0341112F42CB9955DA3980C15BD9 +68A2B0DDACE0A835ECCEF41E8CF4EDCB493B59882F812BC4D85694E508FC0CAA2AFDE8C0B21F2E +A861F1620F6D01DFAF25B3ED11A7753395F97FBCBBD1E3AECC00B5940A6651BBFAB3556F720081 +8AB5744975F71644FD46B060CF74147238B6ADC1E9FAFCBB3C2D2A3F92FD4C141C520978A992EF +90B23EE6178602D2ADCD143E49C6BD72D24C3581F7F1A76E9122B4D8C9DFA3FA94D3CABE5F84DC +BDD90ED86A2E6D8C63EF7177AE85AEDE1A594DBC3C249A7B108AFCC6C75A502EE3CA0E733808AE +ED05CD0B95431DF8AFCBE86D9EA04971A1ADC6558B5B82E5BC3F98AF6DC4401B04A4D39335C7D8 +13DA80152ACDBF6498B99B3E314D18981340A1117D206368E4F2BE11F46911B33BD6FE35B0109E +5B294F59D3F025FEA5C2834ACFF2BE105AB95BAF201BC50A4D98B85C970AF3E39E0B05D15DF28D +0A18E82FCC16D85BAC813A9501A10F4CDFD022905FA5B10C8763361BFC4CB0FCE8654062C0002D +AADE193096D10973533795666EEE0AE8B7BC76D60B1713769DAB8AEAFE36A6E6786DCF15A1A890 +7C4DF6D252A5CCE68B28B6F564060A53FCC5E39E97FF61DCDA09DB31BAC530C8F5B999B1FC4E36 +A2906088897488081D74802A693DED16DCF651F62C15EDD2BC721619F848EBDCF226DFC535A526 +C3247E225CB344AAAFE6A954E89B8330A9F5B05961B5A7D362CCD2268D993EDCEBFD46C2944C91 +7F004CD27CAC0F142366D8F2419CA77C36770355CAB1C3BBAEDBD7F4D0150C4BEA551AAE4CF898 +E5962B6579F5B13A3CAD2EC25AD7AA6015D07028BE165BD40F27A9B33FD805B8F42326CF94589B +29249E4859A8D0F306E3BCB3A7EC3298904B0CC87E913B90149C765A43CC39144D523D6B26A509 +E00236093EE99B3513AC69DC5A2941F1E48A71B213559621E5BE6A641D943FE3A13FFD796F2BB1 +A6C452A24E4B9864FBD9A9B5331DFBC5DCAAFF5EC6232F15E9412BC2230E8394F5C0F92244FE91 +8043D83E3790475F6B35673F695244CB303D708E8E92731C657D81C7A28EB491FD849179BD0886 +E72E47F1B4C34B465B4B0A212D57DD804C7CDF5814B1E6B87C9ACB9C74E1EAD3C4B8889EA4F25A +0CE27AF6F91593F0DA3F55C15C9EC3CDA8D6BEB60FA0D8CFDD2C34C1B0143C36A80B3F77E9E4CA +CD42068746943063788129B9B10DD969706035C3FB7971E9A56EF6FB3A0B4ADD1D977E014E1417 +ED81B819435C8D8002AF809C6A252FCF5F17BFBC747BB7E604C9328F353016B85A69F468164401 +67563700E8EF94313BBFCEC58B3FA6C89C0F79AAA61537DCE0B489ADF40540989FB040E2FFC535 +0B85D9C011A94B7A806482E02C1038F47D392BE62F7A192CA4659D8F0A17F1D53DBE33A6749125 +CB64549F2DF8FC0283E48713E166A6401D1DB6193DA6F4DFA2AA7430EBFDE3DB993A6C8B58132F +3D57AB5E466566ABB13D5C29BA2262F3F6F574D275CDCD653E1F8F824F516B1C688CE97C14FF3E +BAB81F8FBF0A6F64648BBE7F5AD5C331614E5CFF13CEA871D865F4F788E4ADE8984BD939AB33E5 +17121276461DD3125F3B56CA87900CB449B6497FA6D4F5FB859038374D5BE0AD2A34B1ACC9479D +5530AE8EF469891C174F8860837F7A22F72590CB8309079CDE324BC60787EC690F901A69FAE187 +2B6D4D4576F06F5CC37495D0C72A45AD47D2F6CD216FAE7981E4859B5845FBCFCB61829A6BC8A8 +E7A9A0F53C020767B5AABE20CFBF2504BE5BC7D32DE9B56BB1F0C48330635D3E72E4913CB1BE01 +28C6BD47FEBED891A3FAD8BBD5F916B466E974F9CB2B3129B29DF1F5FBC7B2BF2AB8B2769C12E0 +435ED3208EB20E9657200806391492BB1E5899EE594DDAD170A0A61BB6A1D0581D685C80CC2F9C +5E5AF62ADFAB656A33D22F7A572FD25DEBBFEC4B36242F8D77D18A0CBDE2FA03CB8E9394B9CD88 +D63CAB57E79081650E58E4BCD0E5A878CE4621251A287C64035BBEAA80881D504C75032F89280B +FBFC4991241167BEBA653AF5EAE9B1A3280A58B9C4C59B2FC47659FD1F42D37DB5470E46D2ACB5 +62A1D0DA3F4EC9DBEC40635018A141152BDC88F33E79C6DA6DD616BF689E052C0464B62A1E61A3 +E58CC805DEE666FE4B4F0096D6D682384A2E95FFD0B542AEF848E1B54056BAEECE36F0C62099F0 +4E0AEBC007352614E0349A18A2614FD3998C9907BBDB681C74DC3A24E5C002EB64AEFF55CB6EDB +44CA80E99DF02F8A7B1016824AD38FE7264BDAC41E848CC7B7B38B0C50FE417455BE9AE00F0F8F +79B0A5F492C89CDD1D18F6FAC750437A96608C131AAF7A9C5BC0D3110CCBC25B19C7F1E3906C27 +8935A398909D2EE97723CE0207E9CB29807CB9F8ADFA813900D190DD0CC8E3CA457E8CD392441B +B800B2B30D034ED66518D487F4F3C33DE3FAC0F88D9A6A597379C2500A6954EF80302912AC116A +74A520C2E40AAC299B78F63879F31E2A8429B13DAF83428B12DB5AEEE33E1150A0FF4174DCCBF3 +9610D0BB68DDEE4AC044123B208F3D37A5CA6A646DBB821975DA03DEDBC42714949104033A4C31 +0FE6BF0B70F922EFF8C51CA42B1CE7FC496B43E2DDB4B20AE6373972105DFA5843E9A64F63342E +36B154E1575BA26998878A96CBC9A34B2E07188D6E1E8E69FA557DB604BCFFAE3675E237D97F5D +EF4C8D2257AD409B239F1D9519F9B718C27B998D69EC2B5321F97AFEDD8F7466E64F45A0843594 +7B35221BDF77146E4E33F08935C37F0FFD44D506D8382536365FB3972C455A6EAF0761A03A85EC +EC2E8D0FD1FBF0BD829F18874C7C25D8F0ED087F9859136919DD52AC3AE08A7D848E5EB11CEB54 +2BF71B537DFA59D6E081574AF536813DF6D9B8B31B83BFD52DDEC2D7D833621EE2608619F0A61F +CAFF7EC32F2B0727B24937644F40DE81F6D86FC17A3417392B04448A5EC54C0B0BB1B60F38767A +508ECB5B30113246F3A3066310BE7A115CD9D35EF4133A4110B10D62EF3077CBBC8A3C64E5566C +19BBA49AD10E1D5D11BD5A31DC8ED59EE62CC19143533502D580237950FE90B7ED3803F662A522 +A3DF2BD026CEAE7D614EB0EB2D29681934DCF9AB2E6124A18FEFA62F2F478B87E2764C59C2EFF8 +946D326860363543F0392CB582F6AB173AF2FF031E77C939597381F724D242E49D323CF0BD1023 +74B67D028C331B64DB4642946C72E82092A4890A5491130E312ED47DCB238161CFCF412BF7738E +81B3AABB3CA492B716F92BC684615519BB513526C06FD5BAB6F196807D675DA47A7AD0216B7BB1 +35C9EFBA46313A9A7D3E40A5B7E6436114846D1032A163305534DDD10DFBBABB912B1E18882A47 +5154FD2A0FB33F1E4AA97827FAAD01CD51F62E492AFCF3B870B5B90AF7CE345F99D07F134A790D +312A7FF00B01DF37741A5E2B98DC2CCEE6BAB34978374CF1CE2F83F03ABA437790E0BA33A0124C +2C8F4A13F3F0D00383141A952242B2129A0B96A45B1CC13255B3118991293700BDDB4E29BC913D +0A3B44D9E5F7FCE6D153EF4FF3824FA229F841EF6DE46E113C9B602A298868AFDD1825CEB017DD +D59F67ABD724D8ECC9261BF90C413BB4818D060CE5FE0B0EA9CBB65850E5FA181E9713FDA06800 +FFE7C53D9EB62B222ABD8E12EB6E149CCA7713C5639ED530A30DD12D69E271782458E53CC14DB7 +5B053E7D61DE9E231A78C2391DC18EE092A5F76CD61AE5B7894B78CD378E0FBF8056701D4990DE +1EF0F36E918D98CD907F624E654836F18A579C7BFB23DE3AA9D59229C3FB1A4B857D9EFBD289AD +0FFC27B6EB42148E7AF8A802C99B14ACE59B52A111DBEC97EC5BFB0F970C9B27AD6231D66F1744 +74207E935CD40B5D3787D85B46D4C33AFF9DD5029A0172118C624DA5307F9FA33C256FDA460479 +205650A52F5591A14027695126E5AE946A7BAF34835CAC37560EA030B3DD2B06A6DFFA0D02F634 +E344CDB5260D84FC6338DAD799DAF44C46E4C4DA1854160E76FBCC0916A3EBDE474E358E9E8B32 +8F1223DF95A0F1F8CCF619FBA607F0276C5373C293BC4C4D653893B83F3583D9BA549F8D229DB9 +44D7B4B835F97197608BEB526AFD58416980C3C8ACA1080C09797DA0A24B185C793636A15FB82C +E003906B613CA3D16DF1D7C51033480123FCED0205AE45BE3DBD332DB88D0BDCBB4DB845AC13A4 +215B94ECFFA4D4E88B4BC5093770D5DB8FD7B87E8E4FA0E58F651270701EE92A3B287644F56B40 +97237BAD7453C25D29B293ACDD4A295284480A3E19DD134E77498E16512ECB44D77EB24D6C35EC +4586D9B73B2F60FA1F758FA86378485C37D595ECE1B0FD80D64CEE30B7F5A51A724E72E18A9B22 +AECA8129067304660294A309E9797F8BBE2402581F43D8636648EE6675C4D30A8B50DFE587FC41 +E5C04B4430C58AD44F57C8F6AAFD4750AEAE51BD4715838D8BFE522C6F17ACAE809C3C39F50D72 +CBADA2547CD9D0DE80980C53D9ED68E73214037B8A8E365BB3DDF7350A2D1B9AF3ED802436D1EC +75C60C3617995E3AB7B8469915D80285E99BEAB6BB88A9B5A388D7D7CB950E7DBC168885FC5173 +4FAD3CABD91109104F52525316943C6E16ACD17CAE128D81C0D98357B0B806ACB460A5E7F5F7B2 +385060402CAE0CDAF70188977249C809CD4C6B133ED8447B926E1A30D4FCD0968FD3FD45B50F6E +BA94E72E87D4BC7ADA4DCC3D6DA0F31517EA9DD89F6751F707980CA84CF406F7A786AD8E4377D7 +5506A96F7293999800C1A59CD813F18398A4094D7426E250BD21F87DC58C094BC00A567541BDE3 +D17E1BB01C4AAD986D1E79CC4B29234A28A6A323C0FB98B530012E523AFDA4915851952149B238 +CCA18B8F974BAF6CCB738D05B6BB1FCB0825FC1920C4E3AE8A1DB3B7C02991A543AFC9D38DDC1A +563793DEC85BF313F6CC40A1C8BBC09580E54EA3CF1E399F8EDB969290A3203D86D67327E567F8 +ED390542AABB07A0DA177C3C6B44F5BFBEFB181DBCD1753C6712A6D7835A64B36922173FEEAE67 +735FB82A09CBF309246D104DF7B14AD6A6A87DF431004EE72FE7887929F4DB593B0A113F176409 +E69892A4EC6CF250F984F2CC2904C788FC7FB9B164B7C3AAF3B9BF5EB17108C52EED49E5E43D16 +F94ABBF85F784008958557FF8DA38DC55BB43D6F8671BD2764A9F276C2A039FE5179D23455BD55 +539DEA38921C66C7E19EE407CFA868E9CEC0694D756EBD5B9EBDFE6D18D5E9E33433C886B24CA0 +B0F131746FA8FFD23D427828A4998D0776549AB2B4F5B610F07AED694655A7152740A275DE60AC +BD7811F31203F32D071761E74D0B34BBD8158DC1282ED895F803B7FD689D429C9A2C32B30E098A +A790D6247386B89F03310DE4665C3AE77665D885E456B655846956CA33E3A702F79A9695CE7510 +329536FB24143DB109D0E858CB20B3056078F0C151419BF06BBB871F925ECC7B4131E54A935645 +D4E00EF0EA720ED493E6731508EFF11B81D9A4DDDBBAC935DFDD1B798BA0E34B0D5695233933E7 +8C0C9C1DAB44C7BEE45543C3C310C452FCE97964D2B635C5433318FA367D20DDB9DC8CDCEFE0B1 +1DDBBA2D7A7010375EE581C7FFE97F89BB91E3FF1624F0EF5FE27CF9A027BC8D1939F91D88A873 +5861127EB0CFD88300D3B821DDE0B54B62762466790A949B2DB6372C75732E87F54CE4F05325D2 +0643A2F8388DE10E1C4CBFDA85A70F7551CC8A8F088FD46483446E0BE03BDE1B5F2B23D9B99EEF +D4641BD0EE2AE3310B0CC0AE418D0C6797840CC5BFC4F54F0D6AF8DC1AAF3DF297D3955ABAC771 +214ED10BC9E88A4CEFBE6E07EDF9F7A2F52C144086C13071F24CE826D468098707090EBC28BBCE +12E0AED14488B547A70EB783D97C98CEBF55858B924F0DB6754B3CF833EBB5EC487046A6C3BAE3 +AF59F61B699782A6109E0D7544846F4383C849A917ED1750A8F5813F552C231A3E5954F57C8EF4 +D02BC790A6DC865F77B78D920D274C2276F9DE3887540C460B1A6029419B9EE6B88FE29204CD4F +62321824A8B72FEF463400CA6A83C2CF8E161C76058CEBB021216ED92B4D889A9CEAE5619E0CE7 +DE0B6927577AF0DC385FDD45EB6F116778E91BC1EBB2B6027FC5D39F8A233D27BF581DB38D31F4 +20AF47E77AFC2D67A7FE90A10F0D6AF0816BEB7CE905FF00E5C2DA7CEC75EFC3A170495999AFCB +7A9781375C03C495FC9CDD90F9783CFF0926D795F155CE64AF0817726FCBE7BFF6566FA1A1DED6 +D4D6C2395E7DC3DDE9484A2FFFE1C67EDD9D8741E17D526079ADA966C5F17105235C7A5E09B82D +1752B97568029925A6E25DD461063227613F02B66AC5DDE9B4018E253263CFB3EEB717BCE0F8FD +36B0EDF5D82D2DB2DF28F72B13D148F741379D7C31443DD9C452B3F5A8889C93F15957064DA4C8 +BD8D3032D94A3133695934D299CA4303797B6A49932A1B672A72DDE67106E2BE984CE7E6BAAD36 +396AE3EBAFBC268105DCC191E2773ACCBD92A3D32EAF57721C0EF3E34744AE1ADFD9C56669A08C +C7E95C1908D43B569D82CFD4CBD7A41D841D10C107E00CE93F033C7449B78660FBF82D157601F6 +A9C721C3FC1264A86363B5A151F63C8B646E2D7E5D44C3DD46CBAE571FF53A9F4064540768148C +B69B9752D1E99EACDE8BD201373708BF20C689BDE479A0D11DEDA4243E6D0ECD265294C079C7BF +427F12C737CE72238894FAF3571DC588143F2C86EABF4512C63672D5211514D72120ED97AE70E2 +FE4291903259BA3521EF94C9D13C5A614AAC9BF14514761F5D3678F4F96DD8B0A20AC00EBB9A43 +235A571280B34341E5761EEA38808C7485C6B9D15B72BA4A0281A517FD2E5E660EF9EB5BEEBD43 +2D537F8E3E2FD2BC8D221CB3C6E578B1627EF869CAE922CC154B38D2239A7FBC8D85727C1D533D +C71E873CF062F0DB2AD29763A482B6A601EFCC9BF9214E9B270BD9633BAD41C2308A02B94E860E +9B74808796488497C3658F3F33CC29EB099CE42B134AB7A5E168013C64F056375DC95FFFCE9AAA +7813C498FF43DDA22D5186F6E7B3AAEA39A72A5C0EEB95A0CB79539FF14FD409F7D357FB06629C +D99C5F277996778C7FD19E776CDC015FB37A29AABFF21ACF0BB36A0F8F7D6758F4AFA31FE61F95 +10905BE91866BCF1B92CC5638BF90CEDE72FB7F46FB1892F4F4E965DE76D6162C515195A39FBF5 +1A7299F01D20021720B8046FF10A5D5185B217BE8B62874281AF2007EAEA8C41911DB195B8C3E1 +BF0E466CE3F398A111A03958BAF0707BBF153C1E4F966E4645795126C6912828923BB3952C5099 +C0FF6855AFAB944B776511C96B77A9E0459FC52749F0AD982077A227792126507426736F2965AC +BEDCD7938A0E27351E5CBBEC3E331BC2568679E1823DBDCFDE6E46E999604924084D583696F05E +D161CF7CAE7A56A31A7EB0BDF8F5883A5825597227619EE45655F15CADDD3100604877F7221866 +A27520BA9F4C72A5B7A1B45549C599BECDA8D24BF7504ED6032981AD5EB25E7DCEF6B0E7295F01 +0C881F0B0B28C39CBF0708B8F96AFF3A0193AED2DFD8AC7E6F4D85F2EE21971A670C010857737D +4D3C1CC4D1EA8FEEA7756D34FA95B2BE2A27E5864A4183F75861F2EA00D050F04D6C48113EDD40 +75A78C5C64E41B437AB8FD6E12C5A25ECA76816702CEEC2B3FE8DE398A130CC49330BDEFB0D76D +047E035448A59484D48D18EFC534328A8556858D4B45CC05377B8140598AFA383939E4A7F73561 +68C7B016D012C37B405D4523A1DB884F005A2572A039847C7C065B8B92DDC9BC1E803692A39CC0 +0A49CDF0AD24168154D03BFD56E1EADFE29E556B52FD11CF838378E4E4FEAD5243456648DBED06 +2A47FA57542E137A9E035569D068F08E43DC4031D85925DEC164FF91F8C207692E8DADBAED305D +D38FB4952C61F50F9E4E4CBDE408A16801732F3EFD6F2D600CFAD6F691BD36279AD251D991F24D +18DA3168749E8469A9A39F2106B98701956F265C3DA4081278A3366118DAC644DD5B4B5DBCF7B6 +EF6AB84D9C41350B18320C0FFEE0B5C26AEAE1A6028093337FDB82EC40105175175CC19A7884A0 +B07DC34C349177DD4BCDC16323E36197073F1D6447BAA0A45F0DE7453E6891AF0FE2D21C26D9BE +37454F2F83F6E974DFBB014511275360A9FDBF6CB77510C92A45C0C1FF6A004F854FDD323CA4EA +45EF334B4BD189F1131FFA7B4C7FBE315DD788FF2D89DC3804ACC9D689816A22E39BA45AA98AAD +6971FFD22B5CF38794385EA00AE18FEA562E0AD2688CF6176E1FF4CF8910ABE1C4E98F59750C26 +9858AD2B32E717C29D97878953F729AE13B3403F997593542639DEEACE7BB88D45B6C4FCDBBAFA +3B18BC0F085B25A87B16BBD084EE088FDBF6D62F4E65052E374F2DC012DF690E23C6A00A5E8760 +B2B2A213FA8D0B31E08070741FD2D8752274CD71B1CF566890113EA34518457B1778DC1CA38345 +78502A62CF4CF563252B3ECF554D477283CBE6AA7A434A279AB71B2CF20765F5B197592C681FE4 +6ABC6115B49D776B1CD457A3335FB3B61B4258EB77327688686072B7906B2D8016C5FB12A626D7 +E8B2590CDF574F3A410D75FDECE4BE7DDBAD69EDA08F44B73D6F7C92B97C67201FA2AD698D058C +EB7AE6C88B699207669D68FAEBAC5E75905B9688707B199F516E944056C2CBE773CC95BCE59D82 +AA93DF52227D477CC2345EA8F1A2CB96A00D186F3A02C30FC0330EDACC404ABCCE86F0462784B9 +7C1F55A03C4ED89C79C0BD3A0AF3B19259963CE966F654D7D4EF9B9093B27526E5C09A084F3C9F +DDF3C8F261A5720DFEE14B6B198D8F0CEA0CCCC7B70CE185F0B65B0B4E5CE79898A8E3DBEBF65E +A2A7F82EFD92AA7EB65AABAC5A3CEE49070E78D5C591409756EB4A706DE5192D13083C4A10BBCE +3A818990406945A4036CAB65E3F53A54E6992866E130F01DBADC1F15751256DFCB408DCC671CA0 +731A01A6457CB40B4A04BBB0BF77C8B655ABD484705AD31CBB88CDDC3C599B35B86D3C4BB8B8E6 +7751A095E43C9B9228C58A920E48D679DEAA88DEEC58F7B5573DE4D7C7288BA9F0A5899D1E6588 +557ECAA123CF7D504406BB03F580FE02A2E88FA32F9A824B5A895CE8EB1BC271FF2702FA463454 +717D37672DF5C7F78561F889EB0E57984A96E1430B26E27BAEFFA17AAB5FB94A890AF8FB57AEF2 +4FE880121E0B31708F1AE9B09DBE64B26A5EBFBE42A4BBC0C3ADEC0A14CF7496AA53263D4889B0 +929645EC2B8C5144A4D76FDEDE6345B1407F990C5D7644B21C0D827AEA7D4E8D4D17311099A703 +689B2F68A9EFE15696C589BC02FAC8F5CD6FF68964EB222EE012E28A490614BA93405E4F2798EA +0E8A8B5EED8D7C554737ECD26CCFF16F50C8AF2373E8688DCC297269C2836E4FED50EABA465EF6 +908DF9F55DA80A501E0165DBEE8E3F9FCE4F6B9C31AD5505E71AD3D7FFE6EAA9D764B965FC163A +B0ABF7DFEE391546EB78C79466886C7393D4036FA247E9C4DEC84FE72D4B5AFC6D7FE58714C70A +AC3799C4B419D3701267915677FBD571073B70D68F141651A59ABF8B6483E216F90117879A34CA +43BFA857B831DFE321C2FAFB887131B607D2B9AE7F0290705C254716161DB40AA383006A8B74A5 +767DEDEF5D60711B5A9E45D63A6EBDB15740AA04BAAE078FAD7FDCB9D26AE3DBB66ECBD9D7E641 +D064B881BF5190FB31EECBF3659036FC145D8BF0DFB325A78F0B3723ED8DD2A967BF916A90A92C +32292F3330D3F1FA1F31CD6AF9373D12A1EDFA00EE7A4859BB6F6D4D6F6F7F944ACDE744E3D6DD +CD646F83539F983B1C70BD94E1FF6CD3E072F06DF4193676388C95A3E4E3D07ECD40FB6928AC52 +CBCCF63B71B47DF4567E19E0840D6452494EC3883F6144E5791853B0EBF93D6DDDF15B3C8AA14D +8A20E191DE9ABEB1ADF7B19B3B688961F0B86E215451E4DD52BA655B00D1495BF08660AA5CE7F7 +134698F4C73B97103D1074220946455466FDC08FFC63A1C97D60E0B931E94A6A559BAF54574696 +D5F5460FB18B3213144F42F1AA8D5FEC8361A6E401A82454C897403E82DEED2B65E6E50CC603DC +34BEF5E2EF0F2FC24421E5DF012640D1C6E5C87F2CC8A3997362E27463CE29C903A5B32863321C +55B8540DC3DDAB6892FF114F3EF72647A3525119AED1A65DBC779358C5AF9F3AEDB5AE85085CF8 +9F55C71EE44D229C122DE658C83290BD82FC39F044163EB56F841A9E568D50493B535837415A12 +7D618BE80156E1AF95AC39BE234ACA11CFE3744A8AF714724C04359EC8729BBEA07EB8908FC41D +4E5D045D2261A9E20C66A161F98584A2FD1AA56473A0287082ABF956B6F34C0AC3D6139C00020C +A13C7CDC60F1F1778CAB99930BF104139967B728C75120BB7FC3625513C7F992CAE757EEAC275B +7172522F0E178F4EB6F862080D0494FCC5F159DA45FEDD5C7A19064BF1EC59531E973A9846C5A2 +F8BD12B34B0152021D6C41F7226BE7DD8876AEFE003A4DD181EC983284F8855F9535318246A668 +196BACDC3A71CCBB1BDA4547168F0624CB896CF96E7629EC8D1BD11530E5E8D5568D77D9DCAC00 +ADB7021BD4BF6FC3E1F178C51E67781337D7D3AC1A09ECA650B8278FF569501CBB021B2C8C9ED1 +C9A23380D3CA67ED0E27A41929FD835DB776103C8CBE4498470C2ADA09AAD19EA5D781C3D5132E +8C343AFC91E36ABD78327AF6A4F589F146E702BBF6A6C3EA6F720B5052FA18E4BCCDD1A7B8C7A0 +E654A9883396E6442EDCF3ECB05C55B0895C130ECD3B9544A3FAEB5ADA3F5CE8C5FF342D2DA291 +2E9FA59276DB5418BC5B065FCE1ABD42FF3238894BF00C86C52030258449D995943259F600B1BB +8F63809E2D84425DB00AF60E9E8AE791E5ACB6D3E5C7FC9023144DF022F86FFFB37D30899ED2D9 +FA1A5CA5E442170A2BF817985767EEA87C4F57B8E19681F607EBAA22860C8C549738FE95D85F4D +2027CF0F99F31985FC568EAF856FFFC056B118EAAF09E8982C0DFE550FDD8652F3D94CA70DE411 +00C17F820E4A7A2217619B20FC0303AF62BFF042764382147169272BE9769043C3D41F9A246A01 +C4C63FC7DC2FD62306EE813196D620F584B007BCA0286A39E296B210F64F684CFB2F9CCCA5B74E +950D35A1F18B19A26940674DF66392255091A6A6ECE640DD8142F5CBEF4A7810FD8175C9833539 +A34A911E0BDF64DBFFC534EE22CA6229D62B7A95DCACC46D3989BCC85749B248523AD44ABFE05B +E796126E6745E1DD1653FB938612FCF0C877566CA9F686823F4D069234EC7E3826D0080C32615A +88423A09651A9F3EE6A9DCC95646FB0E7E24C7C3372C6D6CDF1375CB4EB1440FE95C5C7FE435B7 +290E78ABCC143A9C015B410A8555271833A466D49AC0611340731580BD29F73A2DCDBCBAA6E07B +643DCF9B18613A6652B655A2167CBB1CCB0FA71534BB0759873FF5B4CDEE677AFA1059E1F4519E +EFC1BEF079A9C04D13842F516B096D3D281533502C4023E13C25C59C662340A45B6874B5C9F08A +08BE03B7C35FE00ED31BBFC5119463F2FB1165D22F117A04F27FCB5F0949BFAD0E882703755454 +B629821B7EB4B048FBBC21E1390620EDFDE83B894FFB434632EB7B4B21647D4C9660E7213902E3 +E2B6AF6181D797F2551513F3529E6C7679712CBF72F2437CD4685E117AD8C2D61A28132170427D +398392C7A27EBA6C244C6BD7700969004D52395FFCE11000B07A7093714F781E353BBC152F2EA5 +B275818DA2E9FD5C04F63B23EF722257EAB81FB2AB97C5B8BF455B2AFE648C895A6D38BE154683 +831704144F5D8FD68BBC0A96165E27F262804140E34A7C7361CDCDD5F14BA4A45EB7BDFFFF91BD +7429BFC9775BAD532BD4DAB6F7FFE85CBD60FA6D0B138CE116058504803D0F449ACA8C380A7829 +A0ED3623A5EE64BB34A345A8720C7B57B1A7C18560A5E56A5DC8C553B58A73762FB04036217CD6 +081F8227F61556BE59FF02C0DEA3639D44A6C3C97F921CA96752FB9B9D28597873AE2AE2C38D46 +A2AF40DBC3DB23A297503A5579998B0DB6B93D1AA1ED3BF5BCC480D0CD9688135FDD40A3E487B9 +A4005AAED374C2E9E036BAAB288AC862726F3FAB60D38B5BB135799A3BE5F4470903445D3A66C8 +24256158426369C70439148F4701DDC2F6F6F77559DE968F0305C42B43E665F7E8DCC6D72F055F +038616F9C030A9AF1A06E6036E72640D11962CD4A622A9DCD07C8EBAF060BEB846F25C1ED28835 +C28059C5C1FD4987CDBAC09780B5AC782964DBBEC7F776B5DB51B44E3817BFF658D2DC37C4291F +E1778D7B964E22AFC5EDDBB03538567378B7F62E806422EAD35C9F6F82046E7E79BFD6FAF3E7E0 +A52C63DD5E8C0A838B3969022987DCB7377E15BAC7B1525EA24C666E0C69508881C204BB515233 +C9B6FFB3F0B4EE37D12EDE6E192B1A17A7F6699FD6C1E87F03C2D8AC0B9DEC767234A2E7C32016 +D3AD9A8015F489BEDA95EC6400EA9DB2CB8626FA253A718FF13FF0E013A172E06C3E5591C15715 +C60C30795CAAAB098B52CE441EB71F2063ABBE3DD3558B7F07DB17F49C24A7861589ECD8E825EC +797ABE3521B5924F53045230CF94C34F5BD6F197E008F3BC38401B3AA6BAA7EFF54F1F926677CC +FC0E77D5EA05B218213737DB84C21AA724E05F37896667FA8EF4E3899727DDD936BE2F8E64ADBA +CA74032C2FF23805D1E6029E7B305F0CD7259865D7271444A5886B5C76CE0DF62429164E844F2E +95880B6BECDBB0BD005229964442A20AE582DF5F3735885E217E4C399535B965047A892BE0985F +6C1EA35B95457414038746316BC93CF4C776AA50650E617A6F0DCC586D3F4CBC19F6043DD04915 +F0CE9EA31EFF2F8D36268A044EF15BCA63FC5AE91D7DB0879FE5AA9A3D51BDA3160658ECEFC447 +CD2C9A848D1DB4BB48D277EC154B52297EBD188B2B7ABA0E4B840831E1B9B647AF654E1BB08D0A +64446A3BB49FB7F19E8FD8E9084C8B8C93924EFDFD9A9458A4F3B4F1D948B123681DEE542CA97D +6A5857A3E47622A6C6B2EC09768705223894BD7867242D819277C5DB24DCCE8DA6062199482923 +4F17F56BB1A0C2A2E099BEAA6D94942AF9706FA6A1D0C67560BD1E3861F8FFD465CE6C48AEC2C1 +F762BFD3D4A68B8B25D0FFAE02376B34DC1BAD9B39DAD6FAB6491002A1E6796BE978DC1DC62EA3 +9D708671DC9CFE4F757CCCE4DD7F1B0ED59EBF5EF3DCE61C4AA16DD6411B68E8A9CE4FF6AD85E6 +F98CE16CE25A8405801669678204CDB7305BD7A29469C539BE2348B8AC412DC95EACA3012D3D96 +A3BA334FF4E16EDB9115B83AFD66192142423BDA32D8A76277A763C373217BE75370C5813FD53D +E7DCE0807C087DDE87E029F0211CA9F1B1A67E72D7922388A6C84B3C6E3D44B192B0B7588A7DED +100C04F87780F070DDFEF41C90EFC0E0BB8F3692F7D360BA180E1D4579FC1AC671454E413A8613 +F40F9CDA8AEFEC06CE40F1DF6FAEBFAEB57AAF73898F869C6BD165B9A3A60C5942A48292B5805E +01897F3DC17253668A774D13E23C5D5D90BB6B8F60E89875B353A8FE0D03ECEC140EBB2B3BE613 +907F32DE8F445CFDC60272E5EBC753BC2ED4CBEC34588879870277190FCFBEAAA6D81759C2CE36 +6CE0EED2B8915F93BD1ABBA0613DD9E2EE93633EF81F4B36C29F4A24847104ACEC56CA46416884 +462AE9C21D1A21D20125B71DC52D38989FBAF0A0A6EC1068E7C963B2B6894326A5E70AE420214F +EDAB638988110066D741B301760451CEA275988C2270532D4A78712F28922011D564F12928B4BB +9484657DC0F2378F07A139C75843624CE599A261AFC6192D58F89F36556AFE32531138FA46B505 +54898E65B82883BE97CC02B92B7C7D1979F799720345EE930BE3CBC3BA01CDC2311147AA768202 +A59BD84F601A5FBF6F882DA51E7644D7B734D89555FFDECED4BD2B14DB3D3C57E0403680796446 +3DC5C9D6427B591A00A82E2EE4DB81D533D52857A250E579F9C9D45109F06862E64564B5E18615 +4B6AFF5AA065792AAD0D38340C26A0B7C7E4DC7F054A850C0BA6EC8F66535E5CE1758160CF83B3 +CD1D0F7EFDA4B0D11E679C74386C2234505F7FB083578BE4D43C4922330EEFE114DAF7C58C0AB8 +7E4F6C6511A1B311FB9FC645FD7199015B5491584D2E135C573206A96EC49B6F0BD7428755A69C +9D1DAE3978F70CF6F2B518C74B81908258509FC96282AAB0DEE885CD5D66B5A91BBBF74B08142A +827DA25A4F0FBC4E1BDB4952556B04F32DB3A8CE6873DA2EE081E81DC1D3C429BD76E62986CCBE +D21F956E4F45F869E0E00FBFD1B17011439E6E0196C8A7726A96186634E51951B5DC1CC4F96850 +9AF5DB930D892EA290C70EDCC65DD905D6AF9221AF3C6EE64E01FC3A37EB358A759DDE53CDDC74 +B6937F1DA36B00174481A40AD8B6E9BA2F9BA1A15D80C560BF4A3CAB972DD12B2890C3BDEB06EB +FE05BAB7E2BCDAFC641643B67D553AD78D5CC498B43A458C06E9A428307498EB76BD7096F2DEBD +2905AB09BC0E748239D90663C26A3FAA9347C32D44BEEA2DDECCA24825DD2A154E8A82282F4122 +96D11C6E0CA8F28CCD52A3E0A9B442838BD6FE90A931C8A462A97759CC9EE21B47C44B2032E5B4 +083750CA3483E688F67FBE91EAC9199D49963060712314618A725457FB71945C535BCD330A9D8D +850EA0EB723BE0A00F2C3A8E6C80660F59A84DE34A52F00725C945521ACFFFCE8FA1CBC2CA9F9C +C98AB2987C636CFB83DB46B4B3A7F1CF4EECF6E08A3B94229B54CB34272829C4BC264E303DFA2B +170D5E7A66A7EE3C463502D5425AB0739F1DFF5FE9B751975E4379569580B641C7296DFEA54E7A +99A9478583A0D8DE565575DB2CD00B35D2BF82A5597F4134CD3F7A201C80DA9AF49EB8D9D049C2 +5869843331F140753DAAF303592715A35751B4597F458F5BD9A894D8E2173E03C85853515E3D71 +CDB51E7000279E462386A1DBAC817073DDD29CB89F211CD5FCEB9657C107041E605DDBBB7275F8 +B084FBB48A233D826F9D3079F56BEA088092B8156B4C38ECCBAE22EDF9135E5E2DE147EAF1D562 +2735F9FC9C5124149AEE31FD4B35CBBD848E81605EF9B89C0E116E4394195122D3F5D28A60CCD3 +19A85D7EF24CFEA5AA946B8EE737786DFD5A6B2C1100F3F2DCABDEBC012CBC19AD314198536720 +37233DA6D3B6AB83458179190D11FC866BD3343C9CB85381BBFE2226D612BCE91D13226F4AA348 +C48D5F05D927518E5587BF7EEAE0B2E40F6D2F5847B25832970681DCDDE5A3DAB4E305DC7CCF1D +817F07975F4575D97355347E3AA2DA7A8B230B81673ABF1052EEE2F524D5330975E811FC32AF0F +E8538EF37B67EDE2F2D521F45AEE885D379835E820C8EFFDDD7E3E381BF267E32E9E6DC40A1D36 +D0068A698B970C492B79D5AE4C645286631FF56704053F81474FD546FC9498CDE9176F7483F9F1 +7FF8654B0EAFC6352FF7070D969C8F7005389B7F465EF1B6C0A1329A2B18F577586CF4B9427D48 +886B0AC61575474C87A37340B7EFC0090F3E489505EF51BA12B1394144F3895AABC6916DFA5C6A +4E8D07D3E351853A2E0370688E5E6000F5B751AFB8821C4C25DE80A9640ECC48B99E05C94E4932 +D120A4893E85CC91CDFB5A7218C972A482914E5401ACFE7BFF59B4D8D5E5F563AEAE5E34B052A7 +2ED5ED7854C32C20C933D68992DEAAD311F6DE5C03DD24B878F536560A2F43E5FC70452A39C7B0 +AE56A0A559607EDC991BE7F571857A7F55FEDC84C679B9BE89401F504805BDDCC9CAA625B2111B +C4815AC79A78AAEA643466199721879697A341639ED003B5FA52331D3A2AE25D8F20EACCBAF791 +D62421A00937BFDDF444EB59D2F460AAFDF8BE9F82D5FD1D48F6712B908E5FA81345A567C18705 +6944C722C55A0D418ABB1BC622EEC5D416F6F52BC188DD51405215AD6B75B04DBF4BC6D85F0618 +FA111126E41351C3F7B0667F8FC08ED06342B2DB6201A1A63AB018B2FE5FD760366A9A420F56A6 +C61B835F9AB9F385A81430F867146C8B01784534CC959126389D1CAFE10E3AF40DBE594B6B9219 +8F50D9759E60519DE8AB4CC0224ED624A3AA9FC95AAFD676706448A9F05BF008095121314FD044 +A3A350ABFD1CCCD5EB18DBD2EA71C3DB2F37066021E39F4E77CB1B155D05CE1FA00C8A59FF39A3 +A16891235A599F95F9A62E6EE47839135A0750A2CB528F11EC47F0D4D3BA828501C9B76FDFE178 +21F11814DEFDE3AB561ADA314060D7112BC8BF02E92793A3D864B83AEA78F8D49DF9AB07AC0762 +229534C0288FBC00662E53035A037B1C9745195CFAB54D22032A16E7AE0B971CAC5A67FF0EDE11 +E265B88805314BC7563CF177BABB367618A27734611D7B662DA407911EF2FEC47D74C482F7DF82 +3960081466CECBF4BA94FC5AC8C9F91AC151FB1ECB78BA5D5607A1D59D34C18C83000F8507AB1F +1C44347FCA2BC27087A28F0F3B24BDD8E7A0DDCF782CBCED5DDA4565308E10062145895A9C437C +CAED86458890311EDCDE2109233BF9ABCEF0535080D7C5A76D6E3BCE8210C7E89FB95E63CD8A76 +FEA978AF5000DFE7C0E659B902503758736C6DB295B9368EE50F5F8CF3E200456B5B2087219150 +294871F7B980800E59A5DE5973AB9ED52F7DBC7C433FD0E099D3E3EEF6DF7D77E40D1C8B34C117 +588ADBBD7A29AB4805A87C13CE93A65854DFDA87321ECF7D34E72C193365B632B455F8A2916BD1 +E63441A633D144C254E3FD89FE2884840146B4C992A07BE6A0FCEEB6AE9B0234D234645D73C064 +EAFEDA1EB7A9DE6661D31226A6F54BC9510DF6F64F7200CEC5EAF90357716E7C246D47C04E0906 +98C5F6AC446DC6107E6342FE8B746C0FFA058FBBCA0730CFB20A367ED10661670C1618A4D467DC +2A7E87894DE0D5392B3F0DE6582901693C28568D2253D514A3FACD1B063B02A5F8A19C1D6DFBAE +CC79435F694E914014DEFC5553A5984993154997E63768DD7BC462BDF6D1A8B28DF568B22FF460 +087163AEEC37F0BDDBBA4C30322AD71922AC802DD491207E6A6C255F50EEB0C492EC86AFED9040 +B068671FE4A1E66AF15D3D976C7267F3EEE19462487772087ABF36700B4821D2DB5193BBEFCE82 +BF67F7034972A708E93C55E0F7A52EAEE47E68FDC6F1BC49B9370F28DAE122D13CB2CBCB55933F +A27291003E862FB0C7E20A0F979DFD8BA918322F6CD597809F9E05DD210F7996F314B65F54FD7B +F453F15CCBEB2CD5E53535261E696EB73F2698D1159076D0EAE35FFB1FB53F98808ED2325B2CC7 +9D90772C15273EE50294AC931626EC573BED7CCE2D713328962528EE0F00FADB1C1ED8B302F24A +40F9A22D1D6411EC669670ADF93C4C67D8520109FDE9F64CB0382842C88845267528F57AB7E408 +9EDE614E79799D08D3D01378AE9D42D7601D821C9C5BFB77EEFF37B634D2698BDC11CB60192B6B +4FFDEE834EDEA99CCCB760D3E7548E6810FE300596C246AE56DCC6BA8132AE3779ECD5ECFA6963 +F9B5C4B9AD8B6C480BB184FE31EF0F8DD3ADAA96AFBFA250FCBFEB529239AD2A524B3C8AA1C2C2 +7ED016E8EE24B355BA84D1D0AC6AF00B0A230578609A3F09639D2CA7175710FE9D455A58A6982B +7B7FCA52BB5490FBAA064D1C506C9598D88B5CB330C97F434BD1EF060ADC21B9F6ED9FB7A7E604 +20FA1B481881C73B1DEEDA0A7E197B8D38EEE68CD8D442D083772FE2BA1F1C07A57D5B67BD8230 +80BF438089A4D6C311D421F5F16C35B3207649CC0433AEE4987E3AB5698D55309B5F5C8B95332C +77157E3309EDB4954613428AE9DA6686799ABCE483FCFA8C060F0614995E01FD14A6189AB61A0F +7AC9465BE297F053E85AAD0EFD921502269D01FA6D5ADAD672F3D48C5D4EDEEA65E53E03A24AA9 +E78660AFF7942E7F23E3754582CB2976FB65997FF35582FF83FE9BF43CE5CA20AE5EB62CA819D9 +B63ABE39EA3A13AC163F64A55B4E840B12FEED5BF447E3CA1FD61E6FB51D6F7B3176F697491217 +306EC21CC462AEFA069C9432AFAFDE4D586D5EF8DD4E49882CD701C4F4FBDBF42E370AE7F332AB +E22DDB2FA70D17B0E053BD6332A1B51840A6C18760A46EDB9C8933039C8B724FBA4C4D62B98876 +71F94505D1242067281063F91A7DE032FCE95DA4B54C32B46B762CC927667306101A7186DA78BB +BFF306C62708B92D76D2225B1FACC18157268623387B5D80FF9E394E3DB68D5404AE3CAF3A8654 +7704EEE75E7BCBC9A96610D96E96C0CEC85785FC7D54BF035D0E03E6B1ACE9691D7DD71B607B9D +C37DC020E9B5D4216AA991C5022AC52A4637FCA79DC21DC1FCBD5BA4B28B591F69CEFD0D99E35F +C568550A5E11B32BD59BE83149B82FC840C99267AA84AF41FC56D1C4F7F6365B65DBED15163D55 +9A95630AF5005C7FEF23EE87208AAE88AB3CA22FEAF682088FB1F2F78027FDED141D161183FD67 +5E16ECE34A9664C1373C2793C35080519D0BBE2D9B98BEF67D2716B4036A25274B4370AD209164 +BEAC0BFFBCC3F6B2956AEF76143644485280FD50462B63F324A992F3A5B187321107BEC7A301C0 +4338312EA32DCABA2C13A6ADA387B668A45743B4D7C02F2BFFC69F49AFB429434EA529B04EB8B7 +4596D90FE74AE32F57CEC0433922B00236C189FFCD8A1FDD896CCC957DFA2EEABB23BD8E5A428F +FDC06F4F75C3222DC161472687547B173F632D15BACE92A07A0A71DCCE2B8EB739EFFEA173E57C +4DF651FA936221DABBDB3B8AE5C30D595C33DCFC485EF2721743A6957E26A79A97EFD24BE5AC7F +D6792166AD1F09A8590F5871E74B2215E9012BF05DC89BEF6A2FFBA06BC619A08B14D6679877A1 +10165E943223B0DDC672C591F26D6C865B78B59703C3C977FFD605CB241C35FA1FD928A4A4F11C +052EA00B2FC0CEAD4BD9041899EE135DE98A260518AC927508ADD78D7A6D8049C88B42241D25CA +5DF0550706C3671B2DB3D848C3B94CC77D7FC2D157E37B8D4780B6B7F3B04502F3167D8D5B99A4 +6B63151FA7FC1FE52BD66ACF20DB58A7A092623E63FF6F7C7D0001AB09059A5CB6D79504900589 +A349E8D19E76F6FBEA194D18CB6526691C7B66E219092FCB73A4F7807E6BFD82510687A50BFA3C +EEB4F8818B11A8B9F7B71676C5B44078996994DA808DC39D3CB6A66B476FA2ED6390B7181A591D +171DE548152A5CC5B71F5F9DCED5B648AEF57E2B3644909577EA607E49C8D0105DB7FC57FA1A2D +E0105EADBF35AA385C972F9CF07D379454FBFB1EAC4B573498C10B2E98C3FB6F1483A123237B96 +0BAA3A3CDC0E9327F0FCABF72E8AC7DB04E22CDAA0F6EE108564565AEAC4A4DA8328F30AA878DD +B35D6AB16FC49D928066ED24C583434447AFBE2E4D22848A516862207480EAF650624943925E0C +351A6407ABE0BF04E36C87BE715B11FE53B8A13AB4669B7B2238D0B295D60028D1111A5AFE23AC +E77C59415C466042B93790A8055FD8C39B262848BBCEE84DA425462871EA73BFC927DC4DAF9336 +E13B1BC99887E8C1D8721311B5396209A634F3A1F91D51EB7B28F0A827A50688ED60370F6BF3EC +A867BB995B125BAB4203DE9E26DFC0D3D8E91D3E749AA0407C6A74C86E98FDF8A314B201E1EE0C +98015360074379F70367DE7CEE75864C9789533ECEBE1323C12261A8622C5666C932177CFDCACD +2D494F1741EC983E51CE4E3A63AE6FD282DA64A32CC3B2F55549080C7A190BFDD2C2393C675DE4 +90C79A325DCC04D14E0445C218AAFA0E54A305A889DBE613D4F28FB08253892A0D673908479B87 +E9D8E13F467B7F9EBCD8E5E16D7CD3358C71CECCD08C6B8ACA8525657D37560BF2221F91258EF4 +E6B70118BD1CB1F4EB421C4C32C76437340EA398E22351CEA31D250E46F946D44D97C2B3DE06F8 +D8003381600E2E2C28AFBADC25DC94224AFAD0D7D951609BB2478C476085C01AA601F3AFFED544 +F251D5A49BD263D64F4FEFB0803F162BD5FE1082FA2949BA8987AFFA1D9A7A4EF28BFCAFFD3311 +0E1A1A2A22C76734DF6CC30E3C4662DFAFB32DF55DB12D138148435A6F7ADB4ACC4F4124EF772A +A63D5F65490E9763FFD66C6153F5B0FEF1A307D6A9753102CE51DA88E2EF7275FFFD2A7B4F81E9 +DF549938193AB7A58D5C237D669ACF27DFA35744F7622F8D54B5B54AA31D9403841D4C5D193D87 +E60622E18C2D7E333AD4CB2DB27DEE813D9902D17DD0F2D3BDC8B340DFE9C8D34B993CC2CC91BD +47B4861809902E11197967922FC625989AC6F4BA0D48166F3F4B6C6C47D3B9A932F3D47A8613F3 +6329406BF5ADEE519002394FB288D3A8AC3DCD5C37270AC7F5C5CDE46BE5C2A103FD468FEBC0F5 +180143DB4312076FB062CE88DC373B5F120C591B9C09B9E3E1B26F52A48339AE70F729BA02977A +B60666637D9FF9287DB4CC52BD5C7B2D4F038E5C927B97B54F611396E2211514A8684A02D5DB1F +DE728DB58AE1BB7253740349771118D2D33211D2ED7BBEB97BB4776666F6A2AC7B54A1E2DB79D2 +A9DE31745745CB39BDEE3E7CF425C27F86CFA89F825A09F9C7027E8DF7A773497690F328D22FF5 +A5CB2821623A570C29D03081E9DCE770F3E7F5B7377A1BC3F52B383EA0CB1C1BDC00E67AE90F72 +9DC77450407C0A9D0ECB2CE16C91CC3C7D487457800654F86BA7A8E26A25B78204CC7F58BBF69C +5C406BA012563A4379506C28A39538F9A5D57BD197443A02A9D3C67149D654FF12FC6E05612981 +7F7236BF90FA626FB91D49C48D824248EABD764EB3C20634D56BDC2E170A814567D278F7AFB96B +F6AEF216C0B42AAF85AE299752C50E6D2963FA5DB384FD110868D43DA804FDB9D0CA26BBC8CD72 +EFAC451FBAF4BB0B44C675DD4E0B4AD8D6149DAE44DC4EC36942CE1876C8602E3F97CD6E18BD0B +5BCCF7B1773619FC8AC3B3D4958F71E5D2C631C6B17EEE7ADCBA30CA0E30B538249113223FA987 +4D4B294563B9F42D9D259374F28A8D8A654F26D7BFD8667CCBC43F75B61C2F5CF8D7E06642E93D +76554642B7666B7905D6859F79DC080CB5574D03A072DB0D47AB82461DF6638C77234A3F97428F +D2FC973687786BCF1D2F65AABAF55C257914247AEA0B3AF17A867C0CF1E5A6883D68680343CC5F +3604DC8E1E7A9DAB9CFA316A14D4CF7A3A60CA56E947AE632762B2303C0EDAF9B3AA206191730D +18B522FCD29D036AA4E6540F6A0DA836638A2EACE334B232199F61B357B10F4322A1F58F249101 +CB1399E5E60483F12A6008F8FFB52709F34136D93902FE367A01419F79A4D4DEDBBAE63741526D +3D9EB7BFB4332C1775E2F0A05A4D7B203C2816F30081A67440D09D1FF94DDB3B7BB91B63703581 +A696ECEB393963FA9199AB61A3F449061E048FA2C1F91897C5A60A4D30D0C276DE88EA143BA4FC +545FFC8F0B0950A38AAD126D73DA6BBDBDB480C3AFF4D2C7657A33652D5728E1866DB82B8F1A8A +72235DAB477C38ECFCCD0CDBB77D30A0436FDDC1D70426C0C5B408A4ADD039CC2B5750B7BB5E07 +CC56039DB7FF3298151718E167CD482E88AE498B2D89C79C572FCE5ECEA3BBFE5603FD7AF6F4DF +2C06BD8EF8501B52E8CBFB5481CA45CBAE44D87D455DFB6F030FBC0938EDFF80592B68390452F2 +42584D9C529BBAA2615F9A493BDB3C4BCD99422B69FB658ADA813AE39E447151F9312A005AB210 +D9FFB508C7A036BFA34C7264CFC1B92929C7CD892CD8BE48D388545B8CE7A79F70D0F1B852625D +F331D75342E9EC57219DE4E61BFFEB066D82DC6256892E89B25BCE034F7F6FF09D7DC8ABBC8739 +3B70FDAB372D2FDFC51902A6E7FBE5DF3F41A91DAFA35D9A99A18DCD9E9D9050CA9D6FD417C9B8 +DE3C0648F8458BA2E0ABCEE10E759C97F019D1A1C8E1CC9EC8A6680C2566F42E478EB1F5706435 +16EBAF85E4F9E972BA3FA6D20B8BD1734229563A1ADA6D4D1857257EB760050F4FD997090653CA +7771430101EEE3BCA1EA8E5F230F1B54E25A50458A1F7EBC35AEC36A88E4E345EF4CD9F97978EC +E8F3C53ABD56FD3DB6C71206DEB0058509F24D0EB4C68BCFAD5A773EFD04F5472984000960F67E +261B9152A176B230EB447633653ED0CBD3F50B214773DB454E89625BE27B7B75C93330E1F782BE +EA101988B04AEF3601BA7FE868F614035647349D97F9F1AA598FD808885D91F5E24FE348015E46 +D80FCC9E62 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndResource +%!PS-Adobe-2.0 +%%Version: 0.1 +%%Pages: (atend) +%%EndComments +% +% Version 3.3.2 prologue for troff files. +% + +/#copies 1 store +/aspectratio 1 def +/formsperpage 1 def +/landscape false def +/linewidth .3 def +/magnification 1 def +/margin 0 def +/orientation 0 def +/resolution 720 def +/rotation 1 def +/xoffset 0 def +/yoffset 0 def + +/roundpage true def +/useclippath true def +/pagebbox [0 0 612 792] def + +/R /Times-Roman def +/I /Times-Italic def +/B /Times-Bold def +/BI /Times-BoldItalic def +/H /Helvetica def +/HI /Helvetica-Oblique def +/HB /Helvetica-Bold def +/HX /Helvetica-BoldOblique def +/CW /Courier def +/CO /Courier def +/CI /Courier-Oblique def +/CB /Courier-Bold def +/CX /Courier-BoldOblique def +/PA /Palatino-Roman def +/PI /Palatino-Italic def +/PB /Palatino-Bold def +/PX /Palatino-BoldItalic def +/Hr /Helvetica-Narrow def +/Hi /Helvetica-Narrow-Oblique def +/Hb /Helvetica-Narrow-Bold def +/Hx /Helvetica-Narrow-BoldOblique def +/KR /Bookman-Light def +/KI /Bookman-LightItalic def +/KB /Bookman-Demi def +/KX /Bookman-DemiItalic def +/AR /AvantGarde-Book def +/AI /AvantGarde-BookOblique def +/AB /AvantGarde-Demi def +/AX /AvantGarde-DemiOblique def +/NR /NewCenturySchlbk-Roman def +/NI /NewCenturySchlbk-Italic def +/NB /NewCenturySchlbk-Bold def +/NX /NewCenturySchlbk-BoldItalic def +/ZD /ZapfDingbats def +/ZI /ZapfChancery-MediumItalic def +/S /S def +/S1 /S1 def +/GR /Symbol def + +/inch {72 mul} bind def +/min {2 copy gt {exch} if pop} bind def + +/setup { + counttomark 2 idiv {def} repeat pop + + landscape {/orientation 90 orientation add def} if + /scaling 72 resolution div def + linewidth setlinewidth + 1 setlinecap + + pagedimensions + xcenter ycenter translate + orientation rotation mul rotate + width 2 div neg height 2 div translate + xoffset inch yoffset inch neg translate + margin 2 div dup neg translate + magnification dup aspectratio mul scale + scaling scaling scale + + addmetrics + 0 0 moveto +} def + +/pagedimensions { + useclippath userdict /gotpagebbox known not and { + /pagebbox [clippath pathbbox newpath] def + roundpage currentdict /roundpagebbox known and {roundpagebbox} if + } if + pagebbox aload pop + 4 -1 roll exch 4 1 roll 4 copy + landscape {4 2 roll} if + sub /width exch def + sub /height exch def + add 2 div /xcenter exch def + add 2 div /ycenter exch def + userdict /gotpagebbox true put +} def + +/addmetrics { + /Symbol /S null Sdefs cf + /Times-Roman /S1 StandardEncoding dup length array copy S1defs cf +} def + +/pagesetup { + /page exch def + currentdict /pagedict known currentdict page known and { + page load pagedict exch get cvx exec + } if +} def + +/decodingdefs [ + {counttomark 2 idiv {y moveto show} repeat} + {neg /y exch def counttomark 2 idiv {y moveto show} repeat} + {neg moveto {2 index stringwidth pop sub exch div 0 32 4 -1 roll widthshow} repeat} + {neg moveto {spacewidth sub 0.0 32 4 -1 roll widthshow} repeat} + {counttomark 2 idiv {y moveto show} repeat} + {neg setfunnytext} +] def + +/setdecoding {/t decodingdefs 3 -1 roll get bind def} bind def + +/w {neg moveto show} bind def +/m {neg dup /y exch def moveto} bind def +/done {/lastpage where {pop lastpage} if} def + +/f { + dup /font exch def findfont exch + dup /ptsize exch def scaling div dup /size exch def scalefont setfont + linewidth ptsize mul scaling 10 mul div setlinewidth + /spacewidth ( ) stringwidth pop def +} bind def + +/changefont { + /fontheight exch def + /fontslant exch def + currentfont [ + 1 0 + fontheight ptsize div fontslant sin mul fontslant cos div + fontheight ptsize div + 0 0 + ] makefont setfont +} bind def + +/sf {f} bind def + +/cf { + dup length 2 idiv + /entries exch def + /chtab exch def + /newencoding exch def + /newfont exch def + + findfont dup length 1 add dict + /newdict exch def + {1 index /FID ne {newdict 3 1 roll put}{pop pop} ifelse} forall + + newencoding type /arraytype eq {newdict /Encoding newencoding put} if + + newdict /Metrics entries dict put + newdict /Metrics get + begin + chtab aload pop + 1 1 entries {pop def} for + newfont newdict definefont pop + end +} bind def + +% +% A few arrays used to adjust reference points and character widths in some +% of the printer resident fonts. If square roots are too high try changing +% the lines describing /radical and /radicalex to, +% +% /radical [0 -75 550 0] +% /radicalex [-50 -75 500 0] +% +% Move braceleftbt a bit - default PostScript character is off a bit. +% + +/Sdefs [ + /bracketlefttp [201 500] + /bracketleftbt [201 500] + /bracketrighttp [-81 380] + /bracketrightbt [-83 380] + /braceleftbt [203 490] + /bracketrightex [220 -125 500 0] + /radical [0 0 550 0] + /radicalex [-50 0 500 0] + /parenleftex [-20 -170 0 0] + /integral [100 -50 500 0] + /infinity [10 -75 730 0] +] def + +/S1defs [ + /underscore [0 80 500 0] + /endash [7 90 650 0] +] def +% +% Tries to round clipping path dimensions, as stored in array pagebbox, so they +% match one of the known sizes in the papersizes array. Lower left coordinates +% are always set to 0. +% + +/roundpagebbox { + 7 dict begin + /papersizes [8.5 inch 11 inch 14 inch 17 inch] def + + /mappapersize { + /val exch def + /slop .5 inch def + /diff slop def + /j 0 def + 0 1 papersizes length 1 sub { + /i exch def + papersizes i get val sub abs + dup diff le {/diff exch def /j i def} {pop} ifelse + } for + diff slop lt {papersizes j get} {val} ifelse + } def + + pagebbox 0 0 put + pagebbox 1 0 put + pagebbox dup 2 get mappapersize 2 exch put + pagebbox dup 3 get mappapersize 3 exch put + end +} bind def + +%%EndProlog +%%BeginSetup +mark +% +% Encoding vector and redefinition of findfont for the ISO Latin1 standard. +% The 18 characters missing from ROM based fonts on older printers are noted +% below. +% + +/ISOLatin1Encoding [ + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /space + /exclam + /quotedbl + /numbersign + /dollar + /percent + /ampersand + /quoteright + /parenleft + /parenright + /asterisk + /plus + /comma + /minus + /period + /slash + /zero + /one + /two + /three + /four + /five + /six + /seven + /eight + /nine + /colon + /semicolon + /less + /equal + /greater + /question + /at + /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 + /bracketleft + /backslash + /bracketright + /asciicircum + /underscore + /quoteleft + /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 + /braceleft + /bar + /braceright + /asciitilde + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /.notdef + /dotlessi + /grave + /acute + /circumflex + /tilde + /macron + /breve + /dotaccent + /dieresis + /.notdef + /ring + /cedilla + /.notdef + /hungarumlaut + /ogonek + /caron + /space + /exclamdown + /cent + /sterling + /currency + /yen + /brokenbar % missing + /section + /dieresis + /copyright + /ordfeminine + /guillemotleft + /logicalnot + /hyphen + /registered + /macron + /degree % missing + /plusminus % missing + /twosuperior % missing + /threesuperior % missing + /acute + /mu % missing + /paragraph + /periodcentered + /cedilla + /onesuperior % missing + /ordmasculine + /guillemotright + /onequarter % missing + /onehalf % missing + /threequarters % missing + /questiondown + /Agrave + /Aacute + /Acircumflex + /Atilde + /Adieresis + /Aring + /AE + /Ccedilla + /Egrave + /Eacute + /Ecircumflex + /Edieresis + /Igrave + /Iacute + /Icircumflex + /Idieresis + /Eth % missing + /Ntilde + /Ograve + /Oacute + /Ocircumflex + /Otilde + /Odieresis + /multiply % missing + /Oslash + /Ugrave + /Uacute + /Ucircumflex + /Udieresis + /Yacute % missing + /Thorn % missing + /germandbls + /agrave + /aacute + /acircumflex + /atilde + /adieresis + /aring + /ae + /ccedilla + /egrave + /eacute + /ecircumflex + /edieresis + /igrave + /iacute + /icircumflex + /idieresis + /eth % missing + /ntilde + /ograve + /oacute + /ocircumflex + /otilde + /odieresis + /divide % missing + /oslash + /ugrave + /uacute + /ucircumflex + /udieresis + /yacute % missing + /thorn % missing + /ydieresis +] def + +/NewFontDirectory FontDirectory maxlength dict def + +% +% Apparently no guarantee findfont is defined in systemdict so the obvious +% +% systemdict /findfont get exec +% +% can generate an error. So far the only exception is a VT600 (version 48.0). +% + +userdict /@RealFindfont known not { + userdict begin + /@RealFindfont systemdict begin /findfont load end def + end +} if + +/findfont { + dup NewFontDirectory exch known not { + dup + %dup systemdict /findfont get exec % not always in systemdict + dup userdict /@RealFindfont get exec + dup /Encoding get StandardEncoding eq { + dup length dict begin + {1 index /FID ne {def}{pop pop} ifelse} forall + /Encoding ISOLatin1Encoding def + currentdict + end + /DummyFontName exch definefont + } if + NewFontDirectory 3 1 roll put + } if + NewFontDirectory exch get +} bind def + +%%Patch from lp +%%EndPatch from lp + +setup +%%EndSetup +%%Page: 1 1 +/saveobj save def +mark +1 pagesetup +12 /LucidaSans-Demi f +(Acid: A) 1623 1230 w +(Debugger Built From A) 2090 1230 w +(Language) 3537 1230 w +10 /LucidaSans-Italic f +(Phil Winterbottom) 2443 1470 w +(philw@plan9.bell-labs.com) 2220 1590 w +(ABSTRACT) 2626 2030 w +10 /LucidaSansUnicode00 f +(Acid) 1330 2290 w +(is) 1585 2290 w +(an) 1708 2290 w +(unusual) 1868 2290 w +(source-level) 2295 2290 w +(symbolic) 2941 2290 w +(debugger) 3414 2290 w +(for) 3923 2290 w +(Plan) 4106 2290 w +(9.) 4351 2290 w +(It) 4490 2290 w +(is) 4600 2290 w +(implemented) 1080 2410 w +(as) 1771 2410 w +(a) 1930 2410 w +(language) 2038 2410 w +(interpreter) 2534 2410 w +(with) 3106 2410 w +(specialized) 3364 2410 w +(primitives) 3956 2410 w +(that) 4489 2410 w +(provide) 1080 2530 w +(debugger) 1482 2530 w +(support.) 1984 2530 w +(Programs) 2463 2530 w +(written) 2959 2530 w +(in) 3336 2530 w +(the) 3465 2530 w +(language) 3658 2530 w +(manipulate) 4139 2530 w +(one) 1080 2650 w +(or) 1312 2650 w +(more) 1467 2650 w +(target) 1771 2650 w +(processes;) 2112 2650 w +(variables) 2678 2650 w +(in) 3162 2650 w +(the) 3306 2650 w +(language) 3514 2650 w +(represent) 4010 2650 w +(the) 4525 2650 w +(symbols,) 1080 2770 w +(state,) 1559 2770 w +(and) 1874 2770 w +(resources) 2101 2770 w +(of) 2618 2770 w +(those) 2763 2770 w +(processes.) 3078 2770 w +(This) 3639 2770 w +(structure) 3892 2770 w +(allows) 4378 2770 w +(complex) 1080 2890 w +(interaction) 1541 2890 w +(between) 2108 2890 w +(the) 2562 2890 w +(debugger) 2764 2890 w +(and) 3276 2890 w +(the) 3503 2890 w +(target) 3704 2890 w +(program) 4038 2890 w +(and) 4500 2890 w +(provides) 1080 3010 w +(a) 1560 3010 w +(convenient) 1679 3010 w +(method) 2271 3010 w +(of) 2707 3010 w +(parameterizing) 2869 3010 w +(differences) 3669 3010 w +(between) 4273 3010 w +(machine) 1080 3130 w +(architectures.) 1548 3130 w +(Although) 2301 3130 w +(some) 2805 3130 w +(effort) 3126 3130 w +(is) 3455 3130 w +(required) 3595 3130 w +(to) 4066 3130 w +(learn) 4223 3130 w +(the) 4525 3130 w +(debugging) 1080 3250 w +(language,) 1646 3250 w +(the) 2166 3250 w +(richness) 2366 3250 w +(and) 2814 3250 w +(flexibility) 3039 3250 w +(of) 3536 3250 w +(the) 3680 3250 w +(debugging) 3881 3250 w +(envi\255) 4448 3250 w +(ronment) 1080 3370 w +(encourages) 1530 3370 w +(new) 2125 3370 w +(ways) 2358 3370 w +(of) 2631 3370 w +(reasoning) 2767 3370 w +(about) 3283 3370 w +(the) 3598 3370 w +(way) 3790 3370 w +(programs) 4011 3370 w +(run) 4515 3370 w +(and the conditions under which they fail.) 1080 3490 w +10 /LucidaSans-Demi f +(1.) 720 3850 w +(Introduction) 873 3850 w +10 /LucidaSansUnicode00 f +(The) 970 4006 w +(size) 1200 4006 w +(and) 1442 4006 w +(complexity) 1671 4006 w +(of) 2252 4006 w +(programs) 2400 4006 w +(have) 2917 4006 w +(increased) 3192 4006 w +(in) 3706 4006 w +(proportion) 3847 4006 w +(to) 4416 4006 w +(processor) 4564 4006 w +(speed) 720 4126 w +(and) 1053 4126 w +(memory) 1277 4126 w +(but) 1717 4126 w +(the) 1923 4126 w +(interface) 2121 4126 w +(between) 2588 4126 w +(debugger) 3038 4126 w +(and) 3546 4126 w +(programmer) 3769 4126 w +(has) 4418 4126 w +(changed) 4629 4126 w +(little.) 720 4246 w +(Graphical) 1042 4246 w +(user) 1540 4246 w +(interfaces) 1791 4246 w +(have) 2307 4246 w +(eased) 2573 4246 w +(some) 2895 4246 w +(of) 3197 4246 w +(the) 3336 4246 w +(tedious) 3532 4246 w +(aspects) 3933 4246 w +(of) 4339 4246 w +(the) 4479 4246 w +(interac\255) 4676 4246 w +(tion.) 720 4366 w +(A) 975 4366 w +(graphical) 1078 4366 w +(interface) 1559 4366 w +(is) 2017 4366 w +(a) 2131 4366 w +(convenient) 2220 4366 w +(means) 2782 4366 w +(for) 3132 4366 w +(navigating) 3304 4366 w +(through) 3842 4366 w +(source) 4262 4366 w +(and) 4617 4366 w +(data) 4830 4366 w +(structures) 720 4486 w +(but) 1243 4486 w +(provides) 1439 4486 w +(little) 1889 4486 w +(benefit) 2140 4486 w +(for) 2514 4486 w +(process) 2687 4486 w +(control.) 3095 4486 w +(The) 3535 4486 w +(introduction) 3750 4486 w +(of) 4380 4486 w +(a) 4513 4486 w +(new) 4603 4486 w +(con\255) 4833 4486 w +(current) 720 4606 w +(language,) 1127 4606 w +(Alef) 1659 4606 w +([Win93],) 1907 4606 w +(emphasized) 2365 4606 w +(the) 3007 4606 w +(inadequacies) 3219 4606 w +(of) 3908 4606 w +(the) 4063 4606 w +(existing) 4275 4606 w +(Plan) 4719 4606 w +(9) 4977 4606 w +([Pike90]) 720 4726 w +(debugger) 1150 4726 w +10 /LucidaSans-Italic f +(db) 1655 4726 w +10 /LucidaSansUnicode00 f +(,) 1777 4726 w +(a) 1849 4726 w +(distant) 1944 4726 w +(relative) 2318 4726 w +(of) 2713 4726 w +10 /LucidaSans-Italic f +(adb) 2851 4726 w +10 /LucidaSansUnicode00 f +(,) 3034 4726 w +(and) 3106 4726 w +(made) 3326 4726 w +(it) 3633 4726 w +(clear) 3739 4726 w +(that) 4011 4726 w +(a) 4243 4726 w +(new) 4339 4726 w +(debugger) 4575 4726 w +(was required.) 720 4846 w +(Current) 970 5002 w +(debuggers) 1379 5002 w +(like) 1936 5002 w +10 /LucidaSans-Italic f +(dbx) 2149 5002 w +10 /LucidaSansUnicode00 f +(,) 2325 5002 w +10 /LucidaSans-Italic f +(sdb) 2398 5002 w +10 /LucidaSansUnicode00 f +(,) 2569 5002 w +(and) 2642 5002 w +10 /LucidaSans-Italic f +(gdb) 2863 5002 w +10 /LucidaSansUnicode00 f +(are) 3087 5002 w +(limited) 3280 5002 w +(to) 3657 5002 w +(answering) 3796 5002 w +(only) 4332 5002 w +(the) 4578 5002 w +(ques\255) 4775 5002 w +(tions) 720 5122 w +(their) 1011 5122 w +(authors) 1287 5122 w +(envisage.) 1707 5122 w +(As) 2245 5122 w +(a) 2416 5122 w +(result,) 2521 5122 w +(they) 2879 5122 w +(supply) 3136 5122 w +(a) 3506 5122 w +(plethora) 3611 5122 w +(of) 4065 5122 w +(specialized) 4213 5122 w +(com\255) 4802 5122 w +(mands,) 720 5242 w +(each) 1136 5242 w +(attempting) 1420 5242 w +(to) 2011 5242 w +(anticipate) 2169 5242 w +(a) 2703 5242 w +(specific) 2818 5242 w +(question) 3245 5242 w +(a) 3726 5242 w +(user) 3841 5242 w +(may) 4111 5242 w +(ask.) 4371 5242 w +(When) 4659 5242 w +(a) 4985 5242 w +(debugging) 720 5362 w +(situation) 1275 5362 w +(arises) 1731 5362 w +(that) 2047 5362 w +(is) 2271 5362 w +(beyond) 2384 5362 w +(the) 2774 5362 w +(scope) 2962 5362 w +(of) 3277 5362 w +(the) 3408 5362 w +(command) 3596 5362 w +(set,) 4107 5362 w +(the) 4316 5362 w +(tool) 4504 5362 w +(is) 4725 5362 w +(use\255) 4838 5362 w +(less.) 720 5482 w +(Further,) 1011 5482 w +(it) 1436 5482 w +(is) 1543 5482 w +(often) 1664 5482 w +(tedious) 1958 5482 w +(or) 2358 5482 w +(impossible) 2501 5482 w +(to) 3067 5482 w +(reproduce) 3206 5482 w +(an) 3741 5482 w +(anomalous) 3899 5482 w +(state) 4469 5482 w +(of) 4746 5482 w +(the) 4885 5482 w +(program, especially when the state is embedded in the program) 720 5602 w +10 /LucidaSansUnicode20 f +(\031) 3830 5602 w +10 /LucidaSansUnicode00 f +(s data structures.) 3862 5602 w +(Acid) 970 5758 w +(applies) 1217 5758 w +(some) 1598 5758 w +(ideas) 1894 5758 w +(found) 2183 5758 w +(in) 2503 5758 w +(CAD) 2629 5758 w +(software) 2877 5758 w +(used) 3327 5758 w +(for) 3594 5758 w +(hardware) 3769 5758 w +(test) 4255 5758 w +(and) 4472 5758 w +(simula\255) 4688 5758 w +(tion.) 720 5878 w +(It) 1008 5878 w +(is) 1109 5878 w +(based) 1224 5878 w +(on) 1547 5878 w +(the) 1705 5878 w +(notion) 1895 5878 w +(that) 2242 5878 w +(the) 2468 5878 w +(state) 2658 5878 w +(and) 2929 5878 w +(resources) 3144 5878 w +(of) 3649 5878 w +(a) 3782 5878 w +(program) 3872 5878 w +(are) 4323 5878 w +(best) 4509 5878 w +(repre\255) 4750 5878 w +(sented) 720 5998 w +(and) 1078 5998 w +(manipulated) 1291 5998 w +(by) 1928 5998 w +(a) 2076 5998 w +(language.) 2164 5998 w +(The) 2672 5998 w +(state) 2886 5998 w +(and) 3156 5998 w +(resources,) 3370 5998 w +(such) 3906 5998 w +(as) 4166 5998 w +(memory,) 4306 5998 w +(regis\255) 4768 5998 w +(ters,) 720 6118 w +(variables,) 970 6118 w +(type) 1466 6118 w +(information) 1707 6118 w +(and) 2307 6118 w +(source) 2520 6118 w +(code) 2875 6118 w +(are) 3139 6118 w +(represented) 3324 6118 w +(by) 3939 6118 w +(variables) 4087 6118 w +(in the lan\255) 4551 6118 w +(guage.) 720 6238 w +(Expressions) 1135 6238 w +(provide) 1769 6238 w +(a) 2188 6238 w +(computation) 2297 6238 w +(mechanism) 2962 6238 w +(and) 3568 6238 w +(control) 3802 6238 w +(statements) 4199 6238 w +(allow) 4789 6238 w +(repetitive) 720 6358 w +(or) 1219 6358 w +(selective) 1364 6358 w +(interpretation) 1824 6358 w +(based) 2532 6358 w +(on) 2862 6358 w +(the) 3027 6358 w +(result) 3224 6358 w +(of) 3542 6358 w +(expression) 3682 6358 w +(evaluation.) 4255 6358 w +(The) 4859 6358 w +(heart) 720 6478 w +(of) 1008 6478 w +(the) 1143 6478 w +(Acid) 1335 6478 w +(debugger) 1584 6478 w +(is) 2086 6478 w +(an) 2203 6478 w +(interpreter) 2357 6478 w +(for) 2913 6478 w +(a) 3089 6478 w +(small) 3181 6478 w +(typeless) 3475 6478 w +(language) 3907 6478 w +(whose) 4387 6478 w +(opera\255) 4731 6478 w +(tors mirror the operations of C and Alef, which in turn correspond well to the basic oper\255) 720 6598 w +(ations) 720 6718 w +(of) 1053 6718 w +(the) 1189 6718 w +(machine.) 1382 6718 w +(The) 1860 6718 w +(interpreter) 2079 6718 w +(itself) 2636 6718 w +(knows) 2913 6718 w +(nothing) 3260 6718 w +(of) 3673 6718 w +(the) 3809 6718 w +(underlying) 4002 6718 w +(hardware;) 4558 6718 w +(it) 720 6838 w +(deals) 826 6838 w +(with) 1120 6838 w +(the) 1365 6838 w +(program) 1560 6838 w +(state) 2016 6838 w +(and) 2292 6838 w +(resources) 2511 6838 w +(in) 3020 6838 w +(the) 3150 6838 w +(abstract.) 3344 6838 w +(Fundamental) 3837 6838 w +(routines) 4504 6838 w +(to) 4942 6838 w +(control) 720 6958 w +(processes,) 1113 6958 w +(read) 1677 6958 w +(files,) 1943 6958 w +(and) 2228 6958 w +(interface) 2459 6958 w +(to) 2934 6958 w +(the) 3083 6958 w +(system) 3289 6958 w +(are) 3680 6958 w +(implemented) 3883 6958 w +(as) 4571 6958 w +(builtin) 4729 6958 w +8 /S1 f +(__________________) 720 7058 w +8 /LucidaSansUnicode00 f +(Originally) 720 7158 w +(appeared) 1119 7158 w +(in) 1506 7158 w +8 /LucidaSans-Italic f +(Proc.) 1605 7158 w +(of) 1827 7158 w +(the) 1929 7158 w +(Winter) 2077 7158 w +(1994) 2357 7158 w +(USENIX) 2583 7158 w +(Conf.,) 2884 7158 w +8 /LucidaSansUnicode00 f +(pp.) 3142 7158 w +(211-222,) 3294 7158 w +(San) 3692 7158 w +(Francisco,) 3855 7158 w +(CA) 4272 7158 w +cleartomark +showpage +saveobj restore +%%EndPage: 1 1 +%%Page: 2 2 +/saveobj save def +mark +2 pagesetup +10 /LucidaSansUnicode00 f +(\255 2 \255) 2783 480 w +(functions) 720 840 w +(available) 1227 840 w +(to) 1705 840 w +(the) 1858 840 w +(interpreter.) 2068 840 w +(The) 2706 840 w +(actual) 2942 840 w +(debugger) 3286 840 w +(functionality) 3806 840 w +(is) 4464 840 w +(coded) 4599 840 w +(in) 4949 840 w +(Acid; commands are implemented as Acid functions.) 720 960 w +(This) 970 1116 w +(language-based) 1235 1116 w +(approach) 2084 1116 w +(has) 2595 1116 w +(several) 2823 1116 w +(advantages.) 3223 1116 w +(Most) 3895 1116 w +(importantly,) 4190 1116 w +(pro\255) 4842 1116 w +(grams) 720 1236 w +(written) 1072 1236 w +(in) 1460 1236 w +(Acid,) 1600 1236 w +(including) 1893 1236 w +(most) 2391 1236 w +(of) 2682 1236 w +(the) 2829 1236 w +(debugger) 3033 1236 w +(itself,) 3547 1236 w +(are) 3867 1236 w +(inherently) 4068 1236 w +(portable.) 4603 1236 w +(Furthermore,) 720 1356 w +(Acid) 1395 1356 w +(avoids) 1646 1356 w +(the) 1997 1356 w +(limitations) 2192 1356 w +(other) 2744 1356 w +(debuggers) 3041 1356 w +(impose) 3597 1356 w +(when) 3990 1356 w +(debugging) 4287 1356 w +(par\255) 4848 1356 w +(allel) 720 1476 w +(programs.) 974 1476 w +(Instead) 1560 1476 w +(of) 1968 1476 w +(embedding) 2121 1476 w +(a) 2723 1476 w +(fixed) 2833 1476 w +(process) 3134 1476 w +(model) 3563 1476 w +(in) 3920 1476 w +(the) 4066 1476 w +(debugger,) 4276 1476 w +(Acid) 4828 1476 w +(allows) 720 1596 w +(the) 1062 1596 w +(programmer) 1257 1596 w +(to) 1903 1596 w +(adapt) 2042 1596 w +(the) 2356 1596 w +(debugger) 2552 1596 w +(to) 3058 1596 w +(handle) 3197 1596 w +(an) 3565 1596 w +(arbitrary) 3723 1596 w +(process) 4178 1596 w +(partition\255) 4593 1596 w +(ing) 720 1716 w +(or) 915 1716 w +(program) 1059 1716 w +(structure.) 1517 1716 w +(The) 2029 1716 w +(ability) 2251 1716 w +(to) 2586 1716 w +(interact) 2725 1716 w +(dynamically) 3134 1716 w +(with) 3745 1716 w +(an) 3991 1716 w +(executing) 4149 1716 w +(process) 4666 1716 w +(provides) 720 1836 w +(clear) 1175 1836 w +(advantages) 1446 1836 w +(over) 2033 1836 w +(debuggers) 2282 1836 w +(constrained) 2837 1836 w +(to) 3444 1836 w +(probe) 3581 1836 w +(a) 3904 1836 w +(static) 3999 1836 w +(image.) 4299 1836 w +(Finally,) 4698 1836 w +(the) 720 1956 w +(Acid) 920 1956 w +(language) 1177 1956 w +(is) 1665 1956 w +(a) 1790 1956 w +(powerful) 1890 1956 w +(vehicle) 2360 1956 w +(for) 2739 1956 w +(expressing) 2922 1956 w +(assertions) 3498 1956 w +(about) 4036 1956 w +(logic,) 4358 1956 w +(process) 4666 1956 w +(state,) 720 2076 w +(and) 1029 2076 w +(the) 1250 2076 w +(contents) 1446 2076 w +(of) 1904 2076 w +(data) 2043 2076 w +(structures.) 2295 2076 w +(When) 2890 2076 w +(combined) 3198 2076 w +(with) 3718 2076 w +(dynamic) 3965 2076 w +(interaction) 4412 2076 w +(it) 4974 2076 w +(allows) 720 2196 w +(a) 1063 2196 w +(limited) 1159 2196 w +(form) 1536 2196 w +(of) 1809 2196 w +(automated) 1948 2196 w +(program) 2508 2196 w +(verification) 2964 2196 w +(without) 3543 2196 w +(requiring) 3948 2196 w +(modification) 4433 2196 w +(or) 720 2316 w +(recompilation) 862 2316 w +(of) 1569 2316 w +(the) 1707 2316 w +(source) 1902 2316 w +(code.) 2264 2316 w +(The) 2599 2316 w +(language) 2820 2316 w +(is) 3303 2316 w +(also) 3423 2316 w +(an) 3659 2316 w +(excellent) 3816 2316 w +(vehicle) 4293 2316 w +(for) 4668 2316 w +(pre\255) 4847 2316 w +(serving a test suite for later regression testing.) 720 2436 w +(The debugger may be customized by) 970 2592 w +(its) 2803 2592 w +(users;) 2953 2592 w +(standard) 3279 2592 w +(functions) 3739 2592 w +(may) 4224 2592 w +(be) 4457 2592 w +(modified) 4609 2592 w +(or) 720 2712 w +(extended) 880 2712 w +(to) 1392 2712 w +(suit) 1548 2712 w +(a) 1785 2712 w +(particular) 1898 2712 w +(application) 2419 2712 w +(or) 3011 2712 w +(preference.) 3171 2712 w +(For) 3811 2712 w +(example,) 4024 2712 w +(the) 4526 2712 w +(kernel) 4738 2712 w +(developers) 720 2832 w +(in) 1287 2832 w +(our) 1417 2832 w +(group) 1620 2832 w +(require) 1948 2832 w +(a) 2336 2832 w +(command) 2431 2832 w +(set) 2949 2832 w +(supporting) 3133 2832 w +(assembler-level) 3704 2832 w +(debugging) 4519 2832 w +(while) 720 2952 w +(the) 1043 2952 w +(application) 1268 2952 w +(programmers) 1872 2952 w +(prefer) 2599 2952 w +(source-level) 2963 2952 w +(functionality.) 3635 2952 w +(Although) 4372 2952 w +(the) 4885 2952 w +(default) 720 3072 w +(library) 1097 3072 w +(is) 1446 3072 w +(biased) 1565 3072 w +(toward) 1921 3072 w +(assembler-level) 2294 3072 w +(debugging,) 3108 3072 w +(it) 3700 3072 w +(is) 3805 3072 w +(easily) 3924 3072 w +(modified) 4235 3072 w +(to) 4705 3072 w +(pro\255) 4842 3072 w +(vide) 720 3192 w +(a) 956 3192 w +(convenient) 1047 3192 w +(source-level) 1611 3192 w +(interface.) 2249 3192 w +(The) 2773 3192 w +(debugger) 2990 3192 w +(itself) 3490 3192 w +(does) 3764 3192 w +(not) 4030 3192 w +(change;) 4225 3192 w +(the) 4640 3192 w +(user) 4830 3192 w +(combines) 720 3312 w +(primitives) 1243 3312 w +(and) 1780 3312 w +(existing) 2017 3312 w +(Acid) 2461 3312 w +(functions) 2730 3312 w +(in) 3239 3312 w +(different) 3387 3312 w +(ways) 3862 3312 w +(to) 4154 3312 w +(implement) 4309 3312 w +(the) 4885 3312 w +(desired interface.) 720 3432 w +10 /LucidaSans-Demi f +(2.) 720 3672 w +(Related Work) 873 3672 w +10 /LucidaSansUnicode00 f +(DUEL) 970 3828 w +([Gol93],) 1256 3828 w +(an) 1677 3828 w +(extension) 1829 3828 w +(to) 2339 3828 w +10 /LucidaSans-Italic f +(gdb) 2472 3828 w +10 /LucidaSansUnicode00 f +([Stal91],) 2690 3828 w +(proposes) 3124 3828 w +(using) 3607 3828 w +(a) 3909 3828 w +(high) 4000 3828 w +(level) 4251 3828 w +(expression) 4509 3828 w +(evaluator) 720 3948 w +(to) 1202 3948 w +(solve) 1334 3948 w +(some) 1617 3948 w +(of) 1912 3948 w +(these) 2044 3948 w +(problems.) 2340 3948 w +(The) 2863 3948 w +(evaluator) 3078 3948 w +(provides) 3560 3948 w +(iterators) 4010 3948 w +(to) 4452 3948 w +(loop) 4583 3948 w +(over) 4830 3948 w +(data) 720 4068 w +(structures) 963 4068 w +(and) 1485 4068 w +(conditionals) 1698 4068 w +(to) 2321 4068 w +(control) 2452 4068 w +(evaluation) 2827 4068 w +(of) 3359 4068 w +(expressions.) 3491 4068 w +(The) 4171 4068 w +(author) 4386 4068 w +(shows) 4738 4068 w +(that) 720 4188 w +(complex) 944 4188 w +(state) 1391 4188 w +(queries) 1660 4188 w +(can) 2051 4188 w +(be formulated by combining concise expressions but this) 2252 4188 w +(only) 720 4308 w +(addresses) 972 4308 w +(part) 1507 4308 w +(of) 1751 4308 w +(the) 1897 4308 w +(problem.) 2100 4308 w +(A) 2618 4308 w +(program) 2735 4308 w +(is) 3199 4308 w +(a) 3327 4308 w +(dynamic) 3430 4308 w +(entity;) 3883 4308 w +(questions) 4236 4308 w +(asked) 4757 4308 w +(when) 720 4428 w +(the) 1022 4428 w +(program) 1222 4428 w +(is) 1683 4428 w +(in) 1808 4428 w +(a) 1944 4428 w +(static) 2043 4428 w +(state) 2347 4428 w +(are) 2627 4428 w +(meaningful) 2823 4428 w +(only) 3414 4428 w +(after) 3662 4428 w +(the) 3932 4428 w +(program) 4131 4428 w +(has) 4591 4428 w +(been) 4803 4428 w +10 /LucidaSansUnicode20 f +(\030) 720 4548 w +10 /LucidaSansUnicode00 f +(caught) 752 4548 w +10 /LucidaSansUnicode20 f +(\031) 1081 4548 w +10 /LucidaSansUnicode00 f +(in) 1154 4548 w +(that) 1286 4548 w +(state.) 1518 4548 w +(The) 1827 4548 w +(framework) 2049 4548 w +(for) 2609 4548 w +(manipulating) 2789 4548 w +(the) 3469 4548 w +(program) 3666 4548 w +(is) 4124 4548 w +(still) 4246 4548 w +(as) 4463 4548 w +(primitive) 4611 4548 w +(as) 720 4668 w +(the) 872 4668 w +(underlying) 1073 4668 w +(debugger.) 1637 4668 w +(While) 2180 4668 w +(DUEL) 2488 4668 w +(provides) 2785 4668 w +(a) 3247 4668 w +(means) 3348 4668 w +(to) 3711 4668 w +(probe) 3855 4668 w +(data) 4185 4668 w +(structures) 4440 4668 w +(it) 4974 4668 w +(entirely) 720 4788 w +(neglects) 1121 4788 w +(the) 1564 4788 w +(most) 1759 4788 w +(beneficial) 2041 4788 w +(aspect) 2548 4788 w +(of) 2901 4788 w +(debugging) 3039 4788 w +(languages:) 3600 4788 w +(the) 4166 4788 w +(ability) 4361 4788 w +(to) 4695 4788 w +(con\255) 4833 4788 w +(trol) 720 4908 w +(processes.) 936 4908 w +(Acid) 1497 4908 w +(is) 1756 4908 w +(structured) 1883 4908 w +(around) 2431 4908 w +(a) 2822 4908 w +(thread) 2924 4908 w +(of) 3285 4908 w +(control) 3430 4908 w +(that) 3819 4908 w +(passes) 4057 4908 w +(between) 4431 4908 w +(the) 4885 4908 w +(interpreter and the target program.) 720 5028 w +(The) 970 5184 w +(NeD) 1205 5184 w +(debugger) 1464 5184 w +([May92]) 1983 5184 w +(is) 2422 5184 w +(a) 2556 5184 w +(set) 2665 5184 w +(of) 2864 5184 w +(extensions) 3017 5184 w +(to) 3598 5184 w +(TCL) 3751 5184 w +([Ous90]) 3991 5184 w +(that) 4429 5184 w +(provide) 4675 5184 w +(debugging) 720 5304 w +(primitives.) 1283 5304 w +(The) 1837 5304 w +(resulting) 2060 5304 w +(language,) 2531 5304 w +(NeDtcl,) 3048 5304 w +(is) 3444 5304 w +(used) 3566 5304 w +(to) 3840 5304 w +(implement) 3980 5304 w +(a) 4539 5304 w +(portable) 4635 5304 w +(interface) 720 5424 w +(between) 1195 5424 w +(a) 1653 5424 w +(conventional) 1759 5424 w +(debugger,) 2427 5424 w +(pdb) 2975 5424 w +([May90],) 3215 5424 w +(and) 3683 5424 w +(a) 3914 5424 w +(server) 4020 5424 w +(that) 4368 5424 w +(executes) 4610 5424 w +(NeDtcl) 720 5544 w +(programs) 1088 5544 w +(operating) 1601 5544 w +(on) 2113 5544 w +(the) 2282 5544 w +(target) 2483 5544 w +(program.) 2817 5544 w +(Execution) 3343 5544 w +(of) 3862 5544 w +(the) 4006 5544 w +(NeDtcl) 4206 5544 w +(programs) 4573 5544 w +(implements) 720 5664 w +(the) 1351 5664 w +(debugging) 1568 5664 w +(primitives) 2151 5664 w +(that) 2693 5664 w +(pdb) 2946 5664 w +(expects.) 3197 5664 w +(NeD) 3698 5664 w +(is) 3965 5664 w +(targeted) 4107 5664 w +(at) 4577 5664 w +(multi-) 4732 5664 w +(process) 720 5784 w +(debugging) 1127 5784 w +(across) 1681 5784 w +(a) 2024 5784 w +(network, and proves the flexibility of a language as a means) 2112 5784 w +(of) 720 5904 w +(communication) 896 5904 w +(between) 1720 5904 w +(debugging) 2205 5904 w +(tools.) 2805 5904 w +(Whereas) 3155 5904 w +(NeD) 3641 5904 w +(provides) 3925 5904 w +(an) 4420 5904 w +(interface) 4616 5904 w +(between) 720 6024 w +(a) 1160 6024 w +(conventional) 1248 6024 w +(debugger) 1898 6024 w +(and) 2396 6024 w +(the) 2609 6024 w +(process) 2797 6024 w +(it) 3204 6024 w +(debugs,) 3303 6024 w +(Acid) 3725 6024 w +(is) 3970 6024 w +(the) 4083 6024 w +(debugger) 4271 6024 w +(itself.) 4769 6024 w +(While) 720 6144 w +(NeD) 1015 6144 w +(has) 1253 6144 w +(some) 1454 6144 w +(of) 1748 6144 w +(the) 1880 6144 w +(ideas) 2069 6144 w +(found) 2357 6144 w +(in) 2676 6144 w +(Acid) 2801 6144 w +(it) 3047 6144 w +(is) 3147 6144 w +(targeted) 3261 6144 w +(toward) 3702 6144 w +(a) 4070 6144 w +(different) 4159 6144 w +(purpose.) 4611 6144 w +(Acid) 720 6264 w +(seeks) 981 6264 w +(to) 1302 6264 w +(integrate) 1449 6264 w +(the) 1933 6264 w +(manipulation) 2136 6264 w +(of) 2821 6264 w +(a) 2967 6264 w +(program) 3070 6264 w +10 /LucidaSansUnicode20 f +(\031) 3486 6264 w +10 /LucidaSansUnicode00 f +(s) 3518 6264 w +(resources) 3617 6264 w +(into) 4135 6264 w +(the) 4372 6264 w +(debugger) 4575 6264 w +(while) 720 6384 w +(NeD) 1010 6384 w +(provides) 1252 6384 w +(a) 1706 6384 w +(flexible) 1799 6384 w +(interconnect) 2197 6384 w +(between) 2840 6384 w +(components) 3285 6384 w +(of) 3920 6384 w +(the) 4056 6384 w +(debugging) 4249 6384 w +(envi\255) 4808 6384 w +(ronment.) 720 6504 w +(The) 1198 6504 w +(choice) 1413 6504 w +(of) 1757 6504 w +(TCL) 1889 6504 w +(is) 2108 6504 w +(appropriate) 2222 6504 w +(for) 2820 6504 w +(its) 2993 6504 w +(use) 3144 6504 w +(in) 3346 6504 w +(NeD) 3470 6504 w +(but) 3708 6504 w +(is) 3903 6504 w +(not) 4016 6504 w +(suitable) 4209 6504 w +(for) 4624 6504 w +(Acid.) 4796 6504 w +(Acid) 720 6624 w +(relies) 967 6624 w +(on) 1264 6624 w +(the) 1422 6624 w +(coupling) 1612 6624 w +(of) 2066 6624 w +(the) 2199 6624 w +(type) 2389 6624 w +(system) 2632 6624 w +(with) 3007 6624 w +(expression) 3247 6624 w +(evaluation,) 3814 6624 w +(which) 4380 6624 w +(are) 4697 6624 w +(the) 4885 6624 w +(root of its design, to provide the debugging primitives.) 720 6744 w +(Dalek) 970 6900 w +([Ols90]) 1278 6900 w +(is) 1663 6900 w +(an) 1778 6900 w +(event) 1930 6900 w +(based) 2228 6900 w +(language) 2552 6900 w +(extension) 3031 6900 w +(to) 3542 6900 w +(gdb.) 3676 6900 w +(State) 3932 6900 w +(transitions) 4207 6900 w +(in) 4758 6900 w +(the) 4885 6900 w +(target program cause events to be queued for processing by the debugging language.) 720 7020 w +(Acid) 970 7176 w +(has) 1226 7176 w +(many) 1438 7176 w +(of) 1744 7176 w +(the) 1886 7176 w +(advantages) 2085 7176 w +(of) 2677 7176 w +(same) 2819 7176 w +(process) 3118 7176 w +(or) 3537 7176 w +10 /LucidaSans-Italic f +(local) 3684 7176 w +(agent) 3955 7176 w +10 /LucidaSansUnicode00 f +(debuggers,) 4275 7176 w +(like) 4868 7176 w +(Parasight) 720 7296 w +([Aral],) 1201 7296 w +(without) 1527 7296 w +(the) 1926 7296 w +(need) 2115 7296 w +(for) 2386 7296 w +(dynamic) 2558 7296 w +(linking) 2996 7296 w +(or) 3360 7296 w +(shared) 3495 7296 w +(memory.) 3856 7296 w +(Acid) 4349 7296 w +(improves) 4594 7296 w +cleartomark +showpage +saveobj restore +%%EndPage: 2 2 +%%Page: 3 3 +/saveobj save def +mark +3 pagesetup +10 /LucidaSansUnicode00 f +(\255 3 \255) 2783 480 w +(on) 720 840 w +(the) 881 840 w +(ideas) 1074 840 w +(of) 1366 840 w +(these) 1502 840 w +(other) 1802 840 w +(systems) 2097 840 w +(by) 2526 840 w +(completely) 2679 840 w +(integrating) 3244 840 w +(all) 3815 840 w +(aspects) 3967 840 w +(of) 4370 840 w +(the) 4507 840 w +(debug\255) 4701 840 w +(ging) 720 960 w +(process) 969 960 w +(into) 1377 960 w +(the) 1599 960 w +(language) 1787 960 w +(environment.) 2263 960 w +(Of) 2939 960 w +(particular) 3087 960 w +(importance) 3583 960 w +(is) 4164 960 w +(the) 4277 960 w +(relationship) 4465 960 w +(between) 720 1080 w +(Acid) 1166 1080 w +(variables,) 1417 1080 w +(program) 1919 1080 w +(symbols,) 2374 1080 w +(source) 2845 1080 w +(code,) 3206 1080 w +(registers) 3509 1080 w +(and) 3973 1080 w +(type) 4193 1080 w +(information.) 4441 1080 w +(This integration is made possible by the design of the Acid language.) 720 1200 w +(Interpreted) 970 1356 w +(languages) 1548 1356 w +(such) 2079 1356 w +(as) 2342 1356 w +(Lisp) 2485 1356 w +(and) 2718 1356 w +(Smalltalk) 2936 1356 w +(are) 3413 1356 w +(able) 3603 1356 w +(to) 3844 1356 w +(provide) 3980 1356 w +(richer) 4383 1356 w +(debug\255) 4701 1356 w +(ging) 720 1476 w +(environments) 991 1476 w +(through) 1709 1476 w +(more) 2152 1476 w +(complete) 2459 1476 w +(information) 2961 1476 w +(than) 3584 1476 w +(their) 3856 1476 w +(compiled) 4137 1476 w +(counter\255) 4637 1476 w +(parts.) 720 1596 w +(Acid) 1038 1596 w +(is) 1289 1596 w +(a) 1408 1596 w +(means) 1502 1596 w +(to) 1858 1596 w +(gather) 1995 1596 w +(and) 2347 1596 w +(represent) 2566 1596 w +(similar) 3068 1596 w +(information) 3434 1596 w +(about) 4040 1596 w +(compiled) 4357 1596 w +(pro\255) 4842 1596 w +(grams through cooperation with the compilation tools and library implementers.) 720 1716 w +10 /LucidaSans-Demi f +(3.) 720 1956 w +(Acid the Language) 873 1956 w +10 /LucidaSansUnicode00 f +(Acid) 970 2112 w +(is) 1221 2112 w +(a) 1340 2112 w +(small) 1434 2112 w +(interpreted) 1730 2112 w +(language) 2311 2112 w +(targeted) 2794 2112 w +(to) 3241 2112 w +(its) 3379 2112 w +(debugging) 3536 2112 w +(task.) 4097 2112 w +(It) 4402 2112 w +(focuses) 4508 2112 w +(on) 4917 2112 w +(representing) 720 2232 w +(program) 1380 2232 w +(state) 1840 2232 w +(and) 2120 2232 w +(addressing) 2344 2232 w +(data) 2921 2232 w +(rather) 3175 2232 w +(than) 3511 2232 w +(expressing) 3770 2232 w +(complex) 4345 2232 w +(com\255) 4802 2232 w +(putations.) 720 2352 w +(Program) 1253 2352 w +(state) 1705 2352 w +(is) 1985 2352 w +10 /LucidaSans-Italic f +(addressable) 2109 2352 w +10 /LucidaSansUnicode00 f +(from) 2739 2352 w +(an) 3015 2352 w +(Acid) 3176 2352 w +(program.) 3432 2352 w +(In) 3956 2352 w +(addition) 4091 2352 w +(to) 4534 2352 w +(parsing) 4677 2352 w +(and) 720 2472 w +(executing) 945 2472 w +(expressions) 1466 2472 w +(and) 2093 2472 w +(providing) 2318 2472 w +(an) 2825 2472 w +(architecture-independent) 2986 2472 w +(interface) 4275 2472 w +(to) 4743 2472 w +(the) 4885 2472 w +(target) 720 2592 w +(process,) 1052 2592 w +(the) 1502 2592 w +(interpreter) 1701 2592 w +(supplies) 2264 2592 w +(a) 2712 2592 w +(mark-and-scan) 2811 2592 w +(garbage) 3617 2592 w +(collector) 4055 2592 w +(to) 4515 2592 w +(manage) 4657 2592 w +(storage.) 720 2712 w +(Every) 970 2868 w +(Acid) 1274 2868 w +(session) 1535 2868 w +(begins) 1945 2868 w +(with) 2317 2868 w +(the) 2571 2868 w +(loading) 2775 2868 w +(of) 3185 2868 w +(the) 3333 2868 w +(Acid) 3538 2868 w +(libraries.) 3800 2868 w +(These) 4308 2868 w +(libraries) 4646 2868 w +(contain) 720 2988 w +(functions,) 1141 2988 w +(written) 1689 2988 w +(in) 2092 2988 w +(Acid,) 2247 2988 w +(that) 2555 2988 w +(provide) 2809 2988 w +(a) 3237 2988 w +(standard) 3355 2988 w +(debugging) 3845 2988 w +(environment) 4429 2988 w +(including) 720 3108 w +(breakpoint) 1211 3108 w +(management,) 1778 3108 w +(stepping) 2483 3108 w +(by) 2949 3108 w +(instruction) 3107 3108 w +(or) 3672 3108 w +(statement,) 3817 3108 w +(stack) 4376 3108 w +(tracing,) 4671 3108 w +(and) 720 3228 w +(access) 942 3228 w +(to) 1299 3228 w +(variables,) 1439 3228 w +(memory,) 1944 3228 w +(and) 2414 3228 w +(registers.) 2636 3228 w +(The) 3166 3228 w +(library) 3389 3228 w +(contains) 3741 3228 w +(600) 4191 3228 w +(lines) 4421 3228 w +(of) 4689 3228 w +(Acid) 4828 3228 w +(code) 720 3348 w +(and) 1005 3348 w +(provides) 1239 3348 w +(functionality) 1709 3348 w +(similar) 2366 3348 w +(to) 2747 3348 w +10 /LucidaSans-Italic f +(dbx) 2899 3348 w +10 /LucidaSansUnicode00 f +(.) 3075 3348 w +(Following) 3193 3348 w +(the) 3711 3348 w +(loading) 3921 3348 w +(of) 4337 3348 w +(the) 4490 3348 w +(system) 4700 3348 w +(library,) 720 3468 w +(Acid) 1109 3468 w +(loads) 1368 3468 w +(user-specified) 1674 3468 w +(libraries;) 2424 3468 w +(this) 2897 3468 w +(load) 3122 3468 w +(sequence) 3376 3468 w +(allows) 3879 3468 w +(the) 4227 3468 w +(user) 4428 3468 w +(to) 4684 3468 w +(aug\255) 4828 3468 w +(ment) 720 3588 w +(or) 1022 3588 w +(override) 1178 3588 w +(the) 1631 3588 w +(standard) 1840 3588 w +(commands) 2322 3588 w +(to) 2906 3588 w +(customize) 3059 3588 w +(the) 3611 3588 w +(debugging) 3821 3588 w +(environment.) 4397 3588 w +(When) 720 3708 w +(all) 1032 3708 w +(libraries) 1191 3708 w +(are) 1630 3708 w +(loaded,) 1827 3708 w +(Acid) 2231 3708 w +(issues) 2488 3708 w +(an) 2833 3708 w +(interactive) 2995 3708 w +(prompt) 3545 3708 w +(and) 3948 3708 w +(begins) 4173 3708 w +(evaluating) 4541 3708 w +(expressions) 720 3828 w +(entered) 1339 3828 w +(by) 1747 3828 w +(the) 1899 3828 w +(user.) 2091 3828 w +(The) 2402 3828 w +(Acid) 2621 3828 w +10 /LucidaSansUnicode20 f +(\030) 2871 3828 w +10 /LucidaSansUnicode00 f +(commands) 2903 3828 w +10 /LucidaSansUnicode20 f +(\031) 3432 3828 w +10 /LucidaSansUnicode00 f +(are) 3502 3828 w +(actually) 3692 3828 w +(invocations) 4100 3828 w +(of) 4688 3828 w +(buil\255) 4824 3828 w +(tin) 720 3948 w +(primitives) 887 3948 w +(or) 1406 3948 w +(previously) 1547 3948 w +(defined) 2082 3948 w +(Acid) 2486 3948 w +(functions.) 2736 3948 w +(Acid) 3258 3948 w +(evaluates) 3508 3948 w +(each) 3999 3948 w +(expression) 4261 3948 w +(as) 4830 3948 w +(it) 4974 3948 w +(is entered and prints the result.) 720 4068 w +10 /LucidaSans-Demi f +(4.) 720 4308 w +(Types and Variables) 873 4308 w +10 /LucidaSansUnicode00 f +(Acid) 970 4464 w +(variables) 1219 4464 w +(are) 1687 4464 w +(of) 1876 4464 w +(four) 2011 4464 w +(basic) 2249 4464 w +(types:) 2535 4464 w +10 /LucidaSans-Italic f +(integer) 2863 4464 w +10 /LucidaSansUnicode00 f +(,) 3207 4464 w +10 /LucidaSans-Italic f +(string) 3276 4464 w +10 /LucidaSansUnicode00 f +(,) 3563 4464 w +10 /LucidaSans-Italic f +(float) 3632 4464 w +10 /LucidaSansUnicode00 f +(,) 3855 4464 w +(and) 3924 4464 w +10 /LucidaSans-Italic f +(list) 4141 4464 w +10 /LucidaSansUnicode00 f +(.) 4286 4464 w +(The) 4387 4464 w +(type) 4605 4464 w +(of) 4850 4464 w +(a) 4985 4464 w +(variable) 720 4584 w +(is) 1153 4584 w +(inferred) 1286 4584 w +(by) 1723 4584 w +(the) 1890 4584 w +(type) 2097 4584 w +(of) 2357 4584 w +(the) 2507 4584 w +(right-hand) 2714 4584 w +(side) 3297 4584 w +(of) 3548 4584 w +(an) 3698 4584 w +(assignment) 3867 4584 w +(expression.) 4477 4584 w +(Many) 720 4704 w +(of) 1021 4704 w +(the) 1165 4704 w +(operators) 1366 4704 w +(can) 1878 4704 w +(be) 2092 4704 w +(applied) 2257 4704 w +(to) 2661 4704 w +(more) 2805 4704 w +(than) 3102 4704 w +(one) 3364 4704 w +(type;) 3590 4704 w +(for) 3877 4704 w +(these) 4063 4704 w +(operators) 4372 4704 w +(the) 4885 4704 w +(action) 720 4824 w +(of) 1061 4824 w +(the) 1205 4824 w +(operator) 1406 4824 w +(is) 1867 4824 w +(determined) 1993 4824 w +(by) 2595 4824 w +(the) 2756 4824 w +(type) 2957 4824 w +(of) 3211 4824 w +(its) 3354 4824 w +(operands.) 3516 4824 w +(For) 4077 4824 w +(example,) 4278 4824 w +(the) 4768 4824 w +10 /LucidaTypewriter f +(+) 4968 4824 w +10 /LucidaSansUnicode00 f +(operator) 720 4944 w +(adds) 1183 4944 w +10 /LucidaSans-Italic f +(integer) 1463 4944 w +10 /LucidaSansUnicode00 f +(and) 1855 4944 w +10 /LucidaSans-Italic f +(float) 2083 4944 w +10 /LucidaSansUnicode00 f +(operands,) 2354 4944 w +(and) 2886 4944 w +(concatenates) 3114 4944 w +10 /LucidaSans-Italic f +(string) 3797 4944 w +10 /LucidaSansUnicode00 f +(and) 4133 4944 w +10 /LucidaSans-Italic f +(list) 4362 4944 w +10 /LucidaSansUnicode00 f +(operands.) 4556 4944 w +(Lists) 720 5064 w +(are) 974 5064 w +(the) 1159 5064 w +(only complex type in Acid; there are no arrays, structures or pointers. Oper\255) 1347 5064 w +(ators) 720 5184 w +(provide) 1032 5184 w +10 /LucidaTypewriter f +(head) 1464 5184 w +10 /LucidaSansUnicode00 f +(,) 1752 5184 w +10 /LucidaTypewriter f +(tail) 1851 5184 w +10 /LucidaSansUnicode00 f +(,) 2139 5184 w +10 /LucidaTypewriter f +(append) 2238 5184 w +10 /LucidaSansUnicode00 f +(and) 2737 5184 w +10 /LucidaTypewriter f +(delete) 2984 5184 w +10 /LucidaSansUnicode00 f +(operations.) 3484 5184 w +(Lists) 4132 5184 w +(can) 4421 5184 w +(also) 4657 5184 w +(be) 4921 5184 w +(indexed like arrays.) 720 5304 w +(Acid) 970 5460 w +(has) 1222 5460 w +(two) 1430 5460 w +(levels) 1645 5460 w +(of) 1958 5460 w +(scope:) 2096 5460 w +(global) 2450 5460 w +(and) 2789 5460 w +(local.) 3010 5460 w +(Function) 3340 5460 w +(parameters) 3799 5460 w +(and) 4388 5460 w +(variables) 4609 5460 w +(declared) 720 5580 w +(in) 1173 5580 w +(a) 1303 5580 w +(function) 1397 5580 w +(body) 1837 5580 w +(using) 2115 5580 w +(the) 2420 5580 w +10 /LucidaTypewriter f +(local) 2614 5580 w +10 /LucidaSansUnicode00 f +(keyword) 3013 5580 w +(are) 3460 5580 w +(created) 3651 5580 w +(at) 4049 5580 w +(entry) 4180 5580 w +(to) 4466 5580 w +(the) 4602 5580 w +(func\255) 4795 5580 w +(tion) 720 5700 w +(and) 945 5700 w +(exist) 1161 5700 w +(for) 1431 5700 w +(the) 1607 5700 w +(lifetime) 1799 5700 w +(of) 2202 5700 w +(a) 2337 5700 w +(function.) 2429 5700 w +(Global) 2931 5700 w +(variables) 3277 5700 w +(are) 3745 5700 w +(created) 3934 5700 w +(by) 4330 5700 w +(assignment) 4482 5700 w +(and) 720 5820 w +(need) 942 5820 w +(not) 1221 5820 w +(be) 1422 5820 w +(declared.) 1582 5820 w +(All) 2101 5820 w +(variables) 2269 5820 w +(and) 2741 5820 w +(functions) 2962 5820 w +(in) 3455 5820 w +(the) 3587 5820 w +(program) 3783 5820 w +(being) 4240 5820 w +(debugged) 4553 5820 w +(are) 720 5940 w +(entered) 910 5940 w +(in) 1319 5940 w +(the) 1448 5940 w +(Acid) 1641 5940 w +(symbol) 1891 5940 w +(table) 2278 5940 w +(as) 2556 5940 w +(global) 2700 5940 w +(variables) 3037 5940 w +(during) 3506 5940 w +(Acid) 3863 5940 w +(initialization.) 4113 5940 w +(Con\255) 4815 5940 w +(flicting) 720 6060 w +(variable) 1104 6060 w +(names) 1532 6060 w +(are) 1897 6060 w +(resolved) 2097 6060 w +(by) 2554 6060 w +(prefixing) 2717 6060 w +(enough) 3205 6060 w +10 /LucidaSansUnicode20 f +(\030) 3617 6060 w +10 /LucidaSansUnicode00 f +($) 3649 6060 w +10 /LucidaSansUnicode20 f +(\031) 3712 6060 w +10 /LucidaSansUnicode00 f +(characters) 3791 6060 w +(to) 4338 6060 w +(make) 4483 6060 w +(them) 4792 6060 w +(unique.) 720 6180 w +(Syntactically,) 1157 6180 w +(Acid) 1821 6180 w +(variables) 2072 6180 w +(and) 2542 6180 w +(target) 2761 6180 w +(program) 3088 6180 w +(symbols) 3543 6180 w +(are) 3982 6180 w +(referenced) 4173 6180 w +(identi\255) 4731 6180 w +(cally.) 720 6300 w +(However,) 1041 6300 w +(the) 1531 6300 w +(variables) 1727 6300 w +(are) 2199 6300 w +(managed) 2392 6300 w +(differently) 2879 6300 w +(in) 3418 6300 w +(the) 3549 6300 w +(Acid) 3744 6300 w +(symbol) 3996 6300 w +(table) 4385 6300 w +(and) 4665 6300 w +(the) 4885 6300 w +(user) 720 6420 w +(must) 975 6420 w +(be) 1264 6420 w +(aware) 1429 6420 w +(of) 1759 6420 w +(this) 1903 6420 w +(distinction.) 2128 6420 w +(The) 2749 6420 w +(value) 2976 6420 w +(of) 3276 6420 w +(an) 3420 6420 w +(Acid) 3583 6420 w +(variable) 3841 6420 w +(is) 4267 6420 w +(stored) 4393 6420 w +(in) 4748 6420 w +(the) 4885 6420 w +(symbol) 720 6540 w +(table;) 1117 6540 w +(a) 1437 6540 w +(reference) 1540 6540 w +(returns) 2044 6540 w +(the) 2442 6540 w +(value.) 2645 6540 w +(The) 3011 6540 w +(symbol) 3240 6540 w +(table) 3637 6540 w +(entry) 3925 6540 w +(for) 4221 6540 w +(a) 4408 6540 w +(variable) 4511 6540 w +(or) 4938 6540 w +(function) 720 6660 w +(in) 1160 6660 w +(the) 1290 6660 w +(target) 1484 6660 w +(program) 1811 6660 w +(contains) 2266 6660 w +(the) 2713 6660 w +(address) 2908 6660 w +(of) 3328 6660 w +(that) 3466 6660 w +(symbol) 3697 6660 w +(in) 4086 6660 w +(the) 4217 6660 w +(image) 4412 6660 w +(of) 4747 6660 w +(the) 4885 6660 w +(program.) 720 6780 w +(Thus,) 1264 6780 w +(the) 1598 6780 w +(value) 1817 6780 w +(of) 2134 6780 w +(a) 2295 6780 w +(program) 2413 6780 w +(variable) 2892 6780 w +(is) 3335 6780 w +(accessed) 3478 6780 w +(by) 3975 6780 w +(indirect) 4153 6780 w +(reference) 4584 6780 w +(through) 720 6900 w +(the) 1148 6900 w +(Acid) 1344 6900 w +(variable) 1597 6900 w +(that) 2018 6900 w +(has) 2251 6900 w +(the) 2461 6900 w +(same) 2658 6900 w +(name;) 2955 6900 w +(the) 3295 6900 w +(value) 3492 6900 w +(of) 3788 6900 w +(an) 3928 6900 w +(Acid) 4087 6900 w +(variable) 4341 6900 w +(is) 4763 6900 w +(the) 4885 6900 w +(address of the corresponding program variable.) 720 7020 w +cleartomark +showpage +saveobj restore +%%EndPage: 3 3 +%%Page: 4 4 +/saveobj save def +mark +4 pagesetup +10 /LucidaSansUnicode00 f +(\255 4 \255) 2783 480 w +10 /LucidaSans-Demi f +(5.) 720 840 w +(Control Flow) 873 840 w +10 /LucidaSansUnicode00 f +(The) 970 996 w +10 /LucidaTypewriter f +(while) 1184 996 w +10 /LucidaSansUnicode00 f +(and) 1578 996 w +10 /LucidaTypewriter f +(loop) 1792 996 w +10 /LucidaSansUnicode00 f +(statements) 2114 996 w +(implement) 2683 996 w +(looping.) 3235 996 w +(The) 3700 996 w +(former) 3915 996 w +(is) 4278 996 w +(similar) 4392 996 w +(to) 4753 996 w +(the) 4885 996 w +(same) 720 1116 w +(statement) 1009 1116 w +(in) 1527 1116 w +(C.) 1652 1116 w +(The) 1818 1116 w +(latter) 2032 1116 w +(evaluates) 2320 1116 w +(starting) 2806 1116 w +(and) 3213 1116 w +(ending) 3426 1116 w +(expressions) 3793 1116 w +(yielding) 4408 1116 w +(inte\255) 4823 1116 w +(gers and iterates while an incrementing loop index is) 720 1236 w +(within) 3336 1236 w +(the) 3665 1236 w +(bounds) 3853 1236 w +(of) 4248 1236 w +(those) 4379 1236 w +(expres\255) 4679 1236 w +(sions.) 720 1356 w +9 /LucidaTypewriter f +(acid:) 1008 1526 w +(i) 1398 1526 w +(=) 1528 1526 w +(0;) 1658 1526 w +(loop) 1853 1526 w +(1,5) 2178 1526 w +(do) 2438 1526 w +(print\(i=i+1\)) 2633 1526 w +(0x00000001) 1008 1636 w +(0x00000002) 1008 1746 w +(0x00000003) 1008 1856 w +(0x00000004) 1008 1966 w +(0x00000005) 1008 2076 w +(acid:) 1008 2186 w +10 /LucidaSansUnicode00 f +(The traditional) 720 2366 w +10 /LucidaTypewriter f +(if-then-else) 1463 2366 w +10 /LucidaSansUnicode00 f +(statement implements conditional execution.) 2359 2366 w +10 /LucidaSans-Demi f +(6.) 720 2606 w +(Addressing) 873 2606 w +10 /LucidaSansUnicode00 f +(Two) 970 2762 w +(indirection) 1240 2762 w +(operators) 1829 2762 w +(allow) 2365 2762 w +(Acid) 2686 2762 w +(to) 2968 2762 w +(access) 3136 2762 w +(values) 3521 2762 w +(in) 3896 2762 w +(the) 4057 2762 w +(program) 4282 2762 w +(being) 4768 2762 w +(debugged.) 720 2882 w +(The) 1305 2882 w +10 /LucidaTypewriter f +(*) 1520 2882 w +10 /LucidaSansUnicode00 f +(operator) 1626 2882 w +(fetches) 2075 2882 w +(a) 2459 2882 w +(value) 2548 2882 w +(from) 2836 2882 w +(the) 3102 2882 w +(memory) 3291 2882 w +(image) 3721 2882 w +(of) 4050 2882 w +(an) 4182 2882 w +(executing) 4333 2882 w +(pro\255) 4842 2882 w +(cess;) 720 3002 w +(the) 995 3002 w +10 /LucidaTypewriter f +(@) 1184 3002 w +10 /LucidaSansUnicode00 f +(operator) 1290 3002 w +(fetches) 1740 3002 w +(a) 2125 3002 w +(value) 2215 3002 w +(from) 2504 3002 w +(the) 2771 3002 w +(text) 2961 3002 w +(file) 3187 3002 w +(of) 3373 3002 w +(the) 3506 3002 w +(process.) 3696 3002 w +(When) 4169 3002 w +(either) 4470 3002 w +(oper\255) 4786 3002 w +(ator appears on the left side of an assignment, the value is written rather than read.) 720 3122 w +(The) 970 3278 w +(indirection) 1185 3278 w +(operator) 1739 3278 w +(must) 2189 3278 w +(know) 2467 3278 w +(the) 2760 3278 w +(size) 2950 3278 w +(of) 3178 3278 w +(the) 3311 3278 w +(object) 3501 3278 w +(referenced) 3834 3278 w +(by) 4388 3278 w +(a) 4538 3278 w +(variable.) 4628 3278 w +(The) 720 3398 w +(Plan) 934 3398 w +(9) 1168 3398 w +(compilers) 1264 3398 w +(neglect) 1771 3398 w +(to) 2157 3398 w +(include) 2288 3398 w +(this) 2673 3398 w +(information) 2885 3398 w +(in the program symbol table, so) 3485 3398 w +(Acid) 720 3518 w +(cannot) 967 3518 w +(derive) 1330 3518 w +(this) 1662 3518 w +(information) 1876 3518 w +(implicitly.) 2478 3518 w +(Instead) 3019 3518 w +(Acid) 3408 3518 w +(variables) 3656 3518 w +(have) 4123 3518 w +(formats.) 4384 3518 w +(The) 4859 3518 w +(format) 720 3638 w +(is) 1081 3638 w +(a) 1198 3638 w +(code) 1290 3638 w +(letter) 1558 3638 w +(specifying) 1851 3638 w +(the) 2380 3638 w +(printing) 2572 3638 w +(style) 2994 3638 w +(and) 3256 3638 w +(the) 3473 3638 w +(effect) 3665 3638 w +(of) 3975 3638 w +(some) 4109 3638 w +(of) 4406 3638 w +(the) 4540 3638 w +(opera\255) 4731 3638 w +(tors on that variable.) 720 3758 w +(The indirection operators look at the format code to determine the) 1796 3758 w +(number) 720 3878 w +(of) 1134 3878 w +(bytes) 1269 3878 w +(to) 1565 3878 w +(read) 1700 3878 w +(or) 1952 3878 w +(write.) 2091 3878 w +(The) 2432 3878 w +(format) 2650 3878 w +(codes) 3011 3878 w +(are) 3330 3878 w +(derived) 3518 3878 w +(from) 3914 3878 w +(the) 4182 3878 w +(format) 4373 3878 w +(letters) 4733 3878 w +(used) 720 3998 w +(by) 991 3998 w +10 /LucidaSans-Italic f +(db) 1145 3998 w +10 /LucidaSansUnicode00 f +(.) 1267 3998 w +(By) 1370 3998 w +(default,) 1519 3998 w +(symbol) 1929 3998 w +(table) 2317 3998 w +(variables) 2596 3998 w +(and) 3066 3998 w +(numeric) 3285 3998 w +(constants) 3718 3998 w +(are) 4224 3998 w +(assigned) 4416 3998 w +(the) 4885 3998 w +(format) 720 4118 w +(code) 1094 4118 w +10 /LucidaTypewriter f +('X') 1374 4118 w +10 /LucidaSansUnicode00 f +(which) 1639 4118 w +(specifies) 1969 4118 w +(32-bit) 2441 4118 w +(hexadecimal.) 2803 4118 w +(Printing) 3526 4118 w +(such) 3952 4118 w +(a) 4227 4118 w +(variable) 4331 4118 w +(yields) 4760 4118 w +(output) 720 4238 w +(of) 1087 4238 w +(the) 1230 4238 w +(form) 1430 4238 w +10 /LucidaTypewriter f +(0x00123456) 1707 4238 w +10 /LucidaSansUnicode00 f +(.) 2427 4238 w +(An) 2537 4238 w +(indirect) 2714 4238 w +(reference) 3128 4238 w +(through) 3630 4238 w +(the) 4063 4238 w +(variable) 4264 4238 w +(fetches) 4690 4238 w +(32) 720 4358 w +(bits) 888 4358 w +(of) 1110 4358 w +(data) 1250 4358 w +(at) 1502 4358 w +(the) 1636 4358 w +(address) 1833 4358 w +(indicated) 2255 4358 w +(by) 2741 4358 w +(the) 2897 4358 w +(variable.) 3093 4358 w +(Other) 3578 4358 w +(formats) 3893 4358 w +(specify) 4309 4358 w +(various) 4689 4358 w +(data) 720 4478 w +(types,) 964 4478 w +(for) 1289 4478 w +(example) 1462 4478 w +10 /LucidaTypewriter f +(i) 1909 4478 w +10 /LucidaSansUnicode00 f +(an) 2015 4478 w +(instruction,) 2166 4478 w +10 /LucidaTypewriter f +(D) 2754 4478 w +10 /LucidaSansUnicode00 f +(a) 2860 4478 w +(signed) 2949 4478 w +(32) 3306 4478 w +(bit) 3467 4478 w +(decimal,) 3631 4478 w +10 /LucidaTypewriter f +(s) 4074 4478 w +10 /LucidaSansUnicode00 f +(a) 4181 4478 w +(null-terminated) 4271 4478 w +(string.) 720 4598 w +(The) 1099 4598 w +10 /LucidaTypewriter f +(fmt) 1313 4598 w +10 /LucidaSansUnicode00 f +(function allows the user to change the format code of a variable to con\255) 1562 4598 w +(trol) 720 4718 w +(the) 932 4718 w +(printing) 1131 4718 w +(format) 1560 4718 w +(and) 1928 4718 w +(operator) 2152 4718 w +(side) 2611 4718 w +(effects.) 2854 4718 w +(This) 3287 4718 w +(function) 3536 4718 w +(evaluates) 3981 4718 w +(the) 4479 4718 w +(expres\255) 4679 4718 w +(sion) 720 4838 w +(supplied) 970 4838 w +(as) 1433 4838 w +(the) 1586 4838 w +(first) 1788 4838 w +(argument,) 2030 4838 w +(attaches) 2577 4838 w +(the) 3028 4838 w +(format) 3230 4838 w +(code) 3601 4838 w +(supplied) 3879 4838 w +(as) 4342 4838 w +(the) 4495 4838 w +(second) 4696 4838 w +(argument) 720 4958 w +(to) 1222 4958 w +(the) 1354 4958 w +(result) 1544 4958 w +(and) 1855 4958 w +(returns) 2070 4958 w +(that) 2455 4958 w +(value.) 2681 4958 w +(If) 3034 4958 w +(the) 3135 4958 w +(result) 3325 4958 w +(is) 3636 4958 w +(assigned) 3751 4958 w +(to) 4215 4958 w +(a) 4348 4958 w +(variable,) 4438 4958 w +(the) 4885 4958 w +(new) 720 5078 w +(format) 949 5078 w +(code) 1307 5078 w +(applies) 1572 5078 w +(to) 1952 5078 w +(that) 2084 5078 w +(variable.) 2309 5078 w +(For) 2786 5078 w +(convenience,) 2975 5078 w +(Acid) 3638 5078 w +(provides) 3883 5078 w +(the) 4332 5078 w +10 /LucidaTypewriter f +(\\) 4520 5078 w +10 /LucidaSansUnicode00 f +(operator) 4625 5078 w +(as a shorthand infix form of) 720 5198 w +10 /LucidaTypewriter f +(fmt) 2115 5198 w +10 /LucidaSansUnicode00 f +(.) 2331 5198 w +(For example:) 2427 5198 w +9 /LucidaTypewriter f +(acid:) 1008 5368 w +(x=10) 1398 5368 w +(acid:) 1008 5478 w +(x) 1398 5478 w +(//) 3153 5478 w +(print) 3348 5478 w +(x) 3738 5478 w +(in) 3868 5478 w +(hex) 4063 5478 w +(0x0000000a) 1008 5588 w +(acid:) 1008 5698 w +(x) 1398 5698 w +(=) 1528 5698 w +(fmt\(x,) 1658 5698 w +('D'\)) 2113 5698 w +(//) 3153 5698 w +(make) 3348 5698 w +(x) 3673 5698 w +(type) 3803 5698 w +(decimal) 4128 5698 w +(acid:) 1008 5808 w +(print\(x,) 1398 5808 w +(fmt\(x,) 1983 5808 w +('X'\),) 2438 5808 w +(x\\X\)) 2828 5808 w +(//) 3153 5808 w +(print) 3348 5808 w +(x) 3738 5808 w +(in) 3868 5808 w +(decimal) 4063 5808 w +(&) 4583 5808 w +(hex) 4713 5808 w +(10) 1008 5918 w +(0x0000000a) 1203 5918 w +(0x0000000a) 1918 5918 w +(acid:) 1008 6028 w +(x) 1398 6028 w +(//) 3153 6028 w +(print) 3348 6028 w +(x) 3738 6028 w +(in) 3868 6028 w +(decimal) 4063 6028 w +(10) 1008 6138 w +(acid:) 1008 6248 w +(x\\o) 1398 6248 w +(//) 3153 6248 w +(print) 3348 6248 w +(x) 3738 6248 w +(in) 3868 6248 w +(octal) 4063 6248 w +(000000000012) 1008 6358 w +10 /LucidaSansUnicode00 f +(The) 720 6538 w +10 /LucidaTypewriter f +(++) 940 6538 w +10 /LucidaSansUnicode00 f +(and) 1123 6538 w +10 /LucidaTypewriter f +(--) 1342 6538 w +10 /LucidaSansUnicode00 f +(operators) 1525 6538 w +(increment) 2030 6538 w +(or) 2556 6538 w +(decrement) 2697 6538 w +(a) 3251 6538 w +(variable) 3345 6538 w +(by) 3764 6538 w +(an) 3918 6538 w +(amount) 4074 6538 w +(determined) 4484 6538 w +(by) 720 6658 w +(its) 879 6658 w +(format) 1040 6658 w +(code.) 1408 6658 w +(Some) 1747 6658 w +(formats) 2055 6658 w +(imply) 2474 6658 w +(a) 2784 6658 w +(non-fixed) 2883 6658 w +(size.) 3416 6658 w +(For) 3716 6658 w +(example,) 3915 6658 w +(the) 4403 6658 w +10 /LucidaTypewriter f +(i) 4601 6658 w +10 /LucidaSansUnicode00 f +(format) 4716 6658 w +(code) 720 6778 w +(disassembles) 992 6778 w +(an) 1681 6778 w +(instruction) 1839 6778 w +(into) 2402 6778 w +(a) 2632 6778 w +(string.) 2728 6778 w +(On) 3115 6778 w +(a) 3296 6778 w +(68020,) 3392 6778 w +(which) 3780 6778 w +(has) 4102 6778 w +(variable) 4311 6778 w +(length) 4732 6778 w +(instructions:) 720 6898 w +cleartomark +showpage +saveobj restore +%%EndPage: 4 4 +%%Page: 5 5 +/saveobj save def +mark +5 pagesetup +10 /LucidaSansUnicode00 f +(\255 5 \255) 2783 480 w +9 /LucidaTypewriter f +(acid:) 1008 830 w +(p=main\\i) 1398 830 w +(//) 3283 830 w +(p=addr\(main\),) 3478 830 w +(type) 4388 830 w +(INST) 4713 830 w +(acid:) 1008 940 w +(loop) 1398 940 w +(1,5) 1723 940 w +(do) 1983 940 w +(print\(p\\X,) 2178 940 w +(@p++\)) 2893 940 w +(//) 3283 940 w +(disassemble) 3478 940 w +(5) 4258 940 w +(instr's) 4388 940 w +(0x0000222e) 1008 1050 w +(LEA) 1723 1050 w +(0xffffe948\(A7\),A7) 2048 1050 w +(0x00002232) 1008 1160 w +(MOVL) 1723 1160 w +(s+0x4\(A7\),A2) 2048 1160 w +(0x00002236) 1008 1270 w +(PEA) 1723 1270 w +(0x2f\($0\)) 2048 1270 w +(0x0000223a) 1008 1380 w +(MOVL) 1723 1380 w +(A2,-\(A7\)) 2048 1380 w +(0x0000223c) 1008 1490 w +(BSR) 1723 1490 w +(utfrrune) 2048 1490 w +(acid:) 1008 1600 w +10 /LucidaSansUnicode00 f +(Here,) 720 1780 w +10 /LucidaTypewriter f +(main) 1014 1780 w +10 /LucidaSansUnicode00 f +(is) 1337 1780 w +(the) 1452 1780 w +(address) 1642 1780 w +(of) 2057 1780 w +(the) 2191 1780 w +(function) 2382 1780 w +(of) 2819 1780 w +(the) 2953 1780 w +(same) 3144 1780 w +(name) 3435 1780 w +(in) 3737 1780 w +(the) 3864 1780 w +(program) 4055 1780 w +(under) 4507 1780 w +(test.) 4827 1780 w +(The) 720 1900 w +(loop) 949 1900 w +(retrieves) 1211 1900 w +(the) 1678 1900 w +(five) 1881 1900 w +(instructions) 2103 1900 w +(beginning) 2724 1900 w +(at) 3259 1900 w +(that) 3399 1900 w +(address) 3637 1900 w +(and) 4064 1900 w +(then) 4291 1900 w +(prints) 4555 1900 w +(the) 4885 1900 w +(address) 720 2020 w +(and) 1133 2020 w +(the) 1346 2020 w +(assembly) 1534 2020 w +(language) 2017 2020 w +(representation) 2493 2020 w +(of) 3233 2020 w +(each.) 3364 2020 w +(Notice) 3686 2020 w +(that) 4028 2020 w +(the) 4253 2020 w +(stride) 4442 2020 w +(of) 4753 2020 w +(the) 4885 2020 w +(increment) 720 2140 w +(operator) 1241 2140 w +(varies) 1690 2140 w +(with) 2008 2140 w +(the) 2247 2140 w +(size) 2436 2140 w +(of) 2663 2140 w +(the) 2795 2140 w +(instruction:) 2984 2140 w +(the) 3572 2140 w +10 /LucidaTypewriter f +(MOVL) 3761 2140 w +10 /LucidaSansUnicode00 f +(at) 4082 2140 w +10 /LucidaTypewriter f +(0x0000223a) 4207 2140 w +10 /LucidaSansUnicode00 f +(is) 4960 2140 w +(a two byte instruction while all others are four bytes long.) 720 2260 w +(Registers) 970 2416 w +(are) 1470 2416 w +(treated) 1676 2416 w +(as) 2075 2416 w +(normal) 2235 2416 w +(program) 2630 2416 w +(variables) 3101 2416 w +(referenced) 3587 2416 w +(by) 4161 2416 w +(their) 4331 2416 w +(symbolic) 4611 2416 w +(assembler) 720 2536 w +(language) 1253 2536 w +(names.) 1734 2536 w +(When) 2153 2536 w +(a) 2457 2536 w +(process) 2550 2536 w +(stops,) 2962 2536 w +(the) 3294 2536 w +(register) 3486 2536 w +(set) 3896 2536 w +(is) 4077 2536 w +(saved) 4194 2536 w +(by) 4508 2536 w +(the) 4660 2536 w +(ker\255) 4852 2536 w +(nel) 720 2656 w +(at) 908 2656 w +(a) 1041 2656 w +(known) 1137 2656 w +(virtual) 1498 2656 w +(address) 1844 2656 w +(in) 2265 2656 w +(the) 2397 2656 w +(process) 2593 2656 w +(memory) 3008 2656 w +(map.) 3445 2656 w +(The) 3761 2656 w +(Acid) 3983 2656 w +(variables) 4236 2656 w +(associ\255) 4709 2656 w +(ated) 720 2776 w +(with) 966 2776 w +(the) 1205 2776 w +(registers) 1394 2776 w +(point) 1852 2776 w +(to) 2138 2776 w +(the) 2270 2776 w +(saved) 2459 2776 w +(values) 2770 2776 w +(and) 3109 2776 w +(the) 3323 2776 w +10 /LucidaTypewriter f +(*) 3512 2776 w +10 /LucidaSansUnicode00 f +(indirection) 3618 2776 w +(operator) 4172 2776 w +(can) 4621 2776 w +(then) 4823 2776 w +(be used to read) 720 2896 w +(and) 1513 2896 w +(write) 1726 2896 w +(the) 1999 2896 w +(register) 2187 2896 w +(set.) 2593 2896 w +(Since) 2834 2896 w +(the) 3119 2896 w +(registers) 3307 2896 w +(are) 3764 2896 w +(accessed) 3949 2896 w +(via) 4416 2896 w +(Acid) 4585 2896 w +(vari\255) 4830 2896 w +(ables they may be used in arbitrary expressions.) 720 3016 w +9 /LucidaTypewriter f +(acid:) 1008 3186 w +(PC) 1398 3186 w +(//) 3348 3186 w +(addr) 3543 3186 w +(of) 3868 3186 w +(saved) 4063 3186 w +(PC) 4453 3186 w +(0xc0000f60) 1008 3296 w +(acid:) 1008 3406 w +(*PC) 1398 3406 w +(0x0000623c) 1008 3516 w +(//) 3348 3516 w +(contents) 3543 3516 w +(of) 4128 3516 w +(PC) 4323 3516 w +(acid:) 1008 3626 w +(*PC\\a) 1398 3626 w +(main) 1008 3736 w +(acid:) 1008 3846 w +(*R1=10) 1398 3846 w +(//) 3348 3846 w +(modify) 3543 3846 w +(R1) 3998 3846 w +(acid:) 1008 3956 w +(asm\(*PC+4\)) 1398 3956 w +(//) 3348 3956 w +(disassemble) 3543 3956 w +(@) 4323 3956 w +(PC+4) 4453 3956 w +(main+0x4) 1008 4066 w +(0x00006240) 1593 4066 w +(MOVW) 2568 4066 w +(R31,0x0\(R29\)) 3088 4066 w +(main+0x8) 1008 4176 w +(0x00006244) 1593 4176 w +(MOVW) 2568 4176 w +($setR30\(SB\),R30) 3088 4176 w +(main+0x10) 1008 4286 w +(0x0000624c) 1658 4286 w +(MOVW) 2568 4286 w +(R1,_clock\(SB\)) 3088 4286 w +10 /LucidaSansUnicode00 f +(Here,) 720 4466 w +(the) 1058 4466 w +(saved) 1293 4466 w +10 /LucidaTypewriter f +(PC) 1650 4466 w +10 /LucidaSansUnicode00 f +(is) 1874 4466 w +(stored) 2034 4466 w +(at) 2423 4466 w +(address) 2595 4466 w +10 /LucidaTypewriter f +(0xc0000f60) 3055 4466 w +10 /LucidaSansUnicode00 f +(;) 3775 4466 w +(its) 3887 4466 w +(current) 4084 4466 w +(content) 4514 4466 w +(is) 4960 4466 w +10 /LucidaTypewriter f +(0x0000623c) 720 4586 w +10 /LucidaSansUnicode00 f +(.) 1440 4586 w +(The) 1566 4586 w +10 /LucidaSansUnicode20 f +(\030) 1809 4586 w +10 /LucidaTypewriter f +(a) 1841 4586 w +10 /LucidaSansUnicode20 f +(\031) 1913 4586 w +10 /LucidaSansUnicode00 f +(format) 2007 4586 w +(code) 2393 4586 w +(converts) 2686 4586 w +(this) 3159 4586 w +(value) 3399 4586 w +(to) 3714 4586 w +(a) 3873 4586 w +(string) 3989 4586 w +(specifying) 4332 4586 w +(the) 4885 4586 w +(address) 720 4706 w +(as) 1142 4706 w +(an) 1290 4706 w +(offset) 1449 4706 w +(beyond) 1770 4706 w +(the) 2169 4706 w +(nearest) 2367 4706 w +(symbol.) 2768 4706 w +(After) 3224 4706 w +(setting) 3507 4706 w +(the) 3884 4706 w +(value) 4082 4706 w +(of) 4379 4706 w +(register) 4520 4706 w +10 /LucidaTypewriter f +(1) 4936 4706 w +10 /LucidaSansUnicode00 f +(,) 5008 4706 w +(the) 720 4826 w +(example) 915 4826 w +(uses) 1368 4826 w +(the) 1628 4826 w +10 /LucidaTypewriter f +(asm) 1823 4826 w +10 /LucidaSansUnicode00 f +(command) 2079 4826 w +(to) 2597 4826 w +(disassemble) 2735 4826 w +(a) 3372 4826 w +(short) 3467 4826 w +(section) 3759 4826 w +(of) 4146 4826 w +(code) 4283 4826 w +(beginning) 4553 4826 w +(at four bytes beyond the current value of the) 720 4946 w +10 /LucidaTypewriter f +(PC) 2929 4946 w +10 /LucidaSansUnicode00 f +(.) 3073 4946 w +10 /LucidaSans-Demi f +(7.) 720 5186 w +(Process Interface) 873 5186 w +10 /LucidaSansUnicode00 f +(A) 970 5342 w +(program) 1082 5342 w +(executing) 1541 5342 w +(under) 2060 5342 w +(Acid) 2387 5342 w +(is) 2642 5342 w +(monitored) 2766 5342 w +(through) 3313 5342 w +(the) 3744 5342 w +10 /LucidaSans-Italic f +(proc) 3943 5342 w +10 /LucidaSansUnicode00 f +(file) 4203 5342 w +(system) 4398 5342 w +(inter\255) 4782 5342 w +(face) 720 5462 w +(provided) 954 5462 w +(by) 1417 5462 w +(Plan) 1567 5462 w +(9.) 1803 5462 w +(Textual) 1965 5462 w +(messages) 2362 5462 w +(written) 2871 5462 w +(to) 3244 5462 w +(the) 3376 5462 w +10 /LucidaTypewriter f +(ctl) 3565 5462 w +10 /LucidaSansUnicode00 f +(file) 3815 5462 w +(control) 4000 5462 w +(the) 4376 5462 w +(execution) 4565 5462 w +(of) 720 5582 w +(the) 859 5582 w +(process.) 1055 5582 w +(For) 1534 5582 w +(example) 1731 5582 w +(writing) 2185 5582 w +10 /LucidaTypewriter f +(waitstop) 2563 5582 w +10 /LucidaSansUnicode00 f +(to) 3181 5582 w +(the) 3321 5582 w +(control) 3518 5582 w +(file) 3902 5582 w +(causes) 4095 5582 w +(the) 4463 5582 w +(write) 4660 5582 w +(to) 4942 5582 w +(block) 720 5702 w +(until) 1033 5702 w +(the) 1302 5702 w +(target) 1507 5702 w +(process) 1845 5702 w +(enters) 2269 5702 w +(the) 2622 5702 w +(kernel) 2827 5702 w +(and) 3179 5702 w +(is) 3409 5702 w +(stopped.) 3539 5702 w +(When) 4015 5702 w +(the) 4331 5702 w +(process) 4536 5702 w +(is) 4960 5702 w +(stopped) 720 5822 w +(the) 1157 5822 w +(write) 1355 5822 w +(completes.) 1638 5822 w +(The) 2210 5822 w +10 /LucidaTypewriter f +(startstop) 2435 5822 w +10 /LucidaSansUnicode00 f +(message) 3127 5822 w +(starts) 3595 5822 w +(the) 3911 5822 w +(target) 4110 5822 w +(process) 4442 5822 w +(and) 4860 5822 w +(then) 720 5942 w +(does) 979 5942 w +(a) 1252 5942 w +10 /LucidaTypewriter f +(waitstop) 1349 5942 w +10 /LucidaSansUnicode00 f +(action.) 1967 5942 w +(Synchronization) 2368 5942 w +(between) 3185 5942 w +(the) 3633 5942 w +(debugger) 3829 5942 w +(and) 4335 5942 w +(the) 4556 5942 w +(target) 4752 5942 w +(process) 720 6062 w +(is) 1152 6062 w +(determined) 1290 6062 w +(by) 1904 6062 w +(the) 2077 6062 w +(actions) 2290 6062 w +(of) 2694 6062 w +(the) 2850 6062 w +(various) 3063 6062 w +(messages.) 3472 6062 w +(Some) 4037 6062 w +(operate) 4359 6062 w +(asyn\255) 4787 6062 w +(chronously) 720 6182 w +(to) 1299 6182 w +(the) 1444 6182 w +(target) 1646 6182 w +(process) 1981 6182 w +(and) 2402 6182 w +(always) 2629 6182 w +(complete) 2995 6182 w +(immediately,) 3488 6182 w +(others) 4159 6182 w +(block) 4513 6182 w +(until) 4821 6182 w +(the) 720 6302 w +(action) 927 6302 w +(completes.) 1274 6302 w +(The) 1855 6302 w +(asynchronous) 2088 6302 w +(messages) 2811 6302 w +(allow) 3338 6302 w +(Acid) 3641 6302 w +(to) 3905 6302 w +(control) 4055 6302 w +(several) 4449 6302 w +(pro\255) 4842 6302 w +(cesses simultaneously.) 720 6422 w +(The) 970 6578 w +(interpreter) 1201 6578 w +(has) 1770 6578 w +(builtin) 1988 6578 w +(functions) 2350 6578 w +(named) 2853 6578 w +(after) 3233 6578 w +(each) 3510 6578 w +(of) 3785 6578 w +(the) 3934 6578 w +(control) 4140 6578 w +(messages.) 4533 6578 w +(The) 720 6698 w +(functions) 946 6698 w +(take) 1443 6698 w +(a) 1694 6698 w +(process) 1794 6698 w +(id) 2213 6698 w +(as) 2350 6698 w +(argument.) 2500 6698 w +(Any) 3076 6698 w +(time) 3303 6698 w +(a) 3562 6698 w +(control) 3661 6698 w +(message) 4047 6698 w +(causes) 4515 6698 w +(the) 4885 6698 w +(program) 720 6818 w +(to) 1178 6818 w +(execute) 1318 6818 w +(instructions) 1739 6818 w +(the) 2354 6818 w +(interpreter) 2551 6818 w +(performs) 3112 6818 w +(two) 3597 6818 w +(actions) 3814 6818 w +(when) 4202 6818 w +(the) 4501 6818 w +(control) 4698 6818 w +(operation) 720 6938 w +(has) 1221 6938 w +(completed.) 1425 6938 w +(The) 2034 6938 w +(Acid) 2251 6938 w +(variables) 2499 6938 w +(pointing) 2966 6938 w +(at) 3407 6938 w +(the) 3535 6938 w +(register) 3726 6938 w +(set) 4135 6938 w +(are) 4314 6938 w +(fixed) 4501 6938 w +(up) 4782 6938 w +(to) 4942 6938 w +(point) 720 7058 w +(at) 1010 7058 w +(the) 1140 7058 w +(saved) 1333 7058 w +(registers,) 1648 7058 w +(and) 2142 7058 w +(then) 2360 7058 w +(the) 2616 7058 w +(user) 2810 7058 w +(defined) 3059 7058 w +(function) 3464 7058 w +10 /LucidaTypewriter f +(stopped) 3904 7058 w +10 /LucidaSansUnicode00 f +(is) 4447 7058 w +(executed.) 4566 7058 w +(The) 720 7178 w +10 /LucidaTypewriter f +(stopped) 939 7178 w +10 /LucidaSansUnicode00 f +(function) 1481 7178 w +(may) 1920 7178 w +(print) 2158 7178 w +(the) 2427 7178 w +(current) 2619 7178 w +(address,) 3006 7178 w +(line) 3455 7178 w +(of) 3668 7178 w +(source) 3803 7178 w +(or) 4162 7178 w +(instruction) 4301 7178 w +(and) 4860 7178 w +(return to interactive mode. Alternatively) 720 7298 w +(it) 2692 7298 w +(may) 2791 7298 w +(traverse) 3024 7298 w +(a) 3446 7298 w +(complex) 3534 7298 w +(data) 3981 7298 w +(structure,) 4224 7298 w +(gather) 4727 7298 w +cleartomark +showpage +saveobj restore +%%EndPage: 5 5 +%%Page: 6 6 +/saveobj save def +mark +6 pagesetup +10 /LucidaSansUnicode00 f +(\255 6 \255) 2783 480 w +(statistics and then set the program running again.) 720 840 w +(Several Acid variables are maintained by the debugger rather) 970 996 w +(than) 3965 996 w +(the) 4214 996 w +(programmer.) 4402 996 w +(These) 720 1116 w +(variables) 1055 1116 w +(allow) 1533 1116 w +(generic) 1831 1116 w +(Acid) 2234 1116 w +(code) 2492 1116 w +(to) 2769 1116 w +(deal) 2913 1116 w +(with) 3162 1116 w +(the) 3413 1116 w +(current) 3614 1116 w +(process,) 4010 1116 w +(architecture) 4462 1116 w +(specifics) 720 1236 w +(or) 1173 1236 w +(the) 1310 1236 w +(symbol) 1500 1236 w +(table.) 1885 1236 w +(The) 2225 1236 w +(variable) 2442 1236 w +10 /LucidaTypewriter f +(pid) 2858 1236 w +10 /LucidaSansUnicode00 f +(is) 3110 1236 w +(the) 3226 1236 w +(process) 3417 1236 w +(id) 3827 1236 w +(of) 3955 1236 w +(the) 4089 1236 w +(current) 4280 1236 w +(process) 4666 1236 w +(Acid) 720 1356 w +(is) 981 1356 w +(debugging.) 1110 1356 w +(The) 1744 1356 w +(variable) 1974 1356 w +10 /LucidaTypewriter f +(symbols) 2403 1356 w +10 /LucidaSansUnicode00 f +(contains) 2956 1356 w +(a) 3413 1356 w +(list) 3517 1356 w +(of) 3712 1356 w +(lists) 3859 1356 w +(where) 4105 1356 w +(each) 4446 1356 w +(sublist) 4718 1356 w +(contains) 720 1476 w +(the) 1202 1476 w +(symbol) 1431 1476 w +(name,) 1854 1476 w +(its) 2226 1476 w +(type) 2417 1476 w +(and) 2699 1476 w +(the) 2954 1476 w +(value) 3184 1476 w +(of) 3513 1476 w +(the) 3686 1476 w +(symbol.) 3916 1476 w +(The) 4404 1476 w +(variable) 4660 1476 w +10 /LucidaTypewriter f +(registers) 720 1596 w +10 /LucidaSansUnicode00 f +(contains) 1410 1596 w +(a) 1860 1596 w +(list) 1957 1596 w +(of) 2145 1596 w +(the) 2284 1596 w +(machine-specific) 2480 1596 w +(register) 3354 1596 w +(names.) 3768 1596 w +(Global) 4158 1596 w +(symbols) 4508 1596 w +(in) 4949 1596 w +(the) 720 1716 w +(target) 921 1716 w +(program) 1255 1716 w +(can) 1717 1716 w +(be) 1932 1716 w +(referenced) 2098 1716 w +(directly) 2664 1716 w +(by) 3069 1716 w +(name) 3231 1716 w +(from) 3544 1716 w +(Acid.) 3823 1716 w +(Local) 4114 1716 w +(variables) 4410 1716 w +(are) 4888 1716 w +(referenced using the colon operator as) 720 1836 w +10 /LucidaTypewriter f +(function:variable) 2637 1836 w +10 /LucidaSansUnicode00 f +(.) 3861 1836 w +10 /LucidaSans-Demi f +(8.) 720 2076 w +(Source Level Debugging) 873 2076 w +10 /LucidaSansUnicode00 f +(Acid) 970 2232 w +(provides) 1215 2232 w +(several) 1664 2232 w +(builtin) 2037 2232 w +(functions) 2381 2232 w +(to) 2866 2232 w +(manipulate) 2998 2232 w +(source) 3573 2232 w +(code.) 3929 2232 w +(The) 4258 2232 w +10 /LucidaTypewriter f +(file) 4473 2232 w +10 /LucidaSansUnicode00 f +(func\255) 4795 2232 w +(tion) 720 2352 w +(reads) 955 2352 w +(a) 1267 2352 w +(text) 1368 2352 w +(file,) 1605 2352 w +(inserting) 1834 2352 w +(each) 2309 2352 w +(line) 2579 2352 w +(into) 2801 2352 w +(a) 3035 2352 w +(list.) 3135 2352 w +(The) 3390 2352 w +10 /LucidaTypewriter f +(pcfile) 3616 2352 w +10 /LucidaSansUnicode00 f +(and) 4093 2352 w +10 /LucidaTypewriter f +(pcline) 4318 2352 w +10 /LucidaSansUnicode00 f +(func\255) 4795 2352 w +(tions) 720 2472 w +(each) 1007 2472 w +(take) 1278 2472 w +(an) 1532 2472 w +(address) 1697 2472 w +(as) 2125 2472 w +(an) 2279 2472 w +(argument.) 2444 2472 w +(The) 3024 2472 w +(first) 3253 2472 w +(returns) 3496 2472 w +(a) 3894 2472 w +(string) 3997 2472 w +(containing) 4327 2472 w +(the) 4885 2472 w +(name) 720 2592 w +(of) 1021 2592 w +(the) 1154 2592 w +(source) 1344 2592 w +(file) 1701 2592 w +(and) 1887 2592 w +(the) 2102 2592 w +(second) 2292 2592 w +(returns) 2671 2592 w +(an) 3056 2592 w +(integer) 3208 2592 w +(containing) 3586 2592 w +(the) 4131 2592 w +(line) 4321 2592 w +(number) 4531 2592 w +(of) 4942 2592 w +(the source line containing the instruction at the address.) 720 2712 w +9 /LucidaTypewriter f +(acid:) 1008 2882 w +(pcfile\(main\)) 1398 2882 w +(//) 3088 2882 w +(file) 3283 2882 w +(containing) 3608 2882 w +(main) 4323 2882 w +(main.c) 1008 2992 w +(acid:) 1008 3102 w +(pcline\(main\)) 1398 3102 w +(//) 3088 3102 w +(line) 3283 3102 w +(#) 3608 3102 w +(of) 3738 3102 w +(main) 3933 3102 w +(in) 4258 3102 w +(source) 4453 3102 w +(11) 1008 3212 w +(acid:) 1008 3322 w +(file\(pcfile\(main\)\)[pcline\(main\)]) 1398 3322 w +(//) 3608 3322 w +(print) 3803 3322 w +(that) 4193 3322 w +(line) 4518 3322 w +(main\(int) 1008 3432 w +(argc,) 1593 3432 w +(char) 1983 3432 w +(*argv[]\)) 2308 3432 w +(acid:) 1008 3542 w +(src\(*PC\)) 1398 3542 w +(//) 3088 3542 w +(print) 3283 3542 w +(statements) 3673 3542 w +(nearby) 4388 3542 w +(9) 1073 3652 w +(10) 1073 3762 w +(void) 1268 3762 w +(>11) 1008 3872 w +(main\(int) 1268 3872 w +(argc,) 1853 3872 w +(char) 2243 3872 w +(*argv[]\)) 2568 3872 w +(12) 1073 3982 w +({) 1268 3982 w +(13) 1073 4092 w +(int) 1528 4092 w +(a;) 1788 4092 w +10 /LucidaSansUnicode00 f +(In) 720 4272 w +(this) 857 4272 w +(example,) 1082 4272 w +(the) 1573 4272 w +(three) 1774 4272 w +(primitives) 2072 4272 w +(are) 2598 4272 w +(combined) 2796 4272 w +(in) 3320 4272 w +(an) 3457 4272 w +(expression) 3620 4272 w +(to) 4197 4272 w +(print) 4341 4272 w +(a) 4619 4272 w +(line) 4720 4272 w +(of) 4942 4272 w +(source) 720 4392 w +(code) 1081 4392 w +(associated) 1351 4392 w +(with) 1899 4392 w +(an) 2143 4392 w +(address.) 2299 4392 w +(The) 2782 4392 w +10 /LucidaTypewriter f +(src) 3002 4392 w +10 /LucidaSansUnicode00 f +(function) 3256 4392 w +(prints) 3695 4392 w +(a) 4016 4392 w +(few) 4109 4392 w +(lines) 4317 4392 w +(of) 4582 4392 w +(source) 4718 4392 w +(around) 720 4512 w +(the) 1110 4512 w +(address) 1311 4512 w +(supplied) 1737 4512 w +(as) 2199 4512 w +(its) 2351 4512 w +(argument.) 2515 4512 w +(A) 3062 4512 w +(companion) 3178 4512 w +(routine,) 3762 4512 w +10 /LucidaTypewriter f +(Bsrc) 4189 4512 w +10 /LucidaSansUnicode00 f +(,) 4477 4512 w +(communi\255) 4556 4512 w +(cates) 720 4632 w +(with) 1004 4632 w +(the) 1243 4632 w +(external) 1432 4632 w +(editor) 1863 4632 w +10 /LucidaTypewriter f +(sam) 2184 4632 w +10 /LucidaSansUnicode00 f +(.) 2400 4632 w +(Given) 2498 4632 w +(an) 2803 4632 w +(address,) 2954 4632 w +(it) 3400 4632 w +(loads) 3500 4632 w +(the) 3793 4632 w +(corresponding) 3982 4632 w +(source) 4718 4632 w +(file) 720 4752 w +(into) 908 4752 w +(the) 1134 4752 w +(editor) 1326 4752 w +(and) 1650 4752 w +(highlights) 1867 4752 w +(the) 2389 4752 w +(line) 2581 4752 w +(containing) 2794 4752 w +(the) 3341 4752 w +(address.) 3533 4752 w +(This) 4014 4752 w +(simple) 4257 4752 w +(interface) 4616 4752 w +(is) 720 4872 w +(easily) 852 4872 w +(extended) 1176 4872 w +(to) 1682 4872 w +(more) 1832 4872 w +(complex) 2135 4872 w +(functions.) 2601 4872 w +(For) 3169 4872 w +(example,) 3377 4872 w +(the) 3874 4872 w +10 /LucidaTypewriter f +(step) 4081 4872 w +10 /LucidaSansUnicode00 f +(function) 4420 4872 w +(can) 4872 4872 w +(select) 720 4992 w +(the) 1040 4992 w +(current) 1235 4992 w +(file) 1625 4992 w +(and) 1816 4992 w +(line) 2036 4992 w +(in) 2252 4992 w +(the) 2383 4992 w +(editor) 2578 4992 w +(each) 2905 4992 w +(time) 3170 4992 w +(the) 3426 4992 w +(target) 3622 4992 w +(program) 3951 4992 w +(stops,) 4408 4992 w +(giving) 4744 4992 w +(the) 720 5112 w +(user) 912 5112 w +(a) 1159 5112 w +(visual) 1251 5112 w +(trace) 1566 5112 w +(of) 1843 5112 w +(the) 1978 5112 w +(execution) 2169 5112 w +(path) 2680 5112 w +(of) 2933 5112 w +(the) 3067 5112 w +(program.) 3258 5112 w +(A) 3742 5112 w +(more) 3847 5112 w +(complete) 4134 5112 w +(interface) 4616 5112 w +(allowing) 720 5232 w +(two) 1162 5232 w +(way) 1375 5232 w +(communication) 1597 5232 w +(between) 2382 5232 w +(Acid) 2828 5232 w +(and) 3079 5232 w +(the) 3298 5232 w +10 /LucidaTypewriter f +(acme) 3492 5232 w +10 /LucidaSansUnicode00 f +(user) 3819 5232 w +(interface) 4068 5232 w +([Pike93]) 4531 5232 w +(is) 4960 5232 w +(under) 720 5352 w +(construction.) 1040 5352 w +(A) 1713 5352 w +(filter) 1818 5352 w +(between) 2083 5352 w +(the) 2526 5352 w +(debugger) 2717 5352 w +(and) 3218 5352 w +(the) 3434 5352 w +(user) 3625 5352 w +(interface) 3871 5352 w +(provides) 4331 5352 w +(inter\255) 4782 5352 w +(pretation) 720 5472 w +(of) 1198 5472 w +(results) 1333 5472 w +(from) 1697 5472 w +(both) 1966 5472 w +(sides) 2226 5472 w +(of) 2513 5472 w +(the) 2648 5472 w +(interface.) 2840 5472 w +(This) 3333 5472 w +(allows) 3575 5472 w +(the) 3915 5472 w +(programming) 4108 5472 w +(envi\255) 4808 5472 w +(ronment) 720 5592 w +(to) 1184 5592 w +(interact) 1334 5592 w +(with) 1754 5592 w +(the) 2011 5592 w +(debugger) 2218 5592 w +(and) 2735 5592 w +(vice-versa,) 2967 5592 w +(a) 3552 5592 w +(capability) 3659 5592 w +(missing) 4174 5592 w +(from) 4602 5592 w +(the) 4885 5592 w +10 /LucidaTypewriter f +(sam) 720 5712 w +10 /LucidaSansUnicode00 f +(interface.) 981 5712 w +(The) 1514 5712 w +10 /LucidaTypewriter f +(src) 1740 5712 w +10 /LucidaSansUnicode00 f +(and) 2001 5712 w +10 /LucidaTypewriter f +(Bsrc) 2226 5712 w +10 /LucidaSansUnicode00 f +(functions) 2559 5712 w +(are) 3056 5712 w +(both) 3253 5712 w +(written) 3521 5712 w +(in) 3905 5712 w +(Acid) 4041 5712 w +(code) 4298 5712 w +(using) 4574 5712 w +(the) 4885 5712 w +(file) 720 5832 w +(and) 925 5832 w +(line) 1159 5832 w +(primitives.) 1389 5832 w +(Acid) 1987 5832 w +(provides) 2253 5832 w +(library) 2723 5832 w +(functions) 3087 5832 w +(to) 3592 5832 w +(step) 3743 5832 w +(through) 4003 5832 w +(source) 4443 5832 w +(level) 4818 5832 w +(statements) 720 5952 w +(and) 1294 5952 w +(functions.) 1513 5952 w +(Furthermore,) 2036 5952 w +(addresses) 2711 5952 w +(in) 3237 5952 w +(Acid) 3367 5952 w +(expressions) 3618 5952 w +(can) 4239 5952 w +(be) 4446 5952 w +(specified) 4605 5952 w +(by source file and line.) 720 6072 w +(Source code is manipulated in the Acid) 1888 6072 w +10 /LucidaSans-Italic f +(list) 3810 6072 w +10 /LucidaSansUnicode00 f +(data type.) 3987 6072 w +10 /LucidaSans-Demi f +(9.) 720 6312 w +(The Acid Library) 873 6312 w +10 /LucidaSansUnicode00 f +(The) 970 6468 w +(following) 1197 6468 w +(examples) 1690 6468 w +(define) 2200 6468 w +(some) 2549 6468 w +(useful) 2856 6468 w +(commands) 3199 6468 w +(and) 3774 6468 w +(illustrate) 4001 6468 w +(the) 4474 6468 w +(interac\255) 4676 6468 w +(tion of the debugger and the interpreter.) 720 6588 w +cleartomark +showpage +saveobj restore +%%EndPage: 6 6 +%%Page: 7 7 +/saveobj save def +mark +7 pagesetup +10 /LucidaSansUnicode00 f +(\255 7 \255) 2783 480 w +9 /LucidaTypewriter f +(defn) 1008 830 w +(bpset\(addr\)) 1333 830 w +(//) 3738 830 w +(set) 3933 830 w +(breakpoint) 4193 830 w +({) 1008 940 w +(if) 1528 1050 w +(match\(addr,) 1723 1050 w +(bplist\)) 2503 1050 w +(>=) 3023 1050 w +(0) 3218 1050 w +(then) 3348 1050 w +(print\("bkpoint) 2048 1160 w +(already) 3023 1160 w +(set:",) 3543 1160 w +(addr\\a,) 3998 1160 w +("\\n"\);) 4518 1160 w +(else) 1528 1270 w +({) 1853 1270 w +(*fmt\(addr,) 2048 1380 w +(bpfmt\)) 2763 1380 w +(=) 3218 1380 w +(bpinst;) 3348 1380 w +(//) 3998 1380 w +(plant) 4193 1380 w +(it) 4583 1380 w +(bplist) 2048 1490 w +(=) 2503 1490 w +(append) 2633 1490 w +(bplist,) 3088 1490 w +(addr;) 3608 1490 w +(//) 3998 1490 w +(add) 4193 1490 w +(to) 4453 1490 w +(list) 4648 1490 w +(}) 1528 1600 w +(}) 1008 1710 w +10 /LucidaSansUnicode00 f +(The) 720 1890 w +10 /LucidaTypewriter f +(bpset) 943 1890 w +10 /LucidaSansUnicode00 f +(function) 1345 1890 w +(plants) 1788 1890 w +(a) 2127 1890 w +(break) 2224 1890 w +(point) 2539 1890 w +(in) 2833 1890 w +(memory.) 2966 1890 w +(The) 3436 1890 w +(function) 3659 1890 w +(starts) 4103 1890 w +(by) 4418 1890 w +(using) 4576 1890 w +(the) 4885 1890 w +10 /LucidaTypewriter f +(match) 720 2010 w +10 /LucidaSansUnicode00 f +(builtin) 1114 2010 w +(to) 1459 2010 w +(search) 1591 2010 w +(the) 1941 2010 w +(breakpoint) 2130 2010 w +(list) 2689 2010 w +(to) 2869 2010 w +(determine) 3001 2010 w +(if) 3528 2010 w +(a) 3628 2010 w +(breakpoint) 3716 2010 w +(is) 4274 2010 w +(already) 4387 2010 w +(set) 4771 2010 w +(at) 4948 2010 w +(the) 720 2130 w +(address.) 922 2130 w +(The) 1413 2130 w +(indirection) 1641 2130 w +(operator,) 2208 2130 w +(controlled) 2702 2130 w +(by) 3239 2130 w +(the) 3402 2130 w +(format) 3605 2130 w +(code) 3977 2130 w +(returned) 4256 2130 w +(by) 4722 2130 w +(the) 4885 2130 w +10 /LucidaTypewriter f +(fmt) 720 2250 w +10 /LucidaSansUnicode00 f +(primitive,) 983 2250 w +(is) 1491 2250 w +(used) 1618 2250 w +(to) 1897 2250 w +(plant) 2042 2250 w +(the) 2335 2250 w +(breakpoint) 2536 2250 w +(in) 3107 2250 w +(memory.) 3244 2250 w +(The) 3750 2250 w +(variables) 3977 2250 w +10 /LucidaTypewriter f +(bpfmt) 4454 2250 w +10 /LucidaSansUnicode00 f +(and) 4860 2250 w +10 /LucidaTypewriter f +(bpinst) 720 2370 w +10 /LucidaSansUnicode00 f +(are) 1189 2370 w +(Acid) 1378 2370 w +(global) 1627 2370 w +(variables) 1963 2370 w +(containing) 2431 2370 w +(the) 2978 2370 w +(format) 3170 2370 w +(code) 3531 2370 w +(specifying) 3799 2370 w +(the) 4328 2370 w +(size) 4520 2370 w +(of) 4750 2370 w +(the) 4885 2370 w +(breakpoint) 720 2490 w +(instruction) 1287 2490 w +(and) 1851 2490 w +(the) 2073 2490 w +(breakpoint) 2270 2490 w +(instruction) 2837 2490 w +(itself.) 3401 2490 w +(These) 3746 2490 w +(variables) 4075 2490 w +(are) 4547 2490 w +(set) 4740 2490 w +(by) 4925 2490 w +(architecture-dependent) 720 2610 w +(library) 1916 2610 w +(code) 2268 2610 w +(when) 2541 2610 w +(the) 2840 2610 w +(debugger) 3037 2610 w +(first) 3544 2610 w +(attaches) 3781 2610 w +(to) 4227 2610 w +(the) 4367 2610 w +(executing) 4564 2610 w +(image.) 720 2730 w +(Finally) 1148 2730 w +(the) 1527 2730 w +(address) 1751 2730 w +(of) 2200 2730 w +(the) 2367 2730 w +(breakpoint) 2590 2730 w +(is) 3183 2730 w +(appended) 3331 2730 w +(to) 3880 2730 w +(the) 4046 2730 w +(breakpoint) 4269 2730 w +(list,) 4862 2730 w +10 /LucidaTypewriter f +(bplist) 720 2850 w +10 /LucidaSansUnicode00 f +(.) 1152 2850 w +9 /LucidaTypewriter f +(defn) 1008 3020 w +(step\(\)) 1333 3020 w +(//) 3608 3020 w +(single) 3803 3020 w +(step) 4258 3020 w +({) 1008 3130 w +(local) 1528 3240 w +(lst,) 1918 3240 w +(lpl,) 2243 3240 w +(addr,) 2568 3240 w +(bput;) 2958 3240 w +(bput) 1528 3460 w +(=) 1853 3460 w +(0;) 1983 3460 w +(//) 3608 3460 w +(sitting) 3803 3460 w +(on) 4323 3460 w +(bkpoint) 4518 3460 w +(if) 1528 3570 w +(match\(*PC,) 1723 3570 w +(bplist\)) 2438 3570 w +(>=) 2958 3570 w +(0) 3153 3570 w +(then) 3283 3570 w +({) 3608 3570 w +(bput) 2048 3680 w +(=) 2373 3680 w +(fmt\(*PC,) 2503 3680 w +(bpfmt\);) 3088 3680 w +(//) 3608 3680 w +(save) 3803 3680 w +(current) 4128 3680 w +(addr) 4648 3680 w +(*bput) 2048 3790 w +(=) 2438 3790 w +(@bput;) 2568 3790 w +(//) 3608 3790 w +(replace) 3803 3790 w +(it) 4323 3790 w +(}) 1528 3900 w +(lst) 1528 4120 w +(=) 1788 4120 w +(follow\(*PC\);) 1918 4120 w +(//) 3608 4120 w +(get) 3803 4120 w +(follow) 4063 4120 w +(set) 4518 4120 w +(lpl) 1528 4340 w +(=) 1788 4340 w +(lst;) 1918 4340 w +(while) 1528 4450 w +(lpl) 1918 4450 w +(do) 2178 4450 w +({) 2373 4450 w +(//) 3608 4450 w +(place) 3803 4450 w +(breakpoints) 4193 4450 w +(*\(head) 2048 4560 w +(lpl\)) 2503 4560 w +(=) 2828 4560 w +(bpinst;) 2958 4560 w +(lpl) 2048 4670 w +(=) 2308 4670 w +(tail) 2438 4670 w +(lpl;) 2763 4670 w +(}) 1528 4780 w +(startstop\(pid\);) 1528 5000 w +(//) 3608 5000 w +(do) 3803 5000 w +(the) 3998 5000 w +(step) 4258 5000 w +(while) 1528 5220 w +(lst) 1918 5220 w +(do) 2178 5220 w +({) 2373 5220 w +(//) 3608 5220 w +(remove) 3803 5220 w +(breakpoints) 4258 5220 w +(addr) 2048 5330 w +(=) 2373 5330 w +(fmt\(head) 2503 5330 w +(lst,) 3088 5330 w +(bpfmt\);) 3413 5330 w +(*addr) 2048 5440 w +(=) 2438 5440 w +(@addr;) 2568 5440 w +(//) 3608 5440 w +(replace) 3803 5440 w +(instr.) 4323 5440 w +(lst) 2048 5550 w +(=) 2308 5550 w +(tail) 2438 5550 w +(lst;) 2763 5550 w +(}) 1528 5660 w +(if) 1528 5770 w +(bput) 1723 5770 w +(!=) 2048 5770 w +(0) 2243 5770 w +(then) 2373 5770 w +(*bput) 2048 5880 w +(=) 2438 5880 w +(bpinst;) 2568 5880 w +(//) 3608 5880 w +(restore) 3803 5880 w +(breakpoint) 4323 5880 w +(}) 1008 5990 w +10 /LucidaSansUnicode00 f +(The) 720 6170 w +10 /LucidaTypewriter f +(step) 948 6170 w +10 /LucidaSansUnicode00 f +(function) 1283 6170 w +(executes) 1731 6170 w +(a) 2208 6170 w +(single) 2310 6170 w +(assembler) 2646 6170 w +(instruction.) 3188 6170 w +(If) 3822 6170 w +(the) 3936 6170 w +10 /LucidaTypewriter f +(PC) 4139 6170 w +10 /LucidaSansUnicode00 f +(is) 4331 6170 w +(sitting) 4459 6170 w +(on) 4814 6170 w +(a) 4985 6170 w +(breakpoint,) 720 6290 w +(the) 1320 6290 w +(address) 1518 6290 w +(and) 1941 6290 w +(size) 2164 6290 w +(of) 2400 6290 w +(the) 2541 6290 w +(breakpoint) 2739 6290 w +(are) 3307 6290 w +(saved.) 3501 6290 w +(The) 3884 6290 w +(breakpoint) 4107 6290 w +(instruc\255) 4674 6290 w +(tion) 720 6410 w +(is) 948 6410 w +(then) 1067 6410 w +(removed) 1323 6410 w +(using) 1784 6410 w +(the) 2089 6410 w +10 /LucidaTypewriter f +(@) 2284 6410 w +10 /LucidaSansUnicode00 f +(operator) 2396 6410 w +(to) 2851 6410 w +(fetch) 2989 6410 w +10 /LucidaTypewriter f +(bpfmt) 3272 6410 w +10 /LucidaSansUnicode00 f +(bytes) 3672 6410 w +(from) 3971 6410 w +(the) 4243 6410 w +(text) 4438 6410 w +(file) 4669 6410 w +(and) 4860 6410 w +(to) 720 6530 w +(place) 883 6530 w +(it) 1202 6530 w +(into) 1333 6530 w +(the) 1587 6530 w +(memory) 1807 6530 w +(of) 2268 6530 w +(the) 2431 6530 w +(executing) 2651 6530 w +(process) 3192 6530 w +(using) 3631 6530 w +(the) 3961 6530 w +10 /LucidaTypewriter f +(*) 4180 6530 w +10 /LucidaSansUnicode00 f +(operator.) 4316 6530 w +(The) 4859 6530 w +10 /LucidaTypewriter f +(follow) 720 6650 w +10 /LucidaSansUnicode00 f +(function) 1208 6650 w +(is) 1665 6650 w +(an) 1801 6650 w +(Acid) 1974 6650 w +(builtin) 2242 6650 w +(which) 2609 6650 w +(returns) 2946 6650 w +(a) 3352 6650 w +(follow-set:) 3463 6650 w +(a) 4048 6650 w +(list) 4160 6650 w +(of) 4363 6650 w +(instruction) 4518 6650 w +(addresses) 720 6770 w +(which) 1243 6770 w +(could) 1560 6770 w +(be) 1862 6770 w +(executed) 2017 6770 w +(next.) 2495 6770 w +(If) 2811 6770 w +(the) 2913 6770 w +(instruction) 3104 6770 w +(stored) 3661 6770 w +(at) 4005 6770 w +(the) 4132 6770 w +10 /LucidaTypewriter f +(PC) 4322 6770 w +10 /LucidaSansUnicode00 f +(is) 4501 6770 w +(a) 4616 6770 w +(branch) 4706 6770 w +(instruction,) 720 6890 w +(the) 1311 6890 w +(list) 1503 6890 w +(contains) 1686 6890 w +(the) 2131 6890 w +(addresses) 2323 6890 w +(of) 2847 6890 w +(the) 2982 6890 w +(next) 3174 6890 w +(instruction) 3428 6890 w +(and) 3988 6890 w +(the) 4206 6890 w +(branch) 4399 6890 w +(desti\255) 4771 6890 w +(nation;) 720 7010 w +(otherwise,) 1093 7010 w +(it) 1630 7010 w +(contains) 1731 7010 w +(only) 2174 7010 w +(the) 2413 7010 w +(address) 2603 7010 w +(of) 3018 7010 w +(the) 3151 7010 w +(next) 3341 7010 w +(instruction.) 3592 7010 w +(The) 4213 7010 w +(follow-set) 4429 7010 w +(is) 4960 7010 w +(then) 720 7130 w +(used) 981 7130 w +(to) 1257 7130 w +(replace) 1399 7130 w +(each) 1794 7130 w +(possible) 2062 7130 w +(following) 2509 7130 w +(instruction) 3000 7130 w +(with) 3566 7130 w +(a) 3816 7130 w +(breakpoint) 3916 7130 w +(instruction.) 4486 7130 w +(The) 720 7250 w +(original) 942 7250 w +(instructions) 1351 7250 w +(need) 1965 7250 w +(not) 2243 7250 w +(be) 2444 7250 w +(saved;) 2604 7250 w +(they) 2954 7250 w +(remain) 3202 7250 w +(in) 3579 7250 w +(their) 3711 7250 w +(unaltered) 3977 7250 w +(state) 4478 7250 w +(in) 4754 7250 w +(the) 4885 7250 w +cleartomark +showpage +saveobj restore +%%EndPage: 7 7 +%%Page: 8 8 +/saveobj save def +mark +8 pagesetup +10 /LucidaSansUnicode00 f +(\255 8 \255) 2783 480 w +(text) 720 840 w +(file.) 945 840 w +(The) 1194 840 w +10 /LucidaTypewriter f +(startstop) 1409 840 w +10 /LucidaSansUnicode00 f +(builtin) 2091 840 w +(writes) 2436 840 w +(the) 2761 840 w +10 /LucidaSansUnicode20 f +(\030) 2950 840 w +10 /LucidaSansUnicode00 f +(startstop) 2982 840 w +10 /LucidaSansUnicode20 f +(\031) 3415 840 w +10 /LucidaSansUnicode00 f +(message) 3481 840 w +(to) 3939 840 w +(the) 4071 840 w +10 /LucidaSans-Italic f +(proc) 4261 840 w +10 /LucidaSansUnicode00 f +(control) 4512 840 w +(file) 4889 840 w +(for) 720 960 w +(the) 894 960 w +(process) 1083 960 w +(named) 1491 960 w +10 /LucidaTypewriter f +(pid) 1854 960 w +10 /LucidaSansUnicode00 f +(.) 2070 960 w +(The) 2168 960 w +(target) 2383 960 w +(process) 2705 960 w +(executes) 3113 960 w +(until) 3577 960 w +(some) 3830 960 w +(condition) 4125 960 w +(causes) 4614 960 w +(it) 4974 960 w +(to) 720 1080 w +(enter) 875 1080 w +(the) 1184 1080 w +(kernel,) 1396 1080 w +(in) 1787 1080 w +(this) 1935 1080 w +(case,) 2171 1080 w +(the) 2473 1080 w +(execution) 2685 1080 w +(of) 3217 1080 w +(a) 3372 1080 w +(breakpoint.) 3484 1080 w +(When) 4130 1080 w +(the) 4453 1080 w +(process) 4666 1080 w +(blocks,) 720 1200 w +(the) 1113 1200 w +(debugger) 1316 1200 w +(regains) 1829 1200 w +(control) 2233 1200 w +(and) 2623 1200 w +(invokes) 2851 1200 w +(the) 3268 1200 w +(Acid) 3471 1200 w +(library) 3731 1200 w +(function) 4088 1200 w +10 /LucidaTypewriter f +(stopped) 4536 1200 w +10 /LucidaSansUnicode00 f +(which) 720 1320 w +(reports) 1040 1320 w +(the) 1430 1320 w +(address) 1625 1320 w +(and) 2045 1320 w +(cause) 2265 1320 w +(of) 2580 1320 w +(the) 2718 1320 w +(blockage.) 2913 1320 w +(The) 3452 1320 w +10 /LucidaTypewriter f +(startstop) 3673 1320 w +10 /LucidaSansUnicode00 f +(function) 4361 1320 w +(com\255) 4802 1320 w +(pletes) 720 1440 w +(and) 1062 1440 w +(returns) 1292 1440 w +(to) 1692 1440 w +(the) 1840 1440 w +10 /LucidaTypewriter f +(step) 2045 1440 w +10 /LucidaSansUnicode00 f +(function) 2383 1440 w +(where) 2834 1440 w +(the) 3176 1440 w +(follow-set) 3381 1440 w +(is) 3927 1440 w +(used) 4057 1440 w +(to) 4338 1440 w +(replace) 4485 1440 w +(the) 4885 1440 w +(breakpoints) 720 1560 w +(placed) 1335 1560 w +(earlier.) 1691 1560 w +(Finally,) 2101 1560 w +(if) 2482 1560 w +(the) 2587 1560 w +(address) 2781 1560 w +(of) 3200 1560 w +(the) 3337 1560 w +(original) 3531 1560 w +10 /LucidaTypewriter f +(PC) 3939 1560 w +10 /LucidaSansUnicode00 f +(contained) 4123 1560 w +(a) 4639 1560 w +(break\255) 4734 1560 w +(point, it is replaced.) 720 1680 w +(Notice) 970 1836 w +(that) 1312 1836 w +(this) 1537 1836 w +(approach) 1750 1836 w +(to) 2235 1836 w +(process) 2367 1836 w +(control) 2775 1836 w +(is) 3151 1836 w +(inherently) 3265 1836 w +(portable;) 3785 1836 w +(the) 4257 1836 w +(Acid) 4447 1836 w +(code) 4694 1836 w +(is) 4960 1836 w +(shared) 720 1956 w +(by) 1088 1956 w +(the) 1243 1956 w +(debuggers) 1438 1956 w +(for) 1994 1956 w +(all) 2173 1956 w +(architectures.) 2326 1956 w +(Acid) 3059 1956 w +(variables) 3311 1956 w +(and) 3782 1956 w +(builtin) 4001 1956 w +(functions) 4351 1956 w +(pro\255) 4842 1956 w +(vide) 720 2076 w +(a) 964 2076 w +(transparent) 1063 2076 w +(interface) 1667 2076 w +(to) 2135 2076 w +(architecture-dependent) 2278 2076 w +(values) 3477 2076 w +(and) 3827 2076 w +(functions.) 4052 2076 w +(Here) 4613 2076 w +(the) 4885 2076 w +(breakpoint) 720 2196 w +(value) 1297 2196 w +(and) 1603 2196 w +(format) 1835 2196 w +(are) 2211 2196 w +(referenced) 2415 2196 w +(through) 2986 2196 w +(Acid) 3425 2196 w +(variables) 3689 2196 w +(and) 4171 2196 w +(the) 4402 2196 w +10 /LucidaTypewriter f +(follow) 4608 2196 w +10 /LucidaSansUnicode00 f +(primitive masks the differences in the underlying instruction set.) 720 2316 w +(The) 970 2472 w +10 /LucidaTypewriter f +(next) 1196 2472 w +10 /LucidaSansUnicode00 f +(function,) 1529 2472 w +(similar) 2007 2472 w +(to) 2379 2472 w +(the) 2522 2472 w +10 /LucidaSans-Italic f +(dbx) 2722 2472 w +10 /LucidaSansUnicode00 f +(command) 2943 2472 w +(of) 3466 2472 w +(the) 3609 2472 w +(same) 3809 2472 w +(name,) 4109 2472 w +(is) 4452 2472 w +(a) 4577 2472 w +(simpler) 4678 2472 w +(example.) 720 2592 w +(This) 1232 2592 w +(function) 1472 2592 w +(steps) 1908 2592 w +(through) 2200 2592 w +(a) 2621 2592 w +(single) 2710 2592 w +(source) 3033 2592 w +(statement) 3389 2592 w +(but) 3907 2592 w +(steps) 4103 2592 w +(over) 4395 2592 w +(function) 4639 2592 w +(calls.) 720 2712 w +9 /LucidaTypewriter f +(defn) 1008 2882 w +(next\(\)) 1333 2882 w +({) 1008 2992 w +(local) 1528 3102 w +(sp,) 1918 3102 w +(bound;) 2178 3102 w +(sp) 1528 3322 w +(=) 1723 3322 w +(*SP;) 1853 3322 w +(//) 3608 3322 w +(save) 3803 3322 w +(starting) 4128 3322 w +(SP) 4713 3322 w +(bound) 1528 3432 w +(=) 1918 3432 w +(fnbound\(*PC\);) 2048 3432 w +(//) 3608 3432 w +(begin) 3803 3432 w +(&) 4193 3432 w +(end) 4323 3432 w +(of) 4583 3432 w +(fn.) 4778 3432 w +(stmnt\(\);) 1528 3542 w +(//) 3608 3542 w +(step) 3803 3542 w +(1) 4128 3542 w +(statement) 4258 3542 w +(pc) 1528 3652 w +(=) 1723 3652 w +(*PC;) 1853 3652 w +(if) 1528 3762 w +(pc) 1723 3762 w +(>=) 1918 3762 w +(bound[0]) 2113 3762 w +(&&) 2698 3762 w +(pc) 2893 3762 w +(<) 3088 3762 w +(bound[1]) 3218 3762 w +(then) 3803 3762 w +(return) 2048 3872 w +({};) 2503 3872 w +(while) 1528 4092 w +(\(pcbound[1]\)) 2958 4092 w +(&&) 3803 4092 w +(sp>=*SP) 3998 4092 w +(do) 4518 4092 w +({) 4713 4092 w +(step\(\);) 2048 4202 w +(pc) 2048 4312 w +(=) 2243 4312 w +(*PC;) 2373 4312 w +(}) 1528 4422 w +(src\(*PC\);) 1528 4532 w +(}) 1008 4642 w +10 /LucidaSansUnicode00 f +(The) 720 4822 w +10 /LucidaTypewriter f +(next) 937 4822 w +10 /LucidaSansUnicode00 f +(function) 1261 4822 w +(starts) 1698 4822 w +(by) 2006 4822 w +(saving) 2157 4822 w +(the) 2504 4822 w +(current) 2695 4822 w +(stack) 3082 4822 w +(pointer) 3371 4822 w +(in) 3757 4822 w +(a) 3885 4822 w +(local) 3977 4822 w +(variable.) 4239 4822 w +(It) 4720 4822 w +(then) 4823 4822 w +(uses) 720 4942 w +(the) 989 4942 w +(Acid) 1193 4942 w +(library) 1454 4942 w +(function) 1813 4942 w +10 /LucidaTypewriter f +(fnbound) 2263 4942 w +10 /LucidaSansUnicode00 f +(to) 2816 4942 w +(return) 2963 4942 w +(the) 3310 4942 w +(addresses) 3513 4942 w +(of) 4048 4942 w +(the) 4194 4942 w +(first) 4397 4942 w +(and) 4640 4942 w +(last) 4868 4942 w +(instructions) 720 5062 w +(in) 1345 5062 w +(the) 1488 5062 w +(current) 1695 5062 w +(function) 2097 5062 w +(in) 2550 5062 w +(a) 2693 5062 w +(list.) 2800 5062 w +(The) 3062 5062 w +10 /LucidaTypewriter f +(stmnt) 3295 5062 w +10 /LucidaSansUnicode00 f +(function) 3707 5062 w +(executes) 4160 5062 w +(a) 4643 5062 w +(single) 4751 5062 w +(source) 720 5182 w +(statement) 1081 5182 w +(and) 1603 5182 w +(then) 1821 5182 w +(uses) 2076 5182 w +10 /LucidaTypewriter f +(src) 2334 5182 w +10 /LucidaSansUnicode00 f +(to) 2588 5182 w +(print) 2724 5182 w +(a) 2994 5182 w +(few) 3087 5182 w +(lines) 3295 5182 w +(of) 3560 5182 w +(source) 3696 5182 w +(around) 4056 5182 w +(the) 4438 5182 w +(new) 4631 5182 w +10 /LucidaTypewriter f +(PC) 4864 5182 w +10 /LucidaSansUnicode00 f +(.) 5008 5182 w +(If) 720 5302 w +(the) 833 5302 w +(new) 1035 5302 w +(value) 1277 5302 w +(of) 1578 5302 w +(the) 1723 5302 w +10 /LucidaTypewriter f +(PC) 1925 5302 w +10 /LucidaSansUnicode00 f +(remains) 2117 5302 w +(in) 2552 5302 w +(the) 2691 5302 w +(current) 2894 5302 w +(function,) 3292 5302 w +10 /LucidaTypewriter f +(next) 3773 5302 w +10 /LucidaSansUnicode00 f +(returns.) 4109 5302 w +(When) 4571 5302 w +(the) 4885 5302 w +(executed) 720 5422 w +(statement) 1204 5422 w +(is) 1730 5422 w +(a) 1852 5422 w +(function) 1949 5422 w +(call) 2392 5422 w +(or) 2597 5422 w +(a) 2740 5422 w +(return) 2836 5422 w +(from) 3176 5422 w +(a) 3449 5422 w +(function,) 3545 5422 w +(the) 4019 5422 w +(new) 4215 5422 w +(value) 4451 5422 w +(of) 4746 5422 w +(the) 4885 5422 w +10 /LucidaTypewriter f +(PC) 720 5542 w +10 /LucidaSansUnicode00 f +(is) 910 5542 w +(outside) 1036 5542 w +(the) 1441 5542 w +(bounds) 1642 5542 w +(calculated) 2050 5542 w +(by) 2584 5542 w +10 /LucidaTypewriter f +(fnbound) 2745 5542 w +10 /LucidaSansUnicode00 f +(and) 3295 5542 w +(the) 3521 5542 w +(test) 3722 5542 w +(of) 3949 5542 w +(the) 4093 5542 w +10 /LucidaTypewriter f +(while) 4294 5542 w +10 /LucidaSansUnicode00 f +(loop) 4700 5542 w +(is) 4960 5542 w +(evaluated.) 720 5662 w +(If) 1292 5662 w +(the) 1400 5662 w +(statement) 1597 5662 w +(was) 2123 5662 w +(a) 2348 5662 w +(return,) 2445 5662 w +(the) 2818 5662 w +(new) 3015 5662 w +(value) 3252 5662 w +(of) 3548 5662 w +(the) 3688 5662 w +(stack) 3885 5662 w +(pointer) 4179 5662 w +(is) 4570 5662 w +(greater) 4692 5662 w +(than) 720 5782 w +(the) 976 5782 w +(original) 1171 5782 w +(value) 1579 5782 w +(and) 1874 5782 w +(the) 2095 5782 w +(loop) 2291 5782 w +(completes) 2546 5782 w +(without) 3084 5782 w +(execution.) 3490 5782 w +(Otherwise,) 4070 5782 w +(the) 4630 5782 w +(loop) 4826 5782 w +(is) 720 5902 w +(entered) 835 5902 w +(and) 1241 5902 w +(instructions) 1456 5902 w +(are) 2064 5902 w +(continually) 2251 5902 w +(executed) 2814 5902 w +(until) 3290 5902 w +(the) 3543 5902 w +(value) 3732 5902 w +(of) 4020 5902 w +(the) 4152 5902 w +10 /LucidaTypewriter f +(PC) 4341 5902 w +10 /LucidaSansUnicode00 f +(is) 4519 5902 w +(between) 4633 5902 w +(the) 720 6022 w +(bounds) 911 6022 w +(calculated) 1309 6022 w +(earlier.) 1834 6022 w +(At) 2242 6022 w +(that) 2385 6022 w +(point,) 2613 6022 w +(execution) 2934 6022 w +(ceases) 3446 6022 w +(and) 3803 6022 w +(a) 4020 6022 w +(few) 4112 6022 w +(lines) 4319 6022 w +(of) 4583 6022 w +(source) 4718 6022 w +(in the vicinity of the) 720 6142 w +10 /LucidaTypewriter f +(PC) 1720 6142 w +10 /LucidaSansUnicode00 f +(are printed.) 1896 6142 w +(Acid) 970 6298 w +(provides) 1223 6298 w +(concise) 1680 6298 w +(and) 2082 6298 w +(elegant) 2303 6298 w +(expression) 2701 6298 w +(for) 3273 6298 w +(control) 3453 6298 w +(and) 3836 6298 w +(manipulation) 4057 6298 w +(of) 4735 6298 w +(tar\255) 4874 6298 w +(get) 720 6418 w +(programs.) 923 6418 w +(These) 1469 6418 w +(examples) 1804 6418 w +(demonstrate) 2315 6418 w +(how) 2974 6418 w +(a) 3221 6418 w +(few) 3323 6418 w +(well-chosen) 3540 6418 w +(primitives) 4179 6418 w +(can) 4706 6418 w +(be) 4921 6418 w +(combined to create a rich debugging environment.) 720 6538 w +10 /LucidaSans-Demi f +(10.) 720 6778 w +(Dealing With Multiple Architectures) 937 6778 w +10 /LucidaSansUnicode00 f +(A) 970 6934 w +(single) 1072 6934 w +(binary) 1394 6934 w +(of) 1729 6934 w +(Acid) 1861 6934 w +(may) 2107 6934 w +(be) 2341 6934 w +(used) 2494 6934 w +(to) 2760 6934 w +(debug) 2892 6934 w +(a) 3232 6934 w +(program) 3321 6934 w +(running) 3771 6934 w +(on) 4185 6934 w +(any) 4342 6934 w +(of) 4545 6934 w +(the) 4677 6934 w +(five) 4866 6934 w +(processor) 720 7054 w +(architectures) 1244 7054 w +(supported) 1921 7054 w +(by) 2466 7054 w +(Plan) 2629 7054 w +(9.) 2878 7054 w +(For) 3053 7054 w +(example,) 3257 7054 w +(Plan) 3749 7054 w +(9) 3997 7054 w +(allows) 4107 7054 w +(a) 4456 7054 w +(user) 4558 7054 w +(on) 4815 7054 w +(a) 4985 7054 w +(MIPS) 720 7174 w +(to) 984 7174 w +(import) 1122 7174 w +(the) 1486 7174 w +10 /LucidaSans-Italic f +(proc) 1681 7174 w +10 /LucidaSansUnicode00 f +(file) 1938 7174 w +(system) 2130 7174 w +(from) 2511 7174 w +(an) 2784 7174 w +(i486-based) 2942 7174 w +(PC) 3547 7174 w +(and) 3712 7174 w +(remotely) 3933 7174 w +(debug) 4399 7174 w +(a) 4746 7174 w +(pro\255) 4842 7174 w +(gram executing on that processor.) 720 7294 w +cleartomark +showpage +saveobj restore +%%EndPage: 8 8 +%%Page: 9 9 +/saveobj save def +mark +9 pagesetup +10 /LucidaSansUnicode00 f +(\255 9 \255) 2783 480 w +(Two) 970 840 w +(levels) 1219 840 w +(of) 1540 840 w +(abstraction) 1686 840 w +(provide) 2276 840 w +(this) 2689 840 w +(architecture) 2917 840 w +(independence.) 3544 840 w +(On) 4336 840 w +(the) 4525 840 w +(lowest) 4729 840 w +(level,) 720 960 w +(a) 1011 960 w +(Plan) 1103 960 w +(9) 1341 960 w +(library) 1441 960 w +(supplies) 1788 960 w +(functions) 2229 960 w +(to) 2718 960 w +(decode) 2853 960 w +(the) 3240 960 w +(file) 3432 960 w +(header) 3620 960 w +(of) 3990 960 w +(the) 4125 960 w +(program) 4316 960 w +(being) 4768 960 w +(debugged) 720 1080 w +(and) 1251 1080 w +(select) 1475 1080 w +(a) 1799 1080 w +(table) 1898 1080 w +(of) 2182 1080 w +(system) 2324 1080 w +(parameters) 2708 1080 w +(and) 3300 1080 w +(a) 3525 1080 w +(jump) 3625 1080 w +(vector) 3918 1080 w +(of) 4261 1080 w +(architecture-) 4404 1080 w +(dependent) 720 1200 w +(functions) 1291 1200 w +(based) 1796 1200 w +(on) 2136 1200 w +(the) 2311 1200 w +(magic) 2518 1200 w +(number.) 2860 1200 w +(Among) 3353 1200 w +(these) 3752 1200 w +(functions) 4066 1200 w +(are) 4570 1200 w +(byte-) 4774 1200 w +(order-independent) 720 1320 w +(access) 1696 1320 w +(to) 2059 1320 w +(memory) 2205 1320 w +(and) 2649 1320 w +(text) 2877 1320 w +(files,) 3116 1320 w +(stack) 3398 1320 w +(manipulation,) 3698 1320 w +(disassembly,) 4415 1320 w +(and) 720 1440 w +(floating) 935 1440 w +(point) 1342 1440 w +(number) 1629 1440 w +(interpretation.) 2040 1440 w +(The) 2804 1440 w +(second) 3019 1440 w +(level) 3397 1440 w +(of) 3653 1440 w +(abstraction) 3785 1440 w +(is) 4361 1440 w +(supplied) 4475 1440 w +(by) 4925 1440 w +(Acid.) 720 1560 w +(It) 1042 1560 w +(consists) 1154 1560 w +(of) 1593 1560 w +(primitives) 1737 1560 w +(and) 2263 1560 w +(approximately) 2489 1560 w +(200) 3231 1560 w +(lines) 3467 1560 w +(of) 3741 1560 w +(architecture-dependent) 3886 1560 w +(Acid) 720 1680 w +(library) 985 1680 w +(code) 1348 1680 w +(that) 1632 1680 w +(interface) 1876 1680 w +(the) 2353 1680 w +(interpreter) 2561 1680 w +(to) 3133 1680 w +(the) 3284 1680 w +(architecture-dependent) 3492 1680 w +(library.) 4698 1680 w +(This) 720 1800 w +(layer) 977 1800 w +(performs) 1262 1800 w +(functions) 1757 1800 w +(such) 2261 1800 w +(as) 2539 1800 w +(mapping) 2697 1800 w +(register) 3176 1800 w +(names) 3602 1800 w +(to) 3972 1800 w +(memory) 4123 1800 w +(locations,) 4572 1800 w +(supplying) 720 1920 w +(breakpoint) 1239 1920 w +(values) 1810 1920 w +(and) 2161 1920 w +(sizes,) 2387 1920 w +(and) 2709 1920 w +(converting) 2935 1920 w +(processor) 3494 1920 w +(specific) 4016 1920 w +(data) 4429 1920 w +(to) 4685 1920 w +(Acid) 4828 1920 w +(data types.) 720 2040 w +(An example of the latter is the) 1317 2040 w +(stack) 2829 2040 w +(trace) 3114 2040 w +(function) 3387 2040 w +10 /LucidaTypewriter f +(strace) 3821 2040 w +10 /LucidaSansUnicode00 f +(,) 4253 2040 w +(which) 4318 2040 w +(uses) 4632 2040 w +(the) 4885 2040 w +(stack) 720 2160 w +(traversal) 1009 2160 w +(functions) 1463 2160 w +(in) 1952 2160 w +(the) 2080 2160 w +(architecture-dependent) 2272 2160 w +(library) 3463 2160 w +(to) 3810 2160 w +(construct) 3945 2160 w +(a) 4435 2160 w +(list) 4527 2160 w +(of) 4709 2160 w +(lists) 4843 2160 w +(describing) 720 2280 w +(the) 1270 2280 w +(context) 1468 2280 w +(of) 1877 2280 w +(a) 2019 2280 w +(process.) 2118 2280 w +(The) 2600 2280 w +(first) 2825 2280 w +(level) 3064 2280 w +(of) 3330 2280 w +(list) 3472 2280 w +(selects) 3662 2280 w +(each) 4037 2280 w +(function) 4305 2280 w +(in) 4750 2280 w +(the) 4885 2280 w +(trace;) 720 2400 w +(subordinate) 1032 2400 w +(lists) 1652 2400 w +(contain) 1889 2400 w +(the) 2286 2400 w +(names) 2481 2400 w +(and) 2838 2400 w +(values) 3058 2400 w +(of) 3402 2400 w +(parameters) 3539 2400 w +(and) 4126 2400 w +(local) 4345 2400 w +(variables) 4609 2400 w +(of) 720 2520 w +(the) 852 2520 w +(functions.) 1041 2520 w +(Acid) 1591 2520 w +(commands) 1837 2520 w +(and) 2401 2520 w +(library) 2616 2520 w +(functions) 2961 2520 w +(that) 3448 2520 w +(manipulate) 3674 2520 w +(and) 4250 2520 w +(display) 4465 2520 w +(pro\255) 4842 2520 w +(cess) 720 2640 w +(state) 981 2640 w +(information) 1269 2640 w +(operate) 1887 2640 w +(on) 2307 2640 w +(the) 2481 2640 w +(list) 2687 2640 w +(representation) 2884 2640 w +(and) 3642 2640 w +(are) 3873 2640 w +(independent) 4076 2640 w +(of) 4736 2640 w +(the) 4885 2640 w +(underlying architecture.) 720 2760 w +10 /LucidaSans-Demi f +(11.) 720 3000 w +(Alef Runtime) 937 3000 w +10 /LucidaSansUnicode00 f +(Alef) 970 3156 w +(is) 1199 3156 w +(a) 1317 3156 w +(concurrent) 1410 3156 w +(programming) 1972 3156 w +(language,) 2672 3156 w +(designed) 3185 3156 w +(specifically) 3665 3156 w +(for) 4235 3156 w +(systems) 4412 3156 w +(pro\255) 4842 3156 w +(gramming,) 720 3276 w +(which) 1290 3276 w +(supports) 1612 3276 w +(both) 2082 3276 w +(shared) 2346 3276 w +(variable) 2715 3276 w +(and) 3136 3276 w +(message) 3356 3276 w +(passing) 3820 3276 w +(paradigms.) 4233 3276 w +(Alef) 4849 3276 w +(borrows) 720 3396 w +(the) 1156 3396 w +(C) 1352 3396 w +(expression) 1462 3396 w +(syntax) 2034 3396 w +(but) 2393 3396 w +(implements) 2596 3396 w +(a) 3207 3396 w +(substantially) 3304 3396 w +(different) 3958 3396 w +(type) 4418 3396 w +(system.) 4668 3396 w +(The) 720 3516 w +(language) 939 3516 w +(provides) 1420 3516 w +(a) 1874 3516 w +(rich) 1967 3516 w +(set) 2188 3516 w +(of) 2370 3516 w +(exception) 2506 3516 w +(handling,) 3020 3516 w +(process) 3514 3516 w +(management,) 3925 3516 w +(and) 4625 3516 w +(syn\255) 4842 3516 w +(chronization) 720 3636 w +(primitives,) 1371 3636 w +(which) 1927 3636 w +(rely) 2252 3636 w +(on) 2474 3636 w +(a) 2641 3636 w +(runtime) 2740 3636 w +(system.) 3164 3636 w +(Alef) 3612 3636 w +(program) 3847 3636 w +(bugs) 4307 3636 w +(are) 4590 3636 w +(often) 4787 3636 w +(deadlocks,) 720 3756 w +(synchronization) 1300 3756 w +(failures,) 2133 3756 w +(or) 2586 3756 w +(non-termination) 2749 3756 w +(caused) 3615 3756 w +(by) 4013 3756 w +(locks) 4188 3756 w +(being) 4498 3756 w +(held) 4830 3756 w +(incorrectly.) 720 3876 w +(In) 1341 3876 w +(such) 1479 3876 w +(cases,) 1753 3876 w +(a) 2097 3876 w +(process) 2200 3876 w +(stalls) 2622 3876 w +(deep) 2922 3876 w +(in) 3208 3876 w +(the) 3347 3876 w +(runtime) 3550 3876 w +(code) 3978 3876 w +(and) 4257 3876 w +(it) 4485 3876 w +(is) 4599 3876 w +(clearly) 4727 3876 w +(unreasonable) 720 3996 w +(to) 1421 3996 w +(expect) 1567 3996 w +(a) 1939 3996 w +(programmer) 2042 3996 w +(using) 2696 3996 w +(the) 3010 3996 w +(language) 3213 3996 w +(to) 3704 3996 w +(understand) 3850 3996 w +(the) 4450 3996 w +(detailed) 4652 3996 w +(internal semantics of the runtime support functions.) 720 4116 w +(Instead,) 970 4272 w +(there) 1389 4272 w +(is) 1675 4272 w +(an) 1789 4272 w +(Alef) 1940 4272 w +(support) 2165 4272 w +(library,) 2577 4272 w +(coded) 2953 4272 w +(in) 3281 4272 w +(Acid,) 3406 4272 w +(that) 3684 4272 w +(allows) 3909 4272 w +(the) 4245 4272 w +(programmer) 4434 4272 w +(to) 720 4392 w +(interpret) 861 4392 w +(the) 1326 4392 w +(program) 1524 4392 w +(state) 1983 4392 w +(in) 2262 4392 w +(terms) 2396 4392 w +(of) 2717 4392 w +(Alef) 2858 4392 w +(operations.) 3092 4392 w +(Consider) 3715 4392 w +(the) 4190 4392 w +(example) 4388 4392 w +(of) 4844 4392 w +(a) 4985 4392 w +(multi-process) 720 4512 w +(program) 1445 4512 w +(stalling) 1904 4512 w +(because) 2301 4512 w +(of) 2738 4512 w +(improper) 2879 4512 w +(synchronization.) 3369 4512 w +(A) 4249 4512 w +(stack) 4362 4512 w +(trace) 4658 4512 w +(of) 4942 4512 w +(the) 720 4632 w +(program) 916 4632 w +(indicates) 1373 4632 w +(that) 1847 4632 w +(it) 2078 4632 w +(is) 2184 4632 w +(waiting) 2304 4632 w +(for) 2695 4632 w +(an) 2874 4632 w +(event) 3031 4632 w +(in) 3334 4632 w +(some) 3465 4632 w +(obscure) 3766 4632 w +(Alef) 4191 4632 w +(runtime) 4422 4632 w +(syn\255) 4842 4632 w +(chronization) 720 4752 w +(function.) 1377 4752 w +(The) 1892 4752 w +(function) 2123 4752 w +(itself) 2574 4752 w +(is) 2863 4752 w +(irrelevant) 2993 4752 w +(to) 3501 4752 w +(the) 3649 4752 w +(programmer;) 3854 4752 w +(of) 4543 4752 w +(greater) 4692 4752 w +(importance) 720 4872 w +(is) 1301 4872 w +(the) 1414 4872 w +(identity) 1602 4872 w +(of) 2000 4872 w +(the) 2131 4872 w +(unfulfilled) 2319 4872 w +(event.) 2847 4872 w +(Commands) 3207 4872 w +(in the Alef support library) 3787 4872 w +(decode) 720 4992 w +(the) 1107 4992 w +(runtime) 1299 4992 w +(data) 1716 4992 w +(structures) 1964 4992 w +(and) 2491 4992 w +(program) 2709 4992 w +(state) 3163 4992 w +(to) 3437 4992 w +(report) 3573 4992 w +(the) 3910 4992 w +(cause) 4103 4992 w +(of) 4416 4992 w +(the) 4552 4992 w +(block\255) 4745 4992 w +(age) 720 5112 w +(in) 939 5112 w +(terms) 1076 5112 w +(of) 1400 5112 w +(the) 1544 5112 w +(high-level) 1745 5112 w +(operations) 2286 5112 w +(available) 2848 5112 w +(to) 3317 5112 w +(the) 3461 5112 w +(Alef) 3662 5112 w +(programmer.) 3898 5112 w +(Here,) 4581 5112 w +(the) 4885 5112 w +(Acid) 720 5232 w +(language) 980 5232 w +(acts) 1471 5232 w +(as) 1713 5232 w +(a) 1867 5232 w +(communications) 1970 5232 w +(medium) 2815 5232 w +(between) 3260 5232 w +(Alef) 3716 5232 w +(implementer) 3956 5232 w +(and) 4620 5232 w +(Alef) 4849 5232 w +(user.) 720 5352 w +10 /LucidaSans-Demi f +(12.) 720 5592 w +(Parallel Debugging) 937 5592 w +10 /LucidaSansUnicode00 f +(The) 970 5748 w +(central) 1222 5748 w +(issue) 1624 5748 w +(in) 1944 5748 w +(parallel) 2106 5748 w +(debugging) 2534 5748 w +(is) 3126 5748 w +(how) 3277 5748 w +(the) 3548 5748 w +(debugger) 3774 5748 w +(is) 4310 5748 w +(multiplexed) 4462 5748 w +(between) 720 5868 w +(the) 1163 5868 w +(processes) 1354 5868 w +(comprising) 1871 5868 w +(the) 2449 5868 w +(program.) 2640 5868 w +(Acid) 3156 5868 w +(has) 3404 5868 w +(no) 3608 5868 w +(intrinsic) 3767 5868 w +(model) 4194 5868 w +(of) 4532 5868 w +(process) 4666 5868 w +(partitioning;) 720 5988 w +(it) 1362 5988 w +(only) 1471 5988 w +(assumes) 1718 5988 w +(that) 2180 5988 w +(parallel) 2414 5988 w +(programs) 2815 5988 w +(share) 3326 5988 w +(a) 3635 5988 w +(symbol) 3734 5988 w +(table,) 4127 5988 w +(though) 4443 5988 w +(they) 4833 5988 w +(need) 720 6108 w +(not) 1001 6108 w +(share) 1205 6108 w +(memory.) 1514 6108 w +(The) 2018 6108 w +10 /LucidaTypewriter f +(setproc) 2243 6108 w +10 /LucidaSansUnicode00 f +(primitive) 2791 6108 w +(attaches) 3264 6108 w +(the) 3712 6108 w +(debugger) 3911 6108 w +(to) 4420 6108 w +(a) 4562 6108 w +(running) 4660 6108 w +(process) 720 6228 w +(associated) 1132 6228 w +(with) 1680 6228 w +(the) 1924 6228 w +(process) 2118 6228 w +(ID) 2531 6228 w +(supplied) 2674 6228 w +(as) 3129 6228 w +(its) 3274 6228 w +(argument) 3430 6228 w +(and) 3937 6228 w +(assigns) 4156 6228 w +(that) 4556 6228 w +(value) 4786 6228 w +(to) 720 6348 w +(the) 872 6348 w +(global) 1081 6348 w +(variable) 1434 6348 w +10 /LucidaTypewriter f +(pid) 1867 6348 w +10 /LucidaSansUnicode00 f +(,) 2083 6348 w +(thereby) 2168 6348 w +(allowing) 2588 6348 w +(simple) 3045 6348 w +(rotation) 3419 6348 w +(among) 3855 6348 w +(a) 4241 6348 w +(group) 4349 6348 w +(of) 4691 6348 w +(pro\255) 4842 6348 w +(cesses.) 720 6468 w +(Further,) 1146 6468 w +(the) 1577 6468 w +(stack) 1778 6468 w +(trace) 2076 6468 w +(primitive) 2362 6468 w +(is) 2837 6468 w +(driven) 2963 6468 w +(by) 3312 6468 w +(parameters) 3473 6468 w +(specifying) 4067 6468 w +(a) 4605 6468 w +(unique) 4706 6468 w +(process) 720 6588 w +(context,) 1130 6588 w +(so) 1563 6588 w +(it) 1711 6588 w +(is) 1813 6588 w +(possible) 1929 6588 w +(to) 2368 6588 w +(examine) 2502 6588 w +(the) 2950 6588 w +(state) 3141 6588 w +(of) 3413 6588 w +(cooperating) 3546 6588 w +(processes) 4159 6588 w +(without) 4675 6588 w +(switching) 720 6708 w +(the) 1234 6708 w +(debugger) 1443 6708 w +(focus) 1962 6708 w +(from) 2278 6708 w +(the) 2565 6708 w +(process) 2775 6708 w +(of) 3204 6708 w +(interest.) 3357 6708 w +(Since) 3845 6708 w +(Acid) 4152 6708 w +(is) 4419 6708 w +(inherently) 4554 6708 w +(extensible) 720 6828 w +(and) 1255 6828 w +(capable) 1470 6828 w +(of) 1877 6828 w +(dynamic) 2009 6828 w +(interaction) 2448 6828 w +(with) 3002 6828 w +(subordinate) 3241 6828 w +(processes,) 3855 6828 w +(the) 4402 6828 w +(program\255) 4591 6828 w +(mer) 720 6948 w +(can) 944 6948 w +(define) 1146 6948 w +(Acid) 1483 6948 w +(commands) 1729 6948 w +(to) 2292 6948 w +(detect) 2424 6948 w +(and) 2758 6948 w +(control) 2972 6948 w +(complex) 3348 6948 w +(interactions) 3796 6948 w +(between) 4401 6948 w +(pro\255) 4842 6948 w +(cesses.) 720 7068 w +(In) 1141 7068 w +(short,) 1273 7068 w +(the) 1598 7068 w +(programmer) 1794 7068 w +(is) 2441 7068 w +(free) 2562 7068 w +(to) 2793 7068 w +(specify) 2932 7068 w +(how) 3312 7068 w +(the) 3553 7068 w +(debugger) 3749 7068 w +(reacts) 4255 7068 w +(to) 4587 7068 w +(events) 4726 7068 w +(generated in specific threads of the program.) 720 7188 w +cleartomark +showpage +saveobj restore +%%EndPage: 9 9 +%%Page: 10 10 +/saveobj save def +mark +10 pagesetup +10 /LucidaSansUnicode00 f +(\255 10 \255) 2752 480 w +(The) 970 840 w +(support) 1195 840 w +(for) 1617 840 w +(parallel) 1800 840 w +(debugging) 2201 840 w +(in) 2766 840 w +(Acid) 2901 840 w +(depends) 3157 840 w +(on) 3615 840 w +(a) 3782 840 w +(crucial) 3881 840 w +(kernel) 4243 840 w +(modifica\255) 4589 840 w +(tion:) 720 960 w +(when) 979 960 w +(the) 1274 960 w +(text) 1467 960 w +(segment) 1696 960 w +(of) 2151 960 w +(a) 2287 960 w +(program) 2380 960 w +(is) 2834 960 w +(written) 2952 960 w +(\(usually) 3329 960 w +(to) 3740 960 w +(place) 3875 960 w +(a) 4166 960 w +(breakpoint\),) 4258 960 w +(the) 4885 960 w +(segment is cloned to prevent other threads from encountering the breakpoint.) 720 1080 w +(Although) 4596 1080 w +(this incurs a slight performance penalty, it is of little importance while debugging.) 720 1200 w +10 /LucidaSans-Demi f +(13.) 720 1440 w +(Communication Between Tools) 937 1440 w +10 /LucidaSansUnicode00 f +(The) 970 1596 w +(Plan) 1200 1596 w +(9) 1450 1596 w +(Alef) 1562 1596 w +(and) 1802 1596 w +(C) 2031 1596 w +(compilers) 2149 1596 w +(do) 2672 1596 w +(not) 2845 1596 w +(embed) 3054 1596 w +(detailed) 3434 1596 w +(type) 3871 1596 w +(information) 4128 1596 w +(in) 4744 1596 w +(the) 4885 1596 w +(symbol) 720 1716 w +(table) 1120 1716 w +(of) 1411 1716 w +(an) 1560 1716 w +(executable) 1728 1716 w +(file.) 2305 1716 w +(However,) 2571 1716 w +(they) 3071 1716 w +(do) 3329 1716 w +(accept) 3504 1716 w +(a) 3868 1716 w +(command) 3973 1716 w +(line) 4501 1716 w +(option) 4727 1716 w +(causing) 720 1836 w +(them) 1130 1836 w +(to) 1416 1836 w +(emit) 1552 1836 w +(descriptions) 1805 1836 w +(of) 2437 1836 w +(complex) 2573 1836 w +(data) 3025 1836 w +(types) 3273 1836 w +(\(e.g.,) 3570 1836 w +(aggregates) 3855 1836 w +(and) 4431 1836 w +(abstract) 4650 1836 w +(data) 720 1956 w +(types\)) 988 1956 w +(to) 1338 1956 w +(an) 1494 1956 w +(auxiliary) 1669 1956 w +(file.) 2140 1956 w +(The) 2413 1956 w +(vehicle) 2652 1956 w +(for) 3045 1956 w +(expressing) 3242 1956 w +(this) 3831 1956 w +(information) 4067 1956 w +(is) 4691 1956 w +(Acid) 4828 1956 w +(source) 720 2076 w +(code.) 1101 2076 w +(When) 1455 2076 w +(an) 1780 2076 w +(Acid) 1956 2076 w +(debugging) 2227 2076 w +(session) 2807 2076 w +(is) 3227 2076 w +(subsequently) 3366 2076 w +(started,) 4069 2076 w +(that) 4500 2076 w +(file) 4750 2076 w +(is) 4960 2076 w +(loaded with the other Acid libraries.) 720 2196 w +(For) 970 2352 w +(each) 1176 2352 w +(complex) 1450 2352 w +(object) 1914 2352 w +(in) 2262 2352 w +(the) 2403 2352 w +(program) 2608 2352 w +(the) 3075 2352 w +(compiler) 3281 2352 w +(generates) 3755 2352 w +(three) 4282 2352 w +(pieces) 4585 2352 w +(of) 4942 2352 w +(Acid) 720 2472 w +(code.) 981 2472 w +(The) 1325 2472 w +(first) 1555 2472 w +(is) 1798 2472 w +(a) 1926 2472 w +(table) 2029 2472 w +(describing) 2317 2472 w +(the) 2872 2472 w +(size) 3075 2472 w +(and) 3316 2472 w +(offset) 3544 2472 w +(of) 3871 2472 w +(each) 4017 2472 w +(member) 4289 2472 w +(of) 4739 2472 w +(the) 4885 2472 w +(complex) 720 2592 w +(data) 1176 2592 w +(type.) 1428 2592 w +(Following) 1742 2592 w +(is) 2248 2592 w +(an) 2370 2592 w +(Acid) 2530 2592 w +(function,) 2785 2592 w +(named) 3261 2592 w +(the) 3633 2592 w +(same) 3831 2592 w +(as) 4129 2592 w +(the) 4278 2592 w +(object,) 4476 2592 w +(that) 4849 2592 w +(formats) 720 2712 w +(and) 1133 2712 w +(prints) 1351 2712 w +(each) 1672 2712 w +(member.) 1934 2712 w +(Finally,) 2438 2712 w +(Acid) 2818 2712 w +(declarations) 3067 2712 w +(associate) 3694 2712 w +(the) 4177 2712 w +(Alef) 4369 2712 w +(or) 4597 2712 w +(C) 4736 2712 w +(pro\255) 4842 2712 w +(gram) 720 2832 w +(variables) 1012 2832 w +(of) 1484 2832 w +(a) 1623 2832 w +(type) 1719 2832 w +(with) 1969 2832 w +(the) 2216 2832 w +(functions) 2413 2832 w +(to) 2907 2832 w +(print) 3047 2832 w +(them.) 3321 2832 w +(The) 3675 2832 w +(three) 3898 2832 w +(forms) 4192 2832 w +(of) 4517 2832 w +(declara\255) 4657 2832 w +(tion are shown in the following example:) 720 2952 w +9 /LucidaTypewriter f +(struct) 1008 3122 w +(Bitmap) 1463 3122 w +({) 1918 3122 w +(Rectangle) 1528 3232 w +(0) 2373 3232 w +(r;) 2503 3232 w +(Rectangle) 1528 3342 w +(16) 2308 3342 w +(clipr;) 2503 3342 w +('D') 1528 3452 w +(32) 1918 3452 w +(ldepth;) 2113 3452 w +('D') 1528 3562 w +(36) 1918 3562 w +(id;) 2113 3562 w +('X') 1528 3672 w +(40) 1918 3672 w +(cache;) 2113 3672 w +(};) 1008 3782 w +(defn) 1008 4012 w +(Bitmap\(addr\)) 1008 4122 w +({) 1853 4122 w +(complex) 1528 4232 w +(Bitmap) 2048 4232 w +(addr;) 2503 4232 w +(print\("Rectangle) 1528 4342 w +(r) 2633 4342 w +({\\n"\);) 2763 4342 w +(Rectangle\(addr.r\);) 1528 4452 w +(print\("}\\n"\);) 1528 4562 w +(print\("Rectangle) 1528 4672 w +(clipr) 2633 4672 w +({\\n"\);) 3023 4672 w +(Rectangle\(addr.clipr\);) 1528 4782 w +(print\("}\\n"\);) 1528 4892 w +(print\(") 1528 5002 w +(ldepth) 2048 5002 w +(",) 2568 5002 w +(addr.ldepth,) 2763 5002 w +("\\n"\);) 3608 5002 w +(print\(") 1528 5112 w +(id) 2048 5112 w +(",) 2568 5112 w +(addr.id,) 2763 5112 w +("\\n"\);) 3348 5112 w +(print\(") 1528 5222 w +(cache) 2048 5222 w +(",) 2568 5222 w +(addr.cache,) 2763 5222 w +("\\n"\);) 3543 5222 w +(};) 1008 5332 w +(complex) 1008 5552 w +(Bitmap) 1528 5552 w +(darkgrey;) 1983 5552 w +(complex) 1008 5662 w +(Bitmap) 1528 5662 w +(Window_settag:b;) 1983 5662 w +10 /LucidaSansUnicode00 f +(The) 720 5842 w +10 /LucidaTypewriter f +(struct) 949 5842 w +10 /LucidaSansUnicode00 f +(declaration) 1429 5842 w +(specifies) 2016 5842 w +(decoding) 2487 5842 w +(instructions) 2982 5842 w +(for) 3603 5842 w +(the) 3790 5842 w +(complex) 3993 5842 w +(type) 4455 5842 w +(named) 4711 5842 w +10 /LucidaTypewriter f +(Bitmap) 720 5962 w +10 /LucidaSansUnicode00 f +(.) 1152 5962 w +(Although) 1261 5962 w +(the) 1750 5962 w +(syntax) 1949 5962 w +(is) 2311 5962 w +(superficially) 2435 5962 w +(similar) 3063 5962 w +(to) 3434 5962 w +(a) 3576 5962 w +(C) 3675 5962 w +(structure) 3788 5962 w +(declaration,) 4270 5962 w +(the) 4885 5962 w +(semantics) 720 6082 w +(differ) 1248 6082 w +(markedly:) 1554 6082 w +(the) 2076 6082 w +(C) 2274 6082 w +(declaration) 2386 6082 w +(specifies) 2968 6082 w +(a) 3434 6082 w +(layout,) 3533 6082 w +(while) 3905 6082 w +(the) 4202 6082 w +(Acid) 4401 6082 w +(declara\255) 4657 6082 w +(tion) 720 6202 w +(tells) 956 6202 w +(how) 1205 6202 w +(to) 1452 6202 w +(decode) 1597 6202 w +(it.) 1994 6202 w +(The) 2171 6202 w +(declaration) 2399 6202 w +(specifies) 2985 6202 w +(a) 3455 6202 w +(type,) 3557 6202 w +(an) 3843 6202 w +(offset,) 4006 6202 w +(and) 4363 6202 w +(name) 4589 6202 w +(for) 4901 6202 w +(each) 720 6322 w +(member) 989 6322 w +(of) 1436 6322 w +(the) 1579 6322 w +(complex) 1779 6322 w +(object.) 2239 6322 w +(The) 2615 6322 w +(type) 2842 6322 w +(is) 3096 6322 w +(either) 3222 6322 w +(the) 3549 6322 w +(name) 3750 6322 w +(of) 4062 6322 w +(another) 4206 6322 w +(complex) 4626 6322 w +(declaration,) 720 6442 w +(for) 1333 6442 w +(example,) 1514 6442 w +10 /LucidaTypewriter f +(Rectangle) 2001 6442 w +10 /LucidaSansUnicode00 f +(,) 2649 6442 w +(or) 2723 6442 w +(a) 2867 6442 w +(format) 2964 6442 w +(code.) 3329 6442 w +(The) 3665 6442 w +(offset) 3887 6442 w +(is) 4207 6442 w +(the) 4328 6442 w +(number) 4524 6442 w +(of) 4942 6442 w +(bytes) 720 6562 w +(from) 1012 6562 w +(the) 1277 6562 w +(start) 1465 6562 w +(of) 1719 6562 w +(the) 1850 6562 w +(object) 2038 6562 w +(to) 2369 6562 w +(the) 2500 6562 w +(member) 2688 6562 w +(and) 3124 6562 w +(the) 3338 6562 w +(name) 3527 6562 w +(is) 3827 6562 w +(the) 3941 6562 w +(member) 4130 6562 w +10 /LucidaSansUnicode20 f +(\031) 4532 6562 w +10 /LucidaSansUnicode00 f +(s) 4564 6562 w +(name) 4649 6562 w +(in) 4949 6562 w +(the) 720 6682 w +(Alef) 917 6682 w +(or) 1150 6682 w +(C) 1294 6682 w +(declaration.) 1405 6682 w +(This) 2050 6682 w +(type) 2297 6682 w +(description) 2547 6682 w +(is) 3132 6682 w +(a) 3254 6682 w +(close) 3351 6682 w +(match) 3641 6682 w +(for) 3981 6682 w +(C) 4162 6682 w +(and) 4272 6682 w +(Alef,) 4493 6682 w +(but) 4757 6682 w +(is) 4960 6682 w +(simple enough to be language independent.) 720 6802 w +(The) 970 6958 w +10 /LucidaTypewriter f +(Bitmap) 1192 6958 w +10 /LucidaSansUnicode00 f +(function) 1665 6958 w +(expects) 2107 6958 w +(the) 2523 6958 w +(address) 2719 6958 w +(of) 3140 6958 w +(a) 3279 6958 w +10 /LucidaTypewriter f +(Bitmap) 3375 6958 w +10 /LucidaSansUnicode00 f +(as) 3848 6958 w +(its) 3995 6958 w +(only) 4154 6958 w +(argument.) 4400 6958 w +(It) 4974 6958 w +(uses) 720 7078 w +(the) 1011 7078 w +(decoding) 1237 7078 w +(information) 1754 7078 w +(contained) 2391 7078 w +(in) 2937 7078 w +(the) 3098 7078 w +10 /LucidaTypewriter f +(Bitmap) 3323 7078 w +10 /LucidaSansUnicode00 f +(structure) 3825 7078 w +(declaration) 4333 7078 w +(to) 4942 7078 w +(extract,) 720 7198 w +(format,) 1123 7198 w +(and) 1512 7198 w +(print) 1725 7198 w +(the) 1990 7198 w +(value) 2178 7198 w +(of) 2465 7198 w +(each) 2596 7198 w +(member) 2853 7198 w +(of) 3288 7198 w +(the) 3419 7198 w +(complex) 3608 7198 w +(object) 4056 7198 w +(pointed) 4388 7198 w +(to) 4793 7198 w +(by) 4925 7198 w +(the) 720 7318 w +(argument.) 938 7318 w +(The) 1533 7318 w +(Alef) 1777 7318 w +(compiler) 2031 7318 w +(emits) 2517 7318 w +(code) 2845 7318 w +(to) 3138 7318 w +(call) 3298 7318 w +(other) 3524 7318 w +(Acid) 3843 7318 w +(functions) 4117 7318 w +(where) 4631 7318 w +(a) 4985 7318 w +cleartomark +showpage +saveobj restore +%%EndPage: 10 10 +%%Page: 11 11 +/saveobj save def +mark +11 pagesetup +10 /LucidaSansUnicode00 f +(\255 11 \255) 2752 480 w +(member) 720 840 w +(is) 1173 840 w +(another) 1304 840 w +(complex) 1729 840 w +(type;) 2194 840 w +(here,) 2485 840 w +10 /LucidaTypewriter f +(Bitmap) 2783 840 w +10 /LucidaSansUnicode00 f +(calls) 3266 840 w +10 /LucidaTypewriter f +(Rectangle) 3532 840 w +10 /LucidaSansUnicode00 f +(to) 4231 840 w +(print) 4380 840 w +(its) 4664 840 w +(con\255) 4833 840 w +(tents.) 720 960 w +(The) 970 1116 w +10 /LucidaTypewriter f +(complex) 1204 1116 w +10 /LucidaSansUnicode00 f +(declarations) 1762 1116 w +(associate) 2406 1116 w +(Alef) 2906 1116 w +(variables) 3151 1116 w +(with) 3636 1116 w +(complex) 3895 1116 w +(types.) 4363 1116 w +(In) 4740 1116 w +(the) 4885 1116 w +(example,) 720 1236 w +10 /LucidaTypewriter f +(darkgrey) 1206 1236 w +10 /LucidaSansUnicode00 f +(is) 1823 1236 w +(the) 1944 1236 w +(name) 2140 1236 w +(of) 2447 1236 w +(a) 2586 1236 w +(global) 2681 1236 w +(variable) 3020 1236 w +(of) 3440 1236 w +(type) 3578 1236 w +10 /LucidaTypewriter f +(Bitmap) 3826 1236 w +10 /LucidaSansUnicode00 f +(in) 4298 1236 w +(the) 4429 1236 w +(program) 4624 1236 w +(being) 720 1356 w +(debugged.) 1029 1356 w +(Whenever) 1617 1356 w +(the) 2125 1356 w +(name) 2317 1356 w +10 /LucidaTypewriter f +(darkgrey) 2621 1356 w +10 /LucidaSansUnicode00 f +(is) 3235 1356 w +(evaluated) 3353 1356 w +(by) 3856 1356 w +(Acid,) 4009 1356 w +(it) 4291 1356 w +(automatically) 4395 1356 w +(calls) 720 1476 w +(the) 977 1476 w +10 /LucidaTypewriter f +(Bitmap) 1174 1476 w +10 /LucidaSansUnicode00 f +(function) 1648 1476 w +(with) 2091 1476 w +(the) 2338 1476 w +(address) 2534 1476 w +(of) 2955 1476 w +10 /LucidaTypewriter f +(darkgrey) 3094 1476 w +10 /LucidaSansUnicode00 f +(as) 3711 1476 w +(the) 3858 1476 w +(argument.) 4054 1476 w +(The) 4627 1476 w +(sec\255) 4849 1476 w +(ond) 720 1596 w +10 /LucidaTypewriter f +(complex) 942 1596 w +10 /LucidaSansUnicode00 f +(declaration) 1482 1596 w +(associates) 2058 1596 w +(a) 2592 1596 w +(local) 2684 1596 w +(variable) 2946 1596 w +(or) 3363 1596 w +(parameter) 3502 1596 w +(named) 4036 1596 w +10 /LucidaTypewriter f +(b) 4402 1596 w +10 /LucidaSansUnicode00 f +(in) 4511 1596 w +(function) 4639 1596 w +10 /LucidaTypewriter f +(Window_settag) 720 1716 w +10 /LucidaSansUnicode00 f +(with the) 1688 1716 w +10 /LucidaTypewriter f +(Bitmap) 2112 1716 w +10 /LucidaSansUnicode00 f +(complex data type.) 2576 1716 w +(Acid) 970 1872 w +(borrows) 1229 1872 w +(the) 1671 1872 w +(C) 1873 1872 w +(operators) 1989 1872 w +10 /LucidaTypewriter f +(.) 2502 1872 w +10 /LucidaSansUnicode00 f +(and) 2621 1872 w +10 /LucidaTypewriter f +(->) 2848 1872 w +10 /LucidaSansUnicode00 f +(to) 3039 1872 w +(access) 3184 1872 w +(the) 3546 1872 w +(decoding) 3748 1872 w +(parameters) 4243 1872 w +(of) 4839 1872 w +(a) 4985 1872 w +(member) 720 1992 w +(of) 1180 1992 w +(a) 1336 1992 w +(complex) 1449 1992 w +(type.) 1921 1992 w +(Although) 2251 1992 w +(this) 2753 1992 w +(representation) 2990 1992 w +(is) 3755 1992 w +(sufficiently) 3893 1992 w +(general) 4483 1992 w +(for) 4901 1992 w +(describing) 720 2112 w +(the) 1260 2112 w +(decoding) 1448 2112 w +(of) 1928 2112 w +(both) 2059 2112 w +(C) 2315 2112 w +(and) 2417 2112 w +(Alef) 2630 2112 w +(complex) 2854 2112 w +(data) 3301 2112 w +(types,) 3544 2112 w +(it) 3868 2112 w +(may) 3967 2112 w +(prove) 4201 2112 w +(too) 4508 2112 w +(restric\255) 4701 2112 w +(tive) 720 2232 w +(for) 932 2232 w +(target) 1109 2232 w +(languages) 1435 2232 w +(with) 1967 2232 w +(more) 2210 2232 w +(complicated) 2499 2232 w +(type) 3125 2232 w +(systems.) 3370 2232 w +(Further,) 3862 2232 w +(the) 4284 2232 w +(assumption) 4476 2232 w +(that) 720 2352 w +(the) 949 2352 w +(compiler) 1142 2352 w +(can) 1603 2352 w +(select) 1809 2352 w +(the) 2127 2352 w +(proper) 2320 2352 w +(Acid) 2683 2352 w +(format) 2933 2352 w +(code) 3295 2352 w +(for) 3564 2352 w +(each) 3741 2352 w +(basic) 4003 2352 w +(type) 4290 2352 w +(in) 4537 2352 w +(the) 4667 2352 w +(lan\255) 4861 2352 w +(guage) 720 2472 w +(is) 1053 2472 w +(somewhat) 1169 2472 w +(naive.) 1696 2472 w +(For) 2049 2472 w +(example,) 2240 2472 w +(when) 2720 2472 w +(a) 3012 2472 w +(member) 3102 2472 w +(of) 3539 2472 w +(a) 3672 2472 w +(complex) 3762 2472 w +(type) 4211 2472 w +(is) 4454 2472 w +(a) 4569 2472 w +(pointer,) 4659 2472 w +(it) 720 2592 w +(is) 823 2592 w +(assigned) 940 2592 w +(a) 1406 2592 w +(hexadecimal) 1498 2592 w +(type) 2145 2592 w +(code;) 2390 2592 w +(integer) 2690 2592 w +(members) 3070 2592 w +(are) 3560 2592 w +(always) 3749 2592 w +(assigned) 4105 2592 w +(a) 4571 2592 w +(decimal) 4664 2592 w +(type) 720 2712 w +(code.) 964 2712 w +(This) 1295 2712 w +(heuristic) 1536 2712 w +(proves) 1990 2712 w +(inaccurate) 2350 2712 w +(when) 2885 2712 w +(an) 3178 2712 w +(integer) 3331 2712 w +(field) 3710 2712 w +(is) 3960 2712 w +(a) 4076 2712 w +(bit) 4167 2712 w +(mask) 4332 2712 w +(or) 4625 2712 w +(set) 4763 2712 w +(of) 4942 2712 w +(bit flags which are more appropriately displayed in hexadecimal or octal.) 720 2832 w +10 /LucidaSans-Demi f +(14.) 720 3072 w +(Code Verification) 937 3072 w +10 /LucidaSansUnicode00 f +(Acid) 970 3228 w +10 /LucidaSansUnicode20 f +(\031) 1182 3228 w +10 /LucidaSansUnicode00 f +(s) 1214 3228 w +(ability) 1300 3228 w +(to) 1629 3228 w +(interact) 1762 3228 w +(dynamically) 2165 3228 w +(with) 2770 3228 w +(an) 3011 3228 w +(executing) 3164 3228 w +(program) 3676 3228 w +(allows) 4128 3228 w +(passive) 4466 3228 w +(test) 4859 3228 w +(and) 720 3348 w +(verification) 942 3348 w +(of) 1523 3348 w +(the) 1663 3348 w +(target) 1860 3348 w +(program.) 2190 3348 w +(For) 2712 3348 w +(example,) 2910 3348 w +(a) 3397 3348 w +(common) 3494 3348 w +(concern) 3957 3348 w +(is) 4383 3348 w +(leak) 4505 3348 w +(detec\255) 4744 3348 w +(tion) 720 3468 w +(in) 954 3468 w +(programs) 1090 3468 w +(using) 1602 3468 w +10 /LucidaTypewriter f +(malloc) 1913 3468 w +10 /LucidaSansUnicode00 f +(.) 2345 3468 w +(Of) 2454 3468 w +(interest) 2614 3468 w +(are) 3028 3468 w +(two) 3225 3468 w +(items:) 3445 3468 w +(finding) 3788 3468 w +(memory) 4178 3468 w +(that) 4620 3468 w +(was) 4857 3468 w +(allocated) 720 3588 w +(but) 1191 3588 w +(never) 1387 3588 w +(freed) 1688 3588 w +(and) 1975 3588 w +(detecting) 2189 3588 w +(bad) 2676 3588 w +(pointers) 2891 3588 w +(passed) 3325 3588 w +(to) 3698 3588 w +10 /LucidaTypewriter f +(free) 3830 3588 w +10 /LucidaSansUnicode00 f +(.) 4118 3588 w +(An) 4216 3588 w +(auxiliary) 4381 3588 w +(Acid) 4828 3588 w +(library) 720 3708 w +(contains) 1069 3708 w +(Acid) 1516 3708 w +(functions) 1767 3708 w +(to) 2258 3708 w +(monitor) 2395 3708 w +(the) 2819 3708 w +(execution) 3014 3708 w +(of) 3529 3708 w +(a) 3667 3708 w +(program) 3762 3708 w +(and) 4218 3708 w +(detect) 4438 3708 w +(these) 4778 3708 w +(faults,) 720 3828 w +(either) 1063 3828 w +(as) 1384 3828 w +(they) 1530 3828 w +(happen) 1777 3828 w +(or) 2177 3828 w +(in) 2318 3828 w +(the) 2448 3828 w +(automated) 2642 3828 w +(post-mortem) 3200 3828 w +(analysis) 3890 3828 w +(of) 4313 3828 w +(the) 4450 3828 w +(memory) 4644 3828 w +(arena.) 720 3948 w +(In) 1099 3948 w +(the) 1236 3948 w +(following) 1437 3948 w +(example,) 1930 3948 w +(the) 2421 3948 w +10 /LucidaTypewriter f +(sort) 2622 3948 w +10 /LucidaSansUnicode00 f +(command) 2956 3948 w +(is) 3480 3948 w +(run) 3606 3948 w +(under) 3818 3948 w +(the) 4149 3948 w +(control) 4351 3948 w +(of) 4740 3948 w +(the) 4885 3948 w +(Acid memory leak library.) 720 4068 w +9 /LucidaTypewriter f +(helix%) 1008 4238 w +(acid) 1463 4238 w +(-l) 1788 4238 w +(malloc) 1983 4238 w +(/bin/sort) 2438 4238 w +(/bin/sort:) 1008 4348 w +(mips) 1723 4348 w +(plan) 2048 4348 w +(9) 2373 4348 w +(executable) 2503 4348 w +(/lib/acid/port) 1008 4458 w +(/lib/acid/mips) 1008 4568 w +(/lib/acid/malloc) 1008 4678 w +(acid:) 1008 4788 w +(go\(\)) 1398 4788 w +(now) 1008 4898 w +(is) 1008 5008 w +(the) 1008 5118 w +(time) 1008 5228 w +() 1008 5338 w +(is) 1008 5448 w +(now) 1008 5558 w +(the) 1008 5668 w +(time) 1008 5778 w +(27680) 1008 5888 w +(:) 1398 5888 w +(breakpoint) 1528 5888 w +(_exits+0x4) 2568 5888 w +(MOVW) 3608 5888 w +($0x8,R1) 4128 5888 w +(acid:) 1008 5998 w +10 /LucidaSansUnicode00 f +(The) 720 6178 w +10 /LucidaTypewriter f +(go) 935 6178 w +10 /LucidaSansUnicode00 f +(command) 1113 6178 w +(creates) 1625 6178 w +(a) 2006 6178 w +(process) 2095 6178 w +(and) 2503 6178 w +(plants) 2717 6178 w +(breakpoints) 3049 6178 w +(at) 3660 6178 w +(the) 3787 6178 w +(entry) 3977 6178 w +(to) 4260 6178 w +10 /LucidaTypewriter f +(malloc) 4393 6178 w +10 /LucidaSansUnicode00 f +(and) 4860 6178 w +10 /LucidaTypewriter f +(free) 720 6298 w +10 /LucidaSansUnicode00 f +(.) 1008 6298 w +(The) 1112 6298 w +(program) 1333 6298 w +(is) 1789 6298 w +(then) 1908 6298 w +(started) 2164 6298 w +(and) 2543 6298 w +(continues) 2762 6298 w +(until) 3272 6298 w +(it) 3530 6298 w +(exits) 3635 6298 w +(or) 3908 6298 w +(stops.) 4049 6298 w +(If) 4415 6298 w +(the) 4520 6298 w +(reason) 4714 6298 w +(for) 720 6418 w +(stopping) 899 6418 w +(is) 1367 6418 w +(anything) 1487 6418 w +(other) 1949 6418 w +(than) 2247 6418 w +(the) 2504 6418 w +(breakpoints) 2700 6418 w +(in) 3317 6418 w +10 /LucidaTypewriter f +(malloc) 3449 6418 w +10 /LucidaSansUnicode00 f +(and) 3922 6418 w +10 /LucidaTypewriter f +(free) 4143 6418 w +10 /LucidaSansUnicode00 f +(,) 4431 6418 w +(Acid) 4504 6418 w +(prints) 4757 6418 w +(the usual status information and returns to the interactive prompt.) 720 6538 w +(When) 970 6694 w +(the) 1269 6694 w +(process) 1457 6694 w +(stops) 1864 6694 w +(on) 2160 6694 w +(entering) 2316 6694 w +10 /LucidaTypewriter f +(malloc) 2754 6694 w +10 /LucidaSansUnicode00 f +(,) 3186 6694 w +(the) 3251 6694 w +(debugger) 3439 6694 w +(must) 3937 6694 w +(capture) 4213 6694 w +(and) 4612 6694 w +(save) 4826 6694 w +(the) 720 6814 w +(address) 919 6814 w +(that) 1343 6814 w +10 /LucidaTypewriter f +(malloc) 1578 6814 w +10 /LucidaSansUnicode00 f +(will) 2053 6814 w +(return.) 2260 6814 w +(After) 2666 6814 w +(saving) 2949 6814 w +(a) 3303 6814 w +(stack) 3401 6814 w +(trace) 3696 6814 w +(so) 3979 6814 w +(the) 4134 6814 w +(calling) 4332 6814 w +(routine) 4692 6814 w +(can) 720 6934 w +(be) 924 6934 w +(identified,) 1079 6934 w +(it) 1608 6934 w +(places) 1710 6934 w +(a) 2051 6934 w +(breakpoint) 2142 6934 w +(at) 2703 6934 w +(the) 2832 6934 w +(return) 3024 6934 w +(address) 3360 6934 w +(and) 3777 6934 w +(restarts) 3994 6934 w +(the) 4400 6934 w +(program.) 4592 6934 w +(When) 720 7054 w +10 /LucidaTypewriter f +(malloc) 1038 7054 w +10 /LucidaSansUnicode00 f +(returns,) 1522 7054 w +(the) 1956 7054 w +(breakpoint) 2163 7054 w +(stops) 2740 7054 w +(the) 3055 7054 w +(program,) 3262 7054 w +(allowing) 3762 7054 w +(the) 4218 7054 w +(debugger) 4425 7054 w +(to) 4942 7054 w +(grab) 720 7174 w +(the) 983 7174 w +(address) 1180 7174 w +(of) 1602 7174 w +(the) 1742 7174 w +(new) 1939 7174 w +(memory) 2176 7174 w +(block) 2614 7174 w +(from) 2918 7174 w +(the) 3193 7174 w +(return) 3391 7174 w +(register.) 3733 7174 w +(The) 4213 7174 w +(address) 4437 7174 w +(and) 4860 7174 w +(stack) 720 7294 w +(trace) 1034 7294 w +(are) 1336 7294 w +(added) 1550 7294 w +(to) 1912 7294 w +(the) 2071 7294 w +(list) 2287 7294 w +(of) 2494 7294 w +(outstanding) 2653 7294 w +(memory) 3295 7294 w +(blocks,) 3752 7294 w +(the) 4158 7294 w +(breakpoint) 4374 7294 w +(is) 4960 7294 w +cleartomark +showpage +saveobj restore +%%EndPage: 11 11 +%%Page: 12 12 +/saveobj save def +mark +12 pagesetup +10 /LucidaSansUnicode00 f +(\255 12 \255) 2752 480 w +(removed from the return point, and the process is restarted.) 720 840 w +(When) 970 996 w +(the) 1278 996 w +(process) 1475 996 w +(stops) 1891 996 w +(at) 2197 996 w +(the) 2332 996 w +(beginning) 2530 996 w +(of) 3060 996 w +10 /LucidaTypewriter f +(free) 3201 996 w +10 /LucidaSansUnicode00 f +(,) 3489 996 w +(the) 3564 996 w +(memory) 3762 996 w +(address) 4201 996 w +(supplied) 4624 996 w +(as) 720 1116 w +(the) 859 1116 w +(argument) 1047 1116 w +(is) 1548 1116 w +(compared) 1661 1116 w +(to) 2177 1116 w +(the) 2308 1116 w +(list) 2496 1116 w +(of outstanding memory blocks.) 2675 1116 w +(If it is not found) 4255 1116 w +(an) 720 1236 w +(error) 886 1236 w +(message) 1175 1236 w +(and) 1649 1236 w +(a) 1879 1236 w +(stack) 1984 1236 w +(trace) 2286 1236 w +(of) 2576 1236 w +(the) 2724 1236 w +(call) 2929 1236 w +(is) 3143 1236 w +(reported;) 3273 1236 w +(otherwise,) 3773 1236 w +(the) 4325 1236 w +(address) 4530 1236 w +(is) 4960 1236 w +(deleted from the list.) 720 1356 w +(When) 970 1512 w +(the) 1301 1512 w +(program) 1521 1512 w +(exits,) 2002 1512 w +(the) 2333 1512 w +(list) 2553 1512 w +(of) 2764 1512 w +(outstanding) 2927 1512 w +(memory) 3573 1512 w +(blocks) 4034 1512 w +(contains) 4412 1512 w +(the) 4885 1512 w +(addresses) 720 1632 w +(of) 1248 1632 w +(all) 1387 1632 w +(blocks) 1541 1632 w +(that) 1895 1632 w +(were) 2127 1632 w +(allocated) 2398 1632 w +(but) 2874 1632 w +(never) 3076 1632 w +(freed.) 3383 1632 w +(The) 3740 1632 w +10 /LucidaTypewriter f +(leak) 3961 1632 w +10 /LucidaSansUnicode00 f +(library) 4289 1632 w +(function) 4639 1632 w +(traverses the list producing a report describing the allocated blocks.) 720 1752 w +9 /LucidaTypewriter f +(acid:) 820 1922 w +(leak\(\)) 1210 1922 w +(Lost) 820 2032 w +(a) 1145 2032 w +(total) 1275 2032 w +(of) 1665 2032 w +(524288) 1860 2032 w +(bytes) 2315 2032 w +(from:) 2705 2032 w +(malloc\(\)) 1080 2142 w +(malloc.c:32) 1665 2142 w +(called) 2445 2142 w +(from) 2900 2142 w +(dofile+0xe8) 3225 2142 w +(sort.c:217) 4005 2142 w +(dofile\(\)) 1080 2252 w +(sort.c:190) 1665 2252 w +(called) 2380 2252 w +(from) 2835 2252 w +(main+0xac) 3160 2252 w +(sort.c:161) 3810 2252 w +(main\(\)) 1080 2362 w +(sort.c:128) 1535 2362 w +(called) 2250 2362 w +(from) 2705 2362 w +(_main+0x20) 3030 2362 w +(main9.s:10) 3745 2362 w +(Lost) 820 2472 w +(a) 1145 2472 w +(total) 1275 2472 w +(of) 1665 2472 w +(64) 1860 2472 w +(bytes) 2055 2472 w +(from:) 2445 2472 w +(malloc\(\)) 1080 2582 w +(malloc.c:32) 1665 2582 w +(called) 2445 2582 w +(from) 2900 2582 w +(newline+0xfc) 3225 2582 w +(sort.c:280) 4070 2582 w +(newline\(\)) 1080 2692 w +(sort.c:248) 1730 2692 w +(called) 2445 2692 w +(from) 2900 2692 w +(dofile+0x110) 3225 2692 w +(sort.c:222) 4070 2692 w +(dofile\(\)) 1080 2802 w +(sort.c:190) 1665 2802 w +(called) 2380 2802 w +(from) 2835 2802 w +(main+0xac) 3160 2802 w +(sort.c:161) 3810 2802 w +(main\(\)) 1080 2912 w +(sort.c:128) 1535 2912 w +(called) 2250 2912 w +(from) 2705 2912 w +(_main+0x20) 3030 2912 w +(main9.s:10) 3745 2912 w +(Lost) 820 3022 w +(a) 1145 3022 w +(total) 1275 3022 w +(of) 1665 3022 w +(64) 1860 3022 w +(bytes) 2055 3022 w +(from:) 2445 3022 w +(malloc\(\)) 1080 3132 w +(malloc.c:32) 1665 3132 w +(called) 2445 3132 w +(from) 2900 3132 w +(realloc+0x14) 3225 3132 w +(malloc.c:129) 4070 3132 w +(realloc\(\)) 1080 3242 w +(malloc.c:123) 1730 3242 w +(called) 2575 3242 w +(from) 3030 3242 w +(bldkey+0x358) 3355 3242 w +(sort.c:1388) 4200 3242 w +(buildkey\(\)) 1080 3352 w +(sort.c:1345) 1795 3352 w +(called) 2575 3352 w +(from) 3030 3352 w +(newline+0x150) 3355 3352 w +(sort.c:285) 4265 3352 w +(newline\(\)) 1080 3462 w +(sort.c:248) 1730 3462 w +(called) 2445 3462 w +(from) 2900 3462 w +(dofile+0x110) 3225 3462 w +(sort.c:222) 4070 3462 w +(dofile\(\)) 1080 3572 w +(sort.c:190) 1665 3572 w +(called) 2380 3572 w +(from) 2835 3572 w +(main+0xac) 3160 3572 w +(sort.c:161) 3810 3572 w +(main\(\)) 1080 3682 w +(sort.c:128) 1535 3682 w +(called) 2250 3682 w +(from) 2705 3682 w +(_main+0x20) 3030 3682 w +(main9.s:10) 3745 3682 w +(acid:) 820 3792 w +(refs\(\)) 1210 3792 w +(data...bss...stack...) 820 3902 w +(acid:) 820 4012 w +(leak\(\)) 1210 4012 w +(acid:) 820 4122 w +10 /LucidaSansUnicode00 f +(The) 720 4302 w +(presence) 934 4302 w +(of) 1403 4302 w +(a) 1534 4302 w +(block) 1622 4302 w +(in) 1917 4302 w +(the) 2041 4302 w +(allocation) 2229 4302 w +(list) 2731 4302 w +(does) 2910 4302 w +(not) 3174 4302 w +(imply) 3367 4302 w +(it) 3666 4302 w +(is) 3765 4302 w +(there) 3878 4302 w +(because) 4163 4302 w +(of) 4590 4302 w +(a) 4721 4302 w +(leak;) 4810 4302 w +(for) 720 4422 w +(instance,) 915 4422 w +(it) 1406 4422 w +(may) 1528 4422 w +(have) 1784 4422 w +(been) 2065 4422 w +(in) 2358 4422 w +(use) 2505 4422 w +(when) 2730 4422 w +(the) 3043 4422 w +(program) 3253 4422 w +(terminated.) 3724 4422 w +(The) 4372 4422 w +10 /LucidaTypewriter f +(refs\(\)) 4608 4422 w +10 /LucidaSansUnicode00 f +(library) 720 4542 w +(function) 1084 4542 w +(scans) 1539 4542 w +(the) 1863 4542 w +10 /LucidaSans-Italic f +(data) 2072 4542 w +10 /LucidaSansUnicode00 f +(,) 2293 4542 w +10 /LucidaSans-Italic f +(bss) 2379 4542 w +10 /LucidaSansUnicode00 f +(,) 2538 4542 w +(and) 2624 4542 w +10 /LucidaSans-Italic f +(stack) 2858 4542 w +10 /LucidaSansUnicode00 f +(segments) 3169 4542 w +(of) 3692 4542 w +(the) 3845 4542 w +(process) 4055 4542 w +(looking) 4484 4542 w +(for) 4901 4542 w +(pointers) 720 4662 w +(into) 1153 4662 w +(the) 1375 4662 w +(allocated) 1563 4662 w +(blocks.) 2032 4662 w +(When one is found, the block is deleted from the out\255) 2441 4662 w +(standing) 720 4782 w +(block) 1189 4782 w +(list.) 1499 4782 w +(The) 1757 4782 w +10 /LucidaTypewriter f +(leak) 1986 4782 w +10 /LucidaSansUnicode00 f +(function) 2322 4782 w +(is) 2771 4782 w +(used) 2899 4782 w +(again) 3179 4782 w +(to) 3490 4782 w +(report) 3637 4782 w +(the) 3985 4782 w +(blocks) 4189 4782 w +(remaining) 4551 4782 w +(allocated) 720 4902 w +(and) 1210 4902 w +(unreferenced.) 1444 4902 w +(This) 2205 4902 w +(strategy) 2463 4902 w +(proves) 2907 4902 w +(effective) 3284 4902 w +(in) 3748 4902 w +(detecting) 3892 4902 w +(disconnected) 4398 4902 w +(\(but non-circular\) data structures.) 720 5022 w +(The) 970 5178 w +(leak) 1193 5178 w +(detection) 1433 5178 w +(process) 1927 5178 w +(is) 2343 5178 w +(entirely) 2466 5178 w +(passive.) 2871 5178 w +(The) 3335 5178 w +(program) 3559 5178 w +(is) 4018 5178 w +(not) 4141 5178 w +(specially) 4344 5178 w +(com\255) 4802 5178 w +(piled) 720 5298 w +(and) 1005 5298 w +(the) 1229 5298 w +(source) 1428 5298 w +(code) 1794 5298 w +(is) 2069 5298 w +(not) 2193 5298 w +(required.) 2397 5298 w +(As) 2916 5298 w +(with) 3080 5298 w +(the) 3329 5298 w +(Acid) 3528 5298 w +(support) 3784 5298 w +(functions) 4206 5298 w +(for) 4702 5298 w +(the) 4885 5298 w +(Alef) 720 5418 w +(runtime) 949 5418 w +(environment,) 1367 5418 w +(the) 2048 5418 w +(author) 2241 5418 w +(of) 2597 5418 w +(the) 2734 5418 w +(library) 2928 5418 w +(routines) 3277 5418 w +(has) 3715 5418 w +(encapsulated) 3922 5418 w +(the) 4601 5418 w +(func\255) 4795 5418 w +(tionality) 720 5538 w +(of) 1173 5538 w +(the) 1333 5538 w +(library) 1550 5538 w +(interface) 1922 5538 w +(in) 2408 5538 w +(Acid) 2561 5538 w +(code.) 2835 5538 w +(Any) 3192 5538 w +(programmer) 3437 5538 w +(may) 4105 5538 w +(then) 4367 5538 w +(check) 4646 5538 w +(a) 4985 5538 w +(program) 720 5658 w +10 /LucidaSansUnicode20 f +(\031) 1136 5658 w +10 /LucidaSansUnicode00 f +(s) 1168 5658 w +(use) 1256 5658 w +(of) 1462 5658 w +(the) 1597 5658 w +(library) 1790 5658 w +(routines) 2138 5658 w +(without) 2575 5658 w +(knowledge) 2978 5658 w +(of) 3540 5658 w +(either) 3676 5658 w +(implementation.) 3995 5658 w +(The) 4859 5658 w +(performance) 720 5778 w +(impact) 1383 5778 w +(of) 1758 5778 w +(running) 1903 5778 w +(leak) 2330 5778 w +(detection) 2575 5778 w +(is) 3074 5778 w +(great) 3201 5778 w +(\(about) 3499 5778 w +(10) 3856 5778 w +(times) 4028 5778 w +(slower\),) 4340 5778 w +(but) 4766 5778 w +(it) 4974 5778 w +(has) 720 5898 w +(not) 922 5898 w +(prevented) 1117 5898 w +(interactive) 1638 5898 w +(programs) 2178 5898 w +(like) 2680 5898 w +10 /LucidaTypewriter f +(sam) 2887 5898 w +10 /LucidaSansUnicode00 f +(and) 3138 5898 w +(the) 3353 5898 w +10 /LucidaTypewriter f +(8\275) 3543 5898 w +10 /LucidaSansUnicode00 f +(window) 3722 5898 w +(system) 4126 5898 w +(from) 4501 5898 w +(being) 4768 5898 w +(tested.) 720 6018 w +10 /LucidaSans-Demi f +(15.) 720 6258 w +(Code Coverage) 937 6258 w +10 /LucidaSansUnicode00 f +(Another) 970 6414 w +(common) 1391 6414 w +(component) 1845 6414 w +(of) 2425 6414 w +(software) 2557 6414 w +(test) 3006 6414 w +(uses) 3221 6414 w +10 /LucidaSans-Italic f +(coverage) 3475 6414 w +10 /LucidaSansUnicode00 f +(analysis.) 3946 6414 w +(The) 4428 6414 w +(purpose) 4643 6414 w +(of) 720 6534 w +(the) 857 6534 w +(test) 1051 6534 w +(is) 1271 6534 w +(to) 1390 6534 w +(determine) 1527 6534 w +(which) 2059 6534 w +(paths) 2378 6534 w +(through) 2684 6534 w +(the) 3109 6534 w +(code) 3302 6534 w +(have) 3571 6534 w +(not) 3834 6534 w +(been) 4032 6534 w +(executed) 4307 6534 w +(while) 4787 6534 w +(running) 720 6654 w +(the) 1138 6654 w +(test) 1331 6654 w +(suite.) 1550 6654 w +(This) 1887 6654 w +(is) 2130 6654 w +(usually) 2248 6654 w +(performed) 2626 6654 w +(by) 3175 6654 w +(a) 3328 6654 w +(combination) 3421 6654 w +(of) 4063 6654 w +(compiler) 4200 6654 w +(support) 4662 6654 w +(and) 720 6774 w +(a) 940 6774 w +(reporting) 1035 6774 w +(tool) 1527 6774 w +(run) 1755 6774 w +(on) 1960 6774 w +(the) 2123 6774 w +(output) 2318 6774 w +(generated) 2680 6774 w +(by) 3208 6774 w +(statements) 3362 6774 w +(compiled) 3936 6774 w +(into) 4420 6774 w +(the) 4648 6774 w +(pro\255) 4842 6774 w +(gram.) 720 6894 w +(The) 1082 6894 w +(compiler) 1310 6894 w +(emits) 1780 6894 w +(code) 2093 6894 w +(that) 2371 6894 w +(logs) 2609 6894 w +(the) 2859 6894 w +(progress) 3061 6894 w +(of) 3534 6894 w +(the) 3679 6894 w +(program) 3881 6894 w +(as) 4344 6894 w +(it) 4497 6894 w +(executes) 4610 6894 w +(basic) 720 7014 w +(blocks) 1009 7014 w +(and) 1361 7014 w +(writes) 1580 7014 w +(the) 1910 7014 w +(results) 2104 7014 w +(to) 2470 7014 w +(a) 2607 7014 w +(file.) 2701 7014 w +(The) 2923 7014 w +(file) 3143 7014 w +(is) 3333 7014 w +(then) 3452 7014 w +(processed) 3708 7014 w +(by) 4240 7014 w +(the) 4394 7014 w +(reporting) 4588 7014 w +(tool to determine which basic blocks have not been executed.) 720 7134 w +(Acid) 970 7290 w +(can) 1232 7290 w +(perform) 1450 7290 w +(the) 1892 7290 w +(same) 2097 7290 w +(function) 2402 7290 w +(in) 2853 7290 w +(a) 2995 7290 w +(language) 3101 7290 w +(independent) 3595 7290 w +(manner) 4255 7290 w +(without) 4675 7290 w +cleartomark +showpage +saveobj restore +%%EndPage: 12 12 +%%Page: 13 13 +/saveobj save def +mark +13 pagesetup +10 /LucidaSansUnicode00 f +(\255 13 \255) 2752 480 w +(modifying) 720 840 w +(the) 1242 840 w +(source,) 1431 840 w +(object) 1819 840 w +(or) 2151 840 w +(binary) 2286 840 w +(of) 2621 840 w +(the) 2752 840 w +(program.) 2940 840 w +(The) 3421 840 w +(following) 3635 840 w +(example) 4115 840 w +(shows) 4561 840 w +10 /LucidaTypewriter f +(ls) 4896 840 w +10 /LucidaSansUnicode00 f +(being run under the control of the Acid coverage library.) 720 960 w +9 /LucidaTypewriter f +(philw-helix%) 1008 1130 w +(acid) 1853 1130 w +(-l) 2178 1130 w +(coverage) 2373 1130 w +(/bin/ls) 2958 1130 w +(/bin/ls:) 1008 1240 w +(mips) 1593 1240 w +(plan) 1918 1240 w +(9) 2243 1240 w +(executable) 2373 1240 w +(/lib/acid/port) 1008 1350 w +(/lib/acid/mips) 1008 1460 w +(/lib/acid/coverage) 1008 1570 w +(acid:) 1008 1680 w +(coverage\(\)) 1398 1680 w +(acid) 1008 1790 w +(newstime) 1008 1900 w +(profile) 1008 2010 w +(tel) 1008 2120 w +(wintool) 1008 2230 w +(2:) 1008 2340 w +(\(error\)) 1203 2340 w +(msg:) 1723 2340 w +(pid=11419) 2048 2340 w +(startstop:) 2698 2340 w +(process) 3413 2340 w +(exited) 3933 2340 w +(acid:) 1008 2450 w +(analyse\(ls\)) 1398 2450 w +(ls.c:102,105) 1008 2560 w +(102:) 1528 2670 w +(return) 2113 2670 w +(1;) 2568 2670 w +(103:) 1528 2780 w +(}) 1853 2780 w +(104:) 1528 2890 w +(if\(db[0].qid.path&CHDIR) 1853 2890 w +(&&) 3413 2890 w +(dflag==0\){) 3608 2890 w +(105:) 1528 3000 w +(output\(\);) 2113 3000 w +(ls.c:122,126) 1008 3110 w +(122:) 1528 3220 w +(memmove\(dirbuf+ndir,) 2113 3220 w +(db,) 3478 3220 w +(sizeof\(Dir\)\);) 3738 3220 w +(123:) 1528 3330 w +(dirbuf[ndir].prefix) 2113 3330 w +(=) 3413 3330 w +(0;) 3543 3330 w +(124:) 1528 3440 w +(p) 2113 3440 w +(=) 2243 3440 w +(utfrrune\(s,) 2373 3440 w +('/'\);) 3153 3440 w +(125:) 1528 3550 w +(if\(p\){) 2113 3550 w +(126:) 1528 3660 w +(dirbuf[ndir].prefix) 2373 3660 w +(=) 3673 3660 w +(s;) 3803 3660 w +10 /LucidaSansUnicode00 f +(The) 720 3840 w +10 /LucidaTypewriter f +(coverage) 951 3840 w +10 /LucidaSansUnicode00 f +(function) 1577 3840 w +(begins) 2028 3840 w +(by) 2401 3840 w +(looping) 2566 3840 w +(through) 2983 3840 w +(the) 3420 3840 w +(text) 3625 3840 w +(segment) 3866 3840 w +(placing) 4333 3840 w +(break\255) 4734 3840 w +(points) 720 3960 w +(at) 1061 3960 w +(the) 1191 3960 w +(entry) 1384 3960 w +(to) 1670 3960 w +(each) 1806 3960 w +(basic) 2068 3960 w +(block.) 2355 3960 w +(The) 2686 3960 w +(start) 2904 3960 w +(of) 3162 3960 w +(each) 3297 3960 w +(basic) 3558 3960 w +(block) 3844 3960 w +(is) 4143 3960 w +(found) 4260 3960 w +(using) 4582 3960 w +(the) 4885 3960 w +(Acid) 720 4080 w +(builtin) 966 4080 w +(function) 1311 4080 w +10 /LucidaTypewriter f +(follow) 1746 4080 w +10 /LucidaSansUnicode00 f +(.) 2178 4080 w +(If) 2276 4080 w +(the) 2376 4080 w +(list) 2565 4080 w +(generated) 2745 4080 w +(by) 3267 4080 w +10 /LucidaTypewriter f +(follow) 3416 4080 w +10 /LucidaSansUnicode00 f +(contains) 3882 4080 w +(more) 4324 4080 w +(than) 4610 4080 w +(one) 4861 4080 w +(element,) 720 4200 w +(then) 1187 4200 w +(the) 1450 4200 w +(addresses) 1651 4200 w +(mark) 2184 4200 w +(the) 2477 4200 w +(start) 2678 4200 w +(of) 2945 4200 w +(basic) 3089 4200 w +(blocks.) 3384 4200 w +(A) 3775 4200 w +(breakpoint) 3890 4200 w +(is) 4461 4200 w +(placed) 4586 4200 w +(at) 4948 4200 w +(each) 720 4320 w +(address) 981 4320 w +(to) 1398 4320 w +(detect) 1533 4320 w +(entry) 1870 4320 w +(into) 2155 4320 w +(the) 2381 4320 w +(block.) 2573 4320 w +(If) 2905 4320 w +(the) 3009 4320 w +(result) 3202 4320 w +(of) 3516 4320 w +10 /LucidaTypewriter f +(follow) 3652 4320 w +10 /LucidaSansUnicode00 f +(is) 4122 4320 w +(a) 4240 4320 w +(single) 4333 4320 w +(address) 4660 4320 w +(then) 720 4440 w +(no) 987 4440 w +(action) 1160 4440 w +(is) 1505 4440 w +(taken,) 1635 4440 w +(and) 1985 4440 w +(the) 2215 4440 w +(next) 2420 4440 w +(address) 2686 4440 w +(is) 3116 4440 w +(considered.) 3246 4440 w +(Acid) 3860 4440 w +(maintains) 4121 4440 w +(a) 4643 4440 w +(list) 4747 4440 w +(of) 4942 4440 w +(breakpoints) 720 4560 w +(already) 1329 4560 w +(in) 1713 4560 w +(place) 1837 4560 w +(and) 2124 4560 w +(avoids) 2337 4560 w +(placing) 2682 4560 w +(duplicates) 3067 4560 w +(\(an) 3597 4560 w +(address) 3781 4560 w +(may) 4195 4560 w +(be) 4429 4560 w +(the) 4582 4560 w +(desti\255) 4771 4560 w +(nation of several branches\).) 720 4680 w +(After) 970 4836 w +(placing) 1251 4836 w +(the) 1643 4836 w +(breakpoints) 1839 4836 w +(the) 2456 4836 w +(program) 2652 4836 w +(is) 3109 4836 w +(set) 3230 4836 w +(running.) 3415 4836 w +(Each) 3900 4836 w +(time) 4163 4836 w +(a) 4419 4836 w +(breakpoint) 4515 4836 w +(is) 720 4956 w +(encountered) 849 4956 w +(Acid) 1504 4956 w +(deletes) 1764 4956 w +(the) 2160 4956 w +(address) 2363 4956 w +(from) 2791 4956 w +(the) 3071 4956 w +(breakpoint) 3274 4956 w +(list,) 3847 4956 w +(removes) 4073 4956 w +(the) 4531 4956 w +(break\255) 4734 4956 w +(point) 720 5076 w +(from) 1018 5076 w +(memory) 1296 5076 w +(and) 1738 5076 w +(then) 1964 5076 w +(restarts) 2227 5076 w +(the) 2642 5076 w +(program.) 2844 5076 w +(At) 3371 5076 w +(any) 3524 5076 w +(instant) 3740 5076 w +(the) 4120 5076 w +(breakpoint) 4322 5076 w +(list) 4894 5076 w +(contains) 720 5196 w +(the) 1174 5196 w +(addresses) 1375 5196 w +(of) 1908 5196 w +(basic) 2052 5196 w +(blocks) 2347 5196 w +(which) 2706 5196 w +(have) 3033 5196 w +(not) 3304 5196 w +(been) 3509 5196 w +(executed.) 3791 5196 w +(The) 4310 5196 w +10 /LucidaTypewriter f +(analyse) 4536 5196 w +10 /LucidaSansUnicode00 f +(function) 720 5316 w +(reports) 1158 5316 w +(the) 1545 5316 w +(lines) 1737 5316 w +(of) 2001 5316 w +(source) 2136 5316 w +(code) 2495 5316 w +(bounded) 2763 5316 w +(by) 3230 5316 w +(basic) 3382 5316 w +(blocks) 3668 5316 w +(whose) 4018 5316 w +(addresses) 4363 5316 w +(are) 4888 5316 w +(have) 720 5436 w +(not) 985 5436 w +(been) 1185 5436 w +(deleted) 1462 5436 w +(from) 1862 5436 w +(the) 2134 5436 w +(breakpoint) 2329 5436 w +(list.) 2894 5436 w +(These) 3143 5436 w +(are) 3470 5436 w +(the) 3661 5436 w +(basic) 3855 5436 w +(blocks) 4143 5436 w +(which) 4495 5436 w +(have) 4815 5436 w +(not) 720 5556 w +(been) 915 5556 w +(executed.) 1187 5556 w +(Program) 1728 5556 w +(performance) 2172 5556 w +(is) 2824 5556 w +(almost) 2940 5556 w +(unaffected) 3302 5556 w +(since) 3854 5556 w +(each) 4139 5556 w +(breakpoint) 4399 5556 w +(is) 4960 5556 w +(executed only once and then removed.) 720 5676 w +(The) 970 5832 w +(library) 1185 5832 w +(contains) 1529 5832 w +(a) 1971 5832 w +(total) 2060 5832 w +(of) 2313 5832 w +(128) 2445 5832 w +(lines) 2668 5832 w +(of) 2929 5832 w +(Acid) 3061 5832 w +(code.) 3308 5832 w +(An) 3638 5832 w +(obvious) 3804 5832 w +(extension) 4218 5832 w +(of) 4728 5832 w +(this) 4861 5832 w +(algorithm could be used to provide basic block profiling.) 720 5952 w +10 /LucidaSans-Demi f +(16.) 720 6192 w +(Conclusion) 937 6192 w +10 /LucidaSansUnicode00 f +(Acid) 970 6348 w +(has) 1227 6348 w +(two) 1440 6348 w +(areas) 1660 6348 w +(of) 1964 6348 w +(weakness.) 2108 6348 w +(As) 2652 6348 w +(with) 2818 6348 w +(other) 3069 6348 w +(language-based) 3372 6348 w +(tools) 4207 6348 w +(like) 4492 6348 w +10 /LucidaSans-Italic f +(awk) 4710 6348 w +10 /LucidaSansUnicode00 f +(,) 4907 6348 w +(a) 4985 6348 w +(programmer) 720 6468 w +(must) 1380 6468 w +(learn) 1677 6468 w +(yet) 1974 6468 w +(another) 2173 6468 w +(language) 2600 6468 w +(to) 3096 6468 w +(step) 3247 6468 w +(beyond) 3507 6468 w +(the) 3917 6468 w +(normal) 4125 6468 w +(debugging) 4519 6468 w +(functions) 720 6588 w +(and) 1211 6588 w +(use) 1430 6588 w +(the) 1638 6588 w +(full) 1832 6588 w +(power) 2028 6588 w +(of) 2366 6588 w +(the) 2504 6588 w +(debugger.) 2699 6588 w +(Second,) 3268 6588 w +(the) 3687 6588 w +(command) 3882 6588 w +(line) 4400 6588 w +(interface) 4616 6588 w +(supplied) 720 6708 w +(by) 1177 6708 w +(the) 1333 6708 w +10 /LucidaSans-Italic f +(yacc) 1529 6708 w +10 /LucidaSansUnicode00 f +(parser) 1785 6708 w +(is) 2132 6708 w +(inordinately) 2252 6708 w +(clumsy.) 2868 6708 w +(Part) 3310 6708 w +(of) 3538 6708 w +(the) 3676 6708 w +(problem) 3871 6708 w +(relates) 4317 6708 w +(directly) 4682 6708 w +(to) 720 6828 w +(the) 851 6828 w +(use) 1039 6828 w +(of) 1241 6828 w +10 /LucidaSans-Italic f +(yacc) 1372 6828 w +10 /LucidaSansUnicode00 f +(and) 1621 6828 w +(could) 1834 6828 w +(be) 2133 6828 w +(circumvented) 2285 6828 w +(with) 2971 6828 w +(a) 3209 6828 w +(custom) 3297 6828 w +(parser.) 3686 6828 w +(However,) 4091 6828 w +(structural) 4574 6828 w +(problems) 720 6948 w +(would) 1217 6948 w +(remain:) 1549 6948 w +(Acid) 1957 6948 w +(often) 2209 6948 w +(requires) 2502 6948 w +(too) 2941 6948 w +(much) 3140 6948 w +(typing) 3448 6948 w +(to) 3793 6948 w +(execute) 3930 6948 w +(a) 4348 6948 w +(simple) 4442 6948 w +(com\255) 4802 6948 w +(mand.) 720 7068 w +(A) 1092 7068 w +(debugger) 1196 7068 w +(should) 1696 7068 w +(prostitute) 2059 7068 w +(itself) 2568 7068 w +(to) 2842 7068 w +(its) 2975 7068 w +(users,) 3128 7068 w +(doing) 3457 7068 w +(whatever) 3770 7068 w +(is) 4242 7068 w +(wanted) 4358 7068 w +(with) 4744 7068 w +(a) 4985 7068 w +(minimum) 720 7188 w +(of) 1224 7188 w +(encouragement;) 1365 7188 w +(commands) 2194 7188 w +(should) 2765 7188 w +(be) 3135 7188 w +(concise) 3296 7188 w +(and) 3699 7188 w +(obvious.) 3921 7188 w +(The) 4374 7188 w +(language) 4597 7188 w +(interface) 720 7308 w +(is) 1191 7308 w +(more) 1318 7308 w +(consistent) 1616 7308 w +(than) 2160 7308 w +(an) 2423 7308 w +(ad) 2587 7308 w +(hoc) 2752 7308 w +(command) 2973 7308 w +(interface) 3498 7308 w +(but) 3969 7308 w +(is) 4179 7308 w +(clumsy) 4307 7308 w +(to) 4693 7308 w +(use.) 4839 7308 w +cleartomark +showpage +saveobj restore +%%EndPage: 13 13 +%%Page: 14 14 +/saveobj save def +mark +14 pagesetup +10 /LucidaSansUnicode00 f +(\255 14 \255) 2752 480 w +(Most) 720 840 w +(of) 1001 840 w +(these) 1145 840 w +(problems) 1453 840 w +(are) 1956 840 w +(addressed) 2154 840 w +(by) 2699 840 w +(an) 2860 840 w +(Acme) 3023 840 w +(interface) 3338 840 w +(which) 3808 840 w +(is) 4135 840 w +(under) 4261 840 w +(construc\255) 4591 840 w +(tion. This should provide the best of both worlds: graphical debugging and access to the) 720 960 w +(underlying acid language when required.) 720 1080 w +(The) 970 1236 w +(name) 1197 1236 w +(space) 1509 1236 w +(clash) 1831 1236 w +(between) 2126 1236 w +(Acid) 2580 1236 w +(variables,) 2839 1236 w +(keywords,) 3349 1236 w +(program) 3887 1236 w +(variables,) 4350 1236 w +(and) 4860 1236 w +(functions) 720 1356 w +(is) 1212 1356 w +(unavoidable.) 1331 1356 w +(Although) 2021 1356 w +(it) 2504 1356 w +(rarely) 2609 1356 w +(affects) 2922 1356 w +(a) 3285 1356 w +(debugging) 3379 1356 w +(session,) 3939 1356 w +(it) 4371 1356 w +(is) 4476 1356 w +(annoying) 4595 1356 w +(when) 720 1476 w +(it) 1044 1476 w +(happens) 1177 1476 w +(and) 1656 1476 w +(is) 1903 1476 w +(sometimes) 2050 1476 w +(difficult) 2644 1476 w +(to) 3085 1476 w +(circumvent.) 3250 1476 w +(The) 3915 1476 w +(current) 4163 1476 w +(renaming) 4580 1476 w +(scheme is too crude; the new names are too hard to remember.) 720 1596 w +(Acid) 970 1752 w +(has) 1221 1752 w +(proved) 1428 1752 w +(to) 1803 1752 w +(be) 1941 1752 w +(a) 2100 1752 w +(powerful) 2195 1752 w +(tool) 2661 1752 w +(whose) 2889 1752 w +(applications) 3236 1752 w +(have) 3861 1752 w +(exceeded) 4126 1752 w +(expecta\255) 4628 1752 w +(tions.) 720 1872 w +(Of) 1060 1872 w +(its) 1211 1872 w +(strengths,) 1364 1872 w +(portability,) 1891 1872 w +(extensibility) 2455 1872 w +(and) 3082 1872 w +(parallel) 3298 1872 w +(debugging) 3691 1872 w +(support) 4247 1872 w +(were) 4660 1872 w +(by) 4925 1872 w +(design) 720 1992 w +(and) 1076 1992 w +(provide) 1289 1992 w +(the) 1687 1992 w +(expected) 1875 1992 w +(utility.) 2351 1992 w +(In) 2723 1992 w +(retrospect,) 2847 1992 w +(its) 3406 1992 w +(use) 3556 1992 w +(as) 3758 1992 w +(a) 3897 1992 w +(tool) 3985 1992 w +(for) 4207 1992 w +(code) 4380 1992 w +(test) 4645 1992 w +(and) 4860 1992 w +(verification) 720 2112 w +(and) 1312 2112 w +(as) 1545 2112 w +(a) 1704 2112 w +(medium) 1812 2112 w +(for) 2261 2112 w +(communicating) 2453 2112 w +(type) 3253 2112 w +(information) 3514 2112 w +(and) 4134 2112 w +(encapsulating) 4366 2112 w +(interfaces) 720 2232 w +(has) 1243 2232 w +(provided) 1459 2232 w +(unanticipated) 1935 2232 w +(benefits) 2644 2232 w +(and) 3083 2232 w +(altered) 3311 2232 w +(our) 3696 2232 w +(view) 3908 2232 w +(of) 4170 2232 w +(the) 4316 2232 w +(debugging) 4519 2232 w +(process.) 720 2352 w +10 /LucidaSans-Demi f +(17.) 720 2592 w +(Acknowledgments) 937 2592 w +10 /LucidaSansUnicode00 f +(Bob) 970 2748 w +(Flandrena) 1190 2748 w +(was) 1705 2748 w +(the) 1926 2748 w +(first) 2119 2748 w +(user) 2352 2748 w +(and) 2600 2748 w +(helped) 2818 2748 w +(prepare) 3185 2748 w +(the) 3599 2748 w +(paper.) 3793 2748 w +(Rob) 4174 2748 w +(Pike) 4400 2748 w +(endured) 4637 2748 w +(three buggy Alef compilers and a new debugger in a single sitting.) 720 2868 w +10 /LucidaSans-Demi f +(18.) 720 3108 w +(References) 937 3108 w +10 /LucidaSansUnicode00 f +([Pike90]) 720 3264 w +(R.) 1148 3264 w +(Pike,) 1281 3264 w +(D.) 1549 3264 w +(Presotto,) 1695 3264 w +(K.) 2165 3264 w +(Thompson,) 2301 3264 w +(H.) 2888 3264 w +(Trickey,) 3033 3264 w +10 /LucidaSansUnicode20 f +(\030\030) 3454 3264 w +10 /LucidaSansUnicode00 f +(Plan) 3518 3264 w +(9) 3758 3264 w +(from) 3860 3264 w +(Bell) 4131 3264 w +(Labs) 4342 3264 w +10 /LucidaSansUnicode20 f +(\031\031) 4564 3264 w +10 /LucidaSansUnicode00 f +(,) 4628 3264 w +10 /LucidaSans-Italic f +(UKUUG) 4699 3264 w +(Proc.) 720 3384 w +(of) 1002 3384 w +(the) 1134 3384 w +(Summer) 1324 3384 w +(1990) 1765 3384 w +(Conf.,) 2054 3384 w +10 /LucidaSansUnicode00 f +(London,) 2380 3384 w +(England,) 2811 3384 w +(1990,) 3267 3384 w +(reprinted,) 3588 3384 w +(in) 4104 3384 w +(a) 4231 3384 w +(different) 4322 3384 w +(form,) 4776 3384 w +(in this volume.) 720 3504 w +([Gol93]) 720 3660 w +(M.) 1136 3660 w +(Golan,) 1317 3660 w +(D.) 1691 3660 w +(Hanson,) 1861 3660 w +10 /LucidaSansUnicode20 f +(\030\030) 2321 3660 w +10 /LucidaSansUnicode00 f +(DUEL) 2385 3660 w +(--) 2699 3660 w +(A) 2878 3660 w +(Very) 3010 3660 w +(High-Level) 3287 3660 w +(Debugging) 3881 3660 w +(Language) 4477 3660 w +10 /LucidaSansUnicode20 f +(\031\031) 4944 3660 w +10 /LucidaSansUnicode00 f +(,) 5008 3660 w +10 /LucidaSans-Italic f +(USENIX Proc. of the Winter 1993 Conf.,) 720 3780 w +10 /LucidaSansUnicode00 f +(San Diego, CA, 1993.) 2641 3780 w +([Lin90]) 720 3936 w +(M.) 1096 3936 w +(A.) 1254 3936 w +(Linton,) 1395 3936 w +10 /LucidaSansUnicode20 f +(\030\030) 1771 3936 w +10 /LucidaSansUnicode00 f +(The) 1835 3936 w +(Evolution) 2056 3936 w +(of) 2543 3936 w +(DBX) 2681 3936 w +10 /LucidaSansUnicode20 f +(\031\031) 2877 3936 w +10 /LucidaSansUnicode00 f +(,) 2941 3936 w +10 /LucidaSans-Italic f +(USENIX) 3013 3936 w +(Proc.) 3397 3936 w +(of) 3683 3936 w +(the) 3819 3936 w +(Summer) 4013 3936 w +(1990) 4458 3936 w +(Conf.,) 4751 3936 w +10 /LucidaSansUnicode00 f +(Anaheim, CA, 1990.) 720 4056 w +([Stal91] R. M. Stallman, R. H. Pesch, ) 720 4212 w +10 /LucidaSansUnicode20 f +(\030\030) 2478 4212 w +10 /LucidaSansUnicode00 f +(Using GDB:) 2542 4212 w +(A) 3117 4212 w +(guide) 3219 4212 w +(to) 3524 4212 w +(the) 3655 4212 w +(GNU) 3843 4212 w +(source) 4091 4212 w +(level) 4446 4212 w +(debug\255) 4701 4212 w +(ger) 720 4332 w +10 /LucidaSansUnicode20 f +(\031\031) 879 4332 w +10 /LucidaSansUnicode00 f +(, Technical Report, Free Software Foundation, Cambridge, MA, 1991.) 943 4332 w +([Win93] P. Winterbottom, ) 720 4488 w +10 /LucidaSansUnicode20 f +(\030\030) 1967 4488 w +10 /LucidaSansUnicode00 f +(Alef reference Manual) 2031 4488 w +10 /LucidaSansUnicode20 f +(\031\031) 3091 4488 w +10 /LucidaSansUnicode00 f +(, this volume.) 3155 4488 w +([Pike93]) 720 4644 w +(Rob) 1169 4644 w +(Pike,) 1415 4644 w +10 /LucidaSansUnicode20 f +(\030\030) 1704 4644 w +10 /LucidaSansUnicode00 f +(Acme:) 1768 4644 w +(A) 2129 4644 w +(User) 2258 4644 w +(Interface) 2535 4644 w +(for) 3019 4644 w +(Programmers) 3218 4644 w +10 /LucidaSansUnicode20 f +(\031\031) 3867 4644 w +10 /LucidaSansUnicode00 f +(,) 3931 4644 w +10 /LucidaSans-Italic f +(USENIX) 4023 4644 w +(Proc.) 4427 4644 w +(of) 4732 4644 w +(the) 4887 4644 w +(Winter 1994 Conf.,) 720 4764 w +10 /LucidaSansUnicode00 f +(San Francisco, CA, reprinted in this volume.) 1676 4764 w +([Ols90]) 720 4920 w +(Ronald) 1128 4920 w +(A.) 1519 4920 w +(Olsson,) 1678 4920 w +(Richard) 2100 4920 w +(H.) 2522 4920 w +(Crawford,) 2686 4920 w +(and) 3220 4920 w +(W.) 3458 4920 w +(Wilson) 3634 4920 w +(Ho,) 4011 4920 w +10 /LucidaSansUnicode20 f +(\030\030) 4237 4920 w +10 /LucidaSansUnicode00 f +(Dalek:) 4301 4920 w +(A) 4665 4920 w +(GNU,) 4793 4920 w +(improved) 720 5040 w +(programmable) 1213 5040 w +(debugger) 1960 5040 w +10 /LucidaSansUnicode20 f +(\031\031) 2425 5040 w +10 /LucidaSansUnicode00 f +(,) 2489 5040 w +10 /LucidaSans-Italic f +(USENIX) 2556 5040 w +(Proc.) 2935 5040 w +(of) 3215 5040 w +(the) 3345 5040 w +(Summer) 3533 5040 w +(1990) 3972 5040 w +(Conf.,) 4259 5040 w +10 /LucidaSansUnicode00 f +(Anaheim,) 4582 5040 w +(CA.) 720 5160 w +([May92]) 720 5316 w +(Paul) 1157 5316 w +(Maybee,) 1410 5316 w +10 /LucidaSansUnicode20 f +(\030\030) 1862 5316 w +10 /LucidaSansUnicode00 f +(NeD:) 1926 5316 w +(The) 2215 5316 w +(Network) 2448 5316 w +(Extensible) 2904 5316 w +(Debugger) 3454 5316 w +10 /LucidaSansUnicode20 f +(\031\031) 3931 5316 w +10 /LucidaSans-Italic f +(USENIX) 4047 5316 w +(Proc.) 4443 5316 w +(of) 4740 5316 w +(the) 4887 5316 w +(Summer 1992 Conf.,) 720 5436 w +10 /LucidaSansUnicode00 f +(San Antonio, TX.) 1761 5436 w +([Aral]) 720 5592 w +(Ziya) 1015 5592 w +(Aral,) 1247 5592 w +(Ilya) 1508 5592 w +(Gertner,) 1708 5592 w +(and) 2140 5592 w +(Greg) 2355 5592 w +(Schaffer,) 2622 5592 w +10 /LucidaSansUnicode20 f +(\030\030) 3083 5592 w +10 /LucidaSansUnicode00 f +(Efficient) 3147 5592 w +(debugging) 3575 5592 w +(primitives) 4132 5592 w +(for) 4648 5592 w +(mul\255) 4823 5592 w +(tiprocessors) 720 5712 w +10 /LucidaSansUnicode20 f +(\031\031) 1313 5712 w +10 /LucidaSansUnicode00 f +(,) 1377 5712 w +10 /LucidaSans-Italic f +(Proceedings) 1486 5712 w +(of) 2144 5712 w +(the) 2316 5712 w +(Third) 2545 5712 w +(International) 2883 5712 w +(Conference) 3588 5712 w +(on) 4208 5712 w +(Architectural) 4403 5712 w +(Support) 720 5832 w +(for) 1146 5832 w +(Programming) 1333 5832 w +(Languages) 2048 5832 w +(and) 2617 5832 w +(Operating) 2845 5832 w +(Systems,) 3380 5832 w +10 /LucidaSansUnicode00 f +(SIGPLAN) 3848 5832 w +(notices) 4298 5832 w +(Nr.) 4690 5832 w +(22,) 4882 5832 w +(May 1989.) 720 5952 w +cleartomark +showpage +saveobj restore +%%EndPage: 14 14 +%%Trailer +done +%%Pages: 14 diff --git a/sys/doc/acme/acme.fig1 b/sys/doc/acme/acme.fig1 new file mode 100644 index 000000000..9889cfa75 --- /dev/null +++ b/sys/doc/acme/acme.fig1 @@ -0,0 +1,2801 @@ +%!PS-Adobe-2.0 +%%Version: 3.3.2 +%%DocumentFonts: (atend) +%%Pages: (atend) +%%EndComments +%%EndProlog +%%BeginSetup +mark +/picstr 116 string def +-28 145 translate +668.16 501.12 scale + +928 696 1 [928 0 0 -696 0 696] +{currentfile picstr readhexstring pop} image + +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000 +7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7ffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7ffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7ffff7ffffe67ffffffffffffe7fff333fffff9fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7ffff47c7fe67f3dfffffffffe7f39333f81ff99ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7ffff47c7ffe7f1dfffffffffe7f33f33f9ffff9ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7ffff53a70e67f1df1cfef1f1e7f37333f9f39907fffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7ffff53a7e667f4de4ceee6e4e7f2f333f9f3999ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7ffff53a7e667f4dccceccfce67f0f333f839b99ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7ffff59670667f65c0e45cfce67f27333f9fc799ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7ffff59666667f65cfe45cfce67f33333f9fc799ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7ffff5ce66667f71cfe11cfce67f33333f9fb399ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7ffff5ce66667f71e6f33e6e4e7f39333f9f3999ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7ffff5fe71267f79f1f33f1f1e7f39333f81399c7fffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7ffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7ffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000e +7000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000e +7ffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcffffffffffffffffffffffffffffffffffffffffffffffffffeffffff +fffffffffffffffffffffffffffffffffffffffe +7800fffffffffffffffffffffffffffffffffffffffffffffffeffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800fffffffffffffffffffffffffffffffffffffffffffffffeffffff +fffffffffffffffffffffffffffffffffffffffe +7a22fffffffffffffffffffffffffffffffffff8ffffff3ffff8ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffca22fffffffffffffffffffffffffffffffffff8ffffff3ffff8ffffff +fffffffffffffffffffffffffffffffffffffffe +7888fe7bffffffe0fff3fc1ffff3fffc3ffffff3fc0fff3ffff8ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc888fe7bffffffe0fff3fc1ffff3fffc3ffffff3fc0fff3ffff8ffffff +fffffffffffffffffffffffffffffffffffffffe +7a22fe3bffffffce7ff3fccffff3fff99ffffff3fce7ff3ffff8ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffca22fe3bffffffce7ff3fccffff3fff99ffffff3fce7ff3ffff8ffffff +fffffffffffffffffffffffffffffffffffffffe +7888fe3be39fdf9fe720fccc3c20e3f9f91e1c80fcf3c73c7c78ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc888fe3be39fdf9fe720fccc3c20e3f9f91e1c80fcf3c73c7c78ffffff +fffffffffffffffffffffffffffffffffffffffe +7a22fe9bc99ddf9fe733fccf99f3c9f8f88fcc93fcf39339b938ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffca22fe9bc99ddf9fe733fccf99f3c9f8f88fcc93fcf39339b938ffffff +fffffffffffffffffffffffffffffffffffffffe +7888fe9b999d9f9fe733fccf99f399fc79cfcc73fcf33333f398ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc888fe9b999d9f9fe733fccf99f399fc79cfcc73fcf33333f398ffffff +fffffffffffffffffffffffffffffffffffffffe +7a22fecb81c8bf9fe733fc1c187381fe39ce0cf3fcf30333f398ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffca22fecb81c8bf9fe733fc1c187381fe39ce0cf3fcf30333f398ffffff +fffffffffffffffffffffffffffffffffffffffe +7888fecb9fc8bf9fe733fcf99c339fff19ccccf3fcf33f33f398ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc888fecb9fc8bf9fe733fcf99c339fff19ccccf3fcf33f33f398ffffff +fffffffffffffffffffffffffffffffffffffffe +7a22fee39fc23f9fe733fcf99f339fff99ccccf3fcf33f33f398ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffca22fee39fc23f9fe733fcf99f339fff99ccccf3fcf33f33f398ffffff +fffffffffffffffffffffffffffffffffffffffe +7888fee3cde67fce6233fcf99f33cdf999ccccf3fce79b39b938ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc888fee3cde67fce6233fcf99f33cdf999ccccf3fce79b39b938ffffff +fffffffffffffffffffffffffffffffffffffffe +7a22fef3e3e67fe0f138fcfc4878e3fc39ce24f3fc0fc73c7c78ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffca22fef3e3e67fe0f138fcfc4878e3fc39ce24f3fc0fc73c7c78ffffff +fffffffffffffffffffffffffffffffffffffffe +7800fffffffffffffffffffffffffffffffffffffffffffffffeffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800fffffffffffffffffffffffffffffffffffffffffffffffeffffff +fffffffffffffffffffffffffffffffffffffffe +7ffffffffffffffffffffffffffffffffffffffffffffffffffeffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcffffffffffffffffffffffffffffffffffffffffffffffffffeffffff +fffffffffffffffffffffffffffffffffffffffe +7000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000e +7000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000e +7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffefffffffffffffffffe +7800ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800ffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffefffffffffffffffffe +7800ffe7ffffff9fffe7ff9ffffffcfffffffffff3f3ffff9fffffff9fffffff +ff8f9ffe27f1ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800ffe7ffffffffff9ffff3f9fcffffe7f3fffffffe7ffffffffe3fff +fffe7ffffffffffffffff8fffffffffffffffffe +79fcffcfffffff3fffe7ff3ffffff9ffffffffffe7f3ff3f9ffe07ff9fc3ffff +ff3f99cce7f1ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcffcfffffffffff3ffff3f9f9ffffe7f3fff81ffe7f0ffffffcff39 +fffe7fff83ff9ff07ff3f8fffffffffffffffffe +79fcffcfffffff3fffe7ff3ffffff9ffffffffffe7f3ff3f9ffe73ff9f99ffff +ff3f99ccfff1ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc904ffcfffffffffff3ffffff9f9fffffff3fff9cffe7e67fffffcff39 +fffe7fff99ff9fe73ff3f8fffffffffffffffffe +79fcff9ce70c9e7271e4fe7864e3f3c3e3910f8fcf83860f91fe79e39f9f91e1 +c80f9c982781ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc904ff9e1f1c887c7e787c73c1f3e0ce6783c7f9e78e7e7e4787203f39 +91f078ff993907cffc60f8fffffffffffffffffe +79fcff9ce67c9e7264e27e73e4cdf3f9cd884727cf33f33f88fe79c99f8f88fc +c93f9c9ce731ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc904ff9fce6c42393e7f39b399f3ccce673393f9e7267e3e23f324ff39 +88e6727f99399fcff933f8fffffffffffffffffe +79fcff3ce67c7cf1ce673cf3e39fe7f99f9ce6679e73f33f9cfe79999fc79cfc +c73f9e3ce671ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc904ff3fccfce7333cff33f339e79cce667333f9e6667f1e73f31cff39 +9cce673f99399fcff333f8fffffffffffffffffe +79fcff3ce61cfcf3ce673cf0e79fe7c19f9ce6079e73833f9cfe79819fe39ce0 +cf3f9e3ce671ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc904ff3e0cfce7303cf833f339e79cce667303f9e6067f8e73833cff39 +9cce673f83399fcf3033f8fffffffffffffffffe +79fcfe7ce70cf9f3ce6739f8679fcf999f9ce67f3e73333f9cfe799f9ff19ccc +cf3f9c9ce671ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc904fe7cccfce733f9f333f339cf9cce66733ff9e67e7fc673333cff39 +9cce673f9f399fcf33f3f8fffffffffffffffffe +79fcfe7ce7ccf9f3ce6739fe679fcf999f9ce67f3e73333f9cfe799f9ff99ccc +cf3f9c9ce671ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc904fe7cccfce733f9f333f339cfc8ce66733ff9e67e7fe673333cff39 +9cce673f9f399fcf33f3f8fffffffffffffffffe +79fcfcfc47ccf3f3e4e673fe67cd9f99cd9ce7367f2333399cfe73cd9f999ccc +cf3f99cce721ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcfcfcce6ce739b3f339b3919fe4c467239bf9cf367e6673333cff93 +9ce4727f9f119fe739b3f8fffffffffffffffffe +7800fcfe261cf3f3f1e0f3f0e7e39fc4e39ce78e7f9389899cfe07e39fc39ce2 +4f3f99cce791ffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800fcfe271ce73c73f89c73c99ffce26793c7f81f8e7f0e73893cffc7 +9cf278ff9f89c7f03c78f8fffffffffffffffffe +7800f9ffffffe7ffffffe7ffffff3ffffffffffcffffffffffffffffffffffff +ffff9ffffffdffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800f9ffffffffffe7ffffffff3f99ffffffffffffffffffffffffffff +fffffffffffffffffffff8fffffffffffffffffe +7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffdffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcfffffffffffffffffffffffffffc3ffffffffffffffffffffffffffff +fffffffffffffffffffffefffffffffffffffffe +7000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000e +7800ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800ffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffe7ffffc4fe71ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffff3f9fffcfe7ffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffe67f399cfe67ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeff9fff3f9fffcfe7ffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffe67f399ffe67ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeff9fffff9fffffe7ffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbafe1f041f9304f073ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeff4fc73c1f93cf07ffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeeffce667f939ce67bffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeff4f9b399f89ce67ffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaffcce67fc79cce67ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefe673f339f9ccce7ffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeefe0ce67fc79cce7bffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefee73f339f9ccce7ffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbafccce67f939cce73ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefc073f339f9ccce7ffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeefccce67f939cce67ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefcf33f339f9ccce7ffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbafcce467f399ce467ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefcf39b391f99ce47ffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeefe27271f399cf267ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefcf3c73c9f83cf27ffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbafffffffffffffff1ffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffff9fffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffff9fffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffff7fffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffff7fffffffffffffffffffffffe +7bbafffffffffffffffffffffffffccfffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffff3f9fffcfffcffe3fff3ff9ffffffe7fff9ffe7ffffff3fff +fffffffcffff9fc7fffffffffffffffffffffffe +7aeefffffe7ffffffffffffe07fffccfffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeff9fff3f9fffcfffcffcffff3ff3ffffffcffff9ffcffffffe7fff +fffffff9ffff9fc7e0f8fc3ffffffffffffffffe +7bbafffffe7ffffffffffffe7ffffccfffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeff9fffff9fffcfffcffcffff3ff3ffffffcffff9ffcffffffe7fff +fffffff9ffffffc7cc72799ffffffffffffffffe +7aeeff1ce41c7248fffffffe7f1e1ccfffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeff4fc73c1fffcfe1cf183fff3fe739c3279c9c793f9e1938fcf0f8 +e443e3f3c3e39e07fe6733fffffffffffffffffe +7bbafe4ce67932447ffffffe7e6fccccffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeff4f9b399fffcffcce4cffff3fe7399f279c99389f9cf9337cfe73 +6211c9f3f9cd9cc7fce7327ffffffffffffffffe +7aeefcce6e7331ce7ffffffe0cffccccffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefe673f339fffcffcccccffff3fcf399f1f3c7399cf3cf8e7f9fe67 +e73999e7f99f99c7f1e7313ffffffffffffffffe +7bbafc0f1e7033ce7ffffffe7cfe0ccfffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefee73f339f80cfe0cc0cfe033fcf39873f3cf399cf3c39e7f9f067 +e73981e7c19f99c7fcf2339ffffffffffffffffe +7aeefcff1e73f3ce7ffffffe7cfccccfffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefc073f339fffcfccccfcffff3f9f39c33e7cf399ce7e19e7f3e667 +e7399fcf999f99c7fe79339ffffffffffffffffe +7bbafcfece73f3ce7ffffffe7cfccccfffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefcf33f339fffcfccccfcffff3f9f39f33e7cf399ce7f99e7f3e667 +e7399fcf999f99c7fe7f339ffffffffffffffffe +7aeefe6ce679b3ce7ffffffe7e6cccccffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefcf39b391fffcfccce6cffff3f3f11f33cfcf9399cff99f367e673 +6739cd9f99cd9c87cc66793ffffffffffffffffe +7bbaff1ce71c73ce7ffffffe7f1e24ccffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefcf3c73c9fffcfe24f1cffff3f3f89873cfcfc783cfc39f8e7f138 +e739e39fc4e39e47e0f0fc7ffffffffffffffffe +7aeefffffffffffffffffffffffffffeffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefffffffffffffffffffffffffe7ffffff9fffffff9ffffffcfffff +ffffff3ffffffff7fffffffffffffffffffffffe +7bbafffffffffffffffffffffffffffdffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800ffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffff7fffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000e +7bbaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000e +7aeeffffffffffffffffffffff13f9ffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffffdfff +fffffffffffffffffffffffffffffffffffffffe +7bbafffffe7ffffffffffffce673f9fff7ffffffe7ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800ffffffffffffffffffffffffffffffffffffffffffffffffffdfff +fffffffffffffffffffffffffffffffffffffffe +7aeefffffe7ffffffffffffce67ff9ffd5ffffffe7ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800ffe7ffffffffff93f9fffe7ffff3f9ffffffff3fffffffff1f1fff +fffffffffffffffffffffffffffffffffffffffe +7bbaff1ce41c7248fffffffe4c13c1ffe391f1ce41ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcffcfffffffffff33f9fffcfffff3f9fffc0fff3f87fffffe7f1fff +fffffffffffffffffffffffffffffffffffffffe +7aeefe4ce67932447ffffffe4e7399ffd588e4ce673fffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcffcfffffffffff33fffffcfffffff9fffce7ff3f33fffffe7f1fff +fffffffffffffffffffffffffffffffffffffffe +7bbafcce6e7331ce7fffffff1e7339fff79ccce6e73fffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcff9e1f1c887c7e727991f9f06733c1e3fcf3c73f3f23c3901f1fff +fffffffffffffffffffffffffffffffffffffffe +7aeefc0f1e7033ce7fffffff1e7339ffff9cc0f1e7ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcff9fce6c42393e713988f9e6673399c9fcf3933f1f11f9927f1fff +fffffffffffffffffffffffffffffffffffffffe +7bbafcff1e73f3ce7ffffffe4e7339ffff9ccff1e7ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcff3fccfce7333cf3999cf3ce67333999fcf3333f8f39f98e7f1fff +fffffffffffffffffffffffffffffffffffffffe +7aeefcfece73f3ce7ffffffe4e7339ffff9ccfece7ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcff3e0cfce7303cf3999cf3ce67333981fcf3033fc739c19e7f1fff +fffffffffffffffffffffffffffffffffffffffe +7bbafe6ce679b3ce7ffffffce67391ffff9ce6ce673fffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcfe7cccfce733f9f3999ce7ce6733399ffcf33f3fe339999e7f1fff +fffffffffffffffffffffffffffffffffffffffe +7aeeff1ce71c73ce7ffffffce673c9ffff9cf1ce713fffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcfe7cccfce733f9f3999ce7e46733399ffcf33f3ff339999e7f1fff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffffffffffffbfffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcfcfcce6ce739b3f3399ccff2623391cdfce79b3f3339999e7f1fff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800fcfe271ce73c73f0799ccffe7133c9e3fc0fc73f8739c49e7f1fff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800f9ffffffffffe7ffffff9fccffffffffffffffffffffffffff1fff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcfffffffffffffffffffffffffe1ffffffffffffffffffffffffffdfff +fffffffffffffffffffffffffffffffffffffffe +7bbafffffffffffffffffffffcffffffcffffcfe79fcfcffe27f3fce7fffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000e +7aeefffffe7ffffffffffffffcffffff9ffffcfe73de799cce7f3de73fffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000e +7bbafffffe7ffffffffffffffcffffff9ffffffe7356799ccfff35673fffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffdff +fffffffffffffffffffffffffffffffffffffffe +7aeeff1ce41c7248ffffffff1c8f0e47399e3cf0678f33c9827838f39fff1fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800fffffffffffffffffffffffffffffffffffffffffffffffffffdff +fffffffffffffffffffffffffffffffffffffffe +7bbafe4ce67932447ffffffe6c47e623399c9ce6675733c9ce7335739ffe6cff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800ffe7ffffffffff9fff99ffe7ffff3f9ffffffff3fffffffff1f1ff +fffffffffffffffffffffffffffffffffffffffe +7aeefcce6e7331ce7ffffffcfce7e6733999ccce67df33e3ce673df39ffcfcff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcffcfffffffffff3fff999fcfffff3f9fffc0fff3f87fffffe7f1ff +fffffffffffffffffffffffffffffffffffffffe +7bbafc0f1e7033ce7ffffffcfce706733999ccce67ff33e3ce673ff39ffcffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcffcfffffffffff3fff9f9fcfffffff9fffce7ff3f33fffffe7f1ff +fffffffffffffffffffffffffffffffffffffffe +7800fcff1e73f3ce7ffffffcfce666733cb9ccce67ff33c9ce673ff39ffcffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcff9e1f1c887c7e7c7c19079f06733c1e3fcf3c73f3f23c3901f1ff +fffffffffffffffffffffffffffffffffffffffe +7bfefcfece73f3ce7ffffffcfce666733cb9ccce67ff33c9ce673ff39ffcffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcff9fce6c42393e7939999f9e6673399c9fcf3933f1f11f9927f1ff +fffffffffffffffffffffffffffffffffffffffe +7bfefe6ce679b3ce7ffffffe6ce666739e7c9ce473fe799cce723fe73ffe6cff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcff3fccfce7333cf333999f3ce67333999fcf3333f8f39f98e7f1ff +fffffffffffffffffffffffffffffffffffffffe +7800ff1ce71c73ce7fffffff1ce712739e7e3cf273fe799cce793fe73fff1cff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcff3e0cfce7303cf033999f3ce67333981fcf3033fc739c19e7f1ff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffcffffffff9fcfcffffffffce7ffffeff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcfe7cccfce733f9f3f3999e7ce6733399ffcf33f3fe339999e7f1ff +fffffffffffffffffffffffffffffffffffffffe +7bbafffffffffffffffffffffffffffffffffffffffffffffffffffffffffdff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcfe7cccfce733f9f3f3999e7e46733399ffcf33f3ff339999e7f1ff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcfcfcce6ce739b3f9b9199cff2623391cdfce79b3f3339999e7f1ff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800fcfe271ce73c73fc7c99c4ffe7133c9e3fc0fc73f8739c49e7f1ff +fffffffffffffffffffffffffffffffffffffffe +7aeefffffffffffffffffffffffe7f3fffffffffffffe79ffff89fc9ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800f9ffffffffffe7fffffff9fccffffffffffffffffffffffffff1ff +fffffffffffffffffffffffffffffffffffffffe +7bbafffffffffffffffffffffffe7f3ffffffffffffce73de7339fccffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcffffffffffffffffffffffffffe1ffffffffffffffffffffffffffdff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffff3ffffffffffffce7356733ffccffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000e +7bbafffffffffffffffffffccf1e783fffffffffff182678f2609e0e7fffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000e +7aeefffffffffffffffffffcce4e733ffffffffffe6ce67572739cce67ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffdf +fffffffffffffffffffffffffffffffffffffffe +7bbafffffffffffffffffffccce6673ffffffffffcfce67df8f399ce67ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800ffffffffffffffffffffffffffffffffffffffffffffffffffffdf +fffffffffffffffffffffffffffffffffffffffe +7aeefffffffffffffffffffccce6673ffffffffffcfce67ff8f399ce7fffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800ffe7ffffffffff9fffffccfe7ffff3f9ffffffff3fffffffff1f1f +fffffffffffffffffffffffffffffffffffffffe +7bbafffffffffffffffffffe5ce6673ffffffffffcfce67ff27399ce7fffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcffcfffffffffff3fffffccfcfffff3f9fffc0fff3f87fffffe7f1f +fffffffffffffffffffffffffffffffffffffffe +7aeefffffffffffffffffffe5ce6673ffffffffffcfce67ff27399ce7fffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcffcfffffffffff3ffffffcfcfffffff9fffce7ff3f33fffffe7f1f +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffff3e4e723ffffffffffe6ce73fe7339c8ce7ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcff9e1f1c887c7e7221e1ccf9f06733c1e3fcf3c73f3f23c3901f1f +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffff3f1e793fffffffffff1e273fe7339e4ce7ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcff9fce6c42393e7108fcccf9e6673399c9fcf3933f1f11f9927f1f +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffffffffffffffff9ffffffff9f7ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcff3fccfce7333cf39cfcccf3ce67333999fcf3333f8f39f98e7f1f +fffffffffffffffffffffffffffffffffffffffe +7800ffffffffffffffffffffffffffffffffffffffffffffffffffffefffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcff3e0cfce7303cf39ce0ccf3ce67333981fcf3033fc739c19e7f1f +fffffffffffffffffffffffffffffffffffffffe +7000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00000009fcfe7cccfce733f9f39ccccce7ce6733399ffcf33f3fe339999e7f1f +fffffffffffffffffffffffffffffffffffffffe +7000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00000009fcfe7cccfce733f9f39ccccce7e46733399ffcf33f3ff339999e7f1f +fffffffffffffffffffffffffffffffffffffffe +7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffefffffffffff +ffffffc9fcfcfcce6ce739b3f39ccccccff2623391cdfce79b3f3339999e7f1f +fffffffffffffffffffffffffffffffffffffffe +7800ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffefffffffffff +ffffffc800fcfe271ce73c73f39ce24ccffe7133c9e3fc0fc73f8739c49e7f1f +fffffffffffffffffffffffffffffffffffffffe +7800ffe7ffffff9fffe7ff9ffffffcfffffffffff3ffffffffff9ffffff3ffff +fffff1fffffff3fffffffffe7fe7ffff9fffffffe27f3ff33fffefffffffffff +ffffffc800f9ffffffffffe7ffffffff9fccffffffffffffffffffffffffff1f +fffffffffffffffffffffffffffffffffffffffe +79fcffcfffffff3fffe7ff3ffffff9ffffffffffe7ffffffffff9fc0fff3f87f +ffffe7f9cffff3fffcfffffe7fe7ffff9fffffffce7f3ff33fffefffffffffff +ffffffcfffffffffffffffffffffffffffe1ffffffffffffffffffffffffffdf +fffffffffffffffffffffffffffffffffffffffe +79fcffcfffffff3fffe7ff3ffffff9ffffffffffe7ffffffffff9fce7ff3f33f +ffffe7f9cffff3fffcfffffe7fe7ffff9fffffffcfff3ff33fffefffffffffff +ffffffc000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000e +79fcff9ce70c9e7271e4fe7864e3f3c3e3910f8fcf0f8e443e3f9fcf3c73f3f2 +3c3901f9cc8f83c7fcfe3f1e67e7e44399ffe39c827838733c7e2fffffffffff +ffffffc800f7ffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +79fcff9ce67c9e7264e27e73e4cdf3f9cd884727cfe736211c9f9fcf3933f1f1 +1f9927f9cc473393fcfc9e4e6fe7e2119bffcd9cce733f33393ccfffffffffff +ffffffcbfef7ffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +79fcff3ce67c7cf1ce673cf3e39fe7f99f9ce6679fe67e73999f9fcf3333f8f3 +9f98e7f9cce67339fcf9cce65fe7e73997ff9fcdce673f333399efffffffffff +ffffffcbfef7ffffe67ff3fffff99fc9fffffff9effffffffff3fffffffffe7f +fffffffffffffffffffffffffffffffffffffffe +79fcff3ce61cfcf3ce673cf0e79fe7c19f9ce6079f067e73981f9fcf3033fc73 +9c19e7f9cce67339fcf9cce61fe7e73987ff9fe3ce6738333399efffffffffff +ffffffcbfef47c7fe67fe7fffff99f99fffffff383ffffffffe7fcfffffffe7f +fffffffffffffffffffffffffffffffffffffffe +79fcfe7ce70cf9f3ce6739f8679fcf999f9ce67f3e667e7399ff9fcf33f3fe33 +9999e7f9cce67339fcf9cce64fe7e73993ff9fe3ce6733333399efffffffffff +ffffffcbfef47c7ffe7fe7ffffff9f99fffffff329ffffffffe7fcfffffffe7f +fffffffffffffffffffffffffffffffffffffffe +79fcfe7ce7ccf9f3ce6739fe679fcf999f9ce67f3e667e7399ff9fcf33f3ff33 +9999e7f9cce67339fcf9cce64fe7e73993ff9fd9ce6733333399efffffffffff +ffffffcbfef53a70e67fce443c399f393f1e73e72f9ce1e393cf0838f271f07f +fffffffffffffffffffffffffffffffffffffffe +79fcfcfc47ccf3f3e4e673fe67cd9f99cd9ce7367e6736739cd99fce79b3f333 +9999e7fc9ce72393fcfc9e4e67e7e73999ffcd9cce723333393ccfffffffffff +ffffffcbfef53a7e667fce211f999f389e4e73e70f9ccfc993ce7cf27264e67f +fffffffffffffffffffffffffffffffffffffffe +7800fcfe261cf3f3f1e0f3f0e7e39fc4e39ce78e7f138e739e399fc0fc73f873 +9c49e7fe3ce793c7fc1e3f1e63e7e73998ffe39cce7938933c7e2fffffffffff +ffffffcbfef53a7e667f9e739f999e79cce737cf8f9ccf998f9e7ce731ccce7f +fffffffffffffffffffffffffffffffffffffffe +7800f9ffffffe7ffffffe7ffffff3ffffffffffcffffffffffffffffffffffff +ffffffffffffffffffffffffffe7ffffffffffffffffffffffffefffffffffff +ffffffcbfef59670667f9e739c199e79cce78fcfe39cc3819f9e1ce733c0ce7f +fffffffffffffffffffffffffffffffffffffffe +7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffefffffffffff +ffffffcbfef59666667f3e7399999cf9cce78f9fe19ce19f9f3f0ce733cfce7f +fffffffffffffffffffffffffffffffffffffffe +7000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000bfef5ce66667f3e7399999cf9cce7679fe99cf99f9f3fcce733cfce7f +fffffffffffffffffffffffffffffffffffffffe +7800ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfef5ce66667e7e73999999f99e4e733f2988f9cd9e7fccf273e6e47f +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfef5fe71267e7e739c4999f83f1e733f83c4c3e39e7e1e38f3f1f27f +fffffffffffffffffffffffffffffffffffffffe +7bbaffff13f9ff99fffffffffcff3fe7fffffe4fffe7fffffff9fffffffe7fff +ffe4fffe7fffffff9fffcfffffffffffffffffffffffffffffffffffffffffff +ffffffcbfef7fffffffcfffffffff3fffffffe7feffffffffcffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeefffe73f9ff99ffffcffffcfe7fe7fffffccffe73fefffff99f1ffffe7fff +ffccffe73fefffff99f9e7ffffffffffffffffffffffffffffffffffffffffff +ffffffcbfef7ffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbafffe7ff9ff99ffffcffffcfe7fe7fffffcfffe73fabfffff9e4ffffe7fff +ffcfffe73fabfffff9e1e7ffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeefce413c1c399e3f1830f0cccf8e4787239cc8c19fc7c739904e7ff8e4787 +239cc8c19fc7c7399079f3ffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbafce67399f999c9e6cfe67cdcf3623f3119cc4679fab933999ce7ff3623f3 +119cc4679fab933999f9f3ffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefffff3f3ffffffff3fffff99fc9fffffff9effffffffff3fffffff +ff9ffffffffffffffffffffffffffffffffffffe +7aeefe6e7339f9999ccfcfe67cbce7e73f3399cce679fef339b99ce7fe7e73f3 +399cce679fef339b99f9f3ffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefffff3f3fffffffe7fffff99f99fffffff383ffffffffe7fffffff +ff9ffffffffffffffffffffffffffffffffffffe +7bbaff1e7339c1999ccfcf061c3ce7e7383399cce679fff03c799ce7fe7e7383 +399cce679fff03c799f9f3ffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefffff3f3fffffffe7ffffff9f99fffffff329ffffffffe7fffffff +ff9ffffffffffffffffffffffffffffffffffffe +7aeeff1e733999999ccfce670c9ce7e7333399cce679fff3fc799ce7fe7e7333 +399cce679fff3fc799f9f3ffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefc8873327e3ce7fce443c399f393f1e73e72f9ce1e393ce47c73fb +ff93f1e73ffffffffffffffffffffffffffffffe +7bbafece733999999ccfce67cc9ce7e7333399cce679fff3fb399ce7fe7e7333 +399cce679fff3fb399f9f3ffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefc4233713c9ce7fce211f999f389e4e73e70f9ccfc993ce23933bb +ff89e4e73ffffffffffffffffffffffffffffffe +7aeefce673919999c9e6ce67ccce736733339ccce673fff9b3999e4e7f367333 +39ccce673fff9b3999f9e7ffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefce732f399ce6ff9e739f999e79cce737cf8f9ccf998f9e73333b3 +ff9cce737ffffffffffffffffffffffffffffffe +7bbafce673c9c499e3f1e3121cc678e738939ccce713fffc7399c71e7f8e7389 +39ccce713fffc7399c79e7ffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefce730f399cf1ff9e739c199e79cce78fcfe39cc3819f9e7303917 +ff9cce78fffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffff3ffffffffe7fffe7ffffffffffff7fffffff +ffe7fffe7fffffffffffcfffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefce7327399cf1ff3e7399999cf9cce78f9fe19ce19f9f3e733f917 +ff9cce78fffffffffffffffffffffffffffffffe +7bbafffffffffffffffffffffffffffffffffffffffffffffffffffeffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefce7327399cecff3e7399999cf9cce7679fe99cf99f9f3e733f847 +ff9cce767ffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefce733333c9ce7e7e73999999f99e4e733f2988f9cd9e7e739bccf +ff99e4e73ffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefce733107e3ce7e7e739c4999f83f1e733f83c4c3e39e7e73c7ccf +ff83f1e73ffffffffffffffffffffffffffffffe +7aeefe3fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffffffcfffffffff3fffffffe7feffffffffcfffffffff +01fffffffffffffffffffffffffffffffffffffe +7bbafcffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeefcffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbafe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeeff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefffffff33fff9ff9fffffffffffffe7f3fffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbafcffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefffffff33fff9db9fffffffffffffe7f3fffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeeff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffff3fffddbdfffffffffffffe7f3fffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbafe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefc8878733fffbdbbf878f221f1e1f0783271e1c3ffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeefcffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefc423f333ffff00ff3f27108e4fce6733264cf9fffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbafcffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefce73f333ffffdbff3e7339cccfcce6731cccf9fffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeefcffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefce738333f01fdbff0e7339cc0e0ce6733c0c387ffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbafe3fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefce733333ffff00ff867339ccfccce6733cfe1c3ffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefce733333ffffdbffe67339ccfccce6733cff9f3ffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefce733333ffffdbffe72739ce6cce47233e6f9f3ffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefce738933ffffdbff0f8f39cf1e2727933f1c387ffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbafffffffffffff13f9fffffc7ffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffce673f9fefff9ffffffffdffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800ffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffce67ff9fabff9ffffffff57fffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000e +7aeeffffffffffe4c13c1fc739049c7c7ff8e73fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000e +7bbaffffffffffe4e7399fab399c99393ff56733ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffdfffffffffffffffffffffffffffe +7aeefffffffffff1e7339fef9b9c73333ffdf373ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800ffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffdfffffffffffffffffffffffffffe +7bbafffffffffff1e7339fffc79cf0303ffff8ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800ffffffe67f3fff9fffffff9fffffe7ffffffffe3fffffff9ff9fff +ffffffffff31fffffffffffffffffffffffffffe +7aeeffffffffffe4e7339fffc79cf3f3fffff8ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcfc7c7fe67e7fff9fffffff3f81ffe7f0ffffffcff3fffff9ff9fc1 +ffcfe3e3ff31fffffffffffffffffffffffffffe +7bbaffffffffffe4e7339fffb39cf3f3fffff67fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc904fc7c7ffe7e7fff9fffffff3f9cffe7e67fffffcff3fffff9ff9fcc +ffcfe3e3fff1fffffffffffffffffffffffffffe +7aeeffffffffffce67391fff399cf9b9b3ffe733ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc904fd3a70e67ce44393f1e73e7f9e78e7e7e4787203f3f8fc799f9fcc +9c83e9d38731fffffffffffffffffffffffffffe +7bbaffffffffffce673c9fff399cfc7c73ffe733ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc904fd3a7e667ce21189e4e73e7f9e7267e3e23f324ff3f27939bf9fcc +9ccfe9d3f331fffffffffffffffffffffffffffe +7aeefffffffffffffffffffffffffffffbfffffbffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc904fd3a7e6679e7399cce737cff9e6667f1e73f31cff3e733997f9fcc +9ccfe9d3f331fffffffffffffffffffffffffffe +7bbafffffffffffffffffffffffffffff7fffff7ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc904fd96706679e7399cce78fcff9e6067f8e73833cff3e733987f9fc1 +9ccfecb38331fffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc904fd96666673e7399cce78f9ff9e67e7fc673333cff3e733993f9fcf +9ccfecb33331fffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc904fdce666673e7399cce7679ff9e67e7fe673333cff3e733993f9fcf +9ccfee733331fffffffffffffffffffffffffffe +7aeefffffffffffff1ffffffffffff33ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcfdce666667e73999e4e733ff9cf367e6673333cff3f279399f9fcf +88cfee733331fffffffffffffffffffffffffffe +7bbaffffffffffffe7ffffffffffff33ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800fdfe712667e73983f1e733ff81f8e7f0e73893cff078fc798f9fcf +c4e3eff38931fffffffffffffffffffffffffffe +7aeeffffffffffffe7fffffffffffff3ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800ffffffffcfffffffffffe7ffffffffffffffffffffffffffff9fff +fffffffffffdfffffffffffffffffffffffffffe +7bbaffffffffffce41271f1ffffe4733ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffdfffffffffffffffffffffffffffe +7aeeffffffffffce67264e4ffffe23333fffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000e +7bbaffffffffffe6e71ccccfc07e73333fffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800f00000000000000000000000000000000000000000000000007fff +fffffffffffffffffffffffffffffffffffffffe +7aeefffffffffff1e73c0c0ffffe7333ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfef00000000000000000000000000000000000000000000000007fff +fffffffffffffffffffffffffffffffffffffffe +7bbafffffffffff1e73cfcffc07e7333ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfef00000000030000c0380000000c000000000000000000000007fff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffece73cfcfffffe7333ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfef1f0f8000030000c0603018000c03e00180183e00e07000c7f7fff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffce673e6e6ffffe73333fffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfef3398c000030000c0603018000c06300180786701b0d801c7f7fff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffce673f1f1ffffe73333fffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfef0198c000036070d8f83198707c0c1873e0180303198c02c037fff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffbfffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfef019c800003b0d8ec603198d8cc0c18c980180603198cc4c067fff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800f030f000003198cc6601991998c0c198180181c03198cc8c0c7fff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbaf060f800003198cc6601ad1f98c0c19818018060318dc0fe187fff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeef0c19c00003198cc6601ad1818c0c198180180303186c0fe187fff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffe3ffff3fcf8fffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbaf1818c00003198cc6601ef1818c0c198180180303180c00c307fff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffcffffe7fe73fffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeef3f98c0000330d8cc600c60c8dc0630c980186701b198c0c307fff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffcffffe7fe73fffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbaf3f8f800003e070f8600c60706c03e070e0183e00e0f0c0c307fff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffff838f24fff39fffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeef00000000000000000000000000000000000000000000000007fff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffcf2724e673dfffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbaf00000000000000000000000000000000000000000000000007fff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffce731ce6733fffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffce733cfff3dfffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbaffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffce733cfff39fffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeeffffffffffcffffe7ffffe7fffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffce733cfff33fffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbafe0f87ffffcffffe7ffc027ffffe0fff3ff3e0ffcf01fc1e0fffff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffcf273e66673fffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeefcc733ffffcffffe7fff9e7ffffce7ff3fc3cc7f0f01f98cc7ffff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffcf8f3e66673fffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbaffe67fffffc9e7f667ff9e4739f9f3c60ff3fe7fcf7fffcfe7ffff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffff374f8fffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeeffe64fffffc4e7766fff9e2339f9f39b3ff3fe7fcf7f9f9fe7ffff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffeeffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbaffce27ffffce67665fff9e7339f9f33f3ff3fcffcf039e3fcfffff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeeff9e73ffffce722e1fff9e7339f9f33f3ff3f9ffcff1ff9f9fffff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbaff3e73ffffce722e4fff9e7339f9f33f3ff3f3ffcff9ffcf3fffff +fffffffffffffffffffffffffffffffffffffffe +7aeefffffffffffffffffffffcff1fffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeefe7e73ffffce708e4fff9e7339f9f33f3ff3e7ffcff9ffce7fffff +fffffffffffffffffffffffffffffffffffffffe +7bbafffffffffffffffffffffcce7fffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbafc0727ffffccf99e67ff9e7311fce79b3ff3c07fcf33998c07ffff +fffffffffffffffffffffffffffffffffffffffe +7aeefffffffffffffffffffffcce7fffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeefc078fffffc1f99e63ff9e7389fe0fc78ff3c07fcf879c1c07ffff +fffffffffffffffffffffffffffffffffffffffe +7bbafffffffffffffffffffe1c833fffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbaffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffcccfbfffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffccce7fffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbaffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeefffffffffffffffffffe0ccfbfffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbafffffffffffffffffffccccf3fffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbafffffffffffffe67ffffffffff3fffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeefffffffffffffffffffcccce7fffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeefe0e03fffffffe67fffcfe7fff3fc1ffe7ffe7c1ff9f07f83f3fff +fffffffffffffffffffffffffffffffffffffffe +7bbafffffffffffffffffffcccce7fffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbafcc603fffffffe67fffcfe7fff3f9cffe7ff8798fe1e63f31c3fff +fffffffffffffffffffffffffffffffffffffffe +7aeefffffffffffffffffffe24e27fffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeeffe6ffffffe1f064fffce678f83f3e78c1ffe7fcff9ff3ff9f3fff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffff1fffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbaffe6fffffffce6627ffce672733f3e7367ffe7fcff9ff33f9f3fff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeeffce07fffffcce673ffe66e6673f3e67e7ffe7f9ff9fe73f3f3fff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbaff9fe3ffffe0ce673ffe52e0673f3e67e7ffe7f3ff9fcffe7f3fff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeeff3ff3ffffccce673ffe52e7e73f3e67e7ffe7e7ff9f9ffcff3fff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbafe7ff3ffffccce673ffe10e7e73f3e67e7ffe7cfff9f3ff9ff3fff +fffffffffffffffffffffffffffffffffffffffe +7aeefffffffffffffffffffffffffffffffffbffffe67c7fffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeefc0667ffffcce4667fff39f3723f9cf367ffe780ff9e03301f3fff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffffffeafffffe793fffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbafc070fffffe27260ffff39f8f93fc1f8f1ffe780ff9e03301f3fff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffff1e1e1e3ff9fff1f1ce64139fffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbafffffffffffffffffffe6fccfc9fe3ffeae4ce667399ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbaffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeefffffffffffffffffffcffccf99fcffffbcce6e67399ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbafffffffffffffffffffcfe0c381f9fc07fc0f1e6739fffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbaffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeefffffffffffffffffffcfcce19ffcfffffcff1e6739fffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeefffffffffffe7ffffffffe7fffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbafffffffffffffffffffcfccf99ffe3ffffcfece6739fffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbafe0fe7fffffe7ffffffc027ffff8f8fffffe0f8ffc780fe0f87fff +fffffffffffffffffffffffffffffffffffffffe +7aeefffffffffffffffffffe6ccf9cdff9ffffe6ce667939ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeefcc7c7fffffe7fffffff9e7ffff8f8fffffcc727f9380fcc733fff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffff1e243e3ffffffff1ce671c79ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbaffe7a7fffff0644393ff9e4739fa74e1ccffe673f39fcffe67ffff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeeffe767ffffe6621193ff9e2339fa74fcccffe673f39f9cfe64ffff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbaffcee7ffffce67398fff9e7339fa74fcccffce73f39f3cfce27fff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeeff9e03ffffce67399fff9e7339fb2ce0ccff9e73f39e7ff9e73fff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbaff3e03ffffce67399fff9e7339fb2ccce5ff3e73f39e7ff3e73fff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffffffffcfffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeefe7fe7ffffce67399fff9e7339fb9ccce5fe7e73f39cffe7e73fff +fffffffffffffffffffffffffffffffffffffffe +7bbafffffffffffffffffffffffffffff7ffffccfcffffffffffcfffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbafc07e7ffffe467399fff9e7311fb9cccf3fc0727f93cfcc0727fff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffd5fffffcf0ffffffffff0fffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeefc07e7fffff267399fff9e7389fbfce273fc078ffc7cfcc078ffff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffe3e39cc83cfff3ffffffcfffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbaffffffffffffffffffffffffffffffffe7ffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffd5c99cccfcffc7ffffffcf3fffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800ffffffffffffffffffffffffffffffffe7ffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbafffffffffffffffffffffffffffff799cdccfcff9fffc07fcf3fffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000e +7aeeffffffffffffffffffffffffffffff81e3ccfcff3f80ffffcfffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000e +7bbaffffffffffffffffffffffffffffff9fe3ccfcff9fffc07fcfffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffeffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffff9fd9ccfcffc7ffffffcfffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800ffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffeffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffffcd9cccfcfff3ffffffcf3fffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800ffe7ffffff9fffe7ff9ffffffcfffffffffff3fffffcfffffffffc +7fffffff8ffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffffe39cce3cffffffffffcf3fffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcffcfffffff3fffe7ff3ffffff9ffffffffffe7f03ffcfe1ffffff9 +ff07ff3f8ffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffffffffffffffffffffffffbfffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcffcfffffff3fffe7ff3ffffff9ffffffffffe7f39ffcfccffffff9 +fe73ff3f8ffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcff9ce70c9e7271e4fe7864e3f3c3e3910f8fcff3cf1cfcfc8f0e40 +7cffc60f8ffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcff9ce67c9e7264e27e73e4cdf3f9cd884727cff3ce4cfc7c47e649 +fcff933f8ffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcff3ce67c7cf1ce673cf3e39fe7f99f9ce6679ff3ccccfe3ce7e639 +fcff333f8ffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcff3ce61cfcf3ce673cf0e79fe7c19f9ce6079ff3cc0cff1ce70679 +fcf3033f8ffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffffff3fffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcfe7ce70cf9f3ce6739f8679fcf999f9ce67f3ff3ccfcff8ce66679 +fcf33f3f8ffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffffff3fffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcfe7ce7ccf9f3ce6739fe679fcf999f9ce67f3ff3ccfcffcce66679 +fcf33f3f8ffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffc9c609cc923fffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcfcfc47ccf3f3e4e673fe67cd9f99cd9ce7367ff39e6cfccce66679 +fe739b3f8ffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffc99339cc9119ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800fcfe261cf3f3f1e0f3f0e7e39fc4e39ce78e7ff03f1cfe1ce71279 +ff03c78f8ffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffc73339cc7399ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800f9ffffffe7ffffffe7ffffff3ffffffffffcffffffffffffffffff +ffffffff8ffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffcf0339ccf39fffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffeffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffcf3f39ccf39fffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000e +7bbaffffffffffffffffffffffffffffcf3f39ccf39fffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800ffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffcf9b388cf399ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffcfc78c4cf399ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefffffcfe7fffffffffe7ffff3ffffffffe3ffffff9ffffffffffff +fffff3ffffffffcffff3f3fffffffffffffffffe +7aeefffffffffffffffffffffffffffffffffffffffdffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefffffcfe7fffffffffe7fe7f3ffffffffcfffffff9ffffffffffff +fffff3ffffffffcffff3f3fffffffffffffffffe +7bbafffffffffffffffffffffffffffffffffffffffbffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefffffffe7fffffffffe7fe7f3ffffffffcfffffff9ffffffffffff +fffff3fffffffffffff3f3fffffffffffffffffe +7aeef00000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000bfefe1f1cf07fffffffff070c1f23fffffff830cce1f9fffffffc9c79 +fdc3f3fffffcfecc8f83f3fffffffffffffffffe +7bbaf00000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000bfeffce6ce67ffffffffe67e67f11fffffffce7cccff9fffffffc9939 +dd9ff3fffffceecc4733f3fffffffffffffffffe +7aeef3ff80000000000000000000000000000000076030033000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000bfeffccfcce7ffffffffce7e67f39fffffffce7cccff9fffffffc7399 +d99ff3fffffceccce673f3fffffffffffffffffe +7bbaf200800000000000000000000000000000000c6030033000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000bfefe0cfcce7ffffffffce7067f39fffffffce1ccc3f9fffffffcf39c +8b87f3fffffe45cce673f3fffffffffffffffffe +7aeef203000000000000000000000000000000000c0030033000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000bfefcccfcce7ffffffffce6667f39fffffffcf0e5e1f9fffffffcf39c +8bc3f3fffffe45cce673f3fffffffffffffffffe +7bbaf20c0000000000000000e1e1e1c006000718df61f1e330e0700000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000bfefcccfcce7ffffffffce6667f39fffffffcfce5f9f9fffffffcf39c +23f3f3fffffe11cce673f3fffffffffffffffffe +7aeef2040000000000000001903303601c000c98cc63303331b0c80000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000bfefcce6ce47ffffffffe46667339fffffffcfcf3f999fffffffcf93e +67f333ffffff33cce72333fffffffffffffffffe +7bbaf2020000000000000003003306603000180c8c6630333319800000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000bfefe271cf27fffffffff27131339fffffffce1f3c399fffffffcfc7e +678733ffffff33cce79333fffffffffffffffffe +7aeef241000000000000000301f3c7e0603f98070c6631f33319800000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000bfeffffffffffffffffffffffffffffffffffffe7ffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaf26080000000000000030331e600300018070c6633333319800000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000bfeffffffffffffffffffffffffffffffffffffe7ffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeef2904000000000000003033066001c0018098c6633333319800000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000bfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaf28820000000000000019330632006000c98cc63733331b0c80000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000bfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeef3041000000000000000e1dbc1c000000718cc61b1db30e0700000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000bfeffffffffffff3fffffe67fcffcfffffffcfffff3ff3fffffffffff +e7e7ffffffffff13f9f9fffffffffffffffffffe +7bbaf00208000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000bfeffffffffffff3fffffe67fcffcfffffffcfffff3ff3fffffffffff +e7e7fffffffffe73f9f9fffffffffffffffffffe +7aeef00104000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000bfeffffffffffff3fffffe7ffcffcfffffffcfffff3ff3fffffffffff +e7e7fffffffffe7ff9f9fffffffffffffffffffe +7bbaffff8fffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefe1f1c887c7f3fffff0670ccfcfffffffcf1f8f33f3ffffffe1e39 +27e7fffffffce413c1f9fffffffffffffffffffe +7aeeffffdfffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffce6c42393f3ffffe6667cdfcfffffffce4f2737f3ffffffcfcd9 +27e7fffffffce67399f9fffffffffffffffffffe +7bbafffffffffffffffffffffffffffffffffffffc7fffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffccfce7333f3ffffce667cbfcfffffffcce6732ff3ffffffcf9f8 +e7e7fffffffe6e7339f9fffffffffffffffffffe +7aeefffffffffffffffffffffffffffffffffffff9ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefe0cfce7303f3ffffce661c3fcfffffffcce6730ff3ffffffc39f9 +e7e7ffffffff1e7339f9fffffffffffffffffffe +7bbafffffffffffffffffffffffffffffffffffff9ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefcccfce733ff3ffffce670c9fcfffffffcce67327f3ffffffe19f9 +e7e7ffffffff1e7339f9fffffffffffffffffffe +7aeeffffffffffffffffffffffffffffce7ffff39049c7c7ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefcccfce733ff3ffffce67cc9fcfffffffcce67327f3fffffff99f9 +e7e7fffffffece7339f9fffffffffffffffffffe +7bbaffffffffffffffffffffffffffffce7ffff399c993933fffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefcce6ce739b33ffffe467cccccfffffffce4f273333fffffff9cd9 +e667fffffffce6739199fffffffffffffffffffe +7aeeffffffffffffffffffffffffffffe6fe03f9b9c733333fffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefe271ce73c733fffff2661cc4cfffffffcf1f8f3133ffffffc3e39 +e667fffffffce673c999fffffffffffffffffffe +7bbafffffffffffffffffffffffffffff1fffffc79cf0303ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeefffffffffffffffffffffffffffff1fe03fc79cf3f3fffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffecfffffb39cf3f3fffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffeffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffce7ffff399cf9b9b3fffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffeffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffce7ffff399cfc7c73fffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffe7f3ffcfffffffffffffffe7ffffffffffffffffffffffffff +fff9effffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffffffffffffffffffbfffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffe7f3ffcfffffffffffffffe7fffffffffffffffffffffcffff +f3f9effffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffe7f3ffcfffffffffffffffe7fffffffffffffffffffffcffff +f3f9effffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefe1f078327cfffffff1ce78f8fe7fffffc8878723ffffffff838e7 +20f9effffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffce673327cffffffe4ce72737e7fffffc423f311ffffffffcf267 +33f9effffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffce39ff3fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffcce6731fcffffffcce6e667fe7fffffce73f339ffffffffce673 +73f9effffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffccf3ff9fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefe0ce6733fcffffffc0f1e067fe7fffffce738339ffffffffce078 +f3f9effffffffffffffffffffffffffffffffffe +7aeefffffffffffffffffffffffffffffcf3ff9fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefccce6733fcffffffcff1e7e7fe7fffffce733339ffffffffce7f8 +f3f9effffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffc82739cfffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefccce6733fcffffffcfece7e7fe7fffffce733339ffffffffce7f6 +73f9effffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffcce739cfffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefcce47233ccffffffe6ce7373667fffffce733339ffffffffcf367 +3399effffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffcce79bcfffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefe2727933ccfffffff1ce78f8e67fffffce738939ffffffffe38e7 +3899effffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffcce7c7cfffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffeffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffcce7c7cfffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffeffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffcce7b3cfffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffccf3399fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffccf3399fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefcffff8c7cfffffffe267ffe7ffffffffffff3f899ffffffffe7ff +ffff9ffffffffffffffffffffffffffffffffffe +7bbafffffffffffffffffffffffffffffff9ff3fffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefcffff39fcfffffffce67ffe7ffffffffffff3f399fffffffce7ff +ffff9ffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefcffff39fcfffffffcfe7ffe7ffffffffffff3f3f9fffffffcffff +ffff9ffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefc9e72007cfffffff82678fe7ffffffffc88732099e3fffff82644 +3e3f9ffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefc4e7339fcfffffffce6727e7ffffffffc42337399c9fffffce621 +1c9f9ffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffffffffffffff1fffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefce67339fcfffffffce6667e7ffffffffce732f39999fffffce673 +999f9ffffffffffffffffffffffffffffffffffe +7aeefffffffffffffffffffffffffffffffffffffffe7fffffffffffffffffff +ffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefce67339fcfffffffce6607e7ffffffffce730f39981fffffce673 +981f9ffffffffffffffffffffffffffffffffffe +7bbafffffffffffffffffffffffffffffffffffffffe7fffffffffffffffffff +ffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefce67339fcfffffffce667fe7ffffffffce73273999ffffffce673 +99ff9ffffffffffffffffffffffffffffffffffe +7aeefffffffffffffffffffffffffffffffffffffce41271f1ffffe73ffcfc8f +8e720fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefce67339fcfffffffce667fe7ffffffffce73273999ffffffce673 +99ff9ffffffffffffffffffffffffffffffffffe +7bbafffffffffffffffffffffffffffffffffffffce67264e4ffffe73ffe3c47 +267339ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefcce2339ccfffffffce673667ffffffffce7333399cdfffffce673 +9cd99ffffffffffffffffffffffffffffffffffe +7aeefffffffffffffffffffffffffffffffffffffe6e71ccccfc07f37fff9ce6 +673739ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefc1f1339ccfffffffce678e67ffffffffce7331399e3fffffe2673 +9e399ffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffffffffffff1e73c0c0fffff8f01fcce6 +078f3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7800ffffffffffffffffffffffffffffffffffffff1e73cfcffc07f8ffff9ce6 +7f8f3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfefffffffffffffffffffffffffffffffffffffece73cfcffffff67ffe3ce6 +7f673fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfefffffffffffffffffffffffffffffffffffffce673e6e6ffffe73ffcfce7 +367339ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfefffffffffffffffffffffffffffffffffffffce673f1f1ffffe73ffffce7 +8e7389ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefffffe7ffcfffffffe3ffffe7fffffffffffffffffcffffffffff3 +3f3ffffffffffffffffffffffffffffffffffffe +7bfeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffdffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefffffe7ffcfffffffcfffffe7fffffffffffffffffcffffffffe73 +3f3ffffffffffffffffffffffffffffffffffffe +7bfeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefffffe7ffcfffffffcfffffe7fffffffffffffffffcffffffffe7f +3f3ffffffffffffffffffffffffffffffffffffe +7bfeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeff1f1e70fcfffffff824787e47fffffffc9c7c19cfcffffffce413 +3f3ffffffffffffffffffffffffffffffffffffe +7bfeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefe6e4e67fcfffffffce233fe23fffffffc993999cfcffffffce673 +3f3ffffffffffffffffffffffffffffffffffffe +7bfeffffffffffffffffffffffffffffffcffffc7fffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefcfce667fcfffffffce733fe73fffffffc73339cdfcffffffce673 +3f3ffffffffffffffffffffffffffffffffffffe +7800ffffffffffffffffffffffffffffffcffff9ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefcfce661fcfffffffce730fe73fffffffcf0339e3fcffffffce673 +3f3ffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffffcffff9ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefcfce670fcfffffffce7387e73fffffffcf3f39e3fcffffffce673 +3f3ffffffffffffffffffffffffffffffffffffe +7bbafffffffffffffffffffffffffffff1ce1e3cffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefcfce67cfcfffffffce73e7e73fffffffcf3f91d9fcffffffce673 +3f3ffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffe4ccfc9effffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefe6e4e7cccfffffffce73e6673fffffffcf9bc99cccffffffc4673 +333ffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffccccf999ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeff1f1e61ccfffffffce730e673fffffffcfc7f99cccffffffe2713 +333ffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffc0cc381effffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefffffffffffffffffffffffffffffffffffff33fffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffcfce19fcffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800fffffffffffffffffffffffffffffffffffff87fffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffcfcf99f9ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000e +7bbaffffffffffffffffffffffffffffe6cf9cd9ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000e +7aeefffffffffffffffffffffffffffff1cc3e39ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcffff7ffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbafffffffffffffffffffffffffffffffffffc7fffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800f7ffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800f7ffe67ffff9fffffcfe7fffff9fffffffff8f9fffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcf7ffe67fe7f3fffffcfcfe07ff9fc3ffffff3f9fffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcf7ffe7ffe7f3fffffcfcfe73ff9f99ffffff3f9fffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbafffffffffffffffffffffffffffffffffffffffffffffffffffccfffff9f +e7ffffff8e7ff13f939fffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcf61f0678c1e7c7e3e0f9fe79e39f9f91e1c80f9fffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeefffffffffffffffffffffffffffffffffffffffffffffffffffccfffff3f +e7ffffff3cce673f99cfffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcf7ce667367e793c9ccf9fe79c99f8f88fcc93f9fffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbafffffffffffffffffffffffffffffffffffffffffffffffffffccfffff3f +ffffffff3cce67ff99cfffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcf7cce667e7cf39999cf3fe79999fc79cfcc73f9fffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeefffffffffffffffffffffffffffffffffffffce7ffffc7221e1ccf1f8e78 +66078f8e09e4c13c1ce7ffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcf60ce667e7cf39819cf3fe79819fe39ce0cf3f9fffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbafffffffffffffffffffffffffffffffffffffce7ffff93108fccce4f3673 +e7e7272739e4e7399ce67fffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcf4cce667e79f399f9ce7fe799f9ff19ccccf3f9fffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeefffffffffffffffffffffffffffffffffffffe6fe03f3339cfcccce67e73 +e7ce667339f1e7339ce67fffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcf4cce667e79f399f9ce7fe799f9ff99ccccf3f9fffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffffffffffff1fffff0339ce0ccce67e70 +e79e067339f1e7339ce7ffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcf4ce4673673f93cdc8cffe73cd9f999ccccf3f9fffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffffffffffff1fe03f3f39cccccce67e78 +679e7e7339e4e7339ce7ffffffffffffffffffffffffffffffffffffffffffff +ffffffc800f6272678f13fc7e3e4cffe07e39fc39ce24f3f9fffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbafffffffffffffffffffffffffffffffffffffecfffff3f39cccccce67e7e +673e7e7339e4e7339ce7ffffffffffffffffffffffffffffffffffffffffffff +ffffffc800f7fffffffe7fffffff9fffffffffffffffffff9fffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeefffffffffffffffffffffffffffffffffffffce7ffff9b39ccccce4f373e +667f37273cce673919ce7fffffffffffffffffffffffffffffffffffffffffff +ffffffcffff7ffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbafffffffffffffffffffffffffffffffffffffce7ffffc739ce24cf1f8f30 +e6078f8f3cce673c99ce7fffffffffffffffffffffffffffffffffffffffffff +ffffffc000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000e +7aeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9f +fffffffffe7ffffff39f7fffffffffffffffffffffffffffffffffffffffffff +ffffffc800fffffffffffffbffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffeffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefffffffffffffbffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefe3ffffffffe7bffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefcfff39ffffe7bffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeefffffffffffffffffffffffffffffffffffffffccfffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefcfff39ffffe7bffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbafffffffffffffffffffffffffffffffffffffffccfffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfef82720071f8e63ffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeefffffffffffffffffffffffffffffffffffffffccfffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefce7339e4f366bffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbafffffffffffffffffffffffffffffffffffffe1ccf1f8fe73ffcff1fffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefce7339ce67e5bffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffffffffffffccce4f37e73ffe3e6cffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefce7339ce67e1bffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffffffffffffcccce67ff37fff9cfcffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefce7339ce67e4bffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeefffffffffffffffffffffffffffffffffffffe0ccce67ff8f01fccffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefce7339ce67e4bffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbafffffffffffffffffffffffffffffffffffffccccce67ff8ffff9cffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefce2339e4f3663ffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeefffffffffffffffffffffffffffffffffffffccccce67ff67ffe3cffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefcf138c71f8e67ffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbafffffffffffffffffffffffffffffffffffffcccce4f37e73ffcfe6cffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefffffffffffffbffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeefffffffffffffffffffffffffffffffffffffe24cf1f8fe73fffff1cffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800fffffffffffffbffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbafffffffffffffffffffffffffffffffffffffffffffffffffffffffeffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000e +7aeefffffffffffffffffffffffffffffffffffffffffffffffffffffffdffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000e +7bbaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffefffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800ffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffefffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffffffffffffffffcffffffffffffcf0ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800ffffe67ffff9fffffcfe63ffffffffe7ffffffcfffffffffc7cfff +fffffffffffffefffffffffffffffffffffffffe +7aeefffffffffffffffffffffffffffffffffffffcffffcfffffffffff9ce67f +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcffffe67fe7f3fffffcfccfff39ffffe7ff03ffcfe1ffffff9fce0f +ffffff9efffff2fffffffffffffffffffffffffe +7bbafffffffffffffffffffffffffffffffffffffcffffcfffffffffff9ce67f +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcffffe7ffe7f3fffffcfccfff39ffffe7ff39ffcfccffffff9fce67 +ffffff8efffff2fffffffffffffffffffffffffe +7aeefffffffffffffffffffffffffffffffffffff830f0ccfce7ff9fe304cf3f +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcfe1f0678c1e7c7e3e0f982720071f8e67f3cf1cfcfc8f0e407ce64 +9c733f8ef8e721fffffffffffffffffffffffffe +7bbafffffffffffffffffffffffffffffffffffffcfe67cdfce7ffc7cd9ccf33 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcffce667367e793c9ccf9ce7339e4f366ff3ce4cfc7c47e649fce64 +99333fa6f26732fffffffffffffffffffffffffe +7aeefffffffffffffffffffffffffffffffffffffcfe67cbfe6ffff39f9ccf33 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcffcce667e7cf39999cf3ce7339ce67e5ff3ccccfe3ce7e639fce64 +73333fa6e67372fffffffffffffffffffffffffe +7bbafffffffffffffffffffffffffffffffffffffcf061c3ff1e03f99f9ccf3f +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcfe0ce667e7cf39819cf3ce7339ce67e1ff3cc0cff1ce70679fce0c +f0333fb2e078f2fffffffffffffffffffffffffe +7aeefffffffffffffffffffffffffffffffffffffce670c9ff1ffff39f9ccf3f +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcfccce667e79f399f9ce7ce7339ce67e4ff3ccfcff8ce66679fce7c +f3f97fb2e7f8f2fffffffffffffffffffffffffe +7bbafffffffffffffffffffffffffffffffffffffce67cc9fecfffc79f9ccf3f +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcfccce667e79f399f9ce7ce7339ce67e4ff3ccfcffcce66679fce7c +f3f97fb8e7f672fffffffffffffffffffffffffe +7aeefffffffffffffffffffffffffffffffffffffce67cccfce7ff9fcd9ce673 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcfcce4673673f93cdc8cfce2339e4f3667f39e6cfccce66679fce7c +f9bcffb8f36732fffffffffffffffffffffffffe +7bbafffffffffffffffffffffffffffffffffffffe3121cc7ce7ffffe3c4e673 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800fe272678f13fc7e3e4cfcf138c71f8e63f03f1cfe1ce71279fce7c +fc7cffbcf8e739fffffffffffffffffffffffffe +7aeefffffffffffffffffffffffffffffffffffffffffffffffffffffffff0fb +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800fffffffffe7fffffff9fffffffffffffffffffffffffffffffcfff +fffffffffffffefffffffffffffffffffffffffe +7bbafffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffefffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000e +7bbaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800f7ffffffffffffff9fffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffff8fffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfef7ffffffffffffff9fffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfef63ffffffffe7ff99f1fffffe7cfffffffffffffffe7ffffffff8f +fffffff9ffffff3fff0ffffff9fffffffffff9fe +7aeeffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfef4fff39ffffe7ff39e7ff9ffe7e7ff9efffff3fff3e7fffff07f3f +fffe7ff9ffffff3fff3ffffff9fffffffffff9fe +7bbaffffffffffffffffffffffffffffcfffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfef4fff39ffffe7ff39e7e79e1e7e7ff8efffff3fff3e7ffffe73f3f +fffe7ff9ffffff3fff3ffffff9fffffffffff9fe +7aeeffffffffffffffffffffffffffffdfffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfef02720071f8e67e7fc1c705ce673ff8ef0e720ffe9e70f1fe73e0e +3f1c1ff91f1f8f33ff393c9c793fffe1e1fc39fe +7bbaffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800f4e7339e4f366fe7fe7d39fe66f3ffa6fe6733ffe9e67e4fe37f3c +9e4e7ff88e4f2737ff389c99389ffffccfff99fe +7aeeffffffffffffffffffffffffffffdfffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeef4e7339ce67e5fe7fe7939fe65f3ffa6fe6733ffcce67ce7f0ff39 +cce67ff9cce6732fff39cc7399cffffccfff99fe +7bbaffffffffffffffffffffffffffffcfffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbaf4e7339ce67e1fe7fe7939c061f3ffb2f06733ffdce61ce7f07f39 +cce67019cce6730fff39ccf399cfffe0c3fc19fe +7aeeffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeef4e7339ce67e4fe7fe7399ce64f3ffb2e66733ff80e70ce7e63f39 +cce67ff9cce67327ff39ccf399cfffcce1f999fe +7bbaffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbaf4e7339ce67e4fe7fe7399cce4f3ffb8e66733ff9e67cce7e73f39 +cce67ff9cce67327ff39ccf399cfffccf9f999fe +7aeeffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeef4e2339e4f3667f3fe7399e1e6673fb8e662339f9e67ce4fe73f3c +9e4e7ff9ce4f27333f399cf9399ccfccf9f999fe +7bbaffffffffffffffffffffffffffff8fffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbaf4f138c71f8e63f3fe7ffc7fe6273fbcf131389f9e661f1ff07f3e +3f1f1ff9cf1f8f313f383cfc783ccfe243fc49fe +7800ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeef7fffffffffffff9ffffffffffcfffffffffffffffffffffffffff +ffffffffffffffffff09ffffffffeffffffffffe +7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbaf7ffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffff9ffffffffdffffffffffe +7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbaffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeeffffffff9fffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbaffffffff9fffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeeffffffff9fffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbafc9c787c199fffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeefc993f39999fffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbafc733f33999fffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeefcf03833999fffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbafcf3f3339cbfffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeefcf3f3339cbfffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbafcf9b3391e7fffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeefcfc789c9e7fffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000bbafffffffffcffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000aeefffffffffcffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7ffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbaffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7800f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7800f7ffff3f9fcffffffff9fff3ffffffe7ffffffffe3e7ffffffff9ffffff3 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbaffffffffffffffffff9f9fffffffffffffffffffffffffffffffff +fffffffff9fffcffffffffc7e3fffffffe7ffffe +79fcf79fff3f9f9c1f1f87f3fe73ff81ffe7f0ffffffcfe7f0ffffff9fc0fff3 +ff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeefffffffffffffe7fff9f9ffffffffff9fff9f87f3f9fffffffffff +fffffffff9ff9cffffffff9fcfffff9ffe7ffffe +7904f79fffff9f998e4f33f3fe73ff9cffe7e67fffffcfe7e67fffff9fce7ff3 +ff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbafffffffffffffe7fff9ffffffffffff9ffe1f33e3f1fffffffffff +ffffffffffff9fffffffff9fcfffff9ffe7ffffe +7904f74fc73c1f3fcce67fe784133f9e78e7e7e4787203e7e7f8e47c1fcf3c73 +c60e3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeefe19cf0783c7841c7c1f991ff0673c707ff9e7fd3e9ffe1fc9e4e3 +c8e7323e39c304f1e47fc707838fc707fe47c7fe +7904f74f9b399f3f9ce64fe73e737f9e7267e3e23f324fe7e3f262399fcf3933 +933c9fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbafcf9ce6733933e79399f988fe6673939fff9e4fb3d9fffcfc4e4c9 +c467311cd9f99ce4e23f939fcf27939ffe2393fe +7904f6673f339e7e3ce627cf3e72ff9e6667f1e73f31cfe7f1e667339fcf3333 +33399fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeefcf9cce673333e73339f99cfce673399fff9e2773b9fffcfce639c +ce673399f9f99cce673f399fce73399ffe7339fe +7904f6e73f339e7f9e4673cf0e70ff9e6067f8e73833cfe7f8e067339fcf3033 +03381fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbafc39cce673030e70339f99cfce673399fff9e730180ffe0fce679c +ce673399f9c19cce673f399fce73399c067339fe +7904f4073f339cffcf26739f86727f9e67e7fc673333cfe7fc67e7339fcf33f3 +3f39ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeefe19cce6733f8673f39f99cfce673399fff9e730180ffccfce679c +ce673399f9999cce673f399fce73399ffe7339fe +7904f4f33f339cffcfe6739fe6727f9e67e7fe673333cfe7fe67e7339fcf33f3 +3f39ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbaff99ce47233fe673f39f99cfce673399fff9e73f3f9ffccfce679c +ce673399f9999cce673f399fce73399ffe7339fe +79fcf4f39b3919f98ccf273fe6733f9cf367e6673333cfe7e67367391fce79b3 +9b3cdfffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeeff988f27939be679b91f99cfe4623939cff9f27f3f9cfccfcce7c9 +ce62339cd9999ce4e73f939fcf27939ffe7393fe +7800f4f3c73c99fc1e1f8f3f0f131f81f8e7f0e73893cfe7f0f8e73c9fc0fc73 +c78e3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbafc3c4fe7f3c70f1c7c9f99cff2713c7c4ff9f8ff3f9cfe27c1e7e3 +ce71339e39c4c4f1e73fc79fcf8fc7c7fe73c7fe +7800f7fffffff3fffffffe7fffffffffffffffffffffffe7ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeefffffcce67fffffffffffffffe7ffffffffffffffffeffffcfffff +fffffffffffffffffffffffffffffffffffffffe +7ffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbafffffe1f0ffffffffffffffffe7ffffffffffffffffdffffcfffff +fffffffffffffffffffffffffffffffffffffffe +7000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000aeeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7800f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbaffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeef7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeefffe7ff9ffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaf7fffffff9ffffffffcfffffff9fffffffffcffffffffe7fffffffffffff +ffffffffffffffffffffffffffffffe7ffffffff3fffffff9ffffff3ffffffff +ffffffcbbafffe7ff3fffffffffffffcffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeef60ffffff9ffffffe1cfffffff3df07fffffcfffffff0e7fffffffffff8f +ffe3f1f8ff380f9e03c7fef83fffffe7ffffff873fffffff9ffffff3ffe3fff8 +fc7e3fcaeefffe7ff3fffffffffffffcffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaf667fffff9ffffffcccfffffff35733fffffcffffffe667fffffffffff27 +ffc9e4f27e380e1e0393fab99fffffe7ffffff333fffffff9ffffff3ffc9fff2 +793c9fcbbaff1e67e7878f8ff8339e383fffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeef6678e47c1e381ffcfcf1f1c9e78f33c723e0f1c0ffe7e78f8e4ff27fe73 +399cce673d3bff9ff339fc799e391f078e07ff3f3c7c727f93f1f8f3ff9cce67 +3399cfcaeefe4e6fe73f2727f3339c9cffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaf66f262399c9f9ffc7ce4e4c4e757379311cce4fcffe3e7272627327fe73 +399cce673b3bff9fe739fab9bc988e6727e7ff1f3939313989e4f273ff9cce67 +3399cfcbbafce65fe73e6667e73399ccffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeef61e66733999f3ffe3cccccce67df0f33399cccf9fff1e666667331c0673 +9b9cce6737381f9fcf39fef87999cce667cfff8f333333999cce6733019ce6e7 +3399cfcaeefce61fe70e0607e73399ccffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaf64e06733981e7fff1cc0c0ce67ff2703399cc0f3fff8e6060673f3ffe73 +c79cce67301f8f9f9f39fff93819cce6079fffc73030339f9cce6733ff9cf1e7 +3399cfcbbafce64fe7867e7fe73399ccffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeef6667e73399fe7fff8ccfcfce67ff333f399ccff3fffc667e7e73f3c0673 +c79cce67301fcf9f9f39fff999f9cce67f9fffe333f3f39f9cce6733019cf1e7 +3399cfcaeefce64fe7e67e7fe73399ccffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaf6667e73399fcffffcccfcfce67ff333f399ccfe7fffe667e7e73f3ffe73 +b39cce673f3fcf9f3f39fff999f9cce67f3ffff333f3f39f9cce6733ff9cece7 +3399cfcbbafe4e67f3e73737f2311c9ce7ffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeef673367391cd9fffccce6e6ccf3ff399b39c8e6cfffe66737366733fff27 +39c9e4f27f399f9f3f939ff9ccd9ce47367fff3339b9b33999e4f273ffc9ce72 +793c9fcaeeff1e63f30f8f8ff9389e3e27ffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaf6738e73c9e381ffe1cf1f1c1f3ff39c739e4f1c0fff0e78f8e0f33fff8f +39e3f1f8ff3c3f9f3fc79ff9ce39cf278e07ff873c7c707983f1f8f3ffe3ce78 +fc7e3fcbbafffffff9ffffffff3fffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeef7ffffffffffff80fffffffcff9ffffffffffffffc07ffffffe7ffffffff +ffffffffffffffffffffdffffffffffffffe03fffffff3ffffffffffffffffff +ffffffcaeeffffffffffffffff3fffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaf7fffffffffffffffffffffcffffffffffffffffffffffffffe7ffffffff +ffffffffffffffffffffbffffffffffffffffffffffff3ffffffffffffffffff +ffffffcbbaffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbaffffffffff9fc3ffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeefffffffffffffffffffffff9ffffffffcfffffffffffffffffffffffffff +ffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeeff9e03c3e3cff3ffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaffce03e780e0ffbe0ffffff9ffffffe1cfffffffe7ffe3fff8fc7e3f1f8f +c7e3f1e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbafe1e0399c9cff3ffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeeff8e038780ce7eae67fffff9ffffffcccfffffffe7ffc9fff2793c9e4f27 +93c9e4e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeeff9ff33f9ce7f3ffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaff4effe7fcce7f1e678e47c1e381ffcfcf1f1c9fc1ff9cce673399cce673 +399cce73ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbaff9fe7279ce7f3ffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeefeceffe7f9c6feae6f262399c9f9ffc7ce4e4c4e67ff9cce673399cce673 +399cce73ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeeff9fcf139ce7f3ffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbafdce07e7f3e1ffbe1e66733999f3ffe3cccccce667019ce6e73399cce673 +399cce73ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbaff9f9f39c8e7f3ffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7800fc07e3e7e7e0fffe4e06733981e7fff1cc0c0ce7e7ff9cf1e73399cce673 +399cce73ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeeff9f9f39e4e7f3ffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfefc07f3e7e7cc7ffe667e73399fe7fff8ccfcfce7e7019cf1e73399cce673 +399cce73ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbaff9f3f39fce7f3ffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfeffcff3e7cfce7ffe667e73399fcffffcccfcfce7e7ff9cece73399cce673 +399cce73ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeeff9f3f9399ce73ffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfeffce67e7cfce67fe73367391cd9fffccce6e6cce67ffc9ce72793c9e4f27 +93c9e4e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbaff9f3fc7c3ce73ffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfeffcf0fe7cfe0e7fe738e73c9e381ffe1cf1f1c1e71ffe3ce78fc7e3f1f8f +c7e3f1e7ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeeffffffffff9fc3ffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfefffffffffffff7ffffffffffffff80fffffffcffffffffffffffffffffff +ffffffcfffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbaffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfeffffffffffffeffffffffffffffffffffffffcffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbaffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeefffffffffffffffffff8ffcffffffff9fcfe67ffff3fffcfffffff +fffc7fe7ffff8ffffffffffffe3fffffcfe7fffe +7bfeffffffffffffffccfffe7f1ffffffffffffffffffffffffcffffffffffff +fffffffe7ffffff9ffffffcff9ffc7e4ccfff3fff9fffffcff9ffc7cffffffff +ffffffcbbaffff9ffff83ffffffff3f9cffffffff9fcfe67ffe73fffcfffffff +fff9fce7ffff3ffffffffffffcffffffcfe7fffe +7bfeffffffffffffffccfffe7e7fffffffff3f3f0303fffffffcffe7ffe3fffc +f83f9ffcfffffff3ffffff9ff9ff9fccccffe7fff9fffff9ff9ff9fcfc070783 +ffffffcaeefffe1ffff39ffffffff3f9cffffffffffcfe67ffe7ffffcfffffff +fff9fce7ffff3ffffffffffffcffffffcffffffe +7bfeffffffffffffffccfffe7e7fffffffff3f3f3f3fffffffffffe7ffc9fff0 +f39f1ffcfffffff3ffffff9ff9ff9fccfcffe7fffffffff9ff9ff9fcfc067331 +ffffffcbbaffff9fffe7cc8f8ff8e0f048f8fe4439e0f0678fc13221c9f8e4c3 +fc7078247c7e0930e443e3fe383f0ff0c8e64ffe +7bfefffffffffff1e1ccf1f07c1271e443fe9f3f3f3fff271cccc8c1ef9cce7c +f39e9ff9e199c3e7864e3f3c39e3079ccc9fce443993e1f3c39e307cfdfe73f9 +ffffffcaeeffff9fffe7cc4727f273f9c4727e2119cce66727e73108c4f2649f +f939fce2393f393e6211c9fc9cffe7e7c46627fe +7bfeffffffffffe6fccce4e67e7264e211fe9f3f3f3fff266cccc467ef9cce7c +f1bd9ff9cf999fe73e4cdf3f99c99f9ccc4fce211989cff3f99c99fccdfe37f9 +ffffffcbbaffff9fffe7cce667e733f9ce667e73999cce6667e7339cce66639f +f399fce7333f38fe673999f9ccffe7e7ce6673fe +7bfeffffffffffcffcccccce7e71ce6739fccf3f0707ff1cfcccce67ef9ce6fc +f87b9ff3cf999fcf3e39fe7f99999f3ccce79e73999ccfe7f99999fccc0f0ff3 +ffffffcaeeffff9fffe7cce607e733f9ce607e73999cce6607e7339cce606787 +f399fce7303f39f0673981f9ccff07e1ce6673fe +7bfeffffffffffcfe0ccc0ce7e73ce6739fdcf3f3f3fff3cfcccce67019cf1fc +f8380ff3c39987cf0e79fe7c19819f3ccce79e73999cc3e7c19819fcffc707e7 +ffffffcbbaffff9fffe7cce67fe733f9ce67fe73999cce667fe7339cce67e7c3 +f399fce733ff39e667399ff9ccfe67f0ce6673fe +7bfeffffffffffcfcccccfce7e73ce6739f80f3f3f3fff3cfe5cce67ef9cf1fc +f3180fe7e1cbc39f8679fcf9999f9e7ccce73e73999ce1cf9999f9fcffe663cf +ffffffcaeeffff9fffe7cce67fe733f9ce67fe73999cce667fe7339cce67e7f3 +f399fce733ff39e667399ff9ccfe67fcce6673fe +7bfeffffffffffcfcccccfce7e73ce6739f9e73f3f3fff3cfe5cce67ef9cecfc +f39f9fe7f9cbf39fe679fcf9999f9e7ccce73e73999cf9cf9999f9fcffe6739f +ffffffcbbaffff9e7ff39ce737f273f9ce737e7399c8e46737e7339cccf367f3 +f939fce739bf39e66739cdfc9cfe67fcce66673e +7bfeffffffffffe6cccce6e47e73e4e739f9e73f3f3fff3e6f3cce67efc9ce7c +f39f9fcff9e7f33fe67cd9f999cd9cfcccce7e739999f99f999cd9ccccce7301 +ffffffcaeeffff9e7ff83ce78ff8f3fc4e78fe7399e4f2678ff1339cc1f8e787 +fc79fe273c7f39f12739e3fe3cff13e1ce660f3e +7bfefffffffffff1e24cf1f27e73f1e739f9e707033fff3f1f3cce71ffe3ce7c +f83f9fcfc3e7873f0e7e39fc49e39cfccc1e7e739983c39fc49e39ccce1f0701 +ffffffcbbaffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffe7fbe +7bfefffffffffffffffffffffffffffffffffffffffe03ffffffffffffffffff +ffffff9fffcffe7ffffff3fffffff9fffffcffffff9fff3fffffffffffffffff +ffffffc800ffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffe7f7e +7bfeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffcfffffffffffffffffffffffffffffff9fffffffffffffffffffff +ffffffc000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000e +7bfeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000e +7bfeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcffff7ffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfefffffffffffffffffe7fffe7fffffffffffffffffcffffffffffffffffff +fffffffffffff9ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800f7ffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfeff9f9f8181fffffffe7ff3cf7f3f3f0303fffffffcffe7fffffe3fff8fc7 +e3fce03e7c1ffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800f7e7ffffffffff9ffff3f9fcfffffff3f9ffffff3fffffffff1f3f +fffffffcffffff9ffffffffffffffffffffffffe +7bfeff9f9f9f9ffffffffffff3cd5f3f3f3f3fffffffffffe7fffffc9fff2793 +c9f8e038798ffcffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcf7cfffffffffff3ffff3f9f9fff9fff3f9fc0fff3f87fffffe7f3f +87fffffcfe07ff9ff9fffffffffffffffffffffe +7bfeff4f9f9f9fff938e6664609e3e9f3f3f3fff271cccc8c1fc7ff9cce67339 +9cf4effe7fcf1e7fffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc904f7cfffffffffff3ffffff9f9fff9fffff9fce7ff3f33fffffe7f3f +33fffffcfe73ff9ff9fffffffffffffffffffffe +7bfeff4f9f9f9fff93366662339d5e9f3f3f3fff266cccc46739bff9cce67339 +9ceceffe7fce6e7fffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc904f79e1f1c887c7e787c73c1f3fff4fc73c1fcf3c73f3f23c3901f3f +3fc723e0fe79e39e3071fffffffffffffffffffe +7bfefe679f8383ff8e7e6667339f7ccf3f0707ff1cfcccce6733f019ce6e7339 +9cdce07e7f9cfe7fffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc904f79fce6c42393e7f39b399f3fff4f9b399fcf3933f1f11f9927f3f +1f9311ccfe79c99c99e4fffffffffffffffffffe +7bfefee79f9f9fff9e7e6667339ffdcf3f3f3fff3cfcccce67f3fff9cf1e7339 +9cc07e3e7f3cfe7fffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc904f73fccfce7333cff33f339e7ffe673f339fcf3333f8f39f98e7f3f +8f33399cfe79999999ccfffffffffffffffffffe +7bfefc079f9f9fff9e7f2e67339ff80f3f3f3fff3cfe5cce67f3f019cf1e7339 +9cc07f3e7e7cfe7fffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc904f73e0cfce7303cf833f339e780ee73f339fcf3033fc739c19e7f3f +c703399cfe79819819c0fffffffffffffffffffe +7bfefcf39f9f9fff9e7f2e67339ff9e73f3f3fff3cfe5cce67f3fff9cece7339 +9cfcff3e7cfcfe7fffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc904f67cccfce733f9f333f339cfffc073f339fcf33f3fe339999e7f3f +e33f399cfe799f99f9cffffffffffffffffffffe +7bfefcf39f9f9fff9f379e6733cff9e73f3f3fff3e6f3cce6739bffc9ce72793 +c9fce67e780e6cffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc904f67cccfce733f9f333f339cfffcf33f339fcf33f3ff339999e7f3f +f33f399cfe799f99f9cffffffffffffffffffffe +7bfefcf383819fff9f8f9e6738cff9e707033fff3f1f3cce713c7ffe3ce78fc7 +e3fcf0fe780f1cffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcf4fcce6ce739b3f339b3919fffcf39b391fce79b3f3339999e7f3f +339b39c8fe73cd9cd9e6fffffffffffffffffffe +7bfeffffffffff01ffffffffffe7fffffffffe03ffffffffffffffffffffffff +fffffffffffff9ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800f4fe271ce73c73f89c73c99fffcf3c73c9fc0fc73f8739c49e7f3f +87c739e4fe07e39e3c71fffffffffffffffffffe +7bfeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800f1ffffffffffe7ffffffff3fffffffffffffffffffffffffffff3f +fffffffffffffffffffffffffffffffffffffffe +7bfeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcffff7ffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000e +7bfeffffffffffffffccfffe7f1fffffffffcfffffffffffffffffffffffffff +ff9ffffffe7fff9ffe7ffffff3ffffffffffcfcfffffff3fffffffffffffffff +ffffffc800ffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfeffffffffffffffccfffe7e7ffffffff9cffffffffffffffffe3fffcfffff +ff3ffffffcffff9ffcffffffe7ffffffffff99cfffffff3fc3c1ffffffffffff +ffffffcaeeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfeffffffffffffffccfffe7e7ffffffff9fffffffffffffffffc9fff0fffff +ff3ffffffcffff9ffcffffffe7ffffffffff99ffffffff3f9998ffffffffffff +ffffffcbbafffffcfe7ffffff3ffffff3ffffe7ffffffcffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfefffffffffff1e1ccf1f07c1271e443f04c887c727938fc7ef9cce7cfc7c7 +fe739c3279c9c793f9e1938fcf0f8e443e3f304c887c7f3f3ffcffffffffffff +ffffffcaeefffffcfe7ffffff3fffffe7bffce7ffffffe7fffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfeffffffffffe6fccce4e67e7264e211f9cc423931393279bef9cce7cf9b9b +fe7399f279c99389f9cf9337cfe736211c9f39cc42393f3327f9ffffffffffff +ffffffcbbafffffffe7ffffff3fffffe6affcffffffffe7fffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfeffffffffffcffcccccce7e71ce6739f9cce7333398e733fef9ce6fcf3f3f +fcf399f1f3c7399cf3cf8e7f9fe67e73999e79cce7333f3313e3ffffffffffff +ffffffcaeefe1f1cf07fe4fc723c391cf1f1826443e3933fffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfeffffffffffcfe0ccc0ce7e73ce6739f9cce7303399e733f019cf1fcf3f3f +fcf39873f3cf399cf3c39e7f9f067e73981e79cce7303f3f39f9ffffffffffff +ffffffcbbaffce6ce667e279b11f988ceae6ce6211c9933fffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfeffffffffffcfcccccfce7e73ce6739f9cce733f399e733fef9cf1fcf3f3f +f9f39c33e7cf399ce7e19e7f3e667e7399fcf9cce733ff3f39fcffffffffffff +ffffffcaeeffccfcce67e733f39f99ccfbcfce6739998f3fffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfeffffffffffcfcccccfce7e73ce6739f9cce733f399e733fef9cecfcf3f3f +f9f39f33e7cf399ce7f99e7f3e667e7399fcf9cce733ff3f39fcffffffffffff +ffffffcbbafe0cfcce7fe733f39c19ccffcfce6739819f3fffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfeffffffffffe6cccce6e47e73e4e739f9cce739b339f279befc9ce7cf9b9b +f3f11f33cfcf9399cff99f367e6736739cd9f9cce739b3339398ffffffffffff +ffffffcaeefcccfcce7fe733f39999ccffcfce67399f9f3fffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfefffffffffff1e24cf1f27e73f1e739fc4ce73c7079f8fc7ffe3ce7cfc7c7 +f3f89873cfcfc783cfc39f8e7f138e739e39fc4ce73c7333c7c1ffffffffffff +ffffffcbbafcccfcce7fe733f39999ccffcfce67399f9f3fffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfefffffffffffffffffffffffffffffffffffffff3ffffffffffffffffffff +e7ffffff9fffffff9ffffffcfffffffffff3ffffffffffffffffffffffffffff +ffffffcaeefcce6ce467e679b39999ce7fe6ce6739cd9e7fffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfefffffffffffffffffffffffffffffffffffffff3ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbafe271cf267e0fc739c49ce7ff1e26739e39e7fffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeeffffffffffe7ffffffffff3ffffffffffffcffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbaffffffffffe7ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfeffe7fffffffffffffe1fffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfefce7fffffffffffffccfffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbaffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfefcfffffffffffffffccfffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeeffffffffffffffe7ffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfef826443e393c9c7e39e7ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbafe7bffffffffffe7ffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfefce6211c989c993cd9e7ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeefe3bffffffffffe7ffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfefce6739999cc7399f9e7ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbafe3be3fe1e391f078e4fffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfefce6739819ccf399f9e7ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeefe9bc9fcfc988e67264fffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfefce67399f9ccf399f9e7ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbafe9b9cfcf999cce6663fffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfefce67399f9ccf399f9e7ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeefecb9cfc3819cce6067fffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfefce6739cd99cf93cdccfffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbafecb9cfe19f9cce67e7fffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfefe26739e383cfc7e3ccfffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeefee39cff99f9cce67e7fffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfefffffffff9fffffffe1fffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbafee3c9ff9cd9ce47367fffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7800fffffffff9ffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeefef3e3fc3e39cf278e7fffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbaffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffccfffe7f1fffffffffffffffffff33ff9fffffffffffff +fffffe7ffffff9ffffffcff9ffc7e4ccfff3fff9fffffcff9ffc7fffffffffff +ffffffcbbaffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffccfffe7e7fffffffff3f3f0303ff33ff9ffffffff1fffe +7c1ffcfffffff3ffffff9ff9ff9fccccffe7fff9fffff9ff9ff9ffffffffffff +9f07ffcaeeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffccfffe7e7fffffffff3f3f3f3fff3fff9fffffffe4fff8 +79cffcfffffff3ffffff9ff9ff9fccfcffe7fffffffff9ff9ff9fffffffffffe +1e63ffcbbafffffffffe7fffffffffff9fcfffffff3fffe31fffffffffffffff +ffffffffe7fffffffffffffffffffffffffffffe +7aeefffffffffff1e1ccf1f07c1271e443fe9f3f3f3fff332399c327f7ce673e +79cff9e199c3e7864e3f3c39e3079ccc9fce443993e1f3c39e3061e1910ff0ff +9ff3ffcaeefe0ffffffe7fffffffffff99cfffffff3fffce7fffff1fffc7e3f1 +fe701f3fe7fffffffffffffffffffffffffffffe +7bbaffffffffffe6fccce4e67e7264e211fe9f3f3f3fff33119b9f13f7ce673e +78dff9cf999fe73e4cdf3f99c99f9ccc4fce211989cff3f99c99fccf8847e7cf +9fe7ffcbbafe67fffffffffffffffffff9ffffffff3fffce7ffffe4fff93c9e4 +fc701c3fe7fffffffffffffffffffffffffffffe +7aeeffffffffffcffcccccce7e71ce6739fccf3f0707ff3339979f39f7ce737e +7c3ff3cf999fcf3e39fe7f99999f3ccce79e73999ccfe7f99999fccf9ce7e7cf +9f8fffcaeefe678f8f8e6678e4f9fdc3904c8f83ff279c801c727ce673399cce +7a7f9f3f078ffffffffffffffffffffffffffffe +7bbaffffffffffcfe0ccc0ce7e73ce6739fdcf3f3f3fff333987873980ce78fe +7c1ff3c39987cf0e79fe7c19819f3ccce79e73999cc3e7c19819e0c39ce7e1ff +9fe7ffcbbafe6f273726667264f9ddf999cc47333f139cce79327ce673399cce +767f3f3e6737fffffffffffffffffffffffffffe +7aeeffffffffffcfcccccfce7e73ce6739f80f3f3f3fff333993c339f7ce78fe +798fe7e1cbc39f8679fcf9999f9e7ccce73e73999ce1cf9999f9cce19ce7f0ff +9ff3ffcaeefe1e667e66666663f9d9f999cce6733f399cce7331fce737399cce +6e7e7f3ce67ffffffffffffffffffffffffffffe +7bbaffffffffffcfcccccfce7e73ce6739f9e73f3f3fff333993f339f7ce767e +79cfe7f9cbf39fe679fcf9999f9e7ccce73e73999cf9cf9999f9ccf99ce7fcff +9ff3ffcbbafe4e067e06666067fc8bc199cce673ff399cce7033fce78f399cce +603cff3ce67ffffffffffffffffffffffffffffe +7aeeffffffffffe6cccce6e47e73e4e739f9e73f3f3fff333999f333f7e4e73e +79cfcff9e7f33fe67cd9f999cd9cfcccce7e739999f99f999cd9ccf99ce67ccf +9e63ffcaeefe667e7e7e72e7e7fc8b9999cce673ff399cce73f3fce78f399cce +603cff3ce67ffffffffffffffffffffffffffffe +7bbafffffffffff1e24cf1f27e73f1e739f9e707033fff3339988707fff1e73e +7c1fcfc3e7873f0e7e39fc49e39cfccc1e7e739983c39fc49e39e2439ce661cf +9f07ffcbbafe667e7e7e72e7e7fc239999cce723ff399cce73f3fce767399cce +7e79ff3ce67ffffffffffffffffffffffffffffe +7aeefffffffffffffffffffffffffffffffffffffffe03ffffffff3fffffffff +ffff9fffcffe7ffffff3fffffff9fffffcffffff9fff3fffffffffffffffffff +ffffffcaeefe7337373679f367fe679999cce7933f3388ce79b3fe4e7393c9e4 +fe79ff3e4737fffffffffffffffffffffffffffe +7800ffffffffffffffffffffffffffffffffffffffffffffffffff3fffffffff +ffffffffcfffffffffffffffffffffffffffffff9fffffffffffffffffffffff +ffffffcbbafe738f8f8e79f8e7fe67c49c4ce7f33f07c4ce7c73ff1e73c7e3f1 +fe79ff3f278ffffffffffffffffffffffffffffe +7000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000aeefffffffffffffffffffffffffffe67ffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000bbaffffffffffffffffffffffffffff0fffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeeffffffffffbfffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7800ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbaffffffffffbfffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7800ffe7ffffff9fffe7ff9ffffffcfffffffffff3f3ffffffcffffff9ffffff +fff8fffffffe7fe3ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeefffffcfe7fbfffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +79fcffcfffffff3fffe7ff3ffffff9ffffffffffe673ffffffcfe07ff9fc3fff +fff3fcfffffe7fe3ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800fffffcfe7fbfffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +79fcffcfffffff3fffe7ff3ffffff9ffffffffffe67fffffffcfe73ff9f99fff +fff3fcfffffe7fe3ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefffffffe7fbfffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +79fcff9ce70c9e7271e4fe7864e3f3c3e3910f8fcc13221f1fcfe79e39f9f91e +1c80fcfe3f1e67e3ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefe1f1cf07fbfffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +79fcff9ce67c9e7264e27e73e4cdf3f9cd884727ce73108e4fcfe79c99f8f88f +cc93fcfc9e4e6fe3ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffce6ce667bfffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +79fcff3ce67c7cf1ce673cf3e39fe7f99f9ce6679e7339cccfcfe79999fc79cf +cc73fcf9cce65fe3ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffccfcce67bfffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +79fcff3ce61cfcf3ce673cf0e79fe7c19f9ce6079e7339cc0fcfe79819fe39ce +0cf3fcf9cce61fe3ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefe0cfcce7fbfffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +79fcfe7ce70cf9f3ce6739f8679fcf999f9ce67f3e7339ccffcfe799f9ff19cc +ccf3fcf9cce64fe3ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefcccfcce7fbfffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +79fcfe7ce7ccf9f3ce6739fe679fcf999f9ce67f3e7339ccffcfe799f9ff99cc +ccf3fcf9cce64fe3ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefcccfcce7fbfffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +79fcfcfc47ccf3f3e4e673fe67cd9f99cd9ce7367e7339ce6ccfe73cd9f999cc +ccf3fcfc9e4e67e3ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefcce6ce467bfffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7800fcfe261cf3f3f1e0f3f0e7e39fc4e39ce78e7f1339cf1ccfe07e39fc39ce +24f3fc1e3f1e63e3ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfefe271cf267bfffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7800f9ffffffe7ffffffe7ffffff3ffffffffffcffffffffffffffffffffffff +ffffffffffffffe3ffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffbfffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffbffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800ffffffffffbfffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000e +7800ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000e +7bbaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcffff7ffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeefffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800f7ffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbafffffffffffffffffffe7fffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800f7e7ffffff9fffe7ff9ffffffcfffffffffff3ffffffffffffffff +ff9fffffffff8f9ffffffffffffffffffffffffe +7aeefffffffffffffffffffe7fffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcf7cfffffff3fffe7ff3ffffff9ffffffffffe7ff81fffffffffe07 +ff9fc3ffffff3f9ffffffffffffffffffffffffe +7bbafffffffffffffffffffcffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc904f7cfffffff3fffe7ff3ffffff9ffffffffffe7ff9ffffffffffe73 +ff9f99ffffff3f9ffffffffffffffffffffffffe +7aeefffffffffffffffffffdffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc904f79ce70c9e7271e4fe7864e3f3c3e3910f8fcfdf9f249c7930fe79 +e39f9f91e1c80f9ffffffffffffffffffffffffe +7bbafffffffffffffffffffe7fffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc904f79ce67c9e7264e27e73e4cdf3f9cd884727cfdf9f24993927fe79 +c99f8f88fcc93f9ffffffffffffffffffffffffe +7aeefffffffffffffffffffdffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc904f73ce67c7cf1ce673cf3e39fe7f99f9ce6679fdf831c7398e7fe79 +999fc79cfcc73f9ffffffffffffffffffffffffe +7bbafffffffffffffffffffcffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc904f73ce61cfcf3ce673cf0e79fe7c19f9ce6079e039f3cf399e1fe79 +819fe39ce0cf3f9ffffffffffffffffffffffffe +7aeefffffffffffffffffffe7fffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc904f67ce70cf9f3ce6739f8679fcf999f9ce67f3fdf9f3cf399f0fe79 +9f9ff19ccccf3f9ffffffffffffffffffffffffe +7bbafffffffffffffffffffe7fffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc904f67ce7ccf9f3ce6739fe679fcf999f9ce67f3fdf9f3cf399fcfe79 +9f9ff99ccccf3f9ffffffffffffffffffffffffe +7aeefffffffffffffffffffe7fffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc9fcf4fc47ccf3f3e4e673fe67cd9f99cd9ce7367fdf9f3cf939fcfe73 +cd9f999ccccf3f9ffffffffffffffffffffffffe +7bbafffffffffffffffffff8ffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800f4fe261cf3f3f1e0f3f0e7e39fc4e39ce78e7fff813cfc79e1fe07 +e39fc39ce24f3f9ffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800f1ffffffe7ffffffe7ffffff3ffffffffffcffffffffffffffffff +ffffffffffffff9ffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcffff7ffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc000000000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000e +7bbafffffffffffffffffffce39fffffffffff99ffffff3ffffffe7c7fffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800ffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeefffffffffffffffffffccf3ff9fffffc7f99f87fe73fffffff39ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffcf3ff9fffff93f99f33fe7ffffffff39ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbaffffffffffff3fffffffffffffffffffffffffffffffffffffffff +ffffffff3fffcfcffffffff3fffffffffffffffe +7aeefffffffffffffffffffc8272307ffff39f99ff38c13221f1c99cffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeeffffffffffff3ff3c1f1ffffffffe7ffffffffffffffffffffffff +ffffffff3fffcfcffffffff3fffffffffffffffe +7bbafffffffffffffffffffcce7119fffff39f99ff33673108e4c99effffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbaffffffffffff3fe398e4ffffffffe7ffffffffffffffffffffffff +ffffffff3fffcfeffffffffbfffffffffffffffe +7aeefffffffffffffffffffcce7399c060339f99fe67e7339cccc799ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeefe1f1c887c7f3fd3fcce7ff0ccc8c18739fe3924e3c9ff23e3c393 +f0ccc88727e3cfde3c3c3c77fffffffffffffffe +7bbafffffffffffffffffffcce7399fffff39f99fce7e7339cc0cf9effffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbaffce6c42393f33b3f9ce67e7ccc467f339fc9924c9c9ff11c9f993 +e7ccc42313c9cffcdf99f93ffffffffffffffffe +7aeefffffffffffffffffffcce7399c060339f99fce7e7339ccfcf9cffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeeffccfce7333f3373e3ce67e7ccce67f39bf998e39cc7ff3999f98f +e7ccce73399ccff9ff99f33ffffffffffffffffe +7bbafffffffffffffffffffcce7399fffff39f99ffe7e7339ccfcf99ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbafe0cfce7303f3f01f9e47fe1ccce6783c7f819e79ccfff3981c19f +e1ccce73399ccff9fc18703ffffffffffffffffe +7aeefffffffffffffffffffccf3399fffff93f99fcf367339ce6cf39ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeefcccfce733ff3f01fcf27ff0e5ce6733c7f9f9e79ccfff399f999f +f0e5ce73399ccff9f99c33fffffffffffffffffe +7bbafffffffffffffffffffccf339c7ffffc7f99fcf8f1339cf1cf39ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbafcccfce733ff3ff3fcfe7ffce5ce6733b3f9f9e79ccfff399f999f +fce5ce73399ccff9f99f33fffffffffffffffffe +7aeeffffffffffffffffffffff9fffffffffff99fffffffffffffe7c7fffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeefcce6ce739b333f398cce7fcf3ce673339fcd9e7c9cf3f39cd999f +fcf3ce7333c9cffcd99f39bffffffffffffffffe +7bbaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbafe271ce73c7333f3c1e1e7e1f3ce718939fe39e7e3cf3f39e3c49f +e1f3ce7307e3cffe3c487c7ffffffffffffffffe +7aeef00000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000aeeffffffffffffffffffffffffe7ffffffffffffffffffbfffffffff +ffe7fffffffffffffffffffffffffffffffffffe +7bbaf00000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000bbaffffffffffffffffffffffffe7ffffffffffffffffff7fffffffff +ffe7fffffffffffffffffffffffffffffffffffe +7aeef00000000000000000000000000000000000000000180000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000aeeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaf00000000000000000000000000000000000000003180000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000bbaffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeef00000000000000000000000000000000000000003000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000aeeffffffffffff3fffffffffffffffffffffffffffffffffffffffff +ffffffff3fffcfc9fffffff3f3fffffffffffffe +7bbaf00000000000000000000000000031800000c000e7d9bbc1c6c000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000bbaffffffffffff3ff3f9c07fffffffe7ffffffffffffffffffffffff +ffffffff3fffcfc9fffffff3f3fffffffffffffe +7aeef0000000000000000000000000003180000380019319dee366d800000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000aeeffffffffffff3fe3f1c07fffffffe7ffffffffffffffffffffffff +ffffffff3fffcfe9fffffff3fbfffffffffffffe +7bbaf0000000000000000000000000001901fc06000303198c66671800000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000bbafe1f1c887c7f3fd3e9dffff0ccc8c18739fe3924e3c9ff23e3c393 +f0ccc88727e3cfd93c9c787337fffffffffffffe +7aeef0000000000000000000000000000e00000c07f303198c67e60000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000aeeffce6c42393f33b3d9dfe7e7ccc467f339fc9924c9c9ff11c9f993 +e7ccc42313c9cff89c993f337ffffffffffffffe +7bbaf0000000000000000000000000000e01fc06000303198c66060000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000bbaffccfce7333f3373b9c0e7e7ccce67f39bf998e39cc7ff3999f98f +e7ccce73399ccff9cc733f32fffffffffffffffe +7aeef00000000000000000000000000013000003800303198c66060000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000aeefe0cfce7303f3f0180fc7fe1ccce6783c7f819e79ccfff3981c19f +e1ccce73399ccff9ccf03830fffffffffffffffe +7bbaf00000000000000000000000000031800000c00193198c63261800000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000bbafcccfce733ff3f0180fe7ff0e5ce6733c7f9f9e79ccfff399f999f +f0e5ce73399ccff9ccf3f3327ffffffffffffffe +7aeef000000000000000000000000000318000000000e1d98c61c61800000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000aeefcccfce733ff3ff3f9fe7ffce5ce6733b3f9f9e79ccfff399f999f +fce5ce73399ccff9ccf3f3327ffffffffffffffe +7bbaf00000000000000000000000000000000000000000000000000800000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000bbafcce6ce739b333f3f9cce7fcf3ce673339fcd9e7c9cf3f39cd999f +fcf3ce7333c9cff99cf9b3333ffffffffffffffe +7aeef00000000000000000000000000000000000000000000000001000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000aeefe271ce73c7333f3f9e1e7e1f3ce718939fe39e7e3cf3f39e3c49f +e1f3ce7307e3cff83cfc78931ffffffffffffffe +7bbaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbaffffffffffffffffffffffffe7ffffffffffffffffffbfffffffff +ffe7fffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeeffffffffffffffffffffffffe7ffffffffffffffffff7fffffffff +ffe7fffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffce39ffffffffffffff3e3fffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbaffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffccf3ff9fffffffffff9cffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbafffffffffffffffffffffffffffffcf3ff9fffffffffff9cffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbafffff3fffffff3fffffffffffffffffe7ffffffff3ffffffffffff +fffffffffffffffffff3fffffffffffffffffffe +7aeeffffffffffffffffffffffffffffc8272307ffffff23c3ce7fffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeefffff3fffffff3fffffffffffffffffe7ffffffff33fff3ff9ffff +fffffff80f1f8ffffff3f01f3f9ffffffffffffe +7bbaffffffffffffffffffffffffffffcce7119fffffff11f9cf7fffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbafffff3fffffff3fffffffffffffffffe7fffffffff3fff3ff9ffff +fffffff80e4f27fffff3f01c3e1ffffffffffffe +7aeeffffffffffffffffffffffffffffcce7399fc0603f39f9ccffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeefc88733ff33873fff9fdfc3e3910f8fe7ffff8e7320fc20c304e70 +ffe4e3fbfce673f33873f7ff3f9ff8e4938f261e +7bbaffffffffffffffffffffffffffffcce7399fffffff39c1cf7fffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbafc423373f33f33fff9ddff9cd884727e7fe7f267333f9f3f99ce67 +ffe4cdfbfce673333f33f7ff3f9e7264932724fe +7aeeffffffffffffffffffffffffffffcce7399fc0603f3999ce7fffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeefce732f3f33f33fff9d9ff99f9ce667e7fe7e673733f9f3f99ce67 +c0639ff81ce673333f33f03f3f9e66638e731cfe +7bbaffffffffffffffffffffffffffffcce7399fffffff3999ccffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbafce730fff33833f01c8bfc19f9ce607e7fffe078f33f873c19ce61 +ffe79fff8ce723f33833ff1f3f9fe0679e733c3e +7aeeffffffffffffffffffffffffffffccf3399fffffff39999cffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeefce7327ff97333fffc8bf999f9ce67fe7fffe7f8f33fc33999ce70 +c0679fffcce793f97333ff9f3f9fe7e79e733e1e +7bbaffffffffffffffffffffffffffffccf339c7ffffff39c49cffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbafce7327ff97333fffc23f999f9ce67fe7fffe7f6733ff33999ce7c +ffe79fffcce7f3f97333ff9f3f9fe7e79e733f9e +7aeefffffffffffffffffffffffffffffff9ffffffffffffff3e3fffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeefce73333fcf333fffe67f99cd9ce73667fe7f367333ff33999c47c +ffe7cdf99e4e673cf333f33f3f9e73679f273f9e +7bbaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbafce73313fcf893fffe67fc4e39ce78e67fe7f8e7338f878c4c6261 +ffe7e3fc3f1f0f3cf893f87f3f9e78e79f8f3c3e +7aeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbaffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbafffffffffffffffffffffffffffffffffffffffffffffffff3f1ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbaffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffffffffffffffffffffffc3e4ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeefffff3ffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbafffffffffffffffffffffffffffffffffffffc8f0ffdfffff3ce7fffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbafffff3ff01e3e0ffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeefffffffffffffffffffffffffffffffffffffc47e7fdfffff3ce67ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeefffff3ff01c9ce7fffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbafffffffffffffffffffffffffffffffffffffce7e7fdf01ff3ce67ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbafc88733f7f9cce7f8e4938f27fffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeefffffffffffffffffffffffffffffffffffffce707e03ffff3ce7fffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeefc42337f7f9cc6e7264932727fffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbafffffffffffffffffffffffffffffffffffffce667fdf01ff3ce7fffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbafce732ff039ce1e66638e731ffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7800fffffffffffffffffffffffffffffffffffffce667fdfffff3ce7fffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeefce730fff19ce0fe0679e733ffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfefffffffffffffffffffffffffffffffffffffce667fdfffff3e4e7ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbafce7327ff99ccc7e7e79e733ffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfefffffffffffffffffffffffffffffffffffffce713fffffff3f1e7ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeefce7327ff99cce7e7e79e733ffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfefffffffffffffffffffffffffffffffffffffffffffffffffffff7ffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbafce7333f33c9ce673679f273ffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfeffffffffffffffffffffffffffffffffffffffffffffffffffffefffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeefce7331f87e3e0e78e79f8f3ffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbaffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfeffffffffffffffffffffffffffffffffffffffffffffffffffccfffff9ff +fffffffff3ffffffc73ff3ffffffffce7fffffffffffffffffffffffffffffff +ffffffcbbaf7ffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfefffffffffffffffffffffffffffffffffffffcffffffffffffccfffff33f +ffffff7ff3ffffff9e6013fffffffde73fffffffffffffffffffffffffffffff +ffffffcaeef7ffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfefffffffffffffffffffffffffffffffffffffcffffffffffffccfffff33f +fffffd5fffffffff9e7cfffffffff5673fffffffffffffffffffffffffffffff +ffffffcbbaf7ffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfefffffffffffffffffffffffffffffffffffff83ffffc7271e1ccf1f8e60f +f91e1e3c3303c7c704fcf3221f1c98f39fffffffffffffffffffffffffffffff +ffffffcaeef7ffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bfefffffffffffffffffffffffffffffffffffffcfffff93264fccce4f3673f +f88fcd59f3f393939cfcf3108e4c957399ffffffffffffffffffffffffffffff +ffffffcbbaf7ffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7800fffffffffffffffffffffffffffffffffffffcfe03f331ccfcccce67e73f +f9cfcf79f3e733399cfcf339cccc7df399ffffffffffffffffffffffffffffff +ffffffcaeef7ffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbafffffffffffffffffffffffffffffffffffffcfffff033c0e0ccce67e73f +f9ce0ff873cf03399cfcf339cc0cfff39fffffffffffffffffffffffffffffff +ffffffcbbaf7ffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeefffffffffffffffffffffffffffffffffffffcfe03f3f3cfccccce67e73f +f9cccffc33cf3f399cfcf339ccfcfff39fffffffffffffffffffffffffffffff +ffffffcaeef7ffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbafffffffffffffffffffffffffffffffffffffcfffff3f3cfccccce67e73f +f9cccfff339f3f399cfcf339ccfcfff39fffffffffffffffffffffffffffffff +ffffffcbbaf7ffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeefffffffffffffffffffffffffffffffffffffcfffff9b3e6cccce4f37339 +f9cccfff333f9b939e7cf339ce6cffe739ffffffffffffffffffffffffffffff +ffffffcaeef7ffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbafffffffffffffffffffffffffffffffffffffe3ffffc73f1e24cf1f8f389 +f9ce27f87303c7c79e7cf339cf1cffe739ffffffffffffffffffffffffffffff +ffffffcbbaf7ffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeefffffffffffffffffffffffffffffffffffffffffffffffffffffffff9fd +ffffffffffffffffff3fffffffffffce7dffffffffffffffffffffffffffffff +ffffffcaeef7ffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbafffffffffffffffffffffffffffffffffffffffffffffffffffffffffffb +fffffffffffffffffffffffffffffffffbffffffffffffffffffffffffffffff +ffffffcbbaf7ffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeef7ffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbbaf7ffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffff8fffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcaeeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800ffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffcfffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffdfffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffdfffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffcfffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffff8fffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbafffffffffffffffffffffffffffffe1fffffffe1ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffce7ff9fffff9ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffce7ff9fffff9ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffff8272307bfdf9ffffce7fffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffce7119fbfdf9ffffce67ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffce7399fbfdf9f80fe6e7ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffce7399c06039fffff1ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffce7399fbfdf9f80ff1ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffce7399fbfdf9ffffecffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeeffffffffffffffffffffffffffffce7399fbfdf9ffffce67ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7bbaffffffffffffffffffffffffffffe2739c7ffff9ffffce67ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7aeefffffffffffffffffffffffffffffe1fffffffe1fffffff7ffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffcbfeffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7800ffffffffffffffffffffffffffffffffffffffffffffffefffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffc800ffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffe +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000 +showpage +%%BoundingBox: -28 145 640.16 646.12 diff --git a/sys/doc/acme/acme.fig1.gif b/sys/doc/acme/acme.fig1.gif new file mode 100644 index 0000000000000000000000000000000000000000..b412a085c4cc84d16e5c52f68305d53380fb1b24 GIT binary patch literal 24122 zcmV(#K;*wiNk%w1VNwH31hfAD0000H5fLIHA~Q2HL_|bYRaItYW_NdYh=_=pnVG7p zs=K?p%*@Q)-QDi)?*IS)A^spkZ*F#Fa&%>6AYyqSP;6mtAUPmra&K)QJacqpX>L9M zEC2ui08#@?1ONp8@X1N5y*TU5yZ>M)j$~<`XsWJk>%MR-&vb3yc&_h!@BhG{a7Zi~ zkI1BQ$!t2G(5Q4uty-_xtai)odcWYXcuX#v&*-#z&2GEj@VIs;jK6uCK7Mva__c zwzs&sy1Tr+zQ4f1!o$SH#>dFX%FE2n&d<=%($mz{*4NnC+S}aS-rwNi;^XAy=I7|? z>g(+7?(gvN^7Hid_V@Vt`uqI-{{H|23LHqVpuvL(6DnNDu%W|;5F<*QNU@^Dix@L% z+{m$`$B!WYLy8oJq5$&6_xL>fFh*r_Y~2g9;r=w5ZXe zNRujE%CxD|r%fOt?uiw9b0}CEZxUk{Fh!ZPb%($`R$B-jSo=my2<;$2eYu?Pcv**vCLyI0w zy0q!js8g$6&APSg*RW&Do=v;9?c2C>>)y?~x9{J;g9{%{ytwh>$dfBy&b+zv=g^}| zpH98H_3PNPYv0bjyZ7(l!;2qJzP$PK=+moT&%V9;_weJ(pHIKO{rmXy>)+46zyJRL z1}NbFfCLt3;DHDxsNjMOHt67k5Jo8BgcMe2;e{AxsNsejcIe@UAciR7h$NP1;)y7x zsN#w&w&>!EFvck3j5OA03e(fvg+gx~e0s+8U~;u8P{~t+#^u>aU#AitMbXCL8Sk zvZH>v>m;PgYAL0~GOKN=ur|wWv%)$%Y_-EKYc9FdQi84p*DC9+saY4T`zpQj@+&UF+UA?=xb^xA$-1tBYi_m&U+ite0k7-p#>GMm zvc!#0Ozf!)2ODk5=SG|@$M1IBZ^R#ytcc0o&MNY^F+a<5v>I;=G|UOVOth{xA2PJH zMx*R=t;XK#EVuwad@#ep2AuTPTyst6*I*wdY`5+9+i=G%_uO>X zZTH=H=dJhNe&V9FR7gkjH&BB^wepzH6wc7GCIpTF<5vxQ^|h=j&Vl0(*Me&Qu3B&Y z0pP0`=Lg|l_4*BRH6nv@dvripD?yiKJD(NG0{<+H~;Oe{S zqNARbBGA9gq!RJHWG~@S{ zyMFgdHLtq8IXfLZ&p`{_ZtmoY-~Y0xykVlR@f3D&GNUuZC%e-Fcet^Q3pVI4NZXvq?xIB?560_(_50uIc-Jo1k?)7@)7=Y+S40Z`hRlgc)E)zw z_%R{Uk6KbppB9N1I`mcQcwvfN%CcswA;wH!WyIPUk;1$*a>`;TgP$M42Sy;a@sQb>17;_!S4)$LQkPleSS9&b!d9wMf2=eiAu}mT zVb=0;#bja-cb3IuzOfY7bKw(NSIsUyQi2rp*e%0%&R6D;kyt?`>naA#hH>z3W=v%{ zx#+SK-qW4hgk|(nC`1*)QxxGWpZUazP8tsIi}eiI9MQ+a{wY-df-Gy`0!hd%6Mj!) z8f{@97dpaVPVu4eG$s2cTE$1&tA-hk+Cur5x&bE88OyXuPK~lhWbCw2d<&{jhf36< z8uh41O{!9t%G9Ph^{G&es#K>c)ry;`lT&J(L0$@)OBE>@z2b)FCiD?GmPV6$fhEoZyg)yRU9 zbAbIu2YWdqf2j0sSMunSit;X2aic4N0!L!NaZDn68AmwMriX-H8EQ2yRGyE6?g zIvtopuu4{=4wP?2>uW*eJ+Zqmu%Jsp$WQ@;6t4c>bsQ@RaJu^O+)#(C=ao?`qkmi^~mZn&7nm#s3CUHY^v$F!8UUGtW0 zS>rLcIm}ijcjBhBUiiZ427GB0_u+}vFD7Ol`I3w(RMOL=9{S*=TG|*%%7BFCM$jDHTE~1q0MHG+goQDfVat*rgZ2mjcYHy z5|}vVa*~Jb>*c0e*sW$Kd!g**du$rEe}-e18!YNoznad)9&w2s{OUR)SJtpDAhR2t z*8l!B*o6)^bCWIQfd2Z?ga-DP$z9&5$(h$+ls1|7@$5NcyO8px_O`$5zGMG8p{*`= zn~msg#qOEe(7vs<6`i@vUfH|Lz9yeJNbw!N+r|z%_QS(GPm*8gC;;AuaTivRls@-=L;#8pqRm{mHssdJjvA!7e)y!!isobZ1y+O2?PYahHIo=NJpE-L-53lzbx&3lUsh!=^ z6ZoB#{YVxGLe@Kd_|h@{$y7;qF&BKDrtOFayIx1`NS}o$bgRH5zV=1C-uC#MFt~M3 zIn}HDZ;p{#czM?kFUi4m6w-d=SP3QBXnJt9p8t4S|>((7H|FM5!+{e z1Izic47nRd8ef=$ zhnI&ud7ibk1NW`ZacNl(AcRABVeW+}T z6kYj7QADS0o8ouY*L0`^WS3_DiU5Xr>UMrJ$U`E=h)=U|N9Y-m=sMJPZG!lIa5smo z_lSGvV=9Jb^Hxziw}DQ>TR!G{`(kD3M{3YlJf)^G1$QtIRyk$6)~*MNMOk$C7zC`d=> z#%l}chWK`2#YTYs7HyoAh7`7f@Yr#cWJMNe za(1VdJvn~pRfxtUjMG?k7D>bHPg2Kr zY1e?x2ZJWaYL3`+g&>E6QHyXOT=Q6XmU&rY3%lt)-x9TkU#;hSj~D{@(eU>TJpkc9{a zoPwl?kx7N?Wqpcch;PVp!C6z)^^`pbTgmB@u{n3y8Ctw)ZvUc!uDFQSxt1$fLdVEs z<5-(i@p8RYn^+0|o^~mmsRen^*ocQb|oU+M|H8oGqD` zTZ(b%Xpv>PivRhD#x`=H)Q;ZciF0a`**IiVD2~!5mw6GUDhX_VDwOhvr4vc0eF&6o z8J7Y|5qcW`6_(nONVjS|7pf6Rbkf9fa;k}PdU8vOcOU8yrE02VXJCWLs0Emq7>bK) zw2PnEZ1G56mZ++`1!F0SD9FjBBN~Nj)T~TUgFZN(aiEHFkgL2TT9ve>m;{A<>Tuj@ zRjqlh=-MYuU|4%3dsnjVI&)MX&y5Y{f}_C5v*! zIiyzkjwPY7foPo7BU^V0h9Fx5(HRMHR-no^uLrrLn@U7bc~FDOLKjPuFLA2n83TSf zrO&zlgbpTo$=aWQ2ciH;rF5#SotmbBnr-XoWkpM_nOGA_3#~y4h~JsDky@x<`?RB4 zG8M_PO4y|scySOYtdN(oCF-*w2@_>IipZKqIoocX7F`ejp4Eb*fSG(eur=F_1AW4~%i*|1dx4ufbapaVkrkTs8bGBY?Cunp8bQp^crYD}RceIxy6G|)p zaO2ymXDO>=iM&6{wwRiJ#+#D28aWv|u7Eng2db$DYO6+9YKA&-@n>%m{B;L>tqT*b z5GlLx>6R_auzO345e%WrD67jzs~2pmAFIKgWhS(jaUblwqZ*TE_mr&HiV+F9bO~Kr zyI=uXc~HArMv7b2MX=hptKn6JN@u}%V6Ds`o<8ua@%Eiayb)K7g;2}}2Kx$GtgN;O z!tyq>M{%!ae8y^W1m5PPTTFOtIk}~hUWZ(_XR4fZ>sJkIzmTlNg4e8U1#emyv(2ghbmce< zn0vu=EVET?b(!qBo2WX zTeC#UpJN=#u)Bk9#evl7#}^y6CH%cQRm`VIih}!wNF-y1)n9P`~n16ybZ0 zi`=zlN^|g=x&cgV*aoLx`c1V)gFL0pgzIUP1hL%rkL0M00ZdniXujOMi4z^Ugn-8| z9n&&xC$OB9`#ZrSxx!gjw7ct|N_j-4%d7~E1v6dLMt#&UEXDd8f8%!lsg_%!*BrD^ z*tVVfa|YbPGBVV^N536R&E|L0SDBaB#a+A`t6A#D5WT!XoFiI&cre_CG7QG&Om$xO zXUaybW4*(?N^&f$HTTfib zTx^8`+_Qt&*~iMv5z5(o3)-Yz%gM~x0cz0zdcReG*;?${M$pz~fQF^5%%1%z_q^H7 zJj&f$+p(OBr!C4sS=;;hflz?d$ZeXB^^2cKU27VOjEa!uSc>tR&Q%A_Rcq0bT5k?J znG9B;&@H~|3D{u!(?bV!&)C+gZq+m_F z!i&N#Y0h>{qHcy~JPpvAim2a6buFljf{d!kyPL16lkYmW(D%vyn99R#nZXI$T7cdj z9=3ps!J9OuEUCD27vk(od#Ki?TKm6M+|v%iEGmjr3^E7}e4?&D8w6)LOpV;99}T6Vw*9;wIhVvc}cUIMo6Q=ogK$ z@NL{VKDdpI&A?sU65dRT?Avb3vHon3w(HQ$3YB>d$|fuS*Je(^3YU9oeRKfqn8)kl zOSq+mPEW!d)(^Yr_(Uwr#!!#Ey7m>J;v9psJAx!$&Om%#-=)I{CgfZ|XT{?tVr$ltu+6ld(_O{SVl?R9$16;7kAJ?7)mQO~2oID9z9iZd~a zy){XatDN6|tv%ijGflk+M9$~seYm_{;6cooJg4e$P1i44chxtwCD>BgUfzW!u}vwxsWUW>In564w5cN@)&ZUmG>K5k`4&o5&C^GcTUD75o93Cn+qx+fn|lV+4k z&hnGV$9WFD$^G?UkH#OL?iVlCIo-9nY0Xz1^1}$KBYwFL?ZUKE>rZdh3>@sTe(ia^ z@64m4{=4=-uSEW&uyU_HP9Mg@I?xvX!!hZG0>6}qG@su6;XkIK5KP}!%8j@^*uDj+ z!adxoEPG9RwxBOK=$?eC9=}cIEslDN*J(I6)`>D&hQSa4a=~3_DN$p zqj!rcnyj4%WWwQpoon60;f;5{Z-mw#7HRJP-_h=CgFlsIU8P(5sz|x~5bywyv_3qu z)f?Y0{5npXtdKO-v7}C~6(t&7V~`a)dG>!`P&gzOjYnisxikS$NM3I_j4E}z*K>+Z zZIe~65F93#%~G)LdX=V1+$S$>)8^>7^}F5e$vOQy9G|&8JHW%3s4*JEoW{MyGs#KH zN=rB=rn<;5&LXzNIxjz%OF>f*R8>^JmQuAqLRS^ixIj0w6FtMwN6!siH(R{h!OdIU z-8^E!--=*Y+*C->RqJbP%BG)cs$)xMBiV5Aw=C9f?euK+qgGznN9I)Mn|Wz?W&L@@ z_0#A^@3?*I#mnHbY0egvDv0l2JBShgB@SdXXvT^x?^w(k_K+D2Xux7=X~hv=m6BYD z^}Ewg218(lDpE9=YvMJHdg3*-In9tjS^4;l^ySZIhM_$vsuW6ZpVMYW$2<+{@#a;m ztF~Fhk}+eVXfAF9RA|pu$B~du$IzFT8Va*6J_Uy9FstRMlWiA=zMElec z)TW3L3iO6l@vaMu`y@RGm$21~e;)r6+}HDGa4#}3B|I15VPhwY0iL^=AJdqsPr+&{ zJ2B+c4K;!`r5EJ6gf(OTHVX(c!?EYa>UMiH2y(b}r8}3NJTl+PVT}TGJ-st;@ZmMh z+>yCw$nGqkn`Zm!IQx6kA3`_(?$*8e^T}RrbrM~@cmQ$QZj=FKYNx<5$T1Kb1p{=D zH~z{aji}`ii!C>$b~=r+;A%7Gw0a1lMxMPy%PSyT5PWb&76DYTMHpk0af=A~u#tN;u<`b51(zgu+Cwvi#DkW8i~L&F1U@#jHMUn+iSRiW8=d zp#CHAL*Xp6b5cqxwe(W(u5=7EC%<^{lXN}>6&?LBHT6_fQ&kl!P03sJRaj${byiwy zHKSEgZPj&GUVHWR*YI%v1$J0si#7IGWYuvMOEL!SZ^_RNO?FyptF=~EVQ<9^+QAl- zNZM<|6?a^6rOb8`1#Q@L*_*&E_g#47mA73yFEY=}6r-bp4|Owh^g6G)5~eMfO7)E; z`{q@6VTKnzSG&Io!)%~rsv$E_Gxx)f$c^NhE!T!a7I|cB>y=PX{G261v!!~ZY#jew zK!itxd zQl*{t`fIRfgj#5+zgYL#^z^wbRxgLFcw2MO=Y%?R(miK#eDu>-e|`4ZxBkt`YcRS@;I4a4{_e!rKSAF27dzF0 z#cW7|Tgl9}WiJ9w&3_9V74aA-IskTNLwWI&NUqnZpFL26o`PNWXmmhwd=70N)QSj4 zXghjc2vY|;-O41`HU+w{e;d>v=L+$&46+GzjnSPbVyC*Ub;4pGVA1W60VB9^GV1d=*0GzfPnC&ny>Nl3flB90zazxo-Fk_{uG zCw+OxVB}E_N7+eKTt+0+SVb_!^qyqwu$mun40q1y*eyqywIm|0m%sERD1#}=$gG5! ztb8J4G8lt z)@Y5qSyZM=a+gLES~khG(uok=*fM1)O`a^|8*3p^P3aQ2laX|ivoc{1CpJ^4;=+Nc zQw=}qDYSEvGmIYGP@@o zSYKihcmum^X-#|D(Z(%+j8bPj--uJt!u4UOrEP6ZE4S4e(~CT7RL^1?*V(quf>RCu z9&e>LT-yp4ZiY$IXSvnb-_A6+1f#CJ>W+gY+*fPSQTrCGa7Sgx}bOxTW?TOm`jpi4#|Jy7L4Wg)1yz^&Zro~b(7}FH*Eyz_A?GIt+Vf$9EE&c6KjtohH{9Q);>gMr z9degdj3;&FtHa|}a^TEN8-sN#t1`Z^ldZgCI5YVbyoH==y?p0iHlbe;?r$FdTzuvz z|9DM*=(C*jyQe}QI?ghF@p=2KS|B-P5x;rAOO{!a1sw-Ww|2M|w6Uf? zy=6`-ddH*=8wNuKO-i3w&l+{7q5n+Z8hhHjZ9b)O8NF8j`uW0~W;3qE3pQ6jx52U2 zprvnD>$fn^X9@Fal8eo=Mklhsm{;j$zVsC<*ifn^TNWvZLY@{IE;ZGCzQ_nr| zz#4qdFny5---~fh=Fi+z1i5VU9dSrecM8e&2GTrkXLnL#jRom@+Ec0|!99-~IN4Qmrk=2OoCgq56OR&yO)aX6eC&clGHoRibhXaR=A)WcqR7;wS zU2pGh$GL z^kO?&g(l6q6!Rjoo3(uxeC0{^^Rw|C)~|&MNP<{*_5SGbDFvc}k@$DZr`}?`nDo}(3r=txlt7=&s9${%rC3AW!$5Z4&Qa!i(W(v#pKv~>if`5@b?R} zdfoned>%Sp={%gTU(KnR+xwb~Y%4bO4JZBS?=Sd$Le$IG4APhXlJl%dFO=y!1oLRK zhuh{KH{e*DetbJPeFH$JX)OLDz2UHk!nvDq*9|gR?k&(Ko z)4;-szyriO=yO01)FEUlLD$JZpAkQ0aW2y1ycMiFAo8HvJEG1CEr4P;6#PKea}`^I zxwmpbMJl=*aXzbIlSWFXrlYoQ;;UEMLD^BkrRX1RYbQ0*mo$36$z!$BTM%?w2e1p?Jl9RAUz&l)Je`mpu7!oBlC5IPewti!u%yLD4GAY8D}6Tx+Bz~$p9I5aEB zYrH_TLqzly5R5~=0u`h}zk3O%QIiy%8$E|QLqdeMMBK#xUy;Jx6G9X0Lz<98VlqUD zF}p(Y2TK$rPW;4HY%2joIo#{OQxrw635nqwoS))8qYFdaBf%6Cl~M}9S7Z=8jK%Td zy4P|ep=%k(+mA+KtqMcD?HWH3(=HvvxML)~hAKujGDE8&F9MOfHbcBf>BbmrrjbiV zYplR(%tn06mullO9n8WW2_<;+#u)KLeVi7$D=N67$1VUf`q?ZF=|^(`M}$l-y>mlq zLXhoaFAyQQg=`UitVm*6I%AVEXrsYNRH2E)$SPSxkvtYL0x(Qmxpgu@N-RmSImV4+ z2Vk5`bBqDicK znM=w?pX>{MWHS3BI&^^{N1QaG^FNxnvL!qt8nU?-14~KRBtLVdp1jKOQOJ-2#c(VU zML|c~@w&#lCJzHL={q;1qf59P%)`36nCvN9#3s9Atbo)!#=IfE48@fEI#V1%yd+G_ zY$CY?Bdau&fP+C%#HCVH#=a>+kW#C+%uLl(mL6=!Jv=(*qDallq!O!5R?8dt3#4^a zrPb_BPT9;Fd`)MJ&8cHN$dp8mf-u*6K381M2~17j%oLamyn+%&+QUiRI>A3QNK#Bi zDdJ7&kTq9ts<|74(~ERFWl$uBz3-T+QSUtb z!%z~MD{|pbJB&!w5Gf<1zb|w}5{)~5n^79AQ5&tSS242O8a<7SviCK(JjCoARW355yDTy~ z^cOA^$U3b_L?w%glfBM!r1?{+Kl;aqd_zCV&#;0IMuNKcb3(IgoDYfB)tpspyh*TQ z%X({@t}4V`R4O@?Ohu|7<9NYZOhRQR0UPWC%h<*QaYN>o9lRjtvfdA%xcZNhwo#XE&c?bF3$ zTF{cJJ%&A|Pc$f0BtL}}*Ye!T(m9w8qfmf(Sk2tm(^J)t)kRzEBp7QtU(G4mL|5Cy zRtBS1zcHd3D#(xorpH9tVBr)00p;22k;YUMvz4VxSVJXf-NK0}TEKkTCk#^^{TD)w zK5Ko9S{2%8A=>N#Q%d?c6vb0iX;U8jt^zepuZ0kNC9JnKNf=tV_-I?VEmFMATfH4p zSp3d|yg0kH60jA{z}=N++#_Ps*uuSv(OKM1tiK6s*=BUy15wU2HQTP_&kUu)xMfsD z)zh+lm(G3I#^uw{tWFKB+AiEU5Hr4-`QK={axS< zUg0gR**(I^p*fBd$78e0u6(r0;NAD>)I5o&rjk-EV@mdP)8XA-?(JUh{a)-M3uSxC z$z4m^tJkd6+=*@1T|(CXkGk1CeXgCfyCjWE@Qtj9QZ+!kU;gdi?JeFZl-cYpyOY$_ z)m`6A?V&hT#_H{t&n_(Q@VlIXr9Zn3|q+JeV+cDysLj>Xj&6w~UN8@v0 z=w)NudZZfe(rqgq#R4=Old=&rHdgIoKmKFu65mtIJ810FGn*gUMcQsnWW011=*lb= zWyVNVNheOS8oprvElxDK=(Hb{y8Q)YP!46}`Qltf)jvW{wU8MezT7ID$4OpP1(Vk{ zgk+Y?xmWg_N@maw3CB0fjVb0aPDbEh&SX(8=1?YOkvUzQ$zeV2v9s z&1fNVXpjDAkd|RVj)<%yIfMONo8;)s#oQhiVIqd(kdA4Yp6TI%=+`;nE_~^nmedv2 z7L~r-z2oNpe{MF*HD2u@)ug1;?-90)ZRu><(buKq6w#PBCO*-+zo;JSAuC(Pk8Ty!&)CMik!X+JC{8=N6rT)wKNWX}X_tvzhno$DR$T9$rPNeWlh zhip7P4E*YhL;b9&7vV$wdCwC@@z0(ThE1Uha_#EP8(Y#?8q)xrDg)$25ZsX zypRhFTt!yeF44q>rzj%i2!^snE?=w8B`1316OLJ&6=UK&WO?CLY)qi;X^LBJZcG>; zfhq6*3b~N;CeR$)*7u%0$fdFQPC9svNVZNs<~Hm~LEB0DzC}atx3X;lkCn;xNI7jT z{}x)VKJc?0VD}7J2v&s|!?d04?g2wzwCkaiF&7W5!zQ;SQSOC{~tT={qi1F2}*6&h0MGhA($x zXD;)%Td&&=?Gu0D4G+}C;MO0v7I_`iIN#kM$2Q-#&)!ALEI#S$&V@%ruK-iWytJtQ zFeU3k7xU*{8yD8|oR(8>DQT9vJ2me;O{7jDV()0(j5f1e zRK}6J&3$tPJq}*KyR!QA&AD(&3-oH4pmH~NLq~T!Q+I}hc7b*GpA>O>r;|a?pM1af zP4D+_)U8iZvEVa|Iu7T$QXWpM26_Z}!u+ zaMnQLh~`?>Mm4iXCMxsvbeH!)UGlMC;-(#2yLNicGg+$aZMUaLun(WT0xKzhbTnnz zr}ao5uX}j9`%?FkR7*YPp#hw!0mZ%jPqB8%?v@?l%WI zTEpleJ5F4O>-0Wt7#`msVWHt6Vxr>Wl*C%pi4oP!iH+b(rK9FYB~4@z)R$Fe%^l63 z=tL)&C8O&rY^>}oZEc+6+^tk8C54z@p6F)jQ|M)uCU2@LF|*{=a&NP#ZM7?~%CYq} zcXy)P)2T_c@1yo!Gwa;)(5JI{y00!OwY2lNcRn9BzP|rIKsez4;)tX6t{k9qEbJXj zXi&%`QuiW4Qdq1Wxq<;VGU4}-Bgl{<={?dovD}?N?b!8FIn7JIm=rJ4BWBO#$eeu` zc1jsjC(ximnU#EI^x)BtHBTmu2a3}XV`^y=5A2kNfz;kV)E z)7NW}KK}fzb?fgRwzh4j`8Obe1sZrDT*wKS!f(ViGS3eD*_9Q76z!qUE;`rgxi9dnZB9E{%=-`Kq$d^rurl8eh zAulF{P<+3AA`y3%GFb`6nV`c1W9CcmbnYj(`%;=0k5fCSr<@W_IU>etwCm z{<&Q?puvePpV|I+WS8sKsi#cOlDnVC3QMc(#2s0-BxO<=IvH2M8Y!sAHZ`1buDhaGa^j* zHUs_h%OdyeEzU}C2_=V-RC_8^Crct_%W4KY^`^td)91JgCw(BgE|jb9yx|&4^tAiR z)$`Gue(j)wQz79tnYGaU_HHCI7%kg1Gj*r`d=S@Dw9RK$3-aA~*By@Hjb~_X9rU(D zl!q06#^+U_RjehjYG2E8;*Mv`9_gi_?&ZG0+pAB=?oqvyGQdE$a6d?ES_mN3JN z2!PjvVNOz*L3?em73Ra?{z9lN30lnmYd{Q%4mozY0Je&62sz>hg?J{$$%s-=3`!EA zc9JKqZ&fqABL9R)IWtAjVP>Hq7^{)RFr~49PP2@vytqTF=&g<1Sem@pXvaO;j*nwm z9UucK$UzdakjrtSAOB&rPr=z#(2f9d!{T?@rwAm zx6N{y$S|5SZ`n#esd7x*D`H&mP{&~k5NT-xCYh!P8A{Mmf7H7e=L8qPDjDxpm5Zh{ zpAs<>O-YNJ?ArhIl&^cHkCR>h4A~bM22e;*E^47-+7OkbwM!+Fm4|~T&S108ReDp7 z`5WRcb~qYmt(L^YBu4a%g9IZUfKji42Q zItZaYm8fCc=f8?2w2>ihW1_57s^aHRwx}y>qk~#q0l|yWMJ-EN)u1|lb&eAH&!%D} z2}Q|Pwu5!Fr$}Wh=-fI+xB|^oR1NE6F-sIGx=?3x`fIl6qB9C|4y;`}>_!v2SQ$17 zVMUEuWMdmzJW+ZgZYZ>!A@*>pJ7sOBoM)ENx}x z+@YzgV^V{cn5_HJ8kse;GurJ*y(tVbCiH!%;#%e!OUJ&FRJm;^B}1PEE%sJ~YBbf= z8$)&_`?hat`IM^Gwm4at29Ce!(oukm>)vsWV!>hBgg;Ft&-w)Sk`7kGh0{RG41`LoDJElemx{KJl`Sv!K#c7{z~Vv5V)EL>NCP#8?6`tT(2VaH=+D`l6d(P>Z@#a)9#!Pu59{$61CDSt!UP^ zQu*v7fs=bR$1Wba6%E;*a&(Sp3+!nNv)R?&aM1gPuBO!6T`ha`r5tDWviCCXf{(eg zQ%N{9M|xKOsjXV!4~%%dsk-gfatGr>O1E5h*lm`VF}EED%*aVzKwKdEe9Eq_udeGv z0(WzYlKy$jaf@^-&sM(brTMeJ?C6rRR@?d7`DTJH^gWv#)~A`t4FPP>oY#RuOWmd8qPaNcy-NmzX0PiXFwuQ>8z ze!S&Te0b+UKJ%Xcyk8M-PSBIS^ztnG=!DgHLrQ;ombm}^|33f*pa7}|=TV-7 z?H~UQpaL!+12&)oj@a&r-T@*Y1-6mnvb3YH)bZc;d%;N#JO zg2maEIibGv+H8qeltCBI(n+HVu^$W>N|&UKVQDn>or#@!d#_APtV83`z#G zT_33hlobWoHx1s)wBgMROQv<1+_hG!cv|FfAU&;_q@~lSK*=8Z(lPzsd|g_Y{X&ud z@EkGmp0AY_xJ{QAT^v8fQ9-SPFnA0gI@B9}S4NN`x3QCaX_`;u6P|DsE5e;*C6%l6 z+Oq|s_0<{9ZCxbZPe#F_wZ&Ew*5YvqNDER;D$?B&rPo5u48}|jA1X^N>YsM;oiZAg zYkeQhY2V-792YT{92E@OoXcW?BNi5$AT|ZqjpH>!9Xkdbz&)ZuF~*#YO`&yMI=Y$H zh1)xRo6Er*orD{#aEwmzO7^i&tQ2I!sa^JkV>Vt5e0oEP2~Y>AT9F_vvvmej4)jud1?q7*a#*3TFE z(K-58PF5Qdt`kvaKsKa+u`hF`VH8x z>?0E`oveMOP41*gHKQpmW_OU~Sq7m5THBs{nnHEZNFrWkjwRCV$z|STPOTwfDQ3;} z&0VmKIx5W3aGjro)EvfCytElLN(p`8oiO>)WYR@U9?_v8;@#}s;v`;% z4rbzT7TNLXV z=GhM}C_62R2=W<@m8YjvSS7iQg${~(rrr;3XoME07c`+Y)zjrc1Bv$7F}$GPZH@1F zRbS;o-su^GRUw{r3lT+*skG>3b?A7$8k^)N6y1$F;izQB<&VM+QZ6CzMVDpP-M;M? zjQZNyab7vf+2t*%o#Ch%g&?Z&q5_FteKnWd#b_vAnst4mkXD~Qndxl?2`3iXYj%!u zGG`(7U{l!>Zcdt4YUEv>UF|JSMsA~?s*EElZ>Sa2_>Yb?^tyyWZvFbue zAziNHF^=lxM5C{|YEZ6F=oKJO?iHje7Cqi$jHM&I4Un=*<&Obn_-)*??x<72s+69j zNkwX$xM-?IT5nM##l7ma&Sq*NCahuxBYvy5rlj?4Bv)eJd5NT-#^Q(V+|%i3TD%*# z0^eown_2BEml32=+MJwm;-B7=c+O=o(%rw>8ATipfqpDmW$LRfEQnSR$pRB`A*~%mEyk|l%EIiW@)V=3B+%*|ENNw?E^90{Q&)bh z%C0M&$qm=StHmWmn{J+QC2ErHfqwwE4H#7L8|ItIwR5k>Y8GYcE!<~=4K-* zCkYDcc4D2I+U#-0>9&$-juN7Q5$AlVmS@47Zo(FH;;APl-5K(e!D8z_g`h|J9g8xR zm>QYwK`6t*lXS9}?9wP}l&;K1uU0hZH)t>UH7$$(;Rg6F7g!{y^rmn79ciGdulr6C z`nJ+>zHb>+X!$PL{hAm17GKEPA$Er7_IXT{%IKlqXpPR<7&ay8egYca1mP6s`#r{q}e^ih)y>(9P&Y+yDip=PVPPVcwv>=nPU8E5hEO)#9UBPM#|_z~3g zx~-c2a9p`8ZZhnxIH%UF?yy>M94}m%sqhW|7v|+guoio*?uM<@&YFEttyyl7z!ELf z!et_(@!cM+hr(M7cX9ZB?dAR=RTeHFAEq9=B{yxYRTeE4D{_-D^37HaOXh6wk#Yw| z-{U@}-ufxuzTrh2ZsJm@Ynt$rrgF)O@<7_jebOrXJu4zIr4kXMA*b%_j&AK{vjPKe z!#40ZJ8&BJ87}vj>e8==?#CV*aLJLI5VNxp5^a8S4DpUAN6uiO z^nN5zA=_aBCujR0uZWYDOb+gpHN}&Y}#d; z7IwhS?NAbgFJJU?)?_Cd?@ooBETUXfsg)*%tgx|Jnie%;nqptKRFfP`X=}Eeq^)IF z6X%AsB$KXR3ua$7vAEoI#9}tcY71|7r>X8HrUBS0#-uLt3KG^W=1wiZB(V&k@Yq1y zaT_Y6p>kQfpGTOin=W;Ut5@SK{BG0bVEN(Vg(_$r)F0eIAt^_NEc&c$h_xiXY zNwh6R=c%=>x5l0E!X+{$Yv+EyE^L!@fb-#h*JZ_Ri&sh!EMKB6J7sL@uy0cGKHBlG zP4ncUq8TzBrG2Lxic#Urtiwqz9!IN(AMCnmwc#H1RI~KJ+G|xpQ*bJpv)Zg*q9ngf zHWionAeT`LnWl`()jPYj@e1t*i}POURbpm$Ha3?T4{eJ+_8*+GAL`7xv?^O%i~OTE%Y>c zCTC`C2RM1#`lxGXX8BFHI=5^k2!6kKPAf8fqj0ikxK*y@bBVglT~um>iavcH1Tviq?ez%M;#6xKxe4akGOS_u6E`~K{}z8%+dgbEJKa7UW-2ZsBaW=9KDnE<2WbdhC)3RDsi-io#n+>0 z=lX8rHQwWV9nL=l0Ptj$596El&i5xHd8#mnXc^_?nrxYRrkm82vMk^ z%;)M^Zb}jE7(BhEQDcr6d`h?3YHYWKidRkZ8J$+I*=_e59xq>DEu>8R(kVwoUlK?w zFz^qLXHd|~5Yf+S1urCwi*7MV5{Rnr3z4kx2h$N$uFZ0h#?Fw6Yn2nHGZhvMb&Swa zmG&%aFVD7Dhv~}b^lo_6_!v1^c{!PqudjrxtX21RwwT&inn!zDcY5_Un3r}5dpvye z`!&6tmAR%=|CV@6-G2KK_;VZZycM&{JzQW&d<&x}V89&0z)1tt4_-ux6Dd}lqsbWv zhrr~0%5)GC$5?}|{pvxE;ktbv#i6SvvLQYvCbg+#bOh$JUivI%n-^1sz*;g_ZUPFC z;l3wATN1^^!XwjeG7BZehqPx_ty{SYqZA2=QfnhghT8a!mCa!bJKDU~acxw0O6kU+ zi?Ht7k#Mn2gxjPlg@)obQuswRNDlS* zJLTAe$G2vH3lKrA3QUl}1{K5zxUejPZoB;K$}7AIMfoQldZMe$Htd?4(7ZjugDu36 zN}O!1OEd(jiUA#*k;WQryb;G74b*9&=CWGQ4Ip*=O~xUOJQB$ym0Xg^AB*g-$tb0q zlFBNryb{YSM~RTjF1`E`%rM0qlgu*BJQK|{)m)R!Hr-5<$jxMn&aWr6R6|I}@EkBt z;kH5yJUglUipx652GdO65c1MiDeWoMO0gNsRs=&Gbp$x})0J3KdcF13WP?NnFFK#O zBD5GU!f3dRzT(5B@iHtWm83R3s*u}W0)s_zgrLl}e9HB)sBrb8_L14Znhf3xt&$U8 z8$+E!qgm56Ce}`*GwPUtl{FPW@;pH+KUL1f)!MFMXI#aRC@Shlr-+9 zXhlji%-fC`TeUs%>}@wUf=l{v=C0*S`lh8@rY~j_RcvzKeo0j~-gb#5c|=Xv{{}^C zcb|2b&}?xNnr~#EH5v=M%QT+zDzV0PQe)oEx(=uni^Y!g9 zO_SQnpl7nf4X<#p+Zf9dwzhSxBY&m?m)wd2F0V{)SHuxj`b4;*4EBbA|E7E1wwwj3 zVDW2IY1*z&xZsXEiQFwJ^vM zebggvxlcoOL7Ihb;yx!_@eZ_!BeZJAodou$Y~OoS1o3i2?Kx11&Z}b+33(`*&FGN% zQq&+5xrRm-vK}{6o7HakuCHMXd~p2Z3}NVn{Xr6xpnPN~Nm)v-sO@#}S|f;1$E^TD zBZM8AqbBWjIaA&em$}qsF0m)c2mNV~#oFaCiCIizqUv>|1LiTAnXFGW6PnS)Q7?fg zO>0UsSJ%|$Ham02o^cbL#LQ+m$yv^2P;-*L3Z^+rDG8WKv4<~O|0g@?Nl$O4Qea#e zWj!JJ&NqGmZ#)YdKM7jUMSe4TTbySa_G!=yYEU8Z`=moDTG2V6(u5yEN42QPK?rh< zi54v+OBw^czcf^&Da9o^gQ!6Ku&jD6Wb0gy8P&3abTh7*srTq=%7#9(uYn~cS%pWZSAp}ENOwqz=>v!NC3XxS-Q(w=rtio}p(|Mj`pkmjh7i8Ks*BBnk) z{X|%-sTFH2LRi%Pc3`Ug9z_6kAf0ToRs;f4xRR?g=lachwuP?8mbFRhc2h;ZF)eVp z8$*VYQMq#h)OBy0GwpINq_Jfr63NT3=4y()vceVTB6Z5_@z#Rym9McJSutng*N1Vu zjAaQNt*c!Nup}#PkxHZ37|Cq1MV(q+1w0@9!DNlup-vVvS<^<;E1+|8+lB+jESc2{ zTGQ>zcJr}b&x}wG%XQ2d)Ui(#YP=(YEey584Hgm|3j+TSCao)D`!wD;~neiykTQy zwlXu@#v+$&{99Te8<yuDS3>E%t<2GLTxR>1=e@c8Rz)l7CG9unQkgA=XbgB zdN+0z{#f8P{J#VX8*mqv=d5#*YcuXPbNfJ@|_t%)k#vyPFHXf!TgRl7q7lgrB{9OJ*TY#)kQ?$0}= zZ0>gIZzuQBID&&{lhL{&5$pJIKg6iE8E$D@|CjG6mwflQl?v+)6Wo&$PWf;ryf+@# z8-RVrH@riq>o-sO-*P2Qq4}yC>e}qAepbxHTaNRGr+eW^kGcGKeP%nu8Kda}v|g*t ztE|=o=vANI9{0*dXaBs`Dwmk2uFKSyf80NoWZwxb{>cU77S>U|3)ZPBY4h1KS7KIO z9#fuahZh>{^_FYjPeV(&Pq@Ap?KZIAZa94lClW%uYM)KoN$^Hm(p}FnRaPzB+dVPJ z#5*kWI(X6tpWd~SPd2tb%Eb;+7K|JpaVsU~#(BB*@nZBfpWmt*ScV<+Am)7T4KjiTgDHjo25&;vgZ1Vc~+N00Tm+@{}2mx>zs(p5QPTAIxoWx>)P0^<{*$>SdVygkIKeu z(=dcFmQU@fif%q9j5g{47ts$9QTCdTAmYIkm4*KtG3QS0^`PjbII%p2%+;zdZ~UoI zAg2^n33njTC*}-xHnA0d0u{jyN+2$LjGUfNp+(P3H>384)J4w#ND*QQ=@O{)P>`CNIlst2MAHRVrla;<3p1=a~|3 z9aSY6TTJArVj!RK>i$t0&nO-b?}1#7Aq_9Soa6FZ2kC5SB1>vQ67su%s>hZN#>~wl zKQHNur|EPKMUZcbC@mb#|1P@R3yGMqsf;b(V5)~ovKR`o<3`fcbn;64=Pce)@XBL| zjI#Qyv5MAjSTHGlXi_8Pff#=gC?W3<1aJLNjS;FcOY~v)Eby&3&Xrb6$g(Ze;-cvs z?AC4!MMCKI>}M4(k-ngjD=&%_)lFLXLmlh#<(AM4=L@L>vMSB788wA350j$EakL0! z^Lh(0lPU)zQ!*!$GAq+EFB3B}Q!_V{GdnW|9}_fT%QHulG)vPo$0RgUvqqLnH3dsB zTXQg3&5U5vH5HRKJBu;*Eu+*+5Uq;}TZ>72kX?i`scsWAA<+&nuDW`&z25K)A%hNC zB|6)(jt=OSh|@Sv|0`N#QQ(3p4*}5+`Or53^M3LO3(riHvhz59k2^b0{&LP@4$Q-Z zZDjHh)DVmkk3x_{;Sp(S8-XwRpwBC1Q#o1CHr4a7wiB}qaN&G07DrFw#O>K~1Kr5% zRhY~s8IXsB5gWB}$%1h{@en}~Q$e)_B^U77_;D&0jT$R0A_3?j)R1eGXvX$u>B=bg z7!5nea76jCM7Od-Ez$HUuXuzMF6FW0#?Br0P1%SP;PTO`D(n8P&N{F2Kzp>Wel$5Z z65y!KJ!7fjdQpbvF@iWm-lDDWV()h-?A?U&<_Kv=u@thjbTkI2C>hco&GbL?&)#&= z4sG&8Z4vu^{|z8TZ6)#WO68QTkW)h9%CZ#h6>rjGQb>=u$}9`$OcTxLrl^LF5-N{0 zPOm3a6}2|!@F3b!_lh(DThAd^wIf%_;usB9+LJBeQ4QIWL|)0O4wY1UH3((XQ@nGY zWQ!a}wJQ_VSCh53>;zer)mfkQMov>&rU*dXT0mg-@3qyT{v4hs$^ zcjRK3|MjlUDGIZZpJB}-Oc+;s&n&eSY1Cp$$?(XdPNY(0{;?aq<` zadiKn4@Vbh|)r-@&oZ0~T0F@#o_33UFY>P8z1F^h5w!N&6Oih<@zvE;f2y(4zg+y^$ zw1*}?4Mt>%O23p(l=So(?RGWqG{jVCmBSCB$aT2v~?lYXRAr|F0~?g z|Acv8Yd~*i>%vZgmUKdPg&@zgGB=K3&t?dWVh z6=x-qh}8^+x{LQsn|c_pe(HRt}s4q5ch^Ny9xQV(S>@qS%*dd+R#O1D!zRC67+ zCWY4ln|CPbk3s8?e+hW_;3>U8*iQR(f?Jr=q7E(d5`$H7b$bskvBU0?7Tm^BRh?FR zqOk#`G(~B2EX#A27`9@KrCOJmiJRDopZEk-kb3FudOl-)+ZBqlSc|uqi@W$`V3-k` zHOBB)l)P9oX~K-tSdFt-ib>Li+iHy?^U30vj_bHucaVkOIKb?f2GN+0{}_MqvQsMs}zqQfh771qLdb^g05kIPd=Y^I87`U!&DrrHk7Zn{-zR~C0B`o zIhnr%jbo^ARdyjUahdD6o@beb2~Tayd6l;mDll;H_;z_Yac(oQZYPiz6T(Xij?2mi zoe}z=`T5(HC5};fE%nh$idmkmj->3_qhGn1A9sH__p7=M^?um-nz9zj|3`+M=5!Y*1vw5qcQrUhdPk)d4ZJj9v94~i`bdZ?b^Jz#oE_^ z0ck+z85I9+rjxgbn6z+fr=l^kk;9~1DoBShGF2U!sMDH@Lpq>aa|w-q21*p&e~ zNZ0VDVcPM`*RRF*hLJXC7~5J&+qBnu@ys(TrL8AXuB(d9gZ(xui>!Vxwc{=jvfKAj zV2mj_o5oK2GSM2ihr2Y5I)u!3p%SA&y`3%RAsyUgJGyn`#X=R2^-wLt46W9^%a9h<-D zN?se7W$pLBYbJjWwwM18y`$-h?}T7Kto05tofo&jy(3}?F~PqTUm;j~ZL=}i1;h`E zlqXcc9h`tVb_t<2(kfhf*;->W++>BYK;8?O9+?=IGpZl#y3dE#C~c|tcdA+3`;7aA zgiitAb6#UK6@xaK`Sh1NCtMpE+wLaf;7o>nIe@XU9l$8yAlO zkFOCHaMSh3fvnC`IDNxyfDd)uMjQdxGRsLi8)z3wOIUC**lTgisT=&zU--V<8Wcr3 zF5$Xvo6vBr*VBI+izIS;Tb+n0o4~UQ!nNG0MbF7)R{*8DfDxSNO#RdeGSNqvLzm*Q zRgDKZy-fF8Pj_P++jL5W+8@#J#-07PH4WpCoqcW8IIeKZD8$Q?{dF&0vm@PhRs4W2 zz5FCwaVA~Vrfdoq#3$jy-ND^>#QjPq=8G9nVA;DIq%$tqg27Ie0y) z!&73-f2_7SeY`S{;BRx?hp(m%EtGF-w$MF+u{E+K|8Qn^T!(?$KYQ1fpA^`^7Z|BC zQsaUg%Ymsf&I`>Ko}j{!sz`yor9!m)@p4iVok`J*8d_ zm0rYkH+Ll&>x*f1l+)@d_v`t~zr~#Er8Zy7eydRW9I?0T@SN@IQ0pz}*8Th?d6-4& zGo0rh0C~a2aQOnA9=r|SQN!NQ_FQ60&4UcA-J0F+MN{Fsvy-7W@(-%+{q)-1axPU? z6}|iN;dt`LUYkQ7>K0GYg*Ii8XMv=;-cA2VZZ`=Lob6zr?!lPZL;lV^AEh%d=WQSD z&t3ew8Telq^>e=uO|J1W`}d2#ik)BCQ$6+j{~TR5eH#51`kATu%hn6!J@9S$k&(O8 zM>+e;zpf74{L|k!pan$pB!F8ra2^^6LpKl6q``bUz+j~;pKNq+h0-l_-RsblL zxc9eN;z)v8#-ZiPw(bkZ@_c3Xq^c&(_x=wI3Wvm^@rX<+WuYZ2)QmxOzZ(@9je@R4 zYYNA8ipR!H4!7fw*X*|Y4Ufy`El>E_H0QFP@Ah=n_qQczp{L^k2#7M32u3AnH+Vw% z_u=>mHdvT(#4vU(bimDe_9$k%CAbt2xKcdniph|ZvALvlAjF8p^{GegXEJ^vccq(R-RPfm0H44<(6K43FdcQ zhDm0bX5u#HnQE@dW=v_e3Fl;4RxxLsIKF9To=bf86%SGB*&&{Q4yv4jXHi2akb)-4 zsGo@t6BH+G^*NrQjjp%o|D~FG)>vwOsR(M6W^Ec@rlg+A7CobaI-M}#9A+u1+?gtC ztz?Z_U_Prk+N7=0(dz4|v#AxLjP2-}Wu3u_8Dp`_`Z}yn5As5(6o)>`ERj26E3B%- zvTB~F-*S5$u;en@OJkW-*Xye1{@N_K?{@nq9`#N-FLmbT%kLY#_IsD71^x?g!3H0U zaKZ{N%y7dFKV0s>5>HHV#TH+TamE^N%yGvae++WSB9BaR$tItSa>^>N%yP>vzYKHC zGG`2N%{JeRbIv;N%yZ8^{|t1{LJv)J(MBJQbka&M&2-aFKMi%%Qcq2F)mC4Pb=F#M z&2`sae+_onVvkLB|Ji1rjdt2tf38Wh{GJ}aECnXp$~ru#2^ZBh(s)+5s!$(Br0)< zOl+bPp9sY$N^y!*tfCdKh{Y^waf@8+q8Gmi#xRO;jASgM8PABuG^%lpY;2<&-w4Mz z%5jc#tfL+8h{rtYagTiLqaXhW$Uq8mkc2FxArFbjL@IKTjBKPM9|_4wN^+8vtfVC` ziOEcAa+93wq$fWK%20}Ol%y=BDNl*YRH|~7tZbz#UkS@t%5s*ptfeh)iOXE-a+kd9 JWdS1q06PV;>5>2d literal 0 HcmV?d00001 diff --git a/sys/doc/acme/acme.fig2 b/sys/doc/acme/acme.fig2 new file mode 100644 index 000000000..33ea4064d --- /dev/null +++ b/sys/doc/acme/acme.fig2 @@ -0,0 +1,1139 @@ +%!PS-Adobe-2.0 +%%Version: 3.3.2 +%%DocumentFonts: (atend) +%%Pages: (atend) +%%EndComments +%%EndProlog +%%BeginSetup +mark +/picstr 73 string def +95 261 translate +420.48 269.28 scale + +584 374 1 [584 0 0 -374 0 374] +{currentfile picstr readhexstring pop} image + +f700000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00000000000000001d +f700000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00000000000000001d +f73fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffdfffffffffffffd +f72003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffdfffffffffffffd +f72003ff9ffffffe7fff9ffe7ffffff3ffffffffffcffffffffffe7fffffcfff +ffffffc7ffffffcfffffffffffffffffffffffcffcfffff3fffffffc4fe7fe67 +fffdfffffffffffffd +f727f3ff3ffffffcffff9ffcffffffe7ffffffffff9ffffffffffe7f03ffcfe1 +ffffff9fe73fffcffff07ff3fe0ffe7f9fffffcffcfffff3fffffff9cfe7fe67 +fffdfffffffffffffd +f72413ff3ffffffcffff9ffcffffffe7ffffffffff9ffffffffffe7f39ffcfcc +ffffff9fe73fffcffff33ff3fce7fe7f9fffffcffcfffff3fffffff9ffe7fe67 +fffdfffffffffffffd +f72413fe739c3279c9c793f9e1938fcf0f8e443e3f3c3e3910f8fe7f3cf1cfcf +c8f0e407e7323e0f1ff32720f9ff8c1f9fc7e3ccfcfc88733ffc73904f070e67 +8fc5fffffffffffffd +f72413fe7399f279c99389f9cf9337cfe736211c9f3f9cd884727e7f3ce4cfc7 +c47e649fe7311cce4ff32733f9ff267f9f93c9cdfcfc42337ff9b399ce67e667 +2799fffffffffffffd +f72413fcf399f1f3c7399cf3cf8e7f9fe67e73999e7f99f9ce667e7f3ccccfe3 +ce7e639fe73399cce7f32733f9fe667f9f399ccbfcfce732fff3f9b9cce7e666 +733dfffffffffffffd +f72413fcf39873f3cf399cf3c39e7f9f067e73981e7c19f9ce607e7f3cc0cff1 +ce70679fe73399cce7f06733f9e6067f9f399cc3fcfce730fff3fc79cce70666 +733dfffffffffffffd +f72413f9f39c33e7cf399ce7e19e7f3e667e7399fcf999f9ce67fe7f3ccfcff8 +ce66679fe73399cce7f3e733f9e67e7f9f399cc9fcfce7327ff3fc79cce66666 +733dfffffffffffffd +f72413f9f39f33e7cf399ce7f99e7f3e667e7399fcf999f9ce67fe7f3ccfcffc +ce66679fe73399cce7f3e733f9e67e7f9f399cc9fcfce7327ff3fb39cce66666 +733dfffffffffffffd +f727f3f3f11f33cfcf9399cff99f367e6736739cd9f99cd9ce73667f39e6cfcc +ce66679ff2739c8e4ff3e233fce7367f9f93c9ccfcfce7333ff9b399ce466667 +2799fffffffffffffd +f72003f3f89873cfcfc783cfc39f8e7f138e739e39fc4e39ce78e67f03f1cfe1 +ce71279ff8f39e4f1ff3f138fe078f1f83c7e3cc7cfce7331ffc7399cf271267 +8fc5fffffffffffffd +f72003e7ffffff9fffffff9ffffffcfffffffffff3ffffffffffffffffffffff +fffffffffffffffffffffffffffffffffffffffffcffffffffffffffffffffff +fffdfffffffffffffd +f73fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffdfffffffffffffd +f700000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +00000000000000001d +f72003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffc4fe7fe67fffffffff3fcff9ffffff93fff9fffffffe7fffffff9ff +ffff93fff9fffffffe7fff3fffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfff9cfe7fe67ffff3ffff3f9ff9ffffff33ff9cffbffffe67c7ffff9ff +ffff33ff9cffbffffe67e79fffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfff9ffe7fe67ffff3ffff3f9ff9ffffff3fff9cfeafffffe793ffff9ff +ffff3fff9cfeafffffe7879fffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbf3904f070e678fc60c3c3333e391e1c8e7323067f1f1ce64139ffe391e +1c8e7323067f1f1ce641e7cfffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebf399ce67e667279b3f99f373cd88fcc4673119e7eae4ce66739ffcd88f +cc4673119e7eae4ce667e7cfffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbf9b9cce7e666733f3f99f2f39f9cfcce673399e7fbcce6e6739ff9f9cf +cce673399e7fbcce6e67e7cfffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfc79cce70666733f3c1870f39f9ce0ce673399e7ffc0f1e6739ff9f9ce +0ce673399e7ffc0f1e67e7cfffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfc79cce66666733f399c32739f9cccce673399e7ffcff1e6739ff9f9cc +cce673399e7ffcff1e67e7cfffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfb39cce66666733f399f32739f9cccce673399e7ffcfece6739ff9f9cc +cce673399e7ffcfece67e7cfffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbf399ce466667279b399f3339cd9cccce733399cfffe6ce667939fcd9cc +cce733399cfffe6ce667e79fffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebf399cf2712678fc78c487319e39ce24e73339c4ffff1ce671c79fe39ce +24e73339c4ffff1ce671e79fffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffffffffffcfffffffff9ffff9ffffffffffffdffffff +ffff9ffff9ffffffffffff3fffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffffffffffffffffffffffffffffffffffffbffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbf8ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebf3ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbf3ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebf9ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfdffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebf3ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfdffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebf9ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbf3ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebf3ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbf3ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebf8ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffc4fe7fffff1fffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffff399cfe7fbffe7ffffffff7ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffff399ffe7eaffe7fffffffd5ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffff9304f07f1ce41271f1ffe39cffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffff939ce67eace67264e4ffd59ccfffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffc79cce7fbe6e71ccccfff7cdcfffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffc79cce7fff1e73c0c0ffffe3ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffff939cce7fff1e73cfcfffffe3ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffff939cce7ffece73cfcfffffd9ffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffff399ce47ffce673e6e6cfff9ccfffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffff399cf27ffce673f1f1cfff9ccfffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffefffffefffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffffdfffffdfffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffc7fffffffffffccfffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffff9ffffffffffffccfffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffff9fffffffffffffcfffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffff39049c7c7ffff91ccfffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffff399c99393ffff88cccffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffff9b9c73333f01f9ccccffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffc79cf0303ffff9cccfffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffc79cf3f3ff01f9cccfffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffb39cf3f3fffff9cccfffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffff399cf9b9bffff9ccccffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffff399cfc7c7ffff9ccccffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffffffffffffeffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffffffffffffffdffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffff8ffffcff3fffcff1ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffff3ffff9ff9fffcce7ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffff3ffff9ff9fffcce7ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffe0e3c93ffcfe1c833ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffff3c9c9399cffcccfbffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffff39cc7399cffccce7ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffff39ccf3ffcfe0ccfbffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffff39ccf3ffcfccccf3ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffff39ccf3ffcfcccce7ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffff3c9cf9999fcccce7ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffff3e3cf9999fe24e27ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffcdd3ffffff1ffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffbbffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffffffffffff9fffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffffffffefffff99f1ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffffffabfffff9e4ffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffffc787878ffe7ffc7c739904e7fffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffffff9bf33f27f8fffab933999ce67ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffff3ff33e67f3fffef339b99ce67ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffffff3f830e07e7f01ff03c799ce7fffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffff3f33867ff3fffff3fc799ce7fffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffffff3f33e67ff8fffff3fb399ce7fffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffff9b33e737fe7ffff9b3999e4e7ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffffffc7890f8ffffffffc7399c71e7ffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffffffffff3fffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffdfffff33f3ffffffffff3fffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffff57fffff3c3fffffffffc3fffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffff8f8e7320f3ffcfffffff3fffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffff57267333f3ff1fffffff3cffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffde673733f3fe7fff01ff3cffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffffffffffffffe078f33f3fcfe03ffff3fffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffffffffffffffffe7f8f33f3fe7fff01ff3fffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffffffffffffffe7f6733f3ff1fffffff3fffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffff367333f3ffcfffffff3cffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffffff8e7338f3ffffffffff3cffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffffffffffffffffffffffffffffffffffffeffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffffffffffffffffffffffffffffffffffdffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffffffffffffffffcffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffffffffffffffffffcffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffff2718273248ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffff264ce7324467ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffff1ccce731ce67ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffff3c0ce733ce7fffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffff3cfce733ce7fffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffff3cfce733ce7fffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffff3e6ce233ce67ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffff3f1e3133ce67ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffffffffffffffffffffffff7ffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffffffffffffefffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffffffff00000000000000000fffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffffff00000000000000000fffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffffffff00001d80c00cc0000fffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffffff00003180c00cc0000fffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffffffff00003000c00cc0000fffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffffffc787878ffe7ff1c637d87c78cc381cfffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffff9bf33f27f8fff3263318cc0ccc6c329ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffffff3ff33e67f3fff60323198c0cccc6609ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffff3f830e07e7f01601c3198c7cccc660fffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffffff3f33867ff3fff601c3198cccccc660fffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffff3f33e67ff8fff7ffe3198cccccc660fffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffffff9b33e737fe7ff3007318dccccc6c329ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffffc7890f8ffffff101b3186c76cc381c9ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffffff10600000000000000fffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffffffff10200000000000000fffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffffffffffffffffffff01fffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffffffffffffffffff20fffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffffffffffffffffffff307f1ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffffffffffffffffff783e7ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffffffffffffffffffff7c1e7ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffff39ffffe0c1271f1fffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffff39ffffd067264e4cffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffff9bf80fe8271cccccffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffc7fffff4673c0c0fffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffffc7f80ff2e73cfcffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffb3ffffede73cfcffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffff39ffffce673e6e6cffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffff39ffffce673f1f1cffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffffffffffffffffffffffffffffeffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffffffffffffffffffffffffffffffdffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffff38e7fcffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffff33cffe7fffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffffffffffffff3cffe7fffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffff209ce73fffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffff339ce73fffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffff339e6f3fffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffff339f1f3fffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffff339f1f3fffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffff339ecf3fffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffff33cce67fffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffff33cce67fffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffffe7fcffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffffffffffffffffffffffffffc7fffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffffffffffffffffffffffff9ffffffffffffffffff +fffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffffffffffffffffffffffffff9ffffffffffffffffff +fffffcffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffffffffffffffffffffff39049c7c7ffff9cfff3f2 +3e39c83fffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffffffffffffffffffffffff399c99393ffff9cfff8f1 +1c99cce7ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffffffffffffffffffffff9b9c73333f01fcdfffe73 +999cdce7ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffffffffffffffffffffffffc79cf0303ffffe3c07f33 +981e3cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffffffffffffffffffffffc79cf3f3ff01fe3fffe73 +99fe3cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffffffffffffffffffffffffb39cf3f3fffffd9fff8f3 +99fd9cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffffffffffffffffffffff399cf9b9bffff9cfff3f3 +9cd9cce7ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffffffffffffffffffffffff399cfc7c7ffff9cfffff3 +9e39ce27ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffefffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffffff3ffff1ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffff3fffe7ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffffff3fffe7ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffc73878f3ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffff9333f27bffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffff3333e667ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffff0330e07bffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffff3f3867f3ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffff3f3e67e7ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffff9b3e7367ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffffc730f8e7ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffffffffffffffffffffff1ffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffffffffffffffffffffffffffffffffffffff33ffffe +7f9ffffffe39ffc4fe4e7fffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffffffffffffffffffffffffffffffffffff33ffffc +ff9ffffffcf3399cfe673fffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffffffffffffffffffffffffffffffffffffff33ffffc +fffffffffcf3399ffe673fffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffffffffffffffffffffff39fffff1c8878733c7e39 +e1981e3e38279304f0739fffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffffffffffffffffffffffff39ffffe4c423f33393cd9 +cf9f9c9c9ce7939ce67399ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffffffffffffffffffffff9bf80fccce73f333399f9 +cf9f3999cce7c79cce7399ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffffffffffffffffffffffffc7ffffc0ce738333399f9 +c39e7819cce7c79cce739fffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffffffffffffffffffffffc7f80fcfce733333399f9 +e19e79f9cce7939cce739fffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffffffffffffffffffffffffb3ffffcfce733333399f9 +f99cf9f9cce7939cce739fffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffffffffffffffffffffff39ffffe6ce73333393cdc +f999fcdc9cf3399ce46739ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffffffffffffffffffffffff39fffff1ce738933c7e3c +c3981e3e3cf3399cf26739ffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffffffffffffffffffffffffffffffffffffffffffe +7ffffffffff9ffffffce7dffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffffffbffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffffffffffffffffffffffff33fffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffffffffffffffffffffffffff33fffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffffffffffffffffffffffff33fffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffffffffffffffffffffffff8733c7e3f9cfff3fc7fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffffffffffffff33393cdf9cfff8f9b3ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffffffffffff333399ffcdfffe73f3ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffffffffffffffffffffff8333399ffe3c07f33ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffffffffffffffffffffffff3333399ffe3fffe73ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffffffffffffffffffffff3333399ffd9fff8f3ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffffffffffffffffffffffff333393cdf9cfff3f9b3ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffffffffffffffffffffff8933c7e3f9cfffffc73ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffffffffffffffffffffffffffffffffffffffffffbff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffffffffffffffffffffffffffffffffffffffff7ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffffffffffffffff3ffffffffffff3c3 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffffffffffffffffffffff3ffff3ffffffffffe7399 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffffffffffffffffffffffff3ffff3ffffffffffe7399 +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffffffffffffe0c3c333f39ffe7f8c133c +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffffffffffffffffffffffff3f99f37f39fff1f36733c +cfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffffffffffffffffffffff3f99f2ff9bfffce7e733c +cfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffffffffffffffffffffffff3c1870ffc780fe67e733c +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffffffffffffffffffffff399c327fc7fffce7e733c +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffffffffffffffffffffffff399f327fb3fff1e7e733c +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffffffffffffffffffffff399f333f39ffe7f367399 +cfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffffffffffffffffffffffff8c48731f39fffff8f1399 +cfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3 +efffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +dfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72ffbfffffffffffffffffffffffffffe3fffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72ffbffffffffffffffffffffffffffff9fffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72ffbffffffffffffffffffffffffffff9fffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72ffbffffffffffffffffffffffffffff3fffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72ffbffffffffffffffffffffffffffff7fffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72ffbffffffffffffffffffffffffffff9fffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72ffbffffffffffffffffffffffffffff7fffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72ffbffffffffffffffffffffffffffff3fffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72ffbffffffffffffffffffffffffffff9fffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72ffbffffffffffffffffffffffffffff9fffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72ffbffffffffffffffffffffffffffff9fffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72ffbfffffffffffffffffffffffffffe3fffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72ffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72ffbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffffffc4fe7fe67fffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffffffff9cfe7fe67fffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffffff9ffe7fe67fffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffffc73904f070e678fc7ff3fffffe73ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffff9b399ce67e667279bfc7fffffe733f +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffff3f9b9cce7e666733ff9fffc07f373f +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffff3fc79cce70666733ff3f80ffff8fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffff3fc79cce66666733ff9fffc07f8fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffff3fb39cce66666733ffc7ffffff67ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffff9b399ce466667279bff3fffffe733f +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffc7399cf2712678fc7ffffffffe733f +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffff3ffffffe7fffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffff3ffffffe7fffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffff3ffffffe7fffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffff27938f0e67ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffff139327e66e7fffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffff398e67e65e7fffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffff399e07061fffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffff399e7e664fffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffff399e7e664fffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffff339f3666667fffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffff079f8f12627fffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffffffffffff7fffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffffffffffffffffffffffeffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffffffffffffffffffffffffffffff89fce3fffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffffffffffffffffffffffffffff39fccffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffffffffffffffffffffffffffffff3ffccffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffffc787878fe73fffff9fff8e7209e0824e3e3ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffffff9bf33f27e73ffffe3fff367339ccce4c9c99fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffff3ff33e67f37f01fcfffe7f37399cce399999fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffffff3f830e07f8fffff9fc067f8f399cce78181ffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffff3f33867ff8ff01fcfffe7f8f399cce79f9fffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffffff3f33e67ff67ffffe3ffe7f67399cce79f9fffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffff9b33e737e73fffff9fff367339c8ce7cdcd9fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffffffc7890f8fe73fffffffff8e7339e4ce7e3e39fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffffffffffffffffffffffffffffffffff8ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffffffffffffffffffffffffffff9fffffff3ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffffffffffffffffffffffffff9fffffff3ffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffff39ffe7e47c73907fffe720938f8fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffff39fff1e2393399ffffe7339327267f +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffff9bfffce73339b9fc07f3738e66667f +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffffc780fe67303c79fffff8f39e0607ff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffc7fffce733fc79fc07f8f39e7e7fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffffb3fff1e733fb39fffff6739e7e7fff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffff39ffe7e739b399ffffe7339f37367f +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffff39ffffe73c739c7fffe7339f8f8e7f +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffffffffffffffffffffffffffffffffffffffffeff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffffc7ffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffffff9fffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffff9fffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffff39049c7c7ffff9cfffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffff399c99393ffff9ccffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffff9b9c73333f01fcdcffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffc79cf0303ffffe3fffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffffc79cf3f3ff01fe3fffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffb39cf3f3fffffd9fffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffff399cf9b9bffff9ccffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffff399cfc7c7ffff9ccffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffffffffffffffffffffffffffffeffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbfffffffffffffffffffffffffffffffffffffffffffdffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffff3ffffffe7fffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffff3ffffffe7fffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffff3ffffffe7fffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffff27938f0e67ffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffff139327e66e7fffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffff398e67e65e7fffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffff399e07061fffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffff399e7e664fffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffff399e7e664fffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffff339f3666667fffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffff079f8f12627fffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffffffffffff7fffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebfffffffffffffffffffffffffffffffffffffeffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72bbbffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72eebffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f72003ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffd +f000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +000000000000000001 +showpage +%%BoundingBox: 95 261 515.48 530.28 diff --git a/sys/doc/acme/acme.fig2.gif b/sys/doc/acme/acme.fig2.gif new file mode 100644 index 0000000000000000000000000000000000000000..aa41fca378f465bebcf023d5aace429c7898b410 GIT binary patch literal 7740 zcmV-C9>d{BNk%w1VNwH31hfAD0000H5fLIHA~Q2HL_|bYRaItYW_NdYh=_=pnVG7p zs=K?p%*@Q)-QDi)?*IS)A^spkZ*F#Fa&%>6AYyqSP;6mtAUPmra&K)QJacqpX>L9M zEC2ui08#@?1ONp8@X1N5y*TU5yZ>M)j$~<`XsWJk>%MR-&vb3yc&_h!@BhG{a7Zi~ zkI1BQ$!t2G(5Q4uty-_xtai)odcWYXcuX#v&*-#z&2GEj@VIs;jK6uCK7Mva__c zwzs&sy1Tr+zQ4f1!o$SH#>dFX%FE2n&d<=%($mz{*4NnC+S}aS-rwNi;^XAy=I7|? z>g(+7?(gvN^7Hid_V@Vt`uqI-{{H|23LHqVpuvL(6DnNDu%W|;5F<*QNU@^Dix@L% z+{m$`$B!WYLy8oJq5$&6_xL>fFh*r_Y~2g9;r=w5ZXe zNRujE%CxD|r%fOt?uiw9b0}CEZxUk{Fh!ZPb%($`R$B-jSo=my2<;$2eYu?Pcv**vCLyI0w zy0q!js8g$6&APSg*RW&Do=v;9?c2C>>)y?~x9{J;g9{%{ytwh>$dfBy&b+zv=g^}| zpH98H_3PNPYv0bjyZ7(l!;2qJzP$PK=+moT&%V9;_weJ(pHIKO{rmXy>)+46zyJRL z1}NbFfCLt3;DHDxsNjMOHt67k5Jo8BgcMe2;e{AxsNsejcIe@UAciR7h$NP1;)y7x zsN#w&w&>!EFvck3j5OA07|%vs_CYjcIxS;poS{ysHB!^ z>Zz!vs_Lq&w(9Duu*NFuthCl@>#exvs_U-2_Uh}ezy>Squ*4Q??6JrutL(DOHtX#F zv(QE>?X=WZYwfkzW~=SC+;;2jx8Q~=?zrTZYwo$|rmOC{?6&LfyYR*<@4WQZYwx}I z=Bw|%{PyebzW@g;@W2EYZ1BMdC#>+o3^(lX!w^R-@x&BYZ1KeyXRPtY9Cz&T#~_DX z3;+`VVDiZ*r>yeIEVu0P%P_|*^UO5YZ1c@H=dAP2JooJL&p-z)^w2~X?Q+QV=XI}t4-8-aAZS1KwT^z! zQ(*N7NI?hkPk{_PT;l*3!SMO-e_F>h`+r5aS(!E4B`>L zcRdznuznsqVikAiJvEYXfC9`Il9B>l~So*SKLCTAK`PwteXl6>GacPUDh z7F3uvePu@j3e;pmw4ECLXii0{$IV&JpGozpMJcL7eG>AJoHSz}?0P-K_gb+HzRI zLlv?2NNm@e&SSy_;qQHw>)?JCbp#y_>4!rAI+^;H#yke3@~+!s*18SIv1U-!-)%8NNxkZ`dNZ()W$HaPEf5*w zSDUDI?WhYY)NC5Drg`ROt?w#m(p|8F%-(Qqw<*zOAN9o1yd*=2O7pP5Z+X$M%`jb1RD*}Yhb`mUq`_NYF19S~pt_;GO!HC_d-;(&fo)J9z^ zt?hkc*%6$$mA&-Cm+kISKfJ8@;5R@z4eoh|vayJrEgsvwWsMSC&+FE+vj?4U4Eos5 zW{q~r*V=H!9u(6N28YJ~;cq?NO8eTR@?YQlgC9<7?;LR+u^)%%Q!lwBu~V z;+~w^70(~kL3zoH+xf_z-uV-9p4cQuHU~Kl0@=SI_I~s{hi&IY+?g`>eG3rWb=Oed zv3vKhBN<0~-}T)s{OPr0DDd`pJJ^@(BE;8&&JBY}a?dM+jZGf6OO)J_3f`P=h?8hTX7*YG-&L)`P|2hTOo0 zJ|KrU7Gld`huZ*$kt2S37#n`54R|$*3gLq=7Bqyf36sFgJ^=0 z7*ihG!T z)5VX{QIE}Vk1%jSb0&Sz1wfNUhst4)%y5q1CuG2cjF?1J66uV+*nQG?XdZVyG-n+f zsSFeuIvzKDIWl7Clu_V|^YN9$K$N7H zlV(XCYbgw9=?S|?j%ry6-DPTV`Gr@hlZb$REM|$4(U!q*l2f2t%7lO1M>}xVXb-8B zkjRwoNS0Y}f%#^2TE}6J=|-?ffQ|u}z#y1VAd;+fm~i82NQiQLm>8V-3vccA1Rc_lhh>ihXvMZ1J4CP@JrZTvC>pVn=oB1d2Bqlym8Pj@gtRnIqn*3%Tif zc^RMDVV}4#pNYW#ots&oWZ0LmIfVF05d&%q`UwYoDU8JQg#1|*1zHQ>DFG5@u0MDpl`sJ$EBT;SB-NRoNA$=vk;*Yikw<$Zr6#6C1{~?VWP6Yp>?1#_%~GX z_?l^#q5ip-znN?A17SAWqIDsou|T7Aus9cYW+ED7d|{-pfTDLmotYV&IR~S00i~~i zq&2FT=-HsgRHQwMigux;uE3>%c^78d3R21ZL9i8mB4>kE#Z%I+HB;8Lt`&sY*DBnVpXorkR)-w+afe zng#@gTDG-{5c!wu38$_Ks;LmHA_1*%8J)%m3GH<>c_FQxFs$5otuA9KF(Z`BfwuraKW#`nA zS$3l-b!^S~7XGRUxf+L9iKAP|h?sP+@AR&Ss#W{5px+j#P4Tdq0I(99SWzjO%L%V- zwy^j*j3754!N}*`?T-s zvFa$c?jW~xNv-Z!wc-gv^SFmEMWsD!wiX7o%Enl9%MOJ*31lmw52;$_CAA$9v2(ye zl8auB3tvG9nc_O6gjlbUu(-S^v+GEgh>Dn}ak!EIxpu&cK3lrZ+PSy|TcTmQu3JPi z8wd^CMy+Un=xMQyA-mRkx$g<6u{N4+W@(9Hp3w4%J)n2!tp zyjaNxw@bg%MxOI4m+&i{#QDDYOS_?qn~$Nq_R73^nU?2^hCRZ-jexpgaDVOww!&$> zdvI+6*%}ng2o_8RSUP)57{QXrzc00dr5d}OtHQw8zZuBE!b`rqr@_hl!W}%4jEKXA z5yFd*xEIXB6AHvFWx3<~y?~%{3}=QYjJY-3Y*(m&IvmB?Mr@n=#KB93L24UDyq^yI z#i=32hakirLdJ$L!X1LfgGsoieQd5|_Nh z`uo8DimW=?vRvuO$N9CqrM@ju%Ap#@eyYmBsCDAYyVi)sTt~~>s>i|1!Y`;_rwNt5 zY;&^A62ROCYV63sDS^re$|{*`$w-8XEX=7K&4!7+DmJ1{m2NOg6V1%OwpS!=?tjnoQB#A!3P|AN?gY9h{s+z&(5qq`urE~EROMv&rbTe^{kHQYr9P+o&nsf z16-|3jG1rsKL(A&ADhtE%dtL-yknfn?fSBVdp{LTHm7W++lEf=%eoJJw;AnMEGmQi z+@<#mS1s%r0nLpA9nq2oz{_mYF`c1)Ao4GFGQrR zoN41M$VaUOR~@-U&52Nbp(ebH^p;^C$a7A8kX4hC z)ZhJ>;awyB?FRJiqdkon1>OdYyq{;iz>_8o!g|Vqih7(^!5zSD07P=7h85AYRbFL#tDP=Ok?Av<=QG_~T=q=A!MI zNXy$RcjIPO!ePtf)|%rR{Y_F>>6*#WNdf3%aNzR$%1JE$O3S$1Qq1Y<9Ornq$9~;f zyUgC2d$kuQtEpMEsa)4 z3Fcz0%&RRG%1*O_j^Uui>RSunL6*0i9kPf{gA+>alD>g|9`3%^p4ckS-n*R6TkQ$~ z@6#!U?jF&7_ubsZkM9LO1+34guVi0~1p@C%RX zou|psEduEJXhnw)X+SitPE zYGfKF>rMXhQT)LyJ{dHB1vZb>r?uA#xv8M^<&1~_VOOpcL2m`Y-tT71%@iBrx2EeD z`twoo^i?qQLT}}*eVjJ_)j0miHO;3yZ>T>y?IO71nqITLqw}PU?j5@JM2OqTy!2&% z<7evi=r zPguYF**^XHBG1?jW=UdhsANB>B5z7@et>?)H@o~KX$3#rA$8m{Cr)poe}>|K>7v`|DTVz5b)%r)n1(S z=G}iV6i2c&Pc&6m7GPgEmS?&iT?uga34eTBP&gzOjYnisxnypDO=wg)<@j{JUiL}l zcD-M4SUjF>$!B!>V&z%0YWPsMGhcJ|cwWEfuls*MB{r-at-!;ZK?^%PM8`+SBC|-! z%Br5WH$qFxMhwPDPSH_PiqKM2#6h>h)4VxTSjrM z`TN*-;O?RG_O04Maqbi@OyQ5=!z0iCqB$Is&(|Gd#(hOBwCbZQKTm%YC8Ib=0}2`5^C#^uO?7& zB!xCj+BFqduVF8pV=8lIwXDUyQ45-=D%ybvuNIsO5E|T}V)c#!yVoz%OaUGFyhg{9 z#=1dj{R~<-@hn?f|4!~i*>Wy&W&2*{+}Shc&!KH)o+#S%Y1E)odxq&|^J>_!k-nDg zZmHnfxpiBny}Ma!L%yRR7G9i7Z{uG{mred5uiNI)sUVjw3V5sPRggc=-rWXu?~!iD zBr3TdTaAl*5qGlQF|o+t!wZ-HKVMa5!Sx@R$GK6xNUU-R(6MpAiON0%7fBGJ@uG1_ z9}h@EXQZ}DA`U|M($esz1ryY-!#%E(Cn>@_ima}aK$=QGAhb%cAof7?P)3Cs)TBJ_ zPDC*$T6QuqKD+*Tibf*iDe^b`V)}5f6*C|VpE@23L9V!htnkPMm&B3`8;w+nKOKXl zuu2Z!g0d|P@zQcjzt&_^nIv5^Dw`?k{O>B17;7>;FyA!JO+UNn(yTy{0JPBA5Jg2q z9uzgy(dZ6^l!-wlo%GV=EX6dUID^~tQ%p4lRgUFw+bhOVQ%yotRcm0B(5`Z9byme_ zm8Mkk^pe$9USVLh*A_be#STYuE+UXF73;hbSVw{{Bpow3hV_s0H1}_S#3>t zmD@DZglxkDVZ0EoGP}hRTy<5uCRcXp>9H}7UZkqsN#n&gLSaXoZQiMd#L1?8_TARt zGb&A#Od+?})yXCi-cnzQAto!oInP{CTv)Z!xZ)xy23bL}N+Wi|t<*Y7&yi^qxn;oM z?U=}yVSdnNL8HBKU7TgC8Rl<$7J9OuTUK~zq{S+F}J_swckdqt`=>&?c&&NsqyBtWahk1E5I{b+*bK!~iS@{@(Xa0FTjPDkC=&OIn zdKKK$3489H>0YVt!#_lNZOIq^{GHLSN`3aPZ=c`y;}^qxX6cvTdi#6L|NiIqx7C0C z5f6Z~(n$dgct8XuP=O0%U;`caKnO-qf)k`*1ub|%3}#S+8{}XIJ@~;N1yF<|Bw-0n zctRAWP=zaGVGCXOLKwzShBKsL4Q+Ts9Oh7mJLF*xefUEl22qGZBw`Vbctj*7QHe`r zViTSCL?}l8QHoQfVim1;MJ#4fi(BMk7rppJFosc#VJqaAaUo7?1OH@*2yaE4Qy z<0NM}&3R6Arc<5kWM@0w`A&GoQ=aprXFctCPkiQ6pZnxzKmGYnfCf~c10`rd4SG<7 zCRCyS3uS0S9r{p+MpU8`rD#PhdQpsKRHGZ^Xh%KzQILjIq$4G1NlkiEl%`arD`ja* zUHVd(##E*=rD;uVdQ+U{RHr-TX-|FnQ=kS_s6!=cQH^?3q$X9VOJ!S>r0Si~bHafwZQVic!X#VclUi(UL;7{^$~Gp2Ek zZG2-K=UB%(=5ddG{9_;oS;#{sa*>UEWF#k9$xCK(lb!rzC`Vb!Q>Jp2t(?#Z0028B Cg28|Q literal 0 HcmV?d00001 diff --git a/sys/doc/acme/acme.html b/sys/doc/acme/acme.html new file mode 100644 index 000000000..4ebe9158d --- /dev/null +++ b/sys/doc/acme/acme.html @@ -0,0 +1,1466 @@ + + + + + +Acme: A User Interface for Programmers + + + +

+

+ +

+Acme: A User Interface for Programmers

+

+ +

+

+Rob Pike

+

+rob@plan9.bell-labs.com

+

+ +

+

+

+ABSTRACT

+

+

+ +

+ +

+ +

+A hybrid of window system, shell, and editor, Acme gives text-oriented +applications a clean, expressive, and consistent style of interaction. +Traditional window systems support interactive client programs and offer libraries of +pre-defined operations such as pop-up menus +and buttons to promote a consistent +user interface among the clients. +Acme instead provides its clients with a fixed user interface and +simple conventions to encourage its uniform use. +Clients access the facilities of Acme through a file system interface; +Acme is in part a file server that exports device-like files that may be +manipulated to access and control the contents of its windows. +Written in a concurrent programming language, +Acme is structured as a set of communicating processes that neatly subdivide +the various aspects of its tasks: display management, input, file server, and so on. +

+

+Acme attaches distinct functions to the three mouse buttons: +the left selects text; +the middle executes textual commands; +and the right combines context search and file opening +functions to integrate the various applications and files in +the system. +

+

+Acme works well enough to have developed +a community that uses it exclusively. +Although Acme discourages the traditional style of interaction +based on typescript windows—teletypes—its +users find Acme’s other services render +typescripts obsolete. +

+ +

+

+

+

+History and motivation +

+

+The usual typescript style of interaction with +Unix and its relatives is an old one. +The typescript—an intermingling of textual commands and their +output—originates with the scrolls of paper on teletypes. +The advent of windowed terminals has given each user what +amounts to an array of teletypes, a limited and unimaginative +use of the powers of bitmap displays and mice. +Systems like the Macintosh +that do involve the mouse as an integral part of the interaction +are geared towards general users, not experts, and certainly +not programmers. +Software developers, at least on time-sharing systems, have been left behind. +

+ + + + +
+
+

+Figure 1. A small Acme screen—normally it runs on a larger display—demonstrating +some of the details discussed in the text. +The right column contains some guide files, +a mailbox presented by Acme’s mail program, +the columnated display of files in Acme’s own source directory, +a couple of windows from the OED browser, +a debugger window, +and an error window showing diagnostics from a compilation. +The left column holds a couple of source files +(dat.h +and +acme.l), +another debugger window displaying a stack trace, +and a third source file +(time.l). +Time.l +was opened from the debugger by clicking the right mouse button +on a line in the stack window; +the mouse cursor landed on the offending line of +acme.l +after a click on the compiler message. +

+
+

+

+Some programs have mouse-based editing of +text files and typescripts; +ones I have built include +the window systems +mux +[Pike88] +and + +[Pike91] +and the text editor +Sam [Pike87]. +These have put the programmer’s mouse to some productive work, +but not wholeheartedly. Even experienced users of these programs +often retype text that could be grabbed with the mouse, +partly because the menu-driven interface is imperfect +and partly because the various pieces are not well enough integrated. +

+

+Other programs—EMACS [Stal93] is the prime example—offer a high +degree of integration but with a user interface built around the +ideas of cursor-addressed terminals that date from the 1970’s. +They are still keyboard-intensive and +dauntingly complex. +

+

+The most ambitious attempt to face these issues was the Cedar +system, developed at Xerox [Swei86]. +It combined a new programming language, compilers, +window system, even microcode—a complete system—to +construct a productive, highly +integrated and interactive environment +for experienced users of compiled languages. +Although successful internally, the system was so large +and so tied to specific hardware that it never fledged. +

+

+Cedar was, however, the major inspiration for Oberon [Wirt89], +a system of similar scope but much smaller scale. +Through careful selection of Cedar’s ideas, Oberon shows +that its lessons can be applied to a small, coherent system +that can run efficiently on modest hardware. +In fact, Oberon probably +errs too far towards simplicity: a single-process system +with weak networking, it seems an architectural throwback. +

+

+Acme is a new program, +a combined window system, editor, and shell, +that applies +some of the ideas distilled by Oberon. +Where Oberon uses objects and modules within a programming language (also called Oberon), +Acme uses files and commands within an existing operating system (Plan 9). +Unlike Oberon, Acme does not yet have support for graphical output, just text. +At least for now, the work on Acme has concentrated on +producing the smoothest user interface possible for a programmer +at work. +

+

+The rest of this paper describes Acme’s interface, +explains how programs can access it, +compares it to existing systems, +and finally presents some unusual aspects of its implementation. +

+

+User interface +

+
+ + + + +
+
+

+Figure 2. An Acme window showing a section of code. +The upper line of text is the tag containing the file name, +relevant commands, and a scratch area (right of the vertical bar); +the lower portion of the window is the +body, or contents, of the file. +Here the scratch area contains a command for the middle button +(mk) +and a word to search for with the right button +(cxfidalloc). +The user has just +clicked the right button on +cxfidalloc +and Acme has searched for the word, highlighted it, +and moved the mouse cursor there. The file has been modified: +the center of the layout box is black and the command +Put +appears in the tag. +

+
+

+Acme windows are arrayed in columns (Figure 1) and are used more +dynamically than in an environment like X Windows or + +[Sche86, Pike91]. +The system frequently creates them automatically and the user +can order a new one with a single mouse button click. +The initial placement of a new window is determined +automatically, but the user may move an existing window anywhere +by clicking or dragging a +layout box +in the upper left corner of +the window. +

+

+Acme windows have two parts: a +tag +holding a single line of text, +above a +body +holding zero or more lines (Figure 2). +The body typically contains an image of a file being edited +or the editable output of a +program, analogous to an +EMACS shell +window. The tag contains +the name of the window +(usually the name of the associated +file or directory), some built-in commands, and a scratch area to hold arbitrary text. +If a window represents a directory, the name in the tag ends with +a slash and the body contains a list of the names of the files +in the directory. +Finally, each non-empty body holds a scroll bar at the left of the text. +

+

+Each column of windows also has a layout box and a tag. +The tag has no special meaning, although Acme pre-loads it with a few +built-in commands. +There is also a tag across the whole display, also loaded with +helpful commands and a list of active processes started +by Acme. +

+

+Typing with the keyboard and selecting with the left button are as in +many other systems, including the Macintosh, +, +and Sam. +The middle and right buttons are used, somewhat like the left button, +to ‘sweep’ text, but the indicated text is treated in a way +that depends on the text’s location—context—as well as its content. +This context, based on the directory of the file containing the text, +is a central component of Acme’s style of interaction. +

+

+Acme has no single notion of ‘current directory’. +Instead, every command, file name, +action, and so on is interpreted or executed in the directory named by the +tag of the window containing the command. For example, the string +mammals +in a window labeled +/lib/ +or +/lib/insects +will be interpreted as the file name +/lib/mammals +if such a file exists. +

+

+Throughout Acme, the middle mouse button is used to execute commands +and the right mouse button is used to locate and select files and text. +Even when there are no true files on which to operate—for example +when editing mail messages—Acme and its applications use +consistent extensions of these basic functions. +This idea is as vital to Acme as icons are to the Macintosh. +

+

+The middle button executes commands: text swept with the button +pressed is underlined; when the button is released, the underline is +removed and the indicated text is executed. +A modest number of commands are recognized as built-ins: words like +Cut, +Paste, +and +New +name +functions performed directly by Acme. +These words often appear in tags to make them always available, +but the tags are not menus: any text anywhere in Acme may be a command. +For example, in the tag or body of any window one may type +Cut, +select it with the left button, use the middle button to execute it, +and watch it disappear again. +

+

+If the middle button indicates a command that is not recognized as a built-in, +it is executed in the directory +named by the tag of the window holding the text. +Also, the file to be executed is searched for first in that directory. +Standard input is connected to +/dev/null, +but standard and error outputs are connected to an Acme window, +created if needed, called +dir/+Errors where +dir +is the directory of the window. +(Programs that need interactive input use a different interface, described below.) +A typical use of this is to type +mk +(Plan 9’s +make) +in the scratch area in the tag of a C source window, say +/sys/src/cmd/sam/regexp.c, +and execute it. +Output, including compiler errors, appears in the window labeled +/sys/src/cmd/sam/+Errors, +so file names in the output are associated with the windows and directory +holding the source. +The +mk +command remains in the tag, serving as a sort of menu item for the associated +window. +

+

+Like the middle button, the right button is used to indicate text by sweeping it out. +The indicated text is not a command, however, but the argument of a generalized +search operator. +If the text, perhaps after appending it to the directory of the window containing it, +is the name of an existing file, Acme creates a new window to hold the file +and reads it in. It then moves the mouse cursor to that window. If the file is +already loaded into Acme, the mouse motion happens but no new window is made. +For example, indicating the string +sam.h +in +

+

+#include "sam.h"

+

+ +

+

+in a window on the file +/sys/src/cmd/sam/regexp.c +will open the file +/sys/src/cmd/sam/sam.h. +

+

+If the file name is followed immediately by a colon and a legal address in +Sam notation (for example a line number or a regular expression delimited in +slashes or a comma-separated compound of such addresses), Acme highlights +the target of that address in the file and places the mouse there. One may jump to +line 27 of +dat.h +by indicating with the right button the text +dat.h:27. +If the file is not already open, Acme loads it. +If the file name is null, for example if the indicated string is +:/^main/, +the file is assumed to be that of the window containing the string. +Such strings, when typed and evaluated in the tag of a window, amount to +context searches. +

+

+If the indicated text is not the name of an existing file, it is taken to be literal +text and is searched for in the body of the window containing the text, highlighting +the result as if it were the result of a context search. +

+

+For the rare occasion when a file name +is +just text to search for, it can be selected with the left button and used as the +argument to a built-in +Look +command that always searches for literal text. +

+

+Nuances and heuristics +

+

+A user interface should not only provide the necessary functions, it should also +feel +right. +In fact, it should almost not be felt at all; when one notices a +user interface, one is distracted from the job at hand [Pike88]. +To approach this invisibility, some of Acme’s properties and features +are there just to make the others easy to use. +Many are based on a fundamental principle of good design: +let the machine do the work. +

+

+Acme tries to avoid needless clicking and typing. +There is no ‘click-to-type’, eliminating a button click. +There are no pop-up or pull-down menus, eliminating the mouse action needed to +make a menu appear. +The overall design is intended to make text on the screen useful without +copying or retyping; the ways in which this happens involve +the combination of many aspects of the interface. +

+

+Acme tiles its windows and places them automatically +to avoid asking the user to place and arrange them. +For this policy to succeed, the automatic placement must behave well enough +that the user is usually content with the location of a new window. +The system will never get it right all the time, but in practice most +windows are used at least for a while where Acme first places them. +There have been several complete rewrites of the +heuristics for placing a new window, +and with each rewrite the system became +noticeably more comfortable. The rules are as follows, although +they are still subject to improvement. +The window appears in the ‘active’ column, that most recently used for typing or +selecting. +Executing and searching do not affect the choice of active column, +so windows of commands and such do not draw new windows towards them, +but rather let them form near the targets of their actions. +Output (error) windows always appear towards the right, away from +edited text, which is typically kept towards the left. +Within the column, several competing desires are balanced to decide where +and how large the window should be: +large blank spaces should be consumed; +existing text should remain visible; +existing large windows should be divided before small ones; +and the window should appear near the one containing the action that caused +its creation. +

+

+Acme binds some actions to chords of mouse buttons. +These include +Cut +and +Paste +so these common operations can be done without +moving the mouse. +Another is a way to apply a command in one window to text (often a file name) +in another, avoiding the actions needed to assemble the command textually. +

+

+Another way Acme avoids the need to move the mouse is instead to move the cursor +to where it is likely to be used next. When a new window is made, Acme +moves the cursor to the new window; in fact, to the selected text in that window. +When the user deletes a newly made window, the cursor is +returned to the point it was before the window was made, +reducing the irritation of windows that pop up to report annoying errors. +

+

+When a window is moved, Acme moves the cursor to the layout box in +its new place, to permit further adjustment without moving the mouse. +For example, when a click of the left mouse button on the layout box grows +the window, the cursor moves to the new location of the box so repeated clicks, +without moving the mouse, continue to grow it. +

+

+Another form of assistance the system can offer is to supply precision in +pointing the mouse. The best-known form of this is ‘double-clicking’ to +select a word rather than carefully sweeping out the entire word. +Acme provides this feature, using context to decide whether to select +a word, line, quoted string, parenthesized expression, and so on. +But Acme takes the idea much further by applying it to execution +and searching. +A +single +click, that is, a null selection, with either the middle or right buttons, +is expanded automatically to indicate the appropriate text containing +the click. What is appropriate depends on the context. +

+

+For example, to execute a single-word command +such as +Cut, +it is not necessary to sweep the entire word; just clicking the button once with +the mouse pointing at the word is sufficient. ‘Word’ +means the largest string of likely file name characters surrounding the location +of the click: click on a file name, run that program. +On the right button, the rules are more complicated because +the target of the click might be a file name, file name with address, +or just plain text. Acme examines the text near the click to find +a likely file name; +if it finds one, it checks that it names an existing file (in the directory named in the tag, if the name is relative) +and if so, takes that as the result, after extending it with any address +that may be present. If there is no file with that name, Acme +just takes the largest alphanumeric string under the click. +The effect is a natural overloading of the button to refer to plain text as +well as file names. +

+

+First, though, if the click occurs over the left-button-selected text in the window, +that text is taken to be what is selected. +This makes it easy to skip through the occurrences of a string in a file: just click +the right button +on some occurrence of the text in the window (perhaps after typing it in the tag) +and click once for each subsequent occurrence. It isn’t even necessary to move +the mouse between clicks; Acme does that. +To turn a complicated command into a sort of menu item, select it: +thereafter, clicking the middle button on it will execute the full command. +

+

+As an extra feature, Acme recognizes file names in angle brackets +<> +as names of files in standard directories of include files, +making it possible for instance to look at +<stdio.h> +with a single click. +

+

+Here’s an example to demonstrate how the actions and defaults work together. +Assume +/sys/src/cmd/sam/regexp.c +is +open and has been edited. We write it (execute +Put +in the tag; once the file is written, Acme removes the word from the tag) +and type +mk +in the tag. We execute +mk +and get some errors, which appear in a new window labeled +/sys/src/cmd/sam/+Errors. +The cursor moves automatically to that window. +Say the error is +

+

+main.c:112: incompatible types on assignment to ‘pattern’

+

+ +

+

+We move the mouse slightly and click the right button +at the left of the error message; Acme +makes a new window, reads +/sys/src/cmd/main.c +into it, selects line 112 +and places the mouse there, right on the offending line. +

+

+Coupling to existing programs +

+

+Acme’s syntax for file names and addresses makes it easy for other programs +to connect automatically to Acme’s capabilities. For example, the output of +

+

+grep -n variable *.[ch]

+

+ +

+

+can be used to help Acme step through the occurrences of a variable in a program; +every line of output is potentially a command to open a file. +The file names need not be absolute, either: the output +appears in a window labeled with the directory in which +grep +was run, from which Acme can derive the full path names. +

+

+When necessary, we have changed the output of some programs, +such as compiler error messages, to match +Acme’s syntax. +Some might argue that it shouldn’t be necessary to change old programs, +but sometimes programs need to be updated when systems change, +and consistent output benefits people as well as programs. +A historical example is the retrofitting of standard error output to the +early Unix programs when pipes were invented. +

+

+Another change was to record full path names in +the symbol table of executables, so line numbers reported by the debugger +are absolute names that may be used directly by Acme; it’s not necessary +to run the debugger in the source directory. (This aids debugging +even without Acme.) +

+

+A related change was to add lines of the form +

+

+#pragma src "/sys/src/libregexp"

+

+ +

+

+to header files; coupled with Acme’s ability to locate a header file, +this provides a fast, keyboardless way to get the source associated with a library. +

+

+Finally, Acme directs the standard output of programs it runs to +windows labeled by the directory in which the program is run. +Acme’s splitting of the +output into directory-labeled windows is a small feature that has a major effect: +local file names printed by programs can be interpreted directly by Acme. +By indirectly coupling the output of programs to the input, +it also simplifies the management of software that occupies multiple +directories. +

+

+Coupling to new programs +

+

+Like many Plan 9 programs, +Acme offers a programmable interface to +other programs by acting as a file server. +The best example of such a file server is the window system + +[Pike91], +which exports files with names such as +screen, +cons, +and +mouse +through which applications may access the I/O capabilities of the windows. + +provides a +distinct +set of files for each window and builds a private file name space +for the clients running ‘in’ each window; +clients in separate windows see distinct files with the same names +(for example +/dev/mouse). +Acme, like the process file system [PPTTW93], instead associates each +window with a directory of files; the files of each window are visible +to any application. +This difference reflects a difference in how the systems are used: + +tells a client what keyboard and mouse activity has happened in its window; +Acme tells a client what changes that activity wrought on any window it asks about. +Putting it another way, + +enables the construction of interactive applications; +Acme provides the interaction for applications. +

+

+The root of +Acme’s file system is mounted using Plan 9 operations on the directory +/mnt/acme. +In +that root directory appears a directory for each window, numbered with the window’s identifier, +analogous to a process identifier, for example +/mnt/acme/27. +The window’s directory +contains 6 files: +/mnt/acme/27/addr, +body, +ctl, +data, +event, +and +tag. +The +body +and +tag +files contain the text of the respective parts of the window; they may be +read to recover the contents. Data written to these files is appended to the text; +seeks +are ignored. +The +addr +and +data +files provide random access to the contents of the body. +The +addr +file is written to set a character position within the body; the +data +file may then be read to recover the contents at that position, +or written to change them. +(The tag is assumed +small and special-purpose enough not to need special treatment. +Also, +addr +indexes by character position, which is not the same as byte offset +in Plan 9’s multi-byte character set [Pike93]). +The format accepted by the +addr +file is exactly the syntax of addresses within the user interface, +permitting regular expressions, line numbers, and compound addresses +to be specified. For example, to replace the contents of lines 3 through 7, +write the text +

+

+3,7

+

+ +

+

+to the +addr +file, then write the replacement text to the +data +file. A zero-length write deletes the addressed text; further writes extend the replacement. +

+

+The control file, +ctl, +may be written with commands to effect actions on the window; for example +the command +

+

+name /adm/users

+

+ +

+

+sets the name in the tag of the window to +/adm/users. +Other commands allow deleting the window, writing it to a file, and so on. +Reading the +ctl +file recovers a fixed-format string containing 5 textual numbers—the window +identifier, the number of characters in the tag, the number in the body, +and some status information—followed by the text of the tag, up to a newline. +

+

+The last file, +event, +is the most unusual. +A program reading a window’s +event +file is notified of all changes to the text of the window, and +is asked to interpret all middle- and right-button actions. +The data passed to the program is fixed-format and reports +the source of the action (keyboard, mouse, external program, etc.), +its location (what was pointed at or modified), and its nature (change, +search, execution, etc.). +This message, for example, +

+

+MI15 19 0 4 time

+

+ +

+

+reports that actions of the mouse +(M) +inserted in the body (capital +I) +the 4 characters of +time +at character positions 15 through 19; the zero is a flag word. +Programs may apply their own interpretations of searching and +execution, or may simply reflect the events back to Acme, +by writing them back to the +event +file, to have the default interpretation applied. +Some examples of these ideas in action are presented below. +

+

+Notice that changes to the window are reported +after the fact; the program is told about them but is not required to act +on them. Compare this to a more traditional interface in which a program +is told, for example, that a character has been typed on the keyboard and +must then display and interpret it. +Acme’s style stems from the basic model of the system, in which any +number of agents—the keyboard, mouse, external programs +writing to +data +or +body, +and so on—may +change the contents of a window. +The style is efficient: many programs are content +to have Acme do most of the work and act only when the editing is completed. +An example is the Acme mail program, which can ignore the changes +made to a message being composed +and just read its body when asked to send it. +A disadvantage is that some traditional ways of working are impossible. +For example, there is no way ‘to turn off echo’: characters appear on the +screen and are read from there; no agent or buffer stands between +the keyboard and the display. +

+

+There are a couple of other files made available by Acme in its root directory +rather than in the directory of each window. +The text file +/mnt/acme/index +holds a list of all window names and numerical identifiers, +somewhat analogous to the output of the +ps +command for processes. +The most important, though, is +/mnt/acme/new, +a directory that makes new windows, similar to the +clone +directory in the Plan 9 network devices [Pres93]. +The act of opening any file in +new +creates a new Acme window; thus the shell command +

+

+grep -n var *.c > /mnt/acme/new/body

+

+ +

+

+places its output in the body of a fresh window. +More sophisticated applications may open +new/ctl, +read it to discover the new window’s identifier, and then +open the window’s other files in the numbered directory. +

+

+Acme-specific programs +

+

+Although Acme is in part an attempt to move beyond typescripts, +they will probably always have utility. +The first program written for Acme was therefore one +to run a shell or other traditional interactive application +in a window, the Acme analog of +xterm. +This program, +win, +has a simple structure: +it acts as a two-way intermediary between Acme and the shell, +cross-connecting the standard input and output of the shell to the +text of the window. +The style of interaction is modeled after +mux +[Pike88]: standard output is added to the window at the +output point; +text typed after the output point +is made available on standard input when a newline is typed. +After either of these actions, the output point is advanced. +This is different from the working of a regular terminal, +permitting cut-and-paste editing of an input line until the newline is typed. +Arbitrary editing may be done to any text in the window. +The implementation of +win, +using the +event, +addr, +and +data +files, is straightforward. +Win +needs no code for handling the keyboard and mouse; it just monitors the +contents of the window. Nonetheless, it allows Acme’s full editing to be +applied to shell commands. +The division of labor between +win +and +Acme +contrasted with +xterm +and the X server demonstrates how much work Acme handles automatically. +Win +is implemented by a single source file 560 lines long and has no graphics code. +

+

+Win +uses the middle and right buttons to connect itself in a consistent way +with the rest of Acme. +The middle button still executes commands, but in a style more suited +to typescripts. Text selected with the middle button is treated as if +it had been typed after the output point, much as a similar feature in +xterm +or +, +and therefore causes it to be ‘executed’ by the application running in the window. +Right button actions are reflected back to Acme but refer to the appropriate +files because +win +places the name of the current directory in the tag of the window. +If the shell is running, a simple shell function replacing the +cd +command can maintain the tag as the shell navigates the file system. +This means, for example, that a right button click on a file mentioned in an +ls +listing opens the file within Acme. +

+

+Another Acme-specific program is a mail reader that begins by presenting, +in a window, a listing of the messages in the user’s mailbox, one per line. +Here the middle and right button actions are modified to refer to +mail commands +and messages, but the change feels natural. +Clicking the right button on a line creates a new window and displays the +message there, or, if it’s already displayed, moves the mouse to that window. +The metaphor is that the mailbox is a directory whose constituent files are messages. +The mail program also places some relevant commands in the tag lines of +the windows; for example, executing the word +Reply +in a message’s tag creates a new window +in which to compose a message to the sender of the original; +Post +then dispatches it. +In such windows, the addressee is just a list of names +on the first line of the body, which may be edited to add or change recipients. +The program also monitors the mailbox, updating the ‘directory’ as new messages +arrive. +

+

+The mail program is as simple as it sounds; all the work of interaction, +editing, and management of the display is done by Acme. +The only +difficult sections of the 1200 +lines of code concern honoring the external protocols for managing +the mailbox and connecting to +sendmail. +

+

+One of the things Acme does not provide directly is a facility like +Sam’s command language to enable actions such as global substitution; +within Acme, all editing is done manually. +It is easy, though, to write external programs for such tasks. +In this, Acme comes closer to the original intent of Oberon: +a directory, +/acme/edit, +contains a set of tools for repetitive editing and a template +or ‘guide’ file that gives examples +of its use. +Acme’s editing guide, +/acme/edit/guide, +looks like this: +

+

+e file | x ’/regexp/’ | c ’replacement’

+

+e file:’0,$’ | x ’/.*word.*\n/’ | p -n

+

+e file | pipe command args ...

+

+ +

+

+The syntax is reminiscent of Sam’s command language, but here the individual +one-letter commands are all stand-alone programs connected by pipes. +Passed along the pipes are addresses, analogous to structural expressions +in Sam terminology. +The +e +command, unlike that of Sam, starts the process by generating the address +(default dot, the highlighted selection) in the named files. +The other commands are as in Sam: +p +prints the addressed text on standard output (the +-n +option is analogous to that of +grep, +useful in combination with the right mouse button); +x +matches a regular expression to the addressed (incoming) text, +subdividing the text; +c +replaces the text; and so on. Thus, global substitution throughout a file, +which would be expressed in Sam as +

+

+0,$ x/regexp/ c/replacement/

+

+ +

+

+in Acme’s editor becomes +

+

+e ’file:0,$’ | x ’/regexp/’ | c ’replacement’

+

+ +

+

+

+To use the Acme editing commands, open +/acme/edit/guide, +use the mouse and keyboard to edit one of the commands to the right form, +and execute it with the middle button. +Acme’s context rules find the appropriate binaries in +/acme/edit +rather than +/bin; +the effect is to turn +/acme/edit +into a toolbox containing tools and instructions (the guide file) for their use. +In fact, the source for these tools is also there, in the directory +/acme/edit/src. +This setup allows some control of the file name space for binary programs; +not only does it group related programs, it permits the use of common +names for uncommon jobs. For example, the single-letter names would +be unwise in a directory in everyone’s search path; here they are only +visible when running editing commands. +

+

+In Oberon, +such a collection would be called a +tool +and would consist +of a set of entry points in a module and a menu-like piece of text containing +representative commands that may be edited to suit and executed. +There is, in fact, a tool called +Edit +in Oberon. +To provide related functionality, +Acme exploits the directory and file structure of the underlying +system, rather than the module structure of the language; +this fits well with Plan 9’s +file-oriented philosophy. +Such tools are central to the working of Oberon but they are +less used in Acme, at least so far. +The main reason is probably that Acme’s program interface permits +an external program to remain executing in the background, providing +its own commands as needed (for example, the +Reply +command in the mail program); Oberon uses tools to +implement such services because its must invoke +a fresh program for each command. +Also, +Acme’s better integration allows more +basic functions to be handled internally; the right mouse button +covers a lot of the basic utility of the editing tools in Oberon. +Nonetheless, as more applications are written for Acme, +many are sure to take this Oberon tool-like form. +

+

+Comparison with other systems +

+

+Acme’s immediate ancestor is Help [Pike92], an experimental system written +a few years ago as a first try at exploring some of Oberon’s ideas +in an existing operating system. +Besides much better engineering, Acme’s advances over Help +include the actions of the right button (Help had nothing comparable), +the ability to connect long-running programs to the user interface +(Help had no analog of the +event +file), +and the small but important change to split command output into +windows labeled with the directory in which the commands run. +

+

+Most of Acme’s style, however, derives from the user interface and window +system of Oberon [Wirt89, Reis91]. +Oberon includes a programming language and operating system, +which Acme instead borrows from an existing system, Plan 9. +When I first saw Oberon, in 1988, I was struck by the +simplicity of its user interface, particularly its lack of menus +and its elegant use of multiple mouse buttons. +The system seemed restrictive, though—single process, +single language, no networking, event-driven programming—and +failed to follow through on some of its own ideas. +For example, the middle mouse button had to be pointed accurately and +the right button was essentially unused. +Acme does follow through: +to the basic idea planted by Oberon, it adds +the ability to run on different operating systems and hardware, +connection to existing applications including +interactive ones such as shells and debuggers, +support for multiple processes, +the right mouse button’s features, +the default actions and context-dependent properties +of execution and searching, +and a host of little touches such as moving the mouse cursor that make the system +more pleasant. +At the moment, though, Oberon does have one distinct advantage: it incorporates +graphical programs well into its model, an issue Acme has not yet faced. +

+

+Acme shares with the Macintosh a desire to use the mouse well and it is +worth comparing the results. +The mouse on the Macintosh has a single button, so menus are essential +and the mouse must frequently move a long way +to reach the appropriate function. +An indication that this style has trouble is that applications provide +keyboard sequences to invoke menu selections and users often prefer them. +A deeper comparison is that the Macintosh uses pictures where Acme uses text. +In contrast to pictures, text can be edited quickly, created on demand, +and fine-tuned to the job at hand; consider adding an option to a command. +It is also self-referential; Acme doesn’t need menus because any text can be +in effect a menu item. +The result is that, although a Macintosh screen is certainly prettier and probably +more attractive, especially to beginners, an Acme screen is more dynamic +and expressive, at least for programmers and experienced users. +

+

+For its role in the overall system, +Acme most resembles EMACS [Stal93]. +It is tricky to compare Acme to EMACS, though, because there are +many versions of EMACS and, since it is fully programmable, EMACS +can in principle do anything Acme does. +Also, Acme is much younger and therefore has not +had the time to acquire as many features. +The issue therefore is less what the systems can be programmed to do than +how they are used. +The EMACS versions that come closest to Acme’s style are those that +have been extended to provide a programming environment, usually +for a language such as LISP [Alle92, Lucid92]. +For richness of the existing interface, these EMACS versions are certainly superior to Acme. +On the other hand, Acme’s interface works equally well already for a variety +of languages; for example, one of its most enthusiastic users works almost +exclusively in Standard ML, a language nothing like C. +

+

+Where Acme excels is in the smoothness of its interface. +Until recently, EMACS did not support the mouse especially well, +and even with the latest version providing features such as ‘extents’ +that can be programmed to behave much like Acme commands, +many users don’t bother to upgrade. +Moreover, in the versions that provide extents, +most EMACS packages don’t take advantage of them. +

+

+The most important distinction is just that +EMACS is fundamentally keyboard-based, while +Acme is mouse-based. +

+

+People who try Acme find it hard to go back to their previous environment. +Acme automates so much that to return to a traditional interface +is to draw attention to the extra work it requires. +

+

+Concurrency in the implementation +

+

+Acme is about 8,000 lines of code in Alef, a concurrent object-oriented language syntactically similar to C [Alef]. +Acme’s structure is a set of communicating +processes in a single address space. +One subset of the processes drives the display and user interface, +maintaining the windows; other processes forward mouse and keyboard +activity and implement the file server interface for external programs. +The language and design worked out well; +as explained elsewhere [Pike89, Gans93, Reppy93], +user interfaces built with concurrent systems +can avoid the clumsy +top-level event loop typical of traditional interactive systems. +

+

+An example of the benefits of the multi-process style +is the management of the state of open +files held by clients of the file system interface. +The problem is that some I/O requests, +such as reading the +event +file, may block if no data is available, and the server must +maintain the state of (possibly many) requests until data appears. +For example, +in +, +a single-process window system written in C, pending requests were queued in +a data structure associated with each window. +After activity in the window that might complete pending I/O, +the data structure was scanned for requests that could now finish. +This structure did not fit well with the rest of the program and, worse, +required meticulous effort +to guarantee correct behavior under all conditions +(consider raw mode, reads of partial lines, deleting a window, +multibyte characters, etc.). +

+

+Acme instead creates a new dedicated process +for each I/O request. +This process coordinates with the rest of the system +using Alef’s synchronous communication; +its state implicitly encodes the state of +the I/O request and obviates the need for queuing. +The passage of the request through Acme proceeds as follows. +

+

+Acme contains a file server process, F, that executes a +read +system call to receive a Plan 9 file protocol (9P) message from the client [AT&T92]. +The client blocks until Acme answers the request. +F communicates with an allocation process, M, +to acquire an object of type +Xfid +(‘executing fid’; fid is a 9P term) +to hold the request. +M sits in a loop (reproduced in Figure 2) waiting for either a request for +a new +Xfid +or notification that an existing one has finished its task. +When an +Xfid +is created, an associated process, X, +is also made. +M queues idle +Xfids, +allocating new ones only when the list is empty. +Thus, there is always a pool of +Xfids, +some executing, some idle. +

+

+The +Xfid +object contains a channel, +Xfid.c, +for communication with its process; +the unpacked message; and some associated functions, +mostly corresponding to 9P messages such as +Xfid.write +to handle a 9P write request. +

+

+The file server process F parses the message to see its nature—open, +close, read, write, etc. Many messages, such as directory +lookups, can be handled immediately; these are responded to directly +and efficiently +by F without invoking the +Xfid, +which is therefore maintained until the next message. +When a message, such as a write to the display, requires the attention +of the main display process and interlocked access to its data structures, +F enables X +by sending a function pointer on +Xfid.c. +For example, if the message is a write, F executes +

+

+x->c <-= Xfid.write;

+

+ +

+

+which sends +the address of +Xfid.write +on +Xfid.c, +waking up X. +

+

+The +Xfid +process, X, executes a simple loop: +

+

+void

+

+Xfid.ctl(Xfid *x)

+

+{

+

+    for(;;){

+

+        (*<-x->c)(x);      /* receive and execute message */

+

+        bflush();          /* synchronize bitmap display */

+

+        cxfidfree <-= x;   /* return to free list */

+

+    }

+

+}

+

+ +

+

+Thus X +will wake up with the address of a function to call (here +Xfid.write) +and execute it; once that completes, it returns itself to the pool of +free processes by sending its address back to the allocator. +

+

+Although this sequence may seem complicated, it is just a few lines +of code and is in fact far simpler +than the management of the I/O queues in +. +The hard work of synchronization is done by the Alef run time system. +Moreover, the code worked the first time, which cannot be said for the code in +. +

+

+Undo +

+

+Acme provides a general undo facility like that of Sam, permitting +textual changes to be unwound arbitrarily. +The implementation is superior to Sam’s, though, +with much higher performance and the ability to ‘redo’ changes. +

+

+Sam uses +a multi-pass algorithm that builds +a transcript of changes to be made simultaneously +and then executes them atomically. +This was thought necessary because the elements of a repetitive +command such as a global substitution should all be applied to the same +initial file and implemented simultaneously; forming the complete +transcript before executing any of the changes avoids the +cumbersome management of addresses in a changing file. +Acme, however, doesn’t have this problem; global substitution +is controlled externally and may be made incrementally by exploiting +an observation: if the changes are sorted in address order and +executed in reverse, changes will not invalidate the addresses of +pending changes. +

+

+Acme therefore avoids the initial transcript. Instead, changes are applied +directly to the file, with an undo transcript recorded in a separate list. +For example, when text is added to a window, it is added directly and a record +of what to delete to restore the state is appended to the undo list. +Each undo action and the file are marked with a sequence number; +actions with the same sequence number are considered a unit +to be undone together. +The invariant state of the structure +is that the last action in the undo list applies to the current state of the file, +even if that action is one of a related set from, for example, a global substitute. +(In Sam, a related set of actions needed to be undone simultaneously.) +To undo an action, pop the last item on the undo list, apply it to the file, +revert it, and append it to a second, redo list. +To redo an action, do the identical operation with the lists interchanged. +The expensive operations occur +only when actually undoing; in normal editing the overhead is minor. +For example, Acme reads files about seven times faster than Sam, partly +because of this improvement and partly because of a cleaner implementation. +

+

+Acme uses a temporary file to hold the text, keeping in memory only the +visible portion, and therefore can edit large files comfortably +even on small-memory machines such as laptops. +

+

+Future +

+

+Acme is still under development. +Some things are simply missing. +For example, Acme should support non-textual graphics, but this is being +deferred until it can be done using a new graphics model being developed +for Plan 9. Also, it is undecided how Acme’s style of interaction should best be +extended to graphical applications. +On a smaller scale, although the system feels smooth and comfortable, +work continues to tune the heuristics and +try new ideas for the user interface. +

+

+There need to be more programs that use Acme. Browsers for +Usenet and AP News articles, the Oxford English Dictionary, and other +such text sources exist, but more imaginative applications will +be necessary to prove that Acme’s approach is viable. +One that has recently been started is an interface to the debugger Acid [Wint94], +although it is still +unclear what form it will ultimately take. +

+

+Acme shows that it is possible to make a user interface a stand-alone component +of an interactive environment. By absorbing more of the interactive +functionality than a simple window system, Acme off-loads much of the +computation from its applications, which helps keep them small and +consistent in their interface. Acme can afford to dedicate +considerable effort to making that interface as good as possible; the result +will benefit the entire system. +

+

+Acme is complete and useful enough to attract users. +Its comfortable user interface, +the ease with which it handles multiple tasks and +programs in multiple directories, +and its high level of integration +make it addictive. +Perhaps most telling, +Acme shows that typescripts may not be the most +productive interface to a time-sharing system. +

+

+Acknowledgements +

+

+Howard Trickey, Acme’s first user, suffered buggy versions gracefully and made +many helpful suggestions. Chris Fraser provided the necessary insight for the Acme editing +commands. +

+

+References +

+

+[Alef] P. Winterbottom, +‘‘Alef Language Reference Manual’’, +Plan 9 Programmer’s Manual, +AT&T Bell Laboratories, +Murray Hill, NJ, +1992; +revised in this volume. +

+[Alle92] +Allegro Common Lisp user Guide, Vol 2, +Chapter 14, "The Emacs-Lisp Interface". +March 1992. +

+[AT&T92] Plan 9 Programmer’s manual, Murray Hill, New Jersey, 1992. +

+[Far89] Far too many people, XTERM(1), Massachusetts Institute of Technology, 1989. +

+[Gans93] Emden R. Gansner and John H. Reppy, ‘‘A Multi-threaded Higher-order User Interface Toolkit’’, in +Software Trends, Volume 1, +User Interface Software, +Bass and Dewan (Eds.), +John Wiley & Sons 1993, +pp. 61-80. +

+[Lucid92] Richard Stallman and Lucid, Inc., +Lucid GNU EMACS Manual, +March 1992. +

+[Pike87] Rob Pike, ‘‘The Text Editor sam’’, Softw. - Pract. and Exp., Nov 1987, Vol 17 #11, pp. 813-845; reprinted in this volume. +

+[Pike88] Rob Pike, ‘‘Window Systems Should Be Transparent’’, Comp. Sys., Summer 1988, Vol 1 #3, pp. 279-296. +

+[Pike89] Rob Pike, ‘‘A Concurrent Window System’’, Comp. Sys., Spring 1989, Vol 2 #2, pp. 133-153. +

+[PPTTW93] Rob Pike, Dave Presotto, Ken Thompson, Howard Trickey, and Phil Winterbottom, ‘‘The Use of Name Spaces in Plan 9’’, +Op. Sys. Rev., Vol. 27, No. 2, April 1993, pp. 72-76, +reprinted in this volume. +

+[Pike91] Rob Pike, ‘‘8½, the Plan 9 Window System’’, USENIX Summer Conf. Proc., Nashville, June, 1991, pp. 257-265, +reprinted in this volume. +

+[Pike92] Rob Pike, ‘‘A Minimalist Global User Interface’’, Graphics Interface ’92 Proc., Vancouver, 1992, pp. 282-293. An earlier version appeared under the same title in USENIX Summer Conf. Proc., Nashville, June, 1991, pp. 267-279. +

+[Pike93] Rob Pike and Ken Thompson, ‘‘Hello World or Καλημέρα κόσμε or +こんにちは 世界’’, USENIX Winter Conf. Proc., San Diego, 1993, pp. 43-50, +reprinted in this volume. +

+[Pres93] Dave Presotto and Phil Winterbottom, ‘‘The Organization of Networks in Plan 9’’, Proc. Usenix Winter 1993, pp. 271-287, San Diego, CA, +reprinted in this volume. +

+[Reis91] Martin Reiser, The Oberon System, Addison Wesley, New York, 1991. +

+[Reppy93] John H. Reppy, +‘‘CML: A higher-order concurrent language’’, Proc. SIGPLAN’91 Conf. on Programming, Lang. Design and Impl., June, 1991, pp. 293-305. +

+[Sche86] Robert W. Scheifler and Jim Gettys, +‘‘The X Window System’’, +ACM Trans. on Graph., Vol 5 #2, pp. 79-109. +

+[Stal93] Richard Stallman, +Gnu Emacs Manual, 9th edition, Emacs version 19.19, +MIT. +

+[Swei86] Daniel Sweinhart, Polle Zellweger, Richard Beach, and Robert Hagmann, +‘‘A Structural View of the Cedar Programming Environment’’, +ACM Trans. Prog. Lang. and Sys., Vol. 8, No. 4, pp. 419-490, Oct. 1986. +

+[Wint94], Philip Winterbottom, ‘‘Acid: A Debugger based on a Language’’, USENIX Winter Conf. Proc., San Francisco, CA, 1993, +reprinted in this volume. +

+[Wirt89] N. Wirth and J. Gutknecht, ‘‘The Oberon System’’, Softw. - Prac. and Exp., Sep 1989, Vol 19 #9, pp 857-894. +

+

+

+Notes +

+

+ +

+Originally appeared in +Proc. of the Winter 1994 USENIX Conf., +pp. 223-234, +San Francisco, CA +

+

+ + + + diff --git a/sys/doc/acme/acme.ms b/sys/doc/acme/acme.ms new file mode 100644 index 000000000..6cc3fcde9 --- /dev/null +++ b/sys/doc/acme/acme.ms @@ -0,0 +1,1303 @@ +.HTML "Acme: A User Interface for Programmers +.de EX +.nr x \\$1v +\\!h0c n \\nx 0 +.. +.de FG \" start figure caption: .FG filename.ps verticalsize +.KF +.BP \\$1 \\$2 +.sp .5v +.if !h .EX \\$2v +.ps -1 +.vs -1 +.. +.de fg \" end figure caption (yes, it is clumsy) +.ps +.vs +.br +\l'1i' +.KE +.. +.if h \{\ +.de FG +.B1 10 60 +.html -
+.\" .sp .5v +.. +.de fg +.br +.B2 +.. +.\} +.TL +Acme: A User Interface for Programmers +.AU +.I "Rob Pike +.I rob@plan9.bell-labs.com +.SP .22i exactly +.AB +.FS +.if !h \l'1i' +.if !h .br +Originally appeared in +.I +Proc. of the Winter 1994 USENIX Conf., +.R +pp. 223-234, +San Francisco, CA +.FE +A hybrid of window system, shell, and editor, Acme gives text-oriented +applications a clean, expressive, and consistent style of interaction. +Traditional window systems support interactive client programs and offer libraries of +pre-defined operations such as pop-up menus +and buttons to promote a consistent +user interface among the clients. +Acme instead provides its clients with a fixed user interface and +simple conventions to encourage its uniform use. +Clients access the facilities of Acme through a file system interface; +Acme is in part a file server that exports device-like files that may be +manipulated to access and control the contents of its windows. +Written in a concurrent programming language, +Acme is structured as a set of communicating processes that neatly subdivide +the various aspects of its tasks: display management, input, file server, and so on. +.PP +Acme attaches distinct functions to the three mouse buttons: +the left selects text; +the middle executes textual commands; +and the right combines context search and file opening +functions to integrate the various applications and files in +the system. +.PP +Acme works well enough to have developed +a community that uses it exclusively. +Although Acme discourages the traditional style of interaction +based on typescript windows\(emteletypes\(emits +users find Acme's other services render +typescripts obsolete. +.AE +.SH +History and motivation +.PP +The usual typescript style of interaction with +Unix and its relatives is an old one. +The typescript\(eman intermingling of textual commands and their +output\(emoriginates with the scrolls of paper on teletypes. +The advent of windowed terminals has given each user what +amounts to an array of teletypes, a limited and unimaginative +use of the powers of bitmap displays and mice. +Systems like the Macintosh +that do involve the mouse as an integral part of the interaction +are geared towards general users, not experts, and certainly +not programmers. +Software developers, at least on time-sharing systems, have been left behind. +.FG acme.fig1 5i +Figure 1. A small Acme screen\(emnormally it runs on a larger display\(emdemonstrating +some of the details discussed in the text. +The right column contains some guide files, +a mailbox presented by Acme's mail program, +the columnated display of files in Acme's own source directory, +a couple of windows from the OED browser, +a debugger window, +and an error window showing diagnostics from a compilation. +The left column holds a couple of source files +.CW dat.h "" ( +and +.CW acme.l ), +another debugger window displaying a stack trace, +and a third source file +.CW time.l ). ( +.CW Time.l +was opened from the debugger by clicking the right mouse button +on a line in the stack window; +the mouse cursor landed on the offending line of +.CW acme.l +after a click on the compiler message. +.fg +.PP +Some programs have mouse-based editing of +text files and typescripts; +ones I have built include +the window systems +.CW mux +[Pike88] +and +.CW 8½ +[Pike91] +and the text editor +Sam [Pike87]. +These have put the programmer's mouse to some productive work, +but not wholeheartedly. Even experienced users of these programs +often retype text that could be grabbed with the mouse, +partly because the menu-driven interface is imperfect +and partly because the various pieces are not well enough integrated. +.PP +Other programs\(emEMACS [Stal93] is the prime example\(emoffer a high +degree of integration but with a user interface built around the +ideas of cursor-addressed terminals that date from the 1970's. +They are still keyboard-intensive and +dauntingly complex. +.PP +The most ambitious attempt to face these issues was the Cedar +system, developed at Xerox [Swei86]. +It combined a new programming language, compilers, +window system, even microcode\(ema complete system\(emto +construct a productive, highly +integrated and interactive environment +for experienced users of compiled languages. +Although successful internally, the system was so large +and so tied to specific hardware that it never fledged. +.PP +Cedar was, however, the major inspiration for Oberon [Wirt89], +a system of similar scope but much smaller scale. +Through careful selection of Cedar's ideas, Oberon shows +that its lessons can be applied to a small, coherent system +that can run efficiently on modest hardware. +In fact, Oberon probably +errs too far towards simplicity: a single-process system +with weak networking, it seems an architectural throwback. +.PP +Acme is a new program, +a combined window system, editor, and shell, +that applies +some of the ideas distilled by Oberon. +Where Oberon uses objects and modules within a programming language (also called Oberon), +Acme uses files and commands within an existing operating system (Plan 9). +Unlike Oberon, Acme does not yet have support for graphical output, just text. +At least for now, the work on Acme has concentrated on +producing the smoothest user interface possible for a programmer +at work. +.PP +The rest of this paper describes Acme's interface, +explains how programs can access it, +compares it to existing systems, +and finally presents some unusual aspects of its implementation. +.SH +User interface +.PP +.FG acme.fig2 3i +Figure 2. An Acme window showing a section of code. +The upper line of text is the tag containing the file name, +relevant commands, and a scratch area (right of the vertical bar); +the lower portion of the window is the +body, or contents, of the file. +Here the scratch area contains a command for the middle button +.CW mk ) ( +and a word to search for with the right button +.CW cxfidalloc ). ( +The user has just +clicked the right button on +.CW cxfidalloc +and Acme has searched for the word, highlighted it, +and moved the mouse cursor there. The file has been modified: +the center of the layout box is black and the command +.CW Put +appears in the tag. +.fg +Acme windows are arrayed in columns (Figure 1) and are used more +dynamically than in an environment like X Windows or +.CW 8½ +[Sche86, Pike91]. +The system frequently creates them automatically and the user +can order a new one with a single mouse button click. +The initial placement of a new window is determined +automatically, but the user may move an existing window anywhere +by clicking or dragging a +.I "layout box +in the upper left corner of +the window. +.PP +Acme windows have two parts: a +.I tag +holding a single line of text, +above a +.I body +holding zero or more lines (Figure 2). +The body typically contains an image of a file being edited +or the editable output of a +program, analogous to an +EMACS shell +window. The tag contains +the name of the window +(usually the name of the associated +file or directory), some built-in commands, and a scratch area to hold arbitrary text. +If a window represents a directory, the name in the tag ends with +a slash and the body contains a list of the names of the files +in the directory. +Finally, each non-empty body holds a scroll bar at the left of the text. +.PP +Each column of windows also has a layout box and a tag. +The tag has no special meaning, although Acme pre-loads it with a few +built-in commands. +There is also a tag across the whole display, also loaded with +helpful commands and a list of active processes started +by Acme. +.PP +Typing with the keyboard and selecting with the left button are as in +many other systems, including the Macintosh, +.CW 8½ , +and Sam. +The middle and right buttons are used, somewhat like the left button, +to `sweep' text, but the indicated text is treated in a way +that depends on the text's location\(em\f2context\f1\(emas well as its content. +This context, based on the directory of the file containing the text, +is a central component of Acme's style of interaction. +.PP +Acme has no single notion of `current directory'. +Instead, every command, file name, +action, and so on is interpreted or executed in the directory named by the +tag of the window containing the command. For example, the string +.CW mammals +in a window labeled +.CW /lib/ +or +.CW /lib/insects +will be interpreted as the file name +.CW /lib/mammals +if such a file exists. +.PP +Throughout Acme, the middle mouse button is used to execute commands +and the right mouse button is used to locate and select files and text. +Even when there are no true files on which to operate\(emfor example +when editing mail messages\(emAcme and its applications use +consistent extensions of these basic functions. +This idea is as vital to Acme as icons are to the Macintosh. +.PP +The middle button executes commands: text swept with the button +pressed is underlined; when the button is released, the underline is +removed and the indicated text is executed. +A modest number of commands are recognized as built-ins: words like +.CW Cut , +.CW Paste , +and +.CW New +name +functions performed directly by Acme. +These words often appear in tags to make them always available, +but the tags are not menus: any text anywhere in Acme may be a command. +For example, in the tag or body of any window one may type +.CW Cut , +select it with the left button, use the middle button to execute it, +and watch it disappear again. +.PP +If the middle button indicates a command that is not recognized as a built-in, +it is executed in the directory +named by the tag of the window holding the text. +Also, the file to be executed is searched for first in that directory. +Standard input is connected to +.CW /dev/null , +but standard and error outputs are connected to an Acme window, +created if needed, called +\f2dir\f(CW/+Errors\f1 where +.I dir +is the directory of the window. +(Programs that need interactive input use a different interface, described below.) +A typical use of this is to type +.CW mk +(Plan 9's +.CW make ) +in the scratch area in the tag of a C source window, say +.CW /sys/src/cmd/sam/regexp.c , +and execute it. +Output, including compiler errors, appears in the window labeled +.CW /sys/src/cmd/sam/+Errors , +so file names in the output are associated with the windows and directory +holding the source. +The +.CW mk +command remains in the tag, serving as a sort of menu item for the associated +window. +.PP +Like the middle button, the right button is used to indicate text by sweeping it out. +The indicated text is not a command, however, but the argument of a generalized +search operator. +If the text, perhaps after appending it to the directory of the window containing it, +is the name of an existing file, Acme creates a new window to hold the file +and reads it in. It then moves the mouse cursor to that window. If the file is +already loaded into Acme, the mouse motion happens but no new window is made. +For example, indicating the string +.CW sam.h +in +.P1 +#include "sam.h" +.P2 +in a window on the file +.CW /sys/src/cmd/sam/regexp.c +will open the file +.CW /sys/src/cmd/sam/sam.h . +.PP +If the file name is followed immediately by a colon and a legal address in +Sam notation (for example a line number or a regular expression delimited in +slashes or a comma-separated compound of such addresses), Acme highlights +the target of that address in the file and places the mouse there. One may jump to +line 27 of +.CW dat.h +by indicating with the right button the text +.CW dat.h:27 . +If the file is not already open, Acme loads it. +If the file name is null, for example if the indicated string is +.CW :/^main/ , +the file is assumed to be that of the window containing the string. +Such strings, when typed and evaluated in the tag of a window, amount to +context searches. +.PP +If the indicated text is not the name of an existing file, it is taken to be literal +text and is searched for in the body of the window containing the text, highlighting +the result as if it were the result of a context search. +.PP +For the rare occasion when a file name +.I is +just text to search for, it can be selected with the left button and used as the +argument to a built-in +.CW Look +command that always searches for literal text. +.SH +Nuances and heuristics +.PP +A user interface should not only provide the necessary functions, it should also +.I feel +right. +In fact, it should almost not be felt at all; when one notices a +user interface, one is distracted from the job at hand [Pike88]. +To approach this invisibility, some of Acme's properties and features +are there just to make the others easy to use. +Many are based on a fundamental principle of good design: +let the machine do the work. +.PP +Acme tries to avoid needless clicking and typing. +There is no `click-to-type', eliminating a button click. +There are no pop-up or pull-down menus, eliminating the mouse action needed to +make a menu appear. +The overall design is intended to make text on the screen useful without +copying or retyping; the ways in which this happens involve +the combination of many aspects of the interface. +.PP +Acme tiles its windows and places them automatically +to avoid asking the user to place and arrange them. +For this policy to succeed, the automatic placement must behave well enough +that the user is usually content with the location of a new window. +The system will never get it right all the time, but in practice most +windows are used at least for a while where Acme first places them. +There have been several complete rewrites of the +heuristics for placing a new window, +and with each rewrite the system became +noticeably more comfortable. The rules are as follows, although +they are still subject to improvement. +The window appears in the `active' column, that most recently used for typing or +selecting. +Executing and searching do not affect the choice of active column, +so windows of commands and such do not draw new windows towards them, +but rather let them form near the targets of their actions. +Output (error) windows always appear towards the right, away from +edited text, which is typically kept towards the left. +Within the column, several competing desires are balanced to decide where +and how large the window should be: +large blank spaces should be consumed; +existing text should remain visible; +existing large windows should be divided before small ones; +and the window should appear near the one containing the action that caused +its creation. +.PP +Acme binds some actions to chords of mouse buttons. +These include +.CW Cut +and +.CW Paste +so these common operations can be done without +moving the mouse. +Another is a way to apply a command in one window to text (often a file name) +in another, avoiding the actions needed to assemble the command textually. +.PP +Another way Acme avoids the need to move the mouse is instead to move the cursor +to where it is likely to be used next. When a new window is made, Acme +moves the cursor to the new window; in fact, to the selected text in that window. +When the user deletes a newly made window, the cursor is +returned to the point it was before the window was made, +reducing the irritation of windows that pop up to report annoying errors. +.PP +When a window is moved, Acme moves the cursor to the layout box in +its new place, to permit further adjustment without moving the mouse. +For example, when a click of the left mouse button on the layout box grows +the window, the cursor moves to the new location of the box so repeated clicks, +without moving the mouse, continue to grow it. +.PP +Another form of assistance the system can offer is to supply precision in +pointing the mouse. The best-known form of this is `double-clicking' to +select a word rather than carefully sweeping out the entire word. +Acme provides this feature, using context to decide whether to select +a word, line, quoted string, parenthesized expression, and so on. +But Acme takes the idea much further by applying it to execution +and searching. +A +.I single +click, that is, a null selection, with either the middle or right buttons, +is expanded automatically to indicate the appropriate text containing +the click. What is appropriate depends on the context. +.PP +For example, to execute a single-word command +such as +.CW Cut , +it is not necessary to sweep the entire word; just clicking the button once with +the mouse pointing at the word is sufficient. `Word' +means the largest string of likely file name characters surrounding the location +of the click: click on a file name, run that program. +On the right button, the rules are more complicated because +the target of the click might be a file name, file name with address, +or just plain text. Acme examines the text near the click to find +a likely file name; +if it finds one, it checks that it names an existing file (in the directory named in the tag, if the name is relative) +and if so, takes that as the result, after extending it with any address +that may be present. If there is no file with that name, Acme +just takes the largest alphanumeric string under the click. +The effect is a natural overloading of the button to refer to plain text as +well as file names. +.PP +First, though, if the click occurs over the left-button-selected text in the window, +that text is taken to be what is selected. +This makes it easy to skip through the occurrences of a string in a file: just click +the right button +on some occurrence of the text in the window (perhaps after typing it in the tag) +and click once for each subsequent occurrence. It isn't even necessary to move +the mouse between clicks; Acme does that. +To turn a complicated command into a sort of menu item, select it: +thereafter, clicking the middle button on it will execute the full command. +.PP +As an extra feature, Acme recognizes file names in angle brackets +.CW <> +as names of files in standard directories of include files, +making it possible for instance to look at +.CW +with a single click. +.PP +Here's an example to demonstrate how the actions and defaults work together. +Assume +.CW /sys/src/cmd/sam/regexp.c +is +open and has been edited. We write it (execute +.CW Put +in the tag; once the file is written, Acme removes the word from the tag) +and type +.CW mk +in the tag. We execute +.CW mk +and get some errors, which appear in a new window labeled +.CW /sys/src/cmd/sam/+Errors . +The cursor moves automatically to that window. +Say the error is +.P1 +main.c:112: incompatible types on assignment to `pattern' +.P2 +We move the mouse slightly and click the right button +at the left of the error message; Acme +makes a new window, reads +.CW /sys/src/cmd/main.c +into it, selects line 112 +and places the mouse there, right on the offending line. +.SH +Coupling to existing programs +.PP +Acme's syntax for file names and addresses makes it easy for other programs +to connect automatically to Acme's capabilities. For example, the output of +.P1 +grep -n variable *.[ch] +.P2 +can be used to help Acme step through the occurrences of a variable in a program; +every line of output is potentially a command to open a file. +The file names need not be absolute, either: the output +appears in a window labeled with the directory in which +.CW grep +was run, from which Acme can derive the full path names. +.PP +When necessary, we have changed the output of some programs, +such as compiler error messages, to match +Acme's syntax. +Some might argue that it shouldn't be necessary to change old programs, +but sometimes programs need to be updated when systems change, +and consistent output benefits people as well as programs. +A historical example is the retrofitting of standard error output to the +early Unix programs when pipes were invented. +.PP +Another change was to record full path names in +the symbol table of executables, so line numbers reported by the debugger +are absolute names that may be used directly by Acme; it's not necessary +to run the debugger in the source directory. (This aids debugging +even without Acme.) +.PP +A related change was to add lines of the form +.P1 +#pragma src "/sys/src/libregexp" +.P2 +to header files; coupled with Acme's ability to locate a header file, +this provides a fast, keyboardless way to get the source associated with a library. +.PP +Finally, Acme directs the standard output of programs it runs to +windows labeled by the directory in which the program is run. +Acme's splitting of the +output into directory-labeled windows is a small feature that has a major effect: +local file names printed by programs can be interpreted directly by Acme. +By indirectly coupling the output of programs to the input, +it also simplifies the management of software that occupies multiple +directories. +.SH +Coupling to new programs +.PP +Like many Plan 9 programs, +Acme offers a programmable interface to +other programs by acting as a file server. +The best example of such a file server is the window system +.CW 8½ +[Pike91], +which exports files with names such as +.CW screen , +.CW cons , +and +.CW mouse +through which applications may access the I/O capabilities of the windows. +.CW 8½ +provides a +.I distinct +set of files for each window and builds a private file name space +for the clients running `in' each window; +clients in separate windows see distinct files with the same names +(for example +.CW /dev/mouse ). +Acme, like the process file system [PPTTW93], instead associates each +window with a directory of files; the files of each window are visible +to any application. +This difference reflects a difference in how the systems are used: +.CW 8½ +tells a client what keyboard and mouse activity has happened in its window; +Acme tells a client what changes that activity wrought on any window it asks about. +Putting it another way, +.CW 8½ +enables the construction of interactive applications; +Acme provides the interaction for applications. +.PP +The root of +Acme's file system is mounted using Plan 9 operations on the directory +.CW /mnt/acme . +In +that root directory appears a directory for each window, numbered with the window's identifier, +analogous to a process identifier, for example +.CW /mnt/acme/27 . +The window's directory +contains 6 files: +.CW /mnt/acme/27/addr , +.CW body , +.CW ctl , +.CW data , +.CW event , +and +.CW tag . +The +.CW body +and +.CW tag +files contain the text of the respective parts of the window; they may be +read to recover the contents. Data written to these files is appended to the text; +.CW seeks +are ignored. +The +.CW addr +and +.CW data +files provide random access to the contents of the body. +The +.CW addr +file is written to set a character position within the body; the +.CW data +file may then be read to recover the contents at that position, +or written to change them. +(The tag is assumed +small and special-purpose enough not to need special treatment. +Also, +.CW addr +indexes by character position, which is not the same as byte offset +in Plan 9's multi-byte character set [Pike93]). +The format accepted by the +.CW addr +file is exactly the syntax of addresses within the user interface, +permitting regular expressions, line numbers, and compound addresses +to be specified. For example, to replace the contents of lines 3 through 7, +write the text +.P1 +3,7 +.P2 +to the +.CW addr +file, then write the replacement text to the +.CW data +file. A zero-length write deletes the addressed text; further writes extend the replacement. +.PP +The control file, +.CW ctl , +may be written with commands to effect actions on the window; for example +the command +.P1 +name /adm/users +.P2 +sets the name in the tag of the window to +.CW /adm/users . +Other commands allow deleting the window, writing it to a file, and so on. +Reading the +.CW ctl +file recovers a fixed-format string containing 5 textual numbers\(emthe window +identifier, the number of characters in the tag, the number in the body, +and some status information\(emfollowed by the text of the tag, up to a newline. +.PP +The last file, +.CW event , +is the most unusual. +A program reading a window's +.CW event +file is notified of all changes to the text of the window, and +is asked to interpret all middle- and right-button actions. +The data passed to the program is fixed-format and reports +the source of the action (keyboard, mouse, external program, etc.), +its location (what was pointed at or modified), and its nature (change, +search, execution, etc.). +This message, for example, +.P1 +MI15 19 0 4 time +.P2 +reports that actions of the mouse +.CW M ) ( +inserted in the body (capital +.CW I ) +the 4 characters of +.CW time +at character positions 15 through 19; the zero is a flag word. +Programs may apply their own interpretations of searching and +execution, or may simply reflect the events back to Acme, +by writing them back to the +.CW event +file, to have the default interpretation applied. +Some examples of these ideas in action are presented below. +.PP +Notice that changes to the window are reported +after the fact; the program is told about them but is not required to act +on them. Compare this to a more traditional interface in which a program +is told, for example, that a character has been typed on the keyboard and +must then display and interpret it. +Acme's style stems from the basic model of the system, in which any +number of agents\(emthe keyboard, mouse, external programs +writing to +.CW data +or +.CW body , +and so on\(emmay +change the contents of a window. +The style is efficient: many programs are content +to have Acme do most of the work and act only when the editing is completed. +An example is the Acme mail program, which can ignore the changes +made to a message being composed +and just read its body when asked to send it. +A disadvantage is that some traditional ways of working are impossible. +For example, there is no way `to turn off echo': characters appear on the +screen and are read from there; no agent or buffer stands between +the keyboard and the display. +.PP +There are a couple of other files made available by Acme in its root directory +rather than in the directory of each window. +The text file +.CW /mnt/acme/index +holds a list of all window names and numerical identifiers, +somewhat analogous to the output of the +.CW ps +command for processes. +The most important, though, is +.CW /mnt/acme/new , +a directory that makes new windows, similar to the +.CW clone +directory in the Plan 9 network devices [Pres93]. +The act of opening any file in +.CW new +creates a new Acme window; thus the shell command +.P1 +grep -n var *.c > /mnt/acme/new/body +.P2 +places its output in the body of a fresh window. +More sophisticated applications may open +.CW new/ctl , +read it to discover the new window's identifier, and then +open the window's other files in the numbered directory. +.SH +Acme-specific programs +.PP +Although Acme is in part an attempt to move beyond typescripts, +they will probably always have utility. +The first program written for Acme was therefore one +to run a shell or other traditional interactive application +in a window, the Acme analog of +.CW xterm . +This program, +.CW win , +has a simple structure: +it acts as a two-way intermediary between Acme and the shell, +cross-connecting the standard input and output of the shell to the +text of the window. +The style of interaction is modeled after +.CW mux +[Pike88]: standard output is added to the window at the +.I "output point; +text typed after the output point +is made available on standard input when a newline is typed. +After either of these actions, the output point is advanced. +This is different from the working of a regular terminal, +permitting cut-and-paste editing of an input line until the newline is typed. +Arbitrary editing may be done to any text in the window. +The implementation of +.CW win , +using the +.CW event , +.CW addr , +and +.CW data +files, is straightforward. +.CW Win +needs no code for handling the keyboard and mouse; it just monitors the +contents of the window. Nonetheless, it allows Acme's full editing to be +applied to shell commands. +The division of labor between +.CW win +and +.CW Acme +contrasted with +.CW xterm +and the X server demonstrates how much work Acme handles automatically. +.CW Win +is implemented by a single source file 560 lines long and has no graphics code. +.PP +.CW Win +uses the middle and right buttons to connect itself in a consistent way +with the rest of Acme. +The middle button still executes commands, but in a style more suited +to typescripts. Text selected with the middle button is treated as if +it had been typed after the output point, much as a similar feature in +.CW xterm +or +.CW 8½ , +and therefore causes it to be `executed' by the application running in the window. +Right button actions are reflected back to Acme but refer to the appropriate +files because +.CW win +places the name of the current directory in the tag of the window. +If the shell is running, a simple shell function replacing the +.CW cd +command can maintain the tag as the shell navigates the file system. +This means, for example, that a right button click on a file mentioned in an +.CW ls +listing opens the file within Acme. +.PP +Another Acme-specific program is a mail reader that begins by presenting, +in a window, a listing of the messages in the user's mailbox, one per line. +Here the middle and right button actions are modified to refer to +mail commands +and messages, but the change feels natural. +Clicking the right button on a line creates a new window and displays the +message there, or, if it's already displayed, moves the mouse to that window. +The metaphor is that the mailbox is a directory whose constituent files are messages. +The mail program also places some relevant commands in the tag lines of +the windows; for example, executing the word +.CW Reply +in a message's tag creates a new window +in which to compose a message to the sender of the original; +.CW Post +then dispatches it. +In such windows, the addressee is just a list of names +on the first line of the body, which may be edited to add or change recipients. +The program also monitors the mailbox, updating the `directory' as new messages +arrive. +.PP +The mail program is as simple as it sounds; all the work of interaction, +editing, and management of the display is done by Acme. +The only +difficult sections of the 1200 +lines of code concern honoring the external protocols for managing +the mailbox and connecting to +.CW sendmail . +.PP +One of the things Acme does not provide directly is a facility like +Sam's command language to enable actions such as global substitution; +within Acme, all editing is done manually. +It is easy, though, to write external programs for such tasks. +In this, Acme comes closer to the original intent of Oberon: +a directory, +.CW /acme/edit , +contains a set of tools for repetitive editing and a template +or `guide' file that gives examples +of its use. +Acme's editing guide, +.CW /acme/edit/guide , +looks like this: +.P1 +e file | x '/regexp/' | c 'replacement' +e file:'0,$' | x '/.*word.*\en/' | p -n +e file | pipe command args ... +.P2 +The syntax is reminiscent of Sam's command language, but here the individual +one-letter commands are all stand-alone programs connected by pipes. +Passed along the pipes are addresses, analogous to structural expressions +in Sam terminology. +The +.CW e +command, unlike that of Sam, starts the process by generating the address +(default dot, the highlighted selection) in the named files. +The other commands are as in Sam: +.CW p +prints the addressed text on standard output (the +.CW -n +option is analogous to that of +.CW grep , +useful in combination with the right mouse button); +.CW x +matches a regular expression to the addressed (incoming) text, +subdividing the text; +.CW c +replaces the text; and so on. Thus, global substitution throughout a file, +which would be expressed in Sam as +.P1 +0,$ x/regexp/ c/replacement/ +.P2 +in Acme's editor becomes +.P1 +e 'file:0,$' | x '/regexp/' | c 'replacement' +.P2 +.PP +To use the Acme editing commands, open +.CW /acme/edit/guide , +use the mouse and keyboard to edit one of the commands to the right form, +and execute it with the middle button. +Acme's context rules find the appropriate binaries in +.CW /acme/edit +rather than +.CW /bin ; +the effect is to turn +.CW /acme/edit +into a toolbox containing tools and instructions (the guide file) for their use. +In fact, the source for these tools is also there, in the directory +.CW /acme/edit/src . +This setup allows some control of the file name space for binary programs; +not only does it group related programs, it permits the use of common +names for uncommon jobs. For example, the single-letter names would +be unwise in a directory in everyone's search path; here they are only +visible when running editing commands. +.PP +In Oberon, +such a collection would be called a +.I tool +and would consist +of a set of entry points in a module and a menu-like piece of text containing +representative commands that may be edited to suit and executed. +There is, in fact, a tool called +.CW Edit +in Oberon. +To provide related functionality, +Acme exploits the directory and file structure of the underlying +system, rather than the module structure of the language; +this fits well with Plan 9's +file-oriented philosophy. +Such tools are central to the working of Oberon but they are +less used in Acme, at least so far. +The main reason is probably that Acme's program interface permits +an external program to remain executing in the background, providing +its own commands as needed (for example, the +.CW Reply +command in the mail program); Oberon uses tools to +implement such services because its must invoke +a fresh program for each command. +Also, +Acme's better integration allows more +basic functions to be handled internally; the right mouse button +covers a lot of the basic utility of the editing tools in Oberon. +Nonetheless, as more applications are written for Acme, +many are sure to take this Oberon tool-like form. +.SH +Comparison with other systems +.PP +Acme's immediate ancestor is Help [Pike92], an experimental system written +a few years ago as a first try at exploring some of Oberon's ideas +in an existing operating system. +Besides much better engineering, Acme's advances over Help +include the actions of the right button (Help had nothing comparable), +the ability to connect long-running programs to the user interface +(Help had no analog of the +.CW event +file), +and the small but important change to split command output into +windows labeled with the directory in which the commands run. +.PP +Most of Acme's style, however, derives from the user interface and window +system of Oberon [Wirt89, Reis91]. +Oberon includes a programming language and operating system, +which Acme instead borrows from an existing system, Plan 9. +When I first saw Oberon, in 1988, I was struck by the +simplicity of its user interface, particularly its lack of menus +and its elegant use of multiple mouse buttons. +The system seemed restrictive, though\(emsingle process, +single language, no networking, event-driven programming\(emand +failed to follow through on some of its own ideas. +For example, the middle mouse button had to be pointed accurately and +the right button was essentially unused. +Acme does follow through: +to the basic idea planted by Oberon, it adds +the ability to run on different operating systems and hardware, +connection to existing applications including +interactive ones such as shells and debuggers, +support for multiple processes, +the right mouse button's features, +the default actions and context-dependent properties +of execution and searching, +and a host of little touches such as moving the mouse cursor that make the system +more pleasant. +At the moment, though, Oberon does have one distinct advantage: it incorporates +graphical programs well into its model, an issue Acme has not yet faced. +.PP +Acme shares with the Macintosh a desire to use the mouse well and it is +worth comparing the results. +The mouse on the Macintosh has a single button, so menus are essential +and the mouse must frequently move a long way +to reach the appropriate function. +An indication that this style has trouble is that applications provide +keyboard sequences to invoke menu selections and users often prefer them. +A deeper comparison is that the Macintosh uses pictures where Acme uses text. +In contrast to pictures, text can be edited quickly, created on demand, +and fine-tuned to the job at hand; consider adding an option to a command. +It is also self-referential; Acme doesn't need menus because any text can be +in effect a menu item. +The result is that, although a Macintosh screen is certainly prettier and probably +more attractive, especially to beginners, an Acme screen is more dynamic +and expressive, at least for programmers and experienced users. +.PP +For its role in the overall system, +Acme most resembles EMACS [Stal93]. +It is tricky to compare Acme to EMACS, though, because there are +many versions of EMACS and, since it is fully programmable, EMACS +can in principle do anything Acme does. +Also, Acme is much younger and therefore has not +had the time to acquire as many features. +The issue therefore is less what the systems can be programmed to do than +how they are used. +The EMACS versions that come closest to Acme's style are those that +have been extended to provide a programming environment, usually +for a language such as LISP [Alle92, Lucid92]. +For richness of the existing interface, these EMACS versions are certainly superior to Acme. +On the other hand, Acme's interface works equally well already for a variety +of languages; for example, one of its most enthusiastic users works almost +exclusively in Standard ML, a language nothing like C. +.PP +Where Acme excels is in the smoothness of its interface. +Until recently, EMACS did not support the mouse especially well, +and even with the latest version providing features such as `extents' +that can be programmed to behave much like Acme commands, +many users don't bother to upgrade. +Moreover, in the versions that provide extents, +most EMACS packages don't take advantage of them. +.PP +The most important distinction is just that +EMACS is fundamentally keyboard-based, while +Acme is mouse-based. +.PP +People who try Acme find it hard to go back to their previous environment. +Acme automates so much that to return to a traditional interface +is to draw attention to the extra work it requires. +.SH +Concurrency in the implementation +.PP +Acme is about 8,000 lines of code in Alef, a concurrent object-oriented language syntactically similar to C [Alef]. +Acme's structure is a set of communicating +processes in a single address space. +One subset of the processes drives the display and user interface, +maintaining the windows; other processes forward mouse and keyboard +activity and implement the file server interface for external programs. +The language and design worked out well; +as explained elsewhere [Pike89, Gans93, Reppy93], +user interfaces built with concurrent systems +can avoid the clumsy +top-level event loop typical of traditional interactive systems. +.PP +An example of the benefits of the multi-process style +is the management of the state of open +files held by clients of the file system interface. +The problem is that some I/O requests, +such as reading the +.CW event +file, may block if no data is available, and the server must +maintain the state of (possibly many) requests until data appears. +For example, +in +.CW 8½ , +a single-process window system written in C, pending requests were queued in +a data structure associated with each window. +After activity in the window that might complete pending I/O, +the data structure was scanned for requests that could now finish. +This structure did not fit well with the rest of the program and, worse, +required meticulous effort +to guarantee correct behavior under all conditions +(consider raw mode, reads of partial lines, deleting a window, +multibyte characters, etc.). +.PP +Acme instead creates a new dedicated process +for each I/O request. +This process coordinates with the rest of the system +using Alef's synchronous communication; +its state implicitly encodes the state of +the I/O request and obviates the need for queuing. +The passage of the request through Acme proceeds as follows. +.PP +Acme contains a file server process, F, that executes a +.CW read +system call to receive a Plan 9 file protocol (9P) message from the client [AT&T92]. +The client blocks until Acme answers the request. +F communicates with an allocation process, M, +to acquire an object of type +.CW Xfid +(`executing fid'; fid is a 9P term) +to hold the request. +M sits in a loop (reproduced in Figure 2) waiting for either a request for +a new +.CW Xfid +or notification that an existing one has finished its task. +When an +.CW Xfid +is created, an associated process, X, +is also made. +M queues idle +.CW Xfids , +allocating new ones only when the list is empty. +Thus, there is always a pool of +.CW Xfids , +some executing, some idle. +.PP +The +.CW Xfid +object contains a channel, +.CW Xfid.c , +for communication with its process; +the unpacked message; and some associated functions, +mostly corresponding to 9P messages such as +.CW Xfid.write +to handle a 9P write request. +.PP +The file server process F parses the message to see its nature\(emopen, +close, read, write, etc. Many messages, such as directory +lookups, can be handled immediately; these are responded to directly +and efficiently +by F without invoking the +.CW Xfid , +which is therefore maintained until the next message. +When a message, such as a write to the display, requires the attention +of the main display process and interlocked access to its data structures, +F enables X +by sending a function pointer on +.CW Xfid.c . +For example, if the message is a write, F executes +.P1 +x->c <-= Xfid.write; +.P2 +which sends +the address of +.CW Xfid.write +on +.CW Xfid.c , +waking up X. +.PP +The +.CW Xfid +process, X, executes a simple loop: +.P1 +void +Xfid.ctl(Xfid *x) +{ + for(;;){ + (*<-x->c)(x); /* receive and execute message */ + bflush(); /* synchronize bitmap display */ + cxfidfree <-= x; /* return to free list */ + } +} +.P2 +Thus X +will wake up with the address of a function to call (here +.CW Xfid.write ) +and execute it; once that completes, it returns itself to the pool of +free processes by sending its address back to the allocator. +.PP +Although this sequence may seem complicated, it is just a few lines +of code and is in fact far simpler +than the management of the I/O queues in +.CW 8½ . +The hard work of synchronization is done by the Alef run time system. +Moreover, the code worked the first time, which cannot be said for the code in +.CW 8½ . +.SH +Undo +.PP +Acme provides a general undo facility like that of Sam, permitting +textual changes to be unwound arbitrarily. +The implementation is superior to Sam's, though, +with much higher performance and the ability to `redo' changes. +.PP +Sam uses +a multi-pass algorithm that builds +a transcript of changes to be made simultaneously +and then executes them atomically. +This was thought necessary because the elements of a repetitive +command such as a global substitution should all be applied to the same +initial file and implemented simultaneously; forming the complete +transcript before executing any of the changes avoids the +cumbersome management of addresses in a changing file. +Acme, however, doesn't have this problem; global substitution +is controlled externally and may be made incrementally by exploiting +an observation: if the changes are sorted in address order and +executed in reverse, changes will not invalidate the addresses of +pending changes. +.PP +Acme therefore avoids the initial transcript. Instead, changes are applied +directly to the file, with an undo transcript recorded in a separate list. +For example, when text is added to a window, it is added directly and a record +of what to delete to restore the state is appended to the undo list. +Each undo action and the file are marked with a sequence number; +actions with the same sequence number are considered a unit +to be undone together. +The invariant state of the structure +is that the last action in the undo list applies to the current state of the file, +even if that action is one of a related set from, for example, a global substitute. +(In Sam, a related set of actions needed to be undone simultaneously.) +To undo an action, pop the last item on the undo list, apply it to the file, +revert it, and append it to a second, redo list. +To redo an action, do the identical operation with the lists interchanged. +The expensive operations occur +only when actually undoing; in normal editing the overhead is minor. +For example, Acme reads files about seven times faster than Sam, partly +because of this improvement and partly because of a cleaner implementation. +.PP +Acme uses a temporary file to hold the text, keeping in memory only the +visible portion, and therefore can edit large files comfortably +even on small-memory machines such as laptops. +.SH +Future +.PP +Acme is still under development. +Some things are simply missing. +For example, Acme should support non-textual graphics, but this is being +deferred until it can be done using a new graphics model being developed +for Plan 9. Also, it is undecided how Acme's style of interaction should best be +extended to graphical applications. +On a smaller scale, although the system feels smooth and comfortable, +work continues to tune the heuristics and +try new ideas for the user interface. +.PP +There need to be more programs that use Acme. Browsers for +Usenet and AP News articles, the Oxford English Dictionary, and other +such text sources exist, but more imaginative applications will +be necessary to prove that Acme's approach is viable. +One that has recently been started is an interface to the debugger Acid [Wint94], +although it is still +unclear what form it will ultimately take. +.PP +Acme shows that it is possible to make a user interface a stand-alone component +of an interactive environment. By absorbing more of the interactive +functionality than a simple window system, Acme off-loads much of the +computation from its applications, which helps keep them small and +consistent in their interface. Acme can afford to dedicate +considerable effort to making that interface as good as possible; the result +will benefit the entire system. +.PP +Acme is complete and useful enough to attract users. +Its comfortable user interface, +the ease with which it handles multiple tasks and +programs in multiple directories, +and its high level of integration +make it addictive. +Perhaps most telling, +Acme shows that typescripts may not be the most +productive interface to a time-sharing system. +.SH +Acknowledgements +.PP +Howard Trickey, Acme's first user, suffered buggy versions gracefully and made +many helpful suggestions. Chris Fraser provided the necessary insight for the Acme editing +commands. +.SH +References +.LP +[Alef] P. Winterbottom, +``Alef Language Reference Manual'', +.I +Plan 9 Programmer's Manual, +.R +AT&T Bell Laboratories, +Murray Hill, NJ, +1992; +revised in this volume. +.br +[Alle92] +.I +Allegro Common Lisp user Guide, Vol 2, +.R +Chapter 14, "The Emacs-Lisp Interface". +March 1992. +.br +[AT&T92] Plan 9 Programmer's manual, Murray Hill, New Jersey, 1992. +.br +[Far89] Far too many people, XTERM(1), Massachusetts Institute of Technology, 1989. +.br +[Gans93] Emden R. Gansner and John H. Reppy, ``A Multi-threaded Higher-order User Interface Toolkit'', in +.I +Software Trends, Volume 1, +User Interface Software, +.R +Bass and Dewan (Eds.), +John Wiley & Sons 1993, +pp. 61-80. +.br +[Lucid92] Richard Stallman and Lucid, Inc., +.I +Lucid GNU EMACS Manual, +.R +March 1992. +.br +[Pike87] Rob Pike, ``The Text Editor \f(CWsam\fP'', Softw. - Pract. and Exp., Nov 1987, Vol 17 #11, pp. 813-845; reprinted in this volume. +.br +[Pike88] Rob Pike, ``Window Systems Should Be Transparent'', Comp. Sys., Summer 1988, Vol 1 #3, pp. 279-296. +.br +[Pike89] Rob Pike, ``A Concurrent Window System'', Comp. Sys., Spring 1989, Vol 2 #2, pp. 133-153. +.br +[PPTTW93] Rob Pike, Dave Presotto, Ken Thompson, Howard Trickey, and Phil Winterbottom, ``The Use of Name Spaces in Plan 9'', +Op. Sys. Rev., Vol. 27, No. 2, April 1993, pp. 72-76, +reprinted in this volume. +.br +[Pike91] Rob Pike, ``8½, the Plan 9 Window System'', USENIX Summer Conf. Proc., Nashville, June, 1991, pp. 257-265, +reprinted in this volume. +.br +[Pike92] Rob Pike, ``A Minimalist Global User Interface'', Graphics Interface '92 Proc., Vancouver, 1992, pp. 282-293. An earlier version appeared under the same title in USENIX Summer Conf. Proc., Nashville, June, 1991, pp. 267-279. +.br +[Pike93] Rob Pike and Ken Thompson, ``Hello World or Καλημέρα κόσμε or +\f(Jpこんにちは 世界\fP'', USENIX Winter Conf. Proc., San Diego, 1993, pp. 43-50, +reprinted in this volume. +.br +[Pres93] Dave Presotto and Phil Winterbottom, ``The Organization of Networks in Plan 9'', Proc. Usenix Winter 1993, pp. 271-287, San Diego, CA, +reprinted in this volume. +.br +[Reis91] Martin Reiser, \fIThe Oberon System,\fP Addison Wesley, New York, 1991. +.br +[Reppy93] John H. Reppy, +``CML: A higher-order concurrent language'', Proc. SIGPLAN'91 Conf. on Programming, Lang. Design and Impl., June, 1991, pp. 293-305. +.br +[Sche86] Robert W. Scheifler and Jim Gettys, +``The X Window System'', +ACM Trans. on Graph., Vol 5 #2, pp. 79-109. +.br +[Stal93] Richard Stallman, +.I +Gnu Emacs Manual, 9th edition, Emacs version 19.19, +.R +MIT. +.br +[Swei86] Daniel Sweinhart, Polle Zellweger, Richard Beach, and Robert Hagmann, +``A Structural View of the Cedar Programming Environment'', +ACM Trans. Prog. Lang. and Sys., Vol. 8, No. 4, pp. 419-490, Oct. 1986. +.br +[Wint94], Philip Winterbottom, ``Acid: A Debugger based on a Language'', USENIX Winter Conf. Proc., San Francisco, CA, 1993, +reprinted in this volume. +.br +[Wirt89] N. Wirth and J. Gutknecht, ``The Oberon System'', Softw. - Prac. and Exp., Sep 1989, Vol 19 #9, pp 857-894. diff --git a/sys/doc/acme/acme.pdf b/sys/doc/acme/acme.pdf new file mode 100644 index 0000000000000000000000000000000000000000..7b01ca2547f15ec9434ba0da90ee4d79300cb5ea GIT binary patch literal 117006 zcmagG3qXwN+dsZ*%jS@bQ=*zQiBO}W1J#IXN|N&_8l6SSA#{FLs8pJ!FcE53VRs!u ziqLFD4W%+H9S|xtlyoqfnwk55-S=Sk`+eW{_n)=XGtV>6;l8ia=lWdNJyVxCI2oIo zn5hq+`nI{|iTZFez1eyp-doj&+t{cNXD;#E9uT@k&uotMT=?V^7!>NaOONRk!&{4&Q5*!?$BL+Ucu_aoew9k-NbDyqD6ByqXW7(?r&H-=JzWv_#fTUEmRwZ z?$dcO#ATV#EcnmI@l%$+dPy~zn;*TjCsu#G-tpuhb(ozEX7 zhQklM7|~s!!K;p){aIu)$~)xct5*kK={`XN6T=62ubz!ZC^WLSp1QE1w>cm70? zf^NHKO;s-k1cjC}bq?MtOcdq{UN_f7r4glmezqkLc%{XyN;P(j$IY` zr-4v^{pU}O%>!TJ3%8kSP2Ior?rLoV+4%Td9%6$&4QA%AuO99elwC2AoiA#Xxc8ls zHdk(Oi)7Nvf0CSUo6}dBvPS&Evavz((-A}3B7+fMK0ipFvwHBEP2+0T)1g~}RgZq! zb*CmK+{R+h>V~4OyoIf^m$Ghg=AP@=yncLxWlcp%GUK9Xjn|A(pJvVa^NnAC*jBCi(BGfZ$EaZfuqsNw{p3c`8i9de(I;D%6Hq38N464Fs({2xi4*? zIn+jSAXhWmG|FtwvcFnS>ipVvHfP9{-M>r?9Cd!L|GMojo@V~4ViOvsSFyAr|HZ`u z|F!$#M*Xo;!1BJLl{@k0(|;UTV$3egVO>7Qux*RkR&+S-SmViZi}V}UY-U6?GEe_< zJvc-<&iak}855qHs4gqDH|*gU>q3K=G$TRK;CAM^`k#*EnvY?8s;1ewBpW=+8#ke{ z^Y2&ZBP!b}o;IZH?ynzmBrYL7x9na0Dec<>C-#>N?{*!3MYiHlQHyY0A$w_}{<)Q> zH}9*q*rR$-{71~BhqmXJy}x6$i+aEH={{GcR;Tk}73ZevrSC^CSUY~#(R1U5sM!8> zy2yU}PV0k<-zM$cfAC^`S*`nEnJ6jkooLE~Z91(cKL>{He8>@dSghTowj+=`y?o@r z5t)z6iN)KBEw{vtEjib$HtOh_rN5Xh+I9VWL(|EXn@;@wVWZsNSAG3&;X6&4+=T*T z&b|HWH7h2zzi)nebd|LKug$#&wPqYyGS1|%)tio5%bwC7(!wY0nOIS^VgzMnGi;0V z`(saxljN+p25~-hPK=N1x9aZlP>!GFtf6|u|Mw2%G8$$$9we6 zM;mBs9`x#(TCiu|ss8njyUQpEq2a zSL-$Q9!>X$gv8iiZ0g-MwJtV0JhnPbW!$u&QX`9rj5mQhH|n|t*hMnv)xwLXG_H?0 zQvcXOSp0a-kkNOSaTcmh-C}snU2XdN&g0dY*bdD#L;TbT$tak|90Jw{k-9` zv&P=c*gfIC?bE>no63jHw8-9-5~^<`51P8uY2~P@mh~+YXJ(E#c5_62lS{d8{g`RT zhAo|ubb^+8@7YbScV{lX?g)F?7M0y*JpXdMv8{>!m5(+T`wnhZaOND&KQr(qv-$8e z;gCP-Razc6l&hbdX`3ux6mGU+@b%ayudOaO=uEv;ly~&w{j?;*8Oija`30gGk9PmP zBxl%3&2ce_mwRjL4%}RDq$WJcdqIKq2D;;)!yKGr<{#x(ySwdrrtwhx^PXoK&lC5r z;V~XI9X(sSprdlMMVR%;tCQX{*z0Rl<|dVfJv$qi&A71eSrDgm9p^z&uVvCxzs&8W zK?{DKF?jfM%8bJ&E^JCEHD0Fa@kTf9{lmi8InDL?iIp|XA!v3_nM)c+cp z7W%8tVOFiXlg5kNha!sg=0wQ-J9gTQy=hw=5v{t(wdlq&@0O74BQarbE*{$ayZfp8 zYtL*7=sa1uf^AiFG;b8=K6|EZ{HEJ^+deP05dAf4VZuh%p3mmCQ!h*GxdCT%Mh=`# z7dWeYd@xDpN_tK7_3?*a?6dl)(VHn>y=DD~X;-|{hdK_d^kQ1mcUzB~d&^1au+1f; zeZc&N(Vkx|W(?goFE^up>zMUFT+N!*PGl=f?%@aj{Hyrm;+eS@R9ExOT$Z)C z8dM(~K5pQgR_mdk4mSCO`#MfqTrbwYdvuu5kJ_7!t48_1Jae;^`P|iQMXTXxW~_Vt z>^A|gFD;K4vdM2=pw>|Jpa(xJ4L3ZD4DL?8uyCZiz6WpGl3J7gaffzIyzt@LDc0F8 zn_^AZ+^V4W1qJ%@-I_xm&B!;_vMt^<`pXVWoA{OEHMh=}xIaHS^%!?TNxFSTWi z^2Fzdhnz8OnzTcG%kq4OE49_!Ubh6{qI|tQ#`UykiXSgE*2mZ+wA@lV8O+@F{^L{2 z^B*jx8b=#Z0mgq1^Sh;RGD@5ucVR>6)@N(Hjc(0Yf5?paGvm%3HvhDBgT%e{FQd!i zMFFP*r@jd5a#$DQH`L+k{^@6$pWH3Fv#Nj9vrWBky^1Z9T-HqyE_3I~tGz9oAHCF& z+!aOKY)pCfVUuTF(cC|~f7$!!{;=R?lha>B4{jdzJlS8KQO#K299;FIi>%pSURUTZ z+0rLGSmAu-=BDtt0nfrO1E<*|Ut2r6-wH1_HL)64d&@_n@BRA8&jW`wFK>EM=l{p# z`9F_7eR68hA105}2GX;OdaLut7*Fzz*uJB)PiFf!=VWag*ZF}BnjwxF^|W+SQRj)A z9_G&D8?UcQ9e?G~_{VGCyxpyyIGAF&Dei}dF{79FtSd0rUZ2emONgvrTQu+861P=F zlOk#Z4K^>TDiR$YJAIPgrWNn!Kb-o6)s!`N#@~knPS1-zUS9k0(&Un*9vcI(OI3GV# zFC1<#C%U>(I_Ca!>)+1quNTp{4ths4SN(MQ`JF#%)n~40Eqmc#mf3b_TkDLPjaIuW z7Jm87_ON&VkTqK_URi8!d}_Dm-JhQ42Hw!gu}n?zdtZO-Sf((Te&qM2akoi-h}Gl#{=mA;?rp?mXL`#I z71ujb%#cQ0(wQ6d@rQ~%?*B6Ir1>@#({FiXf}*jwQT0o&VcQVnSgQ>kJ8eXxu1cEM zUGmPQ39Q_gA3SP&Gqjlg@Unh4#dPcGJg_dRu=uXD>4*C*+TQBJ{kHplLvpZ5P@wsL zz`TSZnFl2kE9s!I_W_okrlofcVx!&Awn^t-j-!@HW z>sfx^Hr2EGzHO#wt=z_llIa*0%3c`?I8%9D_DWMdIFno%AIJZHdq&g$#H_2rclhZs z*SULd_45gZE3Mq)9ZGh&1bYPlU}Y}#3WhJZ1e?P4+CX2xx7KD>uG28&-ysFlb)pwJUhHa$K%@#-@7sx_g4R@5ayZZE)WNVVJ#Z=hhs?rBZEXPyFmRw8yDCmmg{!qtS1#X0PV3C&I=~O_1%V2&2eV@E8pO zGHPQsWo|K_5XmU7PaYlV-|=D>xuUGa$1cshY75KcQNC7^Ew4GKT+R0S-tE?u^6I}T zCq#beb%RQ&J#Fxsje2j2W_E%i)+E(|dZRK$WeV-7J_~kuQF(VJFUWw2+socxytA~A zMz3`gsd3Th*wL|caf|>Bc!bIo{2U`o@>~l32ZVA9-J8S_3)87mwS{U68JCJJo?PkA zUKbVIZ%onA|GJZ$j95r9OsBIqPOgJ`zn}ydxrP*>PtIK-r!3pMP?q59>=f8dQDLF7 zK@iLTvge-OLB04+zS~Ow`5Y8fWQ$Nvo&K3R{a6UH^Z{tJ4T+7D>-5v^LrkHTdN zr+}WRys-UVF;vd+G#6im^Q=L8zurkBq>408{%KdcTBmUCTrH<9esmaSjmCl`)URN( zDk{$C?$<=GlLl;9$hq8Sc4bR6LyK>jP4q#~MGOnjBI5$ay(dggxRr>j< zzEPTTMo^0nw+G96n?U-w&LXF??bN})M!gf)bwp)8T}Tq zDk~p1ofY)$%T7S>PpLP93}Kf&4M`@%s?>1?I1OvkLmM{b7zL`&5eH6{vvND1eCb%5 zi*j@3Jju6E+#G(vrm3B=MvD5-^legZU#7~+8c-X{&MPVW0=4slej-m$u7;d? z`i;glm6r@l#`QL#&fLyF1NYvJ+?+^tck({DN@mPdDbOurbg=3oeWT-sYtG73p_nyXE`_~YP|cQMOB`9@w`=w(Y1K^QlyigQd$_92T{ zZI4t|9^0q+E(>9`W+_+-D`IK^bu-klmW&tFIz;vPsM_*+!r3{Hy3gx7a!pD% zH3&YH>>HL+jm>Q0^dh$$79PzOeO8A7jXua|P%9cL6CkjbzJ0G>VO{?}tmwcNJx5y| zaSWSGji~XGiTJgMj{eS%ca<|m3Q>OMIZ@{nSLeXg+)!2T- zk-m9-C%hY#T^983c`fLEEqGJ#ERzV~OiT=pVT+KCj!dreFN0uHgTXvRE>o)yVn8(^ z@K#2Q0HJP#wMFNe*rQQpB?_Xs!!WRP1fcr^Yl@FIY;cJrx}Md^cLBwY+`4O)IUd-5&pPDbW@aMeMEoY$#?&fbL^ zz$azYB}!={lY>V^(l$gyzBp4Xa+Mo1MH2BKxm@%RCdg_)g@a0{X4vXi*a}py5LpHl zt&x}wQd5;~lX!19nlX+ZvqpNp}d z0xy?4;Km!=bR(!p1mcINNhFb5ktZC~kkH2~=KE4X+`P9Lk>fjNyCXcqSNjfc*VpIC z8P_tg^3Z8C?*qg}Pak+-bH3(Xue9SgMq95NM9hp@&tQutGVuO> zd$@W38`W4N*@yHQjx6jcs+zTq4D~kU_1Li!USjaVPBY~{D*v=9GuV(wvN0&$cZYze z%s27%Km>w-wwz>$KB!XwS2genUrn3+MUuI4MIe@oMut_T;{tx5)j8 zB0a*>YH+;RhnvGmpYgJ5Ek4+x}) z&_6-7WjMz^XGi5bvwox7K`+~`*#u{l{4Dz;R1M}@`BMBVkY*3ip9J$x2o^wy4ID0s&A9PG~yu>CBtyg0`=&JC8J0I&4*@Bd637X4E!=r28WPBZ?( z`d25SUWBOXUDI$WAhIUU=XNZ>g2j>EHg`3rEs{$R3)aeU4V#{eZyD80kB}`5D%J_01L;h#=zh|Hz&q4 zxD9UQar=&3=OuG#^$!TD3aa=Y@+DT%u?A3M9+F>U{TmC(!R*5(1DO4v7C*svHP7~| zv7e;=G4_OHN9HF^KbSdEu(%;5+vI9;gMFyxL*KrE??NL_th8ap`mxy@S8&<#Yhor6 z1#ufX|MYv7zBw_x3!z7c`XyR)FGU&hiltKO>5YsIt8=>dBSBqyzQxM4sy~Hy7F=7M z-s0p0@|sqOa$I-K%o5EvDkiWrpi+rLsceA^;|zpkpCE1`#Fc@M7MW&LnMvu+g^vVKLp?u_S!RNWXYMGGhK>;O+@4J<4%U=<2M0zr;5|YhJBeXcTG-48yqU?6NrMR z;jGeWpI`?}+9*Pz z5D}Y_DZs3(5iuzEDr85c45UbbO|V3^HULochD2J}^9@`olS)WB7bHmId_;JvEUF^b z(`_eL1%_9Zdu1jApbsAEZOQ8$&HUd2FnDZD`M=<1a882r-3 z3;^rkxH1OB4AHr)zTfjRx2I8}PNvIkS6BHI+PH&`Q)te|TSEi9KcL`Qnpkzc-o$@u zzD)m2m-;RhpvO((m=xrS7Rzr9q*J|LdVdHSf-n%o0qu1HikGpFLbzrnxKdDIQSj7Y zJ^Sd(fU5Zg$02LGf_)gP9|s*syStaH?Qpb!42&MT#A2pb0h?gjN6YD~^wyr`C*GZy z#_PT8)MJ?zPM_BjG7kY9xS5b>e^6iFXnZLXN0(YoOF(Y!(cqJ_ig$?~T0EM-u`N{S z>k}Xs26}yP0(%k682Nh$(FtIw|E8*`e)WZXk+pAFqbaW?*{{duKrr}+a`5~0`oiu4 zAI5`;l`Y{z8zBixE*QxdR?zA5TGEPR+RSr zZ#$7NS>n)xy_oc;N58F1;}VQUv~~)19s|_*?)!j9{@FrAIhh2s#4ARi*LlqdVEM#4 z3i2hC3@8B6`*wnQDjg*N#mBE+=(Di00{8$|g?ej{w1Z1~#Su!|U-^J#Cv-HLihZN{ zLQHep%(ddSn_@r=NXqV-U4&%@nSLdngk%aKdOD#h+yh&>*c2cWmHjbz#OR58zn|3xwKjRqA*w#fO+Q&0M<0Fc^*`xjOsWpy-puL zs2;~|gzQfqH*5$8=Tm-b7;QacWSO&w!9MT=ynoW3=2)SGjBiwV&qlA;ah|l3m;=dK zuj61MlqR&)Cs&X;863fmP+>1fjKP!@PW4jukCO@JhqeY0^fw>yUecb14eQ>%3qNX+7{r+Vys>`NK# zH2Ul+l3#Nm6^5(|W^gFNk&sx@_q<_3ECZO0=Rjr-C7GLc2MboC65cRgSg%Ypzg`9vCc#2tn>Oq8}5a=)NiE{%pxi*etoaWNi!} zq-LNz$UQ51rlnr&Tx;Y?GP+~$=4jCw?-)E9ubG~ZK&$~gB9_}A;}z#CGV}m(t$*_b zS+y9aKCm7_uH*Gt+ecyZhf=}Xnon^BXv)PF&0Vub2T~-vQ{f;wdRN+8>#*HPs;Rbb ziuM_r-qFz?Lx__683XZ!&uK;N#gD_$0Mlj$GoQ9J*66uX(euD-c2f^`EkD|BQ^Wt^ zcZ-dBWl1>=ZrP63?40k!jvC_5HPywqut=xgre67QDt(y~yr zfs{%4?t8n@@AhjTSAi##GlZYh~z zl$a=wt6zG5c3tE+5Df9Uwf>B7x=R7M7MW6f6ED34^v+B{P9u^SaBJ#!#kbi>9FpRy zw%L(qR@h>cG2{cDXzQ86ssmrGfjJs*CXHs| zi-qpnLZeDzAHR9C{Nb~$Z34^DFIYG_jX_m<{wTUsOrMf5WyU3U|b?1k5}1F#`aiyPX5VD zf=&+{u^d7(MW+0}X%F1-Jg|u1J65gz0^ukTQUdRSndH>@f45tZ4Z}(zvmGH`EIbOO zkPhC#Q%{~!_0vO3BXTJ+j`{K^d}yXt)NzV@UmS)Lw5TeLN8!la%qg@QX1J>Ai_(RW zv7~e%<+QT*rgSL1-N>>zOyGZif7C&leT_A~!$Jsn6oNT%&HGjbXZpXzSsF%RP59<5^e@!3W|zm6unIpTsUV%|lT2fpCSNFj}XxI?lXC>Gp;T1!R)@qvJ8U zQ7SpoTiD{TYs$zL_sLqlR>Z1EGS+TUA9`spa3T>Yd+*KJ96~q(H}Miq#y2RKJdzu` z#1yhKZvnp6{aSsy;T#ClJ`4pr+26_`dI;kkfJl?{KnqIKnK*|^BXT{_<0c%sfwKaT zk8*r^SmeQ!em*etNs~Khvf}tL9>RklXNr>02h`}Q3JK4+-vwlV_@*MzdBlzk&efdRy$Xf!z{C<_-nH1nD3o1F7t z`zl{gW!Ns0$8&q-2Ki~u(trlF+J`LSP_KaWaJCNx6f&KzeaZgjBa7LPg!N8fi!3Su zBYn$Wr+zPvIG?d6+T-(o6-K`2rp7A6@`(CS|3&2D{IgF$28#OkJV&GMXewCEjh{C3 zMo~nUeYYw2g}ErFiI8|vgui1^L|Wg7S~&=eJoWsQLh0e5>?%KC$%J3T8wNZA1E(sv zSxn~Pl2;^>-vtjvZrC^4uoPXh;WRfgUh_Lvtr-@CNm(kdUr7i^EGBD^%jOF{X7wF( zSb_68eUH<}I9OzR=%1U9D+E|1Kz#`(?Ih-i6g!10{kT|^gPRkhue2&w69Gr6$JNu3 z>_AP+6^5DdxD&5@*Uk-4TD;y|)S>_wLUd0?K~@cx5N|QGBx(=}Qua&c=&~WhiYoSM z*#>wZyw9uEDO$6#B}|iyK{nZbh*5hNJItc=noa3~yF&mC^^RC@rxaJ05PrHg`;qag z){|3H_9;@ufs{Lvq{j$8Jjo@J3)fx@36TJ@B8@knJI^nZJh`Hr$~Uv9f%!Q3=`3_Z zil(n<|5L0UrCPstkG?)9Fd4?i)6a^B>y2bVJX3O{U+lGa1P`$v_r_qf zKC5m6vqWG&uARZfEPAj9r;6%qMZt!DGCS9H{!WpBbfk=Ik2Y3GE%f9MKnVdja@~45 zkgFvY^!}-_oU5M0C4Q+@@PJxEcf5A_U3`3?Csgdr>+ z&^n6=vy@BXf=-d0#fSWSfs#c7w>E4ac(r}6(=`ayhfO2M6k|}S#X3)X+jl;S80)+y zqTjXp{WwlMY)v9h?(sDfQ08%z0sbf&(RFZVLlwV{LtM(<^BKwh zSpyq3iGxKO7Cmu)A`X5|La>0u54Lr$imuub;7+B z$X+jBb6|wiWQq?7XdMTFJaK!fqjyp5R;LMKrF12{|Z@F45t&z&njApUE+W8Pf!+ z1CrrJlO!_m`6R_Dv@Z$;V3HWbMZi`J;vCS62*U#>s9IMGyYspsH#X5{LB^A^)3q%N zwXOhC;{FikK>>6LAkbg63x1-4SV?7Wh$&b^nOFayMjh2+xJdZawJr3)QjRS;E)(== z^4xJvyc>1Ps;&KX4=`H78in0sAdh~-uL_@*Q47Hwk+zv^kKw`|Ro_S;Ty@ak2-JJy z&Uu0JiV#KC`TTr%Sj4rbkcNW(G^Pxp)={g*(~(>t!5tf4)#y@&|2rtQE9mkY_z{Vb zLVwAAy@Ww9!e4V+kxT%c8NSgTOo@R1)d*aN#guvHxgr%ooeu&|k|HAS{?t73te@b7 znrP;Jg2&rF>_$ftiM@OpSTXce)Ivbam}vki3H#8!y2EBm-%qc1$6B&3AxYzF<*=gn z97o@5EbEw-W(tLkISR?LTrpNqLUCY=NW}+h-nHTrQT(bNZ_}gT5!qE#Yn@Tliv!Lr z5vu=W@nlc~8;0pikEnJQD%8&k>{V7C0yM40g?@~g*vOKg#QT7D6tNBIT;AGWSH ze&{ys)UI)BnfsZ>;`qvfK8K|EVm$zvcO2}^;%iH{ZbGQGU>z_JP^?y_U@YEbPOCZZjWuJZHuS)w4H6s^f&a6_w=g z!zH3gsBJ^UuM*D!YDg0|;rplm9l4NDR3YspqiJH^t}Rc_-R0&qWZJ z$ZP{;?Ugy1>Ia;L=uko-6`1kM6-|>hh$8jvD^%mYeZ?`L$iQZk(u-=%N5L5- zz>=}D9Y680eDDjj9CbvfaELRY(lDi-UzVQ!==%b~=Q@@^3?dY`I@Wl9pr>)i@ zxgt0Fux>rWA|YAaG9~*k^@hS~vVnupnck2txh@?M*?yKSV!WF(C4;*@dW!uY>f<$- zh41Q<%MaMoWM!5SBkx7nw}iC-FiYlU3Z+SmcLl*&4mX~qtS(`G$4cvO1!=TM56Nuq^d}d>ORPZ^3i~9 z)7jf_3WQuh>78c<%4`68d5|m;As^IM7>_d}c$E=afV53&NQxWWVvWER-w)35K{o)2 z=Yo;)p*-f{hg^e=8CsMw7b*3`Ci=}@`;$gS%Ih{~`bNhqhM6u|bKi6c%RA$;Vy5?R zcX9LI#Az}IA1qM2H9KiTlaFm2osg7vpNk_%Sb~_s?&d9n=rR#Wi>uNOF;bwD%^F`| z;bZxg2ww!+Ec-2>{xTX4cQRcG@YFpE&K~aoMqTnjsRPO#(CZ<;5kmIV1(^ZFlKnOL zhhqHnJc{g&%UAmo;=w?Z^vY;nsO3MiS?yAIA;#=0gG_U7*?h&4f(C5_1n#2>$ zdGC1Vk4}irzTRcGo~WwzI@z(dCB3Yy9?D+tFeOW&xL-S_Nck7s%^5n@ZO!IG3zFWS zZQ$5|)Real}h&t~~iMF3M1Pcf`?;=1~ka|IWlLi;(_Y$12^b@U(N8M%3pr+!R zH}g1G5Dw}{_7}iw4Y?sS=%h#Kvq;-wXHAnLrl!8}EY_w@BvU}*4FMGwl`%_?p#W~+ zs({RY{ckS)}v2Djl4@UMOkQN*n{ z2`$(J?LcvY0s!L~5>YQ5dLSjm;4c*op75U=7*G_I2dNMk#hPKW2fwx|)}5mlu%S0d zJ+6%SvN1v2l=&mac;z)R0JuTp!Agy~D|OJ;2R)4}=m#5?2Zezv-WliUS2-=)03_V& z2~x!mVf}NCk8@{l@xs|oi<7h+2$b{AxWugbF>eGuZk3QQI3?)ZMgpQpWf)IT+eRL- zx0Vq76GI+2Ihs$kN%Y+|gP2fXVhwRAe4C62r^jUv;!|&a(B(RX??3e@`Nh%{-6bsH z&S$o|cW}C;%&B6Tpx>n<7#H**j04yq(A}Q)xfGNM3QzX9F&k8g06U0vSl9gba-172 zwUydT!W6QcDEwq}v&1Je#mUSrJqGHguUGDjt+3RFmb4m%*n(pUt}&-Uh25$jnA7+l z$0F*D1q()`T%kYF<*u)_Tj0#!lkBztGxA&L)OQAY7ZEursD zI5^6AzlVDK_(2V@25WuQAPeoaS3R*6-H-f_olu_f7~ipS-2E`@#`TR865i@Fhz1{9 zo{&&tu_8{Np|aOGaos(K%_;Yz2upw^$JAy!Q#fW+5I^hSKn{^X6O%j^&_oQZZi1t^ z2?-T*9wj$gThPhTtl8!#u4b4!?C1gRZ614FUxckLmwon0%oGSMhidgf--%G>y$KET zQsq6RQ45m5-4Z4GuQw9(-aMLf$gq(ZV68sOXsml<@6KfIkj&%>);FOCy?st5Ged+Y z_3OVzG6YwK62*vPj)_#*4tszeuGeKpsBzDL%7P_cvs3%13G!4bh#fH8N&tS#B&ST< z>$|c__YdyDUm_7I*R4R%O}l?4|DqSIA2quaTgi4x==d;EG9auKtLG2Qzxz$eGRQGv z)e)X7l&&}q-kOEDnEHShPAI8h#w3@CNLJ35QvX98BuZ5PZ6N>B$iV8(%|!A<$xI2j z$+}$*!|Q^qF2&u)rMM*^Y11WZ@v~S#gMp^Z!C_-=vV)UaCqdk^*zzf){z7%rv2c}~ z$^22%gvTisUs&~b+RZF|{oluHA=#zY-peub$5q2h>YPVr2@-Z?Ymd_&;gToQQ-~B# z_MEC^Bbj(W4P~ct(16;}fa~`*UP~5Fx*kWl803%PjgLqX zGw&EwQO=feP(=k|$E9@P{3;JT7^8yWG8Ce+Pyt;c<-q> zFo4o-YdvnE6N>E5_=hmcpJ4cBEr{FRA$y|m+NG(Vh zaKcn@PB0&sZbpcuo~V+vn!&9&jJ8QmueRIwoWD;rS%D)qWWU1>;qG0W7dOm@E>K8^ zzgNxy!$uz@=(U46R7v`P|Lf2T9&*hVxK?}31@QfW`E{P)6xHl$T~O3Yr0R9OD7naU ze}rnbXRJwHi2aZtW(OA^|0o<#JrDt4!%so7N#;Oke&#@EQD9&GU8eZ_IZ>C3;Jj@W%*RbkI-z$DDn(CEHR1(oq z1>~Mcwg-@LyJkO9jYmLS(?6r-~coH;d_I(4y823i;`iCu`azLWCe`4KPzk zu^VJoh}bc=a~I8^pYik!Af+EW8H}%SA-7Eel|Qgav=l@A=@?hE6_50lYy>0|&N% z-m-u!&4~q&6#+>&R|3_hMw3hg-W0ipxHg)k0o!WJ6uBZ-SNKk^E{B=heq7eb(BJwXy4_ z;;wV(L08N~i7EvXr{y6qKH}pt$Au_-=a^qzvVt_N(VU^oL5m%iQr@4?C%CthrtPh- zA!DO6za2S>PAgWng;rPHNzp`eY622&`Au?qER%#K9bcY?(L!?XPu8a_kZszF=K!zE zsTr`eM|gQPLM$CuXdvUTbQb^P9B;1LN3r_S`cks8pmikRRn#>Kf;gH7S%43dkNd^a z0l!M0K*>WZs+hwNn)kTzs{$>c^0%KRbxz96?6F2%(xD1~MEV8<(5~mm0-iTtEhXUt zg5I$#2|L4S4h_7Xn95GNg75+#%*3Zbulnp&sboP%qh)vpce4L%d+8}3#$UH#wb%hu z>dz=`ogCJa{z{%N?1np?NkR5BMF;n%sOCcr z#645M(slUbIe>KIIQ74Vnx#Sxx-qL2f0#Y?IU z6ub+1P(~o#5hzoKLb^?{&kMl}z~R^mpf?S-3la}(JHSDtI>r#lrz}F!fhOq0hC(wd zpkq)=sb3*P%S=K2(h4xbT7SftR%Vh0R{-9&5GhFSJ3=K7SYE(JA4mhr5-;+qJ7<&# zESAFV-|KpCA9UwsWk0R#3oM8r9{?do`aPE#X&FCQR}~u-qg>eo>v$wW=sCN_`bvjg zUBU|DLJQ1fSiYmr=*BB{>P>uS3Cc$&;3AsRVNcbnH~hXttb#1x0or73_1n3DQ*+WB zk-2{j$*fVgJ?)bKrR>*y{E}dO`?j8RgC33^M{0aTU^#@;Iwph6VIvBA+j90JAa5dU z(t?V8MnzZ~_?Tuutq_`-Gp^YIwa9p9@U68OTr?B6>ISL_FqlR;!DDQJuMEXKi)Zfw zOU}Y{xz}EBd%#{_W8rvj0_$Wp=_OsMWr8YqaN9MrlP==&9PT-V>ch7$gU5Cy#Jx=K z+Pn(nOu4#t8j8;k1d1SM%8!?Pa9%M^kblWgoPXPSg=kWsNCbxzLS@6r?v558)oDWM z2fVzIYf%4SC{zMq@r~2$1(~QMhV=n}-GFQ~h*3801B&+?fgR@&i^;^;m9;`X}^N{GK%|eucY?T>iU4i|PL!Xc2ghqiyIu z{5-g20?7K)7{P?R&OuYqOpjiL8pe9~XCQtOf^Nj+52dPR9@B_A0*^T?o zAq)}(4XnJsQ@Be7VVFYPE#M21R4I#&Z!>UnB=o6351$>TqtdF5`>j=CaT=Qbu#sR% zss`9I;_j7=ZQ8k1yO|wsR)8MwURW`xn-+qld|i42<=s|x64v8JW0-q_2EQQWHgA(< zphYUdRWZBf_&008V#A5BXaUim6C`GX7o6fYWo7mP2Wpy>6+XFPALJglVb9m%6N;zH zz||>d7%)1Yq(g(dzeooaV9fV}Rw|3xb-3==;z64*lQ6=;#ss>ntW?-UVc7gKQ6(b= z+R_ki$Z99E^0hmMB3T8-TMu7x=Cw8FL5KKWrzL)dfk)Zb>^RIc^UDkUPdJj4gM{pM z{pDwBXuD*Goi4t~N!u`tDH7E>x?3s9f+?8(mC2$R!1SyNqY#%1O;5yz7n^BjJxG48 znNm)0f2@0Z0P8sz z>;Wim^H()t`ZmBCHL%&ouW*MQhDQ|gjm#Mil6bjAGkb$-yZ(ovxLZIWBvmqKA75vg zz29QA#r}2Jwi##0Z0~UF)~3ED#&DgDWaY)ERK;dZc{?7q8T zN$0Z8!QX*EG>jKISDEUc3k7C7_T~Wns3ao|;o5gyQLQJ2T1B!>&dV~8?cx`@F+QDVq5%^Ms z|A#NTxL^L7EwL8Dv&YI4h%^Gek%B^TwK~uVY4xz(Yf4yaelidW-&k1 zQD_36==}VD`3uxJ;1LLY&V{+q#Sw$s-^Ekm7TBdAevcxAgLP8U)*;`1z6-kw++GDQ zeE%Q|XxfJ|%vFv|I~@(G{B|f&o>($#Oo?%PUWsiy8V|KW59k4dUjJCmYgo5QG!h#Z zxG4cHRv?)~`9#*KwZb#dEI)i9UY)0Jqz0=_XD{T{yW_|Jsq&18IO**K)4Kr(k6j5% z6W~!B7B^zJ64OwyDayeoMV~>)(3mnWz;Mv+Tt{*5Td?KvB;Q?&mwEn5( z`u6cr-~R|-5KGQ?f#&uB>URa*e9n>0!)tn!y*>yp?y2~%ctcC2oc z*;?bPqXw#>2C0$K+8iFP6Bem)(t(=Ws=^x+j=uEQuftI!3+A1aPUZnn??zer3G z7p-6@SZIKFK3Lh6ye|00M5=%0sCieeBv1Gi9LR`KEbQf}5Fov=&xQXZI9ScW*PfCW z2nU0ow|9Zdt*MA<1nhD4?yWEGIBd@H3#T*VV5=rbXZW;MZXR0x&kV0?HFF(-X}JM5^H3vi+FXfwY9J9?J4pe|^( zyNcj##-+G226Q74y{en6iU+X!>XMFwtF9Y-Adm+uWuE}=4^F!; zKMpZ<;RxK3Hdyd725FhfBDVgA4I&v7mA5sP8!c=4W96 z=1M0AC~Wpc?oW|evw_kgQM7-VGU0sER=zP*F@~rySsa?)+N&|I?Xg6;gw)r;$CO_i zaB}2rs0M1qE$8))`~93KNWz&db&j9*U4QuB4E^;@zsW1HZQ>aIF*!zEdI4J;}jU(_%Q;w7>5%fkV9Zoi}c%+E(t7z{ciCIJ-6tg$sW<(JbJ!G#tr=)R_ zj2~^%Y1l<%jk@V_CHa;drDM1G@!ge zDWg*~zZ-&mZm>v{Um7XT~G|@B$L`f>p4Q(I{EDUOy_dm5kXC0I6fB4Bo9oZW2b<+;PUuK zM*yH{NG2M9ssvd;l9`8T5Xr=8S2=kQxX4ls3dey5*Gh@We0LdSFER9oU(VdYT2B!5 za9GTam4!zq`jl$Jo$T8_&y5TuJ^95BqOZUnQLSVPCn9f%Vm*M#-iB!SU_XOu`9dl zCxmw<_Q0=8Fed6{1}h&-0+l~d+5<5_ zDZWa0YY6Upc45%*abo&V^~wWfySfBcV?qM5@fiGO5~S%woyg^9CV97o z3O&<_cO;VoNry70$J%X0TFl9%I3(iYoz@M<$T9Nuxc&t4@LwCy11WMP4mox`Q<>Pz z8$mSXwz9ET@D<}J1&@bU${~8oB}zn*ZKXc$%@a0~le9bC4?2ShVh5%S3iC8z6|h#m z|21<{<#(}@6Z9x+Sjb%w2EDdKofK*l^}_Nhlmd`V)Z2W$Oi67ZG!CEw9tnVx0wpRl zhG}9W^4*^t$tY{plCuhb$evtYvXSTzruMW3XwTe|(OwwfaV_ z+5E_=>ZsmFC6<}3Z~y-J*4sZHZNDX4V=D8T`D?TD)IS|^mlriWt#rK8P*&XZv43mR zo5pi$$h}f^a8|zO;qi9cEhwgDm;GB-<)J0rvl7Q@ajPCq4?DJg2pTcE|Gm$nwOtLZ zZ);lLs-JRZ=vp+V7fc%aV8<8R!Pk-lg_he+7$mbTx1|S4CV3w5+H`vD_{%#aMHhB* zX%}bSx$)=`|54YLQxlIg&l}?sJ1_Xvudl8yvww448ny9ufZK=VpBOHCZEg0H%W6Zd z&aQ7vwXn8XQT@k@u1ghHeRDsgtXA}QNDR_8WNNW+V;#qXzNK4h{Tl6F zCwa3&<~R1)PY!#TvN<^B$IY>t!!m}=qn()Zs9NX}b7-TsOMYbR6-M)?#glZRZ+{7o zb}g@QN?&a){`FqRt-P6kU9_rSsJHZj>i8=!W~MopbWt)tWuG ze!Mwmb&aoc^7F$pEepM(FX=hz#h)oM3)!$EbK1`ep}9)GvuEkX^XW5h+cArO)f{;s zYDHbZ_MBjON%*NBd)&6XnfSQ0OcuX+>hit*b3VKrG3&_X$8X(h8)VKyU(mID(zYeG zOS6o5xv8B$gyt*{{8Ibmwf8RGV0eyEFL#XgxWDge3>#NE z;ndKoL;L@F@q)f%T*99Y4}aPE{}J~VKyh{3x+oeXNN@=jAOwOXNN{(T;Dq48HMnbV zhv4q+4nc#v1oz;s!Fj8@v+q9po_*ij=hdrvf2Hbgx>v6?=a^%RIfr~-Cy3;r1>7^B zzen$$Lo4ePBC-v%3W%h>#+ReUEaDbTBM~E(PFg+C1bc#ApCeptCE&Ad3tL9QNlkeF_0$t1jKB^hCcY`hmGuRjWe;nWJE1ttg`4Qb#=2O9t z%{E24*m%mugz+d868cu;1;d$pbJvlQy;{VC&NuK5BUediOn?>>STS3VeB9xcZ+nGN zOY5dtvw5BX`>X)(=O@`^5yQ7qEU^@yW(2Fnckud!(`gtgK7OO}pmxc+z<2VJLi*ZX zF>Z}=*8VnX2-?j7O>FN|69Q79p`>myf&e>o1ItRPRWc!`*?eUea#ki=1-jUNss-{z z+_PZa6Md?W-;yX3WsVR#FAr!@(y-B5%5H_Y_?enc#M!Xn{q8K=U--yXX2|<$%NQpl zHpv)&664k_3Ch>SRA54K=jwQ2EZOmF&QfDvO9zh*Uix(M$oP5vSNIWA2d_XL1$H4A z5@zJQ-N*HiEa=YbX*BbN1*W7ng(qUDd5<~qf4`f7SX2MGoBcb^Re-z{pfVNwpL4JN zE63_zj#LN}DZqzH24+$PxLg0n46Gn_*MAQAKW1PBes#3-J0c11mEd=#T$b z46H1y@7ey#rvE=BU8-{SEto zW~ILrTR=IW6-X4!Y5?6E#-Jv+2XLGi2_lR5OVkn%l+jH9+6xnh$iI}7059busCIp^ zYr^)l>j88&=T6Gy{6+8qxgKKsC!iMb6aoALGb}t^mjkHI|3w=FeD{ChIw{&7zXJUk zpd3D!g%UuX-vikLa8Cc9g+*|3A9UmfW#@taHvU@@_-}Rq!ocu2|9QSH-mD&!BlzE# zfc{%n7{~(Oq5mavn=LnwsMG|23O!xA9RN*(=R*ZR6bF#)%;pggdrkmt>>w;?kfmnQ zw%-1YVeJj94o>d~2l4>kedd5qHuxC*e`en~0p%s&A4Od>)J5mA2Djb}hyU(0)!4rpXx z;*JXaAr@)z7hZe_i3D|xk3o5$F#wJUYmBGy4_dgt%@Vu7!t1*HyEh@-)0VA_7s)^) zFR1Lhdv7CU+4j#@kYEPH0@b103$!Xc0$6cS|1OAJ2Q*Pq5PB}VwE>dFKOY4l6rQ%z zpTJ=VqTh2WYwlWdsc;>Tk8d z!O{aj4GQ-FunNo?xM3cHY2U6$0N@M|mV&@HT>zZ-2^_ejh5<#-7sf^8s)2zlN^PKs z1s5pgM1bW>3JG99khq^Gm71W)WAye;5($qvW|JbJLpfn$77 z78YbYpy-MdAag4PqSbF&c+*vXLoWbd2V(dDtpS)l1^gumNFkE~5+8yiO%UG+I4U$| z1PkQ)2{cu@e_<^FOYi|`l>pqyl~@ZTyj&=om>5M%e*#6LXkB~kz4xBrXz=`WL~I2z zEI4hTX8|m1$ml#F!73jBtb*hMt7~6_?+s$2Koro2tQ0uSKo{&b%KF6-yeI;c%i01E z=|Y0f9cCb*nltw&V*&gIYdkiRP#K*N`cehyjcf2I=648Sp`u;Ojk~ z9^=6`UXU{Xp$!zVKo57tc>-4xK}%`_&~UuMz$FFC3_BVFESUBGq63MP;DuEG4zO%N z)CfLm45;0JA3CxZR&Bnh05M#aWbo%Zc0ZJ6kWO%@Y3`GloA&hQ=Z^y{-rMff3Tf?HIfY;+h<^qx)I)K5!6$2Y!}T?vvdU zcy0wxIxnV_82*e(| zATB@}2{hVkh~916i_Xsx>jE;Ly{yy6wa zIsq8<&l+&MD#R`>463nKa_fI=6dev(q)<;ewqyZ4{|w7QnNTb~8I_Pjn4ZD60l2c8oo z{obN~0=nfZ$`y6LdW(sDBnP^8+prsQLh~JwYI|XbDgS za(~!ill{Kr2{Fb?B0T^>`S^hZ;xcZow<%H-0R}p-uLhhVHsTLV5HK9PKWTzH_Ep9{ z1BvY|KJa}00ci%`p8m!YtVWP2fMwzdmXAYyEF^(BrVZYmz_;g^2V;>z)73zX*a32@ zZQwCUT~x$_Zx<1OZ}>6{tQzN+jS%&|=Y_2MUsN&J#{ey~$0nHOAoHbDyZkUmcb%=%WOV5UJm~l!OVI;aT!?i=fEOD4h%GRz7OXA?=zVX1!`WYh0jnP92%Ve#;acz$I|W1v&V&bC04fdHowOh40U$7d zPZ#fn_zM8Yhvc{pqBH`ZoEnNf!H=Tx1pQh0gh6_vlv=2L&ju_}{8Rbkh-KVUM%%;F z6=<~{F+uTE@1y*tfC5uPM0)?QXou;It@Yb1SzWa6QDchdl0FDKsHZT_#mNy z&X|CG-kCkl%ft)RnnMG=8vv!IX-Kj1Wf$Zeg{6 z_*gs;;?(Ws4n$_V%~BT-1ptb$e~(4!;XnrsEx3ak{uUtThz6im4tEFf08y-9 zb^C8SEJvggKq3y=^8ku`@RIgI%yUVh<NtiwTQUlo>>30y(d?f&CTGP&Wn~uuh^O z@`SiRUTv`8P0(`zv-AN8^^pGW`H_x&Rxj%GfbTIo6fDxu!1hM|H@7;pe6*cCoz1k4YGT%3&ew%9Qb|hW3W~k zC}gxj77}#T*IMo#aUh@uF{2LvAvOr`Z3}T!T_8;4W9JpnZ38$8$ibA$?q$A|W%UNg zqeDi9GP`g+>r`7?hU!y(|C7-P7-2Brc~Q$SY4-U9wGUUK>GQ5<{+ z?Fdk#KcM{J{icixJU9()@L!(bfr8h8OA7MAbI3LXvQD}~xxaBkU?@Z@9w3|YBSiKV zGbScR-I#E8obAjZw|u}k*V5fF(h1GolO<9|>EdMUtfu1O z{-ek=IEi4J5LTsnl(VgTFCbtcneAAg@q)ymp3NU`ReMcDVs(FL(C%n^S;*BD%gOcN z?wm2Ro^*FV^Y@cnJ=@-UNleD8o$aHw!NXy>hSNU_$?Sm-aI|*1YR1~Gx{)`W!8P%I znWWCI%iPbuzI5ihs%P_TYrTQqw&nW`dy#C~QX10DsOBTL=iZu*;Oa=a-57k|d`H(e z-Hf)Pp1B-HUuvL{x>vR*#}Yp6v~${+A0bV^Nl-NY{o~SPWsUqp_%BT5tGLaVwJz*q zA|eG_8{=p!L&_f=@5{I%^G&N(s5l9WTw)Kg(g!J630&UIG}I(ZFIDRD^4-UwIH3PL z-R8L$M-DQU*c#arJly*xDpA5YIgg5zSkUp|s(5#YCw2W-9jg}WgkJPpluf9@{I9Iv zeG>;@-6;o9zURe=^Au$+lTtbR$Bl*b*_8d5*DaEo9IH{$WaeIeh*}<*p_lR0Gwb%} zyy_~N>>?G%G8&g3T+&@b`?k9m@eWT@#6@fIYB~`+h+=y3P@zwyda3)?zkmO(PuN-+ zndecDgJ|7aOKUn}UBsQ3p$vbMCMmS~XY`EAfjBa8<8xL9^Zg?7^c}>Bkx5~fJu*Lm z&Bf$Dy1%0l6lB(9e<&YfZFeTAXO^FCf9EUg(`Jo8t?B({b_x1E4z--H@@-9G*;{dnS6ao{<&rl|CY0Ha8g#~pW@I9exxqvtU|G& zwbT;lGfpn(#WZW3jp-ORjfL>EUGB~<7eW3ZUy~Ljg|GAEPwrPW&woyF48>`YP0k~2 z4MdKl<jyRE-ft8<}3PZBl4oiCB>9dYSUsgjom-xndPnc`}I8T)r+0W1;%$s1O;cS zhXfscbtSqL`+?TCb)Ob?$(~g?+|3;{ri^9iPlmQm;lF-u`dZ(4?-b3&M2R}QpfmJ3 zHUW7}g0j8KU#;_A5v6I}doz=sqwbTGVOvy@B2pJ3wfXQFK`Doq;I)FgG5fW*oc}wI z$Rh3LJdgETPRD3Vzwqx>TpyL?I)6H6G>AG33B4 zj#H%2>l+@za%r^!f6s67r{aRZZC9bloNt6uP!03KfIIin=)=am-@H zHAw#Cr&L2-X%aI`1`>Iu47wcQS(S&b_u*LneXG;m_2OUmiSKMm>ccL{B8*yIQ&sdz zlk}f18R#|1>0EnP`iY|a9O8)8MjG;DS&XA3v*(xPn9{6rjc#7wg4YP}*T#NA_%xY} z$NJ$S^_4?-*wjdkONO+J4tGAb+;hFAsgQf_7Fphpn2(5O5+<>j$n|16zp2R-mz?Yw$B!bo`F&`%{S|Gk8jBZ^r1+L;0f{0tIUtc1E^1Y$(B=7R#%xcL~g5$=~P2 zs@;1=7UwAvio6=7~xYjUA6f&BlLmyX?BtkpH zWz~loL#{97cRzmf!I%3C?2D2cNV$?a3?g^)D4(J69ogtCkGfH5lJ^R~Nc%oSisxz# z(M*%nB8aLaGTY;8BSyJ2y2RpUR3X->h{uFJNaLx>+p;!XK~b+Yyllp-WbKQm3~Zpt zROlIz?VF2Fk@C6@L9E(vBj@eL^IJ$WvleEJ{9P*mjQyIt}qDheu&1t-7E%_~n zUeESK2(@<*mjCZ7oS+|i{O8f^|I-TRfA;H=|6ApgiR}H~->3YaRz8{D|I1YVo-&y~ zu)X`wPMM*q3*j3L817aXPXZBp?J82_g;HlMb3<@gI=)aF^}F0-A1r8TrM^+u_ugF= zK9}gXJl1>H&O*N&teh{KdV9BbvwIm5SY=%6>QR)9{Wz^qHX;07fu=YoSfzJ6pJl$Q z$l_w{UTat2_$wTe$f`*lI zAF}5<8(!G(t=2P8dFmf0d09sT-XZ zbQr4}p5`5kF4^IF=9-t4>@`e^5yly$(V4Nq!}1dM8s6ikAF9_M;>-+~ge`pLoh>Up zWDBE`>t~8^l#yan-eInCy2N9#UqJc7eARV%2=A^CG<)S#Kpo=bZaHr=mw~l|)SG=& zhZ~P$EfDaYn%0*3zA{-LA{q7(su%Sc-waK2)xd_(%DRhFA<3^{_MNq0zP0yTy$LOJ zgEfI|dV!`QZ+tRWp#{4aH7){Qh;S!N>Xht?2IGq?~5sgSRICGzvI+j_~@|^H`{JB4{Z~Iw~$RXnVg(-!s`mN6 zIK!JBXwUFJr1+YRS<_URFmU58As{|Y*ab$xGtla1zsGMV+i%Y0ND~#7OXK)z$UsBo zCZTB5L* z`Ez`yed(c%Qa6Hy^XGHv;&Pr`^RVy-Z&LWXl&e!xM1mh2stl7%=_c=1VaH3Igq{(& zGDRZN^I7kPUM0G)G{JsRx2Ck`BDp;$p+M!msX0x6E}>ue%*=h(KyY)8kZ^#~`El7G zJcS9toB^s>=bRs*xS<0}pwuEP;}hB6nbT>f525^-A9lomLJ5j@h+lCt`c+*szylfmPBgaSLNHVL!moGngjAzZU= z2Ir?sbT{&f$erPpi%Xi^3t}gpEm+~q0E%zD?3JoqNfb8e(z^S3JXVe5@Kj#Op3}*B zFI`>LPH4)ts}|#amWUT&B2$pysaiSr$5|F7tCQy@Kansd$R(JyUt8U>dk4(z&6?Mj zz6`Jzs^%kOf5m)#7|7TMKkPM_8JJ~vM=*EUTMVL&HTtEZ*?_K3Vdh5*psr@vcedxG*o9qT8C$Uf`d8XLwlA4^u=`O zk)?jgPW?=6LcbuLh!AJ$CyA3sqr29T;1@}V=YDA{j-@=L#afkYE6(%P)*sd>;}}NF z!&)LO=S*&e<*UThm5x2^Z0lu+bg(HWMZ6{F;Qeb4Oj-;=o8w>3N}Uci^)Ih`MDfNr zFzzixUyhp)f8Q0%h3e>Whv^kcgc5gV+jO+-{4J#NoB-1l_c4}kz^xUlY}rP!QDZ>j zd)y=@sTKQ&vHS&?4`@xB@=)cew`f1CImcuoFNOCUGclCOL(-q4QX+kAA}%j2ezIoa zBOReB-o1g!A4lnncmIDz0a}7)Ml`-zrRgqNQRbr9e3UM z>5jx|q>G?*z%Kau7Q>OxY`I9Zwa4Qg)&SQpjavs?NS~wttuSK>L;K$1i!U`ZVP)C0Lej z7Ri_UOYTfGu+<&eM-JN(4$Uv&m>M3IcL=}szH~RK=pSGzS?fWy%tFzoR6e7_3gHk$QAJraz~{u)Q*<+Npe5oP+j_t+_9aEkIn%Nyxy%i=irIY7k~_Lv)ttnNn1V zzW3(4VLV4IG3u29{)|(W#TlocK0jM*Y_ZHf{CPbk4ZXtgsTw~Kj_9qVEN=gpJGEhp zsF&!V_NP&XvTMD>+Yp7Z$)ENlAJv(-w~|fE`TS%aCX#B0S|o2YR981g`C7NG0ZNA1z~2#Q$*CuZztrC1@1rGtc* zeRYaUN!z-?ptEZ8GVpkt?X!XLOUWKRgsK1NnBtM@w#yefbp*3m5_ zyGma*OBJ-WLS?n8$l@ZM`LcRE)u(*fa!MN~)k=uEba7X9ld9OJxX7SvZ)`H&g^9Q^ zfnHNz)bO#vNCWwiar+c)|J<~qfe|NTUnt^&6!oNafi8MIPegH%d`Ua?jdEn;(}#F; z+ya`l0ði^Tmk3acewF4c_h;MM_X`c_*-VL@MRzVq*u}4`KpQAABI7T}BSc0*} zbKEt%SmlybCB0aN{?>;w`&3Yf8sk?^v67)_EYmke{_D7%&qd}|fO-X1qP)@YaMZ85 z0adB5JezCD&M1_+`E1X@Hs0@L)4pce6p>p=6wYqI445Be- zG_fCf8*CJLjbr&NE!kcDe|4Sid$?}izj}6>;aj9Hb=jgzlk>vV{|6QLD@R+LqQQclW8qX`t<4VOQB&7zHZ z#hbIueG*T$ewLWkxP##*$t=3i!_-aQiokQ5@TDz_;yEkL5}EWDyO38GEC%W!W{(>% zgHVL%gf<^@1QMA?f;Ck-_6tm*o|^Qz8zb*ke=AQNdkS~Pl*KbR=FF(<+$5I8lkd2o zjNI;hl9Kw0@IKLKDEJ4~PXYOhj8$~^W_#Pu!&jVIuse5C^UFWkb{L+en;9G8V9w|F zlyE4F=tsiguGezlZ!6%EBm0kfeey`A`fXv&@5E@MfaCe{6{U-HR^_g&G?HNhoTLo` z*O#iZSFUZA!*^zm&uBc7vB{i@lXI^5mNq9AKA^y@xq3fFz*!h5WPRQyuZKCz?ER$V zZ{v3hKjARxxiW`9GcPMEK@>vn7|*;?qhipTh5f2EtQ(j$ajo|K-d?F zPSU7q>~@33YH+#ArFVOBRe^qCy{F~dCHumOg6S^?3CxaNtlcw%Z{-Xv%6@flDe`sE z|GF?qn;j|V$wn)bC_bcM89yFPKnalbYpB#>4NS zUv3~dAWBov9wpvvW8Lo+0@(n=f$h}(>3m&{cW1hEDx8_e%fiBJkHCC zkni!Hb70zkS8*CcR|zR6Z#=i0PszfrzWbf6HSSThM4HiB!cp2Mr!&5T-Qq)y*esTV zR<%KSKSt;kH~5+y zG%>4LWf;dwqS#1zQWU!@GCS_=zAM?K`xn^=IPrMe%vjdvu)hWn?@{^6wIgiTu*^iX zs)vF@M9yQPIxl2k_O7|9FmtpVBdb^j6yUn^^-p;v6jn%*I&%C^f8<5bvLz7JrGHi^ zgPsh#pok(>r-|IKf0{{6&2M9;J#%FBWl>UZF^XpiNtFL#e8=ob*^?Ur4 z>C|VL8r7JKR}0i*n}LaORj_!81u(3Il0V)#-(TKL zdO|;gg6WRZ{kIV}6VtzhssAqG)&d2rR+e^*7TiIbM>u{~0gi}>%-ELf( zQ2NhD_`>5)ZHV@In-+LFV|qJC4*q;pYU8wqDZ%!bG@3Qn#HUu;iR84+Kl^Z=KD$UQ zlF&@G5w=F^&oQphxb+GXit4Q*fx9@~a&m;L?CXUkYT|&_UE^4ni~^R$<~n<$Z-v2K zdHV-t?_(?&Yoz@(J-%Zrx=fWBTIV6!wz-}b)gnv|s18}O%|@Xbq+sVppTz7MXFl_I z^VNTiD(vF&Bwa|r6HU$2+lt>Z%~d2(MCV=^ zeKp(BlD_7P(k%8)wMZ^Y+&Q>t+TG-+`@%gR1*FZ6E9>PvsYuOc?7uM2#}J@c&AiR; zk4biY8azB5DzZ-5&kl8yKe*l`9?;%~XNGR2?bQFuUU$vcQS>X3OcXXZh5*eW%Z5BX zr!hOxvb9mP`D~m4&yz(qgAI|Hdr761~c>B1>ZyQ9PQAIQ$K24uno=w_3h<@L7SXa3oL*meSW;WLB~iur4UtaAAS;Rg6rXi7Z8g} zCSr@rh%qD4&zct#`$DdKVywoOwK=4O!pBK1m@MM#;3~rhH5d7a{F9{ftn|BN-&Nku zynz;(++TD?n~G}#s!q@Lzb^2Oy^HrzRClAN&RwPQq;K{BP*LKUi0*IrPq!|{*%Ilq z407-PL_FBa|Z&6z$S3J%khe zGtJth!p;jtyiAL)gPEfr8J{kC17lf0E4|@!`6NZHDa-gdhWQU%Ep{zg2fU0dm^<_N zL_PnJR8`#uf1^1?+#f?G}~%!fu3TxF-WzLW`$!|SAOn}!A4&904G=zXXYaCTuSr12_Dw?=*H9B{(Q$BD z`fbz-x|7*UNXIbZiU@!$);IG@zEnDPi8A2iMm=hrd#_AODyZ|LzJeoZjr{zsv0OqD z!*kqhgxOS-ci&%=tBK86D4n7Bb%Cqdf@-)gDuwbAx%W#3Rx0cB-p_q-VhJR|Y89L7 zJ+=bhx!#D=^EfY63@+EjgtALO6`Cw)n^0+*A{>7@_J4lGMsC!eDEdRLGB$`c1AQId zqIp~vb+CnH@s)&cVJj{i8){j0RNK4XI|$lKD!-ytYqt8V$!TtHR)*O$zk8A)#!aln z#K1SSqK?Q9Z@SH4>D%GCS@wKcfKrS{h%QA8-!GZf%)zS0DuxPrLcXQeo;-i8(qDYh z9VMwc6wxVuvThJixJKrU^ecE#lX=)zn!-U)wQz@z#z2l*qf}%rlm0p}*M-;u-yfxf zfKgGs1v)3<(+l>fCiT{U04{E-P&I>Z@))o{HF3e9X)>|$`-Q_IqwAT%RTU@ zjm?d?eQLP9wVYd2;5J_7T3+05L$TO;#-7CP+I3s~DWV8(%9xinWGaTsVk_ogEe#Rg z*#~YZ!|G2KZ`8DNi@h0ZsijiEqPQg^XYD66^;I&SMcDzMQMTJxkRVAA^tIqgX7|s*47`N`LDk z-R5C6Q~)^J%DQHf8^wi#+kVvagqGJq2)!+bQn&++>z-XF_Kd3iC*L|6;gVXXFB_sr{Qih$q1`nfEZKyl3Ra>U=NA+GCR5dFM_r2MW!wh;OH;(!KQV(H0~5mhkw_ zn4t^72~9}>JB9SB&0AyW!Prr@bjRS3H-@xCXD4%9DERZM_X+Y7O@kC6`2A&WQOi$n ztfa<&+!rr=AjNd}5mX|{T(iw_bNNNNgL+vyGMpu8QJ$TZTT?P~lmk^)=!7o*=0=si&RC`c$HA5cbmA_P?IEG$x;+=FC9Sv^S${Bz}Na+1~n?6Y;@>ioYCdEUqGKSRR2z8~)`p_EAyp$8UMb zoi1(37#1=WFQ>;(xWOm z8|pqh+#s|XWkBf>IH@`OtVT_-W&L6_OV)_v4*4DS2~%2RBze+U_=xe9SAZ})S%G4~ z?BbwEGdF#Y9E#uRsHsdH+!J#h%U)#-qHBUsXZah-qdhxRRKl^lj5Dc}ErK(_c7~75 zU2M|qcpgZV#=R0k~=*>RU% zp70qLq70ZyJeSY)^v=BCz$TDFp1?7YuJ=wdSb3C#WI8I$HrBV-EXMJ`$spK)ik5ev5 z8y*{GFVj~G^rcFxInq&zt7N`@9U-?hXQhUhI>a>MCz%S%DejRIfk#qh0ztRkI?U~hm|o~>yXfR zb&+3vbVlihzfMG$(DB^c`IrLnpRS7R5k6lJkElm9+3$o7h0J<0w~!s!i-~9}da^WV z^ba+^J$KpmRV z{qNNTRK3vopVsGsv*!5MUG#afoM7GjlGzF}rr+aZcBBPHW2rCEAHL%et)L(*Ax^RN zO(dTbGru6xb<3*e5F6yMeddr7W*?PAb?)=Bwzg*kX*wc6kGLp6Uo8g?Z*GcK(x8h0 zj{vrXYn8n{M_e^w^|NiBc)iye_qROpa|>G~#xEVhA6_7z7-DJR) z^hLAx8w*Usb5Gg=pK6s)RfWG1hY&tDf74LXED#|!&AH0Vn>JZY>PMXvWIh{^w&f&T zTxef1ZllqsF2;)R*)&ZHm@6!tHb36$zlTAQ4GC#b{y000Wv%$dC8*%F*tyf^5u=>v ziFv1UdkzUSl1%4Q&)SsEb~ckM485jbwwtb2y57zj@FP_>yCx06kNQAWyqVbMS4n_n zDl8gjXN9hSDp<*EA?~P_MDqytqGpc`Zt0M8%Kpfw;Tc9+yZ)-pQ(5 zg5Xd+bw-izL$owW6XW5@Zx6q=u&;SBh&w z>72gf@G#ERy~1P)W5SAnlR(d86^R?+YE@nXfdLQVs`A7poOs+fXW?d~c=cO$dY|~c zM^Qdp*yWa+Z!$VTmv~*jS-mDib&igsB}Dr)(Zyx#*Z9k3XO6Jj>p0Es`OoYFsSJ{+ zzO7&vw{r>U4KDRyv!=?Bp#&}7cWwG_I^H%$zmXE2t>1I@by=R68R!BCBm`GrGe%0X zpgo~2iJtEkd$?|VobV#tEI1BufRc)t(Ho<*zrw3s#Y%Ifhl27uU_@@0DDIcSbXC!v z(IaK`M+!9z?mDH?UwcIX&HnJt^ytGI`!o1)k~sf2K6T9T9d4IC17u;g>7r)11#id; z^Jb?W#4Mz#Q~sbVjMa8%>9!)UB)@5KMkqsQmgd%>!ep(3-5M{#GJT=5!H4B2zHd16 zy4jpb8m$D6h-2sUfQejHKc)!L4fCZXVGyR-E;pu?UCA@_CS??InmQq(Z!48Y^4U!aQc8RN6mC+2Hp zpE`H4N;&=Q^g^hR!`dKWSjpXVaWm3EmOxup@2Ue*b&->uS_2`8tF9@Vhb&G02-<@x z90!8CwGh`GXP#E_43$&A#JKqi4n#BOa+O$2rAInI)>zv)Lx{v68 zTGG}cq%5gk|NdC_*c|QA?TDE25^ca&WcYE!8aBs`U`f}iX^)syoHaOL@&|WN3pb;a zXh}uBv#!g@&gsNyU5v;rio(4s2QJM_u8ZHJPVp4(z;+@ zXZ%J%?&Tr&2Z5_uXiTV@n*^QCIg__cOQ)8J{>O)h>%`Qh{`CS^$6nlJ8>=23YeJV4 z7VQ;zGq0}VD=w?T_SQ6#it;4)5SY27YaEQGIE3L?x6_5+P3#Fm#{th2JFpPBk5bIO zz?n1GBxyS_rEu|~8huB0tih+1vs#N2w3(X<>3A0AAtmOjfNdz`1Diu2@B6VkPF~Oh z`TQ!);wn}nNV(~4}KPg_rS7-IxKb$C|Bj=as-DB|Lu zThchjgyP1~p{-mWQtPcilHl7lSsP!y*ln-HNvl=TI^x-gD)>I(I(sRXqRTk^QvY=F zZ3Wi-%TIO$UP1SF-VMb80h+&2J(6R2$%_U;r?6KNproa&X339Oqsi^5z0OLLp)Oe> zCQsh{!P+cdHr(1=j96`qV0j*Q4K=(S9HK?>F+rh_9j|@BSN$sIeH3>AGS*7fARA;?w0SMR9xnlPPH3ltLR>(BE{x}5K<&Q zd?>uI<>TECw&oBd+1#|yo0Qa4=VP`$;aA=0=a-aYeHJ}7T0;wiSGBemROOjUzBL(I zzud+G^%_r}^!dVv_4kjd(tbYcvt8|#L_ks;Z6B#S)~4ffN&iGC_~B}SU0J65&ptQh zxf7W~F|uL4;3i6hqjs-L{p|88SF0+2{EyNJH&N4%Ye^_5c}2}6 zA;ieCrO%eD^X(G*qVdowW}_*(j2Wf=;2Vo8^WpFlrG4|!#dKYB{=g^xa(H#C+$_86 zr&mxCF*F>*35Rp#@`y+c!Aj3Cdu(!5@dy2Ji*L7$k6))Yo9dW|)8lD%y!dak#gV(} z3XX}J54eR(=kMJuxmTMzJRn^Lr;=< zHZ39^B>SXQpnd#%a-aW|#as#+9Z!G@(jpa<878^%8}Eh22Pt;4R$2Fepd31la3d-_ z99vd`ee32PUc*A)#HGYlqf;sp@<#dLTyvwOCZe~GTbZ&pyiy6Fci~nC?R`xxL0N~W zNY-Ks{_*5w;{&nyAyxR!#;@M~)Ic`gJ%>)?ICY~V>^g5dB?~=0`5CbGF-8idQBrS5 zKNdgr3xgMe>ILqrWqUs%MBKC4=)D9ohlo-&t5#ga?R@Sh!{?8_`_3n+#}u)eZ*iaX zabIsbll9lAEn_&Q?JvAG<}iis;Sdk6f8XB;GZEBNnS4s@Np5GZpk;}=_cMp|R{{`2 zIRE4f#$BTN0*`1$#nz<$iQsUqj$`V3Lq+|vD@Cfo^DuojT}hY;2~>$6aVNuZ(Jaww zPPx50RQe_BW~CuZOP-GxfE$M5SzdPi_wnezLdX7pu9h-`s;K`a24(pVW6)UDj_?$5 z%vMd{MH+dT0w%VrwnwI~(+; z#!*Tbbcg);{OI;{HM~^*R@~=qX@Sk~#fCOPjyhl=efAhQ9S^66$?UWGOKl!m zN2s3kz~;hgv@%Blcacg#rLUN@DEpjt!q7j{>*h3H?X~JlAc_945n$cYIL(RF`;}|1 z9KV=-(H>StPo6DYRAhEOJ3Foj(W3d%_t3$5qwieJwnp0^2yH(IQ0?lCxnmZqIT-{o zA;Zp1r~C23<{P)Cmx?hW>Vn%+uOExdG*xB1d1RKxW$g`#6HW!1!gV&qUNtEj9 zlbZ_j=flQ_OUIqB&DhAEu4dVew7lefk614AX?7eiiA~u(O9C;U!9UP%P|Lx_BvZ@b z$>elPb8PKN?2v%bU#Fh-XdBQ=ru(q= z?4>~vvRwAUg!sq36G~L{vR%V(Uws?7iQe>n6+hA4k-dYJnMC*a{7p+a^;<_R&UE-2 zhqIZ9bUhrFL(PvU5kL#(eu@$C8T~@p-;0J07<# zyebc>tuEPsnKE{x?I{YTKDp9NHpcahi8U+q)f-NS%7G+4FNX1F?#Bo3B=y(@3Mmm8 zxu*~7T(jO!=&+ToMdv<4&-0ZYO!MlmBk?*9ud2%-!hsVmB`?si1wKQS^8Cf4&1&e&0kR6F z`L+9SkL@+A*K-9YI;0N;oU;z2CL^IKa)$pGbMMq6TG+1XmTQ)6+qP}nwr$%sX4$rF z+qP}jo}HcUFNu=Kw&+R zo$sjkCF}z>>EQ>BXK-ik%>T8REI{;U`YM_!{{KM>f;7TQFfhGJ$_JZ6#lc=PxOc*)!ObYOo zsTmcNDU}jw_g)ci>=O>IK286 zOf*GsoYjoL>z$jj(i;f;&Zr9TM z%(NLt;61dnN;!DhKDM4vs!&U8$_EXHw?Q29V_3f1 zOi!k^?$3?iJDJ>K8QhF@v*|uQ_D+*hOtULuQDxOZSCykB3>cGr6YZ4u%gjWv@((Uv zZZPTf_?+Tt_EbigteOUB_2_EvcTVnt@!+wbZ{_iwtNI;AxlvDFE3;9H8y4ZT>JFN( zgPAN?;*i2XA!@Iy?yNRepzOX_Bei91X-*G);E6gC=g)iyXw4`lX(PZSa#LAQ+jdu=Qno5(LFfOxFBnI-2StOG4*#MO$eXJU&4&a~h zg;2IF+pybj;#C+Rdm_3|E)$N<2b8!Mp>4>&K~3p1i-s!BhNeBBtfW9<+I{G;_e|^~_5O4@$5?TfsCM>Rq=711 zBi2l=4dd#A5=)(#Sk66~b5?CveciajyL%`)w3D;5hn%p0Kc{@Fr5jaR=zkw(;6We@V_4M4#e%4tSzdF9#={bY0%H zN$S}410Kw%ZWrPOM(hdEWg{{2&|_@-Xi}pIvPZk`kp0g^b3dYRqN6}j9G&tLQovU~ z5okyjEXN^fe=6L|35B6`-!u_ikm;Zmy(J&7L|hCT<;MoamP({~i7vr(%}ncqyU;Yq zO3*DNFiVQjn1K^tM#ki~O5a(ydfFmNNF^IN3hFVjvCkjlpF)-g+*VH`3KeJJ#y5J| zWfiDL_l?YZAhpE;kVQADmaf+N8+B|-3LYBPozXiMbC$T`PN&G*Y&Q!b@LO3x2jPZc z1~N7yt<$x|hD{9bZaaSy4e%{5M7r8bQ`)y2)0%Uv3(@uuQ&Z7)DXHoZk4<4NqI!~G zS|?M-57=CIZ`+1#N^C37MGOv7w%R0S`W1)}a8azkIt6k#xJt(dQ4Y0lOd$j7IhLnW zcNMPK9W75j=DpH}S_2=p?Beb$PlDoVhZJSRfdT9$^@D7ARe z*57JHQlE5iYxdr30%qti9>>W~jl0mmU#W!|;h8x)c3`u?Gj)X16d5?lq}T(qP9iiBB-KVe-rnwie&Q4nOwJR9F)OcE zvZB|08_wl>0G^CR3&HY&2gU;3u^JzoIadXjn0j_6%|P_f<`#1vIe#W5z^Qiw=_7E3 zB5^P4QQHM|)pMEO0*~dhSW4qF`3H__iW|}A6M#BYhiC?iU02=Rpx=v#&JKnNLs7b> z1c2W8PE8t@SfNGseat>!sn4O=BTU9s*IS})I?kZjV?s^;uo`j6@ARDRP)Rvnft*po zi#?>=%)ZC&0~0e$kTedV;}N%|YhSHu0Io@wOBI?S#ZXO5#q}(>fW>=+@ z&p;qg#@O@1KZmWMf`iwV!IIl>+fiC#cig$zgo3PfIayl?Wo8;&(IfzzywDV1Ziygu z8q*d{_iS#*$ox&MRJ#My zrO_KufpOQ#cY|yiITSC`rR-IP?ws*SA(DSO?5!lcnTcbxV&}SJQ6Rz0!y$ES{+n6+ zpxJtJ`_hA2Ptel{cmXbKeIdqUbwP(`>GxCfRl4ve`A6o0Sh@X*_<`JQRmjJW*RuxL zs2J9iU(T_a*UOLcUK)95T;VSDK@nOr1YJ~;?pmGhO^htZ$ledUo{ne@T(xaFV1o1d zX69LLCJLaQA}__Ig*jn`UViu6pR7Ea(ZI%>nDZop`+?D7U7S1^k;@cfZNxZc4sv^HyDOZiDUlJwLf5t@r=S2B`UEyS6`Y-8{h4H`Loxg6oHHPBDw&%BJL?ORe6$ACfEJ5E7 zl0GzcHk}F1+Nn96E)_Q1vh}Y`Ov=HEq5&AtvO!#R`#Ia`_v`LwJ1p0QxG?PS(@i9~ zPY;12Ylt+8F=^D}X|BgFO<3-3XV*7rK54WwEb@o1*N+T0rC9-Ye|CGYcei)5oLJVS zY0&|b=j-{qbM}DyN$)bKa}%R*Sl%_PC&Y?IL_=l9tBZDM?XVW{aQt3y*{$$W)H6H$ z2VFM{_x5v;rDxNG6%DTL<#TX%9-%yttRfryxSIa}6vbENit>M`#Dq*2h*6Hid*4X(NE$a^-K|9U_Uu}QknQg7kfZ&> zUF2fj0vol&E%G7n#U-|j5mhJ2ys0VJ%9RVAeik}_X;BASO&0G`<<+gP2Xp^T1i7l{ zuy#J000fb5skYVha{s;KMA6|p5cvc0G1OtEn`6< zJA)0%Hl@6StIcla@JIEkHrtOjM`f-#0;xTQ)0ARccuk!uN6y7%U@{PjUF9mfUWunNSD&qUxZV}~DtIb9x4t>1|8VkUE511O z6GFh*{uJzLbQpko#M+(*1WIjQd-k}*0Tlj#*}nF`YW>@g6fh!6f6&}{cO<@tqt}Bv zV)(ArzeHJq(j^;h$VhP4jO{&#osI>-p{35DKlwGofuLzF$~7*j|y~NVK?iv%vTZC$(6NN8-$GH5T5OsTg+vS=+N*I z*rXua1iJ=9HhbGh%#6}qsUe3vCa>t|B*3JQ@b2fI6>YaXHZ|X2-(rxx)gB zU@M-)imAm&W6XW58Dg^^JX6D*PvRFpXEKt=m*|Go_=TcB3n6EQ5F*8X`NC)kkqn2d zBP5$Oz~fB_eF8EJ$~ky;SEa->!|DOA6o7kDa_4F7$X7upYNm5!G^I|yvlOKN=n`nUW14wJ$bM&sctO)^1`~tEw**sCmSDYU; zyEnd6`^vo+jKjmv*o8joe@%8Ohs$ zrGMnzWB(y(xl~;!NUml%(iqfDlRhXZ*+txx!=9!yhnNvwio$750>!SNLOOHiLR_>= zt&ln9?ACD);rbTh2&$kH(M2an3U>K1#LdPIcxHz)8eFq*mtnXXel7ho4~)s=Ev!=3 z8PF)%LTA3Rtre_b!f$#T@((Iol1N(533_%fvoQI^F1o{l^jeeryB02Fu4 zUZ+Q26b0cM<{}HN4Bku}>J#Akh-qH_ zsP!&f(e28>%4=FahO&95O^-mMux~E;7CURrsgYPW zuE4zRqCwFQjEEqd{jBO0nbhNZm;o#5vm7Ab!J{+m;|=l|ZFjJtfHJ#eOAC6;uzxUx z&XH0zBM0+_W<*UQXRF4(6uSRA(4vwcLWXMT=<&6#{JIX?R&d6kWbwE6YqevAhDJ$( z#wli>)miD_K>2f=7O^ZeCKtm;P9d(#C@3(W^oOxH2( zSduGih1_Y(QKuMsSmb0-Gx<^R?g^dqLlF7vwBXEu+9(azb>yZ@{x}9rGsT zw)8+0F~-mM)#}&jAK$mM5t{AIou2!`m-!B@p|F{WG%&7M{8>N%`JuNktMVG=R7oe< zbOP(dlT2qs;RilCj+G1??EiU5Iw-CNDz+|%fI)OruO=@hU9&&REj^f%rY0PCP2SS;tUKX_92eN%?Dwk4fiKVYNI*6U;P>JIhypaA)*VUrCOK+2O@R0Y0x=-ujX_SJ* zDZx?c@t$b4;RA``fXxf1KN2>bD`d+c`2rusAw7LpRwIk|>pw4hLFni>4*AmvKsU{g z@E5$JnXD~BK}UKcr;zt$NVmGt#bJx%MMM@(jYF9R2`khOYT_NAY#WVN1swngu1 z<+`|wgf?kKyY7M;#Ydxy8zu4*I#mq+f^&#lb%fnu_g6w$4(GfBEG4LH8uRmSYfC9H)OdrJ% z7jC?I)s{tK67YoQG|T@SoQ@N!U~Ufc88!t6vgrWiRIP$ICGSmsP% zhJJas0{B=L{ZWtAO1Hz^`kqh1CNGgz4`R6&ab991|(#&bCNGHs7tF7&a_ zSY$_!oibZm)zR!~L9~Mb=uL6)z+xJYNgRQII`9{16EUmH;IS{2mK>cwpKx{9NYLiI za=;mCy^AQr)shmm76d3}+HcF%7f9x~uzsY?e2hhWEkKN{S0GMMMv-;me%8gu{Ytz6 z!xZxAGhDOJfozGr622%72txz~2aD(}oSzGEKIYwvxc0^kdJAxCg9Ek;^l3ejoLTo} zV)tRm)vACJVT(cw>$2;v!489J*Z^3Fjx)#T1b)zs7Al>wLw4AySEI6IWj~ZA@^uwzH|})Mrp>{7jS{8eAHNd$p{`ddp25iI+)!_a6zm5=t_BF zk1#>-1(<>*Sd^~Fbi)gyaV^N3;pNrjrv_Pj)GV!S&NMacV~!Fm2jSgaH`GGi$RoBe zO%&ExE*+|3W^cR`PFIWDNE_kp_c9W`hB=~FI>hsjqX~*#$7a`TO9D^X(+#GGh&puy zO*MB-f!HW2Oh^=lYZv>|rUJk4jS_eLS|D>}iQ}gf;qpv)ZY}slx+j00$<094>qZIc zRa_RHPfS{Rc$9s$3mZfh<3e@Sqe!-`I;5AsLlgFVJ_>PMH_rn5U$1aGy&n?F46hKE zvRD_tAso#?bqg_G0)CjbY{;!wm|Lsqno+UXTv>|bT##;j%-h=mG&x$d!yfRX# z`TjhK{Zl_9#%T8cYgYZwbmsq@RsYBNP^SN!llkASTQ-*ec6H~v?NQtR&!mN(dx^~o zQec1P1mf`l5up)*A@**-Q->-Jno@y8+O_?1JLMH=Zf2mN+sGp(k9B4^UghZG;AZ_K zM5uLL7oa-Ll!{-lcT zlx0% zZ9U&;1cc1$-#)sU&omO*4yK#I_jH91626XNYl$R`HL%mif|<}u->?U~HYRs_Qjw-Y0Z+X3i#CMcp<4{h^`~9mC9j3tO&YeVUyU)y~#xO!MtUG#9&O@HP@cE*Uo*4Ce|6!`kL*WZFnnu<-W)3`=ph zoE=?=u?S9mJE9zD>JX>3L%?Il0(n;XX7vhGfUavtQRgnC@9wj{F14+!wiPz2s@c|` z-M@MtyR9D|_>;(;|J5H;N6UJsuxekfiG5wyT7h*t32ieAbsIff%>}*qgKytVZ``M# zL8eTX?9{=t$$ zE%CR$;*p!ZjIH8;IX&AVCJ4&b5ddifTYUL%JyC(IZ0CW_9w6eYG0YmMfrJUd6EFvx(w&(RO+`mucIw13q4gdxj0&ghux(e_*vQ_l9M-P{+64MW) zU~hn7B*AF|h&!D%yA(w@fPsQSbCPv%bl~i9;3nnU_|7OouX0^C>JTjA6IEb=LVBFd zd28?LhNLg-`kSF-nnYrtp&Pmn3W;}t#XrgQa(;t8c3+&+chE^3`8b(4lL&nf;WZM? zzn4DmEM^=89qH-pTCr{XjQ6Ha{XtC|uWF94wDWA}hRGUF`37Gf#kGxYGW+FGxh-KO z$AATJ@$}$H#V0R9~4t>~G9@Y~EX~Z~rTF&oK7<4>w0BZs!3J=M& zJ>Q9v`Oid%zIvQ2V=q4gp+-s-YVXPM9qW5nl{p>dP^a&TF|3V%LBDl2bEMD)UQJ%X z@=d?l0F=%0kh(p0mg?v3?=Te_^A{Bh|;R($FS?H;X4eF>i7&JhCe-U zLu7_UYE|Ir7eo=RZ!Ed51FXT)XsNt?8&#{+6)whtfjWHb!nM37Qs=pwYyk*xkFW+) zm{{^|LR)M_+y8~6AQO2NL??dS6dF%yv`SEs*c~3%_no`GhukKQ1xC7+^bqG^x%8E> zXz1NB(f;cvb_WV}Df7&NquHm5%WznuE44)We8jppIIR#P+juk|KJ?YC{VX>-yEBUMmj0b# z!kF%Vr}MNhe)*)+Fo*}4Xme5 zh}JGA=pEA4*RedS6SATG^p>ID1T5wyDWLrsj)qURxEs5suD^JO;_aeh^%!ffsICi% z^BubXL%YenEh%)yoEj(p^)ge`(8UNL7&+&;$`%Z@%Q8{U1)Qj|o)A1xO>D-Pif^txeftuZM6aQL$A{-`Ya``Zos|I9I@%YAUj|P3ZJbKjw*lTJGFc;H;6;I5 zNyYIbliLcMA6SH(4_LHFAA^~Rslliu8U9v_WJv(gz6{e1$ix2Ng$fTZkjDToB3{}C zT`4dVOh^Y&43zgtRz&6vsF&YJyhn%al(1D{6NYpHVlHj$S=jPOALAFcHbd~&4Jpw8 zcf8q=7$2_uClZPb{Egr~crF_5388F?sk~}#bEzk0ELxuxB_jBziNVg)cvyvG@)|H4 zT+S;idt-+r%?#8bsX^mk?<0x=ZCY@T9UD4nndz2)RLvT)CQJg+)J?1%K-mVs?a{PF=6;%y10mN-9T zup@S{u9itWdh&5w)KHs@?HMv_l8sjnT|F`E;hPvqYVDpdJhXteeVjJP{8rApZ=@f5 zmpDv-$|3#wh7{S5|GVfpiX1p&9EjmJ`9}V(P}t%h`RW2Zknp|3{-we`N7!3nuXQG$ zXap<#JokIZ@}~p<#T)6x_-cM*Y%+cPsInoX)+8r*w47**T)=ZLgGjhOAls$uSdFPC zU$PzWlNeKH>EXIq7pCx7mQq$krengUXeja|>c zXlxc=#weignt%cdy!dLLzq}4^jUtq(`iReh)||Cu0#pH^Tvv;<^yb;nV!Wp9?31j! z?u1eUBXqh82C1!k)Vc)k7e%+I91TPGy0`uZW~j_FmdB_n><@&EhbN}C>aZ0VT=DJS zcO4gQloMn*mr~GIr6tXT0l`UmUW~-?ciXVkSyd+yCB1b24u@kgeg;46D;wKU1J)oH zd0z=gk4EGkGqq~nJ?Uh&=1k92p$7cFn@< zlNf>^qO6DenP-ZGMWv|umQ(F~b=p`#!KA!fe? zg{AntT_8{5)DH1X(F+m;+LuU1`q;06E(=dAroa=f#cxm?HuoPPKmQYCkpx#eg=8&R zYI-K&^p86PsYv`MjO5N@_aaLu6NL8Mb zy0G`?!i)St;;@6|V>T7derCNhvVt`gFme5hju;*HCRan50B7*GjcsLnI9($AbfoV@ zZQZ9Ln2=>O^&U$4$hxB$IMNh1fom9%;w<`o=L1rz0)3Aqgu8t@d6N;6eGxw27UzMD zn$hZC$IzSGJrC>$IOr4ss%NaGk00XEB&^>UqcTtn`@J2vViHA&;`Lu45{0T57z8t! zGA|zbgq9O5QJ&3DVxl0M>_P$Ek+>y_p3BO4<|Z5{>auC^Z@4~2=I4UqQf+a1Fu~4~q@aJu z8pp?_|K5|O7RqjBMu{IUX^g%ExYmL04i7%w#ne#2A%4t%2<_SO(Rx8z@u6yXTnA^X z(5lTDx%op zt0jn53Bton-9W&MI~)qF8&Eo?55mB1&4&Xqa*uLW6#^wtK12Xn)lYn7QwAZ$A_}F6 z)7aT!7z;d%wcfj;C24QqheHOAy%nhdRXjA2e1(F@!b#>)E5eRjaM8^CQdf+@(ZxP% zB0WkEdP!{}Dk5=v5zV%p@;J*wBnK%$ZZi+yk=}(t^cZ=_?mmQ2nT>@)y)LSp>mUYc zoyUvS!98gArtv1NB2fDYQu4hxFhy7(3kt`j#3H@_;ZMrK`>dz=F&C%-9L{1_kbD%T zI3|-kcPU72P$S8;V(FJRa|K5jhY%!~SP#kSE>efIlimvn_y)upQ?MG*3v-IwED#vsqEm8=>NhP2q-N^{jQ( z)A@BsMk&IAu$;|Sh7kiCb54QjhVyxw$%oSpOe>{x8G&zQZRluV*4cK)U|2@}b6M~b z41}rW696G3>Brvb0U|`dBFNq}O_^G`*{=7I$^+G&5|(b@sPi+M*WkEdq*(4-bw(Q6 z;>rQ=8pbad_Tq`N8)N`9kr`uvI8Z@okV0YbH<)St!-EKtjAn-8J*GetG*x>G$N2fm zF0x!!n#MfXNs`2-mYkTtC-MVt*hxvM+l#Cq=kvEkL0=^Mn)=Inh=pRa3gn1LP$)CgMVB7JK1OeFUk~-aaGaje1Ri9UCu2;Md~% z{YdFe&R<0&gyJ>pj0{xi^>jvR2Q*8c!a&`kzZju}rvCl2TB`Sh1Hkc^hV@?q_>?d50o(*S;u)l6>-#Ck<=bm^@=G1DL-lVTpS{-d4d&FH@x#58A7H(Fw)nAw_(*1{NbG{$2P^o>Y8 zC*1U+)s-cUYjUFj?#sfo5z;l8En6wpA*}V3mpd!TEE~sJGs|fyHd!A?G~yg`&L@dw z77l7@sQc+?3MZrQ>FBSZQypZZx(t9Zx1}8$ zFv{kPd_K3O^PMS)B}sHGB*z^R`pZ3M$BbOsLA2@UN78^=?`qjm;CIxYGaL{zaAvZK zLS{a3N{7u7^>|%&3-6+TPqR<&w^41+k?r=DvG#j%xeT{hq00}pH$v1{rdwx-;_t~5 z_;hZfJL!uSnBc}DAo5t2p)2%IzLE=~hm0)JD|?TIqqupuT3yZbVqfvhSE3uO*rK4z zBb#~fxB0>!fgZHN`Dl?FzxjOrp!#`r&pJo`-nUz@{fv%|YQ{p2l8AXw-vSIjE_~(e zk3O8~M)ODDMNn!2d3aub{-kH66(ym^%OG0vNoITDmJPtjw{qpz=+^)aF-Qa6XnB!e zHfTB3W7&h2D(3WpJ{cUG@?}s*KRMWodSY9WYLgXBFg0VoO$lGySXp>bnhTGnJ(qx} zzyymq=p*;JohxDup=YQ$8+_*I$J`vx98v|vA{P169}P78qUwx3uEo3%P)mS_ndKkTjX9eMWA}wmmo&en$8&;#BJ*#W zu0lJrzGY?r5}bdys=o?N2K(=d>wHMR#d-@YiS!i18;C$}St1OBWg%dh2+T0_4jCc6 zn+n!WMru!7O;ye$K?UsQyJF(Q;^12ljSFr8N})0a`fcX?vp|-E^6DOf334AP!PIT9 zZ?uFQYRIoQZL~|Y?J3w?wV+q%qS|EoGPpG!L81HU-MpauNSrNzcq?e2Ld3Zp5#M8~ z1b722E2DwyLa!=;Dtb4H=S~*)OU_gn=ct^gs}!Yhu3Kzj+P*#YY{v09f7XLOJLdiE zE9_6_z>>r^hC~i3QXVXi7uQ6)9zmI$!z*rKWUuohLMvFCO`0z=@qw82#gz-$!XA&R zq2x*%w==6Tq7+D&BuZ1bINgsUS5cj#G(;~) zS9DI+g%x0Kt1Gt7GpK^COWq|7=HNLVI<-n8Ze;J)_8?}*awY$G&S6oZ_T-rHFYL^x z6xS-wuT)QckZl0z@c`BMs}7sbQ?V&AHEUS?h^L}DOD8NI+&86DP2f&@=n+W93 z1gS2}(qtJ(xQJ16Pp-r7cV{qUaMcMcevx&@p%7xtM0euVSKCn-IA`u3j+w4w zLQZEw;TYv42~GmVFT*w97L0j=?gkeC(V}RA2lBS8#BfG9oOgsdjE}r_C3EtDCu+!< z5bc|Yyb*}Yuvnbo+Fogn0!7&ZE4hH zdLn-+_|w@)bJ12iW#L`nfOiVxX9*998P}$5Tj4>U7!g3T+xmdV^4n_U1P4OS;jZPr zi8E$Ed>&&nJ15u=Tb!4>#1q?gR5j%zSzoJa%!K5Sbc-nygf*hbkzvXj=jJ)-ciUu< zgwBc8Z$UB@<8;BA>a71YQ1TB1Nq@^e0Z;6pS`j39Z^2{MU~DvFJ<^iy>6Fcwo7HE$ znvx~rmx*GgJ8Mib^8Kp@5GlM9d~Kl663(}fvuo$_tPH!_plX0TiIz?iEa1Ib$Hn(C z``jlN68}BP&=q2LnGUcKXNR>Bg5(-2>KpvBCU7&RCC{&2^pF>4_1v!4hs!4)p5=@; z#CO0lQBo5y#=uZvD-tGLutKQ~&o|D{Y3BD2&2`NiD6F!xQK?H@=FEK29NTL95--Rt zW}WE-fC&&rCWm?whmS%5-+=A#|FmxKDLbY5u~x-Va;xx7LMgI{9IS7Es+VvC#c~@v znxHKPeRQ|lziH>78Zn7c%8>%RR4>9tY=NGK=maBd8bDmAMZ*^P}u^RN)Bp*xA&qS%Q6*J`KTGII6NQpW+b< z-x0^;&BAB-nCaT22&GV%x;Nr(~?&JeQf@yK0d_AZQ~dAL)9z%wB}m$W#;Lu+ zuF`9t_#`$NG+R@xf7N<{NZpRSo%O$1X1p?bX-#Wb2>%>8n)#GtfPtf68AAs1(eyj? z4@bdaQw!zAw*1xADT2x*0{O9MS-F{(%5Q1chRY^cpgtb{uYED}7>Ee2o_z`kpdzSf zBCVuDfq51^9uS4r+^*S6KN3b~IA%ohSZDY4dd9j(FsDZ#?+w-tmXXFioeoLBbd3R3 z%EKn^NyXt%5(r+-MG4;L;9`a)ifLso-GEt0+7Y+%jo@ENOV(BLR+vI&KKB7O%hi|ciQ!6%{`)s+=IXps3f%i#PeW|X!19*1X-_>U8xz(z;! zFvrMfMkQH`IcN&6|F*EQETp3Xtyw{&&o_3qFaV1I>qH0HM@!2oq%rkiB8o67_nT?& z`)Vk0a+t@0Ec8YS%R5(p+8JlK{XcTqRdd-X!ez*^qHfBurEGPj^OY)5-Y<}#Y0Dk& zfA&y91X8u<_fc_rjAn_m5OUySD7h35b*MaBugj;Y!%a>{I*KN^n!7(zo_|BH4Ad{XZHpO5(C#y5S4~6reDuO zr(OVy43J?D=-UzvkO3vu`*_(4#cVPa7nGJGG!iQ`J=7L?661kN(v~C!zo{%o$T*W{=Lj6@m7~tG zRQb9%0wvXm?lePp-dF{aiR-2WYwSiZNOyME-><_bdqH#{EC7PgKV>Kr6L(oDqzX0c zQf}3_NW||caiQQwCxV?C(LEk=lNZ#FBl+WqJ{Fs0OEfXvWroCf_?T0zS%4M3b!s_; z%RRNBLS@8nPL~XrrR5UGqMi-gm1?o4V+iD0LrChl|EVS#R3*tHtA>Pbj$Pi_;6dPI zPDBFTDG(!RLCd3qd=#}<&$mlXGzXEa|1Sfg4yxSwjHMx;((w!XP2dbbr0jUh|5bSn z^VbJS7uAL97*#VhT@E||_9e-dHLvXE9@PnJ78Lt(RS%Ev3q>Cwl)-TIzr<(e|IEw& zKZMWB|JlO)fAE=+^}p99m8>Qc_irqyn{Dn_Kul)NwaSiy!-bc19UurK1MG#K30$+l z#zv|@t!U%WFIP<^nfi6gAP8*ZBX7)b*{c@!_u=8~ZZtO$A5s@K4o;SeRfEucRJZ~3{u9uhB`e2(iB1ooTIw-A| zhu0f+wvZ#Xq7{$Tq5|-@nn-;l8>8QAUq?JviIgxKKh{De;O$fk_1q=< zrH4q?TxAFIS)Iwk$~sn`S*m$;rgkPdrQ~E7OdZnwVjN7TdS|83zZ;jbY>d0bE@YnC z;?WWsAu?PS8yWYM4n1FhpSEFpj+U27{t5wlb6|(e)*Kl3tc5XC&mZR0A@Rf6Ys8fU zryY8XTx6`fs7^Zrbe+VWX{uoT*{YB{ae|jMe|-xsiMcbNDi|Jc0#}SaODxn8Lc->s znrv^_Ql`-*9=M|Cm=oKpo;V7^M9gbf&UaSJH%#9vLJy=Bs6+6U#s@p?zypa4FXV3}6vh_`pUDT_j zmC9J@B1bF}aG*ehXEP1i9yteizov$a2I9tI+De5Y<@ zWpd&CYzr#mn-P(DKnMqZO>62stnQH#scMUPaJ*NpEYA&S8|!YKry~KhA{y1lmj2msXj>Dk77jrmm&ClYBa2(=dbrGug4i`m)NAoH75>psyt{O{_kQ8ZNyphlvI!d`-D^VO~n(SWA zIZcvi=2R3KVTWpS#aY8~R##36mWLE@E5t00K(_~RS!(5_lsO-gt%o?2G zQ4x(yA z67~F&>FAUP!%8IgJv(A5Do2V)l$zyUMKcV8y>pqi2?>IgM@iN9TEY#d_b&_x(2dq&klLm+d5x5|UOv~9cC9RyPj9zNQs1ydBJH?^3s3```n0G0WLOV^vZ=qTm zLuTE-KVh=n_HZe>R1OE}FoCb~S(TEIw#rCZ4lV2Fge6x|wsCV4tynngY2I{ZE2<@2 ztux6Xb12gO%%&r!IK`atNv^2hjCq+vjJ6A_^tiH}w2dy%p;8u1Hek)0V^wz#7~t- zLcg~@et2Ao+ri2X#NtR@y?_4c8r@f)Y{r?&M=?T{1DM;EXUK44B`Fpx%wngGd?5$q z|D4{&!1A;a-AD8kQ5q>Y_JN@*?BbkN1H--24zQPeE{%OLVZw>^R5HJ7&e2ZGFz+9hAvoswHU;DL1_U zMw1#FqmgQNN-MjQ@tSbW7?)R(934Mg{{$2YM*OVfaaj0Q02&R3jgWjiDyvgqFAv-+ zNQYp@AH)v~&a+$G%lFf`8Si1BbX|m^gDwqB)>Z87`ZJZKp{11_A{oj<3)sX0lU#i8 zB=_*o$G=gY!XKM~%bUnjJI#+O#N#VyJLu-#vPv&v388Qc;$F^>j3=s z3wjv7JFb7hvlvBQB2Ww{o5je71Kv39w1(`G6U@GXyZiuJAJeme{J87mayrykhM)9k zT#B!PvnP=K?)=jEK4S0X)oy{)w#WVKD9t~6fXKst?xwpKGbCjj=OzZ&W+ud<;lG3r zw5zk_ru!{Q$Z_DG1Y+Bogtn1b@i}H4-EEkU;&*RM<-2FIO&V^EE0I&JS+?I1i#omF zRlM~N>f={iObJT4;$Mq0h!q$fVHS75l5CaS%U)-LszfY#DKBlo*N~^u&AJy!J~XBM zs=3G3VfO!2X02r96MxxQUasDJ5W|*&23j;b`WUF!Hi|;Q?p~d1}f1`6=7aM2n&$J~RagY&c{Ygl;MpaJZ^1~beCk!@Z zz-Y}WkUQX2Ii2O^PSH#|#!04uA5aeL&47>}q%U*T=ZawtGJpjORBy_?~@ClY(5u;&iU4-oobvha*4_mjbm$3%1 zE1O-*j`?xSs6?aGhqYeuG?{G}7Wl9!qQK+Lxe);wf6;b8oP~ZJBn}^_Y`69&Qp0%8 zJq4i+c4^aZK|u&LQssr(V-1pYKY&qlL;MSrW>-dpLhu84JUf@u`R1MA2oZJEV78j& zAFRd%BUT`j=!GU68ieEw-vTglAf_*^zdz(Ymcf=QSL=LWWrARbL@&A=?~xOjcQcP~ zQS#5B7In?3JP-RO_Y!NUsMcR+cASb8gt;=26!kP<&gv0$`EpCrTCdi0qzZYR#aali z|uhidZ}LT(Q@PIiHv_o>>rX;E{BuNTJxaa%N&{T|QlGb~GV$ zO<@tvEgRO~%)wL{b&u>W4Z{-wnUw;AJx-e2cKKbL6GmY+KBEmYlydKyv!b&&8bGpZ z22_lXmy3x$H20IPe>lqHHTgJ<{93EH5Aydb)P2P;m)1tzZwOs=uf8D?vgc)Svf0Sx zVXCy2H;H-v4D)Q3_yos*MA{W{dLpZLY_3)B>CG3UO1tZ{bGY7UG*-y~+^$9FWHqcj zoQB5Z3?w88k*49o4PPbe#*79!Q&c^cf!*?x(nbj0{SE&32hIflwhj?fRs$!PiXR$E z$*aBI?Ns@{ltrxRg%<`X3{{kSU78nJe=DKip&ZVgS<+mBBPL6QD^SEoU|r}9ZWn=?r9Yb_5n?Hy{rb!t;tb|ZeUtUKor_r)}PBO~!$#a(mzQ*h^P7!Y({P*{n(J#cO2J{;G@ zQWEJ~4@)7ihLop9WC<{3m<`9Lya7{PpfnK!8&lUoTvf9%NZ$=z2Wvy3#hc%LwC1cS zzg0?Zy^j>aqE#U7B}ylI!!e0OC;(cg>rn(#gpkgD3_#E68z!LQTwrntKlr7LI6Z-f zAD0JlQ5@MeUjcfkM{K3kKlr5DL%uTz$ot&Sy4M1S$kC>ZuN))Dwq*8-qk0jVeHT8~7E zt|+3atjRiS`x5`Mh+XK*T~7#@W{MH8`@=Q#Z!&+w}%t{L<%;2fKMB*E|)Ct;LYPBi_K zFC6#JL$7XrpcnwOwFKq=8WjKinD2id6#ut_x>^42)&3{=WnyCguY%vznAKs#zYZGD z1|XZ8Z)Bi9jW{qwf-tzoK`ept_?jzJA@ZVVZJVIH`^c)WQcCV(U}G4uj+i!7A7;Ir zzPxw9!-u1LoUXsR6`}9w9S>OG83(79h{(I2_Px60KSufd`k=na@oLvpd;2_o=l-Nr z9gQ@M^}Sr!JZ`0MK3pF%i0j|*K{DQWv0HjuZk}IqDXyB-UH9zUaKGPPN(;0A=bdYI zA(sXl_M5z-j-UTh0%H|*U}s8yu5 ze12ysB}eqBWaLUslQ_J1_oExn3@;mlyldT?ecs-#1FL0RRoBY-mFL9F>CxsL-cdn1 zD*G#1CP!IF=eU@2bDdn_SKVj2FVrVB<~40=$JCAZ&t0W&JpFV) z3Wy|0XmFcKX~OJ?I{=}xLk<)_k3(%ML+Y6CqN9Y8Nf_j9J#aqGXnCdd*SZhsiX12xC6c1y=Yo+&OmbD zV}u1Zm`rGn5}~}`EFRJs+hzi3lckfB(EQ1NH2L$s&X-X{!eC19Q*HghL=fHL!ES9=7m)OGNT56{CfnNs#<$;uy517s&3p; z?^!t}Jnubu0Q1tWkC85HFrAc7QHDM=82bDfipBOTh=p6 z+K7DmkS(_@j&meZT!d6IH+|x*FN`IC8C{;Tx17`_o(wfL)vRtoJNtyHVSD~kG5=gh zULrnsw?x)@qdjVj4-#>E2L%9?ZYwuBJmZx8%s%d!LqwjjO90Sh(?-5ZM8R|F9{_B!3WGP!V6X0te)%wWz^O1Yd9*{+))T z>Fm-;aEiHpgka7KEu%onvlcHxglS!CP|IBfn1S^gC7g0Xr8*e}%*`2<2po|zWnJV&6^VhBo1dFnO4eKd6w>z5LU2p%qvlWjLGeNBgNt~XTuzkbFXdQ&bMt-tCQ|U~pvLi^>63xrrDkP-?H<=@Q^Y)pt%m|#QCzOkmC$iR$NaRs zGT zTxD2n#s=ypVuKOt`G~T;-rNk1zYeS6f8Q5q^=ff8m@tHnTbvVULJd=Jhv$L_;fVD= z2g?#lf_ePDQ1{@9xtrFdhWB196huc$cy}4n2=L~?FmJB|oK0K`^Jxey3^bRYasI*8 zQ<)9sUN;E>s3EU3z(o!iaCvVfQ%4BP*{mf?sT@z1IGa`Fv3a=&0@?4WD_d|I@N2JXtz4+O#yFq~o(k zva%sDU*wY6@`}x5NsVOti{?!8?i-ADGJSxe&jGRQL}{e zYFTv>G`e#Oj7jjfxOgfnZsjWVLi-33Z4tU{stly+tYPKE;U5D*P*fl}_lobWGKO!e z{zFv5iJwCLvyTiQ%CD2n+O$+rDM+i$_!7tkUZKk^G!TBnEpY@SaHr*X?r8+y=Vu6n z3~04?$V^=_ua5-KbiT#HWwxATlixD)$uNEY67n zuna>^xg@_rEo9^7KH?=O47IV8s;zr*ud>7~eWU%E)P&23-tZFzdwK&BtSPQvgGFUj z^2bo0q$`I(TtYL`JOv$9@1fR7)pQV$;18=huX#wOwY7M>N2hzPdOe2&1x>j@@4X=1!lZ1a@dd(t3^ z^Irt`#yY0`evmR5wgam{sGIEMciN;iX>*tSX42y~0c=Zed3m!R!t z5htcET`^%=ol_800T-(VjG2|(XE4^Su^BME^S%tG_h#yOuZ9Opv=b9$jdeiMJr=CB zR9hb3s4>f}ERx`b(|KZ_UjIlY3z9zXE^j1r{ybgb=N1}m_Z$&J>U0BSpNc1?G*+Z!9t{Lx!dZJ!bgbjclgO#ydK%ponggfjB_&zb4@&Zh}o zX65Y4`wcL%bF4l|0@91^d)*&Q=NWwj;IlDU7qmcRO_rOot4SO|Kj#sU6y2_e<8{i( zkNh@7T`$1Z6_IOEC6wu;CPt+ZEd^5Oh{g6o7TKmUdQsTWQ@jp1>EJh;o#AY5_P43g zMEDBlhMtnIku{ggSy^LDpl-r13SsTk2Nal!H_rij#FKSLwc2VGKTYgVyxPFYkE4r1 z_`5u1TRHK^xh%bsRqi`1yrjiVvt=0oGU~_+LI&R&e!jgA4Z-^XY!JOm{cE)KKSdz? zA0v4G+sKRc?+(#_A}IJr4saUv2f_UmzVb66XN+e-wYPUMBQ zk07>_hbkaV=0(m&={8_`RahX%Z{va9?UL{H7hVQe>7eV7++!wB#M|Rk$Lp(~jbE2n zi%)FR=YFt*Jc@`%!^*ci*F(Rz){f7Eq^XZdzt6q{kJ}PUw_mpgPrL7;qz*fN?y(a) z!!5;36N&lR%zAEnf;cY+%gVDyqH?AfcZFUapW7!ZW`2I=CEKmH%XH&Kk?Y$<6*0}1 z8J}0Z{hRE&61m5mkEf;_Eie1Dk@L(u_O&5uMIZ2)-y+1OmIz|%o%f$OmSxYPJEJB} zC4bq3DCC&lX0{MLeS=$bzF)IX@Gxd`;oEy;D_>f*ZMzsF$Zmz9W8K3;`^!#rXQ&MiNJGut(rS0I zf+V;MwA&2+>h+RbY*G_TkRI%%XvdouljC0Hl^lo}*SP+8cnA`w7w}lIZydz+u~JZ! zv~k_%sxU=Sn`R}>I4Haa*qf_270*pw1JZ%z2DKY!@13c7ZFY6yEQ78*d^^#rLj*bX zG$xj07^*vw91F85-J1WEgj?zTR}NW1$w;@MC#LNZ_|Lexojc@L2pXfl8UhS31wNtL zr2&r@C?AEqIiO!#zKMYET0eG6ZO(N(Uk6U%@yv~*dntwsuu-4}%+-iQdh=Bb&K7;d z;8Kh73TW0K8Lo`1;8-9jvT7y2I}RNfn^OSW!4`6Y_LCQVK5k@uj4Xj?Bu9XvPL>fs z@0FC99N#=otMA=Ian*lp>BPvm+)jm->nK0vNA>m#W}Dz_lNS$LL5v1ph>Y)lU8`bXQR zIE}j*Aaz2SW00t6nrskj8bNs=5IJE1VDZSzI}EZ3n+Mx`F7X7c@N$4g1sHj03 zoO3Sp>)Bo|vpeHZ={=+QuCmKt1q6fIf}~z%(`a=c+z_X&3Y#F5VPhz4u|bjNrsbd} zY0UzpIa&^xIxYNgkGPrVdq5~5o={5{iUOLyC@HS8P@H@#<#!*pVpneFoJB#P_%4aa z&egaj(hm3{ew5clu9Ml~0Kyc++|K;Y(ipVP@t_mOJ$26y+?maD)K^BhZXyrJt_AVk z?e|@}BDZHYA??fq=zxv|j@SBv{7RI*9f9s_4yze68?h%n%IC50Dja_xc;t$g^((I$ z5Q<0I12CB^Ts>kEICpcgMUE79T z3AJO=>$y2;ZrBt|5dY&wcGsh4?ezBKIuf0_^eGk7D=sqfop)Um+^tI_195R zEYiA!LdmBg1W-5FrD{IxD_u4+u==rst{^6+D9&^_{^UuD0+JHHsi~EhB~6TpelWU( z95&l&Z?qa3|J;Nh1(U*#}c0$TpfQHY3g*v(rI*&vTqxtFC= zcQ(nsu9K261Q|CJrfERP9+yBX%hL4?!6p`&U%W~3&{#cBdroYTKVdig4Y6$m&Un2& zBJIdr0b~=QEs@tUQwUCMLMe|Y?7YDo4=yZ%m$KtHAgF7(a|krLYH+ovCy|PASET%R z%a4kX$%f=pvvWFED*APUh#gDO)-+4agy?9wmHUifM@*%onY-wYMQ%t{SLulU-}cJQ z*gr6xAn6aZ%=@wOiGW_%BRLo>DKOk7sjrZ6_7Z37``LxP(cqdtZ&%%)l+&d#zYPaSfaN)KL4uS$tr zU_BwBmPV&Lt;;%o4v9qvMr{mm`Wqh|qfOQ;x|Td5uth z(fJLJ8i5$Xm&cdg@rh z4T5@sLM4p3#|>qb_CW&F%#J&prIVe-rrb&qEDM+gR(PkdQ;wyI&KqyNYAmoXcFhKp zL0CkE0&C+C#If)t8i(N(fL}q*-SfXDr-Ea0rG?Ab0l~tutn)_L{z0>8Ip39AN({UY zt2l?b!^%dEw1sl#3h)qy(hzqX@**Z*Ij5+(V_889jT$}K0w^up8ncAf;-)c-+dSa# zLuEo9B8u{5CraB3$xPw`Ud2jYYN4ZZ*0+WBd!?@nw$O2wSEN=X$ifJmPE(dR{%dne z6Ozx#SpEgPqsOb^xW-JP#H$F_$LHXfX^8;=Sg#w&#&;un&=uoXr#=1}f*xp+FJf!S zdIfgMo%8g%P8Dj#eidMKIcG`$aV= zqtrqr2;EL=q581XH`0&+4befGfd#NQ+#{dHzGNuKS~ z6J-GkD=2sN9H{Sg)kG%Wt0|ZHf^gB)mTN<$4ih(Ez$OCnfJR$Ho`e z41)xOL$2}WgN@s}^dY!DWr`>0*mpK7G_d)7U(C_-ryAxpJsr&ujNWj2*t>IB7cW^E_ilB7}vMbdj~+k9F_rJJnK~zQOI5T ziqrlzeFqlq=JlNoK0td zz{wMZ5#Ps{Is%z)Ry~PyXA=AUt!}W*ltH{pR<$%Gep*Q{-<3NRNBMemK8eRn z1*5BPwjN^-*fXq_cF}Sxq2UJFn67v&l;TpSQe9%m)@HuQHdR_jS*m&D^I+RA*{(q~*ToTjqqI!R8H(R3soK~U zU!hilqc`8a{lzs;vAciXTD(k7jHFHRMq%BG-csw z3Y?i9-p8=F9T$EGEoujbUTAs<6}PR5mLBfR?Z1K&icCcl_X5Lmyup{|a$> zRg;v);ULM`+=taafPPdKbvIzjX6*WdV`8iUPG+w8reC8mvJ@8}AmPWCg{b<^6X--Z zVvAj*kpO($W!?Bd&P)kyv1#r{(ap>J(p3sECPMI(aE&{z(YrE1)16wg0Dn;kPdSJ~ z$QtGkDL3>9Oc>E>4m|A-%t#J7Kg%2?uo6{y9N%mCW)K+cL)Q@GhCRnbJBt`HUc!7X z1;ua|&$aGC8uz1wu$pFzb$k{|Wg7+o-a?8+B%ljp1Nf&Y=M?q&(j}2%I4vI5t&!;w zDqsR{KRbPhB}iU*8@1N@TrIyuh+N4d-0NHM?77TxrG*j44NpwAjCZ@-C~_gSzSXlz za!92JTKXX7Xvx{psHYYs_+YhliYL3iWpF}$x(RaWy(Mdnb5~>D%g<(*WQ`;5QPJF5 z0&Pzt4bknd;H{Gk-2w55xGG9yGo>2W%o!}Od-n2`nForU7D*dicn7FuDB?u`^K=+b z)C7BW+@SA{0fzur9Fp4=^|(te@+%%NhanIqz0lB!Q6626E2Ki(qat9XA0`$Zzx&mm zYSMTe!%6ab(+cRLnazH|Sm(D%M>rRZD>X|PuSvQME^5y99I5Tn8{L0!sy9)9_g}*q zJ50h-kx2|>gz7pr0kxD)0VE;G^cOv<^+WA<;{u4cRVLN_k_>gCpjA`#5z$gisw?z@ z*rPZ=fZHFGSJ@$qOHs$2md%61F9i@xm(ij*Uzw%HIdTizVXT2*DW9ak>*g=Z%cWAI z?3l6ER*^-`T8kC=Gr-;b1rCfZWu zsXhc(PT@i-7b#<*&|9wP7SRoiC!E9J$TO%B!%V2{dV|s{=g1c&zc*%L5iToVoS;|g znushQDDGFqy~`Kms#@BD`A#2OpZ;2P64AVt5i`$OjBLZ8v*bt^2?Ign z<#l8rm=8%}7H7eF`4vLcfHyZ+(b9{rg5Im31jx{FGymqsu&Z>7+ncPMSCMm4SJi~z&&#Qo8k zrkycjX#$poibxGq!QYdn?PvzppyGCasZ`|XdArf^^kROMl*1{29OHa0@>k+3HBY;IGu_!mrGKXdTydNFTMUxxI&b1{zqB zgijEUDeE8hHsKwxCf{%n zt6M}gh}rG-$z~f%XLRc1=g~o*#Zd{qDB;TlHej+YlgJ&9U1an?-+&GDJ2haqKIT63 z;%}jpkgLaeL{FlZ&&HrcOT}PbS#UZJ{CxE3%5ZEF2m_{pPn(V6W!66YuyQi3N9zif zjIpS9GY40XkLXA{dIKKtUy-o(YzQatu>HMvX}ot4w90iB&P9t4r7YaSFj!qphR zR$i-%V(h2dMba^0?l2YAooHn7)VD$1$z-n5*W?Cxt>HQ+#ZdKW({|{M^1!~`+pBs_ z0Ab#5eh8@%&>y*n*Qb;Op(n%&qn zziYLP6~vdc-&GGdv7YPdTMd5MkaGKH+mXDbv*l6!B`4kZ`jL+Sa^s=yCHQ5-rB*B- zB#BMMG-ECRiElX6Xk+s&z#J3B~zy$R@B?A1f zV`NL8lsC&x{+~?Ryhc$XYOXP7!|vlXZ0$8Ejk3>W1+bJypaUxbq!Y-^#M2BOWH)uS zv^J-0q%q|7M&?^8cHDj4^xWAv3?N&_QGixyK8y&I;!G?LPn71%tn2RJ)5b4K(*alM zid4+_lkA{au^pGa4-m!Uq71p?d`AMy%mxX|cx34p1_^1dHKoq>EwGG0N{{Jng*vBG zB=Bp^=(`a7iWiZPNg&yAj&wxN2<@K^y1d__u@yKfcq@Z~BcD z>8eI&5@?gz(AixGE$x>;%#ZWS=8WJu@8nf@_w0`J;*veL8t>~`0#M5M?)X*t5Prlh zKAL9r6JiU5 zdqc$?_!Xn)z%3LmRMl|KB|GUM282^tB#j4^Dxq;+bg@YpQxdcl#eBChCUALd14=(6 zNSdYl#cfpUM={CV^wU*f{Oh@}mz7aO`jl{!@pE|WdQyU#+#fS`k5GUN=j>%V1e+DB8>VnVuattylhn7ia4G%H zq1{olP}=h${ndDxBE@=Aqpp~fLakT8(Z_1UA9)ATncJ;toX$tQK&E!or7k_qL2&BK_B z)UZK#p1DT5db(KEv_z4#xLbxek-+*|h{#H#FBEEAAJp_X?GsEFRF~64wMTuyBB!f= zumgk|gKJ1bXx$*4-J&hqB}77A0qaJ>*Y^Uo7+jXVuy=0^Z3I*&O{1r2=i_Z{1?-}> zkTE9J?4-W=UVZku{W{!Lo%iP8kZplA?w6JS2T*q`=g~nP>~zq`CTX`wFOk2kWqz)v ze8mxB*VU{;Nv-kn;~iy^o%vV~B|m|W;27XszFsIE*Sh}&-A`CTsG7bjs;B}2C~Sqo zWeN6RA5>Y&s@+s9o8vy1n*Cyi)>mM^-#S^RgQVNFFwLbSJoBKm1M0O%|+{0&k#i-Jm)@PsgdfqH$s99oj9Qi zs=EAi!JpBIx+jfPq>FMgs=s6{oy2L+XR4y3TJL3pHwiZ`Q?TBIE-unDbW^o_b1uoR zKcNk`VK0r$0ENUN!6~qH7dpD*7Lo@ryg5X9fZm6lBNTB%`bcUV&8Xzs{k|DEFX#Fb zAeRi}{a+*O|D1A{Uc$z}%tVkt=a0|M&eoZLhv!d?k${!;D}jsRpE?u4pJD#0G86oJ zE8~CkAu|!D(lrzWr|8#6{4A?t+toF(4ehD)Nf3s&iks*&c>9%GF^h8c_MM zL@rC70sA=lTgXvh_yde{t9O&Y@Aik-CHrp=9+(BP$FrxC8(_|u<)Amu%F2kDM%&qg z;sN9;^@Szt<>tW$V?vGW6~lD216sBN1Un;W&rj@Tp$}l!S+?akz*X4Uv|zk#RCIo8R2HvtIb%A9qmhIR(9o#JVr2GTEs$U#(HjVyrAgwck17MtLs{@j*qB&qf=AKO46bqSeiWBk?FkZ&`DL{0rU#ftR@AO9 zjKpUf;>%B1xMznn2DrUw|*@9jF_bb^W<&Nz4Pm<7(-r%z<{uLcLMWvGcoYmJos+Nl6O{ z`W-MWMY1m63z8Ryik)gIwrx!nuiSSIHxz^1zK;-N03G5SY{hBIX~9WZ1g8rMF??|H z*yYMUUp)9YMMa0!K05u2v=~3L%kH2y2Vzw@^a`YQQ*bhc&b@BrT4HOn?l9}r? zS2Fz6B^?X^GO1X1@lUlr3{blLoc$Ck{a;hEHB-N0@}oFyGc@Awtt5stxW;Y4P0NCr z_sA>SD;>7nnZ{*~`K{1sJw^civ|j6b;jB;g*M62ct`238m7v#I5zQ(^!AWUDwdEw? z$x8C!NvFQMS=HBXR(aq3GA%-|eiOid|MV2M#1nmmQs0s`&v}_gXdTk_jPst2ilyw_ zbA5RX;I?vaaG$S>XpV>hn%{jx!P>BxVd$rFG{TKSSzj80L{+;?v*~8w1fL`3d z+SJ+3*5qrbe^&qM_>(*9pABCpGE4|4giTBhT&$fbzdA%6O&nZIY>hk!*ciSp1#Hc% zO$b>2>|QF_+c}H6*cv%o*x3@$E84l(8vk90zl8hWsi6NM#J@kppAiHIObx7^{s<%| z|L;|CWdizt6X5UTvHd+VuopM6Ff;$h z)t|fm*&}LgVCF=?@^#Oj?+Xgrxf5v7vN5s}(6W3T$Y*C_` znSg?xf!WCDPr>|E7#jR382=Q8e~LdHoPV{ke$@<&|Fp4x6-JDI{R>}GidtBkFcYx- z+1~zAiU0B6{;TbOPxRM~&L)lo^j{C@Y$9y(N5(HP{%z}-k%{FG{hgAFq4Qra#h+PZ z6#B<_PR@=d1~#xz;^EGTUeZct7=y1(cUfGg3TW_xQ-hSU3M*kI)=W&HM48`Vbc$8M zbww#r%ZkM7sHCky$8=~=&CjhZ+D1hHui4@Wxk8;XFuA3hIq3ab(;8dnCVaquWt``k zYBfI(WzuhwPCdSD@X&98IB)_0oCKm$j)YSem3f-TrWiH}Y7s0RP~6rl*DsA&Q6i5R z8~~c~rH1b?CJ=~H!9eEmp9H-~@ZxKlb{8LCDPN)2TyJ_LBf|jrjW+5to!y7EDL@-r zu?`eP*Q*yLRHWTk*TO zTkdfpMz3+~_O%C4{;sJHmYjz*=g%b%ILay5EPz92MmPj^5Qw|Q#h#=!e1ENarRgpQ zVb)|tln=>sb-e`|LSR6Tb2!yAjoE)iNbHeuZq&;0M%TUHhY*E;&BHJNY{cWHgJ1_l z>^1l{-r>w%{NI3Lw&gVJql2vlm>mkfZM#eUl#s-#wF}v~$`e1xDuCw@||1Ke%>W zQOmWRPm32=N(8UiImX@`x1`Z9Xj8_8EZwh z^{_CCV;Zqtm(5q{oCHEBrcaDKuj^)vRy%rQkJ;L1%4p_uY^XFloa7v;M_H5&nC~F_ z)2KTYKH@35Z+H4L=jlwZb+$}ML-p~Omk*trT$){iT-@5NX%E_|pk3gns+d$!Q%%k` zvJ!Dxws)t$Qk0t~f~@$|Vuq%dro)3`p1mGv15jirT6R~d;8v9;t0Rhdf{MC`yByz6*H;y4Fh+vl)e z;y^)(wEO3L0uWRE)<%c%>?UEWGc^FsERZeEPAYIX<2AAM#Y!%0ZaJ~Ai7neFN3>4i ziN5WTvxmM|SV&!p1`2Fw=$E<2adB???HW2@d0x$^k~*)fzMz(x8EHBCm^y!f{1$?# zNrg4G0#aNZ@qve^@K$+>XWDFbBNdtozArA@JMomG>-Ma0vS2=R#Q8EdhTCErxs~O1 zNkm0xa(Xg;6_uP@l!sa1kMYP@Mv}$re!2mFnELDc@cs;_rp!B`kGn?Ih_)dj0soeBFxC|_*E8q$S z1YyxlCIiSM7Ur!dJxPHEh4F+UrOcUk@r&UW-gD=N7&9b?C4olrrU8&Pkw=uVI9WKq zR8GZgAabW4tfK4IYU(f=7g;?n#VQnZ)mK7>{DGG{FKWCC$qylpf!heT@*ye|&(omU zt^0Ijkmo~y5Z?%zf2p$B{!VuC|G#b#mlu}!zjX`KA6@ca(k)C3j4bqD1;?L)^Z(Ep zf1Hs2r_T7hWAgv0GnhI4()a&wm0@VCZ(yizY@FnJe-B}QJ@-Hhw|i`=!U*W+aH)hdzSg zma(z%{vImBZMX~_GZO;~pdmCtGs|?tocMw=Lt`V0LYQ)-^3}N1f|C9Chyul^^b`f9 zDupDiEG?Ck%REugH*kw%(TFXP8gVRBBX?u;ny4sg!;f=s zsLew>v$c1rkmuB?$F_o@&ylBw+jsMq$=htV&gs>Pm`#r$dWdgNIgd{5r5;M2{dQ=S zqiT$mI8rGN-!$mfD}$kKD1-tCu{oYC-rAdhV}<5_cba z_piSi#C@J8ZZpl)h`kKWbd=h(y_B?^w5+V8w8VtK!S(jna*v(-O5{FuIkV4ShmJSN zWj?)3xH{H=Vn2DZQrmQ$^l~QqZas&$>v#I^IQ@V8o#td9 zpk-oYB;aIc|1y^tSpRM={oi)dfATK>vBdt(#`(AHfWO%|f7<@5HV(^|_4c0|Io2u` z>dJ?h?;CEa2%^mb>3}$KF6uwWp(vmzNElsW`2=8HRU-|`(!|%qgDpvjXfZ^pC^XSg zq7@3u3Ysm6d%{BWt=AMXe?(-68eI&VCp;ED|30+%?Cw0wdh|XFe$9eUL%{?HdOML3 zi=Sm1Q020-w1_VpKSlzHDRHl6oN~EZkJI|vE`KmY*>3j*YC1aMDrP+)ZeWKlu7y*_me_(TIN=}^Ji zKtNhk?2S-hdyJS~NDff5Et;&*scj_f@7VU( zT_Ijq2zWj4)8OBT3UGWBf(0-lu%i0Sql9>i3jk@;!igEtZyji2hDJDGON2)C!+?nfk5 zmoOvPkfpzH?hR)yL6qex0O3Af!wf<;JH&Zbm#`vc?GjJIOyDV0O33~yNj@)4lh-L(9{ZoaQ=)ukiX2g^HY2iFHET;u)a68g( zJQreEz>g(oUv(BMf=N*<=!tfUmhb}_?IEWdkLvx`D_-%hi4si$U0EYQ_JS zYaaj#{$6{HIfDhk9$%8l#QmJpuW{7#XXN#yWeFS&2(%2wtMR*?;!4>rcn@{+!S2tI zx5C14*&XRUfgwn+4~6U47$)v;=J?QLXRxod@9_*=3aKga1~aJrs7Ja~E8W2YGbbta2*6yT;OAa*^h)(dOP21GxmAaxHQ6RCNuhKm4Lc09=A68r1zz#ec&C zmxA>&f+0I#WH@jfY(dLQ?bpMx^|_h{zh5EZgeFeIWh+yrmdSSo`1Q0XljA)>nj8fJ zGX_~2QzVD+qb7VWWQc`2iB*=9xiVW4nZF}Mo!#6*rYefGM{O@lvF-h~O_x0Lc!i?j zM+lma)ub#6sVqW9RbV|Hnk)|=t?aN`y7kaQXkO@e>JNPd>J7QL4d)FEzr`4Kg+s~# z0PKJus*f^g1cl`Qa?s0N3#HoUxg<`y4CJ*IL!vh2K|lg*ku9+A6ZY0{t06z9qsB z`eMY8e1Z@)Kq4(fZMto)E@1MGr{cnldXHCr{Hq(XJqT@9MR8=qbpGtoIe)H!c}pra z0RIhlvL5;^MUcz@(iz%C5cNIWPCwT;;fF|ha!g7WX;rdqJYK4Vv5+zA4aGCbv#dx) zfi$Ojn~;a%^BVc!A!sgBu2dJdj~yHZ&h&Ze5&LhuoK4_Qfe*?Lx=*lA)lV&|q7&Bn zjqfACYM?>j#vsbzjUYS_(hylV9N+9^wm!P6yU7J2^3w94dlt6Zw}uFV318=)Pc-lG zT=Yu$ShyRV8WP zy9)D1tcg7u&&X(^KV2D46>E;U!DV$*R%_mUCp`tj;RWYRbUu2a336v zs)j;xk*>gOU)01eiHRi~f zE2e9?zEQsO)^O#QXjSW>bP*{RTl2hfM!9tIu?gQ!y}J}$CGdEv4-3rlUM|w<6o@3r zT#HEL#&0EmCNO(EhTtTk{q)^gXYM`eBVSo_D>~|hQOve*Bualx)Z;sl{ z8d`In=W%H-F8*w7xv28GP;;4lU$2>53M=ljJDe2%ENt9QjWy`G6Wa;C(D~WnyDREe z(sIo;gnn1M9AEl7)XxeZ7t`W#vyFK46N1*AjPa?or!+t}P$af)9fEDDQFP3i%p&Xv z>3Zw&4a7xOL$I)wu|#=h>6^Aooq={4tu1HC5PQ%~Hq%ceIYp>89<`Kct@41HB1$2$ z-fFXjA-LUIV{he0bjOXa)CQSTS?40GtP~rCLIib+NO+K_Tjpg~}jV-QU#5>wv`l(+eO~Z#AM3~G(H|>or zkv~@!T%Rqqob&92hrdHe>LW3TSc>bH1@CLy>*tG%Jx7a=C{pw544+II&i*gL-Z40r zw@=$$E4FPrxntY5ZQHhO+jg>IuNW)Iif!9|^Pk!Koo8mxp83*Wx~i|L?yByiuKu0J zi5nYx;1SQ`$eS8Z;3yF(%|Qw~V)Sic#wS25LpJzjT|syh1?d*I!?YYhZKfgtJeL~X zS`DXNImPNN1GIQ;G{YmwB435o7WgHH_K4BGF&gWqo;>Le65&TE-4;q`DhAH+vF9K8ugB59M7*3q^Yb>Nmnc72qSS zdi@nRR(pZp(#QuKq!t#&x&ppE*@1GLL!Nk=Hw=VQNv63|UjDqA92}!URz1Yixk;*{ zl{JWV2gdYu_^n7L>M9a09+V-+T889!*+0Do0`#J+JxEJ_gQ5;Z76NHt(*A&dq;4`l ztYDv1giTw4lnew#p%m~yp-f=>u`Dr&Hdl+C8pHu!ed$05HVJ7QJ6UIP8+13~?CtSHaV;(YL*ar0yf-8%=?^x$hpfDkym`Tp!^4GSe0;A_QOu*JE!+sFa;w-M*viy@QW04bO2+OISw zJ-{HB=eIoG>J_8OI!=@)lqzho~}MTM31}*?N=y3(h0G7Q~Y7`K-OCGx`Ra8op=t`r+Z{$xZ%vYj-lPD^rccVoBfK z+3DTcw~w;2pRl9umjauFrDENXv%G>%0}J@6!-U#W3am;^jiiZ-PzDr01&xh0@oTk4 z$SO8ulu@vvn!7?eF>1{y&3SOaXdo<8e?JzWY3=P5=-^B3hw$1KGod;ZXHn?7^`K^eQ;pULQ*H9!~ zDtcvzKF?9RYj@dO=w6}Yf`TV?s&BUn1A(_|r-6BT&-xZKhs@{T$Jnszsk)9}gAgH{ z?v;w(vBotAQ{7Hw!bCY*5X2XjgM>AMZgRGAI>q{V?l!tO{yKK7yE$nD4cFqSHibf- zYBf602eMQg?7Qu}lkv_@4g!|wgkw_^*2a#@xbWRh6m#iGwkWAJ!#0-t|xN)EPmSSAtlz}cd# z3a{_xcK@Qx%@X(dMjge7b*u24npVo{C@gLTygeWaI8e?#Q*cWs@4F=nOT}~=z^eCV zh8@fRIYZ>-)8L!0o>gLN-7HSO7W}+@nWntQ7Pj7uVlP~cmtsg}Z0GKLgMkZV9k{D% zzHN(|JB?mF*W~^ss;eawYxUaG&W3b)f_-^JRJe)C%@5Cq$=)P-97d|WjfzZsLiIul znyaRlrU&pY>}B?i>0w%fp3nz{bib#*van>|j}iqZ)U=7=%^%y5~Ym zN}E(ntMu?mcV@3iCOF{<%`_469i4+>AOo6n*PLXI0>gBzmtuv%2{kA=^jR+iW=9w- zUHK860g5hYl*#i-P0DH*Pd_z4FcX#{WYOh4i4riklJmpovvv)N-kx7S+f0V~(1)`w zgJkv8EI!nS}Y_F zDuv8cxNe-2Rt|z#4!dR9StiOh@w*FN7&<$Pp6REl<}@m;w=@3wrBHopXIt_tGTr;+ z{lI{72R%y-fzt6_l08wfs|!buE3`+snzNCoD7X|^`Q3Z*Ah$;4xilE&W^Q>vi#`~& zKK8i~O0{6EcqowqGuM@w8=AfNmcpt*J_&Ib#>{-Xtza``Mt7*oHK}_bdayt4w)K`l zQ0j$XHto#`YBjQQc2%*6z6j15T`cEr+{g%dSsB!xQdXGhTJIbDk_r~;@01Xms7kuM zWrYTuxfEv(C`e8Yrc0(!kRptva4B_>AqWf`4HQHKEUW}vkm42VtQrAOVMKJIz(!(Q zeQsc?nsDq)VnOx+hE27*%nT3M=?tb%&$7zP&WDYw4X-UXz+b4}uS%;--V(NRpG|@1 zh$n(uu0;o)5~*$Bf__9x{-{A!qAB-3?tXBaw~cf685dx1`{&xzqq_ZJ4@r0_!62vu z-i4jlg9}>1#*R<#4T!l;q&D*RvFsgEI5|KdCINfJciw(tP;JF|rvGT^IK3Mfiww-v z^w1Fxx@{i##jW1i8qXs35CXb7hiv`Z!bc~j%T%vLu3|U&SJ)#o-d7*Yo-EvMRdFBl zbB%V_G_F$Mc|;{REG7wTvF}g?eT>sJeB`F1f6UrJ-to+yh*LnQOWlMXGc%;hQQa}u z%VFuUzwTU^Gvv$7xxcfIZTzs(pryCZocGI$9#{t_)I{&MJC!wU&qBrBu&jIF<+Quo z?q&0lnA{d3Q)uNRj7c4HQkEfK3v6rx@g7o~;y4Quf1S(sqvOwt$0dt2;pyPjN(Xji z)+2SCAxGSvXv$(2J7?2!tcVPqaR6WI@Gekj>mPZ**5g9kI%nW!p9S`Rv8u8#<=iNnhtq%PyI zi*080Sa~@XyxedDOgA(*Y@(BV=b&Y0ZbAOLc1vcbS5O)jVsm$MkW5Sv9b91SW#q^D z{y(^ZKX5Mb5mQpzVBz_*N+6B+D(2~kpsXV>DQ9C!jj>hWkV}-pYVaa3g`*MvAh17v z3Jufw+KI;#DYvkhl3!ib&3ZuJl`t&4jG1sxb~@psK{c+rO@mRI3oyoNWB1Oc!qoPM zgE8AFbA*#g?zB1(!7^d4M4|+ZrvFgf7X9Q$D5!&d<|PiAbhCZ^6QGvdhVkH7F}$f( zh$Lrr&1yvb$X~;p%TswS6sL%3&!9RdWSsW9Q)gy&{|KcGDJ?HkS`&l0e_5~>Ed@G; zc4$)7gnw|4yfLMi`Zc_q5>W5ojsS<4UcC(MWdzNQF1Bq?K$PNnRUA!tyUDft?tRINE!#D`mCM{7F@ zF|noVaA%g&at-YE=rlx7=P2J2!V}C~(CcIQQn&PM-yMG}QeXqZ5|S*m3#oU9;BJ2! zXz&)?wI7JR8eotpaN3anV*_Qjb%l~CTA8n!=hxPpUGv^v-k_k1u6g99=pcGh(6r<5 z0}`wjj($6&ZjL^OfsR~dak@D#5}F!OQYh|xlkf@d2?j#>{PAhMH}J{Ccq=wfVBQYl zB{a~mIaAAlu$f?&IV)dg&ho$}2Ay+8bvTrj+A-1j=2g8_uR{bqwf1j)*yFhj^x;i2 zDC_qWkce4&hh#at`IZ7s>d~7*DJPFMsoq87LDZD(Y9ef8x==z!CC#GbDxNNuTE-~Z z88rN<3{c}C(utsmOU*6s3>tThlE9E%f;cvbJijoGNWD;Of4B{ym$IzoPQ^HZ<}vAv z=ypFeR07m48U{}WD0u7Z3pEh1-)e8fNYc7(V2OXLIu@JMO>rS?%_Y>8l-eNP^-Sh% zl~wTKaF^#?tZ~{fGPB-0FsZNM?Vvv2o)b=VZW2)d(%c^S*lby>R!QUsie@MlN8%1s zbj-aKSZk!@>lKWyv2_tVqdS;oQ4QvM!%gbR36paacfaRuus$8mQ$mP1p*C3t#A90| z7-mq>EI7i?!Fz77wLPRRAW3sZ3PB9k#MoQA`LDa-UxHW`Say)3GnkBg_uKgSVZ%un z;cRq84igaC3FC=Mp0h4N#b_o<l z(uhzh(wOrVp-2OupW^#L%TdrVq)x(Mszpqjty6W<_JK5|3-B-6==Ka7sg;Z){TH%~ zYa#=+Z!p3r!4CI8?{P&BaULezp8DHC(VS)K@PjXa4_(4vLe|Q88p=ZXbPLBQk#;jr z_LrZNg>_4&=YB&qbnFkNI6AQmN!0yL1x=xleY2g`8?keZgmXgQO)5ezLRtotl-05v zvECk(FeJ1K>I#dtDfWnBB}&d{lx<#;SwBEOI;VWq82N0Kcz&!zMMmGBR}XSn8zUbf z=f~c}nIbQolCWGg>{;809sT~5!9fY`5_oQ|y!0euK4`RDo5xEJfjS5h1l_o|eb6-< zNUnH6yV_OjZKkU%f`aW-P12AY7N^%oq7Ew6i#2e_8arP13-UPJotOA4Lje16#EoXW%`PYm;qnH#CFv4S}@)nThi7(SG^(Y&%j1r^@fl2L1Cl0#rZ;-DB z9Yn_y#(q1zfXJUtEU&)dO?U_`e#29Wcbs425H)qFQ*dz7-y4T~_;LeV+oVr52E#$E zOiz^{=1hYUir{QZI<;LfX5i94dp7^L-3nXpD-^I(G4*iAr`SYx0K#c1*iF zw8!1RE0U&3T)JH1x@0r>`^O^2JTMqyS(uY5knjuZ26k!NyLkX6plD`%`Wq)2#~ZoP z)cFw<5QHJI6ttAiL}aKX3tcQVn2pRP+oxAnb3tv$zly({O`oQ7yn39b-FmK`-lnhi z`ZYI!Z3y$wAwl_t7O*U_V3?QjZrz;Y7=01K@CRtO(GkGU!0G;GgsynDNURl;ULh*H zG&V{rvqnZ%MqwOd@`6%ulpR!*g`<^&#-CFGi zYI-@tgZ#06G7(zGPe3d0>jioB(j4$UtW2yyo@A+TpxpqM@+_luu{MLdujn;=N5_Qj z8O;-iWC}Q- z7N@1m)d2H>``vT<^3Tx5Y&Et|smC_Sw}-H)Cga>byWyUJwslV=CYw~PXkBa&{ZjSN zH72WL+M_uVqJL5LrQ`gr4M4@#b9a1w%^02Md$7m)gUC3c**xH@vZISWjW%8?SuBI5 zViRrbg240O5Q=MDv8ZBoR63gV$;ByFsg!AJ?n^_aqaJg#mG0aX^hxOv5EIb-to|RNT_Urt(WgtFDAmz9|stW znX5I$Q=3MohMLtSx1zNb@?q+iMA<(O%$JYxF3)Yw4Mo@H2RZI_t_f?YJrg@Mv{XHX zkenz~50#Z`#vFeLE>kpd1krY)G2KC{Ra$o*!c1-5w#N zR*$?;>bfxH6SYy34n(nU9yJ`SkFNg`jp3>jXd8*}$CUrXEOmtL(oP?|jBlvd3Hnhi zB)PCY3W<_FvGnkd*g-%5X7EpJMiE+h92gJ>j3I|>P-cPzL$`@E83;hsoEQLUa}{A|YSIU|*+GsE-ZAd;7LuFqi_5*Rx2s zk8hnX?h3Ex4cGCrE_qy`#wuU#!4;;-6z{8AP%)Q~mMUQ)UQN>o5)g1yUN z6Dyi6g&%J$){q#_>fJ^A#&2t)Dgsv)J))c#iGqo{hUTR?$!Tn3qNf%=@3R@eZQ8BhpvC$D9g)7x;JlEJgnH+Bf$@p# z*8i%pZg>B6*w?D0szAD&W z?=+>B70p^F5v{Qftublavm@te)tRz7(3a%Os=<)aQktRO=84G7z`=C;~MLDoBB!f%miaFHR4=|x;rv8pagSW`4u z@(IksCp|+ntGOzvD|jl&@`kF(iKLvy=N(IK*WU+l7&$~A$3~j3why%u&gDZ}tQ)go z@UlodEMrdTx`piiI%ADl5LKybWGJL6Xe#gu z4{Gv`TiD}(pS~g5`Kd1OGG!3U6k|4g67@R>Q>faB?lQZVZxJ``FUHgm37Xlk)2EYz zgVU$FX(0CrH0OBsa?a@MTV7OF)*$0dE+w839So~$-d;TDw>UZ_rnyY0|7{MLh_ z`g+s;Z}ZP1P&w%u!|WpE+>Eg&_gZ7Z1C73jra8txrd@@23^>Gp&( zUm}z=0_PwuRg$azd#&goX)3TDyg?&*A!e{o%pfF~pfWubIjAJ8`?402huq%24hHOVX2ToTGa$+)sq z(@HpGDqp2tn*N!bP4@HgUh{M&+Kp*+?ep5dqL@-#oz*&Nnuw2OwK{p-(Tc%_z<~lG z5k16zNW_P6kG~-z2rBX;K*Z%I%n5^{!75wf79i1DYFe3~=uDj7uTR1=y^$YRZtyO) zJ6+{)FnzgwI$b^Gd~uzCVx9~qWB;iMbwRPHEwk)YE+IQ*+OpKrPUBts`mbd z)9Kff(Ur8Am_NFM#?Fe&JmxZ62u+eU6Eo`7Wskod+f-HXeJOAhIf&@zl(Av!?P_Rl zP%ux0vAskituS`Ed3d)e|8_fFoZz9jR;+4q3118Ds~bvr>J)mF6bgIDW8~3FMI*0_ zpi+Z-SMzP(R1Ap9FZOyS{4pr$>Z*QJP>A(;p_j()w@5d_0s95X>YP4No1}yg6X&4! z9^LO$4Tuzdj;X^4-eX4^gyH%&#&Y5Jfy9h#c2IRKK3yEAAHOfFY{2jsMQkw-N54MR zXnwc5_;8swnJaB)KBF?XHPR}#uop1LiUQdI?x`FZ7xg@ zkX0*B9%>enaNhknHM`kk>ZBp!pn$r!YxB3U&VqgL+>;I^C^Jx=gypf&r2gkM?&d_6 zo6y{d0zA%xy|4}ef^8N%Ye0gP7r3ob=?f*pTC8C7G|P^1PkdEDgDwu4_CD8{uL)Q4q`Joxi_ap zxg|H!d00CIpUmM@x&n#C`&e^aMa-`a!RW4OY{Gbi#B$TZGTnAQfn2rI@W$j)8sgw3Kq%}<)ecchaYME)T9eNe~vnMWFTjWP0`gCt+ zx*!Kc_UsFO`QSWS%sOQ)Kgg|=oqWtj21Qi7lT;`t@Pm`wd-v;a1>@43ldx!@hK$@k zhqSP`3v!s9XS|}gNxngD+8*|q9ZE2zky_g+CP9-m#eBE3xhcyk0wI%2t>F;~_cl}q zZQ&wKr5Vz;1ma|K$iq%+FJjh@=3E31u;Ts3s_u~OdTIx><=++#N5z^*23J&ILRy@Z z9Ap$yF#dYj3q8WCZ9J^H zECrYZ3JPH1MQMG21=|_X#JLP!yes?#7URKDKwliVrjSDKR$7&akK=U67{Xem+{g+^7)RN*qk|R@Hj~{SzJblWX-I|p%P(M`gA*Y+PDh!Ny{jnnA|NhHj^R=CuQF3$#LCxWiWCvFEn}csW4^Y=}w{L zno~hlJ!3byw?+IBN0M?yag;VPk}@=3S0}NKG+FIq_k^FoAMWdg)9vn&bR7LW@Tv9U zofgwJ^h&9{O;l!f$m>kc3DQ%9W`*54+1r3H@v8m@wVWJOkm+sPLgszuwN+08e!hK7M=Iw`H zdfjb)X)O?si)Ay8)C8~Cx86vfcX3gHMGJ=9YvP?cic$BS5CaXtbZbulrEAm}0@iYHpxQ`K@`;mORYYeR-{De*KKSECgxxiN&R6UL%mR4L3 zFrWQl3ZL+*%+Q*tel7?%688>Qd>;B60o8=Bc-YdXL$xf)-aa=28Qym_UycrF?w+;K zO(e5o7^C}gy3#Hl?@}B}T8(~$nFh3>S?^(2GtN9&i)S@vJoB&9r!{8Ci{?F#gNW$J z>45Wm7Tgq{UolB1V7Zpn{Bh<5GB@ITKgsA(g%LupBe~po9j1E{8@ND z?6YK8w0Bs5AAg1qYGs78{#`$12eQbig8jHUt;#rrwu!udQ<+NN& zt)2om0c9;AJ)K<88YlQ_!bAr^TPEOH*SKK2UhC413m`l)$oZq)!97z z4P6;!e!Bl9;iIS&^XDi!e;`5aG}*>(LJTgC5G}LWa`4xIZXm-`2(D%l`tKtFIV=c# z-l3oKK~6K3OF1^ECx`e15OA9~JJN--XIg#Hg>0D*w%hr$Aystk5Zp6tp`XIM zQaZ1^a&V&FhO8asIYn6@L4rcen^?rYlfpr+_>I{HIG3ZwH_$e9w z{KSzrfp_5UhMQx)2hQR8rd;ROpF=yL2EjJcv||M*q+$4JfmSPa0tqIp|-D=|AzUN{k=wRsm+i1EwV zj_$Nt1aZVle_#RjtTTY_{7`qcr&K{n#N3~HioJ(iA-jfHM(K#xp1?zR&F2Z)}iM`;=7S@(eL0i}D&OFM(kJRRp)VD>-%1xJ^g^+@RJNU%0t#(4~ z&KT$7dgq&f?^opKUqzyvNrMPd9AQEiqKz#Z-oi-vT_J47gWk=$r&P0yBgtY3{aCLUjFQvsyO zZVv!^=c^-`&4TCMxsG>RCq1crN2lX?GZWC`RiKT@(f1!2>(`pOdhzU>1d*L$G_nXu zwY&#MwXG_Aaue%W$wG*to}&=(|@6lc>kE(#9A%K zu)wJOaQ;nCD_8qy7g$mmB6HP@(^+Spg!oHAXH1fY9Sprkg{p8D_2KgU?V+bGOxj{` zyRovW@M?uz?T8_+hX5zsweFasvv&OhL5_^Ku!Z>|f-CWjIJ zxbFD8&odX7$fym4V5e{+)I!NPBnOfq1#iJ5nQShMuShaig3p-51;gx8w*EmtrCsGC zE<8O1+(l$~b41?rZ;X$orq>3a1LUI^325Olyh2VlP7$!G2k3K+m7phc)yeB9wp=3` zZPcvx@N5b+vPemze|jL@ca$RopO}jTeUrG|sFs<+#+T_*&YkvC9j|O^`vPr8CG8e-A=|+YWYg=l=B6l4m@1r2rjM%OanNN>0qBv@4CO8*Z0RL zpYX9_*}HAxWUCB^T&c8DDP;&XN2h73`MjTVmlVn~5y%=f4Eo;6D__*+$IWV-dzz2j zb1J*j{4Y`QUrFY>W#%ZEA&0I-3eT`CCD@{aMCokMrNk3>r>`zgmF=umaCI~F37K^J z$>awlDZ{wYGveGBEyq?#RBmX}r!xB*oUQ}v7+xobMk(HuSaIPCt*L+0ttVYpbiRO4 z=hanC`41^iiixm@`XQCO5+kd#3xU@Mw{pg~WYN$>qM9nY;`b@Uc<0KG;W;)Qr&KS}0?g6fron)#E0!BbC<=<(6gzd~seN?t&k zf6%&f{xnsD5`r$%(uWy#`K4Ux$%W%GY;{gUVfaYK-E;QrcRj`zKyN!l9)#+2&tH6x zKUG{p2GSuY>g|Zj>)w{`8PLaGA&Wf5E>TFBDHd!%TlDqTaoMj?H#V%1S3`**_EgZn|D1qweUOz8qk%w`3Q^S4x)Fhe2A8f&U}ByEMLcv zzh|Ff**>T_w7J_)_24}1K=8)C?4xn((T?8o?&O^!My)QO!h)D4ksgsj*Vb~DnU<~D z?w@u>d*^acbQ9}}#_PKR?gr7Sy&ZxdRl_+F_Vu9o(IAs-z&{7gfME)4~E1NiiD;?yn4ZURP1oO_c%y*9u~eLxfWA|+k!1conr(AX6igOY`+*B zPmsdV1cE(*=cUGP1l@~ehX|8H*V z#wKeO?w%qgM4m*4VKQ5R9&G_XYbr+0*Y-r~>R{lorfmhC5j?Kt!*Uzd7MG10EPXp! z?lkw~?@RpN4qpZ&MkJ>dilZsqskghQpgsWESD57M%1yS69GJ5pfhTSg>#EtL9Qr;WJg>MYZ_0`=o@A8tV}-s`_-}^W`9UQYt$107 z>SROFW6_;OVTrr3uC zp7=3P+#(_(p;jw82M3--C0J#|R_ZfVBm#|mOpC&$)aZednVggn(9~%yYhFm7=WG-Y zQ#Lw8-q~b#`=sfeFtpeofi1ixElSa)Wd%v_BSvCau8AfATdjzT#r_hGnhhV5HbZa+06pe z+PZblo;Y%7USuYf$+38?=&LEo@IAp2qiI}lcc#@fsoJMDW&(SJn%VEsnvxCdSh}={ z2fr!bWe5vXU>Z=>H1!Olrm0XPdb|)jI7QDEnm{rtPNHcr41!^mz|>s2LX{0s`;UCF z>2^Re3zG3in#?~@B>JYjDRPVpcy#)DdP$?<6C&DlR!?zvy7;w(9F0qzN#4SientA# z?PsiEn7n4^m~o57EnU6(U%)Lag>uk(N@9p46;<|k%DWH7rS_ukcoPTIb_qw?y*JIZ7i^Z=WdIE#_dv_ z^JxB9kT(0)p3|SxquO{oyH}SiQnoQyrCX^4gz7f#zix8v81=%x@xCO#JsXOB zsSLscV0Z4bM3wDre?A9x8}~nl6n?F=KVPwB=Yi{0p>{D|{qBMY6dx>xkac*qN?>qB zdCzENzV&aWAu27Ah;2TwCkFl~{DK}JcqjVrV}z{#DS7ul#|YV2|FH}Fhj@YQ-x93< zuX=&@JH`2Z`rqvfjI4|d|K=k27X z3y=rcSlGHa0i5g&j7$KI08@ZDzzHAgd(0=NQ<0oDK;fZKnG z-2P)7`md4O|7;@qA0xMn%>Q<${ufO{@^^w!Ne!!quzlj$94AIii*Bmha91%nP?LJP zT)1I39J^2i#Dav79@Ow>NWP6a6a+<^fPH^4Cjk`%6h#&a72WSw>8dv8Q^unG0L-f8 z4)1T@nW=2Jjo2Wfi`qrWDO;vfA|w3> z_m_N#LrO_F7J-LkSIf3gk?NLF0fQIKC!`sV@ve6%A)W)tQq092MhZhl9tpB!!+4td z;qK<)K}&z#Tr!ers1zcps0_mQ^K(A<#R1Hxi$Nuw0t9mp`F?C*cgP%HAgdgCQC6F4 z;equ{M2rF}efte+V0VSvw6>Efa(N3ER)Nl{8$9TXV?1{bm{I7Kd{=V;-CEcCI>9WX z+6R{1cvrQZvVUzP@lZ%B0ym~q43`g;s@?CAHdfcNz2C1KfH_M zL0hcZKm`D=+c{MhM~1O?E%=sFWcKFdq3O~b#f{L)W+t+y2AighB*X1*;9(WX5y|fa zp_MrP%;d@B!A7dPiuFzKr(CvA9d5;~!+2`Bf5lR#4*wv+>_gT(QK$!NN~jCM);f!? z0Lsl`hDDgvMBQ&2lDpRKhjvU;)<uwow>t>9gmIEt8Ovv6Eo6mYmL9-l!Gb z_adT8xh{7d_gUJqMF(pLbqvPCr>!V`)(5Nd@@#fGIpMQ`Lpr@nUl^o2!R_uPPX!>M z{nH{bcPUyYv~l$cxG`}(`3FPjW~AZwoNk+1Gn_Ic?jvfU!8_WhM|k0O23_upw`pHp zx>#+U{$jap)djt+Wx=WDDPFF&crE4fOwv(RzYDLT)>?kSO;GY)!DZy-D5XzePK8Zh zhtHTAJwWDRv>iViJ?ObA^X*$*zr?WdA(_OH#4I~A;2K+N8Y`=!u(@c!#}k~KzKopA zuVnQe=FK9aDJf_(G;JjJ@Z<h|Y8?%@mJpv-|de zV1l~=!mAIIVpxT7oty(f6$V-%Ph4Ye^~UdJPZIA7N>C$s0MAp|t;^U*z;1x4$oWaRQ2)$SzsP334+xn1C!hN&bhn`&`s%PXx^<|k!l|ks z5*E3CY#R@leIHFPZz^rX+Wj{978gg^+)|l?esvzlsC%ASD&7c5%XAzRA(^^qN-8kA zPNPdG{P4W;Vu^mK?Yt3%_0vNuoVShMP94g||IzrODd*$TG2cR~9)U0a%x+Kew;oGb zk$z7crr*aPJQr_c{oYeaywGgI;%M*mkf#k#cAmta!#Qjf1$zzdIHMBB< zdz2s(Er;?Pb&L@X@P(iSA*NXa(^-hFK?qH}n87^u<~(H_NOTQ|U}q%QvOiSH!ln^q z=y=PIiU@($Bp`}HfB5`>O~XQ59^@U_kC6Onn}Oj8*;xqt;%?;E`&}QK)UeLta&|JS zhY9c=b~O1mHvYKd)ZsYRT<@yCiY$B7aqK`g38pMfRbjukx2vb7sx|Y7a34<3^La5h z|Be@lT>B~$i!3dpBR2QQUZMNk^bqs8&I|j6Qk$g#;r@xloR9g1G$nL53@y%tlH<{( z!wT5tgb6aBU9#J-)$k83FhGPpyuFofUIk-%-64&ylgQ}Px&bD8$iCoqDXmQC)a;cG zNf(#Nf1EjhWq9vwyndWN*}#G5<`+VEp26fl$5%TBHgx}uD}A9d@aF}yK^}l{IiTzv zbo070;bKM&aA=)-ukO9352a%~LN&F&3u2=QKR|WqEl1L>{0uca#7HL!0ee5_xNW|b ze9FXHdoeO=ntB-Dcp+UIcg!fe{}g%MwfB}Vt4n9^CA=+3wUZ&`VqKeyz62AR%YUqV>MxL8;d_xx4j+HV+YR3mJ7)>PJSV^jIK32nlSYa@oD6z zpTh0BxuI=_V!>6YrzoBx`$~J)87(^p{djVUoP3a{-elb_U0Z`Bq>_9|VYQ1t$C1?p z)#^yirlLDyKo4Bvs=G7$q=)aE$?j#&9I@ceyka4u)JQm=ZE2{Ogv^xK#yp?vlhO6U z?`u)S#XX?=UN_WeWEk4WdPD147+jH_n=(u0Ex^iQ3Kd0VB;YL$4&eV{mqNadY^=TE_ZmQNQ{+ zy*R@F1-hF!<|ttX3P5y~(bFfiy`ENQ3$L}oJ#PLonFI0|sJx64F=W(L@Cq!8m>)gq;xovP#Hd?-e_@%=nLED*UxE-g|^;Rwh!HHsA>$V+=eO`#@#%0`YBO~^F&eU zQk_Jyt0Z^^asw6Tjz-)+5nOuGBsndS@RwIp=uG#?`XeBfkGZ?C2ySgwH!F(}PH@02 zeDC^*#o5v9K`%qV5(yT)A|Tm3c#bO(3cxg*`2{|eOLXzy^YDMRyZtXb%=V96?O%EL zA0++1JpAv3`tLmaZ?dp|VPVGaCOq1I4h-LN4FV1(*8hfuW&V|g|J@VweffVC#?Ue_ z(EYRIzX-|x1Bm}Ia{LDns{zbC?9EMV0d4>TXMin09bj+bXklmk&B-zVWq{$ov9iE7 zE!zWZEo@D`q1hea;9~df8vDnw29W!vXL-Q4U+(|I&LRM(Z%qGpvUYZ}`!|+W{ATHY zNLmRX_D$2Kb}o+p7paZxY-|hws^4gB{SDVP0O|jN*8jNe{wrGlXW!lbh}KN(^#44Q z{{^j$Rjiaz)Q~Pq+tU;ZG;}xzqGjVE^UDdIAp+C$cM(ydpV^6|e*E+>b{{36zg65v z{AmzQ1Pu&FL6q+$tO`T1O{~C{ULM}hAWCfcC;X~fHO{SZ1uQWsDaq;Uo=4^3K}|(( zp@dQiIkMCO8?bdi-R*5wy^e*3i`PNMEXy*%MX8L5%WCY5Vw_ALfJT-H;V8N-bMP?- zKPdwe^5RvTj?&xtWJ?&xEp?2u#%WN!zz#Lf45wmpzJ7Mj?$vsi_zd#x>oHbNG}K&n z4!H{irHlMMn}9g}j1rP#=+VWvnXN; zijkT83Q6YUsfFhhmRKSj@_%WREa6Jgq{>smHH}0Ul>Txz$RlkL9ZXRj|XE??e57RYbsr@}ORXw?wm6C}l5xl=o(WxL)FFO>rJ{gfD)G=0F zAC*B2mz@vPC%x51D!KZ{QE(nz?Uq~p=ApdN!gpOEDUE|Im=nV}HUrdcUpDdKpn{E% zf)wN58-~W5tSbxIyo#Tzp`;`E9cjLh7BJdjmbHcG3F_GmAPpfzLrnD_$RO!Pt?l*0 z1nn|Hp!-aM352P{3>6x_5Yh}gz8T?QVcfn5m-lmVJ3Pl;QxNz9=-{dFTAJ`W3CRm- zc)TQv3MZ zHu9`-H|-_|oK*g;p|p%(G5&BO#; zBX2cFHIKYoe(kNgM%aFgz5CD|rD=hp58N@d{R1@rk-7df@Dg~B4}xPZLp4IJ!-RvY zse%HQUUI5NI<3|(RtqKet0r#uTkVs`JwiQipM%8o+Afr`*MjwC?*&&2Wg|y&X&?|) zdVFq3c-En?eI(KdQV-(>cWiL#Iu;+-Vzt^!VTUSYC$-UVXaip`uWENGfQuc8ehld znBu2FU`=id zZXp6Zu)78@P1|W|-Yd)+@p_k31fT5}wNydQ*= z5855$ejPJ1t()NSO&H)dkS!|ieh#2*_Bxa`?zDQ_NraewnIX9v72r|X3U=iB(s)n% zqk*wg^sQ!vqwKnhi`m1eohHoUA!{Yne9x;A`=t96Eech_!Sv2+fu;>52Sz}VzS)ey zBlvZnXO2!+;|?ER-JnlDGH<4|0j2% zbtudccf|bh!XcEz5PTV*8UGO8+sj*@Bd)RG>;^(IKE@*zfUkTZ?$j(o*NH-r6i0|4 ziB@p*$!T7C&+z%U!VL#WL*cLX5?zvnS(88(XVM@wxu#q#IVGiSfJucTp&rB6^6Th` z4=0)%%JCA}a%a(0R*1rjJv7_z(*l?L8P^%A$H5tjVe$HN2D9VdXc0V24WkN1`Gg8K zzeia$NF?Zy5Y=9UU}lv&HL4XfyS$W|-5Z(B3{NBf9Gwb`q+4 z4>Jfe7xlwvjxx|UW~;flI_I!4JpJY~9rlG*>uQN!M>{Ju5c|lNqq|hb^FVOz<8U#% z8u|8g-RA{XL*=Okm|BV1082tbaNrUI(;=NPPaQ-h3@>7*O36y;G)YcW>*;xkDyTTh z8>lqQhOP!8fjrIB-0=G!?IOC;nPb)+NvCs1Al8bX7re9c%@?n(*JJj*<)p{cgk!6& zH8PULGKOf>gmN*YR~V|a{VNfPFLIS$u_5odl1rXIWl{ertkEb6>0V$?bV0augx;PN zwUdUIWF0kcKF8=6$q=!iftk^d@rX}lOaQ6%mtnehk=D{2;g_74k{fPx63o<7JZs+= zeF%edg!w$Zhw(YN__3H0{b-of=)l<4`a0}Kw7sS|s*1XWHLm4cJ_V7Pbn~#RvOiO> z?7n}*@G`A#vf!_0lxCPZs8(B${Gn?|;9fy4aAb+M>-iSp`e3DN6iRvtBGljzsPB0N zkA2b;rdWY5vu@3xOwRf1;d>mVB~#p82SPJ)vzGa2+S9q3h04L*SlU7>Er9&&kBHIV z;z$y0LIj8qP{0awj{Aww`b6k^U<&rXQame6%3Df@sXAIU?V_-~`fK0t4x^ghaLYGh zb3RvA@H03vuDrM2dS*QGjy!tBiqlzQ=v*9cdSJvxW5N>MWg#^sLzV%Warue z|EIk#kEina9&cYnq(UX`ThXGp`%+Zal6@%@)y2h)kZVheB2==Jw1||Ykga5EArTUa zgi@rG6qQP4Dc>{Cb&IR_@_GM0|NLIB&wah-ndiDW|@8=X2){z zkq0*=suu5Re>-;0ifQiw>}i*v1X2^Ez>qDXW9bIaaUoTe`loxbt3le^&c_|D9i z?Ar5luP|3zT2HmM(Chr1ZF04JCv5;e!~8A3W8(At&#@mXdQD?|W-1q$$=zwwB}A!D zk;>ffwXfYd>WN}*P-EpN(xQlSWtXcLE`GpX>i;=%+iJyI^37JqD?dmsB6*)WelgP9 zIJj`OZKZq)wZ?wD_xJ&;YEIF`y%Niww&s=ej}nbprnzWf^}@pb?P3$xnMjfA^M++78g7-c3Pn5q&4IEs*iECQ{p3J zS2cJ%?_gamWi4vA$v8tj-)csBoptAS`&v2bqHg`$&L%eg3Ua~n2TsqA>^|ADG)iM* z+O3YhsJ-uVe0D9E)l#!XIAU+b@)zCZhodrL9o^Z)XoOCB%ym3ct_p2O>-S+fFv!0$WcD&q)#&O+I{stZYlTnd{#Ek zX?*&qj^+9A(nS43y{j~4s@pg(C0&r)-~ModWwuKElgQZm2j12@n@a=V2?`SYR#)wq z$Tl_2dsO)0@N=25-*!$JBPqXMRcUwOhDo0+cb)LaxNZJ&-K%6*xy1_$=eqcxRx#V? zuuQV%Q)JQGrajA-x<)M7rmc0xDKqiV^}CDCT#;3X$yuD%FwF}$X|F#`k~UMXYU