From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 25832 invoked from network); 12 Oct 2021 12:09:50 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 12 Oct 2021 12:09:50 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20210803; t=1634040590; b=eLG5RcT35ijKhDKA996BVCdnD6wjSYzaQM3YA+S9B1TLPKDqToOXQrQyadqu06XeZxhCHPZgv0 eqEbPw56B058Gds/Zg4N+e2u0TBLBUnpss92jqDPQ4w+WFrRoYoWq4iqT3vHwGWHGst6iiyxqy EXOBqnt3IY+VUAE0JQObWwmI4jelBObScNuEAuoBGaa3ehCho/54h3k4SOwP+uigfDwcEv7kNf AIxtdDrnlVfZsjeuUlC2JQ8i6WLlUqTgqOOFz8lzr00ery7yVLXsjIv/RTz2resLHVpQOr16QZ J6fIKUU96EWQ1a0P/NKpEoh8wxjPE8u7PrN4gO6C417A2g==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-ua1-f49.google.com) smtp.remote-ip=209.85.222.49; dkim=pass header.d=gmail.com header.s=20210112 header.a=rsa-sha256; dmarc=pass header.from=gmail.com; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20210803; t=1634040590; bh=e6pGOY26UcTmO8pErkYQN939kmtVrQ23EJ8fFcqIAHQ=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Content-Type:Cc:To:Subject:Message-ID:Date:From:In-Reply-To: References:MIME-Version:DKIM-Signature:DKIM-Signature; b=Gu0Q3ZwySbOXbCNES+rLH9NVYwv88lKqvUlCOpUqIAmEb913YaVkA4Crc0fBxn+uLpBRVgaU64 1QrJbgz3nCL997tndO9knxgINV9Nmwe8wUTmJznVAI6WJ61t4D6L2wyhM7wGe5B2NydPIhVyCn mjpcb+mPW14qVD523PMWMjLhM2kspSTAbtdc4djKbgselV98pcCNdNIDXtWQ6WSKeKxagO7el4 CiZa8tG2Vr66Vx8qWEVnb3yWSYexoIx/WPa6mg8ucbOA9Kw1NkSf3bgsyv5a8CV65V7ey6LRfl TWOWjfBMszWXOouqWVWxmPYj6bJ7GY6OLWNYDstN9wTAuQ==; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=zsh.org; s=rsa-20210803; h=List-Archive:List-Owner:List-Post:List-Unsubscribe: List-Subscribe:List-Help:List-Id:Sender:Content-Type:Cc:To:Subject:Message-ID :Date:From:In-Reply-To:References:MIME-Version:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID; bh=X0+0rEHOJVP5nNYbTo8CvuRZc8r8N4N4/zPNJ/TjHA4=; b=ern6F2y8aZh97RbT7KkVA2ENbb V1BPtaSPAGQRtOK0wXEV2e9HcK/5OE1wR4NbL30XMTJjMaYLN5MmlNJOUsuUXTXyu62PZRCPNtDZb BlhqxlO/owuOHWjn+z1BD9KSCoqgrWJ75pv2XOiWUgArAnXKRq+xspb8DhUTEnVfVSwvwm9fJBcqi rg2cca1bcg89SrRe7muoVDR6FNlhQhTkWIXBcwPcU4brtIvpzNP8Y6gvvAthlpOFn1mbbO1hz3m1m O9tjG4AW/Q4RF3c3xWjwxAmuY7vjypXgysfiab1mdP0ANlzWz7FnSxAvBAuPYcCmrDwDTuiwtZ56v I7tmxNHQ==; Received: from authenticated user by zero.zsh.org with local id 1maGbL-000CEd-IZ; Tue, 12 Oct 2021 12:09:47 +0000 Authentication-Results: zsh.org; iprev=pass (mail-ua1-f49.google.com) smtp.remote-ip=209.85.222.49; dkim=pass header.d=gmail.com header.s=20210112 header.a=rsa-sha256; dmarc=pass header.from=gmail.com; arc=none Received: from mail-ua1-f49.google.com ([209.85.222.49]:42631) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1maGay-000Bw9-Jv; Tue, 12 Oct 2021 12:09:25 +0000 Received: by mail-ua1-f49.google.com with SMTP id j8so9677650uak.9; Tue, 12 Oct 2021 05:09:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=X0+0rEHOJVP5nNYbTo8CvuRZc8r8N4N4/zPNJ/TjHA4=; b=bitsbHshP2vABtrnzcn9dPzk9iGW9Owvr/uk3il3cX2fKgIE3hrhJsPLB/vBZGTWst H5i8ZyM8aYH5BdLl9NbBg2hFNBk183r69C0yA+IvU6lX5t99ixBkKlGg8jkzzAlyy1QV WozMxx7evMSsJgFyUDYR6w96QHn+NF9N6+hwdRTetit2QDpFJVhw6usfxXBv3IrXpKC0 CypcbAyihOKRWUUsNqBqjmTu1JllA9pnVCFb+g70aIjN3L4FhgZ7NBg2IpQvhNvAmiVd 3x6qCp7cBNDdY4zZoy0hOpcIyGzFSNAcUmDI2HFpta356AEqQFEzCutGcARpIA5bIHlh qEIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=X0+0rEHOJVP5nNYbTo8CvuRZc8r8N4N4/zPNJ/TjHA4=; b=3NHN59Kn4su5bjHi6ugtm9OKSPr2hJUJY+V6XO+1PT9gtuhceCQ7OilmEAwI0R4qeg JZgIYKLQLaIfsAkDe4yldltYqWHgwGAjEcXXGS2iECsSWT3h2vCoG57KV/C3HWlDodh9 BfsxM4PLfZaocdKcRrjMOPvjlonEGXrh5ntkOUx2SngFOWgxN/r8jao/S5xEFRrX5OIR yYLPKq4NrIC834D+gTIa/4h9IncVTg/GLKbnk0tXq4HFMPB1z8PAg0GxQXiAMLLZRwMk lKPNH0gBj9dt8SOrYq32iXSBD9mlDUy7jC908AqU+9loeyYKdMy2p5wcs7AbKCs06qIy KoCA== X-Gm-Message-State: AOAM533VdTRiojjYcaG8m4XWz30l2l38+Tv+rB8y4GT1tRLnVrESmPOW +kPMrfcD4sBIvCcOmo0ovIqVTjGCrNpZvBqj2okdUKMf X-Google-Smtp-Source: ABdhPJwSMZ1Nf/XCfxO6/l7f8YCuhlLx9CW4ECmyV0RVwAfW3B44FmyIl7knzy8spXFK+P2M68EK6Euopt7VqgheNIc= X-Received: by 2002:ab0:76c9:: with SMTP id w9mr10462346uaq.125.1634040562916; Tue, 12 Oct 2021 05:09:22 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Marlon Richert Date: Tue, 12 Oct 2021 15:08:46 +0300 Message-ID: Subject: Re: [RFC] Add xfail tests for || form of completion matchers To: Zsh hackers list Cc: Oliver Kiddle , Bart Schaefer Content-Type: multipart/mixed; boundary="0000000000004d5c2105ce26b7c1" X-Seq: 49473 Archived-At: X-Loop: zsh-workers@zsh.org Errors-To: zsh-workers-owner@zsh.org Precedence: list Precedence: bulk Sender: zsh-workers-request@zsh.org X-no-archive: yes List-Id: List-Help: List-Subscribe: List-Unsubscribe: List-Post: List-Owner: List-Archive: --0000000000004d5c2105ce26b7c1 Content-Type: text/plain; charset="UTF-8" On Mon, Oct 11, 2021 at 5:34 PM Marlon Richert wrote: > > The tests show how :||= matchers should behave in order to provide > completion features that cannot be implemented with :|= matchers. > > This is a follow-up to users/27228. I've now added an accompanying documentation update to the patch. --0000000000004d5c2105ce26b7c1 Content-Type: text/plain; charset="UTF-8"; name="0001-Add-xfail-tests-for-form-of-completion-matchers.txt" Content-Disposition: attachment; filename="0001-Add-xfail-tests-for-form-of-completion-matchers.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kuo1ih3w0 RnJvbSAzZWMyZmNlY2VkMWYzMjdlYjJhYzc0ODQ3NzJiZDFkMzc1NmJmOGQyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJsb24gUmljaGVydCA8bWFybG9uLnJpY2hlcnRAZ21haWwu Y29tPgpEYXRlOiBUdWUsIDEyIE9jdCAyMDIxIDE1OjAyOjMxICswMzAwClN1YmplY3Q6IFtQQVRD SF0gQWRkIHhmYWlsIHRlc3RzIGZvciB8fCBmb3JtIG9mIGNvbXBsZXRpb24gbWF0Y2hlcnMKClRo ZSB0ZXN0cyBzaG93IGhvdyA6fHw9IG1hdGNoZXJzIHNob3VsZCBiZWhhdmUgaW4gb3JkZXIgdG8g cHJvdmlkZQpjb21wbGV0aW9uIGZlYXR1cmVzIHRoYXQgY2Fubm90IGJlIGltcGxlbWVudGVkIHdp dGggOnw9IG1hdGNoZXJzLgotLS0KIERvYy9ac2gvY29tcHdpZC55byAgICAgfCA0NDYgKysrKysr KysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIFRlc3QvWTAyY29tcG1hdGNoLnp0 c3QgfCAxMDggKysrKysrKysrLQogMiBmaWxlcyBjaGFuZ2VkLCAyOTMgaW5zZXJ0aW9ucygrKSwg MjYxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL0RvYy9ac2gvY29tcHdpZC55byBiL0RvYy9a c2gvY29tcHdpZC55bwppbmRleCAzZTg2ZDNiNDIuLjVkZDIxMjdkZiAxMDA2NDQKLS0tIGEvRG9j L1pzaC9jb21wd2lkLnlvCisrKyBiL0RvYy9ac2gvY29tcHdpZC55bwpAQCAtODk2LDcyICs4OTYs MjEwIEBAIGVuZGl0ZW0oKQogdGV4aW5vZGUoQ29tcGxldGlvbiBNYXRjaGluZyBDb250cm9sKShD b21wbGV0aW9uIFdpZGdldCBFeGFtcGxlKShDb21wbGV0aW9uIENvbmRpdGlvbiBDb2RlcykoQ29t cGxldGlvbiBXaWRnZXRzKQogc2VjdChDb21wbGV0aW9uIE1hdGNoaW5nIENvbnRyb2wpCiAKLUl0 IGlzIHBvc3NpYmxlIGJ5IHVzZSBvZiB0aGUKLXR0KC1NKSBvcHRpb24gb2YgdGhlIHR0KGNvbXBh ZGQpIGJ1aWx0aW4gY29tbWFuZCB0byBzcGVjaWZ5IGhvdyB0aGUKLWNoYXJhY3RlcnMgaW4gdGhl IHN0cmluZyB0byBiZSBjb21wbGV0ZWQgKHJlZmVycmVkIHRvIGhlcmUgYXMgdGhlCi1jb21tYW5k IGxpbmUpIG1hcCBvbnRvIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBsaXN0IG9mIG1hdGNoZXMgcHJv ZHVjZWQgYnkKLXRoZSBjb21wbGV0aW9uIGNvZGUgKHJlZmVycmVkIHRvIGhlcmUgYXMgdGhlIHRy aWFsIGNvbXBsZXRpb25zKS4gTm90ZQotdGhhdCB0aGlzIGlzIG5vdCB1c2VkIGlmIHRoZSBjb21t YW5kIGxpbmUgY29udGFpbnMgYSBnbG9iIHBhdHRlcm4gYW5kCi10aGUgdHQoR0xPQl9DT01QTEVU RSkgb3B0aW9uIGlzIHNldCBvciB0aGUgdHQocGF0dGVybl9tYXRjaCkgb2YgdGhlCi10dChjb21w c3RhdGUpIHNwZWNpYWwgYXNzb2NpYXRpb24gaXMgc2V0IHRvIGEgbm9uLWVtcHR5IHN0cmluZy4K LQotVGhlIHZhcihtYXRjaC1zcGVjKSBnaXZlbiBhcyB0aGUgYXJndW1lbnQgdG8gdGhlIHR0KC1N KSBvcHRpb24gKHNlZQorQnkgZGVmYXVsdCwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIHRvIGJl IGNvbXBsZXRlZCAocmVmZXJyZWQgdG8gaGVyZSBhcyB0aGUKK2NvbW1hbmQgbGluZSkgbWFwIG9u bHkgb250byBpZGVudGljYWwgY2hhcmFjdGVycyBpbiB0aGUgbGlzdCBvZiBtYXRjaGVzCitwcm9k dWNlZCBieSB0aGUgY29tcGxldGlvbiBjb2RlIChyZWZlcnJlZCB0byBoZXJlIGFzIHRoZSB0cmlh bCBjb21wbGV0aW9ucykgYW5kCittaXNzaW5nIGNoYXJhY3RlcnMgYXJlIGluc2VydGVkIG9ubHkg YXQgdGhlIGN1cnNvciBwb3NpdGlvbiwgaWYgdGhlIHNoZWxsCitvcHRpb24gdHQoQ09NUExFVEVf SU5fV09SRCkgaXMgc2V0LCBvciBhdCB0aGUgZW5kIG9mIHRoZSBjb21tYW5kIGxpbmUsCitvdGhl cndpc2UuICBIb3dldmVyLCBpdCBpcyBwb3NzaWJsZSB0byBtb2RpZnkgdGhpcyBiZWhhdmlvciBi eSB1c2Ugb2YgdGhlCit0dCgtTSkgb3B0aW9uIG9mIHRoZSB0dChjb21wYWRkKSBidWlsdGluIGNv bW1hbmQuICBOb3RlIHRoYXQgdGhpcyBpcyBub3QgdXNlZAoraWYgdGhlIGNvbW1hbmQgbGluZSBj b250YWlucyBhIGdsb2IgcGF0dGVybiBhbmQgdGhlIHNoZWxsCitvcHRpb250dChHTE9CX0NPTVBM RVRFKSBpcyBzZXQgb3IgdGhlIHR0KHBhdHRlcm5fbWF0Y2gpIG9mIHRoZSB0dChjb21wc3RhdGUp CitzcGVjaWFsIGFzc29jaWF0aW9uIGlzIHNldCB0byBhIG5vbi1lbXB0eSBzdHJpbmcuCisKK1Ro ZSB0dCgtTSkgb3B0aW9uIChzZWUKIGlmem1hbihgQ29tcGxldGlvbiBCdWlsdGluIENvbW1hbmRz JyBhYm92ZSlcCi1pZm56bWFuKG5vZGVyZWYoQ29tcGxldGlvbiBCdWlsdGluIENvbW1hbmRzKSlc Ci0pIGNvbnNpc3RzIG9mIG9uZSBvciBtb3JlIG1hdGNoaW5nIGRlc2NyaXB0aW9ucyBzZXBhcmF0 ZWQgYnkKLXdoaXRlc3BhY2UuICBFYWNoIGRlc2NyaXB0aW9uIGNvbnNpc3RzIG9mIGEgbGV0dGVy IGZvbGxvd2VkIGJ5IGEgY29sb24KLWFuZCB0aGVuIHRoZSBwYXR0ZXJucyBkZXNjcmliaW5nIHdo aWNoIGNoYXJhY3RlciBzZXF1ZW5jZXMgb24gdGhlIGxpbmUgbWF0Y2gKLXdoaWNoIGNoYXJhY3Rl ciBzZXF1ZW5jZXMgaW4gdGhlIHRyaWFsIGNvbXBsZXRpb24uICBBbnkgc2VxdWVuY2Ugb2YKLWNo YXJhY3RlcnMgbm90IGhhbmRsZWQgaW4gdGhpcyBmYXNoaW9uIG11c3QgbWF0Y2ggZXhhY3RseSwg YXMgdXN1YWwuCi0KLVRoZSBmb3JtcyBvZiB2YXIobWF0Y2gtc3BlYykgdW5kZXJzdG9vZCBhcmUg YXMgZm9sbG93cy4gSW4gZWFjaCBjYXNlLCB0aGUKLWZvcm0gd2l0aCBhbiB1cHBlciBjYXNlIGlu aXRpYWwgY2hhcmFjdGVyIHJldGFpbnMgdGhlIHN0cmluZyBhbHJlYWR5Ci10eXBlZCBvbiB0aGUg Y29tbWFuZCBsaW5lIGFzIHRoZSBmaW5hbCByZXN1bHQgb2YgY29tcGxldGlvbiwgd2hpbGUgd2l0 aAotYSBsb3dlciBjYXNlIGluaXRpYWwgY2hhcmFjdGVyIHRoZSBzdHJpbmcgb24gdGhlIGNvbW1h bmQgbGluZSBpcyBjaGFuZ2VkCi1pbnRvIHRoZSBjb3JyZXNwb25kaW5nIHBhcnQgb2YgdGhlIHRy aWFsIGNvbXBsZXRpb24uCitpZm56bWFuKG5vZGVyZWYoQ29tcGxldGlvbiBCdWlsdGluCitDb21t YW5kcykpXAorKSByZXF1aXJlcyBhIHZhcihtYXRjaC1zcGVjKSBhcyBpdCBhcmd1bWVudCwgY29u c2lzdGluZyBvZiBvbmUgb3IgbW9yZSBtYXRjaGluZworZGVzY3JpcHRpb25zIHNlcGFyYXRlZCBi eSB3aGl0ZXNwYWNlLiAgRWFjaCBkZXNjcmlwdGlvbiBjb25zaXN0cyBvZiBhIGxldHRlciwKK2Zv bGxvd2VkIGJ5IGEgY29sb24sIGFuZCB0aGVuIHBhdHRlcm5zIGRlc2NyaWJpbmcgd2hpY2ggc3Vi c3RyaW5ncyBvbiB0aGUKK2NvbW1hbmQgbGluZSBtYXAgb250byB3aGljaCBzdWJzdHJpbmdzIGlu IHRoZSB0cmlhbCBjb21wbGV0aW9uLiAgRGVzY3JpcHRpb25zCithcmUgZXZhbHVhdGVkIGZyb20g bGVmdCB0byByaWdodCBhbmQgYXJlIGN1bXVsYXRpdmUuICBBbiBlYXJsaWVyIG1hcHBpbmcgY2Fu Cit0aHVzIHBvdGVudGlhbGx5IGNoYW5nZSB0aGUgb3V0Y29tZSBvZiBhIGxhdGVyIG1hcHBpbmcu ICBGaW5hbGx5LCBhbnkgdW5tYXBwZWQKK3N1YnN0cmluZ3Mgd2lsbCBiZSBtYXBwZWQgdXNpbmcg dGhlIGRlZmF1bHQgbWFwcGluZyBvZiBpZGVudGljYWwgc3Vic3RyaW5ncy4KKworV2hlbiB1c2lu ZyB0aGUgY29tcGxldGlvbiBzeXN0ZW0gKHNlZQoraWZ6bWFuKHptYW5yZWYoenNoY29tcHN5cykp XAoraWZuem1hbihub2RlcmVmKENvbXBsZXRpb24gU3lzdGVtKSlcCispLCB1c2VycyBjYW4gZGVm aW5lIG1hdGNoIHNwZWNpZmljYXRpb25zIHRoYXQgYXJlIHRvIGJlIHVzZWQgZm9yIHNwZWNpZmlj Citjb250ZXh0cyBieSB1c2luZyB0aGUgdHQobWF0Y2hlcikgYW5kIHR0KG1hdGNoZXItbGlzdCkg c3R5bGVzLiAgVGhlIHZhbHVlcyBmb3IKK3RoZSBsYXR0ZXIgd2lsbCBiZSB1c2VkIGV2ZXJ5d2hl cmUuCisKK0VhY2ggcGF0dGVybiBpbiBhIHZhcihtYXRjaC1zcGVjKSBpcyBlaXRoZXIgYW4gZW1w dHkgc3RyaW5nIG9yIGNvbnNpc3RzIG9mIGEKK3NlcXVlbmNlIG9mIGxpdGVyYWwgY2hhcmFjdGVy cyAod2hpY2ggbWF5IGJlIHF1b3RlZCB3aXRoIGEgYmFja3NsYXNoKSwgcXVlc3Rpb24KK21hcmtz LCBjaGFyYWN0ZXIgY2xhc3NlcywgYW5kIGNvcnJlc3BvbmRlbmNlIGNsYXNzZXMgKHNlZSBuZXh0 IHBhcmFncmFwaCkuCitPcmRpbmFyeSBzaGVsbCBwYXR0ZXJucyBhcmUgbm90IHVzZWQuICBMaXRl cmFsIGNoYXJhY3RlcnMgbWF0Y2ggb25seQordGhlbXNlbHZlcywgcXVlc3Rpb24gbWFya3MgbWF0 Y2ggYW55IGNoYXJhY3RlciwgYW5kIGNoYXJhY3RlciBjbGFzc2VzIGFyZQorZm9ybWVkIGFzIGZv ciBnbG9iYmluZyBhbmQgbWF0Y2ggYW55IGNoYXJhY3RlciBpbiB0aGUgZ2l2ZW4gc2V0LgorCitD b3JyZXNwb25kZW5jZSBjbGFzc2VzIGFyZSBkZWZpbmVkIGxpa2UgY2hhcmFjdGVyIGNsYXNzZXMs IGJ1dCB3aXRoIHR3bworZGlmZmVyZW5jZXM6IFRoZXkgYXJlIGRlbGltaXRlZCBieSBhIHBhaXIg b2YgYnJhY2VzLCBhbmQgbmVnYXRlZCBjbGFzc2VzIGFyZQorbm90IGFsbG93ZWQsIHNvIHRoZSBj aGFyYWN0ZXJzIHR0KCEpIGFuZCB0dCheKSBoYXZlIG5vIHNwZWNpYWwgbWVhbmluZyBkaXJlY3Rs eQorYWZ0ZXIgdGhlIG9wZW5pbmcgYnJhY2UuICBUaGV5IGluZGljYXRlIHRoYXQgYSByYW5nZSBv ZiBjaGFyYWN0ZXJzIG9uIHRoZSBsaW5lCittYXRjaCBhIHJhbmdlIG9mIGNoYXJhY3RlcnMgaW4g dGhlIHRyaWFsIGNvbXBsZXRpb24sIGJ1dCAodW5saWtlIG9yZGluYXJ5CitjaGFyYWN0ZXIgY2xh c3NlcykgcGFpcmVkIGFjY29yZGluZyB0byB0aGUgY29ycmVzcG9uZGluZyBwb3NpdGlvbiBpbiB0 aGUKK3NlcXVlbmNlLiAgTW9yZSB0aGFuIG9uZSBwYWlyIG9mIGNsYXNzZXMgY2FuIG9jY3VyLCBp biB3aGljaCBjYXNlIHRoZSBmaXJzdAorY2xhc3MgYmVmb3JlIHRoZSB0dCg9KSBjb3JyZXNwb25k cyB0byB0aGUgZmlyc3QgYWZ0ZXIgaXQsIGFuZCBzbyBvbi4gIElmIG9uZQorc2lkZSBoYXMgbW9y ZSBzdWNoIGNsYXNzZXMgdGhhbiB0aGUgb3RoZXIgc2lkZSwgdGhlIHN1cGVyZmx1b3VzIGNsYXNz ZXMgYmVoYXZlCitsaWtlIG5vcm1hbCBjaGFyYWN0ZXIgY2xhc3Nlcy4KKworVGhlIHN0YW5kYXJk IGB0dChbOil2YXIobmFtZSl0dCg6XSknIGZvcm1zIGRlc2NyaWJlZCBmb3Igc3RhbmRhcmQgc2hl bGwKK3BhdHRlcm5zIChzZWUgCitpZm56bWFuKG5vZGVyZWYoRmlsZW5hbWUgR2VuZXJhdGlvbikp XAoraWZ6bWFuKHRoZSBzZWN0aW9uCitGSUxFTkFNRSBHRU5FUkFUSU9OIGluIHptYW5yZWYoenNo ZXhwbikpXAorKSBtYXkgYXBwZWFyIGluIGNvcnJlc3BvbmRlbmNlIGNsYXNzZXMgYXMgd2VsbCBh cyBub3JtYWwgY2hhcmFjdGVyIGNsYXNzZXMuCitUaGUgb25seSBzcGVjaWFsIGJlaGF2aW91ciBp biBjb3JyZXNwb25kZW5jZSBjbGFzc2VzIGlzIGlmIHRoZSBmb3JtIG9uIHRoZSBsZWZ0CithbmQg dGhlIGZvcm0gb24gdGhlIHJpZ2h0IGFyZSBlYWNoIG9uZSBvZiB0dChbOnVwcGVyOl0pLCB0dChb Omxvd2VyOl0pLiAgSW4KK3RoZXNlIGNhc2VzIHRoZSBjaGFyYWN0ZXIgaW4gdGhlIHdvcmQgYW5k IHRoZSBjaGFyYWN0ZXIgb24gdGhlIGxpbmUgbXVzdCBiZSB0aGUKK3NhbWUgdXAgdG8gYSBkaWZm ZXJlbmNlIGluIGNhc2UuICBBbHRob3VnaCB0aGUgbWF0Y2hpbmcgc3lzdGVtIGRvZXMgbm90IHll dAoraGFuZGxlIG11bHRpYnl0ZSBjaGFyYWN0ZXJzLCB0aGlzIGlzIGxpa2VseSB0byBiZSBhIGZ1 dHVyZSBleHRlbnNpb24sIGF0IHdoaWNoCitwb2ludCB0aGlzIHN5bnRheCB3aWxsIGhhbmRsZSBh cmJpdHJhcnkgYWxwaGFiZXRzOyBoZW5jZSB0aGlzIGZvcm0sIHJhdGhlciB0aGFuCit0aGUgdXNl IG9mIGV4cGxpY2l0IHJhbmdlcywgaXMgdGhlIHJlY29tbWVuZGVkIGZvcm0uICBJbiBvdGhlciBj YXNlcworYHR0KFs6KXZhcihuYW1lKXR0KDpdKScgZm9ybXMgYXJlIGFsbG93ZWQuICBJZiB0aGUg dHdvIGZvcm1zIG9uIHRoZSBsZWZ0IGFuZAorcmlnaHQgYXJlIHRoZSBzYW1lLCB0aGUgY2hhcmFj dGVycyBtdXN0IG1hdGNoIGV4YWN0bHkuICBJbiByZW1haW5pbmcgY2FzZXMsIHRoZQorY29ycmVz cG9uZGluZyB0ZXN0cyBhcmUgYXBwbGllZCB0byBib3RoIGNoYXJhY3RlcnMsIGJ1dCB0aGV5IGFy ZSBub3Qgb3RoZXJ3aXNlCitjb25zdHJhaW5lZDsgYW55IG1hdGNoaW5nIGNoYXJhY3RlciBpbiBv bmUgc2V0IGdvZXMgd2l0aCBhbnkgbWF0Y2hpbmcgY2hhcmFjdGVyCitpbiB0aGUgb3RoZXIgc2V0 OiB0aGlzIGlzIGVxdWl2YWxlbnQgdG8gdGhlIGJlaGF2aW91ciBvZiBvcmRpbmFyeSBjaGFyYWN0 ZXIKK2NsYXNzZXMuCisKK1RoZSBmb3JtcyBvZiB2YXIobWF0Y2gtc3BlYykgdW5kZXJzdG9vZCBh cmUgbGlzdGVkIGJlbG93LiAgRm9yIGVhY2ggb2YgdGhlc2UsCit0aGUgZm9ybSB3aXRoIGFuIHVw cGVyIGNhc2UgaW5pdGlhbCBjaGFyYWN0ZXIgcmVwbGFjZXMgbWFwcGVkIHN1YnN0cmluZ3MgaW4g dGhlCit0cmlhbCBjb21wbGV0aW9ucyB3aXRoIHRoZWlyIGNvdW50ZXJwYXJ0cyBmcm9tIHRoZSBj b21tYW5kIGxpbmUsIHdoZXJlYXMgd2l0aCBhCitsb3dlciBjYXNlIGluaXRpYWwgY2hhcmFjdGVy LCBvbmNlIGEgdHJpYWwgY29tcGxldGlvbiBoYXMgYmVlbiBhY2NlcHRlZCwKK21hdGNoZWQgc3Vi c3RyaW5ncyBvbiB0aGUgY29tbWFuZCBsaW5lIGFyZSByZXBsYWNlZCB3aXRoIHRoZWlyIGNvdW50 ZXJwYXJ0cworZnJvbSB0aGUgYWNjZXB0ZWQgY29tcGxldGlvbi4KIAogc3RhcnRpdGVtKCkKIHhp dGVtKHR0KG06KXZhcihscGF0KXR0KD0pdmFyKHRwYXQpKQogaXRlbSh0dChNOil2YXIobHBhdCl0 dCg9KXZhcih0cGF0KSkoCi1IZXJlLCB2YXIobHBhdCkgaXMgYSBwYXR0ZXJuIHRoYXQgbWF0Y2hl cyBvbiB0aGUgY29tbWFuZCBsaW5lLAotY29ycmVzcG9uZGluZyB0byB2YXIodHBhdCkgd2hpY2gg bWF0Y2hlcyBpbiB0aGUgdHJpYWwgY29tcGxldGlvbi4KK0xldCBhbnkgc3Vic3RyaW5nIG1hdGNo aW5nIHZhcihscGF0KSBiZSBjb21wbGV0ZWQgdG8gYW55IHN1YnN0cmluZyBtYXRjaGluZwordmFy KHRwYXQpLgorCitFeGFtcGxlczoKKwordHQobTp7Wzpsb3dlcjpdfT17Wzp1cHBlcjpdfSkgbGV0 cyBhbnkgbG93ZXIgY2FzZSBjaGFyYWN0ZXIgYmUgY29tcGxldGVkIHRvIGl0cwordXBwZXJjYXNl IGNvdW50ZXJwYXJ0LgorCit0dChNOl89KSBpbnNlcnRzIGV2ZXJ5IHVuZGVyc2NvcmUgb24gdGhl IGNvbW1hbmQgbGluZSBpbnRvIGVhY2ggdHJpYWwKK2NvbXBsZXRpb24sIGluIHRoZSBzYW1lIHJl bGF0aXZlIHBvc2l0aW9uLCBkZXRlcm1pbmVkIGJ5IG1hdGNoaW5nIHRoZQorc3Vic3RyaW5ncyBh cm91bmQgaXQuICBOb3RlIHRoYXQgdGhlIGRlZmluaXRpb24gb2Ygd2hhdCBpcyBtYXRjaGluZyBj YW4gYmUKK21vZGlmaWVkIGJ5IGFwcGx5aW5nIG90aGVyIG1hdGNoZXJzIGZpcnN0LgorCitJZiB0 aGVzZSB0d28gbWF0Y2hlcnMgYXJlIGNvbWJpbmVkIHRvIHR0KCdtOntbOmxvd2VyOl19PXtbOnVw cGVyOl19IE06Xz0nKSwKK3RoZW4gZ2l2ZW4gYSB0cmlhbCBjb21wbGV0aW9uIGB0dChOTyknLCBp dCBsZXRzIGB0dChfbl9vXyknIGJlIGNvbXBsZXRlZCB0bworYHR0KF9OX09fKScsIGV2ZW4gdGhv dWdoIGB0dChfTl9PXyknIGl0c2VsZiBpcyBub3QgcHJlc2VudCBhcyBhIHRyaWFsCitjb21wbGV0 aW9uLiAgdHQobTp7Wzpsb3dlcjpdfT17Wzp1cHBlcjpdfSkgaXMgZXZhbHVhdGVkIGZpcnN0IGFu ZCBtYWtlcyBgdHQobilgCittYXRjaCBgdHQoTiknIGFuZCBgdHQobylgIG1hdGNoIGB0dChPKScs IGFmdGVyIHdoaWNoIHR0KE06Xz0pIGlzIHRoZW4gYWJsZSB0bworaW5zZXJ0IHVuZGVyc2NvcmVz IGludG8gdGhlIGNvcnJlY3QgcG9zaXRpb25zLgorKQoreGl0ZW0odHQobDopdHQofCl2YXIobHBh dCl0dCg9KXZhcih0cGF0KSkKK3hpdGVtKHR0KEw6KXR0KHwpdmFyKGxwYXQpdHQoPSl2YXIodHBh dCkpCit4aXRlbSh0dChyOil2YXIobHBhdCl0dCh8KXR0KD0pdmFyKHRwYXQpKQoraXRlbSh0dChS Oil2YXIobHBhdCl0dCh8KXR0KD0pdmFyKHRwYXQpKSgKK0xldCBhbnkgc3Vic3RyaW5nIG1hdGNo aW5nIHZhcihscGF0KSBhdCB0aGUgbGVmdCAoZm9yIHR0KGw6KSBhbmQgdHQoTDopKSBvcgorcmln aHQgKGZvciB0dChyOikgYW5kIHR0KFI6KSkgZWRnZSBvZiB0aGUgY29tbWFuZCBsaW5lIGJlIGNv bXBsZXRlZCB0byBhbnkKK3N1YnN0cmluZyBtYXRjaGluZyB2YXIodHBhdCkgaW4gdGhlIHNhbWUg cG9zaXRpb24gaW4gdGhlIHRyaWFsIGNvbXBsZXRpb24uCisKK1dpdGggdGhlc2UgbWF0Y2hlcnMs IHRoZSBwYXR0ZXJuIHZhcih0cGF0KSBtYXkgYWxzbyBiZSBhIHN0YXIsIGB0dCgqKScuICBUaGlz CitsZXRzIGEgbWF0Y2hpbmcgY29tbWFuZCBsaW5lIHN1YnN0cmluZyBiZSBjb21wbGV0ZWQgdG8g YW55IHRyaWFsIGNvbXBsZXRpb24KK3N1YnN0cmluZyBpbiB0aGUgc2FtZSByZWxhdGl2ZSBwb3Np dGlvbi4KKworRXhhbXBsZXM6CisKK3R0KEw6fFtuTl1bb09dPSkgbWFrZXMgaXQgc28gdGhhdCwg aWYgdGhlcmUgaXMgYSBzaW5nbGUgYHR0KG5vKScsIGB0dChuTyknLAorYHR0KE5vKScgb3IgYHR0 KG5vKScgYXQgdGhlIGxlZnQgZW5kIG9mIHRoZSBjb21tYW5kIGxpbmUsIHRoZW4gaXQgaXMgYWRk ZWQgdG8KK3RoZSBsZWZ0IG9mIGVhY2ggdHJpYWwgY29tcGxldGlvbi4KKwordHQocjp8PSopIGxl dHMgKHRoZSBlbXB0eSBzdWJzdHJpbmcgYXQpIHRoZSByaWdodCBlZGdlIG9mIHRoZSBjb21tYW5k IGxpbmUKK3N0cmluZyBiZSBjb21wbGV0ZWQgdG8gYW55IG51bWJlciBvZiBjaGFyYWN0ZXJzIGF0 IHRoZSBlZGdlIG9mIGVhY2ggdHJpYWwKK2NvbXBsZXRpb24uCisKK0lmIHRoZXNlIHR3byBtYXRj aGVycyBhcmUgY29tYmluZWQgdG8gdHQoJ0w6W25OXVtvT109IHI6fD0qJyksIHRoZW4gZ2l2ZW4g YQordHJpYWwgY29tcGxldGlvbiBgdHQoZm9vKScsIGl0IGxldHMgYHR0KE5PZiknIGJlIGNvbXBs ZXRlZCB0byBgdHQoTk9mb28pJy4KK0ZpcnN0LCB0dChMOltuTl1bb09dPSkgcHJlZml4ZXMgdGhl IHRyaWFsIGNvbXBsZXRpb24gd2l0aCB0dChOTyksIGFmdGVyIHdoaWNoCit0dChyOnw9KikgaXMg YWJsZSB0byBtYXRjaCB0aGUgY29tbWFuZCBsaW5lIHRvIHRoZSB0cmlhbCBjb21wbGV0aW9uIGFu ZAorY29tcGxldGUgdGhlIG1pc3NpbmcgY2hhcmFjdGVycyBhdCB0aGUgZW5kLgogKQoteGl0ZW0o dHQobDopdmFyKGxhbmNob3IpdHQofCl2YXIobHBhdCl0dCg9KXZhcih0cGF0KSkKLXhpdGVtKHR0 KEw6KXZhcihsYW5jaG9yKXR0KHwpdmFyKGxwYXQpdHQoPSl2YXIodHBhdCkpCi14aXRlbSh0dChs Oil2YXIobGFuY2hvcil0dCh8fCl2YXIocmFuY2hvcil0dCg9KXZhcih0cGF0KSkKLXhpdGVtKHR0 KEw6KXZhcihsYW5jaG9yKXR0KHx8KXZhcihyYW5jaG9yKXR0KD0pdmFyKHRwYXQpKQogeGl0ZW0o dHQoYjopdmFyKGxwYXQpdHQoPSl2YXIodHBhdCkpCi1pdGVtKHR0KEI6KXZhcihscGF0KXR0KD0p dmFyKHRwYXQpKSgKLVRoZXNlIGxldHRlcnMgYXJlIGZvciBwYXR0ZXJucyB0aGF0IGFyZSBhbmNo b3JlZCBieSBhbm90aGVyIHBhdHRlcm4gb24KLXRoZSBsZWZ0IHNpZGUuIE1hdGNoaW5nIGZvciB2 YXIobHBhdCkgYW5kIHZhcih0cGF0KSBpcyBhcyBmb3IgdHQobSkgYW5kCi10dChNKSwgYnV0IHRo ZSBwYXR0ZXJuIHZhcihscGF0KSBtYXRjaGVkIG9uIHRoZSBjb21tYW5kIGxpbmUgbXVzdCBiZQot cHJlY2VkZWQgYnkgdGhlIHBhdHRlcm4gdmFyKGxhbmNob3IpLiAgVGhlIHZhcihsYW5jaG9yKSBj YW4gYmUgYmxhbmsgdG8KLWFuY2hvciB0aGUgbWF0Y2ggdG8gdGhlIHN0YXJ0IG9mIHRoZSBjb21t YW5kIGxpbmUgc3RyaW5nOyBvdGhlcndpc2UgdGhlCi1hbmNob3IgY2FuIG9jY3VyIGFueXdoZXJl LCBidXQgbXVzdCBtYXRjaCBpbiBib3RoIHRoZSBjb21tYW5kIGxpbmUgYW5kCi10cmlhbCBjb21w bGV0aW9uIHN0cmluZ3MuCi0KLUlmIG5vIHZhcihscGF0KSBpcyBnaXZlbiBidXQgYSB2YXIocmFu Y2hvcikgaXMsIHRoaXMgbWF0Y2hlcyB0aGUgZ2FwCi1iZXR3ZWVuIHN1YnN0cmluZ3MgbWF0Y2hl ZCBieSB2YXIobGFuY2hvcikgYW5kIHZhcihyYW5jaG9yKS4gVW5saWtlCi12YXIobGFuY2hvciks IHRoZSB2YXIocmFuY2hvcikgb25seSBuZWVkcyB0byBtYXRjaCB0aGUgdHJpYWwKLWNvbXBsZXRp b24gc3RyaW5nLgotCi1UaGUgdHQoYikgYW5kIHR0KEIpIGZvcm1zIGFyZSBzaW1pbGFyIHRvIHR0 KGwpIGFuZCB0dChMKSB3aXRoIGFuIGVtcHR5IAotYW5jaG9yLCBidXQgbmVlZCB0byBtYXRjaCBv bmx5IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHdvcmQgb24gdGhlIGNvbW1hbmQgbGluZQotb3IgdHJp YWwgY29tcGxldGlvbiwgcmVzcGVjdGl2ZWx5LgotKQoteGl0ZW0odHQocjopdmFyKGxwYXQpdHQo fCl2YXIocmFuY2hvcil0dCg9KXZhcih0cGF0KSkKLXhpdGVtKHR0KFI6KXZhcihscGF0KXR0KHwp dmFyKHJhbmNob3IpdHQoPSl2YXIodHBhdCkpCi14aXRlbSh0dChyOil2YXIobGFuY2hvcil0dCh8 fCl2YXIocmFuY2hvcil0dCg9KXZhcih0cGF0KSkKLXhpdGVtKHR0KFI6KXZhcihsYW5jaG9yKXR0 KHx8KXZhcihyYW5jaG9yKXR0KD0pdmFyKHRwYXQpKQoreGl0ZW0odHQoQjopdmFyKGxwYXQpdHQo PSl2YXIodHBhdCkpCiB4aXRlbSh0dChlOil2YXIobHBhdCl0dCg9KXZhcih0cGF0KSkKIGl0ZW0o dHQoRTopdmFyKGxwYXQpdHQoPSl2YXIodHBhdCkpKAotQXMgdHQobCksIHR0KEwpLCB0dChiKSBh bmQgdHQoQiksIHdpdGggdGhlIGRpZmZlcmVuY2UgdGhhdCB0aGUgY29tbWFuZAotbGluZSBhbmQg dHJpYWwgY29tcGxldGlvbiBwYXR0ZXJucyBhcmUgYW5jaG9yZWQgb24gdGhlIHJpZ2h0IHNpZGUu Ci1IZXJlIGFuIGVtcHR5IHZhcihyYW5jaG9yKSBhbmQgdGhlIHR0KGUpIGFuZCB0dChFKSBmb3Jt cyBmb3JjZSB0aGUKLW1hdGNoIHRvIHRoZSBlbmQgb2YgdGhlIGNvbW1hbmQgbGluZSBvciB0cmlh bCBjb21wbGV0aW9uIHN0cmluZy4KLQotSW4gdGhlIGZvcm0gd2hlcmUgdmFyKGxhbmNob3IpIGlz IGdpdmVuLCB0aGUgdmFyKGxhbmNob3IpIG9ubHkgbmVlZHMKLXRvIG1hdGNoIHRoZSB0cmlhbCBj b21wbGV0aW9uIHN0cmluZy4KK0xldCBhbGwgc3Vic3RyaW5ncyBtYXRjaGluZyB2YXIobHBhdCkg YXQgdGhlIGJlZ2lubmluZyAoZm9yIHR0KGI6KSBhbmQgdHQoQjopKQorb3IgZW5kIChmb3IgdHQo ZTopIGFuZCB0dChFOikpIG9mIHRoZSBjb21tYW5kIGxpbmUgYmUgY29tcGxldGVkIHRvIHRoZSBz YW1lCitudW1iZXIgb2Ygc3Vic3RyaW5ncyBtYXRjaGluZyB2YXIodHBhdCkgaW4gZWFjaCB0cmlh bCBjb21wbGV0aW9uIGluIHRoZSBzYW1lCityZWxhdGl2ZSBwb3NpdGlvbi4KKworRXhhbXBsZToK KwordHQoQjpbbk5dW29PXT0pIGFkZHMgYWxsIG9jY3VyZW5jZXMgb2YgYHR0KG5vKScsIGB0dChu TyknLCBgdHQoTm8pJyBhbmQKK2B0dChOTyknIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGNvbW1h bmQgbGluZSB0byB0aGUgYmVnaW5uaW5nIG9mIGVhY2ggdHJpYWwKK2NvbXBsZXRpb24uICBJZiB0 dChyOnw9KikgaXMgYWRkZWQgdG8gdGhpcywgdGhlbiBnaXZlbiBhIHRyaWFsIGNvbXBsZXRpb24K K2B0dChmb28pJywgaXQgbGV0cyBgdHQobm9OT2YpJyBiZSBjb21wbGV0ZWQgdG8gYHR0KG5vTk9m b28pJy4KKykKK3hpdGVtKHR0KGw6KXZhcihhbmNob3IpdHQofCl2YXIobHBhdCl0dCg9KXZhcih0 cGF0KSkKK3hpdGVtKHR0KEw6KXZhcihhbmNob3IpdHQofCl2YXIobHBhdCl0dCg9KXZhcih0cGF0 KSkKK3hpdGVtKHR0KHI6KXZhcihscGF0KXR0KHwpdmFyKGFuY2hvcil0dCg9KXZhcih0cGF0KSkK K2l0ZW0odHQoUjopdmFyKGxwYXQpdHQofCl2YXIoYW5jaG9yKXR0KD0pdmFyKHRwYXQpKSgKK0xl dCBhbnkgY29tbWFuZCBsaW5lIHN1YnN0cmluZywgd2hpY2ggaXMgbGVmdC9yaWdodC1hZGphY2Vu dCAocmVzcGVjdGl2ZWx5KSB0bworYSBzdWJzdHJpbmcgbWF0Y2hpbmcgdmFyKGFuY2hvcikgYW5k IHdoaWNoIG1hdGNoZXMgdmFyKGxwYXQpLCBiZSBjb21wbGV0ZWQgdG8KK2FueSB0cmlhbCBjb21w bGV0aW9uIHN1YnN0cmluZywgd2hpY2gKK3N0YXJ0aXRlbWl6ZSgpCitpdGVtaXooXAoraXMgYWRq YWNlbnQgdG8gdGhlIHNhbWUgc3Vic3RyaW5nIGFuZCB3aGljaAorKQoraXRlbWl6KFwKK21hdGNo ZXMgdmFyKHRwYXQpLCBidXQgd2hpY2gKKykKK2l0ZW1peihcCitkb2VzIG5vdCBjb250YWluIGFu eSBzdWJzdHJpbmdzIG1hdGNoaW5nIHZhcihhbmNob3IpLgorKQorZW5kaXRlbWl6ZSgpCisKK1do ZW4gYSBtYXRjaGVyIGluY2x1ZGVzIGF0IGxlYXN0IG9uZSBhbmNob3IgKHdoaWNoIGFsc28gYXBw bGllcyB0byB0aGUgZm9ybXMKK3dpdGggdHdvIGFuY2hvcnMsIGJlbG93KSwgdGhlIHBhdHRlcm4g dmFyKHRwYXQpIG1heSBhbHNvIGJlIG9uZSBvciB0d28gc3RhcnMsCitgdHQoKiknIG9yIGB0dCgq KiknLiAgVGhlIGZpcnN0IHN0YXIgY2FuIG1hdGNoIGFueSBudW1iZXIgb2YgY2hhcmFjdGVycywg d2l0aGluCit0aGUgY29uc3RyYWludHMgb3V0bGluZWQgYWJvdmUsIHdoZXJlYXMgYSBzZWNvbmQg c3RhciByZW1vdmVzIHRoZSBsYXN0Citjb25zdHJhaW50IGFuZCBjYW4gbWF0Y2ggc3Vic3RyaW5n cyBtYXRjaGluZyB2YXIoYW5jaG9yKS4KKworRXhhbXBsZToKKwordHQocjp8Lj0qKSBsZXRzIGVh Y2ggZG90IGJlIGNvbXBsZXRlZCB0byBhbnkgc3Vic3RyaW5nIHRoYXQgZW5kcyBhdCB0aGUgcmln aHQKK2luIGEgZG90LCBidXQgZG9lcyBub3Qgb3RoZXJ3aXNlIGNvbnRhaW4gYW55IGRvdHMsIGlu IHRoZSB0cmlhbCBzdHJpbmcuICBUaHVzLAorZ2l2ZW4gYSB0cmlhbCBzdHJpbmcgYHR0KGNvbXAu c291cmNlcy51bml4KScsIGB0dCguLnVuaXgpJyBjYW4gYmUgY29tcGxldGVkIHRvCitpdCwgYnV0 IGB0dCgudW5peCknIGNhbm5vdCwgc2luY2UgdGhlIG1hdGNoZXIgd2lsbCByZWZ1c2UgdG8gbWFw IGFueSBkb3RzIG90aGVyCit0aGFuIHRoZSBvbmUgbWF0Y2hlZCBieSB0aGUgdmFyKGFuY2hvciku CispCit4aXRlbSh0dChsOil2YXIoYW5jaG9yKXR0KHx8KXZhcihjb2FuY2hvcil0dCg9KXZhcih0 cGF0KSkKK3hpdGVtKHR0KEw6KXZhcihhbmNob3IpdHQofHwpdmFyKGNvYW5jaG9yKXR0KD0pdmFy KHRwYXQpKQoreGl0ZW0odHQocjopdmFyKGNvYW5jaG9yKXR0KHx8KXZhcihhbmNob3IpdHQoPSl2 YXIodHBhdCkpCitpdGVtKHR0KFI6KXZhcihjb2FuY2hvcil0dCh8fCl2YXIoYW5jaG9yKXR0KD0p dmFyKHRwYXQpKSgKK0xldHMgdGhlIGVtcHR5IHN0cmluZyBiZXR3ZWVuIGVhY2ggdHdvIGFkamFj ZW50IGNvbW1hbmQgbGluZSBzdWJzdHJpbmdzCittYXRjaGluZyB2YXIoYW5jaG9yKSBhbmQgdmFy KGNvYW5jaG9yKSwgaW4gdGhlIG9yZGVyIGdpdmVuLCBiZSBjb21wbGV0ZWQgdG8gYW55Cit0cmlh bCBjb21wbGV0aW9uIHN1YnN0cmluZywgd2hpY2gKK3N0YXJ0aXRlbWl6ZSgpCitpdGVtaXooXAor aXMgYWRqYWNlbnQgdG8gdGhlIHNhbWUgdHdvIHN1YnN0cmluZ3MgYW5kIHdoaWNoCispCitpdGVt aXooXAorbWF0Y2hlcyB2YXIodHBhdCksIGJ1dCB3aGljaAorKQoraXRlbWl6KFwKK2RvZXMgbm90 IGNvbnRhaW4gYW55IHN1YnN0cmluZ3MgbWF0Y2hpbmcgdmFyKGFuY2hvcikuCispCitlbmRpdGVt aXplKCkKKworTm90ZSB0aGVyZSBpcyBubyByZXN0cmljdGlvbiBvbiBzdWJzdHJpbmdzIG1hdGNo aW5nIHZhcihjb2FuY2hvcikuCisKK0V4YW1wbGU6CisKK3R0KHI6P3x8W1s6dXBwZXI6XV09Kikg d2lsbCBjb21wbGV0ZSBgdHQoZkhvbyknIHRvIGB0dChmb29Ib28pJywgYnV0IG5vdAorYHR0KEhv byknIHRvIGB0dChmb29Ib28pJywgYmVjYXVzZSB0aGVyZSBpcyBubyBjaGFyYWN0ZXIgdG8gdGhl IGxlZnQgb2YgYHR0KEgpJworb24gdGhlIGNvbW1hbmQgbGluZcuZLiAgTGlrZXdpc2UsIGl0IHdp bGwgbm90IGNvbXBsZXRlIGB0dChsSElTKScgdG8KK2B0dChsaWtlVEhJUyknLCBiZWNhdXNlLCBv dGhlciB0aGFuIHRoZSBvbmUgc3Vic3RyaW5nIGl0IG1hcHMgdG8gdmFyKGFuY2hvciksCitpdCBj YW5ub3QgbWFwIGFueSBzdWJzdHJpbmcgY29udGFpbmluZyB1cHBlcmNhc2UgbGV0dGVycyBpbiB0 aGUgdHJpYWwKK2NvbXBsZXRpb24uCiApCiBpdGVtKHR0KHg6KSkoCiBUaGlzIGZvcm0gaXMgdXNl ZCB0byBtYXJrIHRoZSBlbmQgb2YgbWF0Y2hpbmcgc3BlY2lmaWNhdGlvbnM6CkBAIC05NzIsMjAw ICsxMTEwLDYgQEAgZnVuY3Rpb24gdG8gb3ZlcnJpZGUgYW5vdGhlci4KICkKIGVuZGl0ZW0oKQog Ci1FYWNoIHZhcihscGF0KSwgdmFyKHRwYXQpIG9yIHZhcihhbmNob3IpIGlzIGVpdGhlciBhbiBl bXB0eSBzdHJpbmcgb3IKLWNvbnNpc3RzIG9mIGEgc2VxdWVuY2Ugb2YgbGl0ZXJhbCBjaGFyYWN0 ZXJzICh3aGljaCBtYXkgYmUgcXVvdGVkIHdpdGggYQotYmFja3NsYXNoKSwgcXVlc3Rpb24gbWFy a3MsIGNoYXJhY3RlciBjbGFzc2VzLCBhbmQgY29ycmVzcG9uZGVuY2UKLWNsYXNzZXM7IG9yZGlu YXJ5IHNoZWxsIHBhdHRlcm5zIGFyZSBub3QgdXNlZC4gIExpdGVyYWwgY2hhcmFjdGVycyBtYXRj aAotb25seSB0aGVtc2VsdmVzLCBxdWVzdGlvbiBtYXJrcyBtYXRjaCBhbnkgY2hhcmFjdGVyLCBh bmQgY2hhcmFjdGVyCi1jbGFzc2VzIGFyZSBmb3JtZWQgYXMgZm9yIGdsb2JiaW5nIGFuZCBtYXRj aCBhbnkgY2hhcmFjdGVyIGluIHRoZSBnaXZlbgotc2V0LgotCi1Db3JyZXNwb25kZW5jZSBjbGFz c2VzIGFyZSBkZWZpbmVkIGxpa2UgY2hhcmFjdGVyIGNsYXNzZXMsIGJ1dCB3aXRoIHR3bwotZGlm ZmVyZW5jZXM6IHRoZXkgYXJlIGRlbGltaXRlZCBieSBhIHBhaXIgb2YgYnJhY2VzLCBhbmQgbmVn YXRlZCBjbGFzc2VzCi1hcmUgbm90IGFsbG93ZWQsIHNvIHRoZSBjaGFyYWN0ZXJzIHR0KCEpIGFu ZCB0dCheKSBoYXZlIG5vIHNwZWNpYWwKLW1lYW5pbmcgZGlyZWN0bHkgYWZ0ZXIgdGhlIG9wZW5p bmcgYnJhY2UuICBUaGV5IGluZGljYXRlIHRoYXQgYSByYW5nZSBvZgotY2hhcmFjdGVycyBvbiB0 aGUgbGluZSBtYXRjaCBhIHJhbmdlIG9mIGNoYXJhY3RlcnMgaW4gdGhlIHRyaWFsCi1jb21wbGV0 aW9uLCBidXQgKHVubGlrZSBvcmRpbmFyeSBjaGFyYWN0ZXIgY2xhc3NlcykgcGFpcmVkIGFjY29y ZGluZyB0bwotdGhlIGNvcnJlc3BvbmRpbmcgcG9zaXRpb24gaW4gdGhlIHNlcXVlbmNlLiAgRm9y IGV4YW1wbGUsIHRvIG1ha2UgYW55Ci1BU0NJSSBsb3dlciBjYXNlIGxldHRlciBvbiB0aGUgbGlu ZSBtYXRjaCB0aGUgY29ycmVzcG9uZGluZyB1cHBlciBjYXNlCi1sZXR0ZXIgaW4gdGhlIHRyaWFs IGNvbXBsZXRpb24sIHlvdSBjYW4gdXNlIGB0dChtOnthLXp9PXtBLVp9KScKLShob3dldmVyLCBz ZWUgYmVsb3cgZm9yIHRoZSByZWNvbW1lbmRlZCBmb3JtIGZvciB0aGlzKS4gIE1vcmUKLXRoYW4g b25lIHBhaXIgb2YgY2xhc3NlcyBjYW4gb2NjdXIsIGluIHdoaWNoIGNhc2UgdGhlIGZpcnN0IGNs YXNzIGJlZm9yZQotdGhlIHR0KD0pIGNvcnJlc3BvbmRzIHRvIHRoZSBmaXJzdCBhZnRlciBpdCwg YW5kIHNvIG9uLiAgSWYgb25lIHNpZGUgaGFzCi1tb3JlIHN1Y2ggY2xhc3NlcyB0aGFuIHRoZSBv dGhlciBzaWRlLCB0aGUgc3VwZXJmbHVvdXMgY2xhc3NlcyBiZWhhdmUKLWxpa2Ugbm9ybWFsIGNo YXJhY3RlciBjbGFzc2VzLiAgSW4gYW5jaG9yIHBhdHRlcm5zIGNvcnJlc3BvbmRlbmNlIGNsYXNz ZXMKLWFsc28gYmVoYXZlIGxpa2Ugbm9ybWFsIGNoYXJhY3RlciBjbGFzc2VzLgotCi1UaGUgc3Rh bmRhcmQgYHR0KFs6KXZhcihuYW1lKXR0KDpdKScgZm9ybXMgZGVzY3JpYmVkIGZvciBzdGFuZGFy ZCBzaGVsbAotcGF0dGVybnMgKHNlZQotaWZuem1hbihub2RlcmVmKEZpbGVuYW1lIEdlbmVyYXRp b24pKVwKLWlmem1hbih0aGUgc2VjdGlvbiBGSUxFTkFNRSBHRU5FUkFUSU9OIGluIHptYW5yZWYo enNoZXhwbikpKQotbWF5IGFwcGVhciBpbiBjb3JyZXNwb25kZW5jZSBjbGFzc2VzIGFzIHdlbGwg YXMgbm9ybWFsIGNoYXJhY3RlcgotY2xhc3Nlcy4gIFRoZSBvbmx5IHNwZWNpYWwgYmVoYXZpb3Vy IGluIGNvcnJlc3BvbmRlbmNlIGNsYXNzZXMgaXMgaWYKLXRoZSBmb3JtIG9uIHRoZSBsZWZ0IGFu ZCB0aGUgZm9ybSBvbiB0aGUgcmlnaHQgYXJlIGVhY2ggb25lIG9mCi10dChbOnVwcGVyOl0pLCB0 dChbOmxvd2VyOl0pLiAgSW4gdGhlc2UgY2FzZXMgdGhlCi1jaGFyYWN0ZXIgaW4gdGhlIHdvcmQg YW5kIHRoZSBjaGFyYWN0ZXIgb24gdGhlIGxpbmUgbXVzdCBiZSB0aGUgc2FtZSB1cAotdG8gYSBk aWZmZXJlbmNlIGluIGNhc2UuICBIZW5jZSB0byBtYWtlIGFueSBsb3dlciBjYXNlIGNoYXJhY3Rl ciBvbiB0aGUKLWxpbmUgbWF0Y2ggdGhlIGNvcnJlc3BvbmRpbmcgdXBwZXIgY2FzZSBjaGFyYWN0 ZXIgaW4gdGhlIHRyaWFsCi1jb21wbGV0aW9uIHlvdSBjYW4gdXNlIGB0dChtOntbOmxvd2VyOl19 PXtbOnVwcGVyOl19KScuICBBbHRob3VnaCB0aGUKLW1hdGNoaW5nIHN5c3RlbSBkb2VzIG5vdCB5 ZXQgaGFuZGxlIG11bHRpYnl0ZSBjaGFyYWN0ZXJzLCB0aGlzIGlzIGxpa2VseQotdG8gYmUgYSBm dXR1cmUgZXh0ZW5zaW9uLCBhdCB3aGljaCBwb2ludCB0aGlzIHN5bnRheCB3aWxsIGhhbmRsZQot YXJiaXRyYXJ5IGFscGhhYmV0czsgaGVuY2UgdGhpcyBmb3JtLCByYXRoZXIgdGhhbiB0aGUgdXNl IG9mIGV4cGxpY2l0Ci1yYW5nZXMsIGlzIHRoZSByZWNvbW1lbmRlZCBmb3JtLiAgSW4gb3RoZXIg Y2FzZXMKLWB0dChbOil2YXIobmFtZSl0dCg6XSknIGZvcm1zIGFyZSBhbGxvd2VkLiAgSWYgdGhl IHR3byBmb3JtcyBvbiB0aGUgbGVmdAotYW5kIHJpZ2h0IGFyZSB0aGUgc2FtZSwgdGhlIGNoYXJh Y3RlcnMgbXVzdCBtYXRjaCBleGFjdGx5LiAgSW4gcmVtYWluaW5nCi1jYXNlcywgdGhlIGNvcnJl c3BvbmRpbmcgdGVzdHMgYXJlIGFwcGxpZWQgdG8gYm90aCBjaGFyYWN0ZXJzLCBidXQgdGhleQot YXJlIG5vdCBvdGhlcndpc2UgY29uc3RyYWluZWQ7IGFueSBtYXRjaGluZyBjaGFyYWN0ZXIgaW4g b25lIHNldCBnb2VzCi13aXRoIGFueSBtYXRjaGluZyBjaGFyYWN0ZXIgaW4gdGhlIG90aGVyIHNl dDogIHRoaXMgaXMgZXF1aXZhbGVudCB0byB0aGUKLWJlaGF2aW91ciBvZiBvcmRpbmFyeSBjaGFy YWN0ZXIgY2xhc3Nlcy4KLQotVGhlIHBhdHRlcm4gdmFyKHRwYXQpIG1heSBhbHNvIGJlIG9uZSBv ciB0d28gc3RhcnMsIGB0dCgqKScgb3IKLWB0dCgqKiknLiBUaGlzIG1lYW5zIHRoYXQgdGhlIHBh dHRlcm4gb24gdGhlIGNvbW1hbmQgbGluZSBjYW4gbWF0Y2gKLWFueSBudW1iZXIgb2YgY2hhcmFj dGVycyBpbiB0aGUgdHJpYWwgY29tcGxldGlvbi4gSW4gdGhpcyBjYXNlIHRoZQotcGF0dGVybiBt dXN0IGJlIGFuY2hvcmVkIChvbiBlaXRoZXIgc2lkZSk7IGluIHRoZSBjYXNlIG9mIGEgc2luZ2xl Ci1zdGFyLCB0aGUgdmFyKGFuY2hvcikgdGhlbiBkZXRlcm1pbmVzIGhvdyBtdWNoIG9mIHRoZSB0 cmlhbCBjb21wbGV0aW9uCi1pcyB0byBiZSBpbmNsdWRlZCBEQVNIKCktIG9ubHkgdGhlIGNoYXJh Y3RlcnMgdXAgdG8gdGhlIG5leHQgYXBwZWFyYW5jZSBvZgotdGhlIGFuY2hvciB3aWxsIGJlIG1h dGNoZWQuIFdpdGggdHdvIHN0YXJzLCBzdWJzdHJpbmdzIG1hdGNoZWQgYnkKLXRoZSBhbmNob3Ig Y2FuIGJlIG1hdGNoZWQsIHRvby4gSW4gdGhlIGZvcm1zIHRoYXQgaW5jbHVkZSB0d28KLWFuY2hv cnMsIGB0dCgqKScgY2FuIG1hdGNoIGNoYXJhY3RlcnMgZnJvbSB0aGUgYWRkaXRpb25hbCBhbmNo b3IKLURBU0goKS0gdmFyKGxhbmNob3IpIHdpdGggdHQocikgb3IgdmFyKHJhbmNob3IpIHdpdGgg dHQobCkuCi0KLUV4YW1wbGVzOgotCi1UaGUga2V5cyBvZiB0aGUgdHQob3B0aW9ucykgYXNzb2Np YXRpb24gZGVmaW5lZCBieSB0aGUgdHQocGFyYW1ldGVyKQotbW9kdWxlIGFyZSB0aGUgb3B0aW9u IG5hbWVzIGluIGFsbC1sb3dlci1jYXNlIGZvcm0sIHdpdGhvdXQKLXVuZGVyc2NvcmVzLCBhbmQg d2l0aG91dCB0aGUgb3B0aW9uYWwgdHQobm8pIGF0IHRoZSBiZWdpbm5pbmcgZXZlbgotdGhvdWdo IHRoZSBidWlsdGlucyB0dChzZXRvcHQpIGFuZCB0dCh1bnNldG9wdCkgdW5kZXJzdGFuZCBvcHRp b24gbmFtZXMKLXdpdGggdXBwZXIgY2FzZSBsZXR0ZXJzLCB1bmRlcnNjb3JlcywgYW5kIHRoZSBv cHRpb25hbCB0dChubykuICBUaGUKLWZvbGxvd2luZyBhbHRlcnMgdGhlIG1hdGNoaW5nIHJ1bGVz IHNvIHRoYXQgdGhlIHByZWZpeCB0dChubykgYW5kIGFueQotdW5kZXJzY29yZSBhcmUgaWdub3Jl ZCB3aGVuIHRyeWluZyB0byBtYXRjaCB0aGUgdHJpYWwgY29tcGxldGlvbnMKLWdlbmVyYXRlZCBh bmQgdXBwZXIgY2FzZSBsZXR0ZXJzIG9uIHRoZSBsaW5lIG1hdGNoIHRoZSBjb3JyZXNwb25kaW5n Ci1sb3dlciBjYXNlIGxldHRlcnMgaW4gdGhlIHdvcmRzOgotCi1leGFtcGxlKGNvbXBhZGQgLU0g J0w6fFtuTl1bb09dPSBNOl89IE06e1s6dXBwZXI6XX09e1s6bG93ZXI6XX0nIC0gXCAKLSAgJHso aylvcHRpb25zfSApCi0KLVRoZSBmaXJzdCBwYXJ0IHNheXMgdGhhdCB0aGUgcGF0dGVybiBgdHQo W25OXVtvT10pJyBhdCB0aGUgYmVnaW5uaW5nCi0odGhlIGVtcHR5IGFuY2hvciBiZWZvcmUgdGhl IHBpcGUgc3ltYm9sKSBvZiB0aGUgc3RyaW5nIG9uIHRoZQotbGluZSBtYXRjaGVzIHRoZSBlbXB0 eSBzdHJpbmcgaW4gdGhlIGxpc3Qgb2Ygd29yZHMgZ2VuZXJhdGVkIGJ5Ci1jb21wbGV0aW9uLCBz byBpdCB3aWxsIGJlIGlnbm9yZWQgaWYgcHJlc2VudC4gVGhlIHNlY29uZCBwYXJ0IGRvZXMgdGhl Ci1zYW1lIGZvciBhbiB1bmRlcnNjb3JlIGFueXdoZXJlIGluIHRoZSBjb21tYW5kIGxpbmUgc3Ry aW5nLCBhbmQgdGhlCi10aGlyZCBwYXJ0IHVzZXMgY29ycmVzcG9uZGVuY2UgY2xhc3NlcyBzbyB0 aGF0IGFueQotdXBwZXIgY2FzZSBsZXR0ZXIgb24gdGhlIGxpbmUgbWF0Y2hlcyB0aGUgY29ycmVz cG9uZGluZyBsb3dlciBjYXNlCi1sZXR0ZXIgaW4gdGhlIHdvcmQuIFRoZSB1c2Ugb2YgdGhlIHVw cGVyIGNhc2UgZm9ybXMgb2YgdGhlCi1zcGVjaWZpY2F0aW9uIGNoYXJhY3RlcnMgKHR0KEwpIGFu ZCB0dChNKSkgZ3VhcmFudGVlcyB0aGF0IHdoYXQgaGFzCi1hbHJlYWR5IGJlZW4gdHlwZWQgb24g dGhlIGNvbW1hbmQgbGluZSAoaW4gcGFydGljdWxhciB0aGUgcHJlZml4Ci10dChubykpIHdpbGwg bm90IGJlIGRlbGV0ZWQuCi0KLU5vdGUgdGhhdCB0aGUgdXNlIG9mIHR0KEwpIGluIHRoZSBmaXJz dCBwYXJ0IG1lYW5zIHRoYXQgaXQgbWF0Y2hlcwotb25seSB3aGVuIGF0IHRoZSBiZWdpbm5pbmcg b2YgYm90aCB0aGUgY29tbWFuZCBsaW5lIHN0cmluZyBhbmQgdGhlCi10cmlhbCBjb21wbGV0aW9u LiBJLmUuLCB0aGUgc3RyaW5nIGB0dChfTk9fZiknIHdvdWxkIG5vdCBiZQotY29tcGxldGVkIHRv IGB0dChfTk9fZm9vKScsIG5vciB3b3VsZCBgdHQoTk9OT19mKScgYmUgY29tcGxldGVkIHRvCi1g dHQoTk9OT19mb28pJyBiZWNhdXNlIG9mIHRoZSBsZWFkaW5nIHVuZGVyc2NvcmUgb3IgdGhlIHNl Y29uZAotYHR0KE5PKScgb24gdGhlIGxpbmUgd2hpY2ggbWFrZXMgdGhlIHBhdHRlcm4gZmFpbCBl dmVuIHRob3VnaCB0aGV5IGFyZSAKLW90aGVyd2lzZSBpZ25vcmVkLiBUbyBmaXggdGhpcywgb25l IHdvdWxkIHVzZSBgdHQoQjpbbk5dW29PXT0pJwotaW5zdGVhZCBvZiB0aGUgZmlyc3QgcGFydC4g QXMgZGVzY3JpYmVkIGFib3ZlLCB0aGlzIG1hdGNoZXMgYXQgdGhlCi1iZWdpbm5pbmcgb2YgdGhl IHRyaWFsIGNvbXBsZXRpb24sIGluZGVwZW5kZW50IG9mIG90aGVyIGNoYXJhY3RlcnMgb3IKLXN1 YnN0cmluZ3MgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgY29tbWFuZCBsaW5lIHdvcmQgd2hpY2gg YXJlIGlnbm9yZWQKLWJ5IHRoZSBzYW1lIG9yIG90aGVyIHZhcihtYXRjaC1zcGVjKXMuCi0KLVRo ZSBzZWNvbmQgZXhhbXBsZSBtYWtlcyBjb21wbGV0aW9uIGNhc2UgaW5zZW5zaXRpdmUuICBUaGlz IGlzIGp1c3QKLXRoZSBzYW1lIGFzIGluIHRoZSBvcHRpb24gZXhhbXBsZSwgZXhjZXB0IGhlcmUg d2Ugd2lzaCB0byByZXRhaW4gdGhlCi1jaGFyYWN0ZXJzIGluIHRoZSBsaXN0IG9mIGNvbXBsZXRp b25zOgotCi1leGFtcGxlKGNvbXBhZGQgLU0gJ206e1s6bG93ZXI6XX09e1s6dXBwZXI6XX0nIC4u LiApCi0KLVRoaXMgbWFrZXMgbG93ZXIgY2FzZSBsZXR0ZXJzIG1hdGNoIHRoZWlyIHVwcGVyIGNh c2UgY291bnRlcnBhcnRzLgotVG8gbWFrZSB1cHBlciBjYXNlIGxldHRlcnMgbWF0Y2ggdGhlIGxv d2VyIGNhc2UgZm9ybXMgYXMgd2VsbDoKLQotZXhhbXBsZShjb21wYWRkIC1NICdtOntbOmxvd2Vy Ol1bOnVwcGVyOl19PXtbOnVwcGVyOl1bOmxvd2VyOl19JyAuLi4gKQotCi1BIG5pY2UgZXhhbXBs ZSBmb3IgdGhlIHVzZSBvZiB0dCgqKSBwYXR0ZXJucyBpcyBwYXJ0aWFsIHdvcmQKLWNvbXBsZXRp b24uIFNvbWV0aW1lcyB5b3Ugd291bGQgbGlrZSB0byBtYWtlIHN0cmluZ3MgbGlrZSBgdHQoYy5z LnUpJwotY29tcGxldGUgdG8gc3RyaW5ncyBsaWtlIGB0dChjb21wLnNvdXJjZS51bml4KScsIGku ZS4gdGhlIHdvcmQgb24gdGhlCi1jb21tYW5kIGxpbmUgY29uc2lzdHMgb2YgbXVsdGlwbGUgcGFy dHMsIHNlcGFyYXRlZCBieSBhIGRvdCBpbiB0aGlzCi1leGFtcGxlLCB3aGVyZSBlYWNoIHBhcnQg c2hvdWxkIGJlIGNvbXBsZXRlZCBzZXBhcmF0ZWx5IERBU0goKS0gbm90ZSwKLWhvd2V2ZXIsIHRo YXQgdGhlIGNhc2Ugd2hlcmUgZWFjaCBwYXJ0IG9mIHRoZSB3b3JkLCBpLmUuIGB0dChjb21wKScs Ci1gdHQoc291cmNlKScgYW5kIGB0dCh1bml4KScgaW4gdGhpcyBleGFtcGxlLCBpcyB0byBiZSBj b21wbGV0ZWQgZnJvbQotc2VwYXJhdGUgc2V0cyBvZiBtYXRjaGVzCi1pcyBhIGRpZmZlcmVudCBw cm9ibGVtIHRvIGJlIHNvbHZlZCBieSB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlCi1jb21wbGV0 aW9uIHdpZGdldC4gIFRoZSBleGFtcGxlIGNhbiBiZSBoYW5kbGVkIGJ5OgotCi1leGFtcGxlKGNv bXBhZGQgLU0gJ3I6fC49KiByOnw9KicgXCAKLSAgLSBjb21wLnNvdXJjZXMudW5peCBjb21wLnNv dXJjZXMubWlzYyAuLi4pCi0KLVRoZSBmaXJzdCBzcGVjaWZpY2F0aW9uIHNheXMgdGhhdCB2YXIo bHBhdCkgaXMgdGhlIGVtcHR5IHN0cmluZywgd2hpbGUKLXZhcihhbmNob3IpIGlzIGEgZG90OyB2 YXIodHBhdCkgaXMgdHQoKiksIHNvIHRoaXMgY2FuIG1hdGNoIGFueXRoaW5nCi1leGNlcHQgZm9y IHRoZSBgdHQoLiknIGZyb20gdGhlIGFuY2hvciBpbgotdGhlIHRyaWFsIGNvbXBsZXRpb24gd29y ZC4gIFNvIGluIGB0dChjLnMudSknLCB0aGUgbWF0Y2hlciBzZWVzIGB0dChjKScsCi1mb2xsb3dl ZCBieSB0aGUgZW1wdHkgc3RyaW5nLCBmb2xsb3dlZCBieSB0aGUgYW5jaG9yIGB0dCguKScsIGFu ZAotbGlrZXdpc2UgZm9yIHRoZSBzZWNvbmQgZG90LCBhbmQgcmVwbGFjZXMgdGhlIGVtcHR5IHN0 cmluZ3MgYmVmb3JlIHRoZQotYW5jaG9ycywgZ2l2aW5nIGB0dChjKVt0dChvbXApXXR0KC5zKVt0 dChvdXJjZXMpXXR0KC51KVt0dChuaXgpXScsIHdoZXJlCi10aGUgbGFzdCBwYXJ0IG9mIHRoZSBj b21wbGV0aW9uIGlzIGp1c3QgYXMgbm9ybWFsLgotCi1XaXRoIHRoZSBwYXR0ZXJuIHNob3duIGFi b3ZlLCB0aGUgc3RyaW5nIGB0dChjLnUpJyBjb3VsZCBub3QgYmUKLWNvbXBsZXRlZCB0byBgdHQo Y29tcC5zb3VyY2VzLnVuaXgpJyBiZWNhdXNlIHRoZSBzaW5nbGUgc3RhciBtZWFucwotdGhhdCBu byBkb3QgKG1hdGNoZWQgYnkgdGhlIGFuY2hvcikgY2FuIGJlIHNraXBwZWQuIEJ5IHVzaW5nIHR3 byBzdGFycyAKLWFzIGluIGB0dChyOnwuPSoqKScsIGhvd2V2ZXIsIGB0dChjLnUpJyBjb3VsZCBi ZSBjb21wbGV0ZWQgdG8KLWB0dChjb21wLnNvdXJjZXMudW5peCknLiBUaGlzIGFsc28gc2hvd3Mg dGhhdCBpbiBzb21lIGNhc2VzLAotZXNwZWNpYWxseSBpZiB0aGUgYW5jaG9yIGlzIGEgcmVhbCBw YXR0ZXJuLCBsaWtlIGEgY2hhcmFjdGVyIGNsYXNzLAotdGhlIGZvcm0gd2l0aCB0d28gc3RhcnMg bWF5IHJlc3VsdCBpbiBtb3JlIG1hdGNoZXMgdGhhbiBvbmUgd291bGQgbGlrZS4KLQotVGhlIHNl Y29uZCBzcGVjaWZpY2F0aW9uIGlzIG5lZWRlZCB0byBtYWtlIHRoaXMgd29yayB3aGVuIHRoZSBj dXJzb3IgaXMKLWluIHRoZSBtaWRkbGUgb2YgdGhlIHN0cmluZyBvbiB0aGUgY29tbWFuZCBsaW5l IGFuZCB0aGUgb3B0aW9uCi10dChDT01QTEVURV9JTl9XT1JEKSBpcyBzZXQuIEluIHRoaXMgY2Fz ZSB0aGUgY29tcGxldGlvbiBjb2RlIHdvdWxkCi1ub3JtYWxseSB0cnkgdG8gbWF0Y2ggdHJpYWwg Y29tcGxldGlvbnMgdGhhdCBlbmQgd2l0aCB0aGUgc3RyaW5nIGFzCi10eXBlZCBzbyBmYXIsIGku ZS4gaXQgd2lsbCBvbmx5IGluc2VydCBuZXcgY2hhcmFjdGVycyBhdCB0aGUgY3Vyc29yCi1wb3Np dGlvbiByYXRoZXIgdGhhbiBhdCB0aGUgZW5kLiAgSG93ZXZlciBpbiBvdXIgZXhhbXBsZSB3ZSB3 b3VsZCBsaWtlCi10aGUgY29kZSB0byByZWNvZ25pc2UgbWF0Y2hlcyB3aGljaCBjb250YWluIGV4 dHJhIGNoYXJhY3RlcnMgYWZ0ZXIgdGhlCi1zdHJpbmcgb24gdGhlIGxpbmUgKHRoZSBgdHQobml4 KScgaW4gdGhlIGV4YW1wbGUpLiAgSGVuY2Ugd2Ugc2F5IHRoYXQgdGhlCi1lbXB0eSBzdHJpbmcg YXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nIG9uIHRoZSBsaW5lIG1hdGNoZXMgYW55IGNoYXJhY3Rl cnMKLWF0IHRoZSBlbmQgb2YgdGhlIHRyaWFsIGNvbXBsZXRpb24uCi0KLU1vcmUgZ2VuZXJhbGx5 LCB0aGUgc3BlY2lmaWNhdGlvbgotCi1leGFtcGxlKGNvbXBhZGQgLU0gJ3I6fFsuLF8tXT0qIHI6 fD0qJyAuLi4gKQotCi1hbGxvd3Mgb25lIHRvIGNvbXBsZXRlIHdvcmRzIHdpdGggYWJicmV2aWF0 aW9ucyBiZWZvcmUgYW55IG9mIHRoZQotY2hhcmFjdGVycyBpbiB0aGUgc3F1YXJlIGJyYWNrZXRz LiAgRm9yIGV4YW1wbGUsIHRvCi1jb21wbGV0ZSB0dCh2ZXJ5dmVyeWxvbmdmaWxlLmMpIHJhdGhl ciB0aGFuIHR0KHZlcnl2ZXJ5bG9uZ2hlYWRlci5oKQotd2l0aCB0aGUgYWJvdmUgaW4gZWZmZWN0 LCB5b3UgY2FuIGp1c3QgdHlwZSB0dCh2ZXJ5LmMpIGJlZm9yZSBhdHRlbXB0aW5nCi1jb21wbGV0 aW9uLgotCi1UaGUgc3BlY2lmaWNhdGlvbnMgd2l0aCBib3RoIGEgbGVmdCBhbmQgYSByaWdodCBh bmNob3IgYXJlIHVzZWZ1bCB0bwotY29tcGxldGUgcGFydGlhbCB3b3JkcyB3aG9zZSBwYXJ0cyBh cmUgbm90IHNlcGFyYXRlZCBieSBzb21lCi1zcGVjaWFsIGNoYXJhY3Rlci4gRm9yIGV4YW1wbGUs IGluIHNvbWUgcGxhY2VzIHN0cmluZ3MgaGF2ZSB0byBiZQotY29tcGxldGVkIHRoYXQgYXJlIGZv cm1lZCBgdHQoTGlrZVRoaXMpJyAoaS5lLiB0aGUgc2VwYXJhdGUgcGFydHMgYXJlCi1kZXRlcm1p bmVkIGJ5IGEgbGVhZGluZyB1cHBlciBjYXNlIGxldHRlcikgb3IgbWF5YmUgb25lIGhhcyB0bwot Y29tcGxldGUgc3RyaW5ncyB3aXRoIHRyYWlsaW5nIG51bWJlcnMuIEhlcmUgb25lIGNvdWxkIHVz ZSB0aGUgc2ltcGxlCi1mb3JtIHdpdGggb25seSBvbmUgYW5jaG9yIGFzIGluOgotCi1leGFtcGxl KGNvbXBhZGQgLU0gJ3I6fFtbOnVwcGVyOl0wLTldPSogcjp8PSonIExpa2VUSElTIEZvb0hvbyA1 Zm9vMTIzIDViYXIyMzQpCi0KLUJ1dCB3aXRoIHRoaXMsIHRoZSBzdHJpbmcgYHR0KEgpJyB3b3Vs ZCBuZWl0aGVyIGNvbXBsZXRlIHRvIGB0dChGb29Ib28pJwotbm9yIHRvIGB0dChMaWtlVEhJUykn IGJlY2F1c2UgaW4gZWFjaCBjYXNlIHRoZXJlIGlzIGFuIHVwcGVyIGNhc2UKLWxldHRlciBiZWZv cmUgdGhlIGB0dChIKScgYW5kIHRoYXQgaXMgbWF0Y2hlZCBieSB0aGUgYW5jaG9yLiBMaWtld2lz ZSwgCi1hIGB0dCgyKScgd291bGQgbm90IGJlIGNvbXBsZXRlZC4gSW4gYm90aCBjYXNlcyB0aGlz IGNvdWxkIGJlIGNoYW5nZWQKLWJ5IHVzaW5nIGB0dChyOnxbWzp1cHBlcjpdMC05XT0qKiknLCBi dXQgdGhlbiBgdHQoSCknIGNvbXBsZXRlcyB0byBib3RoCi1gdHQoTGlrZVRISVMpJyBhbmQgYHR0 KEZvb0hvbyknIGFuZCBhIGB0dCgyKScgbWF0Y2hlcyB0aGUgb3RoZXIKLXN0cmluZ3MgYmVjYXVz ZSBjaGFyYWN0ZXJzIGNhbiBiZSBpbnNlcnRlZCBiZWZvcmUgZXZlcnkgdXBwZXIgY2FzZQotbGV0 dGVyIGFuZCBkaWdpdC4gVG8gYXZvaWQgdGhpcyBvbmUgd291bGQgdXNlOgotCi1leGFtcGxlKGNv bXBhZGQgLU0gJ3I6W15bOnVwcGVyOl0wLTldfHxbWzp1cHBlcjpdMC05XT0qKiByOnw9KicgXCAK LSAgICBMaWtlVEhJUyBGb29Ib28gZm9vMTIzIGJhcjIzNCkKLQotQnkgdXNpbmcgdGhlc2UgdHdv IGFuY2hvcnMsIGEgYHR0KEgpJyBtYXRjaGVzIG9ubHkgdXBwZXIgY2FzZSBgdHQoSCkncyB0aGF0 IAotYXJlIGltbWVkaWF0ZWx5IHByZWNlZGVkIGJ5IHNvbWV0aGluZyBtYXRjaGluZyB0aGUgbGVm dCBhbmNob3IKLWB0dChbXls6dXBwZXI6XTAtOV0pJy4gVGhlIGVmZmVjdCBpcywgb2YgY291cnNl LCB0aGF0IGB0dChIKScgbWF0Y2hlcyBvbmx5Ci10aGUgc3RyaW5nIGB0dChGb29Ib28pJywgYSBg dHQoMiknIG1hdGNoZXMgb25seSBgdHQoYmFyMjM0KScgYW5kIHNvIG9uLgotCi1XaGVuIHVzaW5n IHRoZSBjb21wbGV0aW9uIHN5c3RlbSAoc2VlCi1pZnptYW4oem1hbnJlZih6c2hjb21wc3lzKSlc Ci1pZm56bWFuKG5vZGVyZWYoQ29tcGxldGlvbiBTeXN0ZW0pKVwKLSksIHVzZXJzIGNhbiBkZWZp bmUgbWF0Y2ggc3BlY2lmaWNhdGlvbnMgdGhhdCBhcmUgdG8gYmUgdXNlZCBmb3IKLXNwZWNpZmlj IGNvbnRleHRzIGJ5IHVzaW5nIHRoZSB0dChtYXRjaGVyKSBhbmQgdHQobWF0Y2hlci1saXN0KQot c3R5bGVzLiBUaGUgdmFsdWVzIGZvciB0aGUgbGF0dGVyIHdpbGwgYmUgdXNlZCBldmVyeXdoZXJl LgotCiB0ZXhpbm9kZShDb21wbGV0aW9uIFdpZGdldCBFeGFtcGxlKSgpKENvbXBsZXRpb24gTWF0 Y2hpbmcgQ29udHJvbCkoQ29tcGxldGlvbiBXaWRnZXRzKQogc2VjdChDb21wbGV0aW9uIFdpZGdl dCBFeGFtcGxlKQogY2luZGV4KGNvbXBsZXRpb24gd2lkZ2V0cywgZXhhbXBsZSkKZGlmZiAtLWdp dCBhL1Rlc3QvWTAyY29tcG1hdGNoLnp0c3QgYi9UZXN0L1kwMmNvbXBtYXRjaC56dHN0CmluZGV4 IDYyMTcwNzQ4Mi4uZWU3ZTQyMmMxIDEwMDY0NAotLS0gYS9UZXN0L1kwMmNvbXBtYXRjaC56dHN0 CisrKyBiL1Rlc3QvWTAyY29tcG1hdGNoLnp0c3QKQEAgLTM3OCwxNSArMzc4LDI2IEBACiAgIGNv bXAuZ3JhcGhpY3MucmVuZGVyaW5nLm1pc2MgY29tcC5ncmFwaGljcy5yZW5kZXJpbmcucmF5dHJh Y2luZwogICBjb21wLmdyYXBoaWNzLnJlbmRlcmluZy5yZW5kZXJtYW4pCiAgdGVzdF9jb2RlICRl eGFtcGxlNF9tYXRjaGVyIGV4YW1wbGU0X2xpc3QKLSBjb21wdGVzdCAkJ3RzdCBjLnMudVx0Jwot MDpEb2N1bWVudGF0aW9uIGV4YW1wbGUgdXNpbmcgaW5wdXQgYy5zLnUKKyBjb21wdGVzdCAkJ3Rz dCAucy51XHQnCiswOkRvY3VtZW50YXRpb24gZXhhbXBsZSB1c2luZyBpbnB1dCAucy51Cis+bGlu ZToge3RzdCBjb21wLnNvdXJjZXMudW5peCB9e30KKz5DT01QQUREOnt9Cis+SU5TRVJUX1BPU0lU SU9OUzp7MjF9CisKKyAgZXhhbXBsZTRiX21hdGNoZXI9J3I6W14uXXx8Lj0qIHI6fD0qJworIHRl c3RfY29kZSAkZXhhbXBsZTRiX21hdGNoZXIgZXhhbXBsZTRfbGlzdAorIGNvbXB0ZXN0ICQndHN0 IC5zLnVcdF5bYmNcdCcKKzBmOkRvY3VtZW50YXRpb24gZXhhbXBsZSB1c2luZyBpbnB1dCAucy51 IGJ1dCB3aXRoIGRvdWJsZSBhbmNob3IKKz5saW5lOiB7dHN0IC5zLnV9e30KKz5DT01QQUREOnt9 Cis+SU5TRVJUX1BPU0lUSU9OUzp7fQogPmxpbmU6IHt0c3QgY29tcC5zb3VyY2VzLnVuaXggfXt9 CiA+Q09NUEFERDp7fQogPklOU0VSVF9QT1NJVElPTlM6ezIxfQogCiAgdGVzdF9jb2RlICRleGFt cGxlNF9tYXRjaGVyIGV4YW1wbGU0X2xpc3QKLSBjb21wdGVzdCAkJ3RzdCBjLmcuXHRhXHQuXHRw XHRhXHRnXHQnCi0wOkRvY3VtZW50YXRpb24gZXhhbXBsZSB1c2luZyBpbnB1dCBjLmcuXHRhXHQu XHRwXHRhXHRnXHQKKyBjb21wdGVzdCAkJ3RzdCAuZy5cdGFcdC5cdHBcdGFcdGdcdCcKKzA6RG9j dW1lbnRhdGlvbiBleGFtcGxlIHVzaW5nIGlucHV0IC5nLlx0YVx0Llx0cFx0YVx0Z1x0CiA+bGlu ZToge3RzdCBjb21wLmdyYXBoaWNzLn17fQogPkNPTVBBREQ6e30KID5JTlNFUlRfUE9TSVRJT05T OnsxOH0KQEAgLTQyNCw5ICs0MzUsMzIgQEAKID5DT01QQUREOnt9CiA+SU5TRVJUX1BPU0lUSU9O Uzp7MzJ9CiAKKyB0ZXN0X2NvZGUgJGV4YW1wbGU0Yl9tYXRjaGVyIGV4YW1wbGU0X2xpc3QKKyBj b21wdGVzdCAkJ3RzdCAuZy5cdF5bYmNcdCcKKzBmOkRvY3VtZW50YXRpb24gZXhhbXBsZSB1c2lu ZyBpbnB1dCAuZy4gd2l0aCBkb3VibGUgYW5jaG9yCis+bGluZToge3RzdCAuZy59e30KKz5DT01Q QUREOnt9Cis+SU5TRVJUX1BPU0lUSU9OUzp7fQorPmxpbmU6IHt0c3QgY29tcC5ncmFwaGljcy59 e30KKz5DT01QQUREOnt9Cis+SU5TRVJUX1BPU0lUSU9OUzp7MTh9CisKICB0ZXN0X2NvZGUgJGV4 YW1wbGU0X21hdGNoZXIgZXhhbXBsZTRfbGlzdAotIGNvbXB0ZXN0ICQndHN0IGMuLi5wYWdcdCcK LTA6RG9jdW1lbnRhdGlvbiBleGFtcGxlIHVzaW5nIGlucHV0IGMuLi5wYWdcdAorIGNvbXB0ZXN0 ICQndHN0IC4uLnBhZ1x0JworMDpEb2N1bWVudGF0aW9uIGV4YW1wbGUgdXNpbmcgaW5wdXQgLi4u cGFnCis+bGluZToge3RzdCBjb21wLmdyYXBoaWNzLmFwcHMucGFnZW1ha2VyIH17fQorPkNPTVBB REQ6e30KKz5JTlNFUlRfUE9TSVRJT05TOnszMn0KKworIHRlc3RfY29kZSAkZXhhbXBsZTRiX21h dGNoZXIgZXhhbXBsZTRfbGlzdAorIGNvbXB0ZXN0ICQndHN0IC4uLnBhZ1x0XltiY1x0XkZnXkZe RmFcdCcKKzBmOkRvY3VtZW50YXRpb24gZXhhbXBsZSB1c2luZyBpbnB1dCAuLi5wYWcgd2l0aCBk b3VibGUgYW5jaG9yCis+bGluZToge3RzdCAuZy59e30KKz5DT01QQUREOnt9Cis+SU5TRVJUX1BP U0lUSU9OUzp7fQorPmxpbmU6IHt0c3QgYy4uLnBhZ317fQorPkNPTVBBREQ6e30KKz5JTlNFUlRf UE9TSVRJT05TOnt9CiA+bGluZToge3RzdCBjb21wLmdyYXBoaWNzLmFwcHMucGFnZW1ha2VyIH17 fQogPkNPTVBBREQ6e30KID5JTlNFUlRfUE9TSVRJT05TOnszMn0KQEAgLTQ0NCw4ICs0NzgsOCBA QAogIGV4YW1wbGU1X21hdGNoZXI9J3I6fFsuLF8tXT0qIHI6fD0qJwogIGV4YW1wbGU1X2xpc3Q9 KHZlcnl2ZXJ5bG9uZ2ZpbGUuYyB2ZXJ5dmVyeWxvbmdoZWFkZXIuaCkKICB0ZXN0X2NvZGUgJGV4 YW1wbGU1X21hdGNoZXIgZXhhbXBsZTVfbGlzdAotIGNvbXB0ZXN0ICQndHN0ICB2LmNcdHYuaFx0 JwotMDpEb2N1bWVudGF0aW9uIGV4YW1wbGUgdXNpbmcgaW5wdXQgdi5jXHQKKyBjb21wdGVzdCAk J3RzdCAgLmNcdC5oXHQnCiswOkRvY3VtZW50YXRpb24gZXhhbXBsZSB1c2luZyBpbnB1dCAuYwog PmxpbmU6IHt0c3QgIHZlcnl2ZXJ5bG9uZ2ZpbGUuYyB9e30KID5DT01QQUREOnt9CiA+SU5TRVJU X1BPU0lUSU9OUzp7MjN9CkBAIC00NTMsNiArNDg3LDIzIEBACiA+Q09NUEFERDp7fQogPklOU0VS VF9QT1NJVElPTlM6ezQ0fQogCisgZXhhbXBsZTViX21hdGNoZXI9J3I6W14uLF8tXXx8Wy4sXy1d PSogcjp8PSonCisgdGVzdF9jb2RlICRleGFtcGxlNWJfbWF0Y2hlciBleGFtcGxlNV9saXN0Cisg Y29tcHRlc3QgJCd0c3QgIC5jXHReW2J2XHQuaFx0XltidicKKzBmOkRvY3VtZW50YXRpb24gZXhh bXBsZSB1c2luZyBpbnB1dCAuYyBidXQgd2l0aCBkb3VibGUgYW5jaG9yCis+bGluZToge3RzdCAg LmN9e30KKz5DT01QQUREOnt9Cis+SU5TRVJUX1BPU0lUSU9OUzp7fQorPmxpbmU6IHt0c3QgIHZl cnl2ZXJ5bG9uZ2ZpbGUuYyB9e30KKz5DT01QQUREOnt9Cis+SU5TRVJUX1BPU0lUSU9OUzp7MjN9 Cis+bGluZToge3RzdCAgdmVyeXZlcnlsb25nZmlsZS5jIC5ofXt9Cis+Q09NUEFERDp7fQorPklO U0VSVF9QT1NJVElPTlM6e30KKz5saW5lOiB7dHN0ICB2ZXJ5dmVyeWxvbmdmaWxlLmMgdmVyeXZl cnlsb25naGVhZGVyLmggfXt9Cis+Q09NUEFERDp7fQorPklOU0VSVF9QT1NJVElPTlM6ezQ0fQor CiAKICBleGFtcGxlNl9saXN0PShMaWtlVEhJUyBGb29Ib28gNWZvbzEyMyA1YmFyMjM0KQogIHRl c3RfY29kZSAncjp8W0EtWjAtOV09KiByOnw9KicgZXhhbXBsZTZfbGlzdApAQCAtNDkzLDE1ICs1 NDQsNTIgQEAKICBleGFtcGxlN19tYXRjaGVyPSJyOlteQS1aMC05XXx8W0EtWjAtOV09Kiogcjp8 PSoiCiAgZXhhbXBsZTdfbGlzdD0oJGV4YW1wbGU2X2xpc3QpCiAgdGVzdF9jb2RlICRleGFtcGxl N19tYXRjaGVyIGV4YW1wbGU3X2xpc3QKLSBjb21wdGVzdCAkJ3RzdCBIXHQyXHQnCi0wOkRvY3Vt ZW50YXRpb24gZXhhbXBsZSB1c2luZyAicjpbXkEtWjAtOV18fFtBLVowLTldPSoqIHI6fD0qIgor IGNvbXB0ZXN0ICQndHN0IEhcdF5bYkZcdG8yXHReW2I1XHRiXHQnCiswZjpEb2N1bWVudGF0aW9u IGV4YW1wbGUgdXNpbmcgInI6W15BLVowLTldfHxbQS1aMC05XT0qKiByOnw9KiIKKz5saW5lOiB7 dHN0IEh9e30KKz5DT01QQUREOnt9Cis+SU5TRVJUX1BPU0lUSU9OUzp7fQorPmxpbmU6IHt0c3Qg Rn17SH0KKz5DT01QQUREOnt9Cis+SU5TRVJUX1BPU0lUSU9OUzp7fQogPmxpbmU6IHt0c3QgRm9v SG9vIH17fQogPkNPTVBBREQ6e30KID5JTlNFUlRfUE9TSVRJT05TOnsxMH0KKz5saW5lOiB7dHN0 IEZvb0hvbyAyfXt9Cis+Q09NUEFERDp7fQorPklOU0VSVF9QT1NJVElPTlM6e30KKz5saW5lOiB7 dHN0IEZvb0hvbyA1fXsyfQorPkNPTVBBREQ6e30KKz5JTlNFUlRfUE9TSVRJT05TOnt9CiA+bGlu ZToge3RzdCBGb29Ib28gNWJhcjIzNCB9e30KID5DT01QQUREOnt9CiA+SU5TRVJUX1BPU0lUSU9O Uzp7MTh9CiAKKyBleGFtcGxlN2JfbWF0Y2hlcj0icjo/fHxbQS1aMC05XT0qIHI6fD0qIgorIHRl c3RfY29kZSAkZXhhbXBsZTdiX21hdGNoZXIgZXhhbXBsZTdfbGlzdAorIGNvbXB0ZXN0ICQndHN0 IEhcdF5bYkYyXHReW2I1XHQnCiswZjpEb2N1bWVudGF0aW9uIGV4YW1wbGUgdXNpbmcgInI6P3x8 W0EtWjAtOV09KiByOnw9KiIKKz5saW5lOiB7dHN0IEh9e30KKz5DT01QQUREOnt9Cis+SU5TRVJU X1BPU0lUSU9OUzp7fQorPmxpbmU6IHt0c3QgRm9vSG9vIH17fQorPkNPTVBBREQ6e30KKz5JTlNF UlRfUE9TSVRJT05TOnsxMH0KKz5saW5lOiB7dHN0IEZvb0hvbyA1YmFyMjM0IH17fQorPkNPTVBB REQ6e30KKz5JTlNFUlRfUE9TSVRJT05TOnsxOH0KKworIGV4YW1wbGU4X2xpc3Q9KHBhc3N3ZC5i eW5hbWUpCisgdGVzdF9jb2RlICdyOlteLl18fC49KiBsOi58fFteLl09KicKKyBjb21wdGVzdCAk J3RzdCAuXkJcdHBhc3NeRm5hbWVcdCcKKzBmOlN5bW1ldHJ5IGJldHdlZW4gciBhbmQgbAorPmxp bmU6IHt0c3QgfXsufQorPkNPTVBBREQ6e30KKz5JTlNFUlRfUE9TSVRJT05TOnt9Cis+bGluZTog e3RzdCBwYXNzd2QuYnluYW1lIH17fQorPkNPTVBBREQ6e30KKz5JTlNFUlRfUE9TSVRJT05TOnsx N30KKwogCiAgd29ya2Vyc183MzExX21hdGNoZXI9Im06e2Eten09e0EtWn0gcjp8Wy4sXy1dPSog cjp8PSoiCiAgd29ya2Vyc183MzExX2xpc3Q9KEFiYy1EZWYtR2hpai50eHQgQWJjLWRlZi5naGku amtsX21uby5wcXIudHh0IEFiY19kZWZfZ2hpX2prbF9tbm9fcHFyLnR4dCkKLS0gCjIuMzMuMAoK --0000000000004d5c2105ce26b7c1--