From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 23057 invoked by alias); 16 Nov 2005 10:35:33 -0000 Received: (qmail 23046 invoked by uid 22791); 16 Nov 2005 10:35:24 -0000 Received: from zproxy.gmail.com (HELO zproxy.gmail.com) (64.233.162.198) by sourceware.org (qpsmtpd/0.30-dev) with ESMTP; Wed, 16 Nov 2005 10:35:24 +0000 Received: by zproxy.gmail.com with SMTP id l1so2065945nzf for ; Wed, 16 Nov 2005 02:35:22 -0800 (PST) Received: by 10.37.15.41 with SMTP id s41mr6114876nzi; Wed, 16 Nov 2005 02:35:22 -0800 (PST) Received: by 10.37.2.35 with HTTP; Wed, 16 Nov 2005 02:35:22 -0800 (PST) Message-ID: <8f2776cb0511160235j10692d7ucaa2895ca3f3586a@mail.gmail.com> Date: Wed, 16 Nov 2005 14:34:00 -0000 From: Jim Blandy To: Eli Zaretskii Subject: Re: Formatting of packet descriptions in GDB manual Cc: gdb-patches@sources.redhat.com In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_14589_30871017.1132137322327" References: <8f2776cb0511111624h4d646cd9i1f86824c5edc613f@mail.gmail.com> <20051113171247.GA1945@nevyn.them.org> <20051114022955.GA10567@nevyn.them.org> <20051114134924.GB21373@nevyn.them.org> <8f2776cb0511152147i4c24e43aue46a54332fd4c0f3@mail.gmail.com> <8f2776cb0511152152p85abe3pa7ad547043c53c0a@mail.gmail.com> Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2005-11/txt/msg00225.txt.bz2 ------=_Part_14589_30871017.1132137322327 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-length: 1155 Okay --- here's what I've committed. gdb/doc/ChangeLog: 2005-11-16 Jim Blandy * gdb.texinfo (Packets, Stop Reply Packets) (General Query Packets): Various formatting cleanups. - Use @samp for packet contents. - Drop summaries from packet @item lines; the same information appears immediately below in the description. - Delete paragraph breaks after packet @item commands, so that the description appears directly to the right of the packet prototype in the printed manual, if it fits. - Place spaces in packet prototypes between @vars and non-@var letters, and explain that they're just for formatting. - Use @dots{} instead of '...'. - Fix uses of @code where @var was needed. - Replace "deprecated" markers with English text spelling out the packet's status and the preferred alternatives. - Remove "(reserved)" markers on 'A' and 'I' packets; it's unclear what this ever meant. - Remove "(draft)" markers on 'i' packets; nobody has commented on this for a long time. - Remove "(draft)" markers on 'z' and 'Z' packets; these have been implemented several times, and have been in use for years. ------=_Part_14589_30871017.1132137322327 Content-Type: text/x-patch; name="jimb.gdb-doc-remote-protocol-formatting.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="jimb.gdb-doc-remote-protocol-formatting.patch" Content-length: 81639 Z2RiL2RvYy9DaGFuZ2VMb2c6CjIwMDUtMTEtMTYgIEppbSBCbGFuZHkgIDxq aW1iQHJlZGhhdC5jb20+CgoJKiBnZGIudGV4aW5mbyAoUGFja2V0cywgU3Rv cCBSZXBseSBQYWNrZXRzKQoJKEdlbmVyYWwgUXVlcnkgUGFja2V0cyk6IFZh cmlvdXMgZm9ybWF0dGluZyBjbGVhbnVwcy4KCS0gVXNlIEBzYW1wIGZvciBw YWNrZXQgY29udGVudHMuCgktIERyb3Agc3VtbWFyaWVzIGZyb20gcGFja2V0 IEBpdGVtIGxpbmVzOyB0aGUgc2FtZSBpbmZvcm1hdGlvbiBhcHBlYXJzCgkg IGltbWVkaWF0ZWx5IGJlbG93IGluIHRoZSBkZXNjcmlwdGlvbi4KCS0gRGVs ZXRlIHBhcmFncmFwaCBicmVha3MgYWZ0ZXIgcGFja2V0IEBpdGVtIGNvbW1h bmRzLCBzbyB0aGF0IHRoZQoJICBkZXNjcmlwdGlvbiBhcHBlYXJzIGRpcmVj dGx5IHRvIHRoZSByaWdodCBvZiB0aGUgcGFja2V0IHByb3RvdHlwZQoJICBp biB0aGUgcHJpbnRlZCBtYW51YWwsIGlmIGl0IGZpdHMuCgktIFBsYWNlIHNw YWNlcyBpbiBwYWNrZXQgcHJvdG90eXBlcyBiZXR3ZWVuIEB2YXJzIGFuZCBu b24tQHZhcgoJICBsZXR0ZXJzLCBhbmQgZXhwbGFpbiB0aGF0IHRoZXkncmUg anVzdCBmb3IgZm9ybWF0dGluZy4KCS0gVXNlIEBkb3Rze30gaW5zdGVhZCBv ZiAnLi4uJy4KCS0gRml4IHVzZXMgb2YgQGNvZGUgd2hlcmUgQHZhciB3YXMg bmVlZGVkLgoJLSBSZXBsYWNlICJkZXByZWNhdGVkIiBtYXJrZXJzIHdpdGgg RW5nbGlzaCB0ZXh0IHNwZWxsaW5nIG91dCB0aGUKCSAgcGFja2V0J3Mgc3Rh dHVzIGFuZCB0aGUgcHJlZmVycmVkIGFsdGVybmF0aXZlcy4KCS0gUmVtb3Zl ICIocmVzZXJ2ZWQpIiBtYXJrZXJzIG9uICdBJyBhbmQgJ0knIHBhY2tldHM7 IGl0J3MgdW5jbGVhcgoJICB3aGF0IHRoaXMgZXZlciBtZWFudC4KCS0gUmVt b3ZlICIoZHJhZnQpIiBtYXJrZXJzIG9uICdpJyBwYWNrZXRzOyBub2JvZHkg aGFzIGNvbW1lbnRlZCBvbgoJICB0aGlzIGZvciBhIGxvbmcgdGltZS4KCS0g UmVtb3ZlICIoZHJhZnQpIiBtYXJrZXJzIG9uICd6JyBhbmQgJ1onIHBhY2tl dHM7IHRoZXNlIGhhdmUgYmVlbgoJICBpbXBsZW1lbnRlZCBzZXZlcmFsIHRp bWVzLCBhbmQgaGF2ZSBiZWVuIGluIHVzZSBmb3IgeWVhcnMuCgpJbmRleDog Z2RiL2RvYy9nZGIudGV4aW5mbwo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD UyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ2RiL2RvYy9nZGIudGV4aW5mbyx2CnJl dHJpZXZpbmcgcmV2aXNpb24gMS4yOTEKZGlmZiAtYyAtcCAtcjEuMjkxIGdk Yi50ZXhpbmZvCioqKiBnZGIvZG9jL2dkYi50ZXhpbmZvCTE2IE5vdiAyMDA1 IDA2OjI0OjUyIC0wMDAwCTEuMjkxCi0tLSBnZGIvZG9jL2dkYi50ZXhpbmZv CTE2IE5vdiAyMDA1IDEwOjMzOjQxIC0wMDAwCioqKioqKioqKioqKioqKiBU aGUgZm9sbG93aW5nIHRhYmxlIHByb3ZpZGVzIGEgY29tcGxldGUgCioqKiAy MjEyOCwyMjE0MSAqKioqCiAgQHhyZWZ7RmlsZS1JL08gcmVtb3RlIHByb3Rv Y29sIGV4dGVuc2lvbn0sIGZvciBkZXRhaWxzIGFib3V0IHRoZSBGaWxlCiAg SS9PIGV4dGVuc2lvbiBvZiB0aGUgcmVtb3RlIHByb3RvY29sLgogIAogIE5v dGUgdGhhdCBhbGwgcGFja2V0IGZvcm1zIGJlZ2lubmluZyB3aXRoIGFuIHVw cGVyLSBvciBsb3dlci1jYXNlCiAgbGV0dGVyLCBvdGhlciB0aGFuIHRob3Nl IGRlc2NyaWJlZCBoZXJlLCBhcmUgcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2Uu CiAgCiEgQHRhYmxlIEByCiAgCiEgQGl0ZW0gQGNvZGV7IX0gLS0tIGV4dGVu ZGVkIG1vZGUKISBAY2luZGV4IEBjb2RleyF9IHBhY2tldAogIAogIEVuYWJs ZSBleHRlbmRlZCBtb2RlLiAgSW4gZXh0ZW5kZWQgbW9kZSwgdGhlIHJlbW90 ZSBzZXJ2ZXIgaXMgbWFkZQogIHBlcnNpc3RlbnQuICBUaGUgQHNhbXB7Un0g cGFja2V0IGlzIHVzZWQgdG8gcmVzdGFydCB0aGUgcHJvZ3JhbSBiZWluZwog IGRlYnVnZ2VkLgotLS0gMjIxMjgsMjIxNTMgLS0tLQogIEB4cmVme0ZpbGUt SS9PIHJlbW90ZSBwcm90b2NvbCBleHRlbnNpb259LCBmb3IgZGV0YWlscyBh Ym91dCB0aGUgRmlsZQogIEkvTyBleHRlbnNpb24gb2YgdGhlIHJlbW90ZSBw cm90b2NvbC4KICAKKyBFYWNoIHBhY2tldCdzIGRlc2NyaXB0aW9uIGhhcyBh IHRlbXBsYXRlIHNob3dpbmcgdGhlIHBhY2tldCdzIG92ZXJhbGwKKyBzeW50 YXgsIGZvbGxvd2VkIGJ5IGFuIGV4cGxhbmF0aW9uIG9mIHRoZSBwYWNrZXQn cyBtZWFuaW5nLiAgV2UKKyBpbmNsdWRlIHNwYWNlcyBpbiBzb21lIG9mIHRo ZSB0ZW1wbGF0ZXMgZm9yIGNsYXJpdHk7IHRoZXNlIGFyZSBub3QKKyBwYXJ0 IG9mIHRoZSBwYWNrZXQncyBzeW50YXguICBObyBAdmFsdWV7R0RCTn0gcGFj a2V0IHVzZXMgc3BhY2VzIHRvCisgc2VwYXJhdGUgaXRzIGNvbXBvbmVudHMu ICBGb3IgZXhhbXBsZSwgYSB0ZW1wbGF0ZSBsaWtlIEBzYW1we2ZvbworIEB2 YXJ7YmFyfSBAdmFye2Jhen19IGRlc2NyaWJlcyBhIHBhY2tldCBiZWdpbm5p bmcgd2l0aCB0aGUgdGhyZWUgQVNDSUkKKyBieXRlcyBAc2FtcHtmb299LCBm b2xsb3dlZCBieSBhIEB2YXJ7YmFyfSwgZm9sbG93ZWQgZGlyZWN0bHkgYnkg YQorIEB2YXJ7YmF6fS4gIEdEQiBkb2VzIG5vdCB0cmFuc21pdCBhIHNwYWNl IGNoYXJhY3RlciBiZXR3ZWVuIHRoZQorIEBzYW1we2Zvb30gYW5kIHRoZSBA dmFye2Jhcn0sIG9yIGJldHdlZW4gdGhlIEB2YXJ7YmFyfSBhbmQgdGhlCisg QHZhcntiYXp9LgorIAogIE5vdGUgdGhhdCBhbGwgcGFja2V0IGZvcm1zIGJl Z2lubmluZyB3aXRoIGFuIHVwcGVyLSBvciBsb3dlci1jYXNlCiAgbGV0dGVy LCBvdGhlciB0aGFuIHRob3NlIGRlc2NyaWJlZCBoZXJlLCBhcmUgcmVzZXJ2 ZWQgZm9yIGZ1dHVyZSB1c2UuCiAgCiEgSGVyZSBhcmUgdGhlIHBhY2tldCBk ZXNjcmlwdGlvbnMuCiAgCiEgQHRhYmxlIEBzYW1wCiAgCisgQGl0ZW0gIQor IEBjaW5kZXggQHNhbXB7IX0gcGFja2V0CiAgRW5hYmxlIGV4dGVuZGVkIG1v ZGUuICBJbiBleHRlbmRlZCBtb2RlLCB0aGUgcmVtb3RlIHNlcnZlciBpcyBt YWRlCiAgcGVyc2lzdGVudC4gIFRoZSBAc2FtcHtSfSBwYWNrZXQgaXMgdXNl ZCB0byByZXN0YXJ0IHRoZSBwcm9ncmFtIGJlaW5nCiAgZGVidWdnZWQuCioq KioqKioqKioqKioqKiBSZXBseToKKioqIDIyMTQ2LDIyMTc2ICoqKioKICBU aGUgcmVtb3RlIHRhcmdldCBib3RoIHN1cHBvcnRzIGFuZCBoYXMgZW5hYmxl ZCBleHRlbmRlZCBtb2RlLgogIEBlbmQgdGFibGUKICAKISBAaXRlbSBAY29k ZXs/fSAtLS0gbGFzdCBzaWduYWwKISBAY2luZGV4IEBjb2Rlez99IHBhY2tl dAohIAogIEluZGljYXRlIHRoZSByZWFzb24gdGhlIHRhcmdldCBoYWx0ZWQu ICBUaGUgcmVwbHkgaXMgdGhlIHNhbWUgYXMgZm9yCiAgc3RlcCBhbmQgY29u dGludWUuCiAgCiAgUmVwbHk6CiAgQHhyZWZ7U3RvcCBSZXBseSBQYWNrZXRz fSwgZm9yIHRoZSByZXBseSBzcGVjaWZpY2F0aW9ucy4KICAKISBAaXRlbSBA Y29kZXtBfUB2YXJ7YXJnbGVufUBjb2Rleyx9QHZhcnthcmdudW19QGNvZGV7 LH1AdmFye2FyZ31AY29kZXssQGRvdHN7fX0gLS0tICBzZXQgcHJvZ3JhbSBh cmd1bWVudHMgQHN0cm9uZ3socmVzZXJ2ZWQpfQohIEBjaW5kZXggQGNvZGV7 QX0gcGFja2V0CiEgCiEgSW5pdGlhbGl6ZWQgQHNhbXB7YXJndltdfSBhcnJh eSBwYXNzZWQgaW50byBwcm9ncmFtLiBAdmFye2FyZ2xlbn0KISBzcGVjaWZp ZXMgdGhlIG51bWJlciBvZiBieXRlcyBpbiB0aGUgaGV4IGVuY29kZWQgYnl0 ZSBzdHJlYW0gQHZhcnthcmd9LgohIFNlZSBAY29kZXtnZGJzZXJ2ZXJ9IGZv ciBtb3JlIGRldGFpbHMuCiAgCiAgUmVwbHk6CiAgQHRhYmxlIEBzYW1wCiAg QGl0ZW0gT0sKISBAaXRlbSBFQHZhcntOTn0KICBAZW5kIHRhYmxlCiAgCiEg QGl0ZW0gQGNvZGV7Yn1AdmFye2JhdWR9IC0tLSBzZXQgYmF1ZCBAc3Ryb25n eyhkZXByZWNhdGVkKX0KISBAY2luZGV4IEBjb2Rle2J9IHBhY2tldAohIAog IENoYW5nZSB0aGUgc2VyaWFsIGxpbmUgc3BlZWQgdG8gQHZhcntiYXVkfS4K ICAKICBKVEM6IEBlbXBoe1doZW4gZG9lcyB0aGUgdHJhbnNwb3J0IGxheWVy IHN0YXRlIGNoYW5nZT8gIFdoZW4gaXQncwotLS0gMjIxNTgsMjIxODggLS0t LQogIFRoZSByZW1vdGUgdGFyZ2V0IGJvdGggc3VwcG9ydHMgYW5kIGhhcyBl bmFibGVkIGV4dGVuZGVkIG1vZGUuCiAgQGVuZCB0YWJsZQogIAohIEBpdGVt ID8KISBAY2luZGV4IEBzYW1wez99IHBhY2tldAogIEluZGljYXRlIHRoZSBy ZWFzb24gdGhlIHRhcmdldCBoYWx0ZWQuICBUaGUgcmVwbHkgaXMgdGhlIHNh bWUgYXMgZm9yCiAgc3RlcCBhbmQgY29udGludWUuCiAgCiAgUmVwbHk6CiAg QHhyZWZ7U3RvcCBSZXBseSBQYWNrZXRzfSwgZm9yIHRoZSByZXBseSBzcGVj aWZpY2F0aW9ucy4KICAKISBAaXRlbSBBIEB2YXJ7YXJnbGVufSxAdmFye2Fy Z251bX0sQHZhcnthcmd9LEBkb3Rze30KISBAY2luZGV4IEBzYW1we0F9IHBh Y2tldAohIEluaXRpYWxpemVkIEBjb2Rle2FyZ3ZbXX0gYXJyYXkgcGFzc2Vk IGludG8gcHJvZ3JhbS4gQHZhcnthcmdsZW59CiEgc3BlY2lmaWVzIHRoZSBu dW1iZXIgb2YgYnl0ZXMgaW4gdGhlIGhleCBlbmNvZGVkIGJ5dGUgc3RyZWFt CiEgQHZhcnthcmd9LiAgU2VlIEBjb2Rle2dkYnNlcnZlcn0gZm9yIG1vcmUg ZGV0YWlscy4KICAKICBSZXBseToKICBAdGFibGUgQHNhbXAKICBAaXRlbSBP SwohIFRoZSBhcmd1bWVudHMgd2VyZSBzZXQuCiEgQGl0ZW0gRSBAdmFye05O fQohIEFuIGVycm9yIG9jY3VycmVkLgogIEBlbmQgdGFibGUKICAKISBAaXRl bSBiIEB2YXJ7YmF1ZH0KISBAY2luZGV4IEBzYW1we2J9IHBhY2tldAohIChE b24ndCB1c2UgdGhpcyBwYWNrZXQ7IGl0cyBiZWhhdmlvciBpcyBub3Qgd2Vs bC1kZWZpbmVkLikKICBDaGFuZ2UgdGhlIHNlcmlhbCBsaW5lIHNwZWVkIHRv IEB2YXJ7YmF1ZH0uCiAgCiAgSlRDOiBAZW1waHtXaGVuIGRvZXMgdGhlIHRy YW5zcG9ydCBsYXllciBzdGF0ZSBjaGFuZ2U/ICBXaGVuIGl0J3MKKioqKioq KioqKioqKioqIHNvbWUga2luZCBvZiBvdXQtb2YtYmFuZCBtZXNzYWdlIHRv IGEgc3AKKioqIDIyMTgzLDIyMjIzICoqKioKICBzd2l0Y2ggaGFwcGVuICJp biBiZXR3ZWVuIiBwYWNrZXRzLCBzbyB0aGF0IGZyb20gcmVtb3RlIHByb3Rv Y29sJ3MgcG9pbnQKICBvZiB2aWV3LCBub3RoaW5nIGFjdHVhbGx5IGhhcHBl bmVkLn0KICAKISBAaXRlbSBAY29kZXtCfUB2YXJ7YWRkcn0sQHZhcnttb2Rl fSAtLS0gc2V0IGJyZWFrcG9pbnQgQHN0cm9uZ3soZGVwcmVjYXRlZCl9CiEg QGNpbmRleCBAY29kZXtCfSBwYWNrZXQKISAKICBTZXQgKEB2YXJ7bW9kZX0g aXMgQHNhbXB7U30pIG9yIGNsZWFyIChAdmFye21vZGV9IGlzIEBzYW1we0N9 KSBhCiAgYnJlYWtwb2ludCBhdCBAdmFye2FkZHJ9LgogIAohIFRoaXMgcGFj a2V0IGhhcyBiZWVuIHJlcGxhY2VkIGJ5IHRoZSBAc2FtcHtafSBhbmQgQHNh bXB7en0gcGFja2V0cwogIChAcHhyZWZ7aW5zZXJ0IGJyZWFrcG9pbnQgb3Ig d2F0Y2hwb2ludCBwYWNrZXR9KS4KICAKISBAaXRlbSBAY29kZXtjfUB2YXJ7 YWRkcn0gLS0tIGNvbnRpbnVlCiEgQGNpbmRleCBAY29kZXtjfSBwYWNrZXQK ISAKISBAdmFye2FkZHJ9IGlzIGFkZHJlc3MgdG8gcmVzdW1lLiAgSWYgQHZh cnthZGRyfSBpcyBvbWl0dGVkLCByZXN1bWUgYXQKISBjdXJyZW50IGFkZHJl c3MuCiAgCiAgUmVwbHk6CiAgQHhyZWZ7U3RvcCBSZXBseSBQYWNrZXRzfSwg Zm9yIHRoZSByZXBseSBzcGVjaWZpY2F0aW9ucy4KICAKISBAaXRlbSBAY29k ZXtDfUB2YXJ7c2lnfUBjb2Rlezt9QHZhcnthZGRyfSAtLS0gY29udGludWUg d2l0aCBzaWduYWwKISBAY2luZGV4IEBjb2Rle0N9IHBhY2tldAohIAogIENv bnRpbnVlIHdpdGggc2lnbmFsIEB2YXJ7c2lnfSAoaGV4IHNpZ25hbCBudW1i ZXIpLiAgSWYKISBAY29kZXs7fUB2YXJ7YWRkcn0gaXMgb21pdHRlZCwgcmVz dW1lIGF0IHNhbWUgYWRkcmVzcy4KICAKICBSZXBseToKICBAeHJlZntTdG9w IFJlcGx5IFBhY2tldHN9LCBmb3IgdGhlIHJlcGx5IHNwZWNpZmljYXRpb25z LgogIAohIEBpdGVtIEBjb2Rle2R9IC0tLSB0b2dnbGUgZGVidWcgQHN0cm9u Z3soZGVwcmVjYXRlZCl9CiEgQGNpbmRleCBAY29kZXtkfSBwYWNrZXQKISAK ICBUb2dnbGUgZGVidWcgZmxhZy4KICAKISBAaXRlbSBAY29kZXtEfSAtLS0g ZGV0YWNoCiEgQGNpbmRleCBAY29kZXtEfSBwYWNrZXQKICAKICBEZXRhY2gg QHZhbHVle0dEQk59IGZyb20gdGhlIHJlbW90ZSBzeXN0ZW0uICBTZW50IHRv IHRoZSByZW1vdGUgdGFyZ2V0CiAgYmVmb3JlIEB2YWx1ZXtHREJOfSBkaXNj b25uZWN0cyB2aWEgdGhlIEBjb2Rle2RldGFjaH0gY29tbWFuZC4KICAKLS0t IDIyMTk1LDIyMjMzIC0tLS0KICBzd2l0Y2ggaGFwcGVuICJpbiBiZXR3ZWVu IiBwYWNrZXRzLCBzbyB0aGF0IGZyb20gcmVtb3RlIHByb3RvY29sJ3MgcG9p bnQKICBvZiB2aWV3LCBub3RoaW5nIGFjdHVhbGx5IGhhcHBlbmVkLn0KICAK ISBAaXRlbSBCIEB2YXJ7YWRkcn0sQHZhcnttb2RlfQohIEBjaW5kZXggQHNh bXB7Qn0gcGFja2V0CiAgU2V0IChAdmFye21vZGV9IGlzIEBzYW1we1N9KSBv ciBjbGVhciAoQHZhcnttb2RlfSBpcyBAc2FtcHtDfSkgYQogIGJyZWFrcG9p bnQgYXQgQHZhcnthZGRyfS4KICAKISBEb24ndCB1c2UgdGhpcyBwYWNrZXQu ICBVc2UgdGhlIEBzYW1we1p9IGFuZCBAc2FtcHt6fSBwYWNrZXRzIGluc3Rl YWQKICAoQHB4cmVme2luc2VydCBicmVha3BvaW50IG9yIHdhdGNocG9pbnQg cGFja2V0fSkuCiAgCiEgQGl0ZW0gYyBAdmFye2FkZHJ9CiEgQGNpbmRleCBA c2FtcHtjfSBwYWNrZXQKISBDb250aW51ZS4gIEB2YXJ7YWRkcn0gaXMgYWRk cmVzcyB0byByZXN1bWUuICBJZiBAdmFye2FkZHJ9IGlzIG9taXR0ZWQsCiEg cmVzdW1lIGF0IGN1cnJlbnQgYWRkcmVzcy4KICAKICBSZXBseToKICBAeHJl ZntTdG9wIFJlcGx5IFBhY2tldHN9LCBmb3IgdGhlIHJlcGx5IHNwZWNpZmlj YXRpb25zLgogIAohIEBpdGVtIEMgQHZhcntzaWd9O0B2YXJ7YWRkcn0KISBA Y2luZGV4IEBzYW1we0N9IHBhY2tldAogIENvbnRpbnVlIHdpdGggc2lnbmFs IEB2YXJ7c2lnfSAoaGV4IHNpZ25hbCBudW1iZXIpLiAgSWYKISBAc2FtcHs7 QHZhcnthZGRyfX0gaXMgb21pdHRlZCwgcmVzdW1lIGF0IHNhbWUgYWRkcmVz cy4KICAKICBSZXBseToKICBAeHJlZntTdG9wIFJlcGx5IFBhY2tldHN9LCBm b3IgdGhlIHJlcGx5IHNwZWNpZmljYXRpb25zLgogIAohIEBpdGVtIGQKISBA Y2luZGV4IEBzYW1we2R9IHBhY2tldAogIFRvZ2dsZSBkZWJ1ZyBmbGFnLgog IAohIERvbid0IHVzZSB0aGlzIHBhY2tldDsgaW5zdGVhZCwgZGVmaW5lIGEg Z2VuZXJhbCBzZXQgcGFja2V0CiEgKEBweHJlZntHZW5lcmFsIFF1ZXJ5IFBh Y2tldHN9KS4KICAKKyBAaXRlbSBECisgQGNpbmRleCBAc2FtcHtEfSBwYWNr ZXQKICBEZXRhY2ggQHZhbHVle0dEQk59IGZyb20gdGhlIHJlbW90ZSBzeXN0 ZW0uICBTZW50IHRvIHRoZSByZW1vdGUgdGFyZ2V0CiAgYmVmb3JlIEB2YWx1 ZXtHREJOfSBkaXNjb25uZWN0cyB2aWEgdGhlIEBjb2Rle2RldGFjaH0gY29t bWFuZC4KICAKKioqKioqKioqKioqKioqIFJlcGx5OgoqKiogMjIyMjUsMjIy NDUgKioqKgogIEB0YWJsZSBAc2FtcAogIEBpdGVtIE9LCiAgZm9yIHN1Y2Nl c3MKISBAaXRlbSBFQHZhcntOTn0KICBmb3IgYW4gZXJyb3IKICBAZW5kIHRh YmxlCiAgCiEgQGl0ZW0gQGNvZGV7Rn1AdmFye1JDfUBjb2Rleyx9QHZhcntF RX1AY29kZXssfUB2YXJ7Q0Z9QGNvZGV7O31AdmFye1hYfSAtLS0gUmVwbHkg dG8gdGFyZ2V0J3MgRiBwYWNrZXQuCiEgQGNpbmRleCBAY29kZXtGfSBwYWNr ZXQKISAKISBUaGlzIHBhY2tldCBpcyBzZW5kIGJ5IEB2YWx1ZXtHREJOfSBh cyByZXBseSB0byBhIEBjb2Rle0Z9IHJlcXVlc3QgcGFja2V0CiEgc2VudCBi eSB0aGUgdGFyZ2V0LiAgVGhpcyBpcyBwYXJ0IG9mIHRoZSBGaWxlLUkvTyBw cm90b2NvbCBleHRlbnNpb24uCiEgQHhyZWZ7RmlsZS1JL08gcmVtb3RlIHBy b3RvY29sIGV4dGVuc2lvbn0sIGZvciB0aGUgc3BlY2lmaWNhdGlvbi4KICAK ISBAaXRlbSBAY29kZXtnfSAtLS0gcmVhZCByZWdpc3RlcnMKICBAYW5jaG9y e3JlYWQgcmVnaXN0ZXJzIHBhY2tldH0KISBAY2luZGV4IEBjb2Rle2d9IHBh Y2tldAohIAogIFJlYWQgZ2VuZXJhbCByZWdpc3RlcnMuCiAgCiAgUmVwbHk6 Ci0tLSAyMjIzNSwyMjI1MyAtLS0tCiAgQHRhYmxlIEBzYW1wCiAgQGl0ZW0g T0sKICBmb3Igc3VjY2VzcwohIEBpdGVtIEUgQHZhcntOTn0KICBmb3IgYW4g ZXJyb3IKICBAZW5kIHRhYmxlCiAgCiEgQGl0ZW0gRiBAdmFye1JDfSxAdmFy e0VFfSxAdmFye0NGfTtAdmFye1hYfQohIEBjaW5kZXggQHNhbXB7Rn0gcGFj a2V0CiEgQSByZXBseSBmcm9tIEB2YWx1ZXtHREJOfSB0byBhbiBAc2FtcHtG fSBwYWNrZXQgc2VudCBieSB0aGUgdGFyZ2V0LgohIFRoaXMgaXMgcGFydCBv ZiB0aGUgRmlsZS1JL08gcHJvdG9jb2wgZXh0ZW5zaW9uLiAgQHhyZWZ7Rmls ZS1JL08KISByZW1vdGUgcHJvdG9jb2wgZXh0ZW5zaW9ufSwgZm9yIHRoZSBz cGVjaWZpY2F0aW9uLgogIAohIEBpdGVtIGcKICBAYW5jaG9ye3JlYWQgcmVn aXN0ZXJzIHBhY2tldH0KISBAY2luZGV4IEBzYW1we2d9IHBhY2tldAogIFJl YWQgZ2VuZXJhbCByZWdpc3RlcnMuCiAgCiAgUmVwbHk6CioqKioqKioqKioq KioqKiBSZXBseToKKioqIDIyMjQ3LDIyMjg4ICoqKioKICBAaXRlbSBAdmFy e1hYQGRvdHN7fX0KICBFYWNoIGJ5dGUgb2YgcmVnaXN0ZXIgZGF0YSBpcyBk ZXNjcmliZWQgYnkgdHdvIGhleCBkaWdpdHMuICBUaGUgYnl0ZXMKICB3aXRo IHRoZSByZWdpc3RlciBhcmUgdHJhbnNtaXR0ZWQgaW4gdGFyZ2V0IGJ5dGUg b3JkZXIuICBUaGUgc2l6ZSBvZgohIGVhY2ggcmVnaXN0ZXIgYW5kIHRoZWly IHBvc2l0aW9uIHdpdGhpbiB0aGUgQHNhbXB7Z30gQHZhcntwYWNrZXR9IGFy ZQogIGRldGVybWluZWQgYnkgdGhlIEB2YWx1ZXtHREJOfSBpbnRlcm5hbCBt YWNyb3MKISBAdmFye0RFUFJFQ0FURURfUkVHSVNURVJfUkFXX1NJWkV9IGFu ZCBAdmFye1JFR0lTVEVSX05BTUV9IG1hY3Jvcy4gIFRoZQohIHNwZWNpZmlj YXRpb24gb2Ygc2V2ZXJhbCBzdGFuZGFyZCBAY29kZXtnfSBwYWNrZXRzIGlz IHNwZWNpZmllZCBiZWxvdy4KISBAaXRlbSBFQHZhcntOTn0KICBmb3IgYW4g ZXJyb3IuCiAgQGVuZCB0YWJsZQogIAohIEBpdGVtIEBjb2Rle0d9QHZhcntY WEBkb3Rze319IC0tLSB3cml0ZSByZWdzCiEgQGNpbmRleCBAY29kZXtHfSBw YWNrZXQKISAKISBAeHJlZntyZWFkIHJlZ2lzdGVycyBwYWNrZXR9LCBmb3Ig YSBkZXNjcmlwdGlvbiBvZiB0aGUgQHZhcntYWEBkb3Rze319CiEgZGF0YS4K ICAKICBSZXBseToKICBAdGFibGUgQHNhbXAKICBAaXRlbSBPSwogIGZvciBz dWNjZXNzCiEgQGl0ZW0gRUB2YXJ7Tk59CiAgZm9yIGFuIGVycm9yCiAgQGVu ZCB0YWJsZQogIAohIEBpdGVtIEBjb2Rle0h9QHZhcntjfUB2YXJ7dEBkb3Rz e319IC0tLSBzZXQgdGhyZWFkCiEgQGNpbmRleCBAY29kZXtIfSBwYWNrZXQK ISAKICBTZXQgdGhyZWFkIGZvciBzdWJzZXF1ZW50IG9wZXJhdGlvbnMgKEBz YW1we219LCBAc2FtcHtNfSwgQHNhbXB7Z30sCiAgQHNhbXB7R30sIGV0LmFs LikuICBAdmFye2N9IGRlcGVuZHMgb24gdGhlIG9wZXJhdGlvbiB0byBiZSBw ZXJmb3JtZWQ6IGl0CiAgc2hvdWxkIGJlIEBzYW1we2N9IGZvciBzdGVwIGFu ZCBjb250aW51ZSBvcGVyYXRpb25zLCBAc2FtcHtnfSBmb3Igb3RoZXIKISBv cGVyYXRpb25zLiAgVGhlIHRocmVhZCBkZXNpZ25hdG9yIEB2YXJ7dEBkb3Rz e319IG1heSBiZSAtMSwgbWVhbmluZyBhbGwKISB0aGUgdGhyZWFkcywgYSB0 aHJlYWQgbnVtYmVyLCBvciB6ZXJvIHdoaWNoIG1lYW5zIHBpY2sgYW55IHRo cmVhZC4KICAKICBSZXBseToKICBAdGFibGUgQHNhbXAKICBAaXRlbSBPSwog IGZvciBzdWNjZXNzCiEgQGl0ZW0gRUB2YXJ7Tk59CiAgZm9yIGFuIGVycm9y CiAgQGVuZCB0YWJsZQogIAotLS0gMjIyNTUsMjIyOTQgLS0tLQogIEBpdGVt IEB2YXJ7WFhAZG90c3t9fQogIEVhY2ggYnl0ZSBvZiByZWdpc3RlciBkYXRh IGlzIGRlc2NyaWJlZCBieSB0d28gaGV4IGRpZ2l0cy4gIFRoZSBieXRlcwog IHdpdGggdGhlIHJlZ2lzdGVyIGFyZSB0cmFuc21pdHRlZCBpbiB0YXJnZXQg Ynl0ZSBvcmRlci4gIFRoZSBzaXplIG9mCiEgZWFjaCByZWdpc3RlciBhbmQg dGhlaXIgcG9zaXRpb24gd2l0aGluIHRoZSBAc2FtcHtnfSBwYWNrZXQgYXJl CiAgZGV0ZXJtaW5lZCBieSB0aGUgQHZhbHVle0dEQk59IGludGVybmFsIG1h Y3JvcwohIEBjb2Rle0RFUFJFQ0FURURfUkVHSVNURVJfUkFXX1NJWkV9IGFu ZCBAY29kZXtSRUdJU1RFUl9OQU1FfSBtYWNyb3MuICBUaGUKISBzcGVjaWZp Y2F0aW9uIG9mIHNldmVyYWwgc3RhbmRhcmQgQHNhbXB7Z30gcGFja2V0cyBp cyBzcGVjaWZpZWQgYmVsb3cuCiEgQGl0ZW0gRSBAdmFye05OfQogIGZvciBh biBlcnJvci4KICBAZW5kIHRhYmxlCiAgCiEgQGl0ZW0gRyBAdmFye1hYQGRv dHN7fX0KISBAY2luZGV4IEBzYW1we0d9IHBhY2tldAohIFdyaXRlIGdlbmVy YWwgcmVnaXN0ZXJzLiAgQHhyZWZ7cmVhZCByZWdpc3RlcnMgcGFja2V0fSwg Zm9yIGEKISBkZXNjcmlwdGlvbiBvZiB0aGUgQHZhcntYWEBkb3Rze319IGRh dGEuCiAgCiAgUmVwbHk6CiAgQHRhYmxlIEBzYW1wCiAgQGl0ZW0gT0sKICBm b3Igc3VjY2VzcwohIEBpdGVtIEUgQHZhcntOTn0KICBmb3IgYW4gZXJyb3IK ICBAZW5kIHRhYmxlCiAgCiEgQGl0ZW0gSCBAdmFye2N9IEB2YXJ7dH0KISBA Y2luZGV4IEBzYW1we0h9IHBhY2tldAogIFNldCB0aHJlYWQgZm9yIHN1YnNl cXVlbnQgb3BlcmF0aW9ucyAoQHNhbXB7bX0sIEBzYW1we019LCBAc2FtcHtn fSwKICBAc2FtcHtHfSwgZXQuYWwuKS4gIEB2YXJ7Y30gZGVwZW5kcyBvbiB0 aGUgb3BlcmF0aW9uIHRvIGJlIHBlcmZvcm1lZDogaXQKICBzaG91bGQgYmUg QHNhbXB7Y30gZm9yIHN0ZXAgYW5kIGNvbnRpbnVlIG9wZXJhdGlvbnMsIEBz YW1we2d9IGZvciBvdGhlcgohIG9wZXJhdGlvbnMuICBUaGUgdGhyZWFkIGRl c2lnbmF0b3IgQHZhcnt0fSBtYXkgYmUgQHNhbXB7LTF9LCBtZWFuaW5nIGFs bAohIHRoZSB0aHJlYWRzLCBhIHRocmVhZCBudW1iZXIsIG9yIEBzYW1wezB9 IHdoaWNoIG1lYW5zIHBpY2sgYW55IHRocmVhZC4KICAKICBSZXBseToKICBA dGFibGUgQHNhbXAKICBAaXRlbSBPSwogIGZvciBzdWNjZXNzCiEgQGl0ZW0g RSBAdmFye05OfQogIGZvciBhbiBlcnJvcgogIEBlbmQgdGFibGUKICAKKioq KioqKioqKioqKioqIGZvciBhbiBlcnJvcgoqKiogMjIzMDEsMjIzMjkgKioq KgogIEBjICAgICAgICAgICAgICAgIHNlbGVjdGVkLCBzZXRzIHRoZSByZWdp c3RlcnMgb2YgdGhlIHJlZ2lzdGVyIGJsb2NrIG9mCiAgQGMgICAgICAgICAg ICAgICAgdGhhdCB0aHJlYWQ7IG90aGVyd2lzZSBzZXRzIGN1cnJlbnQgcmVn aXN0ZXJzLgogIAohIEBpdGVtIEBjb2Rle2l9QHZhcnthZGRyfUBjb2Rleyx9 QHZhcntubm59IC0tLSBjeWNsZSBzdGVwIEBzdHJvbmd7KGRyYWZ0KX0KICBA YW5jaG9ye2N5Y2xlIHN0ZXAgcGFja2V0fQohIEBjaW5kZXggQGNvZGV7aX0g cGFja2V0CiEgCiEgU3RlcCB0aGUgcmVtb3RlIHRhcmdldCBieSBhIHNpbmds ZSBjbG9jayBjeWNsZS4gIElmIEBjb2Rleyx9QHZhcntubm59IGlzCiAgcHJl c2VudCwgY3ljbGUgc3RlcCBAdmFye25ubn0gY3ljbGVzLiAgSWYgQHZhcnth ZGRyfSBpcyBwcmVzZW50LCBjeWNsZQogIHN0ZXAgc3RhcnRpbmcgYXQgdGhh dCBhZGRyZXNzLgogIAohIEBpdGVtIEBjb2Rle0l9IC0tLSBzaWduYWwgdGhl biBjeWNsZSBzdGVwIEBzdHJvbmd7KHJlc2VydmVkKX0KISBAY2luZGV4IEBj b2Rle0l9IHBhY2tldAohIAohIEB4cmVme3N0ZXAgd2l0aCBzaWduYWwgcGFj a2V0fS4gIEB4cmVme2N5Y2xlIHN0ZXAgcGFja2V0fS4KISAKISBAaXRlbSBA Y29kZXtrfSAtLS0ga2lsbCByZXF1ZXN0CiEgQGNpbmRleCBAY29kZXtrfSBw YWNrZXQKICAKICBGSVhNRTogQGVtcGh7VGhlcmUgaXMgbm8gZGVzY3JpcHRp b24gb2YgaG93IHRvIG9wZXJhdGUgd2hlbiBhIHNwZWNpZmljCiAgdGhyZWFk IGNvbnRleHQgaGFzIGJlZW4gc2VsZWN0ZWQgKGkuZS5AOiBkb2VzICdrJyBr aWxsIG9ubHkgdGhhdAogIHRocmVhZD8pfS4KICAKISBAaXRlbSBAY29kZXtt fUB2YXJ7YWRkcn1AY29kZXssfUB2YXJ7bGVuZ3RofSAtLS0gcmVhZCBtZW1v cnkKISBAY2luZGV4IEBjb2Rle219IHBhY2tldAohIAogIFJlYWQgQHZhcnts ZW5ndGh9IGJ5dGVzIG9mIG1lbW9yeSBzdGFydGluZyBhdCBhZGRyZXNzIEB2 YXJ7YWRkcn0uCiAgTm90ZSB0aGF0IEB2YXJ7YWRkcn0gbWF5IG5vdCBiZSBh bGlnbmVkIHRvIGFueSBwYXJ0aWN1bGFyIGJvdW5kYXJ5LgogIAotLS0gMjIz MDcsMjIzMzQgLS0tLQogIEBjICAgICAgICAgICAgICAgIHNlbGVjdGVkLCBz ZXRzIHRoZSByZWdpc3RlcnMgb2YgdGhlIHJlZ2lzdGVyIGJsb2NrIG9mCiAg QGMgICAgICAgICAgICAgICAgdGhhdCB0aHJlYWQ7IG90aGVyd2lzZSBzZXRz IGN1cnJlbnQgcmVnaXN0ZXJzLgogIAohIEBpdGVtIGkgQHJ7W31AdmFye2Fk ZHJ9QHJ7W30sQHZhcntubm59QHJ7XV19CiAgQGFuY2hvcntjeWNsZSBzdGVw IHBhY2tldH0KISBAY2luZGV4IEBzYW1we2l9IHBhY2tldAohIFN0ZXAgdGhl IHJlbW90ZSB0YXJnZXQgYnkgYSBzaW5nbGUgY2xvY2sgY3ljbGUuICBJZiBA c2FtcHssQHZhcntubm59fSBpcwogIHByZXNlbnQsIGN5Y2xlIHN0ZXAgQHZh cntubm59IGN5Y2xlcy4gIElmIEB2YXJ7YWRkcn0gaXMgcHJlc2VudCwgY3lj bGUKICBzdGVwIHN0YXJ0aW5nIGF0IHRoYXQgYWRkcmVzcy4KICAKISBAaXRl bSBJCiEgQGNpbmRleCBAc2FtcHtJfSBwYWNrZXQKISBTaWduYWwsIHRoZW4g Y3ljbGUgc3RlcC4gIEB4cmVme3N0ZXAgd2l0aCBzaWduYWwgcGFja2V0fS4g IEB4cmVme2N5Y2xlCiEgc3RlcCBwYWNrZXR9LgohIAohIEBpdGVtIGsKISBA Y2luZGV4IEBzYW1we2t9IHBhY2tldAohIEtpbGwgcmVxdWVzdC4KICAKICBG SVhNRTogQGVtcGh7VGhlcmUgaXMgbm8gZGVzY3JpcHRpb24gb2YgaG93IHRv IG9wZXJhdGUgd2hlbiBhIHNwZWNpZmljCiAgdGhyZWFkIGNvbnRleHQgaGFz IGJlZW4gc2VsZWN0ZWQgKGkuZS5AOiBkb2VzICdrJyBraWxsIG9ubHkgdGhh dAogIHRocmVhZD8pfS4KICAKISBAaXRlbSBtIEB2YXJ7YWRkcn0sQHZhcnts ZW5ndGh9CiEgQGNpbmRleCBAc2FtcHttfSBwYWNrZXQKICBSZWFkIEB2YXJ7 bGVuZ3RofSBieXRlcyBvZiBtZW1vcnkgc3RhcnRpbmcgYXQgYWRkcmVzcyBA dmFye2FkZHJ9LgogIE5vdGUgdGhhdCBAdmFye2FkZHJ9IG1heSBub3QgYmUg YWxpZ25lZCB0byBhbnkgcGFydGljdWxhciBib3VuZGFyeS4KICAKKioqKioq KioqKioqKioqIHN1aXRhYmxlIGZvciBhY2Nlc3NpbmcgbWVtb3J5LW1hcHBl ZCBJL08KKioqIDIyMzM5LDIyMzY4ICoqKioKICBSZXBseToKICBAdGFibGUg QHNhbXAKICBAaXRlbSBAdmFye1hYQGRvdHN7fX0KISBAdmFye1hYQGRvdHN7 fX0gaXMgbWVtIGNvbnRlbnRzLiBDYW4gYmUgZmV3ZXIgYnl0ZXMgdGhhbiBy ZXF1ZXN0ZWQgaWYgYWJsZQohIHRvIHJlYWQgb25seSBwYXJ0IG9mIHRoZSBk YXRhLgohIEBpdGVtIEVAdmFye05OfQogIEB2YXJ7Tk59IGlzIGVycm5vCiAg QGVuZCB0YWJsZQogIAohIEBpdGVtIEBjb2Rle019QHZhcnthZGRyfSxAdmFy e2xlbmd0aH1AY29kZXs6fUB2YXJ7WFhAZG90c3t9fSAtLS0gd3JpdGUgbWVt CiEgQGNpbmRleCBAY29kZXtNfSBwYWNrZXQKISAKICBXcml0ZSBAdmFye2xl bmd0aH0gYnl0ZXMgb2YgbWVtb3J5IHN0YXJ0aW5nIGF0IGFkZHJlc3MgQHZh cnthZGRyfS4KISBAdmFye1hYQGRvdHN7fX0gaXMgdGhlIGRhdGEuCiAgCiAg UmVwbHk6CiAgQHRhYmxlIEBzYW1wCiAgQGl0ZW0gT0sKICBmb3Igc3VjY2Vz cwohIEBpdGVtIEVAdmFye05OfQogIGZvciBhbiBlcnJvciAodGhpcyBpbmNs dWRlcyB0aGUgY2FzZSB3aGVyZSBvbmx5IHBhcnQgb2YgdGhlIGRhdGEgd2Fz CiAgd3JpdHRlbikuCiAgQGVuZCB0YWJsZQogIAohIEBpdGVtIEBjb2Rle3B9 QHZhcntoZXggbnVtYmVyIG9mIHJlZ2lzdGVyfSAtLS0gcmVhZCByZWdpc3Rl ciBwYWNrZXQKISBAY2luZGV4IEBjb2Rle3B9IHBhY2tldAohIAogIEB4cmVm e3JlYWQgcmVnaXN0ZXJzIHBhY2tldH0sIGZvciBhIGRlc2NyaXB0aW9uIG9m IGhvdyB0aGUgcmV0dXJuZWQKICByZWdpc3RlciB2YWx1ZSBpcyBlbmNvZGVk LgogIAotLS0gMjIzNDQsMjIzNzQgLS0tLQogIFJlcGx5OgogIEB0YWJsZSBA c2FtcAogIEBpdGVtIEB2YXJ7WFhAZG90c3t9fQohIE1lbW9yeSBjb250ZW50 czsgZWFjaCBieXRlIGlzIHRyYW5zbWl0dGVkIGFzIGEgdHdvLWRpZ2l0IGhl eGlkZWNpbWFsCiEgbnVtYmVyLiAgVGhlIHJlcGx5IG1heSBjb250YWluIGZl d2VyIGJ5dGVzIHRoYW4gcmVxdWVzdGVkIGlmIHRoZQohIHNlcnZlciB3YXMg YWJsZSB0byByZWFkIG9ubHkgcGFydCBvZiB0aGUgcmVnaW9uIG9mIG1lbW9y eS4KISBAaXRlbSBFIEB2YXJ7Tk59CiAgQHZhcntOTn0gaXMgZXJybm8KICBA ZW5kIHRhYmxlCiAgCiEgQGl0ZW0gTSBAdmFye2FkZHJ9LEB2YXJ7bGVuZ3Ro fTpAdmFye1hYQGRvdHN7fX0KISBAY2luZGV4IEBzYW1we019IHBhY2tldAog IFdyaXRlIEB2YXJ7bGVuZ3RofSBieXRlcyBvZiBtZW1vcnkgc3RhcnRpbmcg YXQgYWRkcmVzcyBAdmFye2FkZHJ9LgohIEB2YXJ7WFhAZG90c3t9fSBpcyB0 aGUgZGF0YTsgZWFjaCBieXRlIGlzIHRyYW5zbWl0dGVkIGFzIGEgdHdvLWRp Z2l0CiEgaGV4aWRlY2ltYWwgbnVtYmVyLgogIAogIFJlcGx5OgogIEB0YWJs ZSBAc2FtcAogIEBpdGVtIE9LCiAgZm9yIHN1Y2Nlc3MKISBAaXRlbSBFIEB2 YXJ7Tk59CiAgZm9yIGFuIGVycm9yICh0aGlzIGluY2x1ZGVzIHRoZSBjYXNl IHdoZXJlIG9ubHkgcGFydCBvZiB0aGUgZGF0YSB3YXMKICB3cml0dGVuKS4K ICBAZW5kIHRhYmxlCiAgCiEgQGl0ZW0gcCBAdmFye259CiEgQGNpbmRleCBA c2FtcHtwfSBwYWNrZXQKISBSZWFkIHRoZSB2YWx1ZSBvZiByZWdpc3RlciBA dmFye259OyBAdmFye259IGlzIGluIGhleC4KICBAeHJlZntyZWFkIHJlZ2lz dGVycyBwYWNrZXR9LCBmb3IgYSBkZXNjcmlwdGlvbiBvZiBob3cgdGhlIHJl dHVybmVkCiAgcmVnaXN0ZXIgdmFsdWUgaXMgZW5jb2RlZC4KICAKKioqKioq KioqKioqKioqIFJlcGx5OgoqKiogMjIzNzAsMjI1NDcgKioqKgogIEB0YWJs ZSBAc2FtcAogIEBpdGVtIEB2YXJ7WFhAZG90c3t9fQogIHRoZSByZWdpc3Rl cidzIHZhbHVlCiEgQGl0ZW0gRUB2YXJ7Tk59CiAgZm9yIGFuIGVycm9yCiAg QGl0ZW0KICBJbmRpY2F0aW5nIGFuIHVucmVjb2duaXplZCBAdmFye3F1ZXJ5 fS4KICBAZW5kIHRhYmxlCiAgCiEgQGl0ZW0gQGNvZGV7UH1AdmFye25AZG90 c3t9fUBjb2Rlez19QHZhcntyQGRvdHN7fX0gLS0tIHdyaXRlIHJlZ2lzdGVy CiAgQGFuY2hvcnt3cml0ZSByZWdpc3RlciBwYWNrZXR9CiEgQGNpbmRleCBA Y29kZXtQfSBwYWNrZXQKISAKISBXcml0ZSByZWdpc3RlciBAdmFye25AZG90 c3t9fSB3aXRoIHZhbHVlIEB2YXJ7ckBkb3Rze319LCB3aGljaCBjb250YWlu cyB0d28gaGV4CiAgZGlnaXRzIGZvciBlYWNoIGJ5dGUgaW4gdGhlIHJlZ2lz dGVyICh0YXJnZXQgYnl0ZSBvcmRlcikuCiAgCiAgUmVwbHk6CiAgQHRhYmxl IEBzYW1wCiAgQGl0ZW0gT0sKICBmb3Igc3VjY2VzcwohIEBpdGVtIEVAdmFy e05OfQogIGZvciBhbiBlcnJvcgogIEBlbmQgdGFibGUKICAKISBAaXRlbSBA Y29kZXtxfUB2YXJ7cXVlcnl9IC0tLSBnZW5lcmFsIHF1ZXJ5CiAgQGFuY2hv cntnZW5lcmFsIHF1ZXJ5IHBhY2tldH0KISBAY2luZGV4IEBjb2Rle3F9IHBh Y2tldAohIAohIFJlcXVlc3QgaW5mbyBhYm91dCBAdmFye3F1ZXJ5fS4gIElu IGdlbmVyYWwgQHZhbHVle0dEQk59IHF1ZXJpZXMgaGF2ZSBhCiEgbGVhZGlu ZyB1cHBlciBjYXNlIGxldHRlci4gIEN1c3RvbSB2ZW5kb3IgcXVlcmllcyBz aG91bGQgdXNlIGEgY29tcGFueQohIHByZWZpeCAoaW4gbG93ZXIgY2FzZSkg ZXg6IEBzYW1we3Fmc2YudmFyfS4gIEB2YXJ7cXVlcnl9IG1heSBvcHRpb25h bGx5CiEgYmUgZm9sbG93ZWQgYnkgYSBAc2FtcHssfSBvciBAc2FtcHs7fSBz ZXBhcmF0ZWQgbGlzdC4gIFN0dWJzIG11c3QgZW5zdXJlCiEgdGhhdCB0aGV5 IG1hdGNoIHRoZSBmdWxsIEB2YXJ7cXVlcnl9IG5hbWUuCiAgCiAgUmVwbHk6 CiAgQHRhYmxlIEBzYW1wCiAgQGl0ZW0gQHZhcntYWEBkb3Rze319CiEgSGV4 IGVuY29kZWQgZGF0YSBmcm9tIHF1ZXJ5LiAgVGhlIHJlcGx5IGNhbiBub3Qg YmUgZW1wdHkuCiEgQGl0ZW0gRUB2YXJ7Tk59CiAgZXJyb3IgcmVwbHkKICBA aXRlbQogIEluZGljYXRpbmcgYW4gdW5yZWNvZ25pemVkIEB2YXJ7cXVlcnl9 LgogIEBlbmQgdGFibGUKICAKISBAaXRlbSBAY29kZXtRfUB2YXJ7dmFyfUBj b2Rlez19QHZhcnt2YWx9IC0tLSBnZW5lcmFsIHNldAohIEBjaW5kZXggQGNv ZGV7UX0gcGFja2V0CiEgCiEgU2V0IHZhbHVlIG9mIEB2YXJ7dmFyfSB0byBA dmFye3ZhbH0uCiEgCiAgQHhyZWZ7Z2VuZXJhbCBxdWVyeSBwYWNrZXR9LCBm b3IgYSBkaXNjdXNzaW9uIG9mIG5hbWluZyBjb252ZW50aW9ucy4KICAKISBA aXRlbSBAY29kZXtyfSAtLS0gcmVzZXQgQHN0cm9uZ3soZGVwcmVjYXRlZCl9 CiEgQGNpbmRleCBAY29kZXtyfSBwYWNrZXQKISAKICBSZXNldCB0aGUgZW50 aXJlIHN5c3RlbS4KICAKISBAaXRlbSBAY29kZXtSfUB2YXJ7WFh9IC0tLSBy ZW1vdGUgcmVzdGFydAohIEBjaW5kZXggQGNvZGV7Un0gcGFja2V0CiAgCiAg UmVzdGFydCB0aGUgcHJvZ3JhbSBiZWluZyBkZWJ1Z2dlZC4gIEB2YXJ7WFh9 LCB3aGlsZSBuZWVkZWQsIGlzIGlnbm9yZWQuCiAgVGhpcyBwYWNrZXQgaXMg b25seSBhdmFpbGFibGUgaW4gZXh0ZW5kZWQgbW9kZS4KICAKLSBSZXBseToK LSBAdGFibGUgQHNhbXAKLSBAaXRlbSBAZW1waHtubyByZXBseX0KICBUaGUg QHNhbXB7Un0gcGFja2V0IGhhcyBubyByZXBseS4KLSBAZW5kIHRhYmxlCi0g Ci0gQGl0ZW0gQGNvZGV7c31AdmFye2FkZHJ9IC0tLSBzdGVwCi0gQGNpbmRl eCBAY29kZXtzfSBwYWNrZXQKICAKISBAdmFye2FkZHJ9IGlzIGFkZHJlc3Mg dG8gcmVzdW1lLiAgSWYgQHZhcnthZGRyfSBpcyBvbWl0dGVkLCByZXN1bWUg YXQKISBzYW1lIGFkZHJlc3MuCiAgCiAgUmVwbHk6CiAgQHhyZWZ7U3RvcCBS ZXBseSBQYWNrZXRzfSwgZm9yIHRoZSByZXBseSBzcGVjaWZpY2F0aW9ucy4K ICAKISBAaXRlbSBAY29kZXtTfUB2YXJ7c2lnfUBjb2Rlezt9QHZhcnthZGRy fSAtLS0gc3RlcCB3aXRoIHNpZ25hbAogIEBhbmNob3J7c3RlcCB3aXRoIHNp Z25hbCBwYWNrZXR9CiEgQGNpbmRleCBAY29kZXtTfSBwYWNrZXQKISAKISBM aWtlIEBzYW1we0N9IGJ1dCBzdGVwIG5vdCBjb250aW51ZS4KICAKICBSZXBs eToKICBAeHJlZntTdG9wIFJlcGx5IFBhY2tldHN9LCBmb3IgdGhlIHJlcGx5 IHNwZWNpZmljYXRpb25zLgogIAohIEBpdGVtIEBjb2Rle3R9QHZhcnthZGRy fUBjb2Rlezp9QHZhcntQUH1AY29kZXssfUB2YXJ7TU19IC0tLSBzZWFyY2gK ISBAY2luZGV4IEBjb2Rle3R9IHBhY2tldAohIAogIFNlYXJjaCBiYWNrd2Fy ZHMgc3RhcnRpbmcgYXQgYWRkcmVzcyBAdmFye2FkZHJ9IGZvciBhIG1hdGNo IHdpdGggcGF0dGVybgogIEB2YXJ7UFB9IGFuZCBtYXNrIEB2YXJ7TU19LiAg QHZhcntQUH0gYW5kIEB2YXJ7TU19IGFyZSA0IGJ5dGVzLgogIEB2YXJ7YWRk cn0gbXVzdCBiZSBhdCBsZWFzdCAzIGRpZ2l0cy4KICAKISBAaXRlbSBAY29k ZXtUfUB2YXJ7WFh9IC0tLSB0aHJlYWQgYWxpdmUKISBAY2luZGV4IEBjb2Rl e1R9IHBhY2tldAohIAogIEZpbmQgb3V0IGlmIHRoZSB0aHJlYWQgWFggaXMg YWxpdmUuCiAgCiAgUmVwbHk6CiAgQHRhYmxlIEBzYW1wCiAgQGl0ZW0gT0sK ICB0aHJlYWQgaXMgc3RpbGwgYWxpdmUKISBAaXRlbSBFQHZhcntOTn0KICB0 aHJlYWQgaXMgZGVhZAogIEBlbmQgdGFibGUKICAKISBAaXRlbSBAY29kZXt2 fSAtLS0gdmVyYm9zZSBwYWNrZXQgcHJlZml4CiEgCiEgUGFja2V0cyBzdGFy dGluZyB3aXRoIEBjb2Rle3Z9IGFyZSBpZGVudGlmaWVkIGJ5IGEgbXVsdGkt bGV0dGVyIG5hbWUsCiEgdXAgdG8gdGhlIGZpcnN0IEBjb2Rlezt9IG9yIEBj b2Rlez99IChvciB0aGUgZW5kIG9mIHRoZSBwYWNrZXQpLgohIAohIEBpdGVt IEBjb2Rle3ZDb250fVs7QHZhcnthY3Rpb259W0Bjb2Rlezp9QHZhcnt0aWR9 XV0uLi4gLS0tIGV4dGVuZGVkIHJlc3VtZQohIEBjaW5kZXggQGNvZGV7dkNv bnR9IHBhY2tldAohIAohIFJlc3VtZSB0aGUgaW5mZXJpb3IuICBEaWZmZXJl bnQgYWN0aW9ucyBtYXkgYmUgc3BlY2lmaWVkIGZvciBlYWNoIHRocmVhZC4K ICBJZiBhbiBhY3Rpb24gaXMgc3BlY2lmaWVkIHdpdGggbm8gQHZhcnt0aWR9 LCB0aGVuIGl0IGlzIGFwcGxpZWQgdG8gYW55CiAgdGhyZWFkcyB0aGF0IGRv bid0IGhhdmUgYSBzcGVjaWZpYyBhY3Rpb24gc3BlY2lmaWVkOyBpZiBubyBk ZWZhdWx0IGFjdGlvbiBpcwogIHNwZWNpZmllZCB0aGVuIG90aGVyIHRocmVh ZHMgc2hvdWxkIHJlbWFpbiBzdG9wcGVkLiAgU3BlY2lmeWluZyBtdWx0aXBs ZQogIGRlZmF1bHQgYWN0aW9ucyBpcyBhbiBlcnJvcjsgc3BlY2lmeWluZyBu byBhY3Rpb25zIGlzIGFsc28gYW4gZXJyb3IuCiAgVGhyZWFkIElEcyBhcmUg c3BlY2lmaWVkIGluIGhleGFkZWNpbWFsLiAgQ3VycmVudGx5IHN1cHBvcnRl ZCBhY3Rpb25zIGFyZToKICAKISBAdGFibGUgQGNvZGUKICBAaXRlbSBjCiAg Q29udGludWUuCiEgQGl0ZW0gQ0B2YXJ7c2lnfQogIENvbnRpbnVlIHdpdGgg c2lnbmFsIEB2YXJ7c2lnfS4gIEB2YXJ7c2lnfSBzaG91bGQgYmUgdHdvIGhl eCBkaWdpdHMuCiAgQGl0ZW0gcwogIFN0ZXAuCiEgQGl0ZW0gU0B2YXJ7c2ln fQogIFN0ZXAgd2l0aCBzaWduYWwgQHZhcntzaWd9LiAgQHZhcntzaWd9IHNo b3VsZCBiZSB0d28gaGV4IGRpZ2l0cy4KICBAZW5kIHRhYmxlCiAgCiAgVGhl IG9wdGlvbmFsIEB2YXJ7YWRkcn0gYXJndW1lbnQgbm9ybWFsbHkgYXNzb2Np YXRlZCB3aXRoIHRoZXNlIHBhY2tldHMgaXMKISBub3Qgc3VwcG9ydGVkIGlu IEBjb2Rle3ZDb250fS4KICAKICBSZXBseToKICBAeHJlZntTdG9wIFJlcGx5 IFBhY2tldHN9LCBmb3IgdGhlIHJlcGx5IHNwZWNpZmljYXRpb25zLgogIAoh IEBpdGVtIEBjb2Rle3ZDb250P30gLS0tIGV4dGVuZGVkIHJlc3VtZSBxdWVy eQohIEBjaW5kZXggQGNvZGV7dkNvbnQ/fSBwYWNrZXQKISAKISBRdWVyeSBz dXBwb3J0IGZvciB0aGUgQGNvZGV7dkNvbnR9IHBhY2tldC4KICAKICBSZXBs eToKICBAdGFibGUgQHNhbXAKISBAaXRlbSBAY29kZXt2Q29udH1bO0B2YXJ7 YWN0aW9ufV0uLi4KISBUaGUgQGNvZGV7dkNvbnR9IHBhY2tldCBpcyBzdXBw b3J0ZWQuICBFYWNoIEB2YXJ7YWN0aW9ufSBpcyBhIHN1cHBvcnRlZAohIGNv bW1hbmQgaW4gdGhlIEBjb2Rle3ZDb250fSBwYWNrZXQuCiAgQGl0ZW0KISBU aGUgQGNvZGV7dkNvbnR9IHBhY2tldCBpcyBub3Qgc3VwcG9ydGVkLgogIEBl bmQgdGFibGUKICAKISBAaXRlbSBAY29kZXtYfUB2YXJ7YWRkcn1AY29kZXss fUB2YXJ7bGVuZ3RofUB2YXJ7On1AdmFye1hYQGRvdHN7fX0gLS0tIHdyaXRl IG1lbSAoYmluYXJ5KQohIEBjaW5kZXggQGNvZGV7WH0gcGFja2V0CiEgCiEg QHZhcnthZGRyfSBpcyBhZGRyZXNzLCBAdmFye2xlbmd0aH0gaXMgbnVtYmVy IG9mIGJ5dGVzLCBAdmFye1hYQGRvdHN7fX0KISBpcyBiaW5hcnkgZGF0YS4g IFRoZSBjaGFyYWN0ZXJzIEBjb2RleyR9LCBAY29kZXsjfSwgYW5kIEBjb2Rl ezB4N2R9IGFyZQohIGVzY2FwZWQgdXNpbmcgQGNvZGV7MHg3ZH0sIGFuZCB0 aGVuIFhPUmVkIHdpdGggQGNvZGV7MHgyMH0uCiEgRm9yIGV4YW1wbGUsIEBj b2RlezB4N2R9IHdvdWxkIGJlIHRyYW5zbWl0dGVkIGFzIEBjb2RlezB4N2Qg MHg1ZH0uCiAgCiAgUmVwbHk6CiAgQHRhYmxlIEBzYW1wCiAgQGl0ZW0gT0sK ICBmb3Igc3VjY2VzcwohIEBpdGVtIEVAdmFye05OfQogIGZvciBhbiBlcnJv cgogIEBlbmQgdGFibGUKICAKISBAaXRlbSBAY29kZXt6fUB2YXJ7dHlwZX1A Y29kZXssfUB2YXJ7YWRkcn1AY29kZXssfUB2YXJ7bGVuZ3RofSAtLS0gcmVt b3ZlIGJyZWFrcG9pbnQgb3Igd2F0Y2hwb2ludCBAc3Ryb25neyhkcmFmdCl9 CiEgQGl0ZW14IEBjb2Rle1p9QHZhcnt0eXBlfUBjb2Rleyx9QHZhcnthZGRy fUBjb2Rleyx9QHZhcntsZW5ndGh9IC0tLSBpbnNlcnQgYnJlYWtwb2ludCBv ciB3YXRjaHBvaW50IEBzdHJvbmd7KGRyYWZ0KX0KICBAYW5jaG9ye2luc2Vy dCBicmVha3BvaW50IG9yIHdhdGNocG9pbnQgcGFja2V0fQohIEBjaW5kZXgg QGNvZGV7en0gcGFja2V0CiEgQGNpbmRleCBAY29kZXtafSBwYWNrZXRzCiEg CiEgSW5zZXJ0IChAY29kZXtafSkgb3IgcmVtb3ZlIChAY29kZXt6fSkgYSBA dmFye3R5cGV9IGJyZWFrcG9pbnQgb3IKICB3YXRjaHBvaW50IHN0YXJ0aW5n IGF0IGFkZHJlc3MgQHZhcnthZGRyZXNzfSBhbmQgY292ZXJpbmcgdGhlIG5l eHQKICBAdmFye2xlbmd0aH0gYnl0ZXMuCiAgCi0tLSAyMjM3NiwyMjU0MyAt LS0tCiAgQHRhYmxlIEBzYW1wCiAgQGl0ZW0gQHZhcntYWEBkb3Rze319CiAg dGhlIHJlZ2lzdGVyJ3MgdmFsdWUKISBAaXRlbSBFIEB2YXJ7Tk59CiAgZm9y IGFuIGVycm9yCiAgQGl0ZW0KICBJbmRpY2F0aW5nIGFuIHVucmVjb2duaXpl ZCBAdmFye3F1ZXJ5fS4KICBAZW5kIHRhYmxlCiAgCiEgQGl0ZW0gUCBAdmFy e25AZG90c3t9fT1AdmFye3JAZG90c3t9fQogIEBhbmNob3J7d3JpdGUgcmVn aXN0ZXIgcGFja2V0fQohIEBjaW5kZXggQHNhbXB7UH0gcGFja2V0CiEgV3Jp dGUgcmVnaXN0ZXIgQHZhcntuQGRvdHN7fX0gd2l0aCB2YWx1ZSBAdmFye3JA ZG90c3t9fS4gIFRoZSByZWdpc3RlcgohIG51bWJlciBAdmFye259IGlzIGlu IGhleGlkZWNpbWFsLCBhbmQgQHZhcntyQGRvdHN7fX0gY29udGFpbnMgdHdv IGhleAogIGRpZ2l0cyBmb3IgZWFjaCBieXRlIGluIHRoZSByZWdpc3RlciAo dGFyZ2V0IGJ5dGUgb3JkZXIpLgogIAogIFJlcGx5OgogIEB0YWJsZSBAc2Ft cAogIEBpdGVtIE9LCiAgZm9yIHN1Y2Nlc3MKISBAaXRlbSBFIEB2YXJ7Tk59 CiAgZm9yIGFuIGVycm9yCiAgQGVuZCB0YWJsZQogIAohIEBpdGVtIHEgQHZh cntxdWVyeX0KICBAYW5jaG9ye2dlbmVyYWwgcXVlcnkgcGFja2V0fQohIEBj aW5kZXggQHNhbXB7cX0gcGFja2V0CiEgR2VuZXJhbCBxdWVyeS4gIFJlcXVl c3QgaW5mbyBhYm91dCBAdmFye3F1ZXJ5fS4gIEluIGdlbmVyYWwKISBAdmFs dWV7R0RCTn0gcXVlcmllcyBoYXZlIGEgbGVhZGluZyB1cHBlciBjYXNlIGxl dHRlci4gIEN1c3RvbSB2ZW5kb3IKISBxdWVyaWVzIHNob3VsZCB1c2UgYSBj b21wYW55IHByZWZpeCAoaW4gbG93ZXIgY2FzZSkgZXg6CiEgQHNhbXB7cWZz Zi52YXJ9LiAgQHZhcntxdWVyeX0gbWF5IG9wdGlvbmFsbHkgYmUgZm9sbG93 ZWQgYnkgYSBAc2FtcHssfQohIG9yIEBzYW1wezt9IHNlcGFyYXRlZCBsaXN0 LiAgU3R1YnMgbXVzdCBlbnN1cmUgdGhhdCB0aGV5IG1hdGNoIHRoZQohIGZ1 bGwgQHZhcntxdWVyeX0gbmFtZS4KICAKICBSZXBseToKICBAdGFibGUgQHNh bXAKICBAaXRlbSBAdmFye1hYQGRvdHN7fX0KISBIZXggZW5jb2RlZCBkYXRh IGZyb20gcXVlcnkuICBUaGUgcmVwbHkgbXVzdCBub3QgYmUgZW1wdHkuCiEg QGl0ZW0gRSBAdmFye05OfQogIGVycm9yIHJlcGx5CiAgQGl0ZW0KICBJbmRp Y2F0aW5nIGFuIHVucmVjb2duaXplZCBAdmFye3F1ZXJ5fS4KICBAZW5kIHRh YmxlCiAgCiEgQGl0ZW0gUSBAdmFye3Zhcn09QHZhcnt2YWx9CiEgQGNpbmRl eCBAc2FtcHtRfSBwYWNrZXQKISBHZW5lcmFsIHNldC4gIFNldCB2YWx1ZSBv ZiBAdmFye3Zhcn0gdG8gQHZhcnt2YWx9LgogIEB4cmVme2dlbmVyYWwgcXVl cnkgcGFja2V0fSwgZm9yIGEgZGlzY3Vzc2lvbiBvZiBuYW1pbmcgY29udmVu dGlvbnMuCiAgCiEgQGl0ZW0gcgohIEBjaW5kZXggQHNhbXB7cn0gcGFja2V0 CiAgUmVzZXQgdGhlIGVudGlyZSBzeXN0ZW0uCiAgCiEgRG9uJ3QgdXNlIHRo aXMgcGFja2V0OyB1c2UgdGhlIEBzYW1we1J9IHBhY2tldCBpbnN0ZWFkLgog IAorIEBpdGVtIFIgQHZhcntYWH0KKyBAY2luZGV4IEBzYW1we1J9IHBhY2tl dAogIFJlc3RhcnQgdGhlIHByb2dyYW0gYmVpbmcgZGVidWdnZWQuICBAdmFy e1hYfSwgd2hpbGUgbmVlZGVkLCBpcyBpZ25vcmVkLgogIFRoaXMgcGFja2V0 IGlzIG9ubHkgYXZhaWxhYmxlIGluIGV4dGVuZGVkIG1vZGUuCiAgCiAgVGhl IEBzYW1we1J9IHBhY2tldCBoYXMgbm8gcmVwbHkuCiAgCiEgQGl0ZW0gcyBA dmFye2FkZHJ9CiEgQGNpbmRleCBAc2FtcHtzfSBwYWNrZXQKISBTaW5nbGUg c3RlcC4gIEB2YXJ7YWRkcn0gaXMgdGhlIGFkZHJlc3MgYXQgd2hpY2ggdG8g cmVzdW1lLiAgSWYKISBAdmFye2FkZHJ9IGlzIG9taXR0ZWQsIHJlc3VtZSBh dCBzYW1lIGFkZHJlc3MuCiAgCiAgUmVwbHk6CiAgQHhyZWZ7U3RvcCBSZXBs eSBQYWNrZXRzfSwgZm9yIHRoZSByZXBseSBzcGVjaWZpY2F0aW9ucy4KICAK ISBAaXRlbSBTIEB2YXJ7c2lnfTtAdmFye2FkZHJ9CiAgQGFuY2hvcntzdGVw IHdpdGggc2lnbmFsIHBhY2tldH0KISBAY2luZGV4IEBzYW1we1N9IHBhY2tl dAohIFN0ZXAgd2l0aCBzaWduYWwuICBUaGlzIGlzIGFuYWxvZ291cyB0byB0 aGUgQHNhbXB7Q30gcGFja2V0LCBidXQKISByZXF1ZXN0cyBhIHNpbmdsZS1z dGVwLCByYXRoZXIgdGhhbiBhIG5vcm1hbCByZXN1bXB0aW9uIG9mIGV4ZWN1 dGlvbi4KICAKICBSZXBseToKICBAeHJlZntTdG9wIFJlcGx5IFBhY2tldHN9 LCBmb3IgdGhlIHJlcGx5IHNwZWNpZmljYXRpb25zLgogIAohIEBpdGVtIHQg QHZhcnthZGRyfTpAdmFye1BQfSxAdmFye01NfQohIEBjaW5kZXggQHNhbXB7 dH0gcGFja2V0CiAgU2VhcmNoIGJhY2t3YXJkcyBzdGFydGluZyBhdCBhZGRy ZXNzIEB2YXJ7YWRkcn0gZm9yIGEgbWF0Y2ggd2l0aCBwYXR0ZXJuCiAgQHZh cntQUH0gYW5kIG1hc2sgQHZhcntNTX0uICBAdmFye1BQfSBhbmQgQHZhcntN TX0gYXJlIDQgYnl0ZXMuCiAgQHZhcnthZGRyfSBtdXN0IGJlIGF0IGxlYXN0 IDMgZGlnaXRzLgogIAohIEBpdGVtIFQgQHZhcntYWH0KISBAY2luZGV4IEBz YW1we1R9IHBhY2tldAogIEZpbmQgb3V0IGlmIHRoZSB0aHJlYWQgWFggaXMg YWxpdmUuCiAgCiAgUmVwbHk6CiAgQHRhYmxlIEBzYW1wCiAgQGl0ZW0gT0sK ICB0aHJlYWQgaXMgc3RpbGwgYWxpdmUKISBAaXRlbSBFIEB2YXJ7Tk59CiAg dGhyZWFkIGlzIGRlYWQKICBAZW5kIHRhYmxlCiAgCiEgQGl0ZW0gdgohIFBh Y2tldHMgc3RhcnRpbmcgd2l0aCBAc2FtcHt2fSBhcmUgaWRlbnRpZmllZCBi eSBhIG11bHRpLWxldHRlciBuYW1lLAohIHVwIHRvIHRoZSBmaXJzdCBAc2Ft cHs7fSBvciBAc2FtcHs/fSAob3IgdGhlIGVuZCBvZiB0aGUgcGFja2V0KS4K ISAKISBAaXRlbSB2Q29udEBye1t9O0B2YXJ7YWN0aW9ufUBye1t9OkB2YXJ7 dGlkfUBye11dfUBkb3Rze30KISBAY2luZGV4IEBzYW1we3ZDb250fSBwYWNr ZXQKISBSZXN1bWUgdGhlIGluZmVyaW9yLCBzcGVjaWZ5aW5nIGRpZmZlcmVu dCBhY3Rpb25zIGZvciBlYWNoIHRocmVhZC4KICBJZiBhbiBhY3Rpb24gaXMg c3BlY2lmaWVkIHdpdGggbm8gQHZhcnt0aWR9LCB0aGVuIGl0IGlzIGFwcGxp ZWQgdG8gYW55CiAgdGhyZWFkcyB0aGF0IGRvbid0IGhhdmUgYSBzcGVjaWZp YyBhY3Rpb24gc3BlY2lmaWVkOyBpZiBubyBkZWZhdWx0IGFjdGlvbiBpcwog IHNwZWNpZmllZCB0aGVuIG90aGVyIHRocmVhZHMgc2hvdWxkIHJlbWFpbiBz dG9wcGVkLiAgU3BlY2lmeWluZyBtdWx0aXBsZQogIGRlZmF1bHQgYWN0aW9u cyBpcyBhbiBlcnJvcjsgc3BlY2lmeWluZyBubyBhY3Rpb25zIGlzIGFsc28g YW4gZXJyb3IuCiAgVGhyZWFkIElEcyBhcmUgc3BlY2lmaWVkIGluIGhleGFk ZWNpbWFsLiAgQ3VycmVudGx5IHN1cHBvcnRlZCBhY3Rpb25zIGFyZToKICAK ISBAdGFibGUgQHNhbXAKICBAaXRlbSBjCiAgQ29udGludWUuCiEgQGl0ZW0g QyBAdmFye3NpZ30KICBDb250aW51ZSB3aXRoIHNpZ25hbCBAdmFye3NpZ30u ICBAdmFye3NpZ30gc2hvdWxkIGJlIHR3byBoZXggZGlnaXRzLgogIEBpdGVt IHMKICBTdGVwLgohIEBpdGVtIFMgQHZhcntzaWd9CiAgU3RlcCB3aXRoIHNp Z25hbCBAdmFye3NpZ30uICBAdmFye3NpZ30gc2hvdWxkIGJlIHR3byBoZXgg ZGlnaXRzLgogIEBlbmQgdGFibGUKICAKICBUaGUgb3B0aW9uYWwgQHZhcnth ZGRyfSBhcmd1bWVudCBub3JtYWxseSBhc3NvY2lhdGVkIHdpdGggdGhlc2Ug cGFja2V0cyBpcwohIG5vdCBzdXBwb3J0ZWQgaW4gQHNhbXB7dkNvbnR9Lgog IAogIFJlcGx5OgogIEB4cmVme1N0b3AgUmVwbHkgUGFja2V0c30sIGZvciB0 aGUgcmVwbHkgc3BlY2lmaWNhdGlvbnMuCiAgCiEgQGl0ZW0gdkNvbnQ/CiEg QGNpbmRleCBAc2FtcHt2Q29udD99IHBhY2tldAohIFJlcXVlc3QgYSBsaXN0 IG9mIGFjdGlvbnMgc3VwcG9yZXRkIGJ5IHRoZSBAc2FtcHt2Q29udH0gcGFj a2V0LgogIAogIFJlcGx5OgogIEB0YWJsZSBAc2FtcAohIEBpdGVtIHZDb250 QHJ7W307QHZhcnthY3Rpb259QGRvdHN7fUBye119CiEgVGhlIEBzYW1we3ZD b250fSBwYWNrZXQgaXMgc3VwcG9ydGVkLiAgRWFjaCBAdmFye2FjdGlvbn0g aXMgYSBzdXBwb3J0ZWQKISBjb21tYW5kIGluIHRoZSBAc2FtcHt2Q29udH0g cGFja2V0LgogIEBpdGVtCiEgVGhlIEBzYW1we3ZDb250fSBwYWNrZXQgaXMg bm90IHN1cHBvcnRlZC4KICBAZW5kIHRhYmxlCiAgCiEgQGl0ZW0gWCBAdmFy e2FkZHJ9LEB2YXJ7bGVuZ3RofTpAdmFye1hYQGRvdHN7fX0KISBAY2luZGV4 IEBzYW1we1h9IHBhY2tldAohIFdyaXRlIGRhdGEgdG8gbWVtb3J5LCB3aGVy ZSB0aGUgZGF0YSBpcyB0cmFuc21pdHRlZCBpbiBiaW5hcnkuCiEgQHZhcnth ZGRyfSBpcyBhZGRyZXNzLCBAdmFye2xlbmd0aH0gaXMgbnVtYmVyIG9mIGJ5 dGVzLAohIEBzYW1we0B2YXJ7WFh9QGRvdHN7fX0gaXMgYmluYXJ5IGRhdGEu ICBUaGUgYnl0ZXMgQGNvZGV7MHgyM30KISAoQHNje2FzY2lpfSBAc2FtcHsj fSksIEBjb2RlezB4MjR9IChAc2N7YXNjaWl9IEBzYW1weyR9KSwgYW5kCiEg QGNvZGV7MHg3ZH0gKEBzY3thc2NpaX0gQHNhbXB7QH19KSBhcmUgZXNjYXBl ZCB1c2luZyBAY29kZXsweDdkfQohIChAc2N7YXNjaWl9IEBzYW1we0B9fSks IGFuZCB0aGVuIFhPUmVkIHdpdGggQGNvZGV7MHgyMH0uICBGb3IgZXhhbXBs ZSwKISB0aGUgYnl0ZSBAY29kZXsweDdkfSB3b3VsZCBiZSB0cmFuc21pdHRl ZCBhcyB0aGUgdHdvIGJ5dGVzIEBjb2RlezB4N2QKISAweDVkfS4KICAKICBS ZXBseToKICBAdGFibGUgQHNhbXAKICBAaXRlbSBPSwogIGZvciBzdWNjZXNz CiEgQGl0ZW0gRSBAdmFye05OfQogIGZvciBhbiBlcnJvcgogIEBlbmQgdGFi bGUKICAKISBAaXRlbSB6IEB2YXJ7dHlwZX0sQHZhcnthZGRyfSxAdmFye2xl bmd0aH0KISBAaXRlbXggWiBAdmFye3R5cGV9LEB2YXJ7YWRkcn0sQHZhcnts ZW5ndGh9CiAgQGFuY2hvcntpbnNlcnQgYnJlYWtwb2ludCBvciB3YXRjaHBv aW50IHBhY2tldH0KISBAY2luZGV4IEBzYW1we3p9IHBhY2tldAohIEBjaW5k ZXggQHNhbXB7Wn0gcGFja2V0cwohIEluc2VydCAoQHNhbXB7Wn0pIG9yIHJl bW92ZSAoQHNhbXB7en0pIGEgQHZhcnt0eXBlfSBicmVha3BvaW50IG9yCiAg d2F0Y2hwb2ludCBzdGFydGluZyBhdCBhZGRyZXNzIEB2YXJ7YWRkcmVzc30g YW5kIGNvdmVyaW5nIHRoZSBuZXh0CiAgQHZhcntsZW5ndGh9IGJ5dGVzLgog IAoqKioqKioqKioqKioqKiogc2VwYXJhdGVseS4KKioqIDIyNTUxLDIyNTcx ICoqKioKICBAZW1waHtJbXBsZW1lbnRhdGlvbiBub3RlczogQSByZW1vdGUg dGFyZ2V0IHNoYWxsIHJldHVybiBhbiBlbXB0eSBzdHJpbmcKICBmb3IgYW4g dW5yZWNvZ25pemVkIGJyZWFrcG9pbnQgb3Igd2F0Y2hwb2ludCBwYWNrZXQg QHZhcnt0eXBlfS4gIEEKICByZW1vdGUgdGFyZ2V0IHNoYWxsIHN1cHBvcnQg ZWl0aGVyIGJvdGggb3IgbmVpdGhlciBvZiBhIGdpdmVuCiEgQGNvZGV7Wn1A dmFye3R5cGV9QGRvdHN7fSBhbmQgQGNvZGV7en1AdmFye3R5cGV9QGRvdHN7 fSBwYWNrZXQgcGFpci4gIFRvCiAgYXZvaWQgcG90ZW50aWFsIHByb2JsZW1z IHdpdGggZHVwbGljYXRlIHBhY2tldHMsIHRoZSBvcGVyYXRpb25zIHNob3Vs ZAogIGJlIGltcGxlbWVudGVkIGluIGFuIGlkZW1wb3RlbnQgd2F5Ln0KICAK ISBAaXRlbSBAY29kZXt6fUBjb2RlezB9QGNvZGV7LH1AdmFye2FkZHJ9QGNv ZGV7LH1AdmFye2xlbmd0aH0gLS0tIHJlbW92ZSBtZW1vcnkgYnJlYWtwb2lu dCBAc3Ryb25neyhkcmFmdCl9CiEgQGl0ZW0gQGNvZGV7Wn1AY29kZXswfUBj b2Rleyx9QHZhcnthZGRyfUBjb2Rleyx9QHZhcntsZW5ndGh9IC0tLSBpbnNl cnQgbWVtb3J5IGJyZWFrcG9pbnQgQHN0cm9uZ3soZHJhZnQpfQohIEBjaW5k ZXggQGNvZGV7ejB9IHBhY2tldAohIEBjaW5kZXggQGNvZGV7WjB9IHBhY2tl dAohIAohIEluc2VydCAoQGNvZGV7WjB9KSBvciByZW1vdmUgKEBjb2Rle3ow fSkgYSBtZW1vcnkgYnJlYWtwb2ludCBhdCBhZGRyZXNzCiEgQGNvZGV7YWRk cn0gb2Ygc2l6ZSBAY29kZXtsZW5ndGh9LgogIAogIEEgbWVtb3J5IGJyZWFr cG9pbnQgaXMgaW1wbGVtZW50ZWQgYnkgcmVwbGFjaW5nIHRoZSBpbnN0cnVj dGlvbiBhdAogIEB2YXJ7YWRkcn0gd2l0aCBhIHNvZnR3YXJlIGJyZWFrcG9p bnQgb3IgdHJhcCBpbnN0cnVjdGlvbi4gIFRoZQohIEBjb2Rle2xlbmd0aH0g aXMgdXNlZCBieSB0YXJnZXRzIHRoYXQgaW5kaWNhdGVzIHRoZSBzaXplIG9m IHRoZQogIGJyZWFrcG9pbnQgKGluIGJ5dGVzKSB0aGF0IHNob3VsZCBiZSBp bnNlcnRlZCAoZS5nLiwgdGhlIEBzY3thcm19IGFuZAogIEBzY3ttaXBzfSBj YW4gaW5zZXJ0IGVpdGhlciBhIDIgb3IgNCBieXRlIGJyZWFrcG9pbnQpLgog IAotLS0gMjI1NDcsMjI1NjYgLS0tLQogIEBlbXBoe0ltcGxlbWVudGF0aW9u IG5vdGVzOiBBIHJlbW90ZSB0YXJnZXQgc2hhbGwgcmV0dXJuIGFuIGVtcHR5 IHN0cmluZwogIGZvciBhbiB1bnJlY29nbml6ZWQgYnJlYWtwb2ludCBvciB3 YXRjaHBvaW50IHBhY2tldCBAdmFye3R5cGV9LiAgQQogIHJlbW90ZSB0YXJn ZXQgc2hhbGwgc3VwcG9ydCBlaXRoZXIgYm90aCBvciBuZWl0aGVyIG9mIGEg Z2l2ZW4KISBAc2FtcHtaQHZhcnt0eXBlfUBkb3Rze319IGFuZCBAc2FtcHt6 QHZhcnt0eXBlfUBkb3Rze319IHBhY2tldCBwYWlyLiAgVG8KICBhdm9pZCBw b3RlbnRpYWwgcHJvYmxlbXMgd2l0aCBkdXBsaWNhdGUgcGFja2V0cywgdGhl IG9wZXJhdGlvbnMgc2hvdWxkCiAgYmUgaW1wbGVtZW50ZWQgaW4gYW4gaWRl bXBvdGVudCB3YXkufQogIAohIEBpdGVtIHowLEB2YXJ7YWRkcn0sQHZhcnts ZW5ndGh9CiEgQGl0ZW14IFowLEB2YXJ7YWRkcn0sQHZhcntsZW5ndGh9CiEg QGNpbmRleCBAc2FtcHt6MH0gcGFja2V0CiEgQGNpbmRleCBAc2FtcHtaMH0g cGFja2V0CiEgSW5zZXJ0IChAc2FtcHtaMH0pIG9yIHJlbW92ZSAoQHNhbXB7 ejB9KSBhIG1lbW9yeSBicmVha3BvaW50IGF0IGFkZHJlc3MKISBAdmFye2Fk ZHJ9IG9mIHNpemUgQHZhcntsZW5ndGh9LgogIAogIEEgbWVtb3J5IGJyZWFr cG9pbnQgaXMgaW1wbGVtZW50ZWQgYnkgcmVwbGFjaW5nIHRoZSBpbnN0cnVj dGlvbiBhdAogIEB2YXJ7YWRkcn0gd2l0aCBhIHNvZnR3YXJlIGJyZWFrcG9p bnQgb3IgdHJhcCBpbnN0cnVjdGlvbi4gIFRoZQohIEB2YXJ7bGVuZ3RofSBp cyB1c2VkIGJ5IHRhcmdldHMgdGhhdCBpbmRpY2F0ZXMgdGhlIHNpemUgb2Yg dGhlCiAgYnJlYWtwb2ludCAoaW4gYnl0ZXMpIHRoYXQgc2hvdWxkIGJlIGlu c2VydGVkIChlLmcuLCB0aGUgQHNje2FybX0gYW5kCiAgQHNje21pcHN9IGNh biBpbnNlcnQgZWl0aGVyIGEgMiBvciA0IGJ5dGUgYnJlYWtwb2ludCkuCiAg CioqKioqKioqKioqKioqKiBSZXBseToKKioqIDIyNTgwLDIyNTk2ICoqKioK ICBzdWNjZXNzCiAgQGl0ZW0KICBub3Qgc3VwcG9ydGVkCiEgQGl0ZW0gRUB2 YXJ7Tk59CiAgZm9yIGFuIGVycm9yCiAgQGVuZCB0YWJsZQogIAohIEBpdGVt IEBjb2Rle3p9QGNvZGV7MX1AY29kZXssfUB2YXJ7YWRkcn1AY29kZXssfUB2 YXJ7bGVuZ3RofSAtLS0gcmVtb3ZlIGhhcmR3YXJlIGJyZWFrcG9pbnQgQHN0 cm9uZ3soZHJhZnQpfQohIEBpdGVtIEBjb2Rle1p9QGNvZGV7MX1AY29kZXss fUB2YXJ7YWRkcn1AY29kZXssfUB2YXJ7bGVuZ3RofSAtLS0gaW5zZXJ0IGhh cmR3YXJlIGJyZWFrcG9pbnQgQHN0cm9uZ3soZHJhZnQpfQohIEBjaW5kZXgg QGNvZGV7ejF9IHBhY2tldAohIEBjaW5kZXggQGNvZGV7WjF9IHBhY2tldAoh IAohIEluc2VydCAoQGNvZGV7WjF9KSBvciByZW1vdmUgKEBjb2Rle3oxfSkg YSBoYXJkd2FyZSBicmVha3BvaW50IGF0CiEgYWRkcmVzcyBAY29kZXthZGRy fSBvZiBzaXplIEBjb2Rle2xlbmd0aH0uCiAgCiAgQSBoYXJkd2FyZSBicmVh a3BvaW50IGlzIGltcGxlbWVudGVkIHVzaW5nIGEgbWVjaGFuaXNtIHRoYXQg aXMgbm90CiAgZGVwZW5kYW50IG9uIGJlaW5nIGFibGUgdG8gbW9kaWZ5IHRo ZSB0YXJnZXQncyBtZW1vcnkuCi0tLSAyMjU3NSwyMjU5MCAtLS0tCiAgc3Vj Y2VzcwogIEBpdGVtCiAgbm90IHN1cHBvcnRlZAohIEBpdGVtIEUgQHZhcntO Tn0KICBmb3IgYW4gZXJyb3IKICBAZW5kIHRhYmxlCiAgCiEgQGl0ZW0gejEs QHZhcnthZGRyfSxAdmFye2xlbmd0aH0KISBAaXRlbXggWjEsQHZhcnthZGRy fSxAdmFye2xlbmd0aH0KISBAY2luZGV4IEBzYW1we3oxfSBwYWNrZXQKISBA Y2luZGV4IEBzYW1we1oxfSBwYWNrZXQKISBJbnNlcnQgKEBzYW1we1oxfSkg b3IgcmVtb3ZlIChAc2FtcHt6MX0pIGEgaGFyZHdhcmUgYnJlYWtwb2ludCBh dAohIGFkZHJlc3MgQHZhcnthZGRyfSBvZiBzaXplIEB2YXJ7bGVuZ3RofS4K ICAKICBBIGhhcmR3YXJlIGJyZWFrcG9pbnQgaXMgaW1wbGVtZW50ZWQgdXNp bmcgYSBtZWNoYW5pc20gdGhhdCBpcyBub3QKICBkZXBlbmRhbnQgb24gYmVp bmcgYWJsZSB0byBtb2RpZnkgdGhlIHRhcmdldCdzIG1lbW9yeS4KKioqKioq KioqKioqKioqIFJlcGx5OgoqKiogMjI2MDQsMjI2MTkgKioqKgogIHN1Y2Nl c3MKICBAaXRlbQogIG5vdCBzdXBwb3J0ZWQKISBAaXRlbSBFQHZhcntOTn0K ICBmb3IgYW4gZXJyb3IKICBAZW5kIHRhYmxlCiAgCiEgQGl0ZW0gQGNvZGV7 en1AY29kZXsyfUBjb2Rleyx9QHZhcnthZGRyfUBjb2Rleyx9QHZhcntsZW5n dGh9IC0tLSByZW1vdmUgd3JpdGUgd2F0Y2hwb2ludCBAc3Ryb25neyhkcmFm dCl9CiEgQGl0ZW0gQGNvZGV7Wn1AY29kZXsyfUBjb2Rleyx9QHZhcnthZGRy fUBjb2Rleyx9QHZhcntsZW5ndGh9IC0tLSBpbnNlcnQgd3JpdGUgd2F0Y2hw b2ludCBAc3Ryb25neyhkcmFmdCl9CiEgQGNpbmRleCBAY29kZXt6Mn0gcGFj a2V0CiEgQGNpbmRleCBAY29kZXtaMn0gcGFja2V0CiEgCiEgSW5zZXJ0IChA Y29kZXtaMn0pIG9yIHJlbW92ZSAoQGNvZGV7ejJ9KSBhIHdyaXRlIHdhdGNo cG9pbnQuCiAgCiAgUmVwbHk6CiAgQHRhYmxlIEBzYW1wCi0tLSAyMjU5OCwy MjYxMiAtLS0tCiAgc3VjY2VzcwogIEBpdGVtCiAgbm90IHN1cHBvcnRlZAoh IEBpdGVtIEUgQHZhcntOTn0KICBmb3IgYW4gZXJyb3IKICBAZW5kIHRhYmxl CiAgCiEgQGl0ZW0gejIsQHZhcnthZGRyfSxAdmFye2xlbmd0aH0KISBAaXRl bXggWjIsQHZhcnthZGRyfSxAdmFye2xlbmd0aH0KISBAY2luZGV4IEBzYW1w e3oyfSBwYWNrZXQKISBAY2luZGV4IEBzYW1we1oyfSBwYWNrZXQKISBJbnNl cnQgKEBzYW1we1oyfSkgb3IgcmVtb3ZlIChAc2FtcHt6Mn0pIGEgd3JpdGUg d2F0Y2hwb2ludC4KICAKICBSZXBseToKICBAdGFibGUgQHNhbXAKKioqKioq KioqKioqKioqIFJlcGx5OgoqKiogMjI2MjEsMjI2MzYgKioqKgogIHN1Y2Nl c3MKICBAaXRlbQogIG5vdCBzdXBwb3J0ZWQKISBAaXRlbSBFQHZhcntOTn0K ICBmb3IgYW4gZXJyb3IKICBAZW5kIHRhYmxlCiAgCiEgQGl0ZW0gQGNvZGV7 en1AY29kZXszfUBjb2Rleyx9QHZhcnthZGRyfUBjb2Rleyx9QHZhcntsZW5n dGh9IC0tLSByZW1vdmUgcmVhZCB3YXRjaHBvaW50IEBzdHJvbmd7KGRyYWZ0 KX0KISBAaXRlbSBAY29kZXtafUBjb2RlezN9QGNvZGV7LH1AdmFye2FkZHJ9 QGNvZGV7LH1AdmFye2xlbmd0aH0gLS0tIGluc2VydCByZWFkIHdhdGNocG9p bnQgQHN0cm9uZ3soZHJhZnQpfQohIEBjaW5kZXggQGNvZGV7ejN9IHBhY2tl dAohIEBjaW5kZXggQGNvZGV7WjN9IHBhY2tldAohIAohIEluc2VydCAoQGNv ZGV7WjN9KSBvciByZW1vdmUgKEBjb2Rle3ozfSkgYSByZWFkIHdhdGNocG9p bnQuCiAgCiAgUmVwbHk6CiAgQHRhYmxlIEBzYW1wCi0tLSAyMjYxNCwyMjYy OCAtLS0tCiAgc3VjY2VzcwogIEBpdGVtCiAgbm90IHN1cHBvcnRlZAohIEBp dGVtIEUgQHZhcntOTn0KICBmb3IgYW4gZXJyb3IKICBAZW5kIHRhYmxlCiAg CiEgQGl0ZW0gejMsQHZhcnthZGRyfSxAdmFye2xlbmd0aH0KISBAaXRlbXgg WjMsQHZhcnthZGRyfSxAdmFye2xlbmd0aH0KISBAY2luZGV4IEBzYW1we3oz fSBwYWNrZXQKISBAY2luZGV4IEBzYW1we1ozfSBwYWNrZXQKISBJbnNlcnQg KEBzYW1we1ozfSkgb3IgcmVtb3ZlIChAc2FtcHt6M30pIGEgcmVhZCB3YXRj aHBvaW50LgogIAogIFJlcGx5OgogIEB0YWJsZSBAc2FtcAoqKioqKioqKioq KioqKiogUmVwbHk6CioqKiAyMjYzOCwyMjY1MyAqKioqCiAgc3VjY2Vzcwog IEBpdGVtCiAgbm90IHN1cHBvcnRlZAohIEBpdGVtIEVAdmFye05OfQogIGZv ciBhbiBlcnJvcgogIEBlbmQgdGFibGUKICAKISBAaXRlbSBAY29kZXt6fUBj b2RlezR9QGNvZGV7LH1AdmFye2FkZHJ9QGNvZGV7LH1AdmFye2xlbmd0aH0g LS0tIHJlbW92ZSBhY2Nlc3Mgd2F0Y2hwb2ludCBAc3Ryb25neyhkcmFmdCl9 CiEgQGl0ZW0gQGNvZGV7Wn1AY29kZXs0fUBjb2Rleyx9QHZhcnthZGRyfUBj b2Rleyx9QHZhcntsZW5ndGh9IC0tLSBpbnNlcnQgYWNjZXNzIHdhdGNocG9p bnQgQHN0cm9uZ3soZHJhZnQpfQohIEBjaW5kZXggQGNvZGV7ejR9IHBhY2tl dAohIEBjaW5kZXggQGNvZGV7WjR9IHBhY2tldAohIAohIEluc2VydCAoQGNv ZGV7WjR9KSBvciByZW1vdmUgKEBjb2Rle3o0fSkgYW4gYWNjZXNzIHdhdGNo cG9pbnQuCiAgCiAgUmVwbHk6CiAgQHRhYmxlIEBzYW1wCi0tLSAyMjYzMCwy MjY0NCAtLS0tCiAgc3VjY2VzcwogIEBpdGVtCiAgbm90IHN1cHBvcnRlZAoh IEBpdGVtIEUgQHZhcntOTn0KICBmb3IgYW4gZXJyb3IKICBAZW5kIHRhYmxl CiAgCiEgQGl0ZW0gejQsQHZhcnthZGRyfSxAdmFye2xlbmd0aH0KISBAaXRl bXggWjQsQHZhcnthZGRyfSxAdmFye2xlbmd0aH0KISBAY2luZGV4IEBzYW1w e3o0fSBwYWNrZXQKISBAY2luZGV4IEBzYW1we1o0fSBwYWNrZXQKISBJbnNl cnQgKEBzYW1we1o0fSkgb3IgcmVtb3ZlIChAc2FtcHt6NH0pIGFuIGFjY2Vz cyB3YXRjaHBvaW50LgogIAogIFJlcGx5OgogIEB0YWJsZSBAc2FtcAoqKioq KioqKioqKioqKiogUmVwbHk6CioqKiAyMjY1NSwyMjY2MSAqKioqCiAgc3Vj Y2VzcwogIEBpdGVtCiAgbm90IHN1cHBvcnRlZAohIEBpdGVtIEVAdmFye05O fQogIGZvciBhbiBlcnJvcgogIEBlbmQgdGFibGUKICAKLS0tIDIyNjQ2LDIy NjUyIC0tLS0KICBzdWNjZXNzCiAgQGl0ZW0KICBub3Qgc3VwcG9ydGVkCiEg QGl0ZW0gRSBAdmFye05OfQogIGZvciBhbiBlcnJvcgogIEBlbmQgdGFibGUK ICAKKioqKioqKioqKioqKioqIGZvciBhbiBlcnJvcgoqKiogMjI2NjgsMjI3 MjcgKioqKgogIFRoZSBAc2FtcHtDfSwgQHNhbXB7Y30sIEBzYW1we1N9LCBA c2FtcHtzfSBhbmQgQHNhbXB7P30gcGFja2V0cyBjYW4KICByZWNlaXZlIGFu eSBvZiB0aGUgYmVsb3cgYXMgYSByZXBseS4gIEluIHRoZSBjYXNlIG9mIHRo ZSBAc2FtcHtDfSwKICBAc2FtcHtjfSwgQHNhbXB7U30gYW5kIEBzYW1we3N9 IHBhY2tldHMsIHRoYXQgcmVwbHkgaXMgb25seSByZXR1cm5lZAohIHdoZW4g dGhlIHRhcmdldCBoYWx0cy4gIEluIHRoZSBiZWxvdyB0aGUgZXhhY3QgbWVh bmluZyBvZiBAc2FtcHtzaWduYWwKISBudW1iZXJ9IGlzIHBvb3JseSBkZWZp bmVkLiAgSW4gZ2VuZXJhbCBvbmUgb2YgdGhlIFVOSVggc2lnbmFsIG51bWJl cmluZwohIGNvbnZlbnRpb25zIGlzIHVzZWQuCiAgCiAgQHRhYmxlIEBzYW1w CiAgCiEgQGl0ZW0gU0B2YXJ7QUF9CiEgQHZhcntBQX0gaXMgdGhlIHNpZ25h bCBudW1iZXIKISAKISBAaXRlbSBAY29kZXtUfUB2YXJ7QUF9QHZhcntuLi4u fUBjb2Rlezp9QHZhcntyLi4ufUBjb2Rlezt9QHZhcntuLi4ufUBjb2Rlezp9 QHZhcntyLi4ufUBjb2Rlezt9QHZhcntuLi4ufUBjb2Rlezp9QHZhcntyLi4u fUBjb2Rlezt9CiEgQGNpbmRleCBAY29kZXtUfSBwYWNrZXQgcmVwbHkKISAK ISBAdmFye0FBfSA9IHR3byBoZXggZGlnaXQgc2lnbmFsIG51bWJlcjsgQHZh cntuLi4ufSA9IHJlZ2lzdGVyIG51bWJlcgohIChoZXgpLCBAdmFye3IuLi59 ICA9IHRhcmdldCBieXRlIG9yZGVyZWQgcmVnaXN0ZXIgY29udGVudHMsIHNp emUgZGVmaW5lZAohIGJ5IEBjb2Rle0RFUFJFQ0FURURfUkVHSVNURVJfUkFX X1NJWkV9OyBAdmFye24uLi59ID0gQHNhbXB7dGhyZWFkfSwKISBAdmFye3Iu Li59ID0gdGhyZWFkIHByb2Nlc3MgSUQsIHRoaXMgaXMgYSBoZXggaW50ZWdl cjsgQHZhcntuLi4ufSA9CiEgKEBzYW1we3dhdGNofSB8IEBzYW1we3J3YXRj aH0gfCBAc2FtcHthd2F0Y2h9LCBAdmFye3IuLi59ID0gZGF0YQohIGFkZHJl c3MsIHRoaXMgaXMgYSBoZXggaW50ZWdlcjsgQHZhcntuLi4ufSA9IG90aGVy IHN0cmluZyBub3Qgc3RhcnRpbmcKISB3aXRoIHZhbGlkIGhleCBkaWdpdC4g IEB2YWx1ZXtHREJOfSBzaG91bGQgaWdub3JlIHRoaXMgQHZhcntuLi4ufSwK ISBAdmFye3IuLi59IHBhaXIgYW5kIGdvIG9uIHRvIHRoZSBuZXh0LiAgVGhp cyB3YXkgd2UgY2FuIGV4dGVuZCB0aGUKISBwcm90b2NvbC4KISAKISBAaXRl bSBXQHZhcntBQX0KICAKICBUaGUgcHJvY2VzcyBleGl0ZWQsIGFuZCBAdmFy e0FBfSBpcyB0aGUgZXhpdCBzdGF0dXMuICBUaGlzIGlzIG9ubHkKICBhcHBs aWNhYmxlIHRvIGNlcnRhaW4gdGFyZ2V0cy4KICAKISBAaXRlbSBYQHZhcntB QX0KISAKICBUaGUgcHJvY2VzcyB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIEB2 YXJ7QUF9LgogIAohIEBpdGVtIE9AdmFye1hYQGRvdHN7fX0KISAKISBAdmFy e1hYQGRvdHN7fX0gaXMgaGV4IGVuY29kaW5nIG9mIEBzY3thc2NpaX0gZGF0 YS4gIFRoaXMgY2FuIGhhcHBlbiBhdAohIGFueSB0aW1lIHdoaWxlIHRoZSBw cm9ncmFtIGlzIHJ1bm5pbmcgYW5kIHRoZSBkZWJ1Z2dlciBzaG91bGQgY29u dGludWUKISB0byB3YWl0IGZvciBAc2FtcHtXfSwgQHNhbXB7VH0sIGV0Yy4K ISAKISBAaXRlbSBGQHZhcntjYWxsLWlkfUBjb2Rleyx9QHZhcntwYXJhbWV0 ZXJAZG90c3t9fQogIAogIEB2YXJ7Y2FsbC1pZH0gaXMgdGhlIGlkZW50aWZp ZXIgd2hpY2ggc2F5cyB3aGljaCBob3N0IHN5c3RlbSBjYWxsIHNob3VsZAog IGJlIGNhbGxlZC4gIFRoaXMgaXMganVzdCB0aGUgbmFtZSBvZiB0aGUgZnVu Y3Rpb24uICBUcmFuc2xhdGlvbiBpbnRvIHRoZQogIGNvcnJlY3Qgc3lzdGVt IGNhbGwgaXMgb25seSBhcHBsaWNhYmxlIGFzIGl0J3MgZGVmaW5lZCBpbiBA dmFsdWV7R0RCTn0uCiAgQHhyZWZ7RmlsZS1JL08gcmVtb3RlIHByb3RvY29s IGV4dGVuc2lvbn0sIGZvciBhIGxpc3Qgb2YgaW1wbGVtZW50ZWQKICBzeXN0 ZW0gY2FsbHMuCiAgCiEgQHZhcntwYXJhbWV0ZXJAZG90c3t9fSBpcyBhIGxp c3Qgb2YgcGFyYW1ldGVycyBhcyBkZWZpbmVkIGZvciB0aGlzIHZlcnkKISBz eXN0ZW0gY2FsbC4KICAKISBUaGUgdGFyZ2V0IHJlcGxpZXMgd2l0aCB0aGlz IHBhY2tldCB3aGVuIGl0IGV4cGVjdHMgQHZhbHVle0dEQk59IHRvIGNhbGwK ISBhIGhvc3Qgc3lzdGVtIGNhbGwgb24gYmVoYWxmIG9mIHRoZSB0YXJnZXQu ICBAdmFsdWV7R0RCTn0gcmVwbGllcyB3aXRoCiEgYW4gYXBwcm9wcmlhdGUg QGNvZGV7Rn0gcGFja2V0IGFuZCBrZWVwcyB1cCB3YWl0aW5nIGZvciB0aGUg bmV4dCByZXBseQohIHBhY2tldCBmcm9tIHRoZSB0YXJnZXQuICBUaGUgbGF0 ZXN0IEBzYW1we0N9LCBAc2FtcHtjfSwgQHNhbXB7U30gb3IKISBAc2FtcHtz fSBhY3Rpb24gaXMgZXhwZWN0ZWQgdG8gYmUgY29udGludWVkLgohIEB4cmVm e0ZpbGUtSS9PIHJlbW90ZSBwcm90b2NvbCBleHRlbnNpb259LCBmb3IgbW9y ZSBkZXRhaWxzLgogIAogIEBlbmQgdGFibGUKICAKLS0tIDIyNjU5LDIyNzMz IC0tLS0KICBUaGUgQHNhbXB7Q30sIEBzYW1we2N9LCBAc2FtcHtTfSwgQHNh bXB7c30gYW5kIEBzYW1wez99IHBhY2tldHMgY2FuCiAgcmVjZWl2ZSBhbnkg b2YgdGhlIGJlbG93IGFzIGEgcmVwbHkuICBJbiB0aGUgY2FzZSBvZiB0aGUg QHNhbXB7Q30sCiAgQHNhbXB7Y30sIEBzYW1we1N9IGFuZCBAc2FtcHtzfSBw YWNrZXRzLCB0aGF0IHJlcGx5IGlzIG9ubHkgcmV0dXJuZWQKISB3aGVuIHRo ZSB0YXJnZXQgaGFsdHMuICBJbiB0aGUgYmVsb3cgdGhlIGV4YWN0IG1lYW5p bmcgb2YgQGRmbntzaWduYWwKISBudW1iZXJ9IGlzIHBvb3JseSBkZWZpbmVk LiAgSW4gZ2VuZXJhbCBvbmUgb2YgdGhlIFVOSVggc2lnbmFsCiEgbnVtYmVy aW5nIGNvbnZlbnRpb25zIGlzIHVzZWQuCiEgCiEgQXMgaW4gdGhlIGRlc2Ny aXB0aW9uIG9mIHJlcXVlc3QgcGFja2V0cywgd2UgaW5jbHVkZSBzcGFjZXMg aW4gdGhlCiEgcmVwbHkgdGVtcGxhdGVzIGZvciBjbGFyaXR5OyB0aGVzZSBh cmUgbm90IHBhcnQgb2YgdGhlIHJlcGx5IHBhY2tldCdzCiEgc3ludGF4LiAg Tm8gQHZhbHVle0dEQk59IHN0b3AgcmVwbHkgcGFja2V0IHVzZXMgc3BhY2Vz IHRvIHNlcGFyYXRlIGl0cwohIGNvbXBvbmVudHMuCiAgCiAgQHRhYmxlIEBz YW1wCiAgCiEgQGl0ZW0gUyBAdmFye0FBfQohIFRoZSBwcm9ncmFtIHJlY2Vp dmVkIHNpZ25hbCBudW1iZXIgQHZhcntBQX0gKGEgdHdvLWRpZ2l0IGhleGlk ZWNpbWFsCiEgbnVtYmVyKS4KISAKISBAaXRlbSBUIEB2YXJ7QUF9IEB2YXJ7 bjF9OkB2YXJ7cjF9O0B2YXJ7bjJ9OkB2YXJ7cjJ9O0Bkb3Rze30KISBAY2lu ZGV4IEBzYW1we1R9IHBhY2tldCByZXBseQohIFRoZSBwcm9ncmFtIHJlY2Vp dmVkIHNpZ25hbCBudW1iZXIgQHZhcntBQX0gKGEgdHdvLWRpZ2l0IGhleGlk ZWNpbWFsCiEgbnVtYmVyKS4gIFNpbmdsZS1zdGVwIGFuZCBicmVha3BvaW50 IHRyYXBzIGFyZSByZXBvcnRlZCB0aGlzIHdheS4gIFRoZQohIEBzYW1we0B2 YXJ7bn06QHZhcntyfX0gcGFpcnMgZ2l2ZSB0aGUgdmFsdWVzIG9mIGltcG9y dGFudCByZWdpc3RlcnMgb3IKISBvdGhlciBpbmZvcm1hdGlvbjoKISBAZW51 bWVyYXRlCiEgQGl0ZW0KISBJZiBAdmFye259IGlzIGEgaGV4aWRlY2ltYWwg bnVtYmVyLCBpdCBpcyBhIHJlZ2lzdGVyIG51bWJlciwgYW5kIHRoZQohIGNv cnJlc3BvbmRpbmcgQHZhcntyfSBnaXZlcyB0aGF0IHJlZ2lzdGVyJ3MgdmFs dWUuICBAdmFye3J9IGlzIGEKISBzZXJpZXMgb2YgYnl0ZXMgaW4gdGFyZ2V0 IGJ5dGUgb3JkZXIsIHdpdGggZWFjaCBieXRlIGdpdmVuIGJ5IGEKISB0d28t ZGlnaXQgaGV4IG51bWJlci4KISBAaXRlbQohIElmIEB2YXJ7bn0gaXMgQHNh bXB7dGhyZWFkfSwgdGhlbiBAdmFye3J9IGlzIHRoZSB0aHJlYWQgcHJvY2Vz cyBJRCwgaW4KISBoZXguCiEgQGl0ZW0KISBJZiBAdmFye259IGlzIEBzYW1w e3dhdGNofSwgQHNhbXB7cndhdGNofSwgb3IgQHNhbXB7YXdhdGNofSwgdGhl biB0aGUKISBwYWNrZXQgaW5kaWNhdGVzIGEgd2F0Y2hwb2ludCBoaXQsIGFu ZCBAdmFye3J9IGlzIHRoZSBkYXRhIGFkZHJlc3MsIGluCiEgaGV4LgohIEBp dGVtCiEgT3RoZXJ3aXNlLCBAdmFsdWV7R0RCTn0gc2hvdWxkIGlnbm9yZSB0 aGlzIEBzYW1we0B2YXJ7bn06QHZhcntyfX0gcGFpcgohIGFuZCBnbyBvbiB0 byB0aGUgbmV4dDsgdGhpcyBhbGxvd3MgdXMgdG8gZXh0ZW5kIHRoZSBwcm90 b2NvbCBpbiB0aGUKISBmdXR1cmUuCiEgQGVuZCBlbnVtZXJhdGUKICAKKyBA aXRlbSBXIEB2YXJ7QUF9CiAgVGhlIHByb2Nlc3MgZXhpdGVkLCBhbmQgQHZh cntBQX0gaXMgdGhlIGV4aXQgc3RhdHVzLiAgVGhpcyBpcyBvbmx5CiAgYXBw bGljYWJsZSB0byBjZXJ0YWluIHRhcmdldHMuCiAgCiEgQGl0ZW0gWCBAdmFy e0FBfQogIFRoZSBwcm9jZXNzIHRlcm1pbmF0ZWQgd2l0aCBzaWduYWwgQHZh cntBQX0uCiAgCiEgQGl0ZW0gTyBAdmFye1hYfUBkb3Rze30KISBAc2FtcHtA dmFye1hYfUBkb3Rze319IGlzIGhleCBlbmNvZGluZyBvZiBAc2N7YXNjaWl9 IGRhdGEsIHRvIGJlCiEgd3JpdHRlbiBhcyB0aGUgcHJvZ3JhbSdzIGNvbnNv bGUgb3V0cHV0LiAgVGhpcyBjYW4gaGFwcGVuIGF0IGFueSB0aW1lCiEgd2hp bGUgdGhlIHByb2dyYW0gaXMgcnVubmluZyBhbmQgdGhlIGRlYnVnZ2VyIHNo b3VsZCBjb250aW51ZSB0byB3YWl0CiEgZm9yIEBzYW1we1d9LCBAc2FtcHtU fSwgZXRjLgogIAorIEBpdGVtIEYgQHZhcntjYWxsLWlkfSxAdmFye3BhcmFt ZXRlcn1AZG90c3t9CiAgQHZhcntjYWxsLWlkfSBpcyB0aGUgaWRlbnRpZmll ciB3aGljaCBzYXlzIHdoaWNoIGhvc3Qgc3lzdGVtIGNhbGwgc2hvdWxkCiAg YmUgY2FsbGVkLiAgVGhpcyBpcyBqdXN0IHRoZSBuYW1lIG9mIHRoZSBmdW5j dGlvbi4gIFRyYW5zbGF0aW9uIGludG8gdGhlCiAgY29ycmVjdCBzeXN0ZW0g Y2FsbCBpcyBvbmx5IGFwcGxpY2FibGUgYXMgaXQncyBkZWZpbmVkIGluIEB2 YWx1ZXtHREJOfS4KICBAeHJlZntGaWxlLUkvTyByZW1vdGUgcHJvdG9jb2wg ZXh0ZW5zaW9ufSwgZm9yIGEgbGlzdCBvZiBpbXBsZW1lbnRlZAogIHN5c3Rl bSBjYWxscy4KICAKISBAc2FtcHtAdmFye3BhcmFtZXRlcn1AZG90c3t9fSBp cyBhIGxpc3Qgb2YgcGFyYW1ldGVycyBhcyBkZWZpbmVkIGZvcgohIHRoaXMg dmVyeSBzeXN0ZW0gY2FsbC4KICAKISBUaGUgdGFyZ2V0IHJlcGxpZXMgd2l0 aCB0aGlzIHBhY2tldCB3aGVuIGl0IGV4cGVjdHMgQHZhbHVle0dEQk59IHRv CiEgY2FsbCBhIGhvc3Qgc3lzdGVtIGNhbGwgb24gYmVoYWxmIG9mIHRoZSB0 YXJnZXQuICBAdmFsdWV7R0RCTn0gcmVwbGllcwohIHdpdGggYW4gYXBwcm9w cmlhdGUgQHNhbXB7Rn0gcGFja2V0IGFuZCBrZWVwcyB1cCB3YWl0aW5nIGZv ciB0aGUgbmV4dAohIHJlcGx5IHBhY2tldCBmcm9tIHRoZSB0YXJnZXQuICBU aGUgbGF0ZXN0IEBzYW1we0N9LCBAc2FtcHtjfSwgQHNhbXB7U30KISBvciBA c2FtcHtzfSBhY3Rpb24gaXMgZXhwZWN0ZWQgdG8gYmUgY29udGludWVkLiAg QHhyZWZ7RmlsZS1JL08gcmVtb3RlCiEgcHJvdG9jb2wgZXh0ZW5zaW9ufSwg Zm9yIG1vcmUgZGV0YWlscy4KICAKICBAZW5kIHRhYmxlCiAgCioqKioqKioq KioqKioqKiBwYWNrZXQgZnJvbSB0aGUgdGFyZ2V0LiAgVGhlIGxhdGVzdCBA c2FtCioqKiAyMjczMSwyMjc5NSAqKioqCiAgCiAgVGhlIGZvbGxvd2luZyBz ZXQgYW5kIHF1ZXJ5IHBhY2tldHMgaGF2ZSBhbHJlYWR5IGJlZW4gZGVmaW5l ZC4KICAKISBAdGFibGUgQHIKICAKISBAaXRlbSBAY29kZXtxfUBjb2Rle0N9 IC0tLSBjdXJyZW50IHRocmVhZAogIEBjaW5kZXggY3VycmVudCB0aHJlYWQs IHJlbW90ZSByZXF1ZXN0CiEgQGNpbmRleCBAY29kZXtxQ30gcGFja2V0CiAg UmV0dXJuIHRoZSBjdXJyZW50IHRocmVhZCBpZC4KICAKICBSZXBseToKICBA dGFibGUgQHNhbXAKISBAaXRlbSBAY29kZXtRQ31AdmFye3BpZH0KICBXaGVy ZSBAdmFye3BpZH0gaXMgYW4gdW5zaWduZWQgaGV4aWRlY2ltYWwgcHJvY2Vz cyBpZC4KISBAaXRlbSAqCiAgQW55IG90aGVyIHJlcGx5IGltcGxpZXMgdGhl IG9sZCBwaWQuCiAgQGVuZCB0YWJsZQogIAohIEBpdGVtIEBjb2Rle3F9QGNv ZGV7Q1JDOn1AdmFye2FkZHJ9QGNvZGV7LH1AdmFye2xlbmd0aH0gLS0tIGNv bXB1dGUgQ1JDIG9mIG1lbW9yeSBibG9jawogIEBjaW5kZXggQ1JDIG9mIG1l bW9yeSBibG9jaywgcmVtb3RlIHJlcXVlc3QKISBAY2luZGV4IEBjb2Rle3FD UkN9IHBhY2tldAogIFJlcGx5OgogIEB0YWJsZSBAc2FtcAohIEBpdGVtIEBj b2Rle0V9QHZhcntOTn0KICBBbiBlcnJvciAoc3VjaCBhcyBtZW1vcnkgZmF1 bHQpCiEgQGl0ZW0gQGNvZGV7Q31AdmFye0NSQzMyfQohIEEgMzIgYml0IGN5 Y2xpYyByZWR1bmRhbmN5IGNoZWNrIG9mIHRoZSBzcGVjaWZpZWQgbWVtb3J5 IHJlZ2lvbi4KICBAZW5kIHRhYmxlCiAgCiEgQGl0ZW0gQGNvZGV7cX1AY29k ZXtmVGhyZWFkSW5mb30gLS0gYWxsIHRocmVhZCBpZHMKICBAY2luZGV4IGxp c3QgYWN0aXZlIHRocmVhZHMsIHJlbW90ZSByZXF1ZXN0CiEgQGNpbmRleCBA Y29kZXtxZlRocmVhZEluZm99IHBhY2tldAohIEBjb2Rle3F9QGNvZGV7c1Ro cmVhZEluZm99CiEgCiEgT2J0YWluIGEgbGlzdCBvZiBhY3RpdmUgdGhyZWFk IGlkcyBmcm9tIHRoZSB0YXJnZXQgKE9TKS4gIFNpbmNlIHRoZXJlCiAgbWF5 IGJlIHRvbyBtYW55IGFjdGl2ZSB0aHJlYWRzIHRvIGZpdCBpbnRvIG9uZSBy ZXBseSBwYWNrZXQsIHRoaXMgcXVlcnkKICB3b3JrcyBpdGVyYXRpdmVseTog aXQgbWF5IHJlcXVpcmUgbW9yZSB0aGFuIG9uZSBxdWVyeS9yZXBseSBzZXF1 ZW5jZSB0bwogIG9idGFpbiB0aGUgZW50aXJlIGxpc3Qgb2YgdGhyZWFkcy4g IFRoZSBmaXJzdCBxdWVyeSBvZiB0aGUgc2VxdWVuY2Ugd2lsbAohIGJlIHRo ZSBAY29kZXtxZn1AY29kZXtUaHJlYWRJbmZvfSBxdWVyeTsgc3Vic2VxdWVu dCBxdWVyaWVzIGluIHRoZQohIHNlcXVlbmNlIHdpbGwgYmUgdGhlIEBjb2Rl e3FzfUBjb2Rle1RocmVhZEluZm99IHF1ZXJ5LgogIAohIE5PVEU6IHJlcGxh Y2VzIHRoZSBAY29kZXtxTH0gcXVlcnkgKHNlZSBiZWxvdykuCiAgCiAgUmVw bHk6CiAgQHRhYmxlIEBzYW1wCiEgQGl0ZW0gQGNvZGV7bX1AdmFye2lkfQog IEEgc2luZ2xlIHRocmVhZCBpZAohIEBpdGVtIEBjb2Rle219QHZhcntpZH0s QHZhcntpZH1AZG90c3t9CiAgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiB0 aHJlYWQgaWRzCiEgQGl0ZW0gQGNvZGV7bH0KISAobG93ZXIgY2FzZSAnZWwn KSBkZW5vdGVzIGVuZCBvZiBsaXN0LgogIEBlbmQgdGFibGUKICAKICBJbiBy ZXNwb25zZSB0byBlYWNoIHF1ZXJ5LCB0aGUgdGFyZ2V0IHdpbGwgcmVwbHkg d2l0aCBhIGxpc3Qgb2Ygb25lIG9yCiAgbW9yZSB0aHJlYWQgaWRzLCBpbiBi aWctZW5kaWFuIHVuc2lnbmVkIGhleCwgc2VwYXJhdGVkIGJ5IGNvbW1hcy4K ICBAdmFsdWV7R0RCTn0gd2lsbCByZXNwb25kIHRvIGVhY2ggcmVwbHkgd2l0 aCBhIHJlcXVlc3QgZm9yIG1vcmUgdGhyZWFkCiEgaWRzICh1c2luZyB0aGUg QGNvZGV7cXN9IGZvcm0gb2YgdGhlIHF1ZXJ5KSwgdW50aWwgdGhlIHRhcmdl dCByZXNwb25kcwohIHdpdGggQGNvZGV7bH0gKGxvd2VyLWNhc2UgZWwsIGZv ciBAY29kZXsnbGFzdCd9KS4KICAKISBAaXRlbSBAY29kZXtxR2V0VExTQWRk cn06QHZhcnt0aHJlYWQtaWR9LEB2YXJ7b2Zmc2V0fSxAdmFye2xtfSAtLS0g Z2V0IHRocmVhZCBsb2NhbCBzdG9yYWdlIGFkZHJlc3MKICBAY2luZGV4IGdl dCB0aHJlYWQtbG9jYWwgc3RvcmFnZSBhZGRyZXNzLCByZW1vdGUgcmVxdWVz dAohIEBjaW5kZXggQGNvZGV7cUdldFRMU0FkZHJ9IHBhY2tldAogIEZldGNo IHRoZSBhZGRyZXNzIGFzc29jaWF0ZWQgd2l0aCB0aHJlYWQgbG9jYWwgc3Rv cmFnZSBzcGVjaWZpZWQKICBieSBAdmFye3RocmVhZC1pZH0sIEB2YXJ7b2Zm c2V0fSwgYW5kIEB2YXJ7bG19LgogIAotLS0gMjI3MzcsMjI4MDggLS0tLQog IAogIFRoZSBmb2xsb3dpbmcgc2V0IGFuZCBxdWVyeSBwYWNrZXRzIGhhdmUg YWxyZWFkeSBiZWVuIGRlZmluZWQuCiAgCiEgTGlrZSB0aGUgZGVzY3JpcHRp b25zIG9mIHRoZSBvdGhlciBwYWNrZXRzLCBlYWNoIGRlc2NyaXB0aW9uIGhl cmUKISBoYXMgYSB0ZW1wbGF0ZSBzaG93aW5nIHRoZSBwYWNrZXQncyBvdmVy YWxsIHN5bnRheCwgZm9sbG93ZWQgYnkgYW4KISBleHBsYW5hdGlvbiBvZiB0 aGUgcGFja2V0J3MgbWVhbmluZy4gIFdlIGluY2x1ZGUgc3BhY2VzIGluIHNv bWUgb2YgdGhlCiEgdGVtcGxhdGVzIGZvciBjbGFyaXR5OyB0aGVzZSBhcmUg bm90IHBhcnQgb2YgdGhlIHBhY2tldCdzIHN5bnRheC4gIE5vCiEgQHZhbHVl e0dEQk59IHBhY2tldCB1c2VzIHNwYWNlcyB0byBzZXBhcmF0ZSBpdHMgY29t cG9uZW50cy4KISAKISBAdGFibGUgQHNhbXAKICAKISBAaXRlbSBxQwogIEBj aW5kZXggY3VycmVudCB0aHJlYWQsIHJlbW90ZSByZXF1ZXN0CiEgQGNpbmRl eCBAc2FtcHtxQ30gcGFja2V0CiAgUmV0dXJuIHRoZSBjdXJyZW50IHRocmVh ZCBpZC4KICAKICBSZXBseToKICBAdGFibGUgQHNhbXAKISBAaXRlbSBRQyBA dmFye3BpZH0KICBXaGVyZSBAdmFye3BpZH0gaXMgYW4gdW5zaWduZWQgaGV4 aWRlY2ltYWwgcHJvY2VzcyBpZC4KISBAaXRlbSBAcnsoYW55dGhpbmcgZWxz ZSl9CiAgQW55IG90aGVyIHJlcGx5IGltcGxpZXMgdGhlIG9sZCBwaWQuCiAg QGVuZCB0YWJsZQogIAohIEBpdGVtIHFDUkM6QHZhcnthZGRyfSxAdmFye2xl bmd0aH0KICBAY2luZGV4IENSQyBvZiBtZW1vcnkgYmxvY2ssIHJlbW90ZSBy ZXF1ZXN0CiEgQGNpbmRleCBAc2FtcHtxQ1JDfSBwYWNrZXQKISBDb21wdXRl IHRoZSBDUkMgY2hlY2tzdW0gb2YgYSBibG9jayBvZiBtZW1vcnkuCiAgUmVw bHk6CiAgQHRhYmxlIEBzYW1wCiEgQGl0ZW0gRSBAdmFye05OfQogIEFuIGVy cm9yIChzdWNoIGFzIG1lbW9yeSBmYXVsdCkKISBAaXRlbSBDIEB2YXJ7Y3Jj MzJ9CiEgVGhlIHNwZWNpZmllZCBtZW1vcnkgcmVnaW9uJ3MgY2hlY2tzdW0g aXMgQHZhcntjcmMzMn0uCiAgQGVuZCB0YWJsZQogIAohIEBpdGVtIHFmVGhy ZWFkSW5mbwohIEBpdGVteCBxc1RocmVhZEluZm8KICBAY2luZGV4IGxpc3Qg YWN0aXZlIHRocmVhZHMsIHJlbW90ZSByZXF1ZXN0CiEgQGNpbmRleCBAc2Ft cHtxZlRocmVhZEluZm99IHBhY2tldAohIEBjaW5kZXggQHNhbXB7cXNUaHJl YWRJbmZvfSBwYWNrZXQKISBPYnRhaW4gYSBsaXN0IG9mIGFsbCBhY3RpdmUg dGhyZWFkIGlkcyBmcm9tIHRoZSB0YXJnZXQgKE9TKS4gIFNpbmNlIHRoZXJl CiAgbWF5IGJlIHRvbyBtYW55IGFjdGl2ZSB0aHJlYWRzIHRvIGZpdCBpbnRv IG9uZSByZXBseSBwYWNrZXQsIHRoaXMgcXVlcnkKICB3b3JrcyBpdGVyYXRp dmVseTogaXQgbWF5IHJlcXVpcmUgbW9yZSB0aGFuIG9uZSBxdWVyeS9yZXBs eSBzZXF1ZW5jZSB0bwogIG9idGFpbiB0aGUgZW50aXJlIGxpc3Qgb2YgdGhy ZWFkcy4gIFRoZSBmaXJzdCBxdWVyeSBvZiB0aGUgc2VxdWVuY2Ugd2lsbAoh IGJlIHRoZSBAc2FtcHtxZlRocmVhZEluZm99IHF1ZXJ5OyBzdWJzZXF1ZW50 IHF1ZXJpZXMgaW4gdGhlCiEgc2VxdWVuY2Ugd2lsbCBiZSB0aGUgQHNhbXB7 cXNUaHJlYWRJbmZvfSBxdWVyeS4KICAKISBOT1RFOiBUaGlzIHBhY2tldCBy ZXBsYWNlcyB0aGUgQHNhbXB7cUx9IHF1ZXJ5IChzZWUgYmVsb3cpLgogIAog IFJlcGx5OgogIEB0YWJsZSBAc2FtcAohIEBpdGVtIG0gQHZhcntpZH0KICBB IHNpbmdsZSB0aHJlYWQgaWQKISBAaXRlbSBtIEB2YXJ7aWR9LEB2YXJ7aWR9 QGRvdHN7fQogIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgdGhyZWFkIGlk cwohIEBpdGVtIGwKISAobG93ZXIgY2FzZSBsZXR0ZXIgQHNhbXB7TH0pIGRl bm90ZXMgZW5kIG9mIGxpc3QuCiAgQGVuZCB0YWJsZQogIAogIEluIHJlc3Bv bnNlIHRvIGVhY2ggcXVlcnksIHRoZSB0YXJnZXQgd2lsbCByZXBseSB3aXRo IGEgbGlzdCBvZiBvbmUgb3IKICBtb3JlIHRocmVhZCBpZHMsIGluIGJpZy1l bmRpYW4gdW5zaWduZWQgaGV4LCBzZXBhcmF0ZWQgYnkgY29tbWFzLgogIEB2 YWx1ZXtHREJOfSB3aWxsIHJlc3BvbmQgdG8gZWFjaCByZXBseSB3aXRoIGEg cmVxdWVzdCBmb3IgbW9yZSB0aHJlYWQKISBpZHMgKHVzaW5nIHRoZSBAc2Ft cHtxc30gZm9ybSBvZiB0aGUgcXVlcnkpLCB1bnRpbCB0aGUgdGFyZ2V0IHJl c3BvbmRzCiEgd2l0aCBAc2FtcHtsfSAobG93ZXItY2FzZSBlbCwgZm9yIEBk Zm57bGFzdH0pLgogIAohIEBpdGVtIHFHZXRUTFNBZGRyOkB2YXJ7dGhyZWFk LWlkfSxAdmFye29mZnNldH0sQHZhcntsbX0KICBAY2luZGV4IGdldCB0aHJl YWQtbG9jYWwgc3RvcmFnZSBhZGRyZXNzLCByZW1vdGUgcmVxdWVzdAohIEBj aW5kZXggQHNhbXB7cUdldFRMU0FkZHJ9IHBhY2tldAogIEZldGNoIHRoZSBh ZGRyZXNzIGFzc29jaWF0ZWQgd2l0aCB0aHJlYWQgbG9jYWwgc3RvcmFnZSBz cGVjaWZpZWQKICBieSBAdmFye3RocmVhZC1pZH0sIEB2YXJ7b2Zmc2V0fSwg YW5kIEB2YXJ7bG19LgogIAoqKioqKioqKioqKioqKiogT3RoZXIgb3BlcmF0 aW5nIGVudmlyb25tZW50cyBtYXkgY2hvb3NlIAoqKiogMjI4MDgsMjI4MzEg KioqKgogIGRpZmZlcmVudGx5LCBzbyB0aGUgcHJlY2lzZSBtZWFuaW5nIG9m IHRoaXMgcGFyYW1ldGVyIHdpbGwgdmFyeS4KICAKICBSZXBseToKISBAdGFi bGUgQGFzaXMKISBAaXRlbSBAdmFye1hYQGRvdHN7fX0KICBIZXggZW5jb2Rl ZCAoYmlnIGVuZGlhbikgYnl0ZXMgcmVwcmVzZW50aW5nIHRoZSBhZGRyZXNz IG9mIHRoZSB0aHJlYWQKICBsb2NhbCBzdG9yYWdlIHJlcXVlc3RlZC4KICAK ISBAaXRlbSBAY29kZXtFfUB2YXJ7bm59ICh3aGVyZSBAdmFye25ufSBhcmUg aGV4IGRpZ2l0cykKISBBbiBlcnJvciBvY2N1cnJlZC4KICAKISBAaXRlbSBA Y29kZXsiIn0gKGVtcHR5KQohIEFuIGVtcHR5IHJlcGx5IGluZGljYXRlcyB0 aGF0IEBjb2Rle3FHZXRUTFNBZGRyfSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRo ZSBzdHViLgogIEBlbmQgdGFibGUKICAKICBVc2Ugb2YgdGhpcyByZXF1ZXN0 IHBhY2tldCBpcyBjb250cm9sbGVkIGJ5IHRoZSBAY29kZXtzZXQgcmVtb3Rl CiAgZ2V0LXRocmVhZC1sb2NhbC1zdG9yYWdlLWFkZHJlc3N9IGNvbW1hbmQg KEBweHJlZntSZW1vdGUKICBjb25maWd1cmF0aW9uLCBzZXQgcmVtb3RlIGdl dC10aHJlYWQtbG9jYWwtc3RvcmFnZS1hZGRyZXNzfSkuCiAgCiEgQGl0ZW0g QGNvZGV7cX1AY29kZXtMfUB2YXJ7c3RhcnRmbGFnfUB2YXJ7dGhyZWFkY291 bnR9QHZhcntuZXh0dGhyZWFkfSAtLS0gcXVlcnkgQHZhcntMSVNUfSBvciBA dmFye3RocmVhZExJU1R9IEBzdHJvbmd7KGRlcHJlY2F0ZWQpfQohIAogIE9i dGFpbiB0aHJlYWQgaW5mb3JtYXRpb24gZnJvbSBSVE9TLiAgV2hlcmU6IEB2 YXJ7c3RhcnRmbGFnfSAob25lIGhleAogIGRpZ2l0KSBpcyBvbmUgdG8gaW5k aWNhdGUgdGhlIGZpcnN0IHF1ZXJ5IGFuZCB6ZXJvIHRvIGluZGljYXRlIGEK ICBzdWJzZXF1ZW50IHF1ZXJ5OyBAdmFye3RocmVhZGNvdW50fSAodHdvIGhl eCBkaWdpdHMpIGlzIHRoZSBtYXhpbXVtCi0tLSAyMjgyMSwyMjg0MyAtLS0t CiAgZGlmZmVyZW50bHksIHNvIHRoZSBwcmVjaXNlIG1lYW5pbmcgb2YgdGhp cyBwYXJhbWV0ZXIgd2lsbCB2YXJ5LgogIAogIFJlcGx5OgohIEB0YWJsZSBA c2FtcAohIEBpdGVtIEB2YXJ7WFh9QGRvdHN7fQogIEhleCBlbmNvZGVkIChi aWcgZW5kaWFuKSBieXRlcyByZXByZXNlbnRpbmcgdGhlIGFkZHJlc3Mgb2Yg dGhlIHRocmVhZAogIGxvY2FsIHN0b3JhZ2UgcmVxdWVzdGVkLgogIAohIEBp dGVtIEUgQHZhcntubn0KISBBbiBlcnJvciBvY2N1cnJlZC4gIEB2YXJ7bm59 IGFyZSBoZXggZGlnaXRzLgogIAohIEBpdGVtCiEgQW4gZW1wdHkgcmVwbHkg aW5kaWNhdGVzIHRoYXQgQHNhbXB7cUdldFRMU0FkZHJ9IGlzIG5vdCBzdXBw b3J0ZWQgYnkgdGhlIHN0dWIuCiAgQGVuZCB0YWJsZQogIAogIFVzZSBvZiB0 aGlzIHJlcXVlc3QgcGFja2V0IGlzIGNvbnRyb2xsZWQgYnkgdGhlIEBjb2Rl e3NldCByZW1vdGUKICBnZXQtdGhyZWFkLWxvY2FsLXN0b3JhZ2UtYWRkcmVz c30gY29tbWFuZCAoQHB4cmVme1JlbW90ZQogIGNvbmZpZ3VyYXRpb24sIHNl dCByZW1vdGUgZ2V0LXRocmVhZC1sb2NhbC1zdG9yYWdlLWFkZHJlc3N9KS4K ICAKISBAaXRlbSBxTCBAdmFye3N0YXJ0ZmxhZ30gQHZhcnt0aHJlYWRjb3Vu dH0gQHZhcntuZXh0dGhyZWFkfQogIE9idGFpbiB0aHJlYWQgaW5mb3JtYXRp b24gZnJvbSBSVE9TLiAgV2hlcmU6IEB2YXJ7c3RhcnRmbGFnfSAob25lIGhl eAogIGRpZ2l0KSBpcyBvbmUgdG8gaW5kaWNhdGUgdGhlIGZpcnN0IHF1ZXJ5 IGFuZCB6ZXJvIHRvIGluZGljYXRlIGEKICBzdWJzZXF1ZW50IHF1ZXJ5OyBA dmFye3RocmVhZGNvdW50fSAodHdvIGhleCBkaWdpdHMpIGlzIHRoZSBtYXhp bXVtCioqKioqKioqKioqKioqKiBudW1iZXIgb2YgdGhyZWFkcyB0aGUgcmVz cG9uc2UgcGFja2V0IGNhCioqKiAyMjgzMywyMjg1NSAqKioqCiAgKGVpZ2h0 IGhleCBkaWdpdHMpLCBmb3Igc3Vic2VxdWVudCBxdWVyaWVzIChAdmFye3N0 YXJ0ZmxhZ30gaXMgemVybyksIGlzCiAgcmV0dXJuZWQgaW4gdGhlIHJlc3Bv bnNlIGFzIEB2YXJ7YXJndGhyZWFkfS4KICAKISBOT1RFOiB0aGlzIHF1ZXJ5 IGlzIHJlcGxhY2VkIGJ5IHRoZSBAY29kZXtxfUBjb2Rle2ZUaHJlYWRJbmZv fSBxdWVyeQohIChzZWUgYWJvdmUpLgogIAogIFJlcGx5OgogIEB0YWJsZSBA c2FtcAohIEBpdGVtIEBjb2Rle3F9QGNvZGV7TX1AdmFye2NvdW50fUB2YXJ7 ZG9uZX1AdmFye2FyZ3RocmVhZH1AdmFye3RocmVhZEBkb3Rze319CiAgV2hl cmU6IEB2YXJ7Y291bnR9ICh0d28gaGV4IGRpZ2l0cykgaXMgdGhlIG51bWJl ciBvZiB0aHJlYWRzIGJlaW5nCiAgcmV0dXJuZWQ7IEB2YXJ7ZG9uZX0gKG9u ZSBoZXggZGlnaXQpIGlzIHplcm8gdG8gaW5kaWNhdGUgbW9yZSB0aHJlYWRz CiAgYW5kIG9uZSBpbmRpY2F0ZXMgbm8gZnVydGhlciB0aHJlYWRzOyBAdmFy e2FyZ3RocmVhZGlkfSAoZWlnaHQgaGV4CiEgZGlnaXRzKSBpcyBAdmFye25l eHR0aHJlYWR9IGZyb20gdGhlIHJlcXVlc3QgcGFja2V0OyBAdmFye3RocmVh ZEBkb3Rze319CiAgaXMgYSBzZXF1ZW5jZSBvZiB0aHJlYWQgSURzIGZyb20g dGhlIHRhcmdldC4gIEB2YXJ7dGhyZWFkaWR9IChlaWdodCBoZXgKICBkaWdp dHMpLiAgU2VlIEBjb2Rle3JlbW90ZS5jOnBhcnNlX3RocmVhZGxpc3RfcmVz cG9uc2UoKX0uCiAgQGVuZCB0YWJsZQogIAohIEBpdGVtIEBjb2Rle3F9QGNv ZGV7T2Zmc2V0c30gLS0tIHF1ZXJ5IHNlY3Qgb2ZmcwogIEBjaW5kZXggc2Vj dGlvbiBvZmZzZXRzLCByZW1vdGUgcmVxdWVzdAohIEBjaW5kZXggQGNvZGV7 cU9mZnNldHN9IHBhY2tldAogIEdldCBzZWN0aW9uIG9mZnNldHMgdGhhdCB0 aGUgdGFyZ2V0IHVzZWQgd2hlbiByZS1sb2NhdGluZyB0aGUgZG93bmxvYWRl ZAogIGltYWdlLiAgQGVtcGh7Tm90ZTogd2hpbGUgYSBAY29kZXtCc3N9IG9m ZnNldCBpcyBpbmNsdWRlZCBpbiB0aGUKICByZXNwb25zZSwgQHZhbHVle0dE Qk59IGlnbm9yZXMgdGhpcyBhbmQgaW5zdGVhZCBhcHBsaWVzIHRoZSBAY29k ZXtEYXRhfQotLS0gMjI4NDUsMjI4NjYgLS0tLQogIChlaWdodCBoZXggZGln aXRzKSwgZm9yIHN1YnNlcXVlbnQgcXVlcmllcyAoQHZhcntzdGFydGZsYWd9 IGlzIHplcm8pLCBpcwogIHJldHVybmVkIGluIHRoZSByZXNwb25zZSBhcyBA dmFye2FyZ3RocmVhZH0uCiAgCiEgRG9uJ3QgdXNlIHRoaXMgcGFja2V0OyB1 c2UgdGhlIEBzYW1we3FmVGhyZWFkSW5mb30gcXVlcnkgaW5zdGVhZCAoc2Vl IGFib3ZlKS4KICAKICBSZXBseToKICBAdGFibGUgQHNhbXAKISBAaXRlbSBx TSBAdmFye2NvdW50fSBAdmFye2RvbmV9IEB2YXJ7YXJndGhyZWFkfSBAdmFy e3RocmVhZH1AZG90c3t9CiAgV2hlcmU6IEB2YXJ7Y291bnR9ICh0d28gaGV4 IGRpZ2l0cykgaXMgdGhlIG51bWJlciBvZiB0aHJlYWRzIGJlaW5nCiAgcmV0 dXJuZWQ7IEB2YXJ7ZG9uZX0gKG9uZSBoZXggZGlnaXQpIGlzIHplcm8gdG8g aW5kaWNhdGUgbW9yZSB0aHJlYWRzCiAgYW5kIG9uZSBpbmRpY2F0ZXMgbm8g ZnVydGhlciB0aHJlYWRzOyBAdmFye2FyZ3RocmVhZGlkfSAoZWlnaHQgaGV4 CiEgZGlnaXRzKSBpcyBAdmFye25leHR0aHJlYWR9IGZyb20gdGhlIHJlcXVl c3QgcGFja2V0OyBAdmFye3RocmVhZH1AZG90c3t9CiAgaXMgYSBzZXF1ZW5j ZSBvZiB0aHJlYWQgSURzIGZyb20gdGhlIHRhcmdldC4gIEB2YXJ7dGhyZWFk aWR9IChlaWdodCBoZXgKICBkaWdpdHMpLiAgU2VlIEBjb2Rle3JlbW90ZS5j OnBhcnNlX3RocmVhZGxpc3RfcmVzcG9uc2UoKX0uCiAgQGVuZCB0YWJsZQog IAohIEBpdGVtIHFPZmZzZXRzCiAgQGNpbmRleCBzZWN0aW9uIG9mZnNldHMs IHJlbW90ZSByZXF1ZXN0CiEgQGNpbmRleCBAc2FtcHtxT2Zmc2V0c30gcGFj a2V0CiAgR2V0IHNlY3Rpb24gb2Zmc2V0cyB0aGF0IHRoZSB0YXJnZXQgdXNl ZCB3aGVuIHJlLWxvY2F0aW5nIHRoZSBkb3dubG9hZGVkCiAgaW1hZ2UuICBA ZW1waHtOb3RlOiB3aGlsZSBhIEBjb2Rle0Jzc30gb2Zmc2V0IGlzIGluY2x1 ZGVkIGluIHRoZQogIHJlc3BvbnNlLCBAdmFsdWV7R0RCTn0gaWdub3JlcyB0 aGlzIGFuZCBpbnN0ZWFkIGFwcGxpZXMgdGhlIEBjb2Rle0RhdGF9CioqKioq KioqKioqKioqKiBvZmZzZXQgdG8gdGhlIEBjb2Rle0Jzc30gc2VjdGlvbi59 CioqKiAyMjg1NywyMjk2NiAqKioqCiAgCiAgUmVwbHk6CiAgQHRhYmxlIEBz YW1wCiEgQGl0ZW0gQGNvZGV7VGV4dD19QHZhcnt4eHh9QGNvZGV7O0RhdGE9 fUB2YXJ7eXl5fUBjb2RleztCc3M9fUB2YXJ7enp6fQogIEBlbmQgdGFibGUK ICAKISBAaXRlbSBAY29kZXtxfUBjb2Rle1B9QHZhcnttb2RlfUB2YXJ7dGhy ZWFkaWR9IC0tLSB0aHJlYWQgaW5mbyByZXF1ZXN0CiAgQGNpbmRleCB0aHJl YWQgaW5mb3JtYXRpb24sIHJlbW90ZSByZXF1ZXN0CiEgQGNpbmRleCBAY29k ZXtxUH0gcGFja2V0CiAgUmV0dXJucyBpbmZvcm1hdGlvbiBvbiBAdmFye3Ro cmVhZGlkfS4gIFdoZXJlOiBAdmFye21vZGV9IGlzIGEgaGV4CiAgZW5jb2Rl ZCAzMiBiaXQgbW9kZTsgQHZhcnt0aHJlYWRpZH0gaXMgYSBoZXggZW5jb2Rl ZCA2NCBiaXQgdGhyZWFkIElELgogIAohIFJlcGx5OgohIEB0YWJsZSBAc2Ft cAohIEBpdGVtICoKISBAZW5kIHRhYmxlCiEgCiEgU2VlIEBjb2Rle3JlbW90 ZS5jOnJlbW90ZV91bnBhY2tfdGhyZWFkX2luZm9fcmVzcG9uc2UoKX0uCiAg CiEgQGl0ZW0gQGNvZGV7cVBhcnR9OkB2YXJ7b2JqZWN0fTpAY29kZXtyZWFk fTpAdmFye2FubmV4fTpAdmFye29mZnNldH0sQHZhcntsZW5ndGh9IC0tLSBy ZWFkIHNwZWNpYWwgZGF0YQogIEBjaW5kZXggcmVhZCBzcGVjaWFsIG9iamVj dCwgcmVtb3RlIHJlcXVlc3QKISBAY2luZGV4IEBjb2Rle3FQYXJ0fSBwYWNr ZXQKICBSZWFkIHVuaW50ZXJwcmV0ZWQgYnl0ZXMgZnJvbSB0aGUgdGFyZ2V0 J3Mgc3BlY2lhbCBkYXRhIGFyZWEKISBpZGVudGlmaWVkIGJ5IHRoZSBrZXl3 b3JkIEBjb2Rle29iamVjdH0uCiEgUmVxdWVzdCBAdmFye2xlbmd0aH0gYnl0 ZXMgc3RhcnRpbmcgYXQgQHZhcntvZmZzZXR9IGJ5dGVzIGludG8gdGhlIGRh dGEuCiEgVGhlIGNvbnRlbnQgYW5kIGVuY29kaW5nIG9mIEB2YXJ7YW5uZXh9 IGlzIHNwZWNpZmljIHRvIHRoZSBvYmplY3Q7CiEgaXQgY2FuIHN1cHBseSBh ZGRpdGlvbmFsIGRldGFpbHMgYWJvdXQgd2hhdCBkYXRhIHRvIGFjY2Vzcy4K ISAKISBIZXJlIGFyZSB0aGUgc3BlY2lmaWMgcmVxdWVzdHMgb2YgdGhpcyBm b3JtIGRlZmluZWQgc28gZmFyLgohIEFsbCBAc2FtcHtAY29kZXtxUGFydH06 QHZhcntvYmplY3R9OkBjb2Rle3JlYWR9OkBkb3Rze319CiEgcmVxdWVzdHMg dXNlIHRoZSBzYW1lIHJlcGx5IGZvcm1hdHMsIGxpc3RlZCBiZWxvdy4KICAK ISBAdGFibGUgQGFzaXMKISBAaXRlbSBAY29kZXtxUGFydH06QGNvZGV7YXV4 dn06QGNvZGV7cmVhZH06OkB2YXJ7b2Zmc2V0fSxAdmFye2xlbmd0aH0KICBB Y2Nlc3MgdGhlIHRhcmdldCdzIEBkZm57YXV4aWxpYXJ5IHZlY3Rvcn0uICBA eHJlZntPUyBJbmZvcm1hdGlvbiwKICBhdXhpbGlhcnkgdmVjdG9yfSwgYW5k IHNlZSBAcmVme1JlbW90ZSBjb25maWd1cmF0aW9uLAogIHJlYWQtYXV4LXZl Y3Rvci1wYWNrZXR9LiAgTm90ZSBAdmFye2FubmV4fSBtdXN0IGJlIGVtcHR5 LgogIEBlbmQgdGFibGUKICAKICBSZXBseToKISBAdGFibGUgQGFzaXMKISBA aXRlbSBAY29kZXtPS30KICBUaGUgQHZhcntvZmZzZXR9IGluIHRoZSByZXF1 ZXN0IGlzIGF0IHRoZSBlbmQgb2YgdGhlIGRhdGEuCiAgVGhlcmUgaXMgbm8g bW9yZSBkYXRhIHRvIGJlIHJlYWQuCiAgCiEgQGl0ZW0gQHZhcntYWEBkb3Rz e319CiAgSGV4IGVuY29kZWQgZGF0YSBieXRlcyByZWFkLgogIFRoaXMgbWF5 IGJlIGZld2VyIGJ5dGVzIHRoYW4gdGhlIEB2YXJ7bGVuZ3RofSBpbiB0aGUg cmVxdWVzdC4KICAKISBAaXRlbSBAY29kZXtFMDB9CiAgVGhlIHJlcXVlc3Qg d2FzIG1hbGZvcm1lZCwgb3IgQHZhcnthbm5leH0gd2FzIGludmFsaWQuCiAg CiEgQGl0ZW0gQGNvZGV7RX1AdmFye25ufQogIFRoZSBvZmZzZXQgd2FzIGlu dmFsaWQsIG9yIHRoZXJlIHdhcyBhbiBlcnJvciBlbmNvdW50ZXJlZCByZWFk aW5nIHRoZSBkYXRhLgogIEB2YXJ7bm59IGlzIGEgaGV4LWVuY29kZWQgQGNv ZGV7ZXJybm99IHZhbHVlLgogIAohIEBpdGVtIEBjb2RleyIifSAoZW1wdHkp CiAgQW4gZW1wdHkgcmVwbHkgaW5kaWNhdGVzIHRoZSBAdmFye29iamVjdH0g b3IgQHZhcnthbm5leH0gc3RyaW5nIHdhcyBub3QKICByZWNvZ25pemVkIGJ5 IHRoZSBzdHViLgogIEBlbmQgdGFibGUKICAKISBAaXRlbSBAY29kZXtxUGFy dH06QHZhcntvYmplY3R9OkBjb2Rle3dyaXRlfTpAdmFye2FubmV4fTpAdmFy e29mZnNldH06QHZhcntkYXRhQGRvdHN7fX0KICBAY2luZGV4IHdyaXRlIGRh dGEgaW50byBvYmplY3QsIHJlbW90ZSByZXF1ZXN0CiAgV3JpdGUgdW5pbnRl cnByZXRlZCBieXRlcyBpbnRvIHRoZSB0YXJnZXQncyBzcGVjaWFsIGRhdGEg YXJlYQohIGlkZW50aWZpZWQgYnkgdGhlIGtleXdvcmQgQGNvZGV7b2JqZWN0 fSwKISBzdGFydGluZyBhdCBAdmFye29mZnNldH0gYnl0ZXMgaW50byB0aGUg ZGF0YS4KISBAdmFye2RhdGFAZG90c3t9fSBpcyB0aGUgaGV4LWVuY29kZWQg ZGF0YSB0byBiZSB3cml0dGVuLgohIFRoZSBjb250ZW50IGFuZCBlbmNvZGlu ZyBvZiBAdmFye2FubmV4fSBpcyBzcGVjaWZpYyB0byB0aGUgb2JqZWN0Owoh IGl0IGNhbiBzdXBwbHkgYWRkaXRpb25hbCBkZXRhaWxzIGFib3V0IHdoYXQg ZGF0YSB0byBhY2Nlc3MuCiAgCiAgTm8gcmVxdWVzdHMgb2YgdGhpcyBmb3Jt IGFyZSBwcmVzZW50bHkgaW4gdXNlLiAgVGhpcyBzcGVjaWZpY2F0aW9uCiAg c2VydmVzIGFzIGEgcGxhY2Vob2xkZXIgdG8gZG9jdW1lbnQgdGhlIGNvbW1v biBmb3JtYXQgdGhhdCBuZXcKICBzcGVjaWZpYyByZXF1ZXN0IHNwZWNpZmlj YXRpb25zIG91Z2h0IHRvIHVzZS4KICAKICBSZXBseToKISBAdGFibGUgQGFz aXMKICBAaXRlbSBAdmFye25ufQogIEB2YXJ7bm59IChoZXggZW5jb2RlZCkg aXMgdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuLgogIFRoaXMgbWF5IGJl IGZld2VyIGJ5dGVzIHRoYW4gc3VwcGxpZWQgaW4gdGhlIHJlcXVlc3QuCiAg CiEgQGl0ZW0gQGNvZGV7RTAwfQogIFRoZSByZXF1ZXN0IHdhcyBtYWxmb3Jt ZWQsIG9yIEB2YXJ7YW5uZXh9IHdhcyBpbnZhbGlkLgogIAohIEBpdGVtIEBj b2Rle0V9QHZhcntubn0KICBUaGUgb2Zmc2V0IHdhcyBpbnZhbGlkLCBvciB0 aGVyZSB3YXMgYW4gZXJyb3IgZW5jb3VudGVyZWQgd3JpdGluZyB0aGUgZGF0 YS4KICBAdmFye25ufSBpcyBhIGhleC1lbmNvZGVkIEBjb2Rle2Vycm5vfSB2 YWx1ZS4KICAKISBAaXRlbSBAY29kZXsiIn0gKGVtcHR5KQogIEFuIGVtcHR5 IHJlcGx5IGluZGljYXRlcyB0aGUgQHZhcntvYmplY3R9IG9yIEB2YXJ7YW5u ZXh9IHN0cmluZyB3YXMgbm90CiAgcmVjb2duaXplZCBieSB0aGUgc3R1Yiwg b3IgdGhhdCB0aGUgb2JqZWN0IGRvZXMgbm90IHN1cHBvcnQgd3JpdGluZy4K ICBAZW5kIHRhYmxlCiAgCiEgQGl0ZW0gQGNvZGV7cVBhcnR9OkB2YXJ7b2Jq ZWN0fTpAdmFye29wZXJhdGlvbn06QGRvdHN7fQogIFJlcXVlc3RzIG9mIHRo aXMgZm9ybSBtYXkgYmUgYWRkZWQgaW4gdGhlIGZ1dHVyZS4gIFdoZW4gYSBz dHViIGRvZXMKICBub3QgcmVjb2duaXplIHRoZSBAdmFye29iamVjdH0ga2V5 d29yZCwgb3IgaXRzIHN1cHBvcnQgZm9yCiEgQHZhcntvYmplY3R9IGRvZXMg bm90IHJlY29nbml6ZSB0aGUgQHZhcntvcGVyYXRpb259IGtleXdvcmQsCiEg dGhlIHN0dWIgbXVzdCByZXNwb25kIHdpdGggYW4gZW1wdHkgcGFja2V0Lgog IAohIEBpdGVtIEBjb2Rle3F9QGNvZGV7UmNtZCx9QHZhcntjb21tYW5kfSAt LS0gcmVtb3RlIGNvbW1hbmQKICBAY2luZGV4IGV4ZWN1dGUgcmVtb3RlIGNv bW1hbmQsIHJlbW90ZSByZXF1ZXN0CiEgQGNpbmRleCBAY29kZXtxUmNtZH0g cGFja2V0CiAgQHZhcntjb21tYW5kfSAoaGV4IGVuY29kZWQpIGlzIHBhc3Nl ZCB0byB0aGUgbG9jYWwgaW50ZXJwcmV0ZXIgZm9yCiEgZXhlY3V0aW9uLiAg SW52YWxpZCBjb21tYW5kcyBzaG91bGQgYmUgcmVwb3J0ZWQgdXNpbmcgdGhl IG91dHB1dCBzdHJpbmcuCiEgQmVmb3JlIHRoZSBmaW5hbCByZXN1bHQgcGFj a2V0LCB0aGUgdGFyZ2V0IG1heSBhbHNvIHJlc3BvbmQgd2l0aCBhCiEgbnVt YmVyIG9mIGludGVybWVkaWF0ZSBAY29kZXtPfUB2YXJ7b3V0cHV0fSBjb25z b2xlIG91dHB1dCBwYWNrZXRzLgohIEBlbXBoe0ltcGxlbWVudG9ycyBzaG91 bGQgbm90ZSB0aGF0IHByb3ZpZGluZyBhY2Nlc3MgdG8gYSBzdHVicydzCiEg aW50ZXJwcmV0ZXIgbWF5IGhhdmUgc2VjdXJpdHkgaW1wbGljYXRpb25zfS4K ICAKICBSZXBseToKICBAdGFibGUgQHNhbXAKLS0tIDIyODY4LDIyOTcxIC0t LS0KICAKICBSZXBseToKICBAdGFibGUgQHNhbXAKISBAaXRlbSBUZXh0PUB2 YXJ7eHh4fTtEYXRhPUB2YXJ7eXl5fTtCc3M9QHZhcnt6enp9CiAgQGVuZCB0 YWJsZQogIAohIEBpdGVtIHFQIEB2YXJ7bW9kZX0gQHZhcnt0aHJlYWRpZH0K ICBAY2luZGV4IHRocmVhZCBpbmZvcm1hdGlvbiwgcmVtb3RlIHJlcXVlc3QK ISBAY2luZGV4IEBzYW1we3FQfSBwYWNrZXQKICBSZXR1cm5zIGluZm9ybWF0 aW9uIG9uIEB2YXJ7dGhyZWFkaWR9LiAgV2hlcmU6IEB2YXJ7bW9kZX0gaXMg YSBoZXgKICBlbmNvZGVkIDMyIGJpdCBtb2RlOyBAdmFye3RocmVhZGlkfSBp cyBhIGhleCBlbmNvZGVkIDY0IGJpdCB0aHJlYWQgSUQuCiAgCiEgUmVwbHk6 IHNlZSBAY29kZXtyZW1vdGUuYzpyZW1vdGVfdW5wYWNrX3RocmVhZF9pbmZv X3Jlc3BvbnNlKCl9LgogIAohIEBpdGVtIHFQYXJ0OkB2YXJ7b2JqZWN0fTpy ZWFkOkB2YXJ7YW5uZXh9OkB2YXJ7b2Zmc2V0fSxAdmFye2xlbmd0aH0KICBA Y2luZGV4IHJlYWQgc3BlY2lhbCBvYmplY3QsIHJlbW90ZSByZXF1ZXN0CiEg QGNpbmRleCBAc2FtcHtxUGFydH0gcGFja2V0CiAgUmVhZCB1bmludGVycHJl dGVkIGJ5dGVzIGZyb20gdGhlIHRhcmdldCdzIHNwZWNpYWwgZGF0YSBhcmVh CiEgaWRlbnRpZmllZCBieSB0aGUga2V5d29yZCBAdmFye29iamVjdH0uICBS ZXF1ZXN0IEB2YXJ7bGVuZ3RofSBieXRlcwohIHN0YXJ0aW5nIGF0IEB2YXJ7 b2Zmc2V0fSBieXRlcyBpbnRvIHRoZSBkYXRhLiAgVGhlIGNvbnRlbnQgYW5k CiEgZW5jb2Rpbmcgb2YgQHZhcnthbm5leH0gaXMgc3BlY2lmaWMgdG8gdGhl IG9iamVjdDsgaXQgY2FuIHN1cHBseQohIGFkZGl0aW9uYWwgZGV0YWlscyBh Ym91dCB3aGF0IGRhdGEgdG8gYWNjZXNzLgohIAohIEhlcmUgYXJlIHRoZSBz cGVjaWZpYyByZXF1ZXN0cyBvZiB0aGlzIGZvcm0gZGVmaW5lZCBzbyBmYXIu ICBBbGwKISBAc2FtcHtxUGFydDpAdmFye29iamVjdH06cmVhZDpAZG90c3t9 fSByZXF1ZXN0cyB1c2UgdGhlIHNhbWUgcmVwbHkKISBmb3JtYXRzLCBsaXN0 ZWQgYmVsb3cuCiAgCiEgQHRhYmxlIEBzYW1wCiEgQGl0ZW0gcVBhcnQ6YXV4 djpyZWFkOjpAdmFye29mZnNldH0sQHZhcntsZW5ndGh9CiAgQWNjZXNzIHRo ZSB0YXJnZXQncyBAZGZue2F1eGlsaWFyeSB2ZWN0b3J9LiAgQHhyZWZ7T1Mg SW5mb3JtYXRpb24sCiAgYXV4aWxpYXJ5IHZlY3Rvcn0sIGFuZCBzZWUgQHJl ZntSZW1vdGUgY29uZmlndXJhdGlvbiwKICByZWFkLWF1eC12ZWN0b3ItcGFj a2V0fS4gIE5vdGUgQHZhcnthbm5leH0gbXVzdCBiZSBlbXB0eS4KICBAZW5k IHRhYmxlCiAgCiAgUmVwbHk6CiEgQHRhYmxlIEBzYW1wCiEgQGl0ZW0gT0sK ICBUaGUgQHZhcntvZmZzZXR9IGluIHRoZSByZXF1ZXN0IGlzIGF0IHRoZSBl bmQgb2YgdGhlIGRhdGEuCiAgVGhlcmUgaXMgbm8gbW9yZSBkYXRhIHRvIGJl IHJlYWQuCiAgCiEgQGl0ZW0gQHZhcntYWH1AZG90c3t9CiAgSGV4IGVuY29k ZWQgZGF0YSBieXRlcyByZWFkLgogIFRoaXMgbWF5IGJlIGZld2VyIGJ5dGVz IHRoYW4gdGhlIEB2YXJ7bGVuZ3RofSBpbiB0aGUgcmVxdWVzdC4KICAKISBA aXRlbSBFMDAKICBUaGUgcmVxdWVzdCB3YXMgbWFsZm9ybWVkLCBvciBAdmFy e2FubmV4fSB3YXMgaW52YWxpZC4KICAKISBAaXRlbSBFIEB2YXJ7bm59CiAg VGhlIG9mZnNldCB3YXMgaW52YWxpZCwgb3IgdGhlcmUgd2FzIGFuIGVycm9y IGVuY291bnRlcmVkIHJlYWRpbmcgdGhlIGRhdGEuCiAgQHZhcntubn0gaXMg YSBoZXgtZW5jb2RlZCBAY29kZXtlcnJub30gdmFsdWUuCiAgCiEgQGl0ZW0K ICBBbiBlbXB0eSByZXBseSBpbmRpY2F0ZXMgdGhlIEB2YXJ7b2JqZWN0fSBv ciBAdmFye2FubmV4fSBzdHJpbmcgd2FzIG5vdAogIHJlY29nbml6ZWQgYnkg dGhlIHN0dWIuCiAgQGVuZCB0YWJsZQogIAohIEBpdGVtIHFQYXJ0OkB2YXJ7 b2JqZWN0fTp3cml0ZTpAdmFye2FubmV4fTpAdmFye29mZnNldH06QHZhcntk YXRhfUBkb3Rze30KICBAY2luZGV4IHdyaXRlIGRhdGEgaW50byBvYmplY3Qs IHJlbW90ZSByZXF1ZXN0CiAgV3JpdGUgdW5pbnRlcnByZXRlZCBieXRlcyBp bnRvIHRoZSB0YXJnZXQncyBzcGVjaWFsIGRhdGEgYXJlYQohIGlkZW50aWZp ZWQgYnkgdGhlIGtleXdvcmQgQHZhcntvYmplY3R9LCBzdGFydGluZyBhdCBA dmFye29mZnNldH0gYnl0ZXMKISBpbnRvIHRoZSBkYXRhLiAgQHNhbXB7QHZh cntkYXRhfUBkb3Rze319IGlzIHRoZSBoZXgtZW5jb2RlZCBkYXRhIHRvIGJl CiEgd3JpdHRlbi4gIFRoZSBjb250ZW50IGFuZCBlbmNvZGluZyBvZiBAdmFy e2FubmV4fSBpcyBzcGVjaWZpYyB0byB0aGUKISBvYmplY3Q7IGl0IGNhbiBz dXBwbHkgYWRkaXRpb25hbCBkZXRhaWxzIGFib3V0IHdoYXQgZGF0YSB0byBh Y2Nlc3MuCiAgCiAgTm8gcmVxdWVzdHMgb2YgdGhpcyBmb3JtIGFyZSBwcmVz ZW50bHkgaW4gdXNlLiAgVGhpcyBzcGVjaWZpY2F0aW9uCiAgc2VydmVzIGFz IGEgcGxhY2Vob2xkZXIgdG8gZG9jdW1lbnQgdGhlIGNvbW1vbiBmb3JtYXQg dGhhdCBuZXcKICBzcGVjaWZpYyByZXF1ZXN0IHNwZWNpZmljYXRpb25zIG91 Z2h0IHRvIHVzZS4KICAKICBSZXBseToKISBAdGFibGUgQHNhbXAKICBAaXRl bSBAdmFye25ufQogIEB2YXJ7bm59IChoZXggZW5jb2RlZCkgaXMgdGhlIG51 bWJlciBvZiBieXRlcyB3cml0dGVuLgogIFRoaXMgbWF5IGJlIGZld2VyIGJ5 dGVzIHRoYW4gc3VwcGxpZWQgaW4gdGhlIHJlcXVlc3QuCiAgCiEgQGl0ZW0g RTAwCiAgVGhlIHJlcXVlc3Qgd2FzIG1hbGZvcm1lZCwgb3IgQHZhcnthbm5l eH0gd2FzIGludmFsaWQuCiAgCiEgQGl0ZW0gRSBAdmFye25ufQogIFRoZSBv ZmZzZXQgd2FzIGludmFsaWQsIG9yIHRoZXJlIHdhcyBhbiBlcnJvciBlbmNv dW50ZXJlZCB3cml0aW5nIHRoZSBkYXRhLgogIEB2YXJ7bm59IGlzIGEgaGV4 LWVuY29kZWQgQGNvZGV7ZXJybm99IHZhbHVlLgogIAohIEBpdGVtCiAgQW4g ZW1wdHkgcmVwbHkgaW5kaWNhdGVzIHRoZSBAdmFye29iamVjdH0gb3IgQHZh cnthbm5leH0gc3RyaW5nIHdhcyBub3QKICByZWNvZ25pemVkIGJ5IHRoZSBz dHViLCBvciB0aGF0IHRoZSBvYmplY3QgZG9lcyBub3Qgc3VwcG9ydCB3cml0 aW5nLgogIEBlbmQgdGFibGUKICAKISBAaXRlbSBxUGFydDpAdmFye29iamVj dH06QHZhcntvcGVyYXRpb259OkBkb3Rze30KICBSZXF1ZXN0cyBvZiB0aGlz IGZvcm0gbWF5IGJlIGFkZGVkIGluIHRoZSBmdXR1cmUuICBXaGVuIGEgc3R1 YiBkb2VzCiAgbm90IHJlY29nbml6ZSB0aGUgQHZhcntvYmplY3R9IGtleXdv cmQsIG9yIGl0cyBzdXBwb3J0IGZvcgohIEB2YXJ7b2JqZWN0fSBkb2VzIG5v dCByZWNvZ25pemUgdGhlIEB2YXJ7b3BlcmF0aW9ufSBrZXl3b3JkLCB0aGUg c3R1YgohIG11c3QgcmVzcG9uZCB3aXRoIGFuIGVtcHR5IHBhY2tldC4KICAK ISBAaXRlbSBxUmNtZCxAdmFye2NvbW1hbmR9CiAgQGNpbmRleCBleGVjdXRl IHJlbW90ZSBjb21tYW5kLCByZW1vdGUgcmVxdWVzdAohIEBjaW5kZXggQHNh bXB7cVJjbWR9IHBhY2tldAogIEB2YXJ7Y29tbWFuZH0gKGhleCBlbmNvZGVk KSBpcyBwYXNzZWQgdG8gdGhlIGxvY2FsIGludGVycHJldGVyIGZvcgohIGV4 ZWN1dGlvbi4gIEludmFsaWQgY29tbWFuZHMgc2hvdWxkIGJlIHJlcG9ydGVk IHVzaW5nIHRoZSBvdXRwdXQKISBzdHJpbmcuICBCZWZvcmUgdGhlIGZpbmFs IHJlc3VsdCBwYWNrZXQsIHRoZSB0YXJnZXQgbWF5IGFsc28gcmVzcG9uZAoh IHdpdGggYSBudW1iZXIgb2YgaW50ZXJtZWRpYXRlIEBzYW1we09AdmFye291 dHB1dH19IGNvbnNvbGUgb3V0cHV0CiEgcGFja2V0cy4gIEBlbXBoe0ltcGxl bWVudG9ycyBzaG91bGQgbm90ZSB0aGF0IHByb3ZpZGluZyBhY2Nlc3MgdG8g YQohIHN0dWJzJ3MgaW50ZXJwcmV0ZXIgbWF5IGhhdmUgc2VjdXJpdHkgaW1w bGljYXRpb25zfS4KICAKICBSZXBseToKICBAdGFibGUgQHNhbXAKKioqKioq KioqKioqKioqIFJlcGx5OgoqKiogMjI5NjgsMjI5OTcgKioqKgogIEEgY29t bWFuZCByZXNwb25zZSB3aXRoIG5vIG91dHB1dC4KICBAaXRlbSBAdmFye09V VFBVVH0KICBBIGNvbW1hbmQgcmVzcG9uc2Ugd2l0aCB0aGUgaGV4IGVuY29k ZWQgb3V0cHV0IHN0cmluZyBAdmFye09VVFBVVH0uCiEgQGl0ZW0gQGNvZGV7 RX1AdmFye05OfQogIEluZGljYXRlIGEgYmFkbHkgZm9ybWVkIHJlcXVlc3Qu CiEgQGl0ZW0gQHNhbXB7fQohIFdoZW4gQHNhbXB7cX1Ac2FtcHtSY21kfSBp cyBub3QgcmVjb2duaXplZC4KICBAZW5kIHRhYmxlCiAgCiEgQGl0ZW0gQGNv ZGV7cVN5bWJvbDo6fSAtLS0gc3ltYm9sIGxvb2t1cAogIEBjaW5kZXggc3lt Ym9sIGxvb2t1cCwgcmVtb3RlIHJlcXVlc3QKISBAY2luZGV4IEBjb2Rle3FT eW1ib2x9IHBhY2tldAogIE5vdGlmeSB0aGUgdGFyZ2V0IHRoYXQgQHZhbHVl e0dEQk59IGlzIHByZXBhcmVkIHRvIHNlcnZlIHN5bWJvbCBsb29rdXAKICBy ZXF1ZXN0cy4gIEFjY2VwdCByZXF1ZXN0cyBmcm9tIHRoZSB0YXJnZXQgZm9y IHRoZSB2YWx1ZXMgb2Ygc3ltYm9scy4KICAKICBSZXBseToKICBAdGFibGUg QHNhbXAKISBAaXRlbSBAY29kZXtPS30KICBUaGUgdGFyZ2V0IGRvZXMgbm90 IG5lZWQgdG8gbG9vayB1cCBhbnkgKG1vcmUpIHN5bWJvbHMuCiEgQGl0ZW0g QGNvZGV7cVN5bWJvbDp9QHZhcntzeW1fbmFtZX0KICBUaGUgdGFyZ2V0IHJl cXVlc3RzIHRoZSB2YWx1ZSBvZiBzeW1ib2wgQHZhcntzeW1fbmFtZX0gKGhl eCBlbmNvZGVkKS4KICBAdmFsdWV7R0RCTn0gbWF5IHByb3ZpZGUgdGhlIHZh bHVlIGJ5IHVzaW5nIHRoZQohIEBjb2Rle3FTeW1ib2w6fUB2YXJ7c3ltX3Zh bHVlfTpAdmFye3N5bV9uYW1lfSBtZXNzYWdlLCBkZXNjcmliZWQgYmVsb3cu CiAgQGVuZCB0YWJsZQogIAohIEBpdGVtIEBjb2Rle3FTeW1ib2w6fUB2YXJ7 c3ltX3ZhbHVlfTpAdmFye3N5bV9uYW1lfSAtLS0gc3ltYm9sIHZhbHVlCiEg CiAgU2V0IHRoZSB2YWx1ZSBvZiBAdmFye3N5bV9uYW1lfSB0byBAdmFye3N5 bV92YWx1ZX0uCiAgCiAgQHZhcntzeW1fbmFtZX0gKGhleCBlbmNvZGVkKSBp cyB0aGUgbmFtZSBvZiBhIHN5bWJvbCB3aG9zZSB2YWx1ZSB0aGUKLS0tIDIy OTczLDIzMDAyIC0tLS0KICBBIGNvbW1hbmQgcmVzcG9uc2Ugd2l0aCBubyBv dXRwdXQuCiAgQGl0ZW0gQHZhcntPVVRQVVR9CiAgQSBjb21tYW5kIHJlc3Bv bnNlIHdpdGggdGhlIGhleCBlbmNvZGVkIG91dHB1dCBzdHJpbmcgQHZhcntP VVRQVVR9LgohIEBpdGVtIEUgQHZhcntOTn0KICBJbmRpY2F0ZSBhIGJhZGx5 IGZvcm1lZCByZXF1ZXN0LgohIEBpdGVtCiEgQW4gZW1wdHkgcmVwbHkgaW5k aWNhdGVzIHRoYXQgQHNhbXB7cVJjbWR9IGlzIG5vdCByZWNvZ25pemVkLgog IEBlbmQgdGFibGUKICAKISBAaXRlbSBxU3ltYm9sOjoKICBAY2luZGV4IHN5 bWJvbCBsb29rdXAsIHJlbW90ZSByZXF1ZXN0CiEgQGNpbmRleCBAc2FtcHtx U3ltYm9sfSBwYWNrZXQKICBOb3RpZnkgdGhlIHRhcmdldCB0aGF0IEB2YWx1 ZXtHREJOfSBpcyBwcmVwYXJlZCB0byBzZXJ2ZSBzeW1ib2wgbG9va3VwCiAg cmVxdWVzdHMuICBBY2NlcHQgcmVxdWVzdHMgZnJvbSB0aGUgdGFyZ2V0IGZv ciB0aGUgdmFsdWVzIG9mIHN5bWJvbHMuCiAgCiAgUmVwbHk6CiAgQHRhYmxl IEBzYW1wCiEgQGl0ZW0gT0sKICBUaGUgdGFyZ2V0IGRvZXMgbm90IG5lZWQg dG8gbG9vayB1cCBhbnkgKG1vcmUpIHN5bWJvbHMuCiEgQGl0ZW0gcVN5bWJv bDpAdmFye3N5bV9uYW1lfQogIFRoZSB0YXJnZXQgcmVxdWVzdHMgdGhlIHZh bHVlIG9mIHN5bWJvbCBAdmFye3N5bV9uYW1lfSAoaGV4IGVuY29kZWQpLgog IEB2YWx1ZXtHREJOfSBtYXkgcHJvdmlkZSB0aGUgdmFsdWUgYnkgdXNpbmcg dGhlCiEgQHNhbXB7cVN5bWJvbDpAdmFye3N5bV92YWx1ZX06QHZhcntzeW1f bmFtZX19IG1lc3NhZ2UsIGRlc2NyaWJlZAohIGJlbG93LgogIEBlbmQgdGFi bGUKICAKISBAaXRlbSBxU3ltYm9sOkB2YXJ7c3ltX3ZhbHVlfTpAdmFye3N5 bV9uYW1lfQogIFNldCB0aGUgdmFsdWUgb2YgQHZhcntzeW1fbmFtZX0gdG8g QHZhcntzeW1fdmFsdWV9LgogIAogIEB2YXJ7c3ltX25hbWV9IChoZXggZW5j b2RlZCkgaXMgdGhlIG5hbWUgb2YgYSBzeW1ib2wgd2hvc2UgdmFsdWUgdGhl CioqKioqKioqKioqKioqKiB3aWxsIGJlIGVtcHR5LgoqKiogMjMwMDMsMjMw MzMgKioqKgogIAogIFJlcGx5OgogIEB0YWJsZSBAc2FtcAohIEBpdGVtIEBj b2Rle09LfQogIFRoZSB0YXJnZXQgZG9lcyBub3QgbmVlZCB0byBsb29rIHVw IGFueSAobW9yZSkgc3ltYm9scy4KISBAaXRlbSBAY29kZXtxU3ltYm9sOn1A dmFye3N5bV9uYW1lfQogIFRoZSB0YXJnZXQgcmVxdWVzdHMgdGhlIHZhbHVl IG9mIGEgbmV3IHN5bWJvbCBAdmFye3N5bV9uYW1lfSAoaGV4CiAgZW5jb2Rl ZCkuICBAdmFsdWV7R0RCTn0gd2lsbCBjb250aW51ZSB0byBzdXBwbHkgdGhl IHZhbHVlcyBvZiBzeW1ib2xzCiAgKGlmIGF2YWlsYWJsZSksIHVudGlsIHRo ZSB0YXJnZXQgY2Vhc2VzIHRvIHJlcXVlc3QgdGhlbS4KICBAZW5kIHRhYmxl CiAgCiEgQGl0ZW0gQGNvZGV7cX1AY29kZXtUaHJlYWRFeHRyYUluZm99QGNv ZGV7LH1AdmFye2lkfSAtLS0gZXh0cmEgdGhyZWFkIGluZm8KICBAY2luZGV4 IHRocmVhZCBhdHRyaWJ1dGVzIGluZm8sIHJlbW90ZSByZXF1ZXN0CiEgQGNp bmRleCBAY29kZXtxVGhyZWFkRXh0cmFJbmZvfSBwYWNrZXQKISBXaGVyZSBA dmFye2lkfSBpcyBhIHRocmVhZC1pZCBpbiBiaWctZW5kaWFuIGhleC4gIE9i dGFpbiBhIHByaW50YWJsZQohIHN0cmluZyBkZXNjcmlwdGlvbiBvZiBhIHRo cmVhZCdzIGF0dHJpYnV0ZXMgZnJvbSB0aGUgdGFyZ2V0IE9TLiAgVGhpcwoh IHN0cmluZyBtYXkgY29udGFpbiBhbnl0aGluZyB0aGF0IHRoZSB0YXJnZXQg T1MgdGhpbmtzIGlzIGludGVyZXN0aW5nIGZvcgohIEB2YWx1ZXtHREJOfSB0 byB0ZWxsIHRoZSB1c2VyIGFib3V0IHRoZSB0aHJlYWQuICBUaGUgc3RyaW5n IGlzIGRpc3BsYXllZAohIGluIEB2YWx1ZXtHREJOfSdzIEBzYW1we2luZm8g dGhyZWFkc30gZGlzcGxheS4gIFNvbWUgZXhhbXBsZXMgb2YKISBwb3NzaWJs ZSB0aHJlYWQgZXh0cmEgaW5mbyBzdHJpbmdzIGFyZSBgYFJ1bm5hYmxlJycs IG9yIGBgQmxvY2tlZCBvbgohIE11dGV4JycuCiAgCiAgUmVwbHk6CiAgQHRh YmxlIEBzYW1wCiEgQGl0ZW0gQHZhcntYWEBkb3Rze319CiEgV2hlcmUgQHZh cntYWEBkb3Rze319IGlzIGEgaGV4IGVuY29kaW5nIG9mIEBzY3thc2NpaX0g ZGF0YSwgY29tcHJpc2luZwohIHRoZSBwcmludGFibGUgc3RyaW5nIGNvbnRh aW5pbmcgdGhlIGV4dHJhIGluZm9ybWF0aW9uIGFib3V0IHRoZSB0aHJlYWQn cwohIGF0dHJpYnV0ZXMuCiAgQGVuZCB0YWJsZQogIAogIEBlbmQgdGFibGUK LS0tIDIzMDA4LDIzMDM4IC0tLS0KICAKICBSZXBseToKICBAdGFibGUgQHNh bXAKISBAaXRlbSBPSwogIFRoZSB0YXJnZXQgZG9lcyBub3QgbmVlZCB0byBs b29rIHVwIGFueSAobW9yZSkgc3ltYm9scy4KISBAaXRlbSBxU3ltYm9sOkB2 YXJ7c3ltX25hbWV9CiAgVGhlIHRhcmdldCByZXF1ZXN0cyB0aGUgdmFsdWUg b2YgYSBuZXcgc3ltYm9sIEB2YXJ7c3ltX25hbWV9IChoZXgKICBlbmNvZGVk KS4gIEB2YWx1ZXtHREJOfSB3aWxsIGNvbnRpbnVlIHRvIHN1cHBseSB0aGUg dmFsdWVzIG9mIHN5bWJvbHMKICAoaWYgYXZhaWxhYmxlKSwgdW50aWwgdGhl IHRhcmdldCBjZWFzZXMgdG8gcmVxdWVzdCB0aGVtLgogIEBlbmQgdGFibGUK ICAKISBAaXRlbSBxVGhyZWFkRXh0cmFJbmZvLEB2YXJ7aWR9CiAgQGNpbmRl eCB0aHJlYWQgYXR0cmlidXRlcyBpbmZvLCByZW1vdGUgcmVxdWVzdAohIEBj aW5kZXggQHNhbXB7cVRocmVhZEV4dHJhSW5mb30gcGFja2V0CiEgT2J0YWlu IGEgcHJpbnRhYmxlIHN0cmluZyBkZXNjcmlwdGlvbiBvZiBhIHRocmVhZCdz IGF0dHJpYnV0ZXMgZnJvbQohIHRoZSB0YXJnZXQgT1MuICBAdmFye2lkfSBp cyBhIHRocmVhZC1pZCBpbiBiaWctZW5kaWFuIGhleC4gIFRoaXMKISBzdHJp bmcgbWF5IGNvbnRhaW4gYW55dGhpbmcgdGhhdCB0aGUgdGFyZ2V0IE9TIHRo aW5rcyBpcyBpbnRlcmVzdGluZwohIGZvciBAdmFsdWV7R0RCTn0gdG8gdGVs bCB0aGUgdXNlciBhYm91dCB0aGUgdGhyZWFkLiAgVGhlIHN0cmluZyBpcwoh IGRpc3BsYXllZCBpbiBAdmFsdWV7R0RCTn0ncyBAY29kZXtpbmZvIHRocmVh ZHN9IGRpc3BsYXkuICBTb21lCiEgZXhhbXBsZXMgb2YgcG9zc2libGUgdGhy ZWFkIGV4dHJhIGluZm8gc3RyaW5ncyBhcmUgQHNhbXB7UnVubmFibGV9LCBv cgohIEBzYW1we0Jsb2NrZWQgb24gTXV0ZXh9LgogIAogIFJlcGx5OgogIEB0 YWJsZSBAc2FtcAohIEBpdGVtIEB2YXJ7WFh9QGRvdHN7fQohIFdoZXJlIEBz YW1we0B2YXJ7WFh9QGRvdHN7fX0gaXMgYSBoZXggZW5jb2Rpbmcgb2YgQHNj e2FzY2lpfSBkYXRhLAohIGNvbXByaXNpbmcgdGhlIHByaW50YWJsZSBzdHJp bmcgY29udGFpbmluZyB0aGUgZXh0cmEgaW5mb3JtYXRpb24gYWJvdXQKISB0 aGUgdGhyZWFkJ3MgYXR0cmlidXRlcy4KICBAZW5kIHRhYmxlCiAgCiAgQGVu ZCB0YWJsZQoqKioqKioqKioqKioqKiogYXR0cmlidXRlcy4KKioqIDIzMDM1 LDIzMDQxICoqKioKICBAbm9kZSBSZWdpc3RlciBQYWNrZXQgRm9ybWF0CiAg QHNlY3Rpb24gUmVnaXN0ZXIgUGFja2V0IEZvcm1hdAogIAohIFRoZSBmb2xs b3dpbmcgQHNhbXB7Z30vQHNhbXB7R30gcGFja2V0cyBoYXZlIHByZXZpb3Vz bHkgYmVlbiBkZWZpbmVkLgogIEluIHRoZSBiZWxvdywgc29tZSB0aGlydHkt dHdvIGJpdCByZWdpc3RlcnMgYXJlIHRyYW5zZmVycmVkIGFzCiAgc2l4dHkt Zm91ciBiaXRzLiAgVGhvc2UgcmVnaXN0ZXJzIHNob3VsZCBiZSB6ZXJvL3Np Z24gZXh0ZW5kZWQgKHdoaWNoPykKICB0byBmaWxsIHRoZSBzcGFjZSBhbGxv Y2F0ZWQuICBSZWdpc3RlciBieXRlcyBhcmUgdHJhbnNmZXJlZCBpbiB0YXJn ZXQKLS0tIDIzMDQwLDIzMDQ2IC0tLS0KICBAbm9kZSBSZWdpc3RlciBQYWNr ZXQgRm9ybWF0CiAgQHNlY3Rpb24gUmVnaXN0ZXIgUGFja2V0IEZvcm1hdAog IAohIFRoZSBmb2xsb3dpbmcgQGNvZGV7Z30vQGNvZGV7R30gcGFja2V0cyBo YXZlIHByZXZpb3VzbHkgYmVlbiBkZWZpbmVkLgogIEluIHRoZSBiZWxvdywg c29tZSB0aGlydHktdHdvIGJpdCByZWdpc3RlcnMgYXJlIHRyYW5zZmVycmVk IGFzCiAgc2l4dHktZm91ciBiaXRzLiAgVGhvc2UgcmVnaXN0ZXJzIHNob3Vs ZCBiZSB6ZXJvL3NpZ24gZXh0ZW5kZWQgKHdoaWNoPykKICB0byBmaWxsIHRo ZSBzcGFjZSBhbGxvY2F0ZWQuICBSZWdpc3RlciBieXRlcyBhcmUgdHJhbnNm ZXJlZCBpbiB0YXJnZXQK ------=_Part_14589_30871017.1132137322327--