From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.2 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id ACE8CC433DB for ; Fri, 26 Mar 2021 06:57:34 +0000 (UTC) Received: from smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 45C7061A3F for ; Fri, 26 Mar 2021 06:57:34 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 45C7061A3F Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=leemhuis.info Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=ksummit-discuss-bounces@lists.linuxfoundation.org Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id 06CBB84BD0; Fri, 26 Mar 2021 06:57:34 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp1.osuosl.org ([127.0.0.1]) by localhost (smtp1.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id dB0L14GuoP9V; Fri, 26 Mar 2021 06:57:31 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [IPv6:2605:bc80:3010:104::8cd3:938]) by smtp1.osuosl.org (Postfix) with ESMTP id AC1D984BAF; Fri, 26 Mar 2021 06:57:30 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 74F95C000E; Fri, 26 Mar 2021 06:57:30 +0000 (UTC) Received: from smtp2.osuosl.org (smtp2.osuosl.org [140.211.166.133]) by lists.linuxfoundation.org (Postfix) with ESMTP id A14A4C000A for ; Fri, 26 Mar 2021 06:57:29 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp2.osuosl.org (Postfix) with ESMTP id 8FD5B40239 for ; Fri, 26 Mar 2021 06:57:29 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp2.osuosl.org ([127.0.0.1]) by localhost (smtp2.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id dNG2ytjkx5-H for ; Fri, 26 Mar 2021 06:57:27 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.8.0 Received: from wp530.webpack.hosteurope.de (wp530.webpack.hosteurope.de [IPv6:2a01:488:42:1000:50ed:8234::]) by smtp2.osuosl.org (Postfix) with ESMTPS id EC7B440238 for ; Fri, 26 Mar 2021 06:57:26 +0000 (UTC) Received: from ip4d142c50.dynamic.kabel-deutschland.de ([77.20.44.80] helo=[192.168.66.200]); authenticated by wp530.webpack.hosteurope.de running ExIM with esmtpsa (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) id 1lPgPM-0000nI-VO; Fri, 26 Mar 2021 07:57:25 +0100 From: Thorsten Leemhuis To: ksummit References: Message-ID: <9610f0bc-3e84-7670-5ce3-20dd7bacdac6@leemhuis.info> Date: Fri, 26 Mar 2021 07:57:24 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.0 MIME-Version: 1.0 In-Reply-To: Content-Language: en-BS X-bounce-key: webpack.hosteurope.de;linux@leemhuis.info;1616741847;b0d0fdf9; X-HE-SMSGID: 1lPgPM-0000nI-VO Subject: [Ksummit-discuss] [3a/5] reporting-issues: reference section, main guide X-BeenThere: ksummit-discuss@lists.linuxfoundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ksummit-discuss-bounces@lists.linuxfoundation.org Sender: "Ksummit-discuss" T24gMjYuMDMuMjEgMDc6MTMsIFRob3JzdGVuIExlZW1odWlzIHdyb3RlOgo+IAo+IExvISBTaW5j ZSBhIGZldyBtb250aHMgbWFpbmxpbmUgaW4KPiBEb2N1bWVudGF0aW9uL2FkbWluLWd1aWRlL3Jl cG9ydGluZy1pc3N1ZXMucnN0IGNvbnRhaW5zIGEgdGV4dCB3cml0dGVuCj4gdG8gb2Jzb2xldGUg dGhlIGdvb2Qgb2xkIHJlcG9ydGluZy1idWdzIHRleHQuIEZvciBub3csIHRoZSBuZXcgZG9jdW1l bnQKPiBzdGlsbCBjb250YWlucyBhIHdhcm5pbmcgYXQgdGhlIHRvcCB0aGF0IGJhc2ljYWxseSBz YXlzICJ0aGlzIGlzIFdJUCIuCj4gQnV0IEknZCBsaWtlIHRvIHJlbW92ZSB0aGF0IHdhcm5pbmcg YW5kIGRlbGV0ZSByZXBvcnRpbmctYnVncy5yc3QgaW4gdGhlCj4gbmV4dCBtZXJnZSB3aW5kb3cg dG8gbWFrZSByZXBvcnRpbmctaXNzdWVzLnJzdCBmdWxseSBvZmZpY2lhbC4gV2l0aCB0aGlzCj4g bWFpbCBJIHdhbnQgdG8gZ2l2ZSBldmVyeW9uZSBhIGNoYW5jZSB0byB0YWtlIGEgbG9vayBhdCB0 aGUgdGV4dCBhbmQKPiBzcGVhayB1cCBpZiB5b3UgZG9uJ3Qgd2FudCBtZSB0byBtb3ZlIGFoZWFk IGZvciBub3cuCj4gCj4gRm9yIGVhc2llciByZXZpZXcgSSdsbCBwb3N0IHRoZSB0ZXh0IG9mIHJl cG9ydGluZy1pc3N1ZXMucnN0IGluIHJlcGx5IHRvCj4gdGhpcyBtYWlsLiBJJ2xsIGRvIHRoYXQg aW4gYSBmZXcgY2h1bmtzLCBhcyBpZiB0aGlzIHdhcyBhIGNvdmVyIGxldHRlcgo+IGZvciBhIHBh dGNoLXNldC4gCgpQYXJ0IDMgd2FzIHRvIGJpZyBmb3Iga3N1bW1pdC1kaXNjdXNzLCBzbyBoZXJl IGl0IGlzIHRoZSBmaXJzdCBoYWxmIG9mIGl0OgoKUmVmZXJlbmNlIHNlY3Rpb246IFJlcG9ydGlu ZyBpc3N1ZXMgdG8gdGhlIGtlcm5lbCBtYWludGFpbmVycwoKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKCgpUaGUgZGV0YWlsZWQg Z3VpZGVzIGFib3ZlIG91dGxpbmUgYWxsIHRoZSBtYWpvciBzdGVwcyBpbiBicmllZiBmYXNoaW9u LCB3aGljaAoKc2hvdWxkIGJlIGVub3VnaCBmb3IgbW9zdCBwZW9wbGUuIEJ1dCBzb21ldGltZXMg dGhlcmUgYXJlIHNpdHVhdGlvbnMgd2hlcmUgZXZlbgoKZXhwZXJpZW5jZWQgdXNlcnMgbWlnaHQg d29uZGVyIGhvdyB0byBhY3R1YWxseSBkbyBvbmUgb2YgdGhvc2Ugc3RlcHMuIFRoYXQncwoKd2hh dCB0aGlzIHNlY3Rpb24gaXMgZm9yLCBhcyBpdCB3aWxsIHByb3ZpZGUgYSBsb3QgbW9yZSBkZXRh aWxzIG9uIGVhY2ggb2YgdGhlCgphYm92ZSBzdGVwcy4gQ29uc2lkZXIgdGhpcyBhcyByZWZlcmVu Y2UgZG9jdW1lbnRhdGlvbjogaXQncyBwb3NzaWJsZSB0byByZWFkIGl0Cgpmcm9tIHRvcCB0byBi b3R0b20uIEJ1dCBpdCdzIG1haW5seSBtZWFudCB0byBza2ltIG92ZXIgYW5kIGEgcGxhY2UgdG8g bG9vayB1cAoKZGV0YWlscyBob3cgdG8gYWN0dWFsbHkgcGVyZm9ybSB0aG9zZSBzdGVwcy4KCgoK QSBmZXcgd29yZHMgb2YgZ2VuZXJhbCBhZHZpY2UgYmVmb3JlIGRpZ2dpbmcgaW50byB0aGUgZGV0 YWlsczoKCgoKICogVGhlIExpbnV4IGtlcm5lbCBkZXZlbG9wZXJzIGFyZSB3ZWxsIGF3YXJlIHRo aXMgcHJvY2VzcyBpcyBjb21wbGljYXRlZCBhbmQKCiAgIGRlbWFuZHMgbW9yZSB0aGFuIG90aGVy IEZMT1NTIHByb2plY3RzLiBXZSdkIGxvdmUgdG8gbWFrZSBpdCBzaW1wbGVyLiBCdXQKCiAgIHRo YXQgd291bGQgcmVxdWlyZSB3b3JrIGluIHZhcmlvdXMgcGxhY2VzIGFzIHdlbGwgYXMgc29tZSBp bmZyYXN0cnVjdHVyZSwKCiAgIHdoaWNoIHdvdWxkIG5lZWQgY29uc3RhbnQgbWFpbnRlbmFuY2U7 IG5vYm9keSBoYXMgc3RlcHBlZCB1cCB0byBkbyB0aGF0CgogICB3b3JrLCBzbyB0aGF0J3MganVz dCBob3cgdGhpbmdzIGFyZSBmb3Igbm93LgoKCgogKiBBIHdhcnJhbnR5IG9yIHN1cHBvcnQgY29u dHJhY3Qgd2l0aCBzb21lIHZlbmRvciBkb2Vzbid0IGVudGl0bGUgeW91IHRvCgogICByZXF1ZXN0 IGZpeGVzIGZyb20gZGV2ZWxvcGVycyBpbiB0aGUgdXBzdHJlYW0gTGludXgga2VybmVsIGNvbW11 bml0eTogc3VjaAoKICAgY29udHJhY3RzIGFyZSBjb21wbGV0ZWx5IG91dHNpZGUgdGhlIHNjb3Bl IG9mIHRoZSBMaW51eCBrZXJuZWwsIGl0cwoKICAgZGV2ZWxvcG1lbnQgY29tbXVuaXR5LCBhbmQg dGhpcyBkb2N1bWVudC4gVGhhdCdzIHdoeSB5b3UgY2FuJ3QgZGVtYW5kCgogICBhbnl0aGluZyBz dWNoIGEgY29udHJhY3QgZ3VhcmFudGVlcyBpbiB0aGlzIGNvbnRleHQsIG5vdCBldmVuIGlmIHRo ZQoKICAgZGV2ZWxvcGVyIGhhbmRsaW5nIHRoZSBpc3N1ZSB3b3JrcyBmb3IgdGhlIHZlbmRvciBp biBxdWVzdGlvbi4gSWYgeW91IHdhbnQKCiAgIHRvIGNsYWltIHlvdXIgcmlnaHRzLCB1c2UgdGhl IHZlbmRvcidzIHN1cHBvcnQgY2hhbm5lbCBpbnN0ZWFkLiBXaGVuIGRvaW5nCgogICBzbywgeW91 IG1pZ2h0IHdhbnQgdG8gbWVudGlvbiB5b3UnZCBsaWtlIHRvIHNlZSB0aGUgaXNzdWUgZml4ZWQg aW4gdGhlCgogICB1cHN0cmVhbSBMaW51eCBrZXJuZWw7IG1vdGl2YXRlIHRoZW0gYnkgc2F5aW5n IGl0J3MgdGhlIG9ubHkgd2F5IHRvIGVuc3VyZQoKICAgdGhlIGZpeCBpbiB0aGUgZW5kIHdpbGwg Z2V0IGluY29ycG9yYXRlZCBpbiBhbGwgTGludXggZGlzdHJpYnV0aW9ucy4KCgoKICogSWYgeW91 IG5ldmVyIHJlcG9ydGVkIGFuIGlzc3VlIHRvIGEgRkxPU1MgcHJvamVjdCBiZWZvcmUgeW91IHNo b3VsZCBjb25zaWRlcgoKICAgcmVhZGluZyBgSG93IHRvIFJlcG9ydCBCdWdzIEVmZmVjdGl2ZWx5 CgogICA8aHR0cHM6Ly93d3cuY2hpYXJrLmdyZWVuZW5kLm9yZy51ay9+c2d0YXRoYW0vYnVncy5o dG1sPmBfLCBgSG93IFRvIEFzawoKICAgUXVlc3Rpb25zIFRoZSBTbWFydCBXYXkKCiAgIDxodHRw Oi8vd3d3LmNhdGIub3JnL2Vzci9mYXFzL3NtYXJ0LXF1ZXN0aW9ucy5odG1sPmBfLCBhbmQgYEhv dyB0byBhc2sgZ29vZAoKICAgcXVlc3Rpb25zIDxodHRwczovL2p2bnMuY2EvYmxvZy9nb29kLXF1 ZXN0aW9ucy8+YF8uCgoKCldpdGggdGhhdCBvZmYgdGhlIHRhYmxlLCBmaW5kIGJlbG93IHRoZSBk ZXRhaWxzIG9uIGhvdyB0byBwcm9wZXJseSByZXBvcnQKCmlzc3VlcyB0byB0aGUgTGludXgga2Vy bmVsIGRldmVsb3BlcnMuCgoKCgoKTWFrZSBzdXJlIHlvdSdyZSB1c2luZyB0aGUgdXBzdHJlYW0g TGludXgga2VybmVsCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KCgoKICAgKkFyZSB5b3UgZmFjaW5nIGFuIGlzc3VlIHdpdGggYSBMaW51eCBrZXJuZWwg YSBoYXJkd2FyZSBvciBzb2Z0d2FyZSB2ZW5kb3IKCiAgIHByb3ZpZGVkPyBUaGVuIGluIGFsbW9z dCBhbGwgY2FzZXMgeW91IGFyZSBiZXR0ZXIgb2ZmIHRvIHN0b3AgcmVhZGluZyB0aGlzCgogICBk b2N1bWVudCBhbmQgcmVwb3J0aW5nIHRoZSBpc3N1ZSB0byB5b3VyIHZlbmRvciBpbnN0ZWFkLCB1 bmxlc3MgeW91IGFyZQoKICAgd2lsbGluZyB0byBpbnN0YWxsIHRoZSBsYXRlc3QgTGludXggdmVy c2lvbiB5b3Vyc2VsZi4gQmUgYXdhcmUgdGhlIGxhdHRlcgoKICAgd2lsbCBvZnRlbiBiZSBuZWVk ZWQgYW55d2F5IHRvIGh1bnQgZG93biBhbmQgZml4IGlzc3Vlcy4qCgoKCkxpa2UgbW9zdCBwcm9n cmFtbWVycywgTGludXgga2VybmVsIGRldmVsb3BlcnMgZG9uJ3QgbGlrZSB0byBzcGVuZCB0aW1l IGRlYWxpbmcKCndpdGggcmVwb3J0cyBmb3IgaXNzdWVzIHRoYXQgZG9uJ3QgZXZlbiBoYXBwZW4g d2l0aCB0aGVpciBjdXJyZW50IGNvZGUuIEl0J3MKCmp1c3QgYSB3YXN0ZSBldmVyeWJvZHkncyB0 aW1lLCBlc3BlY2lhbGx5IHlvdXJzLiBVbmZvcnR1bmF0ZWx5IHN1Y2ggc2l0dWF0aW9ucwoKZWFz aWx5IGhhcHBlbiB3aGVuIGl0IGNvbWVzIHRvIHRoZSBrZXJuZWwgYW5kIG9mdGVuIGxlYWRzIHRv IGZydXN0cmF0aW9uIG9uIGJvdGgKCnNpZGVzLiBUaGF0J3MgYmVjYXVzZSBhbG1vc3QgYWxsIExp bnV4LWJhc2VkIGtlcm5lbHMgcHJlLWluc3RhbGxlZCBvbiBkZXZpY2VzCgooQ29tcHV0ZXJzLCBM YXB0b3BzLCBTbWFydHBob25lcywgUm91dGVycywg4oCmKSBhbmQgbW9zdCBzaGlwcGVkIGJ5IExp bnV4CgpkaXN0cmlidXRvcnMgYXJlIHF1aXRlIGRpc3RhbnQgZnJvbSB0aGUgb2ZmaWNpYWwgTGlu dXgga2VybmVsIGFzIGRpc3RyaWJ1dGVkIGJ5CgprZXJuZWwub3JnOiB0aGVzZSBrZXJuZWxzIGZy b20gdGhlc2UgdmVuZG9ycyBhcmUgb2Z0ZW4gYW5jaWVudCBmcm9tIHRoZSBwb2ludCBvZgoKTGlu dXggZGV2ZWxvcG1lbnQgb3IgaGVhdmlseSBtb2RpZmllZCwgb2Z0ZW4gYm90aC4KCgoKTW9zdCBv ZiB0aGVzZSB2ZW5kb3Iga2VybmVscyBhcmUgcXVpdGUgdW5zdWl0YWJsZSBmb3IgcmVwb3J0aW5n IGJ1Z3MgdG8gdGhlCgpMaW51eCBrZXJuZWwgZGV2ZWxvcGVyczogYW4gaXNzdWUgeW91IGZhY2Ug d2l0aCBvbmUgb2YgdGhlbSBtaWdodCBoYXZlIGJlZW4KCmZpeGVkIGJ5IHRoZSBMaW51eCBrZXJu ZWwgZGV2ZWxvcGVycyBtb250aHMgb3IgeWVhcnMgYWdvIGFscmVhZHk7IGFkZGl0aW9uYWxseSwK CnRoZSBtb2RpZmljYXRpb25zIGFuZCBlbmhhbmNlbWVudHMgYnkgdGhlIHZlbmRvciBtaWdodCBi ZSBjYXVzaW5nIHRoZSBpc3N1ZSB5b3UKCmZhY2UsIGV2ZW4gaWYgdGhleSBsb29rIHNtYWxsIG9y IHRvdGFsbHkgdW5yZWxhdGVkLiBUaGF0J3Mgd2h5IHlvdSBzaG91bGQgcmVwb3J0Cgppc3N1ZXMg d2l0aCB0aGVzZSBrZXJuZWxzIHRvIHRoZSB2ZW5kb3IuIEl0cyBkZXZlbG9wZXJzIHNob3VsZCBs b29rIGludG8gdGhlCgpyZXBvcnQgYW5kLCBpbiBjYXNlIGl0IHR1cm5zIG91dCB0byBiZSBhbiB1 cHN0cmVhbSBpc3N1ZSwgZml4IGl0IGRpcmVjdGx5Cgp1cHN0cmVhbSBvciBmb3J3YXJkIHRoZSBy ZXBvcnQgdGhlcmUuIEluIHByYWN0aWNlIHRoYXQgb2Z0ZW4gZG9lcyBub3Qgd29yayBvdXQKCm9y IG1pZ2h0IG5vdCB3aGF0IHlvdSB3YW50LiBZb3UgdGh1cyBtaWdodCB3YW50IHRvIGNvbnNpZGVy IGNpcmN1bXZlbnRpbmcgdGhlCgp2ZW5kb3IgYnkgaW5zdGFsbGluZyB0aGUgdmVyeSBsYXRlc3Qg TGludXgga2VybmVsIGNvcmUgeW91cnNlbGYuIElmIHRoYXQncyBhbgoKb3B0aW9uIGZvciB5b3Ug bW92ZSBhaGVhZCBpbiB0aGlzIHByb2Nlc3MsIGFzIGEgbGF0ZXIgc3RlcCBpbiB0aGlzIGd1aWRl IHdpbGwKCmV4cGxhaW4gaG93IHRvIGRvIHRoYXQgb25jZSBpdCBydWxlcyBvdXQgb3RoZXIgcG90 ZW50aWFsIGNhdXNlcyBmb3IgeW91ciBpc3N1ZS4KCgoKTm90ZSwgdGhlIHByZXZpb3VzIHBhcmFn cmFwaCBpcyBzdGFydGluZyB3aXRoIHRoZSB3b3JkICdtb3N0JywgYXMgc29tZXRpbWVzCgpkZXZl bG9wZXJzIGluIGZhY3QgYXJlIHdpbGxpbmcgdG8gaGFuZGxlIHJlcG9ydHMgYWJvdXQgaXNzdWVz IG9jY3VycmluZyB3aXRoCgp2ZW5kb3Iga2VybmVscy4gSWYgdGhleSBkbyBpbiB0aGUgZW5kIGhp Z2hseSBkZXBlbmRzIG9uIHRoZSBkZXZlbG9wZXJzIGFuZCB0aGUKCmlzc3VlIGluIHF1ZXN0aW9u LiBZb3VyIGNoYW5jZXMgYXJlIHF1aXRlIGdvb2QgaWYgdGhlIGRpc3RyaWJ1dG9yIGFwcGxpZWQg b25seQoKc21hbGwgbW9kaWZpY2F0aW9ucyB0byBhIGtlcm5lbCBiYXNlZCBvbiBhIHJlY2VudCBM aW51eCB2ZXJzaW9uOyB0aGF0IGZvcgoKZXhhbXBsZSBvZnRlbiBob2xkcyB0cnVlIGZvciB0aGUg bWFpbmxpbmUga2VybmVscyBzaGlwcGVkIGJ5IERlYmlhbiBHTlUvTGludXgKClNpZCBvciBGZWRv cmEgUmF3aGlkZS4gU29tZSBkZXZlbG9wZXJzIHdpbGwgYWxzbyBhY2NlcHQgcmVwb3J0cyBhYm91 dCBpc3N1ZXMKCndpdGgga2VybmVscyBmcm9tIGRpc3RyaWJ1dGlvbnMgc2hpcHBpbmcgdGhlIGxh dGVzdCBzdGFibGUga2VybmVsLCBhcyBsb25nIGFzCgppdHMgb25seSBzbGlnaHRseSBtb2RpZmll ZDsgdGhhdCBmb3IgZXhhbXBsZSBpcyBvZnRlbiB0aGUgY2FzZSBmb3IgQXJjaCBMaW51eCwKCnJl Z3VsYXIgRmVkb3JhIHJlbGVhc2VzLCBhbmQgb3BlblNVU0UgVHVtYmxld2VlZC4gQnV0IGtlZXAg aW4gbWluZCwgeW91IGJldHRlcgoKd2FudCB0byB1c2UgYSBtYWlubGluZSBMaW51eCBhbmQgYXZv aWQgdXNpbmcgYSBzdGFibGUga2VybmVsIGZvciB0aGlzCgpwcm9jZXNzLCBhcyBvdXRsaW5lZCBp biB0aGUgc2VjdGlvbiAnSW5zdGFsbCBhIGZyZXNoIGtlcm5lbCBmb3IgdGVzdGluZycgaW4gbW9y ZQoKZGV0YWlsLgoKCgpPYnZpb3VzbHkgeW91IGFyZSBmcmVlIHRvIGlnbm9yZSBhbGwgdGhpcyBh ZHZpY2UgYW5kIHJlcG9ydCBwcm9ibGVtcyB3aXRoIGFuIG9sZAoKb3IgaGVhdmlseSBtb2RpZmll ZCB2ZW5kb3Iga2VybmVsIHRvIHRoZSB1cHN0cmVhbSBMaW51eCBkZXZlbG9wZXJzLiBCdXQgbm90 ZSwKCnRob3NlIG9mdGVuIGdldCByZWplY3RlZCBvciBpZ25vcmVkLCBzbyBjb25zaWRlciB5b3Vy c2VsZiB3YXJuZWQuIEJ1dCBpdCdzIHN0aWxsCgpiZXR0ZXIgdGhhbiBub3QgcmVwb3J0aW5nIHRo ZSBpc3N1ZSBhdCBhbGw6IHNvbWV0aW1lcyBzdWNoIHJlcG9ydHMgZGlyZWN0bHkgb3IKCmluZGly ZWN0bHkgd2lsbCBoZWxwIHRvIGdldCB0aGUgaXNzdWUgZml4ZWQgb3ZlciB0aW1lLgoKCgoKClNl YXJjaCBmb3IgZXhpc3RpbmcgcmVwb3J0cywgZmlyc3QgcnVuCgotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQoKCgogICAqUGVyZm9ybSBhIHJvdWdoIHNlYXJjaCBmb3IgZXhp c3RpbmcgcmVwb3J0cyB3aXRoIHlvdXIgZmF2b3JpdGUgaW50ZXJuZXQKCiAgIHNlYXJjaCBlbmdp bmU7IGFkZGl0aW9uYWxseSwgY2hlY2sgdGhlIGFyY2hpdmVzIG9mIHRoZSBMaW51eCBLZXJuZWwg TWFpbGluZwoKICAgTGlzdCAoTEtNTCkuIElmIHlvdSBmaW5kIG1hdGNoaW5nIHJlcG9ydHMsIGpv aW4gdGhlIGRpc2N1c3Npb24gaW5zdGVhZCBvZgoKICAgc2VuZGluZyBhIG5ldyBvbmUuKgoKCgpS ZXBvcnRpbmcgYW4gaXNzdWUgdGhhdCBzb21lb25lIGVsc2UgYWxyZWFkeSBicm91Z2h0IGZvcndh cmQgaXMgb2Z0ZW4gYSB3YXN0ZSBvZgoKdGltZSBmb3IgZXZlcnlvbmUgaW52b2x2ZWQsIGVzcGVj aWFsbHkgeW91IGFzIHRoZSByZXBvcnRlci4gU28gaXQncyBpbiB5b3VyIG93bgoKaW50ZXJlc3Qg dG8gdGhvcm91Z2hseSBjaGVjayBpZiBzb21lYm9keSByZXBvcnRlZCB0aGUgaXNzdWUgYWxyZWFk eS4gQXQgdGhpcwoKc3RlcCBvZiB0aGUgcHJvY2VzcyBpdCdzIG9rYXkgdG8ganVzdCBwZXJmb3Jt IGEgcm91Z2ggc2VhcmNoOiBhIGxhdGVyIHN0ZXAgd2lsbAoKdGVsbCB5b3UgdG8gcGVyZm9ybSBh IG1vcmUgZGV0YWlsZWQgc2VhcmNoIG9uY2UgeW91IGtub3cgd2hlcmUgeW91ciBpc3N1ZSBuZWVk cwoKdG8gYmUgcmVwb3J0ZWQgdG8uIE5ldmVydGhlbGVzcywgZG8gbm90IGh1cnJ5IHdpdGggdGhp cyBzdGVwIG9mIHRoZSByZXBvcnRpbmcKCnByb2Nlc3MsIGl0IGNhbiBzYXZlIHlvdSB0aW1lIGFu ZCB0cm91YmxlLgoKCgpTaW1wbHkgc2VhcmNoIHRoZSBpbnRlcm5ldCB3aXRoIHlvdXIgZmF2b3Jp dGUgc2VhcmNoIGVuZ2luZSBmaXJzdC4gQWZ0ZXJ3YXJkcywKCnNlYXJjaCB0aGUgYExpbnV4IEtl cm5lbCBNYWlsaW5nIExpc3QgKExLTUwpIGFyY2hpdmVzCgo8aHR0cHM6Ly9sb3JlLmtlcm5lbC5v cmcvbGttbC8+YF8uCgoKCklmIHlvdSBnZXQgZmxvb2RlZCB3aXRoIHJlc3VsdHMgY29uc2lkZXIg dGVsbGluZyB5b3VyIHNlYXJjaCBlbmdpbmUgdG8gbGltaXQKCnNlYXJjaCB0aW1lZnJhbWUgdG8g dGhlIHBhc3QgbW9udGggb3IgeWVhci4gQW5kIHdoZXJldmVyIHlvdSBzZWFyY2gsIG1ha2Ugc3Vy ZQoKdG8gdXNlIGdvb2Qgc2VhcmNoIHRlcm1zOyB2YXJ5IHRoZW0gYSBmZXcgdGltZXMsIHRvby4g V2hpbGUgZG9pbmcgc28gdHJ5IHRvCgpsb29rIGF0IHRoZSBpc3N1ZSBmcm9tIHRoZSBwZXJzcGVj dGl2ZSBvZiBzb21lb25lIGVsc2U6IHRoYXQgd2lsbCBoZWxwIHlvdSB0bwoKY29tZSB1cCB3aXRo IG90aGVyIHdvcmRzIHRvIHVzZSBhcyBzZWFyY2ggdGVybXMuIEFsc28gbWFrZSBzdXJlIG5vdCB0 byB1c2UgdG9vCgptYW55IHNlYXJjaCB0ZXJtcyBhdCBvbmNlLiBSZW1lbWJlciB0byBzZWFyY2gg d2l0aCBhbmQgd2l0aG91dCBpbmZvcm1hdGlvbiBsaWtlCgp0aGUgbmFtZSBvZiB0aGUga2VybmVs IGRyaXZlciBvciB0aGUgbmFtZSBvZiB0aGUgYWZmZWN0ZWQgaGFyZHdhcmUgY29tcG9uZW50LgoK QnV0IGl0cyBleGFjdCBicmFuZCBuYW1lIChzYXkgJ0FTVVMgUmVkIERldmlsIFJhZGVvbiBSWCA1 NzAwIFhUIEdhbWluZyBPQycpCgpvZnRlbiBpcyBub3QgbXVjaCBoZWxwZnVsLCBhcyBpdCBpcyB0 b28gc3BlY2lmaWMuIEluc3RlYWQgdHJ5IHNlYXJjaCB0ZXJtcyBsaWtlCgp0aGUgbW9kZWwgbGlu ZSAoUmFkZW9uIDU3MDAgb3IgUmFkZW9uIDUwMDApIGFuZCB0aGUgY29kZSBuYW1lIG9mIHRoZSBt YWluIGNoaXAKCignTmF2aScgb3IgJ05hdmkxMCcpIHdpdGggYW5kIHdpdGhvdXQgaXRzIG1hbnVm YWN0dXJlciAoJ0FNRCcpLgoKCgpJbiBjYXNlIHlvdSBmaW5kIGFuIGV4aXN0aW5nIHJlcG9ydCBh Ym91dCB5b3VyIGlzc3VlLCBqb2luIHRoZSBkaXNjdXNzaW9uLCBhcwoKeW91IG1pZ2h0IGJlIGFi bGUgdG8gcHJvdmlkZSB2YWx1YWJsZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLiBUaGF0IGNhbiBi ZQoKaW1wb3J0YW50IGV2ZW4gd2hlbiBhIGZpeCBpcyBwcmVwYXJlZCBvciBpbiBpdHMgZmluYWwg c3RhZ2VzIGFscmVhZHksIGFzCgpkZXZlbG9wZXJzIG1pZ2h0IGxvb2sgZm9yIHBlb3BsZSB0aGF0 IGNhbiBwcm92aWRlIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb3IKCnRlc3QgYSBwcm9wb3NlZCBm aXguIEp1bXAgdG8gdGhlIHNlY3Rpb24gJ0R1dGllcyBhZnRlciB0aGUgcmVwb3J0IHdlbnQgb3V0 JyBmb3IKCmRldGFpbHMgb24gaG93IHRvIGdldCBwcm9wZXJseSBpbnZvbHZlZC4KCgoKTm90ZSwg c2VhcmNoaW5nIGBidWd6aWxsYS5rZXJuZWwub3JnIDxodHRwczovL2J1Z3ppbGxhLmtlcm5lbC5v cmcvPmBfIG1pZ2h0IGFsc28KCmJlIGEgZ29vZCBpZGVhLCBhcyB0aGF0IG1pZ2h0IHByb3ZpZGUg dmFsdWFibGUgaW5zaWdodHMgb3IgdHVybiB1cCBtYXRjaGluZwoKcmVwb3J0cy4gSWYgeW91IGZp bmQgdGhlIGxhdHRlciwganVzdCBrZWVwIGluIG1pbmQ6IG1vc3Qgc3Vic3lzdGVtcyBleHBlY3QK CnJlcG9ydHMgaW4gZGlmZmVyZW50IHBsYWNlcywgYXMgZGVzY3JpYmVkIGJlbG93IGluIHRoZSBz ZWN0aW9uICJDaGVjayB3aGVyZSB5b3UKCm5lZWQgdG8gcmVwb3J0IHlvdXIgaXNzdWUiLiBUaGUg ZGV2ZWxvcGVycyB0aGF0IHNob3VsZCB0YWtlIGNhcmUgb2YgdGhlIGlzc3VlCgp0aHVzIG1pZ2h0 IG5vdCBldmVuIGJlIGF3YXJlIG9mIHRoZSBidWd6aWxsYSB0aWNrZXQuIEhlbmNlLCBjaGVjayB0 aGUgdGlja2V0IGlmCgp0aGUgaXNzdWUgYWxyZWFkeSBnb3QgcmVwb3J0ZWQgYXMgb3V0bGluZWQg aW4gdGhpcyBkb2N1bWVudCBhbmQgaWYgbm90IGNvbnNpZGVyCgpkb2luZyBzby4KCgoKCgpJc3N1 ZSBvZiBoaWdoIHByaW9yaXR5PwoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgoKICAgICpTZWUg aWYgdGhlIGlzc3VlIHlvdSBhcmUgZGVhbGluZyB3aXRoIHF1YWxpZmllcyBhcyByZWdyZXNzaW9u LCBzZWN1cml0eQoKICAgIGlzc3VlLCBvciBhIHJlYWxseSBzZXZlcmUgcHJvYmxlbTogdGhvc2Ug YXJlICdpc3N1ZXMgb2YgaGlnaCBwcmlvcml0eScgdGhhdAoKICAgIG5lZWQgc3BlY2lhbCBoYW5k bGluZyBpbiBzb21lIHN0ZXBzIHRoYXQgYXJlIGFib3V0IHRvIGZvbGxvdy4qCgoKCkxpbnVzIFRv cnZhbGRzIGFuZCB0aGUgbGVhZGluZyBMaW51eCBrZXJuZWwgZGV2ZWxvcGVycyB3YW50IHRvIHNl ZSBzb21lIGlzc3VlcwoKZml4ZWQgYXMgc29vbiBhcyBwb3NzaWJsZSwgaGVuY2UgdGhlcmUgYXJl ICdpc3N1ZXMgb2YgaGlnaCBwcmlvcml0eScgdGhhdCBnZXQKCmhhbmRsZWQgc2xpZ2h0bHkgZGlm ZmVyZW50bHkgaW4gdGhlIHJlcG9ydGluZyBwcm9jZXNzLiBUaHJlZSB0eXBlIG9mIGNhc2VzCgpx dWFsaWZ5OiByZWdyZXNzaW9ucywgc2VjdXJpdHkgaXNzdWVzLCBhbmQgcmVhbGx5IHNldmVyZSBw cm9ibGVtcy4KCgoKWW91IGRlYWwgd2l0aCBhICdyZWdyZXNzaW9uJyBpZiBzb21ldGhpbmcgdGhh dCB3b3JrZWQgd2l0aCBhbiBvbGRlciB2ZXJzaW9uIG9mCgp0aGUgTGludXgga2VybmVsIGRvZXMg bm90IHdvcmsgd2l0aCBhIG5ld2VyIG9uZSBvciBzb21laG93IHdvcmtzIHdvcnNlIHdpdGggaXQu CgpJdCB0aHVzIGlzIGEgcmVncmVzc2lvbiB3aGVuIGEgV2lGaSBkcml2ZXIgdGhhdCBkaWQgYSBm aW5lIGpvYiB3aXRoIExpbnV4IDUuNwoKc29tZWhvdyBtaXNiZWhhdmVzIHdpdGggNS44IG9yIGRv ZXNuJ3Qgd29yayBhdCBhbGwuIEl0J3MgYWxzbyBhIHJlZ3Jlc3Npb24gaWYKCmFuIGFwcGxpY2F0 aW9uIHNob3dzIGVycmF0aWMgYmVoYXZpb3Igd2l0aCBhIG5ld2VyIGtlcm5lbCwgd2hpY2ggbWln aHQgaGFwcGVuCgpkdWUgdG8gaW5jb21wYXRpYmxlIGNoYW5nZXMgaW4gdGhlIGludGVyZmFjZSBi ZXR3ZWVuIHRoZSBrZXJuZWwgYW5kIHRoZQoKdXNlcmxhbmQgKGxpa2UgcHJvY2ZzIGFuZCBzeXNm cykuIFNpZ25pZmljYW50bHkgcmVkdWNlZCBwZXJmb3JtYW5jZSBvcgoKaW5jcmVhc2VkIHBvd2Vy IGNvbnN1bXB0aW9uIGFsc28gcXVhbGlmeSBhcyByZWdyZXNzaW9uLiBCdXQga2VlcCBpbiBtaW5k OiB0aGUKCm5ldyBrZXJuZWwgbmVlZHMgdG8gYmUgYnVpbHQgd2l0aCBhIGNvbmZpZ3VyYXRpb24g dGhhdCBpcyBzaW1pbGFyIHRvIHRoZSBvbmUKCmZyb20gdGhlIG9sZCBrZXJuZWwgKHNlZSBiZWxv dyBob3cgdG8gYWNoaWV2ZSB0aGF0KS4gVGhhdCdzIGJlY2F1c2UgdGhlIGtlcm5lbAoKZGV2ZWxv cGVycyBzb21ldGltZXMgY2FuIG5vdCBhdm9pZCBpbmNvbXBhdGliaWxpdGllcyB3aGVuIGltcGxl bWVudGluZyBuZXcKCmZlYXR1cmVzOyBidXQgdG8gYXZvaWQgcmVncmVzc2lvbnMgc3VjaCBmZWF0 dXJlcyBoYXZlIHRvIGJlIGVuYWJsZWQgZXhwbGljaXRseQoKZHVyaW5nIGJ1aWxkIHRpbWUgY29u ZmlndXJhdGlvbi4KCgoKV2hhdCBxdWFsaWZpZXMgYXMgc2VjdXJpdHkgaXNzdWUgaXMgbGVmdCB0 byB5b3VyIGp1ZGdtZW50LiBDb25zaWRlciByZWFkaW5nCgonRG9jdW1lbnRhdGlvbi9hZG1pbi1n dWlkZS9zZWN1cml0eS1idWdzLnJzdCcgYmVmb3JlIHByb2NlZWRpbmcsIGFzIGl0Cgpwcm92aWRl cyBhZGRpdGlvbmFsIGRldGFpbHMgaG93IHRvIGJlc3QgaGFuZGxlIHNlY3VyaXR5IGlzc3Vlcy4K CgoKQW4gaXNzdWUgaXMgYSAncmVhbGx5IHNldmVyZSBwcm9ibGVtJyB3aGVuIHNvbWV0aGluZyB0 b3RhbGx5IHVuYWNjZXB0YWJseSBiYWQKCmhhcHBlbnMuIFRoYXQncyBmb3IgZXhhbXBsZSB0aGUg Y2FzZSB3aGVuIGEgTGludXgga2VybmVsIGNvcnJ1cHRzIHRoZSBkYXRhIGl0J3MKCmhhbmRsaW5n IG9yIGRhbWFnZXMgaGFyZHdhcmUgaXQncyBydW5uaW5nIG9uLiBZb3UncmUgYWxzbyBkZWFsaW5n IHdpdGggYSBzZXZlcmUKCmlzc3VlIHdoZW4gdGhlIGtlcm5lbCBzdWRkZW5seSBzdG9wcyB3b3Jr aW5nIHdpdGggYW4gZXJyb3IgbWVzc2FnZSAoJ2tlcm5lbAoKcGFuaWMnKSBvciB3aXRob3V0IGFu eSBmYXJld2VsbCBub3RlIGF0IGFsbC4gTm90ZTogZG8gbm90IGNvbmZ1c2UgYSAncGFuaWMnIChh CgpmYXRhbCBlcnJvciB3aGVyZSB0aGUga2VybmVsIHN0b3AgaXRzZWxmKSB3aXRoIGEgJ09vcHMn IChhIHJlY292ZXJhYmxlIGVycm9yKSwKCmFzIHRoZSBrZXJuZWwgcmVtYWlucyBydW5uaW5nIGFm dGVyIHRoZSBsYXR0ZXIuCgoKCgoKRW5zdXJlIGEgaGVhbHRoeSBlbnZpcm9ubWVudAoKLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCgogICAgKk1ha2Ugc3VyZSBpdCdzIG5vdCB0aGUga2Vy bmVsJ3Mgc3Vycm91bmRpbmdzIHRoYXQgYXJlIGNhdXNpbmcgdGhlIGlzc3VlCgogICAgeW91IGZh Y2UuKgoKCgpQcm9ibGVtcyB0aGF0IGxvb2sgYSBsb3QgbGlrZSBhIGtlcm5lbCBpc3N1ZSBhcmUg c29tZXRpbWVzIGNhdXNlZCBieSBidWlsZCBvcgoKcnVudGltZSBlbnZpcm9ubWVudC4gSXQncyBo YXJkIHRvIHJ1bGUgb3V0IHRoYXQgcHJvYmxlbSBjb21wbGV0ZWx5LCBidXQgeW91CgpzaG91bGQg bWluaW1pemUgaXQ6CgoKCiAqIFVzZSBwcm92ZW4gdG9vbHMgd2hlbiBidWlsZGluZyB5b3VyIGtl cm5lbCwgYXMgYnVncyBpbiB0aGUgY29tcGlsZXIgb3IgdGhlCgogICBiaW51dGlscyBjYW4gY2F1 c2UgdGhlIHJlc3VsdGluZyBrZXJuZWwgdG8gbWlzYmVoYXZlLgoKCgogKiBFbnN1cmUgeW91ciBj b21wdXRlciBjb21wb25lbnRzIHJ1biB3aXRoaW4gdGhlaXIgZGVzaWduIHNwZWNpZmljYXRpb25z OwoKICAgdGhhdCdzIGVzcGVjaWFsbHkgaW1wb3J0YW50IGZvciB0aGUgbWFpbiBwcm9jZXNzb3Is IHRoZSBtYWluIG1lbW9yeSwgYW5kIHRoZQoKICAgbW90aGVyYm9hcmQuIFRoZXJlZm9yZSwgc3Rv cCB1bmRlcnZvbHRpbmcgb3Igb3ZlcmNsb2NraW5nIHdoZW4gZmFjaW5nIGEKCiAgIHBvdGVudGlh bCBrZXJuZWwgaXNzdWUuCgoKCiAqIFRyeSB0byBtYWtlIHN1cmUgaXQncyBub3QgZmF1bHR5IGhh cmR3YXJlIHRoYXQgaXMgY2F1c2luZyB5b3VyIGlzc3VlLiBCYWQKCiAgIG1haW4gbWVtb3J5IGZv ciBleGFtcGxlIGNhbiByZXN1bHQgaW4gYSBtdWx0aXR1ZGUgb2YgaXNzdWVzIHRoYXQgd2lsbAoK ICAgbWFuaWZlc3QgaXRzZWxmIGluIHByb2JsZW1zIGxvb2tpbmcgbGlrZSBrZXJuZWwgaXNzdWVz LgoKCgogKiBJZiB5b3UncmUgZGVhbGluZyB3aXRoIGEgZmlsZXN5c3RlbSBpc3N1ZSwgeW91IG1p Z2h0IHdhbnQgdG8gY2hlY2sgdGhlIGZpbGUKCiAgIHN5c3RlbSBpbiBxdWVzdGlvbiB3aXRoIGBg ZnNja2BgLCBhcyBpdCBtaWdodCBiZSBkYW1hZ2VkIGluIGEgd2F5IHRoYXQgbGVhZHMKCiAgIHRv IHVuZXhwZWN0ZWQga2VybmVsIGJlaGF2aW9yLgoKCgogKiBXaGVuIGRlYWxpbmcgd2l0aCBhIHJl Z3Jlc3Npb24sIG1ha2Ugc3VyZSBpdCdzIG5vdCBzb21ldGhpbmcgZWxzZSB0aGF0CgogICBjaGFu Z2VkIGluIHBhcmFsbGVsIHRvIHVwZGF0aW5nIHRoZSBrZXJuZWwuIFRoZSBwcm9ibGVtIGZvciBl eGFtcGxlIG1pZ2h0IGJlCgogICBjYXVzZWQgYnkgb3RoZXIgc29mdHdhcmUgdGhhdCB3YXMgdXBk YXRlZCBhdCB0aGUgc2FtZSB0aW1lLiBJdCBjYW4gYWxzbwoKICAgaGFwcGVuIHRoYXQgYSBoYXJk d2FyZSBjb21wb25lbnQgY29pbmNpZGVudGFsbHkganVzdCBicm9rZSB3aGVuIHlvdSByZWJvb3Rl ZAoKICAgaW50byBhIG5ldyBrZXJuZWwgZm9yIHRoZSBmaXJzdCB0aW1lLiBVcGRhdGluZyB0aGUg c3lzdGVtcyBCSU9TIG9yIGNoYW5naW5nCgogICBzb21ldGhpbmcgaW4gdGhlIEJJT1MgU2V0dXAg Y2FuIGFsc28gbGVhZCB0byBwcm9ibGVtcyB0aGF0IG9uIGxvb2sgYSBsb3QKCiAgIGxpa2UgYSBr ZXJuZWwgcmVncmVzc2lvbi4KCgoKCgpQcmVwYXJlIGZvciBlbWVyZ2VuY2llcwoKLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KCgoKICAgICpDcmVhdGUgYSBmcmVzaCBiYWNrdXAgYW5kIHB1dCBzeXN0 ZW0gcmVwYWlyIGFuZCByZXN0b3JlIHRvb2xzIGF0IGhhbmQuKgoKCgpSZW1pbmRlciwgeW91IGFy ZSBkZWFsaW5nIHdpdGggY29tcHV0ZXJzLCB3aGljaCBzb21ldGltZXMgZG8gdW5leHBlY3RlZCB0 aGluZ3MsCgplc3BlY2lhbGx5IGlmIHlvdSBmaWRkbGUgd2l0aCBjcnVjaWFsIHBhcnRzIGxpa2Ug dGhlIGtlcm5lbCBvZiBpdHMgb3BlcmF0aW5nCgpzeXN0ZW0uIFRoYXQncyB3aGF0IHlvdSBhcmUg YWJvdXQgdG8gZG8gaW4gdGhpcyBwcm9jZXNzLiBUaHVzLCBtYWtlIHN1cmUgdG8KCmNyZWF0ZSBh IGZyZXNoIGJhY2t1cDsgYWxzbyBlbnN1cmUgeW91IGhhdmUgYWxsIHRvb2xzIGF0IGhhbmQgdG8g cmVwYWlyIG9yCgpyZWluc3RhbGwgdGhlIG9wZXJhdGluZyBzeXN0ZW0gYXMgd2VsbCBhcyBldmVy eXRoaW5nIHlvdSBuZWVkIHRvIHJlc3RvcmUgdGhlCgpiYWNrdXAuCgoKCgoKTWFrZSBzdXJlIHlv dXIga2VybmVsIGRvZXNuJ3QgZ2V0IGVuaGFuY2VkCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KCgoKICAgICpFbnN1cmUgeW91ciBzeXN0ZW0gZG9lcyBub3QgZW5o YW5jZSBpdHMga2VybmVscyBieSBidWlsZGluZyBhZGRpdGlvbmFsCgogICAga2VybmVsIG1vZHVs ZXMgb24tdGhlLWZseSwgd2hpY2ggc29sdXRpb25zIGxpa2UgREtNUyBtaWdodCBiZSBkb2luZyBs b2NhbGx5CgogICAgd2l0aG91dCB5b3VyIGtub3dsZWRnZS4qCgoKClRoZSByaXNrIHlvdXIgaXNz dWUgcmVwb3J0IGdldHMgaWdub3JlZCBvciByZWplY3RlZCBkcmFtYXRpY2FsbHkgaW5jcmVhc2Vz IGlmCgp5b3VyIGtlcm5lbCBnZXRzIGVuaGFuY2VkIGluIGFueSB3YXkuIFRoYXQncyB3aHkgeW91 IHNob3VsZCByZW1vdmUgb3IgZGlzYWJsZQoKbWVjaGFuaXNtcyBsaWtlIGFrbW9kcyBhbmQgREtN UzogdGhvc2UgYnVpbGQgYWRkLW9uIGtlcm5lbCBtb2R1bGVzCgphdXRvbWF0aWNhbGx5LCBmb3Ig ZXhhbXBsZSB3aGVuIHlvdSBpbnN0YWxsIGEgbmV3IExpbnV4IGtlcm5lbCBvciBib290IGl0IGZv cgoKdGhlIGZpcnN0IHRpbWUuIEFsc28gcmVtb3ZlIGFueSBtb2R1bGVzIHRoZXkgbWlnaHQgaGF2 ZSBpbnN0YWxsZWQuIFRoZW4gcmVib290CgpiZWZvcmUgcHJvY2VlZGluZy4KCgoKTm90ZSwgeW91 IG1pZ2h0IG5vdCBiZSBhd2FyZSB0aGF0IHlvdXIgc3lzdGVtIGlzIHVzaW5nIG9uZSBvZiB0aGVz ZSBzb2x1dGlvbnM6Cgp0aGV5IG9mdGVuIGdldCBzZXQgdXAgc2lsZW50bHkgd2hlbiB5b3UgaW5z dGFsbCBOdmlkaWEncyBwcm9wcmlldGFyeSBncmFwaGljcwoKZHJpdmVyLCBWaXJ0dWFsQm94LCBv ciBvdGhlciBzb2Z0d2FyZSB0aGF0IHJlcXVpcmVzIGEgc29tZSBzdXBwb3J0IGZyb20gYQoKbW9k dWxlIG5vdCBwYXJ0IG9mIHRoZSBMaW51eCBrZXJuZWwuIFRoYXQgd2h5IHlvdXIgbWlnaHQgbmVl ZCB0byB1bmluc3RhbGwgdGhlCgpwYWNrYWdlcyB3aXRoIHN1Y2ggc29mdHdhcmUgdG8gZ2V0IHJp ZCBvZiBhbnkgM3JkIHBhcnR5IGtlcm5lbCBtb2R1bGUuCgoKCgoKQ2hlY2sgJ3RhaW50JyBmbGFn CgotLS0tLS0tLS0tLS0tLS0tLS0KCgoKICAgICpDaGVjayBpZiB5b3VyIGtlcm5lbCB3YXMgJ3Rh aW50ZWQnIHdoZW4gdGhlIGlzc3VlIG9jY3VycmVkLCBhcyB0aGUgZXZlbnQKCiAgICB0aGF0IG1h ZGUgdGhlIGtlcm5lbCBzZXQgdGhpcyBmbGFnIG1pZ2h0IGJlIGNhdXNpbmcgdGhlIGlzc3VlIHlv dSBmYWNlLioKCgoKVGhlIGtlcm5lbCBtYXJrcyBpdHNlbGYgd2l0aCBhICd0YWludCcgZmxhZyB3 aGVuIHNvbWV0aGluZyBoYXBwZW5zIHRoYXQgbWlnaHQKCmxlYWQgdG8gZm9sbG93LXVwIGVycm9y cyB0aGF0IGxvb2sgdG90YWxseSB1bnJlbGF0ZWQuIFRoZSBpc3N1ZSB5b3UgZmFjZSBtaWdodAoK YmUgc3VjaCBhbiBlcnJvciBpZiB5b3VyIGtlcm5lbCBpcyB0YWludGVkLiBUaGF0J3Mgd2h5IGl0 J3MgaW4geW91ciBpbnRlcmVzdCB0bwoKcnVsZSB0aGlzIG91dCBlYXJseSBiZWZvcmUgaW52ZXN0 aW5nIG1vcmUgdGltZSBpbnRvIHRoaXMgcHJvY2Vzcy4gVGhpcyBpcyB0aGUKCm9ubHkgcmVhc29u IHdoeSB0aGlzIHN0ZXAgaXMgaGVyZSwgYXMgdGhpcyBwcm9jZXNzIGxhdGVyIHdpbGwgdGVsbCB5 b3UgdG8KCmluc3RhbGwgdGhlIGxhdGVzdCBtYWlubGluZSBrZXJuZWw7IHlvdSB3aWxsIG5lZWQg dG8gY2hlY2sgdGhlIHRhaW50IGZsYWcgYWdhaW4KCnRoZW4sIGFzIHRoYXQncyB3aGVuIGl0IG1h dHRlcnMgYmVjYXVzZSBpdCdzIHRoZSBrZXJuZWwgdGhlIHJlcG9ydCB3aWxsIGZvY3VzCgpvbi4K CgoKT24gYSBydW5uaW5nIHN5c3RlbSBpcyBlYXN5IHRvIGNoZWNrIGlmIHRoZSBrZXJuZWwgdGFp bnRlZCBpdHNlbGY6IGlmIGBgY2F0CgovcHJvYy9zeXMva2VybmVsL3RhaW50ZWRgYCByZXR1cm5z ICcwJyB0aGVuIHRoZSBrZXJuZWwgaXMgbm90IHRhaW50ZWQgYW5kCgpldmVyeXRoaW5nIGlzIGZp bmUuIENoZWNraW5nIHRoYXQgZmlsZSBpcyBpbXBvc3NpYmxlIGluIHNvbWUgc2l0dWF0aW9uczsg dGhhdCdzCgp3aHkgdGhlIGtlcm5lbCBhbHNvIG1lbnRpb25zIHRoZSB0YWludCBzdGF0dXMgd2hl biBpdCByZXBvcnRzIGFuIGludGVybmFsCgpwcm9ibGVtIChhICdrZXJuZWwgYnVnJyksIGEgcmVj b3ZlcmFibGUgZXJyb3IgKGEgJ2tlcm5lbCBPb3BzJykgb3IgYQoKbm9uLXJlY292ZXJhYmxlIGVy cm9yIGJlZm9yZSBoYWx0aW5nIG9wZXJhdGlvbiAoYSAna2VybmVsIHBhbmljJykuIExvb2sgbmVh cgoKdGhlIHRvcCBvZiB0aGUgZXJyb3IgbWVzc2FnZXMgcHJpbnRlZCB3aGVuIG9uZSBvZiB0aGVz ZSBvY2N1cnMgYW5kIHNlYXJjaCBmb3IgYQoKbGluZSBzdGFydGluZyB3aXRoICdDUFU6Jy4gSXQg c2hvdWxkIGVuZCB3aXRoICdOb3QgdGFpbnRlZCcgaWYgdGhlIGtlcm5lbCB3YXMKCm5vdCB0YWlu dGVkIHdoZW4gaXQgbm90aWNlZCB0aGUgcHJvYmxlbTsgaXQgd2FzIHRhaW50ZWQgaWYgeW91IHNl ZSAnVGFpbnRlZDonCgpmb2xsb3dlZCBieSBhIGZldyBzcGFjZXMgYW5kIHNvbWUgbGV0dGVycy4K CgoKSWYgeW91ciBrZXJuZWwgaXMgdGFpbnRlZCwgc3R1ZHkgJ0RvY3VtZW50YXRpb24vYWRtaW4t Z3VpZGUvdGFpbnRlZC1rZXJuZWxzLnJzdCcKCnRvIGZpbmQgb3V0IHdoeS4gVHJ5IHRvIGVsaW1p bmF0ZSB0aGUgcmVhc29uLiBPZnRlbiBpdCdzIGNhdXNlZCBieSBvbmUgdGhlc2UKCnRocmVlIHRo aW5nczoKCgoKIDEuIEEgcmVjb3ZlcmFibGUgZXJyb3IgKGEgJ2tlcm5lbCBPb3BzJykgb2NjdXJy ZWQgYW5kIHRoZSBrZXJuZWwgdGFpbnRlZAoKICAgIGl0c2VsZiwgYXMgdGhlIGtlcm5lbCBrbm93 cyBpdCBtaWdodCBtaXNiZWhhdmUgaW4gc3RyYW5nZSB3YXlzIGFmdGVyIHRoYXQKCiAgICBwb2lu dC4gSW4gdGhhdCBjYXNlIGNoZWNrIHlvdXIga2VybmVsIG9yIHN5c3RlbSBsb2cgYW5kIGxvb2sg Zm9yIGEgc2VjdGlvbgoKICAgIHRoYXQgc3RhcnRzIHdpdGggdGhpczo6CgoKCiAgICAgICBPb3Bz OiAwMDAwIFsjMV0gU01QCgoKCiAgICBUaGF0J3MgdGhlIGZpcnN0IE9vcHMgc2luY2UgYm9vdC11 cCwgYXMgdGhlICcjMScgYmV0d2VlbiB0aGUgYnJhY2tldHMgc2hvd3MuCgogICAgRXZlcnkgT29w cyBhbmQgYW55IG90aGVyIHByb2JsZW0gdGhhdCBoYXBwZW5zIGFmdGVyIHRoYXQgcG9pbnQgbWln aHQgYmUgYQoKICAgIGZvbGxvdy11cCBwcm9ibGVtIHRvIHRoYXQgZmlyc3QgT29wcywgZXZlbiBp ZiBib3RoIGxvb2sgdG90YWxseSB1bnJlbGF0ZWQuCgogICAgUnVsZSB0aGlzIG91dCBieSBnZXR0 aW5nIHJpZCBvZiB0aGUgY2F1c2UgZm9yIHRoZSBmaXJzdCBPb3BzIGFuZCByZXByb2R1Y2luZwoK ICAgIHRoZSBpc3N1ZSBhZnRlcndhcmRzLiBTb21ldGltZXMgc2ltcGx5IHJlc3RhcnRpbmcgd2ls bCBiZSBlbm91Z2gsIHNvbWV0aW1lcwoKICAgIGEgY2hhbmdlIHRvIHRoZSBjb25maWd1cmF0aW9u IGZvbGxvd2VkIGJ5IGEgcmVib290IGNhbiBlbGltaW5hdGUgdGhlIE9vcHMuCgogICAgQnV0IGRv bid0IGludmVzdCB0b28gbXVjaCB0aW1lIGludG8gdGhpcyBhdCB0aGlzIHBvaW50IG9mIHRoZSBw cm9jZXNzLCBhcwoKICAgIHRoZSBjYXVzZSBmb3IgdGhlIE9vcHMgbWlnaHQgYWxyZWFkeSBiZSBm aXhlZCBpbiB0aGUgbmV3ZXIgTGludXgga2VybmVsCgogICAgdmVyc2lvbiB5b3UgYXJlIGdvaW5n IHRvIGluc3RhbGwgbGF0ZXIgaW4gdGhpcyBwcm9jZXNzLgoKCgogMi4gWW91ciBzeXN0ZW0gdXNl cyBhIHNvZnR3YXJlIHRoYXQgaW5zdGFsbHMgaXRzIG93biBrZXJuZWwgbW9kdWxlcywgZm9yCgog ICAgZXhhbXBsZSBOdmlkaWEncyBwcm9wcmlldGFyeSBncmFwaGljcyBkcml2ZXIgb3IgVmlydHVh bEJveC4gVGhlIGtlcm5lbAoKICAgIHRhaW50cyBpdHNlbGYgd2hlbiBpdCBsb2FkcyBzdWNoIG1v ZHVsZSBmcm9tIGV4dGVybmFsIHNvdXJjZXMgKGV2ZW4gaWYKCiAgICB0aGV5IGFyZSBPcGVuIFNv dXJjZSk6IHRoZXkgc29tZXRpbWVzIGNhdXNlIGVycm9ycyBpbiB1bnJlbGF0ZWQga2VybmVsCgog ICAgYXJlYXMgYW5kIHRodXMgbWlnaHQgYmUgY2F1c2luZyB0aGUgaXNzdWUgeW91IGZhY2UuIFlv dSB0aGVyZWZvcmUgaGF2ZSB0bwoKICAgIHByZXZlbnQgdGhvc2UgbW9kdWxlcyBmcm9tIGxvYWRp bmcgd2hlbiB5b3Ugd2FudCB0byByZXBvcnQgYW4gaXNzdWUgdG8gdGhlCgogICAgTGludXgga2Vy bmVsIGRldmVsb3BlcnMuIE1vc3Qgb2YgdGhlIHRpbWUgdGhlIGVhc2llc3Qgd2F5IHRvIGRvIHRo YXQgaXM6CgogICAgdGVtcG9yYXJpbHkgdW5pbnN0YWxsIHN1Y2ggc29mdHdhcmUgaW5jbHVkaW5n IGFueSBtb2R1bGVzIHRoZXkgbWlnaHQgaGF2ZQoKICAgIGluc3RhbGxlZC4gQWZ0ZXJ3YXJkcyBy ZWJvb3QuCgoKCiAzLiBUaGUga2VybmVsIGFsc28gdGFpbnRzIGl0c2VsZiB3aGVuIGl0J3MgbG9h ZGluZyBhIG1vZHVsZSB0aGF0IHJlc2lkZXMgaW4KCiAgICB0aGUgc3RhZ2luZyB0cmVlIG9mIHRo ZSBMaW51eCBrZXJuZWwgc291cmNlLiBUaGF0J3MgYSBzcGVjaWFsIGFyZWEgZm9yCgogICAgY29k ZSAobW9zdGx5IGRyaXZlcnMpIHRoYXQgZG9lcyBub3QgeWV0IGZ1bGZpbGwgdGhlIG5vcm1hbCBM aW51eCBrZXJuZWwKCiAgICBxdWFsaXR5IHN0YW5kYXJkcy4gV2hlbiB5b3UgcmVwb3J0IGFuIGlz c3VlIHdpdGggc3VjaCBhIG1vZHVsZSBpdCdzCgogICAgb2J2aW91c2x5IG9rYXkgaWYgdGhlIGtl cm5lbCBpcyB0YWludGVkOyBqdXN0IG1ha2Ugc3VyZSB0aGUgbW9kdWxlIGluCgogICAgcXVlc3Rp b24gaXMgdGhlIG9ubHkgcmVhc29uIGZvciB0aGUgdGFpbnQuIElmIHRoZSBpc3N1ZSBoYXBwZW5z IGluIGFuCgogICAgdW5yZWxhdGVkIGFyZWEgcmVib290IGFuZCB0ZW1wb3JhcmlseSBibG9jayB0 aGUgbW9kdWxlIGZyb20gYmVpbmcgbG9hZGVkCgogICAgYnkgc3BlY2lmeWluZyBgYGZvby5ibGFj a2xpc3Q9MWBgIGFzIGtlcm5lbCBwYXJhbWV0ZXIgKHJlcGxhY2UgJ2Zvbycgd2l0aAoKICAgIHRo ZSBuYW1lIG9mIHRoZSBtb2R1bGUgaW4gcXVlc3Rpb24pLgoKCgoKCkRvY3VtZW50IGhvdyB0byBy ZXByb2R1Y2UgaXNzdWUKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgoKICAgICpX cml0ZSBkb3duIGNvYXJzZWx5IGhvdyB0byByZXByb2R1Y2UgdGhlIGlzc3VlLiBJZiB5b3UgZGVh bCB3aXRoIG11bHRpcGxlCgogICAgaXNzdWVzIGF0IG9uY2UsIGNyZWF0ZSBzZXBhcmF0ZSBub3Rl cyBmb3IgZWFjaCBvZiB0aGVtIGFuZCBtYWtlIHN1cmUgdGhleQoKICAgIHdvcmsgaW5kZXBlbmRl bnRseSBvbiBhIGZyZXNobHkgYm9vdGVkIHN5c3RlbS4gVGhhdCdzIG5lZWRlZCwgYXMgZWFjaCBp c3N1ZQoKICAgIG5lZWRzIHRvIGdldCByZXBvcnRlZCB0byB0aGUga2VybmVsIGRldmVsb3BlcnMg c2VwYXJhdGVseSwgdW5sZXNzIHRoZXkgYXJlCgogICAgc3Ryb25nbHkgZW50YW5nbGVkLioKCgoK SWYgeW91IGRlYWwgd2l0aCBtdWx0aXBsZSBpc3N1ZXMgYXQgb25jZSwgeW91J2xsIGhhdmUgdG8g cmVwb3J0IGVhY2ggb2YgdGhlbQoKc2VwYXJhdGVseSwgYXMgdGhleSBtaWdodCBiZSBoYW5kbGVk IGJ5IGRpZmZlcmVudCBkZXZlbG9wZXJzLiBEZXNjcmliaW5nCgp2YXJpb3VzIGlzc3VlcyBpbiBv bmUgcmVwb3J0IGFsc28gbWFrZXMgaXQgcXVpdGUgZGlmZmljdWx0IGZvciBvdGhlcnMgdG8gdGVh cgoKaXQgYXBhcnQuIEhlbmNlLCBvbmx5IGNvbWJpbmUgaXNzdWVzIGluIG9uZSByZXBvcnQgaWYg dGhleSBhcmUgdmVyeSBzdHJvbmdseQoKZW50YW5nbGVkLgoKCgpBZGRpdGlvbmFsbHksIGR1cmlu ZyB0aGUgcmVwb3J0aW5nIHByb2Nlc3MgeW91IHdpbGwgaGF2ZSB0byB0ZXN0IGlmIHRoZSBpc3N1 ZQoKaGFwcGVucyB3aXRoIG90aGVyIGtlcm5lbCB2ZXJzaW9ucy4gVGhlcmVmb3JlLCBpdCB3aWxs IG1ha2UgeW91ciB3b3JrIGVhc2llciBpZgoKeW91IGtub3cgZXhhY3RseSBob3cgdG8gcmVwcm9k dWNlIGFuIGlzc3VlIHF1aWNrbHkgb24gYSBmcmVzaGx5IGJvb3RlZCBzeXN0ZW0uCgoKCk5vdGU6 IGl0J3Mgb2Z0ZW4gZnJ1aXRsZXNzIHRvIHJlcG9ydCBpc3N1ZXMgdGhhdCBvbmx5IGhhcHBlbmVk IG9uY2UsIGFzIHRoZXkKCm1pZ2h0IGJlIGNhdXNlZCBieSBhIGJpdCBmbGlwIGR1ZSB0byBjb3Nt aWMgcmFkaWF0aW9uLiBUaGF0J3Mgd2h5IHlvdSBzaG91bGQKCnRyeSB0byBydWxlIHRoYXQgb3V0 IGJ5IHJlcHJvZHVjaW5nIHRoZSBpc3N1ZSBiZWZvcmUgZ29pbmcgZnVydGhlci4gRmVlbCBmcmVl Cgp0byBpZ25vcmUgdGhpcyBhZHZpY2UgaWYgeW91IGFyZSBleHBlcmllbmNlZCBlbm91Z2ggdG8g dGVsbCBhIG9uZS10aW1lIGVycm9yCgpkdWUgdG8gZmF1bHR5IGhhcmR3YXJlIGFwYXJ0IGZyb20g YSBrZXJuZWwgaXNzdWUgdGhhdCByYXJlbHkgaGFwcGVucyBhbmQgdGh1cwoKaXMgaGFyZCB0byBy ZXByb2R1Y2UuCgoKCgoKUmVncmVzc2lvbiBpbiBzdGFibGUgb3IgbG9uZ3Rlcm0ga2VybmVsPwoK LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCgogICAgKklmIHlvdSBh cmUgZmFjaW5nIGEgcmVncmVzc2lvbiB3aXRoaW4gYSBzdGFibGUgb3IgbG9uZ3Rlcm0gdmVyc2lv biBsaW5lCgogICAgKHNheSBzb21ldGhpbmcgYnJva2Ugd2hlbiB1cGRhdGluZyBmcm9tIDUuMTAu NCB0byA1LjEwLjUpLCBzY3JvbGwgZG93biB0bwoKICAgICdEZWFsaW5nIHdpdGggcmVncmVzc2lv bnMgd2l0aGluIGEgc3RhYmxlIGFuZCBsb25ndGVybSBrZXJuZWwgbGluZScuKgoKCgpSZWdyZXNz aW9uIHdpdGhpbiBhIHN0YWJsZSBhbmQgbG9uZ3Rlcm0ga2VybmVsIHZlcnNpb24gbGluZSBhcmUg c29tZXRoaW5nIHRoZQoKTGludXggZGV2ZWxvcGVycyB3YW50IHRvIGZpeCBiYWRseSwgYXMgc3Vj aCBpc3N1ZXMgYXJlIGV2ZW4gbW9yZSB1bndhbnRlZCB0aGFuCgpyZWdyZXNzaW9uIGluIHRoZSBt YWluIGRldmVsb3BtZW50IGJyYW5jaCwgYXMgdGhleSBjYW4gcXVpY2tseSBhZmZlY3QgYSBsb3Qg b2YKCnBlb3BsZS4gVGhlIGRldmVsb3BlcnMgdGh1cyB3YW50IHRvIGxlYXJuIGFib3V0IHN1Y2gg aXNzdWVzIGFzIHF1aWNrbHkgYXMKCnBvc3NpYmxlLCBoZW5jZSB0aGVyZSBpcyBhIHN0cmVhbWxp bmVkIHByb2Nlc3MgdG8gcmVwb3J0IHRoZW0uIE5vdGUsCgpyZWdyZXNzaW9ucyB3aXRoIG5ld2Vy IGtlcm5lbCB2ZXJzaW9uIGxpbmUgKHNheSBzb21ldGhpbmcgYnJva2Ugd2hlbiBzd2l0Y2hpbmcK CmZyb20gNS45LjE1IHRvIDUuMTAuNSkgZG8gbm90IHF1YWxpZnkuCgoKCgoKQ2hlY2sgd2hlcmUg eW91IG5lZWQgdG8gcmVwb3J0IHlvdXIgaXNzdWUKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCgoKCiAgICAqTG9jYXRlIHRoZSBkcml2ZXIgb3Iga2VybmVsIHN1YnN5 c3RlbSB0aGF0IHNlZW1zIHRvIGJlIGNhdXNpbmcgdGhlIGlzc3VlLgoKICAgIEZpbmQgb3V0IGhv dyBhbmQgd2hlcmUgaXRzIGRldmVsb3BlcnMgZXhwZWN0IHJlcG9ydHMuIE5vdGU6IG1vc3Qgb2Yg dGhlCgogICAgdGltZSB0aGlzIHdvbid0IGJlIGJ1Z3ppbGxhLmtlcm5lbC5vcmcsIGFzIGlzc3Vl cyB0eXBpY2FsbHkgbmVlZCB0byBiZSBzZW50CgogICAgYnkgbWFpbCB0byBhIG1haW50YWluZXIg YW5kIGEgcHVibGljIG1haWxpbmcgbGlzdC4qCgoKCkl0J3MgY3J1Y2lhbCB0byBzZW5kIHlvdXIg cmVwb3J0IHRvIHRoZSByaWdodCBwZW9wbGUsIGFzIHRoZSBMaW51eCBrZXJuZWwgaXMgYQoKYmln IHByb2plY3QgYW5kIG1vc3Qgb2YgaXRzIGRldmVsb3BlcnMgYXJlIG9ubHkgZmFtaWxpYXIgd2l0 aCBhIHNtYWxsIHN1YnNldCBvZgoKaXQuIFF1aXRlIGEgZmV3IHByb2dyYW1tZXJzIGZvciBleGFt cGxlIG9ubHkgY2FyZSBmb3IganVzdCBvbmUgZHJpdmVyLCBmb3IKCmV4YW1wbGUgb25lIGZvciBh IFdpRmkgY2hpcDsgaXRzIGRldmVsb3BlciBsaWtlbHkgd2lsbCBvbmx5IGhhdmUgc21hbGwgb3Ig bm8KCmtub3dsZWRnZSBhYm91dCB0aGUgaW50ZXJuYWxzIG9mIHJlbW90ZSBvciB1bnJlbGF0ZWQg InN1YnN5c3RlbXMiLCBsaWtlIHRoZSBUQ1AKCnN0YWNrLCB0aGUgUENJZS9QQ0kgc3Vic3lzdGVt LCBtZW1vcnkgbWFuYWdlbWVudCBvciBmaWxlIHN5c3RlbXMuCgoKClByb2JsZW0gaXM6IHRoZSBM aW51eCBrZXJuZWwgbGFja3MgYSBjZW50cmFsIGJ1ZyB0cmFja2VyIHdoZXJlIHlvdSBjYW4gc2lt cGx5CgpmaWxlIHlvdXIgaXNzdWUgYW5kIG1ha2UgaXQgcmVhY2ggdGhlIGRldmVsb3BlcnMgdGhh dCBuZWVkIHRvIGtub3cgYWJvdXQgaXQuCgpUaGF0J3Mgd2h5IHlvdSBoYXZlIHRvIGZpbmQgdGhl IHJpZ2h0IHBsYWNlIGFuZCB3YXkgdG8gcmVwb3J0IGlzc3VlcyB5b3Vyc2VsZi4KCllvdSBjYW4g ZG8gdGhhdCB3aXRoIHRoZSBoZWxwIG9mIGEgc2NyaXB0IChzZWUgYmVsb3cpLCBidXQgaXQgbWFp bmx5IHRhcmdldHMKCmtlcm5lbCBkZXZlbG9wZXJzIGFuZCBleHBlcnRzLiBGb3IgZXZlcnlib2R5 IGVsc2UgdGhlIE1BSU5UQUlORVJTIGZpbGUgaXMgdGhlCgpiZXR0ZXIgcGxhY2UuCgoKCkhvdyB0 byByZWFkIHRoZSBNQUlOVEFJTkVSUyBmaWxlCgp+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fgoKVG8gaWxsdXN0cmF0ZSBob3cgdG8gdXNlIHRoZSA6cmVmOmBNQUlOVEFJTkVSUyA8bWFp bnRhaW5lcnM+YCBmaWxlLCBsZXRzIGFzc3VtZQoKdGhlIFdpRmkgaW4geW91ciBMYXB0b3Agc3Vk ZGVubHkgbWlzYmVoYXZlcyBhZnRlciB1cGRhdGluZyB0aGUga2VybmVsLiBJbiB0aGF0CgpjYXNl IGl0J3MgbGlrZWx5IGFuIGlzc3VlIGluIHRoZSBXaUZpIGRyaXZlci4gT2J2aW91c2x5IGl0IGNv dWxkIGFsc28gYmUgc29tZQoKY29kZSBpdCBidWlsZHMgdXBvbiwgYnV0IHVubGVzcyB5b3Ugc3Vz cGVjdCBzb21ldGhpbmcgbGlrZSB0aGF0IHN0aWNrIHRvIHRoZQoKZHJpdmVyLiBJZiBpdCdzIHJl YWxseSBzb21ldGhpbmcgZWxzZSwgdGhlIGRyaXZlcidzIGRldmVsb3BlcnMgd2lsbCBnZXQgdGhl CgpyaWdodCBwZW9wbGUgaW52b2x2ZWQuCgoKClNhZGx5LCB0aGVyZSBpcyBubyB3YXkgdG8gY2hl Y2sgd2hpY2ggY29kZSBpcyBkcml2aW5nIGEgcGFydGljdWxhciBoYXJkd2FyZQoKY29tcG9uZW50 IHRoYXQgaXMgYm90aCB1bml2ZXJzYWwgYW5kIGVhc3kuCgoKCkluIGNhc2Ugb2YgYSBwcm9ibGVt IHdpdGggdGhlIFdpRmkgZHJpdmVyIHlvdSBmb3IgZXhhbXBsZSBtaWdodCB3YW50IHRvIGxvb2sg YXQKCnRoZSBvdXRwdXQgb2YgYGBsc3BjaSAta2BgLCBhcyBpdCBsaXN0cyBkZXZpY2VzIG9uIHRo ZSBQQ0kvUENJZSBidXMgYW5kIHRoZQoKa2VybmVsIG1vZHVsZSBkcml2aW5nIGl0OjoKCgoKICAg ICAgIFt1c2VyQHNvbWV0aGluZyB+XSQgbHNwY2kgLWsKCiAgICAgICBbLi4uXQoKICAgICAgIDNh OjAwLjAgTmV0d29yayBjb250cm9sbGVyOiBRdWFsY29tbSBBdGhlcm9zIFFDQTYxNzQgODAyLjEx YWMgV2lyZWxlc3MgTmV0d29yayBBZGFwdGVyIChyZXYgMzIpCgogICAgICAgICBTdWJzeXN0ZW06 IEJpZ2Zvb3QgTmV0d29ya3MsIEluYy4gRGV2aWNlIDE1MzUKCiAgICAgICAgIEtlcm5lbCBkcml2 ZXIgaW4gdXNlOiBhdGgxMGtfcGNpCgogICAgICAgICBLZXJuZWwgbW9kdWxlczogYXRoMTBrX3Bj aQoKICAgICAgIFsuLi5dCgoKCkJ1dCB0aGlzIGFwcHJvYWNoIHdvbid0IHdvcmsgaWYgeW91ciBX aUZpIGNoaXAgaXMgY29ubmVjdGVkIG92ZXIgVVNCIG9yIHNvbWUKCm90aGVyIGludGVybmFsIGJ1 cy4gSW4gdGhvc2UgY2FzZXMgeW91IG1pZ2h0IHdhbnQgdG8gY2hlY2sgeW91ciBXaUZpIG1hbmFn ZXIgb3IKCnRoZSBvdXRwdXQgb2YgYGBpcCBsaW5rYGAuIExvb2sgZm9yIHRoZSBuYW1lIG9mIHRo ZSBwcm9ibGVtYXRpYyBuZXR3b3JrCgppbnRlcmZhY2UsIHdoaWNoIG1pZ2h0IGJlIHNvbWV0aGlu ZyBsaWtlICd3bHA1OHMwJy4gVGhpcyBuYW1lIGNhbiBiZSB1c2VkIGxpa2UKCnRoaXMgdG8gZmlu ZCB0aGUgbW9kdWxlIGRyaXZpbmcgaXQ6OgoKCgogICAgICAgW3VzZXJAc29tZXRoaW5nIH5dJCBy ZWFscGF0aCAtLXJlbGF0aXZlLXRvPS9zeXMvbW9kdWxlLyAvc3lzL2NsYXNzL25ldC93bHA1OHMw L2RldmljZS9kcml2ZXIvbW9kdWxlCgogICAgICAgYXRoMTBrX3BjaQoKCgpJbiBjYXNlIHRyaWNr cyBsaWtlIHRoZXNlIGRvbid0IGJyaW5nIHlvdSBhbnkgZnVydGhlciwgdHJ5IHRvIHNlYXJjaCB0 aGUKCmludGVybmV0IG9uIGhvdyB0byBuYXJyb3cgZG93biB0aGUgZHJpdmVyIG9yIHN1YnN5c3Rl bSBpbiBxdWVzdGlvbi4gQW5kIGlmIHlvdQoKYXJlIHVuc3VyZSB3aGljaCBpdCBpczoganVzdCB0 cnkgeW91ciBiZXN0IGd1ZXNzLCBzb21lYm9keSB3aWxsIGhlbHAgeW91IGlmIHlvdQoKZ3Vlc3Nl ZCBwb29ybHkuCgoKCk9uY2UgeW91IGtub3cgdGhlIGRyaXZlciBvciBzdWJzeXN0ZW0sIHlvdSB3 YW50IHRvIHNlYXJjaCBmb3IgaXQgaW4gdGhlCgpNQUlOVEFJTkVSUyBmaWxlLiBJbiB0aGUgY2Fz ZSBvZiAnYXRoMTBrX3BjaScgeW91IHdvbid0IGZpbmQgYW55dGhpbmcsIGFzIHRoZQoKbmFtZSBp cyB0b28gc3BlY2lmaWMuIFNvbWV0aW1lcyB5b3Ugd2lsbCBuZWVkIHRvIHNlYXJjaCBvbiB0aGUg bmV0IGZvciBoZWxwOwoKYnV0IGJlZm9yZSBkb2luZyBzbywgdHJ5IGEgc29tZXdoYXQgc2hvcnRl ZCBvciBtb2RpZmllZCBuYW1lIHdoZW4gc2VhcmNoaW5nIHRoZQoKTUFJTlRBSU5FUlMgZmlsZSwg YXMgdGhlbiB5b3UgbWlnaHQgZmluZCBzb21ldGhpbmcgbGlrZSB0aGlzOjoKCgoKICAgICAgIFFV QUxDT01NIEFUSEVST1MgQVRIMTBLIFdJUkVMRVNTIERSSVZFUgoKICAgICAgIE1haWw6ICAgICAg ICAgIEEuIFNvbWUgSHVtYW4gPHNodW1hbkBleGFtcGxlLmNvbT4KCiAgICAgICBNYWlsaW5nIGxp c3Q6ICBhdGgxMGtAbGlzdHMuaW5mcmFkZWFkLm9yZwoKICAgICAgIFN0YXR1czogICAgICAgIFN1 cHBvcnRlZAoKICAgICAgIFdlYi1wYWdlOiAgICAgIGh0dHBzOi8vd2lyZWxlc3Mud2lraS5rZXJu ZWwub3JnL2VuL3VzZXJzL0RyaXZlcnMvYXRoMTBrCgogICAgICAgU0NNOiAgICAgICAgICAgZ2l0 IGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9rdmFsby9hdGgu Z2l0CgogICAgICAgRmlsZXM6ICAgICAgICAgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEw ay8KCgoKTm90ZTogdGhlIGxpbmUgZGVzY3JpcHRpb24gd2lsbCBiZSBhYmJyZXZpYXRpb25zLCBp ZiB5b3UgcmVhZCB0aGUgcGxhaW4KCk1BSU5UQUlORVJTIGZpbGUgZm91bmQgaW4gdGhlIHJvb3Qg b2YgdGhlIExpbnV4IHNvdXJjZSB0cmVlLiAnTWFpbDonIGZvcgoKZXhhbXBsZSB3aWxsIGJlICdN OicsICdNYWlsaW5nIGxpc3Q6JyB3aWxsIGJlICdMJywgYW5kICdTdGF0dXM6JyB3aWxsIGJlICdT OicuCgpBIHNlY3Rpb24gbmVhciB0aGUgdG9wIG9mIHRoZSBmaWxlIGV4cGxhaW5zIHRoZXNlIGFu ZCBvdGhlciBhYmJyZXZpYXRpb25zLgoKCgpGaXJzdCBsb29rIGF0IHRoZSBsaW5lICdTdGF0dXMn LiBJZGVhbGx5IGl0IHNob3VsZCBiZSAnU3VwcG9ydGVkJyBvcgoKJ01haW50YWluZWQnLiBJZiBp dCBzdGF0ZXMgJ09ic29sZXRlJyB0aGVuIHlvdSBhcmUgdXNpbmcgc29tZSBvdXRkYXRlZCBhcHBy b2FjaAoKdGhhdCB3YXMgcmVwbGFjZWQgYnkgYSBuZXdlciBzb2x1dGlvbiB5b3UgbmVlZCB0byBz d2l0Y2ggdG8uIFNvbWV0aW1lcyB0aGUgY29kZQoKb25seSBoYXMgc29tZW9uZSB3aG8gcHJvdmlk ZXMgJ09kZCBGaXhlcycgd2hlbiBmZWVsaW5nIG1vdGl2YXRlZC4gQW5kIHdpdGgKCidPcnBoYW4n IHlvdSBhcmUgdG90YWxseSBvdXQgb2YgbHVjaywgYXMgbm9ib2R5IHRha2VzIGNhcmUgb2YgdGhl IGNvZGUgYW55bW9yZS4KClRoYXQgb25seSBsZWF2ZXMgdGhlc2Ugb3B0aW9uczogYXJyYW5nZSB5 b3Vyc2VsZiB0byBsaXZlIHdpdGggdGhlIGlzc3VlLCBmaXggaXQKCnlvdXJzZWxmLCBvciBmaW5k IGEgcHJvZ3JhbW1lciBzb21ld2hlcmUgd2lsbGluZyB0byBmaXggaXQuCgoKCkFmdGVyIGNoZWNr aW5nIHRoZSBzdGF0dXMsIGxvb2sgZm9yIGEgbGluZSBzdGFydGluZyB3aXRoICdidWdzOic6IGl0 IHdpbGwgdGVsbAoKeW91IHdoZXJlIHRvIGZpbmQgYSBzdWJzeXN0ZW0gc3BlY2lmaWMgYnVnIHRy YWNrZXIgdG8gZmlsZSB5b3VyIGlzc3VlLiBUaGUKCmV4YW1wbGUgYWJvdmUgZG9lcyBub3QgaGF2 ZSBzdWNoIGEgbGluZS4gVGhhdCBpcyB0aGUgY2FzZSBmb3IgbW9zdCBzZWN0aW9ucywgYXMKCkxp bnV4IGtlcm5lbCBkZXZlbG9wbWVudCBpcyBjb21wbGV0ZWx5IGRyaXZlbiBieSBtYWlsLiBWZXJ5 IGZldyBzdWJzeXN0ZW1zIHVzZQoKYSBidWcgdHJhY2tlciwgYW5kIG9ubHkgc29tZSBvZiB0aG9z ZSByZWx5IG9uIGJ1Z3ppbGxhLmtlcm5lbC5vcmcuCgoKCkluIHRoaXMgYW5kIG1hbnkgb3RoZXIg Y2FzZXMgeW91IHRodXMgaGF2ZSB0byBsb29rIGZvciBsaW5lcyBzdGFydGluZyB3aXRoCgonTWFp bDonIGluc3RlYWQuIFRob3NlIG1lbnRpb24gdGhlIG5hbWUgYW5kIHRoZSBlbWFpbCBhZGRyZXNz ZXMgZm9yIHRoZQoKbWFpbnRhaW5lcnMgb2YgdGhlIHBhcnRpY3VsYXIgY29kZS4gQWxzbyBsb29r IGZvciBhIGxpbmUgc3RhcnRpbmcgd2l0aCAnTWFpbGluZwoKbGlzdDonLCB3aGljaCB0ZWxscyB5 b3UgdGhlIHB1YmxpYyBtYWlsaW5nIGxpc3Qgd2hlcmUgdGhlIGNvZGUgaXMgZGV2ZWxvcGVkLgoK WW91ciByZXBvcnQgbGF0ZXIgbmVlZHMgdG8gZ28gYnkgbWFpbCB0byB0aG9zZSBhZGRyZXNzZXMu IEFkZGl0aW9uYWxseSwgZm9yIGFsbAoKaXNzdWUgcmVwb3J0cyBzZW50IGJ5IGVtYWlsLCBtYWtl IHN1cmUgdG8gYWRkIHRoZSBMaW51eCBLZXJuZWwgTWFpbGluZyBMaXN0CgooTEtNTCkgPGxpbnV4 LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc+IHRvIENDLiBEb24ndCBvbWl0IGVpdGhlciBvZiB0aGUg bWFpbGluZwoKbGlzdHMgd2hlbiBzZW5kaW5nIHlvdXIgaXNzdWUgcmVwb3J0IGJ5IG1haWwgbGF0 ZXIhIE1haW50YWluZXJzIGFyZSBidXN5IHBlb3BsZQoKYW5kIG1pZ2h0IGxlYXZlIHNvbWUgd29y ayBmb3Igb3RoZXIgZGV2ZWxvcGVycyBvbiB0aGUgc3Vic3lzdGVtIHNwZWNpZmljIGxpc3Q7Cgph bmQgTEtNTCBpcyBpbXBvcnRhbnQgdG8gaGF2ZSBvbmUgcGxhY2Ugd2hlcmUgYWxsIGlzc3VlIHJl cG9ydHMgY2FuIGJlIGZvdW5kLgoKCgoKCkZpbmRpbmcgdGhlIG1haW50YWluZXJzIHdpdGggdGhl IGhlbHAgb2YgYSBzY3JpcHQKCn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fn4KCgoKRm9yIHBlb3BsZSB0aGF0IGhhdmUgdGhlIExpbnV4IHNvdXJjZXMgYXQg aGFuZCB0aGVyZSBpcyBhIHNlY29uZCBvcHRpb24gdG8gZmluZAoKdGhlIHByb3BlciBwbGFjZSB0 byByZXBvcnQ6IHRoZSBzY3JpcHQgJ3NjcmlwdHMvZ2V0X21haW50YWluZXIucGwnIHdoaWNoIHRy aWVzCgp0byBmaW5kIGFsbCBwZW9wbGUgdG8gY29udGFjdC4gSXQgcXVlcmllcyB0aGUgTUFJTlRB SU5FUlMgZmlsZSBhbmQgbmVlZHMgdG8gYmUKCmNhbGxlZCB3aXRoIGEgcGF0aCB0byB0aGUgc291 cmNlIGNvZGUgaW4gcXVlc3Rpb24uIEZvciBkcml2ZXJzIGNvbXBpbGVkIGFzCgptb2R1bGUgaWYg b2Z0ZW4gY2FuIGJlIGZvdW5kIHdpdGggYSBjb21tYW5kIGxpa2UgdGhpczo6CgoKCiAgICAgICAk IG1vZGluZm8gYXRoMTBrX3BjaSB8IGdyZXAgZmlsZW5hbWUgfCBzZWQgJ3MhL2xpYi9tb2R1bGVz Ly4qL2tlcm5lbC8hITsgcyFmaWxlbmFtZTohITsgcyFcLmtvXChcfFwueHpcKSEhJwoKICAgICAg IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvYXRoMTBrX3BjaS5rbwoKCgpQYXNzIHBh cnRzIG9mIHRoaXMgdG8gdGhlIHNjcmlwdDo6CgoKCiAgICAgICAkIC4vc2NyaXB0cy9nZXRfbWFp bnRhaW5lci5wbCAtZiBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrKgoKICAgICAgIFNv bWUgSHVtYW4gPHNodW1hbkBleGFtcGxlLmNvbT4gKHN1cHBvcnRlcjpRVUFMQ09NTSBBVEhFUk9T IEFUSDEwSyBXSVJFTEVTUyBEUklWRVIpCgogICAgICAgQW5vdGhlciBTLiBIdW1hbiA8YXNvbWVo dW1hbkBleGFtcGxlLmNvbT4gKG1haW50YWluZXI6TkVUV09SS0lORyBEUklWRVJTKQoKICAgICAg IGF0aDEwa0BsaXN0cy5pbmZyYWRlYWQub3JnIChvcGVuIGxpc3Q6UVVBTENPTU0gQVRIRVJPUyBB VEgxMEsgV0lSRUxFU1MgRFJJVkVSKQoKICAgICAgIGxpbnV4LXdpcmVsZXNzQHZnZXIua2VybmVs Lm9yZyAob3BlbiBsaXN0Ok5FVFdPUktJTkcgRFJJVkVSUyAoV0lSRUxFU1MpKQoKICAgICAgIG5l dGRldkB2Z2VyLmtlcm5lbC5vcmcgKG9wZW4gbGlzdDpORVRXT1JLSU5HIERSSVZFUlMpCgogICAg ICAgbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZyAob3BlbiBsaXN0KQoKCgpEb24ndCBzZW50 IHlvdXIgcmVwb3J0IHRvIGFsbCBvZiB0aGVtLiBTZW5kIGl0IHRvIHRoZSBtYWludGFpbmVycywg d2hpY2ggdGhlCgpzY3JpcHQgY2FsbHMgInN1cHBvcnRlcjoiOyBhZGRpdGlvbmFsbHkgQ0MgdGhl IG1vc3Qgc3BlY2lmaWMgbWFpbGluZyBsaXN0IGZvcgoKdGhlIGNvZGUgYXMgd2VsbCBhcyB0aGUg TGludXggS2VybmVsIE1haWxpbmcgTGlzdCAoTEtNTCkuIEluIHRoaXMgY2FzZSB5b3UgdGh1cwoK d291bGQgbmVlZCB0byBzZW5kIHRoZSByZXBvcnQgdG8gJ1NvbWUgSHVtYW4gPHNodW1hbkBleGFt cGxlLmNvbT4nIHdpdGgKCidhdGgxMGtAbGlzdHMuaW5mcmFkZWFkLm9yZycgYW5kICdsaW51eC1r ZXJuZWxAdmdlci5rZXJuZWwub3JnJyBpbiBDQy4KCgoKTm90ZTogaW4gY2FzZSB5b3UgY2xvbmVk IHRoZSBMaW51eCBzb3VyY2VzIHdpdGggZ2l0IHlvdSBtaWdodCB3YW50IHRvIGNhbGwKCmBgZ2V0 X21haW50YWluZXIucGxgYCBhIHNlY29uZCB0aW1lIHdpdGggYGAtLWdpdGBgLiBUaGUgc2NyaXB0 IHRoZW4gd2lsbCBsb29rCgphdCB0aGUgY29tbWl0IGhpc3RvcnkgdG8gZmluZCB3aGljaCBwZW9w bGUgcmVjZW50bHkgd29ya2VkIG9uIHRoZSBjb2RlIGluCgpxdWVzdGlvbiwgYXMgdGhleSBtaWdo dCBiZSBhYmxlIHRvIGhlbHAuIEJ1dCB1c2UgdGhlc2UgcmVzdWx0cyB3aXRoIGNhcmUsIGFzIGl0 CgpjYW4gZWFzaWx5IHNlbmQgeW91IGluIGEgd3JvbmcgZGlyZWN0aW9uLiBUaGF0IGZvciBleGFt cGxlIGhhcHBlbnMgcXVpY2tseSBpbgoKYXJlYXMgcmFyZWx5IGNoYW5nZWQgKGxpa2Ugb2xkIG9y IHVubWFpbnRhaW5lZCBkcml2ZXJzKTogc29tZXRpbWVzIHN1Y2ggY29kZSBpcwoKbW9kaWZpZWQg ZHVyaW5nIHRyZWUtd2lkZSBjbGVhbnVwcyBieSBkZXZlbG9wZXJzIHRoYXQgZG8gbm90IGNhcmUg YWJvdXQgdGhlCgpwYXJ0aWN1bGFyIGRyaXZlciBhdCBhbGwuCgoKCgoKU2VhcmNoIGZvciBleGlz dGluZyByZXBvcnRzLCBzZWNvbmQgcnVuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KCgoKICAgICpTZWFyY2ggdGhlIGFyY2hpdmVzIG9mIHRoZSBidWcgdHJhY2tlciBv ciBtYWlsaW5nIGxpc3QgaW4gcXVlc3Rpb24KCiAgICB0aG9yb3VnaGx5IGZvciByZXBvcnRzIHRo YXQgbWlnaHQgbWF0Y2ggeW91ciBpc3N1ZS4gSWYgeW91IGZpbmQgYW55dGhpbmcsCgogICAgam9p biB0aGUgZGlzY3Vzc2lvbiBpbnN0ZWFkIG9mIHNlbmRpbmcgYSBuZXcgcmVwb3J0LioKCgoKQXMg bWVudGlvbmVkIGVhcmxpZXIgYWxyZWFkeTogcmVwb3J0aW5nIGFuIGlzc3VlIHRoYXQgc29tZW9u ZSBlbHNlIGFscmVhZHkKCmJyb3VnaHQgZm9yd2FyZCBpcyBvZnRlbiBhIHdhc3RlIG9mIHRpbWUg Zm9yIGV2ZXJ5b25lIGludm9sdmVkLCBlc3BlY2lhbGx5IHlvdQoKYXMgdGhlIHJlcG9ydGVyLiBU aGF0J3Mgd2h5IHlvdSBzaG91bGQgc2VhcmNoIGZvciBleGlzdGluZyByZXBvcnQgYWdhaW4sIG5v dwoKdGhhdCB5b3Uga25vdyB3aGVyZSB0aGV5IG5lZWQgdG8gYmUgcmVwb3J0ZWQgdG8uIElmIGl0 J3MgbWFpbGluZyBsaXN0LCB5b3Ugd2lsbAoKb2Z0ZW4gZmluZCBpdHMgYXJjaGl2ZXMgb24gYGxv cmUua2VybmVsLm9yZyA8aHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvPmBfLgoKCgpCdXQgc29tZSBs aXN0IGFyZSBob3N0ZWQgaW4gZGlmZmVyZW50IHBsYWNlcy4gVGhhdCBmb3IgZXhhbXBsZSBpcyB0 aGUgY2FzZSBmb3IKCnRoZSBhdGgxMGsgV2lGaSBkcml2ZXIgdXNlZCBhcyBleGFtcGxlIGluIHRo ZSBwcmV2aW91cyBzdGVwLiBCdXQgeW91J2xsIG9mdGVuCgpmaW5kIHRoZSBhcmNoaXZlcyBmb3Ig dGhlc2UgbGlzdHMgZWFzaWx5IG9uIHRoZSBuZXQuIFNlYXJjaGluZyBmb3IgJ2FyY2hpdmUKCmF0 aDEwa0BsaXN0cy5pbmZyYWRlYWQub3JnJyBmb3IgZXhhbXBsZSB3aWxsIGxlYWQgeW91IHRvIHRo ZSBgSW5mbyBwYWdlIGZvciB0aGUKCmF0aDEwayBtYWlsaW5nIGxpc3QgPGh0dHBzOi8vbGlzdHMu aW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2F0aDEwaz5gXywKCndoaWNoIGF0IHRoZSB0 b3AgbGlua3MgdG8gaXRzCgpgbGlzdCBhcmNoaXZlcyA8aHR0cHM6Ly9saXN0cy5pbmZyYWRlYWQu b3JnL3BpcGVybWFpbC9hdGgxMGsvPmBfLiBTYWRseSB0aGlzIGFuZAoKcXVpdGUgYSBmZXcgb3Ro ZXIgbGlzdHMgbWlzcyBhIHdheSB0byBzZWFyY2ggdGhlIGFyY2hpdmVzLiBJbiB0aG9zZSBjYXNl cyB1c2UgYQoKcmVndWxhciBpbnRlcm5ldCBzZWFyY2ggZW5naW5lIGFuZCBhZGQgc29tZXRoaW5n IGxpa2UKCidzaXRlOmxpc3RzLmluZnJhZGVhZC5vcmcvcGlwZXJtYWlsL2F0aDEway8nIHRvIHlv dXIgc2VhcmNoIHRlcm1zLCB3aGljaCBsaW1pdHMKCnRoZSByZXN1bHRzIHRvIHRoZSBhcmNoaXZl cyBhdCB0aGF0IFVSTC4KCgoKSXQncyBhbHNvIHdpc2UgdG8gY2hlY2sgdGhlIGludGVybmV0LCBM S01MIGFuZCBtYXliZSBidWd6aWxsYS5rZXJuZWwub3JnIGFnYWluCgphdCB0aGlzIHBvaW50LgoK CgpGb3IgZGV0YWlscyBob3cgdG8gc2VhcmNoIGFuZCB3aGF0IHRvIGRvIGlmIHlvdSBmaW5kIG1h dGNoaW5nIHJlcG9ydHMgc2VlCgoiU2VhcmNoIGZvciBleGlzdGluZyByZXBvcnRzLCBmaXJzdCBy dW4iIGFib3ZlLgoKCgpEbyBub3QgaHVycnkgd2l0aCB0aGlzIHN0ZXAgb2YgdGhlIHJlcG9ydGlu ZyBwcm9jZXNzOiBzcGVuZGluZyAzMCB0byA2MCBtaW51dGVzCgpvciBldmVuIG1vcmUgdGltZSBj YW4gc2F2ZSB5b3UgYW5kIG90aGVycyBxdWl0ZSBhIGxvdCBvZiB0aW1lIGFuZCB0cm91YmxlLgoK CgoKCkluc3RhbGwgYSBmcmVzaCBrZXJuZWwgZm9yIHRlc3RpbmcKCi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KCgoKICAgICpVbmxlc3MgeW91IGFyZSBhbHJlYWR5IHJ1bm5pbmcg dGhlIGxhdGVzdCAnbWFpbmxpbmUnIExpbnV4IGtlcm5lbCwgYmV0dGVyCgogICAgZ28gYW5kIGlu c3RhbGwgaXQgZm9yIHRoZSByZXBvcnRpbmcgcHJvY2Vzcy4gVGVzdGluZyBhbmQgcmVwb3J0aW5n IHdpdGgKCiAgICB0aGUgbGF0ZXN0ICdzdGFibGUnIExpbnV4IGNhbiBiZSBhbiBhY2NlcHRhYmxl IGFsdGVybmF0aXZlIGluIHNvbWUKCiAgICBzaXR1YXRpb25zOyBkdXJpbmcgdGhlIG1lcmdlIHdp bmRvdyB0aGF0IGFjdHVhbGx5IG1pZ2h0IGJlIGV2ZW4gdGhlIGJlc3QKCiAgICBhcHByb2FjaCwg YnV0IGluIHRoYXQgZGV2ZWxvcG1lbnQgcGhhc2UgaXQgY2FuIGJlIGFuIGV2ZW4gYmV0dGVyIGlk ZWEgdG8KCiAgICBzdXNwZW5kIHlvdXIgZWZmb3J0cyBmb3IgYSBmZXcgZGF5cyBhbnl3YXkuIFdo YXRldmVyIHZlcnNpb24geW91IGNob29zZSwKCiAgICBpZGVhbGx5IHVzZSBhICd2YW5pbGxhJyBi dWlsdC4gSWdub3JpbmcgdGhlc2UgYWR2aWNlcyB3aWxsIGRyYW1hdGljYWxseQoKICAgIGluY3Jl YXNlIHRoZSByaXNrIHlvdXIgcmVwb3J0IHdpbGwgYmUgcmVqZWN0ZWQgb3IgaWdub3JlZC4qCgoK CkFzIG1lbnRpb25lZCBpbiB0aGUgZGV0YWlsZWQgZXhwbGFuYXRpb24gZm9yIHRoZSBmaXJzdCBz dGVwIGFscmVhZHk6IExpa2UgbW9zdAoKcHJvZ3JhbW1lcnMsIExpbnV4IGtlcm5lbCBkZXZlbG9w ZXJzIGRvbid0IGxpa2UgdG8gc3BlbmQgdGltZSBkZWFsaW5nIHdpdGgKCnJlcG9ydHMgZm9yIGlz c3VlcyB0aGF0IGRvbid0IGV2ZW4gaGFwcGVuIHdpdGggdGhlIGN1cnJlbnQgY29kZS4gSXQncyBq dXN0IGEKCndhc3RlIGV2ZXJ5Ym9keSdzIHRpbWUsIGVzcGVjaWFsbHkgeW91cnMuIFRoYXQncyB3 aHkgaXQncyBpbiBldmVyeWJvZHkncwoKaW50ZXJlc3QgdGhhdCB5b3UgY29uZmlybSB0aGUgaXNz dWUgc3RpbGwgZXhpc3RzIHdpdGggdGhlIGxhdGVzdCB1cHN0cmVhbSBjb2RlCgpiZWZvcmUgcmVw b3J0aW5nIGl0LiBZb3UgYXJlIGZyZWUgdG8gaWdub3JlIHRoaXMgYWR2aWNlLCBidXQgYXMgb3V0 bGluZWQKCmVhcmxpZXI6IGRvaW5nIHNvIGRyYW1hdGljYWxseSBpbmNyZWFzZXMgdGhlIHJpc2sg dGhhdCB5b3VyIGlzc3VlIHJlcG9ydCBtaWdodAoKZ2V0IHJlamVjdGVkIG9yIHNpbXBseSBpZ25v cmVkLgoKCgpJbiB0aGUgc2NvcGUgb2YgdGhlIGtlcm5lbCAibGF0ZXN0IHVwc3RyZWFtIiBub3Jt YWxseSBtZWFuczoKCgoKICogSW5zdGFsbCBhIG1haW5saW5lIGtlcm5lbDsgdGhlIGxhdGVzdCBz dGFibGUga2VybmVsIGNhbiBiZSBhbiBvcHRpb24sIGJ1dAoKICAgbW9zdCBvZiB0aGUgdGltZSBp cyBiZXR0ZXIgYXZvaWRlZC4gTG9uZ3Rlcm0ga2VybmVscyAoc29tZXRpbWVzIGNhbGxlZCAnTFRT CgogICBrZXJuZWxzJykgYXJlIHVuc3VpdGFibGUgYXQgdGhpcyBwb2ludCBvZiB0aGUgcHJvY2Vz cy4gVGhlIG5leHQgc3Vic2VjdGlvbgoKICAgZXhwbGFpbnMgYWxsIG9mIHRoaXMgaW4gbW9yZSBk ZXRhaWwuCgoKCiAqIFRoZSBvdmVyIG5leHQgc3Vic2VjdGlvbiBkZXNjcmliZXMgd2F5IHRvIG9i dGFpbiBhbmQgaW5zdGFsbCBzdWNoIGEga2VybmVsLgoKICAgSXQgYWxzbyBvdXRsaW5lcyB0aGF0 IHVzaW5nIGEgcHJlLWNvbXBpbGVkIGtlcm5lbCBhcmUgZmluZSwgYnV0IGJldHRlciBhcmUKCiAg IHZhbmlsbGEsIHdoaWNoIG1lYW5zOiBpdCB3YXMgYnVpbHQgdXNpbmcgTGludXggc291cmNlcyB0 YWtlbiBzdHJhaWdodCBgZnJvbQoKICAga2VybmVsLm9yZyA8aHR0cHM6Ly9rZXJuZWwub3JnLz5g XyBhbmQgbm90IG1vZGlmaWVkIG9yIGVuaGFuY2VkIGluIGFueSB3YXkuCgoKCkNob29zaW5nIHRo ZSByaWdodCB2ZXJzaW9uIGZvciB0ZXN0aW5nCgp+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn5+fn5+fn5+fgoKCgpIZWFkIG92ZXIgdG8gYGtlcm5lbC5vcmcgPGh0dHBzOi8va2VybmVsLm9y Zy8+YF8gdG8gZmluZCBvdXQgd2hpY2ggdmVyc2lvbiB5b3UKCndhbnQgdG8gdXNlIGZvciB0ZXN0 aW5nLiBJZ25vcmUgdGhlIGJpZyB5ZWxsb3cgYnV0dG9uIHRoYXQgc2F5cyAnTGF0ZXN0IHJlbGVh c2UnCgphbmQgbG9vayBhIGxpdHRsZSBsb3dlciBhdCB0aGUgdGFibGUuIEF0IGl0cyB0b3AgeW91 J2xsIHNlZSBhIGxpbmUgc3RhcnRpbmcgd2l0aAoKbWFpbmxpbmUsIHdoaWNoIG1vc3Qgb2YgdGhl IHRpbWUgd2lsbCBwb2ludCB0byBhIHByZS1yZWxlYXNlIHdpdGggYSB2ZXJzaW9uCgpudW1iZXIg bGlrZSAnNS44LXJjMicuIElmIHRoYXQncyB0aGUgY2FzZSwgeW91J2xsIHdhbnQgdG8gdXNlIHRo aXMgbWFpbmxpbmUKCmtlcm5lbCBmb3IgdGVzdGluZywgYXMgdGhhdCB3aGVyZSBhbGwgZml4ZXMg aGF2ZSB0byBiZSBhcHBsaWVkIGZpcnN0LiBEbyBub3QgbGV0Cgp0aGF0ICdyYycgc2NhcmUgeW91 LCB0aGVzZSAnZGV2ZWxvcG1lbnQga2VybmVscycgYXJlIHByZXR0eSByZWxpYWJsZSDigJQgYW5k IHlvdQoKbWFkZSBhIGJhY2t1cCwgYXMgeW91IHdlcmUgaW5zdHJ1Y3RlZCBhYm92ZSwgZGlkbid0 IHlvdT8KCgoKSW4gYWJvdXQgdHdvIG91dCBvZiBldmVyeSBuaW5lIHRvIHRlbiB3ZWVrcywgJ21h aW5saW5lJyBtaWdodCBwb2ludCB5b3UgdG8gYQoKcHJvcGVyIHJlbGVhc2Ugd2l0aCBhIHZlcnNp b24gbnVtYmVyIGxpa2UgJzUuNycuIElmIHRoYXQgaGFwcGVucywgY29uc2lkZXIKCnN1c3BlbmRp bmcgdGhlIHJlcG9ydGluZyBwcm9jZXNzIHVudGlsIHRoZSBmaXJzdCBwcmUtcmVsZWFzZSBvZiB0 aGUgbmV4dAoKdmVyc2lvbiAoNS44LXJjMSkgc2hvd3MgdXAgb24ga2VybmVsLm9yZy4gVGhhdCdz IGJlY2F1c2UgdGhlIExpbnV4IGRldmVsb3BtZW50CgpjeWNsZSB0aGVuIGlzIGluIGl0cyB0d28t d2VlayBsb25nICdtZXJnZSB3aW5kb3cnLiBUaGUgYnVsayBvZiB0aGUgY2hhbmdlcyBhbmQKCmFs bCBpbnRydXNpdmUgb25lcyBnZXQgbWVyZ2VkIGZvciB0aGUgbmV4dCByZWxlYXNlIGR1cmluZyB0 aGlzIHRpbWUuIEl0J3MgYSBiaXQKCm1vcmUgcmlza3kgdG8gdXNlIG1haW5saW5lIGR1cmluZyB0 aGlzIHBlcmlvZC4gS2VybmVsIGRldmVsb3BlcnMgYXJlIGFsc28gb2Z0ZW4KCnF1aXRlIGJ1c3kg dGhlbiBhbmQgbWlnaHQgaGF2ZSBubyBzcGFyZSB0aW1lIHRvIGRlYWwgd2l0aCBpc3N1ZSByZXBv cnRzLiBJdCdzCgphbHNvIHF1aXRlIHBvc3NpYmxlIHRoYXQgb25lIG9mIHRoZSBtYW55IGNoYW5n ZXMgYXBwbGllZCBkdXJpbmcgdGhlIG1lcmdlCgp3aW5kb3cgZml4ZXMgdGhlIGlzc3VlIHlvdSBm YWNlOyB0aGF0J3Mgd2h5IHlvdSBzb29uIHdvdWxkIGhhdmUgdG8gcmV0ZXN0IHdpdGgKCmEgbmV3 ZXIga2VybmVsIHZlcnNpb24gYW55d2F5LCBhcyBvdXRsaW5lZCBiZWxvdyBpbiB0aGUgc2VjdGlv biAnRHV0aWVzIGFmdGVyCgp0aGUgcmVwb3J0IHdlbnQgb3V0Jy4KCgoKVGhhdCdzIHdoeSBpdCBt aWdodCBtYWtlIHNlbnNlIHRvIHdhaXQgdGlsbCB0aGUgbWVyZ2Ugd2luZG93IGlzIG92ZXIuIEJ1 dCBkb24ndAoKdG8gdGhhdCBpZiB5b3UncmUgZGVhbGluZyB3aXRoIHNvbWV0aGluZyB0aGF0IHNo b3VsZG4ndCB3YWl0LiBJbiB0aGF0IGNhc2UKCmNvbnNpZGVyIG9idGFpbmluZyB0aGUgbGF0ZXN0 IG1haW5saW5lIGtlcm5lbCB2aWEgZ2l0IChzZWUgYmVsb3cpIG9yIHVzZSB0aGUKCmxhdGVzdCBz dGFibGUgdmVyc2lvbiBvZmZlcmVkIG9uIGtlcm5lbC5vcmcuIFVzaW5nIHRoYXQgaXMgYWxzbyBh Y2NlcHRhYmxlIGluCgpjYXNlIG1haW5saW5lIGZvciBzb21lIHJlYXNvbiBkb2VzIGN1cnJlbnRs eSBub3Qgd29yayBmb3IgeW91LiBBbiBpbiBnZW5lcmFsOgoKdXNpbmcgaXQgZm9yIHJlcHJvZHVj aW5nIHRoZSBpc3N1ZSBpcyBhbHNvIGJldHRlciB0aGFuIG5vdCByZXBvcnRpbmcgaXQgaXNzdWUK CmF0IGFsbC4KCgoKQmV0dGVyIGF2b2lkIHVzaW5nIHRoZSBsYXRlc3Qgc3RhYmxlIGtlcm5lbCBv dXRzaWRlIG1lcmdlIHdpbmRvd3MsIGFzIGFsbCBmaXhlcwoKbXVzdCBiZSBhcHBsaWVkIHRvIG1h aW5saW5lIGZpcnN0LiBUaGF0J3Mgd2h5IGNoZWNraW5nIHRoZSBsYXRlc3QgbWFpbmxpbmUKCmtl cm5lbCBpcyBzbyBpbXBvcnRhbnQ6IGFueSBpc3N1ZSB5b3Ugd2FudCB0byBzZWUgZml4ZWQgaW4g b2xkZXIgdmVyc2lvbiBsaW5lcwoKbmVlZHMgdG8gYmUgZml4ZWQgaW4gbWFpbmxpbmUgZmlyc3Qg YmVmb3JlIGl0IGNhbiBnZXQgYmFja3BvcnRlZCwgd2hpY2ggY2FuCgp0YWtlIGEgZmV3IGRheXMg b3Igd2Vla3MuIEFub3RoZXIgcmVhc29uOiB0aGUgZml4IHlvdSBob3BlIGZvciBtaWdodCBiZSB0 b28KCmhhcmQgb3Igcmlza3kgZm9yIGJhY2twb3J0aW5nOyByZXBvcnRpbmcgdGhlIGlzc3VlIGFn YWluIGhlbmNlIGlzIHVubGlrZWx5IHRvCgpjaGFuZ2UgYW55dGhpbmcuCgoKClRoZXNlIGFzcGVj dHMgYXJlIGFsc28gd2h5IGxvbmd0ZXJtIGtlcm5lbHMgKHNvbWV0aW1lcyBjYWxsZWQgIkxUUyBr ZXJuZWxzIikKCmFyZSB1bnN1aXRhYmxlIGZvciB0aGlzIHBhcnQgb2YgdGhlIHJlcG9ydGluZyBw cm9jZXNzOiB0aGV5IGFyZSB0byBkaXN0YW50IGZyb20KCnRoZSBjdXJyZW50IGNvZGUuIEhlbmNl IGdvIGFuZCB0ZXN0IG1haW5saW5lIGZpcnN0IGFuZCBmb2xsb3cgdGhlIHByb2Nlc3MKCmZ1cnRo ZXI6IGlmIHRoZSBpc3N1ZSBkb2Vzbid0IG9jY3VyIHdpdGggbWFpbmxpbmUgaXQgd2lsbCBndWlk ZSB5b3UgaG93IHRvIGdldAoKaXQgZml4ZWQgaW4gb2xkZXIgdmVyc2lvbiBsaW5lcywgaWYgdGhh dCdzIGluIHRoZSBjYXJkcyBmb3IgdGhlIGZpeCBpbiBxdWVzdGlvbi5XCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCktzdW1taXQtZGlzY3VzcyBtYWlsaW5n IGxpc3QKS3N1bW1pdC1kaXNjdXNzQGxpc3RzLmxpbnV4Zm91bmRhdGlvbi5vcmcKaHR0cHM6Ly9s aXN0cy5saW51eGZvdW5kYXRpb24ub3JnL21haWxtYW4vbGlzdGluZm8va3N1bW1pdC1kaXNjdXNz Cg==