diff --git a/ChangeLog.txt b/ChangeLog.txt index 1eeb5fc4..7ebc08e0 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -526,3 +526,117 @@ Other Commits: on relevant script/XML/header files. This does not affect the specification source copyright. +----------------------------------------------------- + +Change log for April 29, 2016 Vulkan 1.0.12 spec update: + + * Bump API patch number and header version number to 12 for this + update. + +Github Issues: + + * Change valid usage statements intended to be "sub-points" to + be actual sub-points (public issue 66). + * Replace double negation in description of + slink:VkRenderPassBeginInfo::pname:pClearValues (based on public + merge 142). + * Cleanup minor typos in spec, ref pages and XML, including those + proposed in public pull requests 144, 150, 151, 167, 168, 181, and + 186. + * Use *strict subset* in describing the partial order of memory + property types for slink:VkMemoryType, and update the style guide + accordingly (public issue 190). + * Fix various "a image" -> "an image" typos (public issue 191). + * Note in the <> and + <> sections that + structures defined by extensions which may be passed in structure + chains using the ptext:pNext member must: include initial + ptext:sType and ptext:pNext members (public issue 192). + +Internal Issues: + + * Remove duplicate language from the description of the pname:fence + parameter to flink:vkQueueSubmit and improve validity language + (internal issue 91). + * Added documentation for "optional" attribute to XML readme.tex/pdf + (internal issue 149). + * Clarify the host-side data validity rules and behavior of + flink:vkFlushMappedMemoryRanges and + flink:vkInvalidateMappedMemoryRanges (internal issue 266). + +Other Commits: + + * Added clarification to flink:vkCmdFillBuffer regarding the use of + ename:VK_WHOLE_SIZE. + * Fixed and documented implementation of "validextensionstructs" + attribute. in XML processing scripts and readme.tex/pdf. + * Add missing validity statements to flink:vkResetEvent and + flink:vkCmdResetEvent. + * Fix validity for the + ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag. + Correct all the draw/dispatch commands to mention optimally tiled + images as well as linear tiled images, and say image VIEWS instead + of images. Add validity statement to flink:vkCmdBlitImage + * Replace the {apiname} macro with hardcoded "Vulkan", now that we've + committed to that name. + * Add the VK_AMD_rasterization_order extension to vk.xml. + +----------------------------------------------------- + +Change log for May 13, 2016 Vulkan 1.0.13 spec update: + + * Bump API patch number and header version number to 13 for this + update. + +Github Issues: + + * Improve the description of ename:VK_PRESENT_MODE_FIFO_RELAXED_KHR in the + VK_KHR_surface extension (public issue 174). + * Clarify use of etext:*_SIMULTANEOUS_USE_BIT for secondary command + buffers (public issue 182). + * Fix typos in VK_KHR_wayland_surface extension where code:wl_device was + used instead of code:wl_display (public issue 193). + * Replaced {apiname} with ``Vulkan'' in XML validity statements (public + issue 199). + * Fix dead links for WSI handle types (public issue 200). + * Use "signaled" instead of "signalled" spelling everywhere (public issue + 201). + * Move readme.pdf target directory for XML schema documentation into the + target generation directory, instead of leaving it checked into the spec + source tree (public issue 203). + * Fix duplicate 'which which' typo in description of + elink:VkCommandPoolResetFlagBits (public issue 204). + * Move the <> section up one level, out of + the <> section + (public issue 209). + +Internal Issues: + + * Clarify in the <> section that + implementations should not manage the size of pipeline cache (internal + issue 192). + * Deprecate the concept of device layers and associated commands (internal + issue 255). + * Remove ename:VK_INCOMPLETE from the list of possible result codes of + flink:vkGetPhysicalDeviceSurfaceCapabilitiesKHR (internal issue 314). + * Add missing std140/std430 rule: the base alignment of a member following + a structure is a multiple of the structure's base alignment (internal + issue 321). + * Fixes naming of the single elink:VkColorSpaceKHR enum from + ename:VK_COLORSPACE_SRGB_NONLINEAR_KHR to + ename:VK_COLOR_SPACE_SRGB_NONLINEAR_KHR in XML/header and the + VK_KHR_swapchain and VK_KHR_surface extensions to match the style of the + typename (space and color are two words, not one) (internal issue 322). + * Make it clear that code:LocalInvocationID should only be applied to an + input variable and normalize the language describing + code:LocalInvocationID to the language for other compute shader + variables in the <> + section, and add normative language (internal issue 323). + * Clarify in the <> section that + the result pointer may be modified for specific commands, even if a + runtime error is returned (internal issue 324). + + + + + diff --git a/doc/specs/vulkan/Makefile b/doc/specs/vulkan/Makefile index b09702da..72358b13 100644 --- a/doc/specs/vulkan/Makefile +++ b/doc/specs/vulkan/Makefile @@ -26,7 +26,6 @@ allchecks: checkinc checklinks # Note that the := assignments below are immediate, not deferred, and # are therefore order-dependent in the Makefile -APINAME=Vulkan QUIET?=@ ASCIIDOC ?= asciidoc.py A2X ?= a2x.py @@ -44,7 +43,7 @@ ECHO:=echo # XHTMLDIR - 'xhtml' target # PDFDIR - 'pdf' target # CHECKDIR - 'allchecks' target -OUTDIR :=../../../out/1.0 +OUTDIR := ../../../out/1.0 HTMLDIR := $(OUTDIR)/html XHTMLDIR := $(OUTDIR)/xhtml PDFDIR := $(OUTDIR)/pdf @@ -64,14 +63,14 @@ KEEP = # asciidoc / a2x attributes to set. # XMLLINT normally unset - to detect problems with intermediate files # NOTEOPTS sets options controlling which NOTEs are generated -# ATTRIBOPTS sets {apiname} to "Vulkan" and enables MathJax generation +# ATTRIBOPTS sets the api revision and enables MathJax generation # VKCONF contains Vulkan-specific Asciidoc macros # ADOCOPTS options for asciidoc->HTML output # ADOCPDFOPTS options for asciidoc->PDF output via dblatex (not using a2x) # A2XOPTS options for a2x->{HTML,PDF} output XMLLINT = --no-xmllint NOTEOPTS = -a editing-notes -a implementation-guide -ATTRIBOPTS = -a apiname=$(APINAME)@ -a apirevision="$(SPECREVISION)" -a mathjax +ATTRIBOPTS = -a apirevision="$(SPECREVISION)" -a mathjax VKCONF = config/vkspec.conf ADOCOPTS = $(ATTRIBOPTS) $(NOTEOPTS) -f config/mathjax-asciidoc.conf \ -f $(VKCONF) $(VERBOSE) @@ -126,7 +125,7 @@ INCLUDES := $(wildcard protos/*.txt structs/*.txt flags/*.txt enums/*.txt funcpo COMMONDOCS := $(CHAPTERS) $(INCLUDES) # A generated included file with the spec version, date, and git commit SPECVERSION = specversion.txt -SPECREVISION = 1.0.11 +SPECREVISION = 1.0.13 SPECREMARK = # Spec targets diff --git a/doc/specs/vulkan/appendices/VK_KHR_sampler_mirror_clamp_to_edge.txt b/doc/specs/vulkan/appendices/VK_KHR_sampler_mirror_clamp_to_edge.txt index 054334ba..3bc18fed 100644 --- a/doc/specs/vulkan/appendices/VK_KHR_sampler_mirror_clamp_to_edge.txt +++ b/doc/specs/vulkan/appendices/VK_KHR_sampler_mirror_clamp_to_edge.txt @@ -7,7 +7,7 @@ *Last Modified Date*:: 16/02/2016 *Revision*:: 1 *Dependencies*:: - - This extension is written against version 1.0. of the {apiname} API. + - This extension is written against version 1.0. of the Vulkan API. *Contributors*:: - Tobias Hector, Imagination Technologies *Contacts*:: diff --git a/doc/specs/vulkan/appendices/compressedtex.txt b/doc/specs/vulkan/appendices/compressedtex.txt index f4c9d3eb..880fb9d2 100644 --- a/doc/specs/vulkan/appendices/compressedtex.txt +++ b/doc/specs/vulkan/appendices/compressedtex.txt @@ -26,7 +26,7 @@ Format Specification. [[appendix-compressedtex-bc]] == Block-Compressed Image Formats -.Mapping of {apiname} BC formats to descriptions +.Mapping of Vulkan BC formats to descriptions [width="90%",options="header",cols="5,4"] |============================== | VkFormat | Data Format Specification description @@ -59,7 +59,7 @@ Format Specification. The following formats are described in the ``ETC2 Compressed Texture Image Formats'' chapter of the Khronos Data Format Specification. -.Mapping of {apiname} ETC formats to descriptions +.Mapping of Vulkan ETC formats to descriptions [options="header",cols="1,1"] |============================== | VkFormat | Data Format Specification description @@ -83,7 +83,7 @@ Formats'' chapter of the Khronos Data Format Specification. ASTC formats are described in the ``ASTC Compressed Texture Image Formats'' chapter of the Khronos Data Format Specification. -.Mapping of {apiname} ASTC formats to descriptions +.Mapping of Vulkan ASTC formats to descriptions [width="75%",options="header",cols="63%,15%,22%"] |============================== | VkFormat ^| Compressed texel block dimensions ^| sRGB-encoded diff --git a/doc/specs/vulkan/appendices/extensions.txt b/doc/specs/vulkan/appendices/extensions.txt index f03c812c..f99c3f63 100644 --- a/doc/specs/vulkan/appendices/extensions.txt +++ b/doc/specs/vulkan/appendices/extensions.txt @@ -6,9 +6,9 @@ [[extensions]] = Layers & Extensions -Extensions to the {apiname} API can: be defined by authors, groups of -authors, and the Khronos {apiname} Working Group. In order not to compromise -the readability of the {apiname} Specification, the core Specification does +Extensions to the Vulkan API can: be defined by authors, groups of +authors, and the Khronos Vulkan Working Group. In order not to compromise +the readability of the Vulkan Specification, the core Specification does not incorporate most extensions. The online registry of extensions is available at URL @@ -41,7 +41,7 @@ several purposes: * Provides a central repository for documentation and header changes associated with extensions -{apiname}'s design and general software development trends introduces two +Vulkan's design and general software development trends introduces two new paradigms that require rethinking the existing mechanisms: * Layers, and with them a focus on a more open ecosystem where non-Khronos @@ -63,7 +63,7 @@ Some general rules to simplify the specific rules below: * All extensions must: be registered with Khronos. * Extensions must: be strictly additive and backwards-compatible. That is, extensions mustnot: remove existing functionality, or change existing - default behaviors. A {apiname} implementation may: support any + default behaviors. A Vulkan implementation may: support any combination of extensions, but applications written using only the core API, or a subset of the supported extensions, must: continue to work in such an implementation without changes in behavior. @@ -78,8 +78,8 @@ Both extensions and layer names include a +VK_+ prefix. In addition, layers add a +LAYER_+ prefix. Extension and layer names also contain an _author prefix_ identifying the author of the extension/layer. This prefix is a short, capitalized, registered string identifying an author, such as a -Khronos member developing {apiname} implementations for their devices, or a -non-Khronos developer creating {apiname} layers. +Khronos member developing Vulkan implementations for their devices, or a +non-Khronos developer creating Vulkan layers. Some authors have platform communities they wish to distinguish between, and can: register additional author prefixes for that purpose. For example, @@ -98,7 +98,7 @@ only for layers. will use the prefix +VK_KHR_+. ** The following author prefixes are reserved and mustnot: be used: *** +VK+ - To avoid confusion with the top-level +VK_+ prefix. - *** +VULKAN+ - To avoid confusion with the name of the {apiname} API. + *** +VULKAN+ - To avoid confusion with the name of the Vulkan API. *** +LAYER+ - To avoid confusion with the higher-level ``LAYER'' prefix. *** +KHRONOS+ - To avoid confusion with the Khronos organization. ** Multi-author extensions that have not been ratified by Khronos (those @@ -143,7 +143,7 @@ browser. == Extension Command, Type, and Token Naming Conventions Extensions may: add new commands, types, and tokens, or collectively -``objects'', to the {apiname} API. These objects are given globally unique +``objects'', to the Vulkan API. These objects are given globally unique names by appending the author prefix defined above for the extension name according to the following templates. @@ -184,10 +184,10 @@ enum VkSomeValuesGRPHX { [[extensions-api-registry]] -== The {apiname} Registry +== The Vulkan Registry -The canonical definition of the {apiname} APIs is kept in an XML file known -as the *{apiname} registry*. The registry is kept in +src/spec/vk.xml+ in +The canonical definition of the Vulkan APIs is kept in an XML file known +as the *Vulkan registry*. The registry is kept in +src/spec/vk.xml+ in the branch of the vulkan project containing the most recently released core API specification. The registry contains reserved author prefixes, core and extension interface definitions, definitions of individual commands and @@ -202,7 +202,7 @@ documentation used in generating the API specification and reference pages. == Registering an Author Prefix with Khronos Previous Khronos APIs could only officially be modified by Khronos members. -In an effort to build a more flexible platform, {apiname} allows non-Khronos +In an effort to build a more flexible platform, Vulkan allows non-Khronos developers to extend and modify the API via layers and extensions in the same manner as Khronos members. However, extensions must: still be registered with Khronos. A mechanism for non-members to register layers and @@ -222,7 +222,7 @@ contact email address, respectively. The author prefix will be reserved only once this merge request is accepted. Please do not try to reserve author names which clearly belong to another -existing company or software project which may: wish to develop {apiname} +existing company or software project which may: wish to develop Vulkan extensions or layers in the future, as a matter of courtesy and respect. Khronos may: decline to register author names that are not requested in good faith. @@ -231,7 +231,7 @@ faith. [[extensions-vendor-id]] == Registering a Vendor ID with Khronos -{apiname} implementers must report a valid vendor ID for their +Vulkan implementers must report a valid vendor ID for their implementation, as reported by <>. If there is no valid PCI vendor ID defined for the physical device, @@ -251,7 +251,7 @@ available ID in the list of ++ tags. The vendor ID will be reserved only once this merge request has been accepted. Please do not try to reserve vendor IDs unless you are making a good faith -effort to develop a {apiname} implementation and require one for that +effort to develop a Vulkan implementation and require one for that purpose. @@ -264,7 +264,7 @@ registration is strongly recommended. Registration means: * Adding the extension or layer name to the list in +vk.xml+ and appearing on the Khronos registry website, which will link to associated documentation hosted on Khronos. - * For extensions which add to the {apiname} API, including definitions of + * For extensions which add to the Vulkan API, including definitions of those additions to +vk.xml+. Registration for Khronos members is handled by filing a merge request in the @@ -298,7 +298,7 @@ extension number assignment prior to extension publication: * Develop and test the extension using the registered extension number. * Publish the extension to Khronos using the previously registered extension number, by creating a branch of the repository with - appropriate changes relative to the core {apiname} API branch. + appropriate changes relative to the core Vulkan API branch. * Mark the extension as enabled, by proposing a merge to master changing the +supported+ attribute value of the ++ to +supported="vulkan"+. This should: be completely automated and under the @@ -326,15 +326,15 @@ endif::editing-notes[] == Documenting Extensions -Extensions are documented as modifications to the {apiname} specification. +Extensions are documented as modifications to the Vulkan specification. These modifications will be on Git branches that are named with the following syntax: +-+ For example, the VK_KHR_surface extension will be documented relative -to version 1.0 of the {apiname} specification. As such, the branch name will +to version 1.0 of the Vulkan specification. As such, the branch name will be: +1.0-VK_KHR_surface+ -If the extension modifies an existing section of the {apiname} +If the extension modifies an existing section of the Vulkan specification, those modifications are made in-place. Since the changes are on a branch, the core-only specification can: be easily produced. A specification with an extension is created by merging in the extension's @@ -347,7 +347,7 @@ higher-numbered extension should: take care to deal with any conflicts. The WSI extensions were used to help pioneer what should: be done for extensions. This includes the following: - * All extensions should: add to the appendix of the {apiname} + * All extensions should: add to the appendix of the Vulkan specification. This should: be modeled after what was done for the +VK_KHR_surface+ extension, which contains some high-level information about the extension (as well as code examples, and revision history) in @@ -360,12 +360,12 @@ extensions. This includes the following: multiple extensions' branches are merged in order to create the ``full'' branch specification. * If there are any other places where 2 or more extensions will extend the - {apiname} specification, it is best to put that content in a file, and + Vulkan specification, it is best to put that content in a file, and use an +include+ statement to put that content into the spec. Again, this +include+ line should: be put on the master branch in order to avoid merge conflicts. - * If an extension is more of an addition to the {apiname} specification, - the extension should: add a chapter to the {apiname} specification. + * If an extension is more of an addition to the Vulkan specification, + the extension should: add a chapter to the Vulkan specification. == Assigning Extension Token Values @@ -443,7 +443,7 @@ all extensions must: define two additional tokens. extension specification, and is incremented when significant changes (bugfixes or added functionality) are made. Note that the revision of an extension defined in +vulkan.h+ and the revision supported by the - {apiname} implementation (the pname:specVersion field of the + Vulkan implementation (the pname:specVersion field of the slink:VkExtensionProperties structure corresponding to the extension and returned by one of the <>) may: differ. In such cases, only the functionality and @@ -472,7 +472,7 @@ be included in the +vulkan.h+ header supplied by Khronos. .Note ==== Application developers are encouraged to be careful when using +switch+ -statements with {apiname} API enums. This is because extensions can: add new +statements with Vulkan API enums. This is because extensions can: add new values to existing enums. The use of a +default:+ statement, within a +switch+, may: avoid future compilation issues. ==== @@ -481,23 +481,23 @@ values to existing enums. The use of a +default:+ statement, within a [[extension-function_prototypes]] == Extension Function Prototypes -Function pointer declarations and function prototypes for all core {apiname} +Function pointer declarations and function prototypes for all core Vulkan API commands are included in the +vulkan.h+ file. These come from the -official XML specification of the {apiname} API hosted by Khronos. +official XML specification of the Vulkan API hosted by Khronos. Function pointer declarations are also included in the +vulkan.h+ file for all commands defined by registered extensions. Function prototypes for extensions may: be included in +vulkan.h+. Extension commands that are part -of the {apiname} ABI must: be flagged in the XML. Function prototypes will +of the Vulkan ABI must: be flagged in the XML. Function prototypes will be included in +vulkan.h+ for all extension commands that are part of the -{apiname} ABI. +Vulkan ABI. An extension can: be considered platform specific, in which case its interfaces in +vulkan.h+ are protected by #ifdefs. This is orthogonal to -whether an extension command is considered to be part of the {apiname} ABI. +whether an extension command is considered to be part of the Vulkan ABI. The initial set of WSI extension commands are considered to be part of the -{apiname} ABI. Function prototypes for these WSI commands are included in +Vulkan ABI. Function prototypes for these WSI commands are included in the +vulkan.h+ provided by Khronos, though the platform-specific portions of +vulkan.h+ are protected by #ifdefs. @@ -505,7 +505,7 @@ the +vulkan.h+ provided by Khronos, though the platform-specific portions of .Note ==== Based on feedback from implementers, Khronos expects that the Android, -Linux, and Windows {apiname} SDKs will include our +vulkan.h+ and export +Linux, and Windows Vulkan SDKs will include our +vulkan.h+ and export the supported WSI functions for those platforms from their loader libraries. Other implementations can: make different choices for their headers and loader libraries, but are encouraged to be consistent with @@ -518,8 +518,8 @@ these implementations. flink:vkGetInstanceProcAddr and flink:vkGetDeviceProcAddr can: be used in order to obtain function pointer addresses for core and extension commands (per the description in <>). Different {apiname} API loaders can: choose to statically -export functions for some or all of the core {apiname} API commands, and +Pointers>>). Different Vulkan API loaders can: choose to statically +export functions for some or all of the core Vulkan API commands, and can: statically export functions for some or all extension commands. If a loader statically exports a function, an application can: link against that function without needing to call one of the ftext:vkGet*ProcAddr commands. @@ -527,8 +527,8 @@ function without needing to call one of the ftext:vkGet*ProcAddr commands. [NOTE] .Note ==== -The Khronos-provided {apiname} API loader for Android, Linux, and Windows -exports functions for all core {apiname} API and WSI extension commands. The +The Khronos-provided Vulkan API loader for Android, Linux, and Windows +exports functions for all core Vulkan API and WSI extension commands. The WSI functions are considered special, because they are required for many applications. ==== @@ -556,6 +556,7 @@ defined and locked down, it's safest to refer to the listed contact. ==== +[[extensions-interactions]] == Extension Interactions Extensions modifying the behavior of existing commands should: provide @@ -563,7 +564,14 @@ additional parameters by using the pname:pNext field of an existing structure, pointing to a new structure defined by the extension, as described in the <> section. Extension structures defined by multiple extensions affecting the same structure can -be chained together in this fashion. +be chained together in this fashion. Any structure which can: be chained +in this fashion must: begin with the following two members: + +["source","{basebackend@docbook:c++:cpp}",title=""] +------------------------------------------------------------------------------ +VkStructureType sType; +const void* pNext; +------------------------------------------------------------------------------ It is in principle possible for extensions to provide additional parameters through alternate means, such as passing a handle parameter to a structure diff --git a/doc/specs/vulkan/appendices/glossary.txt b/doc/specs/vulkan/appendices/glossary.txt index 9c2123e5..63430b9f 100644 --- a/doc/specs/vulkan/appendices/glossary.txt +++ b/doc/specs/vulkan/appendices/glossary.txt @@ -216,7 +216,7 @@ Device-Local Memory:: Dispatchable Handle:: A handle of a pointer handle type which may: be used by layers as part - of intercepting API commands. The first argument to each {apiname} + of intercepting API commands. The first argument to each Vulkan command is a dispatchable handle type. Dispatching Commands:: @@ -229,7 +229,7 @@ Drawing Commands:: flink:vkCmdDrawIndexedIndirect. Duration (Command):: - The _duration_ of a {apiname} command refers to the interval between + The _duration_ of a Vulkan command refers to the interval between calling the command and its return to the caller. Dynamic Storage Buffer:: @@ -245,7 +245,7 @@ Explicitly-Enabled Layer:: list in flink:vkCreateInstance or flink:vkCreateDevice. Event:: - A synchronization primitive that is signalled when execution of previous + A synchronization primitive that is signaled when execution of previous commands complete through a specified set of pipeline stages. Events can be waited on by the device and polled by the host. Represented by a sname:VkEvent object. @@ -314,7 +314,7 @@ Global Workgroup:: A collection of local workgroups dispatched by a single dispatch command. Handle:: - An opaque integer or pointer value used to refer to a {apiname} object. + An opaque integer or pointer value used to refer to a Vulkan object. Each object type has a unique handle type. Happen-after:: @@ -378,7 +378,7 @@ Immutable Sampler:: the layout, and cannot be changed. Implicitly-Enabled Layer:: - A layer enabled by a loader-defined mechanism outside the {apiname} API, + A layer enabled by a loader-defined mechanism outside the Vulkan API, rather than explicitly by the application during instance or device creation. @@ -402,7 +402,7 @@ Input Attachment:: view. Instance:: - The top-level {apiname} object, which represents the application's + The top-level Vulkan object, which represents the application's connection to the implementation. Represented by a sname:VkInstance object. @@ -427,7 +427,7 @@ Local Workgroup:: Logical Device:: An object that represents the application's interface to the physical - device. The logical device is the parent of most {apiname} objects. + device. The logical device is the parent of most Vulkan objects. Represented by a sname:VkDevice object. Logical Operation:: @@ -802,7 +802,7 @@ A:: = Prefixes Prefixes are used in the API to denote specific semantic meaning of -{apiname} names, or as a label to avoid name clashes, and are explained +Vulkan names, or as a label to avoid name clashes, and are explained here: VK/Vk/vk:: diff --git a/doc/specs/vulkan/appendices/invariance.txt b/doc/specs/vulkan/appendices/invariance.txt index efcb0875..4656c409 100644 --- a/doc/specs/vulkan/appendices/invariance.txt +++ b/doc/specs/vulkan/appendices/invariance.txt @@ -4,8 +4,8 @@ [appendix] = Invariance -The {apiname} specification is not pixel exact. It therefore does not -guarantee an exact match between images produced by different {apiname} +The Vulkan specification is not pixel exact. It therefore does not +guarantee an exact match between images produced by different Vulkan implementations. However, the specification does specify exact matches, in some cases, for images produced by the same implementation. The purpose of this appendix is to identify and provide justification for those cases that @@ -14,10 +14,10 @@ require exact matches. == Repeatability The obvious and most fundamental case is repeated issuance of a series of -{apiname} commands. For any given {apiname} and framebuffer state vector, -and for any {apiname} command, the resulting {apiname} and framebuffer state +Vulkan commands. For any given Vulkan and framebuffer state vector, +and for any Vulkan command, the resulting Vulkan and framebuffer state must: be identical whenever the command is executed on that initial -{apiname} and framebuffer state. This repeatability requirement doesn't +Vulkan and framebuffer state. This repeatability requirement doesn't apply when using shaders containing side effects (image and buffer variable stores and atomic operations), because these memory operations are not guaranteed to be processed in a defined order. @@ -38,7 +38,7 @@ Additional invariance rules are desirable to ensure useful operation. == Multi-pass Algorithms Invariance is necessary for a whole set of useful multi-pass algorithms. -Such algorithms render multiple times, each time with a different {apiname} +Such algorithms render multiple times, each time with a different Vulkan mode vector, to eventually produce a result in the framebuffer. Examples of these algorithms include: @@ -49,11 +49,11 @@ these algorithms include: == Invariance Rules -For a given instantiation of an {apiname} rendering context: +For a given instantiation of an Vulkan rendering context: -*Rule 1* _For any given {apiname} and framebuffer state vector, and for any -given {apiname} command, the resulting {apiname} and framebuffer state must: -be identical each time the command is executed on that initial {apiname} and +*Rule 1* _For any given Vulkan and framebuffer state vector, and for any +given Vulkan command, the resulting Vulkan and framebuffer state must: +be identical each time the command is executed on that initial Vulkan and framebuffer state._ *Rule 2* _Changes to the following state values have no side effects (the @@ -89,7 +89,7 @@ sequence, are pixel identical._ when run multiple times with the same input. The wording ``the same shader'' means a program object that is populated with the same SPIR-V binary, which is used to create pipelines, possibly multiple times, and which program -object is then executed using the same {apiname} state vector. Invariance is +object is then executed using the same Vulkan state vector. Invariance is relaxed for shaders with side effects, such as performing stores or atomics._ @@ -98,19 +98,19 @@ assign_ code:FragCoord.z _to_ code:FragDepth _are depth-invariant with respect to each other, for those fragments where the assignment to_ code:FragDepth _actually is done._ -If a sequence of {apiname} commands specifies primitives to be rendered with +If a sequence of Vulkan commands specifies primitives to be rendered with shaders containing side effects (image and buffer variable stores and atomic operations), invariance rules are relaxed. In particular, rule 1, corollary 2, and rule 4 do not apply in the presence of shader side effects. -The following weaker versions of rules 1 and 4 apply to {apiname} commands +The following weaker versions of rules 1 and 4 apply to Vulkan commands involving shader side effects: -*Rule 6* _For any given {apiname} and framebuffer state vector, and for any -given {apiname} command, the contents of any framebuffer state not directly +*Rule 6* _For any given Vulkan and framebuffer state vector, and for any +given Vulkan command, the contents of any framebuffer state not directly or indirectly affected by results of shader image or buffer variable stores or atomic operations must: be identical each time the command is executed on -that initial {apiname} and framebuffer state._ +that initial Vulkan and framebuffer state._ *Rule 7* _The same vertex or fragment shader will produce the same result when run multiple times with the same input as long as:_ @@ -121,8 +121,8 @@ when run multiple times with the same input as long as:_ * _no shader invocation, or other operation performed to process the sequence of commands, reads memory written to by an image store._ -When any sequence of {apiname} commands triggers shader invocations that -perform image stores or atomic operations, and subsequent {apiname} commands +When any sequence of Vulkan commands triggers shader invocations that +perform image stores or atomic operations, and subsequent Vulkan commands read the memory written by those shader invocations, these operations must: be explicitly synchronized. diff --git a/doc/specs/vulkan/appendices/spirvenv.txt b/doc/specs/vulkan/appendices/spirvenv.txt index a931148d..01830247 100644 --- a/doc/specs/vulkan/appendices/spirvenv.txt +++ b/doc/specs/vulkan/appendices/spirvenv.txt @@ -3,16 +3,16 @@ [appendix] [[spirvenv]] -= {apiname} Environment for SPIR-V += Vulkan Environment for SPIR-V -Shaders for {apiname} are defined by the <> as +Shaders for Vulkan are defined by the <> as well as the <>. -This appendix defines additional SPIR-V requirements applying to {apiname} +This appendix defines additional SPIR-V requirements applying to Vulkan shaders. == Required Versions and Formats -A {apiname} 1.0 implementation must: support the 1.0 version of SPIR-V and +A Vulkan 1.0 implementation must: support the 1.0 version of SPIR-V and the 1.0 version of the SPIR-V Extended Instructions for GLSL. A SPIR-V module passed into flink:vkCreateShaderModule is interpreted as @@ -47,7 +47,7 @@ to that feature must: also be supported. .SPIR-V Capabilities which are not required:, and corresponding feature names [options="header"] |==== -| SPIR-V OpCapability | {apiname} feature name +| SPIR-V OpCapability | Vulkan feature name | code:Geometry | <> | code:Tessellation | <> | code:Float64 | <> @@ -81,7 +81,7 @@ following to flink:vkCreateShaderModule: - any OpCapability not listed above, - an unsupported capability, or - - a capability which corresponds to a {apiname} feature which has not been + - a capability which corresponds to a Vulkan feature which has not been enabled. @@ -198,18 +198,18 @@ negative the result is undefined. .Note ==== While the code:OpSRem and code:OpSMod instructions are supported by the -{apiname} environment, they require non-negative values and thus do not +Vulkan environment, they require non-negative values and thus do not enable additional functionality beyond what code:OpUMod provides. ==== [[spirvenv-image-formats]] -Compatibility Between SPIR-V Image Formats And {apiname} Formats ----------------------------------------------------------------- +Compatibility Between SPIR-V Image Formats And Vulkan Formats +------------------------------------------------------------- [cols="2*", options="header"] |=== -|SPIR-V Image Format |{apiname} Format +|SPIR-V Image Format |Vulkan Format |code:Rgba32f |ename:VK_FORMAT_R32G32B32A32_SFLOAT |code:Rgba16f |ename:VK_FORMAT_R16G16B16A16_SFLOAT |code:R32f |ename:VK_FORMAT_R32_SFLOAT diff --git a/doc/specs/vulkan/buildRelease b/doc/specs/vulkan/buildRelease index 9d62a8a0..33df0fed 100755 --- a/doc/specs/vulkan/buildRelease +++ b/doc/specs/vulkan/buildRelease @@ -33,8 +33,7 @@ git checkout master echo "**** AUTOGENERATING HEADERS AND SPEC INCLUDE FILES ****" cd $xml -make clobber -make full_install +make OUTDIR=$outdir clobber full_install echo "**** CLEANING SPEC ****" cd $spec diff --git a/doc/specs/vulkan/chapters/clears.txt b/doc/specs/vulkan/chapters/clears.txt index b946f5f1..39ff7d81 100644 --- a/doc/specs/vulkan/chapters/clears.txt +++ b/doc/specs/vulkan/chapters/clears.txt @@ -221,7 +221,9 @@ include::../protos/vkCmdFillBuffer.txt[] filling, and must: be a multiple of 4. * pname:size is the number of bytes to fill, and must: be either a multiple of 4, or ename:VK_WHOLE_SIZE to fill the range from - pname:offset to the end of the buffer. + pname:offset to the end of the buffer. If ename:VK_WHOLE_SIZE is used + and the remaining size of the buffer is not a multiple of 4, then the + nearest smaller multiple is used. * pname:data is the 4-byte word written repeatedly to the buffer to fill pname:size bytes of data. The data word is written to memory according to the host endianness. diff --git a/doc/specs/vulkan/chapters/cmdbuffers.txt b/doc/specs/vulkan/chapters/cmdbuffers.txt index cb4e7744..7e463bca 100644 --- a/doc/specs/vulkan/chapters/cmdbuffers.txt +++ b/doc/specs/vulkan/chapters/cmdbuffers.txt @@ -136,7 +136,7 @@ command buffers allocated from the command pool back to the command pool. All command buffers that have been allocated from the command pool are put in the initial state. -pname:flags is a bitmask controlling the operation. Bits which which can: be +pname:flags is a bitmask controlling the operation. Bits which can: be set include: include::../enums/VkCommandPoolResetFlagBits.txt[] @@ -336,7 +336,8 @@ fname:vkCmdExecuteCommands) until the final time that primary buffer's submission to a queue completes. If, after the primary buffer completes, the secondary command buffer is recorded to execute on a different primary buffer, the first primary buffer mustnot: be resubmitted until after it is -reset with flink:vkResetCommandBuffer. +reset with flink:vkResetCommandBuffer unless the secondary command buffer +was recorded with ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT. If ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT is not set on a secondary command buffer, that command buffer mustnot: be used more than @@ -400,25 +401,13 @@ include::../protos/vkQueueSubmit.txt[] which describe the work to submit. All work described by pname:pSubmits must: be submitted to the queue before the command returns. * pname:fence is an optional handle to a fence. If pname:fence is not - code:VK_NULL_HANDLE, the fence is signaled when execution of all - sname:VkSubmitInfo::pname:pCommandBuffers members of pname:pSubmits is - completed. If pname:submitCount is zero but pname:fence is not - code:VK_NULL_HANDLE, the fence will still be submitted to the queue and - will become signaled when all work previously submitted to the queue has - completed. - -ifdef::editing-notes[] -[NOTE] -.editing-note -==== -(Jon) The description of pname:fence here was added from the ref page -because it was missing from the starting point of MR #1048, which is just -about cleaning up the markup of command parameters. It needs to be resolved -with the description far below of pname:fence, as noted by @jbolz, because -they're not very similar and because most of the second description belongs -in validity XML language. -==== -endif::editing-notes[] + code:VK_NULL_HANDLE, the fence is signaled when execution of all command + buffers specified in the sname:VkSubmitInfo::pname:pCommandBuffers + members of pname:pSubmits is complete, providing certain + <>. If + pname:submitCount is zero but pname:fence is not code:VK_NULL_HANDLE, + the fence will still be submitted to the queue and will become signaled + when all work previously submitted to the queue has completed. include::../validity/protos/vkQueueSubmit.txt[] @@ -440,11 +429,11 @@ Each call to fname:vkQueueSubmit submits zero or more _batches_ of work to the queue for execution. pname:submitCount is used to specify the number of batches to submit. Each batch includes zero or more semaphores to wait upon, and a corresponding set of stages that will wait for the semaphore to be -signalled before executing any work, followed by a number of command buffers +signaled before executing any work, followed by a number of command buffers that will be executed, and finally, zero or more semaphores that will be signaled after command buffer execution completes. Each batch is represented as an instance of the slink:VkSubmitInfo structure stored in an array, the -address of which is passed in pname:pSubmitInfo. +address of which is passed in pname:pSubmits. The sname:VkSubmitInfo structure is defined as: @@ -473,13 +462,6 @@ include::../structs/VkSubmitInfo.txt[] include::../validity/structs/VkSubmitInfo.txt[] -If pname:fence is provided, it must: be in the unsignaled state (see -<>) and a fence must: only be associated with -a single submission until that submission completes, and the fence is -subsequently reset. When all command buffers in pname:pCommandBuffers have -completed execution, the status of pname:fence is set to signaled, providing -certain <>. - [[commandbuffers-submission-progress]] == Queue Forward Progress diff --git a/doc/specs/vulkan/chapters/copies.txt b/doc/specs/vulkan/chapters/copies.txt index 6fefdd6d..07a7506f 100644 --- a/doc/specs/vulkan/chapters/copies.txt +++ b/doc/specs/vulkan/chapters/copies.txt @@ -197,7 +197,7 @@ pname:extent.height is not a multiple of the compressed texel block height then (pname:extent.height + pname:srcOffset.y) must: equal the image subresource height and if pname:extent.depth is not a multiple of the compressed texel block depth then (pname:extent.depth + pname:srcOffset.z) -must: equal the image subresource depth. Similarily if the pname:dstImage is +must: equal the image subresource depth. Similarly, if the pname:dstImage is compressed and if pname:extent.width is not a multiple of the compressed texel block width then (pname:extent.width + pname:dstOffset.x) must: equal the image subresource width, if pname:extent.height is not a multiple of the diff --git a/doc/specs/vulkan/chapters/descriptorsets.txt b/doc/specs/vulkan/chapters/descriptorsets.txt index 65ecdd4a..9fa9970b 100644 --- a/doc/specs/vulkan/chapters/descriptorsets.txt +++ b/doc/specs/vulkan/chapters/descriptorsets.txt @@ -79,7 +79,7 @@ layout (set=m, binding=n) uniform sampler2D variableNameArray[L]; == Descriptor Types The following sections outline the various descriptor types supported by -{apiname}. Each section defines a descriptor type, and each descriptor type +Vulkan. Each section defines a descriptor type, and each descriptor type has a manifestation in the shading language and SPIR-V as well as in descriptor sets. There is mostly a one-to-one correspondence between descriptor types and classes of opaque types in the shading language, where @@ -1478,7 +1478,7 @@ include::../validity/protos/vkCmdBindDescriptorSets.txt[] As described above in section <>, the pipeline layout defines shader push constants which are -updated via {apiname} commands rather than via writes to memory or copy +updated via Vulkan commands rather than via writes to memory or copy commands. [NOTE] diff --git a/doc/specs/vulkan/chapters/devsandqueues.txt b/doc/specs/vulkan/chapters/devsandqueues.txt index 4d40bc51..c9782367 100644 --- a/doc/specs/vulkan/chapters/devsandqueues.txt +++ b/doc/specs/vulkan/chapters/devsandqueues.txt @@ -4,10 +4,10 @@ [[devsandqueues]] = Devices and Queues -Once {apiname} is initialized, devices and queues are the primary objects -used to interact with a {apiname} implementation. +Once Vulkan is initialized, devices and queues are the primary objects +used to interact with a Vulkan implementation. -{apiname} separates the concept of _physical_ and _logical_ devices. A +Vulkan separates the concept of _physical_ and _logical_ devices. A physical device usually represents a single device in a system (perhaps made up of several individual hardware devices working together), of which there are a finite number. A logical device represents an application's view of @@ -21,7 +21,7 @@ physical devices installed in the system, call: include::../protos/vkEnumeratePhysicalDevices.txt[] - * pname:instance is a handle to a {apiname} instance previously created + * pname:instance is a handle to a Vulkan instance previously created with fname:vkCreateInstance. * pname:pPhysicalDeviceCount is a pointer to an integer related to the number of physical devices available or queried, as described below. @@ -60,7 +60,7 @@ The sname:VkPhysicalDeviceProperties structure is defined as: include::../structs/VkPhysicalDeviceProperties.txt[] - * pname:apiVersion is the version of {apiname} supported by the device, + * pname:apiVersion is the version of Vulkan supported by the device, encoded as described in the <> section. * pname:driverVersion is the vendor-specified version of the driver. @@ -279,7 +279,7 @@ device exposes a number of _queue families_ each having one or more _queues_. All queues in a queue family support the same operations. As described in <>, a {apiname} application will first query for all physical devices +Devices>>, a Vulkan application will first query for all physical devices in a system. Each physical device can: then be queried for its capabilities, including its queue and queue family properties. Once an acceptable physical device is identified, an application will create a corresponding logical @@ -330,11 +330,9 @@ include::../structs/VkDeviceCreateInfo.txt[] requested to be created along with the logical device. Refer to the <> section below for further details. - * pname:enabledLayerCount is the number of device layers to enable. - * pname:ppEnabledLayerNames is a pointer to an array of - pname:enabledLayerCount null-terminated UTF-8 strings containing the - names of layers to enable for the created device. See the - <> section for further details. + * pname:enabledLayerCount is deprecated and ignored. + * pname:ppEnabledLayerNames is deprecated and ignored. See + <>. * pname:enabledExtensionCount is the number of device extensions to enable. * pname:ppEnabledExtensionNames is a pointer to an array of @@ -418,7 +416,7 @@ error is largely informational and intended only to inform the user that their hardware has probably developed a fault or become physically disconnected, and should: be investigated further. In many cases, physical device loss may: cause other more serious issues such as the operating -system crashing; in which case it may: not be reported via the {apiname} +system crashing; in which case it may: not be reported via the Vulkan API. ==== @@ -482,7 +480,7 @@ include::../validity/protos/vkDestroyDevice.txt[] To ensure that no work is active on the device, flink:vkDeviceWaitIdle can: be used to gate the destruction of the device. Prior to destroying a -device, an application is responsible for destroying/freeing any {apiname} +device, an application is responsible for destroying/freeing any Vulkan objects that were created using that device as the first parameter of the corresponding ftext:vkCreate* or ftext:vkAllocate* command. @@ -581,7 +579,7 @@ include::../validity/protos/vkGetDeviceQueue.txt[] [[devsandqueues-index]] === Queue Family Index -The queue family index is used in multiple places in {apiname} in order to +The queue family index is used in multiple places in Vulkan in order to tie operations to a specific family of queues. When retrieving a handle to the queue via fname:vkGetDeviceQueue, the queue @@ -647,7 +645,7 @@ binding operations in the queue have completed. include::../validity/protos/vkQueueWaitIdle.txt[] -Synchronization between queues is done using {apiname} semaphores as +Synchronization between queues is done using Vulkan semaphores as described in the <> chapter. @@ -655,7 +653,7 @@ chapter. [[devsandqueues-sparsebinding]] === Sparse Memory Binding -In {apiname} it is possible to sparsely bind memory to buffers and +In Vulkan it is possible to sparsely bind memory to buffers and images as described in the <> chapter. Sparse memory binding is a queue operation. A queue whose flags include the ename:VK_QUEUE_SPARSE_BINDING_BIT must: be able to support the diff --git a/doc/specs/vulkan/chapters/drawing.txt b/doc/specs/vulkan/chapters/drawing.txt index 0abc6ea2..220b56e1 100644 --- a/doc/specs/vulkan/chapters/drawing.txt +++ b/doc/specs/vulkan/chapters/drawing.txt @@ -340,7 +340,7 @@ The order of vertices in such a primitive is significant during <>. -=== Programmable Primitive Shading +== Programmable Primitive Shading Once primitives are assembled, they proceed to the vertex shading stage of the pipeline. If the draw includes multiple instances, then the set of diff --git a/doc/specs/vulkan/chapters/extensions.txt b/doc/specs/vulkan/chapters/extensions.txt index 9e564ab3..41e526d8 100644 --- a/doc/specs/vulkan/chapters/extensions.txt +++ b/doc/specs/vulkan/chapters/extensions.txt @@ -5,34 +5,40 @@ = Extended Functionality Additional functionality may: be provided by layers or extensions. A layer -cannot: add or modify {apiname} commands, while an extension may: do so. +cannot: add or modify Vulkan commands, while an extension may: do so. -There are two kinds of layers and extensions, instance and device. Instance -layers and extensions are general purpose and do not depend on a specific -device. Device layers and extensions operate on specific devices, and -require a valid sname:VkDevice to be used. Instance extensions usually -affect the operation of the API as a whole, whereas device layers and -extensions tend to be hardware-specific. Examples of these might be: +The set of layers to enable is specified when creating an instance, and those +layers are able to intercept any Vulkan command dispatched to that instance +or any of its child objects. - * Whole API validation is an example of a good instance layer. +Extensions can operate at either the instance or device scope. Enabled instance +extensions are able to affect the operation of the instance and any of its +child objects, while device extensions may: only be available on a subset of +physical devices, must be individually enabled per-device, and only affect the +operation of the devices where they are enabled. + +Examples of these might be: + + * Whole API validation is an example of a layer. * Debug capabilities might make a good instance extension. * A layer that provides hardware-specific performance telemetry and - analysis could be a device layer. + analysis could be a layer that is only active for devices created from + compatible physical devices. * Functions to allow an application to use additional hardware features beyond the core would be a good candidate for a device extension. [[extended-functionality-layers]] == Layers -When a layer is enabled, it inserts itself into the call chain for {apiname} +When a layer is enabled, it inserts itself into the call chain for Vulkan commands the layer is interested in. A common use of layers is to validate application behavior during development. For example, the implementation -will not check that {apiname} enums used by the application fall within +will not check that Vulkan enums used by the application fall within allowed ranges. Instead, a validation layer would do those checks and flag issues. This avoids a performance penalty during production use of the application because those layers would not be enabled in production. -To query the available instance layers, call: +To query the available layers, call: include::../protos/vkEnumerateInstanceLayerProperties.txt[] @@ -43,38 +49,16 @@ include::../protos/vkEnumerateInstanceLayerProperties.txt[] include::../validity/protos/vkEnumerateInstanceLayerProperties.txt[] -To enable a instance layer, the name of the layer should be added to the -pname:ppEnabledLayerNames member of slink:VkInstanceCreateInfo when creating -a sname:VkInstance. - -To query the layers available to a given physical device, call: - -include::../protos/vkEnumerateDeviceLayerProperties.txt[] - - * pname:physicalDevice is the physical device that will be queried. - * pname:pPropertyCount is a pointer to an integer related to the number of - layer properties available or queried, as described below. - * pname:pProperties is either `NULL` or a pointer to an array of - slink:VkLayerProperties structures. - -include::../validity/protos/vkEnumerateDeviceLayerProperties.txt[] - -To enable a device layer, the name of the layer should be added to the -pname:ppEnabledLayerNames member of slink:VkDeviceCreateInfo when creating -a sname:VkDevice. - -For both flink:vkEnumerateInstanceLayerProperties and -flink:vkEnumerateDeviceLayerProperties, if pname:pProperties is `NULL`, then -the number of layer properties available is returned in pname:pPropertyCount. -Otherwise, pname:pPropertyCount must: point to a variable set by the user to -the number of elements in the pname:pProperties array, and on return the -variable is overwritten with the number of structures actually written to -pname:pProperties. If pname:pPropertyCount is less than the -number of layer properties available, at most pname:pPropertyCount -structures will be written. If pname:pPropertyCount is smaller than the -number of layers available, ename:VK_INCOMPLETE will be returned instead of -ename:VK_SUCCESS, to indicate that not all the available layer properties -were returned. +If pname:pProperties is `NULL`, then the number of layer properties available +is returned in pname:pPropertyCount. Otherwise, pname:pPropertyCount must: +point to a variable set by the user to the number of elements in the +pname:pProperties array, and on return the variable is overwritten with the +number of structures actually written to pname:pProperties. If +pname:pPropertyCount is less than the number of layer properties available, at +most pname:pPropertyCount structures will be written. If pname:pPropertyCount +is smaller than the number of layers available, ename:VK_INCOMPLETE will be +returned instead of ename:VK_SUCCESS, to indicate that not all the available +layer properties were returned. The sname:VkLayerProperties structure is defined as: @@ -82,10 +66,9 @@ include::../structs/VkLayerProperties.txt[] * pname:layerName is a null-terminated UTF-8 string specifying the name of the layer. Use this name in the pname:ppEnabledLayerNames array passed - in the slink:VkInstanceCreateInfo and slink:VkDeviceCreateInfo - structures passed to flink:vkCreateInstance and flink:vkCreateDevice, - respectively, to enable this layer for an instance or device. - * pname:specVersion is the {apiname} version the layer was written to, + in the slink:VkInstanceCreateInfo structure to enable this layer for an + instance. + * pname:specVersion is the Vulkan version the layer was written to, encoded as described in the <> section. * pname:implementationVersion is the version of this layer. It is an @@ -95,20 +78,86 @@ include::../structs/VkLayerProperties.txt[] include::../validity/structs/VkLayerProperties.txt[] -Loader implementations may: provide mechanisms outside the {apiname} API for +To enable a layer, the name of the layer should be added to the +pname:ppEnabledLayerNames member of slink:VkInstanceCreateInfo when creating +a sname:VkInstance. + +Loader implementations may: provide mechanisms outside the Vulkan API for enabling specific layers. Layers enabled through such a mechanism are _implicitly enabled_, while layers enabled by including the layer name in -the pname:ppEnabledLayerNames member of slink:VkDeviceCreateInfo are +the pname:ppEnabledLayerNames member of slink:VkInstanceCreateInfo are _explicitly enabled_. Except where otherwise specified, implicitly enabled and explicitly enabled layers differ only in the way they are enabled. Explicitly enabling a layer that is implicitly enabled has no additional effect. +[[extended-functionality-device-layer-deprecation]] +=== Device Layer Deprecation + +Previous versions of this specification distinguished between instance and +device layers. Instance layers were only able to intercept commands that +operate on sname:VkInstance and sname:VkPhysicalDevice, except they were not +able to intercept flink:vkCreateDevice. Device layers were enabled for +individual devices when they were created, and could only intercept commands +operating on that device or its child objects. + +Device-only layers are now deprecated, and this specification no longer +distinguishes between instance and device layers. Layers are enabled during +instance creation, and are able to intercept all commands operating on that +instance or any of its child objects. At the time of deprecation there were no +known device-only layers and no compelling reason to create one. + +In order to maintain compatibility with implementations released prior to +device-layer deprecation, applications should: still enumerate and enable +device layers. The behavior of fname:vkEnumerateDeviceLayerProperties and +valid usage of the pname:ppEnabledLayerNames member of sname:VkDeviceCreateInfo +maximizes compatibility with applications written to work with the previous +requirements. + +Device layers can: be enumerated by calling: + +include::../protos/vkEnumerateDeviceLayerProperties.txt[] + + * pname:pPropertyCount is a pointer to an integer related to the number of + layer properties available or queried. + * pname:pProperties is either `NULL` or a pointer to an array of + slink:VkLayerProperties structures. + +include::../validity/protos/vkEnumerateDeviceLayerProperties.txt[] + +If pname:pProperties is `NULL`, then the number of layer properties available +is returned in pname:pPropertyCount. Otherwise, pname:pPropertyCount must: +point to a variable set by the user to the number of elements in the +pname:pProperties array, and on return the variable is overwritten with the +number of structures actually written to pname:pProperties. If +pname:pPropertyCount is less than the number of layer properties available, at +most pname:pPropertyCount structures will be written. If pname:pPropertyCount +is smaller than the number of layers available, ename:VK_INCOMPLETE will be +returned instead of ename:VK_SUCCESS, to indicate that not all the available +layer properties were returned. + +The list of layers enumerated by fname:vkEnumerateDeviceLayerProperties must: +be exactly the sequence of layers enabled for the instance. The members of +sname:VkLayerProperties for each enumerated layer must: be the same as the +properties when the layer was enumerated by +fname:vkEnumerateInstanceLayerProperties. + +The pname:ppEnabledLayerNames and pname:enabledLayerCount members of +sname:VkDeviceCreateInfo are deprecated and their values must: be ignored by +implementations. However, for compatibility, only an empty list of layers or a +list that exactly matches the sequence enabled at instance creation time are +valid, and validation layers should: issue diagnostics for other cases. + +Regardless of the enabled layer list provided in sname:VkDeviceCreateInfo, the +sequence of layers active for a device will be exactly the sequence of layers +enabled when the parent instance was created. + + [[extended-functionality-extensions]] == Extensions -Extensions may: define new {apiname} commands, structures, and enumerants. +Extensions may: define new Vulkan commands, structures, and enumerants. For compilation purposes, the interfaces defined by registered extensions, including new structures and enumerants as well as function pointer types for new commands, are defined in the Khronos-supplied +vulkan.h+ together @@ -116,14 +165,14 @@ with the core API. However, commands defined by extensions may: not be available for static linking - in which case function pointers to these commands should: be queried at runtime as described in <>. Extensions may: be provided by layers -as well as by a {apiname} implementation. +as well as by a Vulkan implementation. To query the available instance extensions, call: include::../protos/vkEnumerateInstanceExtensionProperties.txt[] * pname:pLayerName is either `NULL` or a pointer to a null-terminated - UTF-8 string naming the instance layer to retrieve extensions from. + UTF-8 string naming the layer to retrieve extensions from. * pname:pPropertyCount is a pointer to an integer related to the number of extension properties available or queried, as described below. * pname:pProperties is either `NULL` or a pointer to an array of @@ -131,12 +180,12 @@ include::../protos/vkEnumerateInstanceExtensionProperties.txt[] include::../validity/protos/vkEnumerateInstanceExtensionProperties.txt[] -When pLayerName parameter is NULL, only extensions provided by the {apiname} +When pLayerName parameter is NULL, only extensions provided by the Vulkan implementation or by implicitly enabled layers are returned. When pname:pLayerName is the name of a layer, the instance extensions provided by that layer are returned. -To enable a instance extension, the name of the extension should be added to +To enable an instance extension, the name of the extension should be added to the pname:ppEnabledExtensionNames member of slink:VkInstanceCreateInfo when creating a sname:VkInstance. @@ -146,7 +195,7 @@ include::../protos/vkEnumerateDeviceExtensionProperties.txt[] * pname:physicalDevice is the physical device that will be queried. * pname:pLayerName is either `NULL` or a pointer to a null-terminated - UTF-8 string naming the device layer to retrieve extensions from. + UTF-8 string naming the layer to retrieve extensions from. * pname:pPropertyCount is a pointer to an integer related to the number of extension properties available or queried, as described below. * pname:pProperties is either `NULL` or a pointer to an array of @@ -154,15 +203,11 @@ include::../protos/vkEnumerateDeviceExtensionProperties.txt[] include::../validity/protos/vkEnumerateDeviceExtensionProperties.txt[] -When pLayerName parameter is NULL, only extensions provided by the {apiname} +When pLayerName parameter is NULL, only extensions provided by the Vulkan implementation or by implicitly enabled layers are returned. When pname:pLayerName is the name of a layer, the device extensions provided by that layer are returned. -To enable a device layer, the name of the layer should be added to the -pname:ppEnabledExtensionNames member of slink:VkDeviceCreateInfo when -creating a sname:VkDevice. - For both flink:vkEnumerateInstanceExtensionProperties and flink:vkEnumerateDeviceExtensionProperties, if pname:pProperties is `NULL`, then the number of extensions properties available is returned in diff --git a/doc/specs/vulkan/chapters/features.txt b/doc/specs/vulkan/chapters/features.txt index 55e0968b..1f259769 100644 --- a/doc/specs/vulkan/chapters/features.txt +++ b/doc/specs/vulkan/chapters/features.txt @@ -4,7 +4,7 @@ [[features]] = Features, Limits, and Formats -{apiname} is designed to support a wide range of hardware and as such there +Vulkan is designed to support a wide range of hardware and as such there are a number of features, limits, and formats which are not supported on all hardware. Features describe functionality that is not required: and which must: be explicitly enabled. Limits describe implementation-dependent @@ -20,7 +20,7 @@ by the implementation. The features and limits are reported via basic structures (that is slink:VkPhysicalDeviceFeatures and slink:VkPhysicalDeviceLimits). It is expected that when new features or limits are added in a future -{apiname} version, new structure(s) and entry point(s) will be added as +Vulkan version, new structure(s) and entry point(s) will be added as necessary to query these. New functionality added by <> is not expected to modify the core feature and limit structures. @@ -30,7 +30,7 @@ modify the core feature and limit structures. == Features The Specification defines a set of fine-grained features that are not -required:, but may: be supported by a {apiname} implementation. Support for +required:, but may: be supported by a Vulkan implementation. Support for features is reported and enabled on a per-feature basis. Features are properties of the physical device. @@ -565,7 +565,7 @@ include::../validity/structs/VkPhysicalDeviceFeatures.txt[] [[features-features-requirements]] === Feature Requirements -All {apiname} graphics implementations must: support the following features: +All Vulkan graphics implementations must: support the following features: * robustBufferAccess. @@ -1233,7 +1233,7 @@ include::../validity/structs/VkPhysicalDeviceLimits.txt[] [[features-limits-minmax]] === Limit Requirements -The following table specifies the required minimum/maximum for all {apiname} +The following table specifies the required minimum/maximum for all Vulkan graphics implementations. Where a limit corresponds to a fine-grained device feature which is optional:, the feature name is listed with two required limits, one when the feature is supported and one when it is not @@ -3097,11 +3097,16 @@ ename:VK_FORMAT_FEATURE_BLIT_DST_BIT:: fname:vkCmdBlitImage command. ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT:: - sname:VkImage can: be used with a sampler that has either of + If ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT is also set, + sname:VkImageView can: be used with a sampler that has either of pname:magFilter or pname:minFilter set to ename:VK_FILTER_LINEAR, - or pname:mipmapMode set to ename:VK_SAMPLER_MIPMAP_MODE_LINEAR. This bit - must: only be exposed for formats that also support the - ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT. + or pname:mipmapMode set to ename:VK_SAMPLER_MIPMAP_MODE_LINEAR. + If ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT is also set, sname:VkImage + can be used as the pname:srcImage to flink:vkCmdBlitImage + with a pname:filter of ename:VK_FILTER_LINEAR. This bit must: only be + exposed for formats that also support the + ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT or + ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT. + If the format being queried is a depth/stencil format, this bit only indicates that the depth aspect (not the stencil aspect) supports linear filtering, diff --git a/doc/specs/vulkan/chapters/fragops.txt b/doc/specs/vulkan/chapters/fragops.txt index 2b833451..710be615 100644 --- a/doc/specs/vulkan/chapters/fragops.txt +++ b/doc/specs/vulkan/chapters/fragops.txt @@ -432,7 +432,7 @@ include::../enums/VkCompareOp.txt[] * ename:VK_COMPARE_OP_ALWAYS: the test always passes. As described earlier, the pname:failOp, pname:passOp, and pname:depthFailOp -members of pname:VkStencilOpState indicate what happens to the stored +members of slink:VkStencilOpState indicate what happens to the stored stencil value if this or certain subsequent tests fail or pass. Each enum is of type elink:VkStencilOp, which is defined as: diff --git a/doc/specs/vulkan/chapters/framebuffer.txt b/doc/specs/vulkan/chapters/framebuffer.txt index fd2713b9..1ad5a5a6 100644 --- a/doc/specs/vulkan/chapters/framebuffer.txt +++ b/doc/specs/vulkan/chapters/framebuffer.txt @@ -326,7 +326,7 @@ include::../enums/VkLogicOp.txt[] <<< -The logical operations supported by {apiname} are summarized in the +The logical operations supported by Vulkan are summarized in the following table in which * latexmath:[$\lnot$] is bitwise invert, diff --git a/doc/specs/vulkan/chapters/fundamentals.txt b/doc/specs/vulkan/chapters/fundamentals.txt index 15dfb32f..98d52896 100644 --- a/doc/specs/vulkan/chapters/fundamentals.txt +++ b/doc/specs/vulkan/chapters/fundamentals.txt @@ -4,7 +4,7 @@ [[fundamentals]] = Fundamentals -This chapter introduces fundamental concepts including the {apiname} +This chapter introduces fundamental concepts including the Vulkan architecture and execution model, API syntax, queues, pipeline configurations, numeric representation, state and state queries, and the different types of objects and shaders. It provides a framework for @@ -55,9 +55,9 @@ external standards such as the Linux Standard Base. [[fundamentals-execmodel]] == Execution Model -This section outlines the execution model of a {apiname} system. +This section outlines the execution model of a Vulkan system. -{apiname} exposes one or more _devices_, +Vulkan exposes one or more _devices_, each of which exposes one or more _queues_ which may: process work asynchronously to one another. The set of queues supported by a device is partitioned into _families_. Each family supports one or more types of @@ -94,8 +94,8 @@ an implementation include: On other architectures, there may: only be a single heap that can: be used for any purpose. -A {apiname} application controls a set of devices through the submission of -command buffers which have recorded device commands issued via {apiname} +A Vulkan application controls a set of devices through the submission of +command buffers which have recorded device commands issued via Vulkan library calls. The content of command buffers is specific to the underlying hardware and is opaque to the application. Once constructed, a command buffer can: be submitted once or many times to a queue for execution. @@ -115,7 +115,7 @@ the responsibility of the application. [[fundamentals-queueoperation]] === Queue Operation -{apiname} queues provide an interface to the execution engines of a device. +Vulkan queues provide an interface to the execution engines of a device. Commands are recorded into command buffers ahead of execution time. These command buffers are then submitted to queues for execution. Command buffers submitted to a single queue are played back in the order they were @@ -128,7 +128,7 @@ specified. Therefore, the application must: explicitly synchronize work between queues when needed. In order to control relative order of execution of work both within a queue -and across multiple queues, {apiname} provides several synchronization +and across multiple queues, Vulkan provides several synchronization primitives, which include _semaphores_, _events_, _pipeline barriers_, and _fences_. These are covered in depth in <>. In broad terms, semaphores are used to synchronize work @@ -142,7 +142,7 @@ to synchronize work between the device and the host. ==== Implementations have significant freedom to overlap execution of work submitted to a queue, and this is common due to deep pipelining and -parallelism in {apiname} devices. +parallelism in Vulkan devices. ==== Work is submitted to queues using queue submission commands that typically @@ -246,8 +246,8 @@ command buffers to execute. This is covered in more detail in [[fundamentals-objectmodel-overview]] == Object Model -The devices, queues, and other entities in {apiname} are represented by -{apiname} objects. At the API level, all objects are referred to by handles. +The devices, queues, and other entities in Vulkan are represented by +Vulkan objects. At the API level, all objects are referred to by handles. There are two classes of handles, dispatchable and non-dispatchable. _Dispatchable_ handle types are a pointer to an opaque type. This pointer may: be used by layers as part of intercepting API commands, and thus each @@ -280,19 +280,19 @@ ftext:vkDestroy* and ftext:vkFree* commands, respectively. Objects that are allocated (rather than created) take resources from an existing pool object or memory heap, and when freed return resources to that pool or heap. While object creation and destruction are generally expected -to be low-frequency occurences during runtime, allocating and freeing +to be low-frequency occurrences during runtime, allocating and freeing objects can: occur at high frequency. Pool objects help accommodate improved performance of the allocations and frees. -It is an application's responsibility to track the lifetime of {apiname} +It is an application's responsibility to track the lifetime of Vulkan objects, and not to destroy them while they are still in use. -Application-owned memory is immediately consumed by any {apiname} command it +Application-owned memory is immediately consumed by any Vulkan command it is passed into. The application can: alter or free this memory as soon as the commands that consume it have returned. The following object types are consumed when they are passed into a -{apiname} command and not further accessed by the objects they are used to +Vulkan command and not further accessed by the objects they are used to create. They can: be destroyed at any time they are not in use by an API command: @@ -306,11 +306,11 @@ sets mustnot: be updated with flink:vkUpdateDescriptorSets after the descriptor set layout has been destroyed. Otherwise, descriptor set layouts can: be destroyed any time they are not in use by an API command. -The application mustnot: destroy any other type of {apiname} object until +The application mustnot: destroy any other type of Vulkan object until all uses of that object by the device (such as via command buffer execution) have completed. -The following {apiname} objects can: be destroyed when no command buffers +The following Vulkan objects can: be destroyed when no command buffers using the object are executing: * sname:VkEvent @@ -328,7 +328,7 @@ using the object are executing: * sname:VkDeviceMemory * sname:VkDescriptorSet -The following {apiname} objects can: be destroyed when work on the queue +The following Vulkan objects can: be destroyed when work on the queue that uses the object has been completed: * sname:VkFence @@ -354,7 +354,7 @@ sname:VkDescriptorPool objects are parents of sname:VkDescriptorSet objects. sname:VkDevice objects are parents of many object types (all that take a sname:VkDevice as a parameter to their creation). -The following {apiname} objects have specific restrictions for when they +The following Vulkan objects have specific restrictions for when they can: be destroyed: * sname:VkQueue objects cannot: be explicitly destroyed. Instead, they are @@ -399,32 +399,32 @@ can: be destroyed: [[fundamentals-commandsyntax]] == Command Syntax and Duration -The Specification describes {apiname} commands as functions or procedures +The Specification describes Vulkan commands as functions or procedures using C99 syntax. Language bindings for other languages such as C++ and Javascript may: allow for stricter parameter passing, or object-oriented interfaces. -With few exceptions, {apiname} uses the standard C types for parameters (int +With few exceptions, Vulkan uses the standard C types for parameters (int types from stdint.h, etc). Exceptions to this are using basetype:VkResult for return values, using basetype:VkBool32 for boolean values, basetype:VkDeviceSize for sizes and offsets pertaining to device address space, and basetype:VkFlags for passing bits or sets of bits of predefined values. -Commands that create {apiname} objects are of the form ftext:vkCreate* and +Commands that create Vulkan objects are of the form ftext:vkCreate* and take stext:Vk*CreateInfo structures with the parameters needed to create the -object. These {apiname} objects are destroyed with commands of the form +object. These Vulkan objects are destroyed with commands of the form ftext:vkDestroy*. -The last in-parameter to each command that creates or destroys a {apiname} +The last in-parameter to each command that creates or destroys a Vulkan object is pname:pAllocator. The pname:pAllocator parameter can: be set to a non-`NULL` value such that allocations for the given object are delegated to an application provided callback; refer to the <> chapter for further details. -Commands that allocate {apiname} objects owned by pool objects are of the +Commands that allocate Vulkan objects owned by pool objects are of the form ftext:vkAllocate*, and take stext:Vk*AllocateInfo structures. These -{apiname} objects are freed with commands of the form ftext:vkFree*. +Vulkan objects are freed with commands of the form ftext:vkFree*. These objects do not take allocators; if host memory is needed, they will use the allocator that was specified when their parent pool was created. @@ -438,21 +438,21 @@ and/or outside a render pass, and in one or more of the supported queue types. These restrictions are documented together with the definition of each such command. -The _duration_ of a {apiname} command refers to the interval between calling +The _duration_ of a Vulkan command refers to the interval between calling the command and its return to the caller. [[fundamentals-threadingbehavior]] == Threading Behavior -{apiname} is intended to provide scalable performance when used on multiple +Vulkan is intended to provide scalable performance when used on multiple host threads. All commands support being called concurrently from multiple threads, but certain parameters, or components of parameters are defined to be _externally synchronized_. This means that the caller must: guarantee that no more than one thread is using such a parameter at a given time. -More precisely, {apiname} commands use simple stores to update software -structures representing {apiname} objects. A parameter declared as +More precisely, Vulkan commands use simple stores to update software +structures representing Vulkan objects. A parameter declared as externally synchronized may: have its software structures updated at any time during the host execution of the command. If two commands operate on the same object and at least one of the commands @@ -468,7 +468,7 @@ Memory barriers are particularly relevant on the ARM CPU architecture which is more weakly ordered than many developers are accustomed to from x86/x64 programming. Fortunately, most higher-level synchronization primitives (like the pthread library) perform memory barriers as a part of -mutual exclusion, so mutexing {apiname} objects via these primitives will +mutual exclusion, so mutexing Vulkan objects via these primitives will have the desired effect. ==== @@ -513,11 +513,11 @@ include::../hostsynctable/implicit.txt[] [[fundamentals-errors]] == Errors -{apiname} is a layered API. The lowest layer is the core {apiname} layer, as +Vulkan is a layered API. The lowest layer is the core Vulkan layer, as defined by this Specification. The application can: use additional layers above the core for debugging, validation, and other purposes. -One of the core principles of {apiname} is that building and submitting +One of the core principles of Vulkan is that building and submitting command buffers should: be highly efficient. Thus error checking and validation of state in the core layer is minimal, although more rigorous validation can: be enabled through the use of layers. @@ -602,18 +602,21 @@ ename:VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO. The values ename:VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO and ename:VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO are reserved for internal -use by the loader, and don't have corresponding {apiname} structures in this +use by the loader, and don't have corresponding Vulkan structures in this specification. Any parameter that is a structure containing a basetype:void* ptext:pNext -member must: have a value of ptext:pNext that is either `NULL`, or points to a -valid structure defined by an extension. If that extension is supported by -the implementation, then it must: be enabled. -Any component of the implementation (the loader, any enabled layers, and -drivers) must: ignore extension structures with pname:sType values defined -by extensions not supported by that component. +member must: have a value of ptext:pNext that is either `NULL`, or points to +a valid structure defined by an extension, containing ptext:sType and +ptext:pNext members as described in the <> section. If that extension is supported by the +implementation, then it must: be enabled. Any component of the +implementation (the loader, any enabled layers, and drivers) must: skip +over, without processing (other than reading the pname:sType and pname:pNext +members) any chained structures with pname:sType values not defined by +extensions supported by that component. -Extension structures are not described in the base {apiname} specification, +Extension structures are not described in the base Vulkan specification, but either in layered specifications incorporating those extensions, or in separate vendor-provided documents. @@ -628,8 +631,8 @@ sections. [[fundamentals-returncodes]] === Return Codes -While the core {apiname} API is not designed to capture incorrect usage, -some circumstances still require return codes. Commands in {apiname} return +While the core Vulkan API is not designed to capture incorrect usage, +some circumstances still require return codes. Commands in Vulkan return their status via return codes that are in one of two categories: * Successful completion codes are returned when a command needs to @@ -639,7 +642,7 @@ their status via return codes that are in one of two categories: failure that could only be detected at run time. All run time error codes are negative values. -All return codes in {apiname} are reported via basetype:VkResult return +All return codes in Vulkan are reported via basetype:VkResult return values. The possible codes are: include::../enums/VkResult.txt[] @@ -681,7 +684,7 @@ include::VK_KHR_swapchain/VkResultSuccessDescriptions_swapchain.txt[] * ename:VK_ERROR_FEATURE_NOT_PRESENT A requested feature is not supported. * ename:VK_ERROR_INCOMPATIBLE_DRIVER - The requested version of {apiname} is not supported by the driver or + The requested version of Vulkan is not supported by the driver or is otherwise incompatible for implementation-specific reasons. * ename:VK_ERROR_TOO_MANY_OBJECTS Too many objects of the type have already been created. @@ -692,9 +695,9 @@ include::VK_KHR_swapchain/VkResultErrorDescriptions_swapchain.txt[] include::VK_KHR_display_swapchain/VkResultErrorDescriptions_display_swapchain.txt[] If a command returns a run time error, it will leave any result pointers -unmodified. +unmodified, unless other behavior is explicitly defined in the specification. -Out of memory errors do not damage any currently existing {apiname} objects. +Out of memory errors do not damage any currently existing Vulkan objects. Objects that have already been successfully created can: still be used by the application. @@ -711,7 +714,7 @@ Implementations normally perform computations in floating-point, and must: meet the range and precision requirements defined under ``Floating-Point Computation'' below. -These requirements only apply to computations performed in {apiname} +These requirements only apply to computations performed in Vulkan operations outside of shader execution, such as texture image specification and sampling, and per-fragment operations. Range and precision requirements during shader execution differ and are specified @@ -720,7 +723,7 @@ Instructions>> section. In some cases, the representation and/or precision of operations is implicitly limited by the specified format of vertex or texel -data consumed by {apiname}. Specific floating-point formats are +data consumed by Vulkan. Specific floating-point formats are described later in this section. @@ -769,12 +772,12 @@ arithmetic operations such as latexmath:[$0 / 0$]. Implementations may: support latexmath:[$Inf$]s and latexmath:[$NaN$]s in their floating-point computations. -Any representable floating-point value is legal as input to a {apiname} +Any representable floating-point value is legal as input to a Vulkan command that requires floating-point data. The result of providing a value that is not a floating-point number to such a command is unspecified, but -mustnot: lead to {apiname} interruption or termination. In <> +mustnot: lead to Vulkan interruption or termination. In <> arithmetic, for example, providing a negative zero or a denormalized number -to an {apiname} command must: yield deterministic results, while providing a +to an Vulkan command must: yield deterministic results, while providing a latexmath:[$NaN$] or latexmath:[$Inf$] yields unspecified results. @@ -786,11 +789,11 @@ latexmath:[$NaN$] or latexmath:[$Inf$] yields unspecified results. section of the Khronos Data Format Specification. Any representable 16-bit floating-point value is legal as input to a -{apiname} command that accepts 16-bit floating-point data. The result of +Vulkan command that accepts 16-bit floating-point data. The result of providing a value that is not a floating-point number (such as latexmath:[$Inf$] or latexmath:[$NaN$]) to such a command is -unspecified, but mustnot: lead to {apiname} interruption or termination. -Providing a denormalized number or negative zero to {apiname} must: yield +unspecified, but mustnot: lead to Vulkan interruption or termination. +Providing a denormalized number or negative zero to Vulkan must: yield deterministic results. @@ -814,11 +817,11 @@ converted to positive infinity; and both positive and negative latexmath:[$NaN$] are converted to positive latexmath:[$NaN$]. Any representable unsigned 11-bit floating-point value is legal as input -to a {apiname} command that accepts 11-bit floating-point data. The +to a Vulkan command that accepts 11-bit floating-point data. The result of providing a value that is not a floating-point number (such as latexmath:[$Inf$] or latexmath:[$NaN$]) to such a command is -unspecified, but mustnot: lead to {apiname} interruption or termination. -Providing a denormalized number to {apiname} must: yield deterministic +unspecified, but mustnot: lead to Vulkan interruption or termination. +Providing a denormalized number to Vulkan must: yield deterministic results. @@ -842,11 +845,11 @@ converted to positive infinity; and both positive and negative latexmath:[$NaN$] are converted to positive latexmath:[$NaN$]. Any representable unsigned 10-bit floating-point value is legal as input to -a {apiname} command that accepts 10-bit floating-point data. The result of +a Vulkan command that accepts 10-bit floating-point data. The result of providing a value that is not a floating-point number (such as latexmath:[$Inf$] or latexmath:[$NaN$]) to such a command is unspecified, -but mustnot: lead to {apiname} interruption or termination. Providing a -denormalized number to {apiname} must: yield deterministic results. +but mustnot: lead to Vulkan interruption or termination. Providing a +denormalized number to Vulkan must: yield deterministic results. [[fundamentals-general]] @@ -854,7 +857,7 @@ denormalized number to {apiname} must: yield deterministic results. Some calculations require division. In such cases (including implied divisions performed by vector normalization), division by zero produces an -unspecified result but mustnot: lead to {apiname} interruption or +unspecified result but mustnot: lead to Vulkan interruption or termination. @@ -911,7 +914,7 @@ representation, one value (latexmath:[$-128$] in the example) is outside the representable range, and must: be clamped before use. This equation is used everywhere that signed normalized fixed-point values are converted to floating-point, including for all signed normalized fixed-point parameters -in {apiname} commands, such as vertex attribute values, as well as for +in Vulkan commands, such as vertex attribute values, as well as for specifying texture or framebuffer values using signed normalized fixed-point. @@ -967,7 +970,7 @@ or framebuffer values using floating-point. [[fundamentals-versionnum]] == API Version Numbers and Semantics -The {apiname} version number is used in several places in the API. In each +The Vulkan version number is used in several places in the API. In each such use, the API _major version number_, _minor version number_, and _patch version number_ are packed into a 32-bit integer as follows: @@ -975,7 +978,7 @@ version number_ are packed into a 32-bit integer as follows: * The minor version number is a 10-bit integer packed into bits 21-12. * The patch version number is a 12-bit integer packed into bits 11-0. -Differences in any of the {apiname} version numbers indicates a change to +Differences in any of the Vulkan version numbers indicates a change to the API in some way, with each part of the version number indicating a different scope of changes. @@ -1005,7 +1008,7 @@ significant modification to an application in order for it to function. [[fundamentals-common-objects]] == Common Object Types -Some types of {apiname} objects are used in many different structures and +Some types of Vulkan objects are used in many different structures and command parameters, and are described here. These types include _offsets_, _extents_, and _rectangles_. diff --git a/doc/specs/vulkan/chapters/fxvertex.txt b/doc/specs/vulkan/chapters/fxvertex.txt index 651acab2..9fd3d8fb 100644 --- a/doc/specs/vulkan/chapters/fxvertex.txt +++ b/doc/specs/vulkan/chapters/fxvertex.txt @@ -6,7 +6,7 @@ Some implementations have specialized fixed-function hardware for fetching and format-converting vertex input data from buffers, rather than performing -the fetch as part of the vertex shader. {apiname} includes a vertex +the fetch as part of the vertex shader. Vulkan includes a vertex attribute fetch stage in the graphics pipeline in order to take advantage of this. diff --git a/doc/specs/vulkan/chapters/initialization.txt b/doc/specs/vulkan/chapters/initialization.txt index 100a64d1..c9f5d396 100644 --- a/doc/specs/vulkan/chapters/initialization.txt +++ b/doc/specs/vulkan/chapters/initialization.txt @@ -4,14 +4,14 @@ [[initialization]] = Initialization -Before using {apiname}, an application must: initialize it by loading the -{apiname} commands, and creating a sname:VkInstance object. +Before using Vulkan, an application must: initialize it by loading the +Vulkan commands, and creating a sname:VkInstance object. [[initialization-functionpointers]] == Command Function Pointers -{apiname} commands are not necessarily exposed statically on a platform. -Function pointers for all {apiname} commands can: be obtained with the +Vulkan commands are not necessarily exposed statically on a platform. +Function pointers for all Vulkan commands can: be obtained with the command: include::../protos/vkGetInstanceProcAddr.txt[] @@ -27,8 +27,8 @@ specific manner. Typically, the loader library will export this command as a function symbol, so applications can: link against the loader library, or load it dynamically and look up the symbol using platform-specific APIs. Loaders are encouraged to export function symbols for all other core -{apiname} commands as well; if this is done, then applications that use only -the core {apiname} commands have no need to use fname:vkGetInstanceProcAddr. +Vulkan commands as well; if this is done, then applications that use only +the core Vulkan commands have no need to use fname:vkGetInstanceProcAddr. Function pointers to commands that don't operate on a specific instance can: be obtained by using this command with pname:instance equal to `NULL`. The @@ -43,7 +43,7 @@ commands that operate on pname:instance or a child of pname:instance can: be obtained. The returned function pointer must: only be called with a dispatchable object (the first parameter) that is a child of pname:instance. -If pname:pName is not the name of a core {apiname} command, or is an +If pname:pName is not the name of a core Vulkan command, or is an extension command for any extension not supported by any available layer or implementation, then fname:vkGetInstanceProcAddr will return `NULL`. @@ -66,7 +66,7 @@ it. ==== endif::editing-notes[] -In order to support systems with multiple {apiname} implementations +In order to support systems with multiple Vulkan implementations comprising heterogeneous collections of hardware and software, the function pointers returned by fname:vkGetInstanceProcAddr may: point to dispatch code, which calls a different real implementation for different @@ -79,13 +79,13 @@ command: include::../protos/vkGetDeviceProcAddr.txt[] * pname:device is the logical device that provides the function pointer. - * pname:pName is the name of any {apiname} command whose first parameter + * pname:pName is the name of any Vulkan command whose first parameter is one of ** sname:VkDevice ** sname:VkQueue ** sname:VkCommandBuffer -If pname:pName is not the name of one of these {apiname} commands, and is +If pname:pName is not the name of one of these Vulkan commands, and is not the name of an extension command belonging to an extension enabled for pname:device, then fname:vkGetDeviceProcAddr will return `NULL`. @@ -94,9 +94,9 @@ include::../validity/protos/vkGetDeviceProcAddr.txt[] [[initialization-instances]] == Instances -There is no global state in {apiname} and all per-application state is +There is no global state in Vulkan and all per-application state is stored in a sname:VkInstance object. Creating a sname:VkInstance object -initializes the {apiname} library and allows the application to pass +initializes the Vulkan library and allows the application to pass information about itself to the implementation. To create an instance object, call: @@ -160,7 +160,7 @@ include::../structs/VkApplicationInfo.txt[] * pname:engineVersion is an unsigned integer variable containing the developer-supplied version number of the engine used to create the application. - * pname:apiVersion is the version of the {apiname} API against which the + * pname:apiVersion is the version of the Vulkan API against which the application expects to run, encoded as described in the <> section. If pname:apiVersion is 0 the implementation must: ignore it, otherwise diff --git a/doc/specs/vulkan/chapters/interfaces.txt b/doc/specs/vulkan/chapters/interfaces.txt index 1e09f03b..02fe23b0 100644 --- a/doc/specs/vulkan/chapters/interfaces.txt +++ b/doc/specs/vulkan/chapters/interfaces.txt @@ -643,6 +643,11 @@ out according to the following rules. + * Any code:ArrayStride or code:MatrixStride decoration must: be an integer multiple of the base alignment of the array or matrix from above. ++ + * The code:Offset Decoration of a member immediately following a structure or + an array must: be greater than or equal to the next multiple of the base + alignment of that structure or array. + [NOTE] .Note @@ -742,7 +747,7 @@ The z component of code:FragCoord is the interpolated depth value of the primitive, and the w component is the interpolated latexmath:[$\frac{1}{w}$]. + -The code:FragCoord decoration is only supported in fragment shaders. The +The code:FragCoord decoration must: be used only within fragment shaders. The code:Centroid interpolation decoration is ignored on code:FragCoord. + code:FragCoord must: be declared as a four-component vector of 32-bit @@ -760,7 +765,7 @@ is an execution path through the shader that does not set code:FragDepth, then the fragment's depth value is undefined for executions of the shader that take that path. + -The code:FragDepth decoration is only supported in fragment shaders. +The code:FragDepth decoration must: be used only within fragment shaders. + code:FragDepth must: be declared as a scalar 32-bit floating-point value. @@ -797,7 +802,8 @@ workgroup. The value in this variable is equal to the index of the local workgroup multiplied by the size of the local workgroup plus code:LocalInvocationID. + -The code:GlobalInvocationID decoration is only supported in compute shaders. +The code:GlobalInvocationID decoration must: be used only within compute +shaders. + code:GlobalInvocationID must: be declared as a three-component vector of 32-bit integers. @@ -810,7 +816,8 @@ the shader that is produced to satisfy internal requirements such as the generation of derivatives. + -- -The code:HelperInvocation decoration is only supported in fragment shaders. +The code:HelperInvocation decoration must: be used only within fragment +shaders. code:HelperInvocation must: be declared as a scalar 32-bit integer. @@ -877,26 +884,34 @@ vertices of a given primitive. When used in a fragment shader, an input variable decorated with code:Layer contains the layer index of the primitive that the fragment invocation belongs to. + -The code:Layer decoration is only supported in geometry and fragment +The code:Layer decoration must: be used only within geometry and fragment shaders. + code:Layer must: be declared as a scalar 32-bit integer. code:LocalInvocationID:: -This variable contains the location of the current compute shader invocation -within the local workgroup. The range of possible values for each component -of LocalInvocationID range from zero through the size of the workgroup in that -dimension minus one. If the size of the workgroup in a particular dimension is -one, then LocalInvocationID in that dimension will be zero. That is, if the -workgroup is effectively two-dimensional, then pname:LocalInvocationID.z will -be zero, and if the workgroup is one-dimensional, then both -pname:LocalInvocationID.y and pname:LocalInvocationID.z will be zero. +The code:LocalInvocationID decoration can: be applied to a code:uvec3 input +variable in a compute shader, in which case it will contain the location of the +current compute shader invocation within the local workgroup. The possible +values for each component of code:LocalInvocationID range from zero through to +the size of the workgroup in that dimension minus one. + -The code:LocalInvocationID decoration is only supported in compute shaders. +The code:LocalInvocationID decoration must: be used only within compute +shaders. + -code:LocalInvocationID must: be declared as a three-component vector of -32-bit integers. +code:LocalInvocationID must: be declared as a three-component vector of 32-bit +integers. + +[NOTE] +.Note +==== +If the size of the workgroup in a particular dimension is one, then the +code:LocalInvocationID in that dimension will be zero. If the workgroup is +effectively two-dimensional, then code:LocalInvocationID.z will be zero. +If the workgroup is effectively one-dimensional, then both +code:LocalInvocationID.y and code:LocalInvocationID.z will be zero. +==== code:NumWorkGroups:: @@ -907,7 +922,7 @@ to. It reflects the values passed to a call to flink:vkCmdDispatch or through the structure consumed by the execution of flink:vkCmdDispatchIndirect. + -The code:NumWorkGroups decoration is only supported in compute shaders. +The code:NumWorkGroups decoration must: be used only within compute shaders. + code:NumWorkGroups must: be declared as a three-component vector of 32-bit integers. @@ -923,7 +938,7 @@ If a specialization constant or a constant is decorated with the code:WorkgroupSize decoration, this must: take precedence over any execution mode set for code:LocalSize. + -The code:WorkgroupSize decoration is only supported in compute shaders. +The code:WorkgroupSize decoration must: be used only within compute shaders. + code:WorkgroupSize must: be declared as a three-component vector of 32-bit integers. @@ -936,8 +951,8 @@ vertices in the input patch being processed by the shader. A single tessellation control or evaluation shader can: read patches of differing sizes, so the code:PatchVertices variable may: differ between patches. + -The code:PatchVertices decoration is only supported in tessellation control -and evaluation shaders. +The code:PatchVertices decoration must: be used only within tessellation +control and evaluation shaders. + code:PatchVertices must: be declared as scalar 32-bit integer. @@ -951,7 +966,7 @@ Point Rasterization>>. If the primitive the fragment shader invocation belongs to is not a point, then code:PointCoord is undefined. + -- -The code:PointCoord decoration is only supported in fragment shaders. +The code:PointCoord decoration must: be used only within fragment shaders. code:PointCoord must: be declared as two-component vector of 32-bit floating-point values. @@ -1076,7 +1091,7 @@ shader entry point's interface does not include an output variable decorated with code:SampleMask, the sample mask has no effect on the processing of a fragment. + -The code:SampleMask decoration is only supported in fragment shaders. +The code:SampleMask decoration must: be used only within fragment shaders. + code:SampleMask must: be declared as an array of 32-bit integers. @@ -1089,7 +1104,7 @@ fragment shader entry point's interface includes an input variable decorated with code:SamplePosition, per-sample shading is enabled for draws that use that fragment shader. + -The code:SamplePosition decoration is only supported in fragment shaders. +The code:SamplePosition decoration must: be used only within fragment shaders. + code:SamplePosition must: be declared as a two-component vector of floating-point values. @@ -1103,7 +1118,7 @@ and w are in the range latexmath:[$[0,1\]$] and vary linearly across the primitive being subdivided. For the tessellation modes of code:Quads or code:IsoLines, the third component is always zero. + -The code:TessellationCoord decoration is only available to tessellation +The code:TessellationCoord decoration must: be used only within tessellation evaluation shaders. + code:TessellationCoord must: be declared as three-component vector of 32-bit @@ -1119,7 +1134,7 @@ tessellation evaluation shaders. When applied to an input variable in a tessellation evaluation shader, the shader can: read the value written by the tessellation control shader. + -The code:TessellationLevelOuter decoration is not available outside +The code:TessellationLevelOuter decoration must: be used only within tessellation control and evaluation shaders. + code:TessellationLevelOuter must: be declared as an array of size two, @@ -1135,7 +1150,7 @@ tessellation evaluation shaders. When applied to an input variable in a tessellation evaluation shader, the shader can: read the value written by the tessellation control shader. + -The code:TessellationLevelInner decoration is not available outside +The code:TessellationLevelInner decoration must: be used only within tessellation control and evaluation shaders. + code:TessellationLevelInner must: be declared as an array of size four, @@ -1156,8 +1171,7 @@ consumed by flink:vkCmdDrawIndexedIndirect. + code:VertexIndex starts at the same starting value for each instance. + -The code:VertexIndex decoration mustnot: be used in any shader stage other -than vertex. +The code:VertexIndex decoration must: be used only within vertex shaders. + code:VertexIndex must: be declared as a 32-bit integer. @@ -1176,8 +1190,8 @@ in a fragment shader, an input variable decorated with code:ViewportIndex contains the viewport index of the primitive that the fragment invocation belongs to. + -The code:ViewportIndex decoration is only supported in geometry and fragment -shaders. +The code:ViewportIndex decoration must: be used only within geometry and +fragment shaders. + code:ViewportIndex must: be declared as a 32-bit integer. @@ -1190,7 +1204,7 @@ Each component ranges from zero to the values of the parameters passed into flink:vkCmdDispatch or read from the sname:VkDispatchIndirectCommand structure read through a call to flink:vkCmdDispatchIndirect. + -The code:WorkGroupID decoration is only supported in compute shaders. +The code:WorkGroupID decoration must: be used only within compute shaders. + code:WorkGroupID must: be declared as a three-component vector of 32-bit integers. diff --git a/doc/specs/vulkan/chapters/introduction.txt b/doc/specs/vulkan/chapters/introduction.txt index 3eb1031e..7fcac7cc 100644 --- a/doc/specs/vulkan/chapters/introduction.txt +++ b/doc/specs/vulkan/chapters/introduction.txt @@ -7,23 +7,23 @@ This chapter is Informative except for the sections on Terminology and Normative References. -This document, referred to as the ``{apiname} Specification'' or just the -``Specification'' hereafter, describes the {apiname} graphics system: what +This document, referred to as the ``Vulkan Specification'' or just the +``Specification'' hereafter, describes the Vulkan graphics system: what it is, how it acts, and what is required to implement it. We assume that the reader has at least a rudimentary understanding of computer graphics. This means familiarity with the essentials of computer graphics algorithms and terminology as well as with modern GPUs (Graphic Processing Units). The canonical version of the Specification is available in the official -{apiname} Registry, located at URL +Vulkan Registry, located at URL http://www.khronos.org/registry/vulkan/ [[introduction-whatis]] -== What is the {apiname} Graphics System? +== What is the Vulkan Graphics System? -{apiname} is an API (Application Programming Interface) for graphics and +Vulkan is an API (Application Programming Interface) for graphics and compute hardware. The API consists of many commands that allow a programmer to specify shader programs, compute kernels, objects, and operations involved in producing high-quality graphical images, specifically @@ -31,18 +31,18 @@ color images of three-dimensional objects. [[introduction-programmer]] -=== The Programmer's View of {apiname} +=== The Programmer's View of Vulkan -To the programmer, {apiname} is a set of commands that allow the +To the programmer, Vulkan is a set of commands that allow the specification of _shader programs_ or _shaders_, _kernels_, data used by -kernels or shaders, and state controlling aspects of {apiname} outside the +kernels or shaders, and state controlling aspects of Vulkan outside the scope of shaders. Typically, the data represents geometry in two or three dimensions and texture images, while the shaders and kernels control the processing of the data, rasterization of the geometry, and the lighting and shading of _fragments_ generated by rasterization, resulting in the rendering of geometry into the framebuffer. -A typical {apiname} program begins with platform-specific calls to open a +A typical Vulkan program begins with platform-specific calls to open a window or otherwise prepare a display device onto which the program will draw. Then, calls are made to open _queues_ to which _command buffers_ are submitted. The command buffers contain lists of commands which will be @@ -56,24 +56,24 @@ transfer the resulting image to a display device or window. [[introduction-implementor]] -=== The Implementor's View of {apiname} +=== The Implementor's View of Vulkan -To the implementor, {apiname} is a set of commands that allow the +To the implementor, Vulkan is a set of commands that allow the construction and submission of command buffers to a device. Modern devices -accelerate virtually all {apiname} operations, storing data and framebuffer +accelerate virtually all Vulkan operations, storing data and framebuffer images in high-speed memory and executing shaders in dedicated GPU processing resources. The implementor's task is to provide a software library on the host which -implements the {apiname} API, while mapping the work for each {apiname} +implements the Vulkan API, while mapping the work for each Vulkan command to the graphics hardware as appropriate for the capabilities of the device. [[introduction-ourview]] -=== Our View of {apiname} +=== Our View of Vulkan -We view {apiname} as a pipeline having some programmable stages and some +We view Vulkan as a pipeline having some programmable stages and some state-driven fixed-function stages that are invoked by a set of specific drawing operations. We expect this model to result in a specification that satisfies the needs of both programmers and implementors. It does not, @@ -86,7 +86,7 @@ efficient than the one specified. [[introduction-bugs]] == Filing Bug Reports -Issues with and bug reports on the {apiname} Specification and the API +Issues with and bug reports on the Vulkan Specification and the API Registry can: be filed in the Khronos Vulkan Github repository, located at URL @@ -173,7 +173,7 @@ endif::editing-notes[] == Normative References Normative references are references to external documents or resources to -which implementers of {apiname} must: comply. +which implementers of Vulkan must: comply. [[IEEE 754]]:: _IEEE Standard for Floating-Point Arithmetic_, IEEE Std 754-2008, diff --git a/doc/specs/vulkan/chapters/memory.txt b/doc/specs/vulkan/chapters/memory.txt index 0ba4c388..cc8f7505 100644 --- a/doc/specs/vulkan/chapters/memory.txt +++ b/doc/specs/vulkan/chapters/memory.txt @@ -4,20 +4,20 @@ [[memory]] = Memory Allocation -{apiname} memory is broken up into two categories, _host memory_ and +Vulkan memory is broken up into two categories, _host memory_ and _device memory_. [[memory-host]] == Host Memory -Host memory is memory needed by the {apiname} implementation for +Host memory is memory needed by the Vulkan implementation for non-device-visible storage. This storage may: be used for e.g. internal software structures. [[memory-allocation]] -{apiname} provides applications the opportunity to perform host memory -allocations on behalf of the {apiname} implementation. If this feature is +Vulkan provides applications the opportunity to perform host memory +allocations on behalf of the Vulkan implementation. If this feature is not used, the implementation will perform its own memory allocations. Since most memory allocations are off the critical path, this is not meant as a performance feature. Rather, this can: be useful for certain embedded @@ -31,7 +31,7 @@ include::../structs/VkAllocationCallbacks.txt[] * pname:pUserData is a value to be interpreted by the implementation of the callbacks. When any of the callbacks in sname:VkAllocationCallbacks - are called, the {apiname} implementation will pass this value as the + are called, the Vulkan implementation will pass this value as the first parameter to the callback. This value can: vary each time an allocator is passed into a command, even when the same object takes an allocator in multiple commands. @@ -190,17 +190,17 @@ parameter and takes a value of type elink:VkSystemAllocationScope: include::../enums/VkSystemAllocationScope.txt[] * ename:VK_SYSTEM_ALLOCATION_SCOPE_COMMAND - The allocation is scoped to - the duration of the {apiname} command. + the duration of the Vulkan command. * ename:VK_SYSTEM_ALLOCATION_SCOPE_OBJECT - The allocation is scoped to - the lifetime of the {apiname} object that is being created or used. + the lifetime of the Vulkan object that is being created or used. * ename:VK_SYSTEM_ALLOCATION_SCOPE_CACHE - The allocation is scoped to the lifetime of a sname:VkPipelineCache object. * ename:VK_SYSTEM_ALLOCATION_SCOPE_DEVICE - The allocation is scoped to - the lifetime of the {apiname} device. + the lifetime of the Vulkan device. * ename:VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE - The allocation is scoped to - the lifetime of the {apiname} instance. + the lifetime of the Vulkan instance. -Most {apiname} commands operate on a single object, or there is a sole +Most Vulkan commands operate on a single object, or there is a sole object that is being created or manipulated. When an allocation uses a scope of ename:VK_SYSTEM_ALLOCATION_SCOPE_OBJECT or ename:VK_SYSTEM_ALLOCATION_SCOPE_CACHE, the allocation is scoped to the @@ -292,7 +292,7 @@ If pname:pfnAllocation or pname:pfnReallocation fail, the implementation may: fail object creation and/or generate an ename:VK_ERROR_OUT_OF_HOST_MEMORY error, as appropriate. -Allocation callbacks must: not call any {apiname} commands. +Allocation callbacks must: not call any Vulkan commands. The following sets of rules define when an implementation is permitted to call the allocator callbacks. @@ -493,8 +493,8 @@ The memory types are sorted according to a preorder which serves to aid in easily selecting an appropriate memory type. Given two memory types X and Y, the preorder defines latexmath:[$X \leq Y$] if: - * the memory property bits set for X are a subset of the memory property - bits set for Y. Or, + * the memory property bits set for X are a strict subset of the memory + property bits set for Y. Or, * the memory property bits set for X are the same as the memory property bits set for Y, and X uses a memory heap with greater or equal performance (as determined in an implementation-specific manner). @@ -539,7 +539,7 @@ accesses, as appropriate for the intended usage, and if such a memory type is not present can: fallback to searching for a less optimal but guaranteed set of properties such as "0" or "host-visible and coherent". -A {apiname} device operates on data in device memory via memory objects that +A Vulkan device operates on data in device memory via memory objects that are represented in the API by a sname:VkDeviceMemory handle. Memory objects are allocated by calling fname:vkAllocateMemory: @@ -657,16 +657,6 @@ include::../validity/protos/vkMapMemory.txt[] It is an application error to call fname:vkMapMemory on a memory object that is already mapped. -ifdef::editing-notes[] -[NOTE] -.editing-note -==== -TODO (Tobias) - There's a circular section reference in this next section. -The information is all covered by both places, but it seems a bit weird to -have them reference each other. Not sure how to resolve it. -==== -endif::editing-notes[] - [[memory-device-hostaccess-hazards]] fname:vkMapMemory does not check whether the device memory is currently in use before returning the host-accessible pointer. The application @@ -696,35 +686,11 @@ familiar with all of the mechanisms described in the chapter on to maintaining memory access ordering. ==== -Host-visible memory types that advertise the -ename:VK_MEMORY_PROPERTY_HOST_COHERENT_BIT property still require -<> between host and -device in order to be coherent, but do not require additional cache -management operations (fname:vkFlushMappedMemoryRanges or -fname:vkInvalidateMappedMemoryRanges) to achieve coherency. For host writes -to be seen by subsequent command buffer operations, a pipeline barrier from -a source of ename:VK_ACCESS_HOST_WRITE_BIT and -ename:VK_PIPELINE_STAGE_HOST_BIT to a destination of the relevant device -pipeline stages and access types must: be performed. Note that such a -barrier is performed -<> upon each -command buffer submission, so an explicit barrier is only rarely needed -(e.g. if a command buffer waits upon an event signaled by the host, where -the host wrote some data after submission). For device writes to be seen by -subsequent host reads, a pipeline barrier is required: to -<>. +Two commands are provided to enable applications to work with +non-coherent memory allocations: fname:vkFlushMappedMemoryRanges and +fname:vkInvalidateMappedMemoryRanges. -In order to enable applications to work with non-coherent memory -allocations, two entry points are provided. To flush host write caches, an -application must: use fname:vkFlushMappedMemoryRanges, while -fname:vkInvalidateMappedMemoryRanges allows invalidating host input caches -so that device writes become visible to the host. -fname:vkFlushMappedMemoryRanges must: be called after the host writes to -non-coherent memory have completed and before command buffers that will read -or write any of those memory locations are submitted to a queue. Similarly, -fname:vkInvalidateMappedMemoryRanges must: be called after command buffers -that execute and flush (via memory barriers) the device writes have -completed, and before the host will read or write any of those locations. +To flush ranges of non-coherent memory from the host caches, call: include::../protos/vkFlushMappedMemoryRanges.txt[] @@ -736,6 +702,13 @@ include::../protos/vkFlushMappedMemoryRanges.txt[] include::../validity/protos/vkFlushMappedMemoryRanges.txt[] +fname:vkFlushMappedMemoryRanges must: be used to guarantee that host writes to +non-coherent memory are visible to the device. It must: be called after the host +writes to non-coherent memory have completed and before command buffers that will +read or write any of those memory locations are submitted to a queue. + +To invalidate ranges of non-coherent memory from the host caches, call: + include::../protos/vkInvalidateMappedMemoryRanges.txt[] * pname:device is the logical device that owns the memory ranges. @@ -770,8 +743,42 @@ fname:vkFlushMappedMemoryRanges and fname:vkInvalidateMappedMemoryRanges are unnecessary and may: have performance cost. ==== +fname:vkInvalidateMappedMemoryRanges must: be used to guarantee that device writes to +non-coherent memory are visible to the host. It must: be called after command buffers +that execute and flush (via memory barriers) the device writes have completed, and +before the host will read or write any of those locations. If a range of non-coherent +memory is written by the host and then invalidated without first being flushed, its +contents are undefined. + +ifdef::editing-notes[] +[NOTE] +.editing-note +==== +TODO (Tobias) - There's a circular section reference between this next section +and the <>. The +information is all covered by both places, but it seems a bit weird to have them +reference each other. Not sure how to resolve it. +==== +endif::editing-notes[] + +Host-visible memory types that advertise the +ename:VK_MEMORY_PROPERTY_HOST_COHERENT_BIT property still require +<> between host and device +in order to be coherent, but do not require additional cache management +operations to achieve coherency. For host writes to +be seen by subsequent command buffer operations, a pipeline barrier from +a source of ename:VK_ACCESS_HOST_WRITE_BIT and ename:VK_PIPELINE_STAGE_HOST_BIT +to a destination of the relevant device pipeline stages and access types must: +be performed. Note that such a barrier is performed +<> upon each +command buffer submission, so an explicit barrier is only rarely needed +(e.g. if a command buffer waits upon an event signaled by the host, where +the host wrote some data after submission). For device writes to be seen by +subsequent host reads, a pipeline barrier is required: to +<>. + Once host access to a memory object is no longer needed by the application, -it can: be unmapped by calling : +it can: be unmapped by calling: include::../protos/vkUnmapMemory.txt[] diff --git a/doc/specs/vulkan/chapters/pipelines.txt b/doc/specs/vulkan/chapters/pipelines.txt index f6908236..f2b4a0ba 100644 --- a/doc/specs/vulkan/chapters/pipelines.txt +++ b/doc/specs/vulkan/chapters/pipelines.txt @@ -5,7 +5,7 @@ = Pipelines The following <> shows a block diagram of -the {apiname} pipelines. Some {apiname} commands specify geometric objects +the Vulkan pipelines. Some Vulkan commands specify geometric objects to be drawn or computational work to be performed, while others specify state controlling how objects are handled by the various pipeline stages, or control data transfer between memory organized as images and buffers. @@ -46,8 +46,8 @@ The <> is a separate pipeline from the graphics pipeline, which operates on one-, two-, or three-dimensional workgroups which can: read from and write to buffer and image memory. -This ordering is meant only as a tool for describing {apiname}, not as a -strict rule of how {apiname} is implemented, and we present it only as a +This ordering is meant only as a tool for describing Vulkan, not as a +strict rule of how Vulkan is implemented, and we present it only as a means to organize the various operations of the pipelines. [[pipelines-block-diagram]] @@ -98,7 +98,7 @@ include::../protos/vkCreateComputePipelines.txt[] <> object, in which case use of that cache is enabled for the duration of the command. * pname:createInfoCount is the length of the pname:pCreateInfos and - pname:Pipelines arrays. + pname:pPipelines arrays. * pname:pCreateInfos is an array of sname:VkComputePipelineCreateInfo structures. * pname:pAllocator controls host memory allocation as described in the @@ -183,7 +183,7 @@ include::../protos/vkCreateGraphicsPipelines.txt[] <> object, in which case use of that cache is enabled for the duration of the command. * pname:createInfoCount is the length of the pname:pCreateInfos and - pname:Pipelines arrays. + pname:pPipelines arrays. * pname:pCreateInfos is an array of sname:VkGraphicsPipelineCreateInfo structures. * pname:pAllocator controls host memory allocation as described in the @@ -493,8 +493,9 @@ pipelines is achieved by passing the same pipeline cache object when creating multiple related pipelines. Reuse across runs of an application is achieved by retrieving pipeline cache contents in one run of an application, saving the contents, and using them to preinitialize a pipeline cache on a -subsequent run. The contents and size of the pipeline cache objects are -managed by the implementation. Applications can: control the amount of data +subsequent run. The contents of the pipeline cache objects are +managed by the implementation. Applications can: manage the host memory +consumed by a pipeline cache object and control the amount of data retrieved from a pipeline cache object. Pipeline cache objects are created by calling: @@ -511,6 +512,16 @@ include::../protos/vkCreatePipelineCache.txt[] * pname:pPipelineCache is a pointer to a sname:VkPipelineCache handle in which the resulting pipeline cache object is returned. +[NOTE] +.Note +==== +Applications can: track and manage the total host memory size of a pipeline +cache object using the pname:pAllocator. Applications can: limit the amount +of data retrieved from a pipeline cache object in fname:vkGetPipeineCacheData. +Implementations shouldnot: internally limit the total number of entries added to a +pipeline cache object or the total host memory consumed. +==== + include::../validity/protos/vkCreatePipelineCache.txt[] The sname:VkPipelineCacheCreateInfo structure is defined as: diff --git a/doc/specs/vulkan/chapters/primsrast.txt b/doc/specs/vulkan/chapters/primsrast.txt index 54a00b6a..36eb9d04 100644 --- a/doc/specs/vulkan/chapters/primsrast.txt +++ b/doc/specs/vulkan/chapters/primsrast.txt @@ -122,7 +122,7 @@ stage in the pipeline before rasterization. [[primsrast-multisampling]] == Multisampling -Multisampling is a mechanism to antialias all {apiname} primitives: points, +Multisampling is a mechanism to antialias all Vulkan primitives: points, lines, and polygons. The technique is to sample all primitives multiple times at each pixel. Each sample in each framebuffer attachment has storage for a color, depth, and/or stencil value, such that per-fragment operations @@ -131,7 +131,7 @@ _resolved_ to a single color (see <> and the <> chapter for more details on how to resolve multisample images to non-multisample images). -{apiname} defines rasterization rules for single-sample modes in a way that +Vulkan defines rasterization rules for single-sample modes in a way that is equivalent to a multisample mode with a single sample in the center of each pixel. diff --git a/doc/specs/vulkan/chapters/queries.txt b/doc/specs/vulkan/chapters/queries.txt index a831f1f0..8921c430 100644 --- a/doc/specs/vulkan/chapters/queries.txt +++ b/doc/specs/vulkan/chapters/queries.txt @@ -5,7 +5,7 @@ = Queries _Queries_ provide a mechanism to return information about the processing of -a sequence of {apiname} commands. Query operations are asynchronous, and as +a sequence of Vulkan commands. Query operations are asynchronous, and as such, their results are not returned immediately. Instead, their results, and their availability status, are stored in a <>. The state of these queries can: be read back on the host, or copied @@ -246,7 +246,7 @@ These bits have the following meanings: * ename:VK_QUERY_RESULT_64_BIT indicates the results will be written as an array of 64-bit unsigned integer values. If this bit is not set, the results will be written as an array of 32-bit unsigned integer values. - * ename:VK_QUERY_RESULT_WAIT_BIT indicates that {apiname} will wait for + * ename:VK_QUERY_RESULT_WAIT_BIT indicates that Vulkan will wait for each query's status to become available before retrieving its results. * ename:VK_QUERY_RESULT_WITH_AVAILABILITY_BIT indicates that the availability status accompanies the results. @@ -263,7 +263,7 @@ If ename:VK_QUERY_RESULT_64_BIT is not set and the result overflows a ename:VK_QUERY_RESULT_64_BIT is set and the result overflows a 64-bit value, the value may: either wrap or saturate. -If ename:VK_QUERY_RESULT_WAIT_BIT is set, {apiname} will wait for each +If ename:VK_QUERY_RESULT_WAIT_BIT is set, Vulkan will wait for each query to be in the available state before retrieving the numerical results for that query. In this case, fname:vkGetQueryPoolResults is guaranteed to succeed and return ename:VK_SUCCESS if the queries @@ -458,7 +458,7 @@ but still not be visible in a final image. == Pipeline Statistics Queries Pipeline statistics queries allow the application to sample a specified set -of sname:VkPipeline counters. These counters are accumulated by {apiname} +of sname:VkPipeline counters. These counters are accumulated by Vulkan for a set of either draw or dispatch commands while a pipeline statistics query is active. As such, pipeline statistics queries are available on queue families supporting either graphics or compute operations. Further, diff --git a/doc/specs/vulkan/chapters/renderpass.txt b/doc/specs/vulkan/chapters/renderpass.txt index 6d50f16c..cea83b21 100644 --- a/doc/specs/vulkan/chapters/renderpass.txt +++ b/doc/specs/vulkan/chapters/renderpass.txt @@ -758,8 +758,8 @@ include::../structs/VkRenderPassBeginInfo.txt[] * pname:pClearValues is an array of slink:VkClearValue structures that contains clear values for each attachment, if the attachment uses a pname:loadOp value of ename:VK_ATTACHMENT_LOAD_OP_CLEAR. The array is - indexed by attachment number, with elements corresponding to uncleared - attachments being unused. + indexed by attachment number. Only elements corresponding to cleared + attachments are used. Other elements of pname:pClearValues are ignored. include::../validity/structs/VkRenderPassBeginInfo.txt[] diff --git a/doc/specs/vulkan/chapters/resources.txt b/doc/specs/vulkan/chapters/resources.txt index 5dae7823..712a8cdf 100644 --- a/doc/specs/vulkan/chapters/resources.txt +++ b/doc/specs/vulkan/chapters/resources.txt @@ -4,7 +4,7 @@ [[resources]] = Resource Creation -{apiname} supports two primary resource types: _buffers_ and _images_. +Vulkan supports two primary resource types: _buffers_ and _images_. Resources are views of memory with associated formatting and dimensionality. Buffers are essentially unformatted arrays of bytes whereas images contain format information, can: be multidimensional and may: have associated @@ -449,7 +449,7 @@ pname:depthPitch is defined only for 3D images. For color formats, the pname:aspectMask member of sname:VkImageSubresource must: be ename:VK_IMAGE_ASPECT_COLOR_BIT. For depth/stencil formats, -pname:aspect must: be either ename:VK_IMAGE_ASPECT_DEPTH_BIT or +pname:aspectMask must: be either ename:VK_IMAGE_ASPECT_DEPTH_BIT or ename:VK_IMAGE_ASPECT_STENCIL_BIT. On implementations that store depth and stencil aspects separately, querying each of these image subresource layouts will return a different pname:offset and pname:size representing the region @@ -997,7 +997,7 @@ include::../protos/vkBindBufferMemory.txt[] include::../validity/protos/vkBindBufferMemory.txt[] -To attach memory to a image object, call: +To attach memory to an image object, call: include::../protos/vkBindImageMemory.txt[] diff --git a/doc/specs/vulkan/chapters/samplers.txt b/doc/specs/vulkan/chapters/samplers.txt index 3c7c1419..7dcc205a 100644 --- a/doc/specs/vulkan/chapters/samplers.txt +++ b/doc/specs/vulkan/chapters/samplers.txt @@ -109,7 +109,7 @@ include::../enums/VkBorderColor.txt[] ** The functions mustnot: use offsets. [NOTE] -.Mapping of OpenGL to {apiname} filter modes +.Mapping of OpenGL to Vulkan filter modes ================== pname:magFilter values of ename:VK_FILTER_NEAREST and ename:VK_FILTER_LINEAR directly correspond to code:GL_NEAREST and code:GL_LINEAR magnification @@ -120,7 +120,7 @@ ename:VK_FILTER_LINEAR and pname:mipmapMode of ename:VK_SAMPLER_MIPMAP_MODE_NEAREST correspond to code:GL_LINEAR_MIPMAP_NEAREST). -There are no {apiname} filter modes that directly correspond to OpenGL +There are no Vulkan filter modes that directly correspond to OpenGL minification filters of code:GL_LINEAR or code:GL_NEAREST, but they can: be emulated using ename:VK_SAMPLER_MIPMAP_MODE_NEAREST, pname:minLod = 0, and pname:maxLod = 0.25, and using pname:minFilter = ename:VK_FILTER_LINEAR or diff --git a/doc/specs/vulkan/chapters/shaders.txt b/doc/specs/vulkan/chapters/shaders.txt index 70e29756..dc59d5d5 100644 --- a/doc/specs/vulkan/chapters/shaders.txt +++ b/doc/specs/vulkan/chapters/shaders.txt @@ -40,7 +40,7 @@ _Shader modules_ contain _shader code_ and one or more entry points. Shaders are selected from a shader module by specifying an entry point as part of <> creation. The stages of a pipeline can: use shaders that come from different modules. The shader code defining a shader module -must: be in the SPIR-V format, as described by the <> appendix. A shader module is created by calling: diff --git a/doc/specs/vulkan/chapters/sparsemem.txt b/doc/specs/vulkan/chapters/sparsemem.txt index e8fa836b..39ef1bfc 100644 --- a/doc/specs/vulkan/chapters/sparsemem.txt +++ b/doc/specs/vulkan/chapters/sparsemem.txt @@ -5,7 +5,7 @@ = Sparse Resources As documented in <>, -sname:VkBuffer and sname:VkImage resources in {apiname} must: be bound +sname:VkBuffer and sname:VkImage resources in Vulkan must: be bound completely and contiguously to a single sname:VkDeviceMemory object. This binding must: be done before the resource is used, and the binding is immutable for the lifetime of the resource. @@ -1027,7 +1027,7 @@ arrayMipTailOffset = imageMipTailOffset + arrayLayer * imageMipTailStride; and the mip tail can: be bound with code:layerCount slink:VkSparseMemoryBind structures, each using pname:size = pname:imageMipTailSize and -pname:resourceOffset = pname:arrayMipTailOffset as defined above. +pname:resourceOffset = ptext:arrayMipTailOffset as defined above. Sparse memory binding is handled by the following APIs and related data structures. @@ -1167,7 +1167,7 @@ include::../structs/VkSparseImageMemoryBind.txt[] * pname:extent is the size in texels of the region within the image subresource to bind. The extent must: be a multiple of the sparse image block dimensions, except when binding sparse image blocks along the edge - of a image subresource it can: instead be such that any coordinate of + of an image subresource it can: instead be such that any coordinate of latexmath:[$\mathit{offset} + \mathit{extent}$] equals the corresponding dimensions of the image subresource. * pname:memory is the sname:VkDeviceMemory object that the sparse image diff --git a/doc/specs/vulkan/chapters/synchronization.txt b/doc/specs/vulkan/chapters/synchronization.txt index 6f8f43bb..8f74e2df 100644 --- a/doc/specs/vulkan/chapters/synchronization.txt +++ b/doc/specs/vulkan/chapters/synchronization.txt @@ -5,17 +5,17 @@ = Synchronization and Cache Control Synchronization of access to resources is primarily the responsibility of -the application. In {apiname}, there are four forms of concurrency during +the application. In Vulkan, there are four forms of concurrency during execution: between the host and device, between the queues, between queue submissions, and between commands within a command buffer. -{apiname} provides the application with a set of +Vulkan provides the application with a set of synchronization primitives for these purposes. Further, memory caches and other optimizations mean that the normal flow of command execution does not guarantee that all memory transactions from a command are immediately -visible to other agents with views into a given range of memory. {apiname} +visible to other agents with views into a given range of memory. Vulkan also provides barrier operations to ensure this type of synchronization. -Four synchronization primitive types are exposed by {apiname}. These are: +Four synchronization primitive types are exposed by Vulkan. These are: * <> * <> @@ -225,7 +225,7 @@ include::../protos/vkDestroySemaphore.txt[] include::../validity/protos/vkDestroySemaphore.txt[] To signal a semaphore from a queue, include it in an element of the array -of slink:VkSubmitInfo structures passed through the pname:pSubmitInfo +of slink:VkSubmitInfo structures passed through the pname:pSubmits parameter to a call to flink:vkQueueSubmit, or in an element of the array of slink:VkBindSparseInfo structures passed through the pname:pBindInfo parameter to a call to flink:vkQueueBindSparse. @@ -297,7 +297,7 @@ performed in between. (The primary use case for this example is with the presentation extensions, thus the etext:VK_IMAGE_LAYOUT_PRESENT_SRC_KHR token is used even though it -is not defined in the core {apiname} specification.) +is not defined in the core Vulkan specification.) ==== When a queue signals or waits upon a semaphore, certain @@ -313,7 +313,7 @@ the host. Events represent a fine-grained synchronization primitive that can: be used to gauge progress through a sequence of commands executed on a queue by -{apiname}. An event is initially in the unsignaled state. It can: be +Vulkan. An event is initially in the unsignaled state. It can: be signaled by a device, using commands inserted into the command buffer, or by the host. It can: also be reset to the unsignaled state by a device or the host. The host can: query the state of an event. A device can: wait for one @@ -936,7 +936,7 @@ Enumeration>> and <>. _Memory barriers_ express the two halves of a memory dependency between an earlier set of memory accesses against a later set of memory accesses. -{apiname} provides three types of memory barriers: global memory, buffer +Vulkan provides three types of memory barriers: global memory, buffer memory, and image memory. @@ -1142,7 +1142,7 @@ include::../validity/structs/VkBufferMemoryBarrier.txt[] The image memory barrier type is specified with an instance of the sname:VkImageMemoryBarrier structure. This type of barrier only applies to memory accesses involving a specific image subresource range of the -specified image object. That is, a memory dependency formed from a image +specified image object. That is, a memory dependency formed from an image memory barrier is <> to the specified image subresources of the image. It is also used to perform a diff --git a/doc/specs/vulkan/copyright.txt b/doc/specs/vulkan/copyright.txt index 9d45fbb5..e2eea321 100644 --- a/doc/specs/vulkan/copyright.txt +++ b/doc/specs/vulkan/copyright.txt @@ -62,6 +62,6 @@ representatives be liable for any damages, whether direct, indirect, special or consequential damages for lost revenues, lost profits, or otherwise, arising from or in connection with these materials. -Khronos and {apiname} are trademarks of The Khronos Group Inc. OpenCL is a trademark of +Khronos and Vulkan are trademarks of The Khronos Group Inc. OpenCL is a trademark of Apple Inc. and OpenGL is a registered trademark of Silicon Graphics International, both used under license by Khronos. diff --git a/doc/specs/vulkan/genRelease b/doc/specs/vulkan/genRelease index 6341e815..535da30d 100755 --- a/doc/specs/vulkan/genRelease +++ b/doc/specs/vulkan/genRelease @@ -18,7 +18,9 @@ from datetime import * # branch = branch or commit or tag name # label = textual label to apply # outdir = directory to generate specs in -def buildRelease(branch,label,outdir,targets): +# xmlTargets = targets to build in src/spec/ +# specTargets = targets to build in doc/specs/vulkan/ +def buildRelease(branch,label,outdir,xmlTargets,specTargets): global root, xml, spec print('echo Info: Generating branch=' + branch, @@ -26,10 +28,6 @@ def buildRelease(branch,label,outdir,targets): 'outdir=' + outdir) print('git checkout', branch) - print('echo Info: Generating headers and spec include files') - print('cd', xml) - print('make clobber full_install') - print('echo Info: Cleaning spec in', outdir) print('cd', spec) print('rm -rf', @@ -40,9 +38,15 @@ def buildRelease(branch,label,outdir,targets): outdir + '/vkspec.html', 'specversion.txt') + print('echo Info: Generating headers and spec include files') + print('cd', xml) + print('make OUTDIR=' + outdir, xmlTargets) + print('echo Info: Generating spec') + print('cd', spec) print('make specversion.txt') - print('make -j 4 OUTDIR=' + outdir, ' NOTEOPTS="-a implementation-guide"', targets) + print('make -j 4 OUTDIR=' + outdir, ' NOTEOPTS="-a implementation-guide"', + specTargets) print('rm', outdir + '/pdf/vkspec.xml') # Main @@ -68,11 +72,15 @@ wsibranch = '1.0-wsi_extensions' now = datetime.today().strftime('%Y%m%d') # Generate specs -coretargets='xhtml pdf styleguide manhtml manpdf manhtmlpages' -buildRelease(corebranch, corebranch, outdir + corebranch, coretargets) +coreXmlTargets='clobber full_install pdf_install' +coreSpecTargets='xhtml pdf styleguide manhtml manpdf manhtmlpages' +buildRelease(corebranch, corebranch, outdir + corebranch, + coreXmlTargets, coreSpecTargets) -wsitargets='xhtml pdf' -buildRelease(wsibranch, wsibranch, outdir + wsibranch, wsitargets) +wsiXmlTargets='clobber full_install' +wsiSpecTargets='xhtml pdf' +buildRelease(wsibranch, wsibranch, outdir + wsibranch, + wsiXmlTargets, wsiSpecTargets) print('echo Info: post-generation cleanup') @@ -80,8 +88,9 @@ print('git checkout ' + corebranch) print('echo To tag the spec branches, execute these commands:') print('echo git checkout', corebranch) -print('echo git tag -a -m \\"Tag core API specification for', now, 'release\\"', 'v1.0-core-' + now) +print('echo git tag -a -m \\"Tag core API specification for', now, + 'release\\"', 'v1.0-core-' + now) print('echo git checkout', wsibranch) -print('echo git tag -a -m \\"Tag core+WSI API specification for', now, 'release\\"', 'v1.0-core+wsi-' + now) -print('echo git push --tags') +print('echo git tag -a -m \\"Tag core+WSI API specification for', now, + 'release\\"', 'v1.0-core+wsi-' + now) diff --git a/doc/specs/vulkan/man/vkAllocateCommandBuffers.txt b/doc/specs/vulkan/man/vkAllocateCommandBuffers.txt index 3af458c9..948b2386 100644 --- a/doc/specs/vulkan/man/vkAllocateCommandBuffers.txt +++ b/doc/specs/vulkan/man/vkAllocateCommandBuffers.txt @@ -25,7 +25,7 @@ pname:pCommandBuffers:: Description ----------- -fname::vkAllocateCommandBuffers allocates command buffers from an existing command pool. pname:pAllocateInfo +fname:vkAllocateCommandBuffers allocates command buffers from an existing command pool. pname:pAllocateInfo is a pointer to an instance of the slink:VkCommandBufferAllocateInfo structure which describes the command buffer allocation. The definition of slink:VkCommandBufferAllocateInfo is: diff --git a/doc/specs/vulkan/man/vkCmdCopyBuffer.txt b/doc/specs/vulkan/man/vkCmdCopyBuffer.txt index 626ada51..e8ca4bf1 100644 --- a/doc/specs/vulkan/man/vkCmdCopyBuffer.txt +++ b/doc/specs/vulkan/man/vkCmdCopyBuffer.txt @@ -39,7 +39,7 @@ the slink:VkBufferCopy structure, whose definition is: include::../structs/VkBufferCopy.txt[] If any two or more regions within pname:pRegions overlap, the resulting data will be -undefined. It is recomended, but not required, that the regions given in pname:pRegions +undefined. It is recommended, but not required, that the regions given in pname:pRegions start on multiples of four bytes and have a length which is a multiple of four bytes. include::../validity/protos/vkCmdCopyBuffer.txt[] diff --git a/doc/specs/vulkan/man/vkCmdResolveImage.txt b/doc/specs/vulkan/man/vkCmdResolveImage.txt index 8bff87d7..261c065b 100644 --- a/doc/specs/vulkan/man/vkCmdResolveImage.txt +++ b/doc/specs/vulkan/man/vkCmdResolveImage.txt @@ -14,7 +14,7 @@ Parameters ---------- pname:commandBuffer:: - Ths command buffer into which the command is to be placed. + The command buffer into which the command is to be placed. pname:srcImage:: The image that is the source of the resolve operation. diff --git a/doc/specs/vulkan/man/vkCmdWaitEvents.txt b/doc/specs/vulkan/man/vkCmdWaitEvents.txt index ca63b29c..827c78ba 100644 --- a/doc/specs/vulkan/man/vkCmdWaitEvents.txt +++ b/doc/specs/vulkan/man/vkCmdWaitEvents.txt @@ -43,13 +43,13 @@ Description ----------- fname:vkCmdWaitEvents waits for a number of event objects to become -signalled and inserts a set of memory barriers into the command buffer +signaled and inserts a set of memory barriers into the command buffer specified by pname:commandBuffer. fname:vkCmdWaitEvents waits for each of the pname:eventCount event object -specified by pname:pEvents to become signalled. The point at which each is -signalled must have been specified in the command that caused the object to -become signalled (either fname:vkSetEvent or fname:vkCmdSetEvent) and must +specified by pname:pEvents to become signaled. The point at which each is +signaled must have been specified in the command that caused the object to +become signaled (either fname:vkSetEvent or fname:vkCmdSetEvent) and must also have the corresponding bit set in pname:srcStageMask. The pname:ppMemoryBarriers parameter is a pointer to an array of pname:memoryBarrierCount diff --git a/doc/specs/vulkan/man/vkCreateBuffer.txt b/doc/specs/vulkan/man/vkCreateBuffer.txt index 3374be4e..dec66c0b 100644 --- a/doc/specs/vulkan/man/vkCreateBuffer.txt +++ b/doc/specs/vulkan/man/vkCreateBuffer.txt @@ -20,7 +20,7 @@ pname:pCreateInfo:: Pointer to data structure containing information about the object to be created. pname:pBuffer:: - Pointer to a variable to recieve a handle to the new buffer object. + Pointer to a variable to receive a handle to the new buffer object. Description ----------- diff --git a/doc/specs/vulkan/man/vkCreateComputePipelines.txt b/doc/specs/vulkan/man/vkCreateComputePipelines.txt index 4b914d3a..fa6fdb6a 100644 --- a/doc/specs/vulkan/man/vkCreateComputePipelines.txt +++ b/doc/specs/vulkan/man/vkCreateComputePipelines.txt @@ -66,7 +66,7 @@ to fname:vkCreateComputePipelines. The parameters pname:basePipelineHandle and pname:basePipelineIndex are ignored unless pname:flags has the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT bit set. If using the pname:basePipelineIndex parameter, the index must refer to a -pname:pCreateInfos parameter pased to vkCreateComputePipelines that appeared +pname:pCreateInfos parameter passed to vkCreateComputePipelines that appeared earlier than the current sname:VkComputePipelineCreateInfo in the list. The parameters pname:basePipelineHandle and pname:basePipelineIndex are mutually exclusive. If you specify a valid pname:basePipelineHandle, diff --git a/doc/specs/vulkan/man/vkCreateImageView.txt b/doc/specs/vulkan/man/vkCreateImageView.txt index 33731b6d..facd64b4 100644 --- a/doc/specs/vulkan/man/vkCreateImageView.txt +++ b/doc/specs/vulkan/man/vkCreateImageView.txt @@ -25,7 +25,7 @@ pname:pView:: Description ----------- -fname:vkCreateImageView creates a new view of a source image in a compatible format, alowing casting +fname:vkCreateImageView creates a new view of a source image in a compatible format, allowing casting of image data from one format to another. Image views may be bound into descriptor sets to allow them to be accessed in shaders, or be bound as color attachments. pname:device specifies the device that is to be used to create the new view. pname:pCreateInfo is a pointer to an instance of the diff --git a/doc/specs/vulkan/man/vkCreatePipelineLayout.txt b/doc/specs/vulkan/man/vkCreatePipelineLayout.txt index 3a6828f9..987e5380 100644 --- a/doc/specs/vulkan/man/vkCreatePipelineLayout.txt +++ b/doc/specs/vulkan/man/vkCreatePipelineLayout.txt @@ -20,7 +20,7 @@ pname:pCreateInfo:: A pointer to structure specifying the properties of the new pipeline layout. pname:pPipelineLayout:: - Pointer to a variable to recieve a handle to the new pipeline layout object. + Pointer to a variable to receive a handle to the new pipeline layout object. Description ----------- diff --git a/doc/specs/vulkan/man/vkEnumeratePhysicalDevices.txt b/doc/specs/vulkan/man/vkEnumeratePhysicalDevices.txt index f51f0136..17334512 100644 --- a/doc/specs/vulkan/man/vkEnumeratePhysicalDevices.txt +++ b/doc/specs/vulkan/man/vkEnumeratePhysicalDevices.txt @@ -41,7 +41,7 @@ If pname:pPhysicalDevices is not code:NULL, then pname:pPhysicalDeviceCount shou to a variable that has been initialized with the size of the array pointed to by pname:pPhysicalDevices. No more than this number of physical device handles will be written into the output array. The actual number of device handles written into pname:pPhysicalDevices is then written into -the variable pointed to pname:pPhysicalDevices. +the variable pointed to by pname:pPhysicalDeviceCount. include::../validity/protos/vkEnumeratePhysicalDevices.txt[] diff --git a/doc/specs/vulkan/man/vkGetImageSubresourceLayout.txt b/doc/specs/vulkan/man/vkGetImageSubresourceLayout.txt index 4e4e16ae..ad37fc16 100644 --- a/doc/specs/vulkan/man/vkGetImageSubresourceLayout.txt +++ b/doc/specs/vulkan/man/vkGetImageSubresourceLayout.txt @@ -30,7 +30,7 @@ Description ----------- fname:vkGetImageSubresourceLayout returns information about the memory -layout of a image subresource of an image. pname:device is a handle to the +layout of an image subresource of an image. pname:device is a handle to the device that owns pname:image, which is the image about which to retrieve information. A description of the image subresource is passsed to the command through an instance of the slink:VkImageSubresource structure, the diff --git a/doc/specs/vulkan/man/vkGetInstanceProcAddr.txt b/doc/specs/vulkan/man/vkGetInstanceProcAddr.txt index 8548f830..156e8cbe 100644 --- a/doc/specs/vulkan/man/vkGetInstanceProcAddr.txt +++ b/doc/specs/vulkan/man/vkGetInstanceProcAddr.txt @@ -30,7 +30,7 @@ different values of pname:instance. If pname:instance is code:NULL, fname:vkGetInstanceProcAddr will return non-code:NULL function pointers for the global commands -fname::vkEnumerateInstanceExtensionProperties, +fname:vkEnumerateInstanceExtensionProperties, fname:vkEnumerateInstanceLayerProperties, and fname:vkCreateInstance. It will return code:NULL for all other commands, since they may have different implementations in different instances. diff --git a/doc/specs/vulkan/man/vkGetPhysicalDeviceQueueFamilyProperties.txt b/doc/specs/vulkan/man/vkGetPhysicalDeviceQueueFamilyProperties.txt index ad7e2bd7..9ccfabfd 100644 --- a/doc/specs/vulkan/man/vkGetPhysicalDeviceQueueFamilyProperties.txt +++ b/doc/specs/vulkan/man/vkGetPhysicalDeviceQueueFamilyProperties.txt @@ -73,8 +73,8 @@ operations such as binding graphics state and graphics pipelines and executing d * If a queue's ptext:queueFlags member contains ename:VK_QUEUE_COMPUTE_BIT, then it supports compute operations such as binding compute pipelines and executing compute dispatches. -* If a queue's ptext:queueFlags member contains ename:VK_QUEUE_TRANSFER_BIT, then it supports transsfer -operations, which include copying data an images. +* If a queue's ptext:queueFlags member contains ename:VK_QUEUE_TRANSFER_BIT, then it supports transfer +operations, which include copying data and images. * If a queue's ptext:queueFlags member contains ename:VK_QUEUE_SPARSE_BINDING_BIT, then it supports binding memory to sparse buffer and image resources. diff --git a/doc/specs/vulkan/style/styleguide.txt b/doc/specs/vulkan/style/styleguide.txt index 770d18aa..f4f324ee 100644 --- a/doc/specs/vulkan/style/styleguide.txt +++ b/doc/specs/vulkan/style/styleguide.txt @@ -583,6 +583,13 @@ See Gitlab issue #61. ==== +=== Terms to Use With Caution + +The term _subset_ is sometimes used to refer to a _strict subset_, and +sometimes used to refer to a subset which may be equal to the entire set. +This is particularly likely to come up when describing bitmasks. Make sure +to use either _subset_ or _strict subset_ as appropriate. + === Terms to Avoid Don't describe anything in the documentation using vague or wishy-washy @@ -634,6 +641,16 @@ write that it ``contains one or more bits''. A counter example is that it is oka to write ``For non-stereoscopic-3D applications, this value is 1.'' +=== Use American Spelling Conventions + +In case of conflict, use American rather than British spelling +conventions. For example: + +*Correct:* color, signaled. + +*Incorrect:* colour, signalled. + + [[writingstyle-describing]] == Describing Commands and Parameters @@ -852,7 +869,7 @@ autogenerated from vk.xml, and included from the `../validity/` directories: include::../validity/protos/vkCreateCommandPool.txt[] ==== -The sname:VkCommandPoolCreateInfo structure is defined as follows: +The sname:VkCommandPoolCreateInfo structure is defined as: include::../structs/VkCommandPoolCreateInfo.txt[] @@ -956,6 +973,9 @@ for this structure: = Revision History +* May 1, 2016 - Include feedback from public Github issues 120 and 190. Use + consistent conventions for defining structures. Use American rather than + British spelling conventions. * March 12, 2016 - Recommend against "the value of". * February 26, 2016 - Replace use of the "maynot{cl}" macro with "may{cl} not". * February 16, 2016 - Place asciidoc conversion post-release. diff --git a/doc/specs/vulkan/validity/protos/vkCmdBlitImage.txt b/doc/specs/vulkan/validity/protos/vkCmdBlitImage.txt index efdd9194..9726e9ce 100644 --- a/doc/specs/vulkan/validity/protos/vkCmdBlitImage.txt +++ b/doc/specs/vulkan/validity/protos/vkCmdBlitImage.txt @@ -35,6 +35,7 @@ endif::doctype-manpage[] * If either of pname:srcImage or pname:dstImage was created with an unsigned integer elink:VkFormat, the other must: also have been created with an unsigned integer elink:VkFormat * If either of pname:srcImage or pname:dstImage was created with a depth/stencil format, the other must: have exactly the same format * If pname:srcImage was created with a depth/stencil format, pname:filter must: be ename:VK_FILTER_NEAREST +* If pname:filter is ename:VK_FILTER_LINEAR, pname:srcImage must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties ifndef::doctype-manpage[] ******************************************************************************** endif::doctype-manpage[] diff --git a/doc/specs/vulkan/validity/protos/vkCmdClearColorImage.txt b/doc/specs/vulkan/validity/protos/vkCmdClearColorImage.txt index ba5d69e1..6baaf8fa 100644 --- a/doc/specs/vulkan/validity/protos/vkCmdClearColorImage.txt +++ b/doc/specs/vulkan/validity/protos/vkCmdClearColorImage.txt @@ -20,7 +20,7 @@ endif::doctype-manpage[] * pname:image must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag * pname:imageLayout must: specify the layout of the image subresource ranges of pname:image specified in pname:pRanges at the time this command is executed on a sname:VkDevice * pname:imageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL -* The image range of any given element of pname:pRanges must: be a image subresource range that is contained within pname:image +* The image range of any given element of pname:pRanges must: be an image subresource range that is contained within pname:image * pname:image mustnot: have a compressed or depth/stencil format ifndef::doctype-manpage[] ******************************************************************************** diff --git a/doc/specs/vulkan/validity/protos/vkCmdClearDepthStencilImage.txt b/doc/specs/vulkan/validity/protos/vkCmdClearDepthStencilImage.txt index 1d635617..f08d7358 100644 --- a/doc/specs/vulkan/validity/protos/vkCmdClearDepthStencilImage.txt +++ b/doc/specs/vulkan/validity/protos/vkCmdClearDepthStencilImage.txt @@ -20,7 +20,7 @@ endif::doctype-manpage[] * pname:image must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag * pname:imageLayout must: specify the layout of the image subresource ranges of pname:image specified in pname:pRanges at the time this command is executed on a sname:VkDevice * pname:imageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL -* The image range of any given element of pname:pRanges must: be a image subresource range that is contained within pname:image +* The image range of any given element of pname:pRanges must: be an image subresource range that is contained within pname:image * pname:image must: have a depth/stencil format ifndef::doctype-manpage[] ******************************************************************************** diff --git a/doc/specs/vulkan/validity/protos/vkCmdDispatch.txt b/doc/specs/vulkan/validity/protos/vkCmdDispatch.txt index d91b3f33..9f394a3b 100644 --- a/doc/specs/vulkan/validity/protos/vkCmdDispatch.txt +++ b/doc/specs/vulkan/validity/protos/vkCmdDispatch.txt @@ -23,7 +23,7 @@ endif::doctype-manpage[] * If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage * If the <> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set * If the <> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set -* Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties +* Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties ifndef::doctype-manpage[] ******************************************************************************** endif::doctype-manpage[] diff --git a/doc/specs/vulkan/validity/protos/vkCmdDispatchIndirect.txt b/doc/specs/vulkan/validity/protos/vkCmdDispatchIndirect.txt index 9af07848..15f3975a 100644 --- a/doc/specs/vulkan/validity/protos/vkCmdDispatchIndirect.txt +++ b/doc/specs/vulkan/validity/protos/vkCmdDispatchIndirect.txt @@ -25,7 +25,7 @@ endif::doctype-manpage[] * If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage * If the <> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set * If the <> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set -* Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties +* Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties ifndef::doctype-manpage[] ******************************************************************************** endif::doctype-manpage[] diff --git a/doc/specs/vulkan/validity/protos/vkCmdDraw.txt b/doc/specs/vulkan/validity/protos/vkCmdDraw.txt index b0e12e44..4a8848b6 100644 --- a/doc/specs/vulkan/validity/protos/vkCmdDraw.txt +++ b/doc/specs/vulkan/validity/protos/vkCmdDraw.txt @@ -24,7 +24,7 @@ endif::doctype-manpage[] * If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage * If the <> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set * If the <> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set -* Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties +* Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties ifndef::doctype-manpage[] ******************************************************************************** endif::doctype-manpage[] diff --git a/doc/specs/vulkan/validity/protos/vkCmdDrawIndexed.txt b/doc/specs/vulkan/validity/protos/vkCmdDrawIndexed.txt index 94aa5840..60071f8f 100644 --- a/doc/specs/vulkan/validity/protos/vkCmdDrawIndexed.txt +++ b/doc/specs/vulkan/validity/protos/vkCmdDrawIndexed.txt @@ -25,7 +25,7 @@ endif::doctype-manpage[] * If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage * If the <> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set * If the <> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set -* Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties +* Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties ifndef::doctype-manpage[] ******************************************************************************** endif::doctype-manpage[] diff --git a/doc/specs/vulkan/validity/protos/vkCmdDrawIndexedIndirect.txt b/doc/specs/vulkan/validity/protos/vkCmdDrawIndexedIndirect.txt index 54d65d2d..1efbd99d 100644 --- a/doc/specs/vulkan/validity/protos/vkCmdDrawIndexedIndirect.txt +++ b/doc/specs/vulkan/validity/protos/vkCmdDrawIndexedIndirect.txt @@ -32,7 +32,7 @@ endif::doctype-manpage[] * If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage * If the <> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set * If the <> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set -* Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties +* Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties ifndef::doctype-manpage[] ******************************************************************************** endif::doctype-manpage[] diff --git a/doc/specs/vulkan/validity/protos/vkCmdDrawIndirect.txt b/doc/specs/vulkan/validity/protos/vkCmdDrawIndirect.txt index 52ee2b89..a41ad304 100644 --- a/doc/specs/vulkan/validity/protos/vkCmdDrawIndirect.txt +++ b/doc/specs/vulkan/validity/protos/vkCmdDrawIndirect.txt @@ -32,7 +32,7 @@ endif::doctype-manpage[] * If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage * If the <> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set * If the <> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set -* Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties +* Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties ifndef::doctype-manpage[] ******************************************************************************** endif::doctype-manpage[] diff --git a/doc/specs/vulkan/validity/protos/vkCmdResetEvent.txt b/doc/specs/vulkan/validity/protos/vkCmdResetEvent.txt index 948aad98..711bf340 100644 --- a/doc/specs/vulkan/validity/protos/vkCmdResetEvent.txt +++ b/doc/specs/vulkan/validity/protos/vkCmdResetEvent.txt @@ -17,6 +17,7 @@ endif::doctype-manpage[] * Each of pname:commandBuffer and pname:event must: have been created, allocated or retrieved from the same sname:VkDevice * If the <> feature is not enabled, pname:stageMask mustnot: contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT * If the <> feature is not enabled, pname:stageMask mustnot: contain ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT +* When this command executes, pname:event mustnot: be waited on by a fname:vkCmdWaitEvents command that is currently executing ifndef::doctype-manpage[] ******************************************************************************** endif::doctype-manpage[] diff --git a/doc/specs/vulkan/validity/protos/vkEnumerateDeviceExtensionProperties.txt b/doc/specs/vulkan/validity/protos/vkEnumerateDeviceExtensionProperties.txt index f3ad2c1b..edb44cbc 100644 --- a/doc/specs/vulkan/validity/protos/vkEnumerateDeviceExtensionProperties.txt +++ b/doc/specs/vulkan/validity/protos/vkEnumerateDeviceExtensionProperties.txt @@ -11,7 +11,7 @@ endif::doctype-manpage[] * If pname:pLayerName is not `NULL`, pname:pLayerName must: be a null-terminated string * pname:pPropertyCount must: be a pointer to a basetype:uint32_t value * If the value referenced by pname:pPropertyCount is not `0`, and pname:pProperties is not `NULL`, pname:pProperties must: be a pointer to an array of pname:pPropertyCount sname:VkExtensionProperties structures -* If pname:pLayerName is not `NULL`, it must: be the name of a device layer returned by flink:vkEnumerateDeviceLayerProperties +* If pname:pLayerName is not `NULL`, it must: be the name of a layer returned by flink:vkEnumerateDeviceLayerProperties ifndef::doctype-manpage[] ******************************************************************************** endif::doctype-manpage[] diff --git a/doc/specs/vulkan/validity/protos/vkEnumerateInstanceExtensionProperties.txt b/doc/specs/vulkan/validity/protos/vkEnumerateInstanceExtensionProperties.txt index 7a202b76..0b21ed71 100644 --- a/doc/specs/vulkan/validity/protos/vkEnumerateInstanceExtensionProperties.txt +++ b/doc/specs/vulkan/validity/protos/vkEnumerateInstanceExtensionProperties.txt @@ -10,7 +10,7 @@ endif::doctype-manpage[] * If pname:pLayerName is not `NULL`, pname:pLayerName must: be a null-terminated string * pname:pPropertyCount must: be a pointer to a basetype:uint32_t value * If the value referenced by pname:pPropertyCount is not `0`, and pname:pProperties is not `NULL`, pname:pProperties must: be a pointer to an array of pname:pPropertyCount sname:VkExtensionProperties structures -* If pname:pLayerName is not `NULL`, it must: be the name of an instance layer returned by flink:vkEnumerateInstanceLayerProperties +* If pname:pLayerName is not `NULL`, it must: be the name of a layer returned by flink:vkEnumerateInstanceLayerProperties ifndef::doctype-manpage[] ******************************************************************************** endif::doctype-manpage[] diff --git a/doc/specs/vulkan/validity/protos/vkQueueBindSparse.txt b/doc/specs/vulkan/validity/protos/vkQueueBindSparse.txt index 6f820ecf..44672ff3 100644 --- a/doc/specs/vulkan/validity/protos/vkQueueBindSparse.txt +++ b/doc/specs/vulkan/validity/protos/vkQueueBindSparse.txt @@ -12,7 +12,7 @@ endif::doctype-manpage[] * If pname:fence is not sname:VK_NULL_HANDLE, pname:fence must: be a valid sname:VkFence handle * The pname:queue must: support sparse binding operations * Each of pname:queue and pname:fence that are valid handles must: have been created, allocated or retrieved from the same sname:VkDevice -* pname:fence must: be unsignalled +* pname:fence must: be unsignaled * pname:fence mustnot: be associated with any other queue command that has not yet completed execution on that queue ifndef::doctype-manpage[] ******************************************************************************** diff --git a/doc/specs/vulkan/validity/protos/vkQueueSubmit.txt b/doc/specs/vulkan/validity/protos/vkQueueSubmit.txt index cae39038..d29228fb 100644 --- a/doc/specs/vulkan/validity/protos/vkQueueSubmit.txt +++ b/doc/specs/vulkan/validity/protos/vkQueueSubmit.txt @@ -11,8 +11,8 @@ endif::doctype-manpage[] * If pname:submitCount is not `0`, pname:pSubmits must: be a pointer to an array of pname:submitCount valid sname:VkSubmitInfo structures * If pname:fence is not sname:VK_NULL_HANDLE, pname:fence must: be a valid sname:VkFence handle * Each of pname:queue and pname:fence that are valid handles must: have been created, allocated or retrieved from the same sname:VkDevice -* pname:fence must: be unsignalled -* pname:fence mustnot: be associated with any other queue command that has not yet completed execution on that queue +* If pname:fence is not sname:VK_NULL_HANDLE, pname:fence must: be unsignaled +* If pname:fence is not sname:VK_NULL_HANDLE, pname:fence mustnot: be associated with any other queue command that has not yet completed execution on that queue ifndef::doctype-manpage[] ******************************************************************************** endif::doctype-manpage[] diff --git a/doc/specs/vulkan/validity/protos/vkResetEvent.txt b/doc/specs/vulkan/validity/protos/vkResetEvent.txt index 856449b4..0a1bda1d 100644 --- a/doc/specs/vulkan/validity/protos/vkResetEvent.txt +++ b/doc/specs/vulkan/validity/protos/vkResetEvent.txt @@ -11,6 +11,7 @@ endif::doctype-manpage[] * pname:event must: be a valid sname:VkEvent handle * pname:event must: have been created, allocated or retrieved from pname:device * Each of pname:device and pname:event must: have been created, allocated or retrieved from the same sname:VkPhysicalDevice +* pname:event mustnot: be waited on by a fname:vkCmdWaitEvents command that is currently executing ifndef::doctype-manpage[] ******************************************************************************** endif::doctype-manpage[] diff --git a/doc/specs/vulkan/validity/structs/VkBufferImageCopy.txt b/doc/specs/vulkan/validity/structs/VkBufferImageCopy.txt index 3a8df78b..bdfb59e4 100644 --- a/doc/specs/vulkan/validity/structs/VkBufferImageCopy.txt +++ b/doc/specs/vulkan/validity/structs/VkBufferImageCopy.txt @@ -16,13 +16,13 @@ endif::doctype-manpage[] * pname:imageOffset.y and (imageExtent.height + pname:imageOffset.y) must: both be greater than or equal to `0` and less than or equal to the image subresource height * pname:imageOffset.z and (imageExtent.depth + pname:imageOffset.z) must: both be greater than or equal to `0` and less than or equal to the image subresource depth * If the calling command's sname:VkImage parameter is a compressed format image: -* pname:bufferRowLength must: be a multiple of the compressed texel block width -* pname:bufferImageHeight must: be a multiple of the compressed texel block height -* all members of pname:imageOffset must: be a multiple of the corresponding dimensions of the compressed texel block -* pname:bufferOffset must: be a multiple of the compressed texel block size in bytes -* pname:imageExtent.width must: be a multiple of the compressed texel block width or (pname:imageExtent.width + pname:imageOffset.x) must: equal the image subresource width -* pname:imageExtent.height must: be a multiple of the compressed texel block height or (pname:imageExtent.height + pname:imageOffset.y) must: equal the image subresource height -* pname:imageExtent.depth must: be a multiple of the compressed texel block depth or (pname:imageExtent.depth + pname:imageOffset.z) must: equal the image subresource depth + ** pname:bufferRowLength must: be a multiple of the compressed texel block width + ** pname:bufferImageHeight must: be a multiple of the compressed texel block height + ** all members of pname:imageOffset must: be a multiple of the corresponding dimensions of the compressed texel block + ** pname:bufferOffset must: be a multiple of the compressed texel block size in bytes + ** pname:imageExtent.width must: be a multiple of the compressed texel block width or (pname:imageExtent.width + pname:imageOffset.x) must: equal the image subresource width + ** pname:imageExtent.height must: be a multiple of the compressed texel block height or (pname:imageExtent.height + pname:imageOffset.y) must: equal the image subresource height + ** pname:imageExtent.depth must: be a multiple of the compressed texel block depth or (pname:imageExtent.depth + pname:imageOffset.z) must: equal the image subresource depth * pname:bufferOffset, pname:bufferRowLength, pname:bufferImageHeight and all members of pname:imageOffset and pname:imageExtent must: respect the image transfer granularity requirements of the queue family that it will be submitted against, as described in <> * The pname:aspectMask member of pname:imageSubresource must: specify aspects present in the calling command's sname:VkImage parameter * The pname:aspectMask member of pname:imageSubresource must: only have a single bit set diff --git a/doc/specs/vulkan/validity/structs/VkBufferViewCreateInfo.txt b/doc/specs/vulkan/validity/structs/VkBufferViewCreateInfo.txt index 9d9efb1d..adae18c6 100644 --- a/doc/specs/vulkan/validity/structs/VkBufferViewCreateInfo.txt +++ b/doc/specs/vulkan/validity/structs/VkBufferViewCreateInfo.txt @@ -15,10 +15,10 @@ endif::doctype-manpage[] * pname:offset must: be less than the size of pname:buffer * pname:offset must: be a multiple of sname:VkPhysicalDeviceLimits::pname:minTexelBufferOffsetAlignment * If pname:range is not equal to ename:VK_WHOLE_SIZE: -* pname:range must: be greater than `0` -* pname:range must: be a multiple of the element size of pname:format -* pname:range divided by the size of an element of pname:format, must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxTexelBufferElements -* the sum of pname:offset and pname:range must: be less than or equal to the size of pname:buffer + ** pname:range must: be greater than `0` + ** pname:range must: be a multiple of the element size of pname:format + ** pname:range divided by the size of an element of pname:format, must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxTexelBufferElements + ** the sum of pname:offset and pname:range must: be less than or equal to the size of pname:buffer * pname:buffer must: have been created with a pname:usage value containing at least one of ename:VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT or ename:VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT * If pname:buffer was created with pname:usage containing ename:VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT, pname:format must: be supported for uniform texel buffers, as specified by the ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT flag in sname:VkFormatProperties::pname:bufferFeatures returned by fname:vkGetPhysicalDeviceFormatProperties * If pname:buffer was created with pname:usage containing ename:VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT, pname:format must: be supported for storage texel buffers, as specified by the ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT flag in sname:VkFormatProperties::pname:bufferFeatures returned by fname:vkGetPhysicalDeviceFormatProperties diff --git a/doc/specs/vulkan/validity/structs/VkDeviceCreateInfo.txt b/doc/specs/vulkan/validity/structs/VkDeviceCreateInfo.txt index 2578a59b..e2e546a3 100644 --- a/doc/specs/vulkan/validity/structs/VkDeviceCreateInfo.txt +++ b/doc/specs/vulkan/validity/structs/VkDeviceCreateInfo.txt @@ -15,7 +15,7 @@ endif::doctype-manpage[] * If pname:enabledExtensionCount is not `0`, pname:ppEnabledExtensionNames must: be a pointer to an array of pname:enabledExtensionCount null-terminated strings * If pname:pEnabledFeatures is not `NULL`, pname:pEnabledFeatures must: be a pointer to a valid sname:VkPhysicalDeviceFeatures structure * pname:queueCreateInfoCount must: be greater than `0` -* Any given element of pname:ppEnabledLayerNames must: be the name of a layer present on the system, exactly matching a string returned in the sname:VkLayerProperties structure by fname:vkEnumerateDeviceLayerProperties +* pname:ppEnabledLayerNames must: either be sname:NULL or contain the same sequence of layer names that was enabled when creating the parent instance * Any given element of pname:ppEnabledExtensionNames must: be the name of an extension present on the system, exactly matching a string returned in the sname:VkExtensionProperties structure by fname:vkEnumerateDeviceExtensionProperties * If an extension listed in pname:ppEnabledExtensionNames is provided as part of a layer, then both the layer and extension must: be enabled to enable that extension * The pname:queueFamilyIndex member of any given element of pname:pQueueCreateInfos must: be unique within pname:pQueueCreateInfos diff --git a/doc/specs/vulkan/validity/structs/VkImageCopy.txt b/doc/specs/vulkan/validity/structs/VkImageCopy.txt index 0254a1d7..fca2cdf4 100644 --- a/doc/specs/vulkan/validity/structs/VkImageCopy.txt +++ b/doc/specs/vulkan/validity/structs/VkImageCopy.txt @@ -21,15 +21,15 @@ endif::doctype-manpage[] * pname:dstOffset.y and (pname:extent.height + pname:dstOffset.y) must: both be greater than or equal to `0` and less than or equal to the destination image subresource height * pname:dstOffset.z and (pname:extent.depth + pname:dstOffset.z) must: both be greater than or equal to `0` and less than or equal to the destination image subresource depth * If the calling command's pname:srcImage is a compressed format image: -* all members of pname:srcOffset must: be a multiple of the corresponding dimensions of the compressed texel block -* pname:extent.width must: be a multiple of the compressed texel block width or (pname:extent.width + pname:srcOffset.x) must: equal the source image subresource width -* pname:extent.height must: be a multiple of the compressed texel block height or (pname:extent.height + pname:srcOffset.y) must: equal the source image subresource height -* pname:extent.depth must: be a multiple of the compressed texel block depth or (pname:extent.depth + pname:srcOffset.z) must: equal the source image subresource depth + ** all members of pname:srcOffset must: be a multiple of the corresponding dimensions of the compressed texel block + ** pname:extent.width must: be a multiple of the compressed texel block width or (pname:extent.width + pname:srcOffset.x) must: equal the source image subresource width + ** pname:extent.height must: be a multiple of the compressed texel block height or (pname:extent.height + pname:srcOffset.y) must: equal the source image subresource height + ** pname:extent.depth must: be a multiple of the compressed texel block depth or (pname:extent.depth + pname:srcOffset.z) must: equal the source image subresource depth * If the calling command's pname:dstImage is a compressed format image: -* all members of pname:dstOffset must: be a multiple of the corresponding dimensions of the compressed texel block -* pname:extent.width must: be a multiple of the compressed texel block width or (pname:extent.width + pname:dstOffset.x) must: equal the destination image subresource width -* pname:extent.height must: be a multiple of the compressed texel block height or (pname:extent.height + pname:dstOffset.y) must: equal the destination image subresource height -* pname:extent.depth must: be a multiple of the compressed texel block depth or (pname:extent.depth + pname:dstOffset.z) must: equal the destination image subresource depth + ** all members of pname:dstOffset must: be a multiple of the corresponding dimensions of the compressed texel block + ** pname:extent.width must: be a multiple of the compressed texel block width or (pname:extent.width + pname:dstOffset.x) must: equal the destination image subresource width + ** pname:extent.height must: be a multiple of the compressed texel block height or (pname:extent.height + pname:dstOffset.y) must: equal the destination image subresource height + ** pname:extent.depth must: be a multiple of the compressed texel block depth or (pname:extent.depth + pname:dstOffset.z) must: equal the destination image subresource depth * pname:srcOffset, pname:dstOffset, and pname:extent must: respect the image transfer granularity requirements of the queue family that it will be submitted against, as described in <> ifndef::doctype-manpage[] ******************************************************************************** diff --git a/doc/specs/vulkan/validity/structs/VkSubmitInfo.txt b/doc/specs/vulkan/validity/structs/VkSubmitInfo.txt index 4a644444..39a81fa2 100644 --- a/doc/specs/vulkan/validity/structs/VkSubmitInfo.txt +++ b/doc/specs/vulkan/validity/structs/VkSubmitInfo.txt @@ -15,7 +15,7 @@ endif::doctype-manpage[] * If pname:commandBufferCount is not `0`, pname:pCommandBuffers must: be a pointer to an array of pname:commandBufferCount valid sname:VkCommandBuffer handles * If pname:signalSemaphoreCount is not `0`, pname:pSignalSemaphores must: be a pointer to an array of pname:signalSemaphoreCount valid sname:VkSemaphore handles * Each of the elements of pname:pWaitSemaphores, the elements of pname:pCommandBuffers and the elements of pname:pSignalSemaphores that are valid handles must: have been created, allocated or retrieved from the same sname:VkDevice -* Any given element of pname:pSignalSemaphores must: currently be unsignalled +* Any given element of pname:pSignalSemaphores must: currently be unsignaled * Any given element of pname:pCommandBuffers must: either have been recorded with the ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT, or not currently be executing on the device * Any given element of pname:pCommandBuffers must: be in the executable state * If any given element of pname:pCommandBuffers contains commands that execute secondary command buffers, those secondary command buffers must: have been recorded with the ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT, or not currently be executing on the device diff --git a/doc/specs/vulkan/vkapi.py b/doc/specs/vulkan/vkapi.py index 4b29f962..bb5800a9 100644 --- a/doc/specs/vulkan/vkapi.py +++ b/doc/specs/vulkan/vkapi.py @@ -113,7 +113,11 @@ consts['VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR'] = 'VkStructureType' consts['VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR'] = 'VkStructureType' consts['VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR'] = 'VkStructureType' consts['VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT'] = 'VkStructureType' -enums['VkStructureType'] = ['VK_STRUCTURE_TYPE_APPLICATION_INFO', 'VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO', 'VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO', 'VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO', 'VK_STRUCTURE_TYPE_SUBMIT_INFO', 'VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO', 'VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE', 'VK_STRUCTURE_TYPE_BIND_SPARSE_INFO', 'VK_STRUCTURE_TYPE_FENCE_CREATE_INFO', 'VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO', 'VK_STRUCTURE_TYPE_EVENT_CREATE_INFO', 'VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO', 'VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO', 'VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO', 'VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO', 'VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO', 'VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO', 'VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO', 'VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO', 'VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO', 'VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO', 'VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO', 'VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET', 'VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET', 'VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO', 'VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO', 'VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO', 'VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO', 'VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO', 'VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO', 'VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO', 'VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER', 'VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER', 'VK_STRUCTURE_TYPE_MEMORY_BARRIER', 'VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO', 'VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO', 'VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_PRESENT_INFO_KHR', 'VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR', 'VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT'] +consts['VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT'] = 'VkStructureType' +consts['VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT'] = 'VkStructureType' +enums['VkStructureType'] = ['VK_STRUCTURE_TYPE_APPLICATION_INFO', 'VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO', 'VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO', 'VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO', 'VK_STRUCTURE_TYPE_SUBMIT_INFO', 'VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO', 'VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE', 'VK_STRUCTURE_TYPE_BIND_SPARSE_INFO', 'VK_STRUCTURE_TYPE_FENCE_CREATE_INFO', 'VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO', 'VK_STRUCTURE_TYPE_EVENT_CREATE_INFO', 'VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO', 'VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO', 'VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO', 'VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO', 'VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO', 'VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO', 'VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO', 'VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO', 'VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO', 'VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO', 'VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO', 'VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET', 'VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET', 'VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO', 'VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO', 'VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO', 'VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO', 'VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO', 'VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO', 'VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO', 'VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER', 'VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER', 'VK_STRUCTURE_TYPE_MEMORY_BARRIER', 'VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO', 'VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO', 'VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_PRESENT_INFO_KHR', 'VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR', 'VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT', 'VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD', 'VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT', 'VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT', 'VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT'] # Unprocessed type: void # Unprocessed type: uint32_t # Unprocessed type: VkFlags category: basetype @@ -988,7 +992,7 @@ protos['vkCmdCopyBuffer'] = ['commandBuffer', 'srcBuffer', 'dstBuffer', 'region structs['VkImageSubresourceLayers'] = ['aspectMask', 'mipLevel', 'baseArrayLayer', 'layerCount'] structs['VkImageCopy'] = ['srcSubresource', 'srcOffset', 'dstSubresource', 'dstOffset', 'extent'] protos['vkCmdCopyImage'] = ['commandBuffer', 'srcImage', 'srcImageLayout', 'dstImage', 'dstImageLayout', 'regionCount', 'pRegions'] -structs['VkImageBlit'] = ['srcSubresource', 'srcOffsets[2]', 'dstSubresource', 'dstOffsets[2]'] +structs['VkImageBlit'] = ['srcSubresource', 'srcOffsets', 'dstSubresource', 'dstOffsets'] protos['vkCmdBlitImage'] = ['commandBuffer', 'srcImage', 'srcImageLayout', 'dstImage', 'dstImageLayout', 'regionCount', 'pRegions', 'filter'] structs['VkBufferImageCopy'] = ['bufferOffset', 'bufferRowLength', 'bufferImageHeight', 'imageSubresource', 'imageOffset', 'imageExtent'] protos['vkCmdCopyBufferToImage'] = ['commandBuffer', 'srcBuffer', 'dstImage', 'dstImageLayout', 'regionCount', 'pRegions'] diff --git a/doc/specs/vulkan/vkspec.txt b/doc/specs/vulkan/vkspec.txt index 70d7dbc8..f4de8be6 100644 --- a/doc/specs/vulkan/vkspec.txt +++ b/doc/specs/vulkan/vkspec.txt @@ -3,7 +3,7 @@ include::specversion.txt[] -= {apiname} {apirevision} - A Specification += Vulkan {apirevision} - A Specification The Khronos Vulkan Working Group :icons: :toc2: diff --git a/out/index.html b/out/index.html index cfc7ba88..8c155c73 100644 --- a/out/index.html +++ b/out/index.html @@ -9,9 +9,11 @@ related documents. It is updated by hand periodically by Jon Leech.

    -
  • The Vulkan Style Guide is a work - in progress (but significantly complete) document, useful when - writing and modifying Specification and reference page language. +
  • The Vulkan Style Guide is a work in + progress (but significantly complete) document, useful when writing + and modifying Specification and reference page language.
  • +
  • The XML Registry README describes the + schema and some use cases for vk.xml.
  • Core API Specifications
  • The following targets are for internal use only and are probably - not included in, or if included, not up to date in the sandbox -
  • + not included in, or if included, not up to date in the sandbox +
diff --git a/src/spec/Makefile b/src/spec/Makefile index b8f15fe4..8c999d14 100644 --- a/src/spec/Makefile +++ b/src/spec/Makefile @@ -19,6 +19,7 @@ PYTHON ?= python3 PYFILES = genheaders.py reg.py GENOPTS = GENHEADERS = genheaders.py $(GENOPTS) +OUTDIR = ../../out/1.0 # Generate all outputs for Vulkan, including headers and (soon) Asciidoc # frameworks. Targets: @@ -39,7 +40,7 @@ DOCROOT = ../../doc/specs/vulkan DOCPYSRC = $(DOCROOT)/vkapi.py DOCVALIDITY = validity DOCHOSTSYNCTABLE = hostsynctable -XMLDOC = readme.pdf +XMLDOC = $(OUTDIR)/readme.pdf # Could add $(XMLDOC) to default, but that requires a LaTeX install. # Could regenerate vk.json automatically but the generator script isn't @@ -50,6 +51,8 @@ default install: $(HEADERS) full_install: default $(DOCINCLUDES) $(DOCPYSRC) $(DOCVALIDITY) $(DOCHOSTSYNCTABLE) +pdf_install: $(OUTDIR)/readme.pdf + ################################################ # Python and XML files on which vulkan.h depends @@ -97,12 +100,13 @@ vk.json: tojson.py vk.xml ################################################ # Documentation targets -readme.pdf: readme.tex Makefile +$(OUTDIR)/readme.pdf: readme.tex Makefile touch readme.ind pdflatex readme.tex pdflatex readme.tex makeindex readme.idx pdflatex readme.tex + mv readme.pdf $@ ################################################ @@ -128,6 +132,7 @@ clean: # (installed header & asciidoc includes) clobber: clean -rm -f $(HEADERS) $(DOCINCLUDES) + -rm -f $(OUTDIR)/readme.pdf -rm -f $(DOCROOT)/vkapi.py -rm -f $(DOCROOT)/structs/*.txt $(DOCROOT)/protos/*.txt -rm -f $(DOCROOT)/enums/*.txt $(DOCROOT)/flags/*.txt diff --git a/src/spec/generator.py b/src/spec/generator.py index 00a274be..c9b09b0a 100644 --- a/src/spec/generator.py +++ b/src/spec/generator.py @@ -1745,11 +1745,14 @@ class ValidityOutputGenerator(OutputGenerator): asciidoc += self.makeParameterName(paramname.text) validextensionstructs = param.attrib.get('validextensionstructs') - if validextensionstructs is None: - asciidoc += ' must: be `NULL`' - else: - extensionstructs = validextensionstructs.split(',') - asciidoc += ' must: point to one of ' + extensionstructs[:-1].join(', ') + ' or ' + extensionstructs[-1] + 'if the extension that introduced them is enabled ' + asciidoc += ' must: be `NULL`' + if validextensionstructs is not None: + extensionstructs = ['slink:' + x for x in validextensionstructs.split(',')] + asciidoc += ', or a pointer to a valid instance of ' + if len(extensionstructs) == 1: + asciidoc += validextensionstructs + else: + asciidoc += (', ').join(extensionstructs[:-1]) + ' or ' + extensionstructs[-1] asciidoc += '\n' diff --git a/src/spec/readme.pdf b/src/spec/readme.pdf deleted file mode 100644 index 1353273e..00000000 --- a/src/spec/readme.pdf +++ /dev/null @@ -1,4593 +0,0 @@ -%PDF-1.5 -%ÐÔÅØ -1 0 obj -<< /S /GoTo /D (section.1) >> -endobj -4 0 obj -(1 Introduction) -endobj -5 0 obj -<< /S /GoTo /D (subsection.1.1) >> -endobj -8 0 obj -(1.1 Schema Choices) -endobj -9 0 obj -<< /S /GoTo /D (section.2) >> -endobj -12 0 obj -(2 Getting Started) -endobj -13 0 obj -<< /S /GoTo /D (subsection.2.1) >> -endobj -16 0 obj -(2.1 Header Generation Script - genvk.py) -endobj -17 0 obj -<< /S /GoTo /D (subsection.2.2) >> -endobj -20 0 obj -(2.2 Registry Processing Script - reg.py) -endobj -21 0 obj -<< /S /GoTo /D (subsection.2.3) >> -endobj -24 0 obj -(2.3 Output Generator Script - generator.py) -endobj -25 0 obj -<< /S /GoTo /D (section.3) >> -endobj -28 0 obj -(3 Vulkan Registry Schema) -endobj -29 0 obj -<< /S /GoTo /D (subsection.3.1) >> -endobj -32 0 obj -(3.1 Profiles) -endobj -33 0 obj -<< /S /GoTo /D (subsection.3.2) >> -endobj -36 0 obj -(3.2 API Names) -endobj -37 0 obj -<< /S /GoTo /D (section.4) >> -endobj -40 0 obj -(4 Registry Root \( tag\)) -endobj -41 0 obj -<< /S /GoTo /D (subsection.4.1) >> -endobj -44 0 obj -(4.1 Attributes of tags) -endobj -45 0 obj -<< /S /GoTo /D (subsection.4.2) >> -endobj -48 0 obj -(4.2 Contents of tags) -endobj -49 0 obj -<< /S /GoTo /D (section.5) >> -endobj -52 0 obj -(5 Vendor IDs \( tag\)) -endobj -53 0 obj -<< /S /GoTo /D (subsection.5.1) >> -endobj -56 0 obj -(5.1 Attributes of tags) -endobj -57 0 obj -<< /S /GoTo /D (section.6) >> -endobj -60 0 obj -(6 Author Prefixes \( tag\)) -endobj -61 0 obj -<< /S /GoTo /D (subsection.6.1) >> -endobj -64 0 obj -(6.1 Attributes of tags) -endobj -65 0 obj -<< /S /GoTo /D (section.7) >> -endobj -68 0 obj -(7 API types \( tag\)) -endobj -69 0 obj -<< /S /GoTo /D (subsection.7.1) >> -endobj -72 0 obj -(7.1 Attributes of tags) -endobj -73 0 obj -<< /S /GoTo /D (subsection.7.2) >> -endobj -76 0 obj -(7.2 Contents of tags) -endobj -77 0 obj -<< /S /GoTo /D (subsubsection.7.2.1) >> -endobj -80 0 obj -(7.2.1 Enumerated types - category "enum") -endobj -81 0 obj -<< /S /GoTo /D (subsubsection.7.2.2) >> -endobj -84 0 obj -(7.2.2 Structure types - category "struct" or "union") -endobj -85 0 obj -<< /S /GoTo /D (section*.2) >> -endobj -88 0 obj -(Structure member \(\) tags) -endobj -89 0 obj -<< /S /GoTo /D (section*.3) >> -endobj -92 0 obj -(Attributes of tags) -endobj -93 0 obj -<< /S /GoTo /D (section*.4) >> -endobj -96 0 obj -(Contents of tags) -endobj -97 0 obj -<< /S /GoTo /D (section*.5) >> -endobj -100 0 obj -(Validation \(\) tags) -endobj -101 0 obj -<< /S /GoTo /D (section*.6) >> -endobj -104 0 obj -(Contents of tags) -endobj -105 0 obj -<< /S /GoTo /D (subsubsection.7.2.3) >> -endobj -108 0 obj -(7.2.3 All other types) -endobj -109 0 obj -<< /S /GoTo /D (subsection.7.3) >> -endobj -112 0 obj -(7.3 Example of a tag) -endobj -113 0 obj -<< /S /GoTo /D (section.8) >> -endobj -116 0 obj -(8 Enumerant Blocks \( tag\)) -endobj -117 0 obj -<< /S /GoTo /D (subsection.8.1) >> -endobj -120 0 obj -(8.1 Attributes of tags) -endobj -121 0 obj -<< /S /GoTo /D (subsection.8.2) >> -endobj -124 0 obj -(8.2 Contents of tags) -endobj -125 0 obj -<< /S /GoTo /D (subsection.8.3) >> -endobj -128 0 obj -(8.3 Example of tags) -endobj -129 0 obj -<< /S /GoTo /D (section.9) >> -endobj -132 0 obj -(9 Enumerants \( tag\)) -endobj -133 0 obj -<< /S /GoTo /D (subsection.9.1) >> -endobj -136 0 obj -(9.1 Attributes of tags) -endobj -137 0 obj -<< /S /GoTo /D (subsection.9.2) >> -endobj -140 0 obj -(9.2 Contents of tags) -endobj -141 0 obj -<< /S /GoTo /D (section.10) >> -endobj -144 0 obj -(10 Unused Enumerants \( tag\)) -endobj -145 0 obj -<< /S /GoTo /D (subsection.10.1) >> -endobj -148 0 obj -(10.1 Attributes of tags) -endobj -149 0 obj -<< /S /GoTo /D (subsection.10.2) >> -endobj -152 0 obj -(10.2 Contents of tags) -endobj -153 0 obj -<< /S /GoTo /D (section.11) >> -endobj -156 0 obj -(11 Command Blocks \( tag\)) -endobj -157 0 obj -<< /S /GoTo /D (subsection.11.1) >> -endobj -160 0 obj -(11.1 Attributes of tags) -endobj -161 0 obj -<< /S /GoTo /D (subsection.11.2) >> -endobj -164 0 obj -(11.2 Contents of tags) -endobj -165 0 obj -<< /S /GoTo /D (section.12) >> -endobj -168 0 obj -(12 Commands \( tag\)) -endobj -169 0 obj -<< /S /GoTo /D (subsection.12.1) >> -endobj -172 0 obj -(12.1 Attributes of tags) -endobj -173 0 obj -<< /S /GoTo /D (subsection.12.2) >> -endobj -176 0 obj -(12.2 Contents of tags) -endobj -177 0 obj -<< /S /GoTo /D (subsection.12.3) >> -endobj -180 0 obj -(12.3 Command prototype \( tags\)) -endobj -181 0 obj -<< /S /GoTo /D (subsubsection.12.3.1) >> -endobj -184 0 obj -(12.3.1 Attributes of tags) -endobj -185 0 obj -<< /S /GoTo /D (subsubsection.12.3.2) >> -endobj -188 0 obj -(12.3.2 Contents of tags) -endobj -189 0 obj -<< /S /GoTo /D (subsection.12.4) >> -endobj -192 0 obj -(12.4 Command parameter \( tags\)) -endobj -193 0 obj -<< /S /GoTo /D (subsubsection.12.4.1) >> -endobj -196 0 obj -(12.4.1 Attributes of tags) -endobj -197 0 obj -<< /S /GoTo /D (subsubsection.12.4.2) >> -endobj -200 0 obj -(12.4.2 Contents of tags) -endobj -201 0 obj -<< /S /GoTo /D (subsection.12.5) >> -endobj -204 0 obj -(12.5 Example of a tag) -endobj -205 0 obj -<< /S /GoTo /D (subsection.12.6) >> -endobj -208 0 obj -(12.6 Parameter validation \(\) tags) -endobj -209 0 obj -<< /S /GoTo /D (section*.7) >> -endobj -212 0 obj -(Contents of tags) -endobj -213 0 obj -<< /S /GoTo /D (section.13) >> -endobj -216 0 obj -(13 API Features / Versions \( tag\)) -endobj -217 0 obj -<< /S /GoTo /D (subsection.13.1) >> -endobj -220 0 obj -(13.1 Attributes of tags) -endobj -221 0 obj -<< /S /GoTo /D (subsection.13.2) >> -endobj -224 0 obj -(13.2 Contents of tags) -endobj -225 0 obj -<< /S /GoTo /D (subsection.13.3) >> -endobj -228 0 obj -(13.3 Example of a tag) -endobj -229 0 obj -<< /S /GoTo /D (section.14) >> -endobj -232 0 obj -(14 Extension Blocks \( tag\)) -endobj -233 0 obj -<< /S /GoTo /D (subsection.14.1) >> -endobj -236 0 obj -(14.1 Attributes of tags) -endobj -237 0 obj -<< /S /GoTo /D (subsection.14.2) >> -endobj -240 0 obj -(14.2 Contents of tags) -endobj -241 0 obj -<< /S /GoTo /D (section.15) >> -endobj -244 0 obj -(15 API Extensions \( tag\)) -endobj -245 0 obj -<< /S /GoTo /D (subsection.15.1) >> -endobj -248 0 obj -(15.1 Attributes of tags) -endobj -249 0 obj -<< /S /GoTo /D (subsection.15.2) >> -endobj -252 0 obj -(15.2 Contents of tags) -endobj -253 0 obj -<< /S /GoTo /D (subsection.15.3) >> -endobj -256 0 obj -(15.3 Example of an tag) -endobj -257 0 obj -<< /S /GoTo /D (section.16) >> -endobj -260 0 obj -(16 Required and Removed Interfaces \( and tags\)) -endobj -261 0 obj -<< /S /GoTo /D (subsection.16.1) >> -endobj -264 0 obj -(16.1 Attributes of and tags) -endobj -265 0 obj -<< /S /GoTo /D (subsection.16.2) >> -endobj -268 0 obj -(16.2 Contents of and tags) -endobj -269 0 obj -<< /S /GoTo /D (subsection.16.3) >> -endobj -272 0 obj -(16.3 Examples of Extension Enumerants) -endobj -273 0 obj -<< /S /GoTo /D (appendix.A) >> -endobj -276 0 obj -(A Examples / FAQ / How Do I?) -endobj -277 0 obj -<< /S /GoTo /D (subsection.A.1) >> -endobj -280 0 obj -(A.1 General Strategy) -endobj -281 0 obj -<< /S /GoTo /D (subsection.A.2) >> -endobj -284 0 obj -(A.2 API Feature Dependencies) -endobj -285 0 obj -<< /S /GoTo /D (subsubsection.A.2.1) >> -endobj -288 0 obj -(A.2.1 API Feature Walkthrough) -endobj -289 0 obj -<< /S /GoTo /D (subsection.A.3) >> -endobj -292 0 obj -(A.3 How To Add A Compile-Time Constant) -endobj -293 0 obj -<< /S /GoTo /D (subsection.A.4) >> -endobj -296 0 obj -(A.4 How To Add A Struct or Union Type) -endobj -297 0 obj -<< /S /GoTo /D (subsection.A.5) >> -endobj -300 0 obj -(A.5 How To Add An Enumerated Type) -endobj -301 0 obj -<< /S /GoTo /D (subsection.A.6) >> -endobj -304 0 obj -(A.6 How to Add A Command) -endobj -305 0 obj -<< /S /GoTo /D (subsection.A.7) >> -endobj -308 0 obj -(A.7 More Complicated API Representations) -endobj -309 0 obj -<< /S /GoTo /D (subsection.A.8) >> -endobj -312 0 obj -(A.8 More Complicated Output Formats And Other Languages) -endobj -313 0 obj -<< /S /GoTo /D (subsection.A.9) >> -endobj -316 0 obj -(A.9 Additional Semantic Tagging) -endobj -317 0 obj -<< /S /GoTo /D (subsection.A.10) >> -endobj -320 0 obj -(A.10 Stability of the XML Database and Schema) -endobj -321 0 obj -<< /S /GoTo /D (appendix.B) >> -endobj -324 0 obj -(B Change Log) -endobj -325 0 obj -<< /S /GoTo /D [326 0 R /Fit] >> -endobj -348 0 obj << -/Length 1414 -/Filter /FlateDecode ->> -stream -xÚÝXmoÛ6þž_¡20Ñ|)q(d閥Ͷ"õŠí>(c ±%C¢Òåßï(R²¬ÈyYЭ̓ßîî¹»‡Gcoéaïôh\ͱG"D ½Å•G±Px‚pÄ$õ™÷Ñ_¬Ô, ûoWUY”µýø0‹¸ß¬¯“Â~¿;³ 5#Ü_æµ®níÈUYÝÙó×âN䜶ÂCq{Q,‰þ¦tçŸ+•®Ì6/`áÀ:†¨Œìºó¤Öva³Í­2ûA1sL甚­w ¨#)Dk~HQÄe+ Ü|| †$©>´ö„“:…Lvøå3úY™6UE%÷3U§U~©Ü¤na†ñÌ0º3LZ˜ab3LÕéJm’ïfÃÜOŠÌŽn«2°°†B Äj7yÖŠүˑa?ɲ\çe‘¬íL^€7‰²ÉeÙh»¶©óbiG­þЩö53'¶Ê!`ðV;‰º´³KU¨ -\Öj‰÷LÀBü›“ª\é[3@ýòÊN€"ÛF×Æh¦éºÉZÌ¢»f¥’LUvèÆtmL6‰k?«õÚNw#µ2oŒ š›Ô·Ûn§oÖ§y^RÝ*˜0ÆrᣩMxš^^ضÅÎt†î6ß­»£~½UinNI#Ìl‹«éTêJUªHÝ)Ûd©j4 8—6{[©E°§flÕhÖ·Ö‰!÷ÿüõÜvz…͇õ_(þ3£•²u™ºŒƒ6H µáÃ>¶Íå:Omÿ4׫æÒ¬*‡¶;»ž‚ô‹óÉ4{×^×{;NmΑ0© ‰)™ãŒ•ÖÛúûù|i ±Òr3…g$öÒ§¶×lçf’Zǯ˴ÞScÌ@#w²ÄˆD“F¯Ê*×àÆ]ŒÙ©´ÜÎökš3­îvÞ%ÖÜqñ&É ¿Žõòb·Õm8ÐçLAõV3‚pÏÆ»E†,BÙ­¹¬’"]!·ŽÂ=a®‰–µ!•)’hè[ÐÐn8) DW÷;$œL…Ù>¥pN 3p1ÆþY¡-ØY“¶n¶Î¬–Ϋ§GÞGÃóÙ]ìd€~lìíÒÙÙŠXÞ·Di!:Y•yjÓšú&e@•o¼â2  Á›¾w8€$Ž1¨óØ©ÒÚ‡ÁT'•á€Ã^ã± ~øT¯ÑÞk¿87ÒNí•‘wÅÁû–—l?p1O†ØÜE<\87×h{Û‡ýn!mdº…_Óø¤Ó±X"Gc訃î.s¼«Jˆúzç¾(ŠDL¥–Óø…Pš1ù?à÷$ÅA ”o| #s0þÞ{ØU¶âG#Ä1D Ý=b`³ÿÄçà5æ -J$"ß' æÈbwv—Ù0#&"c2RãäÁzò€xï+šªç—Áô_,ðÇŽIúWÞoɦÅòÅÜš_./¦îÐÐ¥Å~\”¥ãOöD‰¸g‘W•ÛýÃD™%LÕ¶N–p$9œa$Ʊ¸?ÃCb³ýØû;Öž³3 -¯B­ê¾ˆ°ž×ð=d[ ¬€s9/"ÉàA#BèÏ.×úú$ ”Üä_#)ù7–pÑ#.F1£ûÇû‹_YwuŸ½®ïÍ9¥U_ѼºiwæY=™s1¢éÏ9NåȦ»9GQûn„vÊuV¼Ø”{d pxp±(ÂÊñÌü™hë]Élž§Ê”«ûC&Ž<'{´ †SáéÏø(ZF?.£ˆŽÊ ñìxݦB…Amɯ6TžFñ¿›ƒ‡€¬„WWßôÿg ·ü´8úZèJ -endstream -endobj -326 0 obj << -/Type /Page -/Contents 348 0 R -/Resources 347 0 R -/MediaBox [0 0 612 792] -/Parent 356 0 R -/Annots [ 327 0 R 328 0 R 329 0 R 330 0 R 331 0 R 332 0 R 333 0 R 334 0 R 335 0 R 336 0 R 337 0 R 338 0 R 339 0 R 340 0 R 341 0 R 342 0 R 343 0 R ] ->> endobj -327 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [213.338 436.348 397.91 446.343] -/Subtype/Link/A<> ->> endobj -328 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 365.207 478.476 374.203] -/A << /S /GoTo /D (section.1) >> ->> endobj -329 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 353.252 478.476 362.178] -/A << /S /GoTo /D (subsection.1.1) >> ->> endobj -330 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 331.473 478.476 340.33] -/A << /S /GoTo /D (section.2) >> ->> endobj -331 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 319.379 478.476 328.305] -/A << /S /GoTo /D (subsection.2.1) >> ->> endobj -332 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 307.423 478.476 316.35] -/A << /S /GoTo /D (subsection.2.2) >> ->> endobj -333 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 295.468 478.476 304.395] -/A << /S /GoTo /D (subsection.2.3) >> ->> endobj -334 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 273.55 478.476 282.547] -/A << /S /GoTo /D (section.3) >> ->> endobj -335 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 261.595 478.476 270.522] -/A << /S /GoTo /D (subsection.3.1) >> ->> endobj -336 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 249.64 478.476 258.566] -/A << /S /GoTo /D (subsection.3.2) >> ->> endobj -337 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 227.722 478.476 236.718] -/A << /S /GoTo /D (section.4) >> ->> endobj -338 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 215.767 478.476 224.693] -/A << /S /GoTo /D (subsection.4.1) >> ->> endobj -339 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 203.877 478.476 212.599] -/A << /S /GoTo /D (subsection.4.2) >> ->> endobj -340 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 182.034 478.476 190.726] -/A << /S /GoTo /D (section.5) >> ->> endobj -341 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 170.004 478.476 178.726] -/A << /S /GoTo /D (subsection.5.1) >> ->> endobj -342 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 148.161 478.476 156.853] -/A << /S /GoTo /D (section.6) >> ->> endobj -343 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 136.066 478.476 144.992] -/A << /S /GoTo /D (subsection.6.1) >> ->> endobj -349 0 obj << -/D [326 0 R /XYZ 132.768 705.06 null] ->> endobj -350 0 obj << -/D [326 0 R /XYZ 133.768 667.198 null] ->> endobj -354 0 obj << -/D [326 0 R /XYZ 133.768 406.542 null] ->> endobj -347 0 obj << -/Font << /F40 351 0 R /F42 352 0 R /F44 353 0 R /F48 355 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -398 0 obj << -/Length 1388 -/Filter /FlateDecode ->> -stream -xÚåšMoÛF†ïþ7—”pØþ._ ÞÉ<ˆã‚˜b@ÖÃ0DGé,Ý\g›4é‰R‚=ˆÒS~'Ï)ú´Èø—Íê~½òÿÒþO>`ˆ’¢à£ü· ˜,“å·$íLäZõ Ôª_ѤV¡‰yužÆ=÷\·Ö§Ô€IÂŒ­FQï!±zÀ©ÆŒG¢H•‰‹r°€WpõÈøÂMõ „œl&·–P0U\Ÿg˜ãÅÃýÍ"ÃÜЩ>¡°Û&¥óïnÕ}öÜHÎŒ¨6ý)`GE Üy@[ÃL‘mê:8ʺhañ`*è-´¤Sb$1!$WÿxQÿ. -VÙ_e’/Š ¡j -]Ôë€b˜¤!¨ƒ:§äÚÕËËLJdUùqÑT ‘¬ÅÑÐ.GƒÅO¨I“…F²“›Ç€bÛÊ4h¿SXÇ¢e]eðÛ‡õõßÝÒ5dðÒ¶ž»V´ÝBòÞ4g&Öé!Y"5¯m"+{è 'R6í¨a­-þ°:h¹Ìÿ8ˆê‰$»V¸ s¨ܶl×Ìf §Ë¶žî(1Î9äéÎx6LwÝ9Ns„XMM®6Ù3$£Šñx÷” ;K¡«qb_%Áý4S2-|Ș̎Ls?Û˜¬ qML‹¼*‚Ä®0¿×§Õæ©—õ'Pîþ¥Ùä—hÒgnZYÿDZI÷éæ8m N¡r„@«›Øç¼íÑIt¬(™"€b ©2Ou¸(‡ñTrÚB=+£"F«@ˆàïõn½\.V7½mÖ)N_æ×~y£È=½"CÐážšd¨xÅñóH†ÛØ7šÇãF…Š ´QPz°‡¢´òDU' 1<,¬¢º=Ïl-Ò†` žÊ‡æ½•†e™íU¦aCƒy°WRZc†w᧩V¼v½!BŒ¿€Ö[_ fªµN¶¶ØB-LyÉs§¼=¦ëlí…Ý}&¾…íë<_ÕÏrû)¿F·7=Œ—nlWãè¯éÁAÌÎÄb>lÈ~d]ˆè×…l È<ÁÚ6”H£cÇO@Ëî¡5¯#Mb^¤‹e’íy\¸ZÊ¢nÕ1KiŽ—£j3'Vë:ÇÑbîobV½Ä¬v.æ!ì&$f5PÌÒ‹ùÐ}{ý…®<ëSbjNM·ò¤D[Vã©<Ï3q5'~Ÿ1ÙóÅ÷N•ìÞlÔN‚&(BùÿNƒžÂ; ºŸ£Å„¦Ž–û{mßE~ï‚.Yd›t&.‹Ëø<<7IŸ0÷L{͇V%èÛü’I«û5ýݯÀ‡{®¹_÷ã…ZãcÍo°‰“5¿º—ù}Áz°ùt²æ× 1¿¼4¿‡–Ø!T1á[uJP·pÁ…™~Ž 1E¶«>Š¾¼:û¡ŒN -endstream -endobj -397 0 obj << -/Type /Page -/Contents 398 0 R -/Resources 396 0 R -/MediaBox [0 0 612 792] -/Parent 356 0 R -/Annots [ 344 0 R 345 0 R 346 0 R 357 0 R 358 0 R 359 0 R 360 0 R 361 0 R 362 0 R 363 0 R 364 0 R 365 0 R 366 0 R 367 0 R 368 0 R 369 0 R 370 0 R 371 0 R 372 0 R 373 0 R 374 0 R 375 0 R 376 0 R 377 0 R 378 0 R 379 0 R 380 0 R 381 0 R 382 0 R 383 0 R 384 0 R 385 0 R 386 0 R 387 0 R 388 0 R 389 0 R 390 0 R 391 0 R 392 0 R 393 0 R 394 0 R ] ->> endobj -344 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 656.1 478.476 665.096] -/A << /S /GoTo /D (section.7) >> ->> endobj -345 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 644.145 478.476 653.071] -/A << /S /GoTo /D (subsection.7.1) >> ->> endobj -346 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 632.11 478.476 641.116] -/A << /S /GoTo /D (subsection.7.2) >> ->> endobj -357 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 620.154 478.476 629.161] -/A << /S /GoTo /D (subsubsection.7.2.1) >> ->> endobj -358 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 608.199 478.476 617.205] -/A << /S /GoTo /D (subsubsection.7.2.2) >> ->> endobj -359 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 596.244 478.476 605.25] -/A << /S /GoTo /D (section*.2) >> ->> endobj -360 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 584.289 478.476 593.295] -/A << /S /GoTo /D (section*.3) >> ->> endobj -361 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 572.334 478.476 581.34] -/A << /S /GoTo /D (section*.4) >> ->> endobj -362 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 560.458 478.476 569.385] -/A << /S /GoTo /D (section*.5) >> ->> endobj -363 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 548.503 478.476 557.43] -/A << /S /GoTo /D (section*.6) >> ->> endobj -364 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 536.548 478.476 545.474] -/A << /S /GoTo /D (subsubsection.7.2.3) >> ->> endobj -365 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 524.732 478.476 533.519] -/A << /S /GoTo /D (subsection.7.3) >> ->> endobj -366 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 502.814 478.476 511.671] -/A << /S /GoTo /D (section.8) >> ->> endobj -367 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 490.859 478.476 499.646] -/A << /S /GoTo /D (subsection.8.1) >> ->> endobj -368 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 478.904 478.476 487.691] -/A << /S /GoTo /D (subsection.8.2) >> ->> endobj -369 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 466.949 478.476 475.736] -/A << /S /GoTo /D (subsection.8.3) >> ->> endobj -370 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 444.892 478.476 453.888] -/A << /S /GoTo /D (section.9) >> ->> endobj -371 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 432.937 478.476 441.863] -/A << /S /GoTo /D (subsection.9.1) >> ->> endobj -372 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 420.981 478.476 429.908] -/A << /S /GoTo /D (subsection.9.2) >> ->> endobj -373 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 399.064 478.476 408.06] -/A << /S /GoTo /D (section.10) >> ->> endobj -374 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 387.108 478.476 396.035] -/A << /S /GoTo /D (subsection.10.1) >> ->> endobj -375 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 375.293 478.476 384.08] -/A << /S /GoTo /D (subsection.10.2) >> ->> endobj -376 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 353.375 478.476 362.232] -/A << /S /GoTo /D (section.11) >> ->> endobj -377 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 341.42 478.476 350.207] -/A << /S /GoTo /D (subsection.11.1) >> ->> endobj -378 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 329.465 478.476 338.251] -/A << /S /GoTo /D (subsection.11.2) >> ->> endobj -379 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 307.547 478.476 316.403] -/A << /S /GoTo /D (section.12) >> ->> endobj -380 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 295.592 478.476 304.378] -/A << /S /GoTo /D (subsection.12.1) >> ->> endobj -381 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 283.497 478.476 292.423] -/A << /S /GoTo /D (subsection.12.2) >> ->> endobj -382 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 271.542 478.476 280.468] -/A << /S /GoTo /D (subsection.12.3) >> ->> endobj -383 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 259.587 478.476 268.513] -/A << /S /GoTo /D (subsubsection.12.3.1) >> ->> endobj -384 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 247.631 478.476 256.558] -/A << /S /GoTo /D (subsubsection.12.3.2) >> ->> endobj -385 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 235.676 478.476 244.603] -/A << /S /GoTo /D (subsection.12.4) >> ->> endobj -386 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 223.721 478.476 232.647] -/A << /S /GoTo /D (subsubsection.12.4.1) >> ->> endobj -387 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 211.766 478.476 220.692] -/A << /S /GoTo /D (subsubsection.12.4.2) >> ->> endobj -388 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 199.876 478.476 208.737] -/A << /S /GoTo /D (subsection.12.5) >> ->> endobj -389 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 187.92 478.476 196.782] -/A << /S /GoTo /D (subsection.12.6) >> ->> endobj -390 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 175.965 478.476 184.827] -/A << /S /GoTo /D (section*.7) >> ->> endobj -391 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 154.122 478.476 162.979] -/A << /S /GoTo /D (section.13) >> ->> endobj -392 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 142.092 478.476 150.954] -/A << /S /GoTo /D (subsection.13.1) >> ->> endobj -393 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 130.072 478.476 138.999] -/A << /S /GoTo /D (subsection.13.2) >> ->> endobj -394 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 118.117 478.476 127.043] -/A << /S /GoTo /D (subsection.13.3) >> ->> endobj -399 0 obj << -/D [397 0 R /XYZ 132.768 705.06 null] ->> endobj -396 0 obj << -/Font << /F42 352 0 R /F48 355 0 R /F40 351 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -425 0 obj << -/Length 1846 -/Filter /FlateDecode ->> -stream -xÚÝYYsÛ6~÷¯Ð#9Á¸IÎtÚq'MÇ™¤¶zÌ$} )Xâ˜"U>þ})J¢9Ic;/‚ ì‡Ýow!<šðèÍvíËÉÁákNGŠ$•£Éåˆ0†Ž¤eb4™Ž>z„ûc±wr[«¼J‹ÜS½—Y‘\U¶ÿ ìÿ3ù Ä…=qC‚G°–‘ó“jT?»ÉýµŽ(%íä:žP¢çèA<*g#Û9{s0ú8&<Š¸GB3£ÕDâžÈ1…Ђ"ÑéƒhÛ>ªë2½ð)öšZ9UŠËEB.v(‚7¡=E@2lÂCÆïßôÆRÏÛ€²m5ˆalH-ˆÇEhÔ;á#H®Žö à{ܾÅhÅ [‰Q¦0%¡ÃTصŽ>¼µ`v·ÛÍB‰—Ûðy™ å|/“Œ›Jmy‹ä›^&¾™— YÉ– Xòy[ È9Âa´å×ûÚ¾ 2ñø®ö°³ ¥ØÂ’Y,OnãÅ2S”¦ó!ÿ‚0†ƒ‡ÐW?ŒùcΟ<ùS¼mÉ€nЖ´k©›´ôIè©i‹¦ëœ©Eáì]ëŸöí[°åò2NÔnv#R"­è­4˨!rÑ°Ë7ôêâB$DOØ¢¸–…#ýs¬v3%¥˜x”ì$JHÄ1Ý°HùµD¹~("…Ap$x'$@!}$‹%÷¹}!F·Aþb -}LxC,Ÿ¼á(tðÊÞuV­Öiu£t8É›…*cs -aôôÉ‘íGŽEM-7˜#á*‡¶yíGàó>Þïk㿪¼±¯ -G–¿ìHÒ¢@ï’ïâžvsýS;ÒÄÒÐ{£r8ŽÌ®t^—q­|"¼Ù?ŽdðTÒÿùù°Áãu"9Ò<¢1ë’ô×*®›Òå¯ÔRåS•'©>쀑JÁÎù<Ú¨¢à>€þòCÈ ²«z^ÍlS9{.8ˆ{(qfí¼™ŠÖ›'Z{çÑGS—Ùæ¸X,ÓL'>^ºPíh^ÕÀ”PÝ|ß,rOL¢=½†? `¡&©])mûGÞEóéÝRéz%zê†Ãðn::{ƒ´Hë6¥^Á£虸#{š@§¾ß™¦ú`ýqb£{BX¨Þ¥Z‘K–&+KéØùL-KUAF×ö¢Iü jÎöÔ<ü¬æï›zÙÔm -iNQ.â¶8j+Ö÷õ\9Ú9óYÏt@g˜<¦r‘K=¦ÓTV—±)°õ:MzÏfin®‚gmðû"C0@s^Çi–Öwëõ¦íüýîÔ%j1ÌŒ+µqQqžÌLÈÜDø$ôç¯<Ü­ÌK°Ƽã9X¯Óò´˜í¸¿!› š…@:ã’ê•wÆ 8æ®ìóÇcs“cî}Š)Äl£·‹[lÒ$*]]4ѤôJ[i¤U]ÞÙ‘¦2ž½8·­94;¹ÏUvL±nëVâŸ~ ¼&»j¿¦{á¦3eÝZ?ݤõÜ­c›JÕHP`ÓÈ>ÜÕs»(õª¤L—uet Ò-8aºl2]<Ùñ¹ëlêH½"OÜ»¬ˆ§jŠlz7i¿X“_ª¬ûlCrv»Èví•Bô»Hó)pAeŸLÀŒ˜·ŒKcü0d:ÅÒäîÁ}à#Û3I|j}(Ò»´Î²&äZGç8K§qmò6½fl¬ÀÚkÜ2uš'YcÀÐ³Ö -Vѳ*Ùje觕mµ7ë=H{¡;Òs—ivB^¸N -Ð¥¡Ox4ÀWµO¼y\Û‡Æ cÞ¥QCÏkW#ÔJ^§ESé£1cÍE–Vsen€VÙßý{( ßœêqîlÿäܶC=о±Q:=‚ÊéHzoõ^¡|ºÑ÷qegš‰úºeªœ4£Ÿ‘á¼Ç­¶Š"ýSqÉh Y¤V¸mš‰6[c–zØÁ)½\)» :°´;ƾ` ”8wçQ5ÉÜ ­ÜˆÉómyØ_KµWDvÜlçÅ ù¸È}£2Û‘x#L¶*õâ -VU¶ùAš_šŒ «5ª¥JÒOÓd=ç\Íg,–Ól¦HTeŒŠCœ:¶£sÞ_Ú!½Bæf'E Gµ,ŒçÚ×zUýªn%®³Šž¢=Á|=WÉU{Ó®ÒÜNhr½Úöå ¹VerxmÔs šð:! ‰ û u7éVµâݤ1 ‘èþ6@møhƒ®I×æEªÿŒ $D2ìSå'KK}6JÛYÕtg-l5ËØKÔú5ŒX?º³S[fÀÙŽ9_st¼ Ô,_ú{:°`Çåª =£T`Îù©<Ìã…5Ö4…‘ -£`„•vÁVoúþã µ¸hgÑ–:™7U:b\(÷QšÛv‘ÞjQÓñ¢˜*;¦ÿ‘ê‡ø‘búo2†'Änu=ï:™ü?eÃ] -endstream -endobj -424 0 obj << -/Type /Page -/Contents 425 0 R -/Resources 423 0 R -/MediaBox [0 0 612 792] -/Parent 356 0 R -/Annots [ 395 0 R 400 0 R 401 0 R 402 0 R 403 0 R 404 0 R 405 0 R 406 0 R 407 0 R 408 0 R 409 0 R 410 0 R 411 0 R 412 0 R 413 0 R 414 0 R 415 0 R 416 0 R 417 0 R 418 0 R 419 0 R 420 0 R 421 0 R 422 0 R ] ->> endobj -395 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 656.1 478.476 665.096] -/A << /S /GoTo /D (section.14) >> ->> endobj -400 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 644.145 478.476 653.071] -/A << /S /GoTo /D (subsection.14.1) >> ->> endobj -401 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 632.11 478.476 641.116] -/A << /S /GoTo /D (subsection.14.2) >> ->> endobj -402 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 610.272 478.476 619.268] -/A << /S /GoTo /D (section.15) >> ->> endobj -403 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 598.237 478.476 607.243] -/A << /S /GoTo /D (subsection.15.1) >> ->> endobj -404 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 586.281 478.476 595.288] -/A << /S /GoTo /D (subsection.15.2) >> ->> endobj -405 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 574.406 478.476 583.332] -/A << /S /GoTo /D (subsection.15.3) >> ->> endobj -406 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 552.628 478.476 561.484] -/A << /S /GoTo /D (section.16) >> ->> endobj -407 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 540.672 478.476 549.459] -/A << /S /GoTo /D (subsection.16.1) >> ->> endobj -408 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 528.717 478.476 537.504] -/A << /S /GoTo /D (subsection.16.2) >> ->> endobj -409 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 516.623 478.476 525.549] -/A << /S /GoTo /D (subsection.16.3) >> ->> endobj -410 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 494.844 478.476 503.701] -/A << /S /GoTo /D (appendix.A) >> ->> endobj -411 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 482.889 478.476 491.676] -/A << /S /GoTo /D (subsection.A.1) >> ->> endobj -412 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 470.934 478.476 479.721] -/A << /S /GoTo /D (subsection.A.2) >> ->> endobj -413 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 458.839 478.476 467.766] -/A << /S /GoTo /D (subsubsection.A.2.1) >> ->> endobj -414 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 446.805 478.476 455.811] -/A << /S /GoTo /D (subsection.A.3) >> ->> endobj -415 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 434.929 478.476 443.855] -/A << /S /GoTo /D (subsection.A.4) >> ->> endobj -416 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 422.974 478.476 431.9] -/A << /S /GoTo /D (subsection.A.5) >> ->> endobj -417 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 411.019 478.476 419.945] -/A << /S /GoTo /D (subsection.A.6) >> ->> endobj -418 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 399.064 478.476 407.99] -/A << /S /GoTo /D (subsection.A.7) >> ->> endobj -419 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 387.108 478.476 396.035] -/A << /S /GoTo /D (subsection.A.8) >> ->> endobj -420 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 375.153 478.476 384.08] -/A << /S /GoTo /D (subsection.A.9) >> ->> endobj -421 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 363.198 478.476 372.124] -/A << /S /GoTo /D (subsection.A.10) >> ->> endobj -422 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 341.28 478.476 350.276] -/A << /S /GoTo /D (appendix.B) >> ->> endobj -426 0 obj << -/D [424 0 R /XYZ 132.768 705.06 null] ->> endobj -2 0 obj << -/D [424 0 R /XYZ 133.768 324.698 null] ->> endobj -6 0 obj << -/D [424 0 R /XYZ 133.768 163.562 null] ->> endobj -423 0 obj << -/Font << /F42 352 0 R /F48 355 0 R /F40 351 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -430 0 obj << -/Length 2163 -/Filter /FlateDecode ->> -stream -xÚ¥XK“Û6¾ûWèfªÊ¢ø~lNÙ±3夜Éf·â(±C,œå×o7ºIQz¶Ö>±4Ð~|Ý ·:¬¼Õí+¿¿{µý!òV¹›'A²ºÛ¯ü0tÓ$[%qêa¼º«V8¥jM![ÙÖ› ˆüDN%ʦè #U«iAíékjADÑu½êzYA{d»WýÑîy3¡ç™ -(ºDî;¿Þ¾Ç³Á‹ÙÜ‹‰ïú™­$Ww¢d¶¹³ÃÀMÓläúìyAÃ’ÈID“šFÑ|RörǼ?w¢½ùðÆ^qãç!Ü0¿¼)Y*ÌC/ -Óœh àþšÈz8-‘ÀQ‘;a0m|쥙féò@@˜¼¹b<ˆVôÅ™÷f£Ð‚FðºÌbuƒAf¸OOcˆzmˆ²>M1¬­MÒÈé„êæ;ë8Ž"šuQ½¦M{ë[d‚0Ùía(‚%<ʦ!æºXžó€QÀrÀúsÅR\¶e3T6Ð hZ5j¢u%‘Öoð…lÐÌÉYàÙ\Ž½ë\†ï1M_”æjo/Àšk›Ÿ¼˜Äˆ¾ë…9Oy·Šw¾®£ÑÙ=2ñ‰Ý9–qØN2‰è­kR›þD3îRxÿ¾Î<GYæÔÊ"X–ñ sâõ:ž…,pãèAV6w€iŠ. gN&vÙÒ‚!ªRåp„Ôà çk œŸ~º!]ÖâX,©ûÙ‹½X ÝПàªtq·o—°-õÝ4ôÏØû G0T„yV?¢zšF¨˜Ÿ.Œ‹3_ÐÊ|7KòQÔýûtl–Ð6¶d®K6Z4{¢mØ‚¢-v +bË’Å Àή‚üôQ ðÂï±Ìe1TNëÚ±LÁÌI ¼$OaÎKL³’2ÿ;ŒýÀ‘{Ú:í¸£ì a@‚ ëQÓhЯÙØÁqºYÄ/´/Ê…€À|#’_+?Œü+ù¸„m…²… Ge 0ŠŠr0¢…éRX'ƒóÃĪÔò°5+Ÿ•­õ0ž±½œ?Ö½j•~͘:ìšgo¡>;ž'·0–gÙT³!o$4%§5äÚÜaz ¬Ô¦ÑRE;}ÐõÄG÷|ÜQ>ÙÛVc§qâØqÙ³6a”èZP^I‘âÁzã{dŽ0cóœ_ típâóÀ€ÝAà ;ìßkJ¶‰ÐŸ¼à1Àá=)pÎ(Õhš”­6àQ¡³ãÀùo`±ø>ÈvxâÍ'm×:bŸÁÈ>XHŽ?“ÃÎBã5 ™ ¯³Ôhå=÷{AzV…†XaÞŠ´ÍpŽÌ8Èì3ƒ·‘ù”•íç7ò"ÄݳÍéâfîÅfjÏéªÕÓ°K–{~tQ ©WšƒÕgÏO_‚¤&TÛ9”ºOD|¡ìF™›gHtvg¸3X£ð¢ì¾p G7Í„7⯸ÄÝh³ûKÍïuvË—ïæ{)X0ººÜ¦Yn,ž·:/ß0ËÝÄËø†ÉWÜðƒÜMWûR«»~4õjÝ|»w²¢4úç|Ï°UP·?¢–j Çÿhúé·«=¶‚Щ¡~WÏ°Z[¸`Xšˆ¢ÑX¥  Ý Á‹ýÀH.…Öû‹ýÀïGYöJ«½¡áïXñe[Ìh:p”5Ñ͉û­åŒåS(Söå!¡¥á^ßÀÔB?KyÒÖ6YAYù„£zÃÿ1 ÚNµÜTó?—‹cæ–Aþb±œáŸ…ÈOÉ6t2•ì¡ü¢]pšj$Rö\dxf\ÅßÞØ)Þg~à|T=o«„)dÃ쪕š–‹žÚ -jÚRáíË-Öçí§wß¿ýøn¬ÀS;¸ðæ„û¹ 6uÙ±wÝe_¼´å¡6ç`Õ£ ®¼ð\ÄWÙÕÞË’DQnt/ešwÙÿý_9vS‹òÿYø;„ÒˆÏA>؆¨ˆæf=‰ƒ¯(Õ*;zŠN?C|Ž\ävœ`ò¦Ø±$@&ìEX0:sñÿ 4_C9ÿñqý›ÕùŸÈÄxðÕÀt«¦5ÏÑ4€ò¦ZGæÛŽ±·€ªyàú¢³š;»ÒzÈZx£Æ¾½ðráR× ¾}ßósuÓëËænOÏi@]pC=bÙ¨Ý8øŽ>çUÎ…—Tñ1sxLA“zìÿèbÇ»»Wÿ(|° -endstream -endobj -429 0 obj << -/Type /Page -/Contents 430 0 R -/Resources 428 0 R -/MediaBox [0 0 612 792] -/Parent 356 0 R -/Annots [ 427 0 R ] ->> endobj -427 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [189.63 488.832 421.617 499.716] -/Subtype/Link/A<> ->> endobj -431 0 obj << -/D [429 0 R /XYZ 132.768 705.06 null] ->> endobj -10 0 obj << -/D [429 0 R /XYZ 133.768 428.179 null] ->> endobj -428 0 obj << -/Font << /F40 351 0 R /F48 355 0 R /F42 352 0 R /F14 432 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -436 0 obj << -/Length 2701 -/Filter /FlateDecode ->> -stream -xÚY[³Û¶~÷¯Ð[¨Î ¼ö-ñ4Ž;ñ´ŸiÓ‰;Š„$ÖÉòb[ùõÝ À‹ãñ‹,ÁÅb¯ßBrwÞÉÝëÒ>x|ñòÇ@îR‘F*Ú=žv~ˆØW»(Œ…Òáî±Øýæ=^Ê~üØë/ÍX8Ž¼ÎìýÐ;›ÚtÙ`öÿ~ü+ðJ¼ÒDÈ؇ˆÉDZúÕâb.7 }‘ÆÊ-Ìê‚7+ë~ȪŠw+GÜØ)JD¤cÇ@ˆ—¼ÙË/ìéËX„éü .Ùtà ¥üÝÁ‘ÂéøfÐI'îÇjÀq0iéGô²0õPæYÅ䡱ϋ}ÿfº¾lj~skF~óß±˜ÔŽUe -¦žºæÊÔ×åPeG¿—¡û-…kŠ8NݙΠ3>•¥¯NU”§ÓþIù•úÒ0ŽCÇϦBé哉|«@¶’úN t¼þmöaïKϼ—RU†iCÖíý|AXg^@Ë =¿:¹µxáH)M­ôšNŽÒ#ñÕ?!üº_~*‡‹ÝŒ1Ô}øÝ_ù)r$KâŽê–NHÙ8p t#6t,‚¹(?x9}é’!¡œø€ª€U{ÛB±H”ÿÕœ:sÞæóäºBIõÜu…ñ\5­›n›o 0OûO®F5T¬H“u¡LcoDôßïñvêÌ+œð­²[žþc}Ù]Á·/ÓÓU ,f¯ÀtN%z&[X·º9°›Ô~îÀqÿ4¸‡¦©\¨Ý;ŽSNrò”Û¾|@¤fWÙ:v³Ýˆ©Z›bêXån,¡C›ý•ðAKRJï'ÊÀàõ<—wek‘ça²ë‚«¥"Š“¯ðºƒ[zðY)ø"@jŠ}ÔF¡K0øn¾¤‚V“Hß¾¤ð#-ü$ø -‘B¼mŸötVÊ<¡ç2_YÁ^uvµYŠ¯›€ÔvM\vÀîLÖv·Ÿ%‘më’ˆ<¬ì¨è -ØõLîm+Yó´´O{{=É?H[„˜~ê}?ù) 8í²¼æ/ñ\Inñ]ðÚ« `Å6˦^¼ÌIMð’þ‚Pz:S)%•?¥D6¨óCÖO«j^ŘG‹;‰‡•¥ïÅ ã§Þy+€2+n—åËÚÅÂÂW™¹µâr‰y{0݉*hNåY¹j/s¨ˆÃDeÚ«ƒ+5LžK¢œK¢âªº”=š®¢®b+UF"ov¿ä½«œŠ÷؈pv$Y§Ô„l²TæªÖÞâ;®û0`Á »ŽA9¦ºb®š–Ð:y|‹àÚs´†8ÿØÇ¡GÍ#ω>m +±ãÙÂ0¦‚nÛQÑ~W ªòw€Õf½d* -Ñ4ÐÇ7~~êÊÁ"Úí´ÎÍÄ'\-ײ‚ÏTYßS\àïÆür·¬çù2³Ãô®uH¥•—Ên2¹;x…—[Ïø¢\98‚ëåa+~œП^O¡çtã0áXˆQWÆwMÛ•¶§›×‡Ò–§ÖuKJEÿ¦9Ø?NH–pµæ//þ8wè -endstream -endobj -435 0 obj << -/Type /Page -/Contents 436 0 R -/Resources 434 0 R -/MediaBox [0 0 612 792] -/Parent 356 0 R -/Annots [ 433 0 R ] ->> endobj -433 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [270.883 318.555 280.068 329.498] -/A << /S /GoTo /D (appendix.A) >> ->> endobj -437 0 obj << -/D [435 0 R /XYZ 132.768 705.06 null] ->> endobj -14 0 obj << -/D [435 0 R /XYZ 133.768 245.365 null] ->> endobj -434 0 obj << -/Font << /F40 351 0 R /F48 355 0 R /F14 432 0 R /F42 352 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -440 0 obj << -/Length 1884 -/Filter /FlateDecode ->> -stream -xÚXÝÛ6 ï_‘Gh4K–e8 ¸}¶¶hÅ€u:GI¼:¶çkï¿)ÒŽ}çö{I(‰¢(~üH9Ü7áæÕ‹ÿ¸yñÝ/Zm¤Y«ÍÍa#£H$&ݘ8*Š77ûÍ_j»“aïܱèúö~»Sq¼m·2 êÜu]Qiî}ÞMOônû÷ÍopBº8!‘BÃTH²[wÍ=3†›LdFäÛŒ;™ -ÐÈsÿùÇï :É‚¦›†AÑÑü¾®ÏTÓé¡R*¡#õäáQ,RcF¶—(1 >ŸŠüDÇäuÕÛ¢êè¨ÎmUÜme¸Ö–ÄRßþãòž9lµ§Ù³ëOõžgu‹gà u*T†Wõv¢SËÚîé~Ê€¦(Œ¿•Aß®£i’ ‡ûå/}kó~ÚST½k[ Çç´!7˜qƒ«º¢®xõñ‹CçhŒè'NÎî]KsGWÁ-{Ø&¼öáR훓kýnvŠÌ‚®>3¨RåM£}g–DaÄJ†Aâ Ó™–êÍäõ7u/Ù%Xt8žh±ªûS6"„Á¹eV´œ]ÿâ;ŠZZ‚0ïh|ïzÁ!²H¨RËtL’ˆ“äÍÐ7§À+2–7ì³²Ãh%càÇÝ_KâžgÈ›*‡{ÈŒMˆÄ;>qqƒÿbn† •ç_É¥Dª²Q£ér—k=Ö*KDéqC^ÚŽOÛ»a¨*·g%ÖÔ(!•yîýU -éœfK×ú¨ 3 â=Q}Mÿyëlô76Ш] ±ãŒ³#yÍ € æ‚_?ÕùÓ&‘a&L’>° žùØÿÚž¿—鬗PÚLééé¡iê–Þ:™9Öö5!aOÁîÄëãžTŸlk)bîMpi›bEGŠ(kÛÃ;•`Ñ>ªQÓGïQ˜ÄJæã5£x¥Š¥Œ€Ë¬4Ð>ñ™ -¡ÑÞð²ôÀ -Ó5àÅ—(ŠêAãò}ä8y-§áÔ[ƒŒË£‘¯8;Am'ð”Š[9å(x¾qm_ŒààË%ª³&ݨ´ÀQ”ã°¨}01#Nù9è^Ää£'o½–&¼¸gÑBÈæ•Ã¯¶-JFá]g IáùÝè†Qý+ˆKPHÃ! -¦Q ’mé=£ÏE"ê£RÑÝ'øÕ4¶X'ü†áxôéAC€Fø—”Ü^ÄÉUL¹ÙDŽ°9ž7Yª[ƒ@ïŽxÞQ³çh—^ýô®®û±jÇáå]|#NôW›ëÅ‘)<¶Œžup T®>C-t¨—ïˆëµfA?¯³GIS }&ŠÇbƒ_ª¾h™ž×*~}±aéKüóß2KÛ/ˆ¨n½X'H/!QO¥úzŽÝtôÊ7‰,!Äé7láMÀMjÑ<¯~¶ÀW@¼€Ü×p]‹éëäÙ"løâe6³`ùùæÅûõp– -endstream -endobj -439 0 obj << -/Type /Page -/Contents 440 0 R -/Resources 438 0 R -/MediaBox [0 0 612 792] -/Parent 356 0 R ->> endobj -441 0 obj << -/D [439 0 R /XYZ 132.768 705.06 null] ->> endobj -18 0 obj << -/D [439 0 R /XYZ 133.768 667.198 null] ->> endobj -22 0 obj << -/D [439 0 R /XYZ 133.768 585.963 null] ->> endobj -26 0 obj << -/D [439 0 R /XYZ 133.768 513.734 null] ->> endobj -30 0 obj << -/D [439 0 R /XYZ 133.768 399.188 null] ->> endobj -34 0 obj << -/D [439 0 R /XYZ 133.768 316.125 null] ->> endobj -38 0 obj << -/D [439 0 R /XYZ 133.768 222.028 null] ->> endobj -42 0 obj << -/D [439 0 R /XYZ 133.768 165.809 null] ->> endobj -438 0 obj << -/Font << /F42 352 0 R /F48 355 0 R /F40 351 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -451 0 obj << -/Length 1928 -/Filter /FlateDecode ->> -stream -xÚÅXKÛ6¾çWøVX1$%êQÒ4 úºH·94ÛƒÖ¦m!²äRÒfýï;álq-ï:»)z#r8óÍ“OV>yÿ‚»ïW/^¾‹äD–)%'WˉC–Äé$V “¡š\-&Ÿ¦“³@pΧoêªÕUÛÌ©ø´^Îþ¾úŽH‡G¤)‹UØ0zU4­Ù½r´ÞuIÄÙ“¶ùªqD|’±,–1Ò"Y˜d0€“S¢ýK›z„i8­ }7µÑ8’È–]Ñù|íhÜJ»Ö4XÖeYϤš~)ªý…·_Ì‚HÄÓª6›¼,wD[TýÏEÓ_¹Ð†þºæŠçe»®»Õz¸ Ï€gôTb¹¢rQ}7é´%Þhú›mmÚ¼já8ñ=þ¼×ÑËw"CD,‹"88aYâdqÍErïÐÈá…{}ÌëÍTøjDÒ*f2Ýk. ÞPåyQ9•çæ¦hMnv4mõL¨é]{AÓ¦C‰[ºžž>óz;|º3ÅjíÞÞ´y«‘öÐ{ƒx¬ î{8~Ý{ouµ¨M±hÆ^'€vÑÓ¢2:ábÚèy[Ô•½)øĬ&4øðþÅäÉ©òø #ý⊅¾æ\Vº¡Õ_צ®ê†önQx–=Úüù'D øW37Å^ÐBU”\c݃˜¥Cµ¬°®¥ ËwÚôê¨4x{vÜÀû ‰Üæv Ìw{ãöÏú8KÔ´+?çî’?¶z^àãæ9 -êa5’N¬£ì)jDóÓ`'ÂèHƒQr†(>¡AØ -è3Ô Ló¬ÝÐxkìÞÕ£Ûï«5-{2g$Nàî˜ÊQ•V=Œ”ê^ã)õòþ%Y -f¨i0 -L-ì²Ê`-sŠ„xXåþ>n@3 -øâYC«ÿ3Dv[=Š‘(bac½Ð£¢äF`Ë9É!F`úúògg<ȃÀÎïϦ£ b­«:Œ+€p Ü)ˆ¤‡E¦ 2gÉ3œ£®ºÍ)‘¥2;YÈÏ€-þÐg 2œ’Ȧõg º¢õ*ßô$§8¸ÅÈ—lˆ)H7Š‡Ò…36]A¹wxÕÛežPÐÇQè, -–HêA˜¤Óº„µ õ•©»­#Þä;Z´àœUO˜÷'V4GkÓZLÐμ6F£¹Â¶£ÃÔD¦DBß|Ÿn bvÂx–y6pÂMÆñ0ÓÂ@“fÎöS>5ºéÊv¥uöJûy3rs–1u¸_9r¯ŒYÂÓžh¡çenœ/"ˆhW6©²7ÝeÑîHmRJÆ!×ó£›³‹µÎgPPô&ä\.šNõHИí…ÔSÓ+êx¶2xرQEñãF…DBœ°*Ø è3´*˜Z«ÂAÏΔ½zÙUöÊÏm(pë½Q‚AÜz*ø6nëÙž~©ó¶3£@{ˆãã| LÓ3d D"„½ÃAŠ´s¯`ƒ9ŠâäRE~6¼ìµ³]Ï@õM1ÏË>]$Îç}Âøe]ô•ó¢¦oU»ByMÑÎ^M+—o\zéñC0 Bbß&à÷-¶CŽÅª‹x|®˜dœøz±Åý°CPTKlŸX“æÆ{Sp-J}êl¬[Šc6!–r9Î*^·-”B(¬®Õ¶¨2°nu·¨N:Q)y -¯WõUnóݱ> endobj -442 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [273.718 587.508 280.692 598.063] -/A << /S /GoTo /D (section.5) >> ->> endobj -443 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [245.191 556.815 252.164 567.758] -/A << /S /GoTo /D (section.6) >> ->> endobj -444 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [251.257 514.555 258.231 525.499] -/A << /S /GoTo /D (section.7) >> ->> endobj -445 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [252.744 496.205 259.717 507.149] -/A << /S /GoTo /D (section.8) >> ->> endobj -446 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [272.057 441.99 284.012 452.934] -/A << /S /GoTo /D (section.11) >> ->> endobj -447 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [267.344 412.074 279.3 422.629] -/A << /S /GoTo /D (section.13) >> ->> endobj -448 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [283.54 381.381 295.495 392.325] -/A << /S /GoTo /D (section.14) >> ->> endobj -452 0 obj << -/D [450 0 R /XYZ 132.768 705.06 null] ->> endobj -46 0 obj << -/D [450 0 R /XYZ 133.768 667.198 null] ->> endobj -50 0 obj << -/D [450 0 R /XYZ 133.768 355.44 null] ->> endobj -54 0 obj << -/D [450 0 R /XYZ 133.768 277.469 null] ->> endobj -58 0 obj << -/D [450 0 R /XYZ 133.768 181.206 null] ->> endobj -449 0 obj << -/Font << /F42 352 0 R /F48 355 0 R /F40 351 0 R /F14 432 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -456 0 obj << -/Length 2148 -/Filter /FlateDecode ->> -stream -xÚµX[¯Û¸~ϯð£ 3¤DRP,Ù`ÛbQ }iú K´­F–T]šõþúÎpH]|t6F²ûÄÛp8—3CòÝyÇwßp×þùùÍÛe¸‚¥J…»çÓND‹u²Ó*fa¤vÏÅî_fbœóàÝ0tåqò`L¿?„ŠÍiÿïç¿£dÉ(UŒ+ÇX²óŽlu^”°DIOT=RM¾ýQÈ]ÊRj¤>‘À@A'a ¥Ýô‰‹ønˆ2oÂ^äO¨³«qrðM¨™„MŽè€Š© 3ÿËÎlˆB<_ ÎË ‡KÓMÛ™Oœ‡¿<áPYï·î… -Îe?`@Û¾”Ã…Vÿz隺éßw4ÙÏá‰úcÛš­|@Yw'Þ GBæYoÈ=ø¤>?Ñ`ìǬªn4Èj× Q¨‚ÿ•ÙP6õä¸5é%yàxµ]󓎺£6o®-ìõÜ!hRö›^#´¡ú§9Á^º Ð)½r_¹Mpï6¾pÉì”ìÇüâ 3jNcU½¢²g³2Ð×í A\‘~‡!ò¦28ï¥%¤dR- ¡Ã•!¤Ç/Ì{.vðåÒ`G¼„,,Z=¡-{¢ÉÇ®3õ`áeèÛ¦îËcehýD^M­8+¼Zö¿ èaB_ò -ìð Ên¦s“ch¦î€"cgqÍ¢( Ê:¯Æb"ëÇ‚)òä#ž“šHRÖ Û•Àr'œv¡2‹†(¤³qn6W$ÎâŠÏ‘~f”rˆôbŽô¸ã‡­uÄ’e¨†bÊ¡€0 aÈBí<„èõ‡Ï´p“¸Š·Ï^]Å$Og*TB+-UrïÉ—§¥r¢\¶uX”2­Rše_˜>‡äI¨…1A-R± Ä8Cp·¤I‚w.#%ΙÓ5(þ|ÞõÎy>ô;-Щ”kì@9^*¢âG”M¤^YVr¾´lš®nŸ]þr)­ò°–gnîh¨%=p o%ÎœMmºl04ûÞŸP2LŒµ@|—›Ž¢“‹`Gäf[ke!­í 6*®‚ŸjZ»NaG˜b{r0aÄmÔBÂ.¯må(+ -ž{`À™÷ŽJi·ÑÝǹl]Dm\u¼Û‘Ð%Ž¦(¬9Pp‚̦n§˜ö -i«‘RÂ9 -±ÐqqÂÓ9%œ±a²¬=oŒ£õl6§¸vöÚ­ê$èö ç-Æ!Æ·=oƒ#¬­ÔwSuAYa‘>Ø[ÈNôÔ:Ð#qCí– A¯Mgæ”^•9й;ó~ïØV¥ -¬Â„)áªÎøw¨‰Wju”ÔŒ‡ñãE1”‡"J¾½(v…B¿q½•`*\Æx´iÉŸpyt¬ƒwµÇ¬9 Æ‘Ç Î„«á|&Í7ÔZ·˜Áєݎƒ“båKÓ)Á=T~êß÷ÍÀÅ]ñ¹0 Ÿ?S!°(¶Éjsf-Ý:Ø’:N¿Wcº µØ96Å Séo!Ò,Òò{Šð¶Ü2‡ð-®ð!#ÄMSQ‘ZdìE`h€Ê÷f3¹C - -ùœoO&Æn3 )ÍbžzÊ£©LŸ_l…aÏv »}kò2«Ê_íeM<§C^|hàÕ$¥| -^è B -7^…À'áa×7ž,î6ôt7 gâ7öÔ½f7ê\2 +TÐLQÚR÷d°ß -qKiQ?‘ÚªÜv ;3T9 >þf>üƒZ -ÀB$Po•n»oǺ*?ïÔÆÖÿ‚ò3¶˜¹-c‘ZaæŸûrLõ9«1 K P8êlK|¬ýíkB‡O´¶…ÇqOÓPG}š–Np¡ýXú…{ë攃@ži™®tNcRËáFlJwHg°|Á·ÓY0ÿœ›î¶…h¸X:^^®W+ŽñçgéýO}_XqmËY<AÅ•G!×>ó©`€Þ¢^ƒQF[lº¤LÒÜ•X«í«2ajÿ!ÆohAãu„Üa®¤%xÏõö¡†ëì45" {Yž›vðŒP [_5]‰êXŠn+dÀL&S¾:Bbu¤ÛíWZËášõŸ·Þ bÚž6NÓö™ÂýÅ;`¶*d¶Só1õxÝ -´K…ø¿ŽÈn›²†·ü/­ Êɇ%:wÍØn‰¥?ÌæwµzÕ@úa>ôø7ßä1¬cTãwAÇ÷×¹ï²b yp¶š€7Öî£aËdÉ=ÃÞg|û@ôÊb{­‚¯Ä¡˜©X~×ÇÒõêÊË¥h~ónW9ï:¸E]ÖÝ–ÿ‘si3Ö˜¾^¢(ÉÂ4þŽpÚfݶðHéDFa´‚šÆ>ìÿŽ±ÃvpeÙo(!IøÀ'á“S‡ÁÏ …fc* #écr4½qnóó ³ð˯ ±ú+]kH…eæ*Ï,úÍQg_‚Àqþù<ù¿¨uqû†BŠ;HÑÖ/õ¸k—ãåÒå8¶u·æ÷Á•M—ÃKE“_ “³Ë§Ïë+¾ü`y,bدÜÈcå¶n£ôÅ]ñêr}”:QßÒ9À…j\97T>DTÑáÒÑÐxUÙÚVÒg7GmËYiÿ—žh -^Þɶîu'en£3þk¿°tÚ;Jµq˜#¯bß¿ ³Õè֯ׄ¦°ÿÒPH˜©;5YÑ|x~ó¢øï -endstream -endobj -455 0 obj << -/Type /Page -/Contents 456 0 R -/Resources 454 0 R -/MediaBox [0 0 612 792] -/Parent 453 0 R ->> endobj -457 0 obj << -/D [455 0 R /XYZ 132.768 705.06 null] ->> endobj -62 0 obj << -/D [455 0 R /XYZ 133.768 667.198 null] ->> endobj -66 0 obj << -/D [455 0 R /XYZ 133.768 533.788 null] ->> endobj -70 0 obj << -/D [455 0 R /XYZ 133.768 406.536 null] ->> endobj -454 0 obj << -/Font << /F42 352 0 R /F48 355 0 R /F14 432 0 R /F40 351 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -461 0 obj << -/Length 2192 -/Filter /FlateDecode ->> -stream -xÚ¥Xmܸ þ¾¿b>Ð £èÝv¸ns×´Áh·‡ÉáàõhgÝóØs¶'Éô×—å·‰&Y¤Ÿ$ËIQäCR|µ_ñÕ7<Œº»yþƒ–+!XfŒ\Ý=¬„R,±éÊš„IeVw»Õ»5L7[Á9_ß6uïê¾Ûl¥áëæaóËÝ_E:g‘¦Ìš ø½/ûóѽ -t QÚ2.Ó®Ï÷] â«ŒeVZ$Ú -¥™M˜Û”hï)ða#Í:¯Ê} ívîèêð§©iìaç ò$eH˜UŠ¼wû¦=GÔ1œ)!¼ïÛò~#ùúÔ;6žq®}ª™Q ½´ÌÈÉœLƒ¾®OׂÀ (Z+è¿i* Ë´¹¢©¼ªé{)µQ8F­l-“Æ.¬üæô×l&%Ë2ù“i˜ -9»fâú˜w{? —yŠI³ SR Lð$IR¤ñÈÏk:±GËÒ¬ ’snaà™gŠ7Q65ƒ•, n÷ÍîL³fi4œfB¥0ñŽ=?¤$ Ç}Ý´tÅðá}Q®ûX?…vàA[%ÔàÝbfÿéeÃxŇ8}2Ú¹Î.f"Ëôt ÿ%æ‡S×Óì>¬Ûf#ÌúC¹STI"öfÜ-ÕK3ò¾x„3)sEg­˜äæk*C¸qEeävQÊÂu~.Á–L›_âw¯bNj„êÂI‘õ{nxçñï\λo%_µûMþñãÍêß‘úßÀbäq#àbµt±H\­î‰ñxÏ]ð©D0•‰¥1wî=ç²pâcÙ?–_µD3­ŸprÍ”Zžyæm€ØS7BSCãÞÕ±! ·Q°’ÌdÉ×¢\’W¢ÔÃwQåC­Ã'Æ×i|ìâÄ徇ÿt¿XÖ»²¥²cåz&Òuj¶D=XÉ=RrÌ‚9ÕýüB?ï’.Vbá£êSUm{×ÊÕ¦êJÛ V&}‚€oØ gŸí-ÖHŠÊÇ°Zö@Ïîèë?!KR9ÄǦLji -âë؈Î^ `ê-‹ó°»C£ RY2ô -Ý律ø…rš¾Íï6 _»ã§Æ&è1ìÀ”òé•F7îÛ¹ª<”£Üûs$àø½+0Á'äúâÝwOð)c*(Z>+M èCø»_"l‚‰ ûbä -¡öÿ]÷ ¬]w纈%;¨E°ˆªà¤SyFþè— ]gn‹‹Ýcsªv´Ž¡Škt(5¯ Ò#:ÿØ6uùßà*Û zá0]À×¼(à.‡ö£ÇŸ7‰YŸªßòúËpçÏÿí&»¨$.©eæjSPËL…2—ço ð£ð ið¿ï¤Ç)\<ÓâT†Bã³” ¥o6^ÙOÿzû6Þø¥ÒÌr5§BcˆÞmBh@Äå%„Ø|Ï×™Ùþü·_Qü¯ùþ§?¿}Ñ"µLL±0iað‰ªÞU®£*bžcyhíæÄ÷eȻߺçS3å7~9p¬¯kÈ ì7xAÝ䧾JÅøñä 6njsÂsiºFF+eADcYˆ|=Á¼(LÀA(oÁtxØÝ5«-É^¾Œù[,ö>i PîøD’éõßk F$èNG•¾mD[ìÑJ,§ -"Z*‰d[úyNFÝ|–]w¹¾`±D0¾xt}YU¡°ÍXaíâÐKðdYÞÎÞÇ“äJý$,åÓê'³x“êâý£˜Êz:É}À7ü‚Ü_¹ÃB+?ÆÞË ƒ"ô)Åî¥rX¥Ú¿K‘ÐÜåyÜ ±,ÙØ~Ùy‡„­;®xÇÜŽe7¨ë‡jêÌÿ[fïE—çôCx¹ðºù …µ¡X†é¼XöEÛð#ßwdeÈós̉°ÊÇw¹|2^åy¢‹ú‘˧B|/PÐKo¡¹Ã×?Ï/[м¾»ùiå•& -endstream -endobj -460 0 obj << -/Type /Page -/Contents 461 0 R -/Resources 459 0 R -/MediaBox [0 0 612 792] -/Parent 453 0 R -/Annots [ 458 0 R ] ->> endobj -458 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [370.623 566.287 377.597 577.23] -/A << /S /GoTo /D (section.8) >> ->> endobj -462 0 obj << -/D [460 0 R /XYZ 132.768 705.06 null] ->> endobj -74 0 obj << -/D [460 0 R /XYZ 133.768 667.198 null] ->> endobj -78 0 obj << -/D [460 0 R /XYZ 133.768 621.828 null] ->> endobj -82 0 obj << -/D [460 0 R /XYZ 133.768 540.757 null] ->> endobj -86 0 obj << -/D [460 0 R /XYZ 133.768 438.929 null] ->> endobj -90 0 obj << -/D [460 0 R /XYZ 133.768 400.449 null] ->> endobj -94 0 obj << -/D [460 0 R /XYZ 133.768 187.622 null] ->> endobj -459 0 obj << -/Font << /F42 352 0 R /F48 355 0 R /F40 351 0 R /F14 432 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -465 0 obj << -/Length 2150 -/Filter /FlateDecode ->> -stream -xÚ­X[¯Û¸~ϯ0°/63ERR±X lÚôù /Ý>Èm +K®.9=ýõáº8´cdû$‰¤†œÛ7ßoN¾ùÛ;~óüõå݇O‘Üd,ÓBo^Ž›H¦,‰ÄF«„‰Xm^ÊÍ?·¿ó(ÙýëåÓ>I¾ø ßb˜°‹_Î×Â’t)7a‰Ô~ÍÏÃÛÕüâ–-%Å)ƒÍݪ!?íöBèmÕã3ٶסj›¼f»}ÌÅöó@ÓEÛ yÕôô5˜]¤¶ÿè—×sUœ—Rô6§Ç×PÛ¼®JZˆ'¢‰&¿¸·c;6nºjð´›½R,Õz³"–)gž¼i‡³éZÇ‚I?£µŒ¢…ÚïaS•€`Ü])ؽ¬Š|0¨Ïù@ùòct~»Œý@c7rí *ûµjǾ~£¹ÒüιhŒÛáØv¤`ÂY˵‚ YÁýT¡p$ݶGg>¿¤h/:7Ì- öcQS:¿ý:VõP9gó;/÷çv¬ÙÁ²´ìàÄ¿vùõJ¶{­NI.º;΄Œžñ@¬’…zvð«,Ù«”)Áþ0&þYá/åtZŒÄ;§UQ²Nížù÷Xu¦Ä(J"Ez•'Z;ÁK?tc1|r*Œ\Ìå6†÷ÄgƒÆhªš“ËÍ´Uͯé¥é‹®: —éÄbi0!YÆ“Í>N˜L%ýñe— ›¹' FT<`™1™ÍnüŠUÃÛ/­TÆ’dB9\§†l)˜Nåàu÷¥8-ò&•ãh[Ù<±©Ø›Æ—ÏÁ>€Hj;ö†¬-D˜|:EÞpÜ ý&µ}!¡Oòorw.r»|„ã‚<g˜ìßQˆì)×h á½Ê²€E¢(õ‹~˾¿ÝÂI¤És¹Ý”t™“¿þkºßÐ:¹´](À™É"];ãç±ÏOÁT•°zÖ†€e/S}O1©Y¬gk>/¡5³ó°ÜV"¸ã(Â0Žvf -?Îi´¿š¢Â@,hx -C—–8Ö™=Åbk&¸Z«oáæBa*v©r/ËøƒO -ØëZQ¥íÕÐåÝ›ûì‹äMU¶…“6vørpƒäöÊÝŒƒ¿}¨Fà!ÐL ‡eÀ}X¼ÛGœóí_ëš²†Š¼}¥jõ­Wp·”é$#1Ÿ!飌[;bX0•)ïB,倫ø-š0%Ð{'øv‹Xùèu|¶&ªÎ,;1ÀËû%,ܽE)S|*eàµce bß‘ô=A“f¥9VMè@1’.õôŽcS\[L.„Š%J>¶•`Yª×õíÔµã5„WKÓôñá29¥ô‚¿6w(È\ÔÛ.Lf’Y’Ož€Ù#–Êx>TßÄ›Ž%À“¨¼LùŒáÛMSÎbù‡]A5䊒ק䋳Ô^àšä7¥î´C<¢ÌûH¢-ÍMËçÔ¤·ÒuÞYCâqj°þåoo½@{`úÀòX–ÆUUí¿±^›"ÅŠqØŸË!èYm(Ö&Ȳ¥Åí,}¯ÄWö,ÐVÑ0é4±[Ä)ån슑¦”É`î&üqÖ#˜š–Ûº&:¬M¶uÕö¦ISJhš÷¡fÀ›*‘tŒ$¶%>o #Ó¥ζ ÁµµúÂOö–+q¹EÒ|÷…Ó×±»¶½›ºÕ †ÔQµ0·ûC*³Ðñ±» ‹ºøÁÎoß`k¡2] -)žZ/,F7DºÆa½ŽÛW‡ÚxùöXZÍWF þX»hÔSu³Swô'úz§åÉLM@ǽVµçk£‡oÇÉÚqطǽˆrwE7Eõb·"gÉ»4[²8–‹›¦ÐÍU¼¤Å?ݦ€fÏwÀ%ð/¨5s¬Øâõ°¨G<±´éÇËúýþkUÖQQ"<m¡CáþþtW¢5]üg´±½±ýq²ø ^ûõíæ‹ ÅzÇÔúÑÂê¢L<$ÈŠC5U19È/|ªÃWcë¾î»6:a*QÂF›ÕuDTŽ×j‹ÜÑ%»³!Ó¯ Ó8žvkÞ>`ÚÀ -ÏX4'à—?>7ý7EÐ¥x+¬îšlNYŠÍ?`d».â«U¿½¼û£fÿH -endstream -endobj -464 0 obj << -/Type /Page -/Contents 465 0 R -/Resources 463 0 R -/MediaBox [0 0 612 792] -/Parent 453 0 R ->> endobj -466 0 obj << -/D [464 0 R /XYZ 132.768 705.06 null] ->> endobj -98 0 obj << -/D [464 0 R /XYZ 133.768 563.96 null] ->> endobj -102 0 obj << -/D [464 0 R /XYZ 133.768 514.521 null] ->> endobj -106 0 obj << -/D [464 0 R /XYZ 133.768 452.015 null] ->> endobj -463 0 obj << -/Font << /F14 432 0 R /F40 351 0 R /F48 355 0 R /F42 352 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -469 0 obj << -/Length 1268 -/Filter /FlateDecode ->> -stream -xÚ¥W[£6~ß_²Ò -¤Åñ…k“‰ÔK¦j÷&mÓémªN‚†@ -f§QÕÿÞclÌ&Ú}òÁ>þÎÅç|6ØØØøþ~2~³z1½&Ž¢Ð£ž±ZÄ O¨á¹>¢Ì5V‰ñ‡y‹‰oý¹ú±Û7½v‚Þ&)1Xh”y^ï¤2èàžõƒI«t‹],y‰´È-›ºØ‡=¯”å‰ÆØñÆa‹ñ2áë4ç#¶1æ´zë¢T q‘W"Ê…úúdQ׌²šWà yÞ '6ñ=äc˜¤Ÿ“”MYÔûOEÌûY‰ë²ä¹ÈÊË:¯+žœõЇ~ƒ÷©ØEÕÃÙdž;¸ÇmQq%îøîž—í–zV:Ÿt×A4ü’œ¯ë<Þi.x9– ê Â’úǘÚ]€Pmçöµ+ï3œ®DYÇb¬RÄ\¯Uïâ¡À÷[:—Áœ¨¹ Õņ‹m¨Ìƒv¡ëC]‡ÃÓn3ØÔ …®KU¯Š\6 š±1â#fÙcl.ÿŽvûL×B±ÖVºXzHÐì¡×¹9o¬.ÆLº rÞ1‹ˆ6ƒdŸHºM\Œˆ‚ /xfÄ  …„Èx¤¡Þºe{GíøÕ¤ ”Ådñ2Íã¬NôÚ«LÌÔ -Ú¾ÚˆÙ|*÷)X|±äÕiÉ«#ª®:µ¼e’®×wB}Î¥‹›7Y‘o PçÓæûBSÊù›‡%4òDMÅ‘à›¢<\MdwO¦ç Žúª\&CäŸÔd/•I÷Ä\‘âA\(OZß{ñUe¬Vš¯ùTïõí2Ĥ'í¾£-l/¡öhML{Eƒ[ µ$SYL¹Ü§Ó=Rr^Cé’—ÕÕSýænùþçww¿/?~8ujÏ :Šqýáãê·»Õ/Љ€›°#ÌB§ÚÔÛÖ_mùS»Ý½×ÖË$t) ŽdÕÔu3mîßLø-Æ4牚…u3) 7½ÚÜS#Þ8QÿèÍrü ì0v–‚C·Óéús,21ïHè•Ê8c.r¦ü‘g²lÇÌÖ#F™ƒpÈ.Ëfàui—9dØ3Ó\¢.µ¤Ó—¨¯ûƒ#5ÄÅn×Ü òC¾­šµ¼P·HÔ“”’ºLó’·> endobj -470 0 obj << -/D [468 0 R /XYZ 132.768 705.06 null] ->> endobj -110 0 obj << -/D [468 0 R /XYZ 133.768 560.807 null] ->> endobj -467 0 obj << -/Font << /F14 432 0 R /F48 355 0 R /F40 351 0 R /F42 352 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -474 0 obj << -/Length 1969 -/Filter /FlateDecode ->> -stream -xÚµXmÛ6 þÞ_t_ Qõâh ¤ÝuèÚ^‡-Ø´ÃÁ‰u‰ÑØÎlçºÛ¯)ÊŽ•úzm}²LÉ”D>äCšÏ¶3>ûéwÏç«_†r&B¦ÂXÎV×3¡Kb=‹£„IÍVùì} ç Á9.ªciš¬êæ ñàù¾Þ|liüG|þ×êgЧ=}aÈdÂvVÓ*Úgn¥·s¬˜E¿°Ë¶ R¸…|–²4–1®[H®™à $¨Žiýjg†íOkEÊuÇæca̸G{íB›ºê²¢¢—b.Š /æðzSäÇl?±iªáXÊÛtrO·H>ß37í¦)ÖEµÅ÷(0ÙfG3õ5=;¸+ êsÁS¡z4LÈ„Ö³…,œïª¬4 YÅ28¶&Ç‘ -ðJ(±šP°üå#Ñ«Š$m]’l²–4(\ßöÒºiL{¨«Ü©ªiIF¯/& Va|0 ÚeÂ,R±t@Á#P–Š ë7éÏmGwÖ1KCÿÊîÀK¼ ˆ‚[zËCƒ¶({'ÜÔå¡Ø›EW”¦—Tm(AÛ°-›ºWàë¨?î¹¹.*3ålà†Èf§°G—„í0T¤x/ í €Ë®hÌ%Ž]E@Åw'MiÄxÝv§…Ü€ †°jH_Šp|˜”0Ð,ÖýuDrö‘0ÜŽxœr;¸1¢an`ׇ®¨«lÐ uü—ǨÀ)P3Œ Å0˜P`z¥ïC·}w{p?íêÖ KS®MƒÀSBJsósYA`Y8 -ÁnÒáÑå¦õmÆÂù̞Ž¶M}<0Òõêšd,SuοÊÆÞQ˜í®>îsš.³3Eû ´†à3×½žO€8ßs@4Œ ?ô²>‚úä€Núü$1ì1`­=• •f*'Höed—$hyÉè;i½> =&×>0Ã0ajœ¾ñÀ‰Y—9Á `„Ý[t3‡ŒŸí6áâFÂÂI,`†Ir„=¡çïpº’å²Ã¤©{XáKÒg~PRa"DQ¶Ù˜CG¡!‰v6un릠ôŸXÔOÀJÄ+q_„%,JN°ªò©XÕŒ‡ƒÇ×EWfíÇ»²©òH×’5° ¥oçãBemö5ZúÓ<Ž‚/Ê B¨Š¿UÀ$M7e”i­OwøÜ ¡º¬šO)áL 1§„49§L€Ð#mò’Z÷9ËB?°XÀÕ-åâÀô„¢¡‚©¹AÅÆ-€ÂpëX9Š™Zô\`¿ÚâÑ-½_× H1¼à Åæ¸Ïz§=ª¼vïýòñ9@rf“eä—TÞç%-PܪòØv´ÃÚ¡ÜðPɉÁe8UúHÔ—]&–ªaSð‘LS¬^Û¡ IYtVР»Ì>·4 ”Co`¾ÊPÇ'ÓÒT¶‡=C0´–K´ój”ô•P¤‘»±”Ë ¨íõ®©«Úmú+a¨hö˜Ü?`×Xo!9TôlÌßÄ\£pÝÔŽî°î2%d!#ÎÕ{‹„GÇ^g4yºŠ£Èz_l¨²û¦þ^¸!ðM”HÔ8ú”GŸâj œSƒTÂÝ&<ˆ£Ž†8ˆ“ lBIR’$£G}É8) ÒÙ¼:„´çðÁÂC0¢ZÏÞ&ÿM µ7‚a*ÅCcxêÜîÔ#ÛB½´l€"y®¼j{S»šýXaÃsw­§LBÃyVjKWj¿€ÖÏ v™.²5ÔSQúÝEöyc+×b¯´¾Àæo‚r‹ý}mÌ”_óçâT! &{N›Sá¹-ðf.×Óm³µïe\í,Óš¥;L¥¨”Ϛ팿þô`öÞ.JÀ©ã\k+ - -) ÎJ°UO¬¤ë{bDTŸÁ ª«…ƒs×ÒèÖ'Š;’?bÎÓcr¬ÞzÞyŸPho0hž>„ºä! °{}úð÷×Wo—^]ü¹º¸üíջ˫ËåÛ‹‡ŸMÕçÚðÓ—oÞ-W RÛHé›w?^½x³|ûËÕå»ËAáÂ;¤cÕ'ïL¿Ð‘¦aèîœÐò?vÖù‘„~¬Þ˜¶%Sâ¿-Ëð‘¢&¡ÙÇbòUȃGnºr_dm{,%R6 ÜO:;ÜCïŸLãf°>+ …9¶¿¤?îÌ^á`Úã~(ªoñtâÿ³ÖŸtx@Ã8Øó]<ý½ïlt@>¸ó¼þð|ÇL'¡b -ÿ<£z!½O.Vþ(ˆá¨ -endstream -endobj -473 0 obj << -/Type /Page -/Contents 474 0 R -/Resources 472 0 R -/MediaBox [0 0 612 792] -/Parent 453 0 R -/Annots [ 471 0 R ] ->> endobj -471 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [461.539 267.059 475.985 278.003] -/A << /S /GoTo /D (subsection.7.3) >> ->> endobj -475 0 obj << -/D [473 0 R /XYZ 132.768 705.06 null] ->> endobj -114 0 obj << -/D [473 0 R /XYZ 133.768 667.198 null] ->> endobj -118 0 obj << -/D [473 0 R /XYZ 133.768 594.331 null] ->> endobj -122 0 obj << -/D [473 0 R /XYZ 133.768 371.791 null] ->> endobj -126 0 obj << -/D [473 0 R /XYZ 133.768 300.683 null] ->> endobj -472 0 obj << -/Font << /F42 352 0 R /F48 355 0 R /F40 351 0 R /F14 432 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -478 0 obj << -/Length 2210 -/Filter /FlateDecode ->> -stream -xÚµYK㸾ϯð-2Ðæò- -L³ÁHd{sÉä ¶é¶2¶äè1³_Ÿ*%™nu·w9‰&‹d±_=ÌW+¾úÓ;¿¼÷ÃZ®„fJ[¹ºß¯„R,·neMΤ2«ûÝêŸY±ÞÎyö±N¾-ë¾[o¤áÙgnøú_÷†C\r7Ìr w„í¿÷°ï‘0¹Í¸Dt}ù'ŠHÈW+¬´H·–3ìl¤dÒZ¢ÿXnÓõ31hn/¿Äg·þÜ6[ßu#$NÐ7Ÿõú»•eÊêßððò\-½[0=»¼[™éZ‡…!¨—~¡Ò\®£æ`æ"F„ù5€4YœÈ%6Uìߢmr•!x).ƒÞðwIŸ‰™m\ùWÚºìÃТM…`Á£PDaa<‰X‚cÅL€wá€kÔp<.©³BO‰MÈZ$aƒ´žŸm ë(uW=Ö~·”‰Ê®pWN«$≹‚²"³zBN&A'fßC¦\ð‹"î+œ'¿1Z“!,i“ýäÏe[ö~GÛ÷msZ -yÕ9-Þ´7 3QAb”Ç#\rœ)%¯€©ìÆä¸Á„8ºs¿Ÿf)ÁâéSròžò2BŒÿ¯Ë\—ݲ4„T—Qø½ðy£töW -¸°§oYÇD_I&hf 0¿eM„ÄC<5¯uÄJ\i}̉©DüIÍC ÚpÏà> &2—meýHhœge¿´F7{š"u9ß úù1DÛã6 -è.â ®BâXu½¯·x÷bH8-$Bˆç hâ«-‘ÁÏQ00 2˱à:¨à2}Ò ¶`ÿªmÞJrfÜ”†·àáž‘µ±fˆ|̧¸´ Á"yíkY^¼Uæäî†tÕ0g§*c¹˜\ŠëjRÆjòCp4•ðËu¤ƒT×ß[G^ËJ( ecž”¯—åyrd`ôÚÊ!““‹´`ãh—á…1™}<ŽYGåEVÞÍʪ÷É:ÅS¼!)ÀÙR'cùFßµR÷‚G™ÿ\Ï9ÑÍM+™)f% áŒÅ6 -u­Ý m©ÐEòÛÚ(Š™ü¥ë/O…L;•4RøúE#EÙœœ@…†LaÅ_çÇL†Õ¸T¼Åˆ¨YÀ‘.ˆ°˜O¾'üÌá•ö*|•]ŒéàŽSø^f6Ò/h7ù>9Rý{èú¸¯-·_:¢%ó€ÉaÔ.Œ“´Ú`‰;‰:ÏþN¹'DÀß­É")r—`¨³¡Ä\ÃÓD{?V[w?úäŠæ¾wðžéLj!§ÈÕí='À”ø=§®/Û~9âÛÙ­0â;5Õ¿w ŽŒs£Ð×»åâ2×Iqéäe‘s—}šÓÀŽn«ELšp!X ÞÃe”0çi@½+œ»F‚cSéªk4Ú¤‚ôqô9øÎ>·ØÌßWÂÜ I%'¨>'ÁÃb L -ÈcÍ„QŸ¹Ô‹%ν.j( -%ç¸1…É>í{réæo*î¢oð^@ƒ3$IJîb^lO½JÌ–«?¨D¤ÑoŠJD7±x ™‚:oð{Ï8žÔ -ãI‡ˆW…Šx…+£Âqó¡Žq½ -w†gëÇ>T?†«gyz8ŒºDo)GÜyxº -•ÔƒÍPïЦ4b0³MÔÝRLÑÜ’?^¯$‡ÚPŠßÐ3ú -æ1%f‰†ræÔe»LIÛH‚ä -]JZÚùn à9ý’ÁÉ-Ü¿]Fß|J‘#yCßo¨ñ]I‰ì©J Î’X1jžkru®Òð -óUüN1Í'ÇÎÆØôE¢X}µ -^8ƒúÔaXÊ äÔ7ˆÒ17WžIR5±[­šé\¿`¯›˜5LÍ Ý``/eäÐ<€$®š±hҙϩ UBññþÝÿ™Uò% -endstream -endobj -477 0 obj << -/Type /Page -/Contents 478 0 R -/Resources 476 0 R -/MediaBox [0 0 612 792] -/Parent 480 0 R ->> endobj -479 0 obj << -/D [477 0 R /XYZ 132.768 705.06 null] ->> endobj -130 0 obj << -/D [477 0 R /XYZ 133.768 667.198 null] ->> endobj -134 0 obj << -/D [477 0 R /XYZ 133.768 618.242 null] ->> endobj -138 0 obj << -/D [477 0 R /XYZ 133.768 360.429 null] ->> endobj -142 0 obj << -/D [477 0 R /XYZ 133.768 311.517 null] ->> endobj -146 0 obj << -/D [477 0 R /XYZ 133.768 232.837 null] ->> endobj -476 0 obj << -/Font << /F42 352 0 R /F48 355 0 R /F40 351 0 R /F14 432 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -483 0 obj << -/Length 1594 -/Filter /FlateDecode ->> -stream -xÚÍXKÛF ¾çW>É@<™·$ °)’¢==,zizey-DWî¯/g8’FŽìl79ô²š—IÎðãGriðÐà§WôêûîñÕ›L I4×Áã1`2&ãVáB‡àð#eÑöÏÇ_¦ß½ù cïGf$`ÃΚªÊëÞœ‡cÔ;&%BŽçvÛW4lÎ}ÑÔiI¶;ÁhøÐMÛ îv}[ÔO8þHê¡Ë0bÄ)àc$QŠ ;.Y°ã1Q,FEŒ¾Ý1JiøcS÷`[çTŒØ—‘H¢E4Zùj|»¦MS"¢é>}úÔ­\zÇ”"”M,&Ú™ôkSçÞà]¤¶"i°‚h.œél2¼ªÒú€v¿+›ìS7?Ê|‹Y“ŠÄj¾F†º·kZã„hí_Ä<ðÚ]Dqó¾œpáùÇS>Yà)&Œ‰›ú}±š‘hO=\M RݧEÝá줔ׅA‹[ÿÙožf§åJ&ÙÁq¨3ïæµFKìíªq°1+ØÅ”(š€«¬“Ñž¢Æ—F™0xøíçUðÑ+Ø12zï¡ï·œ†CŸß£ŒP!î¹m>Iñ¯Â/R$Râüî]á"ç;Øá,ľíﳿ„RRþ\¸q=Ý›`Â[y€“IøOÞ6î¶-®TM»Št›\«^Ó¬4á±òoý5XŒ†tÉ~M{È[D&Wæq¯ iàœ–ý©ž DÂ-H™ -/f&@\î–/ç"KËÒ­[¹€y»·¿à·kÚÞr­=QÏòì  ÈìÖi•ƒå’Çaßà~Qá¹@õgóÇ>“A“oíi x±6Oé¾(‹þrÅå_R¡tXäK*üÿш°DÝòÊ’þ æ”~ý±8&\=—þ(—ÏÅðH~JúX„YŠȆCÖÖufîs"®XTjú8´Ìq ´5Šžr‰´ïgHr‡0ƒ°J.ýf¤ß̸׌Á¿é­ç܈(©¯‰Ã+LÕ $_€”1>ƒü§jæ¯!ò5rI¿–a¯ex‡¸:Õ00.@¢Åñâ¤Ë*Lx^‰ÓjÇý©èðìâH±d]††,<¶72¥ÏešY¬H@Fm*,[¼ÚÝcÓViïv¸†æH µbËB€ ŸpÏš! 7¸3È‹yq]LŸ·U·F×@ŠM~ÜÀÕΓÍZ|%ñxòõŠ0(!†Øl7‡*]“ÇÇž< Ló¬+V2¨¡¦£›§6=ŸŠ¬[µ2!Q¤¯¤þ]ô'UCÙçÒUø*Xàæç´MûÜ•vû˘ŠÀÕkç1LšL@ݼ^3‹8æÈš¢øf¼˜—T¶X…Eþ’ò¿²,ﺬ9¬†M„”>Ç Kè2n¨‰³:ƃ° ØdšŸ›®+öæ=íIÔyJœ·9dãÉ 7Ô½@ɱmª«úÎ…Ùˆ ç…ÔÛÜ]y­,º~"8ûý}©p(?Í ¯Œ"N“É£Ý}‡àÛ¢;ô Ü‘·mÓÞraéÌ#±$ñ!!“<àêDb0áóÐÝìsÈ*ÆÑfM±Ëöé­cœˬó¿wÇK¢£Ík(½ÎiwÃRhß:ZôÇšYwÀêä/s -,ü}ÊáõZœ¸V(ò²‡™Ø—€ÁÞíÝnò…1bá‹n0Ok#µ65¤AmR\ü¥cؙ˹5W´£[ôä*£™¾PއɈĜùf°@¹gL3ôßh ”ƒlV²q¿žÐLĉ!3»§sÁjcÀ{3¦‚¨¼Øl€9¿¦ðXëç:t´61¾°YuØÇcÞ–ùç¼\1(†Ô+Å=ÐR­¾Z}§X?·\…GD´aøØg”ŽÚW b«ÛÅØÚÅocx"\˜(w»Ð"YÁ¶H«Ð ˆ\Í«SÍ”¸6Œ=’ÌÉÃQ!K¶çÂW,™­ãZ—„½]:ÉÅ6綨 aܬwñä™õ -êɦ–}ÓåÐwnˆÓæ Ò+q‹]‰cìKœÙz*¿Ä1;ð°Öe,6QËÛ?£î ¡ìËž VОqˆYèWÆÖE.Ž¼|õ/’”_0 -endstream -endobj -482 0 obj << -/Type /Page -/Contents 483 0 R -/Resources 481 0 R -/MediaBox [0 0 612 792] -/Parent 480 0 R ->> endobj -484 0 obj << -/D [482 0 R /XYZ 132.768 705.06 null] ->> endobj -150 0 obj << -/D [482 0 R /XYZ 133.768 640.508 null] ->> endobj -154 0 obj << -/D [482 0 R /XYZ 133.768 594.232 null] ->> endobj -158 0 obj << -/D [482 0 R /XYZ 133.768 527.507 null] ->> endobj -162 0 obj << -/D [482 0 R /XYZ 133.768 480.309 null] ->> endobj -166 0 obj << -/D [482 0 R /XYZ 133.768 406.038 null] ->> endobj -170 0 obj << -/D [482 0 R /XYZ 133.768 339.702 null] ->> endobj -481 0 obj << -/Font << /F14 432 0 R /F48 355 0 R /F40 351 0 R /F42 352 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -488 0 obj << -/Length 1797 -/Filter /FlateDecode ->> -stream -xÚ­X_Û6 ¿OáGhTI¶d{( -Ük× †áöÔîAq”Ä«ÏÊl§·Û§)ÊŽùO’)J¢øçGÒ<ÚGÇ4Û×K×錩tdí;»ÐÒLµk‘‚NSs¦ó/Ðì«cëz÷zI³Š 9 -RÁû’„Ç­ýëTµv _²ˆáD¾;u=‘6–(ý!L>p.ÛaÕÖ †Qi¿ë‰ÅŽÇ…­fOß[‹›o­ó™°pƒòFë âšÔG‚îNM‰ÖGÓ±]ÿp´ô Öñ£¡!Ø!Ð:·¶+Ûjcyck·’*¾_i¿@9t|:ÒZïÂxçÏ/oÌõ‚ò¹ˆþJt–Öö§¶¡9 ‰³ÍJòøÔÓGã¤jÊú´÷|~M wõ¶íØ“ÞB¦_ ¥ú"oÁ‹^/Ç¡’ÅÀÌŒ1‘¬®…‰ë›ò@¤QóøAÒ¯D vÔs­ËLͼO«†ó½žý $Ï qfjG ãQ©ð¶–I>µµL.làÁuünGk†vœZo>®_l8­qµ]‰<ÞŸ¼ -ÂUO<ºº@æ(ÎZ”™†¹x^Ýë“^¨ÏhñM€?æ×èÚZŒ»ð%?ãÆ«O¦®¶Uÿ°ô -°$K'XG‡O\?MWVÕÖ•ôõ „gšh@«M³?™=¡–änHÆ°ôÞ „b)sw8[ò¿4*J†ó߬„ŠGÇ$ñÒ oéðæTn0‘‰ ÀÒÚ;S5ãŽstপ!ªYò VÎMS]bnUÉ\—xjdsÇ5½LyzdM¯‹Q)w&dÌ0hà@U„E×nmûÝS^'RV¤é\™ÿvÀÞ¦[„„å|šþE‘MÓ¿,dü#†Ò1>q4=TemXó…·hz0Ö@¦a(p~¨ÅpZ.ohÜLHäeØ "/ðßÁ‰zâ†ðÑðH©3$ +tr˜&Œ¨šºÝ B?,cˆûþ`$À;×ÌÔÅ`³ÇBvÚÁ„¾B ¬l›­'øöéŽËøçCë×Ñ"ÓßPuŽ@øŸæ“á¼Þêf׿¾£I×›þ±¸Nu_/‰yÎ݈û¤ ºÒ;Z¡ÄŒc|”(§µãj¨f¤Ý#¦;ú˜$tàAó†sÉ ¦r nmçjÒ\Hì.Œ„F¾Þ›„­f\Œy³ Ã…—Ë”ñ9†Jö誦Ÿ‡¦/NN „eý0 µyð.ç `S~|&OpÆ¡ýŠJìà#q)psÎDQ<]·ÿÞÆwÿyVl¡¿JìêîXWeÕ[pÕ¶éšÒ§†Eð*gi"'ðÞ~D -¡x3â .òüºò1rï`_@5?©¦>» Pç2SÊBÅ…5kÀµ -P…Êi_Ÿ+|uîÔ–¾fW£¶i%„T(Ã•Ç ¤»ÍŸ¶ì‰PÉÔ*h*]=ÿRüŽ±Ëã%Œyðß,â¡-O'5q°0ôZ›Þ;ntá Æ†=¡¾¹Lݹa³odÂQ:µxÏz)®}zL”ŒÑ'ت† -ˆ}T2k€\…åÎŽp{…ÕÚ}D“ßÞ^Eï=ô”)3W…{Á´Èâ[cÀ51 ^î­°Ý×z`…q³Ø~@yåÚ£kƒî> endobj -485 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [336.998 327.93 363.898 338.874] -/A << /S /GoTo /D (subsubsection.12.4.1) >> ->> endobj -489 0 obj << -/D [487 0 R /XYZ 132.768 705.06 null] ->> endobj -174 0 obj << -/D [487 0 R /XYZ 133.768 640.508 null] ->> endobj -178 0 obj << -/D [487 0 R /XYZ 133.768 302.401 null] ->> endobj -182 0 obj << -/D [487 0 R /XYZ 133.768 255.203 null] ->> endobj -186 0 obj << -/D [487 0 R /XYZ 133.768 212.04 null] ->> endobj -486 0 obj << -/Font << /F14 432 0 R /F48 355 0 R /F40 351 0 R /F42 352 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -492 0 obj << -/Length 2063 -/Filter /FlateDecode ->> -stream -xÚíYKÜ6¾ûW4r‰pÓ"%êá'Ùd×Hr˜ä/u‹3­D^‰òxòëSR-uklû{É"U,²ê«nî6áæO‹öË›'Ͼ‘ñ&y¢’ÍÍíFÆ™H¥Ú$:*Ò››róKð:”éöß7ÿœ¾{öMÎ>Â^´øæhp-,Éæ|S‘+é×|nNæ ·lÎ)ʄʵ_f‹»íNÅqP Üv'[umQ?Å¡Š¶dú¡kmQµ´* -¬ÙJ¼µ°Øîâ4 ¾³Ì¹jËêPX3ðÐ ë{•§‘ÜØkÆfu°w”SoðoªnꦕæuªÖ”<¼ízÏѸ“¦Bfñò¤î£ -ï–G*èn±•ô]ÓFp`;žÆÃÁ˜N¥u|9Vµ¥Kƒ©—n%ˆ?€B#­‚éó¢E>ðÂÒôi¦œ}Fò†KI¾£0 Šž®Al's@ÓJ&’ˆ°Šï*tº¦)Öktp¸ž»GS”¾WQ³Ð2 -†c7Ö%Ï´ežé}_œNÆÍÛk;¹ÿ]–édf)ƒ¸ÀäÈ;r$s`4$ýœ©É®*J›.¬CF ´½ùÏXõ¦|ÊC2tf@†™“iáÀ¡S£æªÖ1.Ípè«=Z £6|«Š.#“BÅ^• -3J*ow2żœó?=ì`QÙ8|êpº‡O©C‡ÙtôÙk»ëH¨¹Þ€£\¹² -#‘ǸŽ${§ræl=gkÇÙB Q¢&0ðœ(ïIÄDºËF᧸9ß’ÖÀ;‰pZŽ#ªÑ´<’†@f÷ìf’Xèø¡USÕ…»y¨7ƒë;ÐZ„éd¬Ÿ7¦Ù›~í@O‘”W¦8¦\î㯅Gƒíǃ½°Ï±%ÿ‡]Þp8ÛÛL“2Ô"Bª¡•>Û›Îâ^X æºUÀ’œ;r„¾>f.E’$YÙLÕ±ˆ¢y Þ餒"ÔÉÂÖÖ¼Cö˜w¨M»r×*i:ÝõΕ頺å–á <øáÆMÜ­kû¾xØ&:@çÇ´LÄAdZ±w|ºÖwzn›®÷”åž1x÷ºî0ŠÜ³Ï 9è‚'kt’/­Ñ ¤–ÜwûnÉ ÜGï@bà€C)tLA!(Ýaˆˆ¡¼‡„à9‡Ä¢õA–v¹Kpƒ–"þJ˜s.ñ38Jb(µc]ïMÕ¢Ì@ŠÑ®r ;7`ÙpðÙ—ò¼–±Oy‡ÙOæ~£4CéÌ3Çó{¯ü(dØü9žê@ŒO^×]Té9lòÖ¡råÒ=$»¬u4Åëïzõj ݉ÈÔäcP ¬PÜ•¸sPJ!ÔžÝ)øéz4ËåtúŸÿõ+nÿë·/¾ÿêÕ×+Rd‰iz-(ôˆ€ÄŒT¹0¤ðl9Óâ}eÆ¿ϦÞkR&à6õamWŒ¶{ƒeGeÖ§ôÂ…êtÊãÉŽ)°ü€ØouàES=ƒŒ‰RíÝXÜ^>¥KipgZã<ÎàêÜæ Ðrzå•;ò…XJYÓ`Rþù‡–* X0Œ'‚%nÑn€´»BxÑRJ\¶ã p~p4‡Õ0Œž‘±±æ)³à`]յˋ“{—þßÀlÞ‚Ëj‡‡ö°¢ÂDÌæTrB¿àúàS÷]WB0 Ø/cÔSéT¶Ë:ì ÌØ -˜ÂñM©™[¸˜‚à–ëÜKô d6æ“Õ 4S"ò‹"CiD68€‚¨ö}€`‹Š²ÀnQ<ëì­ð£Y2 C wâ\qÒúnÿ›¡\ –Ü0”yº7·à>˜n;'@çXú²õ*>úT¥ §iÂ[Ë*Õ´PÎ1 ӆзs'Я­éJ2iÂð 7›úAÇEg5sÙôü{,Wd/m±F¥ ×w[ª!Ëc¿ëÁÇÂ8§J•æF(¬9â—§w챇ºuÀû–að#ŽWÈÀ+¦ç‘<(;n/¥s~àÂø(1÷õ\1OgÉc³ 7—¹6ʳJpÂY…C3"ìØwmõz5ÛV±ÈÃt%ÙVSy7ÙÂci68¾(úè4ûG2 -E’^rЩÙëeŠµi\¥”ª)é[{OÊ‘§ÉÕ|ZÏ%#ŒÃÈ¥=¸K®’rLŸy*> {Óp®À9“ûºrÖ$=fÍ”—>).Ý󑌕ÐÑåó•ç.õN}ZžúG7è1H²Ì×÷@â$ž]4·c{p–Ÿ¥Wh Nð;7W”eu^YYn]ýúW'Áý Ñ­áq0b^Cº¢çï -*ì0Æ¢XÈìï§Ó÷=®5™Öôhš.-> endobj -493 0 obj << -/D [491 0 R /XYZ 132.768 705.06 null] ->> endobj -190 0 obj << -/D [491 0 R /XYZ 133.768 572.762 null] ->> endobj -194 0 obj << -/D [491 0 R /XYZ 133.768 513.609 null] ->> endobj -198 0 obj << -/D [491 0 R /XYZ 133.768 289.076 null] ->> endobj -490 0 obj << -/Font << /F14 432 0 R /F40 351 0 R /F48 355 0 R /F42 352 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -497 0 obj << -/Length 1823 -/Filter /FlateDecode ->> -stream -xÚ¥XÝrä4½ß§˜;<_í(’¬R©Z¶v©…* –°\µ¥ØJâ/3öàŸ@xzZjÉc;ÎàJãV»Õê>}º=ts³¡›¯^а~yùâì­àÆH.%ß\^oXš­²’šðTn.ËÍÏ ãDnwŒRš¼ùÃŽ{»ÝqI“æW³ýõòk°”Í,QNr¡à oã¼hS—ÝEPž«Ñ<ªöæÆéŒnÆÕŸ“\qåÞÙ1­‰R -~d\^9fÃS’3þ¨¹ÊDc¡pl›¾¹8ïŽöâÃÝ{Û ûþüÌ?nw -¢p^›ƒ½¸¿{ÝZÓÛwu×›º°çg^|~†ï{ótiÚ´æpQ4ðJ0N‰F¢Éë&žè½„å*cD ¶þçw‚õ‰;N E¿üáþµÏɹXuoéÓÔ¦s’òìŸxò8>S?˜$,O~œÍr´›¥Q-tFDÑ 8ÄK¸Û優`õ§[[#`!A…í:[âcU÷MD²_^ãrkMiÛ­ ÉKô·U‡¿ZŠ.¾ÿ<¼®øá…`X"ê*é“8ž€h >˜)‰`³•>‘­ Ÿ æ%†)MR¨ËÙ±§³¼’̉ÖêYp8N®Å¾X£].‰ “PzbØçû-ƒxlyñ±¿÷¢}Uš¾jBzcØQ’ÈËÄHI÷X§$ðgj†cLF7†ðäf×SÛðŽûž„Ä{wÆÍšªëu@r(:À'D…ßå®s»’Ç*…{©øÑþùZºsA²|ì"¾ùšsܘÏþoÞÿðî»o?²tm:’DËôy°Ð ËÔAÅp¸‚Ø?ö"…Ÿ§Ápç&æY9jHÖÛXqbžT¦ñ³O@¡ t°ýªTê€ÐÜÈ bò,>C^'TLÓR@Ïf_±óÿíNê–|ëøpå€çÏU½¶µR“)÷£ïy癇é0“cârÆÒ¨&yÊŸ—QN5Jþ‡”˜¯O¨)›Q¬€éúè¨Ðì ¶ÊW5ŠM Ó»ßÀçEƒdZÄðxÀo¸UŽ =\"IûâþÌj#46¸¤”N~Œ¸1ºh$à¦Y•MØñ#.¬a,µu(~Y«”©²¿ãEÿ‡Ö Α÷@%Ñw]7]ÀàqOnÊ2NF‚ˆådTTm1ðÓÝQS&í¬''øHS΀?SÀjp9õ9øÆDTËÅ¥½(k8jŒ›?¬Y›†®BwœÎ_¾sRÞvý¶0ÛE`8’ea X ôÍå‹¿‘Bw -endstream -endobj -496 0 obj << -/Type /Page -/Contents 497 0 R -/Resources 495 0 R -/MediaBox [0 0 612 792] -/Parent 480 0 R -/Annots [ 494 0 R ] ->> endobj -494 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [384.815 244.183 399.26 255.127] -/A << /S /GoTo /D (subsection.3.2) >> ->> endobj -498 0 obj << -/D [496 0 R /XYZ 132.768 705.06 null] ->> endobj -202 0 obj << -/D [496 0 R /XYZ 133.768 667.198 null] ->> endobj -206 0 obj << -/D [496 0 R /XYZ 133.768 489.163 null] ->> endobj -210 0 obj << -/D [496 0 R /XYZ 133.768 421.129 null] ->> endobj -214 0 obj << -/D [496 0 R /XYZ 133.768 355.974 null] ->> endobj -218 0 obj << -/D [496 0 R /XYZ 133.768 277.807 null] ->> endobj -495 0 obj << -/Font << /F42 352 0 R /F48 355 0 R /F40 351 0 R /F14 432 0 R /F11 499 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -503 0 obj << -/Length 1351 -/Filter /FlateDecode ->> -stream -xÚW_s›8ϧ`ܸ ²$„€»KgÜÔisMlOÂäÚkn<Ø–c&6ø§—ûô·’À€KLŸVûO»¿]-Øx0°ñá|ß…'ý ÂŒœr#\„ùÈ#Ôஇ¨ãáÂøjÞcâY‡ìåúÌoÉ•Šyžn6")$?°ácÈqXÅg[6u±™n‹8M¢5²l‡`sÍâ"‹²g}šYœ<èõ=vñ.Ùåb+‚JÔ ®K¥›ˆ2bØÔG.ñµ!â jÙclž§I¾å¥ée©ÃoêâŽWyùûRDÅ.o»Ìq¹lÏZDyÇ­mÂ)">ƒ…xéÓ_"KáÂÔ5ÓL7i&öîÔÒ2 Ù{“‰vqí nsbHXÉ%‹mÄCœ: m›ô©[AØmßLy)s ¡7¹˜ËÜ)dH±‘=zqóáÄøª˜o!G¡É%§ 9fœhMQu“…È,×5U’eà„1‡…Š½vjÍWGêH÷ôb!òyÏ„Ì/ef¤©¹(ôò­¾1€ [Z€¶h®yAÇ**´T\R2‘oå-pèÉ"®)ÖÏÕ‰JÂBï–A†ÍS¹ T:5Ï&•BZ²bÍÒÍ©ºnߥXÅ%&K¸ê]TR«‹-ôv&Ö©të›ÅË"WNYãÍv-ö ítÁŒÿ\%´’þƒ¶a#8­Ê¨ÌX6o£m|Ö{Ú­£¤§)I´g½»OÓ»áÍíåx4%S\í63‘õ»=å¥AÒŽuUCZ¦ìVg½"’ SÄY¯E¶]G…h*:ÐS¸š¾Þ]ž§£Áõ°r¿¬âjü~z~5¸žLGãÑð'nx<þïÅS> endobj -500 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [385.801 606.884 397.756 617.828] -/A << /S /GoTo /D (section.16) >> ->> endobj -504 0 obj << -/D [502 0 R /XYZ 132.768 705.06 null] ->> endobj -222 0 obj << -/D [502 0 R /XYZ 133.768 640.508 null] ->> endobj -226 0 obj << -/D [502 0 R /XYZ 133.768 570.152 null] ->> endobj -230 0 obj << -/D [502 0 R /XYZ 133.768 227.094 null] ->> endobj -234 0 obj << -/D [502 0 R /XYZ 133.768 161.505 null] ->> endobj -501 0 obj << -/Font << /F14 432 0 R /F48 355 0 R /F40 351 0 R /F42 352 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -508 0 obj << -/Length 2379 -/Filter /FlateDecode ->> -stream -xÚµYY#·~Ÿ_!yh#šG³`c`Œ7ëq°ž,‚xƒ¥ni:nuË}ìxòëSÅb_çˆ7yQó(’EVÕW)¾:¬øêíwßo﮾þ.”+!Xªµ\ÝíWB)GÉ*Ò1“J¯î²ÕO™\oç<øc]uyÕµëÔ<¨÷ëÞ}s$ó9ÒE*†ìà7ù¯0¢-êªýÆI/VLRÆ£hîÌ¡uR|•²4’ -mDzq…êYÙ[³»ןd¥ba¨žY~>q¬™Ôé ¼-ëÝÏëÒa°ƒš¢j©öI©T7ô=ÖMîY\€~Iš^®î[2FÖç@-%Yœ†Î¿µón{r8Éíè4TÇ3™\}šH(Á´O›{±lš0‹™½QAŸ·K™²< -LF1É“ri²<'T0É(Ø™åÖ)ÐXEsÛïZUV¬%œ[‘õ¦ôùn2Î_ë» ‹E:÷]¶Þ„à`7•GK§„S-NN‚dræ$y‡>!ºÀ7†=ty³_ ˜]ÞR_–ä\Vän1º›m6T=ð³]_š†š]DÄçJa_{ÊwN¶3Ý&IÐö6aˆi=G¥„b‰Aææý·Ÿ\œ=‹-û²+:8Ï~ «Ñ/˜g=p‡T½T¢p4 ¹JEÐÇ‚Ž*J—KhX=¡ö>7¨­o”L“A,”Q°]Kô-¸ÙARÅš¾÷E>x¦“KÓ#6xü2b<3Ä缱ƻÔ+ÔL¤£œ©2¯³8DHöE™¿0¼ˆhÚÙDò§¹@áRôlÝ Àè2?BírL‘ÛØa­L®ó1–1dùd@g&|^â9"¸`\©gyÆA$muÎAFžôõw"\‘(f)ÂóŒŒ|ä">tÁi4®€gî1¿Ô,™ÈÈ6FÏ~é È« ±SN™ {õ˜ yì벬àlŠÅ^kEœØÌ:ä.eVå ì(ª3ÉëX}ù³©¨þ#Àã²V½eÄNÈ -*©Ó õï „8'KTý_}øó§·ï|÷Ã_>‰Oü+Ï©XWËtOšF‚·pÇ9˜è7ئ?n -]ê¡`ƉW‚u¤H—ÖIƒjÍ ¥!ÇB%&´.°Ù&Ch"ú µC°¢QÁ–}UüÒç$¹ EÊ6¤ÓÂ$ãzûºñØ!Œç±ñ”3*– -ñºS$Jyü‡þ,(FLL× '6€ó§Ó’=Û–#E.læ*ø[ÛS²Æ~SÕà UœhÚ5^ÎùM›‡ãú5@2áˆ=©÷p_!=hó62……+»reÎéáž ½Üã®hvý±íLeïØì$§"*æ@-ÖO‘Ó»úùš°´ƒàpF~i‚× ~ã.¥@ FMÊ|y“ݺúì.3ˆ6Ž=éê䵿ÝÑM|o–ƒ$3?Wq8÷ó(Á%‡±f±2Ž‰„€Æîò„-uúìû²¤Ž]}<Ü«‚'8{—åH§… ¦“AZá …½è„b §ÜqQ¸ì˜1Ô°yßÔG×A—ƒ. Lvªá~ì½H8nþ€È‡VJZ /y‡éD"z–Û[¸¥b ²²kÏšà]°ip¨Å¦oÿ~ç 0—=Ï>…àDž« ÄìýsãØ_f-&/߬¤y¤N<|Ûâ®mî±» }ò²ÜÌïá <:®ß¸&õ–Œ¯k;—%Šó‡ 8àÿ¯÷Ë{a>œÐ -a>Š0¯crlŸv•‡{ ëHŸñ87CC_Kúpd.Wu#äøè~m±µsì‡Ãsú,ïÒnr°º Jód*÷-½ B‘œ æpMn_T»r-‚x~Ù÷!'Ûö{ôPËì Ð’ZÇÍb¥¨@ã!dµÓÖ¾÷¾Æ=dÎXÌãB -B -;óâ•Ê¶ÙÄâ–9äƒ[KGä°”MQº‰² éžÛä[é·>Ý í4Ã퉼¾a0æD53¯TóÛF0…=6R°0A’”©ƒ$;åoE€ß$a• Év¸‡±³|ò@é”…Iü">I¦âÄ‹Ovÿê[‘eA -zÖŠR`oÉËi~åÇ,â‹âùˆ¯ þxV*œÇ3ÒÒY<Ã6o¦§pË^á`Vï¾}… åì-yz;Øà+~(.Þ,þÿ˜ü˜ÄÈ…Oÿ ?1 ¸¢õSbà?¾q”èÿƒWúÅ'·hº3ÀlÇú³2Áøôi7fµD#´yN•X±c£W¨"_5‡Þ¿½Zýd…D´pëNZXHpÿ€€Ðü{&HÖ´&g¥œ8?OÀÏ(†T˜½¸!~j¥+êý€ËGl -wÓѨ*0ÌqƒC –¬Æ ¯ƒŒÚ1 5u3ÈgÿŒdº\ûÐÔù/îiÚœNÿ'XÎêÞ˜Ö‘> k¸áF,ž´‘)KÆHHB·wWÿu¦Y -endstream -endobj -507 0 obj << -/Type /Page -/Contents 508 0 R -/Resources 506 0 R -/MediaBox [0 0 612 792] -/Parent 510 0 R -/Annots [ 505 0 R ] ->> endobj -505 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [385.801 140.01 397.756 150.954] -/A << /S /GoTo /D (section.16) >> ->> endobj -509 0 obj << -/D [507 0 R /XYZ 132.768 705.06 null] ->> endobj -238 0 obj << -/D [507 0 R /XYZ 133.768 667.198 null] ->> endobj -242 0 obj << -/D [507 0 R /XYZ 133.768 597.627 null] ->> endobj -246 0 obj << -/D [507 0 R /XYZ 133.768 483.911 null] ->> endobj -250 0 obj << -/D [507 0 R /XYZ 133.768 173.634 null] ->> endobj -506 0 obj << -/Font << /F42 352 0 R /F48 355 0 R /F40 351 0 R /F14 432 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -513 0 obj << -/Length 1261 -/Filter /FlateDecode ->> -stream -xÚµVmoÛ6þž_!¸À 1#’¢^–¥€ã¸k–Ä1l-m±†bÓ±`YRõ’6ößw)Gre'°O”ÈãsoÏÝÑÐ4CûíÈPë¹wtòÎ$ÆÈeŒhÞRÔ"Ûr4‹ÙˆP¦y íO3D»=l†>üæo’w{„z¼”«uÿò~(§e¸ˆ¹4• ¿òo9² Ž²·J¼¡Ùq‘aY•tî?¡­©ÕZ*q‘kK\êa×AsáVgWS·gÍ‘¿ág»«ÙÕûÉldIè?Ͳ¯~2_ùAÔQBÅ枧gSýgE’ÄiÎgÇ"\ûQ§´Z#¹ƒ¾Òr¥0å_Š å5‰ð÷Ñ °Æí´Øvq9_÷?ͦúãÁûþåh6³»ádzy;êœH|ã%lóuØÃÞp$€g£?n·“Wãÿô¥ˆóÓ}ñ”§Š2ä@Nx¯·ª3¬lê5,eYþ”ð†«ë iÍ8åòËhƒ–}ŽÍãÍÆu„Çõ å~Χ+?å‹iåSVCéµå÷¤Á€^+IN¶´¬øoÔ˜ŒMäš&\…+XÙ[ñmaÕ$(”ªN¶4md¢–]Iúyž÷]bèE^Ö¯£gþS&¾l=_ù¹ÜËWêw1ÓŸ IlJzÁ?‰@i¹½ŒÓ» ¾ìbè E¨P“4WB.ãµNíø|6˜Ñâ-E¡|•ØâjIV‰Fݳ±þaÅÁxJmaÂœg™0šRð%ÊcyàËe —÷<•ß¥câ#oO„í ÊðËƹˆ³Û†â°™ Ø"¬B ¦~‚HQ ²h3§«­‘Œêó8‚$•×˜©gñ†bô Ã`-Á埱ŸeÅF›p9­I-¶WTrƒ\tj¹%ú¼.ó+6²„Ï!¶å]=.»u&Ê´òT„Q¶coÙ^•ìÛv¶Ç­$y˜ñ.aú×OÕ´ -"¹*–úÇ›kÁ”_^7hÀ%FH³@ßуHõ } Qžâ¶Ôvÿð¢nÌú°Ý®/ÅÍÿn]³aKáÃVé‘MTŽz ‡hrìæi1Ï•Êöv.ÿÞ;ïÖÓ¤H¹Wl›Yüœ¶ù ”)•qP²Pc.²m1o ]¹ûYj4(<Œl­vŒ ³Ÿªrµ(20mfæn=áóœ\ípéd:­ÆìÊ.²ü€ìy‡”T² O³ Ýàtÿúç`pO jË00+»ø-åîª?¾œ½Iy[64w*CGë¡cȵeàÔöøÝhv`âŠâ¬¦À™.2©» þÌGå÷±ü) ÃS2Svn8ˆ‹(?~@¡­|i]E½ÒA¦±[Thµýäùzv¬üp14*r@w? ã¹/úïÀÃ{¾ÎTd1¢®ÙBJE¶:'HœVjm˜¤ì»J©Ü¬œs(<£­}*XCÅs²D¦å0†W?#M½ –Ïü¹š'·Þ­÷i<œ¶²º¤Sßó&m„“§ƒþõµªØƒü1t‰Š9ªÎwZ zf’*ßÿ‰Kx«DÔãý=—šÝæǹÄÚm`dÁ€;D¦=]î ›š•¢ü®—J+ˆc!—˜;ƒ‰Ã{eÙÛ»¯iK¼À=xLMkb4® ½£qñ` -endstream -endobj -512 0 obj << -/Type /Page -/Contents 513 0 R -/Resources 511 0 R -/MediaBox [0 0 612 792] -/Parent 510 0 R ->> endobj -514 0 obj << -/D [512 0 R /XYZ 132.768 705.06 null] ->> endobj -254 0 obj << -/D [512 0 R /XYZ 133.768 667.198 null] ->> endobj -511 0 obj << -/Font << /F42 352 0 R /F48 355 0 R /F40 351 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -518 0 obj << -/Length 2003 -/Filter /FlateDecode ->> -stream -xÚÍYMÛ6½çWø¨ÖŒø!J -‚Û" ÒCQ¤{jÒƒÖ¦×BmÉ•ä¤ûï;Ã!%Ѧ7Ûm‘öbQ$5ä̼73¤ÓÅý"]¼{‘ºç÷·/^¾UbÁ“J‹ÅífÁ¥d¹.:Ë™Ùâv½ø˜p}µäiš&ÌǺ»âEbÖÐU¦IոƳo¯xš|Æ?ú¾L·©V¦§÷Oi–^ývû#¬ZÌWJ²4°)»Þëήc¾ssƒ)ãeæ§âúKQ*–ej±ä9+¥åîÛÏq±¹` -d8±CußÃf¹›™.JVj¡­hžrƇ5:§nÆ]L3yÊTž]Rj.ŒÜϼ۵«ß¯–R¦ÉÚ|JSÑ ý¤(“Š½h¸ÝPGm팖'[ãÚzx8˜þÞU™˜æ¸7]Õ nÜz?^µû=¼Œú.–:ÛiД³2Ë&C/•TIµ^×CÝ6ÕŽÞ?_‰,©v5ô>PO?TƒÙ\‰TUs£€«óÒ«Ú]Éø‡®ÞW]½{ î ªŒý›#J¤ÎC×¢ wÆ}ƒ&Ãþª¡÷›ŸßSÇ—m½ÚRß¾rWÛ¶í u-õ­ÍaI8pÛ#u´³—Yqa¦ÎX/í–´N:kà ƒh–¸ñ¾Ý=õŽ.iˆdN9è‚ßoP²Ç²³{¾°z€ Ô' 3¡„aXÑÉ›¹ð¬Húm{Ü­±]&Ai$¾£®³5á“PÏk܇= é~KSçå29öÕ½¡fí–¬v»úBH<ݲE¶†ýjkö†?ÐA%è°2‡­Eƒé ‘‚:ÕÞuQ,…ÆÙVWHPÃg*M0öÂNÆoW-èF!8µ(‹D±Ú\>%m,ýܳH‰2šyþ”(“2Éù<:*x®ÔkР^U;6åQ»¥¼{±øh'I&‚-[5lâÀ¥Î©Ä•„§’ðT„+œbicIåô9)F*q1Q Úq*Á€¥ç>ïˆ*qo œÚÓÓ“šs©2#A?’èTÚuŒVß„Dý”~&<àF 2M…/M,,;‡Õ\ ¢TLédž²è [»-õY’ˆŒè³"•ÎgBè'ûÌf½HðÐL¥ü¤ðÎq*ÿdfŸÎ–ì±­ÃYB²¡¹Ðê{ÿJ #¿I “CdâÊy@=‡5x,X9݉”Átk+x./òR! §K?úfFµ¥ .½LËYYˆ`ï—£áåä¢kΘŸµ!ïûS ùëš‘N.“~=>—=êÞÑ=ÿ-þÕ#Àb©($cCÔô9n¬‡/X"¶1lœã±Ä®ŸB%™Ó«H]µäR°¬aµøÁl ý¹ÔR”Ü:(–ØsðD‘O%×þ`¯á‹ÃÑ¢½¤ÂŸämh8öÙÛsê±€€§½f,Åœ®Ø}_O÷eM(´¢G?^3º…7AXÅÇKA-˯Sø" .œíAA¦"3á d¦ñ~`vu ±ºé‡éŸT{í½ûkbü+¨ÿ"×êD™ØÅ,ÒyNUMDՂϣؓXüÈý™þ»„±>;'P`’*ÓƒœB -W4 -Lzsûâ/K»L -endstream -endobj -517 0 obj << -/Type /Page -/Contents 518 0 R -/Resources 516 0 R -/MediaBox [0 0 612 792] -/Parent 510 0 R -/Annots [ 515 0 R ] ->> endobj -515 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [335.813 419.424 350.258 430.368] -/A << /S /GoTo /D (subsection.3.2) >> ->> endobj -519 0 obj << -/D [517 0 R /XYZ 132.768 705.06 null] ->> endobj -258 0 obj << -/D [517 0 R /XYZ 133.768 667.198 null] ->> endobj -262 0 obj << -/D [517 0 R /XYZ 133.768 516.657 null] ->> endobj -266 0 obj << -/D [517 0 R /XYZ 133.768 354.117 null] ->> endobj -516 0 obj << -/Font << /F42 352 0 R /F48 355 0 R /F40 351 0 R /F44 353 0 R /F14 432 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -526 0 obj << -/Length 2383 -/Filter /FlateDecode ->> -stream -xÚÅYK㸾ϯ0ödc.I›`²Ø »’Æ^69ȶl cKŽ$OOÿûT±HJrÓÝN‚=ñ)²XõÕS|qXðŸoÿøðáÛ?erQ°BK½xØ/Dn™6ùBç†I•/v‹_—Ÿ¾UÓ×m³Z‹‚/«æzîWÿ|ø3|Ë'ßÅr¥à`÷Ñ®ú粩è›áè;_V2_–§«¶{jËÉÙUW6 ëæT‡#ê&n¥»í”n“±¬ÈÃåßUäþ J×2³ŒK»X ÁŠÜ?ssj·ŸÙjzùp¬:¸We@,uô²¯ö/+‘/Ä­Ò{ºHî?”.àå—ªÙÕÍv ÛðóÇc½=ú#w»zâÂ!CyèiSnÝUk$4£‘xºû®E1ÞÊö¯%g: ßI©o¿™r{QtßCWoV’/¯CÕ'¸¤{~û'Îç\VŠ­Ã®²ÙÁËlOÈy{¡çŸž`$7è‚ ›…o‡§Kêi˜±ö9àð–’š- `ppRsðá"" -['òz(’@òŒå}y†ý2çËýJüú£Óœ({ߦ i 4Œˆd§°¨,Syä Ž¬›ŽVšY.gG'qžeLéðM§¢ úÊ?«¯¶( ›ù¢;,¨ó·>,~u›ŠzsÁ^‚!àÈ” -¸™3^Èÿˆ)>ïLDɦ.mŸfq¦³[œ ì´@ `3G›z%–ùì?Óx:á@ë¬våŒÐy+nƒý¼á²ÔL`{™ËÜD6ÏdçŽGÐUìž9³X•ðšq3âGeF±;Áãëá˜Ö.¢ô·ÀÚCÛ=%NÍ9³6ê+5Ca`û‘d)µb™sÞ]®§“ ^UÚ\2«Å»”6êÚb]& -T*tÝíñAŽ»9t†G4`- \¿|ò^nð³ñ»H5ÍO0èöƒn‘M(†PS§çZg1¾QoÖó÷ vLor ¹ŒB«/0 ã}K½‰b@T'M´õÆ›Zè̉&GbðÊà7Ìè7ü!Øþ¶ÝÎû†Ì0+Š9@êÏ-â5.`ÄK‚€" :Ñà8Öã§þ¸4ÓpœØ<¥t•çLJó&eµ³*wæ \©ç&b)Q³mÏ—úT­‡:ÄVÁÿ²—³&ñˆÕÿ -1èæqK»ß÷Õ‚ kÔ/gA•õÁÞ2Jû¤—ÈÖàn9ô(>…‰Æå4˜ú N£Uå¤N`A:Œg³öÆ oÊø\UQx àÊÜÔÃRè{ùS¿ˆR²È4°Í&/РÐÙåv¸brƒOŸQ1±Y +Á‹d~ƒ–9ó‰2Œ+J£`’˜ÊŸ;^XƒÇoªŽ–Ñk¤“0Ð-ªÿ(i#¬-î:&åý_vÇÿ­¥°ÌÜèÃ+‰©É™bâ¢\z´VÀ[ÊŸ"ª`®Î"ZoÖ8%Ã…il É»àtü|“úKùTu=mÀ£)F¥ëgÇä¿G—Êj!f¾¸ ÷+Ž(‡ÇY2GÐùeeòåõôÙ9ÿ=@¼(„ŽœK–„%’èvdÁ®NI2[£Ò‚!S”9Ëor.1¶"¨,„_‘‰Ý€…²OÚ 1Å öûoÖß܉h²ÑHîéb?¾-OÛëÉ먘%¸ÜÛëÉ/mBbšiHuo”¾qpXÁÇC=–&ç&šfh/!³_XO·¢$€o?ß?HO‰íiLìkÚîŒ }*P¼ö!&h `]2ÝvÔ™¡È® KÛvWõ>€É8ËA³ªÆ§¯åùrBR2éôa)K2íÕ/ œîöÆxàgñ¡~«{vžø½›Ê'´5 [Ȉ’U›×Ó$¡™ºÍ”Þæ - }M0žÂܺB{ÏÞ’ &FíUÃ9.IŽK.»ê_׺s†‘«étaåÜ"¯ˆa;oÁ`Áç$Л(:¥Ò¡½ä…Ë„¦T§Ãßœ‰\ÌÂ_ˆáEf.’ŸÚÞ»ÙR}ˆóÐw·—’^‰H³¼^h¾ÄÕÛzp‰˜2”1Áüµ§ŠŸ2÷ò!|–½…ÿr,®ùÒ \༠œ±Ó,v²‹Lºäg^ÊŒq¦!öb[R³!¶e_õ.85³ª$®yµÁnS96”±b‹¦Ûy| ¤Y‘G:Çà@ŠÿÈñg^›SMNáXâ"s„cMA-LPŽâ¬$§uYšqÔÁ'7XćJtØØÑöGGô®}yð†©˜õWþ.·#æèié·Çê\²Ô \8ä2¡P9†8¸icØ‹éõGbóK%˜qoOÕóð·W~õýÊÉ]£à* «YÆ£n­‰¢`P¼ ŽŸc™4ÄüC|>îå’$Û -R@*ùˆwŽJìy5-ö´‡ú³§ýû²¶®ì¼kê! ©9Z¶kƒ,U¸š›d£™·…÷ÿÈ&;&­›‚ˆG'²û'BÍh”qŒ2­$ŒòäL ªÿD3† k4܇#’ÖY‚M³cåå‹?)ýÓEk¦…1¡¸ˆ™38Õæ@œ×>ËÅ49q¯…4t ¿»tíÐÞ©‰ä<ÚÒ¶KgoòŠ–åêÖ½n%Ä/•ž…Hz¨'œ[ÁÌÄÔQ¡¥ùàëkåûq#44£œüáó]„«Q¸ª$¬¶ |uk&Qk þê~ÒQlê×íàç::Å;š<_{¿ìI½±q—®ê«çiû»~HÝÕ OeÒWj;5Lʪ©r^xÃäöÔR$:÷ÚUaÞeõЛk΄•P¼µ¾®kUÐ3'GOÐËbtáoמ_/…‡ ï•JøûÌb!ò)ç¸r.³yà/f•^71bÄÍ:îp{Ë7ØVß8)6.MùæÉy/ß°Åá{%˜¦EÊÙžOþ f:ÜV -endstream -endobj -525 0 obj << -/Type /Page -/Contents 526 0 R -/Resources 524 0 R -/MediaBox [0 0 612 792] -/Parent 510 0 R -/Annots [ 520 0 R 521 0 R 522 0 R ] ->> endobj -520 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [450.329 597.572 457.303 608.515] -/A << /S /GoTo /D (section.9) >> ->> endobj -521 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [384.856 570.525 391.829 581.469] -/A << /S /GoTo /D (section.9) >> ->> endobj -522 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [175.671 338.678 195.098 347.604] -/A << /S /GoTo /D (subsection.16.3) >> ->> endobj -527 0 obj << -/D [525 0 R /XYZ 132.768 705.06 null] ->> endobj -524 0 obj << -/Font << /F42 352 0 R /F40 351 0 R /F48 355 0 R /F14 432 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -530 0 obj << -/Length 1101 -/Filter /FlateDecode ->> -stream -xÚ¥VmÛ6 þž_!d_là¬H²%ÛÛ2 ·åÚ[¯wm’ -tEà‹•Äˆc»~¹ ýïÓ›“8u€óKɇ¤HŠ¬¯Èü/çƒÑ•GÆ0¤”€ù -`×…> £>$.ó|¶0ƒ®í`„5yŽvEÊ+Û!YùJÿ'Ï5Ϫ$ÏÌ6kv¼Œ²º²¿Ìÿ„0d„I@¡Té#F--7]J½ášP5E‘—5õ–Û˜ZGèR¸E7àÁ8!.$Â…ý»äü£ÇD7€ˆº-[­yQÉ5Ä:± µ%6ÏôÙOsI|²µ T -Â0$B‘£¬ÕÝæµr… -Ÿ¢Z¯N½¤C Õ^c‹E'ÔʳôE®<+Ò1ïu:„Øwn·H}¾3†!myÒ|¹58ú—åµñ.ô!÷Øñ.Éz Àïöê¦ä}è”A„'è‚m€ r ôbúz $ }7PN2ˆ0.d¸ÍZ%ØæúéÃ0 À9b‡ö#±cOœAJ„ÏDøŒƒÓ€VÊ' ’,ĸ˜“í0QHY´ããáýÛÅÛ7ÓEÍ«z±gŽf÷ÀËñ›ýþâÇÃÇ&ÝFÙðí¬ä_›Ä„¸—A¦—Vû¥°Ä#Ã>Ã6<ʪ'^GZ:«ç!©‹¼IاHœî¢j{ª†}§&_­*^‡Èh‰ÇlTˆbr¿òªIë¡ÒæR0Öµl>™N曆ÙÇéÕ«?'‹›»Ù\ÔâôÉö˜ƒÿ‡³—wïç×ï^Ýü rO÷g Ù ´ ýäÓ|r;»¾»]\^ϯ®'7íM !ôýSFäqú²gÔm!†éãz…Û§©ùQAÓÓZ‡ˆq¨“R“ùà«y¼ð~¸ÂbÀð0X ‹3Ý0OŠs'8|èòÉLÁlðÁLjPñÞù¦z<Ȉԅ!Éyxò£xÅ}„Õ“ -=OŒ ØÕ\oô Â3Li{Ⱥeá1I×]Vµ6‘-Í©Ïê\Ÿ˜3Ô(ŽUµEFîÓ»î'(AŠ²x”—šZ½duô¬é«–¸jäh ‰¢ÍÆÊÊ”²8Ss¡8¹·}j©×Ðä‘œU‘ð7„3QQÖŠ‚/ʼॗdùG¦¯›ôb]æM±o?¦Ktæ0±×–ŠÅYï1Dí -›¯—gÇŠN+d >•3 Ñf÷4“þyP Ñ -endstream -endobj -529 0 obj << -/Type /Page -/Contents 530 0 R -/Resources 528 0 R -/MediaBox [0 0 612 792] -/Parent 510 0 R -/Annots [ 523 0 R ] ->> endobj -523 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [225.315 613.524 231.292 624.013] -/A << /S /GoTo /D (Hfootnote.1) >> ->> endobj -531 0 obj << -/D [529 0 R /XYZ 132.768 705.06 null] ->> endobj -270 0 obj << -/D [529 0 R /XYZ 133.768 667.198 null] ->> endobj -532 0 obj << -/D [529 0 R /XYZ 148.115 138.196 null] ->> endobj -528 0 obj << -/Font << /F42 352 0 R /F40 351 0 R /F48 355 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -536 0 obj << -/Length 2314 -/Filter /FlateDecode ->> -stream -xÚ¥Xmsܶþ®_qÕ—ðfLšß3r:ik¹j›¦µ5n;IÇCñpwŒHâÂ;÷ﻋ]ðHŠrÜö— `ìë³ð7‡¿ysåó÷w÷W/oC¹¡„±ÜÜï7"¼$N7q”x2ˆ6÷»Íη[Wø¾ï¼þ%¯O•ê¶®Œ|ç%}n·™3ÂÈùûŒÿG½¾ó‰~þ é{÷Ûí¿ïÿ›ú›ÌËbãžþÆ•Ò“qL»ÝnEäèÈÔ9) ;"9ÚÊÈH„^ó÷È£o®;”]ßž·qä¼v ²§áOxÝ|µ°†–>(ú–u­veÞ«êLsõŠúXê¡£G=îœÁjáh"ëüŲœâ˜7ÕyxE¼”^± -ï%ÊÊb§SE_ê"§lŠjØ);¤kET_ž:š‘7;b™ë] €“ŽyO“>•UE¼£ªNDõ@ƒ“C›É4MA%®úý6‰œ¡z̲ÞQå;Õ²ùÎô5Ëæ@d fæ0œ~÷"à¾E[žP ¤+ð¿, yoëeÛõ`à œ½®*k@Ä´I §ëê yeC_«^{%àBþ¦=lˆxûæjóƒY'Í° Ã$eà÷ z’ÎÛÄ3=àÀ›} Êè·U'Ý•½Æ‹âôB7}^6¨¼;»«–d‡Oõ„Y‡ò®SõCÅǽÖUGSU¨®Ëi¥¤À—|½}¤IŸÊþ¸aLñdwoëFiâ|ß«>õÕ,ز‘ss:cwp¨ÕB@q°§“`¾ðD‚ÀF«Þq%+D¾a'î[]¯H“ÂK£t”öèýRW+²‚ÈK!½ð´tT -ô`ëß]Ÿ·=‘4£OOãšò¥Q‰É—®ô3O¤)$QÁ Óœ2ßMT$è]J9œ×s H=H¼fýÝ€ÏÑ“ØÉ[5î~YÂ9’Q—ùnÇ.·¼½ôü,´ÓŒ¥’ˆ#dû·»Ä:©v¯ÛšØ<M¢4,Ž;3M¯L$>Øe4^ÑbÖU‡˜žôEÉx:»ë$IÐFzOÑ$“À “dN9nC„ªT­šþëY¨¿¼áôœ™Ò÷² Q?ú"Y¬™©À÷R«Ò.X‰êÏ'…:Í„£š¡&æ¡Õɹ…®Oe¥Ü¾4F!it˜Uò¦7s$gþTâäš(Zd Áàj÷b-N‹Ö(Û Ì:Z}jKfȱŒ>¦,ñÒ`ô§¼Å7ÏESt‰¦§‚Ï÷Ǩ¼Atk‚ÀÓ0üï}ÉÜ0 -Ð*+Ù'óB‘Y³k2ÿd—ôÓ燎Ü/𥗀žgúÞ©}_6O«`ÙôS˜ŽóbdÑ÷çAuc |ÎA]ò6ÎòpÐï.Å?Ìœnh™â€*7Ð t'ËwÌm˜Çº²ì‹WÔ„‹òƒ•­Ê–È:©f§wÕKK %5ëDÃÒ–UÈG˜ Np†n@ypÚ ‡±—Éô×ÒuOíûyCˆ,òd˜°)Äÿg -^6E*­)& DN .f£Xಛ½ ÿÈšÜf½·2Ç´Ò¶ª;é†U‡c‹ä4µ ƒ¯1U%œ˜8+%%»xtæ’—Ä©½ P)†¢‡[¾Jâñű`œ—Ì ä‡5_!èâ )”€‡÷ïˆD˜1ôj3ŸœÉД¯³Å§¼…å¦àn˜¦ Õq¨ä¹€± ’”9‹ÜSjY=¢ñÓ¡×uÞ—……»Ö -veDnsìdabúÓÚD¸ ³¸ }@ÁǨõ®ÜŸ×¡AÁù¥I-€A.ôVÓŠZ9Ÿ†®'þ¤§ÀSLK _š 5 /ÉliOçÛB†¤šÅKˆlcr³  DµY_Ę…3Àé¹àË•ÒÐFõ&ÑÁRý(î§?l&àú£<;ÝÖW¤Gó–0Sñ†Ô€, ¼ðÒÒŽ~ö ‚edúŒ.-¸” .G¬s‹ÙÂ0@‹{îñ`ªûUÄù£Âæ&ä[H€Òð/ɹfO$_uXn}anEþƒÔšÅº'¤¡¡bºä½Ù ç®ÃóžÏþØf˜HÜžÒÐÐT&¾ž f­‡Œ¤c½'=þ<”DìÖ -Hæ%—Fæá|ÙËl³¨ü8ÆÐmvrÌ9±¤œC“B?‘Ås—±áf?ä%ð´žHè<»’º°”Ep=+¢í·W-˜‹ÆÉq`ì#*Rx8Ëf i£´WÍdЄ2ŒåôÛÁ}ìÖ³NrÅh$›ŒÁê0jâé¡'"箢5Ê ÒÈy§‰ÉY/rjÎCø~Ò·z7ÜÊä¶wXd\Ü¢±’meÅÖ†‚®³Â>›Öçκ‚UChlÇ\zòW±eìú&؃3¾‘f‹Ö攳ñQ+±^Xƒ¾É&ïK\“9{ɾð|ÕišÈk±è"\7k­¼Œ}o‚Î?áH“ 3–`©Å}É -O^ |É/ëóǘô¨zÿk+°®.›}S+8ù–ýiv*o‹ã6÷º]àúeOŒk+]<2ŒÝ¯iK†^ry„øÂ;ÌÛ× ÌœŠ†”{IÎÁÂÍo\wëÆmÞ½þýýÝ÷ýšþÞ³Ķ‚ Aéʤ*üÝ©}I…´#†ë~³oFoÃIù©|uMO:×ÄAdöêúýŸ?¼ýöáƒøàÛ¡ÑØ«kpÅë5ŸYëÍï QZKì›åB}d¡OÆQ8õI#6'XÛÃ0k¨\%¾C¯ôÌ¡£kß´¦h<¿a4ï8ÜPúüU§f»'µè½#EH9û -C¥ëÌ)2É3ÊL„ßJÊÂ<=ÁAôãšZa™-»š~Ù¿3Hâ•Sä0î;"M[ßY°oÙóÈ -{…ÕDª‡Ã‘æ]J²9N~&1Ç| ú ¢ÄCºµ”ʱÁÞ|£VÓCxl[j‹0ñB§@ä³/Ë`<⧠1!¦ƒQ c„å lÿµ›·ŠÇ^š ¯f^š2¢’álÒëû«ÿH3¨P -endstream -endobj -535 0 obj << -/Type /Page -/Contents 536 0 R -/Resources 534 0 R -/MediaBox [0 0 612 792] -/Parent 510 0 R -/Annots [ 533 0 R ] ->> endobj -533 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [281.391 595.95 288.365 606.894] -/A << /S /GoTo /D (section.2) >> ->> endobj -537 0 obj << -/D [535 0 R /XYZ 132.768 705.06 null] ->> endobj -274 0 obj << -/D [535 0 R /XYZ 133.768 667.198 null] ->> endobj -278 0 obj << -/D [535 0 R /XYZ 133.768 558.643 null] ->> endobj -282 0 obj << -/D [535 0 R /XYZ 133.768 311.142 null] ->> endobj -534 0 obj << -/Font << /F42 352 0 R /F40 351 0 R /F48 355 0 R /F14 432 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -540 0 obj << -/Length 1925 -/Filter /FlateDecode ->> -stream -xÚ­XmoÜ6þž_±u‹È2õÞK¸Ûmë¦É—E®Åå`ÈíU¬¥¶z±ë¢?þf8¥•åÄEûa!r8Î gÎ,_\-øâû'Ü|¿Ù>yþ/ KB.¶— ×óXÆ‹0ˆ˜ð‚Å6_ü×9e‚¹Ë•Ë9wNßž-W"àÎwK82m»zéÆŽ$â–aà¤åu»ÓÔª»Ú-ÿ·ýá£CøbåÆ NÑÒ·»¢á w™µE¥hr»t9Š2k QK3Iƒœ‹ºiir)Q¥[šÔò×®¨eN3­5ñ ÆÒ-Ô ÔŒGjŠ0`qÚj5o®Ùoû’ø_1/gŒ[™m+×eI`<ئWÏÐC‰Óì*­e¡®9fN™f;ý÷RµHˆCW– ­¡ÚømïÒˆm«kô—Tfžªœx²j¿·“\¢ÃT^6²p ŒÐw2V¸«‰S5æz ÕV4º'‰­Ìåà`MŸLsYÓ7•s¾vãEIlݕשbsÁpæ¹nÏÈ´ò+! BÉÓ× Za¶jÙ˜Á‰œ”…’ƘêrØ5£­0Š^‰O…Càíú -9lúõ߉ô•à‹¹¯³$æÆš&"–«Ò¯Bãë“Œw‘xQ¥¬eÚÊ­ËBx,g¹å† mPé^~}rs}Ž{.«zòü¥qèÜÆçF…—só€~:󈢚6Umó)Õ¤êöcÕÞ¿:}úóùÛ~yw¶>ýéüÛÍû³õæüÍéëM¯*œˆÍÏÛÍ›wgÿz3»94ÑÄØßlþ·ò¦È ±ÀtIËâ÷³æSn°I;¾¤u Q&Ï´3ù€ùÆ‚)&Å0ŒŽãiKù l>Üs/dÜõm”ÍŸFyÈó<«¯yŸYѵ|º Ç SJŸ¬ªá;T*·ÚŒ1ùq@㽞0á?^~Y¨¬ìrÃ0^c»“¹œú2——€«Ä¯“ñÕæüýæߘ‹xÀ÷éǪ~FËûBÙñ!m³0¸4ýàzþƒ ƒr¬,âÿGÙþ4bô‡ˆüxÞ¿{ŸÐçñigu¹×9"öœÛ]¡üX8X! žQŸ;7KáEozN wÄ@ ƒã8臹/ÚÆЈrò:Õ¦ÉËA„5­gU.ÙÜmjľ£“á·CYdEK”\¤Ê¥ÊpEë€Qê)‚†¥ië"kË;š %š^ƒÀš­Âàxoxk?“ù1 †’í¶(K~!'GÊG°ÓŽ¯R»² ¸73óÐd$¦±ÉNr«A -Ð+³ÉX´3ÕF–v´eUÑLM•2­g¶Ý«¬ª®=tí¸¤¢Ër}°Ç?¶çM¥ïVW¹éʲò$|´Cßòæ•6D« -µIÜ,™3+ú¦ŠÖÓ¬íÒ’hkÃBU¬ÇÝ‘;uqÞ´PÜX9úÊ\H©0MÄ0hËÒ&WäRý²–RÛ£g‡Zê*“Mƒ©|ÑZ§$ò>Íêê˜(ú‡½ÁG% -œ×•¾#ßɸÓÃ}çLÑž+©d ‘L@’„,á“G âWÖ­„±íCsÔc c¥®J³˜MVuuz¥I ­ÌqÕ1¾};×É¥¡Æ"MYÐ;2àÎÃh¡ñÝã¾£àgËBÙ>SÆBLÊB”nšYë÷N“šj/‰9v€giÕ{£Lß;,]3χ|E» -˜³2øàb{(Žêñh„µJgÙ˪ëÙï!ïÃŲB7D¡îC®öüIµgovŸ]pò7Ä €,ƒ?ÙhB×Í“`Òh~±ZQÉón³ÞB•ö•©ÝtÒƒðÇ£¯¥ÚêZª¡jÒUy•eµ²‹®‹Æ~štM¯!þÍ®]ZçXä“.ÒÈ4uje™è×öÛMÃåG“ӆ˚LFén­éë¾ÚǼÓÂv¦šÝÍ÷ÞÇæcjRoÒ²ƒ[á vü÷t¾ŸúgzáOu’þf„-u>_aø> endobj -541 0 obj << -/D [539 0 R /XYZ 132.768 705.06 null] ->> endobj -286 0 obj << -/D [539 0 R /XYZ 133.768 667.198 null] ->> endobj -538 0 obj << -/Font << /F42 352 0 R /F40 351 0 R /F48 355 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -545 0 obj << -/Length 1647 -/Filter /FlateDecode ->> -stream -xÚ•X[Sã6~ß_‘ò”t°lË—N`† ¡¥»bvf§ídG!.ŽÚ,ÿ¾G;¾ˆÀ>YR¤sýÎ-xð8Àƒß?á7¾ŸƒOg׶7ð‘ï˜Î Xˆe!×ñu‘iÑA°ü5GÙv¦«âbôOðçÀ´OÈÀ ù´s¥q£sa—gev1._wìâÛÓ=+öI9>Û‘á`<§á–]²Lïg$éÛ§)¡ˆø–’ÃQÏZ>ê!Ä¸Ã¥Ë ‚C=yó&ÄÇÃrŸ§§#ÃÄæ°Ü0õ¸‰%ÛF1Q!6”"£n–á£ä³ÿöqÎ -ÅOËÄ1!nͤ¶i‡ƒE‘çÐêZ¡!DîÕ… - J¶‹<³–õT§7¢Ø:PêƒPC•Qj¶È Ë'»VÛS`C Sâ"ç à«†—c!LíêjæµLø)å*[Ëo\ªŸVìoŒÍ4.ã,E#ƒÚÞ0gô~+ÚïÁa…ºÅÝ¢~ óúeÉò‘‰‡†TÖÃÈ%~[×mœ²`Œb!'ÿ®³$ÉF&¾¿É(¶;1w="t˜å:;9ˆ|ØÍwÖbe9Àr—¥«8}”G -«Z×þûõÁª®ÅR½^Îî7L‹G€ßŽQÁCæBžÎO*MOäaH|Ìò×ó–î·'g:qp›ä<æhÏ°C,œ‰‡òK“òË©±<ä`PWA°žey'yTÄÛ]ò*ß'qú¤H”YMªoBÓt <ê s>…Nh›"ly­L‰¾ÄåFr,7J‰좲¥KíÖ+n¶9 c&)ÚÓs‹(³+_@^diy~2Ís€¬8ã1.9ãi¶º¸bÅÉ‘ü‹aÈ›÷ÝWr¹®Èû(bE±Þ'rŸíj§ñ-ûÁ¢ýaû7¦x—âÏ -SÏa²gœ¹7 }aæZ6^œŸ`ÐÙÂÓ|YÌ&“é|® ø>Ò£ð0›?ÜÝÝÞÓ«S1{Tf·Áâ~zyõ½KÃùp}t*÷Œu•Aib<±óV.:’x ¬Z–ù±¼ãþtÞ¡²ŽäCŠ)Ê|Uð¯b¢¯û1doÙvÉòº‡š Šûœ°¯›HÛ«»ÈBþ Z#õÚ*ºÃ:Næ›lŸ¨H[*¹9&ƒû‡Iðp?]ß曆›Ù<¸œM¦‹ $àûëÛã¸W és¯dµÂ.$G×ê»lQ¿×›±åûÊÜeqÊ+ªÌ2™27-µ,ðµŽ6aÞ%<zL5ø¢Èw[è’´„y|äyºñÃ&È»ô!¹›¦á2a«i¥É Ž‹>HeLÖMÂ× -¡U-ªmqÈmWÉ$Ç.|µ#×Ù[¹®S­Õɸª“ñ†¡Ü6¢…ŸVmŒíÖ oú(o†òÆD—奄¨;mIS—€}D̺0T½ -NÅ^6-îPÚU‰ª$á&¤ò˜…ÑF# ÌP&²¡hq¥Ê0–¶[)B$b‚ÿVàJJ‡0Ø>c!ÿ=\­Ä0pª¤*åõÃ,Ç/÷² ºåòP êÙË&+Ôö„!œ®DkE¹*ˆ¶PQÔÔ°|•_ +¾âòó/ãeúG•Ék§¢õÝõˆðÁc#æžÞ¬á´ë}=¤Š…9LäfšƒçåšíXºbiÄŸ½Ê3>1µ^«YY7]˜ ÍÃX}tÒ£>rÝVç †õæx­í,äPïÝÎück'A°èöÍuŽä¬È—/›°¬Ú‰´DE«,|E;¯DIXí §ª²¼Qe’°¬Ûð]œT¹'Þ²ã%^–œ/‹«éõÍlºø|9Ÿ.þ¸œ]}òvYfÉoO·Ë•J‹¼_n¦êwH^ÝÌï =þ<ùz9Ÿkhwþ:m׊³Øv87]Òê4y.ÄTK×SåÐtZO¦Á§ÿRpn" -endstream -endobj -544 0 obj << -/Type /Page -/Contents 545 0 R -/Resources 543 0 R -/MediaBox [0 0 612 792] -/Parent 542 0 R ->> endobj -546 0 obj << -/D [544 0 R /XYZ 132.768 705.06 null] ->> endobj -543 0 obj << -/Font << /F48 355 0 R /F40 351 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -549 0 obj << -/Length 1268 -/Filter /FlateDecode ->> -stream -xÚ½W[oÛ6~ϯð “Û†!©‹¥6à8NêÆq‚X :,ƒ ËtÌX–]ÒÛþûH‘ºÙÊ’Ø ŠçúG2ì)âó.$¬‰¦4 ÄîN`ÐÓa©M Ê€XCÊ€‡B¶eëa…(b -~î"SIÅ6rãTè0ò'’Hp#—æ$"ÁœÇo#ÔÝÀõ7 MrF©Êc–¤ {¨ÌBÖÖ8òÝTºÉ†=¯6  œª:”–LX—µ¬«ë -Èõ‘,MkXºÈÊ"D7&å3!„¿iimÏFEïãqÓ,&¿´µ–ã]¶¶ÄrÂñ,õ]÷†0,Ý?­À÷µßâ[Õi”jGˆ«Ôc’d~Jƒ‡–,+U-™ù”ù+7Ë–œgÀ0ŠKc oõ7êûBòÃp%%ºê"¨¢+4ùÀ}—¨X·²b]eƒÈìaå€.V¬K„ÊÝíø¢?q>;þË|˜ ȶf¾E…f# •žKÇŽãE~–ð_µÈ÷”ÄPÝì á6ÍÖYºhD“áŽò‡:°z&3=MÏߊ;YÔ|½G¨,UíÔLa´‰éÃ2‰ð›ë‰ùÀ·"‘bk/%$Ë8 ÂDlÎã0‹„8 -<ÐÈ­–⨨ä©ŒÉV=saųÓê…ýGˆ¡ÄÓ/hÈåâÙ HÌÆ\lq¸RÚ -Æ]N}!½ ¡= y Io@1<ó\f#Í-Bî&/:o¦ÊÐó|ÄÉC³%â`Ÿ†ÖÛqáÜ o¦£«‰ƒ¸uEt¦çgsi¶ÿ´rø f¯‰5Xî·l…¹ì_ ‹Xœ§k÷1Œß‹ã5 J9rSoYqø©Zî¾äÝÖ›ªô%ô%p¸òñgu;òHMM´«YåР|ƒÁG»Œ)‰òDâ„ÍL²( -ã²ÇüÓE°à肽Ö^ƒ s_ø,ªP¢ˆ &%XÖ±3ô$Ùò(ó -£Ú¬yó¦R`qoGûÚ¾ûSÛÐX_Åñ§Ob•çü ŒßÖÁíí_¯‡Î´6tW—×}{t2:Ÿû“ÓñpZgça«³gGîv±²ŠŠ¶[úOMãÓÑ´Ïõ+'uË×|:<M†ÇJ˜çgU|6r2ONx~rpàØÅ‹'_¼¥+9í̳õzóQlþ’+ÿîªÞo…ƒ|j@@KkÁ2åÚsnøQ Ô¬W6½=ŒûÓéV…’ ÎŒýxMµäåÌf>õj¶5<^.Ù`Ÿ–%kÏ”¬í”lh:Ð{VóµW|ÒŸŸíå‹ñs¦tÀøwýcÐþ»®¼b2I¯“«Éÿ˜Tý³±ñïUÃLfV0åk÷C{ïoZ%×› -endstream -endobj -548 0 obj << -/Type /Page -/Contents 549 0 R -/Resources 547 0 R -/MediaBox [0 0 612 792] -/Parent 542 0 R ->> endobj -550 0 obj << -/D [548 0 R /XYZ 132.768 705.06 null] ->> endobj -547 0 obj << -/Font << /F40 351 0 R /F48 355 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -553 0 obj << -/Length 802 -/Filter /FlateDecode ->> -stream -xÚ½VÛnÚ@}ÏWXêK¨Âv×ë«¢>0- 1¶‘¢¶²XR0–m¢¦Uÿ½»¾ Ö@èåÉöî™™3ggf …G -.`ùì¸ïú’&è@WDEp稊&(² -D, îLøtù†,SÒúâÞ":BB! ËÕîŒÌÈ´Ú -„—“[¿gö–éw Çô?Voh~†2ô×ßè°ì9&Ô¬´Yxa”ÙY2$Aš)R±Ê ®ó ð¤x½cûŽ×é Çyøªtù¤¤Ä†Rˆ³ÄÏ΋n¬?$pL…6W{ÍÂyųDä;5ß$Ú¬Š·ŸÇHsq¼n×tœù¾xÀ+ž -ìYŽgÛ£±köj¨ÉÀ¹þØ4z÷5¸È…8I+Åæ¯J°1I7ËŒ{Lg¥ïŽ½®ëMß½·Mß°íá k¸ƒ‘å¬þèYø´å:í['K6Ól“—’<Î>ÍáüKQ&‹šÛV©3nŒ1]GiéõiÎrˆ¬UU(¨.`o‹ˆÓq  -;±E¾gUi*@„L¿Éëql+r(ëZ,²¦ Äñ„$i¸ŽŽåÌ¥$5Q*7b3z¤ÍÿZV$·âSšòkðƒµ B-ÃiQø š¯ÿ^CÜ;®yçÃá¨[õÄÀunÌ®{v7¼lbç9ÍÈÊX.×ÓÓúa[­*=Œ8ÅTÆÙYgsxrËØÛî8Ç(2PeÌ1–®j»¶vßòŸ9Áþ&š2•Ùg.‹ôF@†jò–ež<¤¢¬ŠµŠ÷R’ô‚,¸*눚Xwœ†?+$çÃ~qůÂeø­H”ñ‡óËChµu˜[•ß,ßëæ³Ü?žüm_t$a )âéª÷BDe ‹úý,Çwdµ+’Òñùƒþ•úÜÂ:@×æV•ã¡©Å©sV>¬ây”¯sg×þIUUGÍØòI#Œ¹ïÒ‚{¦‹ô/Eù]ŠG/ˆW\Š{s»($¬I“8áªŠß G=l'þö¯žþÒÃ_zÚ*@‰¶Š¨MÓ -SQ«Ù˜îÅo_!&P -endstream -endobj -552 0 obj << -/Type /Page -/Contents 553 0 R -/Resources 551 0 R -/MediaBox [0 0 612 792] -/Parent 542 0 R ->> endobj -554 0 obj << -/D [552 0 R /XYZ 132.768 705.06 null] ->> endobj -551 0 obj << -/Font << /F48 355 0 R /F40 351 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -557 0 obj << -/Length 1267 -/Filter /FlateDecode ->> -stream -xÚVQs£6~ϯ`r/v'Ö!ÚË͇\Ü$Ž'¦éÝô: 9¦Æ@皇ûï]!ဃ;¾>0¡ÝýöÛO+©Ê“¢*ŸNTù¾ðNÞ_é–b#›ªxK&¢¦­PxÍP¼HùcfiY GTUk'I²p$É"×åðOïWkª©Œ02uMØüÔúC•Ö\8XüR/ª!k`‹‘mÈ€Û8­4âCL‚yTöOÅÒ2ÎÒq¶M+a©vMZÃUPÔK ™&íe Û4Û „5ÿEldYV_*ÔDšI:©än,¹ ¾i°ae“™E‘Mô.Ìï ¤!,¨Ø$]f½i=Þø—îÕdêúÎÜõ¯éå­ûU5ÔÇõýâ/V0ÆCºox9™Ïüùoã[g>ïxh0œ5 ¸”XÞEl§L.¾ñïœÏþìúË|2vn!ØãdìúSçÎŽt+ˆAõâ~öÜé|r?•ö¦uؾzɸh ?°r›ÈÂ×YÝ8³‰?óZEÓD9õ~ ÈéÙÕÔ^7åÄp&¸ÓÎx[9!œ]¹÷CIô­ùüÕölß­Ü7&Ò-ã8gm´R{”`D©½Ç|¼|%îÆŸ=Ü{÷Þ—™;ïçÑñ€È¦Å_¨û­øî!N¬hÈƸ+ÍcØĆtÜÛRTv·¥´é<ÜUö8>؈ªAïëô‡>Ž{÷÷;–Fñ²!´Îþ-ù¾æɶäOõßûöóaÇ»ÐÊÕv+ב  -k-±xšU°ó4 ªUPñ”lHŒÁóV‰øDQ\ACߤÞu¥üU01—oè}b2NÅ{ñ"ׯš8`(¦"–T–†<Ò‹ô^ʸ”ek ·ÙX ‰:ØV˜ËÒ„[Ú6Èx=Ycƒ}¤k&hk³ ÒH|RðÉ5Ùzˆá IKñ]°¿·qQ£gu½ªF eÎÂø«ª&í— °mQS¿9=…{b)0X±Ér¹] ¯/›…Œ¦Ò†#¬‚ïëŒCû‡¡¼¡M™;Q$â5Î6yœ°‘7ÄÖ Þ°f¶ÖfÕ#ŽÏBTFü$ÝVÍ{ŤMû ÙÈ€cN6dâ{¼ËnVVÁ“p[sÎ% Šp%Æˬx ZRVVL®\À`-†I°`µ¬ ÞîžÒ¼÷ ŽlYw%þA–VÞ@,­ÎO¡_53‚®òôã‘›f’6Ðã²…÷L¦Û)Ëxï ò¼Èò"1pÁòé˜k2®OWá¯a,‰…8ÉÙ‚‘)ñ™2c–n7"¹îç§Ðܽk×w¦óß݇Ó÷}yŽÚ~džÞŠÉžŽR -U‘ýOm¡(ûbé:Ҵݺÿ[kŒmDU²Wì:è^©ïâ2Dbn‚Q˜E\gÚ‹Ï‘$-“§¯`}ݧb#‹oÞ`~L-„6jÑN-¢¯ŠÉ€¿L©øþV÷³·$ó´ 7ìñ÷!aº£8¨ª"–}“ ÷›  -W¬l õE²tD(ÐK¶#Æ›eÊšäoòâL‘§¥‰‘®íÝHv­âPö ‹ìšÑslû@i.yö¡ìùÞ+÷šÏ3?òjo?ůGážE#Ÿ«7»Gªò¶Ä#ŸŸêä|ëÿ¹mÛºÊ#0éY;–wbwL\ïä_u) ¦ -endstream -endobj -556 0 obj << -/Type /Page -/Contents 557 0 R -/Resources 555 0 R -/MediaBox [0 0 612 792] -/Parent 542 0 R ->> endobj -558 0 obj << -/D [556 0 R /XYZ 132.768 705.06 null] ->> endobj -290 0 obj << -/D [556 0 R /XYZ 133.768 367.532 null] ->> endobj -555 0 obj << -/Font << /F48 355 0 R /F40 351 0 R /F42 352 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -561 0 obj << -/Length 1483 -/Filter /FlateDecode ->> -stream -xÚµW[oÛ6~ï¯Ðò2y˜RuÙÒYÐvÙC7 ^_Öa%:bKžH/-†ý÷òPŠä0­»Ë(ò\?~‡¤Ám@ƒWϨ¿[>;™Äc¤"–ë€qN²4R‘‘˜‹`Y¿„W$YDŒR~ß- ïQ,h¸\qØ¡|U×NÀáî•F¹ëqü¹mºvØš%ᇽ\üºü\ AAŠ4N4ˆXNÀkúå‚ «€ç"Ô›F) ¥™~_îö[ùõ"JX–Jv×ÝK\uoœ-[_ºÃ¿µ|Giܺ5¥Smœ±U×÷Rí»¶nÚ[÷³›­½v^ç¯9ÍHž¤à½u[aø£‹†…&—.¹– -Çu·Ýv‹Rß]cá†ñÈ H]ÌH µZMLµ\/¢*ç<²òŸFYsR06wäíîÐË¥ÍHjª®Œü­ÝDçë«®UNé]SÛ%¢ Yf$YÂqÙWöG^4åÁd~ÿZ¾×¨8bIA^<©ÿíÝÕ~¿mªRŠnÚug·1ž‘$OÐZ2µæÔLæ÷ Àl<Ý ¤¿º.·ÛUYÝ)gA3Ÿ½Œ<žÛ³ûW³whZÍãß´9_1…|ÈVA„×Ý¡Õóœ§\¬6eÿñœ RdÙ4å¸ÛÖ¿ yžûöù¬Nûm¹ÚÊúÅàÞër'ÕXÆ PÅ,®¿†Þ€¹²­äu/K-Çô –Ò6ƒïÍÚsÎ%,Ã1ó©÷i¨Ó” »,‰ˆèÄyÁ‡ÃSÝLJ}ÙCœZö¸îèoÕíve[ãGÓ:]9”;'ì(+W?Ý]Å wå!'i¾à€ÁyÃy½)5JNû— !B…SŽ&< -ßQA•t{WÒ±~®-ï‚°y˜¥–ËÌdi Û8ïÌB†óûƒVžÐcÂ8±1¡€¦¡® ´RiYûèr—lza -téQ ˸—éòÖçýFÚ„‚Øè1ƒðuP²&®>9'irÄ?BùúûF™®Âó"lLÅÓ*)iÔÈ6ðÛ" -fÚÎý2vðWÝô²ÒÛ8¿rc‰?sAFíÆiE´ Þ~ž“©Ï½üýF,Z€Ñb41 Ƚc«¦îe[˶j¤Âå3v±IŠÎIeS®·¸[°aäFº!>Y§¢óÌ1%y¨6Ýa[£¼’8Š¥›²MÚŒéãè9‰ãb `…CçóÈÜ|Ò)¨ˆá²$|Õb(å€\> [ù¬$‚p61ââi±‡Fœ:ódÎüJ–}µîîVeá29LV^Aã¹Cq[/lñ”z`Î{-×l²ÕÏÏ—8cƒCÑ"߈|#$û ~Î._;\`„4r³¹K7†9Òá*§ †jX5-©¥ýæŸÍ«ù¾ßtÊ à¥XdCZ`{#qJls‹J­ûfµˆ!V-Qý®ÔÕF:‡ü¸ÈÉxþY†ÌÅX%jÈÇNºÛ3¤'K =î¿+io¯ãåòŸÜ!ÿˆÉIqŠ 9ÏÏ|åìüÒw#:>Ë4â4¼ípÔÃè­Ü«Ä)‡9!Œ‹Ùi6:-µ[¡àña;òcƒp•bYqJãc"dp¸ ´·AYaDÇô*¸#÷ºl¢×œÜ­doxß|©n‡^?ôÖé…cÊDGO(œ²Èqº¶Íxû±ûšÏ{ß°GõðBÊÁâ-_DíÍäM4rMt>‰RxˆÈÛ®ÿðü “{öIð>­3}‰å>zƒ]œ  ‰åññfcñRáR+_œ;}Xdï&·Â÷~cÐEá{âDã3ƒ’˜ÅSûö%÷¯ìÁ½ò¦áÇÐ\)K«ŒÓÙŽËg"w¾b -endstream -endobj -560 0 obj << -/Type /Page -/Contents 561 0 R -/Resources 559 0 R -/MediaBox [0 0 612 792] -/Parent 542 0 R ->> endobj -562 0 obj << -/D [560 0 R /XYZ 132.768 705.06 null] ->> endobj -294 0 obj << -/D [560 0 R /XYZ 133.768 667.198 null] ->> endobj -559 0 obj << -/Font << /F42 352 0 R /F40 351 0 R /F48 355 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -565 0 obj << -/Length 1915 -/Filter /FlateDecode ->> -stream -xÚXÝsÛ6Ï_¡ÓËQ7! ?ZÅ3¶£´º¶i{Õ好ñÐ"dqL‘ªHÅÉtú¿w ФL%½øÁøàb¿°»¿…øä~Â'ß¼àv¼^½¸x&“”¥‘ˆ&«ÍD(ɤ˜D*fBªÉ*ŸüêÍ«l§/õ‡VWMQW7õ±jçfs~±Ó»;}¸œýoõï‰Æ,ÁÄ–*wÚR¬ëªig~Ĺ7o?îõåz›æfjN‰b’+8ÍâPÒá™/Š¥q2ém/ü$R–$ÉÈ?ˆÁäÆ™Dß’ý~Qew¥ÎΤ·°ÝŒ›gyjROk>üÄÃmð*ïyÕ—‚%q<ñ ‘.73?H¥—U³@yiQÛÍv«qz»Yà}h‰‚{î -mo¯ljšåú7ÎE¥sZÕ€¯ô¶:ËiȽ—3_påí²‡YÀ=û¹9vÜ-C]­ËºÑÖ¹!KÃphz»ÅϾH£ÎR]ÚÐ&ª`¶tÓ‚Zä¥~ìÀ-À£ääÎÇ'Δ KdâÈÚì¾ $¨ž5$ ÙÖ3¡¼ÇŠäfw5:ø=þÓlæ‡Jy×YS¬‰úæIe«(œ?–¹U¶n­ÅŠ3&C“ïÐJÅQ‰{3 -ã¾k¢þUsç}n„³¢¡1£áfÄ/‘b"Ù|¬ `GÜb3ÁR™KÞ!‘'<«œ¬çB¨Jw¼iÇu;æ|Å’(:‘2,çF·'–¾Ç«ÈÊ£]Ö=O%ôÛ“õ‘”YÍRáÕ4¿Ê­†W‹ê¸Ó:wÄqèaø=W kYÂ"+ì &L Á#B÷…Š3۲ݾÄÊ„Fz H!‚G7¢†YÕâ*4ew]]¢Uf¹S½²u}8èf_WyQÝÛõ€v,CD#»èÕ`òX†DL†©#z*&¿%ä­„KTC>ÛÔeI5¥ù -É;uã‰>|XéѼ\oüŒrfö!˜Â€y÷ÝíëÅ»åÍâöæ?‹«ÕâöÝÕ÷Ë×W«åoo¯—+:þŠþÓ_ðr ž±úá¿ß¯–noùóíW«›oÏs_“ÆÔü“hß=¼Ö¾9h³7ev]´ÍºÚxƒ#…€ع›ç?Æ^†P?ºêd"VÅT‹Ì„ fX†„ŠLLÁrŸ§Z¬”†®¦Ñ~]×»]Vå´0('mC`H˜à'XxõÓAIÆ&̸ÁÑHÄåÎb:Α%ŽQPÙ0øÛg`ª2UI«ñKÓÑB‰oiÖéŒ{æYŽ#bK¾/“Èj÷Ï eƒ;]Ú-‚¡Ù»;€¸ XÄÕÜbO WX!g{…³$ý|¯àK¥6Œ†pŒ=%ö# £EŠ¢uöâêØŒâ¹õÕˆªEƒåOŠÐ+ðryB‘&yj’Ü]\Säá ƒGl,Ì”D[yqÐë¶üH«;;f4<](2©Nä™x;Û™U&†ÂÄ;èß $§•‘#JAÂ63|aÇkèú8œåz¯«zÀ»$ÜÙ8¦V3»M:„âÉôf±irÍ.¡Ç¾,ÖE;r­'1y¾LYýtWÊ­r¶‘†:Þ5q2‘¦MÃ1Ësc;|ÆÇ­ñ>$ažtüç^H²1Mà¡ñ´×_ -`áÐÒ^«H -BJÚÒ -퀈åÐôAÏfkò #ÒaQ®›5t9ÎÝ­C«Ã˜MPÁE¾ÃK »jÚbæB+¯§C=ß’…íK’}_w}[«TYTn–Ý鲤¬þúcˆ1ÿ‡ïòü²¸ALüÊâб|À8s( XÙço\ñ¶~ÐLÚ@.¨ž}fÇ÷/ÿ&f]kÛ EÒ5G*4V¾¤iFXˆ¡?p€TAׂÎQÝæòL %ƒðB‰[û;-‹n¨#¯lˆ=ïƒBÙÝð³¦Y¼´ë­¶&g¼ÕC.þßú«žé5èâÀ'"ùäÀ¶;î¿I˜êiCí³ºÔu]Áƒ¿mÜʵš´¦>3²! ' hBñ–ß¹ï°^1e~TèYsÌJ -lDH]æM÷Bf€>iÄÑg_ÒMR°PÈ¢'_MÇ]5%ójzW´»¬y˜^ží9çO)ïëæÕ”OR>Ý”N/†?ˆDgÙŸf{¶AuF{ÑùÅÙËà_´¹YS5xB½¦Ç²„dEc?oèÛÌ€ðMÅßÈhès"5 `¾6©,XÁ<¥±.‰À[VNnÑ8bj=âôœ2Ð «Xô«øhv)KxðÉW´„·¥‘ £yÞË4VÇ¿I÷ëBn 4%‹Óþo¡ˆMºÁ“ß¼ûP˜mfÍÌéñ”‘&ëP•®Ò[zi inSV@JNLÔ¥ÞÙBÐËÔŒ«7¤æ$ˆ"–ÄEP‘Ce£H¢ÅêÅ_Ð†× -endstream -endobj -564 0 obj << -/Type /Page -/Contents 565 0 R -/Resources 563 0 R -/MediaBox [0 0 612 792] -/Parent 567 0 R ->> endobj -566 0 obj << -/D [564 0 R /XYZ 132.768 705.06 null] ->> endobj -298 0 obj << -/D [564 0 R /XYZ 133.768 524.981 null] ->> endobj -563 0 obj << -/Font << /F48 355 0 R /F40 351 0 R /F42 352 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -570 0 obj << -/Length 1918 -/Filter /FlateDecode ->> -stream -xÚX[sÛD~ï¯0y’™x£]Ý[73¡´`€)ž¾”NG¶ÖöYº$„_Ï9{veIx±ö~¾sÙ»8,ÜÅ7/\óýjóâêï.–„"\lö îÇ,âb^°Ød‹Îæ(—+ßUdj)ç^e]š/?m¾ƒíñ`{è±(Œál½o-‹îtm– ¥xо]Ö¦‡†ÎÏ䯮+ ---vZ+‘uZ´Í% ø‘ó[×´4•«»%w³ÐìˆíAªUeASû²F ‹ç1 ½, Œ†»òT©\®Zu‚DÂHÑ´(»Øìjµ•ͦÛrÉÁø#ÙråÅ‘s[ÐÒö¨sFÚH@,bálå.íiW!gÅ̱µY±UíJÃuÇ8Q+™ghái}UM €_Ò¼“ õé(h4•Ü)½/£®QÅšä©y0 ëÀR•ÍœcXÖ;;m[0ÐR¸N×j“¸>Žð|‹nÉÎŒ”{ AYÄÃÈWÂõ˜MpÒ¾[<Ê«ÔWì‡dMÊL½aL}0>KüÐjòÑ¥%œÖD,ò»âÕÓ3|æ‹Þÿ4c/Žfí¥h¿ìɨaEçä.Xž!L¶ ”ï:—4ÙT5Ùty‹§Q”‚yn26]#°%pmxøV5Z.£NjSúµEÿH3{êA{7l¯áU Ü u¡¶4ßcj*L#ãhjßà - ×­V3é¥ySÒ^£¶¹ £ÆtÔéï­Ý˜¶ÑÍùhÂc±è]{¯í3ì`ÏHÌû¥1'DwA͇£ÚMGœq?˜ÐMÚX•Ž¦1¾¦0 ÕR»‰VÏ¥Mc׷ǺìÇ©ÌŽ7ÖàÉšÚ]±;â}ȘQW,£@}xDÌüˆß°p¹â®ë:ß–È·c17™qc¤•§†èS3"ŸÿÆtì; ®²¶X­Z&æNUnm zv'£Êƒý"ÞïÊ9…Œôߢ—©Oö;‰T³0ðä‡ïo~¾ý|³Ù¼_®B°À‡»÷ú®™žž}sóÃÔ¿¿{SË´•·úŠìM éda–£Œ__${ªÝa÷ïKº0AÀ|Ž$ d }I3nÄ‚$\ &ªóæK’]îãï,L/ -EáŒä_È3# Åø«ëˆOâ± M@4˜)]CáØ”`=ùhf‘Ö½(1QPåj§Úü‘æjù{§j yì!¿ã÷ï.¶`ðúbd–éj9W@±ÄÞ üS0¥#ÍcdÎ$`îä6ÃúKb˜Ç²ÃF ¼ å|˜²¤•j,UOs/Gžé1}g1‡Lœ i›—»;’ Š]Þe=ëAxҸѿ¡Q”nš’8pk€fL áž'Lë¤垀;ͱìrÝ”‹aì$TI3ø Úã%5é’óÑõä”dD/WiM°~; ø÷ü ü”+„43RSZ>TÆ_;-Â2Ka¨Ë˜zž7L{4ÌÙœ3Ý|ƒô­Í)çÆ8„žaø¢Q™|’Eø³8 **,sýñ5\±ZÝüòöÍæö§_òéò; PlëxÁõ>ŽÐÝLîÔ ¬V×s%ª½g´(­Ôë‹{}üéI¾¾øðýçoßÿ>óÏ®ÒeÎë Î܋매i0ÆfåöÄ£Ðâ²h__|-ï•UAãOsõgŠj EŒãcÝ{ý xÊëW׆û-”«á½µøWsÊ­¯þ¦lí¤]êŸßfsÈ7yÀ;‡ñ|Ï9¥Ô >‘ÔIg„Å!<û`7–ŸåL„³ýp,ÓÔ;Bc¥ëO&WÆ‚`B·¯& ñ¡VµôNÕï3L¢Ç®_8¨ï9ÍB´ëwö†i†k£T#Ì]Ä–å©È èóDˆ2§e;»êæB§6!"ÌH3"¦g ŒôÅ´²€"ÃV?ý@<™ŽvœÔáØÒBMÄ"2‡Xr‡}‡aevëúš„Ò2¼¡ásý:ÁœZ‚¬Ê\µrB¡'™ÀŒû.×d ¥6¥~&ZýòoŸËˆ.Øq.„"v^g®9óƒx <‚ BçPÒ·µßÙ ú,ðã)a7s7 -*Ox#ÆÆsµt#³ ú ÑDh”pñ¬, óI/ÓþÍQFºa –°Ï'o/§U-÷R[]Z…ð¨*kýÄ6P?Z+­:¦[ÙâCgÊZ‡$6ñZ˜A[ÓúݹЃ üÓE7¤~ðèµû¹Œ ÔŠËåø º/ó¼ÔÆkþOáþœl7búg§¸Qxü§$5ôñlê©ê²-¯×íc%¯íKc}¥»zÏYìOÊù5¦¨ëi†Z_éáõI1»½Jëôt=xŒXñOŸ$C("‚|&3ïü?‡qO -Ò‹¬†‡Y„À¿"œÂ‚áñž0Ï$f,£wJÐ"O?s¹Ýá‰Ñ–·›Hw— -endstream -endobj -569 0 obj << -/Type /Page -/Contents 570 0 R -/Resources 568 0 R -/MediaBox [0 0 612 792] -/Parent 567 0 R ->> endobj -571 0 obj << -/D [569 0 R /XYZ 132.768 705.06 null] ->> endobj -302 0 obj << -/D [569 0 R /XYZ 133.768 568.825 null] ->> endobj -568 0 obj << -/Font << /F40 351 0 R /F48 355 0 R /F8 572 0 R /F11 499 0 R /F42 352 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -575 0 obj << -/Length 2050 -/Filter /FlateDecode ->> -stream -xÚXK“ãH¾Ï¯ð 9¢­ÖÓ’˜‰h:b€ hàÀp(Ke»@Ri«¤é5¿žÌÊ,Yöj–Ž½XYY¯|~™åhsÚD›ß½‹øû›—w³rS…Õ>Ùo^Ž›$IÃ,M6û¼“4ß¼4›zÑÉï†O½E_ËnüáqFtßmÿõò‡ÍnŸ‡EžnvqV¹ß÷Xë®}Ck¢ÛÙ0 i+\YÅñ7¶Z·¤ŒRÆYXeì„qI;^Î’W.õ‰‹°L¸šNŒõÚ‰YÆEê×â´±² ‘_¢(饥áw8ÂÈq2=3/ƒã¦ˆK¬ãÔ×£Ò¼­E”>ÞÃJ†Û]eßPaWìÃ*­îìsµýO5I³¥&({ϪЈ$$ØÆ -ñ«mž¼Ø.Gix¬ú»mÚ4ÒÜνžU}F2rËâ<¸À‘ØÊŸi­lÈç,åNª¯Û©Q=Ú¾Šø. fa˜OöŠì Zl˜¥‘³¡ãÕºe?Z^ê¤(« Š7éi$Â)°¼Ð’ÀzÝÆ°÷Âgص0f“À®ÑL5„Åšó$Œâ|ÃNviÖ¼—Ga -¹pç½¼gk£²¡á·$yðUéɶ—í>B>,Ùp‰ 8JÂNÕÃÜgÊSXla&Š‚?j³Ë€xÖÝЪZŒþ–§ï?ñ9ÐB ÙvEv4Lîùצ舅“û !Ë$°õYv‚fkÑÓÀî|âóôIë†æ)Zâ¹,Žh…²x¾êÚtN¼ôXÀ˜–:~ Ÿ¼ñážd= `$ƒ‘°Ý Œº©ï¸óg™„ÙþêÏ#lǯ:tÆUyçÐlNÇù²FÑ£GiÈ™7?Ì}Eé!݇"R ÝM2 Æ)¸a—]/gÅÉ\‹AT«Æ '0ó{=q‘#ùÝÈ–â DÏÓ£¦ïß·ELíDø§p…¶òî%ùôWÕ¶tê×4ºž:ЖÂ-þ™üB,¡½”Ç@ôR6²Yúè>ÜË·…ûŸ§q˜X󨱋&NÀ§Þ¯ ‘ŸEšÄI¾1Ò8Y$ .æ2}>@æ;g OŦA.˜ä!42 /yÞµ,-‚x±ˆ‚U¼lË(œ´4ã·ø¢Êl#×,î+* ·N–‚4É{ôÿ‘Øîí#„>v:XA W<à=?ÐXÚAÖJ´í…ø”¡xôŒžŽOéÏu¶O\¹Ü­IÜÑŠ2_.´DœŸždd;=µ¼ÎÅ ®×ÖªC+i‘‹ìUæiA|oçê9Hø!˜Ê¯)½.%vꘄodÍÜ>9u‡\E¶I¸`Ä…P%‘¯ü¥<@†Q×}žéñðÀüÞ§Ð͵3些׀qi5ø³@±Ž¸ÒëeN»ª»Íü3§–êýÂgÎc’èZ_‘ǹgu7—T0:šoùn!mµå+Ã(¯<â~%€:£Ö–34Ÿ¥à–¦dD,œq[‰éóHÑϸ³¸7ÊÃ$›/Ö3š”ÁIöÒˆâã§RYXîçUþ-kÞEUá;Œ2øþ2žÙO»dŸ†y”Ü{„aÄÐ/O ñÓª˜eAú*‹ú%œ—ê¿r€qô+0uñ;‡$œLH@c¢N=_s¼›dyæ›VrBa—Ö¸8© -§ -ct´ip qÌf­R¯ÊÛQK,ÊA\Ç0 d;ô -þ¾JWœa2€rUNÊš´¨ÜjüúòEÉãX_¢<’á ì¿¿ZÚ‰Ž³O¶Vj‹uêQP#³ ŽFœ:êSqM­ ¤ä ûfÞ†6q_‡ç+¢1øU tÇv•á¨òhVÝ5ºÀ ç}DýšµAæÜ^éÚ’šw hKP5FˆMÊàgÉ;Fá -ìI:¥WðÄ{%+¯^AŒÊ* -&D§'jJ*ðXç샑?Lʸ‘ ™¬ºGž¤·P¬[a¸wuÆ$¼ÅIµbÙEä mŒü{ªÌÜ&¹»QŒ¬>PÍGÚAÍRð=ˆ–?!lâ·—µ´V¸† (g—wÚB^J¨ˆ”K³‚,¶"ôA«Vš¡…ÆærGîh¨¹‰¹&þõíFÄüø80@{s<Übÿ5YÝÀ?g ±oëÒ*îÒž–m=œóWè jÖ4zÙbžN`o뺮 V V -¦§ ‹“kÝHî“œâ¹Á,î'ó ŸßfóqÔ-|›|>@Hªõôu1¾|mñkÂ>Ü[TØ_ãóß7ãìÿü+ò%Š‹»=7Cjþ³RÚ0¡èÕ ::$€/„;‡yC [ È&¢IÝvrøsüÅŸ 0ºùGÆ•½îwúÛçÏÄê±jW;'*Kh©T;PÝ $e#ɱ’~Î>;RvÃ7É}ZÙŸFö…÷š0F\¬o~nÀ{™# càó%÷¯ˆ…eÞ*üþß)[CŽtq™DÑ2.a“N‘ûOÿâR Á(¦R [_Ï’¡<òÿ -W ô¢"EñDCöbGÙ­z,ð_4œïÅ _ÉÏð*o¬8ò”³÷Ôpû'0˜$ Û0¿aÔ &¼_Y;¹h*0Àßóó€õyû SXioÁÔU’Weåü~¾>/}(èëÒì÷× ¾ñ'¤4p¶ËÒ°ˆc(MoýöåÝÿÑÑìj -endstream -endobj -574 0 obj << -/Type /Page -/Contents 575 0 R -/Resources 573 0 R -/MediaBox [0 0 612 792] -/Parent 567 0 R ->> endobj -576 0 obj << -/D [574 0 R /XYZ 132.768 705.06 null] ->> endobj -306 0 obj << -/D [574 0 R /XYZ 133.768 546.859 null] ->> endobj -310 0 obj << -/D [574 0 R /XYZ 133.768 463.796 null] ->> endobj -314 0 obj << -/D [574 0 R /XYZ 133.768 273.136 null] ->> endobj -573 0 obj << -/Font << /F48 355 0 R /F40 351 0 R /F42 352 0 R /F14 432 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -582 0 obj << -/Length 2209 -/Filter /FlateDecode ->> -stream -xÚ½]Û6ò}…ß*5—¤¾‹ @Ò^ƒö H÷ÚIh‰kë"K>RÚÄ÷ëo†Cjý¡ÝMšöž8Éùæ Å›_¼¼â~|qsuýCÂ%+3™-nn")X.ä"Ks&ãtqS/ÞF7[mõr%Ë,ÔÆô¡i[‚Ö~n´KéÚ#4öÃV¿¶ï[¿ø¶÷¸ýhö½ÕmÇjKr˜4ÚêvßtBVF«Áv·”i¤Ú¦V«å7?-V"ae’À(X™zƇ¦ï€<+¢V´±_ÃGGÝi£Ú7+#«M[ýWÝÓW}­=µêjÂÙžÈûŽ-Wq–F¿- 鯖)Z>p¡I5û´k³Û·MÕ c‡¬ï•Q;;_ÖÅÐÔÉ‹²nªf‚RýÞÝÂAŠ!xÞ<ݶO¤A¨ø“,û+,ž“‡¯hø×Þ9ýŒÅ–'ŸTc9%"6¦ÂuRª,„ÑèÝñJs³=¸ãÙ§y˜¦d\–¼÷@ü‰Ol>‚í[Uyl3ÐèóL+B€ÜP|‡ÄX$ó=ƒ€[=Íå)§äfs}NÊŽ*±³êÉÑQR‘P‰øÌ›®n\Šmêó«ÌEä|YáY:¨¾ãÐÛ€÷£ÎÄœ…¡;eRȳKÎ=îN ŠTíÓ!Ê¢SÆ!Uƒ•Ïw^;ôvºþ7Ô<ç…ÂÔtxßûdÄâš'xhIµPñp-”–S[‹»Ãa?gꔳ¸|ºê0ÐÜŽ]µï¡t¿:€‘ -âsÓÓ ù¹] @ð ŸôÃwqeÐdæ(J²<½ìXÑo2^«Šð´Ù*zˆ*ƒ5 -ìQ¡¢wª’ÞTíW–Qojm)¡>l÷3ƳâÙ£Y8JÑ$‰êúK—v5³oÍz× ƒ>óˆ…H€$+@Ê’…wzX™ˆþqsõ?­&Ô3 -endstream -endobj -581 0 obj << -/Type /Page -/Contents 582 0 R -/Resources 580 0 R -/MediaBox [0 0 612 792] -/Parent 567 0 R -/Annots [ 577 0 R ] ->> endobj -577 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [375.641 523.341 384.279 534.285] -/A << /S /GoTo /D (appendix.B) >> ->> endobj -583 0 obj << -/D [581 0 R /XYZ 132.768 705.06 null] ->> endobj -318 0 obj << -/D [581 0 R /XYZ 133.768 604.786 null] ->> endobj -322 0 obj << -/D [581 0 R /XYZ 133.768 496.834 null] ->> endobj -580 0 obj << -/Font << /F40 351 0 R /F42 352 0 R /F48 355 0 R /F14 432 0 R /F13 584 0 R /F11 499 0 R /F8 572 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -589 0 obj << -/Length 937 -/Filter /FlateDecode ->> -stream -xÚÕVÝœF ¿¿‚GÂì|0|HQ¥$JNªUj·}Éåa³,:è0\’ÿ¾6†½Û-—H©T©/ŒÇc<öÏ?xP<¸½áWëëýÍîH‚‚©Lƒý!IÎ2!ƒTgL*ì«àCxÇE}Üÿ|~o÷.áO^BIÁÁl,¹Ð;ží¸ŒbQð0¦å¡2Þ’\Ù±tÍà›¾#E õ½¹íç²]Œ½q‘ÈÃÚú‘E±Í«ªú‡Ÿñìâ„ðò'áÉE’‡“‡ b™'ÛHhÎruæeÙŸNÊO[8¤ ¥2S/n›ŽÖÑ–sùÌxàꀄßno‚`¤B!/X³æ¯ÖüƒXÊ°L/±Ü ]p–åÅЩ¯šCc«­È9S@àç ÑüYhD*ÎÐ Æ™Ó0I”J®€§30°~0’%Ð<6ÖE7Æ"ÕLëPÊoÇt¯¸þDÒ¯Àí/$ƒ-×ßÜW}9lç:ȘŽ´4©@øä0ç)¦—Á†oâ¨Úè¢Ï?Òl)'ž6F™gâ-²òhOæ%ø=Gð+«B2-sò¨ô…ÕÛýÍßgH•t -endstream -endobj -588 0 obj << -/Type /Page -/Contents 589 0 R -/Resources 587 0 R -/MediaBox [0 0 612 792] -/Parent 567 0 R -/Annots [ 578 0 R 579 0 R 585 0 R 586 0 R ] ->> endobj -578 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [446.732 642.127 458.687 653.071] -/A << /S /GoTo /D (section.12) >> ->> endobj -579 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [372.771 630.172 392.198 641.116] -/A << /S /GoTo /D (subsection.12.4) >> ->> endobj -585 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [196.692 554.456 205.878 565.4] -/A << /S /GoTo /D (appendix.A) >> ->> endobj -586 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [196.692 510.62 205.878 521.564] -/A << /S /GoTo /D (appendix.A) >> ->> endobj -590 0 obj << -/D [588 0 R /XYZ 132.768 705.06 null] ->> endobj -587 0 obj << -/Font << /F14 432 0 R /F40 351 0 R /F48 355 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -591 0 obj -[329.4] -endobj -592 0 obj -[500 500 500 500 500 500 500 500 500 500 277.8 277.8 277.8 777.8 472.2 472.2 777.8 750 708.3 722.2 763.9 680.6 652.8 784.7 750 361.1 513.9 777.8 625 916.7 750 777.8 680.6 777.8 736.1 555.6 722.2 750 750 1027.8 750 750 611.1 277.8 500 277.8] -endobj -593 0 obj -[277.8 277.8 777.8 500 777.8 500 530.9 750 758.5 714.7 827.9 738.2 643.1 786.3 831.3 439.6 554.5 849.3 680.6 970.1 803.5 762.8 642 790.6 759.3 613.2 584.4 682.8 583.3 944.4 828.5 580.6 682.6 388.9 388.9 388.9 1000 1000 416.7 528.6 429.2 432.8 520.5 465.6 489.6 477 576.2 344.5 411.8 520.6 298.4 878 600.2 484.7 503.1 446.4 451.2 468.8 361.1 572.5] -endobj -594 0 obj -[500 777.8 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 500 500 777.8 777.8 777.8 777.8 777.8] -endobj -596 0 obj -[600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 0 0 600 600 600 600 600 600 600] -endobj -597 0 obj -[250 278 500 500 500 500 500 500 500 500 500 500 333 333 675 675 675 500 920 611 611 667 722 611 611 722 722 333 444 667 556 833 667 722 611 722 611 500 556 722 611 833 611 556 556 389 278 389 422 500 333 500 500 444 500 444 278 500 500 278 278 444 278 722 500 500 500 500 389 389 278 500 444] -endobj -598 0 obj -[556 556 167 333 667 278 333 333 0 333 570 0 667 444 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 278 250 333 555 500 500 1000 833 333 333 333 500 570 250 333 250 278 500 500 500 500 500 500 500 500 500 500 333 333 570 570 570 500 930 722 667 722 722 667 611 778 778 389 500 778 667 944 722 778 611 778 722 556 667 722 722 1000 722 722 667 333 278 333 581 500 333 500 556 444 556 444 333 500 556 278 333 556 278 833 556 500 556 556 444 389 333 556 500 722 500 500 444 394 220 394 520 0 0 0 333 500 500 1000 500 500 333 1000 556 333 1000 0 0 0 0 0 0 500 500 350 500] -endobj -599 0 obj -[556 556 167 333 611 278 333 333 0 333 564 0 611 444 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 180 250 333 408 500 500 833 778 333 333 333 500 564 250 333 250 278 500 500 500 500 500 500 500 500 500 500 278 278 564 564 564 444 921 722 667 667 722 611 556 722 722 333 389 722 611 889 722 722 556 722 667 556 611 722 722 944 722 722 611 333 278 333 469 500 333 444 500 444 500 444 333 500 500 278 278 500 278 778 500 500 500 500 333 389 278 500 500 722 500 500 444 480 200 480 541 0 0 0 333 500 444 1000 500 500 333 1000 556 333 889 0 0 0 0 0 0 444 444] -endobj -600 0 obj << -/Length1 1615 -/Length2 8425 -/Length3 0 -/Length 9479 -/Filter /FlateDecode ->> -stream -xÚ·TÓ}7ŽtR"H ¤Çhéî%9`À¨ 6:¤‘”î’‘é$D:$$T”nÞyÇsßÏóÿŸó¾gçl¿ÏÕ×õý\ß³+ÓS=Y¸T î‚âñò‰ä55UA|>>^>>~BVV0 åý[NÈjuCÂà.bÿ²wƒBPh™…6Ô„»ÔÜ HX $"ÆÇàçã{ò·!ÜM  ñ€Ù4yjp(’UŽðvƒÙÙ£Ðyþ~°[s@Ožˆpÿáu†ºÁ¬!.MÊêŒÎh qèÁ­aP”÷…`—°G¡b@ §§'/ÄÉ w³“âàxÂPö](êæµün q†þÕ/!+lCþ©ÐƒÛ¢ t'˜ ô) û}ñ ½øøþG‡Þ=kGôå‚DŸÙŸ*½ˆ¨?Ž÷7†¢Wí¿ëPt±†ÛüÞI~!aÄÍ âMˆ¦ |AèåµzýÁy׎B»Ð=ûlán„¿ZDÔú-ú=!ÿ ´Îê?Hè ˆ¾œÿÑÿ®hó/¡ÿ‚B ì_PtøD‡sþ¢ÉtùD‡‚ÿ“]M!ø¿’@·AtåîÀÿµ»›z~ð=»¿ñ÷êµ&œ›[‹‡:Ô…¶ÕÈÒzòlŽIà짟ñóŒ™ã£ú'-Öõr²çÕ+”æú@JæZr®g¹ËŸ}7ê¼Ox•¶í­âgnOîL'ùžÒ1ÏÜkÆxe˜*Ç VêÖñ”>š´‹@ÚÆ®_õžßãºÞÙ$O6Ê2%µ°6­Ž®š²l *º'ß¾è¢Z¬†À›BGÔó¾8¿ Y1LÓÊdV—è8'Lô¬&]Z$ë£ïŽRóÞüÉŽ"S¢SÄ«6X, ¹Ê+õØË$÷µR¦Ù³é½Â‘zV§u`¿q°gÆÄžÜ%bo™lúæsNO†X¤”KwË/ÜŠ²YÈ`Äz;(•tŠ4èÍ€©ô,¿ùB都î=?Ý;±z实¦j2>Êέ™(yS¹ñÍ¿‘µ=ÖÃ6³õqM*Ù†"U6Ç®¿mHÁ‹SÎâ {Ø´!¿‰hº}XªdñIhk ™€±,½JŸØøu¯ØøÄ×Gð¦à°£CŽmÞµ:Ú%–<Ægµ~Ñ/³èÕÅ>ø¾Á:£6FÞÇÓyíįÚkÍLcÐ^ìÿƧÍYèûêg²¸¸€1·|·3*4–š·5’ùÍÂzß‹c†JÌxŒ2­ü×GATàm„eA1{>×{˜™-BDƒNÅÓûâ“vƒýD˜RsÜ·¿¤ZÓ´ÕeùF¯ušfZ8)‡|;¸ -¨Z7ÈŸ­…ÁÜ7Ç5“7´eîÙûóP,°ÇSê …ì$¾Œi“]=jɋ昪¥þ~·­L2Ÿ÷Iù×ì½#;Ú‡‡Ù’$Œ&Œ·V·p‹û?åè ŠV.‚Gðš ™¿Ó`n4ådõ¬BvàÏ”Ú ¡ÉE¬û6ü-ž1ZïÞL©H+øÿÄ_ÈIè7N!iûÞP rxVbWF‚Û ²êhÉV«€øYvØÇ–Z=çèö4Ù·6aãsHþYg„!â}fGH‘nO£÷6¬€ ç¹?9â†gr×vƹœ± ì§uô1Ø9ÜvÑ=\í¤·ˆ…ÊT×sbúø¥&¤Âxß>åˆÌÈ’ ׋[A -Œ¿|é˜Ïmc•˜ùÓg¤B4&h!‡»¾KC¾x90vÚ皘'›ºsï›acÿ0ž­p™ý:«ÃKjØö³Jý… £Xñ¤Û!Sw(*ÈuI´±Aµ ÈL']rÝð1ZLDÔåeå¨0œ.Ù415ŠÛ‚‹ïÍ ‰q¯_xP>²Vɹ8#Îå3~Ï(¦šÜ‡Øð Hgjų_ -â:`%¼ ŠU½hS'e “†~ütš ùb׶¥I⧃úUÜ‹c³ÓÉ2«Å‘3‹iÆ“už¾üÍŽ‘çÏÓÁãOA¾ƒ(RºäGÆ}ÊUš÷µ·¶Ùâ†ùžÿÆ7RcríEWá°QΓõá’Õ‹Ó+RÒAó àüÙ!ø]ÏÌ©51†,hË>!ð€ ²u›ž®›šÊûò{3‰h~jkÞ¨ ¤•Y$ðÀºj{áßE¾5‘ÌQ.Š­§;e”âý€\"ÙÀï¢mÞ¶ÒJÊÚu÷¥~Nkت¯Ôt,0¿²º\Þ¾²É7ÆZéÿ -±ðÀ櫯=• Tyž¹§BÉO¨Î‘ IÖ.fcŽ -:ºV(ñúA’‡¢æ¾G¢ -šÁ7S¸‚çG+õ‹·²œY–v“:µuì%_ÅG‚jtˆõCåVÛdÄÏzå1ž@wØ”LØ£ ®ÂÎãÏK¤Ç¨cÝ0¢¾§·µZU…á‘MÚjã.Ä\/Ë+s?ç[:Mˆu&V±U ß}?YvÞøi– ¨–gEÃØàY…Õ7A£\“Q>÷Q*)ÅiǺÀ:&£þ.øŽ¦³Wƒ úi5'Yëͧ ° -ÝËäwVT`àö -&‹½˜`ó3cT›ellÑú´-iU±¥ÁœP½³;®ä“ÌRÒ¨? TÇÄrúl+ì庚OOàMXçé_¬¢¬çd½X°JqLª¾2®õ†{}lr¨ú‘æUX§×žŽeêÝÈáò@º5×`;X­‰†á—‹qˆÖ–oBå³8j›^HžöÙV•sÉÄ–FS“œJ`ŠƒµíWyi’kEU“6;N§)Ï3¦†Ü=µ^B:7“øFz¡“Âç`j+  Ô˜#ù7êSIÏí*¡«hÅR>sè[Pi<•Nh~ %_µ¥§yò ¶ÿ‰x^*…„l`üôÅæÝÍ_œŸöæ(ìŠnG³Lùä2½UŠZj¾y¸3¯‘$nñœÐF'UM•¥©5µ×xˆ}–šÊY×u›â´PÍ„:1Àv†ë wêkáú/,@…Sž¢w{åtzÜ8Ò —Ò!øD‡3²Óý+ÞNìÁëwZÆQïò±öõãÉ|Û&è¢yí,3ÉIu¦|¿ Ø‚Yl¨mÇ3Ÿ:Ós¯Fe±EMQÁe`Æ7õ)ºî!NN1„*:àøæ€"A£!àÚëI!oCu?ŸÀÉÃõ´Ÿ~óM(¼"9›0É*Ÿ9ù.ðŒZ@Û–I]GãÍ'Ëkü„‹[ˆþ]MʬÞ¯Æ<¨íŒôš7uü>9Ÿ~%„cDJè £@N}K–ï¬2·¢0òZ1T÷¨&è-8ržeN[@IIôPÄÅúÖBß>ȯÉDÃû…H½4>tʦG5=¿î×*¡ÿ¨‹Јþžm;àµÅ¯Àž<ê’_7?“½[Œ­Ÿ(A÷εņ|¹àu[ƯÁb8T4)çÁª¼~ûí˜d;¤,ȧ=uó¥[νÝÕI–b¹ -" L`TüW±f9ªcÀÌòg¶@eÚÜÉ1»0ŸÒ2ˆ0ñ(Å/³5‰½–J0o¥”}ç§\Ý5™cÛ»–ÜTÇâµ£Ëwê UÎÑK2ËE²·>w=kê"ÇçfÑ…8O+˜`½‰íŠEŒü¬úI„k´˜${-ê,ë3wü5Û¦CKœy##€w"±¬±Òv’v¿™F^¹„$0Iëc^M\ߊŸ8@ï‡0i—ìÊéô ¥åF‡ƒóƳú—·7ú%¬œ´¦³‡Mr[kIó û›OcXXo»v<{Qa\°²eXU‘ZÅtîÛ«i@»~qÿÈOä¶qkŽC˜¡iJE~oøœ!H¨°¶ x7Là ƒö­ßÍÀª”xUMÛ±;~í×Ãë›f]átÆWø‚½”jþ¹<~:×tÍtsÏšo,¶_¤Ò{ ,Š‰J*±Î+–‹p*Q+º›°,'>V/G¦kù ±À';_-ÆxÞù;hLÈ|ý^ÙC<¢,ÙgþÚ~v—ñ:«F j5•p&ƒ4pæ¥|Ë›ŽoZû4<óYô‡êu%JðbÛGbnÈ~ÈCÝ…š ¤mrCaѬ©s µ#^˵õ?btk;°[q7Âj?š[¾Êõ°—-üÚˆbOµ0k`:Û­Ýt¡©'øýí—K](ÜÒ#q­ÕÍæBúÛøtUu¶í'ù±û¸µå3-†8'ˆðéCGÜ‚±!Ù|FRö93Í šÏd÷H)Oã̓ÞL|ÒN©uZÿè-IwTfî#¤DãÃr2× ¨vÍl˜>Þ_?”Ça~}ëÑÝ|ìpC†+žw±8"K?õvKˆ· )Öa6H+®Â_Ö^'íÔÙPgMI¾qƒñ´øôˆ Š_¸°ËƒÅͬ$ÂS’¯/›¾+¸;Éð¬±|ŠÐ—°Ö¿‹*³’E"ÆÚÞï ¼Õü%6•rárÝÃb­¸G+ÄT‘˜ÛÊ—õe^&Œ)µ)`C`ꑨøÝç¯n‘Øôyæ»5’vò? ‚–¤Ï·÷>ûà‰ÇZ˜%µ¹ _YU’ª#¨+¢ÞÃmaùre»¸–ôó÷´b÷Îå$Ÿ°ãýÜ£fÉâ|+œp|1dïvï˜)„€Z)¾=B8iØÏ[fpª|瘾6F€Q´,Úh*Žõ‚ÕDT¸ÞMm®~ü†tñÕ®H뎧·ÙÊŒiö"’ßÕùÇt.ïl±zÓʼn¸ïñ1¸E0˜4¼+¯çe©VÁþ4é*n‡ãÞjŸÍªW·ª½¢ä`Hé‹b³D378±ËŸ¸õ‡jðå÷,þ%šªGÄÅØ7»ý&5i„Ÿ­Ý¯½[ôuƒW±âÑÿH‡#i_ê õk3z:oÐÞϾã³<±ëìëÑ׫…âÌý•iMŠ¡Q;ú0‘ÈBå8½Ì“•³+HÏZZÚ„£Tv¾ŸAs÷lé{ÝÃ;X²ÚyìUáÈ÷¶µ¬ì‹—ˆ1…f~6œtD‘ú~@M¤Õú‘“¤»â¡ÎNr>ûž‚„x½CMßðÛ‹•9ÕÍs~$%}AÓÊ¥lƒ]¸rÒ-½Á(ëþé«ÖÏnä¼áKë"ŸäãÌååò×¢·k(%—Üâ',S(³\ß°ó›-ufhAisÔ·“ùêé¿I—N"@©§¿ˆÌcÓH(ï“Y> лe”T_º•V<ßR§ÍÊb«ç:Œ,t3eá'`1ùôšAt`ì}1ÖUé‚Óȉi™ï(?•%z“¤/:0ØçD ïÒ+Ÿ89–ZɸèpŽŠë&ĸä&Fò{‡WS…Î5ù3¼ÛVß™U7‡ªçá€aþr6˜Ya¯ÔÈL]7´‹.¿sã6& ¬½×ÉRû+šýjxµRªÇJǦÙì[h,_”L`u¾Þ\ËE ëy_½ð´@÷&!› PQxƒÞÉÐ-BWðæLsØâ¡øEFÀãtjúKioB‡Õ°¹EkÉÏ»‰Òýxj¬5H±CÀØdy?|†ÈÈ0³oi5.†‹L¿QæzÖ5’'S»Õ¹+ÙŒÏÉ6y-ð<"þQúäê@§SJ(ãý&ƺþöf{µË·%Ýùtì±·V›œT’~¨ZnëÉ$>ò~>§·û5 ­ž•ƒ ÉäÓWŒœŒ/•hBÒxÊzêÏÉžûÀ…B†Š_×ÛTb‘*>Oºfë¥ žÅ(-:{®ÑÂ+Í×°Äói}^ÏRþ.F°ˆ+œYDU*aUL„@ êÞ.OÖ À†Ú–át“?yµ½X¼½¾’ýŠ;3j¦É¯±UW¦´øÁWÏ4?ò)1 ù9:Ä5lã:ÀNS¯o뼚c{~-GºF€+;샅Ýæw4’ØÄ £úÚ2ëvE6R1‘˜êxYÄ2—ŸLèi‰‰¾*¤zl‡½S²‚¯/½Ì±1­kÅ:q9y˜¾-%L¼Þ7À‘N Høº|ÐÈSèydÍÏ1£ŒJä^V{Ý¡LÔ¼šÄ0xÜKǧy d˜ï°ölÞáÑÍg—*æ» ˜,û6Ä/ô¾m{¿ÕO•WȽÛRçiáéL0‡å¯ò4Á¦ö+¼SÁ$!ê”zóÒåÐ`JÍ•jø z|!eNKéºJšeÄ«½7ŸFíÖãv]¶ó+˜.X7B {6•E- ßÕûöÈM4½›] 亚XzeÓ¼Þa2Ü[%‹¿P¼ß4 Ú²/|Æ}© -îf‰ˆ½óΚ‹ø‘tG%kÙº5°¶Ï5£vb[Xy¥Ô»$ÖÒCª]´Ãòh( -ŸIA¬ #š #Œ•B½ž¥é•t=4Èl¡‘v!M×cCÎy!1÷Ïo&âÅþ­UATõT´“ŽÛCˆ>9b%qWo¦¡ηÏyÖ¤þ=å3×[)(/Ï<¼bêåö< ê1w‘÷¹: 5ÑÄM–æ’`äe_4ûxäBæú~>žåÖ>Å[nÁd®0±ìqÆeÇ5Fc€@d¡ð9k•.§Êdoê.maÛÖ -¤Ô”0Μڗs+ã³÷*,˜¶²ÅÏÍfL5Œæ±èò]ðG˜¢ÈáÑOO…—'GEž`H!ˆƒ¬\\{SÝÖÝÁïÛ!^Ÿuäîp¬„¶ÇgHðS™B³K¬Ú‰Ö:z CD;«? 8ç3õ0žáÙ~¯־ɗI'\\$ìw·:áYÃ/q1„j(û’W¸Œ¾Dìý…vË‚ütg&©pµ3x} ùíBjêõOï(ù´« ®”h -Ṟ_¼í6y_†ª»‰+lxˆJ²–fK¯v;ݸg~Ÿ_ öæÊëG˜UÇ~›êcg{ÎDùCMÞžŸÄ?Ü–]g¾ó¨¤5uˆSÈESáúÆ€‚—lòCWl?nG£SÙì–»^f8”z–PL;Šê¨ …='l6ª»Ûî}’…Éš„ ÇÄüX%w÷ö‹ã«¡Ï$÷M èÉ 8L]PßNŸ•Å;ûŽå_šÓûx³¹oÃxØk Å,h«‡i1ˆ vu•Õ§8¸¹­ŽæÓ×€MÇmú½GtKs?㘚 ThÈœYFêÇïRÕû~ôÛú½×†9#ÂdxE0?s§A{E=Í߯$õ}ŒWÝ ýÒCÀ£¬b*> -[¹-k© O~,oî” ßTë‘ËWV˜êQeEÕzˆ©´¸Û:\w¤¡Ü)ßÄ ™£HüĴݱ:KÀÓßFkÆó¸+Í7Þþø䛄Úí÷¨+BÀTÇR݉œoÝ5^Р¥ Ú¢xáÏV[O›Þß=®›Ø“ªÀÔêìy‚ß÷#ü{ACÏJ ç­bìÜ4`ÎÖ&#ïFä>UùkÏPG0é*¤ùû1™™è±íÁ7\JŸç%aÌ!½aï$­Ÿ•è{YÚ¶9yâf½½2Ø ¶°l™•¦ýIöª½¨Às/pÎü-±óà· Ü&?Õ¾ù×Cö¼I¤ +œ¦)»ÃÚrF82Î^–ü-ä7šØ‡Öü$lIMx%„è÷ìi§©“/*#wN¹n‚–Æä4¦ñÄJ RkÜuéH%c -"³çp° xàqæO_»¦ð½ÏU†¡ 9š/\ábeÖûSÒ9œíߥY%t§½‰fµ²”¤9Œ”+%8œ²i<ãVìk1Ê‘ÎxŒ––Þë¶ÝæQa˜šiç—zS0Dèÿõïf¨HË¥pgiz¢¬¡fOÞãç}Ì*A}¥ËpæœgÐIaNX9Õr¶y8%D±Ó(D _xy)ý¤²Ë*ó+ùZn£Q¸Ž¨}¦ä6VS( ›;ùœëÁð#‰ÎŽ†ÃÈt"£ëù´¤® êï5¸Vžf‚þÍy T6«“Ò;ÈÑ”£õ5¸QÍ’ƒÞÔx]³ÊpãÛÁ 9'öÙt’ÁoZëi~18ªPn[ -÷¼îÑÓI–3:¤Öb—«lëÜë‚ S¡:zQý×å2No†*Àí@~,öI—&\ -¬p~~Ég;¼6¹¡uõÌvo¼â o%ôÞ©šUˆ‚S˜Lh:°Œ¬a̲Æ_=ìûe?š]-Qö¸rî>|˜®—É3]jµ•<®ã”%"fÉÖ( ×ØÊ¥\z'{¸Öö›¯ó2RÕG\…9W%[ePãMSàò²Q¡iÛ‚òÝÃF×Ê—ÃÁâ--dÀ3WËóz…“4myc3>’:õ²YŠ”˜°Qá>c¬rR@Ó_xI{õðÀ‰ß÷»Oc—ï¾±kV4³é™Ð@¯Pá`)¦òõVAºi7sØøÜ‘«ôÉ’*ógh§^NŠ™'ðU“ãvŽÃöx¹ç - B§]â$9Aþ2D«^rs Ü®k©Øýýþù¡±:,õݺÙé¡l3ÉkÍÆYÖת«aí#öI?i‡"›ªt—e«:¹o#ß°@\8™V¯D1©Wq–9>棵1úÏ~EÛâZóxõ¾à_Îxý˜IsŠ -/T8ï¿NÆYí`7‹ß°K(-ÏyÜl³¨Fíqo|Åû"ßƘø,øD¦h|ø88XF~€MvBÂVæ^)~ÖŠ+°¥RCò*|ÀaòþØ݉¿Ècñ¯ֶɔ‘hŽŒIåuD°ÎT…#ö~ÍôQø45;Îmþ:T /R_éÝääÐz4ñÇÊxÃ+Åb¼÷¾ê@¨.“Rh®=ßÂ*ÝSÉ#£ÚIbCßLÙAʪŸæµ:)•Üqî+¼³6VnâÌpªß‹-È©-ˆ%\£ëÜãÞ½j×$˜žÖá|§j¼¤Êé‰íX³lR3!ö´œò ÛB0æõP-¸&-þ+D­3[îi ‡eÈÞÓÕB ž&‡VÌVغÁ^eˆr-Q|)!ׇiÜ‹0V¥æ<¯$CÓ"¿¯¢(ˆÊ—ú»ß+Æ—­™r9ñüðÎÁ³eu§ÁãcIQj*R²åê¦â AXú10œ½Š\G“GîTþîÃÊÃb*&ê'‡zbyl]Éí yÌWËÅIt–ˆAÃögʬŠJ©ô­d™ —ùæL§¬q á˜ľýŒóÔ§& K½Ê<íÁKíºƒ² 96ëýPJ1Œ$=³ÐË»ÄlòìØyëkÑÅ -CÿQƒ¿-HŒP;}f=Ô¦Þ†ù™žÚÏ{wö&tü/!ÀÄïl[ ˜\/Çù@,ý«Z UQÇøEÿ¯M—©¼Çâ‰w…5Å™Wêç¶ÕÃèßtªÁ¥›ŽÎÀº ÷zj¾6«pËàê3ÃÈ |õ£&ãR¬K$.íÉûÆ0ÛWRN.Ç[ø|E.3=I¦ -hBñ©ôÅAtn÷=oÞsËln–àPT²znÍs=7È[½ªÂ·”c pÁÇÀüâÿUZŠAoÏwŽe£^±^˜ó¤1;½ßVPþÙ…è™ÌLù<¿¬`Ã^¥l3Î|—(žNP[Ú¢¨$w€°—˜éeßÇ{wh©ûa WØå¶ÑÒ Ó°’ÍI²,ÔÿŽHb† -endstream -endobj -601 0 obj << -/Type /FontDescriptor -/FontName /PVCURR+CMMI10 -/Flags 4 -/FontBBox [-32 -250 1048 750] -/Ascent 694 -/CapHeight 683 -/Descent -194 -/ItalicAngle -14 -/StemV 72 -/XHeight 431 -/CharSet (/N/a/b/comma/d/e/i/j/m/n/o/period/r/u) -/FontFile 600 0 R ->> endobj -602 0 obj << -/Length1 1496 -/Length2 8632 -/Length3 0 -/Length 9645 -/Filter /FlateDecode ->> -stream -xÚuTÚÒ.R¤¸[‘àîPÜ!¸»$Á]K¡´Xq-R xq(E‹(w·âÅ)òÓžsîýï}o­÷VÖJöžùföþfæÛa¦×Ñç–³wµ]¡n~>q€‚¦?€O‡O‹™ÙŒ€€þ6c1`p°+Tü` ăMÑñ€Ót…Ô< ~AÿSq~q>>€ŸØ?@W˜8@ÑÆlÐ䨹BAp,fW7ØÑ ñpÌ?K›;€_LL„ëO8@ÎÛÙ@š6'ËÉv6€¾«„ðùl’N„›8/¯—— œÇæ(ÍÎð#œz 8æ ²ü& вqýÅŒ‹`à†ÿe×wu@xÙÀ@€l‚Â"< ö àáp€¾ª@Û ý ¬ñ€ ðwmü<üÿJ÷wôïD`èŸ`;;W7¨êpC@m ÂÁ°ÚÿÚ@à®ñ6ž6`ˆíàÏÍm@9]€ÍÁ¿éÁí``7œ†ü¦Èû;ÍC•• ö -®.. (Žõû~Š`Èî¡ì>¼uö9ÔÕ ê÷÷Æ µwøMÂÞÃ× -v÷©*þ y0aýÛæB„ùøøDÄ wÈÛΉ÷wz7Ð'ÿoóƒ?7W7€Ã PØôðƒå·ñ0P€ßÿvüç‹Ÿ`¶ClAŽ`(Ö¿³?˜Aíš{ÌùfÀ÷ûó¯Õ³‡ñ²w…B|þ ÿÓ_^55yS ç_Œÿå“—wõøq ñ¸„ùü¿‡LäaðŸiþU€Èÿ±êØ€ÿ¾Üÿʨ -upˆýÅá¡xÿððü{,Øþ– ;à?OÐr}˜e€íߣoÁ'Ìg÷ðÅÿÿ-€?!ÿ·¹ÿåÿ5úÿ}! òÇÍöÇÿ¸m\ÀŸ¿£ìx…¦ëƒ8 ÿ 5ý%eM=ØÃ忽ª›yÈA!ÿ*#{ƒìuÀ;§¿fèŸ.<¤‡€¡ W8ø÷cà~hØùg÷üáA?ôê ô §ÿy\ãa¼e¯Ì ]‚˽íï$˜_Sb;“¥»õÛmªÅxÑœ¨ÛòËÿÆ*^ot£kz„ìË·‚]¹=4©¹ d7ýoÝýBž£6!VcÎu÷ÅÓyG|éÕ­ìý±§tn0rrCw³ò©:öMéwîXÃW!ïÇ™ól³&(ÐÜ4˜DGÞøãgçcD9ßîéÔâ9±öb ýÌ–^_Mø.”ÀÛ)™(Í(hPψGYüä·“ÕȧüŠ ç¿L{7IÒåàr¥Ìsðl dT‚õb  ]Õžƒ3müë¹oá¬O¾¯'V—4XÁ´I+[¬bˆÕ‚ÏA4Ûmò ­çFÎ)Ô³bß?ÞÆqMvƒ;ü~Õº/ô|ᾈLi¾ìoXë0~/Ó#CíèÅÏ¡äd=?'žA“‚VŠBi7©’pÍz¾½A³‰ô =–¿¦â_-àã3EëB¤>Îõ?~P^w¤Õ¶ù°ˆn±sûíÕóä-Iw\®ŽÊ½¢äû_¯ˆ„ç½lÓ Îi‡k§)ËÅ ]¬Mt=¶eÜ7÷¤wixƒol u½6Ô^tãÅUªªÈÌZ8£Ù£¾#ùÂæÙ´baeU°,Ù˳†`šOÚ—lH8™ ¯™37çP­>õ7ßQÉ?Ñ7¸|Ç軌Ô5õ}hþë蓤Üâ½Pw#@BøU*$ž…~j-8ýdIŠíUôCt㢡—\í,uuÆøÐÒ^ßà#yFŒO‚|$ÒÃ{*€‚ÖÌEBN’ûÉÄlçUß,Ùkº7Rp‹šE’3ɈRí¦ÈLKŠ2Q†?lÞ<}›óÝ[9OÚûáIz4å:¸’y2)›~jKC‰¼Ú<;ðt­0ˆþ•C„I(¦Ý6a &Òšä+I_Í›äc=bA¥<úpnñjBVÂå»9<5üJ´™îµa$5D)K—ŸzÜÓj,Æ£‘®‘ö݉I•‰'‰'1¼%xÀ)G/ pÒ¯cý(&ÿÊûW]Éá­álìQëÀzÉ,Z~¾Ì´{É–—ÃÚ†«éÌÅ~§£ÅÜð¥ò`̺ºªª ™~Jk™‘ä]2l«Á\4ó·m'¢Þ:’Bü4'Rˆo—*H³ø¸OÓš`êü;‚¿Ò ÐÀédµ*ˆòšÑ±€s -ÚÉ»@;Zf‹%÷Ã`‹ææM!m!Ozó « ÕæwU‡+oH¿lÚÅPñ-Ñ|ø©©v¥™cÊW6øÆÓïéEÒ¤Åe–ãÞŸÎ H)uš”eðÝTg^âG?{¹ò€ºŸM”‚™¼rö',ZŸ96¼huÖÈ.m¾1£”Š§ª:LL_;×e܉äËæí»ã ¡þ˜Ë^*LJõÁ)fÇ$ÛJßjƒ”i\®šeݾ‹ i¹/ÆŸr¤·páötâ~½û<\¼$Ó¯žDfÇNñõÛÅŠÅ‘c¢œE¦díõ·îÓ_Ptƒ]¯O‰›­L¹öZ -óÚç“ßd ¼é¶EÝé5ì¿W¬=qÝ \ç7â}Õ'/%[}z½OÏ—Ðašçê{Å´5rÑÌÜ]þy´ŸÔkeqEà™ki× ÂêVFÕé+¾Çvž¼Ë\¼Žs:Ù³¤ÏçéEhûì"€ˆ[N¡ÖÿéÅR½;VU™­ì{Y,öƒBª5amð¶UõÆIëºvÒo]›€—ʪái7áBŠ®+jgécÐÜûáÒ-Û`<YNQPî2oËÌ7“ŠÆqm¾‹Ñ—¸”ÈëpÖ•ùĬ£$'Nk$Ç®/¯Á»)YJv L\ª-—¿t‘‘¨ðûÚŽÍÆØlbEHÞ{rª›[‰k sæ–{…àJp»›¥ -ƒ9%^7&zÇ…¿²æ„øQa^€t/&ã¬dÈŸ -R©,éØxŽúR‘ZUå ‘|1ûÀOËQºÞKTùF“³×Ö-8RÂo¡tðqH¹® Ù¶‘‘Ät^ëPÔ.Q…6vö2˜«UTôÃ$mØ^Wd„cŽ”…Ô²,pùZxigû+5¾Í(ä5„ âXÑ‘5kû½í|º§˜&/ö’‰ÚhªP®ÀÝ(µ—e¼(Ey®õbrB9ÁÍGk´ä—¢¼·k=ÄáÄ¥¨ðö"1É:å7¸ -JÖF;?õw3“ê& ]u>u¯Ž†1•Æ}bl½Ð›Û3‹…‹½@fµ^+§Å݃Í_‰k%îõÁÇÎz“èdÑÂp2-iŒ"X„¼ˆJ ¾Ø›LãƇÄ5^ _ö´Ålïó7´‹rˆ†Œ»8€DÏx‹¬}J_éV?ŽêO²Ð}ÛùÈQ:6 ;ŽÝ¶ÔœÛ[åkZ‡Dê3|ÔjVyS‰É©—6¹g+̸é3=ë!Þ7u´VOSãÆ\L›¾Ð¹>Å"*½Û;¹{u4¦Ö>¯òŠµ¦NÙLWv_ufÁœ¿~ŸœÙn^Ì.ÒÍÒv“ë4 Í©¦Ü1eŸ³é¬7è:f5/¥ñB­ oQÕ4òÈ°1Ù’e±j¶r¿Ž¤c•×iÑø©ë–æŽ,ŸgØ.vB’í[kTæ?Ãœ³)0ÌCnêñ»‰"ò\=ÔXšoÞ|'”xÊŸÊD s‘»?€¿%éüròj¶„Ê‘Ö"Ur1?;rÍ ±•õ‹÷™ÄƤWP ‹ñ#·Ãä12«ß;¤Ýä#‡b/ÛºE8ÂuR홸G-Î+‡Ç3X4$Ý>?"jćãø7fÔŠn_óôw'×s: ÷úú{†Ñ­XÕÈûV ¼È‰<ñoÅDGùqÒz6õ¢ËÙ&Ÿ^”r¢À+yî…£× =æ¥È𱩬þ³À㈔´ò+ˆ«üäNYâcºä,Oz¾«í†h`R(ÎÂÒõA‰Ò’yT¨Ã¥Ž·P°JD.©ÿ ã›Z‰9eÚISbAùSᙓ›ÍË †±æè—üÉÃiûvÂZ—b¥nÒ"j-ò·'up^ÔƒèzG¶ÓoR].<„´yŪèP¢2¼§1DœNIìÙS–¨kŸ -vpe´gÿŽsç¹qqŒF·ž¼%ž¼ äó®÷G«Ü)Ó,ñaÍ÷•–6æH£1ˆ_·”ã×= *þÅë\±Ü3“G°ht°«ÈbLÜWº>©kÒÄ„®²ô~ ¡ZPÞú8¨o‚gÆ”úXvJú–L`uºéÄÄmÓ¾YCÈi¡qkàB“cRdЬÉ,­"æIê³É¾¼‘ˆµ¦­Ù/V—±xôÔ]ß1OW߈%´ ù¬ëIõá]Ð{{d}ÖU]áOÞX }JV˦3ñuÄ#µjgÙ$Þ>†)±ñ)H 7“Î麣¼.éMznÀÚt”M ‘-çþ:½î‚€h(ð'št„‡¨R°Ü㧺ݿ†È¬ÇŒøò+ès¶SçëðwÒ‚úQô†°?¨%k΄¿…°Õ1aÒ6ƒúu7x]Ü´„ÕEoAÑþì]sÓ‹6Ñ*ÉåËfMc•B±†Ÿ{º·ºN‹ÑI £ô_“Mßîý@º¢GVÅ7Ý(Ë¡TgÞ¶+TªlÜ£ý•!%?3¨úìI°>:ÿ€ñd¬™Ð oÐ\7RéԔ{#4Pvçc# ÐÔ1U.™‘ {KýìQÉ(¹)YL„¬ppÂÂÒ(Öef¼4vVWXC¿¢Šó‹wkpRi¨÷|2Ö&O§ôìÈdeeÞ·ç)³n –äJFÉ­ÙôªŸ 8v‡Ñu o†uCoƒÌ»5U;$Y}–dÉ{´Ö„ƒG O(’(qH0”ÚbͨºT°çĦ\ŽÞǧuMüxŒ“$ÛŽ>ßû-9Ôö›æÝäË^‡Á¥äŒÝ¯E½k Ê%É„å[¬šðQŒq:cÃÛ€›óº†FÓîºXKìàñ)fç¡^z•¶Ãm•{Ìþ¡×tVWõ1Û/j†ůª5zæáÕ„<›gÄbšÁ(ÅŸcUp’ N“ ק¸¥iÙÿZÕq,›XN‘õ8ݦ¬6˜›$M.È.:râjŒ\«Éöó : ©á=ãœõÔÔÔÏyÎZЂâISaÝ̪ -ɽ Z®¦ß¨½É;ÓéØóKz‡®T™z(5ìf³m‰2í´«ýÕ:«á cÍíò§\ÔÃgž ö3yáä­–C€{§p‡O ýí³‰¬ë'—í{x†\åÈmˆ\öM°¸ÊÏÜ6íˆî9¶ -+vÈ ШíÎ}LºÌc{¹›[Y9àÍöýems”GTÔ‡m^9M`ý½mP);¿Ó‹ªmφö Nžï&ø§†M89Q€ó@ÕV¿ì¯ü耞 oüÍCãz4Œ´ è øëT>(ž^%DƬÄ÷$æíQŒtã–è>·Æ(K_þ/ÔCuki€um1s§uò»ƒ…ÏýðR™fϯ-_,-n^r$NÞê¬kÙ:Dpε¶-†g»2<Žyoø¸ÕwôÄñ‡ãÍúë8Z`îhšd±ÉµÏBciÙÊ5G+JŸãù½Œ‰À³Î8¡b•ô¡wS?Ó-;FÜ5@®5™©†û'8… #"Ò{ì_ -NÒT qÙ(ÍÅår" ;~Š‘z’¼ˆ[ÍžÞÓ+øFQð¯çbª&§ ù%™£¨«÷ßnqÏ™(í½O&èãù±Bß>ÒÅÀ¡6§/‚×>kJ[‰I½vè<‡KÃò}Fn[ ‡óÃfÔç¦L¢Y"©³d­¼ ¦§ž5úT¦„/ç(*4Rî…†ßlÉd }c=ß»èº -’Û)kLrqn‘ÁIË”ï -–-yKÜk»õŸ#;½êÁ/»º2£-ó W,AÈâ^€ˆÒ3r¶5§e¥Ù%¬×5[£¤ï§Þõß®€–÷Õ&üSš›MðFß+À¢ûÈ¿ôÉõmc;PÜ¢¤æ'$éH E3ŒµªŸ1Çä6à/®-¶¨n/,ÇQi¨P±%Ò·ûÿÐ(Zt‡âªxŒ?½×í¹IeÍÒ쳕ðfl|M'xB§?(^êlK¸?Ç܈P‹Çà•ÈÓ¾?Ȥ-†tRz?«jBo•f_=Ìé¨{ ɺBvm#0ßÊJpi±³ƒK¢-ªµt;TªŒŽÐµËˆïËNÉ·´î±1ôM:øª%ËØ[œ–'ÑC> 94œÞÌñL4@a·ÔG妀zÜraG™i5*‘Ž( ŸV^`›bÇê¡ê|;ÇÏ[¿[`ÕO#öïîLW„­ß­2¼;bÃP ³ýcXMêz_„+ËâNÂ`ÎÎÁC=bS…MÑ Ð¢kÔ M9³9Ïn}9¡•l¡‰/-cNM b÷o´cc¯€w¯è}Ã/öŸTNZi02®¥»m¬¤Î–’Ü1ÕpÚÒPhÏÅAùÈ¥ÀC¨ºHà5ô:¶çMq êy¥ÿ²6š+öÈö^Gï>µÌŽOzF÷ÖPÒ{TVvͪ×zìĦپDkL­–$1Îü}*·ôó†Õ[“‚W>C±{ÆÛãزí“â5k…iœ{Ùù¨pP’0sÿç³ø¨êY3?»†aL$“$óôDõGZE£.ÀtÀ°Ô#ä÷Õ 3Ö'&ÏN“%Ëû4K†_LÓh3¢E…NX F.£á¹+@±"nwÓAŠ,<ûÇ̉T¨Fï|áóšÔ¦dQ¶CñAU‹"aÚ¯2n‹Ò€^ÊzñÓ8 r³ø'úâW_>û iŽÒ.µ܉9.—;'ÄvÀYÙù(p߸!uìò•„ÊÎ5^·©².:À8ò¯2© žÇXWî‡XÉ;Y«i¿óV0n\Ûª÷”ÓøÉ5JÔ·`–6†o8Ü4–^ý¶ÍØs76Rc¹õiºLDÚt"BhmÔ3mÊè Ê ú ÊZør\û§Gãç/c6 ˆZô¿‹™AŽÓ¥ãÀHlhl†9•¸%|ãÖOÚ7ô£bûrb>‹³…ûÞE§ ògD»i/GR&Ä«´%‹Þ«f,¢?ʲ©™~ç”Åhh²µ>\’=mB®ŒvÑ$RQ»¥$2™î‡'ðç¡FÞ, yø#ÎŽÕÉ}Ë÷=™|î+´ÛLÍ‚£ZáÄ:c¸w¹òÍš?ðÖÐ&]•l'Uä ¾i{ïEG”Õ!âžÒ”L‹&.lWÿ ñ2¦t1J}m5àêq¿Tâ~ Ö”&–iŒ×iJ%D¨Å/_HeB®'çéÆx‡Z<™‘‰­å'— -J¨€Äo·FϨ5¢ï@Õ·i&m¿¸²e”zцG’ôT‡×ò’èÉx¬ÄQÔT:K£·Žu1œ¯®©ú§µ(ë57‡Ï®å²;FÄ…½a¹Œž`DgyÏÅ$ÄíT×÷Òîºå<ÎÜ—P´>qú&V&3¤ï 4úÏØÌ7–È -´¤«Ç²j"¦¨T§©Ê„×/‚²¯ènrbµ9ý÷7W'—³ã…Ê™^>Å=t¤M0ñXq‘0öSÜÈ"A+-Ó¯¤º„÷ ‘eZ&!¢ò>V@ñ$zš¥ ]Ÿ¼Ÿvñ–{⊮nÛ3Ùµ4‰Â ž|Ù>ím!.$Ýèæ…Ð!_râE߉zqS †”|qézÑeU;x0ã[ö'Ôñ ÇÙ/ñéjepëËF7⧌éÏ°‰õ}é.d\·D„ØÉ^üø(±¼6\€?RÖBœõaLÉc&ÅÓRcÑ’PóL#x“ý„ÏY7¬ÕV&>w|˜-q¼b9ߙᅜœ½>â×3TØêÄ -]ä#m;au¾Ëy©æmWñ¤Úß.Maái'¶î;ƒ±*,sž1´¥¯ûU†ô)ãðמ©n¤°b‰º7tèç3¾<z¶‘$ÛVÀïÀI˜TáÎÆ?ݶ"ˆJ[·¢N¶AÉ»²õåðñK2ŽâXþ`8y_;Ï]ÑhzK |¼ à-;¹€&6ÏÛˆ¹¬üY½­rÐ vq.Åz pÐcvñEuhó{n‚ªœÁ¦ €Ñ -2™ƒÒRèàç;&bøVO“¡Ë¤AÔ§úôu'u.›ð» ʼn3’®Ùê ÂÀ&¿3ÝO9º-eWµ: Dœ3^$½À|ùjˆà²’´¤p§ôê——-ñWR?ô‹W‘ª­FªpZŒãG ~ŽŸG$Âèà_*†çž¡»Ò­¤ûü¨ÊgJšøÞÔ±Â+9¼÷¤Ýg[d*Ú³ó,|DÇ(WÆêŸ÷*M+íÛ’ºYãJÕŠãGïóq÷  u¬§°[5‡„ZÂGí_¶ðCí¶›jm®Xâ@ÂÒnœOò»~Øi‚RHr†/£µf¾¡fâ] ?âæSôb,}«{?ñZUZn9h³çå³ç¢l¢Þ ¯Á#µ 37—“²KâèÏ-‡›=š‰8õîFZ Cé±Áܤ[Ôôd>HƒÀ¾ž_[ŸŸ1¤ ¼9VX! ½PiÝgË|ý5ÏÊÿÕ‰À©ÂÔ\¼Åf8ë²1TX=m -.EJD’ -æ’‹£f*/;x-S®TsîÏe[¦­ºñWPf~OzßkU¡ØÊâ¼mµ~h¥Ôþ“‰UHOœãêWtdC+º{d+è"Æçµq“Ìiz$ª ¬ -îù²1ŽËeº7½tpêKwUhÈW3õ.Û|ràÎÌ“k> P‹”üˆ¸ÿðSR9ðìTAãÐEw‡c6…·@zÀÄdI7”ÄÝ›ìC‹c4kèÜíâh¾PVúÀdT-*ïžqÕ¬U­[­Ž¤öºß‡px*þGé¼¾×Kânâ¶ZŸåN,餃νIDúƒ¤¹*û­£ífÜÒ«îìªãÊ<—ŶÅòX*WãúoÓ›gV"‹vK®¿ìª‹Í"êUyíîIroö3I%Ø~Vbš(EFîÙ™í -N0ýÎ*#ÑÍ ¿ühݘ:ó)4]´7Ò©9/Œ©†ÝØÇÎíUùya¹ªµþÔ÷S°Œ(ý;!É:(®›•ð̶XàL(Ç<ºQ©ÄºÐ#eKÄ}G§$N0‘pXÒÓÚ:rŠ%4bjø3ºh é[{£˜QÈç¢v £…ýºü~—]Ú ¢Ïö‹­»²Ð2yãQ~mÄw½¼gWœÑi-ñs.íšûˆÞ­F“ŸÈ&+7¨BåºÏO¯î–¾w¿0ÎÝæšZLüPœ¶|óbb®"–±· Ÿ*žvfÉ^¡ ®ЉÐb¨^.&á”N„³IÊ98;#™kjX*Î)MpU5¯Ó¸ùZš§«S4œ–Ë]GqkW«ÈzŠ¹‹=¢òîé'y©xÚ ‰bÑ/Q¸,=–Xñ|+¬(CØ%ƒ¦à(c+Î(ÈH­;{ÇÆšµ+ïh:«@ôröH¯\æ WQ­Ö—ꊪڛ|™‡½áBè®fùhhìW¯Þ€¬Ð‡li‰L§7žtÊQ"™> ïvÆohýô­ó -endstream -endobj -603 0 obj << -/Type /FontDescriptor -/FontName /JHJBYF+CMR10 -/Flags 4 -/FontBBox [-40 -250 1009 750] -/Ascent 694 -/CapHeight 683 -/Descent -194 -/ItalicAngle 0 -/StemV 69 -/XHeight 431 -/CharSet (/bracketleft/bracketright/one/quotedblleft/three/zero) -/FontFile 602 0 R ->> endobj -604 0 obj << -/Length1 1449 -/Length2 6401 -/Length3 0 -/Length 7386 -/Filter /FlateDecode ->> -stream -xÚxTÓ}Û?Ò")%=Î ¤»»$Æ0²Ñ Ò%%Ò! ! ’ÒÒ -R¢´€€ -øNoïçyîçÿ?ç}ÏÎÙ~ß«?×õ¹¾Û«±€¢#Òª†D @‚@)€²®±%E@a"ý[NÄaõDÁ©ÿ°Pö„‚Ñ™ -1ÔE"Z^pH“‰Ka PòoC¤§@ì sè -´(ŠˆCéáç svAcòüýà†ð@’’âü¿ÝŠîPOŒè‚Ñ.PwLF0FB`P´ß?Bp˸ ÑRBB>>>‚`w” ÒÓYŽ‡àC»Œ (¨§7Ôð 2@ìýMˆ`âCý¥0F:¡}ÀžPF‡A ÆÅ áõ`²Œ5uúPÄ_Æ:ðþ4ý+Üï_`ˆßÎ`éîFøÁÎ' -ÐWÓDû¢ù`„ã/C0…Äøƒ½Á08Øcð»t0@MÑÆ üƒñ„y Q‚(üF¡_a0mVE8*#ÝÝ¡4ŠèW}*0O(Ów?¡?ÃuC }Ÿœ`G§_0½<„L°^PM•?6Ñ¿eÎP4@()&& -@ ¾¡_ Lü< ¿•¿Å AH€4æÅ| ÀÞPÚÓ ðŸŠžˆ@ €# ‚8@a¢GLj¡N1ó÷„ù¬úÀ_¯=Ù`æˆDÀýþmþ{ÄBFúꊖ*| ÿK©¤„ôK$Å€$ý3ο:ð7úßR0ìOuÿQá„HþÓ½¿xÿa÷Ÿµáü3ƒÃg(€ûßô¿B0o ÿóüvùÿqÿW”ÿ•þÿ]‘šþ[Ïý—Áÿ£»Ãà~,0|öBcvC‰ÙÄ›šCÿZh]¨#ÌËý¿µšh0fGΞ €î ïý%‡¡Ô`¾PGâò—þ&†€ Q°_÷Æ ü/fõ n˜»…Ùo³YÿÌ«Š€ ­ °¨ìé ö#Â0s€0»êõýMq€ ‰Æ¸0ƒNHO¢_ƒQÌ0”f.¿”¿å Q€¦w˜uø[$ Á1µ@xa¦õKúJ ^žž˜eýML™Ÿß P¨/B´8‡„HG¸¾ˆè¸¨SdðØÃ_]ëŠM¶ˆEsÎ? pÑ!ÈQŸ~ dïXsgô±ÁBEÔÔ\ ïÁŸïýWy¡+™h,Õ ¥#Âáo'¯œ¡ÌŽHzç ñDZ‡)†LdöÖ¸Ö\iæs—‘â½"ÛÏ?_u¡¶­$wî€Ò3rÖLt‚b~×.ö#KVö5ôˆå}òÄÛžÖY^&š¦WØ`‰çJñtßü6¬³GÞ¿78ðXä¸H»¯V¬&Š’ŽÊ_‹54uˆŽ:%Oë% -‹SIôL¹"#™®Ä=ŠsÇ^|åÇLÑ`{ʈW“³žrè-ý‡oš½¢s²ù½+ÇŒv›¹&ß„Hƺð×=fWâ¨uÄ:É:¬ôáÒ0ðº–êÎ ËÊÏ-u°—šã †‹Ø~œ¼saŸ“¶É…K }x¦$fgöu2_º”ÉPÒsPhâ豺®yÞåüúlVeÁ’†8ýÔòºc¤7úÉ~ÀD=šlÑ™³Û¿“òRSôì-…¯ªº^{ÙmÇ“”Ÿ4lTkÐÞ¥.m¥ ¹0É–d&BVhB1o¢³•¥wÓR*R1d†œ”Òí ‚éùRµØ›§²a-²!À‡Ë“G7T ÷’Èë7nö~óMvð<&´Õ.è²r±/ÓãÒBßK†5ï&_~R²œ=Ÿ[)Pº6 ¶£,x¿À)áGâ×íӦà ņ+xlz÷tð†Ý³7LVƒ‰ŒY=“{}\Û¾MßÏp(FÔ¥†Ø"JàUÍI¢mÊï©cM­Á:§-„ž½oœšO¿ƒ¬Ï¥ïm†zØ~jÒ;ôøQù@Ip›Œk!RRd£F7„S2—8Æ,X…ä«ÄmðdS˜ðBËÅ©™h.¯½DS´kÍþ¨%Ž¢á»ºÇÑYã{ʶzF!­!È9NI˜šÄo‘w„,ôÅ^û)"»ëînÛ˜?`P Ómű¼·ZvÕBQd™4û¦ÈÂ@õHçJxÃN¸õVMkR##€Dë;MG5¼ÃÕÝáEØŽ$¹8ûn®ÇÂd”£š~\ºŸÝš4ƒ}úƒ3}# ΢ö“æ~°¶‘ è9³Z¾Ã—Òš‰ ¾h8‰ò…  ´d¹—›0‚ÑÛiÎç4q'OwwŸ¥!è.Ïá]‰a;¨± 6ªþhSéµIþV¡]©?<Ȫy+þÅÌ‹Ûw¾Q\Û¡gÌ¥³»ß|ÉòRà¾[‰æ}SF9sËôi^@àÆׯ†A`‘-µr8NF׉„/n5Añ4:UÃ\±¼·f]ºuÉleòšD¹m„*Ü ÙðxÙ»-/U¾·!E:=¯^vôÄàFYU×}¶ªoÍ9´SFûxÞFÊ %¸y†*.Dt¤3 -vüùC4£ydn·iœàÛŠš¶Ø• Ù>‹9”¥ŽšÃþnÜs‘pßÉÌqá{Æ#¦š NÚãc(úHâƒ1ËÚŽÂ}¡=ïWIÖ…­?˜[t8ô v³5£Ònˬp%j=]öN™ådods1-Ó•?mØ•_Kóà‹÷&§•]6¡‚6ÔÉÒŠõREmD2bM¶$œÚ¢ô~†¥Ñá­ú<$Õ@ñ™Ó¤‘7#Ô‰‹¿§ù?£<9qú=iK¡âòîTf³( ;{])ctg.è{Ïàb>J؉KùÄoe½ÎnèùÌs³DZ=‚^üW8ÝÇÚ1—÷Üôei÷¯«æL©åïàüï ªVh?ºa¿Íæ%'|€c½ÄŠ¿wþýåø§™ûÈö0Ûyö—œñ['Ç6ðŒ¤Í—¨VΈˆWBÉëë¶<9¬&[ý!`’ìµêƒÅɆ5šÐNc¶Bé¤O—^¶XƱDŠ¢ÇÙbJ²ËEÞˆål“ šì¤ú‰¶È©ó -J!ü1à €˜©Áa…‚™L¾GŒ90ÒWð¸bxy£qæÃl@%‰^EÖ¡ ê[åç£|Vëüš^1MØæVµÙÒæøPx7¸"Çæô“ü,?1öþ±ºž–åB.–òS?Æ»×® ßèó›Édc€-ŽÁ>«¡ÇùÍWÉ ç­žb篤K¬2?unz/0KºûQ$Ò4i¤úyHÓ« ÏoÒ\éöAy“RGF6ÕïsüÕ•åÙ8¡ïK|X?ÕgŽ‰%Œ–|bÿø²Uêgç[žáÎDÕ» ŸJ¹ªû¶ºZ›‰_ c 1 8¾$E/v3Ä/¼£%v¬µº¤ï/Ò!•˜è9]L€Œž4M ©±«ãru4JÞ¶i¿;=iÎçÉúJð Ÿo~bé—10Ö^R{ƒˆÒN÷Mü•½€Bð¶þ×iÞDýäYÚ¸|¸˜ÌQþ}½5.%w¸exdÿ¹›žy“eϾڂÌ'¥ †ÌÏn Ë}«FûÜK³¶Â ä@lÅË«=÷ˆv¬øq²Ïð@÷päÌ뽊{t†[mÔ5…~O(Ó’–¼Ynò=L..`îOWm‚$¾}±ˆ“ª;¸;/TsÆD³‹^ˆÄ¹Ô€æD-(7~öÖ;ØfS ".Ý#9 (È·i*Ò&÷ħón×qo¶šÍ~YS/¯†‹‡i;1˜Sù¯xØíËþPg ઼7e¡ (åî¾Ó—QuHç/ô®¡yÑZ§Ï*"°5Våóà=²ok@Õ}æ8z+ãï-'ŠCkÑÕ„1 ¯×èZ7Ó[_u¢á]õãW…ÖX&¡¾¨qÝ"¦HƒXÞƧPhER©Si–ÛRôæ 8ayŒ-a²ï0ŒÈ´pÚXÕg&ë¾};Öÿd[bp °»DÎñ§«ŸINBh_“™ûÐÇÇktÊÞ8+Ð¥œ¤.ô´åÜôÇkß2‰Q^ êG?lKÈŠÂ+C2ñî?–Œôœ˜Õ|Tˆt­5Ý×>£ôu-l¼É?vÁ窛{ñ…¸O3®¢shh…#zÞl €@žvwrÉLZv®âCö@B¤ñâ¡ñ¼ª¢w;F)F&fØ(Wʱ_ã¨ÝôwfŒá}†lÚÁs{+ ÷#t¬d¬y,‘4 ícèü>Á#dKI&8ód¼w·žXÇ,öáé럗î$Tpð8‰ Õž [©}r{…Ýs×0Æ`úMž³DæT*¶¨Ÿ ExãôØsž/‹L -÷±JÏAÚEnUUoâ\ßW2 €þ´•êÏ™ÖXľLÚW˜~æ𘹣õ¢uÁ¢˜¾¨W­éìïz&ˆ;s7vÀ:ín1S¸Ê]Õ·a©µj¼Uå_ëW²¼=õgÇâˆ[ÅÓ8N’á¼µ {R_»¶å†:r¤xÇVt˜œ°Ç¨û$S9Á©®Ò|LÔíÀè›<“KŠ©Î}uÚ¼;¡Ú½ØËfÍ\þ‹V'o™–xn"Î&n5Ìšt¤Sôe'/댯’jí¶U•_Y—I¡dž¼kîeýBµbý=0+ó.þ7Q³ˆ]§)Ó¸¡Aç—Ó²?ãs0¿gzEõ úð?¡r$¿”1'mn¥ñ1ñ9{(†ð×ñ¿’ t­¥PÏý:Kœz˜YÛôx‘ЊF6*ÔÕ¯g†þ´;ÚQœ)[7¤þÜ­ÄlvúýHRµ¨&ÙU–è‘< êÓ“¼Z;2Q‘óµç™î†{O”²?mæî)–WÝ^ë|ðbâh”Œeµgeê^Astqòäè¹Ó·7«OøçŒ -ÄN7:ðŸz—Y§¼åmÿ¸£©þGíiw°ï¹:ûφˆ’ Á ÂÖñ[oÒ_–Ó¾›èRËN‡ÔÕ礄ÉÞ©yåÄJ{ƒ…w´³R_hÛ¿?ÖH¢[aqñQŽ? ¤¥S¡OSÓýqþûgr¬¯Ý3 _FÆá4¤æ?٦͔5>]<‘xëF;›‚'ãw‘§çEN'Ø))ï,<ÄFë5–ôÇÀ…_·¸)jÚDóÐê^7}üi™¹ˆh¢KÀÇÏNšå,çµMdJẄ(`‘­ß¹ä|9(³:>Püø¼‹yŠ~¿îöÏÅJ¾tiMH³LáC?.÷=”L¶éçPIV».ì2ÃŽ¥¯›\¥z¹ê‡kxYr¤Øåc=®6·'"rZ…þò‹*û!²z‘7:$L h,¹åØ%x?=ês+÷¹@®Ç]`½„œÄjlô’$©ø¬·^؇w2$Sï:> PM¥)é{äºH·–M!ÈNm¶¶íBÎ;ówcwsc·¹·[K{qj)ü^KÞ®Œkž©pz\¯öÕô€­]{<*Š¯ªcÚ² *N)¬âÎ8#„920äè4J;»H¾ºÍm©)·þõ@Ú~–zû£â$¡†Tãó§k–L ´¦õv¡€Ÿð!#[Ë©:R~¢§ìjåo35TÍèå=Ž ü¦·R¬p¨É¶‡õ *EãŸ-žªk/¸4<Ôk´nÁÕ±Û‰ Q&<2¡ñ_™vº¹}Sf&3=þ2ô†ý=Ì·²*hN‹«ãjí=»}ÑM|²0‚¥àûå!ëzÂnNEग–¸È“`òÆcïµîÓ`íeó€<Ý™ùù¤„ -Ýc›oRætÒTÞ,É‘äYxëÒxJ,©7cË,(“ Ö4¥å XMŠc‚·^¢höpÎLm6Ÿ‡§ÊNYÄ]ߺJmì‰ ñ ÑEËùÉÖFñn„:(ãt=´%éD0(zÖ¹š/J3.OnÜ?=_(fÔ ÅÞ /4HãG£É°Ï¼Ôý¥µï-L%0K¿ôâaûÜ ýýqFf¯wçèÑåWå‡ òÝZáíB©jlb¦‚u@¹m|ìS¾wÚ†3@:¶‘™ª)ÙÝÐ/¨Ï+ûá¾H-›µùJÖ7>—búïƒ几wGƒE)ŽŠÌÖG+øª)J^V×ô\2‰Ç5˜¢ÂržÏU úmoô§˜Ä+‹^ª{:¯›â÷“‹¾aOŠ~ÏX—ÔÔGø0ã½zåæ‚Dþã’ÂZ|]ï­UnWZtYøÆ*€äËDâË~®Í¸Í€!öó;‘ú )ô1ñÏkŽnYwÑNf!õd\ï~$¼æ -ÛîïÕP.öH±EÞ× ~™ã–Z€&ÕËŸEFmPZeßcÖŽqŽÆ­øTÜ[±MF©ŸgR˜åŸ±q jÚj}(z½q쥕—KtÂrÕ/!)x5WÖ¾í@ï­á Víæ“'-á„KžZ´ÈM"œOojªmKÉ÷¢Ó’ñMõÇ!ƒ¤®ÂÊîÖ%ªôÅåBÝÌ¿»•UtbZÔr…¿8`*¥É#£î•1-{1¯·,¡ƒtt]FÍ“ŠGËgße ÿ’9…æ²Èp¤–äS¯?ÒÛÄ'ÌvŒ—°9Žwo}"Mwkð y~û|"u‰#½7Ý#Kì(|Ë̳k¤åéçlÖlÕ~ƒ'âjòÈ;ý®d’ëÇ5l¹¯œÓ”âžÄ,$žJ+Ù&éW¤‰|ëæUº%Òî…hÇa¹ª9Hºó³ÀNzmÿ–ˆ%‹½gÕ>,H@’ÚP¨¿dK·’/¿ðjhxgº®é3ùžË&ŽM\©ÃQ÷Í«Ïí;Uv;Â2Sc™ƒ|¸ä{hÆÞÊ:뉼ú:­Âë -}…bÝÍ°•Ï$èÒ¦oüð¨Ùûô­BS}ǺfjÔ#@ÑŸã|nš[Âæ’rN™A/ä“ýͧ"èè檟m…®•Q¥}leO’çˆ -††­©gtâ\ -°-oS7ð, EÅݨW¯Óîrh¤ÞÇâ¯öuOÜ©ªÞ¿enøƒyJYç´è$¥…Æ7Ëç懮R¦Hµ–•\v4RܳçˆTH–Åó3—ë>ŠÙ”ûžR»í§ðqàg«éÚwÂß)ôiHA2dü”Ä+ଜ¾ImGx -Ño3 q—;½6wîcõŽadË ->çò: ¤f•[ùlL íëxf;û<ýÏl¶@ÀKý¤Ö:ý¹ïÂäFå½d¾¯?í²Äžú(9O¦¬w\_µçç²ÍWÂsŽÎü¥[ë³4ýfï«Îã½݉õð,wÓ%~©€¯Ð åìy*’‘ï‰EŸìç` -Ýçù$äa4t±²ØSÉvG¸É‹(Kš*zÁ׿X‡*³:æ¢'¤ªo-ûšõaÛ!ÆðýéQ1üvëÀ ™ŽÞŸÀ›‹|%dý!‡ ¥¶ÿ}=ªÂ¸ˆíËsÕþ ¨™ð4…¬.-’’‡J T 2dö¡XjšÞtQxªEn3ÿ:¬Ûмíi¸þÕש”{¼úþ?Ú!-'®ô*KÎËÕw ”I{;²»â·Ó-ïd7ž]¼>ÚáWEŒh®ªÅeåÉ_¾‰Ë^#±£õ„®•gÛ±IÑ´ï®4"ÕE¾AP&IÂÇÆtœßòª ?‡·<»>Ti•1k„¤à…žbëÕÜï–·½Çu÷É¡b¸}‚¥‡KJ{ÚÞÇ2aB™™ÄúnÙî'ñ™FCÝE\kÂû¸¨”“k¦€Ìš¥ knw+42ýCòÊŽøHU×jJaþÐË®E˜Ü»<+ýâ2æ§qiŽmŽj³Ý;[UÖ­À#Jf-CoB%.úûOpƨ8Þˆõn¾ùT«ÅC æLû‚Ϥ÷8¶²ç ì«#j$Á±JÈi;×û®ͯâûÒÉÿ±-8÷ð}­ZJ5™FM«*F2ÿu´¾Q¾Ö™HS~ oƒQbp$ãú6Ië45±à¾€×Ïû’b -"®œûë8Æ“åúÓ+Üò0Í Ç0êz˺}µ!åüì÷Á -™cÄi©dwäápöÛS¥ï·6D=hâX|R"úø¢Ã_ÞÎÀ¥Ì¸ËÃ2©ˆò»ƒnÏ8±§¬¼04Xñ‰éq¶Jñ|Ðmzø¢¹ôÍ´§1×b†înãã3½ô Å…œ„gv‡vas…=éøÉïgÖxÒ;:5ŽBz¾¯KU#©UšR]oÕ_Ñ -vh«qÒVÄÁÂôo’kX·ÝŠž ÷DíÅX‹¸ë©Þ6ï_•ÝÍÎÊKs¼hWR-xzöü“!*÷ý²Ê¦R¼bvçz0ÖAóDõ’UëSέ·ö=QÍóh´`\­Œxù|ˆ–Ê™±–;RÆ6SáÒr¶ÏПŽ—ßâõº¬îè.§œ S†Un¹ЉÌFšQŒqø|Wä]_3ªu9ôà»p²ìÕ OÏÇ´ü‡ý%À=_Â(‡ÍÛ®—/}˜í®ý8U´©¹ZûjiÉ$ -OÇ‚Ev­ÐPÁŽ]\Ãìæ—Uöº·ïϱ+„4éùÿƒ,Q -endstream -endobj -605 0 obj << -/Type /FontDescriptor -/FontName /ROGAYD+CMSY10 -/Flags 4 -/FontBBox [-29 -960 1116 775] -/Ascent 750 -/CapHeight 683 -/Descent -194 -/ItalicAngle -14 -/StemV 40 -/XHeight 431 -/CharSet (/asteriskmath/bullet/lessequal) -/FontFile 604 0 R ->> endobj -606 0 obj << -/Length1 1394 -/Length2 5926 -/Length3 0 -/Length 6875 -/Filter /FlateDecode ->> -stream -xÚtT”kÛ.Ý(ô €„0 -Ò! Ò‚Ã0À30 ÝÝHH—H©€RÒ¤„ ÝÝ%¡À?êÞßþ÷wÎZç¬Yë÷¹ó¹îûº^vV-]^K„TGñ‚øøÅrêºF¢~~A>~~"vv=Êú—™ˆ]Št†!àâÿ+@ £Ð6y0 -§Ž€T]ì AHD$*ÎÏàçøw )»Â,ê|UêLÄ.‡pô@¬mPè6¿8!\ÐÇ¢~§d H ¨ƒQ6PtGØ ‹€À (•à”°A¡Å@777>°ƒ3i-ÅõàCÙt ÎP¤+Ôð 0@ìýƒŒˆ gsþc×EX¡ÜÀH(m°‡A pgt† ÜŠ ›tUÔšŽPøŸ`µ?Íâý§Ü_Ù¿ -Áà¿“ÁÂÁ ÷€Á­V0{(@SQåŽzÃ-‚íè|°+f¶@ü¾9 (£ £þÏ‚„9¢œùœaö¿ •AOYn)‡pp€ÂQÎD¿î'CB!è±{ÿlÖŽpƒ{ýu°‚Á-­~°tq>…Ãœ\ *ò… MDÿج¡(€0ÿC!1Ô u‡Ø•×óp„þv‚~™Ñ|¼Ž+4¨Ì -Šþ#òr»B(¤ ÔÇë;þ}"–0 -`µ†Á‰þ©Ž6C­þœÑËGÂÜ&ühîü¿~ÿy{†¦—%nïñOøïý5tU4Õxþ þOVáðâ x -ƒ ôCTLàóï2ÿÀßà[µÀ°¿.ÇÿOE¸ððôðþÆáú-8ÿ’ àß4h.CœÿPß”_˜‚~€þ¿ð;åÿÆû_Uþ_Ôÿï )ºØÛÿvsþöÿn°ÌÞã¯4•]PhY¨#Ðâ€ÿw¨ô”Õ¡–0‡ÿöª ÀhyÈÀ­Ñç ññ ý±ÃœaîPK- -bó‡H¯ÝÇj!œa¿¾8è,~þÿò¡U±CUœÑ ûí‚¢Eõï¾ -pÂò—ú„E`$ìAÄ&™€°0À „–©%Ôý7¿@>8…N 1ú¬H¢_kEs舄¡á£ÍDÿ* qA"ÑÂûÍtß¿Ï¿U…ºC!D“ãÈ£`ÛŠà†ó27ÞÕ¼ùŦˆ8£ÎpaÇÄ+/5üt¥'Ùç–¥wúR´¾½ ÷fàÞ;t7mÍ ˜KVÎAa(t.Ëðæ~¾8nµ†2["è­‡DS"–É÷ãµ™n?7Á1¹Ÿh0þ3D´MpýýZþU“óºñÃm€ ð;k2*F&»i+ʈ•mÕkdJK4IuÑSy:t…‹=“mˆ¦»ðX6‰MëíÉìêLX8fRó¶êPU}Ãp¿GëOO¼Wì’·zIš`,p(¬”²éQÔß´Öt¡Tµ:?‘ä:è¿ 6bËŠÔí>¸Ó·ÛÆ)—3gåt |KCó2ra½5-α^6øŒEû½°ü°ñ”î´Z‰·¶È,4:ÿ«Íñš©Ý -Š;rwí ×&Ò•·×1ÆeÝä/ñ· 2p?ÜÇPX7YT7¿TV? -ïkyË¡\´˜rÌž7¶¨VøBÞì—…»ßg†˜Z©Úì}E­T¦»À?czmœ9þr¤È@ÿZ-ÓÄ}$Àù$.Ê·¶+kѤUî5·úÎ_³‚X—ªƒ¯ê!-ŽEï,0ß­öˆ!\iX‚þ^õf6Ðd4Mè[}‘­g£§ÓÂ0󼤂ê¾À©<Ï­î‹×„˜©¼?4”_PÐ&ÒôîS€‹¤Éå¸ ¢Èfý0~Ž¿aU'=¸¾¿Uæ’z”q#]ĹçAA_[9?zdsÜ ÉrîœA…³èÊ] 8j©G»Êdû˜»bñ"T–ô Nos)®xßgè*9^ŸÕâN…Ôt0“v/-âU5]¿¶y0_’6äßÅ~ÛâõEÛâù ˆ¿€‘ êP8ouÅÉឦ¸ª-ÞlBVXäÔøË _õÔ ›rƒ–kï¾ 'ÝX´{NØ -š¬63]^/`în½ 5{£öÕ{ÎœPT²ÓÊï¸ïp{g,°ó+á{&¢ÜJÀßâ‰VóÛi«^fÍ™øç2î 8ž£}ö$­3"¯f‚Ý}4fÊ»³·§ú“!®&ëf¡‡!|Gw±.®!8®Z¶¹{i7ãûÒÁäl‚—§EÞ1B)î §ó$7}‚ÉßrƤ¾?†ìêôOÃEm¾¥ÓYyzIG>ée ¦š¤»d 7º¨VE#ŽzûÉš_î‡âD¯ íñƒ¬›Ï>“f%¨RÉ’ºÝªý }Eæ#Lãð# î1–ÔOIN*\x·,Z£à'õò6ù‚¶_z–ü5‡µ—æ -?š¾ ÅKÌK­Tê˜Úà¡Äx•O¦8ÂÔ¾|Li'¹çö%é:ÄO …eišBœ9¤Ý›O?9àÆÕ}å¾%JàôØñ.æñN69g-5nž5ÉPýÚ¨ý„Ž0:›[-EìÃRHåhÝcþ˜²äê×SÓÖøÞ=eŠåÏõWíö“(_$ ¤fdÔOÄt…”Þ‹dégÎú¼énÑù<È(à1añçl8Â+{l”¦k|æúÃWbÇ–ÕCQÃÇ•Ä¿/÷rñŽ–®óí,©{kéêý†"¥ -ý¬äñÊ'›²žs>FgÐ>ç§úòp‡$ZÆotçU¢‡e‰qê•©÷¹Â¼< ¯T¤ß™¹µYý0õ}}cÆè›·#¯S70Fcýõfi(KspÚ œ³õÁ÷–~€©`dÝlq×I´ØìDP§–{ÜLã¬׳Bźi«wK(ÝuÕ -•ú,òN[yÂ'n½¬µ¤ç‹áGf¨ëß‘²ÑöüÒ„õHôtmÃpnû£…RD·?Tqé~zàÂöl'ú~)tüi°0‰kqŒä)=¾Ï›H'šÛ I%ù¡`ƒVØ¥§sÓ“ï]²À\Z´×õŒ=þ4™œÐî'¯‡>ô_¥0%¢x}ôÙ6kÔ<ò§¬ ¿Žæ]`7ŽR ÍŽ!•ÖL¢¦ö—} {ÇHè1-%ÚÉÞ‡ÉçÁhQ¦æ¡e7¾AÍÀ·9‘ñý…±{·r -ÓýÀœ9øûúS ÂRò'jç–´}.é¢!8â¾ìÝ/¼…®% t€_ç ç¸Ø07T¾¦,ñ#hì|³ØHãÅ ÈQ<Æ*\bgåØÉþ’$h%–3n¹iôS]'ƒwóÿ[Å 8u&Æ}£ïJnÃÛ.{íxæÜ17+Ì•†¸ïÝJ%eŒœ¤®LÉæMvö“UÅ‘ri9¯‹Ÿm¶&×4{ØÅ­¿2|^„Ó•iÈÔP‘Ïå•âdábyȸÁ·¡ö¡Yì á2”ùºmHºòÌ[¿×á;>®E‰ÈT@òvÜFIq›cPüúâÇ'ãwÖd¡’ - ,Žú,Â3ìråéÍí_n’é½…‡Ws;‘Õ«q$øä§ ë÷®Ø°@]ü«J¸˜ÌÔ'fÛÆcÉVªŠ<â\ζž~/“S”/X »U±Çô×ð$ÌVßaŽ²eæ­lwk–Z×|~÷~gø]Ç ÉâÊå•:OÖW£¹˜$R팻ïvzP™SÞ½ý§±´x~Ÿ©ï¸Ë‰¤Z$UÔ-²ìÛ÷·ÜŸaâ†9~¢û@Ú¼BÌÄZñ,ò4µøVg·åÔö4åF`¥`(w·¶¹Ã©¶‡"üC”Ò›À4¥&a2\ ™ºÓí •b ‡9_ƒŠåÀצAw:w™drß_¯=#¥)1ý Ÿ­€’³rõlP„oWG°1…É×_ùGö}ÏðE²­ÅÝ.ŽÊ—îß W5JËäcK¼àöàÀ¯Š^ÄQ}bÃcô|u ô·«ãý~§œ”FDÊÊ ²" +œ"ÒÈx“Mj×à¿"Ïr$òíuº$ R$úܶ5Áj®†q[( “›ŒçšI;LF{o‹ŸAÛ{:9¶žá]õ3ÃÅÀéâõ¯Q$s™Ü„/;Íqtæ#òŒØ±ª4„?/…‰ìŒšï4Z%a—„!Mèu•A3Û<ƒýÄúΊý;ò[ÎJ7h´PÇ ±pžQ€ñLœp ¿qÍBà‰è‚³^!5¦¨Bx<|*Ä<Þ£«*Çóˆ°–ÖfëñM‡Iiv"åâ0i»Ý˜\ê,s‰ê cù&1Ɇš5ã‚Æ€æ•ú–©@eCá’5sD‚O‡ô²­w!Á£¥LMOÆ–*³—6]K-Qiñ‚ßêÙDRÅ"}­¥Í©Å¾_zœºØ|sgŠ_òöoÆg–] ;Á[”µÚÖŽ²k‹™t^FÞTˆ’TGZoëyG;ú¾°C)QM»…S h ÑlXÝI0¤ûøQýt~þ^¼‚f>f‰?yì›Jâ°¹h­iÜÄâÀ(eL‹G÷…™¾œ~ø4J¹;F"Ü&£~}¯}þ Ö‡/º˜º6m‹©y %רz'^yø£qÞ£ÕÊ©jÿåó¡wê_q˜ý^š_‘U¨ Wh:¦·ä‚߆Ên³w}{øæGÞ³-cÖ9êoS®W~¯²ÉqÊžD Ñi9à[Œ`}¡aŸ.ìôÂãb"t®JYrªS~YzŠ•û(Èö¥ëðÏ^{g;ó^Ó¼av<Êšdû¸eóW…7‘GšýâJ4ûÑRïJ8qgçÒ ááŽ0qÚ5áÊ_FšÕ tF¾ïÎõ›}ËåüfI*Ž6°wÙíÕ«ƒ¼b«ƒ¾aÜa .ùê·.üêVÍ(}ÁÔp–1©é][ñh% )¹¥;tÁCqzg tðŽô@8ÁpdShh¸moã–H¯§^½TÓfFÍ”•ÖkÖ}|äÅR~Õ’Šµ ùöØþéÝ!Vão=víÁR¼4’ ø¯T>Sª®ñêÈpk=®auiŽ8¨ÞåênwÅyMÌûxuÅæùÃ<$µ9îý#ƒŸÈ’Ìë°J‰sê>ÂNq5Iš=yÂ5•ùSþ¦¤ò€Ÿ›r,]™+žSÝÍÅã¢CG~ÑSíü®Ë:ô&Ï몘£žMurÅðÔ‹{_¾x g HFT08Çz aƒŠ|]ˆ¼u³s#Œz`Ï7'=‘Ší^¶J -fÊQïD8ó­}âÔG&Çhôy+>pŸ_X:Q –›lE¶› ‘†O„“­4`'=hi;âI§ïë%”ÃÊ$ŒÞÀfS Ϫåƒßnóô´í«¸‡]~[NLˆhŠæÔÜŸgÃŽ• 5TÒ[7Êxw—ƒ1ˆÉÈë»2Ô¶ñðÜÔ=$G3ýÒ­¢Ojˆm•†yõÌ º›)o-æÜ)LÑ3îIë‚ 99›kƒÊeÊ' Ì×d‡¯o¶žv”j"™6Vy#yÏ÷_£ˆ²!]ì/ °u¤Eµ´)‚V…®Ò>êàFª_ˆæ7N2yb„Ü ª3Ãá”n]ú¨A§ -£t Ýÿù!vøQwít~Å -7‹àh‚ìÍ{¢rßµøÓû9TÞ 5IÂw)÷}IztÔ ”B©¹'/r—cW €$¾À‹.É6`!½-HÊ— -OÞz˜³/âN_¿YÁsè«3 3 êPRa$ëõéìÙ#hðô_—éOÞ^Œr¥C»VnlaW²ãlªO“Í”ùùZÆOì~š¹a‡àge÷jX//&©ç ™ˆL¢‰t;¹‡"êm¥_ªBZ@þï=éøÚÚ.£žŸÊ]æ\·©ÛYi?¤#«³ðQãÊÄõ‰Þp2Ãl¨ °(Ç~þ†=œÆ¿£¯©,Ucm«šÛIÒ,j7쟪¸M%/9~QÄBŠyÖ¦Ò÷λs0¸ƒ¬æóD°l‡÷Åaا˜/ÉIÛO -?¤@·TgÖëxh³¶éDcíãŒsÕGŽ ¦*Ee„Zõµ2Ë2³Õß>Õi)KîÀ÷·Ú ÇŸæ©OŠoŠ­&5ws×» öyÜp›°º‡ST1ʵHâ£O}ŸÍ¦f¸Ü­å‡Ùd”ˆ-ÆÄïðì o$ ›‹¦+(ʨ3²ábâ}‹ÇÖ´iF¢4áGV¸„I.FÚÎcR·#®±ö€Dfó ¹?áT3'×®2—µäF«×üùðÇœºgÒ -¾z~Õ%œ§×‡“†á÷«"Ÿë]6/-ö¦¼É»ÛNØ#ó˜,æ¯Ë¦»¾È»ü4¿¡h;ƺÒr™§¤ï‘bLEE¾‰ë%~†ý¼”q瀳ßN°Q -,ø§‘h¸'ø¸Zæ‹w%–ÏœžlÔf–ÎÚÁD© æø¡Ì²l­}۰ך³ý]ÊÁCЙ(`yЮw„Þ<º2ÌKq§ªQ¢¨áÿ•3ƒèå^òA 7¬©Cr³+hFQl‡»"—j]R½”Á+´Å¤h ÷–hr`ps´¯˜ú²˜T‰OTXFb™ -¡¤&¨UêÅf+õH­¾‡©ŸÉ%Þ¶I'r“=&¸ÝYl™†úæ}^å•…Ñ£·*œ«˜hÚmÚÎ’Ö*Zw€† Ξæãí*Y}f_ÑÕüù¨T,÷F(ƒšêZbPk›W©h¸ã±'AóaÃ`_ÉÁ©™?’ýx)Hn|TUU5¿ëÜlÝ°„N.浕XŒ²}æ*¢È.)Ðn›ÎbÖ¡ZÝ?î‘·”3É ªRìÜRöxK•¿·@0·Œæwj^ή¥ªM^2Ęø‚µÛx3â‚”žŸ¾ÓsFÆœþLèvŒqû3=‘¹Ì½\˱õrÓ3©|ˆx{C¼îÉA‰çæõ!Îîfô[,ÊçP‚™H÷^8ˆçQc$eÅ—|ÐM–pøV§{)¤„ê‹í[BŸwÔ‚7R—{"û³ë$Ä]OR´mNíIŠ¾uÞ$2g™Õw„ÒEläð™™A|¨ùœ‹Š ˜ÌÆ3•¤n¤Ïʯ÷ú Tû—O ¡'ÄÃÉ#8Ñ^ÜGÛð.wêϽ7®-É´åƒk¯…z<¦‹QÚÀ…£÷ç{ÍvB/Ö±&³?»:=1_Êj¹à](¶«õ -\óÏ{äÏ»Ý]øÖj*m2¿Kt1äœJOþŒúëê<)’RìÕÄ'O$¦LRé«7¸íöyÔìÞónøˆJ‘B-FåÀ.Æ,?Taà–äLzÿ³R ÞV»˜†V;r¡ï–›_S7Š4«\Á2¾‡GË{¹/ ~ê7fzHcR%Sø‚¤ÈH3™»îëI ev -¥¸Ða›¼f2àmw¦f‰ +®U°ºãe 3%º;@> endobj -608 0 obj << -/Length1 1612 -/Length2 18542 -/Length3 0 -/Length 19380 -/Filter /FlateDecode ->> -stream -xÚ¬·eT]]³%Œ&h€à~pwwwwwî,¸kpwww $¸»»»;ç}ûöíq¿þþtß{Œ½ªjÍšU³Ö{“)ªÐ ™ÚÅíí@tLôŒÜyK[cg9{;Y:e ¹ ௑ ŽŒLÄ h²´·5¹@S€(ÐÀÌ `âââ‚#ˆØ;x8Yš[€”jÊT44´ÿiù'`ìñž¿;-Ííä_\6ö¶@;Ð_ˆÿë*@ d˜YÚ" -ŠZRòJ y5€ÐèddPt1¶±4ÈZšíœT3{'€Í¿{;SËJs¦ÿ‹%ä 08;M,ÿnº›þqÑ€N¶–ÎÎß–Îs'#;Ð߀ì–v&6.¦ÿøk7³ÿ!'û¿¶}ÁíAÎ&N– À߬Š¢âÿæ ²0ý“ÛÙò¯`oö7ÒÔÞÄ埒þåû ó× 2²´s€€î r¦–Î6Fsÿsp²ü gK;óÿd@ pš9™ÚÿÂüÅþ§;ÿY'à«ÞÈÁÁÆã_»íÿõ¿8X‚œ6fôpLÌsš€þæ6·´ƒcøgP¤ìÌìLŒÿ¶›º8ü‡Ïèô¯Qþ33TI™ÚÛÙxLfp òö ¿)”ÿw*Óÿ÷‰üß ñ‹Àÿ-òþ¿‰û_5úßñÿëyþ¯Ðâ.66òF¶àß àï cüsÇØ9ýÂl-m<þþk ðß$ÿp¤@F›!dgþWFzÆ-Å-ݦŠ–  €™‘ÍßNýË®fg -t²±´þUô_ÍÐ112þŸª…¥‰µÝ?­gû· hgú_Éÿé_Ôäd…”µhþëú¯(Å¿ÚƒT=þûŸ¥ÈÙ›þ¯Å?ÂÂöîOº¿'Ž™…Àþ7!'“÷ÿ!Û¿`˜þs-gr²tèü-™‘é_…ÿÏç?WzÿFÌÎÄÞôŸYQÙ™þ¯ÿeøÇmââäôWÕø¿ÿÇú_ƒºMà–ìMx‚¬R3Ò@µ˜9ƒc¢:¿{˜ ƒJT óýªí»}Sö¸* ßj‚é'¸?Ú<æOÞ÷¤©÷‡z0l(º“yxÞ$T½ù(ëä4û ú%ˆi§Qž—s²›PÚìŒêûÛcJÊúÅo_ð':Xœ`.©üH\óýÐH¾ù˜¤ÔÇ ÿBnû^[prJžpôø@Ñ?ügp ûºw—&;–ŒÇÓ'é„(äaèt×`òýâÊá¶Í£ˆ\ IšØå="¼Ôjò„ àÈo¶Â"K›VòÍî•©ä`0åù.ˆ7QMünd¼\ÞÃ6Â’±Qmµ48¡émCÓf´˜ó±¯íGó»—î¹G²îÚ5‰ô,D°ïô öí_·KšpŸ¹´ÿ´ÉöíY¯q3O÷ƒ-¼-cº¹•uZe1:ïr3=”ŽIÔ5mzugÇRÍ1TÉÄ>á­ÑÈÞÓ†(½¼Øý8táM@ô=§ÁEZ=È4v°©u‘´Ô$ëÔäÏ_-¾½Íæ±h2Tì>3¤'ÙJ£ü¬YÓXÂ4+‘V›;˜¹$€.§T…Úøð}*5 -¬ë¦ÂÕŸzß_y‰ƒŠæIP=o5¦¼‰Úd&çãÁœçsBÝ kB†ÂxË—£ÌK8ÑøÛýâ§ú¿‹‡ÔöDS˜ÎùòúNñ¾UzcŽ"OìVÑ -+šœNNâ,p}r¬¨aÀ”LY{S\Z+ z($Þt˜¶žK“¡çÇÌ}J¼áq)-pš*QØ# ¤´ä³ } -û}¶L”F%pîz“­ªø•„ôö}j—äûŠÕfjwK±ÚOßúƒUÑúwMÚÌyà¾ú-F Bmz¬@‰ -ê5±–hàÕ•zK¹œDhDô9ˆŽ¢&åªÿYÞ[À䡦–sDÆ[ãMPÜwÕhpü3éà BÛËÅ|Nä)ë+;Vó§·öw®ìÐ7˜ºJZlÜL³N5ª0iýîFjNJ_?<ÚŸ!ÇúÈŒHá­üÌ}¯J·ßší™(Z%š\ÓœÜõ­fxý‡0–z]Oû³ŽAi¨Yi{j“¨~@áÀd»¼b »¼²8é!ßÁÖ· ¼%«¨o5ãø×æm>t‹ÉÍÆL³„STqDZk7«`äÏyJ=NPæÑ´=EoGdêR—SÑ´ÛaÉ#€M‰™ÍpÊöbæ5‘©‡¢aqÆV”âªzSQþ–©‡¾0>lu£nÜöÏQ¡ùÞ˜‹ ìÌ`z¦ÁÍ¥ã³V \Ò„ÝÅ—,9j·þ^Xt„µlá.ðû@‘®¶>!ao8¡¯ëzvD)­Ša ÞšB8+f’¹‰¹¤âH–Ô×ND àÈ´{ñ3¯2f'™„Ûo„îNs^¢ht¿^×nl“8]è)%­:ÇaHùÕ©#£|{ºÙPv1ßqN0΀b+٧ź?ÞÉÞá7êÎ\ -<–ïìð¾´šU™—¸ÌÆ«;]6í]$ù€cRïG(ÊÞÇL ÉXfykG³zË:P[ôÐä-ffßìÊuEq 6q9ƒÖÓlˆüG‚´‡°ðqæúÉÏ¢Æý}«P])r:ɱj#CÓj•"çxìQ®n‘ý‘0´dX¥E3ÃÞ•‹• I 8;¯ÓX«©ñoášB“ÝÇ+ö~cb‘pf£ÃKü\8—c±¡ÖŠ€äc¤ñ^Ä"ܦ!ŒgdŒÙè7`óœ‰[ -àôh²‹îÛeÈe<ôëÐdįrò¬e0䊈!xE‘ô{x§mGì|ôå´oƒÊ·„†0* I”ºJAwåHç„ýó²xÈ–·œ¸•Nv&µ²s^,|~ä7;Ô.Ù¶»óņ>à¾[ªþ¸ü÷µ´I¬ÜúRN¼9‡Á ¡ -Ž±‡ßÁ³ËøW¹ÛDSÄ1‘¯L¸ÑïÐöƒžzÃð‹,³f¦Dâ™+?®`µõ/pÔñ¡µu¾/ˆËN\ä4"ìI7[ºÛ+ ]ßJÏ:Råú´–ÿ¶aLÜÖâ2ç3¥sb²†H)ZuÌ-‘[×GH¬>‹ÅßhÚèÝ…O‘›6î¼@B UŸ¯Û¢éÞ·£°å|Ìa»™WÞüt‘©ÒÚÓ¤ç.õ±žÓ «ï6ÔÔZâ¤Ñ owï6¿5» -S”w”ÉŠ*b  f•lÓ=pº×Ö\My)í姷½@¯ÕŠL:(`vö¾z´ÿ![x_Ï‹pøö©g‰î< -_ìVVWL×øÚá£P{:nBè(Ö‚<í<ß¼‰÷)¼¼^(c/co>¦¶´<‰/yc±%^˜1(3º¢ƒý“×Cv›%Ú¾œ«ÿûOÓ‰ŒdR^,HÅsµ5 "F䬡¹½O3³µÀ`ý©È`OTW({4«—7QìþEÙ4ÞŽ FuòLçðÏJ"håu‰ÖZEÅiüÏ'_;ñè $P^ï`àŠ¿È1£Q}ºÂOÚ*f}jý—øͧ”ÂWÈ·¶‡ýiϦBUûì§Eg†ÜÆiœDR‡­2[ÝÀH‘PÛðwÛ†jÂ0ÖÑ`B@+dáÐ…4¸s@ðPæ÷þ)u'G*èÃR^04”ißHè\!s­6]^ˆ|žìƒâûðö`Њ“è¿ŽdE£kf{ HMn`Bë‡$ųºµàʦÚ‡ê“iؾqsªöN8ƒÉ¤¬€l\ânU÷ÆC -ññ+øé¯P÷ùe@Ò ldÇ‹%r“ÿØêí“Ñ·®S”=5O¶Ë°GVXÿ4>¢ÁÝ/ÿ”Ë%±»š’ñÙÄ8…i™N5¾ükNžR„©þìžÆr¢VËÓr…Úa²!Šm°aŒ ¨‡³!oÕQ:ª¼Å@gþô¤¥¨N„”†Æ{8×A*Øá¾m*0H³nÖ½IíßÖO¡,ÁÞ¶8œŸ*ÑÎèjêÏc/NÓK¼_ÝýZWÜÕdû[lÁS'â»6ϱÇ[gÂíô‹À©è9(…ØÁiÉdã8Ö ÕÁôé‘Ï}y ,yí¹Lž7둦A8›U3©¾a ËŒ{÷6›‰lü‡¡âÀÜÊoi©b ›'P£ٲƒja_£ˆ÷Ʀ›—üºû·À äbüÑÖ›bñ±Aûöò'Šo_ -ãÛá -fu(Ø>ŸK¾­Šö¸/EG×7í<DZÎicà/IkRÚÈ©ì0µ¶ vÈô:û·Ê>À|ÔÀEkØ~03ïJ¾ÓÎõ"°L1¿A|F„{ÉÈè²¥ÑÛ”Gö›Y)£OÅ’kʦSQ(ŽlÂN=ˆŽ[KØ M Ò˫βŠ¢çæرÊà¸K‰`øKd^é#`sQo©S$.‹`˜Ão¦бǬ1½QS§®Åü"1‹]JÙ­„ -%½«âÓ0,P‹ók|·¹hZ‰–ȪÆ[¾¡ë#7qS’ ª¤8âßA­‰­½gñ†Î{¡'³í³Lóð¯ >•K ‡ÒBs8SB\‚d¡úå)¯[uw õåzR•ï=&iïJ‡Ç"ý|ÊÓç–Ö—0òznøH8ÑÖær™w¯)`ß·<“‰éå;’²› Ô!¿J’èÙD­½ Zz/5…=ÑBQ,g^0©é˜÷‘@‚w£Éø¬Ÿš?&ûÀ2¸À ¢¯Ûð(CÀ§!e¡×FšærÝ¢Þpº}$㉆¢(¶Ô•gûÊGvFÇ3´E²ØCwiVŠ¤™~Ø;ò†Õ„@ÛŽ[©Z0šQ NR÷;³&/$UUâHí<ä#VO‹|û -Úå±öB+n¬ø`ôÏ3žvá܆”©ä?¢ù.1%iUÕÖ _‚לÏr4V™&w5ä1Áä»ì—!ï‚÷O†¨¤û£§Ò_„fýN0wÆY°¡Ür¥¨•Ú]LæäˆˆíµŠ+‡ÀÌûbïDUDb̈í9q D¥hikŸÉïTËípæÎC»å8YIBö]'ÙËà×+ufÐ~~s ±RBÚKåïi•ðNA‚ÕÌõ©±Èæé„ –E‡£[2´\(Z¿ó?K•ã¥c¤¨þ@&Pk -˜BD•²`|¿¿÷ë‘Z!'Î÷üqIù¥Ÿ¢FÍóâVlߊz‰©ÀŒš) ²Â×Úªâ -Qgíf>éRÃÖ;ÿÄD:@,HMrNDZ¥dÚµÙëð…ø%:Û?te[Þ#ž/°šú0”.¤ø}4iªÇ—z8º†$ýF¬'-yBDìàXªÁ¥Œ Oò<·v«Š¬Z’bTbù »QTÐÖ N,Õz3¸ ×Ï4”xXƳþéwº¯¶±ù;Òª)˜¬¸„¦Kqü@œ`=°2A«Šö@à½HZ±¨ø Ù˜ÚÒŸX_rà‡ÖÇ&ö¥½ˆÎÑù@Rð‰Õ»™"¸2Ú¡ôÞPCXÊI ¼Wëo£µÔ¦ÒW‡lì½þMè-0^ÊH\Â[‘ DyRù,ãõÎxš†‹ŠPªD)©æ·©M˜‹õ¥œgETÂÇœ ôˆAó¥á ¹eÔõ6‡ÊÛʼ„Cž9ÇÕÈ5ú åçˆ6à&&•?·â4­ñ%,êŒ`õµ¾-C¨ßîU^ªFµ)s’¹5ÈÂø£ûFËËÚ¥úç‡Cܬcö—étAHË`Ÿ.DeHmÌ5z“dŪŃ÷nó8å·mU¹MV‰€Æ8n¢“5;&þü -¾tŽÀùç.×þ‘síÇSبë“~ic… Þ8T߉›*†xýËN§×ð{¨”–8©ª˜.jë,‰mÂE^ sÙ NgûD58B™:ÆÀÓÛqöšéÇ@ûŸ ->âÃV/ ÏÄc\dÔX‰~G¨^,DÖ¯Êh•.Æ&W(øœY‰ët{-”"m “ç+¼Ëº3R®ßg#Ù1ƒc°VùÇ,#¬@"¿u©p׿qȧÃmH¸Û„ÿäæw9& ˜9´ú0¾Ûþ’‘¹\±ævtÚñfbS×{’El]׊O9Á‚”!¾Š¤xàè2t¢´÷1eâíñãч)AɲàL1.é™3˜1Bæ««§QôZvË”/ -^EÒŠç%a°–wsz-=°N­ K²Fjß yjÒš¯ü<ªµ&ƒt•ðàa; -j8Œ“»ü{ ö:Skm8®"vp V){fëbG!ySJØB˜!†ïøC¤Å÷çÏÈuf6ÄZ­Þ¾ ›X"ì -Ѭ -ö]´<ÆZœoW®„¨ÛÞ!”;s"È!Âp»!ʘَOÂÃÛªA{j,#y -^À{I·ÆpËDS§aäˆÇ?˜ìu§\«“¨D~[Ò"£’Õƒ(©ÅhNæóPž¸8ðᓉ׆Æ!*ÞÒõ´%Ïg ¬Îà,žÁ¹X¼Í¶~Íg»ûÖLŠla]eg5¥„>fOTç×]† £Ž Üâ¸Q™©iVã1ðpžH¨ý ±ÑLÈ…ߺEüžßÑS5ábƒý.º¾×ìC®}:¨þ…³½§<¤î¦Sü“ÙtÓ„i½W=“GQÅÉ𠔌6ô½xQp[r8:ƒá{ ø“çmçÈ—n£œÏ ߶[i¦VpìfTqCþý œ—´Â6ÒBúóˆÖµH2nªsþ<‡ÅÑêŒv§#}zi£‘ 'g -‹¢ù<°˜eÿ¨È˜I¹¯UUÎãË«/Wï·/¾deÀ¢ÁßÚ{¸h² öGZ5FØž—QövB&ÑóŒ’ýßÝ’¯ûi@œ6&6×D_bF'îÉ[TpS-¢,+äŸ -U´ÉŸ$ìØI›²CW¤ê‚>›ß›L~79-Ø[Æ¢£Ü;èjh·Á0 ×rê:Šüåä#Ê;»Î쿈â@`ë_¯iås¬Rò߃¿¨NXMÝ ±½Œ, V±ktã{Ï(NÃÚNèîRYÅèåhPÜ÷µÀƒÇ*šMbVoÌ"ãäÆ´ †ë?€`”œåÅerƒïû•Óf47ŸY’oÍd^5ÿn’7Á\*{0Ê“ù[ÕB­ºâ3éêJ1u´à÷2$eD Ú,i+µáO65+i$SM:j´šz2*FAšåX,HßÕ°pá6ì×I!ø1ðÔ:4¤ÕNöÿ 9Ù°úXX¤sX+¥ùÙUÎ+3÷Í/^FžÜ›"ÀpÑ_Ma"1h»µUVZÙ(lŒFŒ&Ð{ ‰ëñè§n ¢2ã_~·Ø…Y¯ÂÈQB¾ºO÷ý)zL¯mI$€‡Um•0ÌÔo”Ì.ÈÀc¹Ø¼Ï·Õ|ÅœZûv>€…F`ýàmŸÖ¾?…1L ->Šc³’¶“0²nÞü°Ñ»Cû;ÆÞk¿jñR@õ#4aöêà‚)õ³™Ö~hD`À™4-0z¸™¼™”1ä[È s ×ÅL–žmë5ûmÅX;䯦䖣ˆµO ù-‡=/LÁé&ñÇËŸ/βU^„Eûê—–f#uœ…å»8º‚هѺÔhƒSƒ6¿Ü§Ã0?¼jn~·PG{5ÑyûË®Ë/‰óÂi¹/Ì©ÇÑs-÷ÛÎ5YÖøÕ:Ô2TË ªçå±úéš"þP[ÕÊÆ/·ÿUÄœmö¼Á¡&l¯E3¹Gݲz¹ßE~Eˆ’<›p8c{M¿1Í BŠt­­ íH?’±9xÌY¡õÜk®Óz8ó‚×älJºÇɨ\뺮”6Lë†Iª”Æ/a•DüÓf³ñpŠ¯‹Íäîñ•8wñû»*í8|í Ž'œÜƒëmûAÝTnê29 Yⶹ…DêN· Uó¸˜Àå(¯Õ6o¬„RP˜ÎýÎMšš óxêìbŽ_qÉørò i8œoã,-¼c~=8£°ÉåÍÁÏ2±TKB7ѯ±Êä•ÒÅܯDŠ‰.ã>ÃAY ¡½Ö²:¦øêÉS|˦ˆg€‚#…è[Oš Z‹ -Π[ÜÔK5&{{zháù˜€¾ÜüØævˆ ÇD5SulnÄ`ûO¶ 5Ë.{”4?¡–Ð €ÆBbѬ%Ó„í¥o¢$àhZ`wüg1[wÉxèÛ¥–7Ã4µ½€ëø *(à8´ºsFÂ3Ozhe¨9Ôe¸ÇÌJ1ç<Ôºûy¾6fíuÈ©E•ä÷:m”Ðö­Ÿ ! ·þ|PóEPÉsÜɺú¡)”)v2Žz2ü3R{hxmì«à:žn—/<õ• s{O=JtÏ7×ÓCò•I0?_PÚs$ò‹^*'»~­æò¤ž~Ý—ý–!J…®;‚aPj‹ßdšW/wĈ-»“{,HÅ1Þø*´)Ð&¾S’ã.r©>T¡ Ü2KÛˆs¼„æ§Hz¡8iÄ­+}ë:¦(Ôn"t„h’yôÿIÏQ_§K¹:ça`øe[iú—__Œoÿ¬É¤¶¾ÒÀ¶ûï³:Þð3Ž9~"hYñÎ}ö”ÜN4ê31³Ý§¬'T¬r<4†/ÕÒ,CÕ%DÙÈR̶ŽÃl2`ÏÁèe#üSS ®ì Û«L[°ÜS…+géžÚ†v†Ë>Áì¥ÈŸ ÑoµK¦5W?Ýb‡WUÂ"1v©Ìô2=ÚavbÍY\GÇén8ÉÝý›¬}Ýo.Î@åF„Ý|Ëù„·öb$ (Ìášø;½%$?-tD áWD‡a Mô M-Ë´ö94úÎBGQÂѼx9f€ :57·^ÙdÍC“厯ؒZ ÂFe`óÓ´!ÙúžWÿÄcÝ`"t×@2»²)<Ç´„æO5“¢“²Q„U©Ì¡Ž4Dð;î=¯ùxÇÄ—ÕïÚ‹§¬D ´j=|Hš!‹íÚjÂ/¥Ä¹è¼¶M•°w6VÂW(G³¶(‘©²µ£BÅÑGݦ±jWí)ÚlŽË)’â´[³×«âr<]˜xUqù¼p*÷ë!û¸í)Òã»Â³uþó>âRƒîÍòÕ]|žÕºêÕ`ìÈ·í6ÂüñI7²¸–êæ_Û÷á³Vœ“Ëi™ø¡/͈bùì²dce{ür(òü~ºˆÃ‹Ô¬ ÜïöÜ(Ø=ä ¶÷«;[òdÆîœÃüp¿TÑHçk ’Ǻ;A<5ißÄÓØ8òRo‰Wô‰€WQJ1ÿZò¡*/˜7<»=3<¾ÍôYÿØÄAùÊg¯¼VÝ7Û2TÊ=ÚžÉà –C1¼Ò¸$ý%²œÔfE0Žj±6SMÏíVúSsç|*aük25ß”„ÁW‹¨18ñHúhWVôDè)¿Óãî®výq÷~W½m< e}]Ïåb¦’r%É]ƒ©0 Ua›).Œ1“É9]3;·æÚz -õ× -àWÇk 'Ñ'/Š‘,}r[‹àv›×på*P|•™:>i`SEª»w”ÖŒJÒg&o»l6ÿº4š2ú_®%EŒ`õ^%ù{È–‚®KÁÅç½"2½±YäyfÜX%×aÌ7 ‚»¯a'oŠk-è.‚Ç,rÂrŒWnt×ÙÀQó§½å£b,êî*­úšÿW¬Ã»= ÏWá…ÑuŒÝ3è÷~Ê´~Ç‚;`Èj®iâ@É?rBç¸5nzfk/ÀÀ=™•Ëùµ-1TqE”ŒéÇÏŸ¬ŠcŒW¤ô¥oÝÅׄ±ë 6å/_Š¥DÇš~½Ç¬–ßÕU>} ]àä-rGw¦,OÇØ¥UÂÙWê5 §ÎRœ©X ¨²ßWp’™å¿g°«3ñ(‡PÕ3‡z¢Š,ØUØ) —"[dI~bÔˆf¢I‘@á Êí…™bï×¼§]¡*÷BÚÎ5ÁÿYnt‡^‰äv—Ïôhsû†Œ+{œþ±U¹¬DP#ºMd‰¢s—ëïŒE½—äÆŠ[do¦æ¿{^dwiQ»nšU«’R¡ºqÃå÷s‹Êb€fv0+À>m"q3‘ZY¡A' #r€Î¤ùÈp‹Œód«µô¾/S¸v¤«õ“¯—äÎqR®3½á£8½éP7{ºæK4þß=gA[^ùl©ÁBÃö.¿_½ì[õû‡CÎœ -žð|®¹@j2\úŠ”n©êÞN¥Ô«ÕªéYÄjзD’‰ùñêæ„diö®£Î8lqاð -“Ê·ôà>ÙMÆχÈ0îdðs=°YeÍ­£z"=ó1jÜz8˜ßQT>´=m¸?FÈ +Å©!ef'F±Mo†øöûh ¥¿#×ô¥o‚7gчùÀL©;OqæäFÀbmÔŸÒE egŸIsU¾:·œ;ˆ†ä îoÀÉý£áèP++ð©ÛqLÓ£Zi75}ôÉçÀª#Yà.ò‹+×Íî³r…† ‰L£ê - -mB(Ÿ² -MÇb¤V1ÖÃ9§y›àchB>.Pª5‰¸ƒÒàºéш`b7HQ¤m7&V\ç†A¾Y†žŒOùŸ©¨Û S Øã'¥ñã„p¯òoëKAÆ4þf'„Îo•·™é•/bŒµdlÒÆjxŸKŒÞ„× Ó‡Rã³ç(fY 9»É6„5,3žÙõ±Ñ(XÚ9ê!žðÚà›L0déGTÖÆ&ÜÁ KÌÇ.N9×êOM'_ILXsÛ£xM)бD8¼ÄXj9²±ûª(ˆO -Õ©˜å6³9$nƶÞ~p/éZià®ô½Œ¡ï -¥_,d`÷aÇ¿§_ÃÝgŒmõßÑ¥ÆsÐNL­¸äœ^n³‡îHq3ˆå×yÑ¥¦þa W25€"E/ý5?ÚléQ½k¶#ÔŒÖ/P†~ã$W|†˜£CœÒÍqŸÚª¡lH¯48ç4Rí*)l›óEs‡v¡ã¬Jw6mê*ˆÅ—¾ uÊçÓ”ÐA#úœ |Ê2 -{ @jCñ"t\ŽŠÄË&&ós`Ì¥ó鼓éÏûÔÌ‘oþWÃŒÉ¡á †—àFîc/&|¶ƒ)¦'‚7ÙJÚ«×ç9pº†Êø¨PeŸ“~ÝÀè@ÝbË8x ‹×R»µâùdUýô$¶A#@‹äv}#ÌiW¶;00åz~±§x4’z$ ‰¥èÐ-þP“€5AÆ“}S‹Ç<½;T)A½ -Ó’„±·Ñ„óG‡Y­PkÃ(Øfq¿YŸ¢ an$‡OãÁ´®iÙ„CwTz4Ö7¡²cÖ§e#þl²×Tâüų*wà¤t`GPstSíß°#p? ï1û% $àvA»¾:*T8¦eðâiê¹D1ˆï÷3@ü„à2<ÎT’y~-(U­j¬´yN43¹ƒz‚~›æ<çÄÁØãÅ`¼XÇ® ÕVæÖY­>L€ö‰ˆtfrU¥§'m8`ŒœÂ-K´¸DLµƒ5bPqdÊ„ ü Pk ëÖŽ­3Ð*\U’+úÉ<àóË*á¢ýñûÏWË‘µæ_Ý«A‰ƒ×9 !XQ©£Q”ÑâÃ+åPÑ_¬@$6Ì+}îBlª†]òz¡q¥I_ª5ðe¼J(ÄŽô=¬M3߆É1Š½¾º®þ` ›LÌug7êz"U‚¶zLŽrû²¬òýsY´û’­tÓ«žvð²¸Ì‹)Ûw)GŒðµÐM™9¢×9C¨>³«“%ÎYv­Ø]Ù”Ò“fo]¹Y”Å!Ó´™\˜íº‡" ˜ uEÿ®× ?G5XýÖ},úu -©`áÀ¬±vjAìp6~+ÝíU^`êod‹&Ÿ+ò1¾Ú~—^âºñ–]¨›Äo§ƒKñu³²ZÕ»(Þêë^_£±OæÉ|µà™Óí-}F}VVw}ð}…<š WT¬6žV5õîL²/AZw‡Š?7FЄM³v‘'žœ)žǼî:ulÇ |ð$å`¬ÊßÝÍÛê?ê)ü±ðr?eÇŠ±¹qoM‚Uñ’HCWn ï°’ØàÃõ)L ùª¤Ð»9µŠ´«æÆ®áÝr›W‘:#YÀªÙýäúœõ-€¨Ë•‰½‘ïÔ––,vô7½‚0Yš¥{ܲTÔDâ@í? © ù´!Ø€V…=mæÑÀ/Ïí†É=¼6¡Kvv¿hà›6 î„T²§@B¾ÚòÀñ8p~óŠÉÙóªDòȳ}ǀبÂHÃ>²–šÄÕÒo׊:z+)ë¤Cý(ÉCG8ã89G›ÚøM*áôÜ[ó佌SNt¸øoÇT.ºa¹(:£»&ùš®0j*d3_¹ åwVØ b»´œDÏÐwÕK̵Ë~„°Z$“ц\ãé=U"l eõrå@çe#o¼Càˆ<‹ö¼yÂÔû{gÀµ-úö%!‚û•ôÑy¶H‘ZÝþÞ±vÏÒ6W»Ó|—gFxÂ1Áta1I#ˆ<|%/³ -?Û9¿ðÖ¾Ì#ö“y¶rÅ{Ÿ¿>”ÏlD‚ô[¥úÀ«s, Ö¬5%θ¶Z)W/VÆ~zÈëŠäÁ |{•©{éW.Ÿ[»Ç¸èjÂ(ê&BwŽZj+\Cý»V‹Ll´¹PsÍ}Äîçî^-G–¿õÈÀðzˆŸqrU¢@qjÝÂÛy|ûl®9ôI~a©3ôpÇWIÔSwÿKHw5L–ªéåö<‚¾ë¹‚¯÷·‘YîBد—RÄ6ÎëfÕFI8–¹ÖF¨\û»Ñá"<édñÓ}“]À´¼›C!R¥2oœ²¡¸k£%Ûˈ܄† p\ú¹9tó’= Bý\Ñ¥¾#‘¤ÁaŸÀµô/»Ø%íáô10ÚDgª¬NBVßÛDœZ×f9¨´°žH]X±÷ÌW¹!š°XuH·Ú²8þQ9DʤøOÄvÚCŒN‡±lõÅÌ×^ó0ïÀ'7;WÖÕô?áaÑY]b³Mg$ˆV׋E'=ppËóº‘ïrI -ç<Ž%ð]èÇ—³]Ó*‰ÚFL}D‡’^ø¿á#G®ÁºÚw#Ä­Pâ‡fmv+nØÅ®EuìÕÝ µÈzè_ÔÖöÿ`zzè¬ÇiË®+³ÐHB<¡þ’jèBמÇú-µIíncŽ1øˆÙ7ËS°N%ù´ …¤ 8Nˆ˜5ß·ò5½ñû3M ç>æü„Þ•”u«5Þ¢lеu|ÆÇIÒ°R1BorT)aàÈ‚7OÑ/HmƒU£ü™mVÕ*)ræ©w8˜ ÎŸ-­„—Í,‹¼F¦»\~|dðˆC9èk¶\¯Â®Ñ-kVâ˜ÑžÄ‚+¦Ï×_‰¡HØèKáŒÃ¨"]ôP2zÑW;@1Ów?tÎæ±ÔþŒ’­–ïªoTE}þ& -ú”—û²ëV:;¨™<¬AVúê$ÛÍR˜ßŸ ›w¨ïà¢<»½fIüKw׉ø•†üC±]ßøÚ¦°|y=ʈrÝw–ó‰’6ýáä:Ø¢7€X‡oOà¡_ÃE(õ»Qì—é0_çs3…®Cjµ¸µpˆªÍW>ô¤–QyÜ̪±œGˆšfÕnïòÑ$pç÷TÍô¿¿¹ÝeV;¸e¢Œ¸1xý¼<†œ ¯Ná4ÒÀYŽ»m<$ãõO°–µô0ôêq1’uz$Ÿëïñe6–\SG‡*š ŠjítÆþ8Å!Ä>Ø… Ï“üz$c?°ð¥’—;uw¼fÁ‚n—ÈK/4ðfÅïºNÍ¥zœ¬DI Òe’q¼ÔÔÓ_˶91&}ú~r¯=Ú½çsŠÙT÷{Tj¦r1¾@\Hƒ¡FªHÚ3xzújÒxê=p¦Â] “ó„£Tª,ŽXÀC£ Êe›çØJ­i¨¿<Ý(<žöÞÿ‚°Sÿæ&‘0y*{ú ^×}Üáž_¶½Ž˜!dCëÃÖ®ƒ³+8ð‘lsq×?nØÝEAA!Z¾ ¬í a¿M·òãi‡Ãš ªÕm†‚gǾÞê²Íß2R?êÐâdló» ‘|rqG뼟$}< X€þAïôí÷ñp‹ˆ>`¾”í#ÌfÞzW§ˆG˜ž‹úÄív¼jŒî© Ül„ÏS! ãSñïÚYÜâ›JM®<&“õpÖ‰þ#qožÔ“µáQqÈ‘Ä5Âp]K„ä.¦qy2e쨡;é¾f– ˆëÞºŽ&'£mÆ88½íš-Ó ƒ¯= c!ê8I<ª%v]†¹ªvEO+Fš´Ã‡{¿9ù²–Wû72”§)$’蛫s"#^š£2ˆÂ‰ÙŽêëÌ -ÅçÓ9§}½^¦Q*Aãž™M2 é3¹z55ùÔcô¤cˆ•2×wÿsæ•YiZ3³NÐ$¾ˆ­½åA.J-ÁÙÂùà EË欀ç7'~²èšK¨Hú<êÂTzÛ:·Ë¸*Ó­JÓÛÑèn~wEŠïfæ%—/&Lã…B”WPÁJo†7©÷ÖÆnœü©À»]— |Z¢'ÿƸ:’;BöSB`•ÝG4"eo{)ï`>V­œw‡Ót.îß=¹ŸïÒ4¾7S4d”$1Oëø‡Þð¡K-±| 6…3ý¿GèµgŠîÏ!Ùø6“çsÙÄG5u¢Ç£yšÔìÈ{Ò~=@}Œ³kñK×âÝoW’X±¦¥3Äh…®Š´Á nK°ö.T~¦Åý{^&}£¦ïâסÀ„u?Ô97}[Y#|„ίlöÞ¡gRó¸êOgœe*¶†íz›A¬ùpï*#W°£µu˜åÙ$w¸s¼ö¦sZÃûJ]PÖ¡#v"ˆ!й0"ÐiBîUU)Ĩàì¿þà3Û)-YäÀÈW£õ¹ãZ-»89VlÊšÉ-. ‘™¯û¦ •çkŸš`A²Úˆ_’5 ¶:X28òd,Ÿêµ.Ž7Mm©°¥»\B Ù‘H²Àè|Ç#À&ß¼p™'æ8„[ Aµq-[!)o,ía}¢ A@ðõz3NOE¯Š¢KÝ)!(—áëlDË'l"Q,|fw²wtduW¤—k£íø:± ú|¥®T^~ó°]‡™¾+1ŽbÚ¡F¦9ÿm‚SÕ$iáª,Ï\CøÄÒP’wüØIÒááµî}f’)1’™ºöd9ÕÔ Ú¹–¶ô±v#z.J¥ãƒ `Å·k''ÈW=¼$_œ0Ä® +½Æ~9„]˜6*†ˆLîÒuy™àb;p|ú.¨–î+#›[øËËÕô+¹E ½vFv^ÓðSÔU -oÄRª=FÄôëlCw‰L¢ÝG–ó‹<™0õ± L-Kº 6nÎX¿ -y’“½›8{åý¨ï!Ÿ±."Ëž¤#t£hÝúõŠ ƒmß«Wñr³ý ºØçmƒ”¤NU$„ô&³UàPªÐ‘ç‘öþ,³îæ[sºÁl -Gx»1fóH(K;ÁÓü’»ÍË8wª´sÞ:Õ2ŠÊ÷´“9Ö_üæ¼OßÎ_×â¹×1ÇÇGŸïU}·»û]óm¬m– Y’õY†2Є7 - Èl_ÓŠB7‚ÃH~ ›—x ÐÖç×–>ïÆZ?‘>ï'XNàÊ D9ôö\çÒkÛ€]½¥a*ªHórí«±'ŠnŠx%‡ ²™j*|åõ™¶ä‹¢cç´ÓÁ¶×Me±4|1ø¼ˆ×+"E¬ÂéÍ»G]ªxÉ8"jà:|Ó¢ñˆžžq:¿é™#Ñ^”poÂvºIy¢Ü«ÄÉÆVÛÐIÖ·Þ—ÃÇåt³Ü»a—ã-÷.¦¦BžíRG›f>1±b~v¯ÉÏyì=e.}µ´ {â Óœñh¢¦'Õ~p -dðn”õÇh^5¢Åèy;"q'Óždž»ÝWY}(™Ç¤]8.ÝîçÉeJµMm³J#iç¹3hõzc^*¼±ÂYm¨Þ-T'\‡+ß߬úÑšÎx·üR…(ˆõO-É‘@³N›äÅINÜÖÃv6{?’E³6ƒ+™¶Oº±ù4ÉÃ…}³Ì…}oT¾á—& î?/ÂG3KgǨÎùƒª˜®”dnÚ~ñ–»­&€T  yY­ìÂ\•ÅsS.*ñ ÙGÚëbäøìñfYñ½ã¾žªs2Cb0yoÑšólˆ†˜s¾ð=U[¡‡G1úz#£p]+z×$à FÿŒ¬È0[AdY:§’•5Nó¦ï¿9˜²RÏŒ?9‰¾ïjŠ6™îûýòÎ',®„„Zçe FSç·ã¨wàr3|Ê4ò¢§úž»‡‡À#2×Åg 0j³šØ;@â&î9 3/–AeïdŒév¸\¨3Id£”ןzÅâÞwŸ“¥`‘ð{ÑSŽ»þx*Á6L_Lÿl˧HUÚÕ‡àW½7ì+ù·‹–a·_=°lA˜î8úÄû l¨zívï'X5t3f|"½ôWV¾­Ìä»ócÆâØw«LŠúIÎNM?—ÕŠ¿­}_‘ORíbPñ«Ó“6íeí‚ÎV%t·àRÍ£|ÿì¢/ð]ä;¦µÕ(ïôRï;Q‘8«Úk¹¼@¶à9I>ŸŠ8Íi1 ^Y¡·&(VD!‹aƒ$éV çƒ"Èà÷st˜´¨O™8.9ý–åðÇ\Qƒ_)‡3ÉwàÞZ}Àá×Ê„htâsãSýá3!Èc Êùç7[k­r¢‘^J0Ö‚@ÀßO1ß g¼Ë˜Àì¥%Í*Y·]Êä×û`ïaçqÅTߟç Æ&íE~§Çr+rçAd ]5ßÔVyæññhŠéûÉž|_TŠ‰ßŸáLàÈÌå}çÌ€˜v¦÷›{ƒ0ç2¯ÆDÅåÇÈY‡à§´¤jÈ×Ä-r-#4Uz»µ¦u¤eÆC]hÇç[Oá‘4-~äÈ,oæ;‡vTá]O›#ÃHŠ¹ïØf8•zÎ|%a]ž¨nš¬çìø0æa´Í'úÄ%¦q šPý¶÷ Œ~ÓÀÙ"£–Ébùò&í€úg~>Kx_ø~¥ÒO•‚œ¶ÕÛBW0¨éŽn©!0^è´Æ¾Õ ŒJ­:*50 rTËyy¯m.zÜ‘¡Z֧Ʈbýïy…{k©F†ï`o30 4Ê×y‡nDùéõÖ>˜¸p/Õž$Ø© Ô)a3ˆ¡¬ :$îÄ+hê^ ¶.ã3¸}*ö†+‰R1Iª6B:ËmKðu*¶jukn퀠r©KH´·ŒL@÷<¨» 9øÊøS‡¢ kB‰´³~UŒ—ÆÞ>e®£tZ þImPùýÁù‹·7¢Y­7ðe0õxîN´BÞ1®Û3óˆ¡ô¬‹k ù+•7›júîÉìú^mfâU…˜ÄW’²€(ô&:xöú=UNßÅ,©š:Om{º›Ä•ûkqNâÃÕ65üâ, Áæ8ã‰b‚ç-v[»ôÙDÖ=ë FÝâN\"ok¡÷fÃ&w®Ðé.ÿUÏ×ÒÒæ/é ?ˆ‹ò»î~¶V´àïbÊ^ùok9¾´ZúZã ¬7¦‘áÍjÐ?Â_ç)|×à¦y–ÝÆ`6ãèq­©µƒÐ ·ãœsÑûåà•¢iÂò™¼FQB#Q¢l\M”7Û¬¢pˆÕ¿e¼¯£«QT.Ât-.}iô=:4Z¤xýt’Jª—ó¸Kí,„, ¶`kÿÆꯂo¹q„R‰Ÿàµ¢¦@ˆJ‹4 ècY5D6+îHòËoÔh¿;2É+Øü²Ó >@cgKÔÀ£äW†ß°·ÿaöeeæ%þ¨o ‡ †pø˜«âØN^¯6v¦ºy@Vú7¸ýï tåpã`‰ƒX›¬d(åD¿ì7ÖÌÎþ¦Ó› ’z×6©6Û?PŒ1 -œ±ÊZn6=ãf I™÷Í̾äMØ0Ñc¬V¶Š\ÞÔðRgÝ}8ÚÏq(…šŒl9ËÑWLÊœÛß™?æƒî³¦%7ÊÝ1!Uûˆ7çmAp9’~ä®+Á|ˆPÐ`ͯ°ÓI%³ƒ÷#úTp•Îˆ†,”§Þ½‰0íuNdµ¤"”ÈÕí7 -栗?óG&ª2R×*²á½_BÄêea1r“˜ÊXÁÐmE>ÄÌ9Zé|'óàqW¼‹8F‘ƒ°,_4¸n5Š‡+Ù£üi˜\OlÑé|ÜÜêlƒŒÒ«“©í×!ñD˜Ü–»/;šðXœ¸üDl”Î~€‘u9L(•/3–-¼Ð'OœÓ­óbjŽQèä³t¾eo4±Õìàèz»ÄL³#•o £Ö6Ϩžè¬¯C±£’)Væ”›=+hÈϲ1'­Ïó°×Lé£à=‘ZYY¿²Ù‹~öL?Ç|dQ‰z½Upÿ¯ -Põ%Â9—¼|C¯*¢o0Y¨„¬V`R×tPÍ™B¹Ys6ˆ¢wÀ0ÅZ¹{m±G)tæPz;› Øy•­xèN#”…š©øôÜ@úº{“t’œŒØ!J/¸¨/ >¼Ëëz˜Á‰9;æͦ" -ôË£ö-SÝ+LÎh‰š¼„ŽqÊï5„ÄvöÇ+„HUû<ŠœLŽY]æ³ø}EÙu­ß•&kÌ»B? yÀzR -CgŠº1“oI²ôFøsŠö¼·ø¶Ôá>êD1€Þ]‡±Y1¤è(ë||û¿…JŒq4±}Õ»°¯3?ÊV¬Ø[Ó¡cˆÖ*æM±l§;|nðÙýˆýH?S׋ÁÿÆí’悃 LË-´rĸ94¶=ŸÑµø§j=›ˆô”#[‹¾©+ïøÝŸ|õ‘…ôæOÐ…W#Dˆ°‡¤-ÇD¡ý皤&Ç :*é‘ŸFXŠ=ö®Áêy·àéïe+9èkóÓåC÷ÐÊÈ7hå¦tÐ"œæ.õ¨ÁHZk‹¬q꥛~êžnÝÒèèP8–­•ØÅHñ#ìÔ‘Û6êv—Åt½Š…ÛL2D£<‡»O²1a•ÆßO@•5õ!nKv÷(:ÓV]Ô";ki› A¿t-H1Ñ¡à ÅTýGNñ.ÎNÉjÇxù‡½%à±­%To¼ÞÂ#úXr~nõ78Ô¹’®Žg-O™iÁþP Rð|Ç}«ƒs¨>×?Tƒ9I]lRÿ1I}ãXXvæèÐYAîñ’úêž8RoWýª¿gYÉôq]*Ùd|Ѧj[iNà§YÓ Ú‘3¾o„FR£­HË£ýiÊ·é®ßÉ#…„Åg¯"MÙ"m¢Eï_mWÐ(}º%7}Ãœwµzõ±Î´DÜPÍ£X “z®½ƒéð걤ï%6NúT[*¹?YùÞü'ë·dé?­Ð£9©ßXßyú®6YGážGXt °Œÿ®±ñïÂÅ ?«”!4ÓhÿaôÆ~DÉäÓq˜‡”W*¤tP'ž@üqSY9¯ï¬ÐËKmôµ\å§CI‹n¡#xÍ|Þ@;x¥aEÔO-ÆVŽ*ÿ¡3 ‹O¹ù×juœ§¥ývƆ¶ßÓmØ´òà4N°jlÀøD¼(°7³*¤µg/‡´l²®P£5Ú×e¢8P¥T>ƒ¯µÂÀ6TëȺ Z©´Edw«Ó<¤Ü ƒ¤‰,´¡´ -O´~ĹT÷yjQ„Õ˜àz˜Ü“^vyÒ}U1dD[ªùoÌêLBñ ‰þ‘¸4Y¨ê8ÏC?”r6™ap©M¥²ï ƒ…‰¢2͸þ¢+®ÍÊè5w5«9•øù5b„€RtRNÈ¢"¯ü’èE8ßÓå"ô -T‚DùB¸ )z=°ÚËËúåíÑWü--Üõ¨¾8…­áöø±J¼ÊÄjÜQ¬ëÕ›éxS…F¥A´˜Yˆ¸È¦~·»ñƒ~‚Gȼ©Ø]ª³HоÖxª<>|ò±¸–N^’Ì7ç–^üª7¯yJ1ƒUlIá¤\ž¿ƒÝÏ1š(W»AŸÅFÝ”¨ï˜IR0­}Må --¿À5DE/–_ßØsˆ— ÕïN•ª®¼fÔn¾glj sÁö ¯ç*cñ­3¶&KÇ´éÄ îÂRðǦ-i¢ªpXøìµ¾œ¤dál‰®Ø ö¼ <ØÓÈêF¯¯Î4f®dŒí—‚¬ÕÔ®·VJ„À2á!¨".ö“wø*?ñáµÃ˜¯D£@Î56“è>I\ž!«?pÀ9Á*Ý~a‹‘[×:J -endstream -endobj -609 0 obj << -/Type /FontDescriptor -/FontName /MLARYO+NimbusMonL-Regu -/Flags 4 -/FontBBox [-12 -237 650 811] -/Ascent 625 -/CapHeight 557 -/Descent -147 -/ItalicAngle 0 -/StemV 41 -/XHeight 426 -/CharSet (/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/a/ampersand/asterisk/b/backslash/bar/braceleft/braceright/bracketleft/bracketright/c/circumflex/colon/comma/d/dollar/e/eight/equal/exclam/f/five/four/g/greater/h/hyphen/i/j/k/l/less/m/n/nine/numbersign/o/one/p/parenleft/parenright/period/q/quotedbl/r/s/semicolon/six/slash/t/three/two/u/underscore/v/w/x/y/z/zero) -/FontFile 608 0 R ->> endobj -610 0 obj << -/Length1 1626 -/Length2 16047 -/Length3 0 -/Length 16896 -/Filter /FlateDecode ->> -stream -xÚ¬¹ceÝÖ&š¶•ÚiÛ®´QiÛ¶mUÚ¶mÛ¶*mÛ¼õžÓÝ_ǹ}ÿôý~¬ˆ5Ÿ1ž1Gì‹”P^‘VÀÈÖÀXÔÖƉ–‘Ž knmàì¨`k-kË)M+cldø+g…!%r0Öw2·µÖw2樄 LLFNNNR€­»ƒ¹©™€BYA•’ššæ¿$ÿ˜ Üÿ§æ¯§£¹© €ìï‹‹±•­µ±Óßÿ׎ŠÆÆ'3c€‰¹•1@HN^]BV @!&« 3¶1vзÈ;X™¤Í m)&¶«†¶6Fæÿ”æH÷7–€#@àhglhþ×ÍØÍÐØî ÀÎØÁÚÜÑñï;ÀÜ`ê oãô·N¶sC+g£ü•›Øþ ƒí_ 뿺¿Áäm Ìíœ³Ê ‹þ§“™¾Ó?¹Íÿª¶&-l ÿ)é_º¿aþjôÍmNÆnNÿä20™;ÚYé»ÿÍý7˜ƒù¿`8;šÛ˜þ€ƒ±©¾ƒ‘•±£ãß0cÿÓÿªð¿U¯oggåþ/oÛYý/ æNŽÆV&t0ŒLs:ýÍmjnCÿϬHؘØþ-7r¶ûŸ:c‡5ˆâŸ™¡ü BßÈÖÆÊ`dlC/këô7%€âÿŽeºÿ>’ÿ(þo!ø¿…Þÿäþ'GÿÛ%þÿ{Ÿÿ3´¨³••¬¾õßø÷Žü]2ú6€¿{ øgÑ8[ÿ¿\ô­Í­Üÿ¿œþÓZÕøßhm­ŒþS'á¤ÿ·%6¦ia cø·ÐÜQÔÜÍØHÞÜÉÐ `¢oõ·_ÿ’+Û;X™Ûÿåõ_-Ð220ü‡NÉÌÜÐÒæXÿ­2¶1úOø©úxza!Qi5 êÿÃrý—¡üß!pRr·û‹í”"ckô¿ÿ„´uxÒ2²qh™YÿÞ½¿€8Ù¼ÿ)ÿˆñ¿Î2úNænÍ¿u30þ«úÿñü×Iû?ˆØÚý36ŠNú6F'í þQ:;8ü%ø_—ÿoÕÿóü¯™76v36„Y[¶5ä²HÍHsªÅÌžÖìïe¶+iP*Ì÷«¶íñM Ûá¬Ðû¨ ¦kœæújs_:³û<¤:íÅ°"ïI6¾ÊÃõ&¦ìËGÞ$ë`§>  ×)O;Wò¼^”ÞÓ`cP9Üü¥ Sü7ÝÁìuýLéGì’ï‡Fòd‡àc˜RƒÞ‰Ô„R[pvN–pòüD>862<Ôs Þw€CMÊ­é“tF˜èä®çðÐ`øþæÂn¤<æl§!¹&DgÔÔž.cRµIå›A?@]¥F·»TSýto-“¤ %hýT,ü˹æd¾N̬epp ¨!6° üM9¶÷ùw“XèØÑÌ,;+}-¸$sem+E¸i/jø)-X©”Kì˜/kÒL¡«ìŸAúa¤q×Cß)0—`ç%˜zºÇêÿ(¢Äz‘Z9Ô-Áo‘ÆŽg¬)rßÐÔl.é\ÎuŠ›­Qƒ‘TÐ\ˆŸÜqñ”cjÑU;\˜£EOD[9\´Õ³'ëÐî0˜ÓæëËhi‡[Éj¦•´›ß¼8ß+Øt¯À¸‹EsÒÔ—_¢ˆBÆLº ï"¼xå¶ð¿ì&¨8Mÿ°49 Ptì¥Z f9›ú061²wÍÉ -FRRs/SROñéúÐÅê©œÞeXäÌ—Q’rÿ(¸û;óftáÉE8á”ØÏÎo5Ê9@áeF\YÒurÿlõbóýIúÐXiæçŒÚåÕ“®tI‡«67-‚Gýs^᧧¹8³Î%´ÎflªÕì÷œ¶¸{Ë`m w¬Å“¨‘ðîßt*ºzZóöÊIoO}è8ò!b³Ï:Là ûmz&ùÖmNÞ·Ÿ€´¿4¢âš¼2ck¶MØÅ`ý&v*è… ‡øë3No#ͨ‚u¿LzFéíR*Ç­Ó‹5Ýn^1Ñ*þxo'³}g1¬òÂY"\׃0h@r¥våTÍíÇœEowCŒË^Ö¥ÔÃK¾,ev·Àá姪ux^ÿAò³µGPqþÔ1ۮķ›ðQˆÓ]—ù HÊo:ØÖf33@]¼aôÇmÍu:²ÅmÑó‰ïìv×^1ÞŸ¨h°Ã‹¤•··j3u3òoÑØü<ï¶Im̉›Ýd­hμéÅ.iªïd 4¬í¨+©lõiÀ/–׃•àJO4‘lߨµ î5ýRtÄ)td͘•G.GÜìÌ?}ï3äÜy̲ -dlK-ï6ž-v„ãפ¢¯÷!ìÀ¹"tŸ•òRŸ—äñÌý¸—·åUãGJ»ˆš0Û½¨|ö|èߟq‰;k³®äá^L®/à!¯,!ÆÀ­gEù¬îç¾>#ùà@æKè4·{öü]žÎ-3×el& -JÓTü™çdG°àuàççN.«Œó½üœÜ¬ƒ4Øbaó0ö#:73 Ò5I¤äIlþ?…ª½Ë;…ò>+·‘Ò[ q˜PÔ(ðÊ׉pe@ÛóFS ¢¶P‰‡Á[ïæy`©³á?rB 7:&Æwæú=—©Í #¼ˆº‚ø¢Ž’ M«ö¨U)_뎠Â×|+iì tX_œ€Ù9B¾3¾ä£¸œ‘T­¾žå ½ -$.Å™è_6ÛF{F-È;P¾38³êj¤ÊŠì”Au¤gœî-4UO íHYê´íÉ?+"wÄ 7’Ü.d!›Â–fPþ>@ˆ››¨ÞT~/ÞÚ06®²`']WGwx(_Ö§ku$7E#ñ—£žâsî[ aÇ Ë&Õ*2Š@d†Áý´ù1Ç£„_?¶‰áûqÙòÃISªµãé58w«/)ýÁ H¥.7·íN~æ&—(Ç4…pêM’>Æ/?°¶±”Træò(à&hžƒƒçëFáˆÈa%YÈHÉÏHÚ„$™P¾ÒØ’}»ÂiÇ‘vã0s·*Ùà 4É53ºi›¸“‘Lwˆõt4¥ž¤~ýÛ€mÊ•9dßà·ï93×BëRqç\°‘+V4Є²§ã~¥7@ÕE6ÕèXôÙåå1‘û±ûúö•/Xë²;(f9畃!¸^—"ò¤iFßO³.yŒÆx cïSC<ð8„{L§ŒîðÄ÷øáO£‰K›1XÞÇ+ÝÏ€+Ȇk)m‰ª&!ŽÓv-äœAr)+ÄÐpñïRÎû¿£Êÿ8Âÿ"ŠP¶8BW|»]0Ùo¬‚6ŸŠU0å"ÜÁçüýp¯£p¦’Á,r»ï‚žìÂN‚1w>Y§æz˜'ÉÏú?5µìï…Y&G¹{Ч?0pÓ’P´SÅrkP)ß=©°B8*pŽC&ŠE}Ù»ûÒŶUê…ÈÄ»{wŠío, ”ªî4¯²P˜-º]µÌ}þè–8¾z©H6%Ä–½§’S<Ð;W|g¡t=×Gd}m®!’úº0“JEiåÎ[,O6ØWO—Â2Õ7ñ(W‡ø¸QD0ãJ®¦QƳ'£ã‰ŸìÇKÄò¡êQÑ2 i´ ÊøÎ&`%»ƒ¸9ŠÂAïIe‰pbÉÊG¥ô±¥N‚ÒtÏÌ2!ÏÊØÀ!â¶13øÔÆ*Ù)ØOYÞ$Ó­RÁícLì¼çø›An/}jB/¡jJ@D²~þà–­°¢áÕ2CC‹?ö¤²×i#Ì]X%HF$#ÜÏó%:vç…d¾xhŒ¡Cäv6=ò’ðÓaB%û:Æí~” ¡ø‚K‚øi“.ìÉÅô ‚Ü@`Fé0ýÛ¶ò~ÎgÓîßšÅs×$%÷úì4B‡‹PïBQS–è'õemË~Ñ*+{f„ϪTÀ ¾ØKfÕ¼[_vJ»P“CÂx ú(M¶Ù÷¿·¶×P1$ç)îEz%ð1T>ÄÈS±›Ûêfx>a,ìUÝ&EÜÇâƒÇæ,˦Iº‹>f·‡c ÑK$§Ù´‹Ã9~ªÈú?Gq¸˜XÔü"«`DCµsÕN&:-IUɬ‚ì”%›ëªµú’YNó”°ñ`[X(Ë-b¼•¦,,¶N˜âìàÛxxɬ¾%êL«Ž -šà_jLñã“Ü^f¨»ôÑÙgZ,ýÑý€S‰L„*#W…öìÒ•†5ÿÿA¤ín©Žë1]AgY zTû³åO†’´"©ë±6*n:YìÐ'iÉÍORz×—È’ƒŸt#9ý6C[[çý†€Ê5›/XààÑ 2†[âKÇö)–oD˜:×Ôñ(•eIØ-娠Ø1è¸dÞÁ|’gêºEÉUí5i¨‡ÑëGR+câ -;þý¨ÑO`G€°Š|SMýµ)@l“r³Š±¦¹»–=˜@‡[›*ä1\7Í„WŒK*’„ìK¬Éò>ƒê\FŽo†Ì\Â$&ö§È ® Qÿé•w#.Ÿ”«ˆM—bå³ÏQ( Ñx“µ½`¦éV$'ÙwÝì®ÓÀ5|EÁ—6j!Èö ÂÓ£:é@`KmöñÈ»‰¢¨Íâ±zð4–<ÑFR7 Æ‘È~9ÏõòeÔÀ]^c-fßã·sûËÅþol:,IÍ‘·%‹n¿Î¤Y‰KO¡@ò£¡ËqnLp[àßöYèÂcÝZÝéú ý|í"è;`Ì–!ôSƆf”¥TZ¼Î(50ÍñyÅ6­Á¡VáRôò»ÑZòµ¹*‰€-ìN-aÁÎíQ©åØ'¦ã3¼Â;¸ÐÕæI1IÊ7¡Áí$ -Ç„0Þ¾ñÏ·ØùwÂm,Àž êi¾9 -- i k?"Îw»Ùþ¶Nz+XO–Ï‘d8Döÿ}NCœ¿¡ÑÏf¸cצPÁË›ˆš& „¨åmƒ™g‡ 'Pp×ãõYÆÆP-âýd¤p >´S”]4{˜<5óÖTÌkù£ kà}wVJÐLõ|VIØk~~’y!üûÏ'„צ¤¶æ”îòÖS÷æå®»"à…Úåì¹°p݆‹hs1BLS¬OG‚9­6ö²ò€"ÿ­×H©çmëy:dÙ½WÐœÐÖÆ;y• “ Úúó¦Y)y5Õ˾{Œé­Ëmgµé¸Þme;ÛM\NsŒHÁD¯‘•—ê‡wÿ}®±N>Ôk$«$å[v2í°ŽñêôÐ8þñxèW4úÌó° 7£ôPãó)عaº¤'õåxóVͼ°™°h Šè”>!Ukª_Ñ=`oº]+Št±°?AÂFfi«ê4Y ZG”»­T‰H¹áÚÏZ=U(#îhÔî€TC -˜–Ë“ù;à³~0h`ŸÚ“Z|T×D“J”j¦Á¤¨vbZQ¤øë1ˆ­Ðõ38Äœ|“i¥“ðeî¼i' uö!õ6?Ö¨è³ ¼̯ח¤€åGæbÆÚη§ÿpJ‡¸&sô™[ɸSzo -Úg¼˜l³Ÿeðk’×èí‘äÇ|.U ‹†:®Ì.Rȱ‚ð¾î÷ÝhÁo´ÚTn€õ‚ A"Ôô^øû“Çœ#a}³»·`:ѯÝ9Û51ÏJJ^,Î2ˆÖì޶ѽ-»ž8ç ÙàB”Á ¨E~¸=Ì#Òi­¯ 0Q åÅØóˆA"”‹õˆk~Ú'K_7sP!âÇÚ*šÀ%ÈÒz`m1:—ºôÀ¸+Ç)—¼¸›ìœ²–#u™u ¿ T{LÚæ‡8ëXå@£Vè•SÜ ÄŠº -Ö8Ä6—1nÒï7Þˆf :Á¾å^·‚ôQavkgÌO&„§¹vÚouü}àB ‰>ÖÓµÖú_¹ Y¸»ÀJ@B¤wë+ß,G  -öq®ÐÖÄÝø¿ÚÍ$jY¸pUoŠ0zÀÛ¿¶$¾KÅŒåTdœÉÐõocPN|°±ó`‡Z¼6O9ÃðÌÞÕ -v?¢?ûB…° ñ¥Mh2ÍBÂbiSî«ÎØ5Š05Úœeã&”àÅ7¼ÜV››l¬ÃÓå„JW9›U@ÈÍ]ÜÕÊ)š-'?Ü”EQg”€Z:o‹ràì+ìúÕZ¶øÊ^îí˜bÎ&*‘Í&Ÿï—ÄaÌ!á ŽðùÄÕ ‘ÄLý]f5 rh®€‡Ê@AÍçX\OuÊ3:A£Áê«8#âÐ…s›÷Ëòì~Î{«ÄÖ… ],\8%"CÀzb©°QrM*ªË åüÍ/aÕ1Ž4Z„›?I3G?™ÓCÚÚwÔÚŠ£g>\‡Äæ7!8¦*}¡êzdÒ(}OÑèK¼o¡m‹qb%å–Éǘ±íO1q‡<÷"Ù9hß%­çŽ‰5­Äÿ"cÉÚ±A² 7R‰V²ö1ž ÎK0{lVÒ&÷WçF1ç“%±ÛëÄ[‡ËÔÏ‘òwKæZê– PãÀŸ!¥Á;s[‘Ò–[øÿ:Š˜åA2y3ÍÍßZžÙEó…ì£t¡ãŸ!Æ-ŠL›Xº<ôFð³j™ãöŸFpÂñõ¬,7¡Ò>IàôèG%búÀG{‰£f¨QAXïÔEÛaù'!•ó5k^“#嶸·al>Íl´%é¥|…7¢Ëi""tz´¸BÆ‘‹Þ…ŠÁØk•{ÉÝtÉथ !Þî"®¸Nãhõh}_T 6L=Mç°6f¤pUÚÍò1Ä -K!·~^KÎç1’äk¦[ê !‡€° O)EÝOÔ±Cáæ[ð‹ÜíÀŨÄãRï™®Úôšòû­)­¹Ág í\  æ.¬±¹ÎQúØxÒfEÒæ°ù‘|º8­?Ý­¬½‡.\Žã³c…' -Ÿà¯/›ïHP„Î:;›W -Ûµk~MAQäºyØf.'í8l+i“x…òûq¡FØ}˜¬µ =ÌŽvÊ{°I¸Û¯·/x3ü¬½e91RD;¦!Ž&A?ìg]y„â²J”÷kÔéHÚõªhO%¥c£d¦b­J—O=™ ›«졵—RTäMÄ çöÖúH! ‡J^Î[)·=Ou²›¸²Ä˜x>©ëhHÓE)Ê]p ¶°¶éÜyÂ:†¸óÝ] {z¦À¡K2‹¼”ƒÞÀÏÜÔÔi:¨Ê„Œ£ ‡Î,ÏÞ[f1\ÔµÍÚòuÆ*ýÜ©z0./ëTë©NKùS¶†ó¸ ð¶öýƒ&nêɸ0SJñêÄŒZŒ›É½Æl³ÉX±Â!oèôôD€ÇV=¤ ƒO‘4Aóô$vz]ýkæe»ƒBso?×Ù>]W¶Ù8Óäõγ‹ðàz-{—téøB’ŠƒYÚžpKŸSÝŸ]îE7þQÁíþ¹fîô*ý<¨¡+lþQÒ¯-Ï ôE<õ)cœ84ÊA™úÑ‘#¡_Éå—Ž<<¦Í«"ßÍfìt±LÓ\†d!òtžÅ‘_õµþæcÿÝ—iEb`ô*å#$zÀ= -ñu0â±Ç:(»æ–D«âÆ: q0§mN°g¼Šá ²ËóM–hh¬³WvŠ‚õ³±,óžœÃ˜8N.èZÄPÂ: -êÀn¾c1€zyY;ëÚ]‚J¸åO;4±;¿MËéŒ1ë(ï`´["‹ß’Õ†U¼¾"¶æmð—,Ö趃%ÖÒÐ’R‰zG±äôviT’µ6teÏ9KEàrN–?¢Cøû@‚å"â­˜UƒáaæñB¿åΟÁÏ…ÊÆ•%üÈ?ÃN¥ìã96{Ý“„m_2ºkR™P7õÇvÁt.…¹½À\„ëÄ€¨.yÇEÉpr9À¤n .€Ï?’üáyÀ_aKcüRÉ7Å7Ëëål4Qè‹ý8tƈ¤4­M§OÀéÎW£¯®ª¹t{D¨Á0©ÆÌgÔgÙÈëh0™3SÍÍÐÍbV0§w³ž¡ñq:gYjeC]•»þƒ¼~Hêwå -z9Ü!· -Ÿ›¦ä"3k{ó -¾Æ¯{ˆ°•p"VOjŒPŒR?ÐâNßìª'5 ÔÁc«}iª™cãûýY3†~Á“(^:ÿºIÑk•¶*eÖ»úž ¡|¢­±ŽLÚt9nI8<SmI1.V‡iÈ`åo¡áÀŸ_ÖîïoÙNÛ­Ü®—‚ ¦ƒÉf+"±›9Ýâ¯Ð§5ºã¤mc\Äx$®ÉÙíjÝŠóƒ1™Õ°ÖNº1]Ž -ƒO7¶iH–—ʬžM¤‚Ö DÈ>È‘þDŠ~oÝ*üØïδŸÿìthK1¨ú¥™¥¢ÄÕ¶y …Ù‚A‚ým‚ ÊåÊ,·‰'Årº˜MZJ+6ì6™ jo»¯HC¹j æš¹®"Ÿ^^¬Ý;Wb•:¿Õl_gS²1ô¸[?38¬˜¸¸è¦:íS5ÛÒÍ} -î½I{Ú¸’Œhg¦Ù‚HIÝ`³ZNñ'&ðÕ­O%®G,Zò‹%çuoÁ`A»&¶j}%kųéÜo™jì]¿á<zÇ,ÇÅ„h•› b]¨¥ê‹ï݇¹=îô÷€Ñwé1"ë¦ÕùvDD0»ÍÎd]>ó¡Þ†1QD~{n3ÇçBâeŒ„®œ[n³ô-Ì;a»AP¡x”@y4Ó;ÐÌPpå„„[îê®6má¼FÄ  ‚Ãú0•ÀÚ1¯8?²ý°žRùŒ:X{r­éx{ÿ«©SÎËÍõØÒÑwOöä(Ì­k[î³ÉÛ -x¥äR~ HœX∪…d^,„Ûß±¥\K<Š¢&ù]ôp®ƒé XB%í¤t @ò˜ŽadûÆgt¥jk¾T…cŠl¨=:5˜‡ƒú п ‰«ôA†¯Ó•d~á—‚Ý;9ã@âŒ1Ʊ¿¨?SWmôpL†©§ûz'ÅÃ|ŒFDTZèJYR“g¾srK€èO:é÷«´Â¿b~Z)ÓáÑs[–_’e:U¥½rx$¢ì8ýq‡kÁ´3˜Ìv8V¿Ö%Úc"ÉP5ªêZ>À ”ý\XQ³N:Þ>Fìò1Í-Ý;˜bTþ™Û¦Ò6ªï?ÔÃ]5ó­ØÏ ÇlÃ<ÓP7@Â$þKùUÝU“¬ðûá˜!gF3†öÓ϶²Í‹y•6«¦rD$daÓ-t°#åò¦£îœ@NDÙ‡®‚cP¤ã•ÈéZöóTâè 32·Û^yÈ—»RÒ2Ù÷gùôZ%¿Š¥œŽç¡#[î¤\¼úëS³örì;áŠÒaHçK¬ýعæ9Q”Î]¿ÂéŠùå~`2*{LÁú¢ÆÉÜ5Ó¯=€L¦ö£”þä,U$št¤§ÜfhPQÉÖ{6Ó!;Ô‹=Ò¥eámò”wî¾CÍ|ÐË5C°6E¾ô’ä&ýµÏçŠoö]O§Èó-s™ü_éÓÞRåvÈä¸ÙÛ6v ›ç  ŽRmÈøÄä$©•R=)ÏoÆn“£¬`jœÓIX R}·v!·&a*K´—€#òéå­Tž¡_‚¿F14~BnôU¶¤py %˜?ÄøïEJ”fí9r§ªÈ_J>·+’ýö‚°¿3=ÄR(T§NÉêÚenU©BêÕ©„t²åuŸµë»›Í%œ¥ùc Å$ZE/äó«š[¯ë”‡+ÂuÏ|pMÛÒHÇÁrç~åI(¦Ä(ý»ùDøfBrXèz’בrJ?¼ÖŒ‹i|îmr(Iw‡b· - ü> ÎQ~}ðÆðÄ¥@[ÉJP[Y0õÍ+œVÅBüA*Ê6ó&š¾æ¹3¬àaù½ÂƒÇ« Q}?¾ǹÚ}ƒo_X>æôû–v?¸"f+cS/ìtÀ¸Xàwrge5°]‹¨f2}‹t¥¤oâ¯t+áã—V_rŽƒll<³9è9ZÔÀTj64‘,¢PÑxÉAÇä4†Ç)Å°\?Ú vºÖ(77æ¯åUY[ãb¨¸Ã Œ´Ô D> PØg°_j¯D Ý/±$pz.̹Gy%õ“±y“¯K÷«á8—(^vXC°Ž¡ÜÃ?Ér˜G‚•€QX1UvvîäýødÆL/ü¥'9Å8b+¯ 6p?²áD3 94ÃÖŽ¬Õ‹? ”Nϵ)É_6íÇ|Z?3)æäEfL:¤lÐPA:Æï\£XÂe †ðÞH¥wãÑa -Ùo‹Îa\¬Ì2UÏc1á³{ºéE$½CPggŒ*5'=»7¯^♤VçŠc›ñõØÓjÕC àHà2tRÇ5à1í<ð"¨é³à0+l#r»†§ãœ-²SB]”® ²ª2èJ¾«"õ% -ü%¤ÇÊ^ ÓEË—cyÊÍ+ºöÀÔ¹—0”¸ˆ _QAƒƒ©—18ª§}ª, a!áE®ÿ28C®v5¼:˜ ý¬FðC%\9úñvcN§ª{‹ÃYgû‘7¢46àm€·ÑHõˆ§Þ°8æ¿1a¬EÒöš²UlÐÂB÷9Ë=Þ^"PÁOqõpÔšz „úp"5¹a¼=EócHgr£ÖSãüW¸·ÓÒ—²O);Í$3¤ÉHT/d„O Z®‰>Ó,`?qÕ׉ÿ(îä"bm)*<ϼðƒ¥°¹âÆ+‹t-[ìxQƒ“Т©ÖΨ×kºŽ ¹ê©šÔ“)øýü¹ogUíg¥ð’l˜©(ÚýÝŽ[Lò˜ØëÈÀƒŽ#¹½k“»~ðæZƒõOx_€îž˜Cȹ;ZK?Æþ”E‹é4¤oÚ¶ý\é -n|`3ídoÙ–¼´HÌE°dx/·~UÚ$;eÄF í§°&šKþ‹€êCEê+~LáŸÝ¹ÇêšÞ:Ý3ãª\;^þp•ÏÁiÎyÇ瘸Z|ýüMŠË<)ÝÛËñvRUµªý*ƒ…0Y¦ |Ë] -Ì<:ãvã‘i·ƒhVé×ÔœLè1; ÁŠP -ÓIUö?Y*íÚ-ÍP89Œ”sMçèjA&;]T#ËK„§³%ðmù¥yúÓ›‡©gduÄ›Ááb¶ “¹•¸9ƒ>C_ZÛÞ-3®ùÎÑ fv톛Ô,vÆÛ§ø ;3ˆˆ·G¤W¾À_%IëU»}«•@a¼-çcï] À=äÓ¥åÈQ¶Wö­‘kòð –Øfi a8ÁeŠ^;ÞãGCVk…ÐcÛt9¡7AˆÐ¹%7/V§«üÊû9ÿ¤]héÏÖ]]Š+ì´Û¢ðÓåkL¤‘¦[2dcÿ­¥Iü‰Àôž·šÎ!yfýôAÞŸÿñaWdA'má@‡ÃŸ_A¶ÌLð -j¤b\„%Œ¾¿oê.)ŒÊº?GÏÇ`‚h(w˜RŽ§Æ¼zÓ¦ÿr0 QŸ¸•ZCH+Ò‘™Jl¤E•†»a™µ|æ×IÚBF5 KÊf<¿xÞñjÒý·¼Lëù~€ròkŽÉeѺ晦õÜW°óþFYê>R–³ÒôTƒFÜçÆñ¼s¹ìa³„l°¿LÛ2Í +,™EQ¤séÄò"œÄÄèü·r£òœxÉùß=i¨©´¶PƒK|çÂÐHløt*=Š ¶ !®ôºCSÈ“¥Q4KËeŽc¿ÃP!Ú ½—½°8%Ÿ¯ì\8uLf2ì»!ÒFnÜjĶ7ˆ&cz™ö#ýu/,€.Õ AôB@wÇŸÃŒ~;Õº]ñæû‘deÞsË “R·P,GÇìõ›‡ÄH˜"eÝK¿ªéjDíœòŠôø^¤ã³Z‰(µÇ–5´ =°ØqöNö Qõ¬4êØ"—ÖÏ˳AßÐG¤r¥25Ó_uìu -^d÷¤™„X‹~ZŠs¡'d‹ÊŠr{²VpGšrŠ³í.¯o¦éؘ&í:’ mÊ›]ŽI_Ki„~Þ'ä^þFãÎlú —¿vë`wÏaû¡˜ÄëÌHƸ|ãšX·ªHŠfÐäßçƒå .0[ע̺ÂlÕ4-N; -*ÿmˆ^*ù¬Îš§çØÃÉÓA!þ)«¬ú5]`<|®"]ÿ–DÀ‰a7Ú€ù¨ dPJH>tן+1I•-d#xoö;jQï±â¼‡tíø–!@—ëËEQ…%¦mP÷\¦ûÙçaÇߎ¿…Z¦C Yðu÷“m.r¼¼õ1›¬gOŒ P2=¤jKËzàŸaˆÅÛ½®áºÚ‰M»µh7‹ÌfµB]o01Ûüêôþ‡É=ó3gi&:‘Ü·l l¸NœDýä`O%üÚAÜ -Š‹ 0Vð,hIû­YfMÆÕ 43<À/´Ÿ wÎ÷pó³'ag'ò¤bx8°eáØ;˜\&©kHj=V+k;Ô¥5KÙȃÚOÏ -}h ×zîᨰ.¿YpŸ¿ôNˆL¸ö”$mUCý++dK »mÁçÌ‚. >(‹Ç2‚"•}¤!® ÀÒ†À´HFø²6tˉ­¹ü{ò~¬«NíÕlø¡òWtÍØD ‘ñ(ÙõZcVÇä¦÷Þ“YÌ®…‡vd'¾LJD5fÈÂîÓ¦$÷í»„e(ä*_uF«`yò,îmh¼ˆi ´1@Î!þpmô†a§Ôµ%ü’üÌàý"¢Óuh‰1Kýn¶òp¯—WV•¦‹ä^§ýjù 1’eDÎ΢qà•X/ÿF€©÷{Æ«ÎÃiý½?Œ±>ŸÀ(íYEW“Ç@ t1uy§ÿú`w(—¸™\ó¨žÎÏbÇÒ§º—{„«ÇåBÄ„1>ð~ø.ÍôÕÕ¦8.Ò‰4J¹'%÷PÅâ•,yßÞÝÖ“Ëä$>îk«*K*6µÔµžà dƒŒÁ _™ûÐôg <–I(é¯o\‚´BégøY"Âpà½é§<•Àb£ -„€cá³»”^€FC€Ÿ’QJë‹ŽAqîŽè¯ª|O®²Û—ÐäP†(ÉdÏ´oqé:)tü<¥Èbœx³PbPžëÆ¿ùˆXÇ.3Ô4`q^˜Äè×'4 ÀOÀµéJäj7ÄŽÒx'ͤ!:ðšY®i÷Ü B¢¡P—#ººÏ6sÞ. –Ú Ì}Þÿ&+<esíò¦Ç®tÑ&å‘H¿ã#ÿ“..ɬxàG&¸Äô)§{2òDG‘±èrhÁÝZ‘çaÀïRð°]O$ºÅwÌ ÉYÐ媃6…ØÒ¶~.-zܬò-üýz1ŠÆ¤s8˜7à š`ó=“[ÌaÉdˆÄ,#d¦:ßÜQZ·jÀZïŸä2Ð,œÞ\²5§Ñ³èæËÓZ*#jÐÍ®I@ź£|´žÕJ5ü¬$h;j»ÿ«8{RM™%jÄ]!Æñ|åŠH ÕLŬ“á惊¼Þ»$'÷Uqü÷VÜÜ«ˆÆˆ¥½½‘ÈëÛÃaÄo«-P –iH|ÔL¶¨^l‚… “C/¤©­d4ËoÃ[ -#(ªÉJyTaäd`<½ &=zÝyÃ0R -Âé¾}Õ»“~NS3zZVü,›Ü¸ú;õþ?×ÜX«ùÃJ=ÆÜägé׬³þä˜1 °Ùä…JéO¹bÆùåT5PmÎÏW•z‰gñ¾ÂïØÇ{åþR3O|QíÆŒ¯CS=¼„ª]ÁnhˆA'Æé)sbÑRwÚïÃ>ô&? ±5 º#ÄXg¨ö;¼çO£û…¡†ãêE¬\1b]ì/Ÿ-]i{™þfrÆþP•xϸÂL(V4EÅqK±§Ë°CÉÕü…˜i+F6x+u[òÎâ)Çš'ièòµElgpý3ñµ®z¼ä -£ùeD3ö¬v´T;s¿aOÁë¾£÷qþôÞgÒqEdÂà|ÄC;¿.0‚ëÅ}L\ÙÔ\i GîJ *D9cä@§xÇϬ+B8<šä™üÏMÊ´Z~Ftcï0*:‚ˆj·ÖÓ ç¾îÄâùâFðÉsæ‹ã´.o²1Ô’Ïï‘ßc©˜ñR–Ê –¤ñcHÍvƒ~]]ƒA)X¬ƒZz=Ot>œÙÉËQtèîÜÔÕžý½]Ù B´¤ ÷K`&&VÇÔ•i‡WÊDuƒ[Ô¸™ àÕó£û«æfasTêO8ù‘!¨¨¸u[}þìÑÀòOáŒÌú«lÍßÚ™1MQôHée)Š›Ã&Rty@ M£³UPî•"¤O¯4M}âÐt„0;&¬t:ØñÃwhÒÜë \SOQ„’vµ`{^ÁËÀ¦kŠÍØ®â|¡‚±Þ(ÿó|HÆ¢¶¢€–Ò2xäÈßÆw:Má†Y¦p†v›‰^÷Ö*×RPâ¼/Ñp÷á¬ã4n!¢ÿgîÒÒršÞ—þÁ£ÏëëQÞŽUMwE%ƒõ~ÌúP´“¤¥!ÀÀ2²íD± …"`r®RÖÖÜh¶1‰"y¨»óá+* PÂÎêÛ–ÉÅ<¼CQ)ÆOí幘&1p@ŒëÝß@¼æÿ£u‚Ãü %‚w…û–Tœ¨AM³ûõpR¶y‘z£»¹údÙÙpROzYŽÊx‘Ýè–‹É Ì" æ¨®‡¹f o>¦·àFQÎÀºÝJÓŸ¸û5y˜vR‚‘5ë¨qpVÿéQ8±´ Èga -ç¦ôñ§tàŒ…n}ØŸò»ëZëî4 -ÄßH¢Š$#ј§DS0Óg¿p‹îîW¾ýi$„8“õ—zµ äv›nWSÔPªÍºrƒ8²7(Ö©õVø“fÈw!E®<‡µDk›Y4š —d/ö&1Þ®>Hvüuãåðt€Þì·Âù¡x¶Ãl -°òÕJoRÕøz-’p²ãÂwÂk¬™Kƺ"¸—iSZÏb&C`æâœPm¾š/Ôþì”;¾ê[9é Õ¦¶ë7Ň_æ;Ÿ¹bê‹!Ü/tî¸WÈõ®ÐÀ¼ñÔÆ”‡´ 6ûËcj^¾;ŪÕh€°b„ïC븤In§ÆõËòOÈÅ -4Áhˆ˜Ð¶&+Ì$.†Õ&¿”<`ŠÚéî A<¬³æ­õàx°W“XBµ‰’ŽöôC?Ìʼ[âàÀ:JÅ\¦œÍ0…£nÌi cÄgùá¹Ð¶Ø,=z¶re{öm½~“—ǃ% 6ß»qwâ𑳵÷?{ãr˜Ö?²ƒ¨Å$^®4}ÔŸ>“å¹ê×äŒúG ¤} ±tLž(“o éä(3>mèÕåfWÉ?H: 7‰ ¦‘ì&ïÓ=EbÆñ ©ôÒÈñs¢²±r×ôû¸°˜T×Hd çKŠ²³ÖxOy·ÊW·¿E¬sçê=Tçæv‚(À7XŠ6lÉ°sœþ䴶Ό6n²•ä·ÏôŽI?gŽ6²/*ðjåX²T™t"«Kv†b5yò„.ÙÀvð±/zò˜%¸pÂ[û0¿<½‹@¼èÍQþ,ù_ÃO¾ð¯T؇W¡?àt]ûXÏVäsDÁ=¾«”áȼ°âÅ*±‹ˆ -ÍÚÖ™Œ_Jà´@©ÞÚb ö(·4[ (¬ÑfëT²&¾âšíqV]/*¡S ~ œuó¦·Ù "ÃÅša­äå7i˜à]þyyGX•p¬iÛÿS—œH[#Ov}'*)‚¦–’"çtΠòãV$Öás¢):¤‰=w˜|÷¥ÓÂŽQÕ€zðÃ/'ÚϹвþZXö4tkS/ÿ\2 û8}¯ì]š -pó‹¨Ù•ÓtÑþš(úo|ãXJ 'CâHd«Ä˜§\*`½œmÆîæÝÎþx¥Œ›M'ŽŠB=Òûæfæîc5'`bE°ý²7eˆ]‡ù5%_) (ÝÆMif2„TŽóŸ3ÐþXŽºþHõ£ ø˜‘XŒyWaó®Â™l,7’Jîdu¯$ôÓÏ)W5âb½ðSø°}ÐJ­:t§Eô•07>KÊHÒvǤ¡†w" †o8ƒðÅö¢ð ²;^8¬‘Ë…1°)&*Ó=€âÔUQŽ€¦Áý#_j< ÿ''Mà¸Ùq¿S¤$=Í–t‡Ìί+¹`Ø|o¿ñ¦¶eøÉ039W ‚¼KØk6ÂÒµæ`l$÷Ô"lÇѧ #p B†Í¶Áß½Æu5Ú÷ˆ™`UåÏb"W‚¦~× >`WÚ+DwVVNÑX\ ¦$HhÓ+Ð A¦YAeƒI`L'ç÷ï~ ÞŠŃÌV„«t´ì+Ü/îä¬ymðÜ#dÛQ¶6ö>Ô4qÔ«´šˆÐùki¥âmÆ‹ÔžÞ8#í»ª0«uPYÛ©eÍä|êÛ?nyoæ}ç”·Lw6e8ŠƒBõÙºì$Ü4&™<6Ý dÍ î@ñØ/¤ÓÄ¡¤ícË¡>~9#ƒu$ûn:­H–ÖÉW@’ø»‚Õ¶J¾ºë5îZô8 øʹ±z€f±߈#ÐZS"Öafˆr|æ¹8wŸÀýhÈ•€U«U¶‡ðØ7ŠïhËÏbÓ–Zh¹qOËhIy|ôÞ'I###àKÇœ´„<UÝ“Hõ‰ ;.íÍ9”‰‚®y|źþ\`¢GQj4wä¤gËá`>¤£c8Ì›{Úœ•]fçS[Éâ`69Ÿ³¦X:°¢Ä“Ý‚åÞDJ1Þ[¶oÕ˜¸EY\ó@fÛŽÖ©U8³iéÖ‰ßÈ0¿í4’ÚÙMe^÷-0Ÿ„k%B£ÅíµCôûNyf¸\'ݯ×ÆC“ôœ&¿†|‹ÞŠ8oÄNÕ›5œY›ÙifÜr–î™çgùµ -Œý§ƒm’Ü#û›]Ò5jÕ«.9fѤÈ„râòz¸¡$Ý qèÈñ0õ­z4-eDÐm{Óãös£Á`æ<…‰$œðHòU`¿ý9i™±|ô4u/ùR¤H ΊZ]³ÚÎ2o0Í·‹Óˆº2#yc|¤±%è§#…÷Éù´(J†~~z¸/J¨¼… k\§ÉË?ÖÏ~ΈÞ\êî6µ~”à—„7æd­¸£Ëy˜Æå+§æÁ–ào¯£•ú_=f}âóiàF–áåi1ä‹+<¹GÇÐ׺t庣¤àœ£iS³Òþš®Hýñ± -hã ¿ øŒ8Aö0£ù{Šï M83'6ø­ÌyÔj+á§ZMRB-$ ùN³T0¶#¶9 0Zó ׸®ƒE`ë’`Úµ^ßüÒŠð g×Ɉ¹*ê»)Ð'Ä# Ó/®7¤Z#&´i¾kÙVÌ°ô$ÓÓÍá¾µ©m(¡ÀÅñQ¯ùèL/•¹1­CÝß }f§oP1ê¡L«üó™U:5{Ò;(‰Â³Ú!¾¬dÏ¥WJ5)XW: ¦¯ƒ'›I+ÓóõEÇšŒ -þØ|ðݔߌ?|l‰~"#{?Qe“%/C"yz6DZÔÀ_ÝÝóí^1–]£ûTß¹ÚÐ(_¼Fù^T…Ù6ÁÅXâêãÙÃô4R¥‹õ© LÙ ICšI If¦“æÐÙ#jU­<s ~/«§v‚¯î¦Ð긨Â(œSiMñG«Š«sÙw'¶k/}¯—¤Á;¤8ýùu·L„&Û¤|G¬díW2OŒíj (ˆ†—½RV·f„¸÷¥<žtÛ:‰PPšòL|õþ ®}ÇO2à?-Sä,ðh( Ø£þÄKÎ%5oÛ1oÚZ–ùÔ2§÷_~A‰o¯oâòmëp«tù„9ø+âº;ÌŸ .p!'ÀSÍ‹"Yìr4c—KmÀ, ôÇŸ@ݼó!M &´%K«ÁÅ’<Û;Ÿkñ¡VO8°`Ò]:r‚𵲋fˆÍ½2ñ’™®zOí¯òBÑ]^XÁöÚò篓®$:BsoÉœ¡kØ û›Rï ØçKb§<ðW1+lþ‹XXtŠõËth·˜RHH×´‘É#;†ç¨" R}Ìßœâ\äRªè -憀þØrÖ¯Gè1aˆ/.3M«‘²6šô‘´Ë ÞÚA𔑗A:þÉŸº‹aöG­ø>n+´^”}•Y”R<¸+Lš*@ÀÅIaË—™ÞØ}-G«5d’ž€>ÌÉ4à>Ë4(¾ÙWëH]o ÖnÔ0MýJÌw¾ˆÝ9”7oÝH·²@ü™Ù^4î )íÁ¸®)m I’ -_ÅÙ<ø ƒ°C‰˜[ -h†¤ÉþRo®:rcXb)iY‡\E¾ÞÓ³"çÙÓbTd­EðÒcQ=–7Öð¸­ëNUšfÌÜÝÅ߉bqúêÔ,ýA_ŠìŸ¦%译J›‰Fy~¸Ëÿ.·„om] ìéCo¡ˆ#XSs -J›zæUˆ9Zã”#N"ÚVIxÙÐj!Keˆ”ÎæBNCô39¨:|Ãd~.Æç6ùábHÿÚ¼:²kêôä°3j¬5èéèòÙMü×"ß®– ·b˜ÛÚT? +Âdzéad<Éa&ïG›FkÚàªRñSg3Rpñзfû)‰’¼g{㼡íkuØqüëY9vfrÄÉ@@ò䔤p®½ã†>ï -ÅšPl]ÒßÄÔŒV¼­¾9l¸ïúQ=¦µTXtãº<üEâËÅœ —K0å0Á'ßuÏÊ_]¹‚t†Z?/¤}í¹äµÐgÞæ¬ãÏë„‚ÚTßb«¼!þŸúÿ[øÎzÑ }v¸󤜉z\Û™Šcj@{g²Jé©ÁL—gv6ÑOÜÂ~xÕÞïßÅQ²ÙŸÔæßÍyF뵑D.zÝîÛ[C@³®èiLóß-\®ã2ipTgÑ¡€ÏäÊ°¼— „Ç›×-×1¶BÝfF»T_ÊPý>Zæ]¸BȲ>éÑ^?<ƒ*_ xéºûDÖ¸½w‡i„Çv3¬›éƃB×#…#g†(¾wV:RŽq]ù±ÇS=Q”"ÐV6 -w>·ò,Û’`ÉžÁa³ -WS”“@È—%0§”C¿¦> endobj -612 0 obj << -/Length1 1630 -/Length2 17718 -/Length3 0 -/Length 18563 -/Filter /FlateDecode ->> -stream -xÚ¬·UTœ]·&Š»w(‚»»»»îîîNp‚kpww·àÜÝN¾ÿï½w}ºoºû¢Æx×”gÊ3׬±(H•ÕDLìL%ííœX™yŠ–¶F.Nªö¶Šö<ò ª¦æ.€¿r - -1GS ³¥½8ÐÙ” ej75°²Xxxx(bö GKs gµ†ª ýIþ1yü‡æ¯§“¥¹€ò©=ÈÖÔÎù/Äÿ±£š©)ÀÙÂ`fic -SRÖ‘Q”PK)j¤LíL6e#Kc€¼¥±©“) ÀÌÞ`óïÀØÞÎÄòŸÒœÿb‰8€'©±å_7SwcSÐ?*zÈÔÑÖÒÉéï7ÀÒ `î´sþÛg{€¥±‹É? ü•›Ùÿ+!£ý_ Û¿º¿`ÊöNÎNÆŽ– gÀߨÊâ’ÿÎÓÙèüOl'Ë¿j€½Ù_K{c—Jú—î/Ì_­3ÐÒÎ àlêîüO,#S€‰¥Èèñ7ö_0£å¿Òpq²´3ÿ¯ 莦æ@GS'§¿0±ÿéÎÕ øŸª‚@6ÿò¶ÿ—Õæ`éìdjcƈÀÂú7¦±óßØæ–vLÿÌŠŒ™=€…ùßrÐè\MÿÕ êf†æo@{;€‰©“¢½óßêÿ3–ÿß‘üÿ€âÿ'ÿ?¡÷ÿŽÜÿÎÑÿt‰ÿoïó‡–t±±QÚþ€ïÀß%´üÝ3yÀ?‹ÆèøÿóÚZÚxüï¼þ»µ–é¿Óý߀É8ÿ¶EÄÎü/5ÌŒÌÿZ:IZº›š([:[Ì€6{ö/¹†‰©£¥é_nÿÕV 3óÓ©[X[ÛýCÇ¿U¦v&ÿ½‚¿tý+&qY9ymYºÿÅ‚ý—¡òßApV÷ýÍíT£`oòŸ‡`DEíÝ^ ,œÜVn–¿÷ïoB<¬ì>ÿ‹ÿbù¯³ÐÙÑÒðíoÝÌ,ÿªþüþëôý¿ÁHØÛ›ü3:jÎ@;“¿ÓöŸ‚ÔÆ.ŽŽIþ×ø[õœÿ5÷¦¦î¦Æ+‹öÆ|ÁViéÎ589CâßúzX ‡B@¿êÕ óý«ì»ýÒ·xÊ ßªC¦x?Z=N@ï{²´û#=Ø6TÝ)¦y„>d4½ùh”í\tûLú¿ÓOµ¢½.çå7¡t9™5÷·'TTõ‹ß`ˆ¦ÚÙá.iüÉ\óý1É@(¾Æ©uqX_ÀÐk -NN)¨F‡‡»¯¡{÷è²ãà)ø€8¾É'¤IΆŽwõÆÐ/®\N ™ÍZUh‰nž¯‹.$ä÷±[,éçlÄæŸ"à»Ì‹Fqrna¡ˆ±¬… ‚ô$cbÓê²úµ‹2§Ëœ«gu‚¼iÖË<±–ˆ Q‹Rid…>Ð4©…¥æ3tC˜Hk2sIWÑÑŒ˜æb¯Å¢D‰®ñ-KÚ.ŠÑowö!†è«TOë¯Í:Uf°„dˆa9p‹¼sàgÖ± -¥=~€}Q-eÚáLJHÙhÀ-›´ª˜Z†JkŒíD«v“»Ø¥`{Á C“Þ°m á–É¡¸õ¾MÖoîþÖÙ•&Áˆ<'d8}Ø× W¼ çQ?¤#ÝuV"/«˜ëËž¬{úŽ2oT=ØÐ@ÿ-êHo«œ ³M4%£;’s'‰(ðpÉŽ½Cé*¤‘—2†êi2;Xƒ.; -~oÀdÎls,[¥ _àk×ÂýfV÷”)a g´¼í'ÿ6¹+ö -¡é‘Tî¶žÛ -Š¢¤íÂ{»ºf,ÄçæTb‘ív/¼»ô4z%ƒãèü.ÒÕ§ƒÖ§]a2×Râ- -¬GŒ«ˆ´R À1Ô';Ue JÝs\ÝÕ­ÿ<ÈgªŒÛ›ÊShEóÉyÓuWJ™•kúI×Ég‰WrØ~± -1q¯uÒüòàêÂd¹ÏWfS4ñÜiG½9/ÔzªüŠÉf n¢Škœ½£" a’«¸ê ÕR}þ Ä[ù,¾wÁnÇæd`çn‰Í¾-âq·f.ØkE/x¦RüÂü¹=ß›'a'X M>ªø=ûX>Dï– e_ü ìf§4g9Tw^±•F eîgOš¾¬7#vƒ]?ý± ùº¶ßø¹eóãË?2}Aâïl5r…'“çõ‡s=Yšº&èÌo±]ᤥ¸ÊZS@½Xï¯À_¾N÷ÜŒÚUØ`bEÞ~I¡ÓÅoQ¢–Ý—z:ª×ü Åõœ¢©°Ú,Ìô±ç˜,O¬dÕ`áâäË¿Zo{~‰{q“:Íh$š§!èqbÃbY[?ñ©“ÿ 1aEH?ƒ‡¿Å6SÃAÇa“˜æ»äLÓíÖš p"Þæ íP¨Ö8œ(,ÒøS@¿ ôà’Kl  ¸Èhç6FJÝ™ÓåQYN¼ž¾tÚºï|™ƒ6•¯J|_ëQµãOãýb üMí±9ÔÊëwÌ#H,üÛ0f6/S­Úú)Þ­.Oe\†–:H¡<ÿÀ¡—_»9—« ’À(( ›ÂRü“74Åyäx©½&Þƨ‘Húª/ÿî7Û"¯…ƒ¢ràð}ÙPº9áà“ãiHl¼9€“c?é³Ô""6Ý“Ü£©¢1ºíòq+<Ä•CDŒ>“­˜éBÎCˆúpµ¨û·c@ÿ-í§ é6ö"Ù‘`o4‘ãoÑÇEÈ V°>é+Tñ!é¥-0ò¶æ ³o7ôµ¡ÁwŠŒ[ÊÎÈE0uŠ‹Ál[z{0œ7;OG}Èd}êÑ?uJÓÿŒb¥{U¬>Ýb¶QÔv~[AÊ,ƒN"øŸôf\‚: ÍutøF÷ôÕ{üZÐ0mG(Lm¹‹aâÎlÎUAJaa¹\ÝTÿòP(QÄŠ¢¥ŸÇâˆÁŠ¾L\á, -ÑxÚtX/oª´ tQ”ûØLâTÛöõ 5 Ü‹Ar^ ©Ä’ó+Ü ON{»~‘mù³Të+­Œùüi;ü,GWóø`í¥öw‡ø›>¥Ÿ?±¹äÙ­¢!NUŽá¸ì½ÔÓ™²Þ‘ÓÒÍÆ~ˆ<–!œ÷bUk³"ű—€{üôìõ²c’€£ç_nš‰\d5®Ü¿'8>¯+c=e`ÀýÒ%÷\ÿ \b(Ü©v½Áq¨«ÿ!Qô+dïüWg{Š=Š3<³?s0Mˆßš¡êŸ“²ìG!åÛ®6o–7Ú¨.‘{"¬ÉY¡+×Ûqs]ÁŠV!}û¤‚bì„Jð¡ _¾yOÂï?ùØ~ò¹Å2H¿1ÃWÕßÈøÊȃšTQt^t¦ -—ï-ôT -.‡3V êho -°=›çF¯Ý”Ëmý``çm«bžW¸mÅ5Òräxâ–½ú>¢”0«= ±ï6ÞÑ Š¼}Flíç¼J *r§O^H«lxÞ±=á:xGo°o!JÈ¢„ç¾fâ~QnùU'I ÓhÝÇ»gƒ#ô“çSU9®2Q} å[$ pj—ŠMŸBÐøgwZ»VÐN…D_Ç.æÛÊ3Wéïyß!Þ5(E—+¤‹.;Ñ€fȬ„ Y>÷ÏÜyŸÔžpû›Õª½,¢eCO@8v›Dr9tb²Ç73 1 ÕԧʭUða³ÅXP—AÈ=cåÔGp‚2FŽ¹)'½—ê Pô[øé[î·©÷v|éš?IdÂ…µrûæ…EcWNõZ$ {Äż?ÚI“Er•Üsy~þæˆ[WÄÐÝ_ePØ$PQè¿‘“¥ZŸ»ä2O ì{§vÊ¢–:fºáþ¼³_U’Üú°^¾çDI6(Ç‚¥ŽB.á Ö8й+¯&ØÛ&€ôˆã’w%aªì¦"4ë Pò‚kwã¡ ³T“mån+Õõ”ØïMCÏÉzþÉ:%Zœ±G§0^1ìÒ?;Ib²A{‰øЦ5¯©a#\'ú@»"‚Ï|mè§D $‘xïÍâ²µïÉ(èŽè'íp¿ ¸ã 4 $Ñ%ô¥m2ƒìrÜFråT3ßÛÝØg=_rÉZ½9½/©l¿9=ìІw -§à¾¦zo¯ _X¨Ëh?BïtÚ0ŽÌ„‹9%.B½:ÐcøY—7x]O + -Û%Þ½JG.ôR+T&‚Ô\³KBîä*æâße©éS×o\ë®\ÚÊSõ´w?ÉHªÎ½Uö‘žÄ]ÓEÚ,ùXÞŸö±+®s“–‡z9‰ B÷t_D½×Q—¢Ç„m"¢‘2›/¬ó·Õ€Rm…ú +òm¶$ÀR(»¸ -®ª¯^;Xº²›í¹ryäå -Z œhPÛˆ³Ò‚M¿˜XjpóÐKBß»0 )¦„fd˜Æ¹eƒ<¨ÂL)%ð²î¶Ä¿×s$Á×Ïœ6‘Œ’#vŒÖpÉœNñBóÑ`î;V·gÆO¢%D4V·T$â8FÑùŽ(nĪº¸¼qÝÃEöfÓ±D:á`<< Ñ%›8\ÌàË4'ýáÊ¿½ñ6µ„©ÉRãm}"Ò«ß`x¥L†s‹iíÞe†+c=>°m‚ñæ¿/ Ô˜8Õlðd¥Ç°"ÖjìÛÊÆÕŸ±ïË‹‚W£Ö–J<š¡.T/–5b;µÃ†¥_-º„èB2ÿž ,W°FP \àìë/ŸÅ|÷,,—i½Ç½S{õ;n™šÑ`Mþºzl=cñºÐ‹Ìâ[„í-mÒT%È~ôà!4ë LÕ4íñ½å÷Ýý|­ƒZÈÐ[ôÏɧEîGct/L—7jæâs¯±;è0@s7­f‹x®“%"-´& 6{Ó^¨!ë‘¢ö ›ÓÒƒJ… -@»ì3I}p¾éN¼²ð–R÷Ò…µW}¹“Çô3—+s½ZIöó-¬†%€,öñ8öví5Åüïú…áûHŠhÈ°E™=‘Éßá^OîëÔMðÿ¿áܜР- «l>Ñ°M‹¯4»¾—nChƒ)—O…gn"@õâ´êX˜“ù‚’Tw·ÜG·çÙ‡ä™( í;4Ò…—ÕÕSÐõ—ŒÞhfÒ§Príd[Äß5瑤¾Y?&Z*~Mé?š•%Ë ¯{ÉQêžÜ3öˆ<êßèŽà¿ß>Ð<¦ 7DÏ7ò -%IâaÑêÅ<ˆOÃÂËÞÑwiuCn̲á9ì7~i3š«Pçô7ÁÅv´!EÓó"Ô–T!ËNI¹&¾§-oTçFdËß}ÏÚÚ‘-ò‚çrÜùB Äì=oøòÑžeC›ó­ÕYª¨ÖƘÊÇoÚx„ÆÏ“¦<]áé-JëNج„ „¼ ÙÈFÎrü'·\wå½eʱÀÛÀd«˜e°¸&BÂRI«§y•ˆÄèxÅÕôá£.Pâ ´[®ÞÛ…p_=·ý¸¶ Ðz´æ¤$„/»Êaäð'Ñj2=ÿª{„>h— n[PYà™Îö¼…¡ç8‰ôÈA.ä…^©÷–xB.ùÁM{$neœC}?ÑÆù\Þ†¦6› ¡ƒjRÖ’Ù+µ3³ ë¾égfó!/ŠÓüÅ‹ÁÀÇìø»eä¿›ÍZ÷à’’\Z!ëU ©Y-¯µâ†ûÃ4u ãnt¿„0×X•mÒ…I1rÅÀ+@TQVmì=Øäï£/®²ØÝíN˜SÇ-ØÞ;jNPêá¬Ö"Ÿ±°öàÉK}•T§æÚ¥v8åSñ!»F·vøœµ[U§Œ»C"½<·”ð` e›²E‰~þÂù~Kž8€«†c9.'Z™+ñGI¡äZKZÏ:%X¼eñÖ˜‚dÁÞ2=R"5^Íù ªõðÈló~®-EéoG!F¯Ú¦“lÎßBþ1d'7¯d‡Ö›ïÅ"¦¸¯{¿fÁ2Æ-aw—fz`§ã ÄY®²ÕJ"Aß®äK¶Šý‚`ëwF§Ä((½ÄųÌ×鈷_wÊng°&é{‰ºêIÏ»tò#Q?Ë} n£÷ÄSÄ„2áëïWNOG4ú9UAÑí­Mè»\Å«8nX½^Zbô/”EGO“1òÉ ^¾ -„yéðÐ3cË$oßJ“&YÇ‘ï|Ú…›:¥\ƒ’ä´Û]¥ëá=îíØ­-Û£O9á£gìÃÜC7üw·²™çÁI4 È -aD¾‡4.gÈuvïÅY¡¤²XBϾŽ|ÑØýÐõ…G5ܬ¬0¾Ø_<ý̽Þ)JE]Ðéë”|4ˆüýê°Áë9Š$,‹²Œã$’1W⡪ǩâêˆx|)ëî„Çaž“`Ê+0Ê{,]9¨#Ž‘çë(éÍG±x”`&'Êâp¿UN 4«ÑPÒ×.­¹Ô÷¸äÔ# °76tN|I¯‘VpÝ”¼êäÕÑyˆ2€&¯,w&Ç£¥&äì_ÃÁ¼bk“Ò,]ÕÂ1iÏм°~IãA·HW›:}®žjšÆ€¡¦DÉ¿TBD¬h”7Nï+º4¾üMÖõìÀ¢®âc@éå"d6öÍ÷ûb¯Ø­xfvB/œPko?‚ëéY¶†{Ϭ?Wt”ú"øÐèzOÂÅ`FÏ a½m‚¾C(žÄ52>d~Íh_tÓp¼ù“γú[­sù´b75ûpX- -Ÿ¬°¿Øø ÎÄ·Ø&†ép™Øu¸¡ Ëb²lJƒƒ×GïQ”O—Þï€ÉS¡³k Áä/žâÉ;²Év¨çÆà&1¶(7IL\°Ñ÷¥Q)D ü8¯kþ»rÍœ×;/HõObÇÚ]ÛLHœußzÚAñ·E¶0¯´Sz°1]®ŽY–b؉1b{A×0Hq©oaä‡ÚMŒô%Gæ‹Q¥¨6ñÜ–õ -vž¡ïn«„Å'Žå=û¬~‘‡ŸÇaûVØßBLÛM` +º·µ~—uU|’¢hCêL÷4îJ¦Ö>r‰(¤éw©Ò0R‹Èû øím.˜¨aL‚ÕÆØÞNR±xî\žOœ‡¶Ù?;”–ááÒû -íÝQà†åAà&Ï!81È?HC”|¥:h>¦úV2_~[AÐW5©?)& -OT:¡­{µ–šƒ¹1-Ýñ¡Ûì#Ï~úSé÷TðûèCÇbÍãþ¾*1ñòÛM¹-j -<Õí4ò“ûÆ–?å ï†{…%£²ÚÖØqÝa¯&“:•»mñV–7œlèÂш›½¾6ó¾¶Hm/°w¨QüvÛØíÒKW­Pül®ÁÔ@å`Ü.kd h,ÛrJñ¹â|禑\ù‘»CcÆZÇ?0ç¾Ý‡€ãÜ·­¶ík{=ÒˆéA·©]Í…öú\ËU1ÍäP¾RE(Yb1N¿Ò@E[ ů̚´ù¡Îß3-–ýw"‹ÛþÉB˜Ã—1b$% -õN{’!Ž‘É¡³8.­¯\d¤6ÐÜ*Õ½3®SáðýI|‘NH½EžÅÆ~¿XÕ±óQ¿ÐÖ³fžœ¢4ýёS -éjû&!ÚIîu±0W¯¡¶všÿŸ/À‹YÝ’=½žÏ/›^ä)€ºå&~ú~̽à.jÉŠ‹×$›HÖ¤m:²ëÔÔ¦Å`ívøª>yÓ%ý—ŒÁï¹ÁÆEfç-œ-%Ód U¯—2#~ˆžØE²w;ÙÍ´:M­ø®…5Ûoh*4áQ{‹¼‚øž&eÝÔûF›fyfðó:^2t/˜šÎIžuNjï¶RÖ!êO¦£oÆ+^¥êbl×”„ 4tyŽ¢…ØF¨8‘°w%òßW"ÃÿÔýùqXTØSµÚÌI“·Ž²Ô£]‰…¤ðí`ìmxµCr3§bµÒN“-ô)¹«}Å»°BŠFG†Uz¬ÃD<´oÉ—5E×öpËÍç¿ÈµüUš0­W“«ôG§Y‡/ ÑSC*ɧ·=‹Ü¡èП„º‚"¹]0†.?›9jõÁf¶=ùŽyûg¤R†íæ'o–¦-ÖÚÒc[½Üí©Ér±q~ljÌ®­ãÇL-«9vä–š†Â¡Éç/ÆkìQ¿½!õÑí¯0ß -R‹Î-;skw¨ìüùcx¥ÆÈçoôÀïÿúzxÕvÜ¿äZ©ã›JÒäÈÍùðgP"ìÇæÇȇ«g|jqMrµîz†è.Å÷œoÖi]4‘<é+„1S´QæŽJMüB¹Œ-Ø6"4mºlXWa`<`ñ_*U¥S ÉÉ'BGÈÕlºŽbYÓ5‘;Œ£qY¿)§ÕÈqi^yU¬qëmÒ ¸ áÐP°ó\uX“zÐ2Ñ„RA)!¾†Yø³oŸüû›ö"\ù5+´th¾‡k¿¬ô­çZ6éõÝ禳ÕEV²µ#ø -ìñŸ`({Ç6I³Äñ¾³æs`‹ƒc—竺ºX3ð³Ç5C‰‘àÀË[nRÛýCb˜Ÿ¾Ómü²ìW Œaå|o%ÚŠ +À¶ —¡±åš©¿FK®÷eÉ‹Tû<|Øš–©ÑÇ ’`,) åú’=µøE^¿$‘[ÔßðeYAß¡ç1 pÍ‘49¤Q4üb ¹2¾ê\ÌC">H»z¹þyY›ØnvœOjG97R‡¢ßøyÌ<?¶f"É™ÃsÕB®8kÊruV|ÿîX¶¾Â2#Š saOÉ]3í ‰7 rç8ƒxÄe"¾àœg\×{Š†ë8öB=2è’sòvã˜OXIl›É‚’Sx&ûå -O :?^l†Õë×`4¿/Æw…bÑ -]‹âÍ×|Ñ«X".KF”zÿYåû5‚´= -©´ñÒåͽŒ½‰€lj÷„Kjù½BbG #eÇ|Ué2¨èF[OóUyp¿;\Úš©†ÈMKCy¼ñ¸1¥T¢ _ЂÈøÆlü]ºEyö Y>5!*-ÕAÛ[§ƒ¢b8’†õ1ëºî¸Ÿ¤,JÉ°qÆÚ¿ Ô~”Üà£}¤„Ê¥Ô ã ŒúñŠ|Wëø=AÏ„ös­x]Ä0nÚ8’E)y„à,‘¸Y¬¬;Ô1¢†¿ÃÔÓwtÕ{ vó¨P*XqFÓOäÍÏ'ü*SŸpJ˜gÆÁèõðæuKâ-Ï”ªÚŽ‰h:çVÆ™êÁÚz¦²”v ’Su¡;è$¾',A¥“]”¾63Öf*¸àš;7¹……\Tú•¹¢Ã–Ed‹ž /Ü„{Ã9/y`ÍF«Ó0ï¸b  ä*VÁýÙF66å»i¦e§«ËÔHdy—˜µ¨Ã{<ÕBŠÆñ ]L«q3­qQ{î~‰ú p])hP u¶’Aíäqܵ(`’Ø>£`Õá@&j ©Ôhx@J¥¨öüö­â©#ó’7‡©†ßbq=ú^çOs¿œw×OÄk„·|»Ñël´„N½QöéêƒÒ?3+ÅbäÛ9å“ÕÍDY5£<§|Â_ËÙtfO›Åº -HÆrΛå( [ -Â!ZPU?y‚†õ Tn\=­Ÿ£ˆ®‰yä•í•du¹zBj›…Éâ Ò÷»ÂðWý%7NÞ/ z+ʇZ2Û8W¨¿Ö¨øÑý3:°ŸÓ*¿º,6¨hŠc|·­<Ûåx qD:|tÁû`[¢~Lù¸^d`P~ úæŸ/·Óé“ÊBßï‡}ipÃf.f†sœ‡è|2³B%;&O/ì0Ua­ÌGy(Ú .É}ÚóœœvšÎÓ1rëpõ–¹DcòkŸ½šž>9|Sn³j!vfYfI·Åßýàçž<­p÷±Ô¯SÕÍŒqzA‹e5ä_"‰•©Ô.YUÞTñ‡;©ß˜¢±ýíF¶ó„·¡æÊó›ºfåOÔoʯÏ2MÒì{Û÷Æ©=oƒ4Àssq#˜Š±¢ŽY h¬Šç²ö S^ufÛyõýéµõ²n0‹ÂC¦18ü€µþêÍÑÞK,CÎaƒGÛr -´¹>ëMOÔ§ÏüÉQRÄÙwôå—=î"ÓB(ÍnˆÔö¹žK}ÅÜ-ˆåVùÕ$$S‚LÓËJWõx)öyQê@¿òYæiÌ`­—à·£á,«yw«|ƯnÛ¡nðûØq‚cmÆÀó6\\H -¯³g‰Ü¸ýÊ)±n›^~üXæ«Æ»&ü·ueÊ$Ñ®‰ÇŸ´“¾ù›‘M‡|æWq¨6Å—ö³-Œß#á$¬LGlѶkLò-|Òá”Ù–›kP!³­Èƒ1’em§Z1ŽÊ¡."rñNíð™h -Ì€œH<Áü<þ—œØ¼ÓLT Ò¥ÁÙÚ‰-BN£‹-ïÑoôHØÃ­Ï Aº&Žæ»ÕFH^ÏËMC‰ HšWZ.#lVó· 1öxš¶E™¯e$6ŸmÀK>d-Hµ“C)çuÙßHô#î/‘Òø?ÁmµgZVŨÝëHâ ÙÊyò8Gå…†¹´‰C2g£ØiNƒåmÆ öá§ÚÑ5!ÈmC‚ìŽû.Ðë^Fßø‡•šBLY®mŽ¨*ŠHàˆÅ[Ö+M`ÉŠŸ¿Éßhwݘîh’“¹ïF:]9—^ÚâÑ“Éèø·ýÁO@ï¬ ý` ÛØ2`HAÿØ>3kô‹Ñ7 ·Ñä4¹f§h[¨`δ,¬½0õ‡ÒðÀ|5ò›Zà)j6éÅ\,È6‘vðÎÛ•Ø ¬¨¹+w¥ •™OR_ÖÚ¿òXêùºvNðpqïNá êàÄ“ WÁ|*ÿšÝ&ß☗ŒÜfæ¼Éa%õè@«bæ¶Z[®ÜÀLa38c¾?Þ¶‘œ& “n\lʨÖþ!L·¿b‡“ø´e4¬MÏæ‡H,I¨ÎZ6²ÄJ"ÞÆÀ±&O!<²"¬çÿs“i.9öÓË>?=¸ è•Cü´¢½>I¥ÑH¶b_hx_^ †(¦ù“ßa˜ËÏ·“â°î é&Å|m@'þt˜jØA”›E{…øÆ#,¾Ç˜‘lÿEG…d‰U(Ã\µR(©&У¢Ýp)\`»&ßûƒïš&\­(özÄ·lÀ„ -Í÷¶®¢ÞòyéªJéö#²¸ë¥ë“=<•Ú:ÿdMôvÌ\Dä@Ò„žw ‰³¤…²o¡„ZÅ/‡µ¨Áƒ‚HÑ¡† om„Ö°`¢6ÚÂÒÃÎV7Ö„øÐÕC¦©ú¢DttŒb(÷ÂY%–¶XÐ;spºÎpsR©÷¥«ÒW{š,]×N¬uqÅi£Ãßú0%8Gý«ØÑÇ·¾¾JÇ4¡êìÚ6Ì®UÖ=] ˆµu§D?Ó¦&(jȦ¬lsNS,$öÑpXá0—>¹’öµpëGt?ü‡T:|Ë«Ÿ¼šû u "ml‡P.דþD1Ïîeº-Øe:*ÈYƒ.Íac Ÿ@-É•¬^{m§™` êöùZÚ£ðô És½~ô v•³œ¤pÆvIXD¸øÇu*CÄ"€ G¬¢gÕ{–oʱk*¤XѬË4‹(¶÷§ó¯eIÅât¤xÍåÔØ¥OY•ôF!ª@Ý‘é}s{ƒ3Ý$Ÿ‹úp¾gl—aµº·ÔUÍ´…†Ö‘“àÕÙiþTÁÙ+Ñ®<¹£i©fây¤c¸.úí2pTyò”)U.Õ¾·$Ž¼èì×0ÈU aƒ9ž-ê±¹¯&YX¿Ê9né!Fwô%n'ÐÙ”9ƒ®]/zL¼A?‹PO&“Ìs5NU.Pà$aâ«è²´M^B¹,„c–í‘æï ¯å‚'aû!„¼š&3g˜Q™«Y#W(6}DDÚ¼+ŸWèÜÛƒ± ( lˆA’O±Uøþ­¯åÇ6Ë?ýÆõˆ.ä¾MBgòSÈ4®I¼õ³V@}Á1ø"æAf¼xÌÛ±±Å¤¾ ÈO]IŽè„dh+eUŸQ¨½\jŸ”Râaú¡¡ÈS²™9çßWº$§ŠlQpR¥¡×%û€h‡$÷º:“ÖÿIoÀB¬Œ¡æI×êœïWŸZ£×$ˆG+¤ÿz¹²xH3VÆ{£V[Ú'?ÖâBÄÿÍ:°Õ˜ˆ9HnâÞŒP–fûø¡™KÓGÊv>ÉÞ]`å90û°5,csž>ßãhwÞ2.AÒ7p›‚„´!…Ñ«9é½)œ› QŸêš²¢ßDÑne±ÄÅyAí|:O¹ëE[“Iªê÷ãþYÃ.Ù -A\c™È\ඵæZ§e'Š*óFÊ3[ö¢D~P£\7Iç÷`Ëä°åJe¶Ý€1ËhK_„Ÿe _¢ùH¸j쪶^7Ø9Xå5Eür>OKh’ö¡X)ÞDX².ñËØóûF—PG ãg 7º>¼ÊVªHæ€îäÊTpÒšk›½qív‰PòíA—ÒÝ5ÁÆŸæ»Ú-ŽÓÅ¥ÖmDÇ“2TÕ¨Ò!ÞˆPC%€Æƒ¤ÂNºi¾½!¸—¢®Ìçä±5Ô’-!.šÑ€æPÈG7P5§`œ¦K•IR ×LjC<«£ûC¯$þÉ®ýK¿5‰)‚+ŒÈ°ktsÂjwŸà•CŽ‡ÈÙ2’–Ú%A|v “Û5¬x'hÏÊÞ©ä,“ˆáòªæ@…o–*Eê Ù¯À­'Ø‚7¥ š‚@G=ïˆc|l3쫦rX%F\ž½·øö„õ -ƒs¸u•Ðø›Ÿ¢Ùñ¯|Ä·ecÝ‘]A¾Ý[OúƒÉºî6ý,}+^¦-¤ -?Ǻ&˜Œ\ç­Vp]_Fküæ3aÆ^x}O…Ù b±ÝÉ“c#8;™dh«·Gµ¸ùÓq0ŠLPÜ̵À=ÔETkÂ˃à¯ð[}{tÊÝgáä2ç)«3WúÕ·Š[¬‚£/ˆ©Ù“VÈ%G…m¿N˜CÏ›@hÐ o VÒ&#¸¥Ï5`ùýž®Wÿb|nûG9s˜} -Ë ãÕÃ`Àb.³åvÏòù·È[>Nüù -v×Ñ·üvá{î{=´Ôp:§ÜÂí¤OÒL—p.ÄMæªÙܼÝÆÁ…&}éå×ÔhN”Eáº6³A•ü$è`j’ÉÁU?¹0i1§ttéÝÉØS¢PkTÄç#±k]¹”÷µ ä#¾E9òÕf’,)ýf@cêk7Ü-½>r]ÓÜœÙv@Qç:ò?¤87n>•­àÞÄà|‘뎪mãÉ~:V&ÔÌìr½$yQI,ñÇ9~ÏYk¶WlÓÙ<Ám†ÞøSˆ·¼cðÿè­°è›^Òs*Ä í᥀ñ“ñºìôýý|Æ}ýfwĽä³öÊÜôYÇY'„‚Þw²wÙ~}*¹H/s‘k¸×gG1ñðÁ#¥¸Í{qέábDtö‡íŽU,Q¤ÌsÑšX×­qô¥¡L$Æ_“¥í0Š#€šü°Ç'µ´ÇÁû±;ãI´ûᮌT2ˆrvÁ<Ìoã<õÝ;Ûé‚­âè2ÏKÅÐ-,×eë*³žúç¤Êóªå¤€³^° ɽ{|‚.-ý*Áû2‰'S¯®ý\ÐAcԈǺ“¹‹ÒqÖ¹Øौçºì­µº:Ÿfˆ:p„;`ò.©¯ÎbF…´ÚFèÑõÜ#eð4·Ÿ‹‚´®ØÕÇ#7Ê¡·jôcò=µóúᮌaaå.hœ×¥Ñ,oq E¶ŒDþ{ÀRØGÀ#j‡1U¹\²4×âÍa$˜îIšÚç‡jÔûi¤|8Á„~„ ØC ôea–lŠ ÞoV}îXÚý¾Ç㽌;<_p%Ï\E†¡*ª -©¯1¦,ðž š.†ñƒ’[ô—¾“4ù]¡*G—Ý;í®[Å’1C±îJË¡oj2Ë®ÐSÑ}±)œ‡·Þ*H–ÅB ÙÛXj×—Tò«±ªåÌÀÜîœ÷G“â1þý+Dì-ÿm>°³eIj8ˆZû¬‰!Õœv]©kQÛ3 ‚BÒ 4éœ ¢÷-ª<¹¢¹Úw„a Žhó„*'½Eø–«ë]&ÛtOµéìJiüçîŸ?¨»Gñ xاntj;¨Á½jZ¯h0fEËø0ܬf B…/à7qh⪸]Æ•D{£ÂŽòظÃ/fõ…:šrö/´í©ºŒœ¨Sôð\»Ët qŸã‹Ì.J1ŽWÆa‰úNrÒÖÚdºõ ¬óøÞYºzqÜüIbÎPJ·]^ø7l Y[Z˜ëB‚h*™ÀDÑQjŠã‹ßèž8üw¦݇ÈçCBΊMkÞö®îx©˜ëzê ¬šCœ óNჳC÷)ê··äþó­ñiü:±¢9o+ëŽxgïwàå²"õÏ\Ûl¿t³"…H¯W°¾ Wˇ¾¿eÚáwwj£5–¤MœƒÅ½Ãh>#½più¡+z1´6ºúEW‡ú7‘M>£ -Z'z]Xeµ´üh…ñnaÊù…Ž ÉãKÆ+(¹ ñ×;16Q¹RÝŸI–©‘Fõ‡Cºdïçx ;T¿xä`zWŒí´ðPýŒ¯ð.ùÝØ\:7©\äû–áb;š¥jr¯ûwRtsFDØH /‰„ü<0ûšŒcL5¡›¿<Ã,Ý"?qù‡áÝ -Ò€K}‡›ñ˜i4Inä¯w¯çitkÄãÂç`±ý>£ÛŸæ&ò»Ï÷¿‹¸PaZŠ\OwGUtçymLL½¨¦OõˆÑ“K„ñ'Q âV¬^±íäUfE¢WéÌ¿šûÑõHÉ¢>Bœ¥.ñ ðÒhã‹ß÷ -ï`Fh> XÀ©®”ã]~º×YžRËŠ’á±MŠˆ´«7µÀ~äDµÀd<±råб >I{¬ßG¯ø0Š>&‡é¬1`P~eœ#ëþJ¼ ì§026õ}1« -ü¢BÐçËxðãÆâñHA7¡-ˆ|¶rBúÎŽõÛÀÊ -–S½„¥ì¸ù¥\é·Å#WvAH:Ãsr÷­¸ÿÂnÀ¼·ùKCVR) $Aõ&§¸ÙàŠûí‘ʜʞÁ›®ŽŠ_qç×7ÝŒ¯SQTß~P)c(•>(ˆ= -iT}EbØ© -JpºÃ*)ƒ‘3%ž9 ƒÒ”‹H`Õf²!pœ€½tã¯ìί4Ûi¼ÿî@ep -¹-ÝÄsò÷VõÐ6ü°ý¼àðïÁW§¸9§4÷0'‹xŒ/Qy¢‘8I–©Kœ¥6êÖ†*‡‘¤*ÏÔçOº £ÃÊô±{•b0íØ ^¦ßøA¬çÅÌ\¸ÿ©|¦Œ“4÷…Ùb=1¸åˆD^1E«¢‹”Éê„ôÓÝ[óÉDæwm{ƒýÎGã —3J¦ú DYy[záùÀ“ÎâÆ/G@ž¾.iOìS-î›&½}-NÝùÓ$ÈÙKõ>†-T¤žÉóï©ÕÓbXÙ÷êÉ°Cˆkd Ö 6ðó›{´S„ÝÈ?öüo•A - ‘Ò)cïúÏÃÐ3UTa‹æm([8û_‚æjfÕu’ ‰ÛùŒˆ5“RA^Æ[>ƒøŽ4 ëüØ"‡â/H°û µ­aªŸÿîçZÛÜFpaÏÒQéhE¢-þÌ›uhþFFí˸Hû:·À°'ŠJÓsF2£ {ǵ¾†W,Ïìƒ [oåq^þs\ÈÒ¦½ø)쇊ZãÏwFó§Ô &–÷m|^¾§ßãe¿ˆTLp ÷B+pµN^7ð¨S“&=ìüï™ÍkÛP-õÞ¡J;‚£„׳m©“Â0øºìÖK,ãÅm«"wº&(’ЩõëE¼OƒÕ×~%¼Äk'£i‡ZŒ -õƬ[²±‹k\?,k -¸I}‹4Ú0(¤ñ>r,SFÚ[ÿI ùÊÜ&1æÖ)u]}‰¬–”™ù1ÎÀ#¸¦ -•¬ã>5xøͦè\2È(ÓÚC¬õ—µÌ¯ÑÕ=T†'5>:Û…®¿òþIú,\ªÐ‰5ÄgœÍT%$6ê&³Ç™±CRA/×¼”³×ttK¡Ôr™-.Y&€l='ä¿^àŠ¯Ø¸Åe¥aÄ+%Qëyò¬“±Ïp[¥X¡øÉR@×<½ðÃn%¡d •:$SDØ|Q}Ï6'’¢¶°C¹Õt/HàXþ­JÎÕXúã2¯Ñêìxcl]8¶º -»ênh~>Wrì “k×¹ÛÑ1¹@,^c"t¾ÐìEy’¹Þ -h1²jiÉ,Ǫ„×â4Ì{ô(â¬×0«”É.qý[qS{¢èb`—·.§ºÙÆà4l|<ˆNàvEëžtLÒ¾ áÍýŸLö©:h‘µPÐo6BƒHFsÑý/t%°è=ø¹¯ŽµñD‡Sø‘àçVòìH±3–´°Ÿ;¡¯¢n”®²$ãhœg—=šOè -)Ò—á¯cg*ýеEž‚ }ÅŒ-‹£îë ZÇ%¹äìïœ]ÕªhØÕkÏ|U€Gw—âê6WÈŠMįF^_Õ4©ðÍAbŽÎO ò˘g!¿“­ÔÑP«# ÌïJ~¶"ür+ç?âÊYL?èÛG{ª ÌúTC‹í2ÂFk†#Öø`<ÒxxyŒIcÀÁªö¿×|íÒPúvÄCQÚ†[xelÖÒy¶au}[Ýžñ½Ÿq5ód lÙ¿Îý'9µZw•’Û!N»"©­Ÿœ÷!w¦¦@쉆²ü²Že"zŠù)7Pͳ\|:j·œ…hôkÝ窰’ó}y6Kë¬~´ïõ%üi(Ir-“[šÚ/©Ë^1xË{㸠{(ŽgQš¾£Î†Mmµu¥ÅÕï'§Z©xÎ;Ï ×f]Q}¾¿adŸt›B'Š°-J`P»ókç ¨ÙÖ±ººÐ–'Ÿç×(Xi•Wâouuí‹æùö¦AFYp¿óîÓÉbµ¦7%û+ÂÔ ÁißÚGUI„zE8 -&ZS*}„†¿yÆ•úu ÂD‚›ÆP Ý#nöÜ*@5N°ŒÆK±‡lÃ|ý>ùåEØIô‘/âå­T×XR9öÅuCÚ|mËg3¸ÁôÀR™ºÙÎ쥱q¯†¥iÞä‚&ý¿§˜)‰,ä¤(PnK¬kaaNóavX5âÉT‰ð8m÷¥žÆ ‹mÄðçµ¥5Ü¥VvHÑBQ´R¿ÌƒìYÑhu™H"mÄ($À /MYºÉ•…÷*O¼{5Ì`4º.ߦ§4€Sò@ápÐXåúë‰ÿºæ³Ã%ÖÁ^«=¦ÄKu$(¶í{àñŽªß+‹óT{ÞÔܯ£u’A䇸‰!}Íë á'C2«Ïÿ#*Õbqžæ‰=$@ëOšGë.>I˜¥2Ô Ez¼J z+H+©Dy™›¾È´ŸÃò®ŒLÝï?Ù@øòÑ•\foùd”ÏËüA¬•Ò"]¨³,VY¦X@ºÿ*Ó~„vX1bв©_,N§5Ì”™ˆzh)Ì'¹óˆ™5ãËN¨§ˆD±<6À#T²ùµZ ˆÔÇæûþɹ_n±›|;Àô3Ó{ÌEØ9Š†¼÷\ÑÝb¤½85Åì(À`éÜ–ãàîÙžp•§z=M™_]K å Q9,“Dº=ÄÒ³~]g¨Í@.Û’¿îGZ‘d@ íË6l¦Æv¬à’£46Úî¦ÔËùòëÌ— )ÒH ñ y,ÿ|ÕA_nßÖiÀ9¶Þ:œá/¦€&)O›]ÈUaÉlù®äF×Íì³C²Éo: yGuófPBö7Ã/Á”œ<É@YMíïŒÀtµ;8Ëeê-xó¬çü -/»íSg¼{6» ‘K˜Wn.ôøÃð}ocb¬v³Yý.]sþæT󽄼Yx÷&ג鉾ƒ¨† -ãnkÜÇšF¾Ì›+¸o0&49í¾¦)ÊG+ýÙd¤_2K]Òž÷P ‚2¦ùXf.táSÆŒ*õ<ù&8t}¨f’ˆ(¾t¦Qï‚¥+„Ÿ"ýõéÃéfEOËÚÜ”XÎÃCËqª¢ÇnÙ½‹uw%UDß ß¦•m™Ãh­ ¯PÜ -«e"êé«ef~%ÆÒímQôË`¾Á‰d’aü@Jå|%æ1ö}®›<ȼZ*ñÃzk5ÓãT¼ÁB;XÖT°Ü_%„Bæ@f´œ„]öÀß­ñ¹m4šiu¥×R»ç3œÀãW1ø±û#Wó†Tú7ÌÐØØÞ¸‰ìÌ"ÉÄ -œÚÀ’„RÍæR, P@µäŧ¤•¹Í[ù«ubVgó’þhTz¡¸2ˆW®ø¹ÛªÓ¦).*DÃçÄs'Œ^¬§V+(ÑX?Ù‹‰~.ãÑúÀÎq¶²-xŒo%Ž…a){µ‘ØZWóÄ$wãëõRt^iꪶžÏCÏ"Ì oȃó”Ê[ð½Ý¾½ëÉ`® KÏUtìø~ÆÈ)ÌôÐBŸ[Uƒf"”E»BÚï‹þ™‹ñ5½»Ê£ Ó\ÊE2’‘à?ñá>QqÁN²,Eµ?ÇdI#p8 L f ,þzSÚœ±,Yrgžã²)&ôC©“™ÁÏzæW7e-Aáú-øí˜ÁµKs}löañ×ã\0´X7g ÷ˆÛ÷Ên†+Þ²ç„ݢ縄sqŒâÓÑt/ï!)Îb·Ÿ_¡9îŽÃù|^ôÆ®(ƒæj¿óãí²ùY’aTe;Õ3Ø’‘%É}­ú.Ïy:~ÓŠÃþlØ u[¯7 ‰œ 4•‚ïá; .]Þ—Þ+/Ucxoö ±Ûß1I9•ÝÃôC>„{Á {©ŽØÂ9>«~šÛµœØ|”¡Öu]og ô ´?Ð@œx"Þ=įö9É]7_*ÖS•f°›A[rðœË»ŒÒ÷õiXhz«?ýªAƒ”÷ØÑýdm1D–KÈ?¸´ïtßÄÆãl4Žf3óeƒï÷‡hÈ%ÁD è`Ö¦I[lr|ep nÖ7çwÝf&‡–"³q -Z<¤s œÙí>LeDQÂÞ+”Í+]Jw*rXan ”ÓŸgË24+ݘ™ç†:f¥Öú®/VÂ&ƒˆ"Âbêr:¨ ê^x™gÛ”ì‰öà¡$ÄçätÛ=à?¬%|¡pÖå'ažÁÝî`Wû‚`ôbc¶giOøßÍx°Aµ² -êW›dJù¬}'+n}ç."ÏÊðhq&2Z+‘É3i0Ï8ÃMr9­•NgÜ©ª´,ie*°a±€k¼dU+‘á0cgíˆ&-gΫóÌ‘Qô«ÉKݳ¼Ü¹&çöÛìHfáÆG÷Ytà0 O„Œ¡ªŠ–÷FTv½*ŽÖØDš[·ž@¶ý‰uIÝ‘ˆ`)F’…€¥À´ZbqÌsiYVçgÿ· ôê#Ewü?8¶B…JŠ«ºî…øCÎÅ÷Ñe'ÀûQ¶œk‘-¿Î-8ÕSX½ÒÑÐ]¯"a?ÜÅ`6ˆ_ág¹–÷´º°}ž>8CS€>Á_¤Ü, /’úeèÝ%n´Œ´/Iõ-íš8yšþŒÜXY¡àÞ®SБζKsÍF Œ1לž[ÏÝÍæ¼p)šY‚É[ä ±hK_`tŽLi¾¥ùôôç>'ŒœÜ9©• 3CŽ†_ãóŒ"7¸‚çíHÔx”Šú¢cfé…˜jÒ)ÖÕyô 4x½Â¡"ÍSôÝÇ"8˜`¬ .ÍûIDqÜ7#Ëý¶=xö@s-³÷$4O`ð‘Ò{‹»‚­o©¨ÄÈó%0À¨ÃØ·Ð|êûUñàÚZ?`“§O³f‘Èí˜ßš~œnŽ¥1i ·ºF£EU~¬HOò˜Á¯5æF‰ -öƒ–˜?*Rô—p81Ò…Œ)EÛ‚èLR¯"é¾»40¿×O ýqw¥gØãpä•?â4!LmÁž¦gG…€Çü­µ£J¬çî2oWX©Ù¬˜e'‘Àwecþÿy†øR&Üo_.xHÿöʨÕ0p᫵lN¢Ñ‚ì‚ ¨l47÷´ØáqN Ýýÿk‹«Â¿â…åtDMÃu;É$Yi €#ýs‹ˆ¾rßÆ%â°:0Hhi¤ÑÞô6^Æ<½Í61ËÇ+#ÏëÝ!1Ípöø–¸¼j#>í+°_pÞ› ól„Œ“øâ-g4$­À8Ž‹¾¨‚´LØ×A|†§* tFþöˆ‹¡%Ûê %uùöYÓøÆèwïWé݇P#'º5^xN§— ·[}å[ôoâ[™ˆ! =Éy}Î|ÜxŒíÅT‘yZ£³t©ê:Ù»Áø¶<ªo•v¶ª:‰zÅB½ùqÔš,‰ õânL(-ì9:æ‡Ø"™™}!j BÀHäÞ ‘^9&:©ð;‰ª¬O· צôqj†^ ²e­5Š1¡öºQ ³I$…‡[ëí({ŽÕ h’êåí-/Ëö,?7e¸Bˆª×aôˆNGmôÈ>™Ò±™XBô,ó“n#Ša‚ÉÛL:_GŠÞ?4øÛÌDÉîåZˬ¢ú³Š[«Ã÷…ë sË„Gg`^NZA]ˆbA¼Ò‹§+í¥œ§ÑåYŚб=Y:~šøa w×æ™r¸9ØíŽÝÍSþæßÂTªÞÐdf%BeA b4¤šÝZR-gt‚?é $³×Œ²À®ñÓX+ñjÀhb¶'‰FU•e8DZE .4dUn)m«Ž7¨!ÂŽKË"6°RŒ0]+ÖütßĵRç{ÏßÁ´(RÔ]l‹Gâê_y[ÃóÍq‰wIÈŹ9‡é¨f037µåçØ_o ˆM3c†&„u¡‰<½ŸPØ·ÞméÈÒèå§-ô!-2,À¿==ã„á“]$þ20Vû èg -¤ÓÈ !xOÑHQÊ‘N6½v±gñÜJb<meCÏþJ þ´…Zqƒ -è¶åp3¼®…\"UQã±ò¶HtdƒÿèZëü©(±ƒMtaT©Zê6çlc:dœ^Y¯®Ä7”ÿ‚7¨;³K·ÑÉ&‘ƾž""[ª#äÅžÊSÈؘT’åËBaÆx7}_yÍ=÷çDëE=¯˜A\6öB³*©ù8ÞlZåmÿ!t*P¹ €½ˆŠrgÎŽýë¿‹\Q5ÊFv^„3ì÷&zßAR™J@½1©½¢›º‹õÓŒÇ÷ø5ÉfðK!Òœísgfû7W‰|¨ ÑŒÜDw€ßô‡“Yž˜|€œìIŸÁ)—ý õê<€†Þ²Goªe6_k²°dZ÷Ý5lâ2˜döïªfÄux¹D1þ!öU= Ù]º²jñ)b–ôá¢ÚŒÂ;f;°+}›¾²Zñ Í}š|¸]µê½.mK!¢BÑÅ\QÛZb¢½jÛÁ*§£2èáóhÙYM'_>Ç<úaµˆH JÓAÚô•À\fVJ–Ö‡ùSQÝŒyUÌq®^⟫g$A­}Ñ` 6ÈþÑ™J8'îúSŸôŒ•‰®Ì3g¨Coµí*(ˆi(§°â¹Îø>¥ãô»µ³û¬¡è\ÜLIÄ|&l€tU-2%‘+èîSGBÊúïi–ÿTÛ.ýïUxH³¾®Îð ^÷p´ èÄÿ|ÊPŒ>ö4ÙJB4Šòð„L–¬ky¼´ \~gY_P{벺B…±{œûJ«]—!WoC#èy*‡„„j’šŒ¿.]¼ß†óõÌ|l¤Æ¨àÒß.«Ãå¥yÛyA`˜û‡ñ»¾IÕÁ¶ãÓŽ&ܔӠ6qÕxK|¤DC4ûT!ø9:JÚJxn¹ä`ÞŠôG)äÉ¥³® Æ”ª hÅÄû:…S]‰ŸRòÉdÝEóXtFd(GÎJPôhaèú©[¨19ufGÑ_£Ë¶Cà¶)¶¸9køu¾-ϱ¼VnÃúqC#»ð'ÌúF"eJ Ñ -ßàîz“kcÖrˆ¶õÂÇ"î”Àh° •±ni@¤ÀfŽnÊ_©ˆÓ•ý}D±ÌJ»E˜æN ðß›¬Mÿ¤LÔÕßý±Ÿ -IœÐ:Je_ï~X÷°;ÔèøùV½sFB9bV…EL\Яn¢B– Ðb …¡“©g5 ×Z®¢VI•L e2w‘àÒ¢ÙÙ -endstream -endobj -613 0 obj << -/Type /FontDescriptor -/FontName /DJKLXJ+NimbusRomNo9L-Regu -/Flags 4 -/FontBBox [-168 -281 1000 924] -/Ascent 678 -/CapHeight 651 -/Descent -216 -/ItalicAngle 0 -/StemV 85 -/XHeight 450 -/CharSet (/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/R/S/T/U/V/W/X/Y/Z/a/b/bracketleft/bracketright/c/colon/comma/d/e/eight/equal/f/fi/five/fl/four/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/parenleft/parenright/period/plus/q/quotedblleft/quotedblright/quoteright/r/s/semicolon/seven/six/slash/t/three/two/u/v/w/x/y/z/zero) -/FontFile 612 0 R ->> endobj -614 0 obj << -/Length1 1647 -/Length2 5603 -/Length3 0 -/Length 6437 -/Filter /FlateDecode ->> -stream -xÚ­Tw8Üm—FtÑ{‹‰^¢Œ"z”è-ºc0Laf´è‚ˆNô¢NQ¢ AtQ¢¢ ‰äÝïûözw÷ŸÝï™ë÷œûœûœóÜç9|7LEUŽM$# -“P@áŽ^h$Ü)¯'jqñÒÁ€`&CÎǧŽ‚€0P$B„(, N  ) ÊËË“óÔ‘~(¨‹+ hnb!$"rë_–ß.G¿ ¸H4ÔàÇ}xC`H8ÁQüŸM!Æp†Â uC#+-€ –9@ ‚€ pMy9 `€ A !Bg$ -ûë#NÐß­¡Åp\ªh€ö€€¡¸0ˆ/âñºð€ àP4÷ €¢.(ƒ» E€a^N¿ ÀÙ‘ -ò@!qp†#3B¢1h0 -êà²ihþU'Æ„ù ÅÁ¤3ÎÓ öúÝÒ GƒC1 ( À@|1¿s9BNP´ ä‡Ë#ó@Aÿ”á…†"\þUÁ- -âB9Á h4ŽÇýûvþÕ'à¿tòð€ùý‰Fþñúg P s#Jâr‚1¸Ü.P¹øïyÑA8#@‰¿ìN^ÿÀ¼!¨?$ø{f„pE€œ˜À âL.n€ÄàRÿo*‹ýûDþ7Hüoøß"ïÿOÜ¿kô_ñÿ÷=ÿZÓ 3Áqðמà Àí€à÷²P€ß  -þo¡ 8æ÷¿ÿÝÛòWÕÿÉùwø¯ªœB¢@1™¿ÌP´&ÔâdÅ€]Î îòþØÍN Š€àDþs¿¸ ‰¿af®P°;â·2A„Óß{Àéö§q=UC}CM‘ÿeÛþq6ÂMÆÌÏøÏLúH§~S©©!}þ¢@Yy€¨¤œî1➣¼¤tàÿöð_g}õØHˆIH¸ÿüþu²ûÍ=éô{ŽL1 „nôþiø ƒ½P(œâ¶®óœÿ<Ä&ŸB‚ï„»edgbª™ó{ßkØtu¯õFx”Ô™†`‘íÁQËòå—Ubõ# -¿šý&w<~®Ý^ïï`‚ ´§A¾>çäê,¤]ào•Y·/¡Ìübë¿?¡·Dh-+ñ`ýó{cûâKbΑV)éþ™Pwaï©U8½6ñ M=]õ‹/ü϶ÎNºúz{Ú‰:×ØEòÈøƒRwn¦`üP'uà_D?¼å¼(|(ýé3zñ„"¸3ê5Æ¿K†¶–?±UKG×ͺÖK<Úï=qU¿ËxÂq™%ªYÍŽ<: YëºóZ‚#uQä¾yV›·eÈ·º™4ÊMqA©¬]ß#PÈRÚµéŽæœ ÉËSV¹H5>Yß&´ˆ;À&£™Ø&ùß«=Ñ+ËT*¾cÞQ­äX^ÇÌ\÷aúñ¸Y$©^‡“°~:k¢ëScÊ ‡þ -íæ înølEý 1/ƒ™lšX¥—È­ü‡9¿'LiüTR +d¯fi9Ré| W´°ùä‰ïÈð9—òî5Šè<ì«(î¯é3-Wmâ&¢ -]Ç:i7X²¯3)ÊÚ·ªâEm[ÛŒãmˆL6li¶t -àG›•ÄŒÀû4º;±¤'Óbš!~‡[/éüô}(åÙ&/Ë »G”ö?Ð5˜Î\ZYÆ$óAÊ ;ýjsGF^òéO+ߎi¾Tt£*ˆÛyÎ%²¯¬¯Vo÷åj`dÓçMj/œ'‹=+°}.¯P*ÎIVuz@–jŸõM·šóBßVê2øU²{­›Té1‰ÊÎe€í¹êßµäÌ«nw%oãkÀUž“^WvÊ÷s­¿ï5…PÔJR™ÿ`}¯'çuY`MCûád­ïØôMuÖkÞv:a_&›!zÖJP;¯1œ%±ÿ¸¬0¥tOh¥7ýÉ—U- ò)%€©zoY“ õLšÁ~óWV ëw T3¯T”ÇÕ~tEÝ{¹ùƒÈMv;H>Ë÷ÑÇžÂ{qŸüLÊj¢ÆÓpš9©¯˜…ÊÅrÖÅ×ýúDž„Ÿ½™x–Q†×òÃdh`cÐíˆ×_>IʦþpM,,DÞ™”½/¸¨öxêßÀÖ±×!Ì’ûb»?ì”<Á’ý,Q M›FK­w¡p°¢Ø{µN ™Èbih9.Øž¾´œxÔôZ:³T VG"¹N0 *SŠ'gß4Kɇ4äñw®Ö’J{Ÿ§ž(4“$<ÛiãÀ&~CN8ª_ŸæJnªž}\*’¢ðN^ºöвIE@HG ßÝ !i]÷{ðÏ¢x¤³ð Ž%ã³Ã#ð²{ -}¾5¾]]q\~äæŽRÆ+ ¦ù¹ªgAé¿é¦ãfÉ+n¼)IN>¢­0i䧦ZÂæ‡Ù‘½¸4ª'LQÞÈŽÎýIÔ­w/€ “ÒÝs~ô˜‘Ccrþ9ÜŠ€G:þaîó>á–ŠÎYEÅîd®­:­OXSˆüø»T(ÏÀ‚gÞ£œÉWMÁNŽÅ$mÔ§’xR]Ûfõó¬âW‹~ÂüáÛ}¦'‘rÔã¯ëŽÍm“|Æ ZH‘øq’Öz+Qì°oh³™œUfH{ô‚Š‰ÞþèRvBÛsuÿNWÃÏóg^êݦIb¬7y8»­VeœûaB-wWºŸ¹/„¾kàö¤YåT05M\s˜H6< ? ?‹< Õ„TŠ¶œFÙ­<Ô,è1r.¹IýË™y@@ nCo"ïߣËþ‘ˉãù@^ ç´ðÆØÓéÙIsƒÜÏfy­Õ%B±¹YÅÝÎÔ˜á¶"¡¡ï7îLI¸´k© Ÿ˜óNô•µ=}“Ce¸™“L–”¢±ì8*J–•±ý(‚HƽS4änÓÖ–ôyË8Ü%²ã¥÷ -Š”#àuzú홹’w½À¥Ã÷Þ*öÇN¼‰ñÛÓÀ_h­¶ --YÔõÅ—BD]¢ 4‹àËGm¶¿¦ðÝ‚£A×k³7úb­Äã*&fñl2äúrH;ù-nö™ž3¿_ü,+ˆÜ!©½¶ÉÉß÷Ï«%¸žŸ´ÅNR*<©1N¼¤Ç§pí³´NÊ¥\"¦#C˜ênù‚±Û*ÀýÓù=Ç3OËö·• -iO0´j‚ŸÚ×%yFÓd8oêÞ |'î—kWê¶[¥ ñ° ÄzÛaöÄ™mã×½æÕÎÕ}çOƒDõâÙÞâç‰6eìÐÅË×]£«SÁíG¤õ,$´Äçž²uÆ)x_r=l1AlÍÚAü¤ï¢´d©ÇT`÷ƒU•dGoOV$u­#S|k~ÔˆÒ_lËíÎã>&èIhÙ½t˜l«Àsçó둇0ü¡ºáˆÕ¨½B«hZ†ÀÇ‹1P©gØÛ¸ -ÜJ~ó¼ƒÒñËÆA×iów¿O†š¯Úø–N§ça·èO¥Ê®=®º¶|ñ–÷¶©ýJ÷ YÝc%üâÅÑg9Ù²¥—Ä9ä`·<±­{ç(Î:×}±ó!±d bSõжáÛ‡+uÓùÉöƧœ©wÏN{^Ä­.ä6¼0n±È»e÷)CÖdtsÀ«—¾,D[”Ç¿8µM\BYï‹]i²¾ bùÚÖàìÐÚhöz×ÿðQ?kzô¬±ð£ší[9òAŽ‡RàÞFZÒY¼&,Ñ d:/(_½+Ô2ZJåàü¼A9ÁâfºöÓ¶>CëƒÌW(_GûŽKë‹‹±=‡ˆënæ÷Z©÷8KáD˜g¼$ªuõ3&ÉtÃj)Šs÷ eBÝä7l±©¢÷ [OvëHFï–lÛÉ(.ŽÛcÏ€ŽÅéÐè“¡¨òŠ!µý`ôB$ÜnÝ—£ Xý‚{b­ùˆïëiLX¨kTT"B]ÄšõfkQ×R's1>ï׸⡹Vxд*? odU1(™gö[~Úë-4 -”9HþaYûÄ'x¯lÓ¨†ä}_ePVpr(©ŠèqŽãœ6fðœ³}a´ÉçºSÚBÎ ,u[tÛäq%=Òe0HÏ’ëz°³16TõQe“‘Of3´²Ç¬ŠÞ -ê‘Ôóô~Åã±H¢ÀÜÕ]Sóí×…™cÑjBŽ“ô{=$GŽßÒã v.P4TÕ±¿âA$~Iah3Š˜È&¼}~Í›ˆÃA¢èNƒÊ PˆðϬøv´Ë.h^ŠÿF§M<å¥À´&,vžõtyæéU츟M­T@fËs7çæ.>pï!H×l“MñMP£wlþ³"pçt’šÀ¸R·VÿðË‚ã'í”>ݦˆà*GÞKlIÝûl›/²s ˜äµñÅNò¿Â+¢àê›í¾ô£$©vlYQ™n”‹Eó(¾'´®Îüil)_0ÊçÛYŒ®½¬´ºœ_‰ÎvÑ"“Á¦ÔçÕ·«ž(¤—š= ŠÛÕ2øÖÂÌ.5ž—±U^$y>ƹ$Þ”HÙÙ €µ–/Æ\é1Gt­÷í«x`³°×žžÎò%i8”>Óìs·–¿ ³@Ýåx! Þý`:÷Q[`üµöxÇLÒÜÈ·°{\wjˆÝ‹„ïšÛîÛ4fh@Zå[î·éadËjO†^©@­—ŠU®é\sX%ƒ‘j¬ºŠgz,Ãß( £8ÏJègìˆéSéUH”¯ G.ãf 4ºÈ@MçAeY:f¶6VÁ?$ˈô© \K=Œ¢lôiï,ò{Ú^?Ý€ÉÚKVé=²¬U|1¬ ¿aZ'ªXUHi-soÎkù\Y,ßh:Ÿyz.ÚU÷yI24²ÌM™`rs®+žlzÏuÙÕŠÁA¹SááðÜþ$jŒƒS”ÑåkmyaÎ= µN{øÎpÐʲ‚mþhLƒ5ôÍJ¼?\|³™œn^™-ìܼb`ì´Úd`ù¦wAM8ôQÿPPõ=¡ÑN;( “'~RwlôSâÎw–&e©ÎºÀ µ‚Û|ƒ¶åì©Ÿ…HÆt•¨ž5ÊÊå„”sO:Œ…»•Ü1§o>:š"DØ8V ^hBý¢aQ@o"qo†Yo{¦»WÏ<”{îÉÚudWÒŸõ2kv=õ…*r;ú9Dº'¨–›˜€p†|ã½–º…ŸqçlGΕK·z¸¸ñÛ-òÖ!—¥Ö/ny!sÉÖ1Ož‰—2Ì®åKgKðw0¾°jXdr«•(š52Ò²£d™ê3Ϙ0kQÚP ·P?*ÛvÑG÷@Sv>‰Ü㈴Onê<¸›,[UU~7T+'Ëéëz±,Ú>µÆ‘!•i?§FÒ^,ÉÎœØ^ÚL³å¡yHÈ}ðz ©£nºmCÕgìióÕ¼%½œÅÛÀ">^¾Tü ×Ÿ}ú äÛÚ›œ2Ý­¯eÀdÕÄÓzóD÷›kîuŽ-¯÷줫•UI\tÌ')âÕ½Òcì´¼cáÀˆŽµUºÝa ‡êðª_E\"Øk~*kÙx“_‹¼SÏT»õ¿ûJ˜i·[JG_×tŒég«m¼ájä’ag¼hBu›­—´(z]œË'"íc]‡‚s¦ý$ò¥ä·¤žÆÔ®Iyʆë¼Ãù榳Ÿbêîá…%÷mÃmÎ-ˆË -÷¦ßœ™èØG ìT¿0hRÊáô0ÙW¾õsR%òĢǼf2,YoÆ Ýÿ¾´ùÜ|Ó:9üpÕíΆì£A¦Õ´ì‹òÃ秾lm#xc×åÅ«®$g -¨i/ï$TkQX_ÓkÁó{k -íŠ1«W]Ž–dÿ—[ -´0¬d&éœpl©4ŒQ©Gg½º’^ß|±úŠp=6înãWòïLú¿¦ª -|a{¿†íZmsi™`…ÌWªM÷Š^ò·Ô~Zê»ÕxÃòÇø,‹ü5{f6FÎö ì5³rÐ .U*Óoå_¡à$-Š@Öˆ¯õ/&eßöëè½{óRŸjŠûseþù½1P=Ä«lv_›SqÏ|*wàæMÕ²Âz£iWw£›,As‡ó™–Ÿ>mE\m±‹R7 qIt Äà^ïâ¦Ò>_Ù^èÝã-†pÓhÔ¿ô¨É_DZWxIÑn,rÑ–™ïÄ!ƒ,µTÞ¤¸”¹¿^'èR\[ËCN:p†³,2‰N«ÇÒ½ûd„× -endstream -endobj -615 0 obj << -/Type /FontDescriptor -/FontName /LAOMOF+NimbusRomNo9L-ReguItal -/Flags 4 -/FontBBox [-169 -270 1010 924] -/Ascent 668 -/CapHeight 668 -/Descent -193 -/ItalicAngle -15 -/StemV 78 -/XHeight 441 -/CharSet (/d/e/i/m/o/one/period/q/r/u/v/zero) -/FontFile 614 0 R ->> endobj -595 0 obj << -/Type /Encoding -/Differences [2/fi/fl 33/exclam/quotedbl/numbersign/dollar 38/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question 65/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright 95/underscore 97/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright 136/circumflex 147/quotedblleft/quotedblright 150/endash] ->> endobj -499 0 obj << -/Type /Font -/Subtype /Type1 -/BaseFont /PVCURR+CMMI10 -/FontDescriptor 601 0 R -/FirstChar 58 -/LastChar 117 -/Widths 593 0 R ->> endobj -572 0 obj << -/Type /Font -/Subtype /Type1 -/BaseFont /JHJBYF+CMR10 -/FontDescriptor 603 0 R -/FirstChar 48 -/LastChar 93 -/Widths 592 0 R ->> endobj -432 0 obj << -/Type /Font -/Subtype /Type1 -/BaseFont /ROGAYD+CMSY10 -/FontDescriptor 605 0 R -/FirstChar 3 -/LastChar 20 -/Widths 594 0 R ->> endobj -584 0 obj << -/Type /Font -/Subtype /Type1 -/BaseFont /NSJEOL+CMSY7 -/FontDescriptor 607 0 R -/FirstChar 48 -/LastChar 48 -/Widths 591 0 R ->> endobj -355 0 obj << -/Type /Font -/Subtype /Type1 -/BaseFont /MLARYO+NimbusMonL-Regu -/FontDescriptor 609 0 R -/FirstChar 33 -/LastChar 136 -/Widths 596 0 R -/Encoding 595 0 R ->> endobj -352 0 obj << -/Type /Font -/Subtype /Type1 -/BaseFont /DCFLXI+NimbusRomNo9L-Medi -/FontDescriptor 611 0 R -/FirstChar 2 -/LastChar 150 -/Widths 598 0 R -/Encoding 595 0 R ->> endobj -351 0 obj << -/Type /Font -/Subtype /Type1 -/BaseFont /DJKLXJ+NimbusRomNo9L-Regu -/FontDescriptor 613 0 R -/FirstChar 2 -/LastChar 148 -/Widths 599 0 R -/Encoding 595 0 R ->> endobj -353 0 obj << -/Type /Font -/Subtype /Type1 -/BaseFont /LAOMOF+NimbusRomNo9L-ReguItal -/FontDescriptor 615 0 R -/FirstChar 46 -/LastChar 118 -/Widths 597 0 R -/Encoding 595 0 R ->> endobj -356 0 obj << -/Type /Pages -/Count 6 -/Parent 616 0 R -/Kids [326 0 R 397 0 R 424 0 R 429 0 R 435 0 R 439 0 R] ->> endobj -453 0 obj << -/Type /Pages -/Count 6 -/Parent 616 0 R -/Kids [450 0 R 455 0 R 460 0 R 464 0 R 468 0 R 473 0 R] ->> endobj -480 0 obj << -/Type /Pages -/Count 6 -/Parent 616 0 R -/Kids [477 0 R 482 0 R 487 0 R 491 0 R 496 0 R 502 0 R] ->> endobj -510 0 obj << -/Type /Pages -/Count 6 -/Parent 616 0 R -/Kids [507 0 R 512 0 R 517 0 R 525 0 R 529 0 R 535 0 R] ->> endobj -542 0 obj << -/Type /Pages -/Count 6 -/Parent 616 0 R -/Kids [539 0 R 544 0 R 548 0 R 552 0 R 556 0 R 560 0 R] ->> endobj -567 0 obj << -/Type /Pages -/Count 5 -/Parent 616 0 R -/Kids [564 0 R 569 0 R 574 0 R 581 0 R 588 0 R] ->> endobj -616 0 obj << -/Type /Pages -/Count 35 -/Kids [356 0 R 453 0 R 480 0 R 510 0 R 542 0 R 567 0 R] ->> endobj -617 0 obj << -/Type /Outlines -/First 3 0 R -/Last 323 0 R -/Count 18 ->> endobj -323 0 obj << -/Title 324 0 R -/A 321 0 R -/Parent 617 0 R -/Prev 275 0 R ->> endobj -319 0 obj << -/Title 320 0 R -/A 317 0 R -/Parent 275 0 R -/Prev 315 0 R ->> endobj -315 0 obj << -/Title 316 0 R -/A 313 0 R -/Parent 275 0 R -/Prev 311 0 R -/Next 319 0 R ->> endobj -311 0 obj << -/Title 312 0 R -/A 309 0 R -/Parent 275 0 R -/Prev 307 0 R -/Next 315 0 R ->> endobj -307 0 obj << -/Title 308 0 R -/A 305 0 R -/Parent 275 0 R -/Prev 303 0 R -/Next 311 0 R ->> endobj -303 0 obj << -/Title 304 0 R -/A 301 0 R -/Parent 275 0 R -/Prev 299 0 R -/Next 307 0 R ->> endobj -299 0 obj << -/Title 300 0 R -/A 297 0 R -/Parent 275 0 R -/Prev 295 0 R -/Next 303 0 R ->> endobj -295 0 obj << -/Title 296 0 R -/A 293 0 R -/Parent 275 0 R -/Prev 291 0 R -/Next 299 0 R ->> endobj -291 0 obj << -/Title 292 0 R -/A 289 0 R -/Parent 275 0 R -/Prev 283 0 R -/Next 295 0 R ->> endobj -287 0 obj << -/Title 288 0 R -/A 285 0 R -/Parent 283 0 R ->> endobj -283 0 obj << -/Title 284 0 R -/A 281 0 R -/Parent 275 0 R -/Prev 279 0 R -/Next 291 0 R -/First 287 0 R -/Last 287 0 R -/Count -1 ->> endobj -279 0 obj << -/Title 280 0 R -/A 277 0 R -/Parent 275 0 R -/Next 283 0 R ->> endobj -275 0 obj << -/Title 276 0 R -/A 273 0 R -/Parent 617 0 R -/Prev 259 0 R -/Next 323 0 R -/First 279 0 R -/Last 319 0 R -/Count -10 ->> endobj -271 0 obj << -/Title 272 0 R -/A 269 0 R -/Parent 259 0 R -/Prev 267 0 R ->> endobj -267 0 obj << -/Title 268 0 R -/A 265 0 R -/Parent 259 0 R -/Prev 263 0 R -/Next 271 0 R ->> endobj -263 0 obj << -/Title 264 0 R -/A 261 0 R -/Parent 259 0 R -/Next 267 0 R ->> endobj -259 0 obj << -/Title 260 0 R -/A 257 0 R -/Parent 617 0 R -/Prev 243 0 R -/Next 275 0 R -/First 263 0 R -/Last 271 0 R -/Count -3 ->> endobj -255 0 obj << -/Title 256 0 R -/A 253 0 R -/Parent 243 0 R -/Prev 251 0 R ->> endobj -251 0 obj << -/Title 252 0 R -/A 249 0 R -/Parent 243 0 R -/Prev 247 0 R -/Next 255 0 R ->> endobj -247 0 obj << -/Title 248 0 R -/A 245 0 R -/Parent 243 0 R -/Next 251 0 R ->> endobj -243 0 obj << -/Title 244 0 R -/A 241 0 R -/Parent 617 0 R -/Prev 231 0 R -/Next 259 0 R -/First 247 0 R -/Last 255 0 R -/Count -3 ->> endobj -239 0 obj << -/Title 240 0 R -/A 237 0 R -/Parent 231 0 R -/Prev 235 0 R ->> endobj -235 0 obj << -/Title 236 0 R -/A 233 0 R -/Parent 231 0 R -/Next 239 0 R ->> endobj -231 0 obj << -/Title 232 0 R -/A 229 0 R -/Parent 617 0 R -/Prev 215 0 R -/Next 243 0 R -/First 235 0 R -/Last 239 0 R -/Count -2 ->> endobj -227 0 obj << -/Title 228 0 R -/A 225 0 R -/Parent 215 0 R -/Prev 223 0 R ->> endobj -223 0 obj << -/Title 224 0 R -/A 221 0 R -/Parent 215 0 R -/Prev 219 0 R -/Next 227 0 R ->> endobj -219 0 obj << -/Title 220 0 R -/A 217 0 R -/Parent 215 0 R -/Next 223 0 R ->> endobj -215 0 obj << -/Title 216 0 R -/A 213 0 R -/Parent 617 0 R -/Prev 167 0 R -/Next 231 0 R -/First 219 0 R -/Last 227 0 R -/Count -3 ->> endobj -211 0 obj << -/Title 212 0 R -/A 209 0 R -/Parent 207 0 R ->> endobj -207 0 obj << -/Title 208 0 R -/A 205 0 R -/Parent 167 0 R -/Prev 203 0 R -/First 211 0 R -/Last 211 0 R -/Count -1 ->> endobj -203 0 obj << -/Title 204 0 R -/A 201 0 R -/Parent 167 0 R -/Prev 191 0 R -/Next 207 0 R ->> endobj -199 0 obj << -/Title 200 0 R -/A 197 0 R -/Parent 191 0 R -/Prev 195 0 R ->> endobj -195 0 obj << -/Title 196 0 R -/A 193 0 R -/Parent 191 0 R -/Next 199 0 R ->> endobj -191 0 obj << -/Title 192 0 R -/A 189 0 R -/Parent 167 0 R -/Prev 179 0 R -/Next 203 0 R -/First 195 0 R -/Last 199 0 R -/Count -2 ->> endobj -187 0 obj << -/Title 188 0 R -/A 185 0 R -/Parent 179 0 R -/Prev 183 0 R ->> endobj -183 0 obj << -/Title 184 0 R -/A 181 0 R -/Parent 179 0 R -/Next 187 0 R ->> endobj -179 0 obj << -/Title 180 0 R -/A 177 0 R -/Parent 167 0 R -/Prev 175 0 R -/Next 191 0 R -/First 183 0 R -/Last 187 0 R -/Count -2 ->> endobj -175 0 obj << -/Title 176 0 R -/A 173 0 R -/Parent 167 0 R -/Prev 171 0 R -/Next 179 0 R ->> endobj -171 0 obj << -/Title 172 0 R -/A 169 0 R -/Parent 167 0 R -/Next 175 0 R ->> endobj -167 0 obj << -/Title 168 0 R -/A 165 0 R -/Parent 617 0 R -/Prev 155 0 R -/Next 215 0 R -/First 171 0 R -/Last 207 0 R -/Count -6 ->> endobj -163 0 obj << -/Title 164 0 R -/A 161 0 R -/Parent 155 0 R -/Prev 159 0 R ->> endobj -159 0 obj << -/Title 160 0 R -/A 157 0 R -/Parent 155 0 R -/Next 163 0 R ->> endobj -155 0 obj << -/Title 156 0 R -/A 153 0 R -/Parent 617 0 R -/Prev 143 0 R -/Next 167 0 R -/First 159 0 R -/Last 163 0 R -/Count -2 ->> endobj -151 0 obj << -/Title 152 0 R -/A 149 0 R -/Parent 143 0 R -/Prev 147 0 R ->> endobj -147 0 obj << -/Title 148 0 R -/A 145 0 R -/Parent 143 0 R -/Next 151 0 R ->> endobj -143 0 obj << -/Title 144 0 R -/A 141 0 R -/Parent 617 0 R -/Prev 131 0 R -/Next 155 0 R -/First 147 0 R -/Last 151 0 R -/Count -2 ->> endobj -139 0 obj << -/Title 140 0 R -/A 137 0 R -/Parent 131 0 R -/Prev 135 0 R ->> endobj -135 0 obj << -/Title 136 0 R -/A 133 0 R -/Parent 131 0 R -/Next 139 0 R ->> endobj -131 0 obj << -/Title 132 0 R -/A 129 0 R -/Parent 617 0 R -/Prev 115 0 R -/Next 143 0 R -/First 135 0 R -/Last 139 0 R -/Count -2 ->> endobj -127 0 obj << -/Title 128 0 R -/A 125 0 R -/Parent 115 0 R -/Prev 123 0 R ->> endobj -123 0 obj << -/Title 124 0 R -/A 121 0 R -/Parent 115 0 R -/Prev 119 0 R -/Next 127 0 R ->> endobj -119 0 obj << -/Title 120 0 R -/A 117 0 R -/Parent 115 0 R -/Next 123 0 R ->> endobj -115 0 obj << -/Title 116 0 R -/A 113 0 R -/Parent 617 0 R -/Prev 67 0 R -/Next 131 0 R -/First 119 0 R -/Last 127 0 R -/Count -3 ->> endobj -111 0 obj << -/Title 112 0 R -/A 109 0 R -/Parent 67 0 R -/Prev 75 0 R ->> endobj -107 0 obj << -/Title 108 0 R -/A 105 0 R -/Parent 75 0 R -/Prev 83 0 R ->> endobj -103 0 obj << -/Title 104 0 R -/A 101 0 R -/Parent 83 0 R -/Prev 99 0 R ->> endobj -99 0 obj << -/Title 100 0 R -/A 97 0 R -/Parent 83 0 R -/Prev 95 0 R -/Next 103 0 R ->> endobj -95 0 obj << -/Title 96 0 R -/A 93 0 R -/Parent 83 0 R -/Prev 91 0 R -/Next 99 0 R ->> endobj -91 0 obj << -/Title 92 0 R -/A 89 0 R -/Parent 83 0 R -/Prev 87 0 R -/Next 95 0 R ->> endobj -87 0 obj << -/Title 88 0 R -/A 85 0 R -/Parent 83 0 R -/Next 91 0 R ->> endobj -83 0 obj << -/Title 84 0 R -/A 81 0 R -/Parent 75 0 R -/Prev 79 0 R -/Next 107 0 R -/First 87 0 R -/Last 103 0 R -/Count -5 ->> endobj -79 0 obj << -/Title 80 0 R -/A 77 0 R -/Parent 75 0 R -/Next 83 0 R ->> endobj -75 0 obj << -/Title 76 0 R -/A 73 0 R -/Parent 67 0 R -/Prev 71 0 R -/Next 111 0 R -/First 79 0 R -/Last 107 0 R -/Count -3 ->> endobj -71 0 obj << -/Title 72 0 R -/A 69 0 R -/Parent 67 0 R -/Next 75 0 R ->> endobj -67 0 obj << -/Title 68 0 R -/A 65 0 R -/Parent 617 0 R -/Prev 59 0 R -/Next 115 0 R -/First 71 0 R -/Last 111 0 R -/Count -3 ->> endobj -63 0 obj << -/Title 64 0 R -/A 61 0 R -/Parent 59 0 R ->> endobj -59 0 obj << -/Title 60 0 R -/A 57 0 R -/Parent 617 0 R -/Prev 51 0 R -/Next 67 0 R -/First 63 0 R -/Last 63 0 R -/Count -1 ->> endobj -55 0 obj << -/Title 56 0 R -/A 53 0 R -/Parent 51 0 R ->> endobj -51 0 obj << -/Title 52 0 R -/A 49 0 R -/Parent 617 0 R -/Prev 39 0 R -/Next 59 0 R -/First 55 0 R -/Last 55 0 R -/Count -1 ->> endobj -47 0 obj << -/Title 48 0 R -/A 45 0 R -/Parent 39 0 R -/Prev 43 0 R ->> endobj -43 0 obj << -/Title 44 0 R -/A 41 0 R -/Parent 39 0 R -/Next 47 0 R ->> endobj -39 0 obj << -/Title 40 0 R -/A 37 0 R -/Parent 617 0 R -/Prev 27 0 R -/Next 51 0 R -/First 43 0 R -/Last 47 0 R -/Count -2 ->> endobj -35 0 obj << -/Title 36 0 R -/A 33 0 R -/Parent 27 0 R -/Prev 31 0 R ->> endobj -31 0 obj << -/Title 32 0 R -/A 29 0 R -/Parent 27 0 R -/Next 35 0 R ->> endobj -27 0 obj << -/Title 28 0 R -/A 25 0 R -/Parent 617 0 R -/Prev 11 0 R -/Next 39 0 R -/First 31 0 R -/Last 35 0 R -/Count -2 ->> endobj -23 0 obj << -/Title 24 0 R -/A 21 0 R -/Parent 11 0 R -/Prev 19 0 R ->> endobj -19 0 obj << -/Title 20 0 R -/A 17 0 R -/Parent 11 0 R -/Prev 15 0 R -/Next 23 0 R ->> endobj -15 0 obj << -/Title 16 0 R -/A 13 0 R -/Parent 11 0 R -/Next 19 0 R ->> endobj -11 0 obj << -/Title 12 0 R -/A 9 0 R -/Parent 617 0 R -/Prev 3 0 R -/Next 27 0 R -/First 15 0 R -/Last 23 0 R -/Count -3 ->> endobj -7 0 obj << -/Title 8 0 R -/A 5 0 R -/Parent 3 0 R ->> endobj -3 0 obj << -/Title 4 0 R -/A 1 0 R -/Parent 617 0 R -/Next 11 0 R -/First 7 0 R -/Last 7 0 R -/Count -1 ->> endobj -618 0 obj << -/Names [(Doc-Start) 350 0 R (Hfootnote.1) 532 0 R (appendix.A) 274 0 R (appendix.B) 322 0 R (page.1) 349 0 R (page.10) 466 0 R] -/Limits [(Doc-Start) (page.10)] ->> endobj -619 0 obj << -/Names [(page.11) 470 0 R (page.12) 475 0 R (page.13) 479 0 R (page.14) 484 0 R (page.15) 489 0 R (page.16) 493 0 R] -/Limits [(page.11) (page.16)] ->> endobj -620 0 obj << -/Names [(page.17) 498 0 R (page.18) 504 0 R (page.19) 509 0 R (page.2) 399 0 R (page.20) 514 0 R (page.21) 519 0 R] -/Limits [(page.17) (page.21)] ->> endobj -621 0 obj << -/Names [(page.22) 527 0 R (page.23) 531 0 R (page.24) 537 0 R (page.25) 541 0 R (page.26) 546 0 R (page.27) 550 0 R] -/Limits [(page.22) (page.27)] ->> endobj -622 0 obj << -/Names [(page.28) 554 0 R (page.29) 558 0 R (page.3) 426 0 R (page.30) 562 0 R (page.31) 566 0 R (page.32) 571 0 R] -/Limits [(page.28) (page.32)] ->> endobj -623 0 obj << -/Names [(page.33) 576 0 R (page.34) 583 0 R (page.35) 590 0 R (page.4) 431 0 R (page.5) 437 0 R (page.6) 441 0 R] -/Limits [(page.33) (page.6)] ->> endobj -624 0 obj << -/Names [(page.7) 452 0 R (page.8) 457 0 R (page.9) 462 0 R (section*.1) 354 0 R (section*.2) 86 0 R (section*.3) 90 0 R] -/Limits [(page.7) (section*.3)] ->> endobj -625 0 obj << -/Names [(section*.4) 94 0 R (section*.5) 98 0 R (section*.6) 102 0 R (section*.7) 210 0 R (section.1) 2 0 R (section.10) 142 0 R] -/Limits [(section*.4) (section.10)] ->> endobj -626 0 obj << -/Names [(section.11) 154 0 R (section.12) 166 0 R (section.13) 214 0 R (section.14) 230 0 R (section.15) 242 0 R (section.16) 258 0 R] -/Limits [(section.11) (section.16)] ->> endobj -627 0 obj << -/Names [(section.2) 10 0 R (section.3) 26 0 R (section.4) 38 0 R (section.5) 50 0 R (section.6) 58 0 R (section.7) 66 0 R] -/Limits [(section.2) (section.7)] ->> endobj -628 0 obj << -/Names [(section.8) 114 0 R (section.9) 130 0 R (subsection.1.1) 6 0 R (subsection.10.1) 146 0 R (subsection.10.2) 150 0 R (subsection.11.1) 158 0 R] -/Limits [(section.8) (subsection.11.1)] ->> endobj -629 0 obj << -/Names [(subsection.11.2) 162 0 R (subsection.12.1) 170 0 R (subsection.12.2) 174 0 R (subsection.12.3) 178 0 R (subsection.12.4) 190 0 R (subsection.12.5) 202 0 R] -/Limits [(subsection.11.2) (subsection.12.5)] ->> endobj -630 0 obj << -/Names [(subsection.12.6) 206 0 R (subsection.13.1) 218 0 R (subsection.13.2) 222 0 R (subsection.13.3) 226 0 R (subsection.14.1) 234 0 R (subsection.14.2) 238 0 R] -/Limits [(subsection.12.6) (subsection.14.2)] ->> endobj -631 0 obj << -/Names [(subsection.15.1) 246 0 R (subsection.15.2) 250 0 R (subsection.15.3) 254 0 R (subsection.16.1) 262 0 R (subsection.16.2) 266 0 R (subsection.16.3) 270 0 R] -/Limits [(subsection.15.1) (subsection.16.3)] ->> endobj -632 0 obj << -/Names [(subsection.2.1) 14 0 R (subsection.2.2) 18 0 R (subsection.2.3) 22 0 R (subsection.3.1) 30 0 R (subsection.3.2) 34 0 R (subsection.4.1) 42 0 R] -/Limits [(subsection.2.1) (subsection.4.1)] ->> endobj -633 0 obj << -/Names [(subsection.4.2) 46 0 R (subsection.5.1) 54 0 R (subsection.6.1) 62 0 R (subsection.7.1) 70 0 R (subsection.7.2) 74 0 R (subsection.7.3) 110 0 R] -/Limits [(subsection.4.2) (subsection.7.3)] ->> endobj -634 0 obj << -/Names [(subsection.8.1) 118 0 R (subsection.8.2) 122 0 R (subsection.8.3) 126 0 R (subsection.9.1) 134 0 R (subsection.9.2) 138 0 R (subsection.A.1) 278 0 R] -/Limits [(subsection.8.1) (subsection.A.1)] ->> endobj -635 0 obj << -/Names [(subsection.A.10) 318 0 R (subsection.A.2) 282 0 R (subsection.A.3) 290 0 R (subsection.A.4) 294 0 R (subsection.A.5) 298 0 R (subsection.A.6) 302 0 R] -/Limits [(subsection.A.10) (subsection.A.6)] ->> endobj -636 0 obj << -/Names [(subsection.A.7) 306 0 R (subsection.A.8) 310 0 R (subsection.A.9) 314 0 R (subsubsection.12.3.1) 182 0 R (subsubsection.12.3.2) 186 0 R (subsubsection.12.4.1) 194 0 R] -/Limits [(subsection.A.7) (subsubsection.12.4.1)] ->> endobj -637 0 obj << -/Names [(subsubsection.12.4.2) 198 0 R (subsubsection.7.2.1) 78 0 R (subsubsection.7.2.2) 82 0 R (subsubsection.7.2.3) 106 0 R (subsubsection.A.2.1) 286 0 R] -/Limits [(subsubsection.12.4.2) (subsubsection.A.2.1)] ->> endobj -638 0 obj << -/Kids [618 0 R 619 0 R 620 0 R 621 0 R 622 0 R 623 0 R] -/Limits [(Doc-Start) (page.6)] ->> endobj -639 0 obj << -/Kids [624 0 R 625 0 R 626 0 R 627 0 R 628 0 R 629 0 R] -/Limits [(page.7) (subsection.12.5)] ->> endobj -640 0 obj << -/Kids [630 0 R 631 0 R 632 0 R 633 0 R 634 0 R 635 0 R] -/Limits [(subsection.12.6) (subsection.A.6)] ->> endobj -641 0 obj << -/Kids [636 0 R 637 0 R] -/Limits [(subsection.A.7) (subsubsection.A.2.1)] ->> endobj -642 0 obj << -/Kids [638 0 R 639 0 R 640 0 R 641 0 R] -/Limits [(Doc-Start) (subsubsection.A.2.1)] ->> endobj -643 0 obj << -/Dests 642 0 R ->> endobj -644 0 obj << -/Type /Catalog -/Pages 616 0 R -/Outlines 617 0 R -/Names 643 0 R -/PageMode/UseOutlines -/OpenAction 325 0 R ->> endobj -645 0 obj << -/Author()/Title(The Khronos Vulkan API Registry)/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.13)/Keywords() -/CreationDate (D:20160322164457Z) -/ModDate (D:20160322164457Z) -/Trapped /False -/PTEX.Fullbanner (This is MiKTeX-pdfTeX 2.9.4535 (1.40.13)) ->> endobj -xref -0 646 -0000000000 65535 f -0000000015 00000 n -0000027701 00000 n -0000218236 00000 n -0000000060 00000 n -0000000092 00000 n -0000027761 00000 n -0000218179 00000 n -0000000142 00000 n -0000000178 00000 n -0000030553 00000 n -0000218056 00000 n -0000000223 00000 n -0000000259 00000 n -0000033853 00000 n -0000217982 00000 n -0000000310 00000 n -0000000368 00000 n -0000036163 00000 n -0000217895 00000 n -0000000419 00000 n -0000000477 00000 n -0000036224 00000 n -0000217821 00000 n -0000000528 00000 n -0000000589 00000 n -0000036285 00000 n -0000217696 00000 n -0000000635 00000 n -0000000678 00000 n -0000036346 00000 n -0000217622 00000 n -0000000729 00000 n -0000000760 00000 n -0000036407 00000 n -0000217548 00000 n -0000000811 00000 n -0000000843 00000 n -0000036468 00000 n -0000217423 00000 n -0000000889 00000 n -0000000942 00000 n -0000036529 00000 n -0000217349 00000 n -0000000993 00000 n -0000001045 00000 n -0000040001 00000 n -0000217275 00000 n -0000001096 00000 n -0000001146 00000 n -0000040062 00000 n -0000217150 00000 n -0000001192 00000 n -0000001243 00000 n -0000040122 00000 n -0000217089 00000 n -0000001294 00000 n -0000001346 00000 n -0000040183 00000 n -0000216964 00000 n -0000001392 00000 n -0000001443 00000 n -0000042757 00000 n -0000216903 00000 n -0000001494 00000 n -0000001541 00000 n -0000042818 00000 n -0000216776 00000 n -0000001587 00000 n -0000001633 00000 n -0000042879 00000 n -0000216702 00000 n -0000001684 00000 n -0000001732 00000 n -0000045668 00000 n -0000216576 00000 n -0000001783 00000 n -0000001829 00000 n -0000045729 00000 n -0000216502 00000 n -0000001885 00000 n -0000001944 00000 n -0000045790 00000 n -0000216376 00000 n -0000002000 00000 n -0000002071 00000 n -0000045851 00000 n -0000216302 00000 n -0000002118 00000 n -0000002171 00000 n -0000045912 00000 n -0000216215 00000 n -0000002218 00000 n -0000002264 00000 n -0000045973 00000 n -0000216128 00000 n -0000002311 00000 n -0000002355 00000 n -0000048549 00000 n -0000216039 00000 n -0000002402 00000 n -0000002452 00000 n -0000048609 00000 n -0000215962 00000 n -0000002500 00000 n -0000002547 00000 n -0000048671 00000 n -0000215885 00000 n -0000002604 00000 n -0000002645 00000 n -0000050366 00000 n -0000215808 00000 n -0000002697 00000 n -0000002745 00000 n -0000052939 00000 n -0000215677 00000 n -0000002792 00000 n -0000002846 00000 n -0000053001 00000 n -0000215598 00000 n -0000002898 00000 n -0000002948 00000 n -0000053063 00000 n -0000215505 00000 n -0000003000 00000 n -0000003048 00000 n -0000053125 00000 n -0000215426 00000 n -0000003100 00000 n -0000003147 00000 n -0000055762 00000 n -0000215294 00000 n -0000003194 00000 n -0000003241 00000 n -0000055824 00000 n -0000215215 00000 n -0000003293 00000 n -0000003342 00000 n -0000055886 00000 n -0000215136 00000 n -0000003394 00000 n -0000003441 00000 n -0000055948 00000 n -0000215004 00000 n -0000003489 00000 n -0000003546 00000 n -0000056010 00000 n -0000214925 00000 n -0000003599 00000 n -0000003651 00000 n -0000058031 00000 n -0000214846 00000 n -0000003704 00000 n -0000003754 00000 n -0000058093 00000 n -0000214714 00000 n -0000003802 00000 n -0000003858 00000 n -0000058155 00000 n -0000214635 00000 n -0000003911 00000 n -0000003965 00000 n -0000058217 00000 n -0000214556 00000 n -0000004018 00000 n -0000004070 00000 n -0000058279 00000 n -0000214424 00000 n -0000004118 00000 n -0000004167 00000 n -0000058341 00000 n -0000214345 00000 n -0000004220 00000 n -0000004273 00000 n -0000060747 00000 n -0000214252 00000 n -0000004326 00000 n -0000004377 00000 n -0000060809 00000 n -0000214120 00000 n -0000004430 00000 n -0000004489 00000 n -0000060871 00000 n -0000214041 00000 n -0000004547 00000 n -0000004600 00000 n -0000060933 00000 n -0000213962 00000 n -0000004658 00000 n -0000004709 00000 n -0000063422 00000 n -0000213830 00000 n -0000004762 00000 n -0000004821 00000 n -0000063484 00000 n -0000213751 00000 n -0000004879 00000 n -0000004932 00000 n -0000063546 00000 n -0000213672 00000 n -0000004990 00000 n -0000005041 00000 n -0000065972 00000 n -0000213579 00000 n -0000005094 00000 n -0000005146 00000 n -0000066034 00000 n -0000213461 00000 n -0000005199 00000 n -0000005264 00000 n -0000066096 00000 n -0000213396 00000 n -0000005312 00000 n -0000005359 00000 n -0000066158 00000 n -0000213264 00000 n -0000005407 00000 n -0000005471 00000 n -0000066220 00000 n -0000213185 00000 n -0000005524 00000 n -0000005577 00000 n -0000068184 00000 n -0000213092 00000 n -0000005630 00000 n -0000005681 00000 n -0000068246 00000 n -0000213013 00000 n -0000005734 00000 n -0000005785 00000 n -0000068308 00000 n -0000212881 00000 n -0000005833 00000 n -0000005893 00000 n -0000068370 00000 n -0000212802 00000 n -0000005946 00000 n -0000006002 00000 n -0000071348 00000 n -0000212723 00000 n -0000006055 00000 n -0000006109 00000 n -0000071410 00000 n -0000212591 00000 n -0000006157 00000 n -0000006214 00000 n -0000071472 00000 n -0000212512 00000 n -0000006267 00000 n -0000006322 00000 n -0000071534 00000 n -0000212419 00000 n -0000006375 00000 n -0000006428 00000 n -0000073222 00000 n -0000212340 00000 n -0000006481 00000 n -0000006536 00000 n -0000075816 00000 n -0000212208 00000 n -0000006584 00000 n -0000006670 00000 n -0000075878 00000 n -0000212129 00000 n -0000006723 00000 n -0000006789 00000 n -0000075940 00000 n -0000212036 00000 n -0000006842 00000 n -0000006906 00000 n -0000080901 00000 n -0000211957 00000 n -0000006959 00000 n -0000007016 00000 n -0000083862 00000 n -0000211824 00000 n -0000007064 00000 n -0000007112 00000 n -0000083924 00000 n -0000211745 00000 n -0000007164 00000 n -0000007204 00000 n -0000083986 00000 n -0000211613 00000 n -0000007256 00000 n -0000007304 00000 n -0000086338 00000 n -0000211548 00000 n -0000007361 00000 n -0000007410 00000 n -0000092753 00000 n -0000211455 00000 n -0000007462 00000 n -0000007520 00000 n -0000094650 00000 n -0000211362 00000 n -0000007572 00000 n -0000007629 00000 n -0000096979 00000 n -0000211269 00000 n -0000007681 00000 n -0000007734 00000 n -0000099311 00000 n -0000211176 00000 n -0000007786 00000 n -0000007830 00000 n -0000101800 00000 n -0000211083 00000 n -0000007882 00000 n -0000007942 00000 n -0000101862 00000 n -0000210990 00000 n -0000007994 00000 n -0000008069 00000 n -0000101924 00000 n -0000210897 00000 n -0000008121 00000 n -0000008172 00000 n -0000104733 00000 n -0000210818 00000 n -0000008225 00000 n -0000008290 00000 n -0000104795 00000 n -0000210739 00000 n -0000008338 00000 n -0000008370 00000 n -0000009915 00000 n -0000010175 00000 n -0000010365 00000 n -0000010517 00000 n -0000010674 00000 n -0000010825 00000 n -0000010982 00000 n -0000011138 00000 n -0000011295 00000 n -0000011446 00000 n -0000011603 00000 n -0000011759 00000 n -0000011911 00000 n -0000012068 00000 n -0000012225 00000 n -0000012377 00000 n -0000012534 00000 n -0000012686 00000 n -0000015060 00000 n -0000015210 00000 n -0000015367 00000 n -0000013028 00000 n -0000008420 00000 n -0000012843 00000 n -0000012904 00000 n -0000209516 00000 n -0000209343 00000 n -0000209689 00000 n -0000012966 00000 n -0000209172 00000 n -0000209867 00000 n -0000015523 00000 n -0000015685 00000 n -0000015847 00000 n -0000015999 00000 n -0000016152 00000 n -0000016304 00000 n -0000016457 00000 n -0000016609 00000 n -0000016771 00000 n -0000016928 00000 n -0000017080 00000 n -0000017237 00000 n -0000017394 00000 n -0000017551 00000 n -0000017703 00000 n -0000017860 00000 n -0000018017 00000 n -0000018169 00000 n -0000018327 00000 n -0000018484 00000 n -0000018637 00000 n -0000018794 00000 n -0000018952 00000 n -0000019105 00000 n -0000019263 00000 n -0000019421 00000 n -0000019579 00000 n -0000019742 00000 n -0000019905 00000 n -0000020063 00000 n -0000020226 00000 n -0000020389 00000 n -0000020547 00000 n -0000020704 00000 n -0000020857 00000 n -0000021010 00000 n -0000021168 00000 n -0000021326 00000 n -0000023886 00000 n -0000021545 00000 n -0000014608 00000 n -0000013139 00000 n -0000021484 00000 n -0000024037 00000 n -0000024195 00000 n -0000024352 00000 n -0000024505 00000 n -0000024663 00000 n -0000024821 00000 n -0000024979 00000 n -0000025132 00000 n -0000025290 00000 n -0000025448 00000 n -0000025606 00000 n -0000025759 00000 n -0000025916 00000 n -0000026073 00000 n -0000026235 00000 n -0000026392 00000 n -0000026549 00000 n -0000026704 00000 n -0000026861 00000 n -0000027017 00000 n -0000027174 00000 n -0000027330 00000 n -0000027488 00000 n -0000027821 00000 n -0000023570 00000 n -0000021643 00000 n -0000027640 00000 n -0000030295 00000 n -0000030614 00000 n -0000030163 00000 n -0000027919 00000 n -0000030492 00000 n -0000208888 00000 n -0000033639 00000 n -0000033914 00000 n -0000033507 00000 n -0000030725 00000 n -0000033792 00000 n -0000036590 00000 n -0000035990 00000 n -0000034025 00000 n -0000036102 00000 n -0000038877 00000 n -0000039029 00000 n -0000039181 00000 n -0000039333 00000 n -0000039485 00000 n -0000039637 00000 n -0000039788 00000 n -0000040244 00000 n -0000038697 00000 n -0000036688 00000 n -0000039940 00000 n -0000209984 00000 n -0000042940 00000 n -0000042584 00000 n -0000040355 00000 n -0000042696 00000 n -0000045456 00000 n -0000046034 00000 n -0000045324 00000 n -0000043051 00000 n -0000045607 00000 n -0000048733 00000 n -0000048376 00000 n -0000046145 00000 n -0000048488 00000 n -0000050428 00000 n -0000050193 00000 n -0000048844 00000 n -0000050305 00000 n -0000052721 00000 n -0000053187 00000 n -0000052589 00000 n -0000050539 00000 n -0000052878 00000 n -0000056072 00000 n -0000055589 00000 n -0000053298 00000 n -0000055701 00000 n -0000210101 00000 n -0000058403 00000 n -0000057858 00000 n -0000056183 00000 n -0000057970 00000 n -0000060524 00000 n -0000060994 00000 n -0000060392 00000 n -0000058514 00000 n -0000060686 00000 n -0000063608 00000 n -0000063249 00000 n -0000061105 00000 n -0000063361 00000 n -0000065755 00000 n -0000066282 00000 n -0000065623 00000 n -0000063719 00000 n -0000065911 00000 n -0000208602 00000 n -0000067970 00000 n -0000068432 00000 n -0000067838 00000 n -0000066406 00000 n -0000068123 00000 n -0000071135 00000 n -0000071596 00000 n -0000071003 00000 n -0000068543 00000 n -0000071287 00000 n -0000210218 00000 n -0000073284 00000 n -0000073049 00000 n -0000071707 00000 n -0000073161 00000 n -0000075598 00000 n -0000076002 00000 n -0000075466 00000 n -0000073382 00000 n -0000075755 00000 n -0000078738 00000 n -0000078890 00000 n -0000079042 00000 n -0000080686 00000 n -0000079261 00000 n -0000078590 00000 n -0000076126 00000 n -0000079200 00000 n -0000081025 00000 n -0000080554 00000 n -0000079372 00000 n -0000080840 00000 n -0000080963 00000 n -0000083650 00000 n -0000084048 00000 n -0000083518 00000 n -0000081123 00000 n -0000083801 00000 n -0000086400 00000 n -0000086165 00000 n -0000084159 00000 n -0000086277 00000 n -0000210335 00000 n -0000088399 00000 n -0000088226 00000 n -0000086498 00000 n -0000088338 00000 n -0000090006 00000 n -0000089833 00000 n -0000088484 00000 n -0000089945 00000 n -0000091147 00000 n -0000090974 00000 n -0000090091 00000 n -0000091086 00000 n -0000092815 00000 n -0000092580 00000 n -0000091232 00000 n -0000092692 00000 n -0000094712 00000 n -0000094477 00000 n -0000092913 00000 n -0000094589 00000 n -0000097041 00000 n -0000096806 00000 n -0000094810 00000 n -0000096918 00000 n -0000210452 00000 n -0000099373 00000 n -0000099138 00000 n -0000097139 00000 n -0000099250 00000 n -0000208746 00000 n -0000101986 00000 n -0000101627 00000 n -0000099496 00000 n -0000101739 00000 n -0000104519 00000 n -0000106180 00000 n -0000106333 00000 n -0000104857 00000 n -0000104387 00000 n -0000102097 00000 n -0000104672 00000 n -0000209030 00000 n -0000106491 00000 n -0000106642 00000 n -0000106855 00000 n -0000106024 00000 n -0000105006 00000 n -0000106794 00000 n -0000106953 00000 n -0000106978 00000 n -0000107236 00000 n -0000107601 00000 n -0000208083 00000 n -0000107719 00000 n -0000108148 00000 n -0000108459 00000 n -0000109033 00000 n -0000109596 00000 n -0000119195 00000 n -0000119452 00000 n -0000129217 00000 n -0000129487 00000 n -0000136993 00000 n -0000137243 00000 n -0000144238 00000 n -0000144463 00000 n -0000163964 00000 n -0000164555 00000 n -0000181572 00000 n -0000182045 00000 n -0000200729 00000 n -0000201255 00000 n -0000207812 00000 n -0000210561 00000 n -0000210663 00000 n -0000218343 00000 n -0000218526 00000 n -0000218696 00000 n -0000218865 00000 n -0000219035 00000 n -0000219204 00000 n -0000219370 00000 n -0000219546 00000 n -0000219735 00000 n -0000219929 00000 n -0000220109 00000 n -0000220322 00000 n -0000220556 00000 n -0000220790 00000 n -0000221024 00000 n -0000221244 00000 n -0000221465 00000 n -0000221691 00000 n -0000221919 00000 n -0000222169 00000 n -0000222405 00000 n -0000222515 00000 n -0000222631 00000 n -0000222755 00000 n -0000222851 00000 n -0000222958 00000 n -0000222996 00000 n -0000223124 00000 n -trailer -<< /Size 646 -/Root 644 0 R -/Info 645 0 R -/ID [<5C037A030D5E034C732ED870C431FD96> <5C037A030D5E034C732ED870C431FD96>] >> -startxref -223418 -%%EOF diff --git a/src/spec/readme.tex b/src/spec/readme.tex index ded33a17..409efef6 100644 --- a/src/spec/readme.tex +++ b/src/spec/readme.tex @@ -411,6 +411,9 @@ member. \paragraph{Attributes of \tag{member} tags} \begin{itemize} +\item \attr{validextensionstructs} - only valid on the \code{pNext} member of a + struct. This is a comma-separated list of structures that may be + accepted by \code{pNext} instead of \code{NULL} \item \attr{len} - if the member is an array, len may be one or more of the following things, separated by commas (one for each array indirection): another member of that struct; ``null-terminated'' for a @@ -419,9 +422,13 @@ member. latexmath:[\$} and {\tt \$]}. \item \attr{externsync} - denotes that the member should be externally synchronized when accessed by Vulkan -\item \attr{optional} - whether this value can be omitted by providing - \code{NULL} (for pointers), \code{VK_NULL_HANDLE} (for handles) or 0 - (for bitmasks/values) +\item \attr{optional} - a value of 'true' or 'false' determines whether this + member can be omitted by providing \code{NULL} (for pointers), + \code{VK_NULL_HANDLE} (for handles) or 0 (for bitmasks/values). If the + member is a pointer to one of those types, multiple values may be + provided, separated by commas - one for each pointer indirection. + Note that this only affects automatic validity statements - explicit + statements remain unchanged. \item \attr{noautovalidity} - prevents automatic validity language being generated for the tagged item. Only suppresses item-specific validity - parenting issues etc. are still captured. @@ -795,9 +802,13 @@ members. string; ``1'' to indicate it's just a pointer (used for nested pointers); or an equation (a simple expression prefixed with ``math:'') -\item \attr{optional} - whether this value can be omitted by providing - \code{NULL} (for pointers), \code{VK_NULL_HANDLE} (for handles) or 0 - (for bitmasks/values) +\item \attr{optional} - a value of 'true' or 'false' determines whether this + member can be omitted by providing \code{NULL} (for pointers), + \code{VK_NULL_HANDLE} (for handles) or 0 (for bitmasks/values). If the + member is a pointer to one of those types, multiple values may be + provided, separated by commas - one for each pointer indirection. + Note that this only affects automatic validity statements - explicit + statements remain unchanged. \item \attr{noautovalidity} - prevents automatic validity language being generated for the tagged item. Only suppresses item-specific validity - parenting issues etc. are still captured. @@ -918,7 +929,7 @@ When processed into a C header for Vulkan, this results in: #define VK_MAX_EXTENSION_NAME 256 #define VK_LOD_CLAMP_NONE MAX_FLOAT typedef VkResult (VKAPI_PTR *PFN_vkCreateInstance)(const VkInstanceCreateInfo* pCreateInfo, VkInstance* pInstance); -#ifdef VK_PROTOTYPES +#ifndef VK_NO_PROTOTYPES VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance( const VkInstanceCreateInfo* pCreateInfo, VkInstance* pInstance); @@ -1033,7 +1044,7 @@ typedef VkResult (VKAPI_PTR *PFN_vkCreateSharedSwapchainsKHR)( const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains); -#ifdef VK_PROTOTYPES +#ifndef VK_NO_PROTOTYPES VKAPI_ATTR VkResult VKAPI_CALL vkCreateSharedSwapchainsKHR( VkDevice device, uint32_t swapchainCount, @@ -1503,7 +1514,7 @@ VK_DEFINE_DISP_SUBCLASS_HANDLE(VkInstance, VkObject) #define VK_MAX_PHYSICAL_DEVICE_NAME 256 #define VK_MAX_EXTENSION_NAME 256 typedef VkResult (VKAPI_PTR *PFN_vkCreateInstance)(const VkInstanceCreateInfo* pCreateInfo, VkInstance* pInstance); -#ifdef VK_PROTOTYPES +#ifndef VK_NO_PROTOTYPES VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance( const VkInstanceCreateInfo* pCreateInfo, VkInstance* pInstance); diff --git a/src/spec/registry.rnc b/src/spec/registry.rnc index 1ac7d095..aeea0e24 100644 --- a/src/spec/registry.rnc +++ b/src/spec/registry.rnc @@ -298,7 +298,7 @@ Command = element command { # Each defines the interface of an API version (e.g. OpenGL 1.2) # api - API tag (e.g. 'gl', 'gles2', etc. - used internally, not -# neccessarily an actual API name +# necessarily an actual API name # name - version name (C preprocessor name, e.g. GL_VERSION_4_2) # number - version number, e.g. 4.2 # protect - additional #ifdef symbol to place around the feature diff --git a/src/spec/test.c b/src/spec/test.c index a72a20f8..3f7eaa4b 100644 --- a/src/spec/test.c +++ b/src/spec/test.c @@ -13,7 +13,7 @@ int main(int ac, const char **av) { VkStructureType sType; VkResult result; - // Supress warnings about unused variables + // Suppress warnings about unused variables (void)sType; (void)result; sType = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR; diff --git a/src/spec/vk.xml b/src/spec/vk.xml index 9d6d4d7c..b179211f 100644 --- a/src/spec/vk.xml +++ b/src/spec/vk.xml @@ -101,7 +101,7 @@ maintained in the master branch of the Khronos Vulkan Github project. // Vulkan 1.0 version number #define VK_API_VERSION_1_0 VK_MAKE_VERSION(1, 0, 0) // Version of this file -#define VK_HEADER_VERSION 11 +#define VK_HEADER_VERSION 13 #define VK_DEFINE_HANDLE(object) typedef struct object##_T* object; @@ -336,6 +336,7 @@ maintained in the master branch of the Khronos Vulkan Github project. + typedef void (VKAPI_PTR *PFN_vkInternalAllocationNotification)( @@ -504,7 +505,7 @@ maintained in the master branch of the Khronos Vulkan Github project. const char* const* ppEnabledExtensionNames const VkPhysicalDeviceFeatures* pEnabledFeatures - Any given element of pname:ppEnabledLayerNames must: be the name of a layer present on the system, exactly matching a string returned in the sname:VkLayerProperties structure by fname:vkEnumerateDeviceLayerProperties + pname:ppEnabledLayerNames must: either be sname:NULL or contain the same sequence of layer names that was enabled when creating the parent instance Any given element of pname:ppEnabledExtensionNames must: be the name of an extension present on the system, exactly matching a string returned in the sname:VkExtensionProperties structure by fname:vkEnumerateDeviceExtensionProperties If an extension listed in pname:ppEnabledExtensionNames is provided as part of a layer, then both the layer and extension must: be enabled to enable that extension The pname:queueFamilyIndex member of any given element of pname:pQueueCreateInfos must: be unique within pname:pQueueCreateInfos @@ -692,11 +693,11 @@ maintained in the master branch of the Khronos Vulkan Github project. pname:offset must: be less than the size of pname:buffer pname:offset must: be a multiple of sname:VkPhysicalDeviceLimits::pname:minTexelBufferOffsetAlignment - If pname:range is not equal to ename:VK_WHOLE_SIZE: - pname:range must: be greater than `0` - pname:range must: be a multiple of the element size of pname:format - pname:range divided by the size of an element of pname:format, must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxTexelBufferElements - the sum of pname:offset and pname:range must: be less than or equal to the size of pname:buffer + If pname:range is not equal to ename:VK_WHOLE_SIZE: + ** pname:range must: be greater than `0` + ** pname:range must: be a multiple of the element size of pname:format + ** pname:range divided by the size of an element of pname:format, must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxTexelBufferElements + ** the sum of pname:offset and pname:range must: be less than or equal to the size of pname:buffer pname:buffer must: have been created with a pname:usage value containing at least one of ename:VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT or ename:VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT If pname:buffer was created with pname:usage containing ename:VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT, pname:format must: be supported for uniform texel buffers, as specified by the ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT flag in sname:VkFormatProperties::pname:bufferFeatures returned by fname:vkGetPhysicalDeviceFormatProperties If pname:buffer was created with pname:usage containing ename:VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT, pname:format must: be supported for storage texel buffers, as specified by the ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT flag in sname:VkFormatProperties::pname:bufferFeatures returned by fname:vkGetPhysicalDeviceFormatProperties @@ -977,24 +978,24 @@ maintained in the master branch of the Khronos Vulkan Github project. pname:dstOffset.x and (pname:extent.width + pname:dstOffset.x) must: both be greater than or equal to `0` and less than or equal to the destination image subresource width pname:dstOffset.y and (pname:extent.height + pname:dstOffset.y) must: both be greater than or equal to `0` and less than or equal to the destination image subresource height pname:dstOffset.z and (pname:extent.depth + pname:dstOffset.z) must: both be greater than or equal to `0` and less than or equal to the destination image subresource depth - If the calling command's pname:srcImage is a compressed format image: - all members of pname:srcOffset must: be a multiple of the corresponding dimensions of the compressed texel block - pname:extent.width must: be a multiple of the compressed texel block width or (pname:extent.width + pname:srcOffset.x) must: equal the source image subresource width - pname:extent.height must: be a multiple of the compressed texel block height or (pname:extent.height + pname:srcOffset.y) must: equal the source image subresource height - pname:extent.depth must: be a multiple of the compressed texel block depth or (pname:extent.depth + pname:srcOffset.z) must: equal the source image subresource depth - If the calling command's pname:dstImage is a compressed format image: - all members of pname:dstOffset must: be a multiple of the corresponding dimensions of the compressed texel block - pname:extent.width must: be a multiple of the compressed texel block width or (pname:extent.width + pname:dstOffset.x) must: equal the destination image subresource width - pname:extent.height must: be a multiple of the compressed texel block height or (pname:extent.height + pname:dstOffset.y) must: equal the destination image subresource height - pname:extent.depth must: be a multiple of the compressed texel block depth or (pname:extent.depth + pname:dstOffset.z) must: equal the destination image subresource depth + If the calling command's pname:srcImage is a compressed format image: + ** all members of pname:srcOffset must: be a multiple of the corresponding dimensions of the compressed texel block + ** pname:extent.width must: be a multiple of the compressed texel block width or (pname:extent.width + pname:srcOffset.x) must: equal the source image subresource width + ** pname:extent.height must: be a multiple of the compressed texel block height or (pname:extent.height + pname:srcOffset.y) must: equal the source image subresource height + ** pname:extent.depth must: be a multiple of the compressed texel block depth or (pname:extent.depth + pname:srcOffset.z) must: equal the source image subresource depth + If the calling command's pname:dstImage is a compressed format image: + ** all members of pname:dstOffset must: be a multiple of the corresponding dimensions of the compressed texel block + ** pname:extent.width must: be a multiple of the compressed texel block width or (pname:extent.width + pname:dstOffset.x) must: equal the destination image subresource width + ** pname:extent.height must: be a multiple of the compressed texel block height or (pname:extent.height + pname:dstOffset.y) must: equal the destination image subresource height + ** pname:extent.depth must: be a multiple of the compressed texel block depth or (pname:extent.depth + pname:dstOffset.z) must: equal the destination image subresource depth pname:srcOffset, pname:dstOffset, and pname:extent must: respect the image transfer granularity requirements of the queue family that it will be submitted against, as described in <<devsandqueues-physical-device-enumeration,Physical Device Enumeration>> VkImageSubresourceLayers srcSubresource - VkOffset3D srcOffsets[2] + VkOffset3D srcOffsets[2] VkImageSubresourceLayers dstSubresource - VkOffset3D dstOffsets[2] + VkOffset3D dstOffsets[2] The pname:aspectMask member of pname:srcSubresource and pname:dstSubresource must: match The pname:layerCount member of pname:srcSubresource and pname:dstSubresource must: match @@ -1024,14 +1025,14 @@ maintained in the master branch of the Khronos Vulkan Github project. pname:imageOffset.x and (pname:imageExtent.width + pname:imageOffset.x) must: both be greater than or equal to `0` and less than or equal to the image subresource width pname:imageOffset.y and (imageExtent.height + pname:imageOffset.y) must: both be greater than or equal to `0` and less than or equal to the image subresource height pname:imageOffset.z and (imageExtent.depth + pname:imageOffset.z) must: both be greater than or equal to `0` and less than or equal to the image subresource depth - If the calling command's sname:VkImage parameter is a compressed format image: - pname:bufferRowLength must: be a multiple of the compressed texel block width - pname:bufferImageHeight must: be a multiple of the compressed texel block height - all members of pname:imageOffset must: be a multiple of the corresponding dimensions of the compressed texel block - pname:bufferOffset must: be a multiple of the compressed texel block size in bytes - pname:imageExtent.width must: be a multiple of the compressed texel block width or (pname:imageExtent.width + pname:imageOffset.x) must: equal the image subresource width - pname:imageExtent.height must: be a multiple of the compressed texel block height or (pname:imageExtent.height + pname:imageOffset.y) must: equal the image subresource height - pname:imageExtent.depth must: be a multiple of the compressed texel block depth or (pname:imageExtent.depth + pname:imageOffset.z) must: equal the image subresource depth + If the calling command's sname:VkImage parameter is a compressed format image: + ** pname:bufferRowLength must: be a multiple of the compressed texel block width + ** pname:bufferImageHeight must: be a multiple of the compressed texel block height + ** all members of pname:imageOffset must: be a multiple of the corresponding dimensions of the compressed texel block + ** pname:bufferOffset must: be a multiple of the compressed texel block size in bytes + ** pname:imageExtent.width must: be a multiple of the compressed texel block width or (pname:imageExtent.width + pname:imageOffset.x) must: equal the image subresource width + ** pname:imageExtent.height must: be a multiple of the compressed texel block height or (pname:imageExtent.height + pname:imageOffset.y) must: equal the image subresource height + ** pname:imageExtent.depth must: be a multiple of the compressed texel block depth or (pname:imageExtent.depth + pname:imageOffset.z) must: equal the image subresource depth pname:bufferOffset, pname:bufferRowLength, pname:bufferImageHeight and all members of pname:imageOffset and pname:imageExtent must: respect the image transfer granularity requirements of the queue family that it will be submitted against, as described in <<devsandqueues-physical-device-enumeration,Physical Device Enumeration>> The pname:aspectMask member of pname:imageSubresource must: specify aspects present in the calling command's sname:VkImage parameter The pname:aspectMask member of pname:imageSubresource must: only have a single bit set @@ -1251,7 +1252,7 @@ maintained in the master branch of the Khronos Vulkan Github project. VkStructureType sType - const void* pNext + const void* pNext VkPipelineRasterizationStateCreateFlags flags VkBool32 depthClampEnable VkBool32 rasterizerDiscardEnable @@ -1925,7 +1926,7 @@ maintained in the master branch of the Khronos Vulkan Github project. uint32_t signalSemaphoreCount const VkSemaphore* pSignalSemaphores - Any given element of pname:pSignalSemaphores must: currently be unsignalled + Any given element of pname:pSignalSemaphores must: currently be unsignaled Any given element of pname:pCommandBuffers must: either have been recorded with the ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT, or not currently be executing on the device Any given element of pname:pCommandBuffers must: be in the executable state If any given element of pname:pCommandBuffers contains commands that execute secondary command buffers, those secondary command buffers must: have been recorded with the ename:VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT, or not currently be executing on the device @@ -2094,7 +2095,7 @@ maintained in the master branch of the Khronos Vulkan Github project. VkSwapchainKHR oldSwapchain pname:surface must: be a surface that is supported by the device as determined using fname:vkGetPhysicalDeviceSurfaceSupportKHR - The native window referred to by pname:surface mustnot: already be associated with a swapchain other than pname:oldSwapchain, or with a non-{apiname} graphics API surface + The native window referred to by pname:surface mustnot: already be associated with a swapchain other than pname:oldSwapchain, or with a non-Vulkan graphics API surface pname:minImageCount must: be greater than or equal to the value returned in the pname:minImageCount member of the sname:VkSurfaceCapabilitiesKHR structure returned by fname:vkGetPhysicalDeviceSurfaceCapabilitiesKHR for the surface pname:minImageCount must: be less than or equal to the value returned in the pname:maxImageCount member of the sname:VkSurfaceCapabilitiesKHR structure returned by fname:vkGetPhysicalDeviceSurfaceCapabilitiesKHR for the surface if the returned pname:maxImageCount is not zero pname:imageFormat and pname:imageColorspace must: match the pname:format and pname:colorSpace members, respectively, of one of the sname:VkSurfaceFormatKHR structures returned by fname:vkGetPhysicalDeviceSurfaceFormatsKHR for the surface @@ -2129,6 +2130,33 @@ maintained in the master branch of the Khronos Vulkan Github project. PFN_vkDebugReportCallbackEXT pfnCallback void* pUserData + + VkStructureType sType + const void* pNext + VkRasterizationOrderAMD rasterizationOrder + + + VkStructureType sType + const void* pNext + VkDebugReportObjectTypeEXT objectType + uint64_t object + const char* pObjectName + + + VkStructureType sType + const void* pNext + VkDebugReportObjectTypeEXT objectType + uint64_t object + uint64_t tagName + size_t tagSize + const void* pTag + + + VkStructureType sType + const void* pNext + const char* pMarkerName + float color[4] + @@ -2629,13 +2657,13 @@ maintained in the master branch of the Khronos Vulkan Github project. - - + + - - + + @@ -2866,7 +2894,7 @@ maintained in the master branch of the Khronos Vulkan Github project. - + @@ -2933,6 +2961,10 @@ maintained in the master branch of the Khronos Vulkan Github project. + + + + @@ -3040,7 +3072,7 @@ maintained in the master branch of the Khronos Vulkan Github project. uint32_t* pPropertyCount VkExtensionProperties* pProperties - If pname:pLayerName is not `NULL`, it must: be the name of an instance layer returned by flink:vkEnumerateInstanceLayerProperties + If pname:pLayerName is not `NULL`, it must: be the name of a layer returned by flink:vkEnumerateInstanceLayerProperties @@ -3056,7 +3088,7 @@ maintained in the master branch of the Khronos Vulkan Github project. uint32_t* pPropertyCount VkExtensionProperties* pProperties - If pname:pLayerName is not `NULL`, it must: be the name of a device layer returned by flink:vkEnumerateDeviceLayerProperties + If pname:pLayerName is not `NULL`, it must: be the name of a layer returned by flink:vkEnumerateDeviceLayerProperties @@ -3077,8 +3109,8 @@ maintained in the master branch of the Khronos Vulkan Github project. const VkSubmitInfo* pSubmits VkFence fence - pname:fence must: be unsignalled - pname:fence mustnot: be associated with any other queue command that has not yet completed execution on that queue + If pname:fence is not sname:VK_NULL_HANDLE, pname:fence must: be unsignaled + If pname:fence is not sname:VK_NULL_HANDLE, pname:fence mustnot: be associated with any other queue command that has not yet completed execution on that queue @@ -3233,7 +3265,7 @@ maintained in the master branch of the Khronos Vulkan Github project. const VkBindSparseInfo* pBindInfo VkFence fence - pname:fence must: be unsignalled + pname:fence must: be unsignaled pname:fence mustnot: be associated with any other queue command that has not yet completed execution on that queue @@ -3327,6 +3359,9 @@ maintained in the master branch of the Khronos Vulkan Github project. VkResult vkResetEvent VkDevice device VkEvent event + + pname:event mustnot: be waited on by a fname:vkCmdWaitEvents command that is currently executing + VkResult vkCreateQueryPool @@ -3918,7 +3953,7 @@ maintained in the master branch of the Khronos Vulkan Github project. If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set - Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties + Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties @@ -3944,7 +3979,7 @@ maintained in the master branch of the Khronos Vulkan Github project. If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set - Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties + Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties @@ -3974,7 +4009,7 @@ maintained in the master branch of the Khronos Vulkan Github project. If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set - Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties + Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties @@ -4004,7 +4039,7 @@ maintained in the master branch of the Khronos Vulkan Github project. If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set - Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties + Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties @@ -4026,7 +4061,7 @@ maintained in the master branch of the Khronos Vulkan Github project. If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set - Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties + Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties @@ -4047,7 +4082,7 @@ maintained in the master branch of the Khronos Vulkan Github project. If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set - Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties + Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties @@ -4118,6 +4153,7 @@ maintained in the master branch of the Khronos Vulkan Github project. If either of pname:srcImage or pname:dstImage was created with an unsigned integer elink:VkFormat, the other must: also have been created with an unsigned integer elink:VkFormat If either of pname:srcImage or pname:dstImage was created with a depth/stencil format, the other must: have exactly the same format If pname:srcImage was created with a depth/stencil format, pname:filter must: be ename:VK_FILTER_NEAREST + If pname:filter is ename:VK_FILTER_LINEAR, pname:srcImage must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties @@ -4203,7 +4239,7 @@ maintained in the master branch of the Khronos Vulkan Github project. pname:image must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag pname:imageLayout must: specify the layout of the image subresource ranges of pname:image specified in pname:pRanges at the time this command is executed on a sname:VkDevice pname:imageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL - The image range of any given element of pname:pRanges must: be a image subresource range that is contained within pname:image + The image range of any given element of pname:pRanges must: be an image subresource range that is contained within pname:image pname:image mustnot: have a compressed or depth/stencil format @@ -4219,7 +4255,7 @@ maintained in the master branch of the Khronos Vulkan Github project. pname:image must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag pname:imageLayout must: specify the layout of the image subresource ranges of pname:image specified in pname:pRanges at the time this command is executed on a sname:VkDevice pname:imageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL - The image range of any given element of pname:pRanges must: be a image subresource range that is contained within pname:image + The image range of any given element of pname:pRanges must: be an image subresource range that is contained within pname:image pname:image must: have a depth/stencil format @@ -4278,6 +4314,7 @@ maintained in the master branch of the Khronos Vulkan Github project. If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:stageMask mustnot: contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT If the <<features-features-tessellationShader,tessellation shaders>> feature is not enabled, pname:stageMask mustnot: contain ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT + When this command executes, pname:event mustnot: be waited on by a fname:vkCmdWaitEvents command that is currently executing @@ -4562,7 +4599,7 @@ maintained in the master branch of the Khronos Vulkan Github project. pname:queueFamilyIndex must: be less than pname:pQueueFamilyPropertyCount returned by fname:vkGetPhysicalDeviceQueueFamilyProperties for the given pname:physicalDevice - + VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR VkPhysicalDevice physicalDevice VkSurfaceKHR surface @@ -4616,8 +4653,8 @@ maintained in the master branch of the Khronos Vulkan Github project. VkFence fence uint32_t* pImageIndex - If pname:semaphore is not sname:VK_NULL_HANDLE it must: be unsignalled - If pname:fence is not sname:VK_NULL_HANDLE it must: be unsignalled and mustnot: be associated with any other queue command that has not yet completed execution on that queue + If pname:semaphore is not sname:VK_NULL_HANDLE it must: be unsignaled + If pname:fence is not sname:VK_NULL_HANDLE it must: be unsignaled and mustnot: be associated with any other queue command that has not yet completed execution on that queue @@ -4724,11 +4761,47 @@ maintained in the master branch of the Khronos Vulkan Github project. pname:instance must: be a valid sname:VkInstance handle pname:flags must: be a combination of one or more of sname:VkDebugReportFlagBitsEXT pname:objType must: be one of sname:VkDebugReportObjectTypeEXT, ename:VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT if pname:object is `NULL` - pname:object may: be a {apiname} object + pname:object may: be a Vulkan object pname:pLayerPrefix must: be a `NULL` terminated string. pname:pMsg must: be a `NULL` terminated string. + + VkResult vkDebugMarkerSetObjectNameEXT + VkDevice device + VkDebugMarkerObjectNameInfoEXT* pNameInfo + + pname:pNameInfo.object must: be a Vulkan object + + + + VkResult vkDebugMarkerSetObjectTagEXT + VkDevice device + VkDebugMarkerObjectTagInfoEXT* pTagInfo + + pname:pTagInfo.object must: be a Vulkan object + pname:pTagInfo.tagName mustnot: be `0` + + + + void vkCmdDebugMarkerBeginEXT + VkCommandBuffer commandBuffer + VkDebugMarkerMarkerInfoEXT* pMarkerInfo + + + void vkCmdDebugMarkerEndEXT + VkCommandBuffer commandBuffer + + There must: be an outstanding flink:vkCmdDebugMarkerBeginEXT command prior to the fname:vkCmdDebugMarkerEndEXT on the queue that pname:commandBuffer is submitted to. + If the matching flink:vkCmdDebugMarkerBeginEXT command was in a secondary command buffer, the fname:vkCmdDebugMarkerEndEXT must be in the same pname:commandBuffer. + + + + + void vkCmdDebugMarkerInsertEXT + VkCommandBuffer commandBuffer + VkDebugMarkerMarkerInfoEXT* pMarkerInfo + @@ -4970,6 +5043,7 @@ maintained in the master branch of the Khronos Vulkan Github project. + @@ -5168,10 +5242,13 @@ maintained in the master branch of the Khronos Vulkan Github project.
- + - - + + + + + @@ -5192,5 +5269,22 @@ maintained in the master branch of the Khronos Vulkan Github project. + + + + + + + + + + + + + + + + + diff --git a/src/vulkan/vulkan.h b/src/vulkan/vulkan.h index cbc83022..f71d23b6 100644 --- a/src/vulkan/vulkan.h +++ b/src/vulkan/vulkan.h @@ -43,7 +43,7 @@ extern "C" { #define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff) #define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff) // Version of this file -#define VK_HEADER_VERSION 11 +#define VK_HEADER_VERSION 13 #define VK_NULL_HANDLE 0 @@ -210,6 +210,10 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000, VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000, VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000, + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000, + VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000, + VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001, + VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = 1000022002, VK_STRUCTURE_TYPE_BEGIN_RANGE = VK_STRUCTURE_TYPE_APPLICATION_INFO, VK_STRUCTURE_TYPE_END_RANGE = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO, VK_STRUCTURE_TYPE_RANGE_SIZE = (VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO - VK_STRUCTURE_TYPE_APPLICATION_INFO + 1), @@ -3168,13 +3172,14 @@ VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR) #define VK_KHR_SURFACE_SPEC_VERSION 25 #define VK_KHR_SURFACE_EXTENSION_NAME "VK_KHR_surface" +#define VK_COLORSPACE_SRGB_NONLINEAR_KHR VK_COLOR_SPACE_SRGB_NONLINEAR_KHR typedef enum VkColorSpaceKHR { - VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0, - VK_COLOR_SPACE_BEGIN_RANGE_KHR = VK_COLORSPACE_SRGB_NONLINEAR_KHR, - VK_COLOR_SPACE_END_RANGE_KHR = VK_COLORSPACE_SRGB_NONLINEAR_KHR, - VK_COLOR_SPACE_RANGE_SIZE_KHR = (VK_COLORSPACE_SRGB_NONLINEAR_KHR - VK_COLORSPACE_SRGB_NONLINEAR_KHR + 1), + VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0, + VK_COLOR_SPACE_BEGIN_RANGE_KHR = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR, + VK_COLOR_SPACE_END_RANGE_KHR = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR, + VK_COLOR_SPACE_RANGE_SIZE_KHR = (VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - VK_COLOR_SPACE_SRGB_NONLINEAR_KHR + 1), VK_COLOR_SPACE_MAX_ENUM_KHR = 0x7FFFFFFF } VkColorSpaceKHR; @@ -3828,6 +3833,85 @@ VKAPI_ATTR void VKAPI_CALL vkDebugReportMessageEXT( #define VK_IMG_FILTER_CUBIC_EXTENSION_NAME "VK_IMG_filter_cubic" +#define VK_AMD_rasterization_order 1 +#define VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION 1 +#define VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME "VK_AMD_rasterization_order" + + +typedef enum VkRasterizationOrderAMD { + VK_RASTERIZATION_ORDER_STRICT_AMD = 0, + VK_RASTERIZATION_ORDER_RELAXED_AMD = 1, + VK_RASTERIZATION_ORDER_BEGIN_RANGE_AMD = VK_RASTERIZATION_ORDER_STRICT_AMD, + VK_RASTERIZATION_ORDER_END_RANGE_AMD = VK_RASTERIZATION_ORDER_RELAXED_AMD, + VK_RASTERIZATION_ORDER_RANGE_SIZE_AMD = (VK_RASTERIZATION_ORDER_RELAXED_AMD - VK_RASTERIZATION_ORDER_STRICT_AMD + 1), + VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 0x7FFFFFFF +} VkRasterizationOrderAMD; + +typedef struct VkPipelineRasterizationStateRasterizationOrderAMD { + VkStructureType sType; + const void* pNext; + VkRasterizationOrderAMD rasterizationOrder; +} VkPipelineRasterizationStateRasterizationOrderAMD; + + + +#define VK_EXT_debug_marker 1 +#define VK_EXT_DEBUG_MARKER_SPEC_VERSION 3 +#define VK_EXT_DEBUG_MARKER_EXTENSION_NAME "VK_EXT_debug_marker" + +typedef struct VkDebugMarkerObjectNameInfoEXT { + VkStructureType sType; + const void* pNext; + VkDebugReportObjectTypeEXT objectType; + uint64_t object; + const char* pObjectName; +} VkDebugMarkerObjectNameInfoEXT; + +typedef struct VkDebugMarkerObjectTagInfoEXT { + VkStructureType sType; + const void* pNext; + VkDebugReportObjectTypeEXT objectType; + uint64_t object; + uint64_t tagName; + size_t tagSize; + const void* pTag; +} VkDebugMarkerObjectTagInfoEXT; + +typedef struct VkDebugMarkerMarkerInfoEXT { + VkStructureType sType; + const void* pNext; + const char* pMarkerName; + float color[4]; +} VkDebugMarkerMarkerInfoEXT; + + +typedef VkResult (VKAPI_PTR *PFN_vkDebugMarkerSetObjectTagEXT)(VkDevice device, VkDebugMarkerObjectTagInfoEXT* pTagInfo); +typedef VkResult (VKAPI_PTR *PFN_vkDebugMarkerSetObjectNameEXT)(VkDevice device, VkDebugMarkerObjectNameInfoEXT* pNameInfo); +typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerBeginEXT)(VkCommandBuffer commandBuffer, VkDebugMarkerMarkerInfoEXT* pMarkerInfo); +typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerEndEXT)(VkCommandBuffer commandBuffer); +typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerInsertEXT)(VkCommandBuffer commandBuffer, VkDebugMarkerMarkerInfoEXT* pMarkerInfo); + +#ifndef VK_NO_PROTOTYPES +VKAPI_ATTR VkResult VKAPI_CALL vkDebugMarkerSetObjectTagEXT( + VkDevice device, + VkDebugMarkerObjectTagInfoEXT* pTagInfo); + +VKAPI_ATTR VkResult VKAPI_CALL vkDebugMarkerSetObjectNameEXT( + VkDevice device, + VkDebugMarkerObjectNameInfoEXT* pNameInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerBeginEXT( + VkCommandBuffer commandBuffer, + VkDebugMarkerMarkerInfoEXT* pMarkerInfo); + +VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerEndEXT( + VkCommandBuffer commandBuffer); + +VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerInsertEXT( + VkCommandBuffer commandBuffer, + VkDebugMarkerMarkerInfoEXT* pMarkerInfo); +#endif + #ifdef __cplusplus } #endif