From 30e9cda301125dbde368d7bba3331bfd0f8389a1 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Thu, 13 Jul 2017 09:26:18 +0900 Subject: add lmacs popupmenu rangen renditions richtext yt4pdf --- texmf-dist/doc/latex/lmacs/README | 16 + texmf-dist/doc/latex/lmacs/lmacs.pdf | Bin 0 -> 40104 bytes texmf-dist/doc/latex/lmacs/lmacs_aeb.def | 45 + texmf-dist/doc/latex/lmacs/lmacs_aeb.js | 8 + texmf-dist/doc/latex/lmacs/lmacs_aeb.tex | 181 +++ texmf-dist/doc/latex/lmacs/lmacs_tst.def | 5 + texmf-dist/doc/latex/lmacs/lmacs_tst.tex | 22 + texmf-dist/doc/latex/popupmenu/README | 19 + texmf-dist/doc/latex/popupmenu/popupmenu.pdf | Bin 0 -> 62982 bytes texmf-dist/doc/latex/rangen/README | 37 + texmf-dist/doc/latex/rangen/randomLIP.tex | 53 + texmf-dist/doc/latex/rangen/randomQ.tex | 27 + texmf-dist/doc/latex/rangen/randomR.tex | 44 + texmf-dist/doc/latex/rangen/randomZ.tex | 38 + texmf-dist/doc/latex/rangen/rangen_fp.tex | 24 + texmf-dist/doc/latex/rangen/rangen_man.pdf | 1432 ++++++++++++++++++ texmf-dist/doc/latex/rangen/rangen_man.tex | 1563 ++++++++++++++++++++ texmf-dist/doc/latex/rangen/rangen_tst.tex | 280 ++++ texmf-dist/doc/latex/renditions/README | 22 + texmf-dist/doc/latex/renditions/renditions.pdf | Bin 0 -> 60135 bytes texmf-dist/doc/latex/richtext/README.md | 14 + .../doc/latex/richtext/examples/richtext_tst.tex | 58 + texmf-dist/doc/latex/richtext/richtextman.pdf | Bin 0 -> 1982477 bytes texmf-dist/doc/latex/yt4pdf/README.md | 21 + 24 files changed, 3909 insertions(+) create mode 100644 texmf-dist/doc/latex/lmacs/README create mode 100644 texmf-dist/doc/latex/lmacs/lmacs.pdf create mode 100644 texmf-dist/doc/latex/lmacs/lmacs_aeb.def create mode 100644 texmf-dist/doc/latex/lmacs/lmacs_aeb.js create mode 100644 texmf-dist/doc/latex/lmacs/lmacs_aeb.tex create mode 100644 texmf-dist/doc/latex/lmacs/lmacs_tst.def create mode 100644 texmf-dist/doc/latex/lmacs/lmacs_tst.tex create mode 100644 texmf-dist/doc/latex/popupmenu/README create mode 100644 texmf-dist/doc/latex/popupmenu/popupmenu.pdf create mode 100644 texmf-dist/doc/latex/rangen/README create mode 100644 texmf-dist/doc/latex/rangen/randomLIP.tex create mode 100644 texmf-dist/doc/latex/rangen/randomQ.tex create mode 100644 texmf-dist/doc/latex/rangen/randomR.tex create mode 100644 texmf-dist/doc/latex/rangen/randomZ.tex create mode 100644 texmf-dist/doc/latex/rangen/rangen_fp.tex create mode 100644 texmf-dist/doc/latex/rangen/rangen_man.pdf create mode 100644 texmf-dist/doc/latex/rangen/rangen_man.tex create mode 100644 texmf-dist/doc/latex/rangen/rangen_tst.tex create mode 100644 texmf-dist/doc/latex/renditions/README create mode 100644 texmf-dist/doc/latex/renditions/renditions.pdf create mode 100644 texmf-dist/doc/latex/richtext/README.md create mode 100644 texmf-dist/doc/latex/richtext/examples/richtext_tst.tex create mode 100644 texmf-dist/doc/latex/richtext/richtextman.pdf create mode 100644 texmf-dist/doc/latex/yt4pdf/README.md (limited to 'texmf-dist/doc') diff --git a/texmf-dist/doc/latex/lmacs/README b/texmf-dist/doc/latex/lmacs/README new file mode 100644 index 00000000..1f8ffdfb --- /dev/null +++ b/texmf-dist/doc/latex/lmacs/README @@ -0,0 +1,16 @@ +lmacs Package--2012/05/30 v1.1 + +This is a simple package designed to clean up command definitions made in +the preamble. You can cut the commands in your preamble and paste them +into a file named myDefs.def, for example. Then insert the following line +to replace what you just removed: + +\usepackage[def=myDefs,!js=myJS]{lmacs} + +The package supports auxiliary files with extensions of .def, .js, and +.cfg. More can easily be added, if needed. Use of an exclamation mark +as shown above cancels the inclusion of that file. + +Now, back to my retirement. + +D. P. Story diff --git a/texmf-dist/doc/latex/lmacs/lmacs.pdf b/texmf-dist/doc/latex/lmacs/lmacs.pdf new file mode 100644 index 00000000..b6745bd4 Binary files /dev/null and b/texmf-dist/doc/latex/lmacs/lmacs.pdf differ diff --git a/texmf-dist/doc/latex/lmacs/lmacs_aeb.def b/texmf-dist/doc/latex/lmacs/lmacs_aeb.def new file mode 100644 index 00000000..1ae975fc --- /dev/null +++ b/texmf-dist/doc/latex/lmacs/lmacs_aeb.def @@ -0,0 +1,45 @@ +% +% This is the preamble content that originally appear in the source file. +% +\title{\texorpdfstring{Acro\!\TeX}{AcroTeX} eDucation Bundle + \texorpdfstring{\\[1ex]}{:}The \textsf{lmacs} Package} +\author{D. P. Story} +\subject{File to demo the lmacs package} +\keywords{LaTeX, hyperref, PDF, exercises, quizzes} +\university{% + Acro\negthinspace\TeX.Net\\ + NORTHWEST FLORIDA STATE COLLEGE\\ + Department of Mathematics} +\email{dpstory@acrotex.net} +\version{1.0} +\copyrightyears{2012} +%\nocopyright +\revisionLabel{} + +\noHeadersOnSectionPage + +\newcounter{probno}[section] +\renewcommand{\theprobno}{\thesection.\arabic{probno}} +% +% Define a problem environment with its own counter. +\newenvironment{problem}{% +\renewcommand\exlabel{Problem}% +\renewcommand\exlabelformat{\textbf{\exlabel\ \theprobno.}}% +\renewcommand\exsllabelformat + {\noexpand\textbf{\exlabel\ \theprobno.}}% +\renewcommand\exrtnlabelformat{$\blacktriangleleft$}% +\renewcommand\exsecrunhead{Solutions to Problems}% +\begin{exercise}[probno]} +{\end{exercise}} + + +% Define a example environment with no counter +\newenvironment{example}{% +\renewcommand\exlabel{Example}% +\renewcommand\exlabelformat{\textbf{\exlabel.}}% +\renewcommand\exrtnlabelformat{$\square$}% +\SolutionsAfter +\begin{exercise}[0]}% +{\end{exercise}} + +\endinput diff --git a/texmf-dist/doc/latex/lmacs/lmacs_aeb.js b/texmf-dist/doc/latex/lmacs/lmacs_aeb.js new file mode 100644 index 00000000..39b2b4f5 --- /dev/null +++ b/texmf-dist/doc/latex/lmacs/lmacs_aeb.js @@ -0,0 +1,8 @@ +% +% Document JavaScript +% +\begin{insDLJS}[makeAlert]{myjs}{Demo Alert Function} +function makeAlert(msg) { + app.alert(msg); +} +\end{insDLJS} diff --git a/texmf-dist/doc/latex/lmacs/lmacs_aeb.tex b/texmf-dist/doc/latex/lmacs/lmacs_aeb.tex new file mode 100644 index 00000000..87d6bfec --- /dev/null +++ b/texmf-dist/doc/latex/lmacs/lmacs_aeb.tex @@ -0,0 +1,181 @@ +% +% This is the file webeqtst.tex that is distributed with the AeB Bundle +% +\documentclass{article} +\usepackage{amsmath} +\usepackage{graphicx} +\usepackage[tight,designi]{web} % dvipsone, dvips, pdftex, dvipdfm +\usepackage{exerquiz} + +\usepackage[def=lmacs_aeb,js=lmacs_aeb]{lmacs} + +\begin{document} + +\maketitle + +\tableofcontents + + +\section{Introduction} + +The \textsf{lmacs} is designed to clean up the preamble of a source file. +For this file, we have +\begin{verbatim} + \usepackage[def=lmacs_aeb,js=lmacs_aeb]{lmacs} +\end{verbatim} +The preamble definitions are in the file \texttt{lmacs\_aeb.def} and a +document JavaScript is imported with the file \texttt{lmacs\_aeb.js}. + +\medskip\noindent We'll test the JavaScript first, press this button: +\pushButton[\CA{Press Me}\A{\JS{% + makeAlert("Hooray for the lmacs package!") +}}]{alertBtn}{}{11bp} + +\medskip\noindent The next section is taken from the file +\texttt{webeqtst.tex}. The problem environment is defined in the file +\texttt{lmacs\_aeb.def}, other definitions and customizations can be found +in that file. + +\medskip\noindent Though I am using the \textsf{web} and \textsf{exerquiz} package, lmacs +does not require them; \textsf{lmacs} is a general purpose package for inputting +local definitions. + +\section{Online Exercises} + +A well-designed sequences of exercises can be of aid to the +student. The \texttt{exercise} environment makes it easy to +produce electronic exercises. By using the \texttt{forpaper} +option, you can also make a paper version of your exercises. + +\begin{exercise} +Evaluate the integral \(\displaystyle\int x^2 e^{2x}\,dx\). +\begin{solution} +We evaluate by \texttt{integration by parts}:\normalsize +\begin{alignat*}{2} + \int x^2 e^{2x}\,dx & + = \tfrac12 x^2 e^{2x} - \int x e^{2x}\,dx &&\quad + \text{$u=x^2$, $dv=e^{2x}\,dx$}\\& + = \tfrac12 x^2 e^{2x} - + \Bigl[\tfrac12 x e^{2x}-\int \tfrac12 e^{2x}\,dx\Bigr] &&\quad + \text{integration by parts}\\& + = \tfrac12 x^2 e^{2x} - \tfrac12 x e^{2x} + \tfrac12\int e^{2x}\,dx &&\quad + \text{$u=x^2$, $dv=e^{2x}\,dx$}\\& + = \tfrac12 x^2 e^{2x} - \tfrac12 x e^{2x} + \tfrac14 e^{2x} &&\quad + \text{integration by parts}\\& + = \tfrac14(2x^2-2x+1)e^{2x} &&\quad + \text{simplify!} +\end{alignat*} +\end{solution} +\end{exercise} + +In the preamble of this document, we defined a \texttt{problem} +environment with its own counter. Here is an example of it. + +\begin{problem} +Is $F(t)=\sin(t)$ an antiderivative of $f(x)=\cos(x)$? Explain +your reasoning. +\begin{solution} +The answer is yes. The definition states that $F$ is an +antiderivative of $f$ if $F'(x)=f(x)$. Note that +$$ + F(t)=\sin(t) \implies F'(t) = \cos(t) +$$ +hence, $F(x) = \cos(x) = f(x)$. +\end{solution} +\end{problem} + +\begin{problem} +Is $F(t)=\sin(t)$ an antiderivative of $f(x)=\cos(x)$? Explain +your reasoning. +\begin{solution} +The answer is yes. The definition states that $F$ is an +antiderivative of $f$ if $F'(x)=f(x)$. Note that +$$ + F(t)=\sin(t) \implies F'(t) = \cos(t) +$$ +hence, $F(x) = \cos(x) = f(x)$. +\end{solution} +\end{problem} + +\noindent By modifying the \texttt{exercise} environment, you can +also create an \texttt{example} environment. The one defined in +the preamble of this document has no associated counter. + +\begin{example} +Give an example of a set that is \textit{clopen}. +\begin{solution} +The real number line is both closed and open in the usual topology of the +real line.% +\end{solution} +\end{example} + +There is a \texttt*-option with the \texttt{exercise} environment, +using it signals the presence of a multiple part exercise +question. The following exercise illustrates this option. + +\begin{exercise}*\label{ex:parts} +Suppose a particle is moving along the $s$-axis, and that its position +at any time $t$ is given by $s=t^2 - 5t + 1$. +\begin{parts} +\item[h]\label{item:part} Find the velocity, $v$, of the particle at any time +$t$. +\begin{solution} +Velocity is the rate of change of position with respect to time. In +symbols: +$$ + v = \frac{ds}{dt} +$$ +For our problem, we have +$$ + v = \frac{ds}{dt} =\frac d{dt}(t^2 - 5t + 1) = 2t-5. +$$ +The velocity at time $t$ is given by $\boxed{v=2t-5}$. +\end{solution} + +\item Find the acceleration, $a$, of the particle at any time $t$. +\begin{solution} +Acceleration is the rate of change of velocity with respect to time. +Thus, +$$ + a = \frac{dv}{dt} +$$ +For our problem, we have +$$ + a = \frac{dv}{dt} =\frac d{dt}(2t-5)=2. +$$ +The acceleration at time $t$ is constant: $\boxed{a=2}$. +\end{solution} +\end{parts} +\end{exercise} + +References can be made to a particular part of an exercise; for example, +``see \hyperref[item:part]{Exercise~\ref*{ex:parts}(\ref*{item:part})}.'' +Part (a) is in \textcolor{webblue}{blue}; the solutions for that part is +``hidden''. This is a new option for the \texttt{exercise} environment. + +There is now an option for listing multipart question in tabular form. +This problem style does not obey the \texttt{solutions\-after} option. + +\begin{exercise}* +Simplify each of the following expressions in the complex number +system. \textit{Note}: $\bar z$ is the conjugate of $z$; +$\operatorname{Re} z$ is the real part of $z$ and +$\operatorname{Im} z$ is the imaginary part of $z$. +\begin{parts}[2] +\item $i^2$ +\begin{solution} $i^2 = -1$ \end{solution} +& +\item $i^3$ \begin{solution} $i^3 = i i^2 = -i$\end{solution} +\\ +\item $z+\bar z$ +\begin{solution} $z+\bar z=\operatorname{Re} z$\end{solution} +& +\item[h] $1/z$ +\begin{solution} +$\displaystyle\frac 1z=\frac 1z\frac{\bar z}{\bar z}=\frac z{z\bar z}=\frac z{|z|^2}$ +\end{solution} +\end{parts} +\end{exercise} + + +\end{document} diff --git a/texmf-dist/doc/latex/lmacs/lmacs_tst.def b/texmf-dist/doc/latex/lmacs/lmacs_tst.def new file mode 100644 index 00000000..83eb8e72 --- /dev/null +++ b/texmf-dist/doc/latex/lmacs/lmacs_tst.def @@ -0,0 +1,5 @@ +% +% preamble definitions for lmacs_tst.tex +% +\newcommand{\myCoolPkg}{\textsf{lmacs} Package} +\endinput diff --git a/texmf-dist/doc/latex/lmacs/lmacs_tst.tex b/texmf-dist/doc/latex/lmacs/lmacs_tst.tex new file mode 100644 index 00000000..cc2acce1 --- /dev/null +++ b/texmf-dist/doc/latex/lmacs/lmacs_tst.tex @@ -0,0 +1,22 @@ +\documentclass{article} + +\usepackage[def=lmacs_tst]{lmacs} + + +\begin{document} + +\section{Introduction} + +The {\myCoolPkg} is designed to clean up the preamble of a source file. +For this file, we have +\begin{verbatim} + \usepackage[def=lmacs_tst]{lmacs} +\end{verbatim} +The preamble definitions are in the file \texttt{lmacs\_tst.def}. For this +demo file, the only definition in \texttt{lmacs\_tst.def} in that of +\texttt{\string\myCoolPkg}. The \texttt{@} character has the catcode of +a letter, since the file is input via \texttt{\string\usepackage}. + + + +\end{document} diff --git a/texmf-dist/doc/latex/popupmenu/README b/texmf-dist/doc/latex/popupmenu/README new file mode 100644 index 00000000..16256c50 --- /dev/null +++ b/texmf-dist/doc/latex/popupmenu/README @@ -0,0 +1,19 @@ +The popupmenu Package + +popupmenu is a LaTeX package used to create a menu structure. This +menu structure (an array of menu items) is passed to the Acrobat +JavaScript method app.popUpMenuEx() method to create a popup menu. +Using the environments defined in this package, and the command +\popUpMenu, you can create and display hierarchical menus. The menu +items can have JavaScript actions associated with them, they can be +marked and dis-enabled. + +The package requires only hyperref. Thus, users of pdftex, dvipdfm, +and dvips can use this package. Two examples are included in the +distribution, additional examples can be found at the AeB Blog + + http://www.math.uakron.edu/~dpstory/aebblog.html + + +D. P. Story +09/27/2010 diff --git a/texmf-dist/doc/latex/popupmenu/popupmenu.pdf b/texmf-dist/doc/latex/popupmenu/popupmenu.pdf new file mode 100644 index 00000000..daf3bbea Binary files /dev/null and b/texmf-dist/doc/latex/popupmenu/popupmenu.pdf differ diff --git a/texmf-dist/doc/latex/rangen/README b/texmf-dist/doc/latex/rangen/README new file mode 100644 index 00000000..6ae2f483 --- /dev/null +++ b/texmf-dist/doc/latex/rangen/README @@ -0,0 +1,37 @@ +The rangen Package + +The rangen package is a package that generates random integers, +rational numbers, and decimal number. Actually, the package uses the +lcg package (by Erich Janka) to generate random integers, while +rangen builds rational numbers and decimal numbers from the +generated integers. My purpose in writing this package was to be +able to create random questions for the quizzes of exerquiz (part of +AeB). Indeed, that is what you can do with this package: Write a +quiz question based on a template (for example, differentiate +$\a x^{\n}$ , where \a and \n are RVs (random variables) generated with +rangen); determine if the user input is correct; and display the +correct answer to the question. + +Beta Testers wanted: The package is still in development. I would +invite anyone interested to test the package, looking for bugs. +Also, suggested features would be appreciated. + +The rangen package requires the insdljs package from AeB. The +package can be used without exerquiz, perhaps there are some +applications to the generation of random numbers. As pointed out in +the documentation, the fp package can be used to manipulate the +numbers created by rangen. + +The home page for rangen is + + http://www.math.uakron.edu/~dpstory/rangen.html + +The home page for AeB is + + http://www.math.uakron.edu/~dpstory/webeq.html + +Comments and suggestions are always gratefully accepted and seriously +considered. + +D. P. Story +09/30/09 diff --git a/texmf-dist/doc/latex/rangen/randomLIP.tex b/texmf-dist/doc/latex/rangen/randomLIP.tex new file mode 100644 index 00000000..99170381 --- /dev/null +++ b/texmf-dist/doc/latex/rangen/randomLIP.tex @@ -0,0 +1,53 @@ +\documentclass{article} +\usepackage[tight,designv]{web} +\usepackage{insdljs} +\usepackage[testmode,quiet]{rangen} +%\usepackage[seed=30,quiet]{rangen} + +\parindent0pt\parskip6pt + +\begin{document} + +\RandomL{\a}{1,-1}$\texttt{\string\a}=\a, \cfmt\a x$ + +\RandomP[index=5]{\a}{1,x,x^2,x^3}$\a$ + +\RandomI{\indx}{5} +\RandomP[index=\indx]{\q}{1+16,\cos(\pi),\pi\sin(\pi),\frac{d}{dx}\frac{1}{2}x^2,{\int \cos(x)\,dx}} + +$\displaystyle\q$ + +\RandomI{\i}{2}\i +\RandomP[index=\i]{\q}{1+16, \frac{d}{dx}\frac{1}{2}x^2} +\RandomP[index=\i]{\a}{17,x} + +$ \q = \a $ + +\RandomP{\q}{1+16,\frac{d}{dx}\frac{1}{2}x^2} +\RandomP[index=\iOf\q]{\a}{17,x} + +$\displaystyle\q = \a $ + +\RandomI{\i}{6}RandomI=\i + +\RandomL[index=1]{\a}{17,\rPI,3/4,\rE,88,1/2}\a\quad index=\iOf{\a} + +\RandomL[index=\i]{\a}{17,\rPI,3/4,\rE,88,1/2}\a\quad index=\iOf{\a} + +\RandomL{\a}{17,\rPI,3/4,\rE,88,1/2}\a\quad index=\iOf{\a} + +In practice, \verb!\RandomI! can be used to select one of n problems. Here, we have +selected the +\RandomI{\i}{6} +\ifcase\i\relax\or +first\or +second\or +third\or +fourth\or +fifth\or +sixth\fi\space problem. + + + + +\end{document} diff --git a/texmf-dist/doc/latex/rangen/randomQ.tex b/texmf-dist/doc/latex/rangen/randomQ.tex new file mode 100644 index 00000000..ec2a9081 --- /dev/null +++ b/texmf-dist/doc/latex/rangen/randomQ.tex @@ -0,0 +1,27 @@ +\documentclass{article} +\usepackage[dvipsone]{insdljs} +\usepackage[testmode,quiet]{rangen} + + +\parindent0pt\parskip6pt + +\begin{document} + +\RandomQ{\a}[16]{1/8}{3/7}$ 1/8 \le \a \le 3/7 $ + +\RandomQ{\b}[7]{\a}{15/16}$\a \le \b$ + +\RandomQ[ne={0,-1}]{\n}{-3}{2/3}$x^{\efmt\n}$ + + +\defineQ{\a}{5}{3}\RandomQ{\b}[8]{\a*}{10}$ \a < \b $ + +\RandomQ{\a}[8]{1}{5}\RandomQ{\b}[8]{\a}{10}$ \a \le \b $ + +\RandomQ{\a}[8]{1}{5}\RandomQ{\b}[8]{1}{\a*}$ \a > \b $ + +\RandomQ{\a}[2]{1}{5}\RandomQ{\b}[8]{1}{\a}$ \a \ge \b $ + +\RandomQ{\a}[2]{1}{5}$\ifnum\typeOf\a=0\relax\cfmt\a\else(\cfmt\a)\fi x$ + +\end{document} diff --git a/texmf-dist/doc/latex/rangen/randomR.tex b/texmf-dist/doc/latex/rangen/randomR.tex new file mode 100644 index 00000000..69f2f2ba --- /dev/null +++ b/texmf-dist/doc/latex/rangen/randomR.tex @@ -0,0 +1,44 @@ +\documentclass{article} +\usepackage[tight,designv]{web} +\usepackage{insdljs} +\usepackage[testmode,quiet]{rangen} + +\parindent0pt\parskip6pt + +\begin{document} + +\RandomR{\a}{-2.3}{2.3}\a + +\RandomL{\a}{17,\rPI,3/4,\rE,88,1/2} + +Choose at random a number from the list \verb!{17,\rPI,3/4,\rE,88,1/2}!: +The choice is $\texttt{\a}$ + +\rule{\linewidth}{.4pt} + + +\defineR{\a}{-4.5}\defineR{\b}{5.343} + +\RandomR[round=2,showzeros]{\c}{\a}{\b} + +Random Real from the interval \texttt{[\a, \b ]} is \texttt{\c} + +\RandomR[round=2]{\a}{0}{10}\RandomR[round=2]{\b}{0}{12} + +\RandomR[round=2]{\c}{\a}{\b} + +A random Real taken from a random interval \texttt{[\a, \b ]} is \texttt{\c} + + +\rule{\linewidth}{.4pt} + + +\RandomR[round=2,showzeros]{\b}{0}{9.5} +\RandomR[round=2]{\a}{-3}{\b} + +We require \verb!\b! to be greater than \texttt{\string\a}: +$ \texttt{\string\b=\b} > \texttt{\a=\string\a} $ + +$\texttt{\string\a}=\a\approx\nOf{\a}/\dOf{\a}$ + +\end{document} diff --git a/texmf-dist/doc/latex/rangen/randomZ.tex b/texmf-dist/doc/latex/rangen/randomZ.tex new file mode 100644 index 00000000..233b8efd --- /dev/null +++ b/texmf-dist/doc/latex/rangen/randomZ.tex @@ -0,0 +1,38 @@ +\documentclass{article} +\usepackage[dvipsone]{insdljs} +\usepackage[testmode,quiet]{rangen} + + + +\parindent0pt\parskip6pt + +\begin{document} + +\RandomZ[ne={0,-1}]{\n}{-2}{2}$x^{\efmt\n}$ + +\RandomZ[ne=\zZero]{\b}{-1}{1} +The value of \texttt{\string\b=\b} and should be +different from zero. Is it? + +\RandomZ{\a}{1}{5}\RandomZ{\b}{\a*}{10}$ \a < \b $ + +\RandomZ{\a}{1}{5}\RandomZ{\b}{\a*}{10}$ \a \le \b $ + +\RandomZ{\a}{1}{5}\RandomZ{\b}{1}{\a*}$ \a > \b $ + +\RandomZ{\a}{1}{5}\RandomZ{\b}{1}{\a}$ \a \ge \b $ + +\RandomZ[ne=0]{\b}{-1}{1}Is \texttt{\string\b}=\b\space zero? + +\RandomL{\a}{-2,4,6,-12,9,5,17}Select a number from a list \texttt{\string\a=\a} + +\RandomS{\si}\RandomS{\sii} +\RandomZ[ne=0]{\a}{-5}{5} +\RandomZ[ne=0]{\b}{1}{5} +\RandomZ[ne=0]{\c}{1}{5} +\RandomZ[ne=0]{\n}{1}{5} + +$ \cfmt\a x^{\efmt\n} \si \cfmt\b x \sii \c $ + + +\end{document} diff --git a/texmf-dist/doc/latex/rangen/rangen_fp.tex b/texmf-dist/doc/latex/rangen/rangen_fp.tex new file mode 100644 index 00000000..e7e4fcff --- /dev/null +++ b/texmf-dist/doc/latex/rangen/rangen_fp.tex @@ -0,0 +1,24 @@ +\documentclass{article} +\usepackage[tight,dvipsone,designv,nodirectory]{web} +\usepackage{insdljs} +\usepackage[testmode,quiet]{rangen} +\usepackage{fp} + +\parindent0pt\parskip6pt + +\begin{document} + +\RandomQ{\a}[6]{2}{4}\RandomQ{\b}[6]{2}{4}\RandomS{\thisop} +\gcd{\dOf\a}{\dOf\b} +\FPeval\lcd{clip((\dOf\a)*(\dOf\b)/\thegcd)} +\FPeval\si{clip(\lcd/(\dOf\a))} +\FPeval\sii{clip(\lcd/(\dOf\b))}\def\thisop{+} +\if\thisop+\FPeval\finalnum{clip((\si)*(\nOf\a)+(\sii)*(\nOf\b))} +\else\FPeval\finalnum{clip((\si)*(\nOf\a)-(\sii)*(\nOf\b))}\fi +\defineQ{\ans}{\finalnum}{\lcd} +$$ +\ds\a \thisop \ds\b = \frac{(\si)(\nOf\a)+(\sii)(\nOf\b)}{\lcd} + = \frac{\finalnum}{\lcd}\ifnum\lcd=\dOf\ans\else =\ds\ans\fi +$$ + +\end{document} diff --git a/texmf-dist/doc/latex/rangen/rangen_man.pdf b/texmf-dist/doc/latex/rangen/rangen_man.pdf new file mode 100644 index 00000000..de23fc12 --- /dev/null +++ b/texmf-dist/doc/latex/rangen/rangen_man.pdf @@ -0,0 +1,1432 @@ +%PDF-1.4 % +367 0 obj <>/AcroForm 368 0 R/Metadata 364 0 R/Names 369 0 R/OCProperties<><><>]/ON[417 0 R]/Order[]/RBGroups[]>>/OCGs[417 0 R]>>/OpenAction<>/Outlines 199 0 R/PageLabels 358 0 R/PageLayout/SinglePage/PageMode/UseNone/Pages 360 0 R/Type/Catalog/ViewerPreferences<<>>>> endobj 368 0 obj <>>>/Fields[29 0 R 450 0 R 436 0 R 432 0 R 424 0 R 429 0 R 124 0 R 139 0 R 486 0 R]>> endobj 364 0 obj <>stream + + + + + application/pdf + rangen_man.tex + + + Documentation for annot_pro from AcroTeX + + + + + The : Random Generation of Integer, Rational, and Real Numbers with Applications to the exercise, quiz, and shortquiz Environments of Exerquiz + + + + + D. P. Story + + + + + Copyright (C) 2016, D. P. Story + + + Acrobat Distiller 15.0 (Windows) + + The AcroTeX eDucation Bundle + 2016-02-20T05:34:56-06:00 + 2016-02-20T05:34:46 + 2016-02-20T05:34:56-06:00 + uuid:868101b7-edf6-4b9c-b714-9714f44eb86a + uuid:9df1dd09-c6a3-4f09-bd5d-0fbb4e95c8a5 + True + http://www.acrotex.net + + + + + + + + + + + + + + + + + + + + + + + + + +endstream endobj 369 0 obj <> endobj 199 0 obj <> endobj 358 0 obj <> endobj 360 0 obj <> endobj 361 0 obj <> endobj 362 0 obj <> endobj 363 0 obj <> endobj 106 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/XObject<>>>/Rotate 0/Type/Page>> endobj 109 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/XObject<>>>/Rotate 0/Type/Page>> endobj 112 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/XObject<>>>/Rotate 0/Type/Page>> endobj 116 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/XObject<>>>/Rotate 0/Type/Page>> endobj 123 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/XObject<>>>/Rotate 0/Type/Page>> endobj 136 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/XObject<>>>/Rotate 0/Type/Page>> endobj 145 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/XObject<>>>/Rotate 0/Type/Page>> endobj 152 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/XObject<>>>/Rotate 0/Type/Page>> endobj 155 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/XObject<>>>/Rotate 0/Type/Page>> endobj 404 0 obj <>stream +HTmk0_}snit +b؇v 'vSo%;Y ^s.tmQ4,}oi7eBQ/\J|v, H,|NЪ %A: +>I%vME aۀRLfps!2B@ILAt +W,[D0FaPF]V=09FK>>>/Resources<>/ExtGState<>/Properties<>/Shading<>>>/Subtype/Form/Type/XObject>>stream +HWݎGߧٮ8 )H/ZA>uN7kob uOwzo|l߽*7߾~+pKۻXk=itn2._*˖o~&7˲w*~W}MܽReG箸ڿ-oF|;޼xܫO_ %.luR>LBݽXRڮSΛ_e;>n_Zd>  񗏥?͏ur-w0cadً(@k}{O`E{s^}y>d~go= ^ڽM'9s2 E~|Hq0Q^YV<6<¹xgĎӡl<;D.uRiˤ9 𰩨Qk0'ݰOtܘ{XJu^L NCX{wG|sͽν]@%g6 d& *i~3Y< <KG͓j{;3HKY3?` (4cDUG!AlyΩ22Z,AP!Ąfj~!GG^s=.r!o D&2QΌ`0~oĬ5 h,1gdȌL2=0LL%F].T7tPE[V8Dn$Й/W܍_F91uIetc殤Xy`8~F/wq&26dĢt'ճN '+H4օ!|!ICY.z#* +r<=~*`aRG了SF\ލ̝J~04=N6@x@}0cx@`#:Ru-Z*xMhiYI=]ĖTj]=P`jxh",5:By6\{`eh4/܍|YִK>~Z"h͞liYVVmuWW9P$2+Z2ٲ?z+׏@rghD~ĵeߓ&g'!=y$ws8S +a"##:Z"hNPf1*72{&Xld i;@j?7aDֲOCKsQ) Գ[yAZ.0%Ʊ؝"; +]!feY5VU?\K>*Zk50Vl[\uq +h4ɂ&YWFM!(b]Hl,h2LU%8CL0B rcF SZZkDC7 tde=̺(!#fN9LB!R cC uVZ%j-[%|6Iln_%Ė/Ll&vlpdٰ8v# +]ifǺ"mhƩ%d"F՜U: ZcOA{OYoGڷa;{2^>aU,(~"H vyD8t@ +@_7Z s 9v +oؽZ[NeĴ P hq"2Prv%q:3&O@׌s }!UvaD-Pi]BDqY cK\چ5^'i:vE>}dO~D~p5kxk5Ӹ쩓KJaT&NCpWOjOh{M(z1Pg춹Qԋ"tb4$9 ʙKజl=6&?S9c9jE*4Tj*FoK~[ +3g=eҦsw_,=yYl dnr/)Chٕ_ HS] 5~  $:/ I3D[* Ǎe֬IUٷsl퍖t,Kޗ&ZK=@^[t1 /Dʫ43ˊlL5*VGjδq5 *Ýkas ėK7EZEm ?14{n,@=)e(`C]9`6?CiC طn @kf핌ix7XXmń -zlUTN+Sn 5au +;j"< Su_Ú#E-Z-膉S"Tºz6c7Vy*\~80jKCc޷-z'ߐt7:T&UFm>*$ț;lJqg罐E2V>(Icg:0_Vb+i2[UB}2JEZbfՑD{31-uz̮@[}Xn~hcg<̢$ +d?EE5TY)iܨ۩pGyI̴o믹pi(uk}BO".7ɍ*eP[vER"NǟL?vT=hMv\$$ 8GjҴU`v{Ϸ%8Ν8g_GȾ5-ɓmf#30kZyIj%XVmBʃIgcD`#nO^!~1ΚF=47l0zhܵqgݎb3{2擂]T LX<2E囒hVGrFP~ lY+խ|:&u 0o挅}v=azxپ_3iv& @Z +[}ƎchB)@;Ns;Y +>"zTujXEUi3ncvKtr29% L^R pI{*5 3=ZsDSk!h?OOKiX^[ޢs!>6j@X<2=2=Zg]poZXĊqllU`\\Y2( ^xoù?u_ ~^n$MI ?cpE7"-5SGjFUrhn#nk?MZeL\"R_Uc|Z7vs(XSV$ZMbafbin4OPx5q磱NT%ErRٜ.Lz]QoCn&-3idz%rTvB쒠96BvۗnD$RPvbݤ軉8T.Q{12ڷ9T/,WބV{ ,..gMC7dCJ橚 +[ +@j) ۘ_ބ0P}F3" A^Nn%PUBZT0@?LloZ}7hS(FDj܂S}!4b A-Hۜ^GhYmJ*SO&SF.tYK7ZnJ]QV\6_/SSYy8hO~(3"#g[Of}. ^ S;Z *Xmbm͠b +ԞgXUqAB`>/dۧ§[\F] +EbE<~@! }ϲ-`. B/]2= + H&Ɏ BW0:(\؅<=rr +RjTYvB!f@+Fsz4?S_#LtygBJQ@N=fB3"p9@<:qf=VE _ [:d "A,d0G[e#a}Sx[DϢ<"v"zݼP]  F;85\0{.A f~x#qwzˉ35#yƥ@7OPHwƒJ >2$$31,DLA5sx_:v=v k%|$#oq(Ig;%>ko(i"m-sB)5C^ 7a;pP{ahj( +*'@8jɨcڊ0>_o5'ŷ~ãM4wO~x*߾~3+~ +oI +M\n_Av{Eo_$oSlko/N +IE:㹯%vj8 6JC.olqYp|ϗBve0f z`mB6/xX/ע=\oNv>OWyl͊8.w,{K|Sh=ݣ>[?."փ?iKm!iz~90ucj= TEd`)W\7 +׸S>f26A Hcx: >qtO?Fqc_R(+lۊWl1*i4Ķ7Z)x:IșZq-[KQkMTzPi E0QҸڜT$Oy8RITEI5q崌f`FU]ӣVyc>LfT[X nWY,SH)X630cAF0V%, QLeHFNe߄r +sW{Vs_KBiL3L,^"@8l3$\;ʡfS')*Rv7zZSthNZĪpfˠ\xj\ G Kvf+2t[ &uvޏ>x&o`>qDN۰$F2Vn.@ʡR+;]c<&5=6"/4YT3%63lB"H`xg2K,ox6">aGrO<&vPnkHTDx(e0 c񘘒XΕ* U䭭= +]c*dsrSXT@+ o¸!ɭ++QznΘ/SuA_}!Q=(yI?3չ@h恻1<C:lČ9 `Ozy" V͞c;4<'c q#}ʵ'WJϭ D9<,h+ΜXd0$.h0XhU*u.T!C$XY@3uŶ2oAaURP5$ xv[պwAQ$rq} +lcfmEL')t/v-×;rQ/ڑ}}R26*TH֨-z@EKǮhɹ%ugAѹsג\*ԍ{X*36-ґPt w%?8|R#tSIzm^P~X&h&Y6ew + H.c[UMu54^ +ZrOv5%V_8U\-St3 eLy1@>Vm}^aWɮ&cBBJڨ*Y*k*D4jF#UWl}=eȳPx[&jwS;tf_mq*oO'TB&r +!cR|C.`~yii/B WgL]S^1-sG3_":p.(ЃMEa\Qتk +ύD*Ĕ9_F@JcvDƘrPT.Jwl)1[n$f%+Ű8W(] M] `(Dj$F:'_HiԆTY5YNӳ֝PbT/dQvCW A6`vK<+ ;X[S|H)zqy)zbhEߤqvv8<ӊ>;ӊЊ_h^ʼ|H+B+zz=J=ʅUUΤ"RȉTJ*z%v&TL*z&}@*v"{Tt'q!&ww2{Q 2alD;& +ӳ96%?!3BE&ipJ1V +R [AHuA;c +\ %q«@TTj~+Li!ۍd$G5Cޭ( +AiMdO_nO` +endstream endobj 406 0 obj <> endobj 407 0 obj <> endobj 408 0 obj <> endobj 409 0 obj <> endobj 410 0 obj [/ICCBased 412 0 R] endobj 411 0 obj <>stream +HLƅRa@ᷲ;PX) iQPQ,XTlNg3ߜ9O"Wv6`+&Zd7HEznDNyf}Y̐8X 3B?AX@~&^G>D3q{CF&E5,,0`DQ4 +|׌x0\u_yZBь3@DCq>(RAHl1b=ez鶜.3$2J0fF1zFZI5@5SFA#i `Ҡ9/HTk)'T 'TqRAr>S6JI +&E*T(*e~匚 + +endstream endobj 412 0 obj <>stream +HyTSwoɞc [5laQIBHADED2mtFOE.c}08׎8GNg9w߽'0 ֠Jb  + 2y.-;!KZ ^i"L0- @8(r;q7Ly&Qq4j|9 +V)gB0iW8#8wթ8_٥ʨQQj@&A)/g>'Kt;\ ӥ$պFZUn(4T%)뫔0C&Zi8bxEB;Pӓ̹A om?W= +x-[0}y)7ta>jT7@tܛ`q2ʀ&6ZLĄ?_yxg)˔zçLU*uSkSeO4?׸c. R ߁-25 S>ӣVd`rn~Y&+`;A4 A9=-tl`;~p Gp| [`L`< "A YA+Cb(R,*T2B- +ꇆnQt}MA0alSx k&^>0|>_',G!"F$H:R!zFQd?r 9\A&G rQ hE]a4zBgE#H *B=0HIpp0MxJ$D1D, VĭKĻYdE"EI2EBGt4MzNr!YK ?%_&#(0J:EAiQ(()ӔWT6U@P+!~mD eԴ!hӦh/']B/ҏӿ?a0nhF!X8܌kc&5S6lIa2cKMA!E#ƒdV(kel }}Cq9 +N')].uJr + wG xR^[oƜchg`>b$*~ :Eb~,m,-ݖ,Y¬*6X[ݱF=3뭷Y~dó ti zf6~`{v.Ng#{}}jc1X6fm;'_9 r:8q:˜O:ϸ8uJqnv=MmR 4 +n3ܣkGݯz=[==<=GTB(/S,]6*-W:#7*e^YDY}UjAyT`#D="b{ų+ʯ:!kJ4Gmt}uC%K7YVfFY .=b?SƕƩȺy چ k5%4m7lqlioZlG+Zz͹mzy]?uuw|"űNwW&e֥ﺱ*|j5kyݭǯg^ykEklD_p߶7Dmo꿻1ml{Mś nLl<9O[$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! +zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)Km + +endstream endobj 413 0 obj <>stream +HTr@_"͆+*( X9Fv~Lf޼ A_ 0'\;\^ك +{BO;>acͭ6;XZ6Y0\60]Z,d2gV7.,ɐnNc11&tuԾ0 Bs}5=`ZZ.Ԛ*T\wBֆb+7BXlF$v* \rRIKH>ybr-% cJJ + +endstream endobj 414 0 obj <<>> endobj 415 0 obj <> endobj 416 0 obj <> endobj 417 0 obj <>/PageElement<>/Print<>/View<>>>>> endobj 392 0 obj <> endobj 374 0 obj <> endobj 159 0 obj <> endobj 397 0 obj <> endobj 164 0 obj <> endobj 181 0 obj <> endobj 188 0 obj <> endobj 185 0 obj <> endobj 189 0 obj <> endobj 190 0 obj <>stream +hbd`ab`dd pq)MLIK-M,u,*//ɫe!CG7_/~E2={R߷ 122'e$t$V&d8Teg(h$k*ZZ Ԝr5bļHHϼd=+}rJL^r~_~QnbV200l`  ##5wUw3fdF +auu?ڏl|se:]nԙ3ps&y4 +endstream endobj 183 0 obj <> endobj 182 0 obj <> endobj 178 0 obj <>stream +hT=o w~ō:dMU ]@g<ý>stream +hd]L[uVn%5n徰̌01sĘ9& ɲhee-^zu[zK[}o{[E?h$XD¶dF,{2ʢ^4?jrs~k|[/?sxB5,?+(w$Í;G/p5Nsq#[`90!^?4f<1>x>uc/V*Z > +Uk,eGep߄CQ]OWazE֩jjx`(ޠ|[v^ y~d@7{3|w;__#>o< #(5hbv첓Ĝㆽ`ݷ\j-aB!FC0B t&qNvaPl`3ItcxDV.rmYr}e!6IE#pjۭ|U=׀k(IkxS8X L0@_qэ-dMCɆx!ROq Y&c %)̦Iod6,cnI SnM}Κ){"ٺ<]sTξ*qM/!N[!C @! ,&孴5laa:gt$ qGĒ$b$mYoh~W~t?.?E%bbv*om?sMCysZLюF#;. (ǝ1$ }^n'7bIcPu8u-1,{NJ3ptG8 ?uikF;tM֥SNSȀX sQ[ۋBcJx$ +endstream endobj 162 0 obj <> endobj 168 0 obj <> endobj 161 0 obj <>stream +hTQMo +|NBd>tSp2 B!~3~ClFb:p/A#-->stream +hެT}TS$^2kssZ갎6EXE#M"1"@% jIEr6l~`7dОųh=]ٹ{=<ϋ"EѨ٪tU!UBBh+^-z8/ G(D"A&(Z*_jrZZ// +0[\|MZ 5~XZZ(wt:0AUmP,Qg'l,PAޝlDElGe^"Dp$& +#r".0BHWxY#Rt#4̄b;<>Bm! O56smel?A w0;^USgL&O]7I%fPW}l蒝FC{ZK{n_n+wicfNzoqvOmz4ʜWSZRWA#fjwNk]wCljyQ)dp +<{g.tY{D.9 |{ +JjhxUl?=Jݻ·r&.a>BlNp?*rdA_Oԛ3Q0i\/8]tVI'הk#2{9>T@uU`_ޠ̥N&pɈcCOA 8+Ƃ4v |۩}|@'9]e6t ֛` bY_a 2@sչ]RF7 xp@ 42z JSquGB;X-'{hz뱽.RYʢ $".]nxd&A4ןO՚SPtZ[J=_A ^/N> +opmPuq[OwR3z+M-f0RpPW&\Ck{P#==^3^k93CJRW%K^k(q ɩ$f쒅DŽ@ 0ΓDי mgJs VP.A\ Ky7Q|j}dܬ/hȸ/B͙'GkKeeCE!UdtvZ<6R s>y>\~o)>5Ða7J򟕧&( H~mn!PT2dW&_0 -:jTS I`C3{E\AL}QmM/EmZ9+ECKQ^meW*(6Tvtw]V˜v:D\ +b?OOx?s } iٟ̕fʪ4^a㥜V}i}NNgw狇A\2or-U\je^L.ėzÓ?\?eгN0!0G0 t^Ǡ`b ]0D|n#3khp>o`pl |`@5[3Dcu,͢R9뀝MQ8|0-RpJ~M3va47\9< :#}k!#W1 +endstream endobj 398 0 obj <> endobj 400 0 obj <> endobj 401 0 obj <>stream +hTQMo +|E2UaZ)8] g Ap.4^E8z;ٲ$>\FZw*NsfWgw _3l'K8! /f@,Î׀P,yNXƟtn562)N2Q$fVF"8Ch-5zWZ"R&eK@3ĨxP U'*I#|} S#|{]K0iW +endstream endobj 399 0 obj <>stream +hޔXTgf]8A#X`bLc!"MzYAiK٥/(,Ja h&`F44~?瞳p|[yoE&CLD"ф?< ]A^!AHk*L0DŸ|HL4Yr$}lQ&CD"< =:}еCzuas)]vx4ff'FXX/=wzkl}E4 +zmgkԪ@~:ڣ3A]6\(W ;E+1f +ҝ:9<{w^ASshuuUM5?~YKC{Nt[X#J}̮hJ@$RUhs,È0U|Hxd7LVĔG,p,ЛPSi7,alUNc5I2paP /nf G,C(XO9 +J, +Y!254ygr*z*&!9,Be4[鲆sO,R¼aˀ/AЋ " &r^@%M΀MXC4D dQT/ojK˞)n䅢sq =bh7g "G#9jC8 wy] aK0n2u\nGHSTIQ\d..ҕgOnZ8m.۝xFn?fG'Fuz}sC 4N Nu~,$_%g`il=ś UF"'76Uv|Ҿ^9Wѕu$/Gw%|*j֕sL.r~[O 456 /|Ozpdzxy6 |hCOB7<*肵E0~ >zS麜=,Lhi~\|*+:Gɿߛ|8f٥s2epE^Bb!ߙ)emeR$F3QR=@ ɳW0 ,@ 7/.)1!.^AgQCsDmmB!i^6)?F טx?;u֭Ml/3]E0pTLGQI_@yskZN;4~Ra8uhec NU_l5 %ziQFPMojdl7n^H'Y4s* {Xނ GN"p)QɮzUߟ:.W= +)E<~i&F7q{%M+l$H>٭wA4/z+Ӆ <<`oNtA~L SP}ag/tb܄(KxҶ J!|, +`lFw]%?h +ǔS<# +2+4Mê'm\v&ȵ.h҉^(F==6@tc4=ԛJLj$Ea E2a Ζ#b 25$AҀphg+<đd:hw1˟׷q'rLUԤW x!qnrPa˄EAtS 9Xco0YXM .M0"vh0@~q~L>‹%L#pxp|%t _b*@fLM%R1G$^ +W ӳ6n22r{!/-L' +|av1ۑ"\a3}F'FTr5a>$þ 9)Ye #':?/ZUdӧVSp -腹=iZi."XY*=Q{"6|$2m07׽41f LsYa^s0.9$y兹ERdd=p [yh`-DyWQM2MA7TWu%߷|sTI.L(Ь7bфe^дwo;$Klz㚂Ϥq +`;0ZgXvb_ L }ڊe,y'*+22-N +I g}v?S\r-Ϡ\Eoo7Z6txp45ȳ{Kl}SR\ jT6*4 nKCwJz<+ cxݨߡŝrTtYR}2+]>?kn״#uH,z}jp95tAڛEfh1}Fi*깚rm~Y#&cmVW(㢒аu{v;PGfp2a;Up:_ڹ\Sw4*b`Zx_̅ڠj-ݧn\̀~c'ٚ +ex>Ȉtǽs#L՘C=Zdhp! 23~;X"7Ov#E֑kå*5G%d(kS\gaҙ܁fn k +oxtv@<h{tTM>>c \^+Gg cp)H;PrRjL.SUb;kǩ24006RWZW:-Ƶw6uC8 +1{H?F!NV+Q20W +FfLFKВgav$6܀_S'A7,ə#2!=;! :UEo"9toL;1{L%w +D8S-0 +Q"܄όq ٳ œ%SyӽعkoB31σ]M_ǫHsLߤh"2weMIVm'?mz+". l]o:wtWNz[)mK5* +R鄖ʔKWn; GJl`<]N)nedp괼t*'N ܭ`]5᜼(\dU"B}X +zt iw)8EiJQ۠U9>~Rfy+{+-krFpޖD 2aaMBAO oٳMg%3fa頃yx| ˅^7HtL(pf`r&{{'('BbX% +_h P!ڌʌ 9vӉNf +wI6do +ߦT +Iκ5WgVqU %̓g1دba} SWly$/n~%B LS($~vRgQanEHN l;ϱ_wy[9\\f|fƗ䦗fK5̲I6P/ƪ}jKJsss3siMZ_%)H-K..)ũyܽ%CFrƨ\hG$׽u Ok~/.dyӘZɹWGmR -WȪH//8R.-^n5:@"KHVaa1oE$BPJG%&Ӫ@?ItzdfTcOd]*i|Hdn䃯긲j%}RsX|ꚨ0nbTױOtɭ"SRb +Z+fÂrݹeM>삭k dzSf&eq8~MC" yȊO|rs6J=KZൔle^A_fCa<3l‹%* +endstream endobj 163 0 obj <> endobj 167 0 obj <> endobj 165 0 obj <>stream +hTMo >vB.(6>vp2 B4kۦ&{`Xq:\6*lQ((sU9|޼FokŹPנEW9"0宫C)7IB/P} U)k@eM[V)q_G> >|Yt9ȅN\4EdUɩ Ғ1i#G͉:܇Rq޴4 d,&G~yv +endstream endobj 166 0 obj <>stream +hl{HSq?ZklޢIRAPKd5:mFO#WUAaQV`BWL a"act~7ۋ?sp^%& qzF`-̶ٝU +lU˂r!<& o)]YK }'N|Mc!Ko 85e9(c6={͆*]^/8ʽZ_痼N_[|>i<_f|!<>/ܒk*;M|I=kJ9vEC7UA:d@]ĭȏChzVYpC셛=H~ % +z&<|Y!_ +shbhtW~^l_Ax4hZ;Ɯ7^A;XGn}e[ ?>fXim55=/L w75ler_]?;boܨ}6Z{s҅41mO HlÂGxJܽsA!).;K70K?yxQ!^taChQH&)A] ۨLeFѲ (0KȨ&&)Q[_˂˿6٥!+a!Z>0:,POjafD{PM]PÄF5ݜ)Z0>DM )Cb@ڟ풹v(&6( gNOR:}٭Ӎ]͈u%wd5~J +endstream endobj 377 0 obj <> endobj 379 0 obj <> endobj 380 0 obj <>stream +hTQn0+ +i$Ch#qCMڻ1 E*2pﻶi yY=VQ]p׍i\B5 4A$ӌC`ٮ;W۠ukIe13DP`x,͋q $~oc +HTƲ[%-ّ&*cZ7S6elCd^84&JO&{Gd 7DD&Ek‡}+I-RN|M^h\a? >stream +hެXy\-$c3VsV(n,a!$@d" aKګl{g%}>/'c9{g?E+X9~EJxԶQ;"_^pOA1?L!^qCs|'{ [(3ܧ}Ɔ?}dQ;"bi>}(cb#|lqҸ>3^y%--mF|gpeϼÒ|""S#Mt95_ +<%O_0B$',"L+ +3pO)"X*"8qK,B/&aggEDd߿xπ1K&)2$tȃ狽fxUx.jPF kya g^RSϒw+C~m߀G7 aS_qFm|mj|"9 %>h !B)e _`X;cs +}>G?:aVaPIjuXSEkRC`wu" D.^<-SUH +}R,o/A^kfɢBc6( +ar@ʳ{?{G}qr9\HZ/T4Ջ;.oOlPGmq̥Pm՗ +e90m.' QFU47_o4)0p#y/bq +uGQ;Y3eQ,qkV1D(F"_>WV{QQdV r۫krг? 9.(g*E7ۢ1E%0Lo`g::I9F1M!j չF6a&iA:+63~r8g$^l( + [Xc\h}._^wMN-C0U5bh eu֢VZ7˚\X+8 a5l2&`h~5\&ށa9i|) +> +y_C;~`7 ',jhZΔ./4晲8{Bg:$ڴ #b8"w1/IF'h@w%'(S|,+J8';хP~ZhaS )\C=mkLߗk98wj- qeIkVqb.˱#)3h4`2` t)}c[πv $!0㗓N,spv Op-IY07r̅IgpM:~.3 gu¦qi2-n:}> 3H+EgNo={*©1;BܳBKQh&ON)ϐޓccɅ>=Kwy=g|~_ʠ K-?¿( _ &m iL'D[@p~()"H2q#;CW#uXqfJzkNjči7#5+Q?F)±Ex? }k6pLޝf]Qz7 XJ 9/5|⸇? B F.wQ B~<>n_JEqLycdl(K@'\)MYJ[ elS + .n)pI\)ߪ<$8Enΐ #/$$s +@)V>LwJ~r]*VQk4rRL^w`vZ +zȭ䯝Z /,Ptm]%n{R_Q04l)?WOxz̹'ʝU;ĒpW o8Xuw4hlߤeQwvBoѻoJ}~J%7r cqE=\wbm6R4 IncsXlILj 2 Ԑ)oq,&aࡹ@- jWFdVP<ޜ_7#u^S[d6Ɋ8Mf#ga(4Niq &xܽd+k6:NQ/jưGoˊ]MARx{$pzgߧطmCt2U&Fkשub$ڌJDnM)c~|Y<51Mɷ~y3 MoL%MLat7<%G>w#FbW ڼcb+~`YMxw]3,|aG}qI%1)h$ێ\"ק+J"M&x* k&(D[Y9^iJ"$LouzͤGKM! FCށIl{3'mtCS^V%S.RŒj37aaW36 ~ѐ=GE**פKUA#f2"b4Hrw2'j$C#yQa(괽^`Kf'[z/rA>9ѡ8I#pM4/ӶݝLļ*K&ڮ n3BE?[W7/o/!oFv-NB,GPX9EcP+R"̌)g͛K+7EF3s6M z}TvQ9awOvZ` 3nQ2Z2{᛭oU[w>QQy8|`f[ӎDW*#"R%L0T4 m1e7CAYĮȝ46U2s"#q)G{~lCqʐ5kZ q/x| )Rz #y $9˷ۂU(vҥ,۟bѳ A?#Por[=u-M>1Y9‰cb]6-'),UJ 4OyjS?O5$,AD(<\`9$ 9M`?^>shUקXiޝͿN=FOAB)NTd灷ZN >i+NujIxx2jlnkYvƞmN. + ȯן RF*5p;͡>gOq9.> ?ᒊyO0whMN<ג + +6TTھFkow2mfNf5am;6ƄƢ8L] g㙻tŅ hx_w&\$/YAѪ:Uy|z)؁XA]ri"*@\wn?}Ҽ9MjRtp|C's꣹vsu_:?JwoƔ_HFFI)=j&h?~g>hH+ݻrVkԓj~{OSi>zQZjJr%5{,:t21a5)*9nYަ"#x4a6B~ORX=7`,﷧⠣XVd-J\h=h07H#3o#U +endstream endobj 393 0 obj <> endobj 395 0 obj <> endobj 396 0 obj <>stream +hTQn0{LՃiyHM)>ԤHXݵQxwg`Ļy7- n0z +o3jy` :t9/ +}~/@`ϰ9_D/v MؾhGmT8AZW %Eh{}+R63*%,%}:v p%\r*'b?UMBVU 0<-k##cDЁLfJ ip-V%]D薬xOEl9mnr"?ɯ$o +endstream endobj 394 0 obj <>stream +hZ xeoZ6DAP.ĕCP.@KKm9;}M)-ZNA(肫emK]7T@wɓμd8#Gxp8ѫ\jᔕ![%D'?vw_ÞXulhX$[<Ϊƥ8fRKcf̝;eߙcEFǦyq;ђ1[cBe1SDŽ'%͛6-55ujOXɻ YAyGxz҃Cx,$<6yxDxxH8M9~%t(}ˉ8#V|ldo4ޓxJ\[X3YQmsOƋU+|Z8zZQ3#Ϯ~vlz,5BC\$=7q<ڋfƌ:ؐ¼/;Ȅ'} W~@%]7%"&a`d8l@dW'xAQJy%KWR| Z]Zj.a9O.Ng?ԣ[nII8%88&8djOM4gI~y $~^.9ȷ6 ^OB@\0^^>~!TB.e />k0{65kZ(\b~c멀}1}b̲M)J&=]FvOsψ`7_S_^H0<$/KDlBFd5bpay½9;f+}"WӾˢ__HcsOt.0(~$%'hTr9^Y +N`%DtL<VOFn-!A Ϫsi5F>Tl؀݀[DP ~q"K. HCEG)V靃\C?S}Ei&-H͊Z^$b 1郷g#Io1!rۏ/ZNcS`;+ ă= ;lS6ɗ1JJ>.'6am#F/|0l\6y:R {޶$%V(w4 x6j2{Bx:9+Ԅ.AF7 0?J6hR&C͛c=@8$0Ϸle +_tcr E+weH 4l_Xd-pf=dwAA;up'E?`6x{Qߠeh3 UYʠ6 /9hr蠣vBƟ`v\&rTx]yX_E + >Bc-1Yo3-u=`~h?X m'm.DV<'~]1c: ^D;zJ|)<|ӆx=R]_UQנ:Qh5q :nOpEz=*֖] 5+z ZFTrn+)w,OlC5)5{f74`9AMUY7[v [(-:IgҡթjJ+ˑdf)`,LiUjܑ gfڤqʵ]@ ^Gx{jn40ߍ +x"F-'hȅ izSX.!Q _t#16*wp G!ϗFijw9Ç`#`lCkj$ b;xUJY.v^>0n&=y3DŽip~6L}\ a&, B a Ex(A( FHwƃ.gJf _+XT9wS&pPq޻Y@=Bk0(`kp~n,2&eԆԆMx Y^KbȲfSdCR"᛽%! +ΞO/.uyȹ> +HC1g #$5p*LeѵuVBg!ۙmWU5HY.ӱ=~t|yDep[x ;> >;pfW^n-U+52&ɢQī޼k۴.=Ri;l G?\Sx;B'xpkDz~6#d(>36-z}:h'2ypn3o߳#q|`=U jkĚՍ:yҵ%)Ah{hQ;{/76M-r '}-[QCdةkHNVkUf9ZQepP7aLe*1 %<]GVfB]mzsLWgwf<C:`P&<;ΠjŚVΐo0SC3 Mzm.[]Zxu9ԍ5jehcčw*K5U*],a +瓚e5IjMVSeFa+i>@1`3jԖ!d䘤|hY:FV$ +7ke2>Zc8T#aiX̌tM[LaRF']XN؍ T.:ЪUh"7!hZSmF:̩id4#"!ca$AZfLc aa?oנ+G9sa}avB +#)s'+f@ZJ,J=߉i’3,NEt ȝ`N>~=yѻE*@kZ1u*_A8/@E5P[֐k~R+W*Std-VVԒ4mM/Å<8r42zW\ؽX,V+?&ݒ &}6{.X^}\v[A4z$8j?M) "Hm\0+`K._JGv1͜yˎc^- 7$$SI8E8΅nC LQI6c߁gEloFo$0v'hR/5dTFLٍ=s eWE2_[~ \ W$!*% ]#a< tu/,:ozG3{3).w'p&v*+bu lC +>?8gOAQm5 +]xruw;/&6mŠaQ2ÁyJ)KbF$4qx4H\n}.Pl,-5diJQD9"b)G瘢|cz> LcCӈ7^xW:xOA6Fu-וepk#X}|jnu?:yE8#5B@j$z7iﵟr5WWQ.$e;өaA`"|kTIXq&9%^C (,Nؗ}"eaw n6VkF9佹kGzixbv P%Lqy'-JFq\w + 5炭p|?|;j_bo"s-ØO̻hFq&'.2E. B},?d[M|M L$^98cբej<ڔl+̣T6K·BO<{_|pU{]jm`+ݶ%VEno!8rpZt/|\TXh;L&fxo' vlhG@ 4*FRyy +L)çl#eWUQ,KNKlE3 +ʠ0ɬ~ǽ{ )ӛP lEzIp >tg:4C&* C|ЭGwvUL;0nsoyF>wb涠(*!=77bb,_e mɊR-sae?RlKo/vMx# znpAB`[p>y,|90L#_[y >gAt-0AfR$-"qM6Yp4|m]^<9 F!!gm9UC26a{ϟ@]AEzVkaT4jMVka%n>:QahI*M9֊; xlS4Rib=}Vpj+ 6ʿiz| Ws(=c) +endstream endobj 418 0 obj <> endobj 376 0 obj <> endobj 375 0 obj [/ICCBased 402 0 R] endobj 402 0 obj <>stream +hޜwTTϽwz0z.0. Qf Ml@DEHb!(`HPb0dFJ|yyǽgs{.$O./ 'z8WGбx0Y驾A@$/7z HeOOҬT_lN:K"N3"$F/JPrb[䥟}Qd[Sl1x{#bG\NoX3I[ql2$ 8xtrp/8 pCfq.Knjm͠{r28?.)ɩL^6g,qm"[Z[Z~Q7%" +3R`̊j[~: w!$E}kyhyRm333: }=#vʉe +tqX)I)B>== <8Xȉ9yP:8p΍Lg kk Ѐ$t!0V87`ɀ2A. +@JPA#h'@8 .: ``a!2D!UH 2 dA>P ECqB**Z:]B=h~L2  5pN:|ó@ QC !H,G6 H9R ]H/r Aw( Q(OTJCm@*QGQ-(j MF+ 6h/*t:].G7Зw7 Xa<1:L1s3bXyeb~19 vGĩp+5qy^ oó|= ?'Htv`Ba3BDxHxE$Չ"XAP44077&9$An0;T2421t.54ld+s;# V]=iY9FgM֚k&=%Ō:nc1gcbcfX.}lGv{c)LŖN퉛w/p+/<j$.$%&㒣OdxTԂԑ4i3|o~C:&S@L u[Uo3C3OfIgwdO|;W-wsz 17jl8c͉̈́3+{%lKWr[ $ +llGmnacOkE&EEY׾2⫅;K,KhtiN=e²{^-_V^Oo§s]?TWީrjVQ=w}`嚢zԶiו8>k׍ + E  [ly邟~_Y53rW򯎼^{7so}x>|쇊z>yz +endstream endobj 156 0 obj <> endobj 419 0 obj <>stream +HV[o6~> Px%+] Za-"Q%/q== C\sjehwFͼٮ;3m*Suset߿?N\] FS#.JgiU~-;/A׏pZ>^:|?$F}3qx*+!OZq߈SDRuV9A>U uɿ !aJkXx ΒGl!‚Ŷ?)TJ}i*O?_'I};)D̃6 O/Ibb J}|fY$XR|Y{ʐS$r:W^|-NLN95^絡֪4+Mk8NZ7A ^d#sf>nnF`2m]Qqa>JD3Kզs5L\FgQ. mQL]+e\Yw֠jQ֨ܔsC0ۯI15'f3G}eզ9u?K:XI5aqF|Q ӕw3+ kcV6} ]O 5ĝM.hw!cѺ'("TP::Z`E|9#4(]F?Ѐ#<^/Y`G{>bÎ< =GTE(lZNOoOOE^5G?^5t,(3#GhU`lt%ÌU7getSbx[+=Z!}^> endobj 191 0 obj <> endobj 184 0 obj <> endobj 187 0 obj <>stream +hTMO0 >qH RU vClpOSwTiv{u^ioԻy7- I +`uf3jyqo :Rt8/]7|~'/ +v:#}U*}JONڞ4PW7Gu786(L\āi!NSf- D~i)+8BJȉBY(E`!N)+Q㔲ʍy +K=R]Zkޓ롕[vux#`^o +endstream endobj 186 0 obj <>stream +hޔVyT!dfLCK͠-֊uim݈jWQ*a [a ; [>mڱkk]LJ M=^;3|wq q鍫6>-*.:͈$mJFQE*Rb\ۖs4=.Rˍ{G"_PjZ1_pcɐtԓ^#S07ȒS8yofs~/'Q$kfIV$ƨ"Bf[5/VNY2wF[BD%'T(6ܨ6Ǩb1sW?d7lcc\ a/bB{V`X ðX xX4 g&V`` W}{ ^%~!r'y +"'x(===}={Dh~??LJ+-)*M/]~UuM"r\Ĭs7O\,8t5&;/`΢$/ nm 侀|qyH/Bl+ +dS ɳ͖ʎ*jQon]Q~&&<<,<24.7EF- 3dUt~X%Ҳp:apQ`-D4 [)h<jtBCqdO+KNڢolm;jH/I*Q."{-fCw%b@t"bMX/NKhiWipVТ:/yT@oP(ПqA gD9poCeʰ̣cFi3y:*''`*8vv0i䡎&3uѽjLLZdj$VV֧0i*u3%ұtT5s&q1K/OSR*i3(Yxl[7̒b4M+F7ʫHw{ f]]vln͈x>f @Z ú4#eR**4< -x&x}ts ︣tRUj)".7DN>Tecsj +)]^`k`䥯m=JqIƦU4@1kN=UՖkiDZfTe ђ7 E; )~F粭%TźC}L@M?%+ IoGBg eJM6yhZݜ :j:Fc2E}suY%TQZzY2Yaf + + +Qqzl.UC'%ЁO>\1tS)kY ^8$ĨOvaAF^.+ژcT 3vBi)A7:U>_D8csr|\'_8'B 3G5|>f_nyvS0̯_o9Z/$Ω܃ҖD*gՇ%'Qq& t8ANx߄IvTYIeP 〇`AUz$9ʼ\*yDs:1?@ +t˰s܄ HnY6`+rSjB5>O!%,/ &+osϸ`{-A1 JnQ x+c\ob7& {íuK +faq7m߂kÒl7z^wBZj) &c_>JTb(Y> endobj 421 0 obj <>stream +HWmo8_ANcZ$%J:lH}Kc\-3ZYr$9N-%mw!5 g^4]qv=o7;Ѭyś|UT+{E4h[O{_GWj&?bVPK@+Lf'?G~7ŦvWBA +"`kt\3~%kM_CCW҅b)hBPwVDknkỳa+z!M˼ԂőI7[r`ĉ5E':ggw1dA@mفϊ/F1=p bQX!U4K$JIQ3Tn=9kUTPTUw䖐UwI3ʕX4s܂'r +L4!OE )MPubň2KXo:Hs끭2,.*ơ͚vٔzJ zaDvV2H:z,2\˭-%okk =5r/!u\ PuC u7t!ΨLX1 +)խ]mI|AYH2"#-~vnSi!CÐ'uEueie& +'DP[Ӹ_vյڠr + ^}{w}me)T3yIۨ˷B0va)fu^p \\R(@ڿIQC!em"L_/O閯ݾ-VM([/8A1]F, j`[WN˺=Q}i G !WW`F~fB?.9QI P|Q_z̊0msI5K=q!-tIeTI4*ZIDGhӜh77N%XhR5}/5XMz:N+hgOpZlzݱStEԾDWuNP"> +Ŋ%W3U#oF؈P4W2|=#Hfy9].g'>M=B"c=af7t.A.PyNYj=ёa:UہI~vn1O(Zʢ5/,ؐ(5/KkHioH epTԶ{.ZY', iz$8l̳yi:'d%,p.:X1; óT-|p'= +MSi?Mß3F"?X.knR-X',]_ٟzO 3zefYo?s.TZl9l ӥTB Ox +endstream endobj 422 0 obj <> endobj 146 0 obj <>>>/BS<>/DA(/Helv 0 Tf 0 g)/F 4/Ff 1/MK<<>>/P 145 0 R/Parent 486 0 R/Rect[109.854 406.271 111.854 408.271]/Subtype/Widget/Type/Annot>> endobj 147 0 obj <>/F<>/Fo<>/K<>>>/AP<>/BS<>/DA(/Helv 9 Tf 0 g)/F 4/MK<>/P 145 0 R/Parent 456 0 R/Rect[190.651 230.743 228.651 243.743]/Subtype/Widget/Type/Annot>> endobj 148 0 obj <>/AA<<>>/AP<>/BS<>/DA(/Helv 9 Tf 0 g)/Ff 65536/H/P/MK<>/P 145 0 R/Parent 444 0 R/Rect[460.678 230.743 480.991 243.743]/Subtype/Widget/Type/Annot>> endobj 149 0 obj <>/AA<<>>/AP<>/BS<>/DA(/Helv 9 Tf 0 g)/F 4/Ff 65540/MK<>/P 145 0 R/Parent 423 0 R/Rect[479.991 230.743 507.854 243.743]/Subtype/Widget/Type/Annot>> endobj 423 0 obj <> endobj 424 0 obj <> endobj 51 0 obj <>/AA<<>>/AP<>/BS<>/DA(/Helv 9 Tf 0 g)/F 4/FT/Btn/Ff 65540/MK<>/P 47 0 R/Parent 424 0 R/Rect[463.991 619.368 491.854 632.368]/Subtype/Widget/T(answer)/Type/Annot>> endobj 127 0 obj <>/AA<<>>/AP<>/BS<>/DA(/Helv 9 Tf 0 g)/F 4/FT/Btn/Ff 65540/MK<>/P 123 0 R/Parent 424 0 R/Rect[479.991 451.799 507.854 464.799]/Subtype/Widget/T(sq2)/Type/Annot>> endobj 142 0 obj <>/AA<<>>/AP<>/BS<>/DA(/Helv 9 Tf 0 g)/F 4/FT/Btn/Ff 65540/MK<>/P 136 0 R/Parent 424 0 R/Rect[479.991 193.311 507.854 206.31]/Subtype/Widget/T(sq3)/Type/Annot>> endobj 425 0 obj <>/ProcSet[/PDF/Text]>>/Subtype/Form/Type/XObject>>stream +Hl +0DsKlL\ѫ,Im!CfvlJ `Hi !`!# >yGR{~E!6%(ng{6B_q8&$[=3C\TS~\Eڜ[A7Z:tti1<^ +endstream endobj 227 0 obj <> endobj 229 0 obj <> endobj 426 0 obj <>/ProcSet[/PDF/Text]>>/Subtype/Form/Type/XObject>>stream +H\ +0DsKMH^ѫ,IՀ$̼!lb0lc sDm`ʷH6,y~ђAOl<[╘~Z; o y +ٓ]tW`(6Ɨ&/3Bڍ2ot 4 +endstream endobj 47 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/XObject<>>>/Rotate 0/Type/Page>> endobj 427 0 obj <>stream +HWYo7~ׯuQk)ShhC]Eq;V) p~{'gm_,O^\oI&޴n1u_4udqD #Hfh5NhE3z?Χ˩$vV)`始!E@ 9Odx2F)?=f]?fSF1)bD$(Ȋ*wsYs{=yuvذ?x8&}q$@0?:Qw{r$48cO!,>BDN[{es*sI/lu2R"Eez57ԬEi/TG~mLfuܕ]=,'M߁_ta.MmZ9:s*^/_ CUyoo)ŕMD嗥_ek r71c(ς+oҋqz5C #AdFf2]a>j]z}ojO.&`wT4 /p'Qk0懾Qo>:aDYLԣt& S + g(pR#4|LwUB0RD$4NRAZoѴ/ eHOQжYc| )SWϥ-Tv$&3T6Lu=;[cCzx"ـgu͢ +o1Hzob*?dSȐ:T̟lC p HM`8,%rm s)v/Yoj!t;kXΑrB@A-r +Xo^t}[m;'Bhm1571!$zm|ΦnPmUΖeFU,]6 '@ w/\m|{},F\+amkG@9L H?Ag(i` м]X \V{EHmGB4# I#Ykxv{*>lZ+HBĦ,$A>3qp ꡂ!/_ DtYIQuR  PD l_I,ԥvbxl5^]kk`۽S\=.M\]FŶi;Oh m%\Bmd ɕ`ӽ?v_iFaiE8i?[PE'XeY'($t/:Ƥ @:w(\!MED(~SGΠR;J3ud +`xznmJa0T͏ +e$vP) pOA÷BR #ۢE3,Hz7~Ӿ6+|lxw k7XΝI9_ʕv$Ԇ #2ۥ|>6Ih%$qƒaK'4{ʡƂdnQi?u0ٚ; +0] +endstream endobj 172 0 obj <> endobj 174 0 obj <> endobj 177 0 obj <> endobj 175 0 obj <>stream +hTKO Y^JI>b{鴒XJ(];@q`hMA6yZB d:[ u8֦(ٻvOYv+n6' b7h<(KgznK;"X'W >۬g*t +!K(t1U\z:n%+ +,dE'#cG]dZ~z0#=Jօ }r9AImxE8J)!k,jqs hן ~Y +endstream endobj 176 0 obj <>stream +ht{PSWo QIcͽzof:t*,V-]E@#!2 !`0Q4B-bC[ժlݸtڙ39ߜo~}X,z-[7R'(g3ŪoU*B$YbVR 1 ]fs+v+-Sq@[\KW`X5G^]^U(+WVIE)iikD*JUjswZXY".(C)MT듓juR~&?IZȪQѵCV"KIARV$Y<"nڶ% +YUGr$iFz6B1vvئk˚\6A.x0e7~ĥoe2N}QC&K Wp&OyurNow1ȧYanNS t 'r hD<.Lցlp f ("r М(P;'R ь'rT3¿F9̢؇mhKMm-yWRRW`(o-iV،v籎zh :&M(  + ia{JdQD(+`؃B y f߾?<ʚFД[oAfz[u + G NQ< + up7=)}ٓ WU}~vMc- ;;+ F\p5TuIb?\@j\ZR~^-$y9i)'iВ5tSiJ\.CZq/}(K$ZaѨvILIE؈ox>1zn΃0a40y6%W#NK׮' y 'SAOwVqvLK5WG˔gko8p7~@<L|uL{W${.U}koq :&n 63)\'k5;L,q>`ob`mWRڧܺs'V9b8d<[{m}kf@kg#]%]g2Y˜@ׁcqO:F?EчO.e^bPPowvw=. +=?\z:+,A +endstream endobj 428 0 obj <> endobj 48 0 obj <>/F<>/Fo<>/K<>>>/AP<>/BS<>/DA(/Helv 9 Tf 0 g)/F 4/FT/Tx/MK<>/P 47 0 R/Parent 449 0 R/Rect[233.655 651.747 379.655 664.747]/Subtype/Widget/T(6)/Type/Annot>> endobj 49 0 obj <>/AA<<>>/AP<>/BS<>/DA(/Helv 9 Tf 0 g)/FT/Btn/Ff 65536/H/P/MK<>/P 47 0 R/Parent 435 0 R/Rect[471.541 651.747 491.854 664.747]/Subtype/Widget/T(6)/Type/Annot>> endobj 50 0 obj <>/AP<>/BS<>/DA(/Helv 9 Tf 1 0 0 rg)/FT/Tx/Ff 1/MK<>/P 47 0 R/Parent 431 0 R/Q 2/Rect[490.854 651.747 507.854 664.747]/Subtype/Widget/T(6)/Type/Annot>> endobj 179 0 obj <>/F<>/K<>>>/AP<>/BS<>/DA(/Helv 9 Tf 1 0 0 rg)/FT/Tx/Ff 1/MK<>/P 47 0 R/Parent 429 0 R/Q 2/Rect[490.854 619.368 507.854 632.368]/Subtype/Widget/T(answer)/Type/Annot>> endobj 52 0 obj <> endobj 53 0 obj <>/Border[0 0 0]/C[0 1 1]/H/I/Rect[150.098 194.088 414.188 205.212]/Subtype/Link/Type/Annot>> endobj 429 0 obj <> endobj 430 0 obj <>/Subtype/Form/Type/XObject>>stream +H235045VH2T0TF +9\fPTH(`%XXa.W@(E6KT!R w5 +endstream endobj 431 0 obj <> endobj 432 0 obj <> endobj 32 0 obj <>/AP<>/BS<>/DA(/Helv 9 Tf 1 0 0 rg)/FT/Tx/Ff 1/MK<>/P 28 0 R/Parent 431 0 R/Q 2/Rect[287.873 355.562 304.873 368.562]/Subtype/Widget/T(1)/Type/Annot>> endobj 35 0 obj <>/AP<>/BS<>/DA(/Helv 9 Tf 1 0 0 rg)/FT/Tx/Ff 1/MK<>/P 28 0 R/Parent 431 0 R/Q 2/Rect[490.854 355.562 507.854 368.562]/Subtype/Widget/T(2)/Type/Annot>> endobj 38 0 obj <>/AP<>/BS<>/DA(/Helv 9 Tf 1 0 0 rg)/FT/Tx/Ff 1/MK<>/P 28 0 R/Parent 431 0 R/Q 2/Rect[490.854 259.767 507.854 272.767]/Subtype/Widget/T(3)/Type/Annot>> endobj 41 0 obj <>/AP<>/BS<>/DA(/Helv 9 Tf 1 0 0 rg)/FT/Tx/Ff 1/MK<>/P 28 0 R/Parent 431 0 R/Q 2/Rect[490.854 221.259 507.854 234.259]/Subtype/Widget/T(4)/Type/Annot>> endobj 44 0 obj <>/AP<>/BS<>/DA(/Helv 9 Tf 1 0 0 rg)/FT/Tx/Ff 1/MK<>/P 28 0 R/Parent 431 0 R/Q 2/Rect[490.854 125.198 507.854 138.198]/Subtype/Widget/T(5)/Type/Annot>> endobj 28 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/XObject<>>>/Rotate 0/Type/Page>> endobj 433 0 obj <>stream +HWo>--M_."-Тޢrza{wh-s!!/>fy}wm9uM}ˀ@ U^^-m8 +fqx0]-ޭ!Wȿq{9XBE)I譪UmrlB*)6 _|yL_'yG%i죎6R!a7>ggK=_, n\\**#b埲eD_Y"o6ix^g-"/._O~s ybj/9i.A*A |"97D5}UFC~*--uۡ=r؍ xg;ȒEGGa۽1h 1lm*mqQ^K68[ju_u?~veτCu[yt' 4Z 7:/6-Ј-fuwa&TNLXs ƦW.Oڬ>p+Yo(PD1xR$qQTȑ4Gka,g=R,˘)hp@.b8[+'JU n $o_=axy n,, /9x#ḏ2׿[ B7}9 Xv7xڿogvi:qFX2JwҚps!G~fZ0Mb/"Ie(kzK,CD> YM Ptm{5QmAie'±t<п@sCf(f71܍:wh?bB<)5dɋ6'5uQIL -L6j؜2k[Wªgȵ +J #:iBΟ'`+2h\욡ZY+\CᰃBb%MdJbCEmW. 7sVc]Jas D^Q\0Ft_AmJ5ZLÝnES`5ga2D`rN6밓Ӵhg6VB]A<# -MA1C&jz6b@!OTܖc띶LBzKhDe@*S%j{]Q@+ +gK].>,q=9Zn\(67$iT4–V,>W9y8*lE! oNLf2,MAƿg=c N{H')!~_e/* /T +-oyg[{D'&uaPP0{>7$o\*`ISK irt1~Vl\Y 6_v:_Ned}:0fzHB&hM/¬``- 8Q3y bal2[ڎ6 9MCEjHW`mI148t .D59v߈c  4xUIBDM̟LyG! $ -KtOBa=R {ׯ8eAZf&^hd$KpfN:b32;| A{Aa$ Sg1 aͨ+cT(GcP$pyUNC0:vk󟌇i"D p}P<ge纼[Mؙ (ˡbuz40U/Q ?]&q#gHy =aLjp6n0xR> endobj 173 0 obj <> endobj 169 0 obj <> endobj 170 0 obj <>stream +hbd`ab`ddpqw)MLIK-M,u(I+)!CX\NɟYe|Wd%? 112 +hVO+IM/JI,.I,H,JIM+IL23@J0[A#YSPD)8e+)x+$(DE(x%)dX뗗Ue*srspyNF(L @30113fT+]n;w?~Wx'bעwVȵdTgsTTV5Jtv6O$tQA~ii~꺂}__g\n)ſIb>{M每'uwMooh[X|E7f,P['_Jo)>>7]>Eu|O&=666D:TDsd42Z[pܼ%ѫb:NmUȁ0*Ew-:mU;잿cͽ%߅H=..uO|wѮ]W,HcywTi>u*L&}y8p^}QH +endstream endobj 434 0 obj <> endobj 29 0 obj <>>>/BS<>/DA(/Helv 0 Tf 0 g)/F 4/FT/Tx/Ff 1/MK<<>>/P 28 0 R/Rect[109.854 395.797 111.854 397.797]/Subtype/Widget/T(sqIDanswer)/Type/Annot>> endobj 30 0 obj <>/F<>/Fo<>/K<>>>/AP<>/BS<>/DA(/Helv 9 Tf 0 g)/F 4/FT/Tx/MK<>/P 28 0 R/Parent 449 0 R/Rect[183.892 355.562 221.892 368.562]/Subtype/Widget/T(1)/Type/Annot>> endobj 31 0 obj <>/AA<<>>/AP<>/BS<>/DA(/Helv 9 Tf 0 g)/FT/Btn/Ff 65536/H/P/MK<>/P 28 0 R/Parent 435 0 R/Rect[268.56 355.562 288.873 368.562]/Subtype/Widget/T(1)/Type/Annot>> endobj 33 0 obj <>/F<>/Fo<>/K<>>>/AP<>/BS<>/DA(/Helv 9 Tf 0 g)/F 4/FT/Tx/MK<>/P 28 0 R/Parent 449 0 R/Rect[380.113 355.562 418.113 368.562]/Subtype/Widget/T(2)/Type/Annot>> endobj 34 0 obj <>/AA<<>>/AP<>/BS<>/DA(/Helv 9 Tf 0 g)/FT/Btn/Ff 65536/H/P/MK<>/P 28 0 R/Parent 435 0 R/Rect[471.541 355.562 491.854 368.562]/Subtype/Widget/T(2)/Type/Annot>> endobj 36 0 obj <>/F<>/Fo<>/K<>>>/AP<>/BS<>/DA(/Helv 9 Tf 0 g)/F 4/FT/Tx/MK<>/P 28 0 R/Parent 449 0 R/Rect[248.114 259.767 394.114 272.767]/Subtype/Widget/T(3)/Type/Annot>> endobj 37 0 obj <>/AA<<>>/AP<>/BS<>/DA(/Helv 9 Tf 0 g)/FT/Btn/Ff 65536/H/P/MK<>/P 28 0 R/Parent 435 0 R/Rect[471.541 259.767 491.854 272.767]/Subtype/Widget/T(3)/Type/Annot>> endobj 39 0 obj <>/F<>/Fo<>/K<>>>/AP<>/BS<>/DA(/Helv 9 Tf 0 g)/F 4/FT/Tx/MK<>/P 28 0 R/Parent 449 0 R/Rect[238.963 221.259 384.963 234.259]/Subtype/Widget/T(4)/Type/Annot>> endobj 40 0 obj <>/AA<<>>/AP<>/BS<>/DA(/Helv 9 Tf 0 g)/FT/Btn/Ff 65536/H/P/MK<>/P 28 0 R/Parent 435 0 R/Rect[471.541 221.259 491.854 234.259]/Subtype/Widget/T(4)/Type/Annot>> endobj 42 0 obj <>/F<>/Fo<>/K<>>>/AP<>/BS<>/DA(/Helv 9 Tf 0 g)/F 4/FT/Tx/MK<>/P 28 0 R/Parent 449 0 R/Rect[226.895 125.198 372.895 138.198]/Subtype/Widget/T(5)/Type/Annot>> endobj 43 0 obj <>/AA<<>>/AP<>/BS<>/DA(/Helv 9 Tf 0 g)/FT/Btn/Ff 65536/H/P/MK<>/P 28 0 R/Parent 435 0 R/Rect[471.541 125.198 491.854 138.198]/Subtype/Widget/T(5)/Type/Annot>> endobj 435 0 obj <> endobj 436 0 obj <> endobj 437 0 obj <> endobj 438 0 obj <> endobj 439 0 obj <> endobj 141 0 obj <>/AA<<>>/AP<>/BS<>/DA(/Helv 9 Tf 0 g)/FT/Btn/Ff 65536/H/P/MK<>/P 136 0 R/Parent 439 0 R/Rect[460.678 193.311 480.991 206.31]/Subtype/Widget/T(1)/Type/Annot>> endobj 440 0 obj <>/ProcSet[/PDF/Text]>>/Subtype/Form/Type/XObject>>stream +HTA +@ E9_1ɴT +@ۂ-x~3SHO^nWz +1΋ !PKJV`d' O׳R-D]虏,9f\i4#}6˴Cm+wEJ;F|1҅> 0 +endstream endobj 441 0 obj <>/ProcSet[/PDF/Text]>>/Subtype/Form/Type/XObject>>stream +H4A +@>eрU&@ ~7 KrI2oP\la3&5]<1rXqwޯ4J Te 8o\t +endstream endobj 126 0 obj <>/AA<<>>/AP<>/BS<>/DA(/Helv 9 Tf 0 g)/FT/Btn/Ff 65536/H/P/MK<>/P 123 0 R/Parent 438 0 R/Rect[460.678 451.799 480.991 464.799]/Subtype/Widget/T(1)/Type/Annot>> endobj 442 0 obj <>/ProcSet[/PDF/Text]>>/Subtype/Form/Type/XObject>>stream +HD +0Dsԃqw z~i ZݤH! 3Dz;\'Cyi#v5Z*V $qVth1'V%#gyw]34N)_D*n]UǀqH/:'O +* +endstream endobj 443 0 obj <>/ProcSet[/PDF/Text]>>/Subtype/Form/Type/XObject>>stream +H$A +0DsYObYV>xP +=ef61*TP*JpKFT"\:/j9 ]XWg>K-M'.mh/>6 +endstream endobj 444 0 obj <> endobj 119 0 obj <>/AA<<>>/AP<>/BS<>/H/P/MK<>/P 116 0 R/Parent 444 0 R/Rect[460.678 583.63 480.991 596.63]/Subtype/Widget/Type/Annot>> endobj 445 0 obj <>/ProcSet[/PDF/Text]>>/Subtype/Form/Type/XObject>>stream +HD +0Dsԃqw z~i ZݤH! 3Dz;\'Cyi#v5Z*V $qVth1'V%#gyw]34N)_D*n]UǀqH/:'O +* +endstream endobj 446 0 obj <>/ProcSet[/PDF/Text]>>/Subtype/Form/Type/XObject>>stream +H$A +0DsYObYV>xP +=ef61*TP*JpKFT"\:/j9 ]XWg>K-M'.mh/>6 +endstream endobj 447 0 obj <>/ProcSet[/PDF/Text]>>/Subtype/Form/Type/XObject>>stream +HD +0Dsԃqw z~i ZݤH! 3Dz;\'Cyi#v5Z*V $qVth1'V%#gyw]34N)_D*n]UǀqH/:'O +* +endstream endobj 448 0 obj <>/ProcSet[/PDF/Text]>>/Subtype/Form/Type/XObject>>stream +H$A +0DsYObYV>xP +=ef61*TP*JpKFT"\:/j9 ]XWg>K-M'.mh/>6 +endstream endobj 449 0 obj <> endobj 450 0 obj <> endobj 451 0 obj <> endobj 452 0 obj <> endobj 453 0 obj <> endobj 140 0 obj <>/F<>/Fo<>/K<>>>/AP<>/BS<>/DA(/Helv 9 Tf 0 g)/F 4/FT/Tx/MK<>/P 136 0 R/Parent 453 0 R/Rect[226.895 193.311 372.895 206.311]/Subtype/Widget/T(1)/Type/Annot>> endobj 454 0 obj <>/Subtype/Form/Type/XObject>>stream +0 G +0.5 0.5 145 12 re +s + +endstream endobj 125 0 obj <>/F<>/Fo<>/K<>>>/AP<>/BS<>/DA(/Helv 9 Tf 0 g)/F 4/FT/Tx/MK<>/P 123 0 R/Parent 452 0 R/Rect[227.99 451.799 373.99 464.799]/Subtype/Widget/T(1)/Type/Annot>> endobj 455 0 obj <>/Subtype/Form/Type/XObject>>stream +0 G +0.5 0.5 145 12 re +s + +endstream endobj 456 0 obj <>/K<>>>/DA(/Helv 9 Tf 0 g)/FT/Tx/Kids[118 0 R 147 0 R]/Parent 451 0 R/T(1)>> endobj 118 0 obj <>/Fo<>>>/AP<>/BS<>/F 4/MK<>/P 116 0 R/Parent 456 0 R/Rect[190.651 583.63 228.651 596.63]/Subtype/Widget/Type/Annot>> endobj 457 0 obj <>/Subtype/Form/Type/XObject>>stream +0 G +0.5 0.5 37 12 re +s + +endstream endobj 458 0 obj <>/Subtype/Form/Type/XObject>>stream +0 G +0.5 0.5 145 12 re +s + +endstream endobj 459 0 obj <>/ProcSet[/PDF/Text]>>/Subtype/Form/Type/XObject>>stream +HD +0Dsԃqw z~i ZݤH! 3Dz;\'Cyi#v5Z*V $qVth1'V%#gyw]34N)_D*n]UǀqH/:'O +* +endstream endobj 460 0 obj <>/ProcSet[/PDF/Text]>>/Subtype/Form/Type/XObject>>stream +H$A +0DsYObYV>xP +=ef61*TP*JpKFT"\:/j9 ]XWg>K-M'.mh/>6 +endstream endobj 461 0 obj <>/Subtype/Form/Type/XObject>>stream +0 G +0.5 0.5 145 12 re +s + +endstream endobj 462 0 obj <>/ProcSet[/PDF/Text]>>/Subtype/Form/Type/XObject>>stream +HD +0Dsԃqw z~i ZݤH! 3Dz;\'Cyi#v5Z*V $qVth1'V%#gyw]34N)_D*n]UǀqH/:'O +* +endstream endobj 463 0 obj <>/ProcSet[/PDF/Text]>>/Subtype/Form/Type/XObject>>stream +H$A +0DsYObYV>xP +=ef61*TP*JpKFT"\:/j9 ]XWg>K-M'.mh/>6 +endstream endobj 464 0 obj <>/Subtype/Form/Type/XObject>>stream +0 G +0.5 0.5 145 12 re +s + +endstream endobj 465 0 obj <>/ProcSet[/PDF/Text]>>/Subtype/Form/Type/XObject>>stream +HD +0Dsԃqw z~i ZݤH! 3Dz;\'Cyi#v5Z*V $qVth1'V%#gyw]34N)_D*n]UǀqH/:'O +* +endstream endobj 466 0 obj <>/ProcSet[/PDF/Text]>>/Subtype/Form/Type/XObject>>stream +H$A +0DsYObYV>xP +=ef61*TP*JpKFT"\:/j9 ]XWg>K-M'.mh/>6 +endstream endobj 467 0 obj <>/Subtype/Form/Type/XObject>>stream +0 G +0.5 0.5 37 12 re +s + +endstream endobj 468 0 obj <>/ProcSet[/PDF/Text]>>/Subtype/Form/Type/XObject>>stream +HD +0Dsԃqw z~i ZݤH! 3Dz;\'Cyi#v5Z*V $qVth1'V%#gyw]34N)_D*n]UǀqH/:'O +* +endstream endobj 469 0 obj <>/ProcSet[/PDF/Text]>>/Subtype/Form/Type/XObject>>stream +H$A +0DsYObYV>xP +=ef61*TP*JpKFT"\:/j9 ]XWg>K-M'.mh/>6 +endstream endobj 470 0 obj <>/Subtype/Form/Type/XObject>>stream +0 G +0.5 0.5 37 12 re +s + +endstream endobj 471 0 obj <>/Subtype/Form/Type/XObject>>stream +H235045VH2T0TF +9\fPTH(`%XXa.W@(E6KT!R w5 +endstream endobj 472 0 obj <>/Subtype/Form/Type/XObject>>stream +H235045VH2T0TF +9\fPTH(`%XXa.W@(E6KT!R w5 +endstream endobj 473 0 obj <>/Subtype/Form/Type/XObject>>stream +H235045VH2T0TF +9\fPTH(`%XXa.W@(E6KT!R w5 +endstream endobj 474 0 obj <>/Subtype/Form/Type/XObject>>stream +H235045VH2T0TF +9\fPTH(`%XXa.W@(E6KT!R w5 +endstream endobj 475 0 obj <>/Subtype/Form/Type/XObject>>stream +H235045VH2T0TF +9\fPTH(`%XXa.W@(E6KT!R w5 +endstream endobj 476 0 obj <>/Subtype/Form/Type/XObject>>stream +H235045VH2T0TF +9\fPTH(`%XXa.W@(E6KT!R w5 +endstream endobj 477 0 obj <>/ProcSet[/PDF/Text]>>/Subtype/Form/Type/XObject>>stream +HD +0Dsԃqw z~i ZݤH! 3Dz;\'Cyi#v5Z*V $qVth1'V%#gyw]34N)_D*n]UǀqH/:'O +* +endstream endobj 478 0 obj <>/ProcSet[/PDF/Text]>>/Subtype/Form/Type/XObject>>stream +H$A +0DsYObYV>xP +=ef61*TP*JpKFT"\:/j9 ]XWg>K-M'.mh/>6 +endstream endobj 479 0 obj <>/Subtype/Form/Type/XObject>>stream +0 G +0.5 0.5 145 12 re +s + +endstream endobj 480 0 obj <>/ProcSet[/PDF/Text]>>/Subtype/Form/Type/XObject>>stream +H\ +0DsKMH^ѫ,IՀ$̼!lb0lc sDm`ʷH6,y~ђAOl<[╘~Z; o y +ٓ]tW`(6Ɨ&/3Bڍ2ot 4 +endstream endobj 120 0 obj <>/AA<<>>/AP<>/BS<>/F 4/MK<>/P 116 0 R/Parent 423 0 R/Rect[479.991 583.63 507.854 596.63]/Subtype/Widget/Type/Annot>> endobj 481 0 obj <>/ProcSet[/PDF/Text]>>/Subtype/Form/Type/XObject>>stream +H\ +0DsKMH^ѫ,IՀ$̼!lb0lc sDm`ʷH6,y~ђAOl<[╘~Z; o y +ٓ]tW`(6Ɨ&/3Bڍ2ot 4 +endstream endobj 482 0 obj <>/ProcSet[/PDF/Text]>>/Subtype/Form/Type/XObject>>stream +H\ +0DsKMH^ѫ,IՀ$̼!lb0lc sDm`ʷH6,y~ђAOl<[╘~Z; o y +ٓ]tW`(6Ɨ&/3Bڍ2ot 4 +endstream endobj 483 0 obj <>/ProcSet[/PDF/Text]>>/Subtype/Form/Type/XObject>>stream +HD +0Dsԃq9*H*?@ mA ~-R&HVx +A#| +]4ħm,h*ĥ1:e_8j^eP6hqf;6rȲ==/r;]Q.0_rr-* +endstream endobj 484 0 obj <>/ProcSet[/PDF/Text]>>/Subtype/Form/Type/XObject>>stream +H$ +@ DsKvQAU HA ~K˛QZRURHl19:@%/U-x#M}{連aw__VQ:홤+5eK{d'Y +endstream endobj 485 0 obj <>/Subtype/Form/Type/XObject>>stream +0 G +0.5 0.5 37 12 re +s + +endstream endobj 486 0 obj <>>>/DA(/Helv 0 Tf 0 g)/FT/Tx/Ff 1/Kids[117 0 R 146 0 R]/T(sqIDsq1)>> endobj 117 0 obj <>/BS<>/F 4/MK<<>>/P 116 0 R/Parent 486 0 R/Rect[109.854 653.247 111.854 655.247]/Subtype/Widget/Type/Annot>> endobj 487 0 obj <>stream +HWmo8_bFMZ`oƸ.^hյ%GrHZ>dQ45p^9W57?_FRz翋FV Q4㳘h~׻Q/o? Q wֽ{_~Aj6ڄGn{J44I#μ8Nro(8|D/52fv僬V;)RM> I^F#qfϒd0 Y!v)b9wycf#R%~[lΤOKV 1q?MUNVc!tE Z|0#Ms3_ղ%Ax}J,C{U'B[r\.3 :G\<Nm^ru#7>g fy9.76&RIڵ헠D|Q[D3@y׷a季]̉5X6}T^pQKIͯro.$q/|~oKҦɋ陵1tD(vV3o$Ġܯd7] h \KQ9qa<_w9,P͏Ϳy +4W ) +C* ߑFZ6D_ +k+w}^@Xze +p*/zL z޻*֖\Hp#x!lG8;\G$ el$L _*^q%uN͜O7㱬X־BT -vBopeYUb4ew cQL$B1N8`#~<&3[ C=$ -f2wij<]ݪ%U`Pnpp^#}ְwC\(7Aghnz^j s%n`dk^4YMG +%ʝOC3LJƄf͛Eh%Vڞ煅3a@Rj&5ܪ\Mgi3VҢnСB# X'v.L2ͳd_nT*$*$LWCRJqlPj1)d1ho _߀ӺOucTcPIX4ctےl1~R>A6#` +p.zYAYN Dv~ xrz t4BC􍠮&PX$ՇJ~uhahL gxr9:Hdt9[{hd5FkSmpz%9)b(C[ZQƼ~$PCCEHa\GԒ˪ʱK$R3RАF#yt U}wPlgd;?\<Y}s\ۙ"F'Q .Ub6 l^-kR9Q!ڭd3+kХ߰]j^êx5}P rܟߥ:E%e^45hzzf>QK5#1_v&Q'M(BďtCSѿ3"1aQ-sj"MI9YbfM>r7.ةBJgp +!Lj2 +[Z) (tVw 5[;ɐ6WX41 e Ó`}5C Ri+z )Kܮ!=FRfi ܑE>]ZyzErI9~!t,t#^۶ąp[MaMm{w*ękÓ7)ƜrMBu:vz?-ׇ}/BBc; "_vPfڀ~:+Uc@>m򜆑0?;F(–j2u?w+Yok"60H֚zyQ>*"^;$=~LhK>ێnX1k ֳx=QTbfO%om~;toV#DArDI=i AЧMp>?WXNīA I +endstream endobj 488 0 obj <> endobj 137 0 obj <> endobj 138 0 obj <> endobj 139 0 obj <>>>/BS<>/DA(/Helv 0 Tf 0 g)/F 4/FT/Tx/Ff 1/MK<<>>/P 136 0 R/Rect[109.854 449.61 111.854 451.61]/Subtype/Widget/T(sqIDsq3)/Type/Annot>> endobj 489 0 obj <>stream +Hko6^L)wݴn+heEIdKN(8Cg4m4kロ\lfZzV֫&S}k˴͈ͫx#hh +{ѧG 8Χ +IN)觋!& yȯr)˓591 +cO˹Z Xy'Mǀv00 +WK?4!Od#OƌG(m@ym]eim +0kJi[B`,2=`L Bx P#)Pd`0G#ײmwKПAޅ>U@01 + \oGbSfJig\jgڶN#1gめJ۲M+\hew]t3gm&k cM +S#$ ta*@ʴ%L6h(tTT[YI 9kFER]r/UڂCBFjQA[m޳kYljiʾ-9&GgfJ~)Z˻t.:6/ +iZgI0YJӲl]pPXFJ+?Wʭ3j %!TFn|u xU/kE6CPTզ65c?}:Sk;{aR_"]Ma9?mji=f89cPD{~JRj(An ֝u|i?ZW6E4ANUrq 5R-i҆HiA2qR&49 w Ae&j`jB`wy {&Ρ~l@vNBcz~:RI?~ueq00/o` q^#EF4 @&0`^I@ caJn`0ńh~16 &ìEB<N8>~9m0PBR)ք\n&,ԓ{~7TE̕7ʤ`؃q}-}j5Y6c^=ZCEd 8BUbpQ c`E"Q^$%T1vO7\/Fƙ::iD%st5ڜThߪI*499U'5vderi\ն_T{xd1躇4cW6F[x>EGa0m <5Bҿd!WuFo@O!AT͑w ۲9Ӳ>%&K_=ʿK(`||qj:(ݷu`JOkYdNf=1[\rb/3n U;BG!} 70v7,ww{T*8V0{;7̴8Ѓ͎,PYkj 61*!`Jo@%ǠR8L5ݣf n%V f\ ш>xz.K\Ǵ:doA߻ݜt%P@Ƭҕc=[̗ҝګuO:8ֺfݣtVc*{ݧ!"dg*D,FZP ['-M ;4y4vT۬fJ*u9M/:_sgaQmx|zT3ԍi"(0G͇Tiܘ.aζA|,F //*BiՊ:mlV'Q +!$Dch|ۺnJ7-^?NcU`Pud(xgUkè#;(w2Q]x}EڡR@*Պ9 +,d4*}A 9L^Tx& +!% M@3<6!ͱ}+ ~q\#o\fIonrI~\]fҌbw +Xʧƀʉac6ضj=OG#fd H!V#c{bit[`F\ABA_(#UFY@*(0j'qply5$5F̯'bbM*~~Y +0'Y +endstream endobj 198 0 obj <> endobj 132 0 obj <> endobj 134 0 obj <> endobj 135 0 obj <>stream +hTQMo +MULeM<#u;kRen7cTa&`Z:p~0fzOaף}r &9/ns*;oE7j7hHŎ㋲jD!xGy]2'\ER+HxV$) Au('buⴻE},8:{:G= fi'K-~ +endstream endobj 133 0 obj <>stream +hޜV{PSWps!GmUim;muYߣB4y'$<D +ֺmٱuW=ciw̜3g~w (޾v c6ӥiqE̬m۟+-KfW1$Ɖfpf~0}lZ{`s-g`/~A8AY'_._hfE'͔旉7$ⴼ q҂EwJJ +V,YRVV8IZ/!7WcXCR,)*d,ޚ_$KQ.dD!H4"ȫ(C-ى  A%HAćL{ЯC897B~!f8^ˋ Pe|3 /a¸`4 ،.fq|&Ujd҄vOQ-;E@SQ[h/Y fP +) @dY-:QU+0c`7W̽ {QAQkV>2A]olC)nH6J (ۨaǵlkMo7o}{њ`|Fm?ۂ7fI)15f20k0vs:@ww%{Ak0V=P>#D +q=8@ufIlRR492*' vC0OW4mt{g"wZn`L0smDIV7)G^5T&nJ1a0Ph17Zar5)MH+$O1ϭ`J̷me]{.G/skܫJG*wr[I1PZKK+$3!E@S)՝#n̻y؛-r*bӥ,*ǫ7y]Ʌ4hpVǫ5t_K ҅MҖȈo Lć;C-!*-*h1 䶽\a,wzZ0> Aѩ-ĉ!]Q|lXhCWUudwhC9]T4շLک'UF^]ŋ[\5'j-mrw2. ݥN +S׮nujy`uֺ\U|?kp<| =E^헼QO;ߵIsHqkI $P:׋ &-<¹rg+*0f KZgq4YغK`[<ڧ(mUVgU[4G= +~ۏ<ES.ˊQ1Dfr&ΉpCCN ykQ\"\u䆜.}$,ß_'!^,22I0DaWQVoRM:]udRAi/.Ӥq +UA&3 d QV T q%;K\"]56M!,I`bM$ ƅWC?3 1dt4. q_o@D1vɿQ _t:x-=dW=]Wn&"H "S?^_3E0/-K[U-[`cJ*K•p\.|DǯDAvmZF < ^c6 _Jlܐb)Aax䏥dC=(%YW|&d8a ?4^E6TZLL{*\]J ӌxa.d_",͌ڙיG5hRZ;!MquƠ  t3yyCxU ^jf9L3Ov>vZDu3/i̍vAΠUj^YH$8쫪"cn#|^gi\~X.֚|&ޡjrSё~@83=@)p}u>c _M:Oao? kmr +endstream endobj 490 0 obj <> endobj 124 0 obj <>>>/BS<>/DA(/Helv 0 Tf 0 g)/F 4/FT/Tx/Ff 1/MK<<>>/P 123 0 R/Rect[109.854 547.005 111.854 549.005]/Subtype/Widget/T(sqIDsq2)/Type/Annot>> endobj 128 0 obj <> endobj 129 0 obj <>/Border[0 0 0]/C[0 1 1]/H/I/Rect[126.89 116.924 453.654 128.048]/Subtype/Link/Type/Annot>> endobj 491 0 obj <>stream +HWYs8~ׯ<Щ&@ڙLUl\j HxUۍ Rn |hy?pa7z|Qu٨ nJue]ͻI0</6˟?vt&G~7'9Nw9F͈sy&hCKs,8a$xnuu1d9G,b.Gnn.";`8sk4ovLDɐ'xblbqpvq=e蟓0&t,hFLFՎ|hŹEZjpbj"ο-;  +xlv|uӲ%x';!h,O Ď݈*..qx]qt\%PG{ga,|) MYIJ$glmʺC53Mzr{;o`O)dTf8W9x.-53ec1w+ q,eCZB~O8+n,!kI΃s{G/jS݄"!C(KoTnU{4 91h}V FeajN24\r!|!" TM٭6+7E}QMLU+KՍb1&" s8ò^O+`.^\`rw}ڵ~nbț֪/ͼ"7&57 TߐVړ s7K=llC8,fpLYbQ< /Hxۓ4:BᰜcϞmy"=L>j-┹hdHG88A@+7j:ކ ${=M$V\r ]s *8X3U [ޭ(o'4~ +c`V =jǶ~Sv\:8v~qi;9lOǬsCGo[}1 &oЌheM!h MC0S!|Tn&&O `|>"z$_>^zEIDtP+l嚶y ]j[B^Vcuzg9 jX9*ӠX\Hs1Q\MG`l +endstream endobj 492 0 obj <> endobj 493 0 obj <>stream +HWYo#7~ׯоͣ ;A$aZݔqv5ʯOERcloU񫃷w/YOqX'륪34]gm?ty¦4'?=馛X};8y_LzAn~0FK8nh D F)|I0]ԓ7?'sp(&fw\`V6]5D]~[v(marQJ<.濋_& Iׇ $78`xJDC'##f1.%ɍ`+$ɔ ;WC=lFYl#dUBbtG߻a!&rvfM-o.'%@é<-c/:$J W' 6X (bWN] "H!1D2v0.&&!ۜG&3L'?CT):5'*Y NC;^ĵN&-g+&U~hu)H{Ix!8. .̕!(&Ą_z +2 c$a PAŴ6,vW6 "x ]?eTFy`T47iz%U~Nۡ*,PO[M̄aLB+WDe\IiUIn9t]-Z:ʟ\6Ԁ_C xm_Y6; N;Ν 8B@}^[b}pRJݢU~̞g qUKP8mTWꄕBٱ2AfɜR{ğG̝Cz-˦W-Xy^ۦ<8hX'A@bfR^*q@oCqwiWumb:g>TR~7 +IP̺֋ܿrIȇV7:^{jģ}t#wn(wm5p>;S[lL,&jVm"Uy%ڽvh%Ks\{E6{`CE$}|fL|42'nj)ҳw=Ê:<^3yIۆ.&`ǹ> +JWx|V]PRg"7.ΎUjW =u>rӨ +0D,̥*ɞ\}Yfʯ4%z-fc{'={@зWtiѹRGg\J}vіV=> endobj 383 0 obj <> endobj 385 0 obj <> endobj 386 0 obj <>stream +hTMO 9@۬e7!M̪I~ĮYVK {k<3BOCk&١^p'.8heJKEi@[gck 8'=ޭ{7@_Bs6ox(i@aOY1"(;Jq5VHt |g4aYqp$gEXa ||b>;d>Dznի^5fZP{VYZlҜo ?dC4@~l|oGW? +endstream endobj 384 0 obj <>stream +h\Lgz]JR؆-F Ub*3hQ(hd*V* +* 3:mihR܋َil~~Ǥ tK"t3se<[dɒ;v&0"&)Bא!D1K6 [+ @X?R _e%Xrs +w3cbfp& Vd yF.-,m*7?/3)(ȟ9mZaaaTxipqf38fZd˓a5Q<8c`0-[-2l9~#kaDICD3/%ʎ!TPšԗقu%G0g8w%Ra<}['3%eũlEmy8uroeFZ=HJL+YC˃<߹ӮאE7vvYeyE8"1Y6e3֎o.x~aObȇ0ɇ{a*,Ʉp7~퐼Ø2hz(($munvc׾]*yCAqrcfJr2vCz`s}L{uV«\lDg!ZC!g].St4naNzgԞY_3GYc|Q=h(d0뚦N; (g.)@O9owUxxg1o=^b}D 6TN;k +m #Ţk`½'~h_,̺4:<mbRJymUxC#ͨ4$Ҽi~q,H18)bһn>Up9M怳|S=PR]jF~gKoJ~#( s!RH>/q{:"yz\sWYO_g +3{ѳLYꁈ}i 2x>_4Dd|jܿH(E1S (J1`ƫO}뱏DxXvvP0 j~kU)HaUm@j,vW$DA|Ӗ]其uLno7V6x/R} V+[^~\8LҠ@se1QƑ(#C1$$&Ce ~xïk k}pBY֏("ۉV: a5~?{RB)E~  0Uoy +endstream endobj 494 0 obj <> endobj 113 0 obj <> endobj 495 0 obj <>stream +HWێ6}7C숖Hꆤ$.} Y+4߷7]{:h)X:uswW?ȉ_KQg}'gx] $pj믞s6n66o~#$t5D+8]ϣ O5h=0Ǜz7dϫW@ǷR V4$~F;#%Af0 8Pne_\B+igz FOE`ʉ>W JƩ^sz .sth"na'>J3u|#N<"QNy +a{$& `B{ %x(֊}BDVi^`]ZUgfg"vkW,2Eє55$1""KCcĬ*Q[BlQIM]`Ď@1ސQ +FG#-d}/<[eg!%u);oŢVYRM<ɉ h09B.(d]"'*ۦ[!YxY#ZAd߾ђ&3$JIħf \ +#njPVdA+/̏Hhk ?KV|_Hf&`X)&Ǫ]1g%/ًοcVJVN#t9RSjoau,CyTpr9Eٳ z)j:޻zqjFT3L|LՉl %]ZVAcRYښv1 3|:XcdJgeZ6E+q̓IBؔAk蛎E3jX Eg0G8k8C_G(uG0_>ݖMO ?W> endobj 194 0 obj <> endobj 197 0 obj <> endobj 195 0 obj <>stream +hTPn SuXJJVuڝEa< ޽wx{woFmŮ^"\qX JP|Y8Q>stream +hެV PSWNrU%67:Z1T(>*ꊂ +τG $!JH< +>ntV⣻tŶ+{ԝٝ{Ν9g}.* +k׎1Q~ [EQR3rsq I +z[ m뾹)4*5:!_5(}ΊW,q~9~\@y(BNTJ,'%)18 "QbxY(,Fl8{=\!7=l 9*P`6 +YI2J)zPy.o]&i frt8u(9s;QL'߫]v< T 2B+ʤ2(IUTVR+ +vEB\N.kWX Xu@X~aׯ_mnO#[]q{#))hsC@zFv/ɶc>Y]MF\#ک'hx ^0DEi(G$`_0 a(7>?5YXn;IE%)[[Ox¯D! :u:w9+Kl +蔼5DG6zO؀q=/!3"kAMS U`C'BRwš#?\*zRt<Ǻ|c;Cx[=w[sJmD`),QL#?,{d@'@zϧ\aMDxj[ewɲ*19e74] iRS((U9PUJlE<I/)H ca;.y7}tqI։uc5*k͵cFAπ`WFDn>ZNެΰ+~ѥ9ގ("/A ,er*~l|\$_j Sd)#yC6w zBV||M!;Np/(P:/llËŤAzcf}cވ[ &r[ 8^TȺ΍s6eBi>t}Ae2}5b#|Ħm4~^n6~Ԇov #xva@nnقP$'֞tl꟱p=dvxg׽XEޝ'Nj|K$g&}@90rn34UZ@ӊѿOOS4]UTjVe% z$k+dY(@xCbM>9j8LXX[.8'F&[D}9snNgǐ!?ʦW̸F- Ufbh>T,BWX&f'U$V +|7EqB !nW5RfEF>ųJ 5VVU"Ҵg'DdiaL SZWyK^7Ynnno9x  +endstream endobj 496 0 obj <> endobj 497 0 obj <>stream +HW[o~ׯ>r<7I$ Nnl +(%Ibo ɖ XgsΜnr>D_~y~>o9]-NFUD_}C4eB" QY4ד]hOZ袝\N'0ND}KOB!95-MFyY$ +9&~/j~0m]fџ4qıRfĔM=IA(aj&4ꡚQA)ʸ0J+~l1(ZD"%(M3rJ5OB1OSmrUvg W"Y7*hzgQsYL_&U ۠~qb.J +BIajVfQBa,EyoWʅېͺkz,H!ڣKc6,x [f[w#@A<_or4vD45mCߓPRGPƲެb(e^+ٶ|nO=zij +<yuqߗW6W ۼʇMWChofd4~xyNgQ7djA6s~{Pt >Wi.,O]TA9@D7;vN=Nj{\-t1_O(v8颹#CGl{ͣ X9ge%0CY@0hO}! w!EUϛ4Ds\ HQ[2soEǰy0,` Ĕy.O+ D%7)H08wÝ\8#ogRuhaZv;=e,J8DuG(8L#)Խ2ѢTĨ M:l5î4kzs;U-תK$bLU82Xzye1C[]vC..ukt5Qz[G%մM⦒bUv]C#3eE>G.3F ,?~ₑ z'1A:]f#HG(2T ²3@c#)S. '"bTͭգhyn1>Gvuy b+~z||/S`#P@:|?,PVc.>Bu29x$„N$+qأLsUegW3Tx|JuEshh+"53a]Vjؽ$IWWE9ݵ3a#١ +ĥQ!aO4 xW#quнvt#ibȑ i\9PJPi^ F50lQ`B3 +]mݔP~g!h=̮4~NaNw,}GcQؒ) u{ 0cV/͂dž- bg{ j +S2(O@(%P i}濗\36T5!%Y95& +e^U 7m7ƎZЪU]YwnaK 4U#QN)Ԅ> endobj 388 0 obj <> endobj 390 0 obj <> endobj 391 0 obj <>stream +hTn0<S`HbJ"ġ?*iPb,޾Q=cQҶ#w +G[k<5Bq]-AjFJ[ea31~ 6%_ɹЎC:ŋrClc!u6 Ni6)r@kE28V> +'&:肴TϬd4ET{ -cM!TuAM?\B}'')98bwѯɍY +endstream endobj 389 0 obj <>stream +hޤU PSW>TH۩kRUlKj +*Z " <i- BR!`X@Q4RiJk:vfZvOvgvgwfܙ3sOr?$IͶ,MDBVBfNB AE,#bx D(AlϒD8KDj+GȈzMVYdIBeJA=B2J& e,BqP:'IN&͞9Y;ѺRBhߝ[n{|S~4NVQ,.VX-+7!*@@TlP |w|E0_(nuYO_Z.| TJ";sbxA6I~: d`ܛWZo@a =F4#6#1͠mgds_ݾȝM>=d-_{UqUﭵyb{VkdVAſP}_^uv s +&+8g`LZpב/Z̓!ubshx 6DPY"t5&޺c:W[iT$zX1&TKy\p֫ XQސik*o-efoqD9 / E$61#B#%!u*.VE=rP , +`,b*͕C'_.j  [s|1.缒]& b'-jd&,Â/oaH/}iX5u7e0\$]6L5f_Y.Q$3QT!Xӫ%6xI魹FW45u JXr'XBBvnnKoK +x[-\TSTǖ֔;U}-c'*;MrdL+aU# Mz!ƔWmePN7e7YF~+ml[ yey\MB/&|}%(b>b =S|υZi`o3)6@AAel[*\*=x|ܱѥS, 72"Oz~-&asqw|ܭe> endobj 74 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/XObject<>>>/Rotate 0/Type/Page>> endobj 79 0 obj <>/Font<>/ProcSet[/PDF/Text]/XObject<>>>/Rotate 0/Type/Page>> endobj 82 0 obj <>/Font<>/ProcSet[/PDF/Text]/XObject<>>>/Rotate 0/Type/Page>> endobj 85 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/XObject<>>>/Rotate 0/Type/Page>> endobj 88 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/XObject<>>>/Rotate 0/Type/Page>> endobj 91 0 obj <>/Font<>/ProcSet[/PDF/Text]/XObject<>>>/Rotate 0/Type/Page>> endobj 94 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/XObject<>>>/Rotate 0/Type/Page>> endobj 97 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/XObject<>>>/Rotate 0/Type/Page>> endobj 100 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/XObject<>>>/Rotate 0/Type/Page>> endobj 103 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/XObject<>>>/Rotate 0/Type/Page>> endobj 499 0 obj <>stream +HWYo~ׯCj<6 $h͵bL$CR^p3sfF(Vg9˜lvCV}fx?ՠZu˅]Tw(9%  -g_h.i4\x}XMf6rc/3c9Gf<"J X:~ *wm]f_LH"QfŜ^,k00\{fi8ŝc\*딼7(zƊ$#)uRe\W;Gcj,/N͙3N/9#I;4H؉Ep*Z64g :}Tb9lCd@N=߯T͙+pj} W d2REu:ncxQIȸQé?F?,p!6P `y`1v3Q*5NܟL`.AJȌDQ fYayrHr"BFIZz%qh[[oT#3n/:0Ǐ +Ю=uU~[+4@h2I@wc +Ad8 hP̠'܀IP$=ë}/B4)IC~˔H8|_ {Cmr yc;Te0xݟ$ɎܿrƞOĥu?,W$W~_PBג-ΆoCBΣت;sè1A\ֵCRr^9מs*up.h~p*(qk5oW-M52C6bfs:S]eea}W^]XnAuBq؍hNw`Vş@EUaL@L GB8/^TmS7d>CX9QR"#ھ|tVA䧘 ɣE1A ++gE)sWxW+eZ'j@6k[F{ +0!e`j_ { vؤm0#YXUT@m?'SXڽ93R3"? {Bv!l @V&&ު: w-lCxOl]ctǒFП!SA.H! CBv:1hg0l+R)1!{'u,ĩP1qzxQĹhګUD38~< Nt\կ{'k CRj>e.R6!j;~bs5<dmiC˦Sv+[ҩB]IVG!aouY]8P+uij4ώ'tE}Cjmt~SGI6~p+}d+hI(l]*'@!~Ox喠n"u_ aJ4ڈf9$y{Ʊn m SW}XWԧpo2Z֞ + )2, +3^f~i˭9Dܲ iBfpXjG N!qxcڙcK$G8_b?tƲ?cd{k-aT>fV&Yϣ:.TQɅ}Aot&("2Ww*:<@:Y H(8L2ƭJC\m_k\;D9&+O|S6|mMrk3<2r,_)ĶZEMbvk,ki2~fl6X#`K$iꭱ'iF/X_,akT^paP7&AB0+'SP3&Fex=kƏ)=.T߷0mgj0}X'f3~H +endstream endobj 500 0 obj <> endobj 501 0 obj <>stream +HWn8}W!"fxӗY{14ڶe$wd߷x,Nfw)R$ȪSuǺ-o󢍾}ܪCުzן˙W~WVy[n^}M~ßb$0XXO.Gw5n&L6MG?rFn' B2jt2!e(03֓y:o|0lZ4g08bLÒh#¬U qenk]Q\_WAy\6SRyڭUO\yj՝/`&ň^M`۰Pf=5 $Q)ݞ'$b>#Kx#j+ok/xK^SwzەM2DkJYwf$\9'}y8l(NwݬW'~ˏOSvI<韁y|aCnY mf4RR14Mt믯Azr8R"=,Cuh _chqʑK0oJzx]Ĵ +n',psqϘ``lQΐdqm& dqmfqo%([嫠R>#6^΍8 ]FHWQ5N(z6ᛊ^$y_p|BTO*规"ɷ=> 9slH,"*g l˕l;ֱRU ?5eu֔r4F~|AP*S(b2D +BrB]X- EaD81(T(jjpF*ܽ<~UEiR:5AǞ~ɉxp 0}UT3[Wnhw?rU*s>pi$"p{:A W^XKD@َr3 "]s=ʺ @6Oq:8_Kpu1c2&`OS{_=lM1ee%P )FƳ0s/,fa>rt-ò^=L1$9eSki2z>ڀ y p~\ 483lZXپJ,M"XB-%Jb("﷢vy\nTX&mjQh=!3Vt5eQ$*xJC/G@A /An˪Rd|j4RClTq/x̽0 +W&1aTv?H㉀,GHX>f +FߌL69bԬŐa@#<ΞΊAq:9ngC\ .^$[[JIr@1 iBgБ#!ۜ#W]P#EbJC~;5pv&!}; IxN!SB -6u}ŁԥxRpsk߶Um뇦2Yby=ۛZEB9D7UT;ޤ%3 V|ԞM֏]JR.Ml4 "+6cVYڑ9}n\,$ɍ3s% =g`=gv@wD4[Z((fD4žhO%~,je:^j$J3SA`ΎAƍ! +q: x߇kBÿbѧ>5Ya䔌pV~a}9,1~д52Sp-ߧȳ宁38n#:76uN%P6Ѕ;FrO&6`,l_j7 ɐ=r9ISQ8'3, H# A,}lI!}fŦk&cE]d]ں䷃'h]PTvGG\cY={N4P{s/aa:.{M])kcӖEqFkԘ%&2oF# ΙV*+4q9M{jCj</ ZlL68{} Ok]!0lΫG/.J] eWE -\h2HVe +-]vA*1 ՞ߨaDznv;*&` ] +endstream endobj 502 0 obj <> endobj 503 0 obj <>stream +HWn6Oh~JTht؀bb-:fɩ4 .IQi]QHHÛ+ _^/;N?j7MY]W\^~#WU07m0}[r~7j?v[!I~MFRp&`Ỵ7y[&1QVVZC8te0z=r1U2P7ˏT̞C6MA[zҡ"g\;0x/Xy`1Z</3j=ԑ>~wxQ*w TkN-p$Fa̱$!$b<,ϫ$/nk Z`ճT, LLX4*?BВHpj#Řy.kRӽ^|_$Wr} ̤>#SF85}:?OQlJ( ,FIf򷠄?gA3 +X0]jC ifD @خ'd$~Ғo$#6]wwvN5fc~_-Uu3\m+e̓""z([VjXy*zunTNsԘN7ÁvS˛AM>C$o)ΣƽQYaą)PN_qSŷ +*:O`v4yַALᥠ\bt&dz6ELGQ?OU |sF4TXbm6ƒ=0Xw5ܺA~4BO > endobj 505 0 obj <>stream +HWYoF~ׯK*V{*(z"W6[2I2 ^Mىf9.~h|rY|J:єIXU^%]^W۷.Ν̈́89Ff<'-'عj'K\ԓ?&w$rf%[/7B!! +͘B3Ǐ`Y.it:guY&UN?/08`%td +ș3Ĉ'7VZhaN>HOEkNy%Z=\.H&6C:s"k3y+<#=nh$Bǧ!TZI.#E0,&`(ʓA8>'-f{yЈ"ĩ3F'@UFtp?c`Ѓ}]Q!?(sQX)}>0(a()It)y6C 19@ ܙSvuHYlji.6R߼J]&1U{'Z淪;""zdh: pLav$QQY)hfamDš +]? p'dR]*|QyII.nLӍc-! p1 +!ew# +7ꋩRV $2Iz +GW9Q=!^ӚnbO(CN w׹48aMyI&Xebo']NOtV"Df籛tv(Sp^ +V=m,$k_ܜ,ơol]Hjp.Q:u͘p 9 ^rBJq|sx ?nct~6S q(3`,oErvM!̄acFց{ x= +> 4L4^j௔ϔS>dgy|}~/_I nv¾R;gSAFS  i8,lkzE! |OWo+W!U +90YKנ +@#`IĆ8ͳS>v!8VO3`י[ܛr]Xf'ZiG]7-Pʠ%@,~:NV +:7i! P=C,0d&2`B Z$sSaS;Ş=ʽhdVqb8vW؛ h@rRd]#eܛP#\nvf;Օ,˥-@B1KGwJo&HQ3[cFvB#}77i}rEDXО`  +!s';(fj4xJ\FY}o2>qB• uUR;4ݽb!<^ 1/J=V|LX8PBioeK}#|MĖXQ)"#A+Ew'$ )WoQC j27+i\$?>4 (Hyw#y-ɐc&Y}]${bǏ4zQU:Rb`7bżJOlXMFn,g +endstream endobj 506 0 obj <> endobj 507 0 obj <>stream +HWYoF~ׯC +Pރ8@E +HAkJZl\*kwD:FP99xcחꃗ/Om+]ŻOBo۲}W 0F f '[99Y3mr+\x/!Q:YfB"$F (Obsy,Er57MUz-LXbY'!I<!Fs + τ\uel|%\)"`lS'𓸍>^Hwbo*nZťF4Q6^hyIĪbvJuOsuHY#,iWpic@QAt>7wXh)%""Aq*Fi_;WK oA)dZ'kyZˀ]){řКo hɡo 1'ʦKGC:w칸#Z)xvv%r5wi%((kFI"ngP DBbX/oNjߗvilRCZ6ջ 6(zSLmDVz>*6l/gs0H'Pr'9*46Ha;T ira1pz=Y1bC]x}HH˲/?Vt*Yb qxMٶd/9N`!A(ߎ_Сpc(CVQE8 nܶ &+đ+)E}ΗhINNfSX>r;% ʘƐdc)HJc7U6YjxWpT"VtӠ:57O W]*On]|m״:@wފq?\j%2 11iehqjܨK56rWY>l9,~C~u4񢹪v87m]Z$e"$VSh_p >=}7]<'(V,-;KQV3lic!s@AYWnҩir[W%ܰ!?h{[{(BPV՚l̬~ m{uw)e}'\{ UkǁSթ%- Y?v +endstream endobj 508 0 obj <> endobj 509 0 obj <>stream +HnHiڮJۤ]jn qklj&CWgss?_:Mf;7Բ\'o<*͓:-rwW{Qx@yso U5XU1k# OԏX'1 -q"Ψ'b "Mփ.pD_u/ 2|8<_" 1|>Dy^ȵxlďh(kqy1XQdfb׶oQDb<'wRiLP/ZeEC _v _!4c8 KŭҼ+YV]ɘ ܳv\PP(& W|$i#\\ԕ9$J]S}WlWw9d) -ɶޖqPv@Z5v*.o<&G};my"(ofzYޟ n $4 q <0OA| ⪅!䙰6xL㔫:Dn6s>g? ˓ .IQ-MDQ脑iz$Su>rnl 1qhx6[ls~~ +Tt_w͏~lS߉>uD7;ֵiQ\mg;8q + Uu i` $sa\ݫPZ1ti:-Ofg7E. `. vA@pPbngk昞xQApB4r gFͰ+)5Ln xJaк=U`"b1ܟ@ QB(~zgG;d[kۧcPMQePufg|pkt/61 1:V`CC +endstream endobj 510 0 obj <> endobj 511 0 obj <>stream +HWm6_2`$m +$C^5PvpmŒ\I&Moo!E3>?9c9˛AP:FWiXt{Ȼ6B̽vR@ɔaӌ]@l,Ki?ldS EW5L!۾ ѴkTޙ4~L阸)jԩCm c zc|woawQTiRbzZ]88m# (!h0:/>1 ]B̧ǕH$UZΉFK0)rcC\%dInrޥ;'&pt : "+|u4L&z{E5ISPYXSXlJqyNrBOpznRH=7hժ?!AX +XDm/VUg }<_͖mٝUr`e |xd;亅#rB(%'BpeDP!,H"KPS}BA2!ҌYFɉO5lhW(QEopM-V$뙲6˱bip2&L:.N>[(Fj )cː 2/XSl,7@Ís'TpKxĭʛ}z,_%T0=Vto??CzV}`ysRmRElfoԵ +xB0׆8- ì/@NLXIrH=@ +r!օ uYMsyNE#-#%QԿkUFCF=Cc 6>#=$wlzd_%Z+ی6[dH"H_GU.y]ӭ&cK +32s +e!Y=AdfLU\Ey[qJ9)/Zz>6` +endstream endobj 512 0 obj <> endobj 513 0 obj <>stream +HWYoF~C\u4@!)(VfC5;R(nc f۝e\EmN7f%Q2g{U:)rWgmEl ?baȳ5yW5ya bF[6ru]4i?.ϭ]DHՑ1Ei8h|&`C~|M*ztr^eBPJ &y]h`f4PՈ,VN`Ul"yȬ0@,2Td6U{Z}%Z x/V"$̏<`B܎:żInF.[0];a*Nq&˲MFDVpY!ESt]D;S К;mBOQDFiH}]!C#C̿N}]ʎuJ7L"JI~ugTѐ`>(`ձ&K ܈t;,Q4D@CbDiY4r@ ·.M5 {8ih\9Ĕ1cPd'exd7Hx3B*ǏH '8Ěp7CA\-ˢx}ྌjFrB}N'!I)f{ Mۣ>teiSեP P{PƸþ3Xm ?R[ir mtPͭo g vHgw`3` [hm{U;T;uTL> ^qp x|o$D P|G}0`F4B;^Qxl;`uy;!;@ +㇞j ZL̠ͧa|Bo5qKe#˺=-+dv?ߣ܎? hVi7T\Ov6dT|22XΌ-g\;^Gy̻7cx'O*x}S:Ji?V\F*FVi{:kF sb:ZJLt¼`dF)˻ +^b8i0 +endstream endobj 514 0 obj <> endobj 515 0 obj <>stream +HWY~㬰s@1Y@vdlr'"g I=\!˪>뛿m˛Ux_Vׇ8Y|Wy[T^~>}% +E35_f7?~]3@篫/7?WٛGn_fr;c0r$UR Fh*6z7j!4W\m&$"Ư-xF )6uܤZHIҋ+>_0A QѶ#?:|*h$di,,_>j y",ܲ#ޏR@&}.i{Յ`J>EMd$j|g/1FNLvJص7'|*{/jjHu}LRGvסS,N:FbLHCd]Ti˰U@CCtop2qMR9v^+J)2ڕ$ϝDz]EQ2 Sjp\*Ogm>Q[yo.8^tcҌ=g-ޜ PDZx= +ciHVaS[V0t<"/EFy=kd4N0vvɩal*;Y{MNz Tz7%ï&AuꝥDFjuH& +mbdL1)veU'&γDviV.bu kK +tv*TS]g΅},/_"q %. Y@y:̳ǘzR9~se?%jHy0zQ? "1*'Ȫ$}Uso@>d/]<$ wFiE"6`#*MLo"O"1,vbC9 =ʔBs3 Ufj̡V #۞00XjK^/ hTt +.2i?Q*2a8@%5^G>J:,9 \; l sPaoL 9I=uL>_wZYTzW@RC[5phTW]g _LOiαA2h8v=>T.oD +trS<xU1_J)2&2LgV%ۋ^ݕ7_y Wj(ISY`|"Ug࠭﫪11JYm,+z8```18ٶM\n5`ƏAh#I fkIh0Xʱp+^tPz(5  d̗}=e"R "yoI`ѨmQ +CjԼޝl͞D@b _ncLKIaM`gK`(.GᛒgH,oJ!PLBiIABdFH2V2$i +P0* wUj >JGDy5G,4ńP8FTez>^6cU˽pt< t5J$f9Q^ +endstream endobj 516 0 obj <> endobj 517 0 obj <>stream +HWYs~>@)a4'T,ySNe>[)A@k{zNd1ΖĞ\U^WE缗&o?WS=!+/:7#/8&W?lppL~NM"Q0ՄDHJB+Q*8 fpʃf2 ]Y\D lz]2qı2f\L=C$΂!FZ]Dƈj-TWcM0qj4 L _ s{>5f|/#|?>D>>0*d &mY֊8Yfn;0;qدHEsJײڿ8*Br0!`"'EE,|Pc, Nw]85i?I67h0#G){ؒ( u + Zf9S6 k?^4u`* E0 7fGGV"lW;F N,Fvlfp-՟ +A fU0M= NhuWWnlRڌtSDZV?Vc{.G鍢,6_V +l/fഀ#;||NUט8`"(RZ.7;i_CUtHtE o>7;Ucfm֨;bwUS+*=!җu` 2p2II0P@+Ć4p1=SDGPP U6='ͥDLhhoR.hȶ6{P(=4.Wv}9;\eip?lmZTj~3a8CQMn}H N0 +GpOb;;HT$1'lB#!0h HuۻMMӞp '09M >0ܲITgv٫Ȯh˭H']vv6+4AAe۹A{'oeVbݔh˗-E%/9.>M1@cZovEխQ.xͮ^9k/oT8?*p9F]`Dx[J6k&ٿj?A~bOc@I<.EщfVykBvnE7~-P[!1Miˋs(6B!*@!c >G%2mͶoSfr$H꼫tnWvҶ(]Df'jKusl__Eˎ{T⊨7ywjo  1[ +=/[{7\xIq6yEBU)(qÇ.ȫJUSC'Q&׼cͺV˲+v]=.ǀ\#v $qO +0 4 +endstream endobj 518 0 obj <> endobj 75 0 obj <> endobj 76 0 obj <> endobj 370 0 obj < 8 \) ? aebTrustedFunctions\( this, aebImportAnFDF, "exerquiz.fdf"\) : this.importAnFDF\("exerquiz.fdf"\);\r\nif\(typeof dljslib == "undefined"\)\r\n \( app.viewerVersion > 8 \) ? aebTru\ stedFunctions\( this, aebImportAnFDF, "dljslib.fdf"\) : this.importAnFDF\("dljslib.fdf"\);\r\nif\(typeof _execXMP == "undefined"\)\r\n \( app.viewerVersion > 8 \) ? aebTrustedFunctions\( this, aebImportAnFDF, "execXMP.fdf"\) : this.importAnFDF\("execXMP.f\ df"\);\r\nif\(typeof partialExpand == "undefined"\)\r\n \( app.viewerVersion > 8 \) ? aebTrustedFunctions\( this, aebImportAnFDF, "partial.fdf"\) : this.importAnFDF\("partial.fdf"\);\r\nif\(typeof _docassembly == "undefined"\)\r\n \( app.viewerVersion > 8\ \) ? aebTrustedFunctions\( this, aebImportAnFDF, "docassembly.fdf"\) : this.importAnFDF\("docassembly.fdf"\);\r\n)/S/JavaScript>>>>/Annots[371 0 R 372 0 R]/Contents 533 0 R/CropBox[0 0 612 791]/MediaBox[0 0 612 792]/Parent 361 0 R/Resources<>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/XObject<>>>/Rotate 0/Type/Page>> endobj 1 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/XObject<>>>/Rotate 0/Type/Page>> endobj 56 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/XObject<>>>/Rotate 0/Type/Page>> endobj 59 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/XObject<>>>/Rotate 0/Type/Page>> endobj 62 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/XObject<>>>/Rotate 0/Type/Page>> endobj 65 0 obj <>/ExtGState<>/Font<>/ProcSet[/PDF/Text]/XObject<>>>/Rotate 0/Type/Page>> endobj 68 0 obj <>/Font<>/ProcSet[/PDF/Text]/XObject<>>>/Rotate 0/Type/Page>> endobj 71 0 obj <>/Font<>/ProcSet[/PDF/Text]/XObject<>>>/Rotate 0/Type/Page>> endobj 519 0 obj <>stream +HW[o6~"yӭh;m6t؀^<hS M'ZeɕACRR$;s"@"/Ue3}dnhnj:{6ڤlӋH,Ϟ=b:2aS +OI@E@`LfӋz2uC/ɛٟp|r6ٜc17-f8b&Cc9o&i-O|AlbU|>H&'3 |DϜS)nNy_:{= g$ aj-MB:Pܭ˴q;\*wۭBmr|WUb]/%grК$F\fjҿ7fU\-"@8$WNZڤžLa2V ZG޹WVk.Tu~6]2͗uvpHU0pn-fФ2pOhy$ztթeIDCv狻[_nII ѹY;| +Unjs{Ԏgd1` F~;%_ qH2YŎ"g|@ғnCڍd' o)R*bGc$᱗ӑ!CƼyTPuSev.ͳTGnժT 뛢IC:?zq4wcɑw=u2J*Z.u@4lD#iӨͶĥC5z}34qD?82mضO2  復)Ǻ;4AއD F$tnk+Gj5u`n5v6Y{̾1Ib~LXEhboLM@Aadva$3 1E|Fb13o\cG:`z/&CV}@ګ@~1.ҭ>CB`uRӶL!t#.*QAԁ%:]Vl/-AfuDĦ)B|pͷ8bKHz0G:Jަ'x?]dF˲p* LR{n 21H mc$\G K̠|fFz\9F&K>swp pq]? Hb{6w[OC%X2 3l#~ke i-Y-5k|U]3X +U& +p2%j,nK1Զ6|:陼S*L&nz3VSa bwsYumT.J?yS>s@ѱE'ՑU`K]zF~ w'H'Ual}@0 cS}z^rZ;T.4+_!([&*ah0|A^Hk!εeY! +I:Wk_a׍AAsqu`7~i/A˘C`c:_NÓ'XS?ϬJ HΚŕθ0tоFyF{k +߲\c9¼SoIkᇔí\9ec?ng\`F&Bh_xnt@CW <:vssntd7S)8$F!ľ'>2f%f{jlBOwx4\[h*`cs c +I + S(f"O{s܅:Dہh2۹Dx8|- 0X=>pN;?ĈQ17'z88#>4nh" LzF{wl!6pL{i6vq{}m_fܝ +endstream endobj 520 0 obj <> endobj 521 0 obj <>stream +HWmoF_to|\ܵEhU(i-CRv|)R}) Xٙgf]l_X?nk5_~:ՔY|dʺ/_z|qF!EHde->e8]6Zެ#ŏ0ZpjF)4aF) I"G)̄e*kł".ˬڵ~qI0,H/V'J Vu,%"jkpuY5jwܪvV a$~uZUu?C(ai:_rXWq,2R;#Q歓ʺݩ. 7+'u$+uwM[mYW;i* 6'4Y>rB䃼(mgcW{7Q}B=ԢC Ĺ.ޯe=]0uJ.EQYݨ1"FljmݯέVXnvKLͺіQSJqe$ a_FAdτ;H H!â$˹!aau?=RnsIvmebT+VԬcVɰA-x{^c%Ofp[Wiju6+ +D'"GaH'-2xȧݸJ",Ӊ JLcUv <)Jܿ uOP&gFLX486sq7cR*/6NJ< 0f"葉Uה9݋{1H~bABݿG8Ex{yV]reh.TyVׂߪz[vW!OʫmJ`2!)P# -E#+BPuh5LShF AEӿx/Ix8-`23z r<&Uǭsb58(coCb i$ޜWg_A>넭Ir?t)X^=t*5q^BXJ>^2/&WKo<{'ޭ"oA2ǿ`X윪W޳ivFhوyEXLl9vixH'UswOb( +b 0aD2,IFPܒ3cZPO0:;)D\_T p>D(֫8o9a[!&f(ےP$nsA7-N[V4(g m ~??@ͰaN> endobj 523 0 obj <>stream +HWm_tq\$@}g.ɩȇ;#XQ;&)ϪWR.UZf2;3˿}E|{,lw5X[P֢/:ۗ7oQY8(voq-w8i?,^}^V#Qa\vA"$@+Qs$9.|)x1f{n9_mab>#QX1Ho~w+YcLs3𳛰JQθQ.,;:Q҉Y7;e٦uSA-lKG7%YlebU ы(9A!Q;#LD "hT8% F_]?}LZ+$Ip5:p{ J7^ˢݾi{Q~}j5Ee^a?k9Txˋ";<ոYj.ٕ_\Ry` )%H:ӄ9+j(60bEDߗÙNb.AV##^5kW;j{΁PNg)jItSDb,.f[O]t,yaXiq2xxvSvJXI70FSKaM4?B!"-E,= HRN:83rNֽUAa~)YRHg3124|ʏ{r dbPBiXVˠ&sF>t߹J`$f8b#JaJ@0<Tl >`>)V[`@-*Z( +(8G=XǧҋrJTq0IIwZet.(g;+cG0X-n|[e׷e+&،Eg 3L}ħ~;ݔ|([U,̀ta;W +kK"`ewEFgXV_hZo8;1J|jMiΈ]]4b%@sZ,z$~4xڑ-(<=4YBQ| 0$d ]ѯtmwOdI?Jgf؜2/qE^YPFQxͽOcҌlfxCPPo`.ݹN.< 72IN+7ȷ4*i) Q?I6-J(U]fY?WRt~nSmFc ^8<@+ g&˚yi- 1 +2|{jƝ[z}ߪqsESWi'ScuN`TU5-aH:r#9xHWi-[2!I)̗9rxQ¿&jz^)EJ?,w3Fh~`K^ +endstream endobj 524 0 obj <> endobj 525 0 obj <>stream +HWYoF~ׯC\pRvZD +JZLDR!8ٓ); +=ɖqNOǗYsm*Ox"7^Y6YY8ϟ];O#`=<u=c.MF/&#a5rD"$AMQ L=Kl~1eŢ>z?mq'M>q{ehi}ݧ=wl!\eH#?G&:E ܬ~rёYJ 1W!dv9bލغB )s+Ug+w__}=GYT +Bߘ +Ee(ľ/,L]p6ѧ,hފg^ JHmSDaՍ-d5dJɐ mŗ4_x}25X A= bIbv{`{=?@%}>H `iEE FԢRa#i0%Vywo5Tce_( +\7 =B5CbbnYDY& PG,!ŐFKZ4t(]$FP wV ,uZuX{*4EI.JC jݢLum!|]T gEPզntQXlk`$:[As +-}sL {dq(P@) w4>@+E'2ac*[Σqm6Į 13-ܾֆC)p}ːK="WY6^{E)̻uLR_٤dl83uG"%3PX*D8ޓԔI4*#8BcSĘD^vy V}!xDhᅘ­7ec0p!ֈknTaF6:ynEX'T5l.!{ TF<P |&3t kM2%*~Ys\tk2yztw&nSTT@I{)뒈[>lHQ@`N!˜`1HT`rWg~UרoCxτB3QT aZzV + JCdY}%k@*GN|VYZ/iT(_ĂjZ@0g_:ju.3tHЖ*T!8F +]ڽ P@$ѿ@@4А`90;3::~oMz8Yᘦ >LEao[${ zH}U=)B=+KuWN~D{*qKB żL̛h7ǒeߑ^PY8?:c N$<ۦ}e=Wٺ߳`<@*b,kkԔPHP~|6rH˖=6| M,V0X[TM`Ht8܄Ä}NM1aV3muY5iBaAWlJخ%5R3 ;(p8w؁Ȗ`cvlY<>? Vh +endstream endobj 526 0 obj <> endobj 527 0 obj <>stream +HWo6>ʁ&)uhpE{H- +[ZE+66~Cz ۦ+n^oý.~:w…mQe]QW7߼z}-~_0Ÿ]R i߮w..QuiGxZYL}bW7 c + %I(/Ja&[-e@YvYm~[}BBi +VZ\\yQ@~86tO_1I@v $.Nh;8ew$f[2TmWwRk^%h(:y z˵k΃JZk5(l5Ce6+Oӻ!Hae/D*TՇ")At`E!D'i覰~;x "DdLO% \ј{J>6Bהr{|w`׌oSVN˧SÛOԦ ӎDM#-0M!؉_w1dģmйlY;۬XBcd-ۼ)UOƋR9aNW\5lFp_tȎ4 U•FJhJ̈́j7 w.VGOc7"?fRO"ih*tQNbjA۸I0I/^o&>%QƌHYK =0j,c9;n_l{Q^6*lha8/,MQ{+о,UcH'cED({&$ Ӽ7E%s`[mՅB0#9[ + +ܗ]IbnAeߘ*!NJaMݗYN\6?HuvuSq3)&Qk}۹] J4bA]j"(qERjif[&%Yuzᦱ( OoLHnX` PAmJx<8(-#Tew5s=/8xx1Q.' +mpzC}VrNboU#.M^zOm*-YnYmrzL$ 3˛AL'U}!!X,Xn1Ђl2 ,G~9'Oh%uVj$Pzߖ-߫n+M֔m@x7Pof<ȪOD >/}NR +"EYZlvMiQE$q`U!e:LٽxMM +4&3z º IaJ?xWU Ʋ@>2U3őTb&({p8r' +jZѦgDǷR0kwF8D&m,ju#"8~x³%Q P , +DHj` +r"@,iFWPlA杫h$lB >B!8ѧ [?E$ +#',}cs': ?cLD@cHuT2TsĕN7ſY + +endstream endobj 528 0 obj <> endobj 529 0 obj <>stream +HWY~ׯ#'YaGy=SIىV)ϤR!L&>!̮gj }n(T1,_zyQ UiyƅծlPo^}\Ș8ˢ^\xx]xx^[|zMiίJ3f:Z1s!I+q&zɫϋ71a<*p{ 'J#*N` +TUZU幍k0LS}:w3M+.OsjT@TDݱr1  ,ʠ0_t/ɨk3/RӀcԗIi  =cפ[s|'IේD܎7MNU_|5'DXk$:̲[mễ1$,8~V$""ҡrt#  >H:bA:_-?^f/r:TC% e',QMB%T2iv-Dh>J0.eX8}XT^;$29uvtNH DW\UWy̎'SȟC}&_Gn4`Fd3ޕ=\JoM-)Ll?ter$%{~4 ߎ2h~5 0xnZKk}a^v}9` f\1S;&2 0"YS*<'>`9IZ-Kc{g(f.5K|ı8?^YDg/z8$m&y9틞'{#r](F= W=~Ø='">LxO37X`OPr]}B(\2q=<=1uD( c +j6a,lGVuw{]q_}}ӂ< } Moa +&xȄy+"RQ3M<;qClƳ +Aw(/ +61"!ka- B< 2zEs/'@OK'B#i^ _*(]Afɫ*3?Agщja`GS<shN+lBUű(s7#bɝj$ݴ` +;WIlԥӊܽEYʳv=P{Od~4$`P&vT&ڳ3od$z_H`̞þփRj<0ӑH`pأXhHΥ˧Yg'@z dMh4_?f4N|&܎֋0: +endstream endobj 530 0 obj <> endobj 531 0 obj <>stream +HWmo6_0;@kQɄdZI ޏmp<87 *td&r** d=ɜ@@2Ùo_gʼn/= +\p E rV}^/"Ίug9 9{h =A|P)5Tr?dEn&FiFxTkqE/ۥ>\k>vy~?o> endobj 2 0 obj <> endobj 3 0 obj <> endobj 4 0 obj <> endobj 5 0 obj <> endobj 6 0 obj <> endobj 7 0 obj <> endobj 8 0 obj <> endobj 9 0 obj <> endobj 10 0 obj <> endobj 11 0 obj <> endobj 12 0 obj <> endobj 13 0 obj <> endobj 14 0 obj <> endobj 15 0 obj <> endobj 16 0 obj <> endobj 17 0 obj <> endobj 18 0 obj <> endobj 19 0 obj <> endobj 20 0 obj <> endobj 21 0 obj <> endobj 22 0 obj <> endobj 23 0 obj <> endobj 24 0 obj <> endobj 25 0 obj <> endobj 533 0 obj <>stream +HlTko0_DjTU#6iU֢mR6M.q k8K_?6*$cs=ڗT^Ƿ;[+FF\Vu+Mݵ'@ q89,_bX l0W0b gNC(2;4/[0+8S/H…99"iJ)"F.NKM(ɯ3(ͅ3HE%f(I|]6`Hx> sJ0ʰH Ou, +H*V) <'e[v\IsY>jZDŽ)EVn..f2eFWUz(lZ9ّW֧֨J#81|ZŰpFz){6+?;]r*oPc.m:Mig˺Wƅ,p6" 4C^EcڿFSˬ=Mw/HPΓ 2#̉h5޽f^/GH g08:;]W+cupDxx /rݻm$QIg(MnZhQ,kWVkwwFڔףL bJw` /K +endstream endobj 534 0 obj <> endobj 371 0 obj <>/Border[0 0 0]/C[0 1 1]/H/I/Rect[192.485 130.706 289.508 141.83]/Subtype/Link/Type/Annot>> endobj 372 0 obj <>/Border[0 0 0]/C[0 1 1]/H/I/Rect[417.538 132.533 505.002 140.524]/Subtype/Link/Type/Annot>> endobj 359 0 obj <> endobj 200 0 obj <> endobj 201 0 obj <> endobj 202 0 obj <> endobj 203 0 obj <> endobj 204 0 obj <> endobj 205 0 obj <> endobj 206 0 obj <> endobj 207 0 obj <> endobj 208 0 obj <> endobj 209 0 obj <> endobj 210 0 obj <> endobj 211 0 obj <> endobj 212 0 obj <> endobj 213 0 obj <> endobj 214 0 obj <> endobj 215 0 obj <> endobj 216 0 obj <> endobj 217 0 obj <> endobj 218 0 obj <> endobj 219 0 obj <> endobj 220 0 obj <> endobj 221 0 obj <> endobj 222 0 obj <> endobj 223 0 obj <> endobj 224 0 obj <> endobj 230 0 obj <> endobj 535 0 obj <> endobj 536 0 obj <> endobj 537 0 obj <> endobj 538 0 obj <> endobj 539 0 obj <> endobj 540 0 obj <> endobj 541 0 obj <> endobj 542 0 obj <> endobj 543 0 obj <> endobj 544 0 obj <> endobj 545 0 obj <> endobj 546 0 obj <> endobj 547 0 obj <> endobj 548 0 obj <> endobj 549 0 obj <> endobj 550 0 obj <> endobj 551 0 obj <> endobj 552 0 obj <> endobj 553 0 obj <> endobj 554 0 obj <>stream +HWmo6^1A9 +CFV'h2DLdR%8m#%zɰ `S{i@QG%);K"Lv7!I%huA9Op@,Αv!g.D!Ʊ&*)s{|Y"߆I2PN)"fSDy.".FaZ +2xjEDQot#-&:f!x}~k4f& +XtM ljk%Gڮ 7&le/D&r ZQXV +71.2IgwIۅϬGfo~*:V1oSZI{=:)x06T3BݒD(S$=}dVDl͒Y~c#'<=О/_ 0Zxx&Q[?iՃ4">BM;WK.5;Iͭw3[0Ž墖mE+jeلK)llv%(5FCQ2ar9q=+H?Â0$ga8[RIXRHB↲hc}v c +endstream endobj 555 0 obj <>stream +HUMo0W0n>*BHpVԀi:& +w KU9yffFԙi&֣PVs|eߗgV) o/S7 ²Ȍg ow䬚N 8D0zD?3҆nra(k7fF_0({x$ \؅Je;`7%F%^cŵ5{Vj*ًVh42~+7 Sm2^$+Zl_)OUaewږ4;?j'7Yzns-Μ}9Vr2.]/@!JNhc*Nkl{İ8P|5k̞CTa “O| nfsgYv lax]Т4(s^-9N.~? ʬ90- ү@߻rTٲ028 +endstream endobj 556 0 obj <>stream +HW]o0}!&[֏ReLT!M,}6>mBNxIb|>gرӘG{Dc\d{zbQ@(]pB + _̋~sz> x~iJwe k0!f hh4A1D +6y 4ޣd[6<cup+fM)kf{}4:8WenbËskʽPkX8țڮC{Uaa0g9iwڇ8X2p`l;wM#Rf '@5a{( KrFf7ʳ&Ӌ0M*'Jz}z +@0`EFmxv;}n<[F4OWFz /tk9٠HٰV?&VAIA޲7NI3] ڻ4%.,Y`⹋x,ڰf>~0|e䡎 kL1Yn_1R $P"o[I(RD޾̒ʀ8!C&Z[t"bQ{ܒRk>Zgy>OX8CRKs*lVrDMٱ#*baV;>WnN<0Ǖ؋/& ݙ桑d"Yo1c,)+<6ek2E8Mf.KW2\CuKC$?#Jt,",hgW]um3MOj3s >stream +HW[o6~/p9鶗t`MAeȤJN}ȢDrڗaXwWKX\|E3K3~jc&U(BfZ3RRD~MO"| #S`EŅvie"STKcf)7P,ޤRd3+ld6wB5jųgSn;Jʶ3iY0Kut {.7AũQFΥr`Օ)Sv{soG(5TwG|$͚(|\2ĊYN;7C@/xaN§sVzJށwDPwv}Vrʾt +?U%LugNXڠ_Sg,>]xG+)p*_e ?uTڷ'Yug dHj`$~Z~T,Ƈصxo$&s`p%A_dGhVzsNB ptF> ==D7CP7`y6}S;{bMOj`~D{>stream +HWn@G?L*cC!iHCkBkMk"!R,fͼ˲TH _nhW E#8_ qB'rւEIXotig[p!CoZLl S;]tZ6 )N 6MC.QSw}Yp@X-` 5 Ҕ͕ uBt{6HlV 96X].h4ygS;޻V͘)@3ue3i <2`\[BPւ_{w?yU7T_izJSTCw`߂](FF]ۦn_UK"GW@eƭq=qq4o&DL'<~HbѩQmWKQ‘cu4 '&4bğa|7{jGf. *pIe/-Ժ@{":>î1g-P_NVAiU-0'>2q,^_7 ! +endstream endobj 559 0 obj <>stream +HUMO@W|@6*4~"3vVwV:1ٍ Ixf|7R 9ĠLE+{Uȣ ^p9rAkIWZ68$5|9 .Z 72]jgBLP%&ױeυƋ `D^%=FNlʩǁ@eY_bKCs'vJ$yn8`pTElu< NH8[bu{$% )ȐPݖ;ޭHvZR' FU<2!2Z5I+TC2~iM'XTfİ~:W v/^ի KdO2HM7Z2^DՌ4 ?~1GFvB>stream +HWmsӸ AtYv^2ev;qQl%qؾӖm_%ISR\Yy}-zϟMWa81峈<ןz_G&R/b 6-Uk&"wbcMEiuBj#iqrzψs?\ņyҍ7xJ?˴|]}2UGX츁%tޠ1aUI;C;E +m{N07&*!>(%gtLB|Y>٭tW/j6Ob LS[kJP_\5ڦ3gs_n ?ㇾ̊Okvzmtf%y/ʣ6gGmnCӄJj}ek+Mյ1Ĥ6Hgpti@J_y"DtW +`vzVەC/A٘1]Ͱ腀^o{RRpۮ)90QL875T}"xa%KUL>g݇E>KXk̍#6u}"R@,Ru% /@=6d1?YdT?m2? 9o޻1..ḍKؠy\)A{6+/*j8,+7 xQa$NpH#d4dgֶ$b`v,'pSm})cm=JpzHvTQݨ=cxiw҆Oy GvR%M! =sUnK@R t/8 ZBҹJ:&/mzT(Y\VCCX@DV[UQiEqԅjmk!ږo%gZ];$7RRYgV ֣yz'M@~QzS5[T-w [m5qbIy#XQgu%i&rŌiv!*Jn /oR;e_3sG9:gPil:-;V +mLɲ&XKi覺F`U3$iBa*F>8X=]9dɇt4t4Ri<)as┺f~X&7> I$xcd/TJ! O&ԣ͜6OA=B2iK6I^m|2gC{b~lfEQw^ڱ Zu(bdc[N;!"1*>MuDVwO(VO&'镫b`s&<\)gf[wX 4on%tI=3ƼDa0nE٠ Eo[[kʺ}Uaߺ=%ٙLUhokiRb>ASC$>)FJOn^A|+*4'j Yum)ԡ\8vjxIi QznzP;ֺӎY$g8>[$ +#,݂Fo]YVIG%'I6{fKFƢ~{etArJ>4ì@phCJ{[iZ*:Id#ԾXڒiI(XuВs\z݇Em4D!&["s Ů?6>ncI&T,93[ ?bdφrˤ}Xzdp}H"EkiȪ)h-r+ 6C:9 +m)ƸKL3QѪ-aA +F=WTR x^K]L6DIsןឡJT8ʓ '\ڎ&zhf)􀮗fR*&o)=|)B^#7B%[u%j ?(5vS9&vJW3ЋXvJ{Wz%Qi<ָgC+$$DHSsܭM|/_kwS]B#v 0G¯5t(4w8b245r%c!#m)b<01ZVGBa/bB4CoӦZNA0Y-ɰt $@Խ,Roi\]7*i;ց;HXOXL|d%AX5=7)Wq.U=b`K6>5y[DlÎ\;:ohgz۶_aafNŭ䡭ن8Tے*I})[t@b{{4Jf% zkr.V w[޷3 iq+Mjaϫ},&5cKUωY%+ഓco8Ǜ!i¹7%x,+Ux:]uMTnz )A)ոYV -4m 9+|L[ ׫ +6|A_7QK]ݓ+۪)$ۤ e +ZZƳ <"˭ z!DXD98&Bڃ/ԫBZ1JÎ\0+r?$L;?C%OŎG{Mӊq`=&'tT*+~Z?lWǵ#F@@CI?Oav8s6Jǟ'{\{꺃yq/2xG:L^衒M~P$7$#܅,q8Yd#SO%SO&P:eĬ2\ +ɻ:̗'λdvTeޭ]y\O}&j^1fvӸ; a2A)%-h;ϨcgHK̭,k3E͞Ƽ(+6sT,XӞiFX9#A_ݦ4thj#l5~ zAʃts"u 0^GCdp\^,[m)7WH 7/V1r~p*ny-F[qKPJ;fq +ك,,z%#Gn<l=Fyn: +SՏFR_N/W +ʚ8F &u폦]r8.Ԑ\vyXo].!F㑜ysr®x|rU-9U[WJ3:+ϰv +G#?h+Ѯ 2=/8wd/PwqTکC4U-D2H5|Y|1+7AiMKS\4 [/8ST 6l AO>&'epBWL At_`G>*aU} spN9>R@=煁nOq(6kxE-xE)~|D&81z?ԓm .씗8С~ n)-h\ >H☸9(\ \)*̢Z\qJ]G%4KjͪES~!_[#uvdoA@ +d{h? zGȴwF=(*):iq$Jz,7X.~AK7I-$) $|uiB".yiIZecmH4ϊ\t2s0Gr+R_>ҖnG@ᝏ7ZuQ-.YQ.0,X^Rx$_vwQgJy4=Ҡ\ZZ^84L>$b;y{?G$ٙޤnWnכUl[j=} Hsb +endstream endobj 561 0 obj <>stream +HSAK0>wJR3zEOٚto`ݴYFAP0$}%KdmNY%ںpM +^TBYvalo6OB+p~l8Dl<~˙De*6Z6OABckaJ4*$91M!2R;8[toho2fآA_WpM Xs>v2~6jAv2>Gcl$Иߤ{ z;V"% ;ؾ Z~"cwhsأH}խ3 B`)%{sT` +Nl +endstream endobj 562 0 obj <>stream +HTO0#?;u;t8͇ޏ{/DkQ&7(oP}x jQB>hC BE+8iS`ܸV94~ﵕ<\:ܳ:vb{N6f<GP]g^ 1PjQ@QKKk8QEv0km3e33mÅm~|%~)e]xteK6m˩vy9F +j])%v_OkD1eu:"q]%"`E4CUTzІ4UwLh@9͸zƥan8>S .RT]jL6eL ݂O.tx\,UZP? +endstream endobj 563 0 obj <>stream +HWmo8^nV;-NMAIdr%Ӹ DEՇDp^9Lx-u쓿bcb[N6da}D\QqþiĂqk˵dANͶo_qpד4D ۺ4"crdG[d/hb 7>g<$4pH‘ Uĉ _9ϸ@a׾p-I-I!f^L dN_ +⅟zq'6ẃk>$Q~A^ѭ`]<ljpே<,$y& *W|Q<4|YC2RI*>IF4^+<%5MMlS-inx,XuQ|L"ʻ٧C2&I4-bF]\E!~,aO-oZd@T8uZ +2l+$b kZ) 8ou3/06^j҇lOh3LsY$i9&TLi+:?av{vV^kO.XF>LjRWl +MΆNŋIlVQjxjͶI`SUte6 tѶQEڗWe2vA{2A@B۱J \ H%Np]?i6¿;^~Whh1}&_7;I|mexY3{ BC*SQ + l!1v*n𿓯gu(<'GalMs:rJδOOgO>TG3D^V»*KmZbLkDkJŽ婒3J!1 A%h` UsH^<<$KlRs 0DŽW#"*d }%FAKw[Z%'y atTvӖǧ2ޤMe23 F۠[hjhs0ZyVB=Ir3T7|>GĒq[e=b=\㩇Q1ٻ/T>½SeDy/^ +':x2 pՋRlEWX8픮gdӭ=Q +f5΁;Pܣ"7 /(nHکI>ԓ1^~D˛Kg%m@v>`IP+Q!_]?MoȩL 38|\_ 1 p&d!t%0 +1UHXa)Z|֨HQMo;U&ŔпWsQ7e2͵Mծ@~tK%vs:ד4D eKr^ @Zzme+Gɮ-31̟3aK;BGߨ .kcuEޤO(6Rl <ոKĠ#>2*():R7.^:f9ίnj:n9]]Mr,h&uF ]]u]}oxӊt66`7(3upms50.iT6.L["e#B|E+PWu[Y&nM9$vDS=-av}IFF!C\KZv$JmÊ s#xBL:\i+-e2ZPTZSLUj21~4f8eO+ija{u njZ+JwIpaBWſ a** Z:[+(ē(iZji3*7vN +]ͨh0aSD*8BC7\> ZA9Sɣ$`m?mK")#ݤ!8}9\t ;"9ڞˑI;8^Kc?eʟOrs~`n/לAlv2c1 Lq#*S݈ܬ}O :$=AؐqĮTX=sK[MbiPK *^V1$'A +Ya*Gfs2/e^Y3wU>stream +HWYoF~70C@B %'hE6&-l ɘһKۊ%)-%i TMiܙo.<)!J%!t!:gЇ,yDC"Ìe&g2]N1[آ"…e_ +7%iSD0:5m*CK-L 8,‹QV&6Mp',%=KoRbo$wWܫA^yg%?EQ{EqSHrW;M8SuqvQ9&|dh%iqAnq_uNO£DAUެ%ZX'L'I$JĊf<8Hs cI˵c[z2yxbI2J2kdDIsvv6B*b ugMMtƏ3W"o}r F!8x]f`ݠ']u=Ϊt@@&blZ@l}ĠޟCu=%2|$],0@z0ziU3DrՍw7hi~ڽ%Fɓn]uvߟP +%L^ZX7.-FtdYvk@V9vh2'TH # KbQSdۢۋ)PnǹKJ]/@Ae24x~c(;q غf6sI31j١)H/}jrmKJ"CMC3SMY5JZ1@Df* 0y=l +endstream endobj 565 0 obj <>stream +HVn8}/ $7r,^- H6f}Hi[TIͿQ{ `qșsfx($&RL Q{p̔L3.+fDe^Q8fii8\d*2gc<՚MyAjZzevMsBٴdkp/u5-g2Fq.|""AeV%9GGJM4g˕GIw zޓLο7y?=ӹ鞜$0etQS9?AD1.k?]9Js)ƍ^v\Q [F.|WI$1^&+kO~/}$~aw`'f[ ?nrFnB +c\9[dflp jq\dܜ:O & J7L;Pq#R*;w1qa.&}:p.ᩈ˵5$cge`i9))Q|ӬE(jBrTβ ZsbXNTjqV;)ciȉr ~Uɱ"7ϵ5U +U<h" Z])Kx(+n9|}4@;MXL +ETW{J;7ȅxP/A42tuqįv=G;xOۥ=4gDeX+7d!9Sn=A7.gCF&|p8+jŰI05]{]#F;I;'8l/HsY}JPT]٫onfh`/mol{h\CυF#T%CiuҚpgQ/eVZa06騬qoc\Us#^%A}?|U8y0}  +мv?Fp~دQLsrwcE3+8*y`R +endstream endobj 566 0 obj <>stream +HN0{Tt'#(4@U8pHq8 lPĆ#M0E'g22<9βʾXMݽ=׷;ɜpxCƾ=TpH"4C'kk3ġCXɇ.lMDCqc3wŢI@'I1^ϖfxVھj%KC!U-٣㨴^%B+tw9EXK1k %E W$@QڲAalJ3J' &z\^7~^ˍ +h#%Mxo:qJ9þme))_nRNŕYRrORÞJ-كV)O/Ɉ&X~(?G^{iM,sMw0GlCσf;C_-[H +endstream endobj 231 0 obj <> endobj 232 0 obj <> endobj 233 0 obj <> endobj 234 0 obj <> endobj 235 0 obj <> endobj 236 0 obj <> endobj 237 0 obj <> endobj 238 0 obj <> endobj 239 0 obj <> endobj 240 0 obj <> endobj 241 0 obj <> endobj 242 0 obj <> endobj 243 0 obj <> endobj 244 0 obj <> endobj 245 0 obj <> endobj 246 0 obj <> endobj 247 0 obj <> endobj 248 0 obj <> endobj 249 0 obj <> endobj 250 0 obj <> endobj 251 0 obj <> endobj 252 0 obj <> endobj 253 0 obj <> endobj 254 0 obj <> endobj 255 0 obj <> endobj 256 0 obj <> endobj 257 0 obj <> endobj 258 0 obj <> endobj 259 0 obj <> endobj 260 0 obj <> endobj 261 0 obj <> endobj 262 0 obj <> endobj 263 0 obj <> endobj 264 0 obj <> endobj 265 0 obj <> endobj 266 0 obj <> endobj 267 0 obj <> endobj 268 0 obj <> endobj 269 0 obj <> endobj 270 0 obj <> endobj 271 0 obj <> endobj 272 0 obj <> endobj 273 0 obj <> endobj 274 0 obj <> endobj 275 0 obj <> endobj 276 0 obj <> endobj 277 0 obj <> endobj 278 0 obj <> endobj 279 0 obj <> endobj 280 0 obj <> endobj 281 0 obj <> endobj 282 0 obj <> endobj 283 0 obj <> endobj 284 0 obj <> endobj 285 0 obj <> endobj 286 0 obj <> endobj 287 0 obj <> endobj 288 0 obj <> endobj 289 0 obj <> endobj 290 0 obj <> endobj 291 0 obj <> endobj 292 0 obj <> endobj 293 0 obj <> endobj 294 0 obj <> endobj 295 0 obj <> endobj 296 0 obj <> endobj 297 0 obj <> endobj 298 0 obj <> endobj 299 0 obj <> endobj 300 0 obj <> endobj 301 0 obj <> endobj 302 0 obj <> endobj 303 0 obj <> endobj 304 0 obj <> endobj 305 0 obj <> endobj 306 0 obj <> endobj 307 0 obj <> endobj 308 0 obj <> endobj 309 0 obj <> endobj 310 0 obj <> endobj 311 0 obj <> endobj 312 0 obj <> endobj 313 0 obj <> endobj 314 0 obj <> endobj 315 0 obj <> endobj 316 0 obj <> endobj 317 0 obj <> endobj 318 0 obj <> endobj 319 0 obj <> endobj 320 0 obj <> endobj 321 0 obj <> endobj 322 0 obj <> endobj 323 0 obj <> endobj 324 0 obj <> endobj 325 0 obj <> endobj 326 0 obj <> endobj 327 0 obj <> endobj 328 0 obj <> endobj 329 0 obj <> endobj 330 0 obj <> endobj 331 0 obj <> endobj 332 0 obj <> endobj 333 0 obj <> endobj 334 0 obj <> endobj 335 0 obj <> endobj 336 0 obj <> endobj 337 0 obj <> endobj 338 0 obj <> endobj 339 0 obj <> endobj 340 0 obj <> endobj 341 0 obj <> endobj 342 0 obj <> endobj 343 0 obj <> endobj 344 0 obj <> endobj 345 0 obj <> endobj 346 0 obj <> endobj 347 0 obj <> endobj 348 0 obj <> endobj 349 0 obj <> endobj 350 0 obj <> endobj 351 0 obj <> endobj 352 0 obj <> endobj 353 0 obj <> endobj 354 0 obj <> endobj 355 0 obj <> endobj 356 0 obj <> endobj 357 0 obj <> endobj 225 0 obj [179 0 R] endobj 228 0 obj <> endobj 567 0 obj <> endobj xref +0 568 +0000000000 65535 f +0000161010 00000 n +0000177950 00000 n +0000178075 00000 n +0000178200 00000 n +0000178330 00000 n +0000178460 00000 n +0000178585 00000 n +0000178710 00000 n +0000178835 00000 n +0000178965 00000 n +0000179095 00000 n +0000179226 00000 n +0000179357 00000 n +0000179488 00000 n +0000179619 00000 n +0000179748 00000 n +0000179879 00000 n +0000180015 00000 n +0000180151 00000 n +0000180287 00000 n +0000180418 00000 n +0000180544 00000 n +0000180670 00000 n +0000180801 00000 n +0000180932 00000 n +0000000000 00000 f +0000000000 00000 f +0000082661 00000 n +0000086783 00000 n +0000087019 00000 n +0000087571 00000 n +0000081616 00000 n +0000087937 00000 n +0000088487 00000 n +0000081825 00000 n +0000088852 00000 n +0000089374 00000 n +0000082034 00000 n +0000089785 00000 n +0000090305 00000 n +0000082243 00000 n +0000090716 00000 n +0000091270 00000 n +0000082452 00000 n +0000000000 00000 f +0000000000 00000 f +0000073961 00000 n +0000079223 00000 n +0000079779 00000 n +0000080221 00000 n +0000069315 00000 n +0000080847 00000 n +0000080975 00000 n +0000000000 00000 f +0000000000 00000 f +0000161501 00000 n +0000000000 00000 f +0000000000 00000 f +0000161851 00000 n +0000000000 00000 f +0000000000 00000 f +0000162214 00000 n +0000000000 00000 f +0000000000 00000 f +0000162551 00000 n +0000000000 00000 f +0000000000 00000 f +0000162901 00000 n +0000000000 00000 f +0000000000 00000 f +0000163198 00000 n +0000000000 00000 f +0000000000 00000 f +0000136232 00000 n +0000159504 00000 n +0000159631 00000 n +0000000000 00000 f +0000000000 00000 f +0000136617 00000 n +0000000000 00000 f +0000000000 00000 f +0000136927 00000 n +0000000000 00000 f +0000000000 00000 f +0000137211 00000 n +0000000000 00000 f +0000000000 00000 f +0000137535 00000 n +0000000000 00000 f +0000000000 00000 f +0000137872 00000 n +0000000000 00000 f +0000000000 00000 f +0000138169 00000 n +0000000000 00000 f +0000000000 00000 f +0000138506 00000 n +0000000000 00000 f +0000000000 00000 f +0000138843 00000 n +0000000000 00000 f +0000000000 00000 f +0000139168 00000 n +0000000000 00000 f +0000000000 00000 f +0000005589 00000 n +0000000000 00000 f +0000000000 00000 f +0000005953 00000 n +0000000000 00000 f +0000000000 00000 f +0000006304 00000 n +0000124847 00000 n +0000000000 00000 f +0000000000 00000 f +0000006658 00000 n +0000108172 00000 n +0000098301 00000 n +0000094391 00000 n +0000105531 00000 n +0000000000 00000 f +0000000000 00000 f +0000007010 00000 n +0000117286 00000 n +0000097222 00000 n +0000093205 00000 n +0000070207 00000 n +0000117515 00000 n +0000117643 00000 n +0000000000 00000 f +0000000000 00000 f +0000114239 00000 n +0000115022 00000 n +0000114373 00000 n +0000114653 00000 n +0000007417 00000 n +0000110903 00000 n +0000111030 00000 n +0000111157 00000 n +0000096470 00000 n +0000092047 00000 n +0000071059 00000 n +0000000000 00000 f +0000000000 00000 f +0000007811 00000 n +0000067121 00000 n +0000067348 00000 n +0000067887 00000 n +0000068308 00000 n +0000000000 00000 f +0000000000 00000 f +0000008163 00000 n +0000000000 00000 f +0000000000 00000 f +0000008488 00000 n +0000059047 00000 n +0000000000 00000 f +0000000000 00000 f +0000024046 00000 n +0000029228 00000 n +0000028890 00000 n +0000028509 00000 n +0000038327 00000 n +0000025347 00000 n +0000038802 00000 n +0000039136 00000 n +0000038489 00000 n +0000028626 00000 n +0000085818 00000 n +0000086074 00000 n +0000085555 00000 n +0000076029 00000 n +0000085724 00000 n +0000076682 00000 n +0000077136 00000 n +0000077490 00000 n +0000076829 00000 n +0000027113 00000 n +0000080430 00000 n +0000027407 00000 n +0000025728 00000 n +0000026880 00000 n +0000026821 00000 n +0000061100 00000 n +0000026113 00000 n +0000061833 00000 n +0000061451 00000 n +0000025951 00000 n +0000026188 00000 n +0000026427 00000 n +0000060897 00000 n +0000060399 00000 n +0000127141 00000 n +0000127403 00000 n +0000127775 00000 n +0000128087 00000 n +0000127501 00000 n +0000113772 00000 n +0000005019 00000 n +0000182142 00000 n +0000182229 00000 n +0000182325 00000 n +0000182468 00000 n +0000182580 00000 n +0000182699 00000 n +0000182801 00000 n +0000182940 00000 n +0000183032 00000 n +0000183150 00000 n +0000183254 00000 n +0000183355 00000 n +0000183491 00000 n +0000183600 00000 n +0000183707 00000 n +0000183808 00000 n +0000183971 00000 n +0000184072 00000 n +0000184193 00000 n +0000184298 00000 n +0000184403 00000 n +0000184508 00000 n +0000184613 00000 n +0000184718 00000 n +0000184823 00000 n +0000214955 00000 n +0000000000 00000 f +0000072303 00000 n +0000214982 00000 n +0000072395 00000 n +0000184978 00000 n +0000206327 00000 n +0000207409 00000 n +0000208672 00000 n +0000208722 00000 n +0000208772 00000 n +0000208822 00000 n +0000208872 00000 n +0000208922 00000 n +0000208972 00000 n +0000209022 00000 n +0000209073 00000 n +0000209123 00000 n +0000209173 00000 n +0000209223 00000 n +0000209273 00000 n +0000209323 00000 n +0000209373 00000 n +0000209423 00000 n +0000209473 00000 n +0000209523 00000 n +0000209573 00000 n +0000209624 00000 n +0000209675 00000 n +0000209726 00000 n +0000209777 00000 n +0000209828 00000 n +0000209879 00000 n +0000209928 00000 n +0000209978 00000 n +0000210028 00000 n +0000210078 00000 n +0000210128 00000 n +0000210178 00000 n +0000210228 00000 n +0000210278 00000 n +0000210328 00000 n +0000210378 00000 n +0000210428 00000 n +0000210479 00000 n +0000210530 00000 n +0000210580 00000 n +0000210631 00000 n +0000210682 00000 n +0000210733 00000 n +0000210784 00000 n +0000210835 00000 n +0000210885 00000 n +0000210935 00000 n +0000210985 00000 n +0000211035 00000 n +0000211085 00000 n +0000211135 00000 n +0000211185 00000 n +0000211235 00000 n +0000211285 00000 n +0000211335 00000 n +0000211386 00000 n +0000211437 00000 n +0000211488 00000 n +0000211538 00000 n +0000211589 00000 n +0000211640 00000 n +0000211689 00000 n +0000211738 00000 n +0000211789 00000 n +0000211839 00000 n +0000211890 00000 n +0000211940 00000 n +0000211990 00000 n +0000212040 00000 n +0000212090 00000 n +0000212140 00000 n +0000212190 00000 n +0000212240 00000 n +0000212290 00000 n +0000212340 00000 n +0000212390 00000 n +0000212440 00000 n +0000212490 00000 n +0000212540 00000 n +0000212590 00000 n +0000212640 00000 n +0000212690 00000 n +0000212740 00000 n +0000212790 00000 n +0000212840 00000 n +0000212890 00000 n +0000212940 00000 n +0000212990 00000 n +0000213040 00000 n +0000213090 00000 n +0000213140 00000 n +0000213190 00000 n +0000213240 00000 n +0000213290 00000 n +0000213340 00000 n +0000213391 00000 n +0000213442 00000 n +0000213493 00000 n +0000213544 00000 n +0000213594 00000 n +0000213644 00000 n +0000213694 00000 n +0000213744 00000 n +0000213794 00000 n +0000213844 00000 n +0000213895 00000 n +0000213945 00000 n +0000213995 00000 n +0000214045 00000 n +0000214095 00000 n +0000214145 00000 n +0000214195 00000 n +0000214245 00000 n +0000214295 00000 n +0000214345 00000 n +0000214396 00000 n +0000214445 00000 n +0000214496 00000 n +0000214547 00000 n +0000214598 00000 n +0000214649 00000 n +0000214700 00000 n +0000214751 00000 n +0000214802 00000 n +0000214853 00000 n +0000214904 00000 n +0000005077 00000 n +0000182116 00000 n +0000005115 00000 n +0000005187 00000 n +0000005320 00000 n +0000005455 00000 n +0000000654 00000 n +0000000000 00000 f +0000000000 00000 f +0000000016 00000 n +0000000480 00000 n +0000004964 00000 n +0000159758 00000 n +0000181818 00000 n +0000181972 00000 n +0000000000 00000 f +0000023458 00000 n +0000056317 00000 n +0000056190 00000 n +0000039993 00000 n +0000040989 00000 n +0000040232 00000 n +0000040625 00000 n +0000000000 00000 f +0000122357 00000 n +0000122743 00000 n +0000123457 00000 n +0000122852 00000 n +0000123112 00000 n +0000132612 00000 n +0000132991 00000 n +0000133797 00000 n +0000133137 00000 n +0000133440 00000 n +0000022619 00000 n +0000046757 00000 n +0000048111 00000 n +0000047170 00000 n +0000047720 00000 n +0000024768 00000 n +0000031052 00000 n +0000032413 00000 n +0000031472 00000 n +0000032045 00000 n +0000056354 00000 n +0000000000 00000 f +0000008842 00000 n +0000009624 00000 n +0000018278 00000 n +0000018333 00000 n +0000018378 00000 n +0000018484 00000 n +0000018590 00000 n +0000018627 00000 n +0000019160 00000 n +0000021831 00000 n +0000022286 00000 n +0000022308 00000 n +0000022386 00000 n +0000022463 00000 n +0000056139 00000 n +0000059172 00000 n +0000064879 00000 n +0000064930 00000 n +0000067070 00000 n +0000069146 00000 n +0000069247 00000 n +0000071910 00000 n +0000073579 00000 n +0000074356 00000 n +0000079172 00000 n +0000081149 00000 n +0000081199 00000 n +0000081476 00000 n +0000081571 00000 n +0000083118 00000 n +0000086732 00000 n +0000091710 00000 n +0000091805 00000 n +0000091873 00000 n +0000091931 00000 n +0000091989 00000 n +0000092482 00000 n +0000092862 00000 n +0000093582 00000 n +0000093954 00000 n +0000094292 00000 n +0000094714 00000 n +0000095086 00000 n +0000095424 00000 n +0000095796 00000 n +0000096134 00000 n +0000096229 00000 n +0000096296 00000 n +0000096354 00000 n +0000096412 00000 n +0000097025 00000 n +0000097753 00000 n +0000097950 00000 n +0000098564 00000 n +0000098759 00000 n +0000098956 00000 n +0000099328 00000 n +0000099666 00000 n +0000099863 00000 n +0000100235 00000 n +0000100573 00000 n +0000100770 00000 n +0000101142 00000 n +0000101480 00000 n +0000101675 00000 n +0000102047 00000 n +0000102385 00000 n +0000102580 00000 n +0000102857 00000 n +0000103134 00000 n +0000103411 00000 n +0000103688 00000 n +0000103965 00000 n +0000104242 00000 n +0000104614 00000 n +0000104952 00000 n +0000105149 00000 n +0000106339 00000 n +0000106721 00000 n +0000107103 00000 n +0000107482 00000 n +0000107826 00000 n +0000108021 00000 n +0000108316 00000 n +0000110852 00000 n +0000111384 00000 n +0000117235 00000 n +0000117828 00000 n +0000120171 00000 n +0000120222 00000 n +0000124796 00000 n +0000124974 00000 n +0000130309 00000 n +0000130360 00000 n +0000136181 00000 n +0000139506 00000 n +0000141801 00000 n +0000141852 00000 n +0000144329 00000 n +0000144380 00000 n +0000145772 00000 n +0000145823 00000 n +0000147540 00000 n +0000147591 00000 n +0000149284 00000 n +0000149335 00000 n +0000151050 00000 n +0000151101 00000 n +0000153196 00000 n +0000153247 00000 n +0000154627 00000 n +0000154678 00000 n +0000157165 00000 n +0000157216 00000 n +0000159453 00000 n +0000163508 00000 n +0000165444 00000 n +0000165495 00000 n +0000167754 00000 n +0000167805 00000 n +0000170112 00000 n +0000170163 00000 n +0000172043 00000 n +0000172094 00000 n +0000174429 00000 n +0000174480 00000 n +0000176707 00000 n +0000176758 00000 n +0000177899 00000 n +0000181060 00000 n +0000181767 00000 n +0000185022 00000 n +0000185690 00000 n +0000185736 00000 n +0000185991 00000 n +0000186037 00000 n +0000186083 00000 n +0000186129 00000 n +0000186175 00000 n +0000186221 00000 n +0000186267 00000 n +0000186313 00000 n +0000186377 00000 n +0000186437 00000 n +0000186483 00000 n +0000186650 00000 n +0000186963 00000 n +0000187009 00000 n +0000187055 00000 n +0000187101 00000 n +0000187147 00000 n +0000188524 00000 n +0000189073 00000 n +0000190099 00000 n +0000191560 00000 n +0000192480 00000 n +0000193339 00000 n +0000197799 00000 n +0000198209 00000 n +0000198971 00000 n +0000202871 00000 n +0000204396 00000 n +0000205407 00000 n +0000215060 00000 n +trailer +<<1DDBB348F97C6945A42883A56B114D19>]>> +startxref +215462 +%%EOF diff --git a/texmf-dist/doc/latex/rangen/rangen_man.tex b/texmf-dist/doc/latex/rangen/rangen_man.tex new file mode 100644 index 00000000..cfecd31e --- /dev/null +++ b/texmf-dist/doc/latex/rangen/rangen_man.tex @@ -0,0 +1,1563 @@ +% makeindex < aebpro_man.idx > aebpro_man.ind +\documentclass[12pt]{article} +\usepackage[fleqn]{amsmath} +\usepackage[ + web={centertitlepage,designv,tight*,forcolorpaper, +% usesf, + latextoc,pro}, + aebxmp,exerquiz, + dljslib={equations,ImplMulti,indefIntegral,limitArith,nodec} +]{aeb_pro} +\usepackage{multicol} +\usepackage{array} +%\usepackage{myriadpro} %[usecmtt] +\usepackage[altbullet]{lucidbry} +\usepackage[quiet,testmode]{rangen} % testmode +%\usepackage[quiet,seed=98]{rangen} % 128 +%\usepackage[quiet,seed=135]{rangen} % + +\DeclareInitView +{% + layoutmag={mag=100}, +% windowoptions={fit} +} + + +%\usepackage{makeidx}\makeindex + +\usepackage{acroman} + +\usepackage[active]{srcltx} + +\def\expath{../examples} + +\urlstyle{tt} + +%\def\tutpath{doc/tutorial} +%\def\tutpathi{tutorial} + +\DeclareDocInfo +{ + university={\AcroTeX.Net}, + title={The \texorpdfstring{\pkg{rangen} Package\\[1em]}{: } + Random Generation of Integer, Rational, and Real Numbers with + Applications to the \texttt{exercise}, \texttt{quiz}, and \texttt{shortquiz} Environments of \textsf{Exerquiz}}, + author={D. P. Story}, + email={dpstory@acrotex.net}, + subject={Documentation for annot\textunderscore pro from AcroTeX}, + talksite={\url{www.acrotex.net}}, + version={1.4}, + copyrightStatus=True, + copyrightNotice={Copyright (C) \the\year, D. P. Story}, + copyrightInfoURL={http://www.acrotex.net} +} + +\def\anglemeta#1{\ensuremath{\langle\textit{\texttt{#1}}\rangle}} +\def\meta#1{\textit{\texttt{#1}}} +\let\meta\anglemeta +\def\darg#1{\texttt{\{#1\}}} +\def\takeMeasure{\bgroup\obeyspaces\takeMeasurei} +\def\takeMeasurei#1{\global\setbox\webtempboxi\hbox{\ttfamily#1}\egroup} +\def\bxSize{\wd\webtempboxi+2\fboxsep+2\fboxrule} +\let\pkg\textsf +\let\env\texttt +\let\opt\texttt +\let\app\textsf + +\let\amtIndent\leftmargini +\def\SUB#1{${}_{\text{#1}}$} + +\newdimen\aebdimen \aebdimen 0pt %\advance\aebdimen\partopsep +\newcommand\bVerb[1][]{\begingroup#1\vskip\aebdimen\parindent0pt}% +\def\eVerb{\vskip\aebdimen\endgroup\noindent} + +\makeatletter +\renewcommand{\paragraph} + {\@startsection{paragraph}{4}{0pt}{6pt}{-3pt}{\bfseries}} +\renewcommand*\l@subsection{\@dottedtocline{2}{1.5em}{2.5em}} +\renewcommand*\descriptionlabel[1]{\hspace\labelsep + \normalfont #1} +\newcommand{\aebDescriptionlabel}[1]{% + \setlength\dimen@{\amtIndent+\labelsep}% + {\hspace*{\dimen@}#1}} +\makeatother +\newenvironment{aebDescript} + {\begin{list}{}{\setlength{\labelwidth}{0pt}% + \setlength{\leftmargin}{\leftmargin}% + \setlength{\leftmargin}{\leftmargin+\amtIndent}% + \setlength\itemindent{-\leftmargin}% + \let\makelabel\aebDescriptionlabel + }}{\end{list}} + + +\def\dps{$\hbox{$\mathfrak D$\kern-.3em\hbox{$\mathfrak P$}% + \kern-.6em \hbox{$\mathcal S$}}$} + +\universityLayout{fontsize=Large} +\titleLayout{fontsize=LARGE} +\authorLayout{fontsize=Large} +\tocLayout{fontsize=Large,color=aeb} +\sectionLayout{indent=-62.5pt,fontsize=large,color=aeb} +\subsectionLayout{indent=-31.25pt,color=aeb} +\subsubsectionLayout{indent=0pt,color=aeb} +\subsubDefaultDing{\texorpdfstring{$\bullet$}{\textrm\textbullet}} + +\newenvironment{eqComments}[1][\strut]{\smallskip\leftskip-\labelwidth +\item[]\textbf{\textcolor{blue}{#1}}}{\par\smallskip} + +\renewcommand\nodecAlertMsg{% + "A decimal answer is not acceptable here. + Please express your answer using a fraction."} + +%\previewtrue + +%\pagestyle{empty} +%\parindent0pt\parskip\medskipamount + +\definePath\bgPath{"C:/Users/Public/Documents/% + ManualBGs/Manual_BG_Print_AeB.pdf"} +\begin{docassembly} +\addWatermarkFromFile({% + bOnTop: false, + cDIPath: \bgPath +}) +\executeSave() +\end{docassembly} + +\begin{document} + +\maketitle + +\selectColors{linkColor=black} +\tableofcontents +\selectColors{linkColor=webgreen} + +\section{Introduction}\label{s:intro} + +This is a package that I began back in the year 2000 AD; at that +time, I managed to obtain a working version up and running with many +bugs, then forgot about it. Now, in my retirement, I stumbled across +the work and decided to give it another go. + +The \pkg{rangen} package, as the title implies, can (pseudo-)randomly generate +integers, rationals, and real numbers. Generate said numbers using the +\cs{RandomZ}, \cs{RandomQ}, and \cs{RandomR} commands, respectively; in addition +to these, there is \cs{RandomL} for creating a list of numbers, from which one number +is selected at random, and \cs{RandomI} for generating a random index value that can +be used in conjunction with \cs{RandomL}. + +The \AcroTeX{} eDucation Bundle (AeB) contains a package called \textsf{exerquiz} +that is used to create exercises and quizzes. My goal in writing the +\pkg{rangen} package was to integrate it with the quiz system of \textsf{exerquiz} +so that quiz questions could be composed using the ``natural'' syntax of \pkg{rangen}, +each time the source file is {\LaTeX}ed, new random numbers populate the question. To get your +interest, here is an example, + + + +\begingroup\parskip0pt %\previewtrue + +\def\aftershortquizskip{} +\setlength{\multicolsep}{0pt} + +\begin{shortquiz}*[answer] \textbf{\textcolor{blue}{Arithmetic.}} +A simple arithmetic problem, I've created one problem, then copied it to make +two problems. + +\vskip6pt + +\begin{multicols}{2} +\begin{questions} + +% subtraction +\RandomQ{\a}[16]{1/8}{15/16}\RandomQ[ne=\a]{\b}[16]{1/8}{15/16} + +\item $\displaystyle \ds\a - \ds\b = + \RespBoxMath[\rectW{.5in}]{ (\nOf\a * \dOf\b - \nOf\b * \dOf\a )/( \dOf\a * \dOf\b ) }{2}{.0001}{[0,2]}[{priorParse: \Array(nodec,NoAddOrSub)}]$\hfill + \CorrAnsButton{rFrac( rEval( \nOf\a * \dOf\b - \nOf\b * \dOf\a )/rEval( \dOf\a * \dOf\b ) )}*{rngCorrAnsButton}\kern1bp\sqTallyBox + +% subtraction +\RandomQ{\a}[16]{1/8}{15/16}\RandomQ[ne=\a]{\b}[16]{1/8}{15/16} + +\item $\displaystyle \ds\a - \ds\b = + \RespBoxMath[\rectW{.5in}]{ (\nOf\a * \dOf\b - \nOf\b * \dOf\a )/( \dOf\a * \dOf\b ) }{2}{.0001}{[0,2]}[{priorParse: \Array(nodec,NoAddOrSub)}]$\hfill + \CorrAnsButton{rFrac( rEval( \nOf\a * \dOf\b - \nOf\b * \dOf\a )/rEval( \dOf\a * \dOf\b ) )}*{rngCorrAnsButton}\kern1bp\sqTallyBox +\pushquestions +\end{multicols} +\popquestions + +\vskip-6pt + +\begin{eqComments}[Indefinite Integration.] +There are two integration problems, again, the second question is a copy and paste of the first. +The parameters of the problem were, of course, populated by different random numbers. +\end{eqComments} + +\RandomQ{\a}{1/6}{3/2} +\RandomQ{\b}{1/6}{3/2} +\RandomZ{\c}{1}{3} + +\item $\displaystyle\int \cds\a x^2 + \cds\b x + \ds\c\,dx = + \RespBoxMath{(\a/3)x^3+(\b/2) x^2 + \c x}{3}{.0001}{[0,2]}$\hfill + \CorrAnsButton{(rFrac(rEval(\nOf\a)/rEval(3*\dOf\a))) x^3 + + (rFrac(rEval(\nOf\b)/rEval(2*\dOf\b))) x^2 + + \c x + C}*{rngCorrAnsButton}\kern1bp\sqTallyBox + +\RandomQ{\a}{1/6}{3/2} +\RandomQ{\b}{1/6}{3/2} +\RandomZ{\c}{1}{3} + +\item $\displaystyle\int \cds\a x^2 + \cds\b x + \ds\c\,dx = + \RespBoxMath{(\a/3)x^3+(\b/2) x^2 + \c x}{3}{.0001}{[0,2]}$\hfill + \CorrAnsButton{(rFrac(rEval(\nOf\a)/rEval(3*\dOf\a))) x^3 + + (rFrac(rEval(\nOf\b)/rEval(2*\dOf\b))) x^2 + + \c x + C}*{rngCorrAnsButton}\kern1bp\sqTallyBox + +%\vskip-6pt +\vskip-6pt + +\begin{eqComments} +Definite integration can also be posed, but is not illustrated here. +\end{eqComments} + +\vskip-6pt + +\begin{eqComments}[Analytic Geometry.] +Find the equation of the line that passes through $P$ and $Q$. +\end{eqComments} + +\RandomZ{\a}{-10}{9} +\RandomZ{\b}{-10}{9} +\RandomZ{\c}{\a*}{10} +\RandomZ{\d}{\b*}{10} +\defineDepQJS{\m}{\d - \b}{\c - \a}{rFrac(rEval(\nOf\m)/rEval(\dOf\m))} + +\item $P(\,\a, \b\,)$, $Q(\,\c, \d\,)$: + \RespBoxMath{y = \m*x + (\b - \a*\m) }(xy){3}{.0001}{[0,2]x[0,2]}*{ProcRespEq}\hfill + \CorrAnsButton{y = \js\m\space x + rFrac((rEval( \b * \dOf\m - \a*\nOf\m ))/(rEval(\dOf\m)))}*{rngCorrAnsButton}% + \kern1bp\sqTallyBox + +\RandomZ{\a}{-10}{9} +\RandomZ{\b}{-10}{9} +\RandomZ{\c}{\a*}{10} +\RandomZ{\d}{\b*}{10} +\defineDepQJS{\m} {\d - \b} {\c - \a} {rFrac(rEval(\nOf\m)/rEval(\dOf\m))} + +\item $P(\,\a, \b\,)$, $Q(\,\c, \d\,)$: + \RespBoxMath{y = \m*x + (\b - \a*\m) }(xy){3}{.0001}{[0,2]x[0,2]}*{ProcRespEq}\hfill + \CorrAnsButton{y = \js\m\space x + rFrac((rEval( \b * \dOf\m - \a*\nOf\m ))/(rEval(\dOf\m)))}*{rngCorrAnsButton}% + \kern1bp\sqTallyBox\par\kern2pt +\end{questions} +\end{shortquiz}\hfill\sqClearButton\kern1bp\sqTallyTotal +\par\endgroup +\newtopic\noindent +Each time the manual is compiled, a new set of problems of the same type is generated. +This package is pretty impressive, I'm sure you'll agree. \dps + +These examples were taken from the demo file \texttt{rangen\_tst.tex}. + +\section{Requirements} + +The requirements for your {\LaTeX} system, and well as any other +software, is highlighted in this section. + +\subsection{{\LaTeX} Package Requirements} + +The following packages, in addition to the standard {\LaTeX} +distribution, are required: +\begin{enumerate} + \item The \textsf{lcg} package (2008/09/10 v1.2) by Erich Janka. + \item The \textsf{hyperref} package, a recent version. + \item If you want to use \pkg{rangen} to create quizzes, then + \textsf{exerquiz} of \textcolor{blue}{AeB} is required.\footnote{AeB: \url{http://www.math.uakron.edu/~dpstory/webeq.html}} +\end{enumerate} + +\subsection{PDF Creator Requirements} + +The package works for all PDF creators: Acrobat Distiller, pdftex, and dvipdfm. + +\section{Installation} + +Unzip \texttt{rangen.zip} into your {\LaTeX} tree, the folder \texttt{rangen} is constructed +with to contain the installation. + +\section{Package Options} + +Currently, there is only one option, \opt{testmode}. Then this option is used, +each time the file is run, the random number generator of \pkg{lcd} is re-seeded +Normally, the seed is based on the time, the date and other factors; the clock +of the {\TeX} compiler gives the time to the nearest minute, so one must wait at least +a minute before getting a new seed, this is not acceptable when testing a package. +When \opt{testmode} is used, the initial seed is \texttt{seed=1}, and increments +by one thereafter; after the increment, this value is saved to the file +\cs{jobname.seed} and input back in on the next compile. + +Any other options that are passed to \pkg{rangen}, are passed on to the \textsf{lcg} package. +Useful options for \pkg{lcg} are \texttt{quiet} and \texttt{seed=\meta{number}}. + + +\section{Basic Commands} + +This package defines the commands \cs{RandomZ}, +\cs{RandomQ}, and \cs{RandomR}, \cs{RandomL}, and \cs{RandomI}. We describe +these commands in this section. + +For convenience of terminology, a number created by one of the above commands +will be referred to as a RV (random variable). + +\cs{RandomZ} and \cs{RandomQ} use the count registers, so there is a restriction +on the size of any RV generated by these two commands, we must have +\begin{equation*} + -2^{31}+1 \leq \text{RV} \leq 2^{31}-1\implies + -2147483647 \leq \text{RV} \leq 2147483647 +\end{equation*} +For simple applications envisioned for \pkg{rangen}, this range should be plenty +enough. + +The \cs{RandomR} command uses the dimension registers, so a RV generated by +\cs{RandomR} is restricted to +\begin{equation*} + -2^{14} < \text{RV} < 2^{14}\implies + -16384 < \text{RV} < 16384 +\end{equation*} +Again, this is not a package for making floating point calculations, it is a package +for generating integers, rationals, and decimal numbers with an eye towards application +to academic problem generation. Floating point arithmetic can be accomplished using +the \textsf{fp} package; \pkg{rangen} and \textsf{fp} seem to be compatible. + +\subsection{\texorpdfstring{\protect\cs{RandomZ}}{\CMD{RandomZ}}} + +The command \Com{RandomZ} defines a random integer, the syntax is + +\takeMeasure{\string\RandomZ[\meta{key-values}]\darg{\cs{\meta{name}}}\darg{\meta{zLEP}}\darg{\meta{zUEP}}} +\begin{dCmd*}[commandchars=!()]{\bxSize} +\RandomZ[!meta(key-values)]{!cs(!meta(name))}{!meta(zLEP)}{!meta(zUEP)} +\end{dCmd*} +\PD +\begin{description} +\item [\texttt{\meta{key-values}}] The key-value pairs that modify the choice of +the variable. The key-value pairs recognize are +\begin{description} + \item [\texttt{ne=\meta{value}}] Restrict the choice of the random integer by requiring + it \emph{not be equal} to another number, for example, \texttt{ne=0} or \texttt{ne=\cs{b}}. + In the latter case, \cs{b} is a number defined already by either an earlier + \cs{RandomZ} call, or by \Com{defineZ}, discussed later. Multiple restrictions can + be placed as well, for example, if \verb!ne={0,-1}!, \pkg{rangen} selects an integer + different from 0 or -1. +% \item \texttt{formatOne}: A Boolean formatting key for formatting the number 1; +% for example, instead of typesetting \texttt{1x} the correct syntax is to typeset \texttt{x}. +% To obtain this special formatting, you must use +% \cs{fmt} or \cs{ds}, for example \verb!\fmt\a!. Details are described below. +% \item \texttt{formatPMOne}: A Boolean formatting key for formatting the numbers 1 and -1; +% in addition to formatting of the number 1, if the random integer is -1 we want to +% typeset \texttt{-x} not \texttt{-1x}. To obtain this special formatting, you must use +% \cs{fmt} or \cs{ds}, for example \verb!\fmt\a!. Details are described below. +\end{description} +\item[\cs{\meta{name}}] The name of the random integer. For example, + \cs{a}, \cs{b}, etc. +\item [\meta{zLEP}] An integer that is the lower endpoint of the interval + from which the number is randomly selected. The lower endpoint may be + an integer previously calculated by an earlier \cs{RandomZ} call, for + example, \verb!\RandomZ{\b}{\a}{5}!, this will generate an integer + \cs{b} such that $\cs{a}\le\cs{b}\le5$. To get strict inequality, + append an asterisk (\texttt{*}), for example, if the syntax + \verb!\RandomZ{\b}{\a*}{5}! is used, then \pkg{rangen} attempts to + satisfy $\cs{a}<\cs{b}\le5$. The range of \cs{a} should be such that + the upper limit for \cs{a} is less than the upper limit of \cs{b}. When + the endpoint is a number, the \texttt{*} is ignored.\smallskip + + When the lower endpoint is a command created by the commands + \cs{Random\meta{\upshape{Z|Q|R|L}}} or by + \cs{define\meta{\upshape{Z|Q|R}}}, the endpoint is converted to a real + number. + +\item [\meta{zUEP}] An integer that is the upper endpoint of the interval + from which the number is randomly selected. The upper endpoint may be + an integer previously calculated by an earlier \cs{RandomZ} call, for + example, \verb!\RandomZ{\b}{-5}{\a}!, this will generate an integer + \cs{b} such that $-5\le\cs{b}\le\cs{a}$. To get strict inequality, use + the syntax $-5\le\cs{b}\le\cs{a}*$, then \pkg{rangen} attempts to + satisfy $-5\le\cs{b}<\cs{a}$. The range of \cs{a} should be such that + the lower limit for \cs{a} is greater than the lower limit of \cs{b}. + When the endpoint is a number, the \texttt{*} is ignored.\smallskip + + When the upper endpoint is a command created by the commands + \cs{Random\meta{\upshape{Z|Q|R|L}}} or by + \cs{define\meta{\upshape{Z|Q|R}}}, the endpoint is converted to a real + number. + +\end{description} + +\noindent +\textbf{Examples:} +\begin{enumerate} + \item \verb!\RandomZ{\a}{-5}{5}!: \RandomZ{\a}{-5}{5}\cs{a}=\a. To get another + random integer, we repeatedly execute \verb!\RandomZ{\a}{-5}{5}! followed by + \cs{a}, for example, we copy and paste \verb!\RandomZ{\a}{-5}{5}\a! three times to get + \RandomZ{\a}{-5}{5}\a, \RandomZ{\a}{-5}{5}\a, \RandomZ{\a}{-5}{5}\a. + + \item Illustrate \texttt{ne}: Consider + \verb!\RandomZ[ne={0,-1}]{\a}{-5}{5}\a!, copy and paste + repeatedly: \RandomZ[ne={0,-1}]{\a}{-5}{5}\a, + \RandomZ[ne={0,-1}]{\a}{-5}{5}\a, \RandomZ[ne={0,-1}]{\a}{-5}{5}\a, + \RandomZ[ne={0,-1}]{\a}{-5}{5}\a, and + \RandomZ[ne={0,-1}]{\a}{-5}{5}\a. If \pkg{rangen} worked as it + should, the list of five number should not contain a 0 or a -1, + does it? + \item Illustrate $\cs{a}\le\cs{b}$: We use the code +\begin{Verbatim} +\RandomZ{\a}{-5}{5}\RandomZ{\b}{\a}{10}$\a \le \b$ +\end{Verbatim} + We now copy and paste this code: \RandomZ{\a}{-5}{5}\RandomZ{\b}{\a}{10}$\a \le \b$, + \RandomZ{\a}{-5}{5}\RandomZ{\b}{\a}{10}$\a \le \b$. To get strict inequality we execute +\begin{Verbatim} +\RandomZ{\a}{-5}{5}\RandomZ{\b}{\a*}{10}$\a < \b$ +\end{Verbatim} + We now copy and paste this code: \RandomZ{\a}{-5}{5}\RandomZ{\b}{\a*}{10}$\a < \b$, + \RandomZ{\a}{-5}{5}\RandomZ{\b}{\a*}{10}$\a < \b$ +%\item\texttt{formatOne}: We execute the code +%\begin{Verbatim} +%\RandomZ[formatOne]{\a}{1}{3}$\fmt\a x$ +%\end{Verbatim} +% to get \RandomZ[formatOne]{\a}{1}{3}$\fmt\a x$, \RandomZ[formatOne]{\a}{1}{3}$\fmt\a x$, +% \RandomZ[formatOne]{\a}{1}{3}$\fmt\a x$, \RandomZ[formatOne]{\a}{1}{3}$\fmt\a x$. +% Notice the use of the command \cs{fmt}. When \cs{fmt} is present, the special formatting +% is used; there are times when you want the formatting, and other times when you don't it. For example, +% suppose we want \cs{a} to be a constant term, we want $ 1 + x $ not $\phantom{1}+x$, to get this +% we use create \cs{a} as before \verb!\RandomZ[formatOne]{\a}{1}{3}$\a+\fmt\a x$!, but do not use +% the \cs{fmt} on the first term. This gets us \RandomZ[formatOne]{\a}{1}{3}$\a+\fmt\a x$, +% \RandomZ[formatOne]{\a}{1}{3}$\a+\fmt\a x$, \RandomZ[formatOne]{\a}{1}{3}$\a+\fmt\a x$. +% +%\item\texttt{formatPMOne}: We execute the code +%\begin{Verbatim} +%\RandomZ[ne=0,formatPMOne]{\a}{-2}{2}$\fmt\a x$ +%\end{Verbatim} +%to obtain \RandomZ[ne=0,formatPMOne]{\a}{-2}{2}$\fmt\a x$, \RandomZ[ne=0,formatPMOne]{\a}{-2}{2}$\fmt\a x$, +%\RandomZ[ne=0,formatPMOne]{\a}{-2}{2}$\fmt\a x$, \RandomZ[ne=0,formatPMOne]{\a}{-2}{2}$\fmt\a x$. Let us hope +%we get a -1 in one of those generations. +\end{enumerate} + +\paragraph*{Data Type Properties.}\label{dtProperties}When a random number is created, there are several auxiliary commands that are defined. + +\takeMeasure{\string\nOf\darg{\cs{\meta{name}}}\quad\string\dOf\darg{\cs{\meta{name}}}} +\begin{dCmd*}[commandchars=!()]{\bxSize} +\nOf{!cs(!meta(name))}!quad\dOf{!cs(!meta(name))} +\fmt{!cs(!meta(name))}!quad\ds{!cs(!meta(name))} +\end{dCmd*} +\CmdDescription +\begin{description}\def\1{\hspace{-\labelsep}} + \item\1 \cs{nOf\darg{\cs{\meta{name}}}} is the numerator for the number + \cs{\meta{name}}. For an integer this is just \cs{\meta{name}}. This + function becomes important for rational numbers. If \cs{a} is the + rational number 2/3, then \verb!\nOf{\a}=2!. + + \item\1 \cs{dOf\darg{\cs{\meta{name}}}} is the denominator for the number + \cs{\meta{name}}. For an integer this is just \texttt{1}. This + function becomes important for rational numbers. If \cs{a} is the + rational number 2/3, then \verb!\dOf{\a}=3!. + + \item\1 \cs{fmt\darg{\cs{\meta{name}}}} allows for special formatting for + in-line numbers. Without one of the special formatting options, + \cs{fmt}\cs{a} is the same as \cs{a}. + + \item\1 \cs{ds\darg{\cs{\meta{name}}}} allows for special formatting for + display style number. \cs{ds} is relevant for rational numbers. If + \cs{a} represents the rational 1/2, the \cs{a} expanded is 1/2, while + \cs{ds}\cs{a} expanded is $\frac{1}{2}$. The \cs{ds} command also + obeys the formatting options. +\end{description} + + +\subsection{\texorpdfstring{\protect\cs{RandomQ}}{\CMD{RandomQ}}} + +The command \Com{RandomQ} defines a random rational, the syntax is + +\takeMeasure{\small\string\RandomQ[\meta{key-values}]\darg{\cs{\meta{name}}}% +[\meta{max\_denom}]\darg{\meta{qLEP}}\darg{\meta{qUEP}}} +\begin{dCmd*}[commandchars=!(),fontsize=\small]{\bxSize} +\RandomQ[!meta(key-values)]{!cs(!meta(name))}[!meta(max_denom)]{!meta(qLEP)}{!meta(qUEP)} +\end{dCmd*} +\PD +\begin{description}\def\1{\hspace{-\labelsep}} +\item [\meta{key-values}] The key-value pairs that modify the choice of +the variable. The key-value pairs recognize are +\begin{description} + \item [\texttt{ne=\meta{value}}] Restrict the choice of the random rational by requiring + it \emph{not be equal} to another number, for example, \texttt{ne=0} or \texttt{ne=\cs{b}}. + In the latter case, \cs{b} is a number defined already by either an earlier + \cs{RandomQ} call, or by \Com{defineQ}, discussed later. Multiple restrictions can + be placed as well, for example, if \verb!ne={0,-1}!, \pkg{rangen} selects an integer + different from 0 or -1. +% \item \texttt{formatOne}: A Boolean formatting key for formatting the number 1; +% for example, instead of typesetting \texttt{1x} the correct syntax is to typeset \texttt{x}. +% To obtain this special formatting, you must use +% \cs{fmt} or \cs{ds}, for example \verb!\fmt\a!. Details are described below. +% \item \texttt{formatPMOne}: A Boolean formatting key for formatting the numbers 1 and -1; +% in addition to formatting of the number 1, if the random integer is -1 we want to +% typeset \texttt{-x} not \texttt{-1x}. To obtain this special formatting, you must use +% \cs{fmt} or \cs{ds}, for example \verb!\fmt\a!. Details are described below. +\end{description} +\item\1\cs{\meta{name}} is the name of the random rational. For example, +\cs{a}, \cs{b}, etc. + +\item\1\meta{max\_denom} is the largest denominator you want your random + rational to have. For example, \verb!\RandomQ{\a}[9]{1/2}{7/2}!: The + value of \cs{a} is a rational number between 1/2 and 7/2 having a + maximum denominator of 9. If this parameter is not specified, the least + common denominator is used; for the example, that would be 2. To + contrast the two, consider the following examples: +\begin{enumerate} + \item \verb!\RandomQ{\a}[9]{1/2}{7/2}\a!: \RandomQ{\a}[9]{1/2}{7/2}\a, \RandomQ{\a}[9]{1/2}{7/2}\a, + \RandomQ{\a}[9]{1/2}{7/2}\a, and \RandomQ{\a}[9]{1/2}{7/2}\a. + \item \verb!\RandomQ{\a}{1/2}{7/2}\a!: \RandomQ{\a}{1/2}{7/2}\a, \RandomQ{\a}{1/2}{7/2}\a, + \RandomQ{\a}{1/2}{7/2}\a, \RandomQ{\a}{1/2}{7/2}\a. +\end{enumerate} +The fractions are reduced to lowest terms, and represented as an integer if needed. + +Here is more detail on the algorithm used to generate a rational: We illustrate +using the example, \verb!\RandomQ{\a}[9]{1/2}{7/2}!, the details are simplified slightly. +\begin{enumerate} + \item Convert the range so that the endpoints have a denominator of~9. +\begin{alignat*}{2} + &\texttt{LEP}: \frac{1}{2}= \frac{9/2}{9}=\frac{4.5}{9}< \frac{5}{9}&&\quad\text{round up} \\[1em] + &\texttt{UEP}: \frac{7}{2}= \frac{63/2}{9}=\frac{31.5}{9}>\frac{31}{9}&&\quad\text{round down} +\end{alignat*} +\item We randomly choose an integer between 5 and 31, call it \cs{z}; our random +rational is then \texttt{\cs{z}/9}, unless there is an \texttt{*} affixed to one of +both endpoints. +\item If one or both endpoints is itself a random rational (or integer) and the \texttt{*} +character is used, then the lower end of the range is incremented (from 5 to 6) and/or +the upper end is decremented (from 31 to 30). +\item Reduce the fraction obtained in the previous step. +\end{enumerate} + +You can see from this example, there are a lot of choices for the random +integer, there are 27 possibilities between 5 and 32. + +\item\1 \meta{qLEP} is a rational (of the form a/b) that is the lower + endpoint of the interval from which the number is randomly selected. + The lower endpoint may be a rational (or integer) previously calculated + by an earlier \cs{RandomQ} call, for example, + \verb!\RandomQ{\b}{\a}{4/3}!, this will generate an integer \cs{b} such + that $\cs{a}\le\cs{b}\le4/3$. To get strict inequality, use the syntax + \verb!\RandomZ{\b}{\a*}{4/3}!, then \pkg{rangen} attempts to satisfy + $\cs{a}<\cs{b}\le4/3$. The range of \cs{a} should be such that the + upper limit for \cs{a} is less than the upper limit of \cs{b}. When the + endpoint is a number, the \texttt{*} is ignored.\smallskip + + When the lower endpoint is a command created by any of the commands + \cs{Random\meta{\upshape{Z|Q|R|L}}} or \cs{define\meta{\upshape{Z|Q|R}}}, + the endpoint is converted to a real number. + +\item\1\meta{qUEP} is a rational that is the upper endpoint of the interval + from which the number is randomly selected. The upper endpoint may be a + rational (or integer) previously calculated by an earlier \cs{RandomQ} + call, for example, \verb!\RandomQ{\b}{-4/3}{\a}!, this will generate an + integer \cs{b} such that $-4/3\le\cs{b}\le\cs{a}$. To get strict + inequality, use the syntax $-4/3\le\cs{b}\le\cs{a}*$, then \pkg{rangen} + attempts to satisfy $-4/3\le\cs{b}<\cs{a}$. The range of \cs{a} should + be such that the lower limit for \cs{a} is greater than the lower limit + of \cs{b}. When the endpoint is a number, the \texttt{*} is + ignored.\smallskip + + When the upper endpoint is a command created by any of the commands + \cs{Random\meta{\upshape{Z|Q|R|L}}} or \cs{define\meta{\upshape{Z|Q|R}}}, + the endpoint is converted to a real number. +\end{description} + +\paragraph*{Examples} +\begin{enumerate} + \item \verb!\RandomZ{\a}{-5}{5}!: \RandomZ{\a}{-5}{5}\cs{a}=\a. To get + another random integer, we repeatedly execute + \verb!\RandomZ{\a}{-5}{5}! followed by \cs{a}, for example, we copy + and paste \verb!\RandomZ{\a}{-5}{5}\a! three times to get + \RandomZ{\a}{-5}{5}\a, \RandomZ{\a}{-5}{5}\a, + \RandomZ{\a}{-5}{5}\a. + + \item Illustrate \texttt{ne}: Copy and paste +\begin{Verbatim} +\RandomZ[ne={0,-1}]{\a}{-5}{5}\a +\end{Verbatim} + repeatedly to obtain: + \RandomZ[ne={0,-1}]{\a}{-5}{5}\a, \RandomZ[ne={0,-1}]{\a}{-5}{5}\a, + \RandomZ[ne={0,-1}]{\a}{-5}{5}\a, \RandomZ[ne={0,-1}]{\a}{-5}{5}\a, + and \RandomZ[ne={0,-1}]{\a}{-5}{5}\a. If \pkg{rangen} worked as it + should, the list of five number should not contain a 0 or a -1, + does it? + \item Illustrate $\cs{a}\le\cs{b}$: We use the code +\begin{Verbatim} +\RandomZ{\a}{-5}{5}\RandomZ{\b}{\a}{10}$\a \le \b$ +\end{Verbatim} + We now copy and paste this code: \RandomZ{\a}{-5}{5}\RandomZ{\b}{\a}{10}$\a \le \b$, + \RandomZ{\a}{-5}{5}\RandomZ{\b}{\a}{10}$\a \le \b$. To get strict inequality we execute +\begin{Verbatim} +\RandomZ{\a}{-5}{5}\RandomZ{\b}{\a*}{10}$\a < \b$ +\end{Verbatim} + We now copy and paste this code: + \RandomZ{\a}{-5}{5}\RandomZ{\b}{\a*}{10}$\a < \b$, + \RandomZ{\a}{-5}{5}\RandomZ{\b}{\a*}{10}$\a < \b$ +%\item\texttt{formatOne}: We execute the code +%\begin{Verbatim} +%\RandomZ[formatOne]{\a}{1}{3}$\fmt\a x$ +%\end{Verbatim} +% to get \RandomZ[formatOne]{\a}{1}{3}$\fmt\a x$, \RandomZ[formatOne]{\a}{1}{3}$\fmt\a x$, +% \RandomZ[formatOne]{\a}{1}{3}$\fmt\a x$, \RandomZ[formatOne]{\a}{1}{3}$\fmt\a x$. +% Notice the use of the command \cs{fmt}. When \cs{fmt} is present, the special formatting +% is used; there are times when you want the formatting, and other times when you don't it. For example, +% suppose we want \cs{a} to be a constant term, we want $ 1 + x $ not $\phantom{1}+x$, to get this +% we use create \cs{a} as before \verb!\RandomZ[formatOne]{\a}{1}{3}$\a+\fmt\a x$!, but do not use +% the \cs{fmt} on the first term. This gets us \RandomZ[formatOne]{\a}{1}{3}$\a+\fmt\a x$, +% \RandomZ[formatOne]{\a}{1}{3}$\a+\fmt\a x$, \RandomZ[formatOne]{\a}{1}{3}$\a+\fmt\a x$. +% +%\item\texttt{formatPMOne}: We execute the code +%\begin{Verbatim} +%\RandomZ[ne=0,formatPMOne]{\a}{-2}{2}$\fmt\a x$ +%\end{Verbatim} +%to obtain \RandomZ[ne=0,formatPMOne]{\a}{-2}{2}$\fmt\a x$, \RandomZ[ne=0,formatPMOne]{\a}{-2}{2}$\fmt\a x$, +%\RandomZ[ne=0,formatPMOne]{\a}{-2}{2}$\fmt\a x$, \RandomZ[ne=0,formatPMOne]{\a}{-2}{2}$\fmt\a x$. Let us hope +%we get a -1 in one of those generations. + + \item \verb!\RandomQ{\a}{-5/2}{5/2}!: \RandomQ{\a}{-5/2}{5/2}\cs{a}=\a. + We repeatedly copy and paste \verb!\RandomQ{\a}{-5/2}{5/2}\a! three + times to get \RandomQ{\a}{-5/2}{5/2}\a, \RandomQ{\a}{-5/2}{5/2}\a, + \RandomQ{\a}{-5/2}{5/2}\a. + + \item Illustrate \texttt{ne}: + \verb!\RandomQ[ne={0,-1}]{\a}{-5/2}{5/2}\a!, copy and paste this + code repeatedly: \RandomQ[ne={0,-1}]{\a}{-5/2}{5/2}\a, + \RandomQ[ne={0,-1}]{\a}{-5/2}{5/2}\a, + \RandomQ[ne={0,-1}]{\a}{-5/2}{5/2}\a, + \RandomQ[ne={0,-1}]{\a}{-5/2}{5/2}\a, and + \RandomQ[ne={0,-1}]{\a}{-5/2}{5/2}\a. If \pkg{rangen} worked as it + should, the list of five number should not contain a 0 or a -1, + does it? + + \item Illustrate $\cs{a}\le\cs{b}$: We use the code +\begin{Verbatim}[fontsize=\small] +\RandomQ{\a}{-5/2}{5/2}\RandomQ{\b}[4]{\a}{10}$\a \le \b$ +\end{Verbatim} + and copy and paste: \RandomQ{\a}{-5/2}{5/2}\RandomQ{\b}[4]{\a}{10}$\a \le \b$, + \RandomQ{\a}{-5/2}{5/2}\RandomQ{\b}[4]{\a}{10}$\a \le \b$. To get strict inequality we execute +\begin{Verbatim}[fontsize=\small] +\RandomQ{\a}{-5/2}{5/2}\RandomQ{\b}[4]{\a*}{10}$\a < \b$ +\end{Verbatim} + to get \RandomQ{\a}{-5/2}{5/2}\RandomQ{\b}[4]{\a*}{10}$\a < \b$, + \RandomQ{\a}{-5/2}{5/2}\RandomQ{\b}[4]{\a*}{10}$\a < \b$ +%\item\texttt{formatOne}: We execute the code +%\begin{Verbatim} +%\RandomQ[formatOne]{\a}{2/3}{4/3}$\ds\a x$ +%\end{Verbatim} +% to get \RandomQ[formatOne]{\a}{2/3}{4/3}$\ds\a x$, \RandomQ[formatOne]{\a}{2/3}{4/3}$\ds\a x$, +% \RandomQ[formatOne]{\a}{2/3}{4/3}$\ds\a x$, \RandomQ[formatOne]{\a}{2/3}{4/3}$\ds\a x$. +% Notice the use of the command \cs{ds}. When \cs{ds} is present, the special formatting +% is used; there are times when you want the formatting, and other times when you don't it. For example, +% suppose we want \cs{a} to be a constant term, we want $ 1 + x $ not $\phantom{1}+x$, to get this +% we use create \cs{a} as before\\[3pt] +% \verb!\RandomQ[formatOne]{\a}{2/3}{4/3}$\a+\ds\a x$!,\\[3pt] +% but do not use +% the \cs{ds} on the first term. This gets us \RandomQ[formatOne]{\a}{2/3}{4/3}$\a+\ds\a x$, +% \RandomQ[formatOne]{\a}{2/3}{4/3}$\a+\ds\a x$, \RandomQ[formatOne]{\a}{2/3}{4/3}$\a+\ds\a x$. +% +%\item\texttt{formatPMOne}: We execute the code +%\begin{Verbatim} +%\RandomQ[formatPMOne]{\a}{-6/5}{-4/5}$\ds\a x$ +%\end{Verbatim} +%to obtain \RandomQ[formatPMOne]{\a}{-6/5}{-4/5}$\ds\a x$, \RandomQ[formatPMOne]{\a}{-6/5}{-4/5}$\ds\a x$, +%\RandomQ[formatPMOne]{\a}{-6/5}{-4/5}$\ds\a x$, \RandomQ[formatPMOne]{\a}{-6/5}{-4/5}$\ds\a x$. Let us hope +%we get a -1 in one of those generations. +\end{enumerate} +For a rational number, the commands \cs{nOf}, \cs{dOf}, \cs{fmt}, and \cs{ds} are +also defined, see \Nameref{dtProperties}. + +\subsection{\texorpdfstring{\protect\cs{RandomR}}{\CMD{RandomR}}} + +The command \Com{RandomR} defines a random real number, the syntax is + +\takeMeasure{\string\RandomR[\meta{key-values}]\darg{\cs{\meta{name}}}% +\darg{\meta{rLEP}}\darg{\meta{rUEP}}} +\begin{dCmd*}[commandchars=!()]{\bxSize} +\RandomR[!meta(key-values)]{!cs(!meta(name))}{!meta(rLEP)}{!meta(rUEP)} +\end{dCmd*} +\PD +\begin{description}\def\1{\hspace{-\labelsep}} +\item [\meta{key-values}] The key-value pairs that modify the choice of +the variable. The key-value pairs recognize are +\begin{description} + \item [\texttt{round=\meta{value}}] Round the generated real number so + that number of decimal places equals the \meta{value}, the value of + the \texttt{round} key; for example, \texttt{round=2} rounds the + result to 2 decimal places. + + \item [\texttt{showzeros=\meta{\upshape{true|false}}}] Show trailing + zeros, only valid when the \texttt{round} key is used. For example, + \texttt{round=4,showzeros} might yield a result of 3.2300, whereas + without the \texttt{showzeros} key (or with + \texttt{showzeros=false}), the same result would be 3.23. + + \item [\texttt{ne=\meta{value}}] Restrict the choice of the random real + by requiring it \emph{not be equal} to another number real, for + example, \texttt{ne=-1} or \texttt{ne=\cs{b}}. In the latter case, + \cs{b} is a number defined already by either an earlier + \cs{RandomR} call, or by \Com{defineR}, discussed later. Multiple + restrictions can be placed as well, for example, if + \verb!ne={0,-1}!, \pkg{rangen} selects an integer different from 0 + or -1.\smallskip + + Note, comparisons are made \emph{after} rounding. + +\end{description} + +\item\1\cs{\meta{name}} is the name of the random rational. For example, +\cs{a}, \cs{b}, etc. + +\item\1 \meta{rLEP} is a real number (or integer) that is the lower + endpoint of the interval from which the number is randomly selected. + The lower endpoint may be a number previously calculated by an earlier + \cs{RandomR} call, for example, \verb!\RandomR{\b}{\a}{1.3}!, this will + generate an integer \cs{b} such that $\cs{a}\le\cs{b}\le1.3$. To get + strict inequality, use the syntax \verb!\RandomZ{\b}{\a*}{1.3}!, then + \pkg{rangen} attempts to satisfy $\cs{a}<\cs{b}\le4/3$. The range of + \cs{a} should be such that the upper limit for \cs{a} is less than the + upper limit of \cs{b}. When the endpoint is a number, the \texttt{*} is + ignored.\smallskip + + When the lower endpoint is a command created by ant if the command + \cs{Random\meta{\upshape{Z|Q|R|L}}}, or by + \cs{define\meta{\upshape{Z|Q|R}}}, the endpoint is converted to a real + number. + +\item\1 \meta{rUEP} is a real number that is the upper endpoint of the + interval from which the number is randomly selected. The upper endpoint + may be a number previously calculated by an earlier \cs{RandomR} call, + for example, \verb!\RandomR{\b}{-1.3}{\a}!, this will generate an + integer \cs{b} such that $-1.3\le\cs{b}\le\cs{a}$. To get strict + inequality, use the syntax $-1.3\le\cs{b}\le\cs{a}*$, then \pkg{rangen} + attempts to satisfy $-1.3\le\cs{b}<\cs{a}$. The range of \cs{a} should + be such that the lower limit for \cs{a} is greater than the lower limit + of \cs{b}. When the endpoint is a number, the \texttt{*} is + ignored.\smallskip + + When the upper endpoint is a command created by ant if the command + \cs{Random\meta{\upshape{Z|Q|R|L}}}, or by + \cs{define\meta{\upshape{Z|Q|R}}}, the endpoint is converted to a real + number. +\end{description} +The \cs{RandomR} command divides range ($\meta{rUEP}-\meta{rLEP}$) into equal +sub-intervals, and randomly chooses node (an endpoint of one of the +sub-intervals). The number of subdivisions is determined by +\cs{RNGpowerOfTen}, and can be set by \cs{nDivisionsPowerOfTen}. This latter +command takes an integer argument, $n$, $1\le n\le 4$, the number of +subdivisions is then $10^n$. Strictly speaking \cs{RNGpowerOfTen} does not +have to be a power of 10, you can make the definition +\verb!\def\RNGpowerOfTen{16}!, and that should work as well. The default is +\verb!\nDivisionsPowerOfTen{2}!, that is, divide the range into 100 equal +subdivisions. + +\paragraph*{Examples:} + +\begin{enumerate} + \item \verb!\RandomR{\a}{-2.3}{2.3}!: \RandomR{\a}{-2.3}{2.3}\cs{a}=\a. + To obtain more random real numbers, repeatedly execute + \verb!\RandomR{\a}{-2.3}{2.3}! followed by \cs{a}; for example, + \verb!\RandomR{\a}{-2.3}{2.3}\a! repeated three times yields the following: +\begin{equation*} + \RandomR{\a}{-2.3}{2.3}\a,\ \RandomR{\a}{-2.3}{2.3}\a,\ \RandomR{\a}{-2.3}{2.3}\a +\end{equation*} + + \item \texttt{round}: We use \verb!\RandomR[round=4]{\a}{-2}{2}\a! to get +\begin{equation*} + \RandomR[round=4]{\a}{-2}{2}\a,\ \RandomR[round=4]{\a}{-2}{2}\a,\ + \RandomR[round=4]{\a}{-2}{2}\a +\end{equation*} + + \item \texttt{showzeros}: \verb!\RandomR[round=4,showzeros]{\a}{-2}{2}\a!: +\begin{equation*} + \RandomR[round=4,showzeros]{\a}{-2}{2}\a,\ \RandomR[round=4,showzeros]{\a}{-2}{2}\a,\ + \RandomR[round=4,showzeros]{\a}{-2}{2}\a,\ \RandomR[round=4,showzeros]{\a}{-2}{2}\a,\ + \RandomR[round=4,showzeros]{\a}{-2}{2}\a +\end{equation*} + + \item Illustrate $\cs{a}\le\cs{b}$: We use the code +\begin{Verbatim} +\RandomR{\a}{-5}{5}\RandomR{\b}{\a}{10}$\a \le \b$ +\end{Verbatim} + We now copy and paste this code twice: +\begin{equation*} + \RandomR{\a}{-5}{5}\RandomR{\b}{\a}{10}\a \le \b,\ + \RandomR{\a}{-5}{5}\RandomR{\b}{\a}{10}\a \le \b +\end{equation*} +To get strict inequality we execute +\begin{Verbatim} +\RandomR{\a}{-5}{5}\RandomR{\b}{\a*}{10}$\a < \b$ +\end{Verbatim} + We now copy and paste this code a couple of times: +\begin{equation*} + \RandomR{\a}{-5}{5}\RandomR{\b}{\a*}{10} \a < \b,\ + \RandomR{\a}{-5}{5}\RandomR{\b}{\a*}{10} \a < \b +\end{equation*} +For real numbers, there is little chance the two values are equal, but just in case, strict +inequality may be specified in this way. +\end{enumerate} + +\subsection{\texorpdfstring{\protect\cs{RandomL}}{\CMD{RandomL}}} + +The command \Com{RandomL} defines a list of numbers (integer, rational, decimal), +and randomly selects a number from the list. + +\takeMeasure{\string\RandomR[\meta{key-values}]\darg{\cs{\meta{name}}}% +\darg{\meta{n\SUB{1},n\SUB{2},n\SUB{3},...}}}% +\begin{dCmd*}[commandchars=!()]{\bxSize} +\RandomL[!meta(key-values)]{!cs(!meta(name))}{!meta(n!SUB(1),n!SUB(2),n!SUB(3),...)} +\end{dCmd*} + +\PD +\begin{description}\def\1{\hspace{-\labelsep}} +\item [\texttt{\meta{key-values}}] The only key-value pairs recognized is + \texttt{index=\meta{posZ}}. The index is a base-1 index, thus \texttt{index=1} + references the first number in the list. + + The \texttt{index} key can be used to retrieve a particular number from + this list; for example, declaring + \verb!\RandomL[index=2]{\a}{17,1/2,1.3}!, the value of \cs{a} is 1/2. + + The value of \texttt{index} can be any positive integer, even one generated + using \cs{RandomI}. If the value of \texttt{index} is greater than the + number of items in the list, modular arithmetic is performed to put the + index back into the proper range. + + When the \texttt{index} key is not present, a number is randomly selected + from the list. + +\item\1\cs{\meta{name}} is the name of the number generated. The number + generated will be defined as integer, rational, or real; consequently + \cs{nOf}, \cs{dOf}, \cs{fmt}, and \cs{ds} are defined. + +\item \meta{n\SUB{1},n\SUB{2},n\SUB{3},...} A (possibly mixed) list of + numbers. The numbers can be literal (12, 1.2, 3/4), or control + sequences of numbers (commands) defined earlier by \cs{Random\meta{\upshape{Z|Q|R|L}}} + or by \cs{define\meta{\upshape{Z|Q|R}}}. +\end{description} + +\paragraph*{Examples} + +\begin{enumerate} + \item After declaring \verb!\RandomL{\a}{17,3.14,88,3/4,1/2}!, the value + of \cs{a} is \RandomL{\a}{17,3.14,88,3/4,1/2}\texttt{\cs{a} = \a}, + Select a number from this list at random + \RandomL{\a}{17,3.14,88,3/4,1/2}\texttt{\string\a=\a}, again + \RandomL{\a}{17,3.14,88,3/4,1/2}\texttt{\string\a=\a}, and again + \RandomL{\a}{17,3.14,88,3/4,1/2}\texttt{\string\a=\a}. + \item \verb!\RandomL[index=3]{\a}{17,3.14,88,3/4,1/2}\a!, + \RandomL[index=3]{\a}{17,3.14,88,3/4,1/2}\texttt{\string\a=\a}. +\end{enumerate} + +\subsection{\texorpdfstring{\protect\cs{RandomI}}{\CMD{RandomI}}} + +The command \Com{RandomI} defines a list of integers, \verb!{1,2,3...n}! +and randomly selects an integer, thought of as an index value, from the list. + +\takeMeasure{\string\RandomI\darg{\cs{\meta{name}}}\darg{\meta{n}}}% +\begin{dCmd*}[commandchars=!()]{\bxSize} +\RandomI{!cs(!meta(name))}{!meta(n)} +\end{dCmd*} +\PD +\begin{description}\def\1{\hspace{-\labelsep}} + +\item\1\cs{\meta{name}} is the name of the number generated, the number +will be defined as an integer number. + +\item\1 \meta{n} is a positive number greater than 1. The list + \verb!{1,2,3...n}! is implicitly created. +\end{description} + +\paragraph*{Example:} \verb!\RandomI{\indx}{20}\indx! yields \RandomI{\indx}{20}\indx, +\RandomI{\indx}{20}\indx, \RandomI{\indx}{20}\indx, \RandomI{\indx}{20}\indx, when copied +and pasted four times. + +\newtopic\noindent +My thought in creating \cs{RandomI} is to use it in conjunction with +\cs{RandomL} (using the \texttt{index} key). For example, +\begin{Verbatim} + \RandomI{\indx}{4} + \RandomL[index=\indx]{\a}{1/2,1/3,1/4,1/5} + \RandomL[index=\indx]{\b}{5/3,6/5,7/2,5/6} +\begin{equation*} + (\a)+(\b) = +\end{equation*} +\end{Verbatim} + + \RandomI{\indx}{4} + \RandomL[index=\indx]{\a}{1/2,1/3,1/4,1/5} + \RandomL[index=\indx]{\b}{5/3,6/5,7/2,5/6} + +\noindent +This code results in the following arithmetic problem: +\begin{equation*} + (\a)+(\b) = +\end{equation*} +This is probably not a good example of the usage of \cs{RandomI}. See the next section +on \cs{RandomP}. + +\subsection{\texorpdfstring{\protect\cs{RandomP}}{\CMD{RandomP}}} + +The command \Com{RandomP} defines a list of strings (literal expressions), +and randomly selects one from the list. (The ``P'' in \cs{RandomP} stands +for ``Problem.'') + +\takeMeasure{\string\RandomP[\meta{key-values}]\darg{\cs{\meta{name}}}\darg{\meta{list of literals}}}% +\begin{dCmd*}[commandchars=!()]{\bxSize} +\RandomP[!meta(key-values)]{!cs(!meta(name))}{!meta(list of literals)} +\end{dCmd*} + +\PD +\begin{description}\def\1{\hspace{-\labelsep}} + +\item [\texttt{\meta{key-values}}] The only key-value pairs recognized is + \texttt{index=\meta{posZ}}. The index is a base-1 index, thus index=1 + references the first number in the list. + + The \texttt{index} key can be used to retrieve a particular literal from + this list; for example, by executing \verb!\RandomP[index=2]{\a}{d,p,s}!, + the value of \cs{a} is \texttt{p}. + + The value of \texttt{index} can be any positive integer, even one generated + using \cs{RandomI}, or by another list. If the value of \texttt{index} is + greater than the number of items in the list, modular arithmetic is + performed to put the index back into the proper range. + + When the \texttt{index} key is not present, a number is randomly selected + from the list. + +\item\1\cs{\meta{name}} is the name of the literal generated. + +\item\1\meta{list of literals} is a comma-delimited list of literal + strings, selected literal is not interpreted as a number, but is passed + into the definition of \cs{\meta{name}}. +\end{description} + +\paragraph*{Examples} + +\begin{enumerate} + \item Executing \verb!\RandomP{\a}{1+16,\cos(\pi),%!\\ + \verb! \frac{d}{dx}\frac{1}{2}x^2,{\int \cos(x)\,dx}}!\\ + \verb!$\texttt{\string\a} = \a$!, we get + \RandomP[index=5]{\a}{1+16,\cos(\pi),\frac{d}{dx}\frac{1}{2}x^2}% + $\texttt{\string\a} = \a $, and then again, + \RandomP{\a}{1+16,\cos(\pi),\frac{d}{dx}\frac{1}{2}x^2}% + $ \texttt{\string\a} = \a $. + \item Use \cs{RandomI} with \cs{RandomP}. You can create a series + of questions and answers using these two: +\begin{Verbatim}[fontsize=\small] +\RandomI{\indx}{5} +\RandomP[index=\indx]{\q}{1+16,\cos(\pi),\pi\sin(\pi),% + \frac{d}{dx}\frac{1}{2}x^2,{\int \cos(x)\,dx}} +\RandomP[index=\indx]{\a}{17,-1,0,x,\sin(x)+C} +\begin{equation*} + \q = \a +\end{equation*} +\end{Verbatim} + +\RandomI{\indx}{5} +%\typeout{index=\iOf{\indx}}% +\RandomP[index=\indx]{\q}{1+16,\cos(\pi),\pi\sin(\pi),\frac{d}{dx}\frac{1}{2}x^2,{\int \cos(x)\,dx}} +\RandomP[index=\indx]{\a}{17,-1,0,x,\sin(x)+C} + +The execution of these lines becomes +\begin{equation*} + \q = \a +\end{equation*} +You can create a switch to include the answer or not. + +\item There is an alternate approach to this previous example. +Random lists (\cs{RandomL} and \cs{RandomP}) define a macro \cs{iOf}, +the value of which is the index of the item selected (at random). +We can use \cs{iOf} in the above problem as follows: +\begin{Verbatim}[fontsize=\small] +\RandomP{\q}{1+16,\cos(\pi),\pi\sin(\pi),% + \displaystyle\frac{d}{dx}\frac{1}{2}x^2,% + {\int \cos(x)\,dx}} +\RandomP[index=\iOf{\q}]{\a}{17,-1,0,x,\sin(x)+C} +\begin{equation*} + \q = \a +\end{equation*} +\end{Verbatim} +The execution of these lines gives the output\dots +\RandomP{\q}{1+16,\cos(\pi),\pi\sin(\pi),% + \displaystyle\frac{d}{dx}\frac{1}{2}x^2,{\int \cos(x)\,dx}} +\RandomP[index=\iOf{\q}]{\a}{17,-1,0,x,\sin(x)+C} +\begin{equation*} + \q = \a +\end{equation*} +Here, we select the answer to the randomly chosen question. +\end{enumerate} + +\subsection{\texorpdfstring{\protect\cs{RandomS}}{\CMD{RandomS}}} + +The command \cs{RandomS} generates a random sign, either \texttt{+} +or \texttt{-}. This may be useful for creating addition/subtraction +problems. + +\takeMeasure{\string\RandomS[\meta{dec}]\darg{\cs{\meta{name}}}}% +\begin{dCmd*}[commandchars=!()]{\bxSize} +\RandomS[!meta(dec)]{!cs(!meta(name))} +\end{dCmd*} + +\PD +\begin{description}\def\1{\hspace{-\labelsep}} + +\item\1\meta{dec} is a number between 0 and 1. This command generates a + \texttt{+} sign with probability \meta{dec}. The default value is + 0.5. + +\item\1\cs{\meta{name}} is the name that references the generated random sign. + +\end{description} + +\paragraph*{Examples} + +\begin{enumerate} + \item Random addition problem: +\begin{Verbatim} +\RandomZ{\a}{1}{20}\RandomZ{\b}{1}{20}\RandomS{\s} +\begin{equation*} + \a \s \b +\end{equation*} +\end{Verbatim} + +\RandomZ{\a}{1}{20}\RandomZ{\b}{1}{20}\RandomS{\s} + +This code expands to +\begin{equation*} + \a \s \b +\end{equation*} +Whether we add or subtract the summands is determined by the command \cs{s}. + +\item Random Differentiation problem: +\begin{Verbatim} +\RandomQ{\a}[8]{1}{2}\RandomQ{\b}[8]{2}{3} +\RandomZ{\n}{1}{6}\RandomS{\si}\RandomS{\sii} + +Differentiate +\begin{equation*} + \frac{d}{dx}(\bigl (\a) \si (\b) x^{\sii\n}\bigr) +\end{equation*} +\end{Verbatim} + +\RandomQ{\a}[8]{1}{2}\RandomQ{\b}[8]{2}{3} +\RandomZ{\n}{1}{6}\RandomS{\si}\RandomS{\sii} + +Differentiate +\begin{equation*} + \frac{d}{dx}\bigl( (\a) \si (\b) x^{\sii\n}\bigr) +\end{equation*} +\end{enumerate} + +\subsection{Commands that Operate on Numbers} + +Associated with each data type (integer, rational, and real) are several +useful commands \cs{nOf}, \cs{dOf}, \cs{iOf}, \cs{fmt}, and \cs{ds}. + +\subsubsection{\texorpdfstring{\protect\cs{nOf} and \protect\cs{dOf}}{\CMD{nOf} and \CMD{dOf}}} + +For integer, rational, and real numbers \cs{nOf} and \cs{dOf} are +the numerator and denominator, respectively. +\begin{itemize} + \item Integer: \cs{nOf} is the integer, and \cs{dOf} is 1; for example, + define an integer by \verb!\RandomZ{\a}{-5}{5}!,\RandomZ{\a}{-5}{5} \cs{a}=\a, + \verb!\nOf{\a}!=\nOf{\a}, \verb!\dOf{\a}!=\dOf{\a}, as advertised. + + \item Rational: \cs{nOf} is the numerator (an integer), and \cs{dOf} is the + denominator (an integer) of the reduced fraction. For example, define \cs{a} by + \verb!\RandomQ[ne=0]{\a}[9]{-3/2}{3/2}!,\RandomQ[ne=0]{\a}[9]{-3/2}{3/2} then + \begin{equation*} + \cs{a}=\a,\ \verb!\nOf{\a}!=\nOf{\a},\ \text{and}\ \verb!\dOf{\a}!=\dOf{\a}. + \end{equation*} + \item Real: \cs{nOf} is the numerator (an integer), and \cs{dOf} is the + denominator (an integer) of the reduced fraction, after the real is converted + into a rational number. For example, \verb!\RandomR{\a}{.25}{.75}!,\RandomR{\a}{.25}{.75} + then + \begin{equation*} + \cs{a}=\a,\ \verb!\nOf{\a}!=\nOf{\a},\ \text{and}\ \verb!\dOf{\a}!=\dOf{\a} + \end{equation*} + If we round using with \verb!\RandomR[round=2]{\a}{.25}{.75}!, we get + \begin{equation*} + \RandomR[round=2]{\a}{.25}{.75}\cs{a}=\a,\ \verb!\nOf{\a}!=\nOf{\a},\ \text{and}\ \verb!\dOf{\a}!=\dOf{\a} + \end{equation*} +% \cs{a}=\a, \verb!\nOf{\a}!=\nOf{\a}, and \verb!\dOf{\a}!=\dOf{\a} +\end{itemize} + + +\subsubsection{Special Formatting Commands: The \texorpdfstring{\protect\cs{ds}}{\CMD{ds}} +and \texorpdfstring{\protect\cs{fmt}}{\CMD{fmt}} families} + +When a RV, such as \cs{a}, is a rational number type, say \cs{a}=1/3, the command \cs{a} expands +to 1/3. To get a display style formatting of the rational use the \Com{ds} command. +The expansion of \texttt{\$\cs{ds}\cs{a}\$} is $\frac13$. + +We have seen in several examples in which the formatting was not always what we'd like. +Expressions like $x^{1}$ should be $x$, $1x$ should be $x$, $-1x$ should be $-x$. +The formatting commands \cs{cfmt} and \cs{efmt} (and their display style counterparts +\cs{cds} and \cs{eds}) attempt to format the special cases of 1 and -1, as they appear +in an exponent (the `e' variations) and as they appear as a coefficient (the `c' variations). + +All the formatting commands \cs{cfmt}, \cs{efmt}, \cs{ds}, \cs{cds}, and +\cs{eds} take a RV as its argument. +\cs{\meta{\upshape{c|e}}fmt}|\cs{\meta{\upshape{c|e}}ds}\cs{a} expands to +\cs{a} when \cs{a} is not 1 or -1. These cases are covered below. + +\begin{itemize} + \item For \cs{a}=1, + \cs{cfmt}\cs{a}=\cs{efmt}\cs{a}=\cs{cds}\cs{a}=\cs{eds}\cs{a}=\darg{}, + the empty string. Thus, \defineZ{\a}{1}if \cs{a}=\a, and we typeset + \verb!$\a x^{\a}$!, we get $\a x^{\a}$, which is not the standard + way of writing this expression, but if we typeset \verb!$\cfmt\a x^{\efmt\a}$! we get $\cfmt\a x^{\efmt\a}$, which is correct. + Notice that we used \cs{cfmt} on the baseline, and \cs{efmt} in the + exponent. It does not make any difference here, but it does if + \cs{a}=-1, see the next bullet point. + + \item \cs{a}=-1, then + \begin{align*} + &\cs{cfmt}\cs{a}=\cs{cds}\cs{a}=\texttt{-}\quad\text{(minus sign)}\\ + &\cs{efmt}\cs{a}=\cs{eds}\cs{a}=\texttt{-1}\quad\text{(minus one)} + \end{align*} + Returning to the same expression in the previous bullet, if + \defineZ{\a}{-1}\cs{a}=\a, and we typeset + \verb!$\a x^{\a}$!, we get $\a x^{\a}$, which is not the standard way + of writing this expression, but, on the other hand, if we typeset + \verb!$\cfmt\ax^{\efmt\a}$! we get $\cfmt\a x^{\efmt\a}$, which is correct. Notice + the difference cases if I had typeset \verb!$\cfmt\a x^{\cfmt\a}$!, I + would have gotten $\cfmt\a x^{\cfmt\a}$, not good. + + The `c'-variation is used for unitary signs, not binary signs. For example, + \defineZ{\a}{-1}, if \cs{a}=\a, and we typeset \verb!$2 + \cfmt\a x$!, we get + $2 + \cfmt\a x$, which may be fine is some situations, but most of the time + it is not. As a work around, make coefficients positive, and generate a random sign + using \cs{RandomS}; for example, after declaring +\begin{Verbatim} +\RandomS{\s}\RandomZ{\a}{1}{3} +\end{Verbatim} + and typeseting \verb!$2 \s \cfmt\a x$!, we get an addition half the + time and subtraction the other half: \RandomS{\s}\RandomZ{\a}{1}{3}$2 + \s \cfmt\a x$, \RandomS{\s}\RandomZ{\a}{1}{3}$2 \s \cfmt\a x$, + \RandomS{\s}\RandomZ{\a}{1}{3}$2 \s \cfmt\a x$, + \RandomS{\s}\RandomZ{\a}{1}{3}$2 \s \cfmt\a x$, + \RandomS{\s}\RandomZ{\a}{1}{3}$2 \s \cfmt\a x$, + \RandomS{\s}\RandomZ{\a}{1}{3}$2 \s \cfmt\a x$. + + Similarly, the `e'-variation is for unitary sign in the exponent, and + should be used when there is a need for these special format rules. + + \item Random Sign: The formatting commands are defined for a random sign + created by \cs{RandomS} and following the same definitions outline + above. These are of marginal value in this context. +% \item[] \verb!\RandomL{\a}{-1,1}\RandomS{\s}$\a \s x^{\efmt\s x}$! yields the +% expression \RandomL{\a}{-1,1}\RandomS{\s}$\a \s e^{\efmt\a x}$ +\end{itemize} + +\subsubsection{Getting the Data type with \texorpdfstring{\protect\cs{typeOf}}{\CMD{typeOf}}} + +There may be occasions where you want to know the data type of a RV. The \pkg{rangen} +does change the data type in special cases. For example, if \cs{a} is created by +\verb~\cs{RandomQ}{\a}[2]{1}{3}~, and its value happens to be an integer, \pkg{rangen} +changes its type of integer. You can determine the type of a RV with the \cs{typeOf} +command, which takes a RV as its argument, the value of \cs{typeOf} is a nonnegative integer. The following table gives +the values of \cs{typeOf}, and associated data types. +\begin{flushleft} +\hspace{\amtIndent}\begin{tabular}{lc} +Data type & \cs{typeOf}\\\hline +Integer & 0 \\ +Rational & 1 \\ +Real & 2 \\ +Literal & 3 +\end{tabular} +\end{flushleft} + +\paragraph*{A suggested application to \cs{typeOf}.} Suppose, \cs{a} is a rational RV +(for example, \verb!\RandomQ{\a}[2]{1}{3}!), and we want to typeset the +expression \verb!$\cfmt\a x$!. One instance might be +\defineQ{\a}{3}{2}$\cfmt\a x$, this is not good syntax; so we typeset +\verb!$(\cfmt\a) x$! to get $(\cfmt\a) x$, that's good. But if \cs{a} is an +integer, such as 1, 2, or 3, we get \defineQ{\a}{2}{1}$(\cfmt\a) x$, which +contains redundant parentheses. Now we come to the use of \cs{typeof}. We now +typeset the expression +\begin{Verbatim} +$ \ifnum\typeOf\a=0\relax\cfmt\a\else(\cfmt\a)\fi x $ +\end{Verbatim} +If \cs{a} is \emph{not an integer} we get, \defineQ{\a}{3}{2}for \cs{a}=\a, we obtain +$\ifnum\typeOf\a=0\relax\cfmt\a\else(\cfmt\a)\fi x$, but for +\defineQ{\a}{2}{1}for \cs{a}=\a, we get +$\ifnum\typeOf\a=0\relax\cfmt\a\else(\cfmt\a)\fi x$. + +\subsection{\texorpdfstring{\protect\cs{defineZ}}{\CMD{defineZ}}, +\texorpdfstring{\protect\cs{defineQ}}{\CMD{defineQ}}, and +\texorpdfstring{\protect\cs{defineR}}{\CMD{defineR}}} + +The \pkg{rangen} package internally uses \cs{defineZ}, \cs{defineQ}, +and \cs{defineR} to define an integer, a rational number, and a real (decimal) number. +These command may be used by the document author as well to create non-random variables. + +\takeMeasure{\string\defineQ\darg{\cs{\meta{name}}}\darg{\meta{zNumer}}\darg{\meta{zDenom}}}% +\begin{dCmd*}[commandchars=!()]{\bxSize} +\defineZ{!cs(!meta(name))}{!meta(zValue)} +\defineQ{!cs(!meta(name))}{!meta(zNumer)}{!meta(zDenom)} +\defineR{!cs(!meta(name))}{!meta(rValue)} +\end{dCmd*} +Thus, \verb!\defineZ{\a}{17}!\defineZ{\a}{17} defines \cs{a}=\a, \verb!\defineQ{\a}{-3}{2}! +\defineQ{\a}{-3}{2} defines \cs{a}=\a, and \verb!\defineR{\a}{17.88}!\defineR{\a}{17.88} defines +\cs{a}=\a. + +The various properties data types are created by \cs{defineZ}, \cs{defineQ}, +and \cs{defineR}; these are \cs{nOf}, \cs{dOf}, \cs{typeOf}, \cs{ds}, \cs{eds}, +\cs{cds}, \cs{efmt}, and \cs{cfmt}. + +\newtopic\noindent +The following are other important points to remember. +\begin{itemize} +\item \textbf{Positive Denominators.} Notice that if \verb!\defineQ{\a}{3}{-2}!,\defineQ{\a}{3}{-2} then \cs{a}=\a, and +\cs{nOf}\cs{a}=\nOf\a, and \cs{dOf}\cs{a}=\dOf\a. Thus, \pkg{rangen} does not allow a +negative denominator. + +\item \textbf{Automatic Reduction.} If we declare + \verb!\defineQ{\a}{6}{4}!,\defineQ{\a}{6}{4} then \cs{a}=\a, a rational + number is automatically reduced to lowest terms. + +\item \textbf{Re-classification.} If we make the definition \verb!\defineQ{\a}{6}{2}!,\defineQ{\a}{6}{2} then \cs{a}={\a} is reduced +to lowest terms and re-classified as an integer \cs{typeOf}\cs{a}=\typeOf\a~(an integer). +\end{itemize} + +\section{\textsf{rangen} and \textsf{fp}} + +After a little bit of testing, it appears that \textsf{fp} can work with the \texttt{rangen} package. +The \texttt{rangen} package does not provide any command for combining RVs using such operations +as addition, subtraction, multiplication, division, etc. + +The \texttt{rangen} package package does provide several useful commands that \textsf{fp} does not, +these are \cs{reduceFrac}, \cs{gcd}, and \cs{lcm}. + +\Com{reduceFrac} takes two arguments (numerator and denominator), both integers, and attempts to reduce the implied fraction +to lowest terms, and returns the result in two macros \cs{rfNumer} and \cs{rfDenom}. For example, +to reduce the fraction $4/12$, we execute \verb!\reduceFrac{4}{12}!, which returns\reduceFrac{4}{12} \cs{rfNumer}=\rfNumer, and +\cs{rfDenom}=\rfDenom, forming the reduced fraction $\rfNumer/\rfDenom$; thus, +$4/12 = \rfNumer/\rfDenom$. + +The \emph{greatest common divisor} command \cs{gcd} takes two integers as its arguments +and returns its result in the macro \cs{thegcd}. For example, the \verb!\gcd{4,8}! is +\gcd{4}{8}\thegcd, while the \verb!\gcd{4}{6}! is \gcd{4}{6}\thegcd. + +The \emph{least common multiple} command \cs{lcd} takes two integers as its arguments, +and returns its result in the macro \cs{thelcd}. For example, \verb!\lcm{4}{5}! is +\lcm{4}{5}\cs{thelcm}=\thelcm, while, \verb!\lcm{4}{6}! is \lcm{4}{6}\cs{thelcm}=\thelcm. + +The following example illustrates the use of the \texttt{rangen} and \texttt{fp} packages to pose a random +arithmetic problem, and present a detailed solution. +\begin{Verbatim}[fontsize=\footnotesize] +\RandomQ{\a}[6]{2}{4}\RandomQ{\b}[6]{2}{4} +\gcd{\dOf\a}{\dOf\b} +\FPeval\lcd{clip((\dOf\a)*(\dOf\b)/\thegcd)} +\FPeval\si{clip(\lcd/(\dOf\a))} +\FPeval\sii{clip(\lcd/(\dOf\b))} +\FPeval\finalnum{clip((\si)*(\nOf\a)+(\sii)*(\nOf\b))} +\defineQ{\ans}{\finalnum}{\lcd} +$$ + \ds\a \thisop \ds\b = \frac{(\si)(\nOf\a)+(\sii)(\nOf\b)}{\lcd} + = \frac{\finalnum}{\lcd}\ifnum\lcd=\dOf\ans\else =\ds\ans\fi +$$ +\end{Verbatim} +An instance of this code might look like this: +$$ + \frac{8}{3}+\frac{17}{6}=\frac{(2)(8)+(1)(17)}{6}=\frac{33}{6}=\frac{11}{2} +$$ +If there is any reduction of the fraction (brought on by the \cs{defineQ} command), +this additional expression is included. + +\paragraph*{Demo file.} +See the demo file \texttt{rangen\_fp.tex} for a complete example. + +\section{\textsf{rangen} and \textsf{exerquiz}} + +Developing a package for randomly generating numbers that could be +used as a basis for creating random quizzes (see the example back in +\hyperref[s:intro]{Section~\ref*{s:intro}}, page~\pageref*{s:intro}) +was my original motivation for writing the original package back in +the year 2000 AD. In this section, we introduce the techniques that +I've developed for creating random quizzes, and, more importantly, +how to grade them and to exhibit to the user the correct answer. +This system is not a computer algebra system, so, it is difficult, +but not impossible to also supply a solution (a opposed to just the +answer) to the problem as well. + +\paragraph*{Demo file.} Now, let's see how its done! Examples of this section were taken from the +demo file \texttt{rangen\_tst.tex}. + +\subsection{Creating Quizzes using \textsf{rangen}} + + +The \pkg{rangen} package provides three JavaScript functions that are used with \textsf{exerquiz} +quizzes, these are +\begin{itemize} + \item \texttt{rEval(str)}: The function \texttt{rEval} evaluates its + argument. The \texttt{rEval} function searches its argument for + \texttt{rEval} and \texttt{rFrac}, and executes any inner nested + functions first. + \item \texttt{rFrac(str)}: Evaluates a rational number by evaluating + the value of the numerator and denominator separately. The function + \texttt{rFrac} searches its argument for \texttt{rEval} and + \texttt{rFrac}, and executes any inner nested functions first. + \item \texttt{rngCorrAnsButton}: A function that is used to represent + the correct answer to the user. +\end{itemize} +The best way of illustrating these function is by discussing an example or two. + +\renewcommand\titleQuizfmt{\bfseries\color{red}} +\titleQuiz*{Example~1. } +\begin{shortquiz}*[sq1] We create two RVs, \cs{a} and \cs{b} that are rational numbers. We want to +add them, and present the answer as a rational number. +\begin{Verbatim}[fontsize=\small] +\RandomQ{\a}[16]{1/8}{15/16}\RandomQ[ne=\a]{\b}[16]{1/8}{15/16} +\end{Verbatim} +\begin{questions} +\RandomQ{\a}[16]{1/8}{15/16}\RandomQ[ne=\a]{\b}[16]{1/8}{15/16} + +\item $\displaystyle\ds\a - \ds\b = + \RespBoxMath[\rectW{.5in}]{ (\nOf\a * \dOf\b - \nOf\b * \dOf\a )/( \dOf\a * \dOf\b ) }{2}{.0001}{[0,2]}[{priorParse: \Array(nodec,NoAddOrSub)}]$\hfill + \CorrAnsButton{rFrac( rEval( \nOf\a * \dOf\b - \nOf\b * \dOf\a )/rEval( \dOf\a * \dOf\b ) )}*{rngCorrAnsButton}\kern1bp\sqClearButton +\end{questions} +\end{shortquiz} +\vskip-.5\baselineskip +The question is posed using \cs{RespBoxMath}. +\begin{Verbatim}[xleftmargin=20pt,numbers=left,fontsize=\small] +$\displaystyle\ds\a - \ds\b = +\RespBoxMath[\rectW{.5in}]{ + (\nOf\a*\dOf\b-\nOf\b*\dOf\a)/(\dOf\a*\dOf\b)} + {2}{.0001}{[0,2]} + [{priorParse: \Array(nodec,NoAddOrSub)}]$ +\end{Verbatim} +\textsf{Exerquiz} determines whether the user's answer is correct, it by evaluating +the author's answer at randomly selected points. Exerquiz uses the floating point arithmetic +of JavaScript to evaluate the user's answer. The author's correct answer is given +in line (1), and it is just the formula for combining two fractions \cs{a} and \cs{b}; +note the use of \cs{nOf} and \cs{dOf}. Line~(2) is standard parameters for \cs{RespBoxMath}, +the number of random points to use, the precision, and the interval from which to select the +points. Line~(3) specifies a couple of routines from the \textsf{dljslib} package, these +prevent the user from using decimals and rational arithmetic to answer the question. (The latter +function would, for example, prevent the user from copying the question and pasting it into the +answer.) + +Now comes the most interesting part, at least to me: The presentation of the correct +answer to the user. These is where the JavaScript functions \texttt{rEval} and \texttt{rFrac} are used. +The code for the answer button is shown below. +\begin{Verbatim}[xleftmargin=20pt,numbers=left,fontsize=\small] +\CorrAnsButton{rFrac( + rEval(\nOf\a*\dOf\b-\nOf\b*\dOf\a)/rEval(\dOf\a*\dOf\b) +)}*{rngCorrAnsButton} +\end{Verbatim} +Here, this code is broken across several lines to fit on the page. We direct the \cs{CorrAnsButton} +to use the function \texttt{rngCorrAnsButton}, as seen in line~(3). This is a special function +define by \pkg{rangen} to help in the presentation of the answer to the user. + +Keep in mind, the inner-most \texttt{rEval} and \texttt{rFrac} +functions are evaluated first; consequently, the two \texttt{rEval} +functions in line~(2) are evaluated first. These two evaluations +calculate the numerator and denominator separately, this results in +a numerical numerator and denominator. The function \texttt{rFrac} +is then executed on the resulting rational number, this function +reduces the fraction to lowers terms. This final calculation is what +the user sees when the correct answer button is pressed. + +The next example will illustrate a decimal presentation of the answer, and introduces +a new command, \Com{RNGprintf}. + +\titleQuiz*{Example~2. } +\begin{shortquiz}*[sq2] We create four RVs, \cs{a}, \cs{b}, \cs{c}, and \cs{n}, three rational and one integer. +The exponent of the power is rational, hence, we represent a decimal answer to the user. +\begin{Verbatim}[fontsize=\small] +\RandomQ{\a}[8]{1/4}{7/6}\RandomZ{\b}{1}{3} +\RandomQ{\n}[8]{1/2}{3/2}\RandomZ[ne=\zZero]{\c}{-3}{3} +\end{Verbatim} +\begin{questions}\setcounter{eqquestionnoi}{1} +\RandomQ{\a}[8]{1/4}{7/6} +\RandomZ{\b}{1}{3} +\RandomQ{\n}[8]{1/2}{3/2} +\RandomZ[ne=\zZero]{\c}{-3}{3} + +\item $\displaystyle\int_{\a}^{\b} \cfmt\c x^{\efmt\n}\,dx = + \RespBoxMath{\c((\b)^(\n+1)-(\a)^(\n+1))/(\n+1)}{3}{.0001}{[0,2]}$\hfill + \CorrAnsButton{rEval(\c((\b)^(\n+1)-(\a)^(\n+1))/(\n+1))}*{rngCorrAnsButton\RNGprintf{\%.4f}}\kern1bp\sqClearButton +\end{questions} +\end{shortquiz} +\vskip-.5\baselineskip +The question is posed using \cs{RespBoxMath}. +\begin{Verbatim}[xleftmargin=20pt,numbers=left,fontsize=\small] +$\displaystyle\int_{\a}^{\b} \cfmt\c x^{\efmt\n}\,dx = + \RespBoxMath{\c((\b)^(\n+1)-(\a)^(\n+1))/(\n+1)} + {3}{.0001}{[0,2]}$ +\end{Verbatim} +The correct answer is given on line~(2), and is based on the known form of the integrand; here, +we use standard integration formulas. + +The code for the correct answer button has a new element in it +\begin{Verbatim}[xleftmargin=20pt,numbers=left,fontsize=\small] +\CorrAnsButton{rEval( + \c((\b)^(\n+1)-(\a)^(\n+1))/(\n+1) +)}*{rngCorrAnsButton\RNGprintf{\%.4f}}}\kern1bp\sqTallyBox +\end{Verbatim} +The \texttt{rEval} function evaluates the expression on line~(2), the result +is a decimal number. As before, we use the \texttt{rngCorrAnsButton}, but we've +added the \Com{RNGprintf} command to the end of the function name. This is a kludge +that I've developed to be able to format a numerical answer. The \cs{RNGprintf} command +uses the Acrobat JavaScript function \texttt{util.printf}. The argument of \cs{RNGprintf} +is passed to \texttt{util.printf} as its formatting string. Here, we use +\verb!\%.4f!, so the number is presented as a floating point number with four decimal places. +See the documentation of \texttt{util.printf} in the \textsl{JavaScript for Acrobat API Reference.}\footnote +{\url{{http://livedocs.adobe.com/acrobat_sdk/9/Acrobat9_HTMLHelp}}} + + +The final example it the one seen in \Nameref{s:intro}, it uses another new command, +\Com{defineDepQJS}. This command is used to define a new RV as a rational function of other RVs, +and to define special JavaScript formatting, \cs{js}. The results of this command are used +exclusively for JavaScript, and are not meant to be typeset. + +\takeMeasure{\string\defineDepQJS\darg{\cs{\meta{name}}}% +\darg{\meta{numer}}\darg{\meta{denom}}\darg{\meta{script}}}% +\begin{dCmd*}[commandchars=!()]{\bxSize} +\defineDepQJS{!cs(!meta(name))}{!meta(numer)}{!meta(denom)}{!meta(script)} +\end{dCmd*} +\noindent This function defines \cs{\meta{name}} to be +\texttt{(\meta{numer})/(\meta{denom})}. The expression \meta{numer} and +\meta{denom} can be functions of RV defined earlier. The $4^{\text{th}}$ +argument is JavaScript for evaluating \cs{\meta{name}}; \meta{script} is +accessed by \cs{js\cs{\meta{name}}} and is used from within a +\cs{CorrAnsButton}. The $4^{\text{th}}$ argument can include such +commands as \cs{\meta{name}}, \cs{nOf}\cs{\meta{name}}, and +\cs{dOf}\cs{\meta{name}}. An example will perhaps illustrate. + +\titleQuiz*{Example~3. } +\begin{shortquiz}*[sq3] Find the equation of the line that passes through $P$ and $Q$. + +We begin by defining our variables: +\begin{Verbatim}[xleftmargin=20pt,numbers=left,fontsize=\small] +\RandomZ{\a}{-10}{9}\RandomZ{\b}{-10}{9} +\RandomZ{\c}{\a*}{10}\RandomZ{\d}{\b*}{10} +\defineDepQJS{\m}{\d - \b}{\c - \a} + {rFrac(rEval(\nOf\m)/rEval(\dOf\m))} +\defineDepQJS{\yIntercept}{\b - \a*\m}{1} + {rFrac((rEval(\b*\dOf\m-\a*\nOf\m))/(rEval(\dOf\m)))} +\end{Verbatim} +Our big problem is to compute the slope of the line, \cs{m}. I define \cs{m} +as using \cs{defineDepQJS}. The numerator and denominator are those in the +slope calculation, given two points. The expansion of \cs{m} is +\verb!(\d-\b)/(\c-\a)!, and the JavaScript will perform the arithmetic +operations. The expression that is accessed with the \cs{js} is the fourth +argument, line~(4); here, we calculate slope as a rational number. We make a +similar definition for the \cs{yIntercept} of the line. + +Below are the two points \verb!$P(\a, \b)$! and \verb!$Q(\c, \d)$!. +\begin{questions}\setcounter{eqquestionnoi}{2} +\RandomZ{\a}{-10}{9}\RandomZ{\b}{-10}{9} +\RandomZ{\c}{\a*}{10}\RandomZ{\d}{\b*}{10} +\defineDepQJS{\m}{\d - \b}{\c - \a}{rFrac(rEval(\nOf\m)/rEval(\dOf\m))} +\defineDepQJS{\yIntercept}{\b - \a*\m}{1}{rFrac((rEval( \b * \dOf\m - \a*\nOf\m ))/(rEval(\dOf\m)))} + +\item $P(\,\a, \b\,)$, $Q(\,\c, \d\,)$: + \RespBoxMath{y = \m*x + \yIntercept}(xy){3}{.0001}{[0,2]x[0,2]}*{ProcRespEq}\hfill + \CorrAnsButton{y = \js\m\space x + \js\yIntercept}*{rngCorrAnsButton}% + \kern1bp\sqClearButton +\end{questions} +\end{shortquiz} +\vskip-.5\baselineskip +The question is posed using \cs{RespBoxMath}. +\begin{Verbatim}[xleftmargin=20pt,numbers=left,fontsize=\small] +$P(\,\a, \b\,)$, $Q(\,\c, \d\,)$: + \RespBoxMath{y=\m*x + \yIntercept}(xy) + {3}{.0001}{[0,2]x[0,2]}*{ProcRespEq} +\end{Verbatim} +The answer is given in line~(2), and will be evaluated numerically, and compared numerically +with the user's response. + +The code for the correct answer button has a new element in it +\begin{Verbatim}[xleftmargin=20pt,numbers=left,fontsize=\small] +\CorrAnsButton{y = \js\m\space x + \js\yIntercept} + *{rngCorrAnsButton} +\end{Verbatim} +The display of the answer is done using \cs{js}\cs{m} and +\cs{js}\cs{yIntercept} to represent the slope and intercept as a rational +number. + +Think of \cs{defineDepQJS} a convenient way of defining (JavaScript) expressions +that will appear in \cs{RespBoxMath} and for \cs{CorrAnsButton}. + +\subsection{Creating Solutions to Random Quizzes} + +Writing a solution to a question that is based on a formula or template can be difficult. +{\LaTeX} is not a computer algebra system, so the possibilities are limited. Still, +\pkg{rangen} supplies the \texttt{writeRVsTo} environment to support a solution. + +\titleQuiz*{Example~4. } +\begin{shortquiz}*[sq1] We create two RVs, \cs{a} and \cs{b} that are rational numbers. We want to +add them, and present the answer as a rational number. +\begin{Verbatim}[fontsize=\small] +\begin{writeRVsTo}{quizzes} +\RandomQ{\a}[16]{1/8}{15/16}\RandomQ[ne=\a]{\b}[16]{1/8}{15/16} +\end{writeRVsTo} +\end{Verbatim} +We make that same definitions as in \textbf{\textcolor{red}{Example~1}}, but we enclose +these definitions within the \texttt{writeRVsTo}. This environment writes its contents +to the quiz solutions file, and also executes its contents. This way, the definitions are +make both here, and just before the solution to this problem in the solutions file. +\begin{questions}\setcounter{eqquestionnoi}{3} +\begin{writeRVsTo}{quizzes} +\RandomQ{\a}[16]{1/8}{15/16}\RandomQ[ne=\a]{\b}[16]{1/8}{15/16} +\end{writeRVsTo} + +\item $\displaystyle\ds\a + \ds\b = + \RespBoxMath[\rectW{.5in}]{ (\nOf\a * \dOf\b + \nOf\b * \dOf\a )/( \dOf\a * \dOf\b ) }*{2}{.0001}{[0,2]}[{priorParse: \Array(nodec,NoAddOrSub)}]$\hfill + \CorrAnsButton{rFrac( rEval( \nOf\a * \dOf\b + \nOf\b * \dOf\a )/rEval( \dOf\a * \dOf\b ) )}*{rngCorrAnsButton}\kern1bp\sqClearButton +\begin{solution}\relax\RNGadd\a\b\defineQ{\ans}{\rfNumer}{\rfDenom}% +The solution to this problem is +\begin{equation*} + \boxed{\ds\a + \ds\b = \ds\ans} +\end{equation*} +Did I forget to tell you that a simple command \cs{RNGadd} for adding two rational numbers +is defined by \pkg{rangen}. Sorry about that! \dps +\end{solution} +\end{questions} +\end{shortquiz} +\vskip-.5\baselineskip +The verbatim listing of this quiz is +\begin{Verbatim}[fontsize=\footnotesize] +\item $\displaystyle\ds\a + \ds\b = +\RespBoxMath[\rectW{.5in}]{ + (\nOf\a*\dOf\b+\nOf\b*\dOf\a)/(\dOf\a*\dOf\b)}*{2} + {.0001}{[0,2]}[{priorParse: \Array(nodec,NoAddOrSub)}]$\hfill +\CorrAnsButton{rFrac(rEval( + \nOf\a * \dOf\b + \nOf\b * \dOf\a)/rEval(\dOf\a * \dOf\b)) +}*{rngCorrAnsButton}\kern1bp\sqClearButton +\begin{solution}\relax\RNGadd\a\b\defineQ{\ans}{\rfNumer}{\rfDenom}% +The solution to this problem is +\begin{equation*} + \boxed{\ds\a - \ds\b = \ds\ans} +\end{equation*} +Did I forget to tell you that a simple command \cs{RNGadd} +for adding two rational numbers is defined by +\pkg{rangen}. Sorry about that! \dps +\end{solution} +\end{Verbatim} + +\newtopic\noindent +The \texttt{writeRVsTo} has the following syntax + +\takeMeasure{\string\begin\darg{writeRVsTo}\darg{quizzes|exercises}}% +\begin{dCmd*}[commandchars=!()]{\bxSize} +\begin{writeRVsTo}{quizzes|exercises} + !meta(rangen commands creating RVs) +\end{writeRVsTo} +\end{dCmd*} +The argument can be either the string \texttt{quizzes} or \texttt{exercises}. In the first case, +the content of the environment is written to the solutions file for quizzes, and in the latter case, +to the solutions file for the exercises. + +\bigskip + +That's all for now, I simply must get back to my retirement. \dps + +\end{document} diff --git a/texmf-dist/doc/latex/rangen/rangen_tst.tex b/texmf-dist/doc/latex/rangen/rangen_tst.tex new file mode 100644 index 00000000..c89a5964 --- /dev/null +++ b/texmf-dist/doc/latex/rangen/rangen_tst.tex @@ -0,0 +1,280 @@ +\documentclass{article} +\usepackage[fleqn]{amsmath} +\usepackage[tight,designiii,usesf]{web} +\usepackage{exerquiz} +\usepackage[equations,ImplMulti,indefIntegral,limitArith,nodec]{dljslib} +\usepackage[quiet,testmode]{rangen} + +\title{Experiments in Creating Random Problems} +\author{D. P. Story} +\subject{Test file for the rangen Package} +\keywords{LaTeX, rangen, quizzes, random} + +\university{NORTHWEST FLORIDA STATE COLLEGE\\ + Department of Mathematics} +\email{dpstory@acrotex.net} +\version{1.0} + +%\nocopyright +\norevisionLabel +\makeatletter +\def\eq@textFont{/TiRo} +\makeatother + +\everyTextField{\BG{1 1 1}} +\everyCheckBox{\BG{1 1 1}} +\everyRespBoxMath{\rectW{1.9in}\textSize{0}} +\everyRespBoxTxt{\rectW{1.9in}\textSize{0}} + +\newcommand{\cs}[1]{\texttt{\char`\\#1}} + +\renewcommand\nodecAlertMsg{% + "A decimal answer is not acceptable here. + Please express your answer using a fraction."} +\newenvironment{eqComments}[1][\strut]{\smallskip\leftskip-\labelwidth +\item[]\textbf{\textcolor{blue}{#1}}}{\par\smallskip} + +\begin{document} + +\maketitle + +\begin{shortquiz}*[sq] Answer each of the following. Passing is 100\%. + +\begin{questions} + +\begin{eqComments}[Arithmetic]\end{eqComments} + +%% addition +\RandomQ{\a}[9]{1/8}{6/7}\RandomQ{\b}[8]{1/16}{15/16} + +\item $\displaystyle \ds\a + \ds\b = + \RespBoxMath{ (\nOf\a * \dOf\b + \nOf\b * \dOf\a )/( \dOf\a * \dOf\b ) }{2}{.0001}{[0,2]}[{priorParse: \Array(nodec,NoAddOrSub)}]$\hfill + \CorrAnsButton{rFrac( rEval( \nOf\a * \dOf\b + \nOf\b * \dOf\a )/rEval( \dOf\a * \dOf\b ))}*{rngCorrAnsButton}\kern1bp\sqTallyBox + +% subtraction +\RandomQ{\a}[16]{1/16}{15/16}\RandomQ[ne=\a]{\b}[16]{1/8}{15/16} + +\item $\displaystyle \ds\a - \ds\b = + \RespBoxMath{ (\nOf\a * \dOf\b - \nOf\b * \dOf\a )/( \dOf\a * \dOf\b ) }{2}{.0001}{[0,2]}[{priorParse: \Array(nodec,NoAddOrSub)}]$\hfill + \CorrAnsButton{rFrac( rEval( \nOf\a * \dOf\b - \nOf\b * \dOf\a )/rEval( \dOf\a * \dOf\b ) )}*{rngCorrAnsButton}\kern1bp\sqTallyBox + +% subtraction +\RandomQ{\a}[16]{1/8}{15/16}\RandomQ[ne=\a]{\b}[16]{1/8}{15/16} + +\item $\displaystyle \ds\a - \ds\b = + \RespBoxMath{ (\nOf\a * \dOf\b - \nOf\b * \dOf\a )/( \dOf\a * \dOf\b ) }{2}{.0001}{[0,2]}[{priorParse: \Array(nodec,NoAddOrSub)}]$\hfill + \CorrAnsButton{rFrac( rEval( \nOf\a * \dOf\b - \nOf\b * \dOf\a )/rEval( \dOf\a * \dOf\b ) )}*{rngCorrAnsButton}\kern1bp\sqTallyBox + +\begin{eqComments} +This next problem illustrates the use of \cs{RandomL} and \cs{RansomAS}. The summands are +determined from a list of rational numbers. Addition or subtraction of the summands is determined +by \cs{RandomAS}. +\end{eqComments} + +%% Random add/subtr using RandomL and RandomAS +\RandomL{\a}{1/2,2/3,5/3,2/5,6/5}\RandomL{\b}{4/3,3/4,8/7,3/2}\RandomS{\as} + +\item $\displaystyle \ds\a \as \ds\b = + \RespBoxMath{ (\nOf\a * \dOf\b \as \nOf\b * \dOf\a )/( \dOf\a * \dOf\b ) }{2}{.0001}{[0,2]}[{priorParse: \Array(nodec,NoAddOrSub)}]$\hfill + \CorrAnsButton{rFrac( rEval( \nOf\a * \dOf\b \as \nOf\b * \dOf\a )/rEval( \dOf\a * \dOf\b ) )}*{rngCorrAnsButton}\kern1bp\sqTallyBox + + +\begin{eqComments} +This next example illustrates how you can create a solution to a problem. This is a simple +addition problem using the built-in command \cs{qAdd}. Solutions to more advanced problems +might be obtained using the \textsf{fp} package. +\end{eqComments} + +\begin{writeRVsTo}{quizzes} +\RandomQ{\a}[9]{1/8}{6/7}\RandomQ{\b}[7]{1/16}{15/16} +\end{writeRVsTo} + +%% addition +\item $\displaystyle \ds\a + \ds\b = + \RespBoxMath{ (\nOf\a * \dOf\b + \nOf\b * \dOf\a )/( \dOf\a * \dOf\b ) }*{2}{.0001}{[0,2]}[{priorParse: \Array(nodec,NoAddOrSub)}]$\hfill + \CorrAnsButton{rFrac( rEval( \nOf\a * \dOf\b + \nOf\b * \dOf\a )/rEval( \dOf\a * \dOf\b ) )}*{rngCorrAnsButton}\kern1bp\sqTallyBox + +\begin{solution}\relax\RNGadd\a\b\defineQ{\ans}{\rfNumer}{\rfDenom}% +The solution to this problem is +\begin{equation*} + \boxed{\ds\a + \ds\b = \ds\ans} +\end{equation*} +\end{solution} + + +\newpage +\begin{eqComments}[Definite Integrals]\end{eqComments} + +\RandomQ{\a}[8]{1/4}{7/6} +\RandomZ{\b}{1}{3} +\RandomQ{\n}[8]{1/2}{3/2} +\RandomZ[ne=0]{\c}{-3}{3} + +\item $\displaystyle\int_{\a}^{\b} \cfmt\c x^{\efmt\n}\,dx = + \RespBoxMath{\c((\b)^(\n+1)-(\a)^(\n+1))/(\n+1)}{3}{.0001}{[0,2]}$\hfill + \CorrAnsButton{rEval(\c((\b)^(\n+1)-(\a)^(\n+1))/(\n+1))}*{rngCorrAnsButton}\kern1bp\sqTallyBox + + +\RandomQ{\a}{1/6}{2/9} +\RandomZ{\b}{1}{10} +\RandomQ[ne={0,-1}]{\n}[5]{-1}{1} +\RandomZ[ne=0]{\c}{-3}{3} + +\item $\displaystyle\int_{\a}^{\b} \cfmt\c x^{\efmt\n}\,dx = + \RespBoxMath{\c((\b)^(\n+1)-(\a)^(\n+1))/(\n+1)}{3}{.0001}{[0,2]}$\hfill + \CorrAnsButton{rEval(\c((\b)^(\n+1)-(\a)^(\n+1))/(\n+1))}*{rngCorrAnsButton}\kern1bp\sqTallyBox + +\RandomZ{\a}{1}{6} +\RandomZ{\b}{\a*}{8} +\RandomZ{\n}{1}{5} +\RandomZ[ne=0]{\c}{-3}{3} + +\item $\displaystyle\int_{\a}^{\b} \cfmt\c x^{\efmt\n}\,dx = + \RespBoxMath{\c((\b)^(\n+1)-(\a)^(\n+1))/(\n+1)}{3}{.0001}{[0,2]}$\hfill + \CorrAnsButton{rFrac(rEval(\c ( (\b)^(\n+1)-(\a)^(\n+1)))/rEval(\n+1))}*{rngCorrAnsButton}\kern1bp\sqTallyBox + +\RandomZ{\a}{1}{5} +\RandomZ{\b}{\a*}{10} +\RandomQ[ne={0,-1}]{\n}{-3}{2/3} +\RandomZ[ne=0]{\c}{-3}{3} + +\item $\displaystyle\int_{\a}^{\b} \cfmt\c x^{\efmt\n}\,dx = + \RespBoxMath{\c((\b)^(\n+1)-(\a)^(\n+1))/(\n+1)}{3}{.0001}{[0,2]}$\hfill + \CorrAnsButton{rEval(\c((\b)^(\n+1)-(\a)^(\n+1))/(\n+1))}*{rngCorrAnsButton}\kern1bp\sqTallyBox + +\RandomQ{\a}{1/4}{2/3} +\RandomQ{\b}{\a*}{7/6} +\RandomQ[ne={0,-1}]{\n}{-3}{2/3} +\RandomZ[ne=0]{\c}{-3}{3} + +\item $\displaystyle\int_{\a}^{\b} \cfmt\c x^{\efmt\n}\,dx = + \RespBoxMath{\c((\b)^(\n+1)-(\a)^(\n+1))/(\n+1)}{3}{.0001}{[0,2]}$\hfill + \CorrAnsButton{rEval(\c((\b)^(\n+1)-(\a)^(\n+1))/(\n+1))}*{rngCorrAnsButton}\kern1bp\sqTallyBox + +\begin{eqComments} +This next problem was created from random lists of values using \cs{RandomL}. +\end{eqComments} + +\RandomL{\c}{1/6,1/4,1/6,1/2} +\RandomL{\a}{1,2,3,4,5,6} +\ifnum\a=1 + \def\strAns{sin(PI/\dOf\c)} +\else + \def\strAns{(1/\a)(sin(\a*PI/\dOf\c))} +\fi + +\item $\displaystyle\int_0^{\pi/\dOf\c} \cos(\cfmt\a x) \,dx = + \RespBoxMath{(1/\a)(sin(\a*PI/\dOf\c))}{3}{.0001}{[0,2]}$\hfill + \CorrAnsButton{rEval(\strAns)}*{rngCorrAnsButton\RNGprintf{\%.4f}}\kern1bp\sqTallyBox + + +\newpage +\begin{eqComments}[Indefinite Integration]\end{eqComments} + +\RandomQ{\a}{1/6}{3/2} +\RandomQ{\b}{1/6}{3/2} +\RandomZ{\c}{1}{3} + +\item $\displaystyle\int \cds\a x^2 + \ds\b x + \c\,dx = + \RespBoxMath{(\a/3)x^3+(\b/2) x^2 + \c x}{3}{.0001}{[0,2]}$\hfill + \CorrAnsButton{(rFrac(rEval(\nOf\a)/rEval(3*\dOf\a))) x^3 + + (rFrac(rEval(\nOf\b)/rEval(2*\dOf\b))) x^2 + + \c x + C}*{rngCorrAnsButton}\kern1bp\sqTallyBox + +\RandomQ{\a}{1/3}{3} +\RandomQ{\b}{1/6}{3/2} +\RandomZ{\c}{1}{3} + +\item $\displaystyle\int \cds\a x^2 + \ds\b x + \c\,dx = + \RespBoxMath{(\a/3)x^3+(\b/2) x^2 + \c x}{3}{.0001}{[0,2]}$\hfill + \CorrAnsButton{(rFrac(rEval(\nOf\a)/rEval(3*\dOf\a))) x^3 + + (rFrac(rEval(\nOf\b)/rEval(2*\dOf\b))) x^2 + + \c x + C}*{rngCorrAnsButton}\kern1bp\sqTallyBox + +\newpage +\begin{eqComments}[Differentiation]\end{eqComments} + +\RandomQ[ne=0]{\c}[4]{-2}{2} +\RandomQ[ne=0]{\n}[1]{-3}{2} + +\item $\displaystyle \frac{d}{dx} \cds\c x^{\efmt\n} = + \ifnum\nOf\n=\dOf\n + \RespBoxMath{\c}{3}{.0001}{[0,2]}$\hfill + \CorrAnsButton{rFrac(\nOf\c/\dOf\c)}*{rngCorrAnsButton}% + \else + \RespBoxMath{\c*\n*x^(\n-1)}{3}{.0001}{[0,2]}$\hfill + \CorrAnsButton{rFrac(rEval(\nOf\c*\nOf\n)/rEval(\dOf\c*\dOf\n)) + x^(rFrac(rEval(\nOf\n-\dOf\n)/\dOf\n))}*{rngCorrAnsButton}% + \fi + \kern1bp\sqTallyBox + +\begin{eqComments} +This next problem uses a random sign, defined by \cs{RandomS}. +\end{eqComments} + +\RandomQ{\c}[4]{2}{3}\RandomS{\s} +\RandomQ[ne=0]{\n}[2]{-3}{2} + +\item $\displaystyle \frac{d}{dx} \cfmt\s\ds\c x^{\efmt\n} = + \ifnum\nOf\n=\dOf\n + \RespBoxMath{\s\c}{3}{.0001}{[0,2]}$\hfill + \CorrAnsButton{\s\nOf\c/\dOf\c}*{rngCorrAnsButton}% + \else + \RespBoxMath{\s\c*\n*x^(\n-1)}{3}{.0001}{[0,2]}$\hfill + \CorrAnsButton{rFrac(rEval(\s\nOf\c*\nOf\n)/rEval(\dOf\c*\dOf\n)) + x^(rFrac(rEval(\nOf\n-\dOf\n)/\dOf\n))}*{rngCorrAnsButton}% + \fi + \kern1bp\sqTallyBox + + +\RandomQ[ne=0]{\c}[4]{-2}{5} +\RandomQ{\n}[4]{2}{5} + +\item $\displaystyle \frac{d}{dx} \ds\c x^{\efmt\n} = + \ifnum\nOf\n=\dOf\n + \RespBoxMath{\c}{3}{.0001}{[0,2]}$\hfill + \CorrAnsButton{\nOf\c/\dOf\c}*{rngCorrAnsButton}% + \else + \RespBoxMath{\c*\n*x^(\n-1)}{3}{.0001}{[0,2]}$\hfill + \CorrAnsButton{rFrac(rEval(\nOf\c*\nOf\n)/rEval(\dOf\c*\dOf\n)) + x^(rFrac(rEval(\nOf\n-\dOf\n)/\dOf\n))}*{rngCorrAnsButton}% + \fi + \kern1bp\sqTallyBox + +\newpage + +\begin{eqComments}[Analytic Geometry]\end{eqComments} + +\RandomZ{\a}{-10}{9} +\RandomZ{\b}{-10}{9} +\RandomZ{\c}{\a*}{10} +\RandomZ{\d}{\b*}{10} +\defineDepQJS{\m}{\d - \b}{\c - \a}{rFrac(rEval(\nOf\m)/rEval(\dOf\m))} +\defineDepQJS{\yIntercept}{\b - \a*\m}{1}{rFrac((rEval( \b * \dOf\m - \a*\nOf\m ))/(rEval(\dOf\m)))} + + +\item Let $P(\,\a, \b\,)$ be a point and $Q(\,\c, \d\,)$ be a point. Find the equation of the line that + passes through $P$ and $Q$.\par\kern3pt + \RespBoxMath{y = \m*x + \yIntercept }(xy){3}{.0001}{[0,2]x[0,2]}*{ProcRespEq}\hfill + \CorrAnsButton{y = \js\m\space x + \js\yIntercept}*{rngCorrAnsButton}% + \kern1bp\sqTallyBox + +\RandomZ{\a}{-10}{9} +\RandomZ{\b}{-10}{9} +\RandomZ{\c}{\a*}{10} +\RandomZ{\d}{\b*}{10} +\defineDepQJS{\m}{\d - \b}{\c - \a}{rFrac(rEval(\nOf\m)/rEval(\dOf\m))} +\defineDepQJS{\yIntercept}{\b - \a*\m}{1}{rFrac((rEval( \b * \dOf\m - \a*\nOf\m ))/(rEval(\dOf\m)))} + +\item Let $P(\,\a, \b\,)$ be a point and $Q(\,\c, \d\,)$ be a point. Find the equation of the line that + passes through $P$ and $Q$.\par\kern3pt + \RespBoxMath{y = \m*x + (\b - \a*\m) }(xy){3}{.0001}{[0,2]x[0,2]}*{ProcRespEq}\hfill + \CorrAnsButton{y = \js\m\space x + \js\yIntercept}*{rngCorrAnsButton}% + \kern1bp\sqTallyBox + +\end{questions} +\end{shortquiz} +\begin{flushright} +\sqClearButton\kern1bp\sqTallyTotal +\end{flushright} +\end{document} diff --git a/texmf-dist/doc/latex/renditions/README b/texmf-dist/doc/latex/renditions/README new file mode 100644 index 00000000..c6830289 --- /dev/null +++ b/texmf-dist/doc/latex/renditions/README @@ -0,0 +1,22 @@ +The renditions package +Dated: 02/05/10 + +Using the renditions package, you can create many versions, or renditions, of content from the same source file. + +This is a short package sets up comment environments, called renditions. These renditions can be included or excluded according to the value of the rendition option. The basic options of this package are max and rendition, + + \usepackage[max=4,rendition=3]{renditions} + +In the above example, max=4 declares that there are 4 renditions in the document, the option rendition=3 causes the package to include rendition3, and to exclude all the others rendition1, rendition2, and rendition4. + +The renditions package is a stand-alone package, but it was designed for use with the AeB Builder utility. + +The package requires the comment package. + +Now, I simply must get back to my retirement. + +Dr. D. P. Story +www.acrotex.net +dpstory@uakron.edu +dpstory@acrotex.net +02/05/10 diff --git a/texmf-dist/doc/latex/renditions/renditions.pdf b/texmf-dist/doc/latex/renditions/renditions.pdf new file mode 100644 index 00000000..b9f2b423 Binary files /dev/null and b/texmf-dist/doc/latex/renditions/renditions.pdf differ diff --git a/texmf-dist/doc/latex/richtext/README.md b/texmf-dist/doc/latex/richtext/README.md new file mode 100644 index 00000000..dadde345 --- /dev/null +++ b/texmf-dist/doc/latex/richtext/README.md @@ -0,0 +1,14 @@ +The richtext Package +Author: D. P. Story +Dated: 2016/10/03 + +The richtext package is used to create rich text strings that can, in turn, +be inserted into the RV (and V) keys of text field. Currently, only the eforms +package supports the RV key. + +Now, I simply must get back to my retirement. + +D. P. Story +www.acrotex.net +dpstory@uakron.edu +dpstory@acrotex.net diff --git a/texmf-dist/doc/latex/richtext/examples/richtext_tst.tex b/texmf-dist/doc/latex/richtext/examples/richtext_tst.tex new file mode 100644 index 00000000..0f84e599 --- /dev/null +++ b/texmf-dist/doc/latex/richtext/examples/richtext_tst.tex @@ -0,0 +1,58 @@ +\documentclass[12pt]{article} +\usepackage[designiii,forcolorpaper]{web} +\usepackage{eforms} +\usepackage{richtext} + +\let\uif\textsf +\let\app\textsf +\let\pkg\textsf + +\convertcolorspec{named}{webbrown}{HTML}{\htmlWebBrown} + +\parindent0pt \parskip6pt + +\begin{document} + +A single line of \textit{rich text}, one paragraph. + +\rtpara{para1}{A single line of \it{rich text}.} +\textField[\Ff{\FfRichText} \DS{\useDefaultDS}% +\RV{\useRV{para1}}\V{\useV{para1}}]{rtFld1}{3in}{16bp} + +Single paragraph field but with multiple lines of text. Height allows roughly +4 lines of text. + +\rtpara{para1}{\span{ulstyle=2wul,style=bold}{Single paragraph field but with multiple lines of text.} +Height allows roughly 4 lines of text. Let's have more text so we get another line wrap.} +\textField[\Ff{\FfRichText}\Ff{\FfMultiline}\DS{\useDefaultDS} +\RV{\useRV{para1}}\V{\useV{para1}}]{rtFld2}{3in}{16bp*4} + +Multiple paragraph field with multiple lines of text. + +\rtpara[indent=first]{para1}{Now is the time for + \span{style=strikeit,color=ff0000}{\it{\bf{J\374rgen}}} and all good men to + come to the aid of \it{their} \bf{country}. Now is the time for + \span{style=italic}{all good} women to do the same. +} +\rtpara[indent=first]{para2}{This is a second paragraph. I hope we can agree + on what to do next.} +\rtpara[halign=right]{para3}{\span{url=http://www.acrotex.net}{AcroTeX.Net}} + +\setDefaultStyle{myDS}{font={Helvetica,sans-serif},color=\htmlWebBrown} + + +\setRVVContent{myContent} +{ + {para1} + {para2} + {skipline} + {skipline} + {para3} +} + +\textField[\Ff{\FfRichText}\Ff{\FfMultiline} +\DS{\useDS{myDS}}%\DS{\useDefaultDS}% +\RV{\useRVContent{myContent}}\V{\useVContent{myContent}}]{rtFld3}{3in}{16\baselineskip} + +\end{document} + diff --git a/texmf-dist/doc/latex/richtext/richtextman.pdf b/texmf-dist/doc/latex/richtext/richtextman.pdf new file mode 100644 index 00000000..c11f86d5 Binary files /dev/null and b/texmf-dist/doc/latex/richtext/richtextman.pdf differ diff --git a/texmf-dist/doc/latex/yt4pdf/README.md b/texmf-dist/doc/latex/yt4pdf/README.md new file mode 100644 index 00000000..5d140014 --- /dev/null +++ b/texmf-dist/doc/latex/yt4pdf/README.md @@ -0,0 +1,21 @@ +The yt4pdf package +Dated: 2016/10/04 + +The yt4pdf package uses the rmannot package to embed a special SWF file to +play the YouTube videos. There is a complete set of buttons that come with +the package to control the video: play, pause, stop loading, rewind, load +a video by its YouTube video ID, and a button to view a video on the +YouTube web site. Adobe Acrobat 9 or later is required to author a +document; only Adobe Reader 9 is need to view the created yt4pdf document. + +The SWF file for playing the YouTube videos was developed by UVSAR +(http://www.uvsar.com/pdftube/) and is based on the YouTube chromeless +player and the YouTube ActionScript 3.0 Player API Reference +(http://code.google.com/apis/youtube/flash_api_reference.html) + +Now, I simply must get back to my retirement. + +Dr. D. P. Story +www.acrotex.net +dpstory@uakron.edu +dpstory@acrotex.net -- cgit v1.2.3