diff --git a/tapeserver/castor/tape/tapeserver/CMakeLists.txt b/tapeserver/castor/tape/tapeserver/CMakeLists.txt index 580fdccd2f1f8f1ad9668ed246294dcdf3492db3..55f323c01c72375ddd6c903e6781592c296e1543 100644 --- a/tapeserver/castor/tape/tapeserver/CMakeLists.txt +++ b/tapeserver/castor/tape/tapeserver/CMakeLists.txt @@ -45,12 +45,3 @@ add_subdirectory(daemon) # .. and of course, the tests (last to use the variable definition) add_subdirectory(test) -########################################################################### -# documentation -########################################################################### -#TODO -#IF (NOT DEFINED PackageOnly) -# INCLUDE(${PROJECT_SOURCE_DIR}/cmake/UseLATEX.cmake) -# add_subdirectory(Documentation) -#ENDIF (NOT DEFINED PackageOnly) - diff --git a/tapeserver/castor/tape/tapeserver/documentation/AdministratorsManual.tex b/tapeserver/castor/tape/tapeserver/documentation/AdministratorsManual.tex deleted file mode 100644 index 7e1604fd72415292fdb7cf5b441b64ea8c6518cd..0000000000000000000000000000000000000000 --- a/tapeserver/castor/tape/tapeserver/documentation/AdministratorsManual.tex +++ /dev/null @@ -1,39 +0,0 @@ -% ------- -% Chapter -% ------- - -\chapter{Administrator's manual} -\section{User and capabilities} -Castor used to run as root, which is not the best safety policy. New version should be run by stage:st (even if still own by root), -because the first action will be to drop the root's privlegeves to move to stage:st -But accessing /dev/nst* for writing data requires to either be root (on SLC5) or to have the the capabilitie CAP\_SYS\_RAWIO set on. -Here the incriminated piece of code into the st driver : -\begin{table}[h] -\begin{lstlisting} - switch (cmd_in) { - case SCSI_IOCTL_GET_IDLUN: - case SCSI_IOCTL_GET_BUS_NUMBER: - break; - default: - if ((cmd_in == SG_IO || - cmd_in == SCSI_IOCTL_SEND_COMMAND || - cmd_in == CDROM_SEND_PACKET) && - !capable(CAP_SYS_RAWIO)) - i = -EPERM; - else - i = scsi_cmd_ioctl(STp->disk->queue, STp->disk, - file->f_mode, cmd_in, p); - if (i != -ENOTTY) - return i; - break; - } -\end{lstlisting} -\end{table} - -The cleanest way to do it seems to allowed the one we need on the main-binary and the acquired them in the forked process -\section{Pending questions} -\begin{itemize} -\item{}Is the option \verb#ST_BUFFER_WRITES# from \verb#castor.conf# still used? -\item{}Why does\verb#/etc/castor/TPCONFIG# have a tape density column? In order to ject incompatibel tapes from being mounted. -\end{itemize} - diff --git a/tapeserver/castor/tape/tapeserver/documentation/CMakeLists.txt b/tapeserver/castor/tape/tapeserver/documentation/CMakeLists.txt deleted file mode 100644 index 5605f65a6fd5fd8581f1603f8d96076e753b29bb..0000000000000000000000000000000000000000 --- a/tapeserver/castor/tape/tapeserver/documentation/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ -ADD_LATEX_DOCUMENT( -TapeServer.tex -INPUTS ProgrammersManual.tex AdministratorsManual.tex -IMAGE_DIRS images -NO_DEFAULT USE_INDEX MANGLE_TARGET_NAMES) - -INSTALL(FILES TapeServer.pdf -DESTINATION /usr/share/doc/tape-server/) diff --git a/tapeserver/castor/tape/tapeserver/documentation/ProgrammersManual.tex b/tapeserver/castor/tape/tapeserver/documentation/ProgrammersManual.tex deleted file mode 100644 index 5cf8b2077581ba3db9c23d288b0188549d9b86bf..0000000000000000000000000000000000000000 --- a/tapeserver/castor/tape/tapeserver/documentation/ProgrammersManual.tex +++ /dev/null @@ -1,1254 +0,0 @@ -\chapter*{Preface} -\addcontentsline{toc}{chapter}{Preface} - -The Tape server project is targeted at replacing the CAStor tape server with a new drop-{}in reimplementation. The reimplementation will replace a legacy implementation that is written in C. - -The reimplementation will be done using the latest tools available to us in the current Scientific Linux distribution. The language will be C++, to group concept and variables in self-contained -(and unit testable) objects. - -The interface to the mounting deamons might still change with repect to CAStor 2.1.14 as the mounting daemons are being reviewed in parallel. - -This documentation itself currently references the older tape server this project is intending to replace. The references will have to be removed as they become unnecessary. -Likewise, the layout of the document will be adapted. - -The tape drive primitives have now been developed, and the rest of the project's -plan is being laid out. - -% ------------------------------------------------------------------------------ -% Chapter: Developer's manual -% ------------------------------------------------------------------------------ - -\chapter{Developer's manual} - -% Section: Requirements -% ------------------------------------------------------------------------------ -\section{Requirements} - -\subsection{Targeted environment} - -CERN SLC5 and SLC6, 64bits. Although it should compile in theory, the 32 bits version is not tested. The unit test purposely returns an error when run on non-64 bits architecture. - -\subsection{Pre-existing requirements} - -The new tape server (software) will have to replace the software running on a tape server -(computer). A previous analysis describes the current software stack of the tape servers - \footnote{ \href{http://svn.cern.ch/guest/CASTOR/CASTOR2/trunk/castor/tape/doc/TapeBridge.pdf} - {http://svn.cern.ch/guest/CASTOR/CASTOR2/trunk/castor/tape/doc/TapeBridge.pdf}}. -This new tape server will retain the same external interfaces as the old tape server, replacing -the stack of daemons from the tape bridge down to the tape drive hardware. - -The tape server will interface with the Volume and Drive Queue Manager daemon (vdqmd), the Volume -manager daemon (vmgrd), the Castor User Privilege Validation daemon (cupvd) and tape gateway -daemon (tapegatewayd) for data transfer management and access control. - -It will connect to the CAStor disk servers to transfer the data itself, using one of the supported -protocols (current candidates are rfio, xroot and ceph) and it will use the services of the Remote -Media Changer daemon (rmcd) to mount and unmount tapes. - -\subsubsection{Tape session triggering} - -The tape server acts as a server only on one occasion, when it receives a client info request from the -VDQM. This call triggers a tape session, recall or migrate. The information received at that point -is only client system information and drive information (request ID, host, port, DGN, tape drive name and user information (user id, etc...)). - -The main thread of the tape server will then just forks (and maybe exec, to be decided (TODO)) a new -process, which will handle the session and quit. - -A new session starts with the tape server connecting with the client (it could be the tape gateway, or one of the command line commands of castor (currently packages in castor-tapebridge-client: readtp, writetp, -dumptp). In the case of the tape gateway, it can be either a read or a write session. - -The collaboration diagrams of the previous version of the tape server (with all its sub components) -can be found in dot format - \footnote{ \href{http://svn.cern.ch/guest/CASTOR/CASTOR2/trunk/castor/tape/doc/collaboration\_diagrams/} - {http://svn.cern.ch/guest/CASTOR/CASTOR2/trunk/castor/tape/doc/collaboration\_diagrams/}}. - -The new sequencing of a session start, simplified from the internal component communication is shown here: - -\begin{center} -\begin{sequencediagram} - \newthread{vm}{vmgrd} - \newthread{vd}{vdqmd} - \newthread{ts}{tapeserverd(main)} - \newinst{tsc}{tapeserverd(child)} - \newthread{gw}{client(gateway or command line)} - - \begin{call}{gw}{get volume}{vm}{tape VID} - \end{call} - \begin{call}{gw}{vdqm request/volume stuff}{vd}{VDQM request ID} - \end{call} - \begin{call}{vd}{schedule}{vd}{} - \end{call} - \begin{call}{ts}{unitStatus(UP)}{vd}{} - \end{call} - \begin{call}{vd}{schedule}{vd}{} - \end{call} - \begin{call}{vd}{VDQM\_CLIENTINFO}{ts}{} - \end{call} - \begin{call}{ts}{fork}{tsc}{} - \begin{call}{tsc}{Volume request}{gw}{} - \end{call} - \begin{call}{tsc}{Proceed with session}{tsc}{} - \end{call} - \end{call} - -\end{sequencediagram} -\end{center} - -At that point, already two client libraries are in use in the tape server: the {\bf{}tape gateway protocol client} library and the {\bf{}vdqm client} library, and a simple server, answering only one type or requests: - -\begin{itemize} -\item{}The client library for the tape gateway is implemented using the UML/umbrello based serialisation system. It is contained in the \verb#castor::tape::tapebridge::ClientProxy# class in CAStor. -\item{}The direct C client API in CAStor's \verb#h/vdqm_api.h#. -\item{}The VDQM request handler is implemented in the server class \verb#castor::tape::tapebridge::VdqmRequestHandler#. -\end{itemize} - -\subsubsection{Tape session startup} - -Upon reception of the session request, the tape server checks that it can continue with the session: -\begin{itemize} -\item{}with VMGR the volume status and block size. A disabled volume can only be mounted by a TP\_OPER (this information is retrieved from cupv). -\item{}In case of a write session, it queries the pool info know the owner. If user is not the owner or ADMIN, refuse the mount. -\end{itemize} - -Then reports are sent: -\begin{itemize} -\item{}Reports to VDQM that the drive is assigned. (VDQM\_UNITSTATUS). -\item{}Requests work to be done from the client to prevent useless mounts (and start caching data -in case of migration. -\item{}Mounts the tape, rewinds and validates the volume label. -\item{}Reports to VMGR that the volume is mounted (\verb#VMGR_TPMOUNTED#). -\item{}Reports to the VDQM that the tape is mounted (VDQM\_UNITSTATUS). -\end{itemize} - -This part adds the {\bf{}vmgr client} and the {\bf{}rmcd client}. - -TODO: bad day scenario. - -\subsubsection{Work loop} -The work loop will be a 4 step pipelined operation where: -\begin{itemize} -\item{}The work to be done FIFO gets topped up continuously by a thread (using bulk) -\item{}The data FIFO(s) is(are) filled up by the reader (tape thread or disk thread). -\item{}The data FIFO consumer (opposite) -\item{}The results are reported by either the control thread or a specialized thread (using bulk). -\end{itemize} - -\subsubsection{Release tape} - -\subsection{Extra requirements} -Additional requirements, arising from the current practices of operators are: - -\begin{itemize} -\item{}The tape server's session should gracefully handle an unclean situation where the -tape is left in the drive by a previously crashed session. The protocol is to clean anything -left over before proceeding to the new session. -\item{}A tape sessions should be preemptable by the operator. This is currently achieved -by killing the tape process. Closing the session on a kill (-1) could be a solution. -\item{}The operator should be able to specify values in different SCSI code pages in -order to setup the tape drive. This setting will be defined differently for each tape -drive type. -\end{itemize} - -\section{Tape server architecture} -To fulfil the requirement for an ability to kill a session, the main tape server daemon -will be simple, and just report its status to the VDQM and wait for requests from it on -an open port. - -When a tape mount should start, the process will fork a child process, which will reserve the memory -and instantiate the tape mount machinery. - -The layout of the main process is show in figure \ref{tsParentProcess}. The layout of the child process, which contains all the complexity is shown in figure \ref{tsChildProcess}. - -\begin{figure}[h] -\begin{center} -\includegraphics{images/TapeServerParentProcess} -\end{center} -\caption{\label{tsParentProcess}Tape server parent process: libraries used (purpose built libraries in blue, system libraries in beige, already existing CAStor libraries in green)} -\end{figure} - - -\begin{figure}[h] -\begin{center} -\includegraphics{images/TapeServerChildProcess} -\end{center} -\caption{\label{tsChildProcess}Tape server child process: libraries used (purpose built libraries in blue, system libraries in beige, already existing CAStor libraries in green)} -\end{figure} - -The data path will go to/from tape drive, through the generic SCSI interface of st driver (CAStor uses a -mixture of both in the Tape::Drive class), then through the File structure support classes, as controlled by -the tape thread. The tape thread will communicate the data to (or get from) the disk threads via the -data FIFO class. This class will in turn allocate the memory from a preallocated, pool of -fixed sized blocks. The size of the pool will be controlled by the operators. - -The file structure support classes will be arranged in two layers, with two distinct -implementations for read and write. The lower layer, the session will be stateful, and validate -that the conditions are correct before operations (correct tape is identified in the drive thanks -to volume label, and proper position is confirmed thanks to last file trailer before writing). -Positioning can also be optimized if file to file information is retained (mostly, we should -avoid repositioning between consecutive files when reading). - -Some libraries already exist in CAStor, and will be reused, either by copying or linking from pre-compiled -packages. The main parts of the sessions spawner will be taken from the VDQM as well. - - - -% Section: Reference documentations -% ------------------------------------------------------------------------------ - -\section{Reference documentations} -\subsection{SCSI specifications} - -The SCSI commands can be found in the SCSI section of Hackipedia.org - \footnote{ \href{http://hackipedia.org/Hardware/SCSI/}{http://hackipedia.org/Hardware/SCSI/} } - \footnote{The official site for SCSI standard is \href{http://T10.org}{http://T10.org}. All specifications - can be found there in their approved version, but behind a paywall. Nevertheless all previous drafts were - public and can conveniently be found on the web. Hackipedia hold a very nice collection of such - documentations.}. - The most significant documents for tape server development are the SCSI stream commands (SSC-3 - \footnote{ \href{http://hackipedia.org/Hardware/SCSI/Stream\%20Commands/SCSI\%20Stream\%20Commands\%20-\%203.pdf} - {http://hackipedia.org/Hardware/SCSI/Stream\%20Commands/SCSI\%20Stream\%20Commands\%20-\%203.pdf} }) - and the SCSI primary commands (SPC-4 - \footnote{ \href{http://hackipedia.org/Hardware/SCSI/Primary\%20Commands/SCSI\%20Primary\%20Commands\%20-\%204.pdf} - {http://hackipedia.org/Hardware/SCSI/Primary\%20Commands/SCSI\%20Primary\%20Commands\%20-\%204.pdf} } - \footnote{ Latest drafts can be downloaded from \href{http://www.t10.org/members/w\_spc4.htm} - {http://www.t10.org/members/w\_spc4.htm} } ). - -\subsubsection{Manufacturer's specificities} -\label{Manufacturer's specificities} -The SCSI specification allows for some flexibility for the manufacturers of tape drives, and -each of them has differences. The details can be found in the following documentations: - -\begin{itemize} -\item{}StorageTek\texttrademark T10000 Tape Drive - \footnote{ \href{http://docs.oracle.com/cd/E19957-01/96174E/96174E.pdf} - {http://docs.oracle.com/cd/E19957-01/96174E/96174E.pdf} } -\item{}Sun StorageTek\texttrademark T10000 Tape Drive Fibre Channel Interface Reference Manual - \footnote{ \href{http://docs.oracle.com/cd/E19772-01/MT9259L/MT9259L.pdf} - {http://docs.oracle.com/cd/E19772-01/MT9259L/MT9259L.pdf} } -\item{}IBM System Storage TS1120 and TS1130 Tape Drives and TS1120 ControllerOperator Guide3592 Models J1A, E05, E06, EU6, J70 and C06 - \footnote{ \href{ftp://ftp.software.ibm.com/storage/TS1130/a86opg02.pdf} - {ftp://ftp.software.ibm.com/storage/TS1130/a86opg02.pdf} } -\item{}IBM System Storage Tape Drive 3592 SCSI Reference - \footnote{ \href{http://www-01.ibm.com/support/docview.wss?uid=ssg1S7003248\&aid=1} - {http://www-01.ibm.com/support/docview.wss?uid=ssg1S7003248\&aid=1} } -\item{}IBM TotalStorage LTO Ultrium Tape Drive SCSI Reference (LTO-5 through LTO-6) - \footnote{ \href{http://www-01.ibm.com/support/docview.wss?uid=ssg1S7003556\&aid=1} - {http://www-01.ibm.com/support/docview.wss?uid=ssg1S7003556\&aid=1} } -\end{itemize} - -\subsection{SCSI support in Linux} -On the Linux side, the main references are the Linux 2.4 SCSI subsystem HOWTO - \footnote{ \href{http://mirrors.kernel.org/LDP/HOWTO/pdf/SCSI-2.4-HOWTO.pdf} - {http://mirrors.kernel.org/LDP/HOWTO/pdf/SCSI-2.4-HOWTO.pdf} }, -especially for its section 9.3 on the st driver, -and the Linux SCSI Generic (sg) HOWTO - \footnote{ \href{http://mirrors.kernel.org/LDP/HOWTO/pdf/SCSI-Generic-HOWTO.pdf} - {http://mirrors.kernel.org/LDP/HOWTO/pdf/SCSI-Generic-HOWTO.pdf} }. - -More details regarding the Generic SCSI driver can be found on the SCSI subsystem maintainer's web site - \footnote{ \href{http://sg.danny.cz/sg/}{http://sg.danny.cz/sg/} }. - -The section on the SG\_IO ioctl, \footnote{ \href{http://sg.danny.cz/sg/sg\textunderscore{}io.html}{http://sg.danny.cz/sg/sg\textunderscore{}io.html} } details the usage of the -simplest ioctl for the generic SCSI driver, which allows the invocation of a SCSI command and the collection of the -result in a single system call. - -This ioctl is provided in the middle layer of the SCSI subsystem of Linux. All SCSI drivers, st included, fall back -to the middle layer when encountering an unknown ioctl. This means there is no need to open the matching generic SCSI, -unless we want to control command queueing with separate sending of commands and result collection, which -requires the use of read and write calls from the generic SCSI (sg) driver. - -\subsection{Unsorted CAStor docs} -A collection of links to various documentations written in the past is available on one of CAStor's web pages - \footnote{ \href{http://castorwww.web.cern.ch/castorwww/links.htm}{http://castorwww.web.cern.ch/castorwww/links.htm} }. - -\subsection{SCSI tape support in Linux (st driver)} -Generic SCSI allows detailed control of the operations, but the bulk of them (including reading and -writing) can be managed by the higher level SCSI tape (or st) driver provided by the Linux kernel. -More information on the st driver can be found in the man page "st" and in \verb#Documentation/scsi/st.txt# -in the sources of the kernel. - -\section{Tools used during development} -\subsection{Required tools for build} -\begin{itemize} -\item{}GCC/G++ (Basic SLC version) -\item{}CMake (Basic SLC version) -\item{}rpmbuild (Basic SLC version) -\item{}Google Mock/Google test (GTest is provided in EPEL repository for SLC. - GMock requires recompilation. The source RPMs can be found for newer versions of RPM based distributions, for example from rpmfind - \footnote{ \href{http://rpmfind.net/linux/rpm2html/search.php?query=gmock}{http://rpmfind.net/linux/rpm2html/search.php?query=gmock} }. - For convenience, - they are also available on AFS as a temporary solution - \footnote{ \href{file:///afs/cern.ch/user/c/canoc3/public/GoogleTest-Mock}{/afs/cern.ch/user/c/canoc3/public/GoogleTest-Mock} }. -\item{}Valgrind (Basic SLC version) -\item{}\LaTeX (Basic SLC version) to compile this document -\item{}Doxygen for code documentation (Basic SLC version) -\end{itemize} - -\subsection{Tools used during development} -\begin{itemize} -\item{}mhvtl \footnote{ \href{https://sites.google.com/site/linuxvtl2/}{https://sites.google.com/site/linuxvtl2/} } for developing against virtual drives and libraries (to enable mhvtl kernel debug output to dmesg opts=3 have to be used for kernel module options, i.e. -\small{}\verb#modprobe mhvtl opts=3# ). -\item{}TeamCity for continuous integration -\item{}NetBeans as an IDE, including for remote development\ -\end{itemize} - -\subsection{Code coverage using lcov} -Although the code coverage is not integrated in the build process, it is -straightforward to run on the code. The following recipe will deliver a set of -web pages indicating which parts of the code are covered or not in the unit tests. -The lcov package is required. It is only available on SLC6, and can be installed via yum. -\begin{itemize} -\item{}Change the main CMakeFiles.txt as in this diff: -\begin{small} -\begin{verbatim} -Index: CMakeLists.txt -=================================================================== ---- CMakeLists.txt (revision 76) -+++ CMakeLists.txt (working copy) -@@ -45,7 +45,8 @@ - ########################################################################### - # compiler options - ########################################################################### --set (CMAKE_CXX_FLAGS "-g3 -Wall -Werror -pedantic -O2") -+set (CMAKE_CXX_FLAGS "-g3 -Wall -Werror -pedantic -O2 --coverage") -+set (CMAKE_LD_FLAGS "--coverage") - - ########################################################################### - # dependancies -\end{verbatim} -\end{small} - -\item{}Re-run cmake, recompile as usual and run the unit test. -\item{}Capture the result: - - \small{}\verb#lcov --capture --directory 00build/ --output-file 00build/coverage.info#. -\item{}\normalsize{}Generate the resulting html pages: - - \small{}\verb#genhtml 00build/coverage.info --output-directory 00build/coverage#. -\end{itemize} -\section{Data transfer session step by step} -The following sequence describes when and what the different components of castor communicate while a data transfer if occurring -\begin{enumerate}[noitemsep] -\item Tape operator runs "readtp V12345" -n 1 or "writetp V12345 /etc/group" -\item readtp/writetp queries \textbf{vmgrd} for information about the the tape with volume identifier V12345 -\item readtp/writetp queries \textbf{cupvd} to determine whether or not the tape operator really has the TP\_OPER privilege -\item readtp/writetp aborts if the tape is DISABLED and the tape operator does not have the TP\_OPER privilege -\item readtp/writetp aborts if the tape is either EXPORTED or ARCHIVED -\item readtp/writetp binds a TCP/IP listening socket ready for callbacks from a \textbf{mount-session} child-process of \textbf{tapeserverd} -\item readtp/writetp requests \textbf{vdqmd} to allocate it a free drive in the same DGN as tape V12345 - readtp sends its callback port in the request -\item The RequestHandlerThread of \textbf{vdqmd} stores the readtp/writetp request in the database -\item The DriveSchedulerThread of \textbf{vdqmd} allocates a free drive to the readtp/writetp request -\item The RtcpJobSubmitterThread of \textbf{vdqmd} sends a job to \textbf{tapeserverd} -\item \textbf{tapeserverd} checks that the vdqm’s hostname is in the ADMIN HOSTS parameter of /etc/castor/castor.conf -\item \textbf{tapeserverd} forks a \textbf{mount-session} child-process. -\item The TapeDaemon::forkMountSession() function of the child process asks the \textbf{vdqmd} daemon to assign the process ID to the drive. -\begin{itemize} -\item VdqmProxy::assignDrive() -\end{itemize} -\item The child process creates the MountSession object and calls MountSession::execute(). -\item \textbf{mount-session} asks readtp/writetp for the details of the mount (tapegateway::Volume) -\item \textbf{mount-session} sends the mount details (tapegateway::Volume) to the \textbf{tapeserverd} parent process -\begin{itemize} -\item TapeserverProxy::gotReadMountDetailsFromClient() -\item TapeserverProxy::gotWriteMountDetailsFromClient() -\end{itemize} -\item If writing to tape and the client is the tapegatewayd daemon then the \textbf{tapeserverd} parent process checks with the \textbf{vmgrd} daemon that the tape is marked as BUSY. A tape is marked as busy as a result of the tapegatwayd daemon calling vmgr\_gettape(). -\item \textbf{mount-session} asks readtp/writetp for the first file to be recalled or migrated -\item \textbf{mount-session} requests rmcd to mount the tape - the request is synchronous -\begin{itemize} -\item RmcProxy::mountTape() -\end{itemize} -\item \textbf{mount-session} checks with the drive that the tape has been mounted -\item \textbf{mount-session} notifies the tapserverd parent process that the tape has been mounted -\begin{itemize} -\item TapeserverProxy::tapeMountedForRead() -\item TapeserverProxy::tapeMountedForWrite() -\end{itemize} -\item \textbf{tapeserverd} via MountSessionAcceptHandler::handleIncomingUpdateDriveJob() notifies the \textbf{vmgrd} daemon that the tape has been mounted -\begin{itemize} -\item VmgrProxy::tapeMountedForRead() -\item VmgrProxy::tapeMountedForWrite() -\end{itemize} -\item \textbf{tapeserverd} via MountSessionAcceptHandler::handleIncomingUpdateDriveJob() notifies the \textbf{vdqmd} daemon that the tape has been mounted -\begin{itemize} -\item VdqmProxy::tapeMounted() -\end{itemize} -\item \textbf{mount-session} recalls/migrates and requests more files until gateway::NoMore -\item \textbf{mount-session} unloads tape from drive -\item \textbf{mount-session} requests rmcd to unmount the tape - the request is synchronous -\begin{itemize} -\item RmcProxy::unmountTape() -\end{itemize} -\item \textbf{mount-session} notifies \textbf{tapeserverd} the tape has been unmounted - currently this is not used -\begin{itemize} -\item TapeserverProxy::tapeUnmounted() -\end{itemize} -\item \textbf{mount-session} terminates with the success value of 0 -\item \textbf{tapeserverd} reaps the zombie \textbf{mount-session} -\item \textbf{tapeserverd} parent-process marks the drive as FREE -\item \textbf{tapeserverd} via TapeDaemon::postProcessReapedDataTransferSession() notifies \textbf{vdqmd} that it is releasing the tape -\begin{itemize} -\item VdqmProxy::releaseDrive(forceUnmount) -\end{itemize} -\item \textbf{tapeserverd} via TapeDaemon::postProcessReapedDataTransferSession() notifies \textbf{vdqmd} the tape has been unmounted -\begin{itemize} -\item VdqmProxy::tapeUnmounted() -\end{itemize} - -\end{enumerate} - - -\section{Software layout} - -\subsection{SCSI structures, constants and endianness} - -In order to make the code readable, and to avoid heavy mask-and-shift usage (which one would tend -to code using litterals in order to avoid many constants definitions), we use bit field structures. -The unused fields can be left anonymous. -The definition is shown in listing \ref{SCSI_struct}, and usage in listing \ref{SCSI_struct_usage}. -As there could be endianness issues, we limit this usage to within bytes. Fortunately, the SCSI -standard nicely adheres to this rule. - -\begin{table}[h] -\begin{lstlisting}[caption=SCSI::Structures example,label=SCSI_struct] -namespace SCSI { - namespace Structures { - - /* - * Inquiry data as described in SPC-4. - */ - typedef struct { - unsigned char perifDevType : 5; - unsigned char perifQualifyer : 3; - - unsigned char : 7; - unsigned char RMB : 1; - - unsigned char version : 8; - - unsigned char respDataFmt : 4; - unsigned char HiSup : 1; - unsigned char normACA : 1; - unsigned char : 2; -[...] - } inquiryData_t; - } -} -\end{lstlisting} -\end{table} - -\begin{table}[h] -\begin{lstlisting}[caption=SCSI::Structures usage example,label=SCSI_struct_usage] - SCSI::Structures::inquiryData_t & inq = *((SCSI::Structures::inquiryData_t *) dataBuff); - std::stringstream inqDump; - inqDump << std::hex << std::showbase << std::nouppercase - << "inq.perifDevType=" << (int) inq.perifDevType << std::endl - << "inq.perifQualifyer=" << (int) inq.perifQualifyer << std::endl -[...] - << "inq.T10Vendor=" << SCSI::Structures::toString(inq.T10Vendor) << std::endl - << "inq.prodId=" << SCSI::Structures::toString(inq.prodId) << std::endl - << "inq.prodRevLv=" << SCSI::Structures::toString(inq.prodRevLvl) << std::endl - << "inq.vendorSpecific1="<< SCSI::Structures::toString(inq.vendorSpecific1)<< std::endl -\end{lstlisting} -\end{table} - -The unit test resorts to shift and mask, once and only once, to validate the bit fields in -another way. There is an example for this validation in \verb#SCSI/StructureTest.cc# an excerpt is in listing \ref{SCSI_struct_testing}. - -\begin{table} -\begin{lstlisting}[caption=SCSI::Structures usage example,label=SCSI_struct_testing] -namespace UnitTests { - TEST(SCSI_Structures, inquiryData_t_multi_byte_numbers_strings) { - /* Validate the bit field behavior of the struct inquiryData_t, - which represents the standard INQUIRY data format as defined in - SPC-4. This test also validates the handling of multi-bytes numbers, - as SCSI structures are big endian (and main development target is - little endian. */ - unsigned char inqBuff [100]; - memset(inqBuff, 0, sizeof(inqBuff)); - SCSI::Structures::inquiryData_t & inq = *((SCSI::Structures::inquiryData_t *) inqBuff); - /* Peripheral device type */ - ASSERT_EQ(0, inq.perifDevType); - inqBuff[0] |= (0x1A & 0x1F) << 0; - ASSERT_EQ(0x1A, inq.perifDevType); - - /* Peripheral qualifier */ - ASSERT_EQ(0, inq.perifQualifyer); - inqBuff[0] |= (0x5 & 0x7) << 5; - ASSERT_EQ(0x5, inq.perifQualifyer); -[...] - } -} -\end{lstlisting} -\end{table} - -Other common types in the SCSI specification are multi-bytes -number, which are represented by \verb#unsigned char[2/* (or 4)*/]# and handled by helper functions -\verb#toU16()# and \verb#toU32()#. The helper functions -conveniently use \verb#ntoh{l|s}#, as SCSI and network orders are the same. The reverse -is covered by \verb#setU16()# and \verb#setU32()#. Another helper function -takes care of string extraction from fixed sized char arrays. See listing \ref{SCSI_data_helpers}. - -\begin{table} -\begin{lstlisting}[caption=SCSI::Structures helper functions,label=SCSI_data_helpers] -SCSI::Structures::uint32_t toU32(const char(& t)[4]); -SCSI::Structures::uint32_t toU32(const char(& t)[4]); - -template <size_t n> -std::string toString(const char(& t)[n]); -\end{lstlisting} -\end{table} - -Those arrays are space-padded, and may not be 0 terminated. It is seen in listing \ref{SCSI_struct_usage}. -The helper function extracts the string, dealing with potential zeros at the end, -and the fixed length. They keep the space-padding at the end of the extracted -string. - -To avoid literals in the code, which forces anyone reading it to do tedious lookups, -the SCSI constants are also defined as constants in the code. See listing \ref{SCSI_consts}. - -\begin{table} -\begin{lstlisting}[caption=SCSI::Constants,label=SCSI_consts] -namespace SCSI { - class Commands { - public: - enum { - /* - * SCSI opcodes, taken from linux kernel sources - * Linux kernel's is more complete than system's - * includes. - */ - TEST_UNIT_READY = 0x00, - REZERO_UNIT = 0x01, - REQUEST_SENSE = 0x03, -[...] -\end{lstlisting} -\end{table} - -Finally all structures have a constructor, which at least zeroes all the data. -Some structures (typically the CDBs, where the first byte is the operation's code) -automatically set the value of fields which can only have one value. Helper -functions are created as needed, where accessing/setting the data in the structure -requires non-trivial processing (and when the case is not covered by the common -tools handling strings that endianness). - -\subsection{Exceptions hierarchy and error handling strategy} - -There is a small class hierarchy for exceptions: \verb#Tape::Exception# inherits from -\verb#std::exception#, and \verb#Tape::Exceptions::Errnum# inherits from the latter. -\verb#Tape::Exceptions::Errnum# manages the errnos. It collects the errno value and turns it -into a string automatically at construction time. - -\verb#Tape::Exception# and all its heirs automatically generate a stack trace at creation time. -This allows easy tracing of unhandled exceptions, as the stack trace is embedded in the content -of the \verb#what()# method. For the cases where the exception is indeed handled, a shorter version -called \verb#shortWhat()# allows the logging of the problem without bloating the logs with long stack -traces. - -Another exception class, \verb#SCSI::Exception#, turns the SCSI status and sense buffer into a -user readable string. In addition, a helper exception thrower function avoids code -repetitions (\verb#ExceptionLauncher()#). - -Throughout the project, the error handling strategy is to throw an exception when any -error condition occurs. This ensures that any returned value is valid, and prevents the -calling function from testing for error conditions. The default exception throwing is -coming from a narrow set of exceptions types. This gives a crude exception handling capacity -to the user of the functions. When finer grained exceptions will turn out to be required, -we will add them on an as needed basis. - -\subsection{Non-fatal warnings strategy} -\label{Non-fatal warnings strategy} - - -We want to deliver an interface, preferably common, to most object where the non-fatal -problems are recorded (with time of occurrence) and stored for further retrieval by -upstream caller. This allow developers to deal with the logging interface only in the -top "application" class which glues all the bricks of the project together. - -A lower level failure (exception) could also be turned into a warning by a higher level -retry. - -TODO: define API. - -\subsection{The Tape::Drive object} - -This first deliverable is a tape drive object. This tape drive object abstracts all -SCSI and technical details and provides a high level interface, to be used by the -file structure layer. - -It will provide as much data safety as possible by blocking writes in situations -where they are not safe (to be defined in details, but the most obvious is right -after positioning, as the file layer is expected to check the position by reading -the trailer of the previous file before writing. - -The SCSI commands and st driver's functions used in previous software (CAStor's taped/rtcpd) are: -\begin{itemize} -\item Individual SCSI commands sent using generic SCSI: - \begin{itemize} - \item Read status (inquiry SCSI command used by posovl) - \item Read serial number (inquiry SCSI command, asking for vital product data page 0x80) - \item Locate (locate(10) SCSI command: 32 bits logical object identifiers) - \footnote{There is also a locate(16) command allowing 64 bis addresses. - This might become necessary as tapes grow. Discounting the per-file overhead, - with 256kB block, it still takes 1PB to get $2^{32}$ blocks.} - \item Read position (read position SCSI command -- short form): get the current logical object - location (a.k.a. block ID). - \item Log select (for clearing compression stats page. The function clear\_compression\_stats - actually does a blanket reset of all statistics. It sets the PCR/SP/PC combination - to 1/0/3. The basic SCSI specification states that the value pf PC is not important, - but for the T10000 drives, the documentation recommends PC=11b, which we have for all drives. - \item Log sense, to read the compression pages. This is device dependant. The code covers - 5 blocks of device types: DAT, DLT-SDLT-LTO, IBM(3490, 3590, 3592), StorageTek RedWood(SD3), - StorageTek(9840, 9940, T10000). - \item Log sense for page 0x2E (tape alert, as defined in SSC-3) on all modern tape drives to detect tape alerts. - \item Mode sense and Mode select was used in setdens called itself by mounttape. - They get the drive parameters and set density and compression parameters based - on the drive type and the density requested by the caller. On all modern tape drives, - the compression page is 0x10. This will be replaced by the function \verb#Tape::Drive::setCompressionAndDensity()#. - \end{itemize} -\item st driver's commands, leading to internal variables setting or SCSI actions: - \begin{itemize} - \item Get internal driver state via the MTIOCGET ioctl (for drive ready, write protection, - get some error condition, when MTIOSENSE failed, to get the EOD, BOT bits (readlbl)). - This functionality is covered by \verb#Drive::getDriveStatus#. - \item Try and get the sense data for the last-ish command with MTIOSENSE. This - relies on a CERN-made patch. As the patch is not available in SLC6, - MTIOSENSE will not be used in this project. This is also covered \verb#Drive::getDriveStatus#. - \item Setup the driver's parameters (MTIOCTOP/MTSETDRVBUFFER) for (un)buffered - writes and asynchronous writes (in confdrive, a child process of taped). - This option is currently not set in production environments. - \item Jump to end of media (before rewinding, as a mean to rebuild the MIR) (MTIOCTOP/MTEOM, - with some MTIOCTOP/MTSETDRVBUFFER before, in repairbadmir). The setting of the driver - buffer is used to set the boolean flag MT\_ST\_FAST\_MTEOM to 0. If not, the mt driver uses - a nasty trick asks the device to skip 0x7fffff files forward. The comment in the CAStor code - claims it's 32k files, but $2^{23}-1$ is indeed 8M files. Anyway, after turning off the - option, the st driver reverts to telling the SCSI device to space to end of data. - This behavior is documented in the IBM's operator manual mentioned in \ref{Manufacturer's specificities}, - on page 53 for tape alert 18 (Tape directory corrupted on load). - - It is not mentioned for other tape server's documentations. Specifically, StorageTek - only lists operator-initiated methods for MIR rebuild. - - Nevertheless, we will still issue this operation in all drives as it is not known - if it works in practice for StorageTek drives (or others). - \item Rewind (MTIOCTOP/MTREW, in rwndtape). - \item Skip to end of data (MTIOCTOP/MTEOM, in skip2eod, without the trick of repairbadmir). - \item Skip n file marks backwards (MTIOCTOP/MTBSF, in skiptpfb). - \item Skip n file marks forward (MTIOCTOP/MTFSF, in skiptpff). - \item Skip n file marks forward (MTIOCTOP/MTFSF, in skiptpfff). skiptpfff and skiptpff differ only - by error reporting. Both functions exists since CAStor has been put in SVN (20/07/1999) - \item Skip n blocks backwards (MTIOCTOP/MTBSR, in skiptprb). - \item Skip n blocks forward (MTIOCTOP/MTFSR, in skiptprf). - \item Unload the tape (MTIOCTOP/MTOFFL, in unldtape). - \item Write synchronous file mark(s) (tape marks in CAStor jargon) (MTIOCTOP/MTWEOF, in wrttpmrk). - \item Write immediate (asynchronous file marks (MTIOCTOP/MTWEOFI, also in wrttpmrk). - \item Clear the EOT condition by calling MTIOCGET. This is done in wrttrllbl, 3 times. - In MTIOCGET, indeed, a member of the scsi\_tape structure called recover\_reg is reset to 0. - This clearing is used to properly report errors in label writing functions. - The usefulness of this function is dubious and it is not included in the current - API. - \item Write is used in 2 places only : twrite and writelbl (which is a specialized - function to write 80 bytes blocks). twrite is not checking the size of blocks, - which is determined in the calling functions. - \item Read is used in tread, which is used in a single place of TapeToMemory. It is - also used in readlbl. The latter uses a trick to detect that a tape is blank. - This could be turned into a specialized function. - \end{itemize} -\end{itemize} - -The interface is shown in listing \ref{drive_if}. - -TODO: define end of tape behavior for write (create an exception, and throw it). - -TODO: define how detect a blank tape. - -\begin{table} -\begin{lstlisting}[caption=Tape::Drive interface,label=drive_if] -namespace Tape { - class Drive { - public: - Drive(SCSI::DeviceInfo di, System::virtualWrapper & sw); - /* Direct SCSI operations */ - virtual compressionStats getCompression() throw (Exception); - virtual void clearCompressionStats() throw (Exception); - virtual deviceInfo getDeviceInfo() throw (Exception); - virtual std::string getSerialNumber() throw (Exception); - virtual void positionToLogicalObject(uint32_t blockId) throw (Exception); - virtual positionInfo getPositionInfo() throw (Exception); - virtual std::vector<std::string> getTapeAlerts() throw (Exception); - virtual void setDensityAndCompression(unsigned char densityCode = 0, - bool compression = true) throw (Exception); - virtual driveStatus getDriveStatus() throw (Exception); - virtual tapeError getTapeError() throw (Exception); - /* ST driver based operations */ - virtual void setSTBufferWrite(bool bufWrite) throw (Exception); - virtual void fastSpaceToEOM(void) throw (Exception); - virtual void rewind(void) throw (Exception); - virtual void spaceToEOM(void) throw (Exception); - virtual void spaceFileMarksBackwards(size_t count) throw (Exception); - virtual void spaceFileMarksForward(size_t count) throw (Exception); - virtual void spaceBlocksBackwards(size_t count) throw (Exception); - virtual void spaceBlocksForward(size_t count) throw (Exception); - virtual void unloadTape(void) throw (Exception); - virtual void sync(void) throw (Exception); - virtual void writeSyncFileMarks(size_t count) throw (Exception); - virtual void writeImmediateFileMarks(size_t count) throw (Exception); - virtual void writeBlock(const unsigned char * data, size_t count) throw (Exception); - virtual void readBlock(unsigned char * data, size_t count) throw (Exception); - virtual ~Drive() - }; -} // namespace Tape -\end{lstlisting} -\end{table} - -\subsection{The Tape::File class} -\subsubsection{CAStor file format} -Over time, CAStor used several file formats, but as of 2013, only one file format -is used, called AUL. This format is described an old CERN web site -\footnote{ \href{http://it-dep-fio-ds.web.cern.ch/it-dep-fio-ds/Documentation/tapedrive/labels.html}{http://it-dep-fio-ds.web.cern.ch/it-dep-fio-ds/Documentation/tapedrive/labels.html} }, -and the general description of the ANSI fields can be found in IBM's z/OS documentation -\footnote{ \href{http://publib.boulder.ibm.com/infocenter/zos/v1r12/index.jsp?topic=\%2Fcom.ibm.zos.r12.idam300\%2Flabdef.htm}{http://publib.boulder.ibm.com/infocenter/zos/v1r12/index.jsp?topic=\%2Fcom.ibm.zos.r12.idam300\%2Flabdef.htm} }. - -The AUL format consists of volume label, header blocks and trailer blocks. All those -descriptors are contained in tape blocks of 80 bytes. All data is in ASCII nowadays and empty bytes are spaces. - -\begin{table}[H] -\textbf{\caption{AUL label format}} -\begin{center} -\begin{tabular}{ |c|c|c|c|c|c|c|c|c|c|c| } - \hline - VOL1 & \cellcolor{orange}HDR1 & \cellcolor{orange}HDR2 & \cellcolor{orange}UHL1 & \cellcolor{green} TM & - \cellcolor{gray} DATA & \cellcolor{green} TM & \cellcolor{orange}EOF1 & \cellcolor{orange}EOF2 & - \cellcolor{orange}UTL1 & \cellcolor{green} TM \\ - \hline - \multicolumn{1}{c|}{} &\multicolumn{10}{c|}{one data file} \\ - -\end{tabular} -\end{center} -\end{table} - -\begin{table}[H] -\textbf{\caption{AUL prelabeled tape with one HDR1}} -\begin{center} -\begin{tabular}{ |c|c|c| } - \hline - VOL1 & \cellcolor{orange}HDR1(PRELABEL) & \cellcolor{green} TM \\ - \hline - -\end{tabular} -\end{center} -\end{table} - -\begin{table}[H] -\textbf{\caption{The structure of the volume label}} - -\begin{center} -\begin{tabularx}{\textwidth}{ |c|c|c|X| } - \hline - \multicolumn{4}{|c|}{VOL1} \\ - \hline - Bytes & Length & Offset & \multicolumn{1}{c|}{Content} \\ - \hline \hline - 0-3 & 4 & 0x00 & Volume label indicator: the caracters "VOL1" \\ - \hline - 4-9 & 6 & 0x04 & Volume serial number (VSN) (ex: "AB1234") \\ - \hline - 10 & 1 & 0x0A & Accessibility (In CAStor, left as space) \\ - \hline - 11-23 & 13 & 0x0B & Reserved for future (spaces) \\ - \hline - 24-36 & 13 & 0x18 & Implementation identifier (left as spaces by CAStor) \\ - \hline - 37-50 & 14 & 0x25 & Owner identifier (in CAStor, the string "CASTOR" or STAGESUPERUSER name padded with spaces)\\ - \hline - 51-78 & 28 & 0x33 & Reserved (spaces) \\ - \hline - 79 & 1 & 0x4F & Label standard level (1,3 and 4 are listed as valid in IBM's documentation. CAStor uses ASCII '3') \\ - \hline -\end{tabularx} -\end{center} - -CAStor example for the beginning of the tape: -\begin{small} -\begin{verbatim} -00000000 56 4f 4c 31 56 35 32 30 30 31 20 20 20 20 20 20 |VOL1V52001 | -00000010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | -00000020 20 20 20 20 20 43 41 53 54 4f 52 20 20 20 20 20 | CASTOR | -00000030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | -00000040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 33 | 3| -\end{verbatim} -\end{small} -\end{table} - -\begin{table}[H] -\textbf{\caption{The structure of the HDR1, EOF1 labels}} -\begin{center} -\begin{tabularx}{\textwidth}{ |c|c|c|X| } - \hline - \multicolumn{4}{|c|}{HDR1, EOF1} \\ - \hline - Bytes & Length & Offset & \multicolumn{1}{c|}{Content} \\ - \hline \hline - 0-3 & 4 & 0x00 & Header label: the caracters "HDR1 or EOF1" \\ - \hline - 4-20 & 17 & 0x04 & File identifier: hexadecimal CAStor NS file ID. - nsgetpath -x can be used to find the CASTOR full path name. Aligned to left. - In case of prelabeled tape 'PRELABEL' is used instead of file ID.\\ - \hline - 21-26 & 6 & 0x15 & The volume serial number of the tape.\\ - \hline - 27-30 & 4 & 0x1B & File section number: a number (0001 to 9999) that indicates - the order of the volume within the multivolume aggregate. - This number is always 0001 for a single volume data set. \\ - \hline - 31-34 & 4 & 0x1F & File sequence number: a number that indicates - the relative position of the data set within a multiple data set group (aggregate). - CAStor uses modulus for fseq by 10000 \\ - \hline - 35-38 & 4 & 0x23 & Generation number: '0001' in CAStor. \\ - \hline - 39-40 & 2 & 0x27 & Version number of generation: '00' in CAStor. - \\ - \hline - 41-46 & 6 & 0x29 & Creation date: Date when allocation begins for creating the - data set. The date format is cyyddd, where: - c = century (blank=19; 0=20; 1=21; etc.) - yy = year (00-99) - ddd = day (001-366) \\ - \hline - 47-52 & 6 & 0x2F & Expiration date: year and day of the year when the data set may be - scratched or overwritten. The data is shown in the format cyyddd. - It is always advisable to set the expiration date when a volume is being initialised - ('prelabelled') to be a date before the current date, so that writing to the tape - is immediately possible. \\ - \hline - 53 & 1 & 0x35 & Accessibility: a code indicating the security status of the data set and - 'space' means no data set access protection. \\ - \hline - 54-60 & 6 & 0x36 & Block count: This field in the trailer label shows the number of data - blocks in the data set on the current volume. This field in the header label is always '000000'. \\ - \hline - 60-72 & 13 & 0x3C & System code of creating system: a unique code that identifies the system. - CASTOR with CASTOR BASEVERSION number string. \\ - \hline - 73-79 & 7 & 0x49 & Reserved \\ - \hline - -\end{tabularx} -\end{center} -CAStor example for the second file on the tape: -\begin{small} -\begin{verbatim} -00000000 48 44 52 31 31 32 41 31 36 30 43 33 38 20 20 20 |HDR112A160C38 | -00000010 20 20 20 20 20 56 35 32 30 30 31 30 30 30 31 30 | V5200100010| -00000020 30 30 32 30 30 30 31 30 30 30 31 32 30 34 31 30 |0020001000120410| -00000030 31 32 30 34 31 20 30 30 30 30 30 30 43 41 53 54 |12041 000000CAST| -00000040 4f 52 20 32 2e 31 2e 31 32 20 20 20 20 20 20 20 |OR 2.1.12 | -\end{verbatim} -\end{small} -\end{table} - -\begin{minipage}{\linewidth} -CAStor example for the empty tape with PRELABEL and one HDR1 is used: -\begin{small} -\begin{verbatim} -00000000 56 4f 4c 31 56 35 32 30 30 31 20 20 20 20 20 20 |VOL1V52001 | -00000010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | -00000020 20 20 20 20 20 72 6f 6f 74 20 20 20 20 20 20 20 | root | -00000030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | -00000040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 33 | 3| -00000050 48 44 52 31 50 52 45 4c 41 42 45 4c 20 20 20 20 |HDR1PRELABEL | -00000060 20 20 20 20 20 56 35 32 30 30 31 30 30 30 31 30 | V5200100010| -00000070 30 30 31 30 30 30 31 30 30 30 31 33 32 33 34 30 |0010001000132340| -00000080 31 33 32 33 34 20 30 30 30 30 30 30 43 41 53 54 |13234 000000CAST| -00000090 4f 52 20 32 2e 31 2e 31 33 20 20 20 20 20 20 20 |OR 2.1.13 | -\end{verbatim} -\end{small} -\end{minipage} - -\begin{table}[H] -\textbf{\caption{The structure of the HDR2, EOF2 labels}} -\begin{center} -\begin{tabularx}{\textwidth}{ |c|c|c|X| } - \hline - \multicolumn{4}{|c|}{HDR2, EOF2} \\ - \hline - Bytes & Length & Offset & \multicolumn{1}{c|}{Content} \\ - \hline \hline - 0-3 & 4 & 0x00 & Header label: the caracters "HDR2 or EOF2" \\ - \hline - 4 & 1 & 0x04 & Record format. An alphabetic character that indicates the - format of the records in the associated data set. For the AUL it could be only: F - fixed length - (U - was used for HDR2 for prelabeled tapes)\\ - \hline - 5-9 & 5 & 0x05 & Block length in bytes (maximum). For the block size greater than 100000 the value is 00000. \\ - \hline - 10-14 & 5 & 0x0A & Record length in bytes (maximum). For the record size greater than 100000 the value is 00000. \\ - \hline - 15 & 1 & 0x0F & Tape density. Depends on the tape density values are following: '2' for D800, '3' for D1600, '4' for D6250 \\ - \hline - 16-33 & 18 & 0x10 & Reserved \\ - \hline - 34 & 2 & 0x22 & Tape recording technique. The only technique available for 9-track tape is odd parity with no translation. - For a magnetic tape subsystem with Improved Data Recording Capability, the values are: 'P '- Record data in compacted format, -' ' - Record data in standard uncompacted format. For CASTOR is is 'P' if the drive configured to use compression (i.e. xxxGC) \\ - \hline - 35-49 & 14 & 0x24 & Reserved \\ - \hline - 50-51 & 2 & 0x32 & Buffer offset '00' for AL and AUL tapes \\ - \hline - 52-79 & 28 & 0x34 & Reserved \\ - \hline - -\end{tabularx} -\end{center} -CAStor example for the first file on the tape: -\begin{small} -\begin{verbatim} -00000000 48 44 52 32 46 30 30 30 30 30 30 30 30 30 30 20 |HDR2F0000000000 | -00000010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | -00000010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | -00000030 20 20 30 30 20 20 20 20 20 20 20 20 20 20 20 20 | 00 | -00000040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | -\end{verbatim} -\end{small} - -\end{table} - -\begin{table}[H] -\textbf{\caption{The structure of the UHL1, UTL1 labels}} -\begin{center} -\begin{tabularx}{\textwidth}{ |c|c|c|X| } - \hline - \multicolumn{4}{|c|}{UHL1, UTL1} \\ - \hline - Bytes & Length & Offset & \multicolumn{1}{c|}{Content} \\ - \hline \hline - 0-3 & 4 & 0x00 & User header label: the caracters "UHL1 or UTL1". \\ - \hline - 4-13 & 10 & 0x04 & Actual file sequence number ( '0' padded from left ). \\ - \hline - 14-23 & 10 & 0x0E & Actual block size ( '0' padded from left ). \\ - \hline - 24-33 & 10 & 0x18 & Actual record length ( '0' padded from left ). \\ - \hline - 34-41 & 8 & 0x22 & Site : a part of the domain name uppercase.\\ - \hline - 42-51 & 10 & 0x2A & Tape mover host name uppercase without domain name. \\ - \hline - 52-59 & 8 & 0x34 & Drive manufacturer. \\ - \hline - 60-67 & 8 & 0x3C & Drive model (first 8 bytes from the field PRODUCT IDENTIFICATION in the SCSI INQUIRY replay). \\ - \hline - 68-79 & 12 & 0x44 & Drive serial number. \\ - \hline -\end{tabularx} -\end{center} -CAStor example for the second file on the tape: -\begin{small} -\begin{verbatim} -00000000 55 48 4c 31 30 30 30 30 30 30 30 30 30 32 30 30 |UHL1000000000200| -00000010 30 30 32 36 32 31 34 34 30 30 30 30 32 36 32 31 |0026214400002621| -00000020 34 34 43 45 52 4e 20 20 20 20 4c 58 43 32 44 45 |44CERN LXC2DE| -00000030 56 35 44 32 53 54 4b 20 20 20 20 20 54 31 30 30 |V5D2STK T100| -00000040 30 30 42 20 58 59 5a 5a 59 5f 42 31 20 20 20 20 |00B XYZZY_B1 | -\end{verbatim} -\end{small} -\end{table} - -\subsubsection{File block management} - -Some files tapes have mixed block sizes, -some files used to have mixed block sizes. Current proposal is to have a fixed -block size per tape, and to have operators choose the optimal block size for -drive performance (too small blocks reduce performance). - -Currently 256kB is used everywhere, so hardcoding this block size for writing -to this value is an acceptable for the time being. On the long run, this should -be a configurable parameter by the operators. - -Ideally, only the Tape::File class should handle all aspects of cutting the disk -file, which is a continuous stream, into fixed size blocks. But this would have the -downside of having the Tape::File class a client of the FIFOs, and potentially -have its own thread, which is far beyond the scope of this class. Therefore, it -is the duty of the caller to provide the file cut into fixed size blocks. -The Tape::File class will require pre-declaration of the block size, and -enforce it. - -\subsubsection{Responsibilities of the class} -This class will have the responsibility to check file structure and content, -including checksum, block sizes and header/trailer content. In case of non-fatal -errors, the warnings will be reported through the warning interface described in -\ref{Non-fatal warnings strategy}. - -\subsubsection{Checksums} -The checksum in CAStor uses the Adler32 checksum. Adler32 can be computed -incrementally on a stream of data. The zlib contains an implementation of adler32 -\footnote{\href{http://www.zlib.net/manual.html\#Checksum}{http://www.zlib.net/manual.html\#Checksum}}. -The checksum will be computer automatically when writing or reading the file to -tape. Reading a file with a wrong checksum will throw an exception. -TODO: define writing behavior (is the checksum pre-declared?). - -\subsubsection{Tape::File API} -TODO. - - - -\subsection{FIFOs} - -FIFOs will be used to synchronize the data transfer between the tape thread and -disk threads. The Tape thread will manage the block-to-stream transformation. The -FIFO might not always be able to provide blocks in one piece at chunk boundary. -The first attempt solution for this case will be a copy of the cut block. With -a chunk size significantly bigger than the block size, the event should be rare -enough to not affect performance. FIFOs will probably need some thread safety, -but as they will be single user, single consumer, some parts might possible -be lockless. - -\subsection{Disk client library} -Castor is dropping rfio and is moving to xroot. The effects on the code are to be -discussed with Sebastien. -\subsection{VDQM client library} - -TODO: describe how we will link with the VDQM client library. The VDQM is also -the initial client which triggers the tape sessions. It carries a feature -where the tape drive can recycle a tape mount. This is not very useful today, -and the first release of the TapeServer will not support it. All sessions -will be force-closed by the TapeServer. - -\subsection{VMGR client library} - -\subsection{Stager/TapeGateway client library} - -\subsection{Logging system client library} -In case of failure, operators need to have logs filles as much as possible. -Thus, castor has an very aggressive logging strategy and every step of execution within the process -is monitored. - -Each thread has it own \textbf{log::LogContext}, which is holding a set of variables that have to be log in every case -with every message. That way, we do bother only once with the variables to -log (when adding them to the log context) and can focus on the log message. - -The variables are stored within the \textbf{log::LogContex} as \textbf{log::Param}, which is roughly speaking a pair of string -for the name of the parameter and its value. - -Adding variables is done through \textbf{LogContext::pushOrReplace}, removing them through \textbf{LogContext::erase} and the -logging through the \textbf{log} member function. -\begin{table}[h] -\begin{lstlisting} -log::Logger log; -log::LogContext lc(log); -{ - lc.pushOrReplace(cta::log::Param("Name var 1",var1)); - lc.log(LEVEL,message); - lc.erase("Name var 1"); -} -\end{lstlisting} -\end{table} -To avoid this cumbersome add/remove, you can use \textbf{LogContext::ScopedParameter}, which is -a RAII-class for registering a variable into the \textbf{LogContext} and removing it automatically when its goes out of scope. -\begin{table}[h] -\begin{lstlisting} -{ - cta::log::LogContext::ScopedParam sp(lc, cta::log::Param("name var1",var1)); - cta::log::LogContext::ScopedParam sp2(lc, cta::log::Param("name var2",var2)); - lc.log(LEVEL,message); -} -\end{lstlisting} -\end{table} -Using \textbf{LogContext::ScopedParameter} is still a bit clunky. To get rid of that, there is the -\textbf{ScopedParamContainer}, which acts as RAII container for parameters. -\begin{table}[h] -\begin{lstlisting} -{ - cta::log::ScopedParamContainer sp(lc); - sp.add(var1, "name1").add(var2, "name2"); - lc.log(LEVEL,message); -} -\end{lstlisting} -\end{table} -\subsection{Application architecture} -\subsubsection{Memory management and threading architecture} -Like the previous version in rtcpd, the tape server will pre-allocate a fixed number of memory -blocks for the whole duration of the tape session, and circulate them between the data producers -and consumers. - -The data flow is organised around block passing, from queue to queue. Each queue output is processed -by a thread of thread pool. - -The overall layout of a migration mount is shown in figure \ref{tsMigrationMM}. The recall mount, shown in\ -figure \ref{tsRecallMM}, is almost symmetric. The report packer triggers on threshold instead of tape -flushes, and - -\begin{figure}[h] -\begin{center} -\includegraphics[scale=0.75]{images/MigrationMountMM} -\end{center} -\caption{\label{tsMigrationMM}Tape server child process: layout of the memory management in the case -of a migration mount} -\end{figure} - -\begin{figure}[h] -\begin{center} -\includegraphics[scale=0.75]{images/RecallMountMM} -\end{center} -\caption{\label{tsRecallMM}Tape server child process: layout of the memory management in the case -of a recall mount} -\end{figure} - - -\subsubsection{Session spawner} -\subsubsection{Session process} - -\subsubsection{Memory chunk manager} - -The memory block manager allocates (usually all at once) a large chunk of memory. -This memory is then shared between the various FIFOs in the system. Deallocation -of memory on exit will allow memory leak checks. - -\paragraph{Recall} -In case of a recall, the memory manager is pretty much an empty shell. -Memory blocks are sequentially pulled by the current tape read task and pushed back to the memory manager once written to the disk -\paragraph{Migration} -In case of a migration, he memory manager has an active role. -He has a list of clients that are waiting for some memory blocks. It pushes to them - - -\subsubsection{Tape read thread} -Behavior : -Beginning : -\begin{itemize}[noitemsep] -\item Load tape -\item Mount tape -\item wait for drive to be ready -\item Check the label and position the tape -\end{itemize} -Run -\begin{itemize}[noitemsep] -\item Pop a queued task (and ask the task injector to put more tasks in) -\item execute -\end{itemize} -At the end : -\begin{itemize}[noitemsep] -\item Signal the end to the global status reporter -\item Signal to the task injector that he can stop -\item attempt of cleaning : unmount and unload the tape -\end{itemize} -\subsubsection{Tape write thread} -Behavior : -Beginning : -\begin{itemize}[noitemsep] -\item Load tape -\item Mount tape -\item wait for drive to be ready -\item Check the label and position the tape -\end{itemize} -Run -\begin{itemize}[noitemsep] -\item Pop a queued task -\item execute -\item Report to the client if a threshold has been crossed -\end{itemize} -At the end : -\begin{itemize}[noitemsep] -\item Signal the end to the global status reporter -\item attempt of cleaning : unmount and unload the tape -\end{itemize} -\subsubsection{Disk read thread pool} -It is an empty shell owning and running a set of disk read threads. Each thread will pop a task and execute it. -While popping a task, we ask the task injector to provide more task if we cross on the thresholds. -The last thread alive will report the end of the session to the client -\subsubsection{Disk write thread pool} -It is also an empty shell owning and running a set of disk write threads. Each thread will pop a task and execute it. -The last thread alive will report the end of the session to the client -\subsubsection{Global status reporter} - -\subsubsection{Task injector} -\paragraph{Recall} -\paragraph{Migration} -\subsubsection{Loopback system} - -\subsection{How to interpret the exit code of the mount-session child process} -An exit code of 0 means the underlying drive is free to be used again and the tapeserverd parent-process should therefore move the state of the drive to UP (idle in tpstat and FREE in showqueues). - -A non-zero exit code means the tapeserverd parent-process should move the state of underlying drive to DOWN. An operator will take a look. Under no circumstances should the tapeserverd daemon launch a Leon/Victor process to clean the situation. - -If the mount-session child-process terminates without an exit code (it received a terminating signal) then the Leon/Victor process should be launched. - -\section{Compilation instructions} - -Install SLC 6 (or 5) -Install cmake and git if they are not installed out of the box -\begin{table}[h] -\begin{lstlisting} -yum -y install python-debian cmake git -\end{lstlisting} -\end{table} - -\begin{table}[h] -\begin{lstlisting} -cd -git clone http://git.cern.ch/pub/CASTOR castor -mkdir build && cd build -cmake -DPackageOnly:bool=true ../castor/ -make castor_rpm -\end{lstlisting} -\end{table} -The last command will give you a list of missing packages that are needed. -Most of them can be installed with a simple yum install when epel repository is enabled. - -\begin{table}[h] -\begin{lstlisting} -yum install -y libattr-devel binutils-devel python-devel xfsprogs-devel gtest gtest-devel globus-gridftp-server-devel globus-common-devel cppunit-devel e2fsprogs-devel openssl-devel krb5-devel curl-devel zeromq3 zeromq3-devel protobuf-compiler protobuf protobuf-devel valgrind -\end{lstlisting} -\end{table} - - -But you need get and install manualy from swrep\footnote{http://swrep/swrep/} at least the following packages : -\begin{itemize}[noitemsep] - \item gmock-1.5.0-3 - \item gmock-devel-1.5.0-3 - \item libmemcached-0.53-1 - \item libmemcached-devel-0.53-1 - \item oracle-instantclient-basic-11.2.0.3.0-5 - \item oracle-instantclient-precomp-11.2.0.3.0-5 - \item oracle-instantclient-devel-11.2.0.3.0-5 - \item stk-ssi-devel-2.3-3.cern - \item stk-ssi-2.3-3.cern -\end{itemize} - - -Ceph is also need. The following command should take care of that : -\begin{table}[h] -\begin{lstlisting} -yum localinstall http://swrep/swrep/x86_64_slc6/ceph-0.80.1-0.cern.x86_64.rpm http://swrep/swrep/x86_64_slc6/ceph-devel-0.80.1-0.cern.x86_64.rpm http://swrep/swrep/x86_64_slc6/librados2-0.80.1-0.cern.x86_64.rpm http://swrep/swrep/x86_64_slc6/python-ceph-0.80.1-0.cern.x86_64.rpm http://swrep/swrep/x86_64_slc6/libradosstriper-0.80.1-0.cern.x86_64.rpm http://swrep/swrep/x86_64_slc6/libcephfs_jni1-0.80.1-0.cern.x86_64.rpm http://swrep/swrep/x86_64_slc6/libcephfs1-0.80.1-0.cern.x86_64.rpm http://swrep/swrep/x86_64_slc6/librbd1-0.80.1-0.cern.x86_64.rpm -\end{lstlisting} -\end{table} - -You may install ceph-debuginfo (2.8 Go) if you need to. - -xrootd4 packages for SLC6 could be installed by : -\begin{table}[h] -\begin{lstlisting} -yum localinstall http://swrep/swrep/x86_64_slc6/xrootd4-devel-4.0.0-1.slc6.x86_64.rpm http://swrep/swrep/x86_64_slc6/xrootd4-libs-4.0.0-1.slc6.x86_64.rpm http://swrep/swrep/x86_64_slc6/xrootd4-private-devel-4.0.0-1.slc6.noarch.rpm http://swrep/swrep/x86_64_slc6/xrootd4-client-libs-4.0.0-1.slc6.x86_64.rpm http://swrep/swrep/x86_64_slc6/xrootd4-server-libs-4.0.0-1.slc6.x86_64.rpm http://swrep/swrep/x86_64_slc6/xrootd4-client-4.0.0-1.slc6.x86_64.rpm http://swrep/swrep/x86_64_slc6/xrootd4-client-devel-4.0.0-1.slc6.x86_64.rpm http://swrep/swrep/x86_64_slc6/xrootd4-server-devel-4.0.0-1.slc6.x86_64.rpm -\end{lstlisting} -\end{table} - -After that, you can run again -\begin{table}[h] -\begin{lstlisting} -make castor_rpm -\end{lstlisting} -\end{table} - -You should have no errors (if some packages are still missing, install it) otherwise it should compile castor and create the rpm package. - -A classic compilation is done with the usal \textit{make}. -To run a set of tests \textit{make test} has to be used. -\subsubsection{Compiling on SLC6} -On SLC6, there is clash between oracle-* and postgresql-devel packages about \textit{sqlca.h}. -The package postgresql-devel provides a new file \textit{sqlca.h}, which has several significant -differences with the one provided by the oracle-* packages, thus leading the compilation to fail. - -\subsubsection{Compiling on SLC5} -On SLC5, an empty line is requiered at the end of each file. diff --git a/tapeserver/castor/tape/tapeserver/documentation/README b/tapeserver/castor/tape/tapeserver/documentation/README deleted file mode 100644 index 92c357a32da5776ed441228ec4e1dd43f90eb990..0000000000000000000000000000000000000000 --- a/tapeserver/castor/tape/tapeserver/documentation/README +++ /dev/null @@ -1,11 +0,0 @@ -HOW TO BUILD THE TAPE SERVER DOCUMENTATION -========================================== - -Type the following in order to build the pdf file containing the tape server -documentation: - - pdflatex TapeServer.tex - -The above line should generate the following file: - - TapeServer.pdf diff --git a/tapeserver/castor/tape/tapeserver/documentation/TapeServer.pdf b/tapeserver/castor/tape/tapeserver/documentation/TapeServer.pdf deleted file mode 100644 index 4932578205fbd55ba57ea98c9d32b86d9ae94004..0000000000000000000000000000000000000000 Binary files a/tapeserver/castor/tape/tapeserver/documentation/TapeServer.pdf and /dev/null differ diff --git a/tapeserver/castor/tape/tapeserver/documentation/TapeServer.tex b/tapeserver/castor/tape/tapeserver/documentation/TapeServer.tex deleted file mode 100644 index 663097a9aed88717c973de554784b1066c4c195e..0000000000000000000000000000000000000000 --- a/tapeserver/castor/tape/tapeserver/documentation/TapeServer.tex +++ /dev/null @@ -1,52 +0,0 @@ -\documentclass{castordoc} -%\usepackage{url} -% For clickable links and good readability using dvipdf -\usepackage{times} -\usepackage{color} -\usepackage[colorlinks=true,linkcolor=blue,urlcolor=blue,filecolor=blue]{hyperref} -\usepackage{courier} -\usepackage{listings} -\usepackage{float} -\usepackage{enumitem} -\usepackage[table]{xcolor} -\lstset{ - language=C++, - captionpos=b, - tabsize=8, - frame=lines, - keywordstyle=\color{blue}, - numbers=left, - numberstyle=\tiny, - numbersep=5pt, - breaklines=true, - showstringspaces=false, - basicstyle=\small\ttfamily -} -\definecolor{webred}{rgb}{0.5,0,0} -\usepackage{makeidx} -\makeindex -\usepackage{tabularx} -\usepackage{pgf} -\usepackage{tikz} -\usetikzlibrary{arrows,shadows} % for pgf-umlsd -\usepackage[underline=true,rounded corners=false]{pgf-umlsd} - -\begin{document} -\doctyp{CAStor Tape Server Documentation} -\dociss{1} -\docrev{0} -\docref{http://www.cern.ch/castor} -\doccre{Wed July 3\textsuperscript{rd}, 2013} - -\docmod{\today} - -\title{Tape Server's Handbook} -\author{CAStor development team} -\maketitle -\tableofcontents - -\input{ProgrammersManual} - -\input{AdministratorsManual} - -\end{document} diff --git a/tapeserver/castor/tape/tapeserver/documentation/castordoc.cls b/tapeserver/castor/tape/tapeserver/documentation/castordoc.cls deleted file mode 100644 index 4deb98b399eb3bc53548a16bd3d43a296857b986..0000000000000000000000000000000000000000 --- a/tapeserver/castor/tape/tapeserver/documentation/castordoc.cls +++ /dev/null @@ -1,227 +0,0 @@ -% -% castordoc.cls -% -% LaTeX style for castor documentation -% -% written by sebastien.ponce@cern.ch, inspired from -% lhcbnote.cls (See http://lhcb-comp.web.cern.ch/lhcb-comp/Support/LateX/lhcbnote.tex) -% -\NeedsTeXFormat{LaTeX2e} -\ProvidesClass{castordoc}[] -\LoadClass[twoside,a4paper]{report} -\RequirePackage{calc} -\RequirePackage{array} -\RequirePackage{a4wide} -\RequirePackage{fancyhdr} -\RequirePackage{graphicx} -\renewcommand\chapter{\if@openright\cleardoublepage\else\clearpage\fi - \thispagestyle{fancy}% - \global\@topnum\z@ - \@afterindentfalse - \secdef\@chapter\@schapter} - -\def\@docref{\mbox{-}} -\def\@docrev{\mbox{-}} -\def\@dociss{\mbox{-}} -\def\@docmod{\mbox{-}} -\def\@doccre{\mbox{-}} -\def\@doctyp{\mbox{}} -\newcommand{\docref}[1]{\def\@docref{\mbox{#1}}} -\newcommand{\docrev}[1]{\def\@docrev{\mbox{#1}}} -\newcommand{\dociss}[1]{\def\@dociss{\mbox{#1}}} -\newcommand{\docmod}[1]{\def\@docmod{\mbox{#1}}} -\newcommand{\doccre}[1]{\def\@doccre{\mbox{#1}}} -\newcommand{\doctyp}[1]{\def\@doctyp{\mbox{#1}}} - -\setlength{\voffset}{-1in} -\setlength{\headheight}{2cm} -\renewcommand{\footrulewidth}{0.4pt} -\addtolength{\textheight}{1cm} -%% -\def\ps@myheadings{% - \let\@oddfoot\@empty\let\@evenfoot\@empty - \def\@evenhead{\thepage\hfil\slshape\leftmark}% - \def\@oddhead{{\slshape\rightmark}\hfil\thepage}% - \let\@mkboth\@gobbletwo - \let\chaptermark\@gobble - \let\sectionmark\@gobble - } - \if@titlepage - \renewcommand\maketitle{\begin{titlepage}% - \let\footnotesize\small - \let\footnoterule\relax - \let \footnote \thanks - \includegraphics[width=2cm]{images/CERNLogo} \hfill - \includegraphics[width=4cm]{images/CASTOR_logo_250} - \null\vfil - \vskip 60\p@ - \begin{center}% - {\Huge \@title \par}% - \vskip 3em% - {\large - \lineskip .75em% - \begin{tabular}[t]{c}% - \@author - \end{tabular}\par}% - \vskip 1.5em% - {\large \@date \par}% % Set date in \large size. - \end{center}\par - \@thanks - \vfil\null - {\Large \@doctyp} - - \begin{tabular}[b]{ll} - Issue : & \@dociss \\ - Revision : & \@docrev \\ - Reference : & \@docref \\ - Created : & \@doccre \\ - Last modified : & \@docmod \\ - \end{tabular} - \end{titlepage}% - \setcounter{footnote}{0}% - \global\let\thanks\relax - \global\let\maketitle\relax - \global\let\@thanks\@empty - \global\let\@author\@empty - \global\let\@date\@empty - \global\let\@title\@empty - \global\let\title\relax - \global\let\author\relax - \global\let\date\relax - \global\let\and\relax} - \else - \renewcommand\maketitle{\par - \begingroup - \renewcommand\thefootnote{\@fnsymbol\c@footnote}% - \def\@makefnmark{\rlap{\@textsuperscript{\normalfont\@thefnmark}}}% - \long\def\@makefntext##1{\parindent 1em\noindent - \hb@xtt@1.8em{% - \hss\@textsuperscript{\normalfont\@thefnmark}}##1}% - \if@twocolumn - \ifnum \col@number=\@ne - \@maketitle - \else - \twocolumn[\@maketitle]% - \fi - \else - \newpage - \global\@topnum\z@ % Prevents figures from going at top of page. - \@maketitle - \fi - \thispagestyle{plain}\@thanks - \endgroup - \setcounter{footnote}{0}% - \global\let\thanks\relax - \global\let\maketitle\relax - \global\let\@maketitle\relax - \global\let\@thanks\@empty - \global\let\@author\@empty - \global\let\@date\@empty - \global\let\@title\@empty - \global\let\title\relax - \global\let\author\relax - \global\let\date\relax - \global\let\and\relax} - \def\@maketitle{% - \newpage - \null - \vskip 2em% - \begin{center}% - \let \footnote \thanks - {\HUGE \@title \par}% - \vskip 1.5em% - {\large - \lineskip .5em% - \begin{tabular}[t]{c}% - \@author - \end{tabular}\par}% - \vskip 1em% - {\large \@date}% - \end{center}% - \par - \vskip 1.5em} - \fi - - -\pagestyle{fancy} -\addtolength{\headwidth}{\marginparsep} -\addtolength{\headwidth}{\marginparwidth} -\newcommand{\clearemptydoublepage}{\newpage{\pagestyle{empty}\cleardoublepage}} -\renewcommand{\chaptermark}[1]{\markboth{#1}{}} -\renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}} -\rhead[\fancyplain{}{\bfseries\scriptsize\mbox{% - \begin{tabular}{@{}l@{}} - Title: \@title\\% - \@doctyp\\% - Issue: \@dociss\\% - \leftmark\end{tabular}}}] - {\fancyplain{}{\bfseries\scriptsize\mbox{% - \begin{tabular}{@{}l@{}} - \setlength{\tabcolsep}{0pt}% - Title: \@title\\% - \@doctyp\\% - Issue: \@dociss\\% - \leftmark\end{tabular}}}} -\lhead[\fancyplain{}{\bfseries\scriptsize\mbox{% - \begin{tabular}{@{}lr@{}}% - Reference: & \@docref\\% - Revision: & \@docrev\\% - Last modified: & \@docmod\\ - &\end{tabular}}}] - {\fancyplain{}{\bfseries\scriptsize\mbox{% - \begin{tabular}{@{}lr@{}}% - Reference: & \@docref\\% - Revision: & \@docrev\\% - Last modified: & \@docmod\\ - &\end{tabular}}}} -\lfoot[\fancyplain{}{\bfseries\scriptsize page \thepage}]{} -\rfoot[]{\fancyplain{}{\bfseries\scriptsize page \thepage}} -\cfoot{} -\newenvironment{CompactList} -{\begin{list}{}{ - \setlength{\leftmargin}{0.5cm} - \setlength{\itemsep}{0pt} - \setlength{\parsep}{0pt} - \setlength{\topsep}{0pt} - \renewcommand{\makelabel}{}}} -{\end{list}} -\newenvironment{CompactItemize} -{ - \begin{itemize} - \setlength{\itemsep}{-3pt} - \setlength{\parsep}{0pt} - \setlength{\topsep}{0pt} - \setlength{\partopsep}{0pt} -} -{\end{itemize}} -\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp} -\newlength{\tmplength} -\newenvironment{TabularC}[1] -{ -\setlength{\tmplength} - {\linewidth/(#1)-\tabcolsep*2-\arrayrulewidth*(#1+1)/(#1)} - \par\begin{tabular*}{\linewidth} - {*{#1}{|>{\PBS\raggedright\hspace{0pt}}p{\the\tmplength}}|} -} -{\end{tabular*}\par} -\newcommand{\entrylabel}[1]{ - {\parbox[b]{\labelwidth-4pt}{\makebox[0pt][l]{\textbf{#1}}\\}}} -\newenvironment{Desc} -{\begin{list}{} - { - \settowidth{\labelwidth}{40pt} - \setlength{\leftmargin}{\labelwidth} - \setlength{\parsep}{0pt} - \setlength{\itemsep}{-4pt} - \renewcommand{\makelabel}{\entrylabel} - } -} -{\end{list}} -\newenvironment{Indent} - {\begin{list}{}{\setlength{\leftmargin}{0.5cm}} - \item[]\ignorespaces} - {\unskip\end{list}} -\setlength{\parindent}{0cm} -\setlength{\parskip}{0.2cm} -\addtocounter{secnumdepth}{2} -\sloppy diff --git a/tapeserver/castor/tape/tapeserver/documentation/filesDaemon.ods b/tapeserver/castor/tape/tapeserver/documentation/filesDaemon.ods deleted file mode 100644 index 026aff6b4270b3e5115d507c23eaee08d0c90c6a..0000000000000000000000000000000000000000 Binary files a/tapeserver/castor/tape/tapeserver/documentation/filesDaemon.ods and /dev/null differ diff --git a/tapeserver/castor/tape/tapeserver/documentation/images/CASTOR_logo_250.eps b/tapeserver/castor/tape/tapeserver/documentation/images/CASTOR_logo_250.eps deleted file mode 100644 index ce0402dba807859fbf786a576dc395125266967a..0000000000000000000000000000000000000000 --- a/tapeserver/castor/tape/tapeserver/documentation/images/CASTOR_logo_250.eps +++ /dev/null @@ -1,2299 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: (ImageMagick) -%%Title: (images/CASTOR_logo_250.eps) -%%CreationDate: (Wed Jul 3 16:15:08 2013) -%%BoundingBox: 0 0 236 92 -%%HiResBoundingBox: 0 0 236.22 92 -%%DocumentData: Clean7Bit -%%LanguageLevel: 1 -%%Pages: 1 -%%EndComments - -%%BeginDefaults -%%EndDefaults - -%%BeginProlog -% -% Display a color image. The image is displayed in color on -% Postscript viewers or printers that support color, otherwise -% it is displayed as grayscale. -% -/DirectClassPacket -{ - % - % Get a DirectClass packet. - % - % Parameters: - % red. - % green. - % blue. - % length: number of pixels minus one of this color (optional). - % - currentfile color_packet readhexstring pop pop - compression 0 eq - { - /number_pixels 3 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add 3 mul def - } ifelse - 0 3 number_pixels 1 sub - { - pixels exch color_packet putinterval - } for - pixels 0 number_pixels getinterval -} bind def - -/DirectClassImage -{ - % - % Display a DirectClass image. - % - systemdict /colorimage known - { - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { DirectClassPacket } false 3 colorimage - } - { - % - % No colorimage operator; convert to grayscale. - % - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { GrayDirectClassPacket } image - } ifelse -} bind def - -/GrayDirectClassPacket -{ - % - % Get a DirectClass packet; convert to grayscale. - % - % Parameters: - % red - % green - % blue - % length: number of pixels minus one of this color (optional). - % - currentfile color_packet readhexstring pop pop - color_packet 0 get 0.299 mul - color_packet 1 get 0.587 mul add - color_packet 2 get 0.114 mul add - cvi - /gray_packet exch def - compression 0 eq - { - /number_pixels 1 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add def - } ifelse - 0 1 number_pixels 1 sub - { - pixels exch gray_packet put - } for - pixels 0 number_pixels getinterval -} bind def - -/GrayPseudoClassPacket -{ - % - % Get a PseudoClass packet; convert to grayscale. - % - % Parameters: - % index: index into the colormap. - % length: number of pixels minus one of this color (optional). - % - currentfile byte readhexstring pop 0 get - /offset exch 3 mul def - /color_packet colormap offset 3 getinterval def - color_packet 0 get 0.299 mul - color_packet 1 get 0.587 mul add - color_packet 2 get 0.114 mul add - cvi - /gray_packet exch def - compression 0 eq - { - /number_pixels 1 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add def - } ifelse - 0 1 number_pixels 1 sub - { - pixels exch gray_packet put - } for - pixels 0 number_pixels getinterval -} bind def - -/PseudoClassPacket -{ - % - % Get a PseudoClass packet. - % - % Parameters: - % index: index into the colormap. - % length: number of pixels minus one of this color (optional). - % - currentfile byte readhexstring pop 0 get - /offset exch 3 mul def - /color_packet colormap offset 3 getinterval def - compression 0 eq - { - /number_pixels 3 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add 3 mul def - } ifelse - 0 3 number_pixels 1 sub - { - pixels exch color_packet putinterval - } for - pixels 0 number_pixels getinterval -} bind def - -/PseudoClassImage -{ - % - % Display a PseudoClass image. - % - % Parameters: - % class: 0-PseudoClass or 1-Grayscale. - % - currentfile buffer readline pop - token pop /class exch def pop - class 0 gt - { - currentfile buffer readline pop - token pop /depth exch def pop - /grays columns 8 add depth sub depth mul 8 idiv string def - columns rows depth - [ - columns 0 0 - rows neg 0 rows - ] - { currentfile grays readhexstring pop } image - } - { - % - % Parameters: - % colors: number of colors in the colormap. - % colormap: red, green, blue color packets. - % - currentfile buffer readline pop - token pop /colors exch def pop - /colors colors 3 mul def - /colormap colors string def - currentfile colormap readhexstring pop pop - systemdict /colorimage known - { - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { PseudoClassPacket } false 3 colorimage - } - { - % - % No colorimage operator; convert to grayscale. - % - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { GrayPseudoClassPacket } image - } ifelse - } ifelse -} bind def - -/DisplayImage -{ - % - % Display a DirectClass or PseudoClass image. - % - % Parameters: - % x & y translation. - % x & y scale. - % label pointsize. - % image label. - % image columns & rows. - % class: 0-DirectClass or 1-PseudoClass. - % compression: 0-none or 1-RunlengthEncoded. - % hex color packets. - % - gsave - /buffer 512 string def - /byte 1 string def - /color_packet 3 string def - /pixels 768 string def - - currentfile buffer readline pop - token pop /x exch def - token pop /y exch def pop - x y translate - currentfile buffer readline pop - token pop /x exch def - token pop /y exch def pop - currentfile buffer readline pop - token pop /pointsize exch def pop - /Times-Roman findfont pointsize scalefont setfont - x y scale - currentfile buffer readline pop - token pop /columns exch def - token pop /rows exch def pop - currentfile buffer readline pop - token pop /class exch def pop - currentfile buffer readline pop - token pop /compression exch def pop - class 0 gt { PseudoClassImage } { DirectClassImage } ifelse - grestore -} bind def -%%EndProlog -%%Page: 1 1 -%%PageBoundingBox: 0 0 236 92 -userdict begin -DisplayImage -0 0 -236.22 91.6535 -12.000000 -250 97 -0 -0 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF2E9FBC49DF9A162F88939 -F77C22F77B21F77B21F77D25F88D3FF9A567FBC49DFDECDFFFFEFEFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFEFDFBFCDAC0F9A66AF77D25F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F89954FCD4B6FEFEFDFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFCFBFDDDC6 -FAB37FF78736F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F89750FDE5D4FFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFEFAF7FDE3D0FBC59EF9A467F7822EF77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77D25FBC69FFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFEFDFBFDEADDFCDAC2FCD1B2FCCDACFCCCAAFBC8A2FBC095FAB380 -F9A365F89045F77D25F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21FAB482FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE8D9 -F9A86DF7822CF77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21FABA8CFFFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDAC2F77F28F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21FCD3B5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDECDFF7822DF77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F7822CFDEBDEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFF9A162F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F8944BFEFBF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FDEADCF77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21FAB684 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB787F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77C23FDE0CBFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFDFDF78939F77B21F77B21F77B21 -F77B21F77B21F77D24F9A262F9A05FF77D24F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F89146FEFCFAFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE2CEF77B21F77B21F77B21F77B21F77B21F77B21 -FCCDABFEF6F1FEFEFDFCD9BFF77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21FBC69FFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFBBD91F77B21F77B21F77B21F77B21F77B21F77B21FAAC74F77B22 -F99C59FEFAF8F77D24F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F78634FEF9F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFF9A05FF77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F88B3CF9A76B -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21FBC7A1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF88A3B -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F89146FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFDF77F28F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21FDE6D6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFDF78029F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21FBC095 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF89146F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F9A161FFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFBBD90F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F88A3AFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFEF9F5F89750F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77C22FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FEFBF9FBCBA7FAAA70F8974FF77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFEFEFBC9A5F77B21F77B21F9AB72FABA8BF7802AF77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FCD7BCF77B21F77B21FCD9C0FFFFFFFDE3CFF78533F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE7D7FAB787 -FABB8DFDEBDEFFFFFFFFFFFFFDEBDEF88C3EF77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F78431FFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFEF2E9F8944BF77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F89853FFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFEF7F3F8954DF77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21FAB37FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFF9A466F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21FCD4B7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFAF7F78431 -F77B21F77B21F77B21F77B21F77B21F77B21F78634F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77E27FEF7F2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFDFDFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFABB8DF77B21F77B21F77B21 -F9A160FBC096FBBF94FCD9BFFEFCFAFBBE92F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F9A467FFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6E5E6BAB7B9FFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFBC39AF77B21F77B21F77B21F78431FEF3EBFFFFFF -FFFFFFFFFFFFFFFFFFFEFEFEFAB27EF77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21FCD8BDFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA09C9F797379FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFEF1E8F9A264F77B21F77B21F77B21F77B21FCCFAEFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFEFDFCF9A76BF77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F88E41FEFDFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEB6B3B5DAD8DAFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD -CFCDCF989397746E74686268645E64726C72918C90C2BFC1F8F7F8FFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEEBEAEBBFBCBF -9D999D8580857570756D676D706A6F7C777C8E898EA6A3A6C6C4C6EDECEDFEFEFEFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD -FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF918D91281F28E0DFE0FFFFFFFFFFFFFFFFFFFFFFFFFEF0E6F78634 -F77B21F77B21F77B21F77B21F9A466FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFEFBF8F99D5BF77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21FCCBA8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFED9D7D8A4A0A47B767B5D565D4942493F373F -3A323A443C444E464D5B555B6B656B7F797EA09C9FCBC9CBF7F7F7FFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4D2D42118215A5359FEFEFEFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAA4A0A3403840211821211821 -2118212118212118212118212118212118212E252E7F7A7FECEBECFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF7A747A3A323A3A323A3A323A3A323A3A323A3A323A362E36332B33 -332B33332B33332B33332B33332B33332B33332B332C232C2C232C2C232C2C232C2C232C -2C232C2C232C2C232C2A2129271F27EFEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDDDE8B868B463E46211821211821211821211821 -2118212118212118212118212118212118212118212118214139417D787DC7C5C7FDFDFD -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF292028261D26261D26261D26261D26261D26261D26261D26261D26 -261D26261D26261D262D242D3F373F5E585E8C878CCCCACCFEFEFEFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFBDBABC2118214C454CF2F2F2FFFFFFFFFFFFFFFFFFFCD8BEF77B21F77B21F77B21 -F77B21F78838FEF4ECFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBCAA6F78430F78735 -F89A56F77B22F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F88D40FEFCFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFE9E8E88E898D3E363D211821211821211821211821211821211821211821211821 -211821211821211821211821211821211821292028665F65BDBBBDFEFEFEFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF706B70211821211821D5D3D5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFD2D0D1463E462118212118212118212B222B534C53585258 -3E363E211821211821211821211821211821362E36D7D5D6FFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF8B878B211821211821211821211821211821211821211821211821211821211821 -211821211821211821211821211821211821211821211821211821211821211821211821 -211821211821372F36FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFDEDDDE696369221922211821211821211821312830696369928E92AAA6AAB3B0B3 -AEABAE9D999D7C777C4B444B221922211821211821211821211821453E45B3B0B3FEFEFE -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF231A23211821211821211821231A23231A22211821211821211821211821211821 -211821211821211821211821211821211821494249C5C2C5FFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFC -4E464D2118214E474DE6E5E6FFFFFFFFFFFFFEF2E9F77F27F77B21F77B21F7812BFDE2CE -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A364F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F89751FEFCFA -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F3F3868186281F28 -211821211821211821251C24605A609D999CC6C3C5DDDBDCE0DFE0D3D1D3B8B5B8878287 -484048211821211821211821211821211821211821696268FFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -E6E5E6251C25211821211821746E73FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFC3C1C3282028211821211821271E27979296F5F5F5FFFFFFFFFFFFFEFEFEDEDDDE -736D72211821211821211821221922C7C5C7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF868085 -2118212118212118212118213028304B444B615B61746E738A858A9B969A271E27211821 -2118212118216D676C8E8A8E817C816F696F5B545A433C432A222A211821211821211821 -342C34FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD9A969A271E27 -211821211821211821474047B5B1B4FAFAFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFE5E3E48D898D2F262F21182121182121182121182160595FEDECEDFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF231A23 -2118212118212118216D686DFDFDFDFBFBFBF6F6F6F0EFF0ECEBECDEDCDDBEBBBE847F84 -302830211821211821211821211821221922A19DA1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2E1E23A3239 -211821312931ADAAADFEFDFDFFFFFFFDE7D7FCCBA9FBCAA6FDE9DAFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD8BEF78939F88D40F8954CF99C59F9A365FAAA70 -FAB27DF8954DF77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21FABA8AFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCDCF3D353D211821211821211821261D26 -837E83E8E7E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6D4D6 -736D73231B23211821211821211821837E83FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF868186211821 -211821211821271E27EAE9EAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3E2E32E252E -2118212118212A212AC8C6C8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5B2B5 -261D262118215E575EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA6A2A5999498BEBBBE -DAD8DAF0EFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B222B211821211821211821 -AEABAEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEEBEAEBCDCBCDABA8AB888388F0EFF0 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFA706A6F211821211821211821211821 -8A858AFAFAFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFEDEDED716B70211821211821211821211821423A42E7E6E7FFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF231A23211821211821 -2118216E686EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEEDEE6E686E -211821211821211821211821221922C1BFC1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F5F5E7E6E6544D54211821 -2118214E474EBBB8BBFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFD -FCDAC1FAAE77F88F43F77D25F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77D25FDE9DAFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFB7B4B6271F272118212118212118214A434AD9D8D9FFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4D2D4 -4C444B211821211821C8C6C8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F2F32E252E211821211821211821 -2118218E8A8EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D666C211821211821211821 -ABA7AAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D999D211821 -A5A1A4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B222B211821211821211821AEABAEFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFDFCFD6C666C211821211821211821211821A09C9FFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFEFEFEA4A0A3241B24211821211821211821443C44EEEEEEFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF231A232118212118212118216E686E -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE868185211821 -211821211821211821403840FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6D4D5ACA9ACFFFFFFFCFCFCA4A0A3352D35211821 -2118213F373F918D91DCDBDCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFEF0E6F9A05FF77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F9A76BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -B9B6B9251C24211821211821211821686268F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F97B767B -332B33FCFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C989C211821211821211821211821211821342B33 -F7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7E6E7231B23211821211821413941FDFDFDFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9494148DEDDDEFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF2B222B211821211821211821AEABAEFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF8680852118212118212118212118217C777CFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFAFACAF2219222118212118212118215A535AFBFBFBFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF231A232118212118212118216E686EFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFC4B444B211821211821 -211821211821BDBABDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF979397666066FFFFFFFFFFFFFFFFFFF6F6F6A4A0A3494149211821 -2118212118214139417C777CB0ADB0DDDCDDFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F8F7FBC7A1F7832E -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77D24FEF1E7FFFFFFFFFFFFFFFFFFD4D2D4292129211821 -211821211821686167FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEDEDDDEFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFBFBFB3C343B2118214D454C251C25211821211821211821A8A5A8FFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFA7A3A72118212118212118217F7A7FFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF2B222B211821211821211821AEABAEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB4B1B4211821 -211821211821211821474047F8F7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -8D898D211821211821211821211821918D91FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF231A232118212118212118216E686EFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB6B3B6211821211821211821211821 -827D82FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF959195221922C8C5C7FFFFFFFFFFFFFFFFFFFFFFFFFEFEFED6D5D6908B8F504950 -241B242118212118212118212A21294942496660667D787D908B8F9D999DA6A2A6ACA8AC -AAA7AAA4A1A49B979A8B878B7872785F585F6B4D40CD6924F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21FBC7A2FFFFFFFFFFFFF5F4F5413940211821211821211821473F46 -F6F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -B2AFB2211821211821B9B6B96A646A211821211821211821484047FEFEFEFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF7B757A211821211821211821938F93FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -2B222B211821211821211821AEABAEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8E7E830272F211821211821211821 -221922CECBCDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFB4E474E -211821211821211821261D25DBDADBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF231A232118212118212118216E686EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEEDED211821211821211821211821645E64FFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCECCCD -211821352D35DDDCDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F2F2C3C1C3 -979397706A6F4E474E312931211821211821211821211821211821211821211821211821 -2118212118212D1D219B5021F47921F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21FAAA70FFFFFFFFFFFF847F83211821211821211821231A23D1CFD1FFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE4E474E211821 -3C343BFCFCFCC8C5C7211821211821211821211821C3C0C3FFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF736D72 -211821211821211821847F83FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B222B211821 -211821211821AEABAEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F696F2118212118212118212118216F696EFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCECCCE211821211821 -211821211821655E64FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF231A23 -2118212118212118216E686EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFEFEFE221922211821211821211821605960FFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE6B656B211821 -332A33C5C3C5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFEFEFEF6F5F6E1E0E1D1CFD1C6C4C6BEBBBDBDBABCBDBABCBFBCBEC7C4C6D1A588 -E97928F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F99A56 -FFFFFFE0DFE0251D252118212118212118216F696FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8C6C8211821211821969195FFFFFF -FEFEFE474047211821211821211821615B61FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF817C81211821211821 -211821403840FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B222B211821211821211821 -AEABAEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFD6D4D6221922211821211821211821221922DBD9DAFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C565C211821211821211821 -221922DAD8DAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF231A23211821211821 -2118216E686EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFECECEC2118212118212118212118216E686EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F4F4575057211821231A23 -7E787DEEEDEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEBDEF99F5EF77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F99A55FFFFFF7A757A -211821211821211821211821D2D0D1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF645E64211821271E27ECEBECFFFFFFFFFFFFA4A0A3 -211821211821211821221922DCDBDCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E9A9E211821211821211821211821 -A4A0A3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B222B211821211821211821AEABAEFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -726C722118212118212118212118215D575DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5B2B4211821211821211821211821847F84 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF231A232118212118212118216E686E -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBCBF -211821211821211821211821959095FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEE7E6E7F9F8F9837D82231A222118212E252E -8B868AE7E6E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFEFCFBFBBC8EF77E26F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F9A96FF4F4F42B222B211821211821 -211821433C43FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFDCDBDC221922211821726C71FFFFFFFFFFFFFFFFFFF4F3F42D252D211821 -2118212118217B767BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC9C7C92118212118212118212118212A212AC5C2C4 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF2B222B211821211821211821AEABAEFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F3F3292029211821 -211821211821211821B0ACAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFF5F4F5271E272118212118212118213F373FFEFEFEFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF231A232118212118212118216E686EFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE615B61211821211821 -211821211821D9D7D8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFC3C1C3A09CA0FFFFFFFFFFFFD2D0D15C555C211821211821241B24 -615B61ADA9ACEDECECFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FEF9F5F99F5DF77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21FBCBA8B6B3B5211821211821211821211821817B80 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -7A747A211821211821CFCDCFFFFFFFFFFFFFFFFFFFFFFFFF807B80211821211821211821 -2A212AEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFF7F7F7292129211821211821211821211821251D25948F94F8F8F8 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF2B222B211821211821211821AEABAEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB6B3B6211821211821211821211821 -241B24F1F0F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF544D54211821211821211821211821E3E2E3FFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF231A232118212118212118216E686EFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB4B1B42118212118212118212118216A646A -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF928E92514950FEFEFEFFFFFFFFFFFFFFFFFFD3D1D37973782F262F211821211821 -231A234C444B807B80AEAAADD5D4D5F5F5F5FFFFFFFFFFFFFFFFFFFEFEFEF9A86CF77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F78430FEF7F27C777C211821211821211821211821AEABAEFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFECEBEC282028211821 -4E474EFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFDCDADC221922211821211821211821969195 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF7C767B211821211821211821211821211821211821393139948F93E9E8E9 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -2B222B211821211821211821AEABAEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF817B802118212118212118212118214D454CFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF7D787D211821211821211821211821B8B5B8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF231A232118212118212118216E686EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFC0BDBF2A2129211821211821211821473F47EFEEEFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C989B -211821A7A3A7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9C0BDBF807B80484047221922 -211821211821211821221922362E364D464D60595F937466F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -FBCAA5FFFFFF514A51211821211821211821211821CECCCEFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF908B8F211821211821ABA8ABFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFEFEFE5C555C211821211821211821393139FAF9FAFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -F4F3F34E474E211821211821211821211821211821211821211821251C25696369C3C0C2 -FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B222B211821 -211821211821AEABAEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF5952592118212118212118212118217E797EFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF989498 -211821211821211821211821938F93FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF231A23 -2118212118212118216E686EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F2F3 -858085231A23211821211821211821524B52EDECECFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0DEDF241B24261E26 -BBB9BBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F1F1C7C4C6A09CA0 -7E787D615A61484047342B33251C257B4221F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21FAAD76FEFEFEFFFFFF -332B33211821211821211821211821E2E1E2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFF7F7F7332B33211821322931F7F7F7FFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFB9B6B9211821211821211821211821B0ADB0FFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F3F3 -6F696F2118212118212118212118212118212118212118212118212118214038409C989B -F6F6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B222B211821211821211821 -AEABAEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF3B333B211821211821211821211821A39FA3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA9A5A8211821211821 -2118212118217A747AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF231A23211821211821 -2118216B656BFFFFFFFFFFFFFCFBFBF1F0F0DAD8DAB5B2B47C767B302830211821211821 -211821261D268A868AF9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F8A8F211821241B24979296 -FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFDFDFDF8D5BCF77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21FAB07BFEFDFCFFFFFFFFFFFF231A22211821 -211821211821211821E8E8E8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFA6A2A5211821211821878287FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFBFBFB3B333B2118212118212118214E474EFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEC2C0C2 -514A502118212118212118212118212118212118212118212118212118213B333BC2C0C2 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B222B211821211821211821AEABAEFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF322932 -211821211821211821211821C2BFC2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFADAAAD211821211821211821211821 -6D676DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF231A23211821211821211821211821 -251C25251C25241B24211821211821211821211821211821211821372F37878287E3E2E3 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD827D81211821211821504950CBC9CB -FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFEFDFDF89A55F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F7822DFCCDACFEFEFEFFFFFFFFFFFFFFFFFF211821211821211821211821 -211821E8E8E8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD -433C43211821231A23E2E1E2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -959195211821211821211821211821CBC8CAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEC8C6C8 -5F595F211821211821211821211821211821211821211821211821221A22A19EA1FFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF2B222B211821211821211821AEABAEFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF322932211821211821 -211821211821D7D6D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA6A3A62118212118212118212118216A646AFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF231A232118212118212118212F262F4A424A2C232C -211821211821211821211821322A32A5A1A4D4D2D4FCFCFCFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFF8F8F8D8D6D7FFFFFFB3AFB2332B332118212118215B545ABBB8BA -FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FEF4ECF8974FF77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F67A21F7A468 -FEF0E6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF221922211821211821211821211821E3E2E3 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBCB9BB211821211821 -251D25473F47473F47473F47473F47473F47473F47473F47473F47473F473E363E211821 -211821211821211821696368FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD3D1D2 -6A646A231A23211821211821211821211821211821211821221922BDBABCFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF2B222B211821211821211821AEABAEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF352D35211821211821211821211821 -D3D1D2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF8E8A8E2118212118212118212118216D676DFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF231A232118212118212118216E686EFFFFFFC1BEC0231A23211821 -2118212118212118219C989BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFB3B0B3938F93FFFFFFFFFFFFF1F0F18C888C2F272F211821211821352D357C777C -BFBCBEF5F4F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFBF8 -FAB989F77E26F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F77B21F77B21F77B21F77B21F77B22F9A262C6A998AEAAADFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF2F262E211821211821211821211821D4D2D3FFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE585157211821211821211821211821 -211821211821211821211821211821211821211821211821211821211821211821211821 -211821231A23E2E1E2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDBDC -7A757A281F282118212118212118212118212118213A323AF7F6F6FFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -2B222B211821211821211821AEABAEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF453D44211821211821211821211821C2C0C2FFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF6F696F2118212118212118212118217D777DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF231A232118212118212118216E686EFFFFFFFFFFFF938F93211821211821211821 -211821241B24C5C3C5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF908B8F -3E363EF8F8F8FFFFFFFFFFFFFFFFFFF5F4F4A9A6A9595258231B23211821211821261D26 -5049507D787DA5A1A5C7C5C7E4E3E4FAFAFAFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFEEEE2 -FAB582F78533F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21F77B21 -F77B21F77B21F88E41FABA8BFDEBDEFFFFFF797378757075FFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF463F46211821211821211821211821BCB9BCFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFD1CFD12118212118215149508B878B8B878B8B878B8B878B -8B878B8B878B8B878B8B878B8B878B8B878B8B878B6C666C211821211821211821211821 -837E83FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1E0E1 -4C454C211821211821211821211821211821A7A4A7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B222B211821 -211821211821AEABAEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF5D565D211821211821211821211821AAA6A9FFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF484048 -211821211821211821211821989397FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF231A23 -2118212118212118216E686EFFFFFFFFFFFFFDFDFD655E64211821211821211821211821 -332A32E4E3E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA6A2A5211821827D81 -FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDECEDB0ADB0787378463E45231A23211821 -2118212118212118212219223027303D353D463E464B444B4B444B443C443A323A2D232A -532F21854621AC5821C76521D86D21E37627F88B3DF8934AF9A161FAB481FCCEACFEEDE0 -FFFFFFFFFFFFFFFFFFCDCBCD241B247C777CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -6962682118212118212118212118219C989CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF6D676D211821211821C2BFC1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F3F32C232C2118212118212118212D252DF2F2F2 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0EFEF3D353D -211821211821211821211821615A60FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B222B211821211821211821 -AEABAEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF7F7A7F211821211821211821211821868186FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F1F1241B24211821211821 -211821211821BFBCBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF231A23211821211821 -2118216E686EFFFFFFFFFFFFFFFFFFF1F0F14139412118212118212118212118214D454C -F7F6F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEEDEE2E262E2118218E8A8EFEFEFE -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F4F4D0CED0AEAAAD918C91 -787278645E64544D544841484139403C343B3C343C4139414A434A564F566760667C777C -969195B4B1B4D8D6D8FAF9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -D8D6D8352C34211821C0BDC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF979296211821 -211821211821211821716B71FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4E3E3 -241B24211821383038FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF7A757A2118212118212118212118219D999DFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8B5B8211821211821 -211821211821383038FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B222B211821211821211821AEABAEFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAEAAAD -211821211821211821211821575057FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB9B6B9211821211821211821211821241B24 -F0EFF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF231A232118212118212118216E686E -FFFFFFFFFFFFFFFFFFFFFFFFD8D6D82A222A211821211821211821211821726C72FEFEFE -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB4B0B3221922211821676167ECEBEBFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEB3B0B22D252D211821 -686268FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2D0D2211821211821211821 -2118213B333BFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF837E83211821211821 -888388FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFD3D1D32118212118212118212118213E363EFCFCFCFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD3D353D211821211821211821 -271E27FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF2B222B211821211821211821AEABAEFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8E7E8221922211821 -211821211821271E26F3F3F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF726C72211821211821211821211821595258FFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF231A232118212118212118216E686EFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFB2AFB22118212118212118212118212118219F9B9EFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB1ADB02920292118213028309C979BF6F6F6FFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8D6D8635C62211821211821625B61F7F6F7FFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD3F373F211821211821211821211821 -D5D3D5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F1F12C242C211821211821DAD9DAFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FEFEFE4E464D211821211821211821211821B8B5B8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF777277211821211821211821312931FFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF2B222B211821211821211821AEABAEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF575057211821211821211821 -211821ADAAADFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFF2F1F22B222B211821211821211821211821ADAAADFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF231A232118212118212118216E686EFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFEFEFE827D82211821211821211821211821251C25C8C5C7FFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFEFEEEFC5C2C4FFFFFFDAD9DA564F56211821211821332B338A858ADEDDDEFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FBFBFBC0BDBF655E64221922211821292129989397FCFCFCECEBECF0F0F0FFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9995982118212118212118212118217F7A7FFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF9995992118212118214F474EFEFEFEFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA6A2A6 -211821211821211821211821564F56FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF8E8A8E211821211821211821534C52FFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -2B222B211821211821211821AEABAEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB5B2B4211821211821211821211821504950 -FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF989397 -2118212118212118212118213B333BF9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF231A232118212118212118216E686EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FAFAFA564F56211821211821211821211821342C34E5E4E5FFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA6A2A6 -847F83FFFFFFFFFFFFFEFEFEBDBABD564F552118212118212118214C454C8F8A8ECAC7C9 -F8F7F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEEDEDEDB7B4B7797378352D35211821 -2118212921297D787DE6E5E6FFFFFFFFFFFFBBB8BA9C989BFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFF3F2F2342C34211821211821211821292129E9E8E8FFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFAFAFA3A3239211821211821A19DA1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F3F32C242C211821 -211821211821211821D2D0D2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF7F7A7F2118212118212118218A868AFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B222B211821 -211821211821AEABAEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFDFDFD4E474E211821211821211821211821B9B6B9FFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEEDEE312831211821211821 -211821211821B3AFB2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF231A23 -2118212118212118216E686EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAE9E9 -372F372118212118212118212118214F474EF7F7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF908B8F2F272FECEBEC -FFFFFFFFFFFFFFFFFFFFFFFFD9D7D9898489423A42211821211821211821261D264D464D -756F75969296B4B1B3CBC9CBDDDCDDEBEAEBF4F3F4F9F8F9F9F8F9F2F2F2E8E7E7DAD8D9 -C6C3C5ADA9AD8E898E6A646A413940211821211821211821241B24575057A39FA2F0EFF0 -FFFFFFFFFFFFFFFFFFFEFEFE615A60726C72FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFACA8AB2118212118212118212118216A6369FEFEFEFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFACAF -211821211821261E26EEEDEDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7A757A211821211821211821 -211821706A70FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF827D82999598FFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -4F484F211821211821211821D9D8D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B222B211821211821211821 -AEABAEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFD6D5D6281F28211821211821211821393139EFEEEEFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE706A6F2118212118212118212118216C666C -FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF231A23211821211821 -2118216E686EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCCACB261D26 -211821211821211821211821756F74FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3B0B32118215E585EFAF9F9FFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEE0DFE0A8A4A8767075494249261D26211821211821 -211821211821211821211821211821211821211821211821211821211821211821211821 -2118212118212B232B524B52817C81B6B3B5EFEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFADA9AC211821868185FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FEFEFE6B656B211821211821211821211821969296FEFEFEFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE4C444B211821211821 -676167FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD3D1D3211821211821211821211821261D26 -E8E6E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF696268261D26D2D0D1FFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDAD8DA221922211821 -211821686167FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B222B211821211821211821AEABAEFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFB3B0B3231A232118212118212118215C555CF9F9F9FFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFA19DA12118212118212118212118214E474DF4F4F4FFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF231A232118212118212118216E686E -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA19DA1211821211821 -211821211821211821A19DA1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F8F83F373F211821635C62F4F3F4FFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFADEDCDDC1BEC1A8A4A8949094 -847F84787278726C716A646A6B656B726C717A757A868186969296ACA9ACC6C3C5E4E3E4 -FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB4B0B3251D25 -221A22D6D4D5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F4F5 -514A512118212118212118212118218A858AFDFCFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD -9E9A9EF6F6F6FFFFFFFFFFFFFFFFFFFFFFFFC5C3C5211821211821211821BAB7B9FFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D454C2118212118212118212118218B868AFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F474E2118213C343BEAE9E9FFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE615B612118212118212D242DE2E1E2 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF2B222B211821211821211821AEABAEFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFB2AEB1261D26211821211821211821625C62F5F5F5FFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -B0ACAF231A23211821211821211821504950EEEDEDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF231A232118212118212118216E686EFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE726C71211821211821211821 -211821251C25C9C7C9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFD3D1D32E252D211821423A41CAC8CAFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F5F6837E832219222118218E898EFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F0F1554E55 -2118212118212118212118215B545AE3E1E2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9D7D85A5359332B33FEFEFE -FFFFFFFFFFFFFFFFFFFFFFFF615B61211821211821332B33FAFAFAFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFA6A2A5211821211821211821211821322931F6F6F6FFFFFFFFFFFF -FFFFFFFFFFFFF9F8F92A222A211821211821463F46E6E5E6FFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFEFEFE908B8F211821211821221922B6B2B5FFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF2B222B211821211821211821AEABAEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -C7C4C7332B33211821211821211821494148D9D8D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFC928D91231A22211821 -2118212118216F696EF6F5F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF231A232118212118212118216E686EFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F64A434A211821211821211821211821 -352D35E6E5E6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFD5D3D53F373F2118212219226B656BD8D6D7FFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFAFAFAABA8AB3B333B2118212219228F8B8FFEFEFEFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8767176211821 -211821211821211821292029878287E7E6E7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFDFDFDC7C4C66B656B231A23211821514950FFFFFFFFFFFFFFFFFF -FFFFFFDAD8DA221922211821211821807B80FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFF3F3F32C232C211821211821211821211821A5A1A5FFFFFFFFFFFFFFFFFFFFFFFF -BDBABD211821211821211821211821322931969195E0DEDFFEFEFEFFFFFFFFFFFFFEFDFD -D1CFD16861672118212118212118219F9B9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -2B222B211821211821211821AEABAEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7E6E7 -5E575D211821211821211821261D26817C81E5E4E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEC6C3C550484F2118212118212118212F262FAAA6A9 -FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFF231A232118212118212118216E686EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1DFE0302730211821211821211821211821504950 -F8F8F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFF4F3F4868185271F272118212119215A535AAFACAFF3F3F3FFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEE0DEDF908B8F -3A3139211821211821443D44C6C3C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEB6B3B6383037211821 -211821211821211821241B245B545A959195BEBBBED5D3D5DBDADBD8D6D8C1BFC19E9A9E -716B71362E3621182121182121182140383FC4C2C4FFFFFFFFFFFFFFFFFFFFFFFF777176 -211821211821211821D3D1D2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -7A747A211821211821211821211821443D44FDFDFDFFFFFFFFFFFFFFFFFFF8F7F77F797E -221922211821211821211821211821211821342B334D454C4A434A2F272F211821211821 -2118212A212AAFACAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B222B211821 -211821211821AEABAEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEB1AEB1 -3D353D211821211821211821231B235C555C999599C5C3C5E2E1E2F0EFEFF0EFF0E2E0E1 -C2BFC18E8A8E484047211821211821211821261D257B757AEAE9EAFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF231A23 -2118212118212118216E686EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFBEBBBE221922211821211821211821211821777177FEFEFE -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFE6E5E6858085312931211821211821271F275F585E9A969ACECBCDF7F7F7 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFEFEFEEEEDEDBEBCBE8883874941492118212118212118214B444B -ADA9ACFBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F4F4979397383038211821 -211821211821211821211821211821211821211821211821211821211821211821211821 -221922514950A6A2A6F8F7F8FFFFFFFFFFFFFFFFFFFFFFFFEAE9EA271F27241B24292028 -474047FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2D0D2211821 -281F28281F28211821211821BFBDBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4D2D36A646A -271E27211821211821211821211821211821211821211821211821221922686268DFDEDF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2B222B2F262F3F373E292029 -AEABAEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAB1AEB1 -5D565D251C25211821211821211821211821211821211821211821211821211821211821 -2118212118213F373F8E898DE6E5E6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF231A233229323C343C -2F262E6E686EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFF908B902118212B222B3D353D3830382C232CA4A0A3FFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFF8F8F8BAB7B9726C71342C34211821211821211821251C25453E45676167 -847E839B979BADAAADBBB9BBC4C2C4C8C5C8C8C5C8C2C0C2B8B5B8AAA6AA9591957D777C -5E585E3B323A211821211821211821211821443C43868186D3D1D2FEFEFEFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBC1BFC17F7A7F4A424A -261D25211821211821211821211821211821231A224139406F696EA29EA1E7E6E7FFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBF5F4F4FAF9F9FEFEFEF9F9F9FFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF5F4F4FDFDFDFDFDFD -F9F9F9F5F4F4F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F0F0B3AFB2 -7D787D595259494148473F46514A516E686E9E9A9EE3E2E3FFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7FEFEFEFFFFFFFDFDFDFBFBFBFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3F2F2 -C2BFC18F8A8F6A646A514A51473F46473F46473F464D464D605A607E797EA7A3A7DCDBDC -FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7FEFEFEFFFFFFFEFEFEF9F8F8 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFEFDFDF6F5F6FEFEFEFFFFFFFFFFFFFEFEFEF8F7F7FFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFDFDFDD8D6D8A6A2A6797379524B52302730211821211821211821 -211821211821211821211821211821211821211821211821211821211821211821362E36 -5A5359837E83B1AEB1E6E5E6FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBE4E2E3 -D2D0D1CECCCECFCDCFDEDCDEF7F6F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1F0F0D8D6D8C4C2C4B4B1B4A8A4A8 -A19DA19B979B9B979BA29EA2AAA6A9B6B3B6C7C4C6DCDADCF5F4F5FFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F1F2FFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8934AFBC69FFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBBD90F99D59FFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAE9E9CBC9CBDFDEDFFEFEFEFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -EEEDEED2D0D2D1CFD1E8E7E8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAE9EA868186534C52696268676066463E45 -615A61C4C1C3FFFFFFFBB988F88837F88938F88939F88939F88838FEFBF8FFFFFFF9A96F -F7832EF9A96FF9A569F88C3EF8964EFCDCC5FFFFFFFFFFFFFFFFFFF78838FCCFAEFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB17CFCCDAAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFF6F5F63F373FF3F2F2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF88735FBC196FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB685F89147FFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFF7F6F6726C725049507C777C3A323A5D565CFEFEFEA4A0A3241B23372E36 -4942492219223E363E4038402921295E575DFFFFFFFFFFFFC7C4C6534C52635D63989397 -9793976761673F373F9B979BFDFDFDFFFFFFFFFFFFF3F2F32219224E464D6E686E5E575E -362D35726C71F1F0F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFD1CFD1322A32837D82F5F4F5FFFFFFFFFFFFF5F5F58C888CA09CA0 -FFFFFFFAB07BF78633FEF9F5FFFBF9FEFBF9FEF3ECFEFDFCFFFFFFF9A96FF88E41FFFFFF -FFFFFFFEFBF8F9A161F7812BFEF5EEFFFFFFFFFFFFF78735F77D25FCD9BFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFAAA71FBC9A3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFA4A0A32118219E999DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFF88735FBC196FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFAB685F89147FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -8A858A514A50FAFAFAFFFFFFEFEEEF908C90FFFFFFF1F0F1F7F6F6FFFFFFF5F4F4211821 -AEABAEFFFFFFFCFCFCEDECECFFFFFFB4B1B4241B24AFABAEFFFFFFFFFFFFFFFFFFFFFFFF -D0CECF332B33787378FEFEFEFFFFFFF3F2F32118219A969AFFFFFFFFFFFFD6D4D62B222A -746E74FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -F0EFF0372F377B767BFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFFFFFFFAB07B -F78634FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A96FF88E41FFFFFFFFFFFFFFFFFF -FCD9BFF77B21FCDCC4FFFFFFFFFFFFF78735F88F42F7802AFDE1CDFFFFFFFFFFFFFFFFFF -FFFFFFFAAA71FBC9A3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFCFC -4C444B6E686E3E373EFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFF88735FBC196FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFAB685F89147FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4F484F868186 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F4F4211821AEABAEFFFFFF -FFFFFFFFFFFFE3E1E22A222A736D72FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBEBBBE -211821B9B6B9FFFFFFF3F2F32118219A969AFFFFFFFFFFFFFFFFFF6861673F373EFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF928D91241B24 -EBEAEBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB07BF78634FFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A96FF88E41FFFFFFFFFFFFFFFFFFFBC59EF77B21 -FDECDFFFFFFFFFFFFFF78735FDE4D2F89248F78431FDE9DAFFFFFFFFFFFFFFFFFFFAAA71 -FBC9A3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBAB7B9797479D9D7D8 -211821B8B5B8FFFFFFFFFFFFFFFFFFFFFFFFFEF2EAFAB481F99B58F9A86CFDE0CBF88735 -FBC196FEF1E8F9A66AFCD7BCFFFFFFFFFFFFFFFFFFFEF6F1F9AA71FEFBF9FFFFFFFDEBDE -FBBC8EFAAB72FAB786FDEBDEFFFFFFFFFFFFFDE1CDF9A364FDE8D8F9A76BF88A3AF9A05F -FDECE0FFFFFFFFFFFFFFFFFFFEF3ECFBC39AFAAE77FAAD75FBC49DFEF6F0FFFFFFFFFFFF -FDE6D4FAB583FAAD74FBC197FEF8F3FFFFFFFFFFFFFEFEFDFBC9A5F99F5EF99F5EFBC6A0 -FAB582F89147FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6059603B333BE8E7E8FFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F4F4211821AEABAEFFFFFFFFFFFFFFFFFF -7E787D211821DCDADCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE463E46585158 -FFFFFFF3F2F32118219A969AFFFFFFFFFFFFFDFDFD4841485B545AFFFFFFFFFFFFFEFEFE -FDDCC4FAB481FAAC73FBC298FEF8F4FFFFFFFFFFFFFEFAF6FBC6A0FAB481FAB17CFAB989 -FBBD90FCD5B9FFFFFFFFFFFFFDE0CBFAB37FFAAD75FBC59EFEFAF8FFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFBC7A0FBBE92FBC9A4F88E42F88D40FBBB8DFEFDFCFBBE92F88F42 -F88F43FBC69FFFFEFEFFFFFFFFFFFFFDECE0FBBC8FFAAB73FAB785FDEADCFFFFFFFFFFFF -FDE3CFF9A364FDE8D8F9A86CF88A3AF99F5DFDEBDDFFFFFFFFFFFFFFFEFEFDDFC9FAB582 -FAAB73FBBF94FEF6F1FFFFFFFFFFFFFEFBF9FBC9A4FAB380FAB27DFAB887FBBD90FCD2B3 -FFFFFFFFFFFFFDE3D1FAB481FAAD75FBC39AFEF9F5FFFFFFFFFFFFFBCBA8FCCEADFCD6BA -F99B57FEFAF6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF524A51463F46FFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB07BF78430FDE4D1FDE4D1FDDFCA -FDE3D0FFFFFFFFFFFFF9A96FF88E41FFFFFFFEFBF9FCD0B0F7822DFBC096FFFFFFFFFFFF -FFFFFFF78735FDECE0FEF1E7F78B3CF78A3AFEEFE5FFFFFFFFFFFFFAAA71FBC9A3FFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF564F56D6D4D6FFFFFF585258564F56 -FFFFFFFFFFFFFFFFFFFEF8F4F88E40F9A96FFEF6F0FEF6F0F9A364F77E27FBC196FFFFFF -F8964FF9A060FFFFFFFFFFFFFFFFFFFCCDACFAAC74FFFFFFFEF3EBF9A364FEF1E8FEF5EF -F99F5EF78736FEFBF8FFFFFFFCD8BDF77B21F99D5AFDE1CDFDE1CDF88D40F89349FEFEFE -FFFFFFFDE6D6F78531FBBD90FEF9F5FEF4ECFAAD76FCD1B2FFFFFFFCCEADF78634FDE2CE -FEFBF9FBC59DF8974FFEFBF9FFFFFFFAB786F78939FDE7D6FEFCFAFBC9A4F7812CF89147 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8B5B8241B242E262E837E82DBDADBFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFF5F4F4211821AEABAEFFFFFFFFFFFFFFFFFF4139413D353D -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF757075281F28FCFCFCF3F2F3 -2118219A969AFFFFFFE9E8E9736D73383038D7D5D7FFFFFFFFFFFFFCCEACFBBE92FEFAF7 -FDE6D5F78736F9AA70FFFFFFFFFFFFF99E5CF9A364FEFBF9FEF6EFF8944BFCD2B4FEF9F5 -FFFFFFFBC49CF78A3BFDE8D8FEFBF8FAB98AF9A05FFEFEFDFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFAB07BF7832EFBBE92FEF1E8FBCAA6F77D24F99E5CFCCFAEFEF7F2FBC196F77B21 -FCD6BAFFFFFFFEF4EDF9A162FEF1E7FEF6F0F9A161F78633FEFAF6FFFFFFFCDAC0F77B21 -F99C59FDE1CCFDE2CFF88F42F89045FFFEFEFFFFFFFCD5B8FAB888FEF9F5FDEADBF88B3B -F9A364FFFFFFFFFFFFF9A568F99D5AFEFAF7FEF8F3F89852FCCDAAFEF9F5FFFFFFFBCAA6 -F78836FDE5D3FEFBF8FBC095F89A56FEFDFBFFFFFFF9A86DF89044F9A76BFAB582FEFEFE -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3E363E544D54FFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB07BF78029FAB685FAB684FAAE77FBC39BFFFFFF -FFFFFFF9A96FF7822DF89852F77D25FAAE76FDE7D7FFFFFFFFFFFFFFFFFFFFFFFFF78735 -FDECE0FFFFFFFDEADCF78532F89045FEF5EEFFFFFFFAAA71FBC9A3FFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFCFCDCF413A41CDCBCCCDCBCC8C878B211821D2D0D2FFFFFF -FFFFFFFBC7A1F77D25FEF4EDFFFFFFFFFFFFFDE8D9F77B21FBC196FFFFFFFCCFAEF77D24 -FEF2EAFFFFFFFFFFFFF99D5BFDE6D5FFFFFFFEFDFDFEFCFAFFFFFFFFFFFFFDE7D7F77B21 -FDE5D3FFFFFFFCD8BDF77B21FDDDC5FFFFFFFFFFFFFCD0B1F77B21FEF2EAFFFFFFF89954 -F89954FEFEFEFFFFFFFFFFFFFEFEFDFEFDFCFEF9F5F7822DFBC49BFFFFFFFFFFFFFEFEFD -F88A3BFCCEADFEF4EDF77D25FBC7A1FFFFFFFFFFFFFEFEFEF8944CF89147FFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD6D4D56B646A231A23221922888387FEFEFEFFFFFF -FFFFFFFFFFFFF5F4F4211821AEABAEFFFFFFFFFFFFFFFFFF2E252E5C555BFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7B767B211821F3F3F3F3F2F3211821514A51 -332B33302830A5A1A5F2F1F2FFFFFFFFFFFFFFFFFFFEFBF8FFFEFEFFFFFFFFFFFFFBC096 -F78837FFFFFFFEF5EEF77B21FDDEC8FFFFFFFFFFFFFBC39BF89750FFFFFFFEF1E8F77D25 -FCD0B1FFFFFFFFFFFFFEFBF8F7812CFCDAC1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB07B -F88A3AFEFEFEFFFFFFFFFFFFF9A263F9A05FFFFFFFFFFFFFFEFEFEF78939FAB684FFFFFF -FEFEFDFEFCFAFFFFFFFFFFFFFDE9DBF77B21FDE2CFFFFFFFFCDAC0F77B21FCDAC0FFFFFF -FFFFFFFCD3B5F77B21FEF0E5FFFFFFFEFBF8FEFEFEFFFFFFFFFFFFFBC7A1F7812BFFFFFF -FEFCF9F77B22FCD7BCFFFFFFFFFFFFFBCAA7F89044FFFFFFFEF6F0F78029FBC9A5FFFFFF -FFFFFFFEFDFCF78633FCD4B6FFFFFFF9A86DF89147FEFDFDFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF494149453D44FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFAB07BF78634FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A96F -F88E41FEEEE3F78532F8964FFEFBF8FFFFFFFFFFFFFFFFFFFFFFFFF78735FDECE0FFFFFF -FFFFFFFDE2CEF7802AF89851FEF9F5FAAA71FBC9A3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF6B656B7772778A858A8A858A8A858A2F272F716B70FFFFFFFFFFFFF9A86D -F89146FFFFFFFFFFFFFFFFFFFEFEFEF7802AFBC196FFFFFFFEFBF8F78735FBC299FFFFFF -FEEDE2F99C59FFFEFEFFFFFFFFFFFFFFFFFFFEFAF6FDE1CDFAB685F77B21FDE1CDFFFFFF -FCD8BDF77B21FEF3EAFFFFFFFFFFFFFDE1CCF77B21FDEBDEFEF7F1F77B22FBC196FFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFDDFCAF77B21FAAF79FBC095FBC095FBBF93F88A3BFAB583 -FCD8BEF77B21FDE5D4FFFFFFFFFFFFFFFFFFFAB07AF89147FFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEDCDE564F56211821C9C6C8FFFFFFFFFFFFFFFFFF -F5F4F4211821AEABAEFFFFFFFFFFFFFFFFFF3E363D514A51FFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFF60595F261D26FBFBFBF3F2F32118219A969A9C989C211821 -A19DA0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEF4EDFCD9C0F99D5BF78533FFFFFF -FEFAF6F77D24FDDEC8FFFFFFFFFFFFFBBF94F8964EFFFFFFFCD3B5F77B21FAB684FBC095 -FBC095FBBE93F78431FBC197FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB07BF8934AFFFFFF -FFFFFFFFFFFFFAA86DFAAD75FFFFFFFFFFFFFFFFFFF88E42FAB583FFFFFFFFFFFFFFFFFF -FEFAF7FDE2CEFAB887F77B21FDDFCAFFFFFFFCDAC0F77B21FEF0E6FFFFFFFFFFFFFDE2CF -F77B21FDE9DBFFFFFFFFFFFFFFFEFEFEF5EFFCDBC2F9A262F77E27FFFFFFFEFDFDF78029 -FCD7BCFFFFFFFFFFFFFBC6A0F88F42FFFFFFFCDAC1F77B21FAB27EFBC095FBC095FBBF93 -F78837FBBA8BFFFFFFF9A86DFAAC74FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFF787277251C25F2F1F2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFAB07BF78634FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A96FF88E41FFFFFF -FCDAC2F77C23FAAD75FEFEFEFFFFFFFFFFFFFFFFFFF78735FDECE0FFFFFFFFFFFFFFFFFF -FCD8BEF77D25F9A05FF9A86CFBC9A3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2E1E2 -3C343CFCFCFCFFFFFFFFFFFFFFFFFF807B80261D26E7E6E7FFFFFFF99F5DF8934AFFFFFF -FFFFFFFFFFFFFFFEFEF78431FBC196FFFFFFFFFFFFFBBC8EF88D40FEFDFCFAB98AFCD4B8 -FFFFFFFFFFFFFEF3EAF9A365F9A161FBCBA8FCD2B3F77B21FDE1CDFFFFFFFCD8BDF77B21 -FEF4ECFFFFFFFFFFFFFDE1CCF77B21FDEBDEFEEFE5F77B21FBC59EFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFCD8BEF77B21FCCDABFDE7D7FDE7D7FDE7D7FDE7D7FEF2E9FCCFAEF77B21 -FDE8D8FFFFFFFFFFFFFFFFFFFAB481F89147FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFE1E0E12118219E9A9EFFFFFFFFFFFFFFFFFFF5F4F4211821 -AEABAEFFFFFFFFFFFFFFFFFF6D676D292129F5F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFF5F5F52C232C585157FFFFFFF3F2F32118219A969AFEFEFE6D676D251C25C9C7C9 -FFFFFFFFFFFFFFFFFFFDDEC8F8964FFAB07AFCD3B5FAB481F78533FFFFFFFFFFFFFAB786 -F99D5BFDEADBFDDEC7F78A3AFCD1B3FFFFFFFCCCAAF77B21FCD7BCFDE7D7FDE7D7FDE7D7 -FDE7D7FEF4ECFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB07BF8934AFFFFFFFFFFFFFFFFFF -FAA86DFAAD75FFFFFFFFFFFFFFFFFFF88E42FAB583FFFFFFFEF4ECF9A567F9A060FBCAA6 -FCD3B4F77B21FDDFCAFFFFFFFCDAC0F77B21FEF2EAFFFFFFFFFFFFFDE2CFF77B21FDE9DB -FFFFFFFDE3D0F89851FAAD76FCD1B2FAB98AF77E27FFFFFFFFFFFFFBBD90F89954FDE8D8 -FDE0CCF88C3EFBCBA8FFFFFFFCD3B5F77B21FCD2B3FDE7D7FDE7D7FDE7D7FDE7D7FEF3EA -FFFFFFF9A86DFAAD75FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -D3D1D3231A239A9599FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB07B -F78634FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A96FF88E41FFFFFFFFFFFFFBBF94 -F77B21FBC8A2FFFFFFFFFFFFFFFFFFF78735FDECE0FFFFFFFFFFFFFFFFFFFFFFFFFCCDAB -F77B22F77C24FBC9A3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF817C81898488FFFFFF -FFFFFFFFFFFFFFFFFFD9D7D82118218B868BFFFFFFFAAD76F78531FEFDFCFFFFFFFFFFFF -FEF1E8F77B21FBC196FFFFFFFFFFFFFEF1E8F77E26FCCEADF89349FEFCFBFFFFFFFFFFFF -FAAD75F99D5AFEFEFEFFFFFFFEEBDDF77B21FDE1CDFFFFFFFCD8BDF77B21FEF4ECFFFFFF -FFFFFFFDE1CCF77B21FDEBDEFEFBF9F7802AF9A96FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FEF0E6F77B22FBCAA6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDC6F77B21FCD8BDFFFFFF -FFFFFFFFFFFFF99D5BF89147FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9D8D9FFFFFF -FFFFFFFFFFFFF3F2F2221922C1BEC1FFFFFFFFFFFFFFFFFFF5F4F4211821AEABAEFFFFFF -FFFFFFFFFFFFCECCCE231A23999599FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF969296 -221922C3C0C2FFFFFFF3F2F32118219A969AFFFFFFF5F4F4463F46352D35E6E5E6FFFFFF -FEFEFDF78736FBC39BFFFFFFFFFFFFFBC39AF78533FFFFFFFFFFFFFCDAC2FAAB72FBC8A3 -FCCFAFFEEFE4FFFFFFFFFFFFFDE5D3F77B21FCD7BBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB07BF8934AFFFFFFFFFFFFFFFFFFFAA86DFAAD75 -FFFFFFFFFFFFFFFFFFF88E42FAB583FFFFFFFAB07AF99B56FEFEFEFFFFFFFDECE0F77B21 -FDDFCAFFFFFFFCDAC0F77B21FEF2EAFFFFFFFFFFFFFDE2CFF77B21FDE9DBFFFFFFF88E41 -FBBD8FFFFFFFFFFFFFFBCAA6F77E27FFFFFFFFFFFFFDDFCAF9A96FFBC8A3FCCFAEFEEDE1 -FFFFFFFFFFFFFDEBDEF77B21FCD0B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A86D -FAAD75FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9B9F -271E26A7A4A7FDFDFDFFFFFFFFFFFFFFFFFFD6D4D6CFCDCFFFFFFFFAB07BF78633FEFEFD -FFFEFEFEFDFBFEF5EEFEFBF8FFFFFFF9A96FF88E41FFFFFFFFFFFFFEFEFDF9A466F77D25 -FDE0CAFFFFFFFFFFFFF78735FDECE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC197F77B21 -FBC9A3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0EFF02C232CDAD9DAFFFFFFFFFFFFFFFFFF -FFFFFFFEFEFE544D54312931F6F6F6FDE5D4F77E26FBC49DFFFFFFFEFDFBFAB17CF78029 -FBC196FFFFFFFFFFFFFFFFFFF9A96EF77E26FBBC8FFFFFFFFFFFFFFFFFFFF9A568F99B57 -FEFEFDFFFFFFFBC9A4F77B21FDE1CDFFFFFFFCD8BDF77B21FEF4ECFFFFFFFFFFFFFDE1CC -F77B21FDEBDEFFFFFFFBBD90F77D25FDE2CEFFFFFFFFFFFFFEF3EBFDE2CEFFFFFFF9A86D -F89044FEF3ECFFFFFFFFFEFEFDDFC9FDEBDEFEFDFCF8964EF89954FEFAF6FFFFFFFCD8BD -F78735F89147FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE423A41CDCBCDFFFFFFFEFEFE -8E898E585158FDFDFDFFFFFFFFFFFFFFFFFFF5F4F4211821AEABAEFFFFFFFFFFFFFFFFFF -FFFFFFAEAAAD2C232CACA9ACFEFEFEFFFFFFFFFFFFFEFEFEB3B0B32A212AA4A0A3FFFFFF -FFFFFFF3F2F32118219A969AFFFFFFFFFFFFDEDCDD2E252D504950F8F8F8FEFDFBF7802A -FBC197FFFFFFFEFCFAF9A466F78532FFFFFFFFFFFFF9A467FAAB72FDE2CEFDEBDDFDEADC -FEFDFBFFFFFFFEFEFEF99C58F89953FEF7F2FFFFFFFEFEFEFCD7BCFEF3ECFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFAB07BF8934AFFFFFFFFFFFFFFFFFFFAA86DFAAD75FFFFFFFFFFFF -FFFFFFF88E42FAB583FFFFFFF9A76CF89953FEFDFCFFFFFFFBCBA8F77B21FDDFCAFFFFFF -FCDAC0F77B21FEF2EAFFFFFFFFFFFFFDE2CFF77B21FDE9DBFFFFFFF78532FABA8BFFFFFF -FEFDFCF9AA70F77E27FFFEFEFFFFFFFAAB72F9A66AFDE1CCFDEBDDFDEADCFEFCFBFFFFFF -FFFEFEF9A364F8944AFEF5EFFFFFFFFFFEFEFCDBC3FEEEE3FFFFFFF9A86DFAAD75FFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0BEC04C454C -443C447A74797C777C5B545A6E686EE9E8E9FFFFFFFBBB8DF88D3FF89146F89248F88E41 -F88D3FFEEDE1FFFFFFFAB888F9A364FFFFFFFFFFFFFFFFFFFEF7F1F99B57F9A161FEF7F3 -FFFFFFF99D5AFEEFE4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFAB887FCD0B0FFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFACA9AC666066FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -B3B0B3463E46B8B5B7FFFFFFFCDDC5F8954EF89954F9A86DFDE1CDF99D5AFCCBA8FFFFFF -FFFFFFFFFFFFFDE2CEF89349FEF0E6FFFFFFFFFFFFFFFFFFFDE4D2F78939F89147F9A96E -FCCFAEF99B58F9A86DFEFAF8FDDEC8F8934AFEF5EFFFFFFFFFFFFFFDE5D4F8944BFEEEE3 -FFFFFFFEFEFEFBCCAAF8944BF9A263FAAA71F9A76CFEEDE2FFFFFFFEF8F3FAAB72F78532 -F89750F8954DFAAE77FEF6F0FFFFFFFEF4ECF9A96EF89146F9A567FBC39AFBC299F9A669 -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFC898489352C344A434A4840476E686EF1F0F0 -FFFFFFFFFFFFFFFFFFFFFFFFF6F6F64A434ABBB9BBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -D9D7D96C666C574F567F797E847E835E575E6B656BD6D4D5FFFFFFFFFFFFFFFFFFF4F4F4 -4B434AABA8ABFFFFFFFFFFFFFFFFFFBAB7B94942499C989CFFFFFFFBC7A1F7812BF99C59 -FAAD75FCCFAEF88F43FBC59EFFFFFFFCD5B9F77D25F78735F88C3EF77F28F78A3AFDE5D4 -FFFFFFFEF3EBF9A568F78532F89852F8954CFAB482FEFAF6FFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFBBE91FAA76BFFFFFFFFFFFFFFFFFFFBB887FBBB8EFFFFFFFFFFFFFFFFFFF9A364 -FBC299FFFFFFFDE6D5F78A3AF89045F9A86DFCCFAEF99C59F9A76BFEFAF6FDDFCAF8934A -FEF4EDFFFFFFFFFFFFFDE6D6F8944BFEEDE0FFFFFFFBCDABF7812CF99A56FAAC73FCD0B0 -F89044FBC094FFFFFFFCDBC2F77E27F78634F88D3FF78029F78736FDE1CCFFFFFFFEF6EF -F9A96EF78532F89751F8954DFAB17CFEF7F3FFFFFFFAB787FBBB8DFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEE9E8E8D0CECF -D8D6D8F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFDFDFEF5EFFEFEFEFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFEFCFAFEFDFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFCFAFEF3EBFEFCFA -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDECECECF7F6F7FFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FCFCFCECECECEDECEDFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFBF8FEF7F2FFFFFFFFFFFF -FFFFFFFFFFFFFEF3ECF88D40FDE4D1FFFEFEFFFFFFFEF7F1F89145F9A86DFFFFFFFFFFFF -FFFFFFFEFBF9FEF3EBFEFCFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFEFDFDFEF5EFFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFBF9FEF7F1FFFFFFFFFFFFFFFFFFFFFFFF -FEF7F2F88E40FDE0CAFEFEFEFFFFFFFEF8F4F8964EF9A262FFFFFFFFFFFFFFFFFFFEFCFA -FEF3EBFEFCFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FCD5B9F99F5EFFFFFFFFFFFFFFFFFFFFFFFFFAB786F9A66AFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDCC4F89852 -FFFFFFFFFFFFFFFFFFFFFFFFFBBE92F9A05FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE7D7F78430 -FDEDE0FFFFFFFFFFFFFEF6F0F89853FDE2CEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEDE1F7822EFDE9D9FFFFFF -FFFFFFFEF8F3F99C58FCDCC5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD1B1F8954DF9A669 -F9A96EF9A467FDE2CEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD5B9F8964EF9A568F9A96EF9A466 -FDDEC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -end -%%PageTrailer -%%Trailer -%%EOF diff --git a/tapeserver/castor/tape/tapeserver/documentation/images/CERNLogo.eps b/tapeserver/castor/tape/tapeserver/documentation/images/CERNLogo.eps deleted file mode 100644 index c83c1902235320c63d534917d8729a817b99ebcf..0000000000000000000000000000000000000000 Binary files a/tapeserver/castor/tape/tapeserver/documentation/images/CERNLogo.eps and /dev/null differ diff --git a/tapeserver/castor/tape/tapeserver/documentation/images/MigrationMountMM.pdf b/tapeserver/castor/tape/tapeserver/documentation/images/MigrationMountMM.pdf deleted file mode 100644 index 86a3da6f2a9817ce44bb4c15beed6e04a6418786..0000000000000000000000000000000000000000 Binary files a/tapeserver/castor/tape/tapeserver/documentation/images/MigrationMountMM.pdf and /dev/null differ diff --git a/tapeserver/castor/tape/tapeserver/documentation/images/MigrationMountMM.pptx b/tapeserver/castor/tape/tapeserver/documentation/images/MigrationMountMM.pptx deleted file mode 100644 index 70dc53037ff4f1f4c9aaf83e672e314cb03de535..0000000000000000000000000000000000000000 Binary files a/tapeserver/castor/tape/tapeserver/documentation/images/MigrationMountMM.pptx and /dev/null differ diff --git a/tapeserver/castor/tape/tapeserver/documentation/images/RecallMountMM.pdf b/tapeserver/castor/tape/tapeserver/documentation/images/RecallMountMM.pdf deleted file mode 100644 index f836d184651b70e87c6c7c039cb539cb4efbdb2c..0000000000000000000000000000000000000000 Binary files a/tapeserver/castor/tape/tapeserver/documentation/images/RecallMountMM.pdf and /dev/null differ diff --git a/tapeserver/castor/tape/tapeserver/documentation/images/RecallMountMM.pptx b/tapeserver/castor/tape/tapeserver/documentation/images/RecallMountMM.pptx deleted file mode 100644 index c2f8fc2fc87e1af59456a9fbb25859907bb91bee..0000000000000000000000000000000000000000 Binary files a/tapeserver/castor/tape/tapeserver/documentation/images/RecallMountMM.pptx and /dev/null differ diff --git a/tapeserver/castor/tape/tapeserver/documentation/images/TapeServerChildProcess.pdf b/tapeserver/castor/tape/tapeserver/documentation/images/TapeServerChildProcess.pdf deleted file mode 100644 index 6c95b2c1deb8033c29fc05084cf14b01d9368307..0000000000000000000000000000000000000000 Binary files a/tapeserver/castor/tape/tapeserver/documentation/images/TapeServerChildProcess.pdf and /dev/null differ diff --git a/tapeserver/castor/tape/tapeserver/documentation/images/TapeServerChildProcess.pptx b/tapeserver/castor/tape/tapeserver/documentation/images/TapeServerChildProcess.pptx deleted file mode 100644 index a6c9be650d2b8a1444c5914ee2f75da8726d2dc9..0000000000000000000000000000000000000000 Binary files a/tapeserver/castor/tape/tapeserver/documentation/images/TapeServerChildProcess.pptx and /dev/null differ diff --git a/tapeserver/castor/tape/tapeserver/documentation/images/TapeServerParentProcess.pdf b/tapeserver/castor/tape/tapeserver/documentation/images/TapeServerParentProcess.pdf deleted file mode 100644 index 7db4088ed6afb0bc6418a4e8a2955b0b69e2201b..0000000000000000000000000000000000000000 Binary files a/tapeserver/castor/tape/tapeserver/documentation/images/TapeServerParentProcess.pdf and /dev/null differ diff --git a/tapeserver/castor/tape/tapeserver/documentation/images/TapeServerParentProcess.pptx b/tapeserver/castor/tape/tapeserver/documentation/images/TapeServerParentProcess.pptx deleted file mode 100644 index d6a2db416e8572e19a71391ed14ee8b7b5b12791..0000000000000000000000000000000000000000 Binary files a/tapeserver/castor/tape/tapeserver/documentation/images/TapeServerParentProcess.pptx and /dev/null differ diff --git a/tapeserver/castor/tape/tapeserver/documentation/pgf-umlsd.sty b/tapeserver/castor/tape/tapeserver/documentation/pgf-umlsd.sty deleted file mode 100644 index 99847db73b56904af9dd5cba09c60f9ae52171f2..0000000000000000000000000000000000000000 --- a/tapeserver/castor/tape/tapeserver/documentation/pgf-umlsd.sty +++ /dev/null @@ -1,329 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Start of pgf-umlsd.sty -% -% Some macros for UML Sequence Diagrams. -% Home page of project: http://pgf-umlsd.googlecode.com/ -% Author: Xu Yuan <xuyuan.cn@gmail.com>, Southeast University, China -% Contributor: Nobel Huang <nobel1984@gmail.com>, Southeast University, China -% -% History: -% v0.7 2012/03/05 -% - unify interface of call and callself -% - non-instantaneous message -% - bugfix: conflits with tikz library backgrounds -% v0.6 2011/07/27 -% - Fix Issue 6 reported by frankmorgner@gmail.com -% - diagram without a thread -% - allows empty diagram -% - New manual -% v0.5 2009/09/30 Fix Issue 2 reported by vlado.handziski -% - Nested callself is supported -% - Rename sdloop and sdframe to sdblock -% v0.4 2008/12/08 Fix Issue 1 reported by MathStuf: -% Nested sdloop environment hides outer loop -% v0.3 2008/11/10 in Berlin, fix for the PGF cvs version: -% - the list items in \foreach are not evaluated by default now, -% the `evaluate' opinion should be used -% v0.2 2008/03/20 create project at http://pgf-umlsd.googlecode.com/ -% - use `shadows' library -% Thanks for Dr. Ludger Humbert's <humbert@uni-wuppertal.de> feedback! -% - reduce the parameter numbers, the user can write the content -% of instance (such as no colon) -% - the user can redefine the `inststyle' -% - new option: switch underlining of the instance text -% - new option: switch rounded corners -% v0.1 2008/01/25 first release at http://www.fauskes.net/pgftikzexamples/ -% - -\NeedsTeXFormat{LaTeX2e}[1999/12/01] -\ProvidesPackage{pgf-umlsd}[2011/07/27 v0.6 Some LaTeX macros for UML -Sequence Diagrams.] - -\RequirePackage{tikz} -\usetikzlibrary{arrows,shadows} - -\RequirePackage{ifthen} - -% Options -% ? the instance name under line ? -\newif\ifpgfumlsdunderline\pgfumlsdunderlinetrue -\DeclareOption{underline}{\pgfumlsdunderlinetrue} -\DeclareOption{underline=true}{\pgfumlsdunderlinetrue} -\DeclareOption{underline=false}{\pgfumlsdunderlinefalse} -% ? the instance box with rounded corners ? -\newif\ifpgfumlsdroundedcorners\pgfumlsdroundedcornersfalse -\DeclareOption{roundedcorners}{\pgfumlsdroundedcornerstrue} -\DeclareOption{roundedcorners=true}{\pgfumlsdroundedcornerstrue} -\DeclareOption{roundedcorners=false}{\pgfumlsdroundedcornersfalse} -\ProcessOptions - -% new counters -\newcounter{preinst} -\newcounter{instnum} -\newcounter{threadnum} -\newcounter{seqlevel} % level -\newcounter{callevel} -\newcounter{callselflevel} -\newcounter{blocklevel} - -% new an instance -% Example: -% \newinst[edge distance]{var}{name:class} -\newcommand{\newinst}[3][0.2]{ - \stepcounter{instnum} - \path (inst\thepreinst.east)+(#1,0) node[inststyle] (inst\theinstnum) - {\ifpgfumlsdunderline - \underline{#3} - \else - #3 - \fi}; - \path (inst\theinstnum)+(0,-0.5*\unitfactor) node (#2) {}; - \tikzstyle{instcolor#2}=[] - \stepcounter{preinst} -} - -% new an instance thread -% Example: -% \newinst[color]{var}{name}{class} -\newcommand{\newthread}[3][gray!30]{ - \newinst{#2}{#3} - \stepcounter{threadnum} - \node[below of=inst\theinstnum,node distance=0.8cm] (thread\thethreadnum) {}; - \tikzstyle{threadcolor\thethreadnum}=[fill=#1] - \tikzstyle{instcolor#2}=[fill=#1] -} - -% draw running (thick) line, should not call directly -\newcommand*{\drawthread}[2]{ - \begin{pgfonlayer}{umlsd@threadlayer} - \draw[threadstyle] (#1.west) -- (#1.east) -- (#2.east) -- (#2.west) -- cycle; - \end{pgfonlayer} -} - -% a function call -% Example: -% \begin{call}[height]{caller}{function}{callee}{return} -% \end{call} -\newenvironment{call}[5][1]{ -\ifthenelse{\equal{#2}{#4}} -{ - \begin{callself}[#1]{#2}{#3}{#5} -} -{ - \begin{callanother}[#1]{#2}{#3}{#4}{#5} -} -} -{ -\ifthenelse{\equal{\f\thecallevel}{\t\thecallevel}} -{ - \end{callself} -} -{ - \end{callanother} -} -} - -% function call to another instance -% interal use only -\newenvironment*{callanother}[5][1]{ - \stepcounter{seqlevel} - \stepcounter{callevel} % push - \path - (#2)+(0,-\theseqlevel*\unitfactor-0.7*\unitfactor) node (cf\thecallevel) {} - (#4.\threadbias)+(0,-\theseqlevel*\unitfactor-0.7*\unitfactor) node (ct\thecallevel) {}; - - \draw[->,>=triangle 60] ({cf\thecallevel}) -- (ct\thecallevel) - node[midway, above] {#3}; - \def\l\thecallevel{#1} - \def\f\thecallevel{#2} - \def\t\thecallevel{#4} - \def\returnvalue{#5} - \tikzstyle{threadstyle}+=[instcolor#2] -} -{ - \addtocounter{seqlevel}{\l\thecallevel} - \path - (\f\thecallevel)+(0,-\theseqlevel*\unitfactor-0.7*\unitfactor) node (rf\thecallevel) {} - (\t\thecallevel.\threadbias)+(0,-\theseqlevel*\unitfactor-0.7*\unitfactor) node (rt\thecallevel) {}; - \draw[dashed,->,>=angle 60] ({rt\thecallevel}) -- (rf\thecallevel) - node[midway, above]{\returnvalue}; - \drawthread{ct\thecallevel}{rt\thecallevel} - \addtocounter{callevel}{-1} % pop -} - -% a function do not need call others -% interal use only -% Example: -% \begin{callself}[height]{caller}{function}{return} -% \end{callself} -\newenvironment*{callself}[4][1]{ - \stepcounter{seqlevel} - \stepcounter{callevel} % push - \stepcounter{callselflevel} - - \path - (#2)+(\thecallselflevel*0.1-0.1,-\theseqlevel*\unitfactor-0.7*\unitfactor) node (sc\thecallevel) {} - ({sc\thecallevel}.east)+(0,-0.33*\unitfactor) node (scb\thecallevel) {}; - - \draw[->,>=triangle 60] ({sc\thecallevel}.east) -- ++(0.8,0) - node[near start, above right] {#3} -- ++(0,-0.33*\unitfactor) - -- (scb\thecallevel); - \def\l\thecallevel{#1} - \def\f\thecallevel{#2} - \def\t\thecallevel{#2} - \def\returnvalue{#4} - \tikzstyle{threadstyle}+=[instcolor#2] -}{ - \addtocounter{seqlevel}{\l\thecallevel} - \path (\f\thecallevel)+(\thecallselflevel*0.1-0.1,-\theseqlevel*\unitfactor-0.33*\unitfactor) node - (sct\thecallevel) {}; - - \draw[dashed,->,>=angle 60] ({sct\thecallevel}.east) node - (sce\thecallevel) {} -- ++(0.8,0) -- node[midway, right]{\returnvalue} ++(0,-0.33*\unitfactor) -- ++(-0.8,0); - \drawthread{scb\thecallevel}{sce\thecallevel} - \addtocounter{callevel}{-1} % pop - \addtocounter{callselflevel}{-1} -} - -% message between threads -% Example: -% \mess[delay]{sender}{message content}{receiver} -\newcommand{\mess}[4][0]{ - \stepcounter{seqlevel} - \path - (#2)+(0,-\theseqlevel*\unitfactor-0.7*\unitfactor) node (mess from) {}; - \addtocounter{seqlevel}{#1} - \path - (#4)+(0,-\theseqlevel*\unitfactor-0.7*\unitfactor) node (mess to) {}; - \draw[->,>=angle 60] (mess from) -- (mess to) node[midway, above] - {#3}; - - \node (#3 from) at (mess from) {}; - \node (#3 to) at (mess to) {}; -} - -\newenvironment{messcall}[4][1]{ - \stepcounter{seqlevel} - \stepcounter{callevel} % push - \path - (#2)+(0,-\theseqlevel*\unitfactor-0.7*\unitfactor) node (cf\thecallevel) {} - (#4.\threadbias)+(0,-\theseqlevel*\unitfactor-0.7*\unitfactor) node (ct\thecallevel) {}; - - \draw[->,>=angle 60] ({cf\thecallevel}) -- (ct\thecallevel) - node[midway, above] {#3}; - \def\l\thecallevel{#1} - \def\f\thecallevel{#2} - \def\t\thecallevel{#4} - \tikzstyle{threadstyle}+=[instcolor#2] -} -{ - \addtocounter{seqlevel}{\l\thecallevel} - \path - (\f\thecallevel)+(0,-\theseqlevel*\unitfactor-0.7*\unitfactor) node (rf\thecallevel) {} - (\t\thecallevel.\threadbias)+(0,-\theseqlevel*\unitfactor-0.3*\unitfactor) node (rt\thecallevel) {}; - \drawthread{ct\thecallevel}{rt\thecallevel} - \addtocounter{callevel}{-1} % pop -} - -% In the situation of multi-threads, some objects are called at the -% same time. Currently, we have to adjust the bias of thread line -% manually. Possible parameters are: center, west, east -\newcommand{\setthreadbias}[1]{\global\def\threadbias{#1}} - -% This function makes the call earlier. -\newcommand{\prelevel}{\addtocounter{seqlevel}{-1}} - -% This function makes the call later. -\newcommand{\postlevel}{\addtocounter{seqlevel}{+1}} - -% a block box with caption -% \begin{sdblock}[caption background color]{caption}{comments} -% \end{sdblock} -\newenvironment{sdblock}[3][white]{ - \stepcounter{seqlevel} - \stepcounter{blocklevel} % push - \coordinate (blockbeg\theblocklevel) at (0,-\theseqlevel*\unitfactor-\unitfactor); - \stepcounter{seqlevel} - \def\blockcolor\theblocklevel{#1} - \def\blockname\theblocklevel{#2} - \def\blockcomm\theblocklevel{#3} - \begin{pgfinterruptboundingbox} -}{ - \coordinate (blockend) at (0,-\theseqlevel*\unitfactor-2*\unitfactor); - \path (current bounding box.east)+(0.2,0) node (boxeast) {} - (current bounding box.west |- {blockbeg\theblocklevel}) + (-0.2,0) - node (nw) {}; - \path (boxeast |- blockend) node (se) {}; - - % % title - \node[blockstyle] (blocktitle) at (nw) {\blockname\theblocklevel}; - \path (blocktitle.south east) + (0,0.2) node (set) {} - (blocktitle.south east) + (-0.2,0) node (seb) {} - (blocktitle.north east) + (0.2,0) node (comm) {}; - \draw[fill=\blockcolor\theblocklevel] (blocktitle.north west) -- (blocktitle.north east) -- - (set.center) -- (seb.center) -- (blocktitle.south west) -- cycle; - \node[blockstyle] (blocktitle) at (nw) {\blockname\theblocklevel}; - \node[blockcommentstyle] (blockcomment) at (comm) {\blockcomm\theblocklevel}; - - \coordinate (se) at (current bounding box.south east); - \end{pgfinterruptboundingbox} - - \draw (se) rectangle (nw); - - \addtocounter{blocklevel}{-1} % pop - \stepcounter{seqlevel} -} - -% the environment of sequence diagram -\newenvironment{sequencediagram}{ - % declare layers - \pgfdeclarelayer{umlsd@background} - \pgfdeclarelayer{umlsd@threadlayer} - \pgfsetlayers{umlsd@background,umlsd@threadlayer,main} - - \begin{tikzpicture} - \setlength{\unitlength}{1cm} - \tikzstyle{sequence}=[coordinate] - \tikzstyle{inststyle}=[rectangle, draw, anchor=west, minimum - height=0.8cm, minimum width=1.6cm, fill=white, - drop shadow={opacity=1,fill=black}] - \ifpgfumlsdroundedcorners - \tikzstyle{inststyle}+=[rounded corners=3mm] - \fi - \tikzstyle{blockstyle}=[anchor=north west] - \tikzstyle{blockcommentstyle}=[anchor=north west, font=\small] - \tikzstyle{dot}=[inner sep=0pt,fill=black,circle,minimum size=0.2pt] - \global\def\unitfactor{0.6} - \global\def\threadbias{center} - % reset counters - \setcounter{preinst}{0} - \setcounter{instnum}{0} - \setcounter{threadnum}{0} - \setcounter{seqlevel}{0} - \setcounter{callevel}{0} - \setcounter{callselflevel}{0} - \setcounter{blocklevel}{0} - - % origin - \node[coordinate] (inst0) {}; -} -{ - \begin{pgfonlayer}{umlsd@background} - \ifnum\c@instnum > 0 - \foreach \t [evaluate=\t] in {1,...,\theinstnum}{ - \draw[dotted] (inst\t) -- ++(0,-\theseqlevel*\unitfactor-2.2*\unitfactor); - } - \fi - \ifnum\c@threadnum > 0 - \foreach \t [evaluate=\t] in {1,...,\thethreadnum}{ - \path (thread\t)+(0,-\theseqlevel*\unitfactor-0.1*\unitfactor) node (threadend) {}; - \tikzstyle{threadstyle}+=[threadcolor\t] - \drawthread{thread\t}{threadend} - } - \fi - \end{pgfonlayer} -\end{tikzpicture}} - - -%%% End of pgf-umlsd.sty -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ No newline at end of file