<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE TIP SYSTEM "http://www.tcl.tk/cgi-bin/tct/tip/tipxml.dtd">
<!-- Converted at Thu May 23 10:46:36 GMT 2013 -->
<!-- TIP AutoGenerator - written by Donal K. Fellows -->

<TIP number='89'>
<header><title>Try/Catch Exception Handling in the Core</title><author address="mailto:tom.wilkason@cox.net">Tom Wilkason</author><author address="mailto:520065607613-0001@t-online.de">Frank Pilhofer</author><status type='project' state='withdrawn' tclversion="8.6" vote='prior'>$Revision: 1.10 $</status><history></history><created day='11' month='mar' year='2002' /><discussions url='news:comp.lang.tcl'/><obsoleted tip='329'/></header>
<abstract>This TIP proposes the addition of a <emph style="bold">try</emph>...<emph style="bold">catch</emph>...<emph style="bold">finally</emph> command to provide a more robust and powerful exception handling mechanism.</abstract>
<body><section title="Rationale">
<para>Exceptions are currently supported very well in Tcl, in fact they are a major advantage over many other languages. However the mechanism to <emph style="bold">catch</emph> and handle the errors is someone limited and does not promote the full use of existing error codes. Wrapper procedures can be written to improve on this, however both a performance and compatibility penalty is incurred.</para>
<para>This TIP proposes adding a <emph style="bold">try/catch</emph> command to the Tcl core (or C based Tcl library). This implementation is not unlike those found in C++, C#, Java and Python (to name a few languages).</para>
<para>An argument to add this to the core is that it modernizes the Tcl exception handling without impacting performance in any other way. <emph style="bold">try/catch</emph> are isolated commands that can easily be added, and do not interact with other commands or require other changes. <emph style="bold">try/catch</emph> is not an isolated extension that is useful for special purposes only. These commands, if implemented into the core, will be useful for any script currently using the catch construct.</para>
</section>
<section title="Specification">
<para>I propose the following two commands be added to Tcl:</para>
<itemize><item.i><para><emph style="bold">throw</emph> command.</para><para><emph style="bold">throw</emph> ?<emph style="italic">type</emph>? ?<emph style="italic">message</emph>? ?<emph style="italic">info</emph>?</para><para>A <emph style="bold">throw</emph> command with <emph style="italic">type</emph> throws an error exception with the errorCode <emph style="italic">type</emph>. The <emph style="bold">throw</emph> command works as the <emph style="bold">error</emph> command, but the arguments are reordered to encourage the use of error-codes. The optional <emph style="italic">message</emph> and <emph style="italic">info</emph> parameters work as they do in the <emph style="bold">error</emph> command.</para><para>The throw <emph style="italic">type</emph> can be any user defined or built in type, built-in types include POSIX, ARITH, CORE, REGEXP, WINDOWS, NONE, ... The <emph style="italic">message</emph> is optional, and is the same as that issued by the <emph style="bold">catch</emph> command, <emph style="bold">error -code error</emph> &quot;<emph style="italic">message</emph>&quot;</para><para>An instance of <emph style="bold">throw</emph> with no arguments can be used within a <emph style="bold">catch</emph> block to immediately re-throw the current exception that is being handled by the <emph style="bold">catch</emph> block. When an error is re-thrown in the catch block, the current error is propagated up one level following the evaluation of the <emph style="bold">finally</emph> block (if on exists). Enclosing error handlers can then deal with the error.</para><para>Note that</para><verbatim><vline encoding='base64'>ICAgIHRocm93IHR5cGUgbWVzc2FnZSBpbmZv</vline></verbatim><para>is the same as</para><verbatim><vline encoding='base64'>ICAgIGVycm9yIG1lc3NhZ2UgaW5mbyB0eXBl</vline></verbatim></item.i><item.i><para><emph style="bold">try</emph> command.</para><para><emph style="bold">try</emph> <emph style="italic">body</emph> ?<emph style="bold">catch</emph> {{<emph style="italic">type_list</emph>} ?<emph style="italic">ecvar</emph>? ?<emph style="italic">msgvar</emph>? ?<emph style="italic">infovar</emph>?} <emph style="italic">body ...</emph>? ?<emph style="bold">finally</emph> <emph style="italic">body</emph>?</para><para>If one or more <emph style="bold">catch</emph> blocks are specified, each corresponding <emph style="italic">body</emph> represents a required block of code that is evaluated if the resulting errorCode matches the <emph style="italic">type</emph> condition. The required body of the <emph style="bold">finally</emph> block is evaluated following the <emph style="bold">try</emph> block and <emph style="bold">catch</emph> block (if any matches).</para><para><emph style="italic">type_list</emph> represents a list of glob style patterns used to match eache of the error-code list conditions. A match is declared if the <emph style="italic">type_list</emph> patterns or errorCode elements are exhausted (whichever comes first) and a mismatch has not occurred. If a match occurs, and <emph style="italic">ecvar</emph> is specified, the errorCode list will be stored in <emph style="italic">ecvar</emph> within the local scope prior to executing the <emph style="italic">body</emph>. Moreover, if a <emph style="italic">msgvar</emph> or <emph style="italic">infovar</emph> are specified, the error message and errorInfo contents will be stored in the local context.</para><para>If an error occurs during the <emph style="bold">try</emph>, and no <emph style="italic">catch</emph> blocks are specified, the offending error is rethrown following execution of the <emph style="italic">finally</emph> block (if specified).</para><para>If an error occurs during execution of a <emph style="bold">catch</emph> or <emph style="bold">finally</emph> block, this error will take precedence and will propagate upwards with a new stack trace. If an error is rethrown within a catch block, the existing stack trace will be preserved with the rethrown error. This allows later discrimination of the two different error conditions (rethrown vs. unintended).</para><para>Note, <emph style="bold">catch</emph> {<emph style="italic">*</emph>}, if specified, will catch all remaining errors. If used, it should be placed last since each of the catch blocks are evaluated in the order specified. <emph style="italic">type</emph> is that set in errorCode, and can be any user defined type, or built-in types including POSIX *, ARITH *, CHILD *, CORE, REGEXP, WINDOWS, or NONE.</para><para>If one or more <emph style="bold">catch</emph> blocks are specified, and no <emph style="bold">catch</emph> block matches the errorCode condition, the error will be propagated up to the next level following evaluation of the <emph style="bold">finally</emph> clause (if specified). An enclosing <emph style="bold">try</emph> block (or <emph style="bold">catch</emph> command) can then be used to handle the error.</para><para>The <emph style="bold">finally</emph> block is used to perform all the clean up code. The <emph style="bold">finally</emph> body is evaluated whether the error occurs or not, or whether a <emph style="bold">catch</emph> block matched the errorCode. It is also evaluated if a <emph style="italic">throw</emph> statement occurs within the <emph style="bold">catch</emph> clause.</para></item.i></itemize>
</section>
<section title="Examples">
<para><emph style="bold">throw</emph></para>
<verbatim><vline encoding='base64'>ICAgIHRocm93IERFVklDRSAiQ291bGQgbm90IHdyaXRlIHRvIGRldmljZSI=</vline></verbatim>
<para><emph style="bold">try</emph> only (no practical use)</para>
<verbatim><vline encoding='base64'>ICAgIHRyeSB7</vline><vline encoding='base64'>ICAgICAgIGluY3IgaQ==</vline><vline encoding='base64'>ICAgIH0=</vline></verbatim>
<para><emph style="bold">try - catch</emph></para>
<verbatim><vline encoding='base64'>ICAgIHRyeSB7</vline><vline encoding='base64'>ICAgICAgIGluY3IgaQ==</vline><vline encoding='base64'>ICAgIH0gY2F0Y2ggKiB7</vline><vline encoding='base64'>ICAgICAgIHNldCBpIDA=</vline><vline encoding='base64'>ICAgIH0=</vline></verbatim>
<para><emph style="bold">try - finally</emph></para>
<verbatim><vline encoding='base64'>ICAgIHRyeSB7</vline><vline encoding='base64'>ICAgICAgIC4gY29uZmlnIC1jdXJzb3Igd2F0Y2g=</vline><vline encoding='base64'>ICAgICAgICNkbyBzb21lIGJ1c3kgc3R1ZmYgaGVyZSwgZG9uJ3QgY2FyZSBhYm91dCBlcnJvcnM=</vline><vline encoding='base64'>ICAgIH0gZmluYWxseSB7</vline><vline encoding='base64'>ICAgICAgIC4gY29uZmlnIC1jdXJzb3IgYXJyb3c=</vline><vline encoding='base64'>ICAgIH0=</vline></verbatim>
<para><emph style="bold">try - catch - catch</emph></para>
<verbatim><vline encoding='base64'>ICAgIHRyeSB7</vline><vline encoding='base64'>ICAgICAgIDsjIFNvbWUgY29kZSB0aGF0IHdpbGwgY2F1c2UgYW4gZXJyb3I=</vline><vline encoding='base64'>ICAgIH0gY2F0Y2gge3tQT1NJWCAqfSBlQ29kZSBlTWVzc2FnZX0gew==</vline><vline encoding='base64'>ICAgICAgIDsjIFN0YXRlbWVudHMgdG8gaGFuZGxlIFBPU0lYIHR5cGUgZXJyb3Jz</vline><vline encoding='base64'>ICAgIH0gY2F0Y2gge05VTEwgZUNvZGUgZU1lc3NhZ2V9IHs=</vline><vline encoding='base64'>ICAgICAgIDsjIFN0YXRlbWVudHMgdG8gaGFuZGxlIE5VTEwgKGEgdXNlciBjcmVhdGVkKSB0eXBlIGVycm9ycw==</vline><vline encoding='base64'>ICAgIH0gY2F0Y2ggeyogZU1lc3NhZ2V9IHs=</vline><vline encoding='base64'>ICAgICAgIDsjIFN0YXRlbWVudHMgdG8gaGFuZGxlIGFsbCBvdGhlciBlcnJvcnM=</vline><vline encoding='base64'>ICAgIH0=</vline></verbatim>
<para><emph style="bold">try - catch - catch - finally</emph></para>
<verbatim><vline encoding='base64'>ICAgIHRyeSB7</vline><vline encoding='base64'>ICAgICAgIDsjIFNvbWUgY29kZSB0aGF0IHdpbGwgY2F1c2UgYW4gZXJyb3I=</vline><vline encoding='base64'>ICAgIH0gY2F0Y2gge1BPU0lYIGVDb2RlIGVNZXNzYWdlfSB7</vline><vline encoding='base64'>ICAgICAgIDsjIFN0YXRlbWVudHMgdG8gaGFuZGxlIFBPU0lYIHR5cGUgZXJyb3Jz</vline><vline encoding='base64'>ICAgIH0gY2F0Y2ggeyogZUNvZGUgZU1lc3NhZ2V9IHs=</vline><vline encoding='base64'>ICAgICAgIDsjIFN0YXRlbWVudHMgdG8gaGFuZGxlIGFsbCBvdGhlciBlcnJvcnM=</vline><vline encoding='base64'>ICAgIH0gZmluYWxseSB7</vline><vline encoding='base64'>ICAgICAgIDsjIFN0YXRlbWVudHMgdG8gZXhlY3V0ZSB3aGV0aGVyIGFuIGVycm9yIG9jY3VycmVkIG9yIG5vdA==</vline><vline encoding='base64'>ICAgIH0=</vline></verbatim>
<para>Re-throw <emph style="bold">try - catch - finally</emph></para>
<verbatim><vline encoding='base64'>ICAgIHRyeSB7</vline><vline encoding='base64'>ICAgICAgIHRyeSB7</vline><vline encoding='base64'>ICAgICAgICAgIHNldCBiIFtleHByIHskYS8wfV0=</vline><vline encoding='base64'>ICAgICAgIH0gY2F0Y2gge0FSSVRIfSB7</vline><vline encoding='base64'>ICAgICAgICAgIGlmIHskYSA9PSAwfSB7</vline><vline encoding='base64'>ICAgICAgICAgICAgIHRocm93ICAgOyMgcmUtdGhyb3cgdG8gb3V0ZXIgdHJ5</vline><vline encoding='base64'>ICAgICAgICAgIH0=</vline><vline encoding='base64'>ICAgICAgIH0gZmluYWxseSB7</vline><vline encoding='base64'>ICAgICAgICAgIHNldCBiIDEgICAgOyMgd2lsbCBleGVjdXRlIGJlZm9yZSB0aHJvdyBhYm92ZQ==</vline><vline encoding='base64'>ICAgICAgIH0=</vline><vline encoding='base64'>ICAgIH0gY2F0Y2gge0FSSVRIIGVDb2RlIGVNZXNzYWdlfSB7</vline><vline encoding='base64'>ICAgICAgIDsjIFRoaXMgd2lsbCBjYXRjaCB0aGUgaW5uZXIgdGhyb3c=</vline><vline encoding='base64'>ICAgICAgIHB1dHMgIiRyZXMi</vline><vline encoding='base64'>ICAgIH0=</vline></verbatim>
</section>
<section title="Revisions: Tom Wilkason March 26, 2002">
<itemize><item.i><para>Added additional <emph style="italic">ecvar</emph> and <emph style="italic">infovar</emph> optional arguments to the <emph style="bold">catch</emph> clause.</para></item.i><item.i><para>All uncaught errors are propagated up after execution of the finally block (if specified).</para></item.i><item.i><para>Unanticipated errors within a <emph style="bold">catch</emph> or <emph style="bold">finally</emph> block start a new stack trace and are propagated up.</para></item.i><item.i><para>Additional <emph style="italic">info</emph> optional argument added to <emph style="bold">throw</emph> for completeness.</para></item.i></itemize>
</section>
<section title="Reference Implementation">
<verbatim><vline encoding='base64'>IC8q</vline><vline encoding='base64'>ICAqIEltcGxlbWVudGF0aW9uIG9mIHRyeS9jYXRjaCBhbmQgdGhyb3cgY29tbWFuZHMgYWNjb3JkaW5nIHRvIFRJUCA4OQ==</vline><vline encoding='base64'>ICAqLw==</vline><vline encoding='base64'></vline><vline encoding='base64'>ICNpbmNsdWRlIDx0Y2wuaD4=</vline><vline encoding='base64'></vline><vline encoding='base64'>IC8q</vline><vline encoding='base64'>ICAqIFdlIGtlZXAgYSBzdGFjayBvZiBjb250ZXh0czsgd2hlbmV2ZXIgd2UgaGF2ZSB0byBoYW5kbGUgYW4gZXJyb3Is</vline><vline encoding='base64'>ICAqIGkuZS4gYXJlIGV4ZWN1dGluZyBhIGNhdGNoIHt9IGNsYXVzZSwgd2Ugc3RvcmUgdGhlIGN1cnJlbnQgZXJyb3I=</vline><vline encoding='base64'>ICAqIChlcnJvckNvZGUsIGVycm9ySW5mbyBhbmQgbWVzc2FnZSksIHNvIHRoYXQgYSB0aHJvdyB3aXRoIG5vIGFyZ3VtZW50cw==</vline><vline encoding='base64'>ICAqIGNhbiByZS10aHJvdyBpdC4=</vline><vline encoding='base64'>ICAq</vline><vline encoding='base64'>ICAqIFRoaXMgaXMgaW50ZXJwcmV0ZXItc3BlY2lmaWMgZGF0YS4gRWFjaCBlbGVtZW50IGlzIGEgbGlzdCwgd2l0aCB0aGU=</vline><vline encoding='base64'>ICAqIGxhc3QgZWxlbWVudCBiZWluZyB0aGUgbW9zdCBjdXJyZW50IG9uZS4=</vline><vline encoding='base64'>ICAqLw==</vline><vline encoding='base64'></vline><vline encoding='base64'>IHR5cGVkZWYgc3RydWN0IHs=</vline><vline encoding='base64'>ICAgVGNsX09iaiAqIGVycm9yQ29kZVN0YWNrOw==</vline><vline encoding='base64'>ICAgVGNsX09iaiAqIGVycm9ySW5mb1N0YWNrOw==</vline><vline encoding='base64'>ICAgVGNsX09iaiAqIGVycm9yTXNnU3RhY2s7</vline><vline encoding='base64'>ICAgVGNsX09iaiAqIGVycm9yQ29kZU5hbWU7</vline><vline encoding='base64'>ICAgVGNsX09iaiAqIGVycm9ySW5mb05hbWU7</vline><vline encoding='base64'>IH0gVHJ5Q2F0Y2hUc2Q7</vline><vline encoding='base64'></vline><vline encoding='base64'>IC8q</vline><vline encoding='base64'>ICAqIFRocm93IGFuIEV4Y2VwdGlvbg==</vline><vline encoding='base64'>ICAq</vline><vline encoding='base64'>ICAqIHRocm93ID88dHlwZT4gPzxtZXNzYWdlPj8gPzxpbmZvPj8/</vline><vline encoding='base64'>ICAq</vline><vline encoding='base64'>ICAqIFRocm93cyBhbiBleGNlcHRpb24gd2l0aCB0aGUgZXJyb3JDb2RlIDx0eXBlPiwgdGhlIG1lc3NhZ2UgPG1lc3NhZ2U+</vline><vline encoding='base64'>ICAqIGFuZCB0aGUgZXJyb3JJbmZvIDxpbmZvPi4=</vline><vline encoding='base64'>ICAq</vline><vline encoding='base64'>ICAqIEFuIGluc3RhbmNlIG9mIHRocm93IHdpdGggbm8gYXJndW1lbnRzIGNhbiBiZSB1c2VkIHdpdGhpbiBhIGNhdGNoIG9y</vline><vline encoding='base64'>ICAqIGZpbmFsbHkgYmxvY2sgdG8gaW1tZWRpYXRlbHkgcmUtdGhyb3cgdGhlIGN1cnJlbnQgZXhjZXB0aW9uIHRoYXQgaXM=</vline><vline encoding='base64'>ICAqIGJlaW5nIGhhbmRsZWQgYnkgdGhlIGNhdGNoIGJsb2NrLg==</vline><vline encoding='base64'>ICAqLw==</vline><vline encoding='base64'></vline><vline encoding='base64'>IHN0YXRpYyBpbnQ=</vline><vline encoding='base64'>IFRjbF9UaHJvd09iakNtZCAoQ2xpZW50RGF0YSBjbGllbnREYXRhLCBUY2xfSW50ZXJwICppbnRlcnAs</vline><vline encoding='base64'>ICAgICAgICAgICAgICAgICAgaW50IG9iamMsIFRjbF9PYmogKkNPTlNUIG9ianZbXSk=</vline><vline encoding='base64'>IHs=</vline><vline encoding='base64'>ICAgVHJ5Q2F0Y2hUc2QgKiBteVRzZCA9IChUcnlDYXRjaFRzZCAqKSBjbGllbnREYXRhOw==</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgaWYgKG9iamMgPCAxIHx8IG9iamMgPiA0KSB7</vline><vline encoding='base64'>ICAgICBUY2xfQXBwZW5kUmVzdWx0IChpbnRlcnAsICJ3cm9uZyAjIGFyZ3M6IHNob3VsZCBiZSBcIiIs</vline><vline encoding='base64'>ICAgICAgICAgICAgICAgICAgICAgICBUY2xfR2V0U3RyaW5nRnJvbU9iaiAob2JqdlswXSwgTlVMTCks</vline><vline encoding='base64'>ICAgICAgICAgICAgICAgICAgICAgICAiID88dHlwZT4gPzxtZXNzYWdlPj8gPzxpbmZvPj8/XCIiLCBOVUxMKTs=</vline><vline encoding='base64'>ICAgICByZXR1cm4gVENMX0VSUk9SOw==</vline><vline encoding='base64'>ICAgfQ==</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgLyo=</vline><vline encoding='base64'>ICAgICogUmUtdGhyb3cgYW4gZXJyb3I=</vline><vline encoding='base64'>ICAgICov</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgaWYgKG9iamMgPCAyKSB7</vline><vline encoding='base64'>ICAgICBUY2xfT2JqICplcnJvckNvZGUsICplcnJvckluZm8sICplcnJvck1zZzs=</vline><vline encoding='base64'>ICAgICBpbnQgbGFzdGVsZW1lbnQ7</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgICBUY2xfTGlzdE9iakxlbmd0aCAoaW50ZXJwLCBteVRzZC0+ZXJyb3JNc2dTdGFjaywgJmxhc3RlbGVtZW50KTs=</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgICBpZiAobGFzdGVsZW1lbnQgPCAxKSB7</vline><vline encoding='base64'>ICAgICAgIFRjbF9BcHBlbmRSZXN1bHQgKGludGVycCwgImVycm9yOiB0aHJvdyB3aXRoIG5vIHBhcmFtZXRlcnMgIiw=</vline><vline encoding='base64'>ICAgICAgICAgICAgICAgICAgICAgICAgICJvdXRzaWRlIG9mIGEgY2F0Y2giLA==</vline><vline encoding='base64'>ICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOw==</vline><vline encoding='base64'>ICAgICAgIHJldHVybiBUQ0xfRVJST1I7</vline><vline encoding='base64'>ICAgICB9</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgICBsYXN0ZWxlbWVudC0tOw==</vline><vline encoding='base64'>ICAgICBUY2xfTGlzdE9iakluZGV4IChpbnRlcnAsIG15VHNkLT5lcnJvck1zZ1N0YWNrLA==</vline><vline encoding='base64'>ICAgICAgICAgICAgICAgICAgICAgICBsYXN0ZWxlbWVudCwgJmVycm9yTXNnKTs=</vline><vline encoding='base64'>ICAgICBUY2xfTGlzdE9iakluZGV4IChpbnRlcnAsIG15VHNkLT5lcnJvckNvZGVTdGFjayw=</vline><vline encoding='base64'>ICAgICAgICAgICAgICAgICAgICAgICBsYXN0ZWxlbWVudCwgJmVycm9yQ29kZSk7</vline><vline encoding='base64'>ICAgICBUY2xfTGlzdE9iakluZGV4IChpbnRlcnAsIG15VHNkLT5lcnJvckluZm9TdGFjayw=</vline><vline encoding='base64'>ICAgICAgICAgICAgICAgICAgICAgICBsYXN0ZWxlbWVudCwgJmVycm9ySW5mbyk7</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgICBUY2xfUmVzZXRSZXN1bHQgKGludGVycCk7</vline><vline encoding='base64'>ICAgICBUY2xfU2V0T2JqUmVzdWx0IChpbnRlcnAsIGVycm9yTXNnKTs=</vline><vline encoding='base64'>ICAgICBUY2xfU2V0T2JqRXJyb3JDb2RlIChpbnRlcnAsIGVycm9yQ29kZSk7</vline><vline encoding='base64'></vline><vline encoding='base64'>ICNpZmRlZiBfVENMSU5U</vline><vline encoding='base64'>ICAgICBUY2xfT2JqU2V0VmFyMiAoaW50ZXJwLCBteVRzZC0+ZXJyb3JJbmZvTmFtZSwgTlVMTCwgZXJyb3JJbmZvLA==</vline><vline encoding='base64'>ICAgICAgICAgICAgICAgICAgICAgVENMX0dMT0JBTF9PTkxZKTs=</vline><vline encoding='base64'>ICAgICBpbnRlcnAtPmZsYWdzID0gRVJSX0lOX1BST0dSRVNTOw==</vline><vline encoding='base64'>ICNlbHNl</vline><vline encoding='base64'>ICAgICBUY2xfQWRkRXJyb3JJbmZvIChpbnRlcnAsIFRjbF9HZXRTdHJpbmdGcm9tT2JqIChlcnJvckluZm8sIE5VTEwpKTs=</vline><vline encoding='base64'>ICNlbmRpZg==</vline><vline encoding='base64'>ICAgICByZXR1cm4gVENMX0VSUk9SOw==</vline><vline encoding='base64'>ICAgfQ==</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgLyo=</vline><vline encoding='base64'>ICAgICogdGhyb3cgd2l0aCBwYXJhbWV0ZXJz</vline><vline encoding='base64'>ICAgICov</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgVGNsX1Jlc2V0UmVzdWx0IChpbnRlcnApOw==</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgaWYgKG9iamMgPj0gMykgew==</vline><vline encoding='base64'>ICAgICBUY2xfU2V0T2JqUmVzdWx0IChpbnRlcnAsIG9ianZbMl0pOw==</vline><vline encoding='base64'>ICAgfSBlbHNlIHs=</vline><vline encoding='base64'>ICAgICAvKg==</vline><vline encoding='base64'>ICAgICAgKiBmYWJyaWNhdGUgc29tZSBlcnJvciBtZXNzYWdlIGZvciBodW1hbiBjb25zdW1wdGlvbg==</vline><vline encoding='base64'>ICAgICAgKi8=</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgICBUY2xfQXBwZW5kUmVzdWx0IChpbnRlcnAsICJlcnJvcjogIiw=</vline><vline encoding='base64'>ICAgICAgICAgICAgICAgICAgICAgICBUY2xfR2V0U3RyaW5nRnJvbU9iaiAob2JqdlsxXSwgTlVMTCks</vline><vline encoding='base64'>ICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTs=</vline><vline encoding='base64'>ICAgfQ==</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgVGNsX1NldE9iakVycm9yQ29kZSAoaW50ZXJwLCBvYmp2WzFdKTs=</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgaWYgKG9iamMgPj0gNCkgew==</vline><vline encoding='base64'>ICNpZmRlZiBfVENMSU5U</vline><vline encoding='base64'>ICAgICBUY2xfT2JqU2V0VmFyMiAoaW50ZXJwLCBteVRzZC0+ZXJyb3JJbmZvTmFtZSwgTlVMTCwgb2JqdlszXSw=</vline><vline encoding='base64'>ICAgICAgICAgICAgICAgICAgICAgVENMX0dMT0JBTF9PTkxZKTs=</vline><vline encoding='base64'>ICAgICBpbnRlcnAtPmZsYWdzID0gRVJSX0lOX1BST0dSRVNTOw==</vline><vline encoding='base64'>ICNlbHNl</vline><vline encoding='base64'>ICAgICBUY2xfQWRkRXJyb3JJbmZvIChpbnRlcnAsIFRjbF9HZXRTdHJpbmdGcm9tT2JqIChvYmp2WzNdLCBOVUxMKSk7</vline><vline encoding='base64'>ICNlbmRpZg==</vline><vline encoding='base64'>ICAgfQ==</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgLyo=</vline><vline encoding='base64'>ICAgICogdGhyb3cgZXJyb3I=</vline><vline encoding='base64'>ICAgICov</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgcmV0dXJuIFRDTF9FUlJPUjs=</vline><vline encoding='base64'>IH0=</vline><vline encoding='base64'></vline><vline encoding='base64'>IC8q</vline><vline encoding='base64'>ICAqIGV4Y2VwdGlvbiBoYW5kbGluZw==</vline><vline encoding='base64'>ICAq</vline><vline encoding='base64'>ICAqIHRyeSBib2R5ID9jYXRjaCB7dHlwZS1saXN0ID9lY3Zhcj8gP21zZ3Zhcj8gP2luZm92YXI/fSBib2R5IC4uLj8=</vline><vline encoding='base64'>ICAqICAgICAgICAgID9maW5hbGx5IGJvZHk/</vline><vline encoding='base64'>ICAqLw==</vline><vline encoding='base64'></vline><vline encoding='base64'>IHN0YXRpYyBpbnQ=</vline><vline encoding='base64'>IFRjbF9UcnlPYmpDbWQgKENsaWVudERhdGEgY2xpZW50RGF0YSwgVGNsX0ludGVycCAqaW50ZXJwLA==</vline><vline encoding='base64'>ICAgICAgICAgICAgICAgIGludCBvYmpjLCBUY2xfT2JqICpDT05TVCBvYmp2W10p</vline><vline encoding='base64'>IHs=</vline><vline encoding='base64'>ICAgVHJ5Q2F0Y2hUc2QgKiBteVRzZCA9IChUcnlDYXRjaFRzZCAqKSBjbGllbnREYXRhOw==</vline><vline encoding='base64'>ICAgaW50IGN1cnJlbnRJbmRleCwgZmluYWxseUluZGV4LCBjYXRjaEluZm9MZW5ndGgsIGhhc0NhdGNoOw==</vline><vline encoding='base64'>ICAgY2hhciAqIGJsb2NrVHlwZTs=</vline><vline encoding='base64'>ICAgaW50IHJlczs=</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgLyo=</vline><vline encoding='base64'>ICAgICogZmlyc3QgY2hlY2sgZm9yIHN5bnRhY3RpYyBjb3JyZWN0bmVzcyBiZWZvcmUgZG9pbmcgYW55dGhpbmc=</vline><vline encoding='base64'>ICAgICov</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgaWYgKG9iamMgPCAyKSB7</vline><vline encoding='base64'>ICAgICBUY2xfQXBwZW5kUmVzdWx0IChpbnRlcnAsICJ3cm9uZyAjIGFyZ3M6IHNob3VsZCBiZSBcIiIs</vline><vline encoding='base64'>ICAgICAgICAgICAgICAgICAgICAgICBUY2xfR2V0U3RyaW5nRnJvbU9iaiAob2JqdlswXSwgTlVMTCks</vline><vline encoding='base64'>ICAgICAgICAgICAgICAgICAgICAgICAiIGJvZHkgIiw=</vline><vline encoding='base64'>ICAgICAgICAgICAgICAgICAgICAgICAiP2NhdGNoIHt0eXBlLWxpc3QgP2VjdmFyPyA/bXNndmFyPyA/aW5mb3Zhcj99ICIs</vline><vline encoding='base64'>ICAgICAgICAgICAgICAgICAgICAgICAiYm9keSAuLi4/ICIs</vline><vline encoding='base64'>ICAgICAgICAgICAgICAgICAgICAgICAiP2ZpbmFsbHkgYm9keT9cIiIsIE5VTEwpOw==</vline><vline encoding='base64'>ICAgICByZXR1cm4gVENMX0VSUk9SOw==</vline><vline encoding='base64'>ICAgfQ==</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgY3VycmVudEluZGV4ID0gMjs=</vline><vline encoding='base64'>ICAgZmluYWxseUluZGV4ID0gLTE7</vline><vline encoding='base64'>ICAgaGFzQ2F0Y2ggPSAwOw==</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgd2hpbGUgKGN1cnJlbnRJbmRleCA8IG9iamMpIHs=</vline><vline encoding='base64'>ICAgICBibG9ja1R5cGUgPSBUY2xfR2V0U3RyaW5nRnJvbU9iaiAob2JqdltjdXJyZW50SW5kZXhdLCBOVUxMKTs=</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgICBpZiAoc3RyY21wIChibG9ja1R5cGUsICJjYXRjaCIpID09IDApIHs=</vline><vline encoding='base64'>ICAgICAgIFRjbF9PYmogKiB0eXBlTGlzdDs=</vline><vline encoding='base64'>ICAgICAgIGludCB0eXBlTGlzdExlbmd0aDs=</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgICAgIGlmIChjdXJyZW50SW5kZXgrMiA+PSBvYmpjIHx8</vline><vline encoding='base64'>ICAgICAgICAgICBUY2xfTGlzdE9iakxlbmd0aCAoaW50ZXJwLCBvYmp2W2N1cnJlbnRJbmRleCsxXSw=</vline><vline encoding='base64'>ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNhdGNoSW5mb0xlbmd0aCkgIT0gVENMX09LIHx8</vline><vline encoding='base64'>ICAgICAgICAgICAoY2F0Y2hJbmZvTGVuZ3RoIDwgMSAmJiBjYXRjaEluZm9MZW5ndGggPiA0KSB8fA==</vline><vline encoding='base64'>ICAgICAgICAgICBUY2xfTGlzdE9iakluZGV4IChpbnRlcnAsIG9ianZbY3VycmVudEluZGV4KzFdLA==</vline><vline encoding='base64'>ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAmdHlwZUxpc3QpICE9IFRDTF9PSyB8fA==</vline><vline encoding='base64'>ICAgICAgICAgICBUY2xfTGlzdE9iakxlbmd0aCAoaW50ZXJwLCB0eXBlTGlzdCw=</vline><vline encoding='base64'>ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnR5cGVMaXN0TGVuZ3RoKSAhPSBUQ0xfT0spIHs=</vline><vline encoding='base64'>ICAgICAgICAgVGNsX0FwcGVuZFJlc3VsdCAoaW50ZXJwLCAiaW52YWxpZCBzeW50YXggaW4gY2F0Y2ggY2xhdXNlOiAiLA==</vline><vline encoding='base64'>ICAgICAgICAgICAgICAgICAgICAgICAgICAgInNob3VsZCBiZSBcIiIs</vline><vline encoding='base64'>ICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhdGNoIHt0eXBlLWxpc3QgP2VjdmFyPyA/bXNndmFyPyA/aW5mb3Zhcj99ICIs</vline><vline encoding='base64'>ICAgICAgICAgICAgICAgICAgICAgICAgICAgImJvZHlcIiIsIE5VTEwpOw==</vline><vline encoding='base64'>ICAgICAgICAgcmV0dXJuIFRDTF9FUlJPUjs=</vline><vline encoding='base64'>ICAgICAgIH0=</vline><vline encoding='base64'>ICAgICAgIGhhc0NhdGNoID0gMTs=</vline><vline encoding='base64'>ICAgICAgIGN1cnJlbnRJbmRleCArPSAzOw==</vline><vline encoding='base64'>ICAgICB9</vline><vline encoding='base64'>ICAgICBlbHNlIGlmIChzdHJjbXAgKGJsb2NrVHlwZSwgImZpbmFsbHkiKSA9PSAwKSB7</vline><vline encoding='base64'>ICAgICAgIGlmIChjdXJyZW50SW5kZXgrMiAhPSBvYmpjKSB7</vline><vline encoding='base64'>ICAgICAgICAgVGNsX0FwcGVuZFJlc3VsdCAoaW50ZXJwLCAidHJhaWxpbmcgYXJncyBhZnRlciBmaW5hbGx5IGNsYXVzZSIs</vline><vline encoding='base64'>ICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7</vline><vline encoding='base64'>ICAgICAgICAgcmV0dXJuIFRDTF9FUlJPUjs=</vline><vline encoding='base64'>ICAgICAgIH0=</vline><vline encoding='base64'>ICAgICAgIGZpbmFsbHlJbmRleCA9IGN1cnJlbnRJbmRleDs=</vline><vline encoding='base64'>ICAgICAgIGN1cnJlbnRJbmRleCArPSAyOw==</vline><vline encoding='base64'>ICAgICB9</vline><vline encoding='base64'>ICAgICBlbHNlIHs=</vline><vline encoding='base64'>ICAgICAgIFRjbF9BcHBlbmRSZXN1bHQgKGludGVycCwgImludmFsaWQgc3ludGF4OiBzaG91bGQgYmUgXCIiLA==</vline><vline encoding='base64'>ICAgICAgICAgICAgICAgICAgICAgICAgIFRjbF9HZXRTdHJpbmdGcm9tT2JqIChvYmp2WzBdLCBOVUxMKSw=</vline><vline encoding='base64'>ICAgICAgICAgICAgICAgICAgICAgICAgICIgYm9keSAiLA==</vline><vline encoding='base64'>ICAgICAgICAgICAgICAgICAgICAgICAgICI/Y2F0Y2gge3R5cGUtbGlzdCA/ZWN2YXI/ID9tc2d2YXI/ID9pbmZvdmFyP30gIiw=</vline><vline encoding='base64'>ICAgICAgICAgICAgICAgICAgICAgICAgICJib2R5IC4uLj8gIiw=</vline><vline encoding='base64'>ICAgICAgICAgICAgICAgICAgICAgICAgICI/ZmluYWxseSBib2R5P1wiIiwgTlVMTCk7</vline><vline encoding='base64'>ICAgICAgIHJldHVybiBUQ0xfRVJST1I7</vline><vline encoding='base64'>ICAgICB9</vline><vline encoding='base64'>ICAgfQ==</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgLyo=</vline><vline encoding='base64'>ICAgICogRXZhbCBtYWluIGJvZHk=</vline><vline encoding='base64'>ICAgICov</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgcmVzID0gVGNsX0V2YWxPYmpFeCAoaW50ZXJwLCBvYmp2WzFdLCAwKTs=</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgLyo=</vline><vline encoding='base64'>ICAgICogSW4gY2FzZSBvZiBlcnJvciwgY2hlY2sgdGhlIGNhdGNoIGNsYXVzZXM=</vline><vline encoding='base64'>ICAgICov</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgaWYgKHJlcyA9PSBUQ0xfRVJST1IpIHs=</vline><vline encoding='base64'>ICAgICBUY2xfT2JqICplcnJvckNvZGUsICplcnJvckluZm8sICplcnJvck1zZzs=</vline><vline encoding='base64'>ICAgICBpbnQgZXJyb3JDb2RlTGVuZ3RoLCBzdGFja0xlbmd0aDs=</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgICBlcnJvck1zZyA9IFRjbF9HZXRPYmpSZXN1bHQgKGludGVycCk7</vline><vline encoding='base64'>ICAgICBlcnJvckNvZGUgPSBUY2xfT2JqR2V0VmFyMiAoaW50ZXJwLCBteVRzZC0+ZXJyb3JDb2RlTmFtZSwgTlVMTCw=</vline><vline encoding='base64'>ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVENMX0dMT0JBTF9PTkxZKTs=</vline><vline encoding='base64'>ICAgICBlcnJvckluZm8gPSBUY2xfT2JqR2V0VmFyMiAoaW50ZXJwLCBteVRzZC0+ZXJyb3JJbmZvTmFtZSwgTlVMTCw=</vline><vline encoding='base64'>ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVENMX0dMT0JBTF9PTkxZKTs=</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgICAvKg==</vline><vline encoding='base64'>ICAgICAgKiBBZnRlciBhbiBlcnJvciBoYXMgaGFwcGVuZWQsIGVycm9yQ29kZSBhbmQgZXJyb3JJbmZvIHNob3VsZA==</vline><vline encoding='base64'>ICAgICAgKiBleGlzdC4=</vline><vline encoding='base64'>ICAgICAgKi8=</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgICBpZiAoZXJyb3JDb2RlID09IE5VTEwgfHwgZXJyb3JJbmZvID09IE5VTEwpIHs=</vline><vline encoding='base64'>ICAgICAgIFRjbF9BcHBlbmRSZXN1bHQgKGludGVycCwgImFzc2VydGlvbiBlcnJvciBpbiB0cnk6ICIs</vline><vline encoding='base64'>ICAgICAgICAgICAgICAgICAgICAgICAgICJubyBlcnJvckNvZGUgb3Igbm8gZXJyb3JJbmZvIiw=</vline><vline encoding='base64'>ICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOw==</vline><vline encoding='base64'>ICAgICAgIHJldHVybiBUQ0xfRVJST1I7</vline><vline encoding='base64'>ICAgICB9</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgICBpZiAoVGNsX0xpc3RPYmpMZW5ndGggKGludGVycCwgZXJyb3JDb2RlLCAmZXJyb3JDb2RlTGVuZ3RoKSAhPSBUQ0xfT0spIHs=</vline><vline encoding='base64'>ICAgICAgIFRjbF9BcHBlbmRSZXN1bHQgKGludGVycCwgImFzc2VydGlvbiBlcnJvciBpbiB0cnk6ICI=</vline><vline encoding='base64'>ICAgICAgICAgICAgICAgICAgICAgICAgICJlcnJvckNvZGUgaXMgbm90IGEgbGlzdCIs</vline><vline encoding='base64'>ICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOw==</vline><vline encoding='base64'>ICAgICAgIHJldHVybiBUQ0xfRVJST1I7</vline><vline encoding='base64'>ICAgICB9</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgICAvKg==</vline><vline encoding='base64'>ICAgICAgKiBwdXNoIGVycm9yIGRhdGEgb24gc3RhY2ssIHNvIHRoYXQgdGhyb3cgY2FuIHJldGhyb3cgdGhlIGVycm9y</vline><vline encoding='base64'>ICAgICAgKi8=</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgICBUY2xfTGlzdE9iakFwcGVuZEVsZW1lbnQgKGludGVycCwgbXlUc2QtPmVycm9yTXNnU3RhY2ssIGVycm9yTXNnKTs=</vline><vline encoding='base64'>ICAgICBUY2xfTGlzdE9iakFwcGVuZEVsZW1lbnQgKGludGVycCwgbXlUc2QtPmVycm9yQ29kZVN0YWNrLCBlcnJvckNvZGUpOw==</vline><vline encoding='base64'>ICAgICBUY2xfTGlzdE9iakFwcGVuZEVsZW1lbnQgKGludGVycCwgbXlUc2QtPmVycm9ySW5mb1N0YWNrLCBlcnJvckluZm8pOw==</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgICAvKg==</vline><vline encoding='base64'>ICAgICAgKiBMb29rIGZvciBhIG1hdGNoaW5nIGNsYXVzZQ==</vline><vline encoding='base64'>ICAgICAgKi8=</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgICBjdXJyZW50SW5kZXggPSAyOw==</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgICB3aGlsZSAoY3VycmVudEluZGV4IDwgb2JqYykgew==</vline><vline encoding='base64'>ICAgICAgIGJsb2NrVHlwZSA9IFRjbF9HZXRTdHJpbmdGcm9tT2JqIChvYmp2W2N1cnJlbnRJbmRleF0sIE5VTEwpOw==</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgICAgIGlmIChzdHJjbXAgKGJsb2NrVHlwZSwgImNhdGNoIikgPT0gMCkgew==</vline><vline encoding='base64'>ICAgICAgICAgaW50IHR5cGVMaXN0TGVuZ3RoLCBtYXRjaEluZGV4Ow==</vline><vline encoding='base64'>ICAgICAgICAgVGNsX09iaiAqdHlwZUxpc3Q7</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgICAgICAgVGNsX0xpc3RPYmpJbmRleCAgKGludGVycCwgb2JqdltjdXJyZW50SW5kZXgrMV0sIDAsICZ0eXBlTGlzdCk7</vline><vline encoding='base64'>ICAgICAgICAgVGNsX0xpc3RPYmpMZW5ndGggKGludGVycCwgdHlwZUxpc3QsICZ0eXBlTGlzdExlbmd0aCk7</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgICAgICAgaWYgKHR5cGVMaXN0TGVuZ3RoID4gZXJyb3JDb2RlTGVuZ3RoKSB7</vline><vline encoding='base64'>ICAgICAgICAgICBjdXJyZW50SW5kZXggKz0gMzs=</vline><vline encoding='base64'>ICAgICAgICAgICBjb250aW51ZTs=</vline><vline encoding='base64'>ICAgICAgICAgfQ==</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgICAgICAgZm9yIChtYXRjaEluZGV4PTA7IG1hdGNoSW5kZXg8dHlwZUxpc3RMZW5ndGg7IG1hdGNoSW5kZXgrKykgew==</vline><vline encoding='base64'>ICAgICAgICAgICBUY2xfT2JqICplcnJvckNvZGVJdGVtLCAqdHlwZUxpc3RJdGVtOw==</vline><vline encoding='base64'>ICAgICAgICAgICBjb25zdCBjaGFyICplcnJvckNvZGVJdGVtU3RyLCAqdHlwZUxpc3RJdGVtU3RyOw==</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgICAgICAgICBUY2xfTGlzdE9iakluZGV4IChpbnRlcnAsIGVycm9yQ29kZSwgbWF0Y2hJbmRleCwgJmVycm9yQ29kZUl0ZW0pOw==</vline><vline encoding='base64'>ICAgICAgICAgICBUY2xfTGlzdE9iakluZGV4IChpbnRlcnAsIHR5cGVMaXN0LCBtYXRjaEluZGV4LCAmdHlwZUxpc3RJdGVtKTs=</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgICAgICAgICBlcnJvckNvZGVJdGVtU3RyID0gVGNsX0dldFN0cmluZ0Zyb21PYmogKGVycm9yQ29kZUl0ZW0sIE5VTEwpOw==</vline><vline encoding='base64'>ICAgICAgICAgICB0eXBlTGlzdEl0ZW1TdHIgPSBUY2xfR2V0U3RyaW5nRnJvbU9iaiAodHlwZUxpc3RJdGVtLCBOVUxMKTs=</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgICAgICAgICBpZiAoIVRjbF9TdHJpbmdNYXRjaCAoZXJyb3JDb2RlSXRlbVN0ciwgdHlwZUxpc3RJdGVtU3RyKSkgew==</vline><vline encoding='base64'>ICAgICAgICAgICAgIGJyZWFrOw==</vline><vline encoding='base64'>ICAgICAgICAgICB9</vline><vline encoding='base64'>ICAgICAgICAgfQ==</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgICAgICAgaWYgKG1hdGNoSW5kZXggPj0gdHlwZUxpc3RMZW5ndGgpIHs=</vline><vline encoding='base64'>ICAgICAgICAgICAvKiBtYXRjaGluZyBjYXRjaCBjbGF1c2UgZm91bmQgKi8=</vline><vline encoding='base64'>ICAgICAgICAgICBicmVhazs=</vline><vline encoding='base64'>ICAgICAgICAgfQ==</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgICAgICAgLyogY29udGludWUgbG9va2luZyAqLw==</vline><vline encoding='base64'>ICAgICAgICAgY3VycmVudEluZGV4ICs9IDM7</vline><vline encoding='base64'>ICAgICAgIH0=</vline><vline encoding='base64'>ICAgICAgIGVsc2Ugew==</vline><vline encoding='base64'>ICAgICAgICAgLyogbm90IGEgY2F0Y2ggY2xhdXNlIC0gdGhlcmUgYXJlIG5vIG1hdGNoaW5nIGNhdGNoIGNsYXVzZXMgKi8=</vline><vline encoding='base64'>ICAgICAgICAgY3VycmVudEluZGV4ID0gb2JqYzs=</vline><vline encoding='base64'>ICAgICAgICAgYnJlYWs7</vline><vline encoding='base64'>ICAgICAgIH0=</vline><vline encoding='base64'>ICAgICB9</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgICAvKg==</vline><vline encoding='base64'>ICAgICAgKiBEaWQgd2UgZmluZCBhIG1hdGNoaW5nIGNhdGNoIGNsYXVzZT8=</vline><vline encoding='base64'>ICAgICAgKi8=</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgICBpZiAoY3VycmVudEluZGV4IDwgb2JqYykgew==</vline><vline encoding='base64'>ICAgICAgIFRjbF9PYmogKmVjdmFyLCAqbXNndmFyLCAqaW5mb3Zhcjs=</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgICAgIFRjbF9MaXN0T2JqTGVuZ3RoIChpbnRlcnAsIG9ianZbY3VycmVudEluZGV4KzFdLCAmY2F0Y2hJbmZvTGVuZ3RoKTs=</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgICAgIC8q</vline><vline encoding='base64'>ICAgICAgICAqIHNldCB2YXJpYWJsZXMgd2l0aCBlcnJvciBkYXRh</vline><vline encoding='base64'>ICAgICAgICAqLw==</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgICAgIGlmIChjYXRjaEluZm9MZW5ndGggPj0gMikgew==</vline><vline encoding='base64'>ICAgICAgICAgVGNsX0xpc3RPYmpJbmRleCAoaW50ZXJwLCBvYmp2W2N1cnJlbnRJbmRleCsxXSwgMSwgJmVjdmFyKTs=</vline><vline encoding='base64'>ICAgICAgICAgVGNsX09ialNldFZhcjIgKGludGVycCwgZWN2YXIsIE5VTEwsIGVycm9yQ29kZSwgMCk7</vline><vline encoding='base64'>ICAgICAgIH0=</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgICAgIGlmIChjYXRjaEluZm9MZW5ndGggPj0gMykgew==</vline><vline encoding='base64'>ICAgICAgICAgVGNsX0xpc3RPYmpJbmRleCAoaW50ZXJwLCBvYmp2W2N1cnJlbnRJbmRleCsxXSwgMiwgJm1zZ3Zhcik7</vline><vline encoding='base64'>ICAgICAgICAgVGNsX09ialNldFZhcjIgKGludGVycCwgbXNndmFyLCBOVUxMLCBlcnJvck1zZywgMCk7</vline><vline encoding='base64'>ICAgICAgIH0=</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgICAgIGlmIChjYXRjaEluZm9MZW5ndGggPj0gNCkgew==</vline><vline encoding='base64'>ICAgICAgICAgVGNsX0xpc3RPYmpJbmRleCAoaW50ZXJwLCBvYmp2W2N1cnJlbnRJbmRleCsxXSwgMywgJmluZm92YXIpOw==</vline><vline encoding='base64'>ICAgICAgICAgVGNsX09ialNldFZhcjIgKGludGVycCwgaW5mb3ZhciwgTlVMTCwgZXJyb3JJbmZvLCAwKTs=</vline><vline encoding='base64'>ICAgICAgIH0=</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgICAgIC8q</vline><vline encoding='base64'>ICAgICAgICAqIGNhbGwgYm9keTsgdGhlIGVycm9yIGNvZGUgb2YgdGhpcyBib2R5IHRha2VzIHByZWNlZGVuY2U=</vline><vline encoding='base64'>ICAgICAgICAqLw==</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgICAgIHJlcyA9IFRjbF9FdmFsT2JqRXggKGludGVycCwgb2JqdltjdXJyZW50SW5kZXgrMl0sIDApOw==</vline><vline encoding='base64'>ICAgICB9</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgICAvKg==</vline><vline encoding='base64'>ICAgICAgKiBwb3AgZXJyb3IgZGF0YSBmcm9tIHN0YWNr</vline><vline encoding='base64'>ICAgICAgKi8=</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgICBUY2xfTGlzdE9iakxlbmd0aCAoaW50ZXJwLCBteVRzZC0+ZXJyb3JNc2dTdGFjaywgJnN0YWNrTGVuZ3RoKTs=</vline><vline encoding='base64'>ICAgICBzdGFja0xlbmd0aC0tOw==</vline><vline encoding='base64'>ICAgICBUY2xfTGlzdE9ialJlcGxhY2UgKGludGVycCwgbXlUc2QtPmVycm9yTXNnU3RhY2ss</vline><vline encoding='base64'>ICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrTGVuZ3RoLCAxLCAwLCBOVUxMKTs=</vline><vline encoding='base64'>ICAgICBUY2xfTGlzdE9ialJlcGxhY2UgKGludGVycCwgbXlUc2QtPmVycm9yQ29kZVN0YWNrLA==</vline><vline encoding='base64'>ICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrTGVuZ3RoLCAxLCAwLCBOVUxMKTs=</vline><vline encoding='base64'>ICAgICBUY2xfTGlzdE9ialJlcGxhY2UgKGludGVycCwgbXlUc2QtPmVycm9ySW5mb1N0YWNrLA==</vline><vline encoding='base64'>ICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrTGVuZ3RoLCAxLCAwLCBOVUxMKTs=</vline><vline encoding='base64'>ICAgfQ==</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgLyo=</vline><vline encoding='base64'>ICAgICogRXhlY3V0ZSBmaW5hbGx5IGJvZHkuIFByZXNlcnZlIGVycm9yQ29kZSBhbmQgZnJpZW5kczsgdGhleSBtaWdodA==</vline><vline encoding='base64'>ICAgICogYmUgY29ycnVwdGVkIGJ5IHRoZSBjb2RlIGluIHRoZSBib2R5IC0gZS5nLiBieSBhIHRyeSBpbiB0aGUgY29kZSw=</vline><vline encoding='base64'>ICAgICogb3IgaW4gYSBwcm9jIGNhbGxlZCBieSB0aGUgY29kZS4=</vline><vline encoding='base64'>ICAgICov</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgaWYgKGZpbmFsbHlJbmRleCAhPSAtMSkgew==</vline><vline encoding='base64'>ICAgICBUY2xfT2JqICplcnJvckNvZGUsICplcnJvckluZm8sICplcnJvck1zZzs=</vline><vline encoding='base64'>ICAgICBpbnQgZmluYWxseXJlcywgb3JpZ3Jlcz1yZXM7</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgICBlcnJvck1zZyA9IFRjbF9HZXRPYmpSZXN1bHQgKGludGVycCk7</vline><vline encoding='base64'>ICAgICBUY2xfSW5jclJlZkNvdW50IChlcnJvck1zZyk7</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgICBpZiAob3JpZ3JlcyA9PSBUQ0xfRVJST1IpIHs=</vline><vline encoding='base64'>ICAgICAgIGVycm9yQ29kZSA9IFRjbF9PYmpHZXRWYXIyIChpbnRlcnAsIG15VHNkLT5lcnJvckNvZGVOYW1lLCBOVUxMLA==</vline><vline encoding='base64'>ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQ0xfR0xPQkFMX09OTFkpOw==</vline><vline encoding='base64'>ICAgICAgIGVycm9ySW5mbyA9IFRjbF9PYmpHZXRWYXIyIChpbnRlcnAsIG15VHNkLT5lcnJvckluZm9OYW1lLCBOVUxMLA==</vline><vline encoding='base64'>ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQ0xfR0xPQkFMX09OTFkpOw==</vline><vline encoding='base64'>ICAgICAgIFRjbF9JbmNyUmVmQ291bnQgKGVycm9yQ29kZSk7</vline><vline encoding='base64'>ICAgICAgIFRjbF9JbmNyUmVmQ291bnQgKGVycm9ySW5mbyk7</vline><vline encoding='base64'>ICAgICB9</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgICBmaW5hbGx5cmVzID0gVGNsX0V2YWxPYmpFeCAoaW50ZXJwLCBvYmp2W2ZpbmFsbHlJbmRleCsxXSwgMCk7</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgICAvKg==</vline><vline encoding='base64'>ICAgICAgKiBBbiBFcnJvciBpbiB0aGUgZmluYWxseSBjbGF1c2UgdGFrZXMgcHJlY2VkZW5jZSwgZWxzZSByZXN0b3Jl</vline><vline encoding='base64'>ICAgICAgKiBwcmV2aW91cyBlcnJvciBkYXRh</vline><vline encoding='base64'>ICAgICAgKi8=</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgICBpZiAoZmluYWxseXJlcyAhPSBUQ0xfT0spIHs=</vline><vline encoding='base64'>ICAgICAgIHJlcyA9IGZpbmFsbHlyZXM7</vline><vline encoding='base64'>ICAgICB9</vline><vline encoding='base64'>ICAgICBlbHNlIHs=</vline><vline encoding='base64'>ICAgICAgIFRjbF9TZXRPYmpSZXN1bHQgKGludGVycCwgZXJyb3JNc2cpOw==</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgICAgIGlmIChvcmlncmVzID09IFRDTF9FUlJPUikgew==</vline><vline encoding='base64'>ICAgICAgICAgVGNsX1NldE9iakVycm9yQ29kZSAoaW50ZXJwLCBlcnJvckNvZGUpOw==</vline><vline encoding='base64'>ICNpZmRlZiBfVENMSU5U</vline><vline encoding='base64'>ICAgICAgICAgVGNsX09ialNldFZhcjIgKGludGVycCwgbXlUc2QtPmVycm9ySW5mb05hbWUsIE5VTEwsIGVycm9ySW5mbyw=</vline><vline encoding='base64'>ICAgICAgICAgICAgICAgICAgICAgICAgIFRDTF9HTE9CQUxfT05MWSk7</vline><vline encoding='base64'>ICAgICAgICAgaW50ZXJwLT5mbGFncyA9IEVSUl9JTl9QUk9HUkVTUzs=</vline><vline encoding='base64'>ICNlbHNl</vline><vline encoding='base64'>ICAgICAgICAgVGNsX0FkZEVycm9ySW5mbyAoaW50ZXJwLCBUY2xfR2V0U3RyaW5nRnJvbU9iaiAoZXJyb3JJbmZvLCBOVUxMKSk7</vline><vline encoding='base64'>ICNlbmRpZg==</vline><vline encoding='base64'>ICAgICAgIH0=</vline><vline encoding='base64'>ICAgICB9</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgICBUY2xfRGVjclJlZkNvdW50IChlcnJvck1zZyk7</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgICBpZiAob3JpZ3JlcyA9PSBUQ0xfRVJST1IpIHs=</vline><vline encoding='base64'>ICAgICAgIFRjbF9EZWNyUmVmQ291bnQgKGVycm9yQ29kZSk7</vline><vline encoding='base64'>ICAgICAgIFRjbF9EZWNyUmVmQ291bnQgKGVycm9ySW5mbyk7</vline><vline encoding='base64'>ICAgICB9</vline><vline encoding='base64'>ICAgfQ==</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgLyo=</vline><vline encoding='base64'>ICAgICogUGFzcyBhbG9uZyByZXR1cm4gY29kZQ==</vline><vline encoding='base64'>ICAgICov</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgcmV0dXJuIHJlczs=</vline><vline encoding='base64'>IH0=</vline><vline encoding='base64'></vline><vline encoding='base64'>IC8q</vline><vline encoding='base64'>ICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0=</vline><vline encoding='base64'>ICAq</vline><vline encoding='base64'>ICAqICJNYWluIiBmdW5jdGlvbiwgaW5zdGFsbCBvdXIgY29tbWFuZHMgaW4gdGhlIFRjbCBpbnRlcnByZXRlcg==</vline><vline encoding='base64'>ICAq</vline><vline encoding='base64'>ICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0=</vline><vline encoding='base64'>ICAqLw==</vline><vline encoding='base64'></vline><vline encoding='base64'>ICN1bmRlZiBUQ0xfU1RPUkFHRV9DTEFTUw==</vline><vline encoding='base64'>ICNkZWZpbmUgVENMX1NUT1JBR0VfQ0xBU1MgRExMRVhQT1JU</vline><vline encoding='base64'>IEVYVEVSTiBpbnQ=</vline><vline encoding='base64'>IFRyeWNhdGNoX0luaXQgKFRjbF9JbnRlcnAgKmludGVycCk=</vline><vline encoding='base64'>IHs=</vline><vline encoding='base64'>ICAgVHJ5Q2F0Y2hUc2QgKiBteVRzZDs=</vline><vline encoding='base64'></vline><vline encoding='base64'>ICNpZmRlZiBVU0VfVENMX1NUVUJT</vline><vline encoding='base64'>ICAgaWYgKFRjbF9Jbml0U3R1YnMgKGludGVycCwgVENMX1ZFUlNJT04sIDApID09IE5VTEwpIHs=</vline><vline encoding='base64'>ICAgICByZXR1cm4gVENMX0VSUk9SOw==</vline><vline encoding='base64'>ICAgfQ==</vline><vline encoding='base64'>ICNlbHNl</vline><vline encoding='base64'>ICAgaWYgKFRjbF9Qa2dSZXF1aXJlIChpbnRlcnAsICJUY2wiLCBUQ0xfVkVSU0lPTiwgMSkgPT0gTlVMTCkgew==</vline><vline encoding='base64'>ICAgICByZXR1cm4gVENMX0VSUk9SOw==</vline><vline encoding='base64'>ICAgfQ==</vline><vline encoding='base64'>ICNlbmRpZg==</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgLyo=</vline><vline encoding='base64'>ICAgICogQWxsb2NhdGUgVHNk</vline><vline encoding='base64'>ICAgICov</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgbXlUc2QgPSAoVHJ5Q2F0Y2hUc2QgKikgVGNsX0FsbG9jIChzaXplb2YgKFRyeUNhdGNoVHNkKSk7</vline><vline encoding='base64'>ICAgbXlUc2QtPmVycm9yQ29kZVN0YWNrID0gVGNsX05ld09iaiAoKTs=</vline><vline encoding='base64'>ICAgbXlUc2QtPmVycm9ySW5mb1N0YWNrID0gVGNsX05ld09iaiAoKTs=</vline><vline encoding='base64'>ICAgbXlUc2QtPmVycm9yTXNnU3RhY2sgID0gVGNsX05ld09iaiAoKTs=</vline><vline encoding='base64'>ICAgbXlUc2QtPmVycm9yQ29kZU5hbWUgID0gVGNsX05ld1N0cmluZ09iaiAoImVycm9yQ29kZSIsIC0xKTs=</vline><vline encoding='base64'>ICAgbXlUc2QtPmVycm9ySW5mb05hbWUgID0gVGNsX05ld1N0cmluZ09iaiAoImVycm9ySW5mbyIsIC0xKTs=</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgLyo=</vline><vline encoding='base64'>ICAgICogYWRkIGNvbW1hbmRz</vline><vline encoding='base64'>ICAgICov</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgVGNsX0NyZWF0ZU9iakNvbW1hbmQgKGludGVycCwgInRocm93IiwgVGNsX1Rocm93T2JqQ21kLA==</vline><vline encoding='base64'>ICAgICAgICAgICAgICAgICAgICAgICAgIChDbGllbnREYXRhKSBteVRzZCwgTlVMTCk7</vline><vline encoding='base64'>ICAgVGNsX0NyZWF0ZU9iakNvbW1hbmQgKGludGVycCwgInRyeSIsIFRjbF9UcnlPYmpDbWQs</vline><vline encoding='base64'>ICAgICAgICAgICAgICAgICAgICAgICAgIChDbGllbnREYXRhKSBteVRzZCwgTlVMTCk7</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgLyo=</vline><vline encoding='base64'>ICAgICogUmVhZHk=</vline><vline encoding='base64'>ICAgICov</vline><vline encoding='base64'></vline><vline encoding='base64'>ICAgVGNsX1BrZ1Byb3ZpZGUgKGludGVycCwgInRyeWNhdGNoIiwgIjAuMSIpOw==</vline><vline encoding='base64'>ICAgcmV0dXJuIFRDTF9PSzs=</vline><vline encoding='base64'>IH0=</vline></verbatim>
</section>
<section title="Copyright">
<para>This document has been placed in the public domain.</para>
</section>
</body></TIP>
