From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yi Sun Subject: [PATCH v12 04/23] x86: refactor psr: L3 CAT: implement main data structures, CPU init and free flows. Date: Wed, 14 Jun 2017 09:12:37 +0800 Message-ID: <1497402776-22348-5-git-send-email-yi.y.sun@linux.intel.com> References: <1497402776-22348-1-git-send-email-yi.y.sun@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dKx3m-0007Gf-27 for xen-devel@lists.xenproject.org; Wed, 14 Jun 2017 01:25:26 +0000 In-Reply-To: <1497402776-22348-1-git-send-email-yi.y.sun@linux.intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: kevin.tian@intel.com, wei.liu2@citrix.com, andrew.cooper3@citrix.com, dario.faggioli@citrix.com, he.chen@linux.intel.com, ian.jackson@eu.citrix.com, Yi Sun , mengxu@cis.upenn.edu, jbeulich@suse.com, chao.p.peng@linux.intel.com, roger.pau@citrix.com List-Id: xen-devel@lists.xenproject.org VG8gY29uc3RydWN0IGFuIGV4dGVuZGlibGUgZnJhbWV3b3JrLCB3ZSBuZWVkIGFuYWx5emUgUFNS IGZlYXR1cmVzCmFuZCBhYnN0cmFjdCB0aGUgY29tbW9uIHRoaW5ncyBhbmQgZmVhdHVyZSBzcGVj aWZpYyB0aGluZ3MuIFRoZW4sCmVuY2Fwc3VsYXRlIHRoZW0gaW50byBkaWZmZXJlbnQgZGF0YSBz dHJ1Y3R1cmVzLgoKQnkgYW5hbHl6aW5nIFBTUiBmZWF0dXJlcywgd2UgY2FuIGdldCBiZWxvdyBt YXAuCiAgICAgICAgICAgICAgICArLS0tLS0tKy0tLS0tLSstLS0tLS0rCiAgICAgIC0tLS0tLS0t LT58IERvbTAgfCBEb20xIHwgLi4uICB8CiAgICAgIHwgICAgICAgICArLS0tLS0tKy0tLS0tLSst LS0tLS0rCiAgICAgIHwgICAgICAgICAgICB8CiAgICAgIHxEb20gSUQgICAgICB8IGNvc19pZCBv ZiBkb21haW4KICAgICAgfCAgICAgICAgICAgIFYKICAgICAgfCAgICAgICAgKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKwpVc2VyIC0tLS0tLS0tLT58IFBTUiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICAgU29j a2V0IElEIHwgICstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t KyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICAgICAgICAgICAgfCAgfCBTb2NrZXQw IEluZm8gfCBTb2NrZXQgMSBJbmZvIHwgICAgLi4uICAgICAgICB8ICAgICAgICAgICAgICAgICAg ICAgICAgICAgfAogICAgICAgICAgICAgICB8ICArLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICAgICAg ICAgICAgIHwgICAgfCAgICAgICAgICAgICAgICAgICBjb3NfaWQ9MCAgICAgICAgICAgICAgIGNv c19pZD0xICAgICAgICAgIC4uLiAgICAgICAgIHwKICAgICAgICAgICAgICAgfCAgICB8ICAgICAg ICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLSsgfAogICAgICAgICAgICAgICB8ICAgIHwtPlJlZiAgIDogfCAgICAgICAgIHJlZiAw ICAgICAgICAgfCAgICAgICAgIHJlZiAxICAgICAgICAgfCAuLi4gICAgICAgfCB8CiAgICAgICAg ICAgICAgIHwgICAgfCAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rIHwKICAgICAgICAgICAgICAgfCAgICB8ICAgICAg ICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLSsgfAogICAgICAgICAgICAgICB8ICAgIHwtPkwzIENBVDogfCAgICAgICAgIGNvcyAw ICAgICAgICAgfCAgICAgICAgIGNvcyAxICAgICAgICAgfCAuLi4gICAgICAgfCB8CiAgICAgICAg ICAgICAgIHwgICAgfCAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rIHwKICAgICAgICAgICAgICAgfCAgICB8ICAgICAg ICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLSsgfAogICAgICAgICAgICAgICB8ICAgIHwtPkwyIENBVDogfCAgICAgICAgIGNvcyAw ICAgICAgICAgfCAgICAgICAgIGNvcyAxICAgICAgICAgfCAuLi4gICAgICAgfCB8CiAgICAgICAg ICAgICAgIHwgICAgfCAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rIHwKICAgICAgICAgICAgICAgfCAgICB8ICAgICAg ICAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLSsgfAogICAgICAgICAgICAgICB8ICAgIHwtPkNEUCAgIDogfCBjb3MwIGNvZGUgfCBj b3MwIGRhdGEgfCBjb3MxIGNvZGUgfCBjb3MxIGRhdGEgfCAuLi4gICAgICAgfCB8CiAgICAgICAg ICAgICAgIHwgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rIHwKICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKwoKU28sIHdlIG5lZWQgZGVmaW5lIGEgc29ja2V0IGluZm8gZGF0YSBzdHJ1Y3R1 cmUsICdzdHJ1Y3QKcHNyX3NvY2tldF9pbmZvJyB0byBtYW5hZ2UgaW5mb3JtYXRpb24gcGVyIHNv Y2tldC4gSXQgY29udGFpbnMgYQpyZWZlcmVuY2UgY291bnQgYXJyYXkgYWNjb3JkaW5nIHRvIENP UyBJRCBhbmQgYSBmZWF0dXJlIGFycmF5IHRvCm1hbmFnZSBhbGwgZmVhdHVyZXMgZW5hYmxlZC4g RXZlcnkgZW50cnkgb2YgdGhlIHJlZmVyZW5jZSBjb3VudAphcnJheSBpcyB1c2VkIHRvIHJlY29y ZCBob3cgbWFueSBkb21haW5zIGFyZSB1c2luZyB0aGUgQ09TIHJlZ2lzdGVycwphY2NvcmRpbmcg dG8gdGhlIENPUyBJRC4gRm9yIGV4YW1wbGUsIEwzIENBVCBhbmQgTDIgQ0FUIGFyZSBlbmFibGVk LApEb20xIHVzZXMgQ09TX0lEPTEgcmVnaXN0ZXJzIG9mIGJvdGggZmVhdHVyZXMgdG8gc2F2ZSBD Qk0gdmFsdWVzLCBsaWtlCmJlbG93LgogICAgICAgICstLS0tLS0tKy0tLS0tLS0rLS0tLS0tLSst LS0tLSsKICAgICAgICB8IENPUyAwIHwgQ09TIDEgfCBDT1MgMiB8IC4uLiB8CiAgICAgICAgKy0t LS0tLS0rLS0tLS0tLSstLS0tLS0tKy0tLS0tKwpMMyBDQVQgIHwgMHg3ZmYgfCAweDFmZiB8IC4u LiAgIHwgLi4uIHwKICAgICAgICArLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0rLS0tLS0rCkwyIENB VCAgfCAweGZmICB8IDB4ZmYgIHwgLi4uICAgfCAuLi4gfAogICAgICAgICstLS0tLS0tKy0tLS0t LS0rLS0tLS0tLSstLS0tLSsKCklmIERvbTIgaGFzIHNhbWUgQ0JNIHZhbHVlcywgaXQgY2FuIHJl dXNlIHRoZXNlIHJlZ2lzdGVycyB3aGljaCBDT1NfSUQ9MS4KVGhhdCBtZWFucywgYm90aCBEb20x IGFuZCBEb20yIHVzZSBzYW1lIENPUyByZWdpc3RlcnMoSUQ9MSkgdG8ga2VlcCBzYW1lCkwzL0wy IHZhbHVlcy4gU28sIHRoZSB2YWx1ZSBvZiByZWZbMV0gaXMgMiB3aGljaCBtZWFucyAyIGRvbWFp bnMgYXJlIHVzaW5nCkNPU19JRCAxLgoKVG8gbWFuYWdlIGEgZmVhdHVyZSwgd2UgbmVlZCBkZWZp bmUgYSBmZWF0dXJlIG5vZGUgZGF0YSBzdHJ1Y3R1cmUsCidzdHJ1Y3QgZmVhdF9ub2RlJywgdG8g bWFuYWdlIGZlYXR1cmUncyBzcGVjaWZpYyBIVyBpbmZvLCBhbmQgYW4gYXJyYXkgb2YgYWxsCkNP UyByZWdpc3RlcnMgdmFsdWVzIG9mIHRoaXMgZmVhdHVyZS4KClRvIG1hbmFnZSBmZWF0dXJlIHBy b3BlcnRpZXMsIHdlIG5lZWQgZGVmaW5lIGEgZmVhdHVyZSBwcm9wZXJ0eSBkYXRhIHN0cnVjdHVy ZSwKJ3N0cnVjdCBmZWF0X3Byb3BzJywgdG8gbWFuYWdlIGNvbW1vbiBwcm9wZXJ0aWVzIChjYWxs YmFjayBmdW5jdGlvbnMgLSBhbGwKZmVhdHVyZSdzIHNwZWNpZmljIGJlaGF2aW9ycyBhcmUgZW5j YXBzdWxhdGVkIGludG8gdGhlc2UgY2FsbGJhY2sgZnVuY3Rpb25zLAphbmQgZ2VuZXJpYyB2YWx1 ZXMgLSBlLmcuIHRoZSBjb3NfbWF4KSwgdGhlIGZlYXR1cmUgaW5kZXBlbmRlbnQgdmFsdWVzLgoK Q0RQIGlzIGEgc3BlY2lhbCBmZWF0dXJlIHdoaWNoIHVzZXMgdHdvIGVudHJpZXMgb2YgdGhlIGFy cmF5CmZvciBvbmUgQ09TIElELiBTbywgdGhlIG51bWJlciBvZiBDRFAgQ09TIHJlZ2lzdGVycyBp cyB0aGUgaGFsZiBvZiBMMwpDQVQuIEUuZy4gTDMgQ0FUIGhhcyAxNiBDT1MgcmVnaXN0ZXJzLCB0 aGVuIENEUCBoYXMgOCBDT1MgcmVnaXN0ZXJzIGlmCml0IGlzIGVuYWJsZWQuIENEUCB1c2VzIHRo ZSBDT1MgcmVnaXN0ZXJzIGFycmF5IGFzIGJlbG93LgoKICAgICAgICAgICAgICAgICAgICAgICAg ICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0t LS0tLSsKQ0RQIGNvc19yZWdfdmFsW10gaW5kZXg6IHwgICAgIDAgICAgIHwgICAgIDEgICAgIHwg ICAgIDIgICAgIHwgICAgIDMgICAgIHwgICAgLi4uICAgIHwKICAgICAgICAgICAgICAgICAgICAg ICAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLSsKICAgICAgICAgICAgICAgICAgdmFsdWU6IHwgY29zMCBjb2RlIHwgY29zMCBkYXRh IHwgY29zMSBjb2RlIHwgY29zMSBkYXRhIHwgICAgLi4uICAgIHwKICAgICAgICAgICAgICAgICAg ICAgICAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLSst LS0tLS0tLS0tLSsKCkZvciBtb3JlIGRldGFpbHMsIHBsZWFzZSByZWZlciBTRE0gYW5kIHBhdGNo ZXMgdG8gaW1wbGVtZW50ICdnZXQgdmFsdWUnIGFuZAonc2V0IHZhbHVlJy4KClRoaXMgcGF0Y2gg YWxzbyBpbXBsZW1lbnRzIHRoZSBDUFUgaW5pdCBhbmQgZnJlZSBmbG93IGluY2x1ZGluZyBMMyBD QVQKaW5pdGlhbGl6YXRpb24gYW5kIHNvbWUgcmVzb3VyY2VzIGZyZWUuIEl0IGluY2x1ZGVzIGJl bG93IGZsb3dzOgoxLiBwcmVzbXAgaW5pdDoKICAgIC0gcGFyc2UgY29tbWFuZCBsaW5lIHBhcmFt ZXRlci4KICAgIC0gYWxsb2NhdGUgc29ja2V0IGluZm8gZm9yIGV2ZXJ5IHNvY2tldC4KICAgIC0g YWxsb2NhdGUgZmVhdHVyZSByZXNvdXJjZS4KICAgIC0gaW5pdGlhbGl6ZSBzb2NrZXQgaW5mbywg Z2V0IGZlYXR1cmUgaW5mbyBhbmQgYWRkIGZlYXR1cmUgaW50byBmZWF0dXJlCiAgICAgIGFycmF5 IHBlciBjcHVpZCByZXN1bHQuCiAgICAtIGZyZWUgcmVzb3VyY2VzIGFsbG9jYXRlZCBpZiBlcnJv ciBoYXBwZW5zLgogICAgLSByZWdpc3RlciBjcHUgbm90aWZpZXIgdG8gaGFuZGxlIGNwdSBldmVu dHMuCjIuIGNwdSBub3RpZmllcjoKICAgIC0gaGFuZGxlIGNwdSBvbmxpbmUgZXZlbnRzLCBpZiBp bml0aWFsaXphdGlvbiB3b3JrIGhhcyBiZWVuIGRvbmUgYmVmb3JlLAogICAgICBkbyBub3RoaW5n LgogICAgLSBoYW5kbGUgY3B1IG9mZmxpbmUgZXZlbnRzLCBpZiBpdCBpcyB0aGUgbGFzdCBjcHUg b2ZmbGluZSwgZnJlZSBzb21lCiAgICAgIHNvY2tldCByZXNvdXJjZXMuCgpTaWduZWQtb2ZmLWJ5 OiBZaSBTdW4gPHlpLnkuc3VuQGxpbnV4LmludGVsLmNvbT4KLS0tCnYxMjoKICAgIC0gYWRkIGNv bW1lbnQgZm9yICdmZWF0X2luaXQnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQog ICAgLSB1c2UgJ0FSUkFZX1NJWkUoKScgdG8gY2hlY2sgYXJyYXkgYm91bmRhcnkuCiAgICAgIChz dWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHVzZSAnWEVOTE9HX1dBUk5JTkcnIGZvciBl cnJvciBtZXNzYWdlLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBtb3Zl ICd0eXBlW10nIGFzc2lnbm1lbnQgZm9yIGZlYXRfcHJvcHMgb2JqZWN0IGludG8gaXRzIGRlbGNh cmF0aW9uCiAgICAgIHRvIG1ha2UgdGhlIG9iamVjdCBiZSAnY29uc3QnLgogICAgICAoc3VnZ2Vz dGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSByZW1vdmUgIkwzIiBhbmQgIkwyIiBpbmRpY2F0aW9u IGluIHByaW50ay4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gbW92ZSBw b3NpdGlvbiBvZiAncmVmX2xvY2snIGRlZmluaXRpb24uCiAgICAtIHJlc3RvcmUgbWFzaygwKSBN U1IgdG8gZGVmYXVsdCB2YWx1ZS4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKdjEx OgogICAgLSBoYW5kbGUgJ2ZlYXRfaW5pdCcuCiAgICAtIG1lcmdlIG1haW4gZGF0YSBzdHJ1Y3R1 cmVzIGltcGxlbWVudGF0aW9uIGludG8gQ1BVIGluaXQvZnJlZSBwYXRjaCwKICAgICAgaW5jbHVk aW5nIGNvbW1pdCBtZXNzYWdlcyBhbmQgY2hhbmdlIGhpc3RvcnkuCiAgICAgIChzdWdnZXN0ZWQg YnkgSmFuIEJldWxpY2gpCiAgICAtIHJlbW92ZSBNU1IgcmVzdG9yZSBhY3Rpb24gd2hpY2ggaXMg dW5uZWNlc3NhcnkuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIG1vdmUg J3R5cGVbXScgZGVjbGFyYXRpb24gaW50byB0aGlzIHBhdGNoLgogICAgICAoc3VnZ2VzdGVkIGJ5 IEphbiBCZXVsaWNoKQogICAgLSBtb2RpZnkgY29tbWVudC4KICAgICAgKHN1Z2dlc3RlZCBieSBK YW4gQmV1bGljaCkKdjEwOgogICAgLSByZW1vdmUgaW5pdGlhbGl6YXRpb24gZm9yICdQU1JfU09D S0VUX0wzX0NBVCcuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlbmFt ZSAnZmVhdF9vcHMnIHRvICdmZWF0X3Byb3BzJy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1 bGljaCkKICAgIC0gbW92ZSAnY2JtX2xlbicgdG8gJ2ZlYXRfcHJvcHMnIGJlY2F1c2UgaXQgaXMg ZmVhdHVyZSBpbmRlcGVuZGVudCBzbyBmYXIuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxp Y2gpCiAgICAtIG1vdmUgJ2Nvc19tYXgnIHRvICdmZWF0X3Byb3BzJyBiZWNhdXNlIGl0IGlzIGZl YXR1cmUgaW5kZXBlbmRlbnQuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAt IG1vdmUgJ2Nvc19udW0nIHRvICdmZWF0X3Byb3BzJyBiZWNhdXNlIGl0IGlzIGZlYXR1cmUgaW5k ZXBlbmRlbnQuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlbW92ZSB1 bmlvbiAnaW5mbycgYW5kIHN0cnVjdCAncHNyX2NhdF9od19pbmZvJy4KICAgIC0gcmVtb3ZlICdn ZXRfY29zX21heCcgZnJvbSAnZmVhdF9wcm9wcycuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJl dWxpY2gpCiAgICAtIHJlbW92ZSAnZmVhdF9tYXNrJyBmcm9tICdwc3Jfc29ja2V0X2luZm8nIGJl Y2F1c2Ugd2UgY2FuIHVzZSAnZmVhdHVyZXNbXScKICAgICAgdG8gY2hlY2sgaWYgYW55IGZlYXR1 cmUgaXMgaW5pdGlhbGl6ZWQuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAt IG1vdmUgJ3JlZl9sb2NrJyBhYm92ZSAnY29zX3JlZicuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFu IEJldWxpY2gpCiAgICAtIGFkanVzdCBjb21tZW50cyBhbmQgY29tbWl0IG1lc3NhZ2UgYWNjb3Jk aW5nIHRvIGFib3ZlIGNoYW5nZXMuCiAgICAtIHJlbW92ZSAnYXNtL3g4Nl9lbXVsYXRlLmgnIGlu Y2x1c2lvbiBhcyBpdCBoYXMgYmVlbiBpbmRpcmVjdGx5IGluY2x1ZGVkLgogICAgICAoc3VnZ2Vz dGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSByZW1vdmUgJ0NBVF9DT1NfTlVNJyBhcyBpdCBpcyBv bmx5IHVzZWQgb25jZS4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gcmVt b3ZlICdmZWF0X21hc2snLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBj aGFuZ2VzIGFib3V0ICdmZWF0X3Byb3BzJy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGlj aCkKICAgIC0gcmVtb3ZlICdnZXRfY29zX21heCcgaG9vayBkZWNsYXJhdGlvbi4KICAgICAgKHN1 Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gbW9kaWZ5ICdjYXRfZGVmYXVsdF92YWwnIGlt cGxlbWVudGF0aW9uLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBtb2Rp ZnkgJ3Bzcl9hbGxvY19mZWF0X2VuYWJsZWQnIGltcGxlbWVudGF0aW9uIHRvIG1ha2UgaXQgc2lt cGxlLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSByZW5hbWUgJ2ZyZWVf ZmVhdHVyZScgdG8gJ2ZyZWVfc29ja2V0X3Jlc291cmNlcycgYmVjYXVzZSBpdCBpcyBleGVjdXRl ZAogICAgICB3aGVuIHNvY2tldCBpcyBvZmZsaW5lLiBJdCBuZWVkcyBmcmVlIHJlc291cmNlcyBy ZWxhdGVkIHRvIHRoZSBzb2NrZXQuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAg ICAtIGRlZmluZSAnZmVhdF9pbml0X2RvbmUnIHRvIGl0ZXJhdGUgZmVhdHVyZSBhcnJheSB0byBj aGVjayBpZiBhbnkgZmVhdHVyZQogICAgICBoYXMgYmVlbiBpbml0aWFsaXplZC4KICAgICAgKHN1 Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAgIC0gaW5wdXQgJ3N0cnVjdCBjcHVpZF9sZWFmJyBw b2ludGVyIGludG8gJ2NhdF9pbml0X2ZlYXR1cmUnIHRvIGF2b2lkIG1lbW9yeQogICAgICBjb3B5 LgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBtb2RpZnkgJ2NhdF9pbml0 X2ZlYXR1cmUnIHRvIHVzZSBzd2l0Y2ggYW5kIHRoaW5ncyByZWxhdGVkIHRvIGFib3ZlCiAgICAg IGNoYW5nZXMuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGFkZCBhbiBp bmRlbnRhdGlvbiBmb3IgbGFiZWwuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCnY5 OgogICAgLSByZXBsYWNlIGZlYXR1cmUgbGlzdCB0byBhIGZlYXR1cmUgcG9pbnRlciBhcnJheS4K ICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUpCiAgICAtIGFkZCAnUFNSX1NPQ0tFVF9NQVhf RkVBVCcgaW4gJ2VudW0gcHNyX2ZlYXRfdHlwZScgdG8ga25vdyBmZWF0dXJlcwogICAgICBhY2Nv dW50LgogICAgICAoc3VnZ2VzdGVkIGJ5IFJvZ2VyIFBhdSkKICAgIC0gbW92ZSAnZmVhdF9vcHMn IGRlY2xhcmF0aW9uIGludG8gJ2ZlYXRfbm9kZScgc3RydWN0dXJlLgogICAgICAoc3VnZ2VzdGVk IGJ5IFJvZ2VyIFBhdSkKICAgIC0gZGlyZWN0bHkgdXNlIHVuaW5vbiBmb3IgZmVhdHVyZSBIVyBp bmZvIGFuZCBtb3ZlIGl0cyBkZWNsYXJhdGlvbiBpbnRvCiAgICAgICdmZWF0X25vZGUnIHN0cnVj dHVyZS4KICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUpCiAgICAtIHJlbW92ZSAnZW51bSBw c3JfZmVhdF90eXBlIGZlYXR1cmUnIGRlY2xhcmVkIGluICdmZWF0X29wcycgYmVjYXVzZSBpdCBp cwogICAgICBub3QgdXNlZnVsIGFmdGVyIHVzaW5nIGZlYXR1cmUgcG9pbnRlciBhcnJheS4KICAg ICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUpCiAgICAtIHJlbmFtZSAnbDNfY2F0X2luZm8nIHRv ICdjYXRfaW5mbycgdG8gYmUgdXNlZCBieSBhbGwgQ0FUL0NEUCBmZWF0dXJlcy4KICAgIC0gcmVt b3ZlICducl9mZWF0JyB3aGljaCBpcyBvbmx5IGZvciBhIHJlY29yZC4KICAgICAgKHN1Z2dlc3Rl ZCBieSBKYW4gQmV1bGljaCkKICAgIC0gYWRkICdjb3NfbnVtJyB0byByZWNvcmQgaG93IG1hbnkg Q09TIHJlZ2lzdGVycyBhcmUgdXNlZCBieSBhIGZlYXR1cmUgaW4KICAgICAgb25lIHRpbWUgYWNj ZXNzLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSByZXBsYWNlICd1aW50 NjRfdCcgdG8gJ3VpbnQzMl90JyBmb3IgY2JtIHZhbHVlIGJlY2F1c2UgU0RNIHNwZWNpZmllcyB0 aGUKICAgICAgbWF4IDMyIGJpdHMgZm9yIGl0LgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVs aWNoKQogICAgLSBhZGQgY29tbWl0IG1lc3NhZ2UgdG8gZXhwbGFpbiB0aGUgZmxvd3MuCiAgICAt IGhhbmRsZSBjcHUgb2ZmbGluZSBhbmQgb25saW5lIGFnYWluIGNhc2UgdG8gcmVhZCBNU1JzIHJl Z2lzdGVycyB2YWx1ZXMKICAgICAgYmFjayBhbmQgc2F2ZSB0aGVtIGludG8gY29zIGFycmF5IHRv IG1ha2UgdXNlciBjYW4gZ2V0IHJlYWwgZGF0YS4KICAgIC0gY3JlYXRlIGEgbmV3IHBhdGNoIGFi b3V0IG1vdmluZyAnY3B1aWRfY291bnRfbGVhZicuCiAgICAgIChzdWdnZXN0ZWQgYnkgV2VpIExp dSkKICAgIC0gbW9kaWZ5IGNvbW1lbnQgdG8gZXhwbGFpbiB3aHkgbm90IGZyZWUgc29tZSByZXNv dXJjZSBpbiAnZnJlZV9mZWF0dXJlJy4KICAgICAgKHN1Z2dlc3RlZCBieSBXZWkgTGl1KQogICAg LSBpbXBsZW1lbnQgJ3Bzcl9hbGxvY19mZWF0X2VuYWJsZWQnIHRvIGNoZWNrIGlmIGFsbG9jYXRp b24gZmVhdHVyZSBpcwogICAgICBlbmFibGVkIGluIGNtZGxpbmUgYW5kIHNvbWUgaW5pdGlhbGl6 YXRpb24gd29yayBkb25lLgogICAgICAoc3VnZ2VzdGVkIGJ5IFdlaSBMaXUpCiAgICAtIGltcGxl bWVudCAnY2F0X2RlZmF1bHRfdmFsJyB0byBzZXQgZGVmYXVsdCB2YWx1ZSBmb3IgQ0FUIGZlYXR1 cmVzLgogICAgICAoc3VnZ2VzdGVkIGJ5IFdlaSBMaXUpCiAgICAtIHJlcGxhY2UgZmVhdHVyZSBs aXN0IGhhbmRsaW5nIHRvIGZlYXR1cmUgYXJyYXkgaGFuZGxpbmcuCiAgICAgIChzdWdnZXN0ZWQg YnkgUm9nZXIgUGF1KQogICAgLSBpbXBsZW1lbnQgYSBjb21tb24gJ2NhdF9pbml0X2ZlYXR1cmUn IHRvIHJlcGxhY2UgTDMgQ0FUL0wyIENBVCBzcGVjaWZpYwogICAgICBpbml0IGZ1bmN0aW9ucy4K ICAgICAgKHN1Z2dlc3RlZCBieSBSb2dlciBQYXUpCiAgICAtIG1vZGlmeSBjb21tZW50cyBmb3Ig Z2xvYmFsIGZlYXR1cmUgbm9kZS4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKICAg IC0gcmVtb3ZlIHVubmVjZXNzYXJ5IGNvbW1lbnRzLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBC ZXVsaWNoKQogICAgLSByZW1vdmUgdW5uZWNlc3NhcnkgJ2Vsc2UnLgogICAgICAoc3VnZ2VzdGVk IGJ5IEphbiBCZXVsaWNoKQogICAgLSByZW1vdmUgJ25yX2ZlYXQnLgogICAgICAoc3VnZ2VzdGVk IGJ5IEphbiBCZXVsaWNoKQogICAgLSBtb2RpZnkgcGF0Y2ggdGl0bGUgdG8gaW5kaWNhdGUgJ0wz IENBVCcuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGNoZWNrIGdsb2Jh bCBmbGFnIHdpdGggYm9vdCBjcHUgb3BlcmF0aW9ucy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4g QmV1bGljaCkKICAgIC0gcmVtb3ZlICdjcHVfaW5pdF93b3JrJyBhbmQgbW92ZSBjb2RlcyBpbnRv ICdwc3JfY3B1X2luaXQnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBy ZW1vdmUgJ2NwdV9maW5pX3dvcmsnIGFuZCBtb3ZlIGNvZGVzIGludG8gJ3Bzcl9jcHVfZmluaScu CiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGFzc2lnbiB2YWx1ZSBmb3Ig J2Nvc19udW0nLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBjaGFuZ2Ug YWJvdXQgJ3VpbnQ2NF90JyB0byAndWludDMyX3QnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBC ZXVsaWNoKQp2ODoKICAgIC0gZml4IGZvcm1hdCBpc3N1ZS4KICAgICAgKHN1Z2dlc3RlZCBieSBL b25yYWQgUnplc3p1dGVrIFdpbGspCiAgICAtIGFkZCBjb21tZW50cyB0byBleHBsYWluIHdoeSB3 ZSBjYXJlIGFib3V0IGNwdW1hc2tfZW1wdHkgd2hlbiB0aGUgbGFzdAogICAgICBjcHUgb24gc29j a2V0IGlzIG9mZmxpbmUuCiAgICAgIChzdWdnZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6dXRlayBXaWxr KQp2NzoKICAgIC0gc29ydCBpbmNsdXNpb24gZmlsZXMgcG9zaXRpb24uCiAgICAgIChzdWdnZXN0 ZWQgYnkgV2VpIExpdSkKICAgIC0gaW5pdGlhbGl6ZSBzdHJ1Y3R1cmUgb2JqZWN0cyBmb3IgYXZv aWRpbmcgc3VycHJpc2UuCiAgICAgIChzdWdnZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6dXRlayBXaWxr KQogICAgLSBmaXggdHlwby4KICAgICAgKHN1Z2dlc3RlZCBieSBLb25yYWQgUnplc3p1dGVrIFdp bGspCiAgICAtIGZpeCBhIGxvZ2ljYWwgbWlzdGFrZSB3aGVuIGhhbmRsaW5nIHRoZSBsYXN0IGNw dSBvZmZsaW5lIGV2ZW50LgogICAgICAoc3VnZ2VzdGVkIGJ5IEtvbnJhZCBSemVzenV0ZWsgV2ls aykKdjY6CiAgICAtIG1ha2UgY29tbWl0IG1lc3NhZ2UgYmUgY2xlYXJlci4KICAgICAgKHN1Z2dl c3RlZCBieSBLb25yYWQgUnplc3p1dGVrIFdpbGspCiAgICAtIGZpeCB3b3JkaW5ncy4KICAgICAg KHN1Z2dlc3RlZCBieSBLb25yYWQgUnplc3p1dGVrIFdpbGspCiAgICAtIGFkZCBjb21tZW50cyB0 byBleHBsYWluIHJlbGF0aW9uc2hpcCBiZXR3ZWVuICdmZWF0X21hc2snIGFuZAogICAgICAnZW51 bSBwc3JfZmVhdF90eXBlJy4KICAgICAgKHN1Z2dlc3RlZCBieSBLb25yYWQgUnplc3p1dGVrIFdp bGspCiAgICAtIHVzZSAnc3RydWN0IGNwdWlkX2xlYWYnIGludHJvZHVjZWQgaW4gQW5kcmV3J3Mg cGF0Y2guCiAgICAgIChzdWdnZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6dXRlayBXaWxrKQogICAgLSBh ZGQgY29tbWVudHMgYWJvdXQgY3B1X2FkZF9yZW1vdmVfbG9jay4KICAgICAgKHN1Z2dlc3RlZCBi eSBLb25yYWQgUnplc3p1dGVrIFdpbGspCiAgICAtIGNoYW5nZSAnY2xlYXJfYml0JyB0byAnX19j bGVhcl9iaXQnLgogICAgICAoc3VnZ2VzdGVkIGJ5IEtvbnJhZCBSemVzenV0ZWsgV2lsaykKICAg IC0gYWRkICdBU1NFUlQnIGNoZWNrIHdoZW4gc2V0dGluZyAnZmVhdF9tYXNrJy4KICAgICAgKHN1 Z2dlc3RlZCBieSBLb25yYWQgUnplc3p1dGVrIFdpbGspCiAgICAtIGFkanVzdCAncHJpbnRrJyBw b3NpdGlvbiB0byBhdm9pZCBvZGQgc3BhY2luZy4KICAgICAgKHN1Z2dlc3RlZCBieSBLb25yYWQg Unplc3p1dGVrIFdpbGspCiAgICAtIGFkZCBjb21tZW50IHRvIGV4cGxhaW4gdXNhZ2Ugb2YgJ2Zl YXRfbDNfY2F0Jy4KICAgICAgKHN1Z2dlc3RlZCBieSBLb25yYWQgUnplc3p1dGVrIFdpbGspCiAg ICAtIGZpeCB3b3JkaW5nLgogICAgICAoc3VnZ2VzdGVkIGJ5IEtvbnJhZCBSemVzenV0ZWsgV2ls aykKICAgIC0gbW92ZSAnY3B1aWRfY291bnRfbGVhZicgaGVscGVyIGZ1bmN0aW9uIHRvICdhc20t eDg2L3Byb2Nlc3Nvci5oJy4KICAgICAgSXQgY2Fubm90IGJlIG1vdmVkIHRvICdjcHVpZC5oJyB3 aGljaCBjYXVzZXMgY29tcGlsYXRpb24gZXJyb3IgYmVjYXVzZQogICAgICBvZiBoZWFkZXIgZmls ZSBsb29wIHJlZmVyZW5jZS4KICAgICAgKHN1Z2dlc3RlZCBieSBBbmRyZXcgQ29vcGVyKQp2NToK ICAgIC0gcmVtb3ZlIHNlY3Rpb24gbnVtYmVyLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVs aWNoKQogICAgLSByZW1vdmUgZG91YmxlIGJsYW5rLgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBC ZXVsaWNoKQogICAgLSBhZGQgY29tbWVudCB0byBleHBsYWluIHRoZSByZWFzb24gdG8gZGVmaW5l ICdmZWF0X2wzX2NhdCcuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHVz ZSAnbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlJy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1 bGljaCkKICAgIC0gcmVtb3ZlIGNvZGVzIHRvIGZyZWUgJ2ZlYXRfbDNfY2F0JyBpbiAnZnJlZV9m ZWF0dXJlJyB0byBhdm9pZCB0aGUgbmVlZAogICAgICBmb3IgYW4gYWxsb2NhdGlvbiB0aGUgbmV4 dCB0aW1lIGEgQ1BVIGNvbWVzIG9ubGluZS4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGlj aCkKICAgIC0gZGVmaW5lICdzdHJ1Y3QgY3B1aWRfbGVhZl9yZWdzJyB0byBlbmNhcHN1bGF0ZSBl YXh+ZWR4LgogICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBwcmludCBmZWF0 dXJlIGluZm8gb24gYSBzb2NrZXQgb25seSB3aGVuICdvcHRfY3B1X2luZm8nIGlzIHRydWUuCiAg ICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIGRlY2xhcmUgZ2xvYmFsIHZhcmlh YmxlICdsM19jYXRfb3BzJyB0byAnc3RhdGljIGNvbnN0Jy4KICAgICAgKHN1Z2dlc3RlZCBieSBK YW4gQmV1bGljaCkKICAgIC0gdXNlICdjdXJyZW50X2NwdV9kYXRhJy4KICAgICAgKHN1Z2dlc3Rl ZCBieSBKYW4gQmV1bGljaCkKICAgIC0gcmVuYW1lICdmZWF0X3RtcCcgdG8gJ2ZlYXQnLgogICAg ICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKQogICAgLSBjbGVhciBQUUUgZmVhdHVyZSBiaXQg d2hlbiB0aGUgbWF4aW11bSBDUFVJRCBsZXZlbCBpcyB0b28gbG93LgogICAgICAoc3VnZ2VzdGVk IGJ5IEphbiBCZXVsaWNoKQogICAgLSBkaXJlY3RseSBjYWxsICdsM19jYXRfaW5pdF9mZWF0dXJl Jy4gTm8gbmVlZCB0byBtYWtlIGl0IGEgY2FsbGJhY2sKICAgICAgZnVuY3Rpb24uCiAgICAgIChz dWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJlbW92ZSBsb2NhbCB2YXJpYWJsZSAnaW5m bycuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIG1vdmUgJ0lOSVRfTElT VF9IRUFEJyBpbnRvICdjcHVfaW5pdF93b3JrJyB0byBiZSB0b2dldGhlciB3aXRoCiAgICAgIHNw aW5fbG9ja19pbml0KCkuCiAgICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpCiAgICAtIHJl bW92ZSAnY3B1X3ByZXBhcmVfd29yaycgYW5kIG1vdmUgaXRzIGNvbnRlbnQgaW50byAncHNyX2Nw dV9wcmVwYXJlJy4KICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKdjQ6CiAgICAtIGNy ZWF0ZSB0aGlzIHBhdGNoIGJlY2F1c2Ugb2YgcmVtb3ZpbmcgYWxsIG9sZCBDQVQvQ0RQIGNvZGVz IHRvIG1ha2UKICAgICAgaW1wbGVtZW50YXRpb24gYmUgbW9yZSBlYXNpbHkgdW5kZXJzdG9vZC4K ICAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkKLS0tCi0tLQogeGVuL2FyY2gveDg2L3Bz ci5jIHwgMjc4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0tCiAxIGZpbGUgY2hhbmdlZCwgMjcyIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L3Bzci5jIGIveGVuL2FyY2gveDg2L3Bzci5jCmlu ZGV4IDk2YTg1ODkuLjI1MTc0NmEgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9wc3IuYworKysg Yi94ZW4vYXJjaC94ODYvcHNyLmMKQEAgLTEzLDE2ICsxMywxMTIgQEAKICAqIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IKICAqIG1vcmUgZGV0YWlscy4KICAqLwotI2luY2x1ZGUgPHhlbi9pbml0Lmg+CiAjaW5j bHVkZSA8eGVuL2NwdS5oPgogI2luY2x1ZGUgPHhlbi9lcnIuaD4KKyNpbmNsdWRlIDx4ZW4vaW5p dC5oPgogI2luY2x1ZGUgPHhlbi9zY2hlZC5oPgogI2luY2x1ZGUgPGFzbS9wc3IuaD4KIAorLyoK KyAqIFRlcm1pbm9sb2d5OgorICogLSBDQVQgICAgICAgICBDYWNoZSBBbGxvY2F0aW9uIFRlY2hu b2xvZ3kKKyAqIC0gQ0JNICAgICAgICAgQ2FwYWNpdHkgQml0TWFza3MKKyAqIC0gQ0RQICAgICAg ICAgQ29kZSBhbmQgRGF0YSBQcmlvcml0aXphdGlvbgorICogLSBDTVQgICAgICAgICBDYWNoZSBN b25pdG9yaW5nIFRlY2hub2xvZ3kKKyAqIC0gQ09TL0NMT1MgICAgQ2xhc3Mgb2YgU2VydmljZS4g QWxzbyBtZWFuIENPUyByZWdpc3RlcnMuCisgKiAtIENPU19NQVggICAgIE1heCBudW1iZXIgb2Yg Q09TIGZvciB0aGUgZmVhdHVyZSAobWludXMgMSkKKyAqIC0gTVNScyAgICAgICAgTWFjaGluZSBT cGVjaWZpYyBSZWdpc3RlcnMKKyAqIC0gUFNSICAgICAgICAgSW50ZWwgUGxhdGZvcm0gU2hhcmVk IFJlc291cmNlCisgKi8KKwogI2RlZmluZSBQU1JfQ01UICAgICAgICAoMTw8MCkKICNkZWZpbmUg UFNSX0NBVCAgICAgICAgKDE8PDEpCiAjZGVmaW5lIFBTUl9DRFAgICAgICAgICgxPDwyKQogCisj ZGVmaW5lIENBVF9DQk1fTEVOX01BU0sgMHgxZgorI2RlZmluZSBDQVRfQ09TX01BWF9NQVNLIDB4 ZmZmZgorCisvKgorICogUGVyIFNETSBjaGFwdGVyICdDYWNoZSBBbGxvY2F0aW9uIFRlY2hub2xv Z3k6IENhY2hlIE1hc2sgQ29uZmlndXJhdGlvbicsCisgKiB0aGUgTVNScyByYW5naW5nIGZyb20g MEM5MEggdGhyb3VnaCAwRDBGSCAoaW5jbHVzaXZlKSwgZW5hYmxlcyBzdXBwb3J0IGZvcgorICog dXAgdG8gMTI4IEwzIENBVCBDbGFzc2VzIG9mIFNlcnZpY2UuIFRoZSBDT1NfSUQ9WzAsMTI3XS4K KyAqCisgKiBUaGUgTVNScyByYW5naW5nIGZyb20gMEQxMEggdGhyb3VnaCAwRDRGSCAoaW5jbHVz aXZlKSwgZW5hYmxlcyBzdXBwb3J0IGZvcgorICogdXAgdG8gNjQgTDIgQ0FUIENPUy4gVGhlIENP U19JRD1bMCw2M10uCisgKgorICogU28sIHRoZSBtYXhpbXVtIENPUyByZWdpc3RlciBjb3VudCBv ZiBvbmUgZmVhdHVyZSBpcyAxMjguCisgKi8KKyNkZWZpbmUgTUFYX0NPU19SRUdfQ05UICAxMjgK KworLyoKKyAqIEV2ZXJ5IFBTUiBmZWF0dXJlIHVzZXMgc29tZSBDT1MgcmVnaXN0ZXJzIGZvciBl YWNoIENPUyBJRCwgZS5nLiBDRFAgdXNlcyAyCisgKiBDT1MgcmVnaXN0ZXJzIChEQVRBIGFuZCBD T0RFKSBmb3Igb25lIENPUyBJRCwgYnV0IENBVCB1c2VzIDEgQ09TIHJlZ2lzdGVyLgorICogV2Ug dXNlIGJlbG93IG1hY3JvIGFzIHRoZSBtYXggbnVtYmVyIG9mIENPUyByZWdpc3RlcnMgdXNlZCBi eSBhbGwgZmVhdHVyZXMuCisgKiBTbyBmYXIsIGl0IGlzIDIgd2hpY2ggbWVhbnMgQ0RQJ3MgQ09T IHJlZ2lzdGVycyBudW1iZXIuCisgKi8KKyNkZWZpbmUgUFNSX01BWF9DT1NfTlVNIDIKKworZW51 bSBwc3JfZmVhdF90eXBlIHsKKyAgICBQU1JfU09DS0VUX0wzX0NBVCwKKyAgICBQU1JfU09DS0VU X0ZFQVRfTlVNLAorfTsKKworLyoKKyAqIFRoaXMgc3RydWN0dXJlIHJlcHJlc2VudHMgb25lIGZl YXR1cmUuCisgKiBjb3NfbWF4ICAgICAtIFRoZSBtYXggQ09TIHJlZ2lzdGVycyBudW1iZXIgZ290 IHRocm91Z2ggQ1BVSUQuCisgKiBjYm1fbGVuICAgICAtIFRoZSBsZW5ndGggb2YgQ0JNIGdvdCB0 aHJvdWdoIENQVUlELgorICogY29zX3JlZ192YWwgLSBBcnJheSB0byBzdG9yZSB0aGUgdmFsdWVz IG9mIENPUyByZWdpc3RlcnMuIE9uZSBlbnRyeSBzdG9yZXMKKyAqICAgICAgICAgICAgICAgdGhl IHZhbHVlIG9mIG9uZSBDT1MgcmVnaXN0ZXIuCisgKiAgICAgICAgICAgICAgIEZvciBMMyBDQVQg YW5kIEwyIENBVCwgb25lIGVudHJ5IGNvcnJlc3BvbmRzIHRvIG9uZSBDT1NfSUQuCisgKiAgICAg ICAgICAgICAgIEZvciBDRFAsIHR3byBlbnRyaWVzIGNvcnJlc3BvbmQgdG8gb25lIENPU19JRC4g RS5nLgorICogICAgICAgICAgICAgICBDT1NfSUQ9MCBjb3JyZXNwb25kcyB0byBjb3NfcmVnX3Zh bFswXSAoRGF0YSkgYW5kCisgKiAgICAgICAgICAgICAgIGNvc19yZWdfdmFsWzFdIChDb2RlKS4K KyAqLworc3RydWN0IGZlYXRfbm9kZSB7CisgICAgLyogY29zX21heCBhbmQgY2JtX2xlbiBhcmUg Y29tbW9uIHZhbHVlcyBmb3IgYWxsIGZlYXR1cmVzIHNvIGZhci4gKi8KKyAgICB1bnNpZ25lZCBp bnQgY29zX21heDsKKyAgICB1bnNpZ25lZCBpbnQgY2JtX2xlbjsKKyAgICB1aW50MzJfdCBjb3Nf cmVnX3ZhbFtNQVhfQ09TX1JFR19DTlRdOworfTsKKworLyoKKyAqIFRoaXMgc3RydWN0dXJlIGRl ZmluZXMgZmVhdHVyZSBzcGVjaWZpYyB2YWx1ZXMsIGUuZy4gY29zX251bS4KKyAqCisgKiBBcnJh eSAnZmVhdF9wcm9wcycgaXMgZGVmaW5lZCB0byBzYXZlIGV2ZXJ5IGZlYXR1cmUncyBwcm9wZXJ0 aWVzLiBXZSB1c2UKKyAqICdlbnVtIHBzcl9mZWF0X3R5cGUnIGFzIGluZGV4LgorICovCitzdGF0 aWMgY29uc3Qgc3RydWN0IGZlYXRfcHJvcHMgeworICAgIC8qCisgICAgICogY29zX251bSAtIENP UyByZWdpc3RlcnMgbnVtYmVyIHRoYXQgZmVhdHVyZSB1c2VzIGZvciBvbmUgQ09TIElELgorICAg ICAqICAgICAgICAgICBJdCBpcyBkZWZpbmVkIGluIFNETS4KKyAgICAgKi8KKyAgICB1bnNpZ25l ZCBpbnQgY29zX251bTsKKworICAgIC8qCisgICAgICogQW4gYXJyYXkgdG8gc2F2ZSBhbGwgJ2Vu dW0gY2JtX3R5cGUnIHZhbHVlcyBvZiB0aGUgZmVhdHVyZS4gSXQgaXMKKyAgICAgKiB1c2VkIHdp dGggY29zX251bSB0b2dldGhlciB0byBnZXQvd3JpdGUgYSBmZWF0dXJlJ3MgQ09TIHJlZ2lzdGVy cworICAgICAqIHZhbHVlcyBvbmUgYnkgb25lLgorICAgICAqLworICAgIGVudW0gY2JtX3R5cGUg dHlwZVtQU1JfTUFYX0NPU19OVU1dOworfSAqZmVhdF9wcm9wc1tQU1JfU09DS0VUX0ZFQVRfTlVN XTsKKworLyoKKyAqIFBTUiBmZWF0dXJlcyBhcmUgbWFuYWdlZCBwZXIgc29ja2V0LiBCZWxvdyBz dHJ1Y3R1cmUgZGVmaW5lcyB0aGUgbWVtYmVycworICogdXNlZCB0byBtYW5hZ2UgdGhlc2UgZmVh dHVyZXMuCisgKiBmZWF0X2luaXQgLSBJbmRpY2F0ZSBpZiBmZWF0dXJlcyBvbiBhIHNvY2tldCBo YXZlIGJlZW4gaW5pdGlhbGl6ZWQuCisgKiBmZWF0dXJlcyAgLSBBIGZlYXR1cmUgbm9kZSBhcnJh eSB1c2VkIHRvIG1hbmFnZSBhbGwgZmVhdHVyZXMgZW5hYmxlZC4KKyAqIHJlZl9sb2NrICAtIEEg bG9jayB0byBwcm90ZWN0IGNvc19yZWYuCisgKiBjb3NfcmVmICAgLSBBIHJlZmVyZW5jZSBjb3Vu dCBhcnJheSB0byByZWNvcmQgaG93IG1hbnkgZG9tYWlucyBhcmUgdXNpbmcgdGhlCisgKiAgICAg ICAgICAgICBDT1MgSUQuIEV2ZXJ5IGVudHJ5IG9mIGNvc19yZWYgY29ycmVzcG9uZHMgdG8gb25l IENPUyBJRC4KKyAqLworc3RydWN0IHBzcl9zb2NrZXRfaW5mbyB7CisgICAgYm9vbCBmZWF0X2lu aXQ7CisgICAgLyogRmVhdHVyZSBhcnJheSdzIGluZGV4IGlzICdlbnVtIHBzcl9mZWF0X3R5cGUn IHdoaWNoIGlzIHNhbWUgYXMgJ3Byb3BzJyAqLworICAgIHN0cnVjdCBmZWF0X25vZGUgKmZlYXR1 cmVzW1BTUl9TT0NLRVRfRkVBVF9OVU1dOworICAgIHNwaW5sb2NrX3QgcmVmX2xvY2s7CisgICAg dW5zaWduZWQgaW50IGNvc19yZWZbTUFYX0NPU19SRUdfQ05UXTsKK307CisKIHN0cnVjdCBwc3Jf YXNzb2MgewogICAgIHVpbnQ2NF90IHZhbDsKICAgICB1aW50NjRfdCBjb3NfbWFzazsKQEAgLTMw LDExICsxMjYsOTcgQEAgc3RydWN0IHBzcl9hc3NvYyB7CiAKIHN0cnVjdCBwc3JfY210ICpfX3Jl YWRfbW9zdGx5IHBzcl9jbXQ7CiAKK3N0YXRpYyBzdHJ1Y3QgcHNyX3NvY2tldF9pbmZvICpfX3Jl YWRfbW9zdGx5IHNvY2tldF9pbmZvOworCiBzdGF0aWMgdW5zaWduZWQgaW50IG9wdF9wc3I7CiBz dGF0aWMgdW5zaWduZWQgaW50IF9faW5pdGRhdGEgb3B0X3JtaWRfbWF4ID0gMjU1Oworc3RhdGlj IHVuc2lnbmVkIGludCBfX3JlYWRfbW9zdGx5IG9wdF9jb3NfbWF4ID0gTUFYX0NPU19SRUdfQ05U Owogc3RhdGljIHVpbnQ2NF90IHJtaWRfbWFzazsKIHN0YXRpYyBERUZJTkVfUEVSX0NQVShzdHJ1 Y3QgcHNyX2Fzc29jLCBwc3JfYXNzb2MpOwogCisvKgorICogRGVjbGFyZSBnbG9iYWwgZmVhdHVy ZSBub2RlIGZvciBldmVyeSBmZWF0dXJlIHRvIGZhY2lsaXRhdGUgdGhlIGZlYXR1cmUKKyAqIGFy cmF5IGNyZWF0aW9uLiBJdCBpcyB1c2VkIHRvIHRyYW5zaWVudGx5IHN0b3JlIGEgc3BhcmUgbm9k ZS4KKyAqLworc3RhdGljIHN0cnVjdCBmZWF0X25vZGUgKmZlYXRfbDNfY2F0OworCisvKiBDb21t b24gZnVuY3Rpb25zICovCisjZGVmaW5lIGNhdF9kZWZhdWx0X3ZhbChsZW4pICgweGZmZmZmZmZm ID4+ICgzMiAtIChsZW4pKSkKKworLyoKKyAqIFVzZSB0aGlzIGZ1bmN0aW9uIHRvIGNoZWNrIGlm IGFueSBhbGxvY2F0aW9uIGZlYXR1cmUgaGFzIGJlZW4gZW5hYmxlZAorICogaW4gY21kbGluZS4K KyAqLworc3RhdGljIGJvb2wgcHNyX2FsbG9jX2ZlYXRfZW5hYmxlZCh2b2lkKQoreworICAgIHJl dHVybiAhIXNvY2tldF9pbmZvOworfQorCitzdGF0aWMgdm9pZCBmcmVlX3NvY2tldF9yZXNvdXJj ZXModW5zaWduZWQgaW50IHNvY2tldCkKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICBzdHJ1 Y3QgcHNyX3NvY2tldF9pbmZvICppbmZvID0gc29ja2V0X2luZm8gKyBzb2NrZXQ7CisKKyAgICBp ZiAoICFpbmZvICkKKyAgICAgICAgcmV0dXJuOworCisgICAgLyoKKyAgICAgKiBGcmVlIHJlc291 cmNlcyBvZiBmZWF0dXJlcy4gVGhlIGdsb2JhbCBmZWF0dXJlIG9iamVjdCwgZS5nLiBmZWF0X2wz X2NhdCwKKyAgICAgKiBtYXkgbm90IGJlIGZyZWVkIGhlcmUgaWYgaXQgaXMgbm90IGFkZGVkIGlu dG8gYXJyYXkuIEl0IGlzIHNpbXBseSBiZWluZworICAgICAqIGtlcHQgdW50aWwgdGhlIG5leHQg Q1BVIG9ubGluZSBhdHRlbXB0LgorICAgICAqLworICAgIGZvciAoIGkgPSAwOyBpIDwgQVJSQVlf U0laRShpbmZvLT5mZWF0dXJlcyk7IGkrKyApCisgICAgeworICAgICAgICB4ZnJlZShpbmZvLT5m ZWF0dXJlc1tpXSk7CisgICAgICAgIGluZm8tPmZlYXR1cmVzW2ldID0gTlVMTDsKKyAgICB9CisK KyAgICBpbmZvLT5mZWF0X2luaXQgPSBmYWxzZTsKK30KKworLyogQ0FUIGNvbW1vbiBmdW5jdGlv bnMgaW1wbGVtZW50YXRpb24uICovCitzdGF0aWMgdm9pZCBjYXRfaW5pdF9mZWF0dXJlKGNvbnN0 IHN0cnVjdCBjcHVpZF9sZWFmICpyZWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz dHJ1Y3QgZmVhdF9ub2RlICpmZWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgcHNyX3NvY2tldF9pbmZvICppbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl bnVtIHBzcl9mZWF0X3R5cGUgdHlwZSkKK3sKKyAgICAvKiBObyB2YWxpZCB2YWx1ZSBzbyBkbyBu b3QgZW5hYmxlIGZlYXR1cmUuICovCisgICAgaWYgKCAhcmVncy0+YSB8fCAhcmVncy0+ZCApCisg ICAgICAgIHJldHVybjsKKworICAgIGZlYXQtPmNibV9sZW4gPSAocmVncy0+YSAmIENBVF9DQk1f TEVOX01BU0spICsgMTsKKyAgICBmZWF0LT5jb3NfbWF4ID0gbWluKG9wdF9jb3NfbWF4LCByZWdz LT5kICYgQ0FUX0NPU19NQVhfTUFTSyk7CisKKyAgICBzd2l0Y2ggKCB0eXBlICkKKyAgICB7Cisg ICAgY2FzZSBQU1JfU09DS0VUX0wzX0NBVDoKKyAgICAgICAgLyogY29zPTAgaXMgcmVzZXJ2ZWQg YXMgZGVmYXVsdCBjYm0oYWxsIGJpdHMgd2l0aGluIGNibV9sZW4gYXJlIDEpLiAqLworICAgICAg ICBmZWF0LT5jb3NfcmVnX3ZhbFswXSA9IGNhdF9kZWZhdWx0X3ZhbChmZWF0LT5jYm1fbGVuKTsK KworICAgICAgICB3cm1zcmwoTVNSX0lBMzJfUFNSX0wzX01BU0soMCksIGNhdF9kZWZhdWx0X3Zh bChmZWF0LT5jYm1fbGVuKSk7CisKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAg ICAgICByZXR1cm47CisgICAgfQorCisgICAgLyogQWRkIHRoaXMgZmVhdHVyZSBpbnRvIGFycmF5 LiAqLworICAgIGluZm8tPmZlYXR1cmVzW3R5cGVdID0gZmVhdDsKKworICAgIGlmICggIW9wdF9j cHVfaW5mbyApCisgICAgICAgIHJldHVybjsKKworICAgIHByaW50ayhYRU5MT0dfSU5GTyAiQ0FU OiBlbmFibGVkIG9uIHNvY2tldCAldSwgY29zX21heDoldSwgY2JtX2xlbjoldVxuIiwKKyAgICAg ICAgICAgY3B1X3RvX3NvY2tldChzbXBfcHJvY2Vzc29yX2lkKCkpLCBmZWF0LT5jb3NfbWF4LCBm ZWF0LT5jYm1fbGVuKTsKK30KKworLyogTDMgQ0FUIHByb3BzICovCitzdGF0aWMgY29uc3Qgc3Ry dWN0IGZlYXRfcHJvcHMgbDNfY2F0X3Byb3BzID0geworICAgIC5jb3NfbnVtID0gMSwKKyAgICAu dHlwZVswXSA9IFBTUl9DQk1fVFlQRV9MMywKK307CisKIHN0YXRpYyB2b2lkIF9faW5pdCBwYXJz ZV9wc3JfYm9vbChjaGFyICpzLCBjaGFyICp2YWx1ZSwgY2hhciAqZmVhdHVyZSwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbWFzaykKIHsKQEAgLTc0LDYg KzI1Niw5IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBwYXJzZV9wc3JfcGFyYW0oY2hhciAqcykKICAg ICAgICAgaWYgKCB2YWxfc3RyICYmICFzdHJjbXAocywgInJtaWRfbWF4IikgKQogICAgICAgICAg ICAgb3B0X3JtaWRfbWF4ID0gc2ltcGxlX3N0cnRvdWwodmFsX3N0ciwgTlVMTCwgMCk7CiAKKyAg ICAgICAgaWYgKCB2YWxfc3RyICYmICFzdHJjbXAocywgImNvc19tYXgiKSApCisgICAgICAgICAg ICBvcHRfY29zX21heCA9IHNpbXBsZV9zdHJ0b3VsKHZhbF9zdHIsIE5VTEwsIDApOworCiAgICAg ICAgIHMgPSBzcyArIDE7CiAgICAgfSB3aGlsZSAoIHNzICk7CiB9CkBAIC0yMjksMTkgKzQxNCw5 NiBAQCB2b2lkIHBzcl9kb21haW5fZnJlZShzdHJ1Y3QgZG9tYWluICpkKQogICAgIHBzcl9mcmVl X3JtaWQoZCk7CiB9CiAKLXN0YXRpYyBpbnQgcHNyX2NwdV9wcmVwYXJlKHVuc2lnbmVkIGludCBj cHUpCitzdGF0aWMgdm9pZCBfX2luaXQgaW5pdF9wc3Iodm9pZCkKIHsKKyAgICBpZiAoIG9wdF9j b3NfbWF4IDwgMSApCisgICAgeworICAgICAgICBwcmludGsoWEVOTE9HX0lORk8gIkNBVDogZGlz YWJsZWQsIGNvc19tYXggaXMgdG9vIHNtYWxsXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K KworICAgIHNvY2tldF9pbmZvID0geHphbGxvY19hcnJheShzdHJ1Y3QgcHNyX3NvY2tldF9pbmZv LCBucl9zb2NrZXRzKTsKKworICAgIGlmICggIXNvY2tldF9pbmZvICkKKyAgICB7CisgICAgICAg IHByaW50ayhYRU5MT0dfV0FSTklORyAiRmFpbGVkIHRvIGFsbG9jIHNvY2tldF9pbmZvIVxuIik7 CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIF9faW5pdCBwc3JfZnJl ZSh2b2lkKQoreworICAgIHhmcmVlKHNvY2tldF9pbmZvKTsKKyAgICBzb2NrZXRfaW5mbyA9IE5V TEw7Cit9CisKK3N0YXRpYyBpbnQgcHNyX2NwdV9wcmVwYXJlKHZvaWQpCit7CisgICAgaWYgKCAh cHNyX2FsbG9jX2ZlYXRfZW5hYmxlZCgpICkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvKiBN YWxsb2MgbWVtb3J5IGZvciB0aGUgZ2xvYmFsIGZlYXR1cmUgbm9kZSBoZXJlLiAqLworICAgIGlm ICggZmVhdF9sM19jYXQgPT0gTlVMTCAmJgorICAgICAgICAgKGZlYXRfbDNfY2F0ID0geHphbGxv YyhzdHJ1Y3QgZmVhdF9ub2RlKSkgPT0gTlVMTCApCisgICAgICAgIHJldHVybiAtRU5PTUVNOwor CiAgICAgcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyB2b2lkIHBzcl9jcHVfaW5pdCh2b2lkKQogewor ICAgIHN0cnVjdCBwc3Jfc29ja2V0X2luZm8gKmluZm87CisgICAgdW5zaWduZWQgaW50IHNvY2tl dCwgY3B1ID0gc21wX3Byb2Nlc3Nvcl9pZCgpOworICAgIHN0cnVjdCBmZWF0X25vZGUgKmZlYXQ7 CisgICAgc3RydWN0IGNwdWlkX2xlYWYgcmVnczsKKworICAgIGlmICggIXBzcl9hbGxvY19mZWF0 X2VuYWJsZWQoKSB8fCAhYm9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX1BRRSkgKQorICAgICAgICBn b3RvIGFzc29jX2luaXQ7CisKKyAgICBpZiAoIGJvb3RfY3B1X2RhdGEuY3B1aWRfbGV2ZWwgPCBQ U1JfQ1BVSURfTEVWRUxfQ0FUICkKKyAgICB7CisgICAgICAgIHNldHVwX2NsZWFyX2NwdV9jYXAo WDg2X0ZFQVRVUkVfUFFFKTsKKyAgICAgICAgZ290byBhc3NvY19pbml0OworICAgIH0KKworICAg IHNvY2tldCA9IGNwdV90b19zb2NrZXQoY3B1KTsKKyAgICBpbmZvID0gc29ja2V0X2luZm8gKyBz b2NrZXQ7CisgICAgaWYgKCBpbmZvLT5mZWF0X2luaXQgKQorICAgICAgICBnb3RvIGFzc29jX2lu aXQ7CisKKyAgICBzcGluX2xvY2tfaW5pdCgmaW5mby0+cmVmX2xvY2spOworCisgICAgY3B1aWRf Y291bnRfbGVhZihQU1JfQ1BVSURfTEVWRUxfQ0FULCAwLCAmcmVncyk7CisgICAgaWYgKCByZWdz LmIgJiBQU1JfUkVTT1VSQ0VfVFlQRV9MMyApCisgICAgeworICAgICAgICBjcHVpZF9jb3VudF9s ZWFmKFBTUl9DUFVJRF9MRVZFTF9DQVQsIDEsICZyZWdzKTsKKworICAgICAgICBmZWF0ID0gZmVh dF9sM19jYXQ7CisgICAgICAgIGZlYXRfbDNfY2F0ID0gTlVMTDsKKyAgICAgICAgZmVhdF9wcm9w c1tQU1JfU09DS0VUX0wzX0NBVF0gPSAmbDNfY2F0X3Byb3BzOworCisgICAgICAgIGNhdF9pbml0 X2ZlYXR1cmUoJnJlZ3MsIGZlYXQsIGluZm8sIFBTUl9TT0NLRVRfTDNfQ0FUKTsKKworICAgICAg ICBpbmZvLT5mZWF0X2luaXQgPSB0cnVlOworICAgIH0KKworIGFzc29jX2luaXQ6CiAgICAgcHNy X2Fzc29jX2luaXQoKTsKIH0KIAogc3RhdGljIHZvaWQgcHNyX2NwdV9maW5pKHVuc2lnbmVkIGlu dCBjcHUpCiB7Ci0gICAgcmV0dXJuOworICAgIHVuc2lnbmVkIGludCBzb2NrZXQgPSBjcHVfdG9f c29ja2V0KGNwdSk7CisKKyAgICBpZiAoICFwc3JfYWxsb2NfZmVhdF9lbmFibGVkKCkgKQorICAg ICAgICByZXR1cm47CisKKyAgICAvKgorICAgICAqIFdlIG9ubHkgZnJlZSB3aGVuIHdlIGFyZSB0 aGUgbGFzdCBDUFUgaW4gdGhlIHNvY2tldC4gVGhlIHNvY2tldF9jcHVtYXNrCisgICAgICogaXMg Y2xlYXJlZCBwcmlvciB0byB0aGlzIG5vdGlmaWNhdGlvbiBjb2RlIGJ5IHJlbW92ZV9zaWJsaW5n aW5mbygpLgorICAgICAqLworICAgIGlmICggc29ja2V0X2NwdW1hc2tbc29ja2V0XSAmJiBjcHVt YXNrX2VtcHR5KHNvY2tldF9jcHVtYXNrW3NvY2tldF0pICkKKyAgICAgICAgZnJlZV9zb2NrZXRf cmVzb3VyY2VzKHNvY2tldCk7CiB9CiAKIHN0YXRpYyBpbnQgY3B1X2NhbGxiYWNrKApAQCAtMjUz LDcgKzUxNSw3IEBAIHN0YXRpYyBpbnQgY3B1X2NhbGxiYWNrKAogICAgIHN3aXRjaCAoIGFjdGlv biApCiAgICAgewogICAgIGNhc2UgQ1BVX1VQX1BSRVBBUkU6Ci0gICAgICAgIHJjID0gcHNyX2Nw dV9wcmVwYXJlKGNwdSk7CisgICAgICAgIHJjID0gcHNyX2NwdV9wcmVwYXJlKCk7CiAgICAgICAg IGJyZWFrOwogICAgIGNhc2UgQ1BVX1NUQVJUSU5HOgogICAgICAgICBwc3JfY3B1X2luaXQoKTsK QEAgLTI4MiwxMCArNTQ0LDE0IEBAIHN0YXRpYyBpbnQgX19pbml0IHBzcl9wcmVzbXBfaW5pdCh2 b2lkKQogICAgIGlmICggKG9wdF9wc3IgJiBQU1JfQ01UKSAmJiBvcHRfcm1pZF9tYXggKQogICAg ICAgICBpbml0X3Bzcl9jbXQob3B0X3JtaWRfbWF4KTsKIAotICAgIHBzcl9jcHVfcHJlcGFyZSgw KTsKKyAgICBpZiAoIG9wdF9wc3IgJiBQU1JfQ0FUICkKKyAgICAgICAgaW5pdF9wc3IoKTsKKwor ICAgIGlmICggcHNyX2NwdV9wcmVwYXJlKCkgKQorICAgICAgICBwc3JfZnJlZSgpOwogCiAgICAg cHNyX2NwdV9pbml0KCk7Ci0gICAgaWYgKCBwc3JfY210X2VuYWJsZWQoKSApCisgICAgaWYgKCBw c3JfY210X2VuYWJsZWQoKSB8fCBwc3JfYWxsb2NfZmVhdF9lbmFibGVkKCkgKQogICAgICAgICBy ZWdpc3Rlcl9jcHVfbm90aWZpZXIoJmNwdV9uZmIpOwogCiAgICAgcmV0dXJuIDA7Ci0tIAoxLjku MQoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1k ZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54 ZW4ub3JnL3hlbi1kZXZlbAo=