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=-8.4 required=3.0 tests=DKIM_ADSP_ALL,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT 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 A7704C2D0DB for ; Mon, 27 Jan 2020 16:15:35 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (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 6E24A2087F for ; Mon, 27 Jan 2020 16:15:35 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=amazon.com header.i=@amazon.com header.b="RoDGLdT0" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 6E24A2087F Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=amazon.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iw72g-0005SZ-Rd; Mon, 27 Jan 2020 16:15:14 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iw72f-0005SU-4A for xen-devel@lists.xenproject.org; Mon, 27 Jan 2020 16:15:13 +0000 X-Inumbo-ID: 31e074f4-4120-11ea-856f-12813bfff9fa Received: from smtp-fw-9101.amazon.com (unknown [207.171.184.25]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 31e074f4-4120-11ea-856f-12813bfff9fa; Mon, 27 Jan 2020 16:15:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1580141712; x=1611677712; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=LL1kZnjPJF0/WwrZQYzBWOWCC0pjuAdQKcPxLjpNiK8=; b=RoDGLdT0hr00bgDvJEgk+UbtJLEG8x0yjpgwoSa0Uz9/jXf6KBWLlsG4 9ZQfL/bgh/rzooHnVnb0Lec8KOtgVuyfMwLxwYuAKLU6aZIo9+6/f2/Ry xDMhW1nrIoea6LotN/0C5eAiyoGVgI+CbRTDhNhF4LouPAHKxDsEUYQNH Y=; IronPort-SDR: 3Gj9HhmwIH3KhVWYSjZ4SGNSCHnCyBEy9mC4jUo3Hs2Qt+kyjLl6UmPL/l8unLnAgGwnwLyg17 xfcBwUWZnWJQ== X-IronPort-AV: E=Sophos;i="5.70,370,1574121600"; d="scan'208";a="12927570" Received: from sea32-co-svc-lb4-vlan3.sea.corp.amazon.com (HELO email-inbound-relay-2a-22cc717f.us-west-2.amazon.com) ([10.47.23.38]) by smtp-border-fw-out-9101.sea19.amazon.com with ESMTP; 27 Jan 2020 16:14:36 +0000 Received: from EX13MTAUEA002.ant.amazon.com (pdx4-ws-svc-p6-lb7-vlan3.pdx.amazon.com [10.170.41.166]) by email-inbound-relay-2a-22cc717f.us-west-2.amazon.com (Postfix) with ESMTPS id 75101A21ED; Mon, 27 Jan 2020 16:14:35 +0000 (UTC) Received: from EX13D32EUC004.ant.amazon.com (10.43.164.121) by EX13MTAUEA002.ant.amazon.com (10.43.61.77) with Microsoft SMTP Server (TLS) id 15.0.1236.3; Mon, 27 Jan 2020 16:14:35 +0000 Received: from EX13MTAUEA002.ant.amazon.com (10.43.61.77) by EX13D32EUC004.ant.amazon.com (10.43.164.121) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Mon, 27 Jan 2020 16:14:34 +0000 Received: from u2f063a87eabd5f.cbg10.amazon.com (10.125.106.135) by mail-relay.amazon.com (10.43.61.169) with Microsoft SMTP Server id 15.0.1236.3 via Frontend Transport; Mon, 27 Jan 2020 16:14:32 +0000 From: Paul Durrant To: Date: Mon, 27 Jan 2020 16:14:30 +0000 Message-ID: <20200127161430.3312-1-pdurrant@amazon.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Precedence: Bulk Subject: [Xen-devel] [PATCH] docs/designs: Add a design document for transparent live migration X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Stefano Stabellini , Julien Grall , Wei Liu , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Paul Durrant , Ian Jackson Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" SXQgaGFzIGJlY29tZSBhcHBhcmVudCB0byBzb21lIGxhcmdlIGNsb3VkIHByb3ZpZGVycyB0aGF0 IHRoZSBjdXJyZW50Cm1vZGVsIG9mIGNvLW9wZXJhdGl2ZSBtaWdyYXRpb24gb2YgZ3Vlc3RzIHVu ZGVyIFhlbiBpcyBub3QgdXNhYmxlIGFzIGl0CnBsYWNlcyB0cnVzdCBpbiBzb2Z0d2FyZSBydW5u aW5nIGluc2lkZSB0aGUgZ3Vlc3QsIHdoaWNoIGlzIGxpa2VseQpiZXlvbmQgdGhlIHByb3ZpZGVy J3MgdHJ1c3QgYm91bmRhcnkuClRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIHByb3Bvc2FsIGZvciBh ICd0cmFuc3BhcmVudCcgbGl2ZSBtaWdyYXRpb24sCmRlc2lnbmVkIHRvIG92ZXJjb21lIHRoZSBu ZWVkIGZvciB0aGlzIHRydXN0LgoKU2lnbmVkLW9mZi1ieTogUGF1bCBEdXJyYW50IDxwZHVycmFu dEBhbWF6b24uY29tPgotLS0KQ2M6IEFuZHJldyBDb29wZXIgPGFuZHJldy5jb29wZXIzQGNpdHJp eC5jb20+CkNjOiBHZW9yZ2UgRHVubGFwIDxHZW9yZ2UuRHVubGFwQGV1LmNpdHJpeC5jb20+CkNj OiBJYW4gSmFja3NvbiA8aWFuLmphY2tzb25AZXUuY2l0cml4LmNvbT4KQ2M6IEphbiBCZXVsaWNo IDxqYmV1bGljaEBzdXNlLmNvbT4KQ2M6IEp1bGllbiBHcmFsbCA8anVsaWVuQHhlbi5vcmc+CkNj OiBLb25yYWQgUnplc3p1dGVrIFdpbGsgPGtvbnJhZC53aWxrQG9yYWNsZS5jb20+CkNjOiBTdGVm YW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+CkNjOiBXZWkgTGl1IDx3bEB4 ZW4ub3JnPgotLS0KIGRvY3MvZGVzaWducy90cmFuc3BhcmVudC1taWdyYXRpb24ubWQgfCAyNjYg KysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCAyNjYgaW5zZXJ0aW9u cygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRvY3MvZGVzaWducy90cmFuc3BhcmVudC1taWdyYXRp b24ubWQKCmRpZmYgLS1naXQgYS9kb2NzL2Rlc2lnbnMvdHJhbnNwYXJlbnQtbWlncmF0aW9uLm1k IGIvZG9jcy9kZXNpZ25zL3RyYW5zcGFyZW50LW1pZ3JhdGlvbi5tZApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwLi45ZjI2ZDRkYTZkCi0tLSAvZGV2L251bGwKKysrIGIvZG9j cy9kZXNpZ25zL3RyYW5zcGFyZW50LW1pZ3JhdGlvbi5tZApAQCAtMCwwICsxLDI2NiBAQAorIyBU cmFuc3BhcmVudCBNaWdyYXRpb24gb2YgR3Vlc3RzIG9uIFhlbgorCisjIyBCYWNrZ3JvdW5kCisK K1RoZSB0ZXJtICoqdHJhbnNwYXJlbnQgbWlncmF0aW9uKiogbmVlZHMgcXVhbGlmaWNhdGlvbi4g SGVyZSBpdCBpcyB0YWtlbiB0bworbWVhbiBtaWdyYXRpb24gb2YgYSBndWVzdCB3aXRob3V0IHRo ZSBjby1vcGVyYXRpb24gb2Ygc29mdHdhcmUgcnVubmluZyBpbnNpZGUKK3RoYXQgZ3Vlc3QuIEl0 IGlzIG5vdCB0YWtlbiB0byBtZWFuIHRoYXQgYSBndWVzdCwgYXdhcmUgdGhhdCBpdCBpcyB2aXJ0 dWFsaXplZAordW5kZXIgWGVuLCBpcyBub3QgZ29pbmcgdG8gc2VlICphbnkqIGNoYW5nZXMgYWNy b3NzIGEgbWlncmF0aW9uIGJ1dCBubyBwYXJ0IG9mCittaWdyYXRpb24gc2hvdWxkIHJlcXVpcmUg YW55IGV4cGxpY2l0IGFjdGlvbiBieSB0aGUgZ3Vlc3QgKGluY2x1ZGluZyByZS1yZWFkaW5nCith bnkgc3RhdGUgdGhhdCBpdCBtYXkgaGF2ZSBjYWNoZWQpLgorCitUaGUgbm9ybWFsIG1vZGVsIG9m IG1pZ3JhdGlvbiBpbiBYZW4gaXMgZHJpdmVuIGJ5IHRoZSBndWVzdCBiZWNhdXNlIGl0IHdhcwor b3JpZ2luYWxseSBpbXBsZW1lbnRlZCBmb3IgUFYgZ3Vlc3RzLCB3aGVyZSB0aGUgZ3Vlc3QgbXVz dCBiZSBhd2FyZSBpdCBpcworcnVubmluZyB1bmRlciBYZW4gYW5kIGlzIGhlbmNlIGV4cGVjdGVk IHRvIGNvLW9wZXJhdGUuIFRoaXMgbW9kZWwgZGF0ZXMgZnJvbQorYW4gZXJhIHdoZW4gaXQgd2Fz IGFzc3VtZWQgdGhhdCB0aGUgaG9zdCBhZG1pbmlzdHJhdG9yIGhhZCBjb250cm9sIG9mIGF0IGxl YXN0Cit0aGUgcHJpdmlsZWdlZCBzb2Z0d2FyZSBydW5uaW5nIGluIHRoZSBndWVzdCAoaS5lLiB0 aGUgZ3Vlc3Qga2VybmVsKSB3aGljaCBtYXkKK3N0aWxsIGJlIHRydWUgaW4gYW4gZW50ZXJwcmlz ZSBkZXBsb3ltZW50IGJ1dCBpcyBub3QgZ2VuZXJhbGx5IHRydWUgaW4gYSBjbG91ZAorZW52aXJv bm1lbnQuIFRoZSBhaW0gb2YgdHJhbnNwYXJlbnQgbWlncmF0aW9uIGlzIHRvIHByb3ZpZGUgYSBt b2RlbCB3aGljaCBpcworcHVyZWx5IGhvc3QgZHJpdmVuLCByZXF1aXJpbmcgbm8gY28tb3BlcmF0 aW9uIGZyb20gb3IgdHJ1c3QgaW4gdGhlIHNvZnR3YXJlCitydW5uaW5nIGluIHRoZSBndWVzdCwg YW5kIGlzIHRodXMgc3VpdGFibGUgZm9yIGNsb3VkIHNjZW5hcmlvcy4KKworUFYgZ3Vlc3RzIGFy ZSBvdXQgb2Ygc2NvcGUgZm9yIHRoaXMgcHJvamVjdCBiZWNhdXNlLCBhcyBpcyBvdXRsaW5lZCBh Ym92ZSwgdGhleQoraGF2ZSBhIHN5bWJpb3RpYyByZWxhdGlvbnNoaXAgd2l0aCB0aGUgaHlwZXJ2 aXNvciBhbmQgdGhlcmVmb3JlIGEgY2VydGFpbiBsZXZlbAorb2YgY28tb3BlcmF0aW9uIGNhbiBi ZSBhc3N1bWVkLgorSFZNIGd1ZXN0cyBjYW4gYWxyZWFkeSBiZSBtaWdyYXRlZCBvbiBYZW4gd2l0 aG91dCBndWVzdCBjby1vcGVyYXRpb24gYnV0IG9ubHkKK2lmIHRoZXkgZG9u4oCZdCBoYXZlIFBW IGRyaXZlcnMgaW5zdGFsbGVkWzFdIG9yIGFyZSBpbiBwb3dlciBzdGF0ZSBTMy4gVGhlCityZWFz b24gZm9yIG5vdCBleHBlY3RpbmcgY28tb3BlcmF0aW9uIGlmIHRoZSBndWVzdCBpcyBpbiBTMyBp cyBvYnZpb3VzLCBidXQgdGhlCityZWFzb24gY28tb3BlcmF0aW9uIGlzIGV4cGVjdGVkIGlmIFBW IGRyaXZlcnMgYXJlIGluc3RhbGxlZCBpcyBkdWUgdG8gdGhlCituYXR1cmUgb2YgUFYgcHJvdG9j b2xzLgorCisjIyBYZW5zdG9yZSBOb2RlcyBhbmQgRG9tYWluIElECisKK1RoZSBQViBkcml2ZXIg bW9kZWwgY29uc2lzdHMgb2YgYSAqZnJvbnRlbmQqIGFuZCBhICpiYWNrZW5kKi4gVGhlIGZyb250 ZW5kIHJ1bnMKK2luc2lkZSB0aGUgZ3Vlc3QgZG9tYWluIGFuZCB0aGUgYmFja2VuZCBydW5zIGlu c2lkZSBhICpzZXJ2aWNlIGRvbWFpbiogd2hpY2gKK21heSBvciBtYXkgbm90IGRvbWFpbiAwLiBU aGUgZnJvbnRlbmQgYW5kIGJhY2tlbmQgdHlwaWNhbGx5IHBhc3MgZGF0YSB2aWEKK21lbW9yeSBw YWdlcyB3aGljaCBhcmUgc2hhcmVkIGJldHdlZW4gdGhlIHR3byBkb21haW5zLCBidXQgdGhpcyBj aGFubmVsIG9mCitjb21tdW5pY2F0aW9uIGlzIGdlbmVyYWxseSBlc3RhYmxpc2hlZCB1c2luZyB4 ZW5zdG9yZSAodGhlIHN0b3JlIHByb3RvY29sCitpdHNlbGYgYmVpbmcgYW4gZXhjZXB0aW9uIHRv IHRoaXMgZm9yIG9idmlvdXMgY2hpY2tlbi1hbmQtZWdnIHJlYXNvbnMpLgorCitUeXBpY2FsIHBy b3RvY29sIGVzdGFibGlzaG1lbnQgaXMgYmFzZWQgb24gdXNlIG9mIHR3byBzZXBhcmF0ZSB4ZW5z dG9yZQorKmFyZWFzKi4gSWYgd2UgY29uc2lkZXIgUFYgZHJpdmVycyBmb3IgdGhlICpuZXRpZiog cHJvdG9jb2wgKGkuZS4gY2xhc3MgdmlmKQorYW5kIGFzc3VtZSB0aGUgZ3Vlc3QgaGFzIGRvbWlk IFgsIHRoZSBzZXJ2aWNlIGRvbWFpbiBoYXMgZG9taWQgWSwgYW5kIHRoZSB2aWYKK2hhcyBpbmRl eCBaIHRoZW4gdGhlIGZyb250ZW5kIGFyZWEgd2lsbCByZXNpZGUgdW5kZXIgdGhlIHBhcmVudCBu b2RlOgorCitgL2xvY2FsL2RvbWFpbi9ZL2RldmljZS92aWYvWmAKKworQWxsIGJhY2tlbmRzLCBi eSBjb252ZW50aW9uLCB0eXBpY2FsbHkgcmVzaWRlIHVuZGVyIHBhcmVudCBub2RlOgorCitgL2xv Y2FsL2RvbWFpbi9YL2JhY2tlbmRgCisKK2FuZCB0aGUgbm9ybWFsIGJhY2tlbmQgYXJlYSBmb3Ig dmlmIFogd291bGQgYmU6CisKK2AvbG9jYWwvZG9tYWluL1gvYmFja2VuZC92aWYvWS9aYAorCiti dXQgdGhpcyBzaG91bGQgbm90IGJlIGFzc3VtZWQuCisKK1RoZSB0b29sc3RhY2sgd2lsbCBwbGFj ZSB0d28gbm9kZXMgaW4gdGhlIGZyb250ZW5kIGFyZWEgdG8gZXhwbGljaXRseSBsb2NhdGUKK3Ro ZSBiYWNrZW5kOgorCisgICAgKiBgYmFja2VuZGA6IHRoZSBmdWxseSBxdWFsaWZpZWQgeGVuc3Rv cmUgcGF0aCBvZiB0aGUgYmFja2VuZCBhcmVhCisgICAgKiBgYmFja2VuZC1pZGA6IHRoZSBkb21p ZCBvZiB0aGUgc2VydmljZSBkb21haW4KKworYW5kIHNpbWlsYXJseSB0d28gbm9kZXMgaW4gdGhl IGJhY2tlbmQgYXJlYSB0byBsb2NhdGUgdGhlIGZyb250ZW5kIGFyZWE6CisKKyAgICAqIGBmcm9u dGVuZGA6IHRoZSBmdWxseSBxdWFsaWZpZWQgeGVuc3RvcmUgcGF0aCBvZiB0aGUgZnJvbnRlbmQg YXJlYQorICAgICogYGZyb250ZW5kLWlkYDogdGhlIGRvbWlkIG9mIHRoZSBndWVzdCBkb21haW4K KworCitUaGUgZ3Vlc3QgZG9tYWluIG9ubHkgaGFzIHdyaXRlIHBlcm1pc3Npb24gdG8gdGhlIGZy b250ZW5kIGFyZWEgYW5kIHNpbWlsYXJseQordGhlIHNlcnZpY2UgZG9tYWluIG9ubHkgaGFzIHdy aXRlIHBlcm1pc3Npb24gdG8gdGhlIGJhY2tlbmQgYXJlYSwgYnV0IGJvdGggZW5kcworaGF2ZSBy ZWFkIHBlcm1pc3Npb24gdG8gYm90aCBhcmVhcy4KKworVW5kZXIgYm90aCBmcm9udGVuZCBhbmQg YmFja2VuZCBhcmVhcyBpcyBhIG5vZGUgY2FsbGVkICpzdGF0ZSouIFRoaXMgaXMga2V5IHRvCitw cm90b2NvbCBlc3RhYmxpc2htZW50LiBVcG9uIFBWIGRldmljZSBjcmVhdGlvbiB0aGUgdG9vbHN0 YWNrIHdpbGwgc2V0IHRoZQordmFsdWUgb2YgYm90aCBzdGF0ZSBub2RlcyB0byAxIChYZW5idXNT dGF0ZUluaXRpYWxpc2luZ1syXSkuIFRoaXMgc2hvdWxkIGNhdXNlCitlbnVtZXJhdGlvbiBvZiBh cHByb3ByaWF0ZSBkZXZpY2VzIGluIGJvdGggdGhlIGd1ZXN0IGFuZCBzZXJ2aWNlIGRvbWFpbnMu IFRoZQorYmFja2VuZCBkZXZpY2UsIG9uY2UgaXQgaGFzIHdyaXR0ZW4gYW55IG5lY2Vzc2FyeSBw cm90b2NvbCBzcGVjaWZpYyBpbmZvcm1hdGlvbgoraW50byB0aGUgeGVuc3RvcmUgYmFja2VuZCBh cmVhICh0byBiZSByZWFkIGJ5IHRoZSBmcm9udGVuZCBkcml2ZXIpIHdpbGwgdXBkYXRlCit0aGUg YmFja2VuZCBzdGF0ZSBub2RlIHRvIDIgKFhlbmJ1c1N0YXRlSW5pdFdhaXQpLiBGcm9tIHRoaXMg cG9pbnQgb24gUFYKK3Byb3RvY29scyBkaWZmZXIgc2xpZ2h0bHk7IHRoZSBmb2xsb3dpbmcgaWxs dXN0cmF0aW9uIGlzIHRydWUgb2YgdGhlIG5ldGlmCitwcm90b2NvbC4KK1Vwb24gc2VlaW5nIGEg YmFja2VuZCBzdGF0ZSB2YWx1ZSBvZiAyLCB0aGUgZnJvbnRlbmQgZHJpdmVyIHdpbGwgdGhlbiBy ZWFkIHRoZQorcHJvdG9jb2wgc3BlY2lmaWMgaW5mb3JtYXRpb24sIHdyaXRlIGRldGFpbHMgb2Yg Z3JhbnQgcmVmZXJlbmNlcyAoZm9yIHNoYXJlZAorcGFnZXMpIGFuZCBldmVudCBjaGFubmVsIHBv cnRzIChmb3Igc2lnbmFsbGluZykgdGhhdCBpdCBoYXMgY3JlYXRlZCwgYW5kIHNldAordGhlIHN0 YXRlIG5vZGUgaW4gdGhlIGZyb250ZW5kIGFyZWEgdG8gNCAoWGVuYnVzU3RhdGVDb25uZWN0ZWQp LiBVcG9uIHNlZSB0aGlzCitmcm9udGVuZCBzdGF0ZSwgdGhlIGJhY2tlbmQgZHJpdmVyIHdpbGwg dGhlbiByZWFkIHRoZSBncmFudCByZWZlcmVuY2VzIChtYXBwaW5nCit0aGUgc2hhcmVkIHBhZ2Vz KSBhbmQgZXZlbnQgY2hhbm5lbCBwb3J0cyAob3BlbmluZyBpdHMgZW5kIG9mIHRoZW0pIGFuZCBz ZXQgdGhlCitzdGF0ZSBub2RlIGluIHRoZSBiYWNrZW5kIGFyZWEgdG8gNC4gUHJvdG9jb2wgZXN0 YWJsaXNobWVudCBpcyBub3cgY29tcGxldGUgYW5kCit0aGUgZnJvbnRlbmQgYW5kIGJhY2tlbmQg c3RhcnQgdG8gcGFzcyBkYXRhLgorCitCZWNhdXNlIHRoZSBkb21pZCBvZiBib3RoIGVuZHMgb2Yg YSBQViBwcm90b2NvbCBmb3JtcyBhIGtleSBwYXJ0IG9mIG5lZ290aWF0aW5nCit0aGUgZGF0YSBw bGFuZSBmb3IgdGhhdCBwcm90b2NvbCAoYmVjYXVzZSBpdCBpcyBlbmNvZGVkIGludG8gYm90aCB4 ZW5zdG9yZQorbm9kZXMgYW5kIG5vZGUgcGF0aHMpLCBhbmQgYmVjYXVzZSBndWVzdOKAmXMgb3du IGRvbWlkIGFuZCB0aGUgZG9taWQgb2YgdGhlCitzZXJ2aWNlIGRvbWFpbiBhcmUgdmlzaWJsZSB0 byB0aGUgZ3Vlc3QgaW4geGVuc3RvcmUgKGFuZCBoZW5jZSBtYXkgY2FjaGVkCitpbnRlcm5hbGx5 KSwgYW5kIG5laXRoZXIgYXJlIG5lY2Vzc2FyaWx5IHByZXNlcnZlZCBkdXJpbmcgbWlncmF0aW9u LCBpdCBpcworaGVuY2UgbmVjZXNzYXJ5IHRvIGhhdmUgdGhlIGNvLW9wZXJhdGlvbiBvZiB0aGUg ZnJvbnRlbmQgaW4gcmUtbmVnb3RpYXRpbmcgdGhlCitwcm90b2NvbCB1c2luZyB0aGUgbmV3IGRv bWlkIGFmdGVyIG1pZ3JhdGlvbi4KK01vcmVvdmVyIHRoZSBiYWNrZW5kLWlkIHZhbHVlIHdpbGwg YmUgdXNlZCBieSB0aGUgZnJvbnRlbmQgZHJpdmVyIGluIHNldHRpbmcgdXAKK2dyYW50IHRhYmxl IGVudHJpZXMgYW5kIGV2ZW50IGNoYW5uZWxzIHRvIGNvbW11bmljYXRlIHdpdGggdGhlIHNlcnZp Y2UgZG9tYWluLAorc28gdGhlIGNvLW9wZXJhdGlvbiBvZiB0aGUgZ3Vlc3QgaXMgcmVxdWlyZWQg dG8gcmUtZXN0YWJsaXNoIHRoZXNlIGluIHRoZSBuZXcKK2hvc3QgZW52aXJvbm1lbnQgYWZ0ZXIg bWlncmF0aW9uLgorCitUaHVzIGlmIHdlIGFyZSB0byBjaGFuZ2UgdGhlIG1vZGVsIGFuZCBzdXBw b3J0IG1pZ3JhdGlvbiBvZiBhIGd1ZXN0IHdpdGggUFYKK2RyaXZlcnMsIHdpdGhvdXQgdGhlIGNv LW9wZXJhdGlvbiBvZiB0aGUgZnJvbnRlbmQgZHJpdmVyIGNvZGUsIHRoZSBwYXRocyBhbmQKK3Zh bHVlcyBpbiBib3RoIHRoZSBmcm9udGVuZCBhbmQgYmFja2VuZCB4ZW5zdG9yZSBhcmVhcyBtdXN0 IHJlbWFpbiB1bmNoYW5nZWQKK2FuZCB2YWxpZCBpbiB0aGUgbmV3IGhvc3QgZW52aXJvbm1lbnQs IGFuZCB0aGUgZ3JhbnQgdGFibGUgZW50cmllcyBhbmQgZXZlbnQKK2NoYW5uZWxzIG11c3QgYmUg cHJlc2VydmVkIChhbmQgcmVtYWluIG9wZXJhdGlvbmFsIG9uY2UgZ3Vlc3QgZXhlY3V0aW9uIGlz CityZXN1bWVkKS4KK0JlY2F1c2UgdGhlIHNlcnZpY2UgZG9tYWlu4oCZcyBkb21pZCBpcyB1c2Vk IGRpcmVjdGx5IGJ5IHRoZSBndWVzdCBpbiBzZXR0aW5nCit1cCBncmFudCBlbnRyaWVzIGFuZCBl dmVudCBjaGFubmVscywgdGhlIGJhY2tlbmQgZHJpdmVycyBpbiB0aGUgbmV3IGhvc3QKK2Vudmly b25tZW50IG11c3QgYmUgcHJvdmlkZWQgYnkgc2VydmljZSBkb21haW4gd2l0aCB0aGUgc2FtZSBk b21pZC4gQWxzbywKK2JlY2F1c2UgdGhlIGd1ZXN0IGNhbiBzYW1wbGUgaXRzIG93biBkb21pZCBm cm9tIHRoZSBmcm9udGVuZCBhcmVhIGFuZCB1c2UgaXQgaW4KK2h5cGVyY2FsbHMgKGUuZy4gSFZN T1Bfc2V0X3BhcmFtKSByYXRoZXIgdGhhbiBET01JRF9TRUxGLCB0aGUgZ3Vlc3QgZG9taWQgbXVz dAorYWxzbyBiZSBwcmVzZXJ2ZWQgdG8gbWFpbnRhaW4gdGhlIEFCSS4KKworRnVydGhlcm1vcmUs IGl0IHdpbGwgbmVjZXNzYXJ5IHRvIG1vZGlmeSBiYWNrZW5kIGRyaXZlcnMgdG8gcmUtZXN0YWJs aXNoCitjb21tdW5pY2F0aW9uIHdpdGggZnJvbnRlbmQgZHJpdmVycyB3aXRob3V0IHBlcnR1cmJp bmcgdGhlIGNvbnRlbnQgb2YgdGhlCitiYWNrZW5kIGFyZWEgb3IgcmVxdWlyaW5nIGFueSBjaGFu Z2VzIHRvIHRoZSB2YWx1ZXMgb2YgdGhlIHhlbnN0b3JlIHN0YXRlIG5vZGVzLgorCisjIyBPdGhl ciBQYXJhLVZpcnR1YWwgU3RhdGUKKworIyMjIFNoYXJlZCBSaW5ncworCitCZWNhdXNlIHRoZSBj b25zb2xlIGFuZCBzdG9yZSBwcm90b2NvbCBzaGFyZWQgcGFnZXMgYXJlIGFjdHVhbGx5IHBhcnQg b2YgdGhlCitndWVzdCBtZW1vcnkgaW1hZ2UgKGluIGFuIEU4MjAgcmVzZXJ2ZWQgcmVnaW9uIGp1 c3QgYmVsb3cgNEcpIHRoZW4gdGhlIGNvbnRlbnQKK3dpbGwgZ2V0IG1pZ3JhdGVkIGFzIHBhcnQg b2YgdGhlIGd1ZXN0IG1lbW9yeSBpbWFnZS4gSGVuY2Ugbm8gYWRkaXRpb25hbCBjb2RlCitpcyBy ZXF1aXJlIHRvIHByZXZlbnQgYW55IGd1ZXN0IHZpc2libGUgY2hhbmdlIGluIHRoZSBjb250ZW50 LgorCisjIyMgU2hhcmVkIEluZm8KKworVGhlcmUgaXMgYWxyZWFkeSBhIHJlY29yZCBkZWZpbmVk IGluICpMaWJYZW5DdHJsIERvbWFpbiBJbWFnZSBGb3JtYXQqIFszXQorY2FsbGVkIGBTSEFSRURf SU5GT2Agd2hpY2ggc2ltcGx5IGNvbnRhaW5zIGEgY29tcGxldGUgY29weSBvZiB0aGUgZG9tYWlu 4oCZcworc2hhcmVkIGluZm8gcGFnZS4gSXQgaXMgbm90IGN1cnJlbnRseSBpbmN1ZGVkIGluIGFu IEhWTSAodHlwZSBgMHgwMDAyYCkKK21pZ3JhdGlvbiBzdHJlYW0uIEl0IG1heSBiZSBmZWFzaWJs ZSB0byBpbmNsdWRlIGl0IGFzIGFuIG9wdGlvbmFsIHJlY29yZAorYnV0IGl0IGlzIG5vdCBjbGVh ciB0aGF0IHRoZSBjb250ZW50IG9mIHRoZSBzaGFyZWQgaW5mbyBwYWdlIGV2ZXIgbmVlZHMKK3Rv IGJlIHByZXNlcnZlZCBmb3IgYW4gSFZNIGd1ZXN0LgorRm9yIGEgUFYgZ3Vlc3QgdGhlIGBhcmNo X3NoYXJlZF9pbmZvYCBzdWItc3RydWN0dXJlIGNvbnRhaW5zIGltcG9ydGFudAoraW5mb3JtYXRp b24gYWJvdXQgdGhlIGd1ZXN04oCZcyBQMk0sIGJ1dCB0aGlzIGluZm9ybWF0aW9uIGlzIG5vdCBy ZWxldmFudCBmb3IKK2FuIEhWTSBndWVzdCB3aGVyZSB0aGUgUDJNIGlzIG5vdCBkaXJlY3RseSBt YW5pcHVsYXRlZCB2aWEgdGhlIGd1ZXN0LiBUaGUgb3RoZXIKK3N0YXRlIGNvbnRhaW5lZCBpbiB0 aGUgYHNoYXJlZF9pbmZvYCBzdHJ1Y3R1cmUgcmVsYXRlcyB0aGUgZG9tYWluIHdhbGwtY2xvY2sK Kyh0aGUgc3RhdGUgb2Ygd2hpY2ggc2hvdWxkIGFscmVhZHkgYmUgdHJhbnNmZXJyZWQgYnkgdGhl IGBSVENgIEhWTSBjb250ZXh0CitpbmZvcm1hdGlvbiB3aGljaCBjb250YWluZWQgaW4gdGhlIGBI Vk1fQ09OVEVYVGAgc2F2ZSByZWNvcmQpIGFuZCBzb21lIGV2ZW50CitjaGFubmVsIHN0YXRlIChw YXJ0aWN1bGFybHkgaWYgdXNpbmcgdGhlICoybCogcHJvdG9jb2wpLiBFdmVudCBjaGFubmVsIHN0 YXRlCit3aWxsIG5lZWQgdG8gYmUgZnVsbHkgdHJhbnNmZXJyZWQgaWYgd2UgYXJlIG5vdCBnb2lu ZyB0byByZXF1aXJlIHRoZSBndWVzdAorY28tb3BlcmF0aW9uIHRvIHJlLW9wZW4gdGhlIGNoYW5u ZWxzIGFuZCBzbyBpdCBzaG91bGQgYmUgcG9zc2libGUgdG8gcmUtYnVpbGQgYQorc2hhcmVkIGlu Zm8gcGFnZSBmb3IgYW4gSFZNIGd1ZXN0IGZyb20gc3VjaCBvdGhlciBzdGF0ZS4KK05vdGUgdGhh dCB0aGUgc2hhcmVkIGluZm8gcGFnZSBhbHNvIGNvbnRhaW5zIGFuIGFycmF5IG9mIGBYRU5fTEVH QUNZX01BWF9WQ1BVU2AKKygzMikgYHZjcHVfaW5mb2Agc3RydWN0dXJlcy4gQSBkb21haW4gbWF5 IG5vbWluYXRlIGEgZGlmZmVyZW50IGd1ZXN0IHBoeXNpY2FsCithZGRyZXNzIHRvIHVzZSBmb3Ig dGhlIHZjcHUgaW5mby4gVGhpcyBpcyBtYW5kYXRvcnkgZm9yIGlmIGEgZG9tYWluIHdhbnRzIHRv Cit1c2UgbW9yZSB0aGFuIDMyIHZDUFVzIGFuZCBvcHRpb25hbCBmb3IgbGVnYWN5IHZDUFVzLiBU aGlzIG1hcHBpbmcgaXMgbm90CitjdXJyZW50bHkgdHJhbnNmZXJyZWQgaW4gdGhlIG1pZ3JhdGlv biBzdGF0ZSBzbyB0aGlzIHdpbGwgZWl0aGVyIG5lZWQgdG8gYmUKK2FkZGVkIGludG8gYW4gZXhp c3Rpbmcgc2F2ZSByZWNvcmQsIG9yIGFuIGFkZGl0aW9uYWwgdHlwZSBvZiBzYXZlIHJlY29yZCB3 aWxsCitiZSBuZWVkZWQuCisKKyMjIyBYZW5zdG9yZSBXYXRjaGVzCisKK0FzIG1lbnRpb25lZCBh Ym92ZSwgbm8gZG9tYWluIFhlbnN0b3JlIHN0YXRlIGlzIGN1cnJlbnRseSB0cmFuc2ZlcnJlZCBp biB0aGUKK21pZ3JhdGlvbiBzdHJlYW0uIFRoZXJlIGlzIGEgcmVjb3JkIGRlZmluZWQgaW4gKkxp YlhlbkxpZ2h0IERvbWFpbiBJbWFnZQorRm9ybWF0KiBbNF0gY2FsbGVkIGBFTVVMQVRPUl9YRU5T VE9SRV9EQVRBYCBmb3IgdHJhbnNmZXJyaW5nIFhlbnN0b3JlIG5vZGVzCityZWxhdGluZyB0byBl bXVsYXRvcnMgYnV0IG5vIHJlY29yZCB0eXBlIGlzIGRlZmluZWQgZm9yIG5vZGVzIHJlbGF0aW5n IHRvIHRoZQorZG9tYWluIGl0c2VsZiwgbm9yIGZvciByZWdpc3RlcmVkICp3YXRjaGVzKi4gQSBY ZW5TdG9yZSB3YXRjaCBpcyBhIG1lY2hhbmlzbQordXNlZCBieSBQViBmcm9udGVuZCBhbmQgYmFj a2VuZCBkcml2ZXJzIHRvIHJlcXVlc3QgYSBub3RpZmljYXRpb24gaWYgdGhlIHZhbHVlCitvZiBh IHBhcnRpY3VsYXIgbm9kZSAoZS5nLiB0aGUgb3RoZXIgZW5k4oCZcyBzdGF0ZSBub2RlKSBjaGFu Z2VzLCBzbyBpdCBpcworaW1wb3J0YW50IHRoYXQgd2F0Y2hlcyBjb250aW51ZSB0byBmdW5jdGlv biBhZnRlciBhIG1pZ3JhdGlvbi4gT25lIG9yIG1vcmUgbmV3CitzYXZlIHJlY29yZHMgd2lsbCB0 aGVyZWZvcmUgYmUgcmVxdWlyZWQgdG8gdHJhbnNmZXIgWGVuc3RvcmUgc3RhdGUuIEl0IHdpbGwK K2Fsc28gYmUgbmVjZXNzYXJ5IHRvIGV4dGVuZCB0aGUgKnN0b3JlKiBwcm90b2NvbFs1XSB3aXRo IG1lY2hhbmlzbXMgdG8gYWxsb3cKK3RoZSB0b29sc3RhY2sgdG8gYWNxdWlyZSB0aGUgbGlzdCBv ZiB3YXRjaGVzIHRoYXQgdGhlIGd1ZXN0IGhhcyByZWdpc3RlcmVkIGFuZAorZm9yIHRoZSB0b29s c3RhY2sgdG8gcmVnaXN0ZXIgYSB3YXRjaCBvbiBiZWhhbGYgb2YgYSBkb21haW4uCisKKyMjIyBF dmVudCBjaGFubmVscworCitFdmVudCBjaGFubmVscyBhcmUgZXNzZW50aWFsbHkgdGhlIHBhcmEt dmlydHVhbCBlcXVpdmFsZW50IG9mIGludGVycnVwdHMuIFRoZXkKK2FyZSBhbiBpbXBvcnRhbnQg cGFydCBvZiBwb3N0IFBWIHByb3RvY29scy4gTm9ybWFsbHkgYSBmcm9udGVuZCBkcml2ZXIgY3Jl YXRlcworYW4gKmludGVyLWRvbWFpbiogZXZlbnQgY2hhbm5lbCBiZXR3ZWVuIGl0cyBvd24gZG9t YWluIGFuZCB0aGUgZG9tYWluIHJ1bm5pbmcKK3RoZSBiYWNrZW5kLCB3aGljaCBpdCBkaXNjb3Zl cnMgdXNpbmcgdGhlIGBiYWNrZW5kLWlkYCBub2RlIGluIFhlbnN0b3JlIChzZWUKK2Fib3ZlKSwg YnkgbWFraW5nIGEgYEVWVENITk9QX2FsbG9jX3VuYm91bmRgIGh5cGVyY2FsbC4gVGhpcyBoeXBl cmNhbGwKK2FsbG9jYXRlcyBhbiBldmVudCBjaGFubmVsIG9iamVjdCBpbiB0aGUgaHlwZXJ2aXNv ciBhbmQgYXNzaWducyBhICpsb2NhbCBwb3J0KgorbnVtYmVyIHdoaWNoIGlzIHRoZW4gd3JpdHRl biBpbnRvIHRoZSBmcm9udGVuZCBhcmVhIGluIFhlbnN0b3JlLiBUaGUgYmFja2VuZAorZHJpdmVy IHRoZW4gcmVhZHMgdGhpcyBwb3J0IG51bWJlciBhbmQgKmJpbmRzKiB0byB0aGUgZXZlbnQgY2hh bm5lbCBieQorc3BlY2lmeWluZyBpdCwgYW5kIHRoZSB2YWx1ZSBvZiBgZnJvbnRlbmQtaWRgLCBh cyAqcmVtb3RlIGRvbWFpbiogYW5kICpyZW1vdGUKK3BvcnQqIChyZXNwZWN0aXZlbHkpIHRvIGEg YEVWVENITk9QX2JpbmRfaW50ZXJkb21haW5gIGh5cGVyY2FsbC4gT25jZQorY29ubmVjdGlvbiBp cyBlc3RhYmxpc2hlZCBpbiB0aGlzIGZhc2hpb24gZnJvbnRlbmQgYW5kIGJhY2tlbmQgZHJpdmVy cyBjYW4gdXNlCit0aGUgZXZlbnQgY2hhbm5lbCBhcyBhICptYWlsYm94KiB0byBub3RpZnkgZWFj aCBvdGhlciB3aGVuIGEgc2hhcmVkIHJpbmcgaGFzCitiZWVuIHVwZGF0ZWQgd2l0aCBuZXcgcmVx dWVzdHMgb3IgcmVzcG9uc2Ugc3RydWN0dXJlcy4KK0N1cnJlbnRseSBubyBldmVudCBjaGFubmVs IHN0YXRlIGlzIHByZXNlcnZlZCBvbiBtaWdyYXRpb24sIHJlcXVpcmluZyBmcm9udGVuZAorYW5k IGJhY2tlbmQgZHJpdmVycyB0byBjcmVhdGUgYW5kIGJpbmQgYSBjb21wbGV0ZSBuZXcgc2V0IG9m IGV2ZW50IGNoYW5uZWxzIGluCitvcmRlciB0byByZS1lc3RhYmxpc2ggYSBwcm90b2NvbCBjb25u ZWN0aW9uLiBIZW5jZSwgb25lIG9yIG1vcmUgbmV3IHNhdmUKK3JlY29yZHMgd2lsbCBiZSByZXF1 aXJlZCB0byB0cmFuc2ZlciBldmVudCBjaGFubmVsIHN0YXRlIGluIG9yZGVyIHRvIGF2b2lkIHRo ZQorbmVlZCBmb3IgZXhwbGljaXQgYWN0aW9uIGJ5IGZyb250ZW5kIGRyaXZlcnMgcnVubmluZyBp biB0aGUgZ3Vlc3QuIE5vdGUgdGhhdAordGhlIGxvY2FsIHBvcnQgbnVtYmVycyBuZWVkIHRvIHBy ZXNlcnZlZCBpbiB0aGlzIHN0YXRlIGFzIHRoZXkgYXJlIHRoZSBvbmx5Citjb250ZXh0IHRoZSBn dWVzdCBoYXMgdG8gcmVmZXIgdG8gdGhlIGh5cGVydmlzb3IgZXZlbnQgY2hhbm5lbCBvYmplY3Rz LgorIE5vdGUgYWxzbyB0aGF0IHRoZSBQViAqc3RvcmUqIChYZW5zdG9yZSBhY2Nlc3MpIGFuZCAq Y29uc29sZSogcHJvdG9jb2xzIGFsc28KK3JlbHkgb24gZXZlbnQgY2hhbm5lbHMgd2hpY2ggYXJl IHNldCB1cCBieSB0aGUgdG9vbHN0YWNrLiBOb3JtYWxseSwgZWFybHkgaW4KK21pZ3JhdGlvbiwg dGhlIHRvb2xzdGFjayBydW5uaW5nIG9uIHRoZSByZW1vdGUgaG9zdCB3b3VsZCBzZXQgdXAgYSBu ZXcgcGFpciBvZgorZXZlbnQgY2hhbm5lbHMgZm9yIHRoZXNlIHByb3RvY29scyBpbiB0aGUgZGVz dGluYXRpb24gZG9tYWluLiBUaGVzZSBtYXkgbm90IGJlCithc3NpZ25lZCB0aGUgc2FtZSBsb2Nh bCBwb3J0IG51bWJlcnMgYXMgdGhlIHByb3RvY29scyBydW5uaW5nIGluIHRoZSBzb3VyY2UKK2Rv bWFpbi4gRm9yIHRyYW5zcGFyZW50IG1pZ3JhdGlvbiB0aGVzZSBjaGFubmVscyBtdXN0IGVpdGhl ciBiZSBjcmVhdGVkIHdpdGgKK2ZpeGVkIHBvcnQgbnVtYmVycywgb3IgdGhlaXIgY3JlYXRpb24g bXVzdCBiZSBhdm9pZGVkIGFuZCBpbnN0ZWFkIGJlIGluY2x1ZGVkCitpbiB0aGUgZ2VuZXJhbCBl dmVudCBjaGFubmVsIHN0YXRlIHJlY29yZChzKS4KKworIyMjIEdyYW50IHRhYmxlCisKK1RoZSBn cmFudCB0YWJsZSBpcyBlc3NlbnRpYWxseSB0aGUgcGFyYS12aXJ0dWFsIGVxdWl2YWxlbnQgb2Yg YW4gSU9NTVUuIEZvcgorZXhhbXBsZSwgdGhlIHNoYXJlZCByaW5ncyBvZiBhIFBWIHByb3RvY29s IGFyZSAqZ3JhbnRlZCogYnkgYSBmcm9udGVuZCBkcml2ZXIKK3RvIHRoZSBiYWNrZW5kIGRyaXZl ciBieSBhbGxvY2F0aW5nICpncmFudCBlbnRyaWVzKiBpbiB0aGUgZ3Vlc3TigJlzIHRhYmxlLAor ZmlsbGluZyBpbiBkZXRhaWxzIG9mIHRoZSBtZW1vcnkgcGFnZXMgYW5kIHRoZW4gd3JpdGluZyB0 aGUgKmdyYW50IHJlZmVyZW5jZXMqCisodGhlIGluZGV4IHZhbHVlcyBvZiB0aGUgZ3JhbnQgZW50 cmllcykgaW50byBYZW5zdG9yZS4gVGhlIGdyYW50IHJlZmVyZW5jZXMgb2YKK3RoZSBwcm90b2Nv bCBidWZmZXJzIHRoZW1zZWx2ZXMgYXJlIHR5cGljYWxseSB3cml0dGVuIGRpcmVjdGx5IGludG8g dGhlIHJlcXVlc3QKK3N0cnVjdHVyZXMgcGFzc2VkIHZpYSBhIHNoYXJlZCByaW5nLgorVGhlIGd1 ZXN0IGlzIHJlc3BvbnNpYmxlIGZvciBtYW5hZ2luZyBpdHMgb3duIGdyYW50IHRhYmxlLiBObyBo eXBlcmNhbGwgaXMKK3JlcXVpcmVkIHRvIGdyYW50IGEgbWVtb3J5IHBhZ2UgdG8gYW5vdGhlciBk b21haW4uIEl0IGlzIHN1ZmZpY2llbnQgdG8gZmluZCBhbgordW51c2VkIGdyYW50IGVudHJ5IGFu ZCBzZXQgYml0cyBpbiB0aGUgZW50cnkgdG8gZ2l2ZSByZWFkIGFuZC9vciB3cml0ZSBhY2Nlc3MK K3RvIGEgcmVtb3RlIGRvbWFpbiBhbHNvIHNwZWNpZmllZCBpbiB0aGUgZW50cnkgYWxvbmcgd2l0 aCB0aGUgcGFnZSBmcmFtZQorbnVtYmVyLiBUaHVzIHRoZSBsYXlvdXQgYW5kIGNvbnRlbnQgb2Yg dGhlIGdyYW50IHRhYmxlIGxvZ2ljYWxseSBmb3JtcyBwYXJ0IG9mCit0aGUgZ3Vlc3Qgc3RhdGUu CitDdXJyZW50bHkgbm8gZ3JhbnQgdGFibGUgc3RhdGUgaXMgbWlncmF0ZWQsIHJlcXVpcmluZyBh IGd1ZXN0IHRvIHNlcGFyYXRlbHkKK21haW50YWluIGFueSBzdGF0ZSB0aGF0IGl0IHdpc2hlcyB0 byBwZXJzaXN0IGVsc2V3aGVyZSBpbiBpdHMgbWVtb3J5IGltYWdlIGFuZAordGhlbiByZXN0b3Jl IGl0IGFmdGVyIG1pZ3JhdGlvbi4gVGh1cyB0byBhdm9pZCB0aGUgbmVlZCBmb3Igc3VjaCBleHBs aWNpdAorYWN0aW9uIGJ5IHRoZSBndWVzdCwgb25lIG9yIG1vcmUgbmV3IHNhdmUgcmVjb3JkcyB3 aWxsIGJlIHJlcXVpcmVkIHRvIG1pZ3JhdGUKK3RoZSBjb250ZW50cyBvZiB0aGUgZ3JhbnQgdGFi bGUuCisKKyMgT3V0bGluZSBQcm9wb3NhbAorCisqIFBWIGJhY2tlbmQgZHJpdmVycyB3aWxsIGJl IG1vZGlmaWVkIHRvIHVuaWxhdGVyYWxseSByZS1lc3RhYmxpc2ggY29ubmVjdGlvbgordG8gYSBm cm9udGVuZCBpZiB0aGUgYmFja2VuZCBzdGF0ZSBub2RlIGlzIHJlc3RvcmVkIHdpdGggdmFsdWUg NAorKFhlbmJ1c1N0YXRlQ29ubmVjdGVkKVs2XS4KKyogVGhlIHRvb2xzdGFjayBzaG91bGQgYmUg bW9kaWZpZWQgdG8gYWxsb3cgZG9taWQgdG8gYmUgcmFuZG9taXplZCBvbiBpbml0aWFsCitjcmVh dGlvbiBvciBkZWZhdWx0IG1pZ3JhdGlvbiwgYnV0IG1ha2UgaXQgaWRlbnRpY2FsIHRvIHRoZSBz b3VyY2UgZG9tYWluIG9uCit0cmFuc3BhcmVudCBtaWdyYXRpb24uIFRyYW5zcGFyZW50IG1pZ3Jh dGlvbiB3aWxsIGhhdmUgdG8gYmUgZGVuaWVkIGlmIHRoZQorZG9taWQgaXMgdW5hdmFpbGFibGUg b24gdGhlIHRhcmdldCBob3N0LCBidXQgcmFuZG9taXphdGlvbiBvZiBkb21pZCBvbiBjcmVhdGlv bgorc2hvdWxkIGhvcGVmdWxseSBtaW5pbWl6ZSB0aGUgbGlrZWxpaG9vZCBvZiB0aGlzLiBUcmFu c3BhcmVudCBtaWdyYXRpb24gdG8KK2xvY2FsaG9zdCB3aWxsIGNsZWFybHkgbm90IGJlIHBvc3Np YmxlLiBQYXRjaGVzIGhhdmUgYWxyZWFkeSBiZWVuIHNlbnQgdG8KK2B4ZW4tZGV2ZWxgIHRvIG1h a2UgdGhpcyBjaGFuZ2VbN10uCisqIGB4ZW5zdG9yZWRgIHNob3VsZCBiZSBtb2RpZmllZCB0byBp bXBsZW1lbnQgdGhlIG5ldyBtZWNoYW5pc21zIG5lZWRlZC4gU2VlCisqT3RoZXIgUGFyYS1WaXJ0 dWFsIFN0YXRlKiBhYm92ZS4gQSBmdXJ0aGVyIGRlc2lnbiBkb2N1bWVudCB3aWxsIHByb3Bvc2UK K2FkZGl0aW9uYWwgcHJvdG9jb2wgbWVzc2FnZXMuCisqIFdpdGhpbiB0aGUgbWlncmF0aW9uIHN0 cmVhbSBleHRyYSBzYXZlIHJlY29yZHMgd2lsbCBiZSBkZWZpbmVkIGFzIHJlcXVpcmVkLgorU2Vl ICpPdGhlciBQYXJhLVZpcnR1YWwgU3RhdGUqIGFib3ZlLiBBIGZ1cnRoZXIgZGVzaWduIGRvY3Vt ZW50IHdpbGwgcHJvcG9zZQorbW9kaWZpY2F0aW9ucyB0byB0aGUgTGliWGVuTGlnaHQgYW5kIExp YlhlbkN0cmwgRG9tYWluIEltYWdlIEZvcm1hdHMuCisqIEFuIG9wdGlvbiBzaG91bGQgYmUgYWRk ZWQgdG8gdGhlIHRvb2xzdGFjayB0byBpbml0aWF0ZSBhIHRyYW5zcGFyZW50CittaWdyYXRpb24s IGluc3RlYWQgb2YgdGhlIChkZWZhdWx0KSBwb3RlbnRpYWxseSBjby1vcGVyYXRpdmUgbWlncmF0 aW9uLgorRXNzZW50aWFsbHkgdGhpcyBzaG91bGQgc2tpcCB0aGUgY2hlY2sgdG8gc2VlIGlmIFBW IGRyaXZlcnMgYW5kIG1pZ3JhdGUgYXMgaWYKK3RoZXJlIGFyZSBub25lIHByZXNlbnQsIGJ1dCBh bHNvIGVuYWJsaW5nIHRoZSBleHRyYSBzYXZlIHJlY29yZHMuIE5vdGUgdGhhdCBhdAorbGVhc3Qg c29tZSBvZiB0aGUgZXh0cmEgcmVjb3JkcyBzaG91bGQgb25seSBmb3JtIHBhcnQgb2YgYSB0cmFu c3BhcmVudAorbWlncmF0aW9uIHN0cmVhbS4gRm9yIGV4YW1wbGUsIG1pZ3JhdGluZyBldmVudCBj aGFubmVsIHN0YXRlIHdvdWxkIGJlIGNvdW50ZXIKK3Byb2R1Y3RpdmUgaW4gYSBub3JtYWwgbWln cmF0aW9uIGFzIHRoaXMgd2lsbCBlc3NlbnRpYWxseSBsZWFrIGV2ZW50IGNoYW5uZWwKK29iamVj dHMgYXQgdGhlIHJlY2VpdmluZyBlbmQuIE90aGVycywgc3VjaCBhcyBncmFudCB0YWJsZSBzdGF0 ZSwgY291bGQKK3BvdGVudGlhbGx5IGhhcm1sZXNzbHkgZm9ybSBwYXJ0IG9mIGEgbm9ybWFsIG1p Z3JhdGlvbiBzdHJlYW0uCisKKyogKiAqCitbMV0gUFYgZHJpdmVycyBhcmUgZGVlbWVkIHRvIGJl IGluc3RhbGxlZCBpZiB0aGUgSFZNIHBhcmFtZXRlcgorKkhWTV9QQVJBTV9DQUxMQkFDS19JUlEq IGhhcyBiZWVuIHNldCB0byBhIG5vbi16ZXJvIHZhbHVlLgorCitbMl0gU2VlIGh0dHBzOi8veGVu Yml0cy54ZW4ub3JnL2dpdHdlYi8/cD14ZW4uZ2l0O2E9YmxvYjtmPXhlbi9pbmNsdWRlL3B1Ymxp Yy9pby94ZW5idXMuaAorCitbM10gU2VlIGh0dHBzOi8veGVuYml0cy54ZW4ub3JnL2dpdHdlYi8/ cD14ZW4uZ2l0O2E9YmxvYjtmPWRvY3Mvc3BlY3MvbGlieGMtbWlncmF0aW9uLXN0cmVhbS5wYW5k b2MKKworWzRdIFNlZSBodHRwczovL3hlbmJpdHMueGVuLm9yZy9naXR3ZWIvP3A9eGVuLmdpdDth PWJsb2I7Zj1kb2NzL3NwZWNzL2xpYnhsLW1pZ3JhdGlvbi1zdHJlYW0ucGFuZG9jCisKK1s1XSBT ZWUgaHR0cHM6Ly94ZW5iaXRzLnhlbi5vcmcvZ2l0d2ViLz9wPXhlbi5naXQ7YT1ibG9iO2Y9ZG9j cy9taXNjL3hlbnN0b3JlLnR4dAorCitbNl0gYHhlbi1ibGtiYWNrYCBhbmQgYHhlbi1uZXRiYWNr YCBoYXZlIGFscmVhZHkgYmVlbiBtb2RpZmllZCBpbiBMaW51eCB0byBkbwordGhpcy4KKworWzdd IFNlZSBodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL2FyY2hpdmVzL2h0bWwveGVuLWRldmVs LzIwMjAtMDEvbXNnMDA2MzIuaHRtbAorCi0tIAoyLjIwLjEKCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1k ZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL21h aWxtYW4vbGlzdGluZm8veGVuLWRldmVs