queueing/0000755000175000017500000000000013635377242012274 5ustar morenomorenoqueueing/DESCRIPTION0000644000175000017500000000170613635377222014004 0ustar morenomorenoName: queueing Version: 1.2.7 Date: 2020-03-21 Author: Moreno Marzolla Maintainer: Moreno Marzolla Title: Octave package for Queueing Networks and Markov chains analysis Description: The queueing package provides functions for queueing networks and Markov chains analysis. This package can be used to compute steady-state performance measures for open, closed and mixed networks with single or multiple job classes. Mean Value Analysis (MVA), convolution, and various bounding techniques are implemented. Furthermore, several transient and steady-state performance measures for Markov chains can be computed, such as state occupancy probabilities, mean time to absorption, time-averaged sojourn times and so forth. Discrete- and continuous-time Markov chains are supported. Categories: Misc Depends: octave (>= 4.0.0) Autoload: no License: GPLv3+ Url: http://www.moreno.marzolla.name/software/queueing/ queueing/COPYING0000644000175000017500000010451313570046274013327 0ustar morenomoreno GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . queueing/inst/0000755000175000017500000000000013635377242013251 5ustar morenomorenoqueueing/inst/qnmix.m0000644000175000017500000002120713570046274014561 0ustar morenomoreno## Copyright (C) 2008, 2009, 2010, 2011, 2012, 2016, 2018 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qnmix (@var{lambda}, @var{N}, @var{S}, @var{V}, @var{m}) ## ## @cindex Mean Value Analysys (MVA) ## @cindex mixed network ## ## Mean Value Analysis for mixed queueing networks. The network ## consists of @math{K} service centers (single-server or delay ## centers) and @math{C} independent customer chains. Both open and ## closed chains are possible. @var{lambda} is the vector of per-chain ## arrival rates (open classes); @var{N} is the vector of populations ## for closed chains. ## ## Class switching is @strong{not} allowed. Each customer class ## @emph{must} correspond to an independent chain. ## ## If the network is made of open or closed classes only, then this ## function calls @code{qnom} or @code{qncmmva} respectively, and ## prints a warning message. ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{lambda}(c) ## @itemx @var{N}(c) ## For each customer chain @math{c}: ## ## @itemize ## ## @item if @math{c} is a closed chain, then @code{@var{N}(c)>0} is the ## number of class @math{c} requests and @code{@var{lambda}(c)} must be ## zero; ## ## @item If @math{c} is an open chain, ## @code{@var{lambda}(c)>0} is the arrival rate of class @math{c} ## requests and @code{@var{N}(c)} must be zero; ## ## @end itemize ## ## @noindent In other words, for each class @math{c} the following must hold: ## ## @example ## (@var{lambda}(c)>0 && @var{N}(c)==0) || (@var{lambda}(c)==0 && @var{N}(c)>0) ## @end example ## ## @item @var{S}(c,k) ## mean class @math{c} service time at center @math{k}, ## @code{@var{S}(c,k) @geq{} 0}. For FCFS nodes, service times must be ## class-independent. ## ## @item @var{V}(c,k) ## average number of visits of class @math{c} customers to center ## @math{k} (@code{@var{V}(c,k) @geq{} 0}). ## ## @item @var{m}(k) ## number of servers at center @math{k}. Only single-server ## (@code{@var{m}(k)==1}) or IS (Infinite Server) nodes ## (@code{@var{m}(k)<1}) are supported. If omitted, each center is ## assumed to be of type @math{M/M/1}-FCFS. Queueing discipline for ## single-server nodes can be FCFS, PS or LCFS-PR. ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{U}(c,k) ## class @math{c} utilization at center @math{k}. ## ## @item @var{R}(c,k) ## class @math{c} response time at center @math{k}. ## ## @item @var{Q}(c,k) ## average number of class @math{c} requests at center @math{k}. ## ## @item @var{X}(c,k) ## class @math{c} throughput at center @math{k}. ## ## @end table ## ## @strong{REFERENCES} ## ## @itemize ## @item ## Edward D. Lazowska, John Zahorjan, G. Scott Graham, and Kenneth C. ## Sevcik, @cite{Quantitative System Performance: Computer System ## Analysis Using Queueing Network Models}, Prentice Hall, ## 1984. @url{http://www.cs.washington.edu/homes/lazowska/qsp/}. In ## particular, see section 7.4.3 ("Mixed Model Solution Techniques"). ## Note that in this function we compute the mean response time @math{R} ## instead of the mean residence time as in the reference. ## ## @item ## Herb Schwetman, @cite{Implementing the Mean Value Algorithm for the ## Solution of Queueing Network Models}, Technical Report ## @uref{http://docs.lib.purdue.edu/cstech/286/, CSD-TR-355}, Department ## of Computer Sciences, Purdue University, revised Feb 15, 1982. ## @end itemize ## ## @seealso{qncmmva, qncm} ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function [U R Q X] = qnmix( lambda, N, S, V, m ) if ( nargin < 4 || nargin > 5 ) print_usage(); endif isvector(lambda) || ... error( "lambda must be a vector" ); lambda = lambda(:)'; isvector(N) || ... error( "N must be a vector" ); N = N(:)'; size_equal(lambda,N) || ... error( "lambda and N must be of equal length" ); ( !any( lambda>0 & N>0 ) ) || ... error("A class cannot be open and closed at the same time. Check lambda and N" ); ( all( lambda>0 | N>0 ) ) || ... error( "A class cannot be neither open nor closed. Check lambda and N" ); size_equal(S,V) || ... error( "S and V must have the same size" ); C = length(lambda); # number of classes K = columns(S); # number of service centers rows(S) == C || ... error( "S must have %d rows", C ); if ( nargin < 5 ) m = ones(1,K); else isvector( m ) || ... error( "m must be a vector" ); m = m(:)'; size_equal(lambda,m) || ... error( "lambda and m must be of equal length" ); endif all( m<=1 ) || ... error( "This function supports single-server and delay centers only. Check m" ); if ( !any(lambda>0) ) warning( "qnmix(): There are no open classes. Using qncmmva()" ); [U R Q X] = qncmmva( N, S, V, m ); return; endif if ( !any(N>0) ) warning( "qnmix(): There are no closed classes. Using qnom()" ); [U R Q X] = qnom( lambda, S, V, m ); return; endif D = S.*V; # service demands op = find( lambda>0 ); # indexes of open networks cl = find( N>0 ); # indexes of closed networks ## Initialize results U = R = Q = X = zeros(C,K); U(op,:) = diag( lambda(op) )* D(op,:); # U(c,:) = lambda(c)*D(c,:); Uo = sum(U,1); # Total utilization for open classes on service center k ## Build closed model to solve Ncl = N(cl); Scl = S; for c=cl Scl(c,:) = Scl(c,:) ./ (1-Uo); endfor Scl = Scl(cl,:); # select only rows for closed classes Vcl = V(cl,:); [Ucl Rcl Qcl Xcl] = qncmmva(Ncl, Scl, Vcl, m ); ## Results for closed classes X(cl,:) = Xcl; Q(cl,:) = Qcl; R(cl,:) = Rcl; U(cl,:) = X(cl,:) .* D(cl,:); ## Results for open classes Qc = sum(Q(cl,:),1); i_single=find(m==1); i_multi=find(m<1); for c=op R(c,i_single) = S(c,i_single).*(1+Qc) ./ (1-Uo); # This is the Response time, _not_ the residence time R(c,i_multi) = S(c,i_multi); endfor Q(op,:) = (diag(lambda(op))*V(op,:)).*R(op,:); # Q(c,k) = lambda(c)*V(c,k)*R(c,k) ## The following is needed to avoid division by zero idx = false(size(X)); idx(op,:) = ( S(op,:)>0 & V(op,:)>0 ); X(idx) = U(idx) ./ S(idx); endfunction %!test %! lambda = [1 0 0]; %! N = [1 1 1]; %! S = V = [1 1 1; 1 1 1; 1 1 1]; %! fail( "qnmix( lambda, N, S, V)", "same time"); %! N = [0 0 1]; %! fail( "qnmix( lambda, N, S, V)", "open nor closed" ); %! N = [0 1 2]; %! m = [ 1 1 2 ]; %! fail( "qnmix( lambda, N, S, V, m)", "single-server and delay" ); %! S = V = [1 1 1; 1 1 1]; %! fail( "qnmix( lambda, N, S, V)", "rows" ); %!test %! # Example p. 148 Zahorjan et al. %! lambda = [1 1/2 0 0]; %! N = [0 0 1 1]; %! V = [1 1; 1 1; 1 1; 1 1]; %! S = [1/4 1/6; 1/2 1; 1/2 1; 1 4/3]; %! [U R Q X] = qnmix(lambda, N, S, V ); %! assert( Q(3,1), 4/19, 1e-4 ); %! assert( Q(3,2), 15/19, 1e-4 ); %! assert( Q(4,1), 5/19, 1e-4 ); %! assert( Q(4,2), 14/19, 1e-4 ); %! assert( Q, R.*X, 1e-5 ); # Little's Law %!test %! # Example 8.6 p. 345 Bolch et al. %! lambda = [0.5 0.25 0 0]; %! N = [0 0 1 1]; %! V = [2 1; 2.5 1.5; 1 0.5; 1 0.4]; %! S = [0.4 0.6; 0.8 1.6; 0.3 0.5; 0.5 0.8]; %! [U R Q X] = qnmix( lambda, N, S, V ); %! assert( U([1 2],:), [0.4 0.3; 0.5 0.6], 1e-3 ); %! assert( R([3 4],:), [4.829 6.951; 7.727 11.636], 1e-3 ); %! assert( Q([3 4],:), [0.582 0.418; 0.624 0.376], 1e-3 ); %! assert( Q([1 2],:), [8.822 5.383; 11.028 10.766], 1e-3 ); #FIXME %! assert( R([1 2],:), [8.822 10.766; 17.645 28.710], 1e-3 ); %! assert( X(3,1)/V(3,1), 0.120, 1e-3 ); %! assert( X(4,1)/V(4,1), 0.081, 1e-3 ); %! assert( Q, R.*X, 1e-5 ); # Little's Law %!test %! ## example figure 10 p. 26 Schwetman, "Implementing the Mean Value %! ## Analysis for the Solution of Queueing Network Models", Technical %! ## Report CSD-TR-355, feb 15, 1982, Purdue University. %! S = [.25 0; .25 .10]; %! V = [1 0; 1 1]; %! lambda = [1 0]; %! N = [0 3]; %! [U R Q X] = qnmix( lambda, N, S, V ); %! assert( U(1,1), .25, 1e-3 ); %! assert( X(1,1), 1.0, 1e-3 ); %! assert( [R(1,1) R(2,1) R(2,2)], [1.201 0.885 0.135], 1e-3 ); %! assert( Q, R.*X, 1e-5 ); # Little's Law queueing/inst/qnom.m0000644000175000017500000002621613570046274014404 0ustar morenomoreno## Copyright (C) 2008, 2009, 2010, 2011, 2012, 2013, 2016, 2018 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qnom (@var{lambda}, @var{S}, @var{V}) ## @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qnom (@var{lambda}, @var{S}, @var{V}, @var{m}) ## @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qnom (@var{lambda}, @var{S}, @var{P}) ## @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qnom (@var{lambda}, @var{S}, @var{P}, @var{m}) ## ## @cindex open network, multiple classes ## @cindex multiclass network, open ## ## Exact analysis of open, multiple-class BCMP networks. The network can ## be made of @emph{single-server} queueing centers (FCFS, LCFS-PR or ## PS) or delay centers (IS). This function assumes a network with ## @math{K} service centers and @math{C} customer classes. ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{lambda}(c) ## If this function is invoked as @code{qnom(lambda, S, V, @dots{})}, ## then @code{@var{lambda}(c)} is the external arrival rate of class ## @math{c} customers (@code{@var{lambda}(c) @geq{} 0}). If this ## function is invoked as @code{qnom(lambda, S, P, @dots{})}, then ## @code{@var{lambda}(c,k)} is the external arrival rate of class ## @math{c} customers at center @math{k} (@code{@var{lambda}(c,k) ## @geq{} 0}). ## ## @item @var{S}(c,k) ## mean service time of class @math{c} customers on the service center ## @math{k} (@code{@var{S}(c,k)>0}). For FCFS nodes, mean service ## times must be class-independent. ## ## @item @var{V}(c,k) ## visit ratio of class @math{c} customers to service center @math{k} ## (@code{@var{V}(c,k) @geq{} 0 }). @strong{If you pass this argument, ## class switching is not allowed} ## ## @item @var{P}(r,i,s,j) ## probability that a class @math{r} job completing service at center ## @math{i} is routed to center @math{j} as a class @math{s} job. ## @strong{If you pass argument @var{P}, class switching is allowed}; ## however, all servers must be fixed-rate or infinite-server nodes ## (@code{@var{m}(k) @leq{} 1} for all @math{k}). ## ## @item @var{m}(k) ## number of servers at center @math{k}. If @code{@var{m}(k) < 1}, ## enter @math{k} is a delay center (IS); otherwise it is a regular ## queueing center with @code{@var{m}(k)} servers. Default is ## @code{@var{m}(k) = 1} for all @math{k}. ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{U}(c,k) ## If @math{k} is a queueing center, then @code{@var{U}(c,k)} is the ## class @math{c} utilization of center @math{k}. If @math{k} is an IS ## node, then @code{@var{U}(c,k)} is the class @math{c} @emph{traffic ## intensity} defined as @code{@var{X}(c,k)*@var{S}(c,k)}. ## ## @item @var{R}(c,k) ## class @math{c} response time at center @math{k}. The system ## response time for class @math{c} requests can be computed as ## @code{dot(@var{R}, @var{V}, 2)}. ## ## @item @var{Q}(c,k) ## average number of class @math{c} requests at center @math{k}. The ## average number of class @math{c} requests in the system @var{Qc} ## can be computed as @code{Qc = sum(@var{Q}, 2)} ## ## @item @var{X}(c,k) ## class @math{c} throughput at center @math{k}. ## ## @end table ## ## @strong{NOTES} ## ## If the function call specifies the visit ratios @var{V}, ## class switching is @strong{not} allowed. If the function call ## specifies the routing probability matrix @var{P}, then class ## switching @strong{is} allowed; however, all nodes are ## restricted to be fixed rate servers or delay centers: ## multiple-server and general load-dependent centers are not ## supported. Note that the meaning of parameter @var{lambda} is ## different from one case to the other (see below). ## ## @strong{REFERENCES} ## ## @itemize ## @item ## Edward D. Lazowska, John Zahorjan, G. Scott Graham, and Kenneth C. ## Sevcik, @cite{Quantitative System Performance: Computer System ## Analysis Using Queueing Network Models}, Prentice Hall, ## 1984. @url{http://www.cs.washington.edu/homes/lazowska/qsp/}. In ## particular, see section 7.4.1 ("Open Model Solution Techniques"). ## @end itemize ## ## @seealso{qnopen,qnos,qnomvisits} ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function [U R Q X] = qnom( varargin ) if ( nargin < 2 || nargin > 4 ) print_usage(); endif if ( nargin == 2 || ndims(varargin{3}) == 2 ) [err lambda S V m] = qnomchkparam( varargin{:} ); else lambda = varargin{1}; ( ndims(lambda) == 2 && all( lambda(:) >= 0 ) ) || ... error( "lambda must be >= 0" ); [C,K] = size(lambda); S = varargin{2}; ( ndims(S) == 2 && size(S) == [C,K] ) || ... error( "S size mismatch (should be [%d,%d])", C, K ); P = varargin{3}; ( ndims(P) == 4 && size(P) == [C,K,C,K] ) || ... error( "P size mismatch (should be %dx%dx%dx%d)",C,K,C,K ); V = qnomvisits(P,lambda); if ( nargin < 4 ) m = ones(1,K); else m = varargin{4}; isvector(m) || ... error( "m must be a vector" ); m = m(:)'; # make m a row vector length(m) == K || ... error( "m size mismatch (should be %d, is %d)", K, length(m) ); all(m<=1) || ... error( "IF you use parameter P, m must be <= 1"); endif lambda = sum(lambda,2); # lambda(c) is the overall class c arrival rate endif [C K] = size(S); U = R = Q = X = zeros(C,K); ## NOTE; Zahorjan et al. define the class c throughput at center k as ## X(c,k) = lambda(c) * V(c,k). However, this assumes a definition of ## V(c,k) that is different from what is returned by the qnomvisits() ## function. The queueing package defines V(c,k) as the class c visit ## _ratio_ at center k (see the documentation of the queueing package ## to see the formal definition of V(c,k) as the solution of a linear ## system of equations), while Zahorjan et al. define V(c,k) as the ## _number of visits_ at center k. If you want to try the examples ## on Zahorjan with this function, you need to scale V(c,k) ## as lambda / lambda(c) * V(c,k). X = sum(lambda)*V; # X(c,k) = lambda*V(c,k); ## If there are M/M/k servers with k>=1, compute the maximum ## processing capacity m(m<1) = -1; # avoid division by zero in next line rho = X .* S * diag( 1 ./ m ); # rho(c,k) = X(c,k) * S(x,k) / m(k) [Umax kmax] = max( sum(rho,1) ); (Umax < 1) || ... error( "Processing capacity exceeded at center %d", kmax ); ## Compute utilizations (for IS nodes compute also response time and ## queue lenghts) for k=1:K for c=1:C if ( m(k) > 1 ) # M/M/m-FCFS [U(c,k)] = qsmmm( X(c,k), 1/S(c,k), m(k) ); elseif ( m(k) == 1 ) # M/M/1 or -/G/1-PS [U(c,k)] = qsmm1( X(c,k), 1/S(c,k) ); else # -/G/inf [U(c,k) R(c,k) Q(c,k)] = qsmminf( X(c,k), 1/S(c,k) ); endif endfor endfor assert( sum(U,1) < 1 ); # sanity check ## Adjust response times and queue lengths for FCFS queues k_fcfs = find(m>=1); for c=1:C Q(c,k_fcfs) = U(c,k_fcfs) ./ ( 1 - sum(U(:,k_fcfs),1) ); R(c,k_fcfs) = Q(c,k_fcfs) ./ X(c,k_fcfs); # Use Little's law endfor endfunction %!test %! fail( "qnom([1 1], [.9; 1.0])", "exceeded at center 1"); %! fail( "qnom([1 1], [0.9 .9; 0.9 1.0])", "exceeded at center 2"); %! #qnom([1 1], [.9; 1.0],[],2); # should not fail, M/M/2-FCFS %! #qnom([1 1], [.9; 1.0],[],-1); # should not fail, -/G/1-PS %! fail( "qnom(1./[2 3], [1.9 1.9 0.9; 2.9 3.0 2.9])", "exceeded at center 2"); %! #qnom(1./[2 3], [1 1.9 0.9; 0.3 3.0 1.5],[],[1 2 1]); # should not fail %!test %! V = [1 1; 1 1]; %! S = [1 3; 2 4]; %! lambda = [3/19 2/19]; %! [U R Q X] = qnom(lambda, S, diag( lambda / sum(lambda) ) * V ); %! assert( U(1,1), 3/19, 1e-6 ); %! assert( U(2,1), 4/19, 1e-6 ); %! assert( R(1,1), 19/12, 1e-6 ); %! assert( R(1,2), 57/2, 1e-6 ); %! assert( Q(1,1), .25, 1e-6 ); %! assert( Q, R.*X, 1e-5 ); # Little's Law %!test %! # example p. 138 Zahorjan et al. %! V = [ 10 9; 5 4]; %! S = [ 1/10 1/3; 2/5 1]; %! lambda = [3/19 2/19]; %! [U R Q X] = qnom(lambda, S, diag( lambda / sum(lambda) ) * V ); %! assert( X(1,1), 1.58, 1e-2 ); %! assert( U(1,1), .158, 1e-3 ); %! assert( R(1,1), .158, 1e-3 ); # modified from the original example, as the reference above considers R as the residence time, not the response time %! assert( Q(1,1), .25, 1e-2 ); %! assert( Q, R.*X, 1e-5 ); # Little's Law %!test %! # example 7.7 p. 304 Bolch et al. Please note that the book uses the %! # notation P(i,r,j,s) (i,j are service centers, r,s are job %! # classes) while the queueing package uses P(r,i,s,j) %! P = zeros(2,3,2,3); %! lambda = S = zeros(2,3); %! P(1,1,1,2) = 0.4; %! P(1,1,1,3) = 0.3; %! P(1,2,1,1) = 0.6; %! P(1,2,1,3) = 0.4; %! P(1,3,1,1) = 0.5; %! P(1,3,1,2) = 0.5; %! P(2,1,2,2) = 0.3; %! P(2,1,2,3) = 0.6; %! P(2,2,2,1) = 0.7; %! P(2,2,2,3) = 0.3; %! P(2,3,2,1) = 0.4; %! P(2,3,2,2) = 0.6; %! S(1,1) = 1/8; %! S(1,2) = 1/12; %! S(1,3) = 1/16; %! S(2,1) = 1/24; %! S(2,2) = 1/32; %! S(2,3) = 1/36; %! lambda(1,1) = lambda(2,1) = 1; %! V = qnomvisits(P,lambda); %! assert( V, [ 3.333 2.292 1.917; 10 8.049 8.415] ./ 2, 1e-3); %! [U R Q X] = qnom(sum(lambda,2), S, V); %! assert( sum(U,1), [0.833 0.442 0.354], 1e-3 ); %! # Note: the value of K_22 (corresponding to Q(2,2)) reported in the book %! # is 0.5. However, hand computation using the exact same formulas %! # from the book produces a different value, 0.451 %! assert( Q, [2.5 0.342 0.186; 2.5 0.451 0.362], 1e-3 ); ## Check that the results of qnom_nocs and qnom_cs are the same ## for multiclass networks WITHOUT class switching. %!test %! P = zeros(2,2,2,2); %! P(1,1,1,2) = 0.8; P(1,2,1,1) = 1; %! P(2,1,2,2) = 0.9; P(2,2,2,1) = 1; %! S = zeros(2,2); %! S(1,1) = 1.5; S(1,2) = 1.2; %! S(2,1) = 0.8; S(2,2) = 2.5; %! lambda = zeros(2,2); %! lambda(1,1) = 1/20; %! lambda(2,1) = 1/30; %! [U1 R1 Q1 X1] = qnom(lambda, S, P); # qnom_cs %! [U2 R2 Q2 X2] = qnom(sum(lambda,2), S, qnomvisits(P,lambda)); # qnom_nocs %! assert( U1, U2, 1e-5 ); %! assert( R1, R2, 1e-5 ); %! assert( Q1, Q2, 1e-5 ); %! assert( X1, X2, 1e-5 ); %!demo %! P = zeros(2,2,2,2); %! lambda = zeros(2,2); %! S = zeros(2,2); %! P(1,1,2,1) = P(1,2,2,1) = 0.2; %! P(1,1,2,2) = P(2,2,2,2) = 0.8; %! S(1,1) = S(1,2) = 0.1; %! S(2,1) = S(2,2) = 0.05; %! rr = 1:100; %! Xk = zeros(2,length(rr)); %! for r=rr %! lambda(1,1) = lambda(1,2) = 1/r; %! [U R Q X] = qnom(lambda,S,P); %! Xk(:,r) = sum(X,1)'; %! endfor %! plot(rr,Xk(1,:),";Server 1;","linewidth",2, ... %! rr,Xk(2,:),";Server 2;","linewidth",2); %! legend("boxoff"); %! xlabel("Class 1 interarrival time"); %! ylabel("Throughput"); queueing/inst/dtmcbd.m0000644000175000017500000000715513570046274014670 0ustar morenomoreno## Copyright (C) 2012, 2018 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {@var{P} =} dtmcbd (@var{b}, @var{d}) ## ## @cindex Markov chain, discrete time ## @cindex DTMC ## @cindex discrete time Markov chain ## @cindex birth-death process, DTMC ## ## Returns the transition probability matrix @math{P} for a discrete ## birth-death process over state space @math{@{1, @dots{}, N@}}. ## For each @math{i=1, @dots{}, (N-1)}, ## @code{@var{b}(i)} is the transition probability from state ## @math{i} to @math{(i+1)}, and @code{@var{d}(i)} is the transition ## probability from state @math{(i+1)} to @math{i}. ## ## Matrix @math{\bf P} is defined as: ## ## @tex ## $$ \pmatrix{ (1-\lambda_1) & \lambda_1 & & & & \cr ## \mu_1 & (1 - \mu_1 - \lambda_2) & \lambda_2 & & \cr ## & \mu_2 & (1 - \mu_2 - \lambda_3) & \lambda_3 & & \cr ## \cr ## & & \ddots & \ddots & \ddots & & \cr ## \cr ## & & & \mu_{N-2} & (1 - \mu_{N-2}-\lambda_{N-1}) & \lambda_{N-1} \cr ## & & & & \mu_{N-1} & (1-\mu_{N-1}) } ## $$ ## @end tex ## @ifnottex ## @example ## @group ## / \ ## | 1-b(1) b(1) | ## | d(1) (1-d(1)-b(2)) b(2) | ## | d(2) (1-d(2)-b(3)) b(3) | ## | | ## | ... ... ... | ## | | ## | d(N-2) (1-d(N-2)-b(N-1)) b(N-1) | ## | d(N-1) 1-d(N-1) | ## \ / ## @end group ## @end example ## @end ifnottex ## ## @noindent where @math{\lambda_i} and @math{\mu_i} are the birth and ## death probabilities, respectively. ## ## @seealso{ctmcbd} ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function P = dtmcbd( b, d ) if ( nargin != 2 ) print_usage(); endif ( isvector( b ) && isvector( d ) ) || ... error( "birht and death must be vectors" ); b = b(:); # make b a column vector d = d(:); # make d a column vector size_equal( b, d ) || ... error( "birth and death vectors must have the same length" ); all( b >= 0 ) || ... error( "birth probabilities must be >= 0" ); all( d >= 0 ) || ... error( "death probabilities must be >= 0" ); all( ([b; 0] + [0; d]) <= 1 ) || ... error( "d(i)+b(i+1) must be <= 1"); P = diag( b, 1 ) + diag( d, -1 ); P += diag( 1-sum(P,2) ); endfunction %!test %! birth = [.5 .5 .3]; %! death = [.6 .2 .3]; %! fail("dtmcbd(birth,death)","must be"); %!demo %! birth = [ .2 .3 .4 ]; %! death = [ .1 .2 .3 ]; %! P = dtmcbd( birth, death ); %! disp(P) queueing/inst/dtmcmtta.m0000644000175000017500000001711313612113034015225 0ustar morenomoreno## Copyright (C) 2012, 2014, 2016, 2018, 2019 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {[@var{t} @var{N} @var{B}] =} dtmcmtta (@var{P}) ## @deftypefnx {Function File} {[@var{t} @var{N} @var{B}] =} dtmcmtta (@var{P}, @var{p0}) ## ## @cindex mean time to absorption, DTMC ## @cindex absorption probabilities, DTMC ## @cindex fundamental matrix ## @cindex DTMC ## @cindex discrete time Markov chain ## @cindex Markov chain, discrete time ## ## Compute the expected number of steps before absorption for a ## DTMC with state space @math{@{1, @dots{}, N@}} ## and transition probability matrix @var{P}. ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{P}(i,j) ## @math{N \times N} transition probability matrix. ## @code{@var{P}(i,j)} is the transition probability from state ## @math{i} to state @math{j}. ## ## @item @var{p0}(i) ## Initial state occupancy probabilities (vector of length @math{N}). ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{t} ## @itemx @var{t}(i) ## When called with a single argument, @var{t} is a vector of length ## @math{N} such that @code{@var{t}(i)} is the expected number of steps ## before being absorbed in any absorbing state, starting from state ## @math{i}; if @math{i} is absorbing, @code{@var{t}(i) = 0}. When ## called with two arguments, @var{t} is a scalar, and represents the ## expected number of steps before absorption, starting from the initial ## state occupancy probability @var{p0}. ## ## @item @var{N}(i) ## @itemx @var{N}(i,j) ## When called with a single argument, @var{N} is the @math{N \times N} ## fundamental matrix for @var{P}. @code{@var{N}(i,j)} is the expected ## number of visits to transient state @var{j} before absorption, if the ## system started in transient state @var{i}. The initial state is counted ## if @math{i = j}. When called with two arguments, @var{N} is a vector ## of length @math{N} such that @code{@var{N}(j)} is the expected number ## of visits to transient state @var{j} before absorption, given initial ## state occupancy probability @var{P0}. ## ## @item @var{B}(i) ## @itemx @var{B}(i,j) ## When called with a single argument, @var{B} is a @math{N \times N} ## matrix where @code{@var{B}(i,j)} is the probability of being ## absorbed in state @math{j}, starting from transient state @math{i}; ## if @math{j} is not absorbing, @code{@var{B}(i,j) = 0}; if @math{i} ## is absorbing, @code{@var{B}(i,i) = 1} and @code{@var{B}(i,j) = 0} ## for all @math{i \neq j}. When called with two arguments, @var{B} is ## a vector of length @math{N} where @code{@var{B}(j)} is the ## probability of being absorbed in state @var{j}, given initial state ## occupancy probabilities @var{p0}. ## ## @end table ## ## @strong{REFERENCES} ## ## @itemize ## @item Grinstead, Charles M.; Snell, J. Laurie (July ## 1997). @cite{Introduction to Probability}, Ch. 11: Markov ## Chains. American Mathematical Society. ISBN 978-0821807491. ## @end itemize ## ## @seealso{ctmcmtta} ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function [t N B] = dtmcmtta( P, p0 ) persistent epsilon = 10*eps; if ( nargin < 1 || nargin > 2 ) print_usage(); endif [K err] = dtmcchkP(P); (K>0) || ... error(err); if ( nargin == 2 ) ( isvector(p0) && length(p0) == K && all(p0>=0) && abs(sum(p0)-1.0). ## -*- texinfo -*- ## ## @deftypefn {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qnosaba (@var{lambda}, @var{D}) ## @deftypefnx {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qnosaba (@var{lambda}, @var{S}, @var{V}) ## @deftypefnx {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qnosaba (@var{lambda}, @var{S}, @var{V}, @var{m}) ## ## @cindex bounds, asymptotic ## @cindex open network ## ## Compute Asymptotic Bounds for open, single-class networks with @math{K} service centers. ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{lambda} ## Arrival rate of requests (scalar, @code{@var{lambda} @geq{} 0}). ## ## @item @var{D}(k) ## service demand at center @math{k}. ## (vector of length @math{K}, @code{@var{D}(k) @geq{} 0}). ## ## @item @var{S}(k) ## mean service time at center @math{k}. ## (vector of length @math{K}, @code{@var{S}(k) @geq{} 0}). ## ## @item @var{V}(k) ## mean number of visits to center @math{k}. ## (vector of length @math{K}, @code{@var{V}(k) @geq{} 0}). ## ## @item @var{m}(k) ## number of servers at center @math{k}. ## This function only supports @math{M/M/1} queues, therefore ## @var{m} must be @code{ones(size(S))}. ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{Xl} ## @item @var{Xu} ## Lower and upper bounds on the system throughput. @var{Xl} is ## always set to @math{0} since there can be no lower bound on the ## throughput of open networks (scalar). ## ## @item @var{Rl} ## @item @var{Ru} ## Lower and upper bounds on the system response time. @var{Ru} ## is always set to @code{+inf} since there can be no upper bound on the ## throughput of open networks (scalar). ## ## @end table ## ## @seealso{qnomaba} ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function [X_lower X_upper R_lower R_upper] = qnosaba( varargin ) if ( nargin < 2 || nargin > 4 ) print_usage(); endif [err lambda S V m] = qnoschkparam( varargin{:} ); isempty(err) || error(err); all(m==1) || ... error("this function supports M/M/1 servers only"); D = S .* V; X_lower = 0; X_upper = 1/max(D); R_lower = sum(D); R_upper = +inf; endfunction %!test %! fail( "qnosaba( 0.1, [] )", "vector" ); %! fail( "qnosaba( 0.1, [0 -1])", "nonnegative" ); %! fail( "qnosaba( 0, [1 2] )", "lambda" ); %! fail( "qnosaba( -1, [1 2])", "lambda" ); %! fail( "qnosaba( 1, [1 2 3], [1 2] )", "incompatible size"); %! fail( "qnosaba( 1, [1 2 3], [-1 2 3] )", "nonnegative"); %!test %! [Xl Xu Rl Ru] = qnosaba( 1, [1 1] ); %! assert( Xl, 0 ); %! assert( Ru, +inf ); queueing/inst/qncmvisits.m0000644000175000017500000002223213603663713015624 0ustar morenomoreno## Copyright (C) 2012, 2016, 2020 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {[@var{V} @var{ch}] =} qncmvisits (@var{P}) ## @deftypefnx {Function File} {[@var{V} @var{ch}] =} qncmvisits (@var{P}, @var{r}) ## ## Compute the average number of visits for the nodes of a closed multiclass network with @math{K} service centers and @math{C} customer classes. ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{P}(r,i,s,j) ## probability that a ## class @math{r} request which completed service at center @math{i} is ## routed to center @math{j} as a class @math{s} request. Class switching ## is allowed. ## ## @item @var{r}(c) ## index of class @math{c} reference station, ## @math{r(c) \in @{1, @dots{}, K@}}, @math{1 @leq{} c @leq{} C}. ## The class @math{c} visit count to server @code{@var{r}(c)} ## (@code{@var{V}(c,r(c))}) is conventionally set to 1. The reference ## station serves two purposes: (i) its throughput is assumed to be the ## system throughput, and (ii) a job returning to the reference station ## is assumed to have completed one cycle. Default is to consider ## station 1 as the reference station for all classes. ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{V}(c,i) ## number of visits of class @math{c} requests at center @math{i}. ## ## @item @var{ch}(c) ## chain number that class @math{c} belongs ## to. Different classes can belong to the same chain. Chains are ## numbered sequentially starting from 1 (@math{1, 2, @dots{}}). The ## total number of chains is @code{max(@var{ch})}. ## ## @end table ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function [V chains] = qncmvisits( P, r ) if ( nargin < 1 || nargin > 2 ) print_usage(); endif ndims(P) == 4 || ... error("P must be a 4-dimensional matrix"); [C, K, C2, K2] = size( P ); (K == K2 && C == C2) || ... error( "P must be a C*K*C*K matrix"); if ( nargin < 2) r = ones(1,C); else isvector(r) && length(r) == C || ... error("r must be a vector with %d elements",C); all( r>=1 && r<=K ) || ... error("elements in r must be in the range [1, %d]",K); r = r(:)'; endif ## solve the traffic equations: V(s,j) = sum_r sum_i V(r,i) * ## P(r,i,s,j), for all s,j V(s,r(s)) = 1 for all s. A = reshape(P,[K*C K*C])-eye(K*C); b = zeros(1,K*C); CH = __scc(reshape(P,[C*K C*K])>0); nCH = max(CH); # number of chains CH = reshape(CH,C,K); # CH(c,k) is the chain that class c at center k belongs to chains = zeros(1,C); for k=1:K for c=1:C if ( chains(c) == 0 ) chains(c) = CH(c,k); else ( CH(c,k) == 0 || chains(c) == CH(c,k) ) || ... error("Class %d belongs to different chains",c); endif endfor endfor constraints = zeros(1,nCH); # constraint(cc) = 1 iff we set a constraint for a class belonging to chain cc; we only set one constraint per chain for c=1:C cc = CH(c,r(c)); if ( cc == 0 || constraints(cc) == 0 ) ii = sub2ind([C K],c,r(c)); A(:,ii) = 0; A(ii,ii) = 1; if ( cc > 0 ) ## if r(c) is not an isolated node constraints(cc) = 1; b(ii) = 1; endif endif endfor V = reshape(b/A, C, K); ## Make sure that no negative values appear (sometimes, numerical ## errors produce tiny negative values instead of zeros) V = max(0,V); endfunction %!test %! %! ## Closed, multiclass network %! %! C = 2; K = 3; %! P = zeros(C,K,C,K); %! P(1,1,1,2) = 1; %! P(1,2,1,1) = 1; %! P(2,1,2,3) = 1; %! P(2,3,2,1) = 1; %! V = qncmvisits(P); %! for c=1:C %! for k=1:K %! assert(V(c,k), sum(sum(V .* P(:,:,c,k))), 1e-5); %! endfor %! endfor %!test %! %! ## Test multiclass network. Example from Schwetman (figure 7, page 9 of %! ## http://docs.lib.purdue.edu/cstech/259/ %! ## "Testing network-of-queues software, technical report CSD-TR 330, %! ## Purdue University). %! %! C = 2; K = 4; %! P = zeros(C,K,C,K); %! # class 1 routing %! P(1,1,1,1) = .05; %! P(1,1,1,2) = .45; %! P(1,1,1,3) = .5; %! P(1,2,1,1) = 1; %! P(1,3,1,1) = 1; %! # class 2 routing %! P(2,1,2,1) = .01; %! P(2,1,2,3) = .5; %! P(2,1,2,4) = .49; %! P(2,3,2,1) = 1; %! P(2,4,2,1) = 1; %! V = qncmvisits(P); %! for c=1:C %! for i=1:K %! assert(V(c,i), sum(sum(V .* P(:,:,c,i))), 1e-5); %! endfor %! endfor %!test %! %! ## Network with class switching. %! ## This is the example in figure 9 of %! ## Schwetman, "Implementing the Mean Value Analysis %! ## Algorithm fort the solution of Queueing Network Models", Technical %! ## Report CSD-TR-355, Department of Computer Science, Purdue Univrsity, %! ## Feb 15, 1982, http://docs.lib.purdue.edu/cstech/286/ %! %! C = 2; K = 3; %! S = [.01 .07 .10; ... %! .05 0.7 .10 ]; %! P = zeros(C,K,C,K); %! P(1,1,1,2) = .7; %! P(1,1,1,3) = .2; %! P(1,1,2,1) = .1; %! P(2,1,2,2) = .3; %! P(2,1,2,3) = .5; %! P(2,1,1,1) = .2; %! P(1,2,1,1) = P(1,3,1,1) = 1; %! P(2,2,2,1) = P(2,3,2,1) = 1; %! N = [3 0]; %! V = qncmvisits(P); %! VV = [10 7 2; 5 1.5 2.5]; # result given in Schwetman; our function computes something different, but that's ok since visit counts are actually ratios %! assert( V ./ repmat(V(:,1),1,K), VV ./ repmat(VV(:,1),1,K), 1e-5 ); %!test %! %! ## two disjoint classes: must produce two disjoing chains %! %! C = 2; K = 3; %! P = zeros(C,K,C,K); %! P(1,1,1,2) = 1; %! P(1,2,1,1) = 1; %! P(2,1,2,3) = 1; %! P(2,3,2,1) = 1; %! [nc r] = qncmvisits(P); %! assert( r(1) != r(2) ); %!test %! %! ## two classes, one chain %! %! C = 2; K = 3; %! P = zeros(C,K,C,K); %! P(1,1,1,2) = .5; %! P(1,2,2,1) = 1; %! P(2,1,2,3) = .5; %! P(2,3,1,1) = 1; %! [nc r] = qncmvisits(P); %! assert( r(1) == r(2) ); %!test %! %! ## a "Moebius strip". Note that this configuration is invalid, and %! ## therefore our algorithm must raise an error. This is because this %! ## network has two chains, but both chains contain both classes %! %! C = 2; K = 2; %! P = zeros(C,K,C,K); %! P(1,1,2,2) = 1; %! P(2,2,1,1) = 1; %! P(2,1,1,2) = 1; %! P(1,2,2,1) = 1; %! fail( "qncmvisits(P)", "different"); %!test %! %! ## Network with two classes representing independent chains. %! ## This is example in figure 8 of %! ## Schwetman, "Implementing the Mean Value Analysis %! ## Algorithm fort the solution of Queueing Network Models", Technical %! ## Report CSD-TR-355, Department of Computer Science, Purdue Univrsity, %! ## Feb 15, 1982, http://docs.lib.purdue.edu/cstech/286/ %! %! C = 2; K = 2; %! P = zeros(C,K,C,K); %! P(1,1,1,3) = P(1,3,1,1) = 1; %! P(2,2,2,3) = P(2,3,2,2) = 1; %! V = qncmvisits(P,[1,2]); %! assert( V, [1 0 1; 0 1 1], 1e-5 ); %!test %! C = 2; %! K = 3; %! P = zeros(C,K,C,K); %! P(1,1,1,2) = 1; %! P(1,2,1,3) = 1; %! P(1,3,2,2) = 1; %! P(2,2,1,1) = 1; %! [V ch] = qncmvisits(P); %! assert( ch, [1 1] ); ## The following transition probability matrix is not well formed: note ## that there is an outgoing transition from center 1, class 1 but not ## incoming transition. %!test %! C = 2; %! K = 3; %! P = zeros(C,K,C,K); %! P(1,1,1,2) = 1; %! P(1,2,1,3) = 1; %! P(1,3,2,2) = 1; %! P(2,2,2,1) = 1; %! P(2,1,1,2) = 1; %! [V ch] = qncmvisits(P); %! assert( ch, [1 1] ); ## compute strongly connected components using Kosaraju's algorithm, ## which requires two DFS visits. A better solution would be to use ## Tarjan's algorithm. ## ## In this implementation, an isolated node without self loops will NOT ## belong to any SCC. Although this is not formally correct from the ## graph theoretic point of view, it is necessary to compute chains ## correctly. function s = __scc(G) assert(issquare(G)); N = rows(G); GF = (G>0); GB = (G'>0); s = zeros(N,1); c=1; for n=1:N if (s(n) == 0) fw = __dfs(GF,n); bw = __dfs(GB,n); r = (fw & bw); if (any(r)) s(r) = c++; endif endif endfor endfunction ## Executes a dfs visit on graph G, starting from source node s function v = __dfs(G, s) assert( issquare(G) ); N = rows(G); v = stack = zeros(1,N); ## v(i) == 1 iff node i has been visited q = 1; # first empty slot in queue stack(q++) = s; ## Note: node s is NOT marked as visited; it will be marked as visited ## only if we visit it again. This is necessary to ensure that ## isolated nodes without self loops will not belong to any SCC. while( q>1 ) n = stack(--q); ## explore neighbors of n: all f in G(n,:) such that v(f) == 0 ## The following instruction is equivalent to: ## for f=find(G(n,:)) ## if ( v(f) == 0 ) for f = find ( G(n,:) & (v==0) ) stack(q++) = f; v(f) = 1; endfor endwhile endfunction queueing/inst/qncspb.m0000644000175000017500000001167013570046274014716 0ustar morenomoreno## Copyright (C) 2008, 2009, 2010, 2011, 2012, 2016, 2018 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qncspb (@var{N}, @var{D} ) ## @deftypefnx {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qncspb (@var{N}, @var{S}, @var{V} ) ## @deftypefnx {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qncspb (@var{N}, @var{S}, @var{V}, @var{m} ) ## @deftypefnx {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qncspb (@var{N}, @var{S}, @var{V}, @var{m}, @var{Z} ) ## ## @cindex bounds, PB ## @cindex PB bounds ## @cindex closed network, single class ## ## Compute PB Bounds (C. H. Hsieh and S. Lam, 1987) for single-class, ## closed networks with @math{K} service centers. ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{} ## number of requests in the system (scalar, @code{@var{N} > 0}). ## ## @item @var{D}(k) ## service demand of service center @math{k} (@code{@var{D}(k) @geq{} 0}). ## ## @item @var{S}(k) ## mean service time at center @math{k} (@code{@var{S}(k) @geq{} 0}). ## ## @item @var{V}(k) ## visit ratio to center @math{k} (@code{@var{V}(k) @geq{} 0}). ## ## @item @var{m}(k) ## number of servers at center @math{k}. This function only supports ## @math{M/M/1} queues, therefore @var{m} must be ## @code{ones(size(S))}. ## ## @item @var{Z} ## external delay (think time, @code{@var{Z} @geq{} 0}). Default 0. ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{Xl} ## @itemx @var{Xu} ## Lower and upper bounds on the system throughput. ## ## @item @var{Rl} ## @itemx @var{Ru} ## Lower and upper bounds on the system response time. ## ## @end table ## ## @strong{REFERENCES} ## ## @itemize ## @item ## C. H. Hsieh and S. Lam, @cite{Two classes of performance bounds for ## closed queueing networks}, Performance Evaluation, Vol. 7 Issue 1, ## pp. 3--30, February 1987, DOI ## @uref{http://dx.doi.org/10.1016/0166-5316(87)90054-X, ## 10.1016/0166-5316(87)90054-X}. Also available as ## @uref{ftp://ftp.cs.utexas.edu/pub/techreports/tr85-09.pdf, Technical ## Report TR-85-09}, Department of Computer Science, University of Texas ## at Austin, June 1985 ## @end itemize ## ## This function implements the non-iterative variant described in G. ## Casale, R. R. Muntz, G. Serazzi, @cite{Geometric Bounds: a ## Non-Iterative Analysis Technique for Closed Queueing Networks}, IEEE ## Transactions on Computers, 57(6):780-794, June 2008. ## ## @seealso{qncsaba, qbcsbsb, qncsgb} ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function [X_lower X_upper R_lower R_upper] = qncspb( varargin ) if ( nargin < 2 || nargin > 5 ) print_usage(); endif [err N S V m Z] = qncschkparam( varargin{:} ); isempty(err) || error(err); ( N>0 ) || ... error("N must be positive"); all(m==1) || ... error("qncspb only supports single server nodes"); D = S .* V; D_tot = sum(D); X_max = 1/max(D); X_min = 0; X_lower = N/( Z + D_tot + ... ( sum( D .^ N * (N-1-Z*X_min) ) / sum( D .^ (N-1) ) ) ); X_upper = N/( Z + D_tot + ... ( sum( D .^ 2 * (N-1-Z*X_max) ) / sum( D ) ) ); X_upper = min( X_upper, X_max ); # cap X upper bound to 1/max(D) R_lower = N/X_upper-Z; R_upper = N/X_lower-Z; endfunction %!test %! fail( "qncspb( 1, [] )", "vector" ); %! fail( "qncspb( 1, [0 -1])", "nonnegative" ); %! fail( "qncspb( 0, [1 2] )", "positive" ); %! fail( "qncspb( -1, [1 2])", "nonnegative" ); %! fail( "qncspb( 1, [1 2], [1,1], [2, 2])", "single server" ); %! fail( "qncspb( 1, [1 2], [1,1], [1, 1], -1)", "nonnegative" ); %!# shared test function %!function test_pb( D, expected, Z=0 ) %! for i=1:rows(expected) %! N = expected(i,1); %! [X_lower X_upper] = qncspb(N,D,ones(size(D)),ones(size(D)),Z); %! X_exp_lower = expected(i,2); %! X_exp_upper = expected(i,3); %! assert( [N X_lower X_upper], [N X_exp_lower X_exp_upper], 1e-4 ) %! endfor %!test %! # table IV %! D = [ 0.1 0.1 0.09 0.08 ]; %! # N X_lower X_upper %! expected = [ 2 4.3174 4.3174; ... %! 5 6.6600 6.7297; ... %! 10 8.0219 8.2700; ... %! 20 8.8672 9.3387; ... %! 80 9.6736 10.000 ]; %! test_pb(D, expected); queueing/inst/qnopen.m0000644000175000017500000000427113570046274014727 0ustar morenomoreno## Copyright (C) 2008, 2009, 2010, 2011, 2012 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qnopen (@var{lambda}, @var{S}, @var{V}, @dots{}) ## ## @cindex open network ## ## Compute utilization, response time, average number of requests in the ## system, and throughput for open queueing networks. If @var{lambda} is ## a scalar, the network is considered a single-class QN and is solved ## using @code{qnopensingle}. If @var{lambda} is a vector, the network ## is considered as a multiclass QN and solved using @code{qnopenmulti}. ## ## @seealso{qnos, qnom} ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function [U R Q X] = qnopen( lambda, S, V, varargin ) if ( nargin < 3 ) print_usage(); endif if ( isscalar(lambda) ) [U R Q X] = qnos(lambda, S, V, varargin{:}); else [U R Q X] = qnom(lambda, S, V, varargin{:}); endif endfunction %!test %! # Example 34.1 p. 572 %! lambda = 3; %! V = [16 7 8]; %! S = [0.01 0.02 0.03]; %! [U R Q X] = qnopen( lambda, S, V ); %! assert( R, [0.0192 0.0345 0.107], 1e-2 ); %! assert( U, [0.48 0.42 0.72], 1e-2 ); %!test %! V = [1 1; 1 1]; %! S = [1 3; 2 4]; %! lambda = [3/19 2/19]; %! [U R Q] = qnopen(lambda, S, diag( lambda / sum(lambda) ) * V); %! assert( U(1,1), 3/19, 1e-6 ); %! assert( U(2,1), 4/19, 1e-6 ); %! assert( R(1,1), 19/12, 1e-6 ); %! assert( R(1,2), 57/2, 1e-6 ); %! assert( Q(1,1), .25, 1e-6 ); queueing/inst/qsmg1.m0000644000175000017500000000532013570046274014453 0ustar morenomoreno## Copyright (C) 2009 Dmitry Kolesnikov ## Copyright (C) 2012, 2016 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}, @var{p0}] =} qsmg1 (@var{lambda}, @var{xavg}, @var{x2nd}) ## ## @cindex @math{M/G/1} system ## ## Compute utilization, response time, average number of requests and ## throughput for a @math{M/G/1} system. The service time distribution ## is described by its mean @var{xavg}, and by its second moment ## @var{x2nd}. The computations are based on results from L. Kleinrock, ## @cite{Queuing Systems}, Wiley, Vol 2, and Pollaczek-Khinchine formula. ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{lambda} ## Arrival rate ## ## @item @var{xavg} ## Average service time ## ## @item @var{x2nd} ## Second moment of service time distribution ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{U} ## Service center utilization ## ## @item @var{R} ## Service center response time ## ## @item @var{Q} ## Average number of requests in the system ## ## @item @var{X} ## Service center throughput ## ## @item @var{p0} ## Probability that there is not any request at system ## ## @end table ## ## @var{lambda}, @var{xavg}, @var{t2nd} can be vectors of the ## same size. In this case, the results will be vectors as well. ## ## @seealso{qsmh1} ## ## @end deftypefn ## Author: Dmitry Kolesnikov function [U R Q X p0] = qsmg1(lambda, xavg, x2nd) if ( nargin != 3 ) print_usage(); endif ## bring the parameters to a common size [ err lambda xavg x2nd ] = common_size( lambda, xavg, x2nd ); if ( err ) error( "parameters are of incompatible size" ); endif mu = 1 ./ xavg; rho = lambda ./ mu; #coefficient of variation Cx = (x2nd .- xavg .* xavg) ./ (xavg .* xavg); #PK mean formula(s) Q = rho .+ rho .* rho .* (1 .+ Cx) ./ (2 .* (1 .- rho)); R = xavg .+ xavg .* rho .* (1 .+ Cx) ./ (2 .* (1 .- rho)); p0 = exp(-rho); #General Results #utilization U = rho; X = lambda; endfunction queueing/inst/ctmc.m0000644000175000017500000002216613631666131014356 0ustar morenomoreno## Copyright (C) 2008, 2009, 2010, 2011, 2012, 2016, 2018, 2020 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {@var{p} =} ctmc (@var{Q}) ## @deftypefnx {Function File} {@var{p} =} ctmc (@var{Q}, @var{t}, @var{p0}) ## ## @cindex Markov chain, continuous time ## @cindex continuous time Markov chain ## @cindex Markov chain, state occupancy probabilities ## @cindex stationary probabilities ## @cindex CTMC ## ## Compute stationary or transient state occupancy probabilities for a continuous-time Markov chain. ## ## With a single argument, compute the stationary state occupancy ## probabilities @math{@var{p}(1), @dots{}, @var{p}(N)} for a ## continuous-time Markov chain with finite state space @math{@{1, @dots{}, ## N@}} and @math{N \times N} infinitesimal generator matrix @var{Q}. ## With three arguments, compute the state occupancy probabilities ## @math{@var{p}(1), @dots{}, @var{p}(N)} that the system is in state @math{i} ## at time @var{t}, given initial state occupancy probabilities ## @math{@var{p0}(1), @dots{}, @var{p0}(N)} at time 0. ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{Q}(i,j) ## Infinitesimal generator matrix. @var{Q} is a @math{N \times N} square ## matrix where @code{@var{Q}(i,j)} is the transition rate from state ## @math{i} to state @math{j}, for @math{1 @leq{} i \neq j @leq{} N}. ## @var{Q} must satisfy the property that @math{\sum_{j=1}^N Q_{i, j} = ## 0} ## ## @item @var{t} ## Time at which to compute the transient probability (@math{t @geq{} ## 0}). If omitted, the function computes the steady state occupancy ## probability vector. ## ## @item @var{p0}(i) ## probability that the system is in state @math{i} at time 0. ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{p}(i) ## If this function is invoked with a single argument, @code{@var{p}(i)} ## is the steady-state probability that the system is in state @math{i}, ## @math{i = 1, @dots{}, N}. If this function is invoked with three ## arguments, @code{@var{p}(i)} is the probability that the system is in ## state @math{i} at time @var{t}, given the initial occupancy ## probabilities @var{p0}(1), @dots{}, @var{p0}(N). ## ## @end table ## ## @seealso{dtmc} ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function q = ctmc( Q, t, p0 ) persistent epsilon = 10*eps; if ( nargin != 1 && nargin != 3 ) print_usage(); endif [N err] = ctmcchkQ(Q); ( N>0 ) || ... error(err); if ( nargin == 1 ) # steady-state analysis ## non zero columns nonzero=find( any(abs(Q)>epsilon,1 ) ); if ( length(nonzero) == 0 ) error( "Q is the zero matrix" ); endif normcol = nonzero(1); # normalization condition column ## force probability of unvisited states to zero for i=find( all(abs(Q)=0 ) || ... error("t must be a scalar >= 0"); ( isvector(p0) && length(p0) == N && all(p0>=0) && abs(sum(p0)-1.0). ## -*- texinfo -*- ## ## @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}, @var{G}] =} qncsmva (@var{N}, @var{S}, @var{V}) ## @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}, @var{G}] =} qncsmva (@var{N}, @var{S}, @var{V}, @var{m}) ## @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}, @var{G}] =} qncsmva (@var{N}, @var{S}, @var{V}, @var{m}, @var{Z}) ## ## @cindex Mean Value Analysys (MVA) ## @cindex closed network, single class ## @cindex normalization constant ## ## Analyze closed, single class queueing networks using the exact Mean Value Analysis (MVA) algorithm. ## ## The following queueing disciplines are supported: FCFS, LCFS-PR, PS ## and IS (Infinite Server). This function supports fixed-rate service ## centers or multiple server nodes. For general load-dependent service ## centers, use the function @code{qncsmvald} instead. ## ## Additionally, the normalization constant @math{G(n)}, @math{n=0, ## @dots{}, N} is computed; @math{G(n)} can be used in conjunction with ## the BCMP theorem to compute steady-state probabilities. ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{N} ## Population size (number of requests in the system, @code{@var{N} @geq{} 0}). ## If @code{@var{N} == 0}, this function returns ## @code{@var{U} = @var{R} = @var{Q} = @var{X} = 0} ## ## @item @var{S}(k) ## mean service time at center @math{k} (@code{@var{S}(k) @geq{} 0}). ## ## @item @var{V}(k) ## average number of visits to service center @math{k} (@code{@var{V}(k) @geq{} 0}). ## ## @item @var{Z} ## External delay for customers (@code{@var{Z} @geq{} 0}). Default is 0. ## ## @item @var{m}(k) ## number of servers at center @math{k} (if @var{m} is a scalar, all ## centers have that number of servers). If @code{@var{m}(k) < 1}, ## center @math{k} is a delay center (IS); otherwise it is a regular ## queueing center (FCFS, LCFS-PR or PS) with @code{@var{m}(k)} ## servers. Default is @code{@var{m}(k) = 1} for all @math{k} (each ## service center has a single server). ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{U}(k) ## If @math{k} is a FCFS, LCFS-PR or PS node (@code{@var{m}(k) @geq{} ## 1}), then @code{@var{U}(k)} is the utilization of center @math{k}, ## @math{0 @leq{} U(k) @leq{} 1}. If @math{k} is an IS node ## (@code{@var{m}(k) < 1}), then @code{@var{U}(k)} is the @emph{traffic ## intensity} defined as @code{@var{X}(k)*@var{S}(k)}. In this case the ## value of @code{@var{U}(k)} may be greater than one. ## ## @item @var{R}(k) ## center @math{k} response time. The @emph{Residence Time} at center ## @math{k} is @code{@var{R}(k) * @var{V}(k)}. The system response ## time @var{Rsys} can be computed either as @code{@var{Rsys} = ## @var{N}/@var{Xsys} - Z} or as @code{@var{Rsys} = ## dot(@var{R},@var{V})} ## ## @item @var{Q}(k) ## average number of requests at center @math{k}. The number of ## requests in the system can be computed either as ## @code{sum(@var{Q})}, or using the formula ## @code{@var{N}-@var{Xsys}*@var{Z}}. ## ## @item @var{X}(k) ## center @math{K} throughput. The system throughput @var{Xsys} can be ## computed as @code{@var{Xsys} = @var{X}(1) / @var{V}(1)} ## ## @item @var{G}(n) ## Normalization constants. @code{@var{G}(n+1)} contains the value of ## the normalization constant @math{G(n)}, @math{n=0, @dots{}, N} as ## array indexes in Octave start from 1. @math{G(n)} can be used in ## conjunction with the BCMP theorem to compute steady-state ## probabilities. ## ## @end table ## ## @strong{NOTES} ## ## In presence of load-dependent servers (i.e., if @code{@var{m}(k)>1} ## for some @math{k}), the MVA algorithm is known to be numerically ## unstable. Generally, this issue manifests itself as negative values ## for the response times or utilizations. This is not a problem of ## the @code{queueing} toolbox, but of the MVA algorithm, and has ## currently no known solution. This function prints a warning if ## numerical problems are detected; the warning can be disabled with ## the command @code{warning("off", "qn:numerical-instability")}. ## ## @strong{REFERENCES} ## ## @itemize ## @item ## M. Reiser and S. S. Lavenberg, @cite{Mean-Value Analysis of Closed ## Multichain Queuing Networks}, Journal of the ACM, vol. 27, n. 2, April ## 1980, pp. 313--322. @uref{http://doi.acm.org/10.1145/322186.322195, 10.1145/322186.322195} ## @end itemize ## ## This implementation is described in R. Jain , @cite{The Art of ## Computer Systems Performance Analysis}, Wiley, 1991, p. 577. ## Multi-server nodes are treated according to G. Bolch, S. Greiner, ## H. de Meer and K. Trivedi, @cite{Queueing Networks and Markov Chains: ## Modeling and Performance Evaluation with Computer Science ## Applications}, Wiley, 1998, Section 8.2.1, "Single Class Queueing ## Networks". ## ## @seealso{qncsmvald,qncscmva} ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function [U R Q X G] = qncsmva( varargin ) if ( nargin < 3 || nargin > 5 ) print_usage(); endif [err N S V m Z] = qncschkparam( varargin{:} ); isempty(err) || error(err); K = length(S); # Number of servers U = R = Q = X = zeros( 1, K ); G = zeros(1,N+1); G(1) = 1; if ( N == 0 ) # Trivial case of empty population: just return all zeros return; endif i_single = find( m==1 ); i_multi = find( m>1 ); i_delay = find( m<1 ); ## Initialize results if ( length(i_multi)>0 ) p = zeros( K, max(m)+1 ); # p(i,j+1) is the probability that there are j jobs at server i p(:,1) = 1; endif X_s = 0; # System throughput ## Main MVA loop, iterates over the population size for n=1:N R(i_single) = S(i_single) .* (1 + Q(i_single)); for i=i_multi # I cannot easily vectorize this j=0:m(i)-2; R(i) = S(i) / m(i) * (1+Q(i)+dot( m(i)-j-1, p( i, 1+j ) ) ); endfor R(i_delay) = S(i_delay); R_s = dot( V, R ); # System response time X_s = n / ( Z + R_s ); # System Throughput Q = X_s * ( V .* R ); G(1+n) = G(n) / X_s; ## prepare for next iteration lambda_i = V * X_s; # lambda_i(i) is the node i throughput for i=i_multi j=1:m(i)-1; # range p(i, j+1) = lambda_i(i) .* S(i) ./ min( j,m(i) ) .* p(i,j); p(i,1) = 1 - 1/m(i) * ... (V(i)*S(i)*X_s + dot( m(i)-j, p(i,j+1)) ); endfor endfor X = X_s * V; # Service centers throughput U(i_single) = X(i_single) .* S(i_single); U(i_delay) = X(i_delay) .* S(i_delay); U(i_multi) = X(i_multi) .* S(i_multi) ./ m(i_multi); if ( any(U<0) || any(R<0) ) warning("qn:numerical-instability", "Numerical instability detected. Type 'help qncsmva' for details"); endif endfunction #{ ## This function is slightly faster (and more compact) than the above ## when all servers are single-server or delay centers. Improvements are ## quite small (10%-15% faster, depends on the network size), so at the ## moment it is commented out. function [U R Q X G] = __qncsmva_fast( N, S, V, m, Z ) U = R = Q = X = zeros( 1, length(S) ); X_s = 0; # System throughput G = zeros(1,N+1); G(1) = 1; ## Main MVA loop for n=1:N R = S .* (1+Q.*(m==1)); R_s = dot( V, R ); # System response time X_s = n / ( Z + R_s ); # System Throughput Q = X_s * ( V .* R ); G(1+n) = G(n) / X_s; endfor X = X_s * V; # Service centers throughput U = X .* S; endfunction #} %!test %! fail( "qncsmva()", "Invalid" ); %! fail( "qncsmva( 10, [1 2], [1 2 3] )", "incompatible size" ); %! fail( "qncsmva( 10, [-1 1], [1 1] )", "nonnegative" ); %! fail( "qncsmva( 10.3, [-1 1], [1 1] )", "integer" ); %! fail( "qncsmva( -0.3, [-1 1], [1 1] )", "nonnegative" ); ## Check if networks with only one type of server are handled correctly %!test %! qncsmva(1,1,1,1); %! qncsmva(1,1,1,-1); %! qncsmva(1,1,1,2); %! qncsmva(1,[1 1],[1 1],[-1 -1]); %! qncsmva(1,[1 1],[1 1],[1 1]); %! qncsmva(1,[1 1],[1 1],[2 2]); ## Check degenerate case of N==0 (LI case) %!test %! N = 0; %! S = [1 2 3 4]; %! V = [1 1 1 4]; %! [U R Q X] = qncsmva(N, S, V); %! assert( U, 0*S ); %! assert( R, 0*S ); %! assert( Q, 0*S ); %! assert( X, 0*S ); ## Check degenerate case of N==0 (LD case) %!test %! N = 0; %! S = [1 2 3 4]; %! V = [1 1 1 4]; %! m = [2 3 4 5]; %! [U R Q X] = qncsmva(N, S, V, m); %! assert( U, 0*S ); %! assert( R, 0*S ); %! assert( Q, 0*S ); %! assert( X, 0*S ); %!test %! # Exsample 3.42 p. 577 Jain %! S = [ 0.125 0.3 0.2 ]'; %! V = [ 16 10 5 ]; %! N = 20; %! m = ones(1,3)'; %! Z = 4; %! [U R Q X] = qncsmva(N,S,V,m,Z); %! assert( R, [ .373 4.854 .300 ], 1e-3 ); %! assert( Q, [ 1.991 16.177 0.500 ], 1e-3 ); %! assert( all( U>=0 ) ); %! assert( all( U<=1 ) ); %! assert( Q, R.*X, 1e-5 ); # Little's Law %!test %! # Exsample 3.42 p. 577 Jain %! S = [ 0.125 0.3 0.2 ]; %! V = [ 16 10 5 ]; %! N = 20; %! m = ones(1,3); %! Z = 4; %! [U R Q X] = qncsmva(N,S,V,m,Z); %! assert( R, [ .373 4.854 .300 ], 1e-3 ); %! assert( Q, [ 1.991 16.177 0.500 ], 1e-3 ); %! assert( all( U>=0 ) ); %! assert( all( U<=1 ) ); %! assert( Q, R.*X, 1e-5 ); # Little's Law %!test %! # Example 8.4 p. 333 Bolch et al. %! S = [ .5 .6 .8 1 ]; %! N = 3; %! m = [2 1 1 -1]; %! V = [ 1 .5 .5 1 ]; %! [U R Q X] = qncsmva(N,S,V,m); %! assert( Q, [ 0.624 0.473 0.686 1.217 ], 1e-3 ); %! assert( X, [ 1.218 0.609 0.609 1.218 ], 1e-3 ); %! assert( all(U >= 0 ) ); %! assert( all(U( m>0 ) <= 1 ) ); %! assert( Q, R.*X, 1e-5 ); # Little's Law %!test %! # Example 8.3 p. 331 Bolch et al. %! # This is a single-class network, which however nothing else than %! # a special case of multiclass network %! S = [ 0.02 0.2 0.4 0.6 ]; %! K = 6; %! V = [ 1 0.4 0.2 0.1 ]; %! [U R Q X] = qncsmva(K, S, V); %! assert( U, [ 0.198 0.794 0.794 0.595 ], 1e-3 ); %! assert( R, [ 0.025 0.570 1.140 1.244 ], 1e-3 ); %! assert( Q, [ 0.244 2.261 2.261 1.234 ], 1e-3 ); %! assert( X, [ 9.920 3.968 1.984 0.992 ], 1e-3 ); %!test %! # Check bound analysis %! N = 10; # max population %! for n=1:N %! S = [1 0.8 1.2 0.5]; %! V = [1 2 2 1]; %! [U R Q X] = qncsmva(n, S, V); %! Xs = X(1)/V(1); %! Rs = dot(R,V); %! # Compare with balanced system bounds %! [Xlbsb Xubsb Rlbsb Rubsb] = qncsbsb( n, S .* V ); %! assert( Xlbsb<=Xs ); %! assert( Xubsb>=Xs ); %! assert( Rlbsb<=Rs ); %! assert( Rubsb>=Rs ); %! # Compare with asymptotic bounds %! [Xlab Xuab Rlab Ruab] = qncsaba( n, S .* V ); %! assert( Xlab<=Xs ); %! assert( Xuab>=Xs ); %! assert( Rlab<=Rs ); %! assert( Ruab>=Rs ); %! endfor %!demo %! S = [ 0.125 0.3 0.2 ]; %! V = [ 16 10 5 ]; %! N = 20; %! m = ones(1,3); %! Z = 4; %! [U R Q X] = qncsmva(N,S,V,m,Z); %! X_s = X(1)/V(1); # System throughput %! R_s = dot(R,V); # System response time %! printf("\t Util Qlen RespT Tput\n"); %! printf("\t-------- -------- -------- --------\n"); %! for k=1:length(S) %! printf("Dev%d\t%8.4f %8.4f %8.4f %8.4f\n", k, U(k), Q(k), R(k), X(k) ); %! endfor %! printf("\nSystem\t %8.4f %8.4f %8.4f\n\n", N-X_s*Z, R_s, X_s ); queueing/inst/dtmcexps.m0000644000175000017500000001023113570046274015247 0ustar morenomoreno## Copyright (C) 2012, 2016, 2018 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {@var{L} =} dtmcexps (@var{P}, @var{n}, @var{p0}) ## @deftypefnx {Function File} {@var{L} =} dtmcexps (@var{P}, @var{p0}) ## ## @cindex expected sojourn times, DTMC ## @cindex DTMC ## @cindex discrete time Markov chain ## @cindex Markov chain, discrete time ## ## Compute the expected number of visits to each state during the first ## @var{n} transitions, or until abrosption. ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{P}(i,j) ## @math{N \times N} transition matrix. @code{@var{P}(i,j)} is the ## transition probability from state @math{i} to state @math{j}. ## ## @item @var{n} ## Number of steps during which the expected number of visits are ## computed (@math{@var{n} @geq{} 0}). If @code{@var{n}=0}, returns ## @var{p0}. If @code{@var{n} > 0}, returns the expected number of ## visits after exactly @var{n} transitions. ## ## @item @var{p0}(i) ## Initial state occupancy probabilities; @code{@var{p0}(i)} is ## the probability that the system is in state @math{i} at step 0. ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{L}(i) ## When called with two arguments, @code{@var{L}(i)} is the expected ## number of visits to state @math{i} before absorption. When ## called with three arguments, @code{@var{L}(i)} is the expected number ## of visits to state @math{i} during the first @var{n} transitions. ## ## @end table ## ## @strong{REFERENCES} ## ## @itemize ## @item Grinstead, Charles M.; Snell, J. Laurie (July ## 1997). @cite{Introduction to Probability}, Ch. 11: Markov ## Chains. American Mathematical Society. ISBN 978-0821807491. ## @end itemize ## ## @seealso{ctmcexps} ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function L = dtmcexps ( P, varargin ) persistent epsilon = 10*eps; if ( nargin < 2 || nargin > 3 ) print_usage(); endif [K err] = dtmcchkP(P); (K>0) || ... error(err); if ( nargin == 2 ) p0 = varargin{1}; else n = varargin{1}; p0 = varargin{2}; endif ( isvector(p0) && length(p0) == K && all(p0>=0) && abs(sum(p0)-1.0)=0 || ... error("n must be >= 0"); n = fix(n); L = zeros(sizeof(p0)); ## It is know that ## ## I + P + P^2 + P^3 + ... + P^n = (I-P)^-1 * (I-P^(n+1)) ## ## and therefore we could succintly write ## ## L = p0*inv(eye(K)-P)*(eye(K)-P^(n+1)); ## ## Unfortunatly, the method above is numerically unstable (at least ## for small values of n), so we use the crude approach below. PP = p0; L = zeros(1,K); for p=0:n L += PP; PP *= P; endfor else ## identify transient states tr = find(diag(P) < 1); k = length(tr); # number of transient states if ( k == K ) error("There are no absorbing states"); endif N = zeros(size(P)); tmpN = inv(eye(k) - P(tr,tr)); # matrix N = (I-Q)^-1 N(tr,tr) = tmpN; L = p0*N; endif endfunction %!test %! P = dtmcbd([1 1 1 1], [0 0 0 0]); %! L = dtmcexps(P,[1 0 0 0 0]); %! t = dtmcmtta(P,[1 0 0 0 0]); %! assert( L, [1 1 1 1 0] ); %! assert( sum(L), t ); %!test %! P = dtmcbd(linspace(0.1,0.4,5),linspace(0.4,0.1,5)); %! p0 = [1 0 0 0 0 0]; %! L = dtmcexps(P,0,p0); %! assert( L, p0 ); queueing/inst/qncsmvablo.m0000644000175000017500000001404213570046274015571 0ustar morenomoreno## Copyright (C) 2008, 2009, 2010, 2011, 2012, 2016, 2018 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncsmvablo (@var{N}, @var{S}, @var{M}, @var{P} ) ## ## @cindex queueing network with blocking ## @cindex blocking queueing network ## @cindex closed network, finite capacity ## @cindex MVABLO ## ## Approximate MVA algorithm for closed queueing networks with blocking. ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{N} ## number of requests in the system. @var{N} must be strictly greater ## than zero, and less than the overall network capacity: @code{0 < ## @var{N} < sum(@var{M})}. ## ## @item @var{S}(k) ## average service time on server @math{k} (@code{@var{S}(k) > 0}). ## ## @item @var{M}(k) ## capacity of center @math{k}. The capacity is the maximum number of requests in a service ## center, including the request in service (@code{@var{M}(k) @geq{} 1}). ## ## @item @var{P}(i,j) ## probability that a request which completes ## service at server @math{i} will be transferred to server @math{j}. ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{U}(k) ## center @math{k} utilization. ## ## @item @var{R}(k) ## average response time of service center @math{k}. ## ## @item @var{Q}(k) ## average number of requests in service center @math{k} (including ## the request in service). ## ## @item @var{X}(k) ## center @math{k} throughput. ## ## @end table ## ## @strong{REFERENCES} ## ## @itemize ## @item ## Ian F. Akyildiz, @cite{Mean Value Analysis for Blocking Queueing ## Networks}, IEEE Transactions on Software Engineering, vol. 14, n. 2, ## april 1988, pp. 418--428. @uref{http://dx.doi.org/10.1109/32.4663, 10.1109/32.4663} ## @end itemize ## ## @seealso{qnopen, qnclosed} ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function [U R Q X] = qncsmvablo( K, S, M, P ) ## Note that we use "K" instead of "N" as the number of requests in ## order to be compliant with the paper by Akyildiz describing this ## algorithm. if ( nargin != 4 ) print_usage(); endif ( isscalar(K) && K > 0 ) || ... error( "K must be a positive integer" ); isvector(S) && all(S>0) || ... error ("S must be a vector > 0"); S = S(:)'; # make S a row vector N = length(S); ( isvector(M) && length(M) == N ) || ... error( "M must be a vector with %d elements", N ); all( M >= 1) || ... error( "M must be >= 1"); M = M(:)'; # make M a row vector (K < sum(M)) || ... error( "The population size K=%d exceeds the total system capacity %d", K, sum(M) ); [na err] = dtmcchkP(P); ( na>0 ) || ... error( err ); rows(P) == N || ... error("The number of rows of P must be equal to the length of S"); ## Note: in this implementation we make use of the same notation found ## in Akyildiz's paper cited in the REFERENCES above, with the minor ## exception of using 'v' instead of 'e' as the visit count vector. ## k_bar(i) is the average number of jobs in the i-th server, lambda ## is the network throughput, t_bar(i) is the mean residence time ## (time spent in queue and in service) for requests in the i-th ## service center. ## Initialization k_bar_m1 = zeros(1,N); # k_bar(k-1) BT = zeros(1,N); z = ones(1,N); lambda = 0; ## Computation of the visit counts v = qncsvisits(P); D = S .* v; # Service demand ## Main loop for k=1:K do ## t_bar_i(k) = S(i) *(z_i(k) + k_bar_i(k-1))+BT_i(k) t_bar = S .* ( z + k_bar_m1 ) + BT; lambda = k / dot(v,t_bar); k_bar = t_bar .* v * lambda; if ( any(k_bar>M) ) i = find( k_bar > M, 1 ); z(i) = 0; BT = BT + S(i) * ( v .* P(:,i)' ) / v(i); endif until( all(k_bar<=M) ); k_bar_m1 = k_bar; endfor R = t_bar; X = v * lambda; # Throughputs ## w_bar = t_bar - S - BT; # mean waiting time U = X .* S; Q = X .* R; endfunction %!test %! fail( "qncsmvablo( 10, [1 1], [4 5], [0 1; 1 0] )", "capacity"); %! fail( "qncsmvablo( 6, [1 1], [4 5], [0 1; 1 1] )", "stochastic"); %! fail( "qncsmvablo( 5, [1 1 1], [1 1], [0 1; 1 1] )", "3 elements"); %!test %! # This is the example on section v) p. 422 of the reference paper %! M = [12 10 14]; %! P = [0 1 0; 0 0 1; 1 0 0]; %! S = [1/1 1/2 1/3]; %! K = 27; %! [U R Q X]=qncsmvablo( K, S, M, P ); %! assert( R, [11.80 1.66 14.4], 1e-2 ); %!test %! # This is example 2, i) and ii) p. 424 of the reference paper %! M = [4 5 5]; %! S = [1.5 2 1]; %! P = [0 1 0; 0 0 1; 1 0 0]; %! K = 10; %! [U R Q X]=qncsmvablo( K, S, M, P ); %! assert( R, [6.925 8.061 4.185], 1e-3 ); %! K = 12; %! [U R Q X]=qncsmvablo( K, S, M, P ); %! assert( R, [7.967 9.019 8.011], 1e-3 ); %!test %! # This is example 3, i) and ii) p. 424 of the reference paper %! M = [8 7 6]; %! S = [0.2 1.2 1.4]; %! P = [ 0 0.5 0.5; 1 0 0; 1 0 0 ]; %! K = 10; %! [U R Q X] = qncsmvablo( K, S, M, P ); %! assert( R, [1.674 5.007 7.639], 1e-3 ); %! K = 12; %! [U R Q X] = qncsmvablo( K, S, M, P ); %! assert( R, [2.166 5.372 6.567], 1e-3 ); %!test %! # Network which never blocks, central server model %! M = [50 50 50]; %! S = [1 1/0.8 1/0.4]; %! P = [0 0.7 0.3; 1 0 0; 1 0 0]; %! K = 40; %! [U1 R1 Q1] = qncsmvablo( K, S, M, P ); %! V = qncsvisits(P); %! [U2 R2 Q2] = qncsmva( K, S, V ); %! assert( U1, U2, 1e-5 ); %! assert( R1, R2, 1e-5 ); %! assert( Q1, Q2, 1e-5 ); queueing/inst/qncscmva.m0000644000175000017500000001732013570046274015241 0ustar morenomoreno## Copyright (C) 2011, 2012, 2016, 2018 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncscmva (@var{N}, @var{S}, @var{Sld}, @var{V}) ## @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncscmva (@var{N}, @var{S}, @var{Sld}, @var{V}, @var{Z}) ## ## @cindex conditional MVA (CMVA) ## @cindex Mean Value Analysis, conditional (CMVA) ## @cindex closed network, single class ## @cindex CMVA ## ## Conditional MVA (CMVA) algorithm, a numerically stable variant of ## MVA. This function supports a network of @math{M @geq{} 1} service ## centers and a single delay center. Servers @math{1, @dots{}, (M-1)} ## are load-independent; server @math{M} is load-dependent. ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{N} ## Number of requests in the system, @code{@var{N} @geq{} 0}. If ## @code{@var{N} == 0}, this function returns @code{@var{U} = @var{R} ## = @var{Q} = @var{X} = 0} ## ## @item @var{S}(k) ## mean service time on server @math{k = 1, @dots{}, (M-1)} ## (@code{@var{S}(k) > 0}). If there are no fixed-rate servers, then ## @code{S = []} ## ## @item @var{Sld}(n) ## inverse service rate at server @math{M} (the load-dependent server) ## when there are @math{n} requests, @math{n=1, @dots{}, N}. ## @code{@var{Sld}(n) = } @math{1 / \mu(n)}. ## ## @item @var{V}(k) ## average number of visits to service center @math{k=1, @dots{}, M}, ## where @code{@var{V}(k) @geq{} 0}. @code{@var{V}(1:M-1)} are the ## visit rates to the fixed rate servers; @code{@var{V}(M)} is the ## visit rate to the load dependent server. ## ## @item @var{Z} ## External delay for customers (@code{@var{Z} @geq{} 0}). Default is 0. ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{U}(k) ## center @math{k} utilization (@math{k=1, @dots{}, M}) ## ## @item @var{R}(k) ## response time of center @math{k} (@math{k=1, @dots{}, M}). The ## system response time @var{Rsys} can be computed as @code{@var{Rsys} ## = @var{N}/@var{Xsys} - Z} ## ## @item @var{Q}(k) ## average number of requests at center @math{k} (@math{k=1, @dots{}, M}). ## ## @item @var{X}(k) ## center @math{k} throughput (@math{k=1, @dots{}, M}). ## ## @end table ## ## @strong{REFERENCES} ## ## @itemize ## @item ## G. Casale. @cite{A note on stable flow-equivalent aggregation in ## closed networks}. Queueing Syst. Theory Appl., 60:193–-202, December ## 2008, @uref{http://dx.doi.org/10.1007/s11134-008-9093-6, 10.1007/s11134-008-9093-6} ## @end itemize ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function [U R Q X] = qncscmva( N, S, Sld, V, Z ) ## This is a numerically stable implementation of the MVA algorithm, ## described in G. Casale, A note on stable flow-equivalent aggregation in ## closed networks. Queueing Syst. Theory Appl., 60:193–-202, December ## 2008, http://dx.doi.org/10.1007/s11134-008-9093-6 if ( nargin < 4 || nargin > 5 ) print_usage(); endif isscalar(N) && N >= 0 || ... error("N must be a positive scalar"); (isempty(S) || isvector(S)) || ... error("S must be a vector"); S = S(:)'; # make S a row vector M = length(S)+1; # total number of service centers (excluding the delay center) isvector(Sld) && length(Sld) == N && all(Sld>=0) || ... error("Sld must be a vector with %d elements >= 0", N); Sld = Sld(:)'; # Make Sld a row vector isvector(V) && length(V) == M && all(V>=0) || ... error("V must be a vector with %d elements", M); V = V(:)'; # Make V a row vector ## The reference paper assumes queue M (LD center) as reference. ## Therefore, we need to rescale V V(M) > 0 || ... error("V(M) must be >0"); V = V / V(M); if ( nargin == 5 ) isscalar(Z) && Z>=0 || ... error("Z must be nonnegative"); else Z = 0; endif if ( N == 0 ) U = R = Q = X = zeros(1,M); return; endif ## Di(1+k) = service demand of server k=0,1,...,M-1 (server 0 is the delay center) Di = zeros(1,M); Di(1) = Z; Di(2:M) = S .* V(1:M-1); ## DM(n,t), n=1, ..., N, t=1, ..., N DM = zeros(N,N); mu = 1./Sld; # rate function ## Ri(1+k,:,:) = response time of server k=0,1,...,M Ri = zeros(1+M,N,N); ## Qi(k,1+n,t) = queue length of server k=1,...,M, n=0,1,...,N, t=1,...,N+1 Qi = zeros(M,1+N,N+1); Xs = zeros(N,N); # Xs = system throughput ## Main MVA loop for n=1:N for t=1:(N-n+1) if ( n==1 ) DM(n,t) = 1/mu(t); else # n>=2 DM(n,t) = Xs(n-1,t)/Xs(n-1,t+1)*DM(n-1,t); endif Ri(1+0,n,t) = Di(1+0); i=1:M-1; Ri(1+i,n,t) = Di(1+i).*(1+Qi(i,1+n-1,t))'; Ri(1+M,n,t) = DM(n,t)*(1+Qi(M,1+n-1,t+1)); Xs(n,t) = n/sum(Ri(:,n,t)); i=1:M-1; Qi(i,1+n,t) = Di(1+i) .* Xs(n,t) .* (1+Qi(i,1+n-1,t))'; Qi(M,1+n,t) = DM(n,t) * Xs(n,t) * (1+Qi(M,1+n-1,t+1)); endfor endfor X = Xs(N,1).*V; Q = Qi(1:M,1+N,1)'; ## Note that the result R is the *response time*, while the value ## computed by the reference paper is the *residence time*. The ## response time is equal to the residence time divided by the visit ## ratios. FIXME: This will choke if the visit ratio is zero for some server k R = Ri(2:M+1,N,1)' ./ V; U = [Di(2:M) DM(N,1)] .* X ./ V; endfunction %!test %! N=5; %! S = [1 0.3 0.8 0.9]; %! V = [1 1 1 1]; %! [U1 R1 Q1 X1] = qncscmva( N, S(1:3), repmat(S(4),1,N), V ); %! [U2 R2 Q2 X2] = qncsmva(N, S, V); %! assert( X1, X2, 1e-5 ); %! assert( U1, U2, 1e-5 ); %! assert( R1, R2, 1e-5 ); %! assert( Q1, Q2, 1e-5 ); %!test %! N=5; %! S = [1 1 1 1 1; ... %! 1 1 1 1 1; ... %! 1 1 1 1 1; ... %! 1 1/2 1/3 1/4 1/5]; %! V = [1 1 1 1]; %! [U1 R1 Q1 X1] = qncscmva( N, S(1:3,1), S(4,:), V ); %! [U2 R2 Q2 X2] = qncsmvald(N, S, V); %! assert( U1, U2, 1e-5 ); %! assert( R1, R2, 1e-5 ); %! assert( Q1, Q2, 1e-5 ); %! assert( X1, X2, 1e-5 ); %!test %! N=5; %! S = [1 1 1 1 1; ... %! 1 1 1 1 1; ... %! 1 1 1 1 1; ... %! 1 1/2 1/3 1/4 1/5]; %! V = [1 2 1 1]; %! Z = 3; %! [U1 R1 Q1 X1] = qncscmva( N, S(1:3,1), S(4,:), V, Z ); %! [U2 R2 Q2 X2] = qncsmvald(N, S, V, Z); %! assert( U1, U2, 1e-5 ); %! assert( R1, R2, 1e-5 ); %! assert( Q1, Q2, 1e-5 ); %! assert( X1, X2, 1e-5 ); %!demo %! maxN = 90; # Max population size %! Rmva = Rconv = Rcmva = zeros(1,maxN); # Results %! S = 4; Z = 10; m = 8; %! old = warning("query","qn:numerical-instability"); %! warning("off","qn:numerical-instability"); %! for N=1:maxN %! [U R] = qncsmva(N,S,1,m,Z); # Use MVA %! Rmva(N) = R(1); %! [U R] = qncsconv(N,[S Z],[1 1],[m -1]); # Use Convolution %! Rconv(N) = R(1); %! if ( N > m ) %! Scmva = S ./ min(1:N,m); %! else %! Scmva = S ./ (1:N); %! endif %! [U R] = qncscmva(N,[],Scmva,1,Z); # Use CMVA %! Rcmva(N) = R(1); %! endfor %! warning(old.state,"qn:numerical-instability"); %! plot(1:maxN, Rmva, ";MVA;", ... %! 1:maxN, Rconv, ";Convolution;", ... %! 1:maxN, Rcmva, ";CNVA;", "linewidth",2); %! xlabel("Population size (N)"); %! ylabel("Response Time"); %! ax=axis(); ax(3) = 0; ax(4) = 40; axis(ax); %! legend("location","northwest"); legend("boxoff"); queueing/inst/qsmh1.m0000644000175000017500000000607713570046274014466 0ustar morenomoreno## Copyright (C) 2009 Dmitry Kolesnikov ## Copyright (C) 2012, 2016 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}, @var{p0}] =} qsmh1 (@var{lambda}, @var{mu}, @var{alpha}) ## ## @cindex @math{M/H_m/1} system ## ## Compute utilization, response time, average number of requests and ## throughput for a @math{M/H_m/1} system. In this system, the customer ## service times have hyper-exponential distribution: ## ## @tex ## $$ B(x) = \sum_{j=1}^m \alpha_j(1-e^{-\mu_j x}),\quad x>0 $$ ## @end tex ## ## @ifnottex ## @example ## @group ## ___ m ## \ ## B(x) = > alpha(j) * (1-exp(-mu(j)*x)) x>0 ## /__ ## j=1 ## @end group ## @end example ## @end ifnottex ## ## where @math{\alpha_j} is the probability that the request is served ## at phase @math{j}, in which case the average service rate is ## @math{\mu_j}. After completing service at phase @math{j}, for ## some @math{j}, the request exits the system. ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{lambda} ## Arrival rate ## ## @item @var{mu} ## @code{@var{mu}(j)} is the phase @math{j} service rate. The total ## number of phases @math{m} is @code{length(@var{mu})}. ## ## @item @var{alpha} ## @code{@var{alpha}(j)} is the probability that a request ## is served at phase @math{j}. @var{alpha} must have the same size ## as @var{mu}. ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{U} ## Service center utilization ## ## @item @var{R} ## Service center response time ## ## @item @var{Q} ## Average number of requests in the system ## ## @item @var{X} ## Service center throughput ## ## @end table ## ## @end deftypefn ## Author: Dmitry Kolesnikov function [U R Q X p0] = qsmh1(lambda, mu, alpha) if ( nargin != 3 ) print_usage(); endif if ( size(mu) != size(alpha) ) error( "parameters are of incompatible size" ); endif [n c] = size(mu); if (!is_scalar(lambda) && (n != length(lambda)) ) error( "parameters are of incompatible size" ); endif for i=1:n avg = sum( alpha(i,:) .* (1 ./ mu(i,:)) ); m2nd = sum( alpha(i,:) .* (1 ./ (mu(i,:) .* mu(i,:))) ); if (is_scalar(lambda)) xavg = avg; x2nd = m2nd; else xavg(i) = avg; x2nd(i) = m2nd; endif endfor [U R Q X p0] = qsmg1(lambda, xavg, x2nd); endfunction queueing/inst/ctmctaexps.m0000644000175000017500000001172013570046274015577 0ustar morenomoreno## Copyright (C) 2008, 2009, 2010, 2011, 2012, 2016, 2018 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {@var{M} =} ctmctaexps (@var{Q}, @var{t}, @var{p0}) ## @deftypefnx {Function File} {@var{M} =} ctmctaexps (@var{Q}, @var{p0}) ## ## @cindex Markov chain, continuous time ## @cindex time-alveraged sojourn time, CTMC ## @cindex continuous time Markov chain ## @cindex CTMC ## ## Compute the @emph{time-averaged sojourn time} @code{@var{M}(i)}, ## defined as the fraction of the time interval @math{[0,t]} (or until ## absorption) spent in state @math{i}, assuming that the state ## occupancy probabilities at time 0 are @var{p}. ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{Q}(i,j) ## Infinitesimal generator matrix. @code{@var{Q}(i,j)} is the transition ## rate from state @math{i} to state @math{j}, ## @math{1 @leq{} i,j @leq{} N}, @math{i \neq j}. The ## matrix @var{Q} must also satisfy the condition @math{\sum_{j=1}^N Q_{i,j} = 0} ## ## @item @var{t} ## Time. If omitted, the results are computed until absorption. ## ## @item @var{p0}(i) ## initial state occupancy probabilities. @code{@var{p0}(i)} is the ## probability that the system is in state @math{i} at time 0, @math{i ## = 1, @dots{}, N} ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{M}(i) ## When called with three arguments, @code{@var{M}(i)} is the expected ## fraction of the interval @math{[0,t]} spent in state @math{i} ## assuming that the state occupancy probability at time zero is ## @var{p}. When called with two arguments, @code{@var{M}(i)} is the ## expected fraction of time until absorption spent in state @math{i}; ## in this case the mean time to absorption is @code{sum(@var{M})}. ## ## @end table ## ## @seealso{ctmcexps} ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function M = ctmctaexps( Q, varargin ) persistent epsilon = 10*eps; if ( nargin < 2 || nargin > 3 ) print_usage(); endif L = ctmcexps(Q,varargin{:}); M = L ./ repmat(sum(L,2),1,columns(L)); endfunction %!test %! Q = [ 0 0.1 0 0; ... %! 0.9 0 0.1 0; ... %! 0 0.9 0 0.1; ... %! 0 0 0 0 ]; %! Q -= diag( sum(Q,2) ); %! M = ctmctaexps(Q, [1 0 0 0]); %! assert( sum(M), 1, 10*eps ); %!demo %! lambda = 0.5; %! N = 4; %! birth = lambda*linspace(1,N-1,N-1); %! death = zeros(1,N-1); %! Q = diag(birth,1)+diag(death,-1); %! Q -= diag(sum(Q,2)); %! t = linspace(1e-5,30,100); %! p = zeros(1,N); p(1)=1; %! M = zeros(length(t),N); %! for i=1:length(t) %! M(i,:) = ctmctaexps(Q,t(i),p); %! endfor %! clf; %! plot(t, M(:,1), ";State 1;", "linewidth", 2, ... %! t, M(:,2), ";State 2;", "linewidth", 2, ... %! t, M(:,3), ";State 3;", "linewidth", 2, ... %! t, M(:,4), ";State 4 (absorbing);", "linewidth", 2 ); %! legend("location","east"); legend("boxoff"); %! xlabel("Time"); %! ylabel("Time-averaged Expected sojourn time"); ## This example is from: David I. Heimann, Nitin Mittal, Kishor S. Trivedi, ## "Availability and Reliability Modeling for Computer Systems", sep 1989, ## section 2.5 %!demo %! sec = 1; %! min = sec*60; %! hour = 60*min; %! day = 24*hour; %! %! # state space enumeration {2, RC, RB, 1, 0} %! a = 1/(10*min); # 1/a = duration of reboot (10 min) %! b = 1/(30*sec); # 1/b = reconfiguration time (30 sec) %! g = 1/(5000*hour); # 1/g = processor MTTF (5000 hours) %! d = 1/(4*hour); # 1/d = processor MTTR (4 hours) %! c = 0.9; # coverage %! Q = [ -2*g 2*c*g 2*(1-c)*g 0 0; ... %! 0 -b 0 b 0; ... %! 0 0 -a a 0; ... %! d 0 0 -(g+d) g; ... %! 0 0 0 d -d]; %! p = ctmc(Q); %! printf("System availability: %f\n",p(1)+p(4)); %! TT = linspace(0,1*day,101); %! PP = ctmctaexps(Q,TT,[1 0 0 0 0]); %! A = At = Abart = zeros(size(TT)); %! A(:) = p(1) + p(4); # steady-state availability %! for n=1:length(TT) %! t = TT(n); %! p = ctmc(Q,t,[1 0 0 0 0]); %! At(n) = p(1) + p(4); # instantaneous availability %! Abart(n) = PP(n,1) + PP(n,4); # interval base availability %! endfor %! clf; %! semilogy(TT,A,";Steady-state;", ... %! TT,At,";Instantaneous;", ... %! TT,Abart,";Interval base;"); %! ax = axis(); %! ax(3) = 1-1e-5; %! axis(ax); %! legend("boxoff"); queueing/inst/qnmarkov.m0000644000175000017500000002756713570046274015302 0ustar morenomoreno## Copyright (C) 2008, 2009, 2010, 2011, 2012, 2016, 2018, 2019 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qnmarkov (@var{lambda}, @var{S}, @var{C}, @var{P}) ## @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qnmarkov (@var{lambda}, @var{S}, @var{C}, @var{P}, @var{m}) ## @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qnmarkov (@var{N}, @var{S}, @var{C}, @var{P}) ## @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qnmarkov (@var{N}, @var{S}, @var{C}, @var{P}, @var{m}) ## ## @cindex closed network, single class ## @cindex open network, single class ## @cindex closed network, finite capacity ## @cindex blocking queueing network ## @cindex RS blocking ## ## Compute utilization, response time, average queue length and ## throughput for open or closed queueing networks with finite capacity ## and a single class of requests. ## Blocking type is Repetitive-Service (RS). This function explicitly ## generates and solve the underlying Markov chain, and thus might ## require a large amount of memory. ## ## More specifically, networks which can me analyzed by this ## function have the following properties: ## ## @itemize @bullet ## ## @item There exists only a single class of customers. ## ## @item The network has @math{K} service centers. Center ## @math{k \in @{1, @dots{}, K@}} ## has @math{m_k > 0} servers, and has a total (finite) capacity of ## @math{C_k \geq m_k} which includes both buffer space and servers. ## The buffer space at service center @math{k} is therefore ## @math{C_k - m_k}. ## ## @item The network can be open, with external arrival rate to ## center @math{k} equal to ## @math{\lambda_k}, or closed with fixed ## population size @math{N}. For closed networks, the population size ## @math{N} must be strictly less than the network capacity: ## @math{N < \sum_{k=1}^K C_k}. ## ## @item Average service times are load-independent. ## ## @item @math{P_{i, j}} is the probability that requests completing ## execution at center @math{i} are transferred to ## center @math{j}, @math{i \neq j}. For open networks, a request may leave the system ## from any node @math{i} with probability @math{1-\sum_{j=1}^K P_{i, j}}. ## ## @item Blocking type is Repetitive-Service (RS). Service ## center @math{j} is @emph{saturated} if the number of requests is equal ## to its capacity @math{C_j}. Under the RS blocking discipline, ## a request completing service at center @math{i} which is being ## transferred to a saturated server @math{j} is put back at the end of ## the queue of @math{i} and will receive service again. Center @math{i} ## then processes the next request in queue. External arrivals to a ## saturated servers are dropped. ## ## @end itemize ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{lambda}(k) ## @itemx @var{N} ## If the first argument is a vector @var{lambda}, it is considered to be ## the external arrival rate @code{@var{lambda}(k) @geq{} 0} to service center ## @math{k} of an open network. If the first argument is a scalar, it is ## considered as the population size @var{N} of a closed network; in this case ## @var{N} must be strictly ## less than the network capacity: @code{@var{N} < sum(@var{C})}. ## ## @item @var{S}(k) ## average service time at service center @math{k} ## ## @item @var{C}(k) ## capacity of service center @math{k}. The capacity includes both ## the buffer and server space @code{@var{m}(k)}. Thus the buffer space is ## @code{@var{C}(k)-@var{m}(k)}. ## ## @item @var{P}(i,j) ## transition probability from service center ## @math{i} to service center @math{j}. ## ## @item @var{m}(k) ## number of servers at service center ## @math{k}. Note that @code{@var{m}(k) @geq{} @var{C}(k)} for each @var{k}. ## If @var{m} is omitted, all service centers are assumed to have a ## single server (@code{@var{m}(k) = 1} for all @math{k}). ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{U}(k) ## center @math{k} utilization. ## ## @item @var{R}(k) ## response time on service center @math{k}. ## ## @item @var{Q}(k) ## average number of customers in the ## service center @math{k}, @emph{including} the request in service. ## ## @item @var{X}(k) ## throughput of service center @math{k}. ## ## @end table ## ## @strong{NOTES} ## ## The space complexity of this implementation is @math{O(\prod_{k=1}^K (C_k + 1)^2)}. The time complexity is dominated by ## the time needed to solve a linear system with @math{\prod_{k=1}^K (C_k + 1)} unknowns. ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function [U R Q X] = qnmarkov( x, S, C, P, m ) if ( nargin < 4 || nargin > 5 ) print_usage(); endif isvector(S) || error( "S must be a vector" ); K = length(S); # number of service centers if ( nargin < 5 ) m = ones(1,K); else size_equal(m,S) || error( "m must have the same langth as S" ); endif ( [K,K] == size(P) && all( all(P>=0)) && all(sum(P,2) <= 1)) || ... error( "P must be SxS and nonnegative" ); if ( isscalar(x) ) is_open = false; N = x; # closed network ( N < sum(C) ) || ... error( "The population size exceeds the network capacity" ); all( abs(sum(P,2)-1) < 1000*eps ) || ... error( "P for closed networks cannot have exit nodes" ); else is_open = true; lambda = x; # open network size_equal(lambda, S ) || ... error( "lambda must have the same langth as S" ); endif ( all(m > 0) && all(m <= C) ) || ... error( "Capacities C must be greater or equal than m" ); q_size = prod( C+1 ); # number of states of the system ## The infinitesimal generator matrix Q_markovmight be sparse, so it ## would be appropriate to represent it as a sparse matrix. In this ## case the UMFPACK library must be installed to solve the @math{{\bf ## A}x=b} sparse system. Since I'm not sure everyone built Octave with ## sparse matrix support, I leave Q_markov as a full matrix here. Q_markov = zeros( q_size, q_size ); cur_state = zeros(1, K); if ( is_open ) valid_populations = linspace(0, sum(C), sum(C)+1); else valid_populations = [ N ]; endif ## exit_prob(i) is the probability that a job leaves the system from node i exit_prob = 1 - sum(P,2); for n=valid_populations pop_mix = qncmpopmix( n, C ); for cur_state=pop_mix' # for each feasible configuration with n customers cur_idx = sub2cell( C, cur_state ); for i=1:K if ( is_open ) # for open networks only ## handle new external arrival to center i if ( lambda(i) > 0 && cur_state(i) < C(i) ) next_state = cur_state; next_state(i) += 1; next_idx = sub2cell( C, next_state ); Q_markov( cur_idx, next_idx ) = lambda(i); endif ## handle requests that leave the system from center i ## exit_prob = 1-sum(P(i,:)); if ( exit_prob(i) > 0 && cur_state(i) > 0 ) next_state = cur_state; next_state(i) -= 1; next_idx = sub2cell( C, next_state ); Q_markov( cur_idx, next_idx ) = min(m(i), cur_state(i))*exit_prob(i)/S(i); endif endif # end open networks only ## for both open and closed networks for j=[1:(i-1) (i+1):K] ## check whether a job can move from server i to server j!=i if ( cur_state(i) > 0 && cur_state(j) < C(j) && P(i,j) > 0 ) next_state = cur_state; next_state(i) -= 1; next_state(j) += 1; next_idx = sub2cell( C, next_state ); Q_markov( cur_idx, next_idx ) = min(m(i), cur_state(i))*P(i,j)/S(i); endif endfor endfor endfor endfor ##spy( Q_markov ); ## complete the diagonal elements of the matrix Q d = sum(Q_markov,2); Q_markov -= diag( d ); ## Solve the ctmc prob = ctmc( Q_markov ); ## Compute the average queue length p = zeros(K, max(C)+1); # p(k,i+1) = prob that there are i requests at service center k for n=valid_populations pop_mix = qncmpopmix( n, C ); for cur_state=pop_mix' cur_idx = sub2cell( C, cur_state ); for k=1:K i=cur_state(k); p(k,i+1) += prob(cur_idx); endfor endfor endfor ## We can now compute all the performance measures U = R = Q = X = zeros(1,K); for k=1:K j = [0:m(k)-1]; U(k) = 1 - sum( ( m(k) - j ) ./ m(k) .* p(k,1+j) ); ##X(k) = U(k)/S(k); j = [1:C(k)]; Q(k) = sum( j .* p(k,1+j) ); ##R(k) = Q(k)/X(k); endfor X = U./S; R = Q./X; endfunction %!test %! S = [5 2.5]; %! P = [0 1; 1 0]; %! C = [3 3]; %! m = [1 1]; %! [U R Q X] = qnmarkov( 3, S, C, P, m ); %! assert( U, [0.9333 0.4667], 1e-4 ); %! assert( X, [0.1867 0.1867], 1e-4 ); %! assert( R, [12.1429 3.9286], 1e-4 ); ## Example 7.5 p. 292 Bolch et al. %!test %! S = [1/0.8 1/0.6 1/0.4]; %! P = [0.6 0.3 0.1; 0.2 0.3 0.5; 0.4 0.1 0.5]; %! C = [3 3 3]; %! [U R Q X] = qnmarkov( 3, S, C, P ); %! assert( U, [0.543 0.386 0.797], 1e-3 ); %! assert( Q, [0.873 0.541 1.585], 1e-3 ); ## Example 10.19, p. 551 Bolch et al. %!xtest %! S = [2 0.9]; %! C = [7 5]; %! P = [0 1; 1 0]; %! [U R Q X] = qnmarkov( 10, S, C, P ); %! assert( Q, [6.73 3.27], 1e-3 ); ## Example 8.1 p. 317 Bolch et al. %!test %! S = [1/0.8 1/0.6 1/0.4]; %! P = [(1-0.667-0.2) 0.667 0.2; 1 0 0; 1 0 0]; %! m = [2 3 1]; %! C = [3 3 3]; %! [U R Q X] = qnmarkov( 3, S, C, P, m ); %! assert( U, [0.590 0.350 0.473], 1e-3 ); %! assert( Q(1:2), [1.290 1.050], 1e-3 ); ## This is a simple test of an open QN with fixed capacity queues. There ## are two service centers, S1 and S2. C(1) = 2 and C(2) = 1. Transition ## probability from S1 to S2 is 1. Transition probability from S2 to S1 ## is p. %!test %! p = 0.5; # transition prob. from S2 to S1 %! mu = [1 2]; # Service rates %! C = [2 1]; # Capacities %! lambda = [0.5 0]; # arrival rate at service center 1 %! %! PP = [ 0 1; p 0 ]; %! [U R Q X] = qnmarkov( lambda, 1./mu, C, PP ); %! ## Now we generate explicitly the infinitesimal generator matrix %! ## of the underlying MC. %! ## 00 01 10 11 20 21 %! QQ = [ 0 0 lambda(1) 0 0 0; ... ## 00 %! mu(2)*(1-p) 0 mu(2)*p lambda(1) 0 0; ... ## 01 %! 0 mu(1) 0 0 lambda(1) 0; ... ## 10 %! 0 0 mu(2)*(1-p) 0 mu(2)*p lambda(1); ... ## 11 %! 0 0 0 mu(1) 0 0; ... ## 20 %! 0 0 0 0 mu(2)*(1-p) 0 ]; ## 21 %! ## Complete matrix %! sum_el = sum(QQ,2); %! QQ -= diag(sum_el); %! q = ctmc(QQ); %! ## Compare results %! assert( U(1), 1-sum(q([1, 2])), 1e-5 ); %! assert( U(2), 1-sum(q([1,3,5])), 1e-5 ); ## This is a closed network with fixed-capacity queues. The population ## size N is such that blocking never occurs, so this model can be ## analyzed using the conventional MVA algorithm. MVA and qnmarkov() ## must produce the same results. %!test %! P = [0 0.5 0.5; 1 0 0; 1 0 0]; %! C = [6 6 6]; %! S = [1 0.8 1.8]; %! N = 6; %! [U1 R1 Q1 X1] = qnclosed( N, S, qncsvisits(P) ); %! [U2 R2 Q2 X2] = qnmarkov( N, S, C, P ); %! assert( U1, U2, 1e-6 ); %! assert( R1, R2, 1e-6 ); %! assert( Q1, Q2, 1e-6 ); %! assert( X1, X2, 1e-6 ); ## return a linear index corresponding to index idx on a ## multidimensional vector of dimension(s) dim function i = sub2cell( dim, idx ) idx_cell = num2cell( idx+1 ); i = sub2ind( dim+1, idx_cell{:} ); endfunction queueing/inst/ctmcfpt.m0000644000175000017500000000620513570046274015066 0ustar morenomoreno## Copyright (C) 2011, 2012, 2016, 2018 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {@var{M} =} ctmcfpt (@var{Q}) ## @deftypefnx {Function File} {@var{m} =} ctmcfpt (@var{Q}, @var{i}, @var{j}) ## ## @cindex first passage times, CTMC ## @cindex CTMC ## @cindex continuous time Markov chain ## @cindex Markov chain, continuous time ## ## Compute mean first passage times for an irreducible continuous-time ## Markov chain. ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{Q}(i,j) ## Infinitesimal generator matrix. @var{Q} is a @math{N \times N} ## square matrix where @code{@var{Q}(i,j)} is the transition rate from ## state @math{i} to state @math{j}, for @math{1 @leq{} i, j @leq{} N}, ## @math{i \neq j}. Transition rates must be nonnegative, and ## @math{\sum_{j=1}^N Q_{i,j} = 0} ## ## @item @var{i} ## Initial state. ## ## @item @var{j} ## Destination state. ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{M}(i,j) ## average time before state ## @var{j} is visited for the first time, starting from state @var{i}. ## We let @code{@var{M}(i,i) = 0}. ## ## @item m ## @var{m} is the average time before state @var{j} is visited for the first ## time, starting from state @var{i}. ## ## @end table ## ## @seealso{ctmcmtta} ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function result = ctmcfpt( Q, i, j ) persistent epsilon = 10*eps; if ( nargin != 1 && nargin != 3 ) print_usage(); endif [N err] = ctmcchkQ(Q); (N>0) || ... error(err); if ( nargin == 1 ) result = zeros(N,N); for j=1:N QQ = Q; QQ(j,:) = 0; # make state j absorbing for i=1:N p0 = zeros(1,N); p0(i) = 1; result(i,j) = ctmcmtta(QQ,p0); endfor endfor else (isscalar(i) && i>=1 && j<=N) || error("i must be an integer in the range 1..%d", N); (isvector(j) && all(j>=1) && all(j<=N)) || error("j must be an integer or vector with elements in 1..%d", N); j = j(:)'; # make j a row vector Q(j,:) = 0; # make state(s) j absorbing p0 = zeros(1,N); p0(i) = 1; result = ctmcmtta(Q,p0); endif endfunction %!demo %! Q = [ -1.0 0.9 0.1; ... %! 0.1 -1.0 0.9; ... %! 0.9 0.1 -1.0 ]; %! M = ctmcfpt(Q) %! m = ctmcfpt(Q,1,3) %!test %! N = 10; %! Q = reshape(1:N^2,N,N); %! Q(1:N+1:end) = 0; %! Q -= diag(sum(Q,2)); %! M = ctmcfpt(Q); %! assert( all(diag(M) < 10*eps) ); queueing/inst/engset.m0000644000175000017500000000740513570046274014716 0ustar morenomoreno## Copyright (C) 2014, 2019 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {@var{B} =} engset (@var{A}, @var{m}, @var{n}) ## ## @cindex Engset loss formula ## ## Evaluate the Engset loss formula. ## ## The Engset formula computes the blocking probability ## @math{P_b(A,m,n)} for a system with a finite population of @math{n} ## users, @math{m} identical servers, no queue, individual service ## rate @math{\mu}, individual arrival rate @math{\lambda} (i.e., the ## time until a user tries to request service is exponentially ## distributed with mean @math{1/\lambda}), and offered load ## @math{A=\lambda/\mu}. ## ## @tex ## @math{P_b(A, m, n)} is defined for @math{n > m} as: ## ## $$ ## P_b(A, m, n) = {{\displaystyle{A^m {n \choose m}}} \over {\displaystyle{\sum_{k=0}^m A^k {n \choose k}}}} ## $$ ## ## and is 0 if @math{n @leq{} m}. ## @end tex ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{A} ## Offered load, defined as @math{A = \lambda / \mu} where ## @math{\lambda} is the mean arrival rate and @math{\mu} the mean ## service rate of each individual server (real, @math{A > 0}). ## ## @item @var{m} ## Number of identical servers (integer, @math{m @geq{} 1}). Default @math{m = 1} ## ## @item @var{n} ## Number of requests (integer, @math{n @geq{} 1}). Default @math{n = 1} ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{B} ## The value @math{P_b(A, m, n)} ## ## @end table ## ## @var{A}, @var{m} or @math{n} can be vectors, and in this case, the ## results will be vectors as well. ## ## @strong{REFERENCES} ## ## @itemize ## @item ## G. Zeng, @cite{Two common properties of the Erlang-B function, Erlang-C function, and Engset blocking function}, Mathematical and Computer Modelling, Volume 37, Issues 12-13, June 2003, Pages 1287-1296 ## @end itemize ## ## @seealso{erlangb, erlangc} ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function P = engset(A, m, n) if ( nargin < 1 || nargin > 3 ) print_usage(); endif ( isnumeric(A) && all( A(:) > 0 ) ) || error("A must be positive"); if ( nargin < 2 ) m = 1; else ( isnumeric(m) && all( fix(m(:)) == m(:)) && all( m(:) > 0 ) ) || error("m must be a positive integer"); endif if ( nargin < 3 ) n = 1; else ( isnumeric(n) && all( fix(n(:)) == n(:)) && all( n(:) > 0 ) ) || error("n must be a positive integer"); endif [err A m n] = common_size(A, m, n); if ( err ) error("parameters are not of common size"); endif P = arrayfun( @__engset_compute, A, m, n); endfunction ## Compute P_b(A,m,n) recursively function P = __engset_compute(A, m, n) if ( m >= n ) P = 0.0; else P = 1.0; for i = 1:m P=(A*(n-i)*P)/(i+A*(n-i)*P); endfor endif endfunction %!test %! fail("erlangb(1, -1)", "positive"); %! fail("erlangb(-1, 1)", "positive"); %! fail("erlangb(1, 0)", "positive"); %! fail("erlangb(0, 1)", "positive"); %! fail("erlangb('foo',1)", "positive"); %! fail("erlangb(1,'bar')", "positive"); %! fail("erlangb([1 1],[1 1 1])","common size"); queueing/inst/qnomvisits.m0000644000175000017500000001076213570046274015645 0ustar morenomoreno## Copyright (C) 2012, 2013, 2016 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {@var{V} =} qnomvisits (@var{P}, @var{lambda}) ## ## Compute the visit ratios to the service centers of an open multiclass network with @math{K} service centers and @math{C} customer classes. ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{P}(r,i,s,j) ## probability that a class @math{r} request which completed service at center @math{i} is ## routed to center @math{j} as a class @math{s} request. Class switching ## is supported. ## ## @item @var{lambda}(r,i) ## external arrival rate of class @math{r} requests to center @math{i}. ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{V}(r,i) ## visit ratio of class @math{r} requests at center @math{i}. ## ## @end table ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function V = qnomvisits( P, lambda ) if ( nargin != 2 ) print_usage(); endif ndims(P) == 4 || ... error("P must be a 4-dimensional matrix"); [C, K, C2, K2] = size( P ); (K == K2 && C == C2) || ... error( "P must be a [%d,%d,%d,%d] matrix", C, K, C, K); ( ndims(lambda) == 2 && [C,K] == size(lambda) ) || ... error( "lambda must be a %d x %d matrix", C, K ); all(lambda(:)>=0) || ... error(" lambda contains negative values" ); ## solve the traffic equations: V(s,j) = lambda(s,j) / lambda + sum_r ## sum_i V(r,i) * P(r,i,s,j), for all s,j where lambda is defined as ## sum_r sum_i lambda(r,i) A = eye(K*C) - reshape(P,[K*C K*C]); b = reshape(lambda / sum(lambda(:)), [1,K*C]); V = reshape(b/A, [C, K]); ## Make sure that no negative values appear (sometimes, numerical ## errors produce tiny negative values instead of zeros) V = max(0,V); endfunction %!test %! fail( "qnomvisits( zeros(3,3,3), [1 1 1] )", "matrix"); %!test %! C = 2; K = 4; %! P = zeros(C,K,C,K); %! # class 1 routing %! P(1,1,1,1) = .05; %! P(1,1,1,2) = .45; %! P(1,1,1,3) = .5; %! P(1,2,1,1) = 0.1; %! P(1,3,1,1) = 0.2; %! # class 2 routing %! P(2,1,2,1) = .01; %! P(2,1,2,3) = .5; %! P(2,1,2,4) = .49; %! P(2,3,2,1) = 0.2; %! P(2,4,2,1) = 0.16; %! lambda = [0.1 0 0 0.1 ; 0 0 0.2 0.1]; %! lambda_sum = sum(lambda(:)); %! V = qnomvisits(P, lambda); %! assert( all(V(:)>=0) ); %! for i=1:K %! for c=1:C %! assert(V(c,i), lambda(c,i) / lambda_sum + sum(sum(V .* P(:,:,c,i))), 1e-5); %! endfor %! endfor %!test %! # example 7.7 p. 304 Bolch et al. %! # Note that the book uses a slightly different notation than %! # what we use here. Specifically, the book defines the routing %! # probabilities as P(i,r,j,s) (i,j are service centers, r,s are job %! # classes) while the queueing package uses P(r,i,s,j). %! # A more serious problem arises in the definition of external arrivals. %! # The computation of V(r,i) as given in the book (called e_ir %! # in Eq 7.14) is performed in terms of P_{0, js}, defined as %! # "the probability in an open network that a job from outside the network %! # enters the jth node as a job of the sth class" (p. 267). This is %! # compliant with eq. 7.12 where the external class r arrival rate at center %! # i is computed as \lambda * P_{0,ir}. However, example 7.7 wrongly %! # defines P_{0,11} = P_{0,12} = 1, instead of P_{0,11} = P_{0,12} = 0.5 %! # Therefore the resulting visit ratios they obtain must be divided by two. %! P = zeros(2,3,2,3); %! lambda = S = zeros(2,3); %! P(1,1,1,2) = 0.4; %! P(1,1,1,3) = 0.3; %! P(1,2,1,1) = 0.6; %! P(1,2,1,3) = 0.4; %! P(1,3,1,1) = 0.5; %! P(1,3,1,2) = 0.5; %! P(2,1,2,2) = 0.3; %! P(2,1,2,3) = 0.6; %! P(2,2,2,1) = 0.7; %! P(2,2,2,3) = 0.3; %! P(2,3,2,1) = 0.4; %! P(2,3,2,2) = 0.6; %! lambda(1,1) = lambda(2,1) = 1; %! V = qnomvisits(P,lambda); %! assert( V, [ 3.333 2.292 1.917; 10 8.049 8.415] ./ 2, 1e-3); queueing/inst/qsmm1.m0000644000175000017500000001076113614611357014465 0ustar morenomoreno## Copyright (C) 2008, 2009, 2010, 2011, 2012, 2013, 2018, 2019, 2020 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}, @var{p0}] =} qsmm1 (@var{lambda}, @var{mu}) ## @deftypefnx {Function File} {@var{pk} =} qsmm1 (@var{lambda}, @var{mu}, @var{k}) ## ## @cindex @math{M/M/1} system ## ## Compute utilization, response time, average number of requests and throughput for a @math{M/M/1} queue. ## ## @tex ## The steady-state probability @math{\pi_k} that there are @math{k} ## jobs in the system, @math{k \geq 0}, can be computed as: ## ## $$ ## \pi_k = (1-\rho)\rho^k ## $$ ## ## where @math{\rho = \lambda/\mu} is the server utilization. ## ## @end tex ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{lambda} ## Arrival rate (@code{@var{lambda} @geq{} 0}). ## ## @item @var{mu} ## Service rate (@code{@var{mu} > @var{lambda}}). ## ## @item @var{k} ## Number of requests in the system (@code{@var{k} @geq{} 0}). ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{U} ## Server utilization ## ## @item @var{R} ## Server response time ## ## @item @var{Q} ## Average number of requests in the system ## ## @item @var{X} ## Server throughput. If the system is ergodic (@code{@var{mu} > ## @var{lambda}}), we always have @code{@var{X} = @var{lambda}} ## ## @item @var{p0} ## Steady-state probability that there are no requests in the system. ## ## @item @var{pk} ## Steady-state probability that there are @var{k} requests in the system. ## (including the one being served). ## ## @end table ## ## If this function is called with less than three input parameters, ## @var{lambda} and @var{mu} can be vectors of the same size. In this ## case, the results will be vectors as well. ## ## @strong{REFERENCES} ## ## @itemize ## @item ## G. Bolch, S. Greiner, H. de Meer and K. Trivedi, @cite{Queueing Networks ## and Markov Chains: Modeling and Performance Evaluation with Computer ## Science Applications}, Wiley, 1998, Section 6.3 ## @end itemize ## ## @seealso{qsmmm, qsmminf, qsmmmk} ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function [U_or_pk R Q X p0] = qsmm1( lambda, mu, k ) if ( nargin < 2 || nargin > 3 ) print_usage(); endif ( isvector(lambda) && isvector(mu) ) || ... error( "lambda and mu must be vectors" ); [ err lambda mu ] = common_size( lambda, mu ); if ( err ) error( "parameters are of incompatible size" ); endif lambda = lambda(:)'; mu = mu(:)'; all( lambda >= 0 ) || error( "lambda must be >= 0" ); rho = lambda ./ mu; all( rho < 1 ) || error( "Processing capacity exceeded" ); if (nargin == 2) U_or_pk = rho; # utilization p0 = 1-rho; Q = rho ./ (1-rho); R = 1 ./ ( mu .* (1-rho) ); X = lambda; else (length(lambda) == 1) || error("lambda must be a scalar if this function is called with three arguments"); isvector(k) || error("k must be a vector"); all(k>=0) || error("k must be >= 0"); k = k(:)'; # make k a row vector U_or_pk = (1 - rho).*rho.^k; endif endfunction %!test %! fail( "qsmm1(10,5)", "capacity exceeded" ); %! fail( "qsmm1(1,1)", "capacity exceeded" ); %! fail( "qsmm1([2 2], [1 1 1])", "incompatible size"); %!test %! [U R Q X P0] = qsmm1(0, 1); %! assert( U, 0 ); %! assert( R, 1 ); %! assert( Q, 0 ); %! assert( X, 0 ); %! assert( P0, 1 ); %!test %! [U R Q X P0] = qsmm1(0.2, 1.0); %! pk = qsmm1(0.2, 1.0, 0); %! assert(P0, pk); %!demo %! ## Given a M/M/1 queue, compute the steady-state probability pk %! ## of having k requests in the systen. %! lambda = 0.2; %! mu = 0.25; %! k = 0:10; %! pk = qsmm1(lambda, mu, k); %! plot(k, pk, "-o", "linewidth", 2); %! xlabel("N. of requests (k)"); %! ylabel("p_k"); %! title(sprintf("M/M/1 system, \\lambda = %g, \\mu = %g", lambda, mu)); queueing/inst/qsmmmk.m0000644000175000017500000001747513612113034014730 0ustar morenomoreno## Copyright (C) 2008, 2009, 2010, 2011, 2012, 2013, 2016, 2018, 2019 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}, @var{p0}, @var{pK}] =} qsmmmk (@var{lambda}, @var{mu}, @var{m}, @var{K}) ## @deftypefnx {Function File} {@var{pn} =} qsmmmk (@var{lambda}, @var{mu}, @var{m}, @var{K}, @var{n}) ## ## @cindex @math{M/M/m/K} system ## ## Compute utilization, response time, average number of requests and ## throughput for a @math{M/M/m/K} finite capacity system. In a ## @math{M/M/m/K} system there are @math{m \geq 1} identical service centers ## sharing a fixed-capacity queue. At any time, at most @math{K @geq{} m} requests can be in the system, including those being served. The maximum queue length ## is @math{K-m}. This function generates and ## solves the underlying CTMC. ## ## @tex ## ## The steady-state probability @math{\pi_n} that there are @math{n} ## jobs in the system, @math{0 @leq{} n @leq{} K}, is: ## ## $$ ## \pi_n = \cases{ \displaystyle{{\rho^n \over n!} \pi_0} & if $0 \leq n \leq m$;\cr\cr ## \displaystyle{{\rho^m \over m!} \left( \rho \over m \right)^{n-m} \pi_0} & if $m < n \leq K$\cr} ## $$ ## ## where @math{\rho = \lambda/\mu} is the offered load. The probability ## @math{\pi_0} that the system is empty can be computed by considering ## that all probabilities must sum to one: @math{\sum_{k=0}^K \pi_k = 1}, ## that gives: ## ## $$ ## \pi_0 = \left[ \sum_{k=0}^m {\rho^k \over k!} + {\rho^m \over m!} \sum_{k=m+1}^K \left( {\rho \over m}\right)^{k-m} \right]^{-1} ## $$ ## ## @end tex ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{lambda} ## Arrival rate (@code{@var{lambda}>0}) ## ## @item @var{mu} ## Service rate (@code{@var{mu}>0}) ## ## @item @var{m} ## Number of servers (@code{@var{m} @geq{} 1}) ## ## @item @var{K} ## Maximum number of requests allowed in the system, ## including those being served (@code{@var{K} @geq{} @var{m}}) ## ## @item @var{n} ## Number of requests in the (@code{0 @leq{} @var{n} @leq{} K}). ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{U} ## Service center utilization ## ## @item @var{R} ## Service center response time ## ## @item @var{Q} ## Average number of requests in the system ## ## @item @var{X} ## Service center throughput ## ## @item @var{p0} ## Steady-state probability that there are no requests in the system. ## ## @item @var{pK} ## Steady-state probability that there are @var{K} requests in the system ## (i.e., probability that the system is full). ## ## @item @var{pn} ## Steady-state probability that there are @var{n} requests in the system ## (including those being served). ## ## @end table ## ## If this function is called with less than five arguments, ## @var{lambda}, @var{mu}, @var{m} and @var{K} can be either scalars, or ## vectors of the same size. In this case, the results will be vectors ## as well. ## ## @strong{REFERENCES} ## ## @itemize ## @item ## G. Bolch, S. Greiner, H. de Meer and K. Trivedi, @cite{Queueing Networks ## and Markov Chains: Modeling and Performance Evaluation with Computer ## Science Applications}, Wiley, 1998, Section 6.6 ## @end itemize ## ## @seealso{qsmm1,qsmminf,qsmmm} ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function [U_or_pn R Q X p0 pK] = qsmmmk( lambda, mu, m, K, n ) if ( nargin < 4 || nargin > 5 ) print_usage(); endif ( isvector(lambda) && isvector(mu) && isvector(m) && isvector(K) ) || ... error( "lambda, mu, m, K must be vectors" ); lambda = lambda(:)'; # make lambda a row vector mu = mu(:)'; # make mu a row vector m = m(:)'; # make m a row vector K = K(:)'; # make K a row vector [err lambda mu m K] = common_size( lambda, mu, m, K ); if ( err ) error( "Parameters are not of common size" ); endif all( K>0 ) || ... error( "k must be strictly positive" ); all( m>0 ) && all( m <= K ) || ... error( "m must be in the range 1:k" ); all( lambda>0 ) && all( mu>0 ) || ... error( "lambda and mu must be >0" ); if (nargin < 5) U_or_pn = R = Q = X = p0 = pK = 0*lambda; for i=1:length(lambda) ## Build and solve the birth-death process describing the M/M/m/k system birth_rate = lambda(i)*ones(1,K(i)); death_rate = [ linspace(1,m(i),m(i))*mu(i) ones(1,K(i)-m(i))*m(i)*mu(i) ]; p = ctmc(ctmcbd(birth_rate, death_rate)); p0(i) = p(1); pK(i) = p(1+K(i)); j = [1:K(i)]; Q(i) = dot( p(1+j),j ); endfor ## Compute other performance measures X = lambda.*(1-pK); U_or_pn = X ./ (m .* mu ); R = Q ./ X; else (length(lambda) == 1) || error("lambda must be a scalar if this function is called with five arguments"); isvector(n) || error("n must be a vector"); (all(n >= 0) && all(n <= K)) || error("n must be >= 0 and <= K"); n = n(:)'; birth_rate = lambda*ones(1,K); death_rate = [ linspace(1,m,m)*mu ones(1,K-m)*m*mu ]; p = ctmc(ctmcbd(birth_rate, death_rate)); U_or_pn = p(1+n); endif endfunction %!test %! lambda = mu = m = 1; %! k = 10; %! [U R Q X p0] = qsmmmk(lambda,mu,m,k); %! assert( Q, k/2, 1e-7 ); %! assert( U, 1-p0, 1e-7 ); %!test %! lambda = [1 0.8 2 9.2 0.01]; %! mu = lambda + 0.17; %! k = 12; %! [U1 R1 Q1 X1] = qsmm1k(lambda,mu,k); %! [U2 R2 Q2 X2] = qsmmmk(lambda,mu,1,k); %! assert( U1, U2, 1e-5 ); %! assert( R1, R2, 1e-5 ); %! assert( Q1, Q2, 1e-5 ); %! assert( X1, X2, 1e-5 ); %! #assert( [U1 R1 Q1 X1], [U2 R2 Q2 X2], 1e-5 ); %!test %! lambda = 0.9; %! mu = 0.75; %! k = 10; %! [U1 R1 Q1 X1 p01] = qsmmmk(lambda,mu,1,k); %! [U2 R2 Q2 X2 p02] = qsmm1k(lambda,mu,k); %! assert( [U1 R1 Q1 X1 p01], [U2 R2 Q2 X2 p02], 1e-5 ); %!test %! lambda = 0.8; %! mu = 0.85; %! m = 3; %! k = 5; %! [U1 R1 Q1 X1 p0] = qsmmmk( lambda, mu, m, k ); %! birth = lambda*ones(1,k); %! death = [ mu*linspace(1,m,m) mu*m*ones(1,k-m) ]; %! q = ctmc(ctmcbd( birth, death )); %! U2 = dot( q, min( 0:k, m )/m ); %! assert( U1, U2, 1e-4 ); %! Q2 = dot( [0:k], q ); %! assert( Q1, Q2, 1e-4 ); %! assert( p0, q(1), 1e-4 ); %!test %! # This test comes from an example I found on the web %! lambda = 40; %! mu = 30; %! m = 3; %! k = 7; %! [U R Q X p0] = qsmmmk( lambda, mu, m, k ); %! assert( p0, 0.255037, 1e-6 ); %! assert( R, 0.036517, 1e-6 ); %!test %! # This test comes from an example I found on the web %! lambda = 50; %! mu = 10; %! m = 4; %! k = 6; %! [U R Q X p0 pk] = qsmmmk( lambda, mu, m, k ); %! assert( pk, 0.293543, 1e-6 ); %!test %! # This test comes from an example I found on the web %! lambda = 3; %! mu = 2; %! m = 2; %! k = 5; %! [U R Q X p0 pk] = qsmmmk( lambda, mu, m, k ); %! assert( p0, 0.179334, 1e-6 ); %! assert( pk, 0.085113, 1e-6 ); %! assert( Q, 2.00595, 1e-5 ); %! assert( R-1/mu, 0.230857, 1e-6 ); # waiting time in the queue %!demo %! ## Given a M/M/m/K queue, compute the steady-state probability pn %! ## of having n jobs in the systen. %! lambda = 0.2; %! mu = 0.25; %! m = 5; %! K = 20; %! n = 0:10; %! pn = qsmmmk(lambda, mu, m, K, n); %! plot(n, pn, "-o", "linewidth", 2); %! xlabel("N. of jobs (n)"); %! ylabel("P_n"); %! title(sprintf("M/M/%d/%d system, \\lambda = %g, \\mu = %g", m, K, lambda, mu)); queueing/inst/dtmctaexps.m0000644000175000017500000000533213570046274015602 0ustar morenomoreno## Copyright (C) 2012, 2014, 2016, 2018 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {@var{M} =} dtmctaexps (@var{P}, @var{n}, @var{p0}) ## @deftypefnx {Function File} {@var{M} =} dtmctaexps (@var{P}, @var{p0}) ## ## @cindex time-alveraged sojourn time, DTMC ## @cindex discrete time Markov chain ## @cindex Markov chain, discrete time ## @cindex DTMC ## ## Compute the @emph{time-averaged sojourn times} @code{@var{M}(i)}, ## defined as the fraction of time spent in state @math{i} during the ## first @math{n} transitions (or until absorption), assuming that the ## state occupancy probabilities at time 0 are @var{p0}. ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{P}(i,j) ## @math{N \times N} transition probability matrix. ## ## @item @var{n} ## Number of transitions during which the time-averaged expected sojourn times ## are computed (scalar, @math{@var{n} @geq{} 0}). if @math{@var{n} = 0}, ## returns @var{p0}. ## ## @item @var{p0}(i) ## Initial state occupancy probabilities (vector of length @math{N}). ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{M}(i) ## If this function is called with three arguments, @code{@var{M}(i)} is ## the expected fraction of steps @math{@{0, @dots{}, n@}} spent in ## state @math{i}, assuming that the state occupancy probabilities at ## time zero are @var{p0}. If this function is called with two ## arguments, @code{@var{M}(i)} is the expected fraction of steps spent ## in state @math{i} until absorption. @var{M} is a vector of length ## @math{N}. ## ## @end table ## ## @seealso{dtmcexps} ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function M = dtmctaexps( P, varargin ) persistent epsilon = 10*eps; if ( nargin < 2 || nargin > 3 ) print_usage(); endif L = dtmcexps(P,varargin{:}); M = L ./ sum(L); endfunction %!test %! P = dtmcbd([1 1 1 1], [0 0 0 0]); %! p0 = [1 0 0 0 0]; %! L = dtmctaexps(P,p0); %! assert( L, [.25 .25 .25 .25 0], 10*eps ); queueing/inst/ctmcbd.m0000644000175000017500000000705613570046274014667 0ustar morenomoreno## Copyright (C) 2011, 2012, 2016, 2018 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {@var{Q} =} ctmcbd (@var{b}, @var{d}) ## ## @cindex Markov chain, continuous time ## @cindex continuous time Markov chain ## @cindex CTMC ## @cindex birth-death process, CTMC ## ## Returns the infinitesimal generator matrix @math{Q} for a ## continuous birth-death process over the finite state space ## @math{@{1, @dots{}, N@}}. For each @math{i=1, @dots{}, (N-1)}, ## @code{@var{b}(i)} is the transition rate from state @math{i} to ## state @math{(i+1)}, and @code{@var{d}(i)} is the transition rate from state ## @math{(i+1)} to state @math{i}. ## ## Matrix @math{\bf Q} is therefore defined as: ## ## @tex ## $$ \pmatrix{ -\lambda_1 & \lambda_1 & & & & \cr ## \mu_1 & -(\mu_1 + \lambda_2) & \lambda_2 & & \cr ## & \mu_2 & -(\mu_2 + \lambda_3) & \lambda_3 & & \cr ## \cr ## & & \ddots & \ddots & \ddots & & \cr ## \cr ## & & & \mu_{N-2} & -(\mu_{N-2}+\lambda_{N-1}) & \lambda_{N-1} \cr ## & & & & \mu_{N-1} & -\mu_{N-1} } ## $$ ## @end tex ## @ifnottex ## ## @example ## @group ## / \ ## | -b(1) b(1) | ## | d(1) -(d(1)+b(2)) b(2) | ## | d(2) -(d(2)+b(3)) b(3) | ## | | ## | ... ... ... | ## | | ## | d(N-2) -(d(N-2)+b(N-1)) b(N-1) | ## | d(N-1) -d(N-1) | ## \ / ## @end group ## @end example ## @end ifnottex ## ## @noindent where @math{\lambda_i} and @math{\mu_i} are the birth and ## death rates, respectively. ## ## @seealso{dtmcbd} ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function Q = ctmcbd( birth, death ) if ( nargin != 2 ) print_usage(); endif ( isvector( birth ) && isvector( death ) ) || ... error( "birth and death must be vectors" ); birth = birth(:); # make birth a column vector death = death(:); # make death a column vector size_equal( birth, death ) || ... error( "birth and death rates must have the same length" ); all( birth >= 0 ) || ... error( "birth rates must be >= 0" ); all( death >= 0 ) || ... error( "death rates must be >= 0" ); ## builds the infinitesimal generator matrix Q = diag( birth, 1 ) + diag( death, -1 ); Q -= diag( sum(Q,2) ); endfunction %!test %! birth = [ 1 1 1 ]; %! death = [ 2 2 2 ]; %! Q = ctmcbd( birth, death ); %! assert( ctmc(Q), [ 8/15 4/15 2/15 1/15 ], 1e-5 ); queueing/inst/qncmnpop.m0000644000175000017500000000562313570046274015264 0ustar morenomoreno## Copyright (C) 2008, 2009, 2010, 2011, 2012, 2016, 2018 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {@var{H} =} qncmnpop (@var{N}) ## ## @cindex population mix ## @cindex closed network, multiple classes ## ## Given a network with @math{C} customer classes, this function ## computes the number of @math{k}-mixes @code{@var{H}(r,k)} that can ## be constructed by the multiclass MVA algorithm by allocating ## @math{k} customers to the first @math{r} classes. ## @xref{doc-qncmpopmix} for the definition of @math{k}-mix. ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{N}(c) ## number of class-@math{c} requests in the system. The total number ## of requests in the network is @code{sum(@var{N})}. ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{H}(r,k) ## is the number of @math{k} mixes that can be constructed allocating ## @math{k} customers to the first @math{r} classes. ## ## @end table ## ## @strong{REFERENCES} ## ## @itemize ## @item Zahorjan, J. and Wong, E. @cite{The solution of separable queueing ## network models using mean value analysis}. SIGMETRICS ## Perform. Eval. Rev. 10, 3 (Sep. 1981), 80-85. DOI ## @uref{http://doi.acm.org/10.1145/1010629.805477, 10.1145/1010629.805477} ## @end itemize ## ## @seealso{qncmmva,qncmpopmix} ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function H = qncmnpop( N ) (isvector(N) && all( N > 0 ) ) || ... error( "N must be a vector of strictly positive integers" ); N = N(:)'; # make N a row vector Ns = sum(N); R = length(N); ## In the implementation below we initialize the variable ## @code{TOTAL_POP} variable to 0 instead of @code{@var{N}(1)} as in ## the paper. Moreover, we increment @code{TOTAL_POP} ## @code{@var{N}(r)} at each iteration, instead of ## @code{@var{N}(r-1)} as in the paper. total_pop = N(1); H = zeros(R, Ns+1); H(1,1:N(1)+1) = 1; for r=2:R total_pop += N(r); for n=0:total_pop range = max(0,n-N(r)) : n; H(r,n+1) = sum( H(r-1, range+1 ) ); endfor endfor endfunction %!test %! H = qncmnpop( [1 2 2] ); %! assert( H, [1 1 0 0 0 0; 1 2 2 1 0 0; 1 3 5 5 3 1] ); queueing/inst/qncsmvaap.m0000644000175000017500000001760413570046274015424 0ustar morenomoreno## Copyright (C) 2011, 2012, 2016, 2018 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncsmvaap (@var{N}, @var{S}, @var{V}) ## @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncsmvaap (@var{N}, @var{S}, @var{V}, @var{m}) ## @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncsmvaap (@var{N}, @var{S}, @var{V}, @var{m}, @var{Z}) ## @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncsmvaap (@var{N}, @var{S}, @var{V}, @var{m}, @var{Z}, @var{tol}) ## @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncsmvaap (@var{N}, @var{S}, @var{V}, @var{m}, @var{Z}, @var{tol}, @var{iter_max}) ## ## @cindex Mean Value Analysys (MVA), approximate ## @cindex MVA, approximate ## @cindex approximate MVA ## @cindex closed network, single class ## @cindex closed network, approximate analysis ## ## Analyze closed, single class queueing networks using the Approximate ## Mean Value Analysis (MVA) algorithm. This function is based on ## approximating the number of customers seen at center @math{k} when a ## new request arrives as @math{Q_k(N) \times (N-1)/N}. This function ## only handles single-server and delay centers; if your network ## contains general load-dependent service centers, use the function ## @code{qncsmvald} instead. ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{N} ## Population size (number of requests in the system, @code{@var{N} > 0}). ## ## @item @var{S}(k) ## mean service time on server @math{k} ## (@code{@var{S}(k)>0}). ## ## @item @var{V}(k) ## average number of visits to service center ## @math{k} (@code{@var{V}(k) @geq{} 0}). ## ## @item @var{m}(k) ## number of servers at center @math{k} ## (if @var{m} is a scalar, all centers have that number of servers). If ## @code{@var{m}(k) < 1}, center @math{k} is a delay center (IS); if ## @code{@var{m}(k) == 1}, center @math{k} is a regular queueing ## center (FCFS, LCFS-PR or PS) with one server (default). This function ## does not support multiple server nodes (@code{@var{m}(k) > 1}). ## ## @item @var{Z} ## External delay for customers (@code{@var{Z} @geq{} 0}). Default is 0. ## ## @item @var{tol} ## Stopping tolerance. The algorithm stops when the maximum relative ## difference between the new and old value of the queue lengths ## @var{Q} becomes less than the tolerance. Default is @math{10^{-5}}. ## ## @item @var{iter_max} ## Maximum number of iterations (@code{@var{iter_max}>0}. ## The function aborts if convergenge is not reached within the maximum ## number of iterations. Default is 100. ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{U}(k) ## If @math{k} is a FCFS, LCFS-PR or PS node (@code{@var{m}(k) == 1}), ## then @code{@var{U}(k)} is the utilization of center @math{k}. If ## @math{k} is an IS node (@code{@var{m}(k) < 1}), then ## @code{@var{U}(k)} is the @emph{traffic intensity} defined as ## @code{@var{X}(k)*@var{S}(k)}. ## ## @item @var{R}(k) ## response time at center @math{k}. ## The system response time @var{Rsys} ## can be computed as @code{@var{Rsys} = @var{N}/@var{Xsys} - Z} ## ## @item @var{Q}(k) ## average number of requests at center @math{k}. The number of ## requests in the system can be computed either as ## @code{sum(@var{Q})}, or using the formula ## @code{@var{N}-@var{Xsys}*@var{Z}}. ## ## @item @var{X}(k) ## center @math{k} throughput. The system throughput @var{Xsys} can be ## computed as @code{@var{Xsys} = @var{X}(1) / @var{V}(1)} ## ## @end table ## ## @strong{REFERENCES} ## ## This implementation is based on Edward D. Lazowska, John Zahorjan, ## G. Scott Graham, and Kenneth C. Sevcik, @cite{Quantitative System ## Performance: Computer System Analysis Using Queueing Network Models}, ## Prentice Hall, ## 1984. @url{http://www.cs.washington.edu/homes/lazowska/qsp/}. In ## particular, see section 6.4.2.2 ("Approximate Solution Techniques"). ## ## @seealso{qncsmva,qncsmvald} ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function [U R Q X] = qncsmvaap( N, S, V, m, Z, tol, iter_max ) if ( nargin < 3 || nargin > 7 ) print_usage(); endif isscalar(N) && N >= 0 || ... error( "N must be >= 0" ); isvector(S) || ... error( "S must be a vector" ); isvector(V) || ... error( "V must be a vector" ); S = S(:)'; # make S a row vector V = V(:)'; # make V a row vector K = length(S); # Number of servers if ( nargin < 4 ) m = ones(1,K); else isvector(m) || ... error( "m must be a vector" ); m = m(:)'; # make m a row vector endif [err S V m] = common_size(S, V, m); (err == 0) || ... error( "S, V and m are of incompatible size" ); all(S>=0) || ... error( "S must be a vector >= 0" ); all(V>=0) || ... error( "V must be a vector >= 0" ); all(m<=1) || ... error( "Vector m must be <= 1 (this function supports IS and single-server nodes only)" ); if ( nargin < 5 ) Z = 0; else (isscalar(Z) && Z >= 0) || ... error( "Z must be >= 0" ); endif if ( nargin < 6 ) tol = 1e-5; else ( isscalar(tol) && tol>0 ) || ... error("tol must be a positive scalar"); endif if ( nargin < 7 ) iter_max = 100; else ( isscalar(iter_max) && iter_max > 0 ) || ... error("iter_max must be a positive integer"); endif U = R = Q = X = zeros( 1, K ); ## Trivial case of empty population: just return all zeros if ( N == 0 ) return; endif Q = N/K * ones(1,K); # initialize queue lengths iter = 0; do iter++; Qold = Q; A = (N-1)/N * Q; R = S.*(1+A.*(m==1)); Rs = dot(V,R); Xs = N/(Z+Rs); Q = Xs*(V.*R); err = norm((Q-Qold)./Qold, "inf"); until (err < tol || iter>iter_max); if ( iter > iter_max ) warning( "qncsmvaap(): Convergence not reached after %d iterations", iter_max ); endif X = Xs * V; U = X .* S; endfunction %!test %! fail( "qncsmvaap()", "Invalid" ); %! fail( "qncsmvaap( 10, [1 2], [1 2 3] )", "S, V and m" ); %! fail( "qncsmvaap( 10, [-1 1], [1 1] )", ">= 0" ); %! fail( "qncsmvaap( 10, [1 2], [1 2], [1 2] )", "supports"); %! fail( "qncsmvaap( 10, [1 2], [1 2], [1 1], 0, -1)", "tol"); %!test %! # Example p. 117 Lazowska et al. %! S = [0.605 2.1 1.35]; %! V = [1 1 1]; %! N = 3; %! Z = 15; %! m = 1; %! [U R Q X] = qncsmvaap(N, S, V, m, Z); %! Rs = dot(V,R); %! Xs = N/(Z+Rs); %! assert( Q, [0.0973 0.4021 0.2359], 1e-3 ); %! assert( Xs, 0.1510, 1e-3 ); %! assert( Rs, 4.87, 1e-3 ); %!demo %! S = [ 0.125 0.3 0.2 ]; %! V = [ 16 10 5 ]; %! N = 30; %! m = ones(1,3); %! Z = 4; %! Xmva = Xapp = Rmva = Rapp = zeros(1,N); %! for n=1:N %! [U R Q X] = qncsmva(n,S,V,m,Z); %! Xmva(n) = X(1)/V(1); %! Rmva(n) = dot(R,V); %! [U R Q X] = qncsmvaap(n,S,V,m,Z); %! Xapp(n) = X(1)/V(1); %! Rapp(n) = dot(R,V); %! endfor %! subplot(2,1,1); %! plot(1:N, Xmva, ";Exact;", "linewidth", 2, 1:N, Xapp, "x;Approximate;", "markersize", 7); %! legend("location","southeast"); legend("boxoff"); %! ylabel("Throughput X(n)"); %! subplot(2,1,2); %! plot(1:N, Rmva, ";Exact;", "linewidth", 2, 1:N, Rapp, "x;Approximate;", "markersize", 7); %! legend("location","southeast"); legend("boxoff"); %! ylabel("Response Time R(n)"); %! xlabel("Number of Requests n"); queueing/inst/qncmmva.m0000644000175000017500000007460413570046274015100 0ustar morenomoreno## Copyright (C) 2008, 2009, 2010, 2011, 2012, 2013, 2016, 2018 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncmmva (@var{N}, @var{S} ) ## @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncmmva (@var{N}, @var{S}, @var{V}) ## @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncmmva (@var{N}, @var{S}, @var{V}, @var{m}) ## @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncmmva (@var{N}, @var{S}, @var{V}, @var{m}, @var{Z}) ## @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncmmva (@var{N}, @var{S}, @var{P}) ## @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncmmva (@var{N}, @var{S}, @var{P}, @var{r}) ## @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncmmva (@var{N}, @var{S}, @var{P}, @var{r}, @var{m}) ## ## @cindex Mean Value Analysys (MVA) ## @cindex closed network, multiple classes ## @cindex multiclass network, closed ## ## Compute steady-state performance measures for closed, multiclass ## queueing networks using the Mean Value Analysys (MVA) algorithm. ## ## Queueing policies at service centers can be any of the following: ## ## @table @strong ## ## @item FCFS ## (First-Come-First-Served) customers are served in order of arrival; ## multiple servers are allowed. For this kind of queueing discipline, ## average service times must be class-independent. ## ## @item PS ## (Processor Sharing) customers are served in parallel by a single ## server, each customer receiving an equal share of the service rate. ## ## @item LCFS-PR ## (Last-Come-First-Served, Preemptive Resume) customers are served in ## reverse order of arrival by a single server and the last arrival ## preempts the customer in service who will later resume service at the ## point of interruption. ## ## @item IS ## (Infinite Server) customers are delayed independently of other ## customers at the service center (there is effectively an infinite ## number of servers). ## ## @end table ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{N}(c) ## number of class @math{c} requests; @code{@var{N}(c) @geq{} 0}. If ## class @math{c} has no requests (@code{@var{N}(c) == 0}), then for ## all @var{k}, this function returns ## @code{@var{U}(c,k) = @var{R}(c,k) = @var{Q}(c,k) = @var{X}(c,k) = 0} ## ## @item @var{S}(c,k) ## mean service time for class @math{c} requests at center @math{k} ## (@code{@var{S}(c,k) @geq{} 0}). If the service time at center ## @math{k} is class-dependent, then center @math{k} is assumed ## to be of type @math{-/G/1}--PS (Processor Sharing). If center ## @math{k} is a FCFS node (@code{@var{m}(k)>1}), then the service ## times @strong{must} be class-independent, i.e., all classes ## @strong{must} have the same service time. ## ## @item @var{V}(c,k) ## average number of visits of class @math{c} requests at ## center @math{k}; @code{@var{V}(c,k) @geq{} 0}, default is 1. ## @strong{If you pass this argument, class switching is not allowed} ## ## @item @var{P}(r,i,s,j) ## probability that a class @math{r} request completing service at center ## @math{i} is routed to center @math{j} as a class @math{s} request; the ## reference stations for each class are specified with the paramter ## @var{r}. @strong{If you pass argument @var{P}, class switching is ## allowed}; however, you can not specify any external delay (i.e., ## @var{Z} must be zero) and all servers must be fixed-rate or ## infinite-server nodes (@code{@var{m}(k) @leq{} 1} for all ## @math{k}). ## ## @item @var{r}(c) ## reference station for class @math{c}. If omitted, station 1 is the ## reference station for all classes. See @command{qncmvisits}. ## ## @item @var{m}(k) ## If @code{@var{m}(k)<1}, then center @math{k} is assumed to be a delay ## center (IS node @math{-/G/\infty}). If @code{@var{m}(k)==1}, then ## service center @math{k} is a regular queueing center ## (@math{M/M/1}--FCFS, @math{-/G/1}--LCFS-PR or @math{-/G/1}--PS). ## Finally, if @code{@var{m}(k)>1}, center @math{k} is a ## @math{M/M/m}--FCFS center with @code{@var{m}(k)} identical servers. ## Default is @code{@var{m}(k)=1} for each @math{k}. ## ## @item @var{Z}(c) ## class @math{c} external delay (think time); @code{@var{Z}(c) @geq{} ## 0}. Default is 0. This parameter can not be used if you pass a ## routing matrix as the second parameter of @code{qncmmva}. ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{U}(c,k) ## If @math{k} is a FCFS, LCFS-PR or PS node (@code{@var{m}(k) @geq{} ## 1}), then @code{@var{U}(c,k)} is the class @math{c} utilization at ## center @math{k}, @math{0 @leq{} U(c,k) @leq{} 1}. If @math{k} is an ## IS node, then @code{@var{U}(c,k)} is the class @math{c} @emph{traffic ## intensity} at center @math{k}, defined as @code{@var{U}(c,k) = ## @var{X}(c,k)*@var{S}(c,k)}. In this case the value of ## @code{@var{U}(c,k)} may be greater than one. ## ## @item @var{R}(c,k) ## class @math{c} response time at center @math{k}. The class @math{c} ## @emph{residence time} at center @math{k} is @code{@var{R}(c,k) * ## @var{C}(c,k)}. The total class @math{c} system response time is ## @code{dot(@var{R}, @var{V}, 2)}. ## ## @item @var{Q}(c,k) ## average number of class @math{c} requests at center @math{k}. The ## total number of requests at center @math{k} is ## @code{sum(@var{Q}(:,k))}. The total number of class @math{c} ## requests in the system is @code{sum(@var{Q}(c,:))}. ## ## @item @var{X}(c,k) ## class @math{c} throughput at center @math{k}. The class @math{c} ## throughput can be computed as @code{@var{X}(c,1) / @var{V}(c,1)}. ## ## @end table ## ## @strong{NOTES} ## ## If the function call specifies the visit ratios @var{V}, then class ## switching is @strong{not} allowed. If the function call specifies ## the routing probability matrix @var{P}, then class switching ## @strong{is} allowed; however, in this case all nodes are restricted ## to be fixed rate servers or delay centers: multiple-server and ## general load-dependent centers are not supported. ## ## In presence of load-dependent servers (e.g., if @code{@var{m}(i)>1} ## for some @math{i}), the MVA algorithm is known to be numerically ## unstable. Generally this problem shows up as negative values for the ## computed response times or utilizations. This is not a problem with the ## @code{queueing} package, but with the MVA algorithm; ## as such, there is no known workaround at the moment (aoart from using a ## different solution technique, if available). This function prints a ## warning if it detects numerical problems; you can disable the warning ## with the command @code{warning("off", "qn:numerical-instability")}. ## ## Given a network with @math{K} service centers, @math{C} job classes ## and population vector @math{{\bf N}=\left[N_1, @dots{}, N_C\right]}, the MVA ## algorithm requires space @math{O(C \prod_i (N_i + 1))}. The time ## complexity is @math{O(CK\prod_i (N_i + 1))}. This implementation is ## slightly more space-efficient (see details in the code). While the ## space requirement can be mitigated by using some optimizations, the ## time complexity can not. If you need to analyze large closed networks ## you should consider the @command{qncmmvaap} function, which implements ## the approximate MVA algorithm. Note however that @command{qncmmvaap} ## will only provide approximate results. ## ## @strong{REFERENCES} ## ## @itemize ## @item ## M. Reiser and S. S. Lavenberg, @cite{Mean-Value Analysis of Closed ## Multichain Queuing Networks}, Journal of the ACM, vol. 27, n. 2, April ## 1980, pp. 313--322. @uref{http://doi.acm.org/10.1145/322186.322195, 10.1145/322186.322195} ## @end itemize ## ## This implementation is based on G. Bolch, S. Greiner, H. de Meer and ## K. Trivedi, @cite{Queueing Networks and Markov Chains: Modeling and ## Performance Evaluation with Computer Science Applications}, Wiley, ## 1998 and Edward D. Lazowska, John Zahorjan, G. Scott Graham, and ## Kenneth C. Sevcik, @cite{Quantitative System Performance: Computer ## System Analysis Using Queueing Network Models}, Prentice Hall, ## 1984. @url{http://www.cs.washington.edu/homes/lazowska/qsp/}. In ## particular, see section 7.4.2.1 ("Exact Solution Techniques"). ## ## @seealso{qnclosed, qncmmvaapprox, qncmvisits} ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function [U R Q X] = qncmmva( varargin ) if ( nargin < 2 || nargin > 5 ) print_usage(); endif if ( nargin == 2 || ndims(varargin{3}) == 2 ) [err N S V m Z] = qncmchkparam( varargin{:} ); isempty(err) || error(err); [U R Q X] = __qncmmva_nocs( N, S, V, m, Z ); else [U R Q X] = __qncmmva_cs( varargin{:} ); endif endfunction ############################################################################## ## Analyze closed, multiclass QNs with class switching function [U R Q X] = __qncmmva_cs( N, S, P, r, m ) if ( nargin < 3 || nargin > 5 ) print_usage(); endif isvector(N) && all( N>=0 ) || ... error( "N must be >=0" ); N = N(:)'; # make N a row vector C = length(N); ## Number of classes ( ndims(S) == 2 ) || ... error( "S must be a matrix" ); K = columns(S); ## Number of service centers size(S) == [C,K] || ... error( "S size mismatch (is %dx%d, should be %dx%d)", rows(S), columns(S), C, K ); ndims(P) == 4 && size(P) == [C,K,C,K] || ... error( "P size mismatch (should be %dx%dx%dx%d)",C,K,C,K ); if ( nargin < 4 ) r = ones(1,C); # reference station else if (isscalar(r)) r = r*ones(1,C); endif ( isvector(r) && length(r) == C ) || ... error("r must be a vector with %d elements", C); r = r(:)'; all( r>=1 && r<=K ) || ... error("elements of r are out of range [1,%d]",K); endif if ( nargin < 5 ) m = ones(1,K); else isvector(m) || ... error( "m must be a vector" ); m = m(:)'; # make m a row vector length(m) == K || ... error( "m size mismatch (should be %d, is %d)", K, length(m) ); endif ## Check consistency of parameters all(S(:) >= 0) || ... error( "S must be >= 0" ); all( any(S>0,2) ) || ... error( "S must contain at least a value >0 for each row" ); all(P(:)>= 0) || ... error( "P must be >=0" ); U = R = Q = X = zeros(C,K); ## 1. Compute visit counts [V ch] = qncmvisits(P,r); ## 2. Identify chains nch = max(ch); ## 3. Compute visit counts for the equivalent network Vstar = zeros(nch,K); for q=1:nch r = (ch == q); Vstar(q,:) = sum(V(r,:),1); endfor ## 4. Compute proportionality constants alpha = zeros(C,K); for r=1:C for k=find( Vstar(ch(r),:) > 0 ) alpha(r,k) = V(r,k) / Vstar( ch(r), k ); endfor endfor ## 5. Compute service times Sstar = zeros(nch,K); for q=1:nch r = (ch==q); Sstar(q,:) = dot( alpha(r,:), S(r,:), 1 ); endfor ## 6. Compute populations of superclasses Nstar = zeros(1,nch); for q=1:nch r = (ch == q); Nstar(q) = sum( N(r) ); endfor ## 7. Solve the equivalent network [Ustar Rstar Qstar Xstar Qnm1] = __qncmmva_nocs( Nstar, Sstar, Vstar, m, zeros(size(Nstar)) ); ## 8. Compute solutions of the original network for r=1:C for k=1:K R(r,k) = S(r,k) * (1 + Qnm1(ch(r),k)*(m(k)==1)); X(r,k) = alpha(r,k) * Xstar(ch(r),k); Q(r,k) = X(r,k) * R(r,k); U(r,k) = S(r,k) * X(r,k) / max(1,m(k)); endfor endfor ## 9. Check for numerical instability if ( any(U(:)<0) || any(R(:)<0) ) warning("qn:numerical-instability", "Numerical instability detected. Type 'help qncmmva' for details"); endif endfunction ############################################################################## ## Analyze closed, multiclass QNs WITHOUT class switching ## ## This implementation is based on: ## ## Herb Schwetman, "Implementing the Mean Value Algorithm for the ## Solution of Queueing Network Models", technical report OSD-TR-355, ## dept. of Computer Science, Purdue University, feb. 1982. ## function [U R Q X Qnm1] = __qncmmva_nocs( N, S, V, m, Z ) assert( nargin == 5 ); all( any(S>0,2) ) || ... error( "S must contain at least a value >0 for each row" ); [C K] = size(S); ## ensure that the service times for multiserver nodes ## are class-independent for k=find(m>1) all( S(:,k) == S(1,k) ) || ... error( "Service times for FCFS node %d are not class-independent", k ); endfor ## Initialize results R = zeros( C, K ); X = zeros( 1, C ); D = S .* V; ## The multiclass MVA algorithm requires to store the queue lengths Q( ## _n_, k ) at center k where the population vector is _n_. The space ## required would be K*prod(N+1), but this can be reduced by ## considering that, at each iteration of the main MVA loop, the total ## number of requests is n; therefore it is sufficient to consider the ## first (C-1) components of vector _n_ to uniquely identify the cell ## containing Q( _n_, k ). See Schwetman for a better explanation. bufsize = prod((N+1)(1:end-1)); Q_next = Q = zeros( bufsize,K ); p = cell(1,K); for k=find(m>1) ## p{i}(j+1,k+1) is the probability to have j jobs at node i ## where the network is in state k p{k} = zeros( m(k)+1,bufsize ); p{k}(1,__getidx(N,0*N)) = 1; endfor Qnm1= zeros(C,K); ## Qnm1(c,k) is the number of requests in center k, provided that the population size is N-1_c (N is the total population vector). This value is needed by __qncmmva_cs. Qnm1 is only filled for M/M/1 or PS centers. The values are not computed for PS nodes dd = zeros(1,C); for c=find(N>0) h = zeros(1,C); h(c) = 1; dd(c) = __getidx(N,h)-1; endfor for n=1:sum(N) ## MVA iteration for population size n n_bar = zeros(1, C); const = min(n, N); mp = 0; while ( all(n_bar(C) <= const(C)) ) ## Fill the current configuration (algorithm 3b, p. 10, Schwetman) x=n-mp; i=1; while ( x>0 && i<=C ) n_bar(i) = min(x,const(i)); x -= n_bar(i); mp += n_bar(i); i += 1; endwhile idx = __getidx( N, n_bar ); R = S; ## Compute response time for LI servers k=find(m==1); for c=find(n_bar>0) ## idx-dd(c) is the index of element n_bar - 1_c R(c,k) = S(c,k).*(1 + Q( idx-dd(c), k ) ); Qnm1(c,k) = Q( idx-dd(c), k); ## for FCFS nodes with class-dependent service times, ## it is possible to use the following approximation ## (p. 469 Bolch et al.) ## ## R(c,k) = S(c,k) + sum( S(:,k) * Q(idx(:), k) ); ## R(c,k) = S(c,k) + sum( S(:,k) .* Q(idx, k) .* V(:,k) ) / sum(V(:,k)); endfor ## Compute response time for LD servers for k=find(m>1) j=0:m(k)-2; # range for c=find(n_bar > 0 ) R(c,k) = S(c,k)/m(k)*(1 + Q( idx-dd(c), k ) + ... dot(m(k)-j-1,p{k}(j+1,idx-dd(c)) ) ); endfor endfor X = n_bar ./ ( Z .+ dot(R,V,2)' ); # X(c) = N(c) / ( Z(c) + sum_k R(c,k) * V(c,k) ) ## Q_k = sum_c X(c) * R(c,k) * V(c,k) Q_next( idx, : ) = (X * (R .* V))'; ## Update marginal probabilities for LD servers for k=find(m>1) j = 1:m(k)-1; s = zeros(size(j)); for r=find(n_bar>0) # FIXME: vectorize this s+=(D(r,k)*X(r)*p{k}(j,idx-dd(r)))'; endfor p{k}(j+1,idx) = s./j; p{k}(1,idx) = 1-1/m(k)*(dot( D(:,k),X ) + ... dot( m(k)-j, p{k}(j+1,idx) ) ); endfor #{ ## The following "if" is in the paper, but it makes the algorithm ## incorrect. Therefore, it is commented out. if ( n_bar(C) == N(C) ) break; endif #} ## Advance to next feasible configuration (Algorithm 3c, p. 10 Schwetman) i = 1; sw = true; while sw if ( ( mp==n || n_bar(i)==const(i)) && ( i14.323 %! assert( U, [14.323 0 .358; 0 4.707 .157], 1e-3 ); %! # FIXME: I replaced 14.3->14.323 %! assert( X, [14.323 0 14.323; 0 .314 .314 ], 1e-3 ); %! # FIXME: I replaced 14.3->14.323 %! assert( Q, [14.323 0 .677; 0 4.707 .293 ], 1e-3 ); %! assert( R, [1 0 .047; 0 15 .934 ], 1e-3 ); %! assert( Q, R.*X, 1e-5 ); # Little's Law ## Example 9.5 p. 337, Bolch et al. %!test %! S = [ 0.2 0.4 1; 0.2 0.6 2 ]; %! V = [ 1 0.6 0.4; 1 0.3 0.7 ]; %! N = [ 2 1 ]; %! m = [ 2 1 -1 ]; %! [U R Q X] = qncmmva(N,S,V,m); %! assert( Q, [ 0.428 0.726 0.845; 0.108 0.158 0.734 ], 1e-3 ); %! assert( X(1,1), 2.113, 1e-3 ); # CHECK %! assert( X(2,1), 0.524, 1e-3 ); # CHECK %! assert( all(U(:)<=1) ); %! assert( Q, R.*X, 1e-5 ); # Little's Law ## Multiclass network with two classes; however, class 2 has 0 requests. ## Therefore, we check that the results for class 1 are the same as those ## computed by the single-class MVA %!test %! C = 2; # two classes %! K = 4; # four servers %! S = V = zeros(C,K); %! S(1,:) = linspace(1,2,K); %! S(2,:) = linspace(2,3,K); %! V(1,:) = linspace(4,1,K); %! V(2,:) = linspace(6,3,K); %! N = [10 0]; # class 2 has no customers %! [U1 R1 Q1 X1] = qncmmva(N,S,V); %! [U2 R2 Q2 X2] = qncsmva(N(1),S(1,:),V(1,:)); %! assert( U1(1,:), U2, 1e-5 ); %! assert( R1(1,:), R2, 1e-5 ); %! assert( Q1(1,:), Q2, 1e-5 ); %! assert( X1(1,:), X2, 1e-5 ); ## This is example 5(b) page 7 of ## http://docs.lib.purdue.edu/cstech/259/ ## "Testing network-of-queues software", technical report CSD-TR 330, %!test %! Z = [1 15]; %! V = [1; 1]; %! S = [.025; .5]; %! N = [15; 5]; %! [U R Q X] = qncmmva(N, S, V, 1, Z); %! assert( U, [.358; .157], 1e-3 ); %! assert( Q, [.677; .293], 1e-3 ); %! assert( X, [14.323; .314], 1e-3 ); ## NOTE: X(1,1) = 14.3 in Schwetman %! assert( R, [.047; .934], 1e-3 ); %! assert( Q, R.*X, 1e-5 ); # Little's Law ## This is example of Figure 6, page 9 of ## http://docs.lib.purdue.edu/cstech/259/ ## "Testing network-of-queues software", technical report CSD-TR 330, %!test %! C = 2; %! K = 6; %! P = zeros(C,K,C,K); %! P(1,1,1,2) = P(2,1,2,2) = 1; %! P(1,2,1,3) = P(1,2,1,4) = P(1,2,1,5) = P(1,2,1,6) = .25; %! P(2,2,2,3) = P(2,2,2,4) = P(2,2,2,5) = P(2,2,2,6) = .25; %! P(1,3,1,1) = P(1,4,1,1) = P(1,5,1,1) = P(1,6,1,1) = .9; %! P(1,3,1,2) = P(1,4,1,2) = P(1,5,1,2) = P(1,6,1,2) = .1; %! P(2,3,2,1) = P(2,4,2,1) = P(2,5,2,1) = P(2,6,2,1) = .05; %! P(2,3,2,2) = P(2,4,2,2) = P(2,5,2,2) = P(2,6,2,2) = .95; %! N = [40 4]; %! S = [ 5.0 .010 .035 .035 .035 .035; ... %! 10.0 .100 .035 .035 .035 .035 ]; %! V = qncmvisits(P); %! [U R Q X] = qncmmva(N, S, V, [-1 1 1 1 1 1]); %! # FIXME: The results below were computed with JMVA; the numbers %! # in the paper are different (wrong?!?)!! %! assert( U, [39.457941 0.087684 0.076724 0.076724 0.076724 0.076724; ... %! 2.772704 0.554541 0.048522 0.048522 0.048522 0.048522 ], 1e-5 ); %! assert( R.*V, [5 0.024363 0.011081 0.011081 0.011081 0.011081; ... %! 10 3.636155 0.197549 0.197549 0.197549 0.197549 ], 1e-5 ); %! assert( Q(:,1), [39.457941 2.772704]', 1e-5 ); %! assert( Q(:,2), [0.192262 1.008198]', 1e-5 ); %! assert( Q(:,3), [0.087449 0.054775]', 1e-5 ); %! assert( Q(:,4), Q(:,5), 1e-5 ); %! assert( Q(:,5), Q(:,6), 1e-5 ); %! assert( X(:,1), [7.891588 0.277270]', 1e-5 ); %! assert( X(:,2), [8.768431 5.545407]', 1e-5 ); %! assert( X(:,3), [2.192108 1.386352]', 1e-5 ); %! assert( X(:,4), X(:,5), 1e-5 ); %! assert( X(:,5), X(:,6), 1e-5 ); %! assert( Q, R.*X, 1e-5 ); # Little's Law ## If there is no class switching, we must get the same results as ## the plain application of multiclass MVA %!test %! C = 2; # two classes %! K = 4; # four servers %! C = 2; K = 4; %! P = zeros(C,K,C,K); %! S = zeros(C,K); %! %! # Routing %! %! # class 1 routing %! P(1,1,1,1) = .05; %! P(1,1,1,2) = .45; %! P(1,1,1,3) = .5; %! P(1,2,1,1) = 1; %! P(1,3,1,1) = 1; %! # class 2 routing %! P(2,1,2,1) = .01; %! P(2,1,2,3) = .5; %! P(2,1,2,4) = .49; %! P(2,3,2,1) = 1; %! P(2,4,2,1) = 1; %! %! # Compute visits %! %! V = qncmvisits(P); %! %! # Define population and service times %! %! N = [3 2]; %! S = [0.01 0.09 0.10 0.08; ... %! 0.05 0.09 0.10 0.08]; %! [U1 R1 Q1 X1] = qncmmva(N,S,V); # this invokes __qncmmva_nocs %! [U2 R2 Q2 X2] = qncmmva(N,S,P); # this invokes __qncmmva_cs %! assert( U2, U1, 1e-5 ); %! assert( R2, R1, 1e-5 ); %! assert( Q2, Q1, 1e-5 ); %! assert( X2, X1, 1e-5 ); ## Example from table 5, p. 23, Herb Schwetman, "Implementing the Mean ## Value Algorith for the Solution of Queueing Network Models", ## Technical Report CSD-TR-355, Department of Computer Sciences, Purdue ## University, feb 15, 1982. %!test %! S = [1 0 .025; 0 15 .5]; %! V = [1 0 1; 0 1 1]; %! N = [15 5]; %! m = [-1 -1 1]; %! [U R Q X] = qncmmva(N,S,V,m); %! assert( U, [14.323 0 .358; 0 4.707 .157], 1e-3 ); %! assert( R, [1.0 0 .047; 0 15 .934], 1e-3 ); %! assert( Q, [14.323 0 .677; 0 4.707 .293], 1e-3 ); %! assert( X, [14.323 0 14.323; 0 .314 .314], 1e-3 ); ## Same test as above, but using routing probabilities instead of ## visits. Also, reordered the nodes such that server 1 is the PS node ## labeled "Sys 3" in the example; server 2 is the IS labeled "APL1" and ## server e is the IS labeled "IMS2" %!test %! S = [.025 1 15; .5 1 15 ]; %! P = zeros(2,3,2,3); %! P(1,1,1,2) = P(1,2,1,1) = 1; %! P(2,1,2,3) = P(2,3,2,1) = 1; %! N = [15 5]; %! m = [1 -1 -1]; %! r = [1 1]; # reference station is station 1 %! [U R Q X] = qncmmva(N,S,P,r,m); %! # FIXME: I replaced 14.3->14.323 %! assert( U, [0.358 14.323 0; 0.156 0 4.707], 1e-3 ); %! # FIXME: I replaced 14.3->14.323 %! assert( X, [14.323 14.3230 0; .314 0 .314 ], 1e-3 ); %! # FIXME: I replaced 14.3->14.323 %! assert( Q, [.677 14.323 0; .293 0 4.707], 1e-3 ); %! assert( R, [.047 1 15.0; .934 1 15.0], 1e-3 ); %! assert( Q, R.*X, 1e-5 ); # Little's Law ## Example figure 9 Herb Schwetman "Implementing the Mean ## Value Algorith for the Solution of Queueing Network Models", ## Technical Report CSD-TR-355, Department of Computer Sciences, Purdue ## University, feb 15, 1982. %!test %! C = 2; K = 3; %! S = [.01 .07 .10; ... %! .05 .07 .10 ]; %! P = zeros(C,K,C,K); %! P(1,1,1,2) = .7; %! P(1,1,1,3) = .2; %! P(1,1,2,1) = .1; %! P(2,1,2,2) = .3; %! P(2,1,2,3) = .5; %! P(2,1,1,1) = .2; %! P(1,2,1,1) = P(2,2,2,1) = 1; %! P(1,3,1,1) = P(2,3,2,1) = 1; %! N = [3 0]; %! [U R Q X] = qncmmva(N, S, P); %! assert( R, [.015 .133 .163; .073 .133 .163], 1e-3 ); %! assert( X, [12.609 8.826 2.522; 6.304 1.891 3.152], 1e-3 ); %! assert( Q, [.185 1.175 .412; .462 .252 .515], 1e-3 ); %! assert( U, [.126 .618 .252; .315 .132 .315], 1e-3 ); ## Example from Schwetman (figure 7, page 9 of ## http://docs.lib.purdue.edu/cstech/259/ ## "Testing network-of-queues software, technical report CSD-TR 330, ## Purdue University). Note that the results for that network (table 9 ## of the reference above) seems to be wrong. The "correct" results ## below have been computed using the multiclass MVA implementation of ## JMT (http://jmt.sourceforge.net/) %!test %! V = [ 1.00 0.45 0.50 0.00; ... %! 1.00 0.00 0.50 0.49 ]; %! N = [3 2]; %! S = [0.01 0.09 0.10 0.08; ... %! 0.05 0.09 0.10 0.08]; %! [U R Q X] = qncmmva(N, S, V); %! assert( U, [ 0.1215 0.4921 0.6075 0.0000; ... %! 0.3433 0.0000 0.3433 0.2691 ], 1e-4 ); %! assert( Q, [ 0.2131 0.7539 2.0328 0.0000; ... %! 0.5011 0.0000 1.1839 0.3149 ], 1e-4 ); %! assert( R.*V, [0.0175 0.0620 0.1672 0.0000; ... %! 0.0729 0.0000 0.1724 0.0458 ], 1e-4 ); %! assert( X, [12.1517 5.4682 6.0758 0.0000; ... %! 6.8669 0.0000 3.4334 3.3648 ], 1e-4 ); ## The following test case was used in a bug report from F. Paolieri. It ## consists of a three-class network with four nodes. There is just ## one job for each class n; that job visits node 1 and node 1+n. ## Singe service times at nodes 2:4 are all the same, and service time ## at node 1 is class-independent, we expect that all performance ## measures for nodes 2:4 are equal. %!test %! N = [1 1 1]; %! S = [0.20000 0.02000 0.00000 0.00000; %! 0.20000 0.00000 0.02000 0.00000; %! 0.20000 0.00000 0.00000 0.02000]; %! V = [1 1 0 0; %! 1 0 1 0; %! 1 0 0 1]; %! [U R Q X] = qncmmva(N,S,V); %! assert( Q(1,2), Q(2,3), 1e-5); %! assert( Q(2,3), Q(3,4), 1e-5); %! assert( abs(max(Q(:,1)) - min(Q(:,1))) < 1e-5 ); ## This example is from G. Casale and G. Serazzi. Quantitative system ## evaluation with java modeling tools. In Proceedings of the second ## joint WOSP/SIPEW international conference on Performance engineering, ## ICPE '11, pages 449-454, New York, NY, USA, 2011. ACM %!demo %! Ntot = 100; # total population size %! b = linspace(0.1,0.9,10); # fractions of class-1 requests %! S = [20 80 31 14 23 12; ... %! 90 30 33 20 14 7]; %! V = ones(size(S)); %! X1 = X1 = XX = zeros(size(b)); %! R1 = R2 = RR = zeros(size(b)); %! for i=1:length(b) %! N = [fix(b(i)*Ntot) Ntot-fix(b(i)*Ntot)]; %! # printf("[%3d %3d]\n", N(1), N(2) ); %! [U R Q X] = qncmmva( N, S, V ); %! X1(i) = X(1,1) / V(1,1); %! X2(i) = X(2,1) / V(2,1); %! XX(i) = X1(i) + X2(i); %! R1(i) = dot(R(1,:), V(1,:)); %! R2(i) = dot(R(2,:), V(2,:)); %! RR(i) = Ntot / XX(i); %! endfor %! subplot(2,1,1); %! plot(b, X1, ";Class 1;", "linewidth", 2, ... %! b, X2, ";Class 2;", "linewidth", 2, ... %! b, XX, ";System;", "linewidth", 2 ); %! legend("location","south"); legend("boxoff"); %! ylabel("Throughput"); %! subplot(2,1,2); %! plot(b, R1, ";Class 1;", "linewidth", 2, ... %! b, R2, ";Class 2;", "linewidth", 2, ... %! b, RR, ";System;", "linewidth", 2 ); %! legend("location","south"); legend("boxoff"); %! xlabel("Population mix \\beta for Class 1"); %! ylabel("Resp. Time"); %!demo %! S = [1 0 .025; 0 15 .5]; %! P = zeros(2,3,2,3); %! P(1,1,1,3) = P(1,3,1,1) = 1; %! P(2,2,2,3) = P(2,3,2,2) = 1; %! V = qncmvisits(P,[3 3]); # reference station is station 3 %! N = [15 5]; %! m = [-1 -1 1]; %! [U R Q X] = qncmmva(N,S,V,m) ## Example shown on Figure 9: Herb Schwetman, "Implementing the Mean ## Value Algorith for the Solution of Queueing Network Models", ## Technical Report CSD-TR-355, Department of Computer Sciences, Purdue ## University, feb 15, 1982. %!demo %! C = 2; K = 3; %! S = [.01 .07 .10; ... %! .05 .07 .10 ]; %! P = zeros(C,K,C,K); %! P(1,1,1,2) = .7; P(1,1,1,3) = .2; P(1,1,2,1) = .1; %! P(2,1,2,2) = .3; P(2,1,2,3) = .5; P(2,1,1,1) = .2; %! P(1,2,1,1) = P(2,2,2,1) = 1; %! P(1,3,1,1) = P(2,3,2,1) = 1; %! N = [3 0]; %! [U R Q X] = qncmmva(N, S, P) queueing/inst/qnos.m0000644000175000017500000001447513570046274014416 0ustar morenomoreno## Copyright (C) 2008, 2009, 2010, 2011, 2012, 2016, 2018 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qnos (@var{lambda}, @var{S}, @var{V}) ## @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qnos (@var{lambda}, @var{S}, @var{V}, @var{m}) ## ## @cindex open network, single class ## @cindex BCMP network ## ## Analyze open, single class BCMP queueing networks with @math{K} service centers. ## ## This function works for a subset of BCMP single-class open networks ## satisfying the following properties: ## ## @itemize ## ## @item The allowed service disciplines at network nodes are: FCFS, ## PS, LCFS-PR, IS (infinite server); ## ## @item Service times are exponentially distributed and ## load-independent; ## ## @item Center @math{k} can consist of @code{@var{m}(k) @geq{} 1} ## identical servers. ## ## @item Routing is load-independent ## ## @end itemize ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{lambda} ## Overall external arrival rate (@code{@var{lambda}>0}). ## ## @item @var{S}(k) ## average service time at center @math{k} (@code{@var{S}(k)>0}). ## ## @item @var{V}(k) ## average number of visits to center @math{k} (@code{@var{V}(k) @geq{} 0}). ## ## @item @var{m}(k) ## number of servers at center @math{i}. If @code{@var{m}(k) < 1}, ## enter @math{k} is a delay center (IS); otherwise it is a regular ## queueing center with @code{@var{m}(k)} servers. Default is ## @code{@var{m}(k) = 1} for all @math{k}. ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{U}(k) ## If @math{k} is a queueing center, ## @code{@var{U}(k)} is the utilization of center @math{k}. ## If @math{k} is an IS node, then @code{@var{U}(k)} is the ## @emph{traffic intensity} defined as @code{@var{X}(k)*@var{S}(k)}. ## ## @item @var{R}(k) ## center @math{k} average response time. ## ## @item @var{Q}(k) ## average number of requests at center @math{k}. ## ## @item @var{X}(k) ## center @math{k} throughput. ## ## @end table ## ## @strong{REFERENCES} ## ## @itemize ## @item ## G. Bolch, S. Greiner, H. de Meer and K. Trivedi, @cite{Queueing Networks ## and Markov Chains: Modeling and Performance Evaluation with Computer ## Science Applications}, Wiley, 1998 ## @end itemize ## ## @seealso{qnopen,qnclosed,qnosvisits} ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function [U R Q X] = qnos( varargin ) if ( nargin < 3 || nargin > 4 ) print_usage(); endif [err lambda S V m] = qnoschkparam( varargin {:} ); isempty(err) || error(err); all(S>0) || ... error( "S must be positive" ); ## If there are M/M/k servers with k>=1, compute the maximum ## processing capacity m(m<1) = -1; # avoids division by zero in next line [Umax kmax] = max( lambda * S .* V ./ m ); (Umax < 1) || ... error( "Processing capacity exceeded at center %d", kmax ); l = lambda*V; # arrival rates i = find( m == 1 ); # single station queueing centers if numel(i) [U(i) R(i) Q(i) X(i)] = qsmm1( l(i), 1./S(i) ); endif i = find( m<1 ); # delay centers if numel(i) [U(i) R(i) Q(i) X(i)] = qsmminf( l(i), 1./S(i) ); endif i = find( m>1 ); # multiple stations queueing centers if numel(i) [U(i) R(i) Q(i) X(i)] = qsmmm( l(i), 1./S(i), m(i) ); endif endfunction %!test %! lambda = 0; %! S = [1 1 1]; %! V = [1 1 1]; %! fail( "qnos(lambda,S,V)","lambda must be"); %! lambda = 1; %! S = [1 0 1]; %! fail( "qnos(lambda,S,V)","S must be"); %! S = [1 1 1]; %! m = [1 1]; %! fail( "qnos(lambda,S,V,m)","incompatible size"); %! V = [1 1 1 1]; %! fail( "qnos(lambda,S,V)","incompatible size"); %! fail( "qnos(1.0, [0.9 1.2], [1 1])", "exceeded at center 2"); %! fail( "qnos(1.0, [0.9 2.0], [1 1], [1 2])", "exceeded at center 2"); %! qnos(1.0, [0.9 1.9], [1 1], [1 2]); # should not fail %! qnos(1.0, [0.9 1.9], [1 1], [1 0]); # should not fail %! qnos(1.0, [1.9 1.9], [1 1], [0 0]); # should not fail %! qnos(1.0, [1.9 1.9], [1 1], [2 2]); # should not fail %!test %! # Example 34.1 p. 572 Bolch et al. %! lambda = 3; %! V = [16 7 8]; %! S = [0.01 0.02 0.03]; %! [U R Q X] = qnos( lambda, S, V ); %! assert( R, [0.0192 0.0345 0.107], 1e-2 ); %! assert( U, [0.48 0.42 0.72], 1e-2 ); %! assert( Q, R.*X, 1e-5 ); # check Little's Law %!test %! # Example p. 113, Lazowska et al. %! V = [121 70 50]; %! S = [0.005 0.03 0.027]; %! lambda=0.3; %! [U R Q X] = qnos( lambda, S, V ); %! assert( U(1), 0.182, 1e-3 ); %! assert( X(1), 36.3, 1e-2 ); %! assert( Q(1), 0.222, 1e-3 ); %! assert( Q, R.*X, 1e-5 ); # check Little's Law %!test %! lambda=[1]; %! P=[0]; %! V=qnosvisits(P,lambda); %! S=[0.25]; %! [U1 R1 Q1 X1]=qnos(sum(lambda),S,V); %! [U2 R2 Q2 X2]=qsmm1(lambda(1),1/S(1)); %! assert( U1, U2, 1e-5 ); %! assert( R1, R2, 1e-5 ); %! assert( Q1, Q2, 1e-5 ); %! assert( X1, X2, 1e-5 ); ## Check if processing capacity is properly accounted for %!test %! lambda = 1.1; %! V = 1; %! m = [2]; %! S = [1]; %! [U1 R1 Q1 X1] = qnos(lambda,S,V,m); %! m = [-1]; %! lambda = 90.0; %! [U1 R1 Q1 X1] = qnos(lambda,S,V,m); %!demo %! lambda = 3; %! V = [16 7 8]; %! S = [0.01 0.02 0.03]; %! [U R Q X] = qnos( lambda, S, V ); %! R_s = dot(R,V) # System response time %! N = sum(Q) # Average number in system %!test %! # Example 7.4 p. 287 Bolch et al. %! S = [ 0.04 0.03 0.06 0.05 ]; %! P = [ 0 0.5 0.5 0; 1 0 0 0; 0.6 0 0 0; 1 0 0 0 ]; %! lambda = [0 0 0 4]; %! V=qnosvisits(P,lambda); %! k = [ 3 2 4 1 ]; %! [U R Q X] = qnos( sum(lambda), S, V ); %! assert( X, [20 10 10 4], 1e-4 ); %! assert( U, [0.8 0.3 0.6 0.2], 1e-2 ); %! assert( R, [0.2 0.043 0.15 0.0625], 1e-3 ); %! assert( Q, [4, 0.429 1.5 0.25], 1e-3 ); queueing/inst/ctmcchkQ.m0000644000175000017500000000465113570046274015166 0ustar morenomoreno## Copyright (C) 2012 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {[@var{result} @var{err}] =} ctmcchkQ (@var{Q}) ## ## @cindex Markov chain, continuous time ## ## If @var{Q} is a valid infinitesimal generator matrix, return ## the size (number of rows or columns) of @var{Q}. If @var{Q} is not ## an infinitesimal generator matrix, set @var{result} to zero, and ## @var{err} to an appropriate error string. ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function [result err] = ctmcchkQ( Q ) persistent epsilon = 100*eps; if ( nargin != 1 ) print_usage(); endif result = 0; err = ""; if ( !issquare(Q) ) err = "P is not a square matrix"; return; endif if (any(Q(~logical(eye(size(Q))))<0) || ... # there is any negative non-diagonal element norm( sum(Q,2), "inf" ) > epsilon ) err = "Q is not an infinitesimal generator matrix"; return; endif result = rows(Q); endfunction %!test %! Q = [0]; %! [result err] = ctmcchkQ(Q); %! assert( result, 1 ); %! assert( err, "" ); %!test %! N = 10; %! Q = ctmcbd(rand(1,N-1),rand(1,N-1)); %! [result err] = ctmcchkQ(Q); %! assert( result, N ); %! assert( err, "" ); %!test %! Q = [1 2 3; 4 5 6]; %! [result err] = ctmcchkQ(Q); %! assert( result, 0 ); %! assert( index(err, "square") > 0 ); %!test %! N = 10; %! Q = ctmcbd(rand(1,N-1),rand(1,N-1)); %! Q(2,1) = -1; %! [result err] = ctmcchkQ(Q); %! assert( result, 0 ); %! assert( index(err, "infinitesimal") > 0 ); %!test %! N = 10; %! Q = ctmcbd(linspace(1,N-1,N-1),linspace(1,N-1,N-1)); %! Q(1,1) += 7; %! [result err] = ctmcchkQ(Q); %! assert( result, 0 ); %! assert( index(err, "infinitesimal") > 0 ); queueing/inst/qnclosed.m0000644000175000017500000000733413570046274015242 0ustar morenomoreno## Copyright (C) 2008, 2009, 2010, 2011, 2012, 2016 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qnclosed (@var{N}, @var{S}, @var{V}, @dots{}) ## ## @cindex closed network, single class ## @cindex closed network, multiple classes ## ## This function computes steady-state performance measures of closed ## queueing networks using the Mean Value Analysis (MVA) algorithm. The ## qneneing network is allowed to contain fixed-capacity centers, delay ## centers or general load-dependent centers. Multiple request ## classes are supported. ## ## This function dispatches the computation to one of ## @code{qncsemva}, @code{qncsmvald} or @code{qncmmva}. ## ## @itemize ## ## @item If @var{N} is a scalar, the network is assumed to have a single ## class of requests; in this case, the exact MVA algorithm is used to ## analyze the network. If @var{S} is a vector, then @code{@var{S}(k)} ## is the average service time of center @math{k}, and this function ## calls @code{qncsmva} which supports load-independent ## service centers. If @var{S} is a matrix, @code{@var{S}(k,i)} is the ## average service time at center @math{k} when @math{i=1, @dots{}, N} ## jobs are present; in this case, the network is analyzed with the ## @code{qncmmvald} function. ## ## @item If @var{N} is a vector, the network is assumed to have multiple ## classes of requests, and is analyzed using the exact multiclass ## MVA algorithm as implemented in the @code{qncmmva} function. ## ## @end itemize ## ## @seealso{qncsmva, qncsmvald, qncmmva} ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function [U R Q X] = qnclosed( N, S, V, varargin ) if ( nargin < 3 ) print_usage(); endif if ( isscalar(N) ) if ( isvector(S) ) [U R Q X] = qncsmva( N, S, V, varargin{:} ); else [U R Q X] = qncsmvald( N, S, V, varargin{:} ); endif else [U R Q X] = qncmmva( N, S, V, varargin{:} ); endif endfunction %!demo %! P = [0 0.3 0.7; 1 0 0; 1 0 0]; # Transition probability matrix %! S = [1 0.6 0.2]; # Average service times %! m = ones(size(S)); # All centers are single-server %! Z = 2; # External delay %! N = 15; # Maximum population to consider %! V = qncsvisits(P); # Compute number of visits %! X_bsb_lower = X_bsb_upper = X_ab_lower = X_ab_upper = X_mva = zeros(1,N); %! for n=1:N %! [X_bsb_lower(n) X_bsb_upper(n)] = qncsbsb(n, S, V, m, Z); %! [X_ab_lower(n) X_ab_upper(n)] = qncsaba(n, S, V, m, Z); %! [U R Q X] = qnclosed( n, S, V, m, Z ); %! X_mva(n) = X(1)/V(1); %! endfor %! close all; %! plot(1:N, X_ab_lower,"g;Asymptotic Bounds;", ... %! 1:N, X_bsb_lower,"k;Balanced System Bounds;", ... %! 1:N, X_mva,"b;MVA;", "linewidth", 2, ... %! 1:N, X_bsb_upper,"k", 1:N, X_ab_upper,"g" ); %! axis([1,N,0,1]); legend("location","southeast"); legend("boxoff"); %! xlabel("Number of Requests n"); ylabel("System Throughput X(n)"); queueing/inst/qncmpopmix.m0000644000175000017500000001161413570046274015621 0ustar morenomoreno## Copyright (C) 2008, 2009, 2010, 2011, 2012, 2016, 2018 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {pop_mix =} qncmpopmix (@var{k}, @var{N}) ## ## @cindex population mix ## @cindex closed network, multiple classes ## ## Return the set of population mixes for a closed multiclass queueing ## network with exactly @var{k} customers. Specifically, given a ## closed multiclass QN with @math{C} customer classes, where there ## are @code{@var{N}(c)} class @math{c} requests, @math{c = 1, @dots{}, C} ## a @math{k}-mix @math{M} is a vector of length @math{C} with the following ## properties: ## ## @itemize ## @item @math{0 @leq{} M_c @leq{} @var{N}(c)} for all @math{c = 1, @dots{}, C}; ## @item @math{\sum_{c=1}^C M_c = k} ## @end itemize ## ## In other words, a @math{k}-mix is an allocation of @math{k} ## requests to @math{C} classes such that the number of requests ## assigned to class @math{c} does not exceed the maximum value ## @code{@var{N}(c)}. ## ## @var{pop_mix} is a matrix with @math{C} columns, such ## that each row represents a valid mix. ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{k} ## Size of the requested mix (scalar, @code{@var{k} @geq{} 0}). ## ## @item @var{N}(c) ## number of class @math{c} requests (@code{@var{k} @leq{} sum(@var{N})}). ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{pop_mix}(i,c) ## number of class @math{c} requests in the @math{i}-th population ## mix. The number of mixes is @code{rows(@var{pop_mix})}. ## ## @end table ## ## If you are interested in the number of @math{k}-mixes only, you can ## use the funcion @code{qnmvapop}. ## ## @strong{REFERENCES} ## ## @itemize ## @item ## Herb Schwetman, @cite{Implementing the Mean Value Algorithm for the ## Solution of Queueing Network Models}, Technical Report ## @uref{http://docs.lib.purdue.edu/cstech/286/, 80-355}, Department of Computer ## Sciences, Purdue University, revised February 15, 1982. ## @end itemize ## ## The slightly different problem of enumerating all tuples @math{k_1, ## @dots{}, k_N} such that @math{\sum_i k_i = k} and @math{k_i ## @geq{} 0}, for a given @math{k @geq{} 0} has been described in ## S. Santini, @cite{Computing the Indices for a Complex Summation}, ## unpublished report, available at ## @url{http://arantxa.ii.uam.es/~ssantini/writing/notes/s668_summation.pdf} ## ## @seealso{qncmnpop} ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function pop_mix = qncmpopmix( k, population ) if ( nargin != 2 ) print_usage(); endif isvector( population ) && all( population>=0 ) || ... error( "N must be an array >=0" ); R = length(population); # number of classes ( isscalar(k) && k >= 0 && k <= sum(population) ) || ... error( "valid range for k is [0, %d]", sum(population)); N = zeros(1, R); const = min(k, population); mp = 0; pop_mix = []; # Init result while ( N(R) <= const(R) ) x=k-mp; ## Fill the current configuration i=1; while ( x>0 && i<=R ) N(i) = min(x,const(i)); x = x-N(i); mp = mp+N(i); i = i+1; endwhile ## here the configuration is filled. add it to the set of mixes assert( sum(N), k ); pop_mix = [pop_mix; N]; ## FIXME: pop_mix is continuously resized ## advance to the next feasible configuration i = 1; sw = true; while sw if ( ( mp==k || N(i)==const(i)) && ( i. ## -*- texinfo -*- ## ## @deftypefn {Function File} {[@var{r} @var{err}] =} dtmcchkP (@var{P}) ## ## @cindex Markov chain, discrete time ## @cindex DTMC ## @cindex discrete time Markov chain ## ## Check whether @var{P} is a valid transition probability matrix. ## ## If @var{P} is valid, @var{r} is the size (number of rows or columns) ## of @var{P}. If @var{P} is not a transition probability matrix, ## @var{r} is set to zero, and @var{err} to an appropriate error string. ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function [result err] = dtmcchkP( P ) if ( nargin != 1 ) print_usage(); endif result = 0; err = ""; if ( !issquare(P) ) err = "P is not a square matrix"; return; endif if ( any(P(:)<-eps) || norm( sum(P,2) - 1, "inf" ) > columns(P)*eps ) err = "P is not a stochastic matrix"; return; endif result = rows(P); endfunction %!test %! [r err] = dtmcchkP( [1 1 1; 1 1 1] ); %! assert( r, 0 ); %! assert( index(err, "square") > 0 ); %!test %! [r err] = dtmcchkP( [1 0 0; 0 0.5 0; 0 0 0] ); %! assert( r, 0 ); %! assert( index(err, "stochastic") > 0 ); %!test %! P = [0 1; 1 0]; %! assert( dtmcchkP(P), 2 ); %!test %! P = dtmcbd( linspace(0.1,0.4,10), linspace(0.4,0.1,10) ); %! assert( dtmcchkP(P), rows(P) ); %!test %! N = 1000; %! P = reshape( 1:N^2, N, N ); %! P(1:N+1:end) = 0; %! P = P ./ repmat(sum(P,2),1,N); %! assert( dtmcchkP(P), N );queueing/inst/erlangc.m0000644000175000017500000000635413570046274015046 0ustar morenomoreno## Copyright (C) 2014, 2019 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {@var{C} =} erlangc (@var{A}, @var{m}) ## ## @cindex Erlang-C formula ## ## Compute the steady-state probability of delay in the Erlang delay model. ## ## The Erlang-C formula @math{E_C(A, m)} gives the probability that an ## open queueing system with @math{m} identical servers, infinite ## wating space, arrival rate @math{\lambda}, individual service rate ## @math{\mu} and offered load @math{A = \lambda / \mu} has all the ## servers busy. This is the waiting probability in an ## @math{M/M/m/\infty} system with @math{m} servers and an infinite ## queue. ## ## @tex ## @math{E_C(A, m)} is defined as: ## ## $$ ## E_C(A, m) = \displaystyle{ {A^m \over m!} {1 \over 1-\rho} \left( \sum_{k=0}^{m-1} {A^k \over k!} + {A^m \over m!} {1 \over 1 - \rho} \right) ^{-1}} ## $$ ## ## where @math{\rho = A / m = \lambda / (m \mu)}. ## @end tex ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{A} ## Offered load. @math{A = \lambda / \mu} where ## @math{\lambda} is the mean arrival rate and @math{\mu} the mean ## service rate of each individual server (real, @math{0 < A < m}). ## ## @item @var{m} ## Number of identical servers (integer, @math{m @geq{} 1}). ## Default @math{m = 1} ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{B} ## The value @math{E_C(A, m)} ## ## @end table ## ## @var{A} or @var{m} can be vectors, and in this case, the results will ## be vectors as well. ## ## @strong{REFERENCES} ## ## @itemize ## @item ## G. Zeng, @cite{Two common properties of the Erlang-B function, Erlang-C function, and Engset blocking function}, Mathematical and Computer Modelling, Volume 37, Issues 12-13, June 2003, Pages 1287-1296 ## @end itemize ## ## @seealso{erlangb,engset,qsmmm} ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function C = erlangc(A, m) if ( nargin < 1 || nargin > 2 ) print_usage(); endif ( isnumeric(A) && all(A(:) > 0) ) || error("A must be positive"); if ( nargin == 1 ) m = 1; else ( isnumeric(m) && all( fix(m(:)) == m(:)) && all( m(:) > 0 ) ) || error("m must be a positive integer"); endif [err A, m] = common_size(A, m); if ( err ) error("parameters are not of common size"); endif all( A(:) < m(:) ) || error("A must be < m"); rho = A ./ m; B = erlangb(A, m); C = B ./ (1 - rho .* (1 - B)); endfunction %!test %! fail("erlangc('foo',1)", "positive"); %! fail("erlangc(1,'bar')", "positive"); queueing/inst/qncsmvald.m0000644000175000017500000001542513570046274015422 0ustar morenomoreno## Copyright (C) 2009, 2010, 2011, 2012, 2016, 2018 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncsmvald (@var{N}, @var{S}, @var{V}) ## @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncsmvald (@var{N}, @var{S}, @var{V}, @var{Z}) ## ## @cindex Mean Value Analysys (MVA) ## @cindex MVA ## @cindex closed network, single class ## @cindex load-dependent service center ## ## Mean Value Analysis algorithm for closed, single class queueing ## networks with @math{K} service centers and load-dependent service ## times. This function supports FCFS, LCFS-PR, PS and IS nodes. For ## networks with only fixed-rate centers and multiple-server ## nodes, the function @code{qncsmva} is more efficient. ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{N} ## Population size (number of requests in the system, @code{@var{N} @geq{} 0}). ## If @code{@var{N} == 0}, this function returns @code{@var{U} = @var{R} = @var{Q} = @var{X} = 0} ## ## @item @var{S}(k,n) ## mean service time at center @math{k} ## where there are @math{n} requests, @math{1 @leq{} n ## @leq{} N}. @code{@var{S}(k,n)} @math{= 1 / \mu_{k}(n)}, ## where @math{\mu_{k}(n)} is the service rate of center @math{k} ## when there are @math{n} requests. ## ## @item @var{V}(k) ## average number of visits to service center @math{k} (@code{@var{V}(k) @geq{} 0}). ## ## @item @var{Z} ## external delay ("think time", @code{@var{Z} @geq{} 0}); default 0. ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{U}(k) ## utilization of service center @math{k}. The ## utilization is defined as the probability that service center ## @math{k} is not empty, that is, @math{U_k = 1-\pi_k(0)} where ## @math{\pi_k(0)} is the steady-state probability that there are 0 ## jobs at service center @math{k}. ## ## @item @var{R}(k) ## response time on service center @math{k}. ## ## @item @var{Q}(k) ## average number of requests in service center @math{k}. ## ## @item @var{X}(k) ## throughput of service center @math{k}. ## ## @end table ## ## @strong{NOTES} ## ## In presence of load-dependent servers, the MVA algorithm is known ## to be numerically unstable. Generally this problem manifests itself ## as negative response times or utilization. ## ## @strong{REFERENCES} ## ## @itemize ## @item ## M. Reiser and S. S. Lavenberg, @cite{Mean-Value Analysis of Closed ## Multichain Queuing Networks}, Journal of the ACM, vol. 27, n. 2, ## April 1980, pp. 313--322. @uref{http://doi.acm.org/10.1145/322186.322195, 10.1145/322186.322195} ## @end itemize ## ## This implementation is described in G. Bolch, S. Greiner, H. de Meer ## and K. Trivedi, @cite{Queueing Networks and Markov Chains: Modeling ## and Performance Evaluation with Computer Science Applications}, Wiley, ## 1998, Section 8.2.4.1, ``Networks with Load-Dependent Service: Closed ## Networks''. ## ## @seealso{qncsmva} ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function [U R Q X] = qncsmvald( N, S, V, Z ) if ( nargin < 3 || nargin > 4 ) print_usage(); endif isvector(V) && all(V>=0) || ... error( "V must be a vector >= 0" ); V = V(:)'; # make V a row vector K = length(V); # Number of servers isscalar(N) && N >= 0 || ... error( "N must be >= 0" ); ( ismatrix(S) && rows(S) == K && columns(S) >= N ) || ... error( "S size mismatch: is %dx%d, should be %dx%d", rows(S), columns(S), K, N ); all(S(:)>=0) || ... error( "S must be >= 0" ); if ( nargin < 4 ) Z = 0; else isscalar(Z) && Z>=0 || ... error( "Z must be >= 0" ); endif ## Initialize results p = zeros( K, N+1 ); # p(k,i+1) is the probability that there are i jobs at server k, given that the network population is j p(:,1) = 1; U = R = Q = X = zeros( 1, K ); X_s = 0; # System throughput ## Main MVA loop, iterates over the population size for n=1:N # over population size j=1:n; ## for i=1:K ## R(i) = sum( j.*S(i,j).*p(i,j) ); ## endfor R = sum( repmat(j,K,1).*S(:,1:n).*p(:,1:n), 2)'; R_s = dot( V, R ); # System response time X_s = n / (Z+R_s); # System Throughput ## G_N = G_Nm1 / X_s; G_Nm1 = G_N; ## prepare for next iteration for i=1:K p(i, 1+j) = X_s * S(i,j) .* p(i,j) * V(i); p(i, 1) = 1-sum(p(i,1+j)); endfor endfor Q = X_s * ( V .* R ); U = 1-p(:,1)'; # Service centers utilization X = X_s * V; # Service centers throughput endfunction ## Check degenerate case of N==0 (general LD case) %!test %! N = 0; %! S = [1 2; 3 4; 5 6; 7 8]; %! V = [1 1 1 4]; %! [U R Q X] = qncsmvald(N, S, V); %! assert( U, 0*V ); %! assert( R, 0*V ); %! assert( Q, 0*V ); %! assert( X, 0*V ); %!test %! # Exsample 3.42 p. 577 Jain %! V = [ 16 10 5 ]; %! N = 20; %! S = [ 0.125 0.3 0.2 ]; %! Sld = repmat( S', 1, N ); %! Z = 4; %! [U1 R1 Q1 X1] = qncsmvald(N,Sld,V,Z); %! [U2 R2 Q2 X2] = qncsmva(N,S,V,ones(1,3),Z); %! assert( U1, U2, 1e-3 ); %! assert( R1, R2, 1e-3 ); %! assert( Q1, Q2, 1e-3 ); %! assert( X1, X2, 1e-3 ); %!test %! # Example 8.7 p. 349 Bolch et al. %! N = 3; %! Sld = 1 ./ [ 2 4 4; ... %! 1.667 1.667 1.667; ... %! 1.25 1.25 1.25; ... %! 1 2 3 ]; %! V = [ 1 .5 .5 1 ]; %! [U R Q X] = qncsmvald(N,Sld,V); %! assert( Q, [0.624 0.473 0.686 1.217], 1e-3 ); %! assert( R, [0.512 0.776 1.127 1], 1e-3 ); %! assert( all( U<=1) ); %!test %! # Example 8.4 p. 333 Bolch et al. %! N = 3; %! S = [ .5 .6 .8 1 ]; %! m = [2 1 1 N]; %! Sld = zeros(3,N); %! Sld(1,:) = .5 ./ [1 2 2]; %! Sld(2,:) = [.6 .6 .6]; %! Sld(3,:) = [.8 .8 .8]; %! Sld(4,:) = 1 ./ [1 2 3]; %! V = [ 1 .5 .5 1 ]; %! [U1 R1 Q1 X1] = qncsmvald(N,Sld,V); %! [U2 R2 Q2 X2] = qncsmva(N,S,V,m); %! ## Note that qncsmvald computes the utilization in a different %! ## way as qncsmva; in fact, qncsmva knows that service %! ## center i has m(i)>1 servers, but qncsmvald does not. Thus, %! ## utilizations for multiple-server nodes cannot be compared %! assert( U1([2,3]), U2([2,3]), 1e-3 ); %! assert( R1, R2, 1e-3 ); %! assert( Q1, Q2, 1e-3 ); %! assert( X1, X2, 1e-3 ); queueing/inst/qsmm1k.m0000644000175000017500000001303513572245572014642 0ustar morenomoreno## Copyright (C) 2008, 2009, 2010, 2011, 2012, 2016, 2019 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}, @var{p0}, @var{pK}] =} qsmm1k (@var{lambda}, @var{mu}, @var{K}) ## @deftypefnx {Function File} {@var{pn} =} qsmm1k (@var{lambda}, @var{mu}, @var{K}, @var{n}) ## ## @cindex @math{M/M/1/K} system ## ## Compute utilization, response time, average number of requests and ## throughput for a @math{M/M/1/K} finite capacity system. ## ## In a @math{M/M/1/K} queue there is a single server and a queue with ## finite capacity: the maximum number of requests in the system ## (including the request being served) is @math{K}, and the maximum ## queue length is therefore @math{K-1}. ## ## @tex ## The steady-state probability @math{\pi_n} that there are @math{n} ## jobs in the system, @math{0 @leq{} n @leq{} K}, is: ## ## $$ ## \pi_n = {(1-a)a^n \over 1-a^{K+1}} ## $$ ## ## where @math{a = \lambda/\mu}. ## @end tex ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{lambda} ## Arrival rate (@code{@var{lambda}>0}). ## ## @item @var{mu} ## Service rate (@code{@var{mu}>0}). ## ## @item @var{K} ## Maximum number of requests allowed in the system (@code{@var{K} @geq{} 1}). ## ## @item @var{n} ## Number of requests in the (@code{0 @leq{} @var{n} @leq{} K}). ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{U} ## Service center utilization, which is defined as @code{@var{U} = 1-@var{p0}} ## ## @item @var{R} ## Service center response time ## ## @item @var{Q} ## Average number of requests in the system ## ## @item @var{X} ## Service center throughput ## ## @item @var{p0} ## Steady-state probability that there are no requests in the system ## ## @item @var{pK} ## Steady-state probability that there are @math{K} requests in the system ## (i.e., that the system is full) ## ## @item @var{pn} ## Steady-state probability that there are @math{n} requests in the system ## (including the one being served). ## ## @end table ## ## If this function is called with less than four arguments, ## @var{lambda}, @var{mu} and @var{K} can be vectors of the ## same size. In this case, the results will be vectors as well. ## ## @seealso{qsmm1,qsmminf,qsmmm} ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function [U_or_pn R Q X p0 pK] = qsmm1k( lambda, mu, K, n ) if ( nargin < 3 || nargin > 4 ) print_usage(); endif ( isvector(lambda) && isvector(mu) && isvector(K) ) || ... error( "lambda, mu, K must be vectors of the same size" ); [err lambda mu K] = common_size( lambda, mu, K ); if ( err ) error( "Parameters are not of common size" ); endif all( K>0 ) || ... error( "K must be >0" ); ( all( lambda>0 ) && all( mu>0 ) ) || ... error( "lambda and mu must be >0" ); a = lambda./mu; if (nargin < 4) U_or_pn = R = Q = X = p0 = pK = 0*lambda; ## persistent tol = 1e-7; ## if a!=1 ## i = find( abs(a-1)>tol ); i = find( a != 1 ); p0(i) = (1-a(i))./(1-a(i).^(K(i)+1)); pK(i) = (1-a(i)).*(a(i).^K(i))./(1-a(i).^(K(i)+1)); Q(i) = a(i)./(1-a(i)) - (K(i)+1)./(1-a(i).^(K(i)+1)).*(a(i).^(K(i)+1)); ## if a==1 ## i = find( abs(a-1)<=tol ); i = find( a == 1 ); p0(i) = pK(i) = 1./(K(i)+1); Q(i) = K(i)/2; ## Compute other performance measures U_or_pn = 1-p0; X = lambda.*(1-pK); R = Q ./ X; else (length(lambda) == 1) || error("lambda must be a scalar if this function is called with four arguments"); isvector(n) || error("n must be a vector"); (all(n >= 0) && all(n <= K)) || error("n must be >= 0 and <= K"); n = n(:)'; if (a != 1) # we know that a must be a scalar U_or_pn = ((1 - a) * a.^n) ./ (1 - a^(K+1)); else U_or_pn = 1/(K+1) * ones(size(n)); endif endif endfunction %!test %! lambda = mu = 1; %! K = 10; %! [U R Q X p0] = qsmm1k(lambda,mu,K); %! assert( Q, K/2, 1e-7 ); %! assert( U, 1-p0, 1e-7 ); %!test %! lambda = 1; %! mu = 1.2; %! K = 10; %! [U R Q X p0 pK] = qsmm1k(lambda, mu, K); %! prob = qsmm1k(lambda, mu, K, 0:K); %! assert( p0, prob(1), 1e-7 ); %! assert( pK, prob(K+1), 1e-7 ); %!test %! # Compare the result with the equivalent Markov chain %! lambda = 0.8; %! mu = 0.8; %! K = 10; %! [U1 R1 Q1 X1] = qsmm1k( lambda, mu, K ); %! birth = lambda*ones(1,K); %! death = mu*ones(1,K); %! q = ctmc(ctmcbd( birth, death )); %! U2 = 1-q(1); %! Q2 = dot( [0:K], q ); %! assert( U1, U2, 1e-4 ); %! assert( Q1, Q2, 1e-4 ); %!demo %! ## Given a M/M/1/K queue, compute the steady-state probability pk %! ## of having n requests in the systen. %! lambda = 0.2; %! mu = 0.25; %! K = 10; %! n = 0:10; %! pn = qsmm1k(lambda, mu, K, n); %! plot(n, pn, "-o", "linewidth", 2); %! xlabel("N. of requests (n)"); %! ylabel("p_n"); %! title(sprintf("M/M/1/%d system, \\lambda = %g, \\mu = %g", K, lambda, mu)); queueing/inst/qncsconvld.m0000644000175000017500000001747713570046274015615 0ustar morenomoreno## Copyright (C) 2008, 2009, 2010, 2011, 2012, 2016, 2018 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}, @var{G}] =} qncsconvld (@var{N}, @var{S}, @var{V}) ## ## @cindex closed network ## @cindex normalization constant ## @cindex convolution algorithm ## @cindex load-dependent service center ## ## Convolution algorithm for product-form, single-class closed ## queueing networks with @math{K} general load-dependent service ## centers. ## ## This function computes steady-state performance measures for ## single-class, closed networks with load-dependent service centers ## using the convolution algorithm; the normalization constants are also ## computed. The normalization constants are returned as vector ## @code{@var{G}=[@var{G}(1), @dots{}, @var{G}(N+1)]} where ## @code{@var{G}(i+1)} is the value of @math{G(i)}. ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{N} ## Number of requests in the system (@code{@var{N}>0}). ## ## @item @var{S}(k,n) ## mean service time at center @math{k} where there are @math{n} ## requests, @math{1 @leq{} n @leq{} N}. @code{@var{S}(k,n)} @math{= 1 / \mu_{k,n}}, where @math{\mu_{k,n}} is the service rate of center ## @math{k} when there are @math{n} requests. ## ## @item @var{V}(k) ## visit count of service center @math{k} ## (@code{@var{V}(k) @geq{} 0}). The length of @var{V} is the number of ## servers @math{K} in the network. ## ## @end table ## ## @strong{OUTPUT} ## ## @table @code ## ## @item @var{U}(k) ## center @math{k} utilization. ## ## @item @var{R}(k) ## average response time at center @math{k}. ## ## @item @var{Q}(k) ## average number of requests in center @math{k}. ## ## @item @var{X}(k) ## center @math{k} throughput. ## ## @item @var{G}(n) ## Normalization constants (vector). @code{@var{G}(n+1)} ## corresponds to @math{G(n)}, as array indexes in Octave start ## from 1. ## ## @end table ## ## @strong{REFERENCES} ## ## @itemize ## @item ## Herb Schwetman, @cite{Some Computational Aspects of Queueing Network ## Models}, Technical Report ## @uref{http://docs.lib.purdue.edu/cstech/285/, CSD-TR-354}, Department ## of Computer Sciences, Purdue University, February 1981 (revised). ## ## @item ## M. Reiser, H. Kobayashi, @cite{On The Convolution Algorithm for ## Separable Queueing Networks}, In Proceedings of the 1976 ACM ## SIGMETRICS Conference on Computer Performance Modeling Measurement and ## Evaluation (Cambridge, Massachusetts, United States, March 29--31, ## 1976). SIGMETRICS '76. ACM, New York, NY, ## pp. 109--117. @uref{http://doi.acm.org/10.1145/800200.806187, 10.1145/800200.806187} ## @end itemize ## ## This implementation is based on G. Bolch, S. Greiner, H. de Meer and ## K. Trivedi, @cite{Queueing Networks and Markov Chains: Modeling and ## Performance Evaluation with Computer Science Applications}, Wiley, ## 1998, pp. 313--317. Function @command{qncsconvld} is slightly ## different from the version described in Bolch et al. because it ## supports general load-dependent centers (while the version in the book ## does not). The modification is in the definition of function ## @code{F()} in @command{qncsconvld} which has been made similar to ## function @math{f_i} defined in Schwetman, @cite{Some Computational ## Aspects of Queueing Network Models}. ## ## @seealso{qncsconv} ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function [U R Q X G] = qncsconvld( N, S, V ) if ( nargin != 3 ) print_usage(); endif ( isscalar(N) && N>0 ) || ... error( "N must be a positive scalar" ); K = N; # To be compliant with the reference, we denote K as the population size ( isvector(V) && all(V>=0) ) || ... error( "V must be a vector >=0" ); V = V(:)'; # Make V a row vector N = length(V); # Number of service centers if ( isnumeric(S) ) ( rows(S) == N && columns(S) == K) || ... error( sprintf("S size mismatch: is %dx%d, should be %dx%d", rows(S), columns(S),K,N ) ); all(S(:)>=0) || ... error( "S must be >=0" ); endif ## Initialization G_n = G_nm1 = zeros(1,K+1); G_n(1) = 1; F_n = zeros(N,K+1); F_n(:,1) = 1; for k=1:K G_n(k+1) = F_n(1,k+1) = F(1,k,V,S); endfor ## Main convolution loop for n=2:N G_nm1 = G_n; for k=2:K+1 F_n(n,k) = F(n,k-1,V,S); endfor G_n = conv( F_n(n,:), G_nm1(:) )(1:K+1); endfor ## Done computation of G(n,k). G = G_n; G = G(:)'; # ensure G is a row vector ## Computes performance measures X = V*G(K)/G(K+1); Q = U = zeros(1,N); for i=1:N G_N_i = zeros(1,K+1); G_N_i(1) = 1; for k=1:K j=1:k; G_N_i(k+1) = G(k+1)-dot( F_n(i,j+1), G_N_i(k-j+1) ); endfor k=0:K; p_i(k+1) = F_n(i,k+1)./G(K+1).*G_N_i(K-k+1); Q(i) = dot( k, p_i( k+1 ) ); U(i) = 1-p_i(1); endfor R = Q ./ X; endfunction %!test %! K=3; %! S = [ 1 1 1; 1 1 1 ]; %! V = [ 1 .667 .2 ]; %! fail( "qncsconvld(K,S,V)", "size mismatch" ); %!test %! # Example 8.1 p. 318 Bolch et al. %! K=3; %! S = [ 1/0.8 ./ [1 2 2]; %! 1/0.6 ./ [1 2 3]; %! 1/0.4 ./ [1 1 1] ]; %! V = [ 1 .667 .2 ]; %! [U R Q X G] = qncsconvld( K, S, V ); %! assert( G, [1 2.861 4.218 4.465], 5e-3 ); %! assert( X, [0.945 0.630 0.189], 1e-3 ); %! assert( Q, [1.290 1.050 0.660], 1e-3 ); %! assert( R, [1.366 1.667 3.496], 1e-3 ); %!test %! # Example 8.3 p. 331 Bolch et al. %! # compare results of convolution with those of mva %! K = 6; %! S = [ 0.02 0.2 0.4 0.6 ]; %! V = [ 1 0.4 0.2 0.1 ]; %! [U_mva R_mva Q_mva X_mva] = qncsmva(K, S, V); %! [U_con R_con Q_con X_con G] = qncsconvld(K, repmat(S',1,K), V ); %! assert( U_mva, U_con, 1e-5 ); %! assert( R_mva, R_con, 1e-5 ); %! assert( Q_mva, Q_con, 1e-5 ); %! assert( X_mva, X_con, 1e-5 ); %!test %! # Compare the results of convolution to those of mva %! S = [ 0.02 0.2 0.4 0.6 ]; %! K = 6; %! V = [ 1 0.4 0.2 0.1 ]; %! m = [ 1 5 2 1 ]; %! [U_mva R_mva Q_mva X_mva] = qncsmva(K, S, V); %! [U_con R_con Q_con X_con G] = qncsconvld(K, repmat(S',1,K), V); %! assert( U_mva, U_con, 1e-5 ); %! assert( R_mva, R_con, 1e-5 ); %! assert( Q_mva, Q_con, 1e-5 ); %! assert( X_mva, X_con, 1e-5 ); %!function r = S_function(k,n) %! M = [ 1/0.8 ./ [1 2 2]; %! 1/0.6 ./ [1 2 3]; %! 1/0.4 ./ [1 1 1] ]; %! r = M(k,n); %!test %! # Example 8.1 p. 318 Bolch et al. %! K=3; %! V = [ 1 .667 .2 ]; %! [U R Q X G] = qncsconvld( K, @S_function, V ); %! assert( G, [1 2.861 4.218 4.465], 5e-3 ); %! assert( X, [0.945 0.630 0.189], 1e-3 ); %! assert( Q, [1.290 1.050 0.660], 1e-3 ); %! assert( R, [1.366 1.667 3.496], 1e-3 ); ## result = F(i,j,v,S) ## ## Helper fuction to compute a generalization of equation F(i,j) as ## defined in Eq 7.61 p. 289 of Bolch, Greiner, de Meer, Trivedi ## "Queueing Networks and Markov Chains: Modeling and Performance ## Evaluation with Computer Science Applications", Wiley, 1998. This ## generalization is taken from Schwetman, "Some Computational Aspects ## of Queueing Network Models", Technical Report CSD-TR 354, Dept. of ## CS, Purdue University, Dec 1980 (see definition of f_i(n) on p. 7). function result = F(i,j,v,S) k_i = j; if ( k_i == 0 ) result = 1; else result = v(i)^k_i * prod(S(i,1:k_i)); endif endfunction queueing/inst/dtmc.m0000644000175000017500000001244013570046274014353 0ustar morenomoreno## Copyright (C) 2008, 2009, 2010, 2011, 2012, 2016, 2018 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {@var{p} =} dtmc (@var{P}) ## @deftypefnx {Function File} {@var{p} =} dtmc (@var{P}, @var{n}, @var{p0}) ## ## @cindex Markov chain, discrete time ## @cindex discrete time Markov chain ## @cindex DTMC ## @cindex Markov chain, stationary probabilities ## @cindex Markov chain, transient probabilities ## ## Compute stationary or transient state occupancy probabilities for a discrete-time Markov chain. ## ## With a single argument, compute the stationary state occupancy ## probabilities @code{@var{p}(1), @dots{}, @var{p}(N)} for a ## discrete-time Markov chain with finite state space @math{@{1, @dots{}, ## N@}} and with @math{N \times N} transition matrix ## @var{P}. With three arguments, compute the transient state occupancy ## probabilities @code{@var{p}(1), @dots{}, @var{p}(N)} that the system is in ## state @math{i} after @var{n} steps, given initial occupancy ## probabilities @var{p0}(1), @dots{}, @var{p0}(N). ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{P}(i,j) ## transition probabilities from state @math{i} to state @math{j}. ## @var{P} must be an @math{N \times N} irreducible stochastic matrix, ## meaning that the sum of each row must be 1 (@math{\sum_{j=1}^N ## P_{i, j} = 1}), and the rank of @var{P} must be @math{N}. ## ## @item @var{n} ## Number of transitions after which state occupancy probabilities are computed ## (scalar, @math{n @geq{} 0}) ## ## @item @var{p0}(i) ## probability that at step 0 the system is in state @math{i} (vector ## of length @math{N}). ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{p}(i) ## If this function is called with a single argument, @code{@var{p}(i)} ## is the steady-state probability that the system is in state @math{i}. ## If this function is called with three arguments, @code{@var{p}(i)} ## is the probability that the system is in state @math{i} ## after @var{n} transitions, given the probabilities ## @code{@var{p0}(i)} that the initial state is @math{i}. ## ## @end table ## ## @seealso{ctmc} ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function p = dtmc( P, n, p0 ) if ( nargin != 1 && nargin != 3 ) print_usage(); endif [N err] = dtmcchkP(P); ( N>0 ) || ... error( err ); if ( nargin == 1 ) # steady-state analysis A = P-eye(N); A(:,N) = 1; # add normalization condition rank( A ) == N || ... warning( "dtmc(): P is reducible" ); b = [ zeros(1,N-1) 1 ]; p = b/A; else # transient analysis ( isscalar(n) && n>=0 ) || ... error( "n must be >=0" ); ( isvector(p0) && length(p0) == N && all(p0>=0) && abs(sum(p0)-1.0). ## -*- texinfo -*- ## ## @deftypefn {Function File} {[@var{r} @var{s}] =} dtmcisir (@var{P}) ## ## @cindex Markov chain, discrete time ## @cindex discrete time Markov chain ## @cindex DTMC ## @cindex irreducible Markov chain ## ## Check if @var{P} is irreducible, and identify Strongly Connected ## Components (SCC) in the transition graph of the DTMC with transition ## matrix @var{P}. ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{P}(i,j) ## transition probability from state @math{i} to state @math{j}. ## @var{P} must be an @math{N \times N} stochastic matrix. ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{r} ## 1 if @var{P} is irreducible, 0 otherwise (scalar) ## ## @item @var{s}(i) ## strongly connected component (SCC) that state @math{i} belongs to ## (vector of length @math{N}). SCCs are numbered @math{1, 2, @dots{}}. ## The number of SCCs is @code{max(s)}. If the graph is ## strongly connected, then there is a single SCC and the predicate ## @code{all(s == 1)} evaluates to true ## ## @end table ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function [r s] = dtmcisir( P ) if ( nargin != 1 ) print_usage(); endif [N err] = dtmcchkP(P); if ( N == 0 ) error(err); endif s = scc(P); r = (max(s) == 1); endfunction %!test %! P = [0 .5 0; 0 0 0]; %! fail( "dtmcisir(P)" ); %!test %! P = [0 1 0; 0 .5 .5; 0 1 0]; %! [r s] = dtmcisir(P); %! assert( r == 0 ); %! assert( max(s), 2 ); %! assert( min(s), 1 ); %!test %! P = [.5 .5 0; .2 .3 .5; 0 .2 .8]; %! [r s] = dtmcisir(P); %! assert( r == 1 ); %! assert( max(s), 1 ); %! assert( min(s), 1 ); queueing/inst/ctmcisir.m0000644000175000017500000000471413570046274015246 0ustar morenomoreno## Copyright (C) 2018 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {[@var{r} @var{s}] =} ctmcisir (@var{P}) ## ## @cindex Markov chain, continuous time ## @cindex continuous time Markov chain ## @cindex CTMC ## @cindex irreducible Markov chain ## ## Check if @var{Q} is irreducible, and identify Strongly Connected ## Components (SCC) in the transition graph of the DTMC with infinitesimal ## generator matrix @var{Q}. ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{Q}(i,j) ## Infinitesimal generator matrix. @var{Q} is a @math{N \times N} square ## matrix where @code{@var{Q}(i,j)} is the transition rate from state ## @math{i} to state @math{j}, for @math{1 @leq{} i, j @leq{} N}, ## @math{i \neq j}. ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{r} ## 1 if @var{Q} is irreducible, 0 otherwise. ## ## @item @var{s}(i) ## strongly connected component (SCC) that state @math{i} belongs to. ## SCCs are numbered @math{1, 2, @dots{}}. If the graph is strongly ## connected, then there is a single SCC and the predicate @code{all(s == 1)} ## evaluates to true. ## ## @end table ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function [r s] = ctmcisir( Q ) if ( nargin != 1 ) print_usage(); endif [N err] = ctmcchkQ(Q); ( N > 0 ) || ... error(err); s = scc(Q); r = (max(s) == 1); endfunction %!test %! Q = [-.5 .5 0; 1 0 0]; %! fail( "ctmcisir(Q)" ); %!test %! Q = [-1 1 0; .5 -.5 0; 0 0 0]; %! [r s] = ctmcisir(Q); %! assert( r == 0 ); %! assert( max(s), 2 ); %! assert( min(s), 1 ); %!test %! Q = [-.5 .5 0; .2 -.7 .5; .2 0 -.2]; %! [r s] = ctmcisir(Q); %! assert( r == 1 ); %! assert( max(s), 1 ); %! assert( min(s), 1 ); queueing/inst/qncsvisits.m0000644000175000017500000000707213603663754015644 0ustar morenomoreno## Copyright (C) 2012, 2016, 2020 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {@var{V} =} qncsvisits (@var{P}) ## @deftypefnx {Function File} {@var{V} =} qncsvisits (@var{P}, @var{r}) ## ## Compute the mean number of visits to the service centers of a ## single class, closed network with @math{K} service centers. ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{P}(i,j) ## probability that a request which completed service at center ## @math{i} is routed to center @math{j} (@math{K \times K} matrix). ## For closed networks it must hold that @code{sum(@var{P},2)==1}. The ## routing graph must be strongly connected, meaning that each node ## must be reachable from every other node. ## ## @item @var{r} ## Index of the reference station, @math{r \in @{1, @dots{}, K@}}; ## Default @code{@var{r}=1}. The traffic equations are solved by ## imposing the condition @code{@var{V}(r) = 1}. A request returning to ## the reference station completes its activity cycle. ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{V}(k) ## average number of visits to service center @math{k}, assuming ## @math{r} as the reference station. ## ## @end table ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function V = qncsvisits( P, r ) if ( nargin < 1 || nargin > 2 ) print_usage(); endif issquare(P) || ... error("P must be a square matrix"); [res err] = dtmcchkP(P); (res>0) || ... error( "invalid transition probability matrix P" ); K = rows(P); if ( nargin < 2 ) r = 1; else isscalar(r) || ... error("r must be a scalar"); (r>=1 && r<=K) || ... error("r must be an integer in the range [1, %d]",K); endif V = zeros(size(P)); A = P-eye(K); b = zeros(1,K); A(:,r) = 0; A(r,r) = 1; b(r) = 1; V = b/A; ## Make sure that no negative values appear (sometimes, numerical ## errors produce tiny negative values instead of zeros) V = max(0,V); endfunction %!test %! P = [-1 0; 0 0]; %! fail( "qncsvisits(P)", "invalid" ); %! P = [1 0; 0.5 0]; %! fail( "qncsvisits(P)", "invalid" ); %! P = [1 2 3; 1 2 3]; %! fail( "qncsvisits(P)", "square" ); %! P = [0 1; 1 0]; %! fail( "qncsvisits(P,0)", "range" ); %! fail( "qncsvisits(P,3)", "range" ); %!test %! %! ## Closed, single class network %! %! P = [0 0.3 0.7; 1 0 0; 1 0 0]; %! V = qncsvisits(P); %! assert( V*P,V,1e-5 ); %! assert( V, [1 0.3 0.7], 1e-5 ); %!test %! %! ## Test tolerance of the qncsvisits() function. %! ## This test builds transition probability matrices and tries %! ## to compute the visit counts on them. %! %! for k=[5, 10, 20, 50] %! P = reshape(1:k^2, k, k); %! P = P ./ repmat(sum(P,2),1,k); %! V = qncsvisits(P); %! assert( V*P, V, 1e-5 ); %! endfor %!demo %! P = [0 0.3 0.7; ... %! 1 0 0 ; ... %! 1 0 0 ]; %! V = qncsvisits(P) queueing/inst/qnosbsb.m0000644000175000017500000000575013570046274015101 0ustar morenomoreno## Copyright (C) 2008, 2009, 2010, 2011, 2012, 2016 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qnosbsb (@var{lambda}, @var{D}) ## @deftypefnx {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qnosbsb (@var{lambda}, @var{S}, @var{V}) ## ## @cindex bounds, balanced system ## @cindex open network ## ## Compute Balanced System Bounds for single-class, open networks with ## @math{K} service centers. ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{lambda} ## overall arrival rate to the system (scalar, @code{@var{lambda} @geq{} 0}). ## ## @item @var{D}(k) ## service demand at center @math{k} (@code{@var{D}(k) @geq{} 0}). ## ## @item @var{S}(k) ## service time at center @math{k} (@code{@var{S}(k) @geq{} 0}). ## ## @item @var{V}(k) ## mean number of visits at center @math{k} (@code{@var{V}(k) @geq{} 0}). ## ## @item @var{m}(k) ## number of servers at center @math{k}. This function only supports ## @math{M/M/1} queues, therefore @var{m} must be ## @code{ones(size(S))}. ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{Xl} ## @item @var{Xu} ## Lower and upper bounds on the system throughput. @var{Xl} is always ## set to @math{0}, since there can be no lower bound on open ## networks throughput. ## ## @item @var{Rl} ## @itemx @var{Ru} ## Lower and upper bounds on the system response time. ## ## @end table ## ## @seealso{qnosaba} ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function [X_lower X_upper R_lower R_upper] = qnosbsb( varargin ) if ( nargin < 2 || nargin > 4 ) print_usage(); endif [err lambda S V m] = qnoschkparam( varargin{:} ); isempty(err) || error(err); all(m==1) || ... error("this function supports M/M/1 servers only"); D = S .* V; D_max = max(D); D_tot = sum(D); D_ave = mean(D_tot); X_upper = 1/D_max; X_lower = 0; R_lower = D_tot / (1-lambda*D_ave); R_upper = D_tot / (1-lambda*D_max); endfunction %!test %! fail( "qnosbsb( 0.1, [] )", "vector" ); %! fail( "qnosbsb( 0.1, [0 -1])", "nonnegative" ); %! fail( "qnosbsb( 0, [1 2] )", "lambda" ); %! fail( "qnosbsb( -1, [1 2])", "lambda" ); %!test %! [Xl Xu Rl Ru] = qnosbsb(0.1,[1 2 3]); %! assert( Xl, 0 ); queueing/inst/qncsaba.m0000644000175000017500000001020613570046274015032 0ustar morenomoreno## Copyright (C) 2012, 2016 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qncsaba (@var{N}, @var{D}) ## @deftypefnx {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qncsaba (@var{N}, @var{S}, @var{V}) ## @deftypefnx {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qncsaba (@var{N}, @var{S}, @var{V}, @var{m}) ## @deftypefnx {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qncsaba (@var{N}, @var{S}, @var{V}, @var{m}, @var{Z}) ## ## @cindex bounds, asymptotic ## @cindex asymptotic bounds ## @cindex closed network, single class ## ## Compute Asymptotic Bounds for the system throughput and response ## time of closed, single-class networks with @math{K} service ## centers. ## ## Single-server and infinite-server nodes are supported. ## Multiple-server nodes and general load-dependent servers are not ## supported. ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{N} ## number of requests in the system (scalar, @code{@var{N}>0}). ## ## @item @var{D}(k) ## service demand at center @math{k} ## (@code{@var{D}(k) @geq{} 0}). ## ## @item @var{S}(k) ## mean service time at center @math{k} ## (@code{@var{S}(k) @geq{} 0}). ## ## @item @var{V}(k) ## average number of visits to center ## @math{k} (@code{@var{V}(k) @geq{} 0}). ## ## @item @var{m}(k) ## number of servers at center @math{k} ## (if @var{m} is a scalar, all centers have that number of servers). If ## @code{@var{m}(k) < 1}, center @math{k} is a delay center (IS); ## if @code{@var{m}(k) = 1}, center @math{k} is a M/M/1-FCFS server. ## This function does not support multiple-server nodes. Default ## is 1. ## ## @item @var{Z} ## External delay (scalar, @code{@var{Z} @geq{} 0}). Default is 0. ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{Xl} ## @itemx @var{Xu} ## Lower and upper bounds on the system throughput. ## ## @item @var{Rl} ## @itemx @var{Ru} ## Lower and upper bounds on the system response time. ## ## @end table ## ## @seealso{qncmaba} ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function [Xl Xu Rl Ru] = qncsaba( varargin ) #N, S, V, m, Z ) if (nargin<2 || nargin>5) print_usage(); endif [err N S V m Z] = qncschkparam( varargin{:} ); isempty(err) || error(err); all(m<=1) || ... error( "multiple server nodes are not supported" ); D = S.*V; Dtot_single = sum(D(m==1)); # total demand at single-server nodes Dtot_delay = sum(D(m<1)); # total demand at IS nodes Dtot = sum(D); # total demand Dmax = max(D); # max demand Xl = N/(N*Dtot_single + Dtot_delay + Z); Xu = min( N/(Dtot+Z), 1/Dmax ); Rl = max( Dtot, N*Dmax - Z ); Ru = N*Dtot_single + Dtot_delay; endfunction %!test %! fail("qncsaba(-1,0)", "N must be"); %! fail("qncsaba(1,[])", "nonempty"); %! fail("qncsaba(1,[-1 2])", "nonnegative"); %! fail("qncsaba(1,[1 2],[1 2 3])", "incompatible size"); %! fail("qncsaba(1,[1 2 3],[1 2 -1])", "nonnegative"); %! fail("qncsaba(1,[1 2 3],[1 2 3],[1 2])", "incompatible size"); %! fail("qncsaba(1,[1 2 3],[1 2 3],[1 2 1])", "not supported"); %! fail("qncsaba(1,[1 2 3],[1 2 3],[1 1 1],-1)", "nonnegative"); %! fail("qncsaba(1,[1 2 3],[1 2 3],1,[0 0])", "scalar"); ## Example 9.6 p. 913 Bolch et al. %!test %! N = 20; %! S = [ 4.6*2 8 ]; %! Z = 120; %! [X_l X_u R_l R_u] = qncsaba(N, S, ones(size(S)), ones(size(S)), Z); %! assert( [X_u R_l], [0.109 64], 1e-3 ); queueing/inst/qncsbsb.m0000644000175000017500000000777613570046274015077 0ustar morenomoreno## Copyright (C) 2008, 2009, 2010, 2011, 2012, 2016, 2018 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qncsbsb (@var{N}, @var{D}) ## @deftypefnx {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qncsbsb (@var{N}, @var{S}, @var{V}) ## @deftypefnx {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qncsbsb (@var{N}, @var{S}, @var{V}, @var{m}) ## @deftypefnx {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qncsbsb (@var{N}, @var{S}, @var{V}, @var{m}, @var{Z}) ## ## @cindex bounds, balanced system ## @cindex closed network, single class ## @cindex balanced system bounds ## ## Compute Balanced System Bounds on system throughput and response time for closed, single-class networks with @math{K} service centers. ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{N} ## number of requests in the system (scalar, @code{@var{N} @geq{} 0}). ## ## @item @var{D}(k) ## service demand at center @math{k} (@code{@var{D}(k) @geq{} 0}). ## ## @item @var{S}(k) ## mean service time at center @math{k} (@code{@var{S}(k) @geq{} 0}). ## ## @item @var{V}(k) ## average number of visits to center @math{k} (@code{@var{V}(k) ## @geq{} 0}). Default is 1. ## ## @item @var{m}(k) ## number of servers at center @math{k}. This function supports ## @code{@var{m}(k) = 1} only (single-eserver FCFS nodes); this ## parameter is only for compatibility with @code{qncsaba}. Default is ## 1. ## ## @item @var{Z} ## External delay (@code{@var{Z} @geq{} 0}). Default is 0. ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{Xl} ## @itemx @var{Xu} ## Lower and upper bound on the system throughput. ## ## @item @var{Rl} ## @itemx @var{Ru} ## Lower and upper bound on the system response time. ## ## @end table ## ## @strong{REFERENCES} ## ## @itemize ## @item ## Edward D. Lazowska, John Zahorjan, G. Scott Graham, and Kenneth ## C. Sevcik, @cite{Quantitative System Performance: Computer System ## Analysis Using Queueing Network Models}, Prentice Hall, ## 1984. @url{http://www.cs.washington.edu/homes/lazowska/qsp/}. In ## particular, see section 5.4 ("Balanced Systems Bounds"). ## @end itemize ## ## @seealso{qncmbsb} ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function [Xl Xu Rl Ru] = qncsbsb( varargin ) if (nargin<2 || nargin>5) print_usage(); endif [err N S V m Z] = qncschkparam( varargin{:} ); isempty(err) || error(err); all(m==1) || ... error( "this function supports M/M/1 servers only" ); D = S .* V; D_max = max(D); D_tot = sum(D); D_ave = mean(D); Xl = N/(D_tot+Z+( (N-1)*D_max )/( 1+Z/(N*D_tot) ) ); Xu = min( 1/D_max, N/( D_tot+Z+( (N-1)*D_ave )/(1+Z/D_tot) ) ); Rl = max( N*D_max-Z, D_tot+( (N-1)*D_ave )/( 1+Z/D_tot) ); Ru = D_tot + ( (N-1)*D_max )/( 1+Z/(N*D_tot) ); endfunction %!test %! fail("qncsbsb(-1,0)", "N must be"); %! fail("qncsbsb(1,[])", "nonempty"); %! fail("qncsbsb(1,[-1 2])", "nonnegative"); %! fail("qncsbsb(1,[1 2],[1 2 3])", "incompatible size"); %! fail("qncsbsb(1,[1 2 3],[1 2 3],[1 2])", "incompatible size"); %! fail("qncsbsb(1,[1 2 3],[1 2 3],[1 2 1])", "M/M/1 servers"); %! fail("qncsbsb(1,[1 2 3],[1 2 3],[1 1 1],-1)", "nonnegative"); %! fail("qncsbsb(1,[1 2 3],[1 2 3],[1 1 1],[0 0])", "scalar"); queueing/inst/erlangb.m0000644000175000017500000000741513570046274015044 0ustar morenomoreno## Copyright (C) 2014, 2016, 2018, 2019 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {@var{B} =} erlangb (@var{A}, @var{m}) ## ## @cindex Erlang-B formula ## ## Compute the steady-state blocking probability in the Erlang loss model. ## ## The Erlang-B formula @math{E_B(A, m)} gives the probability that an ## open system with @math{m} identical servers, arrival rate ## @math{\lambda}, individual service rate @math{\mu} and offered load ## @math{A = \lambda / \mu} has all servers busy. This corresponds to ## the rejection probability of an @math{M/M/m/0} system with @math{m} ## servers and no queue. ## ## @tex ## @math{E_B(A, m)} is defined as: ## ## $$ ## E_B(A, m) = \displaystyle{{A^m \over m!} \left( \sum_{k=0}^m {A^k \over k!} \right) ^{-1}} ## $$ ## @end tex ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{A} ## Offered load, defined as @math{A = \lambda / \mu} where ## @math{\lambda} is the mean arrival rate and @math{\mu} the mean ## service rate of each individual server (real, @math{A > 0}). ## ## @item @var{m} ## Number of identical servers (integer, @math{m @geq{} 1}). Default @math{m = 1} ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{B} ## The value @math{E_B(A, m)} ## ## @end table ## ## @var{A} or @var{m} can be vectors, and in this case, the results will ## be vectors as well. ## ## @strong{REFERENCES} ## ## @itemize ## @item ## G. Zeng, @cite{Two common properties of the Erlang-B function, Erlang-C function, and Engset blocking function}, Mathematical and Computer Modelling, Volume 37, Issues 12-13, June 2003, Pages 1287-1296 ## @end itemize ## ## @seealso{erlangc,engset,qsmmm} ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function B = erlangb(A, m) if ( nargin < 1 || nargin > 2 ) print_usage(); endif ( isnumeric(A) && all( A(:) > 0 ) ) || error("A must be positive"); if ( nargin == 1 ) m = 1; else ( isnumeric(m) && all( fix(m(:)) == m(:)) && all( m(:) > 0 ) ) || error("m must be a positive integer"); endif [err A m] = common_size(A, m); if ( err ) error("parameters are not of common size"); endif B = arrayfun( @__erlangb_compute, A, m); endfunction ## Compute E_B(A,m) recursively, as described in: ## ## Guoping Zeng, Two common properties of the erlang-B function, ## erlang-C function, and Engset blocking function, Mathematical and ## Computer Modelling Volume 37, Issues 12–13, June 2003, Pages ## 1287–1296 http://dx.doi.org/10.1016/S0895-7177(03)90040-9 ## ## To improve numerical stability, the recursion is based on the inverse ## 1 / E_B rather than E_B itself. function B = __erlangb_compute(A, m) Binv = 1.0; for k=1:m Binv = 1.0 + k/A*Binv; endfor B = 1.0 / Binv; endfunction %!test %! fail("erlangb(1, -1)", "positive"); %! fail("erlangb(-1, 1)", "positive"); %! fail("erlangb(1, 0)", "positive"); %! fail("erlangb(0, 1)", "positive"); %! fail("erlangb('foo',1)", "positive"); %! fail("erlangb(1,'bar')", "positive"); %! fail("erlangb([1 1],[1 1 1])","common size"); queueing/inst/qnsolve.m0000644000175000017500000005532113570046274015120 0ustar morenomoreno## Copyright (C) 2008, 2009, 2010, 2011, 2012, 2016 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qnsolve (@var{"closed"}, @var{N}, @var{QQ}, @var{V}) ## @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qnsolve (@var{"closed"}, @var{N}, @var{QQ}, @var{V}, @var{Z}) ## @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qnsolve (@var{"open"}, @var{lambda}, @var{QQ}, @var{V}) ## @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qnsolve (@var{"mixed"}, @var{lambda}, @var{N}, @var{QQ}, @var{V}) ## ## High-level function for analyzing QN models. ## ## @itemize ## ## @item For @strong{closed} networks, the following server types are ## supported: @math{M/M/m}--FCFS, @math{-/G/\infty}, @math{-/G/1}--LCFS-PR, ## @math{-/G/1}--PS and load-dependent variants. ## ## @item For @strong{open} networks, the following server types are supported: ## @math{M/M/m}--FCFS, @math{-/G/\infty} and @math{-/G/1}--PS. General ## load-dependent nodes are @emph{not} supported. Multiclass open networks ## do not support multiple server @math{M/M/m} nodes, but only ## single server @math{M/M/1}--FCFS. ## ## @item For @strong{mixed} networks, the following server types are supported: ## @math{M/M/1}--FCFS, @math{-/G/\infty} and @math{-/G/1}--PS. General ## load-dependent nodes are @emph{not} supported. ## ## @end itemize ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{N} ## @itemx @var{N}(c) ## Number of requests in the system for closed networks. For ## single-class networks, @var{N} must be a scalar. For multiclass ## networks, @code{@var{N}(c)} is the population size of closed class ## @math{c}. ## ## @item @var{lambda} ## @itemx @var{lambda}(c) ## External arrival rate (scalar) for open networks. For single-class ## networks, @var{lambda} must be a scalar. For multiclass networks, ## @code{@var{lambda}(c)} is the class @math{c} overall arrival rate. ## ## @item @var{QQ}@{i@} ## List of queues in the network. This must be a cell array ## with @math{N} elements, such that @code{@var{QQ}@{i@}} is ## a struct produced by the @code{qnmknode} function. ## ## @item @var{Z} ## External delay ("think time") for closed networks. Default 0. ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{U}(k) ## If @math{k} is a FCFS node, then @code{@var{U}(k)} is the utilization ## of service center @math{k}. If @math{k} is an IS node, then ## @code{@var{U}(k)} is the @emph{traffic intensity} defined as ## @code{@var{X}(k)*@var{S}(k)}. ## ## @item @var{R}(k) ## average response time of service center @math{k}. ## ## @item @var{Q}(k) ## average number of customers in service center @math{k}. ## ## @item @var{X}(k) ## throughput of service center @math{k}. ## ## @end table ## ## Note that for multiclass networks, the computed results are per-class ## utilization, response time, number of customers and throughput: ## @code{@var{U}(c,k)}, @code{@var{R}(c,k)}, @code{@var{Q}(c,k)}, ## @code{@var{X}(c,k)}. ## ## String literals are case-insensitive, so @var{"closed"}, @var{"Closed"} ## and @var{"CLoSEd"} are all equivalent. ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function [U R Q X] = qnsolve( network_type, varargin ) if ( nargin < 2 ) print_usage(); endif ischar(network_type) || ... error("First parameter must be a string"); network_type = tolower(network_type); if ( strcmp(network_type, "open" ) ) [U R Q X] = __qnsolve_open( varargin{:} ); elseif ( strcmp(network_type, "closed" ) ) [U R Q X] = __qnsolve_closed( varargin{:} ); elseif (strcmp(network_type, "mixed" ) ) [U R Q X] = __qnsolve_mixed( varargin{:} ); else error( "Invalid network type %s: must be one of \"open\", \"closed\" or \"mixed\"", network_type ); endif endfunction ############################################################################## ## Dispatcher function for open networks function [U R Q X] = __qnsolve_open( lambda, varargin ) if ( isscalar(lambda) ) [U R Q X] = __qnsolve_open_single( lambda, varargin{:} ); else [U R Q X] = __qnsolve_open_multi( lambda, varargin{:} ); endif endfunction ############################################################################## ## Worker function for open, single class networks function [U R Q X] = __qnsolve_open_single( lambda, QQ, V ) if ( nargin != 3 ) print_usage(); endif ( isscalar(lambda) && (lambda>0) ) || ... error( "lambda must be a scalar > 0" ); iscell(QQ) || ... error( "QQ must be a cell array" ); N = length(QQ); ( isvector(V) && length(V) == N ) || ... error( "V must be a vector of length %d", N ); V = V(:); # make V a row vector all(V>=0) || ... error( "V must be >= 0" ); ## Initialize vectors S = zeros(size(V)); m = ones(size(V)); for i=1:N QQ{i}.c == 1 || ... error( "Multiclass networks are not supported by this function" ); S(i) = QQ{i}.S; if __is_li(QQ{i}) ; # nothing to do elseif __is_multi(QQ{i}) m(i) = QQ{i}.m; elseif __is_is(QQ{i}) m(i) = -1; else error( "Unsupported type \"%s\" for node %d", QQ{i}.node, i ); endif endfor [U R Q X] = qnos( lambda, S, V, m ); __prettyprint( 0, lambda, QQ, V, U, R, Q, X ); endfunction ############################################################################## ## Worker function for open, multiclass networks function [U R Q X] = __qnsolve_open_multi( lambda, QQ, V ) if ( nargin != 3 ) print_usage(); endif isvector(lambda) && all(lambda > 0) || ... error( "lambda must be a vector >0" ); lambda = lambda(:)'; # make lambda a row vector iscell(QQ) || ... error( "QQ must be a cell array" ); C = length(lambda); K = length(QQ); [C,K] == size(V) || ... error( "V size mismatch" ); all( all( V>= 0 ) ) || ... error( "V must be >= 0 " ); S = zeros(C,K); m = ones(1,K); for i=1:K QQ{i}.c == C || ... error( "Wrong number of classes for center %d (is %d, should be %d)", i, QQ{i}.c, C ); S(:,i) = QQ{i}.S(:); if __is_li(QQ{i}) ; # nothing to do elseif __is_is(QQ{i}) m(i) = -1; else error( "Unsupported type \"%s\" for node %d", QQ{i}.node, i ); endif endfor [U R Q X] = qnom( lambda, S, V, m ); __prettyprint( 0, lambda, QQ, V, U, R, Q, X ); endfunction ############################################################################## ## Dispatcher function for closed networks function [U R Q X] = __qnsolve_closed( N, varargin ) if ( isscalar(N) ) [U R Q X] = __qnsolve_closed_single( N, varargin{:} ); else [U R Q X] = __qnsolve_closed_multi( N, varargin{:} ); endif endfunction ############################################################################## ## Worker function for closed, single-class networks function [U R Q X] = __qnsolve_closed_single( N, QQ, V, Z ) if ( nargin < 3 || nargin > 4 ) error(); endif isscalar(N) || ... error( "Multiclass networks are not supported by this function" ); iscell(QQ) || ... error( "QQ must be a cell array" ); if ( nargin < 4 ) Z = 0; else isscalar(Z) && Z >= 0 || ... error( "Z must be >= 0" ); endif K = length(QQ); ( isvector(V) && length(V) == K ) || ... error( "V must be a vector of length %d", K ); found_ld = false; for k=1:K if ( __is_ld(QQ{k}) ) found_ld = true; break; endif endfor if ( found_ld ) S = zeros(K, N); for k=1:K ( QQ{k}.c == 1 ) || ... error( "Multiclass networks are not supported by this function" ); if __is_li(QQ{k}) S(k,:) = QQ{k}.S; elseif __is_multi(QQ{k}) S(k,:) = QQ{k}.S ./ min(1:N,QQ{k}.m); elseif __is_is(QQ{k}) S(k,:) = QQ{k}.S ./ (1:N); elseif __is_ld(QQ{k}) S(k,:) = QQ{k}.S; else error( "Unsupported type \"%s\" for node %d", QQ{k}.node, k ); endif endfor [U R Q X] = qncsmvald(N, S, V, Z); else S = zeros(1,K); m = ones(1,K); for k=1:K ( QQ{k}.c == 1 ) || ... error( "Multiclass networks are not supported by this function" ); S(k) = QQ{k}.S; if __is_li(QQ{k}) # nothing to do elseif __is_multi(QQ{k}) m(k) = QQ{k}.m; elseif __is_is(QQ{k}) m(k) = -1; else error( "Unsupported type \"%s\" for node %d", QQ{k}.node, k ); endif endfor [U R Q X] = qncsmva(N, S, V, m, Z); endif __prettyprint( N, 0, QQ, V, U, R, Q, X ); endfunction ############################################################################## ## Worker function for closed, multi-class networks function [U R Q X] = __qnsolve_closed_multi( N, QQ, V, Z ) if ( nargin < 3 || nargin > 4 ) print_usage(); endif isvector(N) && all( N>0 ) || ... error( "N must be >0" ); iscell(QQ) || ... error( "QQ must be a cell array" ); C = length(N); ## Number of classes K = length(QQ); ## Number of service centers size(V) == [C,K] || ... error( "V size mismatch" ); if ( nargin < 4 ) Z = zeros(1,C); else isvector(Z) && length(Z) == C || ... error( "Z size mismatch" ); endif ## Check consistence of parameters all( all( V >= 0 ) ) || ... error( "V must be >=0" ); ## Initialize vectors i_single = i_multi = i_delay = i_ld = []; S = zeros(C,K); for i=1:K ( QQ{i}.c == C ) || ... error( "Service center %d has wrong number of classes (is %d, should be %d)", i, QQ{i}.c, C ); if __is_li(QQ{i}) i_single = [i_single i]; ( !strcmpi( QQ{i}.node, "m/m/m-fcfs" ) || all( QQ{i}.S(1) == QQ{i}.S )) || ... error( "Service times at FIFO node %d are not class-independent", i ); elseif __is_multi(QQ{i}) i_multi = [i_multi i]; elseif __is_is(QQ{i}) i_delay = [i_delay i]; elseif __is_ld(QQ{i}) columns( QQ{i}.S ) == sum(N) || ... error( "Load-dependent center %d has insufficient data (is %d, should be %d", i, columns(QQ{i}.S), sum(N) ); i_ld = [i_ld i]; else error( "Unknown or unsupported type \"%s\" for node %d", QQ{i}.node, i ); endif endfor ## Initialize results U = R = zeros( C, K ); X = zeros( 1, C ); Q_next = Q = sparse( prod(N+1),K ); p = cell(1,K); for k=i_multi ## p{i}(j+1,k+1) is the probability to have j jobs at node i ## where the network is in state k p{k} = zeros( QQ{k}.m+1,prod(N+1) ); p{k}(1,__get_idx( N, 0*N )) = 1; endfor for k=i_ld ## p{i}(j+1,k+1) is the probability to have j jobs at node i ## where the network is in state k p{k} = zeros( columns(QQ{k}.S )+1, prod(N+1) ); p{k}(1,__get_idx( N, 0*N )) = 1; endfor ## Main loop for n=1:sum(N) feasible_set = qncmpopmix( n, N ); for nn=1:rows(feasible_set) n_bar = feasible_set(nn,:); for c=1:C if ( n_bar(c) > 0 ) ## single server nodes for k=i_single n_bar_c = __minusonec(n_bar,c); idx = __get_idx( N, n_bar_c ); R(c,k) = QQ{k}.S(c)*(1 + Q( idx, k ) ); ## for FCFS nodes with class-dependent service times, ## it is possible to use the following approximation ## (p. 469 Bolch et al.) ## ## R(c,k) = S(c,k) + sum( S(:,k) * Q(idx(:), k) ); endfor ## multi server nodes for k=i_multi n_bar_c = __minusonec(n_bar,c); idx = __get_idx( N, n_bar_c ); j=0:QQ{k}.m-2; # range R(c,k) = QQ{k}.S(c)/QQ{k}.m*(1 + Q( idx, k ) + ... dot(QQ{k}.m-j-1,p{k}(j+1,idx) ) ); endfor ## General load-dependent nodes for k=i_ld n_bar_c = __minusonec(n_bar,c); idx = __get_idx( N, n_bar_c ); j=1:sum(n_bar); # range R(c,k) = sum( j .* QQ{k}.S(c,j) .* p{k}(j,idx)' ); endfor endif ## delay centers for k=i_delay R(c,k) = QQ{k}.S(c); endfor endfor # c X = n_bar ./ ( Z .+ dot(R,V,2)' ); # X(c) = N(c) / ( Z(c) + sum_k R(c,k) * V(c,k) ) idx = __get_idx( N, n_bar ); ## Q_k = sum_c X(c) * R(c,k) for k=1:K Q_next( idx, k ) = dot( X, R(:,k) .* V(:,k) ); endfor ## Adjust probabilities for multiple server nodes for k=i_multi s=0; # it is actually a vector j=1:QQ{k}.m-1; for r=find(n_bar>0) # I don't know how to vectorize this ii = __minusonec(n_bar,r); s+=QQ{k}.S(r)*V(r,k)*X(r)*p{k}(j,__get_idx(N,ii)); endfor p{k}(j+1,idx) = s./j; p{k}(1,idx) = 1-1/QQ{k}.m*(sum( QQ{k}.S(:) .* V(:,k) .* X(:) ) + ... dot( QQ{k}.m-j, p{k}(j+1,idx) ) ); endfor ## Adjust probabilities for general load-dependent server nodes for k=i_ld s=0; # it is actually a vector j=1:sum(n_bar); for r=find(n_bar>0) ii = __minusonec(n_bar,r); s+=QQ{k}.S(r,sum(n_bar))*V(r,k)*X(r)*p{k}(j,__get_idx(N,ii)); endfor p{k}(j+1,idx) = s; p{k}(1,idx) = 1-sum(p{k}(1+j,idx)); endfor endfor Q = Q_next; Q_next = sparse( prod(N+1), K ); endfor for k=1:K if __is_ld(QQ{k}) U(:,k) = 1-p{k}(1, __get_idx(N,N)); else U(:,k) = X(:) .* QQ{k}.S(:) .* V(:,k); # U(c,k) = X(c)*D(c,k) endif endfor Q = (diag(X)*R).*V; # dmult(X,R).*V; X = diag(X)*V; # dmult(X,V); endfunction ############################################################################## ## Compute the linear index corresponding to vector i from a population ## of N. function idx = __get_idx( N, i ) i_cell = num2cell( i+1 ); idx = sub2ind( N+1, i_cell{:} ); endfunction ############################################################################## ## Given an input vector n, returns an output vector r which is equal to ## n except that the element at the c-th position is decreased by one: ## r(c) = n(c)-1. Warning: no check is made on the parameters function r = __minusonec( n, c ) r = n; r(c) -= 1; endfunction ############################################################################## ## Worker function for mixed networks. This function delegates to qnmix function [U R Q X] = __qnsolve_mixed( lambda, N, QQ, V ) if ( nargin != 4 ) print_usage(); endif ( isvector(lambda) && isvector(N) && size_equal(lambda,N) ) || ... error( "lambda and N must be vectors of the same size" ); ( iscell(QQ) && length(QQ) == length(lambda) ) || ... error( "QQ size mismatch (is %d, should be %d)", length(QQ), length(lambda) ); C = length(lambda); # number of classes K = length(QQ); # number of service centers S = zeros(C,K); m = ones(1,K); ## fill S matrix for k=1:K if __is_ld(QQ{k}) error( "General load-dependent service center %d is not supported", k ); elseif __is_is(QQ{k}) m(k) = -1; else m(k) = QQ{k}.m; endif S(:,k) = QQ{k}.S; endfor [U R Q X] = qnmix( lambda, N, S, V, m ); __prettyprint( N, lambda, QQ, V, U, R, Q, X ); endfunction ############################################################################## ## return true iff Q is an infinite server (IS) node function result = __is_is( Q ) result = strcmp(Q.node, "-/g/inf" ); endfunction ############################################################################## ## return true iff Q is a multi-server FIFO node function result = __is_multi( Q ) result = (strcmp(Q.node, "m/m/m-fcfs") && Q.m>1); endfunction ############################################################################## ## return true iff Q is a single-server, load-dependent node function result = __is_ld( Q ) result = ( (strcmp(Q.node, "m/m/m-fcfs") || ... strcmp(Q.node, "-/g/1-lcfs-pr") || ... strcmp(Q.node, "-/g/1-ps" ) ) && ... columns( Q.S ) > 1 ); endfunction ############################################################################## ## return ture iff Q is a single-server, load-independent node function result = __is_li( Q ) result = ((Q.m==1) && (1 == columns( Q.S )) && !strcmp( Q.node, "-/g/inf" ) ); endfunction ############################################################################## ## This function is used to "pretty-print" a solved network. Used for ## debugging function __prettyprint( N, lambda, QQ, V, U, R, Q, X ) return; ## immediately return [errorcode, N, lambda] = common_size( N, lambda ); if ( errorcode) error( "N and lambda are of incompatible size" ); endif ( isvector(N) && isvector(lambda) && size_equal(lambda,N) ) || ... error( "N and lambda must be vector of the same length" ); C = length(N); K = length(QQ); # number of service centers [C,K] == size(V) || ... error( "V size mismatch" ); [C,K] == size(U) || ... error( "U size mismatch" ); [C,K] == size(R) || ... error( "R size mismatch" ); [C,K] == size(Q) || ... error( "Q size mismatch" ); [C,K] == size(X) || ... error( "X size mismatch" ); for c=1:C printf("\n"); printf("=== CLASS %d ===\n", c ); if ( N(c)>0 ) printf("Type: CLOSED\nPopulation: %d\n", N(c)) else printf("Type: OPEN\nRequests arrival rate: %6.2f\n", lambda(c)) endif printf("\n"); printf("+---+---------------+---+------+------+------+------+------+------+\n"); printf("| i | Node type | m | S(i) | V(i) | U(i) | R(i) | Q(i) | X(i) |\n"); printf("+---+---------------+---+------+------+------+------+------+------+\n"); for i=1:K if ( isscalar(QQ{i}.S(c)) ) serv = sprintf("%6.2f",QQ{i}.S(c)); else serv = "LD"; endif printf("|%3d|%-33s| | | | |\n", i, QQ{i}.comment); printf("| |%15s|%3d|%6s|%6.2f|%6.4f|%6.2f|%6.2f|%6.2f|\n", QQ{i}.node, QQ{i}.m, serv, V(c,i), U(c,i), R(c,i), Q(c,i), X(c,i) ); endfor printf("+---+---------------+---+------+------+------+------+------+------+\n"); printf("| THIS CLASS STATISTICS | ---- |%6.2f|%6.2f|%6.2f|\n", dot(R(c,:),V(c,:)), sum(Q(c,:)), X(c,1)/V(c,1) ); printf("+---+---------------+---+------+------+------+------+------+------+\n\n"); endfor endfunction %!test %! # Example 8.7 p. 349 Bolch et al. %! N = 3; %! Q1 = qnmknode( "m/m/m-fcfs", .5, 2 ); %! Q2 = qnmknode( "m/m/m-fcfs", 1/1.667 ); %! Q3 = qnmknode( "m/m/m-fcfs", 1/1.25 ); %! Q4 = qnmknode( "m/m/m-fcfs", 1./[1 2 3] ); %! V = [ 1 .5 .5 1 ]; %! [U R Q X] = qnsolve("closed",N, { Q1, Q2, Q3, Q4 }, V); %! assert( Q, [0.624 0.473 0.686 1.217], 1e-3 ); %! assert( R, [0.512 0.776 1.127 1], 1e-3 ); %!test %! # Example 8.7 p. 349 Bolch et al. %! N = 3; %! Q1 = qnmknode( "m/m/m-fcfs", 1/2, 2 ); %! Q2 = qnmknode( "m/m/m-fcfs", 1/1.667 ); %! Q3 = qnmknode( "m/m/m-fcfs", 1/1.25 ); %! Q4 = qnmknode( "-/g/inf", 1 ); %! V = [ 1 .5 .5 1 ]; %! [U R Q X] = qnsolve("closed",N, { Q1, Q2, Q3, Q4 }, V); %! assert( Q, [0.624 0.473 0.686 1.217], 1e-3 ); %! assert( R, [0.512 0.776 1.127 1], 1e-3 ); %!test %! # Example 8.4 p. 333 Bolch et al. %! N = 3; %! Q1 = qnmknode( "m/m/m-fcfs", .5, 2 ); %! Q2 = qnmknode( "m/m/m-fcfs", .6 ); %! Q3 = qnmknode( "m/m/m-fcfs", .8 ); %! Q4 = qnmknode( "-/g/inf", 1 ); %! V = [ 1 .5 .5 1 ]; %! [U R Q X] = qnsolve("closed",N, { Q1, Q2, Q3, Q4 }, V); %! assert( U(1:3), [.304 .365 .487], 1e-3 ); %! assert( X, [1.218 0.609 0.609 1.218], 1e-3 ); %!test %! # Same as above, with center 1 replaced with a load-dependent service center %! N = 3; %! Q1 = qnmknode( "m/m/m-fcfs", [.5 .25 .25] ); %! Q2 = qnmknode( "m/m/m-fcfs", .6 ); %! Q3 = qnmknode( "m/m/m-fcfs", .8 ); %! Q4 = qnmknode( "m/m/m-fcfs", [1 1/2 1/3] ); %! V = [ 1 .5 .5 1 ]; %! [U R Q X] = qnsolve("closed",N, { Q1, Q2, Q3, Q4 }, V); %! assert( U(2:3), [.365 .487], 1e-3 ); ## NOTE: Utilization U(1) is computed differently from M/M/m nodes and load-dependent M/M/1 nodes %! assert( X, [1.218 0.609 0.609 1.218], 1e-3 ); %!test %! # Example 7.4 p. 287 Bolch et al. %! QQ = { qnmknode( "m/m/m-fcfs", 0.04 ), ... %! qnmknode( "m/m/m-fcfs", 0.03 ), ... %! qnmknode( "m/m/m-fcfs", 0.06 ), ... %! qnmknode( "m/m/m-fcfs", 0.05 ) }; %! P = [ 0 0.5 0.5 0; 1 0 0 0; 0.6 0 0 0; 1 0 0 0 ]; %! lambda = [0 0 0 4]; %! [U R Q X] = qnsolve("open", sum(lambda), QQ, qnosvisits(P,lambda) ); %! assert( X, [20 10 10 4], 1e-4 ); %! assert( U, [0.8 0.3 0.6 0.2], 1e-2 ); %! assert( R, [0.2 0.043 0.15 0.0625], 1e-3 ); %! assert( Q, [4, 0.429 1.5 0.25], 1e-3 ); %!test %! V = [1 1; 1 1]; %! Q1 = qnmknode( "m/m/m-fcfs", [1;2] ); %! Q2 = qnmknode( "m/m/m-fcfs", [3;4] ); %! lambda = [3/19 2/19]; %! [U R Q] = qnsolve("open", lambda, { Q1, Q2 }, diag( lambda / sum(lambda) ) * V); %! assert( U(1,1), 3/19, 1e-6 ); %! assert( U(2,1), 4/19, 1e-6 ); %! assert( R(1,1), 19/12, 1e-6 ); %! assert( R(1,2), 57/2, 1e-6 ); %! assert( Q(1,1), .25, 1e-6 ); ## Example 9.5 p. 337, Bolch et al. %!test %! QQ = { qnmknode( "m/m/m-fcfs", [0.2; 0.2], 2 ), ... %! qnmknode( "-/g/1-ps", [0.4; 0.6] ), ... %! qnmknode( "-/g/inf", [1; 2] ) }; %! V = [ 1 0.6 0.4; 1 0.3 0.7 ]; %! N = [ 2 1 ]; %! [U R Q X] = qnsolve( "closed", N, QQ, V ); %! assert( Q, [ 0.428 0.726 0.845; 0.108 0.158 0.734 ], 1e-3 ); %! assert( X(1,1), 2.113, 1e-3 ); # CHECK %! assert( X(2,1), 0.524, 1e-3 ); # CHECK %! assert( all( all(U(:,[1,2])<=1) ) ); ## Same as above, but with general load-dependent centers %!test %! QQ = { qnmknode( "m/m/m-fcfs", [0.2 0.1 0.1; 0.2 0.1 0.1] ), ... %! qnmknode( "-/g/1-ps", [0.4; 0.6] ), ... %! qnmknode( "-/g/inf", [1; 2] ) }; %! V = [ 1 0.6 0.4; 1 0.3 0.7 ]; %! N = [ 2 1 ]; %! [U R Q X] = qnsolve( "closed", N, QQ, V ); %! assert( Q, [ 0.428 0.726 0.845; 0.108 0.158 0.734 ], 1e-3 ); %! assert( X(1,1), 2.113, 1e-3 ); # CHECK %! assert( X(2,1), 0.524, 1e-3 ); # CHECK %! assert( all( all(U(:,[1,2])<=1) ) ); %!test %! # example p. 26 Schwetman %! QQ = { qnmknode( "m/m/m-fcfs", [.25; .25] ), %! qnmknode( "-/g/1-ps", [0; .1] ) }; %! V = [1 0; 1 1]; %! lambda = [1 0]; %! N = [0 3]; %! [U R Q X] = qnsolve( "mixed", lambda, N, QQ, V ); %! assert( U(1,1), .25, 1e-3 ); %! assert( X(1,1), 1.0, 1e-3 ); %! assert( [R(1,1) R(2,1) R(2,2)], [1.201 0.885 0.135], 1e-3 ); %!demo %! QQ = { qnmknode( "m/m/m-fcfs", [0.2 0.1 0.1; 0.2 0.1 0.1] ), ... %! qnmknode( "-/g/1-ps", [0.4; 0.6] ), ... %! qnmknode( "-/g/inf", [1; 2] ) }; %! V = [ 1 0.6 0.4; ... %! 1 0.3 0.7 ]; %! N = [ 2 1 ]; %! [U R Q X] = qnsolve( "closed", N, QQ, V ); queueing/inst/qnomaba.m0000644000175000017500000000670413570046274015050 0ustar morenomoreno## Copyright (C) 2012, 2016, 2018 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qnomaba (@var{lambda}, @var{D}) ## @deftypefnx {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Rl}] =} qnomaba (@var{lambda}, @var{S}, @var{V}) ## ## @cindex bounds, asymptotic ## @cindex open network ## @cindex multiclass network, open ## ## Compute Asymptotic Bounds for open, multiclass networks with @math{K} ## service centers and @math{C} customer classes. ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{lambda}(c) ## class @math{c} arrival rate to the system (vector of length ## @math{C}, @code{@var{lambda}(c) > 0}). ## ## @item @var{D}(c, k) ## class @math{c} service demand at center @math{k} (@math{C \times K} ## matrix, @code{@var{D}(c, k) @geq{} 0}). ## ## @item @var{S}(c, k) ## mean service time of class @math{c} requests at center @math{k} ## (@math{C \times K} matrix, @code{@var{S}(c, k) @geq{} 0}). ## ## @item @var{V}(c, k) ## mean number of visits of class @math{c} requests at center @math{k} ## (@math{C \times K} matrix, @code{@var{V}(c, k) @geq{} 0}). ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{Xl}(c) ## @item @var{Xu}(c) ## lower and upper bounds of class @math{c} throughput. ## @code{@var{Xl}(c)} is always @math{0} since there can be no lower ## bound on the throughput of open networks (vector of length ## @math{C}). ## ## @item @var{Rl}(c) ## @item @var{Ru}(c) ## lower and upper bounds of class @math{c} response time. ## @code{@var{Ru}(c)} is always @code{+inf} since there can be no ## upper bound on the response time of open networks (vector of length ## @math{C}). ## ## @end table ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function [X_lower X_upper R_lower R_upper] = qnomaba( lambda, S, V ) if ( nargin < 2 || nargin > 3 ) print_usage(); endif (isvector(lambda) && length(lambda)>0) || ... error( "lambda must be a nonempty vector" ); all(lambda > 0) || ... error( "lambda must contain positive values" ); lambda = lambda(:)'; C = length(lambda); ( ismatrix(S) && rows(S)==C ) || ... error( "S/D must be a matrix >=0 with %d rows", C ); all(S(:)>=0) || ... error( "S/D must contain nonnegative values" ); K = columns(S); if ( nargin < 3 ) V = ones(size(S)); else ( ismatrix(V) && size_equal(S,V) ) || ... error( "V must be a %d x %d matrix", C, K); all(V(:)>=0) || ... error( "V must contain nonnegative values" ); endif D = S.*V; X_lower = zeros(1,C); X_upper = 1./max(D,[],2)'; R_lower = sum(D,2)'; R_upper = +inf(1,C); endfunction %!test %! fail( "qnomaba( [1 1], [1 1 1; 1 1 1; 1 1 1] )", "2 rows" ); queueing/inst/qncsconv.m0000644000175000017500000001724613570046274015267 0ustar morenomoreno## Copyright (C) 2008, 2009, 2010, 2011, 2012, 2016, 2018 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}, @var{G}] =} qncsconv (@var{N}, @var{S}, @var{V}) ## @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}, @var{G}] =} qncsconv (@var{N}, @var{S}, @var{V}, @var{m}) ## ## @cindex closed network, single class ## @cindex normalization constant ## @cindex convolution algorithm ## ## Analyze product-form, single class closed networks with @math{K} service centers using the convolution algorithm. ## ## Load-independent service centers, multiple servers (@math{M/M/m} ## queues) and IS nodes are supported. For general load-dependent ## service centers, use @code{qncsconvld} instead. ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{N} ## Number of requests in the system (@code{@var{N}>0}). ## ## @item @var{S}(k) ## average service time on center @math{k} (@code{@var{S}(k) @geq{} 0}). ## ## @item @var{V}(k) ## visit count of service center @math{k} (@code{@var{V}(k) @geq{} 0}). ## ## @item @var{m}(k) ## number of servers at center @math{k}. If @code{@var{m}(k) < 1}, ## center @math{k} is a delay center (IS); if @code{@var{m}(k) @geq{} ## 1}, center @math{k} it is a regular @math{M/M/m} queueing center ## with @code{@var{m}(k)} identical servers. Default is ## @code{@var{m}(k) = 1} for all @math{k}. ## ## @end table ## ## @strong{OUTPUT} ## ## @table @code ## ## @item @var{U}(k) ## center @math{k} utilization. ## For IS nodes, @code{@var{U}(k)} is the @emph{traffic intensity} ## @code{@var{X}(k) * @var{S}(k)}. ## ## @item @var{R}(k) ## average response time of center @math{k}. ## ## @item @var{Q}(k) ## average number of customers at center @math{k}. ## ## @item @var{X}(k) ## throughput of center @math{k}. ## ## @item @var{G}(n) ## Vector of normalization constants. @code{@var{G}(n+1)} contains the value of ## the normalization constant with @math{n} requests ## @math{G(n)}, @math{n=0, @dots{}, N}. ## ## @end table ## ## @strong{NOTE} ## ## For a network with @math{K} service centers and @math{N} requests, ## this implementation of the convolution algorithm has time and space ## complexity @math{O(NK)}. ## ## @strong{REFERENCES} ## ## @itemize ## @item ## Jeffrey P. Buzen, @cite{Computational Algorithms for Closed Queueing ## Networks with Exponential Servers}, Communications of the ACM, volume ## 16, number 9, September 1973, ## pp. 527--531. @uref{http://doi.acm.org/10.1145/362342.362345, 10.1145/362342.362345} ## @end itemize ## ## This implementation is based on G. Bolch, S. Greiner, H. de Meer and ## K. Trivedi, @cite{Queueing Networks and Markov Chains: Modeling and ## Performance Evaluation with Computer Science Applications}, Wiley, ## 1998, pp. 313--317. ## ## @seealso{qncsconvld} ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function [U R Q X G] = qncsconv( varargin ) if ( nargin < 3 || nargin > 4 ) print_usage(); endif ## To be compliant with the reference, we use K to denote the ## population size [err K S V m] = qncschkparam( varargin{:} ); isempty(err) || error(err); N = length(S); # Number of service centers ## This implementation is based on G. Bolch, S. Greiner, H. de Meer ## and K. Trivedi, Queueing Networks and Markov Chains: Modeling and ## Performance Evaluation with Computer Science Applications, Wiley, ## 1998, pp. 313--317. ## First, we remember the indexes of IS nodes i_delay = find(m<1); m( i_delay ) = K; # IS nodes are handled as if they were M/M/K nodes with number of servers equal to the population size K, such that queueing never occurs. ## Initialization G_n = G_nm1 = zeros(1,K+1); F_n = zeros(N,K+1); F_n(:,1) = 1; k=1:K; G_n(1) = 1; G_n(k+1) = F_n(1,k+1) = F(1,k,V,S,m); ## Main convolution loop for n=2:N G_nm1 = G_n; k=1:K; F_n(n,1+k) = F(n,k,V,S,m); # G_n(1) = 1; G_n = conv( F_n(n,:), G_nm1(:) )(1:K+1); endfor ## Done computation of G(n,k). G = G_n(:)'; # ensure G is a row vector ## Computes performance measures X = V*G(K)/G(K+1); U = X .* S ./ m; ## Adjust utilization of delay centers U(i_delay) = X(i_delay) .* S(i_delay); Q = zeros(1,N); i_multi = find(m>1); for i=i_multi G_N_i = zeros(1,K+1); G_N_i(1) = 1; for k=1:K j=1:k; G_N_i(k+1) = G(k+1)-dot( F_n(i,j+1), G_N_i(k-j+1) ); endfor k=0:K; p_i(k+1) = F_n(i,k+1)./G(K+1).*G_N_i(K-k+1); Q(i) = dot( k, p_i( k+1 ) ); endfor i_single = find(m==1); for i=i_single k=1:K; Q(i) = sum( ( V(i)*S(i) ) .^ k .* G(K+1-k)/G(K+1) ); endfor R = Q ./ X; endfunction %!test %! # Example 8.1 p. 318 Bolch et al. %! K=3; %! S = [ 1/0.8 1/0.6 1/0.4 ]; %! m = [2 3 1]; %! V = [ 1 .667 .2 ]; %! [U R Q X G] = qncsconv( K, S, V, m ); %! assert( G, [1 2.861 4.218 4.465], 5e-3 ); %! assert( X, [0.945 0.630 0.189], 1e-3 ); %! assert( U, [0.590 0.350 0.473], 1e-3 ); %! assert( Q, [1.290 1.050 0.660], 1e-3 ); %! assert( R, [1.366 1.667 3.496], 1e-3 ); %!test %! # Example 8.3 p. 331 Bolch et al. %! # compare results of convolution to those of mva %! S = [ 0.02 0.2 0.4 0.6 ]; %! K = 6; %! V = [ 1 0.4 0.2 0.1 ]; %! [U_mva R_mva Q_mva X_mva G_mva] = qncsmva(K, S, V); %! [U_con R_con Q_con X_con G_con] = qncsconv(K, S, V); %! assert( U_mva, U_con, 1e-5 ); %! assert( R_mva, R_con, 1e-5 ); %! assert( Q_mva, Q_con, 1e-5 ); %! assert( X_mva, X_con, 1e-5 ); %! assert( G_mva, G_con, 1e-5 ); %!test %! # Compare the results of convolution to those of mva %! S = [ 0.02 0.2 0.4 0.6 ]; %! K = 6; %! V = [ 1 0.4 0.2 0.1 ]; %! m = [ 1 -1 2 1 ]; # center 2 is IS %! [U_mva R_mva Q_mva X_mva] = qncsmva(K, S, V, m); %! [U_con R_con Q_con X_con G] = qncsconv(K, S, V, m ); %! assert( U_mva, U_con, 1e-5 ); %! assert( R_mva, R_con, 1e-5 ); %! assert( Q_mva, Q_con, 1e-5 ); %! assert( X_mva, X_con, 1e-5 ); ## result = F(i,j,v,S,m) ## ## Helper fuction to compute F(i,j) as defined in Eq 7.61 p. 289 of ## Bolch, Greiner, de Meer, Trivedi "Queueing Networks and Markov ## Chains: Modeling and Performance Evaluation with Computer Science ## Applications", Wiley, 1998. This function has been vectorized, ## and accepts a vector as parameter j. function result = F(i,j,v,S,m) isscalar(i) || ... error( "i must be a scalar" ); k_i = j; if ( m(i) == 1 ) result = ( v(i)*S(i) ).^k_i; else ii = find(k_i<=m(i)); ## if k_i<=m(i) result(ii) = ( v(i)*S(i) ).^k_i(ii) ./ factorial(k_i(ii)); ii = find(k_i>m(i)); ## if k_i>m(i) result(ii) = ( v(i)*S(i) ).^k_i(ii) ./ ( factorial(m(i))*m(i).^(k_i(ii)-m(i)) ); endif endfunction %!demo %! n = [1 2 0]; %! N = sum(n); # Total population size %! S = [ 1/0.8 1/0.6 1/0.4 ]; %! m = [ 2 3 1 ]; %! V = [ 1 .667 .2 ]; %! [U R Q X G] = qncsconv( N, S, V, m ); %! p = [0 0 0]; # initialize p %! # Compute the probability to have n(k) jobs at service center k %! for k=1:3 %! p(k) = (V(k)*S(k))^n(k) / G(N+1) * ... %! (G(N-n(k)+1) - V(k)*S(k)*G(N-n(k)) ); %! printf("Prob( n(%d) = %d )=%f\n", k, n(k), p(k) ); %! endfor queueing/inst/qncmcb.m0000644000175000017500000001124613633127774014677 0ustar morenomoreno## Copyright (C) 2012, 2016, 2018, 2020 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qncmcb (@var{N}, @var{D}) ## @deftypefnx {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qncmcb (@var{N}, @var{S}, @var{V}) ## ## @cindex multiclass network, closed ## @cindex closed multiclass network ## @cindex bounds, composite ## @cindex composite bounds ## ## Compute Composite Bounds (CB) on system throughput and response time for closed multiclass networks. ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{N}(c) ## number of class @math{c} requests in the system. ## ## @item @var{D}(c, k) ## class @math{c} service demand ## at center @math{k} (@code{@var{S}(c,k) @geq{} 0}). ## ## @item @var{S}(c, k) ## mean service time of class @math{c} ## requests at center @math{k} (@code{@var{S}(c,k) @geq{} 0}). ## ## @item @var{V}(c,k) ## average number of visits of class @math{c} ## requests to center @math{k} (@code{@var{V}(c,k) @geq{} 0}). ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{Xl}(c) ## @itemx @var{Xu}(c) ## Lower and upper bounds on class @math{c} throughput. ## ## @item @var{Rl}(c) ## @itemx @var{Ru}(c) ## Lower and upper bounds on class @math{c} response time. ## ## @end table ## ## @strong{REFERENCES} ## ## @itemize ## @item ## Teemu Kerola, @cite{The Composite Bound Method (CBM) for Computing ## Throughput Bounds in Multiple Class Environments}, Performance ## Evaluation Vol. 6, Issue 1, March 1986, DOI ## @uref{http://dx.doi.org/10.1016/0166-5316(86)90002-7, ## 10.1016/0166-5316(86)90002-7}. Also available as ## @uref{http://docs.lib.purdue.edu/cstech/395/, Technical Report ## CSD-TR-475}, Department of Computer Sciences, Purdue University, mar ## 13, 1984 (Revised Aug 27, 1984). ## @end itemize ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function [Xl Xu Rl Ru] = qncmcb( varargin ) if ( nargin < 2 || nargin > 3 ) print_usage(); endif [err N S V m Z] = qncmchkparam( varargin{:} ); isempty(err) || error(err); all(m == 1) || ... error("this function only supports single-server FCFS centers"); all(Z == 0) || ... error("this function does not support think time"); [C K] = size(S); D = S .* V; [Xl] = qncmbsb(N, D); Xu = zeros(1,C); D_max = max(D,[],2)'; for r=1:C ## This is equation (13) from T. Kerola, The Composite Bound Method ## (CBM) for Computing Throughput Bounds in Multiple Class ## Environments, Technical Report CSD-TR-475, Purdue University, ## march 13, 1984 (revised august 27, 1984) ## http://docs.lib.purdue.edu/cstech/395/ ## The only modification here is to apply also the upper bound ## 1/D_max(r). s = (1:C != r); # boolean array tmp = (1 .- Xl(s)*D(s,:)) ./ D(r,:); Xu(r) = min([tmp 1/D_max(r)]); endfor Rl = N ./ Xu; Ru = N ./ Xl; endfunction %!demo %! S = [10 7 5 4; ... %! 5 2 4 6]; %! NN=20; %! Xl = Xu = Rl = Ru = Xmva = Rmva = zeros(NN,2); %! for n=1:NN %! N=[n,10]; %! [a b c d] = qncmcb(N,S); %! Xl(n,:) = a; Xu(n,:) = b; Rl(n,:) = c; Ru(n,:) = d; %! [U R Q X] = qncmmva(N,S,ones(size(S))); %! Xmva(n,:) = X(:,1)'; Rmva(n,:) = sum(R,2)'; %! endfor %! subplot(2,2,1); %! plot(1:NN,Xl(:,1), 1:NN,Xu(:,1), 1:NN,Xmva(:,1), ";MVA;", "linewidth", 2); %! ylim([0, 0.2]); %! title("Class 1 throughput"); legend("boxoff"); %! subplot(2,2,2); %! plot(1:NN,Xl(:,2), 1:NN,Xu(:,2), 1:NN,Xmva(:,2), ";MVA;", "linewidth", 2); %! ylim([0, 0.2]); %! title("Class 2 throughput"); legend("boxoff"); %! subplot(2,2,3); %! plot(1:NN,Rl(:,1), 1:NN,Ru(:,1), 1:NN,Rmva(:,1), ";MVA;", "linewidth", 2); %! ylim([0, 700]); %! title("Class 1 response time"); legend("location", "northwest"); legend("boxoff"); %! subplot(2,2,4); %! plot(1:NN,Rl(:,2), 1:NN,Ru(:,2), 1:NN,Rmva(:,2), ";MVA;", "linewidth", 2); %! ylim([0, 700]); %! title("Class 2 response time"); legend("location", "northwest"); legend("boxoff"); queueing/inst/qnmknode.m0000644000175000017500000001243313570046274015242 0ustar morenomoreno## Copyright (C) 2008, 2009, 2010, 2011, 2012, 2016 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {@var{Q} =} qnmknode (@var{"m/m/m-fcfs"}, @var{S}) ## @deftypefnx {Function File} {@var{Q} =} qnmknode (@var{"m/m/m-fcfs"}, @var{S}, @var{m}) ## @deftypefnx {Function File} {@var{Q} =} qnmknode (@var{"m/m/1-lcfs-pr"}, @var{S}) ## @deftypefnx {Function File} {@var{Q} =} qnmknode (@var{"-/g/1-ps"}, @var{S}) ## @deftypefnx {Function File} {@var{Q} =} qnmknode (@var{"-/g/1-ps"}, @var{S}, @var{s2}) ## @deftypefnx {Function File} {@var{Q} =} qnmknode (@var{"-/g/inf"}, @var{S}) ## @deftypefnx {Function File} {@var{Q} =} qnmknode (@var{"-/g/inf"}, @var{S}, @var{s2}) ## ## Creates a node; this function can be used together with ## @code{qnsolve}. It is possible to create either single-class nodes ## (where there is only one customer class), or multiple-class nodes ## (where the service time is given per-class). Furthermore, it is ## possible to specify load-dependent service times. String literals ## are case-insensitive, so for example @var{"-/g/inf"}, @var{"-/G/inf"} ## and @var{"-/g/INF"} are all equivalent. ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{S} ## Mean service time. ## ## @itemize ## ## @item If @math{S} is a scalar, ## it is assumed to be a load-independent, class-independent service time. ## ## @item If @math{S} is a column vector, then @code{@var{S}(c)} is assumed to ## the the load-independent service time for class @math{c} customers. ## ## @item If @math{S} is a row vector, then @code{@var{S}(n)} is assumed to be ## the class-independent service time at the node, when there are @math{n} ## requests. ## ## @item Finally, if @var{S} is a two-dimensional matrix, then ## @code{@var{S}(c,n)} is assumed to be the class @math{c} service time ## when there are @math{n} requests at the node. ## ## @end itemize ## ## @item @var{m} ## Number of identical servers at the node. Default is @code{@var{m}=1}. ## ## @item @var{s2} ## Squared coefficient of variation for the service time. Default is 1.0. ## ## @end table ## ## The returned struct @var{Q} should be considered opaque to the client. ## ## @c The returned struct @var{Q} has the following fields: ## ## @c @table @var ## ## @c @item Q.node ## @c (String) type of the node; valid values are @code{"m/m/m-fcfs"}, ## @c @code{"-/g/1-lcfs-pr"}, @code{"-/g/1-ps"} (Processor-Sharing) ## @c and @code{"-/g/inf"} (Infinite Server, or delay center). ## ## @c @item Q.S ## @c Average service time. If @code{@var{Q}.S} is a vector, then ## @c @code{@var{Q}.S(i)} is the average service time at that node ## @c if there are @math{i} requests. ## ## @c @item Q.m ## @c Number of identical servers at a @code{"m/m/m-fcfs"}. Default is 1. ## ## @c @item Q.c ## @c Number of customer classes. Default is 1. ## ## @c @end table ## ## @seealso{qnsolve} ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function Q = qnmknode( node, S, varargin ) ischar(node) || ... error( "Parameter \"node\" must be a string" ); node = tolower(node); isvector(S) || ismatrix(S) || ... error( "Parameter \"S\" must be a vector" ); m = 1; s2 = ones( size(S) ); if ( strcmp(node, "m/m/m-fcfs") ) ## M/M/k multiserver node if ( nargin > 3 ) print_usage(); endif if ( 3 == nargin ) m = varargin{1}; endif elseif ( strcmp(node, "m/m/1/k-fcfs") ) ## M/M/1/k finite capacity node if ( nargin > 3 ) print_usage(); endif if ( 3 == nargin ) k = varargin{1}; endif elseif ( strcmp(node, "-/g/1-lcfs-pr") ) ## -/G/1-LCFS-PR node ( 2 == nargin || 3 == nargin ) || ... print_usage(); if ( 3 == nargin ) s2 = varargin{1}; endif elseif ( strcmp(node, "-/g/1-ps") ) ## -/G/1-PS (processor sharing) node ( 2 == nargin || 3 == nargin ) || ... print_usage(); if ( 3 == nargin ) s2 = varargin{1}; endif elseif ( strcmp(node, "-/g/inf") ) ## -/G/inf (Infinite Server) node ( 2 == nargin || 3 == nargin ) || ... print_usage(); if ( 3 == nargin ) s2 = varargin{1}; endif else error( "Unknown node type \"%s\". node type must be one of \"m/m/m-fcfs\", \"-/g/1-lcfs-pr\", \"-/g/1-ps\" and \"-/g/inf\"", node ); endif ( isnumeric(m) && m>=1 ) || ... error("m must be >=1"); ( isnumeric(s2) && s2>= 0 ) || ... error("s2 must be >=0"); Q = struct( "node", node, "m", m, "S", S, "s2", s2, "c", rows(S), "comment", "" ); endfunction %!test %! fail( "qnmknode( 'pippo', 1 )", "must be one" ); %! fail( "qnmknode( '-/g/1-ps', 1, 1, 1)", "Invalid call" ); queueing/inst/qncmbsb.m0000644000175000017500000001244613632722337015057 0ustar morenomoreno## Copyright (C) 2012, 2016, 2020 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qncmbsb (@var{N}, @var{D}) ## @deftypefnx {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qncmbsb (@var{N}, @var{S}, @var{V}) ## ## @cindex bounds, balanced system ## @cindex balanced system bounds ## @cindex multiclass network, closed ## @cindex closed multiclass network ## ## Compute Balanced System Bounds for closed, multiclass networks ## with @math{K} service centers and @math{C} customer classes. ## Only single-server nodes are supported. ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{N}(c) ## number of class @math{c} requests in the system (vector of length ## @math{C}). ## ## @item @var{D}(c, k) ## class @math{c} service demand at center @math{k} (@math{C \times K} ## matrix, @code{@var{D}(c,k) @geq{} 0}). ## ## @item @var{S}(c, k) ## mean service time of class @math{c} ## requests at center @math{k} (@math{C \times K} matrix, @code{@var{S}(c,k) @geq{} 0}). ## ## @item @var{V}(c,k) ## average number of visits of class @math{c} ## requests to center @math{k} (@math{C \times K} matrix, @code{@var{V}(c,k) @geq{} 0}). ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{Xl}(c) ## @itemx @var{Xu}(c) ## Lower and upper class @math{c} throughput bounds (vector of length @math{C}). ## ## @item @var{Rl}(c) ## @itemx @var{Ru}(c) ## Lower and upper class @math{c} response time bounds (vector of length @math{C}). ## ## @end table ## ## @seealso{qncsbsb} ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function [Xl Xu Rl Ru] = qncmbsb( varargin ) if ( nargin<2 || nargin>5 ) print_usage(); endif [err N S V m Z] = qncmchkparam( varargin{:} ); isempty(err) || error(err); all(m<=1) || ... error("Multiple-server nodes are not supported"); all(Z == 0 ) || ... error("This function only supports Z=0"); if ( sum(N) == 0 ) # handle trivial case of empty network Xl = Xu = Rl = Ru = zeros(size(S)); else D = S .* V; K = columns(S); ## Equations from T. Kerola, The Composite Bound Method (CBM) for ## Computing Throughput Bounds in Multiple Class Environments}, ## Technical Report CSD-TR-475, Department of Computer Sciences, ## Purdue University, mar 13 1984 (Revisted aug 27, 1984), available ## at http://docs.lib.purdue.edu/cstech/395/ Dc = sum(D,2)'; D_max = max(D,[],2)'; D_min = min(D,[],2)'; Xl = N ./ (Dc .+ (sum(N)-1) .* D_max); Xu = min( 1./D_max, N ./ ((K+sum(N)-1) .* D_min)); Rl = N ./ Xu; Ru = N ./ Xl; endif endfunction %!test %! fail("qncmbsb([],[])", "nonempty"); %! fail("qncmbsb([1 0], [1 2 3])", "2 rows"); %! fail("qncmbsb([1 0], [1 2 3; 4 5 -1])", "nonnegative"); %! fail("qncmbsb([1 2], [1 2 3; 4 5 6], [1 2 3])", "2 x 3"); %! fail("qncmbsb([1 2], [1 2 3; 4 5 6], [1 2 3; 4 5 -1])", "nonnegative"); %! fail("qncmbsb([1 2], [1 2 3; 1 2 3], [1 2 3; 1 2 3], [1 1])", "3 elements"); %! fail("qncmbsb([1 2], [1 2 3; 1 2 3], [1 2 3; 1 2 3], [1 1 2])", "not supported"); %! fail("qncmbsb([1 2], [1 2 3; 1 2 3], [1 2 3; 1 2 3], [1 1 -1],[1 2 3])", "2 elements"); %! fail("qncmbsb([1 2], [1 2 3; 1 2 3], [1 2 3; 1 2 3], [1 1 -1],[1 -2])", "nonnegative"); %! fail("qncmbsb([1 2], [1 2 3; 1 2 3], [1 2 3; 1 2 3], [1 1 -1],[1 0])", "only supports"); %!test %! [Xl Xu Rl Ru] = qncmbsb([0 0], [1 2 3; 1 2 3]); %! assert( all(Xl(:) == 0) ); %! assert( all(Xu(:) == 0) ); %! assert( all(Rl(:) == 0) ); %! assert( all(Ru(:) == 0) ); %!demo %! S = [10 7 5 4; ... %! 5 2 4 6]; %! NN=20; %! Xl = Xu = Rl = Ru = Xmva = Rmva = zeros(NN,2); %! for n=1:NN %! N=[n,10]; %! [a b c d] = qncmbsb(N,S); %! Xl(n,:) = a; Xu(n,:) = b; Rl(n,:) = c; Ru(n,:) = d; %! [U R Q X] = qncmmva(N,S,ones(size(S))); %! Xmva(n,:) = X(:,1)'; Rmva(n,:) = sum(R,2)'; %! endfor %! subplot(2,2,1); %! plot(1:NN,Xl(:,1), 1:NN,Xu(:,1), 1:NN,Xmva(:,1),";MVA;", "linewidth", 2); %! ylim([0, 0.2]); %! title("Class 1 throughput"); legend("boxoff"); %! subplot(2,2,2); %! plot(1:NN,Xl(:,2), 1:NN,Xu(:,2), 1:NN,Xmva(:,2),";MVA;", "linewidth", 2); %! ylim([0, 0.2]); %! title("Class 2 throughput"); legend("boxoff"); %! subplot(2,2,3); %! plot(1:NN,Rl(:,1), 1:NN,Ru(:,1), 1:NN,Rmva(:,1),";MVA;", "linewidth", 2); %! ylim([0, 700]); %! title("Class 1 response time"); legend("location", "northwest"); legend("boxoff"); %! subplot(2,2,4); %! plot(1:NN,Rl(:,2), 1:NN,Ru(:,2), 1:NN,Rmva(:,2),";MVA;", "linewidth", 2); %! ylim([0, 700]); %! title("Class 2 response time"); legend("location", "northwest"); legend("boxoff"); queueing/inst/ctmcexps.m0000644000175000017500000001267713570046274015266 0ustar morenomoreno## Copyright (C) 2008, 2009, 2010, 2011, 2012, 2016, 2018 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {@var{L} =} ctmcexps (@var{Q}, @var{t}, @var{p} ) ## @deftypefnx {Function File} {@var{L} =} ctmcexps (@var{Q}, @var{p}) ## ## @cindex Markov chain, continuous time ## @cindex continuous time Markov chain ## @cindex expected sojourn time, CTMC ## @cindex CTMC ## ## With three arguments, compute the expected times @code{@var{L}(i)} ## spent in each state @math{i} during the time interval @math{[0,t]}, ## assuming that the initial occupancy vector is @var{p}. With two ## arguments, compute the expected time @code{@var{L}(i)} spent in each ## transient state @math{i} until absorption. ## ## @strong{Note:} In its current implementation, this function ## requires that an absorbing state is reachable from any ## non-absorbing state of @math{Q}. ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{Q}(i,j) ## @math{N \times N} infinitesimal generator matrix. @code{@var{Q}(i,j)} ## is the transition rate from state @math{i} to state @math{j}, ## @math{1 @leq{} i, j @leq{} N}, @math{i \neq j}. ## The matrix @var{Q} must also satisfy the ## condition @math{\sum_{j=1}^N Q_{i,j} = 0} for every @math{i=1, @dots{}, N}. ## ## @item @var{t} ## If given, compute the expected sojourn times in @math{[0,t]} ## ## @item @var{p}(i) ## Initial occupancy probability vector; @code{@var{p}(i)} is the ## probability the system is in state @math{i} at time 0, @math{i = 1, ## @dots{}, N} ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{L}(i) ## If this function is called with three arguments, @code{@var{L}(i)} is ## the expected time spent in state @math{i} during the interval ## @math{[0,t]}. If this function is called with two arguments ## @code{@var{L}(i)} is the expected time spent in transient state ## @math{i} until absorption; if state @math{i} is absorbing, ## @code{@var{L}(i)} is zero. ## ## @end table ## ## @seealso{dtmcexps} ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function L = ctmcexps( Q, varargin ) persistent epsilon = 10*eps; if ( nargin < 2 || nargin > 3 ) print_usage(); endif [N err] = ctmcchkQ(Q); (N>0) || ... error(err); if ( nargin == 2 ) p = varargin{1}; else t = varargin{1}; p = varargin{2}; endif ( isvector(p) && length(p) == size(Q,1) && all(p>=0) && abs(sum(p)-1.0)= 0 ) || ... error( "t must be >= 0" ); ## F(x) are the transient state occupancy probabilities at time x ## F(x) = p*expm(Q*x) (see function ctmc()). F = @(x) (p*expm(Q*x)); L = quadv(F,0,t); else ## FIXME: deprecate this? ( isvector(t) && abs(t(1)) < epsilon ) || ... error( "t must be a vector, and t(1) must be 0.0" ); t = t(:)'; # make t a row vector ff = @(x,t) (x(:)'*Q+p); fj = @(x,t) (Q); L = lsode( {ff, fj}, zeros(size(p)), t ); endif else # absorbing case ## Identify absorbing states. If there are no absorbing states, ## raise an error. N = rows(Q); tr = find( any( abs(Q) > epsilon, 2 ) ); # non-absorbing states if ( length( tr ) == N ) error( "There are no absorbing states" ); endif QN = Q(tr,tr); pN = p(tr); LN = -pN*inv(QN); L = zeros(1,N); L(tr) = LN; endif endfunction %!test %! Q = [-1 1; 1 -1]; %! L = ctmcexps(Q,10,[1 0]); %! L = ctmcexps(Q,linspace(0,10,100),[1 0]); %!test %! Q = ctmcbd( [1 2 3], [3 2 1] ); %! p0 = [1 0 0 0]; %! t = linspace(0,10,10); %! L1 = L2 = zeros(length(t),4); %! # compute L using the differential equation formulation %! ff = @(x,t) (x(:)'*Q+p0); %! fj = @(x,t) (Q); %! L1 = lsode( {ff, fj}, zeros(size(p0)), t ); %! # compute L using ctmcexps (integral formulation) %! for i=1:length(t) %! L2(i,:) = ctmcexps(Q,t(i),p0); %! endfor %! assert( L1, L2, 1e-5); %!demo %! lambda = 0.5; %! N = 4; %! b = lambda*[1:N-1]; %! d = zeros(size(b)); %! Q = ctmcbd(b,d); %! t = linspace(0,10,100); %! p0 = zeros(1,N); p0(1)=1; %! L = zeros(length(t),N); %! for i=1:length(t) %! L(i,:) = ctmcexps(Q,t(i),p0); %! endfor %! plot( t, L(:,1), ";State 1;", "linewidth", 2, ... %! t, L(:,2), ";State 2;", "linewidth", 2, ... %! t, L(:,3), ";State 3;", "linewidth", 2, ... %! t, L(:,4), ";State 4;", "linewidth", 2 ); %! legend("location","northwest"); legend("boxoff"); %! xlabel("Time"); %! ylabel("Expected sojourn time"); %!demo %! lambda = 0.5; %! N = 4; %! b = lambda*[1:N-1]; %! d = zeros(size(b)); %! Q = ctmcbd(b,d); %! p0 = zeros(1,N); p0(1)=1; %! L = ctmcexps(Q,p0); %! disp(L); queueing/inst/qncmmvabs.m0000644000175000017500000002132413570046274015414 0ustar morenomoreno## Copyright (C) 2008, 2009, 2010, 2011, 2012, 2016, 2018, 2019 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncmmvabs (@var{N}, @var{S}, @var{V}) ## @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncmmvabs (@var{N}, @var{S}, @var{V}, @var{m}) ## @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncmmvabs (@var{N}, @var{S}, @var{V}, @var{m}, @var{Z}) ## @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncmmvabs (@var{N}, @var{S}, @var{V}, @var{m}, @var{Z}, @var{tol}) ## @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncmmvabs (@var{N}, @var{S}, @var{V}, @var{m}, @var{Z}, @var{tol}, @var{iter_max}) ## ## @cindex Mean Value Analysys (MVA), approximate ## @cindex MVA, approximate ## @cindex closed network, multiple classes ## @cindex multiclass network, closed ## ## Approximate Mean Value Analysis (MVA) for closed, multiclass ## queueing networks with @math{K} service centers and @math{C} ## customer classes. ## ## This implementation uses Bard and Schweitzer approximation. It is ## based on the assumption that the queue length at service center ## @math{k} with population set @math{{\bf N}-{\bf 1}_c} is ## approximated with ## ## @tex ## $$Q_k({\bf N}-{\bf 1}_c) \approx {n-1 \over n} Q_k({\bf N})$$ ## @end tex ## @ifnottex ## @example ## @group ## Q_k(N-1c) ~ (n-1)/n Q_k(N) ## @end group ## @end example ## @end ifnottex ## ## where @math{\bf N} is a valid population mix, @math{{\bf N}-{\bf 1}_c} ## is the population mix @math{\bf N} with one class @math{c} customer ## removed, and @math{n = \sum_c N_c} is the total number of requests. ## ## This implementation works for networks with infinite server (IS) ## and single-server nodes only. ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{N}(c) ## number of class @math{c} requests in the system (@code{@var{N}(c) @geq{} 0}). ## ## @item @var{S}(c,k) ## mean service time for class @math{c} customers at center @math{k} ## (@code{@var{S}(c,k) @geq{} 0}). ## ## @item @var{V}(c,k) ## average number of visits of class @math{c} requests to center ## @math{k} (@code{@var{V}(c,k) @geq{} 0}). ## ## @item @var{m}(k) ## number of servers at center @math{k}. If @code{@var{m}(k) < 1}, ## then the service center @math{k} is assumed to be a delay center ## (IS). If @code{@var{m}(k) == 1}, service center @math{k} is a ## regular queueing center (FCFS, LCFS-PR or PS) with a single server ## node. If omitted, each service center has a single server. Note ## that multiple server nodes are not supported. ## ## @item @var{Z}(c) ## class @math{c} external delay (@code{@var{Z} @geq{} 0}). Default is 0. ## ## @item @var{tol} ## Stopping tolerance (@code{@var{tol}>0}). The algorithm stops if ## the queue length computed on two subsequent iterations are less than ## @var{tol}. Default is @math{10^{-5}}. ## ## @item @var{iter_max} ## Maximum number of iterations (@code{@var{iter_max}>0}. ## The function aborts if convergenge is not reached within the maximum ## number of iterations. Default is 100. ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{U}(c,k) ## If @math{k} is a FCFS, LCFS-PR or PS node, then @code{@var{U}(c,k)} ## is the utilization of class @math{c} requests on service center ## @math{k}. If @math{k} is an IS node, then @code{@var{U}(c,k)} is the ## class @math{c} @emph{traffic intensity} at device @math{k}, ## defined as @code{@var{U}(c,k) = @var{X}(c)*@var{S}(c,k)} ## ## @item @var{R}(c,k) ## response time of class @math{c} requests at service center @math{k}. ## ## @item @var{Q}(c,k) ## average number of class @math{c} requests at service center @math{k}. ## ## @item @var{X}(c,k) ## class @math{c} throughput at service center @math{k}. ## ## @end table ## ## @strong{REFERENCES} ## ## @itemize ## @item ## Y. Bard, @cite{Some Extensions to Multiclass Queueing Network Analysis}, ## proc. 4th Int. Symp. on Modelling and Performance Evaluation of ## Computer Systems, Feb 1979, pp. 51--62. ## ## @item ## P. Schweitzer, @cite{Approximate Analysis of Multiclass Closed ## Networks of Queues}, Proc. Int. Conf. on Stochastic Control and ## Optimization, jun 1979, pp. 25--29. ## @end itemize ## ## This implementation is based on Edward D. Lazowska, John Zahorjan, G. ## Scott Graham, and Kenneth C. Sevcik, @cite{Quantitative System ## Performance: Computer System Analysis Using Queueing Network Models}, ## Prentice Hall, ## 1984. @url{http://www.cs.washington.edu/homes/lazowska/qsp/}. In ## particular, see section 7.4.2.2 ("Approximate Solution ## Techniques"). This implementation is slightly different from the one ## described above, as it computes the average response times @math{R} ## instead of the residence times. ## ## @seealso{qncmmva} ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function [U R Q X] = qncmmvabs( N, S, V, m, Z, tol, iter_max ) if ( nargin < 3 || nargin > 7 ) print_usage(); endif isvector(N) && all( N>=0 ) || ... error( "N must be a vector of positive integers" ); N = N(:)'; # make N a row vector C = length(N); ## Number of classes K = columns(S); ## Number of service centers size(S) == [C,K] || ... error( "S size mismatch" ); size(V) == [C,K] || ... error( "V size mismatch" ); if ( nargin < 4 || isempty(m) ) m = ones(1,K); else isvector(m) || ... error( "m must be a vector"); m = m(:)'; # make m a row vector ( length(m) == K && all( m <= 1 ) ) || ... error( "m must be <= 1 and have %d elements", K ); endif if ( nargin < 5 || isempty(Z) ) Z = zeros(1,C); else isvector(Z) || ... error( "Z must be a vector" ); Z = Z(:)'; # make Z a row vector ( length(Z) == C && all(Z >= 0 ) ) || ... error( "Z must be >= 0 and have %d elements", C ); endif if ( nargin < 6 || isempty(tol) ) tol = 1e-5; endif if ( nargin < 7 || isempty(iter_max) ) iter_max = 100; endif ## Check consistency of parameters all(S(:) >= 0) || ... error( "S contains negative values" ); all(V(:) >= 0) || ... error( "V contains negative values" ); ## Initialize results R = zeros( C, K ); Xc = zeros( 1, C ); # Xc(c) is the class c throughput Q = zeros( C, K ); D = V .* S; ## Initialization of temporaries iter = 0; A = zeros( C, K ); Q = diag(N/K)*ones(C,K); # Q(c,k) = N(c) / K i_single=find(m==1); i_multi=find(m<1); ## Main loop N(N==0)=1; do iter++; Qold = Q; ## A(c,k) = (N(c)-1)/N(c) * Q(c,k) + sum_{j=1, j|=c}^C Qold(j,k) A = diag( (N-1) ./ N )*Q + ( (1 - eye(C)) * Qold ); ## R(c,k) = ## S(c,k) is k is a delay center ## S(c,k) * (1+A(c,k)) if k is a queueing center; R(:,i_multi) = S(:,i_multi); R(:,i_single) = S(:,i_single) .* ( 1 + A(:,i_single)); ## X(c) = N(c) / (sum_k R(c,k) * V(c,k)) Xc = N ./ (Z .+ sum(R.*V,2)'); ## Q(c,k) = X(c) * R(c,k) * V(c,k) Q = (diag(Xc)*R).*V; ## err = norm(Q-Qold); err = norm((Q-Qold)./Qold, "inf"); until (erriter_max); if ( iter > iter_max ) warning( "qncmmvabs(): Convergence not reached after %d iterations", iter_max ); endif X = diag(Xc)*V; # X(c,k) = X(c) * V(c,k) U = diag(Xc)*D; # U(c,k) = X(c) * D(c,k) # U(N==0,:) = R(N==0,:) = Q(N==0,:) = X(N==0,:) = 0; endfunction %!test %! S = [ 1 3 3; 2 4 3]; %! V = [ 1 1 3; 1 1 3]; %! N = [ 1 1 ]; %! m = [1 ; 1 ]; %! Z = [2 2 2]; %! fail( "qncmmvabs(N,S,V,m,Z)", "m must be" ); %! m = [1 ; 1 ; 1]; %! fail( "qncmmvabs(N,S,V,m,Z)", "Z must be" ); %!test %! S = [ 1 3; 2 4]; %! V = [ 1 1; 1 1]; %! N = [ 1 1 ]; %! m = ones(1,2); %! [U R Q X] = qncmmvabs(N,S,V,m); %! assert( Q, [ .192 .808; .248 .752 ], 1e-3 ); %! Xc = ( X(:,1)./V(:,1) )'; %! assert( Xc, [ .154 .104 ], 1e-3 ); %! # Compute the (overall) class-c system response time %! R_c = N ./ Xc; %! assert( R_c, [ 6.508 9.614 ], 5e-3 ); %!demo %! S = [ 1, 1, 1, 1; 2, 1, 3, 1; 4, 2, 3, 3 ]; %! V = ones(3,4); %! N = [10 5 1]; %! m = [1 0 1 1]; %! [U R Q X] = qncmmvabs(N,S,V,m); queueing/inst/ctmcmtta.m0000644000175000017500000000756613570046274015255 0ustar morenomoreno## Copyright (C) 2008, 2009, 2010, 2011, 2012, 2016, 2018 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {@var{t} =} ctmcmtta (@var{Q}, @var{p}) ## ## @cindex Markov chain, continuous time ## @cindex continuous time Markov chain ## @cindex CTMC ## @cindex mean time to absorption, CTMC ## ## Compute the Mean-Time to Absorption (MTTA) of the CTMC described by ## the infinitesimal generator matrix @var{Q}, starting from initial ## occupancy probabilities @var{p}. If there are no absorbing states, this ## function fails with an error. ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{Q}(i,j) ## @math{N \times N} infinitesimal generator matrix. @code{@var{Q}(i,j)} ## is the transition rate from state @math{i} to state @math{j}, @math{i ## \neq j}. The matrix @var{Q} must satisfy the condition ## @math{\sum_{j=1}^N Q_{i,j} = 0} ## ## @item @var{p}(i) ## probability that the system is in state @math{i} ## at time 0, for each @math{i=1, @dots{}, N} ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{t} ## Mean time to absorption of the process represented by matrix @var{Q}. ## If there are no absorbing states, this function fails. ## ## @end table ## ## @strong{REFERENCES} ## ## @itemize ## @item ## G. Bolch, S. Greiner, H. de Meer and ## K. Trivedi, @cite{Queueing Networks and Markov Chains: Modeling and ## Performance Evaluation with Computer Science Applications}, Wiley, ## 1998. ## @end itemize ## ## @seealso{ctmcexps} ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function t = ctmcmtta( Q, p ) persistent epsilon = 10*eps; if ( nargin != 2 ) print_usage(); endif [N err] = ctmcchkQ(Q); (N>0) || ... error(err); ( isvector(p) && length(p) == N && all(p>=0) && abs(sum(p)-1.0). ## -*- texinfo -*- ## ## @deftypefn {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}, @var{Ql}, @var{Qu}] =} qncsgb (@var{N}, @var{D}) ## @deftypefnx {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}, @var{Ql}, @var{Qu}] =} qncsgb (@var{N}, @var{S}, @var{V}) ## @deftypefnx {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}, @var{Ql}, @var{Qu}] =} qncsgb (@var{N}, @var{S}, @var{V}, @var{m}) ## @deftypefnx {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}, @var{Ql}, @var{Qu}] =} qncsgb (@var{N}, @var{S}, @var{V}, @var{m}, @var{Z}) ## ## @cindex bounds, geometric ## @cindex geometric bounds ## @cindex closed network ## ## Compute Geometric Bounds (GB) on system throughput, system response ## time and server queue lenghts for closed, single-class networks ## with @math{K} service centers and @math{N} requests. ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{N} ## number of requests in the system (scalar, @code{@var{N} > 0}). ## ## @item @var{D}(k) ## service demand of service center @math{k} (vector of length ## @math{K}, @code{@var{D}(k) @geq{} 0}). ## ## @item @var{S}(k) ## mean service time at center @math{k} (vector of length @math{K}, ## @code{@var{S}(k) @geq{} 0}). ## ## @item @var{V}(k) ## visit ratio to center @math{k} ## (vector of length @math{K}, @code{@var{V}(k) @geq{} 0}). ## ## @item @var{m}(k) ## number of servers at center @math{k}. This function only supports ## @math{M/M/1} queues, therefore @var{m} must be ## @code{ones(size(S))}. ## ## @item @var{Z} ## external delay (think time, @code{@var{Z} @geq{} 0}, scalar). Default is 0. ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{Xl} ## @itemx @var{Xu} ## Lower and upper bound on the system throughput. If @code{@var{Z}>0}, ## these bounds are computed using @emph{Geometric Square-root Bounds} ## (GSB). If @code{@var{Z}==0}, these bounds are computed using @emph{Geometric Bounds} (GB) ## ## @item @var{Rl} ## @itemx @var{Ru} ## Lower and upper bound on the system response time. These bounds ## are derived from @var{Xl} and @var{Xu} using Little's Law: ## @code{@var{Rl} = @var{N} / @var{Xu} - @var{Z}}, ## @code{@var{Ru} = @var{N} / @var{Xl} - @var{Z}} ## ## @item @var{Ql}(k) ## @itemx @var{Qu}(k) ## lower and upper bounds of center @math{K} queue length. ## ## @end table ## ## @strong{REFERENCES} ## ## @itemize ## @item ## G. Casale, R. R. Muntz, G. Serazzi, @cite{Geometric Bounds: a ## Non-Iterative Analysis Technique for Closed Queueing Networks}, IEEE ## Transactions on Computers, 57(6):780-794, June ## 2008. @uref{http://doi.ieeecomputersociety.org/10.1109/TC.2008.37, ## 10.1109/TC.2008.37} ## @end itemize ## ## In this implementation we set @math{X^+} and @math{X^-} as the upper ## and lower Asymptotic Bounds as computed by the @command{qncsab} ## function, respectively. ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function [X_lower X_upper R_upper R_lower Q_lower Q_upper] = qncsgb( varargin ) ## This implementation is based on the paper: G.Casale, R.R.Muntz, ## G.Serazzi. Geometric Bounds: a Noniterative Analysis Technique for ## Closed Queueing Networks IEEE Transactions on Computers, ## 57(6):780-794, Jun 2008. ## http://doi.ieeecomputersociety.org/10.1109/TC.2008.37 ## The original paper uses the symbol "L" instead of "D" to denote the ## loadings of service centers. In this function we adopt the same ## notation as the paper. if ( nargin < 2 || ( nargin > 5 && nargin != 7 ) ) print_usage(); endif [err N S V m Z] = qncschkparam( varargin{:} ); isempty(err) || error(err); ## This function requires N>0 N > 0 || ... error( "N must be > 0" ); all(m==1) || ... error("this function only supports single server nodes"); L = S .* V; L_tot = sum(L); L_max = max(L); M = length(L); if ( nargin < 6 ) [X_minus X_plus] = qncsaba(N,L,ones(size(L)),m,Z); else X_minus = varargin{6}; X_plus = varargin{7}; endif ##[X_minus X_plus] = [0 1/L_max]; [Q_lower Q_upper] = __compute_Q( N, L, Z, X_plus, X_minus); [Q_lower_Nm1 Q_upper_Nm1] = __compute_Q( N-1, L, Z, X_plus, X_minus); if ( Z > 0 ) ## Use Geometric Square-root Bounds (GSB) i = find(L=0) ) || error( "N is not valid" ); L_tot = sum(L); L_max = max(L); M = length(L); m_max = sum( L == L_max ); y = Y = zeros(1,M); ## first, handle the case of servers with loading less than the ## maximum that is, L(i) < L_max i=find(L 0" ); %! fail( "qncsgb( -1, [1 2])", "nonnegative" ); %! fail( "qncsgb( 1, [1 2],1,[1 -1])", "single server" ); %!# shared test function %!function test_gb( D, expected, Z=0 ) %! for i=1:rows(expected) %! N = expected(i,1); %! [X_lower X_upper Q_lower Q_upper] = qncsgb(N,D,1,1,Z); %! X_exp_lower = expected(i,2); %! X_exp_upper = expected(i,3); %! assert( [N X_lower X_upper], [N X_exp_lower X_exp_upper], 1e-4 ) %! endfor %!xtest %! # table IV %! D = [ 0.1 0.1 0.09 0.08 ]; %! # N X_lower X_upper %! expected = [ 2 4.3040 4.3174; ... %! 5 6.6859 6.7524; ... %! 10 8.1521 8.2690; ... %! 20 9.0947 9.2431; ... %! 80 9.8233 9.8765 ]; %! test_gb(D, expected); %!xtest %! # table V %! D = [ 0.1 0.1 0.09 0.08 ]; %! Z = 1; %! # N X_lower X_upper %! expected = [ 2 1.4319 1.5195; ... %! 5 3.3432 3.5582; ... %! 10 5.7569 6.1410; ... %! 20 8.0856 8.6467; ... %! 80 9.7147 9.8594]; %! test_gb(D, expected, Z); %!test %! P = [0 0.3 0.7; 1 0 0; 1 0 0]; %! S = [1 0.6 0.2]; %! m = ones(1,3); %! V = qncsvisits(P); %! Z = 2; %! Nmax = 20; %! tol = 1e-5; # compensate for numerical errors %! ## Test case with Z>0 %! for n=1:Nmax %! [X_gb_lower X_gb_upper NC NC Q_gb_lower Q_gb_upper] = qncsgb(n, S.*V, 1, 1, Z); %! [U R Q X] = qnclosed( n, S, V, m, Z ); %! X_mva = X(1)/V(1); %! assert( X_gb_lower <= X_mva+tol ); %! assert( X_gb_upper >= X_mva-tol ); %! assert( Q_gb_lower <= Q+tol ); # compensate for numerical errors %! assert( Q_gb_upper >= Q-tol ); # compensate for numerical errors %! endfor %!test %! P = [0 0.3 0.7; 1 0 0; 1 0 0]; %! S = [1 0.6 0.2]; %! V = qncsvisits(P); %! Nmax = 20; %! tol = 1e-5; # compensate for numerical errors %! %! ## Test case with Z=0 %! for n=1:Nmax %! [X_gb_lower X_gb_upper NC NC Q_gb_lower Q_gb_upper] = qncsgb(n, S.*V); %! [U R Q X] = qnclosed( n, S, V ); %! X_mva = X(1)/V(1); %! assert( X_gb_lower <= X_mva+tol ); %! assert( X_gb_upper >= X_mva-tol ); %! assert( Q_gb_lower <= Q+tol ); %! assert( Q_gb_upper >= Q-tol ); %! endfor queueing/inst/qsmmm.m0000644000175000017500000001357513574752117014574 0ustar morenomoreno## Copyright (C) 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2016, 2018, 2019 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}, @var{p0}, @var{pm}] =} qsmmm (@var{lambda}, @var{mu}) ## @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}, @var{p0}, @var{pm}] =} qsmmm (@var{lambda}, @var{mu}, @var{m}) ## @deftypefnx {Function File} {@var{pk} =} qsmmm (@var{lambda}, @var{mu}, @var{m}, @var{k}) ## ## @cindex @math{M/M/m} system ## ## Compute utilization, response time, average number of requests in ## service and throughput for a @math{M/M/m} queue, a queueing system ## with @math{m} identical servers connected to a single FCFS ## queue. ## ## @tex ## The steady-state probability @math{\pi_k} that there are @math{k} ## requests in the system, @math{k \geq 0}, can be computed as: ## ## $$ ## \pi_k = \cases{ \displaystyle{\pi_0 { ( m\rho )^k \over k!}} & $0 \leq k \leq m$;\cr\cr ## \displaystyle{\pi_0 { \rho^k m^m \over m!}} & $k>m$.\cr ## } ## $$ ## ## where @math{\rho = \lambda/(m\mu)} is the individual server utilization. ## The steady-state probability @math{\pi_0} that there are no jobs in the ## system is: ## ## $$ ## \pi_0 = \left[ \sum_{k=0}^{m-1} { (m\rho)^k \over k! } + { (m\rho)^m \over m!} {1 \over 1-\rho} \right]^{-1} ## $$ ## ## @end tex ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{lambda} ## Arrival rate (@code{@var{lambda}>0}). ## ## @item @var{mu} ## Service rate (@code{@var{mu}>@var{lambda}}). ## ## @item @var{m} ## Number of servers (@code{@var{m} @geq{} 1}). ## Default is @code{@var{m}=1}. ## ## @item @var{k} ## Number of requests in the system (@code{@var{k} @geq{} 0}). ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{U} ## Service center utilization, @math{U = \lambda / (m \mu)}. ## ## @item @var{R} ## Service center mean response time ## ## @item @var{Q} ## Average number of requests in the system ## ## @item @var{X} ## Service center throughput. If the system is ergodic, ## we will always have @code{@var{X} = @var{lambda}} ## ## @item @var{p0} ## Steady-state probability that there are 0 requests in the system ## ## @item @var{pm} ## Steady-state probability that an arriving request has to wait in the ## queue ## ## @item @var{pk} ## Steady-state probability that there are @var{k} requests in the ## system (including the one being served). ## ## @end table ## ## If this function is called with less than four parameters, ## @var{lambda}, @var{mu} and @var{m} can be vectors of the same size. In this ## case, the results will be vectors as well. ## ## @strong{REFERENCES} ## ## @itemize ## @item ## G. Bolch, S. Greiner, H. de Meer and K. Trivedi, @cite{Queueing Networks ## and Markov Chains: Modeling and Performance Evaluation with Computer ## Science Applications}, Wiley, 1998, Section 6.5 ## @end itemize ## ## @seealso{erlangc,qsmm1,qsmminf,qsmmmk} ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function [U_or_pk R Q X p0 pm] = qsmmm( lambda, mu, m, k ) if ( nargin < 2 || nargin > 4 ) print_usage(); endif if ( nargin == 2 ) m = 1; else ( isnumeric(lambda) && isnumeric(mu) && isnumeric(m) ) || ... error( "the parameters must be numeric vectors" ); endif [err lambda mu m] = common_size( lambda, mu, m ); if ( err ) error( "parameters are not of common size" ); endif lambda = lambda(:)'; mu = mu(:)'; m = m(:)'; all( m>0 ) || error( "m must be >0" ); all( lambda>0 ) || error( "lambda must be >0" ); rho = lambda ./ (m .* mu ); all( rho < 1 ) || error( "Processing capacity exceeded" ); for i=1:length(lambda) p0(i) = 1 / ( ... sumexpn( m(i)*rho(i), m(i)-1 ) + ... expn(m(i)*rho(i), m(i))/(1-rho(i)) ... ); endfor if (nargin < 4) X = lambda; U_or_pk = rho; pm = erlangc(lambda ./ mu, m); Q = m .* rho .+ rho ./ (1-rho) .* pm; R = Q ./ X; else (length(lambda) == 1) || error("lambda must be a scalar if this function is called with four arguments"); isvector(k) || error("k must be a vector"); all(k>=0) || error("k must be >= 0"); U_or_pk = 0*k; for idx=1:length(k) if (k(idx) <= m) U_or_pk(idx) = p0 * expn(m * rho, k(idx)); else U_or_pk(idx) = p0 * expn(m * rho, m) * (rho ^ (k(idx)-m)); endif endfor endif endfunction %!demo %! # This is figure 6.4 on p. 220 Bolch et al. %! rho = 0.9; %! ntics = 21; %! lambda = 0.9; %! m = linspace(1,ntics,ntics); %! mu = lambda./(rho .* m); %! [U R Q X] = qsmmm(lambda, mu, m); %! qlen = X.*(R-1./mu); %! plot(m,Q,"o",qlen,"*"); %! axis([0,ntics,0,25]); %! legend("Jobs in the system","Queue Length","location","northwest"); %! legend("boxoff"); %! xlabel("Number of servers (m)"); %! title("M/M/m system, \\lambda = 0.9, \\mu = 0.9"); %!demo %! ## Given a M/M/m queue, compute the steady-state probability pk of %! ## having k jobs in the systen. %! lambda = 0.5; %! mu = 0.15; %! m = 5; %! k = 0:10; %! pk = qsmmm(lambda, mu, m, k); %! plot(k, pk, "-o", "linewidth", 2); %! xlabel("N. of jobs (k)"); %! ylabel("P_k"); %! title(sprintf("M/M/%d system, \\lambda = %g, \\mu = %g", m, lambda, mu)); queueing/inst/qsammm.m0000644000175000017500000000651513570046274014725 0ustar morenomoreno## Copyright (C) 2008, 2009, 2010, 2011, 2012, 2016, 2018 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qsammm (@var{lambda}, @var{mu}) ## ## @cindex asymmetric @math{M/M/m} system ## ## Compute @emph{approximate} utilization, response time, average ## number of requests in service and throughput for an asymmetric ## @math{M/M/m} queue. In this type of system there are @math{m} different ## servers connected to a single queue. Each server has its own ## (possibly different) service rate. If there is more than one server ## available, requests are routed to a randomly-chosen one. ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{lambda} ## Arrival rate (@code{@var{lambda}>0}) ## ## @item @var{mu} ## @code{@var{mu}(i)} is the service rate of server ## @math{i}, @math{1 @leq{} i @leq{} m}. ## The system must be ergodic (@code{@var{lambda} < sum(@var{mu})}). ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{U} ## Approximate service center utilization, ## @math{U = \lambda / ( \sum_{i=1}^m \mu_i )}. ## ## @item @var{R} ## Approximate service center response time ## ## @item @var{Q} ## Approximate number of requests in the system ## ## @item @var{X} ## Approximate system throughput. If the system is ergodic, ## @code{@var{X} = @var{lambda}} ## ## @end table ## ## @strong{REFERENCES} ## ## @itemize ## @item ## G. Bolch, S. Greiner, H. de Meer and K. Trivedi, @cite{Queueing Networks ## and Markov Chains: Modeling and Performance Evaluation with Computer ## Science Applications}, Wiley, 1998 ## @end itemize ## ## @seealso{qsmmm} ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function [U R Q X p0 pm] = qsammm( lambda, mu ) if ( nargin != 2 ) print_usage(); endif isscalar(lambda) || ... error( "lambda must be scalar" ); isvector(mu) || ... error( "mu must be a vector" ); m = length(mu); # number of servers all( lambda < sum(mu) ) || ... error( "Processing capacity exceeded" ); X = lambda; U = rho = lambda / sum(mu); Q = p0 = 0; #{ k=[0:m-1]; p0 = 1 / ( ... sum( (m*rho).^k ./ factorial(k)) + ... (m*rho)^m / (factorial(m)*(1-rho)) ... ); pm = (m*rho)^m/(factorial(m)*(1-rho))*p0; #} p0 = 1 / ( ... sumexpn( m*rho, m-1 ) + ... expn(m*rho, m) / (1-rho) ... ); pm = expn(m*rho, m)*p0/(1-rho); Q = m*rho+rho / (1-rho) * pm; R = Q / X; endfunction %!test %! [U R Q X] = qsammm( 73,[10,15,20,20,25] ); %! assert( U, 0.81, 1e-2 ); %! assert( Q, 6.5278, 1e-4 ); queueing/inst/private/0000755000175000017500000000000013635377242014723 5ustar morenomorenoqueueing/inst/private/scc.m0000644000175000017500000000402013635373160015640 0ustar morenomoreno## Copyright (C) 2018, 2020 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {@var{s} =} scc (@var{G}) ## ## Compute the Strongly Connected Components (SCC) of a graph with ## adjacency matrix @var{G}. Any positive value in @var{G} denotes ## an edge; zero or negative values denote the absence of an edge. ## ## @end deftypefn function s = scc( G ) ## It might be possible to use a different algorithm for SCC (e.g., ## http://pmtksupport.googlecode.com/svn/trunk/gaimc1.0-graphAlgo/scomponents.m assert(issquare(G)); N = rows(G); GF = (G>0); GB = (G'>0); s = zeros(N,1); c=1; for n=1:N if (s(n) == 0) fw = __dfs(GF,n); bw = __dfs(GB,n); r = (fw & bw); s(r) = c++; endif endfor endfunction ## This is essentially the same code from qncmvisits.m function v = __dfs(G, s) assert( issquare(G) ); N = rows(G); v = stack = zeros(1,N); ## v(i) == 1 iff node i has been visited q = 1; # first empty slot in queue stack(q++) = s; v(s) = 1; while( q>1 ) n = stack(--q); ## explore neighbors of n: all f in G(n,:) such that v(f) == 0 ## The following instruction is equivalent to: ## for f=find(G(n,:)) ## if ( v(f) == 0 ) for f = find ( G(n,:) & (v==0) ) stack(q++) = f; v(f) = 1; endfor endwhile endfunction queueing/inst/private/expn.m0000644000175000017500000000223613572237526016056 0ustar morenomoreno## Copyright (C) 2012, 2018, 2019 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {@var{r} =} expn (@var{a}, @var{n}) ## ## Compute @code{r = a^n / n!}, with @math{a>0} and @math{n @geq{} 0}. ## ## @end deftypefn function r = expn( a, n ) (isscalar(n) && (n>=0)) || error("n must be nonnegative"); (isscalar(a) && (a>0)) || error("a must be positive"); r = prod( a./(1:n) ); # for n=0, prod([]) returns 1 which is correct endfunction queueing/inst/private/qnoschkparam.m0000644000175000017500000000437513570046274017575 0ustar morenomoreno## Copyright (C) 2012, 2013, 2014 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {[@var{err} @var{lambda} @var{S} @var{V} @var{m}] = } qnoschkparam( lambda, S, V, m ) ## ## Validate input parameters for open, single class networks. ## @var{err} is the empty string on success, or a suitable error message ## string on failure. ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function [err lambda S V m] = qnoschkparam( varargin ) err = ""; assert( nargin >= 2 ); lambda = varargin{1}; S = varargin{2}; [V m] = deal(0); if ! ( isscalar(lambda) && lambda > 0 ) err = "lambda must be a positive scalar"; return; endif if ! ( isnumeric(S) && isvector(S) && length(S)>0 ) err = "S must be a nonempty vector"; return; endif if ( any(S<0) ) err = "S must contain nonnegative values"; return; endif S = S(:)'; if ( nargin < 3 ) V = ones(size(S)); else V = varargin{3}; if ! ( isnumeric(V) && isvector(V) ) err = "V must be a vector"; return; endif if ( any(V<0) ) err = "V must contain nonnegative values"; return; endif V = V(:)'; endif if ( nargin < 4 ) m = ones(size(S)); else m = varargin{4}; if ! ( isnumeric(m) && isvector(m) ) err = "m must be a vector"; return; endif m = m(:)'; endif [er S V m] = common_size(S, V, m); if (er != 0 ) err = "S, V and m are of incompatible size"; return; endif endfunction queueing/inst/private/qncmchkparam.m0000644000175000017500000000634213570046274017547 0ustar morenomoreno## Copyright (C) 2012, 2013 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {[@var{err} @var{Nout} @var{Sout} @var{Vout} @var{mout} @var{Zout}] = } qncmchkparam( N, S ) ## @deftypefnx {Function File} {[@var{err} @var{Nout} @var{Sout} @var{Vout} @var{mout} @var{Zout}] = } qncmchkparam( N, S, V ) ## @deftypefnx {Function File} {[@var{err} @var{Nout} @var{Sout} @var{Vout} @var{mout} @var{Zout}] = } qncmchkparam( N, S, V, m ) ## @deftypefnx {Function File} {[@var{err} @var{Nout} @var{Sout} @var{Vout} @var{mout} @var{Zout}] = } qncmchkparam( N, S, V, m, Z ) ## ## Validate input parameters for closed, multiclass network. ## @var{err} is the empty string on success, or a suitable error message ## string on failure. ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function [err Nout Sout Vout mout Zout] = qncmchkparam( N, S, V, m, Z ) err = ""; [Nout Sout Vout mout Zout] = deal(0); if ( nargin < 2 || nargin > 5 ) err = "Wrong number of parameters (min 2, max 5)"; return; endif if ! ( isnumeric(N) && isvector(N) && length(N)>0 ) err = "N must be a nonempty vector"; return; endif if ! ( all(N>=0) && all( fix(N) == N ) ) err = "N must contain nonnegative integers"; return; endif Nout = N(:)'; C = length(Nout); ## Number of classes if ! ( isnumeric(S) && ismatrix(S) && ndims(S) == 2 && rows(S) == C ) err = sprintf("S must be a 2-dimensional matrix with %d rows",C); return; endif if ( any(S(:)<0) ) err = "S must contain nonnegative values"; return; endif Sout = S; K = columns(Sout); if ( nargin < 3 ) Vout = ones(size(Sout)); else if ! ( isnumeric(V) && ismatrix(V) && ndims(V) == 2 && rows(V) == C && columns(V) == K ) err = sprintf("V must be a %d x %d matrix", C, K ); return; endif if ( any(V(:)<0) ) err = "V must contain nonnegative values"; return; endif Vout = V; endif if ( nargin < 4 ) mout = ones(1,K); else if ! ( isnumeric(m) && isvector(m) && length(m) == K ) err = sprintf("m must be a vector with %d elements", K ); return; endif mout = m(:)'; endif if ( nargin < 5 ) Zout = zeros(1,C); else if ! ( isnumeric(Z) && isvector(Z) && length(Z) == C ) err = sprintf("Z must be a vector with %d elements", C); return; endif if ( any(Z<0) ) err = "Z must contain nonnegative values"; return; endif Zout = Z(:)'; endif endfunction queueing/inst/private/sumexpn.m0000644000175000017500000000505013570046274016574 0ustar morenomoreno## Copyright (C) 2012, 2019 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {@var{r} =} sumexpn (@var{a}, @var{n}) ## ## Compute the sum: ## ## @iftex ## @tex ## $$ S(a,n) = \sum_{k=0}^n {a^k \over k!} $$ ## @end tex ## @end iftex ## @ifnottex ## @example ## n ## __ ## \ a^k ## S(a,n) = > ----- ## /__ k! ## k=0 ## @end example ## @end ifnottex ## ## with @math{a>0} and @math{n @geq{} 0}. ## ## @end deftypefn function r = sumexpn( a, n ) n>=0 || ... error("n must be nonnegative"); a>0 || ... error("a must be positive"); #{ A direct calculation of the summation yields the expression: r = sum(cumprod([1 a./(1:n)])); However, we can apply an approach similar to Horner's rule and rewrite a^0 a^1 a^2 a^n --- + --- + --- + ... + --- 0! 1! 2! n! as a / a / a / / a \ \\\ 1 + - | 1 + - | 1 + - | 1 + ... | 1 + - | ... ||| 1 \ 2 \ 3 \ \ n / /// from which we can use the following iterative code that is numerically more stable: #} r = 1; for k=n:-1:1 r = (1+(a/k)*r); endfor endfunction %!test %! a = 0.8; %! n = 0; %! assert( sumexpn(a,n), sum(a.^(0:n) ./ factorial(0:n)), 1e-6 ); %!test %! a = 1.2; %! n = 6; %! assert( sumexpn(a,n), sum(a.^(0:n) ./ factorial(0:n)), 1e-6 ); %!test %! a = 18; %! assert( sumexpn(a,0), 1, 1e-6 ); %!test %! a = 18; %! assert( sumexpn(a,1), 1 + a, 1e-6 ); %!test %! a = 1.75; %! assert( sumexpn(a, 2), 1 + a + (a^2)/2, 1e-6 ); %!demo %! function r = sumexpn_direct(a, n) %! r = sum(cumprod([1 a./(1:n)])); %! endfunction %! %! a = 0.1:0.05:30; %! n = 20; %! d = zeros(size(a)); %! for idx=1:length(a) %! d(idx) = sumexpn_direct(a(idx),n) - sumexpn(a(idx),n); %! endfor %! plot(a,d, ";sumexpn_direct - sumexpn;"); queueing/inst/private/qncschkparam.m0000644000175000017500000000501513570046274017551 0ustar morenomoreno## Copyright (C) 2012, 2013, 2014 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {[@var{err} @var{Nout} @var{Sout} @var{Vout} @var{mout} @var{Zout}] = } qncschkparam( N, S, V, m, Z ) ## ## Validate input parameters for closed, single class networks. ## @var{err} is the empty string on success, or a suitable error message ## string on failure. ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function [err Nout Sout Vout mout Zout] = qncschkparam( N, S, V, m, Z ) err = ""; [Nout Sout Vout mout Zout] = deal(0); if ( nargin < 2 || nargin > 5) err = "Wrong number of parameters (min 2, max 5)"; return; endif if ! ( isscalar(N) && N>=0 && N == fix(N) ) err = "N must be a nonnegative integer"; return; endif Nout = N; if ! ( isnumeric(S) && isvector(S) && length(S)>0 ) err = "S must be a nonempty vector"; return; endif if ( any(S<0) ) err = "S must contain nonnegative values"; return; endif Sout = S(:)'; if ( nargin < 3 ) Vout = ones(size(Sout)); else if ! ( isnumeric(V) && isvector(V) ) err = "V must be a vector"; return; endif if ( any(V<0) ) err = "V must contain nonnegative values"; return; endif Vout = V(:)'; endif if ( nargin < 4 ) mout = ones(size(Sout)); else if ! ( isnumeric(V) && isvector(m) ) err = "m must be a vector"; return; endif mout = m(:)'; endif [er Sout Vout mout] = common_size(Sout, Vout, mout); if (er != 0 ) err = "S, V and m are of incompatible size"; return; endif if ( nargin < 5 ) Zout = 0; else if ! ( isscalar(Z) && Z >= 0 ) err = "Z must be a nonnegative scalar"; return; endif Zout = Z; endif endfunction queueing/inst/private/qnomchkparam.m0000644000175000017500000000474113570046274017564 0ustar morenomoreno## Copyright (C) 2012, 2013, 2014 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {[@var{err} @var{lambda} @var{S} @var{V} @var{m} @var{Z}] = } qnomchkparam( lambda, S, ... ) ## ## Validate input parameters for open, multiclass network. ## @var{err} is the empty string on success, or a suitable error message ## string on failure. ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function [err lambda S V m] = qnomchkparam( varargin ) err = ""; assert( nargin >= 2 ); lambda = varargin{1}; S = varargin{2}; [V m] = deal(0); if ! ( isnumeric(lambda) && isvector(lambda) && length(lambda)>0 ) err = "lambda must be a nonempty vector"; return; endif if ( any(lambda<0) ) err = "lambda must contain nonnegative values"; return; endif lambda = lambda(:)'; C = length(lambda); ## Number of classes if ! ( isnumeric(S) && ismatrix(S) && ndims(S) == 2 && rows(S) == C ) err = sprintf("S must be a 2-dimensional matrix with %d rows",C); return; endif if ( any(S(:)<0) ) err = "S must contain nonnegative values"; return; endif K = columns(S); if ( nargin < 3 ) V = ones(size(S)); else V = varargin{3}; if ! ( isnumeric(V) && ismatrix(V) & ndims(V) == 2 & rows(V) == C & columns(V) == K ) err = sprintf("V must be a %d x %d matrix", C, K ); return; endif if ( any(V(:)<0) ) err = "V must contain nonnegative values"; return; endif endif if ( nargin < 4 ) m = ones(1,K); else m = varargin{4}; if ! ( isnumeric(m) && isvector(m) && length(m) == K ) err = sprintf("m must be a vector with %d elements", K ); return; endif m = m(:)'; endif endfunction queueing/inst/qncmmvaap.m0000644000175000017500000000414513570046274015412 0ustar morenomoreno## Copyright (C) 2008, 2009, 2010, 2011, 2012, 2016, 2018, 2019 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncmmvaap (@var{N}, @var{S}, @var{V}) ## @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncmmvaap (@var{N}, @var{S}, @var{V}, @var{m}) ## @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncmmvaap (@var{N}, @var{S}, @var{V}, @var{m}, @var{Z}) ## @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncmmvaap (@var{N}, @var{S}, @var{V}, @var{m}, @var{Z}, @var{tol}) ## @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncmmvaap (@var{N}, @var{S}, @var{V}, @var{m}, @var{Z}, @var{tol}, @var{iter_max}) ## ## @cindex Mean Value Analysys (MVA), approximate ## @cindex MVA, approximate ## @cindex closed network, multiple classes ## @cindex multiclass network, closed ## ## This function is deprecated. Plase use @code{qncmmvabs} instead. ## ## @seealso{qncmmvabs} ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function [U R Q X] = qncmmvaap( N, S, V, m, Z, tol, iter_max ) persistent warned = false; if (!warned) warned = true; warning("qn:deprecated-function", "qncmmvaap is deprecated. Please use qncmmvabs instead"); endif [U R Q X] = qncmmvabs( varargin{:} ); endfunction queueing/inst/qnosvisits.m0000644000175000017500000000563713570046274015660 0ustar morenomoreno## Copyright (C) 2012, 2016 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {@var{V} =} qnosvisits (@var{P}, @var{lambda}) ## ## Compute the average number of visits to the service centers of a single ## class open Queueing Network with @math{K} service centers. ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{P}(i,j) ## is the probability that a request which completed service at center ## @math{i} is routed to center @math{j} (@math{K \times K} matrix). ## ## @item @var{lambda}(k) ## external arrival rate to center @math{k}. ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{V}(k) ## average number of visits to server @math{k}. ## ## @end table ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function V = qnosvisits( P, lambda ) if ( nargin != 2 ) print_usage(); endif issquare(P) || ... error("P must be a square matrix"); K = rows(P); all(P(:)>=0) && all( sum(P,2)<=1+1e-5 ) || ... error( "invalid transition probability matrix P" ); ( isvector(lambda) && length(lambda) == K ) || ... error( "lambda must be a vector with %d elements", K ); all( lambda>= 0 ) || ... error( "lambda contains negative values" ); lambda = lambda(:)'; V = zeros(size(P)); A = eye(K)-P; b = lambda / sum(lambda); V = b/A; ## Make sure that no negative values appear (sometimes, numerical ## errors produce tiny negative values instead of zeros) V = max(0,V); endfunction %!test %! fail( "qnosvisits([0 .5; .5 0],[0 -1])", "contains negative" ); %! fail( "qnosvisits([1 1 1; 1 1 1], [1 1])", "square" ); %!test %! %! ## Open, single class network %! %! P = [0 0.2 0.5; 1 0 0; 1 0 0]; %! lambda = [ 0.1 0.3 0.2 ]; %! V = qnosvisits(P,lambda); %! assert( V*P+lambda/sum(lambda),V,1e-5 ); %!demo %! p = 0.3; %! lambda = 1.2 %! P = [0 0.3 0.5; ... %! 1 0 0 ; ... %! 1 0 0 ]; %! V = qnosvisits(P,[1.2 0 0]) %!demo %! P = [ 0 0.4 0.6 0; ... %! 0.2 0 0.2 0.6; ... %! 0 0 0 1; ... %! 0 0 0 0 ]; %! lambda = [0.1 0 0 0.3]; %! V = qnosvisits(P,lambda); %! S = [2 1 2 1.8]; %! m = [3 1 1 2]; %! [U R Q X] = qnos( sum(lambda), S, V, m ) queueing/inst/dtmcfpt.m0000644000175000017500000001021713570046274015065 0ustar morenomoreno## Copyright (C) 2011, 2012, 2016, 2018 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {@var{M} =} dtmcfpt (@var{P}) ## ## @cindex first passage times ## @cindex mean recurrence times ## @cindex discrete time Markov chain ## @cindex Markov chain, discrete time ## @cindex DTMC ## ## Compute mean first passage times and mean recurrence times ## for an irreducible discrete-time Markov chain over the state space ## @math{@{1, @dots{}, N@}}. ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{P}(i,j) ## transition probability from state @math{i} to state @math{j}. ## @var{P} must be an irreducible stochastic matrix, which means that ## the sum of each row must be 1 (@math{\sum_{j=1}^N P_{i j} = 1}), ## and the rank of @var{P} must be @math{N}. ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{M}(i,j) ## For all @math{1 @leq{} i, j @leq{} N}, @math{i \neq j}, @code{@var{M}(i,j)} is ## the average number of transitions before state @var{j} is entered ## for the first time, starting from state @var{i}. ## @code{@var{M}(i,i)} is the @emph{mean recurrence time} of state ## @math{i}, and represents the average time needed to return to state ## @var{i}. ## ## @end table ## ## @strong{REFERENCES} ## ## @itemize ## @item Grinstead, Charles M.; Snell, J. Laurie (July ## 1997). @cite{Introduction to Probability}, Ch. 11: Markov ## Chains. American Mathematical Society. ISBN 978-0821807491. ## @end itemize ## ## @seealso{ctmcfpt} ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function result = dtmcfpt( P ) if ( nargin != 1 ) print_usage(); endif [N err] = dtmcchkP(P); ( N>0 ) || ... error(err); if ( any(diag(P) == 1) ) error("Cannot compute first passage times for absorbing chains"); endif w = dtmc(P); # steady state probability vector W = repmat(w,N,1); ## Z = (I - P + W)^-1 where W is the matrix where each row is the ## steady-state probability vector for P Z = inv(eye(N)-P+W); ## m_ij = (z_jj - z_ij) / w_j result = (repmat(diag(Z)',N,1) - Z) ./ repmat(w,N,1) + diag(1./w); endfunction %!test %! P = [1 1 1; 1 1 1]; %! fail( "dtmcfpt(P)" ); %!test %! P = dtmcbd([1 1 1], [0 0 0] ); %! fail( "dtmcfpt(P)", "absorbing" ); %!test %! P = [ 0.0 0.9 0.1; ... %! 0.1 0.0 0.9; ... %! 0.9 0.1 0.0 ]; %! p = dtmc(P); %! M = dtmcfpt(P); %! assert( diag(M)', 1./p, 1e-8 ); ## Example on p. 461 of [GrSn97] %!test %! P = [ 0 1 0 0 0; ... %! .25 .0 .75 0 0; ... %! 0 .5 0 .5 0; ... %! 0 0 .75 0 .25; ... %! 0 0 0 1 0 ]; %! M = dtmcfpt(P); %! assert( M, [16 1 2.6667 6.3333 21.3333; ... %! 15 4 1.6667 5.3333 20.3333; ... %! 18.6667 3.6667 2.6667 3.6667 18.6667; ... %! 20.3333 5.3333 1.6667 4 15; ... %! 21.3333 6.3333 2.6667 1 16 ], 1e-4 ); %!test %! sz = 10; %! P = reshape( 1:sz^2, sz, sz ); %! normP = repmat(sum(P,2),1,columns(P)); %! P = P./normP; %! M = dtmcfpt(P); %! for i=1:rows(P) %! for j=1:columns(P) %! assert( M(i,j), 1 + dot(P(i,:), M(:,j)) - P(i,j)*M(j,j), 1e-8); %! endfor %! endfor ## "Rat maze" problem (p. 453 of [GrSn97]); %!test %! P = zeros(9,9); %! P(1,[2 4]) = .5; %! P(2,[1 5 3]) = 1/3; %! P(3,[2 6]) = .5; %! P(4,[1 5 7]) = 1/3; %! P(5,[2 4 6 8]) = 1/4; %! P(6,[3 5 9]) = 1/3; %! P(7,[4 8]) = .5; %! P(8,[7 5 9]) = 1/3; %! P(9,[6 8]) = .5; %! M = dtmcfpt(P); %! assert( M(1:9 != 5,5)', [6 5 6 5 5 6 5 6], 100*eps ); queueing/inst/qncmaba.m0000644000175000017500000001423213632722374015030 0ustar morenomoreno## Copyright (C) 2012, 2016, 2018, 2020 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qncmaba (@var{N}, @var{D}) ## @deftypefnx {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qncmaba (@var{N}, @var{S}, @var{V}) ## @deftypefnx {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qncmaba (@var{N}, @var{S}, @var{V}, @var{m}) ## @deftypefnx {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qncmaba (@var{N}, @var{S}, @var{V}, @var{m}, @var{Z}) ## ## @cindex bounds, asymptotic ## @cindex asymptotic bounds ## @cindex closed network ## @cindex multiclass network, closed ## @cindex closed multiclass network ## ## Compute Asymptotic Bounds for closed, multiclass networks ## with @math{K} service centers and @math{C} customer classes. ## Single-server and infinite-server nodes are supported. ## Multiple-server nodes and general load-dependent servers are not ## supported. ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{N}(c) ## number of class @math{c} requests in the system ## (vector of length @math{C}, @code{@var{N}(c) @geq{} 0}). ## ## @item @var{D}(c, k) ## class @math{c} service demand ## at center @math{k} (@math{C \times K} matrix, @code{@var{D}(c,k) @geq{} 0}). ## ## @item @var{S}(c, k) ## mean service time of class @math{c} ## requests at center @math{k} (@math{C \times K} matrix, @code{@var{S}(c,k) @geq{} 0}). ## ## @item @var{V}(c,k) ## average number of visits of class @math{c} ## requests to center @math{k} (@math{C \times K} matrix, @code{@var{V}(c,k) @geq{} 0}). ## ## @item @var{m}(k) ## number of servers at center @math{k} ## (if @var{m} is a scalar, all centers have that number of servers). If ## @code{@var{m}(k) < 1}, center @math{k} is a delay center (IS); ## if @code{@var{m}(k) = 1}, center @math{k} is a M/M/1-FCFS server. ## This function does not support multiple-server nodes. Default ## is 1. ## ## @item @var{Z}(c) ## class @math{c} external delay ## (vector of length @math{C}, @code{@var{Z}(c) @geq{} 0}). Default is 0. ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{Xl}(c) ## @itemx @var{Xu}(c) ## Lower and upper bounds for class @math{c} throughput. ## ## @item @var{Rl}(c) ## @itemx @var{Ru}(c) ## Lower and upper bounds for class @math{c} response time. ## ## @end table ## ## @strong{REFERENCES} ## ## @itemize ## @item ## Edward D. Lazowska, John Zahorjan, G. Scott Graham, and Kenneth ## C. Sevcik, @cite{Quantitative System Performance: Computer System ## Analysis Using Queueing Network Models}, Prentice Hall, ## 1984. @url{http://www.cs.washington.edu/homes/lazowska/qsp/}. In ## particular, see section 5.2 ("Asymptotic Bounds"). ## @end itemize ## ## @seealso{qncsaba} ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function [Xl Xu Rl Ru] = qncmaba( varargin ) if ( nargin<2 || nargin>5 ) print_usage(); endif [err N S V m Z] = qncmchkparam( varargin{:} ); isempty(err) || error(err); all(m<=1) || ... error("Multiple-server nodes are not supported"); if ( sum(N) == 0 ) # handle trivial case of empty network Xl = Xu = Rl = Ru = zeros(size(S)); else D = S .* V; Dc_single = sum(D(:,(m==1)),2)'; # class c demand on single-server nodes Dc_delay = sum(D(:,(m<1)),2)'; # class c demand on delay centers Dc = sum(D,2)'; # class c total demand Dcmax = max(D,[],2)'; # maximum class c demand at any server Xl = N ./ ( dot(N,Dc_single) .+ Dc_delay .+ Z); Xu = min( 1./Dcmax, N ./ (Dc .+ Z) ); Rl = N ./ Xu .- Z; Ru = N ./ Xl .- Z; endif endfunction %!test %! fail("qncmaba([],[])", "nonempty"); %! fail("qncmaba([1 0], [1 2 3])", "2 rows"); %! fail("qncmaba([1 0], [1 2 3; 4 5 -1])", "nonnegative"); %! fail("qncmaba([1 2], [1 2 3; 4 5 6], [1 2 3])", "2 x 3"); %! fail("qncmaba([1 2], [1 2 3; 4 5 6], [1 2 3; 4 5 -1])", "nonnegative"); %! fail("qncmaba([1 2], [1 2 3; 1 2 3], [1 2 3; 1 2 3], [1 1])", "3 elements"); %! fail("qncmaba([1 2], [1 2 3; 1 2 3], [1 2 3; 1 2 3], [1 1 2])", "not supported"); %! fail("qncmaba([1 2], [1 2 3; 1 2 3], [1 2 3; 1 2 3], [1 1 -1],[1 2 3])", "2 elements"); %! fail("qncmaba([1 2], [1 2 3; 1 2 3], [1 2 3; 1 2 3], [1 1 -1],[1 -2])", "nonnegative"); %!test %! [Xl Xu Rl Ru] = qncmaba([0 0], [1 2 3; 1 2 3]); %! assert( all(Xl(:) == 0) ); %! assert( all(Xu(:) == 0) ); %! assert( all(Rl(:) == 0) ); %! assert( all(Ru(:) == 0) ); %!demo %! S = [10 7 5 4; ... %! 5 2 4 6]; %! NN=20; %! Xl = Xu = Rl = Ru = Xmva = Rmva = zeros(NN,2); %! for n=1:NN %! N=[n,10]; %! [a b c d] = qncmaba(N,S); %! Xl(n,:) = a; Xu(n,:) = b; Rl(n,:) = c; Ru(n,:) = d; %! [U R Q X] = qncmmva(N,S,ones(size(S))); %! Xmva(n,:) = X(:,1)'; Rmva(n,:) = sum(R,2)'; %! endfor %! subplot(2,2,1); %! plot(1:NN,Xl(:,1), 1:NN,Xu(:,1), 1:NN,Xmva(:,1), ";MVA;", "linewidth", 2); %! ylim([0, 0.2]); %! title("Class 1 throughput"); legend("boxoff"); %! subplot(2,2,2); %! plot(1:NN,Xl(:,2), 1:NN,Xu(:,2), 1:NN,Xmva(:,2), ";MVA;", "linewidth", 2); %! ylim([0, 0.2]); %! title("Class 2 throughput"); legend("boxoff"); %! subplot(2,2,3); %! plot(1:NN,Rl(:,1), 1:NN,Ru(:,1), 1:NN,Rmva(:,1), ";MVA;", "linewidth", 2); %! ylim([0, 700]); %! title("Class 1 response time"); legend("location", "northwest"); legend("boxoff"); %! subplot(2,2,4); %! plot(1:NN,Rl(:,2), 1:NN,Ru(:,2), 1:NN,Rmva(:,2), ";MVA;", "linewidth", 2); %! ylim([0, 700]); %! title("Class 2 response time"); legend("location", "northwest"); legend("boxoff"); queueing/inst/qsmminf.m0000644000175000017500000001143613601746530015077 0ustar morenomoreno## Copyright (C) 2008, 2009, 2010, 2011, 2012, 2018, 2019 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see . ## -*- texinfo -*- ## ## @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}, @var{p0}] =} qsmminf (@var{lambda}, @var{mu}) ## @deftypefnx {Function File} {@var{pk} =} qsmminf (@var{lambda}, @var{mu}, @var{k}) ## ## Compute utilization, response time, average number of requests and throughput for an infinite-server queue. ## ## The @math{M/M/\infty} system has an infinite number of identical ## servers. Such a system is always stable (i.e., the mean queue ## length is always finite) for any arrival and service rates. ## ## @cindex @math{M/M/}inf system ## ## @tex ## The steady-state probability @math{\pi_k} that there are @math{k} ## requests in the system, @math{k @geq{} 0}, can be computed as: ## ## $$ ## \pi_k = {1 \over k!} \left( \lambda \over \mu \right)^k e^{-\lambda / \mu} ## $$ ## @end tex ## ## @strong{INPUTS} ## ## @table @code ## ## @item @var{lambda} ## Arrival rate (@code{@var{lambda}>0}). ## ## @item @var{mu} ## Service rate (@code{@var{mu}>0}). ## ## @item @var{k} ## Number of requests in the system (@code{@var{k} @geq{} 0}). ## ## @end table ## ## @strong{OUTPUTS} ## ## @table @code ## ## @item @var{U} ## Traffic intensity (defined as @math{\lambda/\mu}). Note that this is ## different from the utilization, which in the case of @math{M/M/\infty} ## centers is always zero. ## ## @cindex traffic intensity ## ## @item @var{R} ## Service center response time. ## ## @item @var{Q} ## Average number of requests in the system (which is equal to the ## traffic intensity @math{\lambda/\mu}). ## ## @item @var{X} ## Throughput (which is always equal to @code{@var{X} = @var{lambda}}). ## ## @item @var{p0} ## Steady-state probability that there are no requests in the system ## ## @item @var{pk} ## Steady-state probability that there are @var{k} requests in the ## system (including the one being served). ## ## @end table ## ## If this function is called with less than three arguments, ## @var{lambda} and @var{mu} can be vectors of the same size. In this ## case, the results will be vectors as well. ## ## @strong{REFERENCES} ## ## @itemize ## @item ## G. Bolch, S. Greiner, H. de Meer and K. Trivedi, @cite{Queueing Networks ## and Markov Chains: Modeling and Performance Evaluation with Computer ## Science Applications}, Wiley, 1998, Section 6.4 ## @end itemize ## ## @seealso{qsmm1,qsmmm,qsmmmk} ## ## @end deftypefn ## Author: Moreno Marzolla ## Web: http://www.moreno.marzolla.name/ function [U_or_pk R Q X p0] = qsmminf( lambda, mu, k ) if ( nargin < 2 || nargin > 3 ) print_usage(); endif ( isvector(lambda) && isvector(mu) ) || ... error( "lambda and mu must be vectors" ); [ err lambda mu ] = common_size( lambda, mu ); if ( err ) error( "Parameters are of incompatible size" ); endif lambda = lambda(:)'; mu = mu(:)'; ( all( lambda>0 ) && all( mu>0 ) ) || ... error( "lambda and mu must be >0" ); if (nargin < 3) U_or_pk = Q = lambda ./ mu; # Traffic intensity. p0 = exp(-lambda./mu); # probability that there are 0 requests in the system R = 1 ./ mu; X = lambda; else (length(lambda) == 1) || error("lambda must be a scalar if this function is called with three arguments"); isvector(k) || error("k must be a vector"); all(k>=0 )|| error("k must be >= 0"); ## expn does not support array arguments, hence we must use arrayfun() U_or_pk = arrayfun(@(x) expn(lambda/mu, x) * exp(-lambda/mu), k); endif endfunction %!test %! fail( "qsmminf( [1 2], [1 2 3] )", "incompatible size"); %! fail( "qsmminf( [-1 -1], [1 1] )", ">0" ); %!demo %! ## Given a M/M/inf and M/M/m queue, compute the steady-state probability pk %! ## of having k requests in the systen. %! lambda = 5; %! mu = 1.1; %! m = 5; %! k = 0:20; %! pk_inf = qsmminf(lambda, mu, k); %! pk_m = qsmmm(lambda, mu, 5, k); %! plot(k, pk_inf, "-o;M/M/\\infty;", "linewidth", 2, ... %! k, pk_m, "-x;M/M/5;", "linewidth", 2); %! xlabel("N. of requests (k)"); %! ylabel("P_k"); %! title(sprintf("M/M/\\infty and M/M/%d systems, \\lambda = %g, \\mu = %g", m, lambda, mu)); queueing/CITATION0000644000175000017500000000234113570046274013425 0ustar morenomorenoTo cite the Octave queueing package use: Moreno Marzolla, The qnetworks Toolbox: A Software Package for Queueing Networks Analysis. Khalid Al-Begain, Dieter Fiems and William J. Knottenbelt, Editors, Proceedings 17th International Conference on Analytical and Stochastic Modeling Techniques and Applications (ASMTA 2010) Cardiff, UK, June 14--16, 2010, volume 6148 of Lecture Notes in Computer Science, Springer, pp. 102--116, ISBN 978-3-642-13567-5, DOI 10.1007/978-3-642-13568-2_8 A BibTeX entry for LaTeX users is: @inproceedings{queueing, author = {Moreno Marzolla}, title = {The qnetworks Toolbox: A Software Package for Queueing Networks Analysis}, booktitle = {Analytical and Stochastic Modeling Techniques and Applications, 17th International Conference, ASMTA 2010, Cardiff, UK, June 14--16, 2010. Proceedings}, editor = {Khalid Al-Begain and Dieter Fiems and William J. Knottenbelt}, year = {2010}, publisher = {Springer}, series = {Lecture Notes in Computer Science}, volume = {6148}, pages = {102--116}, ee = {http://dx.doi.org/10.1007/978-3-642-13568-2_8}, doi = {10.1007/978-3-642-13568-2_8}, isbn = {978-3-642-13567-5} } queueing/doc/0000755000175000017500000000000013635377242013041 5ustar morenomorenoqueueing/doc/conf.texi0000644000175000017500000000005713635377222014661 0ustar morenomoreno@set VERSION 1.2.7 @set VERSIONDATE 2020-03-21 queueing/doc/qn_closed_single.fig0000644000175000017500000000300513570046274017032 0ustar morenomoreno#FIG 3.2 Produced by xfig version 3.2.5b Landscape Center Metric A4 100.00 Single -2 1200 2 1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 6930 5580 270 270 6930 5580 6930 5310 1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 6930 4500 270 270 6930 4500 6930 4230 1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 5317 5043 270 270 5317 5043 5317 4773 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 4 0 0 1.00 60.00 120.00 5580 5040 5850 5040 6030 4500 6300 4500 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 3 0 0 1.00 60.00 120.00 5850 5040 6030 5580 6300 5580 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 5 0 0 1.00 60.00 120.00 7470 5580 7470 3960 4770 3960 4770 5040 5040 5040 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 0 0 1.00 60.00 120.00 7200 5580 7470 5580 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 4 6300 5310 6660 5310 6660 5850 6300 5850 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 4 6300 4230 6660 4230 6660 4770 6300 4770 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 0 0 1.00 60.00 120.00 7200 4500 7470 4500 4 0 0 50 -1 0 12 0.0000 4 135 255 5895 5760 0.7\001 4 0 0 50 -1 0 12 0.0000 4 135 255 5895 4455 0.3\001 4 0 0 50 -1 0 12 0.0000 4 135 210 5175 5490 PS\001 4 0 0 50 -1 0 12 0.0000 4 135 450 6705 4950 FCFS\001 4 0 0 50 -1 0 12 0.0000 4 135 450 6705 6030 FCFS\001 4 0 0 50 -1 0 12 0.0000 4 135 375 5130 4725 CPU\001 4 0 0 50 -1 0 12 0.0000 4 135 480 6705 4185 Disk1\001 4 0 0 50 -1 0 12 0.0000 4 135 480 6705 5265 Disk2\001 4 0 0 50 -1 0 12 0.0000 4 135 105 5265 5085 1\001 4 0 0 50 -1 0 12 0.0000 4 135 105 6885 4545 2\001 4 0 0 50 -1 0 12 0.0000 4 135 105 6885 5625 3\001 queueing/doc/singlestation.texi0000644000175000017500000006177213635377223016633 0ustar morenomoreno@c This file has been automatically generated from singlestation.txi @c by proc.m. Do not edit this file, all changes will be lost @c -*- texinfo -*- @c Copyright (C) 2008, 2009, 2010, 2011, 2012, 2014, 2016, 2018 Moreno Marzolla @c @c This file is part of the queueing package. @c @c The queueing package is free software; you can redistribute it @c and/or modify it under the terms of the GNU General Public License @c as published by the Free Software Foundation; either version 3 of @c the License, or (at your option) any later version. @c @c The queueing package is distributed in the hope that it will be @c useful, but WITHOUT ANY WARRANTY; without even the implied warranty @c of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the @c GNU General Public License for more details. @c @c You should have received a copy of the GNU General Public License @c along with the queueing package; see the file COPYING. If not, see @c . @node Single Station Queueing Systems @chapter Single Station Queueing Systems Single Station Queueing Systems contain a single station, and can usually be analyzed easily. The @code{queueing} package contains functions for handling the following types of queues: @ifnottex @menu * The M/M/1 System:: Single-server queueing station. * The M/M/m System:: Multiple-server queueing station. * The Erlang-B Formula:: * The Erlang-C Formula:: * The Engset Formula:: * The M/M/inf System:: Infinite-server (delay center) station. * The M/M/1/K System:: Single-server, finite-capacity queueing station. * The M/M/m/K System:: Multiple-server, finite-capacity queueing station. * The Asymmetric M/M/m System:: Asymmetric multiple-server queueing station. * The M/G/1 System:: Single-server with general service time distribution. * The M/Hm/1 System:: Single-server with hyperexponential service time distribution. @end menu @end ifnottex @iftex @itemize @item @math{M/M/1} single-server queueing station; @item @math{M/M/m} multiple-server queueing station; @item Asymmetric @math{M/M/m}; @item @math{M/M/\infty} infinite-server station (delay center); @item @math{M/M/1/K} single-server, finite-capacity queueing station; @item @math{M/M/m/K} multiple-server, finite-capacity queueing station; @item @math{M/G/1} single-server with general service time distribution; @item @math{M/H_m/1} single-server with hyperexponential service time distribution. @end itemize @end iftex @c @c M/M/1 @c @node The M/M/1 System @section The @math{M/M/1} System The @math{M/M/1} system contains a single server connected to an unbounded FCFS queue. Requests arrive according to a Poisson process with rate @math{\lambda}; the service time is exponentially distributed with average service rate @math{\mu}. The system is stable if @math{\lambda < \mu}. @anchor{doc-qsmm1} @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}, @var{p0}] =} qsmm1 (@var{lambda}, @var{mu}) @deftypefnx {Function File} {@var{pk} =} qsmm1 (@var{lambda}, @var{mu}, @var{k}) @cindex @math{M/M/1} system Compute utilization, response time, average number of requests and throughput for a @math{M/M/1} queue. @tex The steady-state probability @math{\pi_k} that there are @math{k} jobs in the system, @math{k \geq 0}, can be computed as: $$ \pi_k = (1-\rho)\rho^k $$ where @math{\rho = \lambda/\mu} is the server utilization. @end tex @strong{INPUTS} @table @code @item @var{lambda} Arrival rate (@code{@var{lambda} @geq{} 0}). @item @var{mu} Service rate (@code{@var{mu} > @var{lambda}}). @item @var{k} Number of requests in the system (@code{@var{k} @geq{} 0}). @end table @strong{OUTPUTS} @table @code @item @var{U} Server utilization @item @var{R} Server response time @item @var{Q} Average number of requests in the system @item @var{X} Server throughput. If the system is ergodic (@code{@var{mu} > @var{lambda}}), we always have @code{@var{X} = @var{lambda}} @item @var{p0} Steady-state probability that there are no requests in the system. @item @var{pk} Steady-state probability that there are @var{k} requests in the system. (including the one being served). @end table If this function is called with less than three input parameters, @var{lambda} and @var{mu} can be vectors of the same size. In this case, the results will be vectors as well. @strong{REFERENCES} @itemize @item G. Bolch, S. Greiner, H. de Meer and K. Trivedi, @cite{Queueing Networks and Markov Chains: Modeling and Performance Evaluation with Computer Science Applications}, Wiley, 1998, Section 6.3 @end itemize @seealso{qsmmm, qsmminf, qsmmmk} @end deftypefn @c @c M/M/m @c @node The M/M/m System @section The @math{M/M/m} System The @math{M/M/m} system is similar to the @math{M/M/1} system, except that there are @math{m \geq 1} identical servers connected to a shared FCFS queue. Thus, at most @math{m} requests can be served at the same time. The @math{M/M/m} system can be seen as a single server with load-dependent service rate @math{\mu(n)}, which is a function of the number @math{n} of requests in the system: @iftex @tex $$\mu(n) = \mu \times \min(m,n)$$ @end tex @end iftex @ifnottex @example mu(n) = min(m,n)*mu @end example @end ifnottex @noindent where @math{\mu} is the service rate of each individual server. @anchor{doc-qsmmm} @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}, @var{p0}, @var{pm}] =} qsmmm (@var{lambda}, @var{mu}) @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}, @var{p0}, @var{pm}] =} qsmmm (@var{lambda}, @var{mu}, @var{m}) @deftypefnx {Function File} {@var{pk} =} qsmmm (@var{lambda}, @var{mu}, @var{m}, @var{k}) @cindex @math{M/M/m} system Compute utilization, response time, average number of requests in service and throughput for a @math{M/M/m} queue, a queueing system with @math{m} identical servers connected to a single FCFS queue. @tex The steady-state probability @math{\pi_k} that there are @math{k} requests in the system, @math{k \geq 0}, can be computed as: $$ \pi_k = \cases{ \displaystyle{\pi_0 { ( m\rho )^k \over k!}} & $0 \leq k \leq m$;\cr\cr \displaystyle{\pi_0 { \rho^k m^m \over m!}} & $k>m$.\cr } $$ where @math{\rho = \lambda/(m\mu)} is the individual server utilization. The steady-state probability @math{\pi_0} that there are no jobs in the system is: $$ \pi_0 = \left[ \sum_{k=0}^{m-1} { (m\rho)^k \over k! } + { (m\rho)^m \over m!} {1 \over 1-\rho} \right]^{-1} $$ @end tex @strong{INPUTS} @table @code @item @var{lambda} Arrival rate (@code{@var{lambda}>0}). @item @var{mu} Service rate (@code{@var{mu}>@var{lambda}}). @item @var{m} Number of servers (@code{@var{m} @geq{} 1}). Default is @code{@var{m}=1}. @item @var{k} Number of requests in the system (@code{@var{k} @geq{} 0}). @end table @strong{OUTPUTS} @table @code @item @var{U} Service center utilization, @math{U = \lambda / (m \mu)}. @item @var{R} Service center mean response time @item @var{Q} Average number of requests in the system @item @var{X} Service center throughput. If the system is ergodic, we will always have @code{@var{X} = @var{lambda}} @item @var{p0} Steady-state probability that there are 0 requests in the system @item @var{pm} Steady-state probability that an arriving request has to wait in the queue @item @var{pk} Steady-state probability that there are @var{k} requests in the system (including the one being served). @end table If this function is called with less than four parameters, @var{lambda}, @var{mu} and @var{m} can be vectors of the same size. In this case, the results will be vectors as well. @strong{REFERENCES} @itemize @item G. Bolch, S. Greiner, H. de Meer and K. Trivedi, @cite{Queueing Networks and Markov Chains: Modeling and Performance Evaluation with Computer Science Applications}, Wiley, 1998, Section 6.5 @end itemize @seealso{erlangc,qsmm1,qsmminf,qsmmmk} @end deftypefn @c @c Erlang-B @c @node The Erlang-B Formula @section The Erlang-B Formula @anchor{doc-erlangb} @deftypefn {Function File} {@var{B} =} erlangb (@var{A}, @var{m}) @cindex Erlang-B formula Compute the steady-state blocking probability in the Erlang loss model. The Erlang-B formula @math{E_B(A, m)} gives the probability that an open system with @math{m} identical servers, arrival rate @math{\lambda}, individual service rate @math{\mu} and offered load @math{A = \lambda / \mu} has all servers busy. This corresponds to the rejection probability of an @math{M/M/m/0} system with @math{m} servers and no queue. @tex @math{E_B(A, m)} is defined as: $$ E_B(A, m) = \displaystyle{{A^m \over m!} \left( \sum_{k=0}^m {A^k \over k!} \right) ^{-1}} $$ @end tex @strong{INPUTS} @table @code @item @var{A} Offered load, defined as @math{A = \lambda / \mu} where @math{\lambda} is the mean arrival rate and @math{\mu} the mean service rate of each individual server (real, @math{A > 0}). @item @var{m} Number of identical servers (integer, @math{m @geq{} 1}). Default @math{m = 1} @end table @strong{OUTPUTS} @table @code @item @var{B} The value @math{E_B(A, m)} @end table @var{A} or @var{m} can be vectors, and in this case, the results will be vectors as well. @strong{REFERENCES} @itemize @item G. Zeng, @cite{Two common properties of the Erlang-B function, Erlang-C function, and Engset blocking function}, Mathematical and Computer Modelling, Volume 37, Issues 12-13, June 2003, Pages 1287-1296 @end itemize @seealso{erlangc,engset,qsmmm} @end deftypefn @c @c Erlang-c @c @node The Erlang-C Formula @section The Erlang-C Formula @anchor{doc-erlangc} @deftypefn {Function File} {@var{C} =} erlangc (@var{A}, @var{m}) @cindex Erlang-C formula Compute the steady-state probability of delay in the Erlang delay model. The Erlang-C formula @math{E_C(A, m)} gives the probability that an open queueing system with @math{m} identical servers, infinite wating space, arrival rate @math{\lambda}, individual service rate @math{\mu} and offered load @math{A = \lambda / \mu} has all the servers busy. This is the waiting probability in an @math{M/M/m/\infty} system with @math{m} servers and an infinite queue. @tex @math{E_C(A, m)} is defined as: $$ E_C(A, m) = \displaystyle{ {A^m \over m!} {1 \over 1-\rho} \left( \sum_{k=0}^{m-1} {A^k \over k!} + {A^m \over m!} {1 \over 1 - \rho} \right) ^{-1}} $$ where @math{\rho = A / m = \lambda / (m \mu)}. @end tex @strong{INPUTS} @table @code @item @var{A} Offered load. @math{A = \lambda / \mu} where @math{\lambda} is the mean arrival rate and @math{\mu} the mean service rate of each individual server (real, @math{0 < A < m}). @item @var{m} Number of identical servers (integer, @math{m @geq{} 1}). Default @math{m = 1} @end table @strong{OUTPUTS} @table @code @item @var{B} The value @math{E_C(A, m)} @end table @var{A} or @var{m} can be vectors, and in this case, the results will be vectors as well. @strong{REFERENCES} @itemize @item G. Zeng, @cite{Two common properties of the Erlang-B function, Erlang-C function, and Engset blocking function}, Mathematical and Computer Modelling, Volume 37, Issues 12-13, June 2003, Pages 1287-1296 @end itemize @seealso{erlangb,engset,qsmmm} @end deftypefn @c @c Engset @c @node The Engset Formula @section The Engset Formula @anchor{doc-engset} @deftypefn {Function File} {@var{B} =} engset (@var{A}, @var{m}, @var{n}) @cindex Engset loss formula Evaluate the Engset loss formula. The Engset formula computes the blocking probability @math{P_b(A,m,n)} for a system with a finite population of @math{n} users, @math{m} identical servers, no queue, individual service rate @math{\mu}, individual arrival rate @math{\lambda} (i.e., the time until a user tries to request service is exponentially distributed with mean @math{1/\lambda}), and offered load @math{A=\lambda/\mu}. @tex @math{P_b(A, m, n)} is defined for @math{n > m} as: $$ P_b(A, m, n) = {{\displaystyle{A^m {n \choose m}}} \over {\displaystyle{\sum_{k=0}^m A^k {n \choose k}}}} $$ and is 0 if @math{n @leq{} m}. @end tex @strong{INPUTS} @table @code @item @var{A} Offered load, defined as @math{A = \lambda / \mu} where @math{\lambda} is the mean arrival rate and @math{\mu} the mean service rate of each individual server (real, @math{A > 0}). @item @var{m} Number of identical servers (integer, @math{m @geq{} 1}). Default @math{m = 1} @item @var{n} Number of requests (integer, @math{n @geq{} 1}). Default @math{n = 1} @end table @strong{OUTPUTS} @table @code @item @var{B} The value @math{P_b(A, m, n)} @end table @var{A}, @var{m} or @math{n} can be vectors, and in this case, the results will be vectors as well. @strong{REFERENCES} @itemize @item G. Zeng, @cite{Two common properties of the Erlang-B function, Erlang-C function, and Engset blocking function}, Mathematical and Computer Modelling, Volume 37, Issues 12-13, June 2003, Pages 1287-1296 @end itemize @seealso{erlangb, erlangc} @end deftypefn @c @c M/M/inf @c @node The M/M/inf System @section The @math{M/M/}inf System The @math{M/M/\infty} system is a special case of @math{M/M/m} system with infinitely many identical servers (i.e., @math{m = \infty}). Each new request is always assigned to a new server, so that queueing never occurs. The @math{M/M/\infty} system is always stable. @anchor{doc-qsmminf} @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}, @var{p0}] =} qsmminf (@var{lambda}, @var{mu}) @deftypefnx {Function File} {@var{pk} =} qsmminf (@var{lambda}, @var{mu}, @var{k}) Compute utilization, response time, average number of requests and throughput for an infinite-server queue. The @math{M/M/\infty} system has an infinite number of identical servers. Such a system is always stable (i.e., the mean queue length is always finite) for any arrival and service rates. @cindex @math{M/M/}inf system @tex The steady-state probability @math{\pi_k} that there are @math{k} requests in the system, @math{k @geq{} 0}, can be computed as: $$ \pi_k = {1 \over k!} \left( \lambda \over \mu \right)^k e^{-\lambda / \mu} $$ @end tex @strong{INPUTS} @table @code @item @var{lambda} Arrival rate (@code{@var{lambda}>0}). @item @var{mu} Service rate (@code{@var{mu}>0}). @item @var{k} Number of requests in the system (@code{@var{k} @geq{} 0}). @end table @strong{OUTPUTS} @table @code @item @var{U} Traffic intensity (defined as @math{\lambda/\mu}). Note that this is different from the utilization, which in the case of @math{M/M/\infty} centers is always zero. @cindex traffic intensity @item @var{R} Service center response time. @item @var{Q} Average number of requests in the system (which is equal to the traffic intensity @math{\lambda/\mu}). @item @var{X} Throughput (which is always equal to @code{@var{X} = @var{lambda}}). @item @var{p0} Steady-state probability that there are no requests in the system @item @var{pk} Steady-state probability that there are @var{k} requests in the system (including the one being served). @end table If this function is called with less than three arguments, @var{lambda} and @var{mu} can be vectors of the same size. In this case, the results will be vectors as well. @strong{REFERENCES} @itemize @item G. Bolch, S. Greiner, H. de Meer and K. Trivedi, @cite{Queueing Networks and Markov Chains: Modeling and Performance Evaluation with Computer Science Applications}, Wiley, 1998, Section 6.4 @end itemize @seealso{qsmm1,qsmmm,qsmmmk} @end deftypefn @c @c M/M/1/k @c @node The M/M/1/K System @section The @math{M/M/1/K} System In a @math{M/M/1/K} finite capacity system there is a single server, and there can be at most @math{K} jobs at any time (including the job currently in service), @math{K > 1}. If a new request tries to join the system when there are already @math{K} other requests, the request is lost. The queue has @math{K-1} slots. The @math{M/M/1/K} system is always stable, regardless of the arrival and service rates. @anchor{doc-qsmm1k} @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}, @var{p0}, @var{pK}] =} qsmm1k (@var{lambda}, @var{mu}, @var{K}) @deftypefnx {Function File} {@var{pn} =} qsmm1k (@var{lambda}, @var{mu}, @var{K}, @var{n}) @cindex @math{M/M/1/K} system Compute utilization, response time, average number of requests and throughput for a @math{M/M/1/K} finite capacity system. In a @math{M/M/1/K} queue there is a single server and a queue with finite capacity: the maximum number of requests in the system (including the request being served) is @math{K}, and the maximum queue length is therefore @math{K-1}. @tex The steady-state probability @math{\pi_n} that there are @math{n} jobs in the system, @math{0 @leq{} n @leq{} K}, is: $$ \pi_n = {(1-a)a^n \over 1-a^{K+1}} $$ where @math{a = \lambda/\mu}. @end tex @strong{INPUTS} @table @code @item @var{lambda} Arrival rate (@code{@var{lambda}>0}). @item @var{mu} Service rate (@code{@var{mu}>0}). @item @var{K} Maximum number of requests allowed in the system (@code{@var{K} @geq{} 1}). @item @var{n} Number of requests in the (@code{0 @leq{} @var{n} @leq{} K}). @end table @strong{OUTPUTS} @table @code @item @var{U} Service center utilization, which is defined as @code{@var{U} = 1-@var{p0}} @item @var{R} Service center response time @item @var{Q} Average number of requests in the system @item @var{X} Service center throughput @item @var{p0} Steady-state probability that there are no requests in the system @item @var{pK} Steady-state probability that there are @math{K} requests in the system (i.e., that the system is full) @item @var{pn} Steady-state probability that there are @math{n} requests in the system (including the one being served). @end table If this function is called with less than four arguments, @var{lambda}, @var{mu} and @var{K} can be vectors of the same size. In this case, the results will be vectors as well. @seealso{qsmm1,qsmminf,qsmmm} @end deftypefn @c @c M/M/m/k @c @node The M/M/m/K System @section The @math{M/M/m/K} System The @math{M/M/m/K} finite capacity system is similar to the @math{M/M/1/k} system except that the number of servers is @math{m}, where @math{1 \leq m \leq K}. The queue has @math{K-m} slots. The @math{M/M/m/K} system is always stable. @anchor{doc-qsmmmk} @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}, @var{p0}, @var{pK}] =} qsmmmk (@var{lambda}, @var{mu}, @var{m}, @var{K}) @deftypefnx {Function File} {@var{pn} =} qsmmmk (@var{lambda}, @var{mu}, @var{m}, @var{K}, @var{n}) @cindex @math{M/M/m/K} system Compute utilization, response time, average number of requests and throughput for a @math{M/M/m/K} finite capacity system. In a @math{M/M/m/K} system there are @math{m \geq 1} identical service centers sharing a fixed-capacity queue. At any time, at most @math{K @geq{} m} requests can be in the system, including those being served. The maximum queue length is @math{K-m}. This function generates and solves the underlying CTMC. @tex The steady-state probability @math{\pi_n} that there are @math{n} jobs in the system, @math{0 @leq{} n @leq{} K}, is: $$ \pi_n = \cases{ \displaystyle{{\rho^n \over n!} \pi_0} & if $0 \leq n \leq m$;\cr\cr \displaystyle{{\rho^m \over m!} \left( \rho \over m \right)^{n-m} \pi_0} & if $m < n \leq K$\cr} $$ where @math{\rho = \lambda/\mu} is the offered load. The probability @math{\pi_0} that the system is empty can be computed by considering that all probabilities must sum to one: @math{\sum_{k=0}^K \pi_k = 1}, that gives: $$ \pi_0 = \left[ \sum_{k=0}^m {\rho^k \over k!} + {\rho^m \over m!} \sum_{k=m+1}^K \left( {\rho \over m}\right)^{k-m} \right]^{-1} $$ @end tex @strong{INPUTS} @table @code @item @var{lambda} Arrival rate (@code{@var{lambda}>0}) @item @var{mu} Service rate (@code{@var{mu}>0}) @item @var{m} Number of servers (@code{@var{m} @geq{} 1}) @item @var{K} Maximum number of requests allowed in the system, including those being served (@code{@var{K} @geq{} @var{m}}) @item @var{n} Number of requests in the (@code{0 @leq{} @var{n} @leq{} K}). @end table @strong{OUTPUTS} @table @code @item @var{U} Service center utilization @item @var{R} Service center response time @item @var{Q} Average number of requests in the system @item @var{X} Service center throughput @item @var{p0} Steady-state probability that there are no requests in the system. @item @var{pK} Steady-state probability that there are @var{K} requests in the system (i.e., probability that the system is full). @item @var{pn} Steady-state probability that there are @var{n} requests in the system (including those being served). @end table If this function is called with less than five arguments, @var{lambda}, @var{mu}, @var{m} and @var{K} can be either scalars, or vectors of the same size. In this case, the results will be vectors as well. @strong{REFERENCES} @itemize @item G. Bolch, S. Greiner, H. de Meer and K. Trivedi, @cite{Queueing Networks and Markov Chains: Modeling and Performance Evaluation with Computer Science Applications}, Wiley, 1998, Section 6.6 @end itemize @seealso{qsmm1,qsmminf,qsmmm} @end deftypefn @c @c Asymmetric M/M/m @c @node The Asymmetric M/M/m System @section The Asymmetric @math{M/M/m} System The Asymmetric @math{M/M/m} system contains @math{m} servers connected to a single queue. Differently from the @math{M/M/m} system, in the asymmetric @math{M/M/m} each server may have a different service time. @anchor{doc-qsammm} @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qsammm (@var{lambda}, @var{mu}) @cindex asymmetric @math{M/M/m} system Compute @emph{approximate} utilization, response time, average number of requests in service and throughput for an asymmetric @math{M/M/m} queue. In this type of system there are @math{m} different servers connected to a single queue. Each server has its own (possibly different) service rate. If there is more than one server available, requests are routed to a randomly-chosen one. @strong{INPUTS} @table @code @item @var{lambda} Arrival rate (@code{@var{lambda}>0}) @item @var{mu} @code{@var{mu}(i)} is the service rate of server @math{i}, @math{1 @leq{} i @leq{} m}. The system must be ergodic (@code{@var{lambda} < sum(@var{mu})}). @end table @strong{OUTPUTS} @table @code @item @var{U} Approximate service center utilization, @math{U = \lambda / ( \sum_{i=1}^m \mu_i )}. @item @var{R} Approximate service center response time @item @var{Q} Approximate number of requests in the system @item @var{X} Approximate system throughput. If the system is ergodic, @code{@var{X} = @var{lambda}} @end table @strong{REFERENCES} @itemize @item G. Bolch, S. Greiner, H. de Meer and K. Trivedi, @cite{Queueing Networks and Markov Chains: Modeling and Performance Evaluation with Computer Science Applications}, Wiley, 1998 @end itemize @seealso{qsmmm} @end deftypefn @c @c @c @node The M/G/1 System @section The @math{M/G/1} System @anchor{doc-qsmg1} @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}, @var{p0}] =} qsmg1 (@var{lambda}, @var{xavg}, @var{x2nd}) @cindex @math{M/G/1} system Compute utilization, response time, average number of requests and throughput for a @math{M/G/1} system. The service time distribution is described by its mean @var{xavg}, and by its second moment @var{x2nd}. The computations are based on results from L. Kleinrock, @cite{Queuing Systems}, Wiley, Vol 2, and Pollaczek-Khinchine formula. @strong{INPUTS} @table @code @item @var{lambda} Arrival rate @item @var{xavg} Average service time @item @var{x2nd} Second moment of service time distribution @end table @strong{OUTPUTS} @table @code @item @var{U} Service center utilization @item @var{R} Service center response time @item @var{Q} Average number of requests in the system @item @var{X} Service center throughput @item @var{p0} Probability that there is not any request at system @end table @var{lambda}, @var{xavg}, @var{t2nd} can be vectors of the same size. In this case, the results will be vectors as well. @seealso{qsmh1} @end deftypefn @c @c @c @node The M/Hm/1 System @section The @math{M/H_m/1} System @anchor{doc-qsmh1} @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}, @var{p0}] =} qsmh1 (@var{lambda}, @var{mu}, @var{alpha}) @cindex @math{M/H_m/1} system Compute utilization, response time, average number of requests and throughput for a @math{M/H_m/1} system. In this system, the customer service times have hyper-exponential distribution: @tex $$ B(x) = \sum_{j=1}^m \alpha_j(1-e^{-\mu_j x}),\quad x>0 $$ @end tex @ifnottex @example @group ___ m \ B(x) = > alpha(j) * (1-exp(-mu(j)*x)) x>0 /__ j=1 @end group @end example @end ifnottex where @math{\alpha_j} is the probability that the request is served at phase @math{j}, in which case the average service rate is @math{\mu_j}. After completing service at phase @math{j}, for some @math{j}, the request exits the system. @strong{INPUTS} @table @code @item @var{lambda} Arrival rate @item @var{mu} @code{@var{mu}(j)} is the phase @math{j} service rate. The total number of phases @math{m} is @code{length(@var{mu})}. @item @var{alpha} @code{@var{alpha}(j)} is the probability that a request is served at phase @math{j}. @var{alpha} must have the same size as @var{mu}. @end table @strong{OUTPUTS} @table @code @item @var{U} Service center utilization @item @var{R} Service center response time @item @var{Q} Average number of requests in the system @item @var{X} Service center throughput @end table @end deftypefn queueing/doc/demo_web.m0000644000175000017500000000552713570046274015005 0ustar morenomoreno## Copyright (C) 2012, 2016 Moreno Marzolla ## ## This file is part of the queueing toolbox. ## ## The queueing toolbox is free software: you can redistribute it and/or ## modify it under the terms of the GNU General Public License as ## published by the Free Software Foundation, either version 3 of the ## License, or (at your option) any later version. ## ## The queueing toolbox is distributed in the hope that it will be ## useful, but WITHOUT ANY WARRANTY; without even the implied warranty ## of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with the queueing toolbox. If not, see 1; # not a function file # figure (1, "visible", "off"); # do not show plot window page_screen_output(0); # avoid output pagination N = 100; # total population size beta = linspace(0.1,0.9,18); # population mix for class 1 D = [12 14 23 20 80 31; ... 2 20 14 90 30 33 ]; V = ones(size(D)); X1 = X1 = XX = zeros(size(beta)); R1 = R2 = RR = zeros(size(beta)); for i=1:length(beta) pop = [fix(beta(i)*N) N-fix(beta(i)*N)]; [U R Q X] = qncmmva( pop, D, V ); X1(i) = X(1,1) / V(1,1); X2(i) = X(2,1) / V(2,1); XX(i) = X1(i) + X2(i); R1(i) = dot(R(1,:), V(1,:)); R2(i) = dot(R(2,:), V(2,:)); RR(i) = N / XX(i); endfor ## Plot throughput and response times ## set(gcf,"paperorientation","landscape"); ## papersize=[4 3] * 2; margin=[0 0]; ## set(gcf,"papersize",papersize); ## set(gcf,"paperposition", [margin papersize-margin*2]); subplot(2,1,1); plot(beta, X1, "--;Class 1;", "linewidth", 2, ... beta, X2, ":;Class 2;", "linewidth", 2, ... beta, XX, "-;System;", "linewidth", 2 ); ylabel("Throughput"); legend("location", "south", "orientation", "horizontal"); legend("boxoff"); title("Throughput and response time vs population mix"); subplot(2,1,2); plot(beta, R1, "--;Class 1;", "linewidth", 2, ... beta, R2, ":;Class 2;", "linewidth", 2, ... beta, RR, "-;System;", "linewidth", 2 ); ax = axis(); ax(3) = 0; axis(ax); legend("location", "south", "orientation", "horizontal"); legend("boxoff"); xlabel("Class 1 population mix"); ylabel("Response Time"); print("web.eps", "-deps2", "-mono", "-tight"); clf; ## Plot system power ## set(gcf,"paperorientation","landscape"); ## papersize=[4 2.5] * 1.2; margin=[0 0]; ## set(gcf,"papersize",papersize); ## set(gcf,"paperposition", [margin papersize-margin*2]); plot(beta, X1./R1, "--;Class 1;", "linewidth", 2, ... beta, X2./R2, ":;Class 2;", "linewidth", 2, ... beta, XX./RR, "-;System;", "linewidth", 2); legend("location","south", "orientation", "horizontal"); legend("boxoff"); xlabel("Class 1 population mix"); ylabel("Power"); title("Power as a function of the population mix"); print("power.eps", "-deps2", "-mono", "-tight"); queueing/doc/qn_closed_multi_apl.png0000644000175000017500000001606213635377233017571 0ustar morenomoreno‰PNG  IHDR’ݸîh 2iCCPdefault_rgb.iccH‰••gP“YÇïó<é…@B‡PC‘*%€”Z(Ò«¨@èPElˆ¸+Šˆ4EE\•"kE ‹‚tƒ,ʺqQAYpß÷?¼ÿ™{ÏoþsæÞsÏùp ˆƒeÁË{bRºÀÛÉŽÌß(ŒŸ–ÂñôtßÕ»­Ä{ºßÏù®‘iü常¼rù)‚t ìeÖÌJOYá£ËLÿÂgWX°\à2ßXáèyìKο,ú’ãëÍ]~ )úÿ†ÿsïŠT8‚ôبÈl¦OrTzV˜ ’™¶Ò —Ëô$GÅ&D~Sðÿ•ü¥Gf§¯DnrÊ&AltL:ó5204_gñÆëK!FÿÏgE_½äzØs û¾zá•tî@úÑWOm¹¯”|:îð3™ÿz¨• €è@(U  t0–À8à|AØø $ȹ`(E`8ª@-hM œà<¸®ƒÛà.L‚—@Þ‚°¢A2¤é@F²† 7È ‚B¡h( Ê€r¡PT UAuPô tºÝ„¡‡Ð84ý }„˜ÓaXÖ‡Ù0v…}áõp4œ çÀùð^¸®‡OÂðø6< á—ð"Â@”]„p$‰BÈV¤)Gê‘V¤éCî!Bdù€Â h(&Je‰rFù¡ø¨TÔVT1ª uÕêEÝC£D¨Ïh2Z­ƒ¶@óÐèhtº]ŽnD·£¯¡‡Ñ“èw †aaÌ0Θ Lf3¦sÓ†¹ŒÄL`æ°X¬ Vk…õÀ†aÓ±ØJìIì%ìvûGÄ)áŒpޏ`\.WŽkÆ]Ä á¦p xq¼:ÞïÀo—àðÝø;øIüA‚À"X| q„„ B+áaŒð†H$ª͉^ÄXâvbññqœøD%i“¸¤Ri/é8é2é!é ™LÖ Û’ƒÉéä½ä&òUòSò{1š˜žO,Bl›XµX‡ØØ+ ž¢NáP6Pr(å”3”;”Yq¼¸†8WJ)Hq¤"¥öHµJ IÍKËIÛJGJJ·IK”aÊ8ÈÄËì—é”y"‹’Õ–õ’Í’="{MvVŽ.g)Ç—+”;-÷H–×–÷–ß,L¾_~NAQÁI!E¡RáªÂ¬"CÑV1N±Lñ¢âŒMÉZ)V©Lé’Ò ¦$“ÃL`V0{™"eyegå å:åå–ŠŸJžJ›ÊU‚*[5JµLµGU¤¦¤æ®–«Ö¢öH¯ÎVQ?¤Þ§>¯ÁÒÐØ­Ñ©1Í’fñX9¬Ö˜&YÓF3U³^ó¾F‹­¯uXë®6¬m¢£]­}GÖ1Õ‰Õ9¬3¸ ½Ê|UÒªúU£º$]Žn¦n‹î¸CÏM/O¯Sš~°þ~ý>ýÏ&   ©†.†y†Ý†iñªî¯&¯v\½mu×êׯ:Æ‘ÆGŒ˜ÐLÜMv›ô˜|253˜¶šÎ˜©™…šÕ˜²élOv1û†9ÚÜÎ|›ùyó¦é§-þ²ÔµŒ·l¶œ^ÃZ¹¦aÍ„•ŠU˜U•Кij}ÔZh£lfSoóÌVÕ6¶ÑvУʼnãœä¼²3°صÛÍs-¸[¸—í{'ûBûªƒŸC•ÃSGÇhÇG‘“‰Óf§ËÎhgWçýΣ<Ÿ×Ĺ˜¹lqéu%¹ú¸V¹>sÓv¸u»Ãî.îÜÇÖª¯MZÛé—ˆÿ2Â6¢,b&Ò*²4r*Ê*ª4j:Ú*ú@ôLŒMLyÌl,7¶*öuœs\mÜ|¼Güñø¥„€„¶D\bhâ¹$jR|Ro²brvò`ŠNJAŠ0Õ"õ`ªHà*hLƒÒÖ§u¥Ó—?Åþ ÍŒ]ã™Ö™Õ™ï³ü³ÎdKd'e÷oÒÞ´gÓTŽcÎO›Q›ù›{r•swäŽoál©Û m ßÚ³Mu[þ¶ÉíNÛOì ìˆßñ[žA^iÞÛ;»óò·çOìrÚÕR V (Ým¹»öÔ±? ìY½§rÏçˆÂ[EEåE‹Åüâ[?þXñãÒÞ¨½%¦%Göaö%íÙo³ÿD©DiNéÄ÷e̲²·7¼Yn\^{ˆp(ã°Â­¢«R­r_åbULÕpµ]u[|ÍžšùÇ‡ŽØi­U¨-ªýx4öèƒ:§ºŽzúòc˜c™Çž7ø7ôýÄþ©©Q¶±¨ñÓñ¤ãÂÞ'z›Ìšššå›KZà–Œ–™“!'ïþlÿsW«nk]£­è8•qêÅ/¡¿Œœv=Ýs†}¦õ¬úÙšvZ{aÔ±©CÔÓ)ì ê<çr®§Û²»ýW½_ŸW>_}AòBÉEÂÅü‹K—r.Í]N¹<{%úÊDÏÆžÇW¯Þïõê¸æzíÆuÇëWû8}—nXÝ8Óâæ¹[ì[·Mowô›ô·ÿfò[û€é@dz;]wÍïv®¼8d3tåžý½ë÷y÷o¯ñy02*|ñ`úaÂÃ×2-<Þ>†+|"þ¤ü©üÓúßµ~oš /ŒÛ÷?óyöx‚?ñò´?'󟓟—O)M5MMŸŸqœ¹ûb݋ɗ)/f þ”ø³æ•櫳ÙþÕ/ M¾¼^ú»øÌ›ãoßöÌyÎ=}—øna¾ð½ÌûØú>|œZÈZÄ.V|ÒúÔýÙõóØRâÒÒ?B,¾”Í pHYs N NwŒ#tEXtSoftwareGPL Ghostscript 9.26Xn·}IDATxœíÝÝš›¶€Q¼ŸÜÿ-{º”_Bè“Ö:J›Û3¶ßHX Ï÷û‘- ï÷û¿·À9²ógú&Œ@>ŸÏïÏF[@0²#[@0²#[@0²#[@0²#[@0²#[@0²#[@0²#[@0²#[@0²#[@0²#[@0²#[@0²#[@0²#[@0²#[@0²#[@0²#[@0²#[@0²#[@0²#[@0²#[@0²óçíÆçóù~¿‡_³ÿË[Øù–ûƒ>ÉV’ÃÆÐL¿xöÆ?L{ôûóò»€U&‰'$ÆëçWŸï?~·c—ÉÖ±³µÚ!IpŸl“1ao º"[–G£n2à‚›dë˜Ð@Ud+ÕêG~˜ÂM²µçÑÄÄÁ5²uàpÕ)†ZpŸå¦›ò&fvk†Zp™líÙ‰Ëås} n’­s¾ßoú(L¡à ²µnlÓ~¡R\@v²µi†Xò‘S>I\¡JP3ÙZ—8û{+pÂJÏdk.¥ïÒrLÎÉÖ]…>ÆY [ÿñèӛߵqAè‡Oÿšaçz5Ëvü¾xç¯ïwçþ˜!Ò9Ùú+½;_y!(g™$ÁÈŒlÁÈŒlÁÈŒlÁȌ妙%žc•)\&[wÝ?ñPÂàÙº(ãYÍ¿›Ò/H![§mëlt.œw ²uJÞ Ä¶6‹/Ø'[I–Áʘ•Õ~‰l‘­kõ–Å öY·µgÖ¬ï÷[  Ë{qQS˜’­M³5 …‡<³{T.ø‘­³«¶¿8G›•K¼`­¥åÄð­G²ú” dë?jkÖH¹`J¶þõîÁ¬}uÁlýUÉÁ¬}ʃl-UÛ¬Qå ­a;r ú°á&ÙŠ1=œ2U¤s½g+\³FÊEÏzÏÖO fÂ=`È¥ëlE¿>ßÖ¥o m]g ˆ¨ßlEj ¸èP¿ÙjrщN³ÕÆPkÔÀ§tš- ®³ÕÒPkä]é1[@h²õ£xNwÙzz†øÖ¥“Íé‡ Ç²Ñ (C¶²1Þ2jÌV«24óâÔ÷ûULzPc¶¦ò&¬“wõçói²Ë0ª=[SA¯äUc¶R®'aЭ³5%aÀLíÙš’0`˜e«±#Ö½%lúó†x*{xRxB/«äC¼‘&‰—ÿª+´áÏp¬ž åÕüjÌéXósÚö³@aF[×R´§êlI°Tc¶k%Uг³µJª€QÕÙ’*`©Æl=W«&Öð1™ÜÓ¶^–›Î<—Ùå˜Ë_¹†bB5޶‚2Æ2:mqu—­V¯øb}q˿ݷüÞ”ôÜ¿ßöxÃdsö_¿Ë'yD×ó0ËœÜS‹áÙz“á\ [³hò’­ÇY4yÉŒlbÀ¹ÈV)U²h²°Üô®Ä5„ 2svîEò#[w¥¼˜~_ã•×¹,»O{É<îÚîd[ßÕçÎ)S²ºsX å<Š>7“-xÄjeîôeçb“½ÅK¶ ³®~ÂÓÏ¥D,€€œJnººsb+¶ ·vîð n²¼~õ´Y¼Ú>Úe’w½Þ¬­»nuÂ([pËlÕëœÊ%[p]+?gõl¯\²E#ʈVg³~.—lÑ”ÏÄÓwôûs…͵Z.Ù¢YÏ%,D³FM–˱i Œ¡ Ô¬Q{——-š’2¸ÈÕÍšic%ªlѬ'tØ2p5P.Ùâ5µ%`–°åeùÂM§¶¦Šµ= )’‡û— ׬Ñj#’-Hý­Þ’ð³\8%¥>«oŠf.åÞÀâØí»œªS·NÜcó²E›î§*×·Ô¦e\²E;JU³ªÆÈØi–ÜÌü\A牲E›"¾I$[4âéN=wûõ\5ŠCD(æÑ[ïNlã³3Ú‚w¬îRý3¾2¬’‡×,‡9á>¯-Øôè4êõB½þ.“- Ù‚Þ…; &[P‘¶w“ÎE¶ š•H¶  Ó‹&‡›µfݼL¤Î’-xÙêVAOr.Ã$*"U)d êÒÌFÏ‘- Ù‚J™0n‘- Ù‚‘-¨Kùµòáf£ÖmÁ¦çöæšÞì[WÝŠûI¥lÁ±ì‹?§At-ù³d Þ!O—9¶=Š»ÿÅ [4ã¡ 'X³^!“D𲍛6ÈÍ’°CA-.ŽAkgs^ó¡-EÿqŒ¶hÍê嫦ŒÂ¢3Ú¢wFa-•.úPk0Ú¢éŸÓ¾Ù.ä·ºìs\húÜrù–?Å+¿ù”bnÝÚ÷ûµ‚~=ÚúÛqEÅï [ w¨5mѳ'Þ׬àŽmÑ››© }`¨™o´EûZëÍßÌPk0I¤UMgWnˆR®–> d‹–”9V®\5k-š±óyyöû ´¢½f ²Ey —|†p ñ›5}ü²E# ¿-ëŸ*F^`¹)\4;ù±ªL´}¡gÙ‚ëf9¨¤\m7k-¸©¶rÍŽÁ·×¬Á±-¸ïwÒõøŸå7:œÞïìQ5Éh òxqص<²Öp³Ù‚Œ–åz:^«wÑv³“DÈk6a›3®±ù`d òÛŠ×ôo¯)y2@µd ž²Œ×èÂy;“Í®‚5’-xÖV¼¶þç©›í“lA ‡û ]¸®¸L oêö÷sj©„_×’lÁË„é,ë¶€`d F¶€`d F¶€`d F¶€`d F¶€`d ÆÉ=”V`{WÚ&[@ÓäL`d Æ$žrx9Àã{[»ò|>Ÿž ÊI|Öaw¬‡&ÑêÙ?}’­[ʼtz~2埱‘l]qêÕs󥿕ÚðC²u×΋ìÔ(ÉzhFéGW»%[%¦$ñs¢‘+¤­§\kuŒ¼ vÈV[¯°Ë#2ñjR–KÓØ®m°nëŽc×Ü[ݘåË ýý…{¿0d+eb.¼°:YÝÏxáò¸¼|3S&‰·ì¬zÏu›f‹0 Ã÷ƒle´2ã)Ê;d뮇†ñf°E¶r:û  õÐplepù`¼õÐplÁÈVw>±6à‚SdkîшœZžÚÏú&8ÅrÓm­iÞùÊý£Z;1š~¥õÐpJƒ‹°©œQ$7™$Á˜$ØÞ•7™r“I"ŒlÁÈŒlÁ8$ŸMÊòzG£á>ÙºîÂi@/%Ý’­Ór´(aplå´ÁÄ-²•dµ5×*³³ µxA Ù:° VƬünj¶ÉXÞ{ÆÈÖ¦GƒµzËâ)dkݬYeòa{WHÑà»â¾×?ã{%šÅÈ7mýG%½˜ »LaÊÉ=ÿª¤Y[ÀN0’­¿jkÖH¹`I¶†aq0«’f” fdëýð‡j+)¼«÷lÕ߬%.:×{¶Ù9+ºÒu¶Â µ” †ž³®Y#å‚~³õ¨Y£pòê4[Íœ_bÀE‡:ÍVtÑk g}þ1ôy*u{C­è?š¾Ú»m™UAtÝeë§ÊêÅQ¡yýf ª¯lµw0È€‹õ•- ²ÓÑE™ ÌßÚ8à ‘®måñ[wø?} Åî ^ÔÑhë9Ë-*šß4 ^ÔÝhë¡‚ÌnÖõHá95޶ž8Bôܪ†ÁT¬Ã[í-C¡°³5ôÂXÃ5©¡¡ð„é »Ælí¼Û+LX%úQc¶†´kxV˜0 €J³57aŽ7A ²51a5<hɹl%RÞ¨÷o*å,â×Ç;囕ò#>ªôß[Æçý| ý ïUxHìå¦)gϼÒâåºy —s“ÄŒïÃË7uaôÊjÌ·š•å~ó>xù&¯‡ä³¯)ÆšOxT½ÙŠ•ªÍ‚§Õ˜­ý`ÕÍ‚jÌÖRˆì7«LÑBü¢à‚邇z³ëXC³ 5fë‰wøïÃÄ' ò»å¼7{ö@'b¯ÛªAÐ ®G[±HÖÑh«ÕP›Eo:ÊІ?ƒ¥Púmµ7O4C¤C}e h@¿Ùj`Àe¨EŸºË–w8D×]¶¦B¸ µèVËMcíá ÿýç¹ÓÑVô µèY§Ùš W®pòê7[)[.V¨¶] ¡¼~³5|Ûk gk*ЀkÐ,úö¿áŸÝc½os 4U¬üáA1F[1Êez?²5 u—k6Ö,­¿fåª$^³‡¡Y0ÈÖÔ, ¯—K³`•lýG=åšM 5 ~z<'q߈_5Æ?”¬†A,MOh3ÚZ·vy-ïE³`ÉhkÓlØ5<9òZ6Q°`‹lX^å&ãÕVGp‚ûdëØrØ5ºÜ¯ù¦fÁ!ÙJµs‰®û‡½Ô ÒÉÖi/1¨Vpí]¯»vJß6Üd´•‡A1ÖmÁÈŒlÁÈŒlÁ||Äb´#[@0²#[@0†¬xšÑŒlÁÈŒlÁ¸ÞÖ]§. ¿µCÏçãtH%[w-7ÈØ Ðr¿²2Û/BlïšßáXiuÅï÷kgÉV ûC*å‚Sd«f‹H¶ª`Àéd«(ûQÃ}²UµU²õëà»Ròý~g©Z]2Ú*gu•–aœ%[¥-ã¥\pŠl½C¹à2ÙzrÁ5²õ&ÇãáÙzœá¾ï?Ù*`¹ô¸C¶€`d«.ÈE¶òH©Òêר¤β½ë]Ë­þ>—×nžò›‡tŸéco ~&‰@0²#[@0²c{W ۻɌlÁÈŒlÁÈŒlÁØÞÆh F¶€`d F¶€`d æãcD £- Ù‚‘- Ù‚±½+ŒÑŒlÁÈŒlÁÈŒlÁØ•À®Ô@`²#[@0²sîüï¨Ø¾”sËßTÊ­ÕySé·VçM¥ÜZ7•~kuÞTÊ­ÕySû·f´óo¶\þÁµä`þCYO-¸¼ÙIEND®B`‚queueing/doc/qn_open_single.fig0000644000175000017500000000341413570046274016526 0ustar morenomoreno#FIG 3.2 Produced by xfig version 3.2.5b Landscape Center Metric A4 100.00 Single -2 1200 2 1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 6930 5580 270 270 6930 5580 6930 5310 1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 6930 4500 270 270 6930 4500 6930 4230 1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 5299 5029 270 270 5299 5029 5299 4759 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 4 0 0 1.00 60.00 120.00 5580 5040 5850 5040 6030 4500 6300 4500 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 3 0 0 1.00 60.00 120.00 5850 5040 6030 5580 6300 5580 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 0 0 1.00 60.00 120.00 7200 5580 7470 5580 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 4 6300 5310 6660 5310 6660 5850 6300 5850 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 4 6300 4230 6660 4230 6660 4770 6300 4770 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 0 0 1.00 60.00 120.00 7200 4500 7470 4500 2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2 0 0 1.00 60.00 120.00 4500 5040 5040 5040 2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 4 0 0 1.00 60.00 120.00 7470 5580 7470 3960 4860 3960 4860 5040 2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2 0 0 1.00 60.00 120.00 5760 5040 5760 6210 4 0 0 50 -1 0 12 0.0000 4 135 255 5445 5940 0.2\001 4 0 0 50 -1 0 12 0.0000 4 135 255 5940 5760 0.5\001 4 0 0 50 -1 0 12 0.0000 4 135 255 5940 4455 0.3\001 4 0 0 50 -1 32 12 0.0000 4 150 105 4365 5130 l\001 4 0 0 50 -1 0 12 0.0000 4 135 375 5130 4725 CPU\001 4 0 0 50 -1 0 12 0.0000 4 135 480 6705 4185 Disk1\001 4 0 0 50 -1 0 12 0.0000 4 135 480 6705 5265 Disk2\001 4 0 0 50 -1 0 12 0.0000 4 135 105 5265 5085 1\001 4 0 0 50 -1 0 12 0.0000 4 135 105 6885 4545 2\001 4 0 0 50 -1 0 12 0.0000 4 135 105 6885 5625 3\001 4 0 0 50 -1 0 12 0.0000 4 135 450 6705 6030 FCFS\001 4 0 0 50 -1 0 12 0.0000 4 135 450 6705 4950 FCFS\001 4 0 0 50 -1 0 12 0.0000 4 135 210 5220 5490 PS\001 queueing/doc/qn_closed_multi_cs.png0000644000175000017500000002277013635377234017426 0ustar morenomoreno‰PNG  IHDR›ë:Áo 2iCCPdefault_rgb.iccH‰••gP“YÇïó<é…@B‡PC‘*%€”Z(Ò«¨@èPElˆ¸+Šˆ4EE\•"kE ‹‚tƒ,ʺqQAYpß÷?¼ÿ™{ÏoþsæÞsÏùp ˆƒeÁË{bRºÀÛÉŽÌß(ŒŸ–ÂñôtßÕ»­Ä{ºßÏù®‘iü常¼rù)‚t ìeÖÌJOYá£ËLÿÂgWX°\à2ßXáèyìKο,ú’ãëÍ]~ )úÿ†ÿsïŠT8‚ôبÈl¦OrTzV˜ ’™¶Ò —Ëô$GÅ&D~Sðÿ•ü¥Gf§¯DnrÊ&AltL:ó5204_gñÆëK!FÿÏgE_½äzØs û¾zá•tî@úÑWOm¹¯”|:îð3™ÿz¨• €è@(U  t0–À8à|AØø $ȹ`(E`8ª@-hM œà<¸®ƒÛà.L‚—@Þ‚°¢A2¤é@F²† 7È ‚B¡h( Ê€r¡PT UAuPô tºÝ„¡‡Ð84ý }„˜ÓaXÖ‡Ù0v…}áõp4œ çÀùð^¸®‡OÂðø6< á—ð"Â@”]„p$‰BÈV¤)Gê‘V¤éCî!Bdù€Â h(&Je‰rFù¡ø¨TÔVT1ª uÕêEÝC£D¨Ïh2Z­ƒ¶@óÐèhtº]ŽnD·£¯¡‡Ñ“èw †aaÌ0Θ Lf3¦sÓ†¹ŒÄL`æ°X¬ Vk…õÀ†aÓ±ØJìIì%ìvûGÄ)áŒpޏ`\.WŽkÆ]Ä á¦p xq¼:ÞïÀo—àðÝø;øIüA‚À"X| q„„ B+áaŒð†H$ª͉^ÄXâvbññqœøD%i“¸¤Ri/é8é2é!é ™LÖ Û’ƒÉéä½ä&òUòSò{1š˜žO,Bl›XµX‡ØØ+ ž¢NáP6Pr(å”3”;”Yq¼¸†8WJ)Hq¤"¥öHµJ IÍKËIÛJGJJ·IK”aÊ8ÈÄËì—é”y"‹’Õ–õ’Í’="{MvVŽ.g)Ç—+”;-÷H–×–÷–ß,L¾_~NAQÁI!E¡RáªÂ¬"CÑV1N±Lñ¢âŒMÉZ)V©Lé’Ò ¦$“ÃL`V0{™"eyegå å:åå–ŠŸJžJ›ÊU‚*[5JµLµGU¤¦¤æ®–«Ö¢öH¯ÎVQ?¤Þ§>¯ÁÒÐØ­Ñ©1Í’fñX9¬Ö˜&YÓF3U³^ó¾F‹­¯uXë®6¬m¢£]­}GÖ1Õ‰Õ9¬3¸ ½Ê|UÒªúU£º$]Žn¦n‹î¸CÏM/O¯Sš~°þ~ý>ýÏ&   ©†.†y†Ý†iñªî¯&¯v\½mu×êׯ:Æ‘ÆGŒ˜ÐLÜMv›ô˜|253˜¶šÎ˜©™…šÕ˜²élOv1û†9ÚÜÎ|›ùyó¦é§-þ²ÔµŒ·l¶œ^ÃZ¹¦aÍ„•ŠU˜U•Кij}ÔZh£lfSoóÌVÕ6¶ÑvУʼnãœä¼²3°صÛÍs-¸[¸—í{'ûBûªƒŸC•ÃSGÇhÇG‘“‰Óf§ËÎhgWçýΣ<Ÿ×Ĺ˜¹lqéu%¹ú¸V¹>sÓv¸u»Ãî.îÜÇÖª¯MZÛé—ˆÿ2Â6¢,b&Ò*²4r*Ê*ª4j:Ú*ú@ôLŒMLyÌl,7¶*öuœs\mÜ|¼Güñø¥„€„¶D\bhâ¹$jR|Ro²brvò`ŠNJAŠ0Õ"õ`ªHà*hLƒÒÖ§u¥Ó—?Åþ ÍŒ]ã™Ö™Õ™ï³ü³ÎdKd'e÷oÒÞ´gÓTŽcÎO›Q›ù›{r•swäŽoál©Û m ßÚ³Mu[þ¶ÉíNÛOì ìˆßñ[žA^iÞÛ;»óò·çOìrÚÕR V (Ým¹»öÔ±? ìY½§rÏçˆÂ[EEåE‹Åüâ[?þXñãÒÞ¨½%¦%Göaö%íÙo³ÿD©DiNéÄ÷e̲²·7¼Yn\^{ˆp(ã°Â­¢«R­r_åbULÕpµ]u[|ÍžšùÇ‡ŽØi­U¨-ªýx4öèƒ:§ºŽzúòc˜c™Çž7ø7ôýÄþ©©Q¶±¨ñÓñ¤ãÂÞ'z›Ìšššå›KZà–Œ–™“!'ïþlÿsW«nk]£­è8•qêÅ/¡¿Œœv=Ýs†}¦õ¬úÙšvZ{aÔ±©CÔÓ)ì ê<çr®§Û²»ýW½_ŸW>_}AòBÉEÂÅü‹K—r.Í]N¹<{%úÊDÏÆžÇW¯Þïõê¸æzíÆuÇëWû8}—nXÝ8Óâæ¹[ì[·Mowô›ô·ÿfò[û€é@dz;]wÍïv®¼8d3tåžý½ë÷y÷o¯ñy02*|ñ`úaÂÃ×2-<Þ>†+|"þ¤ü©üÓúßµ~oš /ŒÛ÷?óyöx‚?ñò´?'󟓟—O)M5MMŸŸqœ¹ûb݋ɗ)/f þ”ø³æ•櫳ÙþÕ/ M¾¼^ú»øÌ›ãoßöÌyÎ=}—øna¾ð½ÌûØú>|œZÈZÄ.V|ÒúÔýÙõóØRâÒÒ?B,¾”Í pHYs N NwŒ#tEXtSoftwareGPL Ghostscript 9.26Xn·CIDATxœíÝÛš£¶P{yÿWö¾ð„0œ,@€ª´ÖUÒãÚ€~Jñþ|>/ ¸ÿ=½@2èÁ???ñ~¿þ½ÿ~¿ÇwâÇt‡~òW@8[‰>Äó<íÞï÷<éײ¿e·æ–ýg©ýù|æY8Tíõ6ïBQ¶J,ÜG/ì9ÞMýù×ÓlŒû™vâ1Mô{ç@³Î>½&ø Œ»z°Øâò¯ J>Y¾4Hï÷óèµ|xžÊógÁçŸ\{Rnû3ÐsÆ•TÞªszÖD¢+¯à¤û}ïÃß“˜/¹Ý®L [÷ÝGŸ(©Ëo½ø ¤÷@¯û0n-†Œi×o@çnMôŸY>Xà3Љ¿ýÒ¾ë½Ýã…Á¯¿^5zÝz÷ðÒÆ™½ñ¦öŸŸ€Ü¦‰~`Ζê!ú³ƒ½ð3Ð…½<Ôg|î·üôÚçó²|1³¿¢mãaãâàºÇØôÒà {#ðJzÂÇ[œ füÃí{áÕ_ÓâE/d¢Ï2hb^wà$‰HtÈ@¢@2èD€ þÌgê4¨å‘¹^ÔèD€ ¦oj1),óì-l5:d Ñ ‰HtÈ@¢@2èD€ $:d Ñ ‰HtÈ@¢@2èD€ $:d Ñ ‰HtÈ@¢@2èD€ $:d Ñ ‰HtÈ@¢@2èD€ $:d Ñ ‰HtÈ@¢@2èD€ $:d Ñ ƒžÞþò~¿×þéóù¬}~㟠—Ct -߸‡ñF¯ÅùƯ¿ßï‹âÒëТ3q;Äùçó™/gøÉFgIt€TÆq¾ö¡ž’DˆêLç¹PÏG¢äQR oü¡It€N—ŒDiÞå®ÔîœD€ $:êû $:@<¦ˆaN¢@å~ ]î,’èIÈøÎIt€NßžŒDˆd»ËýØlíŠû$:@èùHt€Tö–é ô4þyzà Ik¥U:£¤é÷ ßlq§Žrÿ|>ßO¾ßïù‡½ŸöItâ9ÓÒAûæGøòï¹ð~¿×~×É’D'˜í÷M-V$KÅcØéЉN<“Fj¨EÚœð¶/ƒt~@FƉ`D' I˜¯rèD"{n¦Ë‘èD' #ã€ÎItRÑ?\‘.wˆÅÓkä!{èÉHt2ÐåN'~êóÈø~HtÂÓ9|ßjSÎ\³šÅ½ 4Uäsøõ9k¿8þ¹S&%‰Nlf‘#Ÿ,/9Ú'Ÿñf£~HtçÑÜ?h1€Ï싵×½œAéHt¢Ò‘Ì ƒÚæ¯5rõ–‰D'¤Ÿ¯ ÓBÈÍÔåzVf˜¡iï÷{ÞØ‰ó3¿ÒÉ^÷Í(¿çËŸ¯ÈS Ñ©Ñi×оŒCúûCMÏ1‹_)z|üù¤^w`„¦F'€Iœ~˜ ¾¥ÇM:KžÝ#“Ñs®˜ƒzO.МçWksêÖ6·*–gÃTp«fƒÓmõè.Lt]7@ûnn©šó¯Ép¹ômx²œª<2nï°d€G„ ?¼m¨ù k9æóùdʹ5îý‹THôv<ÐëÚ÷ˆ­eoUYèt?82Îc “Ú´pQnƒ«¸÷Ÿ·#Ñ¥8Ѓ+Úº ét³Ï8¹÷›Nt)ô¬V÷ áC}p`ï?»£î£ïý ï í:èo[TÉÒÚ\TùÒÚ\TÉÒÖÕ[³r©ˆwv[3ϼɽç¸qþZ%çÈùjêŠgšè'ßË Ð³Åç}Ù’+ô6Jn¯Ç÷õŽçÑßV€c/nÆÝòÞ¬ÞGÿ™ßö17 ÝuÙ,ßj¡cMbS]²g¤ùCŽ)ßûÍÝGÿúy§¼ó ¤W±°‰ÞHv2çÌXIJ¶h†ét¢b;ž5ßM˜âc»çŒ“î@2W·ã9Z¬ezô;5 laºú:€®xº§gùö~µ7µ¬¥{ÐïèPÅö*åáLÏÑñ>éuHðU~÷ÚW‚ï…9®¨.ôAÕø‹YCHö¥]’è\Ç]Ní˜a€]®È×!¹ó½Nùœ%ÜO¢Tv[¬ÿ«4ç%ÑÉ1$‹Ht€ $= Œb»…m`‘D¸„äãf ƒûŸîÞ‰PÓ³9§c g qÞ9sÆFʉ²¡ à¼ÔèÑ™ÿ•/‰ž8ç%Ñêº9\Í"Ç@¢Dõlœ»’hD¸ÄÕ£ÕTçLHt€x¶ãüÒ‹ ãê›%Ñ‚ùçj÷>y ’o‰¬PfNFI+л¥F¨ìóù •tÝ|}<­MÝØ25:d Fº¦èä6Wlè×ø¶ôø¿Ï7¸×u¼?ÈÕO-u¶D' ·¹¨Á…¹Š›Dú5n@׆‘Kwjùy¼<Ø$:ÀëuAº'ëx×å^×é.Ѧª§{ŽPç"µÒ]¢NV’¦gfa[kp‡2=ºyþÈ7_råÔà¢Ê—öù|Τ»DØçÛŒn×îóV>n™žã¢$¢½é.ÑöÙN¸Il§)Ó_î ?a×Á#ÑÀ*fÌ™—“nFÄ2}ío¿ç›Ï±¨½KÛu¼?,ÑÔJñ×ßez¬P÷äÞmªoàŠ)>ÿÅ ¡þnƒC¨~¼It k×¥xtinÿ7åÒãM¢† .:wÅpÃMâñ2•éúÛ¯põñ&Ñ~Sö†ÜŠêâüW|±ýõúuÝ4>ñöv˜l|~ñqÕ’Ý|еêâü:WŸ½'úÆåùûýžGì|f‰ÉO&“K,^ ¬íÔÉ¢œKRË¡.ÎCûßÓð˜q`/¸%Gó8¹Ç³÷-^ ú.ʼnMž'na Úd34Aušè…îcºäuL{— äS~‡î“µk¦‚ê4Ñ—p ×Ý@³æ¡þH£!ÎÓè1ѯ¾Qí| MÞµõº·˜÷´k¾Bë}d\ ‡8p©ÉÛ\ÖÞÞVÑÚ°_Âï¸îý†ë_íÀ^óçh.ÊuYžXw‰~'ç °ËZ®ÿõÓ]ô@¢W¦@‡–…6Ïõ¯½c€v½Ç$z5!Z èÖb¼ÝpÇú°µ\_ûá®Å’’D?EG„°˜Ü!zÔ&sÑœ_‰IôSœ'wòmwîä0ÿõÉóöym=è@~).åÅ=Î0ùt—è_ÕÆêå Šî}ìÎp}üJ˜hy ;Ðc¢;zóLË·­ º%ÎÉáý¯WŸ‰þÚêßoªîi¿±F­ Ü`8y79TÑïX÷ñƒ+‹™]2=Ó®°/\£8‡ëÜ–ßV´vî¯-j˜‚fc.š½k\›õ½zaÃúMô×ßS2γ6/cá±~`@E‹ýsWÄÕ°Àí‰ÙönüâÚ<•‡×8oÍôaÄÒu¢í:“«œöbZpó 3‹'þb ¿~¥ò«lã¬qò+‡«Ñé}t€×z¼=«ð}kkïtÉA¢4êg”Þ™µM]ô°H¯;aì}•$É\z<~PÍ{ ®Þ¤½7%zûÔèO:™”‚ÿçà¸Z+âf OÕÁUÞÙÊã$:Mù3W&X䡵 ÜGR™?e¾=tü¶8¿?#w­q~§ÜåN8½¦c‡WN·Ét‹Ÿáµòô¹Ùâ‘è§ì½èÖšÀÕ¶§UyÐÞI^ŸZã<×…zýˆZg Ç±€6M:á…z³ÆûE¢ïP빎µÉá÷.à:B=‰^ªâ‹U6&ž4zsÿù~ì‘´ÏÓk¿-¾ãèëä’×–ã‚>=r5oR÷4$ú–µ,¯¾¢ùb= »­Pˆ§!ÑWÝ“åÛ«ëЛÓ·i%ør}Á³Ï˜ytd/¡sý“è7þðŠ#o´3 ¨Ñ§yd|^¬?²@-{gpÛþÅ¡ïgÞ—[[Ñ|“h“ý/Äùxí…—ê@S6Ò±ðD·%ÏÚœ\ãâ„qkë¢MÓy{ÞmÛ“??¨Ù #ç>Tôì ¥×ý–SÓ‹ø©Ñ^÷›óµå8ÿ*)Cbí¨ÀÍÆ½-&úâý¾®hÅ¢´’B±(Ç-p›{Ý·‡nª¬+V³¨û½s¯Òª{^µX£¿Ê¢«n·ç_*õΕ<Ô´øa ½F}ìºtZИ²‘/éŒHô±Šéž£±S¦ó%Ýi¢'+þJZ±ˆ­ÛZ™žl÷qÇ ¤Ôâȸ‹LfJpKªØxÉ:¤dôlë"Ñ7^›±@‡ZÿÉŸ^÷p'öÏëôù_”¯¨úÞ‡»é7ïÇ›ç;4_éO%Ƕo²Š42î@Š×ý|Ë ‘ë–¾ZOôê)ž¬Îó$[Ÿ¤80×b¢WOqÈÁ©lh1ÑiªÖÌï¦Ó;øj1чˆªÞT%ër§[`àkÜ´˜è¯ –Š™êQÀ†.žG¿Ùý“`hèè(Ñoèr|B+ãÞºÕh¯{Pù&± ŠŽjtHLžDSÍ.Ð9lS£@Ý%zúËüô•:‹ºKtH©—DW¹[/‰¹ëQ'OS£@2è%ÑÓ?´@çzIô~¸vèSw‰î16R2Ö=‰®Tnx.-sÀ¶îjtHI¢××C¹ @k:Jô¡§îºÄ}¿ßã…Oþ®ã>zMOÝÞs€ŽjtH¬Å}ÞS]«ôü|>ºÁá“MïÜ ÅDŸ·Uš†÷û¦‰ÑåNûªŸÂÀ×ø„j1ѿ۷VLk }ýaNa¸H‹‰þ5>Õ¯hr”én"Ь«Oa`¢ÝD«Ø4d½•®5¤eÒn#ÑÇÎ7 C¨G/ÓS^šžt‡‹ü—è…ñPrv•'ÍÏ¥­š†½“çÔ݉U¸ƒJXñolsQ%Kkv'îÚ0W®P(Ïóè»Òú†ùã®w˸B¼^÷5k WRÇ„®ÝCoü.YÇ@ðÓöó/ÀWÈ0ûybïí¼ ÷%4²ålg<²Ý7q¼Ñ¾gÒ05z­_[x 6B¥BDµF?kšNôKSüõw/n”Pïa iHq¸S‹‰¾Ý Ô=ÿc…º8'Š;Ïbà«ÅDŸ»ôüê_!6Æ´p…ñûý±wžÿ퇺{çDÔà©ÂÆù¾ø•~?¿ñO…Ë!ºýõôÑÖZ¨{1%á8JϘ?­·ñ}®ÅùƯ¿ßï‹âÊ3ÃÌIó#þ©-™çЧ“Ïï Yœ {ò1rèÿ™ú-ëâØ«ä‘h¡ž’DŸš„úƒ‡û¤ÓLœg:Ï…z>ýý¯g·¦÷ÀOö…, ›³LãŸC£#ã7™Bü¶Q$óóJœÃ—s¡:ïJHF¢¯š7½4×e9°Ë¼EÏ“è?¬åú«Râ.ž²€½$z‘Å—9ž‰vÓ>Mimè;¬½¤¹JO—s (gŠæ$únuùpBP…D?îL´ r )¥ Æ;N¢WàLî¤ËEæŒHBÆwN¢tÊóëÉHt€H¶»ÜïQÜç Ñz¤@ÏG¢1x¡T¡½eº=?cÝíQ€¦,æqá(÷á,‹3ÁÕÊšvxz  -U&¦æ¸4çt?$:@[*f­ØîŠûèD€ ôº@TãqŽjtÈ@¢@2è‘q¥~Îð°ýÜçüׇù<0 6i[´'=û“è&üiൟlÌÎ8ÿ'ÓSül7ÖŠz F?h8I&/EX ï×줚_ÛzN¦3m…‚­½šáÕcÛçá⯼ÊR|£SpûçÒ=%‰~‰]wÇÝJÆ6²¼¤­˜|æÌ;܈E¢×t æV¦cÕo„ÏoNþW®§áéµ›œ¼èÒ›˜ý|>uÛ‡Å**Òè5m_\;m€E7dùöÂ=}“ƒD¿ÄÚ©è´&îÌòíi¢s½šµ“a~§Ü½+àëññçóy54M±Œ÷—½‚Iå=?Ü»&~¶w2ÿUjôƒøísr>«ŒËaèSƒS·NzµNIôƒëNè\ƒqþ¥uŠN¯ûŒFvÜÜÉ<éio-2'›”¾uJv‹Aþ ËÀ^WÌO>yÓRõåoh-ËÇ:i Üûù“è¡ÿ†fm÷YurÎ@8×µïOùÞúÞC§»ýBßÌwL@?&ïNœ«Ø¾ÇŠŠqÉ‘µ»sïßC¢Mïx¦}— ¯>Býë꽉~¹Ügäsiû«5è'Ô¡Ó]¢tþ}©W óÃÝâmmSçíûä”}²¯øim/<¥©t—è¥æ‡oád®ó‰eæÿ ä°ÖPäÐI™~Ø#ûz|½(ÑK;އßr@?Ï÷¸€svypGKtèZ ˜y¶ïúg¤-nU¾ Êô@GÎyÇöþý$:À²Šíx#-þa–éQR|L¢ü§b;ž5ßM˜âcèÝÕíxã1P(k™=ÅÇ$:ЯÖ:ðÓ"¿™èÀëa²”3¥Ÿ1þÆ•ºï§[Ý=›'÷8à…DûŒ?çå>:ð5ÉìÏç#Åcö—hï–D‡Þ)Áëòeò‰¬Nݶ×­‘èÐ;íòEô~s3cÝØÁ•JSÆÏ€¨ÑUÚî@šzÔG¨Ñ„D;Æ×Xޒ΄D¶‰¦ŒŸ;7ÁX¦Ëý°!w¯x2ðÙä6s_ËÜG¸) á\U£»Žƒè:9y5VÜf{ÄyÿLVsfkozpž@,ýœ¶“éë‡ÿ>ÿç_ÚñþW?]‘îgktwÚ ™fèέºº–‚±ZÇÛ‘D/IqçDÔlœ_díuscÒZ®>ÞJ]ŠCzÛqž>ì«·¶É:Þu¹×uEºo%º‡|Ö±wçÕ[ÛÞ¾@v©u¼ý9ÈÜç MUkBÜË÷¶«dãk5ƒ“uå(mçÅ#ß|É•Sƒ‹*_ÚÚÁSø»f˜åˆó§lBÇzAZ¦ä{ÊÞóT¢CG%hÌ3ýŠP ßvìZãüq¸(_,‰În%³jk ¨åçñæ0«eñés³Å"Ñ)µ}V;ç©k~DE?ÆîïÙ:¶Æy® õ–Žp€©I„»¡‚D`PG¢<éþíò5êlE¢´â‘5©{ E·õr‡xs%þ$úû_Ïn @çLߦéæKЖòPÿVbU:Æ]$ Ñî°w·í_zU7â|oH¯­h¾I´É 3õm¤ca4ŽgzY\ZÉÓeåk\œ0nm]´é=Ù‹vDaÎ8ÈF¢@î£@Tã{åjtÈ@¢@2èD€ $:dPgŠàYjtÈ@¢@2èyÝ *oS€l$:d Ñ ‰HtÈàÏX÷ñ`¹ç68HHtÈ@¢@2èD€ $:dàÝkÕx5:d Ñ ‰HtÈ@¢@o/[€ÔèD€ $:d Ñ ³À@Tï÷ûûŸÏGHtÈ@¢@2èÁŸ±îÃ`¹ŸJf­¸´6U¾´6U²´6U¾´6U²´ô‹*_Z›‹*YZ›‹*_Z›‹*YZ›‹*_ÚÉE©Ñ ‰x÷d F€ $:d Ñ ‰HtÈ@¢@2èD€ $:d Ñ ‰HtÈ@¢@ÿüüÄûý^üù÷5¬ï÷_ïc¸ý÷´Nþ´ö7Öl%úxó¨{¿ßó¤_Ëþ-nê÷‡r€ˆÞ‹VRj¯åýÆu@#æÉ­X º…ûè…=ç¡co²ñŸÏ'ôŸ[#ã~†\ÄœÜø€¦‰Þ~Ÿùu:ü“HãìÓkáR0Ü@‰¿Æº_=X}qù?‡æ­}²|iÞïçÑkY|6ìûÜbToŒE/ü̱-€ˆbÌWRyתÎUùDÔD¢·S‹s‚º/Ñ÷>ó]2ëKÅ™aÚ¹ª€î»>Q’ %Ó²V™ºÕü¯D÷@¯û0n-AŒi?_a‹sB»5Ñfù`qHüÏn•8 º¿ýÒ`ÛÛ³]üçûÛÅ9 ¬ÖèuGŠ^Ú8³7ÞÔþó3k[%ÎÈašèæl©>Jüg{ág~®eãW } –…½<Ôg| ágœGü£èÙòÓkŸÏgÈòÅx;üжK„­ûÛ÷“ªp2ùQŒnÄ^IOøøc‹³ÁŒ¸}/¼ÖkZJ‚\@8º— ƒ&æuN’èÁÿ6òèDë,EIEND®B`‚queueing/doc/queueing.texi0000644000175000017500000001426713635377022015564 0ustar morenomoreno% Copyright (C) 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2016, 2018, 2020 Moreno Marzolla % % This file is part of the queueing package. % % The queueing package is free software; you can redistribute it and/or modify % it under the terms of the GNU General Public License as published by the % Free Software Foundation; either version 3 of the License, or (at % your option) any later version. % % The queueing package is distributed in the hope that it will be useful, but % WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or % FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License % for more details. % % You should have received a copy of the GNU General Public License % along with the queueing package; see the file COPYING. If not, see % . % This info file is taken from the GNU Octave info file \input texinfo @setfilename queueing.info @c The following macro is used for the on-line help system, but we don't @c want lots of `See also: foo, bar, and baz' strings cluttering the @c printed manual (that information should be in the supporting text for @c each group of functions and variables). @macro seealso {args} @iftex @vskip 2pt @end iftex @ifnottex @sp 1 @end ifnottex @noindent @strong{See also:} \args\. @end macro @c @macro examplefile{file} @c @example @c @group @c @verbatiminclude @value{top_srcdir}/examples/\file\ @c @end group @c @end example @c @end macro @c @macro GETHELP{file} @c @end macro @c @macro GETDEMO{file,n} @c @end macro @c FIXME: The following macros are workaround to fix erratic behavior of texinfo @iftex @macro lambdack @lambda_{c,k} @end macro @end iftex @ifnottex @macro lambda lambda @end macro @macro lambdack lambda_@{c, k@} @end macro @end ifnottex @ifinfo @format START-INFO-DIR-ENTRY * queueing: (octave). Queueing Networks and Markov chains analysis package. END-INFO-DIR-ENTRY @end format @end ifinfo @c Settings for printing on 8-1/2 by 11 inch paper: @c ----------------------------------------------- @setchapternewpage odd @c Settings for small book format: @c ------------------------------ @ignore @smallbook @setchapternewpage odd @finalout @iftex @cropmarks @end iftex @end ignore @defindex op @c Things like the Octave version number are defined in conf.texi. @c This file doesn't include a chapter, so it must not be included @c if you want to run the Emacs function texinfo-multiple-files-update. @include conf.texi @settitle queueing @documentdescription User manual for queueing, a GNU Octave package for queueing networks and Markov chains analysis. This package supports single-station queueing systems, queueing networks and Markov chains. The queueing package implements, among others, the Mean Value Analysis (MVA) and convolution algorithms for steady-state analysis of product-form queueing networks. Transient and steady-state analysis of Markov chains is also implemented. @end documentdescription @ifnottex Copyright @copyright{} 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2016, 2018, 2020 Moreno Marzolla. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. @ignore Permission is granted to process this file through TeX and print the results, provided the printed document carries copying permission notice identical to this one except for the removal of this paragraph (this paragraph not being relevant to the printed manual). @end ignore Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions. @end ifnottex @titlepage @title The Octave Queueing Package @subtitle User's Guide, Edition 1 for release @value{VERSION} @subtitle @value{VERSIONDATE} @author Moreno Marzolla @page @vskip 0pt plus 1filll Copyright @copyright{} 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2016, 2018, 2020 Moreno Marzolla (@email{moreno.marzolla@@unibo.it}). This is the first edition of the Queueing package documentation, and is consistent with version @value{VERSION} of the package. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this manual into another language, under the same conditions as for modified versions. Portions of this document have been adapted from the @code{octave} manual, Copyright @copyright{} John W. Eaton. @end titlepage @contents @ifnottex @node Top @top This manual documents how to install and run the Queueing package. It corresponds to version @value{VERSION} of the package. @end ifnottex @c ------------------------------------------------------------------------ @menu * Summary:: * Installation and Getting Started:: Installation of the queueing package. * Markov Chains:: Functions for Markov chains analysis. * Single Station Queueing Systems:: Functions for single-station queueing systems. * Queueing Networks:: Functions for queueing networks analysis. * References:: References. * Copying:: The GNU General Public License. * Concept Index:: An item for each concept. * Function Index:: An item for each function. @end menu @c ------------------------------------------------------------------------ @include summary.texi @include installation.texi @include markovchains.texi @include singlestation.texi @include queueingnetworks.texi @include references.texi @c @c Appendix starts here @c @include gpl.texi @c @c INDEX @c @node Concept Index @unnumbered Concept Index @printindex cp @node Function Index @unnumbered Function Index @printindex fn @bye queueing/doc/qn_closed_multi_cs.fig0000644000175000017500000000471513570046274017401 0ustar morenomoreno#FIG 3.2 Produced by xfig version 3.2.5b Landscape Center Metric A4 100.00 Single -2 1200 2 1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 6570 5580 180 180 6570 5580 6750 5580 1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 4770 5130 180 180 4770 5130 4950 5130 1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 6570 4680 180 180 6570 4680 6750 4680 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 0 0 1.00 60.00 120.00 6750 4590 7200 4590 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 0 0 1.00 60.00 120.00 6750 5490 7200 5490 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 5 0 0 1.00 60.00 120.00 7200 5490 7200 4140 4230 4140 4230 5040 4590 5040 2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2 0 0 1.00 60.00 120.00 4950 5220 6120 5220 2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 3 0 0 1.00 60.00 120.00 6120 5220 6120 4770 6390 4770 2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 3 0 0 1.00 60.00 120.00 6120 5220 6120 5670 6390 5670 2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2 0 0 1.00 60.00 120.00 4950 5040 5850 5040 2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 3 0 0 1.00 60.00 120.00 5850 5040 5850 4590 6390 4590 2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 3 0 0 1.00 60.00 120.00 5850 5040 5850 5490 6390 5490 2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2 0 0 1.00 60.00 120.00 6750 4770 7380 4770 2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2 0 0 1.00 60.00 120.00 6750 5670 7380 5670 2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 5 0 0 1.00 60.00 120.00 7380 4770 7380 6120 4230 6120 4230 5220 4590 5220 2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 3 0 0 1.00 60.00 120.00 5310 5220 5310 4590 4230 4590 2 1 0 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 3 0 0 1.00 60.00 120.00 5130 5040 5130 5670 4230 5670 4 0 0 50 -1 0 10 0.0000 4 105 75 6525 5625 3\001 4 0 0 50 -1 0 10 0.0000 4 105 75 4725 5175 1\001 4 0 0 50 -1 0 10 0.0000 4 105 75 6525 4725 2\001 4 0 0 50 -1 0 10 0.0000 4 105 120 6165 4950 .3\001 4 0 0 50 -1 0 10 0.0000 4 105 120 5805 4545 .7\001 4 0 0 50 -1 0 10 0.0000 4 105 120 5805 5670 .2\001 4 0 0 50 -1 0 10 0.0000 4 105 120 6075 5850 .5\001 4 0 0 50 -1 0 10 0.0000 4 105 120 5265 4545 .2\001 4 0 0 50 -1 0 10 0.0000 4 105 120 5085 5850 .1\001 4 0 0 50 -1 0 10 0.0000 4 105 450 4230 4095 Class 1\001 4 0 0 50 -1 0 10 0.0000 4 105 450 4230 6300 Class 2\001 4 0 0 50 -1 0 10 0.0000 4 105 315 4590 4905 CPU\001 4 0 0 50 -1 0 10 0.0000 4 105 210 6480 5355 I/O\001 4 0 0 50 -1 0 10 0.0000 4 105 210 6480 4455 I/O\001 4 0 0 50 -1 0 10 0.0000 4 105 165 4680 5490 PS\001 4 0 0 50 -1 0 10 0.0000 4 105 360 6390 4995 FCFS\001 4 0 0 50 -1 0 10 0.0000 4 105 360 6390 5895 FCFS\001 queueing/doc/qn_closed_multi_cs.pdf0000644000175000017500000001441213635377235017406 0ustar morenomoreno%PDF-1.7 %Çì¢ 5 0 obj <> stream xœWK5¾÷¯ð- Ò:.¿}%")IvÄM J#%{àïó¹í²kz&=ÚìËõúêéþ¢Œ&eê_ÿ=¯ËË÷I}|Z¼NÖÛ þ]¶{õþÇ…B‰:[å£Ó¢Z'Å\Q|Ô&*ç‹N))òÙiÆù¼·Fg79\2Ubhàs·‰N 6@Â)ÖRlÝŸ!ѽÝË¡a‡ã¼|Z—z2Æ«áHè˜a øDV#&*:§mƒ¡~úgBF¥hlbíâÿ,tUË ™-¬^ GoC6å+Û™)³ F{ÄHžý@ÍieÏ0ÏU;Ïm×X« ´k̽‚õÀȽÆìI«dPÆ*éÑ«¤GPLyæ¹Z%;“«ôb¹ìT®Gfï,—ŽI,¦ÌåÒU‰åÒ͉¹Ï,Ï©Þ\^¤íÂn"Ø•1!àäQ1¶]i'î U͙ҮR½ÂÈÎ}{zŠ}ñ O¬è䡆Т¹™ÖaSj£ŒQ¥ÖØvc»¿`NE=È+jBNçP[y ¾¹õêóOOªrõiá6¹zÁ`ƒœˆšÐÛ_Z *†ÔƒŒÍO/®wF|Þ’´ˇðšð ýÛÇM×öÒqʡɲib¯_½ÞîXÓ›Nz¶üpBy¼[þ÷ûtendstream endobj 6 0 obj 1258 endobj 4 0 obj <> /Contents 5 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 4 0 R ] /Count 1 >> endobj 1 0 obj <> endobj 7 0 obj <>endobj 10 0 obj <> endobj 11 0 obj <> endobj 8 0 obj <> endobj 9 0 obj <> endobj 12 0 obj <>stream xœT{PSW¾—$÷žµ,µd£¤`ÂT][-E\+Úe|Rê#BÊC_P B†$@È•ð69!°á%ˆ J VÅÖG«…j©Rºw¦­eÛ™s™‹;{Ùvf÷ïýïœó›ß÷Í÷û}ßÁ1®†ã¸o|†R–«R¦fÏÝß¡q:ȇ^Ä)¡ff"y´Èƒ¾èËm "GüQïÈô:ÒÎǸ8¾#±ñí„ØÄwV¬xw‹*§@‘.ׯZ¶:ø“‚àß+Á‘²ÜŒôìà?³,K•£”ek¢3”ŸhsƒÿC+K×f¥ªÿ÷í¿hÿ>†aþ[¢r·¥ÆHã²Þ [õ—÷ƒÃ1l ¶ ‹Ç–c›±•X¶[ƒíÄ^Çæcþû¶Ã±ŒÏãb:ì[\Ž·ûDú\æ„qƹQÜbnwˆû+o;ï>!!bˆBdõ› ¥¼ô?ðn83((AZžŽ(×åÁh°j’[’j÷ÂupmÖÎøwÊB!ã˜$d‚ÐÄ{9üø†¨àÄæÈ­ÊµP(qŽwü…¬¿CÄhÛ ÐÒÑÝ¡‘KѬ²o~ôeè@7<¨Îÿ4Í¡sQ¡4¤1BO­3f)R–SVk·  “ƒ:¾ tGÑbÞlw>1^Ñx¤j ˜ý4¯)6n¨ùè´Ü`¥šÌãe£¥äóqªñ–HXÜVä ßo÷¿t ­[ÈB÷Ð]A%ZÄ3¥GËa9,®2Öhj55¹DÄ&n‰s|ºG|=³7¯%f (T»£äîi¨YyŒ°ÕWW5BÀßÝMíå€?TÞÕYéüúöõ±‹¹§cúÄ ö¹ªÅà„]BOO×ðè©Ì°v‘z3>‘Óœ ÐE;±®Šj2MZJV}u¬qÊ ìÌÅ|òiEC±e#˜•’æ EÆð£¬iñhìu:Àém ½ý˜•@Gßè©¢ š²&¯%’p¤â¤Á©íK±K!Ù”,ÑØóœÎVG[µ¹Æl›ê̵к\mº²DÑ$]P’"ÓæQ0“U#ñ¸éõ´ŽÜñíª9‘ç <[{Ýl‰ @e…QW¤¦rJuÈUgΉ«IË ¯ýÁüfÒ¨>ú_}øDÐëÁA¯fÖ ˜8&ˆYÌìq…^‰_—³P0QZWbÙü›AÊJ6”ýfvâæ €¶“¦s'œ„—ëÏ9o¸únÂ;prçœ<è]ÝÓB èHA—ÍÖ…oí]²\šÄy”¥J#b ©>­ƒf<ÿûÏõóBþ»t+XGðƒ´•Æ"}`1ÔWëkÿtSZZmf`*< ÏÌ–g¤ÂDøWoâJ9Ø!«;R£ƒj°-ißæ°W‘_’HCœbä¼6‚/±[›š`K¥½ŒE2¸=¥ý|7ùË“øÏ™€â·FS½ð*¸:xöÖÐ`~z¯¨GÑtø¸”MÉÜ>¼4íÀ™F¯¼ö\.` ùģп¼ª%€i'áGå2½2gÏŽ¬0&;sθÊÎÂÛ“–ñúúol¬ûòÉÉòúbË&À|A2›¯CëþUï½~‘s°n>¨‰¬úµ¡éqðC=Ðÿø-§u26«±Þ| Ðÿ +«v¦#õ¿‘ –FK-®zj¯xö0iN ¨•l«Õˆ8øâpÐ/JµZ‘Ý¡>ÙÓé<Õs¸S)f¡)ÇŒˆ Î;ã­Sð*Šwð£²yšÏ>g<ã y ÐÉfb=Ô7˜?ôdi³u%"û›¶:Zë ñli’è© f0×ûnŸÀÑ÷Ï8´ -©IûØX¶×,dJ "Ÿ¿è¿¾üàÑâøDíÁ4‘"àÐG¶V üØëƒà鵨ðˆ}¡á«ÄLó1¯ˆ~“dQÙ|ÃÝŸ”=XÈÿ… )Ág°ÝÔ^r[㎃Q`MÜŽMª<›3M”}BoÓ³é5P:ù9íØÃÉNϧâóžŽëð.)VõèÚòSì€ÿôÞù޳WÞ|"¹ú^Ò½"]¤TÔº˜æÊ€‰!×mîxSv¤äêÃb%[ú(wNu–Ä=ÆAÛèoh7Ñ­k­ûy@‰ÍWR®…BFF08Sl6A34 Ë«Mµ®þ²#ƒ"D¦DÃe`EÌÆˆ¼B[›R¤pjë4¨¨"µl8÷áÔƒ®K—ÄCC­£ð!|?œ|ñ€7¶™×:·J–¼ÔAOàôœéf BÊ,k)õܵ»f"%Á$Ͼà}A ùÌ[>stream 2020-03-21T12:46:37+01:00 2020-03-21T12:46:37+01:00 fig2dev Version 3.2.6a qn_closed_multi_cs.fig endstream endobj 2 0 obj <>endobj xref 0 14 0000000000 65535 f 0000001573 00000 n 0000005790 00000 n 0000001514 00000 n 0000001363 00000 n 0000000015 00000 n 0000001343 00000 n 0000001638 00000 n 0000001739 00000 n 0000002098 00000 n 0000001679 00000 n 0000001709 00000 n 0000002393 00000 n 0000004351 00000 n trailer << /Size 14 /Root 1 0 R /Info 2 0 R /ID [] >> startxref 5977 %%EOF queueing/doc/qn_closed_multi.png0000644000175000017500000002273513635377223016740 0ustar morenomoreno‰PNG  IHDR<8 2iCCPdefault_rgb.iccH‰••gP“YÇïó<é…@B‡PC‘*%€”Z(Ò«¨@èPElˆ¸+Šˆ4EE\•"kE ‹‚tƒ,ʺqQAYpß÷?¼ÿ™{ÏoþsæÞsÏùp ˆƒeÁË{bRºÀÛÉŽÌß(ŒŸ–ÂñôtßÕ»­Ä{ºßÏù®‘iü常¼rù)‚t ìeÖÌJOYá£ËLÿÂgWX°\à2ßXáèyìKο,ú’ãëÍ]~ )úÿ†ÿsïŠT8‚ôبÈl¦OrTzV˜ ’™¶Ò —Ëô$GÅ&D~Sðÿ•ü¥Gf§¯DnrÊ&AltL:ó5204_gñÆëK!FÿÏgE_½äzØs û¾zá•tî@úÑWOm¹¯”|:îð3™ÿz¨• €è@(U  t0–À8à|AØø $ȹ`(E`8ª@-hM œà<¸®ƒÛà.L‚—@Þ‚°¢A2¤é@F²† 7È ‚B¡h( Ê€r¡PT UAuPô tºÝ„¡‡Ð84ý }„˜ÓaXÖ‡Ù0v…}áõp4œ çÀùð^¸®‡OÂðø6< á—ð"Â@”]„p$‰BÈV¤)Gê‘V¤éCî!Bdù€Â h(&Je‰rFù¡ø¨TÔVT1ª uÕêEÝC£D¨Ïh2Z­ƒ¶@óÐèhtº]ŽnD·£¯¡‡Ñ“èw †aaÌ0Θ Lf3¦sÓ†¹ŒÄL`æ°X¬ Vk…õÀ†aÓ±ØJìIì%ìvûGÄ)áŒpޏ`\.WŽkÆ]Ä á¦p xq¼:ÞïÀo—àðÝø;øIüA‚À"X| q„„ B+áaŒð†H$ª͉^ÄXâvbññqœøD%i“¸¤Ri/é8é2é!é ™LÖ Û’ƒÉéä½ä&òUòSò{1š˜žO,Bl›XµX‡ØØ+ ž¢NáP6Pr(å”3”;”Yq¼¸†8WJ)Hq¤"¥öHµJ IÍKËIÛJGJJ·IK”aÊ8ÈÄËì—é”y"‹’Õ–õ’Í’="{MvVŽ.g)Ç—+”;-÷H–×–÷–ß,L¾_~NAQÁI!E¡RáªÂ¬"CÑV1N±Lñ¢âŒMÉZ)V©Lé’Ò ¦$“ÃL`V0{™"eyegå å:åå–ŠŸJžJ›ÊU‚*[5JµLµGU¤¦¤æ®–«Ö¢öH¯ÎVQ?¤Þ§>¯ÁÒÐØ­Ñ©1Í’fñX9¬Ö˜&YÓF3U³^ó¾F‹­¯uXë®6¬m¢£]­}GÖ1Õ‰Õ9¬3¸ ½Ê|UÒªúU£º$]Žn¦n‹î¸CÏM/O¯Sš~°þ~ý>ýÏ&   ©†.†y†Ý†iñªî¯&¯v\½mu×êׯ:Æ‘ÆGŒ˜ÐLÜMv›ô˜|253˜¶šÎ˜©™…šÕ˜²élOv1û†9ÚÜÎ|›ùyó¦é§-þ²ÔµŒ·l¶œ^ÃZ¹¦aÍ„•ŠU˜U•Кij}ÔZh£lfSoóÌVÕ6¶ÑvУʼnãœä¼²3°صÛÍs-¸[¸—í{'ûBûªƒŸC•ÃSGÇhÇG‘“‰Óf§ËÎhgWçýΣ<Ÿ×Ĺ˜¹lqéu%¹ú¸V¹>sÓv¸u»Ãî.îÜÇÖª¯MZÛé—ˆÿ2Â6¢,b&Ò*²4r*Ê*ª4j:Ú*ú@ôLŒMLyÌl,7¶*öuœs\mÜ|¼Güñø¥„€„¶D\bhâ¹$jR|Ro²brvò`ŠNJAŠ0Õ"õ`ªHà*hLƒÒÖ§u¥Ó—?Åþ ÍŒ]ã™Ö™Õ™ï³ü³ÎdKd'e÷oÒÞ´gÓTŽcÎO›Q›ù›{r•swäŽoál©Û m ßÚ³Mu[þ¶ÉíNÛOì ìˆßñ[žA^iÞÛ;»óò·çOìrÚÕR V (Ým¹»öÔ±? ìY½§rÏçˆÂ[EEåE‹Åüâ[?þXñãÒÞ¨½%¦%Göaö%íÙo³ÿD©DiNéÄ÷e̲²·7¼Yn\^{ˆp(ã°Â­¢«R­r_åbULÕpµ]u[|ÍžšùÇ‡ŽØi­U¨-ªýx4öèƒ:§ºŽzúòc˜c™Çž7ø7ôýÄþ©©Q¶±¨ñÓñ¤ãÂÞ'z›Ìšššå›KZà–Œ–™“!'ïþlÿsW«nk]£­è8•qêÅ/¡¿Œœv=Ýs†}¦õ¬úÙšvZ{aÔ±©CÔÓ)ì ê<çr®§Û²»ýW½_ŸW>_}AòBÉEÂÅü‹K—r.Í]N¹<{%úÊDÏÆžÇW¯Þïõê¸æzíÆuÇëWû8}—nXÝ8Óâæ¹[ì[·Mowô›ô·ÿfò[û€é@dz;]wÍïv®¼8d3tåžý½ë÷y÷o¯ñy02*|ñ`úaÂÃ×2-<Þ>†+|"þ¤ü©üÓúßµ~oš /ŒÛ÷?óyöx‚?ñò´?'󟓟—O)M5MMŸŸqœ¹ûb݋ɗ)/f þ”ø³æ•櫳ÙþÕ/ M¾¼^ú»øÌ›ãoßöÌyÎ=}—øna¾ð½ÌûØú>|œZÈZÄ.V|ÒúÔýÙõóØRâÒÒ?B,¾”Í pHYs N NwŒ#tEXtSoftwareGPL Ghostscript 9.26Xn·(IDATxœíÝÙ–£È²@tWýÿ/ë>ÐÅ¡˜Ä înöÔ¥$Cl<‚Ï÷ûm ‚ÿ{z`-¡@B €0„a-Öú|>O¯PÝŸ§W€›,GN7ˆôóùô”&ªö«= ±­üÁ3h¦Û §6ÀòåV¾ou­Ì–ãªÿÃÉv¼ý§L¹•æ‹@YB+­~ý³,S2-è÷‚>»&À>bðww€÷Z9m*³v|àB+¡}‰ð~B €0 Äàû*³…Á‡ë??÷+›> ä&´²¹y\\÷çÆ$žSüëäãb? ¤§{ý&«YY¾i “VB+³@Íý¦U ô½€s -°©Og ÐZì÷ýkÇhÓÀ ÅÔ$´2{ªFYùwÕ[ÀVB‹Ó|þZ(ƒÆãÒhÓ‡ „V6ô›uYµ¦·pü…4Úôa =¡Å!]„lþ7™FÇ? ä&´’»´qŸ{Nk¥q-wzÄZ ½ydAƒÀB+¿­Écÿ–y²XIhå´»'myìßuä°†ÐJkkný­¾°üÁ—ÿÖä¿.O˜»òÃ@zfyÏìûýöÛ÷¹a~Ëã)vôöÿî¦Á÷×[OU–À>ÎØ~ÏÖ¸š›Ç}ëÏ—×aÓ‡Ú·€WZyå”Ð 1Ch†Ð ¡@B €0„qò@ßïW¥@B €0þ™0WW!oÓŸ8T¥@B €0„a-ÂZ„!´Ch†Ð ¡@B €0„a-ÂZ„!´Ch†Ð ¡@B €0„a-ÂZ„!´Ch†Ð ¡@B €0„a-ÂZ„!´Ch†Ð ¡@B €0„a-ÂZ„!´Ch†Ð ¡@B €0„a-ÂZ„!´Ch†Ð ¡@B €0„a-ÂZ„ñçéNðù|ž^…›|¿ß§Wá¶nöW­|PB `­ƒã_c[ -€®+d»%K¯•„d¾É»¿ÿsù/Ùà“K–^+ -€ÿ¹.«&2þsÒk™Ðhšù¸º4<º…Ï¥—èZ@u“qusZÌ¥—èZ@ioÑ7™^¢«#´€¢ÞWßïWÕ5&´€r^Wv­ÆÑõ彇ÐjdÀû`]•K.¡T.®ú&£+ÖW8… sB'Vg°Úuæœì- ¿‰Õú~¿Ë'ç&´€äúÍú Åk[u¢Kh™ ëÁ59]Í®B¡ä4¨?’%V«`n - ¡L7±–U»Å%´€ä'V§Nn - ›ô½‚“Šä–ÐR©™X­ ßWhyTN¬¬Å–Ð’XMNB¡d ±:¹sKh©O¬VâÜZ@xÉÚåSd o¡Ħcð§L¡.´€$$Ö@ÊNB¡–¦-¾H¾ Z@ùZçÓåx¡DÕµÂkA²#´ªHPl - $eÖz™6‘Ð($z±%´€x”Y[¥ÙPB  „.·B[B F™U™Ð ¡PE‚B¡D¢o°8¡@B  è=„ž^€ÍžêœkèÛõù|>:-¯&´~›{Õdûó UKDº6ÔRßï7\uº‡PhÁÜ?‡,†Ë­¸„À äÖ=„Ài"v¸Å"´Ê‰[ -€µ– ©¸IˆÐ‚»éA:âñ`H–[áŽFÏiÁæúá¾ßo—µÿmÇ=BhÁ­Æ¶,„An5¢ë!B nµü\§{³qn5¦nºÐ‚gŒ§`/4—[}t¡Ï`tsã~®äº‡Ð‚YïX50Wú÷›Œ® ¹õÎã|Ž!ïØçó‰Õâ$3Ž(»ãjB ¦i}X#bišîAøámïìÓb¾ÁäèŒ@bEB ^DP½Ðš;UýÜšûü`çÚû-˜ðóýIWü­¸è ”?‹Ð‚ªX6 œñóÁÖZ0ti™•lºÕ:–ska·NVT]wbÐQòZp«ñM{mV+on­ü!û-¸›&,®ÉÜÚWšGsø¡ÿ¸s;Üߟ֦K7Æ\ÒÌ­Õˤ—¯Þ˜Ðø¡kÙǃ)v7úFî#´à”Y¬ú ‰Û3i'€g„޽§-€»Å-t'´à?ú£ˆÞâ¿çnÖÖa+¡p·gÓ"tê -hew1ÆAB ˆ'h­ ±ŽZwxIbEïTZþ4æý+hÕø‘Dœ½[á§W$•Õ)³¸ÔϬºóÀKp´«´.7ÞI¥ÓÅ€·Mrl.¡Ei zK`«ÐG»ÐâQlm•fC -êRfQPô£]h!)¶ÖË´‰„^¦FùRÑˬFhQ–¾Áì»5’%ºÐ2HÖ4_!GÆ -*Rf¥a.Ëw¨ - ÅÖ@Ê "´€Øú5DÊfzŸþ¦HSf5B‹‚òu˜ ·êZ@.Aú²–YТeVÅ‹­Ä‰Õ- „MöÄj„IñÜJŸXТ}ƒÏ­Vâ#\hÙÌ­ÏçSä› -ªPf•R*·_0÷.´€œŠäV©Äj„Xúܪ–XТ}ƒe r+St Æ 9¶…Ü 5O[ƒô-W-¡E~Ê,2åVÁ.Á>¡”0è@ ÚUX<±š¦ùóô ÜçûýöÛýö¿C4ý⪥Ò"9}ƒ Œ„——\㢰òÁ¬ÒÊiý÷—\ã4}ÛÞOh‘™2‹oŽ.q5Gh¥ÍEWóPNˆ«eB `"ºšÓkᦚÄZ¤¥o­&£«¹ìXZâ¸$´þÑ¥ÅBz >¹ÒÏaŠ‚ê'¡u&×MïQ­Ìzù í Òkùç»ÿ? ­v¬“¿â`…÷û™^ËzBk›Ó¯g«Úäyº¦Yp‚ŸåÓŸÔÄftîéø¾C²RiͺèÕšÙ¦µ¹“„Ö„¹¸º"B–߬úžçóù˜Ðúdzc%ænöŠ.€–ÐúÏ«¦N™L/Ñ ´ÞWƒwÿ4¢ë}ƒ[é÷iM¾ºômÝàu«-O’5Õ­´ÞW}o~‡Â{(³ ½¢•Öx±ÍÜx=•\@)å*­o­T]ŸÏ'â·Ø¡V¥• ±:ƒ¼”\ú¹Î¹§˜³õˆB•V¦Äj Æ*¹(nSì˜zíà)vnV•½«]%´ú‡K¦Ý,·ZÊ,šùW8>ûVâÉUzÏÒÂ)ZY«åô ®äºÓanÓú’åøŒ£ó¦x\µòßÓÊXå9 ÁXÜ…³æû×-ëµä=kò ä¡U$±ZesKß »•=kâÊZ¥«å „­œ5±¤ ­‚‰Õªv*³8W…³&´œ¡U6±ZÕr *ØJÄ•pô`ñÄjõPOý,è¼9öηÎ&0´:Åwùøµ&ùèä ÝuÞÊ3hrÐüú³oð·Ì˲u¦o¦÷±Y`ÙdT¬_~â̆³¯‘*´t ä¾¹åÊ”{ì;À6M¥½<¡%±&åÎ-x‰Ý'WÙ)wËZ»Àìx¯¬ÄÚ!Ih©!VJ³¡ô òB›Î/‰µO’Ðê8&Ù,p‘ñ Á5Ñ5˜®—õ2„–½¾I‚Í¥ÌâtGnŠ?ÿ3ºÜlÞ-Chu4a l¸Îähõõ¹Åz†Ö§çÒ¿Òþ‡#à§³^ê‰iIÆÑµ2·œ’ëÝTiÝ`Tà2…Ói—v <}Jy {ðÄÓ~måÊ®xÄsýrÜÜÚê¹×ìŒ#‡‹\ËÎuݤë'ÿ4½õ&7M˜{i€ÙÇ›tgˆÓƒÊ Ñ‘saòTÚtU]azë³<0ËûÕPÙ Ué'Êdƒ³rÞŠ}v4_›:.xéù‰•ð“WmŸ7Øt€–=Τ­ÅÍ‘®¹=¼þ3k^©õóÛ9/‚…VãÝ3'éoÀX@c§Ca‘.nŸ×Âr.‰•ýimv¼Ú¬ÓÙ¤@ÜÄ;Þ3«oð6#ÎM£“ÝB\¾kZp<À=. ­dAÕš‹ß=ùôÀ:”q÷sZǃê%Zƒ¿q츧Œpî­4 âϼ4¸àR7Í=X‡Ü¸N¤ç´‘[WˆZ5˸ÓÙŒ@,QCëYÞ¢ ðˆ`¡õžn·d¹õž ° Xh=kE§¼|€õ„Ö6“¯z]÷Z›MvýÉ-€­=ærKt\JhíÔ¾Üküs¹p¡uÈdtÉ-€‹­È-€{­s„{0 "¡uš­¹¥ØJh­µ&cƯ…œ[”ÄØAhݪ+}‰û­ 6•G“É47P€5„Ö6˹¥ÓàRÁBë eÊÖ›[!„[a ¦`¡õ“¹ÕýP\äÏÓ+Æ÷ûíÆP, ÿ‹•Xú3X¢†Ö#cðº¿8Ú+«‚ŠZï!®nsah ºž4ît_¥Õϰ#ÖÞ[:cª3rçÂу Má§g÷òE@5×VZkæâ;« ½ûº=?yë¾ &¢ßy| |ô Ôô§ÙÒ~­¼´¦ÜtGJv©õûâ¬#dÍ¢–怲Lãô$cI6 Zß¿ºÿmÿ#\»?3ùÈúë‚úô{º¹ ûÙ^/¯–w·¸›.îš§¸{§ƒAÅqájS€Î•ÖuAåº{‡è-úúGÜ7÷àÀ¹-Î#“¾G¤ÌB»µ{ðô\1ánÑ3>úúû\Z·5.Š­Ÿr¼½ •];aî í‹&l *ÌsZkä¨$.bã d-uÃ&6W†ÐêSOL2LÈ!Ihi‹r T#îÔ“l $•Ö€Ú¢cS™¤ ­5/G.Å{È€dR…V#·z$Oª{Zíu-àŽ”’­Òji¿:6IÎÐê+ØIXê+Ç}‡5°CÚÐ*{s«NÇ PPÚÐjJæ–ÄrË9£oWY¿o‘¯9Çp ("s¥Õ´b)K®â‰Ô‘?´šì¹%±Ã1 Œ?M®•ö«uß4ÍkŽÝÄJ)Qiu’ ÍX@5µB«åVÐ謹ÄjôB åB«™ºÅ¨™¯­Äê¨ZÍTCÿþèš\C‰Õgk@zŸï÷[a Æœ(1e=.õçéxØ`Ta÷ßï‰qЩZ­wF—¸Zÿ3]ý½ÚÜ}5qЭ±qtµ.½ó·0D\t„Ö´…‡~NL/Y°‰ÐúaMz >?y/jåxzYÅ>/`ãDo>GæÚ„û×$1¡µÖÊ &ÿõgƒâ°†pV^(Qu®$óÆ>hß®ÍιTZ7¸b#k ¶Z@Îp°o}Ôi×Ð=Hri^CÃÍÎ'5ùáåûŽØB‹Ìêtšq–{Æô.ß#—^ „ù)¶Xã‘Gû—_òçÐZ@u/à7Y~½aJ¹Wã$§§%‡‹öãKâjÒ›×íA*- ¢÷GÂ;'ò~\Ñ—@•½?±:ßï7ôËÖO'´HnåT&1nñÇ©ðB“/[dM'´€*"ÆUg²äzje$´ÈO±E3•XO­Éƒè*xHÿi ¯²»ÿ…®—ê¿8¢Úè £›æ×ÕJÿ:}Ç5ûúI\vÿJã¶ÊQ` ^xTç1äOÿ›ùÎ}ËôÏ!F“¿¾þ:;N§dŒwª|œ'°o÷eM¬Nú/8V·ÒZ³³B¨ûÀr°-—ðë_9þ• Gçél´R*4èƒ6ªB½Ut Æ ^YÞÍG£}Þ#ýÉLߦs<ºRC3ІÖV'æpµ‚½èur«bhí; ‹úI©Ó¶Hn• ­Ç/ÁLð•O± ¹U.´WêÒnöøUéãÒk¡µAú£B“X)‹­Z¡•rÄêÉÝIX+´á\‚«9ËçVÝкçÈNv¸ÀËI¬NÖܪ;#ÆÕ*<o©E>׎9wÞïO£==ÏúYyœ©ó±+¤™á©n¥uÅ.ÌqL@ .>–å+¶êÞÓ(%GzÕ -×bt¼Î8eÖÉ6N­ÐÒpµ±C‚V:´ì?ŽPl嬒¸B¦MT.´2í<(ËuÆVi.ÑÊ…ÖÀÖýwúþÞ¢¢ZÎ…j*†Öî· _ý Ãš5‰~•ô6i.?K±³öÉq´W ­f{n}>Ÿëkýl+í¿º´„–s¡ ¢¡ÕLåÖd`t?Ÿ<=κ`äÖx±Ë«Á9.?¡ˆOÿyéš âϦjG\íÛ’ûք㊟!ô÷‘ ¸#¢íu§qêLvþÜWìïq?aУ ®£ .Nh ½$'^²EØÚEÝ{ZE¿‰«Òâyª8žkèÛõIóú7Z¿õãj|û9hÕ‘îA€ µÔ÷û W]…î!Z@0÷‡ÄÏaâár+.¡p¹u¡pšˆn±-€râÖ…B `­+æoc¡æ&PÞôëzŠ®ðx0$Ë­pG©ç´`èÄÓxîábéO,Þ˜ôQžß† gÂ6aÿéÞ07ùän»+ß°IwPiÁù~>¼©‹hPoµLÝt3¡ZóZjÈ\n5öÝ]\#À´K;OÖÜ6snö½­/+AWáÛ6éJB ¦-Ïç½ïw'µ>À*÷D½³…ï»W­Þ²MŽN?ì÷-êûýòÓnk}¾=sŸ1€þÆ»Ìnºš{Zð 5y—‹ë-˜µ;'Vþ¢ Ê!znu˜x¸Õß¼B n%¨ÂYs+±Ÿ[sŸìz;z¡—T(¡—T™l·99:c¡¿‹Mþ4oK q.Ï;-çÖBMþbôÛ`RiÁµU+onýü [õ·¡Ð‚ói§²šÌ-UwZ@$÷O Òvåu“’œÒ÷ûžQoX‡M„À]Ë>žùê‡ùZ{|×Ú³3IÆbîA€;Œ»ã&ǃ„Lж~rfä ßåAB ànÏÞÐ =ÜQh< b`¼Ð ¡ÄãVÐqAK=¡PHô¼÷œÀc‚–;7ëùÓØj@ÝüèÏ>œ»ÞÜP½(ëÿ6*-€;¼áÍÅ¡»·„À…âÆÃ;ˆÓÅ@ô17˱¹„Xކøf¡‹?¡ÄºÙ}DštZ@lišã{DÏ{¡„½ñ½S‚Aƒ¡„§ØªChQ%¨n©Ìj„ƒb«¡–£z¸N²2«iCëó×Ó+°™gç¤Ü ¦qò0 m§ŸXÑ·Iýuáõµ”åÅV™k@hÈ­"„D²’b·ÄeV#´€”Ê[¹«Z@&Å; Ó'V#´€dÊæV…Äj„OÁÜ*’XÐR*•[é¿`ŸÐr*’[ƒ+w™Õ- ±Anå‹®:½‚¡d6hÊÓäÖ ƒs'V‚ÜÿkþV”¹¿3PV¾Ü|…R­·J Èop]:·*'Vc–w Žï÷ÛµøíÄjñ‹ÇUK¥2î* Qu׳fb5*- š¶¹ïgÀ›«®ÉL}çªÞCh…ˆ®qb½jõ!´€ºúw¹Z/‰.q5Gh¥K®æ¹èÒø“ÐXŠ®þ.27D\ -€ÿLFW«ûáYA²Ÿ§$6»ñVŸ¿šv'³ l ƒ¯ù|>GZËãYå]‘¹4æ^á¸üVâZüSJ«……LÓX }U ˆ~û¾rRö…–ðÄxÛ½¨ñ/ÎesJý¯¯Ò*”_ ÅÊãaЮä`5æÊÊô Äêê'Á›`M ¾yýO$´€Ò ¶û¡ -€ÿy[nýdñxïåÍ„PÝ›Ûý7¯Û# Äøá稿#OPyúj¡ð®GneWáäè¾õÝŒƒ¿µ;«Š„œîA€éÿûýþL‚ÉÄÚ½;–ó¶›pWZKöÒ¦i¢ŽOiQ¤ÌjÚÐêÏEÀV»Ûσ…ZÁvÛ=-€Œ«¥ÛºÓ—Yý/¨{à›êžã‰uâí´@„À~ãAƒk¢«?çች¡°jbø9ãÏÿŒ®ãsG•zIŸÐ8jr´úúÜÚªlb5B  ïHŒ£kenm½V6±¡päÆÒY/c\?ûFåÄj„PÜ‘»YsÖ/gÓÍ­5‰•þÉ-¡ÔuEbm]ÚÊÜZ™Xéë0 âáôa›*žï÷»üùö_ÓWQk- •AËÞO”ÉFÿÒ·ÝàzŸòœO?áÓו@b[‹›# \3ðoýg^©uú—ŠNhðjýúÓÈ*‚0z€0„a-ÂZ„!´Ch†Ð ¡@B €0„aüiþÖéÑ•€%^MÀ«õ *݃„!´Ch†Ð Œb Þë|ðuÔ?—öÎE­_Ú;µfiï\Ôú¥½sQk–öÎE­_Ú;µfiï\Ôú¥½sQk–v|Q*-ÂZ„ññ@1Q¨´Ch†Ð ¡@B €0„a-ÂZ„!´Ch±Öú™..òç÷GHa9rºÙ¼>ŸföJTs_Çdf…ÐÊoù3í¿N¶æm€¥É­…/2ˆj൜«™­AZÿ“ãuÿ÷h…q†ÅývP‡J+­åÈTQµ_m°ÚÿMü­!%1øOî:cîÛ%¾) ­œ6•Y;> ð¡•оÄÊêç ›Z$'“ 1øÇ¾&~ònÐÊÁŠ?ÅÃU@Ghesóh‚ÉÑðݳ_ !4ù¸ØÁ$áýt²ßÜó[ ÏBM†Ðòò¯Îƒ!¡•Y ÒaÓª^ñ½m+¨Lhñ€MÅÍ¥•2 bZì÷ýkÇïnšEéê)—”Y…ÐÊì©2båß}¼Þºçžp"¡Åi>-ÄÀxàBmúð> bZÙ<Ò wYµ¦·prùõc]^G -é"dëð¿… ùðJ ‚ZÉÝ3ôn_ŒÓh¹«ð¬GŒ%Ä%´zs‹üø A‰¡ ­ü¶V$WŒý[vÛ“ÅkË“[ðfB+§Ý=iO"7äÖÊÄR‡Á›™07­ï÷ÛϪŸÍñÖñý徜‘“k²0aî)£0º9|·þ"ð*B+³qn53ƒÈ»Ï²£·pg ¯ðš¿µõò ÒÐRÂÏV{k\ÍÍã¾õçËë°éÃs6%–Ó^NhUdú" (¡@FÆÿ¥q÷»ÆQUIEND®B`‚queueing/doc/qn_web_model.png0000644000175000017500000002623313635377223016207 0ustar morenomoreno‰PNG  IHDR¶åN÷¿ 2iCCPdefault_rgb.iccH‰••gP“YÇïó<é…@B‡PC‘*%€”Z(Ò«¨@èPElˆ¸+Šˆ4EE\•"kE ‹‚tƒ,ʺqQAYpß÷?¼ÿ™{ÏoþsæÞsÏùp ˆƒeÁË{bRºÀÛÉŽÌß(ŒŸ–ÂñôtßÕ»­Ä{ºßÏù®‘iü常¼rù)‚t ìeÖÌJOYá£ËLÿÂgWX°\à2ßXáèyìKο,ú’ãëÍ]~ )úÿ†ÿsïŠT8‚ôبÈl¦OrTzV˜ ’™¶Ò —Ëô$GÅ&D~Sðÿ•ü¥Gf§¯DnrÊ&AltL:ó5204_gñÆëK!FÿÏgE_½äzØs û¾zá•tî@úÑWOm¹¯”|:îð3™ÿz¨• €è@(U  t0–À8à|AØø $ȹ`(E`8ª@-hM œà<¸®ƒÛà.L‚—@Þ‚°¢A2¤é@F²† 7È ‚B¡h( Ê€r¡PT UAuPô tºÝ„¡‡Ð84ý }„˜ÓaXÖ‡Ù0v…}áõp4œ çÀùð^¸®‡OÂðø6< á—ð"Â@”]„p$‰BÈV¤)Gê‘V¤éCî!Bdù€Â h(&Je‰rFù¡ø¨TÔVT1ª uÕêEÝC£D¨Ïh2Z­ƒ¶@óÐèhtº]ŽnD·£¯¡‡Ñ“èw †aaÌ0Θ Lf3¦sÓ†¹ŒÄL`æ°X¬ Vk…õÀ†aÓ±ØJìIì%ìvûGÄ)áŒpޏ`\.WŽkÆ]Ä á¦p xq¼:ÞïÀo—àðÝø;øIüA‚À"X| q„„ B+áaŒð†H$ª͉^ÄXâvbññqœøD%i“¸¤Ri/é8é2é!é ™LÖ Û’ƒÉéä½ä&òUòSò{1š˜žO,Bl›XµX‡ØØ+ ž¢NáP6Pr(å”3”;”Yq¼¸†8WJ)Hq¤"¥öHµJ IÍKËIÛJGJJ·IK”aÊ8ÈÄËì—é”y"‹’Õ–õ’Í’="{MvVŽ.g)Ç—+”;-÷H–×–÷–ß,L¾_~NAQÁI!E¡RáªÂ¬"CÑV1N±Lñ¢âŒMÉZ)V©Lé’Ò ¦$“ÃL`V0{™"eyegå å:åå–ŠŸJžJ›ÊU‚*[5JµLµGU¤¦¤æ®–«Ö¢öH¯ÎVQ?¤Þ§>¯ÁÒÐØ­Ñ©1Í’fñX9¬Ö˜&YÓF3U³^ó¾F‹­¯uXë®6¬m¢£]­}GÖ1Õ‰Õ9¬3¸ ½Ê|UÒªúU£º$]Žn¦n‹î¸CÏM/O¯Sš~°þ~ý>ýÏ&   ©†.†y†Ý†iñªî¯&¯v\½mu×êׯ:Æ‘ÆGŒ˜ÐLÜMv›ô˜|253˜¶šÎ˜©™…šÕ˜²élOv1û†9ÚÜÎ|›ùyó¦é§-þ²ÔµŒ·l¶œ^ÃZ¹¦aÍ„•ŠU˜U•Кij}ÔZh£lfSoóÌVÕ6¶ÑvУʼnãœä¼²3°صÛÍs-¸[¸—í{'ûBûªƒŸC•ÃSGÇhÇG‘“‰Óf§ËÎhgWçýΣ<Ÿ×Ĺ˜¹lqéu%¹ú¸V¹>sÓv¸u»Ãî.îÜÇÖª¯MZÛé—ˆÿ2Â6¢,b&Ò*²4r*Ê*ª4j:Ú*ú@ôLŒMLyÌl,7¶*öuœs\mÜ|¼Güñø¥„€„¶D\bhâ¹$jR|Ro²brvò`ŠNJAŠ0Õ"õ`ªHà*hLƒÒÖ§u¥Ó—?Åþ ÍŒ]ã™Ö™Õ™ï³ü³ÎdKd'e÷oÒÞ´gÓTŽcÎO›Q›ù›{r•swäŽoál©Û m ßÚ³Mu[þ¶ÉíNÛOì ìˆßñ[žA^iÞÛ;»óò·çOìrÚÕR V (Ým¹»öÔ±? ìY½§rÏçˆÂ[EEåE‹Åüâ[?þXñãÒÞ¨½%¦%Göaö%íÙo³ÿD©DiNéÄ÷e̲²·7¼Yn\^{ˆp(ã°Â­¢«R­r_åbULÕpµ]u[|ÍžšùÇ‡ŽØi­U¨-ªýx4öèƒ:§ºŽzúòc˜c™Çž7ø7ôýÄþ©©Q¶±¨ñÓñ¤ãÂÞ'z›Ìšššå›KZà–Œ–™“!'ïþlÿsW«nk]£­è8•qêÅ/¡¿Œœv=Ýs†}¦õ¬úÙšvZ{aÔ±©CÔÓ)ì ê<çr®§Û²»ýW½_ŸW>_}AòBÉEÂÅü‹K—r.Í]N¹<{%úÊDÏÆžÇW¯Þïõê¸æzíÆuÇëWû8}—nXÝ8Óâæ¹[ì[·Mowô›ô·ÿfò[û€é@dz;]wÍïv®¼8d3tåžý½ë÷y÷o¯ñy02*|ñ`úaÂÃ×2-<Þ>†+|"þ¤ü©üÓúßµ~oš /ŒÛ÷?óyöx‚?ñò´?'󟓟—O)M5MMŸŸqœ¹ûb݋ɗ)/f þ”ø³æ•櫳ÙþÕ/ M¾¼^ú»øÌ›ãoßöÌyÎ=}—øna¾ð½ÌûØú>|œZÈZÄ.V|ÒúÔýÙõóØRâÒÒ?B,¾”Í pHYs N NwŒ#tEXtSoftwareGPL Ghostscript 9.26Xn· IDATxœíÝÙ–›º@û®üÿ/û>8á0Y«ž’n0Ö°‘eñþ|>/àŸÿ•>¨‹ˆ "2,ˆÈ° "À‚ˆ JŸP»÷ûÝôêï÷{õ“ïËiýu1šmIÞ éû{8¤ºÑ Eùvxí6ÛóŸwáí¾.†µ[€Óø=~~öÜT7ú "!S×b[È÷­G†uX%SixƒË¡Vu£3æ"?Å|,[­ðÉë­éÕ¯AÜÝ ÎþöÕþˆÈ@”¦ãò/]¾(8LÉEÔs&CDöuÿÙhÇ/ ’ï„¡Vu£9"2ðS½Z ›ïãBØå¤{¡‚¨ntâoÀÏçóíöÂË6­¾E´ê)ß ŠÜþòi¿N.8³8À¯“y-¿¾nuÿ¸¿ö³»+º7¯9uv}·›%ÿZu»Ü¯†~ˆÈÀŽS=ëjãÝÞkÞkžÝ>‰Èy#Ûã¾ßïÀÉïþdþB¶GÜ .IŽûÚ{™&€rJ’?Më~É¿PÝ’—î™hì›÷nãûÛUg3ýdþ«y7vjû$/aÚg`·1¿Zü·OÝ}Eá}F¦Ø³Ç ~yÿóýï…bs¶º½Ò•üSÕ-áq雈 ¬Ý̦g»G»œÝ.-rü5rÿ»ÿØDÏp\Fö«R¯’ñMñÕí•«äÿ Vã8d¢°#Ð\˜ñ‰›Í|yû˜¾–å¯=‡‡—N̯Ox_?ÆÛRwû'zt~•_EñZŽœï3¦º½Ò•üSÕ-áq阈 D ô@­X½„ÝŽð‰®1¦ÇM~Ü;‡‘}}% ¦º½ž)ù‘÷áiKL´¦1¤­Õ6-ŠŸ’øÄá^ÏPe~t)Uí¾ºÑ7£ÈÀZx–EÎ3yB‘áðœ]õvôîeÌŒ«nÝî«3Š ü§ƒü~!Þ¤=®ïÝóʸˆïåêvø·Ï馭ã9"2°pmY†´;¿¼ýü“w÷_òµÁ­Ë/d”žóÐPñ…}Þ¯n׎K—Dd௘Ža„±É‡:ÈÃÝ&9îv'#¼el¥BÎP~JÅkQ˜0¸(¾ƒ9;ö×ögp=µñjüi{Ü;CÚÛCd8.cšW“œÃ¨gÿê¡’®nÏ—þøºðz%PYõ1‡ù8rûk Qín V$[¯™ü¸¾®×«mÙžžkîo¿ËÕíþ¡/+u\êçn F·Û_žZlõ¤€íÄÄðÞ.l¿{Ûí·08<Êîöa§ÈSŠÉ©IŽ{íôhBä}l’o£^Çg«ÛîŸÜ¬q‘·…OÔtz""i\ˆ°§¶€lÌE€DdX‘`AD€+ZwÝ_U-¼=d&"À‚‰° "À‚ˆ "2,ˆÈ° "À‚ˆ "2,ˆÈ° "ÀŸÒ'´çý~—>Rú|>¥Oah*TgT¨>¼½‘@ ½øô9©S#P§Ú%"tä£Ñ/Ÿv|L«÷Ý×Ë.“yiKÛdøÏ¼;×8ðR$îqõXQ$bøKÛÍ–’„ËÈ×¼$øp¦r"2°¦;g—ý—‹]ØVˆÈÀë5ëÎ5߬÷ºÀg2LEB…ª™ˆ h¦9 ä]æÒ¦ù­–ˆ £3ÜÅ)zôC.‡4¶õ‘¿4Ù(¸h˜nQ9€(zô¦õCDdàõÒd§á­™ˆ C3Pœ¦¸B"2± z…™eÝøSúhÏûý–Ódñ¡bsêê)ºÄ‘a\F¼€v]¾©¨j¥ËÏçó=·µ‘€f¤n7RÀ/"2”×wDK’kíäÂ¥Ûîêû“¾ßN‘€ªí†ã;qö×"ß‚2¨Ô6§Í¯»YYPæ%"z:ïî\Pfb]d .™óqà(ƒ,ÆÇ–ˆ Td•J?ŸOΡÜíá¤ä1‰È@-V‹—šç°:´”< (ïý~WõPÕ9¬Nî‰È@aÛÉ¥ÎdŤ‹a‰È@EêÉÇ_µyˆÈ@IµÍ¯Ø2/y@"2PLýùøKJˆ ”ÑJ>þ’’‡""´•¿¤äqˆÈ@I­ä㯶ΖËDd ·i¶ÅÄ9³äŽ‰È° "Y5=„üe ¹{"2O™²¿WÄKDŠhwù«õó'LD2)2àú~¿Ÿ>®äþˆÈ@nÙ†` ¯’;&"}2¸Ëe"2UOƒ¯–¶è•ˆ tèý~÷”ÅÉLDzcL—›Dd Ÿ #»ß|œmÙXu—Dd 7Eb«¡ëžˆÈ@?LA& è„q\R‘€~B& ÈäÑüZpŠ…\Þhž)¤%"m˼ÊÛá™Ðh^ ù˜žˆÈ@à Üò„?¥Oà¢)åù†œ9dDdX0ÑhÕᔉi~EžÉ¦ptÃ(2,ˆÈ@&½®>Ñë뙈 "2,ˆÈ°`E Ÿ÷ûsÙ‡ ÇʼhyE€Dd «.—H3Ë¢3"2ÀE]Æ}^"2¬ˆÈ@&Ól„>_­eÑ1¬‹ \ÑÇPŒ<ƒC«ëiDŠŽ}>Ÿoϼ@rr†û&"dsw±ÝF “ˆ ÃÍqwãUô¤ƒdU²{"2pE÷½Bª™$áý„/ãîßê˜éL‹)yœ™f#‘ñ«Oó-·{ûþ¤¹l_Ó@rÓTÀŽ‰È‰ívü7»Ò_Ke Êt ­ä’=1Dd€d2|Ín7+ Ê´h>ÜJJž×»&N˜Ë¬‹ ÀûýÞ.ÜöhºÝÿö ráÙDµ‘‡""Ü•9‡U΀¹VR²|<à–žú!%Ó´úS²|< àºUÇY°ï\½Îœ¿Ô\zåã1‰ÈUØqÖœ3 ¬ÎÒ[a5'àŠj;Î:sÄX•Þ²xuUUs2‘N«¼ã”’iW%ëkøŽe‰ÈçTž¿¤dÚUv5ÃݳzˆÈ'4‘¿¤dÚUdÙïü«›S3 VCùøKJ¦iÙ‚òîn›¨ã<ǨNk¨ïlñ¿07/Ã_Óo–ç_i[5á%"D2 ¥|3ë¶^Ëʺ,3("‡o#o%“|“êöw»ÃÉô¢ÔvH¢¹)s’›àìÐTtYùæža2PDÞFáy•ÿvw³k5*y#¸=™âkIBÇíJ·UC»YùÚ~`k ˆüU¼ŸH{»a=<.œÕYm2L7Î.¢¬äo¸ˆŸ_k¨fáS-~3ý©¡â_¦M¨\Ó¥«®! ½è[¸·è£/éãU@A]V¢._@B#Ž"‡‡RZêZ AB På\vJ›ièQäËjû(Çú5Ш@å}(˦úž@ßFEž må—Zή wg¹Ë 9Åtµ2Ýü¿á‡×–´»yܯrx¢n‹÷öùJ>@ƒFäÀ§wfYlû³ïúk¿:¹Ý½]î#—¢;<ÉÃõ&çWo{¸_×öþq¡'–£¨™‰C›ñ£¼>0ý,Åìêðd‹"Çüj{2Û3<ü¬6~!žSÇ…žü*Û×ZƒûÇ`2nDÞí$.¬ça"áSŠù«˜) ¯«'¹›Œ~ ?}\xN¯%Ðp5À/ƒN´¸æ°; •žêeÏn¿ý|ö×Rd`²Ê£Ç…–yKO”%"¿^ËîjwD6ðÛ¹û9ïf¿¸úóÝn8y ¸B0LT€Ê;Ñâu4_6~6mUržvøvúÐe‘îòE$4tDÞºðU¼ åïüÚº>Ч«³Ê °KDþk·ŸØ]éìN®¹y¬ðbÏÏé=1ÄS_Ê="gpMÞá=ñmž ;Ü.Ó–ç¸0Ó!J="Ï%éšH{OœdÌ>›¸8PœšPœˆ|àÂZÛGÈÆ¯ž]BøTWšê$íöÂsîú¦^dÑ·3ÊÇÓ_?)¹Ôœ9æ’<‡€›Dä¿’,iüŠ{`õÊãŸn}ö Cw;Ð{áÄ*9.´H±(ND~½’>$rã$]`ä$³G¿pnI^µXæTÂ\d€*ÈÇõ‘Ê“ª""&ÔFD()&[) 3 ˜È|lŒ 3+Z”ñkñGŠ3Š òP„-›Œcž.02 ·ËŽ -r“z*gà€é£‘Æb"2À!DdX‘Žu3Ù, €"2@”nR2‡Dd€žF[ !D².ò±A†Žžî2—QoM+Þïw»Åu¦¬]ƒ¼AúZ!"óˆSmýjc­µù|>=ÅUŒžÄ×M} §ˆÈ¤”$FÌw¢ £6$÷ñA_C"ò±¾kNò†f+òîîÄÔI*ÑÍ@²ªT­¾ß} Í‘¹k·¹¹ÐÊÌÿd»ÏF‡îèRs¥±pÏàô5d&"sݶqIÕ²Lû™âûo¥Ì’êG}šLëô5!"sÅs Öîn5^T¢¹”,Ó4} Y™Ó¶_ ~ºÙÂÇ”þ”¶*ò1MÓ×P–QdN(»bÎê.ß->¥41–,Ó.} 50ŠL¬JV”t‹O *K®ð” ’¾†JˆÈD©¤ÍÚ=º–‹âª*„UÕV8¥ªÒ«¯œˆÌ±Õ'¶5ô¸«ÓÐr‘_…°ÂÚ ‘*,½uVsò‘9PóŒF-Å­ aÙrXsm…°šK¯¾fL]Eä÷LéséDÍmÖ×P-—â]§>]Œ:kkmtõ¨¿ôÕ×ðÕíŠõ×·úµr ›X^à¾í‚_½¾Þ¶¬Oó+ðÙŽí›:UP+¾†I·y®•êW•¶.Ú-×*„MÚz§:–ÿÑÂñCÔ©œÚºÚ#ô5LºŠÈ1Ÿƒ´UkÐÊUú• {rXÂïâòeá8 ]FUZ¹¼#ô5|u‘ç´}w´^ÿG¸¹—k¶íD§ÿÞy/~ULïï}ºŒ"ô5Ô¬Ûˆ<§í;¥ÝK1ìG`âr…¶ÃÉ_gß‹p†ðn>A—‘G»×pؾf4^í߯%×n½M«Å×3awp©.…KcªDi‹e%uSørnª¤<ŸòÐt e©ŸÏgˆQä;F»Aì©~ŽöÞQ³$+F)ÏtC_CýDäé£ÒK»/Ùw)"¹P¥D®£Ün–:uA»åÜÛݽEDn·¤FŠ)ÍÛ‹Ðýe™$ùFQ ¦–kº½iýE:,á ¯Ã —4ƒv¯d»géZ—Á¡Žûšû;¼¿î˜×úþG‘µqô-g,†îé2º7æ'Ã\ÐgDÖÆ]ó¶>óǒßÜWE,†„t9eèkr®Ów_3¸®"²ÜP?3·.S¼!-u è*"ïÒÆUB8~‚â i©S­³”8©ô‘ÕËž»táb:bOŸM/§ƒ×UQ§ò{úšç|O;ëk˜t‘Mú¦„CB*T¯¼³$ñ¿Ò'€}$$"óŸþî¼óÏî ìé¾&ƒ¯¯éRW-€1Íãi7O'¡ £È@ŸÞï·‘]®‘€ž Ê\`¢õúiÔ´ÅeXZô+s˯¯éQd 7ŸÏ§lh¦u"2Чü)YÌ(4[êu!O‘€žIÉ\ "À‚ˆ "2,ˆÈŒÂ\4ž¦¯é†ˆ "2³Ö@=ʶÉÏ ñêkú#"ó—ê @—tp\ð§ô \7OÀqb³„9Å(2Ÿ­ ­mÏòý‰|ÌYF‘ÉáWž~þtã¥qèÕçó™÷2«GûÏ5"2ÿy¿ß5%¥Z(Õµy¢¯™vXdÌ8Ûp9‰È@'„TRé*"ûl…Ž)Þ–:t‘W"¿âÊÜss-òëû“/ÅÒR§rÒ×P¿®"òjÂþœ¶Ö}Ëín W¼á]ÐUD~-Û2mß5}ÜÜ÷úE½Ã®xC<]FAú*×[DžÓöPiZÇo«¸ é2òÐ×Њž#òœ¶ï”Öoî»lÃÄeHH—‘‡¾†šU‘ã‹Úaº_jÇlûú»¹_­”¿}@‘‚š¶Ì'y—;+*µ ßýRb^BÎZ¿·´5ýìÆtÜ×ÜtxYª­™kzEä"ú«¨©´{sïËÅTëZk3æ;ƒè ¯¡W£Gä@o´ÒÞäžaÞël^gw€Õ ¬9ÃVOíÊØ«÷¼˜öý6'ùL°?»ï~»E¢Ý3¿ïB ùrºqÞWu3?N±¹ð©÷8ç,}M¶½qÇü½è|Y,¾©­Àº“ˆ§„Wk÷­¹ü^fÕ·UIë—d2(gµUŒìkÆÔaDî›¶ÐJË5Î|M%¼rÛ7(áÛ±›•¿ÿö¦_&—¢¯¡f]Eäp3§(ŸÒVË5B›¥¯ß£áxwÏ‚òºŒèk¨V™ˆœmÚ|G+_§¹ÍíõÖlUYò¼5»AY©¸Ì¥+¢•¾fNQÉ£ì,í®F‘¿Ü'TÛï6×°^6õ"u¾ƒ+{Ÿ¶ ÊÊÉ).TUª-½ãô5LþWúRú|>Ö«¦­¾z\[QdÜ® %¼B«zQð úµ\ ¿¨Põ¨¼ôŽÖ×ðÕUDæ Õ¶\Ú,Š«­V[[áPµ¥·¶jN6"2Ç*l¹VãvÚ,ò«³ã\U‡j+Dª¼¯yUSÍÉCD&JUýn%Ÿk3²ÊoÒê©­pJÍ}MmÕœ§‰ÈœP|jr=ó>Y…°žœgék¨ˆÌ9ÛÂò4^Ûi³(®òB(%Ó.} Åu¸èOËüÌ‚œc€CmeÍWœ…/} e‰È\ô«ñz%jVvûu e5ýÙkµ«›C€¾†RDdnÙ£ºÓ~ýñÒ`Q\£ù¸­ü®l}͵½Ñ%™»¦Ö$Ð~­¶ lØ?T¢¹2iºÐ×™ˆ|L×)Ð~…ÞÔ íg»ùM)Ù@rµô5‘ô5ä!"“Þaûó· ¯áQe"²¢9ˆím1ZÔúò—dz¥¯éUÙ7Î(ò1U+!“ætùñ·”\!ïHB.&÷‰ÈQ²­ÆúÜá|o ’§ë¬²,@A"2À±'Æt§G…Ím7HëÎ7œÆ!"³MÞæPÔ@D( ð…9) 8àÀCßœK¾Ï³‡6×àDd€J™qPŠˆ ’?§N+]ò1 ©ªôÖ\ÍÉ@D¸¢ÎOc=w—vUXzë¬æä!"\T[÷Ya€HÕ–ÞÚª9ÙˆÈ×Õ3g±øôM¸¬òÒ[O5''லs«š¾ wÔ\zk>7žPf]då èÌj½ä<+ªf^8žÐâ lCÏ×lZÙ‹l ÝUêþ·{®ðãi8ÔÖ ¦[ ÅÓõRúõŒ®WаÛ+×,`W[ùøkþy‘±ä¾‰ÈémƒòëFVþ5^¥{¦m•äFŸBÏY"2p…"ÆnPÞýɵ=C»~º’ß”’ $wLDxÖÔƒJÆðÕÓ=¶”Ü+ “kÏ ÐûÒ±v‹·éÝ‘+ÚíØêá2¦þ’¥ä.Yô ( s¬|ÿ“j‡bqߌ"™äBÎó½@Éý‘€Ü2Ê áØŒäŽ‰È@WZ|( µ)‘›^ ¸ãé9Ž2±FòsÊÆE_×:aÚ©ˆÈ@̯ !È'CxÍœ>A“zˆÈ@óÄSÒ‘€¶™bAr}z³T9Å(2Iž'†ìNºxt&†üÝ£È@?¶iu Ç–.&žQd a‡‘ç?ô­>"‰È@ç² ‹àÝ‘€H±Ä‘`¡Ì×õL–  l\4Š 4̸O‘`ADò訳!ínˆÈ@'¬VA*"2ÉC¶øØ­hÞhÞ”’wÓêôÃâašVˆÈ@W~éÊÇÄ+³.2@ZßüÍÇÛ”,sŠˆ äó~¿ó¬)ñô&fqtÉD  C+wˆÈ°Pf¢…$`XÙ¦@d Ò<§ìµ5Š "2,ˆÈ@&á|4Ç,‹Ž‰È@}¤dz%"ùt3àj¹o"2PF»Éíž9‘Dd «ž†]{z-̉È@1-ǶxΜ%"¹Í_ÛJœó³5„Ü1( Ý”ü%÷MDˆÒb”ç(£­dS,†ò§ÈQ,àõz}>Ÿ)z¾ßïj‚|œ_Ùël(©þ±dùx@"2PXÍ)Y>“ˆ ”·JÉ5åÕiÈÇC‘€*¬2hÙ”¼:º|<¨Å6%çÊÛƒÊÇ‘€Š|>Ÿ‚ÃÉÛp,IDª“8Ùà1seÖEû&Ôylýþ;yr݆oá¨×¯ <ÿí¿Æ¤…c¾Dd vÛ ü5ý$2ÚfkÇ̉ÈP^ Ë×oJ±¬|yŸ0W&"Ÿ½çžðù|ôÊ@‹YùìÊ’ˆÊ^£ÈÀëý~kÅ/§•ã€XF¼Âî|2ã’&á2’Šu‘«æCp€i½¡uF‘n"çó¨æw½5¬VÕ©Ü4èe®@f>–©™ˆüˆðãy¦D²û‡=}ƒ*ðB2hN7MÀ!-[=¾r÷Ùî¾ÞGvœßï¾dÝmm¼#Dê£zÈý•„R99¥Ãp<×w3=#tþ2¯ ExSˆ¡;¿ÀE#†F¸N"rI}׊ðHù—þ£6Þv%yÞï8\"™…\?9™k]ˆºA Ü·I“Ét ”Š&ˆÈib™;ü*žKT!o ¿èÎorùEÃ[3™ôÔùÖéÑ™¸ÿ¿Ì‡3ì2Å¢}+ïZ%Ùmp»:µ>±ÅŒÇ4_pЪ|¼äãÛÔ)VÜ,5DDN s‰ß½ ?ýaZ_bw?w6¾I‡Q›Uþò L_žœ”<²ð¨P™‰¿ÊåЯh_ 9tò¤"]oÍòÜQ³Õúî/Ýù Û ¥N H…º¦l\49±†Êý©S}âu5t­F£SÙ¶/WUoÚ^Cjn8Û%"âT‹ühó­oh‚N}@úòG¹óΦ™‹Ü˜;µk; .üõ¾ø/ÐL4a>5ùåË[=òÝÜœ¾WUê›:Õ 9±R߯ˆ8uzO¼ßkζSÿ2Ö15ôQ«;ω:Õ+ªQ"rÛæßÞ Ü¹n-O‡ŽßøE‹<*lêf6*ÔT¨Ö‰È âésN…×íþüÔÆ§X𨞆ÐU²,ª3*TODäö\{0ÏîÇå¿2ë©#ÉÇýñ†BB*TÅŠéåYâZczj™‚„kÈÇ@CDä4jÎÛ\{ê9ÕæW£‘qv´5~=ŠK§³#ÛsCbò±x@UÊDä÷?EŽþËsJ ²fHÉ‘ùØ3°R6.úº^JÛÓÂáïìJóý¯v.@»gòëONm>èµ?(KDN,r]áð·î.Ì»X¥çÀη's¬³KÆ@»DäôÂ]m¶x†Ùwûí¢Å‡€„÷øÛSGþù/fYµ‘Ÿ²›Pãàqß³?¿¿ñ£;(EDÎDjh…Eß`AD€DdX‘`AD€…Ú}‹|EÌ’jùw³·:w¿·:w³·:w¿·îw³·:w¿·:w³·:w¿·:w³·:w¿·:w³·:w¿·:w¹·RŒ"ÀB™QäšoÜûóùLãá’+cšGb-`AD€DdX‘`AD€]uo³ÚIDATDdX‘`AD€DdX‘`AD€DdX‘`AD€DdX‘`AD€DdX‘`AD€DdX‘`AD€DdX‘`AD€…?óÿ¼ßïRç•0Š "2,¼?ŸOés€ŠE€DdX‘`AD€DdX‘`AD€¹jï÷»ô) çOéèY8àNþ~¿ï8_šgž•‘±Š¹«PøýínþÆåþRr¯蘈œX8ϸ›¿¿ê)%wóB€qˆÈ)Íãàát‚žrpÀ|>IÙ3ˆäëz%™• P!9™SCȶ 9kù€ ‰È°àëzå]u,ˆ¿ý¯?9µ1@gDä2¯Õ0nûÀ‘ÕSHV¿Ý]žùæÆý1Ñ¢1»ùø\[íÔ3í<@DN¬¡pyêTz]7‰È£85S´ `d"rc>ÿ\øÛmð=õõ>ÉÀ DäÄJ¿F×X2À!¹mïC¼Ûµ)Ù÷ÔÆ]‘(2aJÆ1ó.¶²ï©ú#"·g ¬g—¤ØÍ¾÷7茈œÞ£Qò׺ȑ¶Ù7<éÂD€‰ÈiÔ¼Úƒ…,N‘qv´õ‰õ(Â<7à9™ËsÂëQŸÏ. @node Markov Chains @chapter Markov Chains @menu * Discrete-Time Markov Chains:: * Continuous-Time Markov Chains:: @end menu @node Discrete-Time Markov Chains @section Discrete-Time Markov Chains Let @math{X_0, X_1, @dots{}, X_n, @dots{} } be a sequence of random variables defined over the discrete state space @math{1, 2, @dots{}}. The sequence @math{X_0, X_1, @dots{}, X_n, @dots{}} is a @emph{stochastic process} with discrete time @math{0, 1, 2, @dots{}}. A @emph{Markov chain} is a stochastic process @math{@{X_n, n=0, 1, @dots{}@}} which satisfies the following Markov property: @iftex @tex $$\eqalign{P\left(X_{n+1} = x_{n+1}\ |\ X_n = x_n, X_{n-1} = x_{n-1}, \ldots, X_0 = x_0 \right) \cr & = P\left(X_{n+1} = x_{n+1}\ |\ X_n = x_n\right)}$$ @end tex @end iftex @ifnottex @math{P(X_{n+1} = x_{n+1} | X_n = x_n, X_{n-1} = x_{n-1}, @dots{}, X_0 = x_0) = P(X_{n+1} = x_{n+1} | X_n = x_n)} @end ifnottex @noindent which basically means that the probability that the system is in a particular state at time @math{n+1} only depends on the state the system was at time @math{n}. The evolution of a Markov chain with finite state space @math{@{1, @dots{}, N@}} can be fully described by a stochastic matrix @math{{\bf P}(n) = [ P_{i,j}(n) ]} where @math{P_{i, j}(n) = P( X_{n+1} = j\ |\ X_n = i )}. If the Markov chain is homogeneous (that is, the transition probability matrix @math{{\bf P}(n)} is time-independent), we can write @math{{\bf P} = [P_{i, j}]}, where @math{P_{i, j} = P( X_{n+1} = j\ |\ X_n = i )} for all @math{n=0, 1, @dots{}}. @cindex stochastic matrix The transition probability matrix @math{\bf P} must be a @emph{stochastic matrix}, meaning that it must satisfy the following two properties: @enumerate @item @math{P_{i, j} @geq{} 0} for all @math{1 @leq{} i, j @leq{} N}; @item @math{\sum_{j=1}^N P_{i,j} = 1} for all @math{i} @end enumerate Property 1 requires that all probabilities are nonnegative; property 2 requires that the outgoing transition probabilities from any state @math{i} sum to one. @c @anchor{doc-dtmcchkP} @deftypefn {Function File} {[@var{r} @var{err}] =} dtmcchkP (@var{P}) @cindex Markov chain, discrete time @cindex DTMC @cindex discrete time Markov chain Check whether @var{P} is a valid transition probability matrix. If @var{P} is valid, @var{r} is the size (number of rows or columns) of @var{P}. If @var{P} is not a transition probability matrix, @var{r} is set to zero, and @var{err} to an appropriate error string. @end deftypefn A DTMC is @emph{irreducible} if every state can be reached with non-zero probability starting from every other state. @anchor{doc-dtmcisir} @deftypefn {Function File} {[@var{r} @var{s}] =} dtmcisir (@var{P}) @cindex Markov chain, discrete time @cindex discrete time Markov chain @cindex DTMC @cindex irreducible Markov chain Check if @var{P} is irreducible, and identify Strongly Connected Components (SCC) in the transition graph of the DTMC with transition matrix @var{P}. @strong{INPUTS} @table @code @item @var{P}(i,j) transition probability from state @math{i} to state @math{j}. @var{P} must be an @math{N \times N} stochastic matrix. @end table @strong{OUTPUTS} @table @code @item @var{r} 1 if @var{P} is irreducible, 0 otherwise (scalar) @item @var{s}(i) strongly connected component (SCC) that state @math{i} belongs to (vector of length @math{N}). SCCs are numbered @math{1, 2, @dots{}}. The number of SCCs is @code{max(s)}. If the graph is strongly connected, then there is a single SCC and the predicate @code{all(s == 1)} evaluates to true @end table @end deftypefn @menu * State occupancy probabilities (DTMC):: * Birth-death process (DTMC):: * Expected number of visits (DTMC):: * Time-averaged expected sojourn times (DTMC):: * Mean time to absorption (DTMC):: * First passage times (DTMC):: @end menu @c @c @c @node State occupancy probabilities (DTMC) @subsection State occupancy probabilities Given a discrete-time Markov chain with state space @math{@{1, @dots{}, N@}}, we denote with @math{{\bf \pi}(n) = \left[\pi_1(n), @dots{} \pi_N(n) \right]} the @emph{state occupancy probability vector} at step @math{n = 0, 1, @dots{}}. @math{\pi_i(n)} is the probability that the system is in state @math{i} after @math{n} transitions. Given the transition probability matrix @math{\bf P} and the initial state occupancy probability vector @math{{\bf \pi}(0) = \left[\pi_1(0), @dots{}, \pi_N(0)\right]}, @math{{\bf \pi}(n)} can be computed as: @iftex @tex $${\bf \pi}(n) = {\bf \pi}(0) {\bf P}^n$$ @end tex @end iftex @ifnottex @math{\pi(n) = \pi(0) P^n} @end ifnottex Under certain conditions, there exists a @emph{stationary state occupancy probability} @math{{\bf \pi} = \lim_{n \rightarrow +\infty} {\bf \pi}(n)}, which is independent from @math{{\bf \pi}(0)}. The vector @math{\bf \pi} is the solution of the following linear system: @iftex @tex $$ \left\{ \eqalign{ {\bf \pi P} & = {\bf \pi} \cr {\bf \pi 1}^T & = 1 } \right. $$ @end tex @end iftex @ifnottex @example @group / | \pi P = \pi | \pi 1^T = 1 \ @end group @end example @end ifnottex @noindent where @math{\bf 1} is the row vector of ones, and @math{( \cdot )^T} the transpose operator. @c @anchor{doc-dtmc} @deftypefn {Function File} {@var{p} =} dtmc (@var{P}) @deftypefnx {Function File} {@var{p} =} dtmc (@var{P}, @var{n}, @var{p0}) @cindex Markov chain, discrete time @cindex discrete time Markov chain @cindex DTMC @cindex Markov chain, stationary probabilities @cindex Markov chain, transient probabilities Compute stationary or transient state occupancy probabilities for a discrete-time Markov chain. With a single argument, compute the stationary state occupancy probabilities @code{@var{p}(1), @dots{}, @var{p}(N)} for a discrete-time Markov chain with finite state space @math{@{1, @dots{}, N@}} and with @math{N \times N} transition matrix @var{P}. With three arguments, compute the transient state occupancy probabilities @code{@var{p}(1), @dots{}, @var{p}(N)} that the system is in state @math{i} after @var{n} steps, given initial occupancy probabilities @var{p0}(1), @dots{}, @var{p0}(N). @strong{INPUTS} @table @code @item @var{P}(i,j) transition probabilities from state @math{i} to state @math{j}. @var{P} must be an @math{N \times N} irreducible stochastic matrix, meaning that the sum of each row must be 1 (@math{\sum_{j=1}^N P_{i, j} = 1}), and the rank of @var{P} must be @math{N}. @item @var{n} Number of transitions after which state occupancy probabilities are computed (scalar, @math{n @geq{} 0}) @item @var{p0}(i) probability that at step 0 the system is in state @math{i} (vector of length @math{N}). @end table @strong{OUTPUTS} @table @code @item @var{p}(i) If this function is called with a single argument, @code{@var{p}(i)} is the steady-state probability that the system is in state @math{i}. If this function is called with three arguments, @code{@var{p}(i)} is the probability that the system is in state @math{i} after @var{n} transitions, given the probabilities @code{@var{p0}(i)} that the initial state is @math{i}. @end table @seealso{ctmc} @end deftypefn @noindent @strong{EXAMPLE} The following example is from @ref{GrSn97}. Let us consider a maze with nine rooms, as shown in the following figure @example @group +-----+-----+-----+ | | | | | 1 2 3 | | | | | +- -+- -+- -+ | | | | | 4 5 6 | | | | | +- -+- -+- -+ | | | | | 7 8 9 | | | | | +-----+-----+-----+ @end group @end example A mouse is placed in one of the rooms and can wander around. At each step, the mouse moves from the current room to a neighboring one with equal probability. For example, if it is in room 1, it can move to room 2 and 4 with probability @math{1/2}, respectively; if the mouse is in room 8, it can move to either 7, 5 or 9 with probability @math{1/3}. The transition probabilities @math{P_{i, j}} from room @math{i} to room @math{j} can be summarized in the following matrix: @iftex @tex $$ {\bf P} = \pmatrix{ 0 & 1/2 & 0 & 1/2 & 0 & 0 & 0 & 0 & 0 \cr 1/3 & 0 & 1/3 & 0 & 1/3 & 0 & 0 & 0 & 0 \cr 0 & 1/2 & 0 & 0 & 0 & 1/2 & 0 & 0 & 0 \cr 1/3 & 0 & 0 & 0 & 1/3 & 0 & 1/3 & 0 & 0 \cr 0 & 1/4 & 0 & 1/4 & 0 & 1/4 & 0 & 1/4 & 0 \cr 0 & 0 & 1/3 & 0 & 1/3 & 0 & 0 & 0 & 1/3 \cr 0 & 0 & 0 & 1/2 & 0 & 0 & 0 & 1/2 & 0 \cr 0 & 0 & 0 & 0 & 1/3 & 0 & 1/3 & 0 & 1/3 \cr 0 & 0 & 0 & 0 & 0 & 1/2 & 0 & 1/2 & 0 } $$ @end tex @end iftex @ifnottex @example @group / 0 1/2 0 1/2 0 0 0 0 0 \ | 1/3 0 1/3 0 1/3 0 0 0 0 | | 0 1/2 0 0 0 1/2 0 0 0 | | 1/3 0 0 0 1/3 0 1/3 0 0 | P = | 0 1/4 0 1/4 0 1/4 0 1/4 0 | | 0 0 1/3 0 1/3 0 0 0 1/3 | | 0 0 0 1/2 0 0 0 1/2 0 | | 0 0 0 0 1/3 0 1/3 0 1/3 | \ 0 0 0 0 0 1/2 0 1/2 0 / @end group @end example @end ifnottex The stationary state occupancy probabilities can then be computed with the following code: @example @group @verbatim P = zeros(9,9); P(1,[2 4] ) = 1/2; P(2,[1 5 3] ) = 1/3; P(3,[2 6] ) = 1/2; P(4,[1 5 7] ) = 1/3; P(5,[2 4 6 8]) = 1/4; P(6,[3 5 9] ) = 1/3; P(7,[4 8] ) = 1/2; P(8,[7 5 9] ) = 1/3; P(9,[6 8] ) = 1/2; p = dtmc(P); disp(p) @end verbatim @end group @result{} 0.083333 0.125000 0.083333 0.125000 0.166667 0.125000 0.083333 0.125000 0.083333 @end example @c @node Birth-death process (DTMC) @subsection Birth-death process @anchor{doc-dtmcbd} @deftypefn {Function File} {@var{P} =} dtmcbd (@var{b}, @var{d}) @cindex Markov chain, discrete time @cindex DTMC @cindex discrete time Markov chain @cindex birth-death process, DTMC Returns the transition probability matrix @math{P} for a discrete birth-death process over state space @math{@{1, @dots{}, N@}}. For each @math{i=1, @dots{}, (N-1)}, @code{@var{b}(i)} is the transition probability from state @math{i} to @math{(i+1)}, and @code{@var{d}(i)} is the transition probability from state @math{(i+1)} to @math{i}. Matrix @math{\bf P} is defined as: @tex $$ \pmatrix{ (1-\lambda_1) & \lambda_1 & & & & \cr \mu_1 & (1 - \mu_1 - \lambda_2) & \lambda_2 & & \cr & \mu_2 & (1 - \mu_2 - \lambda_3) & \lambda_3 & & \cr \cr & & \ddots & \ddots & \ddots & & \cr \cr & & & \mu_{N-2} & (1 - \mu_{N-2}-\lambda_{N-1}) & \lambda_{N-1} \cr & & & & \mu_{N-1} & (1-\mu_{N-1}) } $$ @end tex @ifnottex @example @group / \ | 1-b(1) b(1) | | d(1) (1-d(1)-b(2)) b(2) | | d(2) (1-d(2)-b(3)) b(3) | | | | ... ... ... | | | | d(N-2) (1-d(N-2)-b(N-1)) b(N-1) | | d(N-1) 1-d(N-1) | \ / @end group @end example @end ifnottex @noindent where @math{\lambda_i} and @math{\mu_i} are the birth and death probabilities, respectively. @seealso{ctmcbd} @end deftypefn @c @node Expected number of visits (DTMC) @subsection Expected Number of Visits Given a @math{N} state discrete-time Markov chain with transition matrix @math{\bf P} and an integer @math{n @geq{} 0}, we let @math{L_i(n)} be the the expected number of visits to state @math{i} during the first @math{n} transitions. The vector @math{{\bf L}(n) = \left[ L_1(n), @dots{}, L_N(n) \right]} is defined as @iftex @tex $$ {\bf L}(n) = \sum_{i=0}^n {\bf \pi}(i) = \sum_{i=0}^n {\bf \pi}(0) {\bf P}^i $$ @end tex @end iftex @ifnottex @example @group n n ___ ___ \ \ i L(n) = > pi(i) = > pi(0) P /___ /___ i=0 i=0 @end group @end example @end ifnottex @noindent where @math{{\bf \pi}(i) = {\bf \pi}(0){\bf P}^i} is the state occupancy probability after @math{i} transitions, and @math{{\bf \pi}(0) = \left[\pi_1(0), @dots{}, \pi_N(0) \right]} are the initial state occupancy probabilities. If @math{\bf P} is absorbing, i.e., the stochastic process eventually enters a state with no outgoing transitions, then we can compute the expected number of visits until absorption @math{\bf L}. To do so, we first rearrange the states by rewriting @math{\bf P} as @iftex @tex $$ {\bf P} = \pmatrix{ {\bf Q} & {\bf R} \cr {\bf 0} & {\bf I} }$$ @end tex @end iftex @ifnottex @example @group / Q | R \ P = |---+---| \ 0 | I / @end group @end example @end ifnottex @noindent where the first @math{t} states are transient and the last @math{r} states are absorbing (@math{t+r = N}). The matrix @math{{\bf N} = ({\bf I} - {\bf Q})^{-1}} is called the @emph{fundamental matrix}; @math{N_{i,j}} is the expected number of times the process is in the @math{j}-th transient state assuming it started in the @math{i}-th transient state. If we reshape @math{\bf N} to the size of @math{\bf P} (filling missing entries with zeros), we have that, for absorbing chains, @math{{\bf L} = {\bf \pi}(0){\bf N}}. @anchor{doc-dtmcexps} @deftypefn {Function File} {@var{L} =} dtmcexps (@var{P}, @var{n}, @var{p0}) @deftypefnx {Function File} {@var{L} =} dtmcexps (@var{P}, @var{p0}) @cindex expected sojourn times, DTMC @cindex DTMC @cindex discrete time Markov chain @cindex Markov chain, discrete time Compute the expected number of visits to each state during the first @var{n} transitions, or until abrosption. @strong{INPUTS} @table @code @item @var{P}(i,j) @math{N \times N} transition matrix. @code{@var{P}(i,j)} is the transition probability from state @math{i} to state @math{j}. @item @var{n} Number of steps during which the expected number of visits are computed (@math{@var{n} @geq{} 0}). If @code{@var{n}=0}, returns @var{p0}. If @code{@var{n} > 0}, returns the expected number of visits after exactly @var{n} transitions. @item @var{p0}(i) Initial state occupancy probabilities; @code{@var{p0}(i)} is the probability that the system is in state @math{i} at step 0. @end table @strong{OUTPUTS} @table @code @item @var{L}(i) When called with two arguments, @code{@var{L}(i)} is the expected number of visits to state @math{i} before absorption. When called with three arguments, @code{@var{L}(i)} is the expected number of visits to state @math{i} during the first @var{n} transitions. @end table @strong{REFERENCES} @itemize @item Grinstead, Charles M.; Snell, J. Laurie (July 1997). @cite{Introduction to Probability}, Ch. 11: Markov Chains. American Mathematical Society. ISBN 978-0821807491. @end itemize @seealso{ctmcexps} @end deftypefn @c @node Time-averaged expected sojourn times (DTMC) @subsection Time-averaged expected sojourn times @anchor{doc-dtmctaexps} @deftypefn {Function File} {@var{M} =} dtmctaexps (@var{P}, @var{n}, @var{p0}) @deftypefnx {Function File} {@var{M} =} dtmctaexps (@var{P}, @var{p0}) @cindex time-alveraged sojourn time, DTMC @cindex discrete time Markov chain @cindex Markov chain, discrete time @cindex DTMC Compute the @emph{time-averaged sojourn times} @code{@var{M}(i)}, defined as the fraction of time spent in state @math{i} during the first @math{n} transitions (or until absorption), assuming that the state occupancy probabilities at time 0 are @var{p0}. @strong{INPUTS} @table @code @item @var{P}(i,j) @math{N \times N} transition probability matrix. @item @var{n} Number of transitions during which the time-averaged expected sojourn times are computed (scalar, @math{@var{n} @geq{} 0}). if @math{@var{n} = 0}, returns @var{p0}. @item @var{p0}(i) Initial state occupancy probabilities (vector of length @math{N}). @end table @strong{OUTPUTS} @table @code @item @var{M}(i) If this function is called with three arguments, @code{@var{M}(i)} is the expected fraction of steps @math{@{0, @dots{}, n@}} spent in state @math{i}, assuming that the state occupancy probabilities at time zero are @var{p0}. If this function is called with two arguments, @code{@var{M}(i)} is the expected fraction of steps spent in state @math{i} until absorption. @var{M} is a vector of length @math{N}. @end table @seealso{dtmcexps} @end deftypefn @c @node Mean time to absorption (DTMC) @subsection Mean Time to Absorption The @emph{mean time to absorption} is defined as the average number of transitions that are required to enter an absorbing state, starting from a transient state or given initial state occupancy probabilities @math{{\bf \pi}(0)}. Let @math{t_i} be the expected number of transitions before being absorbed in any absorbing state, starting from state @math{i}. The vector @math{{\bf t} = [t_1, @dots{}, t_N]} can be computed from the fundamental matrix @math{\bf N} (@pxref{Expected number of visits (DTMC)}) as @iftex @tex $$ {\bf t} = {\bf N c} $$ @end tex @end iftex @ifnottex @math{t = N c} @end ifnottex @noindent where @math{\bf c} is a column vector of 1's. Let @math{{\bf B} = [ B_{i, j} ]} be a matrix where @math{B_{i, j}} is the probability of being absorbed in state @math{j}, starting from transient state @math{i}. Again, using matrices @math{\bf N} and @math{\bf R} (@pxref{Expected number of visits (DTMC)}) we can write @iftex @tex $$ {\bf B} = {\bf N R} $$ @end tex @end iftex @ifnottex @math{B = N R} @end ifnottex @anchor{doc-dtmcmtta} @deftypefn {Function File} {[@var{t} @var{N} @var{B}] =} dtmcmtta (@var{P}) @deftypefnx {Function File} {[@var{t} @var{N} @var{B}] =} dtmcmtta (@var{P}, @var{p0}) @cindex mean time to absorption, DTMC @cindex absorption probabilities, DTMC @cindex fundamental matrix @cindex DTMC @cindex discrete time Markov chain @cindex Markov chain, discrete time Compute the expected number of steps before absorption for a DTMC with state space @math{@{1, @dots{}, N@}} and transition probability matrix @var{P}. @strong{INPUTS} @table @code @item @var{P}(i,j) @math{N \times N} transition probability matrix. @code{@var{P}(i,j)} is the transition probability from state @math{i} to state @math{j}. @item @var{p0}(i) Initial state occupancy probabilities (vector of length @math{N}). @end table @strong{OUTPUTS} @table @code @item @var{t} @itemx @var{t}(i) When called with a single argument, @var{t} is a vector of length @math{N} such that @code{@var{t}(i)} is the expected number of steps before being absorbed in any absorbing state, starting from state @math{i}; if @math{i} is absorbing, @code{@var{t}(i) = 0}. When called with two arguments, @var{t} is a scalar, and represents the expected number of steps before absorption, starting from the initial state occupancy probability @var{p0}. @item @var{N}(i) @itemx @var{N}(i,j) When called with a single argument, @var{N} is the @math{N \times N} fundamental matrix for @var{P}. @code{@var{N}(i,j)} is the expected number of visits to transient state @var{j} before absorption, if the system started in transient state @var{i}. The initial state is counted if @math{i = j}. When called with two arguments, @var{N} is a vector of length @math{N} such that @code{@var{N}(j)} is the expected number of visits to transient state @var{j} before absorption, given initial state occupancy probability @var{P0}. @item @var{B}(i) @itemx @var{B}(i,j) When called with a single argument, @var{B} is a @math{N \times N} matrix where @code{@var{B}(i,j)} is the probability of being absorbed in state @math{j}, starting from transient state @math{i}; if @math{j} is not absorbing, @code{@var{B}(i,j) = 0}; if @math{i} is absorbing, @code{@var{B}(i,i) = 1} and @code{@var{B}(i,j) = 0} for all @math{i \neq j}. When called with two arguments, @var{B} is a vector of length @math{N} where @code{@var{B}(j)} is the probability of being absorbed in state @var{j}, given initial state occupancy probabilities @var{p0}. @end table @strong{REFERENCES} @itemize @item Grinstead, Charles M.; Snell, J. Laurie (July 1997). @cite{Introduction to Probability}, Ch. 11: Markov Chains. American Mathematical Society. ISBN 978-0821807491. @end itemize @seealso{ctmcmtta} @end deftypefn @c @node First passage times (DTMC) @subsection First Passage Times The First Passage Time @math{M_{i, j}} is the average number of transitions needed to enter state @math{j} for the first time, starting from state @math{i}. Matrix @math{\bf M} satisfies the property @iftex @tex $$ M_{i, j} = 1 + \sum_{k \neq j} P_{i, k} M_{k, j}$$ @end tex @end iftex @ifnottex @example @group ___ \ M_ij = 1 + > P_ij * M_kj /___ k!=j @end group @end example @end ifnottex To compute @math{{\bf M} = [ M_{i, j}]} a different formulation is used. Let @math{\bf W} be the @math{N \times N} matrix having each row equal to the stationary state occupancy probability vector @math{\bf \pi} for @math{\bf P}; let @math{\bf I} be the @math{N \times N} identity matrix (i.e., the matrix of all ones). Define @math{\bf Z} as follows: @iftex @tex $$ {\bf Z} = \left( {\bf I} - {\bf P} + {\bf W} \right)^{-1} $$ @end tex @end iftex @ifnottex @example @group -1 Z = (I - P + W) @end group @end example @end ifnottex @noindent Then, we have that @iftex @tex $$ M_{i, j} = {Z_{j, j} - Z_{i, j} \over \pi_j} $$ @end tex @end iftex @ifnottex @example @group Z_jj - Z_ij M_ij = ----------- \pi_j @end group @end example @end ifnottex According to the definition above, @math{M_{i,i} = 0}. We arbitrarily set @math{M_{i,i}} to the @emph{mean recurrence time} @math{r_i} for state @math{i}, that is the average number of transitions needed to return to state @math{i} starting from it. @math{r_i} is: @iftex @tex $$ r_i = {1 \over \pi_i} $$ @end tex @end iftex @ifnottex @example @group 1 r_i = ----- \pi_i @end group @end example @end ifnottex @anchor{doc-dtmcfpt} @deftypefn {Function File} {@var{M} =} dtmcfpt (@var{P}) @cindex first passage times @cindex mean recurrence times @cindex discrete time Markov chain @cindex Markov chain, discrete time @cindex DTMC Compute mean first passage times and mean recurrence times for an irreducible discrete-time Markov chain over the state space @math{@{1, @dots{}, N@}}. @strong{INPUTS} @table @code @item @var{P}(i,j) transition probability from state @math{i} to state @math{j}. @var{P} must be an irreducible stochastic matrix, which means that the sum of each row must be 1 (@math{\sum_{j=1}^N P_{i j} = 1}), and the rank of @var{P} must be @math{N}. @end table @strong{OUTPUTS} @table @code @item @var{M}(i,j) For all @math{1 @leq{} i, j @leq{} N}, @math{i \neq j}, @code{@var{M}(i,j)} is the average number of transitions before state @var{j} is entered for the first time, starting from state @var{i}. @code{@var{M}(i,i)} is the @emph{mean recurrence time} of state @math{i}, and represents the average time needed to return to state @var{i}. @end table @strong{REFERENCES} @itemize @item Grinstead, Charles M.; Snell, J. Laurie (July 1997). @cite{Introduction to Probability}, Ch. 11: Markov Chains. American Mathematical Society. ISBN 978-0821807491. @end itemize @seealso{ctmcfpt} @end deftypefn @c @c @c @node Continuous-Time Markov Chains @section Continuous-Time Markov Chains A stochastic process @math{@{X(t), t @geq{} 0@}} is a continuous-time Markov chain if, for all integers @math{n}, and for any sequence @math{t_0, t_1 , @dots{}, t_n, t_{n+1}} such that @math{t_0 < t_1 < @dots{} < t_n < t_{n+1}}, we have @iftex @tex $$\eqalign{P(X(t_{n+1}) = x_{n+1}\ |\ X(t_n) = x_n, X(t_{n-1}) = x_{n-1}, \ldots, X(t_0) = x_0) \cr &\hskip -8 em = P(X(t_{n+1}) = x_{n+1}\ |\ X(t_n) = x_n)}$$ @end tex @end iftex @ifnottex @math{P(X_{n+1} = x_{n+1} | X_n = x_n, X_{n-1} = x_{n-1}, ..., X_0 = x_0) = P(X_{n+1} = x_{n+1} | X_n = x_n)} @end ifnottex A continuous-time Markov chain is defined according to an @emph{infinitesimal generator matrix} @math{{\bf Q} = [Q_{i,j}]}, where for each @math{i \neq j}, @math{Q_{i, j}} is the transition rate from state @math{i} to state @math{j}. The matrix @math{\bf Q} must satisfy the property that, for all @math{i}, @math{\sum_{j=1}^N Q_{i, j} = 0}. @anchor{doc-ctmcchkQ} @deftypefn {Function File} {[@var{result} @var{err}] =} ctmcchkQ (@var{Q}) @cindex Markov chain, continuous time If @var{Q} is a valid infinitesimal generator matrix, return the size (number of rows or columns) of @var{Q}. If @var{Q} is not an infinitesimal generator matrix, set @var{result} to zero, and @var{err} to an appropriate error string. @end deftypefn Similarly to the DTMC case, a CTMC is @emph{irreducible} if every state is eventually reachable from every other state in finite time. @anchor{doc-ctmcisir} @deftypefn {Function File} {[@var{r} @var{s}] =} ctmcisir (@var{P}) @cindex Markov chain, continuous time @cindex continuous time Markov chain @cindex CTMC @cindex irreducible Markov chain Check if @var{Q} is irreducible, and identify Strongly Connected Components (SCC) in the transition graph of the DTMC with infinitesimal generator matrix @var{Q}. @strong{INPUTS} @table @code @item @var{Q}(i,j) Infinitesimal generator matrix. @var{Q} is a @math{N \times N} square matrix where @code{@var{Q}(i,j)} is the transition rate from state @math{i} to state @math{j}, for @math{1 @leq{} i, j @leq{} N}, @math{i \neq j}. @end table @strong{OUTPUTS} @table @code @item @var{r} 1 if @var{Q} is irreducible, 0 otherwise. @item @var{s}(i) strongly connected component (SCC) that state @math{i} belongs to. SCCs are numbered @math{1, 2, @dots{}}. If the graph is strongly connected, then there is a single SCC and the predicate @code{all(s == 1)} evaluates to true. @end table @end deftypefn @menu * State occupancy probabilities (CTMC):: * Birth-death process (CTMC):: * Expected sojourn times (CTMC):: * Time-averaged expected sojourn times (CTMC):: * Mean time to absorption (CTMC):: * First passage times (CTMC):: @end menu @node State occupancy probabilities (CTMC) @subsection State occupancy probabilities Similarly to the discrete case, we denote with @math{{\bf \pi}(t) = \left[\pi_1(t), @dots{}, \pi_N(t) \right]} the @emph{state occupancy probability vector} at time @math{t}. @math{\pi_i(t)} is the probability that the system is in state @math{i} at time @math{t @geq{} 0}. Given the infinitesimal generator matrix @math{\bf Q} and initial state occupancy probabilities @math{{\bf \pi}(0) = \left[\pi_1(0), @dots{}, \pi_N(0)\right]}, the occupancy probabilities @math{{\bf \pi}(t)} at time @math{t} can be computed as: @iftex @tex $${\bf \pi}(t) = {\bf \pi}(0) \exp( {\bf Q} t )$$ @end tex @end iftex @ifnottex @example @group \pi(t) = \pi(0) exp(Qt) @end group @end example @end ifnottex @noindent where @math{\exp( {\bf Q} t )} is the matrix exponential of @math{{\bf Q} t}. Under certain conditions, there exists a @emph{stationary state occupancy probability} @math{{\bf \pi} = \lim_{t \rightarrow +\infty} {\bf \pi}(t)} that is independent from @math{{\bf \pi}(0)}. @math{\bf \pi} is the solution of the following linear system: @iftex @tex $$ \left\{ \eqalign{ {\bf \pi Q} & = {\bf 0} \cr {\bf \pi 1}^T & = 1 } \right. $$ @end tex @end iftex @ifnottex @example @group / | \pi Q = 0 | \pi 1^T = 1 \ @end group @end example @end ifnottex @anchor{doc-ctmc} @deftypefn {Function File} {@var{p} =} ctmc (@var{Q}) @deftypefnx {Function File} {@var{p} =} ctmc (@var{Q}, @var{t}, @var{p0}) @cindex Markov chain, continuous time @cindex continuous time Markov chain @cindex Markov chain, state occupancy probabilities @cindex stationary probabilities @cindex CTMC Compute stationary or transient state occupancy probabilities for a continuous-time Markov chain. With a single argument, compute the stationary state occupancy probabilities @math{@var{p}(1), @dots{}, @var{p}(N)} for a continuous-time Markov chain with finite state space @math{@{1, @dots{}, N@}} and @math{N \times N} infinitesimal generator matrix @var{Q}. With three arguments, compute the state occupancy probabilities @math{@var{p}(1), @dots{}, @var{p}(N)} that the system is in state @math{i} at time @var{t}, given initial state occupancy probabilities @math{@var{p0}(1), @dots{}, @var{p0}(N)} at time 0. @strong{INPUTS} @table @code @item @var{Q}(i,j) Infinitesimal generator matrix. @var{Q} is a @math{N \times N} square matrix where @code{@var{Q}(i,j)} is the transition rate from state @math{i} to state @math{j}, for @math{1 @leq{} i \neq j @leq{} N}. @var{Q} must satisfy the property that @math{\sum_{j=1}^N Q_{i, j} = 0} @item @var{t} Time at which to compute the transient probability (@math{t @geq{} 0}). If omitted, the function computes the steady state occupancy probability vector. @item @var{p0}(i) probability that the system is in state @math{i} at time 0. @end table @strong{OUTPUTS} @table @code @item @var{p}(i) If this function is invoked with a single argument, @code{@var{p}(i)} is the steady-state probability that the system is in state @math{i}, @math{i = 1, @dots{}, N}. If this function is invoked with three arguments, @code{@var{p}(i)} is the probability that the system is in state @math{i} at time @var{t}, given the initial occupancy probabilities @var{p0}(1), @dots{}, @var{p0}(N). @end table @seealso{dtmc} @end deftypefn @noindent @strong{EXAMPLE} Consider a two-state CTMC where all transition rates between states are equal to 1. The stationary state occupancy probabilities can be computed as follows: @example @group @verbatim Q = [ -1 1; ... 1 -1 ]; q = ctmc(Q) @end verbatim @result{} q = 0.50000 0.50000 @end group @end example @c @c @c @node Birth-death process (CTMC) @subsection Birth-Death Process @anchor{doc-ctmcbd} @deftypefn {Function File} {@var{Q} =} ctmcbd (@var{b}, @var{d}) @cindex Markov chain, continuous time @cindex continuous time Markov chain @cindex CTMC @cindex birth-death process, CTMC Returns the infinitesimal generator matrix @math{Q} for a continuous birth-death process over the finite state space @math{@{1, @dots{}, N@}}. For each @math{i=1, @dots{}, (N-1)}, @code{@var{b}(i)} is the transition rate from state @math{i} to state @math{(i+1)}, and @code{@var{d}(i)} is the transition rate from state @math{(i+1)} to state @math{i}. Matrix @math{\bf Q} is therefore defined as: @tex $$ \pmatrix{ -\lambda_1 & \lambda_1 & & & & \cr \mu_1 & -(\mu_1 + \lambda_2) & \lambda_2 & & \cr & \mu_2 & -(\mu_2 + \lambda_3) & \lambda_3 & & \cr \cr & & \ddots & \ddots & \ddots & & \cr \cr & & & \mu_{N-2} & -(\mu_{N-2}+\lambda_{N-1}) & \lambda_{N-1} \cr & & & & \mu_{N-1} & -\mu_{N-1} } $$ @end tex @ifnottex @example @group / \ | -b(1) b(1) | | d(1) -(d(1)+b(2)) b(2) | | d(2) -(d(2)+b(3)) b(3) | | | | ... ... ... | | | | d(N-2) -(d(N-2)+b(N-1)) b(N-1) | | d(N-1) -d(N-1) | \ / @end group @end example @end ifnottex @noindent where @math{\lambda_i} and @math{\mu_i} are the birth and death rates, respectively. @seealso{dtmcbd} @end deftypefn @c @c @c @node Expected sojourn times (CTMC) @subsection Expected Sojourn Times Given a @math{N} state continuous-time Markov Chain with infinitesimal generator matrix @math{\bf Q}, we define the vector @math{{\bf L}(t) = \left[L_1(t), @dots{}, L_N(t)\right]} such that @math{L_i(t)} is the expected sojourn time in state @math{i} during the interval @math{[0,t)}, assuming that the initial occupancy probabilities at time 0 were @math{{\bf \pi}(0)}. @math{{\bf L}(t)} can be expressed as the solution of the following differential equation: @iftex @tex $$ { d{\bf L}(t) \over dt} = {\bf L}(t){\bf Q} + {\bf \pi}(0), \qquad {\bf L}(0) = {\bf 0} $$ @end tex @end iftex @ifnottex @example @group dL --(t) = L(t) Q + pi(0), L(0) = 0 dt @end group @end example @end ifnottex Alternatively, @math{{\bf L}(t)} can also be expressed in integral form as: @iftex @tex $$ {\bf L}(t) = \int_0^t {\bf \pi}(u) du$$ @end tex @end iftex @ifnottex @example @group / t L(t) = | pi(u) du / 0 @end group @end example @end ifnottex @noindent where @math{{\bf \pi}(t) = {\bf \pi}(0) \exp({\bf Q}t)} is the state occupancy probability at time @math{t}; @math{\exp({\bf Q}t)} is the matrix exponential of @math{{\bf Q}t}. If there are absorbing states, we can define the vector of @emph{expected sojourn times until absorption} @math{{\bf L}(\infty)}, where for each transient state @math{i}, @math{L_i(\infty)} is the expected total time spent in state @math{i} until absorption, assuming that the system started with given state occupancy probabilities @math{{\bf \pi}(0)}. Let @math{\tau} be the set of transient (i.e., non absorbing) states; let @math{{\bf Q}_\tau} be the restriction of @math{\bf Q} to the transient sub-states only. Similarly, let @math{{\bf \pi}_\tau(0)} be the restriction of the initial state occupancy probability vector @math{{\bf \pi}(0)} to transient states @math{\tau}. The expected time to absorption @math{{\bf L}_\tau(\infty)} is defined as the solution of the following equation: @iftex @tex $$ {\bf L}_\tau(\infty){\bf Q}_\tau = -{\bf \pi}_\tau(0) $$ @end tex @end iftex @ifnottex @example @group L_T( inf ) Q_T = -pi_T(0) @end group @end example @end ifnottex @anchor{doc-ctmcexps} @deftypefn {Function File} {@var{L} =} ctmcexps (@var{Q}, @var{t}, @var{p} ) @deftypefnx {Function File} {@var{L} =} ctmcexps (@var{Q}, @var{p}) @cindex Markov chain, continuous time @cindex continuous time Markov chain @cindex expected sojourn time, CTMC @cindex CTMC With three arguments, compute the expected times @code{@var{L}(i)} spent in each state @math{i} during the time interval @math{[0,t]}, assuming that the initial occupancy vector is @var{p}. With two arguments, compute the expected time @code{@var{L}(i)} spent in each transient state @math{i} until absorption. @strong{Note:} In its current implementation, this function requires that an absorbing state is reachable from any non-absorbing state of @math{Q}. @strong{INPUTS} @table @code @item @var{Q}(i,j) @math{N \times N} infinitesimal generator matrix. @code{@var{Q}(i,j)} is the transition rate from state @math{i} to state @math{j}, @math{1 @leq{} i, j @leq{} N}, @math{i \neq j}. The matrix @var{Q} must also satisfy the condition @math{\sum_{j=1}^N Q_{i,j} = 0} for every @math{i=1, @dots{}, N}. @item @var{t} If given, compute the expected sojourn times in @math{[0,t]} @item @var{p}(i) Initial occupancy probability vector; @code{@var{p}(i)} is the probability the system is in state @math{i} at time 0, @math{i = 1, @dots{}, N} @end table @strong{OUTPUTS} @table @code @item @var{L}(i) If this function is called with three arguments, @code{@var{L}(i)} is the expected time spent in state @math{i} during the interval @math{[0,t]}. If this function is called with two arguments @code{@var{L}(i)} is the expected time spent in transient state @math{i} until absorption; if state @math{i} is absorbing, @code{@var{L}(i)} is zero. @end table @seealso{dtmcexps} @end deftypefn @noindent @strong{EXAMPLE} Let us consider a 4-states pure birth continuous process where the transition rate from state @math{i} to state @math{(i+1)} is @math{\lambda_i = i \lambda} (@math{i=1, 2, 3}), with @math{\lambda = 0.5}. The following code computes the expected sojourn time for each state @math{i}, given initial occupancy probabilities @math{{\bf \pi}_0=[1, 0, 0, 0]}. @example @group @verbatim lambda = 0.5; N = 4; b = lambda*[1:N-1]; d = zeros(size(b)); Q = ctmcbd(b,d); t = linspace(0,10,100); p0 = zeros(1,N); p0(1)=1; L = zeros(length(t),N); for i=1:length(t) L(i,:) = ctmcexps(Q,t(i),p0); endfor plot( t, L(:,1), ";State 1;", "linewidth", 2, ... t, L(:,2), ";State 2;", "linewidth", 2, ... t, L(:,3), ";State 3;", "linewidth", 2, ... t, L(:,4), ";State 4;", "linewidth", 2 ); legend("location","northwest"); legend("boxoff"); xlabel("Time"); ylabel("Expected sojourn time"); @end verbatim @end group @end example @c @c @c @node Time-averaged expected sojourn times (CTMC) @subsection Time-Averaged Expected Sojourn Times @anchor{doc-ctmctaexps} @deftypefn {Function File} {@var{M} =} ctmctaexps (@var{Q}, @var{t}, @var{p0}) @deftypefnx {Function File} {@var{M} =} ctmctaexps (@var{Q}, @var{p0}) @cindex Markov chain, continuous time @cindex time-alveraged sojourn time, CTMC @cindex continuous time Markov chain @cindex CTMC Compute the @emph{time-averaged sojourn time} @code{@var{M}(i)}, defined as the fraction of the time interval @math{[0,t]} (or until absorption) spent in state @math{i}, assuming that the state occupancy probabilities at time 0 are @var{p}. @strong{INPUTS} @table @code @item @var{Q}(i,j) Infinitesimal generator matrix. @code{@var{Q}(i,j)} is the transition rate from state @math{i} to state @math{j}, @math{1 @leq{} i,j @leq{} N}, @math{i \neq j}. The matrix @var{Q} must also satisfy the condition @math{\sum_{j=1}^N Q_{i,j} = 0} @item @var{t} Time. If omitted, the results are computed until absorption. @item @var{p0}(i) initial state occupancy probabilities. @code{@var{p0}(i)} is the probability that the system is in state @math{i} at time 0, @math{i = 1, @dots{}, N} @end table @strong{OUTPUTS} @table @code @item @var{M}(i) When called with three arguments, @code{@var{M}(i)} is the expected fraction of the interval @math{[0,t]} spent in state @math{i} assuming that the state occupancy probability at time zero is @var{p}. When called with two arguments, @code{@var{M}(i)} is the expected fraction of time until absorption spent in state @math{i}; in this case the mean time to absorption is @code{sum(@var{M})}. @end table @seealso{ctmcexps} @end deftypefn @noindent @strong{EXAMPLE} @example @group @verbatim lambda = 0.5; N = 4; birth = lambda*linspace(1,N-1,N-1); death = zeros(1,N-1); Q = diag(birth,1)+diag(death,-1); Q -= diag(sum(Q,2)); t = linspace(1e-5,30,100); p = zeros(1,N); p(1)=1; M = zeros(length(t),N); for i=1:length(t) M(i,:) = ctmctaexps(Q,t(i),p); endfor clf; plot(t, M(:,1), ";State 1;", "linewidth", 2, ... t, M(:,2), ";State 2;", "linewidth", 2, ... t, M(:,3), ";State 3;", "linewidth", 2, ... t, M(:,4), ";State 4 (absorbing);", "linewidth", 2 ); legend("location","east"); legend("boxoff"); xlabel("Time"); ylabel("Time-averaged Expected sojourn time"); @end verbatim @end group @end example @c @c @c @node Mean time to absorption (CTMC) @subsection Mean Time to Absorption @anchor{doc-ctmcmtta} @deftypefn {Function File} {@var{t} =} ctmcmtta (@var{Q}, @var{p}) @cindex Markov chain, continuous time @cindex continuous time Markov chain @cindex CTMC @cindex mean time to absorption, CTMC Compute the Mean-Time to Absorption (MTTA) of the CTMC described by the infinitesimal generator matrix @var{Q}, starting from initial occupancy probabilities @var{p}. If there are no absorbing states, this function fails with an error. @strong{INPUTS} @table @code @item @var{Q}(i,j) @math{N \times N} infinitesimal generator matrix. @code{@var{Q}(i,j)} is the transition rate from state @math{i} to state @math{j}, @math{i \neq j}. The matrix @var{Q} must satisfy the condition @math{\sum_{j=1}^N Q_{i,j} = 0} @item @var{p}(i) probability that the system is in state @math{i} at time 0, for each @math{i=1, @dots{}, N} @end table @strong{OUTPUTS} @table @code @item @var{t} Mean time to absorption of the process represented by matrix @var{Q}. If there are no absorbing states, this function fails. @end table @strong{REFERENCES} @itemize @item G. Bolch, S. Greiner, H. de Meer and K. Trivedi, @cite{Queueing Networks and Markov Chains: Modeling and Performance Evaluation with Computer Science Applications}, Wiley, 1998. @end itemize @seealso{ctmcexps} @end deftypefn @noindent @strong{EXAMPLE} Let us consider a simple model of redundant disk array. We assume that the array is made of 5 independent disks and can tolerate up to 2 disk failures without losing data. If three or more disks break, the array is dead and unrecoverable. We want to estimate the Mean-Time-To-Failure (MTTF) of the disk array. We model this system as a 4 states continuous Markov chain with state space @math{@{ 2, 3, 4, 5 @}}. In state @math{i} there are exactly @math{i} active (i.e., non failed) disks; state @math{2} is absorbing. Let @math{\mu} be the failure rate of a single disk. The system starts in state @math{5} (all disks are operational). We use a pure death process, where the death rate from state @math{i} to state @math{(i-1)} is @math{\mu i}, for @math{i = 3, 4, 5}). The MTTF of the disk array is the MTTA of the Markov Chain, and can be computed as follows: @example @group @verbatim mu = 0.01; death = [ 3 4 5 ] * mu; birth = 0*death; Q = ctmcbd(birth,death); t = ctmcmtta(Q,[0 0 0 1]) @end verbatim @result{} t = 78.333 @end group @end example @c @c @c @node First passage times (CTMC) @subsection First Passage Times @anchor{doc-ctmcfpt} @deftypefn {Function File} {@var{M} =} ctmcfpt (@var{Q}) @deftypefnx {Function File} {@var{m} =} ctmcfpt (@var{Q}, @var{i}, @var{j}) @cindex first passage times, CTMC @cindex CTMC @cindex continuous time Markov chain @cindex Markov chain, continuous time Compute mean first passage times for an irreducible continuous-time Markov chain. @strong{INPUTS} @table @code @item @var{Q}(i,j) Infinitesimal generator matrix. @var{Q} is a @math{N \times N} square matrix where @code{@var{Q}(i,j)} is the transition rate from state @math{i} to state @math{j}, for @math{1 @leq{} i, j @leq{} N}, @math{i \neq j}. Transition rates must be nonnegative, and @math{\sum_{j=1}^N Q_{i,j} = 0} @item @var{i} Initial state. @item @var{j} Destination state. @end table @strong{OUTPUTS} @table @code @item @var{M}(i,j) average time before state @var{j} is visited for the first time, starting from state @var{i}. We let @code{@var{M}(i,i) = 0}. @item m @var{m} is the average time before state @var{j} is visited for the first time, starting from state @var{i}. @end table @seealso{ctmcmtta} @end deftypefn queueing/doc/references.texi0000644000175000017500000001541413635377222016060 0ustar morenomoreno@c This file has been automatically generated from references.txi @c by proc.m. Do not edit this file, all changes will be lost @c -*- texinfo -*- @c Copyright (C) 2012, 2016 Moreno Marzolla @c @c This file is part of the queueing package. @c @c The queueing package is free software; you can redistribute it @c and/or modify it under the terms of the GNU General Public License @c as published by the Free Software Foundation; either version 3 of @c the License, or (at your option) any later version. @c @c The queueing package is distributed in the hope that it will be @c useful, but WITHOUT ANY WARRANTY; without even the implied warranty @c of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the @c GNU General Public License for more details. @c @c You should have received a copy of the GNU General Public License @c along with the queueing package; see the file COPYING. If not, see @c . @node References @chapter References @table @asis @item [Aky88] Ian F. Akyildiz, @cite{Mean Value Analysis for Blocking Queueing Networks}, IEEE Transactions on Software Engineering, vol. 14, n. 2, april 1988, pp. 418--428. DOI @uref{http://dx.doi.org/10.1109/32.4663, 10.1109/32.4663} @item [Bar79] Y. Bard, @cite{Some Extensions to Multiclass Queueing Network Analysis}, proc. 4th Int. Symp. on Modelling and Performance Evaluation of Computer Systems, feb. 1979, pp. 51--62. @item [BCMP75] F. Baskett, K. Mani Chandy, R. R. Muntz, and F. G. Palacios. 1975. @cite{Open, Closed, and Mixed Networks of Queues with Different Classes of Customers}. J. ACM 22, 2 (April 1975), 248—260, DOI @uref{http://doi.acm.org/10.1145/321879.321887, 10.1145/321879.321887} @item [BGMT98] G. Bolch, S. Greiner, H. de Meer and K. Trivedi, @cite{Queueing Networks and Markov Chains: Modeling and Performance Evaluation with Computer Science Applications}, Wiley, 1998. @item [Buz73] J. P. Buzen, @cite{Computational Algorithms for Closed Queueing Networks with Exponential Servers}, Communications of the ACM, volume 16, number 9, september 1973, pp. 527--531. DOI @uref{http://doi.acm.org/10.1145/362342.362345, 10.1145/362342.362345} @item [C08] G. Casale, @cite{A note on stable flow-equivalent aggregation in closed networks}. Queueing Syst. Theory Appl., 60:193–-202, December 2008, DOI @uref{http://dx.doi.org/10.1007/s11134-008-9093-6, 10.1007/s11134-008-9093-6} @item [CMS08] G. Casale, R. R. Muntz, G. Serazzi, @cite{Geometric Bounds: a Non-Iterative Analysis Technique for Closed Queueing Networks}, IEEE Transactions on Computers, 57(6):780-794, June 2008. DOI @uref{http://doi.ieeecomputersociety.org/10.1109/TC.2008.37, 10.1109/TC.2008.37} @item @anchor{GrSn97}[GrSn97] C. M. Grinstead, J. L. Snell, (July 1997). @cite{Introduction to Probability}. American Mathematical Society. ISBN 978-0821807491; this excellent textbook is @uref{http://www.dartmouth.edu/~chance/teaching_aids/books_articles/probability_book/amsbook.mac.pdf, available in PDF format} and can be used under the terms of the @uref{http://www.gnu.org/copyleft/fdl.html, GNU Free Documentation License (FDL)} @item [Jac04] J. R. Jackson, @cite{Jobshop-Like Queueing Systems}, Vol. 50, No. 12, Ten Most Influential Titles of "Management Science's" First Fifty Years (Dec., 2004), pp. 1796-1802, @uref{http://www.jstor.org/stable/30046149, available online} @item [Jai91] R. Jain, @cite{The Art of Computer Systems Performance Analysis}, Wiley, 1991, p. 577. @item [HsLa87] C. H. Hsieh and S. Lam, @cite{Two classes of performance bounds for closed queueing networks}, PEVA, vol. 7, n. 1, pp. 3--30, 1987 @item [Ker84] T. Kerola, @cite{The Composite Bound Method (CBM) for Computing Throughput Bounds in Multiple Class Environments}, Performance Evaluation, Vol. 6 Isue 1, March 1986, DOI @uref{http://dx.doi.org/10.1016/0166-5316(86)90002-7, 10.1016/0166-5316(86)90002-7}; also available as @uref{http://docs.lib.purdue.edu/cstech/395/, Technical Report CSD-TR-475}, Department of Computer Sciences, Purdue University, mar 13, 1984 (Revised aug 27, 1984). @item [LZGS84] E. D. Lazowska, J. Zahorjan, G. Scott Graham, and K. C. Sevcik, @cite{Quantitative System Performance: Computer System Analysis Using Queueing Network Models}, Prentice Hall, 1984. @uref{http://www.cs.washington.edu/homes/lazowska/qsp/, available online}. @item [ReKo76] M. Reiser, H. Kobayashi, @cite{On The Convolution Algorithm for Separable Queueing Networks}, In Proceedings of the 1976 ACM SIGMETRICS Conference on Computer Performance Modeling Measurement and Evaluation (Cambridge, Massachusetts, United States, March 29--31, 1976). SIGMETRICS '76. ACM, New York, NY, pp. 109--117. DOI @uref{http://doi.acm.org/10.1145/800200.806187, 10.1145/800200.806187} @item [ReLa80] M. Reiser and S. S. Lavenberg, @cite{Mean-Value Analysis of Closed Multichain Queuing Networks}, Journal of the ACM, vol. 27, n. 2, April 1980, pp. 313--322. DOI @uref{http://doi.acm.org/10.1145/322186.322195, 10.1145/322186.322195} @item [Sch79] P. Schweitzer, @cite{Approximate Analysis of Multiclass Closed Networks of Queues}, Proc. Int. Conf. on Stochastic Control and Optimization, jun 1979, pp. 25—29 @item [Sch80] H. D. Schwetman, @cite{Testing Network-of-Queues Software}, @uref{http://docs.lib.purdue.edu/cstech/259/, Technical Report CSD-TR 330}, Department of computer Sciences, Purdue University, 1980 @item [Sch81] H. D. Schwetman, @cite{Some Computational Aspects of Queueing Network Models}, @uref{http://docs.lib.purdue.edu/cstech/285/, Technical Report CSD-TR-354}, Department of Computer Sciences, Purdue University, feb, 1981 (revised). @item @anchor{Sch82}[Sch82] H. D. Schwetman, @cite{Implementing the Mean Value Algorithm for the Solution of Queueing Network Models}, @uref{http://docs.lib.purdue.edu/cstech/286/, Technical Report CSD-TR-355}, Department of Computer Sciences, Purdue University, feb 15, 1982. @item [Sch84] T. Kerola, H. D. Schwetman, @cite{Performance Bounds for Multiclass Models}, @uref{http://docs.lib.purdue.edu/cstech/399/, Technical Report CSD-TR-479}, Department of Computer Sciences, Purdue University, 1984. @item [Tij03] H. C. Tijms, @cite{A first course in stochastic models}, John Wiley and Sons, 2003, ISBN 0471498807, ISBN 9780471498803, DOI @uref{http://dx.doi.org/10.1002/047001363X, 10.1002/047001363X} @item [ZaWo81] J. Zahorjan and E. Wong, @cite{The solution of separable queueing network models using mean value analysis}. SIGMETRICS Perform. Eval. Rev. 10, 3 (Sep. 1981), 80-85. DOI @uref{http://doi.acm.org/10.1145/1010629.805477, 10.1145/1010629.805477} @item [Zeng03] G. Zeng, @cite{Two common properties of the erlang-B function, erlang-C function, and Engset blocking function}, Mathematical and Computer Modelling, Volume 37, Issues 12-13, June 2003, Pages 1287-1296 DOI @uref{http://dx.doi.org/10.1016/S0895-7177(03)90040-9, 10.1016/S0895-7177(03)90040-9} @end table queueing/doc/qn_closed_multi.pdf0000644000175000017500000001316213635377235016722 0ustar morenomoreno%PDF-1.7 %Çì¢ 5 0 obj <> stream xœ•UÉ®S1 Ýç+²¤š8ŽãdË ¶@‹X ¨ù]$x ~'½N.¥T JmsâáØ9q¾ûèCû¬¿ÇÅ=|)þãK 1Eö?]ß÷/Ÿ9F’’/€ûe *TŸB®ì3Dò”Dlut‘©›¯Štkó¶µÅ?ºTiæ_E „-¾-Îò2ŸüÏ 8ºOnï©@,>eä¬eB¹vž)G@M_ BÉ)ë6޵òŒ’šÃ°ÀZš‡X—–AV„YÔ!z `Y3ŒÎÛ_ ÷³~/ 1$Þ†!Uà8*³~YÞÙQ#6,Vâ#‚­×³4Œ$@e”†„Ô=Ö¶žÅ ciÎê8UW•ÑèÑ2¯ÀíìTn‡ÏDfË>2#Yf¤‰ìÝ÷~UP¢~e þÇ{5c‚ºJ¯ik"T!$u,…!HR$&à<ÈyÔ»5ÑNQC>¹×ü·y%¹B­-~.'¢Î!VÙ„%dï^ü‘d¹ÆÃ¨^¬‹ž§Þ¯’¤Ð[j3ðé(”B-ÊS¯l¨¥59g¨¥l˜)P*β/([BÚrH*-šŽggË™lÌš´¦œSX®Ñ¥\Ö‚J QÒK*À¹kÁ.Ð5T8ƒèœHzcr^%= ÌãbOmhàÞx½,R“«yoædN2ÒF†LaÌàU›"m.ŒßS.WX âWu!Œ=ÍÔ…¤1Ц™µä.&ña“UMÿÚ„ “}Åd>dµôkÕÉÙzfÏÖ@¶B1NË5Þ£¶ýúºþø¨ýÂÓÿõç¸øG}›ÊH§üáƒ;½Ò:ÀTäTD_4M‘Š?,îÞãç¯î¾¸ªONÐì(iz7îÞ“Ïw_cÛÝéäãv'¹oN}wßvZ¦(sËÔ8§5ŒÚ Ñ 7”*Cj*ÚQ€TtªüWDºq‡ ˆÒNI'$˨ §ïu*ÇÖçPÿ1гÆKéôX2ë(ÞaÐç4vÃÇ·ïîî|7×~sÐ7ÉÓƒžû ÷ Jå×endstream endobj 6 0 obj 796 endobj 4 0 obj <> /Contents 5 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 4 0 R ] /Count 1 >> endobj 1 0 obj <> endobj 7 0 obj <>endobj 10 0 obj <> endobj 11 0 obj <> endobj 8 0 obj <> endobj 9 0 obj <> endobj 12 0 obj <>stream xœT{PSW¾—$÷žºljÉFI‘$ÓÚ¾(âZ]§ ¦Zyˆ(- ! r  'šHDBˆFå!`|´ÅE©j-UW¡>»µÓiÇeí̹ÌegöêìÌîßûß9ç7ç;ßù¾ß÷Ã1n†ãxhªB)/‹JV+sTÏ÷oÑ8½,„Žä@j>m~‡b0”C¹ÝËHnêy™_FÚÅÇ×lOo3-9ý­wÞyw“º¤²T‘_ ‘®\³Jº¯RúŸŠT&/S䫤d:y±ºD)WiÊ}Ú2é‹g¥Éò|mqNéÿžýíÿÃÇ0Œ¿IV–“¤H)J+ŽYù')†-ÇÞÀR±8,Û†­Ââ±ÕX† °?`8ö2+ÆÅtØ\²8¤6d†cà.â¸Aî3ÞVÞ4ï²ó磩 ýÏüœyŒNš–§#̺*c94AƒÝк§3Ù ×ÁµÅ ©%È£!˜l$b–¡½ˆ÷ôì½ËâÊÃq²•k¡(¦x³‡S?/~ ­?#€Þ¸4®Û?"î/ò¨»¶þ|¢ áÏæháœCKÐüíÄÕ‹_5ô#ü>QͤLlù–Á™H˜ž b¶ÞYgÛ’HkœÑ¸ÑP2=%ìs;Ç~˜ªRœϤ¾ 2‹ö­ù s·j§q¹FW¿„O‹j}F/ý~OØ—WѺ饂3èúFØ€"y5„¥ÎÒh†fXÛ\ÓªqjZË XŸœ¾)¥?÷Ñ^Édá@yg,e©wo.žÓˆ«˜ ‡»¥¹Áî6ØÞÔc‚3æÀÑoÄ̵Éé/ÊNì”0Ø”ºÓà‡Ñh_àì¥ã…1=b>T{)y’÷‡]|€Þ¼Ç¡¯ õ”Ñb€@Sß” tŽ[z ~í`vWQ±{â5]å~·××bmµ:$M.«:@ ß7òy@•&N$™¨ÄJS¶\[N)`!Ë)>˜u%8Ú=~E,8¸«õpùhÄIØÝ>0Ì–˜èB¨´Ô茥TI‚õÉÓ’Òv98Œ^|úô¢îôÅþtU=7g~©ðvËd‹ ‘ÖÕõ¦ õ è"×7SÖÛm#6uZÂYxÁ}Ú¹ð ¼Ǩá’ÞÜàªcQ¬}J” GE\Í\þvRC–S¶f˜ú —žœ ›™[ýp©à[¶j=ÄÖÖz—õ@ˆl°3Ñ©<é´µ7·ÛÜPäwUeIÙkªÝÒw~…°D£Q«|ÚcÇ}¾Þ^OÅz~ÔzifTá ûî1¢þ±Tð.2¿V¨#Ë´ 5F}D-Ô·è@p¢#/ÏY‘³ô…ª‚âʘÿLAܤ›ûÇsÈ]Õ­:X ¶f|“0øb qœ)àùA|—­½ÃÑ;ºêY$ÃðhÝ©þ6ûì~ê~SòÚ¥œ œcCWÏŒUäˆûŠ:JG>ÝÈ~ý=/~ÿ!DZU{ˆr[ŽÝØf¡xI™-»ÅÞ(rÖÚÍÐL&³Q\a@*‘e/îÊù’‰B»Â{èÄ šjy˜lŠ#Ûlí6'ýn*S²p€´¦QTBx!Ýüb/Ž9hÑÔë!>„ú6ëy@ÿBÖ53¯à±RxüÝ.C‘d!ƒlŠ×S¬/îÞ¡{nãè§ÇZ"…Õ­y;kê3­"¦Ž@ë‘ìÇŸOÝ3¢§Ü}=5]››'.RŠô²nKøÈ¯ýÓ<º˜¼fý'ÑkVJ˜ÍÌNž‘~•dQ©Aú§Ëaè»YùM¶‘Qz ü ö4õ˜®i†Sàf°:e{¬ºÜáÏ«ëz6ðJWpZ;}göèèyɹÑ#“ð8^uVݧóU´gw±Í}ãÜ‘¡¿¼z?~⽌,}Q¾X©6”êvxÂGnŸé¿Áõ`öö|CA鉒-m)cEµó©z—}ÚA /zð»a{hèlKèï1ìß_ÃB} endstream endobj 13 0 obj <>stream 2020-03-21T12:46:37+01:00 2020-03-21T12:46:37+01:00 fig2dev Version 3.2.6a qn_closed_multi.fig endstream endobj 2 0 obj <>endobj xref 0 14 0000000000 65535 f 0000001110 00000 n 0000005129 00000 n 0000001051 00000 n 0000000900 00000 n 0000000015 00000 n 0000000881 00000 n 0000001175 00000 n 0000001276 00000 n 0000001627 00000 n 0000001216 00000 n 0000001246 00000 n 0000001897 00000 n 0000003693 00000 n trailer << /Size 14 /Root 1 0 R /Info 2 0 R /ID [<29BF9823BC70065D233987C3492E02B4><29BF9823BC70065D233987C3492E02B4>] >> startxref 5313 %%EOF queueing/doc/gpl.texi0000644000175000017500000010452213635377223014521 0ustar morenomoreno@c This file has been automatically generated from gpl.txi @c by proc.m. Do not edit this file, all changes will be lost @node Copying @appendix GNU GENERAL PUBLIC LICENSE @cindex warranty @cindex copyright @center Version 3, 29 June 2007 @display Copyright @copyright{} 2007 Free Software Foundation, Inc. @url{http://fsf.org/} Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @end display @heading Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program---to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. @heading TERMS AND CONDITIONS @enumerate 0 @item Definitions. ``This License'' refers to version 3 of the GNU General Public License. ``Copyright'' also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. ``The Program'' refers to any copyrightable work licensed under this License. Each licensee is addressed as ``you''. ``Licensees'' and ``recipients'' may be individuals or organizations. To ``modify'' a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a ``modified version'' of the earlier work or a work ``based on'' the earlier work. A ``covered work'' means either the unmodified Program or a work based on the Program. To ``propagate'' a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To ``convey'' a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays ``Appropriate Legal Notices'' to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. @item Source Code. The ``source code'' for a work means the preferred form of the work for making modifications to it. ``Object code'' means any non-source form of a work. A ``Standard Interface'' means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The ``System Libraries'' of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A ``Major Component'', in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The ``Corresponding Source'' for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. @item Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. @item Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. @item Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. @item Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: @enumerate a @item The work must carry prominent notices stating that you modified it, and giving a relevant date. @item The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to ``keep intact all notices''. @item You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. @item If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. @end enumerate A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an ``aggregate'' if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. @item Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: @enumerate a @item Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. @item Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. @item Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. @item Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. @item Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. @end enumerate A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A ``User Product'' is either (1) a ``consumer product'', which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, ``normally used'' refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. ``Installation Information'' for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. @item Additional Terms. ``Additional permissions'' are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: @enumerate a @item Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or @item Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or @item Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or @item Limiting the use for publicity purposes of names of licensors or authors of the material; or @item Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or @item Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. @end enumerate All other non-permissive additional terms are considered ``further restrictions'' within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. @item Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. @item Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. @item Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An ``entity transaction'' is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. @item Patents. A ``contributor'' is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's ``contributor version''. A contributor's ``essential patent claims'' are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, ``control'' includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a ``patent license'' is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To ``grant'' such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. ``Knowingly relying'' means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is ``discriminatory'' if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. @item No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. @item Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. @item Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License ``or any later version'' applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. @item Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM ``AS IS'' WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. @item Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. @item Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. @end enumerate @heading END OF TERMS AND CONDITIONS @heading How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the ``copyright'' line and a pointer to where the full notice is found. @smallexample @var{one line to give the program's name and a brief idea of what it does.} Copyright (C) @var{year} @var{name of author} This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see @url{http://www.gnu.org/licenses/}. @end smallexample Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: @smallexample @var{program} Copyright (C) @var{year} @var{name of author} This program comes with ABSOLUTELY NO WARRANTY; for details type @samp{show w}. This is free software, and you are welcome to redistribute it under certain conditions; type @samp{show c} for details. @end smallexample The hypothetical commands @samp{show w} and @samp{show c} should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an ``about box''. You should also get your employer (if you work as a programmer) or school, if any, to sign a ``copyright disclaimer'' for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see @url{http://www.gnu.org/licenses/}. The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read @url{http://www.gnu.org/philosophy/why-not-lgpl.html}. queueing/doc/power.png0000644000175000017500000004003113635377233014701 0ustar morenomoreno‰PNG  IHDR¶4Í5ãbKGDÿ‡Ì¿ pHYsdd–ÅÝtIMEä .#Á¯s>ãIDATxÚí½L[Yš÷ù©êÐ;†zMãÐ̦c§S›5X»re¬m‰4.)AšHD³‘¢Ý aê¿bþ@KT¥ÐÛÕêRÒe­šÒJ«Ä‘È¾Š”v"êÝÉH)0A•…ÕáÝ•±'` »&;tÊ4Ö€çm^ÍÝ?ló+l¸¾÷s>R‚}|}~˜/Ÿ{Îsžƒr4ðPs[Å*Ÿ×àÝû‚§sŠ¢ÀÓbê*âM»±õÍEVw¨v5ä]Ž ^oÃòÇãêUøhÙÕ¹ç×?¼x½5ÅÔ•y“jÑйPgŽéÝÍè¼Éòóã^Ƨ]®ÇU³<—ùù,/{`ïô|FAóÓË ÞÌO—+[I®,ƒ·—q¼0½ìªaïô¸+óâø´kãª2%®Øv[Êñöîèïô´ËÅF¿2ãžÎ<ÛZ_¦h³'o÷t>ŒãŸ÷6,?ªñÖd.œŸÇ›ùÏÀèmî5ÂË€¢(xŸ7q:PÂs¥“E¹]ô* ÜÎ~]¸’?·–ej¯Š¢xyª(0t*Šò¼p%½À@æ{w£Ñ-W)вQž©+W뀢@g¦?¹~)Š¢(Лyyk}Ù¢m=yšëéþ}ÈVP5sÙ á©ÒÀ€Þ¿²½8R²M60Ѐëa'5sÊM:•¸­4ð\™«áöC ÔxEQžSsóv7çȾ²¥LQEyÞKïómbiè…çŠRCçC½Ï]ôf•°Ñè–«EÙ(ÏÔ¥(вñ¦šNx¾Ñ¯Ì/‹šÞõe‹¶Ë6×Óýû®tÔäô­ àºMMRï_Ù^Ùfø÷Ô$3"ž£Fñº˜£FQnÒ«(q)dE©<ÈXä§p;ù|àöֲ̙߳²!–çŠââ©òEyîíÌZxxút£ÑÍ«EQ6Ë6Œ[îM¥†§ýÊü²¸­(½ l«/S´S¶¹žîÛ˜SžÒ°1œ§Š’lêýÛ“£sKÐð4†«\ÌÓа>ýpKÙAY.²|[¿rÔ¼ý¾·ïþwïéîmm2MÞ¿$q´¬-x™^†i\àâ®nÑ ¸nÞðn11ãôÞì]†ñ[ •m-ÛÆ2ËÛgÕ\ÌÃô‡¿ÈÛènÙ…ýzÓ¸¶½ïÑÆ£-=y»§û·µÁü-\Ó×uü%íÏѱ¶¼®é½óã5½ÐÉ| pÕ@ï­[¸nMlý¥ÞG0ëÎ@Ã<[˶P³ü ׎¹àΚù_4ŒO÷Ëó ;Ý­3[Ⱦ x»_×ç—ÑÛ°õ}™¢·z²ÑÓ}ú‡—{;?¼ÕY€ÀõCoçZ#¼¹{žç. æa¦¬SQj2/Ü®EQ”¹hèÄ¥ô4<ßV¦(Jöæ6ÐéÝ~'ÿ¼ð&•ÍɧF7¯ÚÖ™Í[²Í7)^žnôKQ”ÜdÕme[}Ù¢m=yºÑÓ}ûŠòï–[²›0§ôæFiLÞQôþ»Ñœéå|3éËÓ44ì(È\6?Oî e›d+v0N ˜^Þ¨2£ùÊ·¼ig¿ÞAɽš{ß–¢m=Ùèi}#([qy¥€¢£ÀQ»%“”Gí–LhžTtN‚D@¤“ )[‰€HÙJDÊV" R¶‘²•ˆ”­D@¤l%"e+|²]~ßëÏ= vwww·½ž|ßðŸ;çG"Ñœ<²M]óü¡?˜Sj‡ÃaÛv?:Þ?èÞ½Ô­D{ò„ÒDSý\ˆŽuež¥º.dÄÇÌÍ©à×6[ט‡À°ƒþ¸Þ#AòXÛ¦¯¸#û,´¦€ 7l‹Dq€'DO*îéʽ-–Ò{,’£B,Ø`”{fRçl¶•ø=GÜ;ìÁ¡au¿ mc8†rDÓºÞƒ‘òÇÛš=Á'3ºâë5Ó×7²¢:”ŠÂJö¢x¬éeêÆàpöieon£èöydÛG¨íÿ>¿lû±ù3²µõ]ÝÄW€'_ön­‰Ï1wuëÖwÉÑ%lý±a°e=ÕP<+_Û0¤¢Žaˆ¥RfBÌz÷]rdÉsKæ‰Æ xa0óäb<þ €Ã$5v-Aý¾)$G—<ÖÖsñ²'Î0F—ÇwÙ7ßÃÜ?L‘ñc‡®…â¶.ºö$ÅÞ#Aòù¶Ÿûâx†þ®Ì“®‹Q²–Õ1­vd~²ilß«ÒoŽjÙöQjû=õ¶@êyg)9ZtËP‰€HÙJDÊV" R¶‘²•ˆ”­D@¤l%"e+)[‰€HÙJDÊV" R¶‘²•ˆ”­D@¤l%"e+)[‰€HÙJDÊV" R¶‘²•ˆ”­D@äQÑùY_ÉWø'm;ñã|…••Ú†CÊv+kk¬ü™VŒ‘ôtn×*²Ù5²?ª*+tL·¡9R¶°²ÎY_ãÞ)†õlo7;]QûãÚ£b‰²l×¾em=¯7ÀžßÅ¥6këk{¼¸ûÁúë×TÖþ¸¶¢ÄÝ3GW¶o^å±®Õ•ü¨‚Z½{·¹¿¶?f~¬­gÌîÚâ"Õµ?6|÷ËQ•íâ?mm-•ü¨B$ï°¢6×õ ÞüñÍ ÀÊʵ?®h0Ås4e»øj  ¶š—Ïym-ëoþôz àÍ*jt¢\†öGP¶ë¯×jÏ”Ýwiʼng×Þüéõ:°þúõ‹ÊÚ(KW÷ÈÉvíÛŒhO)SSTyê”såÍŸ^¬-.FªktBï>©Î“íÚ«E€ŠS?-SÑf¨®ÞêêBíOëÝ%u9R²ÍNTœ:S–ßœÛÙîêþÑUVC>B²ÍNTž9¥wO´"ëê¾Yƒ7ï*§©…##ÛÜäÁOŽŒh3Tž:ÅÊ·‹¬M-£‘ Ù–ñäA!T;«^°Y=«wGTã(ȶì'öçtõô:s+eãà–¿lÈäÁ>Ôþlz¥ŒÜr—푚<؋ʖeäà–¹l§ŽÚäÁîT”“ƒ[Þ²}ñ†#8y°eäà–õ^²•9¨mi‘ªÍRû³jxó÷+‡¯IoÊZ¶¨tÉ)¯]¨l9kS‹z÷ãД³lçVàß•Á7¢ŠT8ÏÂzä…Þý8,e,Û7ÿ/üÃÿö…ÞÝ0§[*`nÊ{<L¹ÊváÁ§ÿ—ŸcÌ<Ö»+£,Ür•íÔãü—þ3<^Ò»/£Ür•mýÿ;øÏÝ­¢jUï¾2ppËjÞv©nãaóÅRñóJz.UéÝ-ã!ü nÙÈvifajõî†DSïÁ™JhiÑ»c†Dô…òíLtf`&'ÒõP[fQTEð…2íã…©Üà 7öÕ8õ;D¡d›k}sSs®èÍœ>ÊqŠ… ²ƒ[²mž¢ª¥¾¹nKQªÅ4#Z"°ƒ[²mªk©ß^òBº!®ƒ[²mÛY°2§4!Ú“upN·å¸ÜÊ3;ÊèÝ+crº¥"­˜•µÝÉÜ 8wÜg¾_Rµ{"½ÝW¶±Ëï{ýÛ‹Rƒï{ƒþsçüû½¿„ìðdà×aG·ûÉ6uÍó‡þ`p[™?:Þ?èÞ½~ºÝé#ä ü’…0ºÝÏ·¦ú¹ë‚ø˜ù¢ üÚfëóvÐ×­ë;|„|_’"Å¿ÝÏÚ6} ÄôFƒm1€(ð„áIÅ=]zõ|u»7ðKR,‚ØÛý¬­ÙÁ`”_öà÷1`Žwôá²e¯ü×G!€~­z¾´ÝGØuUWR··¡À·Ì$˜=ñ'„l„BÕ¡T(Ê%=‹Çª_þÁ6¨×êïöl üÎøµ 2¤f2öÖà™í ˜·íÇæïŠ¯O<¾ì ZŸcîêÎ]öm»^µeÙn_yyü¸íж]Šê–©u¦ZŒ9'ãñÄö“­?6 ¶6Û0¤¢Žaˆ¥RfBÌza Ÿx¼s¯¯d Õ-SëëFÕm†ýœO4Á \ŒÁpØ‚¤Æ.à± ¨±‰ÍÏ›]¿òÐR½{lhª[*XŸ2²Ÿ°Ÿµõ\¼ì‰3„¹0˜b€¡k¡¸­ †®=I1¤÷€õH1¿ªz¾`átöÀðööe¿+âq<©(9ËšŠV;vA·O7Ãûb~^Dî¤á é&ìÅÊÔzf³Ž!éÞ_¶W¥›lßLÁéb&¿V?]¢^ê°'†Öm·È¡49^›ñ«ªGæûØcû·e Û+Egüj¾åN‡=©va\ÝŠ/Û~]ªƒ€<ÔaOjÆÕ­˜²]íÙÜöâ _U=ð—zÂèœ2®nÅÜÝ0µúx*;óVÔªî&Í—êå©ûqŠëÓ?3`X˜²Ý³øOpâ _rÞ¶Naí•#”„tV§6d»ò ø±– §NÃܽ{ñ6BÊv 겫ßB­<¤¡tœ­†ˆñèR¶›>Âúkø‰ÞÝ)kœ™|ƒ!¢l·ø‹ëT5¢¹<¨>Ùïd,D”ív¡Ð([ÉÁ8S ½;±e»é#¼YƒŸêÝ2§Â +F;VZ@Ù.múßÂ)yCVbj è&(Û™ aíÐ7d3_È@°}1 › àrC[s.©í·Py¨=æ _À’L±´Î)V^jv\@kKÝ¥ì–ÝE8\šúf™;´Œç&ˆ(Û‹ëTrÁ 2l_ ç&ˆ,Û‚‡ óh«“æ¶ 7› °lWÞÖGZ`ê°uŒæ&,[UÂ.U±4¡÷HÀ`n‚¸²U'¡ª¤l÷Ç`n‚¸²U)á,Ìè=0–› ®lU G¨k¿Ó{,"`(7AXÙªŽðsªªôŒÊMl•léw--™U-Õš¯´IÙBíé9æ~bŒ„‚YÛ©…¿ÔGØà’TmaÈMM¶¹à¯C‡#HŠÆ@n‚X²]ZÈÉöÐá’â©= ‹kz÷D“íÔ×*á’â9SÁº!Üád›1¶*„#HŠ§Â™9ØXw„’토J8‚¤xNœÈ#¯7BÉvÃGÙôÂi 7A4Ù¶€ÌŽ #qD’íBÎG(Ev„ v[ÆpD’íVAåi„…ž»å.‡‚0„› ’l¯|q© J’¡.“ëF²?†pD’-õWÚ $ÙªÚäæœB1‚› ”l3¨ްI,ɰÛÂ0€›  lKŽP׫÷ÈÁn‚€²-M8‚fäÉç…¡¿› žlKŽÐ,3}Žîn‚x²-U8‚ÌôQ8º» Âɶdá2ÓGèí&'ÛÒ…#´€<²PtvÛKVÊp„KKMmzO*œÓ¼YÔíüQd»ð¸©¥Š’ÖPÕ§÷ Eâĉ׼Ð-æY'ajêî]‡5‡³zº ÂÈš‡5ˆÊ3ðúµN "Û…¥LÌ¢<¬Á8œ®Õï¤=Ad;-U% Ggë:í?G¶MÈìÆ¢òLæ€yC¶9AfG0§kõJS#†l³>‚ÌŽ`0Κ.n‚0²mB£ìK2¬`t;WÙÎd|-²#,Ýí»«÷pâL%èan…m8ã#h‘au‚™P0z…‚ !Ûž¾6·FÙê›åYÅP{^i?y+„liéi)i8Â~Ò»-}BÁÄ- U8BK4·ÅPq^k>y+Žlµ G¸$w9….k¼âÈV«p„–*™é£(ÎÂÚ+ÛF¶š…#ÈLE¢Çä­0²Õ.Afú(&o…‘­váumò€½¢ÐaòVÙjŽà¦íçzW(´Ÿ¼e/™–‡54Õé=\Áp¾Y_¸4lÐøÖöñÔªÖ‡5HՉ擷†·¶Kàn•<¬ÁØœþã"?Ón¯á­í ÔWÉÃŒŽSÛÉ[ÃËvš5 GœJm'oóÉ6Ö÷þ¹ÁTöI°»»»;¸íõÔàûÞ €ÿÜ9©;8M2;‚ñ9«é9ÒùdÛW=~/šÓc‡ÃaÛöº?:Þ?èÞ½P‰u»° Í2;‚8aE³ÉÛ<·d¡x¿™Þ¾Ï3ÏR]2âcæ‹f€Tðk›­kÌC`ØA¼´ý›‚™AjO-òê„F¿¦<ÖÖæ3oyZ S@Ð ¶Å¢8À"„'÷t•¶3P¯WvVg5L›ÇÚÚú!~Ç—y’"`[ñßsć=øýÃ@̘ãÄ}c8†rÄŸºx©j÷V EŸì3ÞûTóFE¦âl„ׯK|â»ÍÛúƒ]ý™G+¾^3}}ã!!ªC©(äî㱦—©ƒÃÙ§?ö¨ß˨«ù¿õÈŽ°ðÌ4kެȜú§7¼¨-íäm?@w>ÙÆnTå$h뺺‰¯O<¾ì¼BŸcîê.i/£ÐòJ—ìõÍ3ü­”mQ8ÿ޵Wgµh)Ÿlo4}¾ñ8Ï8¯6Û0¤¢Žaˆ¥RfBÌ6qê[¦þ«E8¥CÕ¿šafBæi.†ÊÓsÌý¤Zƒ–òÜ’Å/„B¡ Â` ‚¸‚?à°I]Àc @°žÁÚúœ\§B JÍ2\¼h4›¼Ícm£©n€—0F—ÇwÙ7ßÃÜ?L‘ñc‡®…â¶.ºö$ÅP©{øJc —&Xz|I–ÅÅ9ÅÊÜéÒ·ó޲ßñ8€T”œeME«;Š ÛWûŸë3iûà1UCUº4-,‘E*~Vò_W÷þ`¶ì —yS•¹‡æÒz@ÆØê´Ôpibuõñ}Ú•³¯××_”>òÖè¡4¯×ôË ZÕ&S}KÅYMRã]¶º®ë^ªcU¦ú(ŽSµð¢ät .Û7oô ¢©ºTuIÞ“‰&‘·ßÝð jµ˜Ü…¶yGV,šLÞÛÚj»…,RµÅs¶ºô“·F–íßB­òÖÈN§UÊ#F¤öô\©#o lmgVëåyNBr¦ä9o ,Ûè{g¤±’ '¼)éä­e;cGîד¥Îyk\Ù®~'­°8+X/åä­qe;åø!Æ0¶«äoqTž‚¹fW2®l¿=ÆPíDßcx[$g«KšóÖ¸²ýãyÇ >ªŒ¨)š³°R:ÝV¶ ?…]ÂÃߢ­äÑER{×JU»ae}3ˆ±¥fdZü")éä­aeûoðŽ1Œ-47ÃßêÝ Ñ¨p›ÅUnTÙ.þþ[½;±Á_ÁŒ ¼-’'JykTÙ~ §l‡¯F%ä.Þƒp¶tn‚AeûfÅXK —2iÍË‘ôl²D5W–.5¾Aeû ´JÞWuew¤i"á@ B:ps¤Dm”î\ScÊVß½8ù¸TECyÈ6<:’`öù*ßÏÎ&°@¸Twü%;×Ô˜ñ¶Æ ¯ºT%rb¥D2ÑbIÜOZ?a6‚Éj‡tî5kÂí,Q³Õ¥Ú cHÙ®½6–g öVÈ'³X-•I`ÉÙÁ~Üb‚O&[IÞi/‰tϾ^#ò3õë5¤l_Aµ±Œ­èœœ%áÌöx+Nø-€=ób+éûÉûîR4\¢ìJF”íÚ¢Ñ<[¡I|Öãv‹|VäSgâûR5^¢ÔøF¼%{%ÃÃU$H"n_‡ì¦]®±û,­nfÓEU\¥™¼5 l×_CR†¨E’MvW¬}í$î%Ôo¾4t (ÛWëüËÈ2RP%œ>S‡uß«Lp?¼_‚öK²AÇx²]_„YêåqÍjþ*ŒõW…M´@G)úà,Á :Æ»%{µÎ¿½Â°§&, õ÷t?‘ Ð‚VKÚN8¡ºt+ϼ`ñ'êÎ ÏÚ.ÂÜŸiÒ»ùYºû©HkeÉî¯:ÝÌŽ„¿RýÆì´úÙ• 'ÛÅu~ðÿPePkûéĪH‘`ŸÅ]”õŒ@ æÂœ°¦®›`8Ù¾‚ôŸ ë#´ÁcanÓXûŠûÎïp›|¦" taT«~ü¹Ñd»¸Q¨×»»p¥NœÀÛðÈè¦"ßÔÑgeô«Q•»r¦Rå}¼F“í+øÉ hÑ»»q &ôîDa„9È‚…È$““êv¥Â oÔLÂh0Ù¾Yƒ$Ôöv½­‰÷YMW‹5¶+VµãjOÀ+÷ñL¶¯àÔ?ØØÂ1vñ&F1ùúö_fȃÕç¼j⾺®Ê“·Æš·}ó~úïªfŒêÚÍÍ3<0êãé¯évÓAl-`º #‘Ùv5M®ÊÇŸËÚ¾‚Úêú+_ØÚr ¿‹w4AxöïO„I«;¦î :†’­îG5B½»xÛ*îÛú‰ÉÚNZÍ•g…Št å$o/N>.M´|«Ã¤Ût5|¸¯xkŸ‰t€«ûÆŽLå©9æ~¬Ò¯×HÖVððº¡ÃNt02H‰°#‰ÄŠöVÍ$ŒF’í+¨TÍi/!Æ-³aª¬XÀ}À»º¼¨˜„Ñ@²][À³»k»µw8Û‹ ÅÙÚÓ0§Îä­|Ûoå^H7uWÉHºÝÌŽ¤¯«fqϼ^#¢Ê,‘q¬íº4¶*´ª÷Õ~?™V/@¡â¬Zk¼Æ‘í«u*Dðl M2N¨º³Focƒ'à•“·†‘íú"œª`F˜°@CbiWygÛ}]Íúœ*íã5ŒoûzŠ30´Zÿ׿Sß`aÞ`ù•Òi‹{#i‡Jt@rí@± ù¨8ó‚×o?ykÙ¾ÊÛUq6kMÜ¥ÊX«Ð÷>Õc·H†í>Õj;ýÇ7D~vè4ñFq×à D1ìÆ†·xw z;:›¨Ÿ«6fVÅ`ê$a4Šl3Æ–Œºùñm>«bõ7FÚyœê-Ææ°;±¨¸è Îw!ô~\õ±KÖØ.-dmë{0’nÓ¸?)n¿c´w\WÓ]>[©Â>Þw¡É*Á`‹£²’S•0ƒHy=Zz`Á(–…o†±–$=‡Å “*Æ&8UXã=æþ@¼É xJ1è¨ýùb- ’±Ú–3UÕ£w7fG1•*»rd4¹¦Þníé9z¸$ŒÇ€A¼,Ѩ âÀ”@®-À•Õ &êŒÆh2¥MêûµYIÂ-êÕ~fq}ýk¼ÇÐY®[YXËÚ•ùÔé> –6Y}÷¯ª6»º“󑤚¡`ÎiÞnƒÎ1€±'© Õ+]¥uÁLzóc>ª>ût©^÷¿´D Ým½^ºúMÇUµä'N¼&r(Ù¾ øû ¾â,ݸ ¥Î°y=v£ê¯[>«Ò¹‰@z$\ÒìfÕLùq¶¢Úu¨ ŽA*ðy—Ÿ®¦Ë>½]¼reAœy„,õ}z÷Ž— òîG°«7 VÙrÈÓsÞ…(]‡þÓ·Ôëm¹Ä#‰Õg-Íy![HäŠÕö̧wÁF eÕJŠ&14‚é“R«–Vì­zu ÇÀæ¹6)µŽó¶’’¤Ã&uƒbób¿^²éµƒp êóBÀ6¤w_$àx‚ãZ´c!ýìxÉz¡ÌñøŠMÚZñH›L¾€[1ÍÞO›œjnä= Ç€>ÏE‡ÞýŸÕ»—´ž½KNv˜>Ѩ1+¤Ã­p7ÞRƒç.ûcz÷Dp>úÆÑ`é@"\Š#™òcr›Z å$  Å6ÏçzwFdþy‰¥ßh»ò`:™Øÿ <õh?o!&îéºÐæ½ Ö÷þ¹ÁÔ¶¢ÔàûÞ €ÿÜ9¿Þ0 -=° eÂætš·[ƒI„ LÌÞ,ýÂFA‚±PÜæù<ÿ=YŸg›è7üý*õ¤¯¡¾Mäņ¶… &Ð,Š1Àg*I|íîŒNòD½me‡á0h¾¸ëºn(Þo¦·ïsˆ™/šRÁ¯m¶®1aýj-R,--Ml#l‘ô¬N1Q¯Õ >¿µí“Ì& 1û.Ðïyr¹/ÿžÌæ3g½Ñ`[ ŠƒH{vw¡ê³¾Uîþ¥Ó`iSG‰NÈÝý=„PàÛÌ-Y< ¥vÛWà¿ìé'd#ª¥B¡PnÛe}¾­‡ÒŒj9{± v ˆwyv_%»Ñô9€Í6 ©¨cb©”™sa FøÍ}ZøÖ0v|L÷$ªÀpÞ†}»«v,~! …¸‚?à°I]Àc @P¥P†rðZJ¯Ú$îŽÒl-/€ó–­V“÷â@h,ŽíB^FSÝ/ÍýƒÁà ] Åm]0tíI uâÆVÛj®##ŸU£è™<˜®iÝ—ËÞQ 8èð ùöžHE7)¤¢ÕŽEÐí;„á¸K œ,„ÑIL¾’íÑ-„ð3»^¶>G÷1Àß]{î%3{ÞzhV-ØqA¸=»zqŽk`»áÂNu“‘Ï»Jùºl:îÊéé»T®m©IâþÄ®õâØvÜVPó˜½q ªI™ï0´Hc[á‘·Uï9ÿ‹‘óº/•½ Ûµ8ÄõÌV~<øBý:Ã#Œ¨˜jö€Ø;,*žút06ö’a¾§÷çQNÜà®ê 'Mi«Þ^%@r4Ròî{sŒx(5e—$ê¡vN»¤Åê»Y÷¹'àY„gún+;6ÖþÏÕ š•d¹2¿Àƒ*5£#÷;Jšè«ÎGÒÇõ»ýÁÿg{ð?ý§ÿýþ/]Ó߸ôÎÅd$~Ø2µÊËæÕ*LÜÿÏ/Öà!¦wÜíºªöoÞ÷ÛlýDõþ$ÊŽª¿Vùh%K»\4­NÒºÞ¾‹uƒb$êûT=ÚÁÚgÕwql;“7ï«(Oá夜2¤Y½£Ò_`úÄ@ªe*Í3›—²-m—`jBš‰ðˆÞ£ÙÎyLzz·ÇèðWC6¾K¢WV'.©1™ ûZêÛ¸Ñuì˜@æR* WšTY³6ùî[ôºÚ‰fU>Þ·ŽÉۢʙ¼“ß·›ôŽCÈCâɬE·idéÛðh8`@/ÊY’¥=1b¤lάÞØ‹[ÍÓŠä˜Þ£—ìÃÕ‘ˆ!Þ¢]Ç`qim Mâ~šŽ>#MØnb²“Vó,ÞbÖVV”(*ýu"yÕ¢{PönŒNbÒ'€QZ[M˜ê;Pn°p‚„ÞÙ{£ÓR™”­L ­Þ]8ÀûZ[é0LüÌÛ´`Ñ©wÒIЂ¿¬Z]ýÍP±~¨ÓÚî4¦_›Á¢[˜„´¶ZPßs€h°‘É@#«¬Ñ%LÊVZŠK†IOêÝïýˆÜ¼¯‹w+e« mm0UÔÑ–tËôU0é$=æÀ¤o«=«S<®+8,Õm²r™a+îÑ´S]eR¶ZÑóÏ Ü­+0?_"@‡ÓÀs\=®Ë¬²t´¢ê³*(ÔM¤Ó‹ ß»…¤7eR¶šQõYUýg^{ÕÄU½û[‰‘›:üI'A;꿨*hê6=ë´û’Ù\¾/a=}’ÖVCê [p¸?ŒUÇÀjÇò½æ­Jkk8Fg±ˆbk¡µU‡¾Jkk8œ&Ü⨻í0Jkk0’ëõQÃ/3l%ý,‚֛ʤµ5ᛣh}ôa™Lj¾©LÊVVïîV3;Âä¨Þ½+““Ö ¼ÒIÐÕß,Ì–wVÁjM'A]¡¸Mçµ^ß•ÖV&XÈƘL›|N#%¨+ k»IëÄ9R¶:p© ~óÖv‡ÄÐ(¦«Â©ˆ~©­n¥lõ çRÝ&¾J‡Eók³ŒÎj¼©LÊV®ôÀêÝZݘD4µ@‹Öéõä-™>´q—Õß|¶y°ô¤ÛÔžnT¶îï5Nõ!­­N´m··#£´˜~-€©Cãe=)[½hë©bc6!&!¨_›!9úK-“•IÙêFÛgU=9'ÁéÆÚ®w‡Ã褦gHÙêGýÝÌÖ²ôýú}Xœ ¥lå-™î$î'}:åÒR §Ó®åêž”­î$“$#‚«÷I'AgÒ8;Ðùàeu¥]˜´¶úõYÝ'EøÚÊè$hö×'­­®„GÒVT9½L_ZÐ0©©´¶ºr2óãîD¸ï@y› „ÅÍyÍvðJk«#³X;,>+3̨yª´>tth·ï\ÊV7Ò#0îëVhn#®`$G´Z铲Ց0#Ù›è7üý:D"09Ê'ÖöâRÅ_©¿»Êã™Ï„spÏOZJ>–O¶þž'©® ™ñ1óE3@*øµÍÖ5æ!0ì ?®÷§$Spÿz±³µ- ¿[à=áT‹é“ÒïŸÏç$ô¿ôm> ­‚) èÛbQà “Š{ºôþ” O®èЦºÏÚªúôîý°B¤Äq`ûM€¥ØVü÷ñÁa~ÿ0óæ8qGߎ¡œñ§Œ?üRçÏÌpL޶¶[¯Ú²0VÕsE“‘OL—';Žšl¹ZY⥲=—‚AŒAðãAð¶ ©± xlJÏ`wî&F±^UEµ3"eQ°ZH–4'þžÖvŒ.ï²'n¾‡¹0˜"ãÇ] Åm]0tíIŠ!½?"c‚°Jçz. Ñ'Ðæ‡ÄdÄ^ÊSHÞQö»"ÏÌ⦢³¹©hµcGtû¤áÝJø¤50©cjáÓ¸rIï1Lò&±&X,ûÞ’-;ÃeÞTeî¡Y u7Ò#«ÏtU5¯í.<ˆþ•(×bŸ-©w+KÃl„ijvõ~um ¿[bf¦íRÞ#+Œ‹­%=©LF€•‚ÎVìçÕ¬²þ‹`¢ïî’Þƒ+«J˜¤YZ[õID>±¶W¶ª[kUßÏÿv&&î ±‘~æW%«]Z[õ D¸Ÿ¦Uõz›?ý´Ú„P-„ÓéÒ…ÝJÙªÌl’‹p¼4•7õÔ 2`r–òÔsé$¨Jâɬ»ÃÞ¾V²Üƒmmz±PÎw—nuPÊVU¾›%|¾Ðý¹åMžOaij¢Eä|R¶ª1;ét»Ÿ%µ;¢~já’¡ýÜH$q}óÙêÄÔLHÙ‹ÉQ¾wÓv²}°4Ñf`á¦GÒD²›«SÑÌþ²ÕUOKÙªB‹s”dÄ©h™XbõñÔ%Ã:»&g˜Y'ÀÒã©L P}K‹:Ë%R¶*|vwXÜÉÒ® í¤eib•¥» +\'¹¿â €º–6Õ–øö¥)”#J¹ìû{‹ÕÇ«@a…›ãÓ…ª¶¥( ”F²'ÉgÇ[öY‹Frm£êÊ¥ÇaéîÄz ùIN}縲ªr²f)ÛÃ1{?mr›.:5;Û{;UWÚO2 ùÒL]37aÖN ú'e{Òi‹ÒáV«B–ºžKgŒ¶r¶45µ@}3Α’øûR¶&ý,lõ™Ü‘ó:YÚu=zÛY˜šYXX¨w&Ý¥IP#e{`“ÌÎÚÏkw†œ¬>žÊFVÖµÔá,UV%)Ûƒ1ZÙj·ÏšÒFËgÿ`Uß@ò¥L6éÍ Úð÷¥ø»–²=‰ûI“ÛÔzR¥ýê±:±:ѬçÖúº%Zê7~™ÆYÇ_Êö O“~Ö^Ò½©cbffêuŒ»²Ú²u½Ù!\ÙþàU«¦¿qÙ_‰$ïÿGWEå?þç+ôîIÞ¯Y_‚?ýÇ¿_·þP«6—&þÏÕ÷7žY¶5œþG—[ý<0#­m‘$oBØí¶ôd±¶¶™¿›‚¥µ9¿73mð—»¾îv–Ä’²-†ô¬Óâ“pcPÕÍÍWOÀª?ÌD³ÓS»ç35‘Œ´ªÞ²”m„GÓ×-çg;ŒçÓn£®çÊã‰Õ¿*u3súë[öZº ÌâTý\ʶž¥yÖa¹~øŠJMÕ•KS%ŸNÈ„Æ47í‹8¥ú˜”m$œ&çgU‰æ¶Dy7S×ÐÔ²o˜ºs¶KßR¶…1æx«;­þ×ÌDÕ t‰.Ì0´YÕPAµ:OÊy[=yÖZ‚ÜZðwS›ëëê±guf!hÀü¦V û[0Y³a`j"e»?áQŸµ=rCC ÁÒÌÌ4×¹äñ®~º‘Á©êivG"iµO4•²Ý—‘0O|&Ÿ~±‰‡¤®çqVu3ÔH¶Y­Ö5Ô7d‹ÂwiÕoʤl÷&i29Ã$’aU mm3 « ÿ²@îî€ õUõo93 «°3pis½¢yª¾¡¾ù ²3¡ú¬”í^$Ÿ…[ÛívK‰Ž}ÑŒæf€…‰nYÎzLÆq¨ªcË[þÝ=WuغۤzD²”í^L… Ÿ7ù_‘!¨ßº9&ç£ÎM›²mžÉ÷ÎÃMD˜ÜT×¹•²Ý•°Å~>œ>þ½ÀîÁ^|šs6% ÔSuu¼§â>[‡¿Rõ KÊvfG’V»©#­óŽ›’Q•q–þ9Êê 4ñ7Ï’„[Õ¬PÊ6iLÇ“$Â%Ú e ê6·P$-£|¯j…R¶o“~vvXœ‘ò­V8×Z¤o[j"“„Ï[ZU<0ä¨cQ;–FfßÎìH·Ó÷X¥jU$1òK5óöHk»ð³nÚ†ÛÛ(:÷“DT¼»•Öv“p;$Ã8E_^0Nˆ¨X´¶9fG’Ϋšgû<*´$íjN%JÙ4™HIZD ó2:–«ªV' 9róv+%<ÚE’Ô»)“Öˆ„ Ÿ7]fÇÜL«xSvä­m$Ám”Æ"U[JÜ0«ZeGÝÚŽN‚Ót^ýÐ:ÉZ"NõRŠeÙ&#N‹s’Ù„µUï®TݨTe›´0:É÷V»Å]¦‘‰Æc6¢ÖDQd›N×p1ud6yÝb…H{ÙÄ€ ÀW ì*E'E¶‰vaK©Å›Ž$Lí|—dÖmÇzFïa)N&6N…<,F‘í,˜ 2‹Ïžœ²—F¼éY«%1‚©3 ¾Çô[½}Äp‡UKŠoÙ·&,0 ÇILNÚ}L®YíêÎH„ioµC:auª]·¤¬êeK0ŠlÝnwrÖBNÂTŸ=1iQ#ewúÙ«ï… Њõ8:Èt”±VioŽQd›¡ÀžNVB켊ðѤ¥Å’>˜yLÏ&Ž»Má4 «}Òjy°ŽŒ„±¨â'K¶Øí@º5„58 “ÐBdwáôIkúM'LV³é‹Öð(v7ößYíên•ˆÙr•-¦v'i+IÀÂ÷`‚gI|öÙ'¦“í$Ò;܇t⸅Ñdú¢u6€ÝGd–VÎÀ,¸vF;‹éâ «´‚nTÙf°Z“os-; v¾K`‚'³ç÷¸›ÑdÚÇä(vßÍnM‹øÝj?iBk ìjolÙ`²Ûöö$КLÃX²SfÉv7‘$³ö“[ÞÅ­'íÇA.' +$ÔP®²Ía!{CuÞ`ÿ>i%8žÌ\pœ'íV¬¿…¬,1£‘¤O…ß‹@²ÝÀd‡¬m{V«ößÈH.c“Lªr湈²ÝBf¾Ôª08#ªÜ .[‰`8ÛUÙùtäw7H´¥ÕDòðµHk+Ñ–H$røi0im%ÚŽ>t%R¶mqÂw‡®D: mq'œ‡Ÿ“²•hŒûÉ pâÝ; Rƒï{ƒþsçüzáHŽÞ<ìdÂþ² î,ñGÇûCàÝ»’º•ÉýÉäÔ!«ØW¶þˡ̃x ˜ üµíB×úŽ~›Þ‚D4܇Oº¯lû_fb¨‚Þh°-Åž!<©¸§KïA"N{{ß!«(ô–,>8ìÁïbÀ'îèÃ1”3·ÿú(Я÷‡"1:‡ÉM |[è¼mÈF(TJ…B¡•lQÒÚÎü<^Xžöª]§šU^èeùïÖ ?,ø{aÖ¶P–ñÁ­-ÓL¸Û׋6kÙ:w­òÎéw,wЬÒ5<‡ù[<úŇ·îp}–?þðãe¸óèÃ_,_ÿðãe]?ËC#­m†™Í‡ Uþà½z€[ós5ÜúÅÜn5L?ºµÝf&¿ç¸…Y°ïxh²’8nÚRçí]ªœÿø©wúoÃFÁúÊC¨¨p}ÐÛÙÐËG^î,O|›ëÿ#ÞøÐ;0þás®wÜ9=0pý΀ޟø¡²ÍðÅæÃO›7>˜hþX¾5WãÓÀôù†^-{²ÿÃ4 Û«œš¤µüvÇC»'­ö-uÎî¨3Wå¼×‹Ë;Þ»QåÊÔC¨mxzgüzCçÍΗk=oðÖ4Ô|á…GÜÄûÁ¸wù6Ìà•Ööh0íjxÊ8ËtŽü|úãÛ\¯q}|›ë5½ÐËôAëg[©ÿ#[¥× ËÓ7‹ª³f`€Gs³ó‘ WÃøi—w`zùC˜÷”Á<ƒ”m†M Ë{›ë7ÿßòË~è¥æSö¨Á[ÓWÇíûÛOÂIÓu>ÜRåøõN׿Eµ{ ¡àΣ§Ð9=w|º“š§óãwæðÞ¦œPÔâÚ7ªUeDºEQ”çsOQöz](Io÷föEQÅûô€uþ{”­unV™ìlxX\•se SQn’5e™ÿE9€lsuþ”­uþ×¹*o»ÒѧOçEQ:o+Š’|ú4©Ì=M*Š2—). ®Iß¶Pn~|Ú5¿ü´z?ønõ~0]3ý´æƒéšé§‡«sy{÷®e«œŸ~xZäZ„`ùÑøm Æ 44°ñ™ðŽj+(Ý>Þƒ)1™U2`yºÆ5kyW ™ÿU­ópU0}½·SïÏ«ttKÙJÄ£[.îJDÊV" R¶‘²•ˆ”­D@¤l%"e+)[‰€HÙJDÊV" R¶‘²•ˆz²ýƒ~£èɶRÛ1im%²o˜xp ¸Ðµµ(åÚ|]Äüô;ôƒäȱ¯lC8À¶­ÈõÙm+J´ñšNãþò£hô£/õi»íÆâ“îh7ð,QµÎnXiŒ*Ê íDóv£ß4®(Ê“F]ÚV”•¶kÚÉv{Ûß(Ê7¿×¥íh㊢|©áßk†/Ur¶ÆàjƶFm>MãÕw ØAÃõ—mm‡ð¤âž®ÃÕxÀ¶æÄ4KééSI¶1`ŽkÛýmÚú!~ǧKÛŒEûõwÜÑwÎ{Y³O~û¸ïõu{Ñrè9T’íÊá«8|£þËÍ>ÂmmÇoüZ·qÇcÕ/ÿ`Ô¥mn\èòEŸh9ö,*ÉÖÕ¡ïÛ]Ž i÷‡¿­í í‰?÷keò¶µÝÄ瘻4s϶;5t¡ë×zL%¨t.YõF ®†loôFÓçzµ­ç¸5Þº­í¸ 0k7鸉JÖv3WC6 ‹_…BšYmm{úûû¶~­îM¶·m @P³?œmm_ Å`L`@µNºŠÛ4»ŸÝÙè]ÑT7ÀK=ÚÖxØÛÛºö$Å.m;ú/{â¶½‰j‹ºÄàêøk˜¶·BkÞv.[kd¼­D@d(D@¤l%"e+)[‰€HÙJDÊöÀÄB¡@H½e¢URµŠÍ‹ƒ”í‰]¾ÜÝ}Îtïq¹ð¥»-UÅâTM×”R¶#~Í6þòe`ÿ8’@ì@ øƒ€¯€õâB®);¤lF ú×6ðùƲÏc™ïêT(¶åx›°S¡xöò[ˆm~í÷Û¶\J(¶½žx(•½æè¡õŽŠ2¡1³ƒjñEiüFùæƒÆÆÆ/åNcccÛbîGîÒÜΫoŸ¹,ÚÖØøÁï·4~“¹n³ªkŠÒøMîR¥ñN[cãG+ÙÆ?hlüòÆD¥1ÐU”/?ÒûÑ)ÛñÍ–Ýß(mŸ(Êï£ÑÆß++m_fly=÷¦¶EåIãï•¶V”;ßll‘m¶*åÚ—Š¢4~“»Til‹*ÑÆÌž±Æ¶åËÆ™F¿ùò#å›‹è½øH'A >ÿ5\de…&ÌC³?ò\ç³q¡k,2ãsŒmä©*ûì6/½àÀáÉz]f<ôc¶Åzñö-WA­ÀÅ£g,š Çqù‚í¢ƒì·iA6ÀÛ(ÈSU–ØöKs8`K€¸ù×—=šm¢3ÒÚ™Û£Ðû!€Ë~lCÀ×C¶ÐeîÇÛ˜ê= 6ªÊûÞ]ˆ?b“·ÒÚŒ®`—™=@(ö3@(æ»@ÀïÉüȳ±-fƒ¨ÃˆÛ Ô´Q@Fx¹ª²8F7.ÝÔ!ÿ=öÏꇴ¶÷r-@vgà B܃söGžwÝI z<æc6 9뜩*˳yéîÜhºðy@ǃ›u@ZÛƒa»×ç|ýÇå¦h—ypÈsÙ§¿kì²#ž7}€çœ#ÖÕϽkOªã>Ïf/Jy<Ûª²cðåÒ] }Ç7øõQ:ŽSîn80±šrR a³ÅãMælÙÖ—6 u¿Œ­dv´„°Ù¶äÊ7«"·Õ&s©dR¶Ú‘99s¯IHßV" ÒÚjG*êÙ§@R R¶ùÿÝ"dÙJ¿„%tEXtdate:create2020-03-21T12:46:35+01:00ñùÔ%tEXtdate:modify2020-03-21T12:46:35+01:00€\Ah1tEXtps:HiResBoundingBox499.986x405.918+21.768+14.712ˆ«ûgtEXtps:LevelAdobe-3.0 EPSF-3.0 ›p»ãIEND®B`‚queueing/doc/qn_web_model.fig0000644000175000017500000000476313570046274016171 0ustar morenomoreno#FIG 3.2 Produced by xfig version 3.2.5b Landscape Center Metric A4 100.00 Single -2 1200 2 6 5130 4680 5850 5040 1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 5670 4860 180 180 5670 4860 5850 4860 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 4 5130 4680 5490 4680 5490 5040 5130 5040 -6 6 6390 4950 7110 5310 1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 6930 5130 180 180 6930 5130 7110 5130 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 4 6390 4950 6750 4950 6750 5310 6390 5310 -6 6 6390 4410 7110 4770 1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 6930 4590 180 180 6930 4590 7110 4590 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 4 6390 4410 6750 4410 6750 4770 6390 4770 -6 6 7740 4140 8460 4500 1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 8280 4320 180 180 8280 4320 8460 4320 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 4 7740 4140 8100 4140 8100 4500 7740 4500 -6 6 7740 5220 8460 5580 1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 8280 5400 180 180 8280 5400 8460 5400 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 4 7740 5220 8100 5220 8100 5580 7740 5580 -6 6 7740 4680 8460 5040 1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 8280 4860 180 180 8280 4860 8460 4860 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 4 7740 4680 8100 4680 8100 5040 7740 5040 -6 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 6 0 0 1.00 60.00 120.00 8550 4770 9180 4770 9180 5940 4680 5940 4680 4770 5130 4770 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 0 0 1.00 60.00 120.00 5850 4770 6300 4770 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 2 0 0 1.00 60.00 120.00 7200 4770 7650 4770 2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 6 0 0 1.00 60.00 120.00 8550 4950 9000 4950 9000 5760 4860 5760 4860 4950 5130 4950 2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2 0 0 1.00 60.00 120.00 7200 4950 7650 4950 2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 2 0 0 1.00 60.00 120.00 5850 4950 6300 4950 2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 7200 5670 6300 5670 6300 4050 7200 4050 7200 5670 2 4 0 1 0 7 50 -1 -1 0.000 0 0 7 0 0 5 8550 5670 7650 5670 7650 4050 8550 4050 8550 5670 4 0 0 50 -1 0 12 0.0000 4 135 105 5625 4905 1\001 4 0 0 50 -1 0 12 0.0000 4 135 105 6885 5175 3\001 4 0 0 50 -1 0 12 0.0000 4 135 105 6885 4635 2\001 4 0 0 50 -1 0 10 0.0000 0 150 795 6300 3960 App. Servers\001 4 0 0 50 -1 0 12 0.0000 4 135 105 8235 5445 6\001 4 0 0 50 -1 0 12 0.0000 4 135 105 8235 4905 5\001 4 0 0 50 -1 0 12 0.0000 4 135 105 8235 4365 4\001 4 0 0 50 -1 0 10 0.0000 0 105 615 7785 3960 DB Server\001 4 0 0 50 -1 0 12 0.0000 4 135 585 5175 6120 Class 1\001 4 0 0 50 -1 0 12 0.0000 4 135 585 5175 5715 Class 2\001 4 0 0 50 -1 0 10 0.0000 0 105 705 5040 4590 Web Server\001 queueing/doc/summary.texi0000644000175000017500000001454713635377223015443 0ustar morenomoreno@c This file has been automatically generated from summary.txi @c by proc.m. Do not edit this file, all changes will be lost @c -*- texinfo -*- @c Copyright (C) 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2016 Moreno Marzolla @c @c This file is part of the queueing package. @c @c The queueing package is free software; you can redistribute it @c and/or modify it under the terms of the GNU General Public License @c as published by the Free Software Foundation; either version 3 of @c the License, or (at your option) any later version. @c @c The queueing package is distributed in the hope that it will be @c useful, but WITHOUT ANY WARRANTY; without even the implied warranty @c of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the @c GNU General Public License for more details. @c @c You should have received a copy of the GNU General Public License @c along with the queueing package; see the file COPYING. If not, see @c . @node Summary @chapter Summary @menu * About the Queueing Package:: What is the Queueing package. * Contributing Guidelines:: How to contribute. * Acknowledgments:: @end menu @node About the Queueing Package @section About the Queueing Package This document describes the @code{queueing} package for GNU Octave (@code{queueing} in short). The @code{queueing} package, previously known as @code{qnetworks} toolbox, is a collection of functions for analyzing queueing networks and Markov chains written for GNU Octave. Specifically, @code{queueing} contains functions for analyzing Jackson networks, open, closed or mixed product-form BCMP networks, and computing performance bounds. The following algorithms are available @itemize @item Convolution for closed, single-class product-form networks with load-dependent service centers; @item Exact and approximate Mean Value Analysis (MVA) for single and multiple class product-form closed networks; @item MVA for mixed, multiple class product-form networks with load-independent service centers; @item Approximate MVA for closed, single-class networks with blocking (MVABLO algorithm by F. Akyildiz); @item Asymptotic Bounds, Balanced System Bounds and Geometric Bounds; @end itemize @noindent @code{queueing} provides functions for analyzing the following types of single-station queueing systems: @itemize @item @math{M/M/1} @item @math{M/M/m} @item @math{M/M/\infty} @item @math{M/M/1/k} single-server, finite capacity system @item @math{M/M/m/k} multiple-server, finite capacity system @item Asymmetric @math{M/M/m} @item @math{M/G/1} (general service time distribution) @item @math{M/H_m/1} (Hyperexponential service time distribution) @end itemize Functions for Markov chain analysis are also provided (discrete- and continuous-time chains are supported): @itemize @item Birth-death processes; @item Transient and stationary state occupancy probabilities; @item Mean time to absorption; @item Expected sojourn times and time-averaged sojourn times; @item Mean first passage times; @end itemize The @code{queueing} package is distributed under the terms of the GNU General Public License (GPL), version 3 or later (@pxref{Copying}). You are encouraged to share this software with others, and improve this package by contributing additional functions and reporting bugs. @xref{Contributing Guidelines}. If you use the @code{queueing} package in a technical paper, please cite it as: @quotation Moreno Marzolla, @emph{The qnetworks Toolbox: A Software Package for Queueing Networks Analysis}. Khalid Al-Begain, Dieter Fiems and William J. Knottenbelt, Editors, Proceedings 17th International Conference on Analytical and Stochastic Modeling Techniques and Applications (ASMTA 2010) Cardiff, UK, June 14--16, 2010, volume 6148 of Lecture Notes in Computer Science, Springer, pp. 102--116, ISBN 978-3-642-13567-5 @end quotation If you use BibTeX, this is the citation block: @verbatim @inproceedings{queueing, author = {Moreno Marzolla}, title = {The qnetworks Toolbox: A Software Package for Queueing Networks Analysis}, booktitle = {Analytical and Stochastic Modeling Techniques and Applications, 17th International Conference, ASMTA 2010, Cardiff, UK, June 14-16, 2010. Proceedings}, editor = {Khalid Al-Begain and Dieter Fiems and William J. Knottenbelt}, year = {2010}, publisher = {Springer}, series = {Lecture Notes in Computer Science}, volume = {6148}, pages = {102--116}, ee = {http://dx.doi.org/10.1007/978-3-642-13568-2_8}, isbn = {978-3-642-13567-5} } @end verbatim An early draft of the paper above is available as Technical Report @uref{http://www.informatica.unibo.it/it/ricerca/technical-report/2010/UBLCS-2010-04, UBLCS-2010-04}, February 2010, Department of Computer Science, University of Bologna, Italy. @node Contributing Guidelines @section Contributing Guidelines Contributions and bug reports are @emph{always} welcome. If you want to contribute to the @code{queueing} package, here are some guidelines: @itemize @item If you are contributing a new function, please embed proper documentation within the function itself. The documentation must be in @code{texinfo} format, so that it can be extracted and included into the printable manual. See the existing functions for the documentation style. @item Make sure that each new function validates its input parameters. For example, a function accepting vectors should check whether the dimensions match. @item Provide bibliographic references for each new algorithm you contribute. Document any significant difference from the reference. Update the @file{doc/references.txi} file if appropriate. @item Include test and demo blocks. Test blocks are particularly important, since most algorithms are tricky to implement correctly. If appropriate, test blocks should also verify that the function fails on incorrect inputs. @end itemize Send your contribution to Moreno Marzolla (@email{moreno.marzolla@@unibo.it}). If you are a user of this package and find it useful, let me know by dropping me a line. Thanks. @node Acknowledgments @section Acknowledgments The following people (listed alphabetically) contributed to the @code{queueing} package, either by providing feedback, reporting bugs or contributing code: Philip Carinhas, Phil Colbourn, Diego Didona, Yves Durand, Marco Guazzone, Dmitry Kolesnikov, Michele Mazzucco, Marco Paolieri. queueing/doc/qn_open_single.pdf0000644000175000017500000001536113635377235016544 0ustar morenomoreno%PDF-1.7 %Çì¢ 5 0 obj <> stream xœ}VËŽ7 ¼ë+t‹`hQOê?rÉÁÞ 0‰ñ¶Û‡ü~JÝ¢ZÛ3,°=*‘E–D²û»uÄÖµ¿þ¼,æÕC±Ÿ~šHÅGŸìfÝ·¿.5‘]$NÙ. ìÈË…+q°>Dr’-gmë‹á¸9 ‹˜RóP‚¾ÔpP¤ ¼U‚TâêÐ#ô%ì{ º¯)«ûAÂÅ|6C;‰Ó$¬VGiRV9R(iÄÕõ®lXôÄC_kŒ]s 2¤±O.#†®wqÃBóV†ƒŽM]É…•- ô!B"9 ®Ú\™JÎ6 ãQ IÔÕÅ$VóD_VkõÖµò_Œ"ÓÊ×ý«g8$å×åÅh|E4¿î°Éú¾&WÁ¿ýña<•U¿¬º#Ž\´O†9zrHN”RC<Bt=µÉ†‘yhÈgóׯö›)¨*‰È$Æ5ÑÅTüZsëœ]ÂeÌlÞ(òh>\ÅXîå1r½+;:¡”gÙ¡V*3SHö“jí„Ý&ú@.MªÕ8ùv;2kTÆåNÔ=³Ûk†”m–ÏRAU¢Ûð‡Fc84»×ïÿl–E´mDaî¬[o¾üüÊm3·ãØÿ±þå/꨸T7þ²‘­ÖŒ2pQ©dÝXe¾ÍOEžæ,Þ½~÷¸É]cÕð =áôSÄ!œfÎ÷ëÞÛ3nòƒùôÒ*Øendstream endobj 6 0 obj 915 endobj 4 0 obj <> /Contents 5 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 4 0 R ] /Count 1 >> endobj 1 0 obj <> endobj 7 0 obj <>endobj 12 0 obj <> endobj 13 0 obj <> endobj 8 0 obj <> endobj 10 0 obj <> endobj 16 0 obj <> endobj 9 0 obj <> endobj 14 0 obj <>stream xœ”{P“WÆ¿$ßwÖ¥¨°QR4a·º½X]ïËÔ Ô+* ¨]D ! ’ ’“&K A+A@@WìR¨«¶µT]”zÝÕNgÚ]—mgß9îÌ~ÔÙý{ÿ;—9ï9¿ç9ÏKSB?Цiÿ¸ …\½4F¥HVÎÌßæBhn·P€Óû§#EœÔŸÂþì/lZÀ:¡m.Xgƒv%¤éµ»âkÞÚÿö’%ïF¨²Oæd¤¥kBW†­XzôdèvB#åêŒ4eè¯ùNž¥ÊVÈ•š=Š£ZuèO׆ÆÈÓ´YÉ9ÿ»ößjÿ_}Š¢fGDnUGgÄfî_¶båoVSÔ"j1õ&G­ vR«¨(j 5›šKRAÔ/¨yÔ^JHé¨çôzÂo»_“ B0.Œ¦GE”è€è“®€éåÆî½ô@‚iŠ‹›A+Ò1]¾)›±Áe¨8ØXy¯Çë²vǽ¿[¾?DŽ€„,€C z1ôàšôä‡["·+ÖaIŽõé‰û}Ös B;¾‹G¯êŽõJ»2ëT;QÀt*öqO|ôS´ ~ø@øÇs×?ùìSß3ü=~®¼;²íKBw“…‘–Æ^¸ÖžúoSN ùb0hØÂp½q½ ‘ÅÃ8κ\gðï°yõ+Ñi¦ Þ½<“ÇܱÖ8#ÐË÷Yûš¢ÂV”çÙ.c­ý%,fÚë5P')j6y¹Õ-Ã×aýøü A¸_ˆKa¡¨±[Ë,Ø‚‹œ…šJM…£ð˜øˆØ®”'‡dcÇÏç6¨q–$)S•°5½gJ#Í'a§wU¹³£ „j\ck±  AK{[©7äþ±ñ+ês{»e„º©j0´âvI_gûÐèÙã+Z¤¯ˆ›záŠ~1ù3OÏß-ö˜[^”˜7–¼ wò wìdÛl ö6<‰?®ºØz­«ûøsÜoìÉîHXuf)ïB{"Åínw;„\?¼èèDÂæN4:±—› ¼?µæñü /yG‹ê˜%ž‰€-u‘åq"[é¨qÖ8ª°¤Õ“Ÿ$#Ö¶Ù\´­ =át˜8[£Q)›µgÎ67wthš•3Ö»µ^Žôex¿z Æ¿Ïz—‹^'Ö1A ´¥…&}HÖ—ë+QйÚÔÔÊã!É8I\™žu2ÇãßÄ‚0úö±«)§åž‚ ÎA;?زb÷$J5ÌY’.jf‚¢5µu!Õ¸¡´±„¯dèé+¾è/“?<Œ»I‚oË~5š<€GÐH¿ïú`^Úyigfí‰úhþ—pe<ú2/ýð±À= ê˜\G²ËTm÷I Š…P²·Ü겺Ê$•E. ¶"³Ùb’æ@YÇ$¹²“‡ÉR8ÜÑsAØ^Ó&©#GŒì{u).Àfs±€,$ÁÜ:¶Ôy̤4Ç$ŠbQ>{Êáá…Dy É^êXû²²È™hñaæ¼|´à_¾ß½#&†<æžµ.×¹ˆ‹·YäzEö¡]Y›p$>Øš}édW‰ß@p‡uÜ©ªúÚIw;i©*rlFä3–l~°ÞúOço]¶ö{†ð=µ¬óÇêÚ®BÐã ÀÜbENN¦òtNGg[ëÙÎm ÞÂ2cÛt`ÝúœúNnÞ¼8œœŸš¶/VNXL~Æ7“s]Šõ% «Çð0¾ØÐ}~l¤‡oð‚ä0ø%™/-;!~²ÉÜû×ó]ã=ù$fmøË×®”‘­dŸÈĽÎÎ wsß\ „¯&å·ù8ÀRx$þ·ØZÌ74=±x+Z»k³*×Ýš*U~¨wë1ÒŒºô‹Úñ‰É¶¾Ë²K}§ÇðøjþªSלWs¤‘È­K§}xýaÔȲÄ$}fšT¡2äèöÖ•÷ÞìºÑçGv¥ÒsNÈüÖ6õ ÑÇNÒÀ `÷µ˜ìr¸*{ž›Ý†\³E‹%DΚÙmØŽmK¹­²ëBIA¿ØÔ«{ð›hÉÞMá¹ùîf…4³UëÑ`¤2šräCê‰G·Û‡‡eƒƒM£xßÎ:x%i ¦…ÌjBÆZî@ü®–é™õèç=.ÿÉrÿ×(ê߸Ž> endstream endobj 11 0 obj <> endobj 15 0 obj <>stream xœcd`ab`ddd®ÌMÊÏ1õ~H3þaú!ÃÜ]÷cÇÏ VYŸy³yÈò0tó0wó°Ìÿ~M軟àwoþï ,ŒŒ*æ)Y¡Aá Áùi%å‰E©: Îù•E™é% F†¦ I• @ùà’ļ”Ä¢ˆ]Å ÁuDèÏIÌMJId```º³‹‰‘‘¥ù{ßuæÿ¹-$œpíÇ9ÑIGV¬Ùѽ¦{iѬ¸IeS²¦¤þ®þÓ&ñ’í»Ý÷_«‡Îvš›")¼ a᪒Ògº×ïýÎÈQÆÖ^’—ÞÛ]8¯z]ÝÒ–%µ× ¾‹Jt÷võvMn]Ý5¡mañwæêC¥{+¶¦-KîöëÎŽhøÍÍÁ÷»¯[†Õ­›í0×cîsyxôñð20J‡d endstream endobj 17 0 obj <>stream 2020-03-21T12:46:37+01:00 2020-03-21T12:46:37+01:00 fig2dev Version 3.2.6a qn_open_single.fig endstream endobj 2 0 obj <>endobj xref 0 18 0000000000 65535 f 0000001229 00000 n 0000006201 00000 n 0000001170 00000 n 0000001019 00000 n 0000000015 00000 n 0000001000 00000 n 0000001294 00000 n 0000001406 00000 n 0000001968 00000 n 0000001731 00000 n 0000004155 00000 n 0000001335 00000 n 0000001365 00000 n 0000002247 00000 n 0000004369 00000 n 0000001879 00000 n 0000004766 00000 n trailer << /Size 18 /Root 1 0 R /Info 2 0 R /ID [<005756505371D5F61630E7AA7D396DD8><005756505371D5F61630E7AA7D396DD8>] >> startxref 6384 %%EOF queueing/doc/qn_closed_single.pdf0000644000175000017500000001315213635377235017050 0ustar morenomoreno%PDF-1.7 %Çì¢ 5 0 obj <> stream xœ}UËnT1 Ýç+²ã!‰ór²¥P6,ÚÎ >`€èEj»à÷qrã$½F•z''ö±ã8ÚjSþÚ÷¸¨w7¤oŸ”²ÞýWÕ}}óIap lÒ6;ÀõÒ̬Óè£ä¯u`RÔè"oc_ZòÕA,0§êÑÚR"°CC\"v°Z|tÕ¡EhK¶o)È~K°»o$ÕÚw™xŸ'a‰2„IY2…WÖCY·h‰w†¶–CšHàR—†è»Œêµõ×-¤ü°ѱª Ödt=‹k@p>q)}4K†à¼vc$Y• ̼˜lµoY =gÙ²¡8ˆ2X¿,Jâ ÒÒkî›ìWIµ)‘,ÿsÎèÇï*SJÈÚ R(gØ‘˜Á¸¬ïUJ yƒ‡#9ˆ±l2É–£'FîÔ×·ú ȼÞs"|¾œí¢"÷Tư3+°™&ºL\4 ٫ëA–3yôTϪæ¨bœTÛ”€ÂÄT»+Ú!ZîÀ0qhÁÔ`MôVâÒ%g‘8Y¢P.ÿ:;)q4aaêˆMr=FN!'Î=xSÈ1FÈÜLãpºM鿜‡H$“ÀÅy¬5:(lцírP#÷\Ì3RJ° ¸œKª'~ºÄe¤8sGä˜1òEa†QMŒlýTq±yqÎ'&û¦(«¤-Ár&È|¬Ò#m*/}ö5à~ Ãö0Œ¾Èà‘8ˆL2ˆÓ@ÎyLŽô "âÆµ”Œ«Ûm¶#äÄ3Óªü|Ô·,×ßís\ôû?ìåmçø<üP냚‹Ë9ñ|c夋zm€Þ~1!ß4kØü[Á\ÁvžÇr°¤w1p[s2eój_öräúzn9ñ²syqY÷ø-3Ü$úð¹a¯Ô®<ú&û9ÊÅÕ—ÊÔvV¦P·>ü|úe³þ²•€5|TU­©T4\ïŸeb«¯c¿®òµúÍÅoendstream endobj 6 0 obj 763 endobj 4 0 obj <> /Contents 5 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 4 0 R ] /Count 1 >> endobj 1 0 obj <> endobj 7 0 obj <>endobj 10 0 obj <> endobj 11 0 obj <> endobj 8 0 obj <> endobj 9 0 obj <> endobj 12 0 obj <>stream xœT{PSÙ¾—$÷žZ6*4BHè®v»¬ŠZfQa}¢"Au ˆá!$A„„@€9Id €<–ð~—‡€ vu‹²VquY¡ õÙ®;Îì¶–îN7séL/kgÚ¿ûß9ç7ç;çû¾ß÷# ¾A’¤{TŠB®^©RÄ+—öï2>$ãëÆøñ°ÁuÄ"`$îvçaw~“/âí+Á¼2W|’ Ú]óË#‘Ñï¾ÿþ¡ªôœŒ”¤dÿ†€Àþ§rüÿSñ“«S’”þ¿àZyš*]!Wj¦(Neªý|Ö?Rž”™Ÿñ¿gÿEûÿð ‚X¶K‘"K=². pï‚b5±†x‡ˆ"‰}ÄF"œØL,'V„'ñ3›XÁéAð -ñ‚pÛãÖÄ åMóCù üBpTð„Zv¡k½aŒùÇ0Ù ˆç"˜h‘ 2ZªX›kÌÂ&¬·ëË7ÄTžÄ[ñ–´Q¯Ç¬bã@Ìú ¼ºôè¦$ç“a{[°8ËœqCQ¿K{`ïK@°æÆ5íéaIojªqºñ ólü~¡€äÕ¯‚A þ¡ïÖõ;Ÿ~¿Ã/”s²‰Ý_²äë‡Û’MÍUZ·£ÅÚ²ÓhÜnFÉL‰zª*Gÿ<•›rE2wddf Ì.;´íä1åaãFŒŒŽ^©ù ;áæ8†È¿-ð5äŠ@¯¡óƒu†­eˆ]”µÛnï´"ðåþQæ4Ôo@mT)¼-Xì̦fÌ5y¶P´ømÙ\bFÙÐ×H‡Ø µ–JXC?¶Ôj¶!!#.h6:™M-WoÁÖi/Ïq¸wE%à'ȧ̅æÒb\Œ lùåšJM¹£àÈèPYo³ÒÉ3ýY jœ&ŽMUÛ•<´ ‘ä²穊ªs¶ŒoupB¢ß:òNHµ´åhiiXþR´¸03N.Zð¯17ïÞ±úl꡹.˶š wËuŠôûÓ¶ã0|¼5ýrNoÑ ¾`†¶ÎTUý©5²Ùô|qUubïÐìŽG[áC ÿØuÔq ?DPKÛ~¨®}ä@B°çœV¾)22R•m]=í­Ý=gÛœ…¥†v—G;Ùú-œÿ–œyQ8>71é°LÎÒ˜ý 7LúXtY6{U=‰¯â‹ ý“CÜ@€7ÄÀÏY/IéYÑÓqVÀÊYy¬ÿ¦M±ÿ„Ó2nÏ¥?àZá$!å9–­‚®:êC¬«¶\AÌwt¡Ý à­k­p`ÔäЧJcè²p!Ä‚–î>`ZfIøæ9QŸ(¯<ñp~ÑI‹˜-¤ ¾~yáž¿Úöðí¨èÌ„DIjŠ>UÖdöþkï4FÏ®G¼>hƒ”ÝÅ™7é%ÊÌ77=à«yù}.°žˆ>Ç-e-¦Ûš!Þ…6ËöïPeU´&J”Ÿè*tiômòÅÌéóí#W¤—GÚ&ñ]|-÷’ªGÛœ]×ÈEäÞå¶Áß¿ù8|b]L¬.5I¢Pé3´‡êJ¼‡gÇ{ocôÅXÜþ$}rÆY©‚+íV/±+t23³$³Ô‹Á¾ÓP8r·ñüu«{|ñ¥àÉ®·BC-s´ ~SK -{òÓ!»»ûü9÷7âßfe endstream endobj 13 0 obj <>stream 2020-03-21T12:46:37+01:00 2020-03-21T12:46:37+01:00 fig2dev Version 3.2.6a qn_closed_single.fig endstream endobj 2 0 obj <>endobj xref 0 14 0000000000 65535 f 0000001077 00000 n 0000005120 00000 n 0000001018 00000 n 0000000867 00000 n 0000000015 00000 n 0000000848 00000 n 0000001142 00000 n 0000001243 00000 n 0000001568 00000 n 0000001183 00000 n 0000001213 00000 n 0000001848 00000 n 0000003683 00000 n trailer << /Size 14 /Root 1 0 R /Info 2 0 R /ID [] >> startxref 5305 %%EOF queueing/doc/installation.texi0000644000175000017500000003671013635377222016442 0ustar morenomoreno@c This file has been automatically generated from installation.txi @c by proc.m. Do not edit this file, all changes will be lost @c -*- texinfo -*- @c Copyright (C) 2008, 2009, 2010, 2011, 2012, 2014, 2016, 2018 Moreno Marzolla @c @c This file is part of the queueing package. @c @c The queueing package is free software; you can redistribute it @c and/or modify it under the terms of the GNU General Public License @c as published by the Free Software Foundation; either version 3 of @c the License, or (at your option) any later version. @c @c The queueing package is distributed in the hope that it will be @c useful, but WITHOUT ANY WARRANTY; without even the implied warranty @c of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the @c GNU General Public License for more details. @c @c You should have received a copy of the GNU General Public License @c along with the queueing package; see the file COPYING. If not, see @c . @ifset INSTALLONLY @include conf.texi This file documents the installation procedure of the Octave @code{queueing} package. @code{queueing} is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 3 or later, as published by the Free Software Foundation. @quotation Note This file (@file{INSTALL}) is automatically generated from @file{doc/installation.txi} in the @code{queueing} source tree. Do not modify this document directly, as changes will be lost. Modify @file{doc/installation.txi} instead. @end quotation @end ifset @node Installation and Getting Started @chapter Installation and Getting Started @menu * Installation through Octave package management system:: * Manual installation:: * Development sources:: * Naming Conventions:: * Quick start Guide:: @end menu @c @c @c @node Installation through Octave package management system @section Installation through Octave package management system The most recent version of @code{queueing} is @value{VERSION} and can be downloaded from Octave-Forge @url{https://octave.sourceforge.io/queueing/} Additional information can be found at @url{http://www.moreno.marzolla.name/software/queueing/} To install @code{queueing}, follow these steps: @enumerate @item If you have a recent version of GNU Octave and a network connection, you can install @code{queueing} from Octave command prompt using this command: @example octave:1> @kbd{pkg install -forge queueing} @end example The command above will download and install the latest version of the @code{queueing} package from Octave Forge, and install it on your machine. If you do not have root access, you can perform a local install with: @example octave:1> @kbd{pkg install -local -forge queueing} @end example This will install @code{queueing} in your home directory, and the package will be available to the current user only. @item Alternatively, you can first download the @code{queueing} tarball from Octave-Forge; to install the package in the system-wide location issue this command at the Octave prompt: @example octave:1> @kbd{pkg install @emph{queueing-@value{VERSION}.tar.gz}} @end example @noindent (you may need to start Octave as root in order to allow the installation to copy the files to the target locations). After this, all functions will be available each time Octave starts, without the need to tweak the search path. If you do not have root access, you can do a local install using: @example octave:1> @kbd{pkg install -local queueing-@value{VERSION}.tar.gz} @end example @item Use the @kbd{pkg list} command at the Octave prompt to check that the @code{queueing} package has been succesfully installed; you should see something like: @example octave:1>@kbd{pkg list queueing} Package Name | Version | Installation directory --------------+---------+----------------------- queueing | @value{VERSION} | /home/moreno/octave/queueing-@value{VERSION} @end example @item Starting from version 1.1.1, @code{queueing} is no longer automatically loaded on Octave start. To make the functions available for use, you need to issue the command @example octave:1>@kbd{pkg load queueing} @end example @noindent at the Octave prompt. To automatically load @code{queueing} each time Octave starts, you can add the command above to the startup script (usually, @file{~/.octaverc} on Unix systems). @item To completely remove @code{queueing} from your system, use the @kbd{pkg uninstall} command: @example octave:1> @kbd{pkg uninstall queueing} @end example @end enumerate @c @c @c @node Manual installation @section Manual installation If you want to manually install @code{queueing} in a custom location, you can download the tarball and unpack it somewhere: @example @kbd{tar xvfz queueing-@value{VERSION}.tar.gz} @kbd{cd queueing-@value{VERSION}/queueing/} @end example Copy all @code{.m} files from the @file{inst/} directory to some target location. Then, start Octave with the @option{-p} option to add the target location to the search path, so that Octave will find all @code{queueing} functions automatically: @example @kbd{octave -p @emph{/path/to/queueing}} @end example For example, if all @code{queueing} m-files are in @file{/usr/local/queueing}, you can start Octave as follows: @example @kbd{octave -p @emph{/usr/local/queueing}} @end example If you want, you can add the following line to @file{~/.octaverc}: @example @kbd{addpath("@emph{/path/to/queueing}");} @end example @noindent so that the path @file{/path/to/queueing} is automatically added to the search path each time Octave is started, and you no longer need to specify the @option{-p} option on the command line. @c @c The following will not appear in the INSTALL text file @c @ifclear INSTALLONLY @node Development sources @section Development sources The source code of the @code{queueing} package can be found in the Mercurial repository at the URL: @url{https://sourceforge.net/p/octave/queueing/ci/default/tree/} The source distribution contains additional development files that are not present in the installation tarball. This section briefly describes the content of the source tree. This is only relevant for developers who want to modify the code or the documentation. The source distribution contains the following directories: @table @file @item doc/ Documentation sources. Most of the documentation is extracted from the comment blocks of function files from the @file{inst/} directory. @item inst/ This directory contains the @verb{|m|}-files which implement the various algorithms provided by @code{queueing}. As a notational convention, the names of functions for Queueing Networks begin with the @samp{qn} prefix; the name of functions for Continuous-Time Markov Chains (CTMCs) begin with the @samp{ctmc} prefix, and the names of functions for Discrete-Time Markov Chains (DTMCs) begin with the @samp{dtmc} prefix. @item test/ This directory contains the test scripts used to run all function tests. @item devel/ This directory contains functions that are either not working properly, or need additional testing before they are moved to the @file{inst/} directory. @end table The @code{queueing} package ships with a Makefile which can be used to produce the documentation (in PDF and HTML format), and automatically execute all function tests. The following targets are defined: @table @code @item all Running @samp{make} (or @samp{make all}) on the top-level directory builds the programs used to extract the documentation from the comments embedded in the @verb{|m|}-files, and then produce the documentation in PDF and HTML format (@file{doc/queueing.pdf} and @file{doc/queueing.html}, respectively). @item check Running @samp{make check} will execute all tests contained in the @verb{|m|}-files. If you modify the code of any function in the @file{inst/} directory, you should run the tests to ensure that no errors have been introduced. You are also encouraged to contribute new tests, especially for functions that are not adequately validated. @item clean @itemx distclean @itemx dist The @samp{make clean}, @samp{make distclean} and @samp{make dist} commands are used to clean up the source directory and prepare the distribution archive in compressed tar format. @end table @node Naming Conventions @section Naming Conventions Most of the functions in the @code{queueing} package obey a common naming convention. Function names are made of several parts; the first part is a prefix which indicates the class of problems the function addresses: @table @asis @item @strong{ctmc-} Functions for continuous-time Markov chains @item @strong{dtmc-} Functions for discrete-time Markov chains @item @strong{qs-} Functions for analyzing single-station queueing systems (individual service centers) @item @strong{qn-} Functions for analyzing queueing networks @end table Functions dealing with Markov chains start with either the @code{ctmc} or @code{dtmc} prefix; the prefix is optionally followed by an additional string which hints at what the function does: @table @asis @item @strong{-bd} Birth-Death process @item @strong{-mtta} Mean Time to Absorption @item @strong{-fpt} First Passage Times @item @strong{-exps} Expected Sojourn Times @item @strong{-taexps} Time-Averaged Expected Sojourn Times @end table For example, function @code{ctmcbd} returns the infinitesimal generator matrix for a continuous birth-death process, while @code{dtmcbd} returns the transition probability matrix for a discrete birth-death process. Note that there exist functions @code{ctmc} and @code{dtmc} (without any suffix) that compute steady-state and transient state occupancy probabilities for CTMCs and DTMCs, respectively. @xref{Markov Chains}. Functions whose name starts with @code{qs-} deal with single station queueing systems. The suffix describes the type of system, e.g., @code{qsmm1} for @math{M/M/1}, @code{qnmmm} for @math{M/M/m} and so on. @xref{Single Station Queueing Systems}. Finally, functions whose name starts with @code{qn-} deal with queueing networks. The character that follows indicates whether the function handles open (@code{'o'}) or closed (@code{'c'}) networks, and whether there is a single customer class (@code{'s'}) or multiple classes (@code{'m'}). The string @code{mix} indicates that the function supports mixed networks with both open and closed customer classes. @table @asis @item @strong{-os-} Open, single-class network: open network with a single class of customers @item @strong{-om-} Open, multiclass network: open network with multiple job classes @item @strong{-cs-} Closed, single-class network @item @strong{-cm-} Closed, multiclass network @item @strong{-mix-} Mixed network with open and closed classes of customers @end table The last part of the function name indicates the algorithm implemented by the function. @xref{Queueing Networks}. @table @asis @item @strong{-aba} Asymptotic Bounds Analysis @item @strong{-bsb} Balanced System Bounds @item @strong{-gb} Geometric Bounds @item @strong{-pb} PB Bounds @item @strong{-cb} Composite Bounds (CB) @item @strong{-mva} Mean Value Analysis (MVA) algorithm @item @strong{-cmva} Conditional MVA @item @strong{-mvald} MVA with general load-dependent servers @item @strong{-mvaap} Approximate MVA @item @strong{-mvablo} MVABLO approximation for blocking queueing networks @item @strong{-conv} Convolution algorithm @item @strong{-convld} Convolution algorithm with general load-dependent servers @end table @cindex deprecated functions Some deprecated functions may be present in the @code{queueing} package; generally, these are functions that have been renamed, and the old name is kept for a while for backward compatibility. Deprecated functions are not documented and will be removed in future releases. Calling a deprecated functions displays a warning message that appears only once per session. The warning message can be turned off with the command: @example @group octave:1> @kbd{warning ("off", "qn:deprecated-function");} @end group @end example However, you are strongly recommended to update your code to the new API. To help catching usages of deprecated functions, you can transform warnings into errors so that your application stops immediately: @example @group octave:1> @kbd{warning ("error", "qn:deprecated-function");} @end group @end example @node Quick start Guide @section Quick start Guide You can use all functions by simply invoking their name with the appropriate parameters; an error is shown in case of missing/wrong parameters. Extensive documentation is provided for each function, and can be displayed with the @command{help} command. For example: @example octave:2> @kbd{help qncsmvablo} @end example @noindent shows the documentation for the @command{qncsmvablo} function. Additional information can be found in the @code{queueing} manual, that is available in PDF format in @file{doc/queueing.pdf} and in HTML format in @file{doc/queueing.html}. Many functions have demo blocks showing usage examples. To execute the demos for the @command{qnclosed} function, use the @command{demo} command: @example octave:4> @kbd{demo qnclosed} @end example We now illustrate a few examples of how the @code{queueing} package can be used. More examples are provided in the manual. @noindent @strong{Example 1} Compute the stationary state occupancy probabilities of a continuous-time Markov chain with infinitesimal generator matrix @iftex @tex $$ {\bf Q} = \pmatrix{ -0.8 & 0.6 & 9,2 \cr 0.3 & -0.7 & 0.4 \cr 0.2 & 0.2 & -0.4 } $$ @end tex @end iftex @ifnottex @example @group / -0.8 0.6 0.2 \ Q = | 0.3 -0.7 0.4 | \ 0.2 0.2 -0.4 / @end group @end example @end ifnottex @example @group Q = [ -0.8 0.6 0.2; \ 0.3 -0.7 0.4; \ 0.2 0.2 -0.4 ]; q = ctmc(Q) @result{} q = 0.23256 0.32558 0.44186 @end group @end example @noindent @strong{Example 2} Compute the transient state occupancy probability after @math{n=3} transitions of a three state discrete-time birth-death process, with birth probabilities @math{\lambda_{01} = 0.3} and @math{\lambda_{12} = 0.5} and death probabilities @math{\mu_{10} = 0.5} and @math{\mu_{21} = 0.7}, assuming that the system is initially in state zero (i.e., the initial state occupancy probabilities are @math{[1, 0, 0]}). @example @group n = 3; p0 = [1 0 0]; P = dtmcbd( [0.3 0.5], [0.5 0.7] ); p = dtmc(P,n,p0) @result{} p = 0.55300 0.29700 0.15000 @end group @end example @noindent @strong{Example 3} Compute server utilization, response time, mean number of requests and throughput of a closed queueing network with @math{N=4} requests and three @math{M/M/1}--FCFS queues with mean service times @math{S = [1.0, 0.8, 1.4]} and average number of visits @math{V = [1.0, 0.8, 0.8]} @example @group S = [1.0 0.8 1.4]; V = [1.0 0.8 0.8]; N = 4; [U R Q X] = qncsmva(N, S, V) @result{} U = 0.70064 0.44841 0.78471 R = 2.1030 1.2642 3.2433 Q = 1.47346 0.70862 1.81792 X = 0.70064 0.56051 0.56051 @end group @end example @noindent @strong{Example 4} Compute server utilization, response time, mean number of requests and throughput of an open queueing network with three @math{M/M/1}--FCFS queues with mean service times @math{S = [1.0, 0.8, 1.4]} and average number of visits @math{V = [1.0, 0.8, 0.8]}. The overall arrival rate is @math{\lambda = 0.8} requests/second. @example @group S = [1.0 0.8 1.4]; V = [1.0 0.8 0.8]; lambda = 0.8; [U R Q X] = qnos(lambda, S, V) @result{} U = 0.80000 0.51200 0.89600 R = 5.0000 1.6393 13.4615 Q = 4.0000 1.0492 8.6154 X = 0.80000 0.64000 0.64000 @end group @end example @c @c @c @end ifclear queueing/doc/web.pdf0000644000175000017500000002361113635377235014316 0ustar morenomoreno%PDF-1.7 %Çì¢ 5 0 obj <> stream xœåYÉn7½ÏWôQs†Uܯ ‚¹ÙÖÍð!ˆ-Ûe%޳ý}^±¹TkÚcÅÑ!@ ]S|Í~U,Öký²XC‹•¯ö÷ÇÛÃWOÓòú×-òõáõáÄÑ.'òv #ïØ.^n>ýÏÙdK »â ËíÁ—À&ûáâ²ËÆ‹åæ¾Ó˜5}öf…åVïK±¼œž~··œnñÀÉ8Ïΰ§—KÅ™˜«¹L&*¨nPHÍ4ºAá0'o¼Âé…ÓL§Ž£˜ +œnP8Í4qºAáx‹*‚ê¥fG Ššz©ç"vŒm8g|ŽÄ-ŽËù©øËj².íÏ·Ë××HØ,†ë›ÃšÃ´ø`r/; x¹¾=<¿²ÇS*ÌÆ’ ½¿2ÇóÃì™’6f_ÍgÞqßœ'6‰Ù¿¸þþðíõáÉNòçŒ×{a—=› ñÖ©#¥ i¤fÐHÃg i§žØDѰBê­áÓ‘6NɧdœFj4|’v:Û~iìõÝ jHÊé¡Iâ’É)È ƃãž$-z'†K4dK^®_öZ¼×ñú;Œ)±N TOL˜¹qz˜ïø…Õð6ñž/åA_àçå—ïR–wËàý*üìBE݉օzŽý^ƒqakã’H‡ ç )Ñdߢv ‚qÑ_½£Ç6¸¦ßÆèõ΄Ÿwü>OΚ袻ZŽÁpr ú‡#a Þ§«÷ÃñåM¿±‚Wc¯c4ï6×7á¦ßœ;ûª’¿z;Œ·˜l-6îÎù}g óÓ½Õìññn‡„ÝÕì=Ô²·Ö9åOà+þâÓ fŒdËIÒ&ËFweáŒs†wr¦?ʇù(wÃøÛ½£7*Žç~`$:“¨Í˜íün[ÒJç‚}IËOxRç£>ŸÐÁ”(*x€D¨‰ÒQÚðD\Ö­DõÝ¡š•`M"±„ˆÂ†-iÙ›X-)…ZR-f1”L0`’ S àhµD1 4šX”!R0)*CÙOƒ³Xn¡fHba¹¡Ü8ÖƒQj ÉÈÒ\Œ±r‹'TKN°È \ÄâmÆÁƒ;“cC‚ëUÀ9Xp€sõ 6J‹ÄÄèp¤Â<_@ô…ï5,¦ }ãö¯"ßž38Å>–VLòŠ},_*œ&êÒ†|pý}öcxöC¹O¿ß°ïQwã†~œ±ÿ\²ÔUÅ?c·IÁüca›jþ9q6%Nþ±Ì²>’ Sœ,Qnï4Ë8Ãгi–ƒ|´a9ެï4G,­8Ms²Ø*›$OXZÉšædÓŠhãÔ‘¤w@Ã7‘šA# Ÿ¤œþñ€‚–³”³7 æÜ¬D¿ú]}íÆÓÞ•¸ºÆƒæ žŸQü*ð^¡»WpŸ]¨˜Úés…ûb`¶ŠhL̆ ‘yŠóÕH«™»Â Œã[ÜcØ•lwcô¾²ò{5l« eç”|{ô¨3;ùöH(FbFS¦kSл$N>é”ÚÔÖÅœºœ}·)©<1GSÓ®0ï¶»‹’sïnÊÛñézwq~·öÈ‰Ô Èr/ýZ¡ÇV³Qö¾'ÕêK ©V?AçZ z«ŸÐ,»ÀªÕ¯r$FÕê)÷UòöVŸ¬ë+®Þê“PÔšŠ(úUDôVŠÏ­ýwoõÉyZ_YöVO“T«O²9*Noõ <¯ª÷ú$}H½×§P YõúØÍØ?eöú¨qö±U-%ôñ¬õáX‚fy}=Ѓ@1†•˜,Ö¯R²‚Duðd&9‡Æ·Ê™NˆxÐAÀÜ*[²ÅËT,|KPA(hTi½…îÏðÌ„ŒÂäXKÛ]óéAÈÐ(Ž”´ÍÑ%¹/¶$ÿ ¡¢©†œ[—=¨ÆF¬¢}0ÍŽZ4:Ó URSp0ͤe-.Óš7ƒæi4ËÈõn4‹¥è÷7r#“ŠÎuÆlÞäºønÞàÔgª©1r݉ˆô:×ZŠõ|-×=`bÚ¶òf(Ú-S ÊæYkÀ͙ל7½öæ}©°•÷,üo•m`yåOSÚvãjÛy—.n··ùRu«p›¼Õ¸Oß²,endstream endobj 6 0 obj 2021 endobj 4 0 obj <> /Contents 5 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 4 0 R ] /Count 1 >> endobj 1 0 obj <> endobj 7 0 obj <>endobj 12 0 obj <> endobj 13 0 obj <> endobj 8 0 obj <> endobj 10 0 obj <> endobj 9 0 obj <> endobj 14 0 obj <>stream xœ•{PwÇgXvfŽŒLF à€‚²(ˆXy#@0¼!î. #&ŠñÁõbb@¢.Qðr Å€’¨ ¬,R®„D£¹ôìý°îH*uÿ^ÕÔÔüfª{º¿Ýýi’05!H’4 JS¤i²R’&NN¼-ÉÛ™ðv"„ÕÆ½Æ"1?Óœ@æ"dnZcgfj MÓ¡x$¾AˆHrñŠmŽ1Qkç:;»øeçåfedjd ÝÈeÉE²?¾ÈüÓò²2Ô²9ÂCAš2;G•¦Ö„e©’óódÑI꼿 ÿ?WAÌTgûåäæiò“ ‹Ò22£²¢W+UóÝ,”{,’yD8AÌ""‰hb5C¬!V±D±’"‚ wBAÈ "”#¦Ó K‚%8baE„ !$"L b7ñŒ !w¿š8™d™`ÑQ¡¨Û4ÚôSÓ‹¥â:ñ×â~Ê‹RPZª•v WÓõŒ”±gªà”ߊ´|Ô½L­eO¯¯öZ±_öðUÜx•i¶ó÷¶ž¡®Æ” þÏ /£õж9ÖÍŪV0ô`¯éå]zÉz=´êEp”¯ç°£»=öÇÃ0ÿË@áñ»HË|¹§m¾x~#Ò×u~T/°ÀÞì5H-Œéš~l€¼jxÄ©AîÚ‡åh.ZªŒ öËp@Ø aó†YÝþ7#¿ÏE°=û©bgª$vkÖfµ*<4Ë1x¶+0 €p=Ð`ß~c“ú¤ôxn¥êóÕÌD¨}¼SŸêõ‰T¿Ò[±×±šÓÁ1êrLs^7bÀnHð0ÁR)ëæ¢6¤†2iÖÅ—b;aS÷¤c žŽ_ [â¶0ª¦Á´›ý¥0$èX¨Ý¡µ¼+8·boÝýCÄ£tX^kzóˆfÝö—”mµAÉâ}6bTPp×”‚Wô°M/â¼Wú"ðküºÅÒ'¯ÆTxC%í+üº¸¦¥ÛÄÆ½·"1­¢º@²¥òãÊ Œ;µ¿Þ 3…ø­uÏûÖ_r8*õ>ø…º5Ø4_:Ùým½zõ‰œÒÜãºÉGƒ"Ø/Äç³<ñ,ÿÀïÆeTL½º³úðžÔIzèw}Tº 1[4HMVù^ìD~–ƒ°opÙ+¶/˜ÁWyâšm’Eȃ“.Ü‘ð´ç¸#-ïŒþUÂú÷¢æãÍw™Sæ¼[/Ù¨‡ŠAº™Û¶{'Úõ•Ǥp‹6¶`Î7,?5C’—³Uµ{-££ösîDb~¸˜+ͧK3жnÃf›‹vnضQ™€—®ðuµÖ\o—|sLsFŸï©ÛÏà9È¡ì’M¹š,eòqˆQ¤j½Q_7R!}\~h_]…Ð »&ËEBÔràŸˆçQØGaKˆ»Pà‡àP¬R` `…Äc”`…ÕÆ7µ$o-¨‡g»à·xñB Æk6x§g"›bôអ}Ì2úжC;«Ñqtâ³ê/Ž©¬þ¢ŠÖ“3AÝ ï%ù°…Cý_Ý|>kÈûÚ\¡æsæa^Ž—Øƒ#˜vU%]LiV®ËBkPbmöå÷On?YzÙÓÍík¿£CÌ£öàyRÁ-V÷Àô‰fzü¬ÎöZ±v¼£êÛ4;v')¡.Ø³îØ /u¯ZÕ´Fz>¡%÷:ºƒšê.w194–¥®uðO¯ë(‘,¢>uê  õ¢oŽži¼Ð\Ù‰`#¸SЬç…rÃ-˱ fßY.÷ˆ}¼ÙòÃôOœ€¯–ìh"ê1ª¸WªA%$©;V²Y+©-:‹Ò™)¢ ‡Ü˜½„¹O A/IýKD¿ä^RSþ¤¼4 #"¨3fpÁ(\•—°JãŒð[ ÞÕ9p§¡U¶,ÿéº.IzKĉ Äø˜Ž^qÂïàäç¹ó×=ƒxˆ¿26:ÕK$”‹ \~¼|ؘI+±èýÍØ®ˆY5•²!¾M"¯¿WÏÿú¬ãô9}ë³6ë_n|u=FymIç“έ=„  å¹i%î6µ·ù“åµ5—ÿy¼1ý‘>‘ïņdH]c°ã¢wKðB^IMÆ®IèÂè?û ƒßoíù,ŒÇ‹çÓpí!‡s)È…ïÅ“Kô}àª'yo!¬c,7nB­Ÿ!þ‘ºØ|æPbFÛö³#B}×ï/ºS呲«6^ˆù^Ù/ ÜáÙKpÙüŸ°]lÊU²´âÄp•šrÝÕñ‚ΣpNp¾ƒ?Ím³·{0|P@Z’"Ñ¿Ða+„-ù^Zu.â¶R@(ØŽ=‡¿ƒÍ‚§˜ X½qMš´ Û~yŽn£K)aysZÃ݃—x…Þ}2Òq[/¬´SS¿<6õY6Œ(F T¸Y±c¼-?»ßTSº ärNw_ŠÅ+k2ï%HØK’S"¼ßÂÖc®Âoe??ëþ”v¯‹v 3pˆ{p5Ñ/0.qù²ø¦žž«M¤ì |Ót¸#r±<"ÊÍ#¼]7Ô~SØ©š¾ª¢Ê7¤~43¼Ö·×Ü|ð€ùëñ_q¨ì endstream endobj 11 0 obj <> endobj 15 0 obj <>stream xœTiPGîÙcvÔÉxYA4‰'V”À‚P‚Êé ºº Š!1¦ÔF£h€ã"¢AP\ƒŠ Ä(uA“R“R+&JPŒÇÒ˜JïbÔßù1U¯{º¿÷¾ï½þ¤R †aú„¦²R¬éI‰#͆dç–¯ìÅÈò %&¦ÎKFµ,jÖ*±Vµo {Âì°±XÝ‘ŠaƇÌ.3;ÎgÄ¿ÌÙ+ÒSÓ¬º÷Gñ×-ÎÖ½ü£ J±¤§štÞ4ÈJ1˜3Œ)&kDºqq¦E•h²èœ¹ßX¿úÐ!ÞdÎXa±ff%®JNIMK6uE¢™hŠBÑ(Å¢8ˆæ `¤G¡h: C (1è-* R¡´=bü˜ƒÌ}…¯"Rñ³Ò]iUþ ŠUU¨ZTíjVmR/‡*7°M½L6ÏÐÁ"ÐõãëZd»Ðe§ËþÆÅãGÛš÷/ ɺó´aÂÎ]‘$ò~ÒP+¨á!¨™z tJh’Od¢7aH0Ñw“`âc@áß“)R>Q 7ôƒ½ã‚§~ßöäIcÛu‰Y ܃´˜s*×U Ì¥ÕÝ‹Mt§†=YonÅôýÜ`ÂõÌë© ߘz0Ì+Ï3¥Grü èi®ž ygø¼à ù­O¶^¥ð(Õ·Aê¦Ú·¿¢Y«ágÞ:räVÉ—›6ìaˆf]þ¼‡ãèDC Ç~FIž±‚ž‚‚©§¢)Iy³¬6;¶ Ã4NO”©…†]YÒ®U;óN¯†Éqýkr‹rq&·4yeØó¶âl1§p}áúJzšý‚ôú5&àkø»ÒÚêÚê= ø ¾’VTF‚û'­ÝŽwsû«m§,sóE7¸c}Ïî3·»õÝ+LaDG†éGµ‘_Øqu‰÷ªË·lß+¶k>ÙøÙ¦\Ì-É+¬—àäËõa“7tËêêñ*ùp_ÙNîjøºðE‰úHcõ%]—VC´—BûñÔÞïkE>>ÜÉ;¯3ðW_ˆíj2œ%L—DzÈ’3†Y]vµK"õ›ìjϯižHDÛ'—í,åëJñ>Îh@1õ,ñ&ÞÎ y"x±gË¿jÃ\Ó¾ìÔ켜œtƒçµ=ì¨o»":EzCîCŸçŒ\YB~ÞŠ pÓº†5‡SÛýφb¿çGTd:™ö`0Œ„Þí­Ï«$"²«’WÄã$¼lçÊýklŸïÙØÈm¾/ì¸]S{_ć &s”1ýþ”Ö×õŠŽP fÐ(¥Ã>AÃÿÙ’œP9Ûk޵,Iމ2OÁ~™ôaA8W³ëü)1P¶`áô9†ÝGrE2”ÍO,1ÙÇÒί¾N_Ýè×ÀC¢hßj(ÉM —O¾ë3?48"ÁÑþøØÕé•£P ÍKÖÑi^]†r¡îxKUynf©Xœ½%§sä¶ËV°#»~I•aïÂ’…Xçd$Gr`Ó¸A•«“Áà ¦„$—8_-ÛiTÑŽxШ;çMz>_¥,ȤƒG×Mú{yWø². Î`ÛKZµ£óîß½_9`3HD¢ÕLíþúñ5Ío8¡Ãqè›æ“• "érí\>Tûz-{jž†_ H?ß•(.oŒ© ÅÔ:fक ¢8‡“‰›µ\¶ï€Ð¢e%,¸÷©¨ µZŠ´½ú¥e<è endstream endobj 16 0 obj <>stream 2020-03-21T12:46:37+01:00 2020-03-21T12:46:37+01:00 GL2PS 1.4.0, (C) 1999-2017 C. Geuzaine gl2ps_renderer figureOctave endstream endobj 2 0 obj <>endobj xref 0 17 0000000000 65535 f 0000002336 00000 n 0000009408 00000 n 0000002277 00000 n 0000002126 00000 n 0000000015 00000 n 0000002106 00000 n 0000002401 00000 n 0000002513 00000 n 0000003280 00000 n 0000002904 00000 n 0000006033 00000 n 0000002442 00000 n 0000002472 00000 n 0000003592 00000 n 0000006307 00000 n 0000007887 00000 n trailer << /Size 17 /Root 1 0 R /Info 2 0 R /ID [<14055BA0A6B0AED335437DFD94A520B2><14055BA0A6B0AED335437DFD94A520B2>] >> startxref 9628 %%EOF queueing/doc/qn_closed_multi.fig0000644000175000017500000000274713570046274016717 0ustar morenomoreno#FIG 3.2 Produced by xfig version 3.2.5b Landscape Center Metric A4 100.00 Single -2 1200 2 1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 5310 5040 270 270 5310 5040 5310 4770 1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 6930 5580 270 270 6930 5580 6930 5310 1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 6930 4500 270 270 6930 4500 6930 4230 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 4 6300 5310 6660 5310 6660 5850 6300 5850 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 0 0 4 6300 4230 6660 4230 6660 4770 6300 4770 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 4 0 0 1.00 60.00 120.00 5580 4950 5850 4950 6030 4500 6300 4500 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 6 0 0 1.00 60.00 120.00 7200 4500 7470 4500 7470 3960 4770 3960 4770 4950 5040 4950 2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 4 0 0 1.00 60.00 120.00 5580 5130 5850 5130 6030 5580 6255 5580 2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 6 0 0 1.00 60.00 120.00 7200 5580 7470 5580 7470 6120 4770 6120 4770 5130 5040 5130 4 0 0 50 -1 0 12 0.0000 4 135 375 5130 5490 CPU\001 4 0 0 50 -1 0 12 0.0000 4 135 480 6705 6030 Disk2\001 4 0 0 50 -1 0 12 0.0000 4 135 105 5220 5085 S\001 4 0 0 50 -1 0 9 0.0000 4 105 75 5325 5141 1\001 4 0 0 50 -1 0 12 0.0000 4 135 105 6840 5625 S\001 4 0 0 50 -1 0 9 0.0000 4 105 75 6945 5681 3\001 4 0 0 50 -1 0 12 0.0000 4 135 480 6705 4950 Disk1\001 4 0 0 50 -1 0 12 0.0000 4 135 105 6840 4545 S\001 4 0 0 50 -1 0 9 0.0000 4 105 75 6945 4601 2\001 4 0 0 50 -1 0 12 0.0000 4 135 585 5490 6300 Class 2\001 4 0 0 50 -1 0 12 0.0000 4 135 585 5490 3915 Class 1\001 queueing/doc/power.pdf0000644000175000017500000002235313635377235014677 0ustar morenomoreno%PDF-1.7 %Çì¢ 5 0 obj <> stream xœ­WMo7 ½Ï¯Ðq÷°ª(êóÚ¢(Sûfä8všÂN'EÚßÇÑhÄÝ»NZÄÁJù(‘Oç“q–Œ“ËïõýôëlÞ}žÈÈ¿‡wÓÁ“3 ÎÄœœ ìy¸™n_ˆ\lqd˜£¥ZÍý󶬂»¡RbÂôöTc˜4…s}óu¦C­Î›óÁ«_¶vÑ%¹Ú=p.Ž•J!²g L6)œ.P0]ÔPÖÙñìƒ ¤ H5u6@ØS¶^t颲ÎH ¤m@´©h‚f¾Œ‡ñ£iÒ!U™Sy ’¥R}2çðíÓD3#Íòs}o~¼+‹.o§FT2ÑÙ"©¢b•`.ï§«Ûrõ†°³ûƒ÷;qÈdk>‡Y|¦6ÅÙ•O²^_¾˜~¾œ^nÑ­° šôá 5KþXiA‚Ÿ"…ÐÖºõº¸XRt ãe®ìW¡Uïj´i ,s…²jt­ÒQRñ ñ@isÒ5V¥Ò£êSµ*Ë\Ç´k¬!U*'—|Áhµä”°«}_~.!A‹’c0¾Ú(¹œ gÝìcÚöÌ ¡òÊÏb“lîò-ÔiS=­ê‡º¥ßh»íjØž˜úç¹Ê5kýïrÅßx*þWóå»2”$ ¯ñÿíäÍ‹ç¼Aç¼8zr.žzAN©óȳõ$yè˜<Áºb‚Ô2N;?íÑúÌ8ïÝ> F¢†îÞìÉÙBÞ}Þ‡hC Q̾[Ъ7d¬²ëhÈþ\G[Þ¾¬(ï×ÕòaÃÛýž‚-”IYü…¼¹j]¥F~Bó¹9\ U`9ý¯{v6qbåæëˆÈÍ*|€0'`ú•-ÖO<&˜ÇŸR’øsÏý|´œ‚øŸO^.þcÿeµ݃¤:Içy³!»Ýfw9 Ý݇ut­ò°*¾_­?n˜˜Uåe,+ÄßVÍ›MúôÕ8dcÛw'ýŽmßCæV—” Ä‘’}eŠK pÒ¢ùý‡è)šóúÄZÚÝõ.0Ò¾QwÆgü’<Šhr±;4cAº yT(®*AõˆERpyV(a"ñe!FyÏð*J=À-Ç/;g³! ï1Û<[¥mNèk}†tL—âÃOF!aÄ ÖtAòR²ÇV+Š oY6ÈÑ%1'ÐÎ’Li~êqp›åXŒ–KŽLý* p N}ùâšNàd ÈÀ_Øq‚S  U{`¯°ÿ§þZR°Õ˜£téÇ¿* äʼǑr{Ë* ä<謒@{£¤’@®Ö%ÀK€—Úþ{ˆà£$àHàhÖIˆ¹ØÀ: m…ÓIðRò“΂÷T%®# ð€–&ª, -ÁÖ ²ÐHQt*tç®Y¸E5Ž,”Ê6æ% =ÌÙe‰ïé@Óuʺ¬éžpVOšî'®¯¦{DõŽQÓ=á„sçß#ÍÉ#*Д…ÉK ›DZI–@«èx¦i4$®Q¡šc –Iš‰'Mw‹Û!z }Aù÷YÚG\ ¢h¤Œj{ýÓ˜ ¸PðjãœÄKNøÊ@ »änÕI IM4¼žj »¡µe÷¯Ï> Žš ’~"˜ãõ®9`fB>8”¸¢Rã6†PrÁ“%h¸ÆÈÈ(c‘¤þ¦ùè¿¡„!ž;’> /Contents 5 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 4 0 R ] /Count 1 >> endobj 1 0 obj <> endobj 7 0 obj <>endobj 12 0 obj <> endobj 13 0 obj <> endobj 8 0 obj <> endobj 10 0 obj <> endobj 9 0 obj <> endobj 14 0 obj <>stream xœUiTW®¢éªŠ!¨TJÀ¥»GÔAh±U”@TvDÙeuXZ t7ˆB#FEêèQqAY\pIQ„ (ŠÁe H\BKi`$j\æçuÎLæÌ™¿sN:ïUûÞ÷}÷Þï’„¡A’ä8O¥*]™–5º³â§üT~ªaÍÈž‘ 1?͈@F"ddX:õ“·&pm"d‡È „ˆ$.˱ X=ÛÚZî’”œ‘’Ÿ&³·›«EgÈ>þ‘¹*Sâ4²YÂ"]©JJV+5i+ÔÑReQšÔÿþG!Ñ$¹$§¤¦mص)Cé—¨Rϱ±›k?O1l¡Aø~Ä ÂŸ$VAD0±†XF„¡„;1—ð&Ä b%aLŒ'&&K|NpÄ$” 3œ *†„+±‹xEú;Èß ¬  E6¢XÑCCC•á;ñ8q¼8[¼WÜG‰©xª‡6¡Õt'ýŒ1bòà¼1߀и€GñE&míÎݰ§Ë”ý®/æôÅÝPE³Íÿjlëi©Šñ‘àwñ2ZçÝ8KÂÚ9¡uÄ2¦—âÓÚyy;Y®ƒNñå¶œ7»b·^ ˜ –}ï` xσåÒ|gn°ÑOÂümmÚövû€Ôxd]Z'?ÜI^XñˆÓ€ÂV‹h6úBäëågð8„*f´ºÞö˜<„À½zQAŒ5µ-dkÂfÚwE‚bðL[`À|u@Ãô¦[™šsÒ3)GÕ‡V1£Pµ¼•V zs”êu)Û|k¸n8MUÕ¥¶"¦ö Žà: °TÊÚ¹¢€ÄØÌSš•;Sl3dúpÏï,Æñ§+ÛÙtÀx»£Oj =‚Ž›Šv™<7eï>ø(â):Ln4Ë<£Y»ÝYÛò·N BщaN ë7$(˜ûAÁZäèD¼7oÌå½ñø&°1þÂÇjQU,LPKµ›~Ì*MGëÌCB¿Z©<\’.É>ºýèŽ fµÖêÓüfÝͯµk¯Zœ’:žð8¦)AæuWϵþT®Yµ[b çÓñV­ä³.ìð͇x†«ÇÏzT®i.9¾ûïe’6zKî7y™ˆ‰Ûz°B ¸g,ËBFù™4wÁÞ®%OLÙM|ú$¾Ø×Ól,ÐMáuù¾„§ô–´¢9ðw ëÚŽêÎÔ=`–ÑB~ÇÄ!ùë“À†/Ï¡,ôò¼\<“ú«^.¶ÈõÅâAê5oû^o+»‘·k'«tp¸KÄ_¨ãrvíD;£ùúèi)Ü¥<ê1ç¼rClœ$5y«z×j¦›ÚÿKgµˆùåJRˆt—‘푃ÇmÎØ™˜½r½*y0òß÷- ¥7›$û‚N§ÝDÇÑ¡Ýeû< <8”´-3%-Aýu(b¼•çn•—õ–öî-;,”OîP'9p…} l‚° ˆå¸àƒx.Q``Š#ÄÔ…5#Ÿ ÜÍÁñL½OøÚSà¦/MtÈZ—‘̳ЖÝ{™%taNáÎt=Prìô‰£%Ǫ kÄØl¬ÍÀ³í$²9Ô±ýÚæÊ„Ç³…2™5‹ðR¼´:X‚QW+PÅÒ…Tš{xœ' F‘'“ª7žûö\Þ fw+·¸é~7bž5yÍÏAU'è$ÿ9}Ã"ð{dP·QMaåÅêË'jÑO L[ÜŽgHðÍ?Ô?Å@0Ý׿èf/”~ʘ0¯Þ™´t;þ1VU}qžQ.œÞM 7 -þZK¶ ð䀈à 8TŸ{äëïcºTãñ …å"lf_ø"E ^a©WÖ¡s›£Ú IØê‡Qð‰øªä [.æ×EŸïyxíÙ˜z÷îx!ú¹¨¶¼®ò|3ºú[,ÏàåufóN&–¡FæqsÝoÀ4¯¶Î—Œq+"[»E Qs ÿP¢{ü?.˜<ú˜²ÿ4ÂNšýé—[w[ï]TzJð£F·wËc½F·ü4z0èÆl·¨t¿P‰ª1ê¤bX;7¾~­ó˜¼¾}Hþ9"¨€fç¸@%4#zKêÞŠ ð-gañ–úPòϵäÕ~¨èAÙHç…|ÕëB#–§Y#<™Á¹˜9Xu9 Û0Þ"YWïwÖ1N†CµVx ŽŽ°žmþ  ¬vxH:æï$ôŠ @\_Ð;çO«°hãf<5ƒY>ÚÚù=|£PV‹úEü§ÿ„:pçÂ%]ëF³—·®?F}èNjcTeÔ¥ÕÇ=Ñ\ä)øaŠò›È]‚ýS{êö-8YZýÙÄtÜñwòÿ*Ä'Nj„-üÍc¶7çUÔãím7á¥ýîý¦ìX=Ü!ª‚zq=Ra·j•UxÝûíRÁÇü* +ÜÄ ^6k°¦=¯_pNÊ>k9ó]ý£É0añ<[|éˆçäJz©üê½§•]©>y 1ÚÚp§5ªØLiêÖÄ+ó˜1ò`û”„¸pØ¥\Þ=Î'xÓø‰>LlCçN¡ ޹ŽtZ°Õ‘¼£ GòH§7 ‚õ“Ä¿RWê¾/lDÌP“÷ô™~+¬Ã+;ÒÐþ“Š×_z¨ê@[¼z V ³y§†Äd«£¥e*†kD€-„ ‚KÂá;ø \&Œû² È ¹)£¼#]7ÍCØaãBç«Ë/ùÝS nS†_Ã_À|î fÝV­VJóÁ£ñåkt]9âÆÃÈ‘{ÖàkmçëµxÑŠÏûïÜÓ ]ùq¶¿¨ŽÒÐ(x–ÂNx»;¶ ÆYÌ U û`5( áÃp„ÊÇ©5©è÷î‡<áeÊóSø‰ÜãšÒrÔÊ¥x*ÞÄy_`±{iü£ ûfqtŒŸãdl6l+@”ýöÌ:bš]‘°Ã˜BîɵHÐÈ¥KÂjÚÚ®Õ<‘²oðmÃÞ;þ ~vó}›º{šn Ó3­”/> ‰G¨_Ç |ªÝcdÔuÐè3‚øŒ‹ßc endstream endobj 11 0 obj <> endobj 15 0 obj <>stream xœTkPSW>7$7WQHãÛÜ«†"¢Vªø•†€PAEßFÞJ”€ÆRP;âA«¨€B " @ÅXt¤ ¨£–ª¨íˆ­ÊÔΩ­¯ÙKvzõwÜ™={ö|»ßîÞAR bfPPLbjŒ9!J?Áß”ípy‰#q”D킉±§¹Ç 5 „.X!-Åp›+d ó`$e˜i‹s<—.ŽøhüxïOMI–Í qñfáãI“}…õáÍ INˆ3 ÔHI4%bŒæÐÃú”d!\oL¹ß;¿úÐ!•Ñ”´9Ùœ²E¿5*&va|B¢A@( -D‹P8Z‚–¢e(ù£åH‹t(MFóQ0Z€Bƒ> ­ARêÜž1ÞÌ)¦Sâ%ÑKþvëbvùIª”.’Z¥×¤í2l>T*EÀVÑ­n7@€µ UÕÞmê^=Þ•«îÞ<®µ©bCˆ†<¤žå ¶ÎŦÐ(Êï9…0ƒ ž‚Œ©¦9 ¸Àeñ;5™îA@tÏ ‚0ý ð‡Ïn2›Ï&2õÝ݈€¹s"[_¾llmã)P2ôƒGÐsB¥;‹´"¼ÞC=Õì©°zS æ`È_ ¿¶”¶¸^Ùt*xd ^iLãTw¡¿I}».pœçÊÀíª–ç/êZnSøá”êàû¨UÙÞÒ¬‘«>8{öÁÑÃ{vi`¬|Gön¼ ‡à%úDN5é%yÉ è SO,¡$Ž¢Dì”VâŽ92zªŽ¸Äå&¥òE[ 3/nƒ™êÓóÒq ·!zKp¬é@¾E“–»+w×IÍ~Eü ~ø¾ZPSUSu¼_Â?Æ×j‹I@ã°è¼ŒƒøWQe½`ÿ&yE¶F ͯàU'ÓÞ×ß2õlp'q×ù´’ߨ©µúGU%û–ižÈ¿ÈÚ¹'s±™¹õ<Ô½ЀñVqw_[3Þ*ž"Ú(@‡\U²V¯ 3T5kàzr¢hîç e?ÔhT‘!reOvqXî,x÷Údð!ûPt½ßë*s6M6Ù*ú‚ÌíÍ£é@ÅâBurÉŽ\ÎÁ%9Hæ^!ÄcÎâš©‘lΕ’¯[1w¹ÜgÉLKËä·f`¬KÏ&X"–`/Ϋ9øiÓåÒ‹ ´6lÚ—‘ÿ9Þ¬*ŸÌƒzFÔjí*ci͹cÖkyšúC¶œ{ §¥ô1€R5h¡XFf±¾dÚ˜æ°@KŠI)•Á,öÌê ³VçjŸrL¼:Ô0Ì÷W2ŠN|ªÏòÑuŽ_ÚqÔù<Án 0%…cN«¿ñêâáºÂ*¾ ¢² _ÅåIZÎØ c;aP7#Cª:;ïÇ9øòކígâžø~OŠ<Ñ›HÉ|2ïÏ10>ié®ä‰†Ý¶.zs$ŽÂ ·Tl·~y<«‘ÛÛ©>Ô^]sßÄgÖåÌäè–Pš¾»˜?{r‹î‰ß%öDÞ‘²üü=YG4]rÃ^cv*æ|Ö¬ÄÏñië A j§3žˆ­°\Á®LxÁaðrTÈWC #>Oðð»G¼yrçµ¼XQ-¥±‚üž-~ÞÜØø™ü[1_+c§ó^Fk°÷Ô4Ü¡%×kÏߨ,IO)Ðä[ö¥áŽ´;Û-õ±•‰ekŽ®Á:¼<):Œ«\ •ΑݤåØd¢œ:àøaÙƒ”®®+µœQ=Ö7!4• ƒãâŸo•­ xÂÓTsû¾¡ªê¦÷În?ýmSÝɤuÒëôÜ:]óî,ºÉ»B®¤[•®×lj\z2SIX€£¶¬çìŽ2•æÑv‚ò6eapà€,W¡>O1¡ÿ>z)‹ endstream endobj 16 0 obj <>stream 2020-03-21T12:46:37+01:00 2020-03-21T12:46:37+01:00 GL2PS 1.4.0, (C) 1999-2017 C. Geuzaine gl2ps_renderer figureOctave endstream endobj 2 0 obj <>endobj xref 0 17 0000000000 65535 f 0000001698 00000 n 0000008738 00000 n 0000001639 00000 n 0000001488 00000 n 0000000015 00000 n 0000001468 00000 n 0000001763 00000 n 0000001875 00000 n 0000002644 00000 n 0000002268 00000 n 0000005394 00000 n 0000001804 00000 n 0000001834 00000 n 0000002971 00000 n 0000005668 00000 n 0000007217 00000 n trailer << /Size 17 /Root 1 0 R /Info 2 0 R /ID [<6667A6B717428008E6372BA65B3304AA><6667A6B717428008E6372BA65B3304AA>] >> startxref 8958 %%EOF queueing/doc/qn_open_single.png0000644000175000017500000002346713635377223016562 0ustar morenomoreno‰PNG  IHDR’Ý!  2iCCPdefault_rgb.iccH‰••gP“YÇïó<é…@B‡PC‘*%€”Z(Ò«¨@èPElˆ¸+Šˆ4EE\•"kE ‹‚tƒ,ʺqQAYpß÷?¼ÿ™{ÏoþsæÞsÏùp ˆƒeÁË{bRºÀÛÉŽÌß(ŒŸ–ÂñôtßÕ»­Ä{ºßÏù®‘iü常¼rù)‚t ìeÖÌJOYá£ËLÿÂgWX°\à2ßXáèyìKο,ú’ãëÍ]~ )úÿ†ÿsïŠT8‚ôبÈl¦OrTzV˜ ’™¶Ò —Ëô$GÅ&D~Sðÿ•ü¥Gf§¯DnrÊ&AltL:ó5204_gñÆëK!FÿÏgE_½äzØs û¾zá•tî@úÑWOm¹¯”|:îð3™ÿz¨• €è@(U  t0–À8à|AØø $ȹ`(E`8ª@-hM œà<¸®ƒÛà.L‚—@Þ‚°¢A2¤é@F²† 7È ‚B¡h( Ê€r¡PT UAuPô tºÝ„¡‡Ð84ý }„˜ÓaXÖ‡Ù0v…}áõp4œ çÀùð^¸®‡OÂðø6< á—ð"Â@”]„p$‰BÈV¤)Gê‘V¤éCî!Bdù€Â h(&Je‰rFù¡ø¨TÔVT1ª uÕêEÝC£D¨Ïh2Z­ƒ¶@óÐèhtº]ŽnD·£¯¡‡Ñ“èw †aaÌ0Θ Lf3¦sÓ†¹ŒÄL`æ°X¬ Vk…õÀ†aÓ±ØJìIì%ìvûGÄ)áŒpޏ`\.WŽkÆ]Ä á¦p xq¼:ÞïÀo—àðÝø;øIüA‚À"X| q„„ B+áaŒð†H$ª͉^ÄXâvbññqœøD%i“¸¤Ri/é8é2é!é ™LÖ Û’ƒÉéä½ä&òUòSò{1š˜žO,Bl›XµX‡ØØ+ ž¢NáP6Pr(å”3”;”Yq¼¸†8WJ)Hq¤"¥öHµJ IÍKËIÛJGJJ·IK”aÊ8ÈÄËì—é”y"‹’Õ–õ’Í’="{MvVŽ.g)Ç—+”;-÷H–×–÷–ß,L¾_~NAQÁI!E¡RáªÂ¬"CÑV1N±Lñ¢âŒMÉZ)V©Lé’Ò ¦$“ÃL`V0{™"eyegå å:åå–ŠŸJžJ›ÊU‚*[5JµLµGU¤¦¤æ®–«Ö¢öH¯ÎVQ?¤Þ§>¯ÁÒÐØ­Ñ©1Í’fñX9¬Ö˜&YÓF3U³^ó¾F‹­¯uXë®6¬m¢£]­}GÖ1Õ‰Õ9¬3¸ ½Ê|UÒªúU£º$]Žn¦n‹î¸CÏM/O¯Sš~°þ~ý>ýÏ&   ©†.†y†Ý†iñªî¯&¯v\½mu×êׯ:Æ‘ÆGŒ˜ÐLÜMv›ô˜|253˜¶šÎ˜©™…šÕ˜²élOv1û†9ÚÜÎ|›ùyó¦é§-þ²ÔµŒ·l¶œ^ÃZ¹¦aÍ„•ŠU˜U•Кij}ÔZh£lfSoóÌVÕ6¶ÑvУʼnãœä¼²3°صÛÍs-¸[¸—í{'ûBûªƒŸC•ÃSGÇhÇG‘“‰Óf§ËÎhgWçýΣ<Ÿ×Ĺ˜¹lqéu%¹ú¸V¹>sÓv¸u»Ãî.îÜÇÖª¯MZÛé—ˆÿ2Â6¢,b&Ò*²4r*Ê*ª4j:Ú*ú@ôLŒMLyÌl,7¶*öuœs\mÜ|¼Güñø¥„€„¶D\bhâ¹$jR|Ro²brvò`ŠNJAŠ0Õ"õ`ªHà*hLƒÒÖ§u¥Ó—?Åþ ÍŒ]ã™Ö™Õ™ï³ü³ÎdKd'e÷oÒÞ´gÓTŽcÎO›Q›ù›{r•swäŽoál©Û m ßÚ³Mu[þ¶ÉíNÛOì ìˆßñ[žA^iÞÛ;»óò·çOìrÚÕR V (Ým¹»öÔ±? ìY½§rÏçˆÂ[EEåE‹Åüâ[?þXñãÒÞ¨½%¦%Göaö%íÙo³ÿD©DiNéÄ÷e̲²·7¼Yn\^{ˆp(ã°Â­¢«R­r_åbULÕpµ]u[|ÍžšùÇ‡ŽØi­U¨-ªýx4öèƒ:§ºŽzúòc˜c™Çž7ø7ôýÄþ©©Q¶±¨ñÓñ¤ãÂÞ'z›Ìšššå›KZà–Œ–™“!'ïþlÿsW«nk]£­è8•qêÅ/¡¿Œœv=Ýs†}¦õ¬úÙšvZ{aÔ±©CÔÓ)ì ê<çr®§Û²»ýW½_ŸW>_}AòBÉEÂÅü‹K—r.Í]N¹<{%úÊDÏÆžÇW¯Þïõê¸æzíÆuÇëWû8}—nXÝ8Óâæ¹[ì[·Mowô›ô·ÿfò[û€é@dz;]wÍïv®¼8d3tåžý½ë÷y÷o¯ñy02*|ñ`úaÂÃ×2-<Þ>†+|"þ¤ü©üÓúßµ~oš /ŒÛ÷?óyöx‚?ñò´?'󟓟—O)M5MMŸŸqœ¹ûb݋ɗ)/f þ”ø³æ•櫳ÙþÕ/ M¾¼^ú»øÌ›ãoßöÌyÎ=}—øna¾ð½ÌûØú>|œZÈZÄ.V|ÒúÔýÙõóØRâÒÒ?B,¾”Í pHYs N NwŒ#tEXtSoftwareGPL Ghostscript 9.26Xn·‚IDATxœíÝÛš«¨Ðdýþ¯œ}‘Õ¶ËSPQaÎ1®º³ª •¿ Âûóù¼€üótúö~¿Ÿ.Y|>Ÿÿ=] ”Ø€n˜$¯Ã-\d|AÖhº!¶ bº!¶ bº!¶ bº!¶ bº!¶ bº!¶ bº!¶ bº!¶ bº!¶ b€Þï÷ûý®x´Z‡J蟧 @»âðóùì=ìûý.ÿ­ãTñ=Ú™òtJlñͰy:.¾>üï ÉwE`§%¶Bù|>ã`RyÏã1ôü_׎|¸H“7=&y`‰m€Œ&Cð ðv&¢kÅ×Ü’×8’3gaGÄ6@j’»/b€ÿHîÆ‰m€ìÚ¹zÍOnIà‡í§ÅÖè…g'=± À_†»ÊK&ÌŸ;°ðËÏ‘wÍ$9Ëaùù|¶C´îRe?ߎ—Ø`Û(Ýõ+ßÏv!± À)gn>O»´øab€³ÖB/ù-™½‹Ø ‚½cn™}ŒØà ù ä…á=ÙÈ„rb€¿âs×xþÃ%ámEÕÃÄ6§,>¸µ+¹)'¶øÏ™Mµ÷.ºb#ÎÄ6@v‡SóØ äuËØHíðUí5‡/Kîb ¯ê™}àP’{± Ñä~ﺓÛ{Ó×íiåìÊ$2ÇË}/¦éÏÈ<<>Æ»–aI¸˜yº?¸.;Íí8°]æáþÜÙ³pê{û8»æÏ÷Ãã¬Û§ˆm®6Î×¶ bº!¶ bº!¶ bº!¶ VI"ȳ–u³«D[‚½Ä6û”Ÿ$•,Æ.b€ßêÎg\´óXbˆ |×ÿÔU€’÷=¹¼¹U¢wÛLîRnþ[ó·ß%Ä6TOë Û‰Êï b€'ïÛÎoÉ=!¶R›‡åSI¹˜ßßÿÞ± T³OZË ¼‰m€ŒÚd¯Þ‹Ä6@.íö˜ðž°&9@"“Ìþ|>]äß¼œy–³Û)¼ßïÉÚd]ö˜ä~‰m€ æƒì§JrÒäl#ar‹m€àÂdö`’Ü©Â[lD/³¿ÒN˜‹m€°z¿˜½-gr‹m€˜2lŽ™ðR·Ø(CfR%·Øˆ&UfåIn± JÂÌþJ’Üb Ž´™ý•áOÛA$Ï쉨n± MæÌ?Un0Hªú^Ëk]dæ¹SȈ:æóù ŸÆûýV¶!£aëñ׉®ãÅÉ LOs‹mHgm»âÃɽv0ù."³Eý(Ä6äR’ Rví$€;ùÌ'†$Ò‰£Ø†Œ*öï×¥È "%Ä6$ò³‹?0:‘ÍðE,Š7àÛ½¢Hf—ˆ‘Üb²x°Ï*<(XõÛÀ²ó1¿vË:Uj`À-¶ I”‹ˆŸ;Eª‡b¨ïý~sEº\-R Ý£÷:)¶š†À¿òTa¢ò‘æüFlլʼn˜¹H˜(ºY×ÒV"@5kšÆÛÑé—Ñ6p9}7''¶ ‰š BŠmÒéw¶\lC{ǵÆ%Æ7 ò©¦%¶ î$ଵ9çg†ûÉ;}ºÁhXPwCîZ‡¢M_±o¿:± ‰üÜ{x»“¯€và­9¯©sü@Ú×ÚP…؆\JzüÅŸ:ßùÚ¥qn°Ø†ïwü/†wS~ž¿¶LlCRóëdÄV? ]Xû~ǯ÷˜ŽÍrK¤óíO‡!òxÅÇ“;éö|ªÉ‰mHj»?p¦¿8€+|ÇÂ_1F$§q“¤\ךØÎn’…“Úüý׿üþäâ¯O^üþïäÈ¿¾fþ+]·½v˜!ïÎçó‰1p¼S˜OÌ$y^ï÷{ó^{ñÅÉ,¾8X{»_ß6üŠŒ!3W¸ë½ëÛIý ì±3µ|qøp§H=ئHÅä¦)fÈûeÀ}@€z.¶3:vy8@u vn*¶Óyü–.#¨Å€;!±ÍÝbœðÆl’œä^¯’‹mvSï! ­rCÈS±KÈJ |iàk"܈m.÷øÕtÅ›ì~=tžçFÔb›j49è×bx¿nÉïµ§Ñô‹Ä6GìZXmþ¢Öx33äjÈÕù½Ý‡¨¨Ä6¥*®Ï|µh_I~/þü¢ÂÞCoPBlóCI{;Ób ©¢ße¿·‘ßc‡? /±Í‚ºóW…‹¬Éï‹ø`©¢âÚ¨ªâb›¿l´Æº-í¶Kh@uå kÅÕ‰mþxªÉýÌoÍžêÉã|÷Û´²²ÁÚœð>ÃÔ#¶Sk$°çÚ\¹ àqb;©f{°¶rSkå¸Óÿž.h?³ŸÏg¾¯¨G} ™!‡xŒ¶sé(°Ç·*ê¢äu‰íD&™Ý]ìMÂÛÕn !“äYôžÙƒùœùS%iœrIl§0Y¼÷~\ri‰íà&7põ؃Éɇä’Û‘…™_#¹×˜!‡¨Ü’VøÌþ/Ìâ&52»n{½…†ç;ª—dí€ÃÛ¥jõb;¦$™ý5_R ÚXÞÿðí Û=É÷_7Þî|IÖ®ñ­½ub; ³·MÆÜIþê5fÈ“›œÈΫAIv–œúÿ[W)ÉâOVÖwʵíÈRõÚ®sC-»ž=¹®Ÿùyšª‹ˆíh2'–䆷_­ø!¹ÍsÀZÃ)¯E&÷+YcÛqÈì/É ‡éFÚ'¶ƒÐØ€¨ Ÿ@KBlG“­/J;à6CÎ.u[Ç™Z·ëI°ºoݱAªd*”6¹á°ÖZÊüñ°ÖJø±Ý=Óãk|°¡,\û%¼-·‰”šV{Ȱ‹r ¹+jÑá’Ì1C‹^c´Ý·äg@‹ vØm´DÚÏŸR ¸an­ÚߟygJ²¶šiÂvm´½OÉ펷5“¢{>7WØk»ªÜÙXv-êR¾?XTb{‡ÃÛæð,I‘$On±½[#õÃèê˜F¾>hÁâ¶Z-”¤úÏG"¶k¥ÍŠý¨x$”¶¶‹í.é¦Ï0à†϶”òûÔÊ>±½ƒŒìš¯~ÒLÚ'¶hä$Tã¥>p¥½}]ݾq×ÑòÔ±]Þ³}ÃW“g> öš¯^ø‹W u>‹æÛïU«$ÃqæzeîiÅvOœ0¦>p¿Ç+ÛãxœkÛ»©4½s?9Ð/±}œN[ÚÝp®c’¼¦{âí÷¥õ ÌCNFÛÝè" {a‹: SbûþšÏ¿ž.@Lb›Ôº˜˜3Ci‰íjt \Ml@7–cûý¯›KÓ‘§ÆÖÆô˜!‡Ìb{²­ð>̧@]žÛ®ccÜ3NîÃÃ#ñ_ݰ§@G¦±=Y¥Ý^IuU‰pêê«z›!‡ä&ÉÇÝ®aÃÏgû æ÷Hí¢ÓïIòï\b_#’¦Ì·œ›3  „kÛ”­ç 3äÀ4¶ëvI¦¯û3çG6íq…$Àr+ТØþïŒHàYE×¶¶éÜ??ÞñÆ>ÒêîÿH›N·¤=£$ª'ÿ«Ë®Ëç ôèwlëÝjÙÕ01œ½¹3Ò2Ú¾Võ¨Ö_dö#¶'©#3vYËlŸ!Ç”>&iNúŒ<]:6Ù/Èfk´­_8IB¿šŸ¡i¹lsE×¶um”ø¹\«ŠpÒjlÏ»`Ï =«ýÏ¿£Tnü“Üæ~rÈl÷â¦]÷w1ø ÒZŽm›P@ƒl%B:®µ»ŸÒZˆíCm}Ç=tÖÉímÛ ´ÛCíqrKq:`†üËÔ ä4íò.àý¯Wÿ=`GtÖ™­Ž¶×’XBÀSþŠíc8AN/ÂÌ™z„þZ%­°/‹ÑåõË"Yiyn›, IÄvßDÑ‘¦(Ì“sáäZG«u¨„Šv£5ío+Òìªçåç¯ÃaO^˜;ß ×Žé\ü'£í^f“ªy“ÍçóY¬á‹¯â½Z•7Ú8BªnÐh›øb7i·(21™jŤzŒÇÐó];òá"MÞt¯ùc “Cå©ÿFÛ3àÞ+I«†“!øF7òù×-åZ0œXŒËðl‘$¶ƒÜk‚=« u&÷ãJVk¹ü‰í¾‰"^æ]8'aòuMlÇ¡½ÍjÃ^­õ$?/ZgkÝb»{Ùªl¹ÖzhVËÝHËe{„;ÉCÉs/åO‹wÒæ~r.µ=quòqjOcï"¶#?ï¡×žðiÀ^C7R2eµøüØ…_Î_ÒJÒØM’ᦒ1ŸìU¾NËXù3ß…e8p¨lí]lÇ!¹¿²MÜOÎE´£]¿ò]CídkÍÓØÅv(’;mfÃÎô6'Çë ;:±M欒Ùð”y|–´ÁZsì©Ú»ØŽ,Õy¨Ì~™'çQ{kÝùÌ®{e½b; „Så21¿¼°Ï™ldR«ˆí˜&É;¼cÿupÃç¾k[‚–ÿÖ±&œöaW±Ö™Ç(;2ékr6ã1óäÜom?uøÓföKlÇ>¹ÍCugV;ÙÛç;ËÌœÙ/±^ù–º}™ÌÂenÃpÞážáØ ägÊ<³_b;‰`—º'åOÞ†çÌ“³Kõ3àׯÖØ’Ì_íÅva&Ìe6TtѬÕÉ]˜Ùáû[‰$2ÞqäÕá#*ªÕ “rïÀ`Ò;-¾ËÆd´ËùÖõˆùľÌÞfž<³É—>9Y /îrÀ±v:oïªñ˜Ñv:óýøZvW¼áÂ[‹·Å×Ë]|åçÌööL޳ö?GáoUüËlh</Þa‹_§ïÜ`ÜœM’§¶øœe óQ‹³ââgóä’IrV§Í_·ÔOå$!¶ùcñ Ó ù½1Øb›¿lß2þ™“¶gnvÃí<f…$Ä6 ¶/‹¸S¬äòª\øIl³¥|õ¢*oÀ6±M©Šw&‹êÛ˜'‡`Ä6»­õþîçAyžsk³M¹[å6b›j´LïØé‘súŠÄ6gžœó®˜Ì°ß1bˆ |×ÿÈU€Ÿoºëc/Y2=ü÷xžØà/-‚4_Jyã­å÷± ñ™'§ÐZ`_QmJ¶S]çÄ6ß5¶ö|©ðžÛ©5µCîb~ ï1wB öñd®årçÅhd[áÇm¤ÓÔ{ÍÚ¶„ õNFÛ¹t‘Ùƒù@òa·Ø†,Ì“Óò¬ø¶Åð~ª0ÏÛ)tØc“2çLn± ß<³Ÿ*Éy“äÎÞnI£HyÃ(é¶—tpËÉu¬»’S¼ÕC‡šü•ª>‹mŠ,ÞÒ¹vŸçk½kXë>†,©VbàõzEÌ쯴É-¶ÙaÒN†‡ÿþõçò“Z<Έ41¾hÒo$In×¶©iûVÏŸ›dhrs?yá3{í&5±Me'{‡À Ü&Of¥Jn±M‹Â7<¸MøÌþÊ“Üb›kÅn?2O[Ô{Ð~J’Üb›k-öÛ-*UGu¥Íì¯ É-¶y†ä†ê’göWø?\lsû´ÃµGJ’yr‹Õcb›&ÄkZpCí]bœžŠmZ¡ß]b„Ð ‚õ-b››ì}6L—tóä‹¥K¨çb ?âçN‘ÎlÄ6÷ÙÕÑDjfp-e¯ÞÏxÄ6·Ún0½7§N™'ïŽoê€0ç7b›»^˜ÐRv‰q†*¶Ù¡V]_<ŽGY~²JEÎíw•ÁaY´µ3™ýˆk@Få79±M‘*Äpùƒ^: àÎPÅ6ë´å<µmàõŠr·NÎwÓÛ$ÒûIrÎêñ&ÓN/om˜'ïEka³Qaԥꌶ8nñaqZw:¨m–Ñ6§ÌS¹ñœîzbIlÿéº;ã~#鯓»_b 'MÅaS…IBl@7Ä6ðóäÔeD^—;É[MÎôéQ5¾ÝÀ°8yuãÃ^ñç‹màIW÷q<ÈzEõ6IL]:O¾Ñy½Gª¿/·¾Á.¾Çê…\«áµª·Ñ6p·ùέsFá=š›9×ZùYÃÏTo± ÞœÄ6p!áM;Ì¿<œ·¸c#×ù|>ßÙº+ m•Íw•ä<.L%ÛÀ%$÷¥?ªGïób¸Jïýc/$÷O1®j‰màBzÉfùlsÛÝ3àÞi¨ýÛýŠ‘C—ŠwB#¶!‹½]¼HèK¼|ª+L}Û “FWy*#¶‚™R‡?H'7bXP½›‹Ôo¶füÙJî¹`uOlC"?×èØîô,0.Eî!¹'br)y,þÌÐ.nÓ¹ÝKî´Ir¢N‰mHjÞ³_9ÜÍU? {ù¨_Ñ3ûe0HèÛ— Cäa;©×¡‡Ä&ƒïùñˆœ›ƒ…Ïì×ë•ñ{…gµ¶fS­þÝØúRåÕ&Ct-Jò‡›$‡ìjupóý:y„‹Ü±‰m€h²%÷ä¦Èاb  <ÉíŽ ± Ó$¹C†w¶Ì~‰m€À&1,¹'ã2û%¶b ™Ü©.fOˆm€à&#ÑÞ“;áÄø˜ØH!Æ¥îä™ýÛyÌ'Ì; ïyiföKl¤2ºö“{1°sföËšäÙ ‹Ò¯4»0íü”¢ÁBÞLldÔxx/Î4R¶g‰mºW½y¯Íê2ˆ§ÁðØÛÄ6}[ìb¾WÂŽµóë|9wB$ƒµðÿëÕœ.Ò Ñ±aÁ±Ã|oÄ+.­µ¶q']¸­Úlœ¹^ñÖ7¿]FÛôªäö×]ããŤŸB ¶sÖŠ§Òú0±Mßê¶ðµ£}>Ÿ¡—1UÞ&§VÕ•ä÷oÇ6±M—~öCÐJY8i#¿+œBb^¯‚t¸!§ó»’éóÄ6ýqÊÏœoð~>óGXÜ”øŒ’0Ä6ìc„Oß̧ð0ØÎډ붢»V†ëÞºenI£{óv{l”„í^5–%¨5ùtà8 ç½Ä6û|>Ã\Ù0P¾!³öÄ6¿l<½üµJR.Õ9·Irº7¿‘µðç¾ÙËlîd´Mz©ð ´$Ä6@Ruç–ÏÄç®'Áê¾uwÄ6¯W{Wˆçz´VÂGˆm€ŒÚ‰Àòǵ_ÂÛ-i± ¹+¦—dñ!ÏTãcFÛ4mmݤœÃn£m€ÈÖF¥÷gÞ™’¬­fšpØm´ ÑvÚÝê»u)ß,*± @O’'·ØHjq[­JRýç#Ûô'mr‹m<;ó\~ŸZùÏÇ ¶ø#í¶#b€e{‡°u‡¼¶Ó]$¶øÏ|%ðÂ_¼âêíwÏ31>&¶øËÞäþ.XvÑxwïEîðÄ6@(UÆ …»o ¯¯­?z¾$kÇ^L•Ù¯×+ݲpð¸´Ý —ú™‘ÇêÛÃÖ*É0‚ßµEXxbî&¶éׯØ:Ig+J=ž—àq®m@7Ä6tCl@7Ä6tCl@7Ä6tÃ`p­’ÇL=É 2Ú€nˆm¸ƒí€*Ä6<,çæƒÀ1bº!¶áZ¦¾ŠÄ6Üd{2\º%Ä6<É…m`± ÝÛp9à@-bî³6%.×BbãÂ6°—Ø€nˆm¸ƒip  ± ·šOŒKt œØ€nˆmè†Ø†›˜ ÎÛð$Yì"¶ bº!¶á>¦Ä“Ä6> stream xœ}UËj1¼ë+tó:`EêÖ£uL ƒ¶w!„Ó8± ž€C~?¥=&kg1xV%U?ª[­'mÓ¶üÕï4«··IßÿVÞ$òôµìëÛÊYJFH'Í zîH2Î;S26²Žì § ³óÆûÐד’à@Žˆu+£ZhëæŒŠˆM+£Z «Ï꣭'Õ¢hH‹²Y8ÎcRj¯|´¶4ûd2²kI0lƒö2ÒÄÞÎËÉÀ¡¯'EâÁŽ”ï¨Úºù£"Åö¨|t £ùhëIµ(Ò¢lŽóhÙ%C®ä.lìš]CÈšB1볉̚aêk„šÝBhy»0ª±\=€Ðçºp.ÃW÷P—%³XÏ/@°ÒSX{ZúÓ‘Ã?ï­~þŽŽ ÆÇ¬ËWBF® IUBפuBß… ’­á@K–(ÆA~ìȃúüFÿêHJµà 2‘ŽÈödÞ1“ñ)mòŽP üa)¢†.Ñ&í(‚è¶g’&Ç0Òþª9™”½þÏw¯\˜–sC† Ãú¸ð ÙªÐ|Î'Ɀª±˜(E6\гApEÀsˆOBé¤-Õ"bhí6õëgœE›Æ0Y«ƒ!èÐUyS® 8ŒOc—Ö2,¿‚tm ¤èrÅ|*ОÌIY ©a¦,ìÙGSLŒ7ºŒŠö3ð&ôßæ/ÃZ¾.Ó¨gÀJ‰ýF”—ÈpÌj÷îúêüðS%ܲ,^®ÔîòÓþüL•-cd–;µÛÙ—³“”×#ɦeË•^„%·Ò8.›¼°#Ó³è —x<eëzµØyô^IJu¹l•Ï™úp€T7ê/¾‘endstream endobj 6 0 obj 736 endobj 4 0 obj <> /Contents 5 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 4 0 R ] /Count 1 >> endobj 1 0 obj <> endobj 7 0 obj <>endobj 10 0 obj <> endobj 11 0 obj <> endobj 8 0 obj <> endobj 9 0 obj <> endobj 12 0 obj <>stream xœQkPWÞ%d÷VcjI#D4‰Ú±ŠbQËøjµ E P|‚ bbÈ&PbrYÂðH€ j…á%ŠÂX,m}µÖ*R•;N´¥ÔwÓMgºXgÚßýwÏ=ç|¯ƒcŽã‚¥JQž¤VeæÍÔË™PœYÀ,äAÊ÷Ò·žÏHð  °m_„\o¡Ò7‘v.ˆãQñiîeŸ$¥-_±be¬:ÿ¸F™S$\±V~è¸üuG§(TfçÉ—râ˜:_¥È+Ú¥TÒÊ_ÑÊ“ÙÚc™šÿþý‹öÿð1 ›µ5}GÂÎÄäˆÈ5¶Ûˆ…aáØ*,[‹a"ìml6ˆ)°Ç¸?€ß Øðœ'ãiy¡*¡/ ¶¢O˜E­¸/Õ+>PUZŸ3ÎÒÌw!Å{ÄoŽg—šKöÚ%z´ÇKî-vŸsWyªdWÐ|ÔH ¬pç×@J5kªèQ-é7¡z1"ÑYسüW¾€VÝæù’}abV­'FÍVXKmæR#»„Õ…°ËÆÒôY3tI ×SÛI;a=tU/Û¥'‡íjŠ]„‚Ù”6†t¬)+[m㸮{ÉHÚär<(•DËîæóŽ“_8%B4ùš“œæµÌCW½ÄšòØÇ“HÒ?6¸ŸVqÀWõä³ WiåàO$›Í–¨@È ØÏLµâ¿MóÐÐŒØn=ñ Âm¢cg¦ì±&*–cfºÉaÃ×ûg°bØNl¢­UŽÀ¨HúACÃc'þ9çµ|iἿœÛK°~š-ah>»GO<±¹,4' Œ´/26Tp¦Ì^r“ÓØfÿ0ï’Èéâ{TÇÜãûÓIÇ:‹%zf¨ËKÆ:MûØ+Gcî†ÕœökÜ)Û. «½øÔ4*A8¯É,·Ö•UÆÿÜvyÙæò¶£¹<ã}DvØ›p^«¿túFgÏMx^¤úòÏ\{6¶™@»âÄgjjΠÐ[ûÞ KLgÉbª’.’r„T¶•a”­A÷'õ{°h%“ì[/Ö¢Z›Ål-…§¡ˆºIù– “-þ:sŽ‚Ñ‹½·._ÔgwKÏçz šA;!dNpG˜ËA9ÉC³æ¡sÄ&hp9†ó i¥Ùí«ùÙßxº¦‚¶:c®ŒKÙž` 6;ÀÌîCæÔ8Ž^Lò5Z(6Ugí¶”ïsHX+¢QÜO?÷?„%S-IIÓÎ’æ*¹†¸¶Š ¿vwÞƒàÙWIQÑûߋД±ÛØÝ|33ŸäP©æÅ tB1,ú…£§âëð”ýTÙí¢¾d¸ ¬KŽßª.®9%Ík1Ô (2RºœKÚ{':†eCíßÀïáHÉõyÝI½;à DÏîµ÷~9ÿIÂèªôƒ†Ül©JmÔè>n´…\¿Üy‚;ƒñÙÆMLŵ>,BÊä֣¢oÖÓÙ}UÁ„S0Ãþ Xè endstream endobj 13 0 obj <>stream 2020-03-21T12:46:37+01:00 2020-03-21T12:46:37+01:00 fig2dev Version 3.2.6a qn_closed_multi_apl.fig endstream endobj 2 0 obj <>endobj xref 0 14 0000000000 65535 f 0000001050 00000 n 0000004464 00000 n 0000000991 00000 n 0000000840 00000 n 0000000015 00000 n 0000000821 00000 n 0000001115 00000 n 0000001216 00000 n 0000001472 00000 n 0000001156 00000 n 0000001186 00000 n 0000001716 00000 n 0000003024 00000 n trailer << /Size 14 /Root 1 0 R /Info 2 0 R /ID [<105FB37AF1F2CF56F01640E03CB1C7E7><105FB37AF1F2CF56F01640E03CB1C7E7>] >> startxref 4652 %%EOF queueing/doc/qn_web_model.pdf0000644000175000017500000001554213635377235016200 0ustar morenomoreno%PDF-1.7 %Çì¢ 5 0 obj <> stream xœ…WËŽ7 ¼÷WèèXE/êqŒ“ g{ð!È!olÓ½ $¿ŸR7Iiz׳ðaͱȪ–Øê¯ÆYo\ÿÇÏëòÃûb>=-É–™ÿ–íwóþ×¥¤d›O¦ºhs­fU¤$o]1¹%ë)௳ёÉÑ[Фñy¡\‘P!_· &P* Aœ÷&h¾X—³–ø¼H‚h×ÌpTq^>/÷KhÞÆZ4kÕÊ‚\‘æ/š5ûÅS¬–:¿`„г­eãS-¶CÁÙ²ÁKx^|Ìa[Ï¿Gï·å’αè Œ´¼'ìù%e®· Ü®ž™à a·È»JpB“V­+ÈEný¢I ƒZ‰¶P jHöÉ«A5ÃÖB*@âa‘®àºÊ 1×y±ªš„ R´†ÄÃ$]Á]*ÃAǵK’µN•wd¸$Ý›‚-+ö:´ùmíIW}ï5Dtà·ŽœMdB(d©h|^BðÁö,+µH6EÍZ§Ê;rwYŠ ŸRŽmò)9œ˜Ô§H˜s”UƒÄÃ']Á••Ab®1|¢™sg ’÷ ®!ñðIWp—ÊpÐqí“d Ÿ>I÷ç ŸÆø„§¯4(ÓL$Œñ-"uÇhU„‡¯ÈP•c|KºBº†ƒŠk—Æø–Êc| 2†µdÍãûëö¾ •FBvæñSžli-à¥X©“ B5­“;œ_è„©ö¸:´7gYPš ¥ÂÏˇïÍ?KH‰lNºä5…N2å2âC´±u¤ØcŸEÏ)‹_NóLywìcýv§"åEOp̘·ƒPB³~fÚ€×g)¥ËØ¡¸_<>IÊÜFeÅ齃mÔvÏÉs9Ú zÞAz¡ƒ¾Ùá)à>†­½­ûù-סüÇ{2¹¹hÞÑžñÓå§'ã÷’3ÕþÃKÒñ å" ¾nkÆyë«?<ü9Uþå„qñnù×iKWendstream endobj 6 0 obj 1255 endobj 4 0 obj <> /Contents 5 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 4 0 R ] /Count 1 >> endobj 1 0 obj <> endobj 7 0 obj <>endobj 10 0 obj <> endobj 11 0 obj <> endobj 8 0 obj <> endobj 9 0 obj <> endobj 12 0 obj <>stream xœUkTSÇ>!䜣¥Ô’FÑ„ÛÖ¶·j-+T[¨Õ‚”÷»å¡á‚@‰!“ BxE á! ª…ªøÄ¶Z–Ul«ÒZ«½íªÜÞµæÐá®u]]ëÞßwÍŸ™Ù3{ö÷íoöf`®.ƒÁp‹Î ‹¶DŠEiù+ëW)/µÞ…ÚÀHô‡ßR0‹â»aÀ Ü\íëWzÀÓÏBÓ3Pºse0v„Ä5½÷÷M›6‰ J ³3³Š½·½îãë^êý—Å;XX”™ïý=‘ óÄ"a~qX¶(]Räýç»Þ‘ÂLI^Záÿîý×Ûÿçðµ{ƒ ‚ ‹¤i騼¸×|¶½á»ýMo {{{‹À6bQX4‡bAØ^Ì;€ùaÏ`{ã`k1OŒyÒ,a®˜±ŠQÆXvÉu¹ÂŒdNº&¹N³ø¬³¬e¼ ïÅ ü‰³Ä¿Iù| MîKÀãG©¿ÙK±íœLꆬ›¨šºÆ•áèв*½¤*KÒóJ`b;‘$kêk2µÔ6 &á*´â£›š ̇’ 啱²ÖËG`°’¨—å¾´ Q‹6ÈZ„ºÅ· áÉ~Ôºäɹ§kTÈåpÂpD唾û=qÌÙ‡œÛ8 Æå#¹}¢ž‚¦÷M7Ûºì$ûIw‡Õ9¶ºú\@|t‡‰èç0©u*Hö£™âžôë@ŒôÐÁâÜÒôÊý€LTZ8â 儱£¦®Õ8n䲟@¦éZü¶u`W|Ú&IǨ§þ9 Cf.aT§JXR\+-SÉ@P˜µ‰­ õÉÀøåˆ~÷€p+@.$J…<´&AÖo“ß^â—¶ïù^(ˆ²¥GŸÉû@WîI¸qfZzh„ïȵŠÛß'Ý©£HEjå~Éãë{P²àÉn®E"ÔµáFUƒa–„>»$ÇÙ©ó‚O=„®p#\óîƒW£RŠ¢S· muŒ4ëH´œWFXŒu fu²`9‹±åêp-Éž€¯Qýœç“7ÏìF«øìxä’”é<Á_Éûuˆñû"…CóØZ8„Cüëä•ó×.=¿€óç£Î½w1œh Qg ~GS_ùWÊUª #©YNCýØ÷³eÙ§ùó1£ÛÂZ¾ã­äøü•/ ªè¸Ã`£ülŒ[÷˜µk¡ÆŠï«.kÑ_$¡„pŒ}Ú[gÑ©ùVE“®]ÖÖÞ“R[všX” ø‰ÐUGI2•Q¥4Ò“ÅØÈnKYŠ™}œVZN³ÉSw¨lÔöN©+Ðÿ†' ýKø§ n`•ãºJÝQ-Ðuuymq}qm wEÆE9ÞO\È”µ<^J®8~oÖðb1¿ ½ÞŒ›jªé‡Øñ Iß¹B¦¶çx•Íkþê…ŸüÀ)@ج¸UÑzx£ý=“3'r|:ùtZ•6j—A¦b9H ÀG­jPÔzu•úÔÄÝ-Ú–£-ÀÂmæAiEñ bXoVO¾ÝзZkÒ˜*é¡1骫jô&PÌÍÖ!ø¼Éíû²Î|ÂDã WÏD^ ¸]çïÂW¾¥ñRaŸsäJ•NÈbM˸Æ`Z×§è’8SÛùeObhq»¬«Ënë¨1Ô̽ÅPÌd£cäLO~ ?Œ@[ÂJ+R…™2äÐÐCÇS.Ú§/óÙͱµm²Q¯`o¦Mhë]éÊ¥ªBeA¥Yâ5„ñÒø0\5º¢oZÛO]e\¿e?0á–¥·9ºêteAEÒ^~%«Œ¨3š@= G,i‚åcDÞ½œo!wºÀàšÝ^‹ÈJñc]O}âœîíV—Øù޼Ž÷@‰˜I!þqu篰pæ; ádP›¡'iwj~ˆ©}ù3¥Ã‡þ /ã•×Ô}…‘óC{HÉ¥Âìäô‚`àO"þÜvHüüõEˆñÑ<ÜÌiœº .ƒ.q³/ á3¥Sb£Ðh¶Í㫨|âÉÞLE-ùq¤8{½¤ª\%÷Ry¼ždŸlÉȨÏñJ)òœü¬¼Ò4vŽGA×ð¹CÓ»…–#µRPHîOø0ÐçÀ9èžÀ/ÆO ,VÎm76µX½AkU»†ö¤­<åÉîüþ]ô,âÎ žŸIçÈscCW&ÆJ2ùý¹-‡…“ݸ;ì6Ư÷˜öµ°ÜЇšÊ çIê1QU_–QL׆:¢ÑØd¤‰v4(éâp˜0Ä(•ªH÷?‚ËmKOÛtß|•ƒKð)][9(2mZŒžE?q>Ö´­××ð*ìÚvк:ÎÉvd+!f ;Oús½Ñ z‘rÓ´Uµ‚Fèh©›ª¡èKˆ)µth ŒYàZqº턾Ë;YV|ZÍvÈ„ŸµO7Z>k Ý¡©27 “ Ÿý#*,ÌÍï.ìë?Þu¢ÿðq‘€Ö°-­±1`ö®^ û¬ø;@Þh8MR¿•Õhßë,%qÊÚe¶ÒnQä –}¨\¹Û°¢Cp‹ê¼É€˜”nà©Íˆ(×$x¨‡»`ðƒG§nyÞooÝ~!:Nr0ƒŸ›­È•ÛuÜ‘_7yÿ|äŽ]nݱM€ö¢–ŠZG¬|s'õð’üêŽpΓ}nw9A§¾³âjñpØK¾²G,3weðóÛäf9ý+JiÖÇ’·î=-ød´ûøL—MŠû¥%M©í$ûþ—Ÿt]÷]è¹×Rä¹™|‘XQ(ýÀZŹ9ḠÈÏÇSC2Y…‡"Úô^ÑŸèlðåYêmº½NÌ¿s›n­T,ãl¤"RpôÅr+ ûÉm¸sGûf9HƒC ükÃ5s‡©L¸Ÿú†ãñV`2šê‡p+Ì Y…VxHˆ#RôÀôNN9[tpÍÂÏ9Aß U)20TÐ7Ñýƒ>ÇI”ŽNq¾?DKÖåPØ»oÄ<†[§ê{mVýX¿e¬ÈË]ÙBÅ6ÀZðáÕwŸ6¹¹Ý©q{ÃþÒßd endstream endobj 13 0 obj <>stream 2020-03-21T12:46:37+01:00 2020-03-21T12:46:37+01:00 fig2dev Version 3.2.6a qn_web_model.fig endstream endobj 2 0 obj <>endobj xref 0 14 0000000000 65535 f 0000001570 00000 n 0000006396 00000 n 0000001511 00000 n 0000001360 00000 n 0000000015 00000 n 0000001340 00000 n 0000001635 00000 n 0000001736 00000 n 0000002109 00000 n 0000001676 00000 n 0000001706 00000 n 0000002406 00000 n 0000004963 00000 n trailer << /Size 14 /Root 1 0 R /Info 2 0 R /ID [<8C46700B4139D42A2F4CC493DCBF503D><8C46700B4139D42A2F4CC493DCBF503D>] >> startxref 6577 %%EOF queueing/doc/INSTALL0000644000175000017500000001001113635377236014066 0ustar morenomorenoThis file documents the installation procedure of the Octave 'queueing' package. 'queueing' is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, version 3 or later, as published by the Free Software Foundation. Note: This file ('INSTALL') is automatically generated from 'doc/installation.txi' in the 'queueing' source tree. Do not modify this document directly, as changes will be lost. Modify 'doc/installation.txi' instead. 1 Installation and Getting Started ********************************** 1.1 Installation through Octave package management system ========================================================= The most recent version of 'queueing' is 1.2.7 and can be downloaded from Octave-Forge Additional information can be found at To install 'queueing', follow these steps: 1. If you have a recent version of GNU Octave and a network connection, you can install 'queueing' from Octave command prompt using this command: octave:1> pkg install -forge queueing The command above will download and install the latest version of the 'queueing' package from Octave Forge, and install it on your machine. If you do not have root access, you can perform a local install with: octave:1> pkg install -local -forge queueing This will install 'queueing' in your home directory, and the package will be available to the current user only. 2. Alternatively, you can first download the 'queueing' tarball from Octave-Forge; to install the package in the system-wide location issue this command at the Octave prompt: octave:1> pkg install _queueing-1.2.7.tar.gz_ (you may need to start Octave as root in order to allow the installation to copy the files to the target locations). After this, all functions will be available each time Octave starts, without the need to tweak the search path. If you do not have root access, you can do a local install using: octave:1> pkg install -local queueing-1.2.7.tar.gz 3. Use the 'pkg list' command at the Octave prompt to check that the 'queueing' package has been succesfully installed; you should see something like: octave:1>pkg list queueing Package Name | Version | Installation directory --------------+---------+----------------------- queueing | 1.2.7 | /home/moreno/octave/queueing-1.2.7 4. Starting from version 1.1.1, 'queueing' is no longer automatically loaded on Octave start. To make the functions available for use, you need to issue the command octave:1>pkg load queueing at the Octave prompt. To automatically load 'queueing' each time Octave starts, you can add the command above to the startup script (usually, '~/.octaverc' on Unix systems). 5. To completely remove 'queueing' from your system, use the 'pkg uninstall' command: octave:1> pkg uninstall queueing 1.2 Manual installation ======================= If you want to manually install 'queueing' in a custom location, you can download the tarball and unpack it somewhere: tar xvfz queueing-1.2.7.tar.gz cd queueing-1.2.7/queueing/ Copy all '.m' files from the 'inst/' directory to some target location. Then, start Octave with the '-p' option to add the target location to the search path, so that Octave will find all 'queueing' functions automatically: octave -p _/path/to/queueing_ For example, if all 'queueing' m-files are in '/usr/local/queueing', you can start Octave as follows: octave -p _/usr/local/queueing_ If you want, you can add the following line to '~/.octaverc': addpath("_/path/to/queueing_"); so that the path '/path/to/queueing' is automatically added to the search path each time Octave is started, and you no longer need to specify the '-p' option on the command line. queueing/doc/README0000644000175000017500000000211213570046274013711 0ustar morenomoreno=============================================================================== The Octave queueing toolbox =============================================================================== Copyright (C) 2008, 2009, 2010, 2011, 2012, 2013, 2018 Moreno Marzolla The queueing toolbox ("queueing", in short) is a collection of GNU Octave scripts for numerical evaluation of queueing network models. Open, closed and mixed networks are supported, with single or multiple classes of customers. The queueing toolbox also provides functions for steady-state and transient analysis of Markov chains, as well as for single station queueing systems. The Web page of the queueing toolbox is http://www.moreno.marzolla.name/software/queueing/ The latest version can be downloaded from Octave forge https://octave.sourceforge.io/ This package requires GNU Octave; version 4.0.0 or later should work. The Octave queueing toolbox is distributed under the terms of the GNU General Public License, version 3 or later. See the file COPYING for details. queueing/doc/qn_closed_single.png0000644000175000017500000002217413635377223017064 0ustar morenomoreno‰PNG  IHDR<¸Τªž 2iCCPdefault_rgb.iccH‰••gP“YÇïó<é…@B‡PC‘*%€”Z(Ò«¨@èPElˆ¸+Šˆ4EE\•"kE ‹‚tƒ,ʺqQAYpß÷?¼ÿ™{ÏoþsæÞsÏùp ˆƒeÁË{bRºÀÛÉŽÌß(ŒŸ–ÂñôtßÕ»­Ä{ºßÏù®‘iü常¼rù)‚t ìeÖÌJOYá£ËLÿÂgWX°\à2ßXáèyìKο,ú’ãëÍ]~ )úÿ†ÿsïŠT8‚ôبÈl¦OrTzV˜ ’™¶Ò —Ëô$GÅ&D~Sðÿ•ü¥Gf§¯DnrÊ&AltL:ó5204_gñÆëK!FÿÏgE_½äzØs û¾zá•tî@úÑWOm¹¯”|:îð3™ÿz¨• €è@(U  t0–À8à|AØø $ȹ`(E`8ª@-hM œà<¸®ƒÛà.L‚—@Þ‚°¢A2¤é@F²† 7È ‚B¡h( Ê€r¡PT UAuPô tºÝ„¡‡Ð84ý }„˜ÓaXÖ‡Ù0v…}áõp4œ çÀùð^¸®‡OÂðø6< á—ð"Â@”]„p$‰BÈV¤)Gê‘V¤éCî!Bdù€Â h(&Je‰rFù¡ø¨TÔVT1ª uÕêEÝC£D¨Ïh2Z­ƒ¶@óÐèhtº]ŽnD·£¯¡‡Ñ“èw †aaÌ0Θ Lf3¦sÓ†¹ŒÄL`æ°X¬ Vk…õÀ†aÓ±ØJìIì%ìvûGÄ)áŒpޏ`\.WŽkÆ]Ä á¦p xq¼:ÞïÀo—àðÝø;øIüA‚À"X| q„„ B+áaŒð†H$ª͉^ÄXâvbññqœøD%i“¸¤Ri/é8é2é!é ™LÖ Û’ƒÉéä½ä&òUòSò{1š˜žO,Bl›XµX‡ØØ+ ž¢NáP6Pr(å”3”;”Yq¼¸†8WJ)Hq¤"¥öHµJ IÍKËIÛJGJJ·IK”aÊ8ÈÄËì—é”y"‹’Õ–õ’Í’="{MvVŽ.g)Ç—+”;-÷H–×–÷–ß,L¾_~NAQÁI!E¡RáªÂ¬"CÑV1N±Lñ¢âŒMÉZ)V©Lé’Ò ¦$“ÃL`V0{™"eyegå å:åå–ŠŸJžJ›ÊU‚*[5JµLµGU¤¦¤æ®–«Ö¢öH¯ÎVQ?¤Þ§>¯ÁÒÐØ­Ñ©1Í’fñX9¬Ö˜&YÓF3U³^ó¾F‹­¯uXë®6¬m¢£]­}GÖ1Õ‰Õ9¬3¸ ½Ê|UÒªúU£º$]Žn¦n‹î¸CÏM/O¯Sš~°þ~ý>ýÏ&   ©†.†y†Ý†iñªî¯&¯v\½mu×êׯ:Æ‘ÆGŒ˜ÐLÜMv›ô˜|253˜¶šÎ˜©™…šÕ˜²élOv1û†9ÚÜÎ|›ùyó¦é§-þ²ÔµŒ·l¶œ^ÃZ¹¦aÍ„•ŠU˜U•Кij}ÔZh£lfSoóÌVÕ6¶ÑvУʼnãœä¼²3°صÛÍs-¸[¸—í{'ûBûªƒŸC•ÃSGÇhÇG‘“‰Óf§ËÎhgWçýΣ<Ÿ×Ĺ˜¹lqéu%¹ú¸V¹>sÓv¸u»Ãî.îÜÇÖª¯MZÛé—ˆÿ2Â6¢,b&Ò*²4r*Ê*ª4j:Ú*ú@ôLŒMLyÌl,7¶*öuœs\mÜ|¼Güñø¥„€„¶D\bhâ¹$jR|Ro²brvò`ŠNJAŠ0Õ"õ`ªHà*hLƒÒÖ§u¥Ó—?Åþ ÍŒ]ã™Ö™Õ™ï³ü³ÎdKd'e÷oÒÞ´gÓTŽcÎO›Q›ù›{r•swäŽoál©Û m ßÚ³Mu[þ¶ÉíNÛOì ìˆßñ[žA^iÞÛ;»óò·çOìrÚÕR V (Ým¹»öÔ±? ìY½§rÏçˆÂ[EEåE‹Åüâ[?þXñãÒÞ¨½%¦%Göaö%íÙo³ÿD©DiNéÄ÷e̲²·7¼Yn\^{ˆp(ã°Â­¢«R­r_åbULÕpµ]u[|ÍžšùÇ‡ŽØi­U¨-ªýx4öèƒ:§ºŽzúòc˜c™Çž7ø7ôýÄþ©©Q¶±¨ñÓñ¤ãÂÞ'z›Ìšššå›KZà–Œ–™“!'ïþlÿsW«nk]£­è8•qêÅ/¡¿Œœv=Ýs†}¦õ¬úÙšvZ{aÔ±©CÔÓ)ì ê<çr®§Û²»ýW½_ŸW>_}AòBÉEÂÅü‹K—r.Í]N¹<{%úÊDÏÆžÇW¯Þïõê¸æzíÆuÇëWû8}—nXÝ8Óâæ¹[ì[·Mowô›ô·ÿfò[û€é@dz;]wÍïv®¼8d3tåžý½ë÷y÷o¯ñy02*|ñ`úaÂÃ×2-<Þ>†+|"þ¤ü©üÓúßµ~oš /ŒÛ÷?óyöx‚?ñò´?'󟓟—O)M5MMŸŸqœ¹ûb݋ɗ)/f þ”ø³æ•櫳ÙþÕ/ M¾¼^ú»øÌ›ãoßöÌyÎ=}—øna¾ð½ÌûØú>|œZÈZÄ.V|ÒúÔýÙõóØRâÒÒ?B,¾”Í pHYs N NwŒ#tEXtSoftwareGPL Ghostscript 9.26Xn·ÇIDATxœíÝÝš£*·P³Ÿuÿ·œ}þlÛ¿ ¢9Ç8Z«:•Px_ï÷{€.-ºð~¿ÿï×e€RB €nü7ýS…´æõzÿm¤@7„ÝZtChÐ ¡@7„ÝZtChÐ ¡@7„ÝZtChÐ ¡@7„ÝZtChÐ ¡@7„ÝZ_¼^¯é߯¿[­·Jè¿_ ŽCað~¿¾íëõ*ÿ­÷©âónWÊÓ)¡ñéÁ—Ù°úóñè÷´„Êûýžvëc&ÍÂi:~ZþëÖ;Ÿ.ÒìCÏIWB Èh6üÚ™úkg ®VøuÍB ¯i eN‚Ž- 5¹Õ¡ð—ÜjœÐ²kçª_YˆðÅ×õñ[ã³’8¼ò» -€Œ+ § WÍ—O3Î>KVí3=°ï÷ûk„TÜ™¢äãZ{ÎÉ¡m¢.n•ŠÐ¸êôšÃ´[ž&´*ØÚóðë¯H¬C„@‡Æ[ë¡pÞrÑ`ItͶ륜Ðø'<ŽŽ~–¯ÿ]öŽ:Mh\µºZ½<·('´þº’%Ëè*Ì-ƒ­rB ÈîJfœX4X½ ©- µ+W³¶”¿‹[G - ¯;ëè»É­C„Ñlß•ÄZMšCñcQF9»¼¡ÌÒbº­ßjî[qΉ4:tÓqÂM _ï÷Û–ø@Õ7;oX²ð¯ü5%Ôúú×îÀ§!%´hÚ4¤\Ó B €n-º!´è†Ð B €n-ºaG ˆ Ïžu-ßNznÇ Z‡•Ÿ%Ôzv B  H­áìì}dØ!B "ßñýjþ³ðs÷ÿþ›ØHï¡0·3GÓeõõË^%„À_%®W±³¼ôÚ!´†áwkÿ¾¦—èšZ@v,ðÛJ¯„OzÜ!´€¼‰«Õ2LËfÈ5Z@FmÆÕ”èZ%´€\Ú«)Ñ5cïA ‘¾kô~¿gå̳q׌вXnEÑEbfΙ[B HaÚÅwWS³ÜÊ]B ˆo–X?,I™§ …Ùl, ±>Òæ–ÐнŸzÎÜZ@L±ë#áÒ ¡fÙE‰T¹%´€hB^ÄÚ—'·„JÂÄúH’[B ˆ)Ub}dÈ-¡Äµ§.>ª…DÚ‰Á-!#Ü.ïDVýY´=‹£$Öèý~G#Þ$´k|‚ÃÔpáôsçCžÒvDb;¸%´ˆië™C§sk+g/à·$Ö(jn -*i¢'šñVò[‘zäºBÖO¡EX[ìÎ…ýB§|;ÂD»Ð"š¯sìÚÊ›±Þ°Yã—è;Zï°- WaFψq¸„¡ü°YÆ;¥íˆƒ¿#ØÁZ¤v=ä¶–)r·ã†gœ˜o–Ђ«$Öo9þ©-8i|Ž{€³×î8æG…l -8lŒ«éO~U˜ä ³N躺 -8f«ÁwÝôÅ¡>'FÀÛ0ŽÙÙ½)Þæ¤s´2Ò‚Kô›t$@uZpU€Ž GûýN± - 'ýö¶T!´åèÙw­³ugýð ¡Hï7lY=ô§Á¡íV4XÔ®i‘WÝnÕz+z´SÔº„Ñ|ýØïD–»]œøhR™>Óëcëèz†PhPIx¬¾flÃË]švÂÌFïkêPßþ´T«ÑEB‹È–1s1`ª¿!l}ûÓŸ÷8¦i“…Äôé/ÆáÑûý®õ\öYï#®èÑ´EôEhÙtîþôœá°¸ ¨øøZ¯ú͆f -Rp1wPž'´àiµ&*srÐêªþh‚»«·Ð‚GÍe2þ·¾8¶„ßïMÕ[hAXH.h}T¬ÞB U² Z€“êKüZÃ/Vo¡?#Àb3̺#À„4A€Eå›ú¨`B 6µ|¦,À×Ñ-} Öóêm'èÞ•M~¹O‰Õ¾YÝ6Ò‚uŀα5Õo~b$´à‹Ÿô>_#SŸØ¬î«ý>}±Ð‚VªºK¬'U©áB V<¶Ó’ ŠDb-U¯áB ž&¨B*I¬$©vk Zð¨­öœ¡/ Lbî®áB æn¬ø8JñùB;Znú˜;j¸Ð‚§ÉªHdÕÌÝÕÛÍÅ@Oš ‰C…iód¥ÍRí0Ò‚˜»£œJò<#-€tš°"´è†Ð‚¿Ì v¡ßQ× -€\º>9ZtChÁ]Ÿ~BB èËZ×uzr&´é=ï… ƒ¹Aè„Ðz2žUô>bà¡E€¡Z2$aÃÜaø6Ï0Ž815±Ú~bá¯èjIe|&Y’Ç*ÖcB5{h;ÅYØy¶Ûç•«¿>ûáçgï¼óë[–¿¢¹‚Ü:¡ë#–wzðõzÍ`ùE®þpö‚Õ޶>nç×÷¿ÒuµkйÁù²Ž SÏ“†Ö׸šºò¯Ý€Š4«T’†ÖQs ¨BË*f˜5ä ­s—…|Ù,EjÌ™lå‘.´~¾Aë‚Zœj”vf–.´~.F½FØ c_¼Ã"´7Á;…a*y®ÐŠwÒlm y@r…ÖOüü*ä²›>'jÏ“7´žù5¡f™Œdv#ÿKÒˆ¨‰5d­»•ì¸Ô"·VÅëv²ï=X×Î.…ÀÝÆt‡Ü{ÆÎ켡uGNÛHºcn0ªinåxbðÃô SÂô ŸXC¶ÐŠú-£´·2$Ö-´`07˜@ÂÜJ’XCòÐJR›!¡T¹•'±†„¡þ>¾>…5†T‰5$ ­™£õ¸z½?WÉ2TÍ›˜L%öSX—7ƒþ°0ÉZ§ëñÝw~””$X«ƒ»EÍ­Ù’$±†œ¡5¯ÇŸ3š›ªEùäûç_óÔN¨b¶M€ÜJ›XCÚÐÖrkµ*?_­µjÿ×É÷ýbPÈÜ`fa.q%ß.ïŽÃÿ*ñ´”ïô•p;¿òµ0çJZ¶²¾ÚTæÖ(uh}¬N~­ wT—å FÎJ ÷Y=;l¿¡-ÏbÛ/óM„Ö\#U¡‘bDbn­)–6+†¸šZ@FíG—k«„W³Ñe€µEh‘‚¹Av,hò“ ³µ Q¥Z+C®Òkgñ½¸ZZŒ!ñ@zíß(&®¶-â37ÈQ%éµ|ñŽ’{™ÕÏBë–ýð°~÷whÜNz.|=Ã!BëªCûí.¨¾Bêî^¨áŸ&´Î¨xV›ðÉ37Hu‡v"UñêZfÕN-ÙÄ}ÿ`•:ós¾‚g­ï*.H-²}‹%v6ñ„„ö{‰'›É¡[˜Ë÷€*Nheû殈w¬Ì ’GòÜŠZ#ÝÖG¦V·No¡$Õ_IÐJu¢Q…#]K›[ABk”ö‹,òø˜ä¿=±+_Qþú"„Vžo«.Ç fœ÷´/BhT¸Ž:zbW÷Dðлåi×݇–©¡+ ¶TêZîøWø‹wÜ2µÿéÚï ݇'èßaÇÑÜúlNqS³:zq+¼¾CËYöiŽQUî°>þ|k§¥ë%ÙzŸ´½_¨mœ8¡ëm`Ò¶[–¶ât%Yúå·ú*Égëµ± [ï™°æ - ‚›ºïÕ©ÂýϪU’ñ}–KÛfÕ(Bheþþ€'ý¼·ùy~®ãkZ9WÎTÔûºæ!¡ŽC«}ixp“Óƒ ’Uwèu¤ÕìÔP_£«~g›­À­Œ´*ë7Ú×ëH €„ú-SC×õx Í BZ]†–™·;8ª@ûº -rº1´úZGG/Ì Bf·¯œæ–^€+]ò.À¸âÆÐZnì?u=ÀÄ^Bæ!¹ÛGZËMõ—ŒÀ~ëóäž_—à»G§«˜îõ>]?ÈàŸÐj-fÖZñÂøúlÖÖHVH«›û´ºèL¸U7¡ÿ L¶|E•\ ã´éÔëÏ+Ã_=ð³G“ *&ájÁ¤õ³›‹W鉨ñè6N«Ž•e„÷qÒ4îÆÐÚ‰#ç˜!„äž›¬ÞÅè¶j1rzqoh •A¸Ôsû†¹©|Ý›*á1©Î !dö³%ï!éCneG º!´ø££aâXTKH ›.CKŸU‘ct¤ËÐ '¡E—Œ¶!§^C«£ 0-³èK¯¡5r¢ G÷¡EZf!!¡…¹A ‡–í‹7 ;‡8ql„À¯×«â‰‘s¬+úÞ0׆ߧYìN<‡Â ¼æo{±Ÿ¹žU[ïªiÑ73„ŒÞï÷j÷½úó×ÿ…œcVþ<"Lš :ççM±€Ó¦­ åúS¨-—¿¢¡5•äk;Íñ™„ý~ׂ„V˜AÃc1XÕZn}]²˜­- ­©Öê\;3„\Ñr¿ßrÙ~"ÎBŒñž-¾Ò ௫þ®ÜAåî«Câ„Ö”{—$:;ÂV³ºº¯¼ÅÍ>ëtß•¤Ó 5=è‚ê–’ÛVzg†+ÊïJžYM¬Óe8ñ>Ù*|¨Ðâöȵ8>pÔ¹Vsh›¨ë“Cyšv´ÐšÊv²Åq€»nej [wÀÐ2I8•abpd†:±¯R­©ÅðM{*`h rëR%üÜ¡ÞæzbU¼œÖ‘˜¡5È-‰X.,ép¦{Vüô †Ö;·Ò&–BιÒd¶ž{Rø+çêjÚ{"‡C²Ä‚_Ùzd×þ¯œþ¸´‰5„­„ƒ­Çžk!] ƒetæÖÑ‹aikZÃ"·bwèåϵ Ì !G]©*µÆX¾ûFÎv=ŠZÃ…íUú"±à„;.—¿Ï¡Ù ’ÄŠÚ¿R„Ö ·f ObA‰û–,UÏ­ÂÄ ßöcn˜»ªüéÚÝI»Vp˸å¤o™º*ÎL¬V³CgÆ_R1ÖçÅ &Qh}L+G€[óL Â̬QLeµÓ¿uÂíô¸ ‘Jz£¯ñWÜäúƒèÎÑÁÍ•7,YïSþšGjUÿ£z4mÎICk¨·æç'º.ücäÄ0mËé¦GËœ.®ˆ+ ³,«·œÛ7ìW$\c‹g4ž¯Yf!Óƒ+Vg ‡:;q0ZÿØŠ®áñ¨8·6 6Óƒ›v¡ûÐØÌBïLÙº¢úö÷=¿ ¡õÅþí'nï-\(«8¤åU¯u5Û4Jî2æ:Óƒ‡Ý×;ø.n’a†Ph=¦Ö¡þùÒÓƒ—TßLÝ…öU?-Èp.u¡uÉVm³ö‡…¯]¿J–|náÁßz+Oi8Äô )8«íÝ“ßà3k£¬À*gz`Å“‹)ö/44²¹Aƒ„Ào‘ÜZ¥,º–„)x–1[šº½š^¢kJhy5»·g³»¡þœÐ2j6®¦–O.]ÙŸ§E%Ï>'ƒåcóÞïw³1°Z¶ÌuXh‰tWSËr¦Í-Óƒ@½ßÆ;»Ð•sªÐH‹D̦5›캣O>ä2Òú«ü»¿²›ûx®Ôu³ŽœxCãf 4Rõ'Bë¯Õh­þpT¾uB7Þ'T­ÄÀ7ñëc9UæOÛgzpnõ‹OŒ?\®AÚ«^.ùÆf†0•¨‰5ªþЉö ­Ãö'”¿në¯Ù@›fsQ›Þ¡3é„ÖkÔÆí³ì¢Dø?pJhýLø¢f™! /Ub}ä™'ZÄ®"З„‰õ‘$·„V« ÃÞàyië#Cn ­É­f™! /mû Ÿ[B«²åÚÂõ¤­}Äl¡uÆþÄê–ÌšÜ*ùÄà–x=Ð:¬¤œ¸ÊÅÃÌF"±fO ­–{nî4­Ü V )k5·ì=øÅê—]Ø0V÷-2íøº MZË ´¾¸Þ ¶¶ÜÕÀ~nlÒ¾Ž~Åë”o¦’›|ˆfíbôÈÕÅ;,Bë9ñjü–3¿ÁÖ ­GÉ­ÖkÏiiYy­šŽ®†×QÂišO¹H'gB è›aÖ!½ç–ЪìP…ÐØZé$4_ÖQaz¡Uß~sÒØ ¢0}ñ“ºî…„Ö-Noõ|ånâsb.¡5Wëdõ}4¶6™!„^Øã¯ë1óÙaaÜc«”XÀOØFhýUå+ßd¹´½Ó*M1]‘œéÁ'ìïO ÌB„@"½Ÿ@ - ?½÷¼-ètRÁ5-ø#À5j~È«gi\µ3jét@Ó,¡pɸϠöœÞ× ~-¨ ë^ kN²Z@œ%c˜5-¸Âi~ | ©-¸ª÷S×N9ìå ³¡ôë¾ÍM" vp„œ¬/ ¼Ã¬AhÌÑf£gf°µ/ÞaZp‰ØkG¼º¢0UhÁúÇv„鎫 YK…yéìâ ÙMŸ3=‘ªºÐ"š¯9öûµ×ëUÞñEê º6ý"äÖ7±¡EH%­tõ5cSÿlç Æ}äÖ(pb B‹Ø–×ç'ñZ2ƒÜZYÏ…1½ßïO‹§ûÆÿ¨Õ’Cö½“[áÿê—†G¯—ªÞ·CEÚµèØƒFZ¤µ³/ü°c*Cb B ˆ'á$a’Ä„Ò,·bGWžÄ„Õ¬û™[³<ŸXƒÐ‹[³?'Cb B ˆm¼ùá#LnåL¬Ah»Ä5›Ì“XƒÐ’ˆ1U˜ð"֌вXæVGѵ,mÂÄ„Êr2­‹èZ–0gb B HhÙã7›[«¬´‰5 ÿ.ÀŒû)?ií FW«„W›Ñ%®v- »­èšþëV§(ÅՌІµèú¸õA'û×Ò$Ö’Ðøk̉[ÓKV&´V”¤×êëK^¼ÿ‰ìð8Wˆ ÙÛÕý°Ëºã ë2Ò(Rk#(Au…Ð8£ðeU—éAºa'º!´è†Ð B €n-º!´è†Ð B €n-º!´è†½.nÁ¾³¡]ᳯ^¯×Öc$/–dë ÇKµŸÐ"ØyüÕéÝÙg¯\}Ÿ»^’é ¦¿»õÑäŠh ƒ­¾~çÅûqR8Û$(Éþ³’+>I¹#®iüc–4û‘p_`|ͤTY5Z@j×»þZáqâ}æ–в[‘ŽDÂskHvqKhüq.±x’ÐhZášû$„TÝYµ+áqhí{ÝîŽÐ†ö® -Wá·VŸZ@FíÀNIVoüj§ä?aG ²s]ün§K²üÅl[7Mi4mk;ŒœC.#- ²­Éó=þ•’lmÅ›pÈe¤d´ß×?i‡na.ß>*¡Гä¹%´€¤f½ÿçÙŽ~t¶)Á)¡П´¹%´Vüvέ|uFùëcZ¤¾tDh¬;:|©;Ü9ônyâVhüµÜñ¯ðï¸ejÿÓóL N -€Í­Ïæ7uŽ^Ü Oh¡Tî°>þ|k§¥ë%ÙzŸñ‡©k†t[€!}Mˆ›ždâVßÂ’Œ£·CÛÀ‡'´J팫’àç„ÝpM €nü?·J Úê¿–IEND®B`‚queueing/doc/qn_closed_multi_apl.fig0000644000175000017500000000233013570046274017537 0ustar morenomoreno#FIG 3.2 Produced by xfig version 3.2.5b Landscape Center Metric A4 100.00 Single -2 1200 2 1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 6570 4590 180 180 6570 4590 6750 4590 1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 5670 5220 180 180 5670 5220 5850 5220 1 3 0 1 0 7 50 -1 -1 0.000 1 0.0000 5680 4053 180 180 5680 4053 5860 4053 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 4 0 0 1.00 60.00 120.00 5850 4050 6120 4050 6120 4500 6390 4500 2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 4 0 0 1.00 60.00 120.00 5850 5220 6120 5220 6120 4680 6390 4680 2 1 0 1 0 7 50 -1 -1 0.000 0 0 -1 1 0 6 0 0 1.00 60.00 120.00 6750 4500 7020 4500 7020 3510 5130 3510 5130 4050 5490 4050 2 1 1 1 0 7 50 -1 -1 4.000 0 0 -1 1 0 6 0 0 1.00 60.00 120.00 6750 4680 7020 4680 7020 5760 5130 5760 5130 5220 5490 5220 4 0 0 50 -1 -1 10 0.0000 4 105 300 5535 3825 APL\001 4 0 0 50 -1 -1 10 0.0000 4 105 285 5535 4995 IMS\001 4 0 0 50 -1 -1 10 0.0000 4 105 270 6390 4365 SYS\001 4 0 0 50 -1 0 10 0.0000 4 105 75 5625 4095 1\001 4 0 0 50 -1 0 10 0.0000 4 105 75 5625 5265 2\001 4 0 0 50 -1 0 10 0.0000 4 105 75 6525 4635 3\001 4 0 0 50 -1 0 10 0.0000 4 105 165 6480 4950 PS\001 4 0 0 50 -1 0 10 0.0000 4 105 135 5625 4410 IS\001 4 0 0 50 -1 0 10 0.0000 4 105 135 5625 5580 IS\001 queueing/doc/web.png0000644000175000017500000004206213635377233014330 0ustar morenomoreno‰PNG  IHDR°1ÃÔbKGDÿ‡Ì¿ pHYsdd–ÅÝtIMEä .#Á¯sBýIDATxÚí½oL[çžïûI:5dìØZ;œ˜žnˆï §ÇȺ£!ƒ£K&RQT¾RMÞmÎ 4 -%£fëT¤å [W: Tjï¹[Ê&Qz¤Œ” ¤«X tu½·*Pc§L 1µ§àî²÷¬ûb-ÿ#ü·ñZË<©YÏZ^þýžgñíãßóg=Ï Ýs~\IŒy0æÝí×¶¿wfÅnßÞéî=í Ùá^ °7r,ϬØí{ðup¹Ú3ejg ¸`~/˜ h´o¼·¿¨¥z ZˆííÞW‘rµJA°ýÐwÓ;¦œÍ̸\À8Þ™ùvÆg\.³| 3+.3¬ŒÓ>ŽËœ{ïŒ×ž{[šù™»W¹kÜåVÆÉT8Š£•ñ¯]¾ÛåÊ6Iv©»ÒßJÓ‹q¼ãó^ûÊ]³×œs\ ã2§ °µ«¯ý¥¥Ê’öµiî䳬<ôbŸŸÇ«Ô ê"•½x%I’$hº$I‚[xŸØó-I’@’$/c’ôÄí0–soЛ}›W¹ I½®˜$A/Ð.IOÌàr1&).oá•n™e[©»3&³ó Hß•ú–$¥ÊëzÍ`ž“²ïé¥]’î`ÎÊTNî³]u¥ì¥Ê cé¯ÉÎ`lÓÜeUòcO`L²+ÏDEJN°æÞvx"I`ööÚqÝiW¹¤üἸzí².²îííBþ«*·=qÑ5'I’ôsÿ-;ý’öÞ.x3ÓÞë"#X³·wÎÌ­;.zçY&³ó Rw¥¾%IRÊ¡œ1W¯ Ú{ÍôJ9÷€$õÒ•6.óË®”k9‚M—Ev&Kð¥Ü)F³ò ˆÝu sLí¿tÉ öŽ$™å¿O¿4†9&IÞœšæ Ĥ'òß2sï-IêÊ­¼ŠžôÞ’¤vù³'’äbìvIšËl¿$õÓ%IwpÁ­Ø“Þ[“9y H©»Rß’$)åPÎØœ4†]’zé•rîqqGrñ$m@ÉÀf®”k¹‚M—E¹il³Ü)F³ò Á˜³wÔþCK¯¨’3(±]—íáb>ëó¼f”.so;˜™ÙÌžË;söÈ]% f˜§ì®Ì-]0ÏБ#ï3ã²sÕÒgnϘÌɃl€Ô]©o½äÔ®üGƲ’Í™ù»‹,7láj³e—Ef³Ü½œùaÝ‚övÔ¦][yø+/¶²Íí9ŒŸ7wuÍ å\[yé›+x]æ'wÇïŽÏÜyÉdöwRw¡|k;V²ïiï»k§}£›­\½T¢ÍʲÕz™rþÏW‰’«a³ñ2³3r5ºÂÊ8`f|…ùOþîÆÛÒŒÓÕß•ó÷´3󹕗W¯·}ü¦ýŽÔË݌ɜ<¤l*w¥¾µ]rî±»æ‡hÏÈÍ}Ž«t‰² ôrY6ËÝÌßÄ5Ó§Â_1—®aÁëš9ï7wyå}×8€Ë>Þ{wã}ó+wɾ X™—‡ çþö¾ùó® ºnÞÄus¦×~s¨×>O{ÆdVÒÌ+w¥¾åÊu¸©eùžö™»+c 7÷9®”kÙÊ)‹ìl³ÜmÁÕ•®öó7Ûw!íƒEí º0d]cé6†$IO\€ùŽ$I·€v¹[KŽ\ÇrîínåÜÖ«tkÍÙÁÞŽ+«A6¶¡[K’”Χ^Iê°?É2™ÉC¦”º+õ-¹™n-Ië4x²ï‘bJ2e@ÎÀf®”k™ÁX¦,½én­Mr—*U&0ÖsR—ÒøS‘#%04»3+JW÷ü¼9U‘Íà=Â\Vmv)5›¹-ueeæ¥ÎòM.±2ƒÝÌσ7Çd&”»ÒßÊv¸•åM °¹«ÌµLr2žq¶Iî´L© ö%æOq§ýfŸ}.û!Pð§p&÷⪈î‹Ì¡,C}+`¿“‹ ÁꇒntmJWû ~ÇöijÀä^\Ñ}‘9|5¬@×”t?¬ ô‚è !X®‚è !X®‚è !X®‚芛¸þ¶wdc:Ôýö»×jg^pøØY°Áñžëþ énÓø—Áµ3/8|ì84›x÷«®s#'íïü½‘Ñî¯Õνàбc ¤<þÜ´ÍgT;ã‚ÃÉŽ³µBÀÉMÛz 2äSn¹øì¯Þ:ªBþ|M½ùfÂw1ù~à§]Ç·HŒtô(ÉèÙÿ ð·*càï¡‚Wá»ø<ðî(XÏÈféÐ5Ó 'uRöŸ?R¡2¦_xò7"|ëÆ÷ÐŽ‚5%Füž ék7T˳à0³c£«Á6Bb´FF2éÑH«ßï÷«yÁácçðyðŠ?bë€Q:Òé`¢@tk ŠÍ΂m˜š€/²Ò==;~M 8 ñNWûUõ^lÙÔ뾋O{!zÔŽªÑŸ¥Ð žká[ŽŠÙZ]!+ÐB°]!+ÐB°]!+ÐB°]!+Їo¹Í—X[Ë=]U;C[r¬|‹*Tº)2‡J°ñuÖVY_c=ž¿1íQ P^Š´ËMjçè(uÁ®­±þÄaYí¬8›–°¢ÂıòjµóV0JU°ñåÖ7þØoɆ_ÔŠòÝ}­˜¬­oóáv?kkË妊òÊ “K¶GJQ°kË?,nþ÷­+/É /¾¬ÿмsd¼®T¿Õ寚ô\ú’ìâË9õ©œŠr*+J3¢Ë))µ®.¯ÿ°¾Oÿÿ»œz*&Žëò‰””`ãËÏÓq\mÅq¥r¸©–%_N<"ÅYf**LÇ*ô%Û’ìúb&0U«ÍËXéa’ÿç][‹ÿÏÄ r€[]QiÒMt[‚]~žŽÊkUë8D;`**ªÖãk«k©°¥Ufª4é ²Õ¿`ãË?,¦ÒÕÇ«uðÌÕGéæZÇŽ+²]_^L¦òãÚn’é[°ë‹?,§â2ì™òêj`-þÃZ\yŠñ8s”›L•Z ÿu,ØõoDP**jåµÕ¸Ò™ W¶¦cµ|¦ºìÚ7O•”ˆ Ò&{¾WjµµÅ?VÔ«ÖXkL§‚]þF½*jEP@ä6Y<žªl׿4WèR°O¿Y¨xK‹¿YúÇdÖãJÏËò2åµÇjµRÑêO°ëß,®T¿yRí¬”2åÕÕ¬/?_^ÖŸ> ˜ªk¢¦7Á®}#Ô¾¥‰ÇWÚ”×Ö¦{ ãñ¹òj 4Ãô%Øåïž”מVýÁL¦ôüŒõE 4Ãô$اß-TÔžÖJ@uH¨­emùùò:h†éF°ëO¿•[Z§Eèª'O¦ÀUm†éD°kß>]¨>-BWÕ¨®N-®?}¨=®Æ`.ÿV$8)BW•)?y2=‰sqÓ›Et Xe üä[B®ZÀd:Åâ‹k@IM ›ŸD"¤C„N_ž.Áaa}ñ9®| tn=—ÀèÙêÀVøa.AéS~2ßÐOlÝ)ÐB°]!+Я¼-§;ýjçF Ø2"# Or ª`'ÊH„@ž‚u¡QíÜ;PFÃt~¡v6‚Ýñ €Ð«@/”¤[bÀJ uÊ”y‚!XÖ)ø 1 v^‚É oøCjçF Øì‘.c|ßf‚âÕèò‡ÄU­“Ýèòî-Xà`È4º OàõÓàéQ;3ÁN” wÜ0G7ÔÎ@°e@dx°Z/\êA¬@ã¼DhhhÝZ­ó ÐH !ºµš§ 0Þèô5CC¢[K yŽH¤_‘øb`ĺ‚b!¯K5V¼t Ð4eåµ_EG¬@ë”\ ‰ßt>(B¡¯DsK ^â½ tÂ+€Ç&fn tBY"W:< ^B Kó ógº b«,Ø 0< bš¡ à,Ì/-̯|_ƒe¡RÁqû~:¹P‹ÜYP:Ôȇ355ug c1g! Ä òdu>¸ZùAúÔΙº{]” §kì9€ º‡ƒ…ï¾_ȶîv¡½”ØZ»ˆ ˜n ¤7öÂÔ`&½PÈ*ue@dä÷F° ¾Ûá{Q`?T*Ç{McÍú)R»›âˆ)܂ݲ0¿´ð«ôÙ8SWY¨¦ÕÖ”Û@‘Ä@¼qÔÿò{ˆ‰›¯ã¥täºX¤ó°²ô}pu~`)S™~r€q@eƒÝïMã—Æî/o¿5uÛ<Ò¡‚-›Âê,JY!«Ze>#ØâèUløßO£ÇÈï_nr%F¾²Ù:F=¹éá‚u½˜Äáä·1ƒÛI¸ÊRœb öOJ£•öº{ѽ§úa=ijIAð lH÷ô d&Ìüù4!@2J3áa ˆV9„nµÃÒ÷ÁÕ¥ÙÏS­**+Wë^¯©³dÓj"€v\Ð8䌑—ÒYüôà1@Ïþ&)Z𩂍rf…é0—ݱA«áCbkÖâ>A6«óÁÕ¥Y9=ŸiN}Rd©ÊøGží¸ q|‹tGóz Ñáè‹&ĬQ$Á‹dØ ¦inãAÅ ‡èгúI&ÌV½ÒÑ9›#oxC›Ô‘ž‘ÍÓÆàÜn€Ó§ŸUÄÀAtÃÇL,N1+K߯.°Àéæ“¢Ìº×kê^/R›jG²'¿lº ±)‘0â÷¼”>8ÚÜ’`1$! V„±’ìÇúKÂIƒÕ öƒ+-n3›JÿcæòÅ% IUfÇl#¾Ä¨FèH§‹€àòeÀÐü좰išÛ>A›¨q÷Ëê<« Ycþ³™–2Éö`±Hì¼ ñàÄÖ£t¤ÓEÅj¸Ð®¨‚X‰†Ã´15™Ñî ƒh¡íÌÒÄ?*sS[6D£g¨©¬¬{]í,nËÎ 7LM È«m¤Ò +p|š|^H‚žAdk|„c!^™YXZbõ£ô…ï3Sªù>#ØjŽjë§+äÖ?ÁÖºEpjôlžVƒš›ëåUœ é6 ž¤ÙÊ?Á§~k=ÝÆƒg\°FZ¬n¦_Ðd‰MQå&ö‚* apä$Ÿ-¾ZÅ‹Ÿ©zõçu+Ñ$VC2ºðj?þ;s”ÅÚ×Òßø·d-?þ;¯Vñ¢ò˜ÕŒb°]HV½úó ^­âÇ?¿‘6<·ò7GY„Z~ü÷Œáo²ÜÕš­)à Ԧܙ9ˆ½ ÿ¥*UÒ×3j›Mmk½@]æW|6«Ÿlªþ¬;JMV]Ú¢òßu×”Œ\oðêôéiåƒÀ`ý0Z8ÂU$7Þ%j€gašI†‰¹ „qX^Lâp35É_ø"˜ŒJõü)S“üôœã¯ñü§×Žãðñ0ŒÏæ§ç˜Œ$âØ”ÛäoD0•oøÑaåÏzí¸ò,Ãò—#˜ŒÃÿ·òåµ²»\ÃYîr  Ÿ#<ŒÃǃ™çÉ1ñ§ŸvñÜj.ÖUb¯ÜÅÚD^»ÇŒ\ï°åiM N'Jç>b`uP•ùXn±-üôÿÂÂ'ó¯eõy­”ùÕ}3ùï¯ý Fˆ`úáŸR1}rñµŸÿêŽR—3IEƒ ©½Pø>€ŽáˆVþxûÆàp:>8ç  .,.ü_ÿñÊßð—ŽwUQåàTýÍó¿ÀO)««Rz&ª¬ÿfzƒä_°ÿÕ_’u'à08Loðóϼq’ß0@•ƒ*pü[ò ?ÿŒé ’G- NÀ‰KÚÿê/ILoðó_½‘6\ã$?Â~þ9c8客ú/É7N¤ /p&åÎd*ò ¡º²?ÿÈÑ7øñÏéBÇà;ö§?ÀE~Ó?š<îü{±M%Õ“rD‚Ð%yÒË»ƒû‹Pµ¸ÜæÒTw&0û$Óms&3Ùh)õ걎"AŽ…cS1ÃeîMÓÜ&Gï&•¤Ï´ž.‘FhgÐ`»2h#R¸ Xj³:5=K΄·ºÙš×©£¦†ìÆ5ê 2+€¥ àòebpùPåx!ìà›@Àù!Ók ÔµÊ|X/`üRí̆‰à”œXÍ\û@ç‘Û°€Rãܾ ܃_Zc/t>-#3¶D6Ÿ¿=!ë´®©î¨ÚyÑ€fKÌI V¥BÇ„Ê\‚Q+P¹ Ô45飼8X­@Uó7e¤%Ùop|¨v¦öIàï×}÷@š¦Û•M-B­/#¹Cò4Q’QxðÍi‡þâƒ2 Ñè/õ3j~uà/nꙉYäÉ|ZI>rê«ÿ  0ö Gèv¥¢Õ©é2í}¡×í±€Û6@¬„''­¿T;K{¡ à:À>—Û\ NÁÔEµó¡/@_4j! 'à7œ>§“Æ:ß~~*8À„ìž±XœàH†Ä¢D› ÑgNˆ¶ ¡Ïmf§§ä.¬š&ÝL6ÒN'«…éé{mÍjçgGô¼íѿ̂èÂ*nGÀ°tZÝjçg;ô¼íÑ?ÎRÙÔØ¤v6JK3àÄœ’ÓÏÜLŸÐl×AúÝöèÌ5B­…£­- Q8 ’ŸF%+/Ò§bEK«°àÃ@ÔI4IÒJ8àÔขØöHƒÓ IgÀ “áéæ6µ³óúÛöhBô41bò‹h·¶úºô¶íÑÔí¥1–uðX°ø&q05ùè\³Ú™ÉF_Û-Üž…ÛB°EÁá€ä4IDµÓ+ówꦊ]½=b²@QqOãdúžÃ­•5§uTÃÞ¿¿ 4}PïµèC[[ÔÀ4a‹ì™ý| ¨ùHÔ¯EÆ 8GlЭ…÷oË ³.¬†ç,}T^=¯jà‹,+Î:€ÛR†2µ4-Øš‹÷¹xQ×ocëK3ÀIòžCå™e:é}åâêE¼ªÉÇÓa7@`ZÝùÞº‰a+?Ê߆ Ünx§aÒ©^0ûŠÚA 'ºÜ4~ÐOµ”™´<`uU„šÂrù2 †Zk¼Ò á8'ºÿûjþVÆj¡™äàpX çŽag?_bõþáYcH7¸Ýa’áèÇ*8׬`gÿe¨YZÄ1pâ/Å¡QÁ.ÝŸhù@V£|ž>GxrÒQäÁM võþ}€3‰&—vq8`,En~iR°S÷ºÄ´­ÓLØM¬ßÑ\¼À@“‚m™X¨¹(^,Ð>GÔÊ#Â/úŠærKÁ&Fl¾Ž 'é‹#£@ë-!÷APtèyf÷9øm‘&l)Øàx¨ÛæÉ=I_ôÓÀî¿rFDúáò¹)7ÓÀ£¢T³[ 61ò•ÍÖ1êÉ9É\Lt´ªýœZÁÒÀQ”Wi¶lð äžd.ú[‡ŒÊ½þÆœmÏý&Ñ) [ºMŸ#ö˹ "€¶lÈ#¹'é‹ †mñ/•å7~zð '¯Õ8&î/-‰ YºÅr¹ÍÀ#b¬àÙV‚ov’¾÷uéî—ÏŽæ¿O×ì¿Ì„˜ñªcäå œ$‡Ý"ÚŽPöéÚ ÏÈ&'é‹¶ £³PyYú|@¼P s.Ÿ›ró(=È9Þ[ Ö”Hñ{rOÒý‘öh)oo·ˆúU÷XÚ`NCø †¶šÀÝ`!1Ú ŒŒ¤O2¯‡`¤0·»'€3¿ã°¥A·ÛpŽððohòá–ý°ƒWü[0JGú$uôø.y"Ú9qij>ëf– –Ë—a’èäÁÔ±G¤­>IM /¤/F"™µóÛy©»ò1 [bÜ›ÆçHÞs\´[ vFòë%˜:#[%Glª“¸/Øn§^Blz-=,m$§Á±ÂÖ€`¥‰áC‡ááþ{•¬&§ J‡#iàÓ2.5¬àà0Î{,”IQà Kßô ¦§Ï5Æ ¬à`qCL^Ç» ˆ@pàš 7ÓýÓ°%jXÁch;—„G±{/òßFIÔ°‚"`°MB±|kYQÃ ŠƒµïÁƒ@àB^ïÑÁ–ã¸Ìjçak —! Üœ—” C–›7Omxsu\íLm ÊMž«q‰v7ÌÏã…•o¡mÒdß/+g½9Ï`nS!±\Î÷õQÃîÌÊûgo^µÌ0s~«;úö\“)6·49têˆeh&]`îåî8Ìßäîûço2Dß<+WÏ_]¡»çß_é;uEÕg‰5Ï7ÁE ;›I¾žyéaáG@Ùuñæüœ™›ïÏmeaæîÍÜz2ö‚* òæÂ/¨²Mb5$£¬D« Y6omarþê˜wæ¬×ž¹²¼MÊM®³]íö.†îzZ™¹z‹>³ ¯™óÞÞñóOèkï:ÕÛÛ7Ô«öÏ !ØO2É‹™’nË:¾ ¬Üœ3Cïø 034oïrq÷Wùf°çšœš¤¹aøTI> ãsD‡qøxØìȲÞ`3erÞëÅåïʲ¹Mª›Æ†ÆûìíýíWWÌwïŒÛ½f»ÙŽ—»ôã=;î]¹ó½xU®aóEvGf\v€1ÆY9ßÛ>~õ‰R}]½EŸ¹ º˜Ù¯Íqrl&þ‡bÒë…•™þ=Ù4÷ör÷*ýíw]¸ìã§\Þ^€™•ó0?îÐpÂn‚ÍZÆ+ë5ȺLr<ëÏ|Ç‹ù&rõu×î5Û7•@•ƒ*pd’'À€ÁÁ 8aØÆæ,“ã}í®,›ÕÛÁ0tw ÚgfðŽÏ´c›š¿à½E)!åÏ•Ç0¢]î¸$I’¤'scHwº¼.¤˜×ìíWþ•$I’¼cû´ù?‘²mfLÆÚíwöfrŽ'’$µ÷J1ÌsRo—$Ýj—¤'æ˜3ÏIHÒ˜W’z{Õ~žyqEÔ°;âš™·ï÷›¿zËk>’ª¾2•ؾmþrm¦MžwÍíѤýÖy»yÞÞ‹¹}ÅN×ÙóÌö³·\]§\3]ö=ZÓ.…P}i×°R—+&IýæØ½í’ÔR})•˜$í£†MÙü_HÙ6ÿSÊä-×~2:66'I’Ô~K’¤ØØXL’æäæÔ~„CÔ°» ÿê)×üʘºÎžÇÎM¹ú2Ë•X^6Wrm~yE19?sÛ㨂`åîø-Àì°ÛSÿ” xÍ[È#]ÀÊŒÙ5ƒke—ùß‚ÚÌÏ$3}]íj?¯ƒC ë»F ë»GV +„`ºBV +„`ºBV +„`ºBV +„`ºBV +„`ºBV + !ØÐÔ˧_ø>L¾C¢†èŠ} 6qýmïÈþ¾*äÁ>ß8އºmb¬ ØìO°‰‘¯l¶ŽQ!XA±Ù_H¤<*ÆÞ‚ÃÊþ^‘öþίå3çŸÔ.…àа¿ žsP»‚ÃÃþBOPí| )û¬)‘¿hs ŠÎþÛ`!1Úªvæ‡}®KºÒ±}¡væ‡ý.¤‘šÔλàRˆ•_‚¢!&¿t…¬@WÁ t…¬@Wä/XU¦Ææ8 u¿ýîõ„:¾N•ÊÍÀ»ï¨ä;Ôýv1}§‰ä¿düµ÷ž>¬/ö¢ñ9N[®= ¾wMß’¬¿¢R¹?{/|ï3u|·\{úðìPñ ®¼’·`ãõAIºV<¹¼ìôq}\’Ö«â[’â-WŠ'Ø\ßõ%éñïTñ¬KÒgEü?Uæ³úú¼CU¦Ææ8µùŒªù†Ö" äøöãID<ªøn0ú!d+^Éez¾öå-Ø0FŠ›ñ§¶ˆ ùTñÍh°G­rGºßõ^*Ú“Ï-÷—Ý^ŠYôy 6ž¯B8¸ä)ÚÃËñ¹ökÕÊ ™¾þ½íº*¾¹ÖÚá >,fÙò¬*Scs†.…‹÷?{ŽïÛÃPd XÕ\ŽïFn`ì(Z0–[îÄ`kǯÕè&È{Ÿ.S"a,úÔØ\§×o¨å[Ír5rßà;bŒÅëJÌw «ÊÔØŒÓ‘F#­~¿¿h5MŽoOOOOƒ­§X­\ß¶a)Úÿ29¾/øC0ªÆ|½üwB¼âØŠÖVÝèt”Ž`¢àk5|¹Ø¹¾¯¬@WˆÉ/]!+ÐB°]!+ÐB°]!+ÐB°]!+ÐB°]!+ÐB°]!+ÐB°]!+ÐB°]!+ÐB°]!+ÐB°]!+ÐB°]!+ÐB°]!+ÐB°]!+ÐB°]!+ÐB°]!+ÐB°]!+ÐB°]!+ÐB°]!+ÐB°]!+ÐB°]!+ÐB°]!+ÐB°]!+ÐB°]!+ÐB°]!+ÐB°]!+ÐB°]!+ÐB°]!+ÐB°]!+ÐB°]!+ÐB°]!+ÐB°]QVÿXnR-ÿ?¾Vˆßzñ.„ëïÚ.äñíõÕcy|{àïQØ'"|kÚ÷-„`ÿê-Oßãðñà¬ÉGUÇÞ¾múE>¾óCø.>eêUî¹< ÓLtK&inc˜m„¡Ê¢vÖZB}ÁrΪàT‘ n#_‡h¨j[#(@Ì@`’æ6`uè±óiå"|Ÿ· !Ø£šGC3À‡Ñ˜ƒ`$“ð1±ç&ã?¢­iPÍóáõ}T+!ÁŽ€õS¢`pD­DS“¸/µª;A±Ð`SXSB3À3°’üÁñ¡ÚùÝ 6…¡ ÀAØA˜d&£V§èC(yt+X™æf Dw,ì¢-it.XÜî0$£à |ç‡$Å0CÉR ‚|áXj¼aÇ9QÑ–&¥!X‡°ÆÂVb1¦Û„Nµó$(8¥#XÜn’DÁj <=ÝÜ&ÆrK,`Àùq€•X¿ÅÙ¦vޤô œÀåpØI€Ø70i}¥Âöït…ºß~wH\Û;’uÌ$´‹ór¬Áixt¯?¬vv…aû¶Û3ºfò1uÛ<éc&¡qÚ΄“L>r8E+L÷l+ØP¤Çh ú}‰‘¯l¶ŽQOêH:¡y n¨jþÆádÀ œbÞ®ÙV° F+!AÀ3>füt×С⬳m‘§ÙFá4áÉIKŸÚù9̬Îsfßôû¾Ý>$øò’'bë!䌑ô1“ЇÃVÂ`…abÚÁ2 ,¬ÐR“¾úÉ,Àí¼,o/Øk­â;âÊiê˜IðZ»byd¡Êp ¶Áˆ… °úQæâ'™dcÍ^-nŽÇÚV°#‰A0]ëð(©c&¡7Ün’„ÁâäAÀÙ$T»–¾?Z—>™Í’æÅM¥¹ºá|ŸAŠm±Æ¦Dˆߓ>f:Ä€³/`€@l²¢YíÌ舥Ù%–V\*?ßôŽï3‚=PS P™¹áWÈÆ¶‚½0j`´Ûˆ/1êK3 }bi†h Ü4‰7È·fL]:q?Ì­4ëŽBe ðzæZ!¤¹9Û÷ô\òD„Á+þˆ­#sÌ$t‹õãé5؃—ÕΊæXú~iiuéû%8“Q^FºuG3·žÉ¯ µw¶otùZ#x€†‰ ©!ë˜IèC3$à$ö[·ST³ngêÒï3W_?SGe¯¨ µ_v˜K`SúVžÜc&¡k }SÏLE£݆7a–`]ÓfdýÊ×ÜÏü^(ÉÉ/»ÇÒLƒ~ëp«›¢³ðãÂêÒêü*p&#Ø:êŽÖш½rÿ–ŒC.Xº§N¦é_ª“b31‘Nfýø75íÃT±‚K[àmiQ;C{F6GrÚMò^Òúa Ú.L-Ì,-éåç3„`³q8ÎY$ya \ZK/ÝžMOÕ¬æeIe„`s±À GØm`2ìl.¥È` €Ê¦º3z®_…`7Áꋈ† ´‘¤TZ`55K•gêÎè©yµ9B°›`¤%æ°ð àÔó2 5™®ÿ‹5yÎëÓB°›ãè C2œ¶êuükijj჋éSýõlŽìV8àÜL?ÒáLï‰à0u1oCZCv¬Ob“èkõ˜…‰)¹'àhž†4ˆ춸!–„&Âu3qöó%jZšôÝ!°)B°;aé›^³ˆFÃ:Y–~u ¨ljÑfÀúz~[¸h@°k» MÞšQ¦ &ïéa혦ÛKMÚlc­/>_4ý]^&Ôìú¿V¿yRíLìHßÔ7N¦‡fz¤ö[›³¾ø|ˆçWA©/ا,/ÿñä[¯f-mÀœ€ß:´Í®NÙ3€;\×–Ÿ/Ê©Šx;ú0ÑjŠÿÅÂU`}n®öÍÚ¢»Þ+—Óç>V;'¹L§V›ºÕÎÅÖ¬-~§,½RQû¦)?[iÁ ·a t£Ø¥qžþfq+Þ:Y^lç{ÃḠapÂo,Z©g¦¦–€©´øB …U+Á&†ot ÐÑxÉWô%Ý*œï,~³küãÉ·ò/ÑAã6Ä¢ÑÀ «úS µB¥6[Yñ傪•Œ`ƒt44DTXƒ°üäÉåïžOŸšÞÒzÌj•_¨±Xy4ét«úJÍ„²KK£_Ê·¸&§LoÖª’¬„H¨µ"auõéo× Ð~ h>¨€ɰz]]MŸMMŒD­d Öse&ÕÖ¨xçÅo—õÒ³Z!8 Ü3¸Õ¹­lâP©•¬F×`·†mƒùË—ÚÚµoŸÊ °ÚÓo€–¾@Ò@˜$ðÀZ´z6{Á+ v ¬/þ°¸.'k×ü¯˜¬ñ‹P$®ú®ïœ^ü6kss'߬V93;ã †¤“è$†¢ôu-LM-µ|”¿bùùrjíàƒP+9 šX,+§v E.0—/‡­À’»ùbºKí2oJ|ù‡ÅTú€ÔJ–`CC|¡v¹¡ºúotÔÃŽdÀAr’éË6ß{6¨ô`qF{¯½®/?_V¢V*j`$Ý{Ť¡=5Ê3 0}T³Çe€ÁM ì>ˆ—ï+ëZj°O +(¯>^}°ULº61aT»à9¤`ñ@àäqÍwà6„ ð 6ÝÖ\xãM·Ñ¢Z×XVšXT› 36°-™~Xmé¨xç§ßƧOËOáQäÓ)¯ìí$.ô[55u¯kM­â€ê¢ü‘”Äuzö+ÙNßÁu.¬}«ôè¼Cï L>äÞ4Íúz­f¯Ä¿+b¡3Ó­5,ï óuÎç#tô@b`ÄæëÈ3‰ƒ¦âwŸ/®C<þÇÚãZ¶¹šMNƒ•d Ïù1 ušœ"°ü|-˜ªµû1%ØÈðfÕä€ÿK® ô¨»×lmí;‹ß-‹‹¬ÕÁì€Ëp2ýàA>c`Ó³ÔhM°k˫隕Šêãʼn²H –žM>þ¢žjï5[~òäÚâ·k°þôiE­zº nw¦HÓûêèZš˜X–¦´3«e=žU±R^}L•-%ØFcâåÖ'÷°Ó^³Å âÔ©ø·‹ë°67Wý¦zº àœNž#|ï‘sÏÕìì´¼4ö·FôÿÏlYa:fRk2%XcץހìZ3ÒÐ=Jàm‡½f0ôðH™Éé\ünX^ÖGOW[[ÔÀ4±$ÄöÒg°ú«%€Ê¦‹Z X?ÇÓ+Õ¦c&U~âFF!{ëÎä 3»Ñ 5~¸vý‹öšýû_aà¡¶výéwrOW¡&(V¹¦%Öouï>2¨¨iiQ¿K;+xlŸ¥ûõ&÷4rcG';ì5[ö‹âÍ™)?uJž»¶67gzSÅç·[.·M;˜"º¶‡PöâçMÿ ö›„Ëh£bM#ïÀu¬ ´ÙüÊõlí¥¢Zmí5k2½³øü)ƒÉT©qÕš! MÐoÝå²M*®áº¶¶¶º¶ž%U•+Ö”;}=Ê…ìšÖcö1âÑÞ^³éž.âqt ÚËç¦Üb±ÀÇ[wÌ.df¹Vª ,¯ÿ@|m-÷¢úëFÒ#]›ºbK0Ø@èJcÄöéc&;Òµ k‹Ï³+Í«öÞ4îËÜcÓ¹1 ƒêT«kkñŸ×Ö—7^.7Uhñyv‘ç×[|žÊ1BBÙZ6uÌ$PM°kñâºQm8à¶Æúá—+wº^ü ˜™Yÿy}mc• ¦rÇ˵ڠíÜaå—{Ìjm¯ÙŠŠÚÕj:Bp8` ¬V&ײæÆÌþ«¼ÿÀR²_ç9ëk,¿üQEEEù±r“Ö{¸Õ_ª(¶Pm9pÐTmÑVp£ä¤O~?|ubBîtmi9¸ˆ`™µUÖÖ×ã›~ZéU“¦Òv(‚Í ZõìÓÚ¤T»—ääþùÔǦrÀTV¤ÎÔÁí†é$+¤ÓÀí €š‹™9˜ú}_Kml²#¦lLå˜8V®ÅŸ¢íP;œ¾ WÁŠj×ãÏSªÍ6û!”)rýòçâÿÏÖæjŽÖãQfó±·•&7¡šŠrŽ•ë¦B} E°_çgES”WWÃzü9°¶[üæ°¾¼ó=å(Ëüõ_óÓO¼üôÓÁz«¨ÀÄ«&*´ÕCµ/J!†ÝŒòêœßºµ5à9lÿ+©{RŠ,Wޝš½ýèoO© vlý—+võúÓ_{€ÿ›?ýîgþ÷wþ”8^€âÊÔ[ŸH· Zš˜X­û;Åqìo§ Çô=k³Ö¢×e XŒà0õ¯³À¬2·År¹- ÓD£Î½MA<´’@d:]_O_38ÀMD£òÚú@¶h¬Ê}®Ôµl|QË [˜&‚Ý!Ø¢Q9 ÐâÞd¦«Å ap“tèy7æ" [<šî×4]ÜrD«/p2›÷©OM£þ.2‡‡‹Û¿´íp¤vü>qNíÍ4Ë+©Ä@7Dâ×ÕÎP ³‹3|—M„ÓÿœT;³Z%%ØÄðÁ:¾Qk“ƒÒdéóö6kÐý¡…8 <˜¢ÝMì"SªLýë,Lìy^v[Õ”›ä$|±n§ÎÑÊ.2¥Çê}yâÙ= ÖÐÜ À`%œ#`¹hg™Òbab«N×]ÒÄtÜ‹Y>Õl6šÚE¦t¸}€––ºýZ°´ƒ@ŒXQ„fÓhl™R¡ñ>l×éº `qO» L¬Ä˜BZ°‘‘ ­×=¢#¶œ©;úXÇÍjmK 5 ;ÄY‚íäBh¸'>pAsKÇë’O dÇ``ͶX™š,õ5½wGJ°¡Èï >F‚"*Ø/5² –Õ‹BªHþÖá<äõlJ°qŒD‰ü‰a{|ÀÈõŽìùZ£Á¯Èì…¼ÅæÈ?=x ¿9²J¬.eíø¦vfv²»môÖ_ª›‚âx–¬?áèÎ~Í;ríK ³ò›#UoŸ®gib‚ÏÕÎÄ޸ܰLœ%ÓmÐÑЙZHÃDØ ÅÛÃPd â Êç©c&QâL}Ò}uuBíl샪¬8I>º÷ÏQµsS`R5lƒíÊ ÈpN?l*­­Í‘‹EjaÍÇ›ávÇ ’¬<˜t4—N¿AîkÞ¿ÌþÐãz@k›#¼P 8šNxFØIò·'¬%11-؆q¿Ï•æàÄÖ‘9f%Ëðäµ°€°´µQp‡-N¦Ñ}ßAÖú°›«µ aBÞ 9uÌ$J––Ïó^X@#|ýÆ"«–é(>Gò…žÃ2‚õÓàÙbþ¶V7G>8Z‚n-Žhí«šª¢’Q°¸gpë÷…ñL?ìpÇ Sp$qCíi…nµ3PP,n7$›¿Y3% ôWhÒcxldx°Z/\ê(í_úm™š¾¨çuG,m°‹ÅÂmL,Na=õ!¤K+@CÃ.vf-MVïO-Q©í±×‚ÐÖ­" V„©r0 Ÿ£‹7³.AÄ$뺳ÓS‡@°`·#, OBÿd©ò†*Íj7½.ÁN_£14ä;ŒAz^v‹[í¬ ‹¸àŽVa°Äªä—lj‹Ax’æ6†9ÑFì…Ö´›nt]ç:@h¾(õ€ LÉ+ Ô´´”B/Ö^°Z`ípžˆYxVy–"„ ·)KÐý“ƒË–ØTÕ ô‡¥›µÝl£Ú™*2v€¦PýµBUq8> ÀâH:gÆÂÔ$n+¿‰òKk4@•›hkñ§Ö¤k¹Ð00|(ׇ­iš×ì¼ìbãÚ¬¾Xê<¢PAl‡›‡a|Žð0žqÁ›‚6%sP=b}Xà¡Ö—08@Ñ.¿LžU`!ʆ—Ÿ…iæÅ$–¶ţ<˜¤¹¶âc:À‰6¦_ÐdÉsÓòC»>ìÂ÷™,¡×í±‚¼Q#|ª ò:Ààxé]¹ñV‘s-^„±@ ŒÃò¢0‚=\ëîNM,Ô”ÊÈk‘±¦´û!€ãS€ ÍX©j¦ NÀi°¾< WŽ'òæ®;œ]–¦„b …RãhJÐÖàhrPn¨¢*?W‡l}ØÕ‰…Yy1Wζ>,•p€¼†¸"æ<»uÛú°·åCèÐ)™é…‘‡Ã­%TÖ-Py¦®I¨U¯dM/l%Â@¨§.TfôÙt¦©¤'d•<)Á&†ot ÐÑxÉWZýK³ S«3K¸^T;C‚ü(åíçWgö»¡¶@«”îöóÓ³©äQµó"(¥»ýüª¬×º3‡{VK‰QºÛÏŸ¹MÍ™º&ÑÛZZ”Ðöó³ K³«™u°ê>8#úJ¬u }ît°4¿° GY›gŠRDlâÚ¨­Ã7âOàÿ:Oƒ*°ðßWÓéY.,$Ø%²`»ƒ>†‚£eª‚ΨQ¶zµ×5ÚEÈZâÈ‚õ¶ÒØÝ£µ.}¿ºÀÂéµ²f©îLÍ1Üz(ðãV=l-w{yå÷ÿ3Wÿ›h]”F—†ß‹Yø1«õ~&Ì\z=<”åoâ@Xš``øÕÆžÿº£5••búõ¡D}Á¦¤ùýRz¶*PyÓ›?¢æ¨¨O3Š`;Lä¬OP¾ßTš™Ö~¥=Ói…è´:ì”Ø|€Ú\Y¸^¤¦x]´ýÙÈ‚ÝbcBC£Æ =ÆÝköõ‹ÊZ3¹}¨bF `3¶a»=ã‰k7t¯Ù!MÁîye»ý‘[C׉‘_ÛZ;FÓÇLB (.Û Öæ“ûgå­eýéc&!—mC[D†|;í5û〠Jv¯Y6íÔ;0ÒѳÓ^³¯ýý/à°¬r$P à³íºfô€gDùΔýBÏó¾úÀf8¶m ˵Æ/<€)‘@Ùk–Ô^³”ü^³-²­`G#­~¿ßOƒm„Ähkú˜IÅeÛ ˜èøú0î5+Ð&G¤]Ý–P¶–M3  Ó'‚AqèÜål­Ã·×¬@›¼’¿  xÁ t…¬@WÁ t…¬@W¨ÿN— `Œã2«‡ƒFÔ°%ÃåæÍS}¹×ÆÕÎTÁ5ìn˜ŸÇ +3ÞBÛ,¤É¾;^VÎzs žßݸŽ5ìά¼öæUË 3ç·º£oÏ5™bsK“C§ŽX†öhÒæ^îŽÃüMî¾þ&CôͳrõüÕº{þý•¾óWWT}–y#jØÙL2ëÝ…8ps~ÎÌÍ÷ç¶²0s÷fn={!ïhCIF“X É(+Ñ*C–Í[[˜œ¿:æ9ëµg®,oS„r€ëlW»½‹¡»^†Vf®Þ¢ÏìÂkæ¼·wüüúÚ{‡Nõöö õªýÄóBö“L2k·™Û²Žo+7çÌÐ;>Ì ÍÛ»\ܽ»âíUþ…ì¹&§2;ZËɇa|Žè0›Y6Ãl¦LÎ{½¸¼ã]Y6·)BuÀØÐxŸ½½¿ýêŠùîq»×l7Ûñr—~¼gǽ+·`¾¯¨aK—`ŒqVÎ÷¶_}¢T_WoÑgî‚.föksœ›‰ÿ¡˜ôzae¦O6ͽ½Ü½Jû].ûø)—·`få<Ì{J A6kᮬE;²ÖCÏú3ßñb¾‰\}ݵ{ÍöM%På JÙdUNž'à„a›w²LŽ÷µ»²lVoSÀÐÝ1hŸ™Á;>ÓŽyl~|hþ€÷¥„”?WÀˆv¹ã’$I’žÌ!Ýéòºb^³·_ùW’$IòŽíÓæÿDʶ™1k·ßÙ›É9žH’ÔÞ+Å0ÏI½]’t«]B’ž˜cRÌ<'!Ic^IêíUûyæÅQÃîˆkfÞ¼ßofüê-¯ùHªúÊTbû¶ù_ȵ™6yÞ5·G“ö[çíæy{/æö;]ggÌ3cØÏÞrurÍtÙ÷hM»Bõ¥]ÃJ]®˜$õ›ccô¶KR?Jõ¥Tb’´6eó!eÛüO)“·\ûÉèØØœ$IRû-I’bcc1Iš“ÿ™Sû QÃî‚þ«§\ó+cfè:{;7åêË,WbyÙ\ɵùåÅäüÌ`l£ ^€•»ã·³ÀnOýS*ìò™m)ýWdä‘.`eÆìšÁµ2ƒËŒüoAmæg€™¾®vµŸ×ÁÑ)+ÐbhV +„`ºBV +„`ºBV +„`ºBV +„`ºBV +„`ºBV +„`º¢‚ ýA½üwª¸Y˜ð]|B¢†èŠ} 6qýmïÈþ¾*äÁ>ß8(àæÈÁØŸ`#_Ùl£B°‚b³¿@lŽ,P‰ý½"3ìÿü_ËgÎ?©] Á¡a!AîæÈµ !8<ì/$ðÕηà²?ÁŠÍ‘*±?ÁŠÍ‘*±Ïu BW#¶/Ôμàð±ß…4²7GŠF!V~І˜ü"ÐB°]!+ÐB°]‘¿`U™›ã4Ôýö»×êø:U*7ï¾; ’ïP÷ÛÅô&’ÿ’ñ×Þ{ú°¾Ø‹Æç8m¹ö4øÞ5u|KR°þŠJåþì½`ð½ÏÔñÝríéóCÅ+¸BðJÞ‚×%éZñäò²ÓÇõqIzX¯ŠoIŠ·\)ž`s}×?–¤Ç¿SÅw°>.IŸñÿT™Ïêëó T™›ãÔæ3ªæZ‹8€’ãÛ'ñt¨â»Á臭x%—éùÚ—·`CÀ)nÆsœÚz 2äSÅ7£ÁµÊiè~×{©hO>·Ü_vwz)fÑSä-Øx¾ átà’§h/ÇwäÚ¯U+w$dúú÷¶ëªøæZk‡/ø°˜eWÈ[°ªLÍuº,Þÿì9¾GlB‘bUs9¾¹±£hÁXn¹ƒ­¿V£› ï}ºL‰„±èScs^k¼¡–o5Ë]ÔÈ}ƒïˆ 0¯+1CÞ5¬*Sc3NGF´úýþ¢Õ49¾==== ¶žbµ>r}Û†a¤hÿËäø¾àÁ¨óõòß qðŠ?b+Z[u£ÓQ:‚‰N€¯Õð]äbçú¼ò0Á *¾z.y"Eô¡Ó U™«æ|\ÍøN‹“äøŽDŠɈù°]!&¿t…¬@WÁ t…¬@WÁ t…ì>ùý á†z6šÚéº×B°{&téRgç»@çó(.í~ø-ËT(² Óìòž’Cv¯D®ØÆ¿þºgxç™á}9|»íÝÍ=%‡ì^6ýÚ>ߨr’™þPÖ~;GÒ D¹}Ã…,B™ù[Ö­øC¹v"þ„rÏá£Øo9èžzùM¦§%©þ±ôøl}}ýg’4T__ßò4uHÝšzêqýïäÛ‚-õõg—u¡þ±|_ÆÔ•úúzIªœºUªj©¯/®8?[_ÿÙµ³õgƒ’T?\”¤ÏÞSû‰!Ø=ò8ëýÃúÇRË/%éwõÁ`ýï¤xËgÊ!ëóÔ—ZžJë'µ¼—†êg.d V1%]ùL’¤úÇ©[¥ú– ¬—ßݪo‰KŸÕ_“Ô?þì=éñÙ§{Ƚþ!A~Üø5\ §ãàå°É}>­£þÈ _ÃhúÂ&¦”³?dnmm Á£ÄF<ô`´…º¸Þu¸ƒü§n<£Á„< —ZmP/Ó4Œ4`<¡ô…ML)„roMÑYS·¿¾ä)ÚËlÚ@Ô°{ăÜò¿í¸4€møjÐæ¿4:¼Œ0m{!mjÓïnA„È!ëŒ5ì^éé0~£ð‡~oð‡|­ xäÃ&/˜…llð GlàoL_@–\Ê”BÃô­[“¸680¤Æ»«ê!jؽâ‹_‰Àð°ò¶A®Cd q£rØä[C B#qFB­é à‡T,›RøEæÖ­¹ÖØzcøpm—&jؽbû²Û øz< —ƒÆëƒžK z:F/5D6}]ßónC¨£‡/¯<4E|žÌß°?áñ䘲„¾€¬[·äÿ+<¾ë_ùuDUoìƒPœÆ”HüØl‘H£Q¹–ýQçס¸ü~‰›-ûBêzÆ©_ä[9Áƒô¦‘[^ìà t…¨a‹A"èÙá‚`—Á tÅÿ`ÊŽÎ\k8 %tEXtdate:create2020-03-21T12:46:35+01:00ñùÔ%tEXtdate:modify2020-03-21T12:46:35+01:00€\Ah0tEXtps:HiResBoundingBox495.72x404.172+26.034+14.694Ħ¹rtEXtps:LevelAdobe-3.0 EPSF-3.0 ›p»ãIEND®B`‚queueing/doc/queueing.html0000644000175000017500000145032413635377235015564 0ustar morenomoreno queueing

queueing

Copyright © 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2016, 2018, 2020 Moreno Marzolla.

Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.

Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.

Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.

Table of Contents

Next: , Up: (dir)   [Contents][Index]

This manual documents how to install and run the Queueing package. It corresponds to version 1.2.7 of the package.


Next: , Previous: , Up: Top   [Contents][Index]

1 Summary


1.1 About the Queueing Package

This document describes the queueing package for GNU Octave (queueing in short). The queueing package, previously known as qnetworks toolbox, is a collection of functions for analyzing queueing networks and Markov chains written for GNU Octave. Specifically, queueing contains functions for analyzing Jackson networks, open, closed or mixed product-form BCMP networks, and computing performance bounds. The following algorithms are available

  • Convolution for closed, single-class product-form networks with load-dependent service centers;
  • Exact and approximate Mean Value Analysis (MVA) for single and multiple class product-form closed networks;
  • MVA for mixed, multiple class product-form networks with load-independent service centers;
  • Approximate MVA for closed, single-class networks with blocking (MVABLO algorithm by F. Akyildiz);
  • Asymptotic Bounds, Balanced System Bounds and Geometric Bounds;

queueing provides functions for analyzing the following types of single-station queueing systems:

  • M/M/1
  • M/M/m
  • M/M/\infty
  • M/M/1/k single-server, finite capacity system
  • M/M/m/k multiple-server, finite capacity system
  • Asymmetric M/M/m
  • M/G/1 (general service time distribution)
  • M/H_m/1 (Hyperexponential service time distribution)

Functions for Markov chain analysis are also provided (discrete- and continuous-time chains are supported):

  • Birth-death processes;
  • Transient and stationary state occupancy probabilities;
  • Mean time to absorption;
  • Expected sojourn times and time-averaged sojourn times;
  • Mean first passage times;

The queueing package is distributed under the terms of the GNU General Public License (GPL), version 3 or later (see Copying). You are encouraged to share this software with others, and improve this package by contributing additional functions and reporting bugs. See Contributing Guidelines.

If you use the queueing package in a technical paper, please cite it as:

Moreno Marzolla, The qnetworks Toolbox: A Software Package for Queueing Networks Analysis. Khalid Al-Begain, Dieter Fiems and William J. Knottenbelt, Editors, Proceedings 17th International Conference on Analytical and Stochastic Modeling Techniques and Applications (ASMTA 2010) Cardiff, UK, June 14–16, 2010, volume 6148 of Lecture Notes in Computer Science, Springer, pp. 102–116, ISBN 978-3-642-13567-5

If you use BibTeX, this is the citation block:

@inproceedings{queueing,
  author    = {Moreno Marzolla},
  title     = {The qnetworks Toolbox: A Software Package for Queueing 
               Networks Analysis},
  booktitle = {Analytical and Stochastic Modeling Techniques and 
               Applications, 17th International Conference, 
               ASMTA 2010, Cardiff, UK, June 14-16, 2010. Proceedings},
  editor    = {Khalid Al-Begain and Dieter Fiems and William J. Knottenbelt},
  year      = {2010},
  publisher = {Springer},
  series    = {Lecture Notes in Computer Science},
  volume    = {6148},
  pages     = {102--116},
  ee        = {http://dx.doi.org/10.1007/978-3-642-13568-2_8},
  isbn      = {978-3-642-13567-5}
}

An early draft of the paper above is available as Technical Report UBLCS-2010-04, February 2010, Department of Computer Science, University of Bologna, Italy.


1.2 Contributing Guidelines

Contributions and bug reports are always welcome. If you want to contribute to the queueing package, here are some guidelines:

  • If you are contributing a new function, please embed proper documentation within the function itself. The documentation must be in texinfo format, so that it can be extracted and included into the printable manual. See the existing functions for the documentation style.
  • Make sure that each new function validates its input parameters. For example, a function accepting vectors should check whether the dimensions match.
  • Provide bibliographic references for each new algorithm you contribute. Document any significant difference from the reference. Update the doc/references.txi file if appropriate.
  • Include test and demo blocks. Test blocks are particularly important, since most algorithms are tricky to implement correctly. If appropriate, test blocks should also verify that the function fails on incorrect inputs.

Send your contribution to Moreno Marzolla (moreno.marzolla@unibo.it). If you are a user of this package and find it useful, let me know by dropping me a line. Thanks.


1.3 Acknowledgments

The following people (listed alphabetically) contributed to the queueing package, either by providing feedback, reporting bugs or contributing code: Philip Carinhas, Phil Colbourn, Diego Didona, Yves Durand, Marco Guazzone, Dmitry Kolesnikov, Michele Mazzucco, Marco Paolieri.


Next: , Previous: , Up: Top   [Contents][Index]

2 Installation and Getting Started


2.1 Installation through Octave package management system

The most recent version of queueing is 1.2.7 and can be downloaded from Octave-Forge

https://octave.sourceforge.io/queueing/

Additional information can be found at

http://www.moreno.marzolla.name/software/queueing/

To install queueing, follow these steps:

  1. If you have a recent version of GNU Octave and a network connection, you can install queueing from Octave command prompt using this command:
    octave:1> pkg install -forge queueing
    

    The command above will download and install the latest version of the queueing package from Octave Forge, and install it on your machine.

    If you do not have root access, you can perform a local install with:

    octave:1> pkg install -local -forge queueing
    

    This will install queueing in your home directory, and the package will be available to the current user only.

  2. Alternatively, you can first download the queueing tarball from Octave-Forge; to install the package in the system-wide location issue this command at the Octave prompt:
    octave:1> pkg install queueing-1.2.7.tar.gz
    

    (you may need to start Octave as root in order to allow the installation to copy the files to the target locations). After this, all functions will be available each time Octave starts, without the need to tweak the search path.

    If you do not have root access, you can do a local install using:

    octave:1> pkg install -local queueing-1.2.7.tar.gz
    
  3. Use the pkg list command at the Octave prompt to check that the queueing package has been succesfully installed; you should see something like:
    octave:1>pkg list queueing
    Package Name  | Version | Installation directory
    --------------+---------+-----------------------
        queueing  |   1.2.7 | /home/moreno/octave/queueing-1.2.7
    
  4. Starting from version 1.1.1, queueing is no longer automatically loaded on Octave start. To make the functions available for use, you need to issue the command
    octave:1>pkg load queueing 
    

    at the Octave prompt. To automatically load queueing each time Octave starts, you can add the command above to the startup script (usually, ~/.octaverc on Unix systems).

  5. To completely remove queueing from your system, use the pkg uninstall command:
    octave:1> pkg uninstall queueing
    

2.2 Manual installation

If you want to manually install queueing in a custom location, you can download the tarball and unpack it somewhere:

tar xvfz queueing-1.2.7.tar.gz
cd queueing-1.2.7/queueing/

Copy all .m files from the inst/ directory to some target location. Then, start Octave with the -p option to add the target location to the search path, so that Octave will find all queueing functions automatically:

octave -p /path/to/queueing

For example, if all queueing m-files are in /usr/local/queueing, you can start Octave as follows:

octave -p /usr/local/queueing

If you want, you can add the following line to ~/.octaverc:

addpath("/path/to/queueing");

so that the path /path/to/queueing is automatically added to the search path each time Octave is started, and you no longer need to specify the -p option on the command line.


2.3 Development sources

The source code of the queueing package can be found in the Mercurial repository at the URL:

https://sourceforge.net/p/octave/queueing/ci/default/tree/

The source distribution contains additional development files that are not present in the installation tarball. This section briefly describes the content of the source tree. This is only relevant for developers who want to modify the code or the documentation.

The source distribution contains the following directories:

doc/

Documentation sources. Most of the documentation is extracted from the comment blocks of function files from the inst/ directory.

inst/

This directory contains the m-files which implement the various algorithms provided by queueing. As a notational convention, the names of functions for Queueing Networks begin with the ‘qn’ prefix; the name of functions for Continuous-Time Markov Chains (CTMCs) begin with the ‘ctmc’ prefix, and the names of functions for Discrete-Time Markov Chains (DTMCs) begin with the ‘dtmc’ prefix.

test/

This directory contains the test scripts used to run all function tests.

devel/

This directory contains functions that are either not working properly, or need additional testing before they are moved to the inst/ directory.

The queueing package ships with a Makefile which can be used to produce the documentation (in PDF and HTML format), and automatically execute all function tests. The following targets are defined:

all

Running ‘make’ (or ‘make all’) on the top-level directory builds the programs used to extract the documentation from the comments embedded in the m-files, and then produce the documentation in PDF and HTML format (doc/queueing.pdf and doc/queueing.html, respectively).

check

Running ‘make check’ will execute all tests contained in the m-files. If you modify the code of any function in the inst/ directory, you should run the tests to ensure that no errors have been introduced. You are also encouraged to contribute new tests, especially for functions that are not adequately validated.

clean
distclean
dist

The ‘make clean’, ‘make distclean’ and ‘make dist’ commands are used to clean up the source directory and prepare the distribution archive in compressed tar format.


2.4 Naming Conventions

Most of the functions in the queueing package obey a common naming convention. Function names are made of several parts; the first part is a prefix which indicates the class of problems the function addresses:

ctmc-

Functions for continuous-time Markov chains

dtmc-

Functions for discrete-time Markov chains

qs-

Functions for analyzing single-station queueing systems (individual service centers)

qn-

Functions for analyzing queueing networks

Functions dealing with Markov chains start with either the ctmc or dtmc prefix; the prefix is optionally followed by an additional string which hints at what the function does:

-bd

Birth-Death process

-mtta

Mean Time to Absorption

-fpt

First Passage Times

-exps

Expected Sojourn Times

-taexps

Time-Averaged Expected Sojourn Times

For example, function ctmcbd returns the infinitesimal generator matrix for a continuous birth-death process, while dtmcbd returns the transition probability matrix for a discrete birth-death process. Note that there exist functions ctmc and dtmc (without any suffix) that compute steady-state and transient state occupancy probabilities for CTMCs and DTMCs, respectively. See Markov Chains.

Functions whose name starts with qs- deal with single station queueing systems. The suffix describes the type of system, e.g., qsmm1 for M/M/1, qnmmm for M/M/m and so on. See Single Station Queueing Systems.

Finally, functions whose name starts with qn- deal with queueing networks. The character that follows indicates whether the function handles open ('o') or closed ('c') networks, and whether there is a single customer class ('s') or multiple classes ('m'). The string mix indicates that the function supports mixed networks with both open and closed customer classes.

-os-

Open, single-class network: open network with a single class of customers

-om-

Open, multiclass network: open network with multiple job classes

-cs-

Closed, single-class network

-cm-

Closed, multiclass network

-mix-

Mixed network with open and closed classes of customers

The last part of the function name indicates the algorithm implemented by the function. See Queueing Networks.

-aba

Asymptotic Bounds Analysis

-bsb

Balanced System Bounds

-gb

Geometric Bounds

-pb

PB Bounds

-cb

Composite Bounds (CB)

-mva

Mean Value Analysis (MVA) algorithm

-cmva

Conditional MVA

-mvald

MVA with general load-dependent servers

-mvaap

Approximate MVA

-mvablo

MVABLO approximation for blocking queueing networks

-conv

Convolution algorithm

-convld

Convolution algorithm with general load-dependent servers

Some deprecated functions may be present in the queueing package; generally, these are functions that have been renamed, and the old name is kept for a while for backward compatibility. Deprecated functions are not documented and will be removed in future releases. Calling a deprecated functions displays a warning message that appears only once per session. The warning message can be turned off with the command:

octave:1> warning ("off", "qn:deprecated-function");

However, you are strongly recommended to update your code to the new API. To help catching usages of deprecated functions, you can transform warnings into errors so that your application stops immediately:

octave:1> warning ("error", "qn:deprecated-function");

2.5 Quick start Guide

You can use all functions by simply invoking their name with the appropriate parameters; an error is shown in case of missing/wrong parameters. Extensive documentation is provided for each function, and can be displayed with the help command. For example:

octave:2> help qncsmvablo

shows the documentation for the qncsmvablo function. Additional information can be found in the queueing manual, that is available in PDF format in doc/queueing.pdf and in HTML format in doc/queueing.html.

Many functions have demo blocks showing usage examples. To execute the demos for the qnclosed function, use the demo command:

octave:4> demo qnclosed

We now illustrate a few examples of how the queueing package can be used. More examples are provided in the manual.

Example 1 Compute the stationary state occupancy probabilities of a continuous-time Markov chain with infinitesimal generator matrix

    / -0.8   0.6   0.2 \
Q = |  0.3  -0.7   0.4 |
    \  0.2   0.2  -0.4 /
Q = [ -0.8  0.6  0.2; \
       0.3 -0.7  0.4; \
       0.2  0.2 -0.4 ];
q = ctmc(Q)
    ⇒ q = 0.23256   0.32558   0.44186

Example 2 Compute the transient state occupancy probability after n=3 transitions of a three state discrete-time birth-death process, with birth probabilities \lambda_{01} = 0.3 and \lambda_{12} = 0.5 and death probabilities \mu_{10} = 0.5 and \mu_{21} = 0.7, assuming that the system is initially in state zero (i.e., the initial state occupancy probabilities are [1, 0, 0]).

n = 3;
p0 = [1 0 0];
P = dtmcbd( [0.3 0.5], [0.5 0.7] );
p = dtmc(P,n,p0)
    ⇒ p = 0.55300   0.29700   0.15000

Example 3 Compute server utilization, response time, mean number of requests and throughput of a closed queueing network with N=4 requests and three M/M/1–FCFS queues with mean service times S = [1.0, 0.8, 1.4] and average number of visits V = [1.0, 0.8, 0.8]

S = [1.0 0.8 1.4];
V = [1.0 0.8 0.8];
N = 4;
[U R Q X] = qncsmva(N, S, V)
    ⇒ 
     U = 0.70064   0.44841   0.78471
     R = 2.1030    1.2642    3.2433
     Q = 1.47346   0.70862   1.81792
     X = 0.70064   0.56051   0.56051

Example 4 Compute server utilization, response time, mean number of requests and throughput of an open queueing network with three M/M/1–FCFS queues with mean service times S = [1.0, 0.8, 1.4] and average number of visits V = [1.0, 0.8, 0.8]. The overall arrival rate is \lambda = 0.8 requests/second.

S = [1.0 0.8 1.4];
V = [1.0 0.8 0.8];
lambda = 0.8;
[U R Q X] = qnos(lambda, S, V)
    ⇒ 
     U = 0.80000   0.51200   0.89600
     R = 5.0000    1.6393   13.4615
     Q = 4.0000    1.0492    8.6154
     X = 0.80000   0.64000   0.64000

3 Markov Chains


3.1 Discrete-Time Markov Chains

Let X_0, X_1, …, X_n, … be a sequence of random variables defined over the discrete state space 1, 2, …. The sequence X_0, X_1, …, X_n, … is a stochastic process with discrete time 0, 1, 2, …. A Markov chain is a stochastic process {X_n, n=0, 1, …} which satisfies the following Markov property:

P(X_{n+1} = x_{n+1} | X_n = x_n, X_{n-1} = x_{n-1}, …, X_0 = x_0) = P(X_{n+1} = x_{n+1} | X_n = x_n)

which basically means that the probability that the system is in a particular state at time n+1 only depends on the state the system was at time n.

The evolution of a Markov chain with finite state space {1, …, N} can be fully described by a stochastic matrix {\bf P}(n) = [ P_{i,j}(n) ] where P_{i, j}(n) = P( X_{n+1} = j\ |\ X_n = i ). If the Markov chain is homogeneous (that is, the transition probability matrix {\bf P}(n) is time-independent), we can write {\bf P} = [P_{i, j}], where P_{i, j} = P( X_{n+1} = j\ |\ X_n = i ) for all n=0, 1, ….

The transition probability matrix \bf P must be a stochastic matrix, meaning that it must satisfy the following two properties:

  1. P_{i, j} ≥ 0 for all 1 ≤ i, j ≤ N;
  2. \sum_{j=1}^N P_{i,j} = 1 for all i

Property 1 requires that all probabilities are nonnegative; property 2 requires that the outgoing transition probabilities from any state i sum to one.

Function File: [r err] = dtmcchkP (P)

Check whether P is a valid transition probability matrix.

If P is valid, r is the size (number of rows or columns) of P. If P is not a transition probability matrix, r is set to zero, and err to an appropriate error string.

A DTMC is irreducible if every state can be reached with non-zero probability starting from every other state.

Function File: [r s] = dtmcisir (P)

Check if P is irreducible, and identify Strongly Connected Components (SCC) in the transition graph of the DTMC with transition matrix P.

INPUTS

P(i,j)

transition probability from state i to state j. P must be an N \times N stochastic matrix.

OUTPUTS

r

1 if P is irreducible, 0 otherwise (scalar)

s(i)

strongly connected component (SCC) that state i belongs to (vector of length N). SCCs are numbered 1, 2, …. The number of SCCs is max(s). If the graph is strongly connected, then there is a single SCC and the predicate all(s == 1) evaluates to true


3.1.1 State occupancy probabilities

Given a discrete-time Markov chain with state space {1, …, N}, we denote with {\bf \pi}(n) = \left[\pi_1(n), … \pi_N(n) \right] the state occupancy probability vector at step n = 0, 1, …. \pi_i(n) is the probability that the system is in state i after n transitions.

Given the transition probability matrix \bf P and the initial state occupancy probability vector {\bf \pi}(0) = \left[\pi_1(0), …, \pi_N(0)\right], {\bf \pi}(n) can be computed as:

\pi(n) = \pi(0) P^n

Under certain conditions, there exists a stationary state occupancy probability {\bf \pi} = \lim_{n \rightarrow +\infty} {\bf \pi}(n), which is independent from {\bf \pi}(0). The vector \bf \pi is the solution of the following linear system:

/
| \pi P   = \pi
| \pi 1^T = 1
\

where \bf 1 is the row vector of ones, and ( \cdot )^T the transpose operator.

Function File: p = dtmc (P)
Function File: p = dtmc (P, n, p0)

Compute stationary or transient state occupancy probabilities for a discrete-time Markov chain.

With a single argument, compute the stationary state occupancy probabilities p(1), …, p(N) for a discrete-time Markov chain with finite state space {1, …, N} and with N \times N transition matrix P. With three arguments, compute the transient state occupancy probabilities p(1), …, p(N) that the system is in state i after n steps, given initial occupancy probabilities p0(1), …, p0(N).

INPUTS

P(i,j)

transition probabilities from state i to state j. P must be an N \times N irreducible stochastic matrix, meaning that the sum of each row must be 1 (\sum_{j=1}^N P_{i, j} = 1), and the rank of P must be N.

n

Number of transitions after which state occupancy probabilities are computed (scalar, n ≥ 0)

p0(i)

probability that at step 0 the system is in state i (vector of length N).

OUTPUTS

p(i)

If this function is called with a single argument, p(i) is the steady-state probability that the system is in state i. If this function is called with three arguments, p(i) is the probability that the system is in state i after n transitions, given the probabilities p0(i) that the initial state is i.


See also: ctmc.

EXAMPLE

The following example is from GrSn97. Let us consider a maze with nine rooms, as shown in the following figure

+-----+-----+-----+
|     |     |     |
|  1     2     3  |
|     |     |     |
+-   -+-   -+-   -+
|     |     |     |
|  4     5     6  |
|     |     |     |
+-   -+-   -+-   -+
|     |     |     |
|  7     8     9  |
|     |     |     |
+-----+-----+-----+

A mouse is placed in one of the rooms and can wander around. At each step, the mouse moves from the current room to a neighboring one with equal probability. For example, if it is in room 1, it can move to room 2 and 4 with probability 1/2, respectively; if the mouse is in room 8, it can move to either 7, 5 or 9 with probability 1/3.

The transition probabilities P_{i, j} from room i to room j can be summarized in the following matrix:

        / 0     1/2   0     1/2   0     0     0     0     0   \
        | 1/3   0     1/3   0     1/3   0     0     0     0   |
        | 0     1/2   0     0     0     1/2   0     0     0   |
        | 1/3   0     0     0     1/3   0     1/3   0     0   |
    P = | 0     1/4   0     1/4   0     1/4   0     1/4   0   |
        | 0     0     1/3   0     1/3   0     0     0     1/3 |
        | 0     0     0     1/2   0     0     0     1/2   0   |
        | 0     0     0     0     1/3   0     1/3   0     1/3 |
        \ 0     0     0     0     0     1/2   0     1/2   0   /

The stationary state occupancy probabilities can then be computed with the following code:

 P = zeros(9,9);
 P(1,[2 4]    ) = 1/2;
 P(2,[1 5 3]  ) = 1/3;
 P(3,[2 6]    ) = 1/2;
 P(4,[1 5 7]  ) = 1/3;
 P(5,[2 4 6 8]) = 1/4;
 P(6,[3 5 9]  ) = 1/3;
 P(7,[4 8]    ) = 1/2;
 P(8,[7 5 9]  ) = 1/3;
 P(9,[6 8]    ) = 1/2;
 p = dtmc(P);
 disp(p)
    ⇒ 0.083333   0.125000   0.083333   0.125000   
       0.166667   0.125000   0.083333   0.125000   
       0.083333

3.1.2 Birth-death process

Function File: P = dtmcbd (b, d)

Returns the transition probability matrix P for a discrete birth-death process over state space {1, …, N}. For each i=1, …, (N-1), b(i) is the transition probability from state i to (i+1), and d(i) is the transition probability from state (i+1) to i.

Matrix \bf P is defined as:

/                                                             \
| 1-b(1)     b(1)                                             |
|  d(1)  (1-d(1)-b(2))     b(2)                               |
|            d(2)      (1-d(2)-b(3))     b(3)                 |
|                                                             |
|                 ...           ...          ...              |
|                                                             |
|                         d(N-2)   (1-d(N-2)-b(N-1))  b(N-1)  |
|                                        d(N-1)      1-d(N-1) |
\                                                             /

where \lambda_i and \mu_i are the birth and death probabilities, respectively.


See also: ctmcbd.


3.1.3 Expected Number of Visits

Given a N state discrete-time Markov chain with transition matrix \bf P and an integer n ≥ 0, we let L_i(n) be the the expected number of visits to state i during the first n transitions. The vector {\bf L}(n) = \left[ L_1(n), …, L_N(n) \right] is defined as

         n            n
        ___          ___
       \            \           i
L(n) =  >   pi(i) =  >   pi(0) P
       /___         /___
        i=0          i=0

where {\bf \pi}(i) = {\bf \pi}(0){\bf P}^i is the state occupancy probability after i transitions, and {\bf \pi}(0) = \left[\pi_1(0), …, \pi_N(0) \right] are the initial state occupancy probabilities.

If \bf P is absorbing, i.e., the stochastic process eventually enters a state with no outgoing transitions, then we can compute the expected number of visits until absorption \bf L. To do so, we first rearrange the states by rewriting \bf P as

    / Q | R \
P = |---+---|
    \ 0 | I /

where the first t states are transient and the last r states are absorbing (t+r = N). The matrix {\bf N} = ({\bf I} - {\bf Q})^{-1} is called the fundamental matrix; N_{i,j} is the expected number of times the process is in the j-th transient state assuming it started in the i-th transient state. If we reshape \bf N to the size of \bf P (filling missing entries with zeros), we have that, for absorbing chains, {\bf L} = {\bf \pi}(0){\bf N}.

Function File: L = dtmcexps (P, n, p0)
Function File: L = dtmcexps (P, p0)

Compute the expected number of visits to each state during the first n transitions, or until abrosption.

INPUTS

P(i,j)

N \times N transition matrix. P(i,j) is the transition probability from state i to state j.

n

Number of steps during which the expected number of visits are computed (n ≥ 0). If n=0, returns p0. If n > 0, returns the expected number of visits after exactly n transitions.

p0(i)

Initial state occupancy probabilities; p0(i) is the probability that the system is in state i at step 0.

OUTPUTS

L(i)

When called with two arguments, L(i) is the expected number of visits to state i before absorption. When called with three arguments, L(i) is the expected number of visits to state i during the first n transitions.

REFERENCES

  • Grinstead, Charles M.; Snell, J. Laurie (July 1997). Introduction to Probability, Ch. 11: Markov Chains. American Mathematical Society. ISBN 978-0821807491.

See also: ctmcexps.


3.1.4 Time-averaged expected sojourn times

Function File: M = dtmctaexps (P, n, p0)
Function File: M = dtmctaexps (P, p0)

Compute the time-averaged sojourn times M(i), defined as the fraction of time spent in state i during the first n transitions (or until absorption), assuming that the state occupancy probabilities at time 0 are p0.

INPUTS

P(i,j)

N \times N transition probability matrix.

n

Number of transitions during which the time-averaged expected sojourn times are computed (scalar, n ≥ 0). if n = 0, returns p0.

p0(i)

Initial state occupancy probabilities (vector of length N).

OUTPUTS

M(i)

If this function is called with three arguments, M(i) is the expected fraction of steps {0, …, n} spent in state i, assuming that the state occupancy probabilities at time zero are p0. If this function is called with two arguments, M(i) is the expected fraction of steps spent in state i until absorption. M is a vector of length N.


See also: dtmcexps.


3.1.5 Mean Time to Absorption

The mean time to absorption is defined as the average number of transitions that are required to enter an absorbing state, starting from a transient state or given initial state occupancy probabilities {\bf \pi}(0).

Let t_i be the expected number of transitions before being absorbed in any absorbing state, starting from state i. The vector {\bf t} = [t_1, …, t_N] can be computed from the fundamental matrix \bf N (see Expected number of visits (DTMC)) as

t = N c

where \bf c is a column vector of 1’s.

Let {\bf B} = [ B_{i, j} ] be a matrix where B_{i, j} is the probability of being absorbed in state j, starting from transient state i. Again, using matrices \bf N and \bf R (see Expected number of visits (DTMC)) we can write

B = N R

Function File: [t N B] = dtmcmtta (P)
Function File: [t N B] = dtmcmtta (P, p0)

Compute the expected number of steps before absorption for a DTMC with state space {1, …, N} and transition probability matrix P.

INPUTS

P(i,j)

N \times N transition probability matrix. P(i,j) is the transition probability from state i to state j.

p0(i)

Initial state occupancy probabilities (vector of length N).

OUTPUTS

t
t(i)

When called with a single argument, t is a vector of length N such that t(i) is the expected number of steps before being absorbed in any absorbing state, starting from state i; if i is absorbing, t(i) = 0. When called with two arguments, t is a scalar, and represents the expected number of steps before absorption, starting from the initial state occupancy probability p0.

N(i)
N(i,j)

When called with a single argument, N is the N \times N fundamental matrix for P. N(i,j) is the expected number of visits to transient state j before absorption, if the system started in transient state i. The initial state is counted if i = j. When called with two arguments, N is a vector of length N such that N(j) is the expected number of visits to transient state j before absorption, given initial state occupancy probability P0.

B(i)
B(i,j)

When called with a single argument, B is a N \times N matrix where B(i,j) is the probability of being absorbed in state j, starting from transient state i; if j is not absorbing, B(i,j) = 0; if i is absorbing, B(i,i) = 1 and B(i,j) = 0 for all i \neq j. When called with two arguments, B is a vector of length N where B(j) is the probability of being absorbed in state j, given initial state occupancy probabilities p0.

REFERENCES

  • Grinstead, Charles M.; Snell, J. Laurie (July 1997). Introduction to Probability, Ch. 11: Markov Chains. American Mathematical Society. ISBN 978-0821807491.

See also: ctmcmtta.


3.1.6 First Passage Times

The First Passage Time M_{i, j} is the average number of transitions needed to enter state j for the first time, starting from state i. Matrix \bf M satisfies the property

           ___
          \
M_ij = 1 + >   P_ij * M_kj
          /___
          k!=j

To compute {\bf M} = [ M_{i, j}] a different formulation is used. Let \bf W be the N \times N matrix having each row equal to the stationary state occupancy probability vector \bf \pi for \bf P; let \bf I be the N \times N identity matrix (i.e., the matrix of all ones). Define \bf Z as follows:

               -1
Z = (I - P + W)

Then, we have that

       Z_jj - Z_ij
M_ij = -----------
          \pi_j

According to the definition above, M_{i,i} = 0. We arbitrarily set M_{i,i} to the mean recurrence time r_i for state i, that is the average number of transitions needed to return to state i starting from it. r_i is:

        1
r_i = -----
      \pi_i
Function File: M = dtmcfpt (P)

Compute mean first passage times and mean recurrence times for an irreducible discrete-time Markov chain over the state space {1, …, N}.

INPUTS

P(i,j)

transition probability from state i to state j. P must be an irreducible stochastic matrix, which means that the sum of each row must be 1 (\sum_{j=1}^N P_{i j} = 1), and the rank of P must be N.

OUTPUTS

M(i,j)

For all 1 ≤ i, j ≤ N, i \neq j, M(i,j) is the average number of transitions before state j is entered for the first time, starting from state i. M(i,i) is the mean recurrence time of state i, and represents the average time needed to return to state i.

REFERENCES

  • Grinstead, Charles M.; Snell, J. Laurie (July 1997). Introduction to Probability, Ch. 11: Markov Chains. American Mathematical Society. ISBN 978-0821807491.

See also: ctmcfpt.


3.2 Continuous-Time Markov Chains

A stochastic process {X(t), t ≥ 0} is a continuous-time Markov chain if, for all integers n, and for any sequence t_0, t_1 , …, t_n, t_{n+1} such that t_0 < t_1 < … < t_n < t_{n+1}, we have

P(X_{n+1} = x_{n+1} | X_n = x_n, X_{n-1} = x_{n-1}, ..., X_0 = x_0) = P(X_{n+1} = x_{n+1} | X_n = x_n)

A continuous-time Markov chain is defined according to an infinitesimal generator matrix {\bf Q} = [Q_{i,j}], where for each i \neq j, Q_{i, j} is the transition rate from state i to state j. The matrix \bf Q must satisfy the property that, for all i, \sum_{j=1}^N Q_{i, j} = 0.

Function File: [result err] = ctmcchkQ (Q)

If Q is a valid infinitesimal generator matrix, return the size (number of rows or columns) of Q. If Q is not an infinitesimal generator matrix, set result to zero, and err to an appropriate error string.

Similarly to the DTMC case, a CTMC is irreducible if every state is eventually reachable from every other state in finite time.

Function File: [r s] = ctmcisir (P)

Check if Q is irreducible, and identify Strongly Connected Components (SCC) in the transition graph of the DTMC with infinitesimal generator matrix Q.

INPUTS

Q(i,j)

Infinitesimal generator matrix. Q is a N \times N square matrix where Q(i,j) is the transition rate from state i to state j, for 1 ≤ i, j ≤ N, i \neq j.

OUTPUTS

r

1 if Q is irreducible, 0 otherwise.

s(i)

strongly connected component (SCC) that state i belongs to. SCCs are numbered 1, 2, …. If the graph is strongly connected, then there is a single SCC and the predicate all(s == 1) evaluates to true.


3.2.1 State occupancy probabilities

Similarly to the discrete case, we denote with {\bf \pi}(t) = \left[\pi_1(t), …, \pi_N(t) \right] the state occupancy probability vector at time t. \pi_i(t) is the probability that the system is in state i at time t ≥ 0.

Given the infinitesimal generator matrix \bf Q and initial state occupancy probabilities {\bf \pi}(0) = \left[\pi_1(0), …, \pi_N(0)\right], the occupancy probabilities {\bf \pi}(t) at time t can be computed as:

\pi(t) = \pi(0) exp(Qt)

where \exp( {\bf Q} t ) is the matrix exponential of {\bf Q} t. Under certain conditions, there exists a stationary state occupancy probability {\bf \pi} = \lim_{t \rightarrow +\infty} {\bf \pi}(t) that is independent from {\bf \pi}(0). \bf \pi is the solution of the following linear system:

/
| \pi Q   = 0
| \pi 1^T = 1
\
Function File: p = ctmc (Q)
Function File: p = ctmc (Q, t, p0)

Compute stationary or transient state occupancy probabilities for a continuous-time Markov chain.

With a single argument, compute the stationary state occupancy probabilities p(1), …, p(N) for a continuous-time Markov chain with finite state space {1, …, N} and N \times N infinitesimal generator matrix Q. With three arguments, compute the state occupancy probabilities p(1), …, p(N) that the system is in state i at time t, given initial state occupancy probabilities p0(1), …, p0(N) at time 0.

INPUTS

Q(i,j)

Infinitesimal generator matrix. Q is a N \times N square matrix where Q(i,j) is the transition rate from state i to state j, for 1 ≤ i \neq j ≤ N. Q must satisfy the property that \sum_{j=1}^N Q_{i, j} = 0

t

Time at which to compute the transient probability (t ≥ 0). If omitted, the function computes the steady state occupancy probability vector.

p0(i)

probability that the system is in state i at time 0.

OUTPUTS

p(i)

If this function is invoked with a single argument, p(i) is the steady-state probability that the system is in state i, i = 1, …, N. If this function is invoked with three arguments, p(i) is the probability that the system is in state i at time t, given the initial occupancy probabilities p0(1), …, p0(N).


See also: dtmc.

EXAMPLE

Consider a two-state CTMC where all transition rates between states are equal to 1. The stationary state occupancy probabilities can be computed as follows:

 Q = [ -1  1; ...
        1 -1  ];
 q = ctmc(Q)
    ⇒ q = 0.50000   0.50000

3.2.2 Birth-Death Process

Function File: Q = ctmcbd (b, d)

Returns the infinitesimal generator matrix Q for a continuous birth-death process over the finite state space {1, …, N}. For each i=1, …, (N-1), b(i) is the transition rate from state i to state (i+1), and d(i) is the transition rate from state (i+1) to state i.

Matrix \bf Q is therefore defined as:

/                                                          \
| -b(1)     b(1)                                           |
|  d(1) -(d(1)+b(2))     b(2)                              |
|           d(2)     -(d(2)+b(3))        b(3)              |
|                                                          |
|                ...           ...          ...            |
|                                                          |
|                       d(N-2)    -(d(N-2)+b(N-1))  b(N-1) |
|                                       d(N-1)     -d(N-1) |
\                                                          /

where \lambda_i and \mu_i are the birth and death rates, respectively.


See also: dtmcbd.


3.2.3 Expected Sojourn Times

Given a N state continuous-time Markov Chain with infinitesimal generator matrix \bf Q, we define the vector {\bf L}(t) = \left[L_1(t), …, L_N(t)\right] such that L_i(t) is the expected sojourn time in state i during the interval [0,t), assuming that the initial occupancy probabilities at time 0 were {\bf \pi}(0). {\bf L}(t) can be expressed as the solution of the following differential equation:

 dL
 --(t) = L(t) Q + pi(0),    L(0) = 0
 dt

Alternatively, {\bf L}(t) can also be expressed in integral form as:

       / t
L(t) = |   pi(u) du
       / 0

where {\bf \pi}(t) = {\bf \pi}(0) \exp({\bf Q}t) is the state occupancy probability at time t; \exp({\bf Q}t) is the matrix exponential of {\bf Q}t.

If there are absorbing states, we can define the vector of expected sojourn times until absorption {\bf L}(\infty), where for each transient state i, L_i(\infty) is the expected total time spent in state i until absorption, assuming that the system started with given state occupancy probabilities {\bf \pi}(0). Let \tau be the set of transient (i.e., non absorbing) states; let {\bf Q}_\tau be the restriction of \bf Q to the transient sub-states only. Similarly, let {\bf \pi}_\tau(0) be the restriction of the initial state occupancy probability vector {\bf \pi}(0) to transient states \tau.

The expected time to absorption {\bf L}_\tau(\infty) is defined as the solution of the following equation:

L_T( inf ) Q_T = -pi_T(0)
Function File: L = ctmcexps (Q, t, p )
Function File: L = ctmcexps (Q, p)

With three arguments, compute the expected times L(i) spent in each state i during the time interval [0,t], assuming that the initial occupancy vector is p. With two arguments, compute the expected time L(i) spent in each transient state i until absorption.

Note: In its current implementation, this function requires that an absorbing state is reachable from any non-absorbing state of Q.

INPUTS

Q(i,j)

N \times N infinitesimal generator matrix. Q(i,j) is the transition rate from state i to state j, 1 ≤ i, j ≤ N, i \neq j. The matrix Q must also satisfy the condition \sum_{j=1}^N Q_{i,j} = 0 for every i=1, …, N.

t

If given, compute the expected sojourn times in [0,t]

p(i)

Initial occupancy probability vector; p(i) is the probability the system is in state i at time 0, i = 1, …, N

OUTPUTS

L(i)

If this function is called with three arguments, L(i) is the expected time spent in state i during the interval [0,t]. If this function is called with two arguments L(i) is the expected time spent in transient state i until absorption; if state i is absorbing, L(i) is zero.


See also: dtmcexps.

EXAMPLE

Let us consider a 4-states pure birth continuous process where the transition rate from state i to state (i+1) is \lambda_i = i \lambda (i=1, 2, 3), with \lambda = 0.5. The following code computes the expected sojourn time for each state i, given initial occupancy probabilities {\bf \pi}_0=[1, 0, 0, 0].

 lambda = 0.5;
 N = 4;
 b = lambda*[1:N-1];
 d = zeros(size(b));
 Q = ctmcbd(b,d);
 t = linspace(0,10,100);
 p0 = zeros(1,N); p0(1)=1;
 L = zeros(length(t),N);
 for i=1:length(t)
   L(i,:) = ctmcexps(Q,t(i),p0);
 endfor
 plot( t, L(:,1), ";State 1;", "linewidth", 2, ...
       t, L(:,2), ";State 2;", "linewidth", 2, ...
       t, L(:,3), ";State 3;", "linewidth", 2, ...
       t, L(:,4), ";State 4;", "linewidth", 2 );
 legend("location","northwest"); legend("boxoff");
 xlabel("Time");
 ylabel("Expected sojourn time");

3.2.4 Time-Averaged Expected Sojourn Times

Function File: M = ctmctaexps (Q, t, p0)
Function File: M = ctmctaexps (Q, p0)

Compute the time-averaged sojourn time M(i), defined as the fraction of the time interval [0,t] (or until absorption) spent in state i, assuming that the state occupancy probabilities at time 0 are p.

INPUTS

Q(i,j)

Infinitesimal generator matrix. Q(i,j) is the transition rate from state i to state j, 1 ≤ i,j ≤ N, i \neq j. The matrix Q must also satisfy the condition \sum_{j=1}^N Q_{i,j} = 0

t

Time. If omitted, the results are computed until absorption.

p0(i)

initial state occupancy probabilities. p0(i) is the probability that the system is in state i at time 0, i = 1, …, N

OUTPUTS

M(i)

When called with three arguments, M(i) is the expected fraction of the interval [0,t] spent in state i assuming that the state occupancy probability at time zero is p. When called with two arguments, M(i) is the expected fraction of time until absorption spent in state i; in this case the mean time to absorption is sum(M).


See also: ctmcexps.

EXAMPLE

 lambda = 0.5;
 N = 4;
 birth = lambda*linspace(1,N-1,N-1);
 death = zeros(1,N-1);
 Q = diag(birth,1)+diag(death,-1);
 Q -= diag(sum(Q,2));
 t = linspace(1e-5,30,100);
 p = zeros(1,N); p(1)=1;
 M = zeros(length(t),N);
 for i=1:length(t)
   M(i,:) = ctmctaexps(Q,t(i),p);
 endfor
 clf;
 plot(t, M(:,1), ";State 1;", "linewidth", 2, ...
      t, M(:,2), ";State 2;", "linewidth", 2, ...
      t, M(:,3), ";State 3;", "linewidth", 2, ...
      t, M(:,4), ";State 4 (absorbing);", "linewidth", 2 );
 legend("location","east"); legend("boxoff");
 xlabel("Time");
 ylabel("Time-averaged Expected sojourn time");

3.2.5 Mean Time to Absorption

Function File: t = ctmcmtta (Q, p)

Compute the Mean-Time to Absorption (MTTA) of the CTMC described by the infinitesimal generator matrix Q, starting from initial occupancy probabilities p. If there are no absorbing states, this function fails with an error.

INPUTS

Q(i,j)

N \times N infinitesimal generator matrix. Q(i,j) is the transition rate from state i to state j, i \neq j. The matrix Q must satisfy the condition \sum_{j=1}^N Q_{i,j} = 0

p(i)

probability that the system is in state i at time 0, for each i=1, …, N

OUTPUTS

t

Mean time to absorption of the process represented by matrix Q. If there are no absorbing states, this function fails.

REFERENCES

  • G. Bolch, S. Greiner, H. de Meer and K. Trivedi, Queueing Networks and Markov Chains: Modeling and Performance Evaluation with Computer Science Applications, Wiley, 1998.

See also: ctmcexps.

EXAMPLE

Let us consider a simple model of redundant disk array. We assume that the array is made of 5 independent disks and can tolerate up to 2 disk failures without losing data. If three or more disks break, the array is dead and unrecoverable. We want to estimate the Mean-Time-To-Failure (MTTF) of the disk array.

We model this system as a 4 states continuous Markov chain with state space { 2, 3, 4, 5 }. In state i there are exactly i active (i.e., non failed) disks; state 2 is absorbing. Let \mu be the failure rate of a single disk. The system starts in state 5 (all disks are operational). We use a pure death process, where the death rate from state i to state (i-1) is \mu i, for i = 3, 4, 5).

The MTTF of the disk array is the MTTA of the Markov Chain, and can be computed as follows:

 mu = 0.01;
 death = [ 3 4 5 ] * mu;
 birth = 0*death;
 Q = ctmcbd(birth,death);
 t = ctmcmtta(Q,[0 0 0 1])
    ⇒ t = 78.333

3.2.6 First Passage Times

Function File: M = ctmcfpt (Q)
Function File: m = ctmcfpt (Q, i, j)

Compute mean first passage times for an irreducible continuous-time Markov chain.

INPUTS

Q(i,j)

Infinitesimal generator matrix. Q is a N \times N square matrix where Q(i,j) is the transition rate from state i to state j, for 1 ≤ i, j ≤ N, i \neq j. Transition rates must be nonnegative, and \sum_{j=1}^N Q_{i,j} = 0

i

Initial state.

j

Destination state.

OUTPUTS

M(i,j)

average time before state j is visited for the first time, starting from state i. We let M(i,i) = 0.

m

m is the average time before state j is visited for the first time, starting from state i.


See also: ctmcmtta.


Next: , Previous: , Up: Top   [Contents][Index]

4 Single Station Queueing Systems

Single Station Queueing Systems contain a single station, and can usually be analyzed easily. The queueing package contains functions for handling the following types of queues:


4.1 The M/M/1 System

The M/M/1 system contains a single server connected to an unbounded FCFS queue. Requests arrive according to a Poisson process with rate \lambda; the service time is exponentially distributed with average service rate \mu. The system is stable if \lambda < \mu.

Function File: [U, R, Q, X, p0] = qsmm1 (lambda, mu)
Function File: pk = qsmm1 (lambda, mu, k)

Compute utilization, response time, average number of requests and throughput for a M/M/1 queue.

INPUTS

lambda

Arrival rate (lambda ≥ 0).

mu

Service rate (mu > lambda).

k

Number of requests in the system (k ≥ 0).

OUTPUTS

U

Server utilization

R

Server response time

Q

Average number of requests in the system

X

Server throughput. If the system is ergodic (mu > lambda), we always have X = lambda

p0

Steady-state probability that there are no requests in the system.

pk

Steady-state probability that there are k requests in the system. (including the one being served).

If this function is called with less than three input parameters, lambda and mu can be vectors of the same size. In this case, the results will be vectors as well.

REFERENCES

  • G. Bolch, S. Greiner, H. de Meer and K. Trivedi, Queueing Networks and Markov Chains: Modeling and Performance Evaluation with Computer Science Applications, Wiley, 1998, Section 6.3

See also: qsmmm, qsmminf, qsmmmk.


4.2 The M/M/m System

The M/M/m system is similar to the M/M/1 system, except that there are m \geq 1 identical servers connected to a shared FCFS queue. Thus, at most m requests can be served at the same time. The M/M/m system can be seen as a single server with load-dependent service rate \mu(n), which is a function of the number n of requests in the system:

mu(n) = min(m,n)*mu

where \mu is the service rate of each individual server.

Function File: [U, R, Q, X, p0, pm] = qsmmm (lambda, mu)
Function File: [U, R, Q, X, p0, pm] = qsmmm (lambda, mu, m)
Function File: pk = qsmmm (lambda, mu, m, k)

Compute utilization, response time, average number of requests in service and throughput for a M/M/m queue, a queueing system with m identical servers connected to a single FCFS queue.

INPUTS

lambda

Arrival rate (lambda>0).

mu

Service rate (mu>lambda).

m

Number of servers (m ≥ 1). Default is m=1.

k

Number of requests in the system (k ≥ 0).

OUTPUTS

U

Service center utilization, U = \lambda / (m \mu).

R

Service center mean response time

Q

Average number of requests in the system

X

Service center throughput. If the system is ergodic, we will always have X = lambda

p0

Steady-state probability that there are 0 requests in the system

pm

Steady-state probability that an arriving request has to wait in the queue

pk

Steady-state probability that there are k requests in the system (including the one being served).

If this function is called with less than four parameters, lambda, mu and m can be vectors of the same size. In this case, the results will be vectors as well.

REFERENCES

  • G. Bolch, S. Greiner, H. de Meer and K. Trivedi, Queueing Networks and Markov Chains: Modeling and Performance Evaluation with Computer Science Applications, Wiley, 1998, Section 6.5

See also: erlangc,qsmm1,qsmminf,qsmmmk.


4.3 The Erlang-B Formula

Function File: B = erlangb (A, m)

Compute the steady-state blocking probability in the Erlang loss model.

The Erlang-B formula E_B(A, m) gives the probability that an open system with m identical servers, arrival rate \lambda, individual service rate \mu and offered load A = \lambda / \mu has all servers busy. This corresponds to the rejection probability of an M/M/m/0 system with m servers and no queue.

INPUTS

A

Offered load, defined as A = \lambda / \mu where \lambda is the mean arrival rate and \mu the mean service rate of each individual server (real, A > 0).

m

Number of identical servers (integer, m ≥ 1). Default m = 1

OUTPUTS

B

The value E_B(A, m)

A or m can be vectors, and in this case, the results will be vectors as well.

REFERENCES

  • G. Zeng, Two common properties of the Erlang-B function, Erlang-C function, and Engset blocking function, Mathematical and Computer Modelling, Volume 37, Issues 12-13, June 2003, Pages 1287-1296

See also: erlangc,engset,qsmmm.


4.4 The Erlang-C Formula

Function File: C = erlangc (A, m)

Compute the steady-state probability of delay in the Erlang delay model.

The Erlang-C formula E_C(A, m) gives the probability that an open queueing system with m identical servers, infinite wating space, arrival rate \lambda, individual service rate \mu and offered load A = \lambda / \mu has all the servers busy. This is the waiting probability in an M/M/m/\infty system with m servers and an infinite queue.

INPUTS

A

Offered load. A = \lambda / \mu where \lambda is the mean arrival rate and \mu the mean service rate of each individual server (real, 0 < A < m).

m

Number of identical servers (integer, m ≥ 1). Default m = 1

OUTPUTS

B

The value E_C(A, m)

A or m can be vectors, and in this case, the results will be vectors as well.

REFERENCES

  • G. Zeng, Two common properties of the Erlang-B function, Erlang-C function, and Engset blocking function, Mathematical and Computer Modelling, Volume 37, Issues 12-13, June 2003, Pages 1287-1296

See also: erlangb,engset,qsmmm.


4.5 The Engset Formula

Function File: B = engset (A, m, n)

Evaluate the Engset loss formula.

The Engset formula computes the blocking probability P_b(A,m,n) for a system with a finite population of n users, m identical servers, no queue, individual service rate \mu, individual arrival rate \lambda (i.e., the time until a user tries to request service is exponentially distributed with mean 1/\lambda), and offered load A=\lambda/\mu.

INPUTS

A

Offered load, defined as A = \lambda / \mu where \lambda is the mean arrival rate and \mu the mean service rate of each individual server (real, A > 0).

m

Number of identical servers (integer, m ≥ 1). Default m = 1

n

Number of requests (integer, n ≥ 1). Default n = 1

OUTPUTS

B

The value P_b(A, m, n)

A, m or n can be vectors, and in this case, the results will be vectors as well.

REFERENCES

  • G. Zeng, Two common properties of the Erlang-B function, Erlang-C function, and Engset blocking function, Mathematical and Computer Modelling, Volume 37, Issues 12-13, June 2003, Pages 1287-1296

See also: erlangb, erlangc.


4.6 The M/M/inf System

The M/M/\infty system is a special case of M/M/m system with infinitely many identical servers (i.e., m = \infty). Each new request is always assigned to a new server, so that queueing never occurs. The M/M/\infty system is always stable.

Function File: [U, R, Q, X, p0] = qsmminf (lambda, mu)
Function File: pk = qsmminf (lambda, mu, k)

Compute utilization, response time, average number of requests and throughput for an infinite-server queue.

The M/M/\infty system has an infinite number of identical servers. Such a system is always stable (i.e., the mean queue length is always finite) for any arrival and service rates.

INPUTS

lambda

Arrival rate (lambda>0).

mu

Service rate (mu>0).

k

Number of requests in the system (k ≥ 0).

OUTPUTS

U

Traffic intensity (defined as \lambda/\mu). Note that this is different from the utilization, which in the case of M/M/\infty centers is always zero.

R

Service center response time.

Q

Average number of requests in the system (which is equal to the traffic intensity \lambda/\mu).

X

Throughput (which is always equal to X = lambda).

p0

Steady-state probability that there are no requests in the system

pk

Steady-state probability that there are k requests in the system (including the one being served).

If this function is called with less than three arguments, lambda and mu can be vectors of the same size. In this case, the results will be vectors as well.

REFERENCES

  • G. Bolch, S. Greiner, H. de Meer and K. Trivedi, Queueing Networks and Markov Chains: Modeling and Performance Evaluation with Computer Science Applications, Wiley, 1998, Section 6.4

See also: qsmm1,qsmmm,qsmmmk.


4.7 The M/M/1/K System

In a M/M/1/K finite capacity system there is a single server, and there can be at most K jobs at any time (including the job currently in service), K > 1. If a new request tries to join the system when there are already K other requests, the request is lost. The queue has K-1 slots. The M/M/1/K system is always stable, regardless of the arrival and service rates.

Function File: [U, R, Q, X, p0, pK] = qsmm1k (lambda, mu, K)
Function File: pn = qsmm1k (lambda, mu, K, n)

Compute utilization, response time, average number of requests and throughput for a M/M/1/K finite capacity system.

In a M/M/1/K queue there is a single server and a queue with finite capacity: the maximum number of requests in the system (including the request being served) is K, and the maximum queue length is therefore K-1.

INPUTS

lambda

Arrival rate (lambda>0).

mu

Service rate (mu>0).

K

Maximum number of requests allowed in the system (K ≥ 1).

n

Number of requests in the (0 ≤ n ≤ K).

OUTPUTS

U

Service center utilization, which is defined as U = 1-p0

R

Service center response time

Q

Average number of requests in the system

X

Service center throughput

p0

Steady-state probability that there are no requests in the system

pK

Steady-state probability that there are K requests in the system (i.e., that the system is full)

pn

Steady-state probability that there are n requests in the system (including the one being served).

If this function is called with less than four arguments, lambda, mu and K can be vectors of the same size. In this case, the results will be vectors as well.


See also: qsmm1,qsmminf,qsmmm.


4.8 The M/M/m/K System

The M/M/m/K finite capacity system is similar to the M/M/1/k system except that the number of servers is m, where 1 \leq m \leq K. The queue has K-m slots. The M/M/m/K system is always stable.

Function File: [U, R, Q, X, p0, pK] = qsmmmk (lambda, mu, m, K)
Function File: pn = qsmmmk (lambda, mu, m, K, n)

Compute utilization, response time, average number of requests and throughput for a M/M/m/K finite capacity system. In a M/M/m/K system there are m \geq 1 identical service centers sharing a fixed-capacity queue. At any time, at most K ≥ m requests can be in the system, including those being served. The maximum queue length is K-m. This function generates and solves the underlying CTMC.

INPUTS

lambda

Arrival rate (lambda>0)

mu

Service rate (mu>0)

m

Number of servers (m ≥ 1)

K

Maximum number of requests allowed in the system, including those being served (Km)

n

Number of requests in the (0 ≤ n ≤ K).

OUTPUTS

U

Service center utilization

R

Service center response time

Q

Average number of requests in the system

X

Service center throughput

p0

Steady-state probability that there are no requests in the system.

pK

Steady-state probability that there are K requests in the system (i.e., probability that the system is full).

pn

Steady-state probability that there are n requests in the system (including those being served).

If this function is called with less than five arguments, lambda, mu, m and K can be either scalars, or vectors of the same size. In this case, the results will be vectors as well.

REFERENCES

  • G. Bolch, S. Greiner, H. de Meer and K. Trivedi, Queueing Networks and Markov Chains: Modeling and Performance Evaluation with Computer Science Applications, Wiley, 1998, Section 6.6

See also: qsmm1,qsmminf,qsmmm.


4.9 The Asymmetric M/M/m System

The Asymmetric M/M/m system contains m servers connected to a single queue. Differently from the M/M/m system, in the asymmetric M/M/m each server may have a different service time.

Function File: [U, R, Q, X] = qsammm (lambda, mu)

Compute approximate utilization, response time, average number of requests in service and throughput for an asymmetric M/M/m queue. In this type of system there are m different servers connected to a single queue. Each server has its own (possibly different) service rate. If there is more than one server available, requests are routed to a randomly-chosen one.

INPUTS

lambda

Arrival rate (lambda>0)

mu

mu(i) is the service rate of server i, 1 ≤ i ≤ m. The system must be ergodic (lambda < sum(mu)).

OUTPUTS

U

Approximate service center utilization, U = \lambda / ( \sum_{i=1}^m \mu_i ).

R

Approximate service center response time

Q

Approximate number of requests in the system

X

Approximate system throughput. If the system is ergodic, X = lambda

REFERENCES

  • G. Bolch, S. Greiner, H. de Meer and K. Trivedi, Queueing Networks and Markov Chains: Modeling and Performance Evaluation with Computer Science Applications, Wiley, 1998

See also: qsmmm.


4.10 The M/G/1 System

Function File: [U, R, Q, X, p0] = qsmg1 (lambda, xavg, x2nd)

Compute utilization, response time, average number of requests and throughput for a M/G/1 system. The service time distribution is described by its mean xavg, and by its second moment x2nd. The computations are based on results from L. Kleinrock, Queuing Systems, Wiley, Vol 2, and Pollaczek-Khinchine formula.

INPUTS

lambda

Arrival rate

xavg

Average service time

x2nd

Second moment of service time distribution

OUTPUTS

U

Service center utilization

R

Service center response time

Q

Average number of requests in the system

X

Service center throughput

p0

Probability that there is not any request at system

lambda, xavg, t2nd can be vectors of the same size. In this case, the results will be vectors as well.


See also: qsmh1.


4.11 The M/H_m/1 System

Function File: [U, R, Q, X, p0] = qsmh1 (lambda, mu, alpha)

Compute utilization, response time, average number of requests and throughput for a M/H_m/1 system. In this system, the customer service times have hyper-exponential distribution:

       ___ m
       \
B(x) =  >  alpha(j) * (1-exp(-mu(j)*x))   x>0
       /__ 
           j=1

where \alpha_j is the probability that the request is served at phase j, in which case the average service rate is \mu_j. After completing service at phase j, for some j, the request exits the system.

INPUTS

lambda

Arrival rate

mu

mu(j) is the phase j service rate. The total number of phases m is length(mu).

alpha

alpha(j) is the probability that a request is served at phase j. alpha must have the same size as mu.

OUTPUTS

U

Service center utilization

R

Service center response time

Q

Average number of requests in the system

X

Service center throughput


5 Queueing Networks


5.1 Introduction to QNs

Queueing Networks (QN) are a simple modeling notation that can be used to analyze many kinds of systems. In its simplest form, a QN is made of K service centers; center k has a queue connected to m_k (usually identical) servers. Arriving customers (requests) join the queue if there is at least one slot available. Requests are served according to a (de)queueing policy (e.g., FIFO). After service completes, requests leave the server and can join another queue or exit from the system.

Service centers where m_k = \infty are called delay centers or infinite servers. In this kind of centers, there is always one available server, so that queueing never occurs.

Requests join the queue according to a queueing policy, such as:

FCFS

First-Come-First-Served

LCFS-PR

Last-Come-First-Served, Preemptive Resume

PS

Processor Sharing

IS

Infinite Server (m_k = \infty).

Queueing networks can be open or closed. In open networks there is an infinite population of requests; new customers are generated outside the system, and eventually leave the network. In closed networks there is a fixed population of request that never leave the system.

Queueing models can have a single request class (single class models), meaning that all requests behave in the same way (e.g., they spend the same average time on each particular server). In multiple class models there are multiple request classes, each with its own parameters (e.g., with different service times or different routing probabilities). Furthermore, in multiclass models there can be open and closed chains of requests at the same time.

A particular class of QN models, product-form networks, is of particular interest. Product-form networks fulfill the following assumptions:

  • The network can consist of open and closed job classes.
  • The following queueing disciplines are allowed: FCFS, PS, LCFS-PR and IS.
  • Service times for FCFS nodes must be exponentially distributed and class-independent. Service centers at PS, LCFS-PR and IS nodes can have any kind of service time distribution with a rational Laplace transform. Furthermore, for PS, LCFS-PR and IS nodes, different classes of customers can have different service times.
  • The service rate of an FCFS node is only allowed to depend on the number of jobs at this node; in a PS, LCFS-PR and IS node the service rate for a particular job class can also depend on the number of jobs of that class at the node.
  • In open networks two kinds of arrival processes are allowed: i) the arrival process is Poisson, with arrival rate \lambda that can depend on the number of jobs in the network. ii) the arrival process consists of C independent Poisson arrival streams where the C job sources are assigned to the C chains; the arrival rate can be load dependent.

Product-form networks are attractive because steady-state performance measures can be efficiently computed.


5.2 Single Class Models

In single class models, all requests are indistinguishable and belong to the same class. This means that every request has the same average service time, and all requests move through the system with the same routing probabilities.

Model Inputs

{lambda}_k

(Open models only) External arrival rate to service center k.

lambda

(Open models only) Overall external arrival rate to the system as a whole: \lambda = \sum_k \lambda_k.

N

(Closed models only) Total number of requests in the system.

S_k

Mean service time at center k. S_k is the average time elapsed from service start to service completion at center k.

P_{i, j}

Routing probability matrix. {\bf P} = [P_{i, j}] is a K \times K matrix where P_{i, j} is the probability that a request completing service at center i is routed to center j. The probability that a request leaves the system after being served at center i is \left(1-\sum_{j=1}^K P_{i, j}\right).

V_k

Mean number of visits to center k (also called visit ratio or relative arrival rate).

Model Outputs

U_k

Utilization of service center k. The utilization is defined as the fraction of time in which the resource is busy (i.e., the server is processing requests). If center k is a single-server or multiserver node, then 0 ≤ U_k ≤ 1. If center k is an infinite server node (delay center), then U_k denotes the traffic intensity and is defined as U_k = X_k S_k; in this case the utilization may be greater than one.

R_k

Average response time of service center k, defined as the mean time between the arrival of a request in the queue and service completion of the same request.

Q_k

Average number of requests in center k; this includes both the requests in the queue and those being served.

X_k

Throughput of service center k. The throughput is the rate of job completions, i.e., the average number of jobs completed over a given time interval.

Given the output parameters above, additional performance measures can be computed:

X

System throughput, X = X_k / V_k for any k for which V_k \neq 0

R

System response time, R = \sum_{k=1}^K R_k V_k

Q

Average number of requests in the system, Q = \sum_{k=1}^K Q_k; for closed systems, this can be written as Q = N-XZ;

For open, single class models, the scalar \lambda denotes the external arrival rate of requests to the system. The average number of visits V_j satisfy the following equation:

                  K
                 ___
                \
V_j = P_(0, j) + >   V_i P_(i, j)    j=1,...,K
                /___
                 i=1

where P_{0, j} is the probability that an external request goes to center j. If we denote with \lambda_j the external arrival rate to center j, and \lambda = \sum_j \lambda_j the overall external arrival rate, then P_{0, j} = \lambda_j / \lambda.

For closed models, the visit ratios satisfy the following equation:

/
|         K
|        ___
|       \
| V_j =  >   V_i P_(i, j)     j=1,...,K
|       /___
|        i=1
|
| V_r = 1                     for a selected reference station r
\

Note that the set of traffic equations V_j = \sum_{i=1}^K V_i P_{i, j} alone can only be solved up to a multiplicative constant; to get a unique solution we impose an additional constraint V_r = 1 for some 1 ≤ r ≤ K. This constraint is equivalent to defining station r as the reference station; the default is r=1, see doc-qncsvisits. A job that returns to the reference station is assumed to have completed its activity cycle. The network throughput is set to the throughput of the reference station.

Function File: V = qncsvisits (P)
Function File: V = qncsvisits (P, r)

Compute the mean number of visits to the service centers of a single class, closed network with K service centers.

INPUTS

P(i,j)

probability that a request which completed service at center i is routed to center j (K \times K matrix). For closed networks it must hold that sum(P,2)==1. The routing graph must be strongly connected, meaning that each node must be reachable from every other node.

r

Index of the reference station, r \in {1, …, K}; Default r=1. The traffic equations are solved by imposing the condition V(r) = 1. A request returning to the reference station completes its activity cycle.

OUTPUTS

V(k)

average number of visits to service center k, assuming r as the reference station.

Function File: V = qnosvisits (P, lambda)

Compute the average number of visits to the service centers of a single class open Queueing Network with K service centers.

INPUTS

P(i,j)

is the probability that a request which completed service at center i is routed to center j (K \times K matrix).

lambda(k)

external arrival rate to center k.

OUTPUTS

V(k)

average number of visits to server k.

EXAMPLE

qn_closed_single

Figure 5.1: Closed network with a single class of requests

Figure 5.1 shows a closed queueing network with a single class of requests. The network has three service centers, labeled CPU, Disk1 and Disk2, and is known as a central server model of a computer system. Requests spend some time at the CPU, which is represented by a PS (Processor Sharing) node. After that, requests are routed to Disk1 with probability 0.3, and to Disk2 with probability 0.7. Both Disk1 and Disk2 are FCFS nodes.

If we label the servers as CPU=1, Disk1=2, Disk2=3, we can define the routing matrix as follows:

    / 0  0.3  0.7 \
P = | 1  0    0   |
    \ 1  0    0   /

The visit ratios V, using station 1 as the reference station, can be computed with:

 P = [0 0.3 0.7; ...
      1 0   0  ; ...
      1 0   0  ];
 V = qncsvisits(P)
   ⇒ V = 1.00000   0.30000   0.70000

EXAMPLE

qn_open_single

Figure 5.2: Open Queueing Network with a single class of requests

Figure 5.2 shows a open QN with a single class of requests. The network has the same structure as the one in Figure 5.1, with the difference that here we have a stream of jobs arriving from outside the system, at a rate \lambda. After service completion at the CPU, a job can leave the system with probability 0.2, or be transferred to other nodes with the probabilities shown in the figure.

The routing matrix is

    / 0  0.3  0.5 \
P = | 1  0    0   |
    \ 1  0    0   /

If we let \lambda = 1.2, we can compute the visit ratios V as follows:

 p = 0.3;
 lambda = 1.2
 P = [0 0.3 0.5; ...
      1 0   0  ; ...
      1 0   0  ];
 V = qnosvisits(P,[1.2 0 0])
   ⇒ V = 5.0000   1.5000   2.5000

Function qnosvisits expects a vector with K elements as a second parameter, for open networks only. The vector contains the arrival rates at each individual node; since in our example external arrivals exist only for node S_1 with rate \lambda = 1.2, the second parameter is [1.2, 0, 0].

5.2.1 Open Networks

Jackson networks satisfy the following conditions:

  • There is only one job class in the network; the total number of jobs in the system is unbounded.
  • There are K service centers in the network. Each service center may have Poisson arrivals from outside the system. A job can leave the system from any node.
  • Arrival rates as well as routing probabilities are independent from the number of nodes in the network.
  • External arrivals and service times at the service centers are exponentially distributed, and in general can be load-dependent.
  • Service discipline at each node is FCFS

We define the joint probability vector \pi(n_1, …, n_K) as the steady-state probability that there are n_k requests at service center k, for all k=1, …, N. Jackson networks have the property that the joint probability is the product of the marginal probabilities \pi_k:

joint_prob = prod( pi )

where \pi_k(n_k) is the steady-state probability that there are n_k requests at service center k.

Function File: [U, R, Q, X] = qnos (lambda, S, V)
Function File: [U, R, Q, X] = qnos (lambda, S, V, m)

Analyze open, single class BCMP queueing networks with K service centers.

This function works for a subset of BCMP single-class open networks satisfying the following properties:

  • The allowed service disciplines at network nodes are: FCFS, PS, LCFS-PR, IS (infinite server);
  • Service times are exponentially distributed and load-independent;
  • Center k can consist of m(k) ≥ 1 identical servers.
  • Routing is load-independent

INPUTS

lambda

Overall external arrival rate (lambda>0).

S(k)

average service time at center k (S(k)>0).

V(k)

average number of visits to center k (V(k) ≥ 0).

m(k)

number of servers at center i. If m(k) < 1, enter k is a delay center (IS); otherwise it is a regular queueing center with m(k) servers. Default is m(k) = 1 for all k.

OUTPUTS

U(k)

If k is a queueing center, U(k) is the utilization of center k. If k is an IS node, then U(k) is the traffic intensity defined as X(k)*S(k).

R(k)

center k average response time.

Q(k)

average number of requests at center k.

X(k)

center k throughput.

REFERENCES

  • G. Bolch, S. Greiner, H. de Meer and K. Trivedi, Queueing Networks and Markov Chains: Modeling and Performance Evaluation with Computer Science Applications, Wiley, 1998

See also: qnopen,qnclosed,qnosvisits.

From the results computed by this function, it is possible to derive other quantities of interest as follows:

  • System Response Time: The overall system response time can be computed as R_s = dot(V,R);
  • Average number of requests: The average number of requests in the system can be computed as: Q_avg = sum(Q)

EXAMPLE

 lambda = 3;
 V = [16 7 8];
 S = [0.01 0.02 0.03];
 [U R Q X] = qnos( lambda, S, V );
 R_s = dot(R,V) # System response time
 N = sum(Q) # Average number in system
-| R_s =  1.4062
-| N =  4.2186

5.2.2 Closed Networks

Function File: [U, R, Q, X, G] = qncsmva (N, S, V)
Function File: [U, R, Q, X, G] = qncsmva (N, S, V, m)
Function File: [U, R, Q, X, G] = qncsmva (N, S, V, m, Z)

Analyze closed, single class queueing networks using the exact Mean Value Analysis (MVA) algorithm.

The following queueing disciplines are supported: FCFS, LCFS-PR, PS and IS (Infinite Server). This function supports fixed-rate service centers or multiple server nodes. For general load-dependent service centers, use the function qncsmvald instead.

Additionally, the normalization constant G(n), n=0, …, N is computed; G(n) can be used in conjunction with the BCMP theorem to compute steady-state probabilities.

INPUTS

N

Population size (number of requests in the system, N ≥ 0). If N == 0, this function returns U = R = Q = X = 0

S(k)

mean service time at center k (S(k) ≥ 0).

V(k)

average number of visits to service center k (V(k) ≥ 0).

Z

External delay for customers (Z ≥ 0). Default is 0.

m(k)

number of servers at center k (if m is a scalar, all centers have that number of servers). If m(k) < 1, center k is a delay center (IS); otherwise it is a regular queueing center (FCFS, LCFS-PR or PS) with m(k) servers. Default is m(k) = 1 for all k (each service center has a single server).

OUTPUTS

U(k)

If k is a FCFS, LCFS-PR or PS node (m(k) ≥ 1), then U(k) is the utilization of center k, 0 ≤ U(k) ≤ 1. If k is an IS node (m(k) < 1), then U(k) is the traffic intensity defined as X(k)*S(k). In this case the value of U(k) may be greater than one.

R(k)

center k response time. The Residence Time at center k is R(k) * V(k). The system response time Rsys can be computed either as Rsys = N/Xsys - Z or as Rsys = dot(R,V)

Q(k)

average number of requests at center k. The number of requests in the system can be computed either as sum(Q), or using the formula N-Xsys*Z.

X(k)

center K throughput. The system throughput Xsys can be computed as Xsys = X(1) / V(1)

G(n)

Normalization constants. G(n+1) contains the value of the normalization constant G(n), n=0, …, N as array indexes in Octave start from 1. G(n) can be used in conjunction with the BCMP theorem to compute steady-state probabilities.

NOTES

In presence of load-dependent servers (i.e., if m(k)>1 for some k), the MVA algorithm is known to be numerically unstable. Generally, this issue manifests itself as negative values for the response times or utilizations. This is not a problem of the queueing toolbox, but of the MVA algorithm, and has currently no known solution. This function prints a warning if numerical problems are detected; the warning can be disabled with the command warning("off", "qn:numerical-instability").

REFERENCES

  • M. Reiser and S. S. Lavenberg, Mean-Value Analysis of Closed Multichain Queuing Networks, Journal of the ACM, vol. 27, n. 2, April 1980, pp. 313–322. 10.1145/322186.322195

This implementation is described in R. Jain , The Art of Computer Systems Performance Analysis, Wiley, 1991, p. 577. Multi-server nodes are treated according to G. Bolch, S. Greiner, H. de Meer and K. Trivedi, Queueing Networks and Markov Chains: Modeling and Performance Evaluation with Computer Science Applications, Wiley, 1998, Section 8.2.1, "Single Class Queueing Networks".


See also: qncsmvald,qncscmva.

EXAMPLE

 S = [ 0.125 0.3 0.2 ];
 V = [ 16 10 5 ];
 N = 20;
 m = ones(1,3);
 Z = 4;
 [U R Q X] = qncsmva(N,S,V,m,Z);
 X_s = X(1)/V(1); # System throughput
 R_s = dot(R,V); # System response time
 printf("\t    Util      Qlen     RespT      Tput\n");
 printf("\t--------  --------  --------  --------\n");
 for k=1:length(S)
   printf("Dev%d\t%8.4f  %8.4f  %8.4f  %8.4f\n", k, U(k), Q(k), R(k), X(k) );
 endfor
 printf("\nSystem\t          %8.4f  %8.4f  %8.4f\n\n", N-X_s*Z, R_s, X_s );
Function File: [U, R, Q, X] = qncsmvald (N, S, V)
Function File: [U, R, Q, X] = qncsmvald (N, S, V, Z)

Mean Value Analysis algorithm for closed, single class queueing networks with K service centers and load-dependent service times. This function supports FCFS, LCFS-PR, PS and IS nodes. For networks with only fixed-rate centers and multiple-server nodes, the function qncsmva is more efficient.

INPUTS

N

Population size (number of requests in the system, N ≥ 0). If N == 0, this function returns U = R = Q = X = 0

S(k,n)

mean service time at center k where there are n requests, 1 ≤ n ≤ N. S(k,n) = 1 / \mu_{k}(n), where \mu_{k}(n) is the service rate of center k when there are n requests.

V(k)

average number of visits to service center k (V(k) ≥ 0).

Z

external delay ("think time", Z ≥ 0); default 0.

OUTPUTS

U(k)

utilization of service center k. The utilization is defined as the probability that service center k is not empty, that is, U_k = 1-\pi_k(0) where \pi_k(0) is the steady-state probability that there are 0 jobs at service center k.

R(k)

response time on service center k.

Q(k)

average number of requests in service center k.

X(k)

throughput of service center k.

NOTES

In presence of load-dependent servers, the MVA algorithm is known to be numerically unstable. Generally this problem manifests itself as negative response times or utilization.

REFERENCES

  • M. Reiser and S. S. Lavenberg, Mean-Value Analysis of Closed Multichain Queuing Networks, Journal of the ACM, vol. 27, n. 2, April 1980, pp. 313–322. 10.1145/322186.322195

This implementation is described in G. Bolch, S. Greiner, H. de Meer and K. Trivedi, Queueing Networks and Markov Chains: Modeling and Performance Evaluation with Computer Science Applications, Wiley, 1998, Section 8.2.4.1, “Networks with Load-Dependent Service: Closed Networks”.


See also: qncsmva.

Function File: [U, R, Q, X] = qncscmva (N, S, Sld, V)
Function File: [U, R, Q, X] = qncscmva (N, S, Sld, V, Z)

Conditional MVA (CMVA) algorithm, a numerically stable variant of MVA. This function supports a network of M ≥ 1 service centers and a single delay center. Servers 1, …, (M-1) are load-independent; server M is load-dependent.

INPUTS

N

Number of requests in the system, N ≥ 0. If N == 0, this function returns U = R = Q = X = 0

S(k)

mean service time on server k = 1, …, (M-1) (S(k) > 0). If there are no fixed-rate servers, then S = []

Sld(n)

inverse service rate at server M (the load-dependent server) when there are n requests, n=1, …, N. Sld(n) = 1 / \mu(n).

V(k)

average number of visits to service center k=1, …, M, where V(k) ≥ 0. V(1:M-1) are the visit rates to the fixed rate servers; V(M) is the visit rate to the load dependent server.

Z

External delay for customers (Z ≥ 0). Default is 0.

OUTPUTS

U(k)

center k utilization (k=1, …, M)

R(k)

response time of center k (k=1, …, M). The system response time Rsys can be computed as Rsys = N/Xsys - Z

Q(k)

average number of requests at center k (k=1, …, M).

X(k)

center k throughput (k=1, …, M).

REFERENCES

  • G. Casale. A note on stable flow-equivalent aggregation in closed networks. Queueing Syst. Theory Appl., 60:193–-202, December 2008, 10.1007/s11134-008-9093-6
Function File: [U, R, Q, X] = qncsmvaap (N, S, V)
Function File: [U, R, Q, X] = qncsmvaap (N, S, V, m)
Function File: [U, R, Q, X] = qncsmvaap (N, S, V, m, Z)
Function File: [U, R, Q, X] = qncsmvaap (N, S, V, m, Z, tol)
Function File: [U, R, Q, X] = qncsmvaap (N, S, V, m, Z, tol, iter_max)

Analyze closed, single class queueing networks using the Approximate Mean Value Analysis (MVA) algorithm. This function is based on approximating the number of customers seen at center k when a new request arrives as Q_k(N) \times (N-1)/N. This function only handles single-server and delay centers; if your network contains general load-dependent service centers, use the function qncsmvald instead.

INPUTS

N

Population size (number of requests in the system, N > 0).

S(k)

mean service time on server k (S(k)>0).

V(k)

average number of visits to service center k (V(k) ≥ 0).

m(k)

number of servers at center k (if m is a scalar, all centers have that number of servers). If m(k) < 1, center k is a delay center (IS); if m(k) == 1, center k is a regular queueing center (FCFS, LCFS-PR or PS) with one server (default). This function does not support multiple server nodes (m(k) > 1).

Z

External delay for customers (Z ≥ 0). Default is 0.

tol

Stopping tolerance. The algorithm stops when the maximum relative difference between the new and old value of the queue lengths Q becomes less than the tolerance. Default is 10^{-5}.

iter_max

Maximum number of iterations (iter_max>0. The function aborts if convergenge is not reached within the maximum number of iterations. Default is 100.

OUTPUTS

U(k)

If k is a FCFS, LCFS-PR or PS node (m(k) == 1), then U(k) is the utilization of center k. If k is an IS node (m(k) < 1), then U(k) is the traffic intensity defined as X(k)*S(k).

R(k)

response time at center k. The system response time Rsys can be computed as Rsys = N/Xsys - Z

Q(k)

average number of requests at center k. The number of requests in the system can be computed either as sum(Q), or using the formula N-Xsys*Z.

X(k)

center k throughput. The system throughput Xsys can be computed as Xsys = X(1) / V(1)

REFERENCES

This implementation is based on Edward D. Lazowska, John Zahorjan, G. Scott Graham, and Kenneth C. Sevcik, Quantitative System Performance: Computer System Analysis Using Queueing Network Models, Prentice Hall, 1984. http://www.cs.washington.edu/homes/lazowska/qsp/. In particular, see section 6.4.2.2 ("Approximate Solution Techniques").


See also: qncsmva,qncsmvald.

According to the BCMP theorem, the state probability of a closed single class queueing network with K nodes and N requests can be expressed as:

n = [n1, … nK]; population vector
p = 1/G(N+1) \prod F(k,k);

Here \pi(n_1, …, n_K) is the joint probability of having n_k requests at node k, for all k=1, …, K; we have that \sum_{k=1}^K n_k = N

The convolution algorithms computes the normalization constants {\bf G} = \left[G(0), …, G(N)\right] for single-class, closed networks with N requests. The normalization constants are returned as vector G=[G(1), … G(N+1)] where G(i+1) is the value of G(i) (remember that Octave uses 1-base vectors). The normalization constant can be used to compute all performance measures of interest (utilization, average response time and so on).

queueing implements the convolution algorithm, in the function qncsconv and qncsconvld. The first one supports single-station nodes, multiple-station nodes and IS nodes. The second one supports networks with general load-dependent service centers.

Function File: [U, R, Q, X, G] = qncsconv (N, S, V)
Function File: [U, R, Q, X, G] = qncsconv (N, S, V, m)

Analyze product-form, single class closed networks with K service centers using the convolution algorithm.

Load-independent service centers, multiple servers (M/M/m queues) and IS nodes are supported. For general load-dependent service centers, use qncsconvld instead.

INPUTS

N

Number of requests in the system (N>0).

S(k)

average service time on center k (S(k) ≥ 0).

V(k)

visit count of service center k (V(k) ≥ 0).

m(k)

number of servers at center k. If m(k) < 1, center k is a delay center (IS); if m(k) ≥ 1, center k it is a regular M/M/m queueing center with m(k) identical servers. Default is m(k) = 1 for all k.

OUTPUT

U(k)

center k utilization. For IS nodes, U(k) is the traffic intensity X(k) * S(k).

R(k)

average response time of center k.

Q(k)

average number of customers at center k.

X(k)

throughput of center k.

G(n)

Vector of normalization constants. G(n+1) contains the value of the normalization constant with n requests G(n), n=0, …, N.

NOTE

For a network with K service centers and N requests, this implementation of the convolution algorithm has time and space complexity O(NK).

REFERENCES

  • Jeffrey P. Buzen, Computational Algorithms for Closed Queueing Networks with Exponential Servers, Communications of the ACM, volume 16, number 9, September 1973, pp. 527–531. 10.1145/362342.362345

This implementation is based on G. Bolch, S. Greiner, H. de Meer and K. Trivedi, Queueing Networks and Markov Chains: Modeling and Performance Evaluation with Computer Science Applications, Wiley, 1998, pp. 313–317.


See also: qncsconvld.

EXAMPLE

The normalization constant G can be used to compute the steady-state probabilities for a closed single class product-form Queueing Network with K nodes and N requests. Let n = [n_1, …, n_K] be a valid population vector, \sum_{k=1}^K n_k = N. Then, the steady-state probability p(k) to have n(k) requests at service center k can be computed as:

 n = [1 2 0];
 N = sum(n); # Total population size
 S = [ 1/0.8 1/0.6 1/0.4 ];
 m = [ 2 3 1 ];
 V = [ 1 .667 .2 ];
 [U R Q X G] = qncsconv( N, S, V, m );
 p = [0 0 0]; # initialize p
 # Compute the probability to have n(k) jobs at service center k
 for k=1:3
   p(k) = (V(k)*S(k))^n(k) / G(N+1) * ...
          (G(N-n(k)+1) - V(k)*S(k)*G(N-n(k)) );
   printf("Prob( n(%d) = %d )=%f\n", k, n(k), p(k) );
 endfor
-| Prob( n(1) = 1 ) = 0.17975
-| Prob( n(2) = 2 ) = 0.48404
-| Prob( n(3) = 0 ) = 0.52779

(recall that G(N+1) represents G(N), since in Octave array indices start at one).

Function File: [U, R, Q, X, G] = qncsconvld (N, S, V)

Convolution algorithm for product-form, single-class closed queueing networks with K general load-dependent service centers.

This function computes steady-state performance measures for single-class, closed networks with load-dependent service centers using the convolution algorithm; the normalization constants are also computed. The normalization constants are returned as vector G=[G(1), …, G(N+1)] where G(i+1) is the value of G(i).

INPUTS

N

Number of requests in the system (N>0).

S(k,n)

mean service time at center k where there are n requests, 1 ≤ n ≤ N. S(k,n) = 1 / \mu_{k,n}, where \mu_{k,n} is the service rate of center k when there are n requests.

V(k)

visit count of service center k (V(k) ≥ 0). The length of V is the number of servers K in the network.

OUTPUT

U(k)

center k utilization.

R(k)

average response time at center k.

Q(k)

average number of requests in center k.

X(k)

center k throughput.

G(n)

Normalization constants (vector). G(n+1) corresponds to G(n), as array indexes in Octave start from 1.

REFERENCES

  • Herb Schwetman, Some Computational Aspects of Queueing Network Models, Technical Report CSD-TR-354, Department of Computer Sciences, Purdue University, February 1981 (revised).
  • M. Reiser, H. Kobayashi, On The Convolution Algorithm for Separable Queueing Networks, In Proceedings of the 1976 ACM SIGMETRICS Conference on Computer Performance Modeling Measurement and Evaluation (Cambridge, Massachusetts, United States, March 29–31, 1976). SIGMETRICS ’76. ACM, New York, NY, pp. 109–117. 10.1145/800200.806187

This implementation is based on G. Bolch, S. Greiner, H. de Meer and K. Trivedi, Queueing Networks and Markov Chains: Modeling and Performance Evaluation with Computer Science Applications, Wiley, 1998, pp. 313–317. Function qncsconvld is slightly different from the version described in Bolch et al. because it supports general load-dependent centers (while the version in the book does not). The modification is in the definition of function F() in qncsconvld which has been made similar to function f_i defined in Schwetman, Some Computational Aspects of Queueing Network Models.


See also: qncsconv.

5.2.3 Non Product-Form QNs

Function File: [U, R, Q, X] = qncsmvablo (N, S, M, P )

Approximate MVA algorithm for closed queueing networks with blocking.

INPUTS

N

number of requests in the system. N must be strictly greater than zero, and less than the overall network capacity: 0 < N < sum(M).

S(k)

average service time on server k (S(k) > 0).

M(k)

capacity of center k. The capacity is the maximum number of requests in a service center, including the request in service (M(k) ≥ 1).

P(i,j)

probability that a request which completes service at server i will be transferred to server j.

OUTPUTS

U(k)

center k utilization.

R(k)

average response time of service center k.

Q(k)

average number of requests in service center k (including the request in service).

X(k)

center k throughput.

REFERENCES

  • Ian F. Akyildiz, Mean Value Analysis for Blocking Queueing Networks, IEEE Transactions on Software Engineering, vol. 14, n. 2, april 1988, pp. 418–428. 10.1109/32.4663

See also: qnopen, qnclosed.

Function File: [U, R, Q, X] = qnmarkov (lambda, S, C, P)
Function File: [U, R, Q, X] = qnmarkov (lambda, S, C, P, m)
Function File: [U, R, Q, X] = qnmarkov (N, S, C, P)
Function File: [U, R, Q, X] = qnmarkov (N, S, C, P, m)

Compute utilization, response time, average queue length and throughput for open or closed queueing networks with finite capacity and a single class of requests. Blocking type is Repetitive-Service (RS). This function explicitly generates and solve the underlying Markov chain, and thus might require a large amount of memory.

More specifically, networks which can me analyzed by this function have the following properties:

  • There exists only a single class of customers.
  • The network has K service centers. Center k \in {1, …, K} has m_k > 0 servers, and has a total (finite) capacity of C_k \geq m_k which includes both buffer space and servers. The buffer space at service center k is therefore C_k - m_k.
  • The network can be open, with external arrival rate to center k equal to \lambda_k, or closed with fixed population size N. For closed networks, the population size N must be strictly less than the network capacity: N < \sum_{k=1}^K C_k.
  • Average service times are load-independent.
  • P_{i, j} is the probability that requests completing execution at center i are transferred to center j, i \neq j. For open networks, a request may leave the system from any node i with probability 1-\sum_{j=1}^K P_{i, j}.
  • Blocking type is Repetitive-Service (RS). Service center j is saturated if the number of requests is equal to its capacity C_j. Under the RS blocking discipline, a request completing service at center i which is being transferred to a saturated server j is put back at the end of the queue of i and will receive service again. Center i then processes the next request in queue. External arrivals to a saturated servers are dropped.

INPUTS

lambda(k)
N

If the first argument is a vector lambda, it is considered to be the external arrival rate lambda(k) ≥ 0 to service center k of an open network. If the first argument is a scalar, it is considered as the population size N of a closed network; in this case N must be strictly less than the network capacity: N < sum(C).

S(k)

average service time at service center k

C(k)

capacity of service center k. The capacity includes both the buffer and server space m(k). Thus the buffer space is C(k)-m(k).

P(i,j)

transition probability from service center i to service center j.

m(k)

number of servers at service center k. Note that m(k) ≥ C(k) for each k. If m is omitted, all service centers are assumed to have a single server (m(k) = 1 for all k).

OUTPUTS

U(k)

center k utilization.

R(k)

response time on service center k.

Q(k)

average number of customers in the service center k, including the request in service.

X(k)

throughput of service center k.

NOTES

The space complexity of this implementation is O(\prod_{k=1}^K (C_k + 1)^2). The time complexity is dominated by the time needed to solve a linear system with \prod_{k=1}^K (C_k + 1) unknowns.


5.3 Multiple Class Models

In multiple class queueing models, we assume that there exist C different classes of requests. Each request from class c spends on average time S_{c, k} in service at center k. For open models, we denote with {\bf \lambda} = \lambda_{c, k} the arrival rates, where \lambda_{c, k} is the external arrival rate of class c requests at center k. For closed models, we denote with {\bf N} = \left[N_1, …, N_C\right] the population vector, where N_c is the number of class c requests in the system.

The transition probability matrix for multiple class networks is a C \times K \times C \times K matrix {\bf P} = [P_{r, i, s, j}] where P_{r, i, s, j} is the probability that a class r request which completes service at center i will join server j as a class s request.

Model input and outputs can be adjusted by adding additional indexes for the customer classes.

Model Inputs

lambda_{c, k}

(open networks) External arrival rate of class-c requests to service center k

lambda

(open networks) Overall external arrival rate to the whole system: \lambda = \sum_{c=1}^C \sum_{k=1}^K \lambda_{c, k}

N_c

(closed networks) Number of class c requests in the system.

S_{c, k}

Average service time. S_{c, k} is the average service time on service center k for class c requests.

P_{r, i, s, j}

Routing probability matrix. {\bf P} = [P_{r, i, s, j}] is a C \times K \times C \times K matrix such that P_{r, i, s, j} is the probability that a class r request which completes service at server i will move to server j as a class s request.

V_{c, k}

Mean number of visits of class c requests to center k.

Model Outputs

U_{c, k}

Utilization of service center k by class c requests. The utilization is defined as the fraction of time in which the resource is busy (i.e., the server is processing requests). If center k is a single-server or multiserver node, then 0 ≤ U_{c, k} ≤ 1. If center k is an infinite server node (delay center), then U_{c, k} denotes the traffic intensity and is defined as U_{c, k} = X_{c, k} S_{c, k}; in this case the utilization may be greater than one.

R_{c, k}

Average response time experienced by class c requests on service center k. The average response time is defined as the average time between the arrival of a customer in the queue, and the completion of service.

Q_{c, k}

Average number of class c requests on service center k. This includes both the requests in the queue, and the request being served.

X_{c, k}

Throughput of service center k for class c requests. The throughput is defined as the rate of completion of class c requests.

It is possible to define aggregate performance measures as follows:

U_k

Utilization of service center k: Uk = sum(U,k);

R_c

System response time for class c requests: Rc = sum( V.*R, 1 );

Q_c

Average number of class c requests in the system: Qc = sum( Q, 2 );

X_c

Class c throughput: X(c) = X(c,k) ./ V(c,k); for any k for which V(c,k) != 0

For closed networks, we can define the visit ratios V_{s, j} for class s customers at service center j as follows:

V_sj = sum_r sum_i V_ri P_risj s=1,...,C, j=1,...,K V_s r_s = 1 s=1,...,C

where r_s is the class s reference station. Similarly to single class models, the traffic equation for closed multiclass networks can be solved up to multiplicative constants unless we choose one reference station for each closed class and set its visit ratio to 1.

For open networks the traffic equations are as follows:

V_sj = P_0sj + sum_r sum_i V_ri P_risj s=1,...,C, j=1,...,K

where P_{0, s, j} is the probability that an external arrival goes to service center j as a class-s request. If \lambda_{s, j} is the external arrival rate of class s requests to service center j, and \lambda = \sum_s \sum_j \lambda_{s, j} is the overall external arrival rate, then P_{0, s, j} = \lambda_{s, j} / \lambda.

Function File: [V ch] = qncmvisits (P)
Function File: [V ch] = qncmvisits (P, r)

Compute the average number of visits for the nodes of a closed multiclass network with K service centers and C customer classes.

INPUTS

P(r,i,s,j)

probability that a class r request which completed service at center i is routed to center j as a class s request. Class switching is allowed.

r(c)

index of class c reference station, r(c) \in {1, …, K}, 1 ≤ c ≤ C. The class c visit count to server r(c) (V(c,r(c))) is conventionally set to 1. The reference station serves two purposes: (i) its throughput is assumed to be the system throughput, and (ii) a job returning to the reference station is assumed to have completed one cycle. Default is to consider station 1 as the reference station for all classes.

OUTPUTS

V(c,i)

number of visits of class c requests at center i.

ch(c)

chain number that class c belongs to. Different classes can belong to the same chain. Chains are numbered sequentially starting from 1 (1, 2, …). The total number of chains is max(ch).

Function File: V = qnomvisits (P, lambda)

Compute the visit ratios to the service centers of an open multiclass network with K service centers and C customer classes.

INPUTS

P(r,i,s,j)

probability that a class r request which completed service at center i is routed to center j as a class s request. Class switching is supported.

lambda(r,i)

external arrival rate of class r requests to center i.

OUTPUTS

V(r,i)

visit ratio of class r requests at center i.

5.3.1 Open Networks

Function File: [U, R, Q, X] = qnom (lambda, S, V)
Function File: [U, R, Q, X] = qnom (lambda, S, V, m)
Function File: [U, R, Q, X] = qnom (lambda, S, P)
Function File: [U, R, Q, X] = qnom (lambda, S, P, m)

Exact analysis of open, multiple-class BCMP networks. The network can be made of single-server queueing centers (FCFS, LCFS-PR or PS) or delay centers (IS). This function assumes a network with K service centers and C customer classes.

INPUTS

lambda(c)

If this function is invoked as qnom(lambda, S, V, …), then lambda(c) is the external arrival rate of class c customers (lambda(c) ≥ 0). If this function is invoked as qnom(lambda, S, P, …), then lambda(c,k) is the external arrival rate of class c customers at center k (lambda(c,k) ≥ 0).

S(c,k)

mean service time of class c customers on the service center k (S(c,k)>0). For FCFS nodes, mean service times must be class-independent.

V(c,k)

visit ratio of class c customers to service center k (V(c,k) ≥ 0 ). If you pass this argument, class switching is not allowed

P(r,i,s,j)

probability that a class r job completing service at center i is routed to center j as a class s job. If you pass argument P, class switching is allowed; however, all servers must be fixed-rate or infinite-server nodes (m(k) ≤ 1 for all k).

m(k)

number of servers at center k. If m(k) < 1, enter k is a delay center (IS); otherwise it is a regular queueing center with m(k) servers. Default is m(k) = 1 for all k.

OUTPUTS

U(c,k)

If k is a queueing center, then U(c,k) is the class c utilization of center k. If k is an IS node, then U(c,k) is the class c traffic intensity defined as X(c,k)*S(c,k).

R(c,k)

class c response time at center k. The system response time for class c requests can be computed as dot(R, V, 2).

Q(c,k)

average number of class c requests at center k. The average number of class c requests in the system Qc can be computed as Qc = sum(Q, 2)

X(c,k)

class c throughput at center k.

NOTES

If the function call specifies the visit ratios V, class switching is not allowed. If the function call specifies the routing probability matrix P, then class switching is allowed; however, all nodes are restricted to be fixed rate servers or delay centers: multiple-server and general load-dependent centers are not supported. Note that the meaning of parameter lambda is different from one case to the other (see below).

REFERENCES

  • Edward D. Lazowska, John Zahorjan, G. Scott Graham, and Kenneth C. Sevcik, Quantitative System Performance: Computer System Analysis Using Queueing Network Models, Prentice Hall, 1984. http://www.cs.washington.edu/homes/lazowska/qsp/. In particular, see section 7.4.1 ("Open Model Solution Techniques").

See also: qnopen,qnos,qnomvisits.

5.3.2 Closed Networks

Function File: pop_mix = qncmpopmix (k, N)

Return the set of population mixes for a closed multiclass queueing network with exactly k customers. Specifically, given a closed multiclass QN with C customer classes, where there are N(c) class c requests, c = 1, …, C a k-mix M is a vector of length C with the following properties:

  • 0 ≤ M_c ≤ N(c) for all c = 1, …, C;
  • \sum_{c=1}^C M_c = k

In other words, a k-mix is an allocation of k requests to C classes such that the number of requests assigned to class c does not exceed the maximum value N(c).

pop_mix is a matrix with C columns, such that each row represents a valid mix.

INPUTS

k

Size of the requested mix (scalar, k ≥ 0).

N(c)

number of class c requests (k ≤ sum(N)).

OUTPUTS

pop_mix(i,c)

number of class c requests in the i-th population mix. The number of mixes is rows(pop_mix).

If you are interested in the number of k-mixes only, you can use the funcion qnmvapop.

REFERENCES

  • Herb Schwetman, Implementing the Mean Value Algorithm for the Solution of Queueing Network Models, Technical Report 80-355, Department of Computer Sciences, Purdue University, revised February 15, 1982.

The slightly different problem of enumerating all tuples k_1, …, k_N such that \sum_i k_i = k and k_i ≥ 0, for a given k ≥ 0 has been described in S. Santini, Computing the Indices for a Complex Summation, unpublished report, available at http://arantxa.ii.uam.es/~ssantini/writing/notes/s668_summation.pdf


See also: qncmnpop.

EXAMPLE

Let us consider a multiclass network with C=2 customer classes; the maximum number of class 1 requests is 2, and the maximum number of class 2 requests is 3. How is it possible to allocate 3 requests to the two classes so that the maximum number of requests per class is not exceeded?

 N = [2 3];
 mix = qncmpopmix(3, N)
-| mix = [ [2 1] [1 2] [0 3] ]
Function File: H = qncmnpop (N)

Given a network with C customer classes, this function computes the number of k-mixes H(r,k) that can be constructed by the multiclass MVA algorithm by allocating k customers to the first r classes. See doc-qncmpopmix for the definition of k-mix.

INPUTS

N(c)

number of class-c requests in the system. The total number of requests in the network is sum(N).

OUTPUTS

H(r,k)

is the number of k mixes that can be constructed allocating k customers to the first r classes.

REFERENCES

  • Zahorjan, J. and Wong, E. The solution of separable queueing network models using mean value analysis. SIGMETRICS Perform. Eval. Rev. 10, 3 (Sep. 1981), 80-85. DOI 10.1145/1010629.805477

See also: qncmmva,qncmpopmix.

Function File: [U, R, Q, X] = qncmmva (N, S )
Function File: [U, R, Q, X] = qncmmva (N, S, V)
Function File: [U, R, Q, X] = qncmmva (N, S, V, m)
Function File: [U, R, Q, X] = qncmmva (N, S, V, m, Z)
Function File: [U, R, Q, X] = qncmmva (N, S, P)
Function File: [U, R, Q, X] = qncmmva (N, S, P, r)
Function File: [U, R, Q, X] = qncmmva (N, S, P, r, m)

Compute steady-state performance measures for closed, multiclass queueing networks using the Mean Value Analysys (MVA) algorithm.

Queueing policies at service centers can be any of the following:

FCFS

(First-Come-First-Served) customers are served in order of arrival; multiple servers are allowed. For this kind of queueing discipline, average service times must be class-independent.

PS

(Processor Sharing) customers are served in parallel by a single server, each customer receiving an equal share of the service rate.

LCFS-PR

(Last-Come-First-Served, Preemptive Resume) customers are served in reverse order of arrival by a single server and the last arrival preempts the customer in service who will later resume service at the point of interruption.

IS

(Infinite Server) customers are delayed independently of other customers at the service center (there is effectively an infinite number of servers).

INPUTS

N(c)

number of class c requests; N(c) ≥ 0. If class c has no requests (N(c) == 0), then for all k, this function returns U(c,k) = R(c,k) = Q(c,k) = X(c,k) = 0

S(c,k)

mean service time for class c requests at center k (S(c,k) ≥ 0). If the service time at center k is class-dependent, then center k is assumed to be of type -/G/1–PS (Processor Sharing). If center k is a FCFS node (m(k)>1), then the service times must be class-independent, i.e., all classes must have the same service time.

V(c,k)

average number of visits of class c requests at center k; V(c,k) ≥ 0, default is 1. If you pass this argument, class switching is not allowed

P(r,i,s,j)

probability that a class r request completing service at center i is routed to center j as a class s request; the reference stations for each class are specified with the paramter r. If you pass argument P, class switching is allowed; however, you can not specify any external delay (i.e., Z must be zero) and all servers must be fixed-rate or infinite-server nodes (m(k) ≤ 1 for all k).

r(c)

reference station for class c. If omitted, station 1 is the reference station for all classes. See qncmvisits.

m(k)

If m(k)<1, then center k is assumed to be a delay center (IS node -/G/\infty). If m(k)==1, then service center k is a regular queueing center (M/M/1–FCFS, -/G/1–LCFS-PR or -/G/1–PS). Finally, if m(k)>1, center k is a M/M/m–FCFS center with m(k) identical servers. Default is m(k)=1 for each k.

Z(c)

class c external delay (think time); Z(c) ≥ 0. Default is 0. This parameter can not be used if you pass a routing matrix as the second parameter of qncmmva.

OUTPUTS

U(c,k)

If k is a FCFS, LCFS-PR or PS node (m(k) ≥ 1), then U(c,k) is the class c utilization at center k, 0 ≤ U(c,k) ≤ 1. If k is an IS node, then U(c,k) is the class c traffic intensity at center k, defined as U(c,k) = X(c,k)*S(c,k). In this case the value of U(c,k) may be greater than one.

R(c,k)

class c response time at center k. The class c residence time at center k is R(c,k) * C(c,k). The total class c system response time is dot(R, V, 2).

Q(c,k)

average number of class c requests at center k. The total number of requests at center k is sum(Q(:,k)). The total number of class c requests in the system is sum(Q(c,:)).

X(c,k)

class c throughput at center k. The class c throughput can be computed as X(c,1) / V(c,1).

NOTES

If the function call specifies the visit ratios V, then class switching is not allowed. If the function call specifies the routing probability matrix P, then class switching is allowed; however, in this case all nodes are restricted to be fixed rate servers or delay centers: multiple-server and general load-dependent centers are not supported.

In presence of load-dependent servers (e.g., if m(i)>1 for some i), the MVA algorithm is known to be numerically unstable. Generally this problem shows up as negative values for the computed response times or utilizations. This is not a problem with the queueing package, but with the MVA algorithm; as such, there is no known workaround at the moment (aoart from using a different solution technique, if available). This function prints a warning if it detects numerical problems; you can disable the warning with the command warning("off", "qn:numerical-instability").

Given a network with K service centers, C job classes and population vector {\bf N}=\left[N_1, …, N_C\right], the MVA algorithm requires space O(C \prod_i (N_i + 1)). The time complexity is O(CK\prod_i (N_i + 1)). This implementation is slightly more space-efficient (see details in the code). While the space requirement can be mitigated by using some optimizations, the time complexity can not. If you need to analyze large closed networks you should consider the qncmmvaap function, which implements the approximate MVA algorithm. Note however that qncmmvaap will only provide approximate results.

REFERENCES

  • M. Reiser and S. S. Lavenberg, Mean-Value Analysis of Closed Multichain Queuing Networks, Journal of the ACM, vol. 27, n. 2, April 1980, pp. 313–322. 10.1145/322186.322195

This implementation is based on G. Bolch, S. Greiner, H. de Meer and K. Trivedi, Queueing Networks and Markov Chains: Modeling and Performance Evaluation with Computer Science Applications, Wiley, 1998 and Edward D. Lazowska, John Zahorjan, G. Scott Graham, and Kenneth C. Sevcik, Quantitative System Performance: Computer System Analysis Using Queueing Network Models, Prentice Hall, 1984. http://www.cs.washington.edu/homes/lazowska/qsp/. In particular, see section 7.4.2.1 ("Exact Solution Techniques").


See also: qnclosed, qncmmvaapprox, qncmvisits.

Function File: [U, R, Q, X] = qncmmvabs (N, S, V)
Function File: [U, R, Q, X] = qncmmvabs (N, S, V, m)
Function File: [U, R, Q, X] = qncmmvabs (N, S, V, m, Z)
Function File: [U, R, Q, X] = qncmmvabs (N, S, V, m, Z, tol)
Function File: [U, R, Q, X] = qncmmvabs (N, S, V, m, Z, tol, iter_max)

Approximate Mean Value Analysis (MVA) for closed, multiclass queueing networks with K service centers and C customer classes.

This implementation uses Bard and Schweitzer approximation. It is based on the assumption that the queue length at service center k with population set {\bf N}-{\bf 1}_c is approximated with

Q_k(N-1c) ~ (n-1)/n Q_k(N)

where \bf N is a valid population mix, {\bf N}-{\bf 1}_c is the population mix \bf N with one class c customer removed, and n = \sum_c N_c is the total number of requests.

This implementation works for networks with infinite server (IS) and single-server nodes only.

INPUTS

N(c)

number of class c requests in the system (N(c) ≥ 0).

S(c,k)

mean service time for class c customers at center k (S(c,k) ≥ 0).

V(c,k)

average number of visits of class c requests to center k (V(c,k) ≥ 0).

m(k)

number of servers at center k. If m(k) < 1, then the service center k is assumed to be a delay center (IS). If m(k) == 1, service center k is a regular queueing center (FCFS, LCFS-PR or PS) with a single server node. If omitted, each service center has a single server. Note that multiple server nodes are not supported.

Z(c)

class c external delay (Z ≥ 0). Default is 0.

tol

Stopping tolerance (tol>0). The algorithm stops if the queue length computed on two subsequent iterations are less than tol. Default is 10^{-5}.

iter_max

Maximum number of iterations (iter_max>0. The function aborts if convergenge is not reached within the maximum number of iterations. Default is 100.

OUTPUTS

U(c,k)

If k is a FCFS, LCFS-PR or PS node, then U(c,k) is the utilization of class c requests on service center k. If k is an IS node, then U(c,k) is the class c traffic intensity at device k, defined as U(c,k) = X(c)*S(c,k)

R(c,k)

response time of class c requests at service center k.

Q(c,k)

average number of class c requests at service center k.

X(c,k)

class c throughput at service center k.

REFERENCES

  • Y. Bard, Some Extensions to Multiclass Queueing Network Analysis, proc. 4th Int. Symp. on Modelling and Performance Evaluation of Computer Systems, Feb 1979, pp. 51–62.
  • P. Schweitzer, Approximate Analysis of Multiclass Closed Networks of Queues, Proc. Int. Conf. on Stochastic Control and Optimization, jun 1979, pp. 25–29.

This implementation is based on Edward D. Lazowska, John Zahorjan, G. Scott Graham, and Kenneth C. Sevcik, Quantitative System Performance: Computer System Analysis Using Queueing Network Models, Prentice Hall, 1984. http://www.cs.washington.edu/homes/lazowska/qsp/. In particular, see section 7.4.2.2 ("Approximate Solution Techniques"). This implementation is slightly different from the one described above, as it computes the average response times R instead of the residence times.


See also: qncmmva.

5.3.3 Mixed Networks

Function File: [U, R, Q, X] = qnmix (lambda, N, S, V, m)

Mean Value Analysis for mixed queueing networks. The network consists of K service centers (single-server or delay centers) and C independent customer chains. Both open and closed chains are possible. lambda is the vector of per-chain arrival rates (open classes); N is the vector of populations for closed chains.

Class switching is not allowed. Each customer class must correspond to an independent chain.

If the network is made of open or closed classes only, then this function calls qnom or qncmmva respectively, and prints a warning message.

INPUTS

lambda(c)
N(c)

For each customer chain c:

  • if c is a closed chain, then N(c)>0 is the number of class c requests and lambda(c) must be zero;
  • If c is an open chain, lambda(c)>0 is the arrival rate of class c requests and N(c) must be zero;

In other words, for each class c the following must hold:

(lambda(c)>0 && N(c)==0) || (lambda(c)==0 && N(c)>0)
S(c,k)

mean class c service time at center k, S(c,k) ≥ 0. For FCFS nodes, service times must be class-independent.

V(c,k)

average number of visits of class c customers to center k (V(c,k) ≥ 0).

m(k)

number of servers at center k. Only single-server (m(k)==1) or IS (Infinite Server) nodes (m(k)<1) are supported. If omitted, each center is assumed to be of type M/M/1-FCFS. Queueing discipline for single-server nodes can be FCFS, PS or LCFS-PR.

OUTPUTS

U(c,k)

class c utilization at center k.

R(c,k)

class c response time at center k.

Q(c,k)

average number of class c requests at center k.

X(c,k)

class c throughput at center k.

REFERENCES

  • Edward D. Lazowska, John Zahorjan, G. Scott Graham, and Kenneth C. Sevcik, Quantitative System Performance: Computer System Analysis Using Queueing Network Models, Prentice Hall, 1984. http://www.cs.washington.edu/homes/lazowska/qsp/. In particular, see section 7.4.3 ("Mixed Model Solution Techniques"). Note that in this function we compute the mean response time R instead of the mean residence time as in the reference.
  • Herb Schwetman, Implementing the Mean Value Algorithm for the Solution of Queueing Network Models, Technical Report CSD-TR-355, Department of Computer Sciences, Purdue University, revised Feb 15, 1982.

See also: qncmmva, qncm.


5.4 Generic Algorithms

The queueing package provides a high-level function qnsolve for analyzing QN models. qnsolve takes as input a high-level description of the queueing model, and delegates the actual solution of the model to one of the lower-level function. qnsolve supports single or multiclass models, but at the moment only product-form networks can be analyzed. For non product-form networks See Non Product-Form QNs.

qnsolve accepts two input parameters. The first one is the list of nodes, encoded as an Octave cell array. The second parameter is the vector of visit ratios V, which can be either a vector (for single-class models) or a two-dimensional matrix (for multiple-class models).

Individual nodes in the network are structures build using the qnmknode function.

Function File: Q = qnmknode ("m/m/m-fcfs", S)
Function File: Q = qnmknode ("m/m/m-fcfs", S, m)
Function File: Q = qnmknode ("m/m/1-lcfs-pr", S)
Function File: Q = qnmknode ("-/g/1-ps", S)
Function File: Q = qnmknode ("-/g/1-ps", S, s2)
Function File: Q = qnmknode ("-/g/inf", S)
Function File: Q = qnmknode ("-/g/inf", S, s2)

Creates a node; this function can be used together with qnsolve. It is possible to create either single-class nodes (where there is only one customer class), or multiple-class nodes (where the service time is given per-class). Furthermore, it is possible to specify load-dependent service times. String literals are case-insensitive, so for example "-/g/inf", "-/G/inf" and "-/g/INF" are all equivalent.

INPUTS

S

Mean service time.

  • If S is a scalar, it is assumed to be a load-independent, class-independent service time.
  • If S is a column vector, then S(c) is assumed to the the load-independent service time for class c customers.
  • If S is a row vector, then S(n) is assumed to be the class-independent service time at the node, when there are n requests.
  • Finally, if S is a two-dimensional matrix, then S(c,n) is assumed to be the class c service time when there are n requests at the node.
m

Number of identical servers at the node. Default is m=1.

s2

Squared coefficient of variation for the service time. Default is 1.0.

The returned struct Q should be considered opaque to the client.


See also: qnsolve.

After the network has been defined, it is possible to solve it using qnsolve.

Function File: [U, R, Q, X] = qnsolve ("closed", N, QQ, V)
Function File: [U, R, Q, X] = qnsolve ("closed", N, QQ, V, Z)
Function File: [U, R, Q, X] = qnsolve ("open", lambda, QQ, V)
Function File: [U, R, Q, X] = qnsolve ("mixed", lambda, N, QQ, V)

High-level function for analyzing QN models.

  • For closed networks, the following server types are supported: M/M/m–FCFS, -/G/\infty, -/G/1–LCFS-PR, -/G/1–PS and load-dependent variants.
  • For open networks, the following server types are supported: M/M/m–FCFS, -/G/\infty and -/G/1–PS. General load-dependent nodes are not supported. Multiclass open networks do not support multiple server M/M/m nodes, but only single server M/M/1–FCFS.
  • For mixed networks, the following server types are supported: M/M/1–FCFS, -/G/\infty and -/G/1–PS. General load-dependent nodes are not supported.

INPUTS

N
N(c)

Number of requests in the system for closed networks. For single-class networks, N must be a scalar. For multiclass networks, N(c) is the population size of closed class c.

lambda
lambda(c)

External arrival rate (scalar) for open networks. For single-class networks, lambda must be a scalar. For multiclass networks, lambda(c) is the class c overall arrival rate.

QQ{i}

List of queues in the network. This must be a cell array with N elements, such that QQ{i} is a struct produced by the qnmknode function.

Z

External delay ("think time") for closed networks. Default 0.

OUTPUTS

U(k)

If k is a FCFS node, then U(k) is the utilization of service center k. If k is an IS node, then U(k) is the traffic intensity defined as X(k)*S(k).

R(k)

average response time of service center k.

Q(k)

average number of customers in service center k.

X(k)

throughput of service center k.

Note that for multiclass networks, the computed results are per-class utilization, response time, number of customers and throughput: U(c,k), R(c,k), Q(c,k), X(c,k).

String literals are case-insensitive, so "closed", "Closed" and "CLoSEd" are all equivalent.

EXAMPLE

Let us consider a closed, multiclass network with C=2 classes and K=3 service center. Let the population be M=(2, 1) (class 1 has 2 requests, and class 2 has 1 request). The nodes are as follows:

  • Node 1 is a M/M/1–FCFS node, with load-dependent service times. Service times are class-independent, and are defined by the matrix [0.2 0.1 0.1; 0.2 0.1 0.1]. Thus, S(1,2) = 0.2 means that service time for class 1 customers where there are 2 requests in 0.2. Note that service times are class-independent;
  • Node 2 is a -/G/1–PS node, with service times S_{1, 2} = 0.4 for class 1, and S_{2, 2} = 0.6 for class 2 requests;
  • Node 3 is a -/G/\infty node (delay center), with service times S_{1, 3}=1 and S_{2, 3}=2 for class 1 and 2 respectively.

After defining the per-class visit count V such that V(c,k) is the visit count of class c requests to service center k. We can define and solve the model as follows:



 QQ = { qnmknode( "m/m/m-fcfs", [0.2 0.1 0.1; 0.2 0.1 0.1] ), ...
        qnmknode( "-/g/1-ps", [0.4; 0.6] ), ...
        qnmknode( "-/g/inf", [1; 2] ) };
 V = [ 1 0.6 0.4; ...
       1 0.3 0.7 ];
 N = [ 2 1 ];
 [U R Q X] = qnsolve( "closed", N, QQ, V );
Function File: [U, R, Q, X] = qnclosed (N, S, V, …)

This function computes steady-state performance measures of closed queueing networks using the Mean Value Analysis (MVA) algorithm. The qneneing network is allowed to contain fixed-capacity centers, delay centers or general load-dependent centers. Multiple request classes are supported.

This function dispatches the computation to one of qncsemva, qncsmvald or qncmmva.

  • If N is a scalar, the network is assumed to have a single class of requests; in this case, the exact MVA algorithm is used to analyze the network. If S is a vector, then S(k) is the average service time of center k, and this function calls qncsmva which supports load-independent service centers. If S is a matrix, S(k,i) is the average service time at center k when i=1, …, N jobs are present; in this case, the network is analyzed with the qncmmvald function.
  • If N is a vector, the network is assumed to have multiple classes of requests, and is analyzed using the exact multiclass MVA algorithm as implemented in the qncmmva function.

See also: qncsmva, qncsmvald, qncmmva.

EXAMPLE

 P = [0 0.3 0.7; 1 0 0; 1 0 0]; # Transition probability matrix
 S = [1 0.6 0.2];               # Average service times
 m = ones(size(S));             # All centers are single-server
 Z = 2;                         # External delay
 N = 15;                        # Maximum population to consider
 V = qncsvisits(P);             # Compute number of visits
 X_bsb_lower = X_bsb_upper = X_ab_lower = X_ab_upper = X_mva = zeros(1,N);
 for n=1:N
   [X_bsb_lower(n) X_bsb_upper(n)] = qncsbsb(n, S, V, m, Z);
   [X_ab_lower(n) X_ab_upper(n)] = qncsaba(n, S, V, m, Z);
   [U R Q X] = qnclosed( n, S, V, m, Z );
   X_mva(n) = X(1)/V(1);
 endfor
 close all;
 plot(1:N, X_ab_lower,"g;Asymptotic Bounds;", ...
      1:N, X_bsb_lower,"k;Balanced System Bounds;", ...
      1:N, X_mva,"b;MVA;", "linewidth", 2, ...
      1:N, X_bsb_upper,"k", 1:N, X_ab_upper,"g" );
 axis([1,N,0,1]); legend("location","southeast"); legend("boxoff");
 xlabel("Number of Requests n"); ylabel("System Throughput X(n)");
Function File: [U, R, Q, X] = qnopen (lambda, S, V, …)

Compute utilization, response time, average number of requests in the system, and throughput for open queueing networks. If lambda is a scalar, the network is considered a single-class QN and is solved using qnopensingle. If lambda is a vector, the network is considered as a multiclass QN and solved using qnopenmulti.


See also: qnos, qnom.


5.5 Bounds Analysis

Function File: [Xl, Xu, Rl, Ru] = qnosaba (lambda, D)
Function File: [Xl, Xu, Rl, Ru] = qnosaba (lambda, S, V)
Function File: [Xl, Xu, Rl, Ru] = qnosaba (lambda, S, V, m)

Compute Asymptotic Bounds for open, single-class networks with K service centers.

INPUTS

lambda

Arrival rate of requests (scalar, lambda ≥ 0).

D(k)

service demand at center k. (vector of length K, D(k) ≥ 0).

S(k)

mean service time at center k. (vector of length K, S(k) ≥ 0).

V(k)

mean number of visits to center k. (vector of length K, V(k) ≥ 0).

m(k)

number of servers at center k. This function only supports M/M/1 queues, therefore m must be ones(size(S)).

OUTPUTS

Xl
Xu

Lower and upper bounds on the system throughput. Xl is always set to 0 since there can be no lower bound on the throughput of open networks (scalar).

Rl
Ru

Lower and upper bounds on the system response time. Ru is always set to +inf since there can be no upper bound on the throughput of open networks (scalar).


See also: qnomaba.

Function File: [Xl, Xu, Rl, Ru] = qnomaba (lambda, D)
Function File: [Xl, Xu, Rl, Rl] = qnomaba (lambda, S, V)

Compute Asymptotic Bounds for open, multiclass networks with K service centers and C customer classes.

INPUTS

lambda(c)

class c arrival rate to the system (vector of length C, lambda(c) > 0).

D(c, k)

class c service demand at center k (C \times K matrix, D(c, k) ≥ 0).

S(c, k)

mean service time of class c requests at center k (C \times K matrix, S(c, k) ≥ 0).

V(c, k)

mean number of visits of class c requests at center k (C \times K matrix, V(c, k) ≥ 0).

OUTPUTS

Xl(c)
Xu(c)

lower and upper bounds of class c throughput. Xl(c) is always 0 since there can be no lower bound on the throughput of open networks (vector of length C).

Rl(c)
Ru(c)

lower and upper bounds of class c response time. Ru(c) is always +inf since there can be no upper bound on the response time of open networks (vector of length C).

Function File: [Xl, Xu, Rl, Ru] = qncsaba (N, D)
Function File: [Xl, Xu, Rl, Ru] = qncsaba (N, S, V)
Function File: [Xl, Xu, Rl, Ru] = qncsaba (N, S, V, m)
Function File: [Xl, Xu, Rl, Ru] = qncsaba (N, S, V, m, Z)

Compute Asymptotic Bounds for the system throughput and response time of closed, single-class networks with K service centers.

Single-server and infinite-server nodes are supported. Multiple-server nodes and general load-dependent servers are not supported.

INPUTS

N

number of requests in the system (scalar, N>0).

D(k)

service demand at center k (D(k) ≥ 0).

S(k)

mean service time at center k (S(k) ≥ 0).

V(k)

average number of visits to center k (V(k) ≥ 0).

m(k)

number of servers at center k (if m is a scalar, all centers have that number of servers). If m(k) < 1, center k is a delay center (IS); if m(k) = 1, center k is a M/M/1-FCFS server. This function does not support multiple-server nodes. Default is 1.

Z

External delay (scalar, Z ≥ 0). Default is 0.

OUTPUTS

Xl
Xu

Lower and upper bounds on the system throughput.

Rl
Ru

Lower and upper bounds on the system response time.


See also: qncmaba.

Function File: [Xl, Xu, Rl, Ru] = qncmaba (N, D)
Function File: [Xl, Xu, Rl, Ru] = qncmaba (N, S, V)
Function File: [Xl, Xu, Rl, Ru] = qncmaba (N, S, V, m)
Function File: [Xl, Xu, Rl, Ru] = qncmaba (N, S, V, m, Z)

Compute Asymptotic Bounds for closed, multiclass networks with K service centers and C customer classes. Single-server and infinite-server nodes are supported. Multiple-server nodes and general load-dependent servers are not supported.

INPUTS

N(c)

number of class c requests in the system (vector of length C, N(c) ≥ 0).

D(c, k)

class c service demand at center k (C \times K matrix, D(c,k) ≥ 0).

S(c, k)

mean service time of class c requests at center k (C \times K matrix, S(c,k) ≥ 0).

V(c,k)

average number of visits of class c requests to center k (C \times K matrix, V(c,k) ≥ 0).

m(k)

number of servers at center k (if m is a scalar, all centers have that number of servers). If m(k) < 1, center k is a delay center (IS); if m(k) = 1, center k is a M/M/1-FCFS server. This function does not support multiple-server nodes. Default is 1.

Z(c)

class c external delay (vector of length C, Z(c) ≥ 0). Default is 0.

OUTPUTS

Xl(c)
Xu(c)

Lower and upper bounds for class c throughput.

Rl(c)
Ru(c)

Lower and upper bounds for class c response time.

REFERENCES

  • Edward D. Lazowska, John Zahorjan, G. Scott Graham, and Kenneth C. Sevcik, Quantitative System Performance: Computer System Analysis Using Queueing Network Models, Prentice Hall, 1984. http://www.cs.washington.edu/homes/lazowska/qsp/. In particular, see section 5.2 ("Asymptotic Bounds").

See also: qncsaba.

Function File: [Xl, Xu, Rl, Ru] = qnosbsb (lambda, D)
Function File: [Xl, Xu, Rl, Ru] = qnosbsb (lambda, S, V)

Compute Balanced System Bounds for single-class, open networks with K service centers.

INPUTS

lambda

overall arrival rate to the system (scalar, lambda ≥ 0).

D(k)

service demand at center k (D(k) ≥ 0).

S(k)

service time at center k (S(k) ≥ 0).

V(k)

mean number of visits at center k (V(k) ≥ 0).

m(k)

number of servers at center k. This function only supports M/M/1 queues, therefore m must be ones(size(S)).

OUTPUTS

Xl
Xu

Lower and upper bounds on the system throughput. Xl is always set to 0, since there can be no lower bound on open networks throughput.

Rl
Ru

Lower and upper bounds on the system response time.


See also: qnosaba.

Function File: [Xl, Xu, Rl, Ru] = qncsbsb (N, D)
Function File: [Xl, Xu, Rl, Ru] = qncsbsb (N, S, V)
Function File: [Xl, Xu, Rl, Ru] = qncsbsb (N, S, V, m)
Function File: [Xl, Xu, Rl, Ru] = qncsbsb (N, S, V, m, Z)

Compute Balanced System Bounds on system throughput and response time for closed, single-class networks with K service centers.

INPUTS

N

number of requests in the system (scalar, N ≥ 0).

D(k)

service demand at center k (D(k) ≥ 0).

S(k)

mean service time at center k (S(k) ≥ 0).

V(k)

average number of visits to center k (V(k) ≥ 0). Default is 1.

m(k)

number of servers at center k. This function supports m(k) = 1 only (single-eserver FCFS nodes); this parameter is only for compatibility with qncsaba. Default is 1.

Z

External delay (Z ≥ 0). Default is 0.

OUTPUTS

Xl
Xu

Lower and upper bound on the system throughput.

Rl
Ru

Lower and upper bound on the system response time.

REFERENCES

  • Edward D. Lazowska, John Zahorjan, G. Scott Graham, and Kenneth C. Sevcik, Quantitative System Performance: Computer System Analysis Using Queueing Network Models, Prentice Hall, 1984. http://www.cs.washington.edu/homes/lazowska/qsp/. In particular, see section 5.4 ("Balanced Systems Bounds").

See also: qncmbsb.

Function File: [Xl, Xu, Rl, Ru] = qncmbsb (N, D)
Function File: [Xl, Xu, Rl, Ru] = qncmbsb (N, S, V)

Compute Balanced System Bounds for closed, multiclass networks with K service centers and C customer classes. Only single-server nodes are supported.

INPUTS

N(c)

number of class c requests in the system (vector of length C).

D(c, k)

class c service demand at center k (C \times K matrix, D(c,k) ≥ 0).

S(c, k)

mean service time of class c requests at center k (C \times K matrix, S(c,k) ≥ 0).

V(c,k)

average number of visits of class c requests to center k (C \times K matrix, V(c,k) ≥ 0).

OUTPUTS

Xl(c)
Xu(c)

Lower and upper class c throughput bounds (vector of length C).

Rl(c)
Ru(c)

Lower and upper class c response time bounds (vector of length C).


See also: qncsbsb.

Function File: [Xl, Xu, Rl, Ru] = qncmcb (N, D)
Function File: [Xl, Xu, Rl, Ru] = qncmcb (N, S, V)

Compute Composite Bounds (CB) on system throughput and response time for closed multiclass networks.

INPUTS

N(c)

number of class c requests in the system.

D(c, k)

class c service demand at center k (S(c,k) ≥ 0).

S(c, k)

mean service time of class c requests at center k (S(c,k) ≥ 0).

V(c,k)

average number of visits of class c requests to center k (V(c,k) ≥ 0).

OUTPUTS

Xl(c)
Xu(c)

Lower and upper bounds on class c throughput.

Rl(c)
Ru(c)

Lower and upper bounds on class c response time.

REFERENCES

  • Teemu Kerola, The Composite Bound Method (CBM) for Computing Throughput Bounds in Multiple Class Environments, Performance Evaluation Vol. 6, Issue 1, March 1986, DOI 10.1016/0166-5316(86)90002-7. Also available as Technical Report CSD-TR-475, Department of Computer Sciences, Purdue University, mar 13, 1984 (Revised Aug 27, 1984).
Function File: [Xl, Xu, Rl, Ru] = qncspb (N, D )
Function File: [Xl, Xu, Rl, Ru] = qncspb (N, S, V )
Function File: [Xl, Xu, Rl, Ru] = qncspb (N, S, V, m )
Function File: [Xl, Xu, Rl, Ru] = qncspb (N, S, V, m, Z )

Compute PB Bounds (C. H. Hsieh and S. Lam, 1987) for single-class, closed networks with K service centers.

INPUTS

number of requests in the system (scalar, N > 0).

D(k)

service demand of service center k (D(k) ≥ 0).

S(k)

mean service time at center k (S(k) ≥ 0).

V(k)

visit ratio to center k (V(k) ≥ 0).

m(k)

number of servers at center k. This function only supports M/M/1 queues, therefore m must be ones(size(S)).

Z

external delay (think time, Z ≥ 0). Default 0.

OUTPUTS

Xl
Xu

Lower and upper bounds on the system throughput.

Rl
Ru

Lower and upper bounds on the system response time.

REFERENCES

  • C. H. Hsieh and S. Lam, Two classes of performance bounds for closed queueing networks, Performance Evaluation, Vol. 7 Issue 1, pp. 3–30, February 1987, DOI 10.1016/0166-5316(87)90054-X. Also available as Technical Report TR-85-09, Department of Computer Science, University of Texas at Austin, June 1985

This function implements the non-iterative variant described in G. Casale, R. R. Muntz, G. Serazzi, Geometric Bounds: a Non-Iterative Analysis Technique for Closed Queueing Networks, IEEE Transactions on Computers, 57(6):780-794, June 2008.


See also: qncsaba, qbcsbsb, qncsgb.

Function File: [Xl, Xu, Rl, Ru, Ql, Qu] = qncsgb (N, D)
Function File: [Xl, Xu, Rl, Ru, Ql, Qu] = qncsgb (N, S, V)
Function File: [Xl, Xu, Rl, Ru, Ql, Qu] = qncsgb (N, S, V, m)
Function File: [Xl, Xu, Rl, Ru, Ql, Qu] = qncsgb (N, S, V, m, Z)

Compute Geometric Bounds (GB) on system throughput, system response time and server queue lenghts for closed, single-class networks with K service centers and N requests.

INPUTS

N

number of requests in the system (scalar, N > 0).

D(k)

service demand of service center k (vector of length K, D(k) ≥ 0).

S(k)

mean service time at center k (vector of length K, S(k) ≥ 0).

V(k)

visit ratio to center k (vector of length K, V(k) ≥ 0).

m(k)

number of servers at center k. This function only supports M/M/1 queues, therefore m must be ones(size(S)).

Z

external delay (think time, Z ≥ 0, scalar). Default is 0.

OUTPUTS

Xl
Xu

Lower and upper bound on the system throughput. If Z>0, these bounds are computed using Geometric Square-root Bounds (GSB). If Z==0, these bounds are computed using Geometric Bounds (GB)

Rl
Ru

Lower and upper bound on the system response time. These bounds are derived from Xl and Xu using Little’s Law: Rl = N / Xu - Z, Ru = N / Xl - Z

Ql(k)
Qu(k)

lower and upper bounds of center K queue length.

REFERENCES

  • G. Casale, R. R. Muntz, G. Serazzi, Geometric Bounds: a Non-Iterative Analysis Technique for Closed Queueing Networks, IEEE Transactions on Computers, 57(6):780-794, June 2008. 10.1109/TC.2008.37

In this implementation we set X^+ and X^- as the upper and lower Asymptotic Bounds as computed by the qncsab function, respectively.


5.6 QN Analysis Examples

In this section we illustrate with a few examples how the queueing package can be used to analyze queueing network models. Further examples can be found in the functions demo blocks, and can be inspected with the demo function Octave command.

5.6.1 Closed, Single Class Network

Let us consider again the network shown in Figure 5.1. We denote with S_k the average service time at center k, k=1, 2, 3. Let the service times be S_1 = 1.0, S_2 = 2.0 and S_3 = 0.8. The routing of jobs within the network is described with a routing probability matrix \bf P: a request completing service at center i is enqueued at center j with probability P_{i, j}. We use the following routing matrix:

    / 0  0.3  0.7 \
P = | 1  0    0   |
    \ 1  0    0   /

The network above can be analyzed with the qnclosed function see doc-qnclosed. qnclosed requires the following parameters:

N

Number of requests in the network (since we are considering a closed network, the number of requests is fixed)

S

Array of average service times at the centers: S(k) is the average service time at center k.

V

Array of visit ratios: V(k) is the average number of visits to center k.

We can compute V_k from the routing probability matrix P_{i, j} using the qncsvisits function see doc-qncsvisits. Therefore, we can analyze the network for a given population size N (e.g., N=10) as follows:

N = 10;
S = [1 2 0.8];
P = [0 0.3 0.7; 1 0 0; 1 0 0];
V = qncsvisits(P);
[U R Q X] = qnclosed( N, S, V )
   ⇒ U = 0.99139 0.59483 0.55518
   ⇒ R = 7.4360  4.7531  1.7500
   ⇒ Q = 7.3719  1.4136  1.2144
   ⇒ X = 0.99139 0.29742 0.69397

The output of qnclosed includes the vectors of utilizations U_k at center k, response time R_k, average number of customers Q_k and throughput X_k. In our example, the throughput of center 1 is X_1 = 0.99139, and the average number of requests in center 3 is Q_3 = 1.2144. The utilization of center 1 is U_1 = 0.99139, which is the highest among the service centers. Thus, center 1 is the bottleneck device.

This network can also be analyzed with the qnsolve function see doc-qnsolve. qnsolve can handle open, closed or mixed networks, and allows the network to be described in a very flexible way. First, let Q1, Q2 and Q3 be the variables describing the service centers. Each variable is instantiated with the qnmknode function.

Q1 = qnmknode( "m/m/m-fcfs", 1 );
Q2 = qnmknode( "m/m/m-fcfs", 2 );
Q3 = qnmknode( "m/m/m-fcfs", 0.8 );

The first parameter of qnmknode is a string describing the type of the node; "m/m/m-fcfs" denotes a M/M/m–FCFS center (this parameter is case-insensitive). The second parameter gives the average service time. An optional third parameter can be used to specify the number m of service centers. If omitted, it is assumed m=1 (single-server node).

Now, the network can be analyzed as follows:

N = 10;
V = [1 0.3 0.7];
[U R Q X] = qnsolve( "closed", N, { Q1, Q2, Q3 }, V )
   ⇒ U = 0.99139 0.59483 0.55518
   ⇒ R = 7.4360  4.7531  1.7500
   ⇒ Q = 7.3719  1.4136  1.2144
   ⇒ X = 0.99139 0.29742 0.69397

5.6.2 Open, Single Class Network

Let us consider an open network with K=3 service centers and the following routing probabilities:

    / 0  0.3  0.5 \
P = ! 1  0    0   |
    \ 1  0    0   /

In this network, requests can leave the system from center 1 with probability 1-(0.3+0.5) = 0.2. We suppose that external jobs arrive at center 1 with rate \lambda_1 = 0.15; there are no arrivals at centers 2 and 3.

Similarly to closed networks, we first compute the visit counts V_k to center k, k = 1, 2, 3. We use the qnosvisits function as follows:

P = [0 0.3 0.5; 1 0 0; 1 0 0];
lambda = [0.15 0 0];
V = qnosvisits(P, lambda)
   ⇒ V = 5.00000 1.50000 2.50000

where lambda(k) is the arrival rate at center k, and \bf P is the routing matrix. Assuming the same service times as in the previous example, the network can be analyzed with the qnopen function see doc-qnopen, as follows:

S = [1 2 0.8];
[U R Q X] = qnopen( sum(lambda), S, V )
   ⇒ U = 0.75000 0.45000 0.30000
   ⇒ R = 4.0000  3.6364  1.1429
   ⇒ Q = 3.00000 0.81818 0.42857
   ⇒ X = 0.75000 0.22500 0.37500

The first parameter of the qnopen function is the (scalar) aggregate arrival rate.

Again, it is possible to use the qnsolve high-level function:

Q1 = qnmknode( "m/m/m-fcfs", 1 );
Q2 = qnmknode( "m/m/m-fcfs", 2 );
Q3 = qnmknode( "m/m/m-fcfs", 0.8 );
lambda = [0.15 0 0];
[U R Q X] = qnsolve( "open", sum(lambda), { Q1, Q2, Q3 }, V )
   ⇒ U = 0.75000 0.45000 0.30000
   ⇒ R = 4.0000  3.6364  1.1429
   ⇒ Q = 3.00000 0.81818 0.42857
   ⇒ X = 0.75000 0.22500 0.37500

5.6.3 Closed Multiclass Network/1

The following example is taken from Herb Schwetman, Implementing the Mean Value Algorithm for the Solution of Queueing Network Models, Technical Report CSD-TR-355, Department of Computer Sciences, Purdue University, Feb 15, 1982.

Let us consider the following multiclass QN with three servers and two classes

qn_closed_multi_apl

Figure 5.3

Servers 1 and 2 (labeled APL and IMS, respectively) are infinite server nodes; server 3 (labeled SYS) is Processor Sharing (PS). Mean service times are given in the following table:

APLIMSSYS
Class 11-0.025
Class 2-150.500

There is no class switching. If we assume a population of 15 requests for class 1, and 5 requests for class 2, then the model can be analyzed as follows:

 S = [1 0 .025; 0 15 .5];
 P = zeros(2,3,2,3);
 P(1,1,1,3) = P(1,3,1,1) = 1;
 P(2,2,2,3) = P(2,3,2,2) = 1;
 V = qncmvisits(P,[3 3]); # reference station is station 3
 N = [15 5];
 m = [-1 -1 1];
 [U R Q X] = qncmmva(N,S,V,m)
  ⇒
U =

   14.32312    0.00000    0.35808
    0.00000    4.70699    0.15690

R =

    1.00000    0.00000    0.04726
    0.00000   15.00000    0.93374

Q =

   14.32312    0.00000    0.67688
    0.00000    4.70699    0.29301

X =

   14.32312    0.00000   14.32312
    0.00000    0.31380    0.31380

5.6.4 Closed Multiclass Network/2

The following example is from M. Marzolla, The qnetworks Toolbox: A Software Package for Queueing Networks Analysis, Technical Report UBLCS-2010-04, Department of Computer Science, University of Bologna, Italy, February 2010.

qn_web_model

Figure 5.4: Three-tier enterprise system model

The model shown in Figure 5.4 shows a three-tier enterprise system with K=6 service centers. The first tier contains the Web server (node 1), which is responsible for generating Web pages and transmitting them to clients. The application logic is implemented by nodes 2 and 3, and the storage tier is made of nodes 4–6.The system is subject to two workload classes, both represented as closed populations of N_1 and N_2 requests, respectively. Let D_{c, k} denote the service demand of class c requests at center k. We use the parameter values:

Serv. no.NameClass 1Class 2
1Web Server122
2App. Server 11420
3App. Server 22314
4DB Server 12090
5DB Server 28030
6DB Server 33133

We set the total number of requests to 100, that is N_1 + N_2 = N = 100, and we study how different population mixes (N_1, N_2) affect the system throughput and response time. Let 0 < \beta_1 < 1 denote the fraction of class 1 requests: N_1 = \beta_1 N, N_2 = (1-\beta_1)N. The following Octave code defines the model for \beta_1 = 0.1:

N = 100;     # total population size
beta1 = 0.1; # fraction of class 1 reqs.
S = [12 14 23 20 80 31; \
      2 20 14 90 30 33 ];
V = ones(size(S));
pop = [fix(beta1*N) N-fix(beta1*N)];
[U R Q X] = qncmmva(pop, S, V);

The qncmmva(pop, S, V) function invocation uses the multiclass MVA algorithm to compute per-class utilizations U_{c, k}, response times R_{c,k}, mean queue lengths Q_{c,k} and throughputs X_{c,k} at each service center k, given a population vector pop, mean service times S and visit ratios V. Since we are given the service demands D_{c, k} = S_{c, k} V_{c,k}, but function qncmmva requires separate service times and visit ratios, we set the service times equal to the demands, and all visit ratios equal to one. Overall class and system throughputs and response times can also be computed:

X1 = X(1,1) / V(1,1)     # class 1 throughput
        ⇒ X1 =  0.0044219
X2 = X(2,1) / V(2,1)     # class 2 throughput
        ⇒ X2 =  0.010128
XX = X1 + X2             # system throughput
        ⇒ XX =  0.014550
R1 = dot(R(1,:), V(1,:)) # class 1 resp. time
        ⇒ R1 =  2261.5
R2 = dot(R(2,:), V(2,:)) # class 2 resp. time
        ⇒ R2 =  8885.9
RR = N / XX              # system resp. time
        ⇒ RR =  6872.7

dot(X,Y) computes the dot product of two vectors. R(1,:) is the first row of matrix R and V(1,:) is the first row of matrix V, so dot(R(1,:), V(1,:)) computes \sum_k R_{1,k} V_{1,k}.

web

Figure 5.5: Throughput and Response Times as a function of the population mix

We can also compute the system power \Phi = X / R, which defines how efficiently resources are being used: high values of \Phi denote the desirable situation of high throughput and low response time. Figure 5.6 shows \Phi as a function of \beta_1. We observe a “plateau” of the global system power, corresponding to values of \beta_1 which approximately lie between 0.3 and 0.7. The per-class power exhibits an interesting (although not completely surprising) pattern, where the class with higher population exhibits worst efficiency as it produces higher contention on the resources.

power

Figure 5.6: System Power as a function of the population mix

5.6.5 Closed Multiclass Network/3

We now consider an example of multiclass network with class switching. The example is taken from Sch82, and is shown in Figure Figure 5.7.

qn_closed_multi_cs

Figure 5.7: Multiclass Model with Class Switching

The system consists of three devices and two job classes. The CPU node is a PS server, while the two nodes labeled I/O are FCFS. Class 1 mean service time at the CPU is 0.01; class 2 mean service time at the CPU is 0.05. The mean service time at node 2 is 0.1, and is class-independent. Similarly, the mean service time at node 3 is 0.07. Jobs in class 1 leave the CPU and join class 2 with probability 0.1; jobs of class 2 leave the CPU and join class 1 with probability 0.2. There are N=3 jobs, which are initially allocated to class 1. However, note that since class switching is allowed, the total number of jobs in each class does not remain constant; however the total number of jobs does.

 C = 2; K = 3;
 S = [.01 .07 .10; ...
      .05 .07 .10 ];
 P = zeros(C,K,C,K);
 P(1,1,1,2) = .7; P(1,1,1,3) = .2; P(1,1,2,1) = .1;
 P(2,1,2,2) = .3; P(2,1,2,3) = .5; P(2,1,1,1) = .2;
 P(1,2,1,1) = P(2,2,2,1) = 1;
 P(1,3,1,1) = P(2,3,2,1) = 1;
 N = [3 0];
 [U R Q X] = qncmmva(N, S, P)
  ⇒
U =

   0.12609   0.61784   0.25218
   0.31522   0.13239   0.31522

R =

   0.014653   0.133148   0.163256
   0.073266   0.133148   0.163256

Q =

   0.18476   1.17519   0.41170
   0.46190   0.25183   0.51462

X =

   12.6089    8.8262    2.5218
    6.3044    1.8913    3.1522

Next: , Previous: , Up: Top   [Contents][Index]

6 References

[Aky88]

Ian F. Akyildiz, Mean Value Analysis for Blocking Queueing Networks, IEEE Transactions on Software Engineering, vol. 14, n. 2, april 1988, pp. 418–428. DOI 10.1109/32.4663

[Bar79]

Y. Bard, Some Extensions to Multiclass Queueing Network Analysis, proc. 4th Int. Symp. on Modelling and Performance Evaluation of Computer Systems, feb. 1979, pp. 51–62.

[BCMP75]

F. Baskett, K. Mani Chandy, R. R. Muntz, and F. G. Palacios. 1975. Open, Closed, and Mixed Networks of Queues with Different Classes of Customers. J. ACM 22, 2 (April 1975), 248—260, DOI 10.1145/321879.321887

[BGMT98]

G. Bolch, S. Greiner, H. de Meer and K. Trivedi, Queueing Networks and Markov Chains: Modeling and Performance Evaluation with Computer Science Applications, Wiley, 1998.

[Buz73]

J. P. Buzen, Computational Algorithms for Closed Queueing Networks with Exponential Servers, Communications of the ACM, volume 16, number 9, september 1973, pp. 527–531. DOI 10.1145/362342.362345

[C08]

G. Casale, A note on stable flow-equivalent aggregation in closed networks. Queueing Syst. Theory Appl., 60:193–-202, December 2008, DOI 10.1007/s11134-008-9093-6

[CMS08]

G. Casale, R. R. Muntz, G. Serazzi, Geometric Bounds: a Non-Iterative Analysis Technique for Closed Queueing Networks, IEEE Transactions on Computers, 57(6):780-794, June 2008. DOI 10.1109/TC.2008.37

[GrSn97]

C. M. Grinstead, J. L. Snell, (July 1997). Introduction to Probability. American Mathematical Society. ISBN 978-0821807491; this excellent textbook is available in PDF format and can be used under the terms of the GNU Free Documentation License (FDL)

[Jac04]

J. R. Jackson, Jobshop-Like Queueing Systems, Vol. 50, No. 12, Ten Most Influential Titles of "Management Science’s" First Fifty Years (Dec., 2004), pp. 1796-1802, available online

[Jai91]

R. Jain, The Art of Computer Systems Performance Analysis, Wiley, 1991, p. 577.

[HsLa87]

C. H. Hsieh and S. Lam, Two classes of performance bounds for closed queueing networks, PEVA, vol. 7, n. 1, pp. 3–30, 1987

[Ker84]

T. Kerola, The Composite Bound Method (CBM) for Computing Throughput Bounds in Multiple Class Environments, Performance Evaluation, Vol. 6 Isue 1, March 1986, DOI 10.1016/0166-5316(86)90002-7; also available as Technical Report CSD-TR-475, Department of Computer Sciences, Purdue University, mar 13, 1984 (Revised aug 27, 1984).

[LZGS84]

E. D. Lazowska, J. Zahorjan, G. Scott Graham, and K. C. Sevcik, Quantitative System Performance: Computer System Analysis Using Queueing Network Models, Prentice Hall, 1984. available online.

[ReKo76]

M. Reiser, H. Kobayashi, On The Convolution Algorithm for Separable Queueing Networks, In Proceedings of the 1976 ACM SIGMETRICS Conference on Computer Performance Modeling Measurement and Evaluation (Cambridge, Massachusetts, United States, March 29–31, 1976). SIGMETRICS ’76. ACM, New York, NY, pp. 109–117. DOI 10.1145/800200.806187

[ReLa80]

M. Reiser and S. S. Lavenberg, Mean-Value Analysis of Closed Multichain Queuing Networks, Journal of the ACM, vol. 27, n. 2, April 1980, pp. 313–322. DOI 10.1145/322186.322195

[Sch79]

P. Schweitzer, Approximate Analysis of Multiclass Closed Networks of Queues, Proc. Int. Conf. on Stochastic Control and Optimization, jun 1979, pp. 25—29

[Sch80]

H. D. Schwetman, Testing Network-of-Queues Software, Technical Report CSD-TR 330, Department of computer Sciences, Purdue University, 1980

[Sch81]

H. D. Schwetman, Some Computational Aspects of Queueing Network Models, Technical Report CSD-TR-354, Department of Computer Sciences, Purdue University, feb, 1981 (revised).

[Sch82]

H. D. Schwetman, Implementing the Mean Value Algorithm for the Solution of Queueing Network Models, Technical Report CSD-TR-355, Department of Computer Sciences, Purdue University, feb 15, 1982.

[Sch84]

T. Kerola, H. D. Schwetman, Performance Bounds for Multiclass Models, Technical Report CSD-TR-479, Department of Computer Sciences, Purdue University, 1984.

[Tij03]

H. C. Tijms, A first course in stochastic models, John Wiley and Sons, 2003, ISBN 0471498807, ISBN 9780471498803, DOI 10.1002/047001363X

[ZaWo81]

J. Zahorjan and E. Wong, The solution of separable queueing network models using mean value analysis. SIGMETRICS Perform. Eval. Rev. 10, 3 (Sep. 1981), 80-85. DOI 10.1145/1010629.805477

[Zeng03]

G. Zeng, Two common properties of the erlang-B function, erlang-C function, and Engset blocking function, Mathematical and Computer Modelling, Volume 37, Issues 12-13, June 2003, Pages 1287-1296 DOI 10.1016/S0895-7177(03)90040-9


Next: , Previous: , Up: Top   [Contents][Index]

Appendix A GNU GENERAL PUBLIC LICENSE

Version 3, 29 June 2007
Copyright © 2007 Free Software Foundation, Inc. http://fsf.org/

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.

Preamble

The GNU General Public License is a free, copyleft license for software and other kinds of works.

The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program—to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too.

When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things.

To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others.

For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.

Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it.

For the developers’ and authors’ protection, the GPL clearly explains that there is no warranty for this free software. For both users’ and authors’ sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions.

Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users’ freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users.

Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free.

The precise terms and conditions for copying, distribution and modification follow.

TERMS AND CONDITIONS

  1. Definitions.

    “This License” refers to version 3 of the GNU General Public License.

    “Copyright” also means copyright-like laws that apply to other kinds of works, such as semiconductor masks.

    “The Program” refers to any copyrightable work licensed under this License. Each licensee is addressed as “you”. “Licensees” and “recipients” may be individuals or organizations.

    To “modify” a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a “modified version” of the earlier work or a work “based on” the earlier work.

    A “covered work” means either the unmodified Program or a work based on the Program.

    To “propagate” a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well.

    To “convey” a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying.

    An interactive user interface displays “Appropriate Legal Notices” to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion.

  2. Source Code.

    The “source code” for a work means the preferred form of the work for making modifications to it. “Object code” means any non-source form of a work.

    A “Standard Interface” means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language.

    The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it.

    The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work’s System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work.

    The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source.

    The Corresponding Source for a work in source code form is that same work.

  3. Basic Permissions.

    All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law.

    You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you.

    Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary.

  4. Protecting Users’ Legal Rights From Anti-Circumvention Law.

    No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures.

    When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work’s users, your or third parties’ legal rights to forbid circumvention of technological measures.

  5. Conveying Verbatim Copies.

    You may convey verbatim copies of the Program’s source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program.

    You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee.

  6. Conveying Modified Source Versions.

    You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions:

    1. The work must carry prominent notices stating that you modified it, and giving a relevant date.
    2. The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to “keep intact all notices”.
    3. You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it.
    4. If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so.

    A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an “aggregate” if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation’s users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate.

  7. Conveying Non-Source Forms.

    You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways:

    1. Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange.
    2. Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge.
    3. Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b.
    4. Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements.
    5. Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d.

    A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work.

    A “User Product” is either (1) a “consumer product”, which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, “normally used” refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product.

    “Installation Information” for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made.

    If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM).

    The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network.

    Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying.

  8. Additional Terms.

    “Additional permissions” are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions.

    When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission.

    Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms:

    1. Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or
    2. Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or
    3. Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or
    4. Limiting the use for publicity purposes of names of licensors or authors of the material; or
    5. Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or
    6. Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors.

    All other non-permissive additional terms are considered “further restrictions” within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying.

    If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms.

    Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way.

  9. Termination.

    You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11).

    However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation.

    Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice.

    Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10.

  10. Acceptance Not Required for Having Copies.

    You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so.

  11. Automatic Licensing of Downstream Recipients.

    Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License.

    An “entity transaction” is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party’s predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts.

    You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it.

  12. Patents.

    A “contributor” is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor’s “contributor version”.

    A contributor’s “essential patent claims” are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, “control” includes the right to grant patent sublicenses in a manner consistent with the requirements of this License.

    Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor’s essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version.

    In the following three paragraphs, a “patent license” is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To “grant” such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party.

    If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. “Knowingly relying” means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient’s use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid.

    If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it.

    A patent license is “discriminatory” if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007.

    Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law.

  13. No Surrender of Others’ Freedom.

    If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program.

  14. Use with the GNU Affero General Public License.

    Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such.

  15. Revised Versions of this License.

    The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.

    Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation.

    If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy’s public statement of acceptance of a version permanently authorizes you to choose that version for the Program.

    Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version.

  16. Disclaimer of Warranty.

    THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

  17. Limitation of Liability.

    IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

  18. Interpretation of Sections 15 and 16.

    If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee.

END OF TERMS AND CONDITIONS

How to Apply These Terms to Your New Programs

If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.

To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the “copyright” line and a pointer to where the full notice is found.

one line to give the program's name and a brief idea of what it does.  
Copyright (C) year name of author

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or (at
your option) any later version.

This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see http://www.gnu.org/licenses/.

Also add information on how to contact you by electronic and paper mail.

If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode:

program Copyright (C) year name of author 
This program comes with ABSOLUTELY NO WARRANTY; for details type ‘show w’.
This is free software, and you are welcome to redistribute it
under certain conditions; type ‘show c’ for details.

The hypothetical commands ‘show w’ and ‘show c’ should show the appropriate parts of the General Public License. Of course, your program’s commands might be different; for a GUI interface, you would use an “about box”.

You should also get your employer (if you work as a programmer) or school, if any, to sign a “copyright disclaimer” for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see http://www.gnu.org/licenses/.

The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read http://www.gnu.org/philosophy/why-not-lgpl.html.


Next: , Previous: , Up: Top   [Contents][Index]

Concept Index

Jump to:   A   B   C   D   E   F   G   I   L   M   N   O   P   Q   R   S   T   U   W  
Index Entry  Section

A
absorption probabilities, DTMC: Mean time to absorption (DTMC)
approximate MVA: Single Class Models
asymmetric M/M/m system: The Asymmetric M/M/m System
asymptotic bounds: Bounds Analysis
asymptotic bounds: Bounds Analysis
average number of customers: Single Class Models
average number of customers: Multiple Class Models
average number of visits: Single Class Models
average number of visits: Multiple Class Models

B
balanced system bounds: Bounds Analysis
balanced system bounds: Bounds Analysis
BCMP network: Single Class Models
birth-death process, CTMC: Birth-death process (CTMC)
birth-death process, DTMC: Birth-death process (DTMC)
blocking queueing network: Single Class Models
blocking queueing network: Single Class Models
bounds, asymptotic: Bounds Analysis
bounds, asymptotic: Bounds Analysis
bounds, asymptotic: Bounds Analysis
bounds, asymptotic: Bounds Analysis
bounds, balanced system: Bounds Analysis
bounds, balanced system: Bounds Analysis
bounds, balanced system: Bounds Analysis
bounds, composite: Bounds Analysis
bounds, geometric: Bounds Analysis
bounds, PB: Bounds Analysis

C
closed multiclass network: Bounds Analysis
closed multiclass network: Bounds Analysis
closed multiclass network: Bounds Analysis
closed network: Single Class Models
closed network: Bounds Analysis
closed network: Bounds Analysis
closed network, approximate analysis: Single Class Models
closed network, finite capacity: Single Class Models
closed network, finite capacity: Single Class Models
closed network, multiple classes: Multiple Class Models
closed network, multiple classes: Multiple Class Models
closed network, multiple classes: Multiple Class Models
closed network, multiple classes: Multiple Class Models
closed network, multiple classes: Generic Algorithms
closed network, single class: Single Class Models
closed network, single class: Single Class Models
closed network, single class: Single Class Models
closed network, single class: Single Class Models
closed network, single class: Single Class Models
closed network, single class: Single Class Models
closed network, single class: Generic Algorithms
closed network, single class: Bounds Analysis
closed network, single class: Bounds Analysis
closed network, single class: Bounds Analysis
CMVA: Single Class Models
composite bounds: Bounds Analysis
conditional MVA (CMVA): Single Class Models
continuous time Markov chain: Continuous-Time Markov Chains
continuous time Markov chain: State occupancy probabilities (CTMC)
continuous time Markov chain: Birth-death process (CTMC)
continuous time Markov chain: Expected sojourn times (CTMC)
continuous time Markov chain: Time-averaged expected sojourn times (CTMC)
continuous time Markov chain: Mean time to absorption (CTMC)
continuous time Markov chain: First passage times (CTMC)
convolution algorithm: Single Class Models
convolution algorithm: Single Class Models
copyright: Copying
CTMC: Continuous-Time Markov Chains
CTMC: State occupancy probabilities (CTMC)
CTMC: Birth-death process (CTMC)
CTMC: Expected sojourn times (CTMC)
CTMC: Time-averaged expected sojourn times (CTMC)
CTMC: Mean time to absorption (CTMC)
CTMC: First passage times (CTMC)

D
delay center: Introduction to QNs
deprecated functions: Naming Conventions
discrete time Markov chain: Discrete-Time Markov Chains
discrete time Markov chain: Discrete-Time Markov Chains
discrete time Markov chain: State occupancy probabilities (DTMC)
discrete time Markov chain: Birth-death process (DTMC)
discrete time Markov chain: Expected number of visits (DTMC)
discrete time Markov chain: Time-averaged expected sojourn times (DTMC)
discrete time Markov chain: Mean time to absorption (DTMC)
discrete time Markov chain: First passage times (DTMC)
DTMC: Discrete-Time Markov Chains
DTMC: Discrete-Time Markov Chains
DTMC: State occupancy probabilities (DTMC)
DTMC: Birth-death process (DTMC)
DTMC: Expected number of visits (DTMC)
DTMC: Time-averaged expected sojourn times (DTMC)
DTMC: Mean time to absorption (DTMC)
DTMC: First passage times (DTMC)

E
Engset loss formula: The Engset Formula
Erlang-B formula: The Erlang-B Formula
Erlang-C formula: The Erlang-C Formula
expected sojourn time, CTMC: Expected sojourn times (CTMC)
expected sojourn times, DTMC: Expected number of visits (DTMC)
external arrival rate: Single Class Models
external arrival rate: Multiple Class Models

F
FCFS: Introduction to QNs
first passage times: First passage times (DTMC)
first passage times, CTMC: First passage times (CTMC)
First-Come-First-Served: Introduction to QNs
fundamental matrix: Mean time to absorption (DTMC)

G
geometric bounds: Bounds Analysis

I
infinite server: Introduction to QNs
Infinite Server: Introduction to QNs
irreducible Markov chain: Discrete-Time Markov Chains
irreducible Markov chain: Continuous-Time Markov Chains
IS: Introduction to QNs

L
Last-Come-First-Served Preemptive Resume: Introduction to QNs
LCFS-PR: Introduction to QNs
load-dependent service center: Single Class Models
load-dependent service center: Single Class Models

M
M/G/1 system: The M/G/1 System
M/H_m/1 system: The M/Hm/1 System
M/M/1 system: The M/M/1 System
M/M/1/K system: The M/M/1/K System
M/M/inf system: The M/M/inf System
M/M/m system: The M/M/m System
M/M/m/K system: The M/M/m/K System
Markov chain, continuous time: Continuous-Time Markov Chains
Markov chain, continuous time: Continuous-Time Markov Chains
Markov chain, continuous time: State occupancy probabilities (CTMC)
Markov chain, continuous time: Birth-death process (CTMC)
Markov chain, continuous time: Expected sojourn times (CTMC)
Markov chain, continuous time: Time-averaged expected sojourn times (CTMC)
Markov chain, continuous time: Mean time to absorption (CTMC)
Markov chain, continuous time: First passage times (CTMC)
Markov chain, discrete time: Discrete-Time Markov Chains
Markov chain, discrete time: Discrete-Time Markov Chains
Markov chain, discrete time: State occupancy probabilities (DTMC)
Markov chain, discrete time: Birth-death process (DTMC)
Markov chain, discrete time: Expected number of visits (DTMC)
Markov chain, discrete time: Time-averaged expected sojourn times (DTMC)
Markov chain, discrete time: Mean time to absorption (DTMC)
Markov chain, discrete time: First passage times (DTMC)
Markov chain, state occupancy probabilities: State occupancy probabilities (CTMC)
Markov chain, stationary probabilities: State occupancy probabilities (DTMC)
Markov chain, transient probabilities: State occupancy probabilities (DTMC)
mean recurrence times: First passage times (DTMC)
mean time to absorption, CTMC: Mean time to absorption (CTMC)
mean time to absorption, DTMC: Mean time to absorption (DTMC)
Mean Value Analysis, conditional (CMVA): Single Class Models
Mean Value Analysys (MVA): Single Class Models
Mean Value Analysys (MVA): Single Class Models
Mean Value Analysys (MVA): Multiple Class Models
Mean Value Analysys (MVA): Multiple Class Models
Mean Value Analysys (MVA), approximate: Single Class Models
Mean Value Analysys (MVA), approximate: Multiple Class Models
mixed network: Multiple Class Models
multiclass network, closed: Multiple Class Models
multiclass network, closed: Multiple Class Models
multiclass network, closed: Bounds Analysis
multiclass network, closed: Bounds Analysis
multiclass network, closed: Bounds Analysis
multiclass network, open: Multiple Class Models
multiclass network, open: Bounds Analysis
multiple class queueing network: Introduction to QNs
multiple class queueing network: Multiple Class Models
MVA: Single Class Models
MVA, approximate: Single Class Models
MVA, approximate: Multiple Class Models
MVABLO: Single Class Models

N
normalization constant: Single Class Models
normalization constant: Single Class Models
normalization constant: Single Class Models

O
open network: Generic Algorithms
open network: Bounds Analysis
open network: Bounds Analysis
open network: Bounds Analysis
open network, multiple classes: Multiple Class Models
open network, single class: Single Class Models
open network, single class: Single Class Models

P
PB bounds: Bounds Analysis
population mix: Multiple Class Models
population mix: Multiple Class Models
Processor Sharing: Introduction to QNs
product-form queueing network: Introduction to QNs
PS: Introduction to QNs

Q
queueing network with blocking: Single Class Models
queueing network, multiple class: Introduction to QNs
queueing network, multiple class: Multiple Class Models
queueing network, product-form: Introduction to QNs
queueing network, single class: Introduction to QNs
queueing network, single class: Single Class Models
queueing networks: Queueing Networks

R
response time: Single Class Models
response time: Multiple Class Models
routing probability matrix: Single Class Models
routing probability matrix: Multiple Class Models
RS blocking: Single Class Models

S
service time: Single Class Models
service time: Multiple Class Models
single class queueing network: Introduction to QNs
single class queueing network: Single Class Models
stationary probabilities: State occupancy probabilities (CTMC)
stochastic matrix: Discrete-Time Markov Chains
system response time: Single Class Models
system response time: Multiple Class Models
system throughput: Single Class Models
system throughput: Multiple Class Models

T
throughput: Single Class Models
throughput: Multiple Class Models
time-alveraged sojourn time, CTMC: Time-averaged expected sojourn times (CTMC)
time-alveraged sojourn time, DTMC: Time-averaged expected sojourn times (DTMC)
traffic intensity: The M/M/inf System

U
utilization: Single Class Models
utilization: Multiple Class Models

W
warranty: Copying

Jump to:   A   B   C   D   E   F   G   I   L   M   N   O   P   Q   R   S   T   U   W  

Previous: , Up: Top   [Contents][Index]

Function Index

Jump to:   C   D   E   Q  
Index Entry  Section

C
ctmc: State occupancy probabilities (CTMC)
ctmc: State occupancy probabilities (CTMC)
ctmcbd: Birth-death process (CTMC)
ctmcchkQ: Continuous-Time Markov Chains
ctmcexps: Expected sojourn times (CTMC)
ctmcexps: Expected sojourn times (CTMC)
ctmcfpt: First passage times (CTMC)
ctmcfpt: First passage times (CTMC)
ctmcisir: Continuous-Time Markov Chains
ctmcmtta: Mean time to absorption (CTMC)
ctmctaexps: Time-averaged expected sojourn times (CTMC)
ctmctaexps: Time-averaged expected sojourn times (CTMC)

D
dtmc: State occupancy probabilities (DTMC)
dtmc: State occupancy probabilities (DTMC)
dtmcbd: Birth-death process (DTMC)
dtmcchkP: Discrete-Time Markov Chains
dtmcexps: Expected number of visits (DTMC)
dtmcexps: Expected number of visits (DTMC)
dtmcfpt: First passage times (DTMC)
dtmcisir: Discrete-Time Markov Chains
dtmcmtta: Mean time to absorption (DTMC)
dtmcmtta: Mean time to absorption (DTMC)
dtmctaexps: Time-averaged expected sojourn times (DTMC)
dtmctaexps: Time-averaged expected sojourn times (DTMC)

E
engset: The Engset Formula
erlangb: The Erlang-B Formula
erlangc: The Erlang-C Formula

Q
qnclosed: Generic Algorithms
qncmaba: Bounds Analysis
qncmaba: Bounds Analysis
qncmaba: Bounds Analysis
qncmaba: Bounds Analysis
qncmbsb: Bounds Analysis
qncmbsb: Bounds Analysis
qncmcb: Bounds Analysis
qncmcb: Bounds Analysis
qncmmva: Multiple Class Models
qncmmva: Multiple Class Models
qncmmva: Multiple Class Models
qncmmva: Multiple Class Models
qncmmva: Multiple Class Models
qncmmva: Multiple Class Models
qncmmva: Multiple Class Models
qncmmvabs: Multiple Class Models
qncmmvabs: Multiple Class Models
qncmmvabs: Multiple Class Models
qncmmvabs: Multiple Class Models
qncmmvabs: Multiple Class Models
qncmnpop: Multiple Class Models
qncmpopmix: Multiple Class Models
qncmvisits: Multiple Class Models
qncmvisits: Multiple Class Models
qncsaba: Bounds Analysis
qncsaba: Bounds Analysis
qncsaba: Bounds Analysis
qncsaba: Bounds Analysis
qncsbsb: Bounds Analysis
qncsbsb: Bounds Analysis
qncsbsb: Bounds Analysis
qncsbsb: Bounds Analysis
qncscmva: Single Class Models
qncscmva: Single Class Models
qncsconv: Single Class Models
qncsconv: Single Class Models
qncsconvld: Single Class Models
qncsgb: Bounds Analysis
qncsgb: Bounds Analysis
qncsgb: Bounds Analysis
qncsgb: Bounds Analysis
qncsmva: Single Class Models
qncsmva: Single Class Models
qncsmva: Single Class Models
qncsmvaap: Single Class Models
qncsmvaap: Single Class Models
qncsmvaap: Single Class Models
qncsmvaap: Single Class Models
qncsmvaap: Single Class Models
qncsmvablo: Single Class Models
qncsmvald: Single Class Models
qncsmvald: Single Class Models
qncspb: Bounds Analysis
qncspb: Bounds Analysis
qncspb: Bounds Analysis
qncspb: Bounds Analysis
qncsvisits: Single Class Models
qncsvisits: Single Class Models
qnmarkov: Single Class Models
qnmarkov: Single Class Models
qnmarkov: Single Class Models
qnmarkov: Single Class Models
qnmix: Multiple Class Models
qnmknode: Generic Algorithms
qnmknode: Generic Algorithms
qnmknode: Generic Algorithms
qnmknode: Generic Algorithms
qnmknode: Generic Algorithms
qnmknode: Generic Algorithms
qnmknode: Generic Algorithms
qnom: Multiple Class Models
qnom: Multiple Class Models
qnom: Multiple Class Models
qnom: Multiple Class Models
qnomaba: Bounds Analysis
qnomaba: Bounds Analysis
qnomvisits: Multiple Class Models
qnopen: Generic Algorithms
qnos: Single Class Models
qnos: Single Class Models
qnosaba: Bounds Analysis
qnosaba: Bounds Analysis
qnosaba: Bounds Analysis
qnosbsb: Bounds Analysis
qnosbsb: Bounds Analysis
qnosvisits: Single Class Models
qnsolve: Generic Algorithms
qnsolve: Generic Algorithms
qnsolve: Generic Algorithms
qnsolve: Generic Algorithms
qsammm: The Asymmetric M/M/m System
qsmg1: The M/G/1 System
qsmh1: The M/Hm/1 System
qsmm1: The M/M/1 System
qsmm1: The M/M/1 System
qsmm1k: The M/M/1/K System
qsmm1k: The M/M/1/K System
qsmminf: The M/M/inf System
qsmminf: The M/M/inf System
qsmmm: The M/M/m System
qsmmm: The M/M/m System
qsmmm: The M/M/m System
qsmmmk: The M/M/m/K System
qsmmmk: The M/M/m/K System

Jump to:   C   D   E   Q  

queueing/doc/queueing.pdf0000644000175000017500000216105713635377236015375 0ustar morenomoreno%PDF-1.5 %ÐÔÅØ 1 0 obj << /Length 587 /Filter /FlateDecode >> stream xÚmTM¢@½ó+z&ÎÁ±?tBL$ñ°ãd4›½*´.‰<øï·_•èÌf’W¯_wÕ«îrðãc;Šòê`GæUŠOÛV×&³£øç¾öƒ¤Ê®[vïÖæ6ïWÛ7ñÑTÙÖvb¯“uYt/N¼.³ó5·½êÿ¢¥=åS‚> stream xÚmTM¢@½ó+z&ÎÁ±?tBL0ñ°ãd4›½*´.‰<Ì¿ß~U¢Îf’W¯_u½ªîvðãc;ZäÕÁŽÌ«Ÿ¶­®MfGñÏ}í I•]/¶ìÞ­ÍmÞ¯¶o⣩²­íÄ0^'ë²è^œx]fçkn{ÕÿEK{*ʇuÄpg6;µÞ$4»¢;»µgZ8, ’ü²M[Tå›P¯RJG¤eWxm½ñ­ž÷ŽE™7·¢â žÒ"/²îÑ7»¸¦‘¼ýj;{Y—ÇÊ‹"1þt‹m×|‘£o¼irÛåI É‘c¶×º>[TÒ›ÏEnn#×ÛûþbÅø¹‘ûÒî«¶BS¬ØEVå¶­÷™möåÉz‘”s…«¹gËüŸµ)gŽÏR©ð133wÄ xAÄbêí;¬ÒaGL6K& 0+‡}&ö"?‘á°(Ò¦Òa/ ¡cì,•!£½¥‰î-fö3¤Ù*IÃx {aªùð”sIC%ÒðhSô¢¨7å£Å}­HÏ=ŤIYƒ¹(îƒêjŧ ÿZóéàü4{ÖØSOØá5˜‡áZ ä®ekxvKº·Ǭü÷…Ü@2aÂ> stream xÚmSÁnâ0½ç+¼$z Ø¨"¤€ÄaKU¢Õ^C<ÐHàDN8ð÷õÌŠV{Hôüæç=üúØS`¾Jñ m}u%ŒÒßE Y]^/`»w¦¶oâÃÕå:1L·ÙÖVÝ‹omy¾èUÿ­àTÙ ÖÃþŽv¹Êó‘DM^ug{¦…Ç‚° ÉpmUÛ7¡^¥”žX[“ÖôÚã{=1î+kܽ¨8 …@iaª²»¯è_^|Ó˜¼¿µ\¶öXq,ÆŸ>ØvîFŽ^‚ñÎp•=‰!9òÌþÚ4gÀêBË¥0pôùÞÞ‹ ˆñs#P~k@hZ+vQÖÚ¦(ÁöA,åRÄÑf€5ÿĦœq8>K¥Â_¸—žX NˆHæžÐÔ3$¤Çž˜{<Ý0Š*¢5cÕ~ÿP÷õʯÂùÝ5WÂ42^!ž0^#žrq‰xƘœE„3xÎü ñ ªz“)cÒgl1BÌîÒ°õ•?ŸXqû!òŠNA‡¨Wš»A*dý1ùÔ)iȧΰÅç“Оó â9ç’†NVf¤¡–kô¯VäaŠžUJü†ôì?%Íš5Ø»bÿTW£=ј«±®–¾Œ¿É5ëñ2éfè&p2pj³V^ócH£Mc†VYxLS7˜E=›þ1âj· ¾gÈÈ endstream endobj 6 0 obj << /Length 312 /Filter /FlateDecode >> stream xÚÁNÃ0 †ï}ŠÜH%bâ8i“+Ò˜„4ÁP9!U—ŠÑŠtãÀÓ“4 [öûËLƃÌIVÓ–uo…œ«aÇrò°,ð¤Ó¤büS"’Fà?†‰¸UÔjžwÝW7V1%¡2Ö°f›˜L…P[Ëš {âÍ‹/Õ†ßu‡¶$äéškš¯þSäý°Ë•ûÔm»t¿–•âm‰|çËçæ¶X4Åû7EZ£X‰gÚôˆ)‚gÛbáŒa(ÁI‡ Žãb†,('.¦¸ˆ/ýÆ_¦\óŦ?ôã˜Ãv 9 ~ïÛÉg%‚‚:!2$*þ\ g0/PRI!I(LšÙ/Ô@ºR IEHxBcèN¶­Æà‡1;·jÃç¸ß·¿º€’‘~º€à]ø{{. endstream endobj 14 0 obj << /Length 975 /Filter /FlateDecode >> stream xÚVKÛ6¾ï¯ÐQbF|èu R$h =´=p%Ú&Ö JÚ ýõáP–´qÇçñÍ EždðãI%¥”¬VUÒtOYÐúSBÂï??ñˆSRÀÿÿBö¹É~eíãáéýç|IrÅTY&“¢&\ƒú÷Ÿ µ6¶—,“É~û+ã9!·n¹beAȲêÝn/óÅú&ò,ˆŠ|ÑŠE”‹¨l±h»"CI¤¿8ozeíÿu—‹9î‹‚ñºLö\2žó9þ<ÃݧO‡­µbB‰DÈŠU™úA "x¿BSŠM¶&ƒë.ʺ㇩·ÏŽÙñm8BrVÔùƒñÌèoÚÔç­Ñ™ Έ+®¢¤ÉXìÃÙ»½Re:ÿgƒB…} v<õÃHkÓÚѺžPî¸A—éo“™ŒíO´ºê;ñe—ç©>EH %e3u¦}ªÑT[•€ê[r3ÇѸ~°Ã¡¤ûjÇsH&Û–ü1Æ!<)UÊ™`{I+ VJIÁ¢Â+1¼Ãc7›+f~%›¢Ù\…Ød.Ó“×–iict´Ñé—pŒ´!'T·ˆ·ÏÓhhýŠÞ ʎлZ„ˆÑîyvÙ‘ÇI_hçê®_mk¢Ìî7Í7·Cà¤w£m"g (¸ƒí+”ªÜ¤ÿöŒŸ¹ôf0ž2Šf˜Ë…bj(œàéðÛ"¯Û"¯¶l£ÙFÀœiC(¬ÙFXçB2­ÅŽ&õºe¢äw€ˆuˆgW´#hê[ãgœ!têþó4/H¨¨Ó#ØtžäèËß‘fÎo?™­xYKŒ œõH¨•ÑL˜Ñú¸†jL—1 "â ZKîZR|Å…ó/„¶1º…²ö^&1ëÕ AkBµ†Xï8_úÁÞ„¨ ¶Ñ±C­:›èÁ¹,â\Âÿv. If µê\Q¿ƒÐÇx–ÃTÀM7O(ìŒ`i¸è¹€E¼DŠ[„ ÙŒ$FA¾ÝìÄÁe›ÞÓÙ‹¾ß)§ n¡w”÷kœ~:ò »È´ÛÒY°£#aGKÔÑ=»ô;*×ýþ}^¿µlÌXÜ2MK“Ô`JÝ\<½ÝЈ=ëp+…Û€4Ï!cz2¡[}¥òÀÞÑ»ŽÔñòzû‘<„Äüèpͨ_ͽ·‰,YUË·9Åw^HuÎòº/¤ê±RõÃ’:c_ܹ§/¯Êà‹Ì«mÍÿ`T˜Ozt=›_ÿž endstream endobj 59 0 obj << /Length 2475 /Filter /FlateDecode >> stream xÚíœËrÛȆ÷~ .É;è;*/ìñ%—Òd&fÍf* ˆ‚%dDRE‚ÎøíÓw4¡Fó˜’&ŠÅrÙ¤èCüdÿNŸÓ O õOªb")E+'Ëի¼º½žØ'ÿüø »¸¹ œG‘o¯þôó .PUTx²ø<á¸D• ‡[\M~¶³-þöêý"‡Ô‘÷K2ÁÌ™VTŸI” aʬÚbV±i}yÛÌæTòéæ³}üa³žQ<íû°ÓŸÉŠ!ÊчRߎT0b„gsŒ Ÿ~Ú¯Võö«}.Êø-EB½RØwüY½CHû ~‚¿xêûþ°Oz߀¦Æ™I1z¼+r„= ½Ã:‡Ò¼@œq¨´‹¾'}ˆ=.˜B”MáHpG"Fš ¢(¦o.gsRN7ûNÁHé´»i쓟÷;i××ú'6ýi¦‚ê¥þ÷·Óúº±Ð z &¤ú('2÷Lù€ìIÌÚéFþIÌÙÙ‡'ìt”$¨¬Š<"Âñ‚z‚ˆ#H§/…E·m/÷†N?îÛ«æ¶]7»$' ÙR©¼PNRcÉye©ϱK’,Ád KYIϯ*D¹O„ˆúld3Ìz£þsÛ\]¯Ô¬Hd˜éç%{©ùæ)F¸ó~¹‹Â3Ü@@SÜe5wCÉà X•b\Tˆî)·Ô_×»®¾½­»Ve1SÕë+ûäcÓ¹t¦~øÔÕÛ®¹JZ„s$U5øˆ•Ö±Gjÿ5Kž©YÆÕ,@i_³ ¥G²WÓ‘βP³ L3UËv³¿¾±?ücÙÕ:g|ÑIÄU3w¡vá¦v1/®êµzn2Œš¿l¡³ûºëšU*Ù XElÆÎ-÷-¡çVž;·â¡ãÉs &kέ¬dp‹VH(`œ[¾>¸¨Íøîë[;êmì^2©«Ãsið¨ùÁAá‚’Ö‡çH‹mIÒ`²†´¬d ¤þzÒ|õð®±§üíænpRoöÛåH%ªJ_VUgÜN:ØgÎ(g}x޳Øô4g0YÃYV2p†)R³¿çŒ9Î~¬W¡ÏqÝÏ=á8æT^E(Í3j‰š³ŠZžC-ö]&QƒÉÔ²’µ¢Pp0w¨ý¼o]ábhÛ©—§ªaŸÚLŸžF)ª0ÿÿZÿ{¦cÏye¯ϱƒP%ÙƒÉö’÷š"& „©ô-˜mŠ.êíoz)z£ÿùâ©oêÖ§µAÿƒ)CBà—³Ò<ôD}Vˆ0–G|qÑó(<Õ} jJF—ŒÚ¾ýj§sã UY8Bûõ®Ý-·M×Ìíª±YèB%$ š7v:´“cÍ ;IŒˆ|¾Ì<:A÷˜© ?Äǘ±Ñó(<•Bgª«sH^SwkeYªô¥Ñ*+–O]ݹ~{c¶–Ëý]½^~uùvsY_¶·m׎èR¨_¤ŒÑàJCž£!v'—wº††¬f HD+ÙÓàÞ¶Ûîf~ÕÔÝMðßRÑìFŠæ Vž‹æãM¾÷Û=¢><Ql(fIˆ`º¢¬f€HM‡„Eù>ÿýïw†™f©—d F?îWzÞ±›™ÍÖå›Ïvvú¥Ýµ#B ‚Ëï™®1JÜàB)éÃs”ÄŽPÓ5”d5%VÚ¢§Äwéº:™×®97 Áxª'³ü‹§œæ>K;•‘¸˜þ{³×ákËP§Ž–Dˆ¨Ï!ŸÝÔ˜ën° ®÷á9×cpr­¨k\Ïjz×i)U‰Ê{×}Ã|ÑÔnO ¯N»}åÍån³½]wjšâ/a3q?¦@8¢ð Fáä²PWÃ‘× pH†dÁ!ÚíÎ]çb/hÙ™•°!´;É1%Ϻ}W»xÃÝàC)êÃsÅŽâäŠP×P”ÕôÝ/Uù@0æ)^îÒÚ]­Í~÷Á¦ .¡Mp).¿Ëx 7¦P8úð±Q¸LÂÓ5pd5CŠa%b pœÛÝS&7ˆPúð ±3#4Àt YÍ@刲ˆ†Ãv÷]ßîþt¬ÝUMY½œe±Ì3nÌ¡ðôá9xb#I‘„¦kàÉjxˆÊþš` O¦ÍýZÕ™l]k2^µp‚ªJ¼8šÆˆq %¦Ï»7B L×“Õ ÄJ›áž˜ƒ–÷mw·ªª½²€Xd³ qÓã®Ô¾„ê½ò?§hÌU7PWûðœ«ñ“äš)P׸šÕô®’Š«Ô¹zni ‡S QxŽ£HòºU ®†#¯à( ’}/rîhÿÀJÃ=”¡C(²“$×Ia¢ CÁ{[üDU‚»š†ùÇÚõµ¿M·,áòçè¶ý_æjØô¶?" ª'½ìyd«Ý'àV{žÙj?(2z¥3PÛoµµÓ‹ „ D°#‚…nrq“¼¶‡IDdù 5•Óék}i³jÞs¨¤ÎwAC-ˆ]=9zµ3Ó×tœÓÃ#MCÎ]h éÃs9$F&‰+T×d‘¬fÀ”PTˆ€)y¦«§LM‡<\2¨ê­**Ï·þ<¬'ò†BÉìÃsdÆ”äš?P×™Õ dª»Â~– =ôÂßÎú~{[¯¯çomùüaV²éfköŒ÷·uº@RG©è°—z½!P²úðY±Ë$¹Ô5de5=Y¸H âÉb#dýðMd1QžçÖÉò†ÉŠÂ3d¸L’ËÆ@]MV^3UR$p ‹ß#k}½kº!WrªÿFÐ"ªv,ñ9i=JÙæý‚Ö‡ç@‹M ¦k@ËjÐd¡2ö ‰§î.Úõçcý…Yš>ßvurtŽBÑìÃshƘä½@]ƒfV3 É%¢Lùô}oŠEÄúßEñúï©£à áþ(™®D"Nðyj7 Î(Ç!:‡q„MîÈÀD Ä9ÁÀ0S³®ð —lŠÓ Œ(°-fü¼ü Zó †è€4yûLÔ˜ RŒŠ¢òVÃBòÍîëjÕtÛv™,‹q)žjF ïìêý1œ P’úðJ±³4¹ Ô50e5MX*k˰]䚪ä$‘1=lúúcz..ÌR8x š«œÇιìaK|ÞN(—}xŽË˜šÜê.³šKõ(‹žK|—ñ[Y*IKûû{¨Ô‡Pu¢»u!I£ªì„œDQIÄjÉã„ „%=wAßœk P¦ûðÓ1_4¹+›Õý/lÖIQ endstream endobj 113 0 obj << /Length 1399 /Filter /FlateDecode >> stream xÚíš]O9†ïùs9‘6Æï €XµÙBéUµˆLÙhCÂ&Aeÿýz<þšdlÜ,Ý*‘àüç}8>vŒ ¨þ¡B‚c $ÅÍÝÔ£ËÛ¢}syv€LÜPƒÈ㫃ÃSJ „W_©®&Åçr:üqõ[…‚K5‹ýû¡~¨§óÛæÿFWN€VUæ“4‘["ª€ «ì£¨'ƒ˜·¢t0D¨¢å…bNËq½`T~m¾,–­šG:þ¯j&ÆÛÖù.pן{†Á¤LÌ%+x= Â{’¿9©Î¦[ÚJh®¶‰ÞÒî2ˆ QX‚I ¨”Æ}€Ôï!,ÏçƒJ”ëåb0T¯“‡›õt1W0`\®íëÅØpÀpgâŠ$ÐŽ|s_èd[¼IÐ$ÔÚóomô0ïñ|sÒ8o¹º*ò MÇ™€€Ø‚GAe8û¨j̬n:™]¯VÍ[R¾o¸ã夞E«G? cϧcÌX“˘O1úY/cyºš±¤&Bjá¢`ŒƒJzÆ\5ûý^—±ÚT°f9Sß~m¾øål1(€Ü¹Œ½¦Êó¿ fœÉ˧ íÆ²±<]XRÓ!FÕêF¸G̲“ÙbUO¾ø|5}¢ûe2s0–ñ#,ž+4™ ^°òt5XIMQc’y°°klû®A36<¬ØºK·bÊ«Ÿn™Œ±bRœËŠO±úFD/+yºš•¤¦ë¥*q¬XRÞ?ÌÖÓûº)µC$L¼®Û˜,Æ•±#—+žâªã1ìå*OWs•Ôt5H­ILRÇÕ¾z1ý“q&1žB¬cwÕ‹Xž®F,©éƒjIR%Ì!¶ïŸ~lÿdüÈˇ§Àꘌ{ÁÊÓÕ`%5-XT€e–[§®tÝâ ®Ôrº¯[ÿ+kG&WAx‚«®Ç½½V¦nÃUZÓöZ”«fœ`Ë1TÕóz9½i¹:šÝ.–ÓõŸw¢$ ˜ï+ÆžËÚ’Ë—OñzÍz{®L]ÍWRÓñÅ*¥]Y¾¨áëxñ0Ÿ¬ ^óëÙ?«i¤ÍRµŽUûÞýûgŒÊ%·§ˆ Ýg½+e¦®&.©éˆ#ª3'Ž8fˆ»oЦ·Ž£Çë;µ¥Œì9`˜îO῵›·ä¢äÃS(…¶²ÞÓÐL]RRÓ5]˜Þ ”܆±íæi‰òŸñ*±µ‹ì%L•PJߨÒƒÂä2 ž‚"4(Ež®†"©é ¨*Àˆg¢Ú> stream xÚµYßsÛ6~×_Çä¡?@'Ó¹¦¾t:s饱{swIh™s,‰™ò%÷×ß.í$™´14£)rñ}»‹Å»òJ+§’Vdy§ˆ”a¯È(GZù¨\ Š‚Š"Q¥ü.)ÒÁ+ƒ'yaâ)(c9 4 _hl2äž•`Æ1!)ƒ%RVc¨¶ yeå!lÅ6© <äòP¶Ê*§,Dtde£²”ðQ åÆC —‡Ä C“ržƒ*E@4 _x‚Õp«·öç± ¯%¼Ö.’…£¡E‚\ÂèäÅ ÎVLrA±lc§1[àòoj­˜áFÒ¤8À^ÒFqô´ m'ÆŒ@>hx‰´WÓ…VÁ¤<*( ʳUðYcüœqྠ'†Ç€F`„¤Ã‚àþ ÁßQçI†Ã£Æì<uŽ%¸8RV >„X!85èBðb4™nŒ–£.ÂÏ ‚"fO€ì|# û!Ž€ì9ä€Â G d†.„§‘á{ @pAÝr´Áì¡f(?rD,æ+ ä¤sh9¹ü„±(‡;¦B# &¥ìÑ¥i° S•(ùÅ“'‹åÙ‡wZ¾¨ß6‹åOݶo¶ýµb¬«—‹åËæºÛïVÍ5ÙðàysÑÖO»÷ê•ÆFˆ„dÞ,0|‡q˜Aì‡äg@SOž¨å3hòÜf/ ·Z¾Øu«Ó¦W¯ ÀÉ3µ|£3e~IÔ¤7§Øá"Ž6F.V.N.b‹3Œ A1‚bÅ Š+(VP¬ XA±‚bÅ Š'(NPœ 8Aq‚âÅ Š'(^P¼ xAñö ôYDÌÅ•s¦B2VØ'*ì!ÐDWê OVÉzÈÝEÒÏÝY§–'ê}*ßBé„ÂØjØ^`[[{T6Ò•E6ØŒÆ*J“t¦ O‘Ði,R'éìCédú<óp½>Ref(}! Aô@ z]9mJ‡å0Ò98×›I:.Dg\• uN G¥#‚E#¢3šéè eè\ŠÉjGb Õt ¤’ÙìBÌXÐ!3ÞÆ¦‹ø=½ÔºÖ#:åEg±;¦Á<ÇðlpÇå³±r&ŸƒkÍ Ÿ)ÄgïS•Æ*Ë£hå™*‹KùUëxDð(ZýL•Å…V»GEÀalgÚÊò‘éPø±ÈòVW†¦ P(¹xÔ¬Gw¢ à™ÅJµÄP´æ£€t4Ýl 'Š–ÜÄt,Ñé°Úéé \¨‡êmnA졲­4Oï¡TßVÔt)‘NÙNoIÑ–¡´ÌK£qà´!Á³Ó®M¾gþKÕ}¤DÐ3e¤pïMdŽr‚þÚ©ùsµN÷›M½û0èv÷ã@êÇónß¿ÖN÷—M¾ü¶oöM»}›ï_Ô«+Àá ç“û®=ß÷£àÏûö¢Y·ÛæZ@¿ðþPÓÕÕ¶ûﺹx»ÉÅÀ¨Õ½‡£~Ù^÷õz]÷m·Í õöb jú[ÎÓ¾ÞõÍ…àýqñ¯2õ—»nÿö2ßþ}Õ×7ƒ×Þ‰§òí¦Þâ.«]¸î›Í´ß„t ßóz»¯×Y¢ý_gÞ`œ47ͺ{wG%E˜`̼;ÀøµÞŒ®Äìß@L#Äô«„ßöíêjàÈsq7‚1÷r»«îf »¬Û[žú ½^íš¾ùî¬Ý îŸúºØáŠíë~íV«ý»z»ú0Lô®;¯ÏÛuÛ·Íu~ðúÑÉÙóŸ^?Wö×2=mwýåwMÝ_ŽÒ˜ª ði¹C¼¿¾‡ìÙ ke»ßœ7»A£ÿäï›öºí'°?óë½1ÿÆ<^üé†ÇÍ endstream endobj 365 0 obj << /Length 2160 /Filter /FlateDecode >> stream xÚ½]sÛ6ò=¿BÔLÄ#>øu>ؙƽNÒ¦µ¯37i( ’q¦HAÆVýíbŠ’˜ØN}7™‰–Àb±ßØ]³YÿØ,f©a.³Y¹}ÙÕv3#à·«WÌá-q1¼¼yõ··qÒ~þä<Å êù„¢À`<΃fg©j÷]VQ+¢áIoõ-1pµÆ ¾êËnAÆs<˜‚&\¾yÿ!>u¿Hrg)À,›í®ïÈ®ðéØj‘TQ—Šˆ8ëë•CÄ<·qf·ÖMÊ©¬7ÞdŠjÓ€yo·Æ}·6,Omâ ŒQ¥«bY¹ØMäØ8dr \È"¥s`ütÊŽŒ‡ ¬8;¾!;ZjªžÂ§¹3^š9­£ ò(0À}¥eUCx»D£¨³Š'ýâιûãê=HL„«¦X-VÊy5äjD3ªý¬Ëc…8Ïsxª5ßM©báüeüðP”& I¶·Àý .|ÐÛ¢S´ø^5A¿chUï6.ÐÓ füÂŒþþ÷9c,¸ÀüK«V³2OîÛâ]}Õéß"eOx9ü‘Þ…C˜ lmlð%Ïј—nË— ò”¢\F2~"¢•X `D@öÈÐê”4°|ð¢Ô'QX%/BÈz‘®§ü9™ò#ö?w¤‹S§á2é ¿\rL­¹P c‰bÌj‰â ÐN-IT\4´¬(û•ˆuO? 6´3öÂËw¿Ðâ|&"l‰wìÑdðè„^ÜíuµÒ¢'¿¸ÂÌ~»ëšN—ä·—6¾¦‹/‹ Ó¬séë½éÔvŒFX”­añJ5[յǤ¾›¬x8 `²'OªwF¥†³ðg½ÂZRJ>ªè-,¥?¸n‹^B¨*ª†{VõΕ ·… ì9¿0]áŠX³ e=18¶¥±Ú2ö£eä—£“ ¾ŸÇ‰€êp²I4êVÎ#U«¶¨œ–ÜÓjw;½uÐJriKI[ôLƽq³¿à?&‹fI˜§"CD‡I†Õ>GêÝa‚ 4tI6aM*á(€F:øÑ§çV=ÔÔ®’Ф1V|D56Yˆ$;~†ÞbY9zNà0='@ï´oĵ¡o$Üb(Cq Z®LCK£ÇkE+(ðW¶ªS OÅíùfOÛŸÚù…ʲÏ$<#ò¤´·±–>§ÓïœÚÚN­P >NÏ*I/uÛÝB_QØ Äð…e©ŒQ/^êÝ ¥Ú¢6úPwzÝYW çºh}né Ÿx[e¿ƒòf?0»,–ºÒV/_­Û¶e®ÒNL,ÃKÓ´;dõå»*0eçk8tCÈmÿnúvÄ9Rx6ªÅhÌÑ›Gè¼´½áËÑšŽøÛAqN3¾£‹á‘€Ã¾®ä~899sƒ4æòI£½,ŒcùÅ1#á…žÛf Á!ÓØáHŒ“™•j ´õ§T»µø‘­1öìˆÉ>åãLJ~Ya]GÞA‚«KYFœ'Ì(WÞa„ÛΆyû2À‚ Û %ØítÊxØ(u:âæð4E9dsTœdŒ¹=öb„>1]?%ê[8ßPêâ ;·$ >¾ivØdíQßõæ —BÿJv¼Lœ²-R(RžÌ¶Ç~„íS¢^évÌË£à_˜™šžx²oª.!Z(„ðÛNLá×ܺ$MSÏ̳02hgì\æwëÃl‡HƒGøf4˜+»ì4/‰)¬qSoíë“Ão\<Ð>wmXô-)Âþ5¢—”†ŠyP¬VÚ&ÚŠ¾×ãY$ÍòÎ;ÝV Oå —ýxRÊàúÜY–„i–Ír¨ðå#vô¸‹yŠÇ-W×~,ì°S¶ùøæLnÛíöð†WºVæÓk÷„ 9‰Ÿr/#²<}÷÷«Ü´Ü‡Îƒò$äñI¥ü51¶·õKO‚õƧÐé %7{òŸbF5ÛùŸbàíÔZ¸'FQ©RëÒ×n»Â×w^Ÿ•*Œï}†®Aû‡žzkÔòO½T endstream endobj 370 0 obj << /Length 2502 /Filter /FlateDecode >> stream xÚ­XëoÛ8ÿÞ¿Âi RD‰z8`“îi·ÅÞ&Åp{8Ð2m‘E¯u²Eÿ÷›á¶ä¨×]ààæ ‡äp¿Š/"øñE-ò$ KQ,ªý«ÈrÛí‚¿þôŠ;¹ƒ‘äíëëÓtÁ£°ŒJ¾xØŒ·zX/þÅâå¿Þ.’¢ ‹¼„M,ó÷A J7[œ{õÃÃiÿ4Žÿ¤"(ù M8/Âb‘"䉠sß›V5fž±÷²ýÃÔµ¼B%`m1^ ê–guv Ö$‚ýÞ¨þhÚǎȇež1³L93õj™ÆÌ<½^OØ ¤ìÞlú£lqJçY=Ê­ÛncZü}dEàxò”4øp>7ÂÝãŒ5²~ît紟ܼÈÃ2)¼öá2HKÎÞíd­×Ë )bvS·j+ust)Ø÷ZõªÅ¹„ý¨Õ¾#1Ù8ùèºÖrOÄÛþß5¦ïU8¥éLRšÓÉ«eLÕ=“Šˆý°Ö½i;KqöK žˆsV)µ†»ãÝÊ’ñ¼ßÁ|±»f «A¯FöÚÀuIài6 ÜX)¢MCÿ7h^W^•GÍ¢©N÷½±ZU¸ùNv°®qˆ «ÍZÕèËzX‚=I6‚íš‘]@àæp¨áDT¯#ÎoQÝÜ¿‡•ƒYqÄ#`sZûF¶ký[Ä4}T°ï®&j’–o‡®§ãâ3Ï®P5aw²Ã„}B¥L=ìXÆE#°Ç†8?«ªZ7ýÁô¨<Îë†XoÌþ0X¯#u_i2)gî„ûC †PíÕœ!ãQü™[ˆã»ûÛ8JX™Ad"†ei–)E ìQ¤ü§ae´×݆–<Û+ ´ÓÐ)âÞê¹áŸWÄèwº£ý à8ÙJ÷ÖD­ê‘§_»DÉÆ‰p"¦ú|§›Ck|T~öXEvà<©˜Cý39æàß¿AðÆ)ûì¡ 5_fmÙë¾F7e éW[ÄÁÑq|0€4eº¡?‡2nÅ a°ƒƒ Âäbt‰K€±;pq “>¹ytª§#ÍÇiˆ ›+VËÞT>߬QŒO5{1URÌ/{¡ª;yœuW$îPFwÍ1uFŒYûcº:Kº³‹0O7Ga–Ú%¦=R6îýºÐ™ÿ:³Ö£3•E‹ñm=àúŠ©qìz2Bj«¬ÓÉ!õ x>Ÿ•DôçéY¼Ò¼ðaXÕºÛy-ü_æð¬S­¶4¾ï ¡r…Cé3BÙø!„š×铇Âñþˆ‰_¹$Hw‘r€dAP6«¿ÂböÞõýáõõõú)\šv{ ‡ç×Sä+‚ø?_QBw«æÂè/Pó‹ƒÍÔù2WùçðìÆÈ”ëgflÝÊÍ’³ž(¬(`qy ÊÝ-©R(<9srºsóÈû´L3&u-Wµ›–ío‹!–Ñ˨+Ð)ûUÑ)¦í/û@!@ÿ$Y$yÆQü^ÐK#ñ™~ðrSkœ·?¿¹0؃H±“Ôm7¶6Öõ¹ "ÂXľӲAwJØ5þÅô—°ãñHtH´n˜÷ar½24 iB÷“ý.ÈVWª¥=Vo‘¬´ê€¶+‚õ {YÒê/,riGgÑÉ0üÒ}<+¬Ì‰(`ÿ†û¼t0Ÿkç/6µ§cO€Hh#lÕ²}FNâ‘<‰¡¹UÙö{Eí$McÈ'q<‚äÞCNTØi*vùÇFÛfKµXbø™–ú-nMm¶ôXïî2Ž»JâÒúÔš³ˆ1O‘Åx/@…8ãØ™Ÿ‡1€A†ª5Ër´Õ«¡§–4OÙOƒ¶eSÍ6þˆ0eÈc÷öÂ-ðδ…íQSîÚ×”s¶¶ÄiÏ©èe—gÞE<ÏCžŸœ/ë£|žÕ$ÉCPGkÀº2{q]« ›><ç-ŠMVLz?¡†Ø¬ãL5¾‰šÎ!lÍõv19-.òxüò|å8°’Çe H¶U®û„²çšMIÁ:³w¬íÉ9®ÛÌÄD#…iTNÑžù,’ÇaœèÜ#ƒnçY¤NäN¬cC¹’¤u$z34FÜD@0j%;·Úãz÷\[zàƒ}Ù*Œµk§ŸJ®×ƹ£†¶¼™ínmsž%§ã‰Ò}§ê ö'`·/óµ#pΪ8t=QNW·Y3±È²8=ƒ{õ„°;ëxF'S2£»ó|K'ô;Ù{Åé¿’ÍT›þqÉÃèò¬žúVV=6) ÷z„nªzX«eolˆ"³Á»*2…­«ÈÚcŠäl´’5˜0KJv¯ÔÅB¸nçp(oýΑØ|zñ—íÎWýÎêrVÛçb8ê.|)Ôó¿êïåã’\+Š”u¶AÄ4øpßžEɹ#ŠBçP>ÙÔÅ–bÇ2º÷ƒ Ÿ$¡@È=6Ö˜³(K*(öë ö$÷-¶×!­^ÚkÛˆ U¥Îô‰ §:´º¦uïÖng†z힬¶+Rj,ë¸S½í®ém Ê; YkpG眂¦d…ÿ· ðË ¶z€f˜Þ€ Z~³måa‡Ï7dµÊ½©:¢é[ ¬krë ú@Ô×[ÓJì‰YAø•æsF^à%ûþ2 gLOåkrÁY§· ~\Õ©Š ›>¸øFÈÙ´fO#Ê´dh˜óƒ§ñ}*–9ûHȸ–½:ï2A¶8AÐÚT×g»…ý“žõEí€5X\Ôî½q-j‘BŸ_|†8 d·Z¢ý¾­üRÑw9È$¬Îw°Öjoˆ5ýè‚éT ÿðË.dh ú~³Ø¬éj¨éµ‚SzêNœ[íÄÜmŠ«ö¦ëçÊÏ)ì0Lyìj&  XÚ8}|v´¡©~n‘U™¶…üõ=\'lAÆýÎFǺšÄÎ<8÷âžÈôÉo×™}ÍR¿©7Ïþ“—­>ãO]SÄÙÀ»Ë} ó,0 ©íI».¤ðÉÀ·Ø£B–ùÏ¢ÊV¥<÷™ÙU]´ÈͨJÁ¬ÿÈeÇî#Iø÷ÒøY-vXfù¢ŒÃú¬ÿý*ðÂÁY𓻨Ò^eo• ÷NŸïì£*Ô/™¼ªã?§“}¡Ì´˜lxz!f@çn?s‚eN/®ÍƧ+0‰]rÝÐùb`6—Ÿ@/šTW¬+A¡ Ë“º?m¸j×ÐÖÊ…–ob þGâ®<ºÂÌ"ýàÊZâä…×Û^÷Møa'›GŠ5´÷Z<Å“ endstream endobj 196 0 obj << /Type /ObjStm /N 100 /First 875 /Length 1636 /Filter /FlateDecode >> stream xÚÕXÛnÛF}çWìcT$÷Jn•åKƒF®c9@[Ç(hic³‘H¢b»_ß3$e˦D+.úÀ‡»3gÏœ^–Üj2n-‹b&B˜Âà(1ÄqTLTç1ì0f’ &8gÒÀ¶ 1Ï5S‘ò7LWó–iƒ2mq.$3Z⨘!±ÈÐxÌb2!9‹#£`¶:×ÌšØÒ0k/-ã¡ A–B!ÇP qQ¸ƒ˜P1 D ÍaÄðÑ‚ñŠ·Ö0´õ„60bDi + d…a€¬C1@Ö`$ ×VÇ2Ü&²0€l"¬ö<’Ò8á†EäˆÈ1ˆSúø‡¼ Ù‚nIJu’-¤%P Zí ‰a„”W8CÕ ¹f2D a¨¡…A*ƒ¼¤L„A½P;!«)DI(*‰4«¤‘1|¸"‰ D)dN¢+*;I $‘Ó(’$¨„3ü„Ž$ ÝÒˆ%ù¸'% Á¹Òч´†P04©f`|%±DŒ‰œˆÑ/RUÁG ’é ÜÂJíIEb¡’È…!MQn .5¥ÞR^´ G=$¹Ä*Üàl([Kü0äA` ÍPÙ9bÅC%•]¢GÐÿdà?éj€%QQz…®ƒ!™"e%ÚGé0ôÞ¾eÁˆGùY΂}öê,¹^òÍÉ•›|Uènçn\Öö"ÿ;_™%üd|~µ6|~ýš½{ç}_øëÖêC—ÜOWÇœ~“ËE^ÌË4ÏÚ ®"ÎEôï#Úk¦Å¢$§y²X€fG6÷®'®g›™ò¬L³e¾\ôVT†Iñ5ÿFÖà:I³E¹‹c }T&eåšÇËy’慠ü2¹L§i™®ØÖØïÔ^i/-ÊëÞÄ%åuã=v‹ àµßþÊï¤ökã<Û>ë¨ëÞ£ï-š¿ WO{µ¿þ}«ïÖ«ƒÿ³W/ëÕQš]M+j‘†êÇ¥[:LTÃw‹ÒÍš†ÝÙ»]Ÿëº½ƒaÀñ7ÏuaÌ:0f;`Ó$»êí‘}˜³å4y„³iþ¬Á3Xƒ°²«…+·"µf»4J³/*=ží¬WðkWÅÍvÖ¬g¶Nq7›¹²HÇÏuB·çvžGýy´cþ2ëùå¯Y7ÌúõtìÊ›¼øÚ\~gZñï³²È'Ëñêú¬o-íÓ7‡Á4©ïüÃ|⦭»ÁÓé’´uÈos—u³W¼y6NóE}ûíðkßã:““:¯][s.§e:ïȪˡ…¦Å®yi¹{^ºÉk˜Þ>çzä2×ôxz•iy½ºYožj?åóe6©’ìgÉôn‘6áÆÛ­z¼>_?7“Ä[5ìöù–±ëýT]!ík”h‡Gü¡ß,ž§ê‚ñ“À€o•»…Š ¡f·PÙ=u_\á²ñJèµó ¯£ó;hÑ4Åñ'‚>:8>8í¨®šO{ÞW'ŽG_hÇn^=xÞgw{ÿöúx´ýʲÌîo3kíaDzÁÙÝܱàï+^@oÆ.+ØœÐöÿÔ NÝ/aH°ÚÜTCC7I“½ü–‡0ØÊDV\x€€%6äµ[?Ër W;(Œ0Ú@Ññ›‡•+?/-/ËêüCš}õ‚½¼˜¸¢^"¼ ã’c£ê‡–¶ø±cS*£È—t.¬ ¿>ëªÃ‹æ±ñ#l¤­ðuõqƒûØ—#Wé+Á·¬‹;~z¹,›'ÇÑ2ÅÍ,ÍšÞi¨ì³sÚj’.ÁïüÉlÈ"²l9^üG£#_aÿüÈï¬*ª‡Z³¸ö?ŒQÂÆ¤ ¦±«+[²¦|Á!*\÷åоcä šhÿgî¶|Zã§Ý…íîŠ_Ú]5]Ú`×GÙt[ÔÑm›«¬”öéC0|ú> ¶é±ð£(¾xÒ(ì¡âŸNß×?¯®Ërþ&nnn|¼çáqˆ—õqâ/³ô2÷Ó2Àž ®'AéÆ×&§½ÂÍó¢ DÈÃ÷„Á¨Gf/T[;v3yT\jëK¡jÞQè ) ÞÊøuã&ö5ôyúÿÜ¥¾E£ÅÖ7Â0e8nèÑÐ×RïD–¤Ó23ËÑݹ?KŠòé4ùyEÅç_7ÕÒt endstream endobj 377 0 obj << /Length 515 /Filter /FlateDecode >> stream xÚSMÓ0½÷WähKMðgsƒ]X ´Ò rAÀÁMÜĪ'ÙÕö×cÇîªÀP{Þ›yolã ùge;J Áª¬9mкëº,_î68ár̯ïëÍ›œg œÕ‡ëRu›}7½gå`N)ø-Ìãàër:I÷ s"v•þ¬?m>Ô/}8!ÿ)( ÿQT‘ ³‚²’$EeÅ LYT„ s^ðæ4p,¤<Õv'5„xž‚¨¿ÝyûX˜$su¯¼!ÂÁÁc!Ù'=tqkôî* ìhæâÈèiVmX—@š±—{Ú5ëFóì!8&;@OŸÞ/‰ÁÁlcröm£¸òZE›æ^ä*î×¢ä¼âƒ£‚qqA޲ ÍŽs ;µ ‡ä¥kßÇv–S.Š 1GÖ>pü²²£³aõ¨Ûèßo”j÷©p¨(p*Å:èü‚Ü/Ý#ŸXÿ¸O8îwWv«ü-Úaz_F=FÒtzè唚=ôÚ¤„5ùj%ýøb`³¸!P·ZuaĨôak¹sÿöÔ¨)¥'‡6¥î¥kån‘ç³TÊÜžô®xH}¶FMƒ>†2qPº^Ô«õ’xä½<¿ªõ¼4ÝÆW”zRÊÀC`Kk´rº¸¼¢ß©gø— endstream endobj 381 0 obj << /Length 49 /Filter /FlateDecode >> stream xÚ3T0BCKscc=K …ä\.°hQº„äÎeUgbl¤±*OS endstream endobj 387 0 obj << /Length 2080 /Filter /FlateDecode >> stream xÚÅXK#·¾ï¯Ð±¨æ«kÀÀð.ìƒ$³¹Ä9ôJÔ¨1RSîÇŽÇòÛSÅ"û¥žYÙ$;ÀŠM‹ÅbÕ÷ÉW1üñU¯R)Y®²Õîü&v½õÊþð†{¹ nF’ß߿پ×zÅc–Ç9_ÝVš'L+Ýë»ß¯þéõßïzóÃ}¯H qãŠ(yµd&VµyÅÍ9ÇÝhh¾2tÙÉZ0)|­3È à_‡KÙ¤2–VÝ’Lše¼—¼#ÍعÅà¢#j¦ñÉÀQˆšÐß#9 !÷AÀÙz“$qôãä…ŒžQíèã8I+ì)ègBz‘ÂüŠèÃÏ©c”£I0Hy?h­LK›@êGêÜÙª2; JܬÐS )DA×+Îåš%îZ2’óv¼šÃL:øSÄžÏ=|]@ôâaµkˆ, »=ÌóÒo—¬Üˆb È0š'ìxË¿£À0cÚ:KE°óòËiðOð„ûØ8À¡ök{Þ0Ä l²ºc •'Ã.UžF¡»…žJ\%ö‹¢5ùÉÉ`ʵA?°¢A>Âöâ5~ƒ U8†Q…¿8qÁ…2QLgâ–4ÚÙIT áÂêk­=ábr½ï]‚ƒ}*öÁÐôäÕÇpM£gZöXV†¹L§çàr“f¥ùÄŠî·²^÷ñʶÚ: ÅngšæŽÖ²h ôú‰Às3IœHÕnàŠ~wN¾=.Æ4Sæ·¢¾V@Ÿ¬3â+·ËJ.|àbëIS–ÄÉåŽý.ÊŠTN¾Žöl¨µ/K[[?cáÙpŸ-8è×9±{(—àÃì=婸tòÝ­õ$ –‰løm¨ w]]ÊAÄ1S‡Ø=9#™×PuäSáÉäÝ©5u•Eã)lN€Q}à ™Ràaãט«!?fu¾ó"ΘŽoÊy Y÷¸ü'U¨œr[ÓZrÓ§÷·0œäèE'6Š@nŬà/¸Ô]Šg—  RV=S{žv%üæ©Ü›YÆ…z P¤i:ó§ølmð¹*Ó DS_JدÅ@áD6®àgàvöðÇÍYúk¬ãª€3În;Ïø‘@Áà.H%–z¼˜Qó ­‘‡wȘ2æ)òK½wÑŽci¨UVžyü”Éu®ŸdyÁeŸ‡ Ò1:¶¸:™ð1…¿¨Û5 ¸–Ú“0hÀX°)‘Dï-ÚJK„u‘ÇE4ôºÊM~  lõX XÝÆ’W_"X‰,ž_´ÆûòQïüßÜ ¼`»véþÐ0J­ê«>S1˹¥lÚENX.eïÑ @ô ¹Æüb}¡Èv‚èúŽõhÞáÉ"{áÉ"£’ ÇûYnùîB£Í®.‘ipëЮ霗Ü]féù! îaÛÿÜ2 ¨_|”àÃmO?ÖoäcUþ%¾FOº%ø2ðÅk˜ö(2N)ðÇådZ˜¦6ç±;–DH€…ôßáLB-†o9ÄYÎ~Ÿ’]3ʸ…¬á"eš'W•EWMïéSRÍò<Ÿ•ËnR €$þŸW`ƒAWÉŒOÎÿ£¾ì³ endstream endobj 392 0 obj << /Length 2543 /Filter /FlateDecode >> stream xÚYYÛÈ~÷¯ò²Àj±/Þ§ÄŽs`'»1”§l€pÈÖˆ0Ejy̱ùí©êêæ!SÁ€Õ¬¾êüªª‡oBøÇ7i¸‰¥d©J6ùé]h©íã†_þòŽ»u[X¸­üÓþÝî³Ö²4Lùf˜µ/6ÿ¢»ÿìÿ¾‘IÊ’8…C,ñ·Á ¦¬qîÝŸ÷ãùZˆÁ•ßp’ˆ WLªH8N¢D1.]*˜¸ÛêH÷w[dõÁUw[ë ¬»>«ª¬/›¹º äæ)ãÂIõ·ÃÝVh¼Þ‰$hüÐÁ3~À¹ðOÓ}C3'¢ÂmÕ+͸ûÜUÑü*®"¦Bµ¦«K®TÂt*üʲ¦³3º4º¾9©BF’ ·ò½‡qÎyW0SÓ®¢Aòs]5Yá„87ÈÚÇ3jC±4` ×Ä@VÃ)e0Ôç,Çs¾â7HÛ½kNæùhZó¤Cͤ Kà<ÍÒÈ7‚É„^ž¿ÓÈ«cË™`1ƒìñwËR¸à%/ÖÖïüçnM¸?Ñ‘ãÁ¹ÍÇæŒ’€Ý¤Ž‚+6Sàg<ö†`§µÓáP)¹_ókÈUe:Ç$°ë"É|ÇXm¸`²hŠ÷Î5ëbÅs놈pÖÔ¦¥ÏÚWÊXÞñ°³M$&/¯“‹¯yoÌç`~5­áè2­Á=þ×àJs:…†£—Å.ð1¡$˜VÜ—¼K^|BÅ?ÝIø¿jÎ'Sã°§Ò·k†6ð|»êÝ[ž´t[hœc†ƒÂ}6ú½¢Æ»ä£hô´± „ ${´—‰ w•¼ýx Ñõ‡f°:zYOÙÁ= ÉЖ¶ô‡ÏÖœ­MWúb ¼¥_ˆzˆKeºô¾}ùéÃeÃC(Œ•‚–‡³(Ôoô1~õv¶œºª¥Ú.µ·ûþÜ}ØíȇªV›~wÞ^NÅn^î sȆªßõ­1»Kž•„ú:ªÛxö«¿åY¯òiy´.$Òht!e×·åÃ@Q€”¼¡d“•XÛ à¤Äy´šÝc(ä;»ž+¦Â? íþÖ]V7ŽrnM‡;c¿³¬ý&osg›¹ÉâV…‘o‹ fŽ ¹Ü~Þëž=„Þ¸ö¡- 0¨_é³0]‚“ãºmÖMq`uÌÒ!Ãk±ÊëÑÁ¶– 9c£ìÝ‘£©-NKtÿ T‰Qåï¡´ÝÒÀê9¶z¶QbÚÎÕG‡ŒcqûÍ3OT|2 6|úËÆª¡peûàmëÚ”d´Ê,ùíýÆ™àÔ¥[Ù:eáV ŽVêß?•ÆcË œü#aq»¦«ÉW[3³Ë>­J‡´dDcð0¥ipßt=Í¡ñE’ºŽÅÕƒR›qyéÛ,ï1Ÿ!ùÐb¦;]If»æ&Sh¡Ž*2›ÍÏ_W0ú^„¾¦ŠuKí­¼ž µÏ²Â÷úÛÙ²©¿…Žƒ­ZHÄ‚q9%o?·VÓ³6Z‹KhÂׄRœ’Ç.eõÆyÁ7µ1xêó±ôu~–ØGMæ@N¬õp®l†Žf²êܶ?ž:d1 ùò±æÜZw*m™¦ y}Àë^W{&Ì}ü¦¤½¨œÁƒ¨áþˆPÅø0…÷gÊñÛi”ðœpýˆc›¥ÃÐanÌNÆeqHSL‚BŸ«‹ÑbFÒ?=ãð•ÿ0½í´l9Ø¢;#Õñ#&ÜC¯8"6`ò¿«ÖN5tæcOúÛê+"çó5?й‡Ðð/?Âgì‘è(-]h…ʬݷŸ —•Z„KùRèÎMKzyרîKûð“èà>k¿Z±©9š >*Â<öE÷÷;ìAˆô@è¸duƒ[Ü OâßR`°ª‘B!:VÄyZmä„ÀáL9xžWñil‹xê¢ý…HMLpå4ǃŽ>-BqÀ¥f&H±‰–|*!›Þxñ…Ž«# :‚-¨£O3q½ð\bõ³‚ªcš[×Ö¢û-n֜絵†_I¨¦ò‡ò2Ô9çÞ­:SŒT„ þÁ¾¤]¤e¹ìÖ¥²|.S°y2Õ­2‰¥L♄\<³‰±Ãþ© H,m{G!©ÀÄY,TP4OãºÈª/ ôj€ëÆïÄ®sÅ_浯Sm?V)ÎéÀ•ÍØ—ºr‹Ø£BŒ"ø¢¯½ÖÅŠ” ~cF×3òßÁ ó¥‰öWn•lz[ø^šÑ!›œÿÛÖ0…Ø?–g´W*> stream xÚµYmoä¶þ~¿ÂßN,žHQo)ú!¹äÒuæü¥HTÖr½êéeO”Îv}g8#­vMw7 ERœòá3¹ò*‚?yUDWY‹BçWUû&rµÃÃ~ùþä~!t W=¿¹{óîC’\ÉHQ!¯î¶ë¡î6W¿ïwå~4ÃuÇq ¾ºµN‚:;–MSŽußQKÙm¨ð½Ǻ{ —c9ŒZd‘Ç*È®¿ûñÍww‹?‰R:Ž=_zž®=—:éUšk!cMηhð4ÂDd*ƒQ]ð·HêÆØ›ë0Í8Œ4J‚qg:*í‡þ:TY°™*³´Qaƒ-yPM-t†ÂÈ‚m5?þö–¡ÿvwûw,é`Ûm9¢ ó*”± ¹ö[”DìÿQœZ(ÏþoúêÝçÉLæ\ì7[_ÀE"T&ç/ÐϨJ %•wØÝØ6Þq3§‹'7´äƒ±{7+¦ë/8+¦y†P¤ðY…‰MDšx!rUÐPÕÎTŸ¼K‡+Ìö~™ºÎMgYð/ïDå¢(–þmùÉ‹¯Ÿ™/õ–†~¬›KÈ“©¦ÑPu9׎Ǝ–ꪞaPwzlE`bÆ7ëQ$’l™ÃËñ*®Ã†ýaKÃ?£Ý~"(Åð1T©%¨nêí3|b,Tܯý–ž%„‚㺗íÔUm|«»Ãž˜$àBªJ5pÅ;_\°™µÊÄÕ ¦ž¯ó±¤Ód‰ 8' 쮟š Y¦cG1LdÂ!K’WFeЯ§§éì4®ÛÁÞs¥ÎµÂC?ð»ÁIàþ÷Ž ò¾Ö´ÖO°ÃE«4ø'†€nc·r6W6vq¢ê§¡|@Œ YpcˆŽ½ŸÁ4Ô÷t*GÍ#°BÌ”*Às·éÀ»ª`>ce„ôB½—åƒO¨‰cÏgÿpì~®Ù˜ÏS97 ¼¹N€½šzuÿ.vû’¶0§ª1€ OX›ÚŽ/mç¶ýáVû·¼J™gËϽ[~Áê[¼È?¶„Äyèä(¢Óñ³\DÅšQÀs— tœøÍÀ¶RûÍø,èBh¨96Qõm f,ÙqkŒÕ“5lš1ªf,Ò'ÐsÑ„J«`ÚÓÓÑäÀt+C•‡=ë^]\XØfO¸Z¹øA ÏŽKÜ7C…[lÇ©‚*kn„(`(‹N{Ú‚f†Ò(#*Ö©Z!S ø3%ôu˜¤*ø ·P Nµ¤W²$xnÅÿŒ+¢§Ö7í‘ûœSÖmoqûÀH ø¤¸¡°¼-Õ¸ø¸‹hÀei¾ mÎÃÞÅÏE/=÷e…³øÉmØ6ß3o=ÓkIHÏnt%ÍÕwÌ{yÀ¢üFb“2øpë9‚Ì ¡4[íbÎ ðrÉÀË#€±Ë/9MÖXC6†²¡@ÌhÿK“hNNÐ ³Ý€3Ë=`*ù¥¶Ô£ä¶Á`ß'ª|ÜÕ+z­»M]{ñ'<:Û”–ëú­b ýîÓZ™û.†m| ŽTˆŸ•ÞlVíW¼PÙ \T$d6ÓãØVá9ªû€y䀆:g‡Ú¥é Üé'’Gi,1qÜ–Ã'—Hia]';Ð)ÖçìšÏß›?ë0ÐW5˜Ñ„cÝò4¾t,hÙÀ1—«ÎøÆ“ùÙþQÏT®æìˆš¿lžÿC;^­³ýи ÚYÓã'ËN¤ŽÏvtØÀë³/5ÒÜ„ v}Ìð¥vt /•éB/‘™Á¢B¾4ÜîO-Ä*\|=Ä„KÒ™ãÑ-ËðÉÒ.×J¤IÊ.¼&´– !A%8E/õ¸£-s¶,3Ö­ðï ” ìþÓ ”ðä©]¹F@ûR~‘ }Hḳ|Ó£2ыІÉðgøDÎ@40—.’ƒ s)´ÔGÌx ©NÃ5¯L¿Ç9$Ù†õÛ¾iz^àí ÕÞcÍó¼„T”SÓ·TÉ•VR1æHØ´c¹Ê6QýQ/*-ä¦VZßm[:üža5ÆDxOZø<¿©‡q~kÊ‘½Û³Š®€@/ÜaëâËsÆnMɱÜ-̃ǬùúÞöÃ~Ng—XÝîÏ*ÔµËX8þÏèciVw yvãRÚ ÍÓÞž3øÝÓrâ6| ó±GüÄ웎¢¾ÈðèX^b‡ ¿ž3ù™×ìQvðH“G‰óèh9˜æOH&_‘ŒãéTÃñ»l÷¹¡CÓv¥C^ìã(½—®)áÞ Ê8J/ZÒ8gÉÉ7(ÔîÙ®ùP·Ž×¡òÁtï8»òs¨Ÿ¨¼+Kz¸LQ¦Îƒ Ò4K§$wUG©àÞíŒ ïŒB.·O•!á%Jpw7~íRWrÍa¯„ž‹ôp­°„Ž6‰ °0”­™ àÔˆr¨¼¯›zœÉ:ͱc™’LáT&>æ¤Ï§™Èeþ?"V:?Dì$ŒµN{¦ÁO½;C>»º’¸Ò<Õ–k·¨†æÄäKZ‹,.Î&ŒD¤‡sØk·f‘P¹<›1ކB©€I®ŸØá²ãéÄ;ÜÒ'§áò½N pÍO¯ Ú=ÝðñhÊͳ-®¦à3Y‘óZ²¤§¶¥J0G¿Õ´/»ê™ê«]KU„m(¼¿»}oO,|‹u7žc½÷Jw6.­j0æôbXfÊ]GÊ4äžœ¹ž{‡«îž«íÓA_ÞoÇÄU¿ú”é{'W~¿¡.{À3º¤<õ?Ö‰ˆS}¡ÿsï3þŸêü|Ž×‘ÐnD®ý"0mµë­¡"žÒ°ÄÚkî€âËG+i.’tú+ŠïãÃÕ´qºd•l>i؃EZcÃgT͋ޤ®fÂÝúPœnÞü_¼ep- ° ”S“1Níä³¶)â-#UáyŸdWWGâÆ·‹|5 m+½äªàX¾Éí¬6ÓøxNEv¸«º…@ãà¯xtŸ‹þÓÃy_ú}T– ¡Ï]Û¶ÿ7½#L‹£Ÿh‚{žðNÌ Y.ŽéÌÇQ!â`¯ÀcÈÖg¸€{‡«î>.8ô%h悇ó Ó1ãêW¯¬O º² E,ŠO%/øR¡VÉ…1ͽÏÄt:è?¤ 8CDM§ºpWyºˆ*wžÎt¡²„é+gºÀÚW颒ëýtJïpÍEt±Œêl­ÜèÃr8ÍPÊà“ÓDîÖ=¡‹aìÆgË¡¤ üm@‹øä(æ–Yeñò+@¼:wYªX]áëãÎÐyTe Á<ÔkÁA=wú†>Óp¼#)Ìm¯ýª§òBèlù9ämÿÖ7e2[_W³HÈX#gxÏÝ[úYáuK ¨‘bY›·Õ2ôÊÜð–Î ‘Äéñ–f¬&ÊN»A±¶ô,é1ç,W“ûvþ†ïë°øê4Â>U‡ßðìåÑÁ¨=rgË©ëýâš6gŒË`z¸‹o/4ކ“7!g€Îñ ©†4¼€¤ÝÍÄò_då3 endstream endobj 402 0 obj << /Length 1597 /Filter /FlateDecode >> stream xÚÕËnÜ6ðî¯Xô¤,UÝ6mÑ4icä’äÀÕÒ»j$Q¥8û÷á²´‘!%9>,9Îûio㟷ÉÜMN¦›¼ºp´=lèðÏó OãÙ€h0oî.~ü5Š6žëdnæmîîǤîö›·Vº}÷Ç&H3'M2 ¢€{Þó¢>à·‹_îú‘ï¯1—%‰ÓÐñ‚˜õ¾ÈYÇåÖÏꎬÓ 'N û¾Î»BÔ–}Ólm?µDÛIUÅg¾'Üšw[øö°U4ч¢;ÒiOK˜« R\Ófµ&“—BI×Ê{Ù‰ dñ¬VY ŒíŽ‘üyɤäÒÁO k2Ö0ýЉ}´…´5ÖÄ"QâÄÆ/@—À<, î(¹­˜ $´ê­g)a&Š^mí0 'úÀked@" 6œQ$1÷Dú·rNC[ oû¾a¤µ¬¾ZË ìË®ëÉüiª`øH·1úý+v#Eù’N©Q*_vÝ­Š™§ýv&ê:cæÕ×ñ­ÐßKßÈ’j‘õ x&É\¨&%XeH´‘KžŽ¾úNÅ“´ºÃ:á§žÏ;<ùVÃÚŽ`H;BòGÅÁ5«ôãQB´ÎeåA´ F¥Ñ*¥ Ô5;;ÔütöÐ0rHp/„šN*ÇkÎÏ+­çfN…›ÈKœ0ˆª­Á¶Gè3÷œ(EÍ‘5oÉÈÙüíßÔ Âò×Y9}Ið†tBѹë;i˜­ÔÁ`/èpNTé0[smßÓUŒx:œÙŽ-EóµÉŽWÄL3^—§‡EFÏ9$P×jaó=8y™É O³ÈåÕÍÄj+ËÛ"Ù[Qév/‹ŽŸ;&°Þ¹‘{«T‚“·VÕ>m£ÈZŒŠœé¢õf›Bå*{-ÅÊg(Ç‹7[Ïó­k%‰‚>Vµå~½`·JVV’@нg]ƒÊý¢ ñ³Â~P³È0”´F˜R°½½ç¦ìï BL;Ý$yû ¯ëg‹‘ȬYÌç¦i>ø\TÌÄÎwiWеVºùó¥nthˆ…¸¸ºò"M´PŽ8pöVàaŸãV'—¨Iøå@"<$_öRšèßU«%Ml9¢Ö±Uq¸ÕüÉãÁž×Ùè ÛÂk5؇~l™–ã°§»iß’®Ó=/;bHx&Æ€þ©~q ÄcøaâQ:·s}a-× ãÐ`6Œ‚DÅâ?.‰o Rž°8]âœ!gÉIéšaÇ“¹ƒµ˜ q6Ö1ˆS³zÁ‡#<£QµÊj~ƒkËqrRCg’èi.ÎôÊ£?5„,<©B ¿ÕFs¢D€ŒîÇ¢ägŸvZq5[²v?Y´#sh_»¢,:ò˜ÃÙÚ©[?]…×ÂU™µèè°×9ÙWÚ±æ¥REYÒé1àÒòJ d9«âA±íú–Ï ßò’3µCÚ!Dî-¸“rߥ ~Æá‰÷±ëðs!›’BTNÞ©šÁÚz Wq)ixƒ‹ö¸«ê)ÂZM@ÔSú”ó™ÅW?hM-—RM»ÍäªQLøŠ?¶9 ¹i¯ƒ%ñ¦ª¹ÞÄ;× Îû…n¢ªÀ/W³¹–:)Èœ9©«M-òŽ}âWÞO„;Ä´:ù‰oòíÁˆù‘jïs"ωÂÈ<ùa–ª“ø‰Á÷÷sd`ªõRo‘ÌP5.g‰xÄÙzY>ÖWae‹Ñe?r²,[O' gs% Êu|/žzå71ljHÐ…ËK„¹Œ¢ÇK ‹d× Ø±Ot- °ì Ð úíõŸ= 8© µoé– ú̧¯(º"l½t¸~õ»C§;,-ïÈËff¿3E‰uªrU…læ÷Xw‚X­¦›tž`Ôy°šÇ¾˜>ªlÁW]Ëj‰%R5I„ŒRM¤ ê%è)o[Ñê/RÃTø2µµÅÛa†)q74lä¿ 0ú¾áËÓÿ$•ž5âõ„¾'ÓoÍÁt=é!q9ÿÚ€¦¼ endstream endobj 406 0 obj << /Length 2351 /Filter /FlateDecode >> stream xÚåY[Ûº~ϯ𣠬ñ&RY¤èiš¤§hФY´(’}ÐÚܵ[ò‘ä\Nÿ|g8”,yé³^œE_ŠV5$çþÍÐ|–ŸåéÌHÉregËí³ÔÏ6w3üãí3è@¸QþéêÙó7ZÏxÊò4糫ÛñVW«Ù§äÕºØu®™/¤”‰x1_(¥“Ÿ«¶+6›¢+늾ÕŠo]וÕ½|슦sð…çVŠ$Ÿ__ýõÙë«-Ä™Œ#å=έ˜qŤÊDà<³Šq©ˆsÁô|¡3‘|€ó“}¹œ _€1£“£áÛ}¹rÈØ±&@Ulý“ÜHI‹ÞÍQYä-èœ×t˜‰g k?¸Õ«z»ó!‚ôþL´&Eóß}}ÖÓÔYîwEµüAs ÅMqSn PBOvK+ z]Ö„QX__¥ÕûvqÛaöÜRÉæÕø›hï]Ñ|ñ5¥¯o¤uÑ뫯PƒŸS®ª²sPÙ!.!õ«xY÷%›ò{LŸ$4¥*3i8ÿCL‘œ3ÁzI$<Ÿå,ÏD(@LdÁ>éPI4È ±§&Û§LK añç4McœX¦ìE&'Fgý±=$KY,˜C¸G·‚„“füì½2Ø+Ë5÷öÊÇ)î2šE™UCºä"Y˜zÈI©ÕٜʘÀvY:¤†ß2€zB˜'4€ :Ó^YO­4œcã[A‘'ÓÇìuÊÙ9x8f…O´vΆÐô*—Ç¢ù§x¡T¼ð4RôyÅÃéKz|¢Ç"´šB ²#qIŸ?CGíU)Kó#ƒ29ìa†•êxez¼JNÖ+]_† ttZ@Ô óËn»ü {|€> stream xÚåVKO1¾ó+ö¸‘ãñÛE\Š R¥"!AKXȪyÀî&TíŸïxí$»` ½•HØãùüÍÃö@Bñ‰¥‰æœXa’Ñt‡6«å}â'§_w èõQ±ßÒü2ØÙ=’2J,µ îÚPƒÛä*Ú¾%ÜXb´E”fõq‘/òbvï¾íÖHÆÞÈÄi¾¤¢ÚT 1‰2‚~ß³ÊtßW@¨ŸQbüˆî5ŒÑSà¤7¼Øfˆ“g†à-;–"ªsuúáÄ—ÃŽéãlTM—Ù5•ôø“_: ã.‚Þ=R¢†›Œ0bW®lt»á’D`*/n”W=ï DSªD¯R;I#`-i#4Äœ;í€0”cðPŠÑfJ° pÂç‘ØŸt0Cš µÙ—łĀ¶,ÆâòUW¤rAéJ>Dº¢¾ÔDp…È kÊzäßÙôa’#°6©f3!-‘B®jÿ`>}XÔA¿ÊËe™4/½¼¨‹Iñ+«‹ù s«¸M˼zÀét>«‚Q]Lóðušg3¿8s0‹©ûƒúÈùËO]UWNÒi6»mÂÔä:ÁªÇå|q?Fš½¾°ªp£Û«‘=£<ˆëÓÜH³¼v$žzŽsùÃ/>õØÍ¤ÃÎóP«¼S«Jâq AúŽ,fKªfÊq ,gDq½²ßGnャ³­ª»¿òkd2z:ÜWÚn\UQGs o&¶ÎäE4Ù€Óÿ2Ùb+ »•†ØJÖ<†±´é`2;o§{ÒƒtâO7W@´´ÝÓ•e±t— j¢µHˬnpxZĺ&š­o˜kÊdŒ¢%ÜŠvöñºz‹ï†Õô†ÙêâÞu÷?¤£9V:¤$ö†÷•!œA÷zGÓïîz¼á$›ÞÜfÏž\ó‘Þg^¹ÆÇ㾫ûQoï~d¼û1ÿ6M°–d¬¢t{÷#‰Çݾà|Õºp"ÈD·ÿ]*ìª2D$—¯:¢ÄK)´å㻓 endstream endobj 416 0 obj << /Length 3198 /Filter /FlateDecode >> stream xÚå[[oÛ8~ï¯È£ƒ©¹â𢳙íbÓn±Í ´}Pl&VkKIn¦óë÷’ºšrܤí<, D”Dór.ßùÎKÏøGÏÒäLsNRaÎV»'‰{ZÝœùÆþù„†~Kè¸ôüûå“¿½òŒ&$MRzvy}&)%Øl{]®ÏÞ.(=ù¯'ÿ¸ìF’Œ8%ö<˜Ó°3ª £Ràœ°*e¡\øéøùR*¶xy¾¤‹¬:§‹çœ.Jüóé|ɵ\\l²¼¨qQ~,A¸P Ç‚ rE´da(Bý`?çõª²]^æ;ëy™UG ¦)¡,ˆäWÛø^Š{±„ðD@g×鿾‹8S$Õܸ½’KJ×¾SG¡Ò³A¯g ¥c#RNŒQ£!éÌ:2âxQþ¢ÛË3ÿ0ÌF“Át I6Þ@›MÁø ÓE$Í8Ñ&mexu¾df* _dxa‹Ú¢iü¾Óp­+lXÿ¾¼öÝ«¬X—;ßþt.XSž]mmí­í»„ŠÂ®ýmy}Â?¶òOšM˜w¬ÇßÕMMX9ˆLOÉ`i’ú%×·ÙÊÙX×—$It»Ág1bD'6#`)ú1N.Ø0O»ßp)—›°ÜÚþ¾·ÅÊÆ&Ôš€WdÙê¸e{3T_bØê¸a_Q·l:šïÓV0mÁi+ļöRÏBW3Aó†®uSžK0òMV79˜:Oéâ¶ÂGþ9þ±u¸Œ&©êæ¼Ë›Ÿµ·i¼kIsæ)ÔØ¤“9”÷š±i{Я0;aŒ/r>p%ÒÅOQ]0¢t×ãF ñB°â‚T~N[[Ï¡!š2>T8Ⓝ1ꔊà¶BÌi5‹ïo+|¡¦µjUb´zÔ"íòú^ÁÄL}V?Üâ£[¦’(Õ¡Ûso«Qû¡(Àé0Hƒé`ð&6wJ ï„w·É½–BÊš¼ÆàáC u‘"x0ÕzOÐM¹Ýºàr—7 Î=÷ ‡˜ãžÖo}°«|üùǨÐ8QèÔaËyÕPÞéá]"gà˜ þ Bµ )ëdõ.ÖMÕЈžG·G‰¤ÝPD¤½"M&!qT@I_Çd P –Á4ämTAV–ž¼oCѼã!8$‡™ÉãmP?‡ØpA³8¤$ Cßrû“zÂ4ìLl)`甂•ÕULZ¥‹«¬ÎWÙvûÙßîlVÔ¾ 4ˆWÓÞX߀z•]åÛÜGÐö­ïÇú~õ纱;ßÎÈyᯙï{›U@ÈöÛ¬ ?qYŸïÑNHóTzɘ<Ïè!Õ{ûâ>c@@Ä¢,¶°·Ïþfm)(Öð°n{xÊà÷™bXàèy»OøÑŠ$«ý ·x8·¦\»]`t ŠÈž¯T¦€–º`‚Ì,(Õå—L¥ ëÒër»orÜ>Â\¯2Þ‰‘+ø ¸¾ 9?òY ¶\Ÿ7aü #È'áÃrf&ÄùÀj{âü`Þ9 ¯bKáà©>ÊB ðÔ¶Ã* Ûïj"xs½wî͵…”.oײ”heÆy¼ƒ1/x–Æ“|±Ëš* !;Pý£Ø¯‡R: úg Í †¡¨bƒ¹Ózñ6j¿”j&‹˜&I"F!2ö!žpÃ&Qòkmä½—ñÝÆVQ7 ¡úëmƒŸº ö0}Ä“5-H{¨‘Šh1Î}ÀÍ“káº)wå-l¹w˜S{ˆÓ®ÛSl„ùð}SAäÏ}ØÀ‡ÎC¨b}¼ýÎ`Õ€»Ì‹AX·n¡Á®O[Ìæ )=Æl¾­Ú.`¿«òÆÆ6¬8é#Ë/Fê4èÂQ,ž&…ü6XúþiØÈ,Ò¡Ä59eDÐ/u“ÿ+Ĭ–ü(bTѧ!–ø&ˆåí麬¼«@òý¬¨Ïü‹¸­JNü#^DŽݫô{2Ï @l £2Î%C©¤J1— hªšÊäñS`Û÷dýඦ³þb×¾nü„}Å›èLj;RÌüÐb¼¸±eA“u´áEJ—8úâ+ ÀÇhåáÚ­/À/#©“zXò½þ<ʯD¬´ëÒO`꺹­AÝ)•cQ5.àØæ¡à;©4àß»„Éí ü.‰¸”{­gˆRþAebÖ³;-åÁàãËVCT:mÀWq‡N‡.æ?à üt¬?Q`L½4ÑI:¯ ˜Ín4,¯_ –4IS3‚ÖQ¨´G›(D þ@Ó¬?ÞðøpÈÆì@n ¡|B%fÉQp^bŠHÆ\+‘×Ó0’nZ¸Tö÷}^µŸö‘5)Ѻ,¼öÆžæ¶ï*ëE‰G {Nû ]Ñ‚q“~cñýÙpêv´vNÑÝ&” 1†rßÜ”½÷Á•óƒU"fTå.¶h×À§ RYžwåG­! tª¨÷aü¦lËEÖGÊh[º’[¬ýí‹sÃûbÕ/úE¾µïÃ4 =+•Ò®i0l¶©¥‹lØIÁj»È &$™qW±ñ8u|0ô}ïû>÷—u³[­6ƒ‰«d‚ñZÓ-dDÀ¢ãŒ–ÚV&#F Y¸˜ò¸ØX—Û| ŵ+i7™ŽtôY«û¢¥ê¼ämÎíO®lóuÌ ‹>Ò­=ùªI¼ùå:¶Z<ÿ¥Ä}«5}>à˧¦_æÓذ4FEoQJ8øÐߎ*¶zQçZÿÕígïÂv`•‰åDì^ù¨F)ÃÛU¹ÝïŠ:ÐDèVFeÀµR}oi«§@˜%='Qˆô-ÊÆ/2 ¢èïi `*ez”n¦Å%DÕ’Š¡;ϨEõÇ ZÓ¬m[?$çO[•O[T[Ǧ2Æš0PcIhbh·žvð,˜zvëð›.ª<”ºÔÆ©¶YÜ´…hÈ¡ùè~B1&‹Ÿ/_^øV^Ǹ§Kí‹2yåNÙXü³Þ¯ò«­Œ!aïix~í'°á4ÙgÛ}AHB+wÐ#<­l¶BÞXçë)ÐHx¸ÄÚØ–(jùÚáfžYÜ„ˆÅRðüI)¡@ÖGÇ*XJé0¬G^–-è÷¨QÇF£€½~cF^çÕãb¿7f¨{c†Ñ`ãRØ0bPŠFÃIF3÷¡…#‡¤ Ú© ö‰nH¥sC?Q[aÊ]úß4UYܸjðþ¢, »jœÍÁË‹rç)°ÿ»Ú÷C‘½[¼@£¼ŠSþÚ±$p5ýâ0åE7Uv» Fw ¤ýh<«Bþ´¾œü~”ÿÁ[¦÷Vœõ0E!±w NC~…ÌW¯»|ÓÛÍø“R\1žUSüAÉ¥™?ý0g@›žó w/L¤ú) òJ$;3Ë&1wWÜe“XáCÆ9gG´\LªFÓïi”ꩼÓI228ôûz¦ÌÅûľ/)àv;Å›,z"F“÷q8ú=fjP×KØL–$ôh¦ &*ý1­ÿG¿°M˜ÚJMÔØ´þýÛå}FÈ„s7`Wˆróçs´[_N['PΛ ¢Ë]^7G¨WÙ6«z'ïg œÁUHÛ¯Oó¬Óüªî0•À{ t·S ÄçÊãàE €i—(BëHhÂÙQ¯3¤?HíVW‡IJÅÙ=­X5ŽøÀŠ<‹Ìâ,YÝÖ7¢±(ƒ¦<½bÒ~âtÛ‡e±Tø”›Áº"Œ‰}âŠȥõ¤óׂÇMùS °Þ9Ñ4¹Àî¬\ûíçQs¤xx»ÿü²Ëþp¶>g“H¸âÓ.09ámøN°pŒ!ŠbÓ-f|`Òø´3iðD!\Œ-º1*;þiæok Ûð vêŽM´s‡‚Öpi· í|ÕYÿXBé_¶Ý:qxxþÜc“ŽbCÛfîaªzœ‚4ÕÞ¶ÿOéR†\ endstream endobj 425 0 obj << /Length 2833 /Filter /FlateDecode >> stream xÚÕZÝÛ¸Ï_á¾iјå§H^—½Ãè6h6èC’­­Ý(ç­,'—ÿ¾3$%‘2e{ïÒÅ+Š¢È!gæ7¿™-(ü±…¥ -±Ò,VÛÔõ¶ ßøçO/X·„ËhäŸï^üéG¥ŒK-[Ü=ÄSÝ­ï Æo>Þým!Œ%F[˜ÅõþûXëf÷ˆÏ^üõnX@q~¥$8òDÃL ²QJ# Ò/*#ìf©J^¼íª®¾Y ­Š=\x±ZŸªÝê›ï{j÷÷Õ}³iº¦> ŒÓ]Â10MJ!üÌ?5_n¸)êÝÍRRYTþ²n«¶îêe×lkßõ÷ªýGîñßß·Âö§ª /mºOØÅÁ ‰‡§jU{AJ ÂKF(Îõ!'¬":ÂfÓ²ñêfÉJ]ü€—Ò_tyå;os¢8j«ûY/Jò¶ÆYñõ†ë¢ö;^×»}¿ewY"Öò~’T°ÜJ%)Ù8FÑÜL’p9L´ËÏ¢ÀºÆiÀz„UÅkgÒKÉ$±%˜!ØSÌzŸ[ lRœJ,a~«…ñ+qfa&°©2QT*$²´‹hÔ¹½‰gîíÒ3ŒqWŒFÛâ ôÀ“}Ýæ„ÑD)}í¾ž©³¨4[tŸ‚)“¨†9€ã{—c袊oâ¿ã^<<ࣧï÷÷®×ÁDxð¥vã»}›“Œ•Š˜Ñ,«Î vèꧬÑèxtv¯ÐÔzp¨×0ŸÑEöܘ! ¦Q“YÛ2ãÁÍ„º` 9)-v0F’‚‡ÈSIŒ }Ä$¶Ôä–D0ýßò§±æ˜Ôn`$ a‚cA€ÇÈ"¼âÔ.¤{Ùu¾l}ÛÍ 1¸gγúu±A¶&ïTVƒµ=tu›› \TsÉÌ`½~H×V»DÆýî@üö9l›KÊ`e”ÛÓ˜Èq»7ÌÁ<¶‡ð^œžvn«®m~ âèÔžJ"F½¼ÉŠÌ ÕPT»µŸÔ:ŠÌ ¡ÚøûÞña b$9 ý¶9˜ÚTë~Ó#L|š­ÌÁk éh½ÔÛ×/ù0Èbåå@c~c ¡sa‚! {˜qpAaUv]´(³Â}|™5qá†~'Êð|ÈG^U;ïÙ÷¨¿¢ö7«ýöéØÕk?¦:ü[äŸZ½¢L>Óp¾Û¼éåKמmdIßKvâÚ‰‘h„$QTžÙÂ’£1!&Ë œóÝn ¹ƒ.VuÛ9Îínö»µG4 ¥ À‰¶öÏê_›CwÀ¶bŸaœ ´eL!`¦ªèP¢ì‘›3”!¥àJ‘;m »bâÒq# •|äž®‚(¦R¸Ú4ÛÌ3#RÚNàeûæƒÛÿák4 Â ë3”„xÅfˆW úŸ2~ÌRJZ|ýÔø< n…rqZº8½ò¶tq’Ñùí~›Ý,‰´¿ÍaÈÍRKSܹ kœ5†ÅÕESaD¨a)¿/â$lð°ßC †îýƒïíz ö›e @€@›‰u¹<÷+&úá6Í®®Z}žöăÜÇb.UzH±Ä€aA€…S¸@â c˜9R*s²U=w¦ofxŽ4*q›“å˜ó¡É¡:”1¦tU®Äõrä ê»t—H5…£a°ž0àÔ nƒH_®edBê §®8]pŒ-ž§ŠžÄÊ¢õšö½Þ.!ÔûTÈõ¡é¸ë®Fuñn·ö/Gº•©nA«cÖòR–'üpЧ™lr¦Þó!¸({öL-f«Ñ°¥;Îê]}}ûàúmÛô\˜)ÈñdVl÷ý7FÇÝÊ{¾úc³©?†=s´*«p1p‰ÖX.©!òq°[¥D”÷£ën» 3ÒôÀ!ã1œu²norósÔúô˜Óä1}ÿ¯ûÇÀ3ŽHöÿ27‡v.9 /'s”×ÏñDsJw?§‰¥¦€¢eª‰¿x àmtq@õl’!GX¤ónýcŸ¥aPÓ.¨á!KÂQŽÇ®œ“™Ê#ÆLª§îÅ?©q¥Q¸OK£è84êåœÖIYîë¤dxÁ`]ͽð/W5Œâ ‚±âAgSû6„V<·’|Fbª'àþMïëønDáðAØ6>š&‡ø8S-FÆ•éʧ&×V4½‹2Ï>|t1@ƒ,KŽˆò2·G £ž·Öí¬;3êƒ[x-ræ´ÈéIžDŠÓ®À ÃVØn¸ nüš]Ó…W‡œž)wk`Oâbµ[þî2Ö÷¨vcQKʸ”© £›” æªÝ\YæÈJ‚àg}”Ïi9ç$iª<­ò ‘ó´cž)‰¡ò,±‚œmLRG=x,¿këÚ7«ÝÔ»¨£ ¬Œ}”÷>Ê#tr”»†b­Œ”:=ãßUæ²ïB‚BĨègù®‹ts~ªDħf§5׺)¿‰„#ìΟ–²c:wƒ>Wc„ûù#¤Ðå®fjŒei35ÆÔD“hy>ñê¥Ù˜C×O‡ûÐåO°ïq¬-ºªé.Tò0LÌ&|”û¬—ÈÉ´Š‹à}ø=)- #³ê¶­ˆ„¿¼0€¶—¹Å$V¥ôs׺õ‰`†ÂÂÒ%IöçÛ7ïîÞæ bá’.‘:îyËn^~ž3BËh‘Ã)Å )€.—"»Ö¼ –6J–²hˆ?.tû Jà?˜ôç|aLO¾VLÌ„9ît®þlÌ0Ë­õxè¼p÷>kð7Õ.[óÏs÷<ìƒ;Ä||ö!€Ss÷Á5 É SlÚ¶^WÍýf E?= ;tÍÊ?ð‘!ªm]í|ºO¹V?ËqˆÔƒ¿ÖU_WÁ»1ĉ‡SûþÔb²Èú(ï``¤öi9⚀TšÚù²"ÖΗ`½GÜökib­I,&®r 2háu¾†sB€ÄÒ??WפT¤_·^}ž1-,FûÄ?Š:!·Ž3ôj÷ˊ猚ª¸úñf¦X4¢}¤ž¨®ó9†ó6h1ÿ™~!ä)ºá‡0x-ÊÌ™P¢ ( «˜Áx€¾rÀh´=nEü%Ë?ðÌ5£‚ÞrêÞöf Ø7A77WÆYfRœ¨ð†{XU›ªÍ~¾ df=S0°Déˆ*p5£½¨vÌIOšI SéIñ©œ"¡JâS3dIØXaºðqÔ_…ÿ6îZô{|5ňW5ÅEUVO0B%kSïg~¢’|å›5øøÜfBº0Êe¨ÿñîîÊ~Ym® è?ã¶9–†ÝqCëa¬èð²è{ÁŽ7ΰ¡íS=lU~ЕcWÄõó™¬àñ~çn8%ãfza½9¡`]]­¿-£‚+¥i3V+iå$ É võƉ®¤}þ÷]ü ×±/2{Ö8ElX@.Kib¼~)ŽŠ¹ažw ´ö»T”^EØ×'ž°O ³ëIÎr3^šin–QÚ½þŽú‚+ …pGŒUø§¨Šd\¯ l÷“ *ܳYœ Žàü¯+JRŽ <›ù€q H¼mzª3P9æ™Qh =Éy" ¼œÁ–e\ 8äêZÅD¿<é1;bño+Ü—žP>óH%©,þ@åçÁÒÖ’ G'ÜзuXºÚöÙŸ'É$ç[uÛé–úÀÜQj endstream endobj 429 0 obj << /Length 1514 /Filter /FlateDecode >> stream xÚÕYßoÛ6~Ï_áGµYñ7Ù`ÀÚ¢-0´@°åa€›ÕVbm±¤ÉòÚýãÇãQŠ¥ÊµãÆCÛ¦H~<~w<,ÅîŽl<Òœ+Ìh¾:‹}ku3Âßߜр›:àt ùâòìék)G4&6¶tty½-êr1šE/—IY§ÕxÊ9ø³ñT½Kª¿ÇÌDüü‹}˜åëñ”)ÃmDùøêò·³W—íÜ’±Iòk–ºÇRA(ÈòÕŸÏß]¼}sö¢ÂÉ£)•DH†ðËeêá:º.no½³ü›ÒOɪ¼ ýÙ:àªbÕWˆIC¤Ò#¥ Q†íQªAO·àæï õtgoª?r«¯&ŽŒâQ™ÜzÚöIq¡H¬Ô¤ôR}¡žOµ”ÑÛ´F.›`ªy‘¯³x Ô,VÉç@ùcV/ñ+Ïòèƒm Ê •(¾*œ+9[­'è_ÉJ­—¸`96g¡¬aI¡¿·¤Ð÷>¦âfS¥Á=TÇà†˜àg~2…_O3îðûžÎä@¹¥-˜Æ2Žh±PòоkÐá3<™:QRËh:øõX ˆ’¡T߯ÀÃùÓïP@ ¥Tà¨ôšþV‚1Fªn8zîÜ4VѪجSü„¸Ãc•·É<]„¶Ë" âAèú®á~Ï`=Ɉ˜'aìGØ®Ùt@TÅ&_ØÒÑp5v¤ÉjK¬­ë´„mHéýdÈÖïß6ÄnÙcÎ÷ãÐ(‰Hý &šoªjL•7 Õ&à „'XÍÓìf 航p·»´hB ŒIÿÙ$·ØXVŇäCv›Õ0ønl8D2aTô¾‹ aá¥%²ë¡%w"¦ÌJ¿XÌ ¿@Pß"U BbÖÂýbL¤[Aè== [ýrB]`úAO_)œýOñN¸³‚&œ*^…_†|™‚^›!ƒ|-a–7ô 'C€7)‹Ö›Õ*©²Ï>lšàd¦I܇K¦ÍÚ(¢M7ïèç+KI *ûô,pêä¢Úy†…ŒU7 ³(=cÇDÙs!jRV1å”HGDZBiX¸<šÈ&Ý}Ñ4J·äf MˆûÙÆ:Ï×Á0¿𨠲#ãìÇlc?·óâxÇ®Ö.6±à ì›B…%ðuŒP³ôNkÑÌtO¢AIX§Ðí1…1ý–¡¨KK¤]KÊúDvOBc>\Ýݳ„ä XóN{d8¡r§öºŽ¥Ê9CˆSh#N±‡NÌím]¸Vâ+{ïw#‰;÷‡ 3º0aÜç`Û»øAJ 5ÿKìRÇÌrG<„Éñ«ùÃo±ßVØŒ£õ9yN‘î|ÿrÜ÷ÔåÁšÚ­³¬Ÿ¿H_$“{q?ÛØ­øùàû甸”ÞvÝ%pû½›+­ë.›Iw]e|=táÍl>ß”I>¿Ã¶²sõ#ðÒ¥üûMøº¿~)xþ]•›Ú_¾”inÛªyîQí“»Æ;ÖÎ÷£9òY¤Ï†^mÁQ˜î¾¢]Œ§’Iç¾øœVÅú},c;±® çC/8 “Ã1âÊÍIo€Ž4ú”íÀ&³€–Xð«ðª8 ‡Ÿ¼4z1¼å¡Žã!ú<ôá<¶åÈ{ƒ>X˜«9b§>j2ã:ö8:z2 £ìb&3ýDìd¦LÇ—Т^ÍAàÅNÇ\d륟 üÏ„Fs endstream endobj 434 0 obj << /Length 2932 /Filter /FlateDecode >> stream xÚå[[Û6~ϯ𣌹¼_ØMÑY¤A›,Hó ±53êzì¬,'M}/’H™òe2É>l tdŠ:<<÷ó‘%3 ÿ’™Á3Å2\Ï–÷O°mngþáíOH˜·€‰‹hæ‹«'})ÄŒ`d°!³«›˜ÔÕjö® |þþê3¦ ÒÊ7úß}µ¯êÍ­}÷䇫~A陜ؙ¬H³B8AF“™Ô1iüÊ¿bAìªÀ·L&Kû8[`D™ðS1šÁ?óJÀOBƸÿ™kw R" ‘ž‘ðz82bÈñ¯é ^bË5ð¿iàŸ2¤H˜Ÿ":_I‹uÓÞ-VUÙÞÍ ÖùÐláËj· òHôÈ$E 3Gæ ¾{9׬Øo–m½ÝÀçŒ/ëuõÞÀH\êê(•ÿRë ì›ëqÁ»$';Ct3žƒ3IU<³¤ÿ£º?Ïýà›#Œ#bz¥Þžä$À‡œWXqR#Šª\Ω*î²L„yÏe£/‘Ò&rªt~Ã6`IsÞŽ3ëPë%,ãJÉ"‰+eE>#"Ä8ky¹ éõg½%òºdO˜É±ëÊTþŠÆn‡ë)ߣqÜ ¨Þy#tç"‡³z;œ·hE‘b$uà›f{7!®‘㊆czCj·žà”ˆBbˆX†Ct¯Ï¿Àž(í$íH—›UNä\#®Å(Ò}È5ѱÈíÊN䌥1ξ8ˆqvp,]÷å¤\ -ë2Áî¶9ÂÌ ü¸!Ñ 3Dg/Ìh—8Ö’¹õS´…Jsllù˜M’ý‰®ª_1á›jå¥Sîžùo‰™ˆ TúÜc÷ɇaS| Ñ×ð²+t^tƒ¥3cêÌy_òíc®roqc›ˆG⌲éJ vM²ŽBEF#ÜÈÝã0‹ ?‹ƒùÅ´7D-’L&™,eŽ#V2Lœm›áQÉ.™’²¦"• sÍ ï)ÊE¡EudT#xˆf—/½X¾—°–.(¡Næ)k¢Ó@Õ©:C§âô’<·äH§ :.P—éTÛ„Ezdšê4¼ño‡Je)k_¦ÔtM6¡T(ÀÎðTJ€»ÇYs!A ÄöyÔ»™>ùø‚nE~ì‡qêÇu2.¦fÅσùf‚~BGDÀ¾.¢“áçÀ~5…ÊÄîT!jôØF>jÀ¡V%2š¥úÐ&S-СÔÉ:[.p‚G¶o·Á/ð$rhÔ#¾Çùç1ø&_æÚíð4ãük1>2t‚±ó©ÅICàßH  )þ ¢ý×ÛŸÛVíÉ.Ž‘\ý}¦Hý>S¤>Ú¼¯ýmTDÿ=›Š˜†ÎÐVœ"Ö5ÇŸîª&Û30n./v»‰–Έ$F Íí8ñRB/Ž­g®ÙT£þÖfC·Zµ²ÚݺÚ=õŸ4ÕîƒyŠjÙÖ-pT­?Ï5ïrbÚ0ÚšNb[§Cç¨çãŸUà£\ï¶Ï²–™ž÷ž·´ðªÃòV(‹$+Ž$×J¦”Ì<”üÃ|AŠßkF,×® U¢x³¿ŸÃȵoüàöÆÿýW }gö^$Y(P¬=¢¸ñ M™µ$(l¥¡R£,Íâ¦? ;”sÑÖ÷aè§²ù]sk¥ÿÑ-íÀ]Y6>ÕV‡‡¨‘LÙTWzª*üy¢•›ÎfÜ®qXØh«[°Žå ÀºY¿À&™ ض>ô¹Œ!«ðSepP¿ŽÁÜON7 RÉŠuÕf•U›èË댿X¨Hú— x…‘qÏt£Üä]Wp@õn×ÞñüïÄÃ-*kãv¿ÁÆáÓØ9ü×{³sxáì¾ùèíÜÚú±IRcSÐqP‘^ë}cÌÑž] 5»¬*”rL•ŒBð€Böƽëð,¥##!þê.¯–í¶É9€àƒtd ‡Šç`ÐìRýZØÜ¡çªx7Õ’ HåëÃúÁZ)XóhFzŠÌ§9ÿƒD,¥ÊÕXcÛ>oo*è½7 gòÏ„D¶Ë&?Й±Ø*cиŠÿ¡YÊÔÆJ¨€¡îΙ79D–CÏž¶èÿ΃ÎÞ5ȶx1Ipˆ ”‚EùŠرæiã{ß@3’ß«$Ilÿ•ŽEÔ¨9ùÇ êî"ñ´lA’R"³ë‹Ù©rDÌMn"nÉQïܰNï£ÈË×ú ÆÎ—.3§Ä+€E#Ì‘-hTÄÓì9wWð>‘»±p¾Ü(7ËÏþõá‰=L,oÚ|ñFŒ…gùQ±j¤±È$ç§V¼bªéÑ`¼X>LÀƒÚföÔ#ÓÜŸM¦Ð;°ÃõFݸ-ÏȦN¬ú‘cÇ:#¬¥ùêç¥C•å-$³Ðò®„ô¶}•ëƒÓÌ­+<ë±cÞzæ¤ýa(ÀçÏÃyâ«›¬„=u–H‡Ë6.÷r]”×»ms …¥íH-jT¡ðè7svm0xßíÚzi_˜p+D…[!v¤êú7Û¹ìËõú³'aGô2M·lGÙK}“eil¶~d»oo·á–˜­E•&5ÇÔ)˜pçûÏ}߬Àó²tƒ¤Xnï?ìÛ*ÞŒV®¥á§?LÉWüðÂUüði_ñÃØÞïº^ûŸN²Úèn7Ùó_mŧKdß71¦¸r÷Mü"«mwò, êôîÍ6œýš‡F‡ ƒûÑTe"¼[®SK8l¾¶îæj@Ü›ÛlÇK¢Š]pž=QèqÈ8øŒ8¤öhÿ]^ø.‡ÞùÞ–E=œÑܲäfï"…Cøen±Y\¼u"&ËŽ/äÁ†eñ*³2UÐ}qw%¢4¦5=„lí´$±ƒŠug¦úh¯Ç péÓ`›`zèzÙ²_ÈySðÝðÎáXB L¬Ë<D(Ć* É±". eY裑_uòÞä¦(ܵSžC‡{9*`ŒZåXCyjFv@ÄÈ£`ØÄèmÂ7†òÒõÑ!ÓbDÍè–Ñ4²Ä (¾™‚t†»áÙ ÌQê€È1@6¯²7ô€¿Ü-¯‘ñ!Tý’—f„Dx{Œíûj3ªÃŠïƒ9*qPÑQ(––l€§ÒÛµÿX'ÖÐØ÷¡ìf¿Y•÷Õ¦µÉüöK• ü9T%‹±’FÚK ”) ýü·‰ T'g‘Ýý-7Øž±Jã’ÜʿϦ5û¦5'[‰ÜÛ/ª]¸ §)RJò¯ ft=”Iìë xc1Tû»ôØ“q|½ì·üKBú W%á!Z)­L_MÀciù Åöá¶lâ6°6Lo¶‡=Ÿ–lžO¨_Ãúü6è$Ÿ6 PÊ9°Se&·BRµwe(O²hôŒœ Ãy´+éThoìîþ#> stream xÚåZYo7~÷¯Ðc ax6`cHÈkX ö!ÉCkÔ’Ú;‡ÐÝãcýV‘ìs83R,jÉæQÇW_U›PøÇN=1B'íÉbõ‚úÞêî$4>þü‚Åys˜8ÌüéêÅçJ0Juìäêv¸ÔÕÍÉoÙ›ûü¡)ªÙ\‘‰—³¹”*»È«ÿθÍ6øçsƒ‰åºžÍ¹¶ÂeLÍþ¸z÷âìªÛ[qþÈCâÌ#§”ŠAʼn¶’0!ÃQ;ŸY‘m׋¦Ü¬Ã¡ÎËeñžä‡sÍO#N)Ž Ì…+Ððî/a’ÒÃIŒ¥º)¯gp2•Ý4«Eñõ¡Ž«Òá±´%œÙö…ß©¢©½%á²[õCÜØ ghÂngœ¦Ö0pønÆzßæñk<ÐÔ…¼øàB,n5Ò†(Jc‚0õWÆAŠc‚œ[ƒtQ,zàfõ°m ¡5Ysï:ƒ[ƒ¯Ù¬X4ÅM[£7nWø÷:ŒUa`sÞù\ÖeSÇ…6áYä |á>Ì€A–5y7¹ÙVåún²óï”ɪnzQõçÂ)vìrtGhrãÚ)M•¯áP`#µ-Ø‚tÄ€d°‰´õwlÊ%þ”Y~]mê|›Ä­Ìp+;¦ ¼yûþïW—½ÇáäÌŽÍ@ç(b¸ZSyú©×££¹ŒXÓiû}œ"Gb€)ŽõëQžZš’óÉBy 0³+OcÙ*oªò+I]Ú:ÂÜÔòŸpåñ1'”wË•uØ> 6&çz¨6×ùu¹,Tè·Ðy[mV¡U{Lʉo™G™:x¥“\6Á€ö.,)¡ºÓǧԂŠ0Ö‰#)Ò9ƒ 4æ$@qûÝ@¸F·ßû©Ûr¡¼ÛrNÙuh¢CÎX†>‰?¿Ü—­÷âO/m|s8–‡á.-8`_^¡s°çÆ»&|¨c @@图#thù\%Íš[ÅYÍŽù`:{{›=7„«äÙ1ç.¼¦{v•Jö`lFgUÑl«u¼,'†ª)ôºÉÁK0ˆ£‡ïf¥;`ù1ØtzW5”òä&s.X XRÚSƒ®´ÁÀ€7xFƒñ Í´"Š2¿íxcñ5_4Ëo) j1¼QÒUÑ.põ”hðä‘ všÑ;ÚV#€ÛoR&;Õ¼]à rB¨n€ßÜxA-Û‡|½øúz¤+‹úURëVÎåŽéý–y𬘉áC(Æsxp(BoÍ›~ž×)‡Ø©ÕÈçëo€E« SñƒËõdµÚ6=Õð aÁâ!lA“Ñ}–+ó»]xûß¿^‹òn‡eîÁˆƒRÇøÿÜ(¥²E¾\zFí/eƒÄJ4£¬¿„œÉåÕÝvïp`VõiÒ,Ч¬KâCú€QPeFñNâ³jé¤éè¤Ú1ð%O'á9ÌÕ¾ÞZ|Ì•ò`Ì”±ŒvÆcÜn0<áÊùu½©"ÿ›Kc[5ÀP§hG5H¼oU´ï¶ °ûÀ›Œ•Ï¥hŠ!A lW@–¢Í9ƒVty‹ÙÑ x­À³#ùà8GYƒüÙ Ìâ¨sv¬Úó@F`x‰ûxŸ8½ `Ý]ùãÙùÙdz÷oÎ.S|Ã'õ8€›dÔrÙG„Ÿá®€BùÍ)²RŠ%ŽjY l©Ê.È+ì•ÙåºX.ãŒw$ þ’ƒœŠÐF«x·]"Ç¥2cΙ@fÒâÎjyf¼uV!¬ÜlÛ\õš…å>LÀ­*Lp€T[_~RÓ)éÙg¬b"ë·¨bb„=RÅT}¹bT-)¥­‚:|iÔž®n"äHãb€ýùJœ6ø(–LFö+mï108(ÆáP°B|ÉCV`P˜aµŒæLù=t‹‡8 "kVÞX‚uo‚^]¥.2rEkHòê4i¡@¢ÉȳWé ½*o“?é#éÀ`ß×HmFOõTâ4ó.òtŸ›˜úõ—•úÜÌë0åÉÎôÁÐ;H ¸ùy,g3Je¶,Öw€‡ ?ä`êFÙƒŽè úËL{¸8à,LŒ¿›<¾örñœµ—·>‚â*_Ö€ÖmÏÐàW 6ÛÄ„”°éC´n ~P €æ# `+ò¹¨§¤'RíE"g0;H—1ì¿™ÑiÁ @rî-ŸáCBÂ×c±¾h›þø1(?Òd¸zäÆL›ì%>tx˜öñ*t&QG¹ípén£è+®ä¯Y®ÛëîáEpàHER å4@ZO9põX1õ­b¸ayK-æ}}Œéñ'òèåÜš)ëÀ.\[Yöü¯•»—xL Ì#@P?Gpç]ˆÛÖ…p‹Þ…°¿Œ‡j«j8#8kPÜ ·µÀ¶Ü„m÷'€'ÆøsùÜÓŽ ž²%áØ<#H*Ü\FnŽÏøÎ7ãk¡r^*×í´=ÇÁ¬m_ÊMZœûè¬ç¡Xƒ@c&¹è°ø™0e!¿ÛI>Ǧ ‰íÿ‡DÙRŠFž^œ÷ãÑeO•³þçÊ<Ý]n†eü_Hÿ¬öM endstream endobj 446 0 obj << /Length 2801 /Filter /FlateDecode >> stream xÚåZKs¹¾ûWð–a•‰àýˆË‡µ×Nm*V\»ÜÊÁ«ÃˆÉtI¤–®×ÿ>ÝfbH*ñ-¥* ˆi6€~}Ý ²…?6stf„ NÚÙêñõ³»ûYüü÷,Ò-€p‘P¾Y¾øë{¥fŒG›-ïRVËÛÙ§Šéùõò3a±Æ?ûû¡94ëÍ=¾{ñnÙ/ 8¿p'Hy´ËgL {‰[ÑV&dXTFÔ|¡4¯>̬jêÍ|!Œ¬–ëÇGªj·áùÃÍ~»{j×Û îp|F3D ø.?7‘ʦT–v¶;1¬ X…+*jªÖ¯¨¨õ+âL}rEÆ QBuÌÖûùB:]Ý6¿Q&7ÍmøXÇé6&æÜVà¿fWßÇÉ ~><âÿ›ù¿ /¶wñë»z³_ãVz~uîüQáüŠ> @ªŠ…míšßëîF8d ÏÆ/Øâ*øÑ Ÿxà´ÿqßÖmóV¡Ç»¶s7gÕnûˆ8œ(ð†-ÂôÕ¸†Aƒƒ°NÂ. ·qáûuD\½#Ö)9žŒæGÚz ­V‡§z³úÄBTO»íM}³~€ï7û --2m1E¬ìý7*XI©šhš)Já#QÀ4Î$ 4Ì¢6mq=K„æ§HÂÀú‰3Â"º °›ÕÑ‚JRĘYBÍþsŒŠsdýç|0U³jQÝø¾7+ã¿g¼Yá 4+Ï 5+œˆìï¶»È9NxÍ#A0‘0WYo)¨–ø? ¦„4Ñ”¼%„¦s&æeMul F½Œåë$²÷ä¢è1ª§ ó…3ƸŒ;\µ`‰á«&3M(#íåÜ-ặ”×ÀTÛêSÑQ\xÉÜ„Ë,•øH"3Kx:צú>tx˜îñ*L–ÌŽ[ &§Ë]•Φ®tºÞuÐÈÊ k;‹ VÛǧƒ·»\m7L6·õcŒ;àâÞ¸àD[M!åºÝ­ÿ,)E("mo¯Ê1Ù.ñß}ÓŒ)G”Ô3åàŒ€§A­£^$äŒ3õø ÑÇ(„:CY}z7îj;wÅé" àWÑ]ñùÇœuˆñp?.?¼Åøtý2FA(8br|j)}À¹ìБøÌ™G,;™³°…z_R"ÈS ¦¸àŽyÂÁ áÖ VàÅ w`ƒA¬J\"±¡(Óƒ¯Ÿ›]S´1`){–«²ã'V¸ÞÇÃ¥¬¶‡Ç¨ï$ÂøwÙ_öO¸"Ôê 8É÷Å)ôÁìÍ„íS£ÓˆÉÁTD²€å̲ Áͨ#L<è«/¥E˜à tט.ȦðCѳý8QÀho4@ÙwÙDã²Ýù$ –Ù †¼µõ-Lú¤‹ª.ÂyXÂÏõM—߀NY5  ~ Q‰&‹3G¤êô¥ŒöŒõ6ßÁ%Dlg&á’².ÜRñ¼é³.ʦ÷ÃæËò,„ºB%Øñ÷5¦wŒ9,öq4(xÕì˾*ˆµâtôfÄòÞµêÍí„'XÕý<ÁGi{$PQ ØLKõ¹€© y)"Ž˜ŽPÔÑ¡ˆëÓ» ¼²ë¤Ú>ƒ 2Áqd8h8Íi9tÔ‹„¼ ‡1Ó4|ÇÌÆ!ŸÀÉݺ-Æd¨³„d0„;)1Ö>2Êæ#…·Ÿ 1>½Ÿ[Q6  ¿_?4בFÎN)î12"†ü± Â<%ÒÅ’¬Šg^áoJL™ÄÚ\Ê×áqÛ>®Û¶ŽëÐ ®@(&K‰J»‘„Ëžèc‰î×$lŠå‡â_(™›ïÿ¡è hŽö›Gõ1°pڟ艖6ðŽÄg°`)ÁÅÛcüvû$­š<ÅwÅ‚i=$Á¾mžöa*+ñ]Ò.ñw˜ùøáñã¡ó`ÇÛ@ðuÝ~îØŽkýˆsOõª/™šó§‹Ò¸+c©p¢XQ!E”SW¥l)õÚ½/'I8H`ÍûÀP{[1ÁxUC.³pnÄØðF)´är€ïR:ÎTãR…$”ÊŸ®>þºüe°Ó¼Ë)Ÿ³ù¢zÔ±ài  ë—_siߌ“‚\¾à%ܰåÅvÀ-;\À9E¿¯TøÜòcásYAø¤$&¡Šacá?C£<‹Ã\ZTàú¡½»Ëw ¦âÛoý†±é ì5h•¹PLÁÀ&3AÅSP\—-I¸žÂwO1”ƒž‘è%¼@×Ö‹£6¹¨ÁFOö²ž’´Ô„É~o?õ Çþ8¡VóÁ/m1&¥ßwû2<¯ô†´ì¡ÙÜC„+Õʤͩ«rÔpÙ™XÙT‘‚ñÜ1ÿõëòBnKÖö2{ž’qîÕÿþìÛ»RAª÷ðà{0±Gux`ñÐÄ©ÝýÁ÷ŠLÕ¾,?ãÀ6ø¹Ìëôa± 1„£¨5z¢øœÖšs„^:eGÞV¸P<¨oÙ—,Šb{·ý>:€:BæÛt±ç"ö›N¡qg'* xá…c{üïú=þ'±‹kÇ­büú:öëM‡qžn×ñ¾™%]Y >ÜG¨ô>ß„ ×ÓË]­¡5——»úÒ²j}Wä.¤N‡LK¤Î€ÛëÛâ/K–[äÔŽ­ú ðqçu;´x4…ä”7€y× u'ÅÔ(qïüUÙåj0òé+¸m˜è½ìk_vW)”'ÝzHo½¸LèÁc;©w yÅhH pv×<íš}·pÜœOnaÐ×ÖLZ¢Ý%µµ„B=4XŸñR6Êx)K2^´JfS«ìû28Šý¦ä†Kö­™°Zw§µ(dÁÅ{®à@a[Côq1qÜ!•[c9þ^=7*˜ÒLWÿkòT‚n¸Áq0_ÕáÑÁŸJ xn±C&=uõv—§pᆮ„ÿ¡'}&ïõщ¼wh)N潺_j| ã79X@¾-m®¢»þ–lT‚9ܦOV §íÌËøøG¶`/M¤± žiA°xOŠƒQÉ‹SÅ’W°põŽ}sÅß"0uÔgeYß7—‡à7üÊâKYJlˆ}i” ±ål\®’<ôH‹8µÝ0öß t=Æ1Æ%Êã}­äé! BòS‡€A«sÍb*XŠ0œ†ûÖ°høÒeÐÞdryɺô´Zmñw ·a¢ŒÅJ1u®|qnÜ:+“Ï©YZÊmüf;°¤]cC8Wùêì+b^]–Ʀ?R™L3yþÓäi9‚Ÿ·wQÔ%EßélWH¨NïB-Íq²+LvM§Ëbÿ—I®Í½=,Ý„ÁQƒ‹VÞØà^t .Ú{»g´ÏÌÛC.Á5˜”8º•™ði"ˆ¡Ÿ•§Öx½˜z;N¤?œ2ùáLZÇŠ3?•™L!ˆÖý†?Ò ÀK~=VÎ!„£„s™ço¾cñ,ŽÏK! ¨*V&:§fáO0ÑW¬8u>…?¨8yƒËˆÑ#ðÂÕÊõ‡¦ê\á8?—@ÀP*q.ØÝ“t·¸¸µôw\È(3¾aþïÕã!ÐéQyräïÇ—¹cs—U§8?ªNq*£;q… G;óœ+\(VeV¬Ò¾X-¼˜ûC®ý endstream endobj 451 0 obj << /Length 3091 /Filter /FlateDecode >> stream xÚµZÛr7}÷WðqX1Ü/vå!ñZ)»bG)å­xý0"GÒØ¼(áüýv˜«0$ò–ª47 htŸ>§A6£ðÇfŽÎŒÄI;[nžP·º›…“ß~~Âb»4\ôZþtýäû ¥fŒG›]ßö»º^ÍÞg/î󇺨æ !D&žÍRªìM^}šs›íðßçð –Ûý|Áµ.cfþáúõ“—×í·çg[ž%3šÈ™¶’0!Ã@÷u^øÑï/´è·å†hÅ¡k߬ M†Ý b”mZ<‡9jš•·©Î˜%δM?¦:sDw-J°ˆd6Ûîêp’ßìwÕM¹½{»çýw­&ÌšæåŸb÷ºßDÃÛÿ¥Š–O?Â…Uø2£©IC„–ÿ`šI›Y"˜Oóøì´"V»¯]ùhv,5žw–paf &S¡‡|»J „3b-û?™Y1¢»YÞî0vœÊòõ:eipsfõÈÒ°J½&ÎÚeÓ©OÒæéÉÅänsYEk'Kæ aýî¾Ø†‘/aèÅ*œ)ë{<“Y±ÿeÎ  €¿‘Ww‡ ¼wê}\å†Qkˆì®ÆƒÕ¼ïWÞxØt¶ÜE›%f¡ÍgH±¬ÑÐ’»lwŽëb{ƒMÄ ‰v…Þ&‡!¡I;Œ/÷EU¤Ip¢ºÕ;Ï‘‚%¾‰^©³¨ï‹pò0gYµ»ÉoÊuY£‘ÿÆû¶î @/Øb/Ü¡n®B“rÌÈ §”C3öðs¸j\÷gð1ŸM‹§!DîÊÏ8JïDpYn˺Ì×á"|ËŸîü—ËÃC¾]þÂê¡‚¹6S-‹}rTÔ.Û>$C‘1¢ ZÇMÌ6µ  ŒG¡CÓß^^¼üíåÛ/¯R à(š‘'š… /åΪÁϤȺÈWh#F1gVë}œBR%Ïñ®Ì®¶Åz[¼&áá/ù¡*‹pŽNôú°FcQCç zIZIÂXmk¥W[Œ•º F_–u¹Û†nê]èü²çc|,9'^oºõ±i 6G¡ùâ†/©Í{†L1Îed±å›¢*—ùMÀrM^—Ëù.Öá+œ‚É–ecÁÊ,öðêê§·¡¤°µœYj¤cé几Ó🈙0è«"ºf¾Þïž%)ä1ÙfÇe½Yn¼]ë<~ÃHB¡½ÿ†0ö . &¼V"z¾PZd0ɲÚA`.`šû}~W„×å¦ ê/p›†]ßûhvÑtF¡30N×õ%ssÄК߄6ŒÎ4a} «.à›ðÉ&åó$ÀÜ%p¸~Ã}ø|ÝŒ1Çä®ÚÁyïÜ…cLAá]z„ZXsØ65P1tëÓÁCÂt± üe0:Þ?m®ª=$ãÕmµÛ„ö“ƒbÆ<=›­¢ÓK qUWå_)—’p#F ;NvÍã=ÄÙ'ãA©?Çj÷×$F\bô =s!Ržð%y–/q@gÑ÷¥p)ã<û.öî€w;͵7%‚Šz4ïü'1J¨Ud#v>Åfº×Lùˆ}É~7#î5øÐy¦G64™"† ‰ÊÈ8¿ËD?†P:6×§¤ÿà¬Lß\g†ò'0§ÌÒkO@hÁ‡€cCѦ×s+÷sÙr·y8´ôaà¦Ö‘­ ÿ#Êuf\k²÷ÉÙAÆ•âÛ€”#ÂüêC˜J+Lí )S ÅÀ÷HXç1sBËÀQ]vØ+äÎ’g¿@VJ˜‚âݲwI[À;åù[øÆbJA(B»›",DVõH(åé&±§h1ð¥¦É¦šÇd_}Ýç>Ë{üu–ùo܇«jDxôçÁ§v8E÷G„ï»q®Xþ³­ìrÂQ€[X§°¶ûþ­àák cÂÙÙßtƒµJZ8]Ï®žü;”€G˜ ˜E¸ ©‰´jŒÜ#ƽÂïÛ%é3 ‚VŸ¡o4Žoúãr¹«VÄ+d†â‡àÆ*KÜÉG‹nö4iW “<›Í´†-'‚Ë€ œKEøòðr†žW7e5–¼*}îí‹´¿c!ÌÉo4HH!BõŒÉº´€6*¯uü”+ldVá…¿³A|`_¥ÑPï/PA¶Mù¢\ºB;ƒeP<”i5ïó¯7]©½kÃVJôè“â*[Õ›åíCnt$MäýÚ|êÓHIøˆú!ܘÇÄf”\šjTtuóB؈m`ž®œ„·šú^Ô¾èOqokô^U‚d]>ní(¼Ú–ÐpuX–7ë è@º­Êý‚¼Xx¨ôkJ·f°éô\^n#ï!Έ­÷Jþû‡|Y¤( ‡0ÂTÞ(¬ôVUO=±tEEvwÐWf—ÃA‡ƒiÏÃͤÚÒ²b/w'G2Q\¶8J³U‰ÿ«·—¿__¥v“èpâò«ö%Ó;‘¶« tÀŽõX' «”…ÇÓ%J pÒmpNà¸ëê>A@ßÓ©Ðóäþ¤›Ú ŠêôëåùèåöPÆñ[YWf‰{‚7ÛlcdÁM7ÜcÞ×± baïw*¤QÄBžV‚g_î˦øáŸAÌîÃiÈàálî) žï!Gû¿¿Ç®x‚WmñD:žùйŸ ^µ“ÁvlÛlŒtƒ²i:Èh @_N°=†ª à\ôT>~VÝÙÁ2ö5°—šÙ„ÂÁR+ð Å—BG¾zŽ“i(c¸Dè1t€S$Ÿbýà6¹‡MU£.'ȸ¶)WƒþãÆÆDôdöÛ´wêÄ~&¬øI~ýýúLÌyóm1ÇgxO}5•8a)Ä•’Õ«/q9á#´cxe„÷´À5–Õ×uxÚèI%>ÙÕY&~ÃÑUÿÙO8¨0çcdòç78J› Pÿl¡ýOÔà‡ºQŸØýŠ T›^ƒh1¡Aà%¯A°—.U®ˆ?Z0ÈîF""¾ä&v=ù+HZŒ»£4Dwž&$²X,*/´ˆJN7¡EoóOw›aç±Ñ/ºÕ/ÇÆˆüG){BÒΓHò7dÄJýµË\NÒVÁ{µ¤¼°å1-Û¡ÝoÃ:Ù.Êv¸à=iŽÏ;i>†së·ób§ÞSÜ19M‰TÅ>®~oºþäñîµëFŽ€*ˆu£MãVFc¶ÙÅdÓÈèöÞï`<ôöuÞ*ñ>p÷; endstream endobj 455 0 obj << /Length 3230 /Filter /FlateDecode >> stream xÚÅ[[sÛ6~ϯÐ#5k¡ÄH×­7餳õ¦µ;Ó™4 MÛLeÊ%©¤é¯ßsð ´äÄm'3& BÀ¹|çÆÐE ÿè¤ Í91"[wÏR;ÚÜ,ÜÍOß=£~Þ &®&3¿½|öÕK)4%&5tqy=%uyµx“ÐlùöòûÏ É´*vô÷m¹-«úß={q9, ;r'8s+zºJ3’-T&å­ûÓ‹—/~zq~öâWþê¥Ód@L.VT™ùüšRí¦†Ç¤Œ(ñÇù®©ê¶+ó«“åŠÓ49»Í›uÙÂC*“È×8*’‹º\¯ýŒï‰{ùß|ÛT¥»ÿ5•é÷Ûõ'| 5FÃ%~y3]ž ØkÆûõ_ÕK–%]³Y®àzµ-ºjS;2ÝÆÝlÞåïªuÕáÔOñ38¸î‰žXÁ­¸ÎðuE9¡’ºWg·°}‘f ¥Ï¼I“òæ7$¼Á?`L €-~æ7weSy¯€'KšäÝmy—wU±\ÁÃÚýæ “¢*aŸö™‰ÄSxuñí¹›dt¶J3F³T 30(ýŠQ¢ì_yM¼(‘ÏœÃZíæyŒB’ ´ÉŸ¿èîŠëûÎ“ÏØ‚ Â…b–¼DÁÔ² DcÀ [®¤âÉ0Ÿ³¤«àB“ífÛ®.«;\]KÇ)Þà”nÌq*¶%°7jeþ ßÀ|I“¶s’.Û·yk™ˆ/î½ eÛÆ4œ¦)É$íxíçðéI„ýŒ_b›S6à ÔÚA˜`ý¤.FmwB…¤vD•î‰íœŒ•›‘“Q§$テ§1BÁñoâÇgÙ0£jçsw)6Î+{±¢ïœèá¥3=‰ýaU»ÇêBÊäzÓxÂëµå(—7eÓÆXŤ$i6`RÛ: Û¨àÞÀ,Ù1ð¼¾r¶â¶ÁŒ8ܰ£m ^el4åD3½#yKͳAî+°O®B9ìH^(À¼qV(ý)ÁÌù”"} ÅçxQî¢ûË×nЯFÓÉrÀ/ p0]¯ž1$ÆçOÐÜ?B½NA äû/Up0F§‹¶[§bNŒÝmÞEy“¡ñ‡…æuPjšÈéâÿF4Ïbô¨³³ƒB‹Ü™bg±€½B€âËÃ"Ëì¦fÐŒœà3e–‚Û NyâÌì#‚…wZ·¹ ø5;”.a"#nˆ¢Þ_¼Ž­þœšGÁ÷Óz€‹{`ðT<´Å ï4 SÎâ<Ñ?";S„qùY[ÛñL{&ù>¶!E”Òÿ Ãõö°ëvêÏbçq ùË Ú鵞œ%TíHzÂý4ÝW8âèø¢jºç‚þ:-ÝÛ¼|üæ¿ÜFÅÆ1#SLjí³<Ò_Àrñ DZ®¸²Ô&™¯Ú7ñ}P€éAf_äüïÁ•^ú‹‘\-&tžzô#9›nmÉÕÓpœÇç \?=æ<~aWT0òf]ˆ¥¥CrËx¤P:Ù.!U²(ÆÍ~©ÛDXû, 1)ÃëUùkJE]^¹Ç¼(6Í–ì£M¢`Þï> Ò) rL•¯jKªêʶº³Õ &7e]6KLÒ:Ì“pè.ïšêxI€I fZ?ÎT—䘄žbýƒ&o¢Â’$…õc4³P,ônÕ×ïãJɳÀó¾…0T0•|¼-›÷ ]:ˆ7eX-áv0È*^i£|¨B¨xá#}Éä°Äû¸öQÖ²öS ¥ù“°š± o@ D>u·žs]“×måêrøÜä]éêZ× áÍæÎ=´ŽG ò»\Ýõ#BoÜ2³ôlV³ƒpŒ,W€jÉåmé«)#†öe7g^÷9`ÁXšøq®4CM¾³å“¶sYk›wU{í‹–¥xsßlîmµ«lºIqSÜ÷;_½à¶ˆ…:þ C9ÑÒìèx\CŒbj„zMt&\a¢b1"î¦[&b1“2CœAà§tÆD* öÉÒcý°9@ö©s©­‚.4¸ŠUONÒÔÏxór™ñd[÷5gàöËj]¾õô ÖHéʦ\1ÂÓé=¤±é$ð.zP»¦l·kÐÉ$ˆ¹‰’Z `ùÖÍ=u¬á·¿y¦¨4°–”èÑ&^8ØM÷Déà~õ~3ä,˜ €?g!ø¿ºŽ÷A œ0ARç5H¡Ö ñòa)%h|uå÷<ZÏå¼>:ËE¼7xÞm›Ú½pø¥xÒV–n9媛ÖHßyt/7×îÚXïü±u?Þ44˜uÍB›õö®n]PÂ¥A¦üiö O²)Ä”?Ÿc°™ærsØŒë¹"¯Iê ’J1d°{¼ÅÁ oqîÀ[øÙ–]´ŸÁU¨õ1D‚Û”msVü³l6~¬ÜFXq!!Òb^ž]‹` „ÐÚ‚ïï­Ãºo*ëÂp õHÛÂaëâÃ<@H‚¼¸¨îªuÞ`›‹iê‚0¼¢¢áÍ.8swEÞ–'¨]5GΆwU‹Ù¨„›ÑI668+ñÏÕ¶¨Þ­Ë¨Ÿƒ`bŒ´«k·Béjmß§s¤ýÚpeý ­nÁÅø©Må~AT|Fh&BÍ¿¶^™†”´[ 7ÀŒ“+®½Æyoq±ãv­':;”mcÔ°ùÊçQ¹j«f•é£Pùõç£r¦‰4{ÍÍÒŠï7lœrÔ‡ˆ= FRuA¸ ÚRkšÒ«",D|®Õ‚¯®¼*U6Ò‘‹®ÙÔ7®!̰«X—EWúég›;ýljÿ;¿òìâìÌ*{­ÝmׇoRXO?Eƒi„ŠzrÓä÷·^!¯ûî×:g¤¶F]u·½~îb!™`!<bÀPÎRHåc>–cqlfQßÃ÷{uþúçË‹Qv»«Ú¨pQFÁšeS}¬NÞÏé“„VOºò»)cèðÑ1$Úã§Âª²ƒAó¨æ˜€h>“Ö >P;w‡!ŽœMÊb„°ý©vè쩾Vjßæ˜>ާu÷.«ŒÅ€ÇäpV&úH™€‚HX‰@×­9޹„ØSþ&ïvDé?T<^Òd&EÓ’]4£ÐàŸä®kOÒÒ Ê“å†=Ûh |r&¦rq¸úXùJïû¨Ö(Ðñ8‚çñ„éœì‘D °—Ì|Ia!Øæa–Ï V„Û`k‚.ÿûùòHŠFeR5–ç­ «¹èïø&5VzcØñM @é$ùXµ%‰m~•µ±GÚ§¡íqf{¶£T냵5A°Fï!Å(öÜ¡›zCåÊîÕ¬Ù12Vü€!ëÑ[ùh »lý*Ì@¸J`m?”7}0ÁC–í¤A‘Œ &¸Ž7c@°=|í@L üÔg¦›SøX¿†ƒj©0Õ²»u#Üøøom‚ÊõDøTô͉Ëá—õ@£)ßæ¾uXNM€å-äkÖÀíþs•«½jQyUƒÄCͤè±Áh –G½ñvqzêátN[!lžð‚y`G¾ÞÂZ­÷.è»f[N¾'ƒ8H µa£%*„jø ŒPü¤ŒA(è’– ÒbIQlïóºøäÆî‡¯ûªrö;2þ;ÈIÆ…rûëeÜ\UmÑ”ò‰?IÈ’~R ù°¿·a`Ì”œ‹MZ´<ÎA¢è“|P6ýÌv9Œ±5,¸¼‰ï/Ìúíí4ühô󢽆ŸÞé÷ýÍÆ=Ôˆö êV48Üyî¤TÇžŽ?NJoGå‹õaÌ´ÓçÃÊ€ØÏçðÏöÞ6aÐ\ÝAf Ö0ä»·µ€Í;;Óš £É[(ºMÔíB†HÇ.º‘2›uÇNßÞŒÁñAá’øt„r¹¯’»-¸^'õƒlNõN î©Äæ8á¼ot° ùš¼å×íÀ97‚ÞOmWÞM‰0[âÀë¡H›Y¥Pš!T¨cå¶â"Çt§<ÛÅ#L£øÌtE¦}5ŒHAÃÏË¿«úÒJ˜ž9&V³54¨Ùö@·…¥ØÌ6‡€¸›á Ö]º…Á…ô zcÃqÿYñàtpÌIdøÆ2Î!¯ùz¬H§j¸è8†ó€ÛOŽáéÓÀ$þ! ¶»{{²“Îú¯èÇÆ&† "³ásOc<ŸÌe?Ul±Ù7þæìU(HŒéƒ”[zPŠ"÷y½­ÝƒýŸ7à7eˆóöyÿ?Sþ¨áb endstream endobj 460 0 obj << /Length 2562 /Filter /FlateDecode >> stream xÚÕZYܸ~÷¯è¼©‹áMj ?$†8ˆO¶]ÀëyF=–Ó×¶4öοOIT³qŒb#‰¢ŠU¬ë«b³…ÿlVЙ‚ÒÎnÖO¨ÝßÍüÍ¿ÿþ„…y9LÌG3ÿ¶xò—WJÍ%-Øl±“ZÜÎ>d/>—»¶ÚÏs!D&®æ¹”*{Sîÿ3ç6Û⟯þL¬7Í<çÚŠ"cÅüãâO^.úµç2‰3¸ÔbÌ%WÅLkK”1žÓ_©`¸èT"M4’sõsbz’pÉ»ImŠ r3¢Â@Pc³ç)bÌcí0ù([´óE=Y¦MVý¾8U&â¾Ó¦ûî:µ¾%ÌžF‘40i–se‰â a\ú×ß>Wû ÔÎÕ)¶” RÉΖ[¶nüµýøX—í¾þ½ç T¦¸©6hm]®ü›í2Å(S”PnÏrÊ.¶2Ï +²÷›[t\ù¦Ú·à áa»¹­Ûz»iž¢óXcØÐºiƒteXÇŽ×É9¨Â€*r&S~Á¦-‘^¹Ï+˜{®üív®XvãþÜïðRnn¬ÝŸ·ŸÜè§zU·iãÙ”>g½p+h¿GÏ1ØlU¯ý\FÁ¼ #¬óUC× ÑÂD{Êôhš ½?ù÷rôÚÀŽ÷ÖóçÄ÷š0ֳ͒¢Qqc6âãÂPPÙÂ.œ]ãH –㸂;oÅ~Ær¿]'%œPÿ/ÄEÛOÍ9‚h¨w½52?Ù‰ À¹§2k¶«{4P? n¿^ÎÁ W+È&ûVoîüëU½©Êfš‡¦­ÖWAÉŬ … BÁ J$ØIÎ0ÅOk˜¤K4¨}*˜9¦ð뤽3Âì=YQƒ&9ÊAoÖ¢/0Eq9O,áWÊE\I”Ö¼H1y’‚£iÏ}êò1ŸIJ4$+ ùÔ†^Í­Èî77ƒ_Õ«êc‰£¨…RÜ‹¤9,!:Nw =žÄ8QJŒ¢…ÂÀØ®oE9Ø ÷‹ÖÜï:EGnÌ4ÉM·‡7l_ÿ_ÅÇØ6̈Äš¢q™ªiû½ÍïhJ XúcŠÈ %–›8´¼Ø®w÷.·I§=€˜Û½o÷妩‡¸¦†¯¶híÙ ¤Ã al·ß~ò)°®?´tÔ€jéŸ!k{4á.÷Ûû&oëuå|†ÆL‚a )î“þ Èã2xüÏuûyžkîVÃKapU…¡ýÝý:HˆÁPÌ„mÀ÷.ŽºFûÑ=‡W[—M¡q,ºWö ‰X»tFÁˆ:²M6èó øŽÀÜ3k¯ð¢ýÅt—g)f8øWðò¸,ý6 Á–'išÚ`pSúË1ƒp/G&`œ à øÇoNçx÷+erS·áÓÎTñvWÞTAm†5Dš³.Sb`6P'áO4ã´BÜàÛ+BVô—ôdQ ­ëØœÊÍmwf¢ xIˆÁÊ“öÆ@<{RÓL9$èzÓ)¢©×®f EvWmª}Ù¢îñ1 ûdJ%+NbK¤U£*A\i·Ÿ÷UåoÇ.ïªtÞÎçýÜ*ThF¨=(ЂŒìƒ(0»˜ÕÅ€¼#!KñÞAÚíŠPb Ö«/iôÂØ¨ÐzÂ, DÀIÇÞÅåT`Ä4üÆ„ î¥½,:Å”ý§–ø’Z»ªâq¬ž(I7³„4‡ÌÙ[½v`¶i}z€Æ8·ªŒfù0iâ@Øß9°Qí[½ýû²Mµm 0áú^B'æ]¢£lb%çDj1Ú m†…öXFÍÃ^¤çé¬4¡J_V<ÚˆK´ëµ-t0™g_Žì¢„"}41tUh*äœ\‘Øe $ø‰¬­ ÑCtáS„ ICI4µ/,ü°ó=îÑ¢tJ‚Ñie¬Æéü¼c)Ž7täèi÷bì†êXdïchhB抪ìõÒ³µ]×m[ݘÂ&|Úf ¦'²eÔ™qX¥ÔÒºjSk7 [yûðH Óí ~EÛ®n Ѥbƒº¼^ÅTèƒúDEaþX—š09¦_Ÿ:Q爽„D¢ŠQÅ)ˆj%D{&Þ‹BEyøEÅ/ó-“–üò¯÷‹ Ìî2s!|Yb¢6°]W˜‘áS7êË{ˆ·®¤¯ný _¿ã]é/]ÏÆ uœÁžMB4u³üzw8&âBÅ@Éx£wœ9£Ï{öjꚊqƒçÀ°†pêЄ¬JªjÔ›s(¢8ú¤UAÐ*ö§)*šØ¡ò?b™tèab .ì‘ÃCØ€ô.oLXŽÚĤ¥>ˆ¹óÛ£ÝÇ¥` nºVIL Þbƒ3Îà—]ÃÈ{9DÞÑáݤa08ìOpù£ ÃçcƒÝy,²shI¼·$ÞEcê- »aF==QÚø¬pÔº üW iÃÐ4Y*„¬T9mdz–Ó|ŒP•…ÊãS„ã˜w©Âï¦+¡•8ìA« ëfÍÅwÕÍØCbí˜öÀa£Å‹å‚*HäèwéšoGÇŠ“ }¨Ê¹€’!/ýT…4\®šíUr³±²wüÛv}“¦Ž¶ã`•rGÌnöË_þúæÝ?_iRƽø[€HáäžclÇ‹ƒ´ßœO†0ê†_,Þ¼ðwý"à“•û½ˆª.|UWão?ùÓ]çŽlU…IŽzã ”É ªÌUàdë¯~{õN„‘šÚŸ<²uãÑTº@Ÿ<¸§]Þ­…¹Ëþ·¹J…ˆ•Ê茺×þì+}ð—õf”±g~€/-Ž´ˆ¢%›|ññYרf†]ù-Z OÛÐT¯Gm%9Éxœšc·™éƒ³ªËi¼åPªJ­u …À¤2ÃSøAÔlz; endstream endobj 465 0 obj << /Length 3016 /Filter /FlateDecode >> stream xÚÅZY“Û¸~Ÿ_¡GªÖDˆ°+UY;»[Iy·âõ<ÅöG¢g˜èK”Ÿn<@A×xÆ)Wy(l4úøú褀tb‹‰æœXa&³åUáF7·ÿðçoW4ÌËab>˜ùòúê/¿J9¡±…¥“ëCR×óÉ»ŒÓ×ÿœpc‰Ñ¨¸ÑO»jWÕ«[|wõËu·€dìLNpæ+†M('ðXQFÊ…_”FØ4—Še/ëMs—ÿ½*›»iεÌþµYÃËfÕv‹L·Å#¼à“œ R„­½ûujx¶[Íšz½‚¯9Ï~­Õÿ½^(±R2ü>o ¼ ‹¨á$ʈ”Ý”¿«Lf³f9»™šÅ')‰Rªþ¾EjeA˜`í¤›°¬ÎP„éŽÌ³ ¬w3’¼ =`…¦„˜+N€`:¢ÒOý³jv›Õv reYsWù‡zõ¾ bU7Õ¶^– ?x[­ªMÙ¬7ø“fËiN³²™ÒlS ,ñáj¬ „*9–xÄì‘©Nâ=m–•þÏ ÔÊLÖÔîÏn½ |Þ8ë™{ëÁ{´˜â¬Ç¬ñ‹Ïø_µq3Ю`&ìžúÝŽ¹dY»_üųmS6áÅö¾œUa{"b½à„ÚñžÚž$Bv )!á ÑÎx"U:{Ž”ÿ£Û?/üà)V88™í´{’–]°Ì¹Š÷Y•3”Ö]’IðiÑ}]§èkps=ðN‹ô†)Ø25çí8±‹ÜiàsÑ"8©³ª¤ÈÐÕ{6ÞEqÀ< ÑÍ¢èWÿÌSD19vr+@33ä»>ä¥ e,ë­×O°Tž5›rµ­ä9»æL²óØ®7Þ~Y‘}ܬ—¨Œ:!--è õ²Þšµ'Ýz Ð>¨@ëB%-‰1®~Õ[ÙJV,XÍS"šXªG˜¸/r}žÈ @r‰öçE»ˆÜ½ØtûÒ ƒJMŒ¢“Fàd”®,Ñe‡P~P¿` A$—åDKÓÃ_£ ÂHXŒ» ¹¿—M‡öRÇšp+N½¡±”!dƒ”7 ? ‹l^9(®æþm¹}îIQ;±Ä*¦|4»‚õAÜ#=AŸè@‚#y|ÙJb!@î™3Çô#Ï{è· fHÜØßÒa 6¯&Ú@fÆèÛ…qúíüƒI?I@2a57>­à ¡…(®D1P~‰Å`Úw‘Ë!àPÐt#©è(ªE©…§¨bбT,R“Á´C?Êáø2B‡ã)Æâå»Ák³~J"‡{<­ªX,µ  BÙX2­S€"&¸æHŸ€VR¶ú”—‰%3p ¡ÏÕ§¸(_¸±§Ôg¼ ? O}Ž:!«0öq–Ì¡ð1 Цngú á™*3g~ÜFãxâà·7ÿ,:X¿ˆß§³g¸²Ua–AÔÃik´8ŠD!ñÜégiÊDÚkõÑ:iýTB0Of?nwû.ÄìB#®Çøô\ÓïÂUEÂþPÆÕÑ 47Št†t°=dúÑåÛ¸€ÍØ8¥8/9Ä8*Æ£Ô’Oj± a„39˜7ÎL_%2¿W‰Ìïä˜~äyýv™þœ \‚…aªBÌÆÜÔ/˜þ'ó˜,ÔÅ~R§!ÅÊRú¢r$eçÛÒekú‡‡ºj×Ç uÎ*<¡«…XfnŸù©›j{ïZ\Õ¬©}_kñ û7$UŒåÚBÍFICÂêo«°z¹Ø®Ÿ' ¢ºè€iŽmO·â<,7ws-ˆÆ5d¹¶}‡—ûï/Øüze+òìê9-³·ëioÿ³ÞmV~äº^VÉ–¯÷Õv ÛÆÏ„ÊÊd$ƒÇ¾öG²åÃb¸­Úà~³1o€5ÿò÷ró_mE7öꮬ3_j§3xj;§Sš!aš…*rØ@Å©Ëõ´Àf½:ZLB ë›Æ@Ñf_œ€|õ.(ƒäÌÆm¡¶¸FÉÓ`‡š…>é 9Kpc@Á]ÓâuÚÔ¥åØMº a¹zذ+꺉‚eï’ ×wÆ_ïãµ&‚‰ÓeX"‹>*Ú„ØïárFÓ÷u…ñð!‘"Œ;wR>ÑÖ>x3ÚîfS¦³»Ö¨Ê&E^DŒôí%O£*[|¼íì™8ƒëK ½£Bƒ v(Ʋ- ˜”=б,@|W‡¾,Ó`›fä€ÇztBˆS-vÚùá|·Á㻜:pZ˜ÌCWSm>O% ä¿~—nF ÆGVؤ¡F›aëÚuf)öæ¶»å€ Pü? ¦öœ zºCšÙî¾Ä73ÄÇoþ›ûÍú¦¼©0»Úú¡Žœ-|ï;|9…ÜP;ÛúÒ™“C¬|_ð˜¾5‹FUàN“Ñ•E}̈Âgå*$Þ0ý°Sȶ}çÔ‡lƒƒÑ.výIéúã(ù¸^,\xûâUйH ႃTCdtzÄ•>íJ¤ô<éèÀ4 `Ѳ-®ç)1JWú?Š/‡d<ôþÔf3y 8Ôø.™™-¯Þ}(&sx ©-áPúqS—x¥Ü‘Ðbòöê?ö™ƒè Å3£U+æÀQ‡Š°Ïðöè,!©Ð6;%*õ4¢sQI7ú È>UŠqFù~O&ÉEžò"éµ@LéË„è×3iۨ»˜ìÀâá9Šr=$c\ý¼”^•q*ÿ,µ„2Ã’ä‰ul°pðC¾.°ÁŽÈê€/m,ºÝxÔàxº¿ ”ÚCx«êo¦;Üáÿp(:.ê}ÄÚÁ†¼ã߉ƺ&dΈP,Zx˜‘æÂ_C`¡ZF–ïÀ ¤¢Œ^æ%'űKSa‘TOg®ó]Úà¡,͙䧪|ˆ£.ÅG·\XÖê{¯®Ü—¸ ž\"^Ñ3ºwR:¢7é–Ö a9×xÁè\ò*TH^q ¸ø8̾fßü¼>íBoýæ'bâ…]â•DK£éùü½À›Tê˜LÀV”þ2ñÛ ÔŽ2óP·ædµ^ř˚Rñ¹H~ûá /IMãCø@êå½?9÷e÷p³]on\‡?ú±‡$8kÛî…Cu|è[¤´Üïnã&Ž »ÛÊMRXþƒb ÿÌqérÏP+áÆu|ÜãnÕÔ‹P/Y€gõn7÷í]—½\þaY‘8ô@>%+¾/÷°…¿»†ÝE*÷Ë_A3ÂâÊ ¬©#9yMÃŽo Æwy t²SuvÜÂ?QgëÇ—ž—ƒ+´U{Í%÷µkqºlß­çzè¾XKºK‡aúö¾­~hæÝ´-¼ñX2ön—•Ø#w DÉÙqáƒrúDl€aáéö†Š¾FÕ°6†×¡6vOUàäÛ¶©–W·eQm/†oÏŽw÷8‚rßð³¤(FÛŽ«êT±H.ôKã\r•½®’í(Ñ•ÖÜ"E&=¸Ûf•ª­ZT­UãG\ÁŠo:2Yxåîv‘Š<󘕫qa¼ÃÖè€Z šRÚ³/ð›-ÚmŒ‹HæúZÿM¡<°çQK*½[3¾³0Úñ”vÍÛ‚º iC,„$"T{×Ùš±H)Rhs¼ ,Óì †¶»›Ü‡’°ôª=|È7ÙÛzY/ÊM[Å€ˆ^ ãÜoŠ&2«Ñ £6©C2î j„S!CN{·x@–@œµ\¤. »š¦î› ­;bV0ʬpl/³ÂÁÏSßGlíãÓ'óð¢Ø7sÖ¡ç3R!Wš·éR\Ç ¾´¤Õð&g{Eð&È0=¹ö×&ÕžÃPèåá²Jõ‰O¥=ÈcÍÇøÛÊ¡˜Æ/i°+Óàïð£‹~³M+šA/~9hC™´¯Ç½8ø´ú´CÔÊCŒ+ Æi9²Ó¶%‡Í­ÿ±ÜÊ\ endstream endobj 469 0 obj << /Length 2240 /Filter /FlateDecode >> stream xÚåZKsܸ¾ûWÌ‘SÑ`ñ~XåCvËN9åõz³ÚJªl¨G¢3…äØV~}‚”dG{Úr•Hbš@£ûëî¯A“†daðB1† ׋õîv£ÍõÂßüãoÏH[àj$ùãų^ ± lÈâb3žêâjñ¾øé¦¼íªf¹bŒìùrŹ(~.›/©.öÏgÿÖûv¹¢R3SP²üxñ÷g//âÚ‚ÒG*i%OµTc-©0H+½ Æ4÷ª¾±KþðŠà…DF1m%\,VI¦¼Ô̸L7Îá³Hö‚’§‚”SÐÔ ‘ÜTþ¶yz)5‡õB¿ft׈hò(Ý5Â8ÑýENqB bP ÷Ûcé\\„ÉZ•ýýVŽI@%Žx›2·^âý«¥fÅq¿îêÃÞcëU½­>e©Ý‡‚ÚéWLRÄp4c€€c!B‘QäÅ&Šu·[W_oÛ0++-µÛ>ÁA²vÎÂŒ%ÀLJög¹9(%º¹9Ôãç¸Íín©$<&®¢ b °°"à ñ'÷EÖŽ‰/æÌ¸RaщþgÝÝ€ù0.º›fIŠj¹r¨1EÙ\wÕÞ¦Ò®=³RªXv·Ç.t7•l#º¨Ö]u~«wU;ìfäMûQ:ãŒAF EÇûÁõ,60â1)´A ¯²W­Þ{}ªrmGÃfÛ®„Md’ŒŒu«s+*„Ý®ŽM½¿vcÅuhNìëLÄ­:`{§¬Fö¹j>/…(Ê­}ŸÍy†C‚ŠrΑ*†ã$Ó*ÿÞâ‚eÛwVA¯ÂMÙùÅ¢Võ¾îê^…ƒ³Þz}¼-÷ë;/ðyéÝzh í€áq„B9SSŒ¦ ø†PGËx8 Ïéf×ùâK··&‡ã ŸR`=’+ö7@ºß¬2x$F!®ÌSá2 's€´zX@:# vM¹oëDp£L#¡(݇RÌœŽ~ÚzL« $“µ¼lͭͦ(Ç €ž‰3^úí¡«žçÖevêhª×65cYÔ]ëoÖǦ…'ü²»ÝV½OK»¼M4„€+ëðÎfÈòð“ÔŽpW7Uòà¶wet;ºtè·Þœp+ˆÁ^ÙÄMï—òrkÅ/6°PsØù‡Ò©zçKÎþ°_—a,.¢‡MÎ{s¤„šÖ„‰÷$C¬dü±¢ 4ÓÔ»%”×oßý~ñ[äÖ}N}ägŸ˜§›Xn¬kogH2£úˆiË1ª'MH+lǪ÷0ᶪ¶ÞÙÌe«Òuµ¯šÒ%)ëê]Ù5õW”vn ÚùÔúß`ˆ¼I·‡¬ê £ aÝ£WMÀ *6Q…rÆ´lÌÆ>UPêÍÊðºARgšÏOÈ "2ÚãSnBxÄôVÌȾ½˜¸\¢¡|À”g=NgCò 5íSv>…äà«ÇM˜…±\jʱXj4&äĬ©2 )*s«à=>¨æÃ††)ÀÐJàAê\õ&*ÿ:CÀ¢{‘MaǶó—Û¶ $àvs`)A ëö¸†,·>ì¯<¬}f¬‰%•N¨NR{¹×Þe:5PN(ï`XdpMU€`£;ñÑ› I·ò‚ÌÙó…DKïkc%åI³XŸgýb§#,mcWTé{klᢺ¤Šª¹Ë)v!”ܺ?ÚŒz»F~ƒvZøÜ^¤¿¨þrî³QÁ Å5rRfÒt ÔY€3LZ>²T@°Æº¿ñö¸®=´õzUôÌÆÈÙ¬LÄ”“ú R u³òŸ@•?ŽMèõ|wá~¬ÃPž@Snñí :k HéHs¬aR¶ûŒ1-¥¯{BÎ4>!ävì¶9\–—õ¶îzƒK?Ï=eêjJÏ¿—â’qÉv%OãàÆ9ã¯í]ÛU}ákJGa† ã¦c,xõžº%À¯”?P™‰žwì0 ÇOÏfæÌF©þ#£4ezDeÑ)æ~ùýâ‘TïÍ“¢ÓÆ56=9'8!ç¦èG×åvë‚ƾøâNªÊÆNÎÆ")ZúgÙÓ é^=Ýa)rIMPjÒ4º†¦ÀÊ=‰HiÚôÀÁh\¸º=Í¡Wa¤} ƒ#Ã9ƒ›ØëëW²ös Ò$ØÑ|„¹ Ì·çA !’ïywäc»®Ö?ŒœotÕƒóMp¾³1ÐlÑ4ØÇM?4ü›Lyb+˜0ö¾Ùؕɬ³ÎÒu–&zªÀ«æ0ÓC¼G0‰£]îµßªÀ5,çÍž_p>.sÎóK(ޤMÌпYÞîÞxù¯¿þüîÍË,‹ä€]žž£¼©@ °qbÝÖWî³<•þÂW1™±ÛcSù»ËºqùÕ¿ëÁá.ÇC?'TdO$ª6Œ|¹©ú÷ÜMÚªÂshUánhUãÕªÚ}>TH‡Û©Bk۠آ::TO{VXß߃¢“þ X°‚8l¹™ûcÌt^F‘¦ã~Sd?11×A3 ïÝãj1’Ê7…É—¯zXò¤}#’f¾5°Ùïÿ!GÕ"kaÍ£DölGóæŸƒY÷œÙÓzëÆÉ1`JzhÚîrUlÕ"hùóL4ä^ìYuhÉ-T7‡íÖ}iþ⊳Z;WUÿè:Ö?ÙX ½5Ô1šÆÑ”}`'}‰ì•ô='Ÿ#»Wf„#¹¯…ô[¸ @ü``ü^Gý Œ ô¿®²AF4Aœ“Ó¹|ò×$A†óE‰“™sö{’?y}<ñúIæøˆúÿ¯ð?ï5ñÔ endstream endobj 374 0 obj << /Type /ObjStm /N 100 /First 869 /Length 1798 /Filter /FlateDecode >> stream xÚÅYÛnG}߯èGxééKõ-²Ä(Rˆv¤$†‡Åà {‡ìŽ1äësjlð\v<—µ„„ížžêîêsNUWÞ %4‘°ÿ¢NØà…Æ÷—QXÐWd…JNøk„Ó’pN-lô­4¦t þåð "fNhmÐHXÆh“„¶Öx¢r íá#¼ö„F€IBÇ|6±› N%+t¬¦MrË ƒ‰aÑ`ÿ“CK’Ò˜˜6Á†¡Ç ã,¿Rhî±÷Ntv 4°Û›÷Hcš„’¶ Fk%¬Ö´ üt=”ÖPpÖVƒà4 lÈspsŠ{P¼Ç’6jÞ#JiAÓD Æm2Üàe lxdz,˜'2A;Is: øë±\‚wxmaž:at°ÜƒxK¼Ã¨y¾(à•@Åi,©Á«ú˜\ g/€CÜã„#…Ñ]8±8ä ›w,xæLx W°#pã+ø @¯±orJx– €žÁ6Ðó&ááz0(XÌ ÃóâMô˜óIq¯V2šU¹Ç‚XFÌ% ÌûÆ~D·@hx^ b¤Ž@Ip1xÅ" L` }PCD<0!:ET 8¡ÁÅÁÁ"{.N,t©Äk‘ýõ÷?2F‰õÕÅÅÛÅ“'}6ÖXi©ivX¬Kqp ²Cpo̱0„óí¡áoÛØs¸mV1Tµ1SöjSœå¥8Ù«ç‡";ο”âû"Ç_?åx±|Ÿ/²gX0_—[¬PMµÈ^çÛâjsšo«´Pu½ÌÏV˧Åq¢ÐQ–Ì[,³Ü`,ì*Oë[ ~Ž!›XÔ¶|‡ÄÜ-GÝÝrš»å¨îßNËÁ!׺lÄild?¯×¦:©Ò6»Æi›ÿ¶–®ìÙÓbs–on&UoyåS8«ÉĬ´4H=ÖDi9nuõ »£«we5Ïo«õGÌVQv$²?_ÿzóëч²ü´ý)ËŠÓrù9—7:/6ïs¹*²¯ò«|µ~Ÿ=f§{æ|œypÒÀ3<‡êy´gpìúúZ^@¯—ËÍÅÅÅR®——y¶-ÎËkÀºÛÉŠõBŸaã•-Î ä>dâ^Ñã-Á¤fK0Í–bRêXGRÞWõpxê®Lôl™è2™aã=NCí¬K’ïµCvóyÈk’{óx¿‹)êL©Ø;m¤âÿ£AÊÇCüá¾ñyž¢LÈü ª¤…ÃM,ÚðÀ®qЈs† !y&=õ«L£$ì9©‘VÏq“ ÂøäONwƒ0ÍM~N ãܲq>J?hÅ2Š~LßH]½i°~’õfÁ±=•Fë,jÙ³yêñÎÎæiDÞ²ñ:€0hGu"™A;¾¾ñ¯ÙiÔŸ>ù©%c/Ã/y}µÆŒ»Ü\æ½ê2g3ŸF0ŸZj¥Sfbì5 øp}ð68Øëö‰ÑwÎÏ8?"àfØøh¥ViÐŽ”–ØÏ´Ëõ Ð{ÊÆ_âûn‰ïG–øÁtȼ§Äÿ&•Lì endstream endobj 476 0 obj << /Length 2012 /Filter /FlateDecode >> stream xÚåYK“Û6¾ûW¨æDm‰^Á™šCvËÞò–3±×J%U^(‰Ñ%‰Z’²gòë· ¡Ì8ñm+ŽIîF£ûë0›QøÍ2:K… ™Ô³õá5£õý̾üûŸ/˜“‹A0Iþ}ùâ‡WI2c”d4c³åv¬j¹™}ˆ8Ÿ\þk&tFtš3úßsq.Êã=~{ñrÙH8¦'(ùµ+jì ã’$<)- ÒZÞç‡Õ&ŸÃü$ºµJ’ã$,Ž Â+yç I_„Y™•'cuÿí»¾‹ÙÇà„7á÷¢®šÿЄ6åï>WðÃÿC½óæ®ÛÃzµ1“›¯§8{­ï`ylNùÚ˜¢ †èÅ©'ö•-îì3|¢f Gnƒ^¿ kÙÇûv‡o-ÎítüØVµ[Þ²ëÉ4#Ï‘‰ô'½A‘rqm„¦a+NƇw‹ÖˆN£HÄžJ«±8nГP ö•Ñc ´ û4\/LdÜÐÕÍû6o ûƒÝ\uð-Å—rÓîºîž„[=’%&;ëÛá—ìðo°ãïÜÄ‚¸dAü áEÈK&ä™°Ñî…µ/îaÑÌÕ¾ZçmY¯WǪnw_Ц½¥ôHtU=TÛíÕ¥Š|Øç«bo$—塸º˜ÃƒàˇS±n Mõ©:×G—:žŽ^i>%ð á —…psE‘YÅ‚p"a¶âÑr³4Ä?~ž u~VDšD`^`ÌÆ¡÷Õ<†IÎ:Žà k؇t¡8TÃÜÁè‡Ws-¢óq„ùBD¯Ê}ñÑÎW‹2Knw øÿ䌨±ã$Iz‘Q±¶9–«ÓKÇ~iJÒ”uSL¬Kð¹×ûÎ™ÎÆ°ªTu‹ŽÜï%Úï ãDC òcÐáÛt;8Oe™Ÿ`ÿÇûñWbgÞ¹ËT‡Ó‘G2µ»ÂMÔã‰*%ëé nœ.êyÂ"(;|@I¡†Ç(7¬gä¬PÐox`C™„¤Pü£à–—ÅRÂ4KI£ 4}&Xþ¸¬¼Ágf–g¶uîr‡«í°z+ç<à)áÚƒÁò8ç [ÔŸçIåûyÌ5>tû"ÆÎIØ»¤ß;@\¦Ò¾¤¼eh’jÝ ~D¬éê?[«åÞ~ÊWMUŸp ¶çãX°ÇShÝsŽFÌ4pÖ~3Ý%à!KseŸÇeIšèQ„y4Íù€œÖ¨oç,Úå­ûaŒš×ʸ¶^ŸOùqýèb+8ðÙIç:ÕÕ*_•û²-ŸMi£^|š]7Q÷¡.†ŠCïì)´E†r"N õêø3ÊÄ vE9jÿúîí/Ë÷¡|¦¸BSæWùù¼øt)£‡‡¾˜_M*—mÑ”Ì6¡i-:^‹É!4‹y[—$Xl‰ Žô;9{–ê^¸l¬í pïu~lJ‡Ìàkm’¿lëê`Ç.¦cÌ2N˜Ô~R”ኜn+,\yY¯„˜²%>ÃNKÇ8‰æB äqRš ñâ2XXÜi/UºÚÿTKaâÛÞ…–AÏÓ^â)×Õ´Ø}gÀÙ× Y¡CŸ|Òͧ#M€™iàc{¥ËåP]§”0¥¦™ì7AÕGà€ynZ«8ß7&K—€7È·µö«ë|PÊRLšäº:nlJ£Ð !ÔŠ+‡ñxÖǤp4õ­“¢5Y*´ñ ÎÝ ,ÄkØBDè®™öâ%G3¡~³¾÷Þ² 1—TΠ4‘1Œ¢ã¹ ‰âxÊŽo¾uDC#Ä0‘ÀÚ8 |Þèo|JúýCN°[ËèõÖÂzu([ ì ÷»Â¾ÔEsÞ·•AÌ7£kË[6ö×Ù6=l¦3ôí1бqÄú›ú¼jr©bOÆÏá!Rnõ«+°KDkÉy×ñû ú óZ^ÄñNg¨Ê?ð5y–¯¸pÄÑK<‡°€»¯Ø‡%£R$jÞ<6mq°»Pº=+G¿ˆÎZ5ôä Ú£¥~qFD»„Ž™&#ÞåÒ<\cXH&wei÷¸±ƒwAfÇ›ë1†ŸY>“[üE®ì3‹_wnŒ‚|Ì÷{SI*‹¾”ÐÌÍh»«‹Â¾æõýùPX Ú,‚) B^¨ =Tó@ÌQ½!fyÛý(ÆÆÌØð³©ÿØÝ J8=OÏß6°Ô0(S8‚7Ÿö­l‚&@ß’'y:Ó„L¹œE½]΢]›³8j¼ú‚Uîè÷ŒÌÍ€©'3W?Z…ð Ýê²P×KúÛ:w×jòYw÷U’zçSêΧ¥°™L¤ÂŠ…ø}èzösãôvù†2¥Óy1߉–êùÂlâªWÜîÌ¢)¢JÓÕžæð“K뾿ŠühQ¼Ãsa½ßÈ]+i‚­€m”+Pþ}Ìø: ^õ7íuIÇP>DBÕŠ„ o°”»I|_¸"½òˆÂßÛï.ðÃ&R ˜ g%Ý1u^þöãOoß¼ìþ­é¹ŒŒ endstream endobj 480 0 obj << /Length 2033 /Filter /FlateDecode >> stream xÚXYsÛF~÷¯`é Ü%&˜ ‡T~PT²×»¡b[L%UI†äP‚ ,´¥ýõÛ== Tœ-— L£¯ék¾!ŸDðO²h’HÉ2•NVÛW‘£Özùøö÷|!0†=ί~x£õ„G,‹2>YlúªëÉïÁÍ£Ùµ¶ž†RÊ@^NC¥t07õç©Hƒ ÿûB߀1/›i(âTfÓ?ÿ~u»8ØÖB|§“Èù­—qßK.Ó"™Ä©b\*rµ0ÛåÚLA^¯é1}…Ž€âKÆ5qÞ ˜Ô…Ï2¯ÛÇéÿGÛÜ™•ý#ÒŸÝ…î|TÍÚš5ÿµuÕ„¿$¹™unPÄ95sBÿìhÎÂ켪ðDW³ßâãÃL äYévƒþæm¨g2šñ(:·‹ÝÙ“„#ï ¯Ç]˜k)lùÐ>â[‹ÂΛª&Ùü5¿<süœ3¥ÕÀõ9rä³KÇÓ·¿j·«Öا]Cák£ó`wô ¨ô~Ør®Œx¸*6£ñ+*§¾‘mçÔ%€']\Ý·¦µ´àW2e¿æëö±£ÿdŒ9K"e±ŒO’=´#ÎÙÃNô¢ y΄ü?LŒZPç,(z —Y6U½ÌË—À Dº4E±°iÔ{QT+ÓæUy1»°¦i/zeßãZVOÕfsq¶~Ÿ ³´…c]ä[{žñyÈš/¶6vMoŸvvÕv«¦úTíë’í@íoR1½Ì[·¡¤qÂØ¤ [’ ¦A:Ø <°tÉDhß@kEÏk ïã@Ú‡GŽŒ“‘í’%Ý0ÿýÍ4•Á¾\9)wÂ¼É û')ˆ¶l¦µ ÷¼†¨Yd%î3qðVXz½¼m[ãµF}·â” žvÓ1ÛŠ uÐúÁÎú1IÜqÌÆt$àüc7ê èHz®ð±8†IÌ¢Dzá¦ÚîöXð*‰‚ö_â,˜C®BJ“£Wô¼^NyÐ`.aHñ€æ¾àî狦äš"ª©6'zoó"­m³ªó%À4À‚ïKD ÏG‘‘úÍË?"®Ê¼µM¾5ä=h¨âg8.·¦­ó§c¤{¨@%,Vâ4ƒ ¥L¥ú˜PEQд¦nó¶ü€&’`SW[2–ƒ/yçHå¶³Zíw¦\=mWWK³Ì `³Í˜Sz†‹ä$½C§ o1ï8Ø4Œ#¼ÛЀ#LB:‡CôÑÖ–ºÂЋ ÊʺYFË^3#€"<ÈZlݵ1yÑÐë×! ²ÿÑÖuU3ïzÒwÕ{ÇÞݽÿeq,ò!c;Ãä `f‰è—9œ¿ŸŽÕË/girè¼;Ï¢õÀY’õ:8cŠàUŠôDÑ0?úƒ¥oK4J%u%ÊÆÂÀUÆT¢Okôo„ádxÂI%ïR þ¸ŽDOÚÚ”Mî³ jwú᛫q:„`¿þØpE3,wÜesceýi†£EGÙy…J²ôØŸÆjÆyr:@åÐd¤ã§†¥±ìôxÌJt<ÆŠD±$âßï&4qcnyÀýŸZ‰fR%/Î,0~ØÝ‡è¾i}X\4›g\¤”t¤®ªrO[žáöc»CBp(/8²BÍ”òÍøÞ3F0‰²D¦¾-4`#˜‚P{9aY–B¡z’pŠb9Úºp+8­Kôp €JˆŸ¾¢Ì^Õq0pd„Ó]$i5`È#Í„ŽÝ8z8•ÿ¢ Ï5ápàámMÛ›Á~f7ÏMk·ÄÑå¼ì îÑðÁ¥7="“Ñ&H‘ê,KòÈF4óC¿ò7{kVS‘£ÝÅ™VúEs1KÒ¬‡­0úã©ÇüvŒ„yœ—øˆé‘t+"Þ9€÷¨Ù'ÊÏ¿,þêìáC|8Ìarl²¹Ã²"U>d"%,‹O3 ’ð Â!'óèE 1ئ¡OµÝÕ¶±%b¬éC‡Pìü¬Œ¡X?À1¤@ñ»ßƒƒ +"‰Õ?@¦Ã%ÔJxd„{DXÓ(=4¡MŒ†Ðz·on?ÞÞÝÜÞî”eJ{”!ºfäÉ™IëÃæß2ü5* ~tÉ*ÀEªñÖ§îýç·µ…k^í©ÿrTÈ‹¥¯s‹?~!Å”k"ýÇ :8\ç_¦ãæ³ÑŒÉˆ q(¬{»·š¡‚;Û¢C_ÝOiõ熨Þ?ý•Îj¯o7úé ›“I0ÇšKÀÿ‚ OI#¾¼w®ÖÐõ[@°˜lž·_¦ʺØŸ> y"þQÓê~•ÛƒàõnWä+Ž]ÁAS3–!—JÞÃßXG¿ÂÅîƒé×N—ñÚQpÂ+b2üMñÞvH¸hªË1£J³Tæ%Þùð×›q X^ELvåvûÛõüýO·gŽæL©!þÉâ¼ÍàöŠÝ‘)<›|íbTCD@»ÂiKsrFkœ$ÈSÛõ¾\ôi7Ÿé£©kCS"‡—¡‚_ñÝ+5M³wó>SÝé“I ⎞7þg«nC½úÚì©cr ªEÓ2/×vçÊÍÂ[‰ÅܺÙUÐVî6”¶*¬¢@Þï:*­-ýF€³dc“èXšÕÞ›)ª†ªLk šswÂ_Ÿÿ­ˆ­f endstream endobj 484 0 obj << /Length 2065 /Filter /FlateDecode >> stream xÚÅYK“Û6 ¾çWø(wV,ߛɡ¯í¤Ó´IëNi²-ïjc[[IÎãß ¨——»›i3ídfIÑ €À€ ÿÄÂñE¦s:_lO¸_m®4ùõ‡'"Ð¥@˜N(¿Y=ùòÒ˜…àÌq'«Ý”Õj»xH½|³úq¡rÇòÌ¿úש<•Õñ {òýj8ÀHù‰’ åã¢Ø\3¡4Ú]7e¹LUÆ“ºÁQ$‡º +Ûª}ÛÒtÝ”ÅÛ ˜çö„ß‹¦)–2K>Ògh·e±%VÅqKK§cSnê¥Ì“wø§lŠõ¾dËÔ›ü±ÌuRÒ†÷økqÄ¿­t5q(Û®:] ë®—ö ÁúB1aHŸeqLWÕ¡LWË\%uz‰Ü‹jòJ)üÉ ±Z]Â(pˆv4’^@‚zÓi˜ƒ†ÀŒùó„ój8Ô2Œøþ {e–ƒõ`ÌÁ{üvÀ´Q[úh?¶]y yÑÒ†‚>5}µè¨75¢òé>…õEóW‚=‰ç×úÏ÷U§^‡S;o7?½-6Þl_^Z=õ e-ËŒê}qG4sß1LÃB ‹:§Ð=ÅÓÍr=x¼ú <ôgàab™ñ¸zÔä©–9sÙÌ%ŸãäájcÒ*ÇTÞó©b'Y˜ÉžÜ}Y4qIù¡Øtû1î¹dRÊOgŒ* Rbñ‚.ÌàþH—%Ç:hµƒØ*·Løí1ã)DWƒãI¿"DxÁ×mݬì´tÉOe“]šŒ);ØæO.mL~Ç21­}üaHÓ½pÉ´“ábDðò@؆À…kÂX)‚ æ>ü„ڡȫ백E»|¤ dÂøÊ7]Ks KÜ ‚K†´n±ßÜÃŽ¢é…¹ÅÈEÄìªúXìÑÒ^3'Ú9 ½ "¹=xÄQ <|ÒzëX›²mßyž¼'S¼‡úé&>J$»¦>ÐÚ½¾7¨•}Ðý2ÆU6xwM¼Sqo£o­˜ÉÝë;Al³Ñ}8Sá†P!1€ à­1•ðØ™OV÷pUjˆ*oÚ,ÙA’±”,{,D³QÕg”+¢ð iÉY÷ã'9e4Í”t”•#ŠpYL¼4£¤kûLîç}Þ5“¼ë?}ecÈÐù ó}Ϋ?æ,CâÚ·˜/ˆêXÜGš ¨áWëÃí©+·¤Ñð§qÕR}°«÷ûK ÷íWÁLvíš™Íq8AÝ# Þ"œqñ4»!ä&¤¯iP4h ohø‚†Ã)Êr]5g,ùþ˜§‘RêÕŒpÓ6kÄyî™\ømxïуº;{]WàîW¯y8z6ˆ7>î"1,2ï©Ì ÛG]O;·7z?çãL*%Ë!*Càär2sÜ[S›3±ÂÛ-“ÌÂ>+“˪i}Ej’—K•mÛW%-`¹ÙÆ‚DYÉÌ=O+$1}}‰Õâé¸A<'/º„ú&¨2 挑^¦žC´£Î#ØÅŒ•ÛÄä»Û>©ò”ÀV-GüÀuv´fr$zåÃd6ÁÖáBf&&ѬÇú78ü¿0nJ1³ÀEŒ”/üNò»ÃÃ~:›|i®˜ÊÜ{©3O…Áh3÷šCÌS÷=Ü“nòþ€ fún&w|ÇÿJ…Ì‚ïàÕR‚ ë÷»ÑÌæêAʘqæ\¢wUK΃T~3Ê9V­fpeÅè<ÔÎg†y¨š>ÒCVÍQ#BæÁ`îH1@x(Þ‘þVO+ömýUÔ ÔàI¾›öuuW°þ?‹þ9Þcn endstream endobj 488 0 obj << /Length 2089 /Filter /FlateDecode >> stream xÚÅYYoÜ8~ϯèG5æò©ÝÍ»ƒõ\Ø9b ɃÜ-»5éÑԓñüú©")‰”)»= °ðCSR±XÇWËlAá- ºÐBBšÅzÿ‚Ú·ÍíÂ-^ý‚yº®Êÿ\½øÛ…R FIA ¶¸ºY(Æ.{ª«ÍâmÆÕòýÕw/þ{5pRœŸy$R>8ÓðÓ„3%ñL*7’0!Ýqr¹R9Ï.ëÃí®Z®„VÙeWvõñà~>U§ >úO÷mWí[”pª hË ¢…cÛó“ZŒüðaäg?y~öa 4Üd]Y{ÚÒý´¯Öñz RS“•‡ßZú-§öTîv÷îáz¹â:³;%Ж»%ËîÿX®XVmP”™ ÂsBWe[Ã^#2{`ëÕ¶òªæ‘ß¡6ÛM{…6‘–¬§¼+ר߇¥RYy bqÃC¥[|#²›Óa:öÇÆQnAÛµ>uÛªÿ¾Û‘Å'ÿMd>ÞßáCVµŽþxã¾YqÛ¿;isJ»*@/‘ƒMr’å„~G™öÄ"$fœä ¬Wíà™½ZªÜ.,æ°Gè~H‰Þ»«¶j~[¢·÷úãˆ;1¸ýI±¥"¼àVlÉøç‰½OºQ£7îѺ§]Wß b/¶|ŽØÊEó9±c b±ÿÝÞï÷U×Ô딊9#‚ŠçªÈ1Cô›Ò3”A€C§N°øÈG|¤ !‰’I}€ãå¡î¦ŽÓc˜£ù!æm.ç¼£Šnª]iÃÑ­«¢®«øÈfU°ý‚j'ÂbªvÌV9r}õ}Ò2$õKUh•—½ ¼½Ö%¤£º Lñ èæ`ó¥".­¢øÉ˜{žR²W ‘ÖKKBçCò ½¾N;˜©8/ï}ª»­[ÝV‡ªšå$²z]¹/]½÷«MÝB¸>=’dãUA¥o%ƒ¾Z$ä DL-p½‡ 5Q¹YTIóDà>×:Û°Æ5Õïnu6×+Ág”À’¹¯?!å±n[¬øþ®9Zd­«Ö3tÄUSvi«çšÐ`Ó>Ü\Oÿ Å‘˱äÒ´o뀷­_=v­ »¸ª½ Ö¿ƒ…bºXk&¶Ï€}´nU%šß'WÛ¢>¡9™ÖÄ0蜧uVzÀ#vÙRZìº$çA†‡¢’>e_ï¼ õMòdˆ*XdmPÜdÿt?s¢pM$Dâ L@Õ) ´¸ œúÐz{7ß”;A.ê]õ~¼0R(岆ÈyØ}½õó('\9âMŠ R ø2ÅR5®<ÉëÏ`2Èúó“üL~ùLîhŠKLóWÁìÏÇv¿ï':i# ÉGl(š:‚DœwåþzSz ŠLh¨æQE4xPuJ‰ëmgºÑ•¶,ºÈ=‰± S$Þ}HÚÔË¡±|˜² ÂÿgcÆ\bc>ÍåC$!>ç×ItÎâ\úÕq‰œ‘ƒgºzWÿÑ(„¦YSµ}rn=æqÿÕ^D¢l ßm?íÇ:h{ø€7xüm†ò†Ovbùn›ãév Òà3·sƒÄŒ£L¥ÐÂŽ¡>ÿ.fhk47~˜ Ç.e% ÌAž/7÷+ìÇý¨³×å5ØÏwï©D,"G°Do Îd¾5Õ‘Ïcù Â_Tݶìœ(Pƒ/UÙ$‹†–M˜ ¦&ñ í㘠=^·Ž#ζD_è­)lÑ{™t ô치BWNŽá´xªÓÀÆ^¦?¸ ¸¡ŠÐÏɬ߄20:FÍÚÁÜ÷ å0?Šý£à bï;òI/™è‘´"öQ<¾@øš®(KÙ wp—~G)MJj—xú^‚ÚN|UûñÍÕ™õæ(…£î“­ö1žôœÝ!öõsOñ”î;¨~ŠóÄq"¾ÓÌgˆø²+Çö+ ¨ýò tDó¬ñËs¬! š<¸;ëBfßÞàºpç#Å0¨5æhü­š[7ÄØÔk÷fÔÜNöÎIìÉ ÎÌ26¶&8cñ”µÜÙ'7µoý\ÃÀí/êÁíh´ÓIÝòÄEuFìWÏHm8•c$ý{GŸtpÜ€¦°ƒ¼kNÐOY6=f¡Ùg59…&éÿ½ü'ŠUv» endstream endobj 492 0 obj << /Length 2894 /Filter /FlateDecode >> stream xÚíÛŽÛ¸õ=_á¶/4fÅ;™mì¦I6-l2³èI[“Q#ÛÉNšýúžCRiÓž™n€öa1Àˆ¦¨Ãs¿‘tVÂÙr¦9'V˜Ùbu¯t³Ý‡™¼~v†usX8Vþpqï/O¥œÑ’ØÒÒÙÅe êb9{S0uöîâï3n,1Ú7ûiWïêfýßÝ{r1n »%&¸òÅbT(5ÄÌ”„rá÷½þˆ;îã,5QfçÛºZ~÷Ûj[ŸÍ™Åu·y_½oÚf{ÆLñ'e±½ª¶þõöªîÂÊ ¼Mð0аrÜ!‹‚%Š ºØÓo{´Y;†]ú¯ý¶^‘³¹à¬x[ʲY/ÚÝ-–sÇê9µ’®`À •&òzÎ9÷`8Åf]û™÷Öõ¸¢¯»ÏHi½à”x˜ŽEs`¨ÀâóKX®`ÓûÑån½Ø6›µÿ5Ì.ª¶­—~ü¥Ù^ùQ[÷ýð}µF]]‡××»­^W]µª·u×ßÏ1——špmÞµÕ q÷4-««¹%”²áƒj½Ìe”H®‡Eæ. U¬Õz¤8vqù¾Ÿ=“=‡ÛM×q\&ò1ÕþUßüZ£¸…(ž¯ýT`:Gööõý=Ñvu¿k·aÁ—¦mAè^TÃz÷¢mI WÇä‚ùS &Ç=I¯Ÿ<}òúÉËÇOÎýb%âÅÊôƒ·%ÕY62¢`&°ñPËTYü°iˆÍÈ´,ÎÃü³´µîÂìnÔ¿öo_ÔuçgP¶nêáË3Ë® êÝdŠñ’06Zë«ÁS9/ë-"ôlº½Ÿ ûÐâEÕ}t¯ðßg¯ <¯ ÔC}|U5ëþÚ°.^lÀ¿õ6H‡ˆƒŸªÝå¦[UëÊŽêâÉç3)‹ªÝUÁÜ`.˜|òx³ãAà¯óES~}Ý6‹Êû‰2E Aõ9Ù0NpøtíŸM[En†ßÔZsßkß9¸"؃3€×Šðœ:NÃ9+‰f:xà:¨hÕö›9Œø71šü§~µZ4pŒ[ƒÓ¤Åe@È-øôÙ@ˆ„ ˆ€Öz€‚°³¹T Ô@]ŸNK©(Qlt/àƒ²xx&Å0\å¶“–È ñsçÈsÎ)øªÑxÀY±J/T T¤®JÓˆ(7ä#"¤“{óUØ8·Ï¾Y5mÕùÛMxæ1 ¼¥~zî¹|ÉÅ jà¢QÚÍ éØú%Nï7ý6«"¦$ÂØ=ŽìÑŠfÎs‡º Ñ0˜B¢;PQ4`4 Ër" Ýã‹mÌZ`âÊѶ{D½µ&V™X·P¡ÀÿÝ ßBóý† )8xïœn@£¯ë0]õá‰4ƒõ‡v\4HÔÿö.Gí¦ZΗõµçÎzPÙŸ6à’nÒ4p¬ Ï”3¦9 2"¦ úªrd+"'ª15Ì÷&F9¯€™¼&Á»~¹j|<ö?‡¤ònöè›2À\J㸲[!ˆÀý.k¿ý»=‰" ©Ã’a§Hk¹ÏœÓ”ÊéÁƒÜžsðçºÄHdÁ ø7b3¿›‘'fð–{<ÌÛ˜Cùd\VO‹Jv„uvr}«f}ŒÔ96êÜê;Ð]¥ó¤@ü¶Z$´xëWü¬†ƒ€tü‹óà™ 9¸[q£’ÃÎ}ÐÁ1÷E#mAàΚÜÈkˆ(êjJ8hðzÙ|n–»ªKÔK_öp Kºô0Â𛧘÷DšÎ‹§ ½ ¸*ŒVJŸ_pÅ/G=xÈfñ"¨õ˜oþœƒ+ô”e`@<“rÜæõ1 ê@^} ¿| ×eJºæ6`V7ƒyA…I°A÷p™c\&¦ ßON42 dûÄÓBeú~,Hm¼ŒCm-íIB Æ«]¥”ŽÁ3 Ù¨MƒÎïý»Fÿ_ht ÅÑÁî%KW¬hG­¢”D+´kNEŠÆ¾QŒmÆT.†6rå&0Tû-åa¾‰<øå‘¹Ùð†Ük–þ2…üÚ€«{ßÞÛ²Øm›¶ùÕ5Q ÃUÒuÎ|¿Y÷aV(î­„D×µu\ P}ïsI­{)>§¤TZ×™p³cž‚?Bò %sÕmv®\+TQ^\n:@Í—Ëž,ˆG±»J2Nse&k\V[z‡ÁPIáWþäRU¥ ü§‹Má”Ä%µWϾĆjÉ‚…Å&:TÔËn|ŽW…d.”nÎrQ<¾šÆ.‘¯¦ŽGýÉ —FjUôÉ1×òà Ûx(‰šrÓ·%§CïtÖjn‚öRH)©k?À\ÞÌ¢U¾‚¨„ây¤¢)¤Ûòä‰VPÔfê}ØÀUNÝgÕ01ôe²Í¦Ëö V¤§†š›-Œ032¯ÄšÓ¨¨¥®¡b¯É’´´Þ¶—S?›ò(KHë!  ã·•–:ÁMM,g³hU¨â€Ã–XÅTÔN‚S ÍN3h!ˆ[…¹GÃ#̜֘=>÷×Q«#~·sçzå8Xmõ>ûÄIî•Ù8¢”F•TÝ¡¨^Ážù WºmD"X œŠ´‘\ñ0òÓxÊÈ øT=cZjß¼+gKxl‚ðlf_ÜʲB¹¨ÕÎÎï½ §‘i5 þ™ 5cJsB“)ÙHâœDXl¯‰0<áâ~õ/L\=‹¼îÇ-Í#ÖZÆ…Ämà¬ògšr:ñý.Ûu¡%# Hs^1Ô×Ç5Éæ4)…ˆš$RMt$‘>¬ô@ú‡êf±'-[e`y:÷å5I" ;©I«¹NÏ MB×=c\®Ù 0‰*€âDZkÖGðž¥WàzQY° ,*Æü‹ Ç\Âyµ9ƒTZÜØéa åQœdyôÅÔÅÏwÅXœob`yx¤ŸÄŸÛù–#Ý'å¢OÒµãZûFµü6R.YH°Ý‹P¬[šKut|)m2ÔƒlׯgÅcB›«¿ï¨iÖŸ2~!x<.—wõ{W'ò  `S²à쟿üéç‹ó©«’ÞÜÁÛ[2Ó+:zîû/ËH(3Ûp³h> stream xÚÍYëoÛºÿž¿Âû&Ç7©tI×;´÷¶q±m?(¶k‘,W²ôþõ;|è:qvaSyxx¿ó™aø#³Ïc(áz¶,O°­ïfnðùÝ ñëbXV^,Nþ|%ÄŒ`”à„Ì·CR‹ÕìkôvnwY=c39Ñu¾¹+27w½KwyµqŸöÙ>ƒ—þÕÏf—•Í<& IDÕüûâ—“ËEÇ ôHÆÍÊ'œK:äœôLjŽãŽù{sàô†B! Dí‚ûrNut3á{ËêÖüò¨Î~ì³f׸ÙÜ_q·ÎÜëÆÞÎM~û³&5‰²ý®[Ïj?ûw;K¢UæÞ~ÈLÄ23F¿vê~ãb& `åœ#›'Èö©_Ÿƒ³aÈ¢XUß7nÖŸC¢i}o_¹°eí ¥7òa¨òMcò¦¢>@f…ó`¢E3øÍ¥ ·U]¦™‰Š.æ6`îÛZæ¼s–·U 1ÚFmxº^æY·ñ|»-òe[ÎÆÁÓPjB¢€x=žy‹ûg^d?0ý3I}êlð:[öŒD"˜6sŽ$ cpµ$amòцÁ¢©Þ„XáiÞyoVéænyú£)Kbÿç›[û[Þ{ÖC8bb‰9€GÂþ˜B‘¾¨×ÍH-¬)]ãÚ`}›»øÂLŠèjžàÖåœÑh_„QJRÄ035’Z9ò_¯Œ”zh…ë]ì¾÷1$ „㯥à/xÑç3ý"p! Ôr‹âÆÅC®$lå4ŸŽåçç½[ô+$¢JN xL Ë jNxÒ0¡)$ÆX‚v92NoÒÓ’ñIªuSTê–Ækî»Ê9˜=ɤ/­ݸ¨³¥£Ή:¯àš³øÝÖ\µA¨5•imcÝaÌ¥[C0H(QL; Å æê4¦Ææ Æ"ÕÆµúUGU`ç—*Û(@2Ö#5ÙÞå.t4îÑÉ îê¤ Þ⬬€u›(š‘°²r…U¶qÓ]¹¯,|ئ#­ø³Á@nZCˆÍW¾~À+üm^d=86Ía›ä&Ll°Ðê6ÔÆ²BúãÑa¥Úµ&ÊTþ˜|³‚dyµòäJ®çÎ#ñQ[#\?ãa-îbP­ ø2ÈlýcQ¥«Ð!š‚ðô¦ÑšöyO¸møD“QÛà»À G ”‘ÞlÉÀ6J QáÆæjÿòfß@üá‘)E7´i‘L¢eU*ø•Ÿ5å‡ÙæŒVš*åßÙÒhßã² T;fƒMФ5áÀe™À÷ö˜á !íEg¥9"Ø7ᎫQÊØ±‚Ìs }þØ!'ŒÇìÅ|µ/[ÆÒs¦'l*÷kë0:ËQ:Íî^0y€É—Œ`ÉÀLío»ÊÀ!ø&[µùï›ÐyPýcp0RÄò Ô“{R¥øe‡™ ­G>¹ ”‰AHOÆdzÌ?ºæ1M´…5Š‚‹/Ë“¯ßñlï 8‚¨ôìÑ®,gD el®˜]Ÿ|ò=æ1¸'ÀƒÒìžÑgÌ7ABuý“g<éDÙÜC`‰Ãq¸¡éj‹1GB³Ñ‰#z1iòSZ2ê.¨ÅàþÂf±œ«QK€VqÄq΂J7‰Q¡òyý¡~îŸê‡Alp™#ô™½æÏ)ˆAž.& º[7¦ì9AêÇÉHAí*9¸ŸB²":–¢U#ÆO%*‡9И‡pF ' MZå¼ÿxDwþü¥¾Ò¯ƒx 倉§¶ö!cd¡¦²sVoÎçºê”Ð×öçZjºHݶËŠf@qøÍ#œÔé2©´M¢I×G§®+hB¡Ít`¢öi:éû.S'€Ò{Êá´%`nê@W¬å€R+ÓK튄öƒT–Ú2aÝvWy™iÄØ©ºv¼ë:K‹à'*øP_ç‡ÿz@ƒKøðG`|/õ<Ë?ônšw·d® éúþw¦ÅÒ“RÃ<³ µ€È$6…milÃÄ Ã¶¼þ–ݦûb:^Èá¦òPW©?ýÌ©#ŒŒj€úW»xI‹u×os½š ËAþ(û¢ù•Fý×u 6ÿ_…‚] endstream endobj 501 0 obj << /Length 2438 /Filter /FlateDecode >> stream xÚíYÛ’Û¸}÷WhߍЉàr“y°ñÖn•½Ž=›JÅöG¢Ç,S’-Röúïspáu ‘¼ñ&åÊÖTH°4§»OlAñÇ9]!H.³ÅjsºÖýÍÂ?<ÿá r)Ó‘äë{~¬Ô‚Q’Óœ-®ÞŒ‡ºZ/^&<[¾¾úi!²œd&Ç(®õá<”ÕöÆ~»wyÕO 8?S+y[•|¬ cÉ:“„ éç}`'œ«ÌÉXÖ©¶Û™éX‚-:™MtN ï‡YÛe*„H®—)Ï’Ò¿|\r“”«v·oîû–b»ö•“—IûvÉ’ªñ/«¢)ƒ`û¶ômû²9Ômã[?Uu}÷-Á>?(dDò¯r{s?fq‰!sÙ‰_Añ,Ùù>«Ýf³Ûúç÷ûÝ{¿ò}[•oܽ±¿<Ø —ûºØÞ¤ýÛ›ÃvÕV»­µlÆ»æ-nÓ F 0ż2~Ï K.·7MÙúçëÚÁ¸+káwØM–Üø/݈Q£HJ2Ñ/ÓiD“'4ßmµ*j?F?å£Ýæý¡-÷þ퉟s­¬]ï,3˜ >lJ¿„n¿?‘0V?6Í¡ hc"¡ý§Ã6`‰SêeòÌnBqS01ž™”ñ\GÁÄÑøO‰ Î÷¢ #u³û>f klÙ»Péöeu¿tV¾ÿ¡Ùl6·‡åˆš»©Œ$ý"XØ$Iä2UZ$W2¹\¦,Ùc_†íVÉãecí7KÁ“C]Ä´šA†—Dqí‡ùØZ¹ÛY·¬ÇU]¾NÂmTÉ•òúu#„…= ³è±ÜC©^äºsÕ™ JÇZit•¼“EM- „ ~6HhÂðÃ@w= }3]0†©ÂbfLuNL®'0 hžE¸¦-‹õç´i‹î¼üº¸®êªµüì—Cè/FÍÕv6œ÷oß8“ÝXHô>äÀ…e¸p4ôèt%|ÚBãôAr»5Í §}º»ô2ŒÂR¹™œÛÂI„žÂBMMk([Œ¤F;=™rºÓÁ´‰'*Ž@<èæ¶Ë­ð¦òi£ñ¯Á~,ßf%gãgŠÖ?ù\K†P¼õÍ}–woÍçÆZ»-7!,)„%6 KŸ*¤¿Èâ¸"”«»Ó/2tÞ ZC ¨Ò…P…ùËýÇ¥K.÷* ¤ WI©+4¹4ƒÀë”¶Þ«2ˆ6vìa$¥7¨Ì“½…hLa„2MÙ`d®â»+ô$ø;­ÖV£Õú0V½ZM™òœä³i®ÂÌ:j.J$ïÍåÓ‹‚OÁ"¢Ü—áµÞëØ\Í­¸2gUJ›!žÅ¼ÄKçc]S˜å²7ç[Gg”Í$µð`U4Ÿ—™LÀ9µ¡ ºßÐ]„ý¯:Œ"ö$€ß£\‰65vzŠm¸ÏnO ‹„]”î71†% ÌÈâ)¶w¸™u±Àö` §yÔ«B¨8åTœ COìŠÈړ׎쪺¸í"‰¢•i$p„ wü¥èÙùºt«-;#4ßÇæÈý–œ0 éY'7Ù§ÍIž K 26qÿÙb"ª3•àeK½} Ç•¥pl!…DtwUÜË×t±ÆGdaDólñɉnÀˆ±0¬/îýÝ×zó¡HÎøBr¤bî€tNÔà„ß9gfšHÔ¦ð£LË‘£ÍÔ5œH,ê uA¥+GúÎLÞ 6Ö—ÅüߌëæW”Ò8ßp…[/%xØ“ë͵%­vO4¨8t3ª‡Ž¤‘ÍÔ™AéC6zlI¦'RTG“#ðB>]•R›”eîU@Ê?#¥ÎáJ Ù,¼»=¬Nûlz7d²Ü‚˜qóð}wÕÍÏÂÂ(Íä]øA"Œš)ÞÅýŸr1Å/6V+ì‡ì¶ëOÑ¥sÌ ¾†ã ù¯â¶Bep½ßÓkQã€â«8m7ÖÑg5*w=ñÙèŒK©/õÇY‘ÆsR˜:•îÒò§· „ÑÜÆÆÔcXÃtÐŒœ&‚Šõ䃋x–² É/ÇÊÓ~gåÏÍQ­‘ÕÇe8‹­1Ä.cÆtçǧÏ~¹z1Ô܃¼-B3Ø6»ƒa+0ÃnâŸG¼]ò¤çu2/ ¡Ø)î.ô)Kë¡r9EÝë÷ÿ.(i¡NLx¤Yï4ŽˆIîÏLKÿ¼)ÅS±ß[î;ª×˜/žü×m´²±¼UØHcåÏ{ùò¡›ÜÕ‚2Âu6©n‡2l1héÏ1DR+Ë®ßúV”(5AßChÏEzþí;XäîË¢§sQs°ÿÕ3»þǽ!…A޳°§@M<€‹|Š×Í)¼>=¸ã“ph½ŸèTk¿,™Ôð¸UXT^ª¼)÷÷£[jÌØ›XÄf3 |}6¾ôeÞ(©”2ù[ù¦8Ômlz$ËQ§cW£Ù/üæ°ø=·Ù^OÍýó/W§IHWOmL8ïۢΪ(Ögo™³ªó;V3‘녔ɨ`gÄÙ?î‡þ¸úÿ¹bßÚÑõo¾ R± "Œe³Oû¯‡Ô~=ôðüë!¯ÈŒR.Kün‡n¡ÏcûÛo˜è€_~´G¬Hd=ßj»×»§°'ÝMùèjgr!ÔÅ/f†îL‡NÆaÄ5¬¼6^´íúø(%Žé½ó§ÌžßoňœD³ž=‹žÛP*''ˆ×Q'‚ØÙ'ˆâVÎu¿:‰†+[eS5;1Ųa¿Ð¿÷‡Ôxîî|,•ä®–ŸS´X2:WFHö!}÷æDõh™­ä ]·Ø¼é-{hÜ Q¼DaÃ;07Ã=Åü šÏn¡]¶;ÿÅ•‡6Gþ;æzùÊ!cÇ/€˜½¦ÓÖc H©£´¢ÄtV -l¼Ç7›™sQ©Î ÏFÊqPªHIÂäÎEì$mµ O‡`<7»´Hp­ÍnNrï2º{Ü K˜±iýKo5ûÊÔg;Ü)ÈÊ_¢¶Ý†uîˆ×Uƒ‰®áÌëŽSµ¡F µ¦ÍtQ³d|Lý/î°Ëô<‚MÉŸœ\ˉã×r9›x쑹8ã§OQÔYµ=¸óèÒ•tÇoÿN¹Ò endstream endobj 506 0 obj << /Length 2536 /Filter /FlateDecode >> stream xÚ½ZYoÛH~ϯà¼Q€ÙÓ÷‘…H²ö`$“ÄÎb°Ih‰¶ S’#R1²¿~«-·$ïÎdÀâQ¬®®ªþú«ê Ã?’œ)Æá:›/Ÿa÷ts“ù‹¿>#A®Áb"ùòòÙÏçBd#ƒ É.¯§ª.Ù§üÕmyßU›YÁËùóYÁ¹È/êÕMSùg]ÙÕë•¿y¿­¶¼ ¯¾·]µlg1X˜œšÙ—Ë×ÏÎ.{¥O4ÜJ>²\²©å„h¤3©9"Œ{ãßÙ>'8“È(¦­˜B³¬ H2饮¼Tìb4›H}Æ{ÁxXŽ(§`¤zñ˜¬TùÒýÊ|•RͬnÑz‰wWÝÚ_ž/ªÏ˜ðUµð¯×›Ô¸Š!B‡ÁÿTéüÿ³Ü3,úÿ lŸ§´ #ß‚ ,þf7²?íF;ùÓ”z*Õ&#1f ‰YiD4[Sž$&3ÈH*ýÔ…Ô¡HIÓΓ“2ˆÃì ƒ´a}œ@̺Mp2áHK¶$ƒ„ÒåH‰à¾Ÿú%ôuX ´Ð"™@+»:>}ÁÙ^¾Î0bFgNt™AP±.k²‹gïý"ŠæÏˆBZñLR0‘ý– I ë’"£ƒþHø³ÀE EçÊ‹Ýy1>‘âà&Þò4éIBàRØÅåSâ'¢Ñ"Û9¨¢>~úpüÀZ%⇕4_j 9'‡o7‘ Ê "p]p…¤ ™W®1,àp{²"KÕ ¼“Q(3.Ê÷øYaQ%qÄ'e@ABEÒ-ÎÁA~CzüööÝÇË‹0&ŠÃžн×xPžéÇüà‘U4oÖåâÄ^’9)`\zŠáÑÉáÀ ” î<=î)ð§8…?2¥R@ªaÀ‡[°=¥‘Fª¦Óî7šôB>7hÞÝVÞ˪\…Éo6õ·™yÙø›² B6µR3b©q!î› ¨0ƒ¡-H°Áž·Õæ[=ûÑY¾¾ö¯«r>£:¿ i½ZÔßêÅÖ[ËÜÇ3ªòžzØ}cS•ÍIÝù4^/úÍ0 5:Ûm¥’ÒšˆìQn.åæÛíÒNê ,ЃíýŒëEµ²o»zOÓŠ†UnçY{©ê¦Ú$§KÑ;«4^ío›cÉ'1ñÞŠÇóV×å¶é’X#bD<ú©Iû™jØJdìçÕŸòó¦úº­Ú®3ç¨G9ž&Ð^üÔ?Ρrgð ûs{)`cú¼ ›îï/Ÿˆ¾/yþ²_è.Àe›Ä2!†oöHþ4Iþ6é¥LäP³çÂ¥©?à.“ü`¾À%уȼ õYX/}-¾Î»õ¦=ñOFÎ ¼»­Ã*š—m¤ÔÛuÖBF‡ºiÆèåÝ‹¦I3X6„²À Kûpv~öáìí«³‹ÔòÔ (bÊd@íC'1þWX L±üßÕê&4¼Ú ¾¼|°P²ößÌ×Ë¥«}áú~³¾pÔÕUë:HRý Î6M¹º)^ú»ëíjn«gëYMû—¯v_ºš!˜íº>`Šäg«›¶êüõU³¶‘Ï­‡ï ”$¿ñozI§jÆÇô‹pþ¦Ë—e¿c)2ùj½¼ßúÖܽñc. ¢µõ£ûú_3 .h¶Ë*”=a ??S!­~kÛmvABA$<½]…\¢Pržxw6åM’‰P­ BLC"ÀüÅHõµßET–M»~žÄð6·r¹ ù»yÈ\XòP0°jSIøõQ‚'³BHæ°3 ¡ž~$ÁÀqÑ¿a /øp™ˆ(N´©W.ÑDè¹$yÁ # dPnP=ÂyŠQÄh1µˆY‹Äp™XŒ:”î÷¾d’ °`i½­§Ä1YN¶úÛ6,¥ymóÎ>±äEÖ×iPd365™[“eorÒ)\“" ¢€gÝm0m媊º«šïþɲt|â»—¬°ÂÀ6’OØËw 0‹#^³åã&P>T¡$3‘P=~xËSú ä §ìphÜåt7\4”çgO·Æ®ª{Áz’åoê0•²qèX:ï´þ]Ù¶õ«É¬D·OýÏ näû'6\ð v·eÐÃD]Ý=¢ÇרḪ¼gm,zNèòh>ßnÚ@ÄödÏ™ží´((FÜ&#Ð+iÔÿxdQ™½Ûñ‰ŸœÉÄ„iâ6íFFÃÈÝÿ[ ‡]ö¼§5Î…ˆ ÌHÿò0ä endstream endobj 510 0 obj << /Length 2686 /Filter /FlateDecode >> stream xÚÅZ[oÛ8~ϯ𣃹â,ÐfŠ´Û-Ú6)¶@ÛÅVbMe+•äfÛ_¿çÔ…]'‹,ÄE’çòïP¢³ þèÌf3Í9±ÂÌ–›“Ìõ673ßx÷℆q ¸˜ŒüíòäïÏ¥œÑŒØÌÒÙåõTÔåjöqγÓÏ—ÿœqc‰Ñ¤¸Þ¯»bW”Û¼wr~9L {àJpä½¥(6] ¥†˜™2‚P.ü¼›θ¿f©‰êWvQ4ßÊeqºàœÏ›¼s-1ÿ”ÉÌ?Ï¡Dÿà ZÅk Bc~ÉRÓ»1²3Q’šjA… 2³Ð0„å‡9¶¡7»Í)3ó«Óü/¿±úÚo«)Àm×úÞrë»uØuû½íŠï<¤ª ÑÆôÓ…õ€^¦NA¸âã™LªŠ F £’š’D3P”Ô‘¢˜ä°ÿHMÿzùûûˋԲ0Rû‘ï)ôòÔ g|ʨZž.ר7ÐmWlÛ²ÃÖwì6Nc«Ɖm±ò#ó6¬€G;ç†Äúy ÿTÒW á–Å*Xh©çoêî”Î ?s·Î;?a·.[ßçõ|UŠxÑ~Ñþæ5<ÛÔ›þéÂÅì‚¶3Œ3Ê •~Ê]WVå¼+ëí™wŒ»u¹DQkï3{NÄç˼ î^—Ú=X‹Û!F^Ÿ.$Ÿ?=•rh&<Š3ÐØ`šTD‹†,Ã~‹¦ ë NŸWwx#w† ÷~MŽA& ¡ZÅ.óîQ âV¢q%dŠöÖg½mîÜéùÔȳß›ü×o§.òó”n²¹SÄ=T€àw‚ på ªm0(t ¨môñ©àøðÉ+ßìêðëD ¬>~Ðϲà`Ô¯÷~4%œ Peêá!C¯,#ÒêX»Ž¢Áº©w7ëÛ]7Âä~DüÄÓz%¡Ñë$¼BúRv½)äDxâçiJJÀU¾¹Zå©qõ!U1+ 7{ªºÍކAWä«ï‹¶ i•Ïo›ú*¿DéquâÑ+`HFæM‘m݇ÍýÔ%FÔ Nz$†Bß~yÜÒW÷—Ž~éŒË~騉K÷âmlYN2*÷g¼CìèºãŽQ*îØO¦éÃgG/,·Ëj· $ ökÉ2ù ­z´‹€ çŽšyÈåàc5xCJ/9˜ !Ý0Áæ×»í“„ïï{—yUa.ľ»²[ûÞªhÛþù|ëûºuãó™û‡÷òæf· (Þž¥4Ê2©©ŸwÀá5p—ÁÈùv•›6Á‰L²Hª‰0Cj^ö õ^—Ë®nZ¯JαœFVñälJÃòMïÕåH !äüåg{|ÁD{¶\vU$weUEföÓEùX àäનª$ËBÔ>FmÈçÏÏß¿yv~‘J×àÇBÆþë¤!³løì–©lþ:B]K,1y®Ïpr~n¿hÀe‹&ôþÃõÒùªðw_˜á°-ìº^…=™+ƒ—i·âà#ï|Û×.NÀ›¢Ã9UÕÍ—Ö÷†yèüuÞ|q·ðß7oó^ÞÔæÏÖy¹mŸxŠöºvæY•Cj¼@lüî“ùuÝlò­£TÏÏ¿!]Ê«]îCû|xá#Ïê ¤'—äáêbYÿÞÞVå2_¤ò0ŠjSb€[#*øï²*¾£2Ã5µÖg¼(`¿""ÉÙ1¡CsÁ¦mO›zð¯ÚúIj)B#†Úãk»ÙÐ3ü¿ñÿ¿Ï…°6È$œKÃ\ðÀÉ‚þÑ@6‡|Àšffú@‹}™i†$U ÍÄD‚3"MÊ…% RŸ¾JIa˜k‡ô~1Ék±.Àx€%¾ê¡’ õ·ƒ ÆæyŠE1F„–ǘ÷d¦˜w,VNëÙ~S{Qn!÷DJ¤Òq†9â6_Ž„zÂÉ0/ôiÁæs‹ß¡ 1SQCöBdàL„0rbŠþy‡ÔØÈpÖù»›ºíR{ä‚>h$7¹Œ+eéÔW¸`p57þnû½*GýCÎëi‡}#¨Ýá6Èòå®é º*rŒ~[_{`ú>Kú€–à5fÜÈ‚[;ÿ%ø’(=x"VžÂs¿Û†ÿÙw¾èJØVSmX=l¤Ù/ƒ¨,Æ?jGml(˜±#µÎ»u1Þv šŽâȼj¨%ëL£ZôO-ë`cYQã ~‚ž{a†±&¬lì÷ŽåÀ"ªºEv˜©™uâî»S/ß\§O t-°käU*¥bžT“ (;t¶D39F+X ¸ªîZ´S#ÞÅ QŒPk¦È ÔQdÐG‘AEÁhB_…“ø~}@̯ª0Ø•ÛÜäÍ :+×Û¶^Œ£Wª/F1Y7H\ %PQ¡n÷Zp",Mƒ'„­§ÅtÆ3îR˜‘áÀñãs̉Ædö2å籌sáóR/!ìýãX½Œƒ"~Ÿƒ#Ô˜2ÀuäH“ßýBÞþB>¢ ÒìP†ªÃ=`-·¯Ž‹ùŒ!$!ÜcýñgTJÔLÊê,5¿ L¤kt;%‹’æ§;ÑàEêÞ¹´}¤>")¯’ûšÚL*žÐl\àü<(âUìÅí6iC ³ãȃHcçaƒ°ÄþŸ  9p‘ŒíÿlT°&phjc0 …†Ïø{Å:»wÐéÙNîæ¾BšU"™è*u_²6þF}‘ŒžQyàÆ¢ØŸÊøïŠ)Uå$y1S{ ÷‰¿8÷Q®´ØU÷-Þ΄3¥Tw¡Äžr`\iîÙ,c ÷@†id E×:R®ä¼˵¾™û›¯Wý©Tï =­w;u?™¡ VrªN蟪ó –pj|ïa`­JÅ~²ÉÿSn‚7C¦NÑá†sM¢C¯£ã–õ ¶ríøÄÎ ðÅÒ “†‹áè†:%ùÁtï .Ì™ä˜Y’\î™(#™{%¾×òôt)V tôЇAU±½qªÇÓÙvrž ˜¤œ"±½ŸqöI¯ÐG9o6•ÓZ2 y„ó8B.‡ãâ½£iqï|7ùÞÎNSħŒ5>À¨ÕÜ@u@ébŠ»{y’dæã¨Ä1¸Ï’÷èº%z$ÛZ¡ã1B¨BŸœ›gI+d“=3‘T %r<ÛÞ¦_ Km$Gý¼fKùjÙ>IÖWŒÀI0Çò]5œ9n8ão2ÊA'ºª¦˜oÍÈ2蟦ŒÞwê=EDNx;®ôý̽÷âlê±yb×^ Æ`&›Æ4¾__0‹ãÁ[%ä/7'?g³Ü„K8TŽwnè_Ô1Ç̪ÙÅÉÛÔ#Ìjb9°N C–2Í-‘¦ôô’G)êÞÕ !En%&c4ËÀÆþ–æ@ .Œ²Ø€b9øÒ‹ÕÔxòè¦yÚ“ôø¦ïéñ°zÄkÏô‡:o0ñ¹üË7Ç>”PÇ^#FoŸ}q­|qŸœ /ÿ~SçŸyDÓ¨Ão+õm ºó¨eç¡ endstream endobj 514 0 obj << /Length 3003 /Filter /FlateDecode >> stream xÚÕZYoÉ~÷¯à&/Vìô}8ñ›E¼ØNÖ¶ °ý0GâÄbqÞ &Î:3ÿ~õè/O•š0JulruÛu5Ÿ¼þ²(îër{1BLåã‹™”júªZß-Ë0öª.êj³7/ö径‡ñÑ×]]®v3æ¨rSÁ.Þ_ýóÑ?®}çg*Ž34×¼«9c–؉¶’0!ƒò«=¾q¸Deˆ©~Æ«rû©º‰KÙµ¿’ÓwTÑðÕþ;´L_lDë¾DªfÎO4÷z?G¥9ð&Fr¯š1)‰¢.,¡F„éÏN-èyñ¥Z]p;ݯ¢ÖÜà ]_Ìà2ææ6®ºü¸/wõ.¬¼X.78÷3þ+çaJµëEDjç-®Ç°âJg’^Qq°ëlDhÑ"ÁUSNgiË@ ·§’cyD4úÈú¢ÿOöÀK8‰„S×kœhÚ¼‚Ž#;àÈÜšúà¬ÏYŽ‚ÌÆ:Ùd@V¦2nD俾úýõÕ«Ü hæëEìMéÝ»IPûºZVø„tF>/ª4ß"¤Š–š—ï(“ëäàÅ.ëÁ¨˜nÐ}®‡î“ ͲÒ(±¬ñÒ{osðIªˆ•¼å/¿ „m¹»÷κYï┺Z•ÙðB{xqêÝ?ò©a[ÜE'_Çtsf†I“LÎSïÍ7AS/¶›ýÝâ~_Ÿùº{zò}uYÌ¿Îvu,bz¿Ý\×àˆ5Bò5¥Î¢nÖ½3‹m‚psˆÔxÚ=¡zt¢ûgS]Js¨:ÕÕW/Qõ ‡èåEK¨£‰„IâÚ\Ó.Åâ’ã›ÂEª4xÙ´"%¹ ¡Ã©ƒJj`Õ‚0Å‚¸Î¾n±Jñ»_.1‡ëë‡aÉ…JX^°©‡Ó œ¼ñœáÄÁ18-'N Òû€°Fí!˜(ÁäÉp !×ÌõÍr?G¾æeŽªìÐè|›uăÜLÍ|!â[hªB΃l )h¼ºÝ¯owÄ»4zó2^®êE¸Z–;ÿœ!~ñ·›ý6\Û»ýªô‰¨Þ]F˜\/ûA”m€Z|5/rÀ åAˆ_È 5D™Fd`]Y‡w„³¦HëyVAÜöxÜb\šq“@ˆ)7VÃ×}ÛÜÔ›mLÀ)-·i¥X¥P©þ( ›œþÖ$ðà*~õ¦Ø•—ƒð‚r³_¦”õ¹Z.ÃUÒËß|Bÿouð7Ì÷–Ë,—@jnDUÊì)m.w›Ç9„$ÖÒÆ w«»ÄÿÕúÖ®âk€BâãÝH¢ákàÕÄ ¾,‰½˜)-¦W‹™foiFtˇžÃd õ_Ét¹zò,÷2ãˆR/¼ê$ôþR€þ3Â0!ÀylÆ]úY‚s"iO‰ªh)@èÀ¦O²>«¶¬8Qêcß7"Æ;™”G—`à2«jYlÃ`½‰Ÿ‹‘t¦ˆc¬«©@MUs™‹C ÊBø_®êvTO>dƒGê)Ý…”_nÊû:éªK+€t­pý˜ÊSiClÁgȉàÚÞáa ÚåwŽªÚ ’Í§8Ú@!@.ËQ~iˆè6DMï ¨±bðò¾ h ¬1g :‘»(¡²Y(¦ë¼;ûE|Ämƒp¹(²@YÈŽ­<ÑUuu¥tDWÊôQÄÁд®²ÜÔ»ŽÂ9÷ã¤E{~²“ . ïp«úžuHV°'÷Ýxá#1ŽѸ^–¡Ø ͉À– Z $_^ÐÛ§¢TaQÞÓjY¾o›€T©“„¸†·--j'iÂ[x_çÄà =(˜}h£6û½üB^|!oÆ„˜ÓBx¿¥Jé¿è ]Þ~DÌ{ð,®°ßÄ_ÚbÖÓ´—Þ-0îÎͽÜPŠ3ºn‘ëNP‹•=ºÈ;í®F³EæˆG_JNÈiûöd<ËbÓ5oÛ ôƒ 0âã‘ÕWcYM#Ñ7®%–»Î.Âq«*E´ÖçX•ŸiU÷lÕo’±þŸ=åÑ7ânùfu¿÷  •ƒÍ(îdÚ™1qg'áÎL|êó{d ~sŸg™>@¦Ÿ–î°¹rÃNpwÜìðC·›øÕ"WÄhßɹÙHÓ”H)$WtÀ q$”7,§Ìø³ú0Aøª—Õ¾>MÇ«hÓnãóí6’ó¶ÅcDšºÌžõp_1ÕrVÿÒj;Ô ZÜH.•$†Éhv°˜žâ' ^P2 ƒ»E± í7Üøa<ò_ÊùlÀÚa‚gW¹pÓŸ½ ðbÝ™ýPp§C«Í®Î¡$¸†VU'c}ÓëÀ4FÆÚìÙøzOK¢´ì o‹…ci“"ÜTq0ô¬.¹á%vиM’vAâ¤Í.N‹× ³âØOi |պ̘Ÿ÷·4Æ t¬âLGÆÄ~–ê>žÂLNĜ뀇gð›Ãu.§¨œá––Æãõ·ïédA"œ|öSW¾{öÇ]ËÉ«G/â)|/JGà”™²rÖbš¨v¯î‡Ü*%˜Ä_“V ]DæC[÷ÎSïÓ>:ÓªÛcáeÕwŠ0÷09§7‚þš+&±3xK$rŒÕ¸c0Kýå1ÇÀ…íQÇaR3,ÀÏ­N?dÂX!Ñ]‰I °ò‘Z(ø,›Ê>ƒ¥ ™ÿ¬¥&;Œ¯4Éʬ´ŸŽ(1F"2Æ2~—ÒÕýŸ-@6kgṚ:¤Ãtʇ]Ø`O’‹Gf~‡°ƒB/¯~ØeMÕjÔÍB&õÙ˜‚˜‡–¿ü&#(AÀЉMÆ û«9ê ¦ê–ËY$B·Í|^1ôÇ;~ÿtN3´?AðM©H  Úí¾EØëòóðd¹)¥*šöYÕylÊ@$r)y´"Ó|EÂuí©TW}ÏrPéU¸Oë+W÷M·Èêѯæ+}ªÜ4I3C>w×éÛ?Yï  }“ä:lù“m¸)ðØ §µUÈlq(ðú]îvÈðñÏ:ð«›uù8Üг°B×ИbÏÄ#†”d†Ô¾û/dÀ \¬îÍ }ŠOn–oð` ÐÒ‡’¬yÇö¼K² «dSOä……ˆ½†¬åÏwUì²ŒÆ 02†0ÇÎt?sÄý Q]?Ja–!<Rÿ)$|üõ!4›‰‡ä’ùL@éí1·7Y3`G f9’ßfZ€˜²‰?4*ô2ÕO ÏÃbÖypWßkW?èÊtxà ‚Ú#Τ mâË<–9§º„ïǯf§ ûÍ Ç:blœ±ðÓÇAoÅ¡»ðÓDî‡\N¦ S9ÊëÿîóÀã¨<írÐcIq–ÏÉAÕävpp&{…¶›?²|¼9¨Œ,/ØÄÍžAÜ„”ò žämITÆ€ß@ÛD mªü€¶É.¥mf~O)Hw Œ‚ìáúsæM@qê0ì8x{[ó«íÿ:ðï2 endstream endobj 518 0 obj << /Length 2143 /Filter /FlateDecode >> stream xÚåY[Û¶~ϯ𣠬Yñ&ŠN4g7MI›]-ækËk¡º8’œdûëÏ Iݼ²½‹ôí @L‘ÃáÌǹré,„t¦Ã™âœhÏVù‹ÐÎV÷37¸yý‚zº.”?/_üp%匆D‡šÎ–›!«åzö1àlþiùëŒÇšÄJ;ûyŸì“´¸Çµ—ËîÉØ%AÊÇ¢¨¡(”Æ$žE± ” wî›w¿XÞâ©?\ElH Š!9׎03ùÝÚ8±‚R‘¨UãeU¥_æ2 L6_p.‚Ê4 ŽxðW(és"NS-ƒÑ1ÑŽ Â#ÞÒýN‰B)0ãiàD:uâ‚FŠP!Ç æûsÊÝ&Õ—tåÕiÇíÆŽuôHXñï($‘¡v ù›ÍÏ©ónŸÏYÜÍðR9µÊSª]çv¾>}}Z%»ëó‡‚êC¸8ÑëÀä$ŒPF[*:)üÐPŽc¡4‘‘_îõ90Þšo©…@Y0&‚ÂŒbÌ!„U>[7µû2YV"íW ÚÚM¦…ÛÒl7Q?ÔM’_À‡°ºÊökôy»ÖlË:qôþ@¬'rB%u¢vW³>mÔ‹:¯Ÿq3c>ã›É¿ãf#BÅã›)¾ËLûKÀYÄ-ÞchŒ3…Ýá1løqÖRÏàsÊú¯a1&žjâŒÇðÁÇ ÿöay&Ìû ñáY1p•€—¨ ioeߤYúiÒ²˜4Ëh$ØÍwW%õΚEYÔž¤Ióä‰g¿?›Ì|4÷Þœ&cBoŽ|dŽâйwÿ3âù›øó»i¶U¹¿ßîöÍÁØ…gÏk³~XÔM—ÑwUygîàÊDäÁ)ÝlMÓ©]yJSµ–jýVEž*ûõódrBv!™——½ì8DÙ{=òXH|±']–ŽJ–^gd‹:»3ý9Þ8ìãVJraãÿ‚…š°0§ ôy‡>b9§G½em±öƹÙgÙ Šœ3Ç]ñ<Œ×%ÄI'¡YŒqx ãôÕâ ¼ŽEˆ!ÉéÇ#W›~ÝAnÐâÀDè .£Õ|Aƒl£u›pTSGÜîxûüŒò³3W›‘däÑ ß`°Õ€½möÅÊKûÕή –°¹Š‚¯)ܣ͒ºn÷¿ã¯ £Ü·©î÷¹õÅ¢,b„©hPm÷Álººçè2Ü$ÓˆH5¨1Fñ†X賜ⓕ$ʈvò›b=©%%4ùöª‡dø”$ã“z(¸·èðÁs,ÒXÕþ™è Ry“ꃼér›ß8Bÿiv»j.¡†ø–榣&‰®©¼Y`‹Ô£WHïhâ~Õ¸ •€:À–ÜýÀBÇ¢AåmÕL=/ÌÚžfÁ•|4£õc½½›1_kà`ÐÛƒËê`cëMKáOG«a´ámäéh#‰ Åè¯X®B#õ¦hÅr Œl»·ë*Qæ1€ß®µ’*iK%H]X ê’®'<_Aá@Ïõ1ïd}À˜ÖãTÄté ­®Ó;ÈV. ‡gƒ°uˆ¤rˆÝßZì¥(×kÂz÷#|ã/ƒ¼lg|# £²Hz~óîaK´ÖŽEgš™»,¹xüî*ûç0L„p¢ÇhüÃiE-Öe*Ó`®â`„Ûgè)ÝÈÿÃ_¯ð¯ÿMµg endstream endobj 522 0 obj << /Length 1880 /Filter /FlateDecode >> stream xÚÅX]oÛ6}ϯð£ Dœø-ËÃZ$Y×¥Kbw+ÐõAv”Xˆd¥’œ6ýõ»—¤õ‘ÐiÒÄyyyyyxî¡è$‚?:I¢‰æœ$"ž,˽ȴÖWûp~¼G]†áÀòå|ï—#)'4"I”ÐÉürèj~1ù¼Z¥7mVOCÎy ^LC!d0Ë×WEfÛfmÚæÕÚ¾œm²M®ë®i³²™†4‰dp>ý8ÿcïpÞÅ#{bàhù rņ‘S“x¢bA(6ørñ2áL kUÃ*!‘01þ7’Qÿ¨3¥…Q¢#º5ÍaM‚Š ]eø ƒ&«oóef[ë´uOÕeß=eqy4¾Î5à;ç¾ù9Ñ2ÙZìƒW.¨#gšh¦û51á’‘$¾?ãØQL˜zž›ÒxB¤î,È4T±æ]Ú @l®JLЦimÏb2dèq2.Á Ÿ„”*­«¬¾ªÀ&.ò¥EîŸ r„ Á`P·uEZ..Rxæ¯Öa³)wùäŒ0ͺ…{ÑE)‹]^`ÉñvIJœ•Z…4Ö„ErÁH¬”5ÿëÝüôÝ|æ 0r–.[ï¼SkÒíðo77u…;ð%/ |Mà—õ”·˜d¸öe¶FÓŽ6m^ä_ ì{aÇ$á|½Á@¶”êvàÀë†I‡˜”;<Åýiêw&ÆDª„ à8Ô‰µ;uFÑD‘DÐSd& IqÌ®&IŽŒ„ÔÓn½tÇÙ‘K-Y·"å‰B9ìÅÕ£ Á)`¦·€iŒ› „ ¿ÊM~þ#¹ˆ<Š:Ã*ܘS]­cü™—™7B3± ºý9û®ø l µ, [lBf¶}ÚdMÛØxrWÆ ¯›õY‚zÂJWâþ d÷-¸—IÇlÅaÙ çc¶:?<:‚ü}ìÏ-%‰”vE\1£î`~èno¤@°¨ûXÝ·Ðýžy|ÀÁ“²›æ|—õ 'g?ÃÉûXN'ân"Ÿ—ñDaÛ™n4?€±«miF÷ /ØC2ž%ˆŸL“¡\”Œ]ˆ†Ýïòõ%½½òùa0®žá‡¡xgü|SÖ… ¡Æ†ã¬Äb¬C–T C…€F¨\oj ¯uzåú̸_à± <þöß,ë¢_[f¡Z@@¶ ÓùäZ4"c<ÿÎ?Ö¯W=n¸²•‡”XÛ¥%èÑýýÍŒ*2ÍyÓÖùb³%å ¾æoŒÞªsX‚[ù…´ÀdÜ9s«ltPféÚW¹8>ËxL’¯¼<÷(6&uíªN?«)_ Hw]s[o#Òl²eeÁsY•™‘h­/¶«ˆ|ˆÇµØqpÉt‰…–q©­T¦%­]×"m2‡É.ü7Å6Ð˺B•%ið'±-o ¨êµ-½Fd\{Õ@H©"‚Åã (xðeijž˜™«Éãµóo|±c^ؾn/¸UUQ¤Ë¯Ùuøf•¯—Ø¿®ˆ¢60ʸHý×MÄH޽~ûÄËæˆËv«áE•TPÑmøæ³É“”ö€âv»w\ SÙÜ1þ”‹{vùf[Hƒç¤GÁô¢;á||Â};á¤÷'ÞúgÜ,]Üž[ýÓRuþCÓ9ò»ëásvéìÙpðŽÿëføhbúá¯Ê’Ù9ßi]-ÒloÛÕ œ'mb€Yu\ÑoŸ4¸~¿ó2®&Qÿqö95ì[¾Ú]EGALI/SS?:$á‹vReÙVuc{ ² Ãbš´Ü>å_3(2n_¯¯v•»qK(THñJôC•*†‹\QX×ÛLN4T!5Ò-ölcÂítûkn§YQxËÒ è&¾û.¶²_¢ðÛÿM€” endstream endobj 527 0 obj << /Length 1493 /Filter /FlateDecode >> stream xÚ­X[oÛ6~ϯУ D,ï— ÐËÖÝÖÔ t}P%Và[-9Múëw(’2éÑMŠjŠ<<÷óÃÃ?R\(Æáº˜-Oð°»½)Üââ÷âé* ¬"ÊWÓ“çB#ƒ )¦×1«éUñ±d|òiúgÁ´AZà2ì~Þ5»¦]ÝØ³“ߦ£Aé5±”ÿSEÓ‚pĸ¤^©9"Œ;¡°$“JHZN')ç•þâœ`ß’I#ƒ¢oà.Ïþ¤…DF1m …%hBÄQ/³RÙ™#KµUSÄ‚žL‰òÝC×7žiêfÊÂ\€tîÖÇó‰fån5ëÛõ 80Vž·‹æ“g BbW1IÃ,Hüèˆ@—ˆH"ªFW¼Ï±±*PœæxŠ„Å\c"¿ƒÉÛÁäÃ`²Á9.)Í'H!* èÃÏçn9'ž1Ž#*á>§áÒ¿XàœxŽ(9/êååUí501SH ýMCD4u¹ËqIíxœK½ØÌëœmŒ ¦cÛH.§+JRLaûbùu½ÜìúfRQÍË]ß.Ú¯µÍïSØ1¼Ü6ÝVª\¯:OÔ·ËÆø@ÁÊz§wªËf[ßxš•ýÞ-íÿ—vÎÜÁúÚýnÀ¨®ïÜW½ºò¼çÛõîf¾ÙMHÙ»­ëµ¿Lg±Q8µÆâ Ïã T²4@$“ œ¤ -š¼ì©Îr¾ˆ‹M ºMФâ\”¯=@ôó¶‹OÃvã³]ׯ—Ö;M³½kgþÈúÙßGNö;vý°ñ¾­š{·\¯šÁõ}[/†ÆP1¡ÞKNß«¶ë·íåΆù§œ†¼Ó.þSëUÎiš+ª„]RT÷96€ Œ'ù )§ƒëÓ0RűµÑLº‚) 2’J¿HÊ¡y­@J˜a(/ð %ˆÏíÖ‘ñ¸¡‚ÏHÖ_Q¬lÝ ¢‚„eÚUš„·9@+5*NBëÚ šˆ&q0ÎÔ.UhÌ2R Ú(Æ‘ÍnÏêÀ@‘½8*= …»Fæ´×œÈ4*12íïHYÅ÷D÷ùBàg•(&ȱ,ñ3‘ xB"©ò—k&‘`#ˆcW.ú„˜®`üØO6_æÍ¶ÉÉ¢½[Ÿr˜JpgÀ  ðo˜¸]_Ö—€Ñ½Åƒ‡@P÷ ) èê>#>€Ë€ Wn?Ü‚¦Òe­£Â ®D°ï6B¢¥bF–íÊ1þ2ogVàÜ}ά˜A“Þ͆àdH_ÌLŠáµ½°L³}_‰’jZnëÞ¯ÀÄlÖ ¤e&YÓðÅžV‘Ix,ÎC ^^÷®µÑrfµ…nºhzð)o2*×½û=ês"5âD—Ï©¡¡KÒ²sZd™sÓúãñ”¼‡´¢QZ¹ØqšÊ¤³4÷mß%ŽmÑ S‡Í["â«ìõ_ÿ¼Ÿ¾ÛOA)¨Nuf.Kµ‡¹,(ÿr»mï&BÂØäÒ%ýn%`^ƒè2¼ÜdÒ® Â"îWøöØÐíJìKÈ–"7®`!ŽçˆþÍPÁR@1f™åj-…ü4ŸÓ ©_÷ÖVzv8³4v8³ƒVÙ’¢lxÙŒsmV/èŠF&g<шʃYtѬnúy:›GÙ‹#°Í:0â±AX@çëeS‚€ZÑ4+Üü -BˆxOUÐv–‘OË Š˜$7ˆò¹‹MöÚ‚½;µu09lŒPo?êíwíÏ¿õ ƪï€z´Ð$) Í[­„#)«¹9´M¥¯' Dä %þ~?} ´Lú¼?ŠWïâÙfÇxˆvxD³'BØÅ³äùgŸöϾðy¢ì·bsü^´ñËB’•j!É)Þ‹–¼]<£ºè/9ª÷áY®Ÿ¨}øëÚÓž¼Ó endstream endobj 532 0 obj << /Length 2917 /Filter /FlateDecode >> stream xÚµZ[oܺ~ϯðãðªEêr‚>¤A]¤=HË[Od-mëD+mDm÷×wn¤¤µ6ÐSÈ’ÃÛÌp.ßPN.bø—\”ñEž¦Q©‹‹zÿ*&êpÁ{•ȼ-LÜÎfþåó«?]s‘ÄQ—ÉÅç» “$6ý¬Ï»‹mRsùïÏõ×Ïa'£ÔO‰3ŸY¨‹$Tb4ž \e…Ž’Tóqærk2µùp¹M6G{´Mw¹Ms½y;^¦jóx™&›~øâ3ÞPG©ÎnR¦YTÙ.JxÃw.‡vK6»c=6}‡;›ÍØóï‡÷²áR+°aRF‰}|\©"ß¼ŽT©œ9"êo±‰?¼‡ÿîWƒÅF±©¸ïšý¡µÜÞ÷ø»ÙÙ6lÚõcÅìao|¨F^]WBº¥%²ÁÑÙÌìå”®jŸþã÷‡E0ù E#YÒ(1 Ëò¥évÀrš›þŽÝ“íÞE 5]¢ÖˆÚŒ29w#÷îúa…ÊËQ2¤|x/ dþ¾ÚYl•x)7KçÊUyé2ƈ¡¬]\nœ%~Š³Ã·¦¶¼}m;Ôüh÷(…aJ”µã’n2 Ç}Y=.Žâ´ðS*‘¤"nuœEy’ˆyÎW4 T0Ôw­G¼ì¬pQ‚}yö<#?ˆÊÆ ‘É 8"ÊÒüœ–Q¬ôÅlÚÝÑ«¶}â󛨣©«–íɨC$ƒÚð¢òfšoâkù¦>º±ß[ô¸Á1 ·,HêF7mô{ßt"éƒe%‰‰L¢–†&RE¶iîø°W2$±g›ÖVNš}'Ë\Û ©Bο]h5muÛZA«róQ¸“Yƒ_èeÝÉ@]÷ÃN|-ŸÉØ3 ‰¹³(àWïç+~s ÿëÛ¦F=«Œ–Ùè>Bg€‘ëw×h–ÿÄ}"žñæMšùÌ‚¡S÷èP£u²tRà(h‚¥ewG*:l×ÈýªÛñQ&"·Cc=ê{Mo¼i  õÆ~oF¦Ü ýž[|, r€ˆh+ðÌRkØÏ€óvŸ‚p¦˜9£cÂ#]úªcf‘«ù9§È~àEÓg“þ,ÇéÅqITrZr&ê‰öSÈœH$p.0%^PÌè2ÊLˆÏ+4Ž"ÞÔ—2WGZX9(Ë"­á¾²4ÌiºßâDwÍhy4„3{çÐM颯'uƒ.Ûȵ``ïMÇóèF™,`k¯‚M b:´XGÕ>â“Õ>91«NLç™çŠEC–}]Ïœùòu‚Ðëìdø0 = £U}.“ÃæY âî%>B§ÙÙaÜœ šÒ yõ’Š’ÐS<ó+^ >  @Àîê§Õ›R‘ŠCbòŠ8Ö¨ò9Õý"+óùJ>‹”Æ””GEÊ\£‚Þ^Z;ÊäQ8èºܸ} Á~ËÍOS¸\;‹ÖÒAJÔù+œ²½ùøÒA¿VçιbÝÞ ÖîcbHüѺãÞ¾ÀˆH|ó¢¬7C­Ú:Ç¡.Ý|z¨ ò?!ë»Ïx7÷MܤAJLkñ/Ǥi^ å˘ Jˆ³Yçâßì¸ä ‚¦ŸÂ™Œ¼)"× åÏ@1ØkVNàÁcãÂccôS±¦<ˆ]s%¥!&†àÛ8‚®±© D8ýBøTQRQê¶w7Ü­îBåóˆ©c†ÁÈrωßv"§]Иߩ’èþ3A’@‰Ã±eÈO*V±Žža]Ƽƪ¦™.ˆ ó¬.JNWH¿·*£Øí£kv2FgSJÇûB0o0|w2_-þ#pÏЇ&h’odOƉš@§9¬Gj(1è:ð8]¬(gˆBqB#¤Š»¨ÊX$Mæ3M‘ô¦¬âçžehI ÈÅóWåz }˜å,Ãe^ްÀ1Q4–(ÿ8XÜ )ðOKÛʹÓx²4y•æQNØÉ”a14'tdi H1àš€+ÅV]Ëçhƒ¦!BC.3ja¿Ã œ—äú9‡ˆ‡KRx€ãMÇ…,Y(\µ—Ö ^0a½UIÞ'Î;ëîìf3ÍÕ½ÇÆ÷†­|ÆÞ¡ œ+[…Ó˜ð/+wdÀV&p¶?¶cC¯i™†[*õ ·”Ä9tå’åJ kžB6~¦Ýah²¦\Žâú£P,kA&>6ãÏâ õä¡Sx{[É €ÍX/Õ1€®þ+µ,“´ßv ¸r ¬s½ÀÄY”È­¶Ã.åïs sl Ð9 ýmu‹‘·mÆÆ6¤6¡è®ÀJEº9¨º}?ثŵzÈÍé|v€q´9óÂé Ç=CÆâçz2z¬S&!hGµΖhˆsø"ª¦ó8Z€ø¬DDP=. ´Í›žÊ„ z[ Qr=o°úOç&M} ›x(þâÃþÎD½Z͵FMìñ0ð% >Öã_ŒV‹ À:Ä«Ó<ö’I‘arx"¶QÓc!Þ  ñ¾¸î= lQê³|•<"œX“úâ4 ¡¢ïŽ-æˆrK}ßõmËNêÐÞ±lßyȾ„_Ü„Y$ Ø9_uoEeÐæg&q˜––â#”k°…åüÈêÈfv¾(ºõ¢5!¶ÂÛÿ †¨.GÕÁõ‰ö–ÅÞ®q5D®¦³âרÖ½sñ z³ •”P7¾áë^ŠÇ‰›½ûô‹ž@TÆq ³^ãk)ÓBqF½Î#Ç}×ô½é©v°ß.vþYñN=Cs{$¬‡“évq„.q %¾=Ly— À.ZKdÓCøÓò!\¢ °zó¹zs-†T(˜ˆÐù¨!ËÙTaàüÐZIî8&ˆL& ǯ’ÀýÄçl¶k°fÆ>ñ`«âŸ cÕbÏ@­zh1±ÕGqÆ8TÃI#3¹$ ˜5Ë[ ù†nw¹AÔíèµCgºŽµ”“'©fRÕ•w€Ó‡¹séÞ!ŠïCàåT0¸“ñ°ÀîgO™2°d’ÿS$(ç'•xÒbÉÊ ó]Î<{Ás¸ËoPÛèù—M"—àV²^¸É!‘—ÊÏiãH.)ž8,9ƒP)Ç‚K¬Y=²)€tŸKw‹+âŒqn™Òãs©Ø™°Ì©ìÇ%;‚…p—qm™N:ÄëÇ9ìL§Ì“=’G¾n¹-‰ŸšU·&OÕ:y;Q^*Ê›=¤Qž7X”7™°/'ôT䤧GOÿ›#½Œ–Å"O–ke)Rgþ˜@ÁŠj)Râ·¿¡ùvi°>âi‡aö`iÅ‹Îy ÏòAùêRJ%ÃKhïìdo~âbJãÖnñ†Diœë»+þhà±xz°SZ{³WidÊY…¨ÌúWª¢œÕ't™þå+Å©ÁH/ò¥CŸ±#%IA¥ÞŽ”f ¾XûìñAkE1¬P.]Rü ™.â0ï Oõ„%k¸‘k}æKg¢u¤òðPøöŒ5¦Ó³—ÏØ¤š).Ãy³ëã#—†À¶Ú {RèÔ?e<û «²(SÅËÌˆŽ‘«ý P“œTÁýq¨Ÿ6çšû΃Lÿ˜~†¥$M"5}:Ç’š¾ÑLõÒk DpË>d,5”¦!Éè)+¬…¶¯ îüs¦À§páA4ŽâB-ŸŠWJ n¶òÂ¥äïp¸gÔÓ#8JÝXWG'7Új÷´u#‰€ëÄL<¨êj¡îm厃•C|@߆Bpva Ñ-DˬnDJN¦š¾T"ºŒü߃übÓ¸ endstream endobj 535 0 obj << /Length 2999 /Filter /FlateDecode >> stream xÚµZYsÜ6~÷¯Ðã¨Öƒ%â°+»©$åM9Žme˵q¨¥¡3jIŽå×o7 0‡bo©JÄ€8Ý_è&=+àž™âLqNŒÐg«Ûg…­ínÎ\áÝϨo·„†Ë¨å?/žýýû²<£1…¡g×ñPWg¿.¸<ÿíâ_g\¢•Qlíwõ®n¶7øîÙwã%c'®[>ZŠfgT.$óK‘ZÊ…›´$ì|YJ¶x3oêó%WåâÛMÕ÷®øº…'[\Õ›×5ßlB™ßØ«-´¦Å¢ƒAyåƒâ- Æ´ì9Ö”‹j³q¯º¶ß¾aÕùÎÍöªém×ôëê2ŒYm¯\áÒXoZ›­Zÿ\û¦}u/„œ/W‹‹uc÷c7À -Ýúoëj‹K( P X*õçsœ£{p/üJÝ»u56¯]ÁÏï*ìæûV7¾²¯»ÏÍÊ·šÛúy¼#ìµ9§‹+GBÖ =7 Z„þë®Ýݬ“P··ÎýC?Ô·X‹ûfX»Úéµ[.¼„¡PЮú®k/«ËfÓ M 2s'¯æ'/ /¥›ïõx´n€WÛ»ÝàUFòÇ*#Jæ:~,XéšQPMbר †–ZÉý ¿çô¯¤„Aƒ¨ÙÇ¢,ÞÜ9µØºµDjç*ÚíæÚQ÷ë»?†ºÛV'†ªëšÏç¥\T~']5x YÝB™g?ðI[<&·a¦©ÝLq`’Œ‡$7Ê’ AŒVVzPžKo&Edn&!u*¬˜$‚¿Þ­EëÄŠzþJD„NDB+"¬±ú…… ~¶ŸŸ¬rûu»©_ìS‘H—÷mä`F±~ã•È@µ‘LbJI ¦­ˆ*ŒkõsFÕ`Ä’J˜² BÒäÒeI¢Ø#êë¨.œfÁbÍÍ;-)(Mý§SÎüÛMÛ×WYxà€3£ˆÅʆÚ!˜UèÝ-þ÷ÛyÛ¹öpØ#Xíw/›m/Â~gv½É¶Þg¥)µ9 RŠš½,Ç•«É^ñb®+!¾ãsV˜ºÇz)¸SYê/´^PAJC‹/ئ&x1·­uØÕä$œ×I7]oª;«øãºko3"ꇪ¬Sˆg„‚ ¥¾å1ŠÅª½½ÛÔCÓz°Þó$|¤pv‚•G%Ìã#–Sˆ>æìì©Hí³yùiN•&q.ï‚ÌD>7÷€Ä(N5tÍYI`µàçÜ””?‹0 ÆÔ‹_³R“„Mè÷Eûyé‰~s{iÀ¾{W¬²Ž éëxn?ú&"µB¥™P©`Ù½ÀÜ…™ 4Œˆeç¤ìŽá~][ÌÁµ#¦_CB¨ZRÏíƒvg-… E3©¥ W° ×I'û(A*#0Û…¡UÁ½é¼D jÚ,ùÕDèÚ.72*Ĥ¸v8`/Có¹vØkòÕh¶:ëß(¡†F£Yÿ Þœ Séýt~±}³ŽÝl½iü’U_!ôIl––‰Kþe4ü³òüªÐއÃ3 (h§ú•-§³:…h“–aøÝ|Öq([‹›…»èás¯»jõxé–•:šÉ )5OœAãÙûýºYá¦Ö3¢ÛÕ}»ëgÕ#¾Üõ®„ Üš<‡ŸFNýFïÒžàs¬­­Ð{P ¹(ŒSË9^]GW‡½òæRƒ‡Så½ Þ`×dÌÃCûpÚ2Y9¼m;÷ÚÞÒv›¡IèÅÖíèÊ™Še°u]‹œ£`È>Ud(Lìakx«.kyö23wL†³4vfœÑ¯dF{œ¹C0Ç”ðIéÃ:oÁTÌ…¬è·nôfkU»Ï£0 O+–;\=œÜÑ*ð'·šøQ!Iâs„—)¬\ÕÛvptI.ûá«'?8¤¡È2Dê-ÀþC–g*kؾ³‹rÂT8@p8ápÁ-Y‚UŸÇ²8øsD$‡üð¤„* $Òù™é ÜÌunºt ŒúÐxº=Á€V>|«—qîo÷¬ª¾žÅfR4Ç QØ6üðÜØ5½éB¨§B èø6„Së=”‰q¸Ù‡Ø•?Ïw™ kÂ,ú ™Á0pˆšý#‰¯ KõwôÚmï«\ðƒ»2qà^ñ™¦=:=ú¦,f&´Ñ„,TÜZ®‡¥°:$n¯<÷v[€qÔ2îØ,œ?S,DcmæÀVX’ˆ/Üc¼%1åt+ÇÞ6éäÛ£qb¡·' êã®®>ñÄùÁB2!šôÔÀßÛ¬NHv&iT£SzO,Sx""TœgÚÙÔ¿ùRÍÀRùéÚZ¢vø‡Ø¹Úì®j?³[]k“4B…ë«NÖ§üúôz ˜»`G>ɬ ÅYÔµˆÐH®¾>–箾§žÙ“@ðÑ™•2® —ÉfLÅ[jÁbvËÝpDA8/ŸÈnE`·šÀðã4!¼µÝ~·3û˜»US7}ˆö·Ñaûâ¦qµ!Lß„ä_ÔÜçu|Œf<õñ:ôC<‚÷1~ŒÖÞŒ|þ°ê `<¿ÈÊ«ö¢ñb¨®®[ȶù™ÿ°aŠÁ3¥Ç Ó,'Ë)”NñÝS”Ëóø _ät¤06JW˜–OÝ#IQýÅ¡¾ß‡ú„ ãõqêã‡I¡ø ŒúIA¹y tÓ*KÉçí±M‡ÞßÚÃ7†«&®=c×Á'èðÑFV F*Åh]o÷àM)ê³¼üë„{¿XØaXþ…\úKGò€@W!> 7øi7ÔB‰·n‚s­¼£óqXÿM× Cp¢{î§…²±ÄƒÇ .Ë'¸…Ÿ²)6Fx.¾?_O Η€iÿÉ.JÊèDX0k!YêD¿?G…î\š¨u·®z‹~]êé °Bò_ÁÏÛ•ÚØ@›ï02 ¬oUmª=×1ü£ŒBTÙ/C Ì-´š‚2ä„ 0}Ób3kñ-ÊæÂÙí]'iºÞ‹„QÐRšÏŒ?úþa)D`š'R>åîÛ3ÚçÿY\¤òiòS>"¢ý7¾U_ Mý0ÛÚu»ÙX>w?^"@@6œ¥`K††Ñu. cê¤eʃËd,IÉî7 9K‹YB)­È¬‰CiÔ§|Žî¡:YÏßr ‡D9Ú¬4I¶;ç%'³\@µÙÏ ¢0£ŠÈ¨I’ñ0½ã©7)”“•>ɉÊdºý›iž˜Ç›éu9Áö=Ò§BÍ8ÝóÝ„™¢™à'¨T‹øî¡Â㥫ü1|û?›K­“ endstream endobj 537 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/home/moreno/research/software/octave-queueing/doc/qn_closed_single.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 538 0 R /BBox [0 0 172 133] /Resources << /ProcSet [ /PDF /Text ] /ExtGState << /R7 539 0 R >>/Font << /R8 540 0 R>> >> /Length 763 /Filter /FlateDecode >> stream xœ}UËnT1 Ýç+²ã!‰ór²¥P6,ÚÎ >`€èEj»à÷qrã$½F•z''ö±ã8ÚjSþÚ÷¸¨w7¤oŸ”²ÞýWÕ}}óIap lÒ6;ÀõÒ̬Óè£ä¯u`RÔè"oc_ZòÕA,0§êÑÚR"°CC\"v°Z|tÕ¡EhK¶o)È~K°»o$ÕÚw™xŸ'a‰2„IY2…WÖCY·h‰w†¶–CšHàR—†è»Œêµõ×-¤ü°ѱª Ödt=‹k@p>q)}4K†à¼vc$Y• ̼˜lµoY =gÙ²¡8ˆ2X¿,Jâ ÒÒkî›ìWIµ)‘,ÿsÎèÇï*SJÈÚ R(gØ‘˜Á¸¬ïUJ yƒ‡#9ˆ±l2É–£'FîÔ×·ú ȼÞs"|¾œí¢"÷Tư3+°™&ºL\4 ٫ëA–3yôTϪæ¨bœTÛ”€ÂÄT»+Ú!ZîÀ0qhÁÔ`MôVâÒ%g‘8Y¢P.ÿ:;)q4aaêˆMr=FN!'Î=xSÈ1FÈÜLãpºM鿜‡H$“ÀÅy¬5:(lцírP#÷\Ì3RJ° ¸œKª'~ºÄe¤8sGä˜1òEa†QMŒlýTq±yqÎ'&û¦(«¤-Ár&È|¬Ò#m*/}ö5à~ Ãö0Œ¾Èà‘8ˆL2ˆÓ@ÎyLŽô "âÆµ”Œ«Ûm¶#äÄ3Óªü|Ô·,×ßís\ôû?ìåmçø<üP냚‹Ë9ñ|c夋zm€Þ~1!ß4kØü[Á\ÁvžÇr°¤w1p[s2eój_öräúzn9ñ²syqY÷ø-3Ü$úð¹a¯Ô®<ú&û9ÊÅÕ—ÊÔvV¦P·>ü|úe³þ²•€5|TU­©T4\ïŸeb«¯c¿®òµúÍÅo endstream endobj 542 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1750 >> stream xœT{PSÙ¾—$÷žZ6*4BHè®v»¬ŠZfQa}¢"Au ˆá!$A„„@€9Id €<–ð~—‡€ vu‹²VquY¡ õÙ®;Îì¶–îN7séL/kgÚ¿ûß9ç7ç;çû¾ß÷# ¾A’¤{TŠB®^©RÄ+—öï2>$ãëÆøñ°ÁuÄ"`$îvçaw~“/âí+Á¼2W|’ Ú]óË#‘Ñï¾ÿþ¡ªôœŒ”¤dÿ†€Àþ§rüÿSñ“«S’”þ¿àZyš*]!Wj¦(Neªý|Ö?Rž”™Ÿñ¿gÿEûÿð ‚X¶K‘"K=². pï‚b5±†x‡ˆ"‰}ÄF"œØL,'V„'ñ3›XÁéAð -ñ‚pÛãÖÄ åMóCù üBpTð„Zv¡k½aŒùÇ0Ù ˆç"˜h‘ 2ZªX›kÌÂ&¬·ëË7ÄTžÄ[ñ–´Q¯Ç¬bã@Ìú ¼ºôè¦$ç“a{[°8ËœqCQ¿K{`ïK@°æÆ5íéaIojªqºñ ólü~¡€äÕ¯‚A þ¡ïÖõ;Ÿ~¿Ã/”s²‰Ý_²äë‡Û’MÍUZ·£ÅÚ²ÓhÜnFÉL‰zª*Gÿ<•›rE2wddf Ì.;´íä1åaãFŒŒŽ^©ù ;áæ8†È¿-ð5äŠ@¯¡óƒu†­eˆ]”µÛnï´"ðåþQæ4Ôo@mT)¼-Xì̦fÌ5y¶P´ømÙ\bFÙÐ×H‡Ø µ–JXC?¶Ôj¶!!#.h6:™M-WoÁÖi/Ïq¸wE%à'ȧ̅æÒb\Œ lùåšJM¹£àÈèPYo³ÒÉ3ýY jœ&ŽMUÛ•<´ ‘ä²穊ªs¶ŒoupB¢ß:òNHµ´åhiiXþR´¸03N.Zð¯17ïÞ±úl꡹.˶š wËuŠôûÓ¶ã0|¼5ýrNoÑ ¾`†¶ÎTUý©5²Ùô|qUubïÐìŽG[áC ÿØuÔq ?DPKÛ~¨®}ä@B°çœV¾)22R•m]=í­Ý=gÛœ…¥†v—G;Ùú-œÿ–œyQ8>71é°LÎÒ˜ý 7LúXtY6{U=‰¯â‹ ý“CÜ@€7ÄÀÏY/IéYÑÓqVÀÊYy¬ÿ¦M±ÿ„Ó2nÏ¥?àZá$!å9–­‚®:êC¬«¶\AÌwt¡Ý à­k­p`ÔäЧJcè²p!Ä‚–î>`ZfIøæ9QŸ(¯<ñp~ÑI‹˜-¤ ¾~yáž¿Úöðí¨èÌ„DIjŠ>UÖdöþkï4FÏ®G¼>hƒ”ÝÅ™7é%ÊÌ77=à«yù}.°žˆ>Ç-e-¦Ûš!Þ…6ËöïPeU´&J”Ÿè*tiômòÅÌéóí#W¤—GÚ&ñ]|-÷’ªGÛœ]×ÈEäÞå¶Áß¿ù8|b]L¬.5I¢Pé3´‡êJ¼‡gÇ{ocôÅXÜþ$}rÆY©‚+íV/±+t23³$³Ô‹Á¾ÓP8r·ñüu«{|ñ¥àÉ®·BC-s´ ~SK -{òÓ!»»ûü9÷7âßfe endstream endobj 545 0 obj << /Length 2776 /Filter /FlateDecode >> stream xÚÕZmoܸþž_±eÀËßD2® ´×¦ÈH¯­¯(ËyWö*ÑJŽv׎ÿ}gHJ"×Ü—\6…K¤FÃáp^ž-åðGg&Ÿ)Ήz¶X¿Êíl?s7ÿË+êéæ@8(ÿxóê‡7RÎhNLnèìæ.du³œ}È~\•Ûª¿˜sÎ3ùúb.„Ìþ¶«vUÝÞ»Ù÷Õö‚éì ÿuýçÍÅœ £tÆÕÅÇ›Ÿ^ýùf\_2v¦ HyZÒB B¹p’>­ª¾ÂxSðSÂr|-ÙÏŽDÌ b×H Hž‹Ùœ’‚Ž(wD4¨@E.WŸÅžHDbð©A<çÙvUá Ëúî¶¼­›ÚªìyxZnÝã²u3ÕWÐy[6n¶¯¾ìªÍÖ=ºï@¿*«ΣYÀ4k‘+WB LåDk6ì ¹I(UÃæ"{{çV²çë·±¬Ún[ùùz»J­g8áfTد9“ ¥„±ê“rÍSDç`”Iý‰;­ªV„›>ácjÏÇör äY£BveÓµþ”½Âévmóì¦nmJ©Üô¦kt]ºñîÁLçÆ¥ó6H!ÈDI} e×l뇦^€±<`”BËÙ–Ì]á”q,)Ëî­áQç0Þµ5@iwâì¬ØÑSÀ°^?XŒ ¹Ñ¿í‰Ê岯W,F±]¹/k·v2}çrå)ëåÿI°Z/ö‘ "/`«ëÊÝ '"+‰`\¬RÃÒqdˆù˜0vœÇçÝ!,dP†ËnVXLáö´nç†gJY…ÏÑ ðº¬ îˆÖ"«™Ã± oŠ…†r M¥—Þ£Õ‘'r¢Š@’f—íµ]Ø‹ÇlÂÑx–Ž<’3–øBØòS ¶M3Œ¾P‰ÃžïJphTTª€L1¶?€î¥ÜÏ›Y!!¾Wû¥>€9(ŸIØÅñj žOÔ‰‚¥äÃÒ¡ÖÅüK»ØXœºùè¥z(ï+·é—.ÉÕyÒyÚãÂÅ Çú™Ùœ Ÿº[wãò#ÞõÕv×·?Ý «áéµ]X,œ¡ƒVu½¸–›Ínmc, \Á ¶Pbä£&Ì,ºõCSmBЛ}ÑujO€ç-žM›‘ÀáÆ¦t˜l/Ð^cD½¿èªïv÷«‡Ý6–ÌÁ'ՀЃ݌Dô>Œ-jKŒ4 q%G8zƒª9; éTB¥­}{]nûú+ž=$1#øÔÆŒ-0ÔDûâKÎbë ¯®Á><¾·êÿ–5„By.mŸ$ÎÙ»u÷‚“fx»ø[õ%ÃM]_'mš [WL ZjæÓ·2Ö6\{÷}ù°r·Óq4•o0ÌÝA”yv#á-¶–Ø+4 ë%Âäkrˆ1f?É—>«Wå1ÉÊÚ¡û蛑“0šä€ ÕÛÁÁÊÛfh9öÝÚ3ufÿì‘„Ó~o’Rý\*Rب"¤9‚‚-™×éÛvY}Ř«}8ÖCôÁ›z„r™´gÉËõ‰ÊÊL¹Šáw™Ý%-ÊD5òJ¶À7& n[k_ °.¦GC¼O‰×Jfò¥Hâ„&tâØŸ4þ´ÕV«W ý›áT j¼›{8mrÛ…ŒkCìIiô¤ì°Äp7®‰¡]C£‹€½=»û©o`S;ú½óH«.ã=xŽë"$C€PDæ,»Žd¶Þæ5kå×ÎGÒA†áËjʰ:AчOŒN7P€R®£dáj•ñ›¯­+ÂOzŒÀ<8Ö •ÿ‚àªì]ÆU0ôUG +Œ¾:"€¿þrs&V8O£ŸÏC eø]ëÞ¶¹ô§lÜRýá×üô_SpßÂëQh'ð@NIaÆsüœ³ 9ãá—IQ¸ºÐÇæ1’•'ê£DØê@IÝñ þ¢XU”䔦Z®JcJºÇÿ¢J뾿 ¥)×·Ë2%c—údBèýþÀT¨Ð!7ÁMÐ pV‹“éš…úÔ×Áj…o¯F,§b£ù¢«÷®ÒÁ·N¥g¨Yð¬Yüznù6Uµúá‰j˜Ã?G>Õ.`Xº€Á ©#Å å¹}ù{¨^\'Ô g“¿,gÜS„aø¸tãoLp.¨aðYPÃàÓé°áÙÀæxÌâ[ºìh £ÃF¹kS‚—s˜.öÌÚ6A":3Á«ñkI~ô» šBű†¯aZÀ©&3ñæ–0)ôJµ&ö×1~ CJl\qip4ß1(¹Šâxð» LÜÑï6ܪo9*¤3u~:K» hÂÙwŠ øžPØÜQA€®ÐÓ|Ë–f~¦$ˆœ¾•œ©=ì„ÿÜÞ° endstream endobj 550 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/home/moreno/research/software/octave-queueing/doc/qn_open_single.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 551 0 R /BBox [0 0 198 144] /Resources << /ProcSet [ /PDF /Text ] /ExtGState << /R7 552 0 R >>/Font << /R8 553 0 R/R10 554 0 R>> >> /Length 915 /Filter /FlateDecode >> stream xœ}VËŽ7 ¼ë+t‹`hQOê?rÉÁÞ 0‰ñ¶Û‡ü~JÝ¢ZÛ3,°=*‘E–D²û»uÄÖµ¿þ¼,æÕC±Ÿ~šHÅGŸìfÝ·¿.5‘]$NÙ. ìÈË…+q°>Dr’-gmë‹á¸9 ‹˜RóP‚¾ÔpP¤ ¼U‚TâêÐ#ô%ì{ º¯)«ûAÂÅ|6C;‰Ó$¬VGiRV9R(iÄÕõ®lXôÄC_kŒ]s 2¤±O.#†®wqÃBóV†ƒŽM]É…•- ô!B"9 ®Ú\™JÎ6 ãQ IÔÕÅ$VóD_VkõÖµò_Œ"ÓÊ×ý«g8$å×åÅh|E4¿î°Éú¾&WÁ¿ýña<•U¿¬º#Ž\´O†9zrHN”RC<Bt=µÉ†‘yhÈgóׯö›)¨*‰È$Æ5ÑÅTüZsëœ]ÂeÌlÞ(òh>\ÅXîå1r½+;:¡”gÙ¡V*3SHö“jí„Ý&ú@.MªÕ8ùv;2kTÆåNÔ=³Ûk†”m–ÏRAU¢Ûð‡Fc84»×ïÿl–E´mDaî¬[o¾üüÊm3·ãØÿ±þå/꨸T7þ²‘­ÖŒ2pQ©dÝXe¾ÍOEžæ,Þ½~÷¸É]cÕð =áôSÄ!œfÎ÷ëÞÛ3nòƒùôÒ*Ø endstream endobj 558 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1823 >> stream xœ”{P“WÆ¿$ßwÖ¥¨°QR4a·º½X]ïËÔ Ô+* ¨]D ! ’ ’“&K A+A@@WìR¨«¶µT]”zÝÕNgÚ]—mgß9îÌ~ÔÙý{ÿ;—9ï9¿ç9ÏKSB?Цiÿ¸ …\½4F¥HVÎÌßæBhn·P€Óû§#EœÔŸÂþì/lZÀ:¡m.Xgƒv%¤éµ»âkÞÚÿö’%ïF¨²Oæd¤¥kBW†­XzôdèvB#åêŒ4eè¯ùNž¥ÊVÈ•š=Š£ZuèO׆ÆÈÓ´YÉ9ÿ»ößjÿ_}Š¢fGDnUGgÄfî_¶båoVSÔ"j1õ&G­ vR«¨(j 5›šKRAÔ/¨yÔ^JHé¨çôzÂo»_“ B0.Œ¦GE”è€è“®€éåÆî½ô@‚iŠ‹›A+Ò1]¾)›±Áe¨8ØXy¯Çë²vǽ¿[¾?DŽ€„,€C z1ôàšôä‡["·+ÖaIŽõé‰û}Ös B;¾‹G¯êŽõJ»2ëT;QÀt*öqO|ôS´ ~ø@øÇs×?ùìSß3ü=~®¼;²íKBw“…‘–Æ^¸ÖžúoSN ùb0hØÂp½q½ ‘ÅÃ8κ\gðï°yõ+Ñi¦ Þ½<“ÇܱÖ8#ÐË÷Yûš¢ÂV”çÙ.c­ý%,fÚë5P')j6y¹Õ-Ã×aýøü A¸_ˆKa¡¨±[Ë,Ø‚‹œ…šJM…£ð˜øˆØ®”'‡dcÇÏç6¨q–$)S•°5½gJ#Í'a§wU¹³£ „j\ck±  AK{[©7äþ±ñ+ês{»e„º©j0´âvI_gûÐèÙã+Z¤¯ˆ›záŠ~1ù3OÏß-ö˜[^”˜7–¼ wò wìdÛl ö6<‰?®ºØz­«ûøsÜoìÉîHXuf)ïB{"Åínw;„\?¼èèDÂæN4:±—› ¼?µæñü /yG‹ê˜%ž‰€-u‘åq"[é¨qÖ8ª°¤Õ“Ÿ$#Ö¶Ù\´­ =át˜8[£Q)›µgÎ67wthš•3Ö»µ^Žôex¿z Æ¿Ïz—‹^'Ö1A ´¥…&}HÖ—ë+QйÚÔÔÊã!É8I\™žu2ÇãßÄ‚0úö±«)§åž‚ ÎA;?زb÷$J5ÌY’.jf‚¢5µu!Õ¸¡´±„¯dèé+¾è/“?<Œ»I‚oË~5š<€GÐH¿ïú`^Úyigfí‰úhþ—pe<ú2/ýð±À= ê˜\G²ËTm÷I Š…P²·Ü겺Ê$•E. ¶"³Ùb’æ@YÇ$¹²“‡ÉR8ÜÑsAØ^Ó&©#GŒì{u).Àfs±€,$ÁÜ:¶Ôy̤4Ç$ŠbQ>{Êáá…Dy É^êXû²²È™hñaæ¼|´à_¾ß½#&†<æžµ.×¹ˆ‹·YäzEö¡]Y›p$>Øš}édW‰ß@p‡uÜ©ªúÚIw;i©*rlFä3–l~°ÞúOço]¶ö{†ð=µ¬óÇêÚ®BÐã ÀÜbENN¦òtNGg[ëÙÎm ÞÂ2cÛt`ÝúœúNnÞ¼8œœŸš¶/VNXL~Æ7“s]Šõ% «Çð0¾ØÐ}~l¤‡oð‚ä0ø%™/-;!~²ÉÜû×ó]ã=ù$fmøË×®”‘­dŸÈĽÎÎ wsß\ „¯&å·ù8ÀRx$þ·ØZÌ74=±x+Z»k³*×Ýš*U~¨wë1ÒŒºô‹Úñ‰É¶¾Ë²K}§ÇðøjþªSלWs¤‘È­K§}xýaÔȲÄ$}fšT¡2äèöÖ•÷ÞìºÑçGv¥ÒsNÈüÖ6õ ÑÇNÒÀ `÷µ˜ìr¸*{ž›Ý†\³E‹%DΚÙmØŽmK¹­²ëBIA¿ØÔ«{ð›hÉÞMá¹ùîf…4³UëÑ`¤2šräCê‰G·Û‡‡eƒƒM£xßÎ:x%i ¦…ÌjBÆZî@ü®–é™õèç=.ÿÉrÿ×(ê߸Ž> endstream endobj 559 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 313 >> stream xœcd`ab`ddd®ÌMÊÏ1õ~H3þaú!ÃÜ]÷cÇÏ VYŸy³yÈò0tó0wó°Ìÿ~M軟àwoþï ,ŒŒ*æ)Y¡Aá Áùi%å‰E©: Îù•E™é% F†¦ I• @ùà’ļ”Ä¢ˆ]Å ÁuDèÏIÌMJId```º³‹‰‘‘¥ù{ßuæÿ¹-$œpíÇ9ÑIGV¬Ùѽ¦{iѬ¸IeS²¦¤þ®þÓ&ñ’í»Ý÷_«‡Îvš›")¼ a᪒Ògº×ïýÎÈQÆÖ^’—ÞÛ]8¯z]ÝÒ–%µ× ¾‹Jt÷võvMn]Ý5¡mañwæêC¥{+¶¦-KîöëÎŽhøÍÍÁ÷»¯[†Õ­›í0×cîsyxôñð20J‡d endstream endobj 562 0 obj << /Length 1222 /Filter /FlateDecode >> stream xÚ­W[oÛ6~÷¯Ð£ Ø,ï¢ZXš&C‡ðoÐöA±éXˆ-¥¢Ü¬ÿ~‡<”-¹Z“‡%@H~üÎMa …_–ä4É„ ¹4Éj?¡AÚÜ'8ùøë„E½9(Î{šo—“W7J%Œ’œæ,Ynú¦–ëäS*ÌôËò·D˜œ˜,+Aúõ`¶¬îýÞäzy¼@qþB$^óG(Ùm$aBâ¥×_þ¾øpÝÝùuÂWÊ0‰6»ËM"sN(UÞð«÷{–¼«'Œ½–Q d"µ!"÷Ü”÷‡ÆNçBˆTöz:—R¥W»ÚÙ5J+ÛN¹IŸüŸºyðB™>•í· ´³¸¹ÚΡ¸ÞàØX`ѵîœÃ#&¡‰L?ç±Óž÷ÔöШ5|(Õþ¡?QHÌ^ $j?Di"¤qÛ:ðéKêcæÇ€ƒ•Bþ³>ÿ ù‡íxþȰ…üÃ4ðcÇ?ÿ •.·Qõܹ>üçQÏ™ L1D½-¼E™¥í¶±§Î6ßÊU\¬låa¶¶q3(šîŠ»éìÚ< ;fÀަ$SºK³«ÅŸQkÀ!D0Õ)ÍÆ ¹,ë4Þ•î ¦¬S+ªQLœ¡yߥ‰ú*¼×› T”*“>TS–ÖÁyît$cwçþÇ—®¦Š¥¶j?;8—ÑÀ¸mÆͅΈ¦'v®^v±GnêÝ«„ëèΆ.Â`rø‚Pз9^Œ9¦ÒcèUXžä$×\ FÜÏ)áš÷‚1DhFr!PøË˜W"H ?†¦Léx,A15Ì<JÇš,þcǸDÚeNtž ³‚“Á'^Àže¦GÀsJgdBwÛðY'™èNpy9Z¯¹dðþ³h#Û2„Ä·Ò•mŒ¨¢-k7ÆH¦ûŒü5v‹!™1ý6¶î ®õÆ+”w9ë!í?Ý6¶±Õ*.㙘1Ds±±¬Oe¨ó—pM¹¦øb ŸË ‚7 Ÿ(Ž”ˆn’½Á!X)¸ ½øÜ{Aœ§2¡I¤g'é‹}yƒ¡4¸§ã¼õkµrÁq.t¤ÐwÐmrEŒd܇$'9Óhè¤;dˆi?Mæ®bôNŸ¡ðÓA&b°ÊÂj¤¤Ì¡ÊC¥2ö/Ç¿º,³ endstream endobj 473 0 obj << /Type /ObjStm /N 100 /First 872 /Length 2076 /Filter /FlateDecode >> stream xÚÕZioÜFýÎ_ÑßbÃ0Ù÷dKr Ø­$çXÃÆ3´Dd4T†´×ɯßWÅchr(9Ù@Ôì~}½WU]MJ;Á8ÓÖ1?Î0)çË2d"Fa`ï© ™åØ*ìƒYQ‘ªPPæAã,À*i12ì8Ä„((*f=-Ykæ„"°…qÂ&ŒFAaKF;æ4H4VPP(àFÀ‚=8†8o0)š§e˜¤^•ÑÆBZš6à=&4ØIË`‘Öl(rÙj$÷Ñ“'QrÈÞhëán§,ùù—ÿáÖú˜liõa¹|}÷]…;ÎW%{ò„%Ç4ç ۞ꦌ@ðMTÉmYÂn>÷&—Ù6@gXÁMÌêÞ ‹H¸y€¯óMw,+9Yçó³´doXrrxÌ’óôSÉ>¯øüë ³‹4Jžaõéª,ª£ä4-òëyZT¤ªz•.²ÙÓü{Cs“¸ ßbšÙ}«v±žˆs¦AœÃ¢¤íÀhmcÒo§dlaë#D¨Ñ«u»¨î§Æ£ªpÛ–ª¡m]φ uÑï.Žç]qüdqÂqšĩ؞A·±Bˆúêâ44¨ûÑ_¤‡îèáåT=¼Ö£…AÄ¥VÃ8g±Â=úÓ=êô5õð]=ìd=Ü=öÇ c‰éÜÄ!ÀéQ®¦GãÈ葲N¹áVLsªNAvt |ªNA kР¿ˆ)÷ÂÄ;?ÆowŒªiR“­)CÛ5iˆ¸;@²Eáî¦T7#ÓͦìŽHZe¡€Ã8 œÜ[©ºu®{–†´õ@ø7ˆc¸èŠ&ŠC÷§!qÚdÌw¸QçD,ÁóNx‡0gmŒËé˜ôb_O—€÷†ÓÆÑv+ð=œm†w<‘nSSÅ6#Äny˜‘]ÒwàpOŒ…ãˆcH¬{LÃYZöß¾ÛWïî•‚w…ò“… #„jb”3±ãjW "ö=ÜzRŒ½CfóÐ닟wwÑIÒé•ËD=Äp’ÞÆhAIºÄ‘ƒyçÿÏõøšç™ð]¥ìd¥Ü¥šiEìDÆqÓ[‘=_“m”:õ«n#Q¿}[1UÙÉÍ—›©Û"ÈáܼÑÈä‚4Ã8%bÞÆíé.=o ö½®îïS“Åq]qÌdqìqöÇXçb3êeCQu–z» 6‹1ÉD#SqF†{»ëÕõ'5ÙŸÔš€±–ÇÎíù®¡/kxRýíé}iºdªÉdêD `_Èô½gj¾FˆÙ'´£uñaž®Ùƒç'/Ùó˼(‹ù:».Yˆ¥}J×é¬ÌòÕá¬LÙƒÃo%—œ+‰_[åqñ çß÷*_ Aγr Àï«_ç˼H¿Ùêb™Æï³‹íD9‚G¹H?²Óu‰™Šelg›z}*ŸŸ•˜0J~8yÅĶõé¬H+ª“_Ž^¿xýâÑyv•Oó«Ùj#ÂaºÙ ¦¢K•IlƤV`²uQ>»œ­™¶Qòrvó „‰’Ÿ²EyY€JúöÄ«O‰õßÍÏm©ýc­ƒa°ô™©Û¾­ÝüÝ ÇüÈêÝ~w^åìúh5Ï`šaù«ƒU‘m+¢äìû²Ú: š 7¹Úp÷¯ÙUÚÏìÓÊ©0ïcdÒ·=ëæ?^Î. &”\GÉA1'/£ïqɳÙõ÷ivq‰G®i6jC÷(yQΖÙü€ „q¬´L¯~d‚C„WYA†SiABDÉÏ7£h‹R‹ìýAò,9LŽ““ä,ydÉoI¾J“ët勤HŠôcºJÊËuš&åóäÏt?Üìã8[¦ôý°ñqw˜ÑÝ0£÷ 3ÉÁj•—dSôQ“œ¶ÙªöšT/³Õo°ó|½€×Vcó·´€9\\j„gQ}_FÊ£pSÐqõÕVÄAÑäU:cÉóü$½uþèé3F7VFÿ·P4-¶÷I½#¶ûþØîÿÒØþ>û˜vü—B»ñÝÐÞÏÉéjtlÿ儦㖠ÔÖ™¨o™P=Lx¹‹ˆÛ½/gWï³ÖŽBwG·ÆIføÛ=ÌÞ¿Oq*Ñùõ†ÌëfŠÛv/,–O=üt¸ëጭtuGFŜӿJéX»‡âã·ít´}Ú·¤Æ:_{íó?мC? endstream endobj 570 0 obj << /Length 1806 /Filter /FlateDecode >> stream xÚÅXYÛ6~ß_¡GX3â))A¦iR$ÒMëæ%Ƀ֦c%¶´‘äMößw†CÒ–W{ (P,°â1Î çøÆ<Éà'e–äR²RÉrw–¹ÕîsBƒ?;ãžn„ó#Ê_gO^iðŒ•YÉ“Åú˜Õb•|H_lª«Áv³¹”2ÕOgs¥túno÷¶n>Óê[;ÌD‘~Çm÷µŸÍ…*ó"•åìÓâÍÙËE¼_ q¿ ßÎ8ËJü£a2—B%sÁ V<ùäõN$¿¶gïª!ït㙂]•¨’3•ç¤à«úó¾³^?&¼†\yjÜP÷+L$ßëaCÛ}z ßZÚ\n«¾§åvMßÎ~ÛÛ~èOm…ÌSZ>ð z~D~Ÿæžj¬¹ÎPó[‚hÉTQÂ9Ý…PÌdùXw0 ñ<]VȈéÖŽ¬ŒKĈHwZ¤ÅÕ«®½¬.ëmí‚놶³i;HI<¨øtÊ’e2RTAbÆ%®—”èÞ¡«š~m»Î®¼œ-m´ pGæu'V¶?••"»pÍÊ\x»Ð½•jësxHX¾:Ô -“;ÜYaÌ1Ç•ûÍáMKEL´Ïò…E¥»jèê´Q÷Þ"ù8r`¦¡ – ‚˜]LÙ†à•Áx? /“’•FGÁ™%EÆ„ñê^ ÎÌyÎJéÙÿ|{-ÝJ!âa(GYv×s³‚mù0 šW•Ì”'>ÏáY”Nö%*À%À#ø¦9ÀC”¯=LpõÉû Äø”5ä1‘?”PJç|ÑÝ$ã);îTy¬m1*Oåtùà 1íbt\×}=xï¯ kõÓRhÈP&\ó~ÒS"ºxåƒsÝn·Oð¨›\‚ÿºä”8´ÐhüdL>›ð†mµ»\U#JNà)ò–ÇD²È6 ô31F‰BÌHsËA1¨¢súfKNNÞrØ©3Ÿžù$7qÍû‘¬ßš¶w¯Ô„ƒçPÃÀÓ}>ÁFð5zîœqŽÙ›à’vü èiî!I=%‡f‚­A“©hRP_yxÙug…L÷ÍÒÕÈ Ià"þ þde†ÄjÊ@kx˜º°ñ)üÇÍå€å ç®ÚL9:@¶¼ˆwÿ>éè C 9»µ;@ÅÀ>^9¾Úù½]¶ÍŠæWU(°ÆjÆ!B¼LmìrÈ1 >vŒæVsG¸ðÕö­ ØD›Ü4ZÇzãÄp¢Vu3FÇŠÀÖ Ë–3y"B*µÕohV7+€g«}8K:Ä„1öKH=ðÛwSÁiTšfØYÂŒÓ8¦"Š`iÛ‡ýºhØ6 6Œ$Y—¢Ó¥J3Ççý‹hT‚IV„ôLîê‚òP:N} €XÉ•‡ÑBÝ 5Uý³ù? ƒ0þµAÊÞ{$Ú.z$mE¬3NÒ23,×Å(·a*ò%';§Â’}š’EÇI!0–ÜO x§ áï/€N˜a5Òý 9u àôØöÃôûL …‰[©Þé+ÊòÞ¯}ë¡âD8!ž„2دoNêä¡Å_Ђ5&±þéTò-g>€¢ùµÓèX;¾É*2| øòàè°BM, \ƒ€{¡ÍFò†¾$5ìh©² Òµƒ‹3¤D’ýÿ{,ßù ×ñ>/ÌÉ-Yì>Üf?àûæÀ¸Ý7+»bS&›{C Ñ„1ÿÂhJ H“M0ÀÁ{3»bÅ¡Ï;tuÀsés¼ízZ@#(Å}  '¦†L ýlú}.ÇŒ‰Äw°¤ù® ]LÆ5®\8Æuß·¾@È…œè˜Ù˜ºf÷[W蚺#åßQ ±[ûõÄyþXàã¡ýŒÐ2Gt€Ñ…Uãr±†<}jfáWr' endstream endobj 575 0 obj << /Length 2644 /Filter /FlateDecode >> stream xÚíZ[sÛ¸~ϯÐ#Õ1QâBLšÎ$®f·É:–“m'›Z¢mÖé”ï¯ïÁ…$(A‘íUw_v,š~9ûaBe‚¤H€‹žýºÊVY^^ªgÏŽÎúbB¸E¹±ÎF[‘ð0žpɦÌ,üK„…Zt}Û˜ 3v{¯ê:¿ÆúØ( 1ärˆ+qÜ/sº “û`òïL¾@N'±*%ÔåkYu©.r•%wKäÞ›FkRI‘.Ï©]?qÉ(Äî¡€÷žB€Öúåf>&»%1âñÉwª‘^»¸µÑqåxÔ¼ýiƒÚà“mp“‡x8å6;æ»ì8ÄP®ÆpŠîWPîÞÿjyW—6Sååeakãy‘66 ¼>|wb&¿® ï×a¿ä0Pp”ö±‰ð.o¯¼ILB™0´?Þª¶Î‡Š{œ…ÔêRƒºNƒ*AZÄ–(gW:)Cz1ø0”¥£†wíôÀæq³:o²ÖLéÞ®¯Õ²ïàÐ'–HË,ìÄ¥H;©š[-”µš´Í›‹{ä©û®UŠÆêº¨Š¢Ò25”¦xèÛ&hTžûÀ …Kò§@Agºh‘Xu¬•Õ%´s 39Èn ¨±¯´æºv`;9à‡†¸Î 7ˆYÔFÊ% NÌÿ‚¹ðäÔÞ½y05òRCHyW[©=Nµt”c¼øBe ¨P²®`ÛŠh­Cmue0Af€¾ ÀÞÞ÷þ¿‹s@Éd¼ ˆû³G-çUÙÀáÌaÀUú¨6Bñœ¤¸r„ð‘ nzŽ®‡Ø6–† Ë”Ä>~ptLpG…ýÇ¡¼oÙòNêù¼Ãd:‹j¶ ¯Báÿds¦ÓÍw;e `B^Òº [ÎbŒ@a‹¶R³ÀÛ÷'Ïf>…DcXv”:G;Ž…fkwü“•…‚´ŒÅ«m~ƒ]vý8»s¡yC\Ûˆ­åsG> »:m‹¯AU”÷õ÷È+lhØÜNYò­Æ@sd,‘Ù6•[ltMlÉ!»uؘÝeæéªT4Cî;@I»µÛ[·I|Ô?âÐ~‘©¡Ý"‡Pj­õÓcãE®%ºþ¡kYp›7y×ý¶Õƒ^»Ö¸MüQºøôûI¯J×Õ¿M£#'c'ZîS£~åA a”—8É¿1Œ+Y|_lu%ªà”>(ç^d‰¡@Óq¼õf:œ (OÉtÚØþfìÐ+HÐÉ€ðªÒˆ95°7¥3ÐÛa—‚ô†™w‚3r[dEÚaTÌý2j«­¿õ…– ¤ŒŽ‹ØJZwyîàßË[u5ˆ½ºOÍ¥Î.WEZ››þó½¦t´§ïŽ‚Œa1õ„=¹ÈX‹dXÅé=ú* 8 þ‘]¤«¢µ‡j¶D9õåHŒåñh“xù=“H\Õ´0ª´ÜòÅ ÎÄ’Gâr…fÐu<ý§g»J ºwüö˜ÐûàØ£!ö%É®p²+ÂŽÄ€*ìþ‚©"cÛ¤+‘ì Òµí‚mæB%ˆ%ɨ§ëŃ /}RG©rBÇkB§Û~@7´úG)”û|®~} ¡do3h‡Ú{ïg,uBï®Ýïº~ÐDbòă®í*Ðþâ‘0”O(÷¼õµ@Xâµ`±)“`XlN÷¾_'Sâö»Ëd§lìú™¾z¬³¦kï§l÷<;ÁkAòÃ_àª<x·ö‡îŠ"úeJEüÝØ`ÿ³ ºÃ®ÿx‹h¯êjuyu³jýéЧèÓ£ã£Ó£÷‡G³møÜ“ð›7— ‚×J{Uzœ+}](Ü(föñ›²—JWzöŸzëŸj©§ï2ýë>˜Ñ”šúѾx¦¾s¨ž]Î"?l'‚¨Ï»CÅø¡Ï•ŠÁû ´SÍÚupð.­¯õ#cº¦f´üÜ,px•æeó’Á»J£bP‹š”Œ¥EÎ`pbÌêžeZêV‹àèvC]Y¬º< sºfÔ¯VKP¥v ¸›Íó¬ñÕÍM‘ÏÓÐÅ*V7yP¤FNQŽôs^d÷J˜ö'‰ì~‹ú?"F endstream endobj 580 0 obj << /Length 2573 /Filter /FlateDecode >> stream xÚíÛnܺñ=_±@_dÀËŠ‘ÒIóà“ÆiOÇëÁI‚BÞÕÚªµ’-iä|}g8”VZs}I\´‹—ápî—OBøã“$œ)Y¢âÉ|õ,´£õù„Ç¿=ãn €Óä¯'ÏþzE²$Løäd9Du²˜| ^^¤WmVïM¥”AôËÞT©(x·ÎÖY^žÓèÛ¬ÝqðÿUõe³7*1q øÞç“<{uÒï ñ@Bò6¥fH)ç1‹':VŒKEÄβŒHJ‹¦úwßfOE,Œ!Á_—ÕPY¹]΋ªÉШš›¼ÉÛ†! %a&T“©,ŠœX÷bÔÕ ¶3*h/2jÔY³.Ú†:ójuµn³ö¢à Åó­ƒÏÌr]ÎÛ¼*÷¡« o ¸›&ꪦÉÏ ·E[Ñw‘Õù âÌhIDÔ4u½NKœió6ϦjIÌp"f¸d<âÄLNÐPûK¤ ÉqYEe•Û8qj5g È"@¦Y¬ ×§'ø±¶Ó  'øÙ·¦Í¬ðÂà8k›e“ÑÐI¾Ê|Úã€EƲÃÖñ88!éóÀRJ2©Ó¢ \À ÛÕ··kq;Ûš#0ÏvÎÈ4ÜÌ@™!ʇ¤!‡ä #™ˆ{ë:&N4KŒŒI`èŸr¦¥!¨ÆÇ¨a‰æ“Ô ‡+™$0%4MUÈYÂAþSJà‘gS@q ÌlÁþi­£KgÓ—´T V*¦Àò?/¸iP‰ åD09N=$h&µ"¾õh·120ÎPLP÷Èp ×È6Ño#a¬ÉÇZ=Æ<:#:í+ÖAÖ+üï¬¢Æ ëVö[g×kð¯2¹!s1°Z²Z\š­öF› í(x°m;¤³xœ§% vMÀQE‘€H9ÑÞçÇ ×œIÐÒT Îiá;¯š´P#SOo±νBÒLá3ù‘%GŒëÄj+ò¶cH¦mÀfIìÀ>xMC‚óÞóc.n˜àc”yŒ@.}¦§'i ø«ʺýêÃÁ›£ß_¹z¸@*gç…x‘®Î)ÄG íG>ï|~ ñÓÈG®©aè¯qÈgãE FNMh‰¾%ý‹?¾'ˆcú¼£Ï‡Ï#œx £zÄÌ>ufîë((îcìø_Íã¢jáñþ)® ±¿8ŒÎW°§ ØkÝ9´ÍÃÛêf½BÔïn!>¸qr½:C'Æ6º«]I;û‚—dpÛ]µ «©O÷Û ž8Ù“ÛŒs +# µðnâV?b³-»…b‚ÇšVÆàÄ’…°”Ψœ£QƒÙ;ñEL0´-‚—6ç¢ óHÉ!„6ô„ ©!€ãñAŒr&e³1—IQì:Ì‹ìó†pÐ'¬Ãà<ú£ŒA,2ºƒxïCƒ¦ƒØ÷á€Er+¸D?É»§@òá)üv¯L¶ýyÞ¬nœmép”ê@€Mú“×:½g{°0ÕŸ oÝîÉãX0 ÷b¶ ‡y8ŽS?#:lHðžvàQ4ŠX?­ø§ÿ­ø‡èX}¿'(H‹ŒÜÊþo]AÜë æ§+üt…ÄñÇ.w2÷¹Ó”'1ƒ»ÞØŸÊ´øö'V2 Yse.ì@š—çE?‘6X÷‰xp½ÞãXùàAßÈ¡a+~0]Þªøáúu“wTƒ±ìk:o©ù&³…h¢w§ÅÚÁXêš¼ñdñh=oN÷8çÁ¥×TÝ;¯ê¼½X±~ÉàêCå ѯLð…è‚¡ëMáz‹¼™çWE^Ú"™€«xí–6ë+W$ªá:ŒUO™‡ˆëå!^@æwhNŽ]ïhæP” x=£/²ðºür5õ0Xæ-l)D̲ÚQ†7öxÁJ N/ûhˆ½!}wøš-¦uÚalc>ÇŽåf]‘ÏÁW5}WÈÕºhQ¿W…ƒnzb¨¬ìn‹¬a¾û ו+Ÿg%–ߨSTébºÈº*ëÂQAUÆž@„¸OÓëÆM‘5a9²‚çŽ"âBŠÜ”vm€*>/‰"ÆcÞæ%ÜÂÒ…«öJ¸}+{Oß5‹÷M‹âÛ^¬$Pweß(ñÔ«´ÈÿLÝyCs¸E¶® ë­€Ÿò$ÙŽ¿Ñ¸º<>ô—Ì´ô¡Ñ,Ú”¼Ñ¸öw1„Rw"âx¿ßÔB€Qž^¢¸ Ô‡³ç?´ÁÂך>¦û<§Á·Þˈ(ܨ©é$KEªç¾µb‰O#Uù8©:êÒÒÙ‘Ä@GŽÒ—”…Ôhß ja=@HƒFóo ¸½«K ^íAYsÃÆ¯/ßõCUµ „Ä—t¢Ž5íoS°E1ÁU ;TgéY^Ø÷æ+B…#ûýöèýÉlslàD·ÿñ9>v6ÃôF‹Gö̸ZÎWÀmá³ [¨Ž¾ôi¬¸ !˜ÄÒ§HB[úìN%[ÅÉÜá"!!R[[Ù÷-·uæqö1®$¶`Ý«WDÞºˆ`\ô¬…^S#;DØ×K/eø¾a¶Ó"½“°/(0z·ÅÄ<Þd ¼˜žžÈ@g:Þʼ—£¤»ÎÚu]6>JãÐFÉÛ)õ˜R¹‰$#^Žïçv_BýÝ8><ÇPècTà &b,VÉ87ÕÛ–1 á室Œ&6=}+Ê£€€Áù©ºG,LZw¢¢ƒô§ª7LË’ÊÞ.}›'LG‰?›ß.wrkvp;ö¼±Ù>­ëy\Çc>–‡»46xáA•`üµeaT›÷¡µ‡Ñè)Ú%B•Gñó;U,Bhó§Ñ°Ø¾'ý÷5,žBÃ2|êjø]gU‡ïÕWiÙ%²‹¬H»|ú²Ëvç릭V6«Æî.ñqžÆåöOíŒBO+•©R*ø{¶L!Ñ'rGp¸Ã)$æz["[=¥Sø_8ã˜^8c3¸ƒ44€q î6x®ÛÄÕKÿϘ”#‹Ï—›[û.bÉFÖ+ùŠ©0¦¨–R"´™§EZÛ÷*Ø$àäè&†)æ:]|À‘ö"mÝ+mŒ?IƇ´?f„šbF E×§ÑŽ”ƒ‡ŸuÂÇ«ØÚÏßÈœ¼ ‡ÓŸ6 ˆ„{üÝÚ“˜Ë{•ŒÔèR§$€¡—ÂèÜÆÛ~?;fïã3z6´ö‡3_ò¦{O4 ¥ÝÒñg9Bi»~Süàcá9ä±5mJ Øpiû¸ë!ŽPý‡\ý€:ö6(f$Z³™¿/IŒÓæ»Tæ³`pðMØXNwX¡ÍØ¡D¹7ATÉàÜy´Y½¸Ë¬¸zõÆ>£ƒù,Šñõ°0Kç(„‹;Ë4yÑýT*uGsWPs ‡%÷k¸ÿã_jå endstream endobj 585 0 obj << /Length 3000 /Filter /FlateDecode >> stream xÚ½Zësܶÿî¿Bã~¡R‘"^|Ømgì:±d['«'™}‡“Xß‘ ɳ£öŸï.| 'OÆ3ì-€}üv±0Û áÛKýXˆ •ÉÞ|ý$4£ÕõuÎ_>a–ÎB@ùýÅ“ÃJí±0HÔí],‡¬.{?y’ïÿrñÞHÒ ‰SàbFÝè΋kœ{rrÑ- 8ßq'Hy+ñp+Œ%A²%2`BÒºoÞ_¼}1Ãe_D|H 'úTÆDùžhT4¤QAÌãö ?‡*ü˜¥‰A18®hI_-íŠb¼¿€'¬¥ùäbÝPð–$¯÷}Å^†Mâ½Øç‰wübv@Ÿ¯¡»Ï<ßgÞ[èœÓpYÑÞÎè»(÷}{ MŸx —8X“véõ6q$[ÄÉ!%ƒ„ H¹rñc<`¼ˆ[® 0<|yÍ.\ÇQ RÕþàýמb¼8gK§Ê€•I’›&÷­û2à’ï¾ñmf“b¸V»ç‰àž;£ öýˆ‡[<ŽGAò˜¿òF*-eVk¯fÔ]>·¹P̃´7çõWŠ/„ðþ†t»PØøê¾¹Ï×NwðH+j-“}¨Cßb$3¡Œ[q2"Nƒ8éø6Õ¾b^ö3Xæ~¦R//]ÔysçZ)Ž‘v+-4üNzA fµëÀ ºi'¨«Ýýÿ;7·˜8ûchÉz_»•2õ^¤õæ¦ä<«u/R3ùy_ÁyWmá@ŽNŒ”Z.¨ÎÉå£p¸»â{P_gˆdw´ÃÆAìv¯+!«nnŒ7A¯,tà´Ñ0;JÇáøü[†ã‡QW ŒÒa" ì¸Uº¾…ãB¤-HSÌkòµ6 Þú"9¥ÃR@xÙ¡ò9zƒ®ó….榋>¡¼ àætH©º]d -ýðÙ$ˆLÄ»Ÿ-w:v¥ìwý•Àæt-‚7t!ãò©Û¸ï]˸‰(â±—\ Kq•xõ]Ýè5öÓ©BqºéUŽý "]Ü­tlœž¢‚(ê¨æèÈõ£YÅ.1/×h*·`*›A ·¢spúŠÜÇ€·H¥cÑ$ò)ÙåAwqJu|ÎUÀ¡n‡W[öâ ÀÑúÃüÈ'ÛøàTg2d[Z$qË«x'qD½8 ÃEÙl å€ C5?*œƒG…s¹Kð`N|dàø¡Áû@¾û–i ü3þÑUv0”HÏàÊf­á¢"AÉ,T®uuSÓ¨$h ÅÛ Ü4ˆÂøÑTqà̾JåVÏæò‚Z›¥ (!¯åé:P'§…NÚÌh¹¾µÞ _·ÊÞ:'7ùOŸÒÖ›õ6‹3©F…vÒîã&HyÄŒá75^Á¡Ë)·À±eY)nV™úA_Šíþ±¾{”χmÇOFàž;ÉBO<ö¦«?7Ýè`÷G'ü ˆ}Î|S•›ë0;“aHŠaBðÎ\±ßS9ÃVœÀm94 &(±x¶w¶ð£÷ürc2„¯Ì^½ëê…ªÝtÅúüãpkþÁ¾.ÿ`Û!.hLN úåNL‹ÝŒê ü4ÂTQÔMF¶VîdA¢GÛ—;]`Š¿²m[,HYŸ×”´v–5íˆn,!ÃKD73n@†í|7êái‘£Ðˆnd3Ã#nÉo9WÓóMê*Ž¿ª~Q¸ƒ’’Éøî®§HÉdÄXЧ†‰ÈHyÎ=±tè³Ï!F±÷ ›ˆš¸mžÓà™SeÀ¥/—€¿†€jªª½¾I© <.ôoÚÎa¬Äöͼä4ʨúͲÂYàÚ¾Ï$¤fXµd}ª†`w,&“,é9~lj„0œ7ÇE:Ì0À™÷ŸM1'/CÊ/ä‰ÂX/v¾?>}K“}ù¥¬Š YiRZëF›7 w¶¸óA¦&¤º­ÊÙÇ|•7¹n=z\ãöUDc˜9{sq2s +ÜKÉÔ¥1¡IbXD×páÔô…®‰íªÌþBÓEHƒ=X§3“µ®lvXÓj)t€ F &ã,>p8¬ Åï(ˆýcúÄ}\\š¬7W¶wµ‰ÅÈ#¿®&iCɰ>½ÜgŒyGô•­®Ë ¬amï—G„“*Œ)â„ÜûT”(¯/…Ž’†ûH 6…ÕU>ÏV«;¢Ü Þ}\™j‚ÞK]@F޳¼bé;LÚRçu¦·±i1ð\gE¾´i/|æM­WKêgöG…¾ÔµN GÚ!7’«˜ÄŒÂnèLë8×eKOäVÇ[|¯1‡g —ܵmQ6ÔɨAû_™”F‘e¶ ;,¦Ñ_ú‡/LS=û-íHW¨<ÅŠ€¡Ä[Ëo cÅ¥÷qƒ(—Df2±µ8èM¿:“°¿ËŠMܤ…Î|SUÖ—PÇ8„ådlF‚Ÿu¹Ú ¸@Z)èËHk¨»íeN€Â·UN×­š¾3‚ä/È8« “ïP_Ò¼!n®ea„ÞE õ Ýè9$z\Th/ H~5,tZ€½oT‹¼F£^Ê¢RqЖ +×(;× R«AÙñ -Pñ´\.Ÿ§§¿ÏŠö\~n¼qôîéÖj¦H©øä®0A[c½gŒ£ç'/NÎOÎŽ[Ð>a¤RðsÈâ-‘ê’—ÓÍ1ôÎu^›K%ô9agŒÛ׃ÈlTje_]8ó 1¶‡ÎSþ%B ¥hÈñ¨ÈVwu^ÓE…Ð;^•&Pbÿt³jò9.y“彯³`íc<4F¢¸w¦cëø§¬>9¯‘’pxw• ó~(7UaLUÑ3¶dŒÐ92O¢§H«0ëD?^Œâ4õxlXжöûœÆ2diÚ…no,ÜT0ñ?¬XMߪ™ ¹‡o}±¼V­? v<ÒsÜJ˜T‡°>K¢›T‘…÷‰ÑÄ?X ùSWÛºišÛg‡‡‹2²ù:(«ëC7S—Kp,4Ý+H … S7ŠhG1´Ô Â<Üó8 â4j µ&FHáåë[@' ¡ííÇíüB×ó*·‘Fr*÷ÀÜy@íY;âtÎáºu¥º`ñæºØ1¡ÚcJé*úÂ×w¼‚c ^×´òÛ}ã†5Û·aË{‡u˜~IÎ{·sÕûä'#€Ûÿ¿ò•n³üfiÊl 8f¡Ù´é1rY¿ÏÞhÍ‚ߢM]k&ä‡NcÞovt>/«EŽyñµ.édv{#‰y ãÞ÷劷&˜Á-YAŒÖ•ý§eæagOµÙ"ã6ŽÂÔö‡xä 6‘'׋ܭI¸sôü®Í ‹{4^é4«>™)äÿÙ*ØŽxŒèW?£œZQê•YîÚÄŒ~` Vß8{ÒæWÝ=>nã!ôŒ}Á!ɦ*â3›çºûýÑíí BœI«\6c‹[òô â58ÆÐŽ^ÀŽÛi›``dNØÚëîô?p¤ÃLj§$g ¦•½ì¯²º¦EzEáÄ–X1)¬ŠaÕè鮵ÀI|ç©4À U(­hfÚî0[Õå3§”!%éïš¿ózMñؼÓ.pd޺݋CnŸ3àf¡áäêèôíëgÂ+5ÍEf˜v*,#`ó5 l®Ú®h;œ:¿,²mH­zˆÃÙˆŸ;ÒÀõˆ¦,tmªj#“ë‡Ñ/¤“æ§÷4{NÍ;j®~ýÔèès†ëÌ.Öî¯j Œÿ®G¿½êj‡—]÷9Íý…š™-Åb\Šîö|ÂÜ>B\>Ìo]tá2kØ÷I ÍÿÄ5‹ endstream endobj 590 0 obj << /Length 2768 /Filter /FlateDecode >> stream xÚíZëoÜ6ÿž¿b €|ð2|ŠRŠ|HÓ¤M[§‰íä‚>P(»\[g­´‘´IÓûço†¤^k®½Îw_EކÃá<~.›Qøc³”δ$•Él±¾Gmo}1sÓïî1O7Âùˆò›ó{ž)5c”¤4e³óÕ˜Õùrökôä2Û´¦>š !"õðh.¥Š^mÍÖäå…ë}aÚ#žDñ¿ª¾jŽæ\¦:‰¤8úýü‡{OÏûùç Š”×%Ç’2.‰âz'’0!¸›:/ÛÕoTÑû¿Ag ²0J£×m^€°LÑèUaJ蹊NM³9÷Ýç›m‹_”÷ácö5J’Ì™ L…YÏý¿£9ƒ¾è°×}S07ǪM+íê{‚^´—8á~`é#RÉéG#Á¾5¾ZZé¾Jˆ\ùÉol;‰Žý´þù¹]ᬾãÕnÇénÇ۾ý÷kDx?˜€J‰NÕ,–œpÕ›$iÂ`wgµ™­î½ºq¿#Jp·vS.QgUîlWyö©iÍÚxˆZ&ºy1ûGó_ºõÿÑt ÿ£¹yÅ2!`ž1S$UúæO\Q*N3•Æ„so…¿>;JD´-m^•Îÿžå…ùçuc0âÈ`.bÇúoQÌÇDÀ[ÇÅë¤ÐÅqˆãD©~šÓ}Lâ;0yõ%˜¼½•Éïnë¹ÇûrѬ?dÅÒ³¦ãíH4¡Œü‡hX!$Ჟÿ…Ÿ?½Û"4lZOqöx¼ ­g²­]€ÙµA'àllêZÛàß6ø¹6x‡>œÇ/ûì8¾ÍŽçLƒ!Cß8£Ÿ˜ ¡@JA¸DFY±5îõq™Ÿš‘L’BÿEUçíåÚ Úý‹¢jÌò{Ó¨8T˜n kGü¾GJ8P"RÒ¤½!ïDù‹ÚK¿>1]hNRѯðÇ › ©ìHSÏmJœ‹$&l.|È §€„àð®q -]»¨²å|i6(#¦YO‹ƒf@™k ¸µùÚ4¢ˆÎ/óÆQ®†04Ívƒ 5¬¾õs>C¶Ož»×Ÿ 9åó—§Héù%ÌzæšY‰ÂÊ4zî;ÊÊŠ»t‚¤—pcqÃìè5 Š½ak—ª,>¹¾ß(“šå¼ÎZãÆ¦ºϽÆ-Ým¾)ÌTÿéL@ƒtÇ.j¶—Æ5z-õ±b„Èá¬wgBF Ѽ·»Àz]ÕvXU¼ÈýBˆg¡§n"0¶`8à«–Õó/_ŸŸ Þ9ÐãúR L¦±f"–Ò$¦¬ë¥Uþf[dÎ*Кü/ï9Ѭx[«ÕwÖVŒ÷·jå|ª6ï·`Ö›Ö;QîyY•Z¦ï‡¤æâ å;2–­Ë!ªpÚˆôŒ÷K£ÁÕÞL²,¦ ÑóUP2È•‰Þ Ýñ^Á=r›œšS’°dˆ® <ØwôL8#q"&ºš$õÚ´ÛºlB‚&”H.){Ÿ !&HÊØŸÍãÕàñöcOYÍ9|ʺEw†> ±DØdò«ãr_ö«It/áÚ¦-I9zñã¯ke­{.¬‹tq+”[˜H å½'\s l5M;’—¦î&š4ìuJRÖ›s¹‡{*zÕ¢kði0VÉÒˆ…'¥zðWuØ»]b‹G#쫚èá u¶D®ôÈUKǸíô ñ)¨(å$êïñ^–ðà·y/K®yoØðÛt'2¾9,23TžG_Ù…==šH,š°È̆oT:|@äÝXÞzÈÔVîÙoÒݼ9œÚö-›«4|vÛclwVÏ4ÀMÀ—1Á q&¡jºÅ¿ÜŽ ÍŸ U8r9­/Mawò“Óû ¨©ØZÂÞ÷꼫Ø|Ê+¿¿˜)C𥇳 ˘ıÞ=¬Ê½PãÆáwÛ‘¯;å­28‹x„Æøœk° á¡»v<~~}~ Èý%}vÛæEþWwˆ©‹…ðB%¼Ü9hUÞcÈmbHÑsÉ)R=ûkBØÀ Ï%™di–î5óÝm÷᦮ÞAôÈÞÁ÷ödÿÉY&ìs< ²íeÖž»°/7/-ec˜½'ª¨$™ú€kYù¹ÌzÓ:gJDäØ$˜ Žƒ  JÝA÷“«‰”©Ë±úá4€;—cu¥Lñf¯Qr§4,౑é „œ Þô`¹Ô%pÔÞ~§dþo„Îk¸r>Å}»ÙòÓ¼i]Å'gg™>šŠnï]í¡+ dµéŽ4öñ¯ê]ãGÚk™P8“ÕûLVlPCAîo æ’‚`šNsÉéaˆù°ÐS›Æ·ª²1£Ä`Þï°p¦@§ì¿]8g° [³Ã…ë¶Ÿ»ðÏÃIת.8˜—wGJ ޾=Zó[Ô¤!‰¥;Xãí—TS{YWÛ‹ËͶ+âNkÅjw¶ˆÝ|M!8(±SjûùüéYˆ!õµ;O÷KŒA40)m­Þp-øÜ[äÅÁ¡–iÏスhƒC'oŽ<»7[ ?B5rìÁ<$®° \Ùš·—±5>}iÏ‘yã3u,ý.²Âf%•áÞÆ–wiô)Á†ýhêŠ[–ƒ_aÖ¾B›•ùÊ8£…1Àù¦X¹¡¬qϲ3í €XÖ>rÒ!ýn À‰°ÖíF÷Ï#HÜT:­°ž>}öôôé‹'Ý–N#$©¦.ÑÁSék'å¦Ñ©ÉWEõuklœ‘éó§Q\(ÇÕ׋ãáêf4ä@5$b¼K™¿A”á¯Q’é5ŠGvð|b¯M\ûëæ œò2s\j\â¯/º9Æ8Ê^¦Hůÿì$ä]$#Ì>— ‹~¨¶î´\¬'(îMí}Ä Ò*oU*ÒiqmY€Ávþýñ¦Î=C–&ÔO´ÙYBi$˜ø·àœìþ†IJ`§±¢;~ó/bí|DøÉÀ”¡]4Ñ™T`~–Ä©r‘lßÑŠ1=Ná—m»yøàÁ²ÊI¶X“ª¾xfªA6§I²{=7V‚‹w|‡©¡£¾M€Bˆ¿x õåw'ÅSåë ÄŸÌ;Øý+—,M³¨soþK_Ëñ4ß÷þMU8»µ%+á¼Çk“CLò½ß“Ž£=1Ö ¡Ç¹!týèIÎñ¦ªÎÿ-ó ÏM¯“†_aá÷/løºöK¬TwSÅÑIV_Ù!çèvð :^ƒ¿ë‚óÀIwAUôlýÇÚ]ܘzUÕN¾rõôÑŠÑã{-Æî>-ŸTkÈ¥VÄ*:Ë(›EáåñfSä Ë#èÆL½ x•«Eôϼ0ý¹Þ.&¾yfºk àžN$a~Ó3„Ý]¿„ÖO˜}òSO–òmèZTà´ø_Éunú9;cWrº¿79$£:±ñø3+šêað¡H2 í¡Ûb¥¢¬:ÿ|• endstream endobj 596 0 obj << /Length 2863 /Filter /FlateDecode >> stream xÚí[moÔºþίØY©1~‰T¤^n9:W¢÷P BpÐUè¦mD6Û“dòëïø%‰:ûTí‡$Îd<¶gžgÉ ÃÌR<‹Ci”ÌΗ°j­/gúæôÄÐ…@Z”ÿ:{ððç3‚QŠS2;»°Y-fï‚(š¿?ûÏŒ%)J⸨ÖÖù:/ªKùîÁñYß§tGI$åQ"NÃl&’éžß=›',XWçm±ªæ!c,xV”ù{) 03BPÊ9• B&4#õ;M$¨M$EGñÊÇFRÄÅ¡ˆó¾›Ó)&b&/î‚É›­LÞÏa%xp¨/ÿTçÍùòSf8c{5Œâ˜vßý9öõ!õD'¦ût¿ÙŒaÍz_Nñ{ð(>.$A MwgóÚ7-Îp`VˆéÉÑd%HÀä…„!Âïù^‘Eþ–áðŽâí7CHÒE$2Ö@4õÓUµ(¤)då<ŒD<='„Gò)UËôT5ÑàHqVÍYy¹ª‹öjyëŽiéo«9ƒõ2¯‹ó¬,otcÓfÊ\÷iÎEÕE”IÐêÆÕ…Û3ÒgWE£| v%¾èm7Šã Y__ÏCèvU·nÊô¥Ê[ÙÉç¹z9'ÁGÝÝé)dTð1Ò+þsC941ÌŸ¥Á”ûAuTĈ™×ŸŠó\?œçzøyÝI\-,ÑEÍ$(@äê²4ß,ò2“#¹ÑŠE,Y 5G!‘B”:P÷:•©~‹ây$?èGõºqðH^„¾ÄÝå±o¸Ô±XˬÝN€hËä´¥–cì\uÛO®ÖH‰áYë1–«lÕ"×j‘ÞíÇú}ÓOŠ_ "I:’£h¡h´ª_ÝkbõŠ ‡Ø1E*Jˆ\-05!ߟ'½:{9 À@/- §È…EG*#Iœë¥ìþƒ–¦±Ò|¸Š Î!Žl¤¹ÈÖ¢Ò×ö*ׯ›¥m¾<ð CGIJFí.fŠ˜ˆ<†"F ¥çã]nŽbÚ/†Ä&‚?/¼R¶á±PnŽP‡‡zÙ¼ÝR «“  2€¿öª036 žÍv]WO¨F N‰p¬òÕ”l½}úx9ÒŸÞÛçhЇ/>˜äaOóhz…i‰„Ñnî:l1V„Ä™Sn 8‰{—y&—I°!¦ Úb™ëfµŠÐ²XŒ’aP}§ˆ'ΰ©ð.¸þ+À­b“pKlíà¦Í ßœ±%i4޽ĤMK©Ô䉯h¯,ŒÛÐ/¿@àŒJ@Ћz•×fU¥7Pn‘Æ€ )s °ZéÎþÆ$ú’/Â:kó±oh4 ð¬üØ£8I†*êCÍæÝ{¿¶'Á~ÞÅò!´£y$‰³ÌÕ”ÂG¢’Á)·Ó"”Ûè> Ìpá.kõU;žÒ}è@Dd›KŒ‡àIŠ«½ 0Ÿð‹vÏÐ.ŽŒÑ: £Ág9óŠH¯«Žr¸@ŒBX³Ø·äN¢µj"š ƒÍvnñÀkQÜÞV0djeô‘L€@©HwƒÕèuøÌ ˜Oåb;w´IÓÈmM3 íë˜ÙÞÑ;Bˆxq‡ïôSüì€e›—Q %.0xqœÂŒ ×þ^ߥ·É,ÛË.eä{#½)Ý^Ê›:*Õúï‰Þþݧ¢)ÔîÛ•¾Ûx¶ ¾i¢X€/Ýì¢à–Ù*¥ *MGì¡ ^P`ÛnEQSÒ¬{su–‡Áþ%åã­ò.žÃãÝÜn*å8Ù%õÛcû‰O=É$¬3ˆ'zãÕÛJL”N±VÝ&½1¯Wú­!#“õûFk`ç'ûF$5*ŠÉ~cz>5X1àLÑx‡£}v \9w|v磙!8Yý¥Ùxé;¯—vµé]»äöÉCßNí²º1STyÝy©ÌÿF‹w±ªuûùºiWK³ß8ƒ±ÜÕÛŸ¶«2TEÁ¿ó‹l]¶zݾOì`ðŽ\0ý﫳·°¯öµïM°»g´-t¼7µu[”Å×lHO9&‹lÝ`Îv â»\ G~B£žµ §w¹ uÞhK\Uh¨HÌŽKÞIGEl¥°¼"ïÅÆÉé#¾×Nèû×h¯°mÇE’ÖGYpv•ë‰QpuÓ´ùR?×¹j1iNwFû„²½W…xh€íS™Îñ¥ƒ¥³Âu~ç™Qz“92¶Z^¯[åE2o®#M ãž^¢Â¦Úž¤8Ùª–}<Š7›déU,ÔC}ë7‰v|d2/~hè(gZÁÚ­LH©2y@ ·,Y*g®z2jÜÞƒh˜1¶;.þÖæ[T®R®€³¨oîrQïÖ1µWõj}y–¸Ù/ ¢N~e¿4SP¦rØ®c:~v|z|òôø¥/$’>@˜4zÜñ'ñÄnS ›Ò?uS’O³&+säR0>h㑤ƒj%Qy'ÃÉ¡;ß’÷Ð7_©S§,³ÐÇ]eŒJ’ìò²Î/Mx!ù†Ïy¹jò…M×4çYàCë^P¨D©L½èªFB‚^‚oé^ÓYÕ7òMƒ£ëëÁ>PÌ‘”…SÝ"ÃÃóÜÅ"%«éÓ‘•bœŒ‹TH,W‰Ïh[ U:êÐ"÷«Œ™êœFãøaCaQ„@ÏB1[†3 #¸§½Š\µíõ#é›Sp2öeñE^u !W…¾1Ï«úÒ!'Øz v’uïuR †0ÚîÜÜgÄ1xJ:÷ì§°6ö34Öñ¶ï¨C‹|Cy3fé}UÅÏ©ªX~ʲkoYEŒp”ìRVÁ¶–UˆŸ[Vñ…=¢MF\й×Á{üVü®£å”‹­zÌ#`Ò{=¾×ã_G¿KŽ·ßn Ä"þMŠ5éVSˆïMáÞ¾—G»*}«#+OÙVƒ"Ñß'Hº·¨{‹ú™u»–›í^†]´yý¿eöÅ·ÐÛI˜ÉrlsB¿£*+o¾Êó~BuBHfvs¢ŽÏåQfaJ‚Õû¬iômÿ¿ xb·3EŠfÝôêìT¶]_×*_õ¥XªVùö¹ª™“¯_K¬ÈÊuîÔa[¢6ê”PP}ôkê·»2”‰«J-œ]ÁHºO¬*JxÒ­$ø5ꜚºW™#¤„) ÒïýYrÉàÂW?>:mò¼òäÍ'³¶„bćÖÉ´m¯L¦Iv / oþY?›‚£®€¹.tþ¿Kã7þj,xšŽ`Žà™LÔ²DçD…:˜E‚‰ BÂ΃‚T;àœøÇ›rß¹cä‚[§×˜NT¨$©ØëÈÁ[€ 8΄ءšÜêÍ*Åp»ƒå’à‡2§{2QøŸ ÎÒœ©÷ÿbY!è`êÏ êh´’šwWYµ(¥&Èmô¡U¢ ÍiV*±AÝ[Õò ë¡%ÅAq¡ßÜ(PX×úI!EÜ#…ùx¥?ΊÊp™Wy•˜®îcvÉ-‹l‘LmåºÉG¥ýløNëEXôvg\m_ÓæžÂp»¦ †ÑæÙbâÌܲTïV‰ÿ—šÛëuiU4ÅW3tUo·ù”¯Ã U“o°¡¨úòT«ÄE{köiÄ‘ìa{yü“ ÕñVâ”ìp¾&kdåßMz×PÝ=V5SÝÍLu·zݘn*te2” Û]øC¸ ¼Ü£ú‰ÿ¿‰BèñlË4ÿÿš¿  endstream endobj 604 0 obj << /Length 3429 /Filter /FlateDecode >> stream xÚÕZësÛ6ÿž¿BÓOr¡Äƒ‘^:Ó¦‰›>R'vnrI;7¬ÄX¬%R!©8é_ß],ÄW KnÒ›¹ñŒIBKp±Ïß.À'üñ‰&FJfU2™¯ïDn´ºœÐͳÓ;ÜÓÍ€pÖ£üöâΗâxÂ#f#Ë'¯ûS],&¯¦–é¦Éª“™”rß;™)OŸn³m–—4ú$kND2½ÆeuUŸÌ„²&™ªøä·‹î<¼h¿ q$£Hù§Zô9å÷3Ì37ÊÔ± eŸ¹ûW!6-Ó±í/ÈO4ŽbB‰Ñ^¹${ä¢Õ)–ð©ˆCóqÁ¸à;ª((à‘*8 ±>“\³$R“hØÆÞןR·A5 ©…ŒÊHõ5ý6t½Y}\$,Vñê +û<ç¯=™L%7zG·ÍÄ9Ó-E¾cÔ/`ž®Òê.<Äñ4]­ÆÜ{êeÏÊi¤YÒRãNHÆ ÉLiÍ Í™5¨à1æô}'9¥¼ä¸& ÏWÓǯCšÖ1SV×xŒ•:¿úyTPß2†ÛöE”ƒÝòOf|T 4LvRߣ?ØÔaÕ(uŒ‹låúž{Æâ¨ÿÇ縀¯ˆ Š…Ã=¬ï \̹ܿƒ`Ôû 8$D¸(|Ol²:î GjŽÂ‘ð‘*»Ü‚MÒØ›.…À“û¾!Aá3.èrôàÑù]ú nggÏhªÒÓûUÃýuÞ,ý¯Å GsÆûΑÉv‰AZH'¼Eö:Ý®o°1¦KÇ=8Ïëm1or˜Ó=-JŠþÇ¢lðFOëíf㜤¬üˆ‹.0i¾YeDÜãÅ¿ìæZÐdzo,—À­ì¼àÖöð5-]rË¢8j‘DœÖÈ–ñaÚõËà|†µ÷ðh¹HWÄZÏaÐb_—>ηuS®]˜ÂÇ}’á*f‚·yîe({Y&µúg’€!5ýŽl‡{†£°Ä„ŒX$F™­)W‡„vÞ”›óe8¾¤˜gÀA¢ÑV3ú!]]–¸ÁÁöá­š~¹^‚‡¹Á†ˆÅt¾Ë×>Ļм†OWp“69…qg;ÑÐhù¯—Y•ˆjD"w ¢ÁWÌð{ø‹ûžHÄ´È®i$-tS®ôÓÛ—¤¶žÒ¥’îU9} a¼ §UV\6Ë:”4…•ÌD­–ž³&¨Z¶1ʧÿ9[íÝ$ŠYØi°âUVï@Ý2-H׎=Ây>öZ÷FÅõDCö”‰ãÅhgw²s _£ÈSª¡f¢3¾8×™Ò¸ïfÚc‚ (¹š`>ù_0ˆCvøsßf„Ñ{€”ñ@ ®8sŠá³¦ç½žbMÚœ7bhà«àó=8úu´©¸õzÔ‹ˆÉO‰.¤ãSJœCàö<æž÷yYÌÈ&ÌC§å—`ŽhF’®áJYÁ¨Î¥Ò9/³`®Ê º'3‚›CºiÌMëŠ üÞN¸ð™?ƒÉKK0ÀYÈm[«ôœ"Dˆv‘*63qZØÈ/Ï/Ξ_œ‡” sÀóO Õ[ä8ÚL+~#N•ÉNSV ÁK[àc‹-ðS^ÏÎéÚfizÜkÀ&aJˆÿh×€óXºh^!‰­ý¤B„ãKÍÖà Ì2CSÛ6ù*ÿ“l €È™¬âüÒ´–ÅòF­jÈŸ²ç×ü4l"À5×âf‰XÉÁÊ€ÅÔ³üøœžûÃû À@ê‘æoëÿ`1cGêW2Ú¯~ðÞNeÏo[þÔe&KÉ눓Q­’Bì¦:‰A®ô¡n2Í‹&+ê¼yú 1}ȶÈà=U¸Ð rJëЂc¸m%ûâxÙš ,§'îósðžˆÎbðÐ0• ƒè³SÚ0ˆVY½¡$WÔ®0‚:?_»;ãZ8Ò+ÂB—T1ñ­œ30ä’.N_¿w)ªÉÖô¼§`/Ä€`Zy?éB†ªpóTs‡Ót›;é€Þ.§'¯ì(nm¶Í͆èIv!£Ç‰qÒkÝM4(Kž´±/ƒVß§xq/3ZÜË ‚~Zñ¡!>ýg›ªÉ¾¦j⛪@Peo¶YíÚªX?4t=`¯ @„®Øk¯¢o¯ìté·gΡ:_»P³,x(ì ‚¦œ%ÉLñ¦5S7Z®½)âSp‘zHYŽêר2,üZêíz_š·£”{¸GàÚHÜA'äq[»ZU(_nâ”ö¾#’áSêŠùñ1ûû1Àççy¹oùÉÍQ]¶æ£öÈ‹OéL7c))˜1ÉÛ•\Ͳ*·—K0;ôˆ>rËÖ\ñ¾£ ê$bQ_ìÔ¶ƒ'>PËÑCçøƸÑÄ ·ÃþâåãtÅ;ŒÑŒ áwbs†Ê2P«QéÙÃGŸ=|òàáyHØXœi×øsÄÔØ€à¡Ø„P·P·ÊÜ­7'Ú‰#ͤµ‹EÖ5WÝÐÃ…ëó¤•ÿŽÑøO韥Û¬¯\WÛ·Q4ý¡\ú_¦Ë²ú#-ü§þ½óyÙ44Õi•ë×eºÆ—Œ¡’ÔvúcVõ}íôÃk2=Ï\ëjž_Ý ©q´ÅÔÓmJËÎêyy ´ÓóÖìíôŒR1lôÜÃ&q<}@6Z è)êÓ7úAÿ›"]½¯|[yN!o»ÝTÀh7•H~Þ• «°?EŠYÙÆ 0öYåêöqîïÓÕÊÿÈm¢ØxVIÍ@}‘p&¤<°G»£žõÈiGyØ®MJªlš 1à4Ýÿëëk¸º6<Íkwa]™‰eÈÀ"®Óz ’kÐ(M‚ïÁÿl±u×/Ýÿ¥ëìÍŒõÏ+°O°Í´Gò¨{ÉCBªˆ”…È‘°@üÍòØQÏzäöñ¤;ða$Ÿ>ÆÒT¶I+ÐÚ–vðTŒ[ȨBaáÆw® ËôK—ðGÐÀh&»¸÷ÙÁdþÍÆ#d™ÄLŠ‘È7•sïwù:m|ÿó¼\mý‰D (›£.‹œZ·aÌ¢LÏ?»ÍFÄ8*Æë* "e|Ý–yöÒU]Þ vU°ÑÛ7ż^A‚WAÁ©~Ÿå¸LõΞÊØë`æ®üœ°¼ÛÅú½È@õ‘Áo;ÏV®Pé£iDD{|>sÐû¤Vµð.><= £û`7vèÑ•àãNQ»¨É¨b¤#øÙ‘™@Í6Ça`*n8­ü+UÖl+܇ó}mÊÛMûä ÞZö¹X¶Fs½ì0ËèŒ@I{»Ïæ_ð}b‰Hpp6ÕBå¦Ó+i·þ± n C*O¬½ô«<È-„õd€¸[8!ÔÊÙxóÅ­ÄR¶vú˼I1©ù<æk‘¿š ¦— endstream endobj 611 0 obj << /Length 2692 /Filter /FlateDecode >> stream xÚíZ[sÔ8~çWäѽ›ÖÍ’`Ù*`ÃÌXªL·“¸p»{Úvf`þüž#É×¨Ó dj÷a*U±Z’¥£sýΑéA ôÀÄŠsb„>X¬îŶw{~àožß£~Þ&Î3ŸœÞ»ÿLÊzpz6\êtyð!Éìãé\¢•Ulï¯MÖdyyŽc÷ŽN» $c7¤gî'%Ñ‚P.ܦM•U³9—<¢óOi•a[D—3¦£lQ¯·Õ/±¤d6—±ˆN/27µ\oWi‘Më|]º®Åº¬ê´Ä÷jß“–n±O³9S‘µÁ-h´t¿êuûöjÓÔ~JZ®±ŒínW.2Ë4`6å„JGþ*K«fkÀy´>çˆrGGµSÄM·4ºÞt„¹³nÓóÌuÂKnc8‘ïªóUæVNË¥ëªÖ~ËÒ1HV'CVSr@nBT¢®Êx*ÉIÓVòÕ¦ÈV™; œOQÕ(E-·±ÿé_¤Åùz›×+8¡Ž5rbüæYS.ìôÁÌ0”îô±\T°Ñå~Z‘+õæX ˜ð£ãe‹epa$°vaPBAÌkõÃÞ´d!,JÀT‹û9@ƒÒ†ÓŠPã[Ì ·T³+GŠÏ×`²žÈ×°nçz;Ãbë/1M¨«`q•€-¾„èV†ˆžì÷·ÕÒ¿/‡ˆɆùäÉ÷Ù+ ªÙDE'Ûê˜HˆF#ˆöæû¶½¶¾æÊ£ÏWöÄ{H\ ¿½‰Nñ¤b2ac¼þÓDA£Ã7U½^¹ º©zšÂy¢õÞ¬ã&<({‘4ïï’'õÅvÝœ_lšzxê½Ç‹¤årïñö¨˜ø®iº¨«G@<‚X}Ÿ'ŒCıéî-eRДnzõ¹¨ëÍ ®Ñýî?Øò:·¿ˆýŸ.Vƒ_ëí¹sß»Îyz¦k‡"°ÑE(½ÂÍëC`oBX_±‡›~ö|0=ÀMJ5ßHkü ›í<ºÄ=Àrž{øFh§ä:Öæ#'‹<+Ûúùãͦè|A04š!@÷—lÿÉ p¨À6ÿ›£Ý‚pz[’§üÆ íÊsÐ%Më²¶ˆS­khÊôû2ËÕbÙ¹‰ÿÙp÷F endstream endobj 617 0 obj << /Length 2694 /Filter /FlateDecode >> stream xÚµZ{oÛ8ÿ¿ŸÂØC»±â[j‘îŠm±×½lÛ¤ElPm%ÑÅ–]INÑýô7CROS¶ÓË¢hHQÔÌp^üqh: áÄáDsNbMæ«'¡-n&¶óáÍêæ01èÌüçœ篥œÐÄaL'×]R‹ÉåôÕm²©ÒbpΧòÅ,BNßoÓmšå7vô,­f,š~Ã?ë⮜LÄ:š =»ºø×“_.þ’±#Å™»’ê¤*„ra%ýåó?þýî·_çpQT1 ¨"Ϭ ž?BÞÁê[ÄYDb˜1Œn“øˆu Ÿ<""’{£óGE¨s†$©°…¤œ÷Ù<µƒóÔî°Sz­Æ‰‚'Ücÿ˜(Ùß.n<Èm†Ä M‡ 'RùÂÇ6`œÂN )£¼gžJÐ]l}Tï‘¶Q Ö™…Jô§%&ØÀcAñP†“EdÃcBÁß#Ì<:,Q“™?y%ÂÔí‘hHg ѹ—–úQuR9+;ìt2êk”!‰ kˆ1„8$”]ž¿¾6¸Š`1›ÈX€ÕåU8YÀ;Ȉ„C:üff®&‚Š\NΟ¼·ðkàÓ1ЉŒ`OÐñ$©{awÐcg¶ZS¸»ó0‘x‡ÿOP> `?GsµtB/ÛýËbÄ#x¥Òk,PÄqB”øbîqÝÌc½ø/´^Ÿd.4=ëÕ0¶Ç‘¢‘;†‚K-DÔ‡èÏë/áì{o¢ÇŒœØöܵŸ\ëVf¾»ðM_pG,lMÚµQ–Ã)Oà©3”onî«ú|ŒÌš/„úݽYÛö6¹wSòï™çÿ®¿”¶‡xÎøCçððœ©z`ÿÎ'9Y›·§ô·[%Bо\Oµ…ŸšWÏΛ.þÿÏPÔçÎV8|ö3m_•¢[Ʀ¨7”¤&*lJ)gÛz»+ßrŒÎð>¡É6õµB¢Í–ß!•­ìà¥*ê^¼œ4ößýµ%{XÚU[Ÿ[Ú3e°Xö·ÖqØki'ù˜ƒ³H7V]¥æ¦>¦Ûï÷cκháðàXRüaÇDSÑ㹞NYªHnÒ…•ö‡‡^-ÊèþÈã@DºÄþª`ßá½ý¯äÿW¡Òt endstream endobj 624 0 obj << /Length 2834 /Filter /FlateDecode >> stream xÚÍZmoÜ6þž_±ßNÆyñM”‚Þ©ë¼´°“x»¹~µ´WµvåHÚ¤iÿüÍp(­$síÍ!V9‡3ÏÌf³þØ,fZˆ0•É,_?‰lo}3£ÆÅË'ÌÑÍp> üþòÉÓJÍX¦QÊf—×CV—ËÙ‡@&G¿^þ8I&:.¶÷ãÖlM±¹Á±'§—ýŠó%AÊ{¢Ä|( cI˜ÌâD†LHš÷N"ÇC:j®;Éþ©è~˜£-N1X„èH³#žŸðÇÔÙ9š !ƒ ¾o×ø{u4·c8 ‚êšjóq{Ä gAÓ64Xlè™û}kGk!£Eéd(î­OÌ8Œx/e踌T3ç’‡BÍæ,ZN”?Kåô+ñ®BðP*ùà"Ò0V½½´«ºÚެ9ij&ÆËyyÐr6‡-缪×YYü‘µE…{%£ ¯6M›Ñ*q%³ É ò¶ª‘³W\«P²Žõrþí“”)À :ÅWumš;k{ÕfÙ°måÛ-BË© #æI¨t2ÄÇG†`OÑÆo’JÙ°c”‹™“/«këN_,ZÌy‡œiØP2Åè³b³4¿›‘ÇÈàMÞüÆ`[ê–†¯ëjMÝV(=²¥Ãxl7§/N/NÏONn©r¬T¢ß€%º[Ó¾53&¬ºE¿25‚di°ÈQÖþ|>â:0í:Û;éh²4”Qï‹jmˆÃIµW°¶˜•ÔõÜm9X^C=8ø|×a­};7-Îùg¯ê[ê<«ì·KS6¾…pƒÅ½ÁÓ ¶1ޢˣD€v}›"Gá„Á…qöÛ2A|ÎU˜Âç `:†ñ0êwÔó¹'M™ZÙN?Ì//æBIjgÌc׋!REq·ØUÛÞ=;š'ÁÓþgYå â^Êâ ¶}·­—[Ó¿šåÉì7yÓš|Õ³à‰¢¶OÛ¶Ò¡ï³{Q’(S™#~Dc–{÷™F~0wàakñäiß„³Í.ê-òÂlrÓÑ[ˆ|NIøú~S¸øÙ-¹?ØÏ1}úÂÚÒU½Íê/Î…Ó„Q ÷®6ŸŠÆ,‡(;òÔ¹ó¿ÿÁWÏ`ÿ¸JÀna†äáZ¯\çOÕ•ƒ*ð£¬Y^×e<²štßlèãË•¡ÆIµéa«*·VpàyySÕE»ZÓëuUSc:Ï®J÷ý»A…K¥ÙFÎh]=é]ÝëÚR† ÏgƒvYðÚbk¼­4Är³„©ꥆ²2Ô`©Ž©õUrrF/‹×/ÏN//^Ÿ,èV|mj´ÇgÓõ¯ç´ 'ÌÐÒœ)ɤ!K¹ÆHl™È„ ‹èÎLÖlk³³N¤Ë6K=ýt¤â +·.’cZÓI¶Fá¯êbyc@Šéà,kH²h¬Ø&Û!ø¶±¹ZÛ‚e7ØBj†¦Ý˜âk°¨&€³¬Îq¦މ€§  5·Š$sž+lþ¦c7òg>9;¦þsóÙ'å/è?°ï@%cœÿ‚ øøî¸hÓE韌éð$ÇIȤœ©ˆ‡‰x’õ|@îƒä S+"Œ3&ÕÓ$Šx!ì²D“”ûГú8USx–W»ßeUØgh³|=x«ê›%‹Ü¥2¥HGèЇ‘w‘ÚÚ\êP >“LãäQ­:êù€Ü£U*q¤ïc‚W:jÅú®ìÝ K\±ßŽ«à*k¬…BW7ô2¤¡ï«’Œm†±`ºñ0Ç""ö¾rÔKC£gÆÂ>´¬»aã'GbƒÚ¡ýÒ™ÑHï»´’A°qëec<ƒMS! 8Ö­"\µƒ'«¬Ø4` ’ÇS¬àœHx\°sŠøÅg€fŸ· Â^¬»°G/ÏïîÊ"Ç%dÀÍ‹ÆLEöª!kü»(Má¥iâšÖ—•T`pD»72Ønr+¶Ï‰ Ì‹]Zÿq“7PÍ|*—ÞÔ…\÷EBѸ¬ UaOÒ¿¦,n,*¶å S:XqÂ>šSK””c«íÂaŸP„M“×…+¡—ÔW¸IÖ‰l»c›•!ntd oèÎ3 ÎøEáHší]Ÿ‰6ÔucÀ !Qî)­¦¬²å|éRWÅGŸî¤zPß6Ô€õyU”†^):Bc´2ì(6 —Œ³º¥¾%½Ç|Sµ.0ÄBQÝkgѨd™gÝvOmê;3>íÌØXü"…ÂÈ ð¼~Èz@H÷ê \ù¾Ú”³0–;ãñó¡Úå…Rý4û˜Ä_ÁäÝ·`òó£L~… ã*ø=pãן >꺢Ña¢Wžc¬‘£c¬óo}Í*4ìZO±ØÇCÎãìÈñÖ§hò˜OSÖ©%ƒ7BŠÉÆõ?d4µM³~/ÖYëŠù3ð“1È ŸSG¶«dÑÖm%k¹ËŠO é/ìÈfZ±Z›rÙqÜ]D ú·ð™D¢qÉÿúüíûË…ï6ü{uGlw¶é;Ý—šŠbxâ龡c}S¨—]¨‡Fó¥iÍ:ôÂv¬C%ôÔüÔ$R2Ù“¬©þl‰µ“ÇÍÓÖEn“0ã¦6YÛIÚ®2'Õ¦®ÜK ‚H&PNI<¨½4Û ÷1ô¹ê_té6H£JïFÒÇyv—åîœç™/àQ vÝC@D¼¾ó¡nAÎ}ÜÒêëŽâ;w2¼]tŠ>˜ûìCyÿ½ÁÈ[!Ö°ll}‹}3&ßêjª1õ§"wÛÖk×ÝÅ"¦/¼÷NPâÑãW6ûô<Ù¯Y´òŸ$sä º š£K†=w_* mÚ’Ú{²Ã÷û໯¡ƒ¼ 'x€ç÷bxÜŸ>~µÇwÖ5WiäÊä~o^[êóíHÖ@¶1ÛáG´ÈuwY9¾¶´°5 béô–Æ%l£Û-ß›¼Ü.±"¦ w¸ât|Û3â¶Ï¸×OåW¹òpkÇÇÈ<‚ð7°*®¼5 ïÃÄ^`8À: ˆ$ƒÃÛƒÖPÿv˜Bô¾Ê®Š²·im$ëK©£ß|–Zhj.µXŸâk¿/øÒ±!@Ñ{À‚Y…P ꋽ£ Nàê{wªÅØÛ:Û4צ® amµ3 @.ŠBµK¬~óo#cúá"Ä y:¹Ž~óþò±> stream xÚíkoÛFò{~…>Ò@´á>¸»LÚZÃ9ôŠ­í ´ý@K´Äš"’JâöÏßÌÎò%Q’› p¸»À€H.‡³³óžÙ5Ÿ…ðÇgq83R²XÙÙbó,t£ÕjF7ׯ=ÜçÈooŸ½xE3²8Œùìö~ˆêv9û%¸\'Û&­.æRÊ zy1W* ~Ü¥»4+V4ú6m.„ >àOY=Ôs¡bc_üvûgW·Ýü‘O$!(ÕbH)ç–Ù™¶Šq©ˆØŸqBX‘ÂEÌXįa>À÷£µGœY#[ÐEZàŠpñVË!¬LEª…}˜B3Å-D³®ÊÝj½Ý5ÌÚ!ì<Ž™ár6!‹p¿¹¾z}u}õöòêÆS †ŸXàM4›sÃ8ÚÕq3E @JÔ’ò]R€ai¯^ãà›‡Ç,_f<÷߯£ià[ÞñïMÚ~üÏ +ƒ$ߥG‘äuVÓËû²¢áoóÔÁ‹ øyp*ƒï{B šX‚ЊÙP·t<‡/#|wuu…г¹T†) ä’ñÈ3ði¬’¢NMVH\¨‚² ëMyßÎk‚¤JiôªXeEšV@N"DðÞÑ•³td®üpá„N¶U–#Ž(à±µ~t»õ`ŠÛ?aélß&¸ ™ši;úŒUì|Ž…Ú;É_^£¢í §eôÕë,OëÙËYEÂYºÔ‚ɰs3¿xÛC Í„étý§)4azk˜ÀFEÝ4×Çè¿€äÇÏäç³H~»ÿ_Óå]±Iª‡ò½ÇŽt5dƈ¡sŸš_1¡: <ÙÜ-“ÞÓõ`Ò öäJ H®#óf ÉynŒp\~?Lqf¤Ç1èþžÓü¢Ì_”ù?®Ì‡8ÌÓqlŽ„>kÀ4ÿbÿ­ñö3¨Ïÿ€_ל y5þ¢Å_´øÿաϹ…ô~ߣ_–(ı0ˆU°k lãAöÇÅœI“Á}‰¹¿ ã Jkª xtà2h²Mêß&Xºê0­’•G÷K[ºÍÓbլ鳤XÒ`ø»^ ¹jºÒÕá˜hMÕÞKšÌÕÑø¦8lÄÀè‡ i@è_C®Š ×íð$Ûd‘¹/iÄш€ =×€9OihÜÉ“º¦Çòž@ªH¨›; ’ûrßb¹oƒ‡ùÔ2¨md€fö+¦!làõ:õÃMÖdÄàùMZ½Ï­èú…ÎhàvMßòà~ î¼ ¤·0’g°Öü‘†VikR?Énê2§Ù<…ët´ZÀ®X¦Uþص¿Þ€å;Žcá=¹õ¯“¬­!i Ò_ã›]MÛlåžz‰ÌDõ«RzN*OªU[ÄnP ¥["N×Ð0JÃáK7eõˆ~žu„ÚCoJÄ, HÖów‘¡N,’8cvU„Õ=2­Á7ÖH›kä¬id½ ¼Ùx´I‘ )=:Sr:jdp‡_<€SþÌ#¼ï‚>­[k2AJ"û °ÌsÇÝYVSjµ­Z㩚,­_ë˜éOé˜Ý®ÓÊK ý˜º“|ÊÂ)””­¤ZƒÁ— 2–¡x»º)‘W bXG7lŠÐ¹Ÿ~鍿/’zᛄh:g@ƒë¤žjfZŤéP|?9‹vtêε4JÑ Dà.SÒÎéÖ)\šG{½Ó1bÙ. ˜Gèà~:ÕaÂv¸øÔ|S=^Óµ ^âEÓÅ´—W4øýA´íÖ¿šî÷ª° jG8Íãa2àã!˜ÅFZ¿rcAòLK3fÐXd Tyô·#ªª®I’ ìœ•Uõsß;•šYÐ#ƒr.KqîVânº4e“ät‹n¸ *.»Ñq`Á‘ò~’FÂZ÷r/ 3±!^è“Ê"a•¨_CMÎ(X,칯O¶ö¥ÕÃÁ9’ϧgÅ"ß-Sϸ;J!ÿòn<“¸§‚O50‹ÂÌ\0åPNÈÁ9'7œFþc®”òfP=rtB„œ\TÓ£!ÓE'urJ©èé›™wx úË{Œ6S標é-éß;¤ˆBņ“bw·çÄŸ»‚;>œqÚ{KüâOwßQ<á¾aÐ\©C§Q.N⃠|Æ7¬ÁQ‡oÒ YŒÉî뤪 ™Štàà5¦@ôª)ý'· á¾/’ŽèC¬:ÈgÚÉa† Œ oã>‰oÍv$Í$0øIÂCáxv”•÷r¸ƒíUm2Zëù&)QþØû`»Ë“¾t®³?&•›G–ÙXîrû,êw½ýºâ¼ôÛ¬C¢Æ¹Xýƒ3ûç¡õDš§)BfO‰y2ÓjÜCØPòêÓÕ^ ÑÓ4U¶hÚ|(OëÎ8u©oº¿¤Vµå¸y9I4î7 Õ=—Ö_y}‰‘«÷»R±}HhGèH§qÄ!Ä=,9H{0­4.Ó*š|© ÊwT|Í„n˜É'y9ó$µ6'}Nž8äÞçØ¿âs¾•°(Ë>DP½ëe™´…I^&ËyuPëy–Þo|J6{À»i?Lò-t1²7ôìÕïGRÖ˜6Ä…XîUn j¸›Jî²)! î0êãp›GüªO£>gýýгJfžàWÕЯžñæ¤À$^ž÷¬BFLHó)žuÜ£ó.±Ýï|á;8ד/u¾T7࿺’ …‹Ïeö–¿N[> 2âƒÔž`ìÞrî»I³«."ôƒ)^–“ñ ØÞs(»÷,ñ­6Èp¬Æ­dç’;ßã]w•pä¤aÔyym³Orù-¾jü»Qz$EŠû¾ÂÓâ÷ïÓñ›ƒÎ´l®ÀÂ6"CáÈ»¾¡»C½Á×ˬ^dÛ<+R_¸ 1ÀîÕ‹Ûù/·ÚaØ Å ÀÃCÒnÚX^ø\Ð U—Ì*â^(¢M;R\Hk—c†•_‡Ó)Ч¥wª6f\˜ñ’»ÊøØI½Ap8â D¡¨‘ljÏй„ä@É%¡—ýЈÓFèÞ´[ôn’©P-p~†©¶~¾SÐ<'ÌUºH³¾km¨-Ð7ËâU’ÌkŒ´,”ñȼ.OtT\N“ZÌ1Å~.Òa(0m¹"\ 𱡻NOñ!óß:Æ1ê\u5¬p)hWÃ:œÊé‹ ,^öôE…LÇü˜ºø>nÒ6w—U¹õþw9}LSpʲÝ1MÄì»·?üt{Óob óšàè´†Þg²VG©ŽqÎ=ìP‚“\d©í¡OܰÑÞ×à Ö¸•c¼c«V¸§àv¼6”ëÕk—á…‡‹¦¬¦ŽŠr™ÞèpJï²»uh”Ø(ƒCÂhpÒã¹eQgà,݆‚&Dwõ'>@ÎÃÛû®íá]†d*V{^rØ ±¦^È»£È³ Ÿ$AyL‚j[ÀèíaÓcŒB+¼ïÝNpϲ8êð8®ÀB:ߎ§}ºÅ“œçÎ0‹¾áC›~:pÛ>pí·+Ýã^Bí✠Ń·]„`C‘cytÚ¨Tè´qÓ©!ޏôHÆ.9‡Çz‘äI… »6N]ðƒ—CuqØü8%épsÐ+q(»^ÉX§%ödû4hÒÒ sÍ\ê»ê\Œ ƒšûµû¾Wèõ´ó„Ùо&À-’:6:í6¸O(]_9<èâÀ wÝ,L2èâÀ+ßÅqd¸.ŽmÞ=(Ÿ¼­éÒþ=[›jíŒlL&ÌÁá½—«÷þñ+ßÞÚmƧ)F1€ñòØ¿ØsÇFÿ;À&Ý1?ã’ñdr¨Æ‡/NÎøÔD8> stream xÚ½ZY“Û¸~÷¯˜Gªb!Ä ì”—7µÙò{œJÕî>ÐíáX'"åñî¯O7@öljªF$Fß× ½Êá^ÙüJsN¬0W‹õ“ܵn?]ù‹·ÿxBC¿9tœzþýæÉ_”òпĿ–^Ý|u³¼ú%“ùì·›^qc‰ÑFq­ÿÝ•»²Ú|ÂgO^ÜôHÆÎ”{ˆ¢ØXJ 1WÊB¹ðó>Ç Ad5î'‰fº“ì×\æŸá =£ÅI ‹à]×Eq_,ªvÆLöûlÎÎêø«²¦Ü~©¥o\”ìÒ–[?¤â‘ ¦×ýôŸSÓ*’ÃjC2›«\d7·Ýð{R¨¬Ú,V»eÙøçfsxT··þaÛ½÷a÷kN9åš‹ÍÒíÓœrJ´µxA¨ôSârp|×™‹¬˰˜Hã*'Ú˜NÒõ÷)›jBÍxÙBà²gLg;\ça1p1ZL/Ÿ{P5)9QéJ©nì ¬bžŽ1¼ü“–˜oÎÁ²en`“,¡:ìÒ›³æ­žÞgÝí¶Ø4U[Õ¯Éûmý¡øP­SƒÆÛztÞ›<4÷&?›Ó,möÖ®D7Y•’Gnûmí‡Í#N¸–¡:uÜ%—L(Õ't-sbrt-ecM»5ìÖøß;+Ú±ÈsNðwð¿Æ7m÷À+˜f^'"§§Âæà¢ö²p#döªna–0E{ ¤ÜŸIÕI?0:s;¨Žº2™ödBýGN-œü¢—ÿc¶¡,¨ÑÛðŠÍ#ׄ)â%=¢VCê(œÑì§©AÁ»Õ°ëd”`Då}— ã!cY½®Ú¶\>Å;‘«•o|nû/Ûð¤hšÝº\úçoð{[`oo~¡[Ò÷ª& Â%®ˆ54Ö j>µƒ‚0Á¾%vºpðÌ‚ävr{°ø ª%á÷Œ0'ƒ¡!bÀ¶ŽM‚ ËW>bØ€ƒ^¿¿yóþæ]Jyè©}Ï÷ŠQŽFΈâèš-Q²»âÿ&…t°„¨®)óÒÛÇ\϶lî= Ù4!Ù´Õ:¤ƒ.Uæ"=%#xyö¶§×Í(,ˆŠxáÿzÌ…Üp[|‚µ1™§3>ÀÌÁ„Í»¦­×ÎÕ±¹Úøf‡›°¡×”ëŒÉ䨽0.ˆäêüìñ4ô0± ì0†« ì%1¶·¾^ê­OEhDwÕ´>ò0Ë5ð¾V±Y¤wPj¢âíûÏcn_{»­wŸnïw­—Å1…Ëà å†äübKÝ N,§àÑ<N¯^ß¼x—C“<TâI‡µ=¶&[ÔëûUùa¡v°ÚÜê,Ú™ËLÐRa§upű„–Щ‡è‡¦Ö[Éë”p˜%åx/|'j!hYÅÔ]4ѹ‰œ’æ ,«¹ñ1N Àƒ`2¸^?;kB²Kl§¤ q1zQÀ‹}ø|–†ó9‘ >ÉŸ$B¾Ÿù’‰Ä„UXDq}Ä4ÞQŸ¿€Ï(•ÑÁNÇ+È“C¦-Ã2YÒA5 ¡Q7ŸþæƒU„H W`ó€Ï@tŒ±@g0žGíŒ0Ù̦hÈ]».&p=h ³ÀÕ¦,—¾«ñxÚšzÕƒh.|ëªÚ”Å6ôø½ÁˆÑ–kÿPµ· ËáíK9Û±Gm‡~«éð3LG9Óa§M‡i:ê¨éæG ÆÃÙ`<°ŸÖjY¼Ÿ»ÍçMZØ4!ì…¥‚paÖ…,Åà«Â;’ðÙ\*ž½Ü­ÚêÞAI-³ç«‚CÓø»—…fËrÕL…'c,¨ù'LoŠŠÄA7*¶,VÉ`º¾ôä»Ö.o‚™VÙ¾^óˆØ¿çHkK܆F0ã¦M†/{@Jâ½¥Dô‘cYùêEÿ~h'rÙø)]>‡Æm â7­W2’†ÃD{ñ¢c+sÆl÷Þ˜ÀÖ±Ùë#•d(×éi+a´7ÝÇÊͲñ“`XÇ) "9m>æqï&¬ˆ262áÅuÒˆA†ut°ÐÊ”rðo#.Iº@möãÌ@Žßú™jT‘Fdån#“óÛ„Aóxº ¦,tÝÔm¸¢U,¨Æ]±‡tù ¤ä¼'9ÏÒI"Á»÷6‹7çl† FF›áã8¬¤Øn«/3©€ù†-~ôB®!(;KZ è[ÉG•/²•Æ Ó‹Y~ÓØ@LêÄ rËÐ`œÜþ‘Ã=ê˜{)K¸>ê]sÁ`+u\íü>HÐú‰O”¿,a¹½Èt%€k0]áL×/¤n\†…ÙâPé6)i£fd£1ø¤â¿íAÝ«‰ÂÆ(º8z¯²_ÒÔ €©Ølœb ÑJFx‰¦“'b›Q¯k€Jg?àò?ºû¹ö¯6Ç9É]MvéyZé:§ãù~óZë-.Ü{°¹ÝÊ‘í&$BbÇ am½}êIĤç(M€qìé+Z*LÅ^“ŽÿÊúÌPŽi^:¦=Ó’ëqÀ]¤q?ÔÈ3°Ü¿ñôöè…t 梳ÀiÔˆÓmŒ ÞxPðÆÆ5BGÇ_¶ÕWl¾°äŸáª{Øay;àrS:‚ä\¦Þ~­Uø-Ò)ˆÖCyúyªJêò¦¢aÎÒZ…°ßoýÏÉ(‘Cµýè@âÏ’è 3ÑúuÑ¢ÆS”Vä0¥Üƒ¤o&ÒŸ Ô\¨ž.¼¢7²7IHçQlÒyšôÅ#α”®4ÚDDnŽ#â˜B$}¢²árßÁ{òÄáßàÖ¯¦q²8F$QJŸô`}9N>ÐãŒ(¶w¸õ]%‰8,ª üm\)“b   W6"Su#9œONu^ÙHºÊ6r³ß™JZIA}3²l=>#5DÈãGÐè‰=Æ„Üñ[›Hɉ$‘Z]n;ió°¥8¿9VõYh¬DÚ(m¾(âЧ"T© 4!‰(G Ô >T¯‘#‚À´™$r`'²Þ Œ °P‡ÑamI’ÈàÐS„LÕè#„LXsœ"2’+ƒç ôØPD1r ˆNgÍnñöÖß>XÚ mVfŽßÉ´ ±i³MX÷&^ôö‹¸C̮Ìúê4~—éŽð­=Ê·À—? \8ìˆp¹YÂÅÆ_±:AÚ¡qšöÌ©½uE¤‘F/!YëUÑáõh“?vsG4I,ò.s’wñÿï:´9° NU0ÿý¸üâeYt´Â…Òܡؾ“íˆÂ—ª©:dpyÌRò[‘GÇNÔ®QÝ—~•ƒ’ÿÿ®?ý endstream endobj 639 0 obj << /Length 3156 /Filter /FlateDecode >> stream xÚå[ێܸ}÷WÌ£qsÅ‹xñd$FìIö2XïCOfZvOkÜR¯×ùúTñ"Qjª¥±<$00RKT±X<¬:U¤éEÿè…É/çÄ}±yx–Û§‡û wóÃ_žQßn WQË?]?ûêUQ\М˜ÜЋë»XÔõíÅÏÙËíú±-—+ÎyV¼¸\ QdßËcYíïÝÓ¿•í%ÓÙüSÞ5—+&ŒÒYA/¹þöÙŸ¯»þ Æ*Š-O5U#M¥„rá4ýk ëì¶Ü9µþ~lmƒ:|õJòøS°5„jî¾üɵ¡ Å56QD@Ï+J$W®Õæêk74X‘Z°‹¨áOmµ«þµn«zšžÕwîÚ”‡_«M‰?D¶)÷h0´mBCÊ ‚ư“ý¢¤-nPÔG×Ëf·n’£p+Død“ª‰2´8”ïeÓ6&]‰ìzë5?¶—4 QdUã:¿-ßäTìË[÷smAk ÂÚ“ƒµ¨“ßZ\gw‡õÆ‹‚_ÖZÜdmõàßWþ͇mµÁnÝOÿ½E›úx؄ֻÞ›îîM^ä)ÉsT*ïûÅù@yÞ¦ûòñà ´)›QŽCȇºÛ€hŠöÑ"ûÆÎ²ÌPš›\0†æffvuÎB g\•­]¨Ó®\ ´‡·õÁ½~¸d*;ÂíÚª±ºÄíd¶ëÍQXsìÝ›Ü++bM•„ÑNÛ79IÀR¢`ù¢%G+jØ#$7ú"jØw:´’í´C4L„—1´ðæÞÙÉÉó™U'ôÉf&†>˜ºÞ»+•fvTmé f ~wÖw?šà±ÖaýTDpá$åÒMRBcF RôXú,OfínbOv[îë¶ôƒÄeã¾Òÿ§HÑyªöpYÐl &?B’‚Ñáê©öm¹oªöcJ ³Wt#ZïÑ•H¿¬¥xx¼Nº:ˆ ²àŸˆÆ«ÀêŽÑøuÿŒPÑÙ៉ Éùþ‡¢r¢Ùÿ?&ÄI"Í"ýO¤]åtἪD7L»Y£¿pÏüÍqËàÁCUøqXVYéfšåŒäV§h¦ï庣íÖ..²z_’ÔÐW€&邳ô+÷‡ÄØ5a» ^©ŠÿG¿×÷v* vIÖ{;z\l.òÀËò7÷®¬¹OÊus<”ÞBkßñ]½ÛÕ6Ùo^œK¬ÅSˆ×\Z-Siu7G"‚1NÌLZ ÄPªåA19Jˆ‹JÏ‘K3?FE g f Ù–!F2ésœ«ˆÊkõ]¢GZP@ ,*é«/CÔƒnŒÀQD_rðoýšNp[‘ó É{Ê 'øíŠIøÊ ƒÜ™'ñ¼e,ïÇM[>8DŒÙ ïh¼t~êì‚éˆÄ¹­Æ : ̆hçG?cÌŠäÚüǰó:w§ØÔ( °#bì<‘ÐÏåFÿHæF\ŠEPä×,Ç8CÉÔ9$ö„L¥`¯#d:…Ã(äœ#dZ™§#q‚Õ4v‘¼HwÉí¼àgX¤Ç©Z„Sýé8UŸÓ[8è)`IN˜m‹ÈÒ‹xÝ ²«óÍ^Næš e.—3žA%± )ÑB/¬l| N ‰‘‡\ØÝ¬³=¦¼ôˆŒmY…L@Š5ìâÇzïÊ 5¸"<ç3ÜY#î 2ûzw*’(¼ ßÌxAu¾àʉ.v’)%ón!ýÔ®\ Hç9 ‰ ™ß«KÍ]EZ¯ÜÕÍû5Ëö£Í¢ç.Ew)½on«DÐ6"±ðØù-xükÕT­{v@:˜^iY_ž²ا¹z;Y”§Ón‡¶¶$<âpÂY§B3QNVØCM¢qã\ûA~ë­ VÈaUæ<éåàÚúBÐÛ´?P}¹4¤E=Ù·#|‘pÜ0ÂBçä¨wr:ødˆ…!¡ýCxƈÑfúÙï»J rc¾ðc}†«ÃÜ•„ÿ`J‹"Ï¥l0¦H‘ñ‘ñVXoƒa¥Ü$By¯µÕyØS4Þôñ:„¸±R ™ô,ö:¥Ý—h¥·Záæ«êŸjÅâ\x2ðJ/Öíë§8³Ã%§ÙU•Ü`#Tªx’¾Kæ+yž”xÕÍýx¯tˆ¥^Áº€ŽÒ+›ÁŒätä2Ó@BC” "_àEº‹ —+÷ð%^B÷[(¬ _²ï×¾J.y3í6±haɰ°ag°$ž˜ˆXÚ~Œ Œ%¦|pÅ›Éì£>käÙ`¦I®hŸ|ÜÁhö/·imå«wLd?VÕn}Ø}ô½×¾‘ÝÙŽ±·Ýɤ )uYÖüf£mùŽ«¹C¹ \60läfZu¤ïÝ–ù®­B§ðlzª¿BnÂt¿õe4õÎ¥y^ÞñÑ]í¸œ|må?îª hèÊÁ^b½Û¸øí;9îwePãCÜÔ’Ag P>u.¡%¿Èü¶FÖF…³Ž`–ë Šß†ÄÓÓ´. µŸú‚7Ö±C²õ¯ÃþP¾/§Öî­ßWÇN`1@ý˜bâëë‘^»SòÖ~Æíš¼ÇÓv|AåC×-;*£¦ê–V!¨È!Dê§9³9– §:߆O QÃó„Zà»Tç»®¦T*$õ±J¿KsìñË}–¸ˆÅÄE}âÂóňËpgˆË º5C\ä"â “ƒbá„û¦‚ÿO–“ðË!!` 0t.ü2›Øž_§bÑ:¥³ëùÅÀu¸ tö¹O»YßT»ª 'ì[›.ê#Á“ò7È÷n/œ7ÇYvïâH¤×îÚo¦À™¼O¿aû6ß‚œAb‰ºxécVéꙆÅ%Ù`·n"Ö’êÀ1T‘㑯Lµ÷–orV,J6¦½j®ø˜Pá1 ;[‚Ëhðñ`ðµÛrÄWXÿÅëtýWéî«»‹í4ª]Ý ÛΠÛs‚i7´®/&Í€±¥ÃÁsÜ ¥–6¤¦VähÝQ£Ÿ‡SøôÁá³w8à ª Ì7&a6íã®ÕRiI¿ â ]TR>·¥¼Â@cçoa×ñ1š? ¹>>'㸛;Ý &ÏRC‰`ÿ-ŸÑ'Ò§ù¥<¶íI±‹uq§S¨ôãî ²\†'v…Íç¨ñ øÙÒÜã~ÓSïWÕ®üÅË”(È»aÀâ2ñÏ^G7’„)Ù—4Wƒ¼M‰Ã³4ýÀ/®é×îò~¿y°Ì=x™|°äEK<ŸšÒD@Øä#4 å tÅ“¬É¼›lÆçÂÿÏÌV˜I]Ÿ§dàn¸ð ¦_Qà@y®1öeýðx´ÇDŒ „C§Žæé‰}Lã–ÁÕÛÊ6vg/Sõç ›ø+í¸AŸã£.{I©‰³s<øþ.• ¨Úmzg€hÑqÍ×~VêŽ$ŒÎ—ħû›þLXŠÍóØA% AD°èÔàP¢®íÎÂÿIóo‹dbx endstream endobj 645 0 obj << /Length 2386 /Filter /FlateDecode >> stream xÚíZÝsÛ¸Ï_¡GjÆÂ_Ñ̽œ{î¤×Þ¹±’¹™4´L[L$ÑGRIüßwIõ‘KÛg,r .‹ß~‚tÃéx¦8'Z¤³ÕöEl¨ÕÃÌ^¼þÛ êÆ-`àÂùÓòÅWRÎhLt¬élyï³ZÞÍÞE’Íß/ÿ>ã©&©ÒÀÅPÿØçû¼Ø=à³?/» $c'J‚#¿Eù¢Pš’t–¤‚P.켯~½~³¼ÁY¸J˜?FÑ’Û×vŒLü1’(¦Ú%ü;–quQ\Ôà’ºñ]H kæÀ˜*©}í±*o³ÛbS4s–FOóW"jÖYƒW<Ê,aµÉêډɇk’$•¬¢ M« i7"]×eûy]¬pÚµ›¥Ü>nò&¿³s×yõ©XåöYæ^Yå;|£É«8,–„õÛZ„ÄQ$å²aV5[pž–(§'j¹·²p5%þ›> Šãý!4{J”투¶Ü3Ç|JË"%qÒ¾TO±©˜ÌBˆèrƒ³ÐÈMU.«s„»!µ>ÛlJ|òÿåw$Ë‹9‘L9tŠá¶Fçê.Û-ÙÝå_æ –ÆQyo'“H’Èn’Ux»Uˆ*¿Ï«|‡ B¾u“5E¹»î¥ ŒÓƒÀ¬1é¯0¸w„ vPBŠ¢§£D —Áz1_¥Ñ}ˆ¤êUBC"I"d'÷KG¢¢¿àObTûóÒ ÄaaiÚryëGôX¿™5‚‹£‚$©îUÀDØ×IåH•c-)IÏãs6'©:¢!1-×ù4ÂÁ·3=ð"« þ²3èOE] w“ <àÞú¼¥Öë=¡1Ê*d“Z•¨1R¿Ñ%1UP³1¨;4¾=mÆ‹ª›xjrÁ„¦S0ë7 ô±*v@*rŽÌüÖ“}^çN­â(îÖf§:†x%‡1pàDëð†÷ª¯íæó¥%<î«G¼ŠÊ:¯ÁnÕf½…‡Mm™5kˆ)ëÇ}ã8:ài¿ÅPcf(-ñÖpµrÇC„"OtT?ÕM¾µ×=ó •*Êvwö‰ÇɃ÷™ýùPÞâE ëoöÕÎÆdT¶ Ý,ž~̤N?¾`]4]pá­‡ ·@\gnïpQ†âÇ{¸-w¹}cõ´Úä¸sü5¿Ïö›Æ>hù[–h.»º¸«0Ônßð††ôÖÆ[»2yþʸÏnî˪‹‹–b ?¯]`&w ©H2ÌÙ~{³<–݉ó,¨8-‚ËØoñ¿Qe€ñWd ®±Áù0 "ê®tyuƒjÐ2ú\.®_Ûçæ`ˆ×7îLÍ£Ý囬í¸h1êR9Þ¯nl«Ø¼°\·½ +¦ïîÎÇžªµkXZ¯u¬ëa‹>ÚÇSÍ7šÄ~¯+Ø|’´«»†M7Ó=ôÕu¤ñ–ü÷oLi’0~nãí´¦ÆiGC–Æ+gGͺp–åm"ÜY*‹Š]wZ~´Ü8 7øÁ•Éþ+ôž(™]Å…Õ˜Á*ìý[wO™ w O<¸÷m§ 6‰w!ÕqJâç´ƒ&5‡NDÐthÉö|W¸nµ~ƒÈÃ\ƒH¸¦µ8Ô JTàë‘qÇBô=Ƶ`ê<â•`âDÝL¡jø ‹‡_A0D#´D|ô„ƹ¡R‹Q£æ®M "Äh7zà ×F4¿!à ãžÂgI”PÎNîõ©Àõ?*2.ƒ×ßÜ‹S"SÞ3=Ôh60fZy0f:ƒŸöŒ#,’ñÊ|󣦑,AžùèM÷`óŒ`óÍLp°ù¦1ëVù1ÜÿgS™ÚÄçog™‡¿£OÏ l(vÌ@`K¡t” j(îCàÿ‰A¬M endstream endobj 651 0 obj << /Length 3265 /Filter /FlateDecode >> stream xÚ½Zmoܸþž_aô“\xeñrÚ­ÏIsmœ;‡Cï…²+{ïJޤãûõ!©®©];,‘âòeøÌÌ3C’ƒþÈAš(Æâ”ëƒùúYbjëëûòþå3âÚÍ álÔò—ÏŽ_q@’8MRrpy5îêrqðKtºÌnÛ¼>œ1Æ"qr8ã\Dï6ù&/Êk[{ž·‡TGwø¯ªošÃå©Ò‘`‡¿]þøìì²_PúȉbË3•tšß»V¸ƒ‡35³¢\¬&Ñ-´PQ^.œ ãxfBÅ&­âT3;럾/ ¿Ms,ª³¶¨ì+b :=­AyvcOÇB ‡Ý·n˜A–P؃8PWÊÅNÄ¥°0ò$Ä}ƒ0%·e4¦Š©õHhLMMÂsg’=.´R[©^§^]YÁÝÛ¸q@¬@øè·¸‰¯ËÂÁ5«¯7k'ñ£¦îksW´sü¶ì qÑtªÑºV«ª7Íùâ‘ð}û(‰×GÅQsôi„í‰[d]}Ì>«Âø‹{ð%2…õf­}Ëìc‡1ËAx7‰:4,¼2ÞìSõÑõY­oWyk$…åÕf\7¾A·šD·¤ ¢®çbœªþ¸Øk]mZ+zØù°H¼7z–î3æÓCïSœœöc£-ÃN3×÷”Dt˜q3ÕïXžAÌS«ÁÔÐðèMÁ'5‚µë,õ·\"é=ÄÛЀ fÕtƒ“¤× Âé†Ý[nÔj‹ÆîøNã=lUÅ`—úU>G*$£e…ãØ_}1ÿkœ¼@ð’X°Ù/­ü–>Z/c ¿À¿æ‹zWƒÞŸE‰ßJÐçfC¿¶…ñˆ =¢C›¯·Ì]&·_ÚúQ`Òà‚šj¢G—ï7¸d¯Á½êhÊ5€e‡§;ŒJ|Ë"Ð6Å™3Šôe²Ë£ðo  ÁµQa:2ÊB+ÐFás¿æŒîB?‘ALQc‚~-eú- 0ûôëƒÈ„*¥ DçfˆÖŽ¥1 ù„îá›):¹ÙÇ"_e(ÏûR4eœù« œúsg"8r[w* áõ]Ñ b“²†Þ…:¿Þ¬²Ú>÷¶9S+µ žRðɃ£ûƒÐ£=Ò3’‘1‚ÍW$~ȯ²Íªu‹j‚*&“åËãɈøë.DÀî Üñ{+{Ðk¢'ý͇˷./BbH|žôáûÒü^ }•&1QjîSª=à m€€Xp*'9–ePõBö~r¥ú‘+.øöMTk¦5ÉO$ОtO#iîM äòwŒ‘JÛ³ ’ô³ ð&±LSÞ²ž‚©Kc%ȾóeFÄL\F¯.l¹r͆‘É KÁ×K±w¿Ôök œÝä܆É–¹½az+æht[ eÀläºVhN›—ïÞs%*Öæ¹aD=¹U‘Òg×YМA–öpüù)Âús¨?ðM#¢ò‡“P0=$n¦8Š¥|ƒôþû¤É]¦ –{3 é@Ðë¼¹50®JtžLw94|3ÌFË}̆È8öìQº)“$º\ºaLvç¾ióµ-u?zЉ†0?•;e0cà_´J=DÖ9˜ä¦u‘úܦ¬ø`£U4ZØé3÷Xö¢j§¨=¥c®µ#GAûçOɸt„¸7ù0Ä)Ü’ù÷}!ž!äÊ®Íî§ì\;o¢wø+F€ý”b1(FèÖj‚Þ“‡Ði¬…x¢"¤"è§/Ùbñ“í|δ@Åå9°­ûJQ8°îó¹Voƒ¹ð¡}7ï‚#|$ëñ¼Kûéßjm¾$êO(^ ŒËÑcjÛlÖ“¶;‰wß B[úÁ°Wå“ןÿ_à‰Ü.ëjs½«ælš{îI¹%ž£~ ÖC4Ÿ&P¾9syvê9>,NÊ!—Åub±ˆ/W›rnù%–æ6ÉoΛäóI ž8x?s9||59ü&„f fq q?…¥ žgAT—ø2³ð“ÂXÕEt¾PÅt°"˜0GŽÉà9ü ª ”€yÑà1_9;Á¸Ž“t+·f¥@äXxPrƒ4î¤e$<¨í†)T»(´É“,“M˜3ˆÊñdzgïÏÎO;ëé§~ñÈQøV¡‚n™‚­ëµîlaÀÕšªè‡Ÿ2úwö»M°77‡xfèýX-KÛð?Ù²ª?e¥ûðÒýîb^µ­mñ²Î–ÙÚ}7XÃÚåeÙeÒÛ¥ýÑil¿]ØLþ¼¸9 íð¶ßm2 Í¢ËþÅYG¦XtÑÅŠƒá1ˆ‡Èb•óüL7åÑ©eúõv{ý½ÌV÷üúCc±ú»5Ûº‰ÛÌ£×ݱÀª™ˆ© §biÊ¢·µS7{Ù@³èŸ`hÜG’jo_í`à,×”ióì¾ÞѵžšÛË(ÒOCøš).Ûööäøøîî.ž7ñ]Ö n«2ΛãeµÎ›c니&§jO­W€'ÀRâgÑ1üçÑgô>¦´µ$Šç´@(EµoI]ëÙ¨yà~Ív§=Gëô ©iªÑÌ€à1‹l޶ð8•¢=vþ›ÛЉ­HçV”(ELXo[þ¤|ã<Þ›ÎÞÚ!^wNeeËÕjÓMbŠC€Wn=á¬KœÛæ[™´²@zšKâáÊþÙM›*ìZãVc<àöú¢³wÙª©N‚WQÀó¾÷ÏeÕ­þÞügŒ·!oè¬-ÁVÖ‹@Æc7°ˆYLS’F§«ª1ñ„F;í„æžTÈ@Ð˃¢˜w&ôs ¦çNæ.L±Ê$J0ª¤–U¸Ü¢n«Ûÿ®¹¥àãs9_CýºcL2ñ³c‰áÉÁKÃ@Þ‰áÍ`'‡2¦CŒpê6mØþóÐd°qì Zf„B;Í=MŸ·›)w™fÎQZû‚¿8Šp Êæˆ)T‚` ‹‚v&„u™-ÏÝ~šf©é"|ø@‹í±Ùc¬ìN}¶wþ5›·«ûÇa@'wFA S¡Éƒ«úÅÂûƒÅ¢+:·ÏÑ9–%Á•¢÷-§Á™³XRünæ.˜x?! $ì¥/!¢;`8&)mRãö51l0”÷%“áPèüqÁòŽsµd@ï®PYÉ}9¡ÑÑW— 9 Þb5˜ó‰Î’a8LK$²;qÛŠ®è ]g RE'øö¡ºÇs[y6X`ÿøO ˜Òâgƒ]Ú$ò:&OêŸãñ‚…Eù¼5¹]¨®ú6’ùç«(EÓŒÁ,ønHã%Ÿ~9F9|^~UuA^a@Të”\Þœ„Èõ eŸ?Ž^'a²ÎµxxMãÁù£ bKê$-K Ñ^¹È{ˆ9µÓb Vmh5º’Ny>u3„<›¼ÓÔÊN<ïb£,{úÌ'OŸÓ±‘˜¸Õ«i!hÀ„‚ ‡K߬…4Ö£›IŽÈþg× ^ endstream endobj 659 0 obj << /Length 2939 /Filter /FlateDecode >> stream xÚ½ioÛ8ö{…?*@Ĉ‡xLQ,ºÝdÚÅ4ÛiÒÁ` ÚJ"Ä–]M»ö·ï{$ušŽ3ÀbP ¢¨g¾ûdé"ta’…✡ËÍ‹ÄîVw ·øøó êábŒG¿~qv‘¦ š“º¸¾u½Z|ŽRqrsýÏ׆heà»ûµÍÛ¼(ïðÛ‹óëAÊØ3)AÈ=R¤“B™"J¤ ©¡\8Ì¿'T!Ö³ j†ɤƒ%$Æ~ðPÉB£¸¶P I©\ÄŒÉØËŠ…ãy^ºŸŠÑ/9IeÇü+ê¾Ãj‰HÄ‚•2÷þš/bJ$—lS5(’h³A½ â¤ÀOÚÑõ:(VŠ0©€ç„hî){WžÄ"5Ѷ¹Ï+·|CGó$>IÆ;ˆxS|wǵ{fs¶^oOb@¹ÌšbÛ‘sl2~)È!á´©r0Ϻñ›mèÐTzJFF°w(è\÷x—묮sfÝ.O˜Šî=†û¬éV¹5§˜'pŽ3‡ChJÝ%ЏÝàß/–w”=çù†§Ž»€¯¸+ó•{6,Œ¥#(&%‰Ð½1­ ™VÄÊ) ÷èÊmãù÷e~ LÙÅ&û^l<––o'©M¶¹§‡ÍéQ¬Çvéé‘-„î ~OÒd hPŠPÝk˜x3±tqB( B“W©ÝY&·».R}íCåŠÁ‚¥ƒÐç›d±‚à¤Å£…Ü€ó3…6½^\½øÕÍ j*À1 :JÎ JzEÛp˜õGÏIÑ)ÛIt“5º n=Í}HÑ:!܈§MpÐd¹]·›l×)7ëÔž-Q·÷Þ·øòè>Uù®Êë¼Äß5c‚9š@ &Px[ž;ݨ‰nPØi*¼n¼„Þ]~øt}2žÄÇ+þ„Ó§ŠôÞyUü'ŸúRoµÞ©òB€æV/³uVÍW2Â> ;Óe—b0_–†ltAYo¹I“±£ E1àîQ4LŠ#~¥žåW€K«žË£ê`ô,3By<øLC’bYH›¯é€t Žë n7‡‚sš!Á=K¶ôFu@£3¯`À`õÏ$9ÿëÓõ3Ýb·Ýý1D™ •"!ÈmqúTlMŸ“ªÕÖU‡ ¢“ÐOÚ±Áy?WÃéEéN÷ytÏÈÀD¯Æ"t8‡ò«ç;nîÝy]h×]µ›6VÅÒ¨ècâ?À¶ò• F/+`tÂêã|—C‹:¨ WÆuoëƒæ§ÇÇÔKŸc…j’3‘N¤™ÚÑ;P*KUôü¶u/Y•ãÂ*$Ñä•¢ø…ßl”Å^rÊJNYÉ!ÄšT©eúç*I”²=²\ÿ8Ñ":ED©Ö=ÕËÌSÖÖž2O¢ŽnÛr‰ÊÅù{å_ËÍ·lçj†9U"%šêy!2ukÕUÓ\÷ñüâüãùå›ó«PÓÐ¥ÓÂehtör;v:ž€·yòN©‰®|Z·iM·Ùdåi¨P2ó{ãy·Ù­óM-´f‰“û>G‰âÖo(s[íÙ××ë»m%ÊÆÁÝn+·p¿€+(;/pè<ÒI”±ÁD›è×öÊM¬9ûE ¤?_æç ¬³‚nÿ½+`Wùº J€¥ç©_?ÑPë¸R§, ÿ»³>æ>FTͼ§åº,¨å×$IØ‘¾¶ƒŽGà6{~¨%Q'1OSGÐ"ö<_ …ð}Óì~ycg“Çj»¬q¥ÁDíÆºøâ>0 @Bõ;QÈ®­V¨_Ž¿Ð´¸>Ã?Kpþå½ÓÒ­ƒ* :‘.:eÊ ŽˆM‚ ¢SzD¦t<Èt~h§vÎuô|—UÍÆ×°¸§|Q£¢7ÛÍ®m\©££+0°¥5Á¼\æµÿý‡N2ÿ©,¾Y«bS9t¨Hß(+Ô…5Úhn§]%ú­¨]*¢ ô¦üKÕfÕ÷™¦§î5šuZ%McµÍULè¨^wÖÛˆ†vgU@ÌàyeÈù³û°«¶_ÀÇÝ rÏ܇ì¼ÊœÛã&´å¸/nwë΃yžI Eè¼6LR"¡%O:‚sèÙädÒñpJ¡YKéª{¼t›É 3 |6Áw´NW<ÀlGd;íˆöLP©qýì<…¤“:e6 ”§ãaQˆ¥} áDÉ¡YýÌŠ¸CM 9+WAý'D™y{tˆz5•„S¯ö©ô0 :KÂ]ÞaF`CÊLÝ¡o*´îÑCÂŽôIÊ=ÝS¤8Ì÷Yí¾tÌK÷ºÊëeUøªhåö ÿíŠøgÖåß"˜²©LÇñœ×¯]‰‹w媀˜åc‡#Ófá­¸µâž´ÎqHGytÕn6Y3ÔH³¨®¡œ£t* Vµå®ý².ê{ä ¬º¨±³ C>õ2èÆÅ:ƒxäéØË·°KR#Ð[CŠTGrCÀ]n˜ÕàÓCÇÙÊÙèoVeeó=³kl@[…éåªãX®m¶!y}öߺ†ƒÏ¡6•Ûök)õu'^²[ÝîUÆAžC¯( „©2\ ÊwýÔ_êÜÎ<Ç?œŽ¶Ý$ ¨%ûÑŽ{ÔìzrhƒúIÏ#N|ý¼]Øy{¾ÊW •û\øÊrä,—ØÉ¤hŒøøÌܓ߼ ˆÔŽ;GÐèÎÐÙÂ66üÔí^„i6Œ9퉒y²`-ˆÒÚ̓ˆ?O©¥7þº'ëÞ“Ž÷¼ y( Xë#Îç ,µ¡ÇwñE±Îo†9 %&År ÙšNwß, @Ðh§C)0’_Ùd2©.4atrÂ-|6aœcU}d¶b–Üö} ²¯”Ñ+éb¢ê.øÜæÁ˜˜h(yù±Û9ºhê£ âô‡Å™ÆÙ‹µvؿؗ®ãòßœ"¥S§óãgø"1E‰Þ«AŸ"ùË9Hž©œY7_ Ìä ·K¸ XÊãöêôáÞ8¶Ý½v](b(;¸‚Enì.¤Á¦j—nðf¿Ú¦Ò®}Ž‘‘‹\kHŠ>ZÃÞûßN(¥Ñk÷–ùa äËMr¥ÓËXw©?—u,Ôl[ÂÓ]ÍÅÜ6PѸxúán@¿*ªº "ø¸¦¦a\ Ÿ_Ðb‚ü‹eμÂJ€tfÜ\ˆòc–‡ŽGà¡9ÎìPŠüÕê2¶á¶»´²§FÝ ‡¤"Úew^)?Ý«„ñ†­ñYwÐG(‚NÕ”bÛXYÕ€ŽV9*§„"¨í†xt¡ñQ{åÉÿ1t Ïð¸:ÔDõgoÙ_v=æâ“‹khƒqðêB§¶îÇ4 ü<·ðq³”õºÉ7`ë)T”×Ýn³mpžÉÁ¥„Ò´'µG`«ÁtÔ¬¥)ÊÉý¿×]"9x塲ë_tß6½é@?ú‰1Ûh endstream endobj 667 0 obj << /Length 2679 /Filter /FlateDecode >> stream xÚíkoÛ8ò{E>Ê@Ìò)J]䀽^ÒËbÛM“´·Ø^?¨¶ë*K®$§ÜŸ¿’z9tì¤îö60`Qäh8œÉ™a~ì ¦ZËè`¶|FMouu`篞17Àéò¯—ÏžŸ(uÀ(‰iÌ.?Q]Î>/ɪI«ÉT¨“©”*x»N×iV\ÙÞ7i3áQð ÿÊêK=™rë(Pjòñò§gÇ—ÝüŠó= EÈÛ”ê!¥ŒE$:#I˜–Ø_Þ]ž½»¼ÀiŸŸ„| Gx©-äß-Œ ‡0Šh®Ò@ü“*Z~s°#>)F"-Zà -¸ šEj2c½œp|~èÀ°ÊÏŽ:1Ä1¢`¡Ûß„1QaÜB,³ßÓnʤ±­YRØÎŽ’YYÔMµž5éÜv$y^€YÒ  =ä°XïOÎl]7å2­j„<˜ò8"L‡ÀqA˜b¦)­¶X f²ªßüJ’P„-öÊ7?È2dÝüyR×iMàHM¦Œ3BcíäïÔúüøäøüøÍËãVYäy,| HÇ­:0í£ƒqB#ä·dQVÿJŠCXb¬‚Ÿ<#$ò>Á?&‘ ÊâÊ·Ç#” öQÜéÖ¥a|\—ùºÉÊÂâE²½é*©’Oyj»¿ö¦ ƒÅØ4mç²49Os'¯v‘¼ÖµÁ"U,SÔ,l]O*Ð:µ¯I‘ä7uVû£ Ãt«NDL§¯^_žŸ¾¼°β´ú\VKqìæp¯çéµk1 \“‘„ý ô"]·7Ýh ,Ž0~Èã ¢ÓH¶P«ào¿œnz'.áàT «ˆôÕBOຉÔÒE cR=g”ÑÇ$¢Jj D2j–åsNŒƒÂÎG,šfÞ8ÁóÁÿ¼ÌÌ“˜ÿd¶¼•ÕÕ’Qxp7„ĸ1kÀ`*š·ÌliÑê3IXUÄþ“Ýâ0—$ââ@iM"±“Ãz:ߺ(‚±†vî‹4µÎ&Éëò…V©Œ/p´~-fË%j¢Õ½C|_#)Wàj­ŠñHSî°éÃÉ,j]Ìœaœ'Yž~ì%ÈH¬7žH„œÚö‡~ŸêBÂuçùÞùÐ D·Kúp€ORª›æ|’ðHÞ>’_w"ù8_GöaÄr8Ät(?-aƒRýÚ7½$\v³¿é}í}– AdÄ…hrøfCïoùCp!˜ÇÈA=©ÏŸQ}nãÐûãxï[ÏˆŽ­§L½ú“>)àÃð»èX>\‰CMåOnôI‹¢Åj§ë{kñw­å·m– wZ‚$fñÅøNKÐO–ðh–pg×À?ÔâIÿ·ð»\qõg9P“ªÊ®'˜MȀЊ]çSt›l…™)T?ÎIeF¤ÍpÙ´‡ Èdªe—Žz‡ Í"s_}É09#“±§W9|›gõ &5l6ZÉ„‰’«tD«3‘Ø›li>wªa×X7·$/m6k d¥6B«À¥4þ—‘ÝHÒg{Éø¬ryÀ´® _¨.IK·2–4ÊÇ-¡(`@c?&£ò<Ímï'§Ã8’Ø.4Ï|Iuè‘ušÌppá¸â± «ÒYš]w¶g-Hé×u’Û®zahŦµÙ[ÏH0x®}û3˜Ïôì|îþœl3 T %ƒ³*M—«&³½¨l48Oëõ2u܇÷!÷áÕrŸÇŽqÚrÞûý«ÒÖ@ ¿yk}’Zëç³≯َ^dÌŠŒDÆ"³c&µ‰†¹ØímÜXoÙvhe—\ûˆµßÇl h|3zó^dØùmQºF–ç¶•'MûIe˜hÛµ±9tLí×Üxeëftž;³~ÙöÙ<ý†Ff­ç®Ö+<î«6§{Ùãi)ñ"ÃT°0è4¦r.—é‘Ë«âИ§ybç´;[µ.hÏo옱 |*Ûgñ7Ä“4{ê–=­Íí+ŠˆÝpæœh6F"³Vï =è €©+¤ˆZ'Y Zô¦PÕȦ½EòfW¥H4>_Þ])2Û¯NÄ»éÄO{òñUˆP"E_ðà/Éàª+ɨÀ¦uSÿà[¢ ‡E ÷^á¸X‚S±¨åÊŸ¾&ŒwôS/«†Sbblõt_$ˆJïÏ–ER[„EiŸ-ŸìÛøÆ1ྠ(Ãà†È#"»P9:²úëeÅ&OM VŒ€Q¶ŠÃ¡…9Íæ¾*’0†¦¾³†HVQ³pcÅ úëo„n³®ŠÚÇí0”žÛí˜;ш;®´ÊðàÈ«¤lXt¾Ïï‰õí#a †ndw}'Œ×ó*á44iìž.Ê–úˆ8øwÔ sxÅn«vеÕ"™P„õµ[l’ê»:Ä ÌFƒøû-Å3IL í^톦ÚKèá’oÆö˜Ç mþؾÐîk ~fü¡óεPI4 ·\<ð¸ce‡gšöà3ÃøNö2ÀFûZ?‘V@Üyb‚õôöõeb.OJ0çÆº»Å̰ª§×”{Ða,XÜK³Üy[›È‰ŽÔøR‰{ÔMJínƒÐi ènÜ1Ê's óóAÌŠRïþMdÔ½:ò—ˆP'uöï³ K‚½¬ÁJ6îk04¸¯a™\ÛSï²IBµÚÅXNùˆ±€7±a0¹*‰Ò‘£Â’;GÏAÅV ”ðˆoæÔîögÆÿâõg°Õ|»u2jÔÏîž´½ Òá1–Ú;zí;@2î½—_wy÷Í’Þô÷zÀî¢Z,˜š`Âí³¹#4#)Á&Û½LÁeª1]Õ«^!‡NëNr5¡RõÇ£>ª±ygN–¾“?²Œxw+ê,´×]¿Üíj3¦¿åÊ c{eÀçuVgæÄ7èÛ¾…lVwŸ¼±žóön†h­Ë»v3&pwùwH(ï–í=ÔÃ97ÚÌn߃͞L<öFvèö,ÉÁ[Œ•yž~NÖy3¼/ÊÀ› ¡Ù¡> stream xÚ½[ësܶÿî¿BãO§ŽÁ¤]w¦Mc;MãZJ&“ºè%1¾#’gGÉ?ß],ø<ÜC‰ÓñŒH€8`±ûþ°gþ‰³”Ÿ9¥Xª“³Õæ ÷½õí½¼}õD„qK¸üÛÕ“/^s&8Ky*ήnÆS]]Ÿýgaìù¯þq¦’”%.…Y|ïOÛ|›å-~{òÕU¿€‘òDJpä)VŽI"aÉ™M4JÓºopA ÙŽÇæ¤ë({Ç ¯/Š‹æâGxaüd‹FÀVÔÙR(& ýê¾®Þgï‹uÑžËdñp¾T’/Ú»¬¥· b±ZgMC3Z5¥T1#zîÔ±UæDÒȃM˜}Umî×y‹ìôí&?_ ˜D,>«œ–î(Yå%RØæu”§™Ò¦[¥ˆÑá˜4²Ñдuµmók/é¥âŠ%Àpâ m9²¾¶Ì&½(~Œ-Ÿ2ÉU7"khVä¯Óûù«S¦E÷£fÏ´3Þ>‡9SBÌi:¿Éë¼ô …µš6k‹ª ÜT5uçÙê\ºÅݘ "±Î‰=Bhf¦ÌiîÏ—À”|U¼ãB§zñ©hq© ÐuŸÕÙfÂ?“Nä§4HGÄŒpý^Yá¦N ¼¾¡¥pÙjÛÑá·oY}»Ý™F)âXß‹ôM|=-u7âçµ=ç`‰±ÂîÂ5ÂÎóRšàNŽb¶^W8úþ!LÎY  “ºç ZÀì£_}ôk¤E˜ÑÖ ¬¤—²jéÅKÏ¡ôn¨'+;-ügV™­©u¯³ÑGÔ6ËÙEŒwÒ ¦’^?Ķ‚¯Ã‰ñØØ6°÷„ªîT:fÅìTþ’ו×rKeA–%"Ïd!õ4yXÑЗÑð¹[ÀBèþœ_/ë¬Íé³?ð,JüVm¾&¤••Ÿâ:oh(ò#à‰*‡í03Úæ)Züà¿­žð•³dP¥ï¸Ô±ù–J9&Ä쨊¸òP¶×I¤ ”ò\Œè"ÖC÷ªþCl>˸T£­ãÉÏV¢ÀΘ˜žùüY±m½*tžêum/ìó€Ö4êÏÙ*®œƒ6ZjmIåÀ Õ¦hÁª\ì,®‚FxóMRð²‡`R¼”¼™Ú퉰†Ýä'E/.ó<ÆÏ”3)úýT®6‹¦h£–ŸˆÂIRrÃx¢§’|4ÊIxY8en0¦{×KvÖûstE™0«ìH‘Kíí'ÈL‚;lú-ðT<À£ÇžÎ ÒtM ô2ðùž4rA‘æQãÛ¸·×—ôÞk¥˜ö‰ej@õ;Îyl?@ì º_¼z Ü’¤g˜Ø§ßyº£ P;%L&Ú).e!@Ùß æ/¢4“1Òwx< rVFz£A~§9&tÁ9S©;(uˆ¬›ø›°FF³×ùívÕÔ×Ǿåv$_l,Ë” ÀKzX}}¾„y_œÓ¿Æ8 ÇH¿v"ÑÌ€‰H^âö¿|yy8"|ýã 4ÃÉJ¿þ–\¾y {O¼!Ž,î Ký#sI@…ÅÕâeÎÏúá^*©]Q”â±0ø”þå4e„+‰>ŒÆ#¼JžŒÐØŸEiÝÔ ­2cÔj¡f;¨m¢R‚­é©úµÃF“ ù¶bŠÞ0k~ s£¬lY\Š•÷qˆ‘×0N.þžßdÛuK‘PÑD•”²,9Áí¿¸’زÔÎÞÞÞ÷qZ b÷Ðxgvæýð9½³½Ž—4cȬâQ|:èÝQˆÂ§! ž B¯ôµ-69’÷<.DˆömýèÝñÓMl>!™½´x”mã%ѳ „=z³›ãáãÕõЏóe7a-Þg~ºÌ†?{<>/ÅÂG‡Ð è^† "²mãƒ{è.n¨gˆ-¡3„Õ‚FÐi²hзÉÚºø™>daœvÑMÞä«ÊGpð~Ýžr¤)¨;`ÀXAU7{¸9 ÆÑ³Ý|Ì¢j‰3|;”GX hP5:ß|{õæÛ«Ë|øtä·§Áçâ±.ð,H9¦ðÝPAT >2|è‘m÷½½ÍÅ*óæ’ÚƒOé›û]áKUúGEº'œ qôáj¸e“׋×Á Šžó¿[JÇ©çRÀ¨ì/ F%Éô\î׎ ¼¹=¨æ’žmp×Å/]ðéåRº˜xºy)f+Åé–ä‚\& ,ÓÜíf-æpfRí0~¶9«&ŒÚ@0ƒ¡yµnÏ 1¸É16¢Î&Ø›HÆÅì§ýGcÕžc &.µúØÑ"'¯ÏQvA†¯/I†ý± ¬ßè¥4Êó‚±Ïl7S/!¡¥V qádêjjÓƒ¼­Ï „w\Ø\¾(Ê6/›¢}ˆ:ðc×3áî‰9ì<ƒ„ó(¨k“ã}nÍ"®‘E}C ÙýÇ1Ý{{/¢"õ)щMüþ1Sÿ)ªø&±ñåIŽö|L£8ŽákÀ°æ¨|=`àm•áÀ3@º>b\‘­·¡YÅ3È÷9Õ4O¾ó"qýÞ B"oë<óní" :©ÍîÅQUæqÿÚðFþÂÛÏë/r¯2G ˆ2.u.xªŤtâ½hzóÆžG% eG¸:%&Yê$G6,³_“XfÝaU2Ý j’¼Á°oå_Q ÚPL•Hfµ«’ã›Õ– ~X•À©†XÚÍÔñžÈ’CìÛO÷öñÚ#zÐ!HÌ//ôvºV&HƒA¨ZŠÎÌ~A&àë ùTò!®mš6ßФ¡®C(t„rÝsuæ4 ¼|èg»®Ú}.­”ãæqþ_Ä3Õ#ð»Óæ ”Ì¯êå>1Î/Ç•ŽM7³<ý¿?¯ÚñZ3äO²[Ô˜N““¹Ý`Ê"ä¶kúzÝ?\ÂûÝáK`R2/-hh^oü§Sc~.œró8í”Ø€o\%à{²ÓÞf ;%+¡3ÊNOþ@´Ä»öŸÇÒ} ¨+äž¹´ÓlßÎ9àL ît³Ýœv NÍ3Í^{;q6PiÈÀTäB`*2"ÊTƒðÁç~ø(€æ’œ4;ð ·Î‘$\nû[»^Ñ•^„3Ô£ý£¸¼ºxö.G“}éÙ™?òýÿÏÑ.9¢ù·wuµ½½»ß¶¡„#<‡³‚ƒOˆgåäBW;&ÀÌ`~Züæ-PQ†W$àjÕæ~(K’EŠp’¤ß“Šfj¸•9UŠbp¾8î0|÷¨YOp¢ù7#™ßñ”ÿúæê«ËØ„˜|1ªûQi8¤š/n¶åª»€OãþÂ\Ê_=¾€‰R’bÑŒg€GN?ª1ÒD‹^8ærvLý "‘㜠`,Ü?"i¡ti›•AW¯_ÜÔöƒ<ÌÞî¹çnÌf…Fˆõ>]q†wŽÌ¦33EÑ™°#fb‹˜©…ÕùJ°†zûŸõù`lìÔbgHÇëHEÍ*±Ì¡J,­º‹]O&1_›O^Ú é–îQB-ç_yÊ„s;&tæÌ§Æ_òNx5cïsªÅê«´Ü´JKUá6DÅÞUÎÈ™µ¡ºƒÏêðC÷°O•cÕd±¢¬ùuð„+Û`#T;Q#”<ÁXºúr¡` :ü} .Uv3ñƒ›ÒÞ[æðûöié6Øàí}êÁÜ‘9V XÈ‘ ðò†jl°å]x"À¼%òîºSÎ#rpè„K21^×åì–aÍÈÞ b ´$Cçi©ñbÿ 1ø‘nˆ ýÍ '®ê"ÙYT žÅ`¢¥± &LfYrÙÕâÜ_w.ª¥V¶¾­ê¢½Ût¾gÜ™Öß\äÇ>•Ôô˜LíÈÞ¥®óòò¯b×4b[6mö~cîÄüŠ0Ó} ‡~ŒÚdí0ènÂ1 ß¶÷Ô…v™ß‚þ&PFðܧžüð®R,•ÁÀKo™}kžÁ‘}6ôÚýx”†Çke+EwM»'Á9¥XwX\{0nèSwGÞS=RÎHIΤŒ®ï¸k÷¹Ï¼åù€¥$Ç¡6MÁýF—ECìCÕ½ÚÚ Ý¡k@‡öE˜ϱ8@zæc³%‹æ'ôÖµ¿÷Ù@˜•¶=fČǗLÈÙå¥W®UMD‚u)Ïñð‚¡ n¡îjëàeSm¥¢©V3«²:4oêjCoÛ&X[íÅk4g +óF¿oªõ68¸LNÛ* `±·é–.Iý,>$F‹õ2‚8x(9Ñ=.$°àÆïˆô9Z+\ ûïë‚Hñã<øðv%«KŠ[À¡H~Cן×9Ú†ù'G޾‡ƒÔzÕ܃ÉóSõ5áCð¤ð,mÐ$ÄbS£ÆaÓ'ÜYy‹r{ZÝÜ<½  žþT>+»=, ¯/Ыxxº×÷TXŠ7­iÄÿÅñ?ï‡&– endstream endobj 679 0 obj << /Length 3248 /Filter /FlateDecode >> stream xÚíZm“Ó8þίHÝ'§Žh¬w›­ýs ,sÀ ìÕue3ñâØÁvàþüuK²c;Êdx¹½»ª)Љ-µ[R÷Ó/’šNBøG'q8Ñœ“XD“ùêVhZ«‹‰}xþàut3 œõ(ïß:º/儆$c:9×gu¾˜¼ Ž—ÉºI«éŒsÈ;Ó™2x¶I7iV\ØÖÓ´™²(¸Ä?eõ¾žÎ˜ˆuH=}sþèÖÉy7¾dìšEÊ3¥4"ÑDE‚P.ìddqiÓ¤,HìOÑÍOãülãeÖ,qzG÷r ‰ c˜…áøØÒŒFDŠ–¢N«Ù<µ\ç04 «oû¸kM˜’í§Ç^朄šµ$”oç<©ë´v +öa ²¡¯7yÒd¥[¶•Á¼)+Ç_ø+E8ãí§û檖äg$™Ìx,ˆ¦r2ƒ^ø1]¯|‹„ÇìÅD‘Xó»#¢r!ŠkKD}\*žô¨~šÎ¨ÒÁüQöG·??ÙF7 {Ãq\K4Ï+wEtHûã½¹mÁÞ,Q¹ŒO^N)¥Á]|äe ZÙÎ*ý°É*£ x«× @¯ˆµÒù»o"Q¬C×ëP†~é0ÁF8¢ñ$&±bÊ «‰†U9K~æNL`}ÄBYªÌ7%N8ÕF´d_1-Ÿ6v•Ÿù•ÁcÖWÆ_è, 0°ùO¦3MypnuÂ&[9-ÍËÕÌ–`•px¥–Ï:O?eÆ|Fíò «½ëÁÐøÇ¨‰oÕ4Ó¬õ(e1¿ FYñõ”Eÿlm©+µ%¾G…ÚŠåP[µ•ÕNê+PÄÊ9ËÖuYm˜ß:Ï.–¦3wzZ•UêúжféëªyæXX…SpÌq 5Ž‹¯Sü–GÁ"m’,¯íKVØ_kàð0/;]¤íœeü¶ÌòtDg­Û<:³o—âø$Žó[ÃÏ‘®²&»HštÑö9Âó¦Æ`Škîµ.ÕœJpñ€ðì‹„hsóÁN ~|ðΩæàœ¾eCì˜ßÙO>›°½±/EŠÓ3­§4À…éà#ˆÝMÖ®UŸ Ó.É.ÄÎ9`bÜ&ojâË- špÿ†ôùÉý“ç'§Ç'gÎûˆ¡…~6­½ù#JviÓ‚fÏÓ¬6¸g“áÃþþš  Û´–ˆ6‰2¿p šŒ‡©]D¤ÒÝPiRÌ^N#úܤ–ã]´ˆ=¾•ïìï±µóü䀖 “Á6L™Ú1†@ÂlÚel>>‡ËIv“Ä<%¢Á£rSÁÔ,œþZŸw‘ßñ¤•40¸+sôqq0mX@¦Ü6¸÷»ë*s i…n õÈ"0'Nù¿8cdœæS!j"9%T󉾥õˆ}©þ€¡ÍÁ!P!`|aFËh,í~dîFN &u—Ö.›f}çèhQf$™¯HY]ù™zÀXLÂ(ê…:‚ˆ)[]S -õ!A˜=„»LÁUÈõ¼AÕ´›~¼M B±©íz@l×½2Ÿ#$–¨bpbgÄõW°ÍK+×ú‹£6nzŸ¤ÆuÁ“1?|xìHÎÑf*·[d^[Åí¦’£ÓÃÖn$ÑÎÔqø6sØe-Üt£ÅÕ¸Me@ÐÆó¼cë>ÖÁS3³ê]Y­’bžÚÆ“S©ÐÔôð‹v£8 ÍÇi7vc 9Éf"È… V³Î3p¤6ðN4¨ýÉR>Ö3d.TðdŸ§‘hß)ä4–s‚œöùdaä’T ;…¿ûûkòŸòËú½YŒcò¨\–à÷dYV+²(â¤0n‚xÃòʦ±ªd™¬\¿Ý‡Bëã´€°¿´/ÇíW©Qÿ<{ïU?ã7ÆW¶I,r3Ä®Žãó¹nRÜfñp¬¶;.N9Vƒel5„þ«cÓÞzp|{Ɉõ¾mQØ9cÝ!Ð6naåU*‰Dм3 žVÎ0íYŒôK’箜«Øõ¢ÆÖ…ÀÃuÈ‹ÚYØ:µëîB’HD½ÜÕäI·íW&•5©¨qUÛ”»×o3Õ:s)ç„EÚ$ƒ3&`Óìþ^ÝGq¸dß~{¼è›­L(‰%î‡a%\1“r†Ã3,Ö'R„m3…>6HÑKÁ<< k•²æù>&ê+˜<ûLþqÉ›éL2ül܆ãm{R²xMByÎAœƒœn£Á×,B›ÉQœý/}먵Íëvâ¶‚ ¾ÛÑ Þ`ðû0¸ËC_ŸÇjŽÕAK±Çnp|ƒãÿ&Ž¿k¿»-Øw§2ÿë¦Àš‚¾1…Sø^M™û´ƒI~Р¨$ìÿ'Iº±¨‹ú3-jÈe`Q{¹t‡eY“Vÿ\%Ÿ|Š–!a”²ÎÓ°ñ¥~w» x{¯EæŸtлÁŽ»xlÖž¤a‚ª½3㚯ޕ•íî¶þ"¤ ÆÜ“`a‹%ø°-+‚ïŠáÙ[í9„ÝWÄÉÄNTÄvŠxÐ!ÍÍqOWÈã8Š…o¤˜Iô0ÐGW)0ßÔM¹j ªlUçN7fT€ ªáµ˜»7Ç+kß½9×ÁÆ–Å=s ŒmöpšÎÜgwë˜5_̘•#hxš«o(eóø¤ rÑhæÔ7/ ‘ §|Nýr°b©weYÅž»qÍ<+”Vˆgé¶§é0XÈ¢ ãœp†§ã¯Þ„“ôÅG“KC¹"œ#¶óÉÙ­gö}TÔÇ(ŒMHÑÞÔ'à©(×°"ñ«a"¯ú­0[‡rñØX‘ô4Ã+\æF¹\¦Uê†SˆËñÕÅ’Œˆm&bb¡ ±ö”+ê¶óla[wý 4®²O·½f€%yªÔ5<ݦ ûlA¶Mâxäp̬[‡õ®MuÅ`è·Pm®± W7 Xn@›>øJmÑËvQÁ»ð“àÓGõbÃ]á!m¯˜Íeöí+¬Aë)­ð©£Auí¸x“BV¡úõ€O=:ÃJeª†sßœ € {ûjýÔu b±‡…á6InÛLØÞ˜TÏ•Â9±by Òbù\Z7]ò£"PZìÍ~ÝS5HûøjN!Âqáwm[-ˆ ¿âuHE‘5©}Ǥcêf‰ïè{žÙL¿´B’š§³ýnnZ´·ÄN>¦ òçëN=<}úâül» ²Ô)†6£®ºÐ çû6¼Û6dÔÖ~[Óý!÷ä*\v­Ú-û¬pÀYº¼vwõØ8ܨíŒÑpmA Ý(Ê”ö6ÇLúoSÍ ¨£ ¿æ2u8ùäK òÐáNùÀn¿¿ž6WvÛ†âÜnnD[+ Ív_ÖnB¼¾ ¢Ÿ–‡õ77íž©q¸¹2Uÿ†ø½ßa*û.ödß Ì!"8(¨Ÿ‚]öC¡ nPî Á†?½RÈ*¹p€8hõöò½ßvdä Æîk]©:>ˆ˜("á¶ÀæûÃÆ‡L߇þó!˜ÚÿGqÌd endstream endobj 565 0 obj << /Type /ObjStm /N 100 /First 891 /Length 2206 /Filter /FlateDecode >> stream xÚÍZßoÛÈ~×_±×‡,wvgfwÁw RТ‡$® ‚@±u‰z¶äX6œëCÿö~CÙ %Y6I[I È\’³»Ã™o~’¢Á'Z‰â¨.æŠcvL䈲'™œü´88fv¹à^VWJÄ1»Je"9¹*çXØþG‘¹M±`«Œ+)bP{l†H£Ñ¨£Œ¥¤$G…X¢ O›Å.¥’‹øÃ b`{•‚AÅ Š‹,à®&E©í¦{ÐÅŠ§Ò04‘Ê`††ä±b@.Eì¥A]bL× .w¢KŠÝ•‚KÆ¡†âRM¸Eì8€M¥è8¦Ÿ_Xy}æñhë±!Z½¦ÂòzCdvÕŽøaÒüú÷wÿž­7ùùHJùó½_ΗG/gîµk~yöÜ5¯fŸ.Ü› no¯þ8›áÆôýlÒü|Î+˜¯ù‹“æÅlµ¼ýiùɽ6³ƒ\ãl3=Ç\Lkº‹%–zݺãÅÜ·¶né&ÍËËwíù_ç‹ß'ÍOËóãÙùzðÆÁÓ½¦À¾}œ£7L‘$oöSò!ÐýØŠà¥kþ²|µtÍ3÷Ýoó÷ß\¼]žÍoWóÅû“ÙŸL,£yˆ!y8+3h÷}–X‹/ùNŽN–«Ùñ-\Zλˆ.i¬#-ñºÇcrð–ú¨––Tòóñó5Ê›-—羸®¼øyýï»gß7Íñrî§G§~yþ¾¡à‘÷I“b¤¢ÞU¶ýY¹Çüz(»«˜ 3éh~¯!>‚òꮑ”ÑQ°ä‘ʳ ‡Ló³òHáõY«¼½EƒÜq±ïáñöƯ®ú¿8Ñ ×…W«ðºæÅÊ“ÁŠÏ°WÔ±$oóÉm¬ì%”AjÿäMó7Z!7+"d OB(Oj¨é‰îM†nç ŠŽ¨D2IW0&KɇdÌàVå~HŽ ¹yšƒÃvÃQm¤`…­Þ†­•°}`«ë@Ù­ÕÅÆ‹硰夞Q§ÅŒTa·…miÇCÐquuåVþjºú€Lùb¹ð³ãËæÃòt¶jN¦ÿY^­~Ÿ6WgÍ쪫(|#°ËÖ7P•΀g‡áqx ìâÏB>Ýš í->÷dRc¡I´ Í:škŽ­ 3š±FÏÁú_ì3žÞ IƒêéÆWØd8$‰©Í„C_É4½Œ+ƒ"…{ýä6Fñ¹ò7 FcÞA#É 4v¤=„¸I“Ú^Aœwm}ŸCèUlâ±$ÖÛŠ©Ç­{¬Ñ»-é8:$]ób-ÒõQ†Û´ì´íoã)Pñ5[Ù¥aÆï2çÏ.Ï/g­÷?Z]ÌŽ>4±ÈИµ ™g'Áì6¶~IˆýÑC=@ !bÕ”Jî—ÅAµ`ÎÙçQ~d_òÁ˜2k‰é~‹Ú¢I)zëk¢q÷;©ðÛ1ÃnÃá‹­5¯´Vãè°ËÈÊþÔ'”' câöMCA…ú…BEaŠ$RÓ68R˜µEƒ\ß3œÆWUú†'í×—zx`K;…«½ÑØ’ôô& GªÂOhïÈ[7Â\Gì{›×£ä\wåœûə㎜K9oÒ*¬œÊCˆ®lö6Ïöbu#œé;ïtQíýâH±óýï¶i8‹'”Ô÷ÑE£ËrðFçþLºfÁ­Èn˜á:Hî0Ã×Õ› ïb§H^¬åd ‘ucÛñÿKc0dK‰T8M¨æ¾J_AzÆ-Rät™â®7<ô†ïî:˜ÛÓ¡Çh†É®‹–<³²¶oûø`]¹>×çÛd ˆ`=Nâá/Z,3°L…­ Ñæ=¡l³†hüÑ)};ž˜Ø[G>)ƒ»7A¥Üއ05=Ÿ..>Mý|î/§§ÖôßÕ —æ‹ysu>Çñ}.p}¥ZÞ®.OO§s˜ßÙñoÃ¥˜ue£µzHÐ>(²óoÎp¯ORH€@u–Ý—"€@F*aÜd½Ÿ[?m€ÎŸ|\ž-ÏNçŸv|Sg‹&õö5Ú°wð½Ò¿^}”ýùæ#ÔmºÛ€RëœôÆ9 ÁÍùا€¥xûº¬ýÔ®zÒúПԢ¨ð…󈶃X e_ÿ±/Ѿ ´7×äʨ=:y[4(v|ù ™Þ¾Òr,o>§é0ÓØL:ÇC½Ñ¸Ã·#œw³…Ü3[(;™¯³ƒ¬#*‹gø¾›Wý’ªOÂ{Õ߇1*¾ A±ä€ ñ™íkÖöü«ä·ùŽò?á&¾S endstream endobj 687 0 obj << /Length 3204 /Filter /FlateDecode >> stream xÚÕZYsÜÆ~ׯØÊ6Åc.Nœ*›!Ù–Lq)—ã£RÐ.È……c`MÉþóéžœžå’±^R¬"ƒ9úšî¯{–/|øã‹Ø_„R²XE‹MñÌ7½õÝ‚×_>ãvÜ ®F#¿¸yöÉ¥Ö î³Øùâæv¼ÔÍvñ£§£åÏ7_-d³(ŒaÓûîÒ¬¼ÃoÏ.nú ´¤Gþ”@ŒIáŠwœñy‚b¦Ãp±â’qM#3±Ö^Ò4‡"ÝÒK[ÑӪǎ Ç6Í$低È2ï(†çk”£Ž#Òõ¡-ã“⎈÷³Ï/ØA ƒ‘|U¤GÂì¨ 3ŒXFÊ›Q¿+P1tæôä&CåÕéÝ!Oj|‘Ã96ŸÆ2Äwäõ{Î/×gÔõ 4WW×4»²ã®ÖV оÏÚ}µû5°|žÚ¶9Pæ !þ”À²2jÞ¦ ±¤òa¬¼ªÈÚ6Ý¢}‚¤ÓdƒKìèÛ Íxfðq—4ÔHì`KJ7‘ζÝíeÕ.¹gWjwpÔÇ$væ#o³½áôßÀ“{=W¦¯ç£¡÷¤NÉHJØv1íæ°ßð„¼1—m®tÈØ¬œ¥!à‡GÿÍãüß&‡Ãæ²;¡áxöFµq­1©û=Ó÷ ò2ɉÝÑÁDF‘ w¡ËX &±ˆÉ@Œ íâž ÆA¼5X­˜ˆú³:#hbµJ³ˆG°Z5VŠÐd±HÄí¡Ü Mô–åàF-™¥}S•+²IëiØaìʭǾÓM)^¢ûnm¤ìLÝF´_€!.+©m6бlÍ2lC#ÛÐë¢*ÊÖì×ɶipàSh|+Wtì]•¥A‡ß9+ðÅŽo_ß\½¾Y»tçOG¾~\ˆ9{$Èîa—œ)xFÇ€ ç#\"Ó¤¸D¡:1‰azïƒ1Ž4Á[—£ïIúÓBèVäœ~k-Ê;´YžýFÚ'²o­©jÉôÜ{>§¹~8N‡€nûÃV£smÌ9ŒCnxHÅB9ѽd¡ Of6bâOÅ1#ˆN¦I1j,D$1±t?_ÓÓ ª‘’}yTÉ1£å?¯d°t-çô¡’ …sÈ™ãhâvžˆ¹¢£˜«­—<ÓO>6À´Ž¼¬lÓ²ÉÚN;áÀõ8 i;¨f4ï Gcìu:…=ë‚Ti<%8¨¤qi½“<­…È¥Jº\«N“­ï”ÿêÌ Å85^?ÝRfa[> Ô,n_\W[§ÍžbaÙØô¤Í ›{˜¨=G ûÁ8>ŠúÞÄ$9]^Óy³ÙIoøÁSê$NÑú‚i1‹w¯>®hMBc!Cr×§sô„l“¬Õ²æ‹Tô(k€ËJꩬ¿ÿ¸²þhii»««ÃÝ2±ØäXlê”Ø$ð©žï\pLÈ€©x&µë‹Ë‹ë‹—çkWê‹ÛâXœš"d0Áâý›a4ˆ½/ pE»=s%GÃAæëÊø‰À÷.`¤ó8»¦FXLpÖäpƒX!]™þWC) ¾¾L[i÷KÍßRççe’h²ÆÅdñq< o_Sdß 6ÒS]š)E̸RS ôœT cCzëÅÞ4u”äÞ‹'ä9¥äÒ8±¥Wt¼o«º°:t^üºÔcä‹Õ°Ï”‡áyNYmMë¬?4mZ4g޲ÑåRèô YÃØFËýÞ"´§ùï`.;XYí’%„O±„+Ü­!Œ¼µ­™u*I³ö·´vFÍ> |¾G ÀHn’րבÍÒ”ÎÌìÞÏ󪡌)"kèrýúíl¦±§QH?dƒ<³ª#ð_Ì ;ƒ! tÏ«òÖ~0p$¿ní#–¤ÊÉÀX3µ®l5˘6¾ÝC0µ˜ýŒÿr(ëTèßÁF»tžÝì.Js¸ ý¿¿¿‡§)KÀÛ¦1Ö¥6€áq·Ñ!¼Oš®E»„ÓÍÌÿt{0ÏOÌÿ„XÎ<½ç`¢`žÉhÈ;İæm& ÜWñB¢SâèF¯F÷óE»¤5÷þÝ=hlŸÔ 4¼31ÚBü€14l ‡…L1Á}êdó’-äUªwÑ9Y­þ|okX2ÒL >5ä¹sâÖà¸8ÖŒ«ƒŽ›e¤¨ŒEήÌÞ ÞvJœÂðñÄÙr2Þ’?“~’œaPÀDèªNLG„T2_˜*C×Ç ž°È«±È÷'ù¶ö>£Ç»²Èl?ð'YLWrœß¹6¨úÜ(OŠ7ÛdÀÃ0 Ádóæ+… ¶žÆ—®EN+e²ÆúØÁã×øî§CÏ~q0“îxcYó PS|æ_¤¦> (軥¹Ý;¤ô:€|»Å:¹ˆVÐľáÇø¡œfp¹…‘öæß©sÎ039£©2Óoi\QC¦Î{A~}$›‰mtI»M8|:+“÷™ø •• ”wÑÿú·ìÖ¼ …»éÅWXMïZ³œ‰„ÆMU ÚF41Ÿ”oî€ ¯£#Õ]ö†l¦N›‘u'ß>åú/ú³ F endstream endobj 695 0 obj << /Length 2526 /Filter /FlateDecode >> stream xÚÍZÛnÜ8}ÏW4öa -ÞDÊ»`6±3™{·3XìåA‘è´6º8’:Þóñ[¼H-µÙî¶g° X$E‘Åâ©SÅbãEx‘D A)J˜\dճȴ¶¶põúvýBèNzþõúÙñç ¡$Jðâúf:Ôu¾øgðr•Þöª= )¥?ÑO¼]«µ*ê¶õBõGDwú_Ó~ìŽBÂ#™<9ú÷õOÏN¯Çù9! ª{î‘c‰ä"– aʬ°on@",ƒ~¥l¡ž‹f‹Î>«4wÝ÷]s ²Ë@Õ®ÚÚgV6ʇrÚuÊÐÔå—#IƒçP%XO[áqž›uõEã^eiYvZ1°žxº %ÖoÖò©n*×m¶l#*äÐ Dô Ò„"&è"Äa> ˜UÕçÔ7&£Hx³UÓˆýY«Nm– ûÖ¹-ܶE­_÷…Ej›¶Ó¶vaA¥º.ý ›ZÌDus‡8Aq„Ý>^\¾»^Úî1™vü†(±ýÊ´zŸ§^eB§˜+úWÄ£ þaß¡ë;ÕÕ…oL‚ŠCÎõÉ1’bœýLë®q&¤ÒL«ge5“­»¾©ó²oRPª“Îá ŠÇMʼûâ¡Ç‰…Í‹1GŒqa2kÁÂ7&(æ# ‹¯X"Iò TFå6Fcƒ•8²¦uâ wõAk±´&åÙ4 e&ÆQwî—¼·_ßG>)A\àm!-€Xs¬+-Ü{k­}a˜zZðëG¢dc¯ûÔªOkÕõf0»äNæÀéÌC G'#‚É0Îmc‹l"$ñ(¼Y? ÖbW+BÊV¾ª¶ù³p2ApøãñöÆ7Œ˜${Ô™ÐÙNÊTfŸ†á…ex¨fz_Åa`7NeŒ•ê”6Éø¶ˆlZÖ¶ÚåP(mC›öî•›–{'܈@ §ë§U¡Åà  9$ެïQŸ-üwòæãáòF`ºQ¦O™8ìÔVè”ÚÚO\ w΋ÝÌYXF¦höi–òq¥v?ÍLeÙ˜0dã'K£Áª)ó¯ǰ(ã-ëá‘w'¦t÷hë¤BÐŃï¾óŽß ö»üâEd6ÛŒýÛoö¹k±œ†!66˜ëÁ5Dy¾$ÁZ øö–‡üüãaÑC¥4w±˜í†&¬ î‘™ !F/Ý©ös‘);j_T¦Þ»y”êTë'`o‡|ôÍ£ˆŒšöó*!㟠±¹“B%b‚iÂ}#‚{Á›ðÈË̳IÑQ()ß„oZGgš*^ž-m­nL0«î¹s×€dzXrÔ¶6u­íÎÇ.¬pa¡Þé°¨s5¸«\™¤G^âýc1˜jQíI …@Þ i@r/&Ò¤{c;|.ºbð¶í!zÕ ñáô:„În‚¾qª{¼I ž7y»eódª%ŸÆ™ñ•Ñ“•ýÿ€¯žÍšDpfÆs—Y´ŠãÅáÜà@?µQXÑ–ãBÜ`BLhI×åÎÅ 'iú„ÅýŽÁ9†Æ[kqÒVY9ºõ­å³¦íU®·†Ä&g£{5UÑCës-z29&ëw™9"ŽÀ0mEçFïºu¥ò!ä(–sþ5ÌÀÙ„a¡bøž&=ôű¬q1À‰Vw ^èà\)ýñýD8<Ó“€Ó@vÎIö jyÑeÅmYÔN2—BÁƒTÝ<Ù\³ä´¡á YZßó*ßåàË¥£fGÛ?ëðòÊŸ¥qf“zùåÝõa9šw¬+Úé@œÿX÷EY|M]bŽÚðç"tñ1äc`œpˆøœ¯¾QMùÀ¦î&aŒËù¹øe_ÐȦëxªÚø@"é,Ôyû-„:»Ã¬#¹WÙò^ú瘔EñïÖ­IåÖ9úïß($ûUÛ¬?¬n×ýTO…b' #8Âo¼ùÁšÚâBA…ÏHîêôìôêôâåéÒßI”0>Ïp–;Í].=Ô%"x…ô3~N¿6zwÝG“'ÒŒ±à§fUÛŽÿHWMûŸ´v/^»ï–YÓ÷¶Çë6]¥•{o2úºõoªÖ©0ãnû•ýè%²ï–ʘEV|t':°À9ëOœîÛuj[ôép‰s ,¿t½ªt™—ÖÎÀåUi©}|gÁ˦‚5&6ëOƒê´üÒ™„|ý®³N^Œ.U»Ähî /¶ï€ˆdÁyc\~®Æ»˜Ù60N6'XP8ÌÖY¡9Í?¦eé^âD2´}ßE‰Î›È‰bï¹óz‡“îöÞkžýØÔˆ¸êûÛ“ãã»»;”uè.íV ¾©‘Ê×Ç+8'uÇ.B’a“¨¨<–ÌýMplþÒœoj[k"ÀhŒ'‘xÏ’†Îᦷç&okÈ!pç1·‰<ØëÛ´µ¯Ë´Õ… ì”ÃS§†Ë5è&ؤ-n‚Þ­cTL <Þþ´÷u^ü×\þ‰)jl}Ù”ëar\ëD²qk8äâ„ε]šâ½‰­hBä;%“ó^(ã8¸htŠ˜LýÊäq TÔC‹¶]ÚÜDêÚ³J]Î¬Í ¸‚Ë=Ai+0½t àaYJa6ÉÂ+ß2´¾¡óK·¢KOó¹g³¨V]YŠ\Õ™sÎC,^ÀyÍ¢Þú¶U7ªÕ_ ÿ˜%ÝÇ_Qü¨Zˆà8 Ìj+š”ZûJ³¯‡'ÁYÇ›ì›ê¶TÕÀ+†Î`4+x‚ƒs»hhúõ@Ÿ–k÷â‡òCÓæš¹²-öܰù8š¢317U’nþ"§'|Ÿ0uã¹;v Þ¡„Bç×PŒ8Åî¤p®ÚF]dæfF½Rãðwr8ê3ð¼úGtßï†Þ᤻‡i¶µ?qX¾ ¯¯´˜V¨]Ì' æi4Á4aºÿ<È›¬3Udþ—Å{Ws·y ŠèÜ®ÛÜl«IV@غ¬Y8ÈÀ ²•«²€ÈØ–w¨H>;}o3·€îÀk˜DHÐ÷P·ëNºû¸{kÐqÓ© ^)MÛ•‹Ét›pv-¦Nz.M™†U¡­´sß_šþïjE´ŽZ1%'bžj-ìy~òc…V}.ì7€δ©÷ö æÏm+¸n²#ÒÃæÔ#Šén¸¦ìšï<ŸüæGöH¡“\N(Ý: ÿ0ŽÀ endstream endobj 701 0 obj << /Length 2738 /Filter /FlateDecode >> stream xÚíZYoÜÈ~÷¯ìÛì“ìû°9l8@”ÕZ»âõÅé‘sÈ1É‘×ùõ©¾x©G#Ù Ö‰y Ùì©®ó«®jâU?¼’É*¥I–­ŠÝ³ÄŒ¶×+{óÓËgØÍ‹ab<™ù§ËgÏ_p¾Â ’‰Ä«Ëí”Ôåfõ&ÉúíåßV4“(K%P1£ïê ÊúZ¿{ö×ËaNÈ9Ñ3ï°’‘fˆ2A+"cSf刭c.HôRÕª-‹uLSýP]7mÙßì:ÍÌRK„‰“æòF¹Yb:‹PDIH¶%9žwƒöy±&YônÍy”_«uÌ0öm£oËêôˆˆrû⦼¾‰+u«ßªÊ¾Úê¢/›:Ä•c̶ꮩnUˆ+Æ ÿÛ¦µ æu^}ü·–Ĭuqn‡wÍ:6ªêPhݘ&)b ÍQ„ùCV§œúÕûüd§G¹»–õþл!}IæêXÇ8ªì8¨­h˽ъ™ßlíµÛ™ƒÌð(ÎÈ—h±7ö ©ë¼÷¬ôÖö«Ø1lÅÖí¼è¹æ€Ê$=¸åáÉ,×~#ÃÜkºw›[«ÅŸü?*㌰íÔ ôKïAsМ3¡qŠÒ,ó»Ã~o¸lÚ¾s‚Ò*õʠ,Eúÿ3mì4w‡ª/‹*ï´'ÄÊœ·ÑŠÆ2ºÒe XÔ]´vîNÕš†{ÑÔÕGûFG‡!s(úoóêU p± È›7¿&˜µ›fcSÿÕÓôÓªr˜³µ×ÚÇ·vuJD¤êÂmì”ÜQÉkG7™À"œ8›…¶@T¤^àbͱn±’(o[=˜<†»,hÑ)w¢'"êTÑ„ûAAöÑÈW+?æ­Ö«*úÆM0ZÐãeWöv¨ÍŸ|‚•s/fˆPìùø%Äi~>ÌÐÅ8úp Ö½±k™P×+ ¡®äuå ö 8‘ ضQ0“žMx²õõbe:T&P3±ôÓÉ^“´xoJ€³Úfíò¾-»³s?]‘Ns®^ÑÄ‹ÞêHÆæáñªÞ”°u8ø•FO´Ï¥C—XØ9í`ÞB²rº¾9´žÂÕ¡¬6ööÐÙ,J™OŽw“lxÄd²{W7›pôJÄø0s–Òá˜Î쳜¤o ¦ùýáçEY©·–6ì1F’sb¡Di¼y' ñqò=Äá ŽE2åXdˆà!_j;†È‚{³êw!î"é[»çð‹·Å¶ 1ÒQß5§–ŽÁX/U ë½J6åȸxÀ`8Ë•3Èúf“§´É]âá4vŸn×”¡,Éæ@ùlYW`Ùx߆èeqI¿€q¿ ÃÄϯÁ0û`ÀAM0þ2lB ÁIF¿ü]LòYØ‘ræÚ<žÝ0J2öÕ[Yoƒ”(’”Ÿ4¬x‚XKOÇZ ÂËo&ù/™ä³âõžX#§ c&^ èŸ[e{o¦g£/ÉXÍüQ—«ºê(;ûfh„š§Pã'rEߦÑÔ\+SšñP%»º)HHÔ@MP"'¥´`"zÕ[ê¥aojÆFWt8*¡¾ºª”çÆU¨8E / §0jн‚Ô—³æ~Q•‚”µ¯JݳöÄ7¶Ã‘¯ètS ˆ8ж—‘º›½s¯ŠC×7;¿œYGÛÏ44¤­va|V°†zh¾HȬÕÏ–AË~´Ý?¸éT{[~jg{Wº¿]—¶#RÛGÛ¤Tm<°HqY`hµ´»¦UºéÈX¤;SjƒYJm©® L3ΣÎNTE¹ýhGª&ßÄåÖ¯7cÇ’³‰ 0SË ›K°«Ž^Cåo:êšBÙ«6¯:û—¼uÓ‹¼SqYwºgÐ;a5÷pá¸Ù†–ê·|·¯‚•8ƒ*…dÔ˜NÀŒô(MŠz¨ÆÉ‚‡%u""[WaçåQv8âßËŽDT à«ûû¡hÇãä$GÙTA¯Î_9’öä$Gƒ åM飯l;E½?€á¹€çV¾EšÎ€Ò!ºÓ:ÿñçË×#`ϳ ÅsØŸ[.E"´ùw•»¤:8´éö€C;†@ŠY§N2nØaÌc>Nƒû+‚²Ø+gY°Ò¬àADdË,µ¨‰ŃiuPg®s} ,ò*o!t$ËLàg®}kætÝa§‚ÔQ®‡|¡s;f⼬m¤§>ÒÓ¨?s° 9.ÃÔþ4‡‡‡k3vJz2}$O¨“¢„ð©:91-M})šê°«õ=sMiÝ1õò4Ñè]‡|‰RŽ—«Š£q¥³Bqt HP–É;üySêmJnÚó6ãqߪ×/-­ÙpÆMÇx°˜ºÄ6Ϙ!€î±KlpS>öñ]âíŽøDÆ“éÓ9 Æ÷{LábªuÂÍžL_Zw2ifn±{Ô-älkuÔ+¦5AR­Õ$’XÞáÏ{…~Ð^¡¯C€›ÁwsO¸Z_=wBÓ¹¯L<‚ÁÌaæ¤Ã>iÁŸÙ ãžlìÅ  UAI8 Y1ݬ… ¢ºþˆé´A? X^”5$©zkebW·¡TÉ2Ôô”Wa:ó*Š tS,¢É¡ÄâøD`ŽOÌúò8ð°ãs±â쨓Ì')¿Ã®w2ôÛȹð–ñ\jêGQ(Lv#§Aãˆ3~ÐÊ™;Ùpºò3ØK%cö?îglégÎ}ûñ4hîû(d¢˜HSMšolR:k\ß·+9?˜²Ã©Ô°ýdòûf /ÁeáÏ´ŽìÝ©PE¶Xø‹¡³‚9Ô8Ž~…¸Ï æÝ÷{¼íû0’áé!XXivª™I\£Ò|õ}ŸÖ^¿?¼¸£;w­ êEQN2;Ä6‡¢zÿÙ–¹ï¬°1Û  ldœæ¶^eÔ ¼Ç(qçyŽ3»?­2³[ÕÚÚ2êC#!([örî`×ä‹–›æà.gáX4/Õú5›}^í$m¦EUÞ»%Ç`ÃDœ†30WýMˆÛáwÍ‚-޲ñË0Ûk0Îê5ÆN˜;µ“~Øöª=}œK£›ÜàÊî`§Ég£]€ºÝ!åÂfá¶…±¶ÓÌÀ©‹~z8ªŽð,TNµUð,V±D¡9 žwÏ–=À7'[q?ýNvÇæ}ÄŸŽ rñDþy’È[ÛóZŸûÌ»{)ìl%âÎgQ5ºO D4¸|ÊÆçùи¸™ëü4•_>ýT‰ÈG þžANFDú-"¾EÄø%Øçpò¯O>k …|›=â\÷[PýOU³Wuˆ áô!U廫M"dÂ7ûbRÍ ÐÿJÕn endstream endobj 706 0 obj << /Length 2923 /Filter /FlateDecode >> stream xÚÝZ]sÔº¾çWdΕ·“U­o&-J )!¡Ã”Ã…ÙUXO¼v°½|éï«[¶#g7œ.:̰²"K¯^=Ïû%ã£þá£4>’”¢”%G«íƒØôÖlãõ³Ø[ÂÀå`ä_/üù)çG8Fiœâ£‹ËáTë£wÑãMvݪz±¤”FüábÉÎvj§òò£í=Uí‚$Ñý_U_5‹%a©L"ï/þñàÉE¿>'ä@AõÈ=’2Né‘H”Yqß=]$4Ú•«6¯J+ÞÓ¼Pïµ$08Â¥œ=Á’ ;CìÞµƒˆHÑxšF݈ãИ Îûe^ÏM"î0ÉÙ}Lòvï$ïp<:±?ŸÊ¦*>+7q<< ÉKy÷Ú¯1Cs3DX¿ú/{սͿªuhŠMÈd"žÞíT$œ}¿T‘m?¬³ÐDT"Á“Ãg:“F>ÇÙYh’ñáíŸåß¡ƒIç„ÝJ#j- gð<Äanÿ=ÿ¸Y곦¹*4·Xt¹+8Z-–8j¡á8ý•³Y™ß¾÷¦âìÔþ}[‘ÑZ rR²¡ ð^Àê‰Tt²b’´"xìœDUY|ë” &tŒÕÈgDjèSy"͸PAv¶#ÒŒíŠ%")¾ãE8 …’cQ)¢>& .Œ·OÅÔpÑ”{W_Û!7Ü<Œ±n^>ÄÍ^oAĬ¾åM}Ï.š" áóO5\#o:g¸0˜_zˆáb?b¸4Î{Ã¥]«6\`—–š¦½ê¬ÁØ —]ÀÚØçYû%Qìùø?ñÁ±7nÖê7&Ò(@FÊ>dö§YeEVk¿LYd“#é=Fç oFÊñù’ §S1o¥<è(މÏ+s'ˆµyTDœ×Ο’²x€çL»"ó—&ÿ®,K4tOw’¶íŽgÊk 1d‚{ô­‚ž6Õu(¤š%Nc„i:f€Oï§4%þ#R†¨ ‡iB$8QÉ“¯­ªK#QèÕ¹äM‰ê¬UöOzf‹3½é3Ð t›Ç Ž= ô˜ ÌZ!LP‹'t¯Ÿ±ÓÑúMoò€Â!°™ýñ< ‰çþËVïiÀÝw Š“4XÄù᳄¸!’AKcÈ ³è5¼H<AÄ D¯=3M4ሬ(:ï2@‹&FKî‚£Ô°q€ö³³0F`úä&ÿïLh‰YoÜ^äæ@ej˜¬?éʯ‰ácÅuŸU4&gfŽZF›Ü½`ÏÙN™ 0¯fög¥ŠÂuÔuf")ûø%o7Áh)¼7f·l‚Ò´ß“*ÔÖ¹v *c4ÉãšÝJÙØó€µÂmè˜Ö;¹Q¸»©y¾GóÚ ãdl…©õ!À¶Þ­ZÛu]»€·êlê§)ê’ì èÜ ú©Ü^•ÕZ1réŠéaøQ[&“Àä?Á€A¢þ ¼mÔ¯U‘õ`“âñ Ä,‡bý\c¾´›¼¼r:É·A¥ðxïtrT+5³¹â&¹µ©½Bö¦äoê2ËfÇÄáà§:Ÿë<±ËýëÍÅÑÝ›ƒ¼ÿÕaÜóË klÊ^±W¡i %ôb‹^ížl:b;ûPúØ>`ËÐ619¾ì÷;wi`*§ò^+ÛÞµy‘ïØØ/Ø$xùJÙΕɬùçÊX„ñíÊ(&Ô‡1€:§ùIoƒ“™|ŽËIøÑW‘}µà¸7Aí§ìþ4°kÞJò'™©¯ì´õ‚ˆ~±XÁk\»œV•MÞ~ ­‚Š^쵂÷XÙñ3kB»äДë°}ýS0!ÃJöùïS–û+®ã›H—ÈÌÁëû4Ù0:ùè¢úZ5.'(50°¦eYƬ˜_ÝʘdTd8„1!mÄ‹“I(ô‡kÃìlšþ5±‚ˆ§ÚªÚ!?/}ÅÍ)ˆíQü"x¯‚öÀ…$‰„Žôö>Ônêj÷qs½k‡*¸Ó^1¤þJþ@,ÀÞtÇ騇žV:Ç¢œ€`™‰»ÌJwÝH¾¡¯ìŠ@7ïü ·1 [U[Ø¢±,\—7˜ÆÍ`+}»¬YÕËÁô㦬Õ2P©Ñ‹aèuìbìÜô¡ÃïnúÑ\2™96µ¾ª´Çó0h¿Ò½v\ :ž·üɰ Làà(ý-ý럽àÙOZ0¹›‡9xA‡}ÇËqùü¼­M…ZŸ|‘·:·ìQ;P­²F-sÀ˜v¨¹­þ;5U0…°€`Ï.f63ºc“} ÊÁûƒïãÐ$ Ú.ÍãYi(†øIÜ*ÖûêõdO1°ç⼨Ο„ÅXÚG%ûÅéÔ”tC}Ú埻ë/s§9)Kd…³Áá„N'Ñ&Õ„Ì6a{û——¯^<™©ì§ŒÑ÷Bé_0Höíï lY¾¶¦Š›d_téÓq_™c=ÀçTúšíÊvÎV(ö æã ¤0 îõzb×%,°ªrëúë :ùƉøìŸsµa$·µ³öNЬ×9Aû/•m.èÝÑ&½¹NX_’õeWáknÁü-E4\â…Dçˆúü›îhsD‚ÚÆÃ{ÚGáZmâ˃إϰ câœS±]ï&sÏÄ>ÛKƒÖø^IÜ·Ð?x“LÞÄ£7õ‚H_™%Ñ…M64F1èaBê2…Zõ)ƒû˜©»ôkÎ}¬Ääöò´[Ö‰S#?ŽmŠ¿YHï\ Ë]“ÛAv·ÛA»Ìô‚^+;š™‡Þ’áxçÁƒZL„JH†pÔC}2Äí¶vg”¤&8—Qõ¡ƒ¯ºù‘Éby÷)MwÓ QúÇu…LÚdý"Úfà(¿Í9(õÑл‘®Šƒ-. ñ¨ë üí}Ø@@®Ãǹ µ•Ñãpš~—õšìÉ.G¡ >&¾luÒIF‚A5¸ µ²UYi¦Ý':îèH—ñu÷uºÑQšØõ Rxü²Qu÷ºof]ƒØŸÑu¡„À°tRß({Õ»R›‹öMq!k‰G‡6Ïq6AVhµº—ÿ{šäé endstream endobj 710 0 obj << /Length 2630 /Filter /FlateDecode >> stream xÚµ]oÛ8ò½¿ÂØ}q€ˆ?DI úÐ;´‹;lƒ¦Év‹Í Å–]eɱä¤éâþûÍp(ê#tÓ=ääp43Î'æ³þø, g±”,UÉl±~èöjF“÷¿<ã/Ä`€ù³gÏßDÑŒ‡, S>;[ I-gçs-.Îþ=“IÊ’8*z³ËwyQ]áÞ³×gŽA$Ä7J‚˜DÑj$J›ÑL'Šq©ˆñŸ!‘éTl.˜ˆï¸>D2_æÔb.h(3"0f%,IâŽÀŸaZ,9ÄJ˜J——¿¼ôŠ’’îøßïN‰mÕ uˆët~W´×´ÓäÛÛba…m‹uÞøxs•0ÍEGø”pÔL³4– bh¦“tp¦¥¶Ü ‰‡,PyÌ;*G©&µ_øN˜°PðÙ€ÍK]è¹We7ÓQú}n6¦4q3¯´Š%¡Sn5”Vï(\æev âù=Ðù¼:¬6ßYœè\Õ»*,ö»*DËTóâªâ[]UúT³TDScä1p£;ò»’,î¯Ù/þñ¤Ç¥×éI¿:às°zã2Ö,Œ„u NèΤ90xجk4cù¢-nñæóòþ ‘sFdá à[ÑW+02˜eŽ¢*L„°Žæíµ5.Kstì¶hŠ–ðõ®B»kí¡Ó±ñ€ô©öƒ×²%S‘Ó]³[ ä×ħ½Î,]-F—š°XŠ)Y=òN‹AŒÂÅá'toX,â¹h:æ9ÑVÛÓ‚OѲ^Y°QÏ{„dB¨ŽôÂÇ=P"f"NG!°‹stµmMWÞ»,Ǽsï}œuèôúÉÇÌL¸xÌ¥Ôüw´˜ŽCV_kì ¯©Ë[¼{ '…ÁdÝ…§Ò~`cøª.Ëe¾k^øî,H#Æ!á€FÀll™trrV„þ‚Ãß4ÜTëOUrE!A~Z?‡¿`µX5?èΣÝ÷4Xƒøx1¢wS¡9u¶(ë&_v*;¶ãɉ|è5wä 1‹cˆ˜ÂC"¬(oÐ?v„غ"ë~S”ùEoΜ¥o4gÈ·LöÏyÊz$¨Tb祿ùÈ † N‡>PÊD‘có~ý"'?‚ÈÇG‰L¯®ÌRGu˜X_@˜[öðWL(‡tܧ¤§h3†;Ó“‚á! ýí4>|@¦ C0ˆOƒMÛS5ˆˆ 9(:ý -à T,r\UŸ]cfS<œ¯œýâjQ¯7»6·{M›gËû i³6'HW@U¾Îª……®ó¬Ùm»¯0ZtfîÖfUåmàóí;Ìõöb¾kè Á) ìmŽyAÐù²r—ÓòU••÷Ma?E›xûá€sØ pˆ8YyUo¡æ]ƒVã0-Øoª¼²âÁÇ žILVOâ¬Kb¦ÄÂ2k“¥¡´…RbÎŠŠ˜ò Šaž<ᄆôÆ!Ù:)Á ÙBh¼NÎ 9Ÿ o––«¢É«âîºp/`ÉGáµ! ïEå ð°=ìÀî4À«=6&°!›¦Ù˜œØpȈë:k·ÅçCŸE`¾\=Ñ€‹¯<ÖE4•-ˆL;ŠLŒgì©YIô„áʘ‚³– Fsñ^³RŠEJ}Õ¬RÄê®÷®!‘0È¢î8~óŒw3P)‹8é:l¡4KuÚw© 3Äó8hân8" 7ÆË˜éÄÕÐÿ©/Re|ÐЪ>kV&¾*_Së+ˆC±”B­’,ƒ •&ÆÃ¼À¢é &v.©ä°KÛhðyž¥M›_÷¤ëˆñÄ¡v®íÏ´B`ó.¶måèdZÁÂD}=Ó*ÆãQ TÊ8À(ØRžû²-~åˆ46ÓâÂÔ¬0^›æq—i²Æ¹«â @\˜ŠÆ­aw|w¹IãmÓ]ÑÇM9!¡¡²dÞfŸ‹õÎpSoveÖßFs€®g9‘ÒÛtD35ýt£¡w­ü“Ú´¨vëKü…QëŠFúÜ£]6—•õ]÷…åIp(¤À3?zæÇFÿB¾äÛÚƒ»."þ„à¦ÿv²áÅÄ¡â–oì Ô¤ÐÊWõÝá.Ü΃&\8f×vJO»Ž©×vüÃzrç½jðÏgŸ]fßÉþi cêVõãGN:Æx×ÿZmh- endstream endobj 715 0 obj << /Length 2092 /Filter /FlateDecode >> stream xÚíZëoÛÈÿž¿BÐ' •ööÉGŒ~H®Mq×žÛØŠ J¢l"©ˆ”ß_ßÙ%¹”W~|i ˜âîpvvæ·óÚ°…l”ÐQ$IdÛgyy‰£§Y3áqp£ÿT»ÏõdÆeÅA(&ç?¿øë¼[_qþHA5å]ICWR&Ib6 cI˜(îûO›ëôßTÑþ° ðQÁŸññ^3=üÃE÷óD‹8š1F¤’ð„)䔕«uµ3ÓÔN0œYU!Ï´(N|$Û¢jÌ/O§võOéâSQÝd»éøòäU}»Ù6U“/qöuµ/WõÉØB W“P„±\Ž‹ºcùùäuZ¤å2[áäùmÝd›{™ˆì2NÇ‹“_.^u_‹¼ÌnòUsÕŽðÇóÓ‚î·[#hûùjìôåÇÛx”~Ík­Þlz:¥SöÉÍ—Ev ¦Ó³ã¢Z¦M^•ã鸮öÍU–ÖÍØOº¨¾Vëõ¸_ö`7_‹t‘†ôt¿Yè¡9Tk|že_öYÝÔøVº‹Üö_ºF™_íªýåÕvß8è4 í…8<›‚G$Š@\%(Ù‡7“Xûr©wŠòM^d-82Œ$JqÍ`&BN°;ü‰BÖ⦈ZŠ©ãD©n™³cLÂ'0yûLÞ?ÈäãÀg|)«mVZ¾ÔµEÎ’ö+m<ßê’pÉ[¢"Ý,V©• qÉDDB•Ü»ìÖ yîcò°.<.Žñp,;‰ ˆöç" >epE¸ˆe0|gœr…rx²~¬6pÀŸŠ8öM^俚C «KÊ‚]Voaå(¨ÊÚ5ù&³³éf®uàÉv饙‚Rî7ztŸê9œÐ§U3Øu§Uæ¥e{eù׿˜¶+”«?@¡çô Nƒõ„AèÃßÕ-ñõK+Y”:VF}¬$: Òà§uo G­4×'üô{ê€4ôÚWv@Êk!ÅG½„±ÓVåÜîFËaôÆÁöË%h=_ͬ#–`æH Í—ítÈŠ›U”jØk‘Í–EZ×8ñög´*Í€á®I«mgÇ÷úÛþ„ºŠ€³v_x*q!ŸàlF¼ƒ1¨XQ~DÅ,!!š‚“$(¸ß:nfÙTFÉ*2J6ª‚ÅWóB"Kðá¨y«]xOkœOñÕº/ °z†)£gÑêY´ú‚–ÇqýÆœPz ßfïU/$½z‘$u!l6!Œ ë²²ÌJWÔÕK[@W,G†zŠ_ÀÏ]%&‰!†³H’òÙ D„v!E<ä6í‘ ^•iq[ƒn}&µ1qÆCBãè[DÕ÷…Ï0T=&šíŸ…ÍÙqiøSØÅw˜gº`N`õK—\ÝI“-¯›¼¹²;ƒœ‚E$Ž;»üÝ+ yéHêlw/í–™©ašlWI¯t> × Öa9ütú¯wóó^ó=9Õ¥ =X¤K}øj·Ë¯'*„„ ÓË]ÚØÎÔQðtê(˜×HnK LqÓcó@JÂAŠÝC€+_º ñNPêÝ‹[h(ŸLò)xF?Œ&ƒð?\S3t+\úù@a­8»Š`•mlr‰|c}mëXÛÚ$`W²;6Ÿ½ù8¡\8ÕŽ”h Ìýu924[‘•—~Ø&Ô´ÚîE-%Túœ…+OæRWæ `—˜}C@p¨ cC@œ?' 6Yj£® iš¶@j¡=ÐýຠçßÑÃàP‚#:ŒFá}–ú‡Ò*ˆ‡à¸ø}ÀM,ˆEýcaZ`™FĽ®ó:olÏ ©K¸¥Pÿq]ÊÅÌ¥D ‚$AÔ°Aúó< 1Æ>ìw*†ÖQŒGƒ=Ò'´‹ÑKƒ¨{Á"!KQOs1ĨùU^ãë®Ò0"•Å­j¿Åü«Ú5µ§CõÝÏ_à3 é5d$ú§€ŸÞ+nÌvß$hÞ4¤úªÜ´eÛSs•í2È 3_‹0–¦¹4L\ë,×tØ›«<ŒíÑõ\j3vŸUef.µêü×L?ϵõ!@}2åOyÄÀ2ÒMþþùnþ¨$«8;Ö¹º®(»'müGեɦí6³}_¨9­ÅqBX´¶m:¥ÑOlNë±nÅkŒnÚ‰¶ïN¼ s’¸@]-:4–r믶7Ú·¥ZðÛ¶?5vÙÊvÀ#¨†‡×ÄT÷õM×ÛDr&L8º4Þœõ 0/e…³E«ª5Â\à{Uv> stream xÚí[mÛ6þž_á2.føN w-pMº‡´HîÝ.ФùàØò®[ÚJrÚüûEJ¢´”åÝxm³°–¨Ñp8ó 9/ ™aøGf1ž)ÆPÌõlµ{‚ëÑâjf/Þüç qt \x”ß]«‹õì]$ùüýÅ3¦c¤U \êÑ_÷É>I³+óìÉ÷í‚Ò#%1”¢pAÃl&5G„q;ó»³¹fÑ>[UižÍŒ±è,Ý&ï$À@ÎA±Ô0X0i98©ßY"I}"‰¨’ ÅÏÛB‘-—§!.}’Ÿ÷'aóf\z6GHó~Ñ7öç×,ß-?,kìEqÄcѼö 8$G”·"n—»kÇLÄ>SHŠøàR°5Ï‹D=‚@ÄÍÔÃaÀï‚0DÄ#”î ¥íßJç!&=N󸃣š‚ã‚b 7Úá‘Xêçùîf_%óÇ<úwùywSåUº²÷ßåûl]ÚëM^Ø‹üf¾ :J²§pOi´›ÃÝ~ /m—¥#Î’ÊŒþ6§*Ê‹nô·´ºvâ3_2FbXb«ÈƒÎ†ëì]&ŧtå¤^%™™Ì,‚DÅœDe}|çB TÙ[ï2[‡D QÒ²”€ú$«}Y廤°>ì–N¢¤Dî]ÕÓ=ˆÂ©Q$ŠY/_ÿï§‹óÎâ9œ˜l‹eOs1É}8¯ÆÌO¢Lõ•aÅ©C ¡Z7Y…øiÄ„n(–E‘~š -·F!<*–ÆF5Uî~¯û¨ü\VÉΉ?ã%«*/ìó|cŸm“ì*ŒŠÒD´–†¨€[ùN#¥ :ùm³Û*®eüÖŠŒC0a.}¯D!1 B -ußä/B¢¤¨îIòÔŠñqÌè0§VfOeîÖýÌäëdgœªVIJrþиdšŽPؼy;ßÇÐ|±¿µzût‘Ù§‡N îàOEƤãƒiP ì›*¼ÿ0$u{&ì–U‘þ„ú‚ˆAôpw;ö—QcÉ{…Š_Ø¡@µ U”fju&%D0‡IÙ?¾NŠÉ]²4qÖ¨pUé.±Ãõv¿£à%T²'À‹uk’"L¢¬J˶F,Lx±ZùÁ`™–Ç–,†sNXoS,ï0}°4VÃEBÍ4` ægTõ‚߃¸%§À­ˆó¸Ûˇƒ-…X¾†Í¾‚>ØÀ¨° p©¦Ñ§´L Úº1vÌ Â‚Î>³akÀl¦\Õ¡ÈA@K@Ÿ4ÁòËw`ÈáãI<Q'Íœ»àë0šqg¦ËcÑlFª'º‡ÙQ„üÓýä;ò €Œ1™}`ÿ÷§‹#H?/ì\ˆ‘àqàX޶7¿Ÿ&ÉuPl›·ØØæ.e°.Ä´Šl\û“t¨öõ4—À¾kO x0îX6VÌ&މ˜µ&­®‹|u ÉQp«‘ ‰8˜xTqdt¤ aZºÕoke,ÍŸÏn ÛŸ2ÍबAK% (¦=ÐB¬]ÔÇ'ì4öx¥ÍædG³ÜþuC­j!‘ZÛ¡ºR›¾¾0i–S£Ù¸_g(÷ÊíDÐÈâÂ~åÂ~³ÜÏL¦“Ëêø`üÐ &×fp¿9­ËˆÛe±pÅË(Öwxð¡¾k\F¹§,,jŸóý«SæÝónMïér39®˜¡b¢¿šZ(½KóÊê«òtµÐ×cLõ)¨KØäÀ QôU¢èAkéÓHÅmkç‰H< ¿ˆÇîÞ!‹±üÚ•`þÓƒù‹ÖòöÞÛû‚bŽd<Ò)¥Zö:¥òºSZ·ëÛºYjèl M×Ë<­K @ìÒgÚT: Ý0à7²#0ì‰ .›"Ú[£ò^­Q:Z˜¿óBû¥nŠývûÃwq(Óˆsrd÷ñ>Ær]GãxÙxÓudÌY‹OY‹ 8N؉­uþ³< Ãï.Oi­ºîvÐåU³u†÷*W‰‚¦ïæ„ÒHáð?§9‘9/ÿbæÔ¦–:è¡îNiΠ帶õLnºþyiŒ7‚ o„4†vß 9/X¯#“nºH³×ÜóÊÓ»±Ò°òKε¤VÐæàƒ(ß|µµ;ñKKví!Û’T×°V)iû²o„1¯…kI_sÖ ‰qôr²4k­ùp‘ǘ¸ö¥Y7#Óß>™Öz¬‡ßé…z:¸ÎC#JE¿U&ŒÚÍò×ÉÖvË쨗ú±YÀËs8’Í"þiÇÒÝĵ‘ûèÆë$ˆo¬ÞF JÈ\y ÓS‡(‹Ð)]<èŠðZWðóêÙ«gdqf&x~vnÇ:ør„TÑÅuóÖ¦+ÀÝÚʉ{hÃXÃÀ‹º­&Ì–Jx_í£7迉m Þ¤+¥‰Ý9^$›%¼ã"O—ÔŒìauLÛ;ÞN…¾ßÿjΚpÞL3Ëš"ï>0zþ ¢÷¡æ)wñ¡z¸S‹0jþ³Ä—ï# endstream endobj 728 0 obj << /Length 2174 /Filter /FlateDecode >> stream xÚíZYsÛF~÷¯`å ¬†sâðnYrœÄ^G”]);~€Á‘ˆˆh´¢üúí9p $h‹IªvUªÀA£§oú ™`ø#“O|ÆPȃI¼~‚õh~=17ÏŸKç¡Û¢üþòÉì\ˆ Á(Ä!™\^µY].&ïÓe´)e>ucŽx:u9Î/[¹•IzmF_ÉrJçVýËò›bêRúã‰é‡ËŸœ]Öó JTQÞ—ÔoKJH€‚‰pD7ÂþçÍåë7—s5íìÜ£mjPœR„=b(])"5J"¢ÝšW»&>ò€RSüœÕª£p'JÆÛÍT¯0ç£þ•mÓEa²Ô\Ë¥4¯wE)×Õ`žm¯—›m‰†äwµ.%ÌÈr1¨ÃÅ?¨C. óz–ÒÒ%ki꺯Rˆ#,¬ûæÒ¾­Šìé\ aù”Æëèc¤ÙOhü€Ú¥ÂÔ¢÷ýù4¥Ò¸L*ÁÏ“•ü`y{" Aµ@Ì£ˆaVq߸¡!òõkCõùŠ„¨¹œ qé’Ô¨{›‹ÝÒÐ/as€4¦°@…ó­¹X7XÖ¸í/Ÿ#Šêµß°ÀCpDy-â+;}Ø7»¿W \W;æÙ,×(d`Ä ‘€ ÑYR(ú¿DÑ|ïpow!ÑE¢²¨Eâ#x ~µÂë¯3,†ÞcX}Dó_‹æ/à±>‚.ᄎÐp)æÈ »+â4[CýE0÷…ó]q·Þ”Y™Äæ÷÷¶ ç>w®²Ü Æ«¬‹ð5Á õí ÞXEEaÒ{Í™½MÊ¥µ¥bŒ&jwÿ4œ˜¥µ~…Ì?'±9–©«‹q—qù¤›½ TÓc_·³shå¯8ŸNÎ&5ÔãmQfkÕ«(®ZkY ©ëyÜ™Cº’®’¯êtª©õM’N x‡ð4)ÙÔ%NCŸ• µç¤™ng²<—æAQ5JY^Ê…é@TGC¨ßuéKåMOÕ7©é[Ü;]صLe­ÌU-Ü…´}Yº©bSš‡÷ä¶mšTݤYiû4#±ß’¸ß’©N2@8´þzñj¬™¦Ý¨àu:NäÓ \â]KAøµOµvÛµúÿ±ÕŠR'»2pÀLJ0¬M ÆëåËO[Y”…aŸt[Úil•üÆ{q™õäYÉôzx5‘ê–t $N;œx"èàƒMíñ6%Å( -R*†øA>!”TTxÐg0e'ëoZ°ŠX­³oñì0NŒyoƒÍNTPc¨h,\45ùB®í¢„Õi—\l àrÈç°0¯ç»š/†y· !ï²tºÎ„¤„1iø`:(¾ÝÑò‚:诣2Oþ„"´Ñë²ïûÑïúñf…LÉþF4B€Yµ‹Æ»åÈQѸ–‘ '4lh‹*¬÷ÄÌSCðnôB>‘1ø6Y³Ô°Á,̳³2 ƒ,ñŽY¸móÙ Ù€²QȲð0ÈòÛó‡BÖeÄC!Œu’ü_]_ ÎÃn}{ rÄl¤bK”èZ4à;²1´m¹pýœ‰F[kl7š=ð,Cs†h¾efùWh6KkÑ€× Ü‹h¸¥íèù€(Ì<6 iÒ^ÆÃ†¹(?Ò€A ^îmR¾=J4¦GŠÆÁ8¤ Hß`šw›²ý˜¾y@)É_•ÓÔä…y â¥z0’ã¹2Õ¼¬“ä“«¦áìtS!¥ýž´ Žký“JT«B­¢\5€Ôs¢ÕÊ6¸Åsðð'n†9žè=8ཿ…ÝÉ,\ˆ]ÆèçXMÛŽ í í™ö¾Á{ˆðã&¸ª¶§bäPn‡‡ƒ|ìe¸µ#ÁïïÎÁÐäþfýÿ ¥¿è°GcöÖJ¸8;?»8{uz6ZÉ%^wGò7LüÁÌÓÙg;[h#E9‡†¾ó ©«çüý™©d}[ÜLK*õaîü˜-SCø.ZfùïQj<·ïÍã¬, ÅóSVTgÊ”'ÿ „îÅ endstream endobj 735 0 obj << /Length 1784 /Filter /FlateDecode >> stream xÚíZYoÛ8~ϯð£ T\ž¢´‹¾ôÈb¯î"v‹¢Ý>È6•­T²“Íþúº:v7Ø¢F‡©áßpøÍŒÉÃ$x C ÓÅ 6OËómœý|Bܸ†‘/Æ'?œ 1 %8!ƒñ¼+j<| ¢høiüë€Å ŠeRÌÓ/kµVÙò\÷¼7J÷ÔDÜ¡ 1ÌQÌaÜÎüñt³`½œ®²b9 cÁi–«OZ A‰T Yd%8­?ÚA튕Q=â}î“C(¢‘òÌ'¥?äýú bζkCï#fm> <·ÿ¾,‹jRMœhÜErÄQ¿ö7اG”7*æéb2KIw“(ÉK‘`Ï+ŸF=A!âfêÙa1"`¿!aˆˆ£)}÷¦4ò é¸[Æ»mæ(w™cHq _bgÄŽ~Y,.×+5 Áó/Ò<]NÕÌ~ÝT+µÐm¼†$(ÖC,g•힥mTà”sN󴪞Á£F^CjiG,Õj_¯õGQ~v®³Õ…[ ë*ÊD„‰ëõüæ=[%’×C*U^eSenI‚hBûËœ‚*0ùJ•ròdWÜQD lÌ ÿåÍ_oÇ£ŒþÀ Ðø¶qô4`˜Ôzö+ý¡Ê4ÏõÉçAZ–ÙÕPDAš[WP¦ ݵ*ì“Õ…²Ê¡;µÙVSÀª|æS‘$1¢Äk¿ïmtÜÚ í)눢ˆÐfØ»N$iÏöO§AGéïÞ+ßœZ`Ü=¡Ÿ·Y4ÌK¶if»fj‘.gn›WöYk>«#< o\Ãgß„I÷¼÷G‡B€ó`·ÇíÊ-+ì#D1ŠÉ¢DáÊâ|¥ÑWCi•-Ô½0Â"1= FtÓ-}ŒèA0CÅ2îcôî-Tê¸ €!íõº1§.¥¯‚Òösûÿ*«²UeÛJ¾ J!Œ>ðq{÷7}UѤåâPÖ ý9±W2 'ˆENjΣ½–*Û¡áÓ>¹>Μ»Ob„0mAÃ0‰i0¾È*+Þ`£Î2¿q ­/-y(J°(¯åH³æîÿ^ãÀüàÕMM.Œ¢ˆ5$Š8¦À1"àò{LÁ„™šÇ¸ë·T@tTËÜZ™"²¨=4^šB»¸Ö•;õiò Í5†ÍkÅRUæÊÏþUúÿHC¿ ~MpowÝÃuŒÙaÊûf÷çÛñžœÇF·ž®w³ ß‹†j;dœ½¥¶vÛÁœ¹kÃ7õ/‰š G‰´3ZÔe±>¿:‹|pQ •q{Á7±R0Ñ27uš_ë³jÅoܳJ­Ü´…µ&*!Zã½h;3†<­‰¶(w×Õ^ÖLçr ;0ߨ«Æbô–8ï»´Ï;lÛH¸Å¶íÄ¥áïÝ ÚpG¬¬g-ØCrö°Y 6Û›m‚Ý,­á¿¼Ã&«Ê¹ˆeÕa~c¯¾]‡ËH¹×Ò¼*~ô-…C0ÀÛÔ”é$5 h¬Ã>ðœ·<†õOÖOÖ¿ÙŒË'É E œ1rÌ è«f…v"ðð¤IR’ïÆé–ÈŽ–øPK|”ŒÅƒsœ„ƒ-&ÑÑšÖü³æG­åÃý;ð^Ž¢~ªÉù B:9}×9Óãø¸nÛ844\mã-ÛgؽnlðsýÈfútK— <Å4/*5k㥺¢ ã»ê®¸f[D¤KáýU†¢6ØKM¶éÁ $R Áˆ«È{Ö Þl‹ŸîLܘ`o^A_Öªª“nÙ]ñÒŽzÅœ¦Ø8{ýÌXÒMu<21ï‘‹¢XîY-¨h;ƒxœ(DÇ¢ÁþEù¨„t6Þ”öÎ93°*yèœóèC :H´oùà!h¥ÝZç¹Ãj‹?«K¼WB¨«Ÿ;rБ¯Ä¿ŸBÈ9^©yºÎ½gnöºQ‚¨Ø·¾ U_àqd`å±è×t‡>ªºcÇQ"7ìýê ˜¸ú‚–ßÖŒžªB¿hΰ9øþ›dxnñn0oÓùù«?PðG‰ìq3›è7ôGµ{ª œêÃðòtßxbÅÐ93Åò“Î ÃvšõëÁ—i™.Ôª~·~l -º5‡Ë®p½S`„é*›dyf8–Òr«þFlp7ÍýÓ‰÷W#ÝjAº¯ 'À‰’»åÃ.òôúX÷²þUÅLå©[Týë ßTR".Ä&ã~ ¢‡;Ûx ÿ„@•FòEœ’Û‹8¾¬~§¼GfÄþ­ ާ@qgybWuâIVqWyBÿpõ?L®-­ endstream endobj 743 0 obj << /Length 1935 /Filter /FlateDecode >> stream xÚíZmSÛFþίðô“<ƒÏº÷Sfú¡HÓ¤$Á„É4ÉÅØÅ–ˆ$‡¦¿¾{º“,‰“m!/e˜Ágiµ··ûÜîs+㞸ø=I) ˜ê;~q5=ï™Áñ“lå 8¨Iîì 9ïa~€{'guU'“Þ[o^æQÚPJ=þ¨?`Œ{¯–Ñ2šÅçæêQ”÷‰ò®ô¿$½Èú©·7q°h£Œ8ÀI0øôƒ ,¥5qƒBQ·­­´0qšç—†Ã««+4ÎÐU˜MÁ!y£h²N“E” ÷ °ÂëIê^š¬Ráðcv9l/‚`†§=A¢|Ó6*¥5qǦo+-Ì@z¯3ïi¬w9ó.Ã\½œ‡é®ÙöY•ƒqÔ™¤•戙›ï|îÛ˜6ü†¹¤RePqÅ#I*‰½p®91j 33Ù^²Œ'™s‘O7N"K °#+ÕH6ª(¤ ©]Šh ø¨tA8Ï’G.íŒ#Å*è~ŒÇ ÙÙ‡b–Q²H4BSÂH½=ìš—ñ8ŸwRïp6Þ¯ˆQÀ91v ‚èj‰omâ#u!ˆ¥Ä›¹K$<Îéj‹9´4EÞ,ïDÍq·5ä&j¶°æ½NiÜûÕ|èP@¬j¿‘nb¯AÂwÀa•‰G«<Üt»\» ¡«óØeK#tÎj%Änf‘ý/Q4êÒ!¶×qÚ…D¹ ‰ µša¡h)¤!ºœˆZgLVŒ¢¸c²xqýL—’ÔŒÇó$‹&Pt˜ä^‘>—s¨Dó0Ë̃qÅ*¤åŸúêÕ,ŸÚuÐFÁæÀÿV+yæÜP ¸Š]¥Ÿ4É(*6•‘€4÷ÚØR‘(µI39ÇÜ\¢ šy¿ƒxB1.EÆË,¶`Ù·]2ðÂÌÖæñü³­Á@0æÑ@›ªÝP>—Ä*³u*-köòò²¸•¤y4q—<é#¬˜%Ì–a?=zùúd´BP“uˆù¼‰eÑYÐõ–w ʰ’Õ¦+¼»4¥³°º\_rfüm\ãð8À±VÞÇ®©4å©$Òèã2Êrë®™e3ù´t[É€-³1ÎçIÃêÍ#à{Nøá€Ô°ï¶ˆK%i:|@À4(ÜN1m‘Mn·îb;÷wzØ—|£wU{'“O¢Eqà)öKn!^m$§ï€%qVÍwáš/>8²nC‘κ´‚æYR£ï㕟8 *†ëS EBU~æéìŸ]W8)D}•s¶c-‚ÍPH$’¬„ wóc„IµLÿ&ü¸ FÛ¨h¢qô5иˆB½-IpÒÙ0…ZQ¢Ê‡SÈ"2wÍ^ô»Ñ‹‰áMð]¥–@¿Á¬¿³J»…l‚,wYÖõtBV¶²4زLá6óëг² •&¬A¾>r%œUY+žÞ|û­ƒl¨b:/ix®ñ©XGQS¶ˆÀç§Y6+ÀV»Ö f¥›À8  ZóÄj_eêêÄî„2 I=m~Aú¥‚nÄ2®ïß.&GVp_ƒeŸñm¢N¿Ó7HÃäV`nq6 Ö³¢¡Tãb/^ŸlÉÚêǺ†Ÿg¼­åF+[ßÂõCÞ–J[M0«2Ûó¤ê!h§º„”¬¶I™ÐñlO óiš,ϧp1šÍ–µG–T+:ȶ¡ƒfñÙÐA.—¸™ÈŽï6 øúAùG‹¨Z¥ÀÌâÌRRK`~^éïMپΙTÜ*¼í¤dˆRnÓ€TµdöÐ|ü.ÚFcg×H(8ÿ÷Õ5â{;>è“¢ò¡÷ø“‚HÜAëQÞAëQlÑz:Xù«Þ#á¤øb2>k{­ì:ê±öÔþ^1|§ÅË,}½ìúèqèïæ- Zå¤-ʉé’¡¦™éz7Úîlê*·Þ¬;+ƒÿС»Ö¡s3$Ìt3†[†D:fk;f¤óÈ6º“S½¿æQ)¢¶lNÉ/oNoūȱŠX®8£Fˆî^uv¦˜â·ÝlÓq^!_à»ùa¡AáÑ¿¸×öe›3fÕþi¡Æ.!±ˆÛ"¦h}Äœ~÷ˆ¹öK8€1ú´Xð7ï±\ë„””M¯’"¶êÊݤùÒ‘ß l^…›…ý§k}܃£;z"ÕOéþ]w endstream endobj 752 0 obj << /Length 2650 /Filter /FlateDecode >> stream xÚíÛrÛ¶ò=_¡GjÆ„‰;˜™sf_Ò´MšHJ&Ó4´ [œH”BŠn’þüY\H‘2$¹‰{z.žL,X,{Ã.xÀ?aŒ")ð@€ÃæàÉðßCÇðÿ·¶îŠòèT¯²rÝø9ÇÍå•c=M(¢}õÖ kã’)ÆÓ\ƒ—«ŽÌ'‹^yv™¡7E~ã|!ø}Óøb$~äYéf`ê{Àƒ1×2Â雼җæI}íFˆìö9s§Ã^©qžH$ÄÑùþÜ,WSçqͬó|®?lÔ&qN ƒb*‚Ý6’yïORÒˆÈÖ¾ßÍCxàåœn„–>È»ú^ÐŒvSCþ š;PóÁøoýÃý|*¦ÕêÂcNº:'"8í¨zZŸ!ÂZ _n‹\îA‚äZˆÓ-Ð$‚l›Ý-.á”=mТÿG-ïÂ!ïŽãíNMÄ5‘öåƒ">(â=*âwѱø·ÊJöBñe~Pæ¿]™¿ ǯßn1I@¡Ó4V›‹½zê~›k Ó¶×"ȵ°¿iôC•ë™ëÊÌ}ŠiŒ=ÌÏÙâÈdR© –¥»M1ýö6Å4ª¼¸žëxj.> dšDÓùÒÝf¸Ð6hÿ}h“±6S„­õˆþ=_Ï<#h/Ña“¶ öSÐ-Pð -¯*]ÞäSŸ8˜_¹„’ä§÷îÁbjR)ì/¶ü½Üó—¯ÞLơո„ÄÀ@Cª¼² Ôö~릜MNéM;Jý©ÖÕºr½¹wTk{·ÃÕHþ›”¥‚6+;ªÓáG’€ÄÙ¶1õRÕR­Ö’ÿéÐ&áè™VGËPhMØAŒ¥ýMŸ†–æHÕuwé.¬¥$ JíR/¬Ö8Ò}b © 1áR| Q"Áw¸®NÂÛu];·,wl¹J¤p‡;„ï­¤]2(·í%w‰MR”HÕÛø>ŶÐYqK>,Zç /©lí%f¦÷JŒrð›%&þ”ÀÆÿ6áƒSw `ÑØ™èŸS÷"°›ÜÜ X‘”æÙËkÙØÕ> ¥¼[£¸'“zû_&!8Å¥ä}“Zܧ„‚g Çî,á˜XKó—anÀؘ°Ò“;í‹Á1É÷Û—@ i 17¿ŠD“Y^9üWm”mÉ)æ_Ü«óÌ]žÚíÊÖ³¼øè9>;q`Šg|;\eÛ»'+Ü:ØbÆXtª¯²zîå„Ã8Sî¢|ë´ûåÍdÈõ÷•ô!]ª·–¶™Û.ÿ¼l£[í¯¢}ø‰©7& t&ícq!î‹×®, Ñ|X/B±è(¸ÑߺRWÞC•Þ¨[XŽÁM,L‹~ü~·Â´I‚¨rIUmdºÜΡoìalp*˜p´9&.ÉqSm>¤+7߲йò^â¡rˆ£Mq× öÙª|ŠeM>e ¬Çóµj¿|×!Úª6Ç"˜wÝrù@ªNÖsAnž ¶3Wôó…g¹©<§)‰¤ƒljÌXú3ŽV+ B#úMüÜó¡b‘¾(ë¬üâ6ã‰éi®I9ÍNBåhœJÄ!j$$E°ô"WwÀE®m¤{ÊÑÒ×r9‹ß™ª£ÚSŽHÞ.G3W‡wì¾l9šQ[K†^WŽn¾©/=oÀméy3ìKÏvÜ? (¥}–îÙBÈd0ÿÏö• OA …}Æ@? ðÐq<ô(` i”0F|9š*GÛî[åhÊRûÆàn46ÐhÜFº«mHê–£mÇd+'©ù’»õ†J”ªÖI_Ú7ÑD„öïCa|ËÄ0 þšr´ûiT¯õç¬êŒÚ4üÛ¿«ú¢ù`SŒ.õʆt˜ué)nq¬.¯‚õi¡º×Áú4P@„GŠÈá÷:êÓ[HÛú4KõéÔze†•¹3órPxn¿þÙ*Sû*u 2Ý»ø™XgÙnÏSŸ{= 2/|Ìúc]ø3|ỏþèâp&ÓNÎTå‹Õ\oÙ>{ÐbYÄ9.Û‘éÆ½”yÖ²:/u5-sŸs\ºù¹_ärß'Y•ÍÍÞ›!78B¡ˆãEíµW‡Ô¢  0c æë×:±ï†K•Ä2e·t‡$‰ Tž”ƒ#ñ‡ÙX7÷3àH‡ègܾj$Ó*»Èü¢Ÿœ’L«‹ê¢é€ë §DId¹7ô¡NóÖiî€æõwñ¦%øõ7U®ÿòª‘üÎ==ÚYy„([ñPy|Ðèÿ(ßCýñí·[ð*aìáuɃYüÏšÅý¿uéí¥›ý ´¦µh endstream endobj 764 0 obj << /Length 2958 /Filter /FlateDecode >> stream xÚÕkoÛFò{~…¾…³6û^2‡¨]'H/u/¶Û+Òö-­m^$Ñ!©¤Î¯¿™Ý%ER+ÙA …s¹Îçý›Pøc“ŒNŒ$“éd¾zFÝnu3ñ‹ó×ÏX€›à¬y|ùìù+¥&Œ’ŒflryÝGu¹˜üšœÜæw­¦3!D¢^LgRªäÝÆnl±¾ñ»g¶™ò4ùŒÿÊêC=q™™4ÑÙô÷ËïŸ^vç+ÎI(B>@©Tœ*&:•„ éÉýõÕ4Éf=oŠríÉ{U,íïH ÐÆH¦G3¡=Þõ@š÷4áF·¿,cx'JuXŽbX† ¿lžÍù~jø× yjÞý)Þt¿{5¿OA?TòÒ_>®çõÍUÀLû¢SÂYÖ¾õU4v¾$\vÇŸ…Ó³±˜ƒß`@:-¹Ø‡C?ÇÏO€cõßò>Ê×>ÀV˜'8”h®&3&SÁ›”«»McÁ0%M^Ûre›ª˜ûÛãr³^Ôh³™“Õëc‡Ú=s¶ ×ú¾nìʯ›ÛªÜÜÜNY(pžW¶¾Wdàå:œØ«°Ê× $>“Ç<}µ­>¡s/M“èèp™%K»†ÃàYSûg×eš/ËÚ.€Ip‹K;›/ó:À­wÜ#¢û\4··¢Ï6ž ¢U§´ÿޱ–Êši.æ6Ðb×Søä¸;,©á{ǧe „Ž•(G‘ °=dTe5uS“ðŠé¿‚LÕ|¯‡}söŸŸ./¶ª6̈ݾ2DSÖ’¸F.nVøÿ „$^¾¼Æ«ìó»EˆÍ­õ;MT²zž/óê(F§”ˆLŽ™£ü#Bwné–FE¦®z6CbgÂq"eæø"x`àw±£1<íû¶û,ÎJØU uaW¨Ž5žƒb0wZ与Y@D…ˆ¥ý£ ë«4ÒêlÞ8êF· à‹Qæ°YPBeÌ?ö=—Ö’½l5{تåP?HÊzà*†"ãࣺ1>rjg‚Ê |ký ‡TceóõŽÈÖkÂvÞ­@¥°µB(ðQâï£;ÑûÑÆök…O›©¡Vüü”Zñ©¨‹ ÷*‡´:(EÙ:ˆCjñ%ÝFª¿‘üü7Ój…(9ЂÕSjA4ð*æ¯b¼—:Õþ: |ðˆ"1ç9B4¡¼#†LgYÊ“ËÛ¢ög\wŸ#i½¼Dmîîµe)Ážè•Š.Èÿ¯I(,”vKË-‚-:UqÌCC¤„I5L“\þXuIHe!k´Û¼¼§Ã²ŸJ¬¢:ÌûúçD±©o$W.Óµ1‰KÖ·Ármk—ø_,^/PüûTÀH"UëÑŒÅ0'šê½ß—ɵ¸ì  ë|Ù¦!Ë?çÞ ÒÕÜëo¢Ë# X>ªUä8C“OmˆA >yôVéú"ßÙë|³ β9(æÈ3Ž)2ì¹ 8°íÇŸ.™*ûNĸ|é {ùþ¶ìj—93_ÀÂ$­­ø&Ø9VeþÞapõÉ4¼Ù%ÓnÓUcPŠ!/ „{sMªUFRÎG";àf¿‰§Ó SöÅÁÒå ½éµ·N(zÁAÊA1šƒ%X–Ì}Uºðw,á¡é(˜iÖ‘þÚNK¶,œzñq“W¸kgpáIé ÿð¸£f·œËÝš™«}/ŽƒZ!EqVJ•‚x“Ò¾|gå }Vò, ¬ô~ Kf†ŠÖç¯Ï «¶`èx‰–¼——îc¤Jð*Èô€Uǽ <.¦ ¼ezèšÎ£–sþÕ–#x°XxË1݃åæ-öCÚëSÀÃЧHÛ>ÂÇs.EBŒ³í®÷ñÓ¹czä[¶*|(Æã¹L®«r‹9Z“î67Ç…+ëT¨ë" ñpFU;ÝͱšÓ©™× N$o‹¦YÚÔžÔ·.|~“gߘšX÷s_ý2Цh÷Võsy¾‡ŒµsG”´ ³‘¼DЉ&­*e±Nî_Ì’¨pÐ%@ޤ^xö Aï½#ÒšdZ ;#ïâJ0ˆãD}è#lŸ¢w›¯F:šLh÷•t9v²ubrá~ǯ¶ÅOÛ×Û“@;KNW@coý|ÛØìêª=I ”ñt˜£œŸ¾:=?=;9½ˆ¥[)É\ÜkÿýÑcO:«Õ6 €¿Ó\%'y/!Ý›iCçaÓ_eòÃÆsá‹{nº—.l•ùRÅœË2b$ÛF›.Òà›>Ò¼€ …ãsÌY¹ž½VCµûiÚ¦ÕÈiàl¿…$ö¾Æ\OCຜ¦jW| Óëâ#rŸ¸n±V&9qÝb¿¹£á“3W(šÅÆqKÙVÚÀ ƒùÖ)xzÚ££Ê×uîÊ¢@„!Ÿ ‘Î|…ÅŠ†TVTqíTœ%/LJgHɤÉ÷›5Ы  㔦d<êPÓ`׆(£÷µÐ³xdä7Fêë/¨»Íž_žG‰0ž¬í¼gdÈïÎn›æäÏ©¿Ö¿,ÊÂ/HH„(ˆŸŠ¡ø kí¼e]9/lsOÊêæy„¨˜$¡fTRŒG)>BÃRB‡ZŒ«‡ø g=ðKI:qÆMß@ŠÂ•‚uWÅêniW¡½“ûê÷½'õ†¢¿‰ôŒèí\á#!ZeF¤ÞÁ§™œ’©0gþg¼7$2ˆ=°=s NA¤ãó ó;pào”Òø™ =^ÿ̺eõ‹¾×Æ{çÎq1rõ¸õm}¿ºkÊÞ÷‹JÁ¦CÊëX"}Õ•Ç~˜ ѬŠ.[À©h~í^t|j»&¡œíQ;oB¹¼Çqzˆ =˜$Bj?=gTL€xx:œ=”H`}š'ïÐ[œb#“o]¨õ“¸súGŽÚuo¾Òe<Ý*&Ô A1“Iíüd;á‡ÏÞI»u±\nê\·õ¯¹9›[åàÚ~ö÷¶¥ÁÝÝÑ…³¢æF™¥ƒº­o†)@FøÖÇÜåsÄþaŠÊr(çáËB?Íßl\pÀçMüÇöæHI›_Âdòãö×pçÆ¦‹ ~sUº3vYcÈd<ñ¿“¨°'åAzìÀ’Yì„›¶¹4…@æËØ/Âs_ÖÀ¢U¨Úƒ.ìª(¡x\zjÐí0íÃ6ðñºó›‚hÈÇúHfïáE'9D°Ãs8†Ët[ÍΤÉ¥‚ȶ"ýWÔœIºÅÅcHØ»z<ÚRl¹y˜¹ÃãÚ/['·'‹2r<˜”C bz³ˆÈ„ RŸÔã¹ö"š@íoæèQ|úKŒNž)ç_C9ÿ”÷Úü^ËãåLR¹Û÷<ü)ÁEìhH¸ ï›)~ 4ú)`Ûߤ=ü))uðYˆX³¤*7Ë$M]7ÿW^Õ~…NÉy|ŠÁÛÛ5®w>lµG³°õ¼*‚¾.¶ˆü*uyÑs÷dâzãepÐß¹ÂÿùU±,šûÖ‘ÿJ;3 endstream endobj 772 0 obj << /Length 2895 /Filter /FlateDecode >> stream xÚÕZYÜ6~÷¯høI ŒÞcXï"^d52öÄkÀñƒÜ£™Ñº»5‘Ô>²~«xèv÷x‘}ŒDUMÖŪ¯ŠÃVþ±•¥+#±²XmvO¨›moW~ðêïOX Ë0ŸPþõêÉw/”Z1J,µluu3]êêzõ.3týþê+QXR «¸ÙßÕ¡ª÷·øíÉWÊóGr‚”Y)¬èB&¤ßtWömý·J3¥ŠX-"s?’™\†H˜߯s)lV®sÁEÖV N×û—M³»ßV=ÊæÞ»ªýTo*ÿRF¢j¿æEÖW­ß öžlÅ,#ܲ¸Yf‡#Eç—­öN¯×ß´•D2.õïÔfÑÁ线óë޷͇òC½­{\þkjñ\(E“«œ ÂÔL½ ¬C¬…‡R¤"Z˜ Ó³$+–ˆ‚¯&tL!eö¯uòcBd‡Î dÖß…™›f»mËÏÞ.ð­m`¤5Ë»wŽïSÞÁ%ŠŠU.1ÜžpÊbð’‚ ¸¶škGÁˆEpJ¸æžÌ8XÌ+„ŸüË‘å•p3~œ3J©_d©~ÎHÁŠÑiK BÅàGâX,'U.-ÑÖû3ÿ‰Á6ïÆœ#Z(S¡­ H&⯺|žâ5ç`M©€CJ4 Áê FZ–í+pj“}FŸiÚ~²ü°Îñ'?áÿ1Ï6åÞøïa‰r_n¿þއiü±ÁytJÏž©Wp"è ßßö›mÓÁ¯¬+F˜(oûM_7…®ª–1U*N¸ä+ea £ÏÄÕHOÈa~¹¨cåÝuã4°É#ûï/¼Všø¾¼ çSó%ÓŒk" ê(cÀÙÕ¦#u>!O0½\4„5à»y”-À¿¥‚#f‚º­:/U?òaøàY¶å®‚˜ÜÅ“dgÞiœ ^Êœ¾L:ƒ!:nÿò°Ã]‚¶~§æÆ?C– ¼Aè !B``Ó9}1qz$ü•*ÚÕûM°Ôg<a\¶a°iö]}]µƒte˜÷jsãʼnºHù!^ï‘ôœíp€ò¸MYvB& ‰üߥL~©®y–T¯ÓZQXØH_ŸSîó¶-}¢Ë$Ç‚DQ7 ZïÏðqLú@Ñ×;ç0ïR²Œ‰ cnŽ~YaÀþZ AõuÊW$¥ÁWÑ\'bÏÄy­˜£†‘™ÇŠâ4—lq x" s qH`¸þ˜bTƒÓB“¤…“ÇX0bˆôo¾ÅˆƒÉìSÝÕ÷¶„`š6£¢ÅpØß3†y¬1&ù´^ÆŒrÌ2í'ý¹8qÈ á ôÍÄ'À& 4ξÑÑ 'ý,BE&!q‡¬H">ôUjó¢tn Ã×ðéÂòùjBvÓ6;ÏHï“: ïÖÏ.Ñ«›ÜaŒ/†@ ……¶ N”Q‹Já”Õ'¡,“à+|Êó¡Ø;‚‰šQa˜º`ñÂFºÐ0ß#Z€C“B p˜Á®pH`ÍsEX Î'Ô©´;_ò!TBX4VD\ü ³dkpmÉ_¤>ÃàrÑXXh.¶ÕMÓV¹Ïø +½‹#Ÿëù„­˜äSò©ÅR¤ ¿ñÛÚò½?Vì<Ç3 äqçýa[ÛÁ±îêß“gÊ(WaИÖVc}‰Qª"·ä"‰ú¡Ð4âôjœØiÑɺÈuqÏ£nV…HÇW,>ˆrǪm*ãžPë+\Œ>K!‡×3¢wÌ?¹@ }?ÿU<½³ÑH-âÀ< ›†‰ðHϾO2öf¶Çèë¨ôŸQEÉ_½ûÅÓ¿òKÿxû~¹˜ÃW¸”Ÿyy៯Ã3l>f ÐíÔpÆa× Èôà ,x˜Æá*‡8Û)¿Ì¸R ±<¾(+‹AJ)V¤8Èã²ßÊB°à« ŽÐ® V4ƒÐ§ /P·+Jÿ\.8†ÙaS(Kõð™”(Á oO™[#‡S ­°&™)ÌqfççÎÕÂܰ ²&äï0¾IqáSù¨r© Æ øÊŠíáÁ1®ÝÇ ?¹cÓ7m7ìêž¾·õï.vÉì¬á Czü%™¥´³FÓÇt{­ÐÓ.Sä?ƒl%x < ¥x¤¸À¸.¡Šéî]‰b9ðh?l¨ið$¹È¯‚‚E q8IÍ0ÈÆj“‚Ÿ:s8ò!üÔ~êlsèúfÅLÒ:P+ÃQøË$ÓrÏ3 îxbBUî¯=ý€¼Û;ô×Tj, ¬2ÕÛ–PQüZÃ.¤âÙOû CPLõ¥ÄvpPj÷jÁæ MN„œÕé”MKDÿŽI• ,jIèØÊ“²#Ýnk§†´NÓÇÛpm ºø„ aE°‹˜‰¥Ê˜Lû E8›õ`Öõ6š§4Ç …x½pNyÒ7EZs*¡7vLoÚ>¾=‹$T_’ð>ƒ3.` n§aÒOøãIç yæi…€• )‹`*±´˜ÅRvJ#æqžô-| „û|WoPº»A(7ÝG­ÜÕ·wá–Æfå®ñ46J:½©±ÓÆ ‰È\2×óCzuç\³»ð%÷LÁ€x®»ñ>‹TÌ‹W69@Ö 2^ßo«}…à ªÈ®+àn A¦J*¹ T/Jt¦D½LëÈ /Їí>œt% Êm×øÑÐÕvÓCWß|WGǺÚø¢“‚µk¶Ÿ’H†=ljã⩦6ƒ2ÔèÚæ Î4µu>!O5µ‹>¨T‘{›°TlJUäQÓw™¬@³>ŽÃ@|†ÁÅ’Çû×¹ä~½©³žÒ>`O; ïZgw ·•7¾ ­ö(º±®¹‹íç ø½õÏ]ý%N-<¬sx‡ú¨ßËØïü»G€ñ‡Óë÷µñÏÑáÐ㦭ÃÔuŽ^˜ilÄ” ¹+º%õ!Á|õo¿R¦ª/õ”‰Ü¶®úu ð r»a*{Q·]M©³mÕ§š’ˆ?é˜CØ‘ÚÛŽœ‹Ô2>ÇppÉ“«X"Ǧ/*4±ç„Ù!(\Š£ Ù1öÄ ,r²×–[µu êüTP»oWMic Mb¢,Àê,²‚6Uöc9nla®•Š»MÃ'ÞYt}é\—½¿XñB:ôNS1ˆËiÎøm¿û¸o®«ó·91‘d³‚C2Ö…šG×K¶(Ñý^®DO°V(f|šÚgÖPÞ}ÿò›ÍM—lb¯†?~µ‹YclFäLhKã¹/†«õñUZõ˜Ó¤ð“Oo8p³Ò?º¾~¯Ó€‚ï}dÔ·çïc` ŒÍiö>C_WÏ’¹Ð]q6wç§£Yž&„r5ëjßôîÏbmœªý-±ã%É?Á8 'EöÃîHÚåc¯ö?/PÖ¿½xí·™I«]Ÿ¶wèM8ä.ýÇ8½)»*‡@Yí»º­etìf ×ͱ!¶Jf:éªMã*2ÀÓõá5¶©»h~X¯Á×’ÆV† ô"{ë‘{ «å6®U·éM}C^råMè--º¹îºK³,ôRª :s}.öÕð<à UN&ÿ2ÊàLº;ÖIg‰«³…A~ E—IÓœ§¸Î~ ¤Í®î!•aý Mæ.!aÖYže×v±“¶üsôs̱±(øÁÿÕó+‡kýÛm•#·ëA «\Høiqµ;1ïLêþj”‚ endstream endobj 778 0 obj << /Length 2032 /Filter /FlateDecode >> stream xÚåYmÔ6þίXõSV%Ư±ªTZµU_D98ÚJÀ‡Ü^î.%»Y’ì­úß;c;¯xo—·VU9‰ØÎÄÏŒŸy<ËþØ"¥ -I¥Y¬Ö·¨­/®ñè»[ÌËÅ $¿:½uç[¥Œ’”¦lqz1žêô|ñ4úú*Û¶y½Œ…‘º»Œ¥TÑÉ.ßåÅæÒ>ÈÛ%7Ñ+ü¯ª_4˘ËT›H³åóÓn}sÚ¯¯8?RQ”< )£ÞÊEb$aB:uTV•Û¨™ŒÚ«%‹r×ÞLµtƒ«lãöpJ'*¢l“•oþÈÏ}¯q²UYºÙ›»¸±;ß&|¢ F%‹˜)’2æÕYÂNTô…{0z?„Æ Ì”úe"ô”¹'%¢kèçÓïÜgOŸ¸÷ÜãÄ=~{>™í妩ÊëüUÔé Žuæ”pV·S~Ú—"šëNbUV &0•D$âàL¦“¸í|àŸú]0ß?á]Ûá/ß÷Ö‚1¿†¯3iH"48ø!q‹ Ò³ý'Ø\Ä`áÍúdb?M™H»Ž‚pìÝ¢”b&¬ƒŸö=Ux4QA)ºŒø0’D+Á|‡A‡Òª?F'3 „fi¿¨d"é;œIù)lðÛMnà©–¼ë$©Hµ›Õp<…çB8,’1D*¿3E‚Ÿ&"úy ðaƒh¡Uô­Ì]ûë2k×Dx€d8œþ(ƒ©!êü?Á1¬í~×\U›¦8G • ÆV[‡;7<`”v…ƒ¯ €1ga11Z Û“ª;O?†,âI'¶”ËÂ-Ýäõu±ÊÝ+Р÷êf›s÷¦½ÊÝÈøñ]]íZì 6Åœ"©šBÛ¶®Î²³¢,Ú"ïPSé©ëb ø^ÒÙïap+”H£†½X–.R’&°G”`D8"¤îX1Úã¦&©nðË=Ó+aG ï?† §4¢!ësF ëÁìnhJˆDÑC«ø“uÊY\¦ûzjp„aR«»gÓ@âÊÌl©àDêä_Éx÷UÀ”÷CªBú€H T;Éï1ÑrñT4®eƒ]÷ !‡˜Ê_îò¦µ2Üçg.ó å®—>KÛ™r'Ô¼iÚ|í/êÊ·†vRÌ ÛÓd[Cl¢Ü7Ì)Bk¢LŽžÑtß ¡øH/5`óÄÙÎkÇúã&5ÑçÞåH.(›¸3¸ˆ¨ãÊsÌS† p˜B|ÄóœN$&úui„õš8Ümæp#íUÖºVþ¼ÜËõ~¯Î×Êêºè=/yÔÉO\,™u±ì] ‚5àoÖæá½$„j3x‹+'„B_‚ø…Hˆ@»‚ù¦ú%džAê&#ÂñaLí¦îá^†{wöÈ]8@ZJ5ÃÜMåy«µšRQV6~¤uOk7íÑxÇ{ÏÕÄÎÏÁvŒÖÃÀãb]”Y]¾A'‚í+÷\A˜F%˜»j°…܇g¤»¹†ñý܉<£LÖM;š¦Zo1q¶V uç_^MÑÉU;·…&ì[9¥?‰¿x|£aÏznLì†P©#©~¿½ C HI íñ"83DçL¾A¿²°ð’àÀû€ô¶Ûw/då£m© KXN§Hª=¦ÉPÝ@¹ÅÊ ²âs”‘BÇPöS~ÄèŽ,ÁfˆËê é82X˜4±LÙÞuÞŽ®³¶.^CÊNÝošÝzàöRŸFœ£_.ÙºkuW ì´Å:o\3óÏbã_uŸnëüº¨vþuþ:[oˉ  ½]¸Ñ]áCá 7Ðó<À/Ù‚S³ÿ…² ƒJ“çóðÀ:ˆ )Ü$Ä2W'ÄC¥®Ù¤®þsnsQ´ŠQqD4ðj@¸ç¾¶Í.=¼&b®)OáÑc5í¤h:Ÿ´ ãw)¤Á rðã`•¬¯˜0.Y$CÇÛ™íCècgÀK +AMT}p k<}º‘ãŽôS $qðm+>¹ìË?LòôSh0-@‰q:¡xWf¦·7JVA}pjâÎÕÈCn–Ѥ!œ¥Ó@>½òG²g¾î¤Ö€£}¥½º¸‘1€ Ĉ½#rÍÛrŒùf•»w×A{f//ëüÒæ9ñ)0±)ßc ôL+9BÌÒ÷ýË¬Øøó_ø­þÖÑÝ›â¬ìH`5a…{‘‹¼£ª´¯rI© ^—Wq™»Ëd90Bo›}p|05S/ž°„¬_lªó½…vƒ÷vs|}}þâ‹ÕE$ÅîüøÙnOH(z÷ž÷™’¶l9¦¡'ü¿·3~`g>»ßþK[¸;nsïu}øJAÖd"ÎÇ·¸£í´/i¼–½›ö»Òÿ+­ËO”Ö“"­#kþ”9 endstream endobj 779 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/home/moreno/research/software/octave-queueing/doc/qn_closed_multi_apl.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 780 0 R /BBox [0 0 121 144] /Resources << /ProcSet [ /PDF /Text ] /ExtGState << /R7 781 0 R >>/Font << /R8 782 0 R>> >> /Length 736 /Filter /FlateDecode >> stream xœ}UËj1¼ë+tó:`EêÖ£uL ƒ¶w!„Ó8± ž€C~?¥=&kg1xV%U?ª[­'mÓ¶üÕï4«··IßÿVÞ$òôµìëÛÊYJFH'Í zîH2Î;S26²Žì § ³óÆûÐד’à@Žˆu+£ZhëæŒŠˆM+£Z «Ï꣭'Õ¢hH‹²Y8ÎcRj¯|´¶4ûd2²kI0lƒö2ÒÄÞÎËÉÀ¡¯'EâÁŽ”ï¨Úºù£"Åö¨|t £ùhëIµ(Ò¢lŽóhÙ%C®ä.lìš]CÈšB1볉̚aêk„šÝBhy»0ª±\=€Ðçºp.ÃW÷P—%³XÏ/@°ÒSX{ZúÓ‘Ã?ï­~þŽŽ ÆÇ¬ËWBF® IUBפuBß… ’­á@K–(ÆA~ìȃúüFÿêHJµà 2‘ŽÈödÞ1“ñ)mòŽP üa)¢†.Ñ&í(‚è¶g’&Ç0Òþª9™”½þÏw¯\˜–sC† Ãú¸ð ÙªÐ|Î'Ɀª±˜(E6\гApEÀsˆOBé¤-Õ"bhí6õëgœE›Æ0Y«ƒ!èÐUyS® 8ŒOc—Ö2,¿‚tm ¤èrÅ|*ОÌIY ©a¦,ìÙGSLŒ7ºŒŠö3ð&ôßæ/ÃZ¾.Ó¨gÀJ‰ýF”—ÈpÌj÷îúêüðS%ܲ,^®ÔîòÓþüL•-cd–;µÛÙ—³“”×#ɦeË•^„%·Ò8.›¼°#Ó³è —x<eëzµØyô^IJu¹l•Ï™úp€T7ê/¾‘ endstream endobj 784 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1223 >> stream xœQkPWÞ%d÷VcjI#D4‰Ú±ŠbQËøjµ E P|‚ bbÈ&PbrYÂðH€ j…á%ŠÂX,m}µÖ*R•;N´¥ÔwÓMgºXgÚßýwÏ=ç|¯ƒcŽã‚¥JQž¤VeæÍÔË™PœYÀ,äAÊ÷Ò·žÏHð  °m_„\o¡Ò7‘v.ˆãQñiîeŸ$¥-_±be¬:ÿ¸F™S$\±V~è¸üuG§(TfçÉ—râ˜:_¥È+Ú¥TÒÊ_ÑÊ“ÙÚc™šÿþý‹öÿð1 ›µ5}GÂÎÄäˆÈ5¶Ûˆ…aáØ*,[‹a"ìml6ˆ)°Ç¸?€ß Øðœ'ãiy¡*¡/ ¶¢O˜E­¸/Õ+>PUZŸ3ÎÒÌw!Å{ÄoŽg—šKöÚ%z´ÇKî-vŸsWyªdWÐ|ÔH ¬pç×@J5kªèQ-é7¡z1"ÑYسüW¾€VÝæù’}abV­'FÍVXKmæR#»„Õ…°ËÆÒôY3tI ×SÛI;a=tU/Û¥'‡íjŠ]„‚Ù”6†t¬)+[m㸮{ÉHÚär<(•DËîæóŽ“_8%B4ùš“œæµÌCW½ÄšòØÇ“HÒ?6¸ŸVqÀWõä³ WiåàO$›Í–¨@È ØÏLµâ¿MóÐÐŒØn=ñ Âm¢cg¦ì±&*–cfºÉaÃ×ûg°bØNl¢­UŽÀ¨HúACÃc'þ9çµ|iἿœÛK°~š-ah>»GO<±¹,4' Œ´/26Tp¦Ì^r“ÓØfÿ0ï’Èéâ{TÇÜãûÓIÇ:‹%zf¨ËKÆ:MûØ+Gcî†ÕœökÜ)Û. «½øÔ4*A8¯É,·Ö•UÆÿÜvyÙæò¶£¹<ã}DvØ›p^«¿túFgÏMx^¤úòÏ\{6¶™@»âÄgjjΠÐ[ûÞ KLgÉbª’.’r„T¶•a”­A÷'õ{°h%“ì[/Ö¢Z›Ål-…§¡ˆºIù– “-þ:sŽ‚Ñ‹½·._ÔgwKÏçz šA;!dNpG˜ËA9ÉC³æ¡sÄ&hp9†ó i¥Ùí«ùÙßxº¦‚¶:c®ŒKÙž` 6;ÀÌîCæÔ8Ž^Lò5Z(6Ugí¶”ïsHX+¢QÜO?÷?„%S-IIÓÎ’æ*¹†¸¶Š ¿vwÞƒàÙWIQÑûߋД±ÛØÝ|33ŸäP©æÅ tB1,ú…£§âëð”ýTÙí¢¾d¸ ¬KŽßª.®9%Ík1Ô (2RºœKÚ{':†eCíßÀïáHÉõyÝI½;à DÏîµ÷~9ÿIÂèªôƒ†Ül©JmÔè>n´…\¿Üy‚;ƒñÙÆMLŵ>,BÊä֣¢oÖÓÙ}UÁ„S0Ãþ Xè endstream endobj 787 0 obj << /Length 1313 /Filter /FlateDecode >> stream xÚVYOãH~çWDÚG²›>Ü>íÃ,,»³P íŠáÁ$°ÆØ,óë·ª«íqŽ‘ "Õ]]UýÕÙ1Iù$VŠ¥a2Y–GÜr›Ç -®ÿ<N.Á`$ùûâèø\ë‰à,婘,ÖcS‹Õä΋åô~ñ÷D%)Kâ¬XîËÆlL^=âÙÑ‹á-å‘ ä”DN„b°8(Q2¡BºT³ˆ©i #éukVÓ@ÅÚ»Ø]¾,²¶¥ý¥é¦JxoøU7ߎ‚Üuâ b)E¦O”#å­ë¢¨§2ñÞÐ;`…žù/+Ÿ wž·D»ìJ™ŠdÖM]ÒÁ_¦y Õ|‰OS”íʬò˜t FF% ûà~ÆëJ0 Jƒ7Äл0YE¬Ûi¢¼¬Ø8lŸŠÀæ*èíL¡Y}¬›¼{”axëÎ*ræu±éòº¢]½¦ã«>Ï–‹‘ÅÐàD–˜õ4€ýÊí¡@Ë G …ãCþ¤ðˆÜP€ª|™dëÚ<[cuÓÑý§ó³`qLá)­ýÞ=2¹åÞ™yΚ®D‘J•º|Þt¦¡Ý|™›jiZŸ„f›©ðš• "loªüÕf«isëí;BõIõÜÂ~ ÐŽ+ÒD2 M„PÎwÍt¨ Øӑئ¥–uÕæ« ¥U+½Í”Í<(”È9H_]ÒÙä´7Ôgª5Í+–ø@Œ¬Z9!—¿Ø«‰aMš¶ïã—¡Ae>LBžØ=þ\ªÉY}tuhjNž‡J°TÅäùyþ¸i$ ‹¾‹Xœ¸¾›[¤ ! Eì $Æ…$ò•k^d¶8LO•–laPJö•öiöåp=²$„𞦤dB$C?^ÌZâLH1*lÚ˜–JØ,;WHÅ; ä^†ñ@¹¼úÊEXåÛ·C H°Â®Š¡«Ú`èd”S×>/Font << /R8 793 0 R>> >> /Length 1255 /Filter /FlateDecode >> stream xœ…WËŽ7 ¼÷WèèXE/êqŒ“ g{ð!È!olÓ½ $¿ŸR7Iiz׳ðaͱȪ–Øê¯ÆYo\ÿÇÏëòÃûb>=-É–™ÿ–íwóþ×¥¤d›O¦ºhs­fU¤$o]1¹%ë)௳ёÉÑ[Фñy¡\‘P!_· &P* Aœ÷&h¾X—³–ø¼H‚h×ÌpTq^>/÷KhÞÆZ4kÕÊ‚\‘æ/š5ûÅS¬–:¿`„г­eãS-¶CÁÙ²ÁKx^|Ìa[Ï¿Gï·å’αè Œ´¼'ìù%e®· Ü®ž™à a·È»JpB“V­+ÈEný¢I ƒZ‰¶P jHöÉ«A5ÃÖB*@âa‘®àºÊ 1×y±ªš„ R´†ÄÃ$]Á]*ÃAǵK’µN•wd¸$Ý›‚-+ö:´ùmíIW}ï5Dtà·ŽœMdB(d©h|^BðÁö,+µH6EÍZ§Ê;rwYŠ ŸRŽmò)9œ˜Ô§H˜s”UƒÄÃ']Á••Ab®1|¢™sg ’÷ ®!ñðIWp—ÊpÐqí“d Ÿ>I÷ç ŸÆø„§¯4(ÓL$Œñ-"uÇhU„‡¯ÈP•c|KºBº†ƒŠk—Æø–Êc| 2†µdÍãûëö¾ •FBvæñSžli-à¥X©“ B5­“;œ_è„©ö¸:´7gYPš ¥ÂÏˇïÍ?KH‰lNºä5…N2å2âC´±u¤ØcŸEÏ)‹_NóLywìcýv§"åEOp̘·ƒPB³~fÚ€×g)¥ËØ¡¸_<>IÊÜFeÅ齃mÔvÏÉs9Ú zÞAz¡ƒ¾Ùá)à>†­½­ûù-סüÇ{2¹¹hÞÑžñÓå§'ã÷’3ÕþÃKÒñ å" ¾nkÆyë«?<ü9Uþå„qñnù×iKW endstream endobj 683 0 obj << /Type /ObjStm /N 100 /First 895 /Length 2582 /Filter /FlateDecode >> stream xÚÕZmsÛ6þ®_ou¦cï/™Lgâ¤Î¥MRŸíkÓËe2ŠÄؼʢ"Òqz¿þž…¤X”¬7:®ÓñXÁ%°Ü}ö ¸ ™`Î{fp Ž)p5L‰k`V&•fÎRd.\-óZ¥vTtp²ã¢±ÂHQ2©=^‰I«ŽIç1PÔLz™§‘ƒöèQLF‹e˜¸Ó2‚@£Ðp¦ã…fsG$ÞðK>þ²Î?w«¤ÊÑåûŒ”9ÎG帮²z쾈|ÔÿÐBzÈ7 àoÀ¤Ð.Šõ–&pK)zX¹9-ÐXÊ‹‚ÛH'!ê°XÇúD"g–"‘SÛE"ç#‘›F7<®Åš‰d«œI<ÁØ[ôífc0°"Ïó^y1VÆUÙ+òúÏ/F'EÌNŸpà1pÝ"Ð(+É%A/nÀ¦=3'îƒÅ­JÃcD™¶„¹tt p…•-­LE¸±2ü¡8{øqø®7(«¼ÿ®BÆ7ÈíiVÖZgO 4J c æÞ …àFn~‹o®ðs]¿kkd~9Ý󢵑MÓ8?M÷Ü4½sñ¶Æ*®aÓ:[MmüŸL¶· Dþýà Bn‡ÏT#´ÜˆtƒkGÇAÒýO,ÉŽéœ Ò r:KÈÑ88!×Í]}*ª¢®n7»‘–[àQ)|²„•z:^„¨½nöª|Z2F/Ûl4vEV•ô·:ɱfOeÎú® ®µ1-W÷¼kkLÞÞÖhhwYC:ŽMDD‚¨¸¸§=TaÖh±åÃ%%úJ\]àšüŠJvCç ÝÞ¼…±Yk“½DjïÙÑ ö켬êª7.F5‹\¹På8ïÖE9|Ú­s¶÷ô¡ˆq© ‚Ýùï…üNˆï@÷²ìo"9-ê®ãÔÅå .ÞuGŽø5›«§p¦úù'ö+-æfš#`w4õþãçúÙI9;Ù/G/™œ==èVy’|öÓoÏ>xòýiq‘WûÇåEw8ÑÉÓ|ò˜ŠÎj%”MƤ§ )ÆUýä¼;f&v²ÝéMÀÍoE¿>'0Ò™ÇÙÿê?:ØìÑ©˜Hx—,„˜ÚÖºÆõË»ÀãÃ^ÙGûU÷"_-”ƒdŠ˜w_užRýÃA÷¬b¬GÕKûvÞAYÝÑ?òâì|zK“Ñ3¼ÝÉž×ÝAÑ{LY`´Î/~E¬€ü^e'IŒt"ã@´„Ͻìqö<{‘½Ì޲“ì÷¬æYu~¯Ê‹ANçÌ|õfdz|‚Ìoy‚læxæ }‹ƒN‹4Ð/·Bï¸ÞXT¬ôö7{ 2ö׿¼ÿ/9:šãùiŒß´#¸Êß¿»(ûù]y€ƒ£“ãŸOÖ{€hÖy­æ<€”aÎ(»ÎôgOçÅ&§AîÂ!áÿe×Ñü»vјž:Û+®Û ÞRXžq7qJz挄ØÕíüÍ Oz endstream endobj 796 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2472 >> stream xœUkTSÇ>!䜣¥Ô’FÑ„ÛÖ¶·j-+T[¨Õ‚”÷»å¡á‚@‰!“ BxE á! ª…ªøÄ¶Z–Ul«ÒZ«½íªÜÞµæÐá®u]]ëÞßwÍŸ™Ù3{ö÷íoöf`®.ƒÁp‹Î ‹¶DŠEiù+ëW)/µÞ…ÚÀHô‡ßR0‹â»aÀ Ü\íëWzÀÓÏBÓ3Pºse0v„Ä5½÷÷M›6‰ J ³3³Š½·½îãë^êý—Å;XX”™ïý=‘ óÄ"a~qX¶(]Räýç»Þ‘ÂLI^Záÿîý×Ûÿçðµ{ƒ ‚ ‹¤i騼¸×|¶½á»ýMo {{{‹À6bQX4‡bAØ^Ì;€ùaÏ`{ã`k1OŒyÒ,a®˜±ŠQÆXvÉu¹ÂŒdNº&¹N³ø¬³¬e¼ ïÅ ü‰³Ä¿Iù| MîKÀãG©¿ÙK±íœLꆬ›¨šºÆ•áèв*½¤*KÒóJ`b;‘$kêk2µÔ6 &á*´â£›š ̇’ 啱²ÖËG`°’¨—å¾´ Q‹6ÈZ„ºÅ· áÉ~Ôºäɹ§kTÈåpÂpD唾û=qÌÙ‡œÛ8 Æå#¹}¢ž‚¦÷M7Ûºì$ûIw‡Õ9¶ºú\@|t‡‰èç0©u*Hö£™âžôë@ŒôÐÁâÜÒôÊý€LTZ8â 儱£¦®Õ8n䲟@¦éZü¶u`W|Ú&IǨ§þ9 Cf.aT§JXR\+-SÉ@P˜µ‰­ õÉÀøåˆ~÷€p+@.$J…<´&AÖo“ß^â—¶ïù^(ˆ²¥GŸÉû@WîI¸qfZzh„ïȵŠÛß'Ý©£HEjå~Éãë{P²àÉn®E"ÔµáFUƒa–„>»$ÇÙ©ó‚O=„®p#\óîƒW£RŠ¢S· muŒ4ëH´œWFXŒu fu²`9‹±åêp-Éž€¯Qýœç“7ÏìF«øìxä’”é<Á_Éûuˆñû"…CóØZ8„Cüëä•ó×.=¿€óç£Î½w1œh Qg ~GS_ùWÊUª #©YNCýØ÷³eÙ§ùó1£ÛÂZ¾ã­äøü•/ ªè¸Ã`£ülŒ[÷˜µk¡ÆŠï«.kÑ_$¡„pŒ}Ú[gÑ©ùVE“®]ÖÖÞ“R[všX” ø‰ÐUGI2•Q¥4Ò“ÅØÈnKYŠ™}œVZN³ÉSw¨lÔöN©+Ðÿ†' ýKø§ n`•ãºJÝQ-Ðuuymq}qm wEÆE9ÞO\È”µ<^J®8~oÖðb1¿ ½ÞŒ›jªé‡Øñ Iß¹B¦¶çx•Íkþê…ŸüÀ)@ج¸UÑzx£ý=“3'r|:ùtZ•6j—A¦b9H ÀG­jPÔzu•úÔÄÝ-Ú–£-ÀÂmæAiEñ bXoVO¾ÝзZkÒ˜*é¡1骫jô&PÌÍÖ!ø¼Éíû²Î|ÂDã WÏD^ ¸]çïÂW¾¥ñRaŸsäJ•NÈbM˸Æ`Z×§è’8SÛùeObhq»¬«Ënë¨1Ô̽ÅPÌd£cäLO~ ?Œ@[ÂJ+R…™2äÐÐCÇS.Ú§/óÙͱµm²Q¯`o¦Mhë]éÊ¥ªBeA¥Yâ5„ñÒø0\5º¢oZÛO]e\¿e?0á–¥·9ºêteAEÒ^~%«Œ¨3š@= G,i‚åcDÞ½œo!wºÀàšÝ^‹ÈJñc]O}âœîíV—Øù޼Ž÷@‰˜I!þqu篰pæ; ádP›¡'iwj~ˆ©}ù3¥Ã‡þ /ã•×Ô}…‘óC{HÉ¥Âìäô‚`àO"þÜvHüüõEˆñÑ<ÜÌiœº .ƒ.q³/ á3¥Sb£Ðh¶Í㫨|âÉÞLE-ùq¤8{½¤ª\%÷Ry¼ždŸlÉȨÏñJ)òœü¬¼Ò4vŽGA×ð¹CÓ»…–#µRPHîOø0ÐçÀ9èžÀ/ÆO ,VÎm76µX½AkU»†ö¤­<åÉîüþ]ô,âÎ žŸIçÈscCW&ÆJ2ùý¹-‡…“ݸ;ì6Ư÷˜öµ°ÜЇšÊ çIê1QU_–QL׆:¢ÑØd¤‰v4(éâp˜0Ä(•ªH÷?‚ËmKOÛtß|•ƒKð)][9(2mZŒžE?q>Ö´­××ð*ìÚvк:ÎÉvd+!f ;Oús½Ñ z‘rÓ´Uµ‚Fèh©›ª¡èKˆ)µth ŒYàZqº턾Ë;YV|ZÍvÈ„ŸµO7Z>k Ý¡©27 “ Ÿý#*,ÌÍï.ìë?Þu¢ÿðq‘€Ö°-­±1`ö®^ û¬ø;@Þh8MR¿•Õhßë,%qÊÚe¶ÒnQä –}¨\¹Û°¢Cp‹ê¼É€˜”nà©Íˆ(×$x¨‡»`ðƒG§nyÞooÝ~!:Nr0ƒŸ›­È•ÛuÜ‘_7yÿ|äŽ]nݱM€ö¢–ŠZG¬|s'õð’üêŽpΓ}nw9A§¾³âjñpØK¾²G,3weðóÛäf9ý+JiÖÇ’·î=-ød´ûøL—MŠû¥%M©í$ûþ—Ÿt]÷]è¹×Rä¹™|‘XQ(ýÀZŹ9ḠÈÏÇSC2Y…‡"Úô^ÑŸèlðåYêmº½NÌ¿s›n­T,ãl¤"RpôÅr+ ûÉm¸sGûf9HƒC ükÃ5s‡©L¸Ÿú†ãñV`2šê‡p+Ì Y…VxHˆ#RôÀôNN9[tpÍÂÏ9Aß U)20TÐ7Ñýƒ>ÇI”ŽNq¾?DKÖåPØ»oÄ<†[§ê{mVýX¿e¬ÈË]ÙBÅ6ÀZðáÕwŸ6¹¹Ý©q{ÃþÒßd endstream endobj 800 0 obj << /Length 1968 /Filter /FlateDecode >> stream xÚXKsÜ6¾ëWðÈ©!¼A8åƒë­lWOÊ©Êîš5\sHšäØVòçÓ €9¢,gíª!6úÝ_7Ä ÿYbib„ VæÉîxAýnw“„Å/ÿº`‘.ÂlFù|{qõJ©„Qb©eÉöýœÕvŸüž¾8íàºM&„HÕ“M&¥JßœÜÉ•õMØ}í† ÏÓÏøÓtúMÆ¥5yjÄæ¿Û_üs;ÉWœ£¢Hy_S=×”IF ÍK„ êRBñß&cʨ”©ñ•3Já£ÂHÔ*É8N9<5”…Óo6 X¥O=3„ålIÀ$\0>1\²×Fç¹?¬ˆá&ɘ L±3Õ<±ݵµÓQnAÈÚýö füëš?ŒÏU[ÓŒÁD~þ'¯^åÒuÍ1¬~"ñYtÀáâ2гsqœ3¢8¦àRÜÇú^‚ãöv“‹´7ÁfužHñŠDk™>C2ž¾mÞÃiN]äù³Ûáï‡l {¿HšâX6w¸ ³ÚÃí»Ú3 Ú†¥^;øð¬.ªÛ<±âWf,QàÕhè%„KÐ`ó*êrWTÑ/®Ûûp^ÎBC"2™H›ÉØ#%=Rg3ò:gêUüõù/Þfœ2šQôúU1+—°kÂ5m; C ñ`ܦW‹ÇçϟÂï -ˆ0zQe ^?¸d-PÂÏ©.¯›é­ð÷êlÙ•;×…3ð.ÓÁí5Äšu®EW¶§E›¦ƒK3W"'ë씢àviÀo\™+pÄcA©³ùJPΙŽy#Dž¾tmÑ 1‰EùÍ“øèjÌ*tió>´ͱ=M­åí®tõÎ]š_ëüõ ³Úu}ésü6†ã2}ÞTÍM]\†ÝïH÷M.ÓÈà®Ýuw*ºÛ°ƒ^%£³>^Pb”É­ >_˜Í!V•÷ÄÕ÷G™¼l.Þ¬ù„Q ÝI&€«ÄDˆzUÞœ°Ä}³$2¶Ëí¡s.ÊÑÖè×µ]Ù» ^Ûì]åŠ0¨¡`Ù —|Ÿ‘ù÷þÐx ©ÃkYŸ§§Š›p %þṏÄÙŒzÅ g,—N%À ÷´P‚@çûV5"õcz(Cx¾ÔÃû°[z4æÁ€÷{ÁÒ)¾Ç ‡PŠZ,Âo-tá DXZh–€)‘ä)âhžê-×}œˆeƒˆ|V5»I³»4Jyn%Ô=“]?à‹Hƒ)¸Ú55&ÀP”u¿\Ô+_襡Œ™{ç®Q'æuf+–€{—3Ü¡õ˜}AC,Ââ£ÐÕå9„OeT¦s}ÚdÝ—×U<èuãjר"RÞŒ-KK,ýòÎ÷)l¸F¤-4HdodZÔû°ºyÀ6Kå0 òb¿ôßW¿j‡]Uºà6ïf.£›‘cÛV€ÙC ~õ´€8`™ÿVF©%Ž#À¹¨ÁuÄ+<3ù©ŸŠù®ÃÀ¸&” ªãB µºÛ|±Ã¢šÎ~7d/¬P |‹}üæñž^®ñrý»üS“íÄmLð‹þts[ú?·¢˜&>烈°1NBUSìV©‹ƒžë/Q“ÆÙhÀtИ-dÂÜc°Yôá¹Ã U±Æ‡oüGöTùhDb0u¥09ܤšrõu ‘‰&ÖˆÜÄhÃh©ãô¼–ó†@#›aPÖäQ ÿ·ÄñÄ’Ψ:÷ñäúatãT>ŸòzÏaË󓈄âýÑ «8·*¦èe at¦ õswß}XSåffÕ1‰÷®n†ØôB¾b?‹ðæw÷î2zÖ¿Ãe`Maâ›QáÝš"9tè‰bôSà_Ä1ã>ׄÀ˜Bõ4G­ nãb¤ð÷±':­;ÚŒ`ÔG74Ÿ6 *¹ÝžDþfáLnÀ™ïO€±tނߢ°ºÁ…‰¯-”…¸UE¿%\3¦€®R@ôwµqÿîÔ9­…™ã˜Éð’( —fdåŠiôôø‹¶£º>ÁæœÂ¥Ïß@­fó}¸ó,žµm´q~ùm9´éÙPÛÖF<ʈGF\DFL®1’‘ÑËçq ½¯1ÐÒ8l,]±K=Â…G.ùÈE¬Z¥a#"ÁF6"ü= ¢p×'vÞ#¬T¢‡s=ö¸>àí—¾óŽ(%Àth,*¶5/.dÑ„]F©ïT ˜ú‚ƒ½rµš¹ø3ìÛàÑ|© p©þ±  &®¿%ì,¶”Í…=}@˜eçÒîM€"ŸO€‚ÝyŽ}^‡ŽêºN{耷q4œ(s6ÅÉès–îK˜…ëâ6ã¤Õ£Ø4qŸÃ@ôÅOùü}f– tù?è’‘$R/:ÚwbÚ¬qã4þmà±&y¥¿{s ï?»€0m0ïPXOÓNŽùÚ5§›Ü<ã)X̧SiË£›®Œå0> endstream endobj 803 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/home/moreno/research/software/octave-queueing/doc/web.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 804 0 R /BBox [0 0 496 405] /Resources << /ProcSet [ /PDF /Text ] /ExtGState << /R7 805 0 R >>/Font << /R8 806 0 R/R10 807 0 R>> >> /Length 2021 /Filter /FlateDecode >> stream xœåYÉn7½ÏWôQs†Uܯ ‚¹ÙÖÍð!ˆ-Ûe%޳ý}^±¹TkÚcÅÑ!@ ]S|Í~U,Öký²XC‹•¯ö÷ÇÛÃWOÓòú×-òõáõáÄÑ.'òv #ïØ.^n>ýÏÙdK »â ËíÁ—À&ûáâ²ËÆ‹åæ¾Ó˜5}öf…åVïK±¼œž~··œnñÀÉ8Ïΰ§—KÅ™˜«¹L&*¨nPHÍ4ºAá0'o¼Âé…ÓL§Ž£˜ +œnP8Í4qºAáx‹*‚ê¥fG Ššz©ç"vŒm8g|ŽÄ-ŽËù©øËj².íÏ·Ë××HØ,†ë›ÃšÃ´ø`r/; x¹¾=<¿²ÇS*ÌÆ’ ½¿2ÇóÃì™’6f_ÍgÞqßœ'6‰Ù¿¸þþðíõáÉNòçŒ×{a—=› ñÖ©#¥ i¤fÐHÃg i§žØDѰBê­áÓ‘6NɧdœFj4|’v:Û~iìõÝ jHÊé¡Iâ’É)È ƃãž$-z'†K4dK^®_öZ¼×ñú;Œ)±N TOL˜¹qz˜ïø…Õð6ñž/åA_àçå—ïR–wËàý*üìBE݉օzŽý^ƒqakã’H‡ ç )Ñdߢv ‚qÑ_½£Ç6¸¦ßÆèõ΄Ÿwü>OΚ袻ZŽÁpr ú‡#a Þ§«÷ÃñåM¿±‚Wc¯c4ï6×7á¦ßœ;ûª’¿z;Œ·˜l-6îÎù}g óÓ½Õìññn‡„ÝÕì=Ô²·Ö9åOà+þâÓ fŒdËIÒ&ËFweáŒs†wr¦?ʇù(wÃøÛ½£7*Žç~`$:“¨Í˜íün[ÒJç‚}IËOxRç£>ŸÐÁ”(*x€D¨‰ÒQÚðD\Ö­DõÝ¡š•`M"±„ˆÂ†-iÙ›X-)…ZR-f1”L0`’ S àhµD1 4šX”!R0)*CÙOƒ³Xn¡fHba¹¡Ü8ÖƒQj ÉÈÒ\Œ±r‹'TKN°È \ÄâmÆÁƒ;“cC‚ëUÀ9Xp€sõ 6J‹ÄÄèp¤Â<_@ô…ï5,¦ }ãö¯"ßž38Å>–VLòŠ},_*œ&êÒ†|pý}öcxöC¹O¿ß°ïQwã†~œ±ÿ\²ÔUÅ?c·IÁüca›jþ9q6%Nþ±Ì²>’ Sœ,Qnï4Ë8Ãгi–ƒ|´a9ެï4G,­8Ms²Ø*›$OXZÉšædÓŠhãÔ‘¤w@Ã7‘šA# Ÿ¤œþñ€‚–³”³7 æÜ¬D¿ú]}íÆÓÞ•¸ºÆƒæ žŸQü*ð^¡»WpŸ]¨˜Úés…ûb`¶ŠhL̆ ‘yŠóÕH«™»Â Œã[ÜcØ•lwcô¾²ò{5l« eç”|{ô¨3;ùöH(FbFS¦kSл$N>é”ÚÔÖÅœºœ}·)©<1GSÓ®0ï¶»‹’sïnÊÛñézwq~·öÈ‰Ô Èr/ýZ¡ÇV³Qö¾'ÕêK ©V?AçZ z«ŸÐ,»ÀªÕ¯r$FÕê)÷UòöVŸ¬ë+®Þê“PÔšŠ(úUDôVŠÏ­ýwoõÉyZ_YöVO“T«O²9*Noõ <¯ª÷ú$}H½×§P YõúØÍØ?eöú¨qö±U-%ôñ¬õáX‚fy}=Ѓ@1†•˜,Ö¯R²‚Duðd&9‡Æ·Ê™NˆxÐAÀÜ*[²ÅËT,|KPA(hTi½…îÏðÌ„ŒÂäXKÛ]óéAÈÐ(Ž”´ÍÑ%¹/¶$ÿ ¡¢©†œ[—=¨ÆF¬¢}0ÍŽZ4:Ó URSp0ͤe-.Óš7ƒæi4ËÈõn4‹¥è÷7r#“ŠÎuÆlÞäºønÞàÔgª©1r݉ˆô:×ZŠõ|-×=`bÚ¶òf(Ú-S ÊæYkÀ͙ל7½öæ}©°•÷,üo•m`yåOSÚvãjÛy—.n··ùRu«p›¼Õ¸Oß², endstream endobj 810 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 2356 >> stream xœ•{PwÇgXvfŽŒLF à€‚²(ˆXy#@0¼!î. #&ŠñÁõbb@¢.Qðr Å€’¨ ¬,R®„D£¹ôìý°îH*uÿ^ÕÔÔüfª{º¿Ýýi’05!H’4 JS¤i²R’&NN¼-ÉÛ™ðv"„ÕÆ½Æ"1?Óœ@æ"dnZcgfj MÓ¡x$¾AˆHrñŠmŽ1Qkç:;»øeçåfedjd ÝÈeÉE²?¾ÈüÓò²2Ô²9ÂCAš2;G•¦Ö„e©’óódÑI꼿 ÿ?WAÌTgûåäæiò“ ‹Ò22£²¢W+UóÝ,”{,’yD8AÌ""‰hb5C¬!V±D±’"‚ wBAÈ "”#¦Ó K‚%8baE„ !$"L b7ñŒ !w¿š8™d™`ÑQ¡¨Û4ÚôSÓ‹¥â:ñ×â~Ê‹RPZª•v WÓõŒ”±gªà”ߊ´|Ô½L­eO¯¯öZ±_öðUÜx•i¶ó÷¶ž¡®Æ” þÏ /£õж9ÖÍŪV0ô`¯éå]zÉz=´êEp”¯ç°£»=öÇÃ0ÿË@áñ»HË|¹§m¾x~#Ò×u~T/°ÀÞì5H-Œéš~l€¼jxÄ©AîÚ‡åh.ZªŒ öËp@Ø aó†YÝþ7#¿ÏE°=û©bgª$vkÖfµ*<4Ë1x¶+0 €p=Ð`ß~c“ú¤ôxn¥êóÕÌD¨}¼SŸêõ‰T¿Ò[±×±šÓÁ1êrLs^7bÀnHð0ÁR)ëæ¢6¤†2iÖÅ—b;aS÷¤c žŽ_ [â¶0ª¦Á´›ý¥0$èX¨Ý¡µ¼+8·boÝýCÄ£tX^kzóˆfÝö—”mµAÉâ}6bTPp×”‚Wô°M/â¼Wú"ðküºÅÒ'¯ÆTxC%í+üº¸¦¥ÛÄÆ½·"1­¢º@²¥òãÊ Œ;µ¿Þ 3…ø­uÏûÖ_r8*õ>ø…º5Ø4_:Ùým½zõ‰œÒÜãºÉGƒ"Ø/Äç³<ñ,ÿÀïÆeTL½º³úðžÔIzèw}Tº 1[4HMVù^ìD~–ƒ°opÙ+¶/˜ÁWyâšm’Eȃ“.Ü‘ð´ç¸#-ïŒþUÂú÷¢æãÍw™Sæ¼[/Ù¨‡ŠAº™Û¶{'Úõ•Ǥp‹6¶`Î7,?5C’—³Uµ{-££ösîDb~¸˜+ͧK3жnÃf›‹vnضQ™€—®ðuµÖ\o—|sLsFŸï©ÛÏà9È¡ì’M¹š,eòqˆQ¤j½Q_7R!}\~h_]…Ð »&ËEBÔràŸˆçQØGaKˆ»Pà‡àP¬R` `…Äc”`…ÕÆ7µ$o-¨‡g»à·xñB Æk6x§g"›bôអ}Ì2úжC;«Ñqtâ³ê/Ž©¬þ¢ŠÖ“3AÝ ï%ù°…Cý_Ý|>kÈûÚ\¡æsæa^Ž—Øƒ#˜vU%]LiV®ËBkPbmöå÷On?YzÙÓÍík¿£CÌ£öàyRÁ-V÷Àô‰fzü¬ÎöZ±v¼£êÛ4;v')¡.Ø³îØ /u¯ZÕ´Fz>¡%÷:ºƒšê.w194–¥®uðO¯ë(‘,¢>uê  õ¢oŽži¼Ð\Ù‰`#¸SЬç…rÃ-˱ fßY.÷ˆ}¼ÙòÃôOœ€¯–ìh"ê1ª¸WªA%$©;V²Y+©-:‹Ò™)¢ ‡Ü˜½„¹O A/IýKD¿ä^RSþ¤¼4 #"¨3fpÁ(\•—°JãŒð[ ÞÕ9p§¡U¶,ÿéº.IzKĉ Äø˜Ž^qÂïàäç¹ó×=ƒxˆ¿26:ÕK$”‹ \~¼|ؘI+±èýÍØ®ˆY5•²!¾M"¯¿WÏÿú¬ãô9}ë³6ë_n|u=FymIç“έ=„  å¹i%î6µ·ù“åµ5—ÿy¼1ý‘>‘ïņdH]c°ã¢wKðB^IMÆ®IèÂè?û ƒßoíù,ŒÇ‹çÓpí!‡s)È…ïÅ“Kô}àª'yo!¬c,7nB­Ÿ!þ‘ºØ|æPbFÛö³#B}×ï/ºS呲«6^ˆù^Ù/ ÜáÙKpÙüŸ°]lÊU²´âÄp•šrÝÕñ‚ΣpNp¾ƒ?Ím³·{0|P@Z’"Ñ¿Ða+„-ù^Zu.â¶R@(ØŽ=‡¿ƒÍ‚§˜ X½qMš´ Û~yŽn£K)aysZÃ݃—x…Þ}2Òq[/¬´SS¿<6õY6Œ(F T¸Y±c¼-?»ßTSº ärNw_ŠÅ+k2ï%HØK’S"¼ßÂÖc®Âoe??ëþ”v¯‹v 3pˆ{p5Ñ/0.qù²ø¦žž«M¤ì |Ót¸#r±<"ÊÍ#¼]7Ô~SØ©š¾ª¢Ê7¤~43¼Ö·×Ü|ð€ùëñ_q¨ì endstream endobj 811 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1495 >> stream xœTiPGîÙcvÔÉxYA4‰'V”À‚P‚Êé ºº Š!1¦ÔF£h€ã"¢AP\ƒŠ Ä(uA“R“R+&JPŒÇÒ˜JïbÔßù1U¯{º¿÷¾ï½þ¤R †aú„¦²R¬éI‰#͆dç–¯ìÅÈò %&¦ÎKFµ,jÖ*±Vµo {Âì°±XÝ‘ŠaƇÌ.3;ÎgÄ¿ÌÙ+ÒSÓ¬º÷Gñ×-ÎÖ½ü£ J±¤§štÞ4ÈJ1˜3Œ)&kDºqq¦E•h²èœ¹ßX¿úÐ!ÞdÎXa±ff%®JNIMK6uE¢™hŠBÑ(Å¢8ˆæ `¤G¡h: C (1è-* R¡´=bü˜ƒÌ}…¯"Rñ³Ò]iUþ ŠUU¨ZTíjVmR/‡*7°M½L6ÏÐÁ"ÐõãëZd»Ðe§ËþÆÅãGÛš÷/ ɺó´aÂÎ]‘$ò~ÒP+¨á!¨™z tJh’Od¢7aH0Ñw“`âc@áß“)R>Q 7ôƒ½ã‚§~ßöäIcÛu‰Y ܃´˜s*×U Ì¥ÕÝ‹Mt§†=YonÅôýÜ`ÂõÌë© ߘz0Ì+Ï3¥Grü èi®ž ygø¼à ù­O¶^¥ð(Õ·Aê¦Ú·¿¢Y«ágÞ:räVÉ—›6ìaˆf]þ¼‡ãèDC Ç~FIž±‚ž‚‚©§¢)Iy³¬6;¶ Ã4NO”©…†]YÒ®U;óN¯†Éqýkr‹rq&·4yeØó¶âl1§p}áúJzšý‚ôú5&àkø»ÒÚêÚê= ø ¾’VTF‚û'­ÝŽwsû«m§,sóE7¸c}Ïî3·»õÝ+LaDG†éGµ‘_Øqu‰÷ªË·lß+¶k>ÙøÙ¦\Ì-É+¬—àäËõa“7tËêêñ*ùp_ÙNîjøºðE‰úHcõ%]—VC´—BûñÔÞïkE>>ÜÉ;¯3ðW_ˆíj2œ%L—DzÈ’3†Y]vµK"õ›ìjϯižHDÛ'—í,åëJñ>Îh@1õ,ñ&ÞÎ y"x±gË¿jÃ\Ó¾ìÔ켜œtƒçµ=ì¨o»":EzCîCŸçŒ\YB~ÞŠ pÓº†5‡SÛýφb¿çGTd:™ö`0Œ„Þí­Ï«$"²«’WÄã$¼lçÊýklŸïÙØÈm¾/ì¸]S{_ć &s”1ýþ”Ö×õŠŽP fÐ(¥Ã>AÃÿÙ’œP9Ûk޵,Iމ2OÁ~™ôaA8W³ëü)1P¶`áô9†ÝGrE2”ÍO,1ÙÇÒί¾N_Ýè×ÀC¢hßj(ÉM —O¾ë3?48"ÁÑþøØÕé•£P ÍKÖÑi^]†r¡îxKUynf©Xœ½%§sä¶ËV°#»~I•aïÂ’…Xçd$Gr`Ó¸A•«“Áà ¦„$—8_-ÛiTÑŽxШ;çMz>_¥,ȤƒG×Mú{yWø². Î`ÛKZµ£óîß½_9`3HD¢ÕLíþúñ5Ío8¡Ãqè›æ“• "érí\>Tûz-{jž†_ H?ß•(.oŒ© ÅÔ:fक ¢8‡“‰›µ\¶ï€Ð¢e%,¸÷©¨ µZŠ´½ú¥e<è endstream endobj 814 0 obj << /Length 1872 /Filter /FlateDecode >> stream xÚ½Y[oÛ6~ϯ0°e‹YÞDRI÷°a`ØÒ5Iƒ m\GI„ÙV"Éi×_¿st(Y”é\†¡(ZR}nüÎ9U1áðGL2>±J±L»É|¹ÇÛÕêfB““_÷„ß7…ÓÁÎÏö^ý’¦ÁYÆ319»Š:»š¼O¬Þ¿<ûm¢\ÆœÍ@J»z¿Î×y±ºÁw{?Ÿõ R)Ÿi î|Úã4J“Òßófª¬N8ª}õ‹QÃÝ2cRêÎÀ×°S›äš6ë‰a™U· Ç´õ‚eh¿ˆ‰tLj°h³ë5í Í’I#;Å‚L¼ÊWe“ãŒzÍažõçr¼í¬cÖ¤1_C/¶|ý>¦.ô5]Ä}:¶ši;Tw3*cYÚéALŒ…C7/ò^îòÞ„Þ{ü¤¼3_q×Ì8± bR&¹}:\âéóx™lh!˜¶#°R«QD‰*ÛŸ¦Æ%g€QÌó©æ’Ø£˜HiËu¹X”ûÒ%Ÿ0ã§J©äͼ™íK›<àrNkór OWþñ*GWˆ^¥´OX_vÛô|]VQ`Cì 7ÏŽ}$v–éŒbgûÓ•ÖÅëˆ@ñÚØ8Åx`Ñí0ÃS R´5“©É×¢; ¨z)*ÇAp~f˜~C+MÙÌ4½+ïÖ‹Õ |®‹/t>ÜŸŒù1of"Ë™8¢™—º):ø„EG_tZCh¨òûšÅtœòß é¦i”ÊœFçGÕÙñ 8õÍÄz-þ¶“™u2ºÑë¸<"’¼™ç™%“‡ã)¦ þ=йá¼.>ã¯Úð~{ܦZûâxºýæ2Iß¿£œÐ𖆋Ë@Íýj¾\>ÌPXp@‹§~<ï­ãõ¸´—$…>ÇH”‚A’õm{¬ðô€2ô|SQF Ž ¦Ó^Èõzå%á×Å KÀLl›ÌgÝK¬kLÜÖ¦?N–¸s }mÑBìm~ÏçûBˆäzš-nʪhn—^@Iã¼\âO¦¡,³!¤îÖmß•2¹k M^M» kë¦X_ZëxƒK¡ìô¾¾£=‚ŠTEg~ôwŽ"$Ï»¸ºãzð@£ÉâÇhí+‡ ;GMùi¶Ä!¨ Ý?®ýùö=&F®”Ñ,åaÕ÷-Êœ¡Rɾ@sÖEÕ²RËáøîf€¥¼{ò‡©¬ðHnשÁÄ#§„@, 6CÈØ¤âwøkßn±` ò½voéÙ7ÙàßË‘¼P§“Q0Y,hÒ['»ühç½Ù6Qeôî†ÙÒž¼¡bQõ²úKé@QýOÝäK/‰ s[|û]f5nuØÉ}€ÌÛ¾Ó6ûº¤ÙGjÚÝ•b‰íü*J²¥c.$Ø!¾hoobCß^m¨ÕæÅ‚oÓ⣱k †Ç%Y&¶îe¡¹x¯À½œI•nÙ+À"àîœk-EF`0²½Úa~!·=”»<”Ox(¿‚‡rËC`“ÒEìÎð"ôÐûõyÆm¼é ù2?Ò—ûq±í‡NS¾Û“‹WeƒGrBÈ;DÕ» Jpy‹]Óê;æ†DúÿìdJ)`éNDžÈ~Êm?åÓ~ʯåçšÎ¹”eèIàèqoˆ«@J—/ôäåàXÖzbœ•Ì’'ÖÍLÃ2éÏèâà¯]7>#ïI”¯Â5] ¨Õ1´rWùO:ë¹_i?m"l¿á?%-‰BNJß¶j:\5•è5Ó%ú%˜iÖsÊbl!~4ªjoSEŸ°è ·ÑYSŸ£|Ur¦­]¼¶øªÂE[t5~—¢ççO9槺 4öÌSjè”òN©ÇÀ/ÄóÙ±ÿDP—ñÂD/,^áð×[.F a®6_–{ÈËÌð›¥ZØt,l½Ò Ýüg„‹‚¸p Á´Á%+¤¶@ËåÒ%•ÁAëø;üBhD$ôÁˆÓhˤq­G$Zÿ7eãž#e¬ûÏš8,È endstream endobj 817 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/home/moreno/research/software/octave-queueing/doc/power.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 818 0 R /BBox [0 0 501 407] /Resources << /ProcSet [ /PDF /Text ] /ExtGState << /R7 819 0 R >>/Font << /R8 820 0 R/R10 821 0 R>> >> /Length 1383 /Filter /FlateDecode >> stream xœ­WMo7 ½Ï¯Ðq÷°ª(êóÚ¢(Sûfä8všÂN'EÚßÇÑhÄÝ»NZÄÁJù(‘Oç“q–Œ“ËïõýôëlÞ}žÈÈ¿‡wÓÁ“3 ÎÄœœ ìy¸™n_ˆ\lqd˜£¥ZÍý󶬂»¡RbÂôöTc˜4…s}óu¦C­Î›óÁ«_¶vÑ%¹Ú=p.Ž•J!²g L6)œ.P0]ÔPÖÙñìƒ ¤ H5u6@ØS¶^t颲ÎH ¤m@´©h‚f¾Œ‡ñ£iÒ!U™Sy ’¥R}2çðíÓD3#Íòs}o~¼+‹.o§FT2ÑÙ"©¢b•`.ï§«Ûrõ†°³ûƒ÷;qÈdk>‡Y|¦6ÅÙ•O²^_¾˜~¾œ^nÑ­° šôá 5KþXiA‚Ÿ"…ÐÖºõº¸XRt ãe®ìW¡Uïj´i ,s…²jt­ÒQRñ ñ@isÒ5V¥Ò£êSµ*Ë\Ç´k¬!U*'—|Áhµä”°«}_~.!A‹’c0¾Ú(¹œ gÝìcÚöÌ ¡òÊÏb“lîò-ÔiS=­ê‡º¥ßh»íjØž˜úç¹Ê5kýïrÅßx*þWóå»2”$ ¯ñÿíäÍ‹ç¼Aç¼8zr.žzAN©óȳõ$yè˜<Áºb‚Ô2N;?íÑúÌ8ïÝ> F¢†îÞìÉÙBÞ}Þ‡hC Q̾[Ъ7d¬²ëhÈþ\G[Þ¾¬(ï×ÕòaÃÛýž‚-”IYü…¼¹j]¥F~Bó¹9\ U`9ý¯{v6qbåæëˆÈÍ*|€0'`ú•-ÖO<&˜ÇŸR’øsÏý|´œ‚øŸO^.þcÿeµ݃¤:Içy³!»Ýfw9 Ý݇ut­ò°*¾_­?n˜˜Uåe,+ÄßVÍ›MúôÕ8dcÛw'ýŽmßCæV—” Ä‘’}eŠK pÒ¢ùý‡è)šóúÄZÚÝõ.0Ò¾QwÆgü’<Šhr±;4cAº yT(®*AõˆERpyV(a"ñe!FyÏð*J=À-Ç/;g³! ï1Û<[¥mNèk}†tL—âÃOF!aÄ ÖtAòR²ÇV+Š oY6ÈÑ%1'ÐÎ’Li~êqp›åXŒ–KŽLý* p N}ùâšNàd ÈÀ_Øq‚S  U{`¯°ÿ§þZR°Õ˜£téÇ¿* äʼǑr{Ë* ä<謒@{£¤’@®Ö%ÀK€—Úþ{ˆà£$àHàhÖIˆ¹ØÀ: m…ÓIðRò“΂÷T%®# ð€–&ª, -ÁÖ ²ÐHQt*tç®Y¸E5Ž,”Ê6æ% =ÌÙe‰ïé@Óuʺ¬éžpVOšî'®¯¦{DõŽQÓ=á„sçß#ÍÉ#*Д…ÉK ›DZI–@«èx¦i4$®Q¡šc –Iš‰'Mw‹Û!z }Aù÷YÚG\ ¢h¤Œj{ýÓ˜ ¸PðjãœÄKNøÊ@ »änÕI IM4¼žj »¡µe÷¯Ï> Žš ’~"˜ãõ®9`fB>8”¸¢Rã6†PrÁ“%h¸ÆÈÈ(c‘¤þ¦ùè¿¡„!ž;’> stream xœUiTW®¢éªŠ!¨TJÀ¥»GÔAh±U”@TvDÙeuXZ t7ˆB#FEêèQqAY\pIQ„ (ŠÁe H\BKi`$j\æçuÎLæÌ™¿sN:ïUûÞ÷}÷Þï’„¡A’ä8O¥*]™–5º³â§üT~ªaÍÈž‘ 1?͈@F"ddX:õ“·&pm"d‡È „ˆ$.˱ X=ÛÚZî’”œ‘’Ÿ&³·›«EgÈ>þ‘¹*Sâ4²YÂ"]©JJV+5i+ÔÑReQšÔÿþG!Ñ$¹$§¤¦mص)Cé—¨Rϱ±›k?O1l¡Aø~Ä ÂŸ$VAD0±†XF„¡„;1—ð&Ä b%aLŒ'&&K|NpÄ$” 3œ *†„+±‹xEú;Èß ¬  E6¢XÑCCC•á;ñ8q¼8[¼WÜG‰©xª‡6¡Õt'ýŒ1bòà¼1߀и€GñE&míÎݰ§Ë”ý®/æôÅÝPE³Íÿjlëi©Šñ‘àwñ2ZçÝ8KÂÚ9¡uÄ2¦—âÓÚyy;Y®ƒNñå¶œ7»b·^ ˜ –}ï` xσåÒ|gn°ÑOÂümmÚövû€Ôxd]Z'?ÜI^XñˆÓ€ÂV‹h6úBäëågð8„*f´ºÞö˜<„À½zQAŒ5µ-dkÂfÚwE‚bðL[`À|u@Ãô¦[™šsÒ3)GÕ‡V1£Pµ¼•V zs”êu)Û|k¸n8MUÕ¥¶"¦ö Žà: °TÊÚ¹¢€ÄØÌSš•;Sl3dúpÏï,Æñ§+ÛÙtÀx»£Oj =‚Ž›Šv™<7eï>ø(â):Ln4Ë<£Y»ÝYÛò·N BщaN ë7$(˜ûAÁZäèD¼7oÌå½ñø&°1þÂÇjQU,LPKµ›~Ì*MGëÌCB¿Z©<\’.É>ºýèŽ fµÖêÓüfÝͯµk¯Zœ’:žð8¦)AæuWϵþT®Yµ[b çÓñV­ä³.ìð͇x†«ÇÏzT®i.9¾ûïe’6zKî7y™ˆ‰Ûz°B ¸g,ËBFù™4wÁÞ®%OLÙM|ú$¾Ø×Ól,ÐMáuù¾„§ô–´¢9ðw ëÚŽêÎÔ=`–ÑB~ÇÄ!ùë“À†/Ï¡,ôò¼\<“ú«^.¶ÈõÅâAê5oû^o+»‘·k'«tp¸KÄ_¨ãrvíD;£ùúèi)Ü¥<ê1ç¼rClœ$5y«z×j¦›ÚÿKgµˆùåJRˆt—‘푃ÇmÎØ™˜½r½*y0òß÷- ¥7›$û‚N§ÝDÇÑ¡Ýeû< <8”´-3%-Aýu(b¼•çn•—õ–öî-;,”OîP'9p…} l‚° ˆå¸àƒx.Q``Š#ÄÔ…5#Ÿ ÜÍÁñL½OøÚSà¦/MtÈZ—‘̳ЖÝ{™%taNáÎt=Prìô‰£%Ǫ kÄØl¬ÍÀ³í$²9Ô±ýÚæÊ„Ç³…2™5‹ðR¼´:X‚QW+PÅÒ…Tš{xœ' F‘'“ª7žûö\Þ fw+·¸é~7bž5yÍÏAU'è$ÿ9}Ã"ð{dP·QMaåÅêË'jÑO L[ÜŽgHðÍ?Ô?Å@0Ý׿èf/”~ʘ0¯Þ™´t;þ1VU}qžQ.œÞM 7 -þZK¶ ð䀈à 8TŸ{äëïcºTãñ …å"lf_ø"E ^a©WÖ¡s›£Ú IØê‡Qð‰øªä [.æ×EŸïyxíÙ˜z÷îx!ú¹¨¶¼®ò|3ºú[,ÏàåufóN&–¡FæqsÝoÀ4¯¶Î—Œq+"[»E Qs ÿP¢{ü?.˜<ú˜²ÿ4ÂNšýé—[w[ï]TzJð£F·wËc½F·ü4z0èÆl·¨t¿P‰ª1ê¤bX;7¾~­ó˜¼¾}Hþ9"¨€fç¸@%4#zKêÞŠ ð-gañ–úPòϵäÕ~¨èAÙHç…|ÕëB#–§Y#<™Á¹˜9Xu9 Û0Þ"YWïwÖ1N†CµVx ŽŽ°žmþ  ¬vxH:æï$ôŠ @\_Ð;çO«°hãf<5ƒY>ÚÚù=|£PV‹úEü§ÿ„:pçÂ%]ëF³—·®?F}èNjcTeÔ¥ÕÇ=Ñ\ä)øaŠò›È]‚ýS{êö-8YZýÙÄtÜñwòÿ*Ä'Nj„-üÍc¶7çUÔãím7á¥ýîý¦ìX=Ü!ª‚zq=Ra·j•UxÝûíRÁÇü* +ÜÄ ^6k°¦=¯_pNÊ>k9ó]ý£É0añ<[|éˆçäJz©üê½§•]©>y 1ÚÚp§5ªØLiêÖÄ+ó˜1ò`û”„¸pØ¥\Þ=Î'xÓø‰>LlCçN¡ ޹ŽtZ°Õ‘¼£ GòH§7 ‚õ“Ä¿RWê¾/lDÌP“÷ô™~+¬Ã+;ÒÐþ“Š×_z¨ê@[¼z V ³y§†Äd«£¥e*†kD€-„ ‚KÂá;ø \&Œû² È ¹)£¼#]7ÍCØaãBç«Ë/ùÝS nS†_Ã_À|î fÝV­VJóÁ£ñåkt]9âÆÃÈ‘{ÖàkmçëµxÑŠÏûïÜÓ ]ùq¶¿¨ŽÒÐ(x–ÂNx»;¶ ÆYÌ U û`5( áÃp„ÊÇ©5©è÷î‡<áeÊóSø‰ÜãšÒrÔÊ¥x*ÞÄy_`±{iü£ ûfqtŒŸãdl6l+@”ýöÌ:bš]‘°Ã˜BîɵHÐÈ¥KÂjÚÚ®Õ<‘²oðmÃÞ;þ ~vó}›º{šn Ó3­”/> ‰G¨_Ç |ªÝcdÔuÐè3‚øŒ‹ßc endstream endobj 825 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1464 >> stream xœTkPSW>7$7WQHãÛÜ«†"¢Vªø•†€PAEßFÞJ”€ÆRP;âA«¨€B " @ÅXt¤ ¨£–ª¨íˆ­ÊÔΩ­¯ÙKvzõwÜ™={ö|»ßîÞAR bfPPLbjŒ9!J?Áß”ípy‰#q”D킉±§¹Ç 5 „.X!-Åp›+d ó`$e˜i‹s<—.ŽøhüxïOMI–Í qñfáãI“}…õáÍ INˆ3 ÔHI4%bŒæÐÃú”d!\oL¹ß;¿úÐ!•Ñ”´9Ùœ²E¿5*&va|B¢A@( -D‹P8Z‚–¢e(ù£åH‹t(MFóQ0Z€Bƒ> ­ARêÜž1ÞÌ)¦Sâ%ÑKþvëbvùIª”.’Z¥×¤í2l>T*EÀVÑ­n7@€µ UÕÞmê^=Þ•«îÞ<®µ©bCˆ†<¤žå ¶ÎŦÐ(Êï9…0ƒ ž‚Œ©¦9 ¸Àeñ;5™îA@tÏ ‚0ý ð‡Ïn2›Ï&2õÝ݈€¹s"[_¾llmã)P2ôƒGÐsB¥;‹´"¼ÞC=Õì©°zS æ`È_ ¿¶”¶¸^Ùt*xd ^iLãTw¡¿I}».pœçÊÀíª–ç/êZnSøá”êàû¨UÙÞÒ¬‘«>8{öÁÑÃ{vi`¬|Gön¼ ‡à%úDN5é%yÉ è SO,¡$Ž¢Dì”VâŽ92zªŽ¸Äå&¥òE[ 3/nƒ™êÓóÒq ·!zKp¬é@¾E“–»+w×IÍ~Eü ~ø¾ZPSUSu¼_Â?Æ×j‹I@ã°è¼ŒƒøWQe½`ÿ&yE¶F ͯàU'ÓÞ×ß2õlp'q×ù´’ߨ©µúGU%û–ižÈ¿ÈÚ¹'s±™¹õ<Ô½ЀñVqw_[3Þ*ž"Ú(@‡\U²V¯ 3T5kàzr¢hîç e?ÔhT‘!reOvqXî,x÷Údð!ûPt½ßë*s6M6Ù*ú‚ÌíÍ£é@ÅâBurÉŽ\ÎÁ%9Hæ^!ÄcÎâš©‘lΕ’¯[1w¹ÜgÉLKËä·f`¬KÏ&X"–`/Ϋ9øiÓåÒ‹ ´6lÚ—‘ÿ9Þ¬*ŸÌƒzFÔjí*ci͹cÖkyšúC¶œ{ §¥ô1€R5h¡XFf±¾dÚ˜æ°@KŠI)•Á,öÌê ³VçjŸrL¼:Ô0Ì÷W2ŠN|ªÏòÑuŽ_ÚqÔù<Án 0%…cN«¿ñêâáºÂ*¾ ¢² _ÅåIZÎØ c;aP7#Cª:;ïÇ9øòކígâžø~OŠ<Ñ›HÉ|2ïÏ10>ié®ä‰†Ý¶.zs$ŽÂ ·Tl·~y<«‘ÛÛ©>Ô^]sßÄgÖåÌäè–Pš¾»˜?{r‹î‰ß%öDÞ‘²üü=YG4]rÃ^cv*æ|Ö¬ÄÏñië A j§3žˆ­°\Á®LxÁaðrTÈWC #>Oðð»G¼yrçµ¼XQ-¥±‚üž-~ÞÜØø™ü[1_+c§ó^Fk°÷Ô4Ü¡%×kÏߨ,IO)Ðä[ö¥áŽ´;Û-õ±•‰ekŽ®Á:¼<):Œ«\ •ΑݤåØd¢œ:àøaÙƒ”®®+µœQ=Ö7!4• ƒãâŸo•­ xÂÓTsû¾¡ªê¦÷În?ýmSÝɤuÒëôÜ:]óî,ºÉ»B®¤[•®×lj\z2SIX€£¶¬çìŽ2•æÑv‚ò6eapà€,W¡>O1¡ÿ>z)‹ endstream endobj 828 0 obj << /Length 1005 /Filter /FlateDecode >> stream xÚUYoã6~÷¯úDÛÖûÒ#EûP`-ÐôA–K¨,¹:6É¿ï ‡ò‘ÙÀ€EÎ|äÜe"à'“\$^kž›uRV"H‡}B‹‡_V2â2fÈ6«»{k)x.r™lž.¯Úì’¿Øuqœª!Í´ÖÌ~J3c,û2WsÕt{’þ^M©Z³güë‡Æ4S&÷kæmú÷æ·ÕÏ›“}«ÔûŽþ»Ü+»ŽdË&Ó9þY +,èì~k|Þ\z5>èŠåî­#JznrõAGô7QÐgZúkGÆš²6¢/:V ½*Æø%Åy QU¹ÑðRyîNýŽýJ(“8ž{½FŒãÒcî¸ÓžpòÖHn¤ìŒâiæ½<ÍrpbKm9| Cyá®bR›#CUÌßQØH¡ðÐw4^pëýõìÛ~[´€„éZ(×±}N„] 0¦ÆÂTõÃyÐ"Qt»09xnêé Sâ–)Áýí*½æ¹ýpÝ; Ì9T#¹@]ð :PCç¥9@š4PÜ6-"œŸ¨ªêH#n–ÞåHgqýÓ-—4°áÐT£€§}CCa ]~Ûô˜pòÆ<4޵ðÔºK©’Õ•m1"gyq&ø«Øê¥n¶ÍQøt ´!ž­€U&¢HP> +Švª‘âæ@U ìú‰ŽàÓV”fTŒópšNÃ9I¹Ð‚£ÿ—¼u,&0Óa«åÙxpi¶ØuÆÅgÑ8ÅbH({n¦š„Èœ®ÿ÷n¢ð%îBúaœ¢ry[ÊWº¸ˆ¸&°ðÒÝ\ÆÇE\—s±OtÙÇÜuhåüt/ßøÀdlxµàÆGÿõîag endstream endobj 835 0 obj << /Type /XObject /Subtype /Form /FormType 1 /PTEX.FileName (/home/moreno/research/software/octave-queueing/doc/qn_closed_multi_cs.pdf) /PTEX.PageNumber 1 /PTEX.InfoDict 836 0 R /BBox [0 0 201 148] /Resources << /ProcSet [ /PDF /Text ] /ExtGState << /R7 837 0 R >>/Font << /R8 838 0 R>> >> /Length 1258 /Filter /FlateDecode >> stream xœWK5¾÷¯ð- Ò:.¿}%")IvÄM J#%{àïó¹í²kz&=ÚìËõúêéþ¢Œ&eê_ÿ=¯ËË÷I}|Z¼NÖÛ þ]¶{õþÇ…B‰:[å£Ó¢Z'Å\Q|Ô&*ç‹N))òÙiÆù¼·Fg79\2Ubhàs·‰N 6@Â)ÖRlÝŸ!ѽÝË¡a‡ã¼|Z—z2Æ«áHè˜a øDV#&*:§mƒ¡~úgBF¥hlbíâÿ,tUË ™-¬^ GoC6å+Û™)³ F{ÄHžý@ÍieÏ0ÏU;Ïm×X« ´k̽‚õÀȽÆìI«dPÆ*éÑ«¤GPLyæ¹Z%;“«ôb¹ìT®Gfï,—ŽI,¦ÌåÒU‰åÒ͉¹Ï,Ï©Þ\^¤íÂn"Ø•1!àäQ1¶]i'î U͙ҮR½ÂÈÎ}{zŠ}ñ O¬è䡆Т¹™ÖaSj£ŒQ¥ÖØvc»¿`NE=È+jBNçP[y ¾¹õêóOOªrõiá6¹zÁ`ƒœˆšÐÛ_Z *†ÔƒŒÍO/®wF|Þ’´ˇðšð ýÛÇM×öÒqʡɲib¯_½ÞîXÓ›Nz¶üpBy¼[þ÷ût endstream endobj 840 0 obj << /Filter /FlateDecode /Subtype /Type1C /Length 1873 >> stream xœT{PSW¾—$÷žµ,µd£¤`ÂT][-E\+Úe|Rê#BÊC_P B†$@È•ð69!°á%ˆ J VÅÖG«…j©Rºw¦­eÛ™s™‹;{Ùvf÷ïýïœó›ß÷Í÷û}ßÁ1®†ã¸o|†R–«R¦fÏÝß¡q:ȇ^Ä)¡ff"y´Èƒ¾èËm "GüQïÈô:ÒÎǸ8¾#±ñí„ØÄwV¬xw‹*§@‘.ׯZ¶:ø“‚àß+Á‘²ÜŒôìà?³,K•£”ek¢3”ŸhsƒÿC+K×f¥ªÿ÷í¿hÿ>†aþ[¢r·¥ÆHã²Þ [õ—÷ƒÃ1l ¶ ‹Ç–c›±•X¶[ƒíÄ^Çæcþû¶Ã±ŒÏãb:ì[\Ž·ûDú\æ„qƹQÜbnwˆû+o;ï>!!bˆBdõ› ¥¼ô?ðn83((AZžŽ(×åÁh°j’[’j÷ÂupmÖÎøwÊB!ã˜$d‚ÐÄ{9üø†¨àÄæÈ­ÊµP(qŽwü…¬¿CÄhÛ ÐÒÑÝ¡‘KѬ²o~ôeè@7<¨Îÿ4Í¡sQ¡4¤1BO­3f)R–SVk·  “ƒ:¾ tGÑbÞlw>1^Ñx¤j ˜ý4¯)6n¨ùè´Ü`¥šÌãe£¥äóqªñ–HXÜVä ßo÷¿t ­[ÈB÷Ð]A%ZÄ3¥GËa9,®2Öhj55¹DÄ&n‰s|ºG|=³7¯%f (T»£äîi¨YyŒ°ÕWW5BÀßÝMíå€?TÞÕYéüúöõ±‹¹§cúÄ ö¹ªÅà„]BOO×ðè©Ì°v‘z3>‘Óœ ÐE;±®Šj2MZJV}u¬qÊ ìÌÅ|òiEC±e#˜•’æ EÆð£¬iñhìu:Àém ½ý˜•@Gßè©¢ š²&¯%’p¤â¤Á©íK±K!Ù”,ÑØóœÎVG[µ¹Æl›ê̵к\mº²DÑ$]P’"ÓæQ0“U#ñ¸éõ´ŽÜñíª9‘ç <[{Ýl‰ @e…QW¤¦rJuÈUgΉ«IË ¯ýÁüfÒ¨>ú_}øDÐëÁA¯fÖ ˜8&ˆYÌìq…^‰_—³P0QZWbÙü›AÊJ6”ýfvâæ €¶“¦s'œ„—ëÏ9o¸únÂ;prçœ<è]ÝÓB èHA—ÍÖ…oí]²\šÄy”¥J#b ©>­ƒf<ÿûÏõóBþ»t+XGðƒ´•Æ"}`1ÔWëkÿtSZZmf`*< ÏÌ–g¤ÂDøWoâJ9Ø!«;R£ƒj°-ißæ°W‘_’HCœbä¼6‚/±[›š`K¥½ŒE2¸=¥ý|7ùË“øÏ™€â·FS½ð*¸:xöÖÐ`~z¯¨GÑtø¸”MÉÜ>¼4íÀ™F¯¼ö\.` ùģп¼ª%€i'áGå2½2gÏŽ¬0&;sθÊÎÂÛ“–ñúúol¬ûòÉÉòúbË&À|A2›¯CëþUï½~‘s°n>¨‰¬úµ¡éqðC=Ðÿø-§u26«±Þ| Ðÿ +«v¦#õ¿‘ –FK-®zj¯xö0iN ¨•l«Õˆ8øâpÐ/JµZ‘Ý¡>ÙÓé<Õs¸S)f¡)ÇŒˆ Î;ã­Sð*Šwð£²yšÏ>g<ã y ÐÉfb=Ô7˜?ôdi³u%"û›¶:Zë ñli’è© f0×ûnŸÀÑ÷Ï8´ -©IûØX¶×,dJ "Ÿ¿è¿¾üàÑâøDíÁ4‘"àÐG¶V üØëƒà鵨ðˆ}¡á«ÄLó1¯ˆ~“dQÙ|ÃÝŸ”=XÈÿ… )Ág°ÝÔ^r[㎃Q`MÜŽMª<›3M”}BoÓ³é5P:ù9íØÃÉNϧâóžŽëð.)VõèÚòSì€ÿôÞù޳WÞ|"¹ú^Ò½"]¤TÔº˜æÊ€‰!×mîxSv¤äêÃb%[ú(wNu–Ä=ÆAÛèoh7Ñ­k­ûy@‰ÍWR®…BFF08Sl6A34 Ë«Mµ®þ²#ƒ"D¦DÃe`EÌÆˆ¼B[›R¤pjë4¨¨"µl8÷áÔƒ®K—ÄCC­£ð!|?œ|ñ€7¶™×:·J–¼ÔAOàôœéf BÊ,k)õܵ»f"%Á$Ͼà}A ùÌ[> stream xÚ”KÛ Çïþ±TÞà»mªVÚªÝDêaµ+qkýHb[»ýö n’È’áÏð†! C)EF’J‹UDë~|çékÄ‚.ar¤ü4&S¥£$¥)CóÕ±«ù=c£ã—ùw$lJ¬IÁË`ÝõyŸõÚÍE_æÿ6Pœ_'ÙE”f•Þ6‘jø)I8—néä[¥Ñç&úu€wÎoÐ3*aV"¡4aLxØi±î÷yœ!°"úcœH©ðìOÛå•·þŒ¹Åû½ÅÜà|ïÍYZ×H¼êëEW4µ76+ßv›ÜOoãÖ6۾̪ªxwg4™ZŽ˜ @gÂ> stream xÚ•Wßoã6 ~ï_‘LjUQ?í{Y±n»n½6èúà$¾‹‹Ä¾%ÞÝ_?R”¸qÛ A+J¢Èï£H*‘ÄŒ29òZ‹Ì¤£ÅæL†Õí· 7¿AÔKP19Ðüevv~eí¤Èd£Ùב$¶Z³åè~ìýäaöáì×YgÉ*u¢KÒ|Ç'Hƒ»fäR#@ö9[“DƒïžwM±!Ùuµ+w“ÆÍÆ;V¨¿òج¶EÁzËâG¹(â~^-£ÂD¥ã'úWóÂc=v×ùnWݘ$F§{÷—×w,TxHy4ÍÓ²µÎ®o#Úbûƒ<Û)Ål”sK@ °LíiU®Éбˆ9¦Ãæ6\îRt·cÍu>þ‹u±ä•?Îÿd!ßF#WdäòêVðú%±bXaSä/N QDQn¢…¼y‹éãJ-I¢u~åôá °Bj¼ðÀï'Vé_²Fh5$\pt ¤B:ˆáÞ]DÜÚ ¶Å {ܺÃË7ŽŒ·7®ÜúÜJJ„åþpKùa!æÚo¡†”€Dh¶ƒÖ](/«àAæx{:<˜Æp`Ês|¥Êë~|ɧÍqNÊjY|Ð ”*J¡Ib1ŽoËM¹Î·ëç N¦T˜¨+¬¼‚ ´éD¦:î4aî$w¸ÓTóÐâäŽ4x—{w3>‚þPϣݲ:àÉ"pX´Î0°Ð«Êu‘w®^ £ò1›”‹Ù¤\ì%(<Öd”ÚlUœ­8<•¤ }ßÖó|^®ËPÞÏ|`8µÎe'ÓÅBcµ°è<´AåŽðøcfm(ÿ³%¥Sá²l¸8n›J¤‹ ÇtÍ+· d§'¶¢²ó†ÊŽ›]oÀ²ÓÂiÕžû4d™è¸®ª~ÆÔÌ å$‘yÄìÆRGzATV±;¶¾ËªlÊ|½ŽQâ_ä wg,‚šÇ.^f "ÆUâ i?®¿×Ýë¢îI´K±€ríÞ\h((íÊ*tZÅë`Ìeõ—ʸ`vN–ÁtS4u“¯Y3t6ôέaË!ÉP7¦¯x,ò.Rˆ(PÄXö mɱ ›¦Þа°-6y°†]†ú&çftÁÛ«º{"‹Þˆ=ßtÈè ÜP7À•Žˆ¹âzYh„UñS7bü—üRc)ohP<~ì­ê‹â·=•{Ì–„ôQ­ Á¹¢°ñ}êeŠöø ñY:vÝóþo±­wI+/§§ø‡"ô1·ÇH ¦ôQ¤Ô³"|Ä{ ¥µÔK-5…c-ŠY8¢Â‘÷úÐ0k ¸·/µ`Ƚz‹¾< ªA>o†S¿eOŸb¯ío½”Ò<ʇAß÷w¼}ÃÃg¾<ôlü]-6›9!ù4å¥ÛéÄžkz=ý(‘c?{µ~-%øÛ‡bÒB§‘Á]ëƒⳬœÐRŇ]€r2Æb=R|jº™² ÒÀH¡ztz •ÞÛà=þ~>àòæULÐZ—`œÕæ5˜t?Å'Ⱥ¡;À“_YwÂÉdÈóç•ßÚúþ{âÀËÁp™<+¤{vɾ®/ï… “ÃÉQ(rœŠT¡9ž(Ñ] í’£‹Ù0&ª‚H3ÐqBJ|…ô³ô?Øv1 endstream endobj 852 0 obj << /Length 49 /Filter /FlateDecode >> stream xÚ3T0BCKscc=K …ä\.°hQº„äÎeUgbl¤±*OS endstream endobj 866 0 obj << /Length 3166 /Filter /FlateDecode >> stream xÚ¥Y[oÛF~ϯöei sî3Ù'Û±]§Qš­½]iQÐÒØæš"U’Jìèoßsf†%ÓV° â\çz¾ï\H'üèÄfÍ9±ÂLf‹W™omn'¡ðóù+åRL’ÇW¯ϤœÐŒØÌÒÉÕÍDRJ°ØK]Í'Ÿm~¿z÷êôj=’dì;§DÉ's6¡š0*Î «RFÊE˜N¤R±ä烔&îÆ5®š¹W°»XØ §D*ÞûttÿhÌïðš¥6¹È«ƒ”+™œ|ªz‹r^|}‡²Ã¡(×Ä Cú¡¦.¼­’_ŒHòråâ U^>¶Ej74©›P>.냔™dv÷Eušÿ¹r+k2ù຦“/(S7÷£»b*#ÊÒ~)¯áM-’‹ÓÓS”†- ¸"3I)'TÆ­_ž4yÕæ³®¨+¿<Ô~&¹¬o:œÑO›7.´žV·Eå\‹ós¨ä³_V ç%…N¨ðÍ:©`—¾Í$,JæË¦(Ã$Ô—Ëøª æ›`†øgÛK}ûÓÅ®6QM‰µb¢˜"LÓ=ÕK§ñMÞÔOý”fö3"”â°lΓß2™Å‹PÃ@'X«Ä]×-ßÎȼ.HÝÜî6r—ÔX„éÇ€™èîæ…Ìà:ùwn¾—Þ³y„T&‰† hç¶ F™H~…kbT–7p½óqPd”»>Ëzá‹§«Ú hXïêðœ®Ê®˜•yÛ7ʵåk@!A[©"!ÉÖÛD¬ÁFg‰èî"6'Šöà¯]T8a‡ª P¾|\x-52ÀÃdÉÓÉÜ•e*´åÕ<>âË®¹©›E<O?H‰¬wR@¨¾ Ï“z±\u® µËǶs‹öõnÜ5nA€‘¶¸A.Œ°MÒoŠ¥R5IYFd¿¯OÇ'ÓZÂ¥*«ËÁlÇy{ï—Üu8œeɱgšWE\ßlï‰-ŠüEúçtÎìkì_ŸF?Ë9œN^æ³¢nã©ÂF$Ó&‘q |ÖßæOK…®zÝÓš„«cÛçsRÖ­›û‹«`V$ÓâÁù"BÞ°›'U/„—O¯ƒ±íKŠâKo‹ß2ÊѶø†ÆÔ\·óþɪí@ñ›Q åÒŒ­ñíÕ‘&ïâõ½Cm<ÂùN¦ ˜Ñ„!Ÿ ª†õÌ3ÑQ V¬âQ"eôB€mˆ•åÜfõD!)n÷0I/ÄG˜dwÐ ÌG bFo¶0F¦”Â3³Å¦ 029ü³úg~™%Y&·U"Ÿ-6ìûd c¬P¦}‰ƒ9x#–3ð~,fŸKÓK§ñqè_ó¯çÓ+ þ î-Ày¸/„”@R®ËÒä\´ä:¹Œíç 0©kbë±uîð©ÁaAºÁ,üHB×½)¼qwób”é™TÄPޟц·ÅSÞn7óø[êßÝÚÍ4o< Õø÷‘Îv-«ö ª° ¼kw t1nƒT@¹¡O™×Ì /äèê„—"°A`ýX»œè=nQoÄárY³ nºÖÐ,Ó‡-¥”‹Vš‚%Ä 62CoDb† SB›Ù·Ò?ØŠâç®{ƒ×³mÒÑ]jqLf©QñêÉm²T[{Þ­*¿)ëQ IÅh" èQ ¬ÜÁ>mê…ÓôX ²=äV&çê„øõpÄ‹}!þÈ$áb·”y¨ö»ŽA$1ÙŽ“P8çfÑÑlkð1»Ç­ŒÐ`Qc· "Å‹˜„ ›p#}Dѽ¡\”Nâã˜dàÓÑÞuøtÞ\VV#(„'èÎ@d9Ïó¦¨ÚÎå~ƒÒx÷U7½ý—•+ËØ‡§þnU>†p‹Qèh/Qn)fgbBg¾šÇÃ`V Ÿ›ú:¿.ÊÂåqÔ‹àŠˆLo,[¸;Þ¶Û‘<¸šš-Øjæ0?C?[.cb©pq²àªƒ‘ÉÅåñ”R‰Õ&Í Dœ™–þ°`-øªH8ˆ{˜ÁÑôV}$íÓ¹‡.XÊ0]}¹T–„4Ø9ƒú¡{„Œf2¾œ£t:s$w quˆÔ0º*Êàµø%ù2O>¾= u¡óY°ÏÐŒí€ysýÿåËÿô‘P2Ï›nQ¯BâÛ$D««ü_³»®=OjÄîáæ³; ×?òbÞúÛÀ ×u}ßþ³Òmw-×:öøŠ :ÁB-Ú¾-óÚm‹| $0¿MݦòÅ0~!a`+•dßó-e :æêL,°L ç.Ö'Àkój…è¤a…&«u¨èkÕÜ'tŒ½|Á5bbã²¾o—²$‡À—®çÞCYQ:ˆ1ÿΠÁœøWXÅ™Ïl¸¸Ì·ºäEûÞ3Wµ.ZAP‹sµUùìí{A/~àÂr½óUt™ÜV+ofõò±t7Ýáͼ$wÝ¢µ°!ª_NJY Üi9á’îµA:ˆÛ ’áý‡wù,˜¡`*d(DtÃð þkV[?“£àø¥ßÄ»úº½«—éûâ>ºP8ÆÀÛA¯-$ÃG9\J¢79( »¥Åïo<|“ÒB%Ò§?UþZl¡, ¬ ÓLë¶‹—ÍÑÏßÉN]TŒ­†I ôªè> stream xÚÅZ[sÛ6~ϯÐÛÒ3!  û”8Ù4§©ån·Íö‘i[$ª$7íŸßs)’¦,ÏNgw<Aàðà8ß¹r&àOμ˜Y­oÜl±~"¨·º™qãâÕèb Œ{”Ï/Ÿœþ#MgR$^x9»¼î³º¼š}Œœ8ùåòÍL;Ÿ8ë õþ¶+vÅrsƒcO^^v¤J=R¤<.JæL"µáI?¾-*g~9‰•”2ºLNb“©:ËUþ%¾Ï@J¤ªúò¶ÀGttV®·ÀÅFe½lBßór·¹bŽçEs[¸‹®xìß"gÏÏá"™âº¬¸œNbmOd´kp=ˆþò¶*w7·1­\œ¦‰!bF¦,ÉvלÄÚYžµÆ¶‹–î;ß­šåvUpïÙ*¯kx¹9™¾,«r³.¨ÝÔáµë¦ðµuûÖOA&!£H_T ù:ß,ó—_NÒ,ÊW»¼Y–›@ùϧ£rË›‰,Êø%O~ Éœ_×;\"ã˜)ÛTþ‚•x³\ä+風’A(«&ì¥F8GÕgóñåEll è²ê :YPG%GÚÄ;~%è΢¦Û„~WËO½»í®ºBèwW»‡EÝ‹Û3íÓp7e-”J܃b`œ0³LKX°£«¨ãùÔ꘶¶J;½(¶yÕ´6޳¼nÞ& Ù÷A„}×`”5@d¾X`âjäèûЮ ý°Y~aC–_q¿Ÿòà:¯ø ©C0Ã-ÜË‹â˲.®˜&ßÝðˆ²=b\¾€v0@¨Ô$˜¡ï~~5'&¥ã‹{çMô‚®iô.ÿ£D‘îêÏ') €Ì±Þ„áŸóÛ²ú5ß„îW¡{¾(›†½ªòÛ|ãRD9z3$x¦9 ×y+`£Åòó¤ÏÔ`¤2Pì ßïrÞ…e“¦•KÄHõ›°¬èUm4ÿ ¸Æv6ö;ß tYoÃfOo£g›|õµ^Ö<òCMN¾çdpœJR?²7)‡TÒ¯ŠîîîèšÐ/ÚžT†›»¼¾…]hÊM `ª,±"®7Ø¡ÓÛr]Ô§+PfPäüô·z;iv$àÞªì!»£Ä™›¥<æ³ck¨ãùÔÚŽ˜Òìá¤,µÁ&}¼(Þ–6CÔª,‹ÎaQÀè¢[P!ô!dú–:uô¶ü”#¸¾â^á²M‡¥£d¶sßmøa O‘õYÉ)öj‡¡<[Ý@à)£es»æ Dñá9šLÖ ì'°¼J0ðŽ‚•ÎüE“8É4U+Úºè5†«™Ì0ÈEq\kf æš®Í-È[p[z›qëÎvvÎ7óׯÎ_^^¼>›ó=¼þuQ¤ÂðöôAІßXŠq-Û˜”óíÅ[“ì-GëØUäõ®*öîÆ€»!ó‰£Ã™)È×Hþ©Z^ÝO'îy‡A®HR“$MC® °î¨!‡b`š¼aŸ•ê~ cÊÿ©eÂUd7‘‰®þÍf4¢ÚEÊÆ¢½/î˜ÙOëWŸ‰·‹ÞÿÛnû\¡ðJ€Þé©(^àJgâ!ŒmDL÷¨§‚Ç!Ë.„—&=uê ‘C&åw8µ;6{à{N{¿¢gmÃ./Öá.Äë61æ^¸~:-Ë”ƒ(XºMœO¡ôÌX›hyÔ{0q¼§žÎšMêmmg¿ÞåN ý2Ò“ýJEì¶3Vvìœ'Ü1Dï‚ÓAX:>QÚ\ #Æn&í›R2çݾ7àkSR (*˜ñÞËãth,°÷lUR|…}çˆH„8ùm¾ F@flç0ø@cÂõ({ûªöL9½)wÕã}ÅÑ&]²É–Àd LtL3MޑŦí {xËmµÄ·À‡(>à…”Zê?5Øg~¹ ×@á& '-„Ì”Fk0ìÇübK÷È'ÔfÌt€:Qº,Á ¦Ê«Q'÷~`wz 8K]I>C¦“™‰O„óá«H[ª7=¼ˆ™BÄÕÆës¶ÁÖSÍ ¢Á'޲{aÍì”­X6`@0åð!Vò¦søÏ¶ÛŠ"ýß—ëëOÈn¡ P‚û!ؾ§éƒ')˜ŽzÄûªØÓÕÃþk;ÀUçÙQYA’îRrÓaý"%^Mx€–-¯½”,…ˆ¦©ÊSrvï¶Ír½ü£­?!ñ¯»M›PYr+ ̪RåæWa¿ÈØÑ~}KE,M)^ç­;n÷ Y³Æ¤jjÛR4³]ŽÀ¥šË|Èm´qy‡UçÉÊëvÜFyULzmßÝ+|€à5¤";Z÷`âxO=Yö°Ú®}´Ïvµ¶C¥ž¸¬}¤'!T§ÈÔ ^ {Lñ¨ãù¡âGé>®öÅ1,~d#±øKŠèîK€%ûÀÒÂsí®C`A„pTÆ&Bv¶pÙ"³àPž êv=«YÿŠESs[7ßnønDK•ê¤HßÌý•Ãʨ?ˆ<”3›i°Ü™M¹X¢{ÄSvÀðì´1ØQG(,ê‹Q`שÓD#^Týö‡‘å9W¡Ý¢*ܦÂ3-¢Â-Ä5ÜžXÓ80PÏ)PÁ`âÀÍj: 1Ç–7PÇ=ò©1í@Ú}T Ò%­Ñ3„‡¡ëâS€ Iî ‡{ÅÁ,¼Ñ$ÊTeFJBV î¹¯\—€5èPöz½]u .'¾2·È#tnõÂt¤x¶Â ¿¬¸à€=|ò”áaŠJ@׿éòt5>åÀµv¢['ïUðˆäHÍN Óƒ¸m“$å$oN©z䓹!Óƒèù‡è…޽)¿õaôfIjǮё#ðA;¸Fߦ¨ZèÄûѹ;Õ¡|×B»ë p§:þZxwÊeánjõS“dûHvò¾¡·çñù€mÎ-S—87ZÌc€xO÷nT%Gý¨iއØiêºCl0 †`/Âõñ°ÇSZïºxæÞ™/rkœ±MhÆF?Ï û‡A¨¤yÌç© &Íç<{ÄgKóß8Ocýÿßyjïÿ:ç©$D0"}¬óì‘?à<[ªÿ½óìŽWxÇËå¯B#n°ŠEñ'ÚÖ„m* ®ë¹7¸#Ûù‹g­ –¦j ²ÁN/Ê]U<Îßbˆvœ[›ØbÊ/ñˆ(¿²õŸ•ewýú¹WÑ›òvÓý¸\_¹Éy1pœ— ὎”:$éJcÐ::ty=þžm›0VdÝt7ä"o]7ªÃèT5×jÈGN$Ný PÇ=ò)ó=bºÿ&C¨SJ©3ý/~‡ƒð7drú+x«*R"3;\ «ß¬?µµ§Ñ¬öëHáIÝ„Éè,çxÝ©ãùt v(±:|{õñçüG*ÐSâ%eNƒïNƒ±ÞöB7)C?¶9X¢Å›1éàË(|®îΛ{÷‡KxûÛ>ˆ¢Í½ä :G€ÀC(ð­&Ô—v|¸kˆ#Phñ 'Æ„ªp†ŠcS›•èÞÞßb!»w*‚öb2´& Cç:8Q¸½(¾„G%i!È‹4 „ 9/¶í!Ï6Ð/ öQGÂÁ˜±KÉu«ÉÏž0€RéÄè£'Æ:î‘O¨#¦ƒê­RdÊ'N¤ÆZ>d;3dpïãå÷åùÔDùP€¡S¾ƒ_úž©£Ä¯™:Bf_‹A„_Æe£Å ;U½‡×r† Jc…ÓÌ$<áì±%Ôq|œÙ@Þb³ØÜC’ØRüÃzÀ%ôüÑ›ý·ˆœôðC‹r½FÌa{[•¡èQ5Kô¤¬7)éÂFQ­òÍMüœ‡¯w›E( z™¶ƒg! Í@äp‘{€9 åXjñrsSžcgEôiÅrzŸ ªHÒ>; ö“3fžƒàë¼á( ywvñCØÂÿÆÖ e endstream endobj 899 0 obj << /Length 358 /Filter /FlateDecode >> stream xÚ‘]OÂ0†ïù½l[zú]/ý $Fƒ‹7êac#¾í:t#*fɺ½çÍ9ÏÛˆ‡çÈJɼrh¶ðF­K”>&÷h}4iÇy• †wZ#àÌs(›w[e9zÅ׋év_Ô„J)±¹$T)'ż¨‹Í¬Ø*œs; ïÙxp›}ÍÒBü*:ÏP²Ì ã©ØCgã¼X­–›ò‚P'$~!NâjuX„Za°´ma´Û"mAP®ðø°i¬ Îâ §å·ßY ›d¼yfmñlvêLÚä¥óïy[O“7Tƒ>sç5µ`í×9¼Ás®8õ$ìWâ(GÀÐÓôzŤw¢é·Øï·qÆâa> stream xÚ3T0BCKscc=K …ä\.°hQº„äÎeUgbl¤±*OS endstream endobj 910 0 obj << /Length 2784 /Filter /FlateDecode >> stream xÚ]Û6ò=¿Âo•¬¢J²zOIo¤Ò Ù^q¸ÞƒV¦-"¶ä¥Ý¸óE‰òÚ½À"‡Cr8ß3ŽWüâU­Š4 KµYÕÇWAûýŠ¿½ Þ Þy˜ï^½ù9ËVq–Q¯v«,ŽC:¬‡íê_Á&]ÿûá—W÷ÓIY’|畈ùâÎM²Š‹0‰3…wUùF…qªøº·§Óú.ÝnÍ·õ]Rªàíú.Ë“àý§ßa¥È‚÷÷Ÿî{û‘'Ÿ÷ñÃO<†Áý§/÷HïåÓ⬄+š$³$ç»þ±Þ¤î­éZ8 Mƒô5“¿*øelµ@¢¨ÀsWwq… OŠóp“ñA?u§u² νÙ785SaR$«(L“’ñj&-W>iwi¥«;íÏ(ή>B…™Ê€µ„E$q?ã;z-¤~évÃ:)‚g¤¤êµ‡Óí¶à¹òÎm^J7Í£°ˆÊU®à›ý? ;ì;5+÷)¿<”Ð ÃéÇ7ovvvýþÍ%!JåaßIˆÃ~IÈ’…ñ&ܬrà¤Ê &ãþ ¥û3~:¸ Œe6ÒêÑ ƒÞ2lèø[£Ø‹à̳ª•å­±CoÇAXÿ„HºÎ§FËÝŽ/¸Õ&B ã,fò¦Ö­•£¶‘SGÝ’¢½æÍp™œŒÐ¦j÷¦Ý3Ä Ëµ V‡C‡ØÏDÞ6dCëTaªò„t3Av†¥c×ç^WÇ5XèãA_SR$¿ c§Ë ’®œùª8x€8h×`ã8èaPçóøÏåñÇéÝ0!âaoÅÓ(;¾\)–˜ÞAï^<øwpz×óØ’aȃÙ0ðH,wC£ó«i·r#ˆÇ ?ŠL«ë¿Zb2¬TjáøÙQî¨ÁÓ¢"Ø->vvà‘}i®eª`ਂͧ¾ªS³`e"‚W§­[m;ղŸt¿ÕW’³/|Øàˆ5 lc/ŽÎ½ÊSFdü¶C-.Ä àk¾»H„ìÂÓC-¸ <ÖWOƒwgÙбB÷•%¥Þx{ÄóÃ@·º§÷ž²À¬,0¹°#¦ÜðñV3IÁœIŠ"ØU_ɪæ¥32A³éÑþ.y4‚èÑ8¨q›<šˆÀ@c‚VO(|Ú©ïö}uü/ŸêÒ·sÍ!Ø‘¸]ÆlÚðíõ±2x2Nv`dѼ:´€KC4ÒÄ2f"ù49a´@*ˆ'7Á"A *ÊD €á˜}yiWŒ£G†VVñ¨+o#I+¸w’´ŠËIÒ¸0IèesB2!$=xVOÏÿ€sæâU§Ó|1âVÛ1xèBŠq–3ÙîÔøŠ¦õú +;ÅŠ†¯šÌmãÆ£<˜ùè•Ç¡éˆýJeÁ?™‰|@]Iš‚4Ÿ}ïîB’šM˜ƒ«••(ÁÚt7½Ö „” <¶A'iN,ŽJÑ4¸ða(m7ÕŒLz¸½Þé¾§ð„pb4€ÅÈd')\>õ oÔÅ" ~%‘F³rÜtS³kÈœÂXž‰§Ê|/ 3veÙlw4KÃõ¦x$ æICÞóÉÛ">+ó=å|ü"3€¹äW ²•9k†Ñµè•Aª˜EÁ2çtû½,²+¢êÈ##çÎπɳ± SHݸÇ2V1aõºÖfz+Q4öµŒkNL¶2u³ÊÂ`¯‡kNïI"¦*‰=ªÈeÇ,h’ÔQx¹ƒoè"ú$±H0.˜È9bÁ€À ˜š”&‰Yt¿|åšV?3@¤„Û&‹»"Ô)Cúg{eð×V²—K“ío;—.j—‚‹i÷‘ŠPæâÉ’7èzÀIæù œMµ z‹¤('ëÅÅVSÔÌY•ñ{ZcÜáÀæd„pò‘–oÛõ5s´6ö£döÞÝr&¿eI…'ÔUö+î½iñÓy*ŠÅ§Dh¿=ü^Àf¸I wQ9flàš:v^q±<±!¿ý4ù3P1Ý•iå@->â»y43pH<³c”ÅqžxiSqDæÁ—W8^³’–‘m³ Áä(&jvgÁ~rÒü%ù˜2  ]°@Þ¨@ ªfgçÑÌšpS-¹ %³Ký j xjÕRûD|X»gãÅUâ•R‰”Rðµ#;žUü!…%ã”ãŸ-¹5¬|0îíÜ b"wÚQæüâMu<âý#¥øyœ*kyD†\Â5Ì™ƒ0çjà!­SËÅ¢­Ž2FO•Ü0;j>Ë9ê-fÙP«Íy¬y"Î yx†¼+®K®ŠÉŠÎx²"â‘©»›+Ø©d,  hE´'žã¢¹8²j¾%—ûŽ&{q3¹M¦ï8]`åØ xën»bsô¨+>àFr©ÙiÜTé¿kæú¡s]*"£Éß—_”{=@¤.Ž‚÷Ÿ?ò`rÒ¸ì%tjé¹pþl††ñf¯Ð1ÀúdÑÀ³‚²„#<ïuïÅcW?ßÝV湫E9|×zÕ€š*ØÍ2ûSípoOøvÜ×ýÅ)ûäÜw‹¹äʈƒI›ë“Ö ß›'É/¶ôžª…(ó:6–;{JÊ`\tÏEçóúŠ"\önào:Ñ€¥¥äû;¼ÛµH o%f²ŽPUø¯pv€.,Ú M»²XœÆ:ƒjŽžŠ˜èo§ƒ„t;)t/,¶Ým¹‹<]q쪕Â%–”î;ç»’5_¨º ÈÞgŽÎ#; R^˜RÅùƒdè­ääðTqSÔÈç<›9P çùÏhz—çÓ£¯ø±I† „ sÅåùf.ÏÂôiž«žïôJær Teì[`ED„\ç ùܲ|<¸˜}”cž Và8âªçòújÜ^ÑW(¥ºVw£u¡+™{l>8ç6#–„úÉþ¢5I/¿©Ë_: ?PòΊÁ½Jé\4œJi8•SÊÇÈ$a^¨j8ÂzÈ1fÔvàF¹GVýØòà…иíÛÍå¦R_j'lÉÞo¨vɨíD)B†ý`â¸o¦Ñ" „wwU=@Èìùr™dé°j¤ »$CÉÄòe‡­ׯ…·Ÿ%k¬_°ss¼»¦Á'HT°õJ=°gD¤t­¹è³UÔkâJ‘N~„úŸm.½hëaËô/»xÉ­ÖRÈÿÔ<8"ì¢Ð®¯¨.<Â22¬õ„/¥n¥n0«¥a¤i|×#©Q©¸+•kJ)¼¿ZOfÅëAvIÛ ·o!–lÇê +¤Š%ù¢×Ü{xnÌ”G–"8@ º*˜ÚXMRTæ–\¡ç\4ˆ[ØSç c‹¦p*'¦;µ(BÒ,šj0D_Ö ñ f(7Ö2UøÖÁn(8Ç tœ×=éÇ羽I¬/]Zz9Ü£õÎNÜe"¦KçæÃNúDSb.˜ðrrƒª±®4>‚; L…ùŠ[Œ´§¸w%|wÔ EîEj®`!jâ[‚žlÏ<¤ì¾úv†FLÄ>Yn˜þy0åNžÂËÁºj!lé©BÝß²¸ÙýüQþ «Ä{cý}ùï“—&:+H}Söþ[’Ž®üÁö?×(ë) endstream endobj 795 0 obj << /Type /ObjStm /N 100 /First 924 /Length 3432 /Filter /FlateDecode >> stream xÚí[kSGý®_ÑßB*K¿Ÿ©Tªl0Ž7ö†’8ë¸(!Ñ$’FÑŒŒûÛ÷Ü™H¤ðVmÙHýšîÛ·oßsn÷($Ë$ )1Tˆ‰YíX”Šy…| Hk¦tbIÇ:<•G¦¤´(°L©hpL™:Qz¦¬¦çSQQ"2­’D£X •a:xJ8¦#:ŒJC‰6*2# U%f´CÏZ"M'jÅŒNkf¥…8Ú0k‚F"0ë-Ê3…Ä6Fth$³ ÅQ£*9$ŒgNz…D`N[Õ‰&"¨$1çñhD_.i*1ÌK …J¼Á,%CêG3oðQík1,Ôf%óNA61ïëÉìÐ&`䈹yê#:t=ª¼C"Q T¬FwŽí ,Xè/bÁ¹Ø¡B¨KPë6‰Ž¤(*Ðüi:Tm©gš¤§Uõ¨Š”€Ü©ž 4’°Le0Z‡ÌɨJêya©’uHD$œ¥Îð8i=ÆÀR X/Ò‘$‹‰‘¬DH¨ÌjßÁ˜H9<LGZ4؆’õıºŠ"3R*¡¿¤2u,JY²$´UX c(ÌeØN CËH=c ­kY0†6è!&Œ¡±î(CÏÚ“’°œJ“ÅH©T/&Y´„ñÆX¯:-Ù½Qõ< 5CyèêrŒìWØ#Å"…Ö‰6ˆñÐI¢a‚£2ê/@¶„õS†l>Ñn1ÉP z¶Ò›Î7ßtÄñ§IÆÄA1®ö³²7Í'U1íÔùuG¨yzxôúû£¯ŽóQVî¾.FÝqSûôiñ‘½ÅÖÞÕØ‚‰L5Æw¨vÏJì§ŽxRö²qEű×|—ågdƒïŠêèÙŽxQu‡yïÉøl˜1ÙGU6ú™díˆWyYæã³_ò~5`Ú¡òMÛõÈì ºÓ£¬b;â‰x*öľ8¿ˆ®8™xŸÀG1›Š¡(Æ™˜ˆI6Í‹¾˜ŠR”ùGQNº½LTƒi†ÏóB|ø²™ØA>Ì ÇÜ^w¾ývAK‡Ý³ £¢„/±dÝF¼ÎJ ÔËÊÚoÕE¯²~Þ­UDmhƒ†¤¡žÃî”&|Ó½x2èêmíQR{Fú&ÏHßï–E¨ÛwÄÓbÚϦMçòIЫØ[8/û%/Ä=v€ƒƒ#â.´9šVu/óñè‰}ó GLüôúEó±3¨ªÉ×BœŸŸó|ü¾˜ŽºUÞëòÙ8?-x^ üŸæ½lÚëŠ*ë Æ¨îN³I1­„–JŠŸž¾Ü;ڥ䮴_2H~wá±ëlÔÜÁBmˆÜš‡áÖêÏIö%AnšŠ–Ž›𸄋ÈpTìp84»ÿyq\0±ÏvÞçg_Ÿg§'£¢Ÿ Gßgo <ÉÄ›_ÿ} ‡-Ùx6¾[ÓÆºÈœòR;2ïzä¸ýØ´?€¿W¾MÃç„y1µl3ð.p:mð3¨6ƒ5’óŽìÜÌfš­@So~8ý4Cc¿¼Ë‹ºÃiÑ£Müûkÿ€‰ãìcuiõ¨íϰllçùáKö|P”Uã¥XâÚcËîM3¬t1ÞïVÛÙÿZK-¥ÑJi ÷ý•T_HùÚ½*ú·59Î+x ³¡ž”'ئXY Œ•™M³ùHIòR1űºÿ`¿íìýö%S)%²Àö8{žÍþêæczæÉ¬Ð#?ôªî,™Ô³Õó£ Buć¯˜š×>í–Y½Tbÿ§gÿ<øþ«ï²á‡ŒÌ¹³â¨kêSû‘K7Ž6ù´¬È7Önøe·Í(­:¢v¥äo5åÿšZÛ˜ÿ]—»îÉ õš~›z²á•º±ÍeßË#ë¶oú&Þ´,‘¡ÙÈ>ïòøÃ–{6î}` ƒ ÆOÆe>/XØÓ¤ÄkVáàøåÏ¿_®ÂîÓbØ¿f)ÒK!ï¼ùï.J§6MšRô7—¯&Z€©yyÓ›A µ'õ_>‹Ïm”~¹~C,rV¸ª`Õu\Å‹\¤Î.p‘xQv•‹„xÉEQ•K.²'^ƒ‡ƒ‡d¢n°ÀEÎÄ@ä`$#1ÅZ^Rs’™ø(>‰¿²i±DN¢’WÉÉÍJ[c¿Ëš‹à¬A§k5§Ó’æ({Íi³VsvIs¤³>´¶¬¥I£šV-3ñA|\цºª)»JÕ("Ü„ª]b-E—kñøZœ]ÄÐEØDă õ*/Áé"#nµ2ü??î½øñÕëuø©õ߀Ÿä ¯"èM›¢(¡çâ÷Ý0tŽ››àg¨ã‡@Ð_Ÿ¼xýâVÕæ³EÐõÊ^%+òå Å7Kðw èõ[âsCÐC èuø9ø4d㵚}@ƒ% ½ñgâü@Õv@]cΟ B‰=: Y ¨ç«€ªÝ퀪ã@ÕþN€Z9ûˆ-è½Û>äV>ðdèX.qÓ*p:T&qÕ1÷¤8Ϧ+ñ6öÞo¯¶ñÑreìÖ<àj”L‡äæóEù?Ç'½aQfý“ÑlXå'½’CŸ‹0¬îgØÏÙ´ÄÐÌpÍ}wc vôfÿÙ÷W Ãlz)·nC§ÚÇååßòç:°˜#o‹Ø~Ÿ^àìõ=Yk×Äç Œ#¦¿,nÒ}ëåvÛ¥Ké–•QJú».Ü€jƒóß=q ^ˆjÜø N¯FŒöà·Á† dvËÁêáï²û³òv÷gÍ÷gÕ¶îÏ4ûœn€îë­ã–Ü_tÜÀÓ€éqåèêËsôµnð¨7ˆú~žÆ*®¡’ù°0Gî¥_;,yߣ<)Ïóª7À:¯úa«o÷Ã+m®õÃ×´ÓÁÖxq»¿¾8½ê¢=£ëǺًQÀú¹;úëlê*¤ÚÍ uq¾áž1êb,z£n;7§¯ÌÍÉmçæÔú¹­x‹hó«˜ѼÝv+»f Ó½jýíC›÷m>¶ù¶Ü··>®-²Í·åíI;ݦ6yÝæÕÆ·C*(ž’Å î€+ÖI.#VÜXnÝF7Dý¼_优ž %9¼}Fsë½ÙðÒǘÈu¢[òÄ6ZÉãF—>$K·7º”Ç:È£b÷ÃW ›_E9åy€’"^©éöžûð˜Bé¤àÙ<#TB­*«¡ªèï-LÂj^¹Íueàå‰üÃÓ7×2ð`ÜcJ¥Bà{È7fe¼„‰¥{˜¹”A”Š^Ø•2î&™Ì®ßB]êrõ›*\ƒ: uùøÈ‚¹ôÙР¼V™„ÊÜÆ[1ϲ¬WŒ&³ Ì¿èåYõiÉUïaÞ2r³Å¾ÔÊC\g,£&:G©>éêû€i5_«Qá¥è6½Æîw§Õ¨˜Užõgâ?½AwLœ5ëÖ\餛÷KqZ”'h˜÷†Y)&Óâ´{šóêÓ U‰î¨¤o>êöø¤ÿ~ }Ã&íšyÀ‚£þïÍÃ8 ÃÑ»R7“Q 6ÌÙxVJ¯˜|fï+ñ¾?äƒj4Ü\µ ;Ík[»OOþ@*zûá±$ÒÃçYÃéÍ:§ Wô•³<(¿©T¿—%k¹Êª{:Ì|‰õʦUŽïÝí‹6Ú%øE» ¿_¹f¹ä¿ÛrÞè®Ëh¶%–-/§·àØÆŒqNçù9ql‰hšÇ–†–ˆ¦–X†¶¿ÔöÚþRÛ_hûKm±í/µýŶŸä7&¤THøzç°V¯ôÞ°Ý}ÀPy?¿ëŒò;Ñ™¤”zw ¬ñˆj“#€6œ^ÇòNs„/›kv ‚skÅm!\Ñ+ù0?å“Ù´?Ëj÷Ü+éí(a’[(LGNïéZk9½¸ëM‚ïxD™ˆ3D®¡mü¾‹ :mêÏ Õy·$ÀªŠq-Õ ©†Ý¿Šóò®ø³œl¡1çÿ Ô…ØÐyl‰?é(òðÛHd¾y—ЦȽ5÷%öQÒÑ2,Ä«mB3,wp¤:9.éíèè¨ÿ1¥¢ÐÚYzW\rcS£,:sñþ!#‚EÏé+¹ýD@ø„ 6*^ßîê†8k«hOf·°zã#WQ7~Àf2©Ç“I!óÌhÓš Dsá¡DŠÛ¸S ÜQNq:p6`hAúÇ“i¾ã¸á×]³Xó`Bù-¥A;ƒß[ò ˆþmÐ'ScOtøN?ލÕd ×&>n³í´¬Áåž´¦Àðx2™`È „ÂþoxŒŠðò^$Kj!mRoÞl—y 7`/ŽþTppæ±$¢ÓE?~Âj…æ(KÅý†GY×@ è¨ô:e³a V²9dÓFÃ-Ô¿ÓâÖÇ¿O,Šó¢½=\iCnË!¾¹Ã»ð¦t%l~Õqk˜¤^ c %¹ÅÉíŽ> stream xÚ]s£8ò}~…ËO¤*ö sóUs5›™ÚäžnîAÙÖƒAf¼¿þúKv÷*UAjµZý­n9Z…ð­ŠpµSj[$ùª<½ ÚV<øíÓ›Hð6€¸™`þãáÍ/Ót…Û",¢ÕÃ~Jê¡Zý;È“›ÿ<üs¥òb›ï  BÐß3Ûpí͇‡ñ€4ŽÿONóoX‰ÂV“U–'ÛH%|òGÛ躾Üä*¸½Ù¨´ÌóMœæfÝAIpîÚC§O<±¿iÐ;£{Ó˜ŠáeÛ¸^7¸¹¯/Œóˆ3»vßãôþÓÒHâ&Þ½ÛÞlÒ0îo¢ (2àÉÛ¡–cš¶' n"–f©m”²0 IËGlâTyÚÀc@ßò·3®ïlÙó¬‰ëö||^ÐMŃÁ´{üÆ"Ën" ­6¼z¥tºÞœ‡î Ù¦’-$"|)§´Ý“7”xÌÑGÌB8s²èrCÙ{G;i÷äþLprä$‰‚okžyƒàyMH7„žvèÇZ(y®yV³â+Þ6pYò¶Ùì²]ðA—Hด°„w#퇯®*È|N œ“xd²Ö@;CÉiànͨg¸0¢ÏÖ§Ú5/œ´\ž8ó qñýl«®H„ê¸o»ƒnìz'sƒŒ4aN|ÔÛýeÍPÍŸ«ŠUŽ®™ð-€_°ïÚÃÉ'N¥Ï½ ëz²ØgÝÉùa"W•œ»“s“‚.Æ S{펬 ’wæ÷ÁvXRmTT¼ ç܃ÝÉ:Œztúø"Þºa ÌQ„vy²9³ 0d~êRHúë \‘S8¬ï u/õÞ‹pš(:”b+„Ô :£Ë`šA3sa:äõY[3„£Û'0ÝÁ=Þ1tz¢b›\Oýƒ£ Gxì£vþ09cö‚QüIKžø]!"òe;Ö.¦ãò2aÍSï©Üœ˜xÅli,ÌÀÚмVQ:¦Ff/ŒHâÉA<ó¢"^à‘8PÙ,‰‰¤ÿ2ا ,jôj5Ã5 5zAaÈ÷V€‚O ãiü ?ldª§9p+ta±zž çïæžÊGc‰öÚ1¯õV®ÆäIe!ƒQÑ3ÔgœÁÝaðZÐõ µå”ã½Ç²ÍÃÔLJoX–¬Cª9K¿3}0¸¦‚÷Çí’AÌÏÒPòÉb›rèYc™Ô™7c'Èâ±Pg y@¯Ù¼í"4bÞƒ(­ÐèPï‚ÏéMž` Hã]†LÎ%ìµMY•qËÅò´^K"¬×8ãƒv8+·b|ÓPì_dÌ2@¯F‡ ñ¿“Xà‚vEB|Ll°î–ÆÖ¬{“!œä쳨÷±$µR8ºöd|-:°½¡ª—:µ¥œO)F±€"ÏøW0¹ó©ë¿ ²0“dÒ°,¸….µpÇÉ-›e¾ìZoe×Â'X&ñˆóhœgV€¯¸2h?P[Bf¬µ2ºâX8¾þÆzmìr\¥±Ï¾Ô8ÐAwJTð«¡>jËÚ„j´ôΕùt±À€EèB÷Þ‡#O4#M> ãÛuJ‡˜!vÉHÖÛ%“÷(qï{_9ëyâ_Ð3Ä´Ø^êÜ^à‹—5ÈÉ\jÿn ,hœ«+Ê^—²]Ï™+æ‹c:ÊÛ37™¾¸ó‹9P{ ëwm5Vf8ãÆWù~:œÒ_³"H­0½,ö÷ô 1§M[7öÚÇ" õÁ'Û˜É+ Ÿ­³¢0ÙÝLÄ/a„Ù!Â`ç©W:9?³¨˜«?¶‰Çn+V3†`™ÃàüØSçO&¶•©$ñª8Pð݆l[<§ÄƒgÁñ‚lj€0ãtI6î‚ ýH_‚é?N¤#ðÑ¿¡á„Z1ø>[#ÍŸk½ŸHf$ô—Ä©aWÁgZO™Y\¶l4– eUã®ÏM“£jë–Þ^¸Wð±Ž#H`'Í=-ÌØ Ò =SF£J'›6¶€ªe‹æÔ"Ã-{£@g±Ç Û›‰/ƒa@L 5Ó;¿j—oú(uÀåVÞ6_?fDòôqß])—è;©GÌŸ>È«7wnÜŠ ‘l]ó\‰¸µR³hàX„ú>0ÎÔ±s}ÎN<â¤?bÎ ÚÉIc½c_Y-Ô×rÅÍß×lO­'ð¯Ð$§Yð_¤Ô‰Ñ­3U]…Q“{ž® fã&Úõ%"‘òרߵ1ELüÜ÷Ë_ÔOŸ§÷К±<'…äÞ"~y]!ˆ’e˜+5âÎöBr=eü¦‹`79?ñéÉÌTK ßé32ò²=4ö²/€=5ÇS~ÍR…KÖÊ2 ˆÈ|~ʰ‡u2"}fÉ\X!|}›¶L‰Ó\¹£rªjÝ-$y`=‘w%y ½Asô3]Šý}cΉG”µr,o*zsF?çâHŸZ&•ð;ú±@:(Ç8Þ)ÆCQþñ¥—%ajëôùAÖ$ endstream endobj 918 0 obj << /Length 2921 /Filter /FlateDecode >> stream xÚY[oܺ~ϯ0ÎË‘ØWÒJjŸ’4'ÍAš±ƒ¢hú K\¯]¶¢”Øÿ¾3ó µR¬¤…‹3’ù×\„ôg.òð"¢ë<Î.ÊöY(Øáþƒož¥»"«åËÛgø-I.Lx‡¹¹¸=,·º­.þ¼8.¯vY`»ª~¸¼Š¢(xñG|ß¼ÿă8xóúýë/ÞûáÓËwo_aLƒ×ïo^_^™½‰wA–\þëö÷g¯og†’Ýîÿäœ)ÿëÆ˜ëýÅ>‹¯MƒûÛ£%î÷Qð™P7n´-Ãq𮾊¡¾4˜Àý²þ€oÑákl9Å]c±ìÛ%‰¢¾`¶îÊfªì¼„æÇcÝÝ?'TJ„ãј~ËѳD{¥ç½ Dz¡»^™èÚ$`¿ ¹<¾ûÆÒžQ˜ðF#°ŸÃ$,èŸX;ývt©’/ÕL4ªl5ãå‹óiÐõC[4<΂ Ð÷T”|Ÿ/—É>(îéN@+G¥o’ÿîÀ¯úfÒwVä0*»wÓ¸º—ÁžkÙþHTû½ðíSbiâT :b~ø‹{óHÎÞãl†g{užYHcRLBØÆ ³ÃWVuzR×<êY=¾¶ƒæy<9»d(9nÝl¶hGš«G¾"sþi´âŸàmÙÑbä`‡ðu{jl«4˜*0s3Ò%‹¡ôv8¥ÝÁ¶<¯ï6¬nuN1Ö$WÒe-Ñ·à‰¯—¤ÿ¢nTBa 6à ƃÓt×ÐiX«{¸~J/{¹v¥ëÙ¯/¯âh¼;íJZá,­T¥EÇþò|K|`l˜f;6)zûÀŽ£,hmÑ9ø´ »fØ:§r¨ÙUU>Qðl]_¶Cg9õÏ6Yõ|ð7°á4 ™@¹ûä\¿u‘¾S“MCØ}!b8 Îeý94q©THwì·B¨§ò˜9­u§BdòHL.Néð…­¤b+ËC—AQèÎ&OÐ0uNµÃÆñÙVHål.q’iÒõ0+‡ú4:|{^îC¯ë;öN7-ʱþZµu¯Ò8 þÒóå¢9eÓR²,©À¡Õƒ8Ñm--(˜QÜ!Éfþêû:†ÇZÇXv¹8Åý5W'ºÁ4hÀr~g0Ó7ºáw‹8 2ø4Î?µÃ`YETÜ‘ÃÞEë-cÅ Têd<êf­qìòhñÞòØÖáKñÎë@vœu˜ ÅÉÈp¤>yCÒ¨4¢ÔW4’ày£ŒÎ†ËI‰„ðÛeæƒ )ø¡à,ùÐÙ÷³³ïþÆ{ U·ÎCëM¨Ê²ºZîË<ÛÈú„ËEé•5y)Ë.Ùùjƒ¦g×§ñbÝNPâ£iÍ·ä«ÁÂÓλÕ^K·$Pw#š#ÉY6Þ$· Z¿{õØm]ÂØ°ªCöT7Ý-,Jø‘j‹u†×††}Z<Ÿ"ò7Bzßá(M949ØÿLõàkÈͪÂMÞ¶bªX öŸpÜIåÜ9»Ô-iU1QÚkyvêèò(­-(Ó°‹A¢NÈÖ$\ô(q‹Qã ÝÑê>>Ñp)»K@ œ)ÑŸpª#7 ÆG®°‘r×ipÙdEI¾í°f Ê%ÙèH\0ÉÏQeŒW|ÎÁcpØRÉ8 Ö§+Ýcû«Í‰J+„pòw±kid+Iî»Z;jt{ôý˨sJ`6-ÿDX=ŠáSW^PXÙY)\< ÃÓ€¹©kê¶V†öï%XÓ:Ñ &Úî%ZÌI²~‡§™Ð*;a?QàÐ7R¤lDðÐ8Ìù˜E[(m/JˆM—èŸgoaHìhIš.HÏq;÷&G£Yœ àQ@v:xBd™%Þ'é&i£ûœtJ?ºÍ¶G­õÜéÇlT_×ã4¢<@_m\‘çX|ï·ƒhÁ¸ì å×¶$tŸ­îýö ´ôL†öòàPÔJÁ[­éð$p ý*oFÍ⊑¼o!Ѭý€f¼xvÃ1™¤)ä ›¡õR–M$ŒXúwU©¨(X?i Ce<î8e^NÅ=²t,ïtÊÒœâsñí"ŠòHe€Ë{þJNÃ^ÝYuÌ¢rÁ5Z¿mì%'ïô;ÃïòmzÉ»„H˜…þx~Ö;¢‹o5À¥Æ¶¨ý†’:v"9O£áY|<Ñx à»+(n-¢Ÿ<€I§“jK•‚/Å!DûR›ƒ™ë ÔiÝ­h]Îß#úíÜdq‹Õòš¢ÊÆœ T -=Û>P±áÔUÉ·7Zá.Ÿ5LŠK"_?ñ.¤ÄsUäÚàUeš¯É0¹¬‘È@Ú'ûM²4¸eÝsHî}yÀ F‰“DlÓ¯æ¬[Ðw!€‘ ‹fðà·x”@<é8pTõ†%þlÌÂS1AAJZ5+×6;)÷‰èX4‡çxÔÑ*é)iU¶ÔÇZc´61f)LÝ“xS0;_’¬îXßÕ›zÇñ3ŒVÎÙ~!ÛÔ×îHghÎ3}3ÏÒ%Ç X{«< ‹ÊDÂèLзUv~;ªu£Á6pñc}Ú IpJ$ÊÀf"yõÔÎã|ðéZ™4_1ÎÏ{<,로ZªäºoPzä»E5¢HÍÄ;),øÒ”öœºÂbn–a«õu£$Qé ôŠÛ“àFàÉ£ç6Ã7úü³/Þ®ª?i‡0[‘˜HŸN5‘ך›É,ÝÙƒ¤¹Ÿ´‘¶TŽ|€gê·u¿b×wö^ôN諲$æ÷—8˜;¶ú,õJ$Öœâ=÷ï •È”÷œ ²p£BÌ–OÛ ¹£=ª¼TÖ¶~Þ“x$y+“'vú’†)E|ﯗç¥$ ’]ßô÷Ü›ÝÚB žO:̬íd³­÷ÞGW(N\ñkûApSè#‡©‘G¡*à(F†B…û—–éix·úf¿•1ºæ€/‚' þþöÃß0Ú*ãä=Õ#˜ÜxªúÌÙÄ¢â`¢Óú3™˜¼›h@Tgá)“ç{ lxÇäUŽ˜¦P@oîùð6÷í|˜RRc>µ7LB”OM+ ~ô<çßL䉟ì4¤Èi°hù—ïÿ†³xô endstream endobj 922 0 obj << /Length 2700 /Filter /FlateDecode >> stream xÚËŽã¸ñ>_aìed`ìˆeÉÉi3ÈÌ.‚¤±AÍA–h›=¼”´þûÔ‹Õvw>ˆ,‹¬ëeµ‰á§6Çx“§éþ¨‹MÕ~ˆ ê.üíÏ”àíq`þñéÃï¾Ë²Š÷Çø¨6OçÔS½ùWT¶ÿ~úË&-Žû"?‚þ2™ÉØî‚kþô4%Éo¼ bþŸ«(¥ö‡Í¡Ð{•j>÷WÓmwIžG/Û¤ˆú '‡¨ê»m’G¿"̼0¬d¼ªG ¯lw*r[ŃšÑž‰Žûú ¦E’Íy­´~3‚Ê'/†—J!±5ÊßTfv[°£èÔvŒî ý¡0k;µˆŸ'Ñͱÿ´5½ªƒ†;–#–#aL7[Mý44/ ⇃¹mÑ.ÊÑøåÛtjìpå ©¾¦duã,*ôh°SdK41Ó'―¥([Ú3Û!ƒ»~Ä7MTÍ`}%)™cX¶Â²’eƒ%´µ"utAd9YêåA# ngñe™w=4xSì]ßí¼×hí0,úKbx®EÂê•5« ¤LUUï&n ¸K~NÎóv#ñ#ÉžAlsI`X(™D‡’á³É ¥¦yÌ…—„2ë£7k”§Át•Y¯>7‘ë\)± Wà>:QÞ'Ñe Òl@ê Áî-¼ªnö=¸ÎŸj1££x {ê‹ÌuöÀšž=Eêœja @òZ÷óÆGn"Cf7A1—âoé.¡—Ô0Áš+£ãEP'!}^"*Á·\Eó™×„¤_Ž _’BZy)¸å'ïjÞ¸B®â£<€Ó©{a ÓMÒ!7²€(v¤)GdÐî–µž‹‚yÞð8›,ÌϼK“qnÌ#ÿ.rÎÞ÷ï?P&A—ÞÿîÝ*Pÿ %±Žäô³7´™{‘,âÌ9EËfÑ-ag§ràô)‰8½RK’&†$ŠðÊ•eõ(sX¥{ŠÜ5¡LÞz¬èþŒî·oæ/dÇü.ÇkÚä]ŠbY…´<¢çß9.Á¸ ÓôM˜ÐòÅî˜kÏ@ÀµcK0Ö±^.B,³8”ÃpËl«ÏQ(™¡Ø—ùe Ñolg­#öêñ9åuR>ëè8³@»µâ‡ÐIj Ebî?C¥Äí”3šÜÇíå¤^ ß,>5†ú~¥õJ´¾¤ºè„]ì¡X„u’¼;³ ùjÎë ¼eqÆé«Ò*z¾ö¡¥ÃR"ªu˜ö%¢’2p‰œH¹33%ÿ˜¯Ðú–¬/9ú´¦çÙÞY? f f$}‡%Oç rÙsyÅF€8˱`IÞ åY΀ •ÎÄ$ê¦1e à #K’'¾1" ¨ˆN e™¡#…IÎ0c²jªÌ2ñ¿xä!c®3ïœa@Òç!1¼Z[ô†{%£-|† Õ2%\0ÀªŽ¸Ï ˆ®nH¶i.U|¯Ò6 Î ƒK nœÜ|%§u15H<Ë2/ñ<$|v(k˜5‘0µ&!å’÷oGÌÝžÑcÔAÒ–bŽ:ž±A6³‘ Ôt0*ŽŒL0kö t_M…†¬ûî;ëÆÖ\Þõn¸H‚Ù=gx¿3—8$¯eÐ {Àë`@w¾BáËHÈhjñ&ã;A¢wñý™ß6÷1`ô1ÀI^©‘`y{Æs’cc$·¤ÙŒv.)h(”¦N¤©-~ gµnM9û÷,ú6¬ð…ÚoÅ‹Ù;Bé‘©d¶PœTòx‡‚å¬3ÉÑp 9O˜Õ,yƒÕpA˜cZq„¶¡31 lÝ?°¨®/Ò’! }â1‹0-gÓÆÀ`¼¶Ùas[~õ'NÒ#©·’hAdìÅ2lÚîÔqŸ$"Ëo±ÿ†‚öfßïRÒ¶R”ßãô®‡§WY¢°[D¸<5z« º|¶>äiÀhŽÄja…¡‘ý«•÷ô ðóq‹eô<¹|4Ö1¸+ÇÉãR¯uà\×–jÓøbô®]™¬Ú•q¾”»|=²s$v#,®Ÿ ˪=k &øâp¦1só7õ18–x«’çã ,R/Þ–E)i'iifÜÆ‰µßHöÍÔY>¯–‡±wåůÉ`⣳§é­nëÜžÒ…¦ìPC,¨ ‘Éd”ÖÑs¡òrÁ¨3šoÆÏÕ»¦ìµQfÒ´"Ôqà3ÃÔpŠJGÝ÷–hŸ{Ô7t@—FJzבn1¥‘c#‡£#¹ú=ÌmUX^µUÓƒT297ž„DÀÐÇa>ÛÉðÄBR%¹Ñ3'Ýr‘"‡§¥E=Ñ=Š¥/My·–¬ Ј¡ù˜EßwU3I0*Äþ V{‘®þ’aë/VåT‘JíɺÄù¬Gž†1³Ð"e¤\NoEqÊÒ°/¤Í¾-†Î­ÕÜñA;˜ÙÜ‘BÂßðôáýÅ}· [ßQÚ ùÚoiB«CЄVù}ZÑ_b¼ôZþ*_•³é,‚…Á@öñþçEVÝg˜Š«€ý>[WÞœqà»–9Ë @’£ T˽ºúÁÛÉðgé«V€¦Tš$Œæô'e3ôß›ð™d½pwÿoý¸’íü endstream endobj 926 0 obj << /Length 2973 /Filter /FlateDecode >> stream xÚZ[Ûº~ϯXäI Ä®u³ä¾å9AŠ 8H6EO¸½V..)ewûë;7R”-Ÿ "r8’Ùo†ãÄw;øßvwEšnYyWuovD5OwÜøöéM,|`Üœ¿<¼ù˯y~ﶇÝ!¾{8†¢ê»DïÏçûMRFº¯›—ûMš¦Ñû¿ò÷Ó×ØÈ¢O¿~üöþ Sûñ˗ϸ _¿¼ßÄû8K¢²¸ÿçÃßÞ||ðÊ“äÿÜ9rþ­Çq±Íãün_fÛ8Íxÿj{¿Ùïwч¡¿‡cüÄô+nï'2ï7ù>ú—®F&Tº–ñ¦l † ºC9Ä$¬®/˜÷Ï'ä}µM¥Z^÷|GF¦M¼ä!ú}—ïè«vª›þ‰©26¨À»8ßîËün§[8.S„—¸;šæq81Q:]7SòcØX¶K"UUCwV=o¹Äƒ tl£R`šÛc´E(¢¡—]ý;° “©„í÷]œ½8YnUE[ÝÉ.cÞf=õØj¶ŽKÅd²S­&;2Mûʄɲ†³èÈ×Fv8Ž(ãÿQFópC7=jSá÷¤ú'½¥Í€n°üf©øã-‰ 1häÎ@€H¼—;OÄ@`ü¦„ÌŠy/ô€²ŽÂYPÈ:Ó’bi~¶Ø†;b u–›.m( ÛHóôÂ6òÝl[#|žM3ŽZ$ pû©62ýç=¨IµM̓|S8säo«••æx2Z¯É+]2ø ¸×…ÊÞ;ÙÐeÙÈ`™Ð¤h)™J’†‰‰²QîØ3› 0Ak ƒŒ²íi‘o'tX†ÁÁŒ«'8[x >Äyéà€~3™–ð!Æ¿iôÔ°ÑqOõ¬p\¬ÚóIXeÖjüË46Rh,¡‘Ât¬†‡Ðžb¼vYÔM8ûÛyǵۡå’}€CéÁéß@_ ~$¬¤¬dÈÓ¶LñRØ…‹À…‘ .¼d[z)i5–¿p\v`p?ƒæ‹Dg¾<XWŽô¥©to5yeÆ–°N’„! ÎC¨•\¡pxÔ‚öµ€ ¨-¶h¨UjuµÞ­ØK)÷´½2Å4 Ãû¨øÛ F( £žÙ^q-¼êð¡$¾j §„Ü9}ÃSÒQF7  l¡“P°gŠ~³¦]ATž@KKäPFTú^È÷’G@ÃG®”lÔï”zü­9§ßï=_;è(7"EP³M½}m=oàÎxmÄÀ8Í~X®‰ÑoAá-“H½ðK'ŲtÂJQp;uŽ/¬½}ÇÅ´çSã|`é´êeWö¡Î¯ÿæQ¢#É’8½zø”oYù°¦cý#9Y, ]Æ\LôL'Ï{èM÷”˜Çü’àæRJ‘´]3˜˜êšùÅÇ|fA§ÏP‹”ɸòÇnž´r  ;R „J0rÓSP°à²+RíÐ …KNÐ{ÜÂø~@d:eOTL¬ù}Ù¶°Î–³ÀÏÂ_kxžvM/;À»Ôbw—ÊË—%ÀD?—–{¹`—Wh=Lãq’:S¥X«V'ª¦asv0JÔA s€ª}y‰_Êû×£RÆ&ÚÎì‚F¹JÆÅÝüŠWN¹`N%hü`ØTS«„¼<8R‚g²ì ©>×¼%ªÄòeÎI¢‡Í‹ÌX[{ë8R,£ÇàD®å:´æ™«wYóYÒ]„õÜÚö'D_b82ArÚHE¯Á`ðâò²‹ls‚¶”#‚í¨ÆÉ2‘ãy±Y yN9˜êM ]¥¼†ËÜ'>›\>&Ëœí€ÒÄFÊVá„|qË5T5N®HtrâCé×/ÕÓý¶öÑzÙ5à'ÈAàø;q56wù÷œ¢k‚Ø÷×#KØlq¹¼üq%CãÁ‹‡ÛB°’Œ:“˜ ÃkŽ¾Ìœ¯|qP ÊB6áqd”‡×R„j<¬6}=áo4ŽQ• V9 êd¹ž"“§Þ?¨¬_\€ÿÚ”x2çÁgCI±ˆ…iUêj`˜æâã2s~Nè–˜ôÇ?ÜñlGð‚—wÆi)I¡ÏîÁQÚV òúÌ;¥Õý-ÿ$Æ+Þ»_Ö$¶ÇËØÎ{ã0öÂTV0Ùœ•ŸëÜn+]ÃÆQÕ4ž†5W5Í\¸0úƒ3K‰<ß+’9K§&'ïÁyžÔÜ£HEl¤îp  ý¢«iÔÜq÷@7åæ ®[~ìÒÚGr#›Z¼sŒ³,—…é{Ψ‚TùQ(¬z¤ý¶p ¤pݹV6œ‡f.Þ/,6Z&¬¾;€á;¥ ”¾ÆÑÖýŸƒÿ=¸Î­ endstream endobj 931 0 obj << /Length 2758 /Filter /FlateDecode >> stream xÚYYoä¸~Ÿ_ÑÈ“ Œ;¢Ž–”}šÍ… v7‹‰ƒ Èæ–ÔcµÔKJãñþúÔE‰j+;‹,’ÅbÕWÙêß:Tñ¡HÓc••‡úò.&ª}:pãÓŸß)™wß>¼ûíŸòü âcWêðpY=4‡Eey÷Ò²:–E\ˆúóÜέžpìÝ– ò$ù?%Á™_E)u<NevTiÆû>tíÝ}šæ‘Îw*íEOf˜v¹KÊhv÷ÜüS¬N5ÍÏ¢idj;¸ÙzZ§eîÔ ©^IMf ^mÃäó<Ô¸ž˜ŒgÏBä¹XØØ4ƒe¨3еJ*gÑÇÇ»ûüýĆ5*ªqï|eeË]ãä;ðwešv2ãjÛÏ(]K2N$ã u±,$²=·Ö½˜©ã–û¶å6„lj={ÖtŠRNQ{ÕÂ@§ÝæHŠÏ$Z2@]tÓ—yù±(eÞGPW‡|EÑÆ™;¤ë2â³¼2MüõÊjQK‚Áß‹,úvžxˆEJ‹lÿóll{Y­à c©•9悉Ûúz¥‡j?Ëp‹ñÏkšÇ–P´¬·²~à£ì:бQU¡ Þ¡ùU©*AÎI›Áñ0#úÑô¾ÒO#l+ôLÒw6q× Úð‚M(DB-“eR&mÉ ±Íñ[7^ËÎûá¬ý¢/×¾}ÏÁ|ɉ/¤)ŒµHÆL@äGv1Žý™?gÌ”Ó|?áâ¿~ÞÍ Œéxcæ"š˜ˆÊÂïÕ’Ÿ}6ÿÕ –pJ€%&Áî0 O3Ôýìùè·›#ÆölvËNÞ¯¨B?j™êG7‚"ÁÍWñS ÙDiígS“–!órµµZv& ”i„ÃYÅ „E33iôDÏ$xaCã§­„òpi-¶4Ö\½sº Ù§}VŒCÓbwuõ؇¤x¡1ÑeɲþìËlŸã|ònü]S“e¸Ó΋±wžÿqœ4eqÒT­Ç9¢˜Yô¡®)®ã.R*|†vâø¾z@UŽwgè,Q;wÝÁ„N {¾tì'>§!›ÝZ å›\ÛŸw­æ·†«t.ÎÁØh8Î[ÇÅø£¶)Ä ·ñæ4}Š\vL¥š &­ç.VÏgý¥î±†kìÜ{ʵ—œí8IM3ö2õì¹B>¹G ¦DÓµ»‰H7fÙ ,{92“%Gb{'G6èxq%ª…97Y‹(A¤AÂŒ~_ß3‡’# Œbª´ÂŒêð½ÄŽÉ.)ª5ÿ&E±>€¹ãRˆ à°c^¦ùÃrñG¤2o¨çÇÞÔˆ¤Jx¬çKpÀi˜èô8‹/HÖ²•Áá×èûÝPÉ'¨P.R/¤/mzýØ·L&T’%“Ê‹ÆD#k ÛAõ]<'I ÕÛ Ù°Â°`Ážu^2È–k…¯{Ù[;'@ßE­è3Îi_o`;WMaê&™Ó’çkŒraÌ¢æWŠ0À°EОÊ\ÀË[™N§8úÐ4•‰¢ââÌ P—:^ºY)ÒþWåͲ8¤¶Cõ»û “5݃¡¥®“&ç haâêê+ö®ªŸÆŒðø²Ûàd¦Oؾèç]¼pýšU¾Ôí%Ç9ílÇ ŒC+ ËC—ÑzÊ™¿r'Çí=ž&‹²Øh'ø èUÂLùô8ŽºÙ‘kKOäË”Q¾¾öB=Ë i79a†{²úƒ®ãš/¬§‰õ Có…Râ&æãüÔù6!0‘|ßZY/E¬¤Ðãëú·áF „h-%åJŒ[$`…)¨µ jÑîÐbìÀ*pn¸?õ¦aú<4›:[mU3zŠ /XïÂ?ž…_ÙB…öÙ…Œâ«ÔûˆÅ[Š…¡™nÊ+N}þ…ƵÑ4ò=öU°jÍõq˜ë¡×^ ê®…ù`6¿÷Ì+Þltí¯ÝS=þ¨o¡ëOVŠ”PnДa=Wô¡h•[tž8 12’¨‹ f•÷Rh­^šq˜yod‰wݽ45Þäao5¼ÐöLº=ØnnþUCY•â-¬à¡*ݦc„Ð+Óµ #IÂ'SÈõ«l™0Êr vT­Ñ  áä[_ ª”¬[,»L‘¬lq•E…qý(XV Ìb/X„˜N’˜ƒTŽqØü%É’$üE ‘üLO—{*ófÄ&‚søš‰Ê[EùüÃŽ(># VÙ†n¿æô ÏÒà :/ÖL:tSËÒ5é±kå&)îeð“.ãZôL42Xó£\¦ñ‚Kt|üt²kç·\M ¥š>¿.{ï@x)±|D¨"ú'j™ò2ð÷¼ˆ®½¦Jè[âÐ[[æ%_ÅaÔ×éh»¹ ùb^®¾˜+ö±C¾…q÷Ê;† €MOÔþ oìëÕ ýu}ꀱN‡>¶)M´ÔÜO&†øjÇ+gj·%LøZ(žT»ŽÿÃÈ…;„¨ª}U®Tf÷N°eúrŸ–‡G ÀUìCP‚|¦r)Í`Â…$ÆD'Ã)èwmá5 »uG¿ªýlVT¸ tÐýð*Sà²3„Yk~¡Ø¤²õ&­²¥„Àöކ‘Ü=dÇQxJÍBÛ2êÚH˜RG·Ò·ápºÖuiÜ \¿ÖŒã_üšß×üX©›zTK)ûãê^› [ø!-÷‡ÙÓ2¿7ô”>º•nÏ)‰¹ôBöQÒW5Ø£%‚ øÊeK¨*ßÕa$÷÷luúŠr¾Y\ŠkûÓ1©ÔV#¢‘O)å‚€/G-¾ QDô×ß“ltºùa‚_4NGµƒ˜Äµô{ÈÜ=ÿ5Œ“©ÉêN~±²<‡1(íi²jRÞË»bƒ¯˜ÉrŸLœa­…Ôu^ËaÜ@Âw,.ú¤sLoŒ»öâ2A&{çÀ¶÷6Yáßà ò‘ß ß\)¦o–G ËŠ‹jk‰Z,zgk ÆoãlK‘}äF Chüò1‘NjÞ ’®¶™'eåþM{Ù/˜/iìÞc‘…̱Ú?óÊg ˜èùkÈ‹·~È>óÇÆåïZòÌF’­ü;ð J6b”_HwoÕ¨6± ²ñ üiù¿¹äA endstream endobj 935 0 obj << /Length 2721 /Filter /FlateDecode >> stream xÚYKo举ϯ0r’w‡Ô£Õ=y7“Ù ¼ƒÅÄ{29ÐÛMX-õRÒxçß§^”([ž, Xd±H«Š_U±õ•‚?}uPWe–mùþª:¿SDõWÜøüá¾ 0n"ÎïßýõEq¥Õö úêþ/u__ý'¹½\®7é>±míþ¸ÞdY–Üþ¿>ý†<ùðþÓûÏ·wLýõ·ï>þÄmh¼ÿô¯÷×½Óyšì×ÿ½ÿç»÷÷“@EšþIÉ‘óÿˆ®õÛW»}¾ÕYÎò×ÛëÍn§’;wvƒk¯7y‘&ÃÉrcì©‘%ÇÎ3å2>4®rÃ5ú[ yVB×ÛžIÝ‘¿­9/IY³mÛw>e]3§™xœå•\ä)b£³­.Xð³¬w¦ùU Ë ãF[Uà»ÛêýŽY­œñï¶j\K‡Lûdèð{H½iñ4w½{:ÏJÙ—‰kç¶š_”Î+3¸®e:|#3b×À(Æ~½¯3ábeiIØè · ‘¿áì+-é`È`fƒÅ‘´c?!¶'4ñDMÄcd's¹P¤DbÇ `z‰Ð[nOfÃikwcB[ »PhTpÁÞÏ' Y8Ä6Êhå¶ÚIÜå‰M`F¡—>!š»Ž—+F33×1”pÌ¥PŒL”•¨EŒ&& ¬ì'´Äް3`á9@¾ì±òBrhˆS}#‹-±)ãjBÑ'lj [}HPsOÉ0 0õ™v†åÏŽR_Å1¿ñq‘‹Ö/ù¸e8. ¸¶tâÎÕèå—0D^E<Øóà¤`'޵À‰õŸìzA×q_ʰS<±fh^½›æ8Xÿ"¨W`ùú_$w¿tÞÆ0NŸï§ªsl ÄÞñöœ½­墫Fôqê/µÎ™±æ º†.96|Žý–yÆñÍZ«Ž äɼÐFC¢WN 6’ó¹ˆÃÙTóº±MaüA¶ùÁ™ö„>Ùµ©§¢øù[¼ÊGÅ~(šïEîÁ…µg—Ã㘹 [/Š{9f%£á8‹SÑ)ƒLsÄP];zFÂÎ+ ó|Í©¨Nž|Ôäªx]è|è -Æ¡²I.=¾—Dp®¡º¢äµP¡BSK4‡ð…~Êz\Bª$Sü. †+R,¢j“ ÌËÀ&ÔåkyõZ½ÈºP5©¨|z2ðL]Ds•NáTÉ#…:¥4a™¸T’¥Ñ¬(wP×U:õH˜”¯î‹H/¹æ ó }˜=N2Ø—ÏIHó:Âu½—lyùJŽý#ªý;“‰±#gÆÉ’½qÎÞJHá± æ­n±'QC͹慜‘[ÊòÓ(ͪ¹ÏQ'Õ’ò¦ú ,‘µ0öäÑ뎢qò4ú}4 À—¦4•‡\ZfR¥lmŸ×$¬—ÉO-‹Œ«7güèÝ#Îβ)—úNñpâá¶ÂôÜ´¡°üÄ/¹ü"2ÀcxPø™Õ!4Ôž?‘cü™²C§ü슫m®•¤æ"¥!_%eƒÎ&‡ÉfÃŽ“Bßtx.¢É¼HöBóz®òü(s O èâÊAËïN:{ä)_ö2Ð_[AÎo<¾ÔTPð%%¿ûðËßA¿.˜pLðöIfðƒ`¢w˜ª>ò̾k¨Ž¥ÅúhQõòôiÉž²ÿŠ«òR÷KÜßúÍÐm¦>C(üi`Z•j}r-˜Äoj©`0L¡€{ô³Ä…3.Á3ƶT ¶ð;ÈrÃ5{è6ü0ú?\Šý+ endstream endobj 939 0 obj << /Length 2830 /Filter /FlateDecode >> stream xÚË’Û¸ñšËRU–—Dêè$ë=MQ–$üz© bŸ4 +‹r‘íQGw(QnIúÈEP² ^Ÿí ÷Ÿš&+70(™ÂëGQDúA`Ã_’ a9lól—•Àj¿«Ä^@7ÛÃ!M>Ì“àn-/e~|Sàà7ü++ôè&«šq¿¨V_µäâäÌ?6-R\6Û2Ï“IŠGA28i ±aY¾2¬ñ¨CRF`$å²Ä÷¦6>“°ñlúþ5P)ÍÝÍ^½HsEô'kàÞeæ7ËP?ôYMÏ3^k¬Ã3ls·ó(ØÌÕŒxìÆ.y‡fâQ|ÏbŸ¸ùLlŸüOµBàw!X9v°‡ía_&ÿÞÔË<-’Æ*IáÀ*w¥#‚Éêç^Ð'´~ŽhŸÆ¶¤"eŠV0\{MKTÞªp §²¯4‰&/zºðê7ç¾;¶GE õœZY’Oànå¥õä7ø^Ò±ãyd ~›…nA^’é¾ç…'e-ß (E-'kz ='9ƒ±çfÔ¿6Ä$Kà™öYŽŽcå)àñÜ$\³2æà!`$çyvã>ôÑYåà ÉW„T€´è«î`K$¸|”%Ñ‘îÖÊž}Lçv+oð´ý¬ZÜÊ ä²šÜ Lß(â¼â2 (ÖÜãÝp–D „áý+",zEt¥y–¨àHèT O¼fׇËÐtV„±Â4K^.¸"Mcg€ áÚ0•R<£‹’<1Yn ³¦ww<+r0ys)†X†ˆ¯q¼–Î_f.¬×.ƒDyU,BøÁ övŽžz _Ø{‚rC.MÇOÚš¹Ð9góØ)¡Yv¶ê«6³ çh 9¹^Páê}ríçUo„R-êÄbǨ_QÔ‡”#W-IŒ!ÓÙ8~®BtX>ø‹±‘»ê$bUÉ¿ ¢¶Š‰yQåÝh%ÌDc‚ù!äöÖ24ë+ ó=C"³Äâ;N%ÈÛ1FOüõˆ–Ìg5Å¥¸I„@ÔuflÈ'ã\}J³ÂØÉ­zÈàæ‹cš ×`˜pö=xQ+4¤ HV“Ól9-E ÞÒêÈ„åèíꛂˆàY‘ØctHñd}ÈcÉ[àŠU‡ÙÀ%v "0 QC6@-v³Ä7Œ°7µ¤m€R߈L”ì¥U”ˆj‘ LX&©—I-2Aƒ¾±T†”çh K,G.¾ä.Ø»+Iþ&RM!­!_ÖXJ‡a~ZŽM~È‚‰´>'{P±Êo… ó[¡ È+Gymĵå^dtΚsGÊcå^@9轆È5­æG= |À˜ó)ݧzlû¹“R§Dq"¦µÆ¹mÛ7zˆÂ"Ìì +Âja(«{:Ù‹›õ[d‚ë{%‘ fœ>ÑŽ^©©@‚“³\;¿ìHz >Û×+OC¹¢Q} ‰ðÌÎ+pZ}¿` š©â|—É#§‰k‚bÒíÇEûìèC4øÙxßaM¥,{„¥J+¸$N˜ ° ]ry=­T"(e¹,ø™ÔzúÃìþ&àGÊÅB²¤Ÿ!å¶Œ¡ÜkO§+U‚/¦'eÅ1EfZ2c-t4ûW%\f4C$åÆ!;…b'”ªíY†+ïí%º-ªš…XÉà+ •„ D޽@‘ˆ Oùm`qâë"ð¹qªÃz¸N±îdd~ˆNgÇ8q2ã´@±hØÛgq†¤ŽéZ8 þ) WÞ„—Hª†Áõq=Ãæúøn1ñ0åÝ«†L–Á× -² Ê=ò„j¢cÜž¬RÌ)öˆx¤ßiFùŠì(¥ V¼5‚ï<5‚â·£•drdøÒ* xSàÍ™¡W¡¤8¼èddònèÜÙ¤‚î¦_œ†ÒáZ¢ðÝ3DÜtÏ8ãé|©ºgQ V‰ÄZRˆ–”âÌ|]‰‘U°ÎX{¤7B ¿W†M²¾—¦¿8eršÔ™£F¢P&“°³Š;(ìM<X(:²ä‘!¤ÔYœéÁD}ƒBÓ9Þ ˜«`Œ§ûdxÉaÕ zò ÞóÓ]¢ß.ÄG¡àÁ×©Ñ z„svBJQ¤456r°5¨xÒðçFÛ`Ž…›½í¡“ï(\üòº¾ùYìšO3œ[\-6xZŸi¬åI&K× OÝÄ\îÀÀóu³b^'¿øž©A^”X™`I þü‰œ:“á;Ÿ"™QÅwÚ%?ÆÄùR„Éîˆi—¶@ÕPÑzÃf(mÏ9mrC¿A‘¦tuø‚"qÞ1EŠVûÎðǚìøì d»R§ÄrDð¹Ñ£›îìx¹ˆrÕ—c«²ŒkØ2Í¢ß*þM+ú2]ûM!½ýMøç‘ Þµ—ÕVõ¯Ò÷Ω,ˆXÞxï4xob&Uv™JZ€Ë¨µj’wM­¼\šZqk˜7µTK™mûÂ|Õ=Tɺož{Nzsò}aïQhWA’IÃ7t@¹µõõiƒ¢¸;NÜÏ`ž Vù<Ë~·Ak÷ùÿI@Èaô“æüL2Xªú¬™Ï—[[ŸŸAìý«Þ^\öÕ×bh…Ê_·x‰*4l„‚îWK üíÎ…_LR¶:zy¼ƒ¢nÙ1VN áÚob”Ò¼bÐ?fÜÚ@TÛÌÜWó)¼é}b;•Q¡ýy”Ô-ål™Êœ8ã ÿ ó|} endstream endobj 943 0 obj << /Length 2858 /Filter /FlateDecode >> stream xÚ]oܸñ=¿Â¸—“¯+JZiÕ·\‘ ÒæÒ ç(z} %®—ˆ>ö()‰ûë;_”¨]ùZ°ÈápÈùΪ›þÔMßiz_f‡›ª}Ô=ÝðàÓÛWJðv€¸ 0zxõ§Ÿ÷ûß—q©nŽ!©‡úæ_Ñëóùv—"ÓÕöûí.MÓèõŸùûöÃgdÑÛ7Þ|zýž¡?ÿôþÝ_x ƒ7~}s»S¹Ê’¨T·ÿ~øë«7ó…öIòÞ1ÿÇÕ•R÷ùM~ÈîUšñíõ-\ýëí~iÛèÇÆÜÁÅ’<ê~³è·x'ðOñT;§»'Ó±çomÎÎ~EB²ð|›Q?¹Á4G†ôòO‚ò(23¿Å*_@:ëÑtH—öQc+Ó ²xôWOv@±v*½W{æì¬Ýh«©ÑˆVäÑ7$Ô»/ÈàA02˜ ƒ0ÉvÅÏ>ju×ÙWõÝ`‡à~x„O+QÁ|bÑÎCT÷ˆñ­FgtËkÎTölý½îowy Bûø[ÇØ¶{jž=nó Ó¶îÚÝ![YŠêIO<9i4†Ù:¢«qÒ ¿È!©Ÿdy<éÅŸí£ÇidëšKø-"ÁhfQáF¹lU-w@Z×fSõì|_9Ð @â™: hF8+É@ð«ùSõ Ò=ß²—)25\]n…³•à8¡Êp€¦_b˜I/÷r¦f`x™Ãöe@BÈÜ'…ûl(ŽýbjjoòG„TDú@GéLà1ð‚Þ ÄÖ^8Ì…EgÆ Âˆ‹M;ö¤b†„»XZ¬ÀV°àôºÁY;ÄV 15ó¾#˜áezàØ­ïg"å}‘äLäÝM)-£3„±IÏ®•Š7¥–GÊbG8˜YgªÑöÃ%ÀH3€®d4B˜t€ÍÔ €Z±î;^•ˆ:$¶Á@ íÚY]It¹þ¬Ÿ@ yÄÝϲꀠSMŽ` }ôü¯»Jöö$—2%ž÷ewIjuK~'ð'·ÈÈh†®¼æ>н¤eH™CßQ4…¯Äˆ„3€xîfìWqþéʯ(~¼|a€žÆSïìÂý­Œä"“DŸ eÊâÞô·¶'»¬íT”{RT²Y‡)^ÓüΤ$lE^W«x­êϸÍ;21â—¢ÄC­ÄÄLÇ ó¶0Ÿà|Î'8™]'‹&¯mÐìk ¾¾ÕŽuC¹ü³ ¼ÏÂ:/¯Ó/’‚SŸÒlCwô¼ ÁNNð¡Rh=êÁŸÍ˜Ed:nƒ×,&ô¤Ð@c¤YX'nˆÙ³¶Cålk;=öîùA82‚y^³ï‘‰Â´ë…ªíªfª…*† 1Xœ8 ÖwÕ`Dƒ'Œr‡Y4@Þí¶ìPS•“@öz²´5ÉÅ5p`¾WÙAfäùˆNöš3»ø»­-2².Äì.u}·»$æQ=@ˆrr Q.Ó´\ßÙ§ÓlYáGv ADÄãmf“e/¢ ,Ñy:¤F #Õ”D¤£b墦€BЇP˜°Ú`ÃEܤEí—Ö–zí*Ùb*G}ª"ˆûªÆçUP|×Ç)ù®v}•I(Ii!üºš!Lù‚) ¢½Ë…ùv~›Üåq‚´fY¥mè œatª9ŸàkC¤£ˆkàëŽÁ^èÆ'[á≧K5“V 2ú™•Ñ.õo*o“Ô¿%(h0Ÿ´aá¦s(È$¤/ÙÅ,ˆiÈuPn¢`!«µ‹$¼µ°0HІñ°œ(‰]€àÅ‚('K¡4zZí>\k²ðšœí}¸{1•EÄHÏáÛÄ+º(‚lŠ/“ì «Ç¢,땳lϯó¼É¤~ÅÙÑõ-ïÞñ³C3pR7_|ëçØœa7¾óôòÎó/»UѶzÂU˜l{ŒùÂu!2É×LÍQ6`ê°0u‘Õñ¿àÍeØÂðò$…x¸¡)ˆút™Lác´6G%h McÈ)¶Xs=³HžKPøH·¼ŒŽà¬¤„nuF™>)}AAÞ¡ôk¯nU^>~¶ÊLn¹¨è£ë!íµw«N ¤ƒŽßgÒ4ZžX*ì(£Ûs¹‰Ék¶ê9}õT¿ej¾:YÜ8ÔØÚ¬=†èl¶óétÆs »Î×'ØØ^(6ËyYÄ™nw¢—†Fê%ó™"•Lñy®&¤Ëˆ}Ët<¹~z’çˆæOg|g§XÚ°¢#Ä-Ï›9p-V¨Çù -Ûaâ·ÏÇL‚ã'1Ç·wÿéš]oÕGöeËeèÃ_ßÿ Æ_Ö endstream endobj 947 0 obj << /Length 2597 /Filter /FlateDecode >> stream xÚY[s£:~Ÿ_‘:/Kª2øöèØrÌ|ÏLjgˆÁ1U6xÏlö×oßÀØÃ9»•ª¨ÕjµZÝ­¯‘¬îLøSwóndY½‰=¾Û?™Ä-Þï˜ðŸ?)‘{ÁÇ–äSøéób0¸SfobNÔ]¸k« 㻓þý?ÿßYãIo<š€âþ뜜“4{DZO:lôûÿ§%(ù?LQJõ†wñÝS–Íë†ûäþÑÅýØ2ŠDzA¾«îûcã'þ‹Š¶L~Îâ¨JóŒyÇE>¸s:¿ÒrÏ"ù‘–IÌ(‹?çÓYò“‰85)JPV2'ßq[Õf=»r¸YY=5`«Ÿ“,)¢ˆ ûÆÝ2½J·IV&ÜÙù‘©*=Ï2ªüÂéÝ?,ÓÎÛûþÈØóÄqÀù™dÉ·ûGäN™ÓCTp'Í„yJ‹´º2]±ídeÉ-Û8I™d¸ZÅ#­•Xäí,Co7¾WFúÝTÖý£y–  “*J²T΢8†µJfòF8ùÛ!9–,“‹žmžm“"+{ÍF½þDrXG[´]6·íeFŠº&#ã=ýžM2îF<§e™~†DÁ„§!–kTŒ òÇùˆlt6B¸†ÖØpv,Áþ}ë"/¢#wÊKoÑ1vR2·ÚG±@‹¬‘g‘ã†]+S[£›ƒÒÕªÓ˜®Ä¹d(p› …K†ÂÀw8‡ìpðNÖ„vh¢*)~Yô·Î=œN‡”6:r¤¡M«ÎÜŸ™»§ìa_‹ü^ˆü$Gz ‡Ú]~8ä„§¶<˜G3@ÃcæAÊÄi%çúI âŵÎ_"Á›hœ>®Ï;}dÝ8ä°QŸUBÿâ8èÔŽëš(èÄŠñ_¦ñ¾€`„ƒ•СbÉŽ {†½®ØP®ª¨WÃV®7Îy«%eyÅ|Êá1æð"¸Þ‘v¹%É7ªŽ081U;1Û$¦jó¡k—,„haÀáo$ç´æˆŒj‰›Cc‰p}ZAî[ ßäTYíÚ½ŽÚ cwE£…Z Û’h ÑD;¯×ÈÁ²¯DEÜZâºÿþàîöJD cÑûsŸÖ%»;@oeœ ½­z(ßv[õÔ/eOµÊžÙ.{ŠMB¢U¥Lã ¥˜0AÐ$šÍü­ZëUFYÁq:^а(³ ¶ÛäTEP$Ú|ÜÔaø/9 (]£,¡dA$îѹÚçEúŸD*ÕUöÕå³3ñdg v³¢`VÜÔ]‰~gª¬F&Åo'£Û‚Iûû§.xìrºØÅ/¦rÉIV.+ÄTÄñ?S²±8¦%­FÕÏ2–9z‹R¿>GU[Á‡KÞYâ¸Y³?œPêÓ÷H@º?2ùáHz<ÕÎŒE6‘`‘ÉÁáj·ÍO|à•Q¤ï{Ž'ìóCœˆTT¯ÈÝà ن¯Dߎ‡>PC~.º6tw.L­OœKÍ(⦩§W™Á¡쫞²¯ã¯èoHçyZn|,JöpÅ·¯7QQD3Ú>°Xe[ãD>´—Ú×ðÁ©à &àÖõ°€.ñ›úþÔ Ñ%¯<¼@͞ϘÎÄÚǵ¼gúò CÞˆþjÔ„º×à^í?vyòÅ C=G1Ëxzåvº^¯œÙôiEªlc5Û”ñµÇÃúÚ4Óëû_—ÚeÊÃý±¬hæ!âöÿ5 9nGõÿê;¡ã>cY5yÖH3oýê;ÏËùKo5×~À©;ÿŒ®A9¶H~ƒ‰Êæƒ1õimGË,ñîá‹3×]NáÕ¥QvÌ~¾|«Mt‚ߘøê„Ko²DGQÆ[p;u…ñ»ãÎxŠvÈoÄÖß:ôöu û,Øíy<0œˆ“&-ÀuÜÙj3>ðèY®2gå@´k%¡'óx³u]¡¡˜òžÈvߤaû¢ÉI³%nCý䬜ð•!DLcá„.l¹MR“7kš+±šmV@vùa㯽@÷°BNØt$ Óë«öAdk”Àœ`êÕÛôx,€,Yͯ4ôoRì ü™¹^èÙcG`Bç‹~@¸´q&¦A°yÑLÓ*HÌ<8‡DáHlµbÂÕ3 {þ•Yœâ/ÎŒó ™¾æãäø¢¨3@3Ï÷õ,t<·WÕPpu—æª~Fháê*ÞR, é_ajýAçb` ÅV!ÜCrã®(çöõÈ‘9÷ê°mCök¨ã¦(Ia0ž}]Ïe©S7@f›P"ô3RtòmÓjCòÒ¸C‡¢-ÌJ¼æ„@\_EûÒëuoî,ð†Ö&‡¸¶ûE¿Êç ×9ˆSDŽD] ˆýäa<(ç°ÿ¤;rrå°;ÙÐQˆj”œÈhN>væØ™¾°wu hØàØ`­Z»ÚŸ®D*€ôXë™Ó0·8gñ‚KË–Õ¡WõÐÅ \.`æ…­ÁɪH,¸e± ˆ˜üɹpܱr¹¶y1–B4±Àâñ@æws`¶üBÅz² ‚wä4ð. t„Æ †"2%;&Ð¥ÃÍxãI EèÛ:NÓž4{H_»¾”!.Es6ÛøRòe=Ÿ[´@‹ Á&è /丨Óé¬bKI„hÃ¥ã‹Lûlp…jäFTa†øpI•ÙYm¨T G´Ï“\†×%¿Ë8ÊhpË­ð’Œí×gÉ–Ö‚©˜XÅ”³{íf&jD“ßÍúWÅó•YKª~@àÑw E/õ‰<òÁЮ^UÉt¹²>4~0—ìÕv@?ª¯\´H÷cë1/ñ)ÅÛ\2Qv@­¼B¤G¸¥•Âͤ}+óùÂws pió€„ôxcd'iO¤BÞD Y©(ÞæYÆY&ªÓjßqÒ䇈æµà¯îçìÀéczB_Š_ÀÆò¤Ž×Ų<ëwVäïXX ™Óž…!<ž¢Œßv‘ÁÒtÙ7ºE‰×õÝÜ<96¿ØñꌯœY}k.®®Ë»$éÕ¿Dý±cÄü endstream endobj 954 0 obj << /Length 2504 /Filter /FlateDecode >> stream xÚ½YáoÛ¸ÿ¾¿¢Ø—9@ãZ¶“ØÛ§¬—írè¥E›âP¼=àÜD‰…9¶!;Ëòß?R¤l'ußzxÀCX¢(Š”(ò'V\xð'.bïbnF«Ý;ÏPõö‚÷_ß æã°ÃùyùîêËht!<7öbq±ÜtE-×ÿr¦e9ú‘#óµú9AàL?Ò÷ëâ¡óu¶˜ÝOoˆz÷øùf~Mmh̳ÁPŒEè;q0ø÷òw³e£ÐÈ÷ߨ9r¾P=ò/DèáØgÕÇQèŠ $Õg‹ß@ÉȹýBßåìþÏjNíØõíâ·ùr~»x@Ý`­a ܈ÿ½Â9g]ðԲ̎,0••äæ ©wÕ)ó’‹½¦ÞB²¬;]lṵæù € "v…Ï:Ì7°ÿ~ìp Åž:kùcàO™%úä¸6JZàz#ÏIòuŠHr$ÕDQüEíñûLGO‚©S$ž³Õ2©eÅsÈMŠªRÏÏØWòTMEæýs¦V—vËEàŠ‘ { OàÍâ`"l¨@ýoÄ£ÂG"˜mÞd…ÄTñ¶ð`ª*¶_˾K¾È03ÊÒ7Z2¥*652ð'ÑL=¤Š–¡.®2ô—,ò°òV°§¦¡åZUµVÏûš‡ð zl&±I¾•t¡ö(m-5õjö2¸P5z˜kD€ãÇarÆàñ1ÉY¢ÀAýÀYó·*.±1r’ºNýa€6ÚM‘e…1Wå[Ë‹Z­pë cq2!°Îå†a(œyMT³É ®J6Æ)ºS{ÖÞwW8š5lìêìOU'$†B/ …çH”7AyØ3N~-½’ÄøÍaÆm\¿»¢b1†¹ª"^h$ÃBµ$‘ÆZÃús•í+'ÜQ@XßÐö¡S~‚!{Ý^*ÉuÏŸÍK‹}¶¦N{7nàÞÑ7“‰ÙVò¢}ƒ`·‚€‹kµM*ï‰)S¹•³ð„FJs³ Eš7nVÓ!•Úº[ʹÙg‘È3¨mNG‹}¾v)–A(ŽÜx<1”ù‘KC¶´@•FàŒ¤¶pYünÕKI¹Á~ö¡¢nžìxÀdôyÖJn¨©Ö’‰S)î ãﺫˆŽºx*žŽÙ뮋Òl*Ïúæ¼kø=†ŽG¾}`&e¢ÏU¶Ú$û:-tÏâC–1ô!ø¬ÂÒ„°Î^°!L¤ˆ…-ŒXˆT©{Ä ‹°q‹º»›yU°¾»b­6p‹Ž—vöÃN€Ã–úì¨jJ}]K›1ƒLCæR'uîL  ö ¸T^Ùõ#C•J>êç×ÔjÖùÒìÆïÓÑ=“nð%¤‚9lÁ©énc'xÅÖ§ÛÍB‡¥À»z´:š¤oØK\Ú8ï÷‘ï@RŸiáZIÿÀÚcåRù™öiQ67ëü*TÆçñÌ<´á¶³© ¶Ï¸¿æËßo—Ä3]s@»os^rûK%å9Ä÷ã‰;žL.B/tÃ(øÌ·Üûú'±ò\¦Ñ=­ëòãÕÕápp·ùÞ-ôö*#K««s¥B?†‰âJYîÿ®Ô¹L£”Û‡ðø¸£`r Þ¦YÅ8Y¯)±ªƒq¡w&z¾²æîUA9=Y1h pº§Î³EÎЖˆ˜2­ÂYÕÚ Xt”× †2á矦þܸñbÔ>l_)Ç?°S"ãp…}„£ 籋ùBåè8«A" 7…é@„]”3¥Ã3d_—{n'ô‹ƒð¹xäLµ(?¶¯à€“óºuæì@ΊqNnw¥é·êþ°kÃŽŒ\C~²áü%À½G‘…ÿg"¼ÀOãÂ+9hUìdu.¦Ÿno—³ŽÐ‹ÛÞôÐDIŽkŽ6Wý]¥ÅÅpûâU«×ëèò 36ب™¡%§x´0uU :`h%5X’Û­É× ¹úôҲƬՇþÍèà;‘9™öÞ-íkÙ@ÿ#?ÂáÂ5 Û5ÆSÚõüþ›E»¢E(\?j<Ž4>Eßõ'eþÐ>m__ ðÜ@/å¯^•ïŸÉoIÔ¶Á_õv’¼³Ô*±Ïí’ï04R ý‘p½øäªó+G´3¼&câgLóà œÛ QWñ (ÄWV4õ:/”µ2ÏSs àÔñìì{ºM­'¬•yŸjTOêOÄb¼I_áëã¼ O O˜<³6i´õ:[“ìËs_5ÏEŠfø¸L¨ cpÒ¸‹b~¾Yˆ`¯|2u\f"Úƒ›ø€/LŽƒÖVÖ4l3¤ ‘€ ÊT˜04±aÔSâh­€Žy‡ú;/P{B]>‡Ô„¿‘V°ÄŠÞæ² D¼Aä;´†àºØ 1#¦ˆðj²P[ܳÑĬ;ŠúßåÄQe•% TzO¼tª0B~¶xŒCÒ¨9ÁªJ´Ñ \q$ÆÎ³Ñ<Ÿà&ŠÜÐ £‰c¿˜{«nMÂï… —<ÛZ‚©Á™áIMœÃI¹ [¾»aÏëA†ˆ‚B¸ù>§ ü³ÌÖ›ª×§aæTä?Ç…QèFbò6•,ó •N‚ٙȂM“Ø žÖðLÝ)ŠiMÆ%ìØ°„íæÕ°"°° @ˆ¿íT¾*4' >‚€ém3Ólž§)Æ‹×+tx!yiô“¸¹yɆcß'|Ý0Ù2Ñg@L¨[íŸ5„*b9SÏš\*ô&0#0µà660¸RT?…™9" Þß§/ð„T) Bït×p Sˆ¿S…4gà ¼#sMÊ'‚DFjÊÕa#¨±óÉxL{z¡ýRé ÇZ*=R”ï-¡›šª.Á¥_ í@iJ¸tCr1Ål›üMþC&ëh¦Î›WµLÖ4‚p’+®ws¥ç|ÆìƒÁ ÂXÕU}IÅßkš}Q œÝM~‡°CŒ=wÿêÿE–{Øaï çB_‹eª²¢*ÊôxuHC¸]Ãl[fnZï²q-BŒï¿QQËýRÑSLt&´#¸ô`®4 endstream endobj 960 0 obj << /Length 49 /Filter /FlateDecode >> stream xÚ3T0BCKscc=K …ä\.°hQº„äÎeUgbl¤±*OS endstream endobj 1115 0 obj << /Length 5650 /Filter /FlateDecode >> stream xÚíK“7’Çïþ}dG ±…W=&ÂKy½kE8,Å\vöÀf—$®Ùd/ÉöXß~€Â£TeVJc[jµÃ·ØÙù#2ÿ$P(¿ªÌüª«®)Y§Ú«íÝWÕðééí•ûá§ï¾âÞnm ׉å³×_ýÇ ­¯xźªãW¯ß\iΙý1X½¾½úŸU§¯ÿ÷õ}õ·×Ñ“‚ˆ´–f+®xÃ×Ê2Í·ª[ŸT÷üxØö÷—ëµlôêûÃmÿ«Å»¿RLªZØ¿ZWLÕ *ÖTûËoœ¡¸jYW׃soÅ5tV››óñtÙ¡Äêþt¼ÙÜìö»Ë®?ÿÅ~&Wß¾~ùÜSg\šHu¶mƒ£¿^¯yÃÝÿDö/¾ü»ûƒ"þ¢mXËåU-Zf£ˆç X¯ó!i J—C y=!w «DG%{k”lóoå ›{“‘kÑ­~ÝÝm.½KÈË¿_s®B†Ó¤45k„ú9ùÿJ·5Ý£9œî4òJ馑cº²MwU3i:—îóû»»þrÚm§¹U3݆OíËëµæ«¯¯u~¼›^ï²eµi–ÿ“óû󥿛ú«GÇŸZP¶}”¨ÙÍál§—Ì6³M¶u§™J³}9^L¶‡Î÷æÚøY·ç™K»eÊÝ¥]†µ¶I1 aõÖëÄ|šÐÂå zzù¶‚q3nÉÞ'.ò_ SÁ^Ã88w隬! ÉAÃÙjØ(Z×^ÃvpúåZ´«þ´yÛ;!ì¿î쯜¦û“ûÅñÁ¶çËñ®?Íèœóމ®þ#…IÔ·“*ÑÑ–h:Yƒ¥‘£D1rárA¢Dp( Î]`ÍA‰ÒÈQ¢ÙJ´‘¬þ÷$úËî¼»Ìè³3ðª?³~R°UÁ£9¬à4²ˆ‚iä¨`Œ\¸\P0Œ‚s—NÁ¨`9*¸ ç3º¶cZŸÒÈœûŠôiFw³ÙoÌœñÖ©Ù}ƒ¢cyqÍW·²»G¢l;J(NVöh+ÛÛ¸±V6•‘ — Ê&‚ƒ²QpîÒ5¹•M#Ge#dÛ7W­‘¹‡>{þòG§ÎCody±½ò?m§|<ýÏš¡ Ÿnç]lðBø¼õ:1Ÿ&®pé*=9!× “RSÉÞ'.­†k‰Ž—'.\.,ÉñòÄÈ…Ë…Ë“—' Î].,ÉñòDÈöòÔ’µèå™NI¥›’šßßÍ!Âtõçz/"Ë7˜ªÕÑÖjCxîI$G­bäÂå‚V‰à Uœ»\˜{ÉQ«ÙjU™x£ZÝïîÝççö³7YÛN?‰›¬!^Ô¼æpÞÓ y§‘c޲ͻ¬R ÉûÛþÝx5ù¶ËO"ß>NÔ|æp¾ÓÐ×pÉH#Ç|#d›oÁGóýã³™;ì-keó–—>F>¢TeŒæ°2Ò$Õ-¨ 9*£ Ï®«K3úU•ŸÇ<'­«o÷Çs(a†ÛF{3ߨoÎgC©_X¼ä•dZëϼ¸‘µÝBÔQ‹›Ä,n‚ T•úJ„HÅ J.\âÅ 쥃s— ƒ‘¤‘M§'µfm€¦rµ7|–ÔYWìw}ÀD:D„8‘NÌÁ‰tdÕ@i"9L¤QráŸHÁñúÅÀ…Ë¥ë—FŽ×/F.\.\¿Dp¸~Qpîr¡h!’ãõ‹íõ«ë$åò Ë^s›C7‡Íþýy7·³F›‘ñ7¿[%Å5†š“h §$‰¼7“† ±6R±êCòñŠ«Ãîâw˜l7÷›ín°{?“ !Ù³Ðu®uÔ~"ZÃÝD.x5œ†‚Í.t4jP#FÍ.¬ƒÓ°Q0֪цˆc‘z¿÷]ÃP­ös=ƒhY=ýËV »U‡o²Ð*o¼­§Á̺ý5ÓµiÙ°ÚÌ¿iXoŒbs‡€r”4µ¿ R½1JͺÆNû1-˜j["Ö£ØÜ!ÐØPÜШ¡\¨™C×X K$l¬•lîp¡R"QcˆPs‡®± Ø’°±D°¹Ã…F  Fͺ ÜdÔÔæpêÓ,À7{ˆä˜z„lS_·¬–a=èx¸ÝÙC6{7Û‰=‡_—Ô•ëLôêó>ws²cRµc›dˆ»5•£9œÊ4ªÈUL#ÇT"d›Jݰ&I¥Ä^vîÅヿ½|ÙÝ…Ó6§Ÿ‡y®5øÅÏníÏï6æfÖö¯p`ξqΗ˜ƒs¾¬‘¼…æ|Dr˜ó¡äÂ%>ç#‚Ü.]“;hÎG%û9NÎ]âs>"8ÌùPpáz"ÅOЈä0çCÉ…K|ÎG‡9 .\º&shÎG%û9NÎ]âs>"8ÌùPpáÒ5œóÉa·’ —øH¨šµ’¼´›˜ƒ `ãš,¡ ‘&@(¹p‰O€¨à0¢àÜ¥k2<ÒÈq,DÈv,4v¿òcáðèþqÿ0žRµÙ¿=žv—w3[ÈMÁ¬Õç]ÑBªõM§ªv4‡U›FSÓv"9ª#.TKÕ¢àÜ%´?'¨–FŽªEÈVµ¦È©FÕÞ[Õ¾?íÞ¾³Ê½LE*;Sý9}§Ôø>²T…Œæ°BÒdµT‚­B¸=ÔÏÔ3ÿ4³=‡ËTŸçöPÞµfàå±xT‚õ:1ŸD¥t Í ª†u¦G§‘ƒ5J.]—L7-ì­qpášØ)[§¨do“ —Ð=?·!ƒ ö["8lô@Á…KhfàwfÉa¯J.\â·F¨`kç.¡™¿A$‡[#(¹p¹03 c… —K39ÖX¹p¹PcÁaEÁ¹Ë¥™GЂ<ûàoë:¿Öú-éÁÛ~?œöÞo‚ëÝ[š=bSÊîÏ€ætÄuÇNÞe˜ƒ: 6î,1ðqe"9è#›JŒÛ§¼DÆý©ßn.á´¬7‡­eÎÜ)i푈_Š4&6Æà!4KqvÆëÑzf¹&sè*m0½4jÈ.LµÉ5c~ènwçí©»±?~ýœ›¶4jy‡˜+íü7 ‹£5X+¦Mâ*iØP)bØÜ!^'©¾LD©™C×X‰4l¨1lî¯iÔP bÔÜ!tö¯åhØPbØÜ!^©¾4D©™C×Xp'0 êB ›;Ä«B5…5wïë76T„6wˆ×ƒDjÆ1jæÐ5\p£ac/cm//¬™¯g×R$gU«Õ*pèî]Û¨ãG´†Ç$XÈøAÂÆñÁæÆ5Œ5s¸4~°qü@°¹Ã…ñƒDãBÍ.$l?lîpaü QÃøQ3‡Kã Ç›;\?HÔ8~ ÔÜáÒøAÂÆñÁæÆ5Œ5s¸4~°qüȱùR‚äöPe~U›ëH ÿºœ¿Í¯%Ø ãÑèðöÜ_Ü4b '?¼9žî†Í:ûÍìñs­Ô_æ¼Q›©QÓê«Ztlép°]G㉠rwnq©{Û‰gwQÀ,«®1à-kBvOûÍáíú™Ë¯Ëj7ŸUsZ=}“1).PÔ$Gk8ËIäE3›frÈ3Œ‹‰¶Ç“ª,Ñω‰nô“J´ 5ÑÑNtyàz&!‡DøhmÆ€†û}ûý¯î0·~×øÎÇëµnVÿw|8œìÒ~δÐF^ŸpS ªÐTb®s0YYô¦÷¬lˆT!pbÌ—)xû¡ùЇK ę̈û)æP¦|#©™ÍáL¥qã³o%$R‡L!Ę©¦fµŽ™ºô'¿ß\®6§Óî—kݮ§ÍÜɉ¦ÎÔêüþ"¨öhôN¶1x`ƒõ:1Ÿ·t ¼WEW&?ZÉÁ%—.çËþ(78*.÷ª ¦QÄùš_+=Ìæ JÍÿ–öÏ_¼šÙ°£Xý$ÞFñ»N´´çõi²°FsXXÞ¸¯8‹F„…c×(*VsO´ÇÎ~šx¿9ŸãK§†‘kö€Q¥¾°§° lû@Q³=šÃÙNcÏggDêm„³Í+Vµ´lû£(€Â²2uŠâ©«nßxjGs8ƒi<§ûI† Ò¨CbÈ êºñ¥t/v&ëçÇ»~í~|ÕŸ~±3BS‚N÷—·L×·‚ ! f11³˜Åt¾×%Rm1bÌbÛ±Jx⛇ÃíæÎoî eèÝærÚý:Sˆrö¥næˆéðÁ¡fx4‡3œÆ{º.=d˜F2\ç 6¥Ïü-ØüÚÇ“¼ /Õ¬ãê)-ï(S«å7ÕGYŒæ°,¼ pXæ uEAdaþÞtÿ=¥ŒßÒÓåêúø™m€ÚÌ$š§WØŠ‘¦'^>‰?*&1l¡‚HÎÇAˆa¨¦³Qá¼²ï -¼²¯#9ù7ÄÎÈÁiJ?9@:ð!¤ê`4‡ufÐ:è!F4-k[OÜNýíÃvw‰s[ÛÕÑ=vèö ÛŸ­öu5ò3}b',,…תsp­* âtOIXX¢‘ãZF.]âkUDpT*.\) J¥Q¥"ĨԺeR‡ëÕœúX'ê?—Ÿ~‡ÙQˆ=U@£9, 4@WG£*ˆóE’”æ{„SŠ TI?lÀ™°{kÊ©ïïî/;÷¡ûì§þüp7³ØÏÛŠ‰ÅÅ (B o£f`4‡3àm° ШCb¼„Íÿ…òÄž¿xµþñ§™‡Nì ¤úÏë˜pYúxRE1šÃ¢HSˆ‚Fu'5ÂÄ(ŠJ²†{âþ¸¹]ßöîÜ®þpÛÜãîΧ¹øvÛ~ù±%.*Æë?t*6|ã¨ÅÆhi¼¦‡ÅÆÊ€D‹ „\º\(6hà(J \¸Î0DI£¢,ˆóc…ÝzhÆ Ç|9ÕØt¬xymZµúú»¯§‹Ý/ÑÅ 4OÞû8sb‡=Z¡îžüôÊntô͉9¨£`ã:79§#"ÕI”Û™ÎM¨†ÕaS‚Ⱥ”óêª66Vbvsº]]› ¶ó2ŸFÃtÝ^%63JS¬®ZªÐjV5_ôëÝ iù¬P¥5šÃÒJ-goÙ©ƒ´ ⬴¤í•si]ë&þ8턦„ j£a¢O ‚$â£K•ÈhK$M˜˜-­ˆÔA"qV"¢vd|´D¦µyÚ½|ýßS¼6bé u‰Žñ/ü ¢1ë>T!æ°Ò´ÊÙ}BDê ¤‚8+$“Öªûh!íoðÞF Æ;õG"Xª:FsXi®ÄìÝ'"uPGAœUG¥Meªãn*Ù²šKB/Ñò'© Pª*FsXiŽÄì­j"uPEAœSïì`°*æFÍY]St¡¤ü²w+„è%˜ƒÈ"g·²©V1J 5séð(Ûô˜‰ä^RxÙü5_Ý’ÏnXÞ ç=»Mîs+=¦{‹¯+RºÞd¾ÐÂrŒ·^'æÓå˜Â%p#DÕ«´ ’½5N.\Î/ǨZ›)„"ƒõ8w œÖ¦ÅÚ®£’½5N.\Mn+¦%§‚½5.\§µÙ­;ªÉdg½@Î]M6W¡´µÓÀÞ.¡'_*óëNÉÁ%—.¡uÆŠ ûh; ì­qpá8­Ms3ð(2x0^àf¡»u_ÞHÓ© êRrb.%ਸ਼°îK#Ç¥dŒ\ºÄ—’‰à8bàÂ%²µ–HA„ÁZš$À xkÁä¨&pèã’5Z/}¦Ö6Vá[,¨Ç¯ë©xr‡Àž¥ÖÔd®·ÆÁ…KàrÑ’É®¡‚½5.\§i¨Z ÖÉÞ'.¡¡Þ>ªÈ`g½Î]gj¨¦N#’½5N.\BC½¦¥D°·ÆÁ…Kà9BÕ &«šJöÖ8¹p¹0Áa@Á¹Khsè´Iäq@ȥ˅q€Žã.\"É©báŽã€¶{«?`8_Ì@_c¶mo·÷öÓÃÖŸÞy:ÞlnvûÝe7û"kûÒ¤ºþ¸='áSÃ>šÃaOƒÀg§ˆÔ!ì1†]™‹«ýð°Û—GˆAÖ¦bþ OׂÒá[BMÇh§# ÎtDÒA£é@ˆ1’Ox‘Óa³qÚλl+ÈbF*Ö4¿ùÛ» Äø6Q3šÃ‰IÃ$†FƒcbgRxâ]¿ñg œúíƒÍÀ©?l“rt&æ>ãÁ>PR}<¨IÍᤦ!ÆuH*BŒI5Û¦“eRÃÙ¯bu9úó nÎÇÓ½íôðƒ?¤bmÍ?áÆªKß2jzFs8=i°Äìî"uHBŒé©*&êIṗ}Û–ŸCz|˨éÍáô¤ÁšØŽHÒƒCzì \xßÓ˘¿_·õj³ð)úæ°Ù¿?ïÂsÍ“7OŽïšTà»&Í8qÃoÿU‰á­Áh§mW³Ë$4¤5‚ ¡6eª¨h¡~_â¹WnŠßë"0Ñöß–8Ï­ÁivÚ|Å¡Y6 &Ù6wˆO±iÔ0ÃÆ¨¹C`ÿj˜ Ó°azas‡øäšHõsk”š9tGºhhfMÂÆ‰5‚-âÓj5t5wè;ûL†üu@© endstream endobj 911 0 obj << /Type /ObjStm /N 100 /First 913 /Length 2122 /Filter /FlateDecode >> stream xÚ½šQoÉ Çßõ)æñúp£’CrŠà€^) ´À!I¶AÒœu­ÀvË·/¹JîÉÚ&ÒÚÑŽV³¿?Éår8ë`+©¤^4!§^1U ;¶µÛ´fGI8}ÿΉìÂ5µ‚vÄÔº®:”Äh¿CK¬bGI¢`GJZ5u,I¥ÚÑαéAOµûbÕâJfE­ŽF3¥*¯:ªÙ„&N%Ut:Š Äæ¤J¦ÝÉ.o.@ÕÍæq¸˜ d—‹KP³Áz3²ôºêdêì'ÓƒÂvU« À¯2SÙD›E€ŠÖº…Âb›Ãlj·®ZH€Ù}‚„æäª3&*fC7*Õé§–D&¿É&Ù@<ˆ¦Ášˆ-dÝIÌ…nΑ6›lÁ¢.6YÀ"­}å_¸AB©!øä–¡OæÔZóÉ’»õ¢©‰úän7¨Ødµ;Tìvv­‰-œ6€Ä@hE»yæfWJL&ØíJnj^Ø?ž‚h7•§;©šØïZמ¤ø ë%Iõ›Úkð»Þ! zZ˜·Ò¾»¸½ýøûõúóçÏùýÕ§¼½~¿¾üðnsu³¹YÿÎõõÖ P&ïZóÔž+eµUʺXÿþÔæXKœÁZÕÚ4WëÍPÑ̳‡§ï§šóñâÃåöfûñâËúóÅ—ïÍ€ï/߼̷ÿ¹¼o¡§fÃ3(ëå5Σ÷„¼X;Åå0—õ›rù¾£ÿ§Süó¦Ùfæ`±sxêƒÆw…Í7DwGÇ6Ž<Ž2Ž:Žã•ñ€JÇÁ“Á“Á“Á“Á“Á“Á“ÁÓÁÓÁÓÁÓÁÓÁÓÁÓÁÓÁáÛžéØ¯^¼>x}ðúàõÁëƒ×¯ßñ¦½ÎÔ@ 0ƒŽÄ@cääääääääääd2‚ A† C!Èd2ƒŒAÆ c1Èd 2ƒŒA¦ S)Èd 2™‚LA¦ S[[[[[[[[[[9Èd2™ƒÌAæ s9Èd ²Y‚,A– K%Èd ²Yƒ¬AÖ k5Èd ²Yƒ¬AîAîAîAîAßÃëúÿ,AG—y[H1±-¬dOŽ/ûžŸŒ”Q}ß-]Ú¾Ú&+ÉßU>º\~›fm¹Ý×<ªI´f¡ìõ~§Y1}PáLIì @ëh$PÈÕ_G•šYáAM^ÈÍf¸9§ÙòÓüÓ{~¶nâM\(…všÃÏ9ÍVòSjö—<;?¥gU|\?C3üœÑle!?«Xç/{?¡eby8‡–ò34ÃÏ9MYH³hFÚ—¡fÍ}ã‡k•e4©·ÌÖí4 f>¢ KiÚžIîiR‡,G4+-“C$˜Õš¿È!ÛAfåþplu!?C3üœÓìgjúÐÿlÄæ¯k²d´F¤˜ÿk2.ÛÐŒØÎi.´®ì4#¶sš ­+¶±Îuï%—\· ÁpqFp¡ DTó~ #ê¹>² –¼_L5ƒ<Üwq_H±öLå^TÁ”cšºLâ Sön¤úùÖ'Y‡Ÿ;Íá符,S|°Qö-E´‡Ô6\Šÿ¿– HöÝr«iÞÏÝÚfD¹í5±eï3«yvÞ–i#¿Ó´æÀÿP5«yvÞ¶ÜZßkÚš&Òæ5Ïí½¬‘¤Â{MÛà2À¼æÙ5¾Yýf'ÛlöYͳóvÔè=7Õ}M(bç§w%a'%aFr¡Nz'aFR—’´›‰ûn:{2?êKEÉ¢û]‘'–Ñ\ª…æŒ}ßPƒ´£Åöl?GáóÂà›¿Q÷€Ñëá÷ºLÙ ÅQõæû2E/GÍ›Q<û½Ì(y¡8*Þœb]¦à…â¨wsŠ ½²”Ù¿ªðî‹ëïiz@†d<s’KUX¤\ïyIväú8ëex9$ÃË9É¥*X+}¿ò`ÍpDSϼ™µk4­ wÕÎÿ/>S»Çð8µ§bn¢{M€,æ5wÕ翾S2 endstream endobj 1163 0 obj << /Length 2811 /Filter /FlateDecode >> stream xÚíœßs·ÇßýWð‘œ1‘ï;\Þâ´éL§n[M’>P2#±¡H—¤â¨};‡±{›qãH–'3±H­öC`¿XìâîÈg•ýÏÚjÖHÉZefW·ÏªîÝÃõ¬ÿáõ_žqo·´†ËÄòÅų/¾ÑzÆ+ÖV-Ÿ]ü”ººx;ûaÞÖ‹]üu&MËLÓZ/Ý»ÿ¹[ß­7»k÷»g¾ˆ-ñ“8˳"f†µu­ü©b\ªùr½Ú-–R‰ù÷ £ç«íݺùÕnµ½?ÞÝ+9ÿ±ÒÕËùWögþ¼ûø-\Ï–vœªÑ½¿Õ»w‡ýB´ó_7·«ÓÚ™}ñI>€LË:ŒøËÅ’7¼ÿGŒ^ñéß=˜?ÈÂ%á†;«ÉjÝN„,X/ó³°å.»ÉSêŒlãFPÉÞ'g.;òóspà —dpo=»ìÀº9#· «DK%{k”ìÖH-í¨e½Ýüº~Û¯ƒÝzÁç§…0ó÷NäûÃÏç ¯í²7úÓR8ö&$?…T) æ°Ò¨hJFŽR@ÈN 6c5Uã¥à¢~·=m®¶«ã1hâäÞ}ïTañ¼ÏŸWÛýѪæL¼ª™løÿ[ùT(ÉlΈ~b*¼õ21?B沂>#Û_+c¨do“3—@ Ò†qÞ’Á½õxìJAuäÔT²·ÆÉ™K`ÈaW ãFƒ3—¸ÖàFC#Ç#g.'6"8d˜ÃaO#P¸jÂN#ǰ#dvn».!|Zóa{gã~uZþ´?Üö‘Ï/dN߯EËjþGTáPÄüH©Ìሥ“‡DŒFŽCÈ.b¶>6ÊŸ„¼zSšy&[óùÔûCþÒŸ{ª†sXCi8 ÑÈQC¹X ËÆ0m|õ©Nó€è{¼$ tÉáýætÓÿúrvû¿Ÿ‹—òá$ Y+Û|’œ˜ƒ6—Cˆä`Œl“„ÔŠqMˆÙs_¸w±f³‹üÈ·¨øÑ«ÊÁ,*ÓéïO¡aCI‰aÇñ‚’H Ĩ#‡w¦Ð°Q~0Ö©OIV‡–"¿¾ð0¶ðUG1S˜öÕaÔ@ æp¤Òyƒ÷"9Æ !»`IÉx(;)ÁÎð˜%„dÿ8yÊ~XÔ¤1˜ÃY#)$mÐÈ1o`äÌåDæ ‚ƒ"QðØe?dð‘‰"…`E¤×¸ÓãæÓ>m ÁñóD÷`Ç;z$ÑÈ1Þy\Jû³¶âè±¼×årÔV£šáë£?‰Û}B:mnKÏÜ5¶ÐOá|BÙ9o¥™Õµa“7<ãå`}¦ŒÌ!tÕØz@Ò°ÁÃfˉOÛV·± êQêØa_2ñÒÓ¨4¤{Á9å·U¾Õ§þá°¿;Å“[]®|~¹ÙnºÌwêu>_¥ãfng®á#?Vª2sXšéô!Ú$‘q"äÜå„_+ ÃÏ)Uƒ9,Œ4LçV;aШ02"°qWîÁHÂñ†²qׇ_6Wþ¤¡¼e+÷ÅOár*'µ­È”&çÉÄÌ“Áf"OÒÈ1ObäÜ%ž'‰à°PpæÉ“Dª[1äIݸǛƒÎÏnwA ƒ.¥ð–Õæ£~e$J?8ª(sX”é|wQA$ò J„œ»œ% E‰3—Ð:t¢¤Q;Q"Ä(ÊZ3ÛyQžº;V‡û¤Æ¼´¥«17¥;êZeeÏý³?qþýlPC:˜Ã!M'˜·]"µ )BŒ!ÕŠ Þ†&WZnVÇÓæÊ÷ ®y(÷ `¼6O¡'ŽAòSFû`Ç=/vŠDjw„ã®ÜÝ­~G;ÞOk‰Þ†˜xUVvÕ£XÍÐ.ä§€º æð.”Î*R‘ÈÃ.„s—» ¥‹3—È!‘ÚI!FéJ÷t–:—îéæ°¿»¾én§;=µ.ýöµæ§*ßÁ–o:³ˆ|IäA¾9w9!_8Êg.1ùÒ¨|3b¹ÑU¦eÜøF÷mt}”]’µí­kÕ<Ù¯É ÚUd²&U'æàr6ËFŽË#ç.ñå@‡å€‚3—Èr RÝrÀˆ!›»ûè…ñ ÐUËÕöW®«ëðuqG[—êfþïýÝa7Ô$þa¯/^~]èvÝÉþ¿,N›5ƒ9‰t^„(F‚Fí"c$4·]ý‘øS9ºb•+~ÔP æp(҉Ạµ BŒ¡PãáI¬ÓaõcÅkߊmv.$§õî¸éÎ{î O Èîñ•'wæãåg*Á–@Y<$R; dÄr™ í6 €PŽÃïN›øçe‚KúÉ]@ªi8S“·IÆj!1«…`3Q-ÐȱZÀȹK¼Z ‚ê@Á™K¤Z RݪȉÀª†iåÈþIY݉øêpßÅQNš²¶Qü|·;9ÉÒîÝä„Ü5”»ìB`dQNõ^åì endstream endobj 1118 0 obj << /Type /ObjStm /N 100 /First 1002 /Length 2141 /Filter /FlateDecode >> stream xÚµšÏ· ÇïûWèØ^ôDRÔÀÔp/-`Ä9´5|pE4Ø-ì5þ÷ýR3;À>µÍÓÁšï½?"EQ”4”XB ”8¢b‚6¡ÉÍ„rÉ&´ m<ÜCéö°¤ÐˆL Ðñkšå’@£vû¹ªIø#}4@sM£þôhUF üij-2x½Z‹LS³™s2Ft–Æs9p=È0@‡–\mkàZŒ‹¸ÕñkÜG_4Ó$ ÂCŸrá † ü0ôi¢Cº&eèSx©VóŽÖ ­¶-Hï£E™’I%…ŒN›D!ËpSáñP•µŒ_3œ]ǯrm¦¹”Ûðw©AS²A) Úôõ p¤š‚J¶¶p˜fµþA•jé`T ZFÿÐ]Œãh¡A;™×j e¼ZC¡<¾k¡° +RMÆ¿ 3&Q(%™¾Æ]&0š„Òl@:^zÏi¨f4¤*mZj¨<úÒZÀ=T¾ê)Ô2lÃðÔ*Câg˜¯º„ÚG¯zÍ $„Z#ôB0B :ˆðcpÔšlÏkèiÄœÙiÄÐÇèö:¡‡žáL¢”P¦îê5±I:h&IèÝ‚ÁGÍ**£Í˜Om4‘nvÒ>ŒÝí‘aQ y ŒÍ™1¡š+xtQM´ÏæÃŽ?ÖŒí³˜%ÄÆ:,#µùCÛ¼®t÷âÅÝå‡ÿë>\¾}xx|º»¼ùü÷§ñùO?=üóîòÝãÇï?†· é ½»»|ÿá)¼en1[J Ž6qYj,69E.Œç¾ /^„Ë›pùããáò2üŽÓïÃ7ßÜáÿßÈÌÃz0•cFœL™t#S[4ÌR£ [M™|#³r씃Ù8ZO™r#³ÕØ07f¯ÑÒù”™×0IkìÈ3Τ¢±çò,SôFfGÌØäÈ`}ÍTé ³Ýˆ$‰Š”IR"’9V¤(Ê9¢Ï"éְݧçÁܧç”Ék¦çÁܧ甙×Lσ¹OÏ)S×Lσ¹OÏ)³,š*Îô°1뢸eŸÖ/q+r~Ü:ÓãvÆ\·Îô¸1WÅ­3=ngÌUqëLÛsUÜ:ÓãvƼ1nQBÅŠõSTߊ¨ˆFåçyÜñÈlÛyœcïWx«ìK%æ¾ó(GlNµO;–å²ó’Ä.õ”’ëà5Y6žv‰93/àCØ‚mSŘ%ÛHÕHØ#)æG«Ï3¥,²Ñ™fã„§iOóN7r+rÂ)eÖÁ£›xãq‰-ó©s^S‹¶Ó<*QèœÒÕy¹w䘲ñ’â»sý‰v´ãeÌG¬U§ä탇µ±¦-^²R,UŸå•¾†'ðgÇfwð’Õ:§ºSàÎLNàÎ’OÁy†‘ŠÌ’#HpD§ÔQ‡;Ñì›Ð­R0ûtw'2[nçŽK´ÓÄCbKIÎåa‘å¼M>Á¾Xªœ.‰°/–/ñ’Æäx–™e‘Î4g¼E ›ÕŠŠ>x\°Êó FÙÇÙŠŠ§ÑtåœaÑÁb üÎC2mõy/ŠQFá)uç¡È–kç(‹ Û$¶m}°ýa£+æ-Zu§lË»Tq»‚[´üQ·-ï†ÃĨzÅ™7fë¬)ŽÓqT€U[È%E»h žbåvJÎÎËÝ"8ùºÙÝÄŒyã(æ–¢Ú„3±üV$ÔóÖCc«’ÄN1v¦¦±›˜3o^}Sd;Åp&¡ÌÈs$¯Y3›|¶û¸}Í  ë)GÆÇ$q¤]4Lp7fÔ,-ÚÍEAÚ;¹ÆZìs¥ôSª¨¬È6v7ã̱ØÕËŒyë@¢†b g¢‚Ëvç3cÞêÚ†BÊnœ‰´'vI5c.*rœy쌹*­;“ÿËX.*r;'Ú‹ÒIú)ùõàåË^äPn±¤sbõàIŠ´9„išêÉ<&T[@\M>wüPÛkƒg§|ÔOͨ™Žvœòµs§CC†Áì7\MŸ_¡r^“ØjAÁOG^î´_Y3­IkNܳڌ(k’ÚNôœ6!ꢺ߉ÃíWEãËð–ˆ2ô}.ùëß‚½_Á)<|þùçwÿ×C¯žìVè¶=ûªq¨»hÓ†ŠoüJ¡È¡êòúãã‡7÷0+\^¿|.?ÜÿòÞýÚ;¯ßÿãþîòïž>ÙK £½9äÓãçîÇw´}÷çûzÿÝã/›Ûlí®ÝrÅë÷Ñ:t­ÛsÃåŸÀ/ƒXwÆ» »P]h.ôM°÷@v\`ą삺P\¨.4\3¹frÍäšÉŸa†ýögØéìtv:;ÎNg×,®Y\³¸fqÍâšÅ5‹k×,®Y\svÍÙ5gל]svÍÙ5gל]svÍÙ5«kV׬®Y]³ºfuÍêšÕ5«kV×\6Íïn¿{+•b'=îÞ êårRÂõ»·ƒ¹ß½Í˜Z1‹À>ùÂ,vÐú?ä¤ß~}[°‰î%×·0¹8Ÿ’uýúö`î×·Sf]s}{0=„&Ì¢‹†Ó™>œ3æ*;QÄŽ·»ÜN²×jåEv:Óíœ0K^d'Šç„Ü~Ø)¨!NºF:ìt¦Û9aÞzõx0Q´óW®EÝ~íF÷Ö2ìp­Õí_^Ð)„"IèÜd»#ÝÊ rY®M ; ¯> stream xÚíÜMs¹à»öAÈàÈ1Én*9eSº¥r(ZVI$µÅ域áô`º¥¦Hµïz›zUÝOˆ”\uÃ?r»•×ZDVëí§nüÛï÷«ã¿üûïŸdª» ¯@å_®?ýéWkW²±‹ruýue¥‡ª®ïVÿùý—ÿ^ÿóÓ/×ù+Y¥˜‘‡ÊEfP+é…’Ö2‡ïÊ#¤6Ǹ_¿Dóù»õËÃ~÷åJ{ûù»»ÍÏÃ÷p|©Ú8uxéU'ŒR´ÚÆãËÿz,ÔrDtnŒHeÃ+eTDzõËv¾$(TÝðméá[kþüåJzyüCÍþK¾ýÿþ@/¨t¨àEºè´6è7„LÕW |T¢à\ª/9ŽGÆErô¢S‘›œªÉ3;žJ‰N8·w(:é·^@aI=æb)å486Õ‘XxÉK•¼À2,¡&È‚eýíñ·%Ep¾qIÉH åÊ(å´ 8#H¼ä,£J^Èè†V›ŸÏ}“q†ŒÔP®ŒRNË€3R’”ÁKÎ2ªäZ†Ð¡Àøúü‚¸°Ã)Æ6ìóGê*SG©&qÀ1)CÙàÅN4ªØ… ?¬*ýÃ÷¶f¼͘ÊUQÊipFônÂLÎ0ªä… …ò`ÑØ¾¼Ü4gÈH åÊ(å´ 8#¥I¼ä,£J^ȰAxd¼Üà' Äž…!õ‹¡”ÓàX”"1ð’3†*y~A¢°zøšÊ çÒ“Ðßx$wí‚äÑI%ŒgËÕ4±cÉq#¢…±b3°yìb±é¤ˆ23ínäâw#S¹PJ9-ŽMÒgY^r¶R%×XL”B;€eýíñ_íÌòþ3ËÔP¦ PNʘÍH’OÀÌäIF¼º!=ínäL©¡\¥œ–g$-)ƒ—œeTÉ ~8r8_d´Ë‘K\ŽLmåú(å´8)éI¼äì£J^ø°Qx |´’3WŽÔP®ŒRNË€3zeOá%gUòB†‰B:Wd´’3e¤†re”rZœ‘t¤ ^r–Q%/dè œ´EF»!9}I=äb(å48–W¼äŒ¡JFoHLç„5éÔû ï†d³»ï7/íi÷ÂO»:*¡-{ÿå$¬©æxõFÞÐ3“'Xur½Êè EèRêæûÓÍîþ¶\Ï>¹Nmåú(å´8)Ež\™ÉÙG•¼ðá¥PÖAëæã|©­\¥œö'õÊúÁKÎ>ªdtcÒÃñtº§û·/ý¾[?íûÍ];ê¾ÿ¨«•1²¯O@9(ÕŒ½wäí<39#ª’‹Ì ÃLïädlonoÚ"sþ"“ÚÊõQÊipRŽ<ý2“³*yá£Ó"D_|Üöír©­\¥œö'åèC /9û¨’k*êÖT|¬oÛÏ…Ÿx¦3±€rËll4fò„¥N^` Jø°l´ÍæüÅdj+×G)§}ÀIYr³a&gUò‡WB;óq‹]»¡\hB^3‘ZÉ5QÊip:–^3xÉÙD•¼0á¤pÑ»çýs{tyÿ£ËÔP®ŒRNË€3²ä»E˜ÉYF•¼a¥FŒíÃÏvKÊÖ‘zÈÅPÊi p,–|S+39c¨’g1ÑË•3NxöýÃKû¹ GÄá}|>ØÜÃ7>·›ª¯@ùBDý%"$öiafêáÓÂu".AµRf =}­ÑžKNÀ‘ÚÊÅQÊipRΠ8x©#Ž*Çqøˆ&¸óêé;†ã©­\¥œÆ'劃—:â¨q].”óf¿ÆRÛyóófžaj(—E)§YÀ|Íॎ,ªD”…"Z e½ßýh,ÞÏbj(“('YÌfdÐÕ‚™z`Q'â,Âð§õsOwíÄy¾1õ+¡”ÓàX úûi˜©£„*—à•°àž¢¿oá—ºÏcM=æJ)å´86P)¼ÔQJ•ˆKqPåÚ¢§/Á›”V‘cW¹4r5-ŒÉ ­¼ÈÑÅ<gaüxv€.nž‰ËïØd¼f!µ’‹¡”Óàtð#'3uôP%â †5Àvó…âöißΧ¬ ©‡\ ¥œ–Çbðƒ—:J¨q J ifÐ3f[Þôpì$—C®¦5€Ñb`EŽæq8Ù ïËÐûçv̼ø13õ˜«¤”ÓLàØˆc&/u„R%¢RL ÂH°}´†œ¼}L=dJ处ÙX4úhÊL=H¨q Á‰núðÊï»íÍ÷Ç}»»:ãîjj(—E)§YÀ™ˆ²à¥Ž,ªDœ…×Â…¼• ?:WfülT3Á{å%ušë¥”Ó^àð,º¡0SG/U"îÅI¡UþÁöq·¿Û´eäŒe$5”Ë¢”Ó,àŒ\‡²à¥Ž,ªDœÅp~ˆ6ï.ûmû­P{&Iýæª)å´8B«P5¼ÔQM•ˆ«ÑNØh‹šöKÜ‚Nmåâ(å48)ü ÌÔG•ˆãŽJ«‚£=ºœ.!õ+¡”ÓàXˆe‚—:J¨q R§‰²¹> stream xÚµ[K¹ ¾Ï¯Ð1{QKIQ€±Àn ç’ÆÚ‡$†Žw°Xd1Øc`óïóQUªîYtõ!£ŒiÕCüDФø(çLRÈ™Ä5Péw,îwZ`Íà¶ÔꃴP°Ô|PB#¹pȉóF~)ýuЦÚßÇe±>ÁB–ÔgàRÉé3`kñ÷—ÆþSÈ­£s ”:æ@Ù0°>,¶?Õ@œÁ€PŸk”ûÓ¨ŠÏ•ÈÔŸJÔÌŸ …’šÏÅ+…:C¡`ˆ@¥?ÕP„ëÂVQéïAJµv*-3ª)”Öü©ràœý)X`_P&˜ÉÙϪ1Zƒ¤äëS ’sÚ‚P—F…ÜK—€„Õ¥V)ˆôÕC$¢}õ•nõ¤‘S©41;§¾4Œ,(UßðÚ‚–gKA%ù U%ö­¾)ÙJPŸaŒ­¯}†„š¬ÏÐP)9د ß³P¹ô-TŸÑR¨ª>£åP«9ÀkK> e)ûŒÆÁr_}“`ÔWÐ4XX5Ö>ׂIçÂ6õµH™9=‚ZXËä# -9G·ECaû~@ [Ñ>CCã Ý…ž…&`# M±ŒìjÑ,ùÜœBk¾Gä[‹}óÉŽ”ºâ’oA"W7ÊnÅwŒÜº×N’˜ÉU6Õ¾`§˜¬¯8c³SëKîÒL}ÍÝHV%¢n³>Ãòi}רú´n}Z·H¨Ý½zuwzÿßÿ܇ÓOw§wßþõÔ¯ÿúëÿïN?>~ùùþKøàÒÇ»ÓO÷ŸŸÂ²]©˜-B­¨Õ˜Ü#ÇV¯ý^½ §wáô—Ç÷áô:üIí»ðý÷wø÷BVŠÍ£h„É(º.2s””¯BJy!äàr…\Þ‚äI¤1É…d ãW®b™„™% Œä…Û±˜I£¹›˜»\Ë¡˜E)Tg`–š¢ÉuLž¤µðR‘á@†Ú·DÇò90Ÿ70%MÂä[ÉgLn±íØÊ‹ù²-9²ÛÊmi‘¶• sðy S'aR‚mœí³Åv}20âU¸>ÈXRáè‹áS`ûĆItOò$E"# ÙxÔ‚½=˜Çé<ÞÀ{©]nx8³t.xð Å®Û$·92“ˆðb“©4ç1*Ó <ÞÂ{©L7¡› _·ñÿ£ùºÇé<Þ›%Sè¦8oŽWsDòq/·Ixˆ =Ðíx8¯˜¯G“y’í ΫÒ.ôçâõce:0Çx³ü›œût¡§Å"µƒy˜Îã ¼Y<"C‹šÏûȵEäR‡ò¸a‚Ç[x/åqÃ=/pjqÇ»MBƒf².–ÏR#—ËŸäÙZR\s5Ù‰¦&yï‚SD‹Cc ¢,œŒ‡j̆ oáÍÒ˜1v$rÚ0‰b*窆’ß¿~DLJö5§Hå\¼Ñ\#íÄk6Ršuï½A&EÌ=w¢< Óüd:×Q¤)NŒëg=Mªÿ N £s®ï¹&;V¶Ú"Õ³l¥JLr½^D“J«"Ø¿r®£ˆzmU‰l6LœŽ|±áéN%Ï‚L9¶|±:´ílç¬rCš¡å\üf®‡¤Sf5¨íEÙÚ4Â\ 7LÄÂtÙ„¨Ó^ÚX'aJ‹5ŸuˆU"79V¶ž*ª>o¶0_ÇÔy¥ç­ÒÊ¡ûYRG½(­Âåç²ã&¹>Ì !Ɔ‰ûp¹×1ë¬6Ü­^`Vü>–O*1%½([§XwZ:É÷w·—¥r$%´&è,r›.d›xÕëû©“ö“ÜßÊ“ì•Æ´-퓪H½®C2I¶T±r42à÷ºOY|º¿M˜Zq„Ó¡-Xr+çV!TiD‡tš/Ëôu-x™^vÚ’³ ž¨ðZnUNyäu}åIx°}okwôôc"x³å´eDÞ{ßÍbA¯ÕUœáNò¯“Œ½ P’¼Š3 œÙÎ7U“Ô¥˜Dÿˆ·w7B:–½ê¿º6o|Ù±±‹®Å´6‹9ðNÞ=Ë™F/«8E¼üx¨µ—"Ñ?¢íx\à̮˳ЬfX3[åYp¦yÎÒ—œàÍ–Ø¥dœƒeç“¢IÞ…šÁ›­òL o¶S3™Ô°%ÓH¼Ä.Ôpf:¤a»áÕw¶È“ áNÍ–&¶¤îl‰]Èk5{õ Iö>òÍŽw#×,ùÍZÿß»ÍÚÿÇõó: endstream endobj 1232 0 obj << /Length 49 /Filter /FlateDecode >> stream xÚ3T0BCKscc=K …ä\.°hQº„äÎeUgbl¤±*OS endstream endobj 1253 0 obj << /Length1 2141 /Length2 15183 /Length3 0 /Length 16457 /Filter /FlateDecode >> stream xÚ÷P]Ù¶€ Cpw·»»÷àî¾qww îîÜ ÜÝÝ‚»Ë£»Ï=é{ÿ¿ê½¢ ö7|¬9Æ\rbez!;# ¸­3=3@DV˜™ ÀÄÄÊÀÄÄKN®bál ü–\ èèdagËó/G ¡ó‡LÔÐùÃNÖÎ íb `f0sð0sò01X˜˜¸ÿÇÐΑ jèjaeHÛÙ`ÉEìì=-ÌÌ?ÒüÏG•15€™››“îow€ ÐÑÂØÐ kèl´ùÈhlh P¶3¶:{ü¯T|æÎÎö<ŒŒnnn †6N vŽfüÔt7 gs€Ð èè 4üÕ0@ÎÐøOg °äs §äÊv¦În†Ž@À‡ÀÚÂhëôáábkt|$(KÉäí¶ÿËüc@øÏ³030ÿ7ܼÿ daû·³¡±±½¡­‡…­ÀÔ—apvw¦Úšüehhíd÷áoèjhamhôaðwå†q!E€áGƒÿiÏÉØÑÂÞÙ‰ÁÉÂú¯ÿ óñ”ÅlMDìll€¶ÎN°Õ'já4þxìŒÿœ¬•­›­çÀÔÂÖÄô¯&L\ìUm-\€R¢ÿ1ùÁþ‘™ìLLLœÌ ènlÎøWx{àßÊ¿Åx{ÚÛÙL?šz[˜?þÀz:ºÎŽ.@oÏ+þ7Á23L,ŒF@3 [Ø?Ñ?Ä@Óøãð-ÜÚL³Ç `úë翟t?ÆËÄÎÖÚãùßçËøE^XVI˜öŸŽÿ«¶sxÒs°èYØ™ÌLé9?>xÿï0 †ÿ)ã_¾R¶¦vîªýxLÿS±ë€ê?ËA øß±äì>¦ ú3ä:LìLÆ¿˜ÿ?úß.ÿÿ&ü¯(ÿoCþ w±¶þ[Mõ·þÿGmhcaíñƒ¡uqþXY»5°ý¿¦êÀ–VØÎÚäÿꤜ ?Ö@ÈÖÌú¿ÑÂIÜÂh¢`állþϬü#WýkǬ-l vN]*zf&¦ÿ£ûX,c«‹Ãéc ÿV?öæ§³5¶3ùkÁXØ9†ŽŽ†°GüAìOæM4ºÿ=ÂF[;çÀGsÞS;GؿΓƒÀ(ô—èâ0 ÿ!N£Èâ0Šý—8™ŒâˆÀ(ñ‡XŒRè#¦Ìúˆ)û‡¸Œrè#ƒü‰ë#ƒÂúÈ ø‡XŒJè#Ÿòb0ªü¡þTÿÐGvõ?ô‘]ã}d×ü/qd×úC~†èÃÏè}øÿ—Ø?tÆvÖÇù?6¶¿$66üÿ:gF“áGoÀáGs¦þEv.ŽÿÒ´kö/üˆoþ'ÛG¿æöæ@ÛY|È,þ…%Zÿ ?ê·ùƒã¿|?® F»?Ñ?l?^dÿRTgÿGýqÔöm÷¯æ>ÞŽŒÿÂjÿÕ óGiNÿÂÎZÿÈílîü“ïc Ýìþåðq0.ÿÂÖ\ÿ…åºýA–o÷áGx?µ¸~:þû­˜±‹£ãÇ;æï+ðcÿþ‡ÿ~¡î@cØ¥y;cÞ@ËÚÀö‡j!<7ú½ñÏ3ä{ê)ÔôžKŽ.OˆP‰Ô?2ü7zWwĨn—‰^=[ê¡BZãÛž½^ôc•¦öÚ`'1û' Ž…ê~ÀàÓ«î{½:x©ùYµ€vJ“ç8¸p!*ä¡=¸õI¸×ý*[ žßSÜÿÁñî¥lš>J5Rǯx–<×(s›Ò™žšõÂiöön5{âH:–Öû$еÐSk“%úqîëZ… ‹SŽ6Ø-êè…§ða’4Ö‚gIQäÆç…,ΰïƒË}qs_ÔpH¾)`;–ÒN÷•éD#ëÊv3Nw´V3žPPÕA{‘—H˜ÆW‘•ègâ[ø<¾’(Çi€šÐvtvœ©vÒ2"=Š M*_Ã7R 'Îj©øv‹®òee™>­á>s½.RòŽ‚O9ód£É‹Zõ7±@o–V¿·p»Í>PŽÖ¼dȸœ#W°xgÀêƒX·š·°R€ïm`õœ…ko^ê~ãä[˜² nFá~\Ó+Uk>KbæP©ªŽb,´F}ÑÚ¶Q ¹þÙ슀xc1QnÕ‚1쮬$³‘ŽìHφÿâ)¿R4õ-j×EÝÎuí´ ø„ÐÆ•’¿jsöÀ0?»c£R¢£·pã•aJ Z°%¾Ž'(—x\ªóÈѸÉç žÜKbÍðò„Gv”5¶i²à÷®éçML²Õ³^î€D9 -åú”}îâѬÌ%5çP’Á½|–+ ØÓ¢û¡¡ 5_Ç!‰’ëÊT*‘ŒtH® ,þM5±¿Œ¿p±ùiûer…ä᫵-Vªr×1V;Þ‹“*ÕÍý%ü$¼@5(G¬;Øo­èa›3Ù¨i@I“&¼ÛÐú ó®Ö³­e‹Û‹>4$n/óîž4)¤,áJtöq:TDîͱ|KìM^>Lòù,²§ÌƒªW9FztðNbcvpïü×H{@°Ã„°žs}L‚(¶t¡ÏíY‰¹fõ¾úlµ”d`¶Ë·°ßŠ3û†\¶L%í%p?ÁIXΔɫç…Ù.rë3Q"¬× mÕÈûü&té­ÏE—º?‡dÅû\ºƒs»é)$‹¯åeû9}h]Î8'…lØÐ'Ü÷J¥K—]ÊûW¼-m”õy@ùýÆIÃR¥ßcÄn ȳ]&ç­’C:gžK®¥uj!³zi¾§æuàErÂ0ë:_ƒ1&Ì?ˆâ’F>+TõÈç±½²¦öe¸p!#9%ï—úüFaúô5 ñ诹õŒvêÛju&ÖQ0à˜o s¿(7åêDt(q<Ç•B9Cf*–»wåCŸè5¦2ÜŠÞÏ|Ä7a‹Ã#mGúð4?íJ ž:Cx§@ÅHqI‡Xt”Æ“²1vj^ ×¢Å1‰bC·>e®ŸîuwMÄLøò 7¼[€òFÝ´N}µjÌ%ì{쀤ãsûšÎ#ÄDÖÊ€ ]L¶‹¹Ã3¢Rõ(‡¯®tè±uGS¹È§LSãSü]GƒÔ”H,³"æAèn+EÑÞ”CëtÁ{ÛL¸@¬Q;Öa´6€w¥t[ÂoˆT ¤hœç_Þ#Y.ŽçÑWâ‚)ÉPêáV.ÛžÜUàMq“Ôqa8Âk)ü=âÌ^µÐM8]}a öú”¢PçŒNÕ Ú˜yþÒÈvÃ]Ge2%ï ÔÔžç¶{C|7æh†(™Èz\0îUUê(j¸ËòëñFËÌ‚Òg2ðŠi —È¢žÅ0⻇Õ5C[äËÆ—¦fÀ2m܈ZêWz‡¢•84œÂ°UN0Ž.²Æ_^<†S—– ÆÍ8„§Âü–ÏÓ—œ)=¦žÌ†)ŸÉ/÷uæW6½T•Ûßî Â89N£²iʰÌ÷ÚÙüµ¯%“gKÁ È” =˜‚ñmJ~+U5QŒóíyfŽøbÓœ›ÖžùºW;j¼¾”:¹Iƒ5'OArCÐ/¬4ØÜ'QUÔç1Z²ÂÝß ¾‘¬¾;í „$™Û¼5?سD³Ø "QÏt¬ßˆ˜QVçc2ÖÇñÕ1±§Å÷çáàGÞ[¿7³ö`+µí=fOÒw£8,§-×U‹÷GAµÆæ†`"…EnâÈh–·GIùt‘µÔ9a½]Ô¬g&é4Gk:·/ƈgôò«”6E8øén¶i½Øs>[ß3@ƒMÓd—H ÆÖ'‘½[áÕz–èûÞÎB#ϲ»º³pܘQ-ûô§ôŨÜI­&Â}–‘FEú:  1‹°6 8«:ŸŠnZÎãCP“\ßpY3¬üþ~šr›1sÃø" µ>¸/E3dÞG¾+ŽkôÓÎHÓ‰E¸W¸É¦͇ǖW+5`õ9ÓøR›i·ì‡[¹ÍáÉ]ÛÄ77œîd)<øßw¶¤6ü=õ I P¯¸J˜ÁR¦2QwÚ­]ðˆ²àɉmôcí—ÅE¢à Özjô>=m‡Íȸб-3ÚnèöûIE]P×°î쌠!`zÄÂ-·<Õi[ï‚;2·DØGÞ9à¦xã~£ökjÇXšv½½†Q:Fºìì¾Ì$U’Y^çî¾ÇŸ‚¸ËRC7q|¬ŸÜéãXr ¦“ßbÚo¡<ˆªð`0¿z S\ýŠ=9rmÁ­8HùÝ$š/Ük½• ÇìhŸe¥»Qó=¿­Ìš©ûX?ÎJ\s¼i íïEûäÿM_EµýU7ìV-÷>iíÕÌB”’t^;{½Â)+%þÕ{)äü§b ¤9‚Îvu0нz,ýV…LhËïJn™« R‘7Öô—Ùɾg¥Ó[>€Zã—sMpv'²¹Å}Þ¥‚¯é‚]ÐlGŽÜz< XNÄ$£“|¢kžUå"ûÕd¯·÷­N-FËúc0ÅU}ia½rV ž¼Ã™»dâö!É£ÙJ4ø9¦`^jç²| —ê"ú×±®ùÊÂâúø QŽXÄX86÷dÅtqå0ýÏûÁñafÜ¥P#÷^ó°¨ÅÏŸTNä5ׯEÓþúzù2¹°„©å‰»ÚÍ¡Gx!ñ=×ÑX÷kÃ<«=3 ÄîuQ1í"™aà¹0IÛMâj+£ü‘YO7º‹˜ÖïÀm’3$ÇF«šÉNÆië Qrª2$Î.k)f¡ÅZª3V"k屇Ԓ²¨@U¡£à~À]ïžYÄÜ–ôžCÕÍþøHÌ@ _ßã§ )ÂøÞ²ª¿¸O ¾pȃo‘ ê̦Ÿº¼ó=’[Ř6á€ï3×§oÊëÊ•ó5µ¿¥˜ÿ$ì‰Ñb‚ ȱD9æüñš”.¿[²:î²Dœût¾lla½;öª>ǘh޳íÄyë®À#_{þ§ÆþûÁm**ÒTÖ¨Ÿï<¥'I=A]8Ÿ¥Þé°ŸqBÔˆçî$xiý\Û¬ñâÀiªûa&ù5ܸZ‹¹s þDŸ±ˆåL£Þh/D8[¡¥ïm!‚Ña‰Ë7ò½"`^Å”~'yGC/Eåƒ],á¡Ûu£<–pØÍ¨°û¢s}¦ËÃG^Ë“E „Éb]¬TfBP«Î¿3¥ÊªõíMAãwšïfb.ù «&Ù[A'#‘R|¥€Õ];yO˜_ÔÞúýÑRÍS»Ä tAˆ%xíšâuÑ8æ:4 ©Í_å¬ô%ºWŒÒ©Ìí9Ösþ ¼¦Y…33ö4ð% )XØòÜmãHiZ÷*|¸ÅÅ>i ÈŸLÃ|Û\a¾üŠ?üñ}÷W?§G;J¤ •$J~¤JlØΞ ÷0w‰%r*Œ3U(ÈÚU:KŒá »W4¿ÙÒ¸¿[‚ìé}¢Š½*Ò–Öõ²‰5å3¨RDùl‹ËÍÉÙÎ9&œÐ "¤>šã5džSrP!ï`A»—“ŠÝú”ÍJMó@–±£hQç<³Ì Æqí“ñCX늟*ײÐ9 i iç|ù9.ÁÃç—Á'ÑÁòC·8ÕÒפ m\Ÿæ¦½`g EOT€êDšÔÙ]ÒV³ß¾„Ê xƒ€€ý©YûWe“ÌêwÏÈAëˆj{ ßÝ1Œ¾Áb¾ßd¿*/‡ìƒŠÆÉÎD’’AÏtùõ¡nâJKůAÖŸ šÇøPCÆÎÀ©_)¯€D‹%VÑKºF3‘™ ƒ¼3³<:L9âÜ4ö?8•ïmÕOàîOí6têo³Ô“‚¦×É9µ¦äc[‚6ѧ X°FfJ0U [¸©ùI-¼ýzßÚ95h}¾ õÖtã÷T+T¦Ý*m¶c5Æ#¶3Ìò!^‰pz“ä¡£„ð£ñƒãShÖ‚„D#rõqdHk`ЉšMÈ]âŒóo‚Ô¯‰ÁNÄKAPJüñNi~¥dL3AÉÞ3¤ã$ô‚ÑrôË>K¸„[÷ÚÊðÖ…wåùméÖ2Ô_…‚âù<‹`2.ïïXno F<†•yY 3ãè;|A2W\„4¸uºpËžiï4¦QÖ°¦P_kò/1 ¿S‚²®%‰Á-­´?Öqñn4ôðçzÏåO¶öâºqîÝ;dÑýЄÙUCÍÈ^QËýïs’-·; …¶— ˧ÄüM«ƒréKA§Ñ:ïtŽŸJÉ›bŒM;Ä?ðÔŠ¦l´£pÓÓrO§Gç’;“„ $§ëïY—/XÍcÑB+_pCA§5Ek7k®ºâ9¶üNSÖm[oNüa=ËȽ¤9ž掉.bª!­~*cŒút2“®0etÒÓk6цé)JéöϪCàj‹&Ó¯9FiúêtÁÁŠà™SäQªg‡G$®>ZzvyÝ+"5Áä=Ý¡ŽÝk;tï:œ\AãÄE–^Æj^Oä§4ªÀ]#a2¼ºŸˆ,BåÀ•°2²ŒÝ¢ìEqò„±J´à¬nBDñ:Np`F”b^øMôÍ‘$\i{2ÖwgTw®–-¾KÈjè šÃ•ö(‡؉„…Ô…IÂzÕet¤Ñ¨ žq%ä‹©|ǦȤԞpqC=?8JFV}¡ÄHÁ^a§Ú1:ËÃÍPR¨LÑXA¿¤ºêæ–åº"ÃB'¸+pøéÇb1VË/^å,¦E?4埲ÜmóLN{úÊ_€¶/¢W¡yZ$¯Õ§Í+Ú:î/¼Õ ¨õ9$ÿp†ó°¿Í¹ë¹ ‚÷yÐLœgXÎþµ.R_ÁþKÌbŽßmáØ¼/üÄvLpî+6g?…6ã÷ÚÕt¿ïíñn”ø 7wˆ4¹Â´ÒJù*lsê‚\HTŸl^pà³›¯æaC~Ï÷<wšÄŽOc½Gu<ÏŠ2é’RròÚVóz¹jf_%ªívÃñL>T½8ÛyS¿6yF½¨=»Y(a«WìfЈçf ” ]Þ§qsÉfÀ[\—3Ô?-ÝØÉf¯slÑ.˜l—bÛ¬‡îŽçM#êÙ°`F¶&H{éthB<ÕEõêš=¦_‚ÜÛ›¶0»14ýjšHôë7ã<…×)/-‹749ÌŠ*Éá8ƒÍ@Sª¿€ƒ²TÕ9 {¼ÊC«È Ò˜¡!]6l(÷ÆÞˆé¸Ê¾ã2Fг¡ãõŽQôošâ_/i4›|ׂ“7s\ß~]•áù4\}èÝp|·i+8~Ø„æÂë§§}œš!M¶u}|¾Ž5ƒ×µ=E'£dÿìˆÈ\³î/Tßuÿ,y¦íÊX‰ùqè³ CÛéé^3z»ŸvÐAKVOî|06è@eÞ¦³P­-!íªÕÏ4‘¡†bSN{?ã ÄÄ2x‰nÝå0ž^/f¦]¿‹À'39 E=)x¿$מÝgSK!ò3ŸãHê,3Å*ÄéËËÓ.D¤¨èÓþöÂ?‚ÑÄ5_¦}ž…Uf/;Ö4î~íøIÿP¬\¨lÁ˜4мK\Ð'r:õû¼ˆwÿÙÝq$JŽ"aQó¼Bµ¯÷ÊÆm‡R­3Á>l…ÐÜŨ!”d&¿†%†€yÀMÑ|Óa#è¤Jœ³DK_©|xÚø'ä²J‹‡^ Î m›îþÄÌ]nT¦¨kìÛ¸‹ÕTÅÇšSÙtÓɻ؟$³Ê† ÒÄÖ²±M4½ñTy~ÍœÞá€íÕ¶·²¢>wÃ)šZÆ­u£Q G”ºÆ¶u+uÔ¢lœ ‚ÀQ>™õóïÚåëÒÕ•‚½©Vÿ{ÿ[%z)‰¼öOä’ ÓMŽWè³ÅV”ÚMA½Îy”FòC¢kѾ9̶O=Ú^-.8zƒµ’bô™0=uàÏŒºBV\^´ˆÕF¤•Ðé-ÄPéD$×áˆdɬÉÓ,èù f½ ƾì˜AjôHÛý;•™ŸGBþÅÞ6Lë€5äiM²Š~ÎÁAÏC,¹Ú~¸ÛBP[a8÷6òlXZ&˜Éè|œ^ÃÈ~Ô!F3hÀ:Ï3ž˜œæˆDã"àí ñ*ê¯Fæ…Éì¹~j*êÎÁ?b¹‚p° ˜†žúúÙ-‚£û*2´ “s±"w,F’Lv».tôgHX‘„$yBv95ñ@¤‚PÕïФèkñ-¾O¸å5œâg²îLößÙŒ5¦ÆóCÓ–O‰a‡Ñcdä!ω‚Uè´:Å”@MœTǾî"p\6¹çi²NºÍ>åŽÝæõ™×GAÿ¤4f³`‡Ý¤ZÑíe¼®ûYqÎSR0&ØÛ¼&éu`–*%ô»paã­ÕËs FýýËIƒ‘Ì•h ªÒûš}¿ÔB*N´“n"d”áUût¢OmJ©M^é¬;=#îô1i"rO|ØìòPSõ5[8îS•äÏÐÍ-«hfý"¾ ‰™’C‹Ÿe€ŽxÓC‡io£]ªü0mßÞO­©8ófª 9Ï.£1 PCÜmÁÅ5Ûk«µí¨¾øÒÑcpÈ^ø †( ÷CôzëìCŽëµ8ì*##–²{‘/Ýb}WñVå¯1zòSЂéiŽTj¡°Í,Þ(ÐlzOÐ8?L÷×0Øc8ŠÔ97 ß ·1Ë.D˱@À2¿Ø†Q'/Qár(, `rCË!¸±ÓzûÇ`Í=èŠ ½[H•Ta1´póüN4|JßxFº²lK oÁ³Ú¶šƒåwÆÒ.fªáW³Eþ2µ‘¸pIýÝWÙ\šô\§:ýiO„ªÊ´UÅôë<㓱Ivõ£î †’o´µè*é¢;c†üå8Hqâ ;Z¦;Ž/e¨òÌ0µ­ãp<íM×ϹçRQ‚+’ÒëCClbó A³<‰êÄðs û¼ÛeT$ÂrÆü%liy×Ká_N½˜U˜[׫\»~x‡–‰Ö dmù’{ÒÃ}¤I>Á*Xû ¥Å¢ž$X˜7>ºC5ŸÁ‡n%£ªGÕ‘ßn ”ù‚Q¤-;¥’Rßn¬ªåÑ¥ÐfœÙ©D«4?×hÉW†4— ù ȼ²UY‘Üj'½ ÊÑèJEgEa@E”·å·ŠÈ¸Z µØ€„QCÁHl©„\ø}U¿Q˜¸ü zªDµàžðòºey½6.•~Êu… %ôjÂQ%®b–(+‹ŽìD›EüÈp~96¥ËÖ‰Ïl¶fãî$ðô@7EhSù-Yë¼®‰E& «@…ë±£pô»Ö5ùPâœÙ@T››÷5˜½È‚*©¥Y½Ê–6ycà5ì©kHç\œ§£’Ù|Jy¤è´h (; ËhCÿMv’| ,×RÞ¸\íÀÞ·#Í2ôùâéÕø«0 É¡ØüŸ˜ëeÅN³ôÇç*pAæ­Ò:u…v\ –š|"aVÊå8`’Ç5}ÄX\¿ÅŒM£˜µÃ jø®˜¿â<õ”¬³ù”·ÁGYÄšÁ°1çmQ'¢Ÿ£7®çä\% ÎÛøzcø]93Ê›EÖaÛoå~yee¯GÐB­wÝ”e…ëGýÑ•vÀ~ÜÁéá™Ñ´ÎÛ•Ý*ú %,åfonäZäYÀSï5(_“ÎùúÙ¦6.L:>ëEŸ–&æœÇ¡–*\›º™ë&þ1çëZ Zg8Í3÷èû7©ÁnÍNÑÏ u› µ@ü¨yµ¤üÜiÄïc¦,Ì­­…³“óPnÌÀ¤f¹xü¸–—bâÑ®ThœzŠY1½ÏݧA¤çðO]ÒYQSI waðï`Ï•Žš5Ǯޞ ø1ŠÔ1u¸Ò¥ý\£tLÕ|ÍÇwÁý¯éÙp0¯ð UŸo|ÚÚ}(£= ®Æ ú6&ÌPizºUĦ‘.%C!æ3ÍC—Xô Ξ—×@÷ žŒÜ(2‰!MÅ“ÚÄ·%,Ùîxù"á8:˜p±e ¶mM”æÓb³÷²ÆG|$ü™iî˜Û†nt¾Ð@¯@÷övR¹=y¸•9ãSí]çó«ŒÇºSšD \Kö\fž7Ùé¨Ô«Y½‚¾]ï]r2Ö-8•Ù¾öŽKòësó–tDBá?¬Q—ôÜsx¿Wf#ûo›§¾Ï’z…PF­s’aƇB~WnPS7,ܹ¡Ç3än Ça?\RŸ?cÊ…Es²9OV^)„ª×IQgÆk%,à p‚ròfÞ‡*Ñæ°É÷ ¿7#ÐUòø5ê•ÂΑ) 6ἄöΘ‚0olæi…üþ»Dï[Ÿ@G5Û 4Úw° å¨õª8zÜ)Æ ‡wT"ßi¤ÊFÖò6ú'#ôö휇°’oª!„:¢ÒÐ “ŵ½1“L2ã;;ñ?öè+„ï5SÙ¤¼¾ákŒ0|‰H<ícb“%.ÛÂq¹ÞGû)ZT—Ÿ¾Ù½ØÊ‚ïŒ3\Änªó#zUrõÍšëúÕGøÜû!ïæí¢=žaQ,<•J(uúÞ) ·˜¿øN׋0ZÏ£E}1Xf7…ÜNÂ…xØxã¼»£Ó%Òçíðï¹Ø ¡¸ÄF)ŸŽ½…tâG0Êǯ5¬¹mP¨Aý|Æ?‡\ƒ¡†î`ý.†  ÍgQ¨·J€!÷·ýg‘à¦ÿ}_·¢A~S®’aeÎsêó¤þ§|™î¢e®¦Ü 0?Ö=á3KkómúÔªÞ&㦌‰xóÕ‰.NÙd¥¥ì*»ö[ MB‚‘ðú]š'¿¦ˆXÜã”_qùá+µÀµrãõ§ K÷UOz6üÄ” J%•5sÃU†w ¼°ææ¼Ï_ÄLzG9Ët´‹ÿ¢TÐ,•ØØ§!ÝCÓ¸¥z>ãÄÆu%låòѼK pÍÅ%@¹*º¡GÉ8H§«g_Ì¡ËxqTŽŸkaÛ$Z7ËWV6Àíôš+bD–vö*u0¤I³°Y1AhM‚á7Ò žUDÊÛ¬­8Æøûê»ýJ„øâŠ,=/YfÍ-Èú^¦'B(«0áÁ a€9Ú>®–b}—aˆ¢!j5wÕ<9„{H‡Š²/ ]nq„ç;SêÛGˆý}LÛ¸c¿Cç¦ô8’«‡]Šßå’µ“U2(OLkV’Rb3« õÎo…|~¤0ÕyÊš(-¿ ¬ºòà‹ª£Os²ÊbhHÊü³q¤<fçóÅ1#ÊCÓ)‹*YP!r–lÈ Û&¿¿±og92!FýWOž;–Z н…ÿ(®%ä¼á­ó%¦ïܱ¹y—N(¶1Õ™²K,a°ÙÒÅwX³ãÒÜbìHÓj~ýL“Ð_ȱqÎs>õ_ )VÖh»wjØ#4nŒšHvh½q(—í/§jÀ°Â[…f-šAÞIêÂÏOW»–h½ÞèJ6„Ì‘eíœïð$#SÒÊõT _ ¿´øºl³†¯^·n¼(ï½ArdkŠá(hÀ:ˆ-Ôι®¢NõW€•zk{nª’½¾šæà€7òÂ¥„ ù# ÅMØJIç‡uÁœªÅ#»lCòq>@R¨åD/xc"‘ü4^ÖãÉfkò{ííW= Æ®:"¤”.Vê·çž^¬½»®Å}V Xä«Á: B‹æßLá‰0’ˆ:f‹Ã÷²ßcmGòä*84WEßG¶}¡~^†·UFÌòs¸—éK®é¸fÈñn7`rÅ­5IÎDömÜm©jR¼ ÊÛà5ó›9g„@OV7ÚµÄs ‹ÍÿÔÅH ¬+&H½7PÈÙ£/’‚ݰ©˜ô©Û·{¼³ílÊ$zaÍMg­VltT¿ÞèyæçP¿Ï®ã5ÞDYOÁÉ|ZúùW- ©4ÇÈü–¤ø·s+mRyYle]­F¿]ÍWFƒ÷ŒHÕÙJ{ÁS6ùtjˆQ%ÐVx`©÷ªçEUH7üRll{˜Qþ‘Í)mûøK9‰ …Ðß(§ŽÔì\îÇ-t“t•O”TÐE/½åö7Åè…qП]ûçbø¶UGá%Öo Cm8²šƒ&àf£ð¡%*¯Ë»ñAcWÑúW’ð—7¿z¥ƒ^X#xó ¬@–k”hOCYGy‘Z¥4Ûz%0êŒèLt§ò^>{ö™!ŸËý Ye¸³‹L"•@I‡@ÑtÚM,€Â U™6·îØqÉžÒÕ+È%g"ÜúuêÊþésèÈRßGg%^ &ã#æžàŒ%¥¨Ã+|Gè#•\˜“ÄD¾SxÍXx¦µÝ£ªa IÜvKÏ_Œ¦ ]âëû¥!.U°¹ úÔ ·–—“©2<Þ}>•è¤ LÔ)–œÐIÞÃW(¶ ç#ø*0ž-HÒ>wË ¿F»0è1ß–·:¸¶S9ÁX›J&bgÏ.+VÍ|…c4#/±lÃG¤yiEƒf`¾ËgNæê„ô"}hÅ]ƒ´(L‡ðQ,ùÙ‚ðBó{Ç1ŒH«JSþÆ ˜HÀ ”ƒu¸2¤sÇŽ?ªmý4EÅSÕ2§îjs³X”——¬Ýj&ëÄqé\W7Ì+ÛFÃ’"¥sÔ{l¢ÛöäóùØ—ÿÙ¯€lÞùkÞÓ¡ñkwcVø…çç‡-Ãúúk©ÐM‘a[9¬½_ôüó=¾<¶^±[£ì11Œ¨É†5¢úN± ëÓKÕNjóRVG¨F¥Ê´ [™½‘X21êªÈgª¤¨+jm…=«ÙSz}f ¤‡Oß}<û#®@,ø¡rµ‡b¡ñ~¡glËl—ÚX ŸPQ¼vZÏ/{š÷ù=]¬J›÷i–±Oøb"Þ n̤„fI³ÖTË],‹6)Eó•f³éëS P!`ckP T‹Ö Tg¢Ös–,Î=€ lZÈ[|“•ÚßmëëçEÇ`øƒž’Áôå;ÏIT5ð¶\.näT»—^¤ÃƒŒäŽ%‚À+³à9³x_:6ƒt {DVƒ£þ"ž Fýšo¦Óò>jQLÙ©Y¸?EǼ=mÞ1Ζ9ÏÙ…øD=À½Ó¨ETŸœŸñM‹ð•ó1á‹‹Z"-k½i¶€9àãÕ4/·ó`¡bÆÆÄÌ¿eô•»®ø<“Ÿ¦ŽHõÀÇàðJLÇ8F÷P*»¡a[4 Å É_HÈ_r³Ú9¸Zu™~AÔÿ™O#÷㺮 ÖèôÓ øb=uÞ Ž_ò…„2?[–ñçà§Mý×–Œ©æ~þXížTö²O ¹ìqNÌßà­.yd²¬Ã¼¬4—=_§½ìÒ9”݆i+ùÂÖœKê¿BÌ>²vVÍÍ(ä1 a8Óe|"Ë©²ÊÂ}­BÙË 4LJ™ÍîÍÎRÞâÙ¬u¸~ŽS}t-!¨‹1­:fNÛ ^Ê?Aæ+¸vYBËuUg¢ò•<)mxˈ Ó’¡x]p@Xi«ýýH4õ¼Àç€ocÚæ…âÉ¿Æ.‡‘†N\MÎ&ÃÛšO]æ[:¹~î¹̃ų¥¾g>DóÀgq gîhÊÒ'ÖO’ãö‹&L8Ññ8Íú*¨—¾-’J£Q”Wd¥î”´»$A¡kܱ3Ì÷~ý=Èšsƒ95#@qÇz&÷$ÆâL,œÐн/@ÿÔÑLä¥éuÆ“Ãp@é“I ƒ43ev•—…#1£‚¹Ó‰Èê¬QªÒœ›ÿ(ÚƒP¢Äã§„2eû(éð V˜0–®Úö×F\:·œß!N{~8LÜ€€Ñº¢i–­ §NE4µ„æ}§µˆ\± 4U7–2%ÎŽ P6'÷Ž6üË"…0&Õ,è•ÙHkÈXQÆësMäö†\”òwOòhnp³‰;½9ÌOÐ&’ô‘|qÒ*‡¡T4ñ1_–KÁûI K÷„4DèØRÅø'‘OÅ^ok”ÓÐä`©2òh®qa ¡³}m™éð® RVa;í_¦€:›±Á™ýëÑÛMwFhÝË &Ò±äbšðÛ½ÌåYr’ÈQ4퇴Ks ß‚ó':u¿¬OGþ”.Ùã}ÿeᇼ\¯—úŽ8Ê`yWV8ÑÞj+a™À}Ïÿ\p0õÎùUkÆ ƒCÃ…¨•PsÄ;DšnV9ñi®Çk;kˆ2ƒ1AòJÈ…¯»"w1u¿[ëz eFzªÈ/lìGÎäŽP ¦,Éí™øtd–€Õ ÂDÎ~1ÞQÐÉ ^]3ò:ÜÍâþUA.Ó£fq£GƒÜÀq¶ùcIøë#s ûd†·ÇäœSÄ€_Ï?2í—ÒªQ‡Û!ÉfìÄ;¥èaÙ­C}ÝÂpºO Vò TÖ÷ãß}ò˜û7Ì)m$þ |ã#~öŠêÿ6½þÒ …œf9YÝiºó:«J$X3N E'&KÆM“.bÙÎ{“jgô8=íR>ð]ƒk£…«LuwÏò:o4’ùŠó™8Œ‡ÈÖv5H:ùv J|“>M¤%¡p^PéG¸ ñÒ¶&JÖ=e-AEz ‚Ë™ç¤MËÚCe=U}‰·ðíG(ò ó»¹×I%·}¨uòîŸf½ne<´MÍ9 [u cô{E¥ß¾L€#OÂlN…Ód ŸT˜žXoèÈ4= ,•ÞöZBôÓ„r^œÌªÓœŠs¡^ _‹÷âoº`*¼ÀBZO£’€bfÉ:Ý£Rî%Þ®E2‡½YQÙK˜sW‹ðè œT^zœ_„¯£T—@“žp6lMg¶$Ñúï]ý°¯Ùû¾i ÁböcnõŽ6ôsŽF&Ñ7~VþŸè¾vÇûøßiµ^ðè|4`l ªÊy£¥3†×¸5¢T«U’™î⨨åd»cæH-á·™ÄjH|ô›‰²ˆ¥Sí‚BèŒÑ’‰Ý÷¡…ðÜñóüÓ<“ÐÎÞªà 7‘:[Þn»4÷C¶éýÅê•sYÞ~Ýé(µð{´Ýš,Îá½éö£Wg&ôiíÊÞgžQ)¸§‡wÔSÑûú0â‚´µ×kíyG[叨?qQÏ , Z•¨dØ‹ð ãA4Ÿ’¥oñ,¥¯Ô²¹‘nÌ^a…Öö›ýâ BŸ(w¼'ØôX »‹åãQáw²Ã¼—±··pðh2îÁ}9òÜÆ  'ŸÃ×Õ…ÛØÙCè[¬Õ@Š5 —Ðì—©Å~þMüa‚lE&k——³ÐàM?/e’ J]S¹vY‚AÌóÀÀ¤åkÀ=PÄbN .p”vŽFOšµûWCnê›Y%Þmö­œþV \ïwXæÀž ä©°ó½hÜ=?ÞmÝ>¯ቖ’.—˜U¹¦ÃûO–ÒR„9<0#Ýàl_N&Y× fScÎc 4—m%B‘–óµ]2…(OR½¥ኈ³ž6ÙSóØ?+Šö”ªwiÄNé k¡>W/¨j ð2wl|Ô=¤ RuŒ,kß©ûå¸2:Æj.ù–Lm²*e›ôÛpFaû½†Ü9¢—< ‹ôÄÊ¢šJs•:ÛE†R4Ëó»=ËHÃñÌJQ9Î9ÐÑÀZG<}(—u7„ÆoeÿØ;Íx&44Z $yð:¥v€C]dkbäP=ç5CC#–ƒ§Aè†]Ò5|÷†_D‘ó>É'Õ€ƒ £›,Úg°7.‡Ž‚ÝÇ1˜V²˜|øÔäög+’+|g¶Â%,|ðuû‰ksHŸUèö³kç¯áù•¬"%•ž)ˆÐÎÓþoù(Q®U_fà_¤MÒºZÁÔÀr”„™¼…½8'Á\´'´oi‰M1Šúǩ碢1çà¼0X È ¼ï {gU2*¶CLI3ÉÖ£ú?2”`Rî?áb{W¨äh–d8$•[#KîÑÐówÚÑj÷4³j”\—õ_ ï¿ u’©àzÕ¶ÑûÌÔ&¼Ã¢øüà„p…{tæ÷šÍ‚ÏÐߨl½ÇÇhNf—V 1¼G“7ëQx„êâ1Q+¸¦+¨fgzÏ×Õ¥tݬ¹Y‡àù»r {Ï{¤Aµ®í”\&#‰à`SÝðR:/ƒMä’BÉX›·ýüÁ–ýG5iÖë0:K*ÿÉË¥'ßp­ïàç˜6Mwõ´£=TWA°\tƒQèÊŽXE©Ä¼òOZnIò:¯´sçü:>ÖM`Lö¶AVÈëR­N~Káõ¦·¦:ÌS:öÆÓ„Œò&’€—¶è]Ø—ï;9 1«íàq<¤m”g_‘µŽHàáíÎ_8$‡Ø!ø™çÆoƒÁ3~øŒ1´UAEWÞÃv¡mM7Ж6\dgxÝ{ŸóòÜ~Çu; Õì%0¯Y¥Nɹƒá;XŽÑMçŽ9UÕ=·¼sf{.žŒ{› ö’¼’}m?›×k/°n]u§ï#× p“êû‚{.HÈSû4›Á˜ð˜)ÈÛ7·taoÍ®3£e’‘lORçrsü¶K§f‹ÉŠøÆØ¥*.uŒã1ósfø½Š0:OÅ7ŸÀed'T¥ý%ÎlÃ+DÀnj!Šöu„2)H­„œ;­ Ј•:O»¦ÀGŸ›Ø?.BàRÐô Ï”K+vPù¾?AYeºùzO¾+Bpφ cŒbvw{›@½ÊM1Üy^0êgKk™"ú/;Ùl|²þv—+©ß—Â7ª/‰GÈ.®-ãf;»n Ëd6ö+Ô£óRÜá•™èäÐËè/qg1îÁÛãOezÝ©¯³'%6û¨Ší”\ öO+QT×ð0ØX:~óŸ‚w:xš^=™¼ÊXÜäŒí¶H_a«xAZsÁ×U©¥…R–±çX %äW­’ã¶/ƒJ£_—ÙP¢¶”£Ò”Ïwà1µä$ŒýÕz-íYÒ+è–Š¾6ߌrh«SZwÓi¶(ÒÁe`Öù™j ¢hÜÍ¿3%E¹ô†“OÓñïç¹ÖH‘™!W£×IË y*s:ªtX-JR™ˆ ˜9–xüóȦ™&ù H§XD¥há^ÒÔ¢ ¿ƒ©wšnVd‰Á®œ£Ùß„…ªtóŸ‹—÷Xժ綫UzÎN“’Œñ^Q…ýVW°&kŠ/­´ÏמyC¼Z<Ž#¹`ÞyiœÁ¨ QsQá°È²ÍÓÑäŸ T»äÎù½‘ÄF¿CÕ ãçê¥~›ˆÞÆã%y¯Ûf.c„Ë;¼E“Þc²èã©dôpXãC” 5Îõÿ¢Â³eryézrPÀá§žŸ‡B¿Œ¶Ÿ6„>£Ê0ûtr2 ¤Ÿ©´•à T-0nG:‚ê‹gRþ:žw#Çl¤Úéfãx澋»–jžeÓ“1½¡’øöþwú¶ÿJ#àR¶«Ihœk.éÝýe[¸R--@ò{«>(**EÞ(;þJÔSO×»'P«uÙPÂ߯¬¥¾Üá\åeÉø€B食˜–ð¬gœáë–mOáSo÷  ˜¼™Öï¡ø¦„ØgOÞø™ç…Íg‘ä±8ÉzdÄÒ“ï7! 5×[ò=Î¥8±JDRC;T+ìãëÓuBáAàƒBz溻*ÁKŠGqgßÑç#4”(ÿOKºBÛö{ê_Ò9Ëpìõ.Ò™)dÛLwæµwUõ“‚¹x*}‚ ÊVƉ>:L H p­?"c“›˜|Ô¬œtoͶ0•¼ÕÞ>ïd25Û«Äòï@±*j!ÚcjÉÎý¹yúa~f-gR¢þZ?au[ë„Éb½t¿¼!dy©­•ãZ#ÍÜ- ‚ž†@ö¸ÁOÂO¶2:ÇÚt²;ç§%¸ ßSnP뎊À­“êæñŒ:”?K|Û­W<_lü ^äS:²¡Ëš‡ïÊì<ì·“çù~`A焤#­×ï&ð4¢÷]ÀìÇ Ã0jK'äõìü²ö~jè«o4û¹^’j§Ùo*G„k\³&ñÉ#%ÒYˇ­¯ÉDœY¼Å¿®C«çØJ&I—Ÿ]9j£9iŒú~…´rîø»D,¢#¾*ðºF2ÿÑ82 endstream endobj 1255 0 obj << /Length1 2279 /Length2 16654 /Length3 0 /Length 17990 /Filter /FlateDecode >> stream xÚŒõPJÚÇ £ÁÝ- îîwwwÜÝ]‚Cp ®ÁÝàîw‡àÎåìÙÝœ}¿¯êÞ¢j˜_?úï~º‡ŒHA™NÐÄÎ(fgëLÇDÏÈ –Ò`b02²Ð322Ã’‘©X8[ÿ³K¦tt²°³åþ‡‡°#ÐÐùcMÄÐùÃQÖÎ åb `b0±s3qp32˜¹þãhçÈ 1tµ0ÈÒ¤ìlN°dÂvöŽfæÎuþó@iL`âââ ýW8@Ðèhalh 5t6Ú|T46´(Û[=þ'%¹³³=7ƒ››½¡½£-ÀÍÂÙ t:ºMIÈÚÿ-–  bnáô·AÙÎÔÙÍÐøX°¶0Ú:}„¸ØšÕÊ’2y{ íßÎ2;Ðþ½9&z¦ÿ¦ûwô_‰,lÿlhllgcohëaak0µ°äÅdèÝi†¶&9Z;Ù}ĺZX}8ü«uC€˜ "ÀðCá¿õ9;ZØ;;Ñ;YXÿ¥‘á¯4Û,jk"lgc´uv‚ý«? G ñǾ{0üûp­líÜl½þC¦¶&¦É0q±gPµµppJŠüÛçc öÏšÐÀÆÈÈÈÁÎ:€îÆæ Pñ°þËÈô×ò‡/{;{€é‡  …)ð㬗“¡+àìèôñú§á –‰ `baì 0šYØÂþÉþ± 4ý›?ÎßÑÂ Íø1~LÆ¿þþûM÷cÂLìl­=þ¸ÿëˆ4%e¥¤¥iþ-ù¿F!!;w€ €Ž™ ÀÄÄÂà`cøüoC‹÷Áø'VÒÖÔÀõw»ûôŸ–]ÿ=”ÿ¾ T€ÿÍ%g÷1¹@åŸA×adc4þø`úÿ<îÿ ùÿ7åeùôÿÛ‘˜‹µõ¿ì”;üÿØ m,¬=þíñ1¹.η@Öîã.Øþ_WuàßWWÈÎÚäÿÚ$ ?î‚ ­™õ·ÑÂIÌÂh¢`állþ÷¸ü½®ú×E³¶°*Ø9Yüõ´è˜ÿíãv[}<N3ù/ðãòüoIQ[c;“¿n3;ÀÐÑÑЖñc”˜ÙØ^L×Ñèþ¯)0ÐÛÚ9„>ÄùLíaÿ:Qv6ƒà_K;€Aèq„ÿ'€AäqDÿKŒ±?Ä`ÿC̉?Ä`üCõdþÐG=Ù?ôQOî}Ô“ÿ/q~ÔSøCõÿÐG=¥?ôQOù±TþЇvÕ?ôÑ‹ÚúèEý}T×ü/q}Ø ÿÐGŸFèÃÓø¿ÄúQïã!´ùãý×3˜ü?zþ?Žáïñúãð!ÇôÇS ×Düe¶sqüGÀ‡‹Ù?ð£ó? }H6÷°7ÿxÖÿx|¬Yü?z°ü~ˆµú~¨µþ~ȵùƒLâþdfûµý˜âØ?ÔÚýiæ#ØîÌbìÿ˜?±ÿx!ìþ±]Ljþ¡•é£u§?õþ" ë?´±}¸;}<¤ÿMùÑ‘“µ¡“ù?R|Tù³Ýƒ³¹#ðü!ÉÙÍî9\þâúüÐäö™?¢Ýÿé=þz=ÿ4÷‘Éèøw©ÿ¹äÆ.ŽŽ?uÿz†?^€ÿð¿~W@w 1ìò‚ñ—`ËÚàö‡jA<7º½ ÞY²=õT*:¯eÇ—'D¨$ªªÌÀ Ç;Á¤á^äÕQÊ[ÂW¯“–z¨°ÖŶgïýx¥é½6Ø¥)ÌŸ“'‚u0øt*ûÞ¯ÞjVà- ]Rd9.œˆ yhnýâîue¿ÆBö÷«Ø¥á^Êfè¢U£tŠçÈr²æ±‰?9Ó@S£^º#ÍÝÞÍ¢fO¾JÅÓÀúœF³zim2Ç<Î{®•«0;uãâha€ß¢ŽM“{ &Ka-z•ÅJ…F™è-4ñu :°Öu-ó”Nnbé—!íL‡Æ+n“ Y+gwb£æÔqϼ2éçÃ:)v¼bzFVÌe:ñÿ´r>S`Këûfý9ø–’ÿSçaØaò"ûNÞÏ.ߊúoï~ñKÌF¹ÎÚ=^†îg`¿}&'Åm¡¿kߨhžñ©Là“Ž0™eùdpö]}èg%ê»(^iô4˜´åX͆T—'â{ŸÜ÷ã þ=žýGx°ÍE•=—à%“2màtLº%·T-Ĩôs ³r^µvâÉ@–*ÿX¹,h ]p-GU‰¡aArxns˜ÙMñ½÷DýtéÌW¸#“*!“oÞÓ’eSç!zn_e‘*LIDD.˜²~°¨'äw‡ÓM]wIÑc²/VÎð¤ªàÈŸ7ð;bSâ”Ëb|O†ß"ÉàkÒ²ì¹3Ïn IU}s«zÿ½ûRO·Û7µ­³¥.G/\H©6£s!·¿ŸÓÑÛÌ‚‚9'Èe­ìÔS*ªÐt_×ãaªìQ²µÐe´‰2ÞgÀåB`óóNa{(®ZÎÅqJ†×ż4f>pfHdb9·µGa.R¯Ø»©™²»{v—®dÂS•zü×g–òß»‰B7¬ Ï=En°ùa¨6BÄ…­qúÄi c÷Ö2Ì|Wì”2\Êô@T-žö¥t6é_séu ³4ž/(⹌ TÝ~Žšå Ü‹UèÃÆy ˜B¥¹’jó¯ {9êï-Jº ™\ýZZ6ÞÆXvÁa5qÃ’:6¡r ¡¾¶i‰Ç{gðw98Œ:8¯¦2ðŽK Iíòýï¾Ð+kãg1ÝH à_@ƒ)G(Vö RzLk‚^ ÕS‚DR_qJ8AƒFž”~Rê •·N åAô/Ït¥¿Ú_¢%M¬^sÕE)x9´®|J3WãtiNY·aÚBÇm¦ï56ÝÉu"Ìuq_æk§‘Žg›pOYc,¤Y¾ ?Ë29VÊÄ^sçcïÖ =mVtŽûn¾ç .ÊÀ”l†£™réó)Wù@‹”ÞUðA.í§¢%5¦BíA³&´pzÁT¡i¤°Ï q¬Ppàyøh%|+õ~ ªòUù¢ ®ûRApa%‹gÓ¡ëÓLÎ…}Ja~h³I·ØœÈbq¬I*=½àÓúq>¶Î?3ι­ js÷‰Ä(¢p3^ò•½/>ñ‘«È•×\´[_ƒò§G\¨ÜC*%nñ– ÛOÞºkdQì%¼†pƧjÑÏRw1?:›u–æt5rѱ[“?×Wf¼,[S7Ïáqkâ7ÐñáÛsÜ%5Ë´>×.i}ö­´¾}¼-@m3Ic*çfx˜Ñ¢Âv¬úDç"*NÐ\Bq±¨y:“£­NÄ+·8@ˆ¾‚z8Ðlíÿø0#UŸä'xù fßõÞ’Áqj~%3H‹@™ŠµÚtFÞ^Cÿ«³/€-Y;VI‹”ÇkA˜Ñ_5ïžà´ƒ¼lï­à4Œ1 kéz!ßLKA*/I%P@šZ¬]4¼ÊB˜Nª#qΈ`"?,ÿZË$ö²Ô<,9®62¶ŸÏ]î¬4oÝ~'Ö ¼(«E\ÆY¾Ðœï:{Ö.úfö$§$ ·dEêË¥Ž ì!¾Î3;öH¯ZÌ‚Mñ'9x€ÈLvÇ%àМÝÍKɘ‡w½ÒÕ'c ID¸pz†:ÂÛIp1åÔTú'ÍMQ@Etq‚²ícÁÀŽ/I´Ÿ> u¨.Á÷‹K"ŒG©q‹Ì‡ÑT)€tÀ´#竵ò#(¢Ï]¸…¸»›a(Ö©Mm¨+²§–"žžÌü£Ü±’CúÑ/jŽaùö ^#¿qßóý5)˜Wá@I~¶ß…p*ðžNÅõg>.2ɲKþeÄߥ;gáÀÏïÚ®vC×8=ä‘^WWqÞ9®TŸ{éEBññYr—÷“¤I“pÐóaÒÚ´,~µéÉ3kN}Y"Xm›³Jïá …½*þcÆ5P?˜OãƒÈ^–½nÊ*®7VnõÒë oœ{:­ám]—(Õ´d„›4j0ÏQ“ý2f>|ïDƒ:‘çñôS¿Á)ãûOåZ¬¬CZCç КßÓcŽo-dõWb,8/fÈ…Ù…ë‘äy²>K¿J†X²E¬†Ì ¢u²]Lø6~¹·hÄÓï<Ç€µÓŸN3¶º•˘‹| ´5È{r]ʧbNOú•öm—”ä ýqÚëíúåÇÁve£Ž˜ë­ê©:\—¿õ9,™;¤¶YýòYˆ%»o!ª0ÜÆ*ñ·ozVÖµH­«døo„TSd¶êób™ò è²Èi~Ãès¾×Zg¥+„’y!¤EÙ£*ÔîAeºÏeÉT7„Ù  Î¬ZÉj sº6{áj³ ñ+òÏ þ•·íTf o-°Wdt`Rª?s´M«U48æèqCŒÃ0# U!¾ÒÞ›s\pÊæ±NãÃxrqïŒÕmY¾Ù8ºÞf(ÜÄ ð}Ë6òw¿jÛÑ¿o+•ékîφóøZ–T}3Ɇ4­$Ààez¢(üÛç‡ÉH7ôÐâïÒŽcÝQ8kÛkötÜm[”©B¾]Ó™—ì,m*â9»>Ã/u/ó¥ñá‹a†ðéôã1˃:eŸ™·3©0O¸i§ÐˆùÆÝˆ­K,˜’õ:_Ï /A¥sRªHnO9e)™5|K½ïý‰ƒß@ã~⦚Q™ò’ÖÄxR`„Œ ü$¥€éKÉç˵MÞW¸îÚ³­÷N ÙIÕ¦Áv€Çk.7h(‡¼T[J͹½àú‰iÕÌ•ÿÀŸ•½Ž#@â.ó„èíºAîæµÇ2o[ž• ¤}¹Óhí}¯ %Ô9WìÊãj¿nïö7ù…×µ›¢6V„Ô·<‡fXš–-¸‹[Ú KY[QSIx¸%q‚*UˆŠzMÄ*ÎÞô¹¬’ü÷,iän<Ýþ!¢²,9~)Œˆ‹ŠEAú;«n/…¡Þþ=R£¼2c¥ú€Ð-Ûv"ê «ô\.ttÎÂU9$}•¬ãt¦FxBòsjH`œy±‹¤÷íc0Íûci17hœ –2ÔeÅ^öJU·[ybÑÅg?‚©Ë«^±Ø>žŸ„9HÓÚÄ!îŒè (;¯pi·Z^^Ñ}7ë„ôÁØðgœ£ƒZ0õ=ãú†df&¾m~qF;‡Òês?NTsÁÏ×rp¨6À ÇFެ>§EdÇYñ¾RÅ9¬Õf,õzhÛÛ÷ºÑ¯Ãønë¬vínÊÛÔUÑò¸Lòzi"zFç#ªòÂ8dÓËÛù¹kޤO1ÖÓ¶é²n{<™pÞÃ]¹Í—ënØÌ$m#ÜÞ£Síì빋¬Õ…sVŽ¿}%ƒADc mnæ~§»V„WÑöj§»—l !k†4¥n:âË`5uS<²Œr rÇújÐèï§v*‘ˆï ªõ;ëFˆ¬› tÖÁ,0úoS¸l@þò¼1ÚŪL­Æ;ùá¨9}VT+QÝHv=c r5„«ªAn>þ•=nI¾óàúisN}‚¹Foû!ÑS¼êì`!—33ñãõÕôC_ùx™ï™ÞÌàWˆ]üöuèD(éóˉÆy\úmL‹†¨HMæYHÈ>PµMÿ0ÛÚZ±ýõ“…]IpÀ71žº8\–¹´-ð·µm92ÌuÅOznØkA‘}^ä¢QÜyV¼¤ð#¼ßéøB%5M’Þ…I°Ù¾ó+U¦Ò¥Vî…€ØsÏ›†fÜ,ËÓr¯Í™¬R>]¡_ÓŽc›D͉SòJøÊ‹Vñ^y=„î[.VQ#†9Õ Ï;ÃT[£Ìz5”åWÀˆöF˜çOÄÀ§â‹ Í×â¶dÚC“é0ë.v»èÔ³ª¹¥îÃ\Ñ^Nñymä4DÓúb íxäHP¨#Tu ö6)Á’gñ[)† 8R_a‚¢úmŸ„Yé:8Á&-΄øx;ô±J1ÅÜuîHå(Ì„&se(̉ý×–×tÕ|‹:PÎØ+õìºz÷‰—’c}íå A.H!ÔéJ<=WÛÄÜôà'¾iÐäÏ¡Ë *0‰ 2xr\uâ¾¼4††¹ O‹¡m”õ°ï°]à#³ïŽ\eæÍ“CûÛù¶3dpÒ¾<«£î©Û.†r$¿±8§lI“µõ‹{+ZßÜBÃUµ{dMÎN;ÓÞÖMëá¦ܸ×ÖHFÉue[¿dP7±Çß¾lëÉöÎx<‹›´ÜÊà³Õ’}–^·ßŒ§Mß±µïÁü,ã«.Bãí4b¢.Î^YëÁeôJƒRZ¼°–¤ÿœcú€ežÎ9ž•ØaB0YêzïSÒ!Æz_ÐXéyÐÑU»@­¢©/ùnFî×í'˜AD/Á½ê 6I½#]?ñRD7Û™œ/0Ñ…±\uaY"eç/iôØï—&ïÍ¿tÕ+ûInʨ4a>1{Ò™C£A•ÍUÑ×A|Õ5ªtuüÒ±Å~S³Ýê‡×z$¿›ÙÐbƒÜ>uÂ’í@I#OÀ Wrœ¶xCu’¡‹þî„É– ŠD%cd.«§mÑì?þ-¤Ïp³‚ðS~¿Ãþ/ ,¨a·Gëb¡ðJH8ÊÄFeWçý¤«=5A›²CÃ=²Ê ݪ::]¹!ô…‹Æ8u.{³>]™ò×òú3Âiÿcƒ|½lUŠ,ápû0ñßûGs?¦ãÑ­ÙKr%oDbð/=ïûÞÓ„¿‹]ûЃ¡´*HåŠgh3 vdö|Ž=v®<æ ãp\-ŒS¢ißB×–ñƒæ‡ùï57“Ñ-"Óo]à®ß‘Új£çžÔm¦ßˆr-"3…æR·?y æeîæÈ¯-‡¨+ÓÖ#Z”ƒY(QÕs#½¬&«O³\@KbIÉHˆ¦ù”0òx­µù\¾Ð² üB~ ±‡óèä¥T׫RòJ˜ÙãgM_Œ…zþŽøûwU’–JDNS¢[-;V)ýy«ù©l°%7sµä9[Ýèg7ð'/âµ/Ë­A‘‰\‰18߃r" d|_rØ#Bµ…Ysf„ÕaZ’ÓΟ}P¤ÊCE:å%¥È{Р@œM Ëè†>Uïûz2‰AÕC ög5!*ÚÍ‚_dF/ßR*ô‡µguHné™F/L´š-y·7ÁÇr Ý™Z/[f\ÁÅ‚k‘+DÜÊ^­9l%E)ª¯·èðNT¨{{V0XËßýš|Rì‘\–""´@ãÓú‘5±g“'”5–3´P•TºCsQXÇ=Ù(‹¸»„G¿xwtZ}³ fuñêñm^EÜïi÷²¨)÷Óíï¼ °|ØÃ¡`ÃÞ~ð!øÙƒvÉõe ½3CüW£ÙgU,ÐDsn&m2ÿ=mu>*‘1`3ëTÊ/<§hÎ<UºH¡ÂG¡48EöÎPôƒ¯Ùü^oÜTWÏ·‡¹*…WKmLï®hp“û xܲÞH ýHJDµ¶'ù­¤OJu g"…êî–{«h%*g 5ô –FJ!£_EˆŽºaŒ¿#ȳ!ú¿‘CN¡6)†éãœVã­y)|ïÇÉ x ûº“,½±ÜÒ7”A1©KæC[Þí#¸ÖÊÁÓžv§Évþ!“.Ö}±¢¦wÎP).H.EßÖÂ;òsÔœTTŸä^^ǸóéißÏ<2JP ÍÓz#Ëi”F¢®­+ †e÷|·tÖ„·Pª…ˆÖUð8 ”Î5ðÝþV;E ‚‡dzØ'÷qé3ê4h #ôCøÉSäEÔå@pþÍÜÃ’ À–;qVí`”“ÄÇkðáÁŒ{;­1u_ˆ›}X·é8a4qxfÍÁ"°«DnbßdÚ¿±éÚÇLÒ‘.Wï\eÎÄN²ŽoX,[7}ê=:ÌA¼ªLýtLùMzÓP§M¹ÄµWBBXí,ç¾µ>©7Q ýè»Ý̃p³*GAC¶ Ü(!C4i~®cBŠF5n.Í!*@Z¯Š¡QÁ³ä}¦¿R?k²Tüóp«×>i"9E'üO"è[µ²x9c˜•U“À´×­µï¤TŠ¡Â´£ÄëN¯Žp4UŒþÎÖ!ÁZÞ‡fQÎïå7’¸7xŸUAå¾íúÖâÂ_¡3IÏÁÊ*Éú ¥+§´s¡2ŸæÖ¬P2.S5ˆÌI] ŒFî’ã¢Åæoƒ²(Ëu. |í8aˆÃÛ‘¾)zm¾©iò—Ê pá÷Õò¦Ô wFÑù-±.f )Óm4;Ÿ¢Ú°ž‰‡uĈ“ÇsfšH0w°ÔšQ¨mÅG‰XŸÕÒs®]¹úi*»>À}_„@k‡äȧÞ_Z¯¥žˆ‰ß]Ë€%ºª;-Å®Üt¨XÅÜ]@¾ü^–y<›fŸ@˜P5©-t "©Ûµ±VdΖªËŽ¥|çn{»0s—q UHˆ©±};¯KÇ–`¶€ 6ÀÖ2žÔqë›6ž=n"¦xïÍ”wqIcÄõ<=CQ¬—ˆÚ ê߯sf+즛&nòX@€åBE:Ìaß3é¿`/áÖc²qŠ¢=ž¯ Ñåø 2r¸3_hpó¨ üFÎ@ÿ5ݘdrÜâ‚}Þ)£Õ{•wÏyìª8ùE a'È´ÊЩ·oÃ8†÷Õkìþ·:Y7¥‡‡ï3(!2sç»—ˆjþùêUŸù‘†Ãçe¦à‰…/—Öw‹³9-ÁE«a¹¤¨ž¾“»tæh1®—RÄOcÊ}4e ¢M÷›Êphâ‘.ÂÒßt~ @?aµðnpˆqò°Œ:ÇÙ_§ä›r¶iŒ³ÏYÏZÁq†I¼ñá¿ìÎÐ&ÿn’Ü7çP#ÁàýÞÚÛcø¬òK¼ÐΩäS40£‡”P&?ŠÁV—¬i«%k¹€‰z©gk Ùµå=;pl¢Ä¹ñ 4ÀCbÙ›ßý,ºÿó’܃Jûäš/0Uo:¤5ˆØ*v¹@N—WžU†ö"Ôw "Ä3Ndß¡}w.ÎE91zZVd“óÖÞ177-ìÒõö.  ÉÆ>v¼qsÈ¡ÁµÞ=®=JG!P•%S78ó®¥^$?[Ñ<t\y¡u3¥û'‹“$ˆI$s'O¹Po7jA°›‰g*4“°¬áè áü^üÖÎSxK1‰…¼†Á ¢FKžõIÄÎ$±ÚƒžâXb[òœr[TòÞoâxýíÌã3æ‘MF€gr@l–èšÅĆ1î+¢@£ß¿SS­õ/(kA¡,š™bka#åûˆ«g¬ ~8Óz·zÔÏŒš½R¨Ÿö\aÒ º )Y#ºðzcŽÏ¯Í„˜¥þšùèO{ êÝ€= =$£lÕL1nRþèÓ!·JCÏ‚â!îOöI¹°Ô²wŸ®¹:ëšþ,ì Ĥg4é©öüÞ6ŽŠzÁi£§¼ÔûË ·ÜÔm GðbI˜<Ðß]vëwÒ¶÷‘Ðð)—ôÚ]^¡4kƒø!záRE·Y«ó¯·SþÖf¢]ÕÛÛ\“‹~驪4º'í§ GLOê„o˜ç´ûVÇø®¾tÛhÏw±dÅ!JaÏ›;º}äs`ÍðCˆú¾í»š×’Y7#ÖÔZç¡/L@‡¥AÎoÊl†$ÒÄ4UPÈœKðžîVpÍ«‘)—“ÔÜzÙnê• þWÆá£ô­CÞ?7†Á•W¸d4-Hg­A¦Éå*6WY ôÃc‰ÞÄ®ƒ7øºýÙÉÀ‚$…ŽL5ê¯k’À9©T©«Ç Á¶`5°CmígLs¤l52À…qÑÍ„µ¡šÛ¤Ü%ãP\”þÐ7IÁ´Î!Ê5Ã}à ÙÐA¯tkí­ò¾Y¦4‚Ô×~2Œ‚Ž’®DýòôäÈB«ÂÂ),H^¢ùRîd}àê’|¤‚𭧆ÜÁôn ×-=”ò]U):4ËyÓÕ¿¨C¸Ï÷d©gÕyµñ¿¿Š‘ü!6jŘ*ÚfºDYr©| hïBúðÊ‘zî7ÌF"û5Ef‹tQPŠt¨S^®üýÚÆÀ}×jPèØüÓúÖ²›Í²+e%™Þ·91oÞqF…1çôŽ16¤p…Xov¯ªoÓ‡U–Âè^ô›5»½Q³íälr~Gaw9²ÝÛâyÒÝfò”j$éÆÈ=¯¤å“,蚢ß`5Ì´Þ#™°þF%ÛÊgÕ³¡øHíõà»`%©¾ÜÈè{y¥FnYÕ$çTò“}sŽ„—ôæA`ï!ÁÛ Zˆ¼ù%1þF…Xex帙î¾åì‹û ùá¾ýþü›ymb[¸ï—cóTÝå ñ4¥$߀ÏõÑûe÷`laØShM.Mþó pó÷Gîë@íyEˆç'‘…H°Ÿ-vÑá¢n‚´U4´üc?7…ÔPš3ò L[&b°±ñ "Ñx|}C\ “{˨÷Þ.×f9@¯”ŠS=•é¾îâä¾(Ã$qõûˆ;)íoÙƒ8|zO/­ÛÃP ˜ ">GåJ9§b(eöÀ©Ë¥Ã)6s4S½>ý^üÐÆØèÃIäÖ3k´‹ºèù°±¶@:ó¤›×iJ( ¶Œ£¾ÃdvÈ8o,¤•º6ÿƒwÇžMެ°o˜$݂ӑ> û¤µ’£"—Äÿú°xÿ+ë*~TŒèÕ"ýìƒ FˆòÌ lª’Møv@L°vB³_£YåÝ‹UË¥QÅ Bu¨WGg!ÔÜZo7B(Î/ä#𩘬¨)UÆZâã%Özví‚Ê •QÚBù/Ú·p=.¤ûªSÊïN`P®÷þßýÁwsõUdÁÔ§ÝÃçVÅÖúåãÝæ3Tò¾#’™"Ö±TÇ"~ÇÔÂ×H„ïYÛã‡8ØCŠrW‚×|`Á>fŸÅµÎR¿Æãê»!\¾ão@ö »#¡ßzs«U)5º]úO  IÇÑsæ¢ÇƒaÈßRA¥ÛÁRâå‹)³-ü>è]Ïfï‡òlãyž7ÝX Ì]©‰¯爷",ìa/ðº…ÔË8ˆô Ç«½—– ÚÃéçö̲RzU$f!c· –sÖIÝ}¾ÌÙf¼c~(Ëć® VžìT°‡"àù*ëñ´Ë!aÿ­·Á£Ñ/¬æ>ï6ˆ€3*¹Rʾz¾]k|#Âå]Ÿô{ºï¸³€˜·þ,­"Þ qªÆì=ÌWìŒ_Àp$_Fµ—ñû—ÛÀ›ócÈ4ÄZ¦mÈFŠ”|ߦ ÛO“æŠë–èyÆ9d­p–‡­÷žµA~ö—¦\ØÜ1êû+8Jø.ˆ[Pìz@[-ï¡JÉœ˜xû‚ÿ¼@½œâ¼J©Â¼íňð &Y4„‘¹™™`Ü:9à\žæÜŠŽ­8ÇV«rºR_k“DA' ŸÐBä6zùHÁÆ—cÛ¦,è7µ2pÔlõ&òn:ˆ¹Ô°l’Q¬W£å¢TÊDÁ1\™”,q£~ ¿_K¿GöÚN+oò;2Êù¥4è:ù6Ôtd©@¿"þÕVëaGULo+Ö¹º:Æß5]ñn AÍ8d0Š’Èö¹~¤âõj!Gô õÍPôUö(³©ãYø=î)osAqXµ¯Xû\##VÖ3¶z”%ÁeーÓÄÎ^V—áÈŠ/·wHž²>ýè¡ÝªÞÙf¬u;hcØ+Ó׫—&O%"¸àð/F”Ò•˜Û¡a^Õ”IM&ÔFlÑʧ²Mûƒ,§¦ÉG±+8ÆO Z…Ú\0§HößL0®¼Ð0yVÇ/ªˆ|ö_U&k°¢¡ ´„Ôqs™a¿|;Ó±„.ÏI²§Ç Ðv éSwôˆ Óo?ú¹N ³Ó/òû—b ÿ/ÖJwÂÍ¡‡(ŸØÚJßòxžËRÿìZÌݽ—™)ã2Ü= ŽIÈÁ¸u…ü{c:èÌ÷š Ì©”Œ8’Å}GZêÌ¢àÎúÏ–wͲ¹ý=!ÆûÅõ 9Å¡Hø*«q•':$5‡3˜Qº…d¹ú>;‘Ñ)þOôn`»;bRX|#Éúòa5´ÆÝ^R‡ Œç_]Èl•V%bS5á$ºŽðU¬í¬„` ±FÓñµ~AUn޶bâD.ûdÀøJ¼¬›¤í^>Ö†ÛŠ» û»Ì ±•Úä›éUÂQ‡©ˆ ÷Ýí;*ʤú-ãHL±úC3ÚêZ‚êr J¨<£D_Ü|&³@W7[Úüf „Ë3å­çr¨/3Í•­„Ü6 dø`a=aˆâ¥S,‚p´\õ$'¾ânRŠ“Ñ 9oÌæ'Õ€© Ã'…2¥Ž7ž€¡Õ‘[9”©V—5V›•„1 ^cª,c-kzbErð;¿ô«·XÈöqïœá’»o±ûÝPn¤UGþ:Òp„h´w%àÀiµlØ‹ò›¼²”¬×L‡WÒ²þîH#¯2@á5ÚîMˆä–dZYŸì ·g¦È $²Ý¬í‘­ºþ~³<€åÒ+„L˜´¥•/ÇâþÜÚm’hk°CìêÌ $DZ©Qv‚Ðe 48¹ª×µ­‡”ÙªÝýús>úp ¼LN¾~Žå1šŸ+\cÕV ªbÅë¾µeñ‘]“¨~å8(Ÿ÷K>L¢\ü÷ÑFO[=´M¯þô~0Ûù5’ü¤C<ÝÈ®Ãc'ÂF‘:=WC"HíÜÙúZF ZŸ…°v¬·í;îc7œ}Ay´ úß!µ­š.È ‘Dcãï°I^Þ?äËTØ ©éœá»ä®ª?ÏOí½™Qf•=À#éa «=‡NØ«Ø)„âA^ aõ7¤]‰ýÐãä‡Üe€í'õRßs#B€­ ù…m$õKð ­bï_UñˆVõ†O¨D¦!Ÿ :5™žºï8gþk`øìB6îÁ¹¡ED®f™ŠgÿÌà»7Tˆ¯³åUuNm¿F¼§RÚqaYju|åO©¯ÿRæ"Ïm­‚ŸÂòðô,¤¬ÕµŠ³‹C”O¥§ã(Š‹ë°Â±_¼“,õ¹ÔY^Ѝœœ›‘[P¢Óš nYgÙY.×"?qx~£‰-Û_òêh0§x™®m«vB¨ñ´?E êáõD\ªØÝ¾·ÑN–÷ªü¤mb3”ç<]7ëÏ–àŽGø6?¢ùf_¢§æxÉ;ß)#z½wlÜ{çs<ñf÷k ì3o«Î*dD;»Á]¹ªÏN3€w'ÝH}Gô[΀É4íʦKÍ ƒ¹½)V˜ªšà³ÉNTuæ¶ JV#´hÙ9á^ìù;ã«]g<üʼ‘Ú›®áqFQ 9ÞÉ€$_|4ŒØ@4K…(sÉpßõø9Q›¦×èõF¡86õ”ƒÒY»þ•€aýá%Oø—'W'â)>0wPÈ—idØs»]—ÔP„zþm õN„Öð—3³K)¤¤Ô&AŸc‘R7*~*_Nœ~ ™­HÂûŸ¤Ç_U±ô‰Wœ~.™bÞ?TAó)·[a(á\c*iI®˜ivìú½"Ž­.”Œh,5^„¢ðGŠ6‡X"¼°ý¨9n¹ë¥(’@{À—ó'¬þ£EÕCèMÔ…¤‹üÙ_3ˆ¿ö›‘à©ð˶ˆ7žD+ÐË•øìfc š“‡[³ÒE \²—×ú‘ÿê“tÏÛ"0RŽ6 wl!øÜåŒ{#G¦·X=…þ«PG-'‚)T¯Å©´åϰ"Ñ^ÜÞ°*84Uzï¬}lÜÑUŠ:ÌÐêÕèõVf ôü”]ðOTÞ>Tèú9é <¾j.EOܧo²ÍŸ®íØÃ‚EÜÀ޺ČU~ãöÌÄæ~¥©U–³Ê[ñã,ø‚‘Õ+¹¿;Òç‹ÞIJêî»>„Ü‹HðŸ¦lOثӀ'´½¹iÞìcǾ·ÕU Ÿ.•¨lIcêv9ºV˜ HoDŒ”ðÚʧ᭶“в‡> Z㆜:w7NEeÙ)#7Ýpª!<‚àHgXgZ²Ju ´êî<{Ùä ¾ ù?êd¿£F J†…m1†åeË ÜŠ›§œèoâaÂ\¾D" éú•«Œv™cÒÏ€ÔkKæú©¨;ÂÖÉ»¯Ü -Ý ^ @gÿs8xà„Ä‘€»õ^lÏ„Àp{º L7mËÌspá`Ä<N?LBþL° eÒo6\áŽ!áKÿ=u/„WŒè’‹xú^ˆ~‡½AŸ'¼Á{\:^Þ»åzN,«½mm4z‹º ÅO;îÀ?ƒoý€~e~«ò(khÃÞ8.0,ì7ãØ(‰ ò¿Á€ì?LZ á&¢HéϾ1Íð¢ó΢(šIÚ¦†ÿÆÊIžþ+ì× øŠU¢¿/7 „tüÉÑ8ÄLîw˺¢á5$ÌàÔÊØ}]ßnðÈ™¯éëöÆ V±ß$ÊK=Ð7±.#0êO/€‘gŽë%²Hè† Ð!ôâjÊðˆžø)‹’j´Ý&¯›pNƒ˜Ô›ã[ð= 1AEiðWÄpì¡IûÙˆÔì $SȈÁåŽpËçÎ%3@X¤ëÉ®nªkãWTÔ¾ åôÎÏ÷.¯yÖHPÌú›F-¹™ŦìŸt(‡Ê17õ|»éx 7à é\}V¶TðR¾L¤VœZ]f°HèÜ\Íͨʰ“°ÊÓÎ|3ò¥o—óØ’{>S>ØP[Ví$X³PX¬ ×7i%1ÁmöÃO°Étì“)Å~W^x¸ú¥“cœvŽ|tµ)&"ÕwZm >˜þ ë*L"âá94¿TÒ°§ü3¯0&eu^˜_’Ù fö:܈sÒbÎotͺ¹ìS~ÄIöÊ+²çÌã6)ëKVóç3ˆT%^0ìì«mzzÇ_ÇŸ¥ë£|Oã·¥ T7qð–tR*÷Â/©Íð‹ì©èGl¬°å‚ÈáÁ'á,Þ´‘žäˆrFåm²F’¼TÄ™1áepY¯;5é¬&þù¦éƒåyŸV*øˆnÙ£pVüßPÐOÞ?U `3úBp?}ÖϵZܰoÿüVœ½Uä› Œ¡•BO@Ð^¹ÔÒCª•×1à—Xé$£¾ŸÒÀ‘-[qÔݬl³XN ž½CYÙ‡¡¬evTÊ­•Ë1÷Q F ¡›/ÇE*GSŽs{ò?0C•Gr¬£ë$”UZpL¬q™²aÉÝ* -vqø!1m¤j°{A«8¹vU‰n [×Äýã“#~¿ÊxÕŠÆç.,§š:üÎN“+KžœŸ2<²š8¦å,$ÜðsG°ÀÅfƒßqÁÌŒ /6õVe–%I}Á]ã†r6û—:qäûïè­3ÙKqiΕ‹¹Ë8yª—”&HJ¤äYõ9xÅç›Å%—(ð…uàå;“èêØªËËdO†e&â¦Ði̾˜¢¿¼Ï];c˜vØâ«$ƒCÕ~V×åŽ ̗пúT¯Ç?û‘Ü¿§ÉÛ£¾$>mÆÑ¥RqbIÝ\ð:‡3åþV^ÐþìÁyœÒ5Ö%äÇAlï*ÆšoUδV“™Ž˜ÍÔоºVJÊ'Þg ½ò­ bamÊ€lëô«(á󿨫d3s2 ÂÕ † œÜÔ ËhAª†9ºXç¥Ð{»Hºz‹sƒü’½K“¯« ÖŸÌBG±óúúͬKýSLSö˜ëa8 ¡[q mÌ_ @Bœ ´;ÏòYþ ž…ùqs2nŠ.ëå’3ÉãSŽíµr iè¯Î|¥o¥ªÎ ¸ÛFú"ÈHwêú×%™µ‘?zFqzSµ\ŒˆFAÀ ’O»;¹J+dhÂõ9O ·.ÅB¯F)®KZìÝÂ5p·²$†–$þŠCŸØÜ.Ä=ìšßèí¤Mòá¶¡××¥_¡e­Cú.ÎrÝÚPu8Ý•X«ÚR;­³YXµ>®–õRºI†4¬U‰¤&_x’…Aɵ/æÿ ¼Cû`£iԹțFã׸†~Å—ÎgÎÁŸ9MÒc=¢àGfa"tÚz`<•-™[ªé}xRÃ…v:6Oã<ô€DN5vRK´¾µ”Ö-žDß"×@~‡"~ìÙ9íª$ü‚%“ö>½¢ÆlíÜLv–Žoi–{ÍåRÑîM¤h›[Þ/7Ý2-b»õZûCp›ûX¡‡ ©yò±Æ«­"òï •­qoËüj³Mt ,TyË]„Äðó‚Ý¢´u¸÷Vy{mÏ›=ý^c«ÿ7®ÍiÉÖ±ÒÓo¯)ä³X#`ø#Y’,Vzgpõ¥ÀA4>Hؤq¢½E¶©ø‡÷?^u~£Y›Á®àÚ’ràøBø€A7I¬]ŸË.€Oó9<ƒ+¹ÊÄùP±‚³Qº¥GÂLrÙÖP„åJžóZ bDŸ0kì›s†6$RS%¬&ÒÈɰǫy`…1.’XÆUßK†áô¬ÒDí2‹ºÐ’ûgÔÀ¹_r (º|.ì6<&ø ÎÜ·bAhÌôx5À³Œ]V‡ë !ax÷»Ù<&yÖßÿâá`4?½1,ÇÛjI–¤‘¯K²Ž´žúˆ³ªƒ‹IâL§‡6#ÏEÊ©]ç d»:²E>Z̯ mÒ¡ú4XÓéýÉŽ}‰¬†ÀŽÝaŸ Ë>$ëÍt#mýï&Vƒ±qì0uÁlI ©2||g»ž¸3Ðá‚-iÇäšñ¨ž™)€¯,lKŒ{¨YÝ‘…üäu²ƒíc¥ì´Ç2Ç9> stream xÚvT”[. ]Ò C—Hwwà 1ÃÐÝ"!R¢ -%Ý-HK—´ ¤ÔÅsÎŽçÿïZ÷®YkæÛïóÖ³÷óîo˜èµt¹¤maÖ`ÁäæȪËy¼¼üܼ¼|ØLLz„3ø?vl&0܃Šýæ! ƒ÷69âÞQ¨x8€ü PXŒ—ÀÇË+úG\ ò„ØÔ¹*0(Ø›Iæê‡Ø; îëüçÀjÃŠŠ sþvÃ!6 (@„p»ÜW´9ta60Âç_)X%W1///n‹;7 n/ÉÆ ð‚ :`w0Ül øE rÿE›  çqÿÐ…Ù!¼@p0àÞà ±CÝïC< ¶`8à¾:@WY  é †þé¬ö§'à¯Í¹§û+úW"ô` ÌÅõ@ívg0@SAáà€ ¶¿AÎî°ûx'â ²¾wø£u@AZºgø?w8ÄáÎíqþÅ‘çWšûm–‡ÚÊÂ\\ÀP„;ö¯þä p°Íý¾ûðüu¸NP˜Ôï?+;ÔÖî [W}(Äͬ,÷—Ͻ û›=äå€Ý`ož_ô|\Á€À_æ{~®0W€Ý= pÄ|ÿƒíçòpp€ßïÀ¿WØ@ ÀbƒXƒí!Pì²ß›Áv®ïÏñ˜òÞËàýõùûÉü^a¶0¨³Ï?î1‚††‘,Ç_”ÿed`Þ?.>Ÿ¨/( (æü;‘òW#¿+Cí`Ñ?û½ß¨ÿôìù—Xÿš6À¿siÀî¥ °þ£t3^A^›û/àÿ·Þÿù¿ÉüW–ÿ§Òÿ»#gç?pÖ?þ¹@œ}þò¸—®â~ Ôa÷ÃýoWC🳫¶…x¸ü7ªŒÝƒ4ÔÞù+@¼Á¶Z„ߊùÓ®ÿkÖœ!P°Ìòëvpyyÿ »0§ûÄý^–@àûùùwIy¨ Ìö× ñ @p8Èûþ˜ïW‚?àýDÚ‚½ÿ2€‡ C܇îéì`pì_g*ÄెƒlÀ÷n÷À6Þ¿lÎ`;„ ÄÞþoDPä7Äñ·]è÷—û«ïï¡ß„ëßv~?íN`ÄÿáüûC>ÿEï+ÝKl9ÛBÜ]A>cÀûb®÷wô¯”ÿdäû7ðù ±þøùêïE~ß´ß3ýÆ(ü—ý?\þéŠÿ¿ßÚýúw_‚ÿ‚~kì_…~ïì_É~kMä‡ÙzØ þ{+E€C÷©þ)"rÏÒÝÃÅå÷áÿñþþö/¹ÚxÀïAüq¥Ükù?ë?^÷Û`ÏMÃlÄÃ߇·\TISyqmŽ>ùÌ´iø‚ËoÞêñ3­2;t~&6ØE°°.Ïz*5Owã·×X‹Õô\»ùÊÿÚò™Îøf3öìYß§‚=éš^,j.=©-ÿ7ƒ'ÔFäv¦Wn"xZ¯‰/¼z½kzß}ù9½©½U)¤úðúÝW‚~¼YHÑ$S¾uÎ9‚‹æ;Ñ‘7þäéÙg¢¼Owt*Ï8°öø ýLVø/§|ËôøÜ;(S˜Ó ž}gö“ÙNWy4ãW\¸ôf’>ÑÎõNñ©é™^ÂÉ#›ELG ü>bÊ]!3(“¶/ãMÁýh{p¤(òæ»WÞÕi™¬º­*&5j$³™±ž£g®Ë  C^P¸I1p9‡#”ß´·0â¥p<o™³‡F¾¹Ì– ˜ðaÁè­çU+ÑZ4а ’2ž‚&º“ ›,Ê[§ç¾¥™ìÂ…Fž^/{pã‹æ"/ì™§ãÊô¯I8äÊ ¥ {W–'khh6ú§´r¼Åß0™Ãs¥ V1ïóó1Ó*V‚6í~ª„ï‰Ì^úy¦*¨Ÿ¼¾ºXk`È ,ûŠž²ëõÒ³l­2ê–X·wÛ³§Œ„„ã¢bäD‰å„–H2µÓ+$•ËMˆ^"ï36„¹:¯[°|'ð ]•0¼Ñ4Z À*&s 6~ ÇøBæ•ß?³*õÕ&£„E™tü õg;ÑkŸ†ê^¶%+å7„Òiã˜ö°}&ÌShúf#Ó59›šVeYôë"Ë}ró ¨çäÏsbê°VGÓIR¥÷“5ê)ŽÖ"…#šA³ˆS™Í—¬ÛÕB»l®–:S-,ŶÎà‹'h–ØßV|uÆÛ¶X†è¥%ñÌ0¦O†•}Ï•"Jª|g¼~ GÇ©¥šãæ©öváÏ"À<ýr¸*æ+I¹ÕŠ/z®1žíÉ5ÿÝóÍ ÛµžÞ9všfeµ€¼z7ꪵâ/ÖÞ3’çg4x­ÉÌ;b£{OœÍ§h÷3Çab µQ»òÏãÊ!_ŠL“¤-Ò?ÝœáF÷›fðàoÊ댈ëì$ˆ§â1ô ±ö–Ô¨R=•¥‘·w`k›ÂQ5~Ã…j—Ð-vH„J=Ú:ŠÌa%¦“˜GŽNÈ¢òçˆd ˜ÒêŽ"ác.©¶¥Mws±¹^f\WÆsx_¿Ý½©pV¾âŠÖ­A£Éà §ƒn|ýèïWhCmçã™ À[qÕµgî©õôx1΄èSÌ£òa ²™è‚×àUw„VªkÒ[ô&«ÝVHù>ëß°:²¯]áëï•ñÒ-CÏLŸ> ºº Èú,¬ñ…­— qÊV`Q*¯Ìj±¢nŠ¿ ˜hý°§gWlÚ¶×N5컸ã÷já!œ@vš¯¢Ýø‡ÍšloA?zaom9Ê¥ÝæÍ£KÏah¹Þ¡½žŒýœ…]S¸&IaÙÂ6~ÕEû¯5£íÙç`Iª³Kƈ䙴 ¢²·tçnÅÀY]îáé×I-¼1A«çEæõ=s+¦]0MÎ _ âdUÒ]=i54p0ÆgÖ¹õ+§ç ú²Ð²Í²§¢¬N²NxåT`F>_2¾þ`§ê–,ïQG åÈêK‡T4°t•¿ÎïH]u19ØòìÊr®G´¨×.j<;ÂkR,ã·Qk;½ÙŠÁ§r–^±!yÖùü fTµL8~íÅLRòƒñÙGzâUÛûå¦É2?Ø‘¨ÓÚ¸ Š ¿ª‘¢F>EÑ=ofžáO+_:6UÛ<¸,=;²`ñ‹¿Öb3øX˜/Ùä51§Ñ»J˜’å#‹?‘ú,¼ýY)„íO‘w:E»À)Oòªîg(ÇP3SåK<ÜÑ&aV¶‡‘WÞ¤ªB™©×n]ÝÚ7GÄ΋b*°ÞZ¹Lú|ƒäý°Ô|Ó†&¼C²¦®Jß.XÅê¾Kn'1$Ïû YÉkÉdOÒ¾¶¨gD £LH§'J¿).òPj~9S,øSó.W«\/oÃQñ‘“, &‰iH^Eú‚7Eü"ËïÈNà ¥ï%!ØîxE±D¤7e^Q— oj4 Zƒ v+¢# Y“*‘j+äŸ2¥¤QøMù,¾@Q@¢¸f.ÜvËÁ7Å…N»G€sW͹ä6¹Ó¿¿È¶A0[¦Ëö>Î]ÏQ6—›}ÑWúŽåuRø³ÑogrŠQº=Ú'‚]‘©ÞM…·c IÜ}½¨ ı)æxg¥dólÓ„!›c •~Ë~=•Æ™€\œÉi{´—14þ¥ç>Vè¦/ê%]hÒ)BÓ‘~ALMiæ ärWï­Ä·$•÷Zj¶ÞômÚ×ÓgçËêB¶g»_ÀìÆúíÅ:“{ˆÁø_ù¤Óè-¾ž92å¡“uŠ£ï³<_‰±+•ZÍÊôœ]+‹½5¹©t|¨!óÞ<¬äˆÛçäÔ¿û KÐ/:~à1±8ÕÎŒñµyi¢Õ+zðØïú}µIxßÿRY¸.§g¥ÐBïw?Èå±ÿ:ÉœäøÄÚ›^lû×ôI'†7ÏøéHÖaï¥Øuôg8§…¢7$¨ºXÅ{Ëõõ ÃÄä§_hýÔÃ…Å¢2"+^š{}]Ê=Í’•~—›ÆâhžÿäêJU ý„æP^ºûIAõ¨Ø°ºæ$¨o‚ÃÀhÐtý­5ç" h޽1–sך/¶c³?”Š EQÔTõ=MÃÞØêhÄÒ}mq”z:‘ÂI§3e—¼_+ße–Uq—A®bð,ÑÏÛüfª}¬óySt–Ú É¶-òÒ«#mÈü+Ä‹xšbM˜¨ÕzSÍhûBÃv¾n¸ãi™pè›*ÿŒëÝôo“ƒ¡^-Ò’~z½ræÂMw{ƒG¶«û~Ï/ËLP¬"H¿‡©»G¾‚̇°çŸs˜q>Âu51ihï~ÝXîeãl)O¹?{Ýña4X…‘êrfòsugW=ÑnùË'æÆÂDìÙ‰Óð0í[½¡öÂçpxïé»3{ä[uQÚŽÏPJöf­÷€Ú6êD”ì•XëeþðÒ™&o4|0ΙPÇAÓý"‚ìAÄ¥Ùù‹/¼¾d9x}CŽp]ÝçÏJ3O“{wˆj±ÒôÓ’¸î|”¥ÆßÞxKÊ]æÔ¯ü¼bÅFÀ^bz§ùÑÆ™Ý¦K“=³vRÚÒA‡Ðx}$>…ü›WᤶĽ^ïºbQæ u .€×☧|8ä O{w±Í­,«ÉJLä˜"Z´Èf;£'^/²ÙB¨ÃD™D_>ú‘e®+4Ia”ð4 2žc=WmиXå“…ðrh°Çêà§ÿžòz üžÂ¥ô€SÇvãMì$ ƒ’0åÓ.Gœlƒ€Ð³t>ì-glÍZgkVc‘EŸËÕUܽ¸`]¼HïÍ‹%ªß§XKù},¦CæÖÆ´“Œ‡uœ©½éËÊàYüÚžÚÝK¬©T–^-ˆBë?e$s<ÜÄ®~XØ!T‡Om¼Ñ1f¡ãI¯ÝyŠ^ûHãbÚ`By|ÎX÷ÖÛ"GKzgtên9°lë"W5‡Ý‘¢{÷ÌÊ$lEQÇŠV/Íž_©S`5g†e¬ªƒkõn!Ä)‡£¡t‰bu‰€ÐѵQx¶Ò¬¤¡…áF“L¨b?†!0t°³òÆï’!þ+ŠÆƒcÌE•oó³Ü;Ç?ÐQOVÆèa¦g>ÄžÕϸ•st[8’ûE HGõkÕl9¢ëžÛy¤¶ öºhçWÛÑv»+«Z±íêó­öHVøðÙÆØ›½þÞˆ$)Å.Áþ´nc‹þ4)™{ß'Ï\Ë!ñ‘ÆôXé8ø£[p÷·-¸1±ýáû*õÄZþ5ž8<¢ÝNìK£ÁÙÑæ¶=¸‹ô²«˜˜c˜ÒÊSÒ-`øÝH±EÈö[ôy› A nû1Y)7{“8êîAhêéñÏl½Æ‹×ƒß,£"º-⸶ÆYL¡PRM“7bš·“OõSß%·ñûŠ+ÀA«ïЊ’y,q³¸VÆäòX`ïé©57´Y↪ÕFϤ^à”ÌrÓë{}Äë8>Ñ2Z(ç¶U­úv9…9×Ctç mÄ-kTNBlPWG¸ªfÝÊÍßr|n³q‹Î4ïm^:#ŽVQÞÙƒŠsô¨utPÿBÇ'2÷‹É¼ØTB·ó³Ä¶3‹KèŒ/ý0üZ?þ-ÊÔÛC¶^͆uLuÛž‚Æ­” Ûiœ= Ài-ÑULƒ;¨Šœ—áMºt¯¬®ÿ Ï\­OqND•ÑÀ}ÏÉ_¬2þ÷sˆë}ºkã0—›Nÿ3œÎ›Äík|„fY¿A•œ\ ‚àL [»`u¸@®‚6_µskY½7ägáûÉ»5½€4êyååÌmŽsÎ : ¹\¤é¥¯0ÎÈðÍšf¾ SXvÒɬŸÝä,iå´Ê÷BÙÃt 5»Õ™ò ·¥XBÇC,…OûïÖ»à¿2¥ée{¨œðI&‰ EšÙ:ÑOƽƒ{}aÉ0ª»ËO)gɇ/ eê°¨üSç÷ô¥kr[ýòÙ'žç=]/øh –\@ÙcÙÎýnù8Ïþ€Ñº>PгøÃ¡A¢ÑÝ3,²íZáCDéæmQ‚°ËÉÙœ¿¾\ìRfÈÛ‰@H {éÉa]VŒÈ|Ý*°AÌéñQNT³Or "Ê,” ¤‚N2a‰çÊú‹Nm)™©Éz~UÞNtŠ< ãönÛ…™“?ÆÓ€æÉN»ø³¨±|Ucs‹cAÚDmýºtbC˜»@)¨Ý<‡Žôˆ¼ÎÑï<Ï£Ôxàb!Œ(òJ• ,M\yõƒ¼13ª6./¡:w~ˆddsÇuø´Ó†Â‰oUK(³%HÄŠîî“X‰)wàÃeþ†ÕìXs¯ÁSn]íýã£zº(b¤â­Ô*›—ö‘»*Skåäð‹¤ñ s‡óùÕeIJ»ÿ9̪è_èÍ2׿»VÜ‹:ÞÖÙ¡¨%aµ[õo+@vIö9Å:Á`%£ æ>÷ÏȽØ/2òSº†7Ä©v7ÜY˵dæÚ0MS¬JRs7V7¹Ç8ÒÞ·ØõñIzô—°0Ü;fðú¦;­{¥|Aß&?èc{æ­Ön–g*{¡“ùÁ3$¹+¡­„§eÞ[ü+~_˜Æ*å×A î:^Ý9ö}.®l,JÕzF«ámúòìá·±èI¡ÖÌ<†Ñs̳0KZd©](ßÖ÷ù‡µƒc„⡵ ÖuŽ'wNk£}3FiDü혂Ø\Ç!ê‘À˜±ŒÁ¹ˆZsó…¹u\ çüDU M…åyøKqê—fÆ-~S÷£ïã)Í0`ŠŽe2Á(eq¦_Sc}~ñ¼/æQ#G² Ao”%‚a$ÃÕì£tÐu®—uvy¢>–«Èûô܇yîKâÁ&ÀóÆl® îŠ:çôñŒ¤~ðËæmÙ)OPšÂ:O‚0Õ;||}‘2®Ò³ÎúrUX./[!ÒÆ—`{á§žj´ËVerøÆ‡ó\÷RK)/©~M =ž¢A¤­&ŠBh%Oµ8Öÿj(€lŸñ2lº²Ib†N!G­"q·ÂÈ"$«cqÍLí©¦ó&‹ò$îoòš,’Ž/Æñ­ôçJíœA~]q(\öéúÑWNö¥á2:Ü„óŒÊ5òçÌ:é¶ðÇ©x·®w2xG‘k¿Öd’jšíßqÃ@ÞYëÑî"ù?ZL§Rd1Ãí4x~æ_5}uqKm3\}L¨æT¼ûQ¥c†–8¿MGÿq+ë.Q(9ÂYß]JrÊGòÉÃhïâ×QwZÝÒ9N.pàcí"ŠÜ7øÚ¡|v7¯"ŒŸñÅì©7&ÊkãF×ߨB.„3V›åmw1#vZhì-ó ÖŒ‘Á›¼6¶¾€ -ðrÒuZÇtïVVˆ˜l÷2cKøPr¼sì§j¨Êp&ïˆ)*}-qMßm!á\)'˜ÐsN—”BPYï|ÕiÅs:=$½™@ò];p)Ú#Ò3¹ý@\ŽhÙ7ºGoÿ¦b·¶¥’åêśҸáÞ4ŒÎÃÞúéÛúöC;Ãå8‘‰÷,„a*hTœÇnÆDTÎBv‚z¬Aœ¹Ó:tÓ9ð˜p!~]l;ñ×Ëå9†eÚ™”Ý7IlÐè\6]`ÔÉ•ñrÙ€•ïö.5IgÆ|èGö%Ò"væH² £Ü" 9‘i}Ë:ñißB˜Pº #ÓMψÑ7ûY†OîS­s 3Ý,?YZR2ÒV¤™¤óC¦zÇtðuˆ¡Ç‹ðO_”}:8çÛnëœ?'3ænìøK1ˆÕ*.ÈqïIc??úü)¢Öcu9‚÷lf–Ù°ò˜?zòK¡aŒÿdÔæÅ¥ûi¥@G¸:¾[|w[µÔ'Û ÿá)å’žkîGʸ ZVì¦þ³^‡Üñj5Ãm l8êV†8“Ä2 †JËýŽCYÕ<&?ËS•DÀ<Ï©¹±uw׊ɬ/6í<ÄoµFÒ‡u½â!—PW÷Ü "|;ƒÍ™ÛBò^!WÄXgg}+¯uŒÁ©u7*U9nƒöãÃ5¤Ål+_Ï´Ž¯å°´à»€N¯ÞŒ¤½È¡Ç›åmî4Þp¡"}eq]Ê⻂,ÚJB°Nøœ u^Ðz©ð±ê›Ùtz‰8WNÕUÇìjçž´…H—^ 1yЉ;«msÏðñšœÙ ¦~ŸÞJ­ÐÉ«G ÎÁ™Ã3D›üóF†þZÖ u¶[õþzkëA"³nV+FŒM lÜØÖ¬Àº&T>k½XõŠ­‹.f[·Žgr0šª¥Ëæ›fl6E cáHycÂp'9Û>”Ù=‰[¥#ÿEµžÇ= „ÊnÙ ÿ)ÂST3)zY.z\J¬áÏ/ÍW·„ò?a•a\Ïã,z†Î7–§¹RSØ–„cóŸ/?üÉR×S´d]ÉRdP¨J¸ùL=xO±×ýÐDƒÎú9ëã°™—¨í6ìÆ2=Â:ð¶>X†Ä«šK;¹+Þ¶ùÁ­ò]ždŒú®D?åŠ1R¾"•µv‰‚1Ü…¦'ìTÅ:©n–Ñ_Jï¨× Är/Ñ+ Y´™ðî ËÇ]µæJçžIûW l=ù¸XIhÿøõxb¢»ÅÉdKÉáÚñPn¬H =ž UŒ¨&)f}ý:^oÞõŽxq¥¦jfIEA(jžs誻åùÊèE\EÑÊô#¿8Ëg"±»¤,éÈêØ’)-ÈJO(x˜ˆ5ØE>)QˆT-âà÷}Ý7m–©ŸOp¡Ê×ËIÿ(~7ÁøŽ¬ÅSóÃtE Æd¦e¾Vƒ$zDÒ,ߟ˜‡¹áÛm·[ßÜíˆ×Z´eM߇Ëåøcv}~—º";pW²²ÆszÒíýös¿Í‡ÇõC{p•½Ÿ:¦EõYx»ÇÕÁTá¹±’lËÚ$ðL×y dÄïÞÿ ²Äµ(¿kÊÑ'½^zB¥T¨H­ç/c!ntq®æ¸cë¨åè!üxóž­z80ò‹>êSÁ#T–gðÅR‰ÙÇo'8R‹´º¿…U?éCnä剧¢ÉrŸ ˆT·QKÔi’u @µ¢•ΰŸÔîݰ˚nʧuòˆš— h&ÓŒ{«|,õôø\x~Äý¸V6½ ã¢ËžRÊ|eù]ÁÙ@~˜èqá%uŒÇGdÉ©uwAÝ$¼ú¼ípÐâUÖDgÙA™“ënò¸o¦yeXNJݵ?8+žÛ-®<¬å]2ÄÓ7~íTl¥ZXÎÎùñŒîI6×ÐÏGßæRùœ µb‡Nž–}ÌÕŽåídOŒ›rQÈzÜAåÐ|†g{РAªen?©_(³TÒš x_)ÓœVv‰j3Êp'¿N€Ç;¶¥CW‘uGd·æ~{‰¤‚W ïâºúÜë=«q»Ê$¢¹¿áƒ³61µŠü–ûfšôžh“›Zå“Zþ±Z œgev^.%ÈÁS+hן™ÍºÔ›|ÝÇ PmµÖìfäô°Ä¹xyB©PºÑô%¢”©VäPYK¶SeXì¯Ý;Õ5ùÙhÅÌýs[S¥dïÚ7´`¨BpÚ [õÙOÂ0IŸ|¼q­!ßk2“Æö¥‡»ìçã›ûiMϲĠßSÝ’G”æ%9^:o}óÍ–NÀ89tŽ /ªtHzÖâ‹¿¾¶±GÅl±ËàGìÀÓZ„Òc‘ ’4 óa¯zÊ…U«)ß¿§Ä iLcLEê”r€ãï­Îgp—Þˆõ¯fkx±7•jaÛñ¼¹ÑùŒíó3:J†O=YÛµ™„…ƒCê7¢Ñ‘".lE¿5™b¦±ð½tLB*ÆôÄÕ‘ðõ ‘¼©îWwPØÃ3¬T“ã{ªé›b#S0”tÐ?½ô-ZÉp‚¹¹^_÷½0XEQüa¿åاhþh>¤Ìm°K&t òé“x‡E?à÷FRŽ™®SIñ]¼ÇÔ±V5º0·‹rúïx¸â8-ŸŽ÷‚4Ú>etº¬‚µ†6ó~k'yw»ùî*K’v4ÿP zÐæýd¦ç\ûi= ÔNßl|.<sð‰±ßT«”P.T¬\~òLrj€©„°ô`L »´ØrÎÃõU&¿TǸ(*©"YÙh:D8ÎtÚ6}ýÁU}¤q'_²¥x”ïç µU÷jð–?Ú'QÉâµ(ò·è㜅/ϺsW.·#çHª!ú›vñŽW…‘Hk)½T^ÑÎÒª¸—ègÁYÄ—ºq½ $% 'Rñ‹¡±sÒïê,J0 N.ä¹:Hü_ßd •tàÜ`Ä<àá# (i:&'›2ÃQßkqà©s™š0"JÌ*tºO¨õ«ï¾Qãd'ýy}„¡_I”›ÿµÄÓ7ÖZ#<åó•ý!ŒKQϬaÑì8¥íŸáXy™]qþöÑj<6sHD3âYòG«nBr !DóÊjð­q‹ (率A.çÔwÿ—oš¦ž¹<”¤ÅøyJœ†Š cd1¿ú@2×NkÄꀟ­šå >K)wÅ ŒK&›îGçôùC®ÊÄ8MŠïl×哾SsÕ©»ïÀôq:*út)wƒ˜h~°x´+x}5”$÷´ ‡æEwÖ¬$Ò‡g®o’iBÀ9õ¬òÎä”:© ô?ûXt-êJ}õ._Ù Q*ÂCÍ„L<ØæÐh Öª^}#BëÆmîÄ#ˆ§‡é®ñŽ£`Ý6z/(2Yjr4æm¥ñÿ¸œçz­#šD'U¶ö¾]LË¢aP$ ×E†âdHHWhw8úBLöýÊP]:c5˜ #´ÆE1¯X½uÓ¶û¥–¥åY&ÁKmÎmÃe›GyBèø8øÞ¯½/$ s!R}Z±³Çh»¨RÎ4ɶϚ_kû°ÑÓj)lŸ:o„3±}¿›½éäsQ&s]·F¬©b©°+’x׬Î3×~é¯Fµ‘òHäÂß±®²ö2/¬‘龕´’ Ô¸·ÂqqÂ"ö#¬‹¯b- =ß%ö›T:ë‘æõI ú|>Û¢¿U-Üçѽ1ÅÛ/‰ÃÓHXf{jí«VG± á\” Š«±¥I·ú&jŠ(íi¶®!óöˆk‘ ±õæ¥bŒæiûå@æk¸!“iÃíÁzÁeYÿ»g¯[¿öÅ?Ÿøq¾Âã˜ñŠ8]Ý#ù&iq«šÅhµÏp\㙎)…‹_êtL*aÿØIªŽEžÁ¾¢ÖÌh7ÿ(ó”j+ˆÒ"B¾Y¾W×½®Ïˆ­í¤ü™òóLp,–í„Ô=RÅê'OÐc²tTËqÔ1嵿œmIv…Ý2’Ù}ê-ð wlíÄU·¯xèK;Ì­¨í¨î:ê»ØBŒµ=cø:¼€REïò6C"cWNŸè_𿏭MÞ~§_AÛdP|?† Œú"oÔí-6¾½AiV"béØß?ÊLî/˜ÙÔÂFüâ+ržw«¯ûÃf>J€ÎmÅäÿõcC endstream endobj 1259 0 obj << /Length1 2119 /Length2 16235 /Length3 0 /Length 17520 /Filter /FlateDecode >> stream xÚŒötk× §±ÍF;llÛ¶íÛnìÆ¶ÕØFc¶qcÛvòåœ=Ïûÿc|ߨcdßsiÎu]kÝ;dD Ê´‚&vF@1;[gZF:.€°¬¬$#€™Ž –ŒLÅÂÙø;,™ÐÑÉÂΖëÂŽ@C盈¡óG ¬-@ÊÅÀÈ `dãbdçb`010pþ'ÐΑ bèja¥HÙÙ`É„íì=-ÌÌ?xþó 0¦0rr²Óü´:ZÚd Í6ŒÆ†Öe;c  ³Çÿ” à1wv¶ç¢§wss£3´q¢³s4㣤¸Y8›”€N@GW  ௖r†6À·FKP1·pú—CÙÎÔÙÍÐø0X[m>R\lM€Ž€v€²¤ @Þhû¯`™Ðþ}8F:Æÿ–ûwö_…,lÿN646¶³±7´õ°°5˜ZXòb2tÎîÎ4C[“¿ ­ì>ò ] -¬ >þ–nT~tøïþœŒ-ìèœ,¬ÿê‘þ¯2Ç,jk"lgc´uv‚ýKŸˆ…#ÐøãÜ=èÿ}¹V¶vn¶^ÿA¦¶&¦µaâbO¯jkáà”ùẇ öÍ è `eà`gæ`@wcsú¿T<ì;ÿ2ôàãeog0ýhèca üø‚õr2tœ]€>^ÿtü/‚ed˜X;Œ€f¶°ª˜¦ÿÂ÷ïháÐfø?FÃ_Ÿÿ>é~L˜‰­µÇŸð¿¯˜^DYAMFúß-ÿ×)$dçð¢efÐ2±2X8ì>ÿ[GÁÐâß:þ‘+ikjø«Ø_z?ê?š]ÿ=ÿÞJÀÿ“³û] €âϤë0°2üaüÿ<ï§üÿó¿ªü¿NúÿU$æbmý·Ÿâ_ÿ?~C kG|Œ®‹óÇÈÚ},ƒíÿ Uþkwe&.6ÿ×+élø±‚¶f#MËÈBÇÀò/»…“˜…;ÐDÁÂÙØü_có/»ê_ gma T°s²øëó‘ÅÀð|[flõñqú˜Í¹ >VÎùï‹ü ?–êuˆÚÛ™üµ}L¬lCGGCØËÿ@¬/Æ55ºÿ=Ýz:[;çÀGÏ>S;GØ¿.š@/ø—é_ˆ @/ô±è…ÿ ŽÑûƒ8ô¢ÿEì z±?ˆ@/þ1è%þ >é?èƒOæúà“ýƒ>øäþ >ùÿ"Ž>…?èƒOñúàSúƒ˜ôÊлêôÁ®ö}ðiüq~0hýAÊ ÿ‹>›ÞÐÚÞü–N# óç‡\ãÿ"Ö¿ÐÇkì WOoòøQøøQÏôÏY ³¿~o>FõOÈG+ÿ€½Xþ~¶ú/dú¨nmhcdòGÛ¿õ_ƒö'åC¤ÍŸ”N—´üoûøá¶ÿÓßÇÑÙ¬¸ÝŸŽ˜>äÙÿC# €þz¦µŽævÿp„ÿÑÂö¡×ÉÚÐÉüÎò? ÿ)ï£ß@¦µîÃÿYcGÇmúû-÷±IÿÁÿnî@cØÅy;cî ˺ Ž‡A\7ÚÝIˆóÔ &ÚÉB=hçÑiýÍxå¬Ì%ér±Å~F1=Ën9!‡‡ìµ…k¯z–;ZB±3B£Øù÷»O³ ^÷xÄóH- yêÉB\%Ž ø‘È=0ü&fÊdHÞ_êú~'¸‘£—бKwÈuõÔ”fÊ`âqªl)9· «ì²Þ`ÉÙ²‰ ÜŽÒ O‘K'–æéz„w«FÞ^AéÇïô—r ؽ qFåÆaªV[ÉG|É)q=NGõ2G86ø¾N™üP'we¾su¬KD‘ØÃnnhÅxâùˆb¿‚.”ê˜[°a²œJÖ<Ä—pï¤Ö—f!ñc­r ßJ*4XÚci¶ojãÅE:ERûç`l<ï[ÅΉO#Yç7WÓж/5É(;¢Ô˜™”G>¦ùƒ¤ÖY+wÁ³êLÚ©æ*|Å+œAm~(ÌÌ®©UªˆôûCPEšw^ž,où×]]BäKÕ‘¶ßP£<7êW¼Ó óžÎéGŒÓj£„=Ýl6KÝ7ue†lìŠ|*=;lXO7P¢£ì¸„ÙeGÝAß°éÚ‰+—·ûÃn *@cM@Jår¿?ÝøcN Úu€0ú–úG={¾ƒ¦ä`í9ÄWTû7Úé#Óy=€áó¼>ì®5‹§Úáõ­ÒõF7¾þ7 @u=¨§wr\’º]3ç8eôPZ†PˆrôºóϘ«\½(£øô ϱVhC¸±`}!Èí#4Ô•çÁÉ'Æsê©%”™OH'êuL£öv™"Ï™ßÃÁºÜùFM$ꟴ uUDïz-Ó•†#|驟ávv0é©È«Ö;ž+ñöu79YDj÷+þ&MDM~Ü&,ù*EH‹¬\4ÛO®è$ÆÒ1T+óÜÔž?1 4¢ªQ=¬X…Š3ën|†ƒFl»Œß$ŸZ'¥‘Ƀù¿æîãxÃŽL[›x.,¥_¢gH­Z¬ïÖÈôolHu‘Ó8·iûsw±¬ eƾ~^yLUù©ÀèõËí3ºmnxô\¶Ø’—‘Jçx‡)dÈÖin¥W¸Ìô1yXOì¨FçöhñÆÓýYã:¿?ÚÒNƒJîïa»3%·ô™M.ØP‚ `ë9,ýLxÛ>^/6¦Çói ¢OPn¨óÞ’F~`1»ß•ƒsІé“OêÞT"eM¸²ÒŒF’*O¦S“e’¼^Çf`2Y|ŒjV[ð†ßì7úÜŠê2a»õ]†I² Ÿ<ûe,“}/sL¾Ô(=7‘â  â b?Ø‘¡…‰æ”Þ†@w#?´=¼37^¿Ð@« >ðù™`èælЏRÚøpOö†ïeäEÅnŠ· ­edìÉ£Ðo‘Ä ’4MuϰدÎ/‹U‘I‹™ ;«w˜GS|Ê‹ñáÝXM§ŒBßQ–ø!Ü9ØÄÏ/pµ\î8„IרÂpóŽåú÷Â1­ÝÕc¹Ú\ªWBz±Ö[çæ·f¸ZãgÙãfªÆþWVºò"Îb¬šb6ÃŽD æaºO,[“t Ù¾Z æd{Ôò8} [ïX8Õ•P|Øà›õŸ[üšÆÏ–„æ·šApwWÔN4¿1ZÒ â #t"ŠFO+E%#gîú!ÄCË–þ,+¸9œ;–ÊH–Ç´›õú•wKAª ³éPÅòÚ:Šâ}î1ÿEU a{£ƒ î‡>aNà!¹˜6E$lþKðcìc1ÿ$ö7GˆÓÔŽ6ý›ª`(”iSyhõµ_ Û¥9¥. «÷q߬èã«È«YoáG¦Kç~Ãø×Ò®Ëhªi•°hdk3¸Œ[bò‰ÎZÕùÕi ôÈÄv5=ä Å©¦ÔÜeldC­ŸT$ð†m§ß<2úªƒƒï/NÁ‚à+™vÁÌ„“Þº„€jÝ´=\ÏVÿU¹*ò¤Ï‰âsªŒ!tôœ ÜCS’ŸŽ~Šy&’wù©þ¦—³^0eswØÈŇñ€­só©  ¯§"{Z6J²J¨~Ѭõ°sÿÕdYu–â^P§Ü™ ¦ãÑHi‹Åß–­v Õ„CðIM8Œkeœ«é¹2nšZ뇚²`*IµªmŠÃ *‹ŠÉÌøºàÚËð”i øcø¡á®çgÖ=¬)¶e>µþtnÏ%;WE=;9€éÁùn#0M…ù«‚λ,Ú Z¤.oF»”<ß…T#qh¿‡h(I@ ­ãYøú™~z† HÔR Â+‹1üšqsÙbå[ùÏ©²('„¾ÅŽo[OtŽkÐ5`×¢Úe´`¯Í'·ˆ¥þžÉ»1ŽUHGÓ¤EBåp2 ô±û\-B˜·€ùµr?qÜìéIF6]'Øø›$ïô¶ŠZL–œõŠÃ ¡ºWZ«ŽöÖìÁd«¢Í›çvi‚*›ÈU5ýBÁ/{ =Zm3=¨Ð4¤J@›Ym°Êo=ßì}Ç.ª.Âá 5V_9l=o÷3ÁMºä¸‰wÒ|±!§âK»ì×;îR0Zp„Å‹ýä~åÔD÷¯{s¤¡ÎØ{×ïg‡ vº,¹èá@±@´êcüÞßT‹É¨žØpu~_7 ím&,ÅñŒí*D‘ÚƒYVúõ ºõ9S[”®YTJ•Ïf7¿Ì:U‹Æ.œ4Û²,ƒ}òau~8KA>¤ÑÊlîÚGa¼,€ýÛði`›ÀkÁ[Ôjy³'_"– 5Š–Ç‹I|³¡\ÇZ+d†¨p^WڵȰ&e s·"zNãòã<Üן¤m÷±ò•™Ø?­ø0&ÎÛ¯÷Ýü÷¥UuF« ‡ÑL܃€“Öƒ»ø;]\4Ò1¶ü}HºVä™eõ¶ºÊJÇ/RÃóÀÏJË5ON¦‰ …¿ulüŒ­íj©÷¾B‡Žï­ƒûõŠ…GÒW9\÷‘‡¼j Kd Φ‚;vê,7ýyßzVÚ¸Æo¶9š`ÙóŸüœ­ªÎ4žÄ€¬-›oU‡¸³™½¶‚ÌœÌ%D¦XÔ•ÝÁY@A‚AF¿[‰Õ󯜚“Oªµ^ýù˃ï¦TÏ“U4ÊÇ“ô-`ÌøtaÌJ9Â>¦SðÔ¼ÄÑ .¸3ÌBj"áÍ*²£u\\Ô|–ü€#0P€¶Q…k”µ-ÀI”j§# “`¨’¢«ä w‚äÙ]ýå3Uï½*w­èÔçÝà»v£­ÕnÖêæî—N¦Ä.¾ï'ÒîÌ}E#úÎ%ø•‡±¿¼§ÔÈ Æy÷DãªÛéΙô6닸r(ð%ø*€K ã«õ³ÜÕ÷¿‡ò‚|lÔ3i/e7'= œŒ|b³£_ûœZÐõœ:èAS²·ÅºƒäãE|O±>‹\3×70útgHÀQ˜ÞLJ±v5¬§ÊŒVíÞ0{{¾}- Aüýݵ;²åÖò äjÎÓʘ þLó+]©W—î.·SUpg¿uwC1:êΈBÑý º`ùˆÖ™1ú7ýgú¡8#ž¤„•W«gú]¯uÈéD»ŒÉ\´ ˜‰A°í“"q2”pûÉŽ‘ãÁfÙK®™¤'ÛפÆÊ~Ǹ¬DåñÙm I[KÁDÉM¾;"03$Üð_ó®Þ¯ÀñsôŽjxÍ„/òãüWùŽ<¡¸¿éë&t8úM ÕáôÎ/p}×lÂeìâfÑ­©#¸\HB¼œ¤·P—CÇØ¤TÍlq·OÃæŽH·D0„À îƒ1D¿iõºRß{ñ7ÑÔÍIÂ5Ʀ¢oî5jåðqã-Õß+‘çí÷Í å>¹yè®Ïëd®819Øœ½ñgÓý.’nzºãöº½Uie @éÉùS"—>‹¼Ùeu¼Ño²áÞ+i.Ê;XV¤¯ëP‰ïñAh;“ x>Í`ZÅ©"A( O{;І©I‹7vyõhUUò·Ú‹ýø¤q4÷û„wHw‡†Âl®ZçÅ¡çÚÔ‘—kgtŸœ3UÎøeº12ˆHZíøçx8}ng«Ù5ÚŒ¬#|²’’&±ÒÇó4ø‡ÕӺϟÀås(ªBœFLkÉ(Vží'E–%ˆ™È!Rií#à¤Ï}k¶o˜‰x]D¯S )ŽEx¸ë-kúG›ŸÖ%w™œÐñó›ÖŸÌBÄ&䔇"Œ™f_ÚQéBV·Ùç„£õ„…r7#jÐyWc§ ’¯Ð3­*)˜tW»Ó䀸YÒ‰ õø'ü%ÓöŒÉ÷—pzßR¯Ñ1P |•ß y¥WßùE÷¤q32È멯à uH™`Hµ¢èÝçí™»@Ž·4Uó*!©@ re÷‚p• ªƒCv±TöNðx¢EwÖV%F¶ŠÔ×ãÜJqQ¶ÙñáL?Cª1ƒ›|Ú¤K«©’|çø¼•d/ÊÕå6š•=…)jŒ —ÓWÑÇ+y{^"5dp1’¨A©ä~¾ ÖïÃ:E·d^JÝ&"s”³È0 jÜèÛÛŠ)U¿Òrî_ÄåŽ98lî!½Úð&ÆÍ£ùžó+øÅ·Ïûê{ó:Ì, Ú ½c÷k1aõ¹`¿ÑQÇPAÃóŽu™µç Cº¡¯Ó~‚ˆ‚°‹´NÓêÕ¿(É¥’íô}ñѦÉjÎM¼€rî“·åû„8.$ºMâ´«*¿¥ßXò¹naÆkáYRûE|ÅÖÚ¡ø¯!”ÞætÒIÙ»MHtLzY|ïšæn’^¶Ïƒ qÎh“V£ù´€×½®¨m"r áw±þÞï{ò+uJõ´<çnˆ Ï8vžܦ‡ ¯»~TïwUˆö˜žõ<6yèPK¡¥mþ`þ ý]ˆöo qxÚÑ7"‰‹ÝP6êÅú$ñF‘†ïÉÞn”(’H•}††Þ†ƒN´tRY*öÄÌÂä{§˜[3ôÁ =Évôw1ÎSŸáÜá’®o©Ç1©Ø›Î%~ê?(òÜ`3º:Éûµª|ª_¶šcM1ÑpzJ–ˆ® 4±R·gßuðPšæ"Øt‡ã½¡Ít ÿ‰îS£Ùzæiœ6{Sý“–ÒôÒFm~¢B&=y[Ý,²ìÓ›ã$/}-R79£˜Š¨îesÞz‰2¹l‹Ç·MáÂD£Çí–âoÔ0‚nÒ°÷¼Ê¸L˜Q¶|kuÇPH–·ÙQýϺ*ai¾_R]«ñŸù=`-7‚en&~í…Kõ¦­1–AºiPGÉ9óôFAÍ|Ç•yúÂ>[T)N­Õ3–#U»Ñ}ÄÛME>î¯ÂþÃ÷kh,IêôÆ`·uÒBŒ&ºÎs©çæâÞ\¼| ËoïF»T˜¼ÞÎQ¸4ÆÓ ¨ ÖÍç5 NfÁ5©ÞA}ž"]ßÑý2¯î¶_æäªRÑeÀæ¸tt%“@Î¥®Ñß‘Ø6+/l”1á‹ •†Ê@xfžÓ9S–ãâÈ+Àüb~X¼­Ê¿F¹3«dD6õ¼dÕì—zÀÁ†°Ý?äK™ #û½lHÃu‚žxlÓÛ*­”ˆCJ½&õ½K®e#`è¶7AöÖŽÄÜ~Jå¬ÿj÷­R._ÕäÌtéÉ0k˜yÇÁy›·$«K¯¢BÁý|¥ÁeYŠ¢âPÓ!Å Ô=K+vR½^IàZPºìzµ]>4«8•ÿ„’˜l)ÂFŸßÛܸÙvô‘}éÒ:¨-ØHë #’IEakÜ©tÿ1ª¶ ¬G‹LƒPOiŸÀœ°Q¶C"õã ØÉØ'QŒ¦AÉÖs¶šgI•^ÒÐoo“‹¡g Ÿ$’í-Z÷ÞՌͳu±­É—×óÄúV¹Z Ë’’ G@‰p•‚D¢€“Q‚B¡bogȺ'¼ëˤ<ñãý0A¥zâ g8gÒew§8ic±‡«Ràè Â£weÅÏv3⹮וQ a8§zh’>MZ nàÒÑ.Ù•Ïļ ãTá 'ç úY"ŸNéøâ(QcºöÙ%‹¥-™…¬C¿yø?å¢-{Ûæ$Pò1&çÕ”@é?z›»FаÖc(8“|¹ Ùíj §û$ž/z­,õS},i¼ü³‚ ¸ÖÖ”cðãÖ6шÝi æI!qN Æ«ØtíÃe.8©ž&âf­·E @©lPœõEÞìhBØÖÓª‚é'ð­pJw6€ ÓþÚ˜<)ꓤ”-o'}¾´'ÆÔû¤ìxóü—/µQ%r3;ÄfIÃòTîåש¾ß#û[¶’]ú›Péi½pðÞð¤î¦þù„?:§»òªŸMðoÄçoÙÝá,Uï8ªá•„gºù “¾Âhpþøö²ÚEÝÙ¨ø1e}3 ÞM=ó5:Qê°1 ð:ͺ}…Ð1Ï~,³ô˜Ji¤aV§Îh®|º=„å7Š4ŒÛ]“ß*Þý¦8 ñ±à»ò©h иäº)» žÑ %òk¬^ò}ÙDñû01bD`ÓNáÖÏ ¶ÏŽ5Wݜџ8¹RgV[Ù”%.\¿aVÐK¤*è¤óòJZB—6ôš(ëÕ]F}¢H ƒÌÏ] ÃóÔHpXTtƒL¢7èÂ2ð¤ñKñÎw9bÀû/hÙ.}:?'ØŠÓZ¤Í_ó­ZøÁ'iµÅ÷ÒlPO>™ï‚´Â1º§òKÝÞ¾`~‘vû\ݳO??UÙ9ßöÊKpqkôÓìøk]Ö¸L=ú î±\WºM[„ZÊ3Éy­7ò¸î>zÊÄÕP€Œ† NIJm==~¹¿4š‹PõaT‚´ýí¾þ©Dùó7t*<ÅýJõY¬•jxI-ÀwÝàÓÄNP&Bo$ޱ&ó†‘1> ©ñ!”øO45@‚)Ûú*1‚eï!…C‘·XXÝ-MYÁÎ÷*ÝûŠ®Ø­Þ|ŒXÈø½YJ±ƒUUQ ú8F%ßàÒ« ®vÈ~v«ÝDÊ⛎ØÊI•5½úlÈöÑÇÇ,äLÂhWò ¿VXY·«73^S³E‰Àb,²³J©íA+qºŸd©'~ûI¢×6Ë­<Åÿj/YŸ¹<RàÒcCž²ÞL4T\xøihqâ&]*Õ˜À„ÆÜòé fÿÍà¶”z ž}:¬öÇ ÝØt½ÆÄ‰WöK–›6ÙNÁêYVÔÑÐû]:ÁÑYjU2³ÑÜw@ÀÌc|÷(Ò…U z¡ü¬A1<Õ%n+-Bx¿¶ºê[AKߤVˆ›§ÒÀÝïcQiÈjψM¦ÑX[Úbƒôibÿ=x¸ÍòçÄE]¢!HÚûq;y÷wÕ9*ÌA²¬ž1WÝ8¡AJtùd[÷BC?Îe#9µ¤öÓ¸ws´/–9VqÌE%cX5°ã±6s›ºÐéM(Ÿ¿¦Ä't%¿7Ö *ãþìšsë½4¹JãRËÈÀÝd‹šhÊÕK¥ä0Ÿ$a6šˆ(#^§¦*g*OEK*aŠm1«ñLeEë°O|îw½A:DâRòyî†ë3ç‚t»>³GG×Ä´TȺ Ž)TÓʼnË™S”ÊÒo$rw¤A_d™MÚRšCRCzû¹r5‚Bz¥Tpú²¿÷­Y@0f£z§ìa%OÎUs!Ã68zœÏ¯Š}ÊÃmâFT©á7:kiŸìâ^‰ŠÕF‰÷……Ý{pR\G«=A7VÖ¨¸ÄŸ%:ÏeËôbë¤sákW˜ÓU ¼ç»ätj5 v¾¹ä ƒvžsq= ¼n‹Å“tV‹–²n‰È¯z øç[ kÎò“ülY-w˜Ï)/¨ædÙˆœ‹žOG5¹xÊ„£ß8À>Q”’#«fäÉ£<Ë% AAöÙ´7AúÑ•ü…™‘ “˜Ôì ƒ(×Uß}À0}ž¼¥¹H¥]ÕY­[ºÞŸE;ÛŸha}½ÑYJI|ÕÛ õ $ õL[ãíHs}ïty"þF_‹¶Ú9®W[¨Î»‚Á, £}‚â}vÂ!‹,W.絇‰ã§8Lm¸ºÁP/M€/rZñ¸1ixGs'$W[þX¼_‰e^8¾ë:µ…S_dKÆŽ¬=NH¥™)äA $d­ºû'²àúãHâ‚E§ðŒŒ¡ÎÇËl¬ð×WÓ†ò¯K‡éáäôKNE9:Çv ¦òbãJ»+ÇnEðLiz”,y‰Pll½Wð-™*U/˜5¹`'áúl¢è¹¦•¦uLc0¥dÝï]öÍé §•ù¾1°9R%£¿£Ï”6ëƒGG,]+‚ŠÍ§•ëÚqª=9Ú )s ݵָ½×Ì0 %Ñæ]eÅ­),ÔŸ£KQ8‹­¨†kyƒ¤Dh@Ó39ê¤ÊPŠZÅ.(ß…Á ÷úS_@o -æC|{À·œØõ¤ŒK¹¦=%9s¶ {ñ™´AXÜþ>c`.ß«KN&\+…ªkùy¨z+ôcs?&ÙøB‘˜µe²âÕWìFwOQ°Ã.Cë6s¨V6„ ù³šÀ‰o„VTnô~8»¿¦í¯œÐJepa¡k\ØyÜõR_éX½úöºnyë ¤/@ì[!„X7 ^ŒiÐß|À–'+èý":~u„±(µöÊv½%~~!ŒÉè#Û0βÓ3ÒŽ7îベC9ÁÊþ£ŸöÓâk­Ë­Ô¸î¨y Kg8Æ¡Ñî*™SË·µK«ú¿ä܉dõô :)[Ò zÜ«j÷³:6}Ë~Æ!âÙ»SÐ;Ë×. !"E\’h-åã—ú=r;s§Ÿdi)'ò&öŠ·º‹…ÛKêy5u¿ûìvp" fŠp˜ú”ƒþJëœ .:­•|0Q˜´¶/OhY>Jo¿Ç:¾Žý}æ2£z”¦‚¯[åecØ—ª—ÓÓÈÅF\Ú¢‘©ô MÑtÌt*üuà^C{0žÿZ4s‘ÁÚle&ü«¹kaÙÜü.sÆ7ö°Â¡mPÉ„œÏ”£98_Ó=r¾µ])½6„úÎI_ ØiÚ :9)Öîæ©i.ª®åx8ú®â¥˜fÒm8ç-¸µU²Y¥ð„ïýR˜à°Ã8‚á¯7Hî f”_ä!wÐÉ9vØ…O;p磗ϵ<ƒ‘È… u5dœ=î!ˆ¡GÁ|ðÕ3Æ©7›AŒ·‡Â£ÑE!Œ‡>óŽôúcbd‰ÒÄòC8LS¾TŒö“ÒY­ë ‰Lùtí±ší;¯Á3-o7dX mÝÞN•Ù‹[Õ½p”ùÙ © Ó{s…l¯0Y¸˜ãæ×>ŠÚ$KU¾^­×ýjÂ@Ž3‘£“Ç‚uÇÝ84ûØÀոи‰ûµÍ²Õ¨|Ï}´”.ë·–²«Gƒ·T'JšÀ¾q„ƒÊã´ÎU^‰K=)&#¶ [„¼•üûx»­pïhR2 ëÛûêZ¥2îÂwˆs‡"+jØû¸øÀ¨)^¹88íB§”„-ÿ“¬Ÿ“¯ÞõQ?‘aAœ¶(c·4² à¾ÍÏóÇîYH…å=¬˜¨ÒšÚ6Þ,ÐÈn‘‹VQDÄ=’oˆC‰[êæµ QŸ›ˆêý…÷ƒÈYÈoÈW$y@5Îs¢C¼›!‘g‚wÂàF›,™c\K ùÊÌÐà|ÔÒüñnb舿´åì&Ê3*‡.gˆøká!Ñ„Lí9\¼kèÚda]Æó‘.{ÐÀêwÚívÕT†YU׺SCØo%­Îjbêõù‘Q ¡VLR»%jNÀ<-,µÌ<ïö»ØwÃ{ÞQÒžšg$°ÕX?f>RkÐØq*ùWë™ü%tÃ-b~zëhgÞ8ijç„MEí4n§…¾LѸÉK]®à“nM„áš8…#Ë:¸5UNæi¡ßðŽBã&¨/òØÂ10^OAUº1I¹¦»?[i̱€Q¥äE²+Ô0Y‘u(ÀEXíèÆ:ñ†,o‰‹Q@œÌ½‚ä­Â$k'’¶æÊ¦ €õ ’ Mñ¨\_׈¢9o‹'ÞÕBJ'Ç+„}i‚àoŠ›Ôh  èì¿‹E4¾d¹8a„¿Îf°åÓߊ¨¨hëN;%¡7õñŒ ÅiWIŽÞ=¹cÓ¿yìЩvð%½3ØòŠ3ìŒÑÙçW9sàíÞóP2Áø”)…‹kÿ¹+»S"o«EÙ¨HÅ$õ*¦/æ¸jâ¢øæãš—ôõk%í@†ë‹¹ä‰•Sð]T8Rµà»aYý‘w¨¶àȃ°W®-ö<Myp|žÖõžycmdf·X5=§¬l9X¸íû¾7ïqˆ'¢ Ü1jm1fŸT “‚ì—çuý1Ýõ¿¦Ïù‘÷=7Í_„5õ•QŠˆ;»‘Ì'¹ç°Fy 6l.÷/AÎ)xZnó‰jçîoð’õ«]¸¯ Ÿq ”DÊtׇ¥R$D‰ ?Ÿje»Rv±t­í¤‚.†± ‚oóEšOV”CÒjr·ÒQL¿¶87-°¸jÕ™KÜ¥k>è0Ù»V ÂMþ””•&ûÓ³ÚméÁ d2éªè ^ß`ƒN$/ÝO²-ª¯ý–qS©§p°=fÖĂ֛öJf8O±-‘'0«:?.¡¿làÂI=Úš²jÓ€º¦@ ~Ékæ%½{€K’U,¶‡ží+ž)¹¶àô†.ä=Ä£pt`¡Ï€Ë”ݯÂ,™Øh¿oÁáÄÆ® °‹ÍÓ”mB­toÁ (U9Àd[rY-©‹êÊjZCÛ•™½Áà#G2j§ÄÛ–€ 3{?*h/ée,&ç°œú *9»ÿÆ Š´^\ûdŒ[¨­©ÇôNÑÇ Ù]È 3tk^1ׄ柈Hí˜;ƒÏj¶3^}Å9ó²[4®ÿF1Cßš&ÙæYO‡×'xÞÙéPV“§º.߉ûixþ§1‹à­”bÂp-.¦Ñî°¨ô|ë‹^«Fªrd3æ¾e×Ô˜+y•È»ƒ1OràéÐ ßj„ˆÚoQÍ·w$åÉÐú§&Ÿ;z ŒB´†¼^àºÑFFW$šïä†íÔx t¿3ÔÒîw%á‹AÓ;¼¬*ž¼if›)FÞ;—ÖÕÞÞñDÜLÌò'>‘ƒ¸Ã–=SÂ)E@ÛMK‚5‰º‡SÕ—ˆ±"Ú÷®Š ¸w)páÌåøû‚àåŠbR‡%:ï«i¸Ö•ÆŽ¶ÄÂJ¶]0Sø˜"_/7 §´Í=7áí˜wo˜::§ïxˆÀB$ælþ\z$À•˜Âè´†b‰R÷vT×f = CßÒ÷£C†É'‹˜ºÙ`½º}ù±‚rê% ¢ß2°Ä1÷Ê2U5—¢£/ûL®5²KÇ1ºFVSè7OØÔà­H¶ñ»)[„ho¦w³ÿçä~׳Ò#Õy3—•Œ+v;ð¡‰Ef—YºBÇ91¹A¹jÖ‚1Œpe¤+í¢öõ×|üÙÁP£IRõ“7ËR /ÞªbFŽ[n¦Û¸jæŽY'¾$ŽB]8ú\• ÷³ZH1’ïKa4u#HqXo² Ò1 £äóLW¡ÝÂðWX¯¾]»P‚”±/b–$Wz—æsÐA±­Ú:GPê!•…_£Nq²®r§}+ÊóèWÞšÈjĨÛíõ,Ïú+Z±cÍÑX?}ùZAÞ\H#Ð#l&šUK½_v¨ˆ3~ŠZйº9Ð*¢5—. ýuö¸y®PàêÄO'$NÕxV³´ÿ2Á–ãöP8Ø}aŽ}ñõõ~A¡J7~’‚ñ€Êì"ÄTG<¨Ê(í.(£¼ø<=Ò’EâRݼÃöÆo…Ê7\'$¥؛-AÇÌ9Úƒ™¯×·bRÁÃàhn—rg1äê;Ƈ;BÝNîðµQÜ&‰+#ó˜Œuö]ÞÆ³O[DGG©ÿÜ,B+€n¢†ßBy&äräβvªò[é:-ŠA0qëà{–*tø r´fب4_]˜Rd×Ì+ý”¸3~d)ªyäÕ”z¾¦!,~–E›^0Lv`lû&ü¢'%ÝåÏÊýw¢é$¦ehs©™diMÂC\úÉ܉ót‹ºd„&?ba¾z †š# ¹’¤|ƒ“7MÍ+´Ç=Ø#cdYÉóêc©[üxƘ]E€-rqï–ÏXçx dm”›rŒ9áè…vðoè± Æ±æ'ÕëGÈæp¡€%9Í–6“ÎÆ~”y.¨Z"yÑÑÜ 2¨—˜$ò2kN$©–‘ª™Hœ±Õ±Ä³ÌÙOû}‡K¥'%T %£þ­‚·ªæÒŒ4?5æíùÅœƒ™ åQ¶ ·H¡[*v]Àê(í—¤^VŸ(—29‡d 6)H­Šá8‡;BFöýoË^ÜQ/ˆJ<¯¯!¹Nœ[T¡/P‹ú"ÕªsƒæÞÏê<±BAÇ„h‘1).XߴĺÂ[f€ð¸u末HšØ‡È’;]Ý€ZÇì $‡¨%ëÄcŸ°úÊ~SòTšðdµ1Šæ?ÚÐéÇ™ ŒÈ·Rƒ¦Ò{Ì´·eû >-±EvÄÉŒî}È?ŠèA<}«Ätí6뿪sÊLÿ¤Ê XLEÊe終‘´ÌlÎËb×Ç#Eq¶KÓ±'²[L±`ìQà`I)÷5,1HMÖàí*ÂðUèRdZ£b°ìó›“<ºDµƒàÏSº:—cã¿Ãa ‹Ñj œ úpáâQr“5·B!‚›tðˆù– ÚmÛîxB¡Šó *¤ã×ZãN¡sea ʼn‘E\J>vž:0x,®üNú´¾ªê½³ª[º†¢|îEoô¬?ûX¸Ò#âÌɸ־WåvÅÂÕmÎá‹Ëç”g¡ì‡$ Ú ò<þ‹cö·û¦ºð>’Â<× Ù™¹Ð݃²•aÜ m–×¹¥› Ðìj–üZ6–Û Â¦ň\ê\<+êZæÍGÔdy’‰¬ÿL§0Å—ÌÀΗzmc¿•¤‘þž¹ì‚HÐûÎtbß/¸ÆÎÀ®4+”'Jí†sįŠ`'¹³¤É(øÙdt¿ÞÊg:ÏcÉzÜùU£B§g•£Ê7êdûпÅëeŸÇ›‰n¤nŸƒBöè`I^Þ{‡:ÀwÞUbàø—D8ïhVÔl«x:Fuè°³å—r‹‚ §zúÚw÷UÊ^ñÄŒ~Zå6Í(’Õ‘³iE>£]íAƉú¡_4¾Ú¼®j–ØàX)Z®ñR§4äÙº*Ø3¶<{sz©ëo bËEh‰ôz˜Z&ÿÚìº5-úeþ~ÚŽ¾ýÂ(žŸÑfë¾áu}ÖLkY*tÁqë!+Z.=RcÅ)è†x™=ÙñΖKÎ'LÈ£Ú£dÂL7ip_|«Éx˿ّ³ÓŸëï?ÊóÛ,~ä\åKõ3 D(tq!kwþZ‚­*DÄp£Þ¾ï˜n‚Ö°ZåéõD°=bÄ[›Tu•¸:+–Ü|ƒ1Ц¢Z¨öÕLô®04QÎW?­Lå‡ïqîðÛ¡àQ¾>Æ ¨«ºxÎèG ƒ×í¶•ŠfzÚÎ+ 'Ä¥?2Ý™};·`aíűížB3·Sé’ë~ ï9Á˜#7„.Šfí/`ë°cè>4»â7^'VIÜDŒØ»©™Ä(^pLsëú {Ê¿Phy¤FØ¥@2„!qP(o%žÃª5MÚH, ¾Ú&áÿýÀÐv LRl]„×ÃȪÞ-´È_âî©“ŸT¸öÆ€êg/y5ñE8ÔÌ ~Äoíò‡Çºž™Š¶v,Y±3¿ª <ýVÇr© ®!cQ*¹Çër¼wÇ ¦lÇD>btê“}òwÜ“Ö,Á^‘|‰¯ØPo`Ö´Kèn¸£=¯…‘Sm…ùçÀo¸ç»/ß :šº¦Xf±¬} ªÊªÁ‚Ö²S.@ –E˜‘'ö=wï?ù‰PŒL«>eìzÁ?¸–ÿ*Q‘gBÌÞ*r¨¥Ìzœ}w"ÜbÖ82° H–ÝÚvôÀÆÎÌ0 ÝPoM%ä™G¬ôn0d«a‚!›¥‰{¯‹X­É½ràô¯wEY¢h˜!eOÙÌ ØÜTž€u|žøâÐ 1Ôù¨îcÈÎ-˜öÕUˆ-Úª'Ó»žìvàíÈò|è#Ûèvøí†ê)ép”¡‰,ºO)È/žéF2SRŽt_Ìþ–[Yvøv-/²\. §EaðÝR²Ë™›Û\Å€á‡~•1Nâ]NY¾¥Ý• vo³ óegŠêf@x3Ìë4*•åPBúüfkùÙf ±Œ¦8Ý€Õ¸Ë}ýw˜ŠEu9ü®ý%ÉDmþŽb,qozïr¾ìJsðòÉ)¬˜$‰‚CLPû&ÍÈãˆM(?“eûpŠq€Ò¥CäþÈKˆÙÃ0|u/¶ýÓ,åaKMü~ Ëq{íËú‘ˆ«Ì±¥Êw$ûj¿º¡ÎGû_>k/ã‹mÇYWÔ“{pÊVÓ%ƒ!/ŠÒÈŽßè¸_±‘'½+ëú|iVž·±¼ælñ~GBÛÒí…VV.ÖÙ¹ó¶ÜRóŽ: ß•ÀT«äØ óñÿY$Ö1ùªé~z0¥‰²NóÕ¹ïk? érz;2NLBø­»užÞ8¼a Á×j^^rMˆe¸lÊ`z¿Ï§ycÀ³ö¬ ››“ÛÈ-- ä࣡SÔèå›4Òü¦/ò¯Ä=2|h‰ Z…ØÊщìõÚï}L@¾7 è`ËÕ*Øyg¹šI)Öf|o„§}eà@· Tö6×`¹x×ÃÒµfšßÕÌNL»fﯻ¤ããR?@´ Ž8²Ê¿”áiêbím èVÂØ|‹6=ÃEæÜ>øÎIÃqãÛwv“Í™]EÓo§ÑùÌQ/ õKaïlJIßd˜·pqe׬s¿yä¥@OÕöM /µ’ž¥²Ü¾7w#Z Ù\÷·x.Aý2ËerãwŽ7W¡èŸfÆz{Œ”üòöòä׈ä5Ôò…½tK·j;¸Ù Smg¿ßÔ¿] kGŽªÞjÐn(rÐVÆÜýh=lˆ ‹›Ç>0*=(í M¥xú•évÄ{¥}RARŸY‘âÁ«(¢%1òßaL¬Nb¨£Ÿ~@bÄÒ|Ã}eªì̘8k¶öæU¦HåM´ë,!Cùþ ›»^Åp,,ŒÄÁÃÉœQ ­?çD;ñt>®TNêìÁž屹ºN.gH›Y,PMß5MùŠô³€îô5æéÆ\°Â§-]3ôgxáÖÍÙ˜xfgáîùÌ ¢(K†Wî8߯¥^6æ9‘>¸Ò<³©tf„ùË`Ò{Ôêm>h-”zB˪:m~ÞÙåí}¶Xa'VÐ ½Ö!xšÊß2f"ÈŒ_:ÍÊq?k§h÷˶$z_‹ÐŒz]ôf<ë2Úl‘`øüx^/ÒVþµ>tÛÒI¹và0^µø:"Îñà1Ä-ú^&X&È6ÏlÌP±­?©ô%;Zª<í„UÎg~[Ÿ‰ÊK¨XÇ`®]?X®ŽÆýQ#B¥™×6Ô‡ø¾âÇ8Æì'ê›nÉn΀Ÿíì|Aê¯_Üì•Ø¡jÃ(Bá ¹è¾’.ZåobÌ€”…&YÎ2Rw)lñÙ0ÓüòOXÝ£Aø“ØÅÈÛªkì©Ø”—üv {¦ì ¾àzZy2zè×î k"ñäó¤úʦ6¹z_|îú(grŒHí—³Èä{Í1%i⇦}}\{¢n#Ï2®½—¿µÊÏ[IEäë'h¶Vsx]:-»/ù©˜áøŽSÛɧ­ñ%PX~ᛞ/õNà6] Bê >¤ªõö’ø…¾6„‚Æ1굕ÖÈcôÏ}××shVsÁZkkó·\‹®˜§»Txœ\$ýz!å¼ÁDå ´’Ô$äÏS[¹ÖÿOô ýuz4,‡þߘj‚Øp32í$\LØñÉDžJ2mûþ)+j‰uºR~B!-ÙD®y¡^ŠNmm†+ƒ¢AFàÚ=¸bièÉœôÏlHÇþM©D>v–¾DUjßgóÂ]Ëð‰!gg¢9D³¤LÅáÝîÎb<  3‡ç¯ˆ¸2 ¡¡y‚3eþ dW™Y™æyèå&çÉ(NËXÁù ÂMĈÀH—¢<2úkzÉÎæûÞ×Ö’{¸¹š>;£Ë† aÎ ,%*úЃ¹ÃáÚb×C~¥Üô|¹7Â^È$€Ž~Jõµÿ¸ý\{˜²æjït], ͺ/½.2÷Ú‚Ápôç6 WøÝ®R¥7»Ù :¯9÷rHjHBÑÇè¶:Ówvý#+’ID*/ó–ÁSXÖv DZ3ó~;ÜÞ™Ô°nô7ç[,.††7Zl¤ƒLø{àä’¥ïª41€›zŒ½¼n]Œ kiPX¶O°y±]Ò‰¿-Õ,F4Úó‡ø#fˆl\%8FÍ9Œ4H (nÏsÎNÿ™*s*¸»ÕAC¸ýI—ÄÅñž £þÏŠ°”¯Ö0Îko“ 4°ž°ÆWÅdÆeJ—áHÖo™…\&ÁŽêÌÍcàVîâKÒ3&LžÙe vi®¯‡!I ª¢² …K¼»ÀÇjEs2å¦Ò\Þ]ˆBù•ÓË>Ž0ú>?~önñ“Éœ¥n‚ìð¯Ûþ«÷ \ZÊÛ-o.Ü2zdz ¤ÁÏçDÙ´4¦Œ¤lç ‰µycÀœ¿÷ÖCŸuÐ39ï^ƒÔõ»Êøš¾ƒ}4º Yìõ ^T{ßi™ÅÃÉM¶d\)åRŠgÛîuu‡/¸mt–¢ýVùþDºÛ{¿³ŽÊŽ矫 `~…nlŒÛF'Q¯²‘i[!ˆà¯™œžPq¼¬×ž²Iñ%Ò÷RΙRo‚¶åàÝÒ¶öORÎ×G\ endstream endobj 1261 0 obj << /Length1 1487 /Length2 7401 /Length3 0 /Length 8407 /Filter /FlateDecode >> stream xÚuTÔoÓ6!©4Ò±¤4,Ý"]ÒȲ»À"ì»4H·€ÒH7R‚€€¢ ]"ÝH¿«þã}žï;çûΞ³û›™kæžëžk~ËÁ¢oįAØAÕp?P@H ¢££  ‰ rpÃPÎпý„¡îH.ý¿*îP íS¡Ð@ðÀÃÅ¥ÒBBa!!©¿wi€*Èè àP$!‡ ÂÕÇæàˆBŸó÷#€ Ì JIIðýN(¹@Ýa` B9B]Ð'‚AÎ#EùüG .YGÊUZPÐËËKä‚@¸;Èsó¼`(G€! u÷„B¿(tA.п¨ rŒaÈ?#„=Ê ä Î00ŽD§xÀ!Pwút€‘¦6@Ï ÿÖþàüu9 ðŸreÿ*ƒÿNÁWÜwØÃœ¡=um”7Š‚C~AÎH:ä ‚9ƒìЀ߭ƒêJšá_ü`w˜+ )€„9ÿâ(ø« úšÕà„‹ ŽBþêOæ£ïÝGð¯á>†#¼à~[ö08Äþ ˆ‡«  ææÕTý ƒvþës€¢bB’"’â¨ê vüu€±+ôwøËæàçŠpØ£i@`öPô¡ä  Ü= ~ÿ;ðŸ!€ÀÀ(€Ô'ü·:Ú µÿc£çïóX ¡åýúüódVwöùþ{Ä‚úÚ•5´yÿ¢üOPYá ðãø…Å„@!aq€ú!à?ëèƒ`õ!ôo®&ÜÎøÓ/ú¢þîÙó/pýµ!Ü€ÿ,¦‹@K àúWéVBbB`ôðÿ[ï¿Sþo2ÿUåÿ©ôÿîHÝÃÙùwœëàÿˆƒ\`Î>!ÐÒõ@¡×@^øCM¡vW y¸üwTB¯ƒÜ-i~ ¨€è? ©ó†Bôa(°ãÙüñ›üZ8gª@Â~½bÐYBBÿCoø1ú5‚DkóO„D¯ê÷ ÙPôRýgjp0òkû„ÅÄ ww!zøhK àD¯)êý[ÝA8…N 9ìî„¿-jürý±„‚÷ÿµÄ‚ZÿZA, z¬‚.ÿ˜b’AWô\âèÊHgÒñ·ç?š{¸»£YýVšÑßöï÷ê N#À2aNua­?k”è½øWeqöÒš óÙࣺÕF}O4ÊΚÖ*WŸúT·qz§«ìö3g~âÈo¹žùµè~fõuf»gã7?0G“üNXÇIš0òMS•™¤KÝ»1ôcI; ÝF$þ÷êº&“¼8)ËÔ%„·ê¶wÔ”eiS1H=Ü^4D5Ûõ¯ˆÓÜË]tI]zj¦û‚UK¶ýŒ0Ñ«št¡·¿o–ìãûØàž!+ûì(25™>UQ¼ê‡³Ä—¹¥ž[/Èýì4(T¨ŒtòY iûT ’›÷h¬.ÙðÌœ²¢“·hHÚ ^¬;"‚ÒÎDÄ:C%ÓrGY#bü ²sê†AíÍ‘ý#Ô§S8 ýËη;†Þre±ù;V–>ù¤dë”þ lÁ/`š§Èÿ@Îãº}Ú¬L“õÎé.:Lo—6L%ɰw¼©é¢__&lm«ß3˜íúŽZÕמÈ÷¦:˜¬(ºÅHVH¼EJ%ã%§$S/î&ø Ú4*$%8ädÝÆFÒFý\Ý<”póD‘ÞQöYû¶¼fÚ°<2Dd¿°|÷vxï*íIûP×@¼åÖÏ Érã¥(QûêÕ`Šæœ¢Ú~šÜíXK9öHQ5í–ÎÍ‹1‡Œ±•°0N ñ»œò‡× çª\/%Í!ë}|ù¦—)ÊÈ‚7¬Ó­Ã ð)©õ‡ßšYÎî™5ú­²Ø8øWyÏýBZ½Eɪ?$=Ruen¹%]©U‹ÏöÂÀzÑ››!hwß6Î bÍiÿ”" ¶ñ¢Ã—Rk@NÕHL¶†ð§㪱ڌ¶ÓJ´Ô;¾Qnì‘k¦ÉtBŒç'Se ­¯OüÅ_­¨{¦ 5õ°ë`Üš%mJâ3ÑOVC®gh$G2´)x&Vü›@ç`œ{ô‰ÓO aô`þŽ¡À1I‘ë'Š)2rEt(×F=¥‰ÉûtpÅC¶Iï¢ &¤q­›wE‰Nˆ!þë†ø ÉŠ–Ͱç„4ä%„N/Òí%êuy‰5DG­Ä"]Éñmš’FC|±3«yÈv²tj5ã5ó·Ýô026=£×÷õצUéSB»5ɋӆö1Mæ¦$Ü&gæ­ïð}ÇÑ/$èØ¿ÂÐy1ëdø‰’5–4êl0Ô7ázˆ7f˜>yDøp³P•±úfÚ©;öÖåEß+§>ºœ`Éå•Ξ P!—b@aK:6 tðk»èðz þá &]ü-È Jƒ&÷ýÅÑJ÷¼ƒC¶þ™ðذp4q˜é›d;A>lÉ,Žj0Ÿ Ê ùa…ß1&Åv²NY3•ÄÍÙÐCƒAj‘»®i»(u‘ˆvUs—}¨ˆ+¶³—5;‚¼¬†ûšîºl:*£ÆêV9ž±Åˣĥõ%úÜ‹öË”VÎi¤QÞs¬B±BŽvRWºk‡m_æÛ%eÞä,d*!Cûçbg.±®–Kð—Æí¶ñ(~KÙ Æ}µ] \ú~º*ÞYœC¡…Ý£#Â9/,÷i0³DyµÿËÚô~è.óÇrÑJ•e¸¿kôm—/×û3ëTïL+]9åœ÷oà3žd–ÌJµN¾ ž.~|ðÖ|Ÿ¼Š·^Þ÷Ë~nv¶Î_ŠPëááWši~ÝàலСÎ\ˆ©QIú°åt{Ž à¼I—é²9Ì{1Ƶ„H„"Ó”-†ÝëEBj™“ oEäPÈã'O9|¡qx,ø_·]ì¾¾å²Ð€©k:Š¡/hÅpØë†WÜ®i¯“¡»æ pàc΀e%ÿGŽFk9ǡҶ/Z,5%ï e±éFßLë/Ýn”"êE"“(¨Uwð?ÁJG/Uï눹bDHËÌŒn²Ô¹áAʹй6ˆ d¸”Pf>Û|ÚÖÖ°­ïçSG/ ÑÔ@¥ñˆšÒøÙçrÓ#oo6ÿ ¯äÝNí“òP aaSæV‚(¸É¤¨&óÈQ§‡Ñ{<“m˜Õ¹­k©(/¼¦FC8Ïê/±†CÔ¾kÝíxhæ.bðL[^ù¦ŒCùBUÜ!{ÖìñÛŽÅ<-Æ0½(§É±Ùçy²u¡2u‹åäÔéë"ʓ湟eîR®ž>±&om<»_¶®·¿<©.ºYÁÑ|X‚ûóÛ-¸¢nJIÅ©Uc™Q—co;4³r¿bóý’„CÈÕAÏ£ˆíÕFOràýåzãÃ$ÇLxÞMÃvÁ` #Ç\Øc]ßHøcR øá¨í˜ÆúÑŒ|VuÇ´ÏÙ[ùá;ÆîØ$"$wmsØ­ºiŠÆû{jl‡`…ö;¸-â)>ü`—½£‰àæû^£¹”ãwN`®(,Ï\¬ê™Íü©öâù Ø\ò‘ÜsÍ{2¨÷°t÷/¥âÞ¢¦™ Y8\Lë5–âBË<ó¥à;æ30£PÍ=ܼo”b]üéz'’í§Ú¢¡/³áD§Ä7ê$ú“2Ÿ8¾dQª•N‚ÐSѽ¡ii§—ú‰ÞÙ  _Ï”ßÔt¸¼#PAvc|³Øˆ<S—æG“ÑÏ›´¦\Œ+R•g¼ÄUwþ.xì’z‡R›Hl¿áG×`IÒ]Ùã…-'Ôm-íº3Ïãó€¸ÏõAUêj´ãææcGòùï—¿†ôOó‚è@&`ÏJvìÏÞ¡{n«‰;¶Ì5šq]&é«á¤-¸\‰f¡–nÅþKÚÒ%½‰ÍUÙM÷üJÂŒc“5µ~r‘èy'E9ˆËezðᮞOm» )ö,*ÚkÑ×8g´¬†™rIïs‚¨wÀ”Þ¯RÛs¯YPCÄìðmI|d)|ÔÂýJhÊyÚ“ÕD8þö¦Äµ](©À‰ô“#n~H§ûùÚ3Â÷¥#‡Xã6œÀÆ•"U j틯¼T1ðÃbž[b¹VßPù»,ZI'ãaÙkE¹|Ï9ÚË÷a¯õ†¸®®ùò• mŠªF}_ÊŸ÷°ÜµFE3íµt(Ö¶Fñ×ZÙ:cJ¯†/±Û•üxM¸Ïä©oùÞ@zšn¿MpIÈT‰¶·V,¡,¬+§ZZTWݦKÍ|’b9“ µYŽ3)b²Ž+Ù }ÊFýI¸¡ÁÈ­'oýq[BÏXU§ÍòÖ‰*…Ý¥V‘Xî<ûHz¸L(sVþÄ1«=úŽˆµ9ñ´åríúÃ>#™Ì^µ_/§‘5XܸHáGI–ž¢á{g;L­[w†$HåZ>âù`yÜ]&š6À?´&Rq d¨*”ÐÛ|ÈŒàʰ L‹dŸ7ɈÐ{@{B4ÎDÔï±}åZõ%GB[ïwæ›7¨3ê‘ìW¡2Õä!Ò ³ó‰Ï{xðì óRdЋ“©—¿ªk88?Ÿ }:@w‡ÝóJTLO+àí.ïIrØŠwY^oÿ´Ò8iöbîäñTI²Ó-Ý+Wâu6îæÏZBý´ëà\¥ÝãåûT i_j/MlªIÙ<Ñ:˜„é¨<øÉ±·3ä9ÕýŸ~}2MŸ¨óÕub‚ |^{5 ÞçXRëW?¹´¿Ö’¦Ü"Ü#<4ãˆÛL¾ ;‚,Yèý(g@Ô¾Ú¯S1 óJ+¾ÓQÓB8÷Ýëc±f4ŸÅ2Mç» &$G —6Z¯`µ³ÖÊq©þ4²0½7¬z>µRë]ÿ2¹¾ëjÕF“»Þ9Y=éóŠæ7ÄŠžW=ãYI*<°êÝÁñþ Ìšµê$öÝ*bVûA, ¸·FÔël O®¹åña󃲆a?3Õ»á‰bš×ÔÆÛ•îA×NÃ{'Ý_Ì'ü¶-¦ã1Ö}q㙃¥ïÍâf–œVMU8¹ÒûÿŒ+ Wd0a#•2ïê}©À£» xS Âý|M95Tbã<£Qc+±•tâìœ?`²(ˆ U04ÿHšy#žýi­&þàÇß |‘Æ‘õ)™XmT‹ŒíÈ‚©ù‰ÔºtbùFçá^ ûç~²Aű£øDv÷õ½óÚÅÏéé峇{&Û½ð…W\î=q»¹:—qS«EM¥ìKÇOU ¿]M•W"ñ‘Öšœýx·o¬ƒï7 \gõ~}É#Rßf?8cK¿Õ1¯LŸõL}‡#pšbŒPsâäê ¨È­@X¦æ·¼19kÄåÌä+|ü@5íÐåíÈ´Ðî´´ƒPŸ³èz‡Ž»ŽÒã™­ì›WåŒö¯êúŸSÄÍÞg˜UŒ² j´¶~íý'4¢ì3Qç­Öˆ¢Ð9é ñP&ƒ…k¯Ž1Sá¯$r„õP¿LpÖ|YA©ïå©¡nC!¹£-e¦?}â¼ðíS,íÈ¢òcm/=z¯Ž¦ðÌŸ®¦#¹a¶õqa’î¤DðlùuËå/b‹éŸá¬QM¥>sœ~þ@¨XwP/«¶û36&Ç#ŒÐð×ÉøêOæO&Ÿ¯Øì“êR®*˜ìϽ–Ç“…³qØEõÁ»5šÞ‹Y¸TŽ—qxà„8›JFÖ)Žam#ó"j*²J»7“âżÎÈST|?ŽW®J3»]«O›oð°3?½šu¸qj /†kÕhÒ§l[›ÖC{©OrKƒÙX>5¤ñ²&-9:J¼Z >ß³Ùe)ÆœS1i&¨|„ÓÉšH?‰òô²[‘ÐÎü>ïôEŒ'xÀ«ª«ÐW‰i ¥ÕbP-ÿ¸Û»Dwo™Iõp½I¼\Ölêú- œÔæRËÄ×àóýœõ%´†òé;HÔS¸ã+5Om“½ÏèKå⢰^|¥Ég"J–¬©NÉïƒh§>L§- x€"%áÄdÛÅsáâÎÁ¡¯÷ñpϸøa‚ß‘AÜ ¥¾õö-ñ¯ˆo»¨Y~ó~žô‘Â(̻űAì­ñ%ý@+~+õµhÖˆìwý„úÛwï:z³\WÅx?Q¸bÕ× ÔËÆPó÷ñ}¦5¤œs‘zË`‡=-ÞhrÁ¯dû°[*‚“¬|!ºT^\³)ï”ûfCßé|&gk×0Z¹™;D™m’azè=1be?¿÷¥ú®ßñ'tÃw›´Èî{üØÃö9ßE=ÏÙö‰'ÀÉÏÄ›>ÃA2ª!ãÎÛ™a /À`¹"LG*#Ø´“L#ð™BŽâ5«{N¼Jö^¼å´ ŸÏ<ï¡ˆŠ•2@ÒËNYi¨?4Û0é6Ç:lý¼xN“ ý~Žq@·¶*¢j«fâ8UÏp~µ%–I” ¥ÃûÀî}Û–ÄЂØº»Ñ²½³Gš*ÎPùë} â±vŒ“AQocÀ˜”^§ÒGØ«u‡•ÅcmüL2¢›&Cw$Z—Èùõ­N¯¿u Õ!×&î©Ê|ÿzøQëQ¾æ>†qÅÊÆÆbßv„K·€ñc¢l§{f¯\’ÐòËüHEŠ‘g²§´\ÖN·æÜŠÉº¶énàÁj4Šñ$ì;¿®Y%ô¤aÜpð’gçU/P¾HĈœR‹‚¾Áô#öˆ¾`23´Å=\¿-™Ó[Ï›:66½PÚØ·9ÃgÖ ³|§ª¹9ˆ®z8€‡×ª:$ô=ºŽmÇs´ò†NìÀï-¹¬á”©Í ýrn&ôá­ã/&̪IÀÓÎFh¦˜Z*äkÍK³THÛSZÅÇ©µ®ÜÛé«\‹O}X¿®OÒeíû÷ Û; ‹ËùL_·/›&ãXĽQ_zKæèÌ. óÇlìŠ/ [Ö·©- 6³âU¾—÷êa P”嚢òm–¯¼ºåñZ)u_¤­4«QØ‘ÞþÚ°»júN‡æÝƒ~ÕÖJŸ‹"¼r †eƒ*ÒÕÀØdS5—_dÖwKÄDSmnVßsÈnL·S,×5G‚Ù¢”Š7”qÐÜMpçøïÇ™õ­Å•®?‹FqIœ/n2u@/M÷Ï5ºšúTŸÒšÞÊVãòÍšòÐ- V;d&Ôjň÷Ük1Ÿ¤~V¶/ya~"‘pgÔ„ØÎH›„è÷ Smw‘iZ×(P¸I°Ÿ²&÷l³Ô¥Ü|±ÿyJWØ:7"°$œ˜¡°‘]o¶“æþ®8íU.–¹¾ä[ËãõË{ûÓš:aEÑ%‹.kØÔï’×ÈX}T¯Ù^óúl0¾.ò`”kÌ»^ŸÃ:‘k7 ¨8ÕŽ†Ä,Œû¥ûu¸É÷41¨Xfã°¶Üâs±B®æx„úºz‹¥²÷Ò0‘â³µk³¦÷c|ì«´I¬|Eèa´y4ßÍÆæ]FŽE ÂjEÒìXú,/'Ínvró¶“C:wi>™`<÷õ{åêÍÏÅÓsŸåáél0¤‘¥1H"šgP2mÁÔÿ2Yî ìLZ67#¡›ÓÔ7wC‚Z|Ow)k‡y÷â97t;³êì% qÞ­ˆTÅF˜Êæã'–p“ ¢»=ùìM$•ÿëƒÊvsÁ>Tlû¶àaÓ£G…rÔýŸ°·ÔéJ%ßÚ£]½vIìÙvöýÚ¨žÖáh†>Á×Þ\²œÚãÿ.uúÐ6>Dw‘¢„÷y kJ«ç{™'³¥œúY•ª,F ¡ñzB#$ŸÜ»q ¼sƒô4ãóÁo'Ÿ»åI†H—!†„_I§‹kCÔ¯·|™ÏÀF³»oõtÓþl'¬ácU¾\)tî²Ò™º®¦“×5^DÍDü#ñõZrÆÆwÈ_˜Ð HÙóô _…:zHápÑjQéU°¶ ÇJžãVJ¸ž”§º`_FVnHÊ4|+v³X†Ü„“½Æ‚âû7ËôÆÑíndkè`tîè¼z(åž§icã™5þb©,ÓÛÿ‰Uò¹±ý $ìØ`ùÖKVô?©£ïVt=ÖCn|Á‡p䇮nŒû·ß't¨$}‘š|®P/BÁ}žnšRød³Z'lËÝÙ*ë[¡®x{“­­ÒΣ޻؛1:¨Y”PVŒ{Mî'8 &¾EÁÒÓ:°à†÷\µ ¡k'…Ö˜pµ¶oÒ¼\1y%‚ÂI#w+¢Y»"ïnMœ½C·x &Ï¡Tµh¯1Ç–J—8-éZ¯„1î«§8F Ötx©{#«è?/Á~„‚íœÄ€Ø­½úì>ýá0=«zE©]î¹kRºòãi¢”&QGlç §Ð“ÆÓ7Î×\ÝÍœ…ÅOŠ•=EÂrè#ÌÔÞI¶¯ìs¯ˉ#+ŠËnáØI>ïŠK5¹U4çsúÞþA£W‘N¶Ý5Wó‚[¶ÿ©›­B²Õ‘Àb˜·Æ"WY¨ÇäUwùô4ö^¾2ü’Ј¬-.˜[×=Óۮǿg’ŒKxn(cU[oÑN(™ä7×w»Qþ5”÷hÑhh>©‹‰“œUH³Ê¡ƒJ/óFˆ’Ä­N[1éjTï…\”¦H·™ç˲ˆ¶’@„¨||¥EzÙ/ê– ÙcT²Eo’>\}ƒ²V?ta¼þÌSŸY‚Õ6áû¦¡óéìg_Øfjåa!L¢7u~>]¥NŽËV;«ŽÊÁOµbéSÔÆÇ§Täúbv‚}DÁQðˆcï¤ÉgâÀH{¥œãÉ©Øw~ꮓð4~ø©e´ê5¤ú^‘va8$ F@ÖŒJ„0ܱ÷Õ¾û7æ ›¨é½¼ˆyÌÏ–‘¨ºœg¥…J–†4õ¹{Æßá€ìž@6 ªê¨š?Á¿æÅg혹ßä=ñóÇÊÌ—¡Ú¾_:hRp.FmÒüík®§áwï–p’j¾†K——œ¬VéTÑÝ.¼N¾Êï="Âe³˜ £6~¸Û¦`ýús‹ÁÕèkí7Ð׺âÕ/…3r—m[&1ó '’ÊÝUÏ@¸fû±Ï걓±å;wœ×ð$/ÛèÓmï¿È?$£;“'Êh#´1™ShŨ^æX>7$U…qì~k{¡Â(î qË*Yâ(óL'V°ëÕ[ÝTó–…´=Æ]— SG:Ó°òKííyvl'E8µÌÈÕQ PTW—½Z¦}²îÓ3… ô©¶7üâ+ ©¦zmšž“ôª9q4Ï‘ì6­n^ñq8ÄçåOw¨¥g­%!lϽ+zÄÓ‘p <õZQ)5¶*ÒìúòÙþ)o=dPÎ["zýs†hV¹×í¢xÿ²ŽO‡ñ1]xZo[„'´íÌ^>Öç+2ÇŠ«Iëo^oÅ]%ôÁ*Ê,ø¹þQŒ“½*½äê½Bqý,R¡ytÝ¡2ù‡ŒàȘ OiêsÓm»©C6êzñ‘û Ñ“Ddz:פÙÅO“t|n¦ $´ŸßVL)Ò}Ù‘˜óÀéN¤ŽJô¾bj¥™è³­ÒÝÑ$1çíÙwseg3$¥]Åc¨FE±°aJÉ/¾a_•ð?”:N'&l2”Îë™(¼r¶Ù)°‹cö™˜¬e&Ô\JJP«k^§¼Ùnè’")£ž1lrÅYŠ~Ÿ,”xüþ}gïQÆŒøiú¶ñÃ~Ô›!D’¿muá=ʃÅFÎöD‡»¹®Ì Øêê Ò$<‹·4¹Tõ¢û抉εïIûrsŒ Ÿkïña¥ŒG¥×QÒÚ ä‡$™CŠg»ŠaaÉrƒ`ˆÞV`ŠdºX¹·×&VÅ0Ò çKB„&AÊòE«‡Ó~bñd§d>“o£ ;yŸÝKÒÍX#ä+^„IR¤b3öƒð9v$B©åå…rD°¥)äb×Ç~:ƒ$G9æÉðåc;ø9576®Ì{ CÅvê·Ç¿ó(nˆêŸk¥Ç7§Ð?Û‘ÛypyÓ‘Èê.Y¯}ÏÒè{ÉVO±½Ä(Æ?‚í(önGиêK²Zþ«éÒ>½+Ü‚ËDĵ•ý4¿mà`þ7ÝÀÕÁ ¢–N7¥ I'05…)”Ó$[äÑùg¼‘ΗPÊž%aèÒ' Žñ¦•tzò@‚Ì$/éë[t/†ßöf²{Ovûi°mÜžì?Ð3< 7¹Š½$Âõ4_¡ädA¤­+ís@ç^ãwtÏ’³{6ÜÃk+f9—EÅßò}\UBÌ[V7sXWóÚy,ú •W?U\§‡lT½nß­‹Ü)ÿ©únà endstream endobj 1263 0 obj << /Length1 1415 /Length2 6463 /Length3 0 /Length 7429 /Filter /FlateDecode >> stream xÚtT”ïö.RJI"]Cww7HÊŒÀ 14ÒR"-‚t ˆ4’Ò!)Ý¡À õãœßÿœ{׺wÍZß|{ïgïwïw?ÏÇÄ £Ï%k ³+Á p.^n @^SSUòs|xLL¸ø¯ÉìæAÅþ@Þ ‚#} 8§ ƒÔ<œ¼ü^!1^a1 ÀŠþ s(€¡60Û_ºã€ÜÜ@>xÈÕ#-A€/R ¶`ïßÌðpCapd 9sÀæ†÷kͼ@!ϳ_¾¿¦0€Çñ“WÀãþÛüSm<ÜÜmý& ²¥Ù¿¥{ƒmðæ¦a6â¡ÏjB[U²Ô^\#˜Gˆ'|\#…–8ðÅñ§«Éú9Ùóêï”æºy•,Ÿµkɹ"^/Í|÷[¯¥¯ó8ç¢WÚ¶§·Nœ¾;GLñ» y4MÔ„’gœ&G'VâÖƒ¢CCü WÚÖ¾GŸ‰ÈŸ¥¦k6Å‹™ô­’°ZX«ÖÇOUo³5ÈiDö¿éÁ›­û 6P²ä~sNY‹5J×zõH]âã%^²W%ñJß@ÿI7mGÌ 5ÏàãÇápEñ~ìJ£…|ÂëÜϽW÷ý¬•ÈìÙö”-³¥!j´NÖO÷,Ø]»_7Rvãìi('?•?,3œTõ=É|º<ºDêÍ;Ò. Â`¿'ÙÔD{®ëƒßñuˆ'ØÔÈ1‘}'ªj~ˆ˜–|“Hùñ|¤ùùnÁi73~YWxŸ2£G¤‹ô!vÁfÏ"ê~T½ƒX€7:Zór5á‡g­ãíëé%C1§fx;*Nµ$þÊêê=8ÅÉŸ’s·(.1̘‰ÑG\™{2ŸL~(ŽT)£ö)ÇhOŸ$ÕÖÈð‡­9H懚R(eRîæ¼È Ž«}õ|@’9x„‘—åRʳãN)Î* ·¦­£w)„d :QµÈ6ú~­)Þõ(é«M9l>úôômÂð¹Áu«\V|ì‘!ùÅ'ªÑ™ÊþÚ„I << 'ƒsñsœ%"_»L×5„eùU‘”A!/É›žX3¶¦Vò* 'lºªùYËÔ²D†72Ua“Ós_,ÅûÛ®ø}0d·‰í‚•=Y°²*‡ï(}ÎØL X¶?ÊÔâÓÇÙÔyá¨ÓŸ£ôòNÜbßÝõ‰øbÄRo»}zÔ¨¸Eùmûš×ÐzÉZ1“±¶1jC©=ÚÊGMIþ,ùI¨Óá[n *›_ã¢û`b¶&\Ÿ,Ë‹é ¸ ¾ä8¡‘´/ RâpOKçDW¨b…†H!]›Æ 9«¢à½U\·p2)@߯ÂDÁMùšRCVf Ý&Šk„FKœ÷É®¨vw—–†s‘ #ljÉ[–”—Sé•SøþТ†/MËlöñ/êqÇ1¥møÃì™Ñjm ®§ëw$:•AyVõ[;)–¡÷äUQ¯¾ÍwlQ‚ßÑcpr4.u‹¸¡~\”(?ßÓõ³ó°`ÖÃØÂ•[-Õ¾˜ÉÈl…!µ¿š)‡ÜÀÂn„ÇVL¼v[4ŽÏ Å)iQúR°ª’ %ýÄCÆÚ\>§„ V÷ÄNå“ÇŸ ¹µ‰k$Pñó@ŒÕ®úg™ÀMpÖ#Òð·"÷*gÑ-ÉìöQ:°g× êŒÝS_¿ÐNÞ×}Ý]\·ÛD9k4ëe’7:Þ->iŠð  ã|#ጙÿžÍÛÞ'XN¿ uöŠk:†Ø>ÅAE¦vùi]Qn«Ü$¦ÕAiæè æÌUÅ©/–ž*-èÂÚÖ¦&ŽK”5|ƒ’º&CñL³'ú.œZDE=+Ù^>Çþ¥¢ÄO9s¦òÏß1ö#Îo7k=O®GXV>,ºO×»u†´”ÎÜqÝž\Z%µR…ú0USúS“ÝtåD± 3źˆ:Fz¹S›É<ù©EY$¾ÈÜïX¼a£Ý¨z;ǯ¥P$ˆ«Z6ÛI·Û·½aÙœO‘ÝÒ×»Ò'DÃ*# JlÏ—ÄŒ¯%2Š€E±7f0È„|Ž2SOÆ1A9[*>ÂcúSË?ló’Ñ"&e­ÛW.›Þ w‡àºÐ •.¼2¾ÐÂ`ó¥âØ=ŸbÎ|ùÄšP«óCT‡%¢´5(;(!¹¶¥¶|`Úe‘¡Óš‘»Ý :¬ÿìžJëŠüèÙð.{Óªá…Mk‰Èö\Bï¡´+¯í0@ÿ­ö6ÿ¿. :+I߯¯vxJ©öZö †í2!†#uLØ$f׉ôk²rBqäv{“êÎ’vË,†¶ðº0˜þ¢›j†2qy®hhq“J€¶ˆË¢®âpâ¦JGK´hCæúrÆ,C]·~ÈóÞG6¹N™EkY{|þHØæ5aTo]‚îò÷$É{WÊ.ýƒ»‹êá¢B˜ŸºB _z(4\óÓ9ûO+ÿ\çN‡t&‹¾EX ıYU{e¨;¦>w—¬÷@5Jš#•o©–à*µJÏOç® •Cd‡•”ÈóÇæL´t꟧nKA©>'• Tg4×Ð0|ûÉSW¹uÙÂ%rßjx"³]W,o›p:7߯çÀ”AÁì¿ó2½ÖhNíDX¨w¢ $Õðc8­8ì¶ÁÍŽvÂ<èÀNÄòÜã)þnjݶª$òr^ÂŒ4²œng"§B®‚‘`á+¢Å‚˜çX³b†\Ð9@åEu¶|zI>$½W÷Ef°åLÔ7ùŒÊˆ®p-¡“Ï1©nXƒ¡œ¬“«sÖI¯?w¹slóþãDYæ78#¿öö²Kpzpž«óÑGjU±ù.Û"gSæš}¤¾˜{Øh­1KggÆm b;Ƭzâêè™¶ Зÿª‰n„ØAw÷6͆ê9­×K¼´ðÈwÒ…š\ôC™z!a–AI!BqØÉ»÷S»I9Ô¿9AÀpÐÄøtåÍ™µâ×ú#À’(˦9‘Ô[ªM?µõÔ­î+¼Û[ý3Ù’‘„ Nu>VÜZý¢Mñ~ߨÂv]ðÇ#:Û¤ûYùªZ”R¯SÏŽ°®gFœ·R:«‰7Ñõ:¼˜Éž>"0ħ0Y5­é˜J‹×ëǹ7´“#1DÔyÓ>g…šÏ|{àNrT×(§nèáî“g6`àMto|è JsmN£!û ÖXåÏW›³¤3£CƒeF¬›“ùtLe¼]ÅÛ’6ôͦâéÚ†áÙšj¹±û3ÓýÒð4Ћbøá#½O&P­*Tl R¢£¨ë³?¢µ(RSÖ4lF7Ðî…]ZJ$fÅØ}4Ÿ‘Ó°ä_àJ,ãéOÉ»á™"h)Ý,¦Ù Ý·CWïÆ9f‰ƒ£é ƒ);L¹Ó{q“ †8‚¸ ßÌì[û?°Ç2Á¼ôHŸ¥Ìï‚ñE›ŽÑÑio gàÃáÓS=Êä+·ŒWe{+ì\„·‘Åç¾¹qËï~€»E3$CEr/Šå¬?6V|Tÿ*Ÿ,¾gXÿéÝË’íí·cåB/ºí~gåG©–ÚØ€¿@…ÿ‚’·/!£FÌv)«/Lr ]äç_i$4^©Éb"Ŷ }_ƒ`Ü¢Ãgèaõ7¾µˆmã¾¾Yû¤ÔU":¿ˆÆ4ç‚Æý±Uéo †Ï’Ktú˜îe%}KO³¦{ž æ#™QašáÌ$Â~缊`;VÙð´ë.ß¡S -"f|)¦j[fdéAZ…cÐOòUPF„lÁÃj#-Œ ¸iÚ¹ẖeë:cv%6g¬ªFj4á`…ž³òå•™'_ÃMi®/oc§.»j2c”¦¸‡V½)¦’è*ú\µÄ\ûßT‰=&gLàPþ0‘߃Fé|F1½ì÷ WW¯½Å´<00¨Ïbz3›×48aÔ©m;WoIÞuõø3z‡xÁÁ§ðˆÈ©3üý/üFV? eÆ0?úä‘5í¸® §ó$7û`Ën¶YÆë^CS*úS­9Êà>«ûø‚㕯0E뀃CX>ª),¬ÛY‡¥´k•YÇ.ÍŸ€‡?cñ ûEbßñ`’%™gl¾ImÉH ­Z¨,µæÖâ&lïs˜Å +_f-êl8äÙzwÎs•xA¨á¢g:wL¹ñÛu ­ã$Hq4צGa²»Žš«&Æ.ÐÎ?T¿Š"Y›™œa'#š¾›Jål”úº6á4µV(ÁxÛ-|Õ÷-ßêŒò¾]°Ç˜ nßNÐG£˜šÍ‰çªŽ.HpØãbXó±Ð¸·u›uÂs§¬¯YØAÏôÆ< –½CÅ^w> ø¶Gž¡ŠÑ™d–®¯Î¥™ /5ó¢Èõë7ܾxiM}þ^™zHà9×Ù9à¬wML£î­én„Br‰»Ü"ÿèéwái«ÆŸq¼aRë1›1_N¨ÎFÖ²/™èÉM%«Q(æs?CýšÍjy¢˜¶wG„þZ³RÒ®ýâõEU˜.—ª Æ3Ãa7×[ôcî¢HÛ¹ÙýGűŒ8¯+îŽ%lCg»dÃé 7f˦ý‚\…«btÀ/ƒ®+‰;£Íeœ•_~I8 ^œ»ÎÎA -{˜ª“8D¥òÈÊÕ¦^sWXü|Žbëqnþ;pFáÍ«Mý•ޱ„z¦ÔY­ˆ“Ž+G>»ÀoèÌœvÖ¾G·É5" =ƘºƒÜùÕ^³ÊŽŒá±: ¹áK)ò–à‰§Át¯U±ž§=ûYS¦—œ7-˜ŠMßå[¬w¢†»Ñ–"ösDJïÕ§“•Jh¹–kß.´m¤«ž(çŸiíªRî;¼žØ¹>…]*ÐεmÆy½wÓýäØòŠãu$ËÀñ©ãÿ¹Qq"£Åa/ãÁKì«°æ\o¢™Y6‚Bü,+µ#¡z¶J9Ñ­)LÐ8ëx¼n½¡’ ÕîdãiuY¬Y⣎ŸèkÒ 2Y“¨šÚG¡?Þ®“1KxçFaI¹~J"èDWVJ j¼¦Û‹˜™ùQÚˆ}¦º.+0G¿ôn¾Ò3î"7>TÑÑ4ßN¹•0äƒ÷Ê~íFѶ0‹Èî9˜8¥t>6¸ïb¿N™‹o’×L4ߺ|’Â<¼ù‘'äÊ–Æ@Ü«;§Bsð5֜ɳèÕíÎÓç_ä**xž¿(¿'o"ÙE0Ð%p°sÈ2Çל€A°0–:Mf„½I'l f(ÕÐkÓ&,Ÿ\oÌ—JP0ÃÉ!0¹†XgÔÕ]ô CM›ÏY”›¹ÑÙÜ |ÙÝ£‹ƒŸ²>Zùæ[ém:¬Jšœ“fú!êjG1ÇÍ[½ûKåû‘Ï# }SÎJq-Ÿæ‘<»ÏIhÿöÈ ¬ÉÑ;:äCŒÁ8/Õ±ôðð”õžBžî!t‡—ƒ0vw"Ìu«=2—õ¹âËtª+K|YÈd¾ÔV¢®ãrÄcL­ù9Ì3Êkü^í4]uõ‹…¬’מ>{]”ª ˜oó>”|8}pÿ"Žœ©$þ1\Àõë™èÆðõ’ÝÁ5Â0} gÔ¥ñ“+NQnl¶œ¡5»(ç•î…5fUU!Õ¬qzv\ª]¤9]Ú ×>òT•$?¾Óv¬‰uÆ ÷%´”l– æQÒ`\×äåۚĊ›TI«î)»--Ç/h[ñQ0J7~ì`µUD«Bß”’›^±)ÐZ$Q…FµC?»cÉxóWį̀Ù&W'Z†L®Êá.gµDñöUÏÀ°e<±~©Ü5Ù€>¿Uû·^Љ„¼~ŽÛjš”}ƒif²âÔ³‚äp_ã³,8ÝõøÂí`]Ñ)¯'êç僱]%kâ»RÌ·³©˜ŒLêÝ'ËcÃæY8ÎrC›|óó¤>²I~I¢+äU‹{¡JPûMù§í«BžZ tNu8Õ~1ÿ̉XñrËÅ#«™¿ŽZ˜P­EÐb’÷2›F‡Í ^½ªA½ñz¿ñ>Ù”B2¸í8¹çÉ/§iž¼>U#Ý|¨Oqú“à‘ê§ÙMÕ®¹÷wø¹ó×? Í*Hõ³4Ð%÷7rM–"_g+-8;Í&ç"äCt||„ nrfƒ”¨©À¬*1‡}œT'âÍ=ÞÛÃÀÅ­± ñ3À3T{«§%Ïf·c}·âM’º]ÛÀEr;ζջ'¹u'Œò8ݱ\ýP†’²¯ ¨ÞSTkˆPÒ[ç/gæÀ›Ú Æ+ÙVA7þIÁžÜ:¨kDzùä+tš\Z<â€K‹ïyô_¹8Ìž¾³ë¶fžZés±HwÑÕ2ò0$*OyyÅ2ÌÉ“®M?‹Q@w&][à 9*¶f]UÁÃÆ•wRhãØ}Y¡”lÑRÏA6*¦›`hÏ ˜¯iÑ\³w„ÑoU1ÊH×b*~æ<4µÅ³Þ°È¶¡t(Y’¼Ç*7–6ÂiRÈÙ¢y³g>/ýòq𮻉 ‚¶?Î`Ñ,™OZ Á¿\bLüüõ9»òÎϼ†ø)Á®•UlA¾7–¢ý3øâ¶AцߥîÜJô>³ú¾RÔä †‡‹(Æ¡¯ûÝ"¦{ñºÀü4{jm‰$N_®y ÈÍét‹c—‚êÆõRf€œß:‘IÓ;ÿœS»ƒ/òˆÎ£•n0¥ì¼ŠHïž‘îWÙ0»2A¢yЍÊÙàðJñA¹æð‹VRu´¥¦—€âZ,ž{r »­:Éü‰XÚ´h¾1å]KŠdP#µ—\Ô'Ý%Žš¨>œk(Y§úµÔϦ”amâwé&GJRg[ñÄí¶(fì #¤âáä…E”Æ£0|Yô š"ÛfI Â6Ù¶ˆÆQHl©BlCß ‰Ä?°•äÍÄÅŽTn«ÀÙ‚µK‰¹w1ŽàJ‘ÆK u.Ñ1Ö4•ÙÁÙ¯â¹XÄØ'ÆÌ³ŸÜˆ8Á“ú®ºÍzž;eÍs>5_{àôùÒ§|þ)¼ýeÜUå“ë˜}‰ « @Fѳ>Ïê6€^~á‘SDÆÅpZ%ìfàÉŽrñJtaúý‡¢ýÐ’+Ê–-–I¯(ÉÐclõÇRq*/ú–£ì½™MWIt¤z\”ÙŸÝ´»“ÂT´hM÷UHî뮎ü Èö~tcfœ7¹Wçzf qà{ÐGe~H}±Ã"à™¤ÓyðvZË,‡Œ®ë¿Ø0Ì»ü-ÆpPùGy¹" ì-9šÑÊ’*ㆳ·¨ LZ Õ¦qh„éÎa ðÚ¢tµÀ‡Ú_I}u’%ç?*úù¾ÍÿbÆ‘)I'iûEe¤Üö5åqFz£2®´ºK¯ôμ÷Þù~Õ(ßSÂ…zs¼Ç…Ü>Fq¾YøbǧgÈ“E¢D±…¨ 8G“ÜV³ÛC‹±W$¸ !¹Ä{=lø°²ö…1½ò&ú¾Y|ŠI;1öu¿ül@½ååæWË´ceÝžsÍ.¿Ebw㌯›-a2Q°u¯pF‡°!é*•’ˆ÷T£ó6ý¾½ØŒ{ ?pÔ1ÁÓ:×*€¨œSô}¬“ÆÏ꺹XVòb=–|!‚‚•ÄYqÃò$ý©CéŽMÞZ$°þ¾Ÿ…¯ÌPÕãìW†íÒ¸Ó?–<“”[9@‡RôRZ»NA:ʨ#°^œ‘=«"­ôN`œš¿¡àEÊ^“œHHM®*F)gáÌNƒv,W‰¶@šÍ­Í{“ÀoºÃÖ9õØ5uÊëÈ`‡`׆“ *Šœ¡±mß}ÃüÀ¬ä}~Ý æã»ùH”~Ô[M\ÒàiéfbT ”ÃØ‚Òz¼&c>ª^î@‹B0J9¶†ÏÍÃtŸ°(ÇXðók@BÚª”ÉÍw{³1±gÐ Á.lLy=©353§”(—êÃlŽ~ÔÈúäÙPš`} ¢vÑmòØ_[ íYõJ”–üú> ³ÇÃMÛˆukа­”[ذ©/{GýàN¯Ñ2ç+»åñ¨ì´Fó±Ä’½j@ú VROÎ÷‡Í’ÓîÒ/£Äï ÇdîTž¿7|›à§45Æñ.‚ŠÓÄÛ´¨«¾šØ9uš)OÑ€o^ˆd8NB†±Û¼âE…-ƸPßO“–Q™©Ýn1ñÙPÎÆìEµu퀗>h#Ô KFQþ¡YEà¼Ï‘=<Ä6ˆV#±;SWÛÑ»8i?Î9ŠÃåI0w‚” ÊÓ/N¶¾'sžÙÇ#ôh™=¨b«aû_¹7æ÷¯¥ØˆˆOsŒî¸©ÏYkÂKíÀŒ'ßÃþôhA endstream endobj 1265 0 obj << /Length1 1733 /Length2 10668 /Length3 0 /Length 11784 /Filter /FlateDecode >> stream xÚµTœÙ- Aƒ»ww Á]ƒKKãÜ5¸[Ðàw înÁ!Xp·GfæÎ̽ÿ¿Ö{«×êþvÕ®:U§v}MIª¤Ê(bjg ”´³3²2±ðÄä她,,ìL,,l””j °5ð/3¥ÐÑ dgË÷/‚˜#Ðüj7¿òäíl2ÎÖVv++7 €……÷?D;G>€¸‘ È Ï±³:!PŠÙÙ»;‚Ì-À¯Çüç@cB `åååfø# bt™ÙäÀ@›×MŒ¬ªv& Øý¿RÐX€Áö|ÌÌ®®®LF6NLvŽæ‚´ WØ t:ºM¿(ÙÿìŒ  frúÓ®jgv5r^ Ö  ­Ók„³­)Ððz8@UZ h´ý“,÷'ð×ÝX™XÿN÷WôïD Û?‚LLìlìlÝA¶æ35 ()Çv3ŒlM¬ì^ã\Œ@ÖFƯ„?*7HŠ(Œ^ü«='G=Ø‰É dý»Eæßi^oYÂÖTÌÎÆh vBø]Ÿ8ÈhòzíîÌNÖÊÖÎÕÖó/`²55ûÝ„©³=³º-ÈÁ(-þåÕ„ðÍp²ðp³ó°€ ›‰óïôjîöÀ?œ¬¿Í¯x{ÚÛÙÌ^›zƒÌ€¯?žNF.@ØÑèíùoÇ#VV€)È 0šƒlþÉþjšý‰_‡ïrè°¼jÀòûó÷“Þ«¼Líl­Ýÿ¡ÿ1_f1I) ú?;þÛ'*jçðdd0²q²XY¹YܯÞÿEÉôW,ÿ„JÛšÙXYþ¬öõšþS±Ë_ ùk9hÿLÁîUµ@Í?"×eád1yýbý–ú!ÿ ÿåÿ&òÿ-HÒÙÚú7ÍþÿÛÈdíþáU´Îà×·{]Ûÿ¥jÿ\Zy )ÈÙæ½Ò`£×E±53#+ ÇŸv“$È hª›Xü)™?íê¿WÍd T²sý~·¼F±°üïu¿L¬^ßN¯ºüÓeäôºlà?Æø_×é¿ë°5±3ý½wlœ\#GG#w„×Ñ¿"N€'ë낚ÝþP6€™ÉÖüxíÙ`fçˆð{Ì\\fÑߦ?÷«´þFÜœfÙ€YáoÄÃ`Vûñ¾Æýƒ^™Æÿ ^³É߈ó7zÝåج,ìfóÁ×SAÿ‚¯Zþ ¾ždõ7dc0[Ù›þ;Ýë 6ÿ0Ø^‘ó?ÞW‰3Ûþ ¾¶áø/øz¶Ó?·ñšÝÉÚÈÉâ_„×jÀÿ$mlôï쯗 ÛëanÀÿ𙉳£ãëPÿXµ×þÿñâÝ€&‹sv&ü–5­·U"„®Œ;c0')·ZlŒcùúðà>‰)ƒ8ÕÌŒ%Ù¯’‹½¬’ú– ¢·Y?æ/<·¿‘Ôºs\3’Hþ4'1Ž{¹†œ‰÷¼!"›Cm„ÈÕL}ÇW䨡DÖùVÈÔ¼O•Õ‹º¦g!Þ• «X’[&¨U¡½³ª8C‡ˆWãhSÜd< ¶Ãy‰G½i°©–¬F&+Ð~‡çZ‰¶Þ?4°‚ÞKÜá'ãâ¿sJ F—à 瀫ÔXÉCyÌ.r9LÃð4þ€)*E«3E_»“Þ§yíR9d³µëü…¿Û×òðëc†Èj`-1ª}†¡òÈ÷_ߪ/üVd.I^†ð ü`[c*ØO…³ÞåŸKµ²UZ÷–¢Ô7‰Þ«ÞÛ²ò]¦½'ñPg‹&-›ªDØi"î‡,8BçZ9¡:Ö"5MÐùú)¢Ç<~µjê® <Ùüð㳚)®P­7^˜è£Õtñ¥ ï¤Ø°IÐc¨Hž¼üBs>¬AV3/¯L¦J ¢õ™Ù—jÆKS=”·eOkåê}„O½“¸ŸÌVI2éî-o°Êï>#ç„}2l¦±úì$ü“>-V[ªþgI]h»ç~‰`§ÓÌBq~6ï·7ãÉÊÔ ”Ýùú‘ˆã%uaÔå;PYjØogä®D?SUÁ…‚Î4­±OÚø¾çË ô*pfÞ£†¿« ½Ëbá…xõ•üìÒâ&QRÉ磞îÅ<ÂXë‹{ŸÔ"i|†²QÆ‘ Ÿ®Ðï)ýaÐÐÁú¥¢‹Ä«Y!½A_å…¼ aPV¡²+k ô1-ûª›P·æ)Þèä€ü’‡üÃ$ï-Ò•‚Y›BÞy+M¾ÿ—a^ø]¨GZcM2§Ç¼•ܱT7ÊpõØTožwÇ]ˆn™ âÙÞx>±/ù–¯6„£3Q÷ÆÙñ„Œ"w¼èÒ œm`„{}e?‡æãØÔx¨êq¥XvÈTÊv2ièÞßÏ )ʦ”(.5'RôúåÁæ¸J¬<·=-Úcrož2õ>+î_xK#Ú\ð2F$Áqño—-m rTdzéº(Á­éÊiA4L¯n¨°FðPr+ðÎÁsaûûïyQ´ß1sR(6tl V¢ìÃÓ!O¯ûÐÁÙÒwõÜç·ôéý‰K|åm>y:XBè^ƒ6ükòÌKsæFŸNí,2Rù4]FjWÈ^ÊjPi-Sr§”[÷£Kf\ëÒrIMaüßà$•°¸¤jäá¢l>|ÔzáUvycêð¼Ç-¦SÂ1‘¥©G–gÏža¢ð.ýÄLÉø+‹h âAå[S:Õðu}ks†Îhü”\Ñ-T­öè`'iªS;ŠÄÐ O,kÀÑäBšl‰œÓÞ:˜¥u»+„\ó±'äðér¾¯"Oƒ“ CŸñ£”…^ìÝS¨|é8U•«™]ÀvÝÇon©õŠyuÓ·ì4â7(Aó<†YXýÁ­Á˜ªë¸ý§ž4–ãL²*Ú‘WØäÎÁ¿›º· “mUÆfçB{å€õn‡³{ÙÏð¹hš$„ml ݈+68/ÏÍm6ǃ{IÕÎJ³"¤77y34(E•ÅœÆAülÍÞgD¸xÝèPbØ8ØúÓ†³0µnŒ+þÐkÉöº}K/QÑ÷A§f\³VШÓÕQšK‡oŠšYÇÜŽ.mïlSÏ ´ú¿X†¡ U™ˆ.—mä¤\5Ÿ@ár(¸Fãµnpƒ9Ýe½˜ºe¤’)GS¹˜,o‚¤@Ð_ŸNs­ÍQ=/ºVž„ÍxsŠiÒæE&ûøÝŸ‡ŽÎs¥ºx_br°‰† ¢¼é+ž¹p(£<û´%P^î6Êa8$b×3–k]Ù‘¨² ;Ÿ‰‹ÿ³®Gꉧ‹’±0>8¹åZ#sÊ%¢$W“ÎÚ¶œ1[¾±K€'nĺN •ÞvèøŒ·\üÞ¹º<Õv‚ ½D¾¹>±’"ZF5µ$VÁ"oã±ù»ébÚ›äë-1†0f Ì’S+¼6¤q^Iα^JB‘Îuÿ!>ÜE̓ë3 Õö(;¹¥!àDú™è¢è°ÒO([úÈ- ¸)cdä)¶¤umWÃjÒíbtÕ<(ÜOŽ·$ÃM 8\xAùÂÞò6,‡ÄŠYàu¨Ü;â„@†˜]I1I1K”Ý;óû¦±Ã ='ŠÛêwuœE'A¬5E¦7Æõa¢¤¦òØ=m²²óP¹¤µ*swºyhŒ×¼‡8éüÄA%ýʨ®Mþ¡r”–•fPS6`†”y~¢SQ¥÷C…Ff8DX~ ‡±KLUÇ„š½:ú°bŠëµDÓId<ãâ[s_«…Î{Ûô—?¢ %^)ÇèÞž9? /µqÚåûºø†%M]ª­?ˆˆ©).ÜkYD¿Ù'’ÓöÛçá^§@)£5íï±n,ûÐã²ùSA}GT²¶˜Ã COU%KÑÛ­¸þÄÝ ï{mHUËáø5azføÂQùìîãXayÂçäSr@Ô¢Wìm\à–܈iÃõ†G+:!}Uã÷oâpò6 ~¢´<[1ÐòäaL÷M!íÕºˆ5Àà+ÄðMíj £4@P‹^£^£/íd`²~ à:¹¨¸åQ©šÊ8šuqpFÄòi˜oòhîWدÂâÄ&ÔÇ*~¸•nòó!'mo 8ˆßS»`˜T9Ÿ2Ž—ùôîÏW@|Ù¶ìÁÎÙ‘°Y?úu¢Aàârö¼ êÀ)ßqKüO#Ë÷ Ac™ bè6“„¦é#RJð3õ6&…7OÊ[gþü ȯ †^G4pFëòš€íþhR)d嵓`ÎX|×uñ'¢ˆíC–G ä-Æ©÷öÕŽøæì–ï’ßQûa tð'©e.möÆd1Nj‚Ÿ|æ$I#ƒÚ!–„Þçé°‘|÷¦gTB$y¸Ú?’[æ•Ü}÷jÓLc5ú&¿ãûà9@˧#¶ŠöÛÄ=œ9#ôð"Þðb5]˜Í†7Mœ:J,lû¸vïguý©AAúΙw’¦ñxã”íßÂK‰GöøÞü4—؆¨v~Q޳×ðñ§âÖáuXFW¶“þõôX§‘#ϦgÔsè¢ )Üð}òª6[dÞ”ŒqüzŸ€ª¢áòøYÿòú´â-äõˆWo c‚ý‚ۇ㧨RÔ¨L8!j¸½óëšâøÛÓ†œ±oä…iM"õb’å©IÚ6YAúˆG‘L˜… Nsͱ'‚„f¤zD ó2è9SÓbhžªœñš÷g•q¢§ÜÅbZ+4q¶{ª6©Âjü¤ÕÑ%G}eŽÛè?£¨k€9ãV”¸5o{WpŽ“\¬É¯©¹ÎÒ#¾ñÜÆG K­µ‹ø/p§Ñ«͇¢³µá—܆G¶wB™ÝñÍôNo!ôw ãÎýîkº!Ðw?QËô†2¼`†îÚ?Ÿ¡ÙÝf-[&ùÔ½ï1£b)âzë\aÄCVªrÈ=™D)òϧ@ƒü‘€õYU1cB;ï@øsyGD] á¶;:±'ë±d_é\ROm¸¾¤¬Ÿ¯· Óí„0ñ‡êÚk{–8;Å+|?–ÓBì®ô:i£9èÜRüð»J"¢ÏÁöJ«ÊŽubÝ ²Ô+=ÑO$TX¡OY º JjšºÞÔÍœ(ßÐýKbÙ™1@š¦UìN"'«¼üŸvgpµ¼¤· BXn“É›u uhå:=›qY×2‚Tëda¢þgoñTMÒæÃ/ñß yûpŠûíØˆ«'µZÌìËú°ÊÓZ}?]€§Uº†§dd¶F÷Â4¦<›´=àúÄo¨!Xt®YTCžEY'‡t´®|&®««¶\® ©¬¨YÚNRê’bNª\´Cí¬x©†د¿aUp²-hõó8>Žúìëqí±ÒIà¾I‚ú¢eˆôy¹ßÖÑIs«ö³á>´îTõ÷çýáã6ÒMÉÚÙÉT³jÑÆ9³Å Þ•"Zˆo•©dÊQë”Æ“Âx}ôqúJ \"ÛÎ$_{½×¡•ø>Ð@ÃX,IÑÉx‘ª,Íd×Qûš?@\eÂzʯñˆÓÕ¨0ÜnS2–>W «Ìý˜ó1ÏSòèS±ÚYƒv€‘§ÕóÚõ÷pnkt­ec²£Þ”ûƒ¹Éõ¶ó¾b¸)$Šhˆ+Y‚C”ëDªbÐÕyfŒNCÓÆà‘¿ŠâIÌ5í˜TÀ¨D£¥³¹(`|·–ü‘®NBݸíîµ;$ñås‘ð‘¸Z[Ò.ǰ[ÏÞ !9,‘²õrpÇcY¹ 2$ºl0åh=áã›N]ÏšæCqF{ÅAèÉæ  UïÔ Y¢—e*u¤üíXf¤¦Y~÷üÄ/O½“@I¹wʄ˽H¹“;ó …¥Ì–Ü[ÌP”úÕ´0›ªè<­CÉKjE,h«*tçp#ðwu¿PÅ-%©º4_?SÊ&+„oRv¿øTÃ=pðFQ´ÍFaKÁ‹²h»[ÐÒ íñŸéð'§4UM>Πï¹3H¬ŸÝ­Ïj<ôM Èø„¡ŒÞô]ÀÝo+2®Ðƒ¨¬aÁï@àŠ…š±ç ·„x¹83 ¡Þ»g5ë÷:ãÛîÄýÙK%ô´4q0n,²WÛ~û½O+“ómàò°pz|la+38YÞ/¾|cصeéê8HÌMo M¤Iò)ïʘ†k¼?ThÑÄ`Ì2ïAo¹McÖâ=cž?Í£A¿þ×H>CÏQ¡ÂÑõ¸y8ªÜfHØ•Ëë™ç·‹¼R½êlçwŒû¬É&…¾­¦§âõˆùøb;*·œ.²»÷ ¤÷{wMµÕü‰¨qïPáwÁ±Š”ÜšñÉÇ–Ÿª»OÔ͵ZwŽ÷b¢U»ˆ’j×N5G±Ìf÷@Š­#Ç‚Z²Ñr'ld}‚¼•a™Ä|«§åü[>°©ÃX+ Ndɪ.H"M†m„ÏÜ–-³wCyR bª7z(NíÌ2qŸôÕS½'°‰};®Vs³Ì³w9ù~´»¸4 C,G?oÓùaw]rÓ¼æ¬ÑS{èκ8çÂìºfßìyu:vh8ÞâÝ’žÂÁ^G"ÙUÓÃN3Í`rO(M6V*”ýå½Ñ©ðJp­é÷! "ïô(¥0e::Šù“²Ç®¥Edôné$ÆØÞtßã ¥É20Y—À|v¢L“{âÞw&}ù„;ÃåÊËá˜ô ãüo-fVî`¹Š#c'­jÔ\– ƒ|)ì³úèw±xH©Å ¨ý”Ør?¼îß9X»d¿ðãœ;32PŽNdÃàX’)ÛÑú1Ô^w’–•üú‘±üéI*-z¸éB™ïË`1ÒO–¹_ â?X77eùúàèß?Ò\.„jÝ !—ÖV³o-0ê‚8ɬ «zæ "AÔòÝéBÇðwV}º,Nò^Ķ®‹Ã3BB·u<ž1ét«A=áZÈ5™…XÉ »¬þ k2Ýç%¡Š÷*µeQ ­e,…è|çD(xç|(í9Ãü}XKH ö­Üzm›3rgò¦p9ÕEÈ"‘¯‚—@>âQ«…!Üãú…QœS¼f+E‡ÛH²pÂ"*Z饃8ḲœÈš÷Å: >ß9í°(0^,:Z"sŽo:ªoËçެTŽÍ.ìf‡'…‘sÑ(D¿x›jP® 7(é(9K±¾00íìùDkÄÙ™]™0ñçwMüj G$2ºcލ´§Øó±.ÎyY~KçL†'?bqǕ°ýXH†ÅÕ÷£@YÐÒìR½èŠ@­ë—ÜÞq_ÑJ-æŒ'¼ Iß›"Ëš®Ý’ÒxÜz6Êý–>&üφvß<ü¡i¯ñ§Îæ˜õ?qbâE©7qïIi’CH…èx÷ù‹ ɨŒœ÷p•žމ{x4T¾®£¬0æ"+¿úË—yZ 4¸ãËp†€tä—g7J§öåÆŒRñ‘~nçõíÏX<þ¡§ äéºç*FX9BvVÞ“3¢ìUø÷в-~è…ÙoDÖµeør3*`°ìAjÒà´’˜öLK–9YXÍϽsïÅþüU)ÉÒ·v÷†Õó×£tý:Úžœ(ÕD¤´¬­-—„®o_¬È/ƒÝu›ªvgàƒ §£kUÒf{ûu33µbÀwìÚ}Ó|AM°ôò–âV§< C+ÞSœuŒ}*$[áò¨ö|Λož²ü‘‘ú¼B6ÈAé)vèùæÂ¼ï«^hŽC-WžÌ@à “”‚ºdÊB|ÈÙxhoohâ ‹Bª=³uÆ–òðQ¹C»Ööûj`¾;÷7ž*e=^„ÒãõþòsæƒÌv3S«&‚Yþ¥ ulèé]6´­‡\œ²`0ÒÇ€ÐNUùýÍ£_·w<}D}dV©æbr31Ó dÅãñ91ïÆ­±È3òàxqâE}å-Û´ü:}اʗª®m%ð›} ÕŠuêê1G—²'ˆàk*×f“–›Lâ?‡1œ‹Ù•ÇŒð³/-MTSLÉ‹kïìtôŽÉºN½ãêüz>ÃðÐã`Õ¹³ vxÿJ9<†}.×cxlÝZOÖ—à;–·ÑRå&ꇀP§ª ÂÜñ-J‡:⪳ؾí6 ˆ »k#¶éûæ Ô©êA cõaÒª4ß >ÍÙûYl¥,5¥€©Ñz¤|ßi¤6d̹#ßX.ãmOlïÓÖrHOOT€ ÚWÝîPµ¼æKÕ]5Ǻà^N– ½?œÃM$|üùaØH<6åd¡ºn&ZØc:Ýa†mbá®:2©c&™×SãÆª‹Íñz¨>‚ISŒtõxn~ ™³P4ÛUå±ô·‹ê¡’¡’’ó€òˆì§°¿Ü/™±êX›}dÍTÏDž».ÚôJ u!LÓy‹y­VdÏéoŸõ”­šš3…г2²TûÛ“ùµ³KÁÂ!ª* 7)+;gW=…#ª8@8EM07ÑnåKÈ¡_XµQ5¼‰%¶ö™se6®9.^ì†[´Ýfæ?§‚âÓ°Fâ;Ê•v `bè#sÆñ㻺ƅ:.âvg©á(¾ðµ”°?ð¾ñ:Ýþ;ã¼RÌ´Qõ!dÈ $,và ÉÆé¿òXÉU»RÁ64û¡U]š'Ÿ!Á7Þ8yQÄë#_†’ê嚟ºO!¥½ÕåTO±Êòûˆˆá°òÙæ®4žc³ˆTÑbãÄf !*7G¢þQHöœøA)÷¦”DÈ·W½È‚®Š 'öòOØgwBX¶˜ºV„Ìi2^8üXìæA®±ˆ æÛ\Ê?ân[Ÿµ]UÎT·bgÍö-ûæ“Ò8g-ìtË8¨º°›©<´9ÈŽvšÏõYCézû-r|ÉSB,=¬Ëü|û§àç!=Á¶6—9À±ˆ©Ù™©êä¦=ÂBÍd§KHRãü;Tuxt…hKý0L¤ƒ¼ûçT¯‘ Ö¼5§¦ ­dÝ£$Å­¡éwÞ­ñ 9CþZvþ+Åý—ÉIŸ»ÅcØOÊäÛ•,'Y–l:-à‡Ioj<36Ri©6†÷[%zÒ‹$õz-Z?ƒl«a©uŒQBÛ±ªcV òŸDÎ^=-QÜa4¦î嵤é߇=ß úe B^wÝt‰´Õœ ‡5»CËO7QÔ%’„ÜÒñÜ7Øx…PF«g{VJ¦O´8—EfÌm’~½! OÄ"a BÆ´+TöÂE0@ººÞÞÍ.úÖœ+Œº‹ƒ…_(ÄéH ë"ÈéNîfÙÊuÈ} ú˓ТÔÈâ‘Ð?R£Ïà“Ø–¥ÌÇyŸÑ$ |ÛLr­Ð‡I…a?<ã–~ž&ÙÊ\Õ8šR ì°—j½rν8 Tzn7Eµd}l“7Sj5ñbиæ +T­ñ÷—à‚óN6®]Æ(KüÚç¾IÐm=\!ù&Ô?Z9:6Ñ90ËÖl 3Ð#úRòt³Å-Ñr‹“ä,îwWE¡ÊZ.×K‚+÷SÍy9 ª£täÍf¥ÍùK´ Ж‘ ~¯cö›ÿj2'1àÕgŽr<*ÚÁ˜Oî,Þ™“:4< N߯°ûùmÂÈ®b’1X÷R‹T¯@ý<:-¥ÍÛl×oþ®‘ BŠtó›éÐ[Q'Ê(Ïä׬¡ü 뢎zø–Új@_lÝ’F¡Çÿå‡Eã—/<&mYOl¥î83úí~Þ{P9¹¸]éŸtUO‘Wn¼xUÌúé»LÚý¸”rOéºåŸÀÛ-ÆEn#‘’·-:߸QuÝjsºw—+¶ƒÈË* -b\]ó[ÍÅÁOmª øîBŽó¦•P~üÚŠg¬C¡¿¤ øP™U¤Ômqþ!¾íñÕ©‡sïg¿GË?{Ä^\ËTuºo’.§õÇ—,MCæ ®uŸ¨æ$Ø£»U.•/‡”©¬8v¯IÈËiì&Œ³K;ÙûÀ «0 úŽÍ¼ù xÑfirˆÒ!ÃÖ9jkQ¢ÃAôNù"¼MšŽÝÒYŠzuUv.©zþ}Ê“_b‹ ýmüÌ‚¢~‡‹Ìmox+}u¾W­d5Ä1›¡rŠ«§jø±ö aÈSÑ ›_# .us…W8£­ æ»"›J0û•V2Ç—…­àûs°M süˆMü)¶Ì–—õÆÛò±H‰ZÇu,Mo'ýŒúø»34³…áë%º¸¨·3ŸÄÇŸ°·Êå“aUf‘Œ‰eÈq¿(¯±¢Ik –&3úwuÔb|®Ùp‡‡ìk’-4<ö¦‡$÷ÑÆ_޽Ðã«È&f–ŠÁúìDÑyV’½§b!kXȆ‚Ÿ´óÌÏ|i’ŠŽƒœGõõ΂bYó¡/Á|}ý¹cŒâ""Ο´+ˆ>B¼ÏÙ•‰×l»­7C"„ýÒ´²rË=º¯Mx¿ae¸ žÞH±ZÓZ©4dvé€ñ åûIYGÄ&5Ì‹.T{‡Þñ½òÖÉ?,¨ŸÊD¢ ÝŒþå!ëÄHÀ©ùíàtºìÊS3¬Úh¬@<§ƒÙfízý 毛t³–CZÙyv½Õñb,îFA„úŸËø×ÖjžçËAÃô‹*§xzKŸåÀ±%æßׯ5üŸfgòy:QJÍ;æªHoq¾â£ŒÂc\™üq™#á¡5WSY™>?\¸Ä"U*68~Nëá¾lò+Ê_ÉKw|j“lR®”x’D¬à*Måc¤c]ÎrOÁXÖ"C«ÊÄ­cØa•:cL5#ø¥¡‡°F Éé8ÔÖS ìí*`rÌŸDÔ~À·A=;!AÑÌ»/3Ä€éÍAmöýù2 ø:ΘßD*Ï0eg4Û~úø8: Ó£~BÉɾK[³}¯ÅiµÔƒËR/¨Ø¥Mlþ¨ï ã´ESÇ4‰r#)»gÎYVÚÌù.’ZÚ»ÖLöi¬³ÿµÕjwxljO ZGW™’x<Vgˆ—?¸f-Ê—ÁDÁÎM48˜C°?ô}y+¸Û‚ÓEÓ@švE0“Lðw~®Ö6›Ÿúð!Ù¨“ð½ux=Iª r.'ó°JUÉ ïÍ#÷¬H“,§i¢}Ђ¹ZXóЂßû páìÚÙµp”-Š/bÆÃ/^Òç;ƪ{¢¤íøŸŠ],À…PÄ´ëX𠯙².¦4ÆynTÆ\ÍÆÇ~3}LÍÏ…ðÇeOýçØü\W˜EI†3óÓB׊ Î#ÔêâoB>îlÔ0Áu•«o˜À‘ãp? ÖR”/4ïy¾H¬ðÛÓkEæJ»q7``RJ-FæÒØ’­UxnÂ4æ*Leµ)ÙLÇ\nç¡¢¡o šäÄjÞè7ãf ë:ì+1®Pn&…ņêÀ!Q¤Ðƶƒdô&ÚšV—Üö–õâ2#bØ@¢N¿ŽÐîc1= ·æf]v­ú4Òm{Œ¼ ÓŽê'2¼DƒýüAøi‹RO”íÂøž¥¥€+Ð+R€)¢ï ÓVÍ7˜ÊÓkNwiìƒy14½ÕY¸†½z¶~„_Mq†_ —?Ö¢•sO·4ðñ0|Óü|n h$úä?çÛ:©¼¡gÉo“†7L¯›5¦xéÁüëE¼8h-<„O÷ ý‚wy‰nb dV*ÍOÞ‹ŒìUè»Jðñ 2yI¶â¬ÈUøçx§.`»Nž[X‹¡ãÖ-g4Òý[w"êÖ#*ÿ(ÉÌOý_ýˆF2xý®^»î_B>ÏpkÄK\»ݦMN0‰[áÖW ¢‡Æòà(Qm[T¤âeì;ø”¤M0ð;-O?ÀÄAŸ­RVVÔÎsï{âÇVÚÍq‡I’?Áop¥ ã0¥áïK‘!D˜;˜¿Õí)ïN-Ê*$=³°©¸ 9Vó|ý³Î Žfˆ^êÁ£Ü]ü1#Ϩ¨£±þi¿Ê£Äƺ±¦F¤8äÐ!fŸë±ÁôÑêd´Vm\”{§°÷o ¤~AþÉüôÊò¶88ƒKlDà6>†[ˆï%¦]4ñ {åkeVò¤é6]Ë p—l$–ÒR172sèIµ~œ Á5P,Ã}Ë$V~"Û ¶¿.†AH3w¥4šF¾¶õ'ß½§ô;›T yhÙ½TzÞç§Ÿƒòhå3vpåTà…æg¿­¥Ø•Ék3`ÌÛl¥_ÚüôøŒÓ­ã]•W0²éC„Ø9éõHžq²”奘a<šœ¹!%,¹Æ /‘ÛéÒ¶8„®Wj3êÇîsÓݤl¾‹œÍ%¾M ÈgNÉØƒñT *¾ÕîLä1Q;4^Xõœ•·Ï½ÊñMz÷xåú°º0š"æNŠùò¶µÏ(àxJÙuF¯ÛV4Lø`á<ºó:5gê0ºz¥[G=¡ê+× ¥ºÞâ%h@dd«T|Y/q/[RÓw#}GOȳk“ Ù –,šMñó…Q¾Þûª²èæ&ƒ¶¾#ê¤8¨-¥ÍÙÑ¿>T)ž–M æ·yWSo~èDPÒ#ÿź0@ÕÇjûÆðV³ç:ÆsF¡¡²ÓíkO}l7e@Š"¤Wé,¥t…†õ5çfGÓiÙŒ¢+Z·«V—a`o õÆÜ.¨E*ž»"Äÿg9ëÝ…ûÊ…@f&—%åM(ÅÚPÇBœ5“S9ôˆ¤z.ý¥Òä™ñ=R†s§«àÓ0´öÉK ‘S¡Q%6 ;=È×oã¤r_Ù%ÐÔNm¬YIO¬”Z…v:îÔ ÞE k Û³kK•Â4¬Ú˜ ׃åÙAY¾œˆá’ÃÊHe[§§ç±å”|:—ó÷>Kff.·nz[zJŠšý¬à„þ»»IaznÑö’wœþÞ†Rp<*Å*ù,8wum@•ࡨ®ÅÔqñÐgÚ)Ù…1ÕÓÄ&všÎ Œ—Üw¶&˜ï¢„FJœáragzÆï%¯úä€Q ˆÎú´¹rªÜ.'­$Î?›C&ÙpÊÞõ¸÷!­aXHGÍ~ƒw :=D\ùP§²¢#L7,~I·Ø>^KdÓpÌÆ))i´eìör´Šª±•Q˜7Ž<«˜;²SæÀRçx; )WלP× ^¢=»}'7¢Äòôž¸“turþW¿: ý uººÄ¹†'¶jæ›§k2 ‰˜f¼hTJF©Õ u– Të_ƒ’_<»…œ±&d6š¿=ª¯›ÃPàpDéfb½M]/|ÓJ+A†‘!Hôݤ§i¬ÌdÊl^Kly˜‘¼p+¶˜‘02‘Ë7Üý­¢¥¥ÖÂνîZ7Ø*c¢Ãð 0CæÚÅÐþPT/&í­ãá4'|û¨1Š"_™W©rË¿p\€ÔCÖçUh#>]´N«¿"·8„gÞîõ°Ô‰cJÞ±róÇ⥹› “bVÛì,Äž L¿Ï…‘߬£I¯$Þ¶N¡ óÛ›¼M‘ËŸq‘hbñëÉÞ*,IntLùåF¹]ÇÈ ¯0ÅÖùd«P<°ìjˆs„0/Åÿ«µ$LÃ!)4F!cÌîÓ»iŽJwœæ¸®mnm?ØéJÊê¯z«h!²4WÅÆœ‰äÐèC.dëZ|Bº öFæt]qNi6(Œ#ÛU•¾{£,3?Fùùa’¢â­'÷Sz䑵­IepwÔrU ôžœ½‚Îv+žª¾¦L{ò´+Ц!²–Dk¼8JÅ8R> stream xÚtT”k×6Ý]Ò " ÒÝ Ò0Ì 0Ä 0CI—t#R’Ò¡H(!Ý H‰t|¨ç=ç;ïÿ¯õÿkÖzæÙ׎g_÷¾öÍÆ¬£Ï- †Û@”à0$7?Ÿ8@^SSU ÀÇ'ÈÃÇ'€ÇÆfE:Aþ‚ñØŒ n(&þ¿äÝ @ä¦DÞÅiÂa5w'¿ €ÿ±8¿ˆ8@€Oì?p7q€Ð hòÔà0Mîâíµ³GÞ}æ?¯'€_LLäÑït€¬3Ä š@¤=Äùî‹  @‚BÞÿ*Á!aDºˆóòzzzòý»EþµxÂ@77 7ÞÝèï,a€ÿ݆‚!^¿¥ àåÁ‘w)€;Î~[¸Þ¯1‹ðx•A,¯Ê?–0€WýKÀ«ù·Å7T^ç¿MaQ¯Ë݈áà¿¡Çw•N@„ýoä_MƒÜÝÜîXýÖÚ£ÿØ¿¯Ä ›ù= uxÚvV#Kçɽ1"¹Ÿ~f,À=Rd‰ƒìS³ZIÒÏÉžU/WšéåW²tèÐ’s=Ë]œúá³^ÇTï-tÂͤ´eÇd“ðåöu"Ù甞å q3JÁÓT9FñWn}(: Ñ$¸Ò`»>}6bßoz¦“=Ù)J•DÔÂÚ´Ú;kJ³5¨èÅŒvWõomÞlS?È[uŽY‹1LÓÊdQ—h?ÇKò¬&Y|?OÚËФæ¼qÀúIªøä=½‚vµÑüK¢«¼W;™d>6Êä2;ྊ%ÎÔ³7ZGöëG;Ì]{s›¨{qv‹5”“ü3 â“d†k~$š© ‡-RxñtH;zUÓ DÅ?/ “Tço[绬¡bÝY™©ÚCg½Âpb¯8òêë©ì0¶{¼hŸ~Øo§oΩ4íË>`yƒf©¯ÉÉù(?:xLWÿ47DGx¡jrq[7‹>:AGö^€M¥-ÖDÙ=Eí££õ´‡eËSÁ—˜B\`DÄ÷ šTðS·¹À˜#Ÿ_W¶ò $ùö½¹¬®Áj„øø©ËIw›ôAµ²¤´:‰ÝçQƒ…º@Dˆº§=XF³´ –|KhÒŽ’çÃFdãºдÆføÕo‹žƒT»É&1Æs8µ3‘*õdVm¬Hh]¬œÕ÷ã,³|N–€n“‹#Wéþd¾b_x:IM²RÆ]·.ìÞíøzûÖ‡ð†e?càVñ³óœšQ»C6L5‡¢»`ÿý9VßBR¦â,©ªúˆš<æÇæÇXý}ß0°|æ˜YfÁ  y.I¹õðŠf#Ú·F{¢­w7yÎÀh÷ ñôºK"Ñ÷n\ÖΜ”¶Þ³vaÄBà %Øc’ž2÷R!'B«¿¢· z Ô©è0“»d%‡p÷õ¦qò9áØ«bò $Z½i˜`Ží§(Ò¾£ÝDMDOa×…ï° $%ï\¸»¿cO'’&RóL¦F]{½ñÛoì²ZŒ;¸Ì1˜üùaÉ›hœS±…C±¯âvÑ9Åð¢k+,;¡£‹MØ;Ìéç~C¿ól'RL?LgÜ í[ Çò›ƒ\æ"^™ Í=Zý܃¯¡qwª÷ß4Äý„MVó–+õªê§Ž`ìMŽ6É©ô µÚŒß¹/³õJ'¤W€Ø¿´Y¾ï{Ä^˜€ Ýõ^=%¥<4‘á’üzjA …éÍ“(¡ü Ûª» hØ ;½ä‘´"¼ð›õ+RW½y•ç’ÇÌÙ¥„ýlÚÅ(ûá f1Ë {À’†R³ƒIéÒ6<[7\¸~߈ٞþ£«a,±Nz9Z¤QŽE!Ö~`õÆ›M‡M(ÿ|­Ç¹õD¶êÊO•êá_+$¶7u†<^'®dÇrëÔOü„kíyp%³Q»ek¬]£ú*WSU¢|ò†·5Å‚ä#jäÖgIB¿ÈTv·%¶^ˇ>)'À.â¶÷É; j°E§üXŠ{áná ËYcëá[þ&²ó4µ•ù@ƒbßËØÊÎ;÷»˜¨_ñÏêXÞóÓ@t]Ž0Rº]1v¼C×<Ü&i2Ü”àm»œûf«dâm¶lË@Ò/×!‰ISòcF˜Ä­Zè¸÷h¸BÖ0\yÓ…J×gåÂÔí>q—£UL¦æ¬wõØ89ÊrÐY³ÍØO8H ,"5zæšúþ£å§µzÞ.Q ­D¾c‘ð@2éÿÉa3A¾´²Ïßš?À©Ë«Ó­ •vDA C©.PYÀÑýq+JnÊkÄ )W1/Ö€Zqìe-Õf²FQö%Ÿ&#Ã3uqìMêwòÐŒ ¶ë¬qm §oãíŒA¯gÔwŸ6L”N1 ·Š&铵®}öž}á@ÓNÔo—[¤RÌÄŠàíÐÒš—.áÌJ—)¢¡¬^$=wU½ ÑìÛfÕeÒ,Ÿ’Ù½m#û.“àXy› „¹¯µš·ù$×Ê jZx~jï?!³&~á~x«á:/΋ɥ’ü“ô»Ò[„}qsÌã¥6Ó>ꇸÎRWéí¬¶Ê'nê¬ØÙm¯;)âªî‡Ü“Ÿ.¾Ð’m¹º7çAI_#‘Út¢<±Þ¥»£Õ©sŽ•›Nl-¾ 04 ¾î‹²õ¹àyk®ú%äeÏDI”4‹s OE©Ü•¢çkGp4ð Y§?Ø¥Àûm­ÍÙöSSÅ^_pwc.W<‰ƒj­7ˆ"nÓÖšÜÒžV|„WlçÓ¯! ï”mϾWi*\.…Z<´ZfÕç—c9¹O¢:廾ą¢=Yî|S´ötÆŸÜQ;òÊzï[ R¶™'Î6ïH³FtA¹è£+ßä’S¦;pr[pî$3%SbÄq9—H›ÈÞoBKØi¿ñ½¥~ì>nUšQ©P,Q-ã’o¼âHήãýXäãÚ£jw°ªáèTÉ3µðÌã}6Q¶öë—ŸÑ—k)äeGm3pU‚4ñ“Xž\YT¾£”/gæFŸëí>ëHåì}— N-²&L«Z17óV ¢Ñä—Ê¥®+[¢k¹K¾Ñíy’Y§ïøô*UZ¤•TCѹ‰E!~Œ8œ\÷‹Ðz†a¤Ì[¢*r䜼R¼júøS¡-¥±XPÖô¬¬¤< ´§ù,H LÔM÷R,ÎÔ˜qÖRkÈÀ4$7=YÏLy ö)Õ%hÝÁH”n¡Ø ¾']6£®=à¯.#ûJÅmùÎ ëȤÀÿܬex#ÙOÚÿD€Y\òñ5m_îU .Ëg;Uݯ;“@4n3 E’¯2e–”Ö¼k²ëêjªEþ寧>§l§¯–Õp£8ƹðIîÇ3ľ^ØS*×Ci‚=‡N«–&ñκq£°ŽSçÅ¢p‹vWc‡Å§hÞ+CKQ™Sã¶6ò(£hZÆ&ñSP£‡Ì‡ç~À=±OÃ}ƒeaBÜiÌã'Ô¤®z}“ðH€3á'|Ç>‘îÀÎA>LÃ)e7‚ýSíÃñK—¬±ÐòD¦/7=ñîC'µƒ¶$žÔµÐTDàå’±ÿêâyYýîqµ\ùJbB´A7–®— Ÿ/zÎÍ*bòÑÑ4ƒÊ×AEdmÉÝ×_ÆÄrÒªë„ev÷%ÂÅ¥(Æ¡C1æ@øçoF8ʪ>¬*޲·JÙ.>¼|’“ÖSÌŒ¯¤Ý¤º@$õàÞ˜†ËóÕ)Ø5§»uáÓ \PèoùJXl/ܾûœpuM3ƒ-Vê|ÄkLM Ô@£aᨺ6?µ'‰ö¶¬pPêTží²+¯ß¬×¹ýëã×j4J3#ä*ŸÌ”ä\'ñá¦xO¯Î×O¾ÄÕtM¢ï‰òûµ3æT­ÝJ4– ܾFWí®QYwEFaZĤ”(R–,P³™§ƒsY?v¤e³ñ°»—éCIh*˜èôQ‡~æL…òI€TЊnˆ7à²×>ˆÐÄS7}?9¼Ü­{åHÛ¤"¥í)3—¤ñè6¶t§¯ ‚õBùhª¨:zan÷¬M–…¬©èFÓ®‹¹ÉeWæAlq-8 6…Å î‹y16Ü2?g\ÚâÈ:Ô!‘£+¸® ºã)!Z¬ù]›£•]Úm°×AßIn!¼‡œƒ~ºÞÍD¿š£ÇƒûjàïÖ¾ˆÔ^.ݪÕûœ¤)Hr‹g¡ØÈY¥4ܦìt E¢gwàï› _ ·ešOPY7_D—?1û„îGn.­“ÅyÉYðÉïF3¿åÍôñhò#˨a¡*KU´U,;µh.©¯VÛ”üœãŠÀÊ”rUß-¹Ýk²bûÆy¢!j(³2YÁ©°E:ƒµ6û±ÏÃêä0Ÿ½\Y¡Õ»ž«øýüÕý4ozÏÇIýº !Àeö¬{Äðñ¥g OtO0CÀYoü•-ÄúYäí·âãDëŸézymÉ/­=ås4ïaWÉFS›·o7p¿7ÖQ@= ÿñv~¶“ý§L¬c–5äs¹Ñ—úª<‚±œ+ ^œ¶Þ/<”ú0™úFZs÷eÊÛÖ…`‰¦i1û×|'ôÂÉb‡Óë5eøËEǹõzò8°$Ý®ãŠQÙï“2MÒi)ù GnK «‰ÏühlDï(To%hLçdÆ;$ë1´ÑE,à©þXη7Å7^(Óé;yÕùgkÚ•Ü’ &ÂhÄmÑ?ä–Ò„ãÏk,EܶõÌ¥1µµuÞ°rL{nD“ÅèÈÓ[Ê;iÄÓl"kòz²rá BÖ¨]¢>= àüø™/½ð%ÜĆR^á³â¹bÑ’ÄèÉÃʸ¨Ç:ù6Q© ýÇFçéÌRevµ7i/=çæ)\¢ª–:ÞîWÒ®ã%Õ7t’¯raßx¬÷@=DE8iR%Têxš‘×´º‹¯I?½Lˆ;277̺Ì*¿!o-ã–@ß õ~Þñ,ÞÔ9ð;ÏzMÍšüó^'ø¨³‘íëÓ;âÛõï[m?…{ò 5f^…~|о­àéSŸÓߪ8IÑ쉲œ-ÆóõœÑ[óþÏòh1ì+¡9¨ ¤ áZùÆârU½óЪ΋ IQ§Êúé>&íû-ƒ9iª¾+ÁI2Ø9™$2¤­íÝqF÷ÛÈõŽNîCÎl¸2®¼K)ò¸GS&Ö*\ÉI|ˆ5Ã_ëMl6íâ°ú„nw¿È{ Q%÷âól™G•æôŽ£Y9ÂÈç­ö&Zˆrݳ®Š³µù¤¥@+”c ´'Ø V ìUg¡šO{\%º¸|Q3ٮ߂´Ã4Ç}6¥?(Åèã©t îNtÛ`OÐ8t8dY+¯zbɶöUé…Ph^yð©Òñ¡îG(ÍJů~ך¡eñ#ÞۘѡöËã~û³®÷}¯¡¶gBùs’«ï3¹çz ? îíw/eÎîÇü´šYZÂ=Qåh&NÙ4{ H‡5 ?˜ðËs¦ÿ®Ý]1^žÞ^^¯ºÖı,:%“öá³ÇíT!q=.ŸµêÐÍ›Æ×înõ¸Ó4–pBæš)õ¹^Ú|l½Xð ÍË:¦½6Ò~›QÛýç°Û^PÓÝsC²Jã}"÷k©&‡Î| Y­å“”å=(Ùý5²–=‹QÉÃq_K%òtÇ“% MÁ5[QΟð~’Š¿ñi(‡Q›0>Ü6<}<ô–†¨aëI -ãåºFf;3•'BŽåŠÏ‚Xq“-ý4è_X%ÈÏc7>ÒVã–¤ŽÆÅ,c¦ÿ—S&Q ®åÐÛ™X{7 $&¾|rÅœkrÒŽvhF³3„<"ë†e€™‚±”Cò`ÿR¼<Ri &‹í7Tƒu'_—+¡Ý®ŒƒXU/¦è]>áîzJT®ß¶5|î®X^¢ä±f*èÙÚ¬êgë_²žÕf1f£*P³QÁ[퉻^æZ.^9gvH¢ŒˆiÇ# (ãZ…í78F5àu3·‘DáóZÊãi­1^ZˆÇN—yDÑß "1m­ãœ„œØñÖ EDn…B”s# SRñO¿Ô4ãû¼|Å@-¨ÎFßì:léÒ–ƒ /³ªÒÑò'±Dï¼ç9¸­ÆÂƒ¦Ø@1’òêM S&Qó÷^a:½v"aË'ÃçpîA NKZSáóÖÏÙîfL?³]{ªŠçÛÃJ?8vöFžHô<Èg‹*'¸u2Ë<±ÒK|]Eá>ZƒO€…ÊõêÝÅ@0e«´NÊ`q V­æÒM¤ÖG{XÞ•@–§†iúdó¸råÓ‡ÍVKPt_‰Ã.â@ái¨L¢]ÐGÆ#]J£eÖ0Ã}nVmD¶ˆq¦ýÍó_\(ÃvN>’ZàVäSXeõFF1j¿¼íhz˜iè‹%ü21Ä4@\¯CyHY·.óp,Zߑ̵ã~ìH­.óFq—] VvÈÊ¿½oºHPž¯–èZåڋĂՎïq´0¤¡ÁQIl/=KÃGÎdR£…ÔëöB]0ú/½Så‡>òšKž#”ý’$·&O`äÒNþüójtŸÝ”œÙãù­.‰_MÒúüHˆ¾Æz÷þ4ŒÂ‚j0´BÅ÷-›¼“·¹—:¨…Ó?„Ø6”|E¡b“èf’à³æŒ|‰¾£[4"sÕûüþ¿,ÆgmqÅÎí×Ì¥¹‡MÚ“¢cý?5­Èé´án[$5޹P¥ÆÑü†™É‚«´«³üË Â›ˆéu*'—ŠT“´Ny†%œò¡æs¥\ñg±g§Øv}Ÿ¾ƒ ÷_Ùi™ÚÔêøôŸ«LÍ*Æì·½ŒzN@Ly1Ĥ›Î…sµá M&ÊdD¹}䕾»rЂ¡t¾†ìDÊ_xð;Ÿ,«JGð*á^pÏ:M-ÒxBb‘$5+¶Õ«ØíT2Á‚sþP´œ+HÓåÎKZ£Óƒ›‚’Öuáè|9r|åç1Žt½™ƒ_«ÐƒôF¬žSÙK"KýÉø’BñîÿïăöVƒÅkZòøëÂuHó/ñþœ”Õ}ãb¸­UºoIZ¼ý’¹3Žê~[‹ÒøÔîwŠò*Šc ^ô$Ë{»Ž¬¯4‚ºv"VOýORE(®¾E‰*4;Ù–Îü8Ëû„Cç»a÷ ?Æ« Ç÷Í#‘Ûjšûß݆aŒsÁLÃÜa)pöûG>ïþeÈÁ~ endstream endobj 1269 0 obj << /Length1 2765 /Length2 24020 /Length3 0 /Length 25554 /Filter /FlateDecode >> stream xÚŒöP\ ׊"Á%xpwwwww§qwwIpàîÜ‚»»—àr;3óM2ÿ{U÷UM¯­kÛ9MN¬¤J/læ`”p°w¥gf`âˆÊ«03˜˜X˜˜XàÉÉÕ¬\mÿˆáÉ5€Î.Vö<ˆ:]A21cW¼ƒ=@ÆÍÀÌ `æàaæäab°01qÿÏÐÁ™ fìnegÈ8Ø]àÉE½œ­,,]Aiþ÷@eJ `æææ¤ûË lt¶25¶È»Zí@Mmª¦V@W¯ÿ„ â³tuuäadôðð`0¶sapp¶ ¦xX¹ZT€.@gw àWÁc;àß•1À“Ô,­\þ–«:˜»z; ­•)ÐÞäáfot€’T¥åŠŽ@û¿åþ6 üÓ3ó¿áþñþÈÊþ/gcSS;Gc{/+{ €¹•- (!ÇàêéJ0¶7ûehlëâò7v7¶²56üÅÜ !¬ 0øOy.¦ÎVŽ®. .V¶¿JdüÔeq{3Q;; ½« ü/~bVÎ@SPÛ½ÿž¬½ƒ‡½Ï?ÀÜÊÞÌüWfnŽŒêöVNn@i±L@"øß2  +€‰‰‰“›t=M-…Wórþ¥dþ%Uàçãèà0ô³2‚þÁû¸»®În@?Ÿ?ÿEðÌÌ3+SW€ ÐÂÊþwthþ7 ßÙÊ ËÚ=fÓ¯¿¿éƒÖËÌÁÞÖë·ù_óeTVVPR§ý»âu""žz6&= ;€ù×’q‚¾øý7Œ’±Õ?4þð•¶7wpÿÍÔ¦ÿ1vÿg¨þ9jÀc)8€¶ ú½äzLìL¦ æÿÏ«þ—Ëÿ¿ ÿåÿmÉÿ/! 7[Û¿ÔTéÿÔÆvV¶^ÿ€–ÖÍtò 3°ÿ¿¦šÀ¿Vhfåf÷µÒ®Æ C¶·°ý·V.Vž@3%+WSË¿·åo¹ú¯+³µ²*9¸Xýz¬èA£ù?:Ði™Ú€. •üK]ÎSŠÛ›:˜ý:1v€±³³±æ@¶_Ðê4 ü²³þ‚î¿É2ÿüÎÇþËÜÁÍùl ‹? (þoÂl ÙZz9Zíÿ°ÉþÈÏê†õ49›? ¨Û¶@Ð(þ¨ô,fü™äjºì?ô Ú~“9;üG *Æñ·Ìô¶ÿÏV°1ÿ#ýïN°X;‚±¿§Ìj„£­›ËñA§ßÃû…Ü€.=þÝ-–_BW ™‰íò²²ýVüŸuäøGó_{î¤ÿ5fþ5ï?¦Å jþo†ì ' Õ÷™ý— Ðý™±ƒ‚¸€Þ™ÿ– ê´‹í¶•ÄêwZÐˈÑÕÒøÇÒƒºëêáð‡(†Û4h÷? ˆ™ÇK òöü‚Â{ýAMôþMÉèüwªÿ<ÐMÝœAƒtýë• º¬ÿá¿~@ž@SøÅ9SÞPëÚÐÖ»a<úÝ1þiò]ÍÏÔô>‹ÎmnÈ0Ÿ¨«3‚×o„? u£¬l‹SýZ"zö9júÑœ¨Üòèûd˜ 2¹Û¿0Õ?^p$üµŸ^MhÏ÷ÙÉW#Ȳ ¼C†<ÇÉ Y)ýΣWÒók_ÙòHøÜ®ò^5‡,ÂSÙ}Œz´^Pñ y®Iæ,6 ´+=, Ú¹çÛ™Ÿ7ÓhÙã¯D2 ´ð~Ç1¬…>:,±÷³Þ«j,.8d8:Ø?ÑF&)|D’eÞÍû”®ô/x6ñe#Ñ¥¬Ð£0°¤W[©DÙ7ô|qYlgÞÉù¥ÄëGßIüRÚ€aèL¢ˆYÝb…îú…ÕHpÐn.²Úz£Ñen‚¿Ä=õõ0ƒ¤myØØåóøÍiuè{?ýmxJóÝPÃ÷í.?ÍbÁ>A| fqKÝÈ•ežt‚¨2×QˆNM 4 Ý’û'®'(ã0>Ÿà ‘\æ­&&.¨ðüSöß‹X¿Êºs…öÔy[4ý×…W“Ž”óóKVq£ŒpªÜtñ®¹kq”ʼµÀº™2ÆóJ,±R/"¹[ì d…lÒ’=»óUC‘zÁ^Ö÷Üù §•ê-ñìùÊÄ;ÇQô£uAƒ"!a½Ü7f[7åå"˜‡÷ç•ïE†b7Õ8Cs?´«fwº(¦J GAÝnÏöÀ™ž¨‰¸Û5ĽÕTãØí,zò +“#§,\”ï“=ä‹ð]Ô_+ìÁ© Âúð³!¥¶MñŽ 1e5–d}LSƒ²JÃú&åZY;9íwã…M8÷âoJH®·ît¨×Ü¼Ç¦ÈæN¬›nx+ÝœWsöµú ³Ï4 —i üR^æ^>[›©b$Î݇c;iNï®áœí4”FŠÃ ™”©6¥-˰"‹ýcˆº‹îäwYã÷¢:"’Ymð„^ËTÈ‘²”á=,ŠLÓ)UÒJdd¶‡ô‰ï6t;±f€£CQw¸°8²#ó,äI&ÕÞ·2#8©tnþò,½ØÞknSs"f8hÒZhŠúº‘Ê'_¹;ÆJÖ{óe“°L©±‡Ço7õÎ-²]+)K·cÇ{¯í¡ÕŽ<Ú÷ZÉrÌôDÓ Æ–oæÆ… 5Y<‰¸œˆå̦ª¶ñŽüw˜5£Eø…¾\?œ3}ìÒÎuð¾';¹Ÿ¸$ï­ì˜ÂôØ\ÛdÑw(ëYT> J[¿u;ȱ;•€~ÇSÇŒ »l[:èÅqܹ´ @* Å–³gW½ô (¥?š®©Î’ô¾+áþÍ?Hùq‡jä¹UúÉRááۜώ"ù33¤œ»é¬&”U]Q'Å ‰üñ»^¡ÍÙðJì‚J»r¦ÅÏP4FiG0½¹‰ë‰Œæ?{2mÛÈ•ÄYry5„©UEä÷øÊ°NÙÑËD³„ó×o3my«|†;¨H›´ ì% ?’ÀF} åòQYpøˆÚÕ«öŽjÇPóÂDø%@Ö×AÁ}n:Euý?¡ ÉkGþà•#°<ç‹AÛ­±k¬"óQ.c&˜ÄQR=«!iê¶é[yùù É>çU]H»Š×fïñh‰h84Û²ûr’n*à› ‘8M|¿} êø7+ªƒËV8t¹gAkÅg*hXX…m-1emJ™ mro&=ïÞaêŽii¼G}7pu­œS¤¦ôúÓ=$çøî£ãËnˆs€eâCc¢ÖE|h´­­.ì-Pùv.ÞPÈü+®Ôº’±û¤7Žú(¦aMö(F¿N93!MÙÎ@ Zuœ<퀉c`8¯ÏjÙ\P¥2+Ö†ïBnëèûid$´*EŬ +ºV.®ò9Âãžð0‹l~=þ !‰Y‰;µ\“ÇÏ íA±¶T¶U]™K&S•1«Äe³É³Ãz›Ï÷ÆlÊÌïjFüåÜ[N…Å#…€.6'y.f±éöÈÞ ]°0•ùû’TbBÿr^ZNG½O4í-IxƒUvñªÑ•ƒDL4ülÕ¦dɺÛÍóÃ@*BaDÛôÉSf£.7†+7ÚÓíE’‡+Þsºï¡o“äð-Õë9žƒLŸ]‚QçqÐ4™%<ÇOgRÖ/v 1už^?ë–P'3IôI½ý±SŠÝ/»2 ÂRoúJœE¸?aÚ7j‹VŠ2?ôº–™ ‘Þ–pMØ(DÌDÉÖ€çLóæwþ˜I´ ’x ‚FXˆV¸Š,çÝØ,4{©è~<ÿX‰ò´NÓÉ×_”ûi»=½ Ò¥³ˆ›¯N2ITÜ(Lã0Ïr£m¨—S9qL¢ÐA©­wk5$€¬,¾d’•µõV‰{žûX'Æ…;œÒh»’éØyIóžG!©ðxÐeúç@R‘´yb†æj ›Z©­7ÂÙ ‹æz­ÇjXÿ±"·Ékþ.‰bQ6ú÷QÍ 4ýUÆ"#¯²hå/pô”?uãIД­X©a]Ä(nÌ óåB ÂUÉÕ¾*4ËrÆUÃÒª¤Îë:¦? jÿìC?Ñvúµ~YÀG,Œº]ÐŽPz¸†“WÏ;¾z‰>Ÿ– éœ}+MY['®£,4öVzqÕ<ç59£S·„š³—¢ý)ÇrÌ>ñ Ρ6å̲qw½ZÏ¥–sÀÌz*£½¡ý'H¹\,Xªd!øÚýœá‰4øÊ:Y‰ºõås›t“µnûþX'FrÕùú°ËÆê¹àM}>OïÑÜ·ÎäÖWš÷òد™?“ ;Û ¿žº|Âè´×Y‡¤Imá/½ýîòóÜ!ÃDÈ'Ák–XT”(Êç),ƒf€NýñáÓ;{„ Ç0 ¥Ïfdô“z7Õc3ér|ŽoÐßÚ¢#ú6ù§ã:x`êM®§5ðö*q!Ú4¬ñ®ú‘~Í"è>Ó ñãªõç|D¸q>1Îl|òr¶…Ç"1 <ì箜¶—ª¾ÿEX6Djå½­ƒÈÜaE"Qr¦;1ÓýAC¤DR0âêúÃi©øº±îû`ó;%O¶@©°Lß0šOßx—% ç0P´ÑIXE®Ù¯žöî6¥ôH¦Ëu¡ï˜“ÇROLÙî¸ËX8eZDž¯ê\!O#ë-¨®K=1•é]t«¶¸F%]úƒxˆTȸõ90(Þ?ØyUQ[ÕáDºZwßh–DÉõªˆ¨ˆÛvy~5Ì™×Îä©e—/®~³¾wºŒq ƒÛRù¶/ ä‘Ѻ l£o1—ØoÍ(éôHŒB?p°lgNY«‰ Zj½xÿ툫tAe+\Àà,â6þ…Ђ=f¹s2Šáõ±ýJP7,R»âÓ¶«°½’}rTŠ ”á–aزÆÇ:ÿ,¬þ8Þ#š‰“Y‘ˆµs`o}× QuB#¼@Òm‡²cB8ny^À4ugx}æ}]á%c /Œ*%¢AÓOž×72_¬…~`x– §b’üÎ;ÖŒ¹¬ì[:d£FÙtž…›Åï„g¿°ãäj+'Êœ¨Õ `ÅMwJ˜ïuš* ܉šðfU¥íÄÏWbîñ'A¨²Œ"°–Ë$Ë/}ýdKu1]GKØ RÞe´sT`—å×|FúR÷,/¬GJ%Wnè4MW³¹Å¨ûuôõî÷\—@c¨&‰‡“µ?ÿ»'ž—†ÑÞ-™ÎÆ‘%?0-¯n<&|LçY‘ÖÇ T…f¾^M7£Z"è*‡ËY–iÓïû«:¿x³ä•´%Kg'x ¹ßÄàë¿)|§ †&Äøqu}’ þ.#A!³'¤aHLÊ:"eÛÓ3Øs%~¡[`ib®º:wÜ&¥jɶ——"¹š”o)­æOm>¹#ánÔ0Ð ˜·-m &¤*E‘Ì÷ Õúñô ÐÝŒ =(S"_o[ãKkß•q¥0±—Wë6ÏÅ4-F–)q¾ç9Tr°É¸üË܇MFs?Öõäô£á¢mÉÒdÔÊ}Jsy—I˜"-Mõg¿§›º†FíÞº„À™yrëÑb©ö³(E©WØ¡ÑX"Ãûú(ÞƒˆÚ±Ë€„-™F÷\äÚ ýRx²E˜²·Ë”¢–‚Aì©|¡ªØÏ-'Ã5]B‰•Ø™piÆßé1R…L#Ãm4Á¿ÉS]ÆA;ƒ5“.ÍOØkûX/±úÚB¸T5SJÛæ<l|!Þýö”ûsZ©ûû±OR´xõç3þ1Gã„ Ë#EH£Ì†ÓômÇ»ÄJ.7¯2çËäÕ«Onðæ~¦N=´ì]^þÄÏ«ú³™xwÇÈêt•àí®9Ô{V»SØ1 QŽªnw‹µŒ,Úz=as&bå!jÿœýZÙgwXgP_-éÆn(™sW·È\ôøÖ•1záe#fdë~ƒíÃæJû÷†b~ŽÐ´{æeÜ–d%}àúBgò÷F SM’²7¼ìåÐG-ov¤Î„KXÍ…ƒ×µQ­Ü*»Wwz.Û&ÏŽ§Ð´Q Ä~ÞðÄÅ,™¨B®…]QèËâé0¨·šË †š-·Æ¹ugŠÝ^aU÷±¹e?â„¢öªÉ–k‘íxX %Ö+†ènAxFá9 „ä{½‘¦J~mµFa—+.“î4­óóµ$ì$KðÛBWïŽ÷hÑŽ¡m{®Ðá;Ûï/èË`³ Xvâ €¹Ý Aàú¾©8&œ[yð-­ß`‰ï”1ËkòÑÈø<­h)R·z,Åhª}D<+¿Û· êØ˜1×{ÏêRÎ8ôšŸõ÷šý!¡ÇüÈ]¿¾Ï·{gšõP0©»ö.±Ÿ™ìi}«muJ½¯¢>}G‹hÜç:!r¤—›¤Ì„<“5}+!ï6JÎ;]ír)lvné7Ð{ú@ósîYùûf‰‚‰yírkûZh– \Ìb±:\«÷ä•Å‹QãØx·o9“©|=èZ^«e4­ƒ7¯l‚Z,úÝñl%Ri£yéó—i]Nr@‡ÚŒÏê'Wþˆ·…?Np S÷\¥JÙÇgA4—T s’úˆ…«ð1²¸>Ë÷ \ß»ì>ÚpKk]4Ï/͘„Üz~¤E_,Ò?.NFdø±IÜ9ÑCB#³¬Ê‰Ü¹¤MX ‹uf½ŒD@1µ(| ƒH[¾÷¾£©m ÿg²Bî.‡{­*®š6êÒeì*¹”W¶±âÓ}Át°qÊ›ãÛžû‰wf’rst´ûX.˜’/Œ¥NßzÞ Ý€[F÷½­¸¿×!¬ð+uBd½¢¥¥gÈ/ XSóiZíÈ·¾xÏzõßnœhˆÉÌú¦47k½õ›,uŽ|ׯ6(îó­ÁL"$.$o*\§ï€˜^o0’”Û Ç«rßóÄgÊLeÖA^OÒÆX"Ö+"Õž2kÔ“eòFW™F﹊¯§ÎkAÝ8žú5MЭÔ[gÙ]uú¶™÷ìí(ºû¹¼(t %”èV¥‘z_”»¤/¥fF¯'ˆ:ÕxN„$ÎÞí+¼"À¨ju­2}á« n±ÜМƒjc3o’k°Œ[fXøªAm  5IOfïá÷L‡ð^G¡QsBüºúA!F XçÝ=ssÎÚ:¥_¿àzòò¢½Én÷NÂß0ݳ+&R=Ë7ŠRëcÝ@D¨¤Ð[õ9i=¢ÔÐý•'ž! ÃGˆ!Ù"ni&?¬é:=ŸLØ3Võ%ïþ‹!·‰ sȑł°ŸJë%ß©Åãßs½ ~R/Ìxð ®:·@ÆtšáÙ0³&-lª^Á|o ã4€P˜Ñêâ€Dß$ô^R’3n›¤ÒWy"b¯ìa séíâì—ß+7ûM=²'мlÖ®µ¸[˜õ,nî\¥—'aN÷«YÃBâ“L†ÞÊW,ÂJüK,Óã%ìÀ§û·¾ÐîíÖÌ“ýéÂûÎ/‘˜U“U/8#2îÝt²D¾àp—ßÂÆ?i¬ÅÇgÀ~JWý¦»²Æ§Þ¥Åƒÿ&xiYДö†|ã ܉BËŠˆ*;wø]H×Wð˜²,’ž¹ÞŒ¯j‡­«;&¥š}°ÐËTµ4d€h芻jÌÈèÄí0 bçÊmïB¾ÂpŠwÎ)¼ÂfÒ¢xFŒïƒüàé­àÞzö—oGž#3dÙpiFƒdéqæW5 Uw•¢F«„Ë$)Cz±zWÞ}˜?cY˜RâìzWMx¢½£9D_+1„&.Ÿ0¯Ÿ6(òa+› Lÿ‚…œO¹ioËÒÒ`“pûpä¸& €tiÀǬÈÑc2”ÌêÁê‘,·s⨺½÷°‡ªþ¿’áö VЇ:5@«²š£r¡‚Šnqä­¢CÁ³¦"GƒYÿf%®ñþ|ʰnÕ»}Y„ªÑ^rו‘¹°F¨=UÚFÍ.$ÝFô\Ң͘”©É4<‘¿ä=‚8olá`ê…”)‰VÌÎë3‡»{Ë>±/pÑ)Veû­]ø‘ÀºdK],Q $¸ú¾l0«lß——+àá7×õ¤lôQ¤Uï7 «ßo•͉ÄžfÈ´$‰$G“áKYŸåŸÖÍŽLÞ¼^êNÆ‹RÛ²n, 7²UŽVâÒì €pnø ¡ó•f¤­­®ˆ%¥æ½ª_TÈýfò^¦NËË5Ù¢f…*UpCPtBë2²LÃO¯v!Ù<{vºŽÌŠï€ìHs6ÒíÍ}LéèΪˆˆã¹KŒÀQ“7)â¤Ojã™#Éu˜znŸçæQ1&7YzñTÕy!ÀýÅÜŠýùC°µÝ‘wæ„ì í™bä¦\8ìæäj‡Ól8½Ib²ÈáöÊŒžJ·áåd»à>Î1ÅðvòF´¥|=t–BÁ¡Ÿ”® UjE¤H ÓÑU×C>"õKî°uˆùª4žÃÏþ¹Æ»’ªñŸ„C6Ë ·hc‰[±[û5ú·MʯyF棔ä®_–1µ¿%¤ ;8à Þp ›\#âgÎwÙÌŸÏìe¡j‰T>¤b!IÓŸ2ŒݰMdðÛ¸2ʘVy¿};[É$"`õñǘ+°â…¼–Ú5£oÎg‰aÞÌJÔ¬42âEÊp„Bë‹ ¹ÆÏââ#¢v…ŽëL‘q3æé®DúftÎsç"ó3æ¡Åúº|Ÿv¼žásò˃auÊ›ì²â¸z„á…ü‡Dòú—²qà ÇxY¢Z¹í'œë;}ñ,¢É†œÛPžFËC9_þf­vzž8Ö¬p§ø÷|MKu¼Ü»$ymãZ›¯\¹aþ;~d2yñ(µ†îלî¤bKßeÖ×C3œôYº×¤)åÃÏmBÖ°DyÍe&¿v`÷Þ½„ÂOƒ.4Ê\ْܾž ÓŽ*Uj/zc ]í‚"DB­ðøY›6 FõÑ:¶A‘Ïú}ž ì‡ú£u¿ºÁu¹ñàC‘¢+‘@4c5K›CÉKåI”š[‡—9`ÜG§~Õݬw™ª–•ÝU½9Øöå“´q÷uå¼0d®ésÿ\%ìkZ÷7pô¨#]­îiK…nó¨¶28Ktnù5$ïxméµG 52*:êŠýùZ(¿œÖ§¾ —Q[-‚5Xùß6רš!k,8]áh "1Ý­ =‡í„ää´Ë‹ ›—1)’9W²-+Öœ•\¨A<óXß"1›v-¸Œ·&ZDÜÉàÇ)€9Ꮊ¨kËb ’´°¬¾ßÜ%8Cù ÓlY%g€P¸ô,ÿÝR‰AßÏÉ>Ì÷PåÓ×””MF¯\uë ÖÛ4©ÈSyªV3òØ †ZÖôZ7pü¥'ŽÂöÇÞļ*nîûÊåÔsžÊn‘OGX±ËBGÞnÒGÏõçïä*ÇÒŽž§.ÓÈà4–ÜæWšûM–ÉSšë^Û`ƒ©pÄÛØH—nͼçdÏ(۾㣹÷Êß_a/BÈHTNfåh9Nt#½¾}°­£MÅàöTW4¯Ô‚ÓŽ´çóB½ÏÅ}Šh^””‚Ê­E ©c¦B¯)AYÑVÍ_§wf\Fª*(äÌîyFÁcíš,¹,¶çÜ1Õk8™í¦üñ³„ޱµåPVÜÌE|úÉà·ekƒŽÒשlŒ%‹±ÉJºÇÄ(x½QÙïJn®2S™„žÜvð.Zúð«ÇŠŸzªû*ÕÉÙQî&o»J÷2±É_w5V¥øïýówJÌ*Ò^ëÓ71šÌ<¨S¾ßœGæXðàÿD», ‡Ê›7£`pWP©î£ÓÔ¯&¢´XÛÛákßW(#!²ýaÅË:É8¾lÓŽ‹73ñéè²öË“3ßï²Åêa† ·QŠNçCvVõ#¿ÑàsO!뎢ðX|öô+Ròhœ¥¿G/bZâp“‚Á›ïâÂsi?)·[@êãÖ|vI¦!2Ò>õâæˆùðñ˜ƒz£ÃwÉCXð§ðwx‡$ñm#!Wu7]µjI;-7V‡ ¸$Ÿc…—–õ&4µÄÓËŒ¥2½u X¥”)b„pS_sXŸƒ…"X›Ò$›ñ86»o½[qƒW{nœèßrgÑ4"WZÂ….Ž7OÐbÐK4jXtkšŽ'—æÖñžÙ^±.F°fKÜIâ'ù[R»ÌãÙLjùošiOy2<ìBͪLà2‡Z-·ÕN~ èø ødeôþn땈ôô=ä¸WùÅýÌ ÔusgW"5Ì"&;™ÖølPìyÅ’€hï6™ìεÃÙDƒ,+Lcþ`°ØÈì¾|Ëneß ïö}úŸØvÈý|}ÛÈ"ŸmS^ïl¤å—‘(9NŸí»i\$Ô¢ m±¯6ÆÃ¥¦Ä\¨{ 5=Éó>~¯ËÃßû>И¨^!%P§m‰oï~{§ŒÝZ,uWak)ÝƯ@ %s4#Ñ í.ÛX³§Ùu ÝÆJ÷øî LÕˆÈ]Ia¤ªo¾÷6L¨j^š2sÞp_oͤ©ø4wQ\™51Ç€fØ 9ßQB£0#H6øiŒbÚîÃûëub”Ús [’Áu&äMqMW&Ñ£,5iîfæCñ3…ÏC¡9;¨3N´íD Ãb…*›ìõ¡5·_÷Ò7ý¯°©‰ Á‹Îß \°¿mÙ«ðÍB"•ó³æaÆnS¬«ú\PýS*›ºçÎó ,¶Gšiì7¿(µGöJéo/E0EµµÐЀƒD”B“u¥>â\ÖØ3*+Øï¥ e`œ‘ד¾»)CWö¸è<Éxg¸‡ ©VmžøU:Ávï™ ÇOä(õ–6‹W=Úo|gÇiå)ŸmôâÖp”çñö82Ñ/ôŒo;S"¶žÉQç¥ BÈÒ´Lp’°C‹Þaœ`9öDõ]D#MŽa@z-·­ºÐ_ÉëŒÂ6ËÎ@«¹"ÝÙL¨Yi¨“=1 y:Õ5·ÊS/z¿»阹‰Á)\Ï¡yh-È ÝÁr7™º‡Š·Kh©Ð5­ÆANvUF¬u-öç÷(ÏŠ7&·•±¬§{~öÄëa!ˆšDçò4s‰ûQñò‰Ù9‚’±(Ôô2]o}w8?§º1G$§{¦£õYRzk”|F×ë f×èa;ȶ“êzj…¦T¸Œ{‹<‰¹S›™e®”g-õuìÒ™0¥‰šÌp ñÎZí§´åž_4G鉩!]jQYÑšËNNxFòS1x:W½kÔób·™Øã-®“ó¡ž7ÃêúæTÅiÀ¶]꼞¾v‰¹¦³se|®ñÿVou$/ËmG¸ùNp´$X‘ïÒ|`›`ï¡£{/„×?GECMCsxé8#°;ŠÑ±ó¾ri%ìKAåvÇ#%hÕÇs4*è”)ïb h­_»4ÂîÆm|HBŒDsÊ•·†mÞf¦ûG$ìñîÅj{ñ¿ÇEq¶$ý0ÁjÔDÓ†÷Æ‹Ê}½gKóûQ(ÌëEÅS´³Ït{Š´iý\tÌU¸”SНiG…O‘ôùŽüL¼Ò$öq?´€ÇÓËsgÊ—Ïú—(ÔºïÆ£—ku TDñ;¯1è>¬–Ü+Ça–ƽ.mr³‡Ÿ­[1af~¤-Ü™mèê¿)wpmÁêµð5ɉçÕ"áóð'Ë'çîy™#ÆæŸ€N@6eöÖ¯¥œ§´ßÇÃ"ŒxÃÌ8õØâÞÖ¶¹Ê4V[ÒØƒ{d÷J3ùéã÷³…Å’³ƒT¾`˜Í #@3Ô–ÍR¹ ïE·ÜãE¯ÿR@ÁŠ6vé ßO£ŸV­VßÝ“ó›`ðße˜Ë¦MMçA…_µ/ìí÷÷©‘E¼9n$¼š‘B„DoÇÌdèþ@1©$ûÁ±m8l5®Xf.=B‹J-Öh#5©=æëH~êêþcÂúìynò,x/ØÕ׺]!ÎPª¦^07.Û8b¹&Í¢pwÁº9(iç„=Q/Ÿ4k®Ž?©i~°OpGºµUZ&¢÷«EÐ bõÁw%èt¾‡â;:ÖzW"#ªZtb,Í 7"0Õ?<Ê!R´|ò• T~©ØRöჹW¦QK>H85ÞpõÛHôß‹ðÊÄ)è}C醎0C7úà{‹òÂËŸejn«<ºhJÍÚða U°çmYYmç¬Ì·ú)d¶vJ›é÷ÙÎV䃮˜5x—„ç~)B­û·Ï…dl’?ˆo¦q^ý±R毱J¡ÒB½æ/+û£ú;ÞŸ'šZ¹3õ餱tíM¿£m%mA#Ë´ð¦£æ¾\£Ç?©{ehàHÏP™c 1÷ž'EYýï^ Ùg`q`= Rt(”ؤν›¯S†‘úθ°Ž>2j®tƒWY‡LÁ†âªÅšo§“ÛÊ•ˆ“Þ×&ùQÓÛîz:bÙÉJ.œï¡ð¦+ÓëÛº$ ¢Ÿ]oë”r¥v·Eɱi'X‘¿]ŸqØñÔ E–G`ÇÛˆÞ~æ6™µ='Š¢\o©{é^¶Õöü q­Å,=$nUçòÁrŒZÅ…°ÐJ–ÂÎ-¼÷ì[Ïtœ%^·U0ïucÔ‘HFCÑ &a"Í1¼’>¤Ò|Z˹œz»³‰U«lµªöL~ê¬-Y壖ìý•¦Þókc¿K)óÖÎQ_ÃIÁ–4UTo`+¶þí3®¬n¸±ltdàsË2®+Ò˜_-ibae©ü8Ã<»Ót:\V{w*RR‚%%›Ç¼#O(¼?v.oé%ÖkÈ…¹NÅÖœòU†~,æz•œ˜bð) œù‡ ãà¶Œafåe?¸wG.XáÜ×ÇZسvôÒº‘¹$è[$“$«E²à³×ˆ0 TYIƒ¢†„0Œ`|‚£ûìmMÔmxÆ¡Ÿöä9o7ëZŒ›P!0ÛnMÆû¾[)+—*‚³Izçl ]Rðò&8`¶É\Õ»N -äÆ™Ç§óYº®ž¨vå{`­á[-Õló4Ž­MŸ¾}ŽpIÜ_ï}ƒ€‰ý>œâë›ì75PIºµkŽN7šâÓ÷政®m “»XÁ“ ~s¸ì1À‚Ò{¿/Ê’•Aé±Ë‘¯PéÝP¹TÒîFSK(L¼øê÷³G>3àb;¥\`<Ž•´ëúõ«¹@*/É´0:ФeÆ[÷±æjwí8tAQ»¤ñÙpÈ#cõ?í§× W¶˜è&ôG‚on±ž:Eœyü5äz”míM3G»çl–þ`^.ï³sñ³Ã‘c³À>ÿs²h“£“ àÑã’¼bCÁ:g´¢iÊCïnó¸#ìä†EF~ƒ ¿YqEñ½1ó`?<¡­¸ê‡ô’Dzyô.È¢$ßtUPIKìeKZñÏ bì1‚§)B…)M´ñzF)#KÕǥϤs,6†ÝNÄI€[»Óè׸ èÀM óÀØÒ*Œ¹|Š•@Éåz:®ÿa"uV¿"2õ=ÊÇÏnÍæssšÍ t9:–Ib¦*ŒƒF³û–ô#©<[G‰çL§ ªùAk$›•ã‘C?ÿ[gŠõTúTn¶Ïy±?ÚáÊ\/Ãb¥Nçq•ÂeN=¶Wֱ̮]ƒ‡zp·Ý$Ý²Ëôj¼ëkµÅ+GbÖ„vJ0(óÅ4Sá¾ç¨÷™lZt9ò¸ãýdv"™íÌ÷µÆä”º#JŸþ¼jÐÙÀ»@¶ê`¨é÷Ñ<"¯//–¤¢&ä§1åá] SÙPÆ,Å »~@âwYu¸Í€û޹ØÁzS^¸r‡¥Óh²áÝD!GZ5kœåÏZņçfptVˆI¯íø21_›É"÷Ÿ¶Et-îZ!Î÷?°Œqš ÁÇ#7²‹H@JèhÈäØ,4‹˜¶R-ÉËNôá©Õ x 4ç5}*-Í7õ¡å)•Âx–x~‘ÿÊ–«ñ¶Aûà YíÕ–öjh´Ëïп+&nÇ:ðê Ðòè5Ãn:OôbŠƒ„‡…]Y>CC<·Åu‰2®Ë)!£³òa¥þèDëÇqpŸ4jM%q^J6ˆjxNíøÚ,›S÷â½MqGA—0éj’ÞÑwµ‰ffÊô‡ï0aeÄÙFÇy—«œA6FGi§>¤‡dÃŧü‰¢|Ý€uYÅíî:DÝ÷touÍ|ãÈ‹Þ+Çm…³Ç ŸÏöu­†= é Æ#BÀqÖ9‹P}Š¥@‹ ævl'ð…rSïžh¸¹¶ÙvHÞŠy™ ÎÄh’´ÀJ#°Ó1E‰±í|š_Íw$ ½e€&,T<9X¬Ã$¼£ë(Œ¿5ƒ÷‘im¹kn¿’um粃²^t¶cYT¿%È’NSæ[T÷˜Uá¤ØTuNÛGQ«ÁŠÄJûF0äëv^ÑéPí.Øði—˜Ç´ßJÔÒ=˜™è½Âg÷n‹âèqn&¬qÔ¾“µgÇâÎûýüªßÆ´Ö IÉ!ts Öë4XEp(‹“+&¶õjÆ:σ"|˜=¢ àvó”»‘†LÉî÷€2R ¸–’¥›ÚÌ5³0N(m0ðWâœý±wÔ ©x¤hWÚL3ŸÂ8ÛBÇñ&IÉ>¯B½ë$ÂÀg¥Œ ´fÄ*×>É ‰D§SÊÇàž¾V½ z¸‘ó˜@̸®kGoö¹W„‰Ì¬¸ÒÜ:ØÊY©²¾Qœ‡FJñ©µÙo’×ðÆì´ÒGeÑŸ½‘­6 ËÛ^sàr]U䯣¬wEÐáÒlÎ?ƒsù±{;•š¥º|ý…ÊØÃ†^ZˆèÉ0+q&å“~„™±.ñåô‘¶¯c )b1.ák*ž ze¬IÏåˆrΨý½ Ûõiö»Óã°ö¢H«â"fhY%=BqÀǸ}ÞdŒŒNá“Õt9u‚›qûéâ÷á‹Î‹Q%)hâj ß ÑŸŸ¦é†üØùœ2üŒÝOî%´> 9åíņÃAˆ†QÕÜŒ\|úÉ«JRql€æ3¿C[™CÄOð+ "AŽ›$‡=ËÒª¡ú´Ñ]ÕD›;Êgq*íY_Ôz¦–#4ã/øøª*A °¡ðÕÂ^k¥Æ÷„ó×R@(UÝïlÙª‚Z#z/6¡p c(Ò[Ëý¹‘q­ÍQ Ä¥G‚QûŽwï/¾G7xIgðë@ea¸£M²‡É i2Íà|ù2‘FOÇÓRtó;EG{Lë7ôÞ»tÌ“ñ·’¸Iʬ‚²2„gÐ:IS æ. 6uŇÅë”>ÕóêϽl´äç*¾ÇnwlúcþW®lZ‡BZuâÈ7¾˜DÚè¹Ä$JŒ7§§§±ÁôJHÕCH’ÐïÝ5ŠzýÁ£4znÊúËÑõáõ\˜1Päs:›cpà~+d΃XAÚ׃º^4OÃi7¶ø¡0§_•è(ˆt\=·YR>b†ÈûÝääi¤_£b #çªC•8ÌHi®@—)/ßj©e¢û’3½!ZŽS¹ºÙß§Rmj%µ"8ÒÝe•Šƒ/ló[­gK¿Dl¶/Ü›¥/ÄmDl®5±Ç"ÌôýðhÜÔ{cÎZx¼Í;ø9eü’"·œlK)ò –4Úèùh –”b²Aœ8äãæ· ºšnÚÉûÅY1¦Š1;öíƒ_ŠQîÊeX>·ˆ4/âIO‘–%V»6UÒÑOî›Cïˆ'þ˜¼¨E…éØë™šâdðzÜTì) ,z"Ö3X½–9 4Æy„úÃi¹úè57õ²9vlÂÉ7˜§Í^=j F5Ö³WЙBjПÌOX¼\6Ñäa‚ Ž x¾š×\Ø;{3I(‹ˆóãý6ó©{E×R€‚Ìæ@°)VZX½ÄÓ»áÃ9ž!½õ¡ñÉ+Ý­ÞEÞá¢6ë%¡|^FRꈒAÀœ_îMƒš‰˜¤âY.§3®É`à c¥6uq35D«‡~21Ë'w¢©ðr‚ÀøøH» ÛpÍE~Š%ׇb´>Ï"®ÄÆ]îÃMaŽ7øEosÓÐ{¸Ÿ¿jÂãù’´ELh­%|D®”˜p‡p—Eô?ö¾­3¬tŒ`\Ò&‰¦œtSÚ«¼ˆ@GK¡ë²ñ#Ìù 6Öœo,T] û;ŽVM5>Z–N˜Üt¤'} Ê«ò¾¦p]œTY Ñ£9*`܋׹9¦f0Eím¸Ón|³‰Ì=/Rñ677Áà®RÑd µŒÞ7Ò€þëœX‘u9¯HÞùóZLNÛ9cß\›!W-gØl•‡¨|,^œd‚}u§¬êbï-&°F¶=0Ñ-ØFÔ~-2¸¬Èy¼!Ú8¤GœÌ—sdÖ0WG¸=\$à¿G€åÐ å±Êk­¿åÞr²´ˆNkŽSøšùclÅÁ"1¡/S³qì&Ê|\\éb,m¶¡Ñ­r5&Z©!—í•É_êÇOwY¯·°Ð¯´”%ï^ÈE¾*ÂÀ3Úê]1pÌqKdF¿Öíep–÷ϬOK¼Í ŠÓ“~+ûi'ÈbUiž±‚г@FÄšÆKß1NÃ6A›½SÆ¥˜Hâ~¦‚BØ3Š?E;ssþN¡í+¥ÈKǤZ!me£žJ4{O?ï›!Í}˜%gÞf…­½© SäV׎ß‹úXÕÐôà=Ú“xìZ=c½<¼Š£âg-‹“å¾Öæe–Ý!WÜ´±@ c ×èô†7›>ŸWECžK;Op¢¶ÀÿU«7Bñu½±,A³Ž*µ‚Oï9ÞÞ_,ÞÛ=̲Ɉ¬mÁ6œ¿Y–¸ ‚&V~œ«YXa¦–^bì‘’kWíR`—‡¦FBåíuÎ÷PßNJuê ’„&mcÃÙOhº ­U+h„§Aú¯µc¬–½§c+™äyÝbý²ÖLu3òߨÔi¯†#h˜z+× Ò©‘.§åèåDˆrÅm=H¶J”6¹‡§åÇÆ¦‡¶{¿÷ö½°ÊÌ¢…$ÚÁ­¥%ïÖ{nhç C{²“Õg ÎdhZ5Ȱ½ç‹)WÑ4UtÒìy.cSˆå_ÜNEÜ´æØÁÈhP£}%òT8UW J@ßq‘<:‹]5·Ô@Þ÷¤“iÀ²ŸBYqmF\è¥/_›~6fˆ•¤…Nëq:% ‘$ .±ý.ªb¶°iÇV&ÌSø}C¤>?Š%ûüäXððô‡®#˜ãëûþS^þ÷Ш·¾nî w'òý#AýhtMÅXXnšl º_ã¿%ô¹~A%²t]ÙÂÜË3¿˜­ûVš¹ÿчùx¬ŽÞB핹'©ÞCÆçBØxÕ3‘’£¸¥Ò©òG¬ñTµÇKá Uƒ×Ÿu‘ÜÎ×ïU!Ë“_4â:›-™ ˜KUj (tÐÍÞƒ£ú‰º50žAÁrPoóz÷í{CÖÜ:Úøw¢T»âŸì\Ü=ú Ð>Ù˜2Zq*_`¡M\JžhMâXKß%0 Õ®ÅG¤8hc¡“ó;´qI5¡Fƒó"jÅSun—í«®tJ ñZ~0V!ž²¦œ‹„ž¬½0akCå\úñY“ºÍݘŠíèé÷F]±CÑë©~XO×¥Ìg¦SsW§?ûqQ/ÛÕ` ÁGTêd€º†É\‰Þ÷¥-†gaE‰,|#öÛºº¤n ! Íà›áֲݲ|ûô‚Áb’Å“‘ø³z‰9F±¦ŽlÎô)FÙ%ª\k=€Ë»½pìÏ$¤,|éªÝ`Y&{žqýTЧyØzÒxHN÷ôSž²EXo’7!z5xüéFJü˜¿aɵÞm GôŽçÀBIÊ#û´µ6$!q¨+ì—ó\Nèû×Ss‹ô>?›É¸†[¥Õ—Q¾RB·WšAv{Àlvþ©bÈË·YyBè5œuPžG6Žé­çïi%Ö'„@¦ÕÂýí«aÄÿô! Þ¿ŒÚ]—p%ÜS•¤¥ ÏTŽ0òÓWâuÐG#€€âBæ üõZê|¾œh6:ˆ”–OÀ´!w&:žâðËΖÖXÆ.K@Ø«ò7oœ}ü=ärlØ%ŒnŽ4ÉÜãÿàzYEg¼î ‡ý Tà0ÕU6[çffõ5ÿãbú½ôˆ]bL„$ÖgD™­% öu诞(ôRwQ< ,Ÿ~„pT¿J- àmû§²%,Øàέ€‘ËTÃÖ™´oJ2ü[;˜ÞR”Ó°-¢ŒAÉØkÿ2ÒP,#cã@¿Ü:þ(õ í=—­_Þ¶F .€)lïU9˜r®£ÿ!q¡ß„–Ýç£ÃÜí4ÌTbŒ×µ~v}ü'ÁT爛g´Í`(€*†#‚i‹Ÿgc -rp¦&Šñç8OüÑCϹšb‰ÑÎæ¥”Ã$ÁϛĀ™J¬ðN+U¯ä7;Gù©r\Ü9rtYn=…Óu ›Ø½U-Y³Ãæàê5®üE¯÷Wé36N²þ@G……¨yėˇò‹š7q‚ýKèÖØ«ƒŠ“Ÿ¤…+Koo{¹:§PÜjL«²B€¸Ò€5L˜i‹w¨ÒTñ¦¾­ žKWœ éÜ~7²²m"ꢟZ àˆHU•¨F&h¨W»æS*Û€ŸjèIJ±›6„K¶g¢ÈçøÊQûÔXÆžEMò”>̉Ä&Ü ä·õ:@ÔºÏGóU^û¯¶ b”+гõSì—¬’½‹*æ€Ñî ž×Àh; ðaåY­5õŠ eW±V÷#;Z<áœlú‡‚”+wܵ-'Ì?æ1Y¨ŽºßÿùwrÁ™¿!¯¢Òõ÷àý[ùÎE2¡ÌRðTcñQ“…®0aù9jw˜¼7™YRßÜn€Dié*6Lã7ÅP¯Ò XD®y4ñÅ€ Éyzbý8†%³zV,mµÓ©­Ž%¦±Ûšì·÷Σ¾¼ÂgÜW´[b)Ê´Ò”öa׋°û¹j/^šêá¢D;¯¡&–B*w²IøE‹TC»FŸ*5+ê#Û«20—‹³ÿL•rϮѮøPŸ}…’£XåNö-gRðÀ…ä[Åú…¿ÌÇ©]V`GÀÿù]ZαºzPR…YLØÚš¡ASxKp2–*Mn1ÃÿLR>KvAµEÌ×ùs–úCŸ¶}Ì8„"#Þ„.ȩߤ•8¥ªô7Ë&pxÅóâ%Î07/9¹hî±ØC˜Qv=/«ô²µ:N§ùIÂÓ0é1Y¥®¸ôt Màm%öj†’³©Z÷v§!õ„OøXi)¤,”31&Pqíl#íÐðü´»!Ou¹$Ñ×£8'n,"VÚR02]xõµèP¸æëÅûµ|júU5XõËçªS…~½#áz¡ôßíD#yÏBŒºllëZˆÛÀ!e·bÞ¹= ÿ™̯…:"Š»-‘hºíB±0q¾’ÔíÃfÑÄzDÿqô½1‚Ñ쉌fèîæú¯p-dw»¢óDyoK꺤B—µ·¢è”g„½¢ªÖà!t*@ÀË ,§Fz0â¾VË7 S®<É,‘ =†.FêÄŒ_¾2øË²êeÿ¸£ó ýÝP1d´om¨—Ã}AšZú¾X^Š$5¯½Ýàd¡Êy“<‰õ6é§-j¢?Ñ> Ìáç+ÚPX£ÄI¯#c ®H¼ 5@z:ÙFª­WgMڃn??뤟Ê;¹ùó† ƒ¬a€ç<% [àùÕè59× ÇÅzob´îj[lælùýÙ /Ï#,üèp+Èìg-OXõ.^—kô±¢6'Ø•1ýÅ€!ae©¢Xp|±7T¨ !˜„£-",¶rÓœ5ßAfn:ü#Ódá£Ï`£jféÔ6r¿*njy-lUk\ÙU¾˜ž¾’Ý`6k€¹ŸPµÌ¥u]VÌ〼8ì©äI7ó$‡tÉ¥z3 ÅYÆ“dzÐ[Ïœ/ަïØI×½õ1¤ 6@¡¿£è5:Žˆà˼/ÛQØOûk_‡PWœóâ E¬›ggbˆ@-òa]í÷H sXm½ÅQ'R¢ò%µ·±Þuư•kZxßHnêíÐÒÝV†Ÿ Ä ZJés_k„ úfQ Ù5m¿7[ÖdtTâ­Qcár/yØÐÂs,À…iÿ,½|¼æ“ÕÛü)¥0:É r+_fdW3]+R!8Ñì¼]öÂ`1êCb±“JBp°J÷dWÿcä6 îÁ÷_݈"Z¢³‰Q6%:Þ'Š·zžcÁxÒ[÷Ž:fƒÐñM‰å̰ßuZdå¹,Og,ç?s˜$X½»UZŸÉø ¬¶iÐq8|[ZÙØ.Èþùð]±‚ià?F é˜Ffû…JjD¹Bk‡ÇßߊÖz…X GÔ·M|6jëY\pæÁ`fš|bɧ¤°oZgöOr±™ó§^ö¤rßi3ìq#¯ T»@e€Äe§R»è<¡7vuu[\ÜM/ò g:8fëU‡oQQÁÊ "ì\ü>—nšõgY&Ùz¸–…lð™j§˜zŽÚ£¤ˆB.:Wë)oÁÅ3ð½*¢M5µ•¾ÉyëÏIŸ$$³5bg®´@¼éºYÏÛjî]´vN í[¤‘éÄAb—Ì~?ÃMn0¼ŒÉ1Ãqpûјáa ´P…>Í 6NCqª}‚½¶<«”Ù—¨_Û-G(…ÿ·tÙ·ã-©ïŬtU1—ù7 ×ÄÓ¿GàÒ>ií¯É£eW'•f[äòr“n˜v½¬ÌÁ…Ióš™ÂÿmÙ¯žÆdFÇðЊ¼èC/ìÌ ç¶Ê6¨Ú3ÈšÆßJÈfëhŸ»à ê\ ïlMúïÖed‰¢3–ícÚQ,‹ªG\i:ùHÑâAÞ. !•2¢ &A'Á`]ü/¼r´eO¥ ž#ùßçOÑ¢eÅœu?À>û}cí›Ü5ôeÛï—>.ÛV‚D{í'¹tï¶R)7#ºôPÚk·bÄyI¤OX£ÛDµ«ð`E áX@;Lûd~Åñÿ!E2’;ðb©RÎöožÖs»Ioñ OΙ³þL–t?õ)ø¯¢ î…òS Ǩ#:÷Ôé€ô© ÿ‹§¾L§[cü±§VšJ\‡ÁlHÈEdþé—Õ‚x¼`XõBÿ¿â->¨`¢æNfúL3ÜÐZêR§ Íì1|çHà<3–›Ï-+xàí3ÙÝKâû»ÎUÞRFÇy^N‚‰å÷Ô¸QýÞE?G¾ÂÏ7rK]=–¶Læ@'„cóÈ4{ºX×´>êPnþ:£C ·¤Ïpuö[Ý…ï`E½výl§I1Ç sëI¶ s#˜¨&DŽrO‘Vªãˆ˜âÒ_‡Tv©¬%M9Sc]85´î|_»ŽÇ1Il¡þΰìx¡÷©Ú¢Änê´Äž¢ïª§›t‰ÍÆÞþ“kë«RÓsšPïd“Mß g0ÞhÍì!½ò+Ë£‹?‡¦[‡‰vúÇ7ºÕN‘"w‹ ôGjõ©¾br¹>/ÄÜQ­ü5ˆY}§éà9w«P5ÝØ3iÀ<.¬å-döMÙ"3±žUä!¸Ï½s£“87÷ÓÕ¹|/qÇ`³ .?­TèhαËMêôt-§i†»” Ýÿ%v{î÷sÝÎlß%92æì–2!œ3.×: UsÖë?sŦʾÑ[ÓÔÿ‹z«Ï슞—{®Â™p&Sóuf] 6c1~GTòÄ8tìTþº­¾ÈÓ9«Ó@FÊGLßñ!܃ÆàܘÇ1Æ?NcN A= àÿBB¥/×ÏcÈN˜¬ƒ ¾iœáyU:7u¥Eg/©µ‹¡n†Ö,*²}Æ|-ZátXJªùÝM쇃z¹’¡Àÿ C£§(ÇtXn’8˜Ä¿Cƒ—54_â§šÕçY¤¢½fó“Â.2¥ùôam$Ê^Š~'ZBèå:ƒþ0•H …Ìeñ¨ ,ËïsÜ‚+Pòñ·ßü|8‚›h!( Ä Z³°(–*”øÕ»C87kP7Q¿S1g&8@>–y ‹µI1÷fØ×|ïúÐÎÝÐ…9…:1){^ÕsG}XÙCo…È˯YL!¸Héöy¶1:˜Ç‚ÍþÿÉ$ÊíÒ:èßî€0Ý»§';Ô}@u‹ø´Xr[øµ('d{ƒa0 ·tº»-`ŠA ‰Z€\¸¼’d¹›¦ñ,0BòZ¯²êx;£vkJA™A+Ý´ nV,ÜØ\T¸Vî5DÌy7…ѽ×ȧ‡2˜M¿-•'g”‘³/C2µ}—Ð$ûl6Ô·/²´†70—9þ€aÒm¼‹ Ž=5Å­dµ.Pv÷Ñ¿Ç~fØMÊy×]cxPS¯ Ò…–‚¿~¼2Ìʼ§Ç¢?"´ãœä9Ñ¢yÄ.ÿ»á¤ã`ÍÛ¼W÷ †EaúY­l½Î˜ Ë÷¾'ÿAYp‘@{†åÊ¿°Â]Å­P-‘%å~زeýàæõ²ömÞYø'[®”–¤^¯Š‰÷ !î¯u4^T„9ÃyÖJ£”ñn ®zQÈÄGÿSM“b"´½Õ$gçÀÄŒöZµ¶jyúM3ª˜ùH½NVÀBpÖ¬ô ~|Î×î8²™O¸Ç—ˆ1µŒdÇ8¤Ñh"¡’ãX Œý5¼á'~=+|€€ÂfÆé>òÇ£®âÖ¬A¶¦VJ”N€„9ŠJ˜¿äȱ%¾]à½Ö÷úö7Jêi]ºÙ\6)ÑxP¹oß @xaØc>GŒ² —ò†…$éRc›ž~¬ô þŒO¯nµß(F#ôþ³Åž†º³<~f@Å“ðH|š¿È}{–„·«Û'ü¹A“{wt½AM¾Ò©¤Í˜h|‹ˆ%&â‘XÃ,±ÐºØŠîòuϯ±¬í6_03×–6ò2Àkéjš§Ò8Dåð¡ÕbVç.}£Ø¼8x‰èKC™ÔÆ-…³væú8…„%X-æ§F›T- v–ªW¬F·ÖPŽ¥;b¤1¾ÿ»˜éê‹wfë1Š×yþlxêCøËÉîÇPF¤—¤ìÙ¼ì‘æú·7µ˜2÷B–Þ:\|×?t ž%ç¥Á…—yXkÞì»ñ Ö¸‰±+ü\TÜe0DùÓ šþ+0°rÛ<ÕCÆ€~ ±á$ð‡|î‰ðÌÙõ XIͲ{±ˆø®w5ÏSÑ 2ÇãrR3XDiWwJ ~“‚úÞ2Û…IJ#…Tèíã| 6>&~…e Bg';=ÃJÔ»Ioæ]‰K  uçF˜`¨®LîÇC>âòQsv@V-YôÐ#Ð ”Næfl¡Ü/“ oËFà£è’JýÉCI ,œ£Ú¹„Æsöi|ê gjáækt^h&ñ˜kDqÆ88) €å8šT¸ü$W•Q2ub„øØÛÀ¶k«@/åàH´§N‘Rnå5š8âR·f¶äkýµm'éÁõÍã[ ³´Á(YÀe%·âñêÕœöý"¥ .¯bOÙ#FKß³¾Í‹Y†×Њ¹Fî¨ßlýD#|«7&͞⨋"²Ðƒdk’Ø„+U¤”YJ—M (Ô§2ÂÍFÚ¶$œùPáÞ8ß³bÁ©"+¼Pÿ;ø´ªºÞæÄ«Îê™gŸS ¶¾¡:ôâBÎ4¢_ª2-9šÛÅAN™ZUˆK±|4%^Ó·*%¦WdÁ­¬bvÆêr¶`âšDtãâ‚b€§8>ÇU/‚ú²ù!NãLŸ`ð(?ÕºëÖ´INo+ì;a‚.(¾aˆ®„,á_PlõCêÙOÊ%¶M%vL]<&Ê/}¯N a¬’ÑNù’×_[ˆ ÿ`ó ŽÇ²üeÝEï`.ú›²ªmÇÎt&G†Šb½·¹ýE×T³!3[î‡Á.z)€ý¹;&(¥ݳZs÷2áüÀ6î>Ù –D„<—vC¹[Ö'„CПùãF'î—~²oåÚxË?_zv¥²@dß{QglÑ Ø#“» ÑWÓ(Œ%«!È£ õMC#ØÍlßW»™¢£Ð–Ì+ ý+Ðçüöc¤ ¡{jtÛîV´!¨µÒšLi€Ë>>¢„áʦ¹¯•Ω[jª ÿ†Á Ñ<‚šÎý§ÒáÔ!Ù©†¢¥¨Ï/Ç$!Gé)C‡düVª¤É&®ï« ª´6‘ª°"‚IÓæµo-ªCAœC#E"ßÇ8*äÀеSj%u–«WÊøÄ©¼À©ê©'÷G+&¤ÿïæ~?šÝjÞ£j›Õ¥×óö· /Uÿ¾!Ï¥¶³\~¥kißÖµV¥Å× Úg¢ŸÈ†nžSDš`V³†îðÂÙf(†ŒœVZ .Î|uè‚7 ÷CTÝé?+dœ¬Ë@Ï”°–Qñ×;] @M”–Pa_€ïBlùäóHÍÚÖ%²Î0Zi¼m gç,GÛåzƒ‡j¯*zsbïEQübrþ4ƒ‡¿Gp5ì»ç÷aÜ_…¿`°Å¤ÎÅÏ)çøÜÙ7ÐyNŠJ1"ž«÷PMØÛVàlÕC[t[ûO×ÕŸžü” Ñ£ŸIÉLW… F\ñâw±W3†Ï».æê GŸ ÐÚC³¶Ð“…D³Á&ï‘ R´É„mŒwö¥ãX[XÛ‡•ÎFf¡ŠzÁpÉot„׎_½èwNu]Õ~ `Rciêß!ÍRIžÑÜÄõ9‚¾îÑ2.ðR|^A‰LST^tCoã?Æ·±°)t[ |—ñµ3¾ì+ħ4U2)ü  ×mfaMG­`>åÐx-O‘œç{Ȭeã^ÿ<r¦¨ýµ1™/ásÄR¨3S³^ØŽ¡žÜ,òÆýG¦¹wüïqÂêGormÑì@¤QwÏjn¼G*)6nýÙºE†*؛šAªweñ¿ Y9?4¨tBè· ý‘Þ­AasøÍ}ÀÙÞ P’.'i¨¨œ¯Ý¦³î]cm4œP¤ÚbÕÉÞ¦ÞcKTbàÍÁO» «¡÷™hq)Éßq»RK½‚É‹Œ…Òïþn}™•þ0zr’BsXñí¬¶Ù‹Óv"(P²2ëÁC¬7ÿfëTˆÀf¥ÇÃ'ÞwéÜÇ7Š$f¶‹Þ߇tVÉBA´‹óÐðé½+5làt–;¾ª¼BtïJg ü)¬Õæ´Ê‹¸ø™ç?ɬùK‚zË=–X ÄÞ=Ù›ÅËä-þ±^¾ ?›æ£DëLËÏâó< BÔ“)ÇÇ.=¹%8eãb}ÂN;gzׯðhµýŒ8êìzÍÉ2ðùP”n,·ÿ{‘î¢Ú€ñk9MÏòZ®x–Á¬±œ\•¸¯„—C@°P„@oÖN¥ûuÜï›éä ¬È5eÅ5&T<™EѵųʨßW‚®u³ì½Ú±;`©g 0×VM5Š¿ÔlhË"³…µÎ©@ ðky ÈÖ!³}‘å Lâ{2S×íα iý|¦ÁH’ø>tHg#,`úƶ°iÄ‚¥²ª•@ïè¦CArÏÓ]ž»ÝA ©(ýe]k ô†‚k©ü¹K#yFû&&€[.M>öG_ŠÕú+6%Ñ× Ê:Ƙtz ÜÌ4I2 ((÷ÈHªÛõðFÝU*oÊnܦÜÞ–áôÝ­ÑfM¼Œ|Ô*’ÙׇÔlz¤å–'Çö¿Ø®9x÷jù§Q3«ôEY fh)®Ñ‡J¼üËÔKØd§OÌ=¯!Ú€3 0þ„Ùý¸’N œ²k톦 uªóíá_÷©Øù²Ž_x,Æ ÐÜÝ® ™çøÿ=®ì|ؼ!rü)]÷o½^±õKoK!}:ç׫sîÍvo^$¾ÜŠñ€†aN>Êó全]9ÏÚñ ‡mq¹“ ís.Î~ècY›@—JÕwÐÛþ=õ@y-¹Åi©Ò½?!Ti Ÿ… ³ˆQüüG ºk&î[ŽPNö[ ò]Íh¡2ëšÀw ÌëÝö¨yE j? —5$5H‡]œü«aÀYnÕA.b-[ÅÚÊ"Þ9óó\¢ËD»oŠÅ|ó¯]M^2´jlÍaþ¨ùÙ½-_]è—_‘;¡Aª ÛÕŠ#ŒL9å›Ë¬oq9aÌ Ž\O±IYðÁ–VéÏÈ +´Y1oìüCÌP’»;Ø÷ú½ÛGˆðÐí·k;Åã¶2·ä}ôJ²z®«Lø§ÓÌM#«¢é÷<@Y;ÊGýhSŒ\#Þ?u´Ù:&šFÉ̆æ§óïcqjq ­Av“ ɵÂ$(–¬k1¤è|+‰µ!ú †"ó‚1a¯!|<Êè!A¼‚o&N1[-FÚ…b¢°Ž)À –q3±RŽî´¿bnž7÷N”Âmn3ƒ=XþÓöL0ð endstream endobj 1271 0 obj << /Length1 1460 /Length2 6837 /Length3 0 /Length 7830 /Filter /FlateDecode >> stream xÚvTlû7%1:”–IH³énI ©1ŒØ`ŒNA)IIIiE”A¤S:¥$U@šÿÔçyŸÿó~ß9ßwvÎv_¿+î+~×}ÆuKßHPÑeWC!1‚!°4PY×P‹ÁÂ..cÆþp݃£=(¤ôÿÒ+£áP Sb°fº($PËËBÄ¥!Ò`0P –úÛ…–ª@½ö@]!  ÷p)£ÜýÐG' ö–¿@/"%%!ðÛ¨èG#`P$PŠq‚»ao„A]F(ŽñûW' Æ]òññ‚ºy ¡ÐŽr¼@Æ h÷„£½áöÀ_åõ nðß… ¸€ÆNÏ?°ÊãEÃXÀƒ#=±^H{8ˆ½h¤©¼ëGþ1Öùc ü«5@ˆä?áþòþüí …ÁPnîP¤ét@¸ÂwÕt„0¾ iÿËêê‰ÂúC½¡W¨ÖàwâP š¢Š­ï¯êK<üëóŸ“–[ö(¤«ß?濇 RÕÑU×Ñãÿ]ðTJJ(_`€ °PPX „@„…ØCп£èCeþÇWé€JýIÛ¥¿öþkú<-/ðß±ôPXÆÂ<ÿÜ,†a¿ ÿß4ÿíòc÷¯(ÿ‚ÿw>j^®®¿µ<¿Ôÿ‡ê†põûKå«Ë}]vÿmj ÿ³®ºp{„—Ûk51Pì("]ÿÓD„§Ân¯ÀÀœþPånòkÁ\H¸>ÊñëA BÀàÿÒa· æ‚}4<±|ü­‚c—æßWª"a(û_Û%,&„¢ÑP?vÄXI Á®¡=Ü÷7ƒ !$ ƒubË : Ð€_ó‡Ap/l×±ðoDLr@`Iü7 *a_®d¬»«—ç?Ø'4ül¶ ŒêI ÈŽþü+˜ÝÞßüÂ÷·üû©€Ã}á0ÀÔ vç¡óÛ‡Ž+™}WdG¹VM3x¦Ð^§D©¼¯³ÂÐGŠ©=mT³+ª<‡ Ól[韛"ë“ ÎÏm’ ‡W“C7>¾ØR¬êd%a4VX ¼ð¼÷Àÿ=n³W®‡—$…~>í±O‡ºoUgÙL_ÄĪÁÚkqmÒó²Á8“XËÅc\yvÏÇØ 1‚¬Ä|4û¾”c‡G£49ƒWlZIü€ í8‘‹Eáø“qÿ¹—ÆÂž-ŒœŒ ¬ø‡4}÷”6Ò´è?”ÎŒYzE‹Ì¶àX©O,“HÈø!’$ßÈwãßZs\ú¹ÝLZ׋Pª˜N{±v!PRáŽ'¶¶~>Ìé¡Ú ˜`-£©}ËÞ|þBBù¸úéõeñèP-Ž[L²²‡Ü)lûèÇÓÞlrÓlêŒi·"@äläjºÕÁ ·›Ì|yˆÇ<Ùì·¥­9íP1Z9²Î‚sûd-ëòšGÌŒûƒVaÖùÿuzz¦>f’ï5üQ.N¥£xÎw}6g=¶ñHö]n $¯Ùȇ>í»ì‰‚ÝdOFÊ Œ›F%óf'§?f£ma`Å/"‰siO[‹IµÝ‰³xõ.¥t`DCNšÆ×/ŸZC $ú’²jÚéˆjJÚMºgúTñÖ®!é÷ì©åUËK:¡õ®ûtô,TŸìÞîjÉÉÄw„KR­óÞøþÛ–ÌšVÕr^ñî×Ó}Rg%=‡Ç­3-uáú=Ʊ“„õE#PνMªWä=^*öt“"ñÄGéJŒF~^¢dÙ%¾m‹EõK Ãz'2—9±Iæ‘å<³%—T úQÍÌ÷r\ÌçA£!€Iî™Uã§W¼¥Á×95¹®<ŸèkrT êÒ$nÜóu hóíÜV˜ÿ06“Ek± %îº÷jyZÖIqºra Pšª™#e7á]?O†7Y^°Pæíà¶åu²‚“{6®Âô_+ùt2å;àÈ.×ÚCb¾Î©?ãh‡|nQ°P ö3C7¥ªTܵH,QíLœ•ÝJæá².i ßk©£ç­kbzþu¤³ë ÏÂþŽÛ^=£C=#Ñ5Ãxa0ƒí|ô;c·îÑÚx'ŸXÂÈýµ'uYÝÞ°õ¾)ÌÚ?Ÿ$á·Þ¬›ðV¬ú@©ö^ªû²•y³lÓôUÄëùaZó‚¨ût\ÎwZ¹­¬yKl˜ <å`ï–OÞ¨õf2Ù ÝdGá¤w þÁ°¨€`A¼íۇцbyaôÊvº|¼J•Ü£5­úy\9 q•`^n ±¯êÎ.óp6#îFb>ŸêÃREF˜ù?8€_Oèô¢&´Sn0*Š[6÷Á».M­3–v€ƒU_¤2»§;2¬2W8 B r*«z>í\±…'z8f¡÷I€óúP;˜ÏçA½ü%îÁ»iÕ¹ReLwÕŠ×xŸéûQJDÍZ׸y1«ífMv ŸÆä¥¼¬ô vo#”¹g­íŠÏ6à/ÁïgÅ vÕBIJuªã¼µÎ/ï:š”¢œ)Ö?Ä´eØ&ZZS2]=;ã/´Êæ„všqë+;§L«)ÂùR朌vgeµŸ†R3ö((s>o±h¬9~v8§lç—-£öÛ»z€Yíí˲JÙ¼$}j4„:ËSˆ%ùqŸB}ÎÊ· [Lêí³Ú „{1ô€è,÷8˜ýS3pšÖ¾“„ÚÆ*{žoœj5ã0ÀÂd3°ŸT$~»ÅLi½ýf õXîK9%›èmbõNyt¡e xf ÅÓn^¸O[CÒl{†?zL)¶>“+ò¨Õ™¾x«ú¥48À‹Qp³=Hñ&ÑŒsP€‡ˆ©µN)÷ó9ž ZóBœn'$x´Ãp#ÁhIÇ‹ægºƒìo;Ý¢“­²65*‘„¬^ÿ$;ÕX7Û•Á»•PãùZvÃÍ2ìAXj³µ«µº“^7Û$¡ÂÙÖ"Kz¢'¹/Aéøõä)–7v§º‘¸iø¾×rã—uНÊYÝB6+æ¾ÈÊ®|Ê&Ðð©zµ-4aèë¦'ÊXï²°ÆC‡ãC›ùÞU¬{BU†ßœ3³¶d©ŠÃX…\màU/?=t¿ØéÇìøÍ‘0- v(åN¸Å—P›ô×ZZË÷Už– ¥íb†5©3TGwq{I£­Ä9tž®ßûZ1ž\>ï,qjíiùqÈ.À±3ºC¿VÌ,øàô:àHzÅînúÌýo¼Ô»¯>)šáM«n5¤t\ÿ4qÌ‘q©ñ(ÆÑal¯R*_›øÄçür´žÚ‰bB3–›ŒóZ“´´›PÈ#«Ìݨ b&·tØ\õÒ‚ÝLo¤ÐÎYÝæ”çík冗"F¶³ÎÇŽÞ=N{×{ÇRrOÌ+xwõ¾4¿ºr¨ôÁ[5~v=*ÀÐ(SÈV¤E†cº"FÁh0pûh0Çm†_¶²ì^­¡i®þТÈ÷À3¼\w·§`ö†Â&{‰õÚÏMŒÝ÷ï™eï¥ a_«}j B×ú½7Î-¨fp˜®içºÞ~ìÏvøH]wÑ xL6^¿wOeÐç˵±{—ùGw­•#2Æ(ؼÁséÝçäÍ•’éñSà@yvn4ÕF¯¥˜´”™É0Ð9Ï0sÁ‘ÃjÏÔ£&kÏ¢®$i¥!ôYk/rt4WÿùÆž{v4ñÖ[gþ®å®n˧Éý)!~©ëe©VC”w‹˜f|TáO܉ïý8 ¾<×´²°¹ž®©A5­ÙßÓâT¨Ü{|³1‚>–”ïk SS¦ŸÏþ *j2íÊÁ[ßóÇ)À["ÇøÞéBj6¬fŠiyjAGÅL•ü¬ñ¨‚bMåÆF…ýï¦z¬‡xT†Ä2³g]¢5{‚{fÙ8‹å<׈æw ¯+ÍJNê»KÄNK7¨Þh6ÆOâÉÑöù][{‹R®žÛgS–mQ:‘ß-øÐÊnE] hu´é®=ûé!¤D¢úÓÅï äÍbìúDÃç‚0?áÙ-—ø xcÓWït!Á[·“uì-úƒ„#LdR m‰LJ í6Xsõó±VÝèU™ ܳ¯Úy(ñ0Þ²ûŠŒ\EFÒëlu½Hê¯ÕD{œš;Gøõ‰ë7:¦y}›«=Ì*¯ÿ‡vLj¢N 7¬,æð+Îá<É,ËBdîc7:#B9ºVÁ籓IñdwB–ïBðW§ó§ÚjPµÈc'–ýBc÷&æÔø{}DhçrÒ¿ðšQr°ÖäKzú‹~3‹fËa·L郯 ÉP Õ{…ƒ³äLÌù16× f, óþˆåD˜ù³ñ42xWh§<ø°¹—95°Ì¦ó&í>ÃBbÝ¥Ë Ï+µ+7rE’/ûœÅGä„]È'xSÄHiòå­þôïýžó’HøVæ"ÈÓRuS›*ï{n¨œ7œTüàX}}8Ó‚R=ÓÕ‚ÝK‘e}U-tLUœñO²J¤}²!m0øIìnØM>È€PA)=É’ ÌÍErâ Û]¿×žÙdÊv°WCg¸ïµÿÌzû½Uµ„0GÄ«æÈý—_ ºÕwFª7Ä* RïfOí™|’–G½ò «¢2µ¤¼ütýÛ*[ŽG ^=½þÎ'ŒÌáu'Ü•š¶®þ%Cï×)UípÂ:×ê-Äèd™åÚ3OÒ‰žîwNdÑp\op2¢1T¬Ú–î˜' '¾;.ïJÉî1ÏC9¬òõnDä¡—Ë!¾¨MÛLW6G)N¡­^sÔ)X¯œ(ŒªÁFyõ唒̲l¹ã–ö] èÚxkçVäX2­Vï«ÏŒRB‘]†½%~"g¢¢o®ÈtªŸ¶§'ƒ7BËÂ^M÷—y5Äh½qöQd€Híwk[›Jè\áòÔŒ4»hlH¢;Cè·•A±7ºmˆ•o¯Ü¢%k|qlw´¾±ûv­Ö+¤ölùž=Êø½M¹*gDqp˜FÇByëÝWŠEª„DÞb¯KxÁÆÜ"ÑŸL>•ag3áÕÍ èÇ2!Õï /ŽS­$jÓW.Rך)d©Ä£¶`Á79l_ tmë4¿; À¡ØÖÇãÄFëng?[ J <^µÐk0éú¿u‹cÜ`¤‘R¹2-[³ð>x Åü“˜M³Ì© ¡EvúJeÕGíŒK½X"úÕO¬±»F¯Mr v&d'ÈŸ;H¹—¸I& ŠûS™ t38â}¥ÊZW·Ïß xÊÆ¤¨µ~K”Dff(¸Äut‚ÖF¸w'Ŵƹ¬Á^÷n{3Ûœ˜U£7x)s{{ãé l¾n™Tr ì‡C]à£Hù²ÕÔZ€9«¡BK8žUæa5£¾°S!è³éV¯Ù7ï™æds@Ï9þ÷)þ–ä;Hí¬©:­´±|tå¶õ‚q²Pþ7ø­ßÓ3÷*œ;‡úf4¾ÿ0ÅXÆþÜý8ô]½E+ÜÁ•q{µiKñéw‡9¨˜Š2g©øûeWÇĦ‹ÔZ>Ñ=PmË §î"syÑ¥Û²='QUr ' 8–¾6á*…ΞWD‘ó0ïúˆDYn>µ4Ë^QìnÎ Í´í³z½“˜ì±>- iæM ;x”cß(N $¡VZÄLj‰Ùg®1À³ÔÛßDŸ2…{„U¤½e[Âñ3f^hYÈÖëÜT°läÂÿHW¶Ù–k§å4;”„)}¯ãv +ÌAæÜ|k¡÷MbX•€Ì) 2lL„Ì)ù“¯m>¥·ÊŠýül½m]r”XµàÐÅympkÖ éÂþ„ù³X±óH86øåŠÝã„CÕŠGR?¢8ZÕÒÜÌgJ׃õTÜ_¥³‹[p};Ò QwbœË¾û‹ädM[^ò¥PUÀõ,…R†¬÷3?æ‹´ƒa›¢Se;I8Úó篭«BH—Dìö¸”˜8Ëtík·9%y¶<“ë2…™_íK §ëÝþîAMÐ?+šq˜È™(¹gî]ÕöQ£–ð=½0ŒQMÊ/ŸP^*ÞóEnÙ3`ÿö»ŠRr3j²/go9¾øÒhhð«pÅz[›Þ“¿G,Ò)‚¯GªöhôA–Ô.Q.à>;{C Úí%<+*}+£7`rìRD‡I"aÝ1ëyWUú‡-C[mÉ7l–Çû»Ó©¡`§ÃÜ7ÀP™Š+Iº¼Gä~á“RQ½–ôN¶U"Þ[¿ê‚èÌCúZ>âÄ¡ªTnR³Ûûáªk€ë'ÄVß»œ·¯9ó§R²ÎÁ›¬\pj`k:»ðîƒQ%ã{Oè5JgÌéù[ܵ‚Œ =oÝÜ›´E"JzÌ]@ó=ÉærÚjøŒ Ìuê•ômî‡i˜(Ñt8:¬m÷›X‚™©Kâ·ïûöÍà'€ðüÜWIÞ¹Ò:¹LFßO4“]«^C½îÖM O9¼|†dDW쨮¹ñ•¹¿j{¤—Ðàp«¥à —»èH‘'ÄjkÏÞYNÃPòMº¼J=É䉮cŒ5l7¡ë¡¢·ñ}†·xeÛ§ÆA±°Úœ0€“ c2_bRè ácB½Ñnž)âq±­ =}óÎ-¿Rúx%ÜyÍu! >e©_D\0’Öµ|LžþÁþT¸UÙ8ngõÛ1Qïû5…ŒtŸZÞM‚¿Ù£w#E¥T1}ÙÙàø>2c˜›rZê.tÿË®Éç`Jy94¾ÕÄø‚çél4Gïn+”SüÆÐRà)˜1¼}t6,ó°¡‘é¢Î XÐ›Ž í ´µ)ã2@\àÆvmºjtÏí¯ÇT…Ó'{FöÔ±±Ž ŸJÌ´=ÁíÇ1x(¼>[|b‘#`?¶M 3-a¿)Ø|r;h€Cê sul_Ô!ËGÊ¥ ·â ‰®n˜¦T2¶ÊÅ^:¶O¡ØÞsy„@‡4Ä´a§ú«±¬r ™GÇî9ÆL;8ù $;YDâÕŸìê•Èê)Û½£(òV­B[÷tç-ÈÁú‘›õî®##Š÷¸ÝKj$n¯~›‰Ðæu´–âdc\„];üöXÏæÝe·Há÷òº; ÏÉ_¬kÞ7¢{;E”ïõv0eýhõ¸ÈêãÙp›È‹ÿ¨nÃÌ7¿|q~oÆÔ ÔÇaÀkrëá83s¶»úª}ÛZñõroä’îù‹H%WÿüÙÀQ¸õJ»Q×ì·øû9¾½æk9²}—NYx§:ÂŽlL¤Ô%¤÷£ þ-¥±\ Vwú®‘…HT—Pß~»ñ"¼..…•ÇøCBÌÈ¥€GåõíkÖ·¯|Õ­àú0Aÿù‘KÇÄ’Á˺[„‡ïâön³3¿æÑœí³yòæš÷n•:QŠ<++çÒj_Ô㥣ͷªÕ8ßÏ ò>ø=Ì)×1¤qÍxÚ÷:soäÉwåàZÇ[vk]Ù¦ò±gÆl~øìâá}ñk„Lvíª%ŸZ3!ã«-:èòÌi:ù»F’› m½(iM‰›í6 VãûkÄvô°{O}Nƒ…ì’ýšrùg Äó©Ò”uM’ê’éÑL‹D.wf;$Zi ìmf^ý$÷Šë>6î¼aÈ’õJ–Ú*ÛTä¾þƒ"„ꇑܗ'¼ñÂ2&m(öžÕ›ÉÉl’íô}åî•È Y2ùY­ÿ³R§}nÑÈh2Usó±mä '}ŠŽˆ˜Ý˜öì¶™ m{üñžÀ­Æ† ՔǹD¼£ƒšÛö÷ GòL=Y‘²îúßîž}\.ë±™¯{°gHC{aí×àyÔLñ‰ Ú4ù oWäÏÞäåê—Zrì/—ºÏŸ€˜¯µzk}‹€+äÂJqc¦•Ýæêåf×ßÅoËF¦V±Ý9Œ©¾2d6NœÝ4³ÜA0U²tÓß85p°T2¨V÷×Xù>ôé$R47JóU©dzqÉ‘YSýÉIÞ,4ÓÊx»5%£‡äWçºn£g¡qµ‹íe•#S9_ h· Ý™¹¥#LÆ—DÁ &yÿ3ïãÔvG'd.JZ€ðZäG?cÍŠJÉ‹µÃöšžNÂùÕëD1šé#Àb拺, ³#ªoWE%ë…¾] \Œ#ÅŽo’ øS'Õì>IM©‚JÖ.Û>׳cö¢!ZÕ Ú;ç¸éZ_Î1 Å×¹ ¥ÕÕ]§"§…? 1 "C![ÅŠ¥\Q´«Î¾Qˆ«-@ßë Á­Ê –ét‘¾îŸÏ4eo9$½»EÍÉvè¥w«Ø7þ{j? endstream endobj 1273 0 obj << /Length1 2221 /Length2 17447 /Length3 0 /Length 18770 /Filter /FlateDecode >> stream xÚŒ·P\Û¶.Œ{pׯÝÝÝ‚»4и» î<,¸»»;Á]‚ î<ö>çžìsÿ¿ê½êªîõ ù†Ì1檦$UQg5w0J9Ø»2²2±ðÄÕx,,ìL,,l””A®¶ÀI(5Î. {¾èÅ&®ï2 ×w3E{€œ›-€•ÀÊÅÇÊÍÇÂ`caáýCg>€„‰;È Ès°º PŠ;8z9ƒ,­\ߣüÏ#€ÆŒÀÊËËÍð·;@Ôè 23±(š¸ZíÞ#š™ØÔÌ@@W¯ÿ¢ °ruuäcföðð`2±sarp¶¢ex€\­j@ ³;ÐðW¹%;àß…1!P>Z\þ%Vw°põ0qÞ¶ 3 ½Ë»ƒ›½9Ðð .«PvÚÿËXá_ €·ÀÊÄúº{ÿE²ÿÛÙÄÌÌÁÎÑÄÞ do °ÙÊR L®ž® {ó¿ Ml]ÞýMÜM@¶&¦ï'nU˜¼×÷ïê\ÌœAŽ®.L. Û¿*dþ‹æ½É’öæâvv@{W„¿ò“9ÍÞ»îÅü÷±ÚØ;xØûüëÙdonñW ænŽÌö '7 ¬Ä¿-ÞEd–@W' 7/èzšY1ÿEþÑËø·’õ/ñ{þ~>ŽŽ‹÷€~ àû‚‹‰;àêìôóù§â¿++Àdæ 0Z‚ìþ°¿‹ÿÂï'ï òè±¼+€å¯Ïž ÞgËÜÁÞÖëù߇ˬ®"¯#%GÿwÁÿQ‰‰9x|ÙyŒlœ,Vv.÷ûƒß³¨˜€þË_Y{ ï¿’}ïÒÿ$ìþïÓ§ù÷bÐþ›KÉá}bš?®ÏÂÉböþÅúÿ<æ»üÿM÷_,ÿ—ÿßùH¹ÙÚþ­¥ùKýÿÑšØl½þ­ŸW7×÷ÙWtxßûÿmªü׺*ÍAnvÿ[+ëjò¾¢ö–¶ÿi"ÈE ä 4W¹šYýkTþ%×økÁlAö@Ð_ €‘•…åéÞ·ÊÌæýÒpyŸÇ¿UÀ÷¥ùï’öfæm'ÀÄÙÙÄ áýˆß'À‡õ} ÍžO0€™ÉÞÁõÝð^žÀÂÁá¯óäâ0‹þ%úâ0‹ýAÜfñ?ˆÀ,ññ˜%ÿƒ¸YÌR;€YözçTøƒÞ9ÿ wåÿ žw•?ˆ À¬ö½sªÿAæÐ{Íÿ Þ÷&Ð{Ö¦Ð{<³ÿ Žw–÷ëÉîõ_'ÀlþÈ `þ¾7˜ù_ÇÿÇà=I‹?ðÐÂôÿ¥ý9Ùÿ‚îÿ üKïàæü¾wËÀwB«?ù¾Ÿ••—£Õû]üÇâ]ö€,ï)Zÿ¾÷Âæð½¶ÿ€ïݰûYßkÿÃÌùîjÿ>‚ÿп7ÃáO2ïÎÿ¥~/ÆñúÌñý¥bo ´øÓ/ÖKÿ»ï¯Of§À÷²ÿÑÖ÷]þ$öºÿ£ œïæ.ïWå‡÷.üa¿r˜]­œÿèû{r®ÿpx/Öíð½Oîÿ€ï¥züãPß½ÿŒíÞëð½ Þ ~gò:ÿ+Ô-®™›ó{\ÿ¾Xß·úðßïH Ðh†°üÃÁŒ?ĺ6¤ý¾Z”ÀƒqRpŽr_ë -£Ï²s‡Û#2l mUVЦó­hÊH/êÚ®$ÍÈ É‹ÏIK=lXk’jÛ“ï³Q‚ÚÌ~ÂÒ4öàTÁ‰hÝ—Î2ÆhDëÏSæ™f/à’Á¸2ÁÑ¡_x¢ÌßÜΡçN½‘È%Ð#øýŠa/ôÑÝb‹}Xð^/ÿÈæÒG§‹Kyƒ>>Cå#v˜*‡³èSR¸6¸äÙ"PH’û!m•é-³ ¤eßÔWã>¾Üɺ÷5BM0ˆ±—Tó½ ÓÈ™L«ªÍ( õ†ÝHtØi!¶Þ~«ÙcaF¸Â;[÷Xà&Mªùá1±®Í×Äž—[ çq>QpšðEVÛzûÉOëçEÿ“»øØ¸–Ñ:gML±åª–îMšÖ­ò³ÿš©<™çpßÐRÄŒ³Û/¹ùÂha©‰®“¹l§0!È‚ßb†ßf,©Ø:Lö Õ+`¼±³¡„˜[l6L:vF:U*Ȭ÷&®áºnù顯c¥é9$ì¡!žþÎÇ9Ò=]Ƽ%iyr™F›$qó_[„bçQ’ˆ³Ñû$üðÄE¡ «ÿå[ø´öÙ†6»©Zâñ×лøldr¤Fj!Œ„ÇØÃÅQs|_ÊLdbù7nH·du¶·k÷¶õÉÀ_Hþá^®·còæd£û¤ºÙS¡ÂLÇCC…gã7íòÅ^ld®³¾ŽIjè…èJÕ~7V½ö¢5Þ˜ÁY»·4âIɦ:k0Êù¿DyÞXžr|–×>«øçÓ³P^w—”‘ò!ä€ûˆâµ~ÿ÷eŧÒoÂú™c04 ˜P;ßc3à¼)s¡ðå•äž“ŒûË fý~hq5ç÷Å…‹Q!@åR:ŠÎ$‹ä6nk_Kr[PBø¦~¦-rIšëgxõ”]Í¢Sf&KíFlBpeå§° £ü0ˆÍûñäHž'FŸï·¸ò©íé‹z°¦¶HMÝðk!öœÊXCºI˜ÔÍQ5,M§v-ný-29rK÷÷uÌòÕ®Ò%1šYB*X‘^´ÜƒÝ‰=¿Æí/|>û^¢`Ív|÷PAÔ£~EsÅÖ†úÇoý­B»./?©Ã–ÛÞФ k ëÌÉnM„Œà¼n~‰…À„Y/è)ǹF ¢XóŸDËJªÌÓs¼å„¹È³Æç=ŒŒCÒíøW8ÜâMÌp¡<+H»ÖáÄÄ»ÛãÝÈÃÐpå%ŽcUPRgÚͼl>ÚvÅãem>­§/® 5µlì¾Ç,5†X†$› µ"d­ H–µã}$5~Ò¥ÊÓÈCÃR×ÉRs¢í×Â/v"±H ^j2…ù~1ý>ø8R2Ì3HÅêº×Hä¬*+<+à›…Z`üN°>ïMLÂ…’ e¹†N¥º[­+«×  •b,ÜHÑ—ïàaGº§2>yr*!|5ƒœæþº6Dv°w³Óß³‚ÝR3^È¥t覫Û(œ¢ æ¨zzÙþÍê¾2`ÔšÿÄìÚH³Ö0Š·_ ÿjºŽjÒG/1^ªø²lÈOµbïf©¹U²þíRÐ%—®ª€K¿6 ÿ<¸*‡æÊâi3=µýkÝÈŽš¾‡œ;ü”šãmõï}ÿÏç>ļð ”cS@Suí߯Ävb^š©ã–ä2ý)& Z¸¨™¹ö+xvY¦†…‘üµ|ãéÙÒK¬¸mLŒßY¯ÙŠ]e7©ùJ±§éì#§’Þ+š—KZ2Å Ÿ)ói@']tTþ ÃÇ¢dyÓÿ wåÉüܶPmÏwš%ðq$\LÕøˆnC.¢i±©FZq\‹¬AÛˆnËfÁéoG`Ñ/uýå…­CŽä’_COb[ãR(A ×”Ž<„p½î ”T>\Kd²d*nB¶H³Eö™~ç9G¹;C»¥ßŽaÝŽá­¡óÖ¼rPd ƒr2ã…?‘ÅðˆÖô}îÜE·2ª¯Öš_s:˜è]£Ñú~ ÊoÆçÈ…v‰3ÚèÌ.#+g>1eØYÃ.…Ù=ôÎÈ9Ù?èÔ êµüfÛp·ÊcÔ-]bm=å).õ±¼ÿ›Y;«;a6UZ’&ŽˆŸO²Vqq~ëˆëWh^ 8KËg˜»]X—Eøuy";¢8D?O½›!R&]qËuÑ܇Õr’ñÈk^÷)b šs+Þ)â(ùŽéOÂ]Ú@CÌù€8lâ~Éón¡ˆäF;êî˜PŽÂ[IV&ñó)BÄÈU ”/Íd›Ð)]L` 5~$åadžR ònBˆù|G!´—ZÎ]¬°#`ˆJ> Ë|ôÕB}/…Wô}©©7Í|±c·°´'V—cÅë®+Kþ…Ö¬Hª9•Œì~é)ßHÖ>"`ª»1àBÑ] û04Ðh6N·ýüJ²Yİâ^ßÕBBJ?ÿC× èšæ”LÛ> ÔKYœ\¬3t¥$(áÕÂn¬€ãÉŽ¿Ø2ö¼Òvù³Êl‰3hä# pgጊ¦qœF‡‰çF·KÓ7*Šž[t&È£¶ñÂÓæQ ÒVµW{ Æê,ûíÒ.癲†c†ïˆ]]ž\í{ú'fªÉâ«æ¼†Sð X/kñ°8< ~³gÇoPewNÍnª‘¹³ÑËÎÌÖ S¿Û£E«7*„EB&3œ&oªï5;hŽLnÀÈËx¼¶4ñ8dh5ˆúdymêÇâú'Ôžn|ù¯'½aèe2Ç õôr¤ ;6±qn߯ Fé_rkYf™£í—Ýà²Ñ§N«+ú™bÞ-`)=(–ÞÌ›”w<-ÊÿÜA|€Ú,ºRÙ†l|~@wWaÑ— Üh·ÇöÏ;c¹Éõ¯å >˜]ï–nî¶@+Äåxñ–•k[9”udàOq¨ÌÕzÏë²N/kŸíN^BY>ÕŽxTõ)Å—±3AŒÍ›öÈT ÐC0(!Ÿ„²ú¢÷F†ºÔÖ­²0}ÙÚæa©t\_Æ…§Úüt~ý–;ÈœK{ÅYä‡,[67DŸ ›ßØt`dTöŠ6dÏÂËU 2tlêAyú®Šj¸âÉ}ÃÔ!lÀ":ÝžÉk:ZàTÉ¿œóbûù²¯Ë}ˆD3<,r/dûVÒωsN+̹9¨¯:¨+'§ê[Ò‹Áõ'| ŒÂJæ`r¹¦µhÅÏ,úªmÂRóŸ˜ò¬²cm ¼ñ‘Ö=ú[è¿"L¦ óÂzàs¦;¶íù)©·Pi~{h!ÿÅTT’Oœq\Þžð«Q3îi½¨ÒÎc¶X:˜«‡ [M' éH†Š×2"6_èa™uD<¢U•Ö'+<˜2P7\ÄFð¹7åB‡ßk.ÈÒûa¹¸µæ© Â:ô³Ù °BëIµ²×˨‹ Oþ+ë ‘–Œ±gàOÔ8Ï«j#ËZKýÙ&׈3’̚بpN»~Ê\ á/Ëi7!sûG·Ç/¨à½Sh'¿ÑÔB¥›ƒ‡â×­ºWðBYQ ôÝAêXmqèäIž’è‡há…ç€Òhà¾GZ:^ÿ½4ïa}õY“)·$ôr(„_Eg¦ú%dÁ„œÿ´D²ši¨'¼±©}@ÝExuJ|“4Ú Qšƒmm.f827i¢zðñ|Ñä릱’0,ïCeD±•ÏO©^14ÖÊ»“ /U\é –ôÅjö òce¹"_ÿí3²èó©³–…¡>åZKšþ6ÏÃñMËÓä6?b " •ƒm;.Kâèu÷‡&Ê¡ÇIÍ6%‡_CKQ!×¶ƒëÈpÖ9‚üžçѯý×™£½ì(û´0ˤÒW®µmKrx¡4p7£l>k´ gÖæTó,aVQK‡Åäq«#W¿ë]çæFHCFEúÈÉu0ÓÝ:GÛÕN&ä®^Ôpq"?h ÊúˆÑ¿’v¢™SóÂ/Ôrãš|Ðà~#䓌8ç #­¨yrj‘ vs©\  fçï:OHËQ;Pr¥±B@!+EFEÀWFyk5FM‹r@ó49—üp=›‘©L#»Þ|]ë:+2debfʺ:÷¨Wçj4È &oê€>!Ÿ(¿¸ãžXýŒ!±`ÅÀ@ž…žÚ¼]>²øK[põW$Ú,)š¤2t1‰CØIh/Šô×>w&µ¸ÚR-ßgGb}š+giÍY¨Ñ+ö‰àâ*Ö£àeܼ{„°…®¹ëaÕS÷6W‚ð™¾ö~ !¯3ÁÆߟ‘å]$k2be¯­ãÄMcÌ̽{ëûAЖ3v? „Õûq¤” P%{ì¹ç6~ilÆFj$[,¯ç/¶K"£L{¾Tضõu~^™7Jÿ ],Q frB¸x¿i×3I· x±Så¾™²Éö’økèpë¦hÑõ˜hâ'ö ®}SÛ7ÎÍ:0À9ù…®É')í·«gÓ0Š)ÖžY[ˆ$*Í…ÒÕ¢£èßÞµWØB¤´éžzYß6Ö9©v»_‰ôÉEMŠ-ã!Ÿ)Ð9')¬`ƒ§øØ}ÒðüNë›>°¯VähO§#5–"ƒÑ킌ÏŒ@Bô³s@!™‚ÚûdÙ&ÄÔæ‚Ð]8\7˦¶‘¥:ÙÆÇõ.ÉÎù¤ ‹uâçú/:iˆ„êØgƼY¨i+u.°QßîÍFK–„%fç¯ ªn3öá÷»°3ÞƤ…±kyÈêÉJ\gy%ïÕqi‡ÑgÄö<ùL¶C-᪢$¨ÒŒ^i>pß¼e*¥*P·Rα>u}„Ü®äâ…ôr”Šl¾ìÚB½Ðߤ÷„ôWPj£8×<€ŽÛH¾©;'VfY'{ªÎË¸Ž˜Ãè§ |¿@ î÷Èx8òºñV"cO NÈ£7Ñ9—%#ƒ×‹ø®ÑéÁ!Ý»–J3¹½S·T…{Ãa. Õªw4„þÌù ´rzBöÄalñ@*¯Z3¹¾¸‚q^ùü†QºRBb’yIŽŒ©†Io~ØÍà‘òuhG³Øîk}œû•èÌë<í齯ìžWVa@SB~ü›(eL‹½5.¬Q –]‚À¥™ JHþb¾T×V ´Oîug%Gub³íöãØ%àÕrI z_RDÇž¶çñ£”Îfàdp‹"ŽB8ìÇ´±Ø_±wD}¤¶\ŽS4÷ñjrT³Åû“aÞ4w<@­›ø£Éfe@*Ìi ©Œïéqº,Øäu ›Óˆb\Y¸¶ãÁfz;h<®WaÑ“÷„•Ñ:ÄÇÓPEîfñ|~V{ÝRŽðTF;õδHù ªðÊJ×H¹d¿@S•<çXŽ¿¿¯tœÕ‰kI^;PÕâûè8üó˜"j‰@Íã—ç#•fóé~«T¹Ï„AqÐ> ŽÜðŠˆŽƒAX "o&wÆ¢o%XÔkÊMD>uuDÈóÆAU%Á×d®LÞ-% Êjäf3P7( 6Hµ%¾’ hŒñZÆ̲¿_‡gÉo|c×€÷Ý£g‰SD&Œü­ Íi*a«·¡ÕŒÚ–e}$$·ïö›&Nm­dk:m ¬Oñé,‹?XCªzút³áûR—™k?ÍU÷qwŒªÝ‘­|FýFk¨‘ÕykÜ>‚„6K5ç< m©¾«»n²óă9Ùç¸íª áy«+\–Š#ÖrûÚ…¡fú`?7»'½gõÔ\Õé Ý&œèW¨‘:}°WxbuQèo!Ÿ%‚ ‰BLyvÈFBo jñÐøÓp†SRÂïÈ2: ¢3þ/NÁ?à°œ®2YdIJÙߘ90DUZ®sV9n¾õ= ±«báÜ€ÛŸu»vì—‰þ-^ßäàæƒxJ„^ðªÂê‡ý„KõñƒMO>é….°}|ÔÉòðéŠ'ÔÄÎ)yÉ6£…4 …m«þâ5p X'=#¨ÍÖ/­Z2[A¢JzJŽVD‰'‚“V|p•!×ãæ¾a6ƒC°cž‹LÑÛ56Ç`UTŽÖ@!) Æ9 šNÖ>µ*WÜð§*©lz1¶ªfbVõEzä~´ní3ºY$ÛÊB¼êç‚þI8±è´.d)ÓßR U) <×8PöÚ¹ i²D‰P¢ Ã蛺ޠ̦£TýGõ³í[üýe¨8Y·_^¸Ú.ˆÄã¬9DÝ]WÓq|ÒЕæU?ÀK®•(ä,K¡í\ö|ÄœtF ¬ñR,^uÄVœOb#OCn.A¸cWœµŽêÑ0e=âuµ_ø‚ yy=f0js>Þâ5a­Â^Ê­ê?˜è·>’?ËÑÕÑ•T*;O,ò!²2Ö¶K› ’Ii›¶Ã²}P–¢ì©Ä9b}¤Õ£1 Ò|“G +¬iÓMœÉy _ïTæË®Ýs®1Œ=àS,âu)Ez Íq ¡“H|Ôùb„0'&k*$þ¨wÛ"2]l@DT4ü‰€\ž;Š${þøñpXÍ:!ˆM4ShŸŠ0ذvýOÍ{FÐ-â(•öÞÒZt=‰Ú3ÌTLÅ\ j·Ðp6–aŽ¥/Ï}aßn QŽ4¡†N ²†Y½b¸BPqœ×O›HoU}ûQ”^)Øü„lÇLŠ ^ò&Qïœ %orNWI)H‚€h·÷'‰.Vô7_ô ùŸBœ³QLœ4òÛXsBô°Ÿƒé9Ú¼DJ°6 ³c§ÅÎôtHšÛ“oàˉŸÑ¢S"’~O$3ú~¿QÓTtæ‚7§@³Ž¹+ó¨âç¶VÄœÒP23Ý^~píNB0Æý=žsx[gϺo@±÷žYªeo}"·°ÛÃÜP®†x]þŒëÑë¡ìF§4tlæi™þ¦ùm¾‡·\¦×‰§šm¤` ýwþäååbÀBæu~0S z ý0ŽJGd‚~ÿŒAw¶©Öfi¾ÒF¡ã2–IßK¢E\»mܺ}Û‚¤D R½#졸3ßïê+"´ýù_ª¨P‚ßöÀ1wƳµ ±y|ˆìÄ5–šø›T]_ v³õ*#u7KÑѬ3ê}u U9H†Ä°tSKg8{ûÂúýNpêíÊëy?Z€Ë•A36)šê7Dhr‡‚ofßÓ÷z w(’f,‹Ù³5AüD;ƒ[ƒ΢¾]ÓÚÃ`äÏ¥:ÇÆ«ê¼„Í9ò¯ðÒ%d?`ôŽ!ï%1«7§‚«Åg][ÿ™~P±”õ×á±%u³)¬¬­Fî#¥*fûÖ•!çkfœWðÕ°ód0«lbݼè<­4<¯ŠÊCÝk®ù y­vXâ˜É‚º7Œˆ¦†æ>)qÃ!“bHHLâÆgÌ“|“™¨š|{Ú‡eMïv<ÕÚ›×zÖ”9³héÚ<¿n'…Â/r[RU*Úæ·¾»Àÿ°‰+µ=¶“ iÖ{¹/úY³_âvŠ\²HŸ2VÕç«rZîâåÜéêŸ×à> \‘á+à¨gZÓ—‡ÌþLlBÐgÝf—t›R=Õâ"DC¯ÂùQîH]®6ïFƒoï¢å#))\C®|JÜH?ÆþKÄD•ViN®¥SÀ+J£îI髟¿A™^4™æ:¯Bèˆ"au‹| u]¸sz‹½OB¡ò½¯-^nkQhЋÛ08Fn"QWºyÛ/?}ûìsj1JYÞkÔ F/+´7ÉáÑ7±fDZoÁê»í<2¸Òê$[,ž‘AÝ›ªjJÞ4äí‘ûÜð‘_GÃøñ؇™š±A.ò} LªG¹Tµ†ÄG;xýWÎé³ë¼ôˆuûêâÑ?©J³¿Æ*<|²ûÁ’ptXdÔ ýDHߌ`ní‡x¬uIÆmúc‰+\Ò‡Þ‰]¸[©_PúÔëj*T„¼D¡g@ZÕŠ›Å¯¹œðDE¥<Ò\Ïìå zDeZÿºÕÀÛ›šö aHÎ ‚²œŒfÅá÷Ô¥o¥Ú "C»ÔI;ë4z°˜ùµ.‰àðdAæ´Þþ0J0NŸD›øïÐkèH $µD#±hZAhMú ýaÚ"•´òôDoªêÇÎÀÏÌæ%G‡ eÜ¡äùÏfíɹÅG)˜c¦$Öó_AC-ÎâýÂ!t†Íõ\D¥z=löP0b†‚›ÈŒsX%ÒŸÆ)#xF QêNÍop‚¹{a}²ASæC"¦nß¶ŸhJ}›Sx qP³C7azþ±k-VÊ94øcs“~NòÇ ó.ôÊ|»Â%i¾ær„F‰ªzÝÏP —‡"¼gcm#Щçt;ªBÊB>Ïíd¦K[ ˆè6ÍW›ªº³U4´ìWVÙ¹Ñù óD˜4Ž4˜"t<]IæzØÇ¾'na¿¢âiÞÐT'yd‹Ç¹•Ú‰>ä³!ó¿EY3jxö¬ã=—¢(ââXSBäq­·ÇÄ´ô *bέ·S±O ¿ï•O\³ÂYÆ(aiX8½JZ(?ޝø„¥¨ËÃ[yýá!oҴņ]Ýã±ôYÑ’f®—Q3ø[±½ËÛ§^\o¾Â5$ö•Ҭȋ¬€c‡Å_[ 1ÑxfåËiA|Gµ6n<‚PòÀÇ_”_äôŽurYÄCÆôiYBõ Öò² U¶æö<ÄJÄÊ ½´âëO¡±°Rp=Ùµîí¸ÔÍzog >#|\:д…¯¸®â  ÐìòàÀK—ßçP?ñØk2¶˜Ò¤ ¡p^%ÏÕ²±OsªYnæ5¯·#ôÛ*¥]qOêÄŸ=ÏÞíBÉe]ŒOñœNr ˜ÞÃG6˜+]oÒº®@ƒe¾„ôI«4þñ ýõŽ0ÙÀŸÉ:wÎC2À|.)<3ã·’[ØUα¥%s{«Ü­óÜØzD±ÌZL,úÎ$?š º/û(ÿ–ý&®.8׳ hUt];ÎZI—‰m¨À5q®A§{«#àÒ½¥&Ã,’M%õk)ýK³øC¢ÒiÔêËx&£ieÆ}¸œÉ¡·µ•ð‚ÁU7­ÔÌm×¢>{Ûš‚EÙ˜yªoh)¤š¨†‚ðÕG@™.Z.YPõ ét½3¼5Ž#S[ˆ^@\"VuèõNëȶ½§ 4âÚAâ÷Ü„3zF°þpÛðq«½W3ý/ûÛo/{®–²°'C÷ a¹6£…J/<·dQRhŸÆ[‘&ÝO6Ò#c×ÛÞȃDÞ83X×ã˜m.o;¾n"̇ˆa•ôÎ$áSóB)ÁÁz­`{Ö÷§.푺¤¦G4Ðε¥ÓBm{| ¸>ÖÓÔù–îàç0ݶþÞ ¨U`&¿ ñ-«ŠÅ‡|Ëê½yÎ' ˰äO¦Ôàë½ÐC¤ÿ©§*ŒlX½´r”ÈêñÕQBA" [:ÁÙ ‰3«M3t@Þу¢…9Ö„Ú¯KœŠŽïgÇ'\Â}"g•Pò'Wg!×]ÉÃh0“ÓˆŽ´º? Ø^±×j|7¢aÙNÎìFêáVsr]`×b Íâ¸Û²+Fû±,ûŒÒlk7.¦<>‰ô{žÈ½¢°^(¤ò/dÞ ä ƒöŠMÁÎàÇ6ϯGÀæC ‰O|NoÒ¥Öú"yFÝÐÕ~'°– ¬jf’Ív°D;¢«óÄd §:ïxÓωF§-74Ö^JÏnÂôö°*Vfe7éŸÚ=TØtß”©Ú’nÄû ïýÙq¯ƒÐ°¨‡˜ Ï¿N{å›eÏpÑK·võŠìKË›cÂì«pþ^Œv„Kå¡'–}N6‰ló`yºz50`Î Ó#?é† Yü–LÊâ“)~³]¾BCå®ZÝŽÚeKìc³3sš=­ÉdFäÖ(«þ“PÇ/&C|ãÞô&í׋]އN ñjJ¹šŒ¥^ÖT¨Ì<¼ž¾GuEÛ@ø¥R´È2&–mß%¶­¡Oh.¨AV®ùÝp‘T\œþ3ŽúÌå_û•mý?±¯aÈŠÙ652œÈ¶;åKNj«¥v¤åƒa6œ¸“ædhb ‘b‡Žø!O’9!é\VÒ£’N‡Ú|:˜ ÏÈÑÈÔSjw³»ë,ú†\$«#sEW õ­&þ§PЕ-¶$þCE¤êŽÔµr¶ê:¨ÁÎCé½wª!­àv3~!™z¬éÚÜmÆŽÝí{£‰Î ª¯¢®´#+¬Ú4‘Uc-nZV¯Òj‰¡cåã³7½ïÕr‡RX<‡ä'êß*ãPáœV®Â*Ÿ­k(*2)y||6¢”¾¬Ú/J;óu!bg4ï}oæ^ûöešÌòø6<3ѹ1Þn={¨)²‹H²Ì4|mì;ë3[p = zk‘Š:"϶þÎÉ § *«ŠÕL=O!Ú÷Dõ̇d¿£! b‰ñ-Áé½7ÛÒoD懒ŒÕ*ŽA}¢ó²ºŽÐ A_wÁF€vƒôÙÐA‡¶c-/±Ò4·Ì„ùP÷Ì,]¨éÞl‰iÏù9HàKFQ’å¢ *âëq{»_®Œ±PXW>·=>bоù•,ϯ¿±ÓA Òͺöbà#{ Æ¡ˆ¦AU‚…ÌÊ|Ž¥Î˳¸»o¬SP¥!­tjûö‘YØI_²H¼$`ö۸ЎÁ8cÁOX/Jñõм‚ã\üYžWÖ;þ!hºIΙD%lj¯!ˆYèJî·c³ÐîšA¦µ4™v=ÜmEJÀ“Žq«!ãþÞ;cÔð;ªeƒ¦ ¶E*ð„©-“Ê“_ 4’|*0ÌÕO´÷ýÝ9.°G晀µa52È¡+FŸÀ©*ؽ/,ã¨.µÝç YÅþùB-ÎðÉGk×™Oiêì¶ÚÒ{‹a9¸3Vå·ˆÖÕ#ÚøÇ©ÔbA9¦,cs @#"‘ï!?u[´š “úoL“·þDºéº:“W¿GóLÊm‰ðF*gžnI p^Ì%´¡[$"VBl#PI_+‰¶ÿJ¸o¯Öƒ{.qæÔ˜‘?Ìr!'ÁÁآžaþ´åìšGi³ú&GjYš{ˆæ‹* K²?ü%Aà‡]ä7¦…Â3z “°ûèH©ÁYPgòoð‚`“n5®—*"ÆSédÔi¸æMó¾Aö{D“½kðV­ °8£ –¢§K^Áé³-"âVo3ó+öV´œ ¾*„µ£Ñ‹aš*è%߃æME®÷ƒ€JÇ+´.˜xðÛ}îSµ‡ÄDn•¦ï鎯‘Éí’Yê8›8»[œÏîÃ’ç ©½qƒŽun…ë^ly6þèÖ<Òýõ–yåp7 1­Œzªí‡ë¤ÔþG®nÃ4UéÄ6v³iþœµ2Š;pÝ×;ææïDJ yêÚ èõB k߯÷!‹» Î"™sêhÚ ì¤ÂŸ mè×vî4Á9û¨#/R³©@÷{å_î.Xü¨sIâÌ¡ÐF û¸+·­mßÎ’Ïð£R<³1Ž *í¶g½«YPoOy•½‰óÁ¾Ž÷Sªl¢ ÃjYg¬­q€b3÷.$›î,Vfd釉xÒ-ÌXHÑ–ë‰âíhÆKãüÂE‹û;ºš+Þ­è:/Ÿ•êyìÔ2Q×ôÇÓäêmÙ¼\u«ÎHQ|¼¹s1ü>ågHîÆ%Ö°êéÞ°Eæ* ,ò õ °$U¦~üh}J½Ûï ’fé†ÑiŸü7Lx’ÌH£(9I(‡kuªƒZâƒgëЫ–Xk‰Ú™BïÝÕëßĤKC$ UrFb.“Šº ú%G‰Yȃä®Ý AwÊ’~ ëp¬bBÕ­,›Ù„µxÓêOϵnëpÇÆÝ?¿ëE#?ïø‚´;JöE!¼€8ômã%an5Ï}‹+~¼ËjÃZöIÖõÀt„<üÆðP\ź˜¶§ºµÛçM ®ð­RR抻\u ¾wm?òŒ²K;«1¥†íŸ‰þ?&®§SžÛéb-£ió.;s[¬wW„ATÆû¿6._™ª…”Ðç„V}1‰ë%§_²%¦é™í†'¬ƒÚUƒp  4¬Êëšr«fÚJ[éÎ çK§¬mV]?T=Ì-ëá®~, ›½ BN•2¸Ÿ¢£5”Ç-­=¿ÐAtp²lNWßXNE'šbÃX!¹\÷B¢‡ ǵD¢QX‹ypÝš/1e³cèÝ °ø2íeZé¶pˆq†î­Â Ý…aF8îõyæ‡FZ椎}Y¡”|l0æîáHÞD÷2-UÃÞDzœÈ³]Rz ¬ìçb”ZZàɨ“)!`¸oAÑæ@É«1jkëFÐjŸƒÝaíwîËÀô ÂZ®^¼–ˆ"jþÔ}s’}·û#ë Œ ÚXqyUúióNÅTªMSâÇÐ%òÁ×vÌŠY©möLðŒ†}?iéüK5·ºnãP‹ÛAXy¨ð‚üLQxwÕ*²ìÈȇUø¡H–ô÷ÃM±­cqš” Wã˜Ã°·giA®i މhͱÙ`=uY7Ó !ƒÓZ+ð¿Á¢Ûì(h…”Æ–Ôê¯ò†ØÈ¬U§ÐQïÒv‚œõ<› ,¥¸Ü¯©u">ˆÄРÆzE†vÊìþ´Ôtüy’qã"Åÿçã4ùzŒçlŒs¡ZÚý ÷+/EŒ×ôŠS¹ó¾ó=Kñïs6}0rĨ<cO*¡Ôà _iŠ]!åŽÇg¬ÖÖTѾä~UWv!²¢FHKμ˜ä®8«„~…ëûúbúE„$Œ)S-JqÞÂ6&ÍB¥òpÌ—/AÝŒ…YšðK¤Ùbo3ƒÆ~ú ÷'©Xb \¶vÓÐÚ³Ëôacw½oÌÍmѬ‹“bµ a1ª­­¡È£½RÉç²ÑÂFÖ õ& F¬÷º<%¾Ú:­Ow,‰ù_â?õ¡ n±U:›ðü’$Ëq×ÙÁi¬W¦®&ùšÎ‰ƒz!'®LNÉ¡€áӜՆ?åñðæÓ¬HUzëDâgnñ‡(˜H‰úÇ ´OÎ'déàc÷ÜsÏ903gñ;·Q§H!å†#Ç–à|™j6´;’ÝÏMÝ£JÖ[óA‘5ñ¾1»0§˜ª„Â?-Ñ Ò(ñ®\È;–ß‚Hé}ݵÏÁ€Øi!zW¿”†ÑUytÛ”|Cº‡x<ò'¶ü$c#Ê:±ÇDnÆ©hJ×i†Ç)tþ€ww—„Ü6$Bëú)ñá|ˆ¥{¯™¥‹Â5â«o„›(KïÑÛøå ÞîèÆü\Æh5MñàöD¥‰ayµA¯t”‚/"oèÆ¥Öµœž½#ðù BÖ´{GÉüv)þ3³?Œ¢ØÀ"¥÷ónqŒ§$xà›1i(÷Tå%Ùv.!^’6Ú¤°ýÊ @hy}FÁ)0˜@½¾çåtQ8ƒ_ˆÌ‡zã¼zlpZø‘6g*(Ç­€w}Cø0TÒ.4oÁ’1à—åõ£yvQ­Ï¨AÜã¿>ªMü'ŸuÎËlU’Rá¦c ÙJ4=ëÎ`áVÀLÒqHÙç2ÝF’FD1MQ/)[-¹¼ ñv@`ÊYÑ”´o+c÷]»If‡‡oÑW’ I;­MÃ:íØ¬›¦Â5Q_ ”ƒÖ?™j]‘m"v–Ò^{M·îãgf{‡rò z66lË÷kEÅ}k~Ü EÍœfT)DÈ¢/ëA÷»#}¤É+ëË; ¼þ"§ô«”FÖøû¾¯‡“_ã‹Î ´éxí*/}ºÙÅý°"% D]‚ä]NMîw-»eHÅ™nÝž„‚¾HàÐ0²Ïž®cö@ÒÊDKPD]<¹>”-³b`aJµlÕ«ýõм$H@¶è/xÃBl3SiÄõ©G^Õ€yÏU¬Õð÷èB¡ÍŠïÖá6q:RÕ¹$´ÍýQO«N|Ë0³»¥Šk³Ö"±sœ~°J ¥ÇqÆïU¡·Ö`4s‹Yé‹À)c°Ê%Í|…(\‡§oÜ5¸Ó´,VïíHÈŠ€±ªÅ™'TSýPSßýõÑêï?‘퟉G¦z­Ûsùá̳9qj¾J4Mýò+ÐRùÕ‡Íðs²aÑ;ÕÑñyè(›ÏFóùM‰yµßy5Ö€,IoY"O“†}PªÁÞpû¡Ÿ„ÁF£rÎ’m¡¹1R»›R·rr½‘¹º]¤¾¥ÆŒwaš Ò#?¿"´ *mÕ¼ê3ÙNµ Ú’²UÍ¥¿xPÌ\¸UØRëUügì4+tê–»Oª=G6ß „" ÿñÖur£þ1Ét#1v¤¦ÏÜN`®“0íxpÊ¥*ásØZ]Ñ­9°°É>ÎÅu춃n××¶ã0F§yÀjÕ¾l†7-¡É6¬CÕmu×ÄJÁZ•P‹Ò7Ó%nlwFcš#¼©¶þ\D¹ çyæ#nô…çͽoÚ‹ÚÈê´ÚÿrunZJ‚®¦§‡¹t™zû¨u¼ŠU*‘KxÎHLë&Ìà»Jïé$¯ÇM<‘ÈÉð¾dµA–îk­aÀ}þ”vØT½›*ô¦TQ%÷S몵ÈtŽÔò®<[`ç *ɺ/g°k oÞz~ ß—ððö7Ûgb$ŽKÞaȃ›øÚêM/‹€ Jß‘ñý7 x6a*Š®"xg¶d’3v’YÅnæ Æ† lÓü@ØŸ/#úÜ}—òj–ó²«k¹{ÝPfÇH‡všón¨k•©ñWm}›W¬‘QËRBçÎs2@{Mëç® i?ÌÉoÒóa\g](Èr›ûY73Ïèþ.v¤Ùeh{•LIƽMF´ ̸h¬mR§á¤êðËæÅ;±Ÿ[7æ‡Ð_qke&‚P´x–³¸_aŠÕ"‡5â§²ZÌ8!˜÷ëֻť•Ëu}˜®°!®¾¹’›ƒRì×%aÛ¡2:^Nô±ÖÇYà4OW"âÂÙ×Ó[ÆK‚Öv}q?¹¬,{„ÓÑ¥œM´ýù}'b9ŠbôœŠ£ 4"ÛMLë$nrK™ßzmìžà<êË@•΄_0öŽ#ýa؈ìš+ãõ¯Â¼®0¡¼Q·z¡DZ¤:‹ÂÅ}ûtòŽw1"¬íOØãñ&±C÷Ø“ÙGÕˆCoÂòôÑÊÁñøÈM£øeå…¡­häÐÏT åÃ_×­Â)†ÈW.B8hNÇçÀ ²sb4ÉB[nÓYr1ÂL„õÕ;°Ù®ƒ:p8ã§Mz_ºVR9­¬¼Ù '¬œ¿{ ü ‰›RAlyYî7øª_Ì•\eú“;¾•˜VØ¥{VköWomð¾—Ÿrµ ‡=·#÷.åÜ÷ÇT3oÂUÆ?tk‹¹‚=}Bž|ö#î Øoxr %]ál©BpX–ĤÆKè«¡—ÒüŸV)‚‘~ñÁ‘²l¡NçrÿTñGD©ã צvß&¸ÝZÅëï Ef ¼ßÔÙW\Gô¾n+³Îä{ßì¯`)? ÌÄS¬Á ÒyÒ!jú]MÖ0Ú)qÕaÅL”Ã1÷‚g¿>J´ÛîÞRˆk½Ö¨7lh€‚›a“9ä[âÅw¯)S°#@& `é¾\×fëØ ?OÃ}HäÖÁ0þ*Jt™föº»#ð½^ã²g.TvÚÓÞ‚O$(ê|h ˆpWf´¬ÙãÖÞbÄ>ÏKç^Röû†@œ±ÖÂó%en³RÞhŒÒaB#ňÙ`]ãä—ƒ2ƒ@ªR=¹e\\¯ÚŠr%ôwlŸ Wµ ‹åBý†…3ô—éˆ Œâ°+s fÁßÖ¾<é1?Ö±`ª>Ü%6Ü6G&«KœÚu/ zÕäµÛN›éqÖ0Ýä;¹ Ož¿Ù âØnâ¶. ¶JÕ ù,TúΪM ]o­z±ÈÂ}ÁC/¦‹9HªvÝÚ’#2þZ*ïM(›(”Ñ2JvG1ÄZßð1{O8õʱƒL ŽZP†õº©8éÐÆÁ§öXv ‰%^œ®eKŽÏàwg$?õtÜ3Ž—ín*ÕGÆ}%1.*Hfx ßÛD÷çß^$C ;5³ÇV¾rxÑÎÌX™gtð±’åûë‘^Œ†Ž†Ú!3S&d£`rŠŒZéÞÆ0"„<Úu®Lõ% È¢N°Ð8®(Õ S­Y¶Ü>lºBrÙ~¶#@RæÑÒR,/¢‡ð®ê(þ CazÓ~Eĉ•›5ccš'’ÝC¨\w›J—oyz‹Yœ:š¥ö|TÕPvº ¤(Ç#»M†pWî2’vIÛÊ<è±Õ—ù#*Æé$-Þºë´SP2«jwÅŠ˜ýsv=¾9ÊU„ìó«ŽqÇÝp^ì#$©ˆeC0öm2a¨Âvn±{¦¨ONò°aßô›Å®/6U#ËÇš²r8ê¿F‹"D¾Û`ЉÚUmºë–cgŒgg*X¹ 8±ñ®’ƒ%ÙsªøZxÄ•s8®¿;–+L@>sR¦+—¹× ÿ£“îþ@…}äÊ´qЊ¹¨œì0)‚'â[­Ïtùª}”²Ëkuò!ª¿™Dó¼ê-üê¯Y§PÉÚê›E §£àò‰$edÖ•ÈÌì ÿ`ñä{ÓZâÁI¼‡F"5ªóM3ÖÏ€Oa™V¯.ÝVÐ&ðߨí>AcÛŸ@R>ô>~®r™æ¿±”Tl3ÕlI \ÆÅì÷Fà×f½þÕã #žæ£¶å)RHK)Nj3žk“2ÕhNÀ*ßá ½UœÌãa—­¦f¼<·3£½¨à€m¯ípP6p(€ìÇ9-Ø39ȧ#¢~á`ð‘ÿBû½°Ø"/npj­aF¿Ì Ð÷·…™—fžÁ”¼¹4åØ5#ÿ"t稲²ÏÌúQ3FŸÜLÐô‘œóXÌ"€Ÿ{†èÃ…Šð} ­ÒÃBÎ ÉÆƒ¥¶cd"ó÷!9ÚpRœL× TŸ3¦tYÐhåX²3³¬¹©0_È÷ÅéL)Ͱt2mP6åÛ¿f5lköØñ¾.„Äl9ôË*Èë:âºljÃʘz?³ÒWâFôch€„øÉ€éU”6ùÁ&nÚ/s9‘eß[ L‡é[AU9Öä 6X° ò½ /Ùa[ŒãY›²úJs¥m‹YoNç`¬‹·â]öq!ëšÈ=zûùàÍÍøCÙÅ \”%ËŠnç¶4Ö°èf¢ßeØàK»òe¯G+’³NšBò^¼O¨[­ÒÕÀãNºôÔ®·Úp{#’öbø%l¾ÚÓ ¬bê Þ7¯ÒâGnÉÎõïy§LTœÀ'P+FX}Ø*Ž˜oòÑÚŠñÂÍ%ŠfµÜ]*ƒÈ"*Õ¢38Yà©E‰‘“ZyÖC«¾%(IŽ¿sVz›sªlûÐL·%m]“Û»ƒ‹ÒzÇ×s`ŠƒPœ[9ͨp´ì´TOXp>Œ¨ãˆuÒjf&uY$Ú»-íD«ÃÀ¶³„4ßÏ*åô1"C·¶ˆ\ƒn´—5™¹œ@ªœ×·Wê¸È¡„ÜŠ»ÝS©Jw±$Šx¾…d¡Q F—ÒPÇ<ý yq8½ÚìžpÇ®ßvíÚWQIr.8å€èØ¥‰HÔž ŠÙøňR90½,Š;O4™Rt@¸k™€“»œ"Ý>YfBù ×!–Å€=`&€‰§Ž—LçŽÆBlX¿¾@=“›ÕE(Ñ÷h“Ñf›óJÖê! _ÔëØŽži7ñeZîsog;–@ÐN&ÀT˜Äç{,Èи”H~tlÚH²žgÕeÇλFЈ˥[Tx7½WÅ001\¿î ¦yâ×Òi¤ç3Â1naðôx¡ Y¯|ï¼:þ?C?øÎ\nŽüP&ó€BžÖï gX­K°·˜ÊÇlÌ« ¡1‘"b OBñ¿4ï³¼¿­][•W¡ŽfmB4j³ÏX$`uèkªÛ ª¾Åq°éýŸÀ?øYO`%ãNÖASoòíó0ê)3ñs+Í@î «ì1· FEí°ö®Ö®•x+ÿÂ&à®<ã\ïZUµæ_ôêÛÒkk+Ž‘¿cF¾¸Ó‰z—ÚãèȉÙÖ“|÷Îa¦}ý…è_–À JìIFtœÜ˜ K0¾Ð»Ý]Œ™¹ Â?6¦¯úbÔÓÂ@}­<ðGzP„øh¡NqM@ã‹bѪ_a—\XÝ87`˜—Ñ5RHT쎆igt/Ö§—èR¨_´:;7l, L³Uº¼Ì×-‡ã»l u¿õ¾°âÇøA¿ìœn§WÍ£ ‘ÏòÅmRáÎý%*û@ÔŽÀh¶§O |â刲ÀêëZ¥ºù(ÿA©ïxÑFæ;»ìGöÙµ·ÛÏ|‚«T]¦wÐО±9¾Î­tk /ÇßÜ»ù¥"H”£ í~2ÏÇ, Ì,1Í”ms¾ô»3#ukEµYdÚÑà¿ Qñfâ÷æä°‚ÐC—.²ABKš©ì`KçÆïб!ãj i4ßB1EáYæVKÌV0³àù¡vëX;|­Q‰ù×ô*)c€%˜„ÉšÑXÔ-'ã;ÂÁr>á-¸$V6¹Èôրɨ´¹QkxxàÛd?ž kOBª¼â^µË÷^3UËôÆúòÄl™l㶆~S’xN{Ž/GÝŠ:."5ðâ¶!G„¥¨l-ÿ7@ø²)Q³äZŠ—Ý†Ãr’¯tžØõ±ßܲq21}8ìùˆÖ£g-UÍf诃ç] ûŠ×Q$ÆÔ‡ß2 u9-Ô)f²”Û¿SÄö…Ôm5ÒÅè{9!mœ_KÕžhêc'±À*â»=œ—/3¢nuúAa¹Å*’iƒu™àõl j ¼bµªáÆjûÎL˜ÿK=í(J(ÞO£F™Éðì©cm@è3 TRém3qÜ}xùHÞtg6zžo {ÇóXó99ãÁs'âûLÞ’m(xRWí—Ñý™®O1­ˆ}!aCàù3f51ùÏÍå‘u“ö-q÷-:¼|Ä(îñ<¯Uphs=JÕf ¿…1Y¦ÚïU)l­¾b„ßM u©ÎÞ˜»í`nç W¼¤¢c!»€ç—ræë÷y£Ïü¦»ßƒ” ô¤†êá_c}~ëß-7Èä–Ôï|fTAuø'tø¯ŸäW=´‚-†5ŒØH=ZU‚+?%gøÅê¿Zk{½#›BýîÉÚ^·~÷fa¡§³ìNF—4g®c@…qÍþÀ}Áy¿±|”ÐU8À/õjŽ/züQâP‡鬙‡£ž#êÖl´Ãcˆï|ˆ^£OšÊ末€M»z‘ï\Ê«­¥@½†ƒNîýq£\Dv›–ð¥ü]ἄ”„ïø„[[¤Xe; omœ¨I¬kžkû­}næ ÛØH…´zrwTeðSùÔÈDF&ƒy.°Ù¥tH@å]H!bµö'O'Üë±j\{TölFLriº@×ßšÓòm$Ed­xt(#?ƒwäru°z] ß'¬ŸÀ–ʘ y o(óªT(¾,éôó01¯i£eÔÖô×ÛÂsÇ€Ì@ÕýÑõ­¾îoèvb´ŒÙÜžvü; Òµ´›©;&÷YwDTÀο۪³GÔ X҃ܗÂk«]CA 0ÚvŒk±ɆbÒëA™®»œd³âz$ûCuÓ>³Ú-Ε çÏ8H“x¯õh|ëÀFÓ«ü"!†âOk•q8ª_B/ ƒ¸wím‰ÔÀÖ‰jô¨øß¿L ñNIo;Ÿ<&³ÕŠuqtÚmƒÛ±˜ë» îÝ<¶ÂvMéçÊeBJjÒ¸‚†I£ôbˆô-½)k>bõ'ÐÿµâáÚ|÷?äØs±yðX·¡³ø$ã-žó˜Â©hKQaº7´Ô´s܆c5Áj óO-„Åq+¿XÎ+lœï4—P-T÷p| 3õÞÓä´w/JqçÖÛ^LDZRIÿ3Œå™Cš*Ús´Š3þ"[º?'tË&¯Ž5ÿÜém@)…·õ”)ìq=ÍŠÃŽWÞc®z)7Ì@”–çÞû^rwGŸµª]2;o”™Í4sjsè&jÖ’M*È,wçß!/gGügNpG2~½ÃBýjc€yjU˜~E>ïÓŠ|a/w/6¨QKÕ‹x¾çlÔDŠÒ~TeŸE¼ûtw¦û&‹ªè¹×­*sHyð™×Âq²ÿeʽé‡ôWLìR°4’÷ÿT³¶òÃd»þp½ú¨­°U×Å$ˆ¯a _SàI;Ìf0÷–øÎZo»›ª‘ëô¬Ób‚µO“ <î!DÕpc+0“w°.¶ï dè=°ÒŒ¾â!{0êq|…2f¥JtËF gG|?£æéÞñ¼!?š‹\Ž¹Æ©RXx ýtºâ± %9 ªãJó½Šñà”Mò"pec#4ê®äÂd$ó'µ¿ÇüøŸÌȦÛ.jŒ{óϪŠ¢z1ê!…§À²aEx׈¿ÜŠØ;¾£qf Œáòê#Ñ-·ZS™¯snA »¤ endstream endobj 1275 0 obj << /Length1 2304 /Length2 18682 /Length3 0 /Length 20027 /Filter /FlateDecode >> stream xÚŒ÷P\ÝÒ€ ãî 0@pww îÁ%Èàî‚;ÁÝÝÝÝ‚www¿¼rNr¾ÿ¯º·¨‚yÚ{íîµR"y%ZACk} ˜µ•-#@XFIš‘ÀÀÀLÇÀÀGJªlê`üŽThgojmÅõ‡…°PÏá]&¢çðn(cmt´02ٸٹL œÿ1´¶ãˆè9™dè’ÖV@{8RakW;Sc‡÷<ÿù 0 0rr²Óüí´Ú™èYdôL€–ï ô,JÖ¦@×ÿ AÁcâà`ÃEOïììL§giOgmgÌGIp6u0(ívN@CÀ_-dõ,ÿ¶FG P61µÿG¡dmäà¬g¼ ,L €Vöï.ŽV†@;À{v€’„4@Îhõ±ô?4€ÀHÇøßpÿzÿÈÔêog=kK=+WS+c€‘© '&Mçàâ@г2üËPÏÂÞúÝ_ÏIÏÔBOÿÝàïÒõb‚ ½÷ÿíÏÞÀÎÔÆÁžÎÞÔâ¯éÿ ó~Ì¢V†ÂÖ––@+{¸¿ê1µ¼Ÿ»+ý¿×ÜÊÚÙÊý?ddjehôW†Ž6ô_¬Lm"ÿÚ¼‹à~ËŒVvNÐt10¡ÿ+²« ðo%ã_â÷<Ým¬mFïm=M€ïàÜíõœ€;G §ûŸŠÿ%8FF€¡©@hlj÷;ú»hô¿?;S€&Ãûø1þúùï'í÷ 3´¶²pýmþ÷#¦W””ÐP§þ·åÿ*…„¬]î´lLZ&V##3€ýýƒçÿÆ‘×3ý·Ž?|%¬Œ¬œÿ”û~Nÿ)Ùéß øwA(ÿKÖú}rŠßƒ®ÅÀÊ`ðþ‹ñÿó¸ÿíòÿoÊÿŠòÿ:èÿ·"1G ‹¿õÿüÿèõ,M-\ÿµxŸ\G‡÷-±~ß«ÿkª ügue€†¦Ž–ÿW+á ÷¾ ‚VÆïMËIÇÂöØÔ^ÌÔh(oê``òÏÐü#ÿò׺Y˜Zå­íMÿº`´Œ ÿG÷¾cæï—ˆýûdþ­¾¯Ðÿ¦µ2°6ükטXÙzvvz®pïúXîŒïKitù{–ôtVÖï.€÷=FÖvp=W6V½à_¢ˆ @/ô›Øô¿‰@/ò›8ô¢ÿ%v½ØobÐþMÌz‰ßÄ —üMïÙ¥~Ó{véßôž]æ7½g—ýMïÙåþKïÙåÓ{v…ßÄô¾¿é½¥ßô^‹òoz¯åËoz¯Eå7½gWû/q¾çÓøMïuêý¦wKýßô^§Á‰õ]g`mñþ¨ÿ#aaùKbiùÛÿ¯ 7üß»þïíýÆw¥Ñø—Òô7¾7kdñ‡ï;ÿï¹M~WòÞ½‰« Ðê‹wÙáÞÄì|ïÛü|oîÏdï[þQè{WDþ«pëß¹ßmß_•¨ß±ù­~÷µy[YY~Kÿ•þsÍüWü^¤ÍûåbýÇþu¶à{ãvà{—ö¿ýß»²·Ð³7ùÃà=äïc‰ðw¹ï«Iïàlý‡Ã{ Ç?ðýdœþÀ÷nÿxfïÞ.à{x×ßÕ¼»ºíþ‰ý?{oàh÷Þ»Ãß÷óû¥ðþû… º àf­ ¸ý̪ýZï+?8ÓîŒ3± ö_†\èn‹â:í)øó<\1ç„Î vþÚ }XG;b*|k0WÃb0×YóH åÂZ¨m…4Òߢñ˜@ã}<²—vdÚ•êèÐøÊlehŒuÖ¨8è|-0M‰Mc{±3“z𙇬±ü®Ìä š¼þ˜l<<‡ƒƒ̯M0µ­\¨JpúW»Ä'ûKñ“|±ƒ‡¤¾&ÖÍþÅbPÓ¤‡‡ˆ6Rש‡|‰ûÝlxR_'Ó¤ÛÝ¢8O‘>×­~Þúö£Jü$ÜiÛ—â—§ijµ(o“?¤iPàk9Éu¬f[Ôä¤0:™·eú¢dÌCÏî0ÄYš,¿Î@ÀÈÝ~QoXá2;ºrÐn÷`‚?kîåÇÖøâ[ÁH®êS?µT*?>5.(SVhšB?KŽè_À8ŸªÎS6T¤uÔd5`Y~ë h«úÄqޝ«ÿÖe,‡ ã…hZ—‹˜T [€ˆÊ öÉ L¬ÿÚˆRÜŸ¨kÄNY837àZ_£Ý@»–aŒœÔ*ªm&„"rADëíÿÖâ£Û0i7ëhmkAß/ØkZ­_Ù š½¾d¦øÖ|X¸ÕT¥ÖâªuVwüÖ}‹«Ø`ìáxºL9R°5r¥òËø(˜e´ã‹,Ôš%wWÜÎ!³'Í’¬(ãÝlÁ|ªP¢ïÅ"0ÕlƒÈêÍn“gèÍÅ¢dnQg?•îéÅÅób'8u†G)A4rÿ£\ Ì¼:9Ån {b5€¨!½í™lù†æñ³a¶Œ¨ÑgO徚}"è}æ ™áå¥U„=eÉKF§÷²½>*è+~üp®i·•“²7‚Ã÷ ×>¬i±°g-;þ”Ô ¯î‚ËUòÏØ¦æ e7MiÊøúé„ýˆE“ýö"Y€E°¾¿Ëil„sX`äéq¥ð¾šþמ¢APóø{°µLçoË|Í+8Ÿ~:SP˜Ê*„:D‰X€¼µ¢AI¶ãm{§ï(¾Y~ÃIsÃp†¨xÓYHÖ\Üm-’Ä ”Å¤ÝæezfÑÁiSweÓO—•ì€SÒa{QÊäÈôÇú¡Z2çÏgo«ZLs4Éq•î‹rfr;Ç?€Ö+ªýÃYöŬ߾^S¸ bæÍþn;Ϫ\Ø0ÚŨ¦|ÂH$?? †bÚštøál8¨Œˆ#8 µŽpE#iΔ:ÉnF9mÞp&n I,íT<÷(¨PléÔª>G[$úWx—ž‚øAëæ( Â*ë+…(ñaPawCÇÖ¯0ß:C–<à¢_~ ú‰u—Dàipòn|fN1A‡Ëüª/ÕÔ\ÏÏuÂïFÜt\ªë>R)í¯5BIg)ÜEðÅ“+¸Mlì{›¿¦6ýAŽ0¬!LzÕ31kìÒtð «§q¿EζÀ¶£¢)Ft(ÒäŠLÉ_¶‡Ó·qÒ‡ŸìüÛN©£ŽðsZ>N× _”£w=—|Ùñ(Ø|}ƒ qÐ¥ª;ë¨JçG>{™QàüÚ›„thVöÔ®m­QfE‹©se¯ÓØr©ÌçüÐDê©Ð‡jÏ&å\•ðd¯&‚ûû.ó9LÐ…Âê Ú¢9Q¹f¶ l_±¬þ;ºÊÝÅÅ‹%c„zÄW Â+J6¬î+݇©Ÿ*í/´ä“^Õ1nœæ,ÉO“ZO“¸ÌêÙ'%ðDˆ’༪H/ö{Ö°v¸!®«KT‘­:Ä&Ø|çudçà'+‚“_§¸âvNYœRM.Êi¿¦ÎÑNžº©žè–kjcÈ›L4,ó¼«Â+ 'Ô«Ž5Ï ÷q.Å#h¦µ>cDZ,Õ¯"7¸{ˆ;uv‰T;¿¥™¾èsçš+žœ2ŠvÚ|Lí@ñ)¥ÎQ,B-9’å§ŠVóW/ÜÛ ½É|Õ1¤šüù ëÕ /ÕáƒX[ÛÆîQ‚,í2ñž±T8Jkc)¯Oô#I¹ÄÃ*®-Ï!0WÖg‘ÜùÕÆö)b‹³Åôâ® ÙLHGJÁ^cPªîÆÂö&X"(Ƈyžf¹Z›Ÿ‘_Âg’ƒõ· ìç(_—R⡹=à$Î-”èD"-»c`—µcÇÜûDJpµ¨Ãƒ˜mRsûÏÃR,`Zv)#I0‚ Ú!<º\ŽçGá­WʩƚÖ(úpha9TRòÜÒÕ©RÓsi;TÕƒ òݹ 3ùN8;ô—òðÚˆx-ÊÃ\ P6Ž7gãm¶QÇ­n÷\äç.¶ì‚Ä]k^ J1dÂîÍæehG¡÷¾”75á@Œ0ÙN"Ò\Ú¡À^Ùzh%þã¥N|V̓]œj®~8A€zc1¼£«oßËeÎŽg¯¬–Ÿ*¦i L eƒIÉC£4#åDŸˆ±¼¢vìaÎ> fœ"²~¯Š#9Ï¢g®%3@­ò]áúŽ;qi‹RÄ¥RFæZòbçøìE²ACýY·Býv†!p"=e®I%åà‡¢ÙOÀƒ36gr-1ˆtή(y Ö.ƒ;L b5Ài05‹Q¾ƒÛÔ «ÞKõõxõgGc§ûÁ N„Š“é™&Ò¦$NUìý"X'Ç·éÇr~lÔf­ÕóDs"EÃ/ñc÷ߪ'7>F¨÷{íøBÊg¬(Fó ɪZ[Ó/U ;—ϧ“™j×=ä{¬®úá»±šË©!L6'Ô,œLYÛ<íYƒ†ˆÂ5›=Þ%†:&‰qÝX†üläKnYà‰—ïÿ-a?ëÌùrULTø$wÚ®é<ûáÖ,ûa3}Èép-ÖÝÿà¯ò\#¿à5ìt•»î‰[‚ÛÁÑ+ÏÅìŽX—çu¾:ˆ.q QhÝ p(N@uÙdvŒ.žcÛc½,„¥f Ô-¸M=¾Ð+"`þJL}P£¦u(61jG¿j¥þý]í.=lIÖº¯‰ÓË®GAÁÄ<ºêÌeÐÞƒ¨}w u³ G ìP5½0§·5w ð`œÉñKOU FÔŠâ ψaU<Ñ:©k•'½Söõ~‘ÍÙH™¸ÿ£º¤ÛQì8qÿ÷3=›à‚c"Ÿ®!Hô!«B\…‡ÇÂ/œ(Çú=¦èÖÓËä™"=/µEo(šï§]—/ïžÔ¸*œSÓ"Gy»³Ï ±ÎæÎr*¬wTÓÈå>1^ ,Y  4"~bÖ°Ív 1×ýÚƒ)^æ nó¾ëBR_9öгb0%ãÅSy§õǰL§ RN?ìÏS ¢Si¸ÏX–s‡,EþFY· ù#Z°Qµ7¡^¨Â1¡l™ ¤DlŠÝöq½P·œ°·{³ R`#ÞíÞ•àm¬(ÝM¢À¯ÅtT„YýåqqÄQñ=P1餈âon£FzIÙŽW=¿ÒÆ1Ç\®ûñŠÛϿّ’?ÚîRê´nŠJ÷îO^Ç£=òúŽ!|&lfuè6·Ãl6TÖÓMýâ™FÏ6¢¿$ç/0o‘ö3$ª3éîÍëŒÚݵ˜NNϵ¢Ãål¢ wÎJgb½ y^>HîŽíyçí(q|›L@zÍ÷|¸šº‹SÎÑ%/'ÀŒnËóªÜÝÚ|1}ãê˜Ûià© š7©Äʧ ;ò%e8Õ¡6i*ÿ{å*ŒMuÎøXÞ,Èí¥¸(ëíö: ‘úi?³¦½Ü‚I$ô§qq7zn ®-5—8zÑrìâ­ouôVL“A™=üªå?ò~˜éWÛš M‚19ÏÁ59Ôû=Gúe#D‡¼œûŒÄbŽpóziOž}èY¶PKeTÌôèJ':ªkô3ôK“>}¡M}Ô¾œ…È‘¦ªÜ:9‘ Á>€âº[æ½ ¯X¶H<* jÀ@ËQ /ZåGWãqqÎ_ºõÀ¾ÙÍ1N '°xØc^DÕI@oüLH³0E€ôÁ§Ö˜äΆ,¶  ¶ÞõŒ·|K¸Žeö±®Êñ‚N°+Ád3_uñ{«Xj[wuÓ—9ŸsÅÜBø9Ò“zmÅŠ”&¡ô‚â§’Pˆå‚¡W!¸H9emBeL³dÙ9lƒA˜†¹©MíbªÝBó@K¼ •W¯Í—A`ÙjXΔ…ðM‚¨|Ö¾»Ÿm¼j '¹{´u/fF*Â#O›QB ªKÏ„*—žzÚ“ÍýÙa5Q`Ö<ðõÖèL~@kêá(ºüJÈÃÛmö”Ì^sØ^ÁΣ DH°•Ñ‘ªXvˆƒC(‘®~H¾Ý:´8£ÑªZpð«ð¥dÕ™÷ÞMqè¶æ6q¬—ÒýmTðÑÓN*þ‰½„ܵ‰xz·­’ËMŽ–6\ÄõšÔ•“Õ¤TM~ jº.ãt¡#ˆ¶w½ÿ^084ÒiŒÖÍ™ï µ[½Ô‰?;°1íN×6¡¦m.Ûÿ¬Å1®@ïDï°Ô/ÆrÚ]ùA5|Ûùà°VÔ!Ë0þFÅs-Û–ž­ÞX{ñ><>z¥þÍØ6Ñ÷~ß©{ã»W™˜ÌÚo1ß³™1_QI¢~u—ÊÄEñ¶=-Ê2ä,Ø‘¯+_¼¼]#²2ŠŒêAkL_ÀÙ-‹'²(¿G‘ž‹«ÉmËŸ·¹XÕËú©®€.l/U2+¾a‹y@õ¾ÌƦ|«´E#¶A]‘ÄŽ‘ð÷êåæ*#pHhÂI·Ÿˆò˜äëîo¥OjæqÈÊk¨)YâÌ6«Ž•`ÿyˆºã>ïÌÝ.cŽ>úȵCS¾)S’ç><¼h4ƒvHÜ@IzùÒ-‹»ÁžÙWÓú¿÷-ñ<±R´>ɦÓá-qâ+ )[•ɼŸ*3>‘Mß&¾WúfZUôXÄÙ†äÕ×ÕIìÅx4¹É/Uó**Ún;IÌQç8rW–Ie_1Ü®¸:p”¯ÔBð3u¶­™Ùš~Œ=측¢FgÏY\ùá烤C¢ØÙËàQà!—ú?µcýg?]ßô›dUC!øz¥ô‘kÀÐ^ËÁ…'ˆ}Qûóʱ®¡ö@d¦oF* -wR &j§¢ÉÉÂä¸=I-ùþ­Y„(«þÓ÷4íaˆgÇìñøÕ›¾^ËÔ ZäÂJÓ¦Ç1±±µò©½‚•_ŠMDÚ…9çÜD‚x ù–¹ã|9ä©J÷½Ç¡8^å„íמn×¼:‰ =£œL|\émÂ];Ê_ByÑñîK™Òp &­Ì›:‚‹1Ç äu‡¼HK'£Zõæû34 OG(°>ÂJ&Åš;,g†•ÿš$:?éº ;¿àI dD[çÁ%ëùZ›Ž:¬“ù«ÇI§ru ÒíWÐ ÙsG­<:œÚÄ"V³-:ß<Ôj+56ì)éˆN(‘´5]N¤S}KÌú¤gÔÉrz…„Ô“}èKØôîå¼1'Áµï¶¥}7z¸;?Í•  ðm§ uÒ£¸OUPUÌkÎòŠUåSÒJ³9ÕF¤q· Æ0xÇ>izÚÛ¨ èWÅà¶ÄË,bþ*MÚ”ãÐqƒ#)ŠÝê¸ÉÀûbNB2×¾h€e>iy¬"‘ÊŒ»ÔSMRÞU'낸n?à™àäШl'CÑÖŸÙŠŸ™ÍÌ!n¸*ª¢LGV¢¢˜:­lq5oÈÏ-Ó'j²ÄÇ ö €Þš;ružì$ša(›²yÊ5Ú>î¶/íig±<&^&cúy¿-äàBÉE5 p·vYy Vj´³ú&°)_†û̗Æù ¥1”Õìþ×§yŸv“ue"™š¸>Ð5+b«ËwpéŸÐ¬!ÅÝf1Òíö&–^rῪÆÖÍehlÕö­@& xPã#íÿˆ ÂlÓ;ˆOdg—Êãáv¨ü%dEüŠÕHSõœwë§£Œ™évœ6X:Ô¼!ð[C¥ÜDnŽ1¨pñéÁ÷”‘™çEa©ƒl»N¼UÎÇ‚ƒ¬7¨K¶RXBëVc=+ܤPÐ/õÖMÚÏÇb‘j‚ ò°Ù_[T¸Ö}Fâ›l`ä2ïR0ù«'š‰¢_ËP¨Åî³™1oSt¾&Øc’ ²g‹+Û'fÓäšÑä*§øqL}˜ÉwÚôw·S>@àÒØzsn$†=åC@Ù+Ç™»Iú庰bOØîÐâ}elwªGb/M<¬–¡L·b–sɃŸ˜m´‘ÿ¡ø¥·´“©G¬ÓÝý.ÇH¯Ý·˜¶~0ˆT÷ xÌ·8~kùóê»åØYSëœáDíÖÜöÛÖ5÷J±iœï¦4šÛ-ù‘.LESÍ;ôÊÞ‚zÂ-:˜×kß²6‚?1¥~FÌI‰0ýu¿E¬ØMŒRéZ hIÇø(Ä ²ùÑnÙâËÕ‰c;fqˆWY¼]Á²XaIÀ¿Rhƒ¶ A–†­l8#âÀMÜ9æi»øñ T_ýH9}ún2•7ÅŽ¤¡І¨±3Q<)ÚÅþ…\á èèmXËQÍ’­rx¸Ÿ#ýmhÉ”k…"ýÕ0Úf"Ú„N¬e˜Ä†Ýi¾äòðzÍ3Ì–ˆà´UQ>'Èa·¡:NÓ÷Õ’^T0YíHtH¨oƒKr`vƒ¨_—Ç:éÎomÖ¿Dÿ¸ÛùHÕ_Ò‰È'd •ß×hãD4º†±¹‰ %ˆ¨;x®Û)W’Î8‰›c3Åj)_6†A Q¸pímÑ œs/ XÉk×`ñè kãÔš²`·º5Õ ÷†O…d‚RT÷ÍåAŠ‚i°áhhãÖÝÊó(pWŰþB º7àg3«TËfBƒ0(§s¯U9möµ›PŒØîj\GF‹•xwqO# ‹»íé}äÑU ÝÜ §\wÙFýÒƒB]çg”³¨8óñÍšáX"ƒb¯€èêC(ÙI;;ý+HñdDL:¬íhå¨gЕ ,…ˆ™zŽ=¸f (ësñ±vdá$èv¥¡&¸=Ý"çÙ—}‡–Uübm#$ Tk¬ŒZLÁbj:B{Ï¿ô¦Ë€¹-¸²$j}$¹B†ö¥€ÿ+¥ª9ÇÅØ7<Ý–pÎŽ¹b¾šŸvóU#ÙeŠÏ®ƒ'JœmÈöpœ‡&ÜGß>ãb0¡¯ÖE#B ‘³‡2h—|Þ[EsG dÅ.%Ï*H¶¥¶jV‹°2s¯¥ F~róªûá^ÇC®”ôTàØê|R-uóÓ…èâç®Õ%’&6ÜJeŽ #Í…Ò4¸cþd@igá°Ýå‡.»'o8Ø¡¨ðé9›öѽ<^úçý¥J3ÝhÄÍs†ØËÒ¯2òg—t½tpÊöîKš÷ÍcÍ&C·ÍHÜ‚d´˜â3ħ~“;_Zà§;óÃHPÓ•gkQ¬¤RnT)Y„å†ÕPë´;H«@*x«Yûê ,”8¡AÙj8#6r¬œÈQƒÐ™…bÊäÖ77ïFHGÓz Ív œz†­>Î]ð‹Sñžz½JóFÑ#ÿp³É&óWü'>Fdbl‡h¶¿À%^ï/ —JàS'cAÇ´³Ä%Ú~¶H{AQá/á™pr)7o§³êåô“§a/¼¶âp¾ }ôqÀ(jk+**¶–V››FŠ|ˆ˜žCvƒP¯\·BpSnЏ”ÉUìØ[ð3ÝòÎÓ…´²M?„†É³·‰âÛ b˜¹×ð'ä =O¾ƒ{ dYB)zåEpÂ<¸þñv.÷ϲq™&wÐSÙ0Ŷžªú¸û9ãã¼ÁÙò/FK%ÉÕPK½æâYº ÐÌi©ýmr†#±'©ð‡çxׄY2(%QÁGp¾”yÕÞ·¶kÔô ÂmœJVñu3úê¥y<¡Àþ§4Hà ›$±²/ß“*¿´Ae’¯RðЉìÓ"¸5ÚiÏ|­­qh­|cl+{À"¯õ$áv”é‹×EzÒ— úi"„¡ íÕLaÁÜ jè…ÜnCOM4¯Ž¹ÐÌWÏF'‰íÑÒ_ÔŠopÎn&óƒL fêêh“ž¤¨˜6qz «†(Ñà„µK…Û7Çx ¡¦ª8:öá›ôDùóB¡ñf†*w%’Zl¯©Yw 5Âëµdy^¶ÊGÊjâˆg²PŠuÖ_b!; ɬ²g½…MŒpêØ* Mz<Ä-0™™/áõ—s&œ(œ6ÅWPGàý“#u²òqfÀ‚ÇM %”ö×t>ù}°œ‹XÑf\;ê@Éàˉwú®P¡Åʰ=Å­ðr›d‡?ä°\hå:ðaNö'zÐëÓ$ËaãàA_h—”ÀÒh¸>Û¹šSEÀk$1WÆm<ÀÂĶȔ¤kKƒþYÿÕR{gRóX~n„µé j´«ú-õ~Žl2V Œ×úÍn3ápƸlJϘO¨CPÉ ö}umdÁ|7é*¾IO:6WB¥ùþEhÓeXèæy8î«ûc»ù¦ n°ÄǯvS0Tkv}¯ Ÿ¢++äX -›ªuªÆµå£Î¥â` \ }cÅWO ~Ú`‹6õ㾕µ}ÒD nÐñjU:óŸ}²D±Jž$*ù°æ_2N/¿be¡«‘õY»Ãì%ƒÅ¸9ë®L‰ÌLѤz4ÀÕb,µŸ&õrÉýЬ€BœìkÑê6¸Ê¯_ÓÃd*‡¸šüþÍB©w"‹ÀFj×ÕžïTž· £:®4`×a!@‰WÐãCˆŸ†o 1kÊmm³µœ$×@Õ·9) ””ø$?ŸÌ±[2áœ6}£K§ÑîªäÃX|稅ò 0!#Ûl‡DiN“§ÈL­–Û´fHÜW¥[‰~-Žpä}@›ÌÀ‘PH°þ´ÔI_¿i%cf¦ãe-*ëÝ (²ø4,_Tì~0ÙÖò"ߊ2·ýÔ]Ëui [Ãæ=.æ2j·Î}òí0±NÅ"ò#²§Œ¡úÐãfÞ—¬ÊêIÙѯœdZÉo³–Ú¥pÌî–ûcH%àwA_^ÕfÌZ0mRK±ëƒìÒª=—ޜʨ@«¥I þxS͹ATÓ6þ±Ïµ’Åqìö Ú Ù¬@A·Ts”73 îstt\e=ŠüÖ:É “h ?üð­†Vœ¡0ü„·Ñ0hí²žvXKŸ`Üõħâ>7œž Q†¦‰=Ò¨ˆµ^}†`ÖÓ”ºÊåòÍðf7w&0%Øî×Ï/¨ÏÃÌ\,z8vd²È–ÜüG¾ œ=€ïÔPw‘H¥)¢¤áXÄ5A£; ^ã·ô˜cÐ Ù”©Ob—ì°¬. å™bò‰¹}aM=Ø0Q!¡;‘kØQŠ'å_b3Dym;_•¾zɈ9æ4GÊ„ë IɪdºCùÖD_ƒ¶¤î±» Œ÷iúE[Õ1f‚z©õ’VûS9ï‰ÑLVøá· fåôil_zX×-{Æqug/B¬ª31Žœ¹$w™Ô<üÓ y!²Šû*ÞØÑl$‘;:Á;}Ožr`îëËÖ=2ƒYËC3¸à'ÍØù;™×EEF”-Œ|Á^“•Èæ7H:a&7¾Õ‘ø©ô»o»”s°ðב 6ñʘæ>GÛxŽöË8•\µžu\°žkñéü«‡J·Ž 5­¥Pñ?§ðJ“qžä‘<ŒÌÄ.H°ÈŵÁÕz˜x0†¬óa°åpl·³'ÃSû+^ÍÉœ‡³ßvÑÍ>Í¡ñøMšìqbO{Η A¡×V@>^¤³¨© ŒÚ#ê’çÚŽRhÀýXP ~hôPüj=Î#Zø‹Çµ’QêpP<^LƒÄóü"# öTIØ–ÏûSèr)®&wÚ 鋹èZD…å¨×fAÏ[fï)Å‹‰YŸ´î×—æQ|ú‘ÃãžFr¼WVpFöÔÑ»þc MêB¬Ýhq‚;V˜Ã••â+ Ÿš­2Í8§ŸÍ¶Ò¡Àô¨°åüpÍ‘¬KS™I¥åH?"|¹y#ÞóË.íè¶6»\Fy·bt€'P”fΣ]Š_ªß»x¦BÒcÆ[x÷3oÒ•J¨á‹d”?¾5ÔÒ·`I:ì•@™¼,üÑ“ò«iÖp¡&{7yËÜ&#Áñ¶âº$Ã"¡V2#í–œ,÷xˆoíú%‚šf=…—8!¬%›!ªap†â/ß"õÚä«èNäX½E³!I ÞÏ ·6 û0¤g¾Àäy#ð‡”™ ÎO&.îù4 øn«múlM}¶ìšóc~çgåMV[è½T‰GD5EŒë³ÛFF™Ðš²·™žsWÊ¥ý˜:Ó€z›^‘TÒm˜süy‡bYìT®šsÕ´"È3Ÿ6GI~%Ô¤¶_a#Êùø#¦„°¯lI“å&û¨)‰Ž è)ÑØbÇ;,̇ëñX¹˜M\®-Cûngó½Þ2,!”)UÌHòU%šÀèyéjì{&/?¡!MÞÕh‰¸Þ@F÷v9ö·Ô*a°/’'AE{é»e;H?ðŸL#ˆ»'´ÙÀúë|äõ¤ñ§ûÛe:` ŸM‚i›±üÈéðÚßÌ£”¦pJ=ñ~M_V5jÃë¥ ×Ó,ýrºNèú1ç—ñÖ$R™ÐsLXïí]"¼z‹ªg¼MoŽÏü%0"‹ó^£ž|Å0·7ÕF|¿ü[Ž+»mŒçG2hˆ§Ä±Ü]:,)|QK‚¶9õg]‹\;ÅomwØð¹õ>cW‹toOÚZN:ë\GIìó*¨†Ñš|eulw$ãz˜¬¦².µ1 |îËh7 [½þžÊ?¥Ç E^zÜ8úË%s‹|KCÚ¯:ŽFœœèoRcp<šò];¾“b°Ys›‘ÏNœÉû±~[°Aàosøˆû\ŒÑIÃa’Ïrp>ÂNÿUB¹\ÕK¥{@-P µIÓCÛkƒÙõPs`‡;*x"ÞkLyÐ)3bOÕÞ _zÞ[ûU?Q‰eœZ‘=»¨©£ÚÍþb¿?fÙÅ1(÷>Ób=Ѱû\Á{+`»køÙÙç|¼ë¡p"'&Y2ëÐZ¬ÄÒÒ¢.2?x]…׃§Ôø:|m¡­x¤ÒNÉã¦7þV2ÓA†Wê´#ÊÉ4Ò¡šjðVf!X=vn`ZÕY%`7EÃÈ×úÙ RŽÔÛïtïjƒ~úÎ8øÍfv ÀžÅெ€_!¢ÿeá(zøóô†h\<ÃõÄ ~Þ9AvÀÅ ƒLÔ4.3ˆ9[vMàT[ÇÊóÇfÙ¨ÞQž*ö»YûÍ'¥Ánß„)~µvaOŸ§ˆl‘Úu˜ –BÖ8tÁÄZˆAdÞÌòã+ Ùš¼é¡:OA•pŒ—k]H œOùw²áV#ë·ËÌ[ËK£•|Bn‹=kÁ½ú  ½Äh©Hüh奣˜*†!ׯ¦sŠ(sDQkÕŽOß1,¦8• ôg³-ŽGÔ’ÒÈpáŸ{iœÜ˜!w ¡Š1· …t›Z”Ø`¼Ñ¢Á,Ù„h@#•Ñ)?ÃÚõŒ²t’±“6FÎuho¥8ºÄ1íãk7ÁWÈU·ÕÀL‹2ÛÆ•Ðps^èXÇôZƒÏŽ?+¸éxO;-¦èO<Y?9>í^ôùCí¼íäôE˹Q8mÊû×}ôbH"êžö=”ᢳa,Z§Ù“)ëPî eî[Z–r [Tì]°¨•8ƒï¢Ží(§R" "úDjGZbpé—A*Rº\Hg)ÖÝ•"~În½^"LŸ‹ÐëDo½Á©×OÅç;‡˜±Pâ™ý’„çÝŠíH»† TX‡¼%[WêDH­ñb:­\ùŽÀòµØNzª`!â,®¤°z8sžG.èÊÔž¯Õ/áën´!é‚?™”lÔ³ˆé5f¯Šé<¬ÙnÖbä-"˜EœS“SNf£u°¸Z2UzRí.ÅÁd Ø a½g%{q¾M¥åWxOIZ2œð”L%¢í-sû’x›˜3æ¸wÅÑÓÒ®mú–„ª'Yoêp-@±ƒ´™T&Z²²œÅÀæzpFóèóÚßpE–ÕÐæâp uÙºõ14ö_­‘H»£Á’¤!&q¿=´ ²ÁÒÒ#N®ìcc FÌÈ~´ˆ7’¸Z$YÊ4ïßA ¸ªy°Õw•SŸF_*K¯„£S¹Ú•æ— Å¦ÅÍ–‰¤Õ|‰wÞ`Ú¾•]60ï3N,Äí)ö_ 'TGJ£IÕÚê—ÃÃ'¸—¯õqÄ@i ©ùðÊ®Œ•àôuiÆ«¿<1WÞŒ {¸éñÔ½KŽÆôx”}ŸÅHq1æP¿Ï›|iìQ•/TWÝÑ‹GÏÇë'{?Ìi{%Í‚ŽWVûé"R9$ÁNMt*Èò}&Þa|aIˆ™®¥h'´dLx+ߟ†åÚñîx-Í¡ÚÊÎò9Û17›£x$V QàI0eî–| ‰èµLÌiýº‘=‚9¬í@ë=ˆäÕ,qžÖC üKÛ'd×Á¹ew‘LŒpЛ.M™çœÁóÙ·qzzÐ2bÏþ¨ö52•¦¯Ýgð}6X?Q™1` ’â¿“¬óþt.< °ejüÀ¨îÇÆ“§É·oŸ’ãdm|)pBoØ‚jÇŒ^£B†a_¯n½cmÝ’O¾fŸž”Rèúš‹X}?wIäN&ìvÊÙÙ€¨‰:·«ü© hAã |Â. ñ_X ,ÎÒÓ8œ›üè¼O¤=ǧmšI>¥Rþ͈ÏÛ‘¦’x¥0$YªLÈÀÊó'Á¾öVlLÇd¡¹ñŽ:»Nò€CYÝOègrÝ20)¿â›¶Õ¢Ñ2š$ôü“+¢ô›Èv?b›$· d:‡n;Í”§ _1gìaÂr_/YY]û±ƒä0¡…àŸ6› {¦†©6³ØS2%Ž—ño~ñ¡¡"Hëé’ >*fteDˆîŽa³¿’ÁM‘×µqª¦ŸCŒ˜•gw·€ÄÓQ"€& ÿô‡ÌëÊÞÌ^o“AÃ’ÎúëT´í@™VuÿXaÿÀ¨Õñ‹”_cñÒű•ÏJP¸^2Ü?KÐÅÍ Zá{†x§³ œáp§ƒ‡¹qÔ”^Òœºï;E-ˆf´ÞâŽË«É?£ËØídä×þIù¼ ÅŒöL”Θ–…äãÀÄÜ@p„õD“?$[îq âøefyô4v2#¥âë=‰ ̨ qúx>/–QÁRðÒà€ä}•èv4ȉ5YÇc£×hÛeø°aÞY=IƒHS9·:jœNÈu`„,‚(Ï ¹bCbW$X>X¥,1}áY±í‘WFâ}µáBÖMcMtæ9 öJ7t¬hûî[Ó‡ÊOÅ·8Å”‘ãî‹cš¨  r·l¼¸ìöUnë{†ÏÓÞxy¿ µ…‹}E=~å’C«[S§KÏJ@¤¶4gÅÁ(,JY‹ï¿ HMæl§]Éñ瘯Q§Ï-=PÉ 2ÒÛo9;®žkt ~@jzL/¨`÷_yÅ€siÁ`Þ|"äâû)ŒUWùÛ-kA*ê¸{‘¬À}á‹ÃA×*ÉZéHOœ ižË-Cýóù­þhy[L¿†½ôà”au‹ê.^*ó!uÉQ^ÈÓ”Þ¸5ú⦱L’.£rîE<ºMc ÓHIožc¤è¾ÔL ‡ÆYw>ðóƢ˸—¶;ü–7îäçÏ€vÚK´tñðX°õAv ùg`fHi `1—À`©È d¿­”é&êZ;l*TrÚñœÑ¼Orõœ|ã[n¥£à»„ê8{nVNQPç¸;÷íú%œp‹ù(_™'¡9Â6Ø<Ðå <Ö÷z¤Õ§ôËéRàÙ‚5eN íæÔØy²_®Ý ®MÌ@RiõûÈ4~EL,Ç©J¸5M}IBf ¢$õYgpÓ%ÛH´›Bš”OÉÿÈs~5ÓLGÙY7CSGÙw˜@Ô³q¸Ïk¿rKZ)`H²Ûp15t®êzȃ‚;l0zöˆY1×£ŒM `œ8jŽ\ i bƒÚøŠ;#S£t|b-iQÁ_y:´Ü¨’…TIÂñ¥ñ—L5ûåf"+ì½øYÞV"LÒ”­ŦUÊÓ`›ûiw¯_Š-iOÞ›:3fãøDÎôÆÇ:oWDD«6"û:p!­Y§qÜsÔ–›bN{ù¸œ<m@ÆSkT8ž_R7*<Äœ9,“²æޝ±P^F¿¡Ëâ›Ë“r5¬' Ô¹‰noZ–†²mþQðFÖÃ]p9äx_O¨ÚÃôÕµçÓä ’4”sc€O\”Pź_>fOõ!ݾɃ™àwi’Yxö:?ÜÔxîñ]œÒ×T­½Ö\aâ©ǬS˜%ßð¦Õ(~C ÁWY‹Ë,½IÃ×çNÃÇ{ۮ̞%Ãí,Ä¥,M‚íöýU!ãY®­BÏWOf–;Kq@ЍvóeZCgêb‘žE©Å ë$@ÌËÛ?ŒÙäæ`Ó‘M5ŸA˜G)¶P¢ÿÍ)"Óx;¡§à ¯…œ“àbP>ˆu›"û¬øR›Õ̱èÉhŸ·jcø‚ ̓jØ’9m-?SdfÓÊÌÜÀ¡„1eùFö®­âŒ4½á™¤K—ä„l*Ž D¢`­Ü½–TG¾-Óå,uÛóÙPžÀ®×àë—å›õfvX9s4 âÀSo#JÕzó8D€ut^WÓÝ/έ×mÈu–óeª[¡ÂÕe™ ûÖ²&Þ;ûIÓ{&c¢#[–þüáÉï‘5]3cç}vâ%[®xû¸lëKWnR(¶;^uz¹~ÕC½›š8÷EüÀv(ÑærÌ@ðU9ö—’O1 Ä ?d^´ûÁ¡ƒY¾}"w¢š¼ždxërô¹×YÆŸ Mª<ò¥5aÖûB3îj´òmS$R5ýiŽQâŽ=á±YÐúy¯¹LMº9ÓŸÀÎôÒ% œ%÷¦ÞÙÔÖé1yqd´y€¢'7d›ž{ñ¡•o 㘚Ÿ‰9“÷1ÙÊIv¢Ç®¦Úæ¥Z)S¼AVò|=äêÉ}9bÿSbtHùczÔMò!ë­ØÜÍëQ4Œg^mûq“w“„üøŒM+uðc¶Œþ¹Ž*꾺º¸ZlôŒhGÚ6]Ï6Ìï‰å¡K4¢¾_"ïŒN&غ füŽm;¨LøÎ½Æš˜ìGxÙ¹¯‚³1ò,¬–uke¡a”ý+EµC‹ÿ°31¼¬Xv+|ª=%Ùø˜´ =Û»,k—ª>8„ȸÐòøˆN¹¶:9‰7]¤3@„æÿÀ€ Œ Õ׸fÎ7{ ¸~.÷í´·Ra$ó;¬K¸Â],ÜñøŒ‰m‘2]äÛ¯6[¼7g—éSÍv¶F8ˆƒ¤Þ©ÍÀ"é—à›_¸Dzi÷Pµ?ôò¦š‡N²Lâ{a#³o6K䊊ZL‘îtµsÒîÆÚqa«ÂÓ=uJN 5ÅWÃ;Æô‹¤¤ "…v\l†ñ¾¤5©µLÄo¦§ÅÕÐve6´YëiR¥Õ¹’Ò² ¬¼L6‘»ÞèïöÔ¨Žß|¤¹æà»/ÏCt_š ~5lðëÞS3#QÎ˜âæ°+ñCÓ ?ZÊÀ¶øðÝm£8$TÒúÕÛ&ÞåP˜B'%n-¡¸¿jÐ <'=÷§wvÔís3Â}*|3IåâƒÓèòóG”Ñ{sÜ1üöêh4JöSÌâQü-²pÐÈŒ^œÖF¦(‰g·ñÓãKodâgô_Ò©Õ·ßîLü«À‘ýxµäN4Qeý±¿ ±OD0÷~ð ó;*«À—e  ƒnR´æòó\#èm„VW[HWö¿¨ìk †È…"«Ö"±m¦•ÿµÏplmµ2ùQ›mŠ/¤iÜ¡mÊ4e ‚&[Ù%y­k÷¥–çÍø—ÍÕðÏ"c­NEØ×"ÓbWˆhwxy:MŸÐø¯ºðè%r³ò8=Dì©vÄŒšËàŽ›a2–åøÐó4(ðÚ$Ëúƒ}Džª,‹O.>¢è …$l£LÝŽ¾@ê'÷­³.idÓ!õýrgme¸Óï[›·êcæµQêß@?…ÚV=ñ®²l»ò)"0ûìtfÙn«y«ï‡¼=eN(ñœ‡+(kÁŒ)‡0&à“^GY‹*øÞÈôøv7–_Øph~õèz‚]Ù¤šóönÙEŸ"9ŠûxÝ3„MèÖ ÚT‚ÓñJqBí«Ë )œ5.ÌK­…ƒ¾²;š0˜?D(¾å¬rž¸µw5f;om@´¦-ˆ7Jåè,#{° çpÈÆú–Çm¦ÛS·Røó¬Bã#/«ÐQ nth30ÈKH ªB?¾ªÖü Ñ©Cê+÷Û¼c‹ÄŽRÄ–í4 ;ÜLNÄ•_1ú;Áÿ¤ [ój3Ývhóºì²G_Üõ—Ãl0 ó²LHÉ›rg|Ì>|Œw‹Qh<(¯¢¸‹°áG¡t9üBî6$Ê—ôsí‹‹/«ù>,i¾p(—wB ,Eñ,“cØ~A?2ôȬ¦c+™VqäŠ‚šŠŸæfY ¶ (“¥@DÁ‰ü….çà«tu?¥Å· šzÉóe ŒÂ‰”’lwóÑŒé²Dêû@©"I‹fAªDRÚÁdE|Î~É=Oš¯£ïñ! Þñc.¨ì"IšÀ~'‰Y׎ýÆ”Øb{Zý8½aP‚½ñ÷¶b± ®‹, ÙŽÏ–ÿ¨úq©÷TÊŲÿ>Q¶>•Á¼»BvÌ”+ûI÷ò!À… 6¨âܤ¼òqäKBijdîŒ@µÃ:KÉ×Gä9"Àx ÐWÞ0˜È1Ê:ŠÖÃK¯X8Ê QÔê@ÿVºÃum%ó_€w±PŽJú@Ì É,²Ù:â³@ö€a>÷ŸÓĶÂO% _¹jfZî !ˆ7>Ò¡ýX%þ’W§¥Ñ[}dÝs‘ç·Sê ~Ü‘²ì·­VKPo£ÒÎUæStòö€¦|#M#W¨Ðª!Y´œ³K%Çd$(æKš¥MÍ0£lük*6'm€FÝ’l ctÞÑÏ…lI`Å4>„àIÐØ@-ÿ—y¬]œAy¾"üÕT¶I)z|©r·cŒÒ§U7ÇÞ1íæÕZöºa­CÅÉÂÒŽ ©hý¥Ï%ûW½ÆÆ”.§ BzÏüël#L)ë„[ˆøóÐO¾ðèöÎñÂÔ¤ý˜,ÜD¿g¿ÈãþéÞŽè’Öóà¤ÔWÇ5N7ÂCOücAG«¯O½„xæëÜL¯ ëk éòçàãâ>Mg–€ÈB†šƒ'OŒTþm½ÚëõñEêÔÊïmîÊZ•³ðWÙ^ôžRx™Ý̳ Ùª›yò¾›ò¯4pG¥³Qù W©Æí½·•UEqض:ëÚ#­ý³§ðxJÁ¢»=£Š˜Ž¤¦Å>m¯Ù3µŒ;M4„žÌPç_µ`ùÐŽq#t}3¦ ~Fï24ö½ Ja}`RaÔ¹\ÛsR]8þ-Ñ _XÀ¶)ÅD©Ìr£×’á×Ь²¡*cÅʤŒÞ&ô/]‹ö£[®£{IDÏOd+‡ìN/š`JíO‰eñaØÕ~P}È^@®hòBÃ#ýÑ*T½“k‡M|üÏÁJOÛ!‘÷È~"y3o&Ÿ;œŽ+U¢mp¬ç+o`£œ HüA…9ŒÇÌûB탫|¦™ZìRè‰LÔäœã:d§knÀe¡œ­´ô#VÑ/C¿¹mÄLoðÓt{¤FJŽÐª»ë¢ahÒæ]? Ç™ŽÈó·2MIGSãàDÃÀ1 È0†^R¬ÛÄ™ÄRÙ3·£ht"мŠFåTv¬Šfw¹û$3_H”òG§˜«UÎ;iï¦teÌåXG”d'ý&ÇýåŠ)ç¯ð¨·±éH9Û›÷"þýÍF`«`c/òõ–ÊóêòĘóxq‡ŠF6,×ïïdxnõU@¬Ñ€môëz6XP5w–;Zƒµa#©A-´åœŽhÈâR´.HKÊ⽈0CQ9(`Éü YUß1´…ÂA´Ò õöÖo ÀøY2šQ UwEƒ¯ÐŸ©ª ‚ÖS`˳\Øñ=Žˆ/âÿå…¤¡çÁ:ë.1ó£žð«•Ïèјbq ÕwÏ5ø–®U2«æ Nõ†O1µZRõ”}] êm‘üVlÞuÑ¿U£—è"ŠŽ¥åÎùg¹ïv‘\È'¹Q,@Ýn9S˜˜F¤ãì°Ÿoz™áÃ=+pu¤õñ##+HS¼®X¦ýoŸQ± *æÉi¼šÝä Àßíxô6¯ù$Ûü˜À\ VB÷@_4f8B}h°ä~!$'ÊôªÐ°uTšÌïø»ÇA–ƒÊ滯սëÑVÝrFåÑ».”(Òý¹z2לz¨ )دµ \Žó•²ìO\!Iè%ØÇ8JÉXì¿V ’Jó²{[ƹâ |£'ËôÛ#³c;µCó“;z“˜°Ô£˜¾£@iÙ  [s²:á²|„æÚ|€DúuŸ¶£Š"³bïúºKë®´%iCÚ7Ô-œÖá\<æGmàÔGŸÍö,•aïÍMD÷ÝQ)¨üOg­éÃÙ³¬JÞÑ %ãºk8g³›kÍû;Gè™™™PŸ@Š’Z~tر emzp7X \Ê%~?åÂäQJ.RÝi\@á­p³±bë?©9 „ƒjÒíL‚Žú–|*œRøŒ¢!BD¦Ñ8Ååïšâ™Ó@–Ï[ËÚ*â©D¥ðí7>¼žo=R“ ºP°Ñ¶ÆŠàB¼Ôà/ºg ˆ<`/VU:ž:«Ê,’µjúKãAEȽN/3å¡Wq`¨ž'~¿¹gãÿI"ŽÖ¦öãt‘ò>'ç°æŽõ²ÀUÝ ôžØ(=ê“阃X4¡ÃˆŠ …–üÜØ[Ú¹íÂlàIŽq NM0·'aŸZ´Yà*õ´d» ïmç,*Èãtþw6ôÙ¸vü%-M~–:©¯sýlÈd_YÈ—¤4ϑ慔˜HlôË ¯ïý¢Ÿ«Þª›2KÎf‚­[U°@†r\¨<:oÃYÔìïûh'Ä™¥È»ýE "ä®ìü¬ßƒ¢5¹›‹«Ìzl¹ 0E·fÅÄËè2¢à8G*9_5Ï÷òêp#z†[®ãZ¦Ázn¾½sÏÉA²t."H'k~O‰Ïã¦Ø@Å0ã—Z\ìp¬·ÀzZ§Àl¤Š ‰k—Ъ7ZÐ_›À&¶’áÇÓ‹GÇsz]¹ï±RîÕv-§ïxq儽—¸2*îplì ÒsÖýPw¬²·¨‘Äö¯ˆy)ïÿ}pHÌ¢-ôxFpÉ0›Éæ°“Ä`;xË«¼k[®joöB&' bm-ûkIUáFðº#ë ‘|H†@º4å%±šÃ^/'y>†6Z"“oJjPWµlèg3éÆqð¡— aÁáCž¿_áч47„S¹§Œ ;[=ÖÞ•tu§ #øÀ§Ÿ‘¼³ ñ?úä¡'Õß p#˜ ôÆ&wóË&”RÑ÷¦ˆi²ãh;i¡âYmÕ}…ɸµ9]¡âÀm>îÒŠÛ›Òpç…§.Ó¯Šk(ŒSJ°¼bf¶ËßéÔ7õÃ-EbdzoõG:Ò†¸õd 0 L*I Oî£nØsѬ­ì‡*ºG'„V¢ù•\¡w9grÞ‹$_¦ï¶nd0}ŸÉZï"ÊQâNùsjÈÜû=&Ø~0VS+@þyƒfÙZÍÏ>HÓïbÀ¡9ÃBçkì2Rþ9æÑŒøê‘ߌvÛF̘¹ ºÙÊyn‰ÕOÅz.˜Ä?+ŽŠô¥.A•2ˆ±°[H÷×€Ëkþ¸¥ÍLçSæÛµ®®€\hŽ #ÓüGÒ¯H©æù» RvBËØkà/gZ—ú´¤Ìë¡µË  ¹x=ô…žžÜÙ£D=ô’¦_I¥ë λAPRÔ©OÚø¸G /ïx'ÈB±”…ak3ïr½O/óÁ,{¹ÆjÈïÀ«2'þÝÒÙ3™¼Cd¥± wÓ1S™¡¸¬h˜Œç„BýùnZµ*Ö-(ÎR¨÷Ÿ?¸|êtß2×0Ï \΂D3ŒôÊx±ô&Wû½.×NΓ©ë&Õ@wBÎz‹DÔsG©ú¢Ê3Â`ImvçÒ¹.O×¢ÄðØLxDÑ$Õê‚ N“·»ø”™f7|;kÎ||‹“fmtvéz™µ5#CQ³×.L……Xͨ´9ë&yùBæ ‘“’œ%'“R˜]Îø÷ÁÑ#èµãÁ{ÙeG%¤?_ ÍÞP´2–ë{²“bŽÞ¥£¼ËKJ‹Ðûštie²GÙü;sØüljÛ O3ØÑÿOJ Œå|^ï~­}½,œ2¢›ŒÆ ø‹ ÐðVJºFªF ægŠŸþ{lÊy¹ôA2m;ÍE8ÚÁ“ºÅ.sˆE—~Q qà¦`{7âTŽ<«(ÁЩ ö>y¯»Ûd†·›ÐŠãTaL5Ø÷Åö–Íõ{|` endstream endobj 1277 0 obj << /Length1 2453 /Length2 15561 /Length3 0 /Length 16983 /Filter /FlateDecode >> stream xÚŒ¶eTØÖˆ»[p ww.ÁÝÝ wwww Ü-8ABpw  îÁ¦ºû½NÞ7óckµŸs÷¹·(I•TEÌL€’ö®Œ¬L,|1yU955V ; %¥š•«-ð·Rèìbå`Ï÷‡˜3ÐØ$7v™Ê;ØdÜl¬ìV.>Vn> ï œùâÆîVfy&€Œƒ=ÐRÌÁÑËÙÊÂÒ”é¿_4¦´V^^n†¿Ý"v@g+Sc{€¼±«%ДÑÔØ ê`jtõúŸ4ï-]]ù˜™=<<˜Œí\˜œ-iV®–  ÐÙhø«m€‚±ðßæ˜(j–V.ÿ¨TÌ]=ŒÀÖÊhïrr³7:@ùªÒrEG ý?Ærÿ0þ3+ë¿áþãýW +û¿MMìí½¬ì-æV¶@€¢¤“«§+ÀØÞì/Cc[¿±»±•­± Èàïâ’"ÊcPÿéÐÅÔÙÊÑÕ…ÉÅÊö¯.™ÿ ´„½™˜ƒÐÞÕá¯úÄ­œ¦ É{1ÿ{Ä6öö>¿±¹•½™ù_­˜¹92«Û[9¹¥Åÿc!ü–Y]œ,,,< ƒ:€ž¦–Ì%Qórþ­dýK êÃÏÇÑÁ`jègeýCðq1v\Ý€~>*þ!°²̬L]&@ +{„ßÑAb ù?Äg+O€. ˆ„¬–¿þþý¦â™™ƒ½­×oó¿šYQ]SRY„þߦÿU‹Š:x|ÙXŒlìì.Vn/Àï)[ý§?\¥íͼÿÔ Ôkvÿhþ³'´€ÿ¥à"0@ó›ïz,œ,¦ Öÿ߬ÿÛåÿ‹ìEùÿÁ÷ÿ[“¤›­íß4ÿ5ùYÛYÙzýÇDa7WÐ:È;€–ÂþÿšjÿÙby ™•›ÝÿÕJ»ƒÖBÄÞDmF^&®ÄV.’Vž@3%+WSË¿iòXý¯µ³µ²*9¸XýuÕYYXþ´k¦6 ëÄÄοU@Ð*ýoV {S³¿vŽ“ `ììlì…À"''À‡´œf@Ï¿ù `f²wp¹@úÌœþ:Z.N³È_¢€Yô7â0‹ýF<fñ7+€ùÃoÄ`–ú@1e#PL¹ßSþ7ÅTøñ°˜•~#Påß”Aå7b0«þF |ê¿(ŸÆoÊ õ/âeÐù@µÿF K“+(…‰³±)Ðhîú‡˜ó?âþ¯3ë?b ëÿØó²ÿ+ÿ?¼fÓ'(·©ƒ-ˆÿ•ppü%±³û]ß_ì`6û‚RGu üŸ \éÜ@«õÛ4Dóß. ÚÌ­ÜèA‹? ¨Ëß:·ôr´Úÿa’YýAEXÿAóµù‚šü³Ðì~CÐÕÅüGdÐuÉìð;7Èô¬þ¡uâø[ òu½köÿ3{ÖÿHÿwò ½dvŸÃ³=ìÌNÿBvP6'7×ÿsƬ¬ y8ÿAÍ»üž&ÈÉhgõ¿ÇÈù— Ðý™q€†âbkìbùG PE¿Ó€.KfWKgàg jÏÕÃáP ·ßTåøûw1upþsF y»ÿAzüAdPPÏ? («×4_ïß5ƒ"yÿ©à®S7gЀ]ÿ~)@wÓñßï?è 4EXYt0åµþÚùP/BàÁ¸;ÉÞÇ¥~÷æFÂg ¾ÃñMצ‚€£à–'-W\iÌR°VR<<‘@"ŽÛÆW´‹ 3 B* ÿ„©ñ½ÒÍô%K~R,nFþ¡˜× Ô9iÕ6¥ Ø†j¸vуÎþ“" qUQ ¼âÁ"-/ίà3E)[e>˜ù‘nqëàˆ D™ž–™GjÄ–“{Ìš. £…Å~Qd΀ùð®Ÿ/L´+¸ùº'zØ~YvÉ wƒe(‰þD½ÍP2r¿"™ìON!àÌ­Œó%àö-µT\rñt‚­ãV:NQßÑCpjž.”o)ÓÞÜ#è¸ÄRê,Þ;»âx$kNŠæ<c¶Çjv܈|*_!æ=Nx4E„زfô”Å¡T˜H{ë ÞÝ›mÒ®$W’a¼öóBêë& Âp šŒFÕ>ú)ÚRQ¼wÎHÖX·ˆðÔ—~š&{ì@vkË_BRM—§“µÝØ3u‡z¥hÏ´Ö]_碷z¯Ö+¼qJ~†•>©BËûd¦)€Ø}Š]?X¤ïõ …@2šˆþô2ø>Þ|!ñ¯Ë9Z`M) ¶ÕAdóvŸëñé9ÒÀœ¸_»N/Ø[¥È8W'”`-¢iF5½ÐÞã,”Ùwj*Óe],=|³õ—¨C4­ £É)-‚ŠU–ô»¸¬§c&r_ê¤Óïà%’uçS8ÕpÈ(ÍL¸Ð°{³˜È^Gj¾¤õÕžzƒM$]!Œt%¤ÍÔ„ß#}›vÑxÑzQPF”øð§û£<&0c±\X˜7¢2bDc¦š³•b^IöÓ‹x&BŠ„œj+ç;{ÒŸWçD=üxcôF¶Ç¢±í‡Z»×¦¡5nr”Pk¥õÒÐL¿ªß2ëÏÍ3áQâª2™ÍÛº ÉQdvwgs °¼žs“WÑFÞ–†3bìnz[`º±sžw’Ypà;ò'«'8÷šÞ}¾ØÍ¨…)óäÄ…¯m=ycþ0Ƨ£C­öKY_Lž å“LNF ”âÇnG«‚ÄJ—18š›6|bZy&ý‡ÞFmƒ9*ë ÏZŒ{ýô§y±{l÷Î>]Q—²þॾVúŽ|Ráú=‚kv¦Úq`W_°À=m†Ë›I$d!IªÜ¬<.J·Ëý3^8PÌðÄT¨QuWPTò±Éê!ü@ƯªAÐÈáUÒ¬_ë“Æû¹Èú½ZL´;4r6¶Qy¨;•É*¡ 1K5è|¯Åú´¬âíZ¡«½“0G¨åµ²—®42Ö…<ÓY€¹\ϼËnÜ2ÅYwbÎl}Éþu<óúsc“K\(/Ýi Œ’±ãy @Æj!.„ ¥ŒùaJàñrèÕÌx)¾CkpÓå¾Í– ~¬wB/[Ö«ÿ©è„öÍÏÏÑM ʨ©Ì¤èÕÏñ×fÒ¬¨ñ±:†+J"Êíúˆ"Y‚ìæ]‡Y5C)ä’ÜqeÆÒBêb^¨½-PW:©(¼¦äX5oÈ Ëð``ïXÉôP…ÐÞʼniºtŸ\­j àñ¾n< 6me*®}É*óÄËÊ¡`,Zå …›Ñ¾?fò¡Ã_À‚(€Hüµìnªu𨄡¡?ÅD쮦ûuï¼2nSZ©ðrƒ¦(NÉ‚Dhõ¥|{ÝRF’ãäs“”“Òq†ò-z®‚h+ßÇ¥'Oââ×§æ]o˜—{^yÑB' Á÷#0›cÞbé/[ôúwœ¹ž<ºÔ§uߪ~Ü>C øâ8аESâëÙg)‡KRïkr$r~Q2¥ÆÆ½Ë'þ…Ÿ#5±‡}Èô½Î߇¬fE»ì*g8Œ¡çò{?wðÐy0 ÑòkPíó©‚XÍœ]ñÜã8Ø·ìï« óâ»ôè™^]Q«†gµb¦Ïm_ø° K„â<>>Ju“JÈçpǶ]çQ6/ ŠÚî1eô.зrtCMPa^¼u¹w°}]xÐLøÜdìYÓøbÑF1²mê°YnD៾D†oêQñ¸of¶Äs»šÒ˜Û"]Öô‰áÞZ¡X§#%v½Iñ”ñ+î u£»ç‹Ê#;r4¡:ZëO{ᖀȅg7{ $Òð«Ï^3Ž›ž½ÒœdŒ¥&ú«^½‡tÅŽúk&ñ˲«èÞòŠ&zv˜(F‘ !krÌ,®Æbíªó£ ³u-#²kÓ ÏœòãÕ´§î7ŽØÃtÁ|²ñ0Ï_·ð?ýÚ2»¥9­ïÏ‚{¡®-œÆ•ý̧uÕk^$¨vÔv—Q´¨QBá°¥xUÊÖ gNúØ‚NåKãù$q=6Õ[ð»Q¦¬ð–7¨:Š¥xaµ¹ßùRYO«Ù{Æ;§|Yq7“d€.o¢;'7þZ,uCJ\ –­çÀ„WaY"ˆtë«bŒÊ¥!ïÚA2fkçípiÀ©KLJO¾º,ÏôéÌá. Q+G[-¨hZèåcÄ…)æëQ9чäËyB±š\Ùç Êã Nåû !Pö“aq¸( ú¸ªdxÉ•h=0S‚LìMÔ×?`¶PÏ…}ÛÏÑ6Fù[Œð[Eç²Ì®˜uo¦ÎÕ"Jý^ôN^ºA¿i$;¶žd ɔߪeÜ53Z£¼–7#ǹ…³ª·ùÖ˜]Ûý‘ë×O‡ð¾ÿÔWue0ë^N\sßKüH6ì.ca1z³a¹é—§¹#“wHT̯:ÅþØ×¢GÛh–á7W­'ú;tþ"aßÍÈžç祙çU›/$ñ‡“^Úí©UAÏŠ}uįL;:œºFV¼/$B¶L؈г>ï0s¥zÒTPÏÇhãNü§soììB:~¡Ð'KrLTuA}f°\Æ%ó”0Æy‹Ñµ40Ôs¢6©*îIo—L½Y'Hü92Å‘ˆ.ûyÕ¹âg•R–I… Ûm0ÿqnUo[.=<IÞJAôº.:k83®õ}•’=*}Ñö¯Ùee-SyWÄŒOBIlÜìÜšìI™,»£ûe'ÈWQfs†UY¢Q©s“\A:f0gmK°´úkùéÝŠOÅ[ð4\L–˜8| þ¢=wÈE«Î¸y?Ý͜ުӃ®@W¤x"c«†y+ýõ3RŸŠ)ÈtäÕä®Ì•¨=©ÿsˆq˜ìúD¾JÉ£“5ÂdðŸ¼ÖAÂJ±ïõbL²i¡¸š7JÃgRsÒ4zñ ó¼ À‰eÙÓtоoßܤaÚ&cÉÚ$Ì~„ƒÚÒÁ™ÍÖëÆ?ŒC4  ®ÕeeúÍK ‰©’"ŽH9ÆÁJÛaå/÷sbÞXóF?‹s‘r'ƒ—Cr, qÔöà 1]ñ1þA·gÖÉ}¹ÉÞH@†×|c-ý†öS<œÜs«h+j:ؤnx]"ëÞ èëú'‚7"4s•R˜Ú³i3êN9ÿm¬ýógjųWe’.c¢W…©œ§ÃŸÍ¹žŽg‚LØYZBŒ"e i$(¦pv_ÇŽ!µê_ác#Ço#±Ë>ëêD·µÎ²ßêÖiþž/)§èç‚)º(Kø^²Ð©vÈ*YA9§)½pƒƒ=â¹›•b0Ú³²ñä:¼g›F‘ø^]“¾»>fõzvIï"¦ò¤ –&!ª¾»ñÈ‚âîtûÙp$4ô‰Jzgí§ôÆ'ŸÊ9ú驪¹<ɯ’’®œqQI/#.ш9Ðz¢V•¬>4’£åý¬Ûœ,î…R)_Bƒ/ŒÐßIoŠ-îð‡…<ðè‹—_{ z®Rä,´´Z¡ó¼}Æ?ŸŽ‹ÊjT¡>ŽONœÆjX¼] ÂwÔ!ëA è v"º¡!Þ²—Dhæ©/œèÜ>Ùè“ç)øÓ¡ûé–¶]:þ˜î±|§ \nM)æ É%ìÿÚª¥°nÔn«@?Äűœº¤‡E*~³Á‡Šàj\]N‘žZêß_R¡˜K#£Ü#IWºL­&ÈœxѹYö.²E1ën7+̸¬`ÖèÚô;SôZŽSå pÞ5­Ø,’z»ÆŠ`Äœ‡"ˆŒgÂà³ÞÉ0~Ò¶N:Ý-*ˆÒp ’\6_¬MgŽB3›mØb¸ëµgc bøÚ‰›‰½èG¢ñ]j¡>ì¾eý' ò?Î þ‹ó%ÆÄúukQò5U«Cǃ›ÕêÔA]+7ûÇ®ª®hí³ðÝdvv !tW8qU2ᦥnÉ6|×zÛÔI¹ÅKmÓÇX¦›*F=6³­Ë¹í2ÌMZ·¤ÕÆg<]Ã×nlÏżëÏûºI×OyÛ@օŵ\éOþ9Æä …x&ÍcÃÀ¢Î‹Tà'Š“×ÈASdR÷ÙÑ÷j¯ŸÞÍ7Ù¾NŠUˆ…}e¡ë»×Œ쥿jô—,Ó$°Ï¬7ªhÙkîâ­º½ ŠE»Ý‚‘אַ ¼§Ù¬”(7GZÚ௳ÜHÓ–ĸmîú«Ä§· ƒ·+Ÿ\ž:p/Ù]w~‡ˆ[tqxG“¼Ñ´Få]´D¶‡¶óÉGNë’×é:B‰~ÛãˆÜId‰H/gÙkÛ®în‘L¿à¸WƒYšØ!HÀiìM'+ÞÈC!‡ÇÖ„çüÖØX`î´ ¸-‘¨íÅ¥ˆåÒ|²¹2ê£çt1?™ì,ƨÓàžÇs€r™BO á.÷`'t-bë–U¹‘\EÜÐçìD#¯Ü 6|ø)ǵí:»AÇ(¯ ]ŽœeUhµK¾nx5Ô×þVG‡K¸°’É(¾<³1§øa\ Kjy*òÃŒ·­1á}Ÿ‘°«ÎVrtkvì!Þç½WîôÇB°á­ì]§a3Ì$¢Ñ9Pï0”~öºò†N÷ù+9ºpæM“õ¹šRÆ<ކ4«”5„E®œ"XøÖë¥7z-–¹×®oѪEl`[­“û0g«Ó‰ôÉP((”vÝ ú¾à﫬9.­6ÁW6.ØÝr³à+à‘AÀ l—t‹IÈÚeÈŽê–ì×Lx†?½ ]tç9æoð´AËò‰;LÞ´œ¦m(î…`¬7á—¢«ÄÓi*ÝçjÍ™Š™DäYc*ßæxñåÉ\˜#êíÿFÿC¦µÙ!b-ŒïM?×f…ÑL'Ÿ±kÒÇRDZ n¬_^ê‚R——QÐöR†È}Nª9¿¾DHdƒlJiHsA—Ö7Ï㥥…‡Í ’:ú²µ„77I3¼ÀE[ÙLA³—5ûï›IâŠ5\¤«*Q Ñ☠|—Ò ª7ûwìÏÛ µíÝœ-§ í2P³Ë¤m•Ç)Gøöõ3³»‹à؇ŸEºŽ $©€â —mé)?Ö\’áÖàꤌ»®´çB·€¡v(CMì’aáÏy$8×o [·nSü5oOd²¼U´ÕÙÕßW¼#Åõ;6`Nd®Ó¹ö>BËux²àH­I`£‹ Ñ8HI6LÐM%3!r¬ ,küØ‹BU·UK#õ˜OpÀÁ•ú¼[Øëýc€'5=*"ƒ8B®æµJ4ÛÙ͸ÜHëåÎ5~Æ…ÇAêt;.h>ƒeâˆ#~òbÏ+Y®pà@ÿ^í,©ŠùôRëºÎ%€†¹ØF˜0ðó Ö'Q7q³H%~acml•Óq'ë“Ysä+JØ3aœÜÖûM‹ó™^¤Õ‘zø ØÍC¡ê©‰Í,B§ÁÌŸ’1þ†EnìÞýï_ïs–±‚ßiAxŒ%ª#Ö”¢©–Dh÷°ÊÔ§ˆø“ 5<«âë`HÙµúô’µ˜ƒº{£ÒöVk"x}x$?ùýXKXç¦Db æ4‰r Ú–3rRÏýº¬ QÞ›È%ô¸PܨeÜïÁÄ‚ív5ânö÷ä¡}¡:!çäB‰xg†C,ÔNfXEDæ½)ÂÙeT'Ýp³ªñ“…Øf’VÒ"ãáC˜²¼(¢C÷‹ù®|iÚã$¿œþ‡€V%}’_W‹ãÈÖv”W6ðm€dê3c9B¬:tBùÔC¿Ž•š ú/uˆ]³È e‘žèèÔƒJ.6Êt­w:_&Ø9ÓٿǧÌdFÜt{Õë:Šº(¶¡Ç»l°pÊÛìtï/:FЇuuÝ.¾NàÚ.¨T;½éš²œVØ+˼,ëPë-xMPÂmmÓÄ ÌZrQSú*æíúòVâoÿ2šˆÎêÍSy ¦Æ9掬)Žq*™dí=†Ì›±´ÿ0»-ŽïÙ-ÊÝMò IR¤¦¦pÌí⾄tw•ßÞcS‹åeÝ#MR‚†ÑLùŽ!7a~§ÐŒ…×F\ªÒvoéH-ù&D0W“ %Ãz ÝÛ|Í{êå9eûõ#Ž9y¼ £Õ£àUl€R€~¢5Ó‰^²j¯PìþeD¶$ÀnçÐ͉{¾¬orÜ1ð»œ!Z k}ÎŽO½˜~ç¤à`Ã+úx¦-¾‰Ê@ÒØ+s¸b,NNx„!ï‘’¯ðϨ‚ ëÈת?x’£ ÎéÙ•“9&ð,L| ªT/D\§iÀ#=UˆÝW¯^MCB*<~ßã6Vº—\#TX­}v<²ãªMý8¡þë\ÿ,j¸­®3öc"DZWê*ŸÝ4?E¼¿xçϤb‡éÏ“Çݬ8üå*ÂV˜ÕݸN,¾…NkJ+‡KY½šURy»ùÕ|Ñ{ ‘0ô’M3ax Ìš:4³ÞÞÞÚö¤H«Õ1ÛYº†aÿͯ è¿¶šavkß›|Õf½¨ÿV€ó|«xBHw yž!«®tvlØ®­õDš&A}œËåØþún½7);ª3%J'‚ìªêÚ$$+uŒW M»ÿúì9õ{oùNÒ{©ïżW…«Ù‰éïp’¹´Gª¬’„uñø¾ìÖ¹8ÀðVmöužØN ݨ»Ä»6R*8Ii”¿³hžüàK<˳^J Áò˜ØžF˜ØÐ“áþLUGöò‚%—ìÄ®ÔtLõ)¦§Mn’pCÓÜu¦öƳÉÔÖV¥>yÞ¢X²@‰\ϰŒDÉt¢·B%EùÏ  A¾<#“ } ŽíÜùód“ ‹d5QšO#¹–ú›>W¡è[*7YΟÍ#X3<íÙk8ä™XÜ*¯,!e¥²%œ£Ÿ.‚i~“å”î×i‹°+uÏ›µf‰˜ž‰§ÍJxç‘Úi7+£ËUóJ“Ó—¥„¢»Bóâ4‰€+(WÔ¿c)di´‹Ò/Çu'¾@·ø…M†qi¹f¸ú,I×è çÎ[èaR‹ç®:EPn2 ”Xxbù¾±’P•æõ~*õ[Ö€ù”}o6ŠnÓ w¨ë *cb‹£¿d‚ë7&.\Ì­>Ù¶Èõà·yc:k!²W³ Øf[®KÅ)•âeÁùÆŒl¾bcøÄe›™˜ÂSÀíù®w³SNÄGd‘÷Â=Â'ÜÛñö87˜`lv}·²Ùͤ ²ùäj&õ+Õ7}'Kãpq¬ù·ÕTƒj&Úƒ™äˆŽy/ß`-ªPÞ·RM¦¦]HÁo½J,:ÝEƒ©®xƒ‰Æñˆ­!^™š0•Qf—4ï‡Î ÍDi±a<:¶ãü]óÀ+nh†ãQbài»Ù°R†ˆ^K;çŠ/xHO!\¡­Ž·%~åÑM7;¨HQë4ó®%Ϋ+ÕQ!-¡®+?ñÄ’ ˜ð\Ø*¸ÞY‰Ñ—Z¾K.óbíÿ.€ÏIÙ®1p6(ˆA¾ —*ßà—µõIäÖËQúý@D¶½px˜¶Ôì9‰õ™úq3*MÀÄ«|}—ËÓ èú¹…àøˆ‘M¿†™â¡D«%J%DÍ „OB™ˆÕ·àí ò ä£xóg5+ï$³4ìÂÄhð!Ô6rî#^TÈ(Næ`÷žnÔr¯Í)ÈÜzûé…˜¶³’ö¶¦wè™ãf.´Ð:¦îsš»nwÚŒyøYwœ]-ÙÎýdR„¬` {—¤/Ì2Ð¥L<\hùÈQËðN| S_EŸÚã’Õ0áÔÞç_},]¥ ô˜‘bÂ|^ûÏ¢öc,Ìî'Bua\?$öLHÏ–˜§NQÎúWË„u1Æ ×:f†P$é ¢Óz›C”FïJC'[1‰<ÕˆÊÈðt9"ïCâ:¶ö™f[Û?Ù@”©jèö"°.)åzT"(7È¥ƒ<$ú 2>øUÝ9“˜š³Ö!oð!fLN•ØÊÉXåsÙŸa;ÉÎ!=ø)äÁý%Â'e—Èò"?AØ5qׯ)šò q=w-mœ0í©Žfë]¤Lò]úHó—ê¬p™pí /ÿ†Õ0Ô8£~ßÏe29œ/晞hR• PAå®Ýæ€<2í »2›oT©o]og0G2ï1ؤ†držýÀj¶;]^+CF¿ÞS® îŽ`¾_]—2ºpž¿é `¬Ê±2d·kQ2j>‰~ý( wähìOMW¯bã/ŽÀ¼¬óõšw]¡O@ÔØB§Í6ïWt½LKƒ?Ï”Ÿ ›9_ãÙü§Ÿ`éU²õ;¾µÇÅ˪â‡&§é¿ŒÇš3û]hZPQ±úhÇn¹å¿WæêŠíØá± –m õÎí¡Ežê*JÉ«;*©p×3¼¦ðL$ä æv õ’í´Vq×3ÑKGÉ  <™¦0¥÷Ä´a¦ˆ–òõ‡òº%x»I–™i/ª;UÉåpPïùädZ»;Wx ˜f7éßÇ•¦½½·pL¡†EP®&“³Ù›7rþ¸—Wóƪü劚0œC^xׯrÍ2\IëÍ>_U‚ék]!Š®¿Ëëmo6óO,fp}<ùÅ»mhJ %^ï½@Îó—] wùCkç›öZµ×$½æn{Ê åÚA_>~TdóMù!­z ïá"CdÜ>,nU܀ᩪñ’¥f°ŽÍƒ·E˜¼Ç‘³ï8k)daÏt÷y¾½bÈ`=º„p¿N\oÔ#;ëÁù¦ñ¶µ-Ý{m ›u”w¶àU?+û_â&Øõc›ÇtB¶3߈¼óðo ú(ÎfÝ0hë¯IiÒìº}6Àkîxu¸Ícø]MÍû+×<šÎà­è!÷EŸÇ\Àõgñûô )½tF?hQp? õÛ/‰b’Æ””øÆoÐçÀ¾Æm5èÜJDw¸U'†T¾ôq€=«&VhÕäÏŽ_Õk„,¶•jlYbwȇS©Ã‘Êüžõs’ ÅécRæFªùËÃEúH[†Br”éäæîØþÎ/J÷_à q nM6w*Bm2ú¤§=­ÛK“„ø~ Mit»~´ÒáΡG¥×|¥Y´o`ó{Þ˜¼«‡Î4Áö¾¼÷!]èÎæf,óéûÎ ïi!²L°Õ¸ 2ÙX •3Ö>õ*bí$h¶¥Õ\„ÅŽëÂ)¶KÇ‘ß}+øÁ—àƒ‹S²iSs¹~›T%îÔwôµBp‡Î|¾»]mÁÉ®3[xêÛµV{¿YnµgµXÛž£{ª‹WÓ°Z¸BñeMö 3H³_<Ýêá¥}¸áx=OÆ‚}U#~Ƨ†Ýî‘ ôÔÕÆIÏ &Û’‹?*à¦~Qº%¨O`’!{ßû$‡ v|T«H· £oŒíÚwï~QRÏ•‹ŠöÕ»–ê¡TwÇ øV¾Žx²’ã|àÆÈ÷õØ l·  ¾?$îGeâN™Ð&¶ (ïœZ²¤ð™ý™Ìa[ÁÕëy·ë•]tá8~ùô®ÕÐòΖ‚éƒÏü<Aø»Aýœ¥pñ0ãL®²e8ßè4 ±Ì(k¨ª‰£¨ëÍ¿S;ÛôÛ²Ø=¨Û¼J…ÍiF~Ԣ؆] | r°–áÕ\µ/ƒqÅå˜2gZ”½B±—oì@| íÁ§8nÃùø½:ˆ󴛺­aSª‚ËÖ@ësöÇ#¯í]ãçÏ»ÎÐTq· Œ`cÅRbH*²Î['¶¢ö…ɯPÁȸÅmQ4ü^•!œ#]šê–ï5WQÚ;2¬ÀÜânášÃm6"œ4f>u¬ˆaé LÆ7¸‘’LjC>äŸõks{ëçŽôù¸ÛÈ1‹Ì9ìk×Ähãßóºÿè.|)³KÑ®JcZoV¡|èØè+“ñiýÜéÍ‚ØwaX¹ÎÑÀ®L·‡ú®üÒ Rò—Hù‹JZ#a#©ÇJÖfŽ9áZpr±í§lZŽÐïÈŒçÙHHðn~7CÜ_dáÈò‰ÊwßÙðÎ(“·ûž†±Ù5·@1¼( Ô¬%ÇL–³û)äòÌ Jîh2)`˜Šj‰ö¯dÌEÆwèôToì7K½¢MŽ˜íƒKÏ’ª}9›)¬xš«yµóó@Òoù ˆé=ÈAÙÿü’5B»}[èUÙû Œ/ƒ &¥5ϬŸÅõl;^T³èÐÌȈ —HÿL…Žy3ÙPEÑÌ¡&ü@_à{ãk[G!ƒ¿"_ìcAlh•ÿ*Ü¡1MÇfG"“.—iNSŽZí”&SåóDµïÂPÝ”qVå·|y·á…÷ó#Ö7R•§B®M§\Øâ„xº'jKÏ«þ·h'ˆ² OÐO9œ¯Wä4;Ÿ! –÷¨5»¬ˆÌYæ4CRÄ-ûÖ]Y÷pEnªC$©P_7L»H— ;e®ÚÁûY5s´—ð€ë&Æxi_Ÿ h§‰mãîNâ6~6ðgX=LY¦ÍLDzNð¼ÇÒ)i¸0޵^ݼÃâÌðºÔOïaU-7¯& r¿³Žpy‘v©U Ì^ äˆºÏÆ(4~ÀõÓú5Ykà«I“ÚÌ㳃Œ¸È\âL¤M  xÂ…`ª_ÐZBÖNˆÞÊe1Õf~´îm¨ÒkNß=µèswîñéwx L­x§à`ùfZow!Vîû©|¸çe]ÁIødnÞo¢ø!`ª„ã§Ãf^>3œ¡þQÅÐÉŠ1Ô‹™0þ€iû¶‡ð©¡ —…¡Õ£0gˆ…¦ü2dPô,›¼I†þAü©ÚS \¨‘gŠΧ•äâ‘NZÊ%¨Œñ°zæöF½·¸[!çÛ×®@• ÙíçYÕþ}•õÖì "bŒ ƒØ¼­Ä†Ä½·crÅ¯ÃØùK²Ý~U¨½‰ßO£—OÉúµ[Ò'G7ÒèЉ¨a¬sïIåQ‚+üØ”å†Í"›·ý°ÀnÇ+ [öS1îUvß~wÛÙ00“ÿŠÓÇ}¬Ã¥ƒ|‘‘Q¼mt6âOj—×& s…sQT§DmÝ•f™ŸëÁúÊ…¼¢øðø¥•¤èy v#r¸†û[1ef9Òaå~>L§N++³ §t”†Åê)­m·š%¯……•òö÷÷efíZù±ùE_ö*Q8ߥ„®' W'«§ø3ËÊ p×/»¦2r, ç„Ö7ôÅÞ³8VbÁî”/ÐsqQá b†!†´šS}¬¯P— ÍûŽî%‡ú=božê%DÊ¥†ýŒY‚·œ  ²YGX¬ó.VëâÞu\<ÆøP¯S5Ð !„9 =IIð¦õÉöƒÜWó<[^Lcæ=;mÍ8Èj_:°¯ŸŽûѳ;±kLž8ÏÕº¾'DƒgÌJ£<“Ñk¯Db€c«·X‚>ü–‡s2Ï’msÿmšŠ½cèqû•~3©¸°L®Mê€.µáy â;C„ ;¤£¦Í÷Fò`X5 ˆï(ìhc÷ÄN‚cj2Õ¾æîEó©ù>œCÞ5…A )Ë<0Ð//ÒÒ|!ñ,¾?Ø*IÎ/sFQ«{„#ö*iB¾Š¤žÔ_qrtÕÌ&› IWÃ(­ò“oÁÑAa„Š«ƒsÇýŒÌ^÷}ÉÍ$á.‰teôíî¶þ†Öë{rªäh.côQ–eI e²ryêúKZ¶=um[——Ù5¾Qè'Õ‚ŒøÕF»ÓÛðŠ¹³ò°j­_—ŒÖ K>\&¦QvÛ²àg>Ú{ 4Ý÷ x£O‡?5‰ÃË4ïÉb²%~xØ{œ?p÷F™Õrš+ð+¢yO;ñx<ÝÊi €(äq‘‘ ‚MP¼WÚ:½œáarÞ{Ì5ÿ÷ûgÏÏXÒì” Î}~K— U7+Ò§ $ˆ64èW]ñi ì…êkJT”šÐæŠà}mk #_ó~p¶«Ë·eÏùѳü‚05Fš¿<µ|L›-¦&×ÎtcŠÈzR­B]¢Z;vý¡4¯•…ïÙ[ñî†÷¦@ìäª~3€Æ=]\^~£TcQ¨¹`ñu—ê`áãújÜR‹¹HÏÜî^\…±ú^¼`-†"tnAÍþ7'Î ;—À!VÕâõ(¸û=ýs­)ÅLz "¶ÇÞ:ˆþã2ßWŽœŠCä½@?Δf1IR@újBP'Rħ'ù›ßf‡ˆë›éH†×Ô}±~>Š_ž‰+¨#4s„¨n]W½Eb_YøÂåãÆÕŒ<XY‘x?ŠJjL€'OÝ ¶ ùí§3  á×€ÿ¶N¢@™6;®{¾Œl®嚣‰-Wì­gR’3GîC,¶–Ú7a¹O=âG#†µ†°™£WP‘zÀ®·½]qY!b)"ŒÙt/ Þ3Ùû”q³.rI’Õ¦&¥S·¼þtù˜-ñé܉ÎQ~ï[(eƒ®Õ~ŸçÍú{’^äH +Ÿ4º;úIûò÷—màïGqóµZf¾{aæ~ȇéÓ‰F®? ½’8#N—¥’¼ú¬’n<•‚ÍñX™ñYþ„+:?e“UÚ—ÙGž/aV `™:†OµO—ØØ8Ç¿ß##¿ˆ›Ú±æºÊÖͺš#‡nªZý‹»ŠÍ¹"„žá²IØÉqvô²p}¯j)4ºukˆÚF/–v)8.5Ñî²ýáçI0?®xYa‰x5|¨8H¶¦ò"9du_oAd·:¾nŸ`Šáµàb xšòœQ(ƒ5"m’‘°kÂdß j&]™îé[>•õ›¥Àõ²àxV‰ÚW¼Ï ”ŽEz¹ÚÆÿiRÓ"Ú±êö GB¥ÒŽ%å/ >1 ¶dNELóji×äÓ$mÞ=ÏÁ馟˜ä±\KÔ<iâ‹Zi^Å6£¢±F{´IùšOŠï½r%¼ÀÕ^'{õ¦_ Õ‰)ŸÜ˜…¸`T˜Ð®ö}ÏIîe?[¤Rxîm¼Ü­D|Á.«{æÇ“";î¸èÕ]ƒýüèn-SYj!jà¢"ÿ&ÏóiL‡ìº{ž,&ת¡ãV +•Ï\ŒÄ3„»oüú,„>bζCYNVBuGDš™ôàý§¬ø©ginT ƒt’tßï“-cVƒ‡dOZ. „/Ë쬯1󣳟ꌘP3¤šazœcp/*0 ÍøºlœoøóèñO£Íçܨ^F…iЛµ­À04,©¡¼»$yðÕÏž6ñ °z='Z4«Ïp?1뎸0ó;íÓ;·žd± s P/t¼­"Ñó$¿~µ„ÙKà ’º·O\ÏŒ˜±Æ.~ÌYbž+ÝiÙà(pïÒh6%ÏpHR°u„Diˆd¸K>[4Ø…—ž¥Yr€ß3à/†fµiˆ‹ ¦€þ¾wóòP1pÑj¥é“dÒYŽÍf¬-QÖ\œ­B°¡|ú!ŠãF45•áô凒BÅ×üd!HõZ–2唥."J ö ‘E3>W`þæf—ÍÂ_"6Ü’…÷¢òËl&¯Þ!´ôÑs$„¦Pt%¸(a®d„º>Ý{¹Qw•®½F;Lèíq^¥ŸSš¶6…‡9ÂÆ“¨\3á嘑SŒM^Êw[ ¸Ë’×Eí>K°ù¶ÚÍ|À\P¥Þ/ƨОÊuÖ ¢¼ï‡×Y躥)=JöƒØ¾…±hÙŒùBl~Šÿ@í=:¢Âô±àÚ´mÛ–( ’&±]ç ÞLQ“‡]§Sälj$.=ð¨Èïw…±¢XŽ~\Ž ©¼OÓEâ[w™LCMå»ñĈx$îdna7¶l¯Û#nx±T³™å qZÅSKòv¢,òóÎûT]MíÄ'+1 Vï[—Z€°šœÊ9xŒZìí, Ù–=Ÿ«âb¾¾^öõÖ%´žNÉ¢¡‘6í ùeV”ç18‰ÏÒNÁ}Þ§ÙúÊâ—ŸÇÈaf¶ð%vôÑe±Žhæ&M¢•À=îS”ɦ‰7ýc. IVQ…» 3§Z‚cÝ^®¿M f0Æ(£˜„§é|0 ?Š!‚Œtr]Ñ&Å­Ì!4Ìr8»=h>ˬººu³ÿTÐd^Ú>[æÔÖBʰˆ.ƒ(’»žž kÍ*s+Å â/nI×­J7- §†HØ;OËÓÚì )šÏ/gL €ãЬ¨[ª¡jV*òË-®ƒo+é9^ûRk ®¹9 ™Á…öt¾{`Us[£Tí—Ï·Ñ^z©Ûª'48k;dà³u#)_ “â=“§}iÜÕêʧ`rÝCýÄD¬') e÷$÷Â)ÐbùîQõGº[ÒÛ—Èä“àÈ9¼œ¶b^LFI³4w«ƒsªN âÉh|=ôdˆ؆åo<õ‡“ÄòºÊAVð¿ºÁÀ“!ü·3.±ƒ&³Ÿ¸èà¶â›üÖí(¥‰ÆÕS¬>íÈ}Ã?+õÔðÂ×A¹…~q;á ±OEá"רo 9qq®/¤&Á¯ÒîÊiˆ¡äôzù…â„h9*Öd¾/3D?þ¬#”±‹]»iVþí´ ¶‡6ü4ôQ-ÿrZ‹EIKô°ˆضMZŽ_`(øà†)Ò3TÑ>h׿=5 õæ­Ã¾~‚p!‚9ͶNçwWhñ‹ÃçTï«ïf¡!ßfT§÷È£Gʉ l)æìð;‹ƒÆÙ˜dó­úh®ÕŸquš¿èz­[YålJ /×ZØr…§°2R:ypEýhŽ­EîëÑIo¯×dì gÙ¡Eƒ4 †4]'5 ÌâÀ½NEû£iiÙȼä"a—ôrmZšsy^/=çîSU±g£ž‰¡P¹Wüpq’õ Vú¦,aB3v;â«.ê+Þ‹Ó¹.Õü¤ÎAô¾¬ŠÁ?ÃU’oÛ0¡Sxë`Ó¢ÅÍ7ÕX% Ò˜ùxžê¬‡¹”´ wsˆeMÇo}·W(z³¶©–%Âa©ÔÚt}ËOûõ…'/ëݦ÷>nù õ¬¸cOK!aÿˆì0Œ9ÒVÆ}Ud<k”´Õ†Ç{ʪȪ0oâ/‚ÞVú’‰ 9Á÷W7?Úˆ„ÚÜÕOÂõøeÜùÔÃî J#ªy÷´¦ÁôMé¯:ý¢>õoÁN ~$¦VP7½²}ñmÉæÌ¤DÊâUÝŒŠ`¡÷¾¨d|¦,SF¿TâÕûj<¸ïu#ÍgÙªz4ó¹Êç™I <üçÇx¼@ÜbdÄ#/íÊ‹Xµ¡òOBÏßa4¹4°“wzëÛô‹Òà"ÇH„ÏÝ‹j'?@$ÍNi¢j‰Ì¾N4±G=~£cË6^r”Ç™ätù¾Ì6n ã·§[V—ŒfNeU­:Îóùý\Š›d¶!XRÌãÍ ûM¹p²æmB“ÁamwÒ«,¯Ô`üµë‹Å-û«˜êR,U9éÅ{( 9|6ÜáÖŠàÅÞ"²Ü;!ô‡‰Ñ²ï‘Á ;,¶o3‘ó3ljÏí=ÛwR½Ÿ¹\ÒÏŸ¤:¾M,ò¤B}qÜrÊ­W5]|ºˆ’f#§ÔØÈ~ÓU‰è±gÄ1–™þšg÷`OIëøÕ‡?·²mNyC ñ^W~3Êž7ÆŽQãñG]XL@™Å4Å$ñgIýåàË",¦ŠÖKvô¡*‰Ñ}í,d–¡3ïV_Èí­„põ€ ƒÍ×#º×镉9ýÑ (*%¡«Ê»®¶ÊônÕwý âr{·ôŒ¯lÌŠd(Lagö y}ýêËûK’«6û øƒ¿p¨š1yÐÀ/#Rô;Œ¶W|¿¼pA´ Õá|Ç’ ðZ4Á˜BŸýz&Sº ³Ïb=Iç´ô¯`e¿ƒ³=Ào¤7Õ¶2˜ÍIg›ç»Q¡òèþ¢]ÿ¡¡4—ܰLiú‚‰q’ñ§"4³j •M5T.u0ñ1ÿ×û’i>0xÄ+ÿ.¼x'n¶ÒÍÚ{#•q‚ X‚b<@ €ÁR@…jˆúi™ÄîÞΈJ ºªfɬ¤ŸèM,}‡j4ž(¾¥¼pwØ€CÀ¯sû»%sƶtoßÞÍ÷ ™‹bº¤Pµaú Î6=¦¼l^1ÛâKÙ"êñ endstream endobj 1279 0 obj << /Length1 1401 /Length2 6058 /Length3 0 /Length 7007 /Filter /FlateDecode >> stream xÚwT”[Û6R"ÀC7 ‚¤tw0À3À ]Ò ¡Ò©H(%]Ò " %!ÒÝ)~cœsÞóþÿZß·f­gž}ß×]{_×^ëaaÐÖ㑵ƒÛ@”à0$?/H×ÐÓã /$€Ç¢Eº@þ²ã±B<P8Lâ?ò0eS#Q@ 8 Põtø~ ~Q ÄÿÂ=$°ÔÐàTá0EîæëupD¢êüõ °Ûrüââ¢Ü¿ÂYWˆÔ 4ÀHGˆ+ª¢-ØЃÛB!Hߥ`—rD"Ý$øø¼½½yÁ®^¸‡ƒ47à E:ºÄà büлBþŒÆ‹Çè;B¿zp{¤7Ø  .P[ ñ„ÙA<Tu@OEÐrƒÀ~ƒÕ¸?›ðóòÿîOôÏDPد`°­-ÜÕ ó…Â{¨ ÐRRçEú ¹0Ìî'ì‚€£âÁ^`¨ ØøÕ:P’ÕÀ¨ ÿ̇°õ€º!¼¨ËÏù~¦Am³"ÌNîê !x?ûS€z@lQûîË÷çpapo˜ÿ_+{(ÌÎþçvžn|0¨»'DEáeÂûÇæA H $@܈­#ßÏú¾n_NþŸfÔ þnp7À5$jAýáù#À^éá ôÿOÇ¿Wxüü€Ô Ø@ 0¼²£ÌûßkÔù{@}3Š~üèçïï7 Ãìà0ß࿎˜OIÉDÍXëÏÈ;åäà>€??À# ÄÅÅQaq ðßi´ÁÐ?müG¨ ̈ÿîµMuìõ‡ìôÁü;—&E\ÀþÏÍA [ÔƒÿÿÌö_!ÿ?’ÿÌò¿òü¿;Ròtqùågÿ øü`W¨‹ïЏžH”4à()Àþjù­\ ˆÔÓõ¿½*H0J ²0—¿7ŠP‚ú@ì´¡H[Çß|ùm7ø©4( ¢ G@Þ-?ô_>”¼lQ÷EÊ_.J=ÿ.©³…Ûý”™€°öðûâP\üùQz´ƒøü¢1ÀÇ ƒ#Q!j¼@Àî÷óL…@Ÿê€¹@ì‘?]¿­ü¬¿Ïï§ù_Um==PNä/f ZúkýKéˆÄojn+îTÞrV)Kãͳü{~±5æ‰IO´0’õsž¿£úÍŒ£îrÖve”©Ú“%‘#4œ;gC>æY!s)ʹH4Åž%¹=žüþóÜÚá£hjÌÒíÝDZ"k3L3¶$£‰«ÑNÁÕò•‚ï­ˆUSñMÀ(:e1wˆbå¾5bsc¶E·|–1Xx n î9½0cäjkçX/®¬b9YX£ÅšïàFÍi±}xñªˆp2ú ZíHTE-Ç͵8ó×Ìoù1õ!Ï G¹0g¯§ûº¶<-NxåÏç}:„lIÖ ŽEcºíÈ&s°Xs…ôA$ù½‰ŒqV]6í“ß6ÛΪ3ô‹«okb.„YÑãØnCZÝS÷hÍåÕßõ9iMýèæXùàè{Ó#”+»Å=ÿ O£"”p¥RªñMêÀú„ÓG¥Ù4®s·AÃIÎÝêë·zÒ ¶[&ä›^Ð-ñpµzš^ó¬&ë±3c\ÑiìŸ'%m=ño‘D+¬Ek{Uí¤Z\³æ¼ýŠó¥]ˆ„ž³K-b4'0X·°ý—zÿ#”ÆëýŒëºá¬‰­S:Q¯Ÿ·ÌqË‹ Pàngðì ’"eS?)<äš%C2ÕM@GÖH-Ü]ôD„´Æ)מjZF!ë&g¥ˆßãNHÝ‘kÆN¸4ŽdRydÚ2Mº“Êæ‰…}YçíkËâ ¢1štÖmbé#M½pš ôGÕ£æ9L Ó¸^ä‰Ã˜iº€fñÔ‡G¾¿ðÇÈz%æ`læ¼G³L{?Ñïu·ÊŒ~ëdúÙ·–Ü›Z*£ C½ù}¯C˜åe0±#¡Ážü–OÌ\é¶²–LGùnKRÛMáz~9ei#åæ¶¡hÏŸ|sa£ë>Æ9Ý¡ƒýÕ¦š°ºFÇ–«Ö´ûêËõ` ×r6el:&có³Ð’ùeÇS …Õ×öóˆù‡@Ù%µý…†Ó±ÉÐiGÉæH­C bÒÀø†Ø/×V½¹ÇD»~"‘ÆJ]“ƒVMªÁ¡ë¥$Q& ¤Xs»Wc ?J#íO¹õŠYj1šÛ¯ÅûŽžÁM©:¾¨éÕ'½Œ©u+¼EÆw"&¦¥õLB¦°–sÓÜ š0ݰ>$–Ï+jÀôDkÖ¡·)Ù)O*É®ð©øZ¯‡Žb19Èä+C‘ôôº¬¢îÕëoDXïÜîF̽žGsVíß°¥  Ú}¦G¶ôüùÐù«jÙd«"ÒL^÷äWÎÚW¸í/.ZiØð¬!M£9ÞÛÎ…îŸäMd[Ö®@©»Ë&sb}AäpP9ÛŠßM,šIΕÌSs§KJ;wØù!\Ž#-Óý)%tiépüFTÀ'݃@f & %Ì^¿nõ×›Wµ.ï›rŸÒÎv>K]7µ›$e%: :”…fàÓSnÚô“ÌT§¥¿¬ƒQ}´˜i—ÖŽ L˱k«¥z]#7 êœñ™û{AÓ"º¬ éÙlû‚ôì8û1`î÷Ú—Ûä†ÞÓ >&ðØ~ôæÊ„Û¡ÔÛei*Pƒ’ƒZÌqÕ *E€y” úF(ÖÖÔAš>ï+¡„ufÈjÝ\µôi¡{[—¼ï ,—ÑŒk¿œêÍ;GS'»AGçÁ‘)] ¾ê'Ò¶W2Ôªìš'(žlºã- {w“f4Ë Çž$1_N ÷aèŒå*å®`ÂÆßXwíMaÔ4!†d8Šd“GZÎò 'Åmuž&ÈâG‘% 9N‹pµ6~jõR§Ñ•\žÎå‰Â˜J›h^å£S›ŽˆpäÓÞé&Sˆ•*ã>_#ñ¼Ò%Ӽタ¼ŠÐJM¼­é[ñþ@(“ÒÈL¤3ŠîÎMhæÖÞÆcăÓ;?’#ž&¾$óèO3üyäjí!ýòXŒÆPoðᡘ¿èÝ×C†[<ƒy¸–§g^!ùiŸlå3‹%ìPšù>Fèiß7Üì ~®bæÊ©»³°–>ogNwãëv§Œq<Öîj|ô©‚É+‚šO²•ëÌ=Uï v&c'ÚçêÅ€{œ]Kg<‘¯9’¬4×Þõ-h±9)>i³'ÒÌÚÀN/4þ5)Pp°üeßXQ—~Gb¹wØ”µÝì1•g•?Z©G…Qê'K~.YNöab>Ž#|XñˆÍ¤ºô᲎o7ñ9W……ª©bq× ØGÃV¸Év$uW?¶s‡qYþö›|uR™È‘ŸOõqø!‰›ïˆÒ»kÑ܈x‡~Ç?<ÖÙO+ê¯^„3íß¾ì¾ÁÉ-¢FÜãæðDæ“æ DB6I}±dNé«oÒ‰§ñáfm[62Êõ—D°˜¡¹fÿ2K—T‡zBLe/<Ɔc{òå Ù)Š!EaèÖaÿ:ÕÛ7Í[xVÏaXƒ{™ Õ[U,¯'Ð ý"´Ÿ’MÒ*¼hI^v7ež2uPgÛd!ì¾Uî•#«y×)ó¼ƒQz¹U6Ú7÷¤’â9¥‹/ñ¼^ÞÇ(K88ýÔç-¨sûÕAÉYav‚¾Þ^5õ`QnW†ƒ-eA·Úh»?ñG%.È]š¡—SÈÕ _â‹À9s½nß' À?=s(˜o¼@Ó⡲ôG¯e›¬iˆcK4“ª8H«!eg3‰ Æ»n.‹¨¾ÄÓiês»°ñÉ5Aì2¹¸×{Ö±õó¾]æ­Á—µS_•6«³ûSõÌâÕ¹ צ—\ÊøEùÏåÍÌ«X„g#|_s¬-ïÜ2¥1g Qºf^äë&O•¡Ž»—>Oí¬6ÍBß2ß×µüîê÷úȺÌí¢¦ŸXpÖÆ<Æ»Q»jØ$]’ÚšøY$k'?âßÉtWtymшÀPšî4=±=v|8ìZgq1~¿Îy¢.5ñžËÝm/ p´š”îUõÛxl³á: Y•¸E²êè»d ›´äª†¶1ã÷ŽÉΑkr0Føð ÀmýUÏ¢JÞðÙ»ä>Å•8œ0AC¨Ía,ˆ*›à}lÿUŠ0ý¾€SX&\Žš•”ÃTss#œò-=µ{ûª,^cR2ÒËÁ‚â©àÇè2í…yø;} 7t¿¬o¤Q¥„%æÙ€]Ú¶š0†TÅœ‹ U†™­ûx1)êvCF ÆMǘNñ2H'È»d«¥È™·K2‹N™NºS‚ŒªóM¥ÊI-gˆqˆ ®·óù"8hwàÁTgeù ¥”äO–¯Zí 7 Ò!•ªy¨·ÑB¨C´&‡¬æ™̸,l°Ç—†¥ÛwW"ã•mJ7éáuY*_„2 ×V#ïHò›%–#Ô- ’®¿µu~¥Ù1Ó_érb*s roûFæ@cËU\Ê?‘ ÷„§*ÇËÅ0<¥N#à­»#¾zŸ+úË„ƒ&žÅ1ê‚?PI‰ñó‰×Ì”Do³;ïMƒ7z°ñažþOÝ(Ã= Ÿ¼×iërwÙ°Ÿ²wz ÒÀ1Ax÷‹Ï·øÛ ÷Þ¾˜Q™äN½¼=h{ÆkSx‘ã·ííFڌ޸ÜÀŸC;ßõØ“J±H_¹µ§¸†§µ“‡a 4 äôŒå&ï»qºöÄùð*ÞéÊ;µÐºÌöÖ‘åü†£j³Õt“#ùcŠÎ­ÐYYsg©Íâ£2I/¨ˆZýeDñY„ˆ3/—Þ¼¼­¿QôíAók‰§d4ØäuK’|{•údp¤:4­º&–ç¸h.[²§”×áMÞ²@FâîQ´4Ùø=®3PK¿Š–ß0z/Ò$‡ús’ò8&¯Ež 5ýbAC—J³gŠZÈÉ9Óáœt«h³Á¤~‹ó³Ïµ¡¡…¤G¦.Vþì”F•ûaÐ|£Á[2‹ wMM–Óú¥åÆ-dú7Å3CæÔªS­Hî,ºD²÷‹QÆoKÓǪçÇ»Êì˜Ji¯u®¾K÷'Ff…niÒÞSðï‚ÕJÊß1%OI×<‘-/âkzbåk{ý¾û®2œë g›ï=¬«·ÅéPLAÊ–ÁNA ¢ÀÑc!ß7Üà;Hsê3t^9-'!±ªÀë Ø9)¨èX÷:³;×;,ÝúI}\òÕ¦ù¤ÓÔ¶Et‰öáÔiß v*µÍ•ô>7¦NÒ¶C,fß[Å•„Ç ½!Ü+E]”Ä׿èŦ³@mX¡Fu¤­±vOG˜>ć§bÄÛ«á\æ[Ä-aê#ÉݶG.¹gÌæx;Ç›¥7SK³²U¸ŸÅ)Õóq†|†\ÓK:™¢Í/Ëcñ‘:Q‘˜$õºÆÑHI®Ú{œËîwêžÙ?„d«zjµÚl™toîc~=pt>p)UDç,ç~óãÅQg4&H'÷žxPnkù1ï~þõƒŽäµDÂ!t:j8ç²tśΪ¹‰J;Ãt徯Aœ¦cP Æ´=}<‡6ÏO ³¿ßÜŒ~wÊÇÍ%Ëd1¦wªŠ{„oÌÆ®ÿÆM÷f̤´¥F¸îyÊÄÒûUXÈ+ƒZyánüÜ|³È2ù¨Î·Ä±Þ4ç<«¹V9"®ÃV^ÙéYÏ Õ^©ë½­'‰räz>©ÔδÔö¢Aº%¬–Þ‘óÓ1óÓÍ‚!QŠ_ÊDH½Ž^äKëŽ$]—ÀÙ’œ]Þ÷> ZWöÀWÍŽ żè^ Óú,!°”c–å(<êþ`‰¼÷“ 5 ©¼“¦¢ûÀGñnEÎŒ:×ö˜S7CíS™ŠéR%<¥äܵÓü«••ÉK.{˲0÷ z¾ÍÌxÞ» "ià"h{˜ë¾ýfÞ£-h©TŒ Áí£ ¥I>–o²ƒÈÞ9jͤ€úÓSÇŧ—dcX~­Uk²?of¬-½Ávˆ»Â£Ã1~9³0?YÂ.žyÖ$­àQÌŸ¸B⪥ÁtˆzÇ~1¢ÐóÆ?Lj£ÛÚ¬Ö;Y¿ùòݸ2›ºª¤ž y†@6ãg‘Ûã`»¡6¹BóoÃß `geØbÓl¾ÊõÑõþK Õ·jvL [̤8Årܼ˜eáÙ œO V¥‰3‘꺣‹˜bóÁs5Jwú²ñdóùvc2B7*ð6ψ HjÍ{ã—Þ€)¬ÜÆÜ;zÈÝByt…Þ^_ôƒ^N°A9H¤ˆ~šÙõøCȳòQXe.¡øKΕº!÷¾oÓñgíaAf+¬ï^œû²³‡»¯*hÑ(>Ñ;í º˜ú›XÊ2 i?»ã9ÂRϺc;`¬v™0Aç¹|{§{¨PŒà ±òÕޣב‰š–}ß@Š,Té_‡Œ« R¥õZÅ ÍZ•±[ó—fŒrr®*RG {¦˜‹5ª; ”‚&_Ðô&È;Û?.`³âÆà‚OÐ^„jêã »Yàâ3|0ÂVø‚]Md[¥SŒ>‘]ÛÝk$ÖàiíQ4/.ì[Ôµ[Ÿrkù¢¶bßW¾¢eÔ=©·¨¶%ÒÙî-‘YÕf×PŒ…0õ”Ôó`?êš¼ÇÚÊ̜ީc—å~YÕÊDH]5™·ó ÞTYœÈ‘¤Êª3ÉB©o#ô¡ŸN—QyÂä–ÙH]ô„^‰È÷iËøçûÖò[[\ñdÙ”>q…]òPÈ>¤¼ûãÍ÷>U—tDñ‹0%þFM™4€¢KÍ' Ça幃Þ`ø¡t«´û|ÁóýIÍ3_wåó^ãx:|»,°=¨s°ô²Çêîæ^³ÞµE…è]ÓŽ±Éµ ËVÂ3¢Ù'âõhgç¡ÃG‹Ì6LtÈvbõigo¢Uãn¤ œ*ôÞ¤;†ÃȾF¯zâGùç=h­"I×c2±©’…QØ–ÍÂôÈœÇ ŒÙð÷úŠã5îÇàÍçã6£NÛ[L–ÅŽ—:‰—ÞÛÇGoö çkarj.Ÿt"·Ô´MÞœc·qéTZ7†u»|ç³bï2KëêЗ;mËC^’ñúI|Ç>HãU•xÆÒŒ}ÃQÏ%ò󈔗ӾÇʨ-zc%•ßþæËÛ\+”KÍÛKa5í†Å2ý&É·¸Nå#ÌŸ­E<U®B}·­1T÷*/û©—5 >6#†pvŠ›wªÃ5ÃLŸËsúo˜}‹PŸ˜Æêp¶±;Wà5T?ox|ÿýÇâ8…‡» _ºâ#`£³#‡ãï§,õŒÄÂC¶'«GlGüa®Ô]%ô£Ð·²aûñä^ÝøÍ…òä—:Là#& fþé—ûúRcR[– c¾ÝÝÜGLÏ\üu+¬'êÅaø§¦þN„z¦oEk#Ìøz-ên„Ö;ØX ¢€H‰¸µDmú@¾ƒKºÍ¿cŒðÙó3‘¹ú‰(‘Rýç˜"ÒγqööÅKéÕXW$E˯öˈqœÌ‚¡>vÉqr¿ŸöçTX5zSò†FZ}²®ýÚÕ™ø endstream endobj 1281 0 obj << /Length1 1724 /Length2 8131 /Length3 0 /Length 9264 /Filter /FlateDecode >> stream xÚ¸TÓï?ŽHK§¤éî”–n$%Ç0ŒÑ%ÝÝ!HwIH£¤t  Ò-) ‚þ¦Ÿþþÿçü~gçlïçu_÷>÷>÷uŸíŒ…Q÷ ¼-ܬ ‡!yxù%ŠZOLøüüB¼üü‚x,,$üŽÇbF¸Aà0É1` …="QD-8  îD%Ä$ùù‚üüáIÀc Ä Å P‡ÃÀnx,ŠpoÄÞ‰Úç¯G;ˆ !!ÆýÛ ï F@@@@ ˆt;£v¡€'pŒôþOöGH¤‹$Ÿ§§'/ÐÙް—áàxB}°á¶ü*  tÿY/ ÀÀâö‡á Üé D€( an(w˜-@íx¢¦ ÐqÃþ kþAàüy8^¿Ãýéý+öÛÁ]€0oÌ`‚:Êš¼H/$7³ýEBÝà( Ú ¿S”åõ@T…ÖçB@\n¼nè¯ù~…A³ÌVîì †!Ýð~å÷‚ƒPçîÍ÷gs`pO˜ï_+;ÌÖîW¶î.|†0ˆ«;XíñŸ„÷fFDø%DEE`WØ äÀ÷koðoãoUƒ¿¯ Ü`‡*ì±£>ð|Ý€`áö÷ý·á¿+<€-„Ø€í!0¼¢£`°ÝkTÿ/€?J~þ_¯¿Ÿ,P ³…àÞÿз˜OE[KSIŸëÏ’ÿ6*(À½¾<‚ Q~€€€€(@LLàÿß8º@ÈŸyüËW fHü‘.êœþJÙãO °ÿ9 €ÿÆÒ†£” °ÿ#ts~~êMàÿYî¿]þÿTþ+ÊÿUèÿ›‘²;úÛÎþáÿc:C Þ2PÊuG¢¦@ ŽšØÿRÁŒ®Øâîü¿V5$5 ò0{”¢y„yù…ÿÀ!nÊ/°­. røC5à†¿æ uán_7 Ê‹Ÿÿl¨!9¡n7”4›À¨úï¾J0Üö×° Šˆ€ÐÕkÔJà+€šJ[°×o1øxap$Ê€ªÑ`Gàýj¬ €èâ‚€{]ÝQM@ãÂ(€{ÚÚ@ÿèä_~QŸ ñ/@ € 0l÷ožÐŸðÿø£v´Auü/ÅA (ôK8ÿPUó¡¢þ÷¿1ATfö¿.[0âR–ðA`¨‰‡ Dô7Š:ÀÿRQ 3æîö ¸C‘è?®"Â>Øþ÷õïº9ü“/€ÏUÜuûýJÃöo‹„€鎀¹!QWß?uÿ§e wå÷{¶Pýükýû²ƒ½À ¼Åy8H*Ôñehçu½<­'ÏÖ8ÖêZwT¢é@¤’õý _Mìl•WkÛšû£º áÓó~´œŸ¯'¼Ìßä­¤«æ#Ñ”6Nx †¿ž¿±3ØÂiì'Å2¢6HŽ“ô艬Í0ÌØRŒçoÂÄz…vj·‹o»ÝvžJœ¥—ÄŒé´È8ù¼îôSFæ5䈩9q<)Â,ÓÝ@Ípò=¥ÐKýÕ{Ã,>käãÇ·¹ƒBg…}u¢5ádÔä>êŒy£ÉCÔI¹ê¯ÜÐXD.+Ò™¨KœÃYWîZ‹­|Ÿ-ìHro¶×V º§0ÖâÞ™—Îë]9£³ÚÌ1øÊGp¿59Ê»>ƒY¥Îír$ó¸Nšß‡AÉÀjì^þ©5 /+¿2ÕD_j‰Å²Üžºm—$ h‘& úT¤ ª epµ3^ºy” £a!ÓU»«Íè¸æ>ú›÷KѤÊäA ìb·õmçHoÄ œù3=ÅLP¢IWöAÿ~Ò+5‘Ëw$FœJ¢È÷ð+Ž„¼„Ù@ýü< ÝŽn©§r SL FBD$ï 4wÐ2µqM%ÃäŸÍ’9}® ¯]ª{!Ü*&þŒ?`yêäÎc½Ãâ†{z½_1-m'|‚8–ùÝO¬Ë´Ùԑ‰–ƒÄ›]Ó™ ±ù•|…†Vdåæùvqßã¿ì\4ç›È7F>…F¥öÌnXÑw=Œ§Ë|=uØ×Å–¶ã¥Úüíã„ÌfDErˆ)´ZÕ’ Ò®øq"ÊÐl¨ÙyÑŠƒè³k¹øŠ/`v%%¼äb¹Û¬}ìò½ÒUá1€”ˆm!LBh£Fë«„/~¤Qàc‚/â¤À©æ`Áy/šƒ] Þ&TVc‰²ðÀŒ9¦5š¤ñ›ŠËÉeÝG²ö:>õ!ÐÕÝ’`eñïºB>ñ™èˆ¾õ–‡÷4|8ر0v¥}¬Õ†i*¼ZvÞJRhš07Vh¢«t¢y+¸a%Øv¯¦­®šæ‹'@å5CM>¼ÏÖÓéNí×'¸¾üf¬ý€^?[)õ¬ô(«-aýâ;kêF&ôòOJó@Mt}Zå<›ÓÒšI®(âµ ´d¹—'”ÎÃnÂe7y?WëàèA£ÿT–ĹÉô¹Æ2P¿zÛ¢Ò9|“ø¤,T£Rgx&žQí^ìËÙ—ßwîÑ'ùa…œ5–Êê;Ír—cX‰ä+#›½gø"××oãË= Ð–r9ônZ÷¹¸F5-vñ 2YÕX¾¼·f]ª‘qÉheêbûyˆ¼1cÙ£=ï0Y¶·1õTjnƒôèîÐÁ²ªns¦ª¯-iÙTÓúG˜úŠi %¹zð¨ g嬸ó†(Gs‰ºœH)ãlì ;òj׺–è•Yž‹Ùd¥¶jê>Nì +¡¯ï‰ ÑÃA‡OF uÕí|5&*ÆÝhÂð?›Öuñz¼I˜4+hû¾ÀЪɢS w¥žBúhE—-^½ht9Ð#iŽ{¹‰ÉÁ°LKö¢ñ@v-Å…s>T̃ð=•ô²®€›ÿ† QŠ\±v²ˆå‰PZ”ÁV£¸]{8€Æ[¯4"¤M‡#´‰ š_lv{†…0 7T¿ø[²¾OÙù¹ÝžoÄ”%Éc‡6 }³²ÖÒF÷çý¿½\Ìs´cS<÷^Y¯·ª­•³1ˆ§4ÀhÄ\ÙB¨·ïhDÞ;éHSý¨’›7$—€rÔ…+ŬPm;¡¿Ëâ$Ãq½k¶ÄˆuxõíÕÄÂî¬9¼#Øò=ó+ÖØ­ó3 qhZÂæ+·6ÖÐÐ7|‰ëë–ÙŒ[ýÏ€çèkÕŸ§×(ƒºž0H%ì¦Ý¸[¢=‰Â“9ËU&Y.ô€-glàÔd%4Lv2…M_UYðaóúûFNËåϦsÅÐeCïÜV€€.°áå¦ÙOs¾•ÚÁhÇ,n_+÷Nòhmï×´‹)ƒ7·ª–6'†Bz€Ù»²sÜøèGg6ÈhJ¦±hÒOH^«2,ý½±F‰Ä'Ë»ºGŒz.W¸oi¯Ú¢Wo¤JŸ¦ïö nz,0H8á{“ÄS6«&{»HÑ<~¿Hq¤>È’<ѵ¨þ˜c㣢(ËÄìþXâɸÛ>.7Z¢¯»Ë¼ýªMòg×;Žá®x¥‡ »%¶lÕ}[=´L7гé\‘PjWÚæé´qŸáZU€C §<Â7ÕwÌÌO¿ð#¨©ªÏHÒCJås¾#>8à×S"cûÓÑÛ ;.¨¯ÙÈyh;cÚµlÌ^q„:é<éxáu{ö ÌŽ-ƒHÅ•@¾~d@{Ò@f8fœžó(C"v19§Sw¬3<Ò¸$ór,hçÅåÆ¿æ²¨ŸyŠß§–}¬y¬÷ô®PÐU‹. ~ÑyÖÅöhÊ´k Ìs(ÀwM›/Ë©$ò0Ã6â´Ÿîk¡X)Ãüã®2®=ãT$g¼mÓ1úö÷ £ñ’ñø™x€†§žýÇ8—\NK2Â`ÞùèÈç½ øšFQoÞ\;C,䇼L¥Ö‰Vµz¯ t4›.¯/âF°±Ý’ÑE¼yMBîÒÍŒ×rœnÓ¡•^Ú hä:UUE;~ ¬*Ä¡…ñûPUªÔÒ¯=pz•p¬0ÖÛcñ ½¯þ²mÁ¤˜¦°W©æÍßß]Ä‹1û0jÀ,åa1}Èã‡Jï‚“]\ê”9«Ê¿4¬dz#tfm'`b°{Å$3wí$B8ëhM$¿tïÈ ufKrޝhÒÛ¡ÇQôI$³“¥¸è}):ø#p9¦–ä“íûê58÷ƒL4zÑ—ZØ|ŸžÉÓ/qàÂ>_NÞkœ3èL%éËJ\ÖœX%T?8>Û³| )¿5+=‘t{ôüC«`/ã)ùŠaÄ7¿´ô‡X_EŒBì¦ £÷]uƒü¯nfü¤Æf£~ÏôŠèøéöaíºeKœ–1Äûon¥pâÑsÙ»È?ã®ç~#íçX%(B¢8,–óe?ù8½®9cŽ8wO¹œ–v¸m”¿0©Ÿ»ÖÎËDç Æw ¡î!Ô}ö¼9ïìröY=Þ$Wß°žôÓêd_~&P¨l]b¯GÁè"€ùDB©°2ÑQ/ÆBPµûÜ׳ΊHDèªDù³ýlO£ðs…¬ÝÍœCùò*Òµ.×—“'£DV_¯L 7cG3D'N}¨Õµ»ÿ·úœ{þÉ@¾èÅF'&Ý Dq™YÒÇ7ÖŸð;›¾ÇQ]ôz]©0ÿ̧ -ÙŸäõ/h›¸7–úªœêÃd·òxV*¨¾!;)Xú~Í;Fª;8G»*y±øv<±ú£ôÅÛÙåc²}@­]r}Ú¬jÎy‹dLß:§OGä& ”„Æ?™fŒUw¯Ÿ‹¿s¢šKÂ|ä}«íNLÅÞ/)ïà-𬽒<)EÛ¢µLÌa„Ku½¹ãm¾2 qO$(Ì™v¤Âvµ®hžÞîÂQÃq‰õ#×êA6I!GÃ{Û·œ’æ{ZZíxÍ¡®ƒ¬-u#WŠ«[BÚh-šOÝ= tÝ}“(Ý:Û'ë¯uób¸xž×TÆd4(1¼ÖeêИçªêœ1í‹‘ÉòW±§]â@lii³5›¤ì°%Þ²›ªñ$ÆB­k¿|–²ž£ØÙ–ŸÂQ•lª}±fªJo#Ò¼Þ¡:äÛê2¤oi:MMÈ÷‚Y¹ü]ºêãÅ3#Y—3lïéŒ6rÝeéŽàÞ¡A…¬ËÅË]‡Æí&³V µ«ýÈgŠ8'”>+3v¸;¸fÓSco‚îX £¾••æÕÙ:o×>2[ûëãbc/š—?#Y×t²+žÃÝÕÅ„žï7y¬í÷\j,ûæjÍ®ɾOˆ«Ð:³ø*iL-ENâñ 1Œ8Ód] 3TáA2nT™ Y¯îšš”l>£Aq$€÷Þ+7Êû—†›µ!ÉÒÓ&Ñ?îÝ&‹4½Ž~†x¦…”ñ–® çܲQ¼Û`IÐ… •G4@ÙZ®JÓnÎï˜_\-äÓi¡„覰Š!‘Dè—î*>RöÂKçÓq R¯Ü9˜ö¥¾}x’–ÞëÑ5zróE1 Q¶G=¤ƒ/Y™IÔ·ž_f ý‚냆Þl(?5ÓÈlÕ´ôAЩÛÞÊQˆ\Ýbí}%ã˜ç¨ÎG^ÿ˜¼gȃÑ@’“B£õÑŠF®j’’WÕ5¯oèÅ¢ Ý‚³kç+½w¶FúS° òcEnTöë†XýÄ"cÌ ±¬~õ Í=Ñ8iU*7Äó2ö ê°´<¶VÙ©e!«‚ÓÉBØéQŽÅ„Å€ú˜ñý0…$šHgBÞØ¢øš\}³nª©L¸ö#LJÛ8?Ø‚wú;jÈ_Kù? : 3× |šg—\'4È^†…o=ÍfЈ´À¨Ø-î­Ø!"“‹Í5¨Ṉ/™X5ü¬õ4ü?¾Ý8sž›EèÎúì¶_\‚÷v¾¬cdžÆCĨÔÃ%‹?,RÉ •¸0iÓ•™‚Ù_àª)ïHÊö"S±žêL€ ÍJ>UéˆÉ9s*)¬èB5©c yù™¾”2—ˆ¢÷‘aÙË÷ÚËâšp[Çe·÷„BÄ2øYiiNÓ§‘l&i¶\Jb 'Ú›X8Y¶±â¾g±ÎmÏù"¨ï žçu¼§(±¥ñ Ž1EÇ2M¿üñÀîBv±—Ř¥Ô¯û\LY~²ßQ—Hbý¬†)ç}ŠBôó؉EÝÏñR –z :)B_{8î 5†¸Ã:î2¿ZU$Üÿ™o¥ƒþaýïA&óëUë` =¾þ’-­Fð³<Ù…7CÃû3õÍwˆ6ïZD—ÚœôàÞîuìWYí >š¾Oä >DÒõVÖ›Mæ6DR«ü¨Ð‘+fÑJR ^Ù#@–6/x`…„ϙӴñÙlL÷i)SŒð‹üœàrRÛ4–±K÷¯x žºîo¹BF´Týl/p¬ /íóc*kÚ¾øœ8—?4lF1«íoJJÑȱs¢Xý‘ò%[5Ù»ÚkÂï­ÎÍë¨D5ÉÆfÄæø‘CÙ½¶§¢S÷ÃМ¹W¦žð?%M ¼;¡~ŸíUýÕˆtùæOí­ç@h¥dóµŽÈªîf¨gŸÕT”4£ÆŠPÔÔ(“åÖôW{×ü vJƒìR.LÒ?Fì@ïysœTÜŽæG‚6¢qu¾žX“Žà”¹$gú¶®–«‰R)¦kÜ*Þåó¬îLŽ]õaäÉ;æZ½ï ÓŠš…çI­”^™ž¸ŸºKéÔ[Wr0Y ˜B7•RdÆÃýZ¤¬1ˆð=¾³\?Xª30;ÍcYƒÑ£™T2 iãV«°B½£O^s’î¶zI”îO½­È_Ø2¥TÙpí¼Ñ ·X€Öy}bõ<Û5y©HÜóXƒA›úM„]»½œ§…]©QÖh¯Ù~`ÀA¬€ò×=K"y!jÜ¡u™:ºÁ;øx>ß¶ ZW¾ò/~$·yx™sÇ,ÇÇ{2yŽ,P½ì4'’a«/hÍ>&ç›(ém,Ós¹)ó-©nÇ[n{àg›áÚ7œß)ô©J |ÓOy+؈U@Y½ÚO0å*"Þ§áðØ`,w¹oõŽ£o3e^±¹ñ£`”YúÎßGÕ×Yd9W›zŸc.‹Ç÷•NB[½Îü7AbýòÞ&"¯·»8"õp.<ì§’Ö;oŸÜväå0½¯„æØœ\úHµ5dªyÏ™+½Ç|3ºå‚(wÒÂ%‡%× f}ýB(-Ú7…|rµÝÏBtıËç¢?t½²øº’é¾`³;^¦8Yäš«±Þ­ìé yC[Ù—ÌO;6‘z/i.NêŸ@Ió.‰Ô4>ØÔhÄ+ÏÖXxÉ4|ÌµÉ ¢Cwn6®(•ö±¹7ÀF‚3$ÒZTp2rž uÐѧbÉÃEÁéV™aÈ÷oS˜ˆzôŒÛ_„èÜ~™NæÔñùÞÎ j=w¥V™²Þ¬~XX˜$K8Ü—>#M5½ŸÕtyýödŸ[^6¢¶ªÆ—+{3µF`tãmÒæû¡8×Nˆ¤úp«¦"Âï妷‘ÀÉxBÍú5·g/ˆ Ñý©J½ŒAõYfкvy¬¥0ÛçÜ]›ŠáŽÉ¯Ù$5f¬=]@“dé Œ–­~â_ªfÒÖ_G·Å}ŒO:ÿAï›>@¹äÿCµÇù)žú)qe_l¤ª{5)_/oèU÷¢ DæCîSâ2†¡Ñ)¶í¶Ês= 3SUæ=¿2u=6óçwÇÉYÆD{7_ íÖ©s`ËÛS½ä2è=‹ª|ý¹ì­3|$[ÅaµœïýЉäÖpã:íâÞnÌ9þ˜@%Ž”TJ¤TVE«Š”È{¡£Ÿ§~)TAŸWÃÙ¨F·¾CðŒq†Ÿ÷ˆÇýÂ\BTNhÑõhýî“©r™vYˆZšm0Eƒiý‘òbÞFV‰ó`ûÃ|̊枥/í>oÊ+4C‡V±…ê_Sª.¿ë2÷çÛãy€~J2ð­Š&ñûA <ûâ)†Ÿez빑+¶®¦*×\œß$ËÛȾž¢NFµRîôr~mˆSz Ë÷ﻘ‘kó[ º6ÞD ·¬,ÔÜX ×ç#$ôg\·•x?fØs$Ñì,‚ÒÜS6ŸG–qQpi;¦~ÏÝÁº÷ý”„¹ááÎ~å‡û–œš©>ß•…ü×o°«y>UX+’º'éã~n!Obü*…ÿÅlj ^¥TÜúø ÷sHÐÙÄ<ÁG¥ÞÆÕ$Ê¡ù €`GõóîOH 3U§{í|Ø=ù‚©Ò¨M­eÖt ÷“/§=7¦/àŒæÐÕ0QóÛ<ËOaÅ £7%Ct‚AÞìÁ¡á#VÔ å;ŒW)©Ûj¯pŽšSó°°¨;l¸L0RzTEðjŒ+š•ÃJ±Á,j‡Ûð tqÙQůÁÕEo……¡iþ„óÅј;ç›_ãDd¸Ö[~¬y¿‰[lµ°Ò©÷~NoÖ¸¬­:¡í5Ý}q›­qÚÛ¡“äºÊ´hÓwü¼dº”Ÿ9?L€Ú¡ùa $p²µal9X#âMHy–»-jËCp»—À`%"‰íÿ6=ƒŸtôrщºsyÓ*ßB·™m¨õ¸J»$’DWÛáåÙÌúœjEP'Åð5a0­|‡ë ô‰}md6PÅJ<8“‹i7¬8 ô¹løÅQé±Q·BÜjõÖ`]Ïu.Ž­FºVnn¼Éî_˜ýä}›¬C:LêÆÓ ˆe¨’ÇGk*Nr?Ò¯72÷û×(èËÊ_žb7‰K“ämZî²Wi;ç’æ…àªp>Ú«ÛaÑeì´‚n'»¾u¼»Ê—bàúÏN9 ŒèºÓB‰kHʳ ŽÉz™³nm–ÉB÷Úc.îsó €]ÊD9e°g”Í{ÌÌ, ¿tW„ŸÞN[Áñ˜ÐÁ;¹Ÿ•Øùë ˜F¤×~-ÆÛ«ß'¨LåÔ¢ƒ)Û–Îʳ­¤Þ@í¤ŠY%$¥t“{uŠ©ƒÂäü ¨ßÞ§{=ZÂ1ñZuUU/E‡ÂʨH~A2ŽIÈäÕjÊ5ÚGå~Ë,“sê[®iŸŠî NÁ­˜¶E]‹BNÅÒ zè8Û±glÁE¯úu_2-ñÉ=Õ¿$Z³¸¸c Šå¾zÔ3Èû6µ™œTÕilùH}6¼ËqÏGãÅÕùýŬ·Óò‹W°½…t¥––rjß$]9¨¹ ò&C]¿%ö™˜Þ¾‡%/ݸŠ×¤ö|}omzq~ñ×¥,&tå=öÛ¢>iŸöO…¨ zaèl˜×\9h®¨ÀCáìp$µ*©LŸÝ—9ÈÔìØx¯] T?'¤˜"ȼyâ?$WÄ©|?¶ýAóÊ“ÁY! l7V}S.{0S+tðÐ$b_ÊØ¨0ð}礖/?a­BÃÅž¤’/cãh ÎÆÙ¾§^yHïdg„ÇŠa Œ¹GÆGÒÎßÐ5ÿ:…']íK9«sÚGdÛó…V˜ŽTž­)æèÑ¡<Í´½?Cõ—¬x1AÄÌÆƒwóŸD¸#:"o¦{ÁeÆÃÛ :¥>÷1 ½+ÊÓîÚ&'Y[dà ?¹1wMögx´Wú¶‰Šë÷R $«„fü‹ê¤G¢‰³¨Sza’,oÇ%ÙVm;/¾‡úGÐw-aúÍ–`ûF;½SoØøæ éÙwn$&ªöÖ&uÍ_0-߫ð™jl9˜Ñsbø4UOÇKV?rD½šffx\ô”pGÛØ’8á‡DM8N¢(¤;¢´ÛXV¤j‹k;rÔu:¢!3¾ï¡·dÛQM3ðŵ¸ìã/µ[þÄËœ…£Äúe‡tè`ٛ׊tMêâ_»ˆÈßåȉFCîH…:<ï71œ¾Üß?¨oÚc¶U 9 ñ×îÖëëÞ œNxÃû®‡8&;ZßåGªyXêº×»XO\¸ƒ§%µƒ·‘ §MåŠØÇ]*@­Fìç1L ͉ªF%c½ÉMoDUê–îI€M³ \äˆÅÙ¤³§ïoQ›Ih6¡¸›r*bÇó½qŸ®±â‚þ¡¨Áê9eJÿ™Ò€!è–‘¨5¶aSuh”ç¶ ®ÐéÁ^¾Žx ã?<Û6f‹È¡-$¦¢<ü`7³ñ]GñÚ6NhdE ‹?pÞËËöú?±Jíé‚X,ÙÐó†Åð÷ß^Š"@‹ÐÖìå‡]ôÂR?U7潋t¨·ÜÖ¸PÄêüZµ±þ²[·m3ß|G‡‹A¶bÚ{Æ´u¾Dô"£E<û(‰À0¨Ê³ Éä1¦€ÖKM¸háã_d>@°ÛÔ!€ ï–ù™ìÁU.7˜Òð&»;È¡$$8œ?iÏw>#ˆúÊ’UVÐ…ët§÷Ñ2P¿¼I àŸ ëûYžf°j6Ø/O¤óÑeçKQx½ø·îT­÷Gt<†Ñ ò ±âZývˆM×ýNînÁ_œ¾ˆ ½ç{¸¯ÄÓÞd\·œÈ¥í©?zØòÎÝ<ïÿAS endstream endobj 1283 0 obj << /Length1 1441 /Length2 6336 /Length3 0 /Length 7327 /Filter /FlateDecode >> stream xÚtTTmÛ.Ý(Ýà €„0 -ÒÝH‡Ã0À303t7RJ—H)!)ˆ”4’‚tJ·„ À?êû~ïÿ~ç¬uÎÚkí½ŸëŽç¾ŸûºNv]~9[„ TGóƒ% Z¦âAAaAA!NNCÚúLÂiE¢`¸äÿrP@BÁh ¦Fcü´p€º»3$ ‰I‚Ä%B‚‚÷ÿvD %Š`˜-@K Ž€CQ$œ Wo$ÌÞÙæï_7„º_üÞïp€œ  ƒ€á-0Úê‚Ùv 0(Úû_)¸¥ÐhWI ÐÓÓSì‚@ íexîEz@m¿hƒ] : á:ÀPp„ÚŒ„0€3 …£0îp[(€Ù` ¦ Ðq…Âÿ8kþq¸øël ÐÒýý+ þ; \\ÁpoÜ`s†t”5Ð^è{0Üö—#Ø…Àă=À0g° Æáwå`€²œŒið¯öP$Ì@Áœµü•sÊJp[„‹ ŽF‘üªO†„B0Çî ü3Y'8Âîû×·µûÕ„­»+ðææUSüË‘üƒÙCÑQÁûbb"¨êqþJoèí ýmý‚1øûº"\v˜& þ0;(æCâ‹{@h¤;Ôß÷þ½"¶0`µ‡ÁIþÉŽ¡vÖ˜á#a^sA ÷@Á_Ïþ,1ô²EÀ½ÿqÿ=_ ±’¼¾Ž>ߟŽÿc“—Gx|ùA¢þû¢ Hó—øÿ;.öW‚ÿĪÁí€ûªÅÓß{üEî¿ÄÁøw.m†µP÷?$·„`^ ÿoªÿù¿1üW–ÿÉÿ» ewgçßfîßöÿà v9{ÿå€!­;#-Fðÿv5†þ­ÔæîòßV54#9¸=†Ìü A‘?8 ¥ ó‚ÚêÂЇ?”ùƒ?ú%5gª‹@Á~Ý-˜(AÁÿ²aôqÂÜ( /› ùü{_%8aûKgB¢b0 ö&ÄÐIHTà ÂÒêõ›É Æ„0=úìH’_c1QÏ?ÃÂØ~Ã"÷@#fƒ‚  îŽú *¡ö¿¯F”3åðÛò¯ú îH$F§¿i„)þïõïK õ‚BH¦&aŽÕaMß+å˜=ù¿,,µ3žø.Þ.¼þf­à²µnvà(:¥`OaFÇÉå´lãƲs,¡ûL-(â©æiî†j†/qb`ñgòM±ŒçÞ+æñé}ss½YÝ]©ÂG/5:*ÄÊ#¨i|ÔÙsú“zi³ÔëQX\ò¢§ ¯“n3ºDpÍãºTƒXX8â;]Å,Žýr°(ì$¤ÎMõáÚÆ¦‘!®^)öŸ>Þ/8¥o4! “uÀ8à^qX97dÓ»¸/±e­åð‰Jí×…Éd¡ m°)Gv´AÏCÿn;·Bî¼IŒÛê m‹èÅõ¶ô×FiØå-½7¢Š#fÓ3šÕd~zbsÐØ‚ÏßÖ,ŸRQ1(Üv>4Y›ÌP9Ü^Çž÷P>'dÙ6ÎᏋ¥´n¾¤e}¡ªuÕß!öšB½d3íš³`fS§ô‰²50¿ß 1+²Z»9Ô÷‚,V¥Ò`QpÖâÊ 8ûíÓ‘23ÓKͬ0â3ä½L”¸ÀÚ®¼M‹~,N•ïü×’ %ìjRšNÚûôxT}sÀ8BÏwGÌQ*#RLwê6s€æcé"_‹}š}ÜGØîÑ©$Öõ‡LçÓùlUx-]cÛ¤ñÿÐV}JEÿŒ®oŸ \,K©À[C1ˆõsâ §v"ùÞÕÝ­J÷´£ÌkÙbîí|o*êÄw5 cç@×ðlT×,r8ê–Â9‚ëíX÷`¥¼Y?[w ÖMsˆ¨6ézäñ™s3n€Å{æEí )šãq3UBÖ^öë«WšŸýæ­‰Åå!;ÍÁ ¼…λ.çñ ã!]Ÿ‰ß°“äÕ A6º­¯gìúØätfËy1ã ùŒõ;“µÍн˜ óòמ­êÉÙžHx˜¯[E† ÝÆ9¿‚ày@ÞqÌßI¿ÎœØ¦ä¾h>)ö‹£IõZßÀ‹]$:Úø²;l={Fž¤N#O9æyWäÝÛ`ÙK Å#`:W YX¯™´QjJrÑò`ÉŠx½R Ô×Ïü=Úqè]ÒÑ[ž/zkQAð,?­FUT¤sZdƒç[91•ê Ó°¦ç}w.ËÐ'Õ€U¤ëˆpç’÷l>zÐð™÷†8‘›°³$îé^%w"?M„„°$¶˜”0¬3½ÝôVÎùe³d5=^Ͷ"üD-y¿/¢ë~C6ׇ\&ùÉžd$†ù ÑÆñ»LÝø¯Ï •DÅ5—3lF_Xù­ÀdíF69Ÿ³—ƒÆV¿/˜Þ=P, »•È(;¾|£Nô­b¢ûSák·³°^tà*¡W½‰8|zQ%døÖ +Í 2 š1¢¨–˜ŠvÉ^ø 0oî/u¶"~I>ݧHÀ«9/`T€ÊÍm”T½¨ü[á4ß—EúEñæ“»¹§ëøè3æëÕàž’í¢ðÍÎÖö “ûbJw¥6Ù’·Ú]ˆ¸xöâÕ[( <éDØ…‡jwvË–ß³”.æÔ á ׄG¤5l©§|u»ÿ¨Ü¬#lÎãCÁ¸Ê”^ÚWÓ3ö„~½•ÊU —¾:í'S?MJËÍlœŒëŽ<(¿}k€-û㦗M×ãPÓà‡Ä¥sàßœñ1ºîUð™ÇXBU¸Gv/U%Œ_šð®Âó¥xºJ»¨›Ù\D2wÖ2´LÄÊ•Ø)UE‰6¹ä!|ßXP }î÷ILUQú÷ÉtÍ^,¨ÅŽÈE‘â5ªÒîóDúzßY­Î`˜½±Yw?íMcKæØ«×£/BÒ6°Æâƒ çè¨ËQ¹x÷n,ÙÏŒÀw–€i`“= WÉô¸œ$P·wxY'Ø…®æDJ± Ò¿Þ.£ö2Ð:*Ré·eÎ?i㋚lºñü-“@œ 2SˈA~ÚAÏçS Îñ“µ],“!ÆÜ·6*Oz‚ "ˆ ¯“wËy¼Ø»åЉGa¢d¥¹0²Gðp¡Œ(‹ÚÊVi±“Ðú¥å]ÎÀiÛ[™5eÊìÃö™ýý_E»)ÑÝdN.ó¶)ˆ/²Ã.|P-§ÝòÀ ]ú«F–Þ º,nhÆËáŠË´AÖ4¿¿džp½¦wÁ´}Ñç1“üsÜæ1Z‘¹‰a¤ÊšyÌôþÊ·ãþq2&la[©Š7‘Šù0z´…uDeáu@h+ðuntâ@QüÞÜ¢Œ@!0w.ᾑÐt“6‘¨Œâ±æw[ú~÷ mñp<ÉΞ§~"WÒDúÀÏ &ó<ØjŸS—ùIôfINÙœJ䉒?å(¨â­s²síäŽT¤„' ÛIäN8_lÚ†þÔÒÏäß¼'øZùŽÃJ›…u×ôTÅsdÛ}¯ƒÀš7îÚf•­Æÿg¹´œ©›Ì¥Åùü©®ŠÚrÞa]ÔºäÙq[J}K©·SÂú “ÇÅxÝ©Ñ&¬MÕ<¾©n6î¶çˆÌkB{1Ú Qº¥®pÓ!±OìÛ&ä«–~F}.§„ø6eÞ !é› e¥í®¡‰Ÿ˜JO0¬É#"¤•šn¹ÝåT¨2ÎhíøtãÂð5<ªö¯™H£&W’Aº¨Ñà’Ô-˜ùU›öØjÛl<åÞjm±w‚ûYSÒÖ£ÓÂqeů‘7!ÎØ~QÚ>Ä9š;l1Žlü5ž­2ë:oß튺íz.KG½²ÚàíÃþb,›L¦ƒeátêd•´àßÛDOOø‘–ÁRA,Í&¹ºaéÖ¾óÀð6~¤ë{Æ òÖÅTRVöjËè“´*àOXƒÓ–[û£Ôk¡ÕÂá¼Ýw­nïz©¢*bT^…¤«´ˆRàKÉ5œlOª•j»ÌW¯„¼´e@êßf•Ë{sµfINWfñ>×(¥dç:êÝ ŠÚ®{ÂùɦØxô-æ°ÿ4Ów ɱwt³|&&K48J¶bƒIÝ4.W€+Kô”OÔ›‹°6v OU ôžƒ€ÅçeÌÐGÒ©ÿ”¡ŠœNLÆÎ ¶*d š.ÖÌrCîÔ”¸ªxëHìËË i:¤Hý±}kRðÄZ“àÉM‘ll^ ¾+V½H9½½-Af!\¿™”øFæ’:K5:“¥™ÒõÏ1dóY¼ÄÏ»¬ñôžä›râÔj‹~\ŽÛ³Þi)²KÆ-‹Dš3º¨‚f·ù†FˆP¥AÎÊ7èô€]ÞP×Ðñ(¾1€Ùl‚hœ Yýbȱø"ʉ ˆÛT-:5DfèŠÕ]›ësDüŽÞaëåU§6YyÎ3ê¥ò§q…´9¶2õk–ªMR² M{–EíAK­- ¡š¦lFâe{¶~>©$ÿNÙG¿"¢ËY:>·X>ÔZ=wèê^þ“^˜8(ü¥‘C,M"Z9À^ÖšVâôÂ÷øÄÝá‹ç¨Hâ²_P+!›üÜZä1Á’¬Íñݧž„y×EôuÝ 8Y]´ý¶¡ï¨h¬kÀS'´ ÍŒçxõ‘N©0ñcá†C’ ãÛ·Z' ?•t °Ë‚(ã_ÕFÎÇêÎà?+ ‰QŶypW”õóÁIÅû1êÝq2Ñv9­«; Ÿp*>`8´/¥åW'•?¬ÃÓZÞ<0þYˆ,ËºŠ¬‘úNÛ¯DFÜ%©)íN·§H¼¦¶p"Ø’\üsSáVwÖªÏtOëF鄸ðQ`ìt‡ ÇŠ>“ùã†Z¶ØŸgÓ]Ö™á ?Úd^5×HþôNÒ¤„mAÕÞ2Í)_{¹ê$ß«ƒii¿:\¿‚¼È 9êg¶7®Y¡ÖH’b»¢8l~y½õ¨³\ɺñ•?šÿûþK4I¤›ói°1®¾¬¸®UhÓW‘Ëô·úø1ÄZçb!ÍSlã>Xá ¡5ãVxܲmËoµÕaÔžû?+âGo ÖNVí𳉎&)^½!Ù¡ XK<¹›Kã·XŸ¬-z›z?€¬ ÄH›ôöH58‚–wêpnI~¯žýâ|Šv’…È"™ÌpR¸/¦Õ^þ©6¼íôƇQ ½ý"æñ‰ÂEîU»–“Þ}FŠM.™‚|ÿØý`¯P+즚`›JpüÇ/¸#é‚;F:ª’1õV±ŽêymÑd­âN#ž‰)F!Û4ŠÒçŷȱÏÚÕúKüº†Â:)ê?N†ÉwúF¾ÿÑ…]øœâyÇqQE*tK}v½>{›Q<.Ä9Á,Okô[át¸œH›á3Ý,×ʬ­¡×ô?T¦tÙíDÎð5&'¶Ä‚¾&·öð6z•†ô{ßôœ´»ƒW\=Á³DæoO{“ái²Ò£ˆÝbú 7GâV¨ ‹å'þh.=4Ò@(QœÙ`êü2ÓÝÜï† ž£EˬTyÒì()ój|¬ô‡äžG<Áˆ¬ÖYÊ âéVnž]U{é6ß…ï#os,e• ëʸO®§L¢¨îÖF?6¼h]^êK}•»ƒ¸Wî!#X"È€Ã`}‰åQAS'Éöûꇋ|ÝP#ïT3ÊM|Ôu’;¥þÒ‡hÿËýó)njVtÂ{Æ­"Ù”(˜õÆ,˜±¦Â/:¬œô³C}øŒïtÛõߪù¿Ôì<~æUe¤ø³Œ 'ý±ë>) ß7À·UËLŽ:üÚ¢eçøØFUÊ*-+ÙÍÉ­;WÅÉѼ3?:ó#-zœV*wOÈ—X Lj +~È«§æ–ƒi{?ô¸"ËbاÁ/{Mޠ˳NšÍ‘,úÁ Ö"uS]ú£¤¾ùÏØo}⦚£ õ_ ™ä—ïã è˜O¿^yþ£6}ÌØð9´AJKümÐTD¯óóöÝñaaÔ*JrÀ?Ç¿¹Sx€ÇNðÔ°DB¤‘·l5@¸ËPŒâUqñMçÓ¬±Bˆºö\¾ ’nk·X.ÊŽz ûÌÁ®¶‘MÝÈZâ+f"²\6y£²¬¶û‹ŽIt7.žÁÄ™^IÑd"åW;“Íf¤¼kk7#“©d’¯{Gë¼÷N55ºŽk-¾«™BI[Ž=­©èß+]…¡ª@µ,¹’<°ƒv§;?Þ="µÄ}\Î…`8àpn–!;7Åâ§±í|‘~¢×L²Ü~X'÷ɯG…oÞP>f3[í`2”\XgâPnEþsûˆïÊù6õÐ!èL°2äÔ7Êd]᧺NЋÐ.SÖË ú̈Iò|/å ŽÖÒ)½Y:«,±Ã[G³È)­UÎì‚ñÁ¼x0ÏG¼^5$¸9ÖKPÊ}^L®‡$>SZAâXˆ •d&iÕ„%æj Éí¾L|‹Ô$=SxvgÄ!ƒÄSþÑÍ®RÛtäð¿ïµ¾ÙX½†_EóôsB-»-ÛÙ²ºÅë.ШOa93üýÃe_-«»[?•Kä]‹d`ÑÒ\I ©ãló«t>ô!j=lê/;8± B@r.‡ B(ÍŽjkkgá·½‘›möCЩ¥üö2›1Ž<ÅTB9e…zÍ3ÙlúL1_÷¿õ*Ú*˜Œf’Ô*wm©ú ¾¦)Ø[$Ì_!Œ <±‹ªâÔU×£,› eyö”½ÇlûÉ99“ S—Ϭœ5Ó …ØóÖÍL$Æ”rwòlÇ׫,V­d ’M‰ÇãDeú8Ü›W‡x»›±{TñhÿC)6Uü @TÑw½©Œ@ÊAEÒákýžåð2š÷·_û—ÐòQ$è¾9tTÈ*ª)ÿnòŽñEY¿½„† õž` {ðâØ§È8ô'¯ˆ¥W;ëNgÉ:v[ ñö”°Ëa³ØË3rÃ1¯a0mÝÝ£DÆYÓØ³EWÛ-û«Ê|œ»Ð1ñÕó½k×s >dj5…Ò;jÔkHYIæ¾éÿÌúµf‚OÏWÇL‡•ý†3ŽR¹sBtìSFB@4ªØ+‰C¿l_sä[izä/rM%s±'¶?·NFÚ­‘z çpâLVü¥ëúY[¶yqcgã“\++ˆ?-‹ª¸´uÑj"KEæZö¬êj¯ßX}`åÄzL:’2ŠëË{´ ïö¢õÙ{åñ!…¾jhí¥H¯÷L)Z¸xtíõx¯ÕIäé:ÎTÎG7 ëåìçRü‹å3Nï|CÖ‚òñowâ½¶›ÎaÇf=iæf˜ˆydµr5רN‘¨*XLAX;9²Dž&º¦‘f}4 T+®ß1ãŒK-’ M%R¤Û¤GªR ØM‹1QÆ#_…ämÌßÒßQåÚo»cüôzÓïkþg·Bœi§{|w™› {ñ%|nLjÚýì=ßFV\«„çKmx¨BùF鱃'Éf¬KæýÏøowõÕ;ª#·Ñ¼7¼ŸU¨[°+ê½[s ko±Û’‘#–ÞiG®š.~Á+I˜4º¦“à]̢Țá7z5;/KÊPú™VrB¶^¬5‡ŸØä1µÄ`I™ÝÄ+qÌæmZ¸«wQñqmš@Ô)¬&4s€Úúæù>iV²¶4»h,¥fÚV!8Mqµ´ÁvÈð`AŸ¨gÙˆâ½`¤ÛöÏ.À=°|Z÷“ýf´ÀÄcr³F×ëIwÐ\"—=¢ÞlÂ7-ò´mQ[Z$s~q@3áeª~òû0íø)lïkFaëç.|Ô«›qo)˜æm©½Éëv¸ vPDͭᆂq7Ý–T>”ZfÿåÑySZ1TÅ Ôï³=–ùÉÛ¡ÌD¹Û‰xPÛÜ0>õANƒGêçÂ}¾ŸËmhz¥úøRŽnè;?Gá"œRr)œœšê‹1rmø‚ØIýïn´½×ªÚµÏsS»Rb©Äp{!n«ø89C7ʱX©ÁvZTÈ“vSd‹'BääÜÔ²ûs»S ÙuéU™;¹z‘þìÓ“húAâ…ÌbcøÑ‚cðÅýŧJYÐèòäÈó÷f²‡ÿ¦2È endstream endobj 1285 0 obj << /Length1 2072 /Length2 17492 /Length3 0 /Length 18743 /Filter /FlateDecode >> stream xÚŒ÷P]ÛÒ€‹¢AƒKð…»»»ww°pw ,¸»»C‚»»kðàÜý²÷‘ìó¿WuoQókï1ºç,ȉUè…MíŒv¶ÎôÌ L<Q9Uif&+ <9¹*ÈÙø9<¹:ÐÑ dgËó QG ‘ó»LÌÈùÝPÎÎðÙÅÀÌ `æàaæäab°01qÿÇÐΑ fä 2È1>ÛÙàÉEíì=AæÎïyþó 2¡0sssÒýí¶:‚LŒlrFÎ@›÷Œ&FÖ;ÐÙãBPñY8;Ûó02º¹¹1Ù81Ø9š PÓÜ@Îe ÐÑh ø«e€¼‘ ðß­1À“T-@NÿR¨Ø™9»9ïk ÐÖéÝÅÅÖèxÏP‘–(Ømÿe,û/:À¿ÀÌÀüßpÿöþ+Èöog#;{#[­9À d (HÈ28»;ÓŒlMÿ24²v²{÷7r5Y¿ü]º@BX `ôÞá¿ûs2qÙ;;18¬ÿê‘ñ¯0ïÇ,nk*jgc´uv‚ÿ«>1#ÐäýÜ=ÿ}¹V¶vn¶^ÿ!3­©Ù_m˜ºØ3ªÙ‚\€Òbÿ¶yÁÿ‘™ìLLL\,\ ènbÁøWU{àßJæ¿Äï=øxÙÛÙÌÞÛú€Ì€ïཛྷŒ\gG ×?ÿKðÌÌS‰3Àh²…ÿý] 4û¿ß¿#È Ãô>~̦¿~þû¤÷>a¦v¶ÖÌÿ¾bFY--9Ú·ü_¥ˆˆ;À‹ž•@ÏÂÎ`ffap¾?øüoE#Ð¿ëø‡¯´­™€û_徟ÓJvý÷ Pý{A¨ÿKÞî}rª?ƒ®ËÄÎdòþ‹ùÿó¸ÿíòÿoÊÿŠòÿ:èÿ·" kë¿õTÿ2øÿÑÙ€¬=þmñ>¹.Îï[ g÷¾ ¶ÿ×Tø¯Õ•š‚\lþ¯VÚÙè}„mÍß'šž™‰í_r“Èhªr6±ø×ÔüK®ö×¾YƒlŠvN ¿Þ0ï^LLÿG÷¾d&Vïo§÷Ñü[|ß¡ÿÍ+nkbgúײ±°sŒ<àßïúØ^Ìï[i tÿ{˜Œ ¶vÎï.€÷}fvŽð],;€Qø/Ñ¿ˆÀ(ò‡8Œ¢ˆ À(ö_âd0Jþ!V£ôz"û‡Þ£Èý¡÷(òÿ%.&£âz©ô‡XŒÊè=ƒÊb0ªþ¡÷ÔþÐ{>?Ä `Ôú/q¿ëŒþÐ{-ÆèÝÒä¿Äþ®3±³~¿–ÿHþºFÓà{µÀà{¹fð½@33ÐþKûdzoÇüønnñ_d{ïÇÂÃÞøÏäï²ú¿±å?ð½/«à{ñÖÿÀ÷Îlþàû;‚ñ‘ßßJŒvr¿Û¾·þ¡~¯Üþø^¸Ã?ð½pÇà{•NÿÀ÷*ÿé{^g7»¨ß«vù¾Wíú|¯Äíøîíþ|¯ÚãoüŸu0qqt|ÿ6üýÞzß•ÿðß" Ðh¿¼`gÂdYÔv_#ŒçF¿;ÁÂöqà2üVcGÇu_)@”ïáŠ5?bI¸kn/âa혥ä­ÑJ‹ÉJÃ;5‚kù{´™ñ6÷ÿ㱓¬ ËžLg§¶!«­©9ÖY“òÛµÐ,56ÃÅî|Æ¡$ESÕ]¥Å eÃoDˆ‰È˜O\\¬ˆAíÂíU"µÂ³sÒdN—B'ñ‡©ý£,ì¿~–у¶RñŽŽ>ÚË\g ¤ôpàÊNfÉwzÄ?=ÅP\·}¡2vS$å͔ޙº”ºÜ‰”V6o’Ü„ìO†ÝŒ!9ß„Îv7¦ü¥ÏKÓ)VÒ¾œ¨ZèÉÊNYÖS^.‰Î/‡Ð·'1ý;¨Ž!UÆ[¶vx:N_Õ)1s6µn4½AQåÊk‘yÚn4"Ð1 D'ÒN°í§– c¹hm°0é\«VÐÖ‹,…@NŒ~ñDxL ^€ïÍ1y:&É ÊÅL{bl£dlB‹c<«=Åì5}̱[`¾èÓ0 í[€ï ˪5Bt•%±7‚TyL¢/)þ”g¾ßâã|Ùº%ä…C‘X:¥5{“i& è½’ç„: 2›}iÞÆ Ñ{ ªçƒýäù\ûô–ždy®‘üL V;fŽPî3™ë©oB,T‘èZ?ÊÑã{¶!þY¥³®¬¯Þõ†,¡þTOBvQ§ð >/([}Y)Vðlí–ì²¼‚•£Ì¥¼dtÂЭÎÅ7¿® ìaåv~÷Mçno-é¸ Œƒ1ÚåìPù6®_ëGIÂYÄÆãÒß;_rçHdˆòñÐ~>f—¥Œ¤Suåëi:ΕrVNh 1xû$Ùp? ` á0iS‘MÎkºâÒh|sŠ…‘oÄÛNjPb°»HcmP̬›æKØiÔ´9—ë%?èAw±²Ý@_–fA«#Aü˜VñõW¸)­úññ€"ÁðåÐbSÓIR˜¤~›|9v`<™dÚâ´•ïíG”:''Z•iN")^*Œêädx®3"”¬(8¡yæ\‹²ò kÞŠœ‰aÏeRlÁË—TÉÒj]F‹i[G½÷znRðL¶¥OìT?ÙCöNÂÇÁÎ[ÓÒ)õ-½ª†Ò|­sšâoql飆<æxJæiûF0Îò›ICÜ$ͤ…àb4dƒemh¿<zéÂàh}â:m—8íÖuŸONVcùb›Žv¡¶ÅöØñÛŽ~£º@ŒÝáèò;œ¶ ó_öÌ•g…CÃ-@Dš¹¢%ca$9CƸ2ó+ÎæÈ%"§V&1^ãZ¶,Í ä€‰#²9ÃLÿá;*®D/JôqÜ)I¦qîMìKååÝŠ~eVìaÌGSb­•‰¨cîV¹P¥º‰Œêó¦õ[Uà°k=´¯"û«˜Õ8Òg«øÒ7ö™Â7Åè4Í¥€^: èšÞT¼Ë[ä‚T5« –IŠÝHg«"Z u>²RUóbÙ㥗¨kOnÁ3ýï³ϵT¼¹,µ«'G×côK÷¾œ•Øýz(7_Æ+‹)”™t:Ò§…åô²Ìæ5÷Üõ#@Í÷©{ç¶jg_òVÉGš^¨¦»TcqSÇ0>1ËB1|wk} ^—ª,=¼#¤74çÇņ©2[£†W¯—üê÷‚ L—vÇ´”À3G˜eOívâ.‹þŽDì=%©åØ@¶»8˾’Ýéê¿Çh犷à9¶$Áeˆíšà‡pYá3ÜŸZŸT÷ {[{£¢Æ"–Ö3–߯¦ñR¦R±(êñÁmÙÞÍÖÎÝÃ[ëö‰>/ùoòä'n}Ë ô¦Ÿu ðÆ\`nŠ'QŸÄÃ&ÇëX&#åá'Þ÷1å±'Úµ”ú»V DÓ›>~¶o eóÝ<›ìt¦æýÌÛœ6ºù™åÇÑŒ‡óì6%0ï%Óþ>˜nÉš\»3~ôó® Z›€#ÇÖ¬ºR ggM<eHY¢è”ã€Ñ’Â~‘96ð]¨¨1E”Ì>‹0 õÎk§N¥1÷HÓúƒ¼r©cP+,9“ îæÙ Ãv[Ôoc®>Õ¼TQ¯p:EL—n(røŽtf´ñ¾¥Ôký5TéÏæ’ì峇­:§},°NÊÒT ›$ˈq!ŽŸf4òÍ”ÔÄ]'¤ëÜlÀ%‚€f2Û×ËOxýs[$Îz®j¬—ùÍ=1@«Mí8cB–¿óf)Ë0f‡—ÖrE,ï5#®ß…þ¡£cVuŠ[·lvEÇû!(¿ññóï¢bFÂ]¥º¦Ïņ\E¢\•o¬ŒsÝ«±ë4Ì"!tOS^?ðÛŒl=Žð¼½41ÏE¢7B|+â~Áö•0 \è¬dº3ÙoܱÍS^ ì’¾ µÿîRódwÆ×«˜:\¾¯Aáo•2?«sDm¤ Ø9?³S°\\çaµ5jkL’½vÊ)ñ(N¶uéžvM¸ݶ2^¹ Y6ñO¼mÈ& }-¼+s땟iúä#±jªÉ Û;~ê1¸w6AÞb$WbÒ›ãw̘wŠalLè'C‹™žÎâ°^nf†ª„Òm Eo{€!‹¼hÇþ•Ò-r¶BŸF=/Á¨®¤0#4Ì®áâ)|‹)1Ùú”‡ú;ý3vé{ð]‡ùk~z(ÂË[ÐQqù÷þ”f½‚õn­a΋2yÚóOÎw7ÐÓ9t|¤`/Ô¿´Rèl®”™K6¶ŸŸkÐ…DC¨ô3?:7l½)ë3}—qF;óšïD6©"™ß(¾;3»'ÞÜà÷Žˆ+UZ„‡Üæy¾ˆ§ê„Ó ïõ-‘Dtr%´ôK‰·*WD0Çßf<ÿTÏÿaùê6Æ@O Œ0§¡;Ñóˆ(QõŒŽL½tšÕrütE{ãÇuô Á›:û¯ŽÆbç ùQ%‡±ª“åÔI+“‰Û­S¯‚L8ïbå–ˆYp„ì= WQa‹²d*ö\n®ca..»#dæÑû¤š²¡°°\•…!DaWAÁˆä„œÖyˆíæXu+'~kWãõÉ|p®aﺡ^Ývr¯ó™’z O|iÌŒ›$Gõv•Gšpä™z>íØlÙ˜ObÛäÍóA&ßLÖy@{B½i‡‘©/nxÛXÖx¸*퇶ƒwÊyæo†*ÓVOëÔš+æ™ÃâtÑ]òÚpÄFÛ}è×ѶË# lëgÿ¨Ê¸°ÜD¡ù57\¸–»¢E'¤ÌëVŽðzW:‡“}ZSæ9Ô6[¼‰5yä œ¿ƒ…\³Š3á÷<¿1Úy2œ7$ÃNºeëC}D†ŸŒØD“Z–ÔÏ`¤t†ÕxÓx™yÞŸpÁg§1ùÄý,ÿk2ò;Å\µÏÏFÒLØUøÎǯüû!ŒÞ?D 5Y2üçF5°ºˆÝ„“ãY SªÊñ ©LEVµ[)r™á”7 –\UvUÁXüelíwÊtê~Ø ˆ$Kž[_\:©•U‘ÿÈÞ#Á¿N6@LºÈô^Ÿ3¯Mü` _µ Ñ„~³Êƒ›[’Y ¿¢«&üÜmÊ'd€=ò}­ê~K=ˆW.g}‚ÝÓùBÎæ,éhàµýsèâR­Þ±Ȧû Wv´8÷vˤH®q:ÇJ NJºYì„oP]kðt¤uÆX€±*uN.5 k¯çg€†H¼¾ÀCË->5ƒÆ¢Ú3Ö4´'úýÍÁ6 JQ8¨)¤ŒS¢·z,a[Ó_yºb£9gV‰æè¶{¶„ÇÉСåð"gõú–͇?ñÝ¿Í  ÔIWÄ)³Ù!®_ÿRø\r~Wp[ÿºé˜<7+Æóu‹Ðªù•E0ä“j*Ô)Ý£R‘Ö>œtóÓaP½ˆø!ôç Ç6mc8¬‘•Þ9_ n“!Òû¢r“dœ–…ÔSÙÁc¦¤ÑNÔˆ´u‹~íÅó:å@ŒÏŃš9É2‰èeœm/^QJ µ´‰¦ •.c)„#o!•âWž¸Mò•-T$ƒ²äöÛ¸ðW`]YØ`Á!Kª7¼ or-Lé4 ê£¤{Ì÷'â̼¨AÄrãÂ7©s¼ÕwKƒá>HÆoÛ¬;òYV¢C¨©õÑKV¡nA·¥Ië̘ÊýK7ªÉOýIUƒøÑ±MDælDÓulÖŒÝýšÊ´SÞÒfÆA^¹ˆâ¹¡zì:¶téÞ\z„Õ¢9tØm"óàêÃ$4ò…ÚsƒÃÉæ Õë4†ßŸWb`2 ¿†‹"ˆµf]^QË΋‹ýDéY9ÃUQ™³ÃuV0ƒ+ÓMƒQåg\~º~òwšî¿éï"Џmp.-ªW4“À.¾M…[e0:I¢%^Ú3î¾ÅKÿ ^ꎻlI~Ò4­uÒßs&£ñÇ|™¹ž´ŸË¨eå,Ô‘ÃÀíÇ~ùàÆ×«C 7Qôó~M ðaA«vQ3ˆ3)éë­Ä!%§†‘ê¾â­à9:µ‘JÅiøÁ*ÖZ‘‡×cÿ†4Iõ='æÕ÷³çË'ýi°,?T$©Ù#‰“¾Ÿòb˜¢çë  ¢C§øéóí †ÄOu¡“ÕÚh\ 2ÚrxI6âw’öšYs9·Û9¼­¸;.ØŒÎmuUºÛÉ9™oŸÒã_ÍÊÜðŒõ¼ ßžñÓÆ†%œö%ïÄ~ÎezíxNå`µñÙGÏãñœû±cOÛ™èãÚk'Z¸ýõÓRñÆÐø—=ÁÔ€exà«Æ^—26Ô“Àõ«x’q°Ò°.µ—aëU3Lðþ5¿Û/TÖPY0ÁY“aÎ"˜§‚õGƒ"3|¹…0ÏV­1¤r©Å„+|NA§Ô‰_Î,ßxõš¥™õ¦ †|·°óqè!¾W êNÄíæ²E6U¸o«ãmÜÇrp-¦^¥é]$„d½1ñªÛR'R ŒWz2ŸJ¸’¿æœý8”þr§÷Êœƒ™‚zÔe¯ÑŒùÌ?qÖZaçn3«6Azçõðqé«ã îvqÞ¹=ÿÞTz?1qŽdjW,á´“qêC|ÈïiÊà›¨ób·ýÄÙ /äË‚µ´E¡ƒ hª.ôüÎp%ßGú(„+gIZ]¯ààŽ&oÅAŸ '+v³~&̶’¥cSmÑ‘hk1‚ùr;ñUë¢Ùc»k´'ù%i¥£ ¸ÉMÒÏd p)°¾»½*|x¹ùŠ:ó‚EJí$%ÀL÷³Û:Ǭ\:}Ý:[>6ÓŸ~àšN¶WeSÜ÷Àø}îYp`­û‘%`¾ò³ô̈»«Ý'ýMï©,`†JNô8…z´{ žòpk§å­Ók»ˆÂ Ìê³%¢aè~j+x¿t¡zx¤U÷4fÒÖëXzŒ‘…v7$ÌjðÂõSí½,¡¨õ‹8êÅpDìŽþ'zÚ‚‡˜ ˆõ‡² ¯E+þÏdò<ƒâóþMa÷¼|•`ZIELi&-ÈÛôö¶ Ô´…?#†wä°U… qi2UçÏ8o³»%:FH´Œ°/ 2¹åŒRÎo¥eâ»&³?}Õ4‘/¾Oë! D¶V/añj|ÔíÞI_(º-Dõ™Pv»ÿ%1od#L{1°E›Ê¯6Tâ‚ÿ–eþ’YTX0Oßhí|¸·5rÜ3gëă÷•üPãw^ÝôŒÈŽ'Z蹄ìºGònœ·(ê…sª{AðçõÊk_†ÌU~…®ç<[4Lõ»ûQEˆZœ}®YRU3…ãîàΛF쫞yÊ ±”¾†àôWյʡ5¤7Òƒê÷Ó#v>¬ä¢rù“·ü~,Þlý”oÑ8ÙþãÖµ¬i.Dà e=ßéð5Ӝ⒳o¶Â[vPñŒè¦·èRˆú.<çeò¯ë2 ™s»Ð£^É×ÎÇD“ÅvGbáÇtfD}ä ¬DáæK±DÛ‰l]u€3šKºFhðoKnÙëŽÒ¬_§|p#ã‚0 Œ¿!,í'1Kg×èÔ; – €!\ò¨?=½:_ Ðúü ÏkûxAa5º­O'FŠS؈ùðå”8´>ÈăŒµwçÔk‘ÈèÜÁȳŸ vÝnQ-i ´Ð'·m«=1>†6iC ÇÄRÚ_qt×È0xeXd=Ž\Í&×U…^œ –„eH¦&×K‹ù¡epb²HÁ$ït•5ïü¸»–~ñóÞ0F(B*ª'¼p‹èmPpÌ“Z~Ž¡gAv®Ä_œŽbFœÕ}7VQ É{É2v_žÛ_¡™ ªâaóµLŸ>Òð"¶^n·¦”ó:ÀÎX É:D5V‰ *¹‘Ö*ËÖŽÈàÀÀÅ2èÍ:–›ö~˜ëÒ…X@¢†dl‹¹â³í}¶»*‚y&Y³_UøS`¿»H4ê¬hMžaqhÛ‰Þý¡¦hŒ¤¡™ÊLhÚþ6ÈÁ>麀ó{f<äˆB¾®dF§€ÁÞž@ªZz.âo ¿åÚ5mú¬CÑ…]ŠUiY¿›e«’ó~sO­!¢4"t+òú²ñŒã%$êê@·’«Â= ¼IÄ™ö_òO!ZKU™\º·_°8‹_"ÎÛH)ᙥÝ|LƬGÝ7ìÝ#æsŠÚ½jЂˆWÒ²ÈÀ,F³—äK’ï÷•H½¿3è’®d½@@Jàµï3±r‰«9EÕ¢æ–A"Lªi¢`źÎ%n‚ ¢ÃÀ,å’ø)Û_…ÛëldhÀŠv ÷z†ZßF0mEœv„KBÎ-Éáy‰¥îÿ›WÈ„gÀ/˜hŠöôÅ1ù¶'¢LåŠØ'økÂ3¡÷‹ÐË•b#v~éón/<-¦ $DzzÃø2HÚˆ©»Rsy*=s1Þ/…0ЦPû e¢=›¿§¸œOWõ¡©ÐQ8ˆ‹¬µÕS ÂB„í†N/lÄì,z‡»Wé%›2hsÓý·CÁo%õ;Õ:ÅÞ_2³¡vFmSvè]£"]7½ÍИ™$¡tk¯‡ ˜Ùäßgoã9 · n{sÐU£È]¦¬@ƒxhN`ÿঠ²‰$ìm€iˆÌÏø‚•¦õÆÝ§GT.`ËXÃÁëÊrnÆ}(Y4)…;Dóªv²e¾ùb‡'"]f(l8 K±6C§KÏ£ÀrËÓP1#̳'¢¯9£·½+£-UW+$~}MRðqÎNâïYÎÝ^Eÿ¥ë&ý©7l[Ø*Ʀ¸kCH§†kpVØbœÁ_¥ó#^,˸\ôÈéäX‰í7"cÒ i9Q½QY¢ÎT1rÒ %1&vúü¾´üÍš_¿á÷rÓc)qí@ygWih$Ĥ‚38eiä¤ãFe‡®1¾jž8øM÷rá6мQÈ¿à1Áñ§_­q®ó/±U%õÜÿš¢Æ×e—å7&d×=ìÌåSÄ_ˉñÁÒþ˜†Õ´Š &ÚõKø)ç "p"ñ¤IÁÖÉ^_ëŒ"Jà`k6EuaŽœµ¡=_bꬴå=s¡rféé]7VŒªgþv<8•)~<3•ï‹6÷‚ p×fw‹4)ôŇ=,Ê<ìLýC´óoãíbù;hØm^(ðà½g2Ü'ašÖ”2©ÎŽÑ/¬!¿£¨ïofqV’è”d³ùé½D5™º¾úx'ŠC¸91ÁèQuª,jŽP­¹¸ºâ ëÒÎJýìT5¹É;h|ìµaƒVãã{‚4]É`‰7VnE»Ù2ËïÙsóÉÒ§xø5µ`ç^[¦o³3téÔƒÈRæk¿û À{‹cðÞ~C Uý™w× Ñ. ßW`‹îZ­In‘U/ºï¨Ê½t%Î:ìÁé ­BO‘nŸ5Þ¤[ÃÛó£¢[XRhFÏEêc«„­§ó—®§O• z¸ì!ýH\ã—:!µ½d,RJjÓ8ùMº|œ<´0€=ôüI©¿òéA xÎM{Sí×6]µaÜID£Ü`w…ÙáÞI>2?E“«€.Ùå|Ô`ä”y=á|’ÍÏóŸc~;á«ÇÆâÉãy¢V'ÅÁ¹Ú,†ê@¨Ù\¸çØ ®†cnóü`m²A±Jèkb°k–b$F£K€òƒmPkÜcKšja– 0TJYþEÂÊIw®tÉU¯qdôŽQ”ÜÎnhÖOpßãGãs3^5–=8t;npæ>» v ^oXQ°ö‹ÞT,M^×¥Ri‡g›Ä4[¦ÊbWà˜+Tª<ã{5æ1’Äý‘#C=±þ:’&óFIÕv@ñ© \"oÖ¸/@²1pfŒ´ft›ÀœñKnû3‚y~ºV‚lɇœ«hú6Å´ögÜ|¢à³ÑOdp‰¹µ ˜ÅŸÇœ™˜zDU2^r[”QàséÐ2Sñ{_X*¸¦Òé‚y®òÍÊæm¥|!æ¯çõ¢ûK±G3xM=šíírn,˜*5¯äàyâùÌ,€ï‚xG‹Äkšs$“MÜꀽÅû¢©5/ˆü`fÈEhΦG>0‘ÓyY­(,òÊѺ-“D}¨þ…bœ!Ù¶ŽŽn·‹P=…Êí%}gÉìÞ‡K9ãqk^•ù¡Ðµ€/v(fù}ŠuëÃ÷ŸØCD§öHv-­m™a«µ&qÄð1gafP?ïàð",]AnKED-‰QÞ"€óPÃ+&‹Jˆœ–æ5‹ÓÓ[“>}»­äõl?©A ’è0œëP»± „”]× Œ&š)‡ÆŠ&£¸q¿z<ý>^Bá5yhry—ïEô€‡¶ ?(Áu0?ñ[bŒP AMÙ÷!d{IZsy4¢¾Þ¨þð>ØKH2j rö©l¥*/ ‰FµvÎÅ®CrÚ+D²Äz¸>Eu Gógæd3žc¥Jú%Mf;¶³êÁ÷OÌ«À²’rçÂ|}‘o‹7¼Do­¥bjަ¡Ðõ2—üÞcVIEÕK%ܰL±áµ’Ó×$¦–þ-ÀõÁi”¡Õ^¡BgÒÛ$ÜS„`û˜ä̶‰ºö/(m ÉÞ‚vÞ¦t²Œjú­³ŒWÐPßÁ±º(,ÃÅ7ÉpÂea _¡rmÞŸ"HйXê9󄻯@oŸäSÔ•—z AªQµ¹&áA¢pSã§ ¥ø¨’[øÜ{|¾å,îë~q[¢új'7]¦ Þ3õ&Ö÷ϾBy˜ÒÅ÷\¹a(pv›±ÂÝçfuwì©#ÞI—“+ðòÐG'<Ûã»VgÐ~€£v—½9F[ó Ão]¥>€òã !!æ£[6>e™!‘Lé—ëP^RÍ;ëd!y‘¤Ý °é³Bpáøìf yYØUÓ¦ë:} bÀ²˜OœW|Vªß—Í{¿è'ÜÝà`_è9.LCÊzŸ|½Ó–)VÖ‹õ»u8ß©Xñ¡0^æJ™¹¡€vÎBwß“¯ãúDl“˜óòÈðÅ¿´Üu‘¿ª7µc³½^ßÃ%G‡N°<ï6À?äyNO/â r€_™¶M›ŒèD¤˜b¦U”ZÒ §päæ—+•ŸÇ³´×O5«“<Šu8a›+„ }ì¹ÊQ'LÞ¿ú–D€³ò5! hÙe§Ïî—½‡Ý|ŽyœÃ8‘` EÚÇ@W-èý8³€ NnÂRßà³âØ6?Ä'èöˆD^GÖ±{Ò§º©¡oäÁ¬ÉÌ\ÈMHõ³îò`b_DwVfÁh§QúÑ7!§ >Y ~·„‚ÞgÅ1?ȶF‚ 2ßý&ûr‡¡ FvãÄ¡ø¥ˆOïž´i€Ð?½mþà¾+† ú™QyÁŸÕ``|»_#Ï™ì×nŽvÀîëhy†¯ÛR¯‚Ù!½¶›n¡ÙE„rY&L˜0?4í/Õ¤ÈÁ¤!.e“7—Îë°Ó0\z’‚5ü[ÊVÑHðÙå`Ʋƒr-°µßÊÕ­›yŒ«9 Ρ¹{ñhŠQ㫇ÛIHÏÈÜ­&îÊl_šü˹³’–¶¯$÷›Æ™y<¡˜íÑÈà5nIÚ Ë'F­*¦*”šL çeÅ)F¤\D7/ø*}k’sœu{Ní“öÊ5:tÞ‚˜2eúäW¹£Cøb)PµÊ‰Kÿèºá·0„׋bËz²˜µ:Eø6¥ƒVºõr]|ýá¹n«¼{ÈFB¨%ÒGlžÐ€¦~èÆÅJ×ÂþÇ@P„—ø|€ƒßÆ ˆí {VγõâlÔ–w|2¼ja–{*ew¦œ®{MÖ¹ŒŽ4 ÞQóo;$x¨˜¹á3 U?+¾Y¿‚hp<¬/áÖ­ˆo"}FªÍ<± ½®šö¬ü¨òçT ¿’”Ö!Í Ùdƒªå,}Ýå FœúMÏÝ—+ÆèÌ Òd‚õ˜<‚(2ÏÉÝ$±Pµ¤^"¶Èt~ƒá)žä°¯nêì¹ñ7¹ K‘Rø¸Dä¨G é6öO8gÈ0yÜ› AE—"8¦ùãê>{‡thQ¹Æk»MÉiáE{"×±Ú2ÊjúÅa—`D:ÊC6€†:˜SÒÙNÎj¡·€ÀBÃ?ù Íê0/Ljn£®˜W¾—6¥ÕYZeQz$î¶£C.A,ÛiÎ[þêCâNa×;~¹ +å˜ ÿ|С»ìÔ#»kóñ§‡¯z™`¤ÚCÄìšLÕ¢ò§äêÈÄõÇOîß5tÊí[Z~•9Èä }Ö6a·Çxt-£"Hß:&âLUºp78¯õ…(ëOÐn¯ãîgËÐ EmÙ¦MDS”½Úâ²~]ÌàÍî³Õýœ VîN÷ wÕ]߸™žºì°ŠáG4êÆcú¬ä&“]šgÙ²ò+¡HÎÚóŒýדL¹mªV¯%=^ 1¸z=›sä,‡ íÅé|m¥äµŠh+Áwöˆa?p.<2 Ä1F³µâ}ltÈv‰#ØšjŸe¿kØ!'^ë*”Åö\¯Î£ 8gJ9Š¥·ß"4wß´ ­¦¥ÚùõëÉǹz¢Éwtå´¯S¨"Y¨IØðÑñV’ϯ–©œ™û†ÇŒQ„p`…›2Z=ŒLʵºó¢1ä\ÑÆuDãM|ùëZÝÑ~Ôñõ®Ï)„èûK­%ÊzlFZFsž¦Zž`¨ˆpi…zÁMñºr4NÉt_š¯eË n}ãæ¦a²q°ä9ýtRMé>^f†D]^Ÿ4Ù‚¢ê/Z«¾]_•iaó¼÷3*j•’¼ñ2©U³]ÕÛ"BœÓh‚ _ñewàÛÏÙ½•Ðó|šhœ ªE¥Ì’þ³¡8ÈLÈÔþ‹Rv tú5)†Ø%ðRý'¥ ڇƳ¤¬sÆû³œ ý‰6v»eÔ³PH2Z»èu]ýs1˜Jc+í²bt™°JT(é'’5&Ÿ‰_ðÂfŒÆ¼GNG‹ïߪ+¸Ï\“Âëðµø6ƒ´éçáv)r$ì(ˆ°½LŸUh!º6º‰š“«¯ÍF|˜yw.e駈Jâ «™„pf—Åú|o¥Ê×^ù«²¸£¡SœZ4å­hÐxá̈†D t]¢°Ç§™4ò{Ùe›É.ŠÓv¡î<íœt³ënÐÄBÎ8YO·õ¨x$Ä9R>@7›vÓz;¶HÛák«ôÛ»\~|9žo‹Øëú¬Œ”e#̈€gJÌû…G—åÙ; J¥háAÅ;¦¾² £”DÄâÖ¥ JåÖèeé³ZüÔU.㇟è‡F7X¿‹ç'%‰S'¹~/>9«ÉÒ䉰6 ÖÌ:P@GòRØâŸê™'~õ‹þiOÊ­¤|ÎB+îØ‰1^ì¾­,xÔ8G­­‘í@Ìfž¥•< µyµEÒ}޵œcû{…,Aóm¹_`3›¥ªýwv)ã2¶t²•l²íƶ©ï•d¢‚–uöã™o) º©Ú¾Ñ'«]wÜ«r·&Ô˜W{Çãrtó,>“²ÎîIúAmw£H݈ͱNë¤ÝHbÖ¸TŠLq%7é#,°éT;m{”=8D<+¦¤ñ³ÀÊ:¸À£u2øë4; •ü¡~Eî~ÌEcú®3ð#eá[Þ¶<?07€æ ƒ€–Rs90ý®¯Ó,“†ºÅ´IiYznlz#x`´jlP³ p“§øRÜyø%hè‚U<É3/«–OÖV7“`{(ª%æ¨õ¥ÿQøuv RÿÛÜJ¯›#b»4ôò˜Š’vQ¨Ëë÷H.£Çl=PÃÇÃ7&}Ÿˆ®ª^êMiòU;º7“Ox8ih'¶¯Æ¥gvA«fx– éöäfBQÜZÑÚ ×ÂâŽQÂ:ÏÍ Œ<'z;¢€Ú;ÙÈk#hÑÖF$¹}¾P¿›Žñ®”Á)T L…9 ó¢È=¸µ³˜fS|Uv×=~%†æNÒ‚"D©0¯ïa€’¯OðÍhÌ {`¡S߉”§Ûºe<<ƒÁ³§(•#s~ oa) å›Äl"În¢ÑòŒ*W uÁMœç‡ÇÛºf•£!.–Ž~Ögèsþ©æy=åÔèó!Û¯;bþ$/¡äœÙ{†ˆ(I~ƒö™Ó€¬— ¤+Ùà¿·Ùâ}8Ó8ó²΄òüæk3—ýy¢xGÅçEt ®,5«†€!Ó¦Øg4·Ý½n­<#<´Í<ßXÒò[h“Q¿ ‡u³¥ÍùaÛ·Ö¹^Òß310# šÄ²ê/sN•!ËdM²”"*³@ý¦¦7ÓbIB©°>ýöG!§‰O&=="}qÕ~¦·!(Á¿ ‘iy•T–~ÃkEÀ÷äï:/sÆ~òγG)¯I,~´mŠË’ $Ê÷>1M“ÔP4“““º}%G¢áGöC$3[b 1}Cw¦¦Â`;²Yß¿8B/B 3ë­ã?J€½ùÙ9MDõEžª„åË%a¬®Zƒ™þdþËp’ &Ïä$VH[ßñŠåŽ,'êaâhÀ©êQ¹®ñCŠ6̉Z7=lUø6žÙR÷âÁOí7_jè¶8dÉÙ“œú Ë4óžê‘‡[EB[]ι»aîä¨Í’W‹ ^U«ŸNß³MÐɆ 5c #¿Dލ»MrJ ´LÇ›—['Â~nRÙæå–‹N•m uHRܨ<9†“ÔΑ( vKªðŽ 9£PqØNdƒ\ßóyÂ5À!~œÂ_Öãn¿GOÌQb@oEŽèŒçœ™€@Q*ïf7è•F½~>Íÿõ3’ü‰á&ÜþÕ×½Ô‚C¤îÈlŠ#þ—›°&¸[%fß,1›}°^²ó ­{»°áo'zušÐÓš)EeÜAÑWŒ&¯nîîõ¿ô–¿&£d|]ºpüáïÄí£|Sü±—›Éc¥iÖÛz^ÖõMJ,=µÑ/NpðP­È,-x.¾=X­‡ôîl:eÂŸŽ´º V’C7¹»ÚÁŸ”JsÕüÅow̹mµ¨»”VV¬_4« ‹7ÈëÀÎë…rZn¿10gbM‚r^(’î+íY~ü¼jñÏñ¼ñ` lk0Rð„Øûˆã<Á-¨9—X‡¸í©Cù4ŒZˆÝ³É’Y9Äüc_Õ£š}Ò mB<7ÀåeÓe±†S÷´úúo7U' …µ’V ³Œ>¤çÜj"PëÚDÀ#$ܪ)ªrÝ‘=‘»g9SÜ4âüBÄn>QXPö!¨}í?¿y(sŸ‡œ§ øôÁÀ}‡ðe2Knâî$~‹êê2b)¥?NAG4eäK›³A¾6ë—í_ÍXûŠ vŸóꃯó}t”žrZÇ9‹Z,úIŠY{xŸ‹J®jʯƒóV€§†y„èŽ8r™RøÊ1Ö Ïa1âÌâ55‡X…˜µ˜º(G÷Û™áââþÒ>˜s©¦X+KÒ­¦§$—ã艌}ø•3×¥èÄ0j¨(ÌçâgÂ0ô‡¥‹·+­%ýtðT#ìñ0ZWHÜÍ ä‚b…Bú§t]í´®=êí X@ž–ˆ1ALnQl;Š$ÏáÅà\Ñ#Ãk*^¹4…|µ Ñ1 ™ÑÂ/M43×9!ÍñQ×ü*|‹ºG¤kêÚÚÊTÅÿ4P+g9wx¹<Ý£ÓƒJȾÌÊpîµ/ÕßÜÖn®ÐÏîX Q.e:øOí­P(×?Ù¿ùBÁŠ€_üÔµ«uýÔªhea–•0›‡(ñrQw„)Ñâ†lnÚåµ§qRÎô$ž¬OZ·|A¯Åña‘às óÔ°üGد½ŽìPV51öŪŸŸ7TC”}˜]öáV·5Í ±Œ9‚€\“f’t£,([¿M a1 -øÈnÚÅJC¥¨Œê~0$jd·XÙÕ HC» êá=òsôã`äçÕË TÍKˆî[b^ªyÍV/€Ö¶Ë jÉ|Õä·1¾ßº¥r嘚écz“t¸¦[“•dsÌu3´Ä–l~o°ºn¦·¨Oàv§—Qµ‘³‹ÿOÈ7ø*/§Õ7ul˜Àžƒ-;ñòËçÔD¯Ü~¿ é·ÑkÜ×­„MWÀD°²»?D(JÆ;ô£‰)IךäoڠȘ‚"ÂÁjÚá2vJÆO1'çªé ˆ¹æ>&î…•í\ø=xFß7}i¥B˜1DðâÚÚ ³i]ŸGs/=ôýbéÓ+˜ÝkÊ<=ÉùÂk'ø»$£Í(Kñ’—.ëÙ›Êú7ݘí”s©ßÙ~"lÅp%Ù¸±`e‚,¦¥¨îúêÇàdÂR?|êpԿ꣸?;XíÆ¹nn4Ö²ÖÈHNÇÜÕ˜{Ê>pPü Æ:­‚*Q™”H§°¯´î¢aÉÑc“Hƒ¸ÃÈ+–F/aëçâgUˆ“’êàýôaˆsïãéΈ=hÆ1¹6Œ¬.WâÄ.­Mˆ~ΠÒC÷*!Òáï¥Ø Ñ‚(ä÷YÖ"†EÄ!!( ×FhÂEð úSäÊiÃg ˜RvZ‹ýtbHJ¹9à_Tøg6úcgJ©öƒˆx¿ÂV~ïÚE• Š¥2³o¥<ˆøëÁ"u¹âi‡·]~sãÒa-¤´!|@49)1\ª÷QÐ_?!})…²LJ£¼—z0PdÚ4ÊdØ åÝNñ?½„ÚmLðòë €”˜Èâ€WU×¹ZëîFt¿¡Ï©álŽÕ (³ ÒýÉØO¯:!iü^˜œNÈÞNUgœ}Ê5À‰=x¹;Rw—ñ‰˜£Ä¨úq»F©7ZBbÉF{–Nº”a!^uöÖw=m̆‹ü  !ê/'f“¸ìƘ:åf†Ü%R;äÿÂ4Š±Î¥Dä–(™U,”ï ¤ Y I¿MŠ0ƒßRv’½uDLà?5¶iê$5?ÀKÛWàáµÂùÀÛ@"õ—Ï—]êþXp’ŸJlÐóm’f][æÄNÛtÅàŽp.p5Ô( 0+Ôû›¤Æ!'‡‰…¸¨N#,,þÁ”Cƒ´ô*ÅôH)UC±”üuÎ ½„¯0çGÞ§þ¬öÂÍ(âÔÀ«ùÄÿ—û¾‹ÂKßJmüSDG`‘Š_\]ñWI96ôpø˜±üò͆×_s¦¿ ˜¾JS[“»žïfY‰û>Â.j’gºT;´Tݤ=Ï—¼Š1_år4 ˆÁ¬pd ƒ!«jßÉ÷òÖŒ÷µ‹™2æbr©zcØ%¯­Ïuc¢9}¥ÒT«‹!|#Ø’ˆ6i=Øç œeª—:†I½f£¶ß×k ²Î∂pwY{€dÇs÷¢:îX·5»Ra_gÛ)Z³úN™Ã*Ö‚þî/ d™{Ø= FqÊ÷_¥Ô¤$7ÄEÁîçw§ü!Öm¯OÏW¡[ÌkôRÄÿƒ¨õ¹õc¥%à:Õ©>žû~ü)Dد0‡ˆŽç3mʸO² ë~+rù dI-ž/èýËäƒ\y&¥©·' Ħ÷ÍärÖÀÒ¿ %ï.Ð)ùÃZ)t Dc õ|v‰`Fª(¼‰\¥…eMxd¿ôÛ‘ÏŽõý™Íý=\‚®›Écaup× ÷X< 1#½ê„–pcñÉ-B2{#‰¹ºyDÌ@> stream xÚŒ÷PXÓ ãî>ÜÝÝÝÝm€ÁwBp N°à‡w'8`Áàz'»ûn²ßÿWÝ[TÁµß§þqX5~#»æoa×ú ìÚ¿„]ç7‚°ëþFv½ßR»þ¿ˆ’‹Áoñ3ÿqBüÌ!ûòëÒû×’…¹›%d rµôpüWÎÎÁóÂä`üWÎÅñK I›ýïøÄýwL“Åoñ°0·´ws0w³ý#>×/±ëHw,\Í-@k÷?ÄÜÿˆÿÞÞ£²ÿ-¶ºÿÇžŸó_ùÿq€4Êò_Ä IÑì™ô ãú%qtüݰ_+Àjõ„PþndÂYÿaàù¥wñ€Ü¿] µ[ÿväf òü#Æ/5Øã&°ALl~G„èm~½áÀ?M ‰þî#¤=¶>ζ@§?, 2Ð’©Ý2ö@H'~gÌ)Ùá׎ÿÖCúöÇX@.sÖßTÜXN»á÷A¨<-~ÝÊ6¤yfXÁ¿“†ÄÿáÅÎ)Ôù·Âá ù.àôŸ“åbÿGúßs…Rdf-±mÿG{Øèê<> µÜ¯^Yﺾ²o£s[êÛÕ<Ѝe_™cµß…”ÌPç[dϾ¤Dpg&EbÀ9õÆœ¹¼šÆÉx&WH`D 8Œå,ò3Xãxw;ë»R¡ÅáÖIHEhð’ögtŠÆOb7U`Þ¯´øíªð|= Ôêh¹ÿHÅ‘€¡’<›ƒë"¿ì(U@[kˆ^rÖ–¦™3Ã'çŒù—ŒÖ^^2²ªÍŽ&Ûƒ‘È×Q®ŒVÊžqˆ*>~Ûë‹p—ú—ŠGŸ& }‡ ­7Q6^,7I¬H=Fºà)#\lóuúÚe~¤ªõë±›8tžöÞöÖüÒ_.}ì‚X˜’‰…[ø¾‘—z(Თ˹š¿Í Ù¨‹ÞpˆpIFû‹ËÙö×Qþ¨A:Ÿâ½¯—IƒCòD±<·N¹e‘Á‹ ŒŒ7LI¼¹…sCeе7¯Ä¾YU‰MµÉB)Gî\w™–åß[a¿²aütw Ü´+rðnÆ ;Ò<¨¹)M—äÊ%Þ9n}Ö¥M!ƒOý…»…ù‘}IÐøÄÒcE†#ã4y±ò¨Ý\»³×Wèo ¤b¾´u¶·nŠR1¬Ì¢Æ—x>¯–éµÑÈPüXg=/¤9­ÚÜùŒWQ$|Y¶a8JÒ“´h\ó*0}Ô`ºË`ÁgØ{°úí§ÈÚ])Äé=¨Lœ†­ÖYAJ~’¶pµ€Û€ö„ÕŽž)óË9;ÓÇñؼ¥9ò†§íX“ý›~¯¸¡iå¦ioÇæYümýª4¼Q‘Ãet×-ÜŠxgk?6©N±òܽlAã}Öêv[ÿ‰I–› q¸ïC5Š3°ŽYW&Ë4ºËÁ1+~dM§Ž2½D+'å¤ÙõiÄK³Cœñ2ŠòøE¼bøZ¼âËÊ÷ªjoXß­Ä¿•fEèÕæ|J¼ÉÁÛ¶ëÓ×»”ž÷('ÿü{ Íù[¼„üçâõü7šü‡y¼Îê_b¹Ø,¡å2ff¹N= ѽô¿ô¤¾ÏÙÊæølè>ùuh8uéÃÛú,QÛ‹Œ7ÍYëO ‹¤0TÁ(VýEfo¨jáhá™Ñ!X”¡ygéß}ôמ:éÿxðÖšá¶Wª¡ÐýkÆ*­»$O¸"3‹{ìçç FâÆÂc;Þ.êØsþî 6=!ôTÔˆ+Ô¤K‘öò¤Ì^íu| {²»ôDèצ•1ô©‚`vžŸdL4DS™³S²Ï»‹]ðÃM²(îßÂ0°Ûx]ïptæs±çå6svˆ•oÕðú~3÷ÝŸb'Ù£nbYË8ý#íªOÛ:Xv½Ï%c$ìd×αñeaÎo7Þ‹-öáft—3Ø"WÞ82ëM—Oó'w£?Эçò?.ïÇ$míŸß—ZÛRw8çß ÎÈUÉèhý>ÆÍ~Áð*ÒÜÖfÒòI=ŸLoÔqLŒwn]ËTKÌ–‚§c[ŽpMà^w¥ç" ,>Ó¦ÄWF`@«úMɤG÷˜¯gê†ÜßLr¯dª9ŠÏ 2æéÌû® HÌ´Ä'|iÆi¢…’«æ‰BCTS³Ùµ_‘`|­¡‘Y&Y$ gRÍýÈÿêBühQt@â€jgy€~_,ñ“@ .í6l$Ô“DŸl!³kâ¨V~DÊ,¾>(3L‚É>¶t‡+h¼\š2Óã¬mQíî£Ù‰ö”‰T=]Jå4-‚cÆ)ª"-¦âÆ4:­H.v–ôšš “€ò®ßMNY 1£Ü5QæÓY|½XÚào»—A2ø,.¶é=ð×úĹç÷¡æe¥^£‹*UÚÎc%f••ï•ùk~˜â)Ø|µð¢ØHCýìÖ2¬õ5ªRªÖ"tH@×…Â8ÔŸïÕ–dö¼[øñ-íV·Ùš­ B7š–Vœ|¹“\4ÐáGcö—±Äów×=yf8+Ws›!éÁWó+ÚR2ç¨U :a¸r}ö–í«òè<펩ŠRÖCÕ;x-j3šC¿0º—Š},’‡ 1Eþ‚o¹>f\Ï é‡.oSn²¨­¸¼ÅÖ‡7ï{™.rJ¬6¸i-F,V\˜Rå®XªI5»|}ëÈ**N×½²çðˆ.cdMµsÊÉ0í]6÷{3V¬°0,ˆà£@†Þ/©8ë­í˜Ã@<监öãO`Ì`E¨CºÔ?q¢I7åMR3Q6ZNÃH!–?ÎyN©É×¥ºû%öÏ\eh½‡q»x ¸Ÿ¯í¹…÷ûi2õóAd‹^?#Fü J_fGxJVǨ}7eàj¿Çî™É¼ÞP@T¥è,òíÏèù ÍBÏ÷A<ËÝŒ1m¼¿¸ŸŒTU‰üÚÏl›Âÿ)¨Òœ¡jÌjG5‘žÅ]žÄÖ%aþ)ŠŒ 6Ïå8¸µ6¸Zd'LåÅ€6rg?ù`Ü/fo0¿ª{£!§ì)·+ìÏçþ…§û>ÄÕÝt)¥¾/Ÿßù-™}ÂK´òJ&öŸC—UxöemÊÚ•£m7  ‹^„ÊXP/ä‹-\{×o€5õºIˆwÕ¯ZÉù;vϵ=5.Îú®ýð2çë°Ã -pფS—H“Á³ë`_›+A—¶Á3¿tYîÜŒlÕºGÿ’Èš˜Ð¥}Œ5´p=pÃ{#5N3Ü?ËšŸ|¾B´SïŒÅcPÂÛZÖBúÅKWð><ÌÔ‰LP$¡do¯Øà‡ÈodcóÀí°ç_Nó™8øëK åAs†3TWѤž¯–Eyµ-÷‚ÆzË¡h›`ð"šU0'3ÆÙß¾ß)ÖýÞ_þ„Xºø¬³Œö1]Å‘ÿy “‹;ÆG“nªûiu½4½»ó e¥ïðXµÛ4Ù¿ÂÒà‰ÄW¢pûµX“A°8ùJû횘ù wê±…hüŽåø‹èç!DýÎð“ã¬9‚è=­b‰z8ÜÅX~íG™}…jQJCgãnÔ%øaçqÛ· ]y㉥gÚ0|Á³I¾ù;ßÛ•"Dë‚ï`’Èc«.ïòuŸ©Gõ’Ã.á¨",†ø7ëeL¬ÞKŒ“Í)hÐAó2k1qQdÅNùèC™Ñ*7<ÒÁ¢V"U +ã–«‰¿ê·NÖ¢´&yK ' ¼N{Ò+¡IÔhï•8@5.åP Þè…âC;µ¥ç£}Á*aŽeýú*5‰‚ •-ªáÔ«IY¨/V Ú÷ û*Õ‹¦€û]¡Uv»-Ð/ÏÎ#U;W-º¦¾°óQi‹És<_ËC}Ü"°r.|@Ú ]?RJ·©9<2ÆÆ’ÔQýŽý;=ªÕ=~ÌëW?‡åÆÛ‚ÕŒ p¾ 5œµàk@w<¥<즴ÊÃ2%SŠff'…\mZHäNŒ>Ìóù/“Èù¾rb$Ø*‡†âÔ¿Ž`ɵZíM®7Ž€—ÇN!*°öb»%u ßýYϾ(uËÔuŠMØÍ ¡ïû\àTx`xÕ–>íNê ÖŽù.)¬÷P5ŒÇóÒ×£0^Ìâ5rL2Ȼ޲ÅÌõkç :†üá>NaÜR‹©6R:»æ¾¦üÔË-}ªãp3úÂîÊ˩ޗóðoð;R°Qo4pŒ'eä«´ì½O3íl,rä’¬XèPº6NʳHXÞN¤Q:»t”]ˆàUˆ˜ìùz3-ù™$ŽY»fnð€«š"Z.ó¿W¸Ë%i-K>NÌRT']6BŒùn©ð|š›$¢ÀJ®èÁ~ÂÖT´™›¾†Ë×Ô· 18wewîVnø™’Ð*¾–mïKîC¹eÇ‚º›s€€}ŽÒ«rè7›Æn¾´ƒ[æºâõe"\/Qaй=V…È´Îï*“ä¢^@ó•ê¯7á;5ãNNø=Ô2‡`~¾¹CÊqþ öp˜ìÞû¢ DÁ».…o~pZƒäÛ: ‘ß°™Çʳá‹(bò†’ ê½ή¨¸‡pÞn£YW§Ðò†ý§˜‰óŒÇ<™JûŠO¨uðçíªvi_ˆªV—¶ëuD³“n•guÒbèËnÒSv­!–)œéëœdòÕv²w="X½RPbÇÅU®Å¥ìË´(Uï 9io±¶lšœÎu­ÿR*dã{’–À­_­8!¢¹uf|`…"UlŠÈ=+ç¶z¹ü¢Ÿõ|£5fÔ^‡dÅcÛæGPòc~ÌÜ1V-—CÊdò–Ømu‡©ªüj /aæ«_¼ œ¯³•ëØKotkâü/£äw8¼ «Ssg7aóÓ×õšÙ7is‰ˆ}ý[,Ц-íÕ,ûC PØòk»{nŠÇ|‰7å§+)Âе^7Çh”QM3‘…–²æíJ@n„ÐH§#ðuÕe <(#{i_gr¥-,õ2e­Š#õÍV[€ ÆúŒ±.Ê … M٭ľ˭Bß}B´·%'Å"Òô?DçJ·Ž¬:zdGŒóܨîJ³hY4`϶¾Ç6å|£SPL˜‡POÌ¥±GGŠ_øi²aÿtý#8B!ínMÇ‹]ºÛ°ýI9%ä!±íÈq^+ÕžÛÃa.º1æ ç„ÕË•9nÔˆžd ”ÊB£dé>{óvü*òFðéýܱ¶³+˜ÌFIon(‘Y̼èbª¶Qu¢å{1ô0XVYEA@$=A+HúÎŽˆÜŒÈ¢%üinÐpØ!)®¸â½¥Ì·Öú*–J©Nœì彟™ttŒ ~ÿMPº²Zi¿×8KοR3©»¦6² ðêr°±£äôf„´¾dk§¦³­³ÌaãòñmÆ&`ðºô½ø†ßjéÍɦåëùš¼„òR_5õ‘išó[V ä;*G q¸vC‘ñ`¼¾x˜ö•À¾$a[}ÉYdÚáØ# ˺»¤~vQça}±Q€rF+¬Wж!:„ëbWv–A2üîàýô'ÆœÆ|qœ)ÒIׂ¶<4r“É’üsŽ®ðþ=¼®Ÿp~ÊÞR Dž+¸>5 }§+·‘5éî­¯ ¬öVÛC0 VÜø>CH妧.5’DyÓœL…'jÝÄK–¶ô~5»%Qoäx7j‡ó!‹vƒQ+èÏ{˜ë}Ã/Óž8‡0œHÁó@=IOm"ÙB¡ð«¸c’&†ó‡¶y€,·ÝÆ~({¡Xø7váÁSIN‘ÞÌO_£~¥¼†ºÿ´ÖÞ/HÄé/žà+³®Ïu¥‹¸ I"7œ®°^’³GøŒGUbaØ­*ÚsÖ'ø"WÃ+rµe@º’ûƒ(eŽî–°àl•<Ïq,L² ­‘Õ›]ÅÛ ·Ž·„~êâô^D ûîˆzkï^€8=ÞjàpÂheºp'Xø“Ü% íqÜwòZˆ„‡äf)éͨòìܳbј OÌœ}©ï¨O(%k…~qÆgóVšêR–)åyTÙÌ'@v¿8‹`X”Þ2qþûÏÔ÷ϼ늨|Ã_Þ9@±,£Á€/É&ðf=¢6lü"%õ”dì{ÅGF•Àñ ùF4M7ì! y­¦·³3žç8‹À݆|rd6{O*ÿJÐõ!›‹óéuo¨)Wð¦ÜzT]†§ïÙNfßëS`ÔâWœYéÀ(ð£Åuz«h¹mµ¹÷é 2´n†õ1|ä|è¶Àå-IÉ‹‚èªäK¶¯”®ï‰Ý2Ç5%«¶a„»¿ú £ÝÎÜϘQ0³SÕp+%WÆÆ–gyŸM–?†b´z•…£ÀL“!þª0ÑgónµÑ’¡Mš±´òŲŒ®“U„rÀ„†¾G†…lSh¥çûKQSe{np/xïIinÝë¯Öy°«G²Ý"3 cQL¹Xyé›6öCÆ0Ò|¸M¢°é¹ fæQ*¬fÎ%˜;ã{ ØÒ;÷d:VÃ^±MAÉâU(csWžÍY½Kô0Ýf&˜Ï’1o  Tñ¯¢Õ£õÍJwÌL%ª×ÈlKf\ÎöpùÐ(‡XÎ'ˆ;z;””¯+Nv2-:’‹• ÓÌý,ÀŠ™òÛNSÚaàfb¯YÒsÎÄ®ÙXÿvRQìÓrÚ»˜ÛКws`ù9£^ÄoÆ 9-›Á˜XCÓUƒÓC»’ªOÉÜ…Õ¥´*|^˜ÊQÔˆŒÒžoQÞ S†Á6O—| ZO2/öÆœÐG{gVçˆv];ÞŒ=?9ùHiá¶raê%2p&í)ÍäÜî~ œ¥+ªµé_ß¿ø ¦:Ô¸mzÎmxZ®¸ƒ¯Î¥…ÝP°´+ã,µæ@QIlà””ŒTÅö¤ ¬å4Oœ~9è‡ww§<Òö¦ñŠ&@iÛÉ#»8èe×·\ÃÑ5F–Óp‹ýR*÷«òxö}–Æ€¡¹é.Ë©‡j¿åBB™ž‡×ËÍ«ø£¾s‘Bw¨cPg©ƒ“V øG]¾¿l¡Ì²uoÌN§òÙ›,›Ë×9릾ìžû:#òae“ 6û2ˆ\­P"±I—Ô@r¨?ójξfH0ò[Ý^ð¬yAkèø\g+–fX-÷xÊ5sot(ÒL?þ"sW&A³¼dUœû`K„ø›ôUƒ¾ºˆU„®ª t²H¨DNé8<›äxŸã øA›Ü«ØR*ןÈÉh½”ºÑÑ¡·˜p>ÙQ¦ìAézÖù([X{f¶Þ’Ð0ÍFÈ!VE¼Æšjü,kj~Ôû‚&é£Z§ws=<ÎË÷Ï…q a:Ì‘´¼]_PÃÀ{ªý;‘9¸)ãúüyÏ*µ‹Å«·Ó†d°¡îØ­¾S^?§l¡,‹øS«÷ôÐ4ùqü²0f³õ+¸ì_¸µœÒR¹2fº¿ŒÜ楣_u¤‰QÒUŸAßTâM¢¯¬³¹ n ‰˜ÿ™0–ÐHÉÕùùÙ…%ùȰ‚YC <|*ÀKR}iG䘙‹VFÑ@[ ×ÇÙâ×K,dè 8þQwGxà¿b’áÖ:$k’¦ì×Ã/Ôׄ7E3Ê7µ"±é.´¤ûê N×í2gb@7VÈv ñ„Šøã”7E1Ú‘uò)õÓ׌ޛ¯îEôà胞‘:¦…õ¹Í·õº=1eУmE嵜õMlõÓ Š±uf\Oxv4{®(‡/ÌŽËÒ›I²º¬lëÅjPaÀOonJBÜöÝa£-`QUŒ(Øüçi\£Mg1–ÖÖžB‡ÆJÆýü‡pÉŸ}ÕÑs²…ašڣfï|Ëøbfåã¾¹ë|Ón,2 Ežêú2'ìRvÊáùW·ÅÉW¸êë¾zú,êo9žÓ>蟣± N7=Úóž_››:ÎÚ ºªÙ]ªà[ŽbÞÕùÉ'ây€øö­çW5Æo®ð´jƒïME$¬›ôÞ ž/ô~{˃Q²{‘{>œ$6¦­kn´¥ÜS`spÉx£ ¯ðòß“iK1]ÑÎù映+åa®¦ÓªüY=ÍY@f…«è°–‰~T²5ÍöÉ2 èÀ|IÍ/© {2Øø£&ÄË}u[£.0hmld ½àíðÀhîÿ¤¼ÅôÝ8¨S =:ǜﻀ¡V4÷u[ÒFl´‹"ÌðÆKÁÂy ÍÄiÌSä> ´>·®¨²Û\ ^'ky¥ ×öÅ|ÇÒyÑ |.Á,š˜2ó‹…1˜^A¶//ØIœ.¨°ûßé‘KׯØm‚›$œlê„¿ë^Z{ÇcÕd‚Ì×8»'sõͶkØJµ©*F_ÜMYLF:òÞvòÓ!ÁU‘¹þ.¾*1ãüË>‚ù§o¢Í2 ™++岈Áº³&y¡Y}4ôÎoF3Þ7áre-жN©U´ÂуíSi¡ÌíØGbi(Lò"k^œ$¹fó°œõc½äG:Õ Ó© :жÓ?Rú)G¢TÿY¦@ݲw™>£hªdÕóTIb /!!þ¦%l “‘Ǭµ­kõX&«:ÀµMœåŽšïÕßôxüϧjÍÃ#ØþÑ7µ›YZ¿ª ΧÏ©¬±!…® ÌÞ¶`¯ÕoÖ&Š2F¢àˆ*ï~ßûãÓ±ö0€K›Æz¦‡DnT0}M½2ñ‰{@#Öté%œ…µÁãÇýV:"K<’²…Qmï¨Ò—¸ºˆª)„Z§Dƒ(Re>Ê›Ä4CVEXÊ$ÜÇÙâz¯©Ðã„Þñv>o³·ŽÛ¯<Ûà«O3—vùù²X¥`dñƒÔG̨a#éólûáÕÂT5¡æŸó…§ã H6ŽÞ ¬Š<ÝšWFÊžŒK¢-á lï Ϧ 330óŸ™Õ¢«š¼³K„…}&¤ÝlƒYl¢ý¡ã`zvóPú`%¿Š@9ÐщS^"[UÏ-Ü@á6®@i€V—†àY–-,Ïò:8_=Ž\ŸíØÍ¿bE<xyõÎåî…M-*Ú˜Š@¾vü±n6+@×TéU¦Gcñ¤J€ ÍȫȑDó·&·Gå¹ã›ö=£ëòß±FÎÒf¶E³JrŸ™—ØÔ(E\—²ˆÕö´fßû³&2Zo·îa)™ÚKr1D>_ˆâ‡É~'’§VQ±½Î<ˆÔWÎCa·d':Ï+ØöÐrÞù~¯çé­ç4,¢Ýë Y*i(~2 (,° ‚ÿöLüÀÀ WnŒ€~æÀvf8P­«%pÔ}„5·Ï䯎lÒäÞ,}ÜþŒFo62 J`Ýq€³ûª}zV½4ßxÍý#`æÆ.èèu졯bœ‚ös‘œ¾]à«fΤïsã®ä_¥HSÚ %c¯8EµqtÕ÷Hâb¡l#mí»¦L›I~~vø¢!§ØåÍfŠ ïÄñ`V‹æ ‡GÉ…øE{:q’¼ÙBÙ_Ù?’ ¸@Åúó$”+pÉ´s2«ˆ2Ââb…Á¯†®iîÍé3.ÅÉÑŸ¿¬ª…ѱ|>¤Ãnû¼ø¥1JéóÏäçý=;Á˜R³ÁiŸ›áÇÇýÝÏþådï{š[ð/ã¡[ó¿iÇ,2Æ /¦$5Êï3ÛGÚ$.=>{Lg_d¹Šbêož-csô÷ö[í~Ÿ¼µûcÍn„Ù—ÜòãµL¿¯gß‚<âÞÒ»/qãîˆæ^³ZmSÏu oËC["º¼Æ®D&{[D4üE¿ý(Eæå?Û%6ÀT¹¥ö0vÒ&ÕôæLdÙ)PÀOVò–%fcJÂ+°½.¶{}•^¼üÌüÊI´‚1½.ÃüÍy~î^äÍÜÊ*ö`›Uïæû&$LkÍ3ÓøËN[ o|þZî…"Õ;Ø(®¨æZRëIA]¤´"&T厼ÔeÊ/'…j‘%–:ñ•K{ø /fWS^ÎûÕÁâh¿¨lÄRCqÿÞµ"ËNÞ¾‹åpóÉNBàR™pƒ’¨ÅÀé> ÿ‘«äú{¤›ZP‚ ¾ÚP|ˆÜNˆu³ lÌ„.¡õÅ#·Ì³t'¤Z5³ø“Œ®¡¿Qj%üÕŠª—Ósf8œä5WH§YI¾9¡Á9d7†ÓGá¨Ù-Ù_S•ÄØ˜bú±À,LÆ]¬ô^Ú‘:;%XT]/o•´3 cF±W²©–3úç²ßüP¼!gB{Y¦qŠUKð,9›ÿ˜šŽ»™»z ü7ÛËPµ³U–À¾ó%Àä8}À!¡˜5R‘qeÖMSÃUùetÅžXdƒù¬Á®ˆ¼ã —Üû ˜Ö"þo‘§DûÈ+H29]:‘qµé¯oÈKnŽnÆI„¾exf¬ñ¼…öjdÛ÷qB=)â‘à|/ÐW^fxý”Û%vpÊ3e øQ~yèQ¬oçãOLkœ¶û¢¾6b~«¤ª޴НË-†­±n}”Ð~ ç*|*™¤ódßCºÚk-î?õ¨ÆÝ´Oöa»WŒ‹ê¾AM i ³8»>¤Ê²¢}º¾,w™!ËELÂr¸ƒ T?®á;¾b“f6¥eY]䨾/ê0÷#h4Aµ,~—WÕª‘Wbrˆž ÊŸMˆGG’í¥Ÿ7Ä3FH†a[ž?Jkâ>§íQBNtšczƒyâø¨­†¿çÀgþÊœqW'}ös—üž‹=^×NJsßÓœøm»¢¾Z½û '6 ²WŠ?µm²ÈêxB톖§a¸þtfnÔ­óÑ›;Æ5âl&ÝùLs¥úí=Q-ÉÔŽošÚŒ«. ¥ÒGçyçâ¡‹#¦]SÇA›qþä>Y¶‹ÿ{Nó41EVûÑW‰â½ùÁ,W´žãèj£èløY΂µ¦éÔ7LŽG–Ú~< â^ª8O…ªwY—Æa«–Y$g=3ñaû7ô ŠLúÁùçÍŠÓê”ÈÂ3"•·øÝØíù•KZŸ¥o›—2vmT¼¶=|¾|m”¾0<µ?ª…ÍÖhMqèT}¯\ÌXV*ݨkI…¿²@·Ü®ý)AÞÆ|Y´p·š´‡±çøiÌÓÜ&¡7÷KpéàKt*> N  PÞ2¸z— =Š‹Ñ4Rìøá½^서ýV‰üŒ¥¶J®êw-\w9µFžÈK moö`YÃ!$ ÛïÂï^iiøÐ³°X¦–ÔǼvÐDÈßàP´Ì¾|µüö¿±ÊŽŽU»Y¼ŒKDÕGhðÑK£f .t™%ŽÄuˇAèb‹#/¦ãkîɺTüÕêm9G®‰CÈú‡q{c“þèê\è­}BÝÇ¢æ©Ö%%)tzŸÄÖ=ÝŒ£á:›•¯5hB™š>mx‘ÆTg ðà”çì¹ta`NK+?L+a^~¹Íô!Vò¸äÇM‘ÅBô.zˆ¬6µ¯'õWÜ0Á/*E"ñjù6º/Zë·ÁLoâdéb'hE„fÝ]¸—·O/ùe"7¤n³ØÑÅœ˜êSŒ3á{y¤$˜]µgàJV`%»ó«“Vä§pYâ´n`Ë ¼©¢Èp¸×ºW1¢h†æÌ ”í¤¿V/¾XP–ð•—ÒÇP@A Þ¿FbãŒýF#òœyñfUè<=Iï‚} çã¾0#ß®rýù´’ïPžï,qúó3îMSÌ]„qóV|VýwÏ®U¦q”-\{Íа)j¾8‘ ë›0ËÎ>E‘ȦÙd¼|¡ò³\_mv"ÖFLˆÑ”Wž+„÷™VTZΓ$Â{³Ä0zûàuQÛÔWr4±ƒZÌ ì„S³s×K…;‚ “öPÒBÒ8n»\«ï~¶Ó`cô¼¹f”ÀäÉ`R¯;‰*X›ŒÖT@9é­Ñ†ÇD?‚݃õ£×}-ˆ`©šø÷ e†w³œ»]ËÎ3ê9F™™]úŽS.©wUäSØ^îòc™Ÿ¹âƨ_=ã{m ä‹C¥ßÙïÈ`‘|Cï%áSqË(XYõ8À5?·øŒ3fa¦¹ \’gª²P?xÐLB[ªÉÊå¨5D ²]¡$;‹<7~bu¸k2¡f.?¦:]†‘C%Ž÷^<ú˜SdÈRR¬h8âv´w¶íS¹ ΙzdI¶ ÛºÂÄ- mÍÒc!”îˆÀ]&«ç)¢73”Ñ>½C§r‚—wD&[Y?g ÞLsÕžÔg¤ ä³’ƒ¦ìÇR;üäVÂf—Ÿ(¦”£3̈ñåÓj“ #s¬ú’%¢h:SNgÒ¼jz“®¸hµW•FÂh_½CÜgÀûï>ëD{²°2cõ$j·oç_E¬|eöÐr@Pú¸ê2¨¨M¤ Å"}ÈæmOÑËæ—í(öµŸZ`?8%çô™bÏE܄Ӿ½¶³®ä>ð«T äÞ&ê‘Q<åk‘^ÙŸF–´ìaöa¢DÄæd4Z Ó}¾2;1îr.%Ö¶QòîÿÀhÉ ŽÖfRëÄx5B ^£AúÚTöþ¬fÊ•æ±MS‹ÑDñf»ZeŨqoñîá„ú'g&´v“UûÉ"(¸ôS¨ÛáøþÓ4^ë Ôš\÷Ü×<¤…Zœ1uÓõ,üq“h4,á|Èi›”gé‹saÉJì0—«¢ a-\F%qœ¶i„!é[+›Í—]-¹òµòõß](¿5Ím˜ `5è0ùþ„ ‹ÀR‰n+k;çäÙw­àã5;ÄvaqÉÒ%XÞN›VΟ1 y¿Œ¤kNÅ1Þÿ3ßXöär2¢jW-ñÝ×°u[¦·’’-›óhD‰Am/X‰Žg¶6FÒ©~ ÈÑ2¹lçT/DX¼,¹^ŽÀIN»ÐŸ ²S¯ãöäMé9S/Ô6ø ë—Y¦'TNŒ¼nÛ±»:œ«;Ïo¤‹ä 3Ä•\ºKò- Í•ÏZ׳ûj•6ž6÷‚%Ž)d^ù“b£+`}¿3Ü–q‘ #ÝMˆ0-º5îÀ§Vº¾œv=¤!ˆ[½û*B"?In&Ù®ÿ1`ZzªÛë©w%·Ó Çyò‡(çöЙŒ²ùAdÝtÈ÷ÂÛg,²ÞlÞ¥ùQØž]"äŠnìwjÆ_?ÎÕ47yŽ4Ïa)íc`lå¢ä³ƒ:/} Ñž„š50ɽ£5¬ÓìœÌßÑÙL}žè–>Z6¾{í£¤@?Í ö¼%ªºHÒ£4*D¾¼„¿¸€"YSMúÁÅ«‚£*B»º8® Æÿ*ò“‹Ú¨1+9íB|Ý+Q^$p7ƒ`BýCg¹ˆÊ:zËþ³×qkƒÕû­W4á°SL*$C柔«¦ÚÐê$-ü18 ½wŸ7Zœ~è¸T)Qš£ é^ˆh»ó„Ušî“žlwÅóÅË–\_o'#F4P´Œ æE(Î1}ìqíáL™Ú‰2BŒíÃ?&Dµ¸Kd’tJõ[wtMõK{N¡4¿.ñ7N²VúrG“b1ždÀm›|ikœH(× Ò£;!nщíÖHOm¼Æ ¹Tnóä-e¢67¢ho<’ûq_ÓB¥Ê©¾A©#x·?\„ÞCk“óÁ_S©È"Ï.½RLy(ðÕÙ RÃCè~)æ÷Á¨YM_QÑjbWl¤bèßèãÙÈ«ã³zݶ~odÐIÄâÃXÏsi@S)–o& ‡þªf©0Î÷8µÜîC»MD((”ÈV×ôEÈÎbœ¡Ó¬Ô/껯P†r›'í å‡BáüxÙŸæ¯|[̰â¡'`tÒB}@ðÂT £\]x-Ú}¹J ùÐ{¢ýåÙP…™¥R[Dúói˜ÒsÖèÕ}c6™Õ­ë&òœ´cGËõ1“&ŽŽ) '­vpîT5¿ä'÷±`öFåUkÿ^kúZ§îæk<©ÕBõf-½‘S|¼Ë€4åëKºÊ6$žwhâ«:ÑãºغÜ1‰IpsTôj_Çh}ûzaªD¶‚'Ü#þ¹óã&T¼÷ƒU(¿«Lñ‹|êöËXøŠeäÉÚÍú/‡—D‰ã¥ØtK0K“˜n 9Ÿ#±Y¿0¥ug|¼+f²yf•VaÁ–Î"Ì¿bn!ZnK‘»)[ˆóO—6)h,Ài¹ÊÕ2‰ÐÜÓU/˜ÚJ‡þ¦NW\êüõóîóö¨O­ :-BɹËaŒÂ’èt­¹']9q÷S_ææ÷1âÊ+|mµ°^òCÕcBãÒ» „™Yä]ÃYÔÞNHܦ×;E„´˜ ËA̽ËZUùm5s—Æ¥-}MÉ·RÔÒ6.ºEߌt2º˜ÏRZøu§+õ=†¬ «\PX[ø™ÔsfFLEHKkö[^5Vs 6¬\?46Vö1OÙìI´¾$1É>K‡Ón2±” Æv©Ç·w+ÿˆ:©Yô ¨À‰¹Ü…0Äó” 6¿½\{¶“½'·ëjä2È7Å q#U]ÿÜìTúÖlªº“M ª,:Ú¹ÙzÒæð„O4 ìTJtAì)pjðîÎ)k›¼Ó-J¾‰¾+?Àuh!Ž[‚±"¬gi+õXíâ=F¬S—ε,÷áwp«Ö „I­ÒÏ“+’ä9(ÒÛÄMŠôO¯“ ¾ì¡|lÕó‡‡>½Ú"ï>hõß\¯ómŒCkøHÛ—¢–ÏF½ˆ8¿fe'•ýaAý…##…_B79^ÏãðMv7x‚&«júºG3Ác~p|Úhä ŒVŠâXßõ¹àýR4y—]~gF,ñ?!)á“¢E\↊²¬é>xQÞÏtÐêJMkØk±ùdoN2ùÁÞ_*ÔpþiP´ºÜ]¤‡{O*Æð²Õ Ë·­G¬$²{Y¡ÒsaŽûÌ`$N62'35(kõ5~{v·šéÁ¡õeÏ}tü™MÕ%,`,†¤Åœ ¡uñ ƪ£4•{ŽÈ/’·Â5 4õü`!7j-JéÍM{9I¦0Œ‰Bc‹*<¡2úƒþ;#¯$;Ÿ¼ç¨Ç8/þ4)<8ÙÎwÚ­ÔÈ·kÔ”YÔs?[Û”O*¯ƒƒÒ¯©š5͇"å ¸Kñ/­' åÐhíèÑs‹Ø'[³;K×»ÒTjÎu•ÌŸPáR¨ü@óÚª¢°¦ÿDkîËXLeNbÈ[ˆ-ÐìR^ý±ká\¬„h›&€˜8“zê\{Á;G[ÀÊd«"Îfü_:=æÃhSDlæå«u|)Œý]NS•çTKáãdæ¨ÝKmñtµ^ò‰„c ý.öµZú='»ÉçµÐæÜQT‘He€§ ߟå:Ô=ÞÊÅãŸÆx×+j½ö¤‰Ùjt€Å  Œs—€Òªž% Å¨ÑøìŠ>Eoòu·o:¼=dX4­ÂÌé¤èµX#©? ü‚*,¹ãè˜5RýÉÄéšúŽ}äÆ&uÉI¼2àÁÈÊA uϪ9B(³ÑçÊm>Ùã®WdînáÈš¤#sƒ³Ä( 2œtÞ4Ðm>¨.º~âÓ;>¢\¹»ÀÀ c›“›üêw›‡F¢¦·®¦0Ý[Xñø Ë$Jk~i«ÃÉ„ÁãÝ{5;÷Q-â¾³ŸÒ½ÜŠõ¿¢y¡pà2©=ù¼&¬TQR0¢PS¿@.{I<\»Z3ÕÎe ›˜¹–~œá¿2õŽkV9ÿbKÁýæ^ÓPÓKoöÔ"~ùCFOæs®ZãJ•ßëeÙͽŽvlšh‡þÞýNÇKÜUû÷n1µUëÏ)Æ¿ÑÄÒá(Ÿ‹áÇ%"壙j%QA¡ÈÈ©±om0òø”Õ×ö•mìZ>öÝ;'F3qG©8®*:-|Ý¢ ºGv)Z¨gîÝzñØVo¼-Ò¬ûª]ñ›Ó? ”ĈA)qüÀ*ïl~–ɦM§¤G .Í$¤ÆA§m eÝ-µFNO!ÓfO[Sh…¿'GC§Îs°´k¬‡ïËé“1ýyD+5tºÒô<¨å:¸ƒùö‰þÎÓÕ“ã5káèmú»~™hرfÄÁ¶ø†¼¼ç÷[Î b‰é•þOGµÂ<ª"#?ZÎjmݬ;C2èÊ¥úÊѼŽaYËþtBªxFÁ»g}ÁïL^bvD,+ÀÙcwÇf> UF@šQæ°T)Re& ¬Ñf ’"Ó íön/ä5ô$/Șl´ÊlïškŒâA‡³õ™µ©oÑM–«Ám IØÚ9B¹Æ¡P›,¿k ¿ëœnçF ͸L"´z»×È¥ÖùÙ(påF¨=m %¡x$^L; åyq#Ïï-ÏSÂ%ÕœR`:Uýü"¨¥ÓÇ •:ª~W)­×ØëFZK å.ë7 a‘R²~b÷5^]N#Ejh/~V³]šÏ ]½Q{OÇUöÈü·H3«6Ôé2W¥’×4 A&A)#c+PÛº Mg YýgwŒM{Ð{èת’hIohX}“–É›5ÃÝu‡<‡@ÕFa¬*ì²Ç)˜>ÍÏ^¥‰»LÖ:è)ìiOÍs #ÒV“2E?‘Ö«GöÙäO’bÚ Ý’}ߨ|î'èöÀC¶¸õdz[ñä|È)~ÁicØø$®¯C_àlìÝjâÒYÓ×L†ñ “/%~ß=§#‘>€îÝËÏC‚]1ç)öd¾EÿÀ÷È¿›(gÔØdÇC’x°–Yì¼¹‹¦ÈH8 Jµg(^™{.T¦ÍDùc,¼Uꤥ8ü'R+ÓP3=Jržñ„3ï*üÂý{\°èËF?íªªg£PõØr®oý飬1Ö–¹3Ô-Ç–êÛaë Üú7è¸óf©_.²»” p`nàI''ðR‘Ügó$…Ôºí‰ã^Hÿ0šÇÂôöå<Ú“¡ŸFmé7tzDN-ññèÆi±Ö¯¦Q·™…{UâÙ,‡™C'‰gýŽX^@ äÏÌÒÑw/»Sã¥-ãÖ ¼­uíE2FcˆÔ½¥¶Iv÷(-n¤çFÍÞÍ7'{” ­QÎ…§·š~µ«ç(M±×&´“’F&ø}+ľùZÌéA6»èöƒF={ÌQã?ËÑLêt0öK9÷9Íu‡ˆŠÆd/ߪ¹²ŠÛ˜M¤EŽê;f è§…åê ÃbÉJ¯`ZŒ~‚˜~ƒ-Ñ%…ŒV¤K,yG[#æ#›K®ÓÈ ?NÙø{³:µ°'ž6ùDƒ®Ÿc–È[½s|·›S -Øêã˜Ï¤Ë¹úÒM—?CÕ¯ ûÐWí W Ýý8ëÛô'ç×E  àÊj¤û™:QQÎßû(.zXù¿µ”ÏšúÊNÉ•‘,ìÉ (ïÍè|ê°E ±ÒÓëeñ{Ž?¹'tRÚ?[ì:VùËÅÉ;Ìu®lê”$ƒâßxuz?ÁF´äX)šC㦇ߺ-õFÝCû=‹û¤ÄGnOÉ7&# ªÄ™+{™v׬™‡LjK,]Š•ËND_·ü*âDƒÐc¬1Hþc„ ›&c©z©4TêöXD€4Ç—l0Q¡ÙŽï´‹ÌÝk2Õp~ ®›´¬ÆXDHtxAî®+Ÿ3ØçƒØÕî¡¡_u‹æËÒ͹lBåyYz³øKàâúMFbn›{,¦OFXfuwtõ½« yã]KL¤¿D˜ñžw®øèó̰=Ò…:£²x;Yªƒ”DmRÚž.4Ïéƒ/¢ÌE0e Yîû.õÛ;^èàÅò³]X\tÒ u#æ0Q÷ð™3¤+cç|ÝW‹<}žÄÖ—i…ê`DAB§Ý\ŸÒ[0’ø©™0µ»¯Dþ®]Û÷ý»Ù®QdÓåW£2½Ö\©ë3t=_v >~9EÔ'[Ý`›XÚþô¸™Q!ÆtK·ûS°ÁಧàU¤ãšÚz·_Õp=é@¬eöë‡YÚ(J0·ª[[ÇBÞVô û¸º–kcY*<ËÆÝ§ÉSºðnŠTb÷ÀY)šŠ8éµ¥‘š”ß}ù–ÀpÒ4ã«f´Öù›ê®®0›obXÈÉé ÐN Þ-ÉÕF¤H¤ºÁù$¡:Ì]Û‘Xö(þGT õˆ«ä÷Gø„Å„ôMwxûz¯Y8ê%ÕW†fàöZ÷ϬoW€ðçM΃© NÎ}Pí{“PÞѳ@µo]B#à²8ˆò.=m†AÎBFH»¥šænO„Œ¦h¨ƒ°—EÉB“Åâ;}—NÍ} Ó¯­_–Žý©—·ˆH_¢ö9k½B±ýNÜõA»õI´Éê;}gîÞe2Õ‘ÊТAÖK‚¦nôêàs-ÈÚ€ÇÞ®¥NP¿ßB•*°{‘¤¯^óˆ‚UM[¯pDZl¾a`G¼ 錃é½Q÷BA†2¥ÖUâüòÚ»¼Ñ½óÃΫÝ:†¬©rÿw@îi[YNÄ ¼˜×…µ\îÄŇeUFØ·»£—ôÍj…âkûç,äμÝÿ'O°ì´ýV)LŒ…o纅—¦‡‹O¿ó:Ðó˜“?ËhæϪLEû’ðÈ»qq±ÌojS} *õÑ+öàþ͆ڢw W\±2£ç9#k_kéÄÖ­R3æñ†(Z‹aSΊkŽé CH"vpdøÀÇuÂZÿOPWµx~ýHÈÏe«¸g±ÔHL¬o âò( (q‰Þ‰ûš¨QŽFÅ[mò_öDÕ$ŒªKW±,Ù|‚EÒ♎„6꬞Ǩy½nhÔުì!NùEow„OÂt8INè wðñµ÷¤t«™#ûäæ;ŠÙó(øi^[_KùÕ(‚­¨ïÖŸ%aË@?ÄIÑ •QHA$o)oŒ{ÀBpØ¢„ T+#ª¿¹øE.„O×ýëJÙ Ùq®>ޗ󙌜ëûîe&j±Ž² vÖVÏ÷Ϥæ5¨æ…nѶ´<Ö±¼!»œ—­ÓÞ>¹Ýà»ú ‰l~8Ï8eÜÔ5 Z0¤9˜|y«·Ú×nÉJ?è´J-cõâ†'$,uãôÝò`Øêˆ!¨J²ÄЍ 3McK¶˜ xä᥎-Æ$²ÂS÷®3Ë6¸móAMÄ ×{wùÞ¼pH  yU>Ì ð!Ä—¿“CâtŸÎ·AµQecÂ<µ$äq6ȯh7°ŒUþ]KÅ:罞;s7(Ëì8 ¶ú…? 0$[Mè{ê¢Bu¿ìÛh ŸÖLQ°ìÁì•ËÝ ñ¿ õÈn3–vŸöêß[-Á‚´C 9ÍbƒRÂ饫ô%C3ŒùîÆµ¸ô ¡7Z“ÜÀêçBõò­kÉ[ß ±rÅ 0@6•àñ“®(¥O“:Ƶ‹|œªE¦‰bO=ˆæ#0ÅvOýEäÐãxP¬c§CŠüò,à2› ¡ù2Q—ã ÕìnõH‡L$Y[YåQÈòeÅ•­*³RŽ…ª¸±µªí˜Aµ<‹¸'€}Y™ý?£W´j•?ü÷ÒÔ2–ûáVúéåùŽŠÑComq¸œPð|Z}¶ÈQp’¸@ÅÁ«"—æwK8Chv‹ä¹¿¡½…± YWI@Ë„$Õª¦Ç¯ƒ€§‚•¢w­¹O‡jXGAeÝ/òw`÷BqPaL—ݦ D‰ù‚ BÓàÞõ [SZ׌$»¤ ‚—Ã>±ÕÎrÖsˆ ¦tœ*§ÿG8ïŠá¨o2`6”šÄS¶P™ëÍ©òÕÞBDßô|:cïŠÊ¾’=*,@0¥b¸}Ò­rVÐ8>†ÒyÄ%Iß%r"£y¨¼m‡IÔdÿ‘¨mÆM]L¥€QÚN¡lEX«ñ%hÏ9)4M® Ã5Z,rYÁÄ9kºQ'º 1Çêéˆ#·×%Æd­}qÆøÏ˺á"¦Sp8ZQq/÷m‚p¦RS±€¢ >(%{Šyªæ¼ 8DH Šðð\íÑδS¶Ü}ÌúÛÔ»jAyçL˜¨•ge˜kÕ[;oÓÉï~çSµ°'q×tJ›ígŽ5æàïðd¹ú¨¤ÅS¦Zà……ì‚ îªˆ%øäoe}«R)u¨½R½ 2~8­¸³¡Û·¶].7d£ yåŒÔfÇašÑš8Ô„ŸbZhä1ëB_ Mp©â˜ÄS-·5×xú'‚h-#Š%]ÏÑ`ÿ9«; X¹ÂõË£?àv¹³»yL5&kS QNEË!‹^´ X:^-„Ž ˆS7”ج=0D0Äœ% `eÈ©nõî ¹r²¨³4…ZÀyaõ b9ÀÆé|IËZ°ý(Ç…»q0a'ö1æ§0ùµrl¶¾Ô¸ÏMfMÇå©Â€l²/ÕDÉ•ÌÛšóVúný¼kEõ³Ä:ʦtܼ_C«!4Äô;–Õ{°ì—6‚ƒd–mêÖxì?t^º0cIŸ$ô‚´ƒï J×Á†PF“ø©7uNV8hîNøä©S¼ƒ)ÙD÷“ÑQá#SônQµ.જº‹a@Ôpô!â@Æxÿ›wE\ ðâä²ü H…¸†Ð{¯Ö„O_àƒ=Eo‘`ú[6;°®{,¥_œ» Q‰‰ ÷ѸŒÐæÄ}ü¦ŒÙÍ»l„‘Š9#ŠÕòzçP枬rš"O;”ÝÅ3š)SÁ3ïÄwdreeQNÊŽavÕË6ÁH§±Þ#×;-g¹¯gÏÌœ *êÿƒZÚ¬)òÍ-C¾F¦ÄŒ6Q§¬ÎÞh^ý”lOŠr­ñ”±xTVí x »¨°’ú…ã#pîHüápöV-§©°MÍ}RœÔùÅ"ÜkÂR1¢¿þ¸Té…ŽjáûhË:LT|׫A}^à9­4Q¨y±È ÃàIj/-¥`ºÓÒ©!Tβ_rè³b‰–ÈQîöžXÒnfüÀO>ï•çœg5uƒò¨É–òÕ°ª†rç1*à:N ]Û…§³9C ½¼ù¾_´œÅ4îѾ/Ë*ÕT3øöe³“´íÖ|‚B€„GÕÕÞ'Aþ5oÐ7††€Í–“´¨;ò¬P’¶^2‹ÈE'¬Ï—iñ¶V¢\„?âªçÛðLÍú^á â,}®‰¤´¬~Џ‚3pÓö¸‚#oKzéãW(9À·ò[V\KÄìý¯®"ÌÅxž¸Þå¥ù¾•ûµ…ìFXe¾èJj¥Ü³Èù:_ÛUþÿŠÀ}ÇB†5ôü+]sÌ™¦Ç)4c†»¿×µ|Xó¤*‘ÿ˜GxɺVû_$6¡ÊBPÐûAšEE ½`ÒÙE,×åMAŽ>üòþš0ØèJ´cAipݤ)¾³'é‘HÝŸ“¯h??©m¦˜ÖOš£Œ¦ÿ_’ñ”™BÕ¦âvÎù?;Ý—£3¹—àG¨B8”ê7ïÃ_"\Ä‚ošÌ'©ÅGt&Å›tCt!„— ë´åPÐtóNAE¦=gƒyfqõ9È¿‰ý„ïHŸë&º×Gõ™Jgæ@ì_Y#Töêîl)ˆZ©—"Uú(8`ÝÅ ýôH}.ÐA¦V&z¡ÕÑì:gÄø„‚!\‹¤ß¡çó'ïÃ…A׎t_D;Š&FÎŽ—´Ý "Cy‘nb4Ns˜2m øQK¼iè(±[,À{Çï÷~F‚=PóÊqIZ¸ë‘y9ÜÜÆ¾|þZ¼6Öe‡ð5c&}ÏWþôÝl°J'õÝë+ ]ä{}4̊ʵîÍ”ª±¬œ*œÅ ¡{r Ùo\5L«(IÀY"âŽ÷~Q}£ü’ªš¦ê…rnf–mÖÑ•vÜûËðì¿s\‡©ÌóUF©5;¼ƒÌ8yÕ~öAy"¨»¡J ;H_×/hÐc ŠÝöÌËuVGÔ}rÇà;u³0 àC,r#Újö‘–;`•Ï5ËÏ©QGeBü'âH63¶ ƒƒ™l/3va·õs®aýy08œæ`¨éÓÛÀ‹Я’‹I9‰œb½4e:˜e¯!†¢Â(ƒ‚ùzÕŒ¾ €!X°J,ç­hJî¥\š&7EhL =\RúWsЬ´S=¡¼g)Tÿã¦W .žYÚí5A…¯cY@Ë•ƒgƒÜ±¸¾TjØŠÏV=}Fœü¾ˆ¥æúKÍ[UñŒlöCè¾»2îP ÒG€gèAÊÏÐ¥|£ü¬à§†Q ˜¤½Ôart¯_bªN2¡G6—Iot:ÿŒ2¸"LHåÃmÍ}¥aŒ~¢êׄCźî©\Ý7¹iVxwoŠ1ÑïÉœ°Z—ŠÕhØ£²ÙÁÙÏq]ÁÔìKLkuW±ïŒ¤2ö¨Uy\ËI12 ®—zo ¿²ñÕv NJ‡YHüRÉðmƒÿI€áÏ^‡Ô‚u~ÉrŠy…v^˜ŠÞÕôøœÕä¼Ð?Ê7„«¯óÒ¶”>㪕ô† ó̪†æ­Éœ+9Pcõˆq ÑeŽÍá‰LÝ%I]WE&Á!ô Eþ7ñ ¸qNG];éܸ¸5[=7£\Wˆû‚ƒÎì@ðonÛ¬kWOŸ8†A¦˜Ï—tЧ“Lq†8 yBHÙ²c›mIæ]êõ|Žê®ý$Mê¨Ä–m† è|O2!óm‡ Ι]ú6$–9:ÛÒý!z4î/NkûöJ!ò`êÁ¡aî¥ZšÂÂÆHm3fŽJ”š§ ±+jì¢Q/N•y#é>g}N‡ Öã–õÎe–¬üÁºxÔ ‰}ÃïÃÕ[ÖïògÚÈäåU°ÊO4¦©Vh~ìû<²jòÌßx`åËP]´=ÊlåFsï‘ù_¿k¼0žµx3 YRhMKMì…U…‡’Æ€d=¹¹‹l›^VÚí·}CgV/k7>'¾––á .À¶R¿7/Íë÷âÞܪ%ó@:%•pFÛ5Æ•&àû¢¥3ôY|÷¤KâˆÍž—eÒºŠf,~€~Ëà­5ƒ—*­‹ØÃ“`FZ¦þáh¡½aËý†#ð–±*ÿ¹÷ãN‰h<¨²)KÙåŽäÌüS5«ó/Ø\SðICOàHU1Ë»q+ÔC>µñ©t­­ÇO–}ˆ¶š¡†x^\4ëpká—(5‚)»;¼Ìa@¬ÐGiV?þ²«ÅTŠì#á@eˆV J­—ÝAˆqMl;$àF8Á›H<Ï¢)?j†µ”%™/&[O¸ï˼G®¯BÅä¬- X¦™*:f@nCðkLl ‹S‡ép õ¯.ÅõÙ&¦˜Aá¢HJHJ±¥udxÞ üÉ‚?• ‹®¿fŒ«¼ÒuKÑ٣߮ endstream endobj 1289 0 obj << /Length1 2202 /Length2 13864 /Length3 0 /Length 15164 /Filter /FlateDecode >> stream xÚ¶P\Û¨»k€ƒ»»wwwÜÝ‚»'¸w înÜ=xGîɹ÷ÿ«Þ«©bæëîÕ¶º÷†‚DI•AØÌÞ(aoçÂÀÂÈÌ •WSã03³123³"PP¨\l€‹(4€NÎ {;Þˆ:]ÞdbÆ.ovòövW €…“—…‹—™ÀÊÌÌóC{'^€˜±È ϱ·:#PˆÚ;x:,,]ÞÂüç'€Ú”ÀÂÃÃEÿçq€°-Ð djl7v±Ú¾E45¶¨Ú›‚€.žÿ傚ßÒÅÅ—‰ÉÝÝÑØÖ™ÑÞÉâ =Àäb P:Ü€f€? (ÛÿªŒ f rþK®joîânì¼ l@¦@;ç·®vf@'À[p€ª´@Ñh÷—±Ü_ô€¿{`adùÇÝß§ÿp²û󰱩©½­ƒ±'ÈÎ`²%ä]<\èÆvfÛ8Û¿7v3Ù›¼ü™¹1@BX`üVàßå9›:\œA6”Èô‡›·.‹Û™‰ÚÛÚí\œþÈO ä4}k»'Ó_7kmgïnçý7˜ƒìÌÌÿ(ÂÌÕIÝäè ”ûÛäM„ð[ftp033s³±€Ž ‡©%ÓîÕ<€*ÿ¿Uàëí`ï0+è 2¾}!x;».N®@_ï+þ›XXf S€ Ðd‡ðÛû›hþ¿]¾È Ëü6{,æ?>ÿüÒ/3{;ÏßæÞ/“†Ž”¼„Ý_ÿ£±÷x3pXÙØì¬Nn€ï;Q2ýóï“Òvæöž¿r}kÒòuûûú©ÿ^ ÀûR°›Y €ú÷ˆë1s0›¾ýaùô?üÿÍ÷^þo#þ¿ I¸ÚØü©¦þSÿÿQÛ‚l<ÿ6xYW—·ñ—·[»ÿ5Õþµ²ò@3«íÿj¥]ŒßÖ@ØÎÂæŸ6‚œ%@@3%‹©åŸƒñ—Xý³Ù•ìA¤ã¾V˜ÀawR`ŽbW3†Á{Å©Óõ6…¦&;hÓéN8e¤mý‡8õ­Ð*ñ‹÷qk#lx[’rû“ϳa‚ÊÌn;Âò4Îש¢cá†ABø÷ jB{>/Ž>Ö­àÝ2yŽ®Ü(J˜÷î’ ƒåkãa‹»Ê{5œ²ˆÏå³ 1êÑzŸç)òMrޑ¸0ÂÑb\x ÎßÞÍaäNý"–I Cð=‰a+öÖÙb}XðÚ¨TcuîÁ#ÇÓyGy‹1>Cé-r*ƒ»ä]Z½)°ô‰™†lÙ®·àBÄÌàŽ©˜„•Ar‰ÎïªÄdŒ« pOiüjæ q›¾MaÏÑ|Á¦Ðò41 ¥TgÊs¦NŸ¬}\ÄŒ -Wß}·_7J§(ÜkÆßª”cáxzDÒûd¹éQÄ'B÷üE«•r=—Æß¾>ᩪËXúÒ¼¸Døœq ³7ÔÞp0Ta–“¡¿rR&äœé@Ò¿¶”Æ×ýÐM÷¼u0-•Ïò§QÐÚêM(`§Ã³'/€ Vo 7M§­z6„”DH¸Å…5c¬lW/œã™º¿[-&K×ßã&ANSõe2NûÜ^„SqH:|G<ËÎ-®Áü!C/¿iöÓúî]§.ÏAI1i‘µáǹ0r0•™9Ü…ô‹Ák8¤×XÒ9 yË“y9r6%ˆôµS¬ÙÏvŽìJ,ún{Òi.ªˆý6Z˜Sñ¢~¨:ð_s‡ŸMÛ/Ë'L¸cœÈ$zvà¾}fªËytº»9íݸïÓHâ¹½†Ü•Ö#÷K˜O(h< ˜Šn.ˆMÇYúÎî&Ù9J­ï­SîiT¥…2”›ôÜѵ í$!á“0Ãò|äAv“`lóè£Ô\ÀÚŸ5”Õ=ìªz´º©B^¿D®ßTËf°´jIŸ‡êI„ã]¬?71œ+ð xð›¶ ²~ÅìŸiP¨“ª?YÚHÍÆf}ɶwänËúª'ÖA$:[z<%’×/αReë0(Ò•ÃàØ…´¸ÀíŒÌ4c•Ž{جé[ ú"7Á‰vÝ"# 𕬰s _kñÅ@{ìO£IƒyObQev8ÏöˆØoÃ(»HMC”Þx®qÊÓxÅn6õJùç-eµã½=£ÀýIOw}·¢6ô(˜BÊÇnt{óæUr‡Ccßà·OX[åy'ŽUü˜äšÞD:,†˜k9<¯óá>axUFÈ'×ñNlG\Ž Õ®Z'ld{è4Ä´·i S6Ó…ÉI”—¹ë¸çmË·¯°ï e_,Wý>œqî +[æª>S§y¥¤~4÷"!{) uÛÐqíØÓÙ#ÕèWÉ}t¯ºa¸&ÔîópÓ´ì<KÓ¥#ª¡w×)¥þ*éâÓêp; ³zèά"K£º_z¸.qï ¬Á ¾ëžc­â!à[DÆÖò|D‹d«BZîýŠ+VÖ‹Ÿø oJTײœ±æY##*Pæ}”|Š‹>«ëpËÈH-û¤±7ÈVj›ñ«š·7è"G@Ó¡$‚î‡Íb\¯ÝR81›E^)×WÞQåÀw½B_”üfN\…æêÄÎ5ôœUËù^=ø‚eª+§«©âÒÀ¯Ú<Ç_ã DGn1®¤‘›Èã¥$µó\æŒð‘CàPõÖpå²­(^Ì+³'!=†OTa²`W£N6Ö»J±˜_ù>ÙðÕîôäÉÏH°ˆ~!E€·ýú­!®ý¦\:Å€w[ѧەÑàûŒú¾ë5~¶»‰ÑÉ OLJú¢ûopf22¡Hµ̧7×Zñ%#„w¹Pº“.×[˜DÐ#®ÄË%WF„T·ÌjþùHPÒÞðÄ¡œVùxãîQËð#ÅÝ«‘pícƒ\ax÷Ãé/]0Sk'˜ƒ«¼Þ%Xe¨·¹má‚6R4WiûÜqŠÕæE¶ZvôQ Déc›iÈJ™ Ðëòˆ¾%Jʩȓ‡7~:áP¥ù{ñ®ˆoÕ]b.[û^‹Dç¥ìR~ìgÑ2\¥"A[™üYÓ}X¢u#J{ÓàÙ½¾®^}>9?-úÑÁp2Ñyñó\wÀ¯óñn¶tûÅôøüZ·ëFîøsÌqD‘#Ò–úsµ úž?È>¬kÛÍÏ¿°·)߉"t9úG¯“-HʘÁKäÜi²ñ…ëN/™Ä|šÛþ ;Fs÷b!>|aªb–fÖ¶ýKo(–Uhïƒéº£[ùën^YšÁ›Ü¹&u Jå<æ© -il‚ñÐíøªUŸ?'óNzÊ_µ Uƒ!A4ÊRmÈC!å½ ùqPQæÔÁY ·Ê™ü'ü%XfV¶½¬Ào61µ…ÖÕr¼U¨ˆrÄÔ«ó¤rýóH¿ˆ‚¢~~Ru²zBK¹D|ñ†äµýå ¾²‰k¯¤½m• ÅacpX”UN·'f½H~QjÞX 6`וOÕ;m œDÿ ~[‘°ïiÂTÔ?ôcºØÚr!q`ÅÓäe1̘1ÜwÅÔö]—x'³(ª ¨xm%Y˜ë JÕ7žúÝÒ¾O_‹{':¥‡:!@¨ÁÍöK#x  lkbs:8<—œh0°æåÇ`m áœðTÜO²cË…Úø‡ñ—à‹U _ú^Uø"Zÿ^Æë"$ø¤t·t—Ýi®°Ÿ×„¸ºxŠÍ…}Äu*P÷ÚMá˜a#0'·©ªÙªóå Ÿlè> LÄv€ÕµØ rÖìªWk·—QU•>8P@Áž Ô>ëðZ³ß™tC³ÍÖ»¹Bè½ÇÅ¥Y“d†UïÛå<Þ²Ž RL ÃÅt›ñçðb³ÝZμbúz[ZÓP™‹×hˆyí×}8-i~†+yRžÄžD_\õñH „ãéž"µUG cRŽ}]óFø­˜½¢qi“X œøg÷-µÊвñ–±P©*¼0—r RÓ8gA ²_ÇÏ¥&Álüåê¼Æ©!è§íÞ>ØMëˆÂÐ÷NŒ4M)6wù)Æõ¸D‚ÊUš3l¬¡°™Ô6¥?Ž‘ £öf|—L$R÷gôSßW«ä(‰a'óÏ×ý{R܃nÉÒë«î“ƒ&€bÚÍ.èA¹í•=Cº­ª-2ZÜ‘¶P6•FøŽ m÷ä¨TÓÞÖ\aHn±,I Ki;ÐæÒâÕwø\e^n¸dÄþÙ‹½ˆ!† ŽÅúÜ Õ9%Þ½TÏY'7‘²ùÐS/#S¥ ‚ `söäbÊl\hž(`-+ôz}¯ïK#9TiÍÅÙÇ‚>cªfïù xP¦Ÿ¬ÕÌ®†ÈÙåY’—z£?“ ’jþŽ£@Ë«%%—ëu”äF霰á|/Û€üóÃ÷m¿>ƒÐ,—=æðzIJþ¡á§ù¥ßÙw÷–ß¾ôÜyd)2]™­=ŽKù€Öt“`ÏÑI³é­,’\©¥KöMt@šÍ*øxÁ¤™Û¦®…NWtŒ¶h~@¦¤«÷´ܶ#¬ÕfŒï*‚JMF’²«"¶n¥ÇoFœDL‰1ôd3@ïƒ6¸÷õÁ1vÁE鄎Áá‡üÎÇâ–(”ÿÍ]|¶²bx )« —)Sü„‹N…ÀèË<WŸá8áÔuóó XToDO¶ÈM÷–ï)"QDZnɉûJèÕòåaX£¦D7ž5ò¹)÷Cª\Û®…)†q!(ÞÙÈ)«ä'¼d:W .–Ñðr›lDOäþ&å§OùµrS¦Ý”xÓRv‰4ëpðS¥£Ã>–Àwýï6{|/Q²¤ïÛä§nà †R4.hQét*7é;•{šç—ÚºÍgé»À¿òA­¢Ú7.ãé'GiJUbÔžniCnøâR))µ©ºŠ˜ãÓçœ/¤ÌÉÝÍï\7 <º£Ú60ÛhÀ¡Íï§Úf F¨)Ú¹àr.É“jÿxèØ±+kÎ¥(%î³,>\7i"s¿š̃ˆ q5«bHÍz¶9á”a¥;Îæ„¡ Š3nów©æ€²zÓ02h0è¾|B§˜„Ò6âƒK‹ªæ —µ—SmOSX J¼³T²Ü»XmRIÈxÇÐRÝŠ¯zu¸÷1d¿]>ðªdw¡H•û Š8Ф<~t 1¤ÂmJ÷}½.dÀh„TÖx/±c‘¸,Ï̽ öP“BÛ&²Ë——©1èCµN)p^¢×[,Ï{öÔwTËóÞ3ÝOµ9´iËÈE§„‰ç@Y”RÖÆÕft^¦9Ós ôÜ)B|QBËÂb²k“ÒmtXÊPº¢„¦ahCNåÝ6mlA3´rŸÅˆV ˜k¦ýt"i9…a|a¼ÜdH)»ÛzkqßJ™[@»ÎÐ- 4ÂîÂøÙÓ¦¶Ð½\T$–·ÿ¸Ûf[] ìÇIZmœ¤1:Gþ=ܓ͢¨Æ(ÂD[ÏM|ëˆpÙ£/˜±È5~Þ /.Þ³v«‚Taá¬õføô_v:³&ѧ"Î\6F~&ß1tH¬‡V•`DÁDHØà!ÊÁ{FBšÝ“”?0,Ú 5îEO&"h]†èÅçXhÛ™ëLé‹&i¯Œ,4ûŒÌŠòñÇd è±Ô‰tŠÏÑ\óŠ46Í®ú39º…}Èy±æu¾Û‘-ãóDÈZ“©Ð'oÞn3ÒáÇæwnS÷úJ¾¢°´”°Ö£|7ùÖœëa³(#Ám ÈZ¬3rÑúù‰÷סã¶5ÍUà%ò–?wr•(Ï©§½s ö®‚,ž ¦  q‡_àŠæÇ|NëÚ¨O̬‡wñ»O˜ò'×Ûb¤æ“!§d¨Ü+EÎ ]ª; >¤ú²PÜ0R¬Ë+Þ4¿iMBªÖË–¥½fJŸ@jD«nËè°ˆ¯çѹãgvÛIh¾!Ò”HóßQNÐ7æAãŸêÑàg¨’šø| (t$(ì!0˜_¢´ÁÌó9Œs>²ýšQh"îÁ@?¼ušƒÚØê‚âÍò‚;ÉQϵ\‡†kõegöKÛ|©FÝϽ¸íęԩV° U÷k|\F~NXŒKá³ è1…â3ø\þ³ƒ lT<ìx+Ô‘\Õaž@­ö€ÄÄè(+,>H´Ç™‡zYU2vÔo4¡,†+MHµhW «Xú"9ûƒ|Nl"ñ†XW¹}ŸÛ™_AŒ3Ý‚·F!¥Ô7Ž;n¢Ó5É·ÐnG»EëØô•$?‰øÊ…ç¡}Õµ“‚T©¿Í!š[dçL-f´úmìn…mf[ö•pÆå!½½Ö2;খnI¸0hmâpj¶ƒ}s«5É.ëK…þ÷þæ•ÎüõNíW¯ö>©: ïi•÷<©¤3¼õkÄ(–iƌֈ[Ô££Ê·U­Ö(ïÚR_k{ìp÷°“û*þkÁÈ–>3{0â{ÖNà éñSæþÒ±ö’Ú©â9Max ÔìToÑThFM÷ƒ¯“®Ðù²v"N =gbí}*/h@ŒÚ„PjŠËƒâÅGv50UÎÀ†s©¼î÷|Ñ”–õŸ'WqVÐΡ­L½í^¥öÔ—Ðíx¶ç²tÐvKaÜ•ød+Š:Ëg¤§S4o耗A.?”{sŒÝ£Pë˜ ÓðM’ët¾¦ óñ’AÒ÷F×赟—ZõW)½7S‡[ˆô«oÏ+u±:+¥«…ÉÃGËŒ&wÊ· £Õû:èõnUµŽ/±ÍûlÿÎ ‚øö™4<|-é5KÀ¯¬‘£1ÿ‹º8Å=êq¦-±Ýª°±'ß.#×OÍõ‘vk_ [µ¼9Sˆ¦ÔÐ¥áyÀؽý0yGN`¸!»Çm6çifzE®«¶uÅy©8t‹AáâðdzÊÂd,òês?!ú!A‘¶}ž4»+æØ3õ±§›õNǺŸ_Aljڈ'zÃ\!Ì”Þ0._ça?ëµ€­_¾V’6‹ËõEa`ºÐ¤ÐN{]ÇD<–Ø¡l|óa{_"Nc´ ÍœkK €¢®Bf–Ò£rä_—à+„ž-ƒ…VÖº‡îêÎÇÓ5¶ÊG÷«Ø+ûãiUœ^EL]ÏàÜxgÝ<:Äú½=Zˆ¬á?0¼hTýʯÿõýk'„FÝžÜÒ-äâšà&?•ËŠà`oH@ÝæP´kòÿ0’¥µU“"åEÓUÞ â-#aî«ýJ¾ä© •~IÛ(’ÉJKøOÙˆ\GçK*‚òàDQ¼Ù¬š<ÌV¹žÝdZO.±³¢Ö—ÞkÙµÈÚ»·šŽQëZߨò Ì?¸+&Ånº|¸! V}ûG‡ÊªÜ†ˆIÿtÍ„\aFÑr=k †ËãsUBït*“ÜcÉþGÂÒ`ܘùîMR«¯'PcØ·<ß$óx•º1_öN¸‹ùòèÅ\wÝ®Y±~”®LLÑ\2jrV:n\7ø´æHÊÆ"å—ÊÁ׌ý*6lOj>šfÝ9…uøF¢ )evn«ÎEøXp„úó×,ÞKà×¶Ò…ÊþºS¾ ²j -:‚(‚UŽÔ!8÷¾ø°œ´Î_8R#\S>œ‚‹Ã ó§²™~g EzÕ‹9<"¸kèÉR;ÔB=ì*~ü Ô.ãŒ!Ϧ‹'µpß`+ÎæØRçY‰õ¢ŒCâ{_€‘ãÔŠ¤/m;–Zdz0Dì«|âqñrþI2=Üïi¤»ðõ•×7'ÉúgJÌêÍú‚tøûTd¢²ïé‘…+bêæ–µfmP7"èDˆchBkdqêc‰(Âd…ÁƕቂHªŠta©ì–ÑpûËË7×_© k*§§õ85W-ýgX›¸ #ºŸMY|óº?Å5w+4ëawººVŒÉÿâ×-¾l­•‹¢þ†9òC‹öæ6¼s˜‡L¶™Ì®‰©±¤ ;Å%“P4w…ëÊYÃt’}ñ‹}ÙŒ¿ûÏ÷!£ZüÛ™6ØIWÅð<#dPûK³Â¼Øí3¹=ŸrÀ¸õØ| \BEŒï´[Ãr`ìêBÀñ©š­ºx.Ø9¥Ng{Ô¡‹âˆ7AK(h¹ñe ‡,@"¯¹·ª;³¨Ú¾ØðâºSk4—‹TÏ`³åÅ=§'Í£…9~G˜i°4s5jÙ™E³©#‡øjMW"5ð¥î=Á}3 (DqwÌѳjgù=¡#À¨Úžª4 ]˽ÙpIÇ“c¥ÐL«òÉsY\÷´ÍŠˆÈ09S4O=m­øó—z!‘éÙƒÐÃÁÔɦ0\ÍB÷¤éVlehìóð}?;Ê- ÷3¥¸ÈUìJG’Ø5èÃ¥‰Ð`#{£]»ží'W¤7dxòˆíLø¾.'Šö)$X3˜ÆÀã¼'|¶é%Ñ4ò/ºÕÖ>Òç3ZÖñ¤R‹qÌ3’ž«ëÜORû³u˜¶nÃŒ]o>S‹s÷vžÛ0ÚMwRÆ Æ‚=ÃÜ«ÑÛŸÔ\´IÔÎ1 6¯‹Fë¶ù1gžé;OŸ°|ʵxïr.Màlšy@„ý½½®køøÈEþÍO¤tf¡˜ªto‘ÁI(«ÈžIäú´@pííÕÔƒ‹HaõŠNÂÙešûF…Iø¨ªfm ðQG5UQŒ£4AH2„,îŸñ_LFÎ †Æù î ÓNßO– ¸p5ëRð±Âx~aºhû𱩠èW•‚QJâ%Ò®cžÜ€rrÞNp r/«+ÛÄE¦xŸgA¸]M6¿(cdt@ËûROŒªÈÊtT!îÕÛ´â¤H‘†ñô…Écüºkòe¼ŠlvÁ2!ès\¢qÒ1§;¿Ï ŶM¦sÇf¥û^¢«œxÏ ?â%BÞסë|û$ßgnœ©nFËŸ¾×¬ã„»ìmsTe?ù–—v»¯ˆ?-eúԹ㠴TŠ6¸‡¶‰ëÒ…±Ã™S®SÃIsܿӣðnP˜.ÚG5¡—Ž>pokGI„PÒ=ãÒu×%ÏÇbÿÐô«§Q€Ã¿ÿáNxŠAz}Ü´ÓB¦8S…ãÔ ¯Ž+ Œ%›÷°gÏ6ƒ/2ä!ù)¢Pœ„:±2uMÃI„žœ\$šc¶ã1ó^/`8;ã'‚ ,æø­^˜¬[9ÒäšYœœìXPٹݭF𠥓õ¡Ÿé&*%ƒñ Øjrñe.Ô{à:NfA|þþT²J7œ])Ç x5q£ÛÔÍe8úÚ 1—F žôuX/A¢É`qmáüS²KÆa§"©0Ù™È"­<×5´ÚQ^gµÃÚÇOõ íDÆýí+$øòÜʇ?'+¢Ý-w&D”„Âz|˶ÜQcDØ""ö HŸÁò׬è!¸ç$ bÓM=øÓòS.á'œIÂÆÚ Äý’ÙÑõç/ը׏ƒp8 J[ Ū,IÈ.?h®IHÞ·Í ­šeöVŠj:6 X¢†‘’òEåsu’‡³)éþäV ˆUÐvc”z{ øà›éà»Ì'Þ‹uÕÛ&Wm6ßxÐÝ/HíåAWߦVp ëË,ìõ³m Ü(nÆ?>Ç^c"§ŽÛWìªqN…X8à¦Ä5±íã(®áÕéö~é ŠÆS0fv¶*äyYjo‹ˆúüÕï‘5DØŒêéAï|Uq¢ôdŒô:ôsööñ‹3”ND9l5ÓSiª•6 ƒiE©A^êÅsF>8˼ØhÿöDWs_[}®£¹ŒW#kÿ•Pûl³8×hóÙ}vÖÊ‹ ü9¿4¥ÍÇkÆ1¹(öšÊe5§[•е}.6Ån·¡ ô½HÜU`+;NÙáÖÖóŠÿGJ&†µœ`¯,†[D™Rš…´SÜšºŒ°q’Ò[HÞ‘Ÿ"e{Ã4)u"5,M1¼æà&Z´ ÷¿N£T‚Iv¿ÐŸcø “žH»Ya¯¬çëè?~¨®Ó¯¾0|²×'W%;§B±¸¡/N°iÇœ¯XÕ|AméBœšÁþº:ÿ.â!å@¡Ù(¹Ù|Uøb© )(“!×P’û '¢"¸PP™ÈCB˦Þ]ÅÔ'I-Ÿ—û8{@Ûûô„’PO]ñZ~ÿ &Q˜¿´NÊÛ†ž¹ìp3½õU·Õmî•kËãQ'm_|,€ÊÁjºÈarØfÂÖÆr¯÷<ÛÞK²×ÎÜÑ-(•KÓ8™ˆ±DhÝT ™“ó“Qˆ4^ឆULpeÆÕó°á3Mw @H_Í0+ÃE1{„¡8/óå­¶`¸g."‡«–»‘Eu«µã§ð ©iZ§âB4<ÊXè}PÂ\1ÎݺnˆÀwÄWbôgjh*qDQí¨ÂomuíiS+ðªóþæõa 9ÜÛÏr2ZHw÷ÅåJÇðÏT¶¶7šM ,Þ+ÂhÝ­¡ø-ÝR ¼TvÜÙ8ùJ1ƒä¿›|)ˆ‘ âöRDÀÏop2¤ÃÃ/.8DCÀËþhHu°æÄ¾-·ÆYoÀ·OžÊz~W ;åc€f™iš7ÌÕš¹šú²ÜõYÌxÑS°ïú= Åh¨ä(##« b™¿t`É“0.ý«ÐÂÓädO#; &”?ã¾'ß,š>üRßž ©ýí[¥Ã¦fö´ÐÏ×o%.N¦‹æalM¡*¯#æH]ÎU<‹áËÙΩDüÐÔï˜"d}—îèµ—²°Jgwâí×Tz8.x+ ”IJJ?‡]&­"Ï.ÃZènç@KWdïu÷QÑ#ú mW›ÍÙY¤÷™a)Vµf>‹´¢|ö¬næ‹vÔ$1*©)‡ÐÀÐ×Ûf¢jD‘ÛÁd,0·. _pÔõ‰›°ÒÓæ`.!>É`73ÐÌ]z5cËáR8ÝõÜLÖÓAi[—Ö ˜ÐÒžãЭË‘P ™eTô\ƒÛšÌ·ÿ ×k_9¾)¼žD§:Óˆ9òÓ$Næº?ò}Œ*“ÿ.UäÌIžƒtãå¦ßEÓnn“Oìœ~.Èhõ¢$Ô. l?m³=HînÃFæÑl‡Iˉo[N5>«0*ÉNÛþÉÃ^§ÂÀè ¦®_+MIÊo†ÔODÚºT8dA“ô'ÓÜbÜ8(Ú}™´=íïB:YÒm9y]6âÿ+ºlkÜR²ç£…W¬à,c*òõ!Õ| ô†ÖQÄÞG"rÆ@¢¼ÁŽ/öÚ-žX—|Ù2Œüa`Žk¾ãpáPÈv¥¾ýˆÍ¸Ã;:ºy iú†VÇWÎ.cb5h>2µrß$FbÜù¬U‡JŠƒ¦F,çM빴ʤhí†;ìã%bÛÇú+sû¤ÚJ%áÃýÓñæ:œÝÅà›”úF„ÂÞÒGȱê!**³{™jgÃ,¬N°àE”ýŠ´Žf¢ƒ¶mgx|[R¶_Ïã &Šò˜ðI:=ßOQ÷Ö›ì·Íì5†V®S×ÖÎþRÌ5ª­9”ˆëЀèlŒÌ¼;öøH^ˆ‡â]à\@mÏú)ãýé ¸obø@V<%¶ã ­‚äçã-˜Ð9 }l÷’ ˜²t2Oµ ÌωÏ6Ì#f¥Ì$Ý’%öùé•]èp•]ýÐp<91XG®·!ä3Ö vp,RÛ(Ú}zÑó¼ïESx3 ÊÙçu’ªdh¸ Ü{¦Dp;é{-:¿ô²ÈBýŠŒÛÛã˜[°%s¨hC.0—g5À ¾~âàhšá$ëVp«D"St±ÓˆõÍŽ'4ZØv›âf‘sÇš¥òàf å„!°=æÕLôÈo£À –£0òŒ%W‰ÚL>©F¢ÕjT®«=l¬žÕ`·XJ¦µAËìXºzoê?eOÓìDð‹¦H² Á[t _÷v ÜâG+š€.¡+'mÌç (\çsü«Pjtѳ»áíÎf0ý 5 ¦ESíûƒì¦V³Í6·…ïj3L¾Õ§ôQëÝßGÜú3#¿Š‹”‹Ó" 0 "ªq7wLÕL£ž‚ £Ùœ™Úa÷òظð9é§ì œ-sÍÜÙß’ÑhÜpU>ù±ÿ”'W#‘ìŽR‰áZÑURØo¢îê*0"ÖŒv\ƒÍà›Vmå ÆÃ>Ò©£ZÕâ}=»Ñhä'Ì—<´DD©Ln×.‚c¨ÑÌ=*þ!ö\|&ífv²1èNyö£!޵E+ƒ ²š9=xYháP"y%@±>Ê9¾`߉£P*rΡƒ5ûMÏ9sãøV‘'+g&©É ÞMKÕ¡šH™®{m „ijÚÓI:™‚dÍ¿Lnùúã@¿ïE mI ’tÙHbþ‰m©¨¸ª5O.„ëß~¹êK†ÞÔËüµaÇÕîtR {EEv¤; æ‚ÅuÎÍR"£ü«¬µYy Óø+iKç  £ùvñÃP ÅúçàÕ+:Ó¤;Iµ\QçìíÂBx~UôQÍ›¥¬fš>ø#ê|ÏKÔ&í¤¹Ù‘8!«ãx·œ˜2ð ±8Äêí:?NÑÝÀ/ŽY„áë×ß!ÚñI~.uDJøIÒ­cñ‹Ôœ'®‰¿žºe¹™º´XÌvõéÉ^2©VÌLPóƒxÚ·oX(èîîÉߎ2G29ígX-*ü‹f #C×ëT¼ ¹h>Љ¤G(*Uz+ãâ”·y¤÷äy_cWà|í9u—~ï^hÑ O ®Á2)ü²X•¹ëhâoåKJ€)ËÖK­°9 ¹ôv4}œZNÎã ~_fƒK{¹¤ŽbàgÑÞÔBE‹hä:º%ÉR „Pgõ'$îfû¹«l$”;¾—E {›f T’ÏñW÷§šž2[×’ú–'ˆdJL´q¼-W,Ã#Ò|‹¶[Å9]°…Ûeûè;¶[ïź™g;èߣ&½áEñƒ&Ùò¢Já‰Â©œ“àõ‘¤ê‡Â6ËκFßë><¤{D0'þ|•«¾üÎé²D(3ìÞÊ ‹_ ³F¿5\N´€aq}q•X:¶MŒ‚zð9„Áœ†;§€S-ñ¿JšŠLGQSŽé*!{ä/¶`‘¼üÞ ÓßòÂkõâ"plêÒúÀÂ.¡ø"³j=L·˜G»Èß »<ÄÃ$ “$ñDªy·—ä¸Ы}$¢¡¬òç~tŸæT(âZìÖżë’.g¦ñÓV´N`†³IG?ˆi÷Ù(CÛK³k—Lnb(yrRÍ3§¥s †Ý5äÃgMLÝtƒJ6µdÖV ù¥þ»ä#'¡y|nž¾²Åê)[ýDJ0L£é¨¼ª¾éfïä~qfó*-Âz‡‡©DlWÎj}ŒRH{D½Ó­SyºR30ŽÙlCÈà˜%¬ZÀ¦<]ê|`?ònèÑÒyžè[$_V¶<•M?â¯ÆÓÓë{•^Þ%4ã³i¦~o«o¼à’RQH˜³13”UÝr¯?rüÛ:¯Å^·`êT÷ŒPhkýÃduµN'gܸ‰œåÊ·gKÔnnt[S)BUz0]Æ™-Ç_fó¯Ž.w²fd¦³OÎúÊŒUPûüœÈô*•SÈg»aCtäîÍîÌb0” ›e²ÊÖ6ˆ´²ë ÊÏæîP ¦uá5")ÁÉ¿FB 9"ýYÝŽa”ùG7àž¹ô„*b¾tºÛ·½Ÿ÷FSüº–”ùX¢#û}QEH=x~bvýK -µ—|ž+;÷4:誔­ãT0ýSo{#~M4ìšEÏÌöÈÕDˆXK0:?V!mœÖ…ZÜœshmTLhjÂ}1ÁÀ¶r ±å¶v.ÿ¹Ò-º¬Î”w¦²òò<ñöWjÅ>s®Ø]lI¡ÇìMláä©­=t?{µW‚i³XrQŽ]eè 6Þ}P>ÒÉþÂû–OvT® ×íæ]^ýªx-Á³8!pDxT§W›–0,ÃlKœ ¶¬¨'O”@H‡­W]«Øó¨ÎŸ8Þï6;c]Ì©ßE¡Š‰aÁ:W JlÈβ~F”ÖÙçÆú%¦…Ï+õsÛ´Âkq;¼Ç¤±»‘ÜSŽ‘¨ž…3ùÂ-qb(¿ž €Jå~ÌKm¢'£Aƒí8Üa‘Ž=¦4O–,¾iôÈ1ô€Í 1|®;dÏ¢°±s¿ŸHæj9C c-5 ¯–›•p;Êb}¥Éœ Ôýà+W¦ÒºôA³à½˜ 0šOS#{µ¸Wa&ߤNæ ŽÞœÞ9Íå‘1ôrê]Ù‡†^*â$v V›Ix¸¦@]<¿ èXDsNU¥fD¨Ömܨweñ'ÖéûG}:<1óÅüãuï¿ãÈ&įOŠNÞÁIDç¢Ùçê*èËîaÙÖ•ºíEü×ÇeÕ$!&1?ÏÏß 86`Wg ™B´7ccÊG‡pxÌ´>Ïí <`²-NpgLRåt|Þ)K[o¢ˆØWÏŸÖÁ¾|1t~t´½y¤|Õ€Š>Ž/Á±ùx™ï6Uæù*$µEÓ‚Æø¥-0žÎ6ÜÒ­šv4j£Ãôì®kˆÌÀ奦rHCÁJã\< ;ŒîCŸk9›ÐKˆ²ãõ&÷lJ˜)±‹º2^Ùì+ذeÆ­ D·ÎOËïŠØ³Mï Íxe„à—ÊŽù¶Lp¹Û Ä"ÙFXË´/èÛ' —yÉ#Û¥úµ^¾>ÄœËQäy·õ(Ì•SÍˤÆ-2•=ág‘áh¿Dw!1±Ú ™ÍìÖ->ImƲÈGFì©ÜCèpž‚/§ î|°û™Ü„2ÏÆ-*ƒ@s7Çl|8oá ¾ tƒM©m'Êç8šíY™}Ý#ú–÷6î9'GþSÈì3Dr—¯"#ñ„¡}¢¾7;ú˜wHÖtï(Áïd`É’0Qû.@_V‡8@¡RãªÍQxÿ$;¿fTÆÝøNV£ä8†™yH]Ý­²o 3”­uMeˆIÙzÖÉMHÃùÑVÊÝ¢Þ­‚€³."¥¿ ­ð½d½WýÅÔ@3ÃŒìÔN}v ß™J]îSE|À;NÈž–«¸“‹;4kŽ a›Òb£PŒ”´—d Õ!¢‰êIm°"muº5/c’síZÏU@NÐY›O°—˜S“HvåÕ¥——¨¼ŽéòN‹aŠ¿;k#²V¤à+ùI2Ó¼pÛN%>”Œ´@ß¼_ª ¶2|&—ŽÃa½|% A ÎŽƼâˆWò: m®¹?~Ò§E˜K•V}"Ú­ü!ñk¼Œ>‚Åî¶MêkXš=ýPù¤†Jl†kÕe ÃEÛ4BCßm„‡í0V¿¢ í§Öd3­hS—Uѹ(j„0o‘$’Ò;FârŒ§i»–h‘2’ò}ƒ–Àho¹¯_šöyèp„{šCbG±š^§­ÒG­1iè½Fštr‹ØÒ}VbàœR?EJX}÷mË:gðÐmÆYCÿ˜}b‡ºß9³‚E•m0OÑÏC×Q6VBf1qg^åã(½ë©l."Àx¦³AÍcï#]é˜å%šÂ•°Ë/œ¬39Fb2Jö²ç<±QÜï½m›Ì’9Æäçaã€`qyX%à#q´{¢KNÄÝ+ê )3>?fú½®³' mcuy8S—úôÚL[½¤¡n¹ês;™ >+*HqÏj«”ƒ»•Prºö¹¡ÛÈRë¹z¡ ‘òW{8í¬I™/'.ÝÖÉ8VD!ä3+Êéª?¨Oy29[´bôú¢ãÀN. ¤Èl…¡Ús-ÉÀ#^ê}ü]ü¸4п ™ÞŠd;i,¡/NòòKPœÜÔí33JÔPàÝý~fùKôxÊÉeи¸x¥v/LŠ­Mñ`®Ǧ‘p3ö8²B¨Õ»˜4«Þ-ÉÅ*DZ&¿F"Aúè Âb35½`‰Á¢k4a³‡-MÉU}0ß'4 Y*©€—ó’˜é rhŒÌeë`aæ÷¿¢ÉjªœBû"¹åŸÛ#â, ¦iO+‚c;c0° ã”<ØC™¿O@ü> stream xÚí\[sÛÆ’~ׯÀãnmYÀÜgªR§Ê79Ž-Y±ÇŠ+”KÜP”BR‰½¿~ûëHH¢¤Sç%Uö`0˜éîé{(‹ªPZûºU(‹c -#U¡ƒEÇ:Et\á•FÇScyˆfºÈctë­Ù¡^*´¶S„v =Uh_ô4UüÔFy…ž-ŒK€BËL²Üó…È6NE%(]HÀaSá«„1WÞzÀsª•iNÁ'àu¶ˆŠiq¾ˆ6r/1:Pï«"™ˆ=z]¤ ±ÖÛ"%U žfWVƒ-˜Ty‡­¢Né 4‚QÊ2ß-#rÁË$*¡Ñxü¼©0¸ NØ"-36˜HËŒ@ÀZk …l à´Î&­ [÷•¯œJuŒ¶…Ó´yg‰JO„:âãŽR óÉËVè%У¡'áºÂjBéµO…‰,R’•UÎ;†E@ë, ùh >„Õ'O(ÁErèùØD0$ ^›Hª .…Â’V(A+C yû ©ªh´1;B±#(NTŒ„=iÌKD[r/U 2†6%âɪH,†„í9ì_C6É*HžxM]Ú’v“º ‡1OäHO-Àzb,àDC‚„•¥˜ìŽº¤D e`bUE*oˆ\]‘Y†ˆ¤iJZFºkH6´y3õ p†¢X¬ðÔšGו7aç‡vÊÅÈÜßåç£ßˆE HÓëÉä÷ý‹'í]NÅ?åQeîq6/Û#º Õ<^°6ÉMÖܬòpvyò¡^_ŠòðÅ^Q~¬¿-Š%šß¯jz0:«wÊ焲ž.æpëwÊ÷õüòzvRÏÅÿðØ~}:=»üV|ÁPHúwB4šÑj!æe¼Y"öÆÍöhäñ/Äà]WHKš¸KV¤Ìnêô5»¡¡â6 5fž%`•󻤙Ôê"Vv—üŒ«vÉRm¢qçñ”T‘ y†™’&˜Q+‚¢¦™y­ª0Bð=Ùv 8Žæ{^¥¸Ok  Šü Kžzx/‘ˆ¦vKVùbµÅ^¬¥äV¨o©O0ŒÆHà9)r[1. ¨N$r 1ŽZSyIñê÷/äT ü”H+|4jɹVxiiMlF¬&>µ¹žò¬ÎÃmQÉAÚî·g¶Òj~J}ÚCÚ6mme¢ØCÛ’VF²Ñæ–›Ž.«ùX¨OÅ;áyp³NGb~`Q{^X™áÈ:,­ð„ÖeèYm+V Ö´ögàm6¬÷;L"ÀYnÜ Ð”•¼ƒjëа;.ÉZÍ”çˆsäÇ©—Eµ|"~ž ÌÐ= Yÿü”ÿàfŒÐ M°±ÚE¬ÓH— ¡Òh Dãi ¥`AÁá‘ú(^l $çÈš¤#Òjv.¦â§ï½ÿ±ŠôîÈò}К”ÝÝ'ÆN ™x ëVË ѪמEÉÌnÊ-ƒo?k¸‰´¡ÿz JÙ ‘.­ŒÊR)M²-]ø?ï³5ZX"ͣ𾫖Þ«=É')ŸŸç±ØÄˆÄc³<ÃÇe­m4z¥è¬žùXäm¯òÌ…õ6²þ®·J”9_"[On)ËÆïa–7·‘µ÷.mžŸa/q0FiÅ®(áÆx1ž­1švŠý"< 0–)2 ÈJ† Ášè9í®Ž\‚eõDÉ„>âE° ßçâÈñcHK³u¯Ú.ç¬T\å*œï¸„ª€*^òïc H!©"‰*IbÆQ9)‘ŽÂ¡6¬&N²l CrÇ>ŽEj Žž|@ÉMÅ6\©ˆ-¼• áYœ'„ã. g(Ò‰hƒC/ËÇO–£¦qRÐ3æ{ù`)Ù<ÛEÈØ0F3-°ä¤ÔáØŽ§^óZ>6sI¨‹l&dLJîX ªªê7kõÌ=s“Uý¹êƒ)g"VR”sÂ$G¢8+Ñc7‰«b+‡và p8Æ#%÷—Æ{âS.Ö2—²;7ÁwÏ!@8›XàqU Ɉs¬v¡+íŠ+–³"œ"Q2¢E¢®˜Óœ¤DPjCÈr4’'’k’y/ƒ8‡È¬ƒKWW>êô|8£0îax¹œ ,K)r¹â€8Î#ñBYZbo÷‘ɯ–Ý3ê>øT†MîŒ]XÐ…׊j•d¶œU“‘ÛÀ'lp Árx1†ŸÑY—µ•x¸8÷¬­¹Z‚+¸ë<4'Ä>i·)€§ÒZUq µÌuÃ.'lºÎpš¨9)dÛô†±-âWÙk®`øÀìŸî?”Ú…[¼Ah=¹¹elœÌÝ—Ý(7›G|=ÿØŸÖ®17NÕTˆÊÌÊ/gÚg2£u’×:ÏËGX’&x0/ÉZλÙR¤”Qð!ƒ„‡=‘¼¼ð‡’$+xQWUü.¥âwÔ_>I–Å„òû/5–µ\8r¸Q’S *“c«¸–ÛÊú6ËrX\kî·Ý1««Í©Øt€Š€ôÏñé?ǧ½Ú¿¥°_œ¦*Äbƒ÷ÄÜC ò°6C”–ߦáÜÊqæ#-Ÿeٔ߆Eަ4©0r&Šî—r$GÌæD!sUùí²Tä2>ðñ[â·®–5#'Uì" jïS)h{Ëó€X)òÒ•Öǰ¤xÚÜhïÈYNçàÿ´¼3x§ÏÙ1æ`´Ù?&Žç<’8óåu˹òܺÄ/b9XÍâgÂ!éçÒ[½DÇûõüd6¾Z\Îä þÁ肞¼y÷lÿý³ÿy¾ÿLU4>Í +žñ‹ô'ĉ'š\)¨öï;åÓù ^§S ¹S>]ýXÏÎ(wJ`Á³' _/F“ñÉÓéÙ¤.ü‡E}ñ eÓNù9/"#ç£Þ±ÿWù´|V>/_–{å«òuù¶Ü/Êwåaùsù¾üP~,)-?—Gåoå¨<.OÊ“ËÉå”Ú‹‹QyZÖå×òëåõ¬<+ÏËóïWçõ´—“ò¢œ–—åå´.¯Ê«z6¾<-ÿ,gå¼\”‹óY]—‹¿/Ëëò¯òïò[ù½ü¿zvù߃½1Q®´3íß ÜÆÓ£×û?½yž~Vz3S àü‰jºôHLM·0õEfëŒýD¬=Z²µa([ÇÕxû¿å™¿Ó1±·Çd°x^ÿE3çãoå|2šŸ±|ÓÝ6Lß;8øôù91ýåç!MÖ–˜ž<~&åðJ]¯¸n«6Ó«Ë©n`¹ -ŽÕæøñltR×ßä:©¿.žÏÎVwÇ‹Uÿb|ººY\qÿzÑYD÷3 áñtQŸÍF“Óñüj2ú^^á·-yzç¦uwܽ[¬úDä²OعßàêÞµo{·‹ÖM‘orvyz}²X’+·4mQίIÍãËióp9€Ç=mÛhˇŸÞ’6ì¿Ò³ôk6Þb‚æ&|¢l£AjDß߬٠,ð3;¶Ñäêœì°^Œ:¦øµ<›Õ£E=kìntq|:*'õ|NxqMF¸´¼«1ßìüؘÝèš î[«i®¾ýôìÕ[áê€c3ªáªöÄUï¹*œÜ§íç}óf»[ôj›-¾:|õú(ŽÛ¸CòM´ÁT nrž÷ö³U,zþÓÁÞŸx?a³Ä© i?Q îFð†Ôþc'Мu5:+󬧼õ•×o >¼ß#œHñ!5ºÜcyû0ÝÝÊé<ýùàðÚáû!Ÿg«f‡Õƒ”w}º³Ç{]þÔñz‡çã^ö±JìZA°7d|’ Ô§P”z*—?¯G“²þvB …ÜÿÆ%ÿC3Ù"‘ibc+¦-}ìäzNyäŸ×õ!‹:—‹úôxÂÓ›YÁw«q”ìèb,;ºžä·òá/ßî¿z{%ðºqpøeñcèHÖK…ù Ž®¶½¾Õ°•/ÿpøæhï'luÀàÍÒàœ­Ú;™ƒ$à0QÿOÃiw[o¤´ö²ñ»ëWØ*à¼ÿééëߎˆéÞÞZQ*mägÓT¬ë†úN¨í€>ßTU~e1L†øñg7¢Ý©ð […¸w¿üº÷óSæýǃUb^u¨@üö-æ+Õa>n—Ì×Z1ÿ1 ñ®ç»Ç«Hz¶타x±– ê6/½A†×ÓÓz6?¹œÕ7ÓV}oïèÍçè‡AcÊù[JˆèiØ–p{6|8³‰g½ÝmŠ^ì¿}ù»;TVòÐ\±ãÏFBp«í‘߸_Jf‡³íÑU§ßDF³ÙåßË~<š (é5Å{RÉñìdRŸ\^}Ÿ‘Nê "£)×Þxúu</¾s½&Cã)Å»‹ëÉb|5ù^Në3®}E»D±‚pZ.®gSJ3&õ®Ç­¢â¯/Ÿ½'\ª1Ý©ügrQ?Ó‡}3Z˜¹ä‘p¦ÃÞ–·ŠIoŽÞí -> p˘d«nwð‹¯{^QŽ8:¨ Aœ Üâ×–çšíÀÒãÝveÓËï>}ï#Š•€ẫÊö5E;˜Ô£ 2¤ùhzZŽæ'ã1ìôúBúdM§5uáé産…±¿a‹PXÊI\s’³&Ë|š“3ºéõÅ1‘?>»=p«k•‰Ô ÷-:îÒâV!íÓo?îï}b}ÈÊ}V'«IâƒÕéÖœüæcñ¾1vÎãH~ãû¤·”‚Y Yñ@¨¥m_/øƒ´ßg£yͲÙÙÓ‘‘ü4ÿåÞx6_€KâÿÛQ¾Qš€ý:>]œÏå/²yòÇË_¦D÷)Ñ´=Aý7%kù[(Ò-Šœ~Šú¯Ö(Š}Š”oQ„£¼‹ôöøû×}ü¾Zï:é¶' Æ»F€îàb›¼‡Z·' w»†MIUÕ–€R®E€¹zG¦k¬é¤¾A~{ü½ƒÊ5üq »=þÞ1bXÓÀzmÛ&©Á$»'Vkä¬é£5-z|Çg=9ÝS¥5rÖÕSz,ãžþËEþÑæ‰@Ñú1ÄMk:lR‡¦¶ [Û§ÉÜï÷*é>EqM«Q'.)²&¥G`R¿ø]#hM¯«Ž•û¶™UÛãï•kèíMè]ÛÈí=°÷+²5ôþ3ê˜õšÝ#ðöëœ5ŠÖU¶›Š´bÓ#¨l/S[l¨£²þáSs|kãÙöò«ü¹^ýf|:/¾0· ŠɇP6óÕHx¦+sà÷{!0â²ðCé|Í÷2®ro+u$ø Q*_ó½¶ù*;³Æ<‰É@l.–ZX—‘Èû÷ Ûî‰Äg$!# ¨’ÐU>¿bÓCØ•8~Ö&׿^¹Fä[/wF¢;š¥EN‹€]þ8‹“4?Ç•«W@â3Å!Ëìr1ßÇ|/;¾|¿ @¼ªòUväu7yÜ<IÖ.ŸÙâ³vùl”Þg¤’#ÝIÈÀ²ú$ÈBV„!TéþH‚Ê@uš?A²àƒ”Rø»²­˜ùå~3ž¯IÞ>)…kTæþHb¦> endobj 1296 0 obj << /Type /ObjStm /N 92 /First 874 /Length 3315 /Filter /FlateDecode >> stream xÚ­ZMsÜ6½ëWðhTÂ÷ÇV*UŽœxSY9Nì=mR.Έ–¸’³CŽlýûí!A`%» Ýï½n€ ‡œð‚œB±‚Y]Pnà¿(t1 CT̨‚k ÿY!,/˜6…”ЯE¡8…ÿ¤ÐD_0¥ m`|i &Ma9ØIQPBÁPhð$TA©SÁ Ê8ØB\Ê Øp0Pp0†\0ÆRª‚10V€Â0Õl(kp)ðÊ[!C®ÀŽ ˆGCˆÇ¸¾ ÐË8åЃ5Ø M¡Á‡ci1 +d 1‚Ì`‰š€(Tr [S‘ *$H‡x…†ErºàLÁt”™s…Ä¡Ÿ íú`¢ÔN]âN ®4´XÁsùÀêZ¢.'²Œ;;U.Ü\]!1Ÿ 4¶l!0¥Ô² - )E.€¶„ZlñB"ˆòJ I± ¤b®¥ i…³Ó~áü™B)…øÀ²ƒ¢À$@‹Z‚h1(…qÁ•¡c0QÎp.“P6ÔµTaô8WÆXÄ&Ö¥‘3[Xf dà åZ´°J¸+¬qÑPB‡ |¬@ôI s¤¸Â¦EJÄØ ˆ¤¨&% 's¥«ö"eâ €cù‹ÅÇ18± )a%PÂ?Ô4¥¸øæ›‹ëõ°« Ì)~½¸~]`b]ó}y¨ÚÁ­¼ñúP=¹e‰Wß~ͦa6ÍùÙXfîê]õu(¸[è _X'_*ïËÏ&¹Ùrš½àaT„„D¾<®êC?L0ÿQöÌë›î~®ø2äDÞ˜|H$Àg=ÍÑlz"3"æfŽX,“9bf"Äj“O1IŒ8Cj“A¬íi¶V«³çéÂ:ãkJ—f«¾æé:ƒkʃ2k¾T”ËŠš²¢Äª/ùÊ•¤šÔV«jËy‚ÊØ—œ´—«ÚËH{•Ó^NÚËUíe¤½Ìi/'íŪö"Ò^æ´“öbU{i/sÚ‹I{qFûq¶È©Í'µ¹Z[›x‹ž—ºŠÖfÀéÖfXamRº :¥…/ÒBI´äó)̬ÍfQ"x.lJ«¾¢Ddq±)Œ¬ù¢QZX.-tJ U«¾¢EÀr‹€NjÓ3j³i®ìé¤6‰Õ>UÄX†F€áÅ?·[“) dq‡nGº$GL²2›ÚHx’žÚ“ðôTþy_<òÅr¾Ää‹®ù2væ+ \ø"'_ávzÆ—Œ|eŽ4¬]ôÅó¾ÆÙ×b6;ÍÖ6_¾œÈ¼ NÀÆ‚ðâŸ)ªÍD®nK2ÊCØñBL:ù˜lsJ—^¤+Cªœ,zJÒ«³£é\‚Ô” ÅW}EéÊâRSº¤]ó%uäKf|É)+Ræ}ùÙ47{ÒWÒÕœòŠŽŽ'œ.§A¿S¹Œ9eE,²Â£ÝKäøŠ)‚¯ÎŽò ryS¸Íûò³sHø¤Ç›Ò<ê#i ‰µàAr…!.0‘"\©×ó,$Ç‹A`~ƒÆS•D¼ã™D¿8–DJ&xBJÌgI"%ëE¯>‚r”|‰*\å$YnèÇ’p Wõ””£äkGá:ü.tæµU¸Òy‚K]$üÐ/Ž¥q;ž’ÂÂcÞ÷4.ö°Éh¬*æó§] L¼âXN;JÁ­[v >ŒàB ;œvK>Œ¸5Ï—Ñ/Ž¥‘÷‚Â\A< ƒË>¬Cq}ûx†áEAÀÔ›ãàµz{¬ïª]ÝVN”d‘¿„îšÏD¿›nÿ fˆßçæMõTíº=ê“ûîxØ:4¡ ÞÔýöP Õ =¶Óï¿î«íPÝá`{l6Õ[ÝgüûT÷@j¡¾eéľû7€h]uAÈevÃíÁêœ*eßC½³çÉÖrá…>ÿ`Z`Lj_’?ÛíPwmT?¾îÞVmu¨·®ðv÷Ý¡,½°É¼=|hq!аåýØöC¹Û•ÁaÙ:ÕÞVC(€Cy-A^Éòs†‡Cw¼w5õóv(Ÿª‘Œ[·ØlÊZ§šxAwÉ&öB%þ?’<ü…ßÝOÚÛ‹Þአ½Û²=–;ì¯g°¾I0HÊ9·n«òT†“ÿrÓw‡}ˆ9¯Lûg¦MUâ{{Ü õ~ç¦ÜìÊqßv°–±H¢ý ûU_‰ŒðßWl%O 98t;€/Ñw£ÿ÷c´«ºCsФÂáâ—wó½Ûß-€àöQ¿#ÏoïªáKwxt¹’a¸Þ>º„cŸö2̈/ä_«Ï<깊‹D’3LæÓö¶x>0ƒøÎ$Y¾´µôŸ“ûà*§pO ÝŒn»=îËvûìwôM¹©wõP'Wx®|ñÌéžæ·îǦ)ÏxO¤ò´O6‰.Ç;ûëþ¹iªÁoQ·×·×ÍDðŽcyóïÛû¾r©Ã29îJ0‘:69ìÊöþê»Ø(c£›…§8ØíõÛk£Ñ ƒ¿7 “œŒ^Fô¬Ës¡‡8´  p`pýSdÆg&uû96I½Ä©f&ˆ ;Ôì¾ØlÝ]¤ú÷ayFÈ„øÿ&÷Ï»š¾8îºíÕvh¶ø„Å]›;ìTqçöáñè–‹nˆÜãkwÞÐkRuþ:òÈw"I„óÕa.X6ÃP" Ì¡ øgöw£*LÅ]N.ãNPå=¾ýJNò1žØ> þn“/"bJ÷z¦ŒÆÝžix* Ý'¦áq*·O]’ðþ ÒÜ:‹¾r;ÕüÏëkìÝb€øÿ´Û]×ãÑLÓ¸»)7%>ô“¸wÓoðé_Ž[שsÀOhæÆYÜ8Ö<•øòdz7xkŸ— ö·ûn/^xÜ ½Mý_$.Æ?¾Þ‰õ#W&rN°"ës úQ nâ[çAÚe7 ð}O»ww8`ãÔQËEçè:½Dˆ"ë³àa°DE IBlv®t2€@¥‹§ß; q•ôA~)"/;ïâË;~Ž‚ÇO8ÃbL½‰Djà)m:®ý®ÁZÐq—¯÷N¥‘êöU‹kGå‘;,sÓ3˜;TEÇ@|QÒE¯¯¯Eï$mTa}·{r´çlú²i€¸‹+Ý…MÆ[æ1÷Í='‘N}óàúLÔ×à»û(Ø÷ˆhÜ ' ÜŸtÜÛ\º/,sXG3ËsX›ÆÅówŒÏõýßÊý^0SÏOןú/õ°}pOã&¼ÛÂÑ}÷¥:àlêûOûiÜ>?õîü/ØE4ŒIŸ5=ÃÂÁËÍIø Í—jƒ@È z>5øL€?†$oOs¶'ç?Õw`Gýggã7˜¾1¦úÝÆ0}#ÿk’HÜúï× ê?ò¿Îô :4Lö‡ù›Þ“ߎp4€ó73÷ݦoˆì Ý—¼« ñh@MjPû_$hxKâ>õ<û–çOî!" |XàôdS/>ÿfïd§  ¤X ŃÐ<Kß[Ç·µšÓ}ÿ¥ËyPxÈ 4x Ám¶b_Q¿ Q©;>3ýMÕƒû„vþ‹óó¾*®oÊ¡Üu÷ø3ó=ì ôôaêÏÇÁÕîü‡g·q¸ïoý/Ó÷¾>(®ÿÙWÁÝÿaZé` endstream endobj 1347 0 obj << /Type /XRef /Index [0 1348] /Size 1348 /W [1 3 1] /Root 1345 0 R /Info 1346 0 R /ID [<24CD42177648A32E45EDFFC5BAC449E3> <24CD42177648A32E45EDFFC5BAC449E3>] /Length 3210 /Filter /FlateDecode >> stream xÚ%™klG†÷Û=Ç—8ÎÍvlÇvìØŽo‰ãØŽs³'qâÄqâÄNçboì¤ ¡RA=-ü  " -ÃPZ¤©DÕ’nÿT„ â"VZz~´j+–Š« ¢‚–JPçyûçÑÌ7{ÖçÌ÷|³³ã ‚ÿY¬ ,o”Ÿ  ¨4Pê–?YêæŠÛÁ°-5êd49ZP9¨}`ŒX( ¬U`5¨kÀZ°¬@ ¨u`#¨  lM ´€Í ´- t€N°tnÐzAØÀN°ä-¨>«yÙÆ;À`)–^ + ªA ØÚA/Ø öCà8 æÀR Y*wÉ6€Ð¸UÆ­²`ìÀ¾_¨r ƒ]`ì{À^°ì£@);”Úqpºó8ú-¨ŸÖlåï§Â ÉÕ`Œ£`º„$ÖƒÍ@±‡AÔ”` \/Ín\š¡œ»Îšdžà ¿N9:N["¦äM“̤SV§Á)bybJ÷i0Cl 1ypœ%¶–˜™ÊL-1™sœ'VGLJ̓ ÄšˆÉµp‘X1Ix \&ÖGLv^‹Ä¶“¶K &6HL>_ËÄö“è+à±1bªæ*-Uí>“އ >RÊ9 ‰M£pRê7•±3Ĩ¨4ʈ#F©¥qŠ“… ĨÁ”rNW‹‰Qœ)…®&¶LŒªM)ñt ‚äˆQÎ)Åž®#VIŒ:O)ûT¶+),©j‰ÕÓ%ºéFbJ KFª/¤"i$¦ÛëÇP~Ùfb,2©&¢™˜’¢¯ÆL¦›‰m%Ʋ”’…´˜¥ŸES•ß1²”ì§ÄvÓ”`NÚEl1–¾ëÒb‰i:16í#6AŒÅ2ݶ;AL©è*våÕ6emJYK²ÓÄ”F­CCtCZÔ~ªo¥Ä³¤»éRµ)«@º—º<À&iXÒýt¯ÑbQHÇè¢YÊʤ»L‹å!=Dén †) Ez„X±˜.KFÊœ"†Ù)+H:Iw‘•œRçEj!¥ˆÓ“t/Ó¢~S}–êI)Ýt†îEZTmz–ÕB¿ƒ¢K©Ú´Tµ‘×óè]ª6=Ï‚2EŒ‚M… tuÝyººþþ¸~ÂE ºz5kúå×Ñ[S|Õ‚Ög5Wš¦k¼õº*O%Y0þš.§[ Ê-8Ò§KTQU@5CAV•FŸÒ'öÐ¥ Ø^XoÁt‹>†è…F€Ê…z æ—ô‰mtQ¹€»… –Wé­O [,øàú¸ìzuƒ­|´AŸ@àÖz,øØóúÄ~ºÚì»éöƒÀ£¨0`Á§Ö †€~Â. îÿ·b»IÔAZÂ^ ¾2¢QÀ¬0Æ-xôýOá¦u L‚ipÔ‚'ž×%<{ ZôµzŸ²à;U8À¬?þˆbZ¸çžØ¥Ô¾kàÐÒ¼-xíi \¥ÊŒV)µ¿A1È4%GÌžzXFº³Ò.èŸsêæ©ÍJéþÏÝŠ±XfZõV›E?Ul-Ðj¶Þlu‡bu  Ô›Õ>ª˜2­HÍfmcеò ˜°Œäe[Ìzÿª­HZ‚´–ô˜ §@lô›ø¯bZFÈe6dvâEÅHhFR²=fç¡ÙÏP%3[ú‚bã|íHOvØìƒ8Ê€îLf²I³[4ÀS7›6»³ZÝóf÷Ô©E¶22˜Í‚9³Ïß©ž¡Ù9³/ÝP—äe±löÄÔâš]·ð5 AÊ€™}÷^ äùYÇh­åfÏþI ¬Uf7ªÁ:°¬5{é- ° ©õ ÆìWok l€ÒHƒÙ›umÍ`hm ´š½ýU]×¶ðu'im½ ÓÂpZ—tƒÐúAŸ…Õmݶƒ°Œ€Ö¿«KÁ0Øö€ý`·…—u‰1ûÀA0jáÎÛ4Àcbdܱeuy’Œæë§%LX8•רf\¿c œ',œû¶FOm>Ï€Yp\3^ý®;΂90.‚E°`á­ŸÓu—Á%p\Kf4ƒp§šÑZ¶ð³Õ½NL+à ‹FŸ!– RRB ¿Ö¢Û乤Iª–$è“TXøø?tú$¸–°§Np#YkáÓ[4Zp(i-|¶S(•`IÒháÍß*†/ ú$¸‘´XøòhR…ÙMÐ"é°ð—Ò1éè“`I‚C ª$=¾Ñ­KP%A•¤ CÂî?)©ò—éJp(Ašd¸‘ [øö¸®Û Ð,Á¦}’qp @²ßÂ÷Zuñà #A®D» mI´Ašä@i’㕽 Ïj ¤I&A‹K’‹6ÜÐuˆ” M‚M ¾$ómž ,êºO— J‚4 ¾$‹õ½¢e°dÑ€Ê%¹ÊÓ/´häCêâP"‡®3PºßK¯—09ÐÍrPzTœW,e]<¤n¨«@X ª-ZùbéV·6ëºu`E·ŸQw-h°è®¿«»l5 ÔÝý“Ò]î=¨ëš@½E~NÝF°‰Iœ¦Õ ¶€v‹ü².i-`3hµè‘74ÐÚ,úæên  t[ôذzÀvÐgÑ;Ûv€0†ÁØöQpL€qÐ_ºË»ºËN0víKö‚ýà8¦ÀIp Ìí6Ù^6—ÁEpÈ¢ï=®Û_GÀQ0 NÍÕipÌ‚s`,K¥·ë.‹à S¬?¾ b‹žëѨlºÆ.×h­”ž ,wËõèãK®ýæu1Çc“Ï[ôæ¯+˜ã+,zçaŰÉWƒ*Ëšq¿šoÀwöˆä×Xnõu ’G¿ÞrõŸT ‘üFPk¹ö+†M_|½åú®X@¿Érû&Ã0*¾´vÐb¹‰gu‰V)íôI…Çßa¹Ó¯j }7ÀM¾ G$ßÐÇ£ÇC<"yŒðØäÑ£”Ç WAƒ*ë<¾x4óŽÇ?  £¿ÐÇ£”çpÅã‹Ç!¿dŽNXxZÅB`³—rP*Á*Pp#®kÀZ°¬¼Æ5 Ô 4€FÀ27fÐ66¸1ï’1‰ÛAè[Aè= ôNéb^Vb^tbŽêbíâ` aÀkP<vƒ=€wœ˜Ã̘wâxð:ã_Ì›pÌö7>غļ¬Ä€ío| ðš¼ÃƧ¯¯ñpÌ‚9pè-uðn/€‹à¸ XâE°äP—åf´óàw‡,w×Ï”Ú\Ë`\dŸMjΑ}GöÙwdß‘}GöÙwdß‘}GöÙwdß‘}GöÙwdß‘}GöÙwdß‘}GöÙwdß‘}GöÙwdß‘}GöÙwdß‘}GöÙwJü´ån+èÛwZîþqµðÀáÇ8. @node Queueing Networks @chapter Queueing Networks @menu * Introduction to QNs:: A brief introduction to Queueing Networks * Single Class Models:: Queueing models with a single job class * Multiple Class Models:: Queueing models with multiple job classes * Generic Algorithms:: High-level functions for QN analysis * Bounds Analysis:: Computation of asymptotic performance bounds * QN Analysis Examples:: Queueing Networks analysis examples @end menu @cindex queueing networks @c @c INTRODUCTION @c @node Introduction to QNs @section Introduction to QNs Queueing Networks (QN) are a simple modeling notation that can be used to analyze many kinds of systems. In its simplest form, a QN is made of @math{K} service centers; center @math{k} has a queue connected to @math{m_k} (usually identical) servers. Arriving customers (requests) join the queue if there is at least one slot available. Requests are served according to a (de)queueing policy (e.g., FIFO). After service completes, requests leave the server and can join another queue or exit from the system. @cindex delay center @cindex infinite server Service centers where @math{m_k = \infty} are called @emph{delay centers} or @emph{infinite servers}. In this kind of centers, there is always one available server, so that queueing never occurs. Requests join the queue according to a @emph{queueing policy}, such as: @cindex First-Come-First-Served @cindex FCFS @cindex Last-Come-First-Served Preemptive Resume @cindex LCFS-PR @cindex Processor Sharing @cindex PS @cindex Infinite Server @cindex IS @table @strong @item FCFS First-Come-First-Served @item LCFS-PR Last-Come-First-Served, Preemptive Resume @item PS Processor Sharing @item IS Infinite Server (@math{m_k = \infty}). @end table Queueing networks can be @emph{open} or @emph{closed}. In open networks there is an infinite population of requests; new customers are generated outside the system, and eventually leave the network. In closed networks there is a fixed population of request that never leave the system. @cindex single class queueing network @cindex multiple class queueing network @cindex queueing network, single class @cindex queueing network, multiple class Queueing models can have a single request class (@emph{single class models}), meaning that all requests behave in the same way (e.g., they spend the same average time on each particular server). In @emph{multiple class models} there are multiple request classes, each with its own parameters (e.g., with different service times or different routing probabilities). Furthermore, in multiclass models there can be open and closed chains of requests at the same time. @cindex product-form queueing network @cindex queueing network, product-form A particular class of QN models, @emph{product-form} networks, is of particular interest. Product-form networks fulfill the following assumptions: @itemize @item The network can consist of open and closed job classes. @item The following queueing disciplines are allowed: FCFS, PS, LCFS-PR and IS. @item Service times for FCFS nodes must be exponentially distributed and class-independent. Service centers at PS, LCFS-PR and IS nodes can have any kind of service time distribution with a rational Laplace transform. Furthermore, for PS, LCFS-PR and IS nodes, different classes of customers can have different service times. @item The service rate of an FCFS node is only allowed to depend on the number of jobs at this node; in a PS, LCFS-PR and IS node the service rate for a particular job class can also depend on the number of jobs of that class at the node. @item In open networks two kinds of arrival processes are allowed: i) the arrival process is Poisson, with arrival rate @math{\lambda} that can depend on the number of jobs in the network. ii) the arrival process consists of @math{C} independent Poisson arrival streams where the @math{C} job sources are assigned to the @math{C} chains; the arrival rate can be load dependent. @end itemize Product-form networks are attractive because steady-state performance measures can be efficiently computed. @c @c Single Class Models @c @node Single Class Models @section Single Class Models @cindex single class queueing network @cindex queueing network, single class In single class models, all requests are indistinguishable and belong to the same class. This means that every request has the same average service time, and all requests move through the system with the same routing probabilities. @noindent @strong{Model Inputs} @cindex external arrival rate @cindex service time @cindex routing probability matrix @cindex average number of visits @table @asis @item @math{{@lambda}_k} (Open models only) External arrival rate to service center @math{k}. @item @math{@lambda} (Open models only) Overall external arrival rate to the system as a whole: @math{\lambda = \sum_k \lambda_k}. @item @math{N} (Closed models only) Total number of requests in the system. @item @math{S_k} Mean service time at center @math{k}. @math{S_k} is the average time elapsed from service start to service completion at center @math{k}. @item @math{P_{i, j}} Routing probability matrix. @math{{\bf P} = [P_{i, j}]} is a @math{K \times K} matrix where @math{P_{i, j}} is the probability that a request completing service at center @math{i} is routed to center @math{j}. The probability that a request leaves the system after being served at center @math{i} is @math{\left(1-\sum_{j=1}^K P_{i, j}\right)}. @item @math{V_k} Mean number of visits to center @math{k} (also called @emph{visit ratio} or @emph{relative arrival rate}). @end table @noindent @strong{Model Outputs} @cindex utilization @cindex response time @cindex average number of customers @cindex throughput @cindex system response time @cindex system throughput @table @math @item U_k Utilization of service center @math{k}. The utilization is defined as the fraction of time in which the resource is busy (i.e., the server is processing requests). If center @math{k} is a single-server or multiserver node, then @math{0 @leq{} U_k @leq{} 1}. If center @math{k} is an infinite server node (delay center), then @math{U_k} denotes the @emph{traffic intensity} and is defined as @math{U_k = X_k S_k}; in this case the utilization may be greater than one. @item R_k Average response time of service center @math{k}, defined as the mean time between the arrival of a request in the queue and service completion of the same request. @item Q_k Average number of requests in center @math{k}; this includes both the requests in the queue and those being served. @item X_k Throughput of service center @math{k}. The throughput is the rate of job completions, i.e., the average number of jobs completed over a given time interval. @end table @noindent Given the output parameters above, additional performance measures can be computed: @table @math @item X System throughput, @math{X = X_k / V_k} for any @math{k} for which @math{V_k \neq 0} @item R System response time, @math{R = \sum_{k=1}^K R_k V_k} @item Q Average number of requests in the system, @math{Q = \sum_{k=1}^K Q_k}; for closed systems, this can be written as @math{Q = N-XZ}; @end table For open, single class models, the scalar @math{\lambda} denotes the external arrival rate of requests to the system. The average number of visits @math{V_j} satisfy the following equation: @iftex @tex $$ V_j = P_{0, j} + \sum_{i=1}^K V_i P_{i, j} \quad j=1, \ldots, K $$ @end tex @end iftex @ifnottex @example @group K ___ \ V_j = P_(0, j) + > V_i P_(i, j) j=1,...,K /___ i=1 @end group @end example @end ifnottex @noindent where @math{P_{0, j}} is the probability that an external request goes to center @math{j}. If we denote with @math{\lambda_j} the external arrival rate to center @math{j}, and @math{\lambda = \sum_j \lambda_j} the overall external arrival rate, then @math{P_{0, j} = \lambda_j / \lambda}. For closed models, the visit ratios satisfy the following equation: @iftex @tex $$\left\{\eqalign{V_j & = \sum_{i=1}^K V_i P_{i, j} \quad j=1, \ldots, K \cr V_r & = 1 \quad \hbox{for a selected reference station $r$}}\right. $$ @end tex @end iftex @ifnottex @example / | K | ___ | \ | V_j = > V_i P_(i, j) j=1,...,K | /___ | i=1 | | V_r = 1 for a selected reference station r \ @end example @end ifnottex Note that the set of traffic equations @math{V_j = \sum_{i=1}^K V_i P_{i, j}} alone can only be solved up to a multiplicative constant; to get a unique solution we impose an additional constraint @math{V_r = 1} for some @math{1 @leq{} r @leq{} K}. This constraint is equivalent to defining station @math{r} as the @emph{reference station}; the default is @math{r=1}, @pxref{doc-qncsvisits}. A job that returns to the reference station is assumed to have completed its activity cycle. The network throughput is set to the throughput of the reference station. @anchor{doc-qncsvisits} @deftypefn {Function File} {@var{V} =} qncsvisits (@var{P}) @deftypefnx {Function File} {@var{V} =} qncsvisits (@var{P}, @var{r}) Compute the mean number of visits to the service centers of a single class, closed network with @math{K} service centers. @strong{INPUTS} @table @code @item @var{P}(i,j) probability that a request which completed service at center @math{i} is routed to center @math{j} (@math{K \times K} matrix). For closed networks it must hold that @code{sum(@var{P},2)==1}. The routing graph must be strongly connected, meaning that each node must be reachable from every other node. @item @var{r} Index of the reference station, @math{r \in @{1, @dots{}, K@}}; Default @code{@var{r}=1}. The traffic equations are solved by imposing the condition @code{@var{V}(r) = 1}. A request returning to the reference station completes its activity cycle. @end table @strong{OUTPUTS} @table @code @item @var{V}(k) average number of visits to service center @math{k}, assuming @math{r} as the reference station. @end table @end deftypefn @anchor{doc-qnosvisits} @deftypefn {Function File} {@var{V} =} qnosvisits (@var{P}, @var{lambda}) Compute the average number of visits to the service centers of a single class open Queueing Network with @math{K} service centers. @strong{INPUTS} @table @code @item @var{P}(i,j) is the probability that a request which completed service at center @math{i} is routed to center @math{j} (@math{K \times K} matrix). @item @var{lambda}(k) external arrival rate to center @math{k}. @end table @strong{OUTPUTS} @table @code @item @var{V}(k) average number of visits to server @math{k}. @end table @end deftypefn @c @c @c @noindent @strong{EXAMPLE} @float Figure,fig:qn_closed_single @center @image{qn_closed_single,3in} @caption{Closed network with a single class of requests} @end float @ref{fig:qn_closed_single} shows a closed queueing network with a single class of requests. The network has three service centers, labeled @emph{CPU}, @emph{Disk1} and @emph{Disk2}, and is known as a @emph{central server} model of a computer system. Requests spend some time at the CPU, which is represented by a PS (Processor Sharing) node. After that, requests are routed to Disk1 with probability @math{0.3}, and to Disk2 with probability @math{0.7}. Both Disk1 and Disk2 are FCFS nodes. If we label the servers as CPU=1, Disk1=2, Disk2=3, we can define the routing matrix as follows: @iftex @tex $$ {\bf P} = \pmatrix{ 0 & 0.3 & 0.7 \cr 1 & 0 & 0 \cr 1 & 0 & 0 } $$ @end tex @end iftex @ifnottex @example / 0 0.3 0.7 \ P = | 1 0 0 | \ 1 0 0 / @end example @end ifnottex The visit ratios @math{V}, using station 1 as the reference station, can be computed with: @example @verbatim P = [0 0.3 0.7; ... 1 0 0 ; ... 1 0 0 ]; V = qncsvisits(P) @end verbatim @result{} V = 1.00000 0.30000 0.70000 @end example @noindent @strong{EXAMPLE} @float Figure,fig:qn_open_single @center @image{qn_open_single,3in} @caption{Open Queueing Network with a single class of requests} @end float @ref{fig:qn_open_single} shows a open QN with a single class of requests. The network has the same structure as the one in @ref{fig:qn_closed_single}, with the difference that here we have a stream of jobs arriving from outside the system, at a rate @math{\lambda}. After service completion at the CPU, a job can leave the system with probability @math{0.2}, or be transferred to other nodes with the probabilities shown in the figure. The routing matrix is @iftex @tex $$ {\bf P} = \pmatrix{ 0 & 0.3 & 0.5 \cr 1 & 0 & 0 \cr 1 & 0 & 0 } $$ @end tex @end iftex @ifnottex @example / 0 0.3 0.5 \ P = | 1 0 0 | \ 1 0 0 / @end example @end ifnottex If we let @math{\lambda = 1.2}, we can compute the visit ratios @math{V} as follows: @example @verbatim p = 0.3; lambda = 1.2 P = [0 0.3 0.5; ... 1 0 0 ; ... 1 0 0 ]; V = qnosvisits(P,[1.2 0 0]) @end verbatim @result{} V = 5.0000 1.5000 2.5000 @end example Function @command{qnosvisits} expects a vector with @math{K} elements as a second parameter, for open networks only. The vector contains the arrival rates at each individual node; since in our example external arrivals exist only for node @math{S_1} with rate @math{\lambda = 1.2}, the second parameter is @code{[1.2, 0, 0]}. @c @c Open Networks @c @subsection Open Networks Jackson networks satisfy the following conditions: @itemize @item There is only one job class in the network; the total number of jobs in the system is unbounded. @item There are @math{K} service centers in the network. Each service center may have Poisson arrivals from outside the system. A job can leave the system from any node. @item Arrival rates as well as routing probabilities are independent from the number of nodes in the network. @item External arrivals and service times at the service centers are exponentially distributed, and in general can be load-dependent. @item Service discipline at each node is FCFS @end itemize We define the @emph{joint probability vector} @math{\pi(n_1, @dots{}, n_K)} as the steady-state probability that there are @math{n_k} requests at service center @math{k}, for all @math{k=1, @dots{}, N}. Jackson networks have the property that the joint probability is the product of the marginal probabilities @math{\pi_k}: @iftex @tex $$ \pi(n_1, \ldots, n_K) = \prod_{k=1}^K \pi_k(n_k) $$ @end tex @end iftex @ifnottex @example @var{joint_prob} = prod( @var{pi} ) @end example @end ifnottex @noindent where @math{\pi_k(n_k)} is the steady-state probability that there are @math{n_k} requests at service center @math{k}. @anchor{doc-qnos} @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qnos (@var{lambda}, @var{S}, @var{V}) @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qnos (@var{lambda}, @var{S}, @var{V}, @var{m}) @cindex open network, single class @cindex BCMP network Analyze open, single class BCMP queueing networks with @math{K} service centers. This function works for a subset of BCMP single-class open networks satisfying the following properties: @itemize @item The allowed service disciplines at network nodes are: FCFS, PS, LCFS-PR, IS (infinite server); @item Service times are exponentially distributed and load-independent; @item Center @math{k} can consist of @code{@var{m}(k) @geq{} 1} identical servers. @item Routing is load-independent @end itemize @strong{INPUTS} @table @code @item @var{lambda} Overall external arrival rate (@code{@var{lambda}>0}). @item @var{S}(k) average service time at center @math{k} (@code{@var{S}(k)>0}). @item @var{V}(k) average number of visits to center @math{k} (@code{@var{V}(k) @geq{} 0}). @item @var{m}(k) number of servers at center @math{i}. If @code{@var{m}(k) < 1}, enter @math{k} is a delay center (IS); otherwise it is a regular queueing center with @code{@var{m}(k)} servers. Default is @code{@var{m}(k) = 1} for all @math{k}. @end table @strong{OUTPUTS} @table @code @item @var{U}(k) If @math{k} is a queueing center, @code{@var{U}(k)} is the utilization of center @math{k}. If @math{k} is an IS node, then @code{@var{U}(k)} is the @emph{traffic intensity} defined as @code{@var{X}(k)*@var{S}(k)}. @item @var{R}(k) center @math{k} average response time. @item @var{Q}(k) average number of requests at center @math{k}. @item @var{X}(k) center @math{k} throughput. @end table @strong{REFERENCES} @itemize @item G. Bolch, S. Greiner, H. de Meer and K. Trivedi, @cite{Queueing Networks and Markov Chains: Modeling and Performance Evaluation with Computer Science Applications}, Wiley, 1998 @end itemize @seealso{qnopen,qnclosed,qnosvisits} @end deftypefn From the results computed by this function, it is possible to derive other quantities of interest as follows: @itemize @item @strong{System Response Time}: The overall system response time can be computed as @iftex @tex $R_s = \sum_{k=1}^K V_k R_k$ @end tex @end iftex @ifnottex @code{R_s = dot(V,R);} @end ifnottex @item @strong{Average number of requests}: The average number of requests in the system can be computed as: @iftex @tex $$Q_{avg} = \sum_{k=1}^K Q_k$$ @end tex @end iftex @ifnottex @code{Q_avg = sum(Q)} @end ifnottex @end itemize @noindent @strong{EXAMPLE} @example @verbatim lambda = 3; V = [16 7 8]; S = [0.01 0.02 0.03]; [U R Q X] = qnos( lambda, S, V ); R_s = dot(R,V) # System response time N = sum(Q) # Average number in system @end verbatim @print{} R_s = 1.4062 @print{} N = 4.2186 @end example @c @c Closed Networks @c @subsection Closed Networks @anchor{doc-qncsmva} @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}, @var{G}] =} qncsmva (@var{N}, @var{S}, @var{V}) @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}, @var{G}] =} qncsmva (@var{N}, @var{S}, @var{V}, @var{m}) @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}, @var{G}] =} qncsmva (@var{N}, @var{S}, @var{V}, @var{m}, @var{Z}) @cindex Mean Value Analysys (MVA) @cindex closed network, single class @cindex normalization constant Analyze closed, single class queueing networks using the exact Mean Value Analysis (MVA) algorithm. The following queueing disciplines are supported: FCFS, LCFS-PR, PS and IS (Infinite Server). This function supports fixed-rate service centers or multiple server nodes. For general load-dependent service centers, use the function @code{qncsmvald} instead. Additionally, the normalization constant @math{G(n)}, @math{n=0, @dots{}, N} is computed; @math{G(n)} can be used in conjunction with the BCMP theorem to compute steady-state probabilities. @strong{INPUTS} @table @code @item @var{N} Population size (number of requests in the system, @code{@var{N} @geq{} 0}). If @code{@var{N} == 0}, this function returns @code{@var{U} = @var{R} = @var{Q} = @var{X} = 0} @item @var{S}(k) mean service time at center @math{k} (@code{@var{S}(k) @geq{} 0}). @item @var{V}(k) average number of visits to service center @math{k} (@code{@var{V}(k) @geq{} 0}). @item @var{Z} External delay for customers (@code{@var{Z} @geq{} 0}). Default is 0. @item @var{m}(k) number of servers at center @math{k} (if @var{m} is a scalar, all centers have that number of servers). If @code{@var{m}(k) < 1}, center @math{k} is a delay center (IS); otherwise it is a regular queueing center (FCFS, LCFS-PR or PS) with @code{@var{m}(k)} servers. Default is @code{@var{m}(k) = 1} for all @math{k} (each service center has a single server). @end table @strong{OUTPUTS} @table @code @item @var{U}(k) If @math{k} is a FCFS, LCFS-PR or PS node (@code{@var{m}(k) @geq{} 1}), then @code{@var{U}(k)} is the utilization of center @math{k}, @math{0 @leq{} U(k) @leq{} 1}. If @math{k} is an IS node (@code{@var{m}(k) < 1}), then @code{@var{U}(k)} is the @emph{traffic intensity} defined as @code{@var{X}(k)*@var{S}(k)}. In this case the value of @code{@var{U}(k)} may be greater than one. @item @var{R}(k) center @math{k} response time. The @emph{Residence Time} at center @math{k} is @code{@var{R}(k) * @var{V}(k)}. The system response time @var{Rsys} can be computed either as @code{@var{Rsys} = @var{N}/@var{Xsys} - Z} or as @code{@var{Rsys} = dot(@var{R},@var{V})} @item @var{Q}(k) average number of requests at center @math{k}. The number of requests in the system can be computed either as @code{sum(@var{Q})}, or using the formula @code{@var{N}-@var{Xsys}*@var{Z}}. @item @var{X}(k) center @math{K} throughput. The system throughput @var{Xsys} can be computed as @code{@var{Xsys} = @var{X}(1) / @var{V}(1)} @item @var{G}(n) Normalization constants. @code{@var{G}(n+1)} contains the value of the normalization constant @math{G(n)}, @math{n=0, @dots{}, N} as array indexes in Octave start from 1. @math{G(n)} can be used in conjunction with the BCMP theorem to compute steady-state probabilities. @end table @strong{NOTES} In presence of load-dependent servers (i.e., if @code{@var{m}(k)>1} for some @math{k}), the MVA algorithm is known to be numerically unstable. Generally, this issue manifests itself as negative values for the response times or utilizations. This is not a problem of the @code{queueing} toolbox, but of the MVA algorithm, and has currently no known solution. This function prints a warning if numerical problems are detected; the warning can be disabled with the command @code{warning("off", "qn:numerical-instability")}. @strong{REFERENCES} @itemize @item M. Reiser and S. S. Lavenberg, @cite{Mean-Value Analysis of Closed Multichain Queuing Networks}, Journal of the ACM, vol. 27, n. 2, April 1980, pp. 313--322. @uref{http://doi.acm.org/10.1145/322186.322195, 10.1145/322186.322195} @end itemize This implementation is described in R. Jain , @cite{The Art of Computer Systems Performance Analysis}, Wiley, 1991, p. 577. Multi-server nodes are treated according to G. Bolch, S. Greiner, H. de Meer and K. Trivedi, @cite{Queueing Networks and Markov Chains: Modeling and Performance Evaluation with Computer Science Applications}, Wiley, 1998, Section 8.2.1, "Single Class Queueing Networks". @seealso{qncsmvald,qncscmva} @end deftypefn @noindent @strong{EXAMPLE} @example @verbatim S = [ 0.125 0.3 0.2 ]; V = [ 16 10 5 ]; N = 20; m = ones(1,3); Z = 4; [U R Q X] = qncsmva(N,S,V,m,Z); X_s = X(1)/V(1); # System throughput R_s = dot(R,V); # System response time printf("\t Util Qlen RespT Tput\n"); printf("\t-------- -------- -------- --------\n"); for k=1:length(S) printf("Dev%d\t%8.4f %8.4f %8.4f %8.4f\n", k, U(k), Q(k), R(k), X(k) ); endfor printf("\nSystem\t %8.4f %8.4f %8.4f\n\n", N-X_s*Z, R_s, X_s ); @end verbatim @end example @c @c MVA for single class, closed networks with load dependent servers @c @anchor{doc-qncsmvald} @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncsmvald (@var{N}, @var{S}, @var{V}) @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncsmvald (@var{N}, @var{S}, @var{V}, @var{Z}) @cindex Mean Value Analysys (MVA) @cindex MVA @cindex closed network, single class @cindex load-dependent service center Mean Value Analysis algorithm for closed, single class queueing networks with @math{K} service centers and load-dependent service times. This function supports FCFS, LCFS-PR, PS and IS nodes. For networks with only fixed-rate centers and multiple-server nodes, the function @code{qncsmva} is more efficient. @strong{INPUTS} @table @code @item @var{N} Population size (number of requests in the system, @code{@var{N} @geq{} 0}). If @code{@var{N} == 0}, this function returns @code{@var{U} = @var{R} = @var{Q} = @var{X} = 0} @item @var{S}(k,n) mean service time at center @math{k} where there are @math{n} requests, @math{1 @leq{} n @leq{} N}. @code{@var{S}(k,n)} @math{= 1 / \mu_{k}(n)}, where @math{\mu_{k}(n)} is the service rate of center @math{k} when there are @math{n} requests. @item @var{V}(k) average number of visits to service center @math{k} (@code{@var{V}(k) @geq{} 0}). @item @var{Z} external delay ("think time", @code{@var{Z} @geq{} 0}); default 0. @end table @strong{OUTPUTS} @table @code @item @var{U}(k) utilization of service center @math{k}. The utilization is defined as the probability that service center @math{k} is not empty, that is, @math{U_k = 1-\pi_k(0)} where @math{\pi_k(0)} is the steady-state probability that there are 0 jobs at service center @math{k}. @item @var{R}(k) response time on service center @math{k}. @item @var{Q}(k) average number of requests in service center @math{k}. @item @var{X}(k) throughput of service center @math{k}. @end table @strong{NOTES} In presence of load-dependent servers, the MVA algorithm is known to be numerically unstable. Generally this problem manifests itself as negative response times or utilization. @strong{REFERENCES} @itemize @item M. Reiser and S. S. Lavenberg, @cite{Mean-Value Analysis of Closed Multichain Queuing Networks}, Journal of the ACM, vol. 27, n. 2, April 1980, pp. 313--322. @uref{http://doi.acm.org/10.1145/322186.322195, 10.1145/322186.322195} @end itemize This implementation is described in G. Bolch, S. Greiner, H. de Meer and K. Trivedi, @cite{Queueing Networks and Markov Chains: Modeling and Performance Evaluation with Computer Science Applications}, Wiley, 1998, Section 8.2.4.1, ``Networks with Load-Dependent Service: Closed Networks''. @seealso{qncsmva} @end deftypefn @c @c CMVA for single class, closed networks with a single load dependent servers @c @anchor{doc-qncscmva} @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncscmva (@var{N}, @var{S}, @var{Sld}, @var{V}) @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncscmva (@var{N}, @var{S}, @var{Sld}, @var{V}, @var{Z}) @cindex conditional MVA (CMVA) @cindex Mean Value Analysis, conditional (CMVA) @cindex closed network, single class @cindex CMVA Conditional MVA (CMVA) algorithm, a numerically stable variant of MVA. This function supports a network of @math{M @geq{} 1} service centers and a single delay center. Servers @math{1, @dots{}, (M-1)} are load-independent; server @math{M} is load-dependent. @strong{INPUTS} @table @code @item @var{N} Number of requests in the system, @code{@var{N} @geq{} 0}. If @code{@var{N} == 0}, this function returns @code{@var{U} = @var{R} = @var{Q} = @var{X} = 0} @item @var{S}(k) mean service time on server @math{k = 1, @dots{}, (M-1)} (@code{@var{S}(k) > 0}). If there are no fixed-rate servers, then @code{S = []} @item @var{Sld}(n) inverse service rate at server @math{M} (the load-dependent server) when there are @math{n} requests, @math{n=1, @dots{}, N}. @code{@var{Sld}(n) = } @math{1 / \mu(n)}. @item @var{V}(k) average number of visits to service center @math{k=1, @dots{}, M}, where @code{@var{V}(k) @geq{} 0}. @code{@var{V}(1:M-1)} are the visit rates to the fixed rate servers; @code{@var{V}(M)} is the visit rate to the load dependent server. @item @var{Z} External delay for customers (@code{@var{Z} @geq{} 0}). Default is 0. @end table @strong{OUTPUTS} @table @code @item @var{U}(k) center @math{k} utilization (@math{k=1, @dots{}, M}) @item @var{R}(k) response time of center @math{k} (@math{k=1, @dots{}, M}). The system response time @var{Rsys} can be computed as @code{@var{Rsys} = @var{N}/@var{Xsys} - Z} @item @var{Q}(k) average number of requests at center @math{k} (@math{k=1, @dots{}, M}). @item @var{X}(k) center @math{k} throughput (@math{k=1, @dots{}, M}). @end table @strong{REFERENCES} @itemize @item G. Casale. @cite{A note on stable flow-equivalent aggregation in closed networks}. Queueing Syst. Theory Appl., 60:193–-202, December 2008, @uref{http://dx.doi.org/10.1007/s11134-008-9093-6, 10.1007/s11134-008-9093-6} @end itemize @end deftypefn @c @c Approximate MVA for single class, closed networks @c @anchor{doc-qncsmvaap} @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncsmvaap (@var{N}, @var{S}, @var{V}) @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncsmvaap (@var{N}, @var{S}, @var{V}, @var{m}) @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncsmvaap (@var{N}, @var{S}, @var{V}, @var{m}, @var{Z}) @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncsmvaap (@var{N}, @var{S}, @var{V}, @var{m}, @var{Z}, @var{tol}) @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncsmvaap (@var{N}, @var{S}, @var{V}, @var{m}, @var{Z}, @var{tol}, @var{iter_max}) @cindex Mean Value Analysys (MVA), approximate @cindex MVA, approximate @cindex approximate MVA @cindex closed network, single class @cindex closed network, approximate analysis Analyze closed, single class queueing networks using the Approximate Mean Value Analysis (MVA) algorithm. This function is based on approximating the number of customers seen at center @math{k} when a new request arrives as @math{Q_k(N) \times (N-1)/N}. This function only handles single-server and delay centers; if your network contains general load-dependent service centers, use the function @code{qncsmvald} instead. @strong{INPUTS} @table @code @item @var{N} Population size (number of requests in the system, @code{@var{N} > 0}). @item @var{S}(k) mean service time on server @math{k} (@code{@var{S}(k)>0}). @item @var{V}(k) average number of visits to service center @math{k} (@code{@var{V}(k) @geq{} 0}). @item @var{m}(k) number of servers at center @math{k} (if @var{m} is a scalar, all centers have that number of servers). If @code{@var{m}(k) < 1}, center @math{k} is a delay center (IS); if @code{@var{m}(k) == 1}, center @math{k} is a regular queueing center (FCFS, LCFS-PR or PS) with one server (default). This function does not support multiple server nodes (@code{@var{m}(k) > 1}). @item @var{Z} External delay for customers (@code{@var{Z} @geq{} 0}). Default is 0. @item @var{tol} Stopping tolerance. The algorithm stops when the maximum relative difference between the new and old value of the queue lengths @var{Q} becomes less than the tolerance. Default is @math{10^{-5}}. @item @var{iter_max} Maximum number of iterations (@code{@var{iter_max}>0}. The function aborts if convergenge is not reached within the maximum number of iterations. Default is 100. @end table @strong{OUTPUTS} @table @code @item @var{U}(k) If @math{k} is a FCFS, LCFS-PR or PS node (@code{@var{m}(k) == 1}), then @code{@var{U}(k)} is the utilization of center @math{k}. If @math{k} is an IS node (@code{@var{m}(k) < 1}), then @code{@var{U}(k)} is the @emph{traffic intensity} defined as @code{@var{X}(k)*@var{S}(k)}. @item @var{R}(k) response time at center @math{k}. The system response time @var{Rsys} can be computed as @code{@var{Rsys} = @var{N}/@var{Xsys} - Z} @item @var{Q}(k) average number of requests at center @math{k}. The number of requests in the system can be computed either as @code{sum(@var{Q})}, or using the formula @code{@var{N}-@var{Xsys}*@var{Z}}. @item @var{X}(k) center @math{k} throughput. The system throughput @var{Xsys} can be computed as @code{@var{Xsys} = @var{X}(1) / @var{V}(1)} @end table @strong{REFERENCES} This implementation is based on Edward D. Lazowska, John Zahorjan, G. Scott Graham, and Kenneth C. Sevcik, @cite{Quantitative System Performance: Computer System Analysis Using Queueing Network Models}, Prentice Hall, 1984. @url{http://www.cs.washington.edu/homes/lazowska/qsp/}. In particular, see section 6.4.2.2 ("Approximate Solution Techniques"). @seealso{qncsmva,qncsmvald} @end deftypefn @c @c Convolution @c According to the BCMP theorem, the state probability of a closed single class queueing network with @math{K} nodes and @math{N} requests can be expressed as: @iftex @tex $$ \pi(n_1, \ldots, n_K) = {1 \over G(N)} \prod_{k=1}^K F_k(n_k) $$ @end tex @end iftex @ifnottex @example @group n = [n1, @dots{} nK]; @r{population vector} p = 1/G(N+1) \prod F(k,k); @end group @end example @end ifnottex Here @math{\pi(n_1, @dots{}, n_K)} is the joint probability of having @math{n_k} requests at node @math{k}, for all @math{k=1, @dots{}, K}; we have that @math{\sum_{k=1}^K n_k = N} The @emph{convolution algorithms} computes the normalization constants @math{{\bf G} = \left[G(0), @dots{}, G(N)\right]} for single-class, closed networks with @math{N} requests. The normalization constants are returned as vector @code{@var{G}=[@var{G}(1), @dots{} @var{G}(N+1)]} where @code{@var{G}(i+1)} is the value of @math{G(i)} (remember that Octave uses 1-base vectors). The normalization constant can be used to compute all performance measures of interest (utilization, average response time and so on). @command{queueing} implements the convolution algorithm, in the function @command{qncsconv} and @command{qncsconvld}. The first one supports single-station nodes, multiple-station nodes and IS nodes. The second one supports networks with general load-dependent service centers. @anchor{doc-qncsconv} @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}, @var{G}] =} qncsconv (@var{N}, @var{S}, @var{V}) @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}, @var{G}] =} qncsconv (@var{N}, @var{S}, @var{V}, @var{m}) @cindex closed network, single class @cindex normalization constant @cindex convolution algorithm Analyze product-form, single class closed networks with @math{K} service centers using the convolution algorithm. Load-independent service centers, multiple servers (@math{M/M/m} queues) and IS nodes are supported. For general load-dependent service centers, use @code{qncsconvld} instead. @strong{INPUTS} @table @code @item @var{N} Number of requests in the system (@code{@var{N}>0}). @item @var{S}(k) average service time on center @math{k} (@code{@var{S}(k) @geq{} 0}). @item @var{V}(k) visit count of service center @math{k} (@code{@var{V}(k) @geq{} 0}). @item @var{m}(k) number of servers at center @math{k}. If @code{@var{m}(k) < 1}, center @math{k} is a delay center (IS); if @code{@var{m}(k) @geq{} 1}, center @math{k} it is a regular @math{M/M/m} queueing center with @code{@var{m}(k)} identical servers. Default is @code{@var{m}(k) = 1} for all @math{k}. @end table @strong{OUTPUT} @table @code @item @var{U}(k) center @math{k} utilization. For IS nodes, @code{@var{U}(k)} is the @emph{traffic intensity} @code{@var{X}(k) * @var{S}(k)}. @item @var{R}(k) average response time of center @math{k}. @item @var{Q}(k) average number of customers at center @math{k}. @item @var{X}(k) throughput of center @math{k}. @item @var{G}(n) Vector of normalization constants. @code{@var{G}(n+1)} contains the value of the normalization constant with @math{n} requests @math{G(n)}, @math{n=0, @dots{}, N}. @end table @strong{NOTE} For a network with @math{K} service centers and @math{N} requests, this implementation of the convolution algorithm has time and space complexity @math{O(NK)}. @strong{REFERENCES} @itemize @item Jeffrey P. Buzen, @cite{Computational Algorithms for Closed Queueing Networks with Exponential Servers}, Communications of the ACM, volume 16, number 9, September 1973, pp. 527--531. @uref{http://doi.acm.org/10.1145/362342.362345, 10.1145/362342.362345} @end itemize This implementation is based on G. Bolch, S. Greiner, H. de Meer and K. Trivedi, @cite{Queueing Networks and Markov Chains: Modeling and Performance Evaluation with Computer Science Applications}, Wiley, 1998, pp. 313--317. @seealso{qncsconvld} @end deftypefn @noindent @strong{EXAMPLE} The normalization constant @math{G} can be used to compute the steady-state probabilities for a closed single class product-form Queueing Network with @math{K} nodes and @math{N} requests. Let @code{@var{n} = [@math{n_1, @dots{}, n_K}]} be a valid population vector, @math{\sum_{k=1}^K n_k = N}. Then, the steady-state probability @code{@var{p}(k)} to have @code{@var{n}(k)} requests at service center @math{k} can be computed as: @iftex @tex $$ p_k(n_k) = {(V_k S_k)^{n_k} \over G(N)} \left(G(N-n_k) - V_k S_k G(N-n_k-1)\right), \quad k=1, \ldots, K $$ @end tex @end iftex @example @verbatim n = [1 2 0]; N = sum(n); # Total population size S = [ 1/0.8 1/0.6 1/0.4 ]; m = [ 2 3 1 ]; V = [ 1 .667 .2 ]; [U R Q X G] = qncsconv( N, S, V, m ); p = [0 0 0]; # initialize p # Compute the probability to have n(k) jobs at service center k for k=1:3 p(k) = (V(k)*S(k))^n(k) / G(N+1) * ... (G(N-n(k)+1) - V(k)*S(k)*G(N-n(k)) ); printf("Prob( n(%d) = %d )=%f\n", k, n(k), p(k) ); endfor @end verbatim @print{} Prob( n(1) = 1 ) = 0.17975 @print{} Prob( n(2) = 2 ) = 0.48404 @print{} Prob( n(3) = 0 ) = 0.52779 @end example @noindent (recall that @code{@var{G}(@var{N}+1)} represents @math{G(N)}, since in Octave array indices start at one). @c @anchor{doc-qncsconvld} @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}, @var{G}] =} qncsconvld (@var{N}, @var{S}, @var{V}) @cindex closed network @cindex normalization constant @cindex convolution algorithm @cindex load-dependent service center Convolution algorithm for product-form, single-class closed queueing networks with @math{K} general load-dependent service centers. This function computes steady-state performance measures for single-class, closed networks with load-dependent service centers using the convolution algorithm; the normalization constants are also computed. The normalization constants are returned as vector @code{@var{G}=[@var{G}(1), @dots{}, @var{G}(N+1)]} where @code{@var{G}(i+1)} is the value of @math{G(i)}. @strong{INPUTS} @table @code @item @var{N} Number of requests in the system (@code{@var{N}>0}). @item @var{S}(k,n) mean service time at center @math{k} where there are @math{n} requests, @math{1 @leq{} n @leq{} N}. @code{@var{S}(k,n)} @math{= 1 / \mu_{k,n}}, where @math{\mu_{k,n}} is the service rate of center @math{k} when there are @math{n} requests. @item @var{V}(k) visit count of service center @math{k} (@code{@var{V}(k) @geq{} 0}). The length of @var{V} is the number of servers @math{K} in the network. @end table @strong{OUTPUT} @table @code @item @var{U}(k) center @math{k} utilization. @item @var{R}(k) average response time at center @math{k}. @item @var{Q}(k) average number of requests in center @math{k}. @item @var{X}(k) center @math{k} throughput. @item @var{G}(n) Normalization constants (vector). @code{@var{G}(n+1)} corresponds to @math{G(n)}, as array indexes in Octave start from 1. @end table @strong{REFERENCES} @itemize @item Herb Schwetman, @cite{Some Computational Aspects of Queueing Network Models}, Technical Report @uref{http://docs.lib.purdue.edu/cstech/285/, CSD-TR-354}, Department of Computer Sciences, Purdue University, February 1981 (revised). @item M. Reiser, H. Kobayashi, @cite{On The Convolution Algorithm for Separable Queueing Networks}, In Proceedings of the 1976 ACM SIGMETRICS Conference on Computer Performance Modeling Measurement and Evaluation (Cambridge, Massachusetts, United States, March 29--31, 1976). SIGMETRICS '76. ACM, New York, NY, pp. 109--117. @uref{http://doi.acm.org/10.1145/800200.806187, 10.1145/800200.806187} @end itemize This implementation is based on G. Bolch, S. Greiner, H. de Meer and K. Trivedi, @cite{Queueing Networks and Markov Chains: Modeling and Performance Evaluation with Computer Science Applications}, Wiley, 1998, pp. 313--317. Function @command{qncsconvld} is slightly different from the version described in Bolch et al. because it supports general load-dependent centers (while the version in the book does not). The modification is in the definition of function @code{F()} in @command{qncsconvld} which has been made similar to function @math{f_i} defined in Schwetman, @cite{Some Computational Aspects of Queueing Network Models}. @seealso{qncsconv} @end deftypefn @c @c @c @subsection Non Product-Form QNs @anchor{Non Product-Form QNs} @c @c MVABLO algorithm for approximate analysis of closed, single class @c QN with blocking @c @anchor{doc-qncsmvablo} @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncsmvablo (@var{N}, @var{S}, @var{M}, @var{P} ) @cindex queueing network with blocking @cindex blocking queueing network @cindex closed network, finite capacity @cindex MVABLO Approximate MVA algorithm for closed queueing networks with blocking. @strong{INPUTS} @table @code @item @var{N} number of requests in the system. @var{N} must be strictly greater than zero, and less than the overall network capacity: @code{0 < @var{N} < sum(@var{M})}. @item @var{S}(k) average service time on server @math{k} (@code{@var{S}(k) > 0}). @item @var{M}(k) capacity of center @math{k}. The capacity is the maximum number of requests in a service center, including the request in service (@code{@var{M}(k) @geq{} 1}). @item @var{P}(i,j) probability that a request which completes service at server @math{i} will be transferred to server @math{j}. @end table @strong{OUTPUTS} @table @code @item @var{U}(k) center @math{k} utilization. @item @var{R}(k) average response time of service center @math{k}. @item @var{Q}(k) average number of requests in service center @math{k} (including the request in service). @item @var{X}(k) center @math{k} throughput. @end table @strong{REFERENCES} @itemize @item Ian F. Akyildiz, @cite{Mean Value Analysis for Blocking Queueing Networks}, IEEE Transactions on Software Engineering, vol. 14, n. 2, april 1988, pp. 418--428. @uref{http://dx.doi.org/10.1109/32.4663, 10.1109/32.4663} @end itemize @seealso{qnopen, qnclosed} @end deftypefn @c @anchor{doc-qnmarkov} @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qnmarkov (@var{lambda}, @var{S}, @var{C}, @var{P}) @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qnmarkov (@var{lambda}, @var{S}, @var{C}, @var{P}, @var{m}) @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qnmarkov (@var{N}, @var{S}, @var{C}, @var{P}) @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qnmarkov (@var{N}, @var{S}, @var{C}, @var{P}, @var{m}) @cindex closed network, single class @cindex open network, single class @cindex closed network, finite capacity @cindex blocking queueing network @cindex RS blocking Compute utilization, response time, average queue length and throughput for open or closed queueing networks with finite capacity and a single class of requests. Blocking type is Repetitive-Service (RS). This function explicitly generates and solve the underlying Markov chain, and thus might require a large amount of memory. More specifically, networks which can me analyzed by this function have the following properties: @itemize @bullet @item There exists only a single class of customers. @item The network has @math{K} service centers. Center @math{k \in @{1, @dots{}, K@}} has @math{m_k > 0} servers, and has a total (finite) capacity of @math{C_k \geq m_k} which includes both buffer space and servers. The buffer space at service center @math{k} is therefore @math{C_k - m_k}. @item The network can be open, with external arrival rate to center @math{k} equal to @math{\lambda_k}, or closed with fixed population size @math{N}. For closed networks, the population size @math{N} must be strictly less than the network capacity: @math{N < \sum_{k=1}^K C_k}. @item Average service times are load-independent. @item @math{P_{i, j}} is the probability that requests completing execution at center @math{i} are transferred to center @math{j}, @math{i \neq j}. For open networks, a request may leave the system from any node @math{i} with probability @math{1-\sum_{j=1}^K P_{i, j}}. @item Blocking type is Repetitive-Service (RS). Service center @math{j} is @emph{saturated} if the number of requests is equal to its capacity @math{C_j}. Under the RS blocking discipline, a request completing service at center @math{i} which is being transferred to a saturated server @math{j} is put back at the end of the queue of @math{i} and will receive service again. Center @math{i} then processes the next request in queue. External arrivals to a saturated servers are dropped. @end itemize @strong{INPUTS} @table @code @item @var{lambda}(k) @itemx @var{N} If the first argument is a vector @var{lambda}, it is considered to be the external arrival rate @code{@var{lambda}(k) @geq{} 0} to service center @math{k} of an open network. If the first argument is a scalar, it is considered as the population size @var{N} of a closed network; in this case @var{N} must be strictly less than the network capacity: @code{@var{N} < sum(@var{C})}. @item @var{S}(k) average service time at service center @math{k} @item @var{C}(k) capacity of service center @math{k}. The capacity includes both the buffer and server space @code{@var{m}(k)}. Thus the buffer space is @code{@var{C}(k)-@var{m}(k)}. @item @var{P}(i,j) transition probability from service center @math{i} to service center @math{j}. @item @var{m}(k) number of servers at service center @math{k}. Note that @code{@var{m}(k) @geq{} @var{C}(k)} for each @var{k}. If @var{m} is omitted, all service centers are assumed to have a single server (@code{@var{m}(k) = 1} for all @math{k}). @end table @strong{OUTPUTS} @table @code @item @var{U}(k) center @math{k} utilization. @item @var{R}(k) response time on service center @math{k}. @item @var{Q}(k) average number of customers in the service center @math{k}, @emph{including} the request in service. @item @var{X}(k) throughput of service center @math{k}. @end table @strong{NOTES} The space complexity of this implementation is @math{O(\prod_{k=1}^K (C_k + 1)^2)}. The time complexity is dominated by the time needed to solve a linear system with @math{\prod_{k=1}^K (C_k + 1)} unknowns. @end deftypefn @c @c @c @node Multiple Class Models @section Multiple Class Models @cindex multiple class queueing network @cindex queueing network, multiple class In multiple class queueing models, we assume that there exist @math{C} different classes of requests. Each request from class @math{c} spends on average time @math{S_{c, k}} in service at center @math{k}. For open models, we denote with @math{{\bf \lambda} = \lambda_{c, k}} the arrival rates, where @math{\lambda_{c, k}} is the external arrival rate of class @math{c} requests at center @math{k}. For closed models, we denote with @math{{\bf N} = \left[N_1, @dots{}, N_C\right]} the population vector, where @math{N_c} is the number of class @math{c} requests in the system. The transition probability matrix for multiple class networks is a @math{C \times K \times C \times K} matrix @math{{\bf P} = [P_{r, i, s, j}]} where @math{P_{r, i, s, j}} is the probability that a class @math{r} request which completes service at center @math{i} will join server @math{j} as a class @math{s} request. Model input and outputs can be adjusted by adding additional indexes for the customer classes. @noindent @strong{Model Inputs} @cindex external arrival rate @cindex service time @cindex routing probability matrix @cindex average number of visits @table @asis @item @math{@lambdack} (open networks) External arrival rate of class-@math{c} requests to service center @math{k} @item @math{@lambda} (open networks) Overall external arrival rate to the whole system: @math{\lambda = \sum_{c=1}^C \sum_{k=1}^K \lambda_{c, k}} @item @math{N_c} (closed networks) Number of class @math{c} requests in the system. @item @math{S_{c, k}} Average service time. @math{S_{c, k}} is the average service time on service center @math{k} for class @math{c} requests. @item @math{P_{r, i, s, j}} Routing probability matrix. @math{{\bf P} = [P_{r, i, s, j}]} is a @math{C \times K \times C \times K} matrix such that @math{P_{r, i, s, j}} is the probability that a class @math{r} request which completes service at server @math{i} will move to server @math{j} as a class @math{s} request. @item @math{V_{c, k}} Mean number of visits of class @math{c} requests to center @math{k}. @end table @noindent @strong{Model Outputs} @cindex utilization @cindex response time @cindex average number of customers @cindex throughput @cindex system response time @cindex system throughput @table @asis @item @math{U_{c, k}} Utilization of service center @math{k} by class @math{c} requests. The utilization is defined as the fraction of time in which the resource is busy (i.e., the server is processing requests). If center @math{k} is a single-server or multiserver node, then @math{0 @leq{} U_{c, k} @leq{} 1}. If center @math{k} is an infinite server node (delay center), then @math{U_{c, k}} denotes the @emph{traffic intensity} and is defined as @math{U_{c, k} = X_{c, k} S_{c, k}}; in this case the utilization may be greater than one. @item @math{R_{c, k}} Average response time experienced by class @math{c} requests on service center @math{k}. The average response time is defined as the average time between the arrival of a customer in the queue, and the completion of service. @item @math{Q_{c, k}} Average number of class @math{c} requests on service center @math{k}. This includes both the requests in the queue, and the request being served. @item @math{X_{c, k}} Throughput of service center @math{k} for class @math{c} requests. The throughput is defined as the rate of completion of class @math{c} requests. @end table @noindent It is possible to define aggregate performance measures as follows: @table @math @item U_k Utilization of service center @math{k}: @iftex @tex $U_k = \sum_{c=1}^C U_{c, k}$ @end tex @end iftex @ifnottex @code{Uk = sum(U,k);} @end ifnottex @item R_c System response time for class @math{c} requests: @iftex @tex $R_c = \sum_{k=1}^K R_{c, k} V_{c, k}$ @end tex @end iftex @ifnottex @code{Rc = sum( V.*R, 1 );} @end ifnottex @item Q_c Average number of class @math{c} requests in the system: @iftex @tex $Q_c = \sum_{k=1}^K Q_{c, k}$ @end tex @end iftex @ifnottex @code{Qc = sum( Q, 2 );} @end ifnottex @item X_c Class @math{c} throughput: @iftex @tex $X_c = X_{c, k} / V_{c, k}$ for any @math{k} for which @math{V_{c,k} \neq 0} @end tex @end iftex @ifnottex @code{X(c) = X(c,k) ./ V(c,k);} for any @math{k} for which @code{V(c,k) != 0} @end ifnottex @end table For closed networks, we can define the visit ratios @math{V_{s, j}} for class @math{s} customers at service center @math{j} as follows: @iftex @tex $$\left\{\eqalign{ V_{s, j} & = \sum_{r=1}^C \sum_{i=1}^K V_{r, i} P_{r, i, s, j}, \quad s=1, \ldots, C, j=1, \ldots, K \cr V_{s, r_s} & = 1, \quad s=1, \ldots, C}\right. $$ @end tex @end iftex @ifnottex @group V_sj = sum_r sum_i V_ri P_risj s=1,...,C, j=1,...,K V_s r_s = 1 s=1,...,C @end group @end ifnottex @noindent where @math{r_s} is the class @math{s} reference station. Similarly to single class models, the traffic equation for closed multiclass networks can be solved up to multiplicative constants unless we choose one reference station for each closed class and set its visit ratio to 1. For open networks the traffic equations are as follows: @iftex @tex $$V_{s, j} = P_{0, s, j} + \sum_{r=1}^C \sum_{i=1}^K V_{r, i} P_{r, i, s, j} \quad s=1, \ldots, C, j=1, \ldots, K$$ @end tex @end iftex @ifnottex @group V_sj = P_0sj + sum_r sum_i V_ri P_risj s=1,...,C, j=1,...,K @end group @end ifnottex @noindent where @math{P_{0, s, j}} is the probability that an external arrival goes to service center @math{j} as a class-@math{s} request. If @math{\lambda_{s, j}} is the external arrival rate of class @math{s} requests to service center @math{j}, and @math{\lambda = \sum_s \sum_j \lambda_{s, j}} is the overall external arrival rate, then @math{P_{0, s, j} = \lambda_{s, j} / \lambda}. @anchor{doc-qncmvisits} @deftypefn {Function File} {[@var{V} @var{ch}] =} qncmvisits (@var{P}) @deftypefnx {Function File} {[@var{V} @var{ch}] =} qncmvisits (@var{P}, @var{r}) Compute the average number of visits for the nodes of a closed multiclass network with @math{K} service centers and @math{C} customer classes. @strong{INPUTS} @table @code @item @var{P}(r,i,s,j) probability that a class @math{r} request which completed service at center @math{i} is routed to center @math{j} as a class @math{s} request. Class switching is allowed. @item @var{r}(c) index of class @math{c} reference station, @math{r(c) \in @{1, @dots{}, K@}}, @math{1 @leq{} c @leq{} C}. The class @math{c} visit count to server @code{@var{r}(c)} (@code{@var{V}(c,r(c))}) is conventionally set to 1. The reference station serves two purposes: (i) its throughput is assumed to be the system throughput, and (ii) a job returning to the reference station is assumed to have completed one cycle. Default is to consider station 1 as the reference station for all classes. @end table @strong{OUTPUTS} @table @code @item @var{V}(c,i) number of visits of class @math{c} requests at center @math{i}. @item @var{ch}(c) chain number that class @math{c} belongs to. Different classes can belong to the same chain. Chains are numbered sequentially starting from 1 (@math{1, 2, @dots{}}). The total number of chains is @code{max(@var{ch})}. @end table @end deftypefn @anchor{doc-qnomvisits} @deftypefn {Function File} {@var{V} =} qnomvisits (@var{P}, @var{lambda}) Compute the visit ratios to the service centers of an open multiclass network with @math{K} service centers and @math{C} customer classes. @strong{INPUTS} @table @code @item @var{P}(r,i,s,j) probability that a class @math{r} request which completed service at center @math{i} is routed to center @math{j} as a class @math{s} request. Class switching is supported. @item @var{lambda}(r,i) external arrival rate of class @math{r} requests to center @math{i}. @end table @strong{OUTPUTS} @table @code @item @var{V}(r,i) visit ratio of class @math{r} requests at center @math{i}. @end table @end deftypefn @c @c Open Networks @c @subsection Open Networks @c @c Open network with multiple classes @c @anchor{doc-qnom} @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qnom (@var{lambda}, @var{S}, @var{V}) @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qnom (@var{lambda}, @var{S}, @var{V}, @var{m}) @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qnom (@var{lambda}, @var{S}, @var{P}) @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qnom (@var{lambda}, @var{S}, @var{P}, @var{m}) @cindex open network, multiple classes @cindex multiclass network, open Exact analysis of open, multiple-class BCMP networks. The network can be made of @emph{single-server} queueing centers (FCFS, LCFS-PR or PS) or delay centers (IS). This function assumes a network with @math{K} service centers and @math{C} customer classes. @strong{INPUTS} @table @code @item @var{lambda}(c) If this function is invoked as @code{qnom(lambda, S, V, @dots{})}, then @code{@var{lambda}(c)} is the external arrival rate of class @math{c} customers (@code{@var{lambda}(c) @geq{} 0}). If this function is invoked as @code{qnom(lambda, S, P, @dots{})}, then @code{@var{lambda}(c,k)} is the external arrival rate of class @math{c} customers at center @math{k} (@code{@var{lambda}(c,k) @geq{} 0}). @item @var{S}(c,k) mean service time of class @math{c} customers on the service center @math{k} (@code{@var{S}(c,k)>0}). For FCFS nodes, mean service times must be class-independent. @item @var{V}(c,k) visit ratio of class @math{c} customers to service center @math{k} (@code{@var{V}(c,k) @geq{} 0 }). @strong{If you pass this argument, class switching is not allowed} @item @var{P}(r,i,s,j) probability that a class @math{r} job completing service at center @math{i} is routed to center @math{j} as a class @math{s} job. @strong{If you pass argument @var{P}, class switching is allowed}; however, all servers must be fixed-rate or infinite-server nodes (@code{@var{m}(k) @leq{} 1} for all @math{k}). @item @var{m}(k) number of servers at center @math{k}. If @code{@var{m}(k) < 1}, enter @math{k} is a delay center (IS); otherwise it is a regular queueing center with @code{@var{m}(k)} servers. Default is @code{@var{m}(k) = 1} for all @math{k}. @end table @strong{OUTPUTS} @table @code @item @var{U}(c,k) If @math{k} is a queueing center, then @code{@var{U}(c,k)} is the class @math{c} utilization of center @math{k}. If @math{k} is an IS node, then @code{@var{U}(c,k)} is the class @math{c} @emph{traffic intensity} defined as @code{@var{X}(c,k)*@var{S}(c,k)}. @item @var{R}(c,k) class @math{c} response time at center @math{k}. The system response time for class @math{c} requests can be computed as @code{dot(@var{R}, @var{V}, 2)}. @item @var{Q}(c,k) average number of class @math{c} requests at center @math{k}. The average number of class @math{c} requests in the system @var{Qc} can be computed as @code{Qc = sum(@var{Q}, 2)} @item @var{X}(c,k) class @math{c} throughput at center @math{k}. @end table @strong{NOTES} If the function call specifies the visit ratios @var{V}, class switching is @strong{not} allowed. If the function call specifies the routing probability matrix @var{P}, then class switching @strong{is} allowed; however, all nodes are restricted to be fixed rate servers or delay centers: multiple-server and general load-dependent centers are not supported. Note that the meaning of parameter @var{lambda} is different from one case to the other (see below). @strong{REFERENCES} @itemize @item Edward D. Lazowska, John Zahorjan, G. Scott Graham, and Kenneth C. Sevcik, @cite{Quantitative System Performance: Computer System Analysis Using Queueing Network Models}, Prentice Hall, 1984. @url{http://www.cs.washington.edu/homes/lazowska/qsp/}. In particular, see section 7.4.1 ("Open Model Solution Techniques"). @end itemize @seealso{qnopen,qnos,qnomvisits} @end deftypefn @c @c Closed Networks @c @subsection Closed Networks @c @anchor{doc-qncmpopmix} @deftypefn {Function File} {pop_mix =} qncmpopmix (@var{k}, @var{N}) @cindex population mix @cindex closed network, multiple classes Return the set of population mixes for a closed multiclass queueing network with exactly @var{k} customers. Specifically, given a closed multiclass QN with @math{C} customer classes, where there are @code{@var{N}(c)} class @math{c} requests, @math{c = 1, @dots{}, C} a @math{k}-mix @math{M} is a vector of length @math{C} with the following properties: @itemize @item @math{0 @leq{} M_c @leq{} @var{N}(c)} for all @math{c = 1, @dots{}, C}; @item @math{\sum_{c=1}^C M_c = k} @end itemize In other words, a @math{k}-mix is an allocation of @math{k} requests to @math{C} classes such that the number of requests assigned to class @math{c} does not exceed the maximum value @code{@var{N}(c)}. @var{pop_mix} is a matrix with @math{C} columns, such that each row represents a valid mix. @strong{INPUTS} @table @code @item @var{k} Size of the requested mix (scalar, @code{@var{k} @geq{} 0}). @item @var{N}(c) number of class @math{c} requests (@code{@var{k} @leq{} sum(@var{N})}). @end table @strong{OUTPUTS} @table @code @item @var{pop_mix}(i,c) number of class @math{c} requests in the @math{i}-th population mix. The number of mixes is @code{rows(@var{pop_mix})}. @end table If you are interested in the number of @math{k}-mixes only, you can use the funcion @code{qnmvapop}. @strong{REFERENCES} @itemize @item Herb Schwetman, @cite{Implementing the Mean Value Algorithm for the Solution of Queueing Network Models}, Technical Report @uref{http://docs.lib.purdue.edu/cstech/286/, 80-355}, Department of Computer Sciences, Purdue University, revised February 15, 1982. @end itemize The slightly different problem of enumerating all tuples @math{k_1, @dots{}, k_N} such that @math{\sum_i k_i = k} and @math{k_i @geq{} 0}, for a given @math{k @geq{} 0} has been described in S. Santini, @cite{Computing the Indices for a Complex Summation}, unpublished report, available at @url{http://arantxa.ii.uam.es/~ssantini/writing/notes/s668_summation.pdf} @seealso{qncmnpop} @end deftypefn @noindent @strong{EXAMPLE} Let us consider a multiclass network with @math{C=2} customer classes; the maximum number of class 1 requests is 2, and the maximum number of class 2 requests is 3. How is it possible to allocate 3 requests to the two classes so that the maximum number of requests per class is not exceeded? @example @verbatim N = [2 3]; mix = qncmpopmix(3, N) @end verbatim @print{} mix = [ [2 1] [1 2] [0 3] ] @end example @c @anchor{doc-qncmnpop} @deftypefn {Function File} {@var{H} =} qncmnpop (@var{N}) @cindex population mix @cindex closed network, multiple classes Given a network with @math{C} customer classes, this function computes the number of @math{k}-mixes @code{@var{H}(r,k)} that can be constructed by the multiclass MVA algorithm by allocating @math{k} customers to the first @math{r} classes. @xref{doc-qncmpopmix} for the definition of @math{k}-mix. @strong{INPUTS} @table @code @item @var{N}(c) number of class-@math{c} requests in the system. The total number of requests in the network is @code{sum(@var{N})}. @end table @strong{OUTPUTS} @table @code @item @var{H}(r,k) is the number of @math{k} mixes that can be constructed allocating @math{k} customers to the first @math{r} classes. @end table @strong{REFERENCES} @itemize @item Zahorjan, J. and Wong, E. @cite{The solution of separable queueing network models using mean value analysis}. SIGMETRICS Perform. Eval. Rev. 10, 3 (Sep. 1981), 80-85. DOI @uref{http://doi.acm.org/10.1145/1010629.805477, 10.1145/1010629.805477} @end itemize @seealso{qncmmva,qncmpopmix} @end deftypefn @c @c MVA for multiple class, closed networks @c @anchor{doc-qncmmva} @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncmmva (@var{N}, @var{S} ) @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncmmva (@var{N}, @var{S}, @var{V}) @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncmmva (@var{N}, @var{S}, @var{V}, @var{m}) @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncmmva (@var{N}, @var{S}, @var{V}, @var{m}, @var{Z}) @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncmmva (@var{N}, @var{S}, @var{P}) @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncmmva (@var{N}, @var{S}, @var{P}, @var{r}) @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncmmva (@var{N}, @var{S}, @var{P}, @var{r}, @var{m}) @cindex Mean Value Analysys (MVA) @cindex closed network, multiple classes @cindex multiclass network, closed Compute steady-state performance measures for closed, multiclass queueing networks using the Mean Value Analysys (MVA) algorithm. Queueing policies at service centers can be any of the following: @table @strong @item FCFS (First-Come-First-Served) customers are served in order of arrival; multiple servers are allowed. For this kind of queueing discipline, average service times must be class-independent. @item PS (Processor Sharing) customers are served in parallel by a single server, each customer receiving an equal share of the service rate. @item LCFS-PR (Last-Come-First-Served, Preemptive Resume) customers are served in reverse order of arrival by a single server and the last arrival preempts the customer in service who will later resume service at the point of interruption. @item IS (Infinite Server) customers are delayed independently of other customers at the service center (there is effectively an infinite number of servers). @end table @strong{INPUTS} @table @code @item @var{N}(c) number of class @math{c} requests; @code{@var{N}(c) @geq{} 0}. If class @math{c} has no requests (@code{@var{N}(c) == 0}), then for all @var{k}, this function returns @code{@var{U}(c,k) = @var{R}(c,k) = @var{Q}(c,k) = @var{X}(c,k) = 0} @item @var{S}(c,k) mean service time for class @math{c} requests at center @math{k} (@code{@var{S}(c,k) @geq{} 0}). If the service time at center @math{k} is class-dependent, then center @math{k} is assumed to be of type @math{-/G/1}--PS (Processor Sharing). If center @math{k} is a FCFS node (@code{@var{m}(k)>1}), then the service times @strong{must} be class-independent, i.e., all classes @strong{must} have the same service time. @item @var{V}(c,k) average number of visits of class @math{c} requests at center @math{k}; @code{@var{V}(c,k) @geq{} 0}, default is 1. @strong{If you pass this argument, class switching is not allowed} @item @var{P}(r,i,s,j) probability that a class @math{r} request completing service at center @math{i} is routed to center @math{j} as a class @math{s} request; the reference stations for each class are specified with the paramter @var{r}. @strong{If you pass argument @var{P}, class switching is allowed}; however, you can not specify any external delay (i.e., @var{Z} must be zero) and all servers must be fixed-rate or infinite-server nodes (@code{@var{m}(k) @leq{} 1} for all @math{k}). @item @var{r}(c) reference station for class @math{c}. If omitted, station 1 is the reference station for all classes. See @command{qncmvisits}. @item @var{m}(k) If @code{@var{m}(k)<1}, then center @math{k} is assumed to be a delay center (IS node @math{-/G/\infty}). If @code{@var{m}(k)==1}, then service center @math{k} is a regular queueing center (@math{M/M/1}--FCFS, @math{-/G/1}--LCFS-PR or @math{-/G/1}--PS). Finally, if @code{@var{m}(k)>1}, center @math{k} is a @math{M/M/m}--FCFS center with @code{@var{m}(k)} identical servers. Default is @code{@var{m}(k)=1} for each @math{k}. @item @var{Z}(c) class @math{c} external delay (think time); @code{@var{Z}(c) @geq{} 0}. Default is 0. This parameter can not be used if you pass a routing matrix as the second parameter of @code{qncmmva}. @end table @strong{OUTPUTS} @table @code @item @var{U}(c,k) If @math{k} is a FCFS, LCFS-PR or PS node (@code{@var{m}(k) @geq{} 1}), then @code{@var{U}(c,k)} is the class @math{c} utilization at center @math{k}, @math{0 @leq{} U(c,k) @leq{} 1}. If @math{k} is an IS node, then @code{@var{U}(c,k)} is the class @math{c} @emph{traffic intensity} at center @math{k}, defined as @code{@var{U}(c,k) = @var{X}(c,k)*@var{S}(c,k)}. In this case the value of @code{@var{U}(c,k)} may be greater than one. @item @var{R}(c,k) class @math{c} response time at center @math{k}. The class @math{c} @emph{residence time} at center @math{k} is @code{@var{R}(c,k) * @var{C}(c,k)}. The total class @math{c} system response time is @code{dot(@var{R}, @var{V}, 2)}. @item @var{Q}(c,k) average number of class @math{c} requests at center @math{k}. The total number of requests at center @math{k} is @code{sum(@var{Q}(:,k))}. The total number of class @math{c} requests in the system is @code{sum(@var{Q}(c,:))}. @item @var{X}(c,k) class @math{c} throughput at center @math{k}. The class @math{c} throughput can be computed as @code{@var{X}(c,1) / @var{V}(c,1)}. @end table @strong{NOTES} If the function call specifies the visit ratios @var{V}, then class switching is @strong{not} allowed. If the function call specifies the routing probability matrix @var{P}, then class switching @strong{is} allowed; however, in this case all nodes are restricted to be fixed rate servers or delay centers: multiple-server and general load-dependent centers are not supported. In presence of load-dependent servers (e.g., if @code{@var{m}(i)>1} for some @math{i}), the MVA algorithm is known to be numerically unstable. Generally this problem shows up as negative values for the computed response times or utilizations. This is not a problem with the @code{queueing} package, but with the MVA algorithm; as such, there is no known workaround at the moment (aoart from using a different solution technique, if available). This function prints a warning if it detects numerical problems; you can disable the warning with the command @code{warning("off", "qn:numerical-instability")}. Given a network with @math{K} service centers, @math{C} job classes and population vector @math{{\bf N}=\left[N_1, @dots{}, N_C\right]}, the MVA algorithm requires space @math{O(C \prod_i (N_i + 1))}. The time complexity is @math{O(CK\prod_i (N_i + 1))}. This implementation is slightly more space-efficient (see details in the code). While the space requirement can be mitigated by using some optimizations, the time complexity can not. If you need to analyze large closed networks you should consider the @command{qncmmvaap} function, which implements the approximate MVA algorithm. Note however that @command{qncmmvaap} will only provide approximate results. @strong{REFERENCES} @itemize @item M. Reiser and S. S. Lavenberg, @cite{Mean-Value Analysis of Closed Multichain Queuing Networks}, Journal of the ACM, vol. 27, n. 2, April 1980, pp. 313--322. @uref{http://doi.acm.org/10.1145/322186.322195, 10.1145/322186.322195} @end itemize This implementation is based on G. Bolch, S. Greiner, H. de Meer and K. Trivedi, @cite{Queueing Networks and Markov Chains: Modeling and Performance Evaluation with Computer Science Applications}, Wiley, 1998 and Edward D. Lazowska, John Zahorjan, G. Scott Graham, and Kenneth C. Sevcik, @cite{Quantitative System Performance: Computer System Analysis Using Queueing Network Models}, Prentice Hall, 1984. @url{http://www.cs.washington.edu/homes/lazowska/qsp/}. In particular, see section 7.4.2.1 ("Exact Solution Techniques"). @seealso{qnclosed, qncmmvaapprox, qncmvisits} @end deftypefn @c @c Approximate MVA, with Bard-Schweitzer approximation @c @anchor{doc-qncmmvabs} @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncmmvabs (@var{N}, @var{S}, @var{V}) @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncmmvabs (@var{N}, @var{S}, @var{V}, @var{m}) @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncmmvabs (@var{N}, @var{S}, @var{V}, @var{m}, @var{Z}) @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncmmvabs (@var{N}, @var{S}, @var{V}, @var{m}, @var{Z}, @var{tol}) @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qncmmvabs (@var{N}, @var{S}, @var{V}, @var{m}, @var{Z}, @var{tol}, @var{iter_max}) @cindex Mean Value Analysys (MVA), approximate @cindex MVA, approximate @cindex closed network, multiple classes @cindex multiclass network, closed Approximate Mean Value Analysis (MVA) for closed, multiclass queueing networks with @math{K} service centers and @math{C} customer classes. This implementation uses Bard and Schweitzer approximation. It is based on the assumption that the queue length at service center @math{k} with population set @math{{\bf N}-{\bf 1}_c} is approximated with @tex $$Q_k({\bf N}-{\bf 1}_c) \approx {n-1 \over n} Q_k({\bf N})$$ @end tex @ifnottex @example @group Q_k(N-1c) ~ (n-1)/n Q_k(N) @end group @end example @end ifnottex where @math{\bf N} is a valid population mix, @math{{\bf N}-{\bf 1}_c} is the population mix @math{\bf N} with one class @math{c} customer removed, and @math{n = \sum_c N_c} is the total number of requests. This implementation works for networks with infinite server (IS) and single-server nodes only. @strong{INPUTS} @table @code @item @var{N}(c) number of class @math{c} requests in the system (@code{@var{N}(c) @geq{} 0}). @item @var{S}(c,k) mean service time for class @math{c} customers at center @math{k} (@code{@var{S}(c,k) @geq{} 0}). @item @var{V}(c,k) average number of visits of class @math{c} requests to center @math{k} (@code{@var{V}(c,k) @geq{} 0}). @item @var{m}(k) number of servers at center @math{k}. If @code{@var{m}(k) < 1}, then the service center @math{k} is assumed to be a delay center (IS). If @code{@var{m}(k) == 1}, service center @math{k} is a regular queueing center (FCFS, LCFS-PR or PS) with a single server node. If omitted, each service center has a single server. Note that multiple server nodes are not supported. @item @var{Z}(c) class @math{c} external delay (@code{@var{Z} @geq{} 0}). Default is 0. @item @var{tol} Stopping tolerance (@code{@var{tol}>0}). The algorithm stops if the queue length computed on two subsequent iterations are less than @var{tol}. Default is @math{10^{-5}}. @item @var{iter_max} Maximum number of iterations (@code{@var{iter_max}>0}. The function aborts if convergenge is not reached within the maximum number of iterations. Default is 100. @end table @strong{OUTPUTS} @table @code @item @var{U}(c,k) If @math{k} is a FCFS, LCFS-PR or PS node, then @code{@var{U}(c,k)} is the utilization of class @math{c} requests on service center @math{k}. If @math{k} is an IS node, then @code{@var{U}(c,k)} is the class @math{c} @emph{traffic intensity} at device @math{k}, defined as @code{@var{U}(c,k) = @var{X}(c)*@var{S}(c,k)} @item @var{R}(c,k) response time of class @math{c} requests at service center @math{k}. @item @var{Q}(c,k) average number of class @math{c} requests at service center @math{k}. @item @var{X}(c,k) class @math{c} throughput at service center @math{k}. @end table @strong{REFERENCES} @itemize @item Y. Bard, @cite{Some Extensions to Multiclass Queueing Network Analysis}, proc. 4th Int. Symp. on Modelling and Performance Evaluation of Computer Systems, Feb 1979, pp. 51--62. @item P. Schweitzer, @cite{Approximate Analysis of Multiclass Closed Networks of Queues}, Proc. Int. Conf. on Stochastic Control and Optimization, jun 1979, pp. 25--29. @end itemize This implementation is based on Edward D. Lazowska, John Zahorjan, G. Scott Graham, and Kenneth C. Sevcik, @cite{Quantitative System Performance: Computer System Analysis Using Queueing Network Models}, Prentice Hall, 1984. @url{http://www.cs.washington.edu/homes/lazowska/qsp/}. In particular, see section 7.4.2.2 ("Approximate Solution Techniques"). This implementation is slightly different from the one described above, as it computes the average response times @math{R} instead of the residence times. @seealso{qncmmva} @end deftypefn @c @c Mixed networks @c @subsection Mixed Networks @c @c MVA for mixed networks @c @anchor{doc-qnmix} @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qnmix (@var{lambda}, @var{N}, @var{S}, @var{V}, @var{m}) @cindex Mean Value Analysys (MVA) @cindex mixed network Mean Value Analysis for mixed queueing networks. The network consists of @math{K} service centers (single-server or delay centers) and @math{C} independent customer chains. Both open and closed chains are possible. @var{lambda} is the vector of per-chain arrival rates (open classes); @var{N} is the vector of populations for closed chains. Class switching is @strong{not} allowed. Each customer class @emph{must} correspond to an independent chain. If the network is made of open or closed classes only, then this function calls @code{qnom} or @code{qncmmva} respectively, and prints a warning message. @strong{INPUTS} @table @code @item @var{lambda}(c) @itemx @var{N}(c) For each customer chain @math{c}: @itemize @item if @math{c} is a closed chain, then @code{@var{N}(c)>0} is the number of class @math{c} requests and @code{@var{lambda}(c)} must be zero; @item If @math{c} is an open chain, @code{@var{lambda}(c)>0} is the arrival rate of class @math{c} requests and @code{@var{N}(c)} must be zero; @end itemize @noindent In other words, for each class @math{c} the following must hold: @example (@var{lambda}(c)>0 && @var{N}(c)==0) || (@var{lambda}(c)==0 && @var{N}(c)>0) @end example @item @var{S}(c,k) mean class @math{c} service time at center @math{k}, @code{@var{S}(c,k) @geq{} 0}. For FCFS nodes, service times must be class-independent. @item @var{V}(c,k) average number of visits of class @math{c} customers to center @math{k} (@code{@var{V}(c,k) @geq{} 0}). @item @var{m}(k) number of servers at center @math{k}. Only single-server (@code{@var{m}(k)==1}) or IS (Infinite Server) nodes (@code{@var{m}(k)<1}) are supported. If omitted, each center is assumed to be of type @math{M/M/1}-FCFS. Queueing discipline for single-server nodes can be FCFS, PS or LCFS-PR. @end table @strong{OUTPUTS} @table @code @item @var{U}(c,k) class @math{c} utilization at center @math{k}. @item @var{R}(c,k) class @math{c} response time at center @math{k}. @item @var{Q}(c,k) average number of class @math{c} requests at center @math{k}. @item @var{X}(c,k) class @math{c} throughput at center @math{k}. @end table @strong{REFERENCES} @itemize @item Edward D. Lazowska, John Zahorjan, G. Scott Graham, and Kenneth C. Sevcik, @cite{Quantitative System Performance: Computer System Analysis Using Queueing Network Models}, Prentice Hall, 1984. @url{http://www.cs.washington.edu/homes/lazowska/qsp/}. In particular, see section 7.4.3 ("Mixed Model Solution Techniques"). Note that in this function we compute the mean response time @math{R} instead of the mean residence time as in the reference. @item Herb Schwetman, @cite{Implementing the Mean Value Algorithm for the Solution of Queueing Network Models}, Technical Report @uref{http://docs.lib.purdue.edu/cstech/286/, CSD-TR-355}, Department of Computer Sciences, Purdue University, revised Feb 15, 1982. @end itemize @seealso{qncmmva, qncm} @end deftypefn @c @c @c @node Generic Algorithms @section Generic Algorithms The @code{queueing} package provides a high-level function @command{qnsolve} for analyzing QN models. @command{qnsolve} takes as input a high-level description of the queueing model, and delegates the actual solution of the model to one of the lower-level function. @command{qnsolve} supports single or multiclass models, but at the moment only product-form networks can be analyzed. For non product-form networks @xref{Non Product-Form QNs}. @command{qnsolve} accepts two input parameters. The first one is the list of nodes, encoded as an Octave @emph{cell array}. The second parameter is the vector of visit ratios @var{V}, which can be either a vector (for single-class models) or a two-dimensional matrix (for multiple-class models). Individual nodes in the network are structures build using the @command{qnmknode} function. @anchor{doc-qnmknode} @deftypefn {Function File} {@var{Q} =} qnmknode (@var{"m/m/m-fcfs"}, @var{S}) @deftypefnx {Function File} {@var{Q} =} qnmknode (@var{"m/m/m-fcfs"}, @var{S}, @var{m}) @deftypefnx {Function File} {@var{Q} =} qnmknode (@var{"m/m/1-lcfs-pr"}, @var{S}) @deftypefnx {Function File} {@var{Q} =} qnmknode (@var{"-/g/1-ps"}, @var{S}) @deftypefnx {Function File} {@var{Q} =} qnmknode (@var{"-/g/1-ps"}, @var{S}, @var{s2}) @deftypefnx {Function File} {@var{Q} =} qnmknode (@var{"-/g/inf"}, @var{S}) @deftypefnx {Function File} {@var{Q} =} qnmknode (@var{"-/g/inf"}, @var{S}, @var{s2}) Creates a node; this function can be used together with @code{qnsolve}. It is possible to create either single-class nodes (where there is only one customer class), or multiple-class nodes (where the service time is given per-class). Furthermore, it is possible to specify load-dependent service times. String literals are case-insensitive, so for example @var{"-/g/inf"}, @var{"-/G/inf"} and @var{"-/g/INF"} are all equivalent. @strong{INPUTS} @table @code @item @var{S} Mean service time. @itemize @item If @math{S} is a scalar, it is assumed to be a load-independent, class-independent service time. @item If @math{S} is a column vector, then @code{@var{S}(c)} is assumed to the the load-independent service time for class @math{c} customers. @item If @math{S} is a row vector, then @code{@var{S}(n)} is assumed to be the class-independent service time at the node, when there are @math{n} requests. @item Finally, if @var{S} is a two-dimensional matrix, then @code{@var{S}(c,n)} is assumed to be the class @math{c} service time when there are @math{n} requests at the node. @end itemize @item @var{m} Number of identical servers at the node. Default is @code{@var{m}=1}. @item @var{s2} Squared coefficient of variation for the service time. Default is 1.0. @end table The returned struct @var{Q} should be considered opaque to the client. @c The returned struct @var{Q} has the following fields: @c @table @var @c @item Q.node @c (String) type of the node; valid values are @code{"m/m/m-fcfs"}, @c @code{"-/g/1-lcfs-pr"}, @code{"-/g/1-ps"} (Processor-Sharing) @c and @code{"-/g/inf"} (Infinite Server, or delay center). @c @item Q.S @c Average service time. If @code{@var{Q}.S} is a vector, then @c @code{@var{Q}.S(i)} is the average service time at that node @c if there are @math{i} requests. @c @item Q.m @c Number of identical servers at a @code{"m/m/m-fcfs"}. Default is 1. @c @item Q.c @c Number of customer classes. Default is 1. @c @end table @seealso{qnsolve} @end deftypefn After the network has been defined, it is possible to solve it using @command{qnsolve}. @anchor{doc-qnsolve} @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qnsolve (@var{"closed"}, @var{N}, @var{QQ}, @var{V}) @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qnsolve (@var{"closed"}, @var{N}, @var{QQ}, @var{V}, @var{Z}) @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qnsolve (@var{"open"}, @var{lambda}, @var{QQ}, @var{V}) @deftypefnx {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qnsolve (@var{"mixed"}, @var{lambda}, @var{N}, @var{QQ}, @var{V}) High-level function for analyzing QN models. @itemize @item For @strong{closed} networks, the following server types are supported: @math{M/M/m}--FCFS, @math{-/G/\infty}, @math{-/G/1}--LCFS-PR, @math{-/G/1}--PS and load-dependent variants. @item For @strong{open} networks, the following server types are supported: @math{M/M/m}--FCFS, @math{-/G/\infty} and @math{-/G/1}--PS. General load-dependent nodes are @emph{not} supported. Multiclass open networks do not support multiple server @math{M/M/m} nodes, but only single server @math{M/M/1}--FCFS. @item For @strong{mixed} networks, the following server types are supported: @math{M/M/1}--FCFS, @math{-/G/\infty} and @math{-/G/1}--PS. General load-dependent nodes are @emph{not} supported. @end itemize @strong{INPUTS} @table @code @item @var{N} @itemx @var{N}(c) Number of requests in the system for closed networks. For single-class networks, @var{N} must be a scalar. For multiclass networks, @code{@var{N}(c)} is the population size of closed class @math{c}. @item @var{lambda} @itemx @var{lambda}(c) External arrival rate (scalar) for open networks. For single-class networks, @var{lambda} must be a scalar. For multiclass networks, @code{@var{lambda}(c)} is the class @math{c} overall arrival rate. @item @var{QQ}@{i@} List of queues in the network. This must be a cell array with @math{N} elements, such that @code{@var{QQ}@{i@}} is a struct produced by the @code{qnmknode} function. @item @var{Z} External delay ("think time") for closed networks. Default 0. @end table @strong{OUTPUTS} @table @code @item @var{U}(k) If @math{k} is a FCFS node, then @code{@var{U}(k)} is the utilization of service center @math{k}. If @math{k} is an IS node, then @code{@var{U}(k)} is the @emph{traffic intensity} defined as @code{@var{X}(k)*@var{S}(k)}. @item @var{R}(k) average response time of service center @math{k}. @item @var{Q}(k) average number of customers in service center @math{k}. @item @var{X}(k) throughput of service center @math{k}. @end table Note that for multiclass networks, the computed results are per-class utilization, response time, number of customers and throughput: @code{@var{U}(c,k)}, @code{@var{R}(c,k)}, @code{@var{Q}(c,k)}, @code{@var{X}(c,k)}. String literals are case-insensitive, so @var{"closed"}, @var{"Closed"} and @var{"CLoSEd"} are all equivalent. @end deftypefn @noindent @strong{EXAMPLE} Let us consider a closed, multiclass network with @math{C=2} classes and @math{K=3} service center. Let the population be @math{M=(2, 1)} (class 1 has 2 requests, and class 2 has 1 request). The nodes are as follows: @itemize @item Node 1 is a @math{M/M/1}--FCFS node, with load-dependent service times. Service times are class-independent, and are defined by the matrix @code{[0.2 0.1 0.1; 0.2 0.1 0.1]}. Thus, @code{@var{S}(1,2) = 0.2} means that service time for class 1 customers where there are 2 requests in 0.2. Note that service times are class-independent; @item Node 2 is a @math{-/G/1}--PS node, with service times @math{S_{1, 2} = 0.4} for class 1, and @math{S_{2, 2} = 0.6} for class 2 requests; @item Node 3 is a @math{-/G/\infty} node (delay center), with service times @math{S_{1, 3}=1} and @math{S_{2, 3}=2} for class 1 and 2 respectively. @end itemize After defining the per-class visit count @var{V} such that @code{@var{V}(c,k)} is the visit count of class @math{c} requests to service center @math{k}. We can define and solve the model as follows: @example @verbatim QQ = { qnmknode( "m/m/m-fcfs", [0.2 0.1 0.1; 0.2 0.1 0.1] ), ... qnmknode( "-/g/1-ps", [0.4; 0.6] ), ... qnmknode( "-/g/inf", [1; 2] ) }; V = [ 1 0.6 0.4; ... 1 0.3 0.7 ]; N = [ 2 1 ]; [U R Q X] = qnsolve( "closed", N, QQ, V ); @end verbatim @end example @anchor{doc-qnclosed} @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qnclosed (@var{N}, @var{S}, @var{V}, @dots{}) @cindex closed network, single class @cindex closed network, multiple classes This function computes steady-state performance measures of closed queueing networks using the Mean Value Analysis (MVA) algorithm. The qneneing network is allowed to contain fixed-capacity centers, delay centers or general load-dependent centers. Multiple request classes are supported. This function dispatches the computation to one of @code{qncsemva}, @code{qncsmvald} or @code{qncmmva}. @itemize @item If @var{N} is a scalar, the network is assumed to have a single class of requests; in this case, the exact MVA algorithm is used to analyze the network. If @var{S} is a vector, then @code{@var{S}(k)} is the average service time of center @math{k}, and this function calls @code{qncsmva} which supports load-independent service centers. If @var{S} is a matrix, @code{@var{S}(k,i)} is the average service time at center @math{k} when @math{i=1, @dots{}, N} jobs are present; in this case, the network is analyzed with the @code{qncmmvald} function. @item If @var{N} is a vector, the network is assumed to have multiple classes of requests, and is analyzed using the exact multiclass MVA algorithm as implemented in the @code{qncmmva} function. @end itemize @seealso{qncsmva, qncsmvald, qncmmva} @end deftypefn @noindent @strong{EXAMPLE} @example @verbatim P = [0 0.3 0.7; 1 0 0; 1 0 0]; # Transition probability matrix S = [1 0.6 0.2]; # Average service times m = ones(size(S)); # All centers are single-server Z = 2; # External delay N = 15; # Maximum population to consider V = qncsvisits(P); # Compute number of visits X_bsb_lower = X_bsb_upper = X_ab_lower = X_ab_upper = X_mva = zeros(1,N); for n=1:N [X_bsb_lower(n) X_bsb_upper(n)] = qncsbsb(n, S, V, m, Z); [X_ab_lower(n) X_ab_upper(n)] = qncsaba(n, S, V, m, Z); [U R Q X] = qnclosed( n, S, V, m, Z ); X_mva(n) = X(1)/V(1); endfor close all; plot(1:N, X_ab_lower,"g;Asymptotic Bounds;", ... 1:N, X_bsb_lower,"k;Balanced System Bounds;", ... 1:N, X_mva,"b;MVA;", "linewidth", 2, ... 1:N, X_bsb_upper,"k", 1:N, X_ab_upper,"g" ); axis([1,N,0,1]); legend("location","southeast"); legend("boxoff"); xlabel("Number of Requests n"); ylabel("System Throughput X(n)"); @end verbatim @end example @anchor{doc-qnopen} @deftypefn {Function File} {[@var{U}, @var{R}, @var{Q}, @var{X}] =} qnopen (@var{lambda}, @var{S}, @var{V}, @dots{}) @cindex open network Compute utilization, response time, average number of requests in the system, and throughput for open queueing networks. If @var{lambda} is a scalar, the network is considered a single-class QN and is solved using @code{qnopensingle}. If @var{lambda} is a vector, the network is considered as a multiclass QN and solved using @code{qnopenmulti}. @seealso{qnos, qnom} @end deftypefn @c @c @c @node Bounds Analysis @section Bounds Analysis @c @anchor{doc-qnosaba} @deftypefn {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qnosaba (@var{lambda}, @var{D}) @deftypefnx {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qnosaba (@var{lambda}, @var{S}, @var{V}) @deftypefnx {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qnosaba (@var{lambda}, @var{S}, @var{V}, @var{m}) @cindex bounds, asymptotic @cindex open network Compute Asymptotic Bounds for open, single-class networks with @math{K} service centers. @strong{INPUTS} @table @code @item @var{lambda} Arrival rate of requests (scalar, @code{@var{lambda} @geq{} 0}). @item @var{D}(k) service demand at center @math{k}. (vector of length @math{K}, @code{@var{D}(k) @geq{} 0}). @item @var{S}(k) mean service time at center @math{k}. (vector of length @math{K}, @code{@var{S}(k) @geq{} 0}). @item @var{V}(k) mean number of visits to center @math{k}. (vector of length @math{K}, @code{@var{V}(k) @geq{} 0}). @item @var{m}(k) number of servers at center @math{k}. This function only supports @math{M/M/1} queues, therefore @var{m} must be @code{ones(size(S))}. @end table @strong{OUTPUTS} @table @code @item @var{Xl} @item @var{Xu} Lower and upper bounds on the system throughput. @var{Xl} is always set to @math{0} since there can be no lower bound on the throughput of open networks (scalar). @item @var{Rl} @item @var{Ru} Lower and upper bounds on the system response time. @var{Ru} is always set to @code{+inf} since there can be no upper bound on the throughput of open networks (scalar). @end table @seealso{qnomaba} @end deftypefn @c @anchor{doc-qnomaba} @deftypefn {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qnomaba (@var{lambda}, @var{D}) @deftypefnx {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Rl}] =} qnomaba (@var{lambda}, @var{S}, @var{V}) @cindex bounds, asymptotic @cindex open network @cindex multiclass network, open Compute Asymptotic Bounds for open, multiclass networks with @math{K} service centers and @math{C} customer classes. @strong{INPUTS} @table @code @item @var{lambda}(c) class @math{c} arrival rate to the system (vector of length @math{C}, @code{@var{lambda}(c) > 0}). @item @var{D}(c, k) class @math{c} service demand at center @math{k} (@math{C \times K} matrix, @code{@var{D}(c, k) @geq{} 0}). @item @var{S}(c, k) mean service time of class @math{c} requests at center @math{k} (@math{C \times K} matrix, @code{@var{S}(c, k) @geq{} 0}). @item @var{V}(c, k) mean number of visits of class @math{c} requests at center @math{k} (@math{C \times K} matrix, @code{@var{V}(c, k) @geq{} 0}). @end table @strong{OUTPUTS} @table @code @item @var{Xl}(c) @item @var{Xu}(c) lower and upper bounds of class @math{c} throughput. @code{@var{Xl}(c)} is always @math{0} since there can be no lower bound on the throughput of open networks (vector of length @math{C}). @item @var{Rl}(c) @item @var{Ru}(c) lower and upper bounds of class @math{c} response time. @code{@var{Ru}(c)} is always @code{+inf} since there can be no upper bound on the response time of open networks (vector of length @math{C}). @end table @end deftypefn @c @anchor{doc-qncsaba} @deftypefn {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qncsaba (@var{N}, @var{D}) @deftypefnx {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qncsaba (@var{N}, @var{S}, @var{V}) @deftypefnx {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qncsaba (@var{N}, @var{S}, @var{V}, @var{m}) @deftypefnx {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qncsaba (@var{N}, @var{S}, @var{V}, @var{m}, @var{Z}) @cindex bounds, asymptotic @cindex asymptotic bounds @cindex closed network, single class Compute Asymptotic Bounds for the system throughput and response time of closed, single-class networks with @math{K} service centers. Single-server and infinite-server nodes are supported. Multiple-server nodes and general load-dependent servers are not supported. @strong{INPUTS} @table @code @item @var{N} number of requests in the system (scalar, @code{@var{N}>0}). @item @var{D}(k) service demand at center @math{k} (@code{@var{D}(k) @geq{} 0}). @item @var{S}(k) mean service time at center @math{k} (@code{@var{S}(k) @geq{} 0}). @item @var{V}(k) average number of visits to center @math{k} (@code{@var{V}(k) @geq{} 0}). @item @var{m}(k) number of servers at center @math{k} (if @var{m} is a scalar, all centers have that number of servers). If @code{@var{m}(k) < 1}, center @math{k} is a delay center (IS); if @code{@var{m}(k) = 1}, center @math{k} is a M/M/1-FCFS server. This function does not support multiple-server nodes. Default is 1. @item @var{Z} External delay (scalar, @code{@var{Z} @geq{} 0}). Default is 0. @end table @strong{OUTPUTS} @table @code @item @var{Xl} @itemx @var{Xu} Lower and upper bounds on the system throughput. @item @var{Rl} @itemx @var{Ru} Lower and upper bounds on the system response time. @end table @seealso{qncmaba} @end deftypefn @c @anchor{doc-qncmaba} @deftypefn {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qncmaba (@var{N}, @var{D}) @deftypefnx {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qncmaba (@var{N}, @var{S}, @var{V}) @deftypefnx {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qncmaba (@var{N}, @var{S}, @var{V}, @var{m}) @deftypefnx {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qncmaba (@var{N}, @var{S}, @var{V}, @var{m}, @var{Z}) @cindex bounds, asymptotic @cindex asymptotic bounds @cindex closed network @cindex multiclass network, closed @cindex closed multiclass network Compute Asymptotic Bounds for closed, multiclass networks with @math{K} service centers and @math{C} customer classes. Single-server and infinite-server nodes are supported. Multiple-server nodes and general load-dependent servers are not supported. @strong{INPUTS} @table @code @item @var{N}(c) number of class @math{c} requests in the system (vector of length @math{C}, @code{@var{N}(c) @geq{} 0}). @item @var{D}(c, k) class @math{c} service demand at center @math{k} (@math{C \times K} matrix, @code{@var{D}(c,k) @geq{} 0}). @item @var{S}(c, k) mean service time of class @math{c} requests at center @math{k} (@math{C \times K} matrix, @code{@var{S}(c,k) @geq{} 0}). @item @var{V}(c,k) average number of visits of class @math{c} requests to center @math{k} (@math{C \times K} matrix, @code{@var{V}(c,k) @geq{} 0}). @item @var{m}(k) number of servers at center @math{k} (if @var{m} is a scalar, all centers have that number of servers). If @code{@var{m}(k) < 1}, center @math{k} is a delay center (IS); if @code{@var{m}(k) = 1}, center @math{k} is a M/M/1-FCFS server. This function does not support multiple-server nodes. Default is 1. @item @var{Z}(c) class @math{c} external delay (vector of length @math{C}, @code{@var{Z}(c) @geq{} 0}). Default is 0. @end table @strong{OUTPUTS} @table @code @item @var{Xl}(c) @itemx @var{Xu}(c) Lower and upper bounds for class @math{c} throughput. @item @var{Rl}(c) @itemx @var{Ru}(c) Lower and upper bounds for class @math{c} response time. @end table @strong{REFERENCES} @itemize @item Edward D. Lazowska, John Zahorjan, G. Scott Graham, and Kenneth C. Sevcik, @cite{Quantitative System Performance: Computer System Analysis Using Queueing Network Models}, Prentice Hall, 1984. @url{http://www.cs.washington.edu/homes/lazowska/qsp/}. In particular, see section 5.2 ("Asymptotic Bounds"). @end itemize @seealso{qncsaba} @end deftypefn @c @anchor{doc-qnosbsb} @deftypefn {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qnosbsb (@var{lambda}, @var{D}) @deftypefnx {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qnosbsb (@var{lambda}, @var{S}, @var{V}) @cindex bounds, balanced system @cindex open network Compute Balanced System Bounds for single-class, open networks with @math{K} service centers. @strong{INPUTS} @table @code @item @var{lambda} overall arrival rate to the system (scalar, @code{@var{lambda} @geq{} 0}). @item @var{D}(k) service demand at center @math{k} (@code{@var{D}(k) @geq{} 0}). @item @var{S}(k) service time at center @math{k} (@code{@var{S}(k) @geq{} 0}). @item @var{V}(k) mean number of visits at center @math{k} (@code{@var{V}(k) @geq{} 0}). @item @var{m}(k) number of servers at center @math{k}. This function only supports @math{M/M/1} queues, therefore @var{m} must be @code{ones(size(S))}. @end table @strong{OUTPUTS} @table @code @item @var{Xl} @item @var{Xu} Lower and upper bounds on the system throughput. @var{Xl} is always set to @math{0}, since there can be no lower bound on open networks throughput. @item @var{Rl} @itemx @var{Ru} Lower and upper bounds on the system response time. @end table @seealso{qnosaba} @end deftypefn @c @anchor{doc-qncsbsb} @deftypefn {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qncsbsb (@var{N}, @var{D}) @deftypefnx {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qncsbsb (@var{N}, @var{S}, @var{V}) @deftypefnx {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qncsbsb (@var{N}, @var{S}, @var{V}, @var{m}) @deftypefnx {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qncsbsb (@var{N}, @var{S}, @var{V}, @var{m}, @var{Z}) @cindex bounds, balanced system @cindex closed network, single class @cindex balanced system bounds Compute Balanced System Bounds on system throughput and response time for closed, single-class networks with @math{K} service centers. @strong{INPUTS} @table @code @item @var{N} number of requests in the system (scalar, @code{@var{N} @geq{} 0}). @item @var{D}(k) service demand at center @math{k} (@code{@var{D}(k) @geq{} 0}). @item @var{S}(k) mean service time at center @math{k} (@code{@var{S}(k) @geq{} 0}). @item @var{V}(k) average number of visits to center @math{k} (@code{@var{V}(k) @geq{} 0}). Default is 1. @item @var{m}(k) number of servers at center @math{k}. This function supports @code{@var{m}(k) = 1} only (single-eserver FCFS nodes); this parameter is only for compatibility with @code{qncsaba}. Default is 1. @item @var{Z} External delay (@code{@var{Z} @geq{} 0}). Default is 0. @end table @strong{OUTPUTS} @table @code @item @var{Xl} @itemx @var{Xu} Lower and upper bound on the system throughput. @item @var{Rl} @itemx @var{Ru} Lower and upper bound on the system response time. @end table @strong{REFERENCES} @itemize @item Edward D. Lazowska, John Zahorjan, G. Scott Graham, and Kenneth C. Sevcik, @cite{Quantitative System Performance: Computer System Analysis Using Queueing Network Models}, Prentice Hall, 1984. @url{http://www.cs.washington.edu/homes/lazowska/qsp/}. In particular, see section 5.4 ("Balanced Systems Bounds"). @end itemize @seealso{qncmbsb} @end deftypefn @c @anchor{doc-qncmbsb} @deftypefn {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qncmbsb (@var{N}, @var{D}) @deftypefnx {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qncmbsb (@var{N}, @var{S}, @var{V}) @cindex bounds, balanced system @cindex balanced system bounds @cindex multiclass network, closed @cindex closed multiclass network Compute Balanced System Bounds for closed, multiclass networks with @math{K} service centers and @math{C} customer classes. Only single-server nodes are supported. @strong{INPUTS} @table @code @item @var{N}(c) number of class @math{c} requests in the system (vector of length @math{C}). @item @var{D}(c, k) class @math{c} service demand at center @math{k} (@math{C \times K} matrix, @code{@var{D}(c,k) @geq{} 0}). @item @var{S}(c, k) mean service time of class @math{c} requests at center @math{k} (@math{C \times K} matrix, @code{@var{S}(c,k) @geq{} 0}). @item @var{V}(c,k) average number of visits of class @math{c} requests to center @math{k} (@math{C \times K} matrix, @code{@var{V}(c,k) @geq{} 0}). @end table @strong{OUTPUTS} @table @code @item @var{Xl}(c) @itemx @var{Xu}(c) Lower and upper class @math{c} throughput bounds (vector of length @math{C}). @item @var{Rl}(c) @itemx @var{Ru}(c) Lower and upper class @math{c} response time bounds (vector of length @math{C}). @end table @seealso{qncsbsb} @end deftypefn @c @anchor{doc-qncmcb} @deftypefn {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qncmcb (@var{N}, @var{D}) @deftypefnx {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qncmcb (@var{N}, @var{S}, @var{V}) @cindex multiclass network, closed @cindex closed multiclass network @cindex bounds, composite @cindex composite bounds Compute Composite Bounds (CB) on system throughput and response time for closed multiclass networks. @strong{INPUTS} @table @code @item @var{N}(c) number of class @math{c} requests in the system. @item @var{D}(c, k) class @math{c} service demand at center @math{k} (@code{@var{S}(c,k) @geq{} 0}). @item @var{S}(c, k) mean service time of class @math{c} requests at center @math{k} (@code{@var{S}(c,k) @geq{} 0}). @item @var{V}(c,k) average number of visits of class @math{c} requests to center @math{k} (@code{@var{V}(c,k) @geq{} 0}). @end table @strong{OUTPUTS} @table @code @item @var{Xl}(c) @itemx @var{Xu}(c) Lower and upper bounds on class @math{c} throughput. @item @var{Rl}(c) @itemx @var{Ru}(c) Lower and upper bounds on class @math{c} response time. @end table @strong{REFERENCES} @itemize @item Teemu Kerola, @cite{The Composite Bound Method (CBM) for Computing Throughput Bounds in Multiple Class Environments}, Performance Evaluation Vol. 6, Issue 1, March 1986, DOI @uref{http://dx.doi.org/10.1016/0166-5316(86)90002-7, 10.1016/0166-5316(86)90002-7}. Also available as @uref{http://docs.lib.purdue.edu/cstech/395/, Technical Report CSD-TR-475}, Department of Computer Sciences, Purdue University, mar 13, 1984 (Revised Aug 27, 1984). @end itemize @end deftypefn @c @anchor{doc-qncspb} @deftypefn {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qncspb (@var{N}, @var{D} ) @deftypefnx {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qncspb (@var{N}, @var{S}, @var{V} ) @deftypefnx {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qncspb (@var{N}, @var{S}, @var{V}, @var{m} ) @deftypefnx {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}] =} qncspb (@var{N}, @var{S}, @var{V}, @var{m}, @var{Z} ) @cindex bounds, PB @cindex PB bounds @cindex closed network, single class Compute PB Bounds (C. H. Hsieh and S. Lam, 1987) for single-class, closed networks with @math{K} service centers. @strong{INPUTS} @table @code @item @var{} number of requests in the system (scalar, @code{@var{N} > 0}). @item @var{D}(k) service demand of service center @math{k} (@code{@var{D}(k) @geq{} 0}). @item @var{S}(k) mean service time at center @math{k} (@code{@var{S}(k) @geq{} 0}). @item @var{V}(k) visit ratio to center @math{k} (@code{@var{V}(k) @geq{} 0}). @item @var{m}(k) number of servers at center @math{k}. This function only supports @math{M/M/1} queues, therefore @var{m} must be @code{ones(size(S))}. @item @var{Z} external delay (think time, @code{@var{Z} @geq{} 0}). Default 0. @end table @strong{OUTPUTS} @table @code @item @var{Xl} @itemx @var{Xu} Lower and upper bounds on the system throughput. @item @var{Rl} @itemx @var{Ru} Lower and upper bounds on the system response time. @end table @strong{REFERENCES} @itemize @item C. H. Hsieh and S. Lam, @cite{Two classes of performance bounds for closed queueing networks}, Performance Evaluation, Vol. 7 Issue 1, pp. 3--30, February 1987, DOI @uref{http://dx.doi.org/10.1016/0166-5316(87)90054-X, 10.1016/0166-5316(87)90054-X}. Also available as @uref{ftp://ftp.cs.utexas.edu/pub/techreports/tr85-09.pdf, Technical Report TR-85-09}, Department of Computer Science, University of Texas at Austin, June 1985 @end itemize This function implements the non-iterative variant described in G. Casale, R. R. Muntz, G. Serazzi, @cite{Geometric Bounds: a Non-Iterative Analysis Technique for Closed Queueing Networks}, IEEE Transactions on Computers, 57(6):780-794, June 2008. @seealso{qncsaba, qbcsbsb, qncsgb} @end deftypefn @c @anchor{doc-qncsgb} @deftypefn {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}, @var{Ql}, @var{Qu}] =} qncsgb (@var{N}, @var{D}) @deftypefnx {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}, @var{Ql}, @var{Qu}] =} qncsgb (@var{N}, @var{S}, @var{V}) @deftypefnx {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}, @var{Ql}, @var{Qu}] =} qncsgb (@var{N}, @var{S}, @var{V}, @var{m}) @deftypefnx {Function File} {[@var{Xl}, @var{Xu}, @var{Rl}, @var{Ru}, @var{Ql}, @var{Qu}] =} qncsgb (@var{N}, @var{S}, @var{V}, @var{m}, @var{Z}) @cindex bounds, geometric @cindex geometric bounds @cindex closed network Compute Geometric Bounds (GB) on system throughput, system response time and server queue lenghts for closed, single-class networks with @math{K} service centers and @math{N} requests. @strong{INPUTS} @table @code @item @var{N} number of requests in the system (scalar, @code{@var{N} > 0}). @item @var{D}(k) service demand of service center @math{k} (vector of length @math{K}, @code{@var{D}(k) @geq{} 0}). @item @var{S}(k) mean service time at center @math{k} (vector of length @math{K}, @code{@var{S}(k) @geq{} 0}). @item @var{V}(k) visit ratio to center @math{k} (vector of length @math{K}, @code{@var{V}(k) @geq{} 0}). @item @var{m}(k) number of servers at center @math{k}. This function only supports @math{M/M/1} queues, therefore @var{m} must be @code{ones(size(S))}. @item @var{Z} external delay (think time, @code{@var{Z} @geq{} 0}, scalar). Default is 0. @end table @strong{OUTPUTS} @table @code @item @var{Xl} @itemx @var{Xu} Lower and upper bound on the system throughput. If @code{@var{Z}>0}, these bounds are computed using @emph{Geometric Square-root Bounds} (GSB). If @code{@var{Z}==0}, these bounds are computed using @emph{Geometric Bounds} (GB) @item @var{Rl} @itemx @var{Ru} Lower and upper bound on the system response time. These bounds are derived from @var{Xl} and @var{Xu} using Little's Law: @code{@var{Rl} = @var{N} / @var{Xu} - @var{Z}}, @code{@var{Ru} = @var{N} / @var{Xl} - @var{Z}} @item @var{Ql}(k) @itemx @var{Qu}(k) lower and upper bounds of center @math{K} queue length. @end table @strong{REFERENCES} @itemize @item G. Casale, R. R. Muntz, G. Serazzi, @cite{Geometric Bounds: a Non-Iterative Analysis Technique for Closed Queueing Networks}, IEEE Transactions on Computers, 57(6):780-794, June 2008. @uref{http://doi.ieeecomputersociety.org/10.1109/TC.2008.37, 10.1109/TC.2008.37} @end itemize In this implementation we set @math{X^+} and @math{X^-} as the upper and lower Asymptotic Bounds as computed by the @command{qncsab} function, respectively. @end deftypefn @c @c Examples @c @node QN Analysis Examples @section QN Analysis Examples In this section we illustrate with a few examples how the @code{queueing} package can be used to analyze queueing network models. Further examples can be found in the functions demo blocks, and can be inspected with the @code{demo @emph{function}} Octave command. @subsection Closed, Single Class Network Let us consider again the network shown in @ref{fig:qn_closed_single}. We denote with @math{S_k} the average service time at center @math{k}, @math{k=1, 2, 3}. Let the service times be @math{S_1 = 1.0}, @math{S_2 = 2.0} and @math{S_3 = 0.8}. The routing of jobs within the network is described with a @emph{routing probability matrix} @math{\bf P}: a request completing service at center @math{i} is enqueued at center @math{j} with probability @math{P_{i, j}}. We use the following routing matrix: @iftex @tex $$ {\bf P} = \pmatrix{ 0 & 0.3 & 0.7 \cr 1 & 0 & 0 \cr 1 & 0 & 0 } $$ @end tex @end iftex @ifnottex @example / 0 0.3 0.7 \ P = | 1 0 0 | \ 1 0 0 / @end example @end ifnottex The network above can be analyzed with the @command{qnclosed} function @pxref{doc-qnclosed}. @command{qnclosed} requires the following parameters: @table @var @item N Number of requests in the network (since we are considering a closed network, the number of requests is fixed) @item S Array of average service times at the centers: @code{@var{S}(k)} is the average service time at center @math{k}. @item V Array of visit ratios: @code{@var{V}(k)} is the average number of visits to center @math{k}. @end table We can compute @math{V_k} from the routing probability matrix @math{P_{i, j}} using the @command{qncsvisits} function @pxref{doc-qncsvisits}. Therefore, we can analyze the network for a given population size @math{N} (e.g., @math{N=10}) as follows: @example @group @kbd{N = 10;} @kbd{S = [1 2 0.8];} @kbd{P = [0 0.3 0.7; 1 0 0; 1 0 0];} @kbd{V = qncsvisits(P);} @kbd{[U R Q X] = qnclosed( N, S, V )} @result{} U = 0.99139 0.59483 0.55518 @result{} R = 7.4360 4.7531 1.7500 @result{} Q = 7.3719 1.4136 1.2144 @result{} X = 0.99139 0.29742 0.69397 @end group @end example The output of @command{qnclosed} includes the vectors of utilizations @math{U_k} at center @math{k}, response time @math{R_k}, average number of customers @math{Q_k} and throughput @math{X_k}. In our example, the throughput of center 1 is @math{X_1 = 0.99139}, and the average number of requests in center 3 is @math{Q_3 = 1.2144}. The utilization of center 1 is @math{U_1 = 0.99139}, which is the highest among the service centers. Thus, center 1 is the @emph{bottleneck device}. This network can also be analyzed with the @command{qnsolve} function @pxref{doc-qnsolve}. @command{qnsolve} can handle open, closed or mixed networks, and allows the network to be described in a very flexible way. First, let @var{Q1}, @var{Q2} and @var{Q3} be the variables describing the service centers. Each variable is instantiated with the @command{qnmknode} function. @example @group @kbd{Q1 = qnmknode( "m/m/m-fcfs", 1 );} @kbd{Q2 = qnmknode( "m/m/m-fcfs", 2 );} @kbd{Q3 = qnmknode( "m/m/m-fcfs", 0.8 );} @end group @end example The first parameter of @command{qnmknode} is a string describing the type of the node; @code{"m/m/m-fcfs"} denotes a @math{M/M/m}--FCFS center (this parameter is case-insensitive). The second parameter gives the average service time. An optional third parameter can be used to specify the number @math{m} of service centers. If omitted, it is assumed @math{m=1} (single-server node). Now, the network can be analyzed as follows: @example @group @kbd{N = 10;} @kbd{V = [1 0.3 0.7];} @kbd{[U R Q X] = qnsolve( "closed", N, @{ Q1, Q2, Q3 @}, V )} @result{} U = 0.99139 0.59483 0.55518 @result{} R = 7.4360 4.7531 1.7500 @result{} Q = 7.3719 1.4136 1.2144 @result{} X = 0.99139 0.29742 0.69397 @end group @end example @subsection Open, Single Class Network Let us consider an open network with @math{K=3} service centers and the following routing probabilities: @iftex @tex $$ {\bf P} = \pmatrix{ 0 & 0.3 & 0.5 \cr 1 & 0 & 0 \cr 1 & 0 & 0 } $$ @end tex @end iftex @ifnottex @example / 0 0.3 0.5 \ P = ! 1 0 0 | \ 1 0 0 / @end example @end ifnottex In this network, requests can leave the system from center 1 with probability @math{1-(0.3+0.5) = 0.2}. We suppose that external jobs arrive at center 1 with rate @math{\lambda_1 = 0.15}; there are no arrivals at centers 2 and 3. Similarly to closed networks, we first compute the visit counts @math{V_k} to center @math{k}, @math{k = 1, 2, 3}. We use the @command{qnosvisits} function as follows: @example @group @kbd{P = [0 0.3 0.5; 1 0 0; 1 0 0];} @kbd{lambda = [0.15 0 0];} @kbd{V = qnosvisits(P, lambda)} @result{} V = 5.00000 1.50000 2.50000 @end group @end example @noindent where @code{@var{lambda}(k)} is the arrival rate at center @math{k}, and @math{\bf P} is the routing matrix. Assuming the same service times as in the previous example, the network can be analyzed with the @command{qnopen} function @pxref{doc-qnopen}, as follows: @example @group @kbd{S = [1 2 0.8];} @kbd{[U R Q X] = qnopen( sum(lambda), S, V )} @result{} U = 0.75000 0.45000 0.30000 @result{} R = 4.0000 3.6364 1.1429 @result{} Q = 3.00000 0.81818 0.42857 @result{} X = 0.75000 0.22500 0.37500 @end group @end example The first parameter of the @command{qnopen} function is the (scalar) aggregate arrival rate. Again, it is possible to use the @command{qnsolve} high-level function: @example @group @kbd{Q1 = qnmknode( "m/m/m-fcfs", 1 );} @kbd{Q2 = qnmknode( "m/m/m-fcfs", 2 );} @kbd{Q3 = qnmknode( "m/m/m-fcfs", 0.8 );} @kbd{lambda = [0.15 0 0];} @kbd{[U R Q X] = qnsolve( "open", sum(lambda), @{ Q1, Q2, Q3 @}, V )} @result{} U = 0.75000 0.45000 0.30000 @result{} R = 4.0000 3.6364 1.1429 @result{} Q = 3.00000 0.81818 0.42857 @result{} X = 0.75000 0.22500 0.37500 @end group @end example @subsection Closed Multiclass Network/1 The following example is taken from Herb Schwetman, @cite{Implementing the Mean Value Algorithm for the Solution of Queueing Network Models}, Technical Report CSD-TR-355, Department of Computer Sciences, Purdue University, Feb 15, 1982. Let us consider the following multiclass QN with three servers and two classes @float Figure,fig:apl @center @image{qn_closed_multi_apl} @end float Servers 1 and 2 (labeled @emph{APL} and @emph{IMS}, respectively) are infinite server nodes; server 3 (labeled @emph{SYS}) is Processor Sharing (PS). Mean service times are given in the following table: @multitable @columnfractions .15 .15 .15 .15 @headitem @tab APL @tab IMS @tab SYS @item Class 1 @tab 1 @tab - @tab 0.025 @item Class 2 @tab - @tab 15 @tab 0.500 @end multitable There is no class switching. If we assume a population of 15 requests for class 1, and 5 requests for class 2, then the model can be analyzed as follows: @example @verbatim S = [1 0 .025; 0 15 .5]; P = zeros(2,3,2,3); P(1,1,1,3) = P(1,3,1,1) = 1; P(2,2,2,3) = P(2,3,2,2) = 1; V = qncmvisits(P,[3 3]); # reference station is station 3 N = [15 5]; m = [-1 -1 1]; [U R Q X] = qncmmva(N,S,V,m) @end verbatim @result{} U = 14.32312 0.00000 0.35808 0.00000 4.70699 0.15690 R = 1.00000 0.00000 0.04726 0.00000 15.00000 0.93374 Q = 14.32312 0.00000 0.67688 0.00000 4.70699 0.29301 X = 14.32312 0.00000 14.32312 0.00000 0.31380 0.31380 @end example @subsection Closed Multiclass Network/2 The following example is from M. Marzolla, @cite{The qnetworks Toolbox: A Software Package for Queueing Networks Analysis}, Technical Report @uref{http://www.informatica.unibo.it/it/ricerca/technical-report/2010/UBLCS-2010-04, UBLCS-2010-04}, Department of Computer Science, University of Bologna, Italy, February 2010. @float Figure,fig:web_model @center @image{qn_web_model,3in} @caption{Three-tier enterprise system model} @end float The model shown in @ref{fig:web_model} shows a three-tier enterprise system with @math{K=6} service centers. The first tier contains the @emph{Web server} (node 1), which is responsible for generating Web pages and transmitting them to clients. The application logic is implemented by nodes 2 and 3, and the storage tier is made of nodes 4--6.The system is subject to two workload classes, both represented as closed populations of @math{N_1} and @math{N_2} requests, respectively. Let @math{D_{c, k}} denote the service demand of class @math{c} requests at center @math{k}. We use the parameter values: @multitable @columnfractions .2 .33 .1 .1 @headitem Serv. no. @tab Name @tab Class 1 @tab Class 2 @item 1 @tab Web Server @tab 12 @tab 2 @item 2 @tab App. Server 1 @tab 14 @tab 20 @item 3 @tab App. Server 2 @tab 23 @tab 14 @item 4 @tab DB Server 1 @tab 20 @tab 90 @item 5 @tab DB Server 2 @tab 80 @tab 30 @item 6 @tab DB Server 3 @tab 31 @tab 33 @end multitable We set the total number of requests to 100, that is @math{N_1 + N_2 = N = 100}, and we study how different population mixes @math{(N_1, N_2)} affect the system throughput and response time. Let @math{0 < \beta_1 < 1} denote the fraction of class 1 requests: @math{N_1 = \beta_1 N}, @math{N_2 = (1-\beta_1)N}. The following Octave code defines the model for @math{\beta_1 = 0.1}: @example @group N = 100; # total population size beta1 = 0.1; # fraction of class 1 reqs. S = [12 14 23 20 80 31; \ 2 20 14 90 30 33 ]; V = ones(size(S)); pop = [fix(beta1*N) N-fix(beta1*N)]; [U R Q X] = qncmmva(pop, S, V); @end group @end example The @command{qncmmva(pop, S, V)} function invocation uses the multiclass MVA algorithm to compute per-class utilizations @math{U_{c, k}}, response times @math{R_{c,k}}, mean queue lengths @math{Q_{c,k}} and throughputs @math{X_{c,k}} at each service center @math{k}, given a population vector @var{pop}, mean service times @var{S} and visit ratios @var{V}. Since we are given the service demands @math{D_{c, k} = S_{c, k} V_{c,k}}, but function @command{qncmmva} requires separate service times and visit ratios, we set the service times equal to the demands, and all visit ratios equal to one. Overall class and system throughputs and response times can also be computed: @example @group X1 = X(1,1) / V(1,1) # class 1 throughput @result{} X1 = 0.0044219 X2 = X(2,1) / V(2,1) # class 2 throughput @result{} X2 = 0.010128 XX = X1 + X2 # system throughput @result{} XX = 0.014550 R1 = dot(R(1,:), V(1,:)) # class 1 resp. time @result{} R1 = 2261.5 R2 = dot(R(2,:), V(2,:)) # class 2 resp. time @result{} R2 = 8885.9 RR = N / XX # system resp. time @result{} RR = 6872.7 @end group @end example @code{dot(X,Y)} computes the dot product of two vectors. @code{R(1,:)} is the first row of matrix @var{R} and @code{V(1,:)} is the first row of matrix @var{V}, so @code{dot(R(1,:), V(1,:))} computes @math{\sum_k R_{1,k} V_{1,k}}. @float Figure,fig:web @center @image{web,5in} @caption{Throughput and Response Times as a function of the population mix} @end float We can also compute the system power @math{\Phi = X / R}, which defines how efficiently resources are being used: high values of @math{\Phi} denote the desirable situation of high throughput and low response time. @ref{fig:power} shows @math{\Phi} as a function of @math{\beta_1}. We observe a ``plateau'' of the global system power, corresponding to values of @math{\beta_1} which approximately lie between @math{0.3} and @math{0.7}. The per-class power exhibits an interesting (although not completely surprising) pattern, where the class with higher population exhibits worst efficiency as it produces higher contention on the resources. @float Figure,fig:power @center @image{power,5in} @caption{System Power as a function of the population mix} @end float @subsection Closed Multiclass Network/3 We now consider an example of multiclass network with class switching. The example is taken from @ref{Sch82}, and is shown in Figure @ref{fig:class_switching}. @float Figure,fig:class_switching @center @image{qn_closed_multi_cs,3in} @caption{Multiclass Model with Class Switching} @end float The system consists of three devices and two job classes. The CPU node is a PS server, while the two nodes labeled I/O are FCFS. Class 1 mean service time at the CPU is @math{0.01}; class 2 mean service time at the CPU is @math{0.05}. The mean service time at node 2 is @math{0.1}, and is class-independent. Similarly, the mean service time at node 3 is @math{0.07}. Jobs in class 1 leave the CPU and join class 2 with probability @math{0.1}; jobs of class 2 leave the CPU and join class 1 with probability @math{0.2}. There are @math{N=3} jobs, which are initially allocated to class 1. However, note that since class switching is allowed, the total number of jobs in each class does not remain constant; however the total number of jobs does. @example @verbatim C = 2; K = 3; S = [.01 .07 .10; ... .05 .07 .10 ]; P = zeros(C,K,C,K); P(1,1,1,2) = .7; P(1,1,1,3) = .2; P(1,1,2,1) = .1; P(2,1,2,2) = .3; P(2,1,2,3) = .5; P(2,1,1,1) = .2; P(1,2,1,1) = P(2,2,2,1) = 1; P(1,3,1,1) = P(2,3,2,1) = 1; N = [3 0]; [U R Q X] = qncmmva(N, S, P) @end verbatim @result{} U = 0.12609 0.61784 0.25218 0.31522 0.13239 0.31522 R = 0.014653 0.133148 0.163256 0.073266 0.133148 0.163256 Q = 0.18476 1.17519 0.41170 0.46190 0.25183 0.51462 X = 12.6089 8.8262 2.5218 6.3044 1.8913 3.1522 @end example queueing/INDEX0000644000175000017500000000134513635374655013076 0ustar morenomorenoqueueing >> Queueing Networks and Markov chains Discrete-time Markov chains dtmcchkP dtmc dtmcbd dtmcexps dtmcisir dtmctaexps dtmcmtta dtmcfpt Continuous-time Markov chains ctmcchkQ ctmc ctmcbd ctmcexps ctmcisir ctmctaexps ctmcmtta ctmcfpt Single Station Queueing Systems qsmm1 qsmmm erlangb erlangc engset qsmminf qsmm1k qsmmmk qsammm qsmg1 qsmh1 Queueing Networks qnclosed qncmmvaap qncmmvabs qncmmva qncmnpop qncmpopmix qncmvisits qncscmva qncsconvld qncsconv qncsmvaap qncsmvablo qncsmvald qncsmva qncsvisits qnmarkov qnmix qnmknode qnom qnomvisits qnopen qnos qnosvisits qnsolve Bounds Analysis qnosaba qnomaba qncsaba qncmaba qnosbsb qncsbsb qncmbsb qncmcb qncspb qncsgb queueing/NEWS0000644000175000017500000001152413635375133012773 0ustar morenomorenoSummary of important user-visible changes for queueing-1.2.7 ------------------------------------------------------------------------------ ** queueing-1.2.7 contains new features ** Added computation of state occupancy probabilities to functions qsmm1(), qsmm1k(), qsmminf(), qsmmm(), qsmmmk() ** Function qncmmvaap() has been deprecated and renamed to qncmmvabs() ** The following deprecated functions have been removed: qnvisits(), qnopensingle(), qnopenmulti(), qnopenbsb(), qnopenab(), qnmvapop(), qnmvablo(), qnjackson(), qnconvolution(), qnconvolutionld(), qncmva(), qnclosedsinglemva(), qnclosedsinglemvald(), qnclosedpb(), qnclosedmultimva(), qnclosedab(), qnclosedbsb(), qnclosedgb(), qnclosedmultimvaapprox(), qnclosedsinglemvaapprox(), qnmg1(), qnmh1(), qnmm1(), qnmminf(), qnmmmk(), qnmmm(), qnmm1k(), qnammm(), ctmc_bd(), ctmc_exps(), ctmc_fpt(), ctmc_mtta(), ctmc_taexps(), dtmc_bd(), dtmc_exps(), dtmc_fpt(), dtmc_mtta(), dtmc_taexps(), population_mix(), dtmc_is_irreducible(), ctmc_check_Q(), dtmc_check_P() Summary of important user-visible changes for queueing-1.2.6 ------------------------------------------------------------------------------ ** queueing-1.2.6 contains new features ** New functions dtmcisir() and ctmcisir() ** General documentation cleanup Summary of important user-visible changes for queueing-1.2.5 ------------------------------------------------------------------------------ ** queueing-1.2.5 is a bug fix release ** Fix for bug in qncmmva ** General documentation cleanup Summary of important user-visible changes for queueing-1.2.4 ------------------------------------------------------------------------------ ** queueing-1.2.4 is a bug fix release ** Fixes for bugs #48958, #48959 and #48960 Summary of important user-visible changes for queueing-1.2.3 ------------------------------------------------------------------------------ ** queueing-1.2.3 contains new features ** Added new functions erlangb (Erlang-B formula), erlangc (Erlang-C formula) and engset Summary of important user-visible changes for queueing-1.2.2 ------------------------------------------------------------------------------ ** queueing-1.2.2 is a bug fix release ** Fixed bug in qncmmva: utilization for M/M/m centers was not correctly scaled to [0,1] when m>1 ** Added warning to qncsmva and qncmmva to detect and report numerical instability problems Summary of important user-visible changes for queueing-1.2.1 ------------------------------------------------------------------------------ ** queueing-1.2.1 contains new features ** Function qnvisits() has been deprecated, and is replaced by qncsvisits(), qnosvisits() (for single-class networks) and qncmvisits(), qnomvisits() (for multiple-class networks). The new functions allow the user to specify the reference station. Summary of important user-visible changes for queueing-1.2.0 ------------------------------------------------------------------------------ ** queueing-1.2.0 includes many bug fixes and new features ** The documentation has been restructured, hopefully improving readability and overall organization ** Added functions to compute various kinds of performance bounds on multiclass networks; balanced system, asymptotic and composite bounds are supported. ** Added function qnom for analyzing open, multiclass product-form networks. ** Adopted a new scheme for naming functions; old names are still available for compatibility with existing scripts, but will be removed in future releases. ** Fixed bugs in qncscmva, qncsconv, qncsconvld, qnopensingle, qnopenmulti and qncmmva Summary of important user-visible changes for queueing-1.1.1 ------------------------------------------------------------------------------ ** queueing-1.1.1 is a bug fix release ** Increased tolerance in tests for dtmc_fpt and dtmc_mtta to avoid spurious failures on some platforms ** Set "Autoload: no" in the DESCRIPTION file. This means that this package is no longer automatically loaded on Octave startup. To use the queueing package you need to issue the command "pkg load queueing" at the Octave prompt. Summary of important user-visible changes for queueing-1.1.0 ------------------------------------------------------------------------------ ** Function ctmc_exps() can now compute the expected sojourn time until absorption for absorbing CTMC ** Functions ctmc_exps() and ctmc_taexps() now accept a scalar as the second argument (time). ** Function ctmc_bd() now returns the infinitesimal generator matrix Q of the birth-death process with given rates, not the steady-state solution. ** The following new functions have been added: dtmc_bd(), dtmc_mtta(), ctmc_check_Q(), dtmc_exps(), dtmc_taexps() ** The following deprecated functions have been removed: ctmc_bd_solve(), ctmc_solve(), dtmc_solve()