From 7f70fe56c31e914c36a89b228745a31be60024c6 Mon Sep 17 00:00:00 2001
From: Lev Walkin <vlm@lionet.info>
Date: Tue, 22 Feb 2005 07:28:26 +0000
Subject: [PATCH] different layout

---
 doc/asn1c-usage.html | 1458 ++++++++++++++++++++++--------------------
 doc/asn1c-usage.lyx  |   84 ++-
 doc/asn1c-usage.pdf  |  Bin 130538 -> 131430 bytes
 3 files changed, 802 insertions(+), 740 deletions(-)

diff --git a/doc/asn1c-usage.html b/doc/asn1c-usage.html
index 2a9f7964..c2e33774 100644
--- a/doc/asn1c-usage.html
+++ b/doc/asn1c-usage.html
@@ -41,110 +41,110 @@ Contents</A>
 <!--Table of Contents-->
 
 <UL>
-<LI><A NAME="tex2html53"
-  HREF="asn1c-usage.html#SECTION02000000000000000000">ASN.1 Basics</A>
+<LI><A NAME="tex2html51"
+  HREF="asn1c-usage.html#SECTION02000000000000000000">Using the ASN.1 Compiler</A>
 <UL>
-<LI><A NAME="tex2html54"
-  HREF="asn1c-usage.html#SECTION02100000000000000000">Abstract Syntax Notation: ASN.1</A>
+<LI><A NAME="tex2html52"
+  HREF="asn1c-usage.html#SECTION02100000000000000000">Introduction to the ASN.1 Compiler</A>
 <UL>
+<LI><A NAME="tex2html53"
+  HREF="asn1c-usage.html#SECTION02110000000000000000">Quick start with asn1c</A>
+<LI><A NAME="tex2html54"
+  HREF="asn1c-usage.html#SECTION02120000000000000000">Recognizing compiler output</A>
 <LI><A NAME="tex2html55"
-  HREF="asn1c-usage.html#SECTION02110000000000000000">Some of the ASN.1 Basic Types</A>
-<UL>
+  HREF="asn1c-usage.html#SECTION02130000000000000000">Command line options</A>
+</UL>
 <LI><A NAME="tex2html56"
-  HREF="asn1c-usage.html#SECTION02111000000000000000">The BOOLEAN type</A>
+  HREF="asn1c-usage.html#SECTION02200000000000000000">Using the ASN.1 Compiler</A>
+<UL>
 <LI><A NAME="tex2html57"
-  HREF="asn1c-usage.html#SECTION02112000000000000000">The INTEGER type</A>
+  HREF="asn1c-usage.html#SECTION02210000000000000000">Invoking the ASN.1 helper code</A>
+<UL>
 <LI><A NAME="tex2html58"
-  HREF="asn1c-usage.html#SECTION02113000000000000000">The ENUMERATED type</A>
+  HREF="asn1c-usage.html#SECTION02211000000000000000">Decoding BER</A>
 <LI><A NAME="tex2html59"
-  HREF="asn1c-usage.html#SECTION02114000000000000000">The OCTET STRING type</A>
+  HREF="asn1c-usage.html#SECTION02212000000000000000">Encoding DER</A>
 <LI><A NAME="tex2html60"
-  HREF="asn1c-usage.html#SECTION02115000000000000000">The OBJECT IDENTIFIER type</A>
+  HREF="asn1c-usage.html#SECTION02213000000000000000">Encoding XER</A>
 <LI><A NAME="tex2html61"
-  HREF="asn1c-usage.html#SECTION02116000000000000000">The RELATIVE-OID type</A>
-</UL>
+  HREF="asn1c-usage.html#SECTION02214000000000000000">Decoding XER</A>
 <LI><A NAME="tex2html62"
-  HREF="asn1c-usage.html#SECTION02120000000000000000">Some of the ASN.1 String Types</A>
-<UL>
+  HREF="asn1c-usage.html#SECTION02215000000000000000">Validating the target structure</A>
 <LI><A NAME="tex2html63"
-  HREF="asn1c-usage.html#SECTION02121000000000000000">The IA5String type</A>
+  HREF="asn1c-usage.html#SECTION02216000000000000000">Printing the target structure</A>
 <LI><A NAME="tex2html64"
-  HREF="asn1c-usage.html#SECTION02122000000000000000">The UTF8String type</A>
+  HREF="asn1c-usage.html#SECTION02217000000000000000">Freeing the target structure</A>
+</UL>
+</UL>
 <LI><A NAME="tex2html65"
-  HREF="asn1c-usage.html#SECTION02123000000000000000">The NumericString type</A>
+  HREF="asn1c-usage.html#SECTION02300000000000000000">Step by step examples</A>
+<UL>
 <LI><A NAME="tex2html66"
-  HREF="asn1c-usage.html#SECTION02124000000000000000">The PrintableString type</A>
+  HREF="asn1c-usage.html#SECTION02310000000000000000">A ''Rectangle'' Encoder</A>
 <LI><A NAME="tex2html67"
-  HREF="asn1c-usage.html#SECTION02125000000000000000">The VisibleString type</A>
+  HREF="asn1c-usage.html#SECTION02320000000000000000">A ''Rectangle'' Decoder</A>
 </UL>
 <LI><A NAME="tex2html68"
-  HREF="asn1c-usage.html#SECTION02130000000000000000">ASN.1 Constructed Types</A>
+  HREF="asn1c-usage.html#SECTION02400000000000000000">Constraint validation examples</A>
 <UL>
 <LI><A NAME="tex2html69"
-  HREF="asn1c-usage.html#SECTION02131000000000000000">The SEQUENCE type</A>
+  HREF="asn1c-usage.html#SECTION02410000000000000000">Adding constraints into ''Rectangle'' type</A>
+</UL>
+</UL><BR>
 <LI><A NAME="tex2html70"
-  HREF="asn1c-usage.html#SECTION02132000000000000000">The SET type</A>
+  HREF="asn1c-usage.html#SECTION03000000000000000000">ASN.1 Basics</A>
+<UL>
 <LI><A NAME="tex2html71"
-  HREF="asn1c-usage.html#SECTION02133000000000000000">The CHOICE type</A>
+  HREF="asn1c-usage.html#SECTION03100000000000000000">Abstract Syntax Notation: ASN.1</A>
+<UL>
 <LI><A NAME="tex2html72"
-  HREF="asn1c-usage.html#SECTION02134000000000000000">The SEQUENCE OF type</A>
+  HREF="asn1c-usage.html#SECTION03110000000000000000">Some of the ASN.1 Basic Types</A>
+<UL>
 <LI><A NAME="tex2html73"
-  HREF="asn1c-usage.html#SECTION02135000000000000000">The SET OF type</A>
-</UL>
-</UL>
-</UL><BR>
+  HREF="asn1c-usage.html#SECTION03111000000000000000">The BOOLEAN type</A>
 <LI><A NAME="tex2html74"
-  HREF="asn1c-usage.html#SECTION03000000000000000000">Using the ASN.1 Compiler</A>
-<UL>
+  HREF="asn1c-usage.html#SECTION03112000000000000000">The INTEGER type</A>
 <LI><A NAME="tex2html75"
-  HREF="asn1c-usage.html#SECTION03100000000000000000">Introduction to the ASN.1 Compiler</A>
+  HREF="asn1c-usage.html#SECTION03113000000000000000">The ENUMERATED type</A>
 <LI><A NAME="tex2html76"
-  HREF="asn1c-usage.html#SECTION03200000000000000000">Quick start</A>
+  HREF="asn1c-usage.html#SECTION03114000000000000000">The OCTET STRING type</A>
 <LI><A NAME="tex2html77"
-  HREF="asn1c-usage.html#SECTION03300000000000000000">Using the ASN.1 Compiler</A>
-<UL>
+  HREF="asn1c-usage.html#SECTION03115000000000000000">The OBJECT IDENTIFIER type</A>
 <LI><A NAME="tex2html78"
-  HREF="asn1c-usage.html#SECTION03310000000000000000">Command-line options</A>
+  HREF="asn1c-usage.html#SECTION03116000000000000000">The RELATIVE-OID type</A>
+</UL>
 <LI><A NAME="tex2html79"
-  HREF="asn1c-usage.html#SECTION03320000000000000000">Recognizing compiler output</A>
-<LI><A NAME="tex2html80"
-  HREF="asn1c-usage.html#SECTION03330000000000000000">Invoking the ASN.1 helper code from an application</A>
+  HREF="asn1c-usage.html#SECTION03120000000000000000">Some of the ASN.1 String Types</A>
 <UL>
+<LI><A NAME="tex2html80"
+  HREF="asn1c-usage.html#SECTION03121000000000000000">The IA5String type</A>
 <LI><A NAME="tex2html81"
-  HREF="asn1c-usage.html#SECTION03331000000000000000">Decoding BER</A>
+  HREF="asn1c-usage.html#SECTION03122000000000000000">The UTF8String type</A>
 <LI><A NAME="tex2html82"
-  HREF="asn1c-usage.html#SECTION03332000000000000000">Encoding DER</A>
+  HREF="asn1c-usage.html#SECTION03123000000000000000">The NumericString type</A>
 <LI><A NAME="tex2html83"
-  HREF="asn1c-usage.html#SECTION03333000000000000000">Encoding XER</A>
+  HREF="asn1c-usage.html#SECTION03124000000000000000">The PrintableString type</A>
 <LI><A NAME="tex2html84"
-  HREF="asn1c-usage.html#SECTION03334000000000000000">Validating the target structure</A>
+  HREF="asn1c-usage.html#SECTION03125000000000000000">The VisibleString type</A>
+</UL>
 <LI><A NAME="tex2html85"
-  HREF="asn1c-usage.html#SECTION03335000000000000000">Printing the target structure</A>
+  HREF="asn1c-usage.html#SECTION03130000000000000000">ASN.1 Constructed Types</A>
+<UL>
 <LI><A NAME="tex2html86"
-  HREF="asn1c-usage.html#SECTION03336000000000000000">Freeing the target structure</A>
-</UL>
-</UL>
-</UL><BR>
+  HREF="asn1c-usage.html#SECTION03131000000000000000">The SEQUENCE type</A>
 <LI><A NAME="tex2html87"
-  HREF="asn1c-usage.html#SECTION04000000000000000000">Examples</A>
-<UL>
+  HREF="asn1c-usage.html#SECTION03132000000000000000">The SET type</A>
 <LI><A NAME="tex2html88"
-  HREF="asn1c-usage.html#SECTION04100000000000000000">Step by step examples</A>
-<UL>
+  HREF="asn1c-usage.html#SECTION03133000000000000000">The CHOICE type</A>
 <LI><A NAME="tex2html89"
-  HREF="asn1c-usage.html#SECTION04110000000000000000">A ''Rectangle'' Encoder</A>
+  HREF="asn1c-usage.html#SECTION03134000000000000000">The SEQUENCE OF type</A>
 <LI><A NAME="tex2html90"
-  HREF="asn1c-usage.html#SECTION04120000000000000000">A ''Rectangle'' Decoder</A>
+  HREF="asn1c-usage.html#SECTION03135000000000000000">The SET OF type</A>
 </UL>
-<LI><A NAME="tex2html91"
-  HREF="asn1c-usage.html#SECTION04200000000000000000">Constraint validation examples</A>
-<UL>
-<LI><A NAME="tex2html92"
-  HREF="asn1c-usage.html#SECTION04210000000000000000">Adding constraints into ''Rectangle'' type</A>
 </UL>
 </UL><BR>
-<LI><A NAME="tex2html93"
-  HREF="asn1c-usage.html#SECTION05000000000000000000">Bibliography</A>
+<LI><A NAME="tex2html91"
+  HREF="asn1c-usage.html#SECTION04000000000000000000">Bibliography</A>
 </UL>
 <!--End of Table of Contents-->
 
@@ -153,82 +153,38 @@ Contents</A>
 <P>
 
 <H1><A NAME="SECTION02000000000000000000">
-ASN.1 Basics</A>
+Using the ASN.1 Compiler</A>
 </H1>
 
 <P>
 
 <H1><A NAME="SECTION02100000000000000000">
-Abstract Syntax Notation: ASN.1</A>
+Introduction to the ASN.1 Compiler</A>
 </H1>
 
 <P>
-<I>This chapter defines some basic ASN.1 concepts and describes
-several most widely used types. It is by no means an authoritative
-or complete reference. For more complete ASN.1 description, please
-refer to Olivier Dubuisson's book [<A
- HREF="asn1c-usage.html#Dub00">Dub00</A>] or the ASN.1 body
-of standards itself [<A
- HREF="asn1c-usage.html#ITU-T_ASN.1">ITU-T/ASN.1</A>].</I>
-
-<P>
-The Abstract Syntax Notation One is used to formally describe the
-semantics of data transmitted across the network. Two communicating
-parties may have different formats of their native data types (i.e.
-number of bits in the integer type), thus it is important to have
-a way to describe the data in a manner which is independent from the
-particular machine's representation. The ASN.1 specifications are
-used to achieve the following:
-
-<P>
-
-<UL>
-<LI>The specification expressed in the ASN.1 notation is a formal and
-precise way to communicate the data semantics to human readers;
-</LI>
-<LI>The ASN.1 specifications may be used as input for automatic compilers
-which produce the code for some target language (C, C++, Java, etc)
-to encode and decode the data according to some encoding rules (which
-are also defined by the ASN.1 standard).
-</LI>
-</UL>
-Consider the following example:
+The purpose of the ASN.1 compiler, of which this document is part,
+is to convert the specifications in ASN.1 notation into some other
+language. At this moment, only C and C++ target languages are supported,
+the latter is in upward compatibility mode.
 
 <P>
-
-<BLOCKQUOTE><PRE>
-Rectangle&nbsp;::=&nbsp;SEQUENCE&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;height&nbsp;&nbsp;INTEGER,
-&nbsp;&nbsp;&nbsp;&nbsp;width&nbsp;&nbsp;&nbsp;INTEGER
-}
-</PRE>
-</BLOCKQUOTE>
-This ASN.1 specification describes a constructed type, <I>Rectangle</I>,
-containing two integer fields. This specification may tell the reader
-that there exists this kind of data structure and that some entity
-may be prepared to send or receive it. The question on <I>how</I>
-that entity is going to send or receive the <I>encoded data</I> is
-outside the scope of ASN.1. For example, this data structure may be
-encoded according to some encoding rules and sent to the destination
-using the TCP protocol. The ASN.1 specifies several ways of encoding
-(or ''serializing'', or ''marshaling'') the data: BER, CER, DER
-and XER, some of them which will be outlined later.
+The compiler reads the specification and emits a series of target
+language structures (C's structs, unions, enums) describing the corresponding
+ASN.1 types. The compiler also creates the code which allows automatic
+serialization and deserialization of these structures using several
+standardized encoding rules (BER, DER, XER).
 
 <P>
-The complete specification must be wrapped in a module, which looks
-like this:
+For example, suppose the following ASN.1 module is given<A NAME="tex2html1"
+  HREF="#foot818"><SUP>1.1</SUP></A>:
 
 <P>
 
 <BLOCKQUOTE><PRE>
-RectangleModule1
-&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;iso&nbsp;org(3)&nbsp;dod(6)&nbsp;internet(1)&nbsp;private(4)
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;enterprise(1)&nbsp;spelio(9363)&nbsp;software(1)
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;asn1c(5)&nbsp;docs(2)&nbsp;rectangle(1)&nbsp;1&nbsp;}&nbsp;
-&nbsp;&nbsp;&nbsp;&nbsp;DEFINITIONS&nbsp;AUTOMATIC&nbsp;TAGS&nbsp;::=
+RectangleTest&nbsp;DEFINITIONS&nbsp;::=
 BEGIN
 &nbsp;
---&nbsp;This&nbsp;is&nbsp;a&nbsp;comment&nbsp;which&nbsp;describes&nbsp;nothing.
 Rectangle&nbsp;::=&nbsp;SEQUENCE&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;height&nbsp;&nbsp;INTEGER,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;Height&nbsp;of&nbsp;the&nbsp;rectangle
 &nbsp;&nbsp;&nbsp;&nbsp;width&nbsp;&nbsp;&nbsp;INTEGER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;Width&nbsp;of&nbsp;the&nbsp;rectangle
@@ -237,441 +193,134 @@ Rectangle&nbsp;::=&nbsp;SEQUENCE&nbsp;{
 END
 </PRE>
 </BLOCKQUOTE>
-The module header consists of module name (RectangleModule1), the
-module object identifier ({...}), a keyword ''DEFINITIONS'', a
-set of module flags (AUTOMATIC TAGS) and ''::= BEGIN''. The module
-ends with an ''END'' statement.
-
-<P>
-
-<H1><A NAME="SECTION02110000000000000000">
-Some of the ASN.1 Basic Types</A>
-</H1>
-
-<P>
-
-<H2><A NAME="SECTION02111000000000000000">
-The BOOLEAN type</A>
-</H2>
-
-<P>
-The BOOLEAN type models the simple binary TRUE/FALSE, YES/NO, ON/OFF
-or a similar kind of two-way choice.
-
-<P>
-
-<H2><A NAME="SECTION02112000000000000000">
-The INTEGER type</A>
-</H2>
-
-<P>
-The INTEGER type is a signed natural number type without any restrictions
-on its size. If the automatic checking on INTEGER value bounds are
-necessary, the subtype constraints must be used.
+The compiler would read this ASN.1 definition and produce the following
+C type<A NAME="tex2html2"
+  HREF="#foot819"><SUP>1.2</SUP></A>:
 
 <P>
 
 <BLOCKQUOTE><PRE>
-SimpleInteger&nbsp;::=&nbsp;INTEGER
-&nbsp;
---&nbsp;An&nbsp;integer&nbsp;with&nbsp;a&nbsp;very&nbsp;limited&nbsp;range
-SmallPositiveInt&nbsp;::=&nbsp;INTEGER&nbsp;(0..127)
-&nbsp;
---&nbsp;Integer,&nbsp;negative
-NegativeInt&nbsp;::=&nbsp;INTEGER&nbsp;(MIN..0)
+typedef&nbsp;struct&nbsp;Rectangle_s&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;height;
+&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;width;
+}&nbsp;Rectangle_t;
 </PRE>
 </BLOCKQUOTE>
+It would also create the code for converting this structure into platform-independent
+wire representation (a serializer API) and the decoder of such wire
+representation back into local, machine-specific type (a deserializer
+API).
 
 <P>
 
-<H2><A NAME="SECTION02113000000000000000">
-The ENUMERATED type</A>
-</H2>
+<H1><A NAME="SECTION02110000000000000000">
+Quick start with asn1c</A>
+</H1>
 
 <P>
-The ENUMERATED type is semantically equivalent to the INTEGER type
-with some integer values explicitly named.
+After building and installing the compiler, the <I>asn1c</I><A NAME="tex2html3"
+  HREF="#foot820"><SUP>1.3</SUP></A> command may be used to compile the ASN.1 module<A NAME="tex2html4"
+  HREF="#foot821"><SUP>1.4</SUP></A>:
 
 <P>
 
 <BLOCKQUOTE><PRE>
-FruitId&nbsp;::=&nbsp;ENUMERATED&nbsp;{&nbsp;apple(1),&nbsp;orange(2)&nbsp;}
-&nbsp;
---&nbsp;The&nbsp;numbers&nbsp;in&nbsp;braces&nbsp;are&nbsp;optional,
---&nbsp;the&nbsp;enumeration&nbsp;can&nbsp;be&nbsp;performed
---&nbsp;automatically&nbsp;by&nbsp;the&nbsp;compiler
-ComputerOSType&nbsp;::=&nbsp;ENUMERATED&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;FreeBSD,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;acquires&nbsp;value&nbsp;0
-&nbsp;&nbsp;&nbsp;&nbsp;Windows,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;acquires&nbsp;value&nbsp;1
-&nbsp;&nbsp;&nbsp;&nbsp;Solaris(5),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;remains&nbsp;5
-&nbsp;&nbsp;&nbsp;&nbsp;Linux,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;becomes&nbsp;6
-&nbsp;&nbsp;&nbsp;&nbsp;MacOS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;becomes&nbsp;7
-}
+asn1c&nbsp;<I>&lt;module.asn1&gt;</I>
 </PRE>
 </BLOCKQUOTE>
-
-<P>
-
-<H2><A NAME="SECTION02114000000000000000">
-The OCTET STRING type</A>
-</H2>
-
-<P>
-This type models the sequence of 8-bit bytes. This may be used to
-transmit some opaque data or data serialized by other types of encoders
-(i.e. video file, photo picture, etc).
-
-<P>
-
-<H2><A NAME="SECTION02115000000000000000">
-The OBJECT IDENTIFIER type</A>
-</H2>
-
-<P>
-The OBJECT IDENTIFIER is used to represent the unique identifier of
-any object, starting from the very root of the registration tree.
-If your organization needs to uniquely identify something (a router,
-a room, a person, a standard, or whatever), you are encouraged to
-get your own identification subtree at <A HREF=http://www.iana.org/protocols/forms.htm>http://www.iana.org/protocols/forms.htm</A>.
-
-<P>
-For example, the very first ASN.1 module in this document has the
-following OBJECT IDENTIFIER: 1 3 6 1 4 1 9363 1 5 2 1 1.
+If several ASN.1 modules contain interdependencies, all of the files
+must be specified altogether:
 
 <P>
 
 <BLOCKQUOTE><PRE>
-ExampleOID&nbsp;::=&nbsp;OBJECT&nbsp;IDENTIFIER
-&nbsp;
-rectangleModule1-oid&nbsp;ExampleOID
-&nbsp;&nbsp;::=&nbsp;{&nbsp;1&nbsp;3&nbsp;6&nbsp;1&nbsp;4&nbsp;1&nbsp;9363&nbsp;1&nbsp;5&nbsp;2&nbsp;1&nbsp;1&nbsp;}
-&nbsp;
---&nbsp;An&nbsp;identifier&nbsp;of&nbsp;the&nbsp;Internet.
-internet-id&nbsp;OBJECT&nbsp;IDENTIFIER
-&nbsp;&nbsp;::=&nbsp;{&nbsp;iso(1)&nbsp;identified-organization(3)
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dod(6)&nbsp;internet(1)&nbsp;}
+asn1c&nbsp;<I>&lt;module1.asn1&gt;&nbsp;&lt;module2.asn1&gt;&nbsp;...</I>
 </PRE>
 </BLOCKQUOTE>
-As you see, names are optional.
+The compiler <B>-E</B> and <B>-EF</B> options are used for testing
+the parser and the semantic fixer, respectively. These options will
+instruct the compiler to dump out the parsed (and fixed, if <B>-F</B>
+is involved) ASN.1 specification as it was &#34;understood&#34;
+by the compiler. It might be useful to check whether a particular
+syntactic construction is properly supported by the compiler.
 
 <P>
 
-<H2><A NAME="SECTION02116000000000000000">
-The RELATIVE-OID type</A>
-</H2>
+<BLOCKQUOTE><PRE>
+asn1c&nbsp;<B>-EF</B>&nbsp;<I>&lt;module-to-test.asn1&gt;</I>
+</PRE>
+</BLOCKQUOTE>
+The <B>-P</B> option is used to dump the compiled output on the
+screen instead of creating a bunch of .c and .h files on disk in the
+current directory. You would probably want to start with <B>-P</B>
+option instead of creating a mess in your current directory. Another
+option, <B>-R</B>, asks compiler to only generate the files which
+need to be generated, and supress linking in the numerous support
+files.
 
 <P>
-The RELATIVE-OID type has the semantics of a subtree of an OBJECT
-IDENTIFIER. There may be no need to repeat the whole sequence of numbers
-from the root of the registration tree where the only thing of interest
-is some of the tree's subsequence.
+Print the compiled output instead of creating multiple source files:
 
 <P>
 
 <BLOCKQUOTE><PRE>
-this-document&nbsp;RELATIVE-OID&nbsp;::=&nbsp;{&nbsp;docs(2)&nbsp;usage(1)&nbsp;}
-&nbsp;
-this-example&nbsp;RELATIVE-OID&nbsp;::=&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;this-document&nbsp;assorted-examples(0)&nbsp;this-example(1)&nbsp;}
+asn1c&nbsp;<B>-P</B>&nbsp;<I>&lt;module-to-compile-and-print.asn1&gt;</I>
 </PRE>
 </BLOCKQUOTE>
 
 <P>
 
 <H1><A NAME="SECTION02120000000000000000">
-Some of the ASN.1 String Types</A>
+Recognizing compiler output</A>
 </H1>
 
 <P>
-
-<H2><A NAME="SECTION02121000000000000000">
-The IA5String type</A>
-</H2>
-
-<P>
-This is essentially the ASCII, with 128 character codes available
-(7 lower bits of an 8-bit byte).
+After compiling, the following entities will be created in your current
+directory:
 
 <P>
 
-<H2><A NAME="SECTION02122000000000000000">
-The UTF8String type</A>
-</H2>
+<UL>
+<LI>A set of .c and .h files, generally a single pair for each type defined
+in the ASN.1 specifications. These files will be named similarly to
+the ASN.1 types (<I>Rectangle.c</I> and <I>Rectangle.h</I> for the
+RectangleTest ASN.1 module defined in the beginning of this document).
+</LI>
+<LI>A set of helper .c and .h files which contain generic encoders, decoders
+and other useful routines. There will be quite a few of them, some
+of them even are not always necessary, but the overall amount of code
+after compilation will be rather small anyway.
+</LI>
+<LI>A <I>Makefile.am.sample</I> file mentioning all the files created
+at the earlier steps. This file is suitable for either automake suite
+or the plain `make` utility.
+</LI>
+</UL>
+It is your responsibility to create .c file with the <I>int main()</I>
+routine.
 
 <P>
-This is the character string which encodes the full Unicode range
-(4 bytes) using multibyte character sequences.
+In other words, after compiling the Rectangle module, you have the
+following set of files: { Makefile.am.sample, Rectangle.c, Rectangle.h,
+<B>...</B> }, where <B>''...''</B> stands for the
+set of additional ''helper'' files created by the compiler. If you
+add a simple file with the <I>int main()</I> routine, it would even
+be possible to compile everything with the single instruction:
 
 <P>
 
-<H2><A NAME="SECTION02123000000000000000">
-The NumericString type</A>
-</H2>
+<BLOCKQUOTE><PRE>
+cc&nbsp;-I.&nbsp;-o&nbsp;rectangle.exe&nbsp;*.c&nbsp;&nbsp;&nbsp;#&nbsp;It&nbsp;could&nbsp;be&nbsp;<I>that</I>&nbsp;simple
+</PRE>
+</BLOCKQUOTE>
+Refer to the Chapter cha:Step-by-step-examples for a sample
+<I>int main()</I> routine.
 
 <P>
-This type represents the character string with the alphabet consisting
-of numbers (''0'' to ''9'') and a space.
 
-<P>
-
-<H2><A NAME="SECTION02124000000000000000">
-The PrintableString type</A>
-</H2>
-
-<P>
-The character string with the following alphabet: space, ''<B>'</B>''
-(single quote), ''<B>(</B>'', ''<B>)</B>'', ''<B>+</B>'',
-''<B>,</B>'' (comma), ''<B>-</B>'', ''<B>.</B>'', ''<B>/</B>'',
-digits (''0'' to ''9''), ''<B>:</B>'', ''<B>=</B>'', ''<B>?</B>'',
-upper-case and lower-case letters (''A'' to ''Z'' and ''a''
-to ''z'').
-
-<P>
-
-<H2><A NAME="SECTION02125000000000000000">
-The VisibleString type</A>
-</H2>
-
-<P>
-The character string with the alphabet which is more or less a subset
-of ASCII between the space and the ''<B>~</B>''
-symbol (tilde).
-
-<P>
-Alternatively, the alphabet may be described as the PrintableString
-alphabet presented earlier, plus the following characters: ''<B>!</B>'',
-''<B>''</B>'', ''<B>#</B>'', ''<B>$</B>'', ''<B>%</B>'',
-''<B>&amp;</B>'', ''<B>*</B>'', ''<B>;</B>'', ''<B>&lt;</B>'',
-''<B>&gt;</B>'', ''<B>[</B>'', ''<B>&#92;</B>'',
-''<B>]</B>'', ''<B>&#94;</B>'', ''<B>_</B>'',
-''<B>`</B>'' (single left quote), ''<B>{</B>'', ''<B>|</B>'',
-''<B>}</B>'', ''<B>~</B>''.
-
-<P>
-
-<H1><A NAME="SECTION02130000000000000000">
-ASN.1 Constructed Types</A>
-</H1>
-
-<P>
-
-<H2><A NAME="SECTION02131000000000000000">
-The SEQUENCE type</A>
-</H2>
-
-<P>
-This is an ordered collection of other simple or constructed types.
-The SEQUENCE constructed type resembles the C ''struct'' statement.
-
-<P>
-
-<BLOCKQUOTE><PRE>
-Address&nbsp;::=&nbsp;SEQUENCE&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;The&nbsp;apartment&nbsp;number&nbsp;may&nbsp;be&nbsp;omitted
-&nbsp;&nbsp;&nbsp;&nbsp;apartmentNumber&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NumericString&nbsp;OPTIONAL,
-&nbsp;&nbsp;&nbsp;&nbsp;streetName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PrintableString,
-&nbsp;&nbsp;&nbsp;&nbsp;cityName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PrintableString,
-&nbsp;&nbsp;&nbsp;&nbsp;stateName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PrintableString,
-&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;This&nbsp;one&nbsp;may&nbsp;be&nbsp;omitted&nbsp;too
-&nbsp;&nbsp;&nbsp;&nbsp;zipNo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NumericString&nbsp;OPTIONAL
-}
-</PRE>
-</BLOCKQUOTE>
-
-<P>
-
-<H2><A NAME="SECTION02132000000000000000">
-The SET type</A>
-</H2>
-
-<P>
-This is a collection of other simple or constructed types. Ordering
-is not important. The data may arrive in the order which is different
-from the order of specification. Data is encoded in the order not
-necessarily corresponding to the order of specification.
-
-<P>
-
-<H2><A NAME="SECTION02133000000000000000">
-The CHOICE type</A>
-</H2>
-
-<P>
-This type is just a choice between the subtypes specified in it. The
-CHOICE type contains at most one of the subtypes specified, and it
-is always implicitly known which choice is being decoded or encoded.
-This one resembles the C ''union'' statement.
-
-<P>
-The following type defines a response code, which may be either an
-integer code or a boolean ''true''/''false'' code.
-
-<P>
-
-<BLOCKQUOTE><PRE>
-ResponseCode&nbsp;::=&nbsp;CHOICE&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;intCode&nbsp;&nbsp;&nbsp;&nbsp;INTEGER,
-&nbsp;&nbsp;&nbsp;&nbsp;boolCode&nbsp;&nbsp;&nbsp;BOOLEAN
-}
-</PRE>
-</BLOCKQUOTE>
-
-<P>
-
-<H2><A NAME="SECTION02134000000000000000">
-The SEQUENCE OF type</A>
-</H2>
-
-<P>
-This one is the list (array) of simple or constructed types:
-
-<P>
-
-<BLOCKQUOTE><PRE>
---&nbsp;Example&nbsp;1
-ManyIntegers&nbsp;::=&nbsp;SEQUENCE&nbsp;OF&nbsp;INTEGER
-&nbsp;
---&nbsp;Example&nbsp;2
-ManyRectangles&nbsp;::=&nbsp;SEQUENCE&nbsp;OF&nbsp;Rectangle
-&nbsp;
---&nbsp;More&nbsp;complex&nbsp;example:
---&nbsp;an&nbsp;array&nbsp;of&nbsp;structures&nbsp;defined&nbsp;in&nbsp;place.
-ManyCircles&nbsp;::=&nbsp;SEQUENCE&nbsp;OF&nbsp;SEQUENCE&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;radius&nbsp;INTEGER
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
-</PRE>
-</BLOCKQUOTE>
-
-<P>
-
-<H2><A NAME="SECTION02135000000000000000">
-The SET OF type</A>
-</H2>
-
-<P>
-The SET OF type models the bag of structures. It resembles the SEQUENCE
-OF type, but the order is not important: i.e. the elements may arrive
-in the order which is not necessarily the same as the in-memory order
-on the remote machines.
-
-<P>
-
-<BLOCKQUOTE><PRE>
---&nbsp;A&nbsp;set&nbsp;of&nbsp;structures&nbsp;defined&nbsp;elsewhere
-SetOfApples&nbsp;::&nbsp;SET&nbsp;OF&nbsp;Apple
-&nbsp;
---&nbsp;Set&nbsp;of&nbsp;integers&nbsp;encoding&nbsp;the&nbsp;kind&nbsp;of&nbsp;a&nbsp;fruit
-FruitBag&nbsp;::=&nbsp;SET&nbsp;OF&nbsp;ENUMERATED&nbsp;{&nbsp;apple,&nbsp;orange&nbsp;}
-</PRE>
-</BLOCKQUOTE>
-
-<P>
-
-<H1><A NAME="SECTION03000000000000000000">
-Using the ASN.1 Compiler</A>
-</H1>
-
-<P>
-
-<H1><A NAME="SECTION03100000000000000000">
-Introduction to the ASN.1 Compiler</A>
-</H1>
-
-<P>
-The purpose of the ASN.1 compiler, of which this document is part,
-is to convert the ASN.1 specifications to some other target language
-(currently, only C is supported<A NAME="tex2html1"
-  HREF="#foot159"><SUP>2.1</SUP></A>). The compiler reads the specification and emits a series of target
-language structures and surrounding maintenance code. For example,
-the C structure which may be created by compiler to represent the
-simple <I>Rectangle</I> specification defined earlier in this document,
-may look like this<A NAME="tex2html2"
-  HREF="#foot803"><SUP>2.2</SUP></A>:
-
-<P>
-
-<BLOCKQUOTE><PRE>
-typedef&nbsp;struct&nbsp;Rectangle_s&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;height;
-&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;width;
-}&nbsp;Rectangle_t;
-</PRE>
-</BLOCKQUOTE>
-This would not be of much value for such a simple specification, so
-the compiler goes further and actually produces the code which fills
-in this structure by parsing the opaque binary<A NAME="tex2html3"
-  HREF="#foot166"><SUP>2.3</SUP></A> data provided in some buffer. It also produces the code that takes
-this structure as an argument and performs structure serialization
-by emitting a series of bytes.
-
-<P>
-
-<H1><A NAME="SECTION03200000000000000000">
-Quick start</A>
-</H1>
-
-<P>
-After building and installing the compiler, the <I>asn1c</I><A NAME="tex2html4"
-  HREF="#foot804"><SUP>3.1</SUP></A> command may be used to compile the ASN.1 specification<A NAME="tex2html5"
-  HREF="#foot805"><SUP>3.2</SUP></A>:
-
-<P>
-
-<BLOCKQUOTE><PRE>
-asn1c&nbsp;<I>&lt;spec.asn1&gt;</I>
-</PRE>
-</BLOCKQUOTE>
-If several specifications contain interdependencies, all of the files
-must be specified altogether:
-
-<P>
-
-<BLOCKQUOTE><PRE>
-asn1c&nbsp;<I>&lt;spec1.asn1&gt;&nbsp;&lt;spec2.asn1&gt;&nbsp;...</I>
-</PRE>
-</BLOCKQUOTE>
-The compiler <B>-E</B> and <B>-EF</B> options are used for testing
-the parser and the semantic fixer, respectively. These options will
-instruct the compiler to dump out the parsed (and fixed, if <B>-F</B>
-is involved) ASN.1 specification as it was &#34;understood&#34;
-by the compiler. It might be useful to check whether a particular
-syntactic construction is properly supported by the compiler.
-
-<P>
-
-<BLOCKQUOTE><PRE>
-asn1c&nbsp;<B>-EF</B>&nbsp;<I>&lt;spec-to-test.asn1&gt;</I>
-</PRE>
-</BLOCKQUOTE>
-The <B>-P</B> option is used to dump the compiled output on the
-screen instead of creating a bunch of .c and .h files on disk in the
-current directory. You would probably want to start with <B>-P</B>
-option instead of creating a mess in your current directory. Another
-option, <B>-R</B>, asks compiler to only generate the files which
-need to be generated, and supress linking in the numerous support
-files.
-
-<P>
-Print the compiled output instead of creating multiple source files:
-
-<P>
-
-<BLOCKQUOTE><PRE>
-asn1c&nbsp;<B>-P</B>&nbsp;<I>&lt;spec-to-compile-and-print.asn1&gt;</I>
-</PRE>
-</BLOCKQUOTE>
-
-<P>
-
-<H1><A NAME="SECTION03300000000000000000">
-Using the ASN.1 Compiler</A>
-</H1>
-
-<P>
-
-<H1><A NAME="SECTION03310000000000000000">
-Command-line options</A>
-</H1>
+<H1><A NAME="SECTION02130000000000000000">
+Command line options</A>
+</H1>
 
 <P>
 The <A HREF=#Table1>Table 1</A> summarizes various options affecting
@@ -679,7 +328,7 @@ the compiler's behavior.
 
 <P>
 <BR><P></P>
-<DIV ALIGN="CENTER"><A NAME="808"></A>
+<DIV ALIGN="CENTER"><A NAME="826"></A>
 <TABLE>
 <CAPTION><STRONG><A NAME=Table1>Table 1:</A></STRONG>
 The list of asn1c command line options</CAPTION>
@@ -784,59 +433,21 @@ to explain its internal understanding of subtype constraints.</FONT></TD></TR>
 
 <P>
 
-<H1><A NAME="SECTION03320000000000000000">
-Recognizing compiler output</A>
+<H1><A NAME="SECTION02200000000000000000">
+Using the ASN.1 Compiler</A>
 </H1>
 
-<P>
-After compiling, the following entities will be created in your current
-directory:
-
-<P>
-
-<UL>
-<LI>A set of .c and .h files, generally a single pair for each type defined
-in the ASN.1 specifications. These files will be named similarly to
-the ASN.1 types (<I>Rectangle.c</I> and <I>Rectangle.h</I> for the
-specification defined in the beginning of this document).
-</LI>
-<LI>A set of helper .c and .h files which contain generic encoders, decoders
-and other useful routines. There will be quite a few of them, some
-of them even are not always necessary, but the overall amount of code
-after compiling will be rather small anyway.
-</LI>
-</UL>
-It is your responsibility to create .c file with the <I>int main()</I>
-routine and the Makefile (if needed). Compiler helps you with the
-latter by creating the Makefile.am.sample, containing the skeleton
-definition for the automake, should you want to use autotools.
-
-<P>
-In other words, after compiling the Rectangle module, you have the
-following set of files: { Makefile.am.sample, Rectangle.c, Rectangle.h,
-<B>...</B> }, where <B>''...''</B> stands for the
-set of additional ''helper'' files created by the compiler. If you
-add the simple file with the <I>int main()</I> routine, it would even
-be possible to compile everything with the single instruction:
-
-<P>
-
-<BLOCKQUOTE><PRE>
-cc&nbsp;-o&nbsp;rectangle&nbsp;*.c&nbsp;&nbsp;&nbsp;#&nbsp;It&nbsp;could&nbsp;be&nbsp;<I>that</I>&nbsp;simple<A NAME="tex2html7"
-  HREF="#foot811"><SUP>4.1</SUP></A>
-</PRE>
-</BLOCKQUOTE>
-
 <P>
 
-<H1><A NAME="SECTION03330000000000000000">
-Invoking the ASN.1 helper code from an application</A>
+<H1><A NAME="SECTION02210000000000000000">
+Invoking the ASN.1 helper code</A>
 </H1>
 
 <P>
-First of all, you should to include one or more header files into
-your application. For our Rectangle module, including the Rectangle.h
-file is enough:
+First of all, you should include one or more header files into your
+application. Typically, it is enough to include the header file of
+the main PDU type. For our Rectangle module, including the Rectangle.h
+file is sufficient:
 
 <P>
 
@@ -861,30 +472,38 @@ asn_DEF_Rectangle-&gt;free_struct(&amp;asn_DEF_Rectangle,
 </BLOCKQUOTE>
 This code defines a <I>rect</I> pointer which points to the Rectangle_t
 structure which needs to be freed. The second line invokes the generic
-free_struct routine created specifically for this Rectangle_t structure.
-The <I>asn_DEF_Rectangle</I> is the type descriptor, which holds
-a collection of generic routines to deal with the Rectangle_t structure.
+<I>free_struct()</I> routine created specifically for this Rectangle_t
+structure. The <I>asn_DEF_Rectangle</I> is the type descriptor,
+which holds a collection of routines to deal with the Rectangle_t
+structure.
 
 <P>
-There are several generic functions available:
+The following member functions of the asn_DEF_Rectangle type descriptor
+are of interest:
 
 <P>
 <DL>
 <DT><STRONG>ber_decoder</STRONG></DT>
-<DD>This is the generic <I>restartable</I><A NAME="tex2html8"
-  HREF="#foot253"><SUP>4.2</SUP></A> BER decoder (Basic Encoding Rules). This decoder would create
+<DD>This is the generic <I>restartable</I><A NAME="tex2html6"
+  HREF="#foot156"><SUP>2.1</SUP></A> BER decoder (Basic Encoding Rules). This decoder would create
 and/or fill the target structure for you. Please refer to Section
-[<A HREF="#sub:Decoding-BER">Decoding BER</A>].
+sub:Decoding-BER.
 </DD>
 <DT><STRONG>der_encoder</STRONG></DT>
 <DD>This is the generic DER encoder (Distinguished Encoding
 Rules). This encoder will take the target structure and encode it
-into a series of bytes. Please refer to Section [<A HREF="#sub:Encoding-DER">Encoding DER</A>].
+into a series of bytes. Please refer to Section <A HREF="#sub:Encoding-DER">Encoding DER</A>.
 </DD>
 <DT><STRONG>xer_encoder</STRONG></DT>
-<DD>This is the generic XER encoder (XML Encoding Rules).
-This encoder will take the target structure and represent it as an
-XML (text) document. Please refer to Section [<A HREF="#sub:Encoding-XER">Encoding XER</A>].
+<DD>This is the XER encoder (XML Encoding Rules). This
+encoder will take the target structure and represent it as an XML
+(text) document using either BASIC-XER or CANONICAL-XER encoding rules.
+Please refer to Section <A HREF="#sub:Encoding-XER">Encoding XER</A>.
+</DD>
+<DT><STRONG>xer_decoder</STRONG></DT>
+<DD>This is the generic XER decoder. It takes both BASIC-XER
+or CANONICAL-XER encodings and deserializes the data into a local,
+machine-dependent representation. Please refer to Section <A HREF="#sub:Decoding-XER">Decoding XER</A>.
 </DD>
 <DT><STRONG>check_constraints</STRONG></DT>
 <DD>Check that the contents of the target structure
@@ -895,94 +514,39 @@ explicit subtype constraints. Please refer to Section <A HREF="#sub:Validating-t
 <DD>This function convert the contents of the passed target
 structure into human readable form. This form is not formal and cannot
 be converted back into the structure, but it may turn out to be useful
-for debugging or quick-n-dirty printing. Please refer to Section [<A HREF="#sub:Printing-the-target">Printing the target</A>].
+for debugging or quick-n-dirty printing. Please refer to Section <A HREF="#sub:Printing-the-target">Printing the target</A>.
 </DD>
 <DT><STRONG>free_struct</STRONG></DT>
 <DD>This is a generic disposal which frees the target structure.
-Please refer to Section [<A HREF="#sub:Freeing-the-target">Freeing the target</A>].
+Please refer to Section <A HREF="#sub:Freeing-the-target">Freeing the target</A>.
 </DD>
 </DL>
-check_constraints Check that the contents of the target structure
-are semantically valid and constrained to appropriate implicit or
-explicit subtype constraints. Please refer to Section <A HREF="#sub:Validating-the-target">Validating the target</A>.
-
-<P>
 Each of the above function takes the type descriptor (<I>asn_DEF_...</I>)
-and the target structure (<I>rect</I>, in the above example). The
-target structure is typically created by the generic BER decoder or
-by the application itself.
-
-<P>
-Here is how the buffer can be deserialized into the structure:
-
-<P>
-
-<BLOCKQUOTE><PRE>
-Rectangle_t&nbsp;*
-simple_deserializer(const&nbsp;void&nbsp;*buffer,&nbsp;size_t&nbsp;buf_size)&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;Rectangle_t&nbsp;*rect&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Note&nbsp;this&nbsp;0!&nbsp;*/
-&nbsp;&nbsp;&nbsp;&nbsp;asn_dec_rval_t&nbsp;rval;
-&nbsp;
-&nbsp;&nbsp;&nbsp;&nbsp;rval&nbsp;=&nbsp;asn_DEF_Rectangle-&gt;ber_decoder(0,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;asn_DEF_Rectangle,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(void&nbsp;**)&amp;rect,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buffer,&nbsp;buf_size,
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0);
-&nbsp;
-&nbsp;&nbsp;&nbsp;&nbsp;if(rval<B>.code</B>&nbsp;==&nbsp;RC_OK)&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;rect;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Decoding&nbsp;succeeded&nbsp;*/
-&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Free&nbsp;partially&nbsp;decoded&nbsp;rect&nbsp;*/
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;asn_DEF_Rectangle-&gt;free_struct(
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;asn_DEF_Rectangle,&nbsp;rect,&nbsp;0);
-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;
-&nbsp;&nbsp;&nbsp;&nbsp;}
-}
-</PRE>
-</BLOCKQUOTE>
-The code above defines a function, <I>simple_deserializer</I>, which
-takes a buffer and its length and expected to return a pointer to
-the Rectangle_t structure. Inside, it tries to convert the bytes
-passed into the target structure (rect) using the generic BER decoder
-and returns the rect pointer afterwards. If the structure cannot be
-deserialized, it frees the memory which might be left allocated by
-the unfinished <I>ber_decoder</I> routine and returns NULL. <B>This
-freeing is necessary</B> because the ber_decoder is a restartable procedure,
-and may fail just because there is more data needs to be provided
-before decoding could be finalized. The code above obviously does
-not take into account the way the <I>ber_decoder</I> failed, so the
-freeing is necessary because the part of the buffer may already be
-decoded into the structure by the time something goes wrong.
-
-<P>
-Restartable decoding is a little bit trickier: you need to provide
-the old target structure pointer (which might be already half-decoded)
-and react on RC_WMORE return code. This will be explained later in
-Section <A HREF="#sub:Decoding-BER">Decoding BER</A>
+and the target structure (<I>rect</I>, in the above example).
 
 <P>
 
-<H2><A NAME="SECTION03331000000000000000"></A><A NAME="sub:Decoding-BER"></A><BR>
+<H2><A NAME="SECTION02211000000000000000"></A><A NAME="sub:Decoding-BER"></A><BR>
 Decoding BER
 </H2>
 
 <P>
-The Basic Encoding Rules describe the basic way how the structure
-can be encoded and decoded. Several other encoding rules (CER, DER)
-define a more restrictive versions of BER, so the generic BER parser
-is also capable of decoding the data encoded by CER and DER encoders.
-The opposite is not true.
+The Basic Encoding Rules describe the most widely used (by the ASN.1
+community) way to encode and decode a given structure in a machine-independent
+way. Several other encoding rules (CER, DER) define a more restrictive
+versions of BER, so the generic BER parser is also capable of decoding
+the data encoded by CER and DER encoders. The opposite is not true.
 
 <P>
-The ASN.1 compiler provides the generic BER decoder which is implicitly
-capable of decoding BER, CER and DER encoded data.
+<I>The ASN.1 compiler provides the generic BER decoder which is
+implicitly capable of decoding BER, CER and DER encoded data.</I>
 
 <P>
 The decoder is restartable (stream-oriented), which means that in
 case the buffer has less data than it is expected, the decoder will
-process whatever it is available and ask for more data to be provided.
+process whatever there is available and ask for more data to be provided.
 Please note that the decoder may actually process less data than it
-is given in the buffer, which means that you should be able to make
+was given in the buffer, which means that you must be able to make
 the next buffer contain the unprocessed part of the previous buffer.
 
 <P>
@@ -997,20 +561,60 @@ bytes of data, or
 <LI>You may feed it the first buffer of 100 bytes of data, realize that
 the ber_decoder consumed only 95 bytes from it and later feed the
 decoder with 205 bytes buffer which consists of 5 unprocessed bytes
-from the first buffer and the latter 200 bytes from the second buffer.
+from the first buffer and the additional 200 bytes from the second
+buffer.
 </LI>
 </UL>
-This is not as convenient as it could be (like, the BER encoder would
+This is not as convenient as it could be (like, the BER encoder could
 consume the whole 100 bytes and keep these 5 bytes in some temporary
-storage), but in case of stream-based processing it might actually
-be OK. Suggestions are welcome.
+storage), but in case of existing stream based processing it might
+actually fit well into existing algorithm. Suggestions are welcome.
+
+<P>
+Here is the simplest example of BER decoding.
+
+<P>
+
+<BLOCKQUOTE><PRE>
+Rectangle_t&nbsp;*
+simple_deserializer(const&nbsp;void&nbsp;*buffer,&nbsp;size_t&nbsp;buf_size)&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;Rectangle_t&nbsp;*rect&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Note&nbsp;this&nbsp;0!&nbsp;*/
+&nbsp;&nbsp;&nbsp;&nbsp;asn_dec_rval_t&nbsp;rval;
+&nbsp;
+&nbsp;&nbsp;&nbsp;&nbsp;rval&nbsp;=&nbsp;<B>asn_DEF_Rectangle-&gt;ber_decoder</B>(0,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;asn_DEF_Rectangle,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(void&nbsp;**)&amp;rect,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buffer,&nbsp;buf_size,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0);
+&nbsp;
+&nbsp;&nbsp;&nbsp;&nbsp;if(rval<B>.code</B>&nbsp;==&nbsp;RC_OK)&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;rect;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Decoding&nbsp;succeeded&nbsp;*/
+&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Free&nbsp;partially&nbsp;decoded&nbsp;rect&nbsp;*/
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;asn_DEF_Rectangle-&gt;free_struct(
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;asn_DEF_Rectangle,&nbsp;rect,&nbsp;0);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;
+&nbsp;&nbsp;&nbsp;&nbsp;}
+}
+</PRE>
+</BLOCKQUOTE>
+The code above defines a function, <I>simple_deserializer</I>, which
+takes a buffer and its length and is expected to return a pointer
+to the Rectangle_t structure. Inside, it tries to convert the bytes
+passed into the target structure (rect) using the BER decoder and
+returns the rect pointer afterwards. If the structure cannot be deserialized,
+it frees the memory which might be left allocated by the unfinished
+<I>ber_decoder</I> routine and returns 0 (no data). (This <B>freeing
+is necessary</B> because the ber_decoder is a restartable procedure,
+and may fail just because there is more data needs to be provided
+before decoding could be finalized). The code above obviously does
+not take into account the way the <I>ber_decoder()</I> failed, so
+the freeing is necessary because the part of the buffer may already
+be decoded into the structure by the time something goes wrong.
 
 <P>
-There are two ways to invoke a BER decoder. The first one is a direct
-reference of the type-specific decoder. This way was shown in the
-previous example of <I>simple_deserializer</I> function. The second
-way is to invoke a <I>ber_decode</I> function, which is just a simple
-wrapper of the former approach into a less wordy notation:
+A little less wordy would be to invoke a globally available <I>ber_decode()</I>
+function instead of dereferencing the asn_DEF_Rectangle type descriptor:
 
 <P>
 
@@ -1023,7 +627,7 @@ Note that the initial (asn_DEF_Rectangle-&gt;ber_decoder) reference
 is gone, and also the last argument (0) is no longer necessary.
 
 <P>
-These two ways of invocations are fully equivalent.
+These two ways of BER decoder invocations are fully equivalent.
 
 <P>
 The BER de<I>coder</I> may fail because of (<I>the following RC_...
@@ -1054,7 +658,7 @@ and related types.
 
 <P>
 
-<H2><A NAME="SECTION03332000000000000000"></A><A NAME="sub:Encoding-DER"></A><BR>
+<H2><A NAME="SECTION02212000000000000000"></A><A NAME="sub:Encoding-DER"></A><BR>
 Encoding DER
 </H2>
 
@@ -1064,8 +668,8 @@ BER encoding rules. The DER is best suited to encode the structures
 where all the lengths are known beforehand. This is probably exactly
 how you want to encode: either after a BER decoding or after a manual
 fill-up, the target structure contains the data which size is implicitly
-known before encoding. The DER encoding is used, for example, to encode
-X.509 certificates.
+known before encoding. Among other uses, the DER encoding is used
+to encode X.509 certificates.
 
 <P>
 As with BER decoder, the DER encoder may be invoked either directly
@@ -1114,8 +718,8 @@ If the custom write function is not given (passed as 0), then the
 DER encoder will essentially do the same thing (i.e., encode the data)
 but no callbacks will be invoked (so the data goes nowhere). It may
 prove useful to determine the size of the structure's encoding before
-actually doing the encoding<A NAME="tex2html9"
-  HREF="#foot322"><SUP>4.3</SUP></A>.
+actually doing the encoding<A NAME="tex2html7"
+  HREF="#foot225"><SUP>2.2</SUP></A>.
 
 <P>
 Please look into der_encoder.h for the precise definition of der_encode()
@@ -1123,7 +727,7 @@ and related types.
 
 <P>
 
-<H2><A NAME="SECTION03333000000000000000"></A><A NAME="sub:Encoding-XER"></A><BR>
+<H2><A NAME="SECTION02213000000000000000"></A><A NAME="sub:Encoding-XER"></A><BR>
 Encoding XER
 </H2>
 
@@ -1150,7 +754,7 @@ int
 print_as_XML(FILE&nbsp;*ostream,&nbsp;Rectangle_t&nbsp;*rect)&nbsp;{
 &nbsp;&nbsp;&nbsp;&nbsp;asn_enc_rval_t&nbsp;er;&nbsp;&nbsp;/*&nbsp;Encoder&nbsp;return&nbsp;value&nbsp;*/
 &nbsp;
-&nbsp;&nbsp;&nbsp;&nbsp;er&nbsp;=&nbsp;xer_encode(&amp;asn_DEF_Rect,&nbsp;rect,
+&nbsp;&nbsp;&nbsp;&nbsp;er&nbsp;=&nbsp;xer_encode(&amp;asn_DEF_Rectangle,&nbsp;rect,
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XER_F_BASIC,&nbsp;/*&nbsp;BASIC-XER&nbsp;or&nbsp;CANONICAL-XER&nbsp;*/
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;write_stream,&nbsp;ostream);
 &nbsp;
@@ -1167,7 +771,48 @@ XML encoder and other pretty-printing suggestions.
 
 <P>
 
-<H2><A NAME="SECTION03334000000000000000"></A><A NAME="sub:Validating-the-target"></A><BR>
+<H2><A NAME="SECTION02214000000000000000"></A><A NAME="sub:Decoding-XER"></A><BR>
+Decoding XER
+</H2>
+
+<P>
+The data encoded using the XER rules can be subsequently decoded using
+the xer_decode() API call:
+
+<P>
+
+<BLOCKQUOTE><PRE>
+Rectangle_t&nbsp;*
+XML_to_Rectangle(const&nbsp;void&nbsp;*buffer,&nbsp;size_t&nbsp;buf_size)&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;Rectangle_t&nbsp;*rect&nbsp;=&nbsp;0;&nbsp;/*&nbsp;Note&nbsp;this&nbsp;0!&nbsp;*/
+&nbsp;&nbsp;&nbsp;&nbsp;asn_dec_rval_t&nbsp;rval;
+&nbsp;&nbsp;
+&nbsp;&nbsp;&nbsp;&nbsp;rval&nbsp;=&nbsp;xer_decode(0,&nbsp;&amp;asn_DEF_Rectangle,&nbsp;(void&nbsp;**)&amp;rect,
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buffer,&nbsp;buf_size);
+&nbsp;&nbsp;&nbsp;&nbsp;if(rval<B>.code</B>&nbsp;==&nbsp;RC_OK)&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;rect;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Decoding&nbsp;succeeded&nbsp;*/
+&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Free&nbsp;partially&nbsp;decoded&nbsp;rect&nbsp;*/
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;asn_DEF_Rectangle-&gt;free_struct(
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;asn_DEF_Rectangle,&nbsp;rect,&nbsp;0);
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;
+&nbsp;&nbsp;&nbsp;&nbsp;}
+}
+</PRE>
+</BLOCKQUOTE>
+The decoder takes both BASIC-XER and CANONICAL-XER encodings.
+
+<P>
+The decoder shares its data consumption properties with BER decoder;
+please read the Section <A HREF="#sub:Decoding-BER">Decoding BER</A> to know more.
+
+<P>
+Please look into xer_decoder.h for the precise definition of xer_decode()
+and related types.
+
+<P>
+
+<H2><A NAME="SECTION02215000000000000000"></A><A NAME="sub:Validating-the-target"></A><BR>
 Validating the target structure
 </H2>
 
@@ -1195,7 +840,7 @@ and related types.
 
 <P>
 
-<H2><A NAME="SECTION03335000000000000000"></A><A NAME="sub:Printing-the-target"></A><BR>
+<H2><A NAME="SECTION02216000000000000000"></A><A NAME="sub:Printing-the-target"></A><BR>
 Printing the target structure
 </H2>
 
@@ -1230,7 +875,7 @@ See Section <A HREF="#sub:Encoding-XER">Encoding XER</A> for XML-related details
 
 <P>
 
-<H2><A NAME="SECTION03336000000000000000"></A><A NAME="sub:Freeing-the-target"></A><BR>
+<H2><A NAME="SECTION02217000000000000000"></A><A NAME="sub:Freeing-the-target"></A><BR>
 Freeing the target structure
 </H2>
 
@@ -1257,13 +902,13 @@ with one ASN.1-derived member (rect). This member is not a reference
 to the Rectangle_t, but an in-place inclusion of the Rectangle_t
 structure. If the freeing is necessary, the usual procedure of freeing
 everything must not be applied to the &amp;rect pointer itself, because
-it does not point to the memory block directly allocated by memory
-allocation routine, but instead lies within such a block allocated
-for my_figure structure.
+it does not point to the memory block directly allocated by the memory
+allocation routine, but instead lies within a block allocated for
+the my_figure structure.
 
 <P>
 To solve this problem, the free_struct routine has the additional
-argument (besides the intuitive type descriptor and target structure
+argument (besides the obvious type descriptor and target structure
 pointers), which is the flag specifying whether the outer pointer
 itself must be freed (0, default) or it should be left intact (non-zero
 value).
@@ -1271,23 +916,26 @@ value).
 <P>
 
 <BLOCKQUOTE><PRE>
-/*&nbsp;Rectangle_t&nbsp;is&nbsp;defined&nbsp;within&nbsp;my_figure&nbsp;*/
-struct&nbsp;my_figure&nbsp;*mf&nbsp;=&nbsp;<B>...</B>;
+<B>/*&nbsp;1.&nbsp;Rectangle_t&nbsp;is&nbsp;defined&nbsp;within&nbsp;my_figure&nbsp;*/</B>
+struct&nbsp;my_figure&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;Rectangle_t&nbsp;rect;
+}&nbsp;*mf&nbsp;=&nbsp;<B>...</B>;
 /*
-&nbsp;*&nbsp;Freeing&nbsp;the&nbsp;Rectangle_td
-&nbsp;*&nbsp;without&nbsp;freeing&nbsp;the&nbsp;mf-&gt;rect&nbsp;pointer
+&nbsp;*&nbsp;Freeing&nbsp;the&nbsp;Rectangle_t
+&nbsp;*&nbsp;without&nbsp;freeing&nbsp;the&nbsp;mf-&gt;rect&nbsp;area
 &nbsp;*/
 asn_DEF_Rectangle-&gt;free_struct(
-&nbsp;&nbsp;&nbsp;&nbsp;&amp;asn_DEF_Rectangle,&nbsp;&amp;mf-&gt;rect,&nbsp;<I>1</I>&nbsp;/*&nbsp;!free&nbsp;*/);
-&nbsp;
-/*&nbsp;Rectangle_t&nbsp;is&nbsp;a&nbsp;stand-alone&nbsp;pointer&nbsp;*/
+&nbsp;&nbsp;&nbsp;&nbsp;&amp;asn_DEF_Rectangle,&nbsp;&amp;mf-&gt;rect,&nbsp;<B>1</B>&nbsp;<B>/*&nbsp;!free&nbsp;*/</B>);
+&nbsp;&nbsp;&nbsp;&nbsp;
+&nbsp;&nbsp;
+<B>/*&nbsp;2.&nbsp;Rectangle_t&nbsp;is&nbsp;a&nbsp;stand-alone&nbsp;pointer&nbsp;*/</B>
 Rectangle_t&nbsp;*rect&nbsp;=&nbsp;<B>...</B>;
 /*
 &nbsp;*&nbsp;Freeing&nbsp;the&nbsp;Rectangle_t
 &nbsp;*&nbsp;and&nbsp;freeing&nbsp;the&nbsp;rect&nbsp;pointer
 &nbsp;*/
 asn_DEF_Rectangle-&gt;free_struct(
-&nbsp;&nbsp;&nbsp;&nbsp;&amp;asn_DEF_Rectangle,&nbsp;rect,&nbsp;<I>0</I>&nbsp;/*&nbsp;free&nbsp;the&nbsp;pointer&nbsp;too&nbsp;*/);
+&nbsp;&nbsp;&nbsp;&nbsp;&amp;asn_DEF_Rectangle,&nbsp;rect,&nbsp;<B>0</B>&nbsp;<B>/*&nbsp;free&nbsp;the&nbsp;pointer&nbsp;too&nbsp;*/</B>);
 </PRE>
 </BLOCKQUOTE>
 It is safe to invoke the <I>free_struct</I> function with the target
@@ -1295,19 +943,13 @@ structure pointer set to 0 (NULL), the function will do nothing.
 
 <P>
 
-<H1><A NAME="SECTION04000000000000000000">
-Examples</A>
-</H1>
-
-<P>
-
-<H1><A NAME="SECTION04100000000000000000"></A><A NAME="cha:Step-by-step-examples"></A><BR>
+<H1><A NAME="SECTION02300000000000000000"></A><A NAME="cha:Step-by-step-examples"></A><BR>
 Step by step examples
 </H1>
 
 <P>
 
-<H1><A NAME="SECTION04110000000000000000">
+<H1><A NAME="SECTION02310000000000000000">
 A ''Rectangle'' Encoder</A>
 </H1>
 
@@ -1449,7 +1091,7 @@ type, named <B>rencode</B>!
 
 <P>
 
-<H1><A NAME="SECTION04120000000000000000"></A><A NAME="sec:A-Rectangle-Decoder"></A><BR>
+<H1><A NAME="SECTION02320000000000000000"></A><A NAME="sec:A-Rectangle-Decoder"></A><BR>
 A ''Rectangle'' Decoder
 </H1>
 
@@ -1575,7 +1217,7 @@ named <B>rdecode</B>!
 
 <P>
 
-<H1><A NAME="SECTION04200000000000000000">
+<H1><A NAME="SECTION02400000000000000000">
 Constraint validation examples</A>
 </H1>
 
@@ -1585,7 +1227,7 @@ validation code.
 
 <P>
 
-<H1><A NAME="SECTION04210000000000000000">
+<H1><A NAME="SECTION02410000000000000000">
 Adding constraints into ''Rectangle'' type</A>
 </H1>
 
@@ -1619,8 +1261,8 @@ END
 <LI>Modify the Rectangle type processing routine (you can start with the
 main() routine shown in the Section <A HREF="#sec:A-Rectangle-Decoder">A Rectangle Decoder</A>)
 by placing the following snippet of code <I>before</I> encoding and/or
-<I>after</I> decoding the Rectangle type<A NAME="tex2html10"
-  HREF="#foot876"><SUP>6.1</SUP></A>:
+<I>after</I> decoding the Rectangle type<A NAME="tex2html8"
+  HREF="#foot898"><SUP>4.1</SUP></A>:
 
 <P>
 
@@ -1656,8 +1298,424 @@ by the short explanation why validation did not succeed.
 </LI>
 <LI>Done.
 </LI>
-</OL> 
-<H2><A NAME="SECTION05000000000000000000">
+</OL>
+
+<P>
+
+<H1><A NAME="SECTION03000000000000000000"></A><A NAME="par:ASN.1-Basics"></A><BR>
+ASN.1 Basics
+</H1>
+
+<P>
+
+<H1><A NAME="SECTION03100000000000000000"></A><A NAME="cha:Abstract-Syntax-Notation:"></A><BR>
+Abstract Syntax Notation: ASN.1
+</H1>
+
+<P>
+<I>This chapter defines some basic ASN.1 concepts and describes
+several most widely used types. It is by no means an authoritative
+or complete reference. For more complete ASN.1 description, please
+refer to Olivier Dubuisson's book [<A
+ HREF="asn1c-usage.html#Dub00">Dub00</A>] or the ASN.1 body
+of standards itself [<A
+ HREF="asn1c-usage.html#ITU-T_ASN.1">ITU-T/ASN.1</A>].</I>
+
+<P>
+The Abstract Syntax Notation One is used to formally describe the
+semantics of data transmitted across the network. Two communicating
+parties may have different formats of their native data types (i.e.
+number of bits in the integer type), thus it is important to have
+a way to describe the data in a manner which is independent from the
+particular machine's representation. The ASN.1 specifications are
+used to achieve the following:
+
+<P>
+
+<UL>
+<LI>The specification expressed in the ASN.1 notation is a formal and
+precise way to communicate the data semantics to human readers;
+</LI>
+<LI>The ASN.1 specifications may be used as input for automatic compilers
+which produce the code for some target language (C, C++, Java, etc)
+to encode and decode the data according to some encoding rules (which
+are also defined by the ASN.1 standard).
+</LI>
+</UL>
+Consider the following example:
+
+<P>
+
+<BLOCKQUOTE><PRE>
+Rectangle&nbsp;::=&nbsp;SEQUENCE&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;height&nbsp;&nbsp;INTEGER,
+&nbsp;&nbsp;&nbsp;&nbsp;width&nbsp;&nbsp;&nbsp;INTEGER
+}
+</PRE>
+</BLOCKQUOTE>
+This ASN.1 specification describes a constructed type, <I>Rectangle</I>,
+containing two integer fields. This specification may tell the reader
+that there exists this kind of data structure and that some entity
+may be prepared to send or receive it. The question on <I>how</I>
+that entity is going to send or receive the <I>encoded data</I> is
+outside the scope of ASN.1. For example, this data structure may be
+encoded according to some encoding rules and sent to the destination
+using the TCP protocol. The ASN.1 specifies several ways of encoding
+(or ''serializing'', or ''marshaling'') the data: BER, PER, XER
+and others, including CER and DER derivatives from BER.
+
+<P>
+The complete specification must be wrapped in a module, which looks
+like this:
+
+<P>
+
+<BLOCKQUOTE><PRE>
+RectangleModule1
+&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;iso&nbsp;org(3)&nbsp;dod(6)&nbsp;internet(1)&nbsp;private(4)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;enterprise(1)&nbsp;spelio(9363)&nbsp;software(1)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;asn1c(5)&nbsp;docs(2)&nbsp;rectangle(1)&nbsp;1&nbsp;}&nbsp;
+&nbsp;&nbsp;&nbsp;&nbsp;DEFINITIONS&nbsp;AUTOMATIC&nbsp;TAGS&nbsp;::=
+BEGIN
+&nbsp;
+--&nbsp;This&nbsp;is&nbsp;a&nbsp;comment&nbsp;which&nbsp;describes&nbsp;nothing.
+Rectangle&nbsp;::=&nbsp;SEQUENCE&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;height&nbsp;&nbsp;INTEGER,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;Height&nbsp;of&nbsp;the&nbsp;rectangle
+&nbsp;&nbsp;&nbsp;&nbsp;width&nbsp;&nbsp;&nbsp;INTEGER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;Width&nbsp;of&nbsp;the&nbsp;rectangle
+}
+&nbsp;
+END
+</PRE>
+</BLOCKQUOTE>
+The module header consists of module name (RectangleModule1), the
+module object identifier ({...}), a keyword ''DEFINITIONS'', a
+set of module flags (AUTOMATIC TAGS) and ''::= BEGIN''. The module
+ends with an ''END'' statement.
+
+<P>
+
+<H1><A NAME="SECTION03110000000000000000">
+Some of the ASN.1 Basic Types</A>
+</H1>
+
+<P>
+
+<H2><A NAME="SECTION03111000000000000000">
+The BOOLEAN type</A>
+</H2>
+
+<P>
+The BOOLEAN type models the simple binary TRUE/FALSE, YES/NO, ON/OFF
+or a similar kind of two-way choice.
+
+<P>
+
+<H2><A NAME="SECTION03112000000000000000">
+The INTEGER type</A>
+</H2>
+
+<P>
+The INTEGER type is a signed natural number type without any restrictions
+on its size. If the automatic checking on INTEGER value bounds are
+necessary, the subtype constraints must be used.
+
+<P>
+
+<BLOCKQUOTE><PRE>
+SimpleInteger&nbsp;::=&nbsp;INTEGER
+&nbsp;
+--&nbsp;An&nbsp;integer&nbsp;with&nbsp;a&nbsp;very&nbsp;limited&nbsp;range
+SmallPositiveInt&nbsp;::=&nbsp;INTEGER&nbsp;(0..127)
+&nbsp;
+--&nbsp;Integer,&nbsp;negative
+NegativeInt&nbsp;::=&nbsp;INTEGER&nbsp;(MIN..0)
+</PRE>
+</BLOCKQUOTE>
+
+<P>
+
+<H2><A NAME="SECTION03113000000000000000">
+The ENUMERATED type</A>
+</H2>
+
+<P>
+The ENUMERATED type is semantically equivalent to the INTEGER type
+with some integer values explicitly named.
+
+<P>
+
+<BLOCKQUOTE><PRE>
+FruitId&nbsp;::=&nbsp;ENUMERATED&nbsp;{&nbsp;apple(1),&nbsp;orange(2)&nbsp;}
+&nbsp;
+--&nbsp;The&nbsp;numbers&nbsp;in&nbsp;braces&nbsp;are&nbsp;optional,
+--&nbsp;the&nbsp;enumeration&nbsp;can&nbsp;be&nbsp;performed
+--&nbsp;automatically&nbsp;by&nbsp;the&nbsp;compiler
+ComputerOSType&nbsp;::=&nbsp;ENUMERATED&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;FreeBSD,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;acquires&nbsp;value&nbsp;0
+&nbsp;&nbsp;&nbsp;&nbsp;Windows,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;acquires&nbsp;value&nbsp;1
+&nbsp;&nbsp;&nbsp;&nbsp;Solaris(5),&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;remains&nbsp;5
+&nbsp;&nbsp;&nbsp;&nbsp;Linux,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;becomes&nbsp;6
+&nbsp;&nbsp;&nbsp;&nbsp;MacOS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;becomes&nbsp;7
+}
+</PRE>
+</BLOCKQUOTE>
+
+<P>
+
+<H2><A NAME="SECTION03114000000000000000">
+The OCTET STRING type</A>
+</H2>
+
+<P>
+This type models the sequence of 8-bit bytes. This may be used to
+transmit some opaque data or data serialized by other types of encoders
+(i.e. video file, photo picture, etc).
+
+<P>
+
+<H2><A NAME="SECTION03115000000000000000">
+The OBJECT IDENTIFIER type</A>
+</H2>
+
+<P>
+The OBJECT IDENTIFIER is used to represent the unique identifier of
+any object, starting from the very root of the registration tree.
+If your organization needs to uniquely identify something (a router,
+a room, a person, a standard, or whatever), you are encouraged to
+get your own identification subtree at <A HREF=http://www.iana.org/protocols/forms.htm>http://www.iana.org/protocols/forms.htm</A>.
+
+<P>
+For example, the very first ASN.1 module in this Chapter (RectangleModule1)
+has the following OBJECT IDENTIFIER: 1 3 6 1 4 1 9363 1 5 2 1 1.
+
+<P>
+
+<BLOCKQUOTE><PRE>
+ExampleOID&nbsp;::=&nbsp;OBJECT&nbsp;IDENTIFIER
+&nbsp;
+rectangleModule1-oid&nbsp;ExampleOID
+&nbsp;&nbsp;::=&nbsp;{&nbsp;1&nbsp;3&nbsp;6&nbsp;1&nbsp;4&nbsp;1&nbsp;9363&nbsp;1&nbsp;5&nbsp;2&nbsp;1&nbsp;1&nbsp;}
+&nbsp;
+--&nbsp;An&nbsp;identifier&nbsp;of&nbsp;the&nbsp;Internet.
+internet-id&nbsp;OBJECT&nbsp;IDENTIFIER
+&nbsp;&nbsp;::=&nbsp;{&nbsp;iso(1)&nbsp;identified-organization(3)
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dod(6)&nbsp;internet(1)&nbsp;}
+</PRE>
+</BLOCKQUOTE>
+As you see, names are optional.
+
+<P>
+
+<H2><A NAME="SECTION03116000000000000000">
+The RELATIVE-OID type</A>
+</H2>
+
+<P>
+The RELATIVE-OID type has the semantics of a subtree of an OBJECT
+IDENTIFIER. There may be no need to repeat the whole sequence of numbers
+from the root of the registration tree where the only thing of interest
+is some of the tree's subsequence.
+
+<P>
+
+<BLOCKQUOTE><PRE>
+this-document&nbsp;RELATIVE-OID&nbsp;::=&nbsp;{&nbsp;docs(2)&nbsp;usage(1)&nbsp;}
+&nbsp;
+this-example&nbsp;RELATIVE-OID&nbsp;::=&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;this-document&nbsp;assorted-examples(0)&nbsp;this-example(1)&nbsp;}
+</PRE>
+</BLOCKQUOTE>
+
+<P>
+
+<H1><A NAME="SECTION03120000000000000000">
+Some of the ASN.1 String Types</A>
+</H1>
+
+<P>
+
+<H2><A NAME="SECTION03121000000000000000">
+The IA5String type</A>
+</H2>
+
+<P>
+This is essentially the ASCII, with 128 character codes available
+(7 lower bits of an 8-bit byte).
+
+<P>
+
+<H2><A NAME="SECTION03122000000000000000">
+The UTF8String type</A>
+</H2>
+
+<P>
+This is the character string which encodes the full Unicode range
+(4 bytes) using multibyte character sequences.
+
+<P>
+
+<H2><A NAME="SECTION03123000000000000000">
+The NumericString type</A>
+</H2>
+
+<P>
+This type represents the character string with the alphabet consisting
+of numbers (''0'' to ''9'') and a space.
+
+<P>
+
+<H2><A NAME="SECTION03124000000000000000">
+The PrintableString type</A>
+</H2>
+
+<P>
+The character string with the following alphabet: space, ''<B>'</B>''
+(single quote), ''<B>(</B>'', ''<B>)</B>'', ''<B>+</B>'',
+''<B>,</B>'' (comma), ''<B>-</B>'', ''<B>.</B>'', ''<B>/</B>'',
+digits (''0'' to ''9''), ''<B>:</B>'', ''<B>=</B>'', ''<B>?</B>'',
+upper-case and lower-case letters (''A'' to ''Z'' and ''a''
+to ''z'').
+
+<P>
+
+<H2><A NAME="SECTION03125000000000000000">
+The VisibleString type</A>
+</H2>
+
+<P>
+The character string with the alphabet which is more or less a subset
+of ASCII between the space and the ''<B>~</B>''
+symbol (tilde).
+
+<P>
+Alternatively, the alphabet may be described as the PrintableString
+alphabet presented earlier, plus the following characters: ''<B>!</B>'',
+''<B>''</B>'', ''<B>#</B>'', ''<B>$</B>'', ''<B>%</B>'',
+''<B>&amp;</B>'', ''<B>*</B>'', ''<B>;</B>'', ''<B>&lt;</B>'',
+''<B>&gt;</B>'', ''<B>[</B>'', ''<B>&#92;</B>'',
+''<B>]</B>'', ''<B>&#94;</B>'', ''<B>_</B>'',
+''<B>`</B>'' (single left quote), ''<B>{</B>'', ''<B>|</B>'',
+''<B>}</B>'', ''<B>~</B>''.
+
+<P>
+
+<H1><A NAME="SECTION03130000000000000000">
+ASN.1 Constructed Types</A>
+</H1>
+
+<P>
+
+<H2><A NAME="SECTION03131000000000000000">
+The SEQUENCE type</A>
+</H2>
+
+<P>
+This is an ordered collection of other simple or constructed types.
+The SEQUENCE constructed type resembles the C ''struct'' statement.
+
+<P>
+
+<BLOCKQUOTE><PRE>
+Address&nbsp;::=&nbsp;SEQUENCE&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;The&nbsp;apartment&nbsp;number&nbsp;may&nbsp;be&nbsp;omitted
+&nbsp;&nbsp;&nbsp;&nbsp;apartmentNumber&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NumericString&nbsp;OPTIONAL,
+&nbsp;&nbsp;&nbsp;&nbsp;streetName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PrintableString,
+&nbsp;&nbsp;&nbsp;&nbsp;cityName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PrintableString,
+&nbsp;&nbsp;&nbsp;&nbsp;stateName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PrintableString,
+&nbsp;&nbsp;&nbsp;&nbsp;--&nbsp;This&nbsp;one&nbsp;may&nbsp;be&nbsp;omitted&nbsp;too
+&nbsp;&nbsp;&nbsp;&nbsp;zipNo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NumericString&nbsp;OPTIONAL
+}
+</PRE>
+</BLOCKQUOTE>
+
+<P>
+
+<H2><A NAME="SECTION03132000000000000000">
+The SET type</A>
+</H2>
+
+<P>
+This is a collection of other simple or constructed types. Ordering
+is not important. The data may arrive in the order which is different
+from the order of specification. Data is encoded in the order not
+necessarily corresponding to the order of specification.
+
+<P>
+
+<H2><A NAME="SECTION03133000000000000000">
+The CHOICE type</A>
+</H2>
+
+<P>
+This type is just a choice between the subtypes specified in it. The
+CHOICE type contains at most one of the subtypes specified, and it
+is always implicitly known which choice is being decoded or encoded.
+This one resembles the C ''union'' statement.
+
+<P>
+The following type defines a response code, which may be either an
+integer code or a boolean ''true''/''false'' code.
+
+<P>
+
+<BLOCKQUOTE><PRE>
+ResponseCode&nbsp;::=&nbsp;CHOICE&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;intCode&nbsp;&nbsp;&nbsp;&nbsp;INTEGER,
+&nbsp;&nbsp;&nbsp;&nbsp;boolCode&nbsp;&nbsp;&nbsp;BOOLEAN
+}
+</PRE>
+</BLOCKQUOTE>
+
+<P>
+
+<H2><A NAME="SECTION03134000000000000000">
+The SEQUENCE OF type</A>
+</H2>
+
+<P>
+This one is the list (array) of simple or constructed types:
+
+<P>
+
+<BLOCKQUOTE><PRE>
+--&nbsp;Example&nbsp;1
+ManyIntegers&nbsp;::=&nbsp;SEQUENCE&nbsp;OF&nbsp;INTEGER
+&nbsp;
+--&nbsp;Example&nbsp;2
+ManyRectangles&nbsp;::=&nbsp;SEQUENCE&nbsp;OF&nbsp;Rectangle
+&nbsp;
+--&nbsp;More&nbsp;complex&nbsp;example:
+--&nbsp;an&nbsp;array&nbsp;of&nbsp;structures&nbsp;defined&nbsp;in&nbsp;place.
+ManyCircles&nbsp;::=&nbsp;SEQUENCE&nbsp;OF&nbsp;SEQUENCE&nbsp;{
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;radius&nbsp;INTEGER
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
+</PRE>
+</BLOCKQUOTE>
+
+<P>
+
+<H2><A NAME="SECTION03135000000000000000">
+The SET OF type</A>
+</H2>
+
+<P>
+The SET OF type models the bag of structures. It resembles the SEQUENCE
+OF type, but the order is not important: i.e. the elements may arrive
+in the order which is not necessarily the same as the in-memory order
+on the remote machines.
+
+<P>
+
+<BLOCKQUOTE><PRE>
+--&nbsp;A&nbsp;set&nbsp;of&nbsp;structures&nbsp;defined&nbsp;elsewhere
+SetOfApples&nbsp;::&nbsp;SET&nbsp;OF&nbsp;Apple
+&nbsp;
+--&nbsp;Set&nbsp;of&nbsp;integers&nbsp;encoding&nbsp;the&nbsp;kind&nbsp;of&nbsp;a&nbsp;fruit
+FruitBag&nbsp;::=&nbsp;SET&nbsp;OF&nbsp;ENUMERATED&nbsp;{&nbsp;apple,&nbsp;orange&nbsp;}
+</PRE>
+</BLOCKQUOTE>
+ 
+<H2><A NAME="SECTION04000000000000000000">
 Bibliography</A>
 </H2><DL COMPACT><DD><P></P><DT><A NAME="ASN1C">ASN1C</A>
 <DD>The Open Source ASN.1 Compiler. <A HREF=http://lionet.info/asn1c>http://lionet.info/asn1c</A>
@@ -1674,57 +1732,45 @@ ISBN:0-12-6333361-0.
 <P>
 <BR><HR><H4>Footnotes</H4>
 <DL>
-<DT><A NAME="foot159">... supported</A><A
- HREF="asn1c-usage.html#tex2html1"><SUP>2.1</SUP></A></DT>
-<DD>C++ is ''supported'' too, as long as an class-based approach is
-not a definitive factor.
+<DT><A NAME="foot818">... given</A><A
+ HREF="asn1c-usage.html#tex2html1"><SUP>1.1</SUP></A></DT>
+<DD>Please look into Part par:ASN.1-Basics for a quick reference
+on how to understand the ASN.1 notation.
 
 </DD>
-<DT><A NAME="foot803">... this</A><A
- HREF="asn1c-usage.html#tex2html2"><SUP>2.2</SUP></A></DT>
+<DT><A NAME="foot819">... type</A><A
+ HREF="asn1c-usage.html#tex2html2"><SUP>1.2</SUP></A></DT>
 <DD><I>-fnative-types</I> compiler option is used to produce basic C <I>int</I>
 types instead of infinite width INTEGER_t structures. See <A HREF=#Table1>Table 1</A>.
 
 </DD>
-<DT><A NAME="foot166">... binary</A><A
- HREF="asn1c-usage.html#tex2html3"><SUP>2.3</SUP></A></DT>
-<DD>BER, CER and DER encodings are binary. However, the XER encoding is
-text (XML) based.
-
-</DD>
-<DT><A NAME="foot804">...asn1c</A><A
- HREF="asn1c-usage.html#tex2html4"><SUP>3.1</SUP></A></DT>
+<DT><A NAME="foot820">...asn1c</A><A
+ HREF="asn1c-usage.html#tex2html3"><SUP>1.3</SUP></A></DT>
 <DD>The 1 symbol in asn<B>1</B>c is a digit, not an ''ell'' letter.
 
 </DD>
-<DT><A NAME="foot805">... specification</A><A
- HREF="asn1c-usage.html#tex2html5"><SUP>3.2</SUP></A></DT>
+<DT><A NAME="foot821">... module</A><A
+ HREF="asn1c-usage.html#tex2html4"><SUP>1.4</SUP></A></DT>
 <DD>This is probably <B>not</B> what you want to try out right now -
-read through the rest of this chapter to find out about <B>-P</B>
-and <B>-R</B> options.
-
-</DD>
-<DT><A NAME="foot811">...that&nbsp;simple</A><A
- HREF="asn1c-usage.html#tex2html7"><SUP>4.1</SUP></A></DT>
-<DD>Provided that you've also created a .c file with the <I>int main()</I>
-routine.
+read through the rest of this chapter and check the <A HREF=#Table1>Table 1</A>
+to find out about <B>-P</B> and <B>-R</B> options.
 
 </DD>
-<DT><A NAME="foot253">...restartable</A><A
- HREF="asn1c-usage.html#tex2html8"><SUP>4.2</SUP></A></DT>
+<DT><A NAME="foot156">...restartable</A><A
+ HREF="asn1c-usage.html#tex2html6"><SUP>2.1</SUP></A></DT>
 <DD>Restartable means that if the decoder encounters the end of the buffer,
 it will fail, but may later be invoked again with the rest of the
 buffer to continue decoding.
 
 </DD>
-<DT><A NAME="foot322">... encoding</A><A
- HREF="asn1c-usage.html#tex2html9"><SUP>4.3</SUP></A></DT>
+<DT><A NAME="foot225">... encoding</A><A
+ HREF="asn1c-usage.html#tex2html7"><SUP>2.2</SUP></A></DT>
 <DD>It is actually faster too: the encoder might skip over some computations
 which aren't important for the size determination.
 
 </DD>
-<DT><A NAME="foot876">... type</A><A
- HREF="asn1c-usage.html#tex2html10"><SUP>6.1</SUP></A></DT>
+<DT><A NAME="foot898">... type</A><A
+ HREF="asn1c-usage.html#tex2html8"><SUP>4.1</SUP></A></DT>
 <DD>Placing the constraint checking code <I>before</I> encoding helps
 to make sure you know the data is correct and within constraints before
 sharing the data with anyone else.
@@ -1738,7 +1784,7 @@ the application got the valid contents before making use of it.
 </DL><BR><HR>
 <ADDRESS>
 Lev Walkin
-2005-02-02
+2005-02-21
 </ADDRESS>
 </BODY>
 </HTML>
diff --git a/doc/asn1c-usage.lyx b/doc/asn1c-usage.lyx
index 8e43df2a..5efe9d6a 100644
--- a/doc/asn1c-usage.lyx
+++ b/doc/asn1c-usage.lyx
@@ -69,7 +69,7 @@ status Open
 \layout Standard
 
 \backslash 
-lhead{Document describes 
+lhead{This document describes 
 \backslash 
 href{http://lionet.info/asn1c}{asn1c-0.9.9}}
 \layout Standard
@@ -109,17 +109,17 @@ Introduction to the ASN.1 Compiler
 \layout Standard
 
 The purpose of the ASN.1 compiler, of which this document is part, is to
- convert the ASN.1 specifications into some other target language.
+ convert the specifications in ASN.1 notation into some other language.
  At this moment, only C and C++ target languages are supported, the latter
- in upward compatibility mode.
+ is in upward compatibility mode.
 \layout Standard
 
 The compiler reads the specification and emits a series of target language
  structures (C's structs, unions, enums) describing the corresponding ASN.1
  types.
- Also, it creates the code which allows automatic serialization and deserializat
-ion of these structures using several standardized encoding rules (BER,
- DER, XER).
+ The compiler also creates the code which allows automatic serialization
+ and deserialization of these structures using several standardized encoding
+ rules (BER, DER, XER).
 \layout Standard
 
 For example, suppose the following ASN.1 module is given
@@ -249,7 +249,7 @@ This is probably
 not
 \series default 
  what you want to try out right now -- read through the rest of this chapter
- and check the table 
+ and check the Table 
 \begin_inset LatexCommand \vref{cap:asn1c-cmdopts}
 
 \end_inset 
@@ -959,9 +959,9 @@ Invoking the helper code
 
 \layout Standard
 
-First of all, you should to include one or more header files into your applicati
-on.
- For our Rectangle module, including the Rectangle.h file is enough:
+First of all, you should include one or more header files into your application.
+ Typically, it is enough to include the header file of the main PDU type.
+ For our Rectangle module, including the Rectangle.h file is sufficient:
 \layout LyX-Code
 
 #include <Rectangle.h>
@@ -990,17 +990,21 @@ This code defines a
 rect
 \emph default 
  pointer which points to the Rectangle_t structure which needs to be freed.
- The second line invokes the generic free_struct routine created specifically
- for this Rectangle_t structure.
+ The second line invokes the generic 
+\emph on 
+free_struct()
+\emph default 
+ routine created specifically for this Rectangle_t structure.
  The 
 \emph on 
 asn_DEF_Rectangle
 \emph default 
- is the type descriptor, which holds a collection of generic routines to
- deal with the Rectangle_t structure.
+ is the type descriptor, which holds a collection of routines to deal with
+ the Rectangle_t structure.
 \layout Standard
 
-There are several generic functions available:
+The following member functions of the asn_DEF_Rectangle type descriptor
+ are of interest:
 \layout Description
 
 ber_decoder This is the generic 
@@ -1113,13 +1117,15 @@ Decoding BER
 \layout Standard
 
 The Basic Encoding Rules describe the most widely used (by the ASN.1 community)
- way how the structure can be encoded and decoded.
+ way to encode and decode a given structure in a machine-independent way.
  Several other encoding rules (CER, DER) define a more restrictive versions
  of BER, so the generic BER parser is also capable of decoding the data
  encoded by CER and DER encoders.
  The opposite is not true.
 \layout Standard
 
+
+\emph on 
 The ASN.1 compiler provides the generic BER decoder which is implicitly capable
  of decoding BER, CER and DER encoded data.
 \layout Standard
@@ -1142,16 +1148,17 @@ You may concatenate these buffers and feed the BER decoder with 300 bytes
 You may feed it the first buffer of 100 bytes of data, realize that the
  ber_decoder consumed only 95 bytes from it and later feed the decoder with
  205 bytes buffer which consists of 5 unprocessed bytes from the first buffer
- and the latter 200 bytes from the second buffer.
+ and the additional 200 bytes from the second buffer.
 \layout Standard
 
-This is not as convenient as it could be (like, the BER encoder would consume
+This is not as convenient as it could be (like, the BER encoder could consume
  the whole 100 bytes and keep these 5 bytes in some temporary storage),
- but in case of stream-based processing it might actually be OK.
+ but in case of existing stream based processing it might actually fit well
+ into existing algorithm.
  Suggestions are welcome.
 \layout Standard
 
-Here is the simplest example which shows how to invoke a BER decoder.
+Here is the simplest example of BER decoding.
 \layout LyX-Code
 
 Rectangle_t *
@@ -1226,35 +1233,35 @@ The code above defines a function,
 \emph on 
 simple_deserializer
 \emph default 
-, which takes a buffer and its length and expected to return a pointer to
- the Rectangle_t structure.
+, which takes a buffer and its length and is expected to return a pointer
+ to the Rectangle_t structure.
  Inside, it tries to convert the bytes passed into the target structure
- (rect) using the generic BER decoder and returns the rect pointer afterwards.
+ (rect) using the BER decoder and returns the rect pointer afterwards.
  If the structure cannot be deserialized, it frees the memory which might
  be left allocated by the unfinished 
 \emph on 
 ber_decoder
 \emph default 
  routine and returns 0 (no data).
- This
+ (This
 \series bold 
  freeing is necessary
 \series default 
  because the ber_decoder is a restartable procedure, and may fail just because
- there is more data needs to be provided before decoding could be finalized.
+ there is more data needs to be provided before decoding could be finalized).
  The code above obviously does not take into account the way the 
 \emph on 
-ber_decoder
+ber_decoder()
 \emph default 
  failed, so the freeing is necessary because the part of the buffer may
  already be decoded into the structure by the time something goes wrong.
 \layout Standard
 
-A little less wordy would be to invoke a 
+A little less wordy would be to invoke a globally available 
 \emph on 
-ber_decode
+ber_decode()
 \emph default 
- function instead of dereferencing the asn_DEF_Rectangle:
+ function instead of dereferencing the asn_DEF_Rectangle type descriptor:
 \layout LyX-Code
 
 rval = ber_decode(0, &asn_DEF_Rectangle, (void **)&rect,
@@ -1623,6 +1630,15 @@ XML_to_Rectangle(const void *buffer, size_t buf_size) {
 The decoder takes both BASIC-XER and CANONICAL-XER encodings.
 \layout Standard
 
+The decoder shares its data consumption properties with BER decoder; please
+ read the Section 
+\begin_inset LatexCommand \vref{sub:Decoding-BER}
+
+\end_inset 
+
+ to know more.
+\layout Standard
+
 Please look into xer_decoder.h for the precise definition of xer_decode()
  and related types.
 \layout Subsection
@@ -1738,14 +1754,14 @@ In this example, the application programmer defined a custom structure with
  of the Rectangle_t structure.
  If the freeing is necessary, the usual procedure of freeing everything
  must not be applied to the &rect pointer itself, because it does not point
- to the memory block directly allocated by memory allocation routine, but
- instead lies within such a block allocated for my_figure structure.
+ to the memory block directly allocated by the memory allocation routine,
+ but instead lies within a block allocated for the my_figure structure.
 \layout Standard
 
 To solve this problem, the free_struct routine has the additional argument
- (besides the intuitive type descriptor and target structure pointers),
- which is the flag specifying whether the outer pointer itself must be freed
- (0, default) or it should be left intact (non-zero value).
+ (besides the obvious type descriptor and target structure pointers), which
+ is the flag specifying whether the outer pointer itself must be freed (0,
+ default) or it should be left intact (non-zero value).
 \layout LyX-Code
 
 
diff --git a/doc/asn1c-usage.pdf b/doc/asn1c-usage.pdf
index 9ff387ee8b0380d4c98bda6bd16def845ff1f463..0896ef1f44fe54d6a366bb85a48ccfdcb2dcd527 100644
GIT binary patch
delta 39571
zcmZU(19WA<(=Qt1BsccNwr$%sC$^mv+b4E1u_m@{PHfwna9;l3ckg}g-nZ6Xt9N%*
z*RJZS)xGQ2b^Z=}91K?{hX&3CB4VKdxuYQiJwDF0E7VQtro(a8$xD&|<;4lTMzCmT
z5S0z99XCDcgTi-a#&T9QkQWRMF3NV${gm;9(4Hu3W`}TY`7vwy=un87Vqcu3fK%>}
zE`5qu->qU*T-gc#yY3nfqpcd7Xt7USjx%1P$cPX6l4{Z6XL%Plu|O=OAE%0wNsWX+
zCMg81nbP8##&nC(F!I=f3Rnd~p2c)R%DBf2I)h^ou0_H)7VM5m^|#_TnG#N!%W#lS
zuPtEeIH0L~jvG65J+4zb^8r3z*(`vPoxiV?9*}!gCaa)^G;2OrF$eP(ql!ZWcaagQ
z5Q#8g<2gwzux2hZo~Er67-@OOuI|B@L&I&qMPDr@jn2(!`S0JXXn6m_^yr_g#HL^*
z7euaU3u>_|2t@YoKSbKw`In$d^hE+r7DiSU9%4>z4n`I>7GgGLp6~X%&%?vW%$1%X
z2`<*Sh4D-e!Nr=siw#Z#)YeJ(BZ(4_Z?xCy1$EtqY*fJC$C`L#0(mJO1qGLxxs8jE
zVDDEKMEy@d!++IqgDtu!b=hBiMN7j#3)$W8?=Pe$F|>#%^bwLmdKZtf)Ej)`i=}8h
zG)C?y>KQCf0o1?bkpzxIyRRNk4|0S&Q&c8nxmN}WXhX5$CZ~2Uz?-cqGu`F}Ltpw^
zgO0B@{~Ba?v|&`jdje#ym{8jLi=vtpc8^K_R@=sgxs&w;zXVm}ysd4NVZ?;S&>`pQ
z`3beuBd{`OKPr-_G=K>XYQ3_X-Y_-%R%KOHg9@mR;pWlQ){`R^@0#9nuQOqV@a0$D
z$5+Nxe3qE+6kc~5kjZmP2CF9TY^kqip+lqWAVB7<6bx|qX|DjOwR}Y!HJ_}S3>B2z
zQ*p@nzWZ*MUKAIIda^kU_yEwcGh&)&+tBSx!YnAa{sEQp%P6QrNY`LLG;zC~i6l2;
zhZ-MgGTGK7KC2fgmWvQ?HjMS!23J9oESmnlIX|B#bM>tNcC3fkJ#7|o_+%|xxhJ(L
zXla;lO?)1V*PK{ybgEh?nvY0yoChc*MTrc*Lu?6IdM^j8$d$PuXB8H!CyK+Nq$edN
z2te5F7&T=rv2Jnstm;Nby*?FbV&7b+G#`uGoSNs#G#2~8WX9QpyV@eS7S;5BcH$`(
zwiz<r7;hs319pu*n~(x=W<u+E77M0Hk3FDy!!yT<_&A)v40vKUyX`zUv`e{9LAorf
ztEn8qn&$O4FLqFU4)5K`052Hi_Ij+#8%c03_rNZZmH6^bNV*m@zu)t&fXE+CWZd`f
zIKjj0vy&VMo9~j2B?fwVeG7cuam(@#ml4eZs?;06K|(9e9SzEr@@Z3cz{qmmAFC@9
zxJTkh_;Gfw7>0cnx8}<T_G?Onxe_5Q&-SD6mq)*cnYR0wfX9<#g6%OKpkGu$iL*x(
zsCPjvRnAp^SelFq+(k=wBgn6t{Tay}F3<{@>@*P|i$y(S(@0P$3Wke;CWH)K>>>Xy
zE^H4B1peALj_L}M#fII1mqCM{>V^E35h<;gH!~-S6uwK=q(jm`j-c&dn_nkVPNhbz
zSJie4Z#IsG1szV$uZBW{Ad><`JlZD=k2WWQGC>nnR0k^}vpr70Jx7wRw<dfWA?Pza
zd69i__2kIan&<@@^1nY!hnDj1@pkuL#1;T5Ckg&6&)n1DXxr-g^mlb_o^R}367iR1
zTMFlyxO9Tzp@uBF$i6yGbx}bb{PP`Jy?A(sA@iX|N3PuEzJJ??Ue<cT%1iJ1esD*l
zUI?)d19vau%vUb|W&SX8eK0kAFRV-)O8CQd=$3M$P{{mBXi*uNV&E`<x7ZuU@`DLD
zOWYD3xh_`?CBex~=f78Fb7?v=YDH9_6%K`V`9}ddqK9r5Nz4+lhz;DTq6>A69>Q1C
zxQ5tt0$>+UCEa(xvfYKv&Ms%wJzW;d2t%R(F`)DJUx?Gtt{sXlUJ8^#clyYl8~EIT
zV20qCOEW(2`e$9fDim*c9wU^nQV}U|?`$(k>|hMtY1(dHos>M5(J=Og8LeFW(f#S`
z*Ue?n{?h~%e^jn7&U+|jl&h`^p$OU36u;3{?RLDpjZ?u%q|BvI+a{PkjV5IYY7`D&
z5DqY$IEASL^^+C=DGPU=oZ%vIPnlj(qvNd;P*0F!f3sr@2uAWQ^+ha#`+E-zb!uBb
zBCb>4j+~NpkjQdTRf@mBH6(?@9LI6I_6a{G)rCl)=qD^#qgOF$<mw+DE1rYZUtUx-
z5Y2N@ttXtmC1#}tFrHgmGZr}uLu%pv+FIMDSjzux(DH5yI?t^xG-1s%W^iH8oeaS?
z(z-OS;j1mdF2GyYLOK(u^Hc}IvBJH<5!I3_O7bA9hH~GOZySK)_sS?eb+L_Nft$=t
z{EhZd7xFqyOQnJ0p95f3yT_fQwR>OmPblLW-?^@rZ(}Y0wkR^GW}QI9Dg{+AV-U{X
z7CgUqE#o{ES-U@p)?Z&1RcNaI&W4E7D-{IVC?wy5<H*U1hDO~Ms*C`&!2XQuSu>h-
z#_tsgov<a8q8{ttiouM-sLo`LaeOa}9hMxrBJB|hrxK<Ums2L0;=>#VJNBNbvXCrc
zp8=wQ)gJDgf##q8UXbXw2lf74pH&F~hG~f=cp`B!OIze(f5ugpD{$_CLALP)EKKPv
z8F}m<FjyicA)^UsBqAaf@RJ_^4yStQe-Na;(YB5L(j(B|-2Z(%>1@PrjG_AH|3-P1
zftd0zTJ3@o0UNDvY?Qv#`F)R4{Ss8fO*Vj0k@!ck$tZtuX$yl!)@+p7_^CvD$(_$&
zi3|(>-;k(yj)Y2AWO5`tF4O%dff2vS#f|4c5>y@~4(g}7|I1tVeoRV9l5RDTW$f~X
zQTq6K>yy&&orryTVA>FU8o+P*YlCQqzk0`C7h3h9#JEaW%Fp|s$)`2u{n2Re=f&0A
z*MTg(kaqBsEcs-D!^Z(1pVz}AEam0x)hJMK^B?3T@#FQD4|ne|iJJ3UQFPw%hWa0P
zbQNjZ&6g_Sy{1{Z{`Bek^>u4acYq|V!LfbPQ<%Y(r$ZtaP>;*UPFHH>kL1OUmMBw9
z3)2PFKZUh5m6g`fE}@pN&w}dr5eNLrYS?^#<>ifi<=x&6F3CWfAQbwgtoS$mETxj@
zbbDv37$kKaBT@Pq|Klu6k5x?jOpPNV3ELA#!s~jvOY*8#58;W7{ubtQ?)BsOJMLpX
zJ|CS+%E?}RAWxOXj90VGeYKDI=sW#RsynJ%1Syk{E2C@Yc0LM4#DHQKDUL%-6fLEG
zHSH8kX*4!O05aKu0lu(Atm}oANs+A6Ou7(}9DY*I^;`AT)ouHwr$>r=^B6&|N?l;C
zdMp)9z3;<nHd&-P0~g(R`e?&?a?CU!Q@xm^DLk|iNNZdE@H2gEBAnXsIidjqoqIDQ
zWJ4giYEUJS5?}0!)sB0Un?xO>fgA~&cRA9`#56Z-4DN$V7G4Q6cFa#!oPHRoI9G>)
zKAtSO;`kmdP29}6@xzsT<tHGkBBPOe9+HR*L354ofhKfxJhQECgwG>vgLR(0fmA}D
z7}`=4NDk_2R1ttq^KTSbcO21`2{XI>Sx7cap5UN8uLe!lkcl~4O`0ZMrNf<`&YD+Q
z-<63gFwJ2dLcoNJYYps3Ij&a>(Y~lEpy^YQ#4+q<LkZ7Pbg>Yonm5I-%Cbfmh_^ti
z|Gg7(dg&MUH&S2y-<nS-?t1T(8dKlefwl?+P_j^=&o@NQ8Olyi=1PULYRZ)VFW!5a
zt0h(6p&*?tA2>N?&FD%OJufH>zM-{}9$dueG6)p`rVz&P-E3v!Gj4-W8Bv5+s;~My
zy9}ahJ-Y|q#0<LY&0!}NXY(<x>{ZC0EXQ>h;d+G}vNkRa*KFswtGU}|fep^*FQMQf
zFiXPuat5U<`vEgKaJ%2MJGT)9^@p<;Fic`V6q7gl*qE_?CXdc`3!GtJ8d#rQ(sO!g
zuZaG8oW!<sKxLI~X$97zgf7s=KXW59D(T;PWb>)gDFycecIpJTl~Xrq`P)7I!ICxR
z8HFqz{9_0KU+@UVXarLZjK!CJ7BeRq&=o#YbZ}<#(@Z`AIp^t0(G1u+`q_WSuP7v2
zou=0*{o*1Z-zB@DwNm?UwA~jC%lW2vH_P+(Raqx1OU4G;+)gEouC=0CqNO%%{yz5Z
zJSVoDNwF^9o3Z<|gmjka%LxjlN!q5~F6#=}!`Zc=_ZsgG8_CL;Qz2fNw4`z#2)CN9
z)VXaSIVO|IOQ)?&Sui&MwRBMLQle<Ka&NF#m3%_bA8O#4ij0_W%cGg8cdaPQijMPl
zfyF8(KeuIb4KYl813$Wjw>|5`i<{kE$s|sJn%i^5$r|ZZrgA%w0s1F+ho6vL9L{Da
zgOV$}-X35T4=n)EF0epd-kISPnBDjDak`TVUMFR0&o-Vj(())17Fi2iE<&w|rT^Es
z((#IE9Igskpiy>olV~ms%nVsP3a$^cjO@W%aFbY-suwO?Jn4gx0Iy+bDvPotc$G5g
zsE?0jkfN;C-f}58v)UVeFFjXp?PdwI6!RuX++btJe$BuB*Fw!|h-o4baAUcNJH8fr
zpQC1!hvDF;S1Y)KMUKT`npwiju^|rr#)PeNoheBp^--f2S9M9K*LRoZ6H{x%^jMZc
z%0hES5s)~K*EXh)5E(XgeG^mrkiWL0=4y9!YKJzb2g1?k)sy%&QSoB{{@$=SGq!ZQ
z5!RPu1vw8%pbjR#wmhN>_;}vSYBBtsahzRR1wv&dDco)RSq4A5ujmu8{bTxveDY5x
z4?zU<b(w+n0Sz=u*hAz->1`MNuNoeSjK8*oVMtAgR1*-(x(!rM8RnnEhVw8m1o%h=
znnW)W8~6bG3?Kf-Zc2irf|;gdYpddd1!=V8`?)lCVE=ValEpC_a6wj*Jp*n0MxcYq
zZ+p$*Q2Xhq&}EZ1RM=2n(Y4V~{4R==<}+ZIfTaz-EAKcv=*1+ylhmRj*>%^w6k&H|
zSGW{&5*{Vt{k5;DSiiH@@cZeg{ZdQfQgVMCHC}ejiQjZ-tWp{=_<VJB@^#<49xbiJ
zQ%exgQ-LEPw^;+GOPm;?(R#KzMkn?92mW<xYFFG4Tseyx9Nba({R=gmqxZgni<ERW
z`Ys0I?MgZ_C~5wK4f{^M00D#z{ifW3!Clj6PaOx{!&1V0T|RJHqu&??owm{Lo3`Lq
zkpZ2KI6^?{Jf^Io0$DV*;N}ERftH4(v$nn@rFPcgoU{hCq}K;g`4|tZw=j2I48W7a
znyg{otZSq`ydM?~LD@i&B$QKg1v++&&l^}#GO{zTw_WjWfb<bNU5tu)$Wob02IfA3
zS7ub+-<IhQ{^nvAzJ6>;Q?hgmtQL#;Jn9g%E&Q>MvsE+W5;@L4io}qw_}j3U)ukfw
zn8=28^m+w6{uoF(8zY)((I|8}MtXgHf1*8}4DPVI^xb0F%&tnzbF$)nCMrGbEqomq
z2v@vU_jxK5&~PKuT86aqifx%~N=Z_PNBDIe;W<(zgDWW?UBxqiO-%)7_Rsa@!qKlD
zdRWQRYGCo_T`Y^GRRPvJU!f@$<-&ATr_pslPueQbWB^TYoNao6yFQ9x&NX9jY)?QB
z@C*wx8oHbaA(>1e8rR|cV0u$quo$qYuGR!WjhuLiD^VURcH{0Wp~yQVE_f~7=4jJ$
zq_)QAC&6&=oHI158ZM!cN#t39?JsmLURnvuqK<W}ghwxP^xA)Ao3$9FZ2fnqFr!Od
z^A`_L$sa9a(2!LsHL>^$&2QVh+uVy)qY4)>jAoj;bK23j0rI?gx}XFrIh^A<6NP92
zDm)S&S|j7}3CVqGaYhNyyTb#6G1YYRH0in4zwNxxt2Sq|XLtn}assfooe;$q8Juo4
zq?j{i1M*<futv#cfYryq^?bRUR|KPGBJTnFBe8Qn2!O9{6VS9s0$AKYUUzn;D3E@=
z_$az_kFVfQC9S;3cJHMC9VMy9qD>m2h2+^VlEtM-UfpDDi7*t3CGoU>YKZ;E?GEm*
zt=8e9))-$T`y_d-;sHd7jI{zIfOrjgSDqW5aQ_)m#!@Bc)_$y~Vo_LEOgq#$c?o2#
zt1!p8)^Tf%520BBHq1tIZ9)i49%e=!W=>)j7EVSsc1~heW>!XSP7tG>1ZYcF5R>P-
z!~Xvg*}nU%oQ+I+gSe1f96TWApl{H_-f@Ey<?GtW#JG<bnPZZxyGAdlSuXr(aIX2f
ztOX7uDn4vHnQDCc{>F2Z%zV6|kwn;yJmF=eGeRncB0{JhgWpsph4B};sp!b0U+?ZD
ztoEBd34Y8%^e}`JHr5L7A-#OsMN%MF_VA=0CKH9FN^x5DRRM)Ox!k@}I}K0}*3omV
zkn75ZL5y&0X=R#ky;vt_s4a?Vg;<Ybq5*h5@fMWvo=dWyo&aPPIoz-SQq!TF9KlVe
z#CPR{RwN!uZ<27I^xr(mKJ0GD-WI%G=<M;S5p<P!tKpP|GO48{hZKm>DraaDw3=@`
z6;NP`G?qAOYA^|dY4xkQ76U6BR`9EWPa9^c$lyu^nyGZ(uCteCr0dA(G)b8m0KHC(
zbc^1&{$d#APJE4ng|rXVOxamMZz-_Z8UrC^kn);Ki?o0c>{9?QF_fGbZ#G(WI)u2#
zBZs@I-zsXH>}3|$n&LHn5X`zVxWY1OoO1^Abz=kN`RDKa&Gp58Z6Mvjt_OwaMbDP6
z+Yl`1Mdx$Z{5pGIJG0^wb<NQ}JO7M0@XE@RS*7fde#(9HN;ceshDl-TUnBsFE1TrR
zpVO96C*@SmoP?O|r(4O-&{*x9aAiI!@D>YE=LzaUsF(vQ<zNSYt|9*5k5B8v=?ib!
zU?uva`p@W;{f5HRD&RazTrwOsAY^bIdCPfxmm#jRN8tFg-o4R#v89xcy*Y;C+G@t*
zjh7dmiG{#Ad_fcj7oc}*<xfKNSxAMN2#r>#2F4aPUR6DvqnuGEI*PvyMf^@hoj+LD
zIJt2@CsqWGX6#>Ta@$7tKmcEd3+^{MgQ4gvMVG0T+Dw-O1w<YdI2?!Wv}bmM%Z&C4
zOlek-n&He?CA`2_xUurG`XT@6Xl|l0F!hP<zlC%G_-jlMjEV`K61P8IZf6|Q-!HWG
z706-g?OE#1Dw{Z$tFxbUH3dtATpnw0EALrTeC?wpNW5-2zO<l1YVvmP{_s!Ml6=?Z
z%!}~R)Ra<l7Kof-EB+-<G_p!}BNXTj(8`<cuI+h$I(~LYtP6;9Zu{}^F(CH!85?6f
zK9L!UzSKh;hVK!rg-xqPMUQ%tDtB9amO;-^tAS%dPV<LK#(CmrWgkhEcga3jZXOK=
zi(HB&AG=f1oPC*6#Bb~EiU#kvom{pf48vH!Oc+Q!11M7!N5lK0$Q@7Y0A>1IGK#$|
zB2HFyA2acQ1S5NxIp<P-n;3`KOk>%h#jUktNRQyg0};95F<>X8qF<n`@7}wQJR(oR
z8atXH3~|PX+ls%z8%(Uviklhx<aiatQ^4V<uxv)77lTa6)C%Q<0zLebTLH<F4zdx@
zqCG182z)+GO<5!#DFKgX;Y>DVdyo+qep}2vI@`pxIxI#c5US7=^qDYR_&Lqv!~44c
z0OeRqJXTu)h#=0qDXW|~MCvlJ14rvYk(kPFAVeuEbTny*E+1{!`J}?jB@KNR(aNxi
z;~o&jjlUj3fi%<rY=0!wIxF{YU*1$;{DCSL1A4lKedR%#66)x--ig{^Fs;vJiKN7B
z8E;aP)L|%iR=}dt%b-yk45L*rg_IoVBxLwG223DDjOD>L2hVysRdGT;EuwdmT*@z;
zJn`nWZ?hbW@7mK-`fxEWnx%V0DRpK<KdTOpz`OCNMP7WTU5&mISM_(SQJLyy8<{W%
zz`dO@pHa8*zi{-+Sd?7_8P=(~OQxmtnDWuLYtr6%mShxa({4HPq)*4kki)}7pg1gu
zKiSnG%xlfrc*}N-2d9ut@B{<cu4`B_Sgt&0*`EyPxre05LhD?~{?)s9CV2C6@!iFt
z@pfeJ9C{k;ZmHm*7s>KU2hQm53#|b{Kz=<Op8K8wDaB<T@R~KeQAlcLM-@R{FrHZr
zX%_HyQuZO$a=MeN_GPk`m^EIkBg14nk8{%b*wHiXlP*F0*#|uE@IkMlIkCe)4~}Lp
zq;sS-$imH%a5-ueszVCjzi55T!>PU4`Mvk%;P^LKxA%&mBeFUCtVFkVBRJ?aV4gHr
zEfx_rFup$gu{umPbJyik4bB{-onJ5?Nr6X}i6rH2wq|N9#t5xjK#({GNwd<KOY2i(
zid2_Ff>?#K1JY3f9i{a^;num)0x~$15u~6NP4e#$pi!rv?T!e2;d~HG-{uiS#C9~F
zhhDW!E6Faf5XkB1CW$u{Ems7seMyTZd>SN;jSf(WfW_Kn@>1*IU*7MkZ5Q_@(6jLk
zJw8u+94y_U5hZL&lq)ok%1+~ialQKRthFbo_=O8v_f`xPYDsM_xb0Bj>~iSNxMyH{
zrZs8t!=<Cu1DnW-R4j%|y;itQx1e~xBoLFo3N{NDGb1M#3o$DX>-YTtD=`Z<8zT!R
z8;FIN9MtJ=jKR*y$n|}qe%~4}|EJ~PV&vomu_UmA{*s}B8i9q7-vc1#6bx_{5K|z2
zx*r5M9O$A68&n?X49*VfPeF&|;b8x7$VS&bVS^j#YuhL(0cp;QVf=p5KRZ*=)A!UP
z#slee?^)Rk-`teF-nFH%(Y5zWI?3e&Yj&Tx?=+55LdH*A6}1ZNYe-f+h)Cj&R+iLg
z%qx{>2dat+=j}DlI63au+GC^x(e}rqA#~LrC9-CpRRtUYyMIUU?O!j0J3t?zXds~h
z&U?LVAe-vur_00Z-q)lLnftB`uzOx*_w(Q)LP<z%WsvDby<G?4=7P#d`Qp0ONC@~B
zZU_9G>jimB-5uqPRuQ{d#bjTqLf8JM-3fbD{j%UKSe*NQ40V?k{;bs$d-?40pB;rv
zE#>$V%CP$ba-An_#Y5h#ip_0VIbhOX=M<zv!OIw!G)g3XtrlOgR4TQsj<I@@F3-AH
zkM_drW9y0lWVhQ|tMwv3UTon%m(yuu*GbjXg*Q>WJvqpw;6C6RCA(^LKT^U<G<u{t
z=<{#YYOaPDMT_Qq8IfQso7WPW;rIt@x~qOZ>5?-arL8OI<v%>@KR9VRQ~*WwD-4<K
zRa!7XccTR@*5!s*<$iwF3Ly{63-5l+I%bzsA^kbFjg4&KAr?BKuS<vaDybj=fSQo}
zfJU*Xkxi#T09-cU-&^N|dN$#jo0e3y6X^nWPtI6uAhYy4YuQPpbsEJ;!M!jcwN<l#
zxsnCFCbTh{Zg)}TFI^0N3!r%+X$~BQFh!As0Ks%a8!8#bNkR!vOu{by(4B3$6G=xr
zKt5#QOJ5SY0&AFcT>Tsly%+_uA{3rBDUYru*W~DjDVQej!w`&V-?wK>f3dw&;hk^z
z;fo7wLn1Br!2^nk`Wqgn&rKg>hxxIqAMFS?1hPj<o4u?59II!K08`{OS6S~GM&?yy
z0K(AC*3-IHH?vrlirpKuLPUI&C*ka&l{B1e%3zJ+OX}xawW-ezJppYSbNeD%!(yIX
z`2p{bd)LPY=41Mr$hsW0goX~z`^ph-@K$xv!XXr3)0h0meN@Ul@kOce&G|6n9JeNw
z3JG>Tev;Mrf6JrfffXOjss5RZ4-@Q@XcVy&F2v680mX{__Fft~rMg%GrsjK6v;B4{
zl#^Mk|5=`25`X9MmansZ9PgG%xnTz2$A#qA=mh6e)FTB@s#@-rF{KiV79S=XTPqOK
z<;n#EY}vGfXo5i|mK7ZI^OB+`5ox{Vx5k<Y8l7e9V~q7cge$bk7z4xMV#h<@${FK%
zqq&*Iz^@t+E>b>>e;oYcGXNxWdr5<3K2oiqE@Wz?a=AQ$ZBsShQTiS1k~O>O@f1A-
z;jzKs^_+gPIdiM0)9S!|B+fZOi%)bEu8Sh-RXkfO)~Dvk-&-5<&1Xr|`o&_JNED@7
ztq=pm*ONIw!!7wndKM@|(Ty`1eK*y<kx;DPG?VI+MN-xDvf}7L@XAq6I%=glSX`z}
zv1lTfuz|*t)Xv{wf%Y91_ub<_zu77@#$CjmGmBtMK;)pro;+)+fRkGZku*!9e?-Gd
zHnZ@<gsv8wdJs>uZLF5DVhd#VE4ai?M4!iOL?6)Nm=@5$V_~irXijJdhvjw{v4?{7
zr7d?AH17y6O^;_>qDL@DU<FLucdM*Immi>ONK>ih&O?$gY!Xu@O(+&x$RXND2jR+C
z{gCX-WTto%8cbmh0#i6&8Au^qTVfub=SH0S&wJyA$wZO(kJ87Z&s1h}oh3$j9klQG
zcmD>jJG2)X5!A4T<8T;Ag(G3`&&{DuQ4J)(q(T-HIq*Age)6eFfqUqL#RL;ftKar%
zM1r3_3Nu?W74>c8PU72l*ZJb>_-aRh<B)5|Rp^}`(s4JB3D*T~agIe8DpKu&TjOPq
z^f|H`Z_F}64PJ`wqQUhU13d^K@h_Euh}GATLE-XZ%)NHm0))2*>b{+og2Daag)Zw(
zRH&VK4K@{!5e<;;$&KK--kPjI&xC*%0Crzx$Y42=DJAFSlw}C^)Lb#PL_aQk*e&4-
z>+K8!085{+5xWx1M5cLSe)SY;LdwF+Vd~ni;B6*cM0pKw|NT)sNNEZcE#)7O2m3Wa
zp?wX@{hgIf&G&w{s`vcT&GM&dY~gQ?f-po9M8)5{eB%F!oQ#9SRLBk*u<}Hdy8*kA
zHF#Xzbn?nEB{PA<w#!SX0D90$ig~5^Jeele`F=$sBxQEAxk9Fe&SvC1>mTTabnAP-
zAA`tRF@nW{rd$aKv)V!fFg;+<Trcs)yu3N`91>Fd0^}N_Ruzwy90?@5Z>H{*eax{s
z2Nr3;Q`cy*T~FC^EoZonQ<fI8TAA}Kv}m^M<8bMIT_ep$Y#=1qoK_MJ&Jl+t1Q`F4
zOUXi?R$<4nJo8ei6sIrtqYlrHm=pb3a>X}ROMj(eoiv;Q?G!|E#!?``J__T3R_cE%
z{=i8InnMPo!QwE_GIu7E%#G_OGz*3?MZEp{kq8QV!6jtGr16b0m1%`lZx{tI5p@KW
zPZ};h$G4=Uuln7RcsFZ@Q1kwdQM0{)v@&yu&kJ{3orRY%f=$j3Zz%ovy8im~<nD#=
zD5JZy^j83f6ea_HMYH;=WVq}*G3Uob&1EK-2_+A{ME58agwUY_;FYCKyGJfbOvX-S
zs)g!Xhw63*M;PUq4Gk`fP)I^<`;{kBxku@^W(h3J{J<3Dt)XN+!XYbTh~c_CM@op2
zb{GUw08|m!PUln=zCxmF@N*V%62voLkf+S~p+o_Zv7EriBq5uvmC;J;sOR=oJh(c$
zo6MZL(6ooUFzSv3hrb3)B91p+{OJ<!rmfEBRQv}#jRDcgIjoplW+>0jE!tiwH~Wg`
zKD5l0zrq-;L+6dWavah;fId5IO$sW{Xk6U87HDhosmpk3%mnYed{a|B`*sb>pC8Ok
zHoDr?`vBn97SLO+#`DF9+Z_<c0Q0*SHi#bJ{!{%MaObmu1YjCxrf1H9%~pbg%z2h4
z3cId;a$u&mF)g-xdZHh1I?_xNK>l0?nAf5E{Ok+;=ywU$jTbzR^80D0m#OS9O~I3=
zPY6MsA8yd}OV5VCN7?%%^q!EajhD@YMM#?cQVuA{Emo!Il#j*Gdbxx^@w#D^h|`rH
zC)DiW1hvR4zWVsor{6Tth>$<u*fen9ON(?^E9+#lLPF0@m?G4NhgW1Wn7$1fmiIgu
z9Ah{lEje*%Zozi=!uNDkGJ|e(9*4Fyo6EOsnuEG^80l_oCF5u{`)RD-;hJ!p^NM(R
zjt0ax@c?lRH3a%+1?|~R7XS2_hx_qdF!m>Jx!R#o${1)Y%KzmQuHdn$?hd|e(P9PW
zB@Vve%<wGk#hxiJ!MYclbfmAExrh*RsEk5~k##x8?2!VKZ&2FpuNW)`ftYOTM<0f%
zt~xy;A3V#?o1F3|NUzV%xi*@B?OlKb6$Y5!qL8qw&9|hn9p$}kwtpH-tXNzzt*jZI
zr5s$z?dB`kq`59$c<V0jB~<PJ$x)5Z!eQ^oJ#StQy+`w`t&Z&#@V)Ujb~d+{Paa?*
zg&Z*>tb<LO-n4m0;rQ79w6=ugvJH>AgY;~}%&_UZAabii8FKi94EP91R?dJQ{R@nD
zD|tu5W{Dgb1%t5NWTff*1wGWp@7Ezsjo@1`Bk$zUHaRk=%sN8iJ<NVx?+Q@fS~9x7
zAa9mbYxK|98KYzzY#(wT)N%0{<o(U@;GDLdlyAeUCE@O1A+ffCm2(mc4-_D?!;^&X
zgwkGnpy}dfsM(6KQ50s&S;f!$hy(WF<zQO`_AcUpC*vb39!MZPgbvXEq3iv5j;b@O
z^LQsXBA#=KlcdMvz632^&#N&Bk!eBd6qpnB?2eBF_2tUo#50?cMT!vZv^Ih7R5X;m
zlx6gjpdwsNd(k~%69Qsy#%-KAo#YoE6`DXu*!Bs8(MnzEW!7NZ28wK>!WAnfR}!*}
zhS5eA#*7x}F&2OnLkR2i?FHr^>^KacmAS)DS2q`P6MMk-o1>`>fQ^|Alq5}z#m3A|
z%uK8bU{W=Ab#!+zGk5(i9%2PK*HeH#{m_uvz5%yy^7k0me_D`eoDm2&2oc0c#RQU1
zghS?JV_{@r{!TEy6AgA|4p1}~7if+G3iJ;G29!e%0F8o>KwXJk|C^8P8@%IWVg3K{
z<;RI*b8xXTa&d4Fv$C=?vU772b9^T&oZrx0|Cl&PApZYD|4&lG!|{L6H{vC*Sif<>
zZwQd>8~Wq<wu*y|i;<O+3sguU269i3#Qa}mZcauPmj8o_oG5|K&h<Tui}imQLd^b+
zHga=ue$QqD<t1wTZ~Ff<;Qykdfs~TOF<4m`IaxWs72x>RpO~GEm63z(zXYIAp@1%u
zzE$|24BX!>H`o8o5uGf7$;Qpa_+7`v%EtZu^>15vxEYyw{wpJ^`IbQglEC<19RJDL
zxc@H(bT(#=Z#RAWmzbX)z$8wr$HtsKF9eQ}F7!XZu|d!&X#eS<L$k55GqR<N$bn-(
z{Kwa2OrU%>98heEG$hM+wb*|bh+QOXvZMUl?lpZ?HLvQ-AsF>m4uX1=MJSgz3JnFz
zZHV$@N>tGFex#24m+QUS{u5+K(L`jLFnVw|HT$65j(Q9FK|?AOwV;q9-h;TW5a373
z`3;voM>Wx>$Dg<iJU&f>s?rNLiv#c~rl$i)PD}qTA^4p+GP#p?tvCh%x5Ec~-#;(7
zb{v=>8M?ByR`|W#KL-<5ZoEFGHGLe7^c{h{uh-`#XvhnxssZ?=1;`VrfbUIuCzdx{
z_b;#aBNi<bDjJN4yed&|g`yvB*nxsMce^$5r+8)Dfk<2cI;-G{3``PHnGai1GymK@
zJyMRLA??|yGdtgHdQA#&z!s)X5664-5)%1&1cRT}_v_g+9JUu8wJEpcx+Ul~{F8I8
zuEboo@#Htg0IUD00+$h8gJ9>biETsW$3~l4!^49|X*YxXHU=>fJ>*Mw%7Rie<>y1`
zb@(r}mI}Jtu5PhP?9m&OX8ZVuZ1d)=IN!!?gM)r3P0TAEjz}M%(X%H%AoTcYT*fk7
zhc*DHbzEm;E#pbu*>ixKC4JVn$WL&twsBZ`q5Ok<Rm`catdp3nBC>d%Z^-AE;Baa;
z+1<H?jxM@^DVw)SlN~UYa9g?gWIRT75E%y<f)p#3CO$LX??jkW(|iK5tBcQ%#!(DB
z`Gt||<f>JqPr?s;smacREw3#J^74DXX;t+tWmLG*-rU~418DRQ5}Z;lVpJDNXneIp
zm;VUOb@PFoUBO^CHnut0f+cBN6OBDPXnF4}Wu;pt{X>VF*sSfHgF5EaC!2vjLmqvB
z$YfQ@{Q^-^o%x4DYH~6Apu)N_O(Z_0HsZCv51K+>9=aab>_4lgBffitOJueOjS*t;
zfncn)9Fc14CeS74=8WOP=K|3UlcB@C&zY58xB76aO?Z9DJo!#iMe7%xM5?|X=BuV5
zPk+&4vM!IUJ6S2VH~`7_hB%iWKG^RDH}4>^R^5yPwa0@KlSBz_WnzU(X6k2-Z@HE`
z*vg+rE9MLYSX8UPkcToYQhQj#;@~KAgQb2-47KbTRShK^+C(R!q=vwSCrCa-fkhwd
zGX82m=zs5K^Uhz2nAjW;AQe7q<XBlyASv}IWuSR(`74NWTqg&)zr$s2@^TX{5E_q=
z=iYZgJ~+TIgX%5+8ZiS%$)CuaPnT^L-rK|eK%E8l7XcJ|d`3dK0Q`h_PZ&QU&)7OY
zZ2%AkaXR}g{`nf$`1nGeUDenPq-(i~(4y=z6C{U+%4=_6VLfdD-hA7;_j2iRU|5_a
zx!x3t{+Q&NVCx$CPMe^p=hQj2ntVpZHtqHwvYBm%xLF@G>rOLM%XvIgJk|=8!Yp=#
zUZ%jn6)T%!mxQw93c}W;1QAzjSh^(do;rtsm+7mGn^|y3V%Rz=wk_R7WPAH=IBb7K
zu|0#JH3m_`)lthNo<p8PTeT_TftSo*cSgs|8kSgfscaPZSVk=)4S5YMOgxo)DceFL
z5&I&GO2Utb3ceT&-FlHNV%xulu^mqjgmHnhUAtO*?x(5)e~R~CqrICrW=(;Qb<Dr1
zPAd58D)1j-RSElpCD&^EttPyG$bf4jv56`~A@TfeBs#|z`v?nLY|=y`6T)F>Me9#n
zAC6*55hFg9Bv74)e(pJVc#8$y>BmUShsvdNn<zi$a-eJqL@s7t(W(*EQK}Cd`QiYL
zA5}%yVqHWdnN1TT;ZZVkT&<{pihx5YULwk=GP{15P#t**2r?@xk{5$;mCNpMarm=d
z;T-DmVMZAnxy71Lfb4KZ9<~mH#o!;zzB92Pgh90t3YvI(%6yk+?PBun{zrbICo@3+
zBaHvNE5Go*aSUMd`p~H%Y&c^5M>)`H>j=_}uBdyDqprfZ?>Fnvi5%rHR^Z7RA);Rb
z%Gi1l<lrzKV(ZDU^FMLdoMRn@VVZc)G){0+@Mk2AspoJCzdc)uNw5B2Je&+^GS;U)
z5TqNbfH()QW>#OhAe29ca}^jfbW_X|_%=R<=AM?(M|yyPxdhSlqM7xo*B`*(xoUGe
zo(+pYi0LT-FmyZ0rw%fRRIgxFKJPAvjL<Ej4uTlIe&YhHz}bW{AWWe08R1<Xu{q)|
zs6%B`*aq7WOluem{Y_%{PbZ8zHg8Vj&CzK)hE!byyOI+yn5G5V{JW;G0TffA=LkN%
zCo#bUzew}O7&Uu+Fiq<1SZ5&F?g$>NZ?K+@Gxw`m-$X}i(5Q8UUx9&b1cr#R<l=f{
z^s|{RKxURvEjI9GhBb&0!$WQ&x~oA7b#l}wwjHBWdqqg)W|}-0{lNE8Z=ycW6Qe~(
zDCVhc^-?>|;*@qH6C2PvzW(gJYGy`%tolRG6^WV}<r4yL3DgU%nFX|Npp{V~n8bgS
z1wS67I7aow2ufR3`ea7Jf2`g(^*<mnV7np`4LG$ET`>q%Gj`EKBn*FNhAPXhughS^
zeMXDXT>naP%A_@dC@;g>1v&%@RTVhXjX+Z6M%Pcbb1>%qo7<9yWPf_I{8TX_B%pHB
zR!;5gB*c3u>+|1OwE$Xe`__jWne0k;S6;qH2TMbs)?8%BBH8IK{J`>>U~Y28>di4n
zyR@N^3Npu2-0RA_I|)?KYizutnuj!9ITd{go((P%^^`&g<PT05!yd=UvO6=Kw5IW6
zI7Xr^?1UJd(vtxz0RNrEOEk@c$3F-ap!ukihFmuP+h9AbtVh~f=$|$+Ey;Qe``>>8
zr{aB5zRDF4MwMRkhR*1$Y^8N!bec`tZ?%}s`Bq+O!&f$oY-xkG7Bb)kQTm<j??6wB
zw0~eP={Ex)#N0bjwFMFgeijh~$TNoghM@oJG8V_c@j&w0A1ILr;EANdllhe(U>D>D
zx;(DiVpJv4-SuJq>1~HVCs)g^YqTx|JWMo`s|N`j_Txv3x%{0TLm>J(42$(g9UYg*
z84-mUm#FtYFsj~LjNnR^DUG+_C4RGhK7JE?WMWMk-W#@aAFyiqXr=l!4z&2!)st`-
z2xOEMM=R~arP&5{y|Q-t=Ey@H`37akYh3#Ndwbe@fEAq<+(va`OWOXOA6C5hZWQo!
ze+z&8jTU=0hEz@@h-du#-7_-(0sO5}k?8!>{c{sXAoF`8$W(B^A1ZHP{Dz6${tjvd
zY%e`*biTj-Vw5-hO(*c_T)6S7iao8`3KS-ZYFVP&I`44u<9##WYVLtxzU%HXL}UEj
z0b_)ClOapPT2gJO3EL!_>KR_pl{@xF??umm4MyW$hL%tT@oO1iWPjcagWeju9CqE&
z<)1Y)fv#B^D~=^W%#9-0h73K+*<m(sA(YfJIz^u&R3B*}(JREm)d;_fVs6|j13dKI
zp#(?4YNyHWa8)v1uIj1GgZl$~J|b6^uI<CS<#w)vtxV-<4&;Z|F+~d!j~2ru5WqJl
zg%?E<Qyp7C{6(xx3R5cHIGrDPH6i%BI`Tyn+k2;8{9RMHs98y(6vfNB?=p7LWl3G5
zk?DfNz~4_Of<5te{U8D0Uu7!A1?=lI*|&aa5%Lo%e@gBN5|}4d%M>S7TvRDQ+;=1`
zc^o=^9H+&KlGm1sO>dobohk{JMNfjhyTCLP{^=@@G)02W{5u6!l3az73PR1OoZioX
zcrgbKpTfN|RJJHdnEAy~=-<893zjQG-)esw0=i5lT)DkiMxWj>B^8{i1kn56mWYkn
z0zEvuMj>T6`^O}`hkXckPpVuu`7sW0uC;rQyC}6}eu>BYpVDgIZ0sBWFPDGSJlj97
zc{bS~^uZgiW9i2R%Z%gBJa2{FezsYtyr(H)Vz1)>2=IW1+cSpl&yZU87>;GU;Kn*n
z_W^cw73u-p6WId@1o_^94j}l^v-xD0taxI>Z@uepNk`w3(tN)qxqM4%-W1-I`HU>6
z;50_4y{=6Gla>GgiVd6v)6khMX54%YG}LXu8CZ#?P@qValWDKXp}}pZNf)Lz(k&pB
zkM+UIHN|$9Lw_QJW1)-eCiyPj!n7#g9(Nu22yumSDe+zX{R5<AvY!<G2%qO5H}5sj
zHfP-kQdG0O`#A<z*t(N49Nw3#($^Mp-Cn#{Y2O0nEF5+a*bt{?QkD}Q7*L*xa~mH3
zYZ9GXW#@xcpGkdV9pS)YE}}x<Vlv*^8GWPjf`|-wo)VKRjKdtIYTVZdExAD#4uJv-
z8l)E%Yl6fhDg(w5??;U^+=gJm0{8=iF-0;go@u$ztAVHdgp9Z773*5`(>&V&4bDM{
z?r)hVT_G<cNmY}5pYbS~-cUn*T+XMbY+)l>$(=%eIP((EJRSQX%{G^t@NjsTV6OOz
zV3S$Msl~PZ;A<Cy>=JS8Jd_qV+BP=D-p!-lr^OrLszBjI3sMVR#@}A+g(|QRqONyL
zTC)@DDtg>*{wjgpO@<xgRRrm>>60nh+-6H-xpaL6!uYDGG0>KRvGO97l4QH-vM1ah
zWAgooYkm~v)hx0oc=7ld#6LuTD|2M-eZ=CSBhsj*#N)0MCi4=R&RLqJjh2gb0Z^cH
z4US+o6@jjaKlET9SW^-d@%fK?s^>;UXd6QP@Zp@0oF4smI;%to<E)I6^>q11YKOpN
zBz*AWf|k>_ub`;lt@bZ^E;%`I!1;DzH;LXS(n#~ek;Drll#ZovVMW6hrmMZT{<OH{
zoTACFAXT<ZU6JlSa3dvC?}Hb@b_f%Q89*&h&jAI4WqXJQCJ(8h9nJy<Xh(OkJN>~*
zFXY6S;wtDMXJqH0h|WnDvRas&iq1~E%D@qSuP2+Gam5Bj0qr^EGx<7x*A4ZNy>RSd
z;}yvb(zjq(PE6XFMKq*5BB>#ES|l+!4GYs_?+$Peg=e5&sV$<XY2r80<k=~N&OS<K
zXad#oygQ0R2asPUP~dD96F7td8Vc>E6HZG7el>OySUz)p*ty~W=z>|4Ds9$p>H;k{
zq3=TW7?gkT63Hu!n%y)FU1K4)gE{LpX-)S2bsc}CXew`@o|i8JAPYeF!gz-oW7~5M
zq1{*@)X%N%h9uNNfy2>hM7S$=v><T<+JWHc{CA9UT4_*g1+H#>ubzb;mz$9_dTK=g
zllQ|0=52TDimrao$vF<@@eOloXUM?@TRHsdhEr(m75!MUeg>8BY9%>XJ|B|0xko<z
zuwGNYHFFVDa&R^z$`mcp!s5Rv4xA!mZEgZ;4-S8UR5ItKW#r()oka|uBhT=EU4ZwF
z2q-cC+IQy>sqrb0#iJ$_gxz6S9kR3(rXw+tOx%N@@d+|%k;>Ju+kld8)636Y-JdVf
z!^RnB&%*@lfzEp7YwdSB79OJyMnpBRh?iD1hi6s*v!F;ayqe!kHD7>^A+Oe+9C<V9
zQguTVm)>PzI5)gXC+H|BPN<|ha-c_tu0d`lV+OWE(z9uAi2ma2>sooVJvgkKtMOi@
zD7&CXlI5|*b0^GtQ)dV++rHsrt_abuQUym30lG%h^t`H?^c4(X+45OkVBg;Wp9p?_
zAw1ZS+poPvf~ZbA-dKPAl;3c!e}U^c934Y;1t`M@JDSoc(em*z)KHv<L_m7<CTZ=-
zeo8nQq&bcs!<-iQGOLUZXrh0A0Q@wMn|-4(#q|<9AL0Z0h+Jj8{1%Wyh6b<=c)r5g
zd2RSLy>~>3ay<uExZHTF|G`2_zBY+QbsXVR5yqm_QIyta%gS_8AmfFMC7>n2ILvsB
z-egXkNQUpCz{|^tt)&p3xL|UGRHjV0p5aK6*nReMYyE?D4C$=~xs)D3f5T6#+@QT@
zbdX~i3kW;!e}Ljs5I|LBDCs+F-~bTZ_W*G(B?!743xbCgM9e}B4AZ`FJm5t8m)AS+
zvZvf0*}gCKo6br2ceeea1<@A32f+<NEbUY~j<A+c#x>&WhHH?-e%!@H`=<bD1l!==
zR07-K_y5ct^otl)#5ifJ*oZ{aSS13`8CGq_$Z4{{g}(}QvDbmguv^9N+jS{18&~pk
z_Fvz(<Cc>eC~w=qr%t1^iI?qvZlBlhN3u{op6`R0s6zT%er<2kkDhYZ-9Z25kE`cV
zEyrSD3S-I7B-uW~lu5|Lwzdv|)pCe@=)0KCI{HQhr~`!|a0Jq3xR8uHWn6P3CauC7
zU&n=_KRomPV!a(RS^69GxfHs&{fuu-J#<&ndCxRrG5v`^%oBQeh~$q6#9D|n@%f(?
zosKabI{|l)y%(-qE$QTEF(~JqO|{vCn_1-OkYC%MgQ!Mr>Kylmc+jE^p-P7rX-Nqt
z38T|e^hpaHUbZcr*ZI#`+@lTvNG#}h*QZ(D8g^^l;p8A7RYylp7=WF@0Vc8oJosRT
ztLdkMLDf63u*RCL3O@S)0kC8Aj4?6OvD-U(rAX1!5b@WU{ME_$N!i{_&aIJR)FIDj
zYd%qc;-3zBf2JGKD~}qa?Kzw8r!C<HU7_~Am@r&_F%#lOt8uLQf^YDg4NMUqz|d%%
zxwuA}qH85XS~^jLf#o>v+G-UF2}z(u!f{2ofI|~#thQEPYt2B$3nj%Vx92<PK?C7<
zamZP7Q0vx9ciw58xJY8~t3cVSH{?jnQYad4eiz)F^F<CxP#jXs!4m=>_m&eA;1I!k
z5mQ=<8~e+D(R~<(JZ%Iz>PACs4f|bHk42({FP263zKyPdV4A<E#e&-P?NYUA&tx2O
zmR1soaC{O+gZSXIzHA^|^6tMOTvU2011<uI)q0i-Go}XS-D*LHqvp#l$Z%EZF>ZF_
zQ0}(1F@<+jup3x3VSz=h4f0G|i1?NNi}aA>=MQJ>T($Hs7VRZHS8>MGdC6E5z_4(g
zvb@?83I{11zbF=JsG;r&`(r1MaB;Ze341%xJL@J`>@a-O-poGO9>86fl2o<`P@2P^
zu@f^H`{}kCAk{JEq1^1)_d3JRA2xpZ$ZcGT`}R4v=-`dtNFHz5m!j!*m&m@eVf8lr
zslx6mEm>k*Xl%?H#(o$YnPWrT04|!ek11sDLgI~R@G(G!mQ=((6x0cU9z8I7pK%LR
z<hy6O#bfGgyTgI%j8sVbLq(Y}CG~ZHTSOtDqYK++kI$wSlH9?x(BKzLyob6A^{I*m
zF<+AEA(pr;UK9kqh={IKIf%)w6M1I3h};9m=kr!xlZ^Q2uyEP)OUaDJSr6AWc5Ifs
zw4L<sHYH4?FxH1VF-7ni@okU49L5nSbnR9(&mCTogcCThM(a-sF#v}=6a;}J!fh9k
zeE6iPS4)CbRkVzLRJelquihdM$I%v>z~bFwZ1;N3h=D}BlZ}rRiDSDoFciN<By&KN
zm*HdLhpB4RB>2C!=VE@edQ;J{Ff?UI2{c=x(gNY&f0CHV2fA^q@=;JUc%pH@B1BOF
zaT*vM3HNP%qp47$gs16qmQh#54OC<$s6tK)GQ56Lc*@Mz!ap=vko@pn4MBA*7$Tgi
zi8!|D#Jd44zf2%O(l}E0P-eoGVW1STw!cM;)Je`zj>8pQkfoW<AsNz59Z>uevxme4
zoXc9dHN!ufoY?eY;ggt+2oS7+@M!*l_f;}}ew6(AJ^)DCaGM+(SXWed8UPcDlZlvn
zmM6Q_vxCKsXxlc5zyi1tQG}`|oB(U_B?(Rb&bB_9n93s4vUu98Fah(~Y<KNmEn^M9
zaq&4|H6Q-{2XzK)n}A98y~6zjTq2U)LPjL;xk|xC7&W5*l=cdl9nA~Kw#cjjNYcx=
z5@t1=Fd@GziFJ*DfY)qs(#Q}W$#fLb&!;hCEqCUvYyqf6eupxHNC*na!ZI41HUriH
z__CzGAu$quHS(2zbm*XPmN<II*gMyN;rz`=34vAi{X%iAmL<Q;4@eR(j2<Tu0a4fo
zXy){OOktw1Pl~w^G-%)ifNc&_L#33#Um5RJD(ZMyq^P2KDeZ#MHYRSSW;ZK9$hreo
z>78@zB7+J6UIw3HAJ^DLzY28&kycTny(=>aq$>EBY*X#JO|P4m&OuA<N^CodXB|_A
zWZUSZ>x9pE!2qL}r4lR=$f?dT!QC_tFxx1lKkI3*3yM2wVg;Hr-Xju}N=XsHo~gAB
zR9NuQ$}g+G;Db+U|53ezV4bC~OwgHCBskLz0GCG0eZm!TxlQeZc)Dy1hU>Qn+Z}y+
z2-kPPk|<O&@#SH6+GgJ%yz$UlotYN*5^QRj?ObejSQImgnA_JC4rJY^<XS6a6%qlX
zBRn^F(EEct-3{c)l3}xE_ITv%>wdPoP?Epd-Z5OO{cQGEV{Rrv(`f{{3~a><7lVsG
z+!bs93JjiFAMQzr{M0HHFUk0e4Aale7H@c=n<eF?H_9flLy@-5vPbiskQcItS*n#U
z$Kf&DS1#BsnZ~|~8E)7DNrK_B_Q6QyM1H04YmIByE&(I$vGmG{@Qp(sY$#3nlgx50
zD{=R|b<9X{6aI>unHiy?Kq_L&2^W&@{j+S0zmQleE1F`{Wmkh!Few_q_B{78)bu2^
zQg4MP)K=>LK$Fzb$~h#x%U0Ga+rmS`CcB<~nojkvu}16?NmEb1o~HUW+SaU4{kyQ`
zf<{t_Fb+t`yHGo_?yx0TT%uRG;ke5?$nDM~t4$Nsuqi+sM-*<nS1_6&ebNV#6Xpzf
z#=6H2h92n!>VLdt_l^Y}j3N+KZhPIqH6aJcV=Y0aqpH={?Hmo4#pKWOZ@XkNUn@DV
zx_R0er%BPHS;ZRDO2<odo5Tc8<I`FNxnes_PXGru;v<W%Y=_%Kf>b(=c+Xc&TK=EL
zz66}A=6~F=yS(<DvhU*Vi^wiZQX(OHN{cNml)AJKp}6T}UkXtXWetgtvb0mABt*6%
zrBwepm)@6qzrW}C_q^|OozKjf`OIgZna|7#ly1<Ik}cN61Z>T75<9$B>*gKZx%-$s
z&Dt_`_5-rdcd&Tozx(9Zxo%cIrK09HD$C`Fw@%TqXD0I7P!4mf1N}#D>cNsPdA7_A
zbsyT_v-g#I*T*AstIc$+zqW5q?XEqam3G0p?99w4Vcw8kOa5agO|5iB3`5evgFQ4d
zMF$IZ;P6<mr-oU~Hq>%K(cH_nih+v>h~Q!ZJRYNi>~CSwIt2XUCfVODL*85F5*Q?3
z5o`g1|8+2Aupb6;{jr$E-8f`3t!P;t908|8!Q+_fSl#yF#DQHsJenTMHQx>g>rXZ`
zYPlF25rd(}ZFx?MCjv4(299ZbQ1rH}yVgup-rcuzFHQb)6ict?1L6dCxr%LW+D_9y
zKPN*kXggQ@^x_s=)izi+Gg&Gb^j(BaC`g=rK>iG?YI+dbHEa5wa6*3;cawLw{-Lv@
z-r@U+`{(6%2EXHPIh&dNc|pL2z3Fbt-Sl|<C+}xWsNyw3mKF(*1V#=IUi+Cd@x5<<
z&*M3^fM0V#$7V7sTI7n)kmXRH2BLUe-1?8#-1*J@&1j+RMHS}7$m)=$?^j6#yDpi#
zzIjbP!{+_+)2y7gD;zJHu6@_{BXOOFFD3DncGe@q>MjozM`GAvLTcY5sY^vk`>K-)
z?mItB(KFvd<w|(u9VsNHJ$G!)*Uw|ev8mhB4Yzwp&)w>teQ|V7$)fd~j}~c6w<|Cp
zuvoXt@TpKh-MVK_!`4rSq-atK9W-d=iRsT!<6?ndQFn-z)UW0CMYbtIhI*<t7Ve$#
z-&&5jW=rN$ReAkyg`3Ltzx3L`dpjY}L44v%>8f+hvU{lQ!P`VP&-dNfVc(WBQIlEz
zaHh*FFXdt4mm4Lf1FovPf-@B52j4)BLIE$Ir28g23kxX5a&P1%;^dA(>zTMiU(7wU
zRbYMdOyx9@%?}-O<yC)GU4u=wZjj@iZku`c+)FWGcJ!p#FMd&+C`VC$p=WF4iL)mn
zr&`+M-Ly9jQ;m6=?rueOZ$EVQ#y7>o<~c{ur#K8UwtZ;a{b{@|HFc!QLcrbDMsUv+
zd_>a)PI={)Z+pvhwjOE9X=pOe8{QpYr!W%oI&@+7$@V9O=o9K(MjzzMl!eTBIOLO$
zlok%>o;jWQw#{a<$<UQoNqUy$&N{xQrLwn2Dh*^0yL(z^P%oL+`{fR!{O{!yy|qH;
z3C&m<T$SOx9({?&?(M3}y^6yx^*8fu?l{`mod2}(yaVCd@gBw48~bl1iA{7Q#hoei
zDk46!{#}=t;!-Dx`m%Qar-!O7`DML?4Fa<Zlc@`7D%W15y*X0oS~pUy{jR_M2=vEC
zjb;CoehhggM}PbxHNu@sJh5xx@!kvB&W~LSOE+HF9e%W5PPD^ph!!RBCfzu-BUv{r
zwyv=+D?psrIdyJZ-XDC@fai%%{<NQmd+)9N@x#LF?o=G=<Ef0!<0mJqtz51a+{W%R
zl-)f-_K**xeX%JkA}IW-7$)4<{w=6ys-wvNY4zvscI}(Kw^7~H(TcC8SI5Y8E#z7~
zy$5<Z`=SGPJ-=Oih1cQojTh(Crz_^av7gO8EWE+fPw(^Xz4yO5i++zPSiRvJOzZVH
z{EXB8?CHlRdSCa__zf;AZ@w6m?(b2flhCnG)fdNUn=lvlHJ<#TD5>t@Xy?6})fRd9
z>*n@FqWyimYtkg*=k`6Kj(J8(vY4dYrn*G*S)DH58n6@Pb1XZ`<Ezf$?6X_D4u^!H
zFD*<Y_AD4$X5Y~us>W`x;!O@;jXD!*{z!w5Ggl`H-Nj>JEV?JXkn2oTqMQ0@*BX-P
z({HxZ6+8jYvG-6n#xyj_kCQDO&C{NL3Feh~ywgpvr{QvLJ1<Xl@f20R;Pp;&_2c|~
zL#EDpnKw~vQPb>3vI+usN&{uA9HT!9HojwNP*{_|oifN7Ef_UW=DP1!*j=Tf%;em2
zdrZVxOl`Kwc}ZptO1tr2GWh8CT;c2I32k4y;CChy;ayJNdc{>*mVau3kGwYV{E|Kx
zAe}k*x-p`<xOa2(Rf#tX>C_?9*2>J?<()Qd8`cDMnzW9J?nUK5$ECUBMUDNg>@mw8
zz$M>`d>mR-Dg(CC&0M+T&+43NS!K3A`-kA;$NE3MDm;mL{Kll8<LO(DUG>ney8=F~
z)>}37YdLcXQ^qPPhhp*^I9bPvt0FrdBt>tQ-5vIz+dl78P4j`%7RPdispON1n>{e|
zX{ncWFPWD)b`HQLycO~2fa=jbYtqB5*N%Fx|Cvy+YgV^#jxSp3Hea3>;oFT--eWw8
zY>A@Hni(p?1%mrLTZ|I&XL29#B+fM0Z&IfuZYea4)9$#`*qqzmZRRM5%Y7iG@`x{z
zC&T|?N)%VY(e}JFes*;?i7-bVC7z~F?3=1L(f0aiWWp?w&x8*SVva=J5tZ*DQ>(l@
z%d#CEjlOz!bh-$?9R1Q}nf36<HIvymtAT`rX{%TpFrxm-a|R(2oAz?wJ*CI;-LOU7
zeJ`!QHij36$1LW};ITCCI!7@Aj;Mph%VY5%Ck3Q!5Wp`6PtWT>+?mTmewy|l^lCIn
z$H#zL7(B@B03HoX2F?=rQ?MdIA(LpB<7Oc1Ug*63Y9cuLhE(`lk%ZSF1FyQQB2Bp7
zhXZl8SlZEgA{T~40Ld^!T2=iyn%@IHTKfea2xJqnfvbSZC0_;fT1>z3$SF91(oFr9
zD9W+FC#DyV@y@Y*BH9wW-FjarxBh!c^FMVV<MtP<<`w*e$mwrVGWL$RyyE5k{ff62
z)vkU<!dUcDg@{hlmv)zZ(AOXBTa~qJZ%GT)ZOh8=I5MY59BgpAev9Yw!5`5Bmny2a
z&qw-hulsp$)S24yGpnS(&b?UnE%s%gj$~-a=eZy6*_w3WiqF4aG=J&(YBvHGAAC1i
zQ!I4^^YLW(grG*J&dZYtnSm+CXRnII?(n|9t=;pKT*{$$i8lk(V6E=ManjkG#@#(J
zn!i>zpr8A7`~6f-^iTWBK`X!(KC69Q)Fega`r>flL}gjN4pnN;C;PS}n_g1=p|V1=
zoSyDuH1&NhkHigFqHgT#jXRcwzcI!?UE$+^h1Q?I=C++Z+OL&&Rj|yMBj@8bsUG`>
z4O{!a@L$TYJMOGkuMn&68`s_@P#@Uv=16Ja_JeWiGZPyz^)&N)X)^Oh4vMe6cxNxU
z+`F)K-|eF*AF{L`QLW72?klw%?*25@w-2^Hx!Ec>Mtbwh9qVZC<llX!c1$#*Oe%Zr
zD|N*~5{k_uD%bObp@KaYXOs(n?%CLOJMjCSjG!t%K5kvKJU-NL>if~?_D}WM6AuJ~
z2v*&^bGq-^%p*R!rhJXi4z;poIij0(J;2)iW(bSA*|i?EwJG7$tx1P=oXkyol3M(#
z)SzZ3m&x^eWT8=ml1<9qo0S$GqO@rmx?@o>+qfssW4UF&PoDB#a60z`gR`|ucsjoA
zq5#$fUz1qde&^z6)8|8Pe#L2o5>N#a;{5M9JrcN1)Tr9&ZP>P*a6b8xkZNg}0d7wJ
z-N>cmf<ku*uY~V?z5Rl^rh4{}s9Bcw+Y^RqR%P{#3-7b<qjCeKCh<xM7P)HOPy>+=
z_D1V{ZJ$KgiAa-N%znXl;~t5{*NmO<>*Rf-O}94WB=9SnE2w0Uvo9Rb&MJ{QBRw7N
z{4lmIurQ6&>|EO!melyj`7=XCr!Q*Vii~;Cb2s9=;;RmhzD;bOg{eL3Sct;gb0=dq
zVoyD}cvASq+y{c2MABHa$PbIn-C0ua;|`ikbIKa32Tq2Pu01j4oB7p{V?b8vuC<Rj
zo&PX7_~uCtnY-s&n`WaNLicQuaXz!Lh$D(UTK;xMP|hfBHg#{>W>J(sZktJOx%Qy+
z*oMR0GZ|l8)TFO#y1qg^q4t|@j<k)-wEB79HKyai%z^8)Z#lZWr~}*c&bzjY+4NPS
z9A^%nE4q3kW1Xtym8VLpXV2T^@K;|95I0M6BC{ItN66|_`Rok3#NLPHwMZ`OYxo@O
z8O#~97Ik1PDsF@{wZU~FScc_HT66u$1-7<rSxWGjq~g!5gb^W$+VME*bMk$I$xl^I
z+LMPUoNK(Vdc3##ef!cA0sQcps=fD*mpl^U=>ER0wDHmKXj7?0mr|xoYQV>?4nj~#
zsR#>sZ8arQs%0IYAr~ip_WNKP%0!p%q%n8%RHD*rof|*-;{@at@0#{$SzbN+s8;|x
zYF57HN~5v$0QB<}p52LmM+{Z$X*UP0<<)pi#lxMa9R3_!^`fOz=LYp|eZ#&MH_Zae
z2i=?v=O0#)H~RMFct)P&x*Re1@r01MZEtyWct(m%)Q1eM4P9CWt6MH<ur{jXJV9N|
z%{DH6RJuUD_gY8F_|W^qT&T^;_Y@;Lt=PQUy^K%VTz`7bRDA1Tj$%b<lq5Acy{&vp
z-k1{q+v34%0VQf{-+ryuP}EG8N<LNpF?6t5_;FWYv3s#<>+YPWix-_x+e6%9Y;$@_
zogYfNXGyb{t}+>)I69Vykx=UCRhLECHgEnD7w_hQdXZ{;AofJ?Rt~FAzV{vZ)26l?
zm<YM(q(rd@=yU|dJz&>0wkM=bQ#YZ$nBZGy+HN<5cX0>Yx8%vmzSigzo4nILNs#M_
zWBPRov|%d0K3rez9w!N&QaR&)9l0{}$5A)n%KrBF510=*^Xt}4)Slj3{dmLXuxD%{
z19wZ~WBm?hr`EHblN!w*-^d;nxjT}V|9ZZTqw={}UZrP-NfukUC2J&H=QmNWviY{g
zylK7h-0WP;v4%75FMpe*vY9<TD2Lfh)7RuJ#>}25)n0w}-h*>@Yu#3LSQU<&xwmh$
zKJS$yb$VcjC+bDRfi~Rvg|3~dox_hTZpDSWDV%7kYWj%}7(5hd=N0~TAfWA5z^Pk$
z8@cd(do8vXu%3L&Vx&DOCZJ(s?%+fHTxL2*Ivy4;_O5hS{&!i?5Vzx#)tgFjH%}a|
zn*QwXIGtZi=ALPI@kL`Yt$y-WziDyNZeino^`zq=_e~G+JX3GDoETDsb~sVLd;O}U
zT8UHFu_wMOTG&-Z`qXA05}cNi**sRs)t9@=U~=<WBmT$7_Kz7<z28k#tlzV%AmTIC
zpOr)3+&57pM%PQUZA(~<-4j74QG!bliCymZ>)<l$UJSbQO<>7WB~G<#w^ub@l#9<j
zVG|feO&fB>io;Z&GtH&JzfW~P{~`2vkh@WdYv4;8C9EmfI7aE*<F$}RnaRH1T`Yqp
zw|?g|uXmv|WhsrcDowVA{4q0FJtx#CNo}3lYGOF-a^ex{exls9;slwoJfkuNxe(dz
z^{idG_o(a5-+6XFt`E3l`p3R*@A%KbEiStV@~inAQ9h}O8ZM?mxKO{AXV(g^{Rumy
zS>ydNE73s0sCXnb$6s!J_gyZPJ1xw~zj!3+cQH+rmTD;>j>98)qbsw3!L&TMlq`U!
zC;rOgKt?N)2u!Q%l%_4HqgN5YO@mmFfQm-zkgz0q42h(J2Cd*QAh#7q^HNZyoj(tv
zngk&bvOL+LzY4&y6w<%-u~?iAmVo^q^+mwh{=djA=CI=Nw44l0+PgMkX?n7<yzVw<
z7kLbbmdHekJOL~^P(T_h-$NzP)#q*zDKf}z1^K}N2lwrBL#+coVkzYrPYWs#r}Yg=
z!@o2jNm~C-EDi4Ar^S_Xv*PiK!BDf)n{&NHKI+}Oibp9AqF?WNb#dS2ZIQ)y_6B|o
zFi%@|qv>Ah(EY21tkl~bQNN~?%qhWp-oAv`qVzB2s()D@D=JmLf1uTAdriWH0c(q=
z1MXGU*LV+?pS}T0^quLs9A_Z(!|Pb^u}^od^~B`ebs52#e;RjcQThaKp6afIvZxO@
zazuUz`B}tBlw{s@ep_3<&#tOHMBCL8uA?44{3mJKCnu7bekJ+n;i({(y6;0Hq{Afx
zvRCg`Im_jsNI?te->!icDS<N<X8dqu%MmA6;yJgMQ?Uu^zQOnEm0#35*s)ytbT2da
z#*VwXXYr$FIql3by_Fpmwnf(E%I6EI0>z(RXyU%iT16KJYUbXlU-k63UwliKIhb@5
zqCQb9?zhNC>?MwD)IJrJT3B&Y|K2(UBm6*Xx?|Dn?1OR}j|ZLZExH}88+|ppzU$@d
zHGTR#`z`c4$MV$_6;iei6*(R(I@3!UzO&`_AMp!nUn?903{I&|EB9{8d=$0WrY?e7
zb9LfaieGX>!PRH`KgM$E)T?f!J%i&|Fw&6FP19PR=jar(`;+zSE>v2JeHE8jUCq_*
zl2`O8Y0lH?9?MN#Rkf%9%ZD7bL3xD_XF0;$uMC8_hhif(9IT0&V@WYxIPVzrL^((4
z?DhC3m$z`~q9i1@^*#4I9~{$dQG0C5a|5co=$EtgTYM9Ca|if4r1E9B#9}g0`WFdB
zrVmMTk$EqK3U6?#W^BINDCmT`zh0N*OFNE_MX@`q_DjBSlQt`DpiPP{`6`<%>wEC@
zyBhzfyzP@`U7RE?{KA|L+Wg$DBq>f@@MeO#HZ50GPwHIoP8OvQR-ubw&xDO7Bd_uc
zP`9PJ)@&QtxCJ%vxgq9cgXab5!Pl|b+Q!ml1$(V)0=HYwxV+=M@+jXy?1!R{4}Z@k
z9f2JuHX6x3-u3#8%JA((Si7yvgbP)46@UHZd!b(b<fjtcPq)35c_AisiUZTTE8Ety
zyoGyg&&g0ju?`l!weP=1*S+Ep)0pn{e*0+?MAa(9DV>&oP&F1q2rI9BAQN)CDVozD
z`t_e$t*5Id#4nc%q1gNFj7DFo_g=gGKwukT=KlBEEkXQmHKZ<ibFiKueM$Hl$$M3x
zeE?ga@<PsDCPZ*bK}q=X$a^ip%Rj4|G09{Z>tF8DYuDG!P8{mkv~xt$COOTGC8^<8
zXNJ)h>cK6&cdu3C?E862*TSAZwtu)pudnCQDG7?bHi67<+fFmmsrd5XpxL;ognnjs
zoq$VU;WzU}Aun{Q(S>fOi)-9quabtT4+qsa-Ib3kxNz)LwGi(1At<5_CQCRtR@K(z
z4;XETIyuu5XI>igU0{`U*J1DDhjwuC$rThhu!c}a4N*y&YVVJl;8C0#v=Uo8ZoemY
z%HjkvdcMV<!l;}UiJehnH96zj7}NBT?-b9(L=Pb-=hnRbW5MTn3)Onf)lzX?^SPQq
zNw}X<<pMjDZ&+W%yVC?hu2?x4E`)~s3}W{+#GR9<7dV-z+P7Y3c>kgAJULa@_oIFt
z#hx=%rCy%07IELWtL4A~e}`eFt-^-XN%C%Qf<eZo=v@{jbq#LwjWJjBZ4OUmJvGR&
z>mHohwCj-l*ekxU*4B~U{l|8`A3Ly_cXwOP!_(8h{oVH)9yno{?(A;4Vg9X3et_6H
zwV}2)gO3=6pKn8iH?JAW72Md+dTM`H$ma{O>qk26v#G7d6=C|Ts`v&1V@O>uN8bwf
z3REk(eb*X}lwmRdqkC_)l5$5GE9ZG-r~6N~P=elZ@E`DrR2Wh^gfkB}vo=z7Z`prB
zDR7P9jsnOxO8tB%1~rqjad*1u&@9!wsV9C;^%iTuhMgRJ>%Q*oQ&R9sKi|HJOR6iz
zJMg91)Z4qqjScvvp6#AwkIio?Q`W>yh_`xl2BE39yIas}&BF_`end{4>RTIFL4{I#
z<{vZrH3E9^Pz!-R`(AOV1y2F)Yz=KRpH~F9os|xTfQBI~B(iu);w6}jhksL{Ep*yI
z1Xu_UiQd}YmCONr3;nzdIH1DlDZwd^;8ImZaQ1{=VjK_<cpyaHRUSv6AP{*Rad9!g
zjmGoRidOw%JI$r%A9$Y{q(Y1M#7nb(=`76X@(7DAZ{(#g1U!=jq)Aim27l6wBD84X
zFaF^`j&=}ec00vrG2N21x7~=B1+I_Q0-j`hkeZ*nwS}3+xmd}hM+%m-fdtrapd0@l
zZ3qVoZGiM??<UqkMA%p!j9BAUEIUL-Ml6N{K9+IBM4H!_y3*o!mpNDx8q{2V`h-X;
z9T$Pu{R2s|;lNQGaMA?UF@kt$^)sq8tHFP6b@g|!(LO&{6eHo7`XFHts;Vqeb$KuU
z1uu*70SOD@11-323-k{sLKyID6d_6r8k7`9f|lh7fuhtwEmoxM0x=K@P#_X~o(Cea
z;m8<TWVy&KpAW4ZtmGvzA~TB-2@xYzG&8Tsbh(fR$8(U8$gc=I$OPC+4MGEMqiA2o
z+-S}de1F-$i-}3(<-({mE(EYaq*D`|{6UDcd^Af{Y0=|SwEl5H1n;tOZJO)^{m<!f
zZKm;q8afkN!U#uKHbmPyp+&R%z()%&PzI-g_!o0s`X`KO!n;InVJCChSt*!B4WJ-m
zwK7(up#KkEQ5aDMjR0QJR!{x|dO`sXr~qM5gNV0=XS`TpV+^Dqj-$}eoUPDa3Lfcz
zbCK*c)o-gWVwX-e!KtheKV2Uv0H!5^qc9E*fs4|%eUpT9aDWNf-@skt2-C^P;U~cJ
zvhT5+Y<M&VPNYBzVrZt(;n8S#fDcmD1jokc1OHdS@r$S8<ndrh4`DhUy{PbR$?G9Y
zn(H4AB=V)r{c(p~Y9V3T<24$|=O7PZ2AY7bk@yzYgdjmW9*DlfyZ$~Mfgmkm29Zaw
z&CviB>mdY52{WAeLfQki0On?eq-ZsN_z<1=3$tK_Bw=TsMMXhc31)>fXk*{_Vc89k
zH!E0^1O%y+V}qWt1FJwM2w0G0U^gCvr4xj6ks$CBZfNzt$IK*Q86IfyoEdzd8<G}6
z^kJE-;W6|xXfP`eC}U91zhy?C4CZBn=+cN-jCHWnKhQr&qz=E~f#zAU=tbPHObUv}
zQ0Ta!mY4<X2AsnOiP4FGMbim=k{1#}nz+adX~S(i5FavlMR=MQQiE+Jz@ri$6b(!N
z1O7^<K;mLpCX<iH;^@7o{MXCUBm)l)0InP_7XPnvkpeVz{s&TrQ^i2rw(<~nW%55z
z7#EF|C=APsK|&%-rWULpdyT20@yxOZu6d`+99SSmewP~@JP!6$19!Fn?*hLRgWSNH
z@fz4u90~>p1R1d-(@DZF0SSZ4cY)+-1LXkTKoJg-fSlnD4S;C;KLF7;63}^0T28ov
zI37ngam)1+k0bnF^uRIl7)Sh<9ulyW9O#z_Ys*3U;Ai*ZPre+&7r+Rbf4?sLk3687
zhuR|hD;?#b<D9JcCH^n2vaiHsk^c&RXSDw*E7&8Z6O2CjwU>wQ)k5+>CuI=Iu*0j?
zLnt^+4T=B`7Z__jc&j=@g=N&CMg0N0$UsL$F?92=T$}+abbYncfP@jed^8|^<QJ%?
zHUyjn-ObQvoQAZBa?#37n$TxX+UHt8$Hgi23hePjIvtglu>a5N;qeS+4NQu?>KA=0
zJb{5kkSCfHFmhTTk^v8*usv`Z^g8E&U8Mif@%Im2+!Dm<?;p`PpmO?}iz@fm0bt<Y
zh7ez+EFKEsU?tEEq@pOZeFWhXVjoqQktQ&jI>Mr<)7JyU0u9nBcVzJa&{qV`(StOQ
zf_6PXMes{Ea;v~H3V5I!HP^L}Br6E>meF+`D}h+~VJ)P?hWHOfF#?nOz!UKQ7g-66
z=81rK3wk67*MqaN^rs<1NQ&+}7H!chYv`ZKFeB(18+@JuIwT@WwZb9d31oVQf{aoK
z=a@klA^c)UC6A{EOh9*G4GYK$mNkb0;c@V-2DsB4@`H2NL;CQ33+M>!WC@wU==IQk
znAZwg3%^+pV9%{Uy;Msmm}V@x78bCExZ#af&}mq~0kD6$R13or*3c<odJMW;a6xRV
z2Wi1E=8NtVPk$DHe_I2)%;-^;%JgkO8KZq$Dm#LdF|ixzLj<lu${1bP(tC5D4E8qy
zW`^#8NI=SxA??cR8z5mWV2T8*AS_JthJ@fhKA;Z210)In^eT1^P!@{oPK};<*wH<e
zU)>=MHg-?((8I8zH)H`S?e>N=CFnYj(lzl4@wEsHI3TZUZf@dYV+9v^Lwh-w{+989
z&Hx*8#Ru>p$s0H?(3Q=<e{sV*c0d-3j{!9hC)~ILGXJ-ft5V(<l40Yt4HH{sZdGaQ
z2eoUkUp=Ow1`8!Y<{;37w<Q58i(Y|*I329*oHm%j3N%O#u1<oymjUJ=e5K?C$PQZ8
z4>cK#dTSo!SNS~|I>aew$Ns@qxL<&yajl6U8~2w@ru!q$lBxxT`_Xy!o`vjid^#ja
z-6Y1L?K7m%$<aD0{Uc<!`+EP;Zs%Q7zcK=;-+EgkWCi^;j^u7WFY!<!^_jL`LPJJd
z?q;atg!RED8ObVM`3gac`PKUrK5+Z-^IvS>jcp|MjQIIX`1!<;SSJ0#i&zq3#8{OM
z4?3P-l|3U5wR_D#v^8<3LnXPQ<0FhNuu)AL9e9n_3pThIByw-tq^N9pqDnke8WrS~
zAZTWcLCe`WC*Oa!{&K_Qu~e<tKbx#iu*Y0d_q?t8Owv=aT3ybHW4pSv-RJeC0fPBM
zRE50;)iAg5!mC=xAC8xQZ`wKIsr=Q0<${E+unB8}S@rpdyQ`&H>$+P`Roy&OS^rS5
zj4E`=bfi^YFuUIFUW|JX>OLysbow^I4h!L&a{c=w#S)Q}O4Z0l?pf4~*QNTbQI|Cl
zsF~Bog`fZIbmJ&#zWvsxeHE0>+E{q04$pU{PVP|Rrz2rsDC!c!tt>V&t_|YcJ%yp;
zbDoJP%L3?9*J*o}3nzH;w@q(WIK=Lmx#I-Y&mqEN)zxyg?CfwqLbZ7BCdm9!-0#)B
zY$z`Co6aRWe}7L42=KG6sm?>8Jb7PUvOdVdU%{X9Cx&mhiAV9wK;)Axg@^dJ?sZPE
zl#lq{Sbpbp*ms45C`_w@I>-BWa($+hjg;WLj_Q#z{cC~83jGwP#Gmc&`;(TC6X?kQ
zXPR2AZ{IzV=7~L|ao}^U*_MO$!Ta}qDGPX?SP^GHs@+*8k^sMPOWB}D*09?90(DHq
zD}P<g+qvF>kv&dn(IW-^9}d5j`ef)-TQZz_pyFqkV?^Tm$KdSxj_S_oD=nR0WL@uU
z(&Z6O|Mn_xV(Sj^9PNSa^#}X?usPpPHGX_IaGhGEKlCVHDa0?$(x=p=y39}IJ?VzY
z!HvCJwO*d$NhAzm-8^XPH~swK)_pK#FXar6XoOX>T(a}AxF)gGYV2<5wwZ<r=ZUn;
z`SvSPw_a9k`r^vg`=GR@mFxNjf%`AVf8<=$JDMx~tEeH!nBqSqr5-jIl;2VLG4RJ=
zR{M^tVpN`Ms5uMCXpJPpfcR(6`0uD{+%?~Dxv(>fU-ikY>E8Elv2XLvZdXa1ZLcxY
zUpRA9a%5+1dih#w^BdQWu5WmTnuyI`bG+V7+aK~h+jDR-Cyo5Vgt%Hr9DN`zuXB5S
z6W<T@%WsT)99B8Li>of{bm!iepVjv8c)DA9Qpht^7b=`HWbYVBYI}3OlfTn8doq1r
z!;5P_ju!11OiEHMA*Nc+-rW;Y-veh3-?qQ|^K?^#u&(-oy{l96@A$m!c{5Mnd+rF`
z>P%I=qQA9xUTwW|LafcV0t;5xQd(M&X!kBHtq-9G$7;TDbIxjP+<|-h^9u)$<E~%I
z&AK0A_rTfbsq?`?_goLjU9fd}<PmVj(Mju;R#=ijv=Vl1K~~59roQPh*Eh<jTY;&X
z1j^gO=xfRuF2^q`*;eUesn~Z9Z#@gSAvIyZro#8x=*i|JVh&~X!|)=f%0Ok^Q<pa0
z|M^ZhK7aL^@T@`_Rb!;;PVGq4XW|XG>%(ffJNMfD91Lrv?$W>sZ=!U*%^+%S>FCS#
zDPFzqaE{-WGT)xZBU{AtQ`y){-^^`nEaai2XLcs)9;Ig7JQDB@e?)Yuu0&_!8z~82
z>Sjvutyg;2j~Tx>{O7UaLIzZ~q5DAfg~!u1Jk;B5sV|?AXWNcp3ruvroOk;DD1Ksw
zGP$MB?qXxf&{`R4K)s*;0W4OZKhYx;J>`V&eRM%n>P_L#=#$n(x6<A(yl76G&`3O4
zgrZ>f>|9flU!o;9d#Lg5)+3g8rt7xeE}8!E)KOYicQS*LTx%x69uScDCZl%L<*t?K
z*g^9WP9D9ag89S3Z#>P%Jr*wR$55KorVn}U?zpo>f!dJ|jy3f>zz`2Ux#Tf@a@;a`
zZq*oh^y%R@VM=O~l@G3+IlOspLSJ<3nb&vJuIDZ=Wqb#YEShU}-Kt-@D2udBTp_u_
zmOph*^`9jD`_uWfO7-uLtPNVuXN1LPQqERK>mOUVF)MJy2@<fks@}|%@;#)(y~)|i
zSu<w)gA)W^UWapQsNV!vkCi>#OR7rx;&Buk^R51s`1_V#ym|B9qKShUZHE^Q+`O9|
zWHsdatKQSyzm<L9VQb2I>4A%>106f#ZA(7dDjEJBf}lyNUkU&HJA7HSn}(EkYbU$+
z^qe1fT2gg0`9sx#B=Y7{e!_NLhI_Ks_4WllGR)D|+$D3@VtvVe>W`|ob-Q0}{}3r^
z_^A2WVVkQ*DlaEa(mH;S`nOS{EaRW&X1FG##E*77jN=*<#b0kN>pVVTHhpQq&u%&e
zb`A>4oUcnRozbm1q}-%pEM?%`rt5X(_m17w-huvnDjL=%C2#G{ZPPv)8z*45x87mf
z$AaImz;C+~e|TB>SxY(iOfIyF%QpTI(K^*O17E%j0s#U%b{PZ$OF`j(fq>N(8y8C}
zSnCS3hjZ!gv@1|N99IqTz?eKp1w<bp&e&C1p9f`gQm?C+{8C9iC>|yClURY7E4N75
z`Mc?UJ34CLE8h}z<x|Qwr-%>Ttz#e5m*+M=wNy9T^`(9)Y;DH5k#N1cGx{ExpK3}*
z>cM|<6e*dbzHGw3B>hYZFv$a&LADLt(YWX)mN_ZTlMmXYFh;C2lL9G`OWCR{>o326
zc&ULbIaE{w9-mm0YKb}{>uL6l$9t2$eoBL}(tMU8sv!b}RX1ZrH3(hGluyn$X*ta~
zK5B+~z-JHf)z(3GvPcUoYaa{jV2@B1<Cf(=uWqIq#5bG$SpIQVX8Z0PdfA`3Y`=V)
z*AivHF7)I_oRlFBK^0cQ8N;jC&l_Rc_n7Z;Vxzut|1DE-+%Dk#)P%oz_U{dMpA=Hh
zid+?)$~F``P;|~vWCsgbk7vi@<FMXI>ZPVg<ygb7->y<<?`##MAM4i|8%Y)Cvu^o$
zvfz8lCRXDl)M=|(_6O{NhCwH}c3*j$ar0;80Nb9OyC)->)qhi7$7iD=O?>p&=Ob9g
z1HW=c{h`Lcvi07?8rg&vljQ3ZFZ<@9R{1v8%g;<N#$<*?(DGnJgQwsL`Ek4Z7MAkt
z{G0rg(Sj^&uM%=J@p`ml9G-`Vm5uUo@`fX^X3!?NIlqrrvKBZ`o3L!ULscZ-(H33c
zP=wTn0v{X~zc9zU<1Dz#p`vF>;(?C%P3TXZS5y>rwn5O>kv%)ks7#J!izy^++0#Z9
z(|f93|2w-H6LBgBobP>ry7;lnGXg){;^ZqZsJkKm<_On`NO>WwzLDCVX4$UVkRm+a
zmL9j3HB)NIj<V05NFLR)vGM(pchM4@ta}9Y8R*Jtg{SYgRre8hg;Wv~OH?K$PgR`m
zG4+Y2p6adehjpv`x*jQR96Y!0c>1@G_3{MLz^~~{o-AqemuJS`UyHDqw0?9hDE^V~
zt(fh3C)xITG}bn*^$-ZGHcHB9kEj}Y;hcYRqnvxju^Oz8weA%G34{KayH)Bn>$HRa
zn4jzJsn9-PzdGTTq0Puz!wu`sFXW4`cFn!Ujqm57`g@hMspa*LT*%_s_c~9BHk5m`
zQvB@C`=sC7R~zWi%FA2z$96=e+^QZ-+Tk3@UFz`Ewe_~;3AXDs)T=Q?HhW{zu9n3M
ze=Zuc_?RC3^ZAuWuc~!R+B&9e23&$%-Hy$FU7utoa#m9Dmes<Kox98(D%=~4n|IIi
zUt&KT7@ihK)w(y+cQijT^VOp@KdjDO?V9aB)&DDsZTsV2LcLtp?|q|%&Yw$t^t?S>
zrB9(*rrdvb=!SQyxA$t<{_Gg4E_|7PW#4@vk;_fGZ$7Q!6qAGB2I%0$*PI*NzxNse
zqtWN|XuX^?sZZmwmS$eL=>rzS0hZ9r)d8bC`fCSY32L6$PIbOmpI?~SJL9&uOslE%
z#?FduZhCP?u`W+P-F_H%(u8|VWS3G!AIRTzJbvqj+qjWxn}WkD;<HaK8WppmgpasX
z!#X}U0@p~pfd4l1)nk^OKIt5q0^Us$Vjtw%RvokdouYBz<<75VcTi1^CH150;*Ha)
z>Scu^u2!y#ecpJKdi~o+@m@C#6h)--hyGR7j3Ck6>Y<LuWS2%Rk#wOsrJcJUJg1&T
z=T{6)qbH6zzdSqFEjk-|ph?V&>bwe${Z(TtocygxyD{|6Oi}JCIR6surlxA2U;X`V
zyZN5;@@0A@1^)gzNo!TN-_G*rc=ulESwZttj~kfj(vE{lM@y)7qc2{JMjPvmORx4H
ztP0PpZ2Hl6;HkaGm4HJrHg^e{gwLO$hQ2~-$XGgC$MDgi7f%9yJG^R6soz_qK{{=*
zriAwzr&{{z&iu5TuiyhUcbn}x3^K%rD+T@MJ`D?vC}{;Hs}DQL8?u}DthrblIsCOt
zgEgbe$}HuM-Wl}I9O{P!f&E&eeZHM21&U+TIw|!nzdn_oI#rd(_1!bzx>K>V1J8si
zG3R=ZGwr2JD&|$RNS)UoqwikqwcC3HJ)~uu8{ZUXZW{TCXX*NW;8TrFm&o<92U1TG
z$hCp&7Y`ma*0Br;vn!b$oD8+vO?$l#s!mU+Nvhq0_IT+XGy<ckp>6FmBKeL-**mpw
zd>J}-<>1__x8*fXeeFJ1qw4kS?F)5OpRC(s=q;tV?yj}RCdnG%(%XM}Z(lR_ehIHX
zu0LWC-6-+;&c3O&A=ZT<)0S$(V)GLxR_laKNN$omUjFG}n*OtJLs_lPa*N~q#m=Sc
zcSKiQe|P;+v{m_quzQgosFXVV16QGS`OQC4#vN17g|dCxq^I#iCMzrLKF92YP4)cL
z_uJIC+d*o9t3+n@Rr}ZH>x!jp32o%NwZ4^nFw}$pO6}#iqO-a`_R*fGyb5oRbrk8z
zC^|$|;hdya{OsL*vTkP^_x0z&;TIb#gMH6c+`Lv-`ctdIZOs0v@vcpmsar$4dLN$P
z+jn%-Xtt+3T5w9YI`kvY%&{{UWrRljwMFhsmJ8W;=ZT8&X>FPQopTgdpj-Qu%iF2o
zrlh^CZ$AsQYwzde9SNg$`aKhh32e!8LN;6dKkH3$ZaMu)^4ig%h3dma!6zpv*EWB9
zz}tMJwK3t!p{{_ipTb_fza0%ts1qogn)gj^Ut+#}<Sec^KOK4a_VIbAS(J$Ty+eGp
zrBEz+>`IZ-^LxR?&wDzBuvwqi*pHfreE7Y`^s^0nFm$1LWa{grr{G0=iOiIYS9!Ii
zV}Iz(o}`$Pm$QY6ln1j4?bp;ULUxg99oqS;ue9y{c5bls<Yk#o&8)c25@H9Hzg10H
zn<m#LF3m1?n77%&%fslR$Ildf=c;|rU%$l8>`z=5UwWZq5c6hT(8Cuml1CnOygPF&
zP<P%@*YYI|+?uWXusQ8DMC|R5HIEtUQ&8&Kv9^-9JLP8o_!iA9LzTwMExk7G(r<rk
z>w5ks(E8@itA9S-c>J)j6xTdkioZZ5O9l3B&#EmmvJSt;)7~cAhS|NL`<Z^*!TJc4
zi<G$W{147Ihiom&mA;Nz3tZt4h4WZ{y4G&8+8yOp5c&M&?88b43Eh~S+5Bxk^rXBO
zf~$D%@g_9KsMS#32Yx$N>!82BJ$x#7&k#oY9p1(bx+|TBG8|P(2oZMuwuV3NEHz#9
z&4>5lc{68%ry-Fd&QBSb;~VZ@b}ZEKcCv5V_-h2?%a)#YxieEFSKrCXC2nBbuh@$T
zu{0{$<wnm9={8N<sdVb&!h36jMY`XWIbmGgMZJ!Nm))w@sJ70MN*=#*$in^Ve%-O4
zoF|doYLSHk&pZm1x?8k7+(#er|Nf#xeXdu`LONvXIIw#Cqs^78@GYffIcHQKsm;?w
z6wy~sz79X)&mMa&u<morm(u*i5iM4mK-8GMZ02x^QO9(p_$rxHZLZ?hY)X*7kIMZu
zm6@mgG~)*X!%fRy7U%_-aNg7zm##7r{kUoH%<1t3`LP=}{tWxw`;~aTbHwe&)#n?i
z#y)9n)wi6Uwf~fvcXDw&@a}&7xA~-y9&*6Kn(>M8h=GY5PP0xN*g9i(Fx>ojoUl%?
zcqlNLW$L41tnI_`==Le@CtbJTP3qT!lJd`Xd{{&2O+Gt&NNGVWuO<0%$o4C!`tgT5
zR39hJCZl$ma&=c&zFK$9O)jiqA(a2A#xZJ1pknae$lHN8-h`o5_EpwA@U-%3nQgUr
zQ}CJ%Rvqs0gMGL1tXjYE*n#&(1<IixEgX5`_4N1E$!zaU+VSQ&&NV&f&gi`F<=SCy
zFCESTN2}oZ!@BGOC090XEmoTl>t8+p`svHY(Trn(Q?seNiZXQj@D?3mty+5*q+=G!
ziPU!!j*7-{do|~eN&iuw_jJ9I;5X~N>+6OOXFgngccjJZnVgbi<5YkA)=V@{K>5~l
zhy7lJIz10}KXlm2Jfd*o^5Y8$ss=A|yKQ{=?%Ns^OSG)2*HGWMaUsL@<f+e>PbIik
zpCa_v-MSQR7Pe79b*?AXt@%;&tT%-HTEm_?y_zU--Z?Z-c?9C@UUT!3+P!q=wpJd|
z_MtCv8`j`F{|ua1FueE2j5U{J>4_e7U~S_4BGAq$E)6eKf++wAHm!oRWa*o9%hv)e
zH&{8?m}{BZ+FHT7S0FJss|wo8yBsR-1IfVR)zBfZITBwDb^W_MX9`i^vKr_B_))t9
z5yA4I`yI#tJf+`(bY$sUW?=uHzA(IeX9iqQ2?yVSG>w-wdTe&@0GR?{AD+H7fg>*N
zBZ3|5#b+|T0dULX;$9Du)dp6Y=?%i8Twob7s1_1i*%sK;qrZ#CENypS7u&#t;|KKZ
z50JD+|HaW~M2l^aF^g^Sz>~EQpXmzZ@c5+$mNEhHi^&!8_{B^J@Jp}0e3alaO=Og-
zVb?lHS$V17#T_hg^6$Sf{M|Dnqbo1hK{vR-26m-=Gnj25d)~8;AQSk=3+Nx%v>iGL
zVc^zwNRx_LL`L1}fUmy}Mg!1zald^DfCdmUePHrS5Tp(`Nr()234%o+be#V}Z~#JC
zQ3sDeR@5PAfbCs8b$LTX1VkUr--bvCWJUL60Ku$)P!Py+q!D}w%X`OyQQ$GlAqax>
zT?XpkQ6LBs7o}uzSO7m9agpVV0Dv8iv>ZEt9FDZSRe;-KPQl+s0ctq%BD>Um{Jeq=
z`0m$4hzyQnE{@v=4(Npb0c-2wozQ-ZrD6H(KH#fkyk#TC6ueGc>X8mKJLru@#)4bI
ziw?AMa9rb{3+f{+<8gQx-$kFLAMJviRhF6z^4jGK4t|36=(#!ozeNawAb|+acR>o&
zrM;8I5-h@IaG;dVW_n#Loy|*lFGA>SUP5INLTB?5FBTzmHm|6Ia2c~Ss>M18m$51<
znnu`6-}(KEDi&cgxP7($F{J3aM0EPwIAqk|knDe$;sB<L+k1as#sN(6^u4oxApleS
zUr}Fd2f>txsa*R6l49S8wD)&&XVIqM7n4_3sO8E865kMzrGzKbQCXHIiznmZ+!v6d
z;*u4xJ9uE<?f`HvFn-Y*p>#KT`O_b9@bC*L3oNiiy@cA7Kt?Yfja`E#tD(_q8p|3C
z-S4{-1x}}siSYhz=!6)c2J%lnKputsV!-D|z;+o=52PoK*e2xPvNAv!*cmB9RF<I(
z$TwVwlp%(ep$r@yhUbwo%Ks?C;9;v*5Jduu*b0Uh(G(1vf)wHqgSWDfM4{l|QKXQB
zB&jeKg4_ejYfwnRGT}-h<FIfHQb^AVV|bGUcHdsn-$X1tLm?4RN23=aOH$B?$z>=d
zfGwu5UeGQXF{})Q2rt`^Lgd3~OobRUEY*j+iMSnxH?d?Ayc;R}Ut_^yaBy`Wzz9RX
zKAPcG@Zouw=M5+&B9|O9HjKsse$q=x$o}`rcZn1t87@RhDLBMGF_e-CBzPVv#bObU
z$WTfGbh7FPr63!DiRVNjAaM#P6$MAnncjs<r@%Jl_kKu25|2lmFGJHnOJK@dIvtq{
zfp>;u=!Hmn62qHV3I%@k79d4JBldx@6kNBg@eUa-_)-s3DF%=#j9!XGk~~(vOQ3+3
z+ZIbHO#KolAiqUw0BIQ*Os03qSioI+Dc#R7v`hj<xq7h_QF(?^BFNI=d5^SAK+G6J
zDS?QEosm+2JQMQ?!1=?4^wR&K1>lS%FzxhGJd)VM&@z^UgRKUUmhp%kV<^Rdh#`eu
zN?_Il0vbs3C{haUDQCtCjV8mC5713^;NXey#0N-O8$?eG!ih$M;WG3KU}zwc21Af4
z71>{3juR+DZZ22>!(hM=nP6y;V8&FBz=S6nC^#eTXmJ1fB2FIv*-SK<iS%d;IC;v1
zJc)?J6bwicka%$g3<C^11vVZ=$U;EE1BOy2eFF4ENSZhdi5M`*9)RPJWVsbhfRQ1g
z3<Hda0XaoT6AXg}O;ErU=?v8=Xy)-zus95i8G%Ho%+(2u#s`h2Fv$jhk&%FA1!fpD
znn@1875I#rg2te6f3=qXuRjAoJV*w8g5bnR1#tB`qr8CX$jufE{R1E)wJ?CcOpF0`
zn2~fC4B@Xep#FywhJ?g7D+h@oGtm=+MgJYpfA3;3jQ$l3J|o5~B_IcSrGij_=f?ua
z&)6~e3IN0C03j)i8V^W-+z+w>X;2UN=an!t&|@S~Zsp)Wd-zR^Ks<)goS`uwf@9JK
zV8a+X2K9&-5?ne8xXLK+7(9~$1q4Df;tpU~<lNIrJPGva1p|zLMENUWMEVQ|fua86
z3~c-v_%zQkh@DCNG2k-=Oq~%)jBW&tArhIb0g>5~V2C7U$)JF%UltLy{tqcKfiWZi
zose-%;zuDeBS;3{afR1>f|RLPEHhhxQD9;f<$q`th=iClg#rQ^Mw(K{$UJuioq^)h
zV*~i{C+Ht47AP!31q_8gCtL9nhC)CxXqUq<K++f^IS>|+m|O@JM`9uk7O)Oc5L?jV
zzjOukK&JQ0I{`)t56<N=z_4UwUb(U!=ot$ajzh}qSP+cEPsV}R$iITPsXG?~bPy0z
znBJlQwlV4&IE9DICRVgg0fNocBa<;eOe&C}mG4pk5SWOSKmfynPZh501WUv+F$+-m
ze~^TXO!HSDhy|Y`VS*8efYHE0fq(zem_TN3kN~*G*dT?>Xu$w;3Csf_(wAyh_CX;c
z$+e3x>Js^}6e5#Z!vSl-NPZkRgULvK5Pl+)?-iZku;88uMi^i*<GWOFI}?)@f{vNQ
z9;_-bMkZ(wbux-Q@E!yvFNq_8Xp<2c@Z}c(qtpLi@`Hd8IZUu}Bp^m$#2PGuFc|`{
z>c&hhphk>*2Qs*9LP(`gPtoA~3u8nH91U>fjL49HC^5l6J~|VOK>C-*ODx8tfwD5x
z!&4E{$N&T$4w=`lpaPh6Gm;fp82TFG%6dQ;7)>NF5lof{M8Wg`1EK%F<i~@lG85KB
z`s%^TP6z}hLBiuO$Qt6xdPL?R6;A*&#{cRq>L2j7jFSOy&X_`CBr9;iOd&g-h-dO&
zcnbJ{_<x<yu>uncCYiw#K}gTk37J`)z#N+?AOLF}Od%DXOhOi@R#1U}p)gUEfB|}f
z)KgwgehSb#rkBB@0v!AWL>-Jqk^nqBQ(r)Kn3@2Vn2{J@0>C)AMuTrDF)0g(LjZ#G
z@%$G{62K&mxnl~GDFA^V<B9}W++dbZ0ujxm;RFJKLHU5B0CV#{Iw3OIB~XvaVuLv=
zqv(Lf@J#-VjC8`l1OOx9z^d>{wvtGU8VTl!MCK6#`DCINiNxe=3BcPjc1$3X{|y8Q
zOG{~>6Ed>GyAl~P1z84O38MfL2ItIzSc*hu@=OE@n#th+IbrnAXd)U|Bc_(IOfcYK
znXDVoR{G3pg^>X+gDGSoqA85bL4$fs%prnl5u<nmC1i>Vz(AH8s6`_Kd<OH&IADJn
zMn}YunG6MZmq|Ck8VTb<9+;{#2OmTnm1!CS;!`m1W9%4sT}B51I$?61L=w{)A@Jc~
zcEQvh7%>6^<Nw#jgP5C17Jx-&ny(}4dQ1osDNIuUBA_*+%O(PHE%zgI`h&$e@R913
zA_^8t80RBEDVcQ$;KJk)iDae)BsBO8Hd8P|BonAi;Sm5b^A0QnEXNu_6?Dwx9{>@U
z=G;V}yiBYklb7c3)MezSV3`~QkwQi@k&ps>CnL2e%&wS7AtC3ZkbnQOn1rS8sQd>*
z=uZNHBh%=>6q(U9ftfi|$AAVa_=&Vk!lIev14M{SQyBoGP#HT0OW{l`0pnmY+9a@|
z#i*Vn5T!60Boc{vvP}ZFsx9@4{f{&tT3{M6kR(P)2NV4<;Bvv@8M14O{QKJkkWWD0
zl`vo;i45Kf5Qt1++&(}9v(IF7NnlRPI36+vm|e!;m<$$xm^)@()**vxjHUpr1v3T5
zz$Y*<fee<3{zGOdI3{Dkx;n#%!5kmi5?)Rju<FOW3_}LYVk9mZtjjS<1lS%z4!^Bz
zj|z+=6A)NkrUvo!)AuW12Is*TsYM2?V;Ttf2qdG3k-^#x0z>rXFW=E*Fvn%a8muQW
zVojnjbpoc=Om+?pZqEIW)Qh`hU}<`}8>ib%ARR=;_z}QJjH?-7-I>g&7(iITmefiF
z0gS@vQo!~cb01iYAu@i1s{c{}0~SQU9fV9UM$-c7fzMRJlwZ&)DiIuh3=BK~_6C6}
zAxG$}0(J(1C%_5%6F9l7531wHXs}U?CYhR<<0%$kD8@uH3$(EbXoq5kGsS^*0vv9g
h{QrMdWLFdwazM;${{i~$B*2M)!=qGG%<U{t{||~Rp~L_H

delta 38656
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

-- 
GitLab